<?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>213916</bug_id>
          
          <creation_ts>2020-07-02 20:25:28 -0700</creation_ts>
          <short_desc>[WebDriver][WPE] Update imported selenium to a version that enables WPE WebDriver tests</short_desc>
          <delta_ts>2020-07-03 06:13:13 -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>WebDriver</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>213500</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Lauro Moura">lmoura</reporter>
          <assigned_to name="Lauro Moura">lmoura</assigned_to>
          <cc>bburg</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>cgarcia</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1668469</commentid>
    <comment_count>0</comment_count>
    <who name="Lauro Moura">lmoura</who>
    <bug_when>2020-07-02 20:25:28 -0700</bug_when>
    <thetext>The upstream Selenium pull request https://github.com/SeleniumHQ/selenium/pull/8471 added support for running WPE tests with Selenium (to be actually enabled in bug213500).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668472</commentid>
    <comment_count>1</comment_count>
      <attachid>403437</attachid>
    <who name="Lauro Moura">lmoura</who>
    <bug_when>2020-07-02 20:45:46 -0700</bug_when>
    <thetext>Created attachment 403437
Patch

Patch from importing the selenium repo right after the pull request was merged. Also some updates to the importer.json file with more paths to be skipped.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668545</commentid>
    <comment_count>2</comment_count>
      <attachid>403437</attachid>
    <who name="Lauro Moura">lmoura</who>
    <bug_when>2020-07-03 06:08:31 -0700</bug_when>
    <thetext>Comment on attachment 403437
Patch

Like the other import, the style error is regarding some png vs svn configuration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668547</commentid>
    <comment_count>3</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-07-03 06:12:53 -0700</bug_when>
    <thetext>Committed r263893: &lt;https://trac.webkit.org/changeset/263893&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 403437.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668548</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-07-03 06:13:13 -0700</bug_when>
    <thetext>&lt;rdar://problem/65074631&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403437</attachid>
            <date>2020-07-02 20:45:46 -0700</date>
            <delta_ts>2020-07-03 06:12:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213916-20200703004534.patch</filename>
            <type>text/plain</type>
            <size>1152428</size>
            <attacher name="Lauro Moura">lmoura</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzODQzCmRpZmYgLS1naXQgYS9XZWJEcml2ZXJUZXN0cy9D
aGFuZ2VMb2cgYi9XZWJEcml2ZXJUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOTdmNTVmNTE0NzgwMTM4
ZjJhZjRjMzJiYTQ3NmE2NjBhZTU2ZTcyYy4uOTdhM2Y0YjVkMDM1YjAzZDhiODkzYTAwOTQ3YWM0
Njg2Nzk1YjAxMCAxMDA2NDQKLS0tIGEvV2ViRHJpdmVyVGVzdHMvQ2hhbmdlTG9nCisrKyBiL1dl
YkRyaXZlclRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMiBAQAorMjAyMC0wNy0wMiAgTGF1
cm8gTW91cmEgIDxsbW91cmFAaWdhbGlhLmNvbT4KKworICAgICAgICBbV2ViRHJpdmVyXVtXUEVd
IFVwZGF0ZSBpbXBvcnRlZCBzZWxlbml1bSB0byBhIHZlcnNpb24gdGhhdCBlbmFibGVzIFdQRSBX
ZWJEcml2ZXIgdGVzdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxMzkxNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFsc28gdXBkYXRlZCB0aGUgaW1wb3J0ZXIuanNvbiBmaWxlIHdpdGggbW9yZSBwYXRo
cyB0byBiZSBza2lwcGVkLgorCisgICAgICAgICogaW1wb3J0ZWQvc2VsZW5pdW0vY29tbW9uLy5j
bGFzc3BhdGg6IFJlbW92ZWQuCisgICAgICAgICogaW1wb3J0ZWQvc2VsZW5pdW0vY29tbW9uL3Ny
Yy93ZWIvY3NzL3VpLWxpZ2h0bmVzcy9pbWFnZXMvdWktYmdfZGlhZ29uYWxzLXRoaWNrXzE4X2I4
MTkwMF80MHg0MC5wbmc6CisgICAgICAgICogaW1wb3J0ZWQvc2VsZW5pdW0vY29tbW9uL3NyYy93
ZWIvY3NzL3VpLWxpZ2h0bmVzcy9pbWFnZXMvdWktYmdfZGlhZ29uYWxzLXRoaWNrXzIwXzY2NjY2
Nl80MHg0MC5wbmc6CisgICAgICAgICogaW1wb3J0ZWQvc2VsZW5pdW0vY29tbW9uL3NyYy93ZWIv
Y3NzL3VpLWxpZ2h0bmVzcy9pbWFnZXMvdWktYmdfZ2xhc3NfMTAwX2Y2ZjZmNl8xeDQwMC5wbmc6
CisgICAgICAgICogaW1wb3J0ZWQvc2VsZW5pdW0vY29tbW9uL3NyYy93ZWIvY3NzL3VpLWxpZ2h0
bmVzcy9pbWFnZXMvdWktYmdfZ2xhc3NfMTAwX2ZkZjVjZV8xeDQwMC5wbmc6CisgICAgICAgICog
aW1wb3J0ZWQvc2VsZW5pdW0vY29tbW9uL3NyYy93ZWIvY3NzL3VpLWxpZ2h0bmVzcy9pbWFnZXMv
dWktYmdfZ2xhc3NfNjVfZmZmZmZmXzF4NDAwLnBuZzoKKyAgICAgICAgKiBpbXBvcnRlZC9zZWxl
bml1bS9jb21tb24vc3JjL3dlYi9jc3MvdWktbGlnaHRuZXNzL2ltYWdlcy91aS1iZ19nbG9zcy13
YXZlXzM1X2Y2YTgyOF81MDB4MTAwLnBuZzoKKyAgICAgICAgKiBpbXBvcnRlZC9zZWxlbml1bS9j
b21tb24vc3JjL3dlYi9jc3MvdWktbGlnaHRuZXNzL2ltYWdlcy91aS1iZ19oaWdobGlnaHQtc29m
dF8xMDBfZWVlZWVlXzF4MTAwLnBuZzoKKyAgICAgICAgKiBpbXBvcnRlZC9zZWxlbml1bS9jb21t
b24vc3JjL3dlYi9jc3MvdWktbGlnaHRuZXNzL2ltYWdlcy91aS1iZ19oaWdobGlnaHQtc29mdF83
NV9mZmU0NWNfMXgxMDAucG5nOgorICAgICAgICAqIGltcG9ydGVkL3NlbGVuaXVtL2NvbW1vbi9z
cmMvd2ViL2Nzcy91aS1saWdodG5lc3MvaW1hZ2VzL3VpLWljb25zXzIyMjIyMl8yNTZ4MjQwLnBu
ZzoKKyAgICAgICAgKiBpbXBvcnRlZC9zZWxlbml1bS9jb21tb24vc3JjL3dlYi9jc3MvdWktbGln
aHRuZXNzL2ltYWdlcy91aS1pY29uc18yMjhlZjFfMjU2eDI0MC5wbmc6CisgICAgICAgICogaW1w
b3J0ZWQvc2VsZW5pdW0vY29tbW9uL3NyYy93ZWIvY3NzL3VpLWxpZ2h0bmVzcy9pbWFnZXMvdWkt
aWNvbnNfZWY4YzA4XzI1NngyNDAucG5nOgorICAgICAgICAqIGltcG9ydGVkL3NlbGVuaXVtL2Nv
bW1vbi9zcmMvd2ViL2Nzcy91aS1saWdodG5lc3MvaW1hZ2VzL3VpLWljb25zX2ZmZDI3YV8yNTZ4
MjQwLnBuZzoKKyAgICAgICAgKiBpbXBvcnRlZC9zZWxlbml1bS9jb21tb24vc3JjL3dlYi9jc3Mv
dWktbGlnaHRuZXNzL2ltYWdlcy91aS1pY29uc19mZmZmZmZfMjU2eDI0MC5wbmc6CisgICAgICAg
ICogaW1wb3J0ZWQvc2VsZW5pdW0vY29tbW9uL3NyYy93ZWIvY3NzL3VpLWxpZ2h0bmVzcy9qcXVl
cnktdWktMS4xMi4xLm1pbi5jc3M6IEFkZGVkLgorICAgICAgICAqIGltcG9ydGVkL3NlbGVuaXVt
L2NvbW1vbi9zcmMvd2ViL2Nzcy91aS1saWdodG5lc3MvanF1ZXJ5LXVpLTEuOC4xMC5jdXN0b20u
Y3NzOiBSZW1vdmVkLgorICAgICAgICAqIGltcG9ydGVkL3NlbGVuaXVtL2NvbW1vbi9zcmMvd2Vi
L2RyYWdnYWJsZUxpc3RzLmh0bWw6CisgICAgICAgICogaW1wb3J0ZWQvc2VsZW5pdW0vY29tbW9u
L3NyYy93ZWIvZHJvcHBhYmxlSXRlbXMuaHRtbDoKKyAgICAgICAgKiBpbXBvcnRlZC9zZWxlbml1
bS9jb21tb24vc3JjL3dlYi9qcXVlcnktMS4zLjIuanM6IFJlbW92ZWQuCisgICAgICAgICogaW1w
b3J0ZWQvc2VsZW5pdW0vY29tbW9uL3NyYy93ZWIvanMvanF1ZXJ5LTEuNC40Lm1pbi5qczogUmVt
b3ZlZC4KKyAgICAgICAgKiBpbXBvcnRlZC9zZWxlbml1bS9jb21tb24vc3JjL3dlYi9qcy9qcXVl
cnktMy41LjEubWluLmpzOiBBZGRlZC4KKyAgICAgICAgKiBpbXBvcnRlZC9zZWxlbml1bS9jb21t
b24vc3JjL3dlYi9qcy9qcXVlcnktdWktMS4xMi4xLm1pbi5qczogQWRkZWQuCisgICAgICAgICog
aW1wb3J0ZWQvc2VsZW5pdW0vY29tbW9uL3NyYy93ZWIvanMvanF1ZXJ5LXVpLTEuOC4xMC5jdXN0
b20ubWluLmpzOiBSZW1vdmVkLgorICAgICAgICAqIGltcG9ydGVkL3NlbGVuaXVtL2NvbW1vbi9z
cmMvd2ViL21vdXNlUG9zaXRpb25UcmFja2VyLmh0bWw6CisgICAgICAgICogaW1wb3J0ZWQvc2Vs
ZW5pdW0vY29tbW9uL3NyYy93ZWIvc2VsZWN0YWJsZUl0ZW1zLmh0bWw6CisgICAgICAgICogaW1w
b3J0ZWQvc2VsZW5pdW0vaW1wb3J0ZXIuanNvbjoKKyAgICAgICAgKiBpbXBvcnRlZC9zZWxlbml1
bS9weS9jb25mdGVzdC5weToKKyAgICAgICAgKiBpbXBvcnRlZC9zZWxlbml1bS9weS9zZWxlbml1
bS9fX2luaXRfXy5weToKKyAgICAgICAgKiBpbXBvcnRlZC9zZWxlbml1bS9weS9zZWxlbml1bS93
ZWJkcml2ZXIvX19pbml0X18ucHk6CisgICAgICAgICogaW1wb3J0ZWQvc2VsZW5pdW0vcHkvc2Vs
ZW5pdW0vd2ViZHJpdmVyL2NvbW1vbi9hY3Rpb25fY2hhaW5zLnB5OgorICAgICAgICAqIGltcG9y
dGVkL3NlbGVuaXVtL3B5L3NlbGVuaXVtL3dlYmRyaXZlci9jb21tb24vYWN0aW9ucy9hY3Rpb25f
YnVpbGRlci5weToKKyAgICAgICAgKiBpbXBvcnRlZC9zZWxlbml1bS9weS9zZWxlbml1bS93ZWJk
cml2ZXIvY29tbW9uL2FjdGlvbnMvcG9pbnRlcl9hY3Rpb25zLnB5OgorICAgICAgICAqIGltcG9y
dGVkL3NlbGVuaXVtL3B5L3NlbGVuaXVtL3dlYmRyaXZlci9jb21tb24vYWN0aW9ucy9wb2ludGVy
X2lucHV0LnB5OgorICAgICAgICAqIGltcG9ydGVkL3NlbGVuaXVtL3B5L3NlbGVuaXVtL3dlYmRy
aXZlci9jb21tb24vZGVzaXJlZF9jYXBhYmlsaXRpZXMucHk6CisgICAgICAgICogaW1wb3J0ZWQv
c2VsZW5pdW0vcHkvc2VsZW5pdW0vd2ViZHJpdmVyL2NvbW1vbi9odG1sNS9hcHBsaWNhdGlvbl9j
YWNoZS5weToKKyAgICAgICAgKiBpbXBvcnRlZC9zZWxlbml1bS9weS9zZWxlbml1bS93ZWJkcml2
ZXIvY29tbW9uL2tleXMucHk6CisgICAgICAgICogaW1wb3J0ZWQvc2VsZW5pdW0vcHkvc2VsZW5p
dW0vd2ViZHJpdmVyL2NvbW1vbi9vcHRpb25zLnB5OgorICAgICAgICAqIGltcG9ydGVkL3NlbGVu
aXVtL3B5L3NlbGVuaXVtL3dlYmRyaXZlci9jb21tb24vc2VydmljZS5weToKKyAgICAgICAgKiBp
bXBvcnRlZC9zZWxlbml1bS9weS9zZWxlbml1bS93ZWJkcml2ZXIvY29tbW9uL3RpbWVvdXRzLnB5
OgorICAgICAgICAqIGltcG9ydGVkL3NlbGVuaXVtL3B5L3NlbGVuaXVtL3dlYmRyaXZlci9jb21t
b24vd2luZG93LnB5OgorICAgICAgICAqIGltcG9ydGVkL3NlbGVuaXVtL3B5L3NlbGVuaXVtL3dl
YmRyaXZlci9yZW1vdGUvZmlsZV9kZXRlY3Rvci5weToKKyAgICAgICAgKiBpbXBvcnRlZC9zZWxl
bml1bS9weS9zZWxlbml1bS93ZWJkcml2ZXIvcmVtb3RlL3JlbW90ZV9jb25uZWN0aW9uLnB5Ogor
ICAgICAgICAqIGltcG9ydGVkL3NlbGVuaXVtL3B5L3NlbGVuaXVtL3dlYmRyaXZlci9yZW1vdGUv
c3dpdGNoX3RvLnB5OgorICAgICAgICAqIGltcG9ydGVkL3NlbGVuaXVtL3B5L3NlbGVuaXVtL3dl
YmRyaXZlci9yZW1vdGUvd2ViZHJpdmVyLnB5OgorICAgICAgICAqIGltcG9ydGVkL3NlbGVuaXVt
L3B5L3NlbGVuaXVtL3dlYmRyaXZlci9yZW1vdGUvd2ViZWxlbWVudC5weToKKyAgICAgICAgKiBp
bXBvcnRlZC9zZWxlbml1bS9weS9zZWxlbml1bS93ZWJkcml2ZXIvc3VwcG9ydC9jb2xvci5weToK
KyAgICAgICAgKiBpbXBvcnRlZC9zZWxlbml1bS9weS9zZWxlbml1bS93ZWJkcml2ZXIvc3VwcG9y
dC9ldmVudF9maXJpbmdfd2ViZHJpdmVyLnB5OgorICAgICAgICAqIGltcG9ydGVkL3NlbGVuaXVt
L3B5L3NlbGVuaXVtL3dlYmRyaXZlci9zdXBwb3J0L2V4cGVjdGVkX2NvbmRpdGlvbnMucHk6Cisg
ICAgICAgICogaW1wb3J0ZWQvc2VsZW5pdW0vcHkvc2VsZW5pdW0vd2ViZHJpdmVyL3N1cHBvcnQv
cmVsYXRpdmVfbG9jYXRvci5weToKKyAgICAgICAgKiBpbXBvcnRlZC9zZWxlbml1bS9weS9zZWxl
bml1bS93ZWJkcml2ZXIvc3VwcG9ydC9zZWxlY3QucHk6CisgICAgICAgICogaW1wb3J0ZWQvc2Vs
ZW5pdW0vcHkvc2VsZW5pdW0vd2ViZHJpdmVyL3N1cHBvcnQvd2FpdC5weToKKyAgICAgICAgKiBp
bXBvcnRlZC9zZWxlbml1bS9weS9zZWxlbml1bS93ZWJkcml2ZXIvd3Bld2Via2l0L29wdGlvbnMu
cHk6CisgICAgICAgICogaW1wb3J0ZWQvc2VsZW5pdW0vcHkvdGVzdC9zZWxlbml1bS93ZWJkcml2
ZXIvY29tbW9uL2FsZXJ0c190ZXN0cy5weToKKyAgICAgICAgKiBpbXBvcnRlZC9zZWxlbml1bS9w
eS90ZXN0L3NlbGVuaXVtL3dlYmRyaXZlci9jb21tb24vYXBpX2V4YW1wbGVfdGVzdHMucHk6Cisg
ICAgICAgICogaW1wb3J0ZWQvc2VsZW5pdW0vcHkvdGVzdC9zZWxlbml1bS93ZWJkcml2ZXIvY29t
bW9uL2FwcGNhY2hlX3Rlc3RzLnB5OgorICAgICAgICAqIGltcG9ydGVkL3NlbGVuaXVtL3B5L3Rl
c3Qvc2VsZW5pdW0vd2ViZHJpdmVyL2NvbW1vbi9jaGlsZHJlbl9maW5kaW5nX3Rlc3RzLnB5Ogor
ICAgICAgICAqIGltcG9ydGVkL3NlbGVuaXVtL3B5L3Rlc3Qvc2VsZW5pdW0vd2ViZHJpdmVyL2Nv
bW1vbi9jbGVhcl90ZXN0cy5weToKKyAgICAgICAgKiBpbXBvcnRlZC9zZWxlbml1bS9weS90ZXN0
L3NlbGVuaXVtL3dlYmRyaXZlci9jb21tb24vY2xpY2tfc2Nyb2xsaW5nX3Rlc3RzLnB5OgorICAg
ICAgICAqIGltcG9ydGVkL3NlbGVuaXVtL3B5L3Rlc3Qvc2VsZW5pdW0vd2ViZHJpdmVyL2NvbW1v
bi9jb29raWVfdGVzdHMucHk6CisgICAgICAgICogaW1wb3J0ZWQvc2VsZW5pdW0vcHkvdGVzdC9z
ZWxlbml1bS93ZWJkcml2ZXIvY29tbW9uL2NvcnJlY3RfZXZlbnRfZmlyaW5nX3Rlc3RzLnB5Ogor
ICAgICAgICAqIGltcG9ydGVkL3NlbGVuaXVtL3B5L3Rlc3Qvc2VsZW5pdW0vd2ViZHJpdmVyL2Nv
bW1vbi9kcml2ZXJfZWxlbWVudF9maW5kaW5nX3Rlc3RzLnB5OgorICAgICAgICAqIGltcG9ydGVk
L3NlbGVuaXVtL3B5L3Rlc3Qvc2VsZW5pdW0vd2ViZHJpdmVyL2NvbW1vbi9lbGVtZW50X2F0dHJp
YnV0ZV90ZXN0cy5weToKKyAgICAgICAgKiBpbXBvcnRlZC9zZWxlbml1bS9weS90ZXN0L3NlbGVu
aXVtL3dlYmRyaXZlci9jb21tb24vZXhlY3V0aW5nX2FzeW5jX2phdmFzY3JpcHRfdGVzdHMucHk6
CisgICAgICAgICogaW1wb3J0ZWQvc2VsZW5pdW0vcHkvdGVzdC9zZWxlbml1bS93ZWJkcml2ZXIv
Y29tbW9uL2V4ZWN1dGluZ19qYXZhc2NyaXB0X3Rlc3RzLnB5OgorICAgICAgICAqIGltcG9ydGVk
L3NlbGVuaXVtL3B5L3Rlc3Qvc2VsZW5pdW0vd2ViZHJpdmVyL2NvbW1vbi9mb3JtX2hhbmRsaW5n
X3Rlc3RzLnB5OgorICAgICAgICAqIGltcG9ydGVkL3NlbGVuaXVtL3B5L3Rlc3Qvc2VsZW5pdW0v
d2ViZHJpdmVyL2NvbW1vbi9mcmFtZV9zd2l0Y2hpbmdfdGVzdHMucHk6CisgICAgICAgICogaW1w
b3J0ZWQvc2VsZW5pdW0vcHkvdGVzdC9zZWxlbml1bS93ZWJkcml2ZXIvY29tbW9uL2dvb2dsZV9v
bmVfYm94LnB5OgorICAgICAgICAqIGltcG9ydGVkL3NlbGVuaXVtL3B5L3Rlc3Qvc2VsZW5pdW0v
d2ViZHJpdmVyL2NvbW1vbi9pbXBsaWNpdF93YWl0c190ZXN0cy5weToKKyAgICAgICAgKiBpbXBv
cnRlZC9zZWxlbml1bS9weS90ZXN0L3NlbGVuaXVtL3dlYmRyaXZlci9jb21tb24vaW50ZXJhY3Rp
b25zX3Rlc3RzLnB5OgorICAgICAgICAqIGltcG9ydGVkL3NlbGVuaXVtL3B5L3Rlc3Qvc2VsZW5p
dW0vd2ViZHJpdmVyL2NvbW1vbi9wYWdlX2xvYWRfdGltZW91dF90ZXN0cy5weToKKyAgICAgICAg
KiBpbXBvcnRlZC9zZWxlbml1bS9weS90ZXN0L3NlbGVuaXVtL3dlYmRyaXZlci9jb21tb24vcGFn
ZV9sb2FkaW5nX3Rlc3RzLnB5OgorICAgICAgICAqIGltcG9ydGVkL3NlbGVuaXVtL3B5L3Rlc3Qv
c2VsZW5pdW0vd2ViZHJpdmVyL2NvbW1vbi9wb3NpdGlvbl9hbmRfc2l6ZV90ZXN0cy5weToKKyAg
ICAgICAgKiBpbXBvcnRlZC9zZWxlbml1bS9weS90ZXN0L3NlbGVuaXVtL3dlYmRyaXZlci9jb21t
b24vcmVwcl90ZXN0cy5weToKKyAgICAgICAgKiBpbXBvcnRlZC9zZWxlbml1bS9weS90ZXN0L3Nl
bGVuaXVtL3dlYmRyaXZlci9jb21tb24vcmVzdWx0c19wYWdlLnB5OgorICAgICAgICAqIGltcG9y
dGVkL3NlbGVuaXVtL3B5L3Rlc3Qvc2VsZW5pdW0vd2ViZHJpdmVyL2NvbW1vbi9zZWxlY3RfY2xh
c3NfdGVzdHMucHk6CisgICAgICAgICogaW1wb3J0ZWQvc2VsZW5pdW0vcHkvdGVzdC9zZWxlbml1
bS93ZWJkcml2ZXIvY29tbW9uL3N0YWxlX3JlZmVyZW5jZV90ZXN0cy5weToKKyAgICAgICAgKiBp
bXBvcnRlZC9zZWxlbml1bS9weS90ZXN0L3NlbGVuaXVtL3dlYmRyaXZlci9jb21tb24vdGFrZXNf
c2NyZWVuc2hvdHNfdGVzdHMucHk6CisgICAgICAgICogaW1wb3J0ZWQvc2VsZW5pdW0vcHkvdGVz
dC9zZWxlbml1bS93ZWJkcml2ZXIvY29tbW9uL3RleHRfaGFuZGxpbmdfdGVzdHMucHk6CisgICAg
ICAgICogaW1wb3J0ZWQvc2VsZW5pdW0vcHkvdGVzdC9zZWxlbml1bS93ZWJkcml2ZXIvY29tbW9u
L3RpbWVvdXRfdGVzdHMucHk6CisgICAgICAgICogaW1wb3J0ZWQvc2VsZW5pdW0vcHkvdGVzdC9z
ZWxlbml1bS93ZWJkcml2ZXIvY29tbW9uL3R5cGluZ190ZXN0cy5weToKKyAgICAgICAgKiBpbXBv
cnRlZC9zZWxlbml1bS9weS90ZXN0L3NlbGVuaXVtL3dlYmRyaXZlci9jb21tb24vdmlzaWJpbGl0
eV90ZXN0cy5weToKKyAgICAgICAgKiBpbXBvcnRlZC9zZWxlbml1bS9weS90ZXN0L3NlbGVuaXVt
L3dlYmRyaXZlci9jb21tb24vdzNjX2ludGVyYWN0aW9uX3Rlc3RzLnB5OgorICAgICAgICAqIGlt
cG9ydGVkL3NlbGVuaXVtL3B5L3Rlc3Qvc2VsZW5pdW0vd2ViZHJpdmVyL2NvbW1vbi93ZWJkcml2
ZXJ3YWl0X3Rlc3RzLnB5OgorICAgICAgICAqIGltcG9ydGVkL3NlbGVuaXVtL3B5L3Rlc3Qvc2Vs
ZW5pdW0vd2ViZHJpdmVyL2NvbW1vbi93aW5kb3dfc3dpdGNoaW5nX3Rlc3RzLnB5OgorICAgICAg
ICAqIGltcG9ydGVkL3NlbGVuaXVtL3B5L3Rlc3Qvc2VsZW5pdW0vd2ViZHJpdmVyL2NvbW1vbi93
aW5kb3dfdGVzdHMucHk6CisgICAgICAgICogaW1wb3J0ZWQvc2VsZW5pdW0vcHkvdGVzdC9zZWxl
bml1bS93ZWJkcml2ZXIvcmVtb3RlL3JlbW90ZV9odWJfY29ubmVjdGlvbi5weTogQ29waWVkIGZy
b20gV2ViRHJpdmVyVGVzdHMvaW1wb3J0ZWQvc2VsZW5pdW0vcHkvc2VsZW5pdW0vd2ViZHJpdmVy
L2NvbW1vbi93aW5kb3cucHkuCisgICAgICAgICogaW1wb3J0ZWQvc2VsZW5pdW0vcHkvdGVzdC9z
ZWxlbml1bS93ZWJkcml2ZXIvc2FmYXJpL2xhdW5jaGVyX3Rlc3RzLnB5OgorICAgICAgICAqIGlt
cG9ydGVkL3NlbGVuaXVtL3B5L3Rlc3Qvc2VsZW5pdW0vd2ViZHJpdmVyL3N1cHBvcnQvZXZlbnRf
ZmlyaW5nX3dlYmRyaXZlcl90ZXN0cy5weToKKyAgICAgICAgKiBpbXBvcnRlZC9zZWxlbml1bS9w
eS90ZXN0L3NlbGVuaXVtL3dlYmRyaXZlci9zdXBwb3J0L3JlbGF0aXZlX2J5X3Rlc3RzLnB5Ogor
CiAyMDIwLTA2LTIyICBMYXVybyBNb3VyYSAgPGxtb3VyYUBpZ2FsaWEuY29tPgogCiAgICAgICAg
IFtXZWJEcml2ZXJdW0dUS10gTWFyayB0d28gc2Nyb2xsaW5nIHRlc3RzIGFzIGZhaWwKZGlmZiAt
LWdpdCBhL1dlYkRyaXZlclRlc3RzL2ltcG9ydGVkL3NlbGVuaXVtL2NvbW1vbi8uY2xhc3NwYXRo
IGIvV2ViRHJpdmVyVGVzdHMvaW1wb3J0ZWQvc2VsZW5pdW0vY29tbW9uLy5jbGFzc3BhdGgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNkMzQwMDkyYzJkZGVlM2M0MzQ4M2E0ZTg2NjI2
NDJhYjEyZGYzY2EuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvV2ViRHJpdmVyVGVzdHMvaW1wb3J0ZWQvc2VsZW5pdW0vY29tbW9uLy5jbGFzc3BhdGgKKysr
IC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9
IlVURi04Ij8+Ci08Y2xhc3NwYXRoPgotCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJjb24iIHBhdGg9
Im9yZy5lY2xpcHNlLmpkdC5sYXVuY2hpbmcuSlJFX0NPTlRBSU5FUiIvPgotCTxjbGFzc3BhdGhl
bnRyeSBraW5kPSJvdXRwdXQiIHBhdGg9ImJ1aWxkIi8+Ci08L2NsYXNzcGF0aD4KZGlmZiAtLWdp
dCBhL1dlYkRyaXZlclRlc3RzL2ltcG9ydGVkL3NlbGVuaXVtL2NvbW1vbi9zcmMvd2ViL2Nzcy91
aS1saWdodG5lc3MvaW1hZ2VzL3VpLWJnX2RpYWdvbmFscy10aGlja18xOF9iODE5MDBfNDB4NDAu
cG5nIGIvV2ViRHJpdmVyVGVzdHMvaW1wb3J0ZWQvc2VsZW5pdW0vY29tbW9uL3NyYy93ZWIvY3Nz
L3VpLWxpZ2h0bmVzcy9pbWFnZXMvdWktYmdfZGlhZ29uYWxzLXRoaWNrXzE4X2I4MTkwMF80MHg0
MC5wbmcKaW5kZXggOTU0ZTIyZGJkOTllOGM2ZGQ3MDkxMzM1NTk5YWJmMmQxMGJmODAwMy4uNDE4
MDFjMzY5ZGI2ZTAzNzU5NWI1MzMxOWNkNzkxMjFmM2EwOTMzMyAxMDA2NDQKR0lUIGJpbmFyeSBw
YXRjaApsaXRlcmFsIDQ3Ngp6Y21lQVNATj8ob2xIeWB1VkJxIWlhMHZwXjhYenBkMVNFcmJLMzQp
TW1VS3M3TStTekN7b0g+TlMlR3xvV1JEPFUKejI4SnAlMjhNPGYyOExmaXBAdFU+NDViRFA0NmhP
eDdfNFM2Rm8ray0qJWZGNWx3ZUVwYzZhIz8yQW1QIT8qSypFCnpPRlZzRCombEg3QGhXamxkLXFj
akREPVM3I1c1dH4tckYwN1R1Zz1uWlYlNnojV19zU0okbVpVO1l5K1BvOUModgp6Vyo+fiZ1PSZT
b2hociUkLUlYVS1VckszVGY3QHI1b2Q1Y31idypZM15WKk5zN0h6WjQmO01vfntwPGRubyR7K1YK
em1qIVZybjMqenZjTD5kbG9xbmBsUzFJKURKP19HbHZ0QmN9Rk1vQjFCYHNqfjBoS0opR21CPj5Y
bC1SazNwT3NgCno1MUcxZXwxXih+cn5mezdjd2ZDRWVeNzl4KSRXNlpFQXQ5VVJ4ekpoVkFrayln
PT5icD5Be2RKI3h1Kig5Pn1mOAp6ZGI0SDZtNXJBZDEhSjBJU3s0PWE+UEZeOG5DNGFkbzlnZG5Z
JEBvVTJsVDZJaUVCaGpOQDdXPlJkUGAoa1lYQDAKekZmYExPdSslaikye0FPYkdCJlg/dStUTENr
X1BjRWN7QC12PG1SVmpyZDh0QnBlSzJhMSpuMCspNzgmcW9sYDsrCkUwOXl2SWJOflBWCgpkZWx0
YSAyNDQKemNtY2JeK2A9P0xxTW4wfGZxfGp0LTtQYCRiPXVSI0YoamgoP1I3YDRMazEhKDVBVztq
WTVYRX51bHtONjUkUFFsCnplT28wYVBoWE9HUVh6bFpRbDVEMyshPmVPPyVMej1zcGlnUVorcHg1
WHxIVW56cUh6KEV8UHJ2bmB6WlUxdHpVVwp6MzlQRmdGKkYoUjhPZmpZeEdCaD0mNk5LNUt0KGZg
ZyQ2QHQhMzBMRmhZRjBWOV9BdHxsJlpVOG85Yj9wQlY2I1QKekZvTn0qLUQ9K2xJV2lJc3RUR31F
U3s1SUNBSSlCfXsqQ1pgbUZVd29sWTZFYGUpUFEqR181Oy0oITVPO2AjaVR6CnFZMFJJcmFuclJR
WU1OODhld3NlfTMyI0M1cnl6Jl9FRGI8XkY/aFFBeHZYPGFYYVdIRXhORU5mCgpkaWZmIC0tZ2l0
IGEvV2ViRHJpdmVyVGVzdHMvaW1wb3J0ZWQvc2VsZW5pdW0vY29tbW9uL3NyYy93ZWIvY3NzL3Vp
LWxpZ2h0bmVzcy9pbWFnZXMvdWktYmdfZGlhZ29uYWxzLXRoaWNrXzIwXzY2NjY2Nl80MHg0MC5w
bmcgYi9XZWJEcml2ZXJUZXN0cy9pbXBvcnRlZC9zZWxlbml1bS9jb21tb24vc3JjL3dlYi9jc3Mv
dWktbGlnaHRuZXNzL2ltYWdlcy91aS1iZ19kaWFnb25hbHMtdGhpY2tfMjBfNjY2NjY2XzQweDQw
LnBuZwppbmRleCA2NGVjZTU3MDdkOTFhNmVkZjlmYWQ0YmZjY2UwYzRkYmNhZmNmNThkLi5jMTJi
NjNlMTJhMTY4NDE0YjQxNGQxNTEzYjYxN2E4MWFhYzIxZDE3IDEwMDY0NApHSVQgYmluYXJ5IHBh
dGNoCmxpdGVyYWwgMzg0CnpjbWVBU0BOPyhvbEh5YHVWQnEhaWEwdnBeOFh6bkhCcDgwT1Q3THBr
RWF7SEVqdG1TTmA/PiFsdkk2LUUkc1Ikegp6Mz1DQ2ozPTlufDM9RkAzTEpjbiU3KWxLbzcreGhY
Rmomb0NVPVN+dXZuJFhCRDhaRUU/ZTZtYnpzUEZDdnBebnUKemlLbmtDYHZYb3NVTH1yYz98diEq
ZypyVDQ5Nzg7Z3pyQXtwdiUhRjtePGxjcWZeTGdoO3BRKD5ALTh2NT1yNnF6Cno8WmAwXiEtUjRe
YE5uQmBvPzMoa1opI2YtSjkqRH0kPHdBMjklLUVAb1YwUHltT1N5M3JUdkVyUkhhWXpPOD9yKQp6
P29sOW5xSlZlRjR6OGooRExVJHNyK3d8Vl4/VUUkY3FoZ0F7WXJ5cihoaVIlTlM9MEd7JHVCaERJ
bDAlZHtOVz4KeiVAaz94WjNgYXF3ZXpoOXg9RlJmSEtIVVh1X1Y8aHhoTkcjRiZHJmJuJn0hPz5L
ZEFhNyNkcHtuXitsRz1vJGI/CmpnTHMjYDlWaS1kXkhWYUBEc2dNamxmMT9QKVdHMkI+Z1RlfkRX
TTRmb1lIYFMKCmRlbHRhIDIzNQp6Y21WPEgwMktkIzFOI0F4Nz1IKWAwMDAxdHs8diliMDA2PkNM
X3Qob2gzKGZ9M1dHMmhNQTYlOUFnaiY3dng1MyEKekF4LW1abG5tdllOMEgkdVhxWjxCO1oycXBW
fTl1Oy11diE3Y2w1YkMlU3VgOGB2UilyQU9SfWstfl83VDBHdSlvCnozTG5XeiolSkBqMW4kTmA7
fChne3BhTjlFSz4/X1FnQUF5S2c5TkNFZ0E9SFYxN3ZXQEkyaWEqJnkrcCF1dFVJfAp6JDYqKF5g
PmJ2UGNqS1N8UktQKDZzRGNDQUIoX1FCJTA5NzhhPCRBaCQhYnxFd247fEhPMGk4Y1E8bGF5JCgx
cyYKbE98bil0OHJ2a2J2Uj9qamxOQD5qQH4pcyFhakYwUzAwMm92UERITGtWMW0ydVlETkc2Cgpk
aWZmIC0tZ2l0IGEvV2ViRHJpdmVyVGVzdHMvaW1wb3J0ZWQvc2VsZW5pdW0vY29tbW9uL3NyYy93
ZWIvY3NzL3VpLWxpZ2h0bmVzcy9pbWFnZXMvdWktYmdfZ2xhc3NfMTAwX2Y2ZjZmNl8xeDQwMC5w
bmcgYi9XZWJEcml2ZXJUZXN0cy9pbXBvcnRlZC9zZWxlbml1bS9jb21tb24vc3JjL3dlYi9jc3Mv
dWktbGlnaHRuZXNzL2ltYWdlcy91aS1iZ19nbGFzc18xMDBfZjZmNmY2XzF4NDAwLnBuZwppbmRl
eCA5YjM4M2Y0ZDJlYWIwOWMwZjJhNzM5ZDZiMjMyYzMyOTM0YmM2MjBiLi5lMWEyYTMzMjQ5YTUy
MzQ2YjVkZDUyMzI4MWJkM2Y2MmI5MGUxODc3IDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmxpdGVy
YWwgMzI0CnpjbWVBU0BOPyhvbEh5YHVWQnEhaWEwdnBeajZnSSYwTFdtRlRITlVacSomNCZlSHxH
WEh1aUo+Tm57MWA2X1AhSQp6ZD5JKDMpRUYyVlN7Tjk5MGZpYn5GZmYhRkZmaERJVXxfSkMhTjRH
MUZsU2V3NE4hdDkkPWx1S3w5X0Z5aEcmNjEKel83WUVEU01+Pi1lN3M1PSk4NzQ1MVBifGh4O1Ri
ZG9LRjU+STx2RGVRS1ZQdGx+UDsmZVRqWUVoSzRNTEhUTEh8CnpJQ25vaCZlUyRQaU59N3EoSTI3
MkIjcT1CWEFjfmlhUWVlPHJOaT43WUhZPTdaMDh1dUtXSW5eYVdMI0M1KjRgUQp6Xil3dTR1NDsq
RUxgaDB3TnZjKEhRN1Z2UEZmdVNTKD4xV3ZIOGNxXkdgMkR9dWA7bUdIMnsoWkBoKjhnUCZETWAK
YXIofnY4Oz98JWlkNXMwQWZ4KismJnQ7dWNMSzZUMWhGIT0yCgpkZWx0YSA4Ngp6Y21YQFlscmNk
ZmZQOztKZmd3TUY+byQ8bV9qR1gjdkZMcSFkP1BQfGcyM1NlRXF9JVRESyQrflZwZSRhRUcwWWIK
cCthd2krQUpiSTYtK0ZnQGxgZXpMYW1MT1RFYEUwSDFwej48NDQkcmpGNioyVW5nQWp+QTNYcDcK
CmRpZmYgLS1naXQgYS9XZWJEcml2ZXJUZXN0cy9pbXBvcnRlZC9zZWxlbml1bS9jb21tb24vc3Jj
L3dlYi9jc3MvdWktbGlnaHRuZXNzL2ltYWdlcy91aS1iZ19nbGFzc18xMDBfZmRmNWNlXzF4NDAw
LnBuZyBiL1dlYkRyaXZlclRlc3RzL2ltcG9ydGVkL3NlbGVuaXVtL2NvbW1vbi9zcmMvd2ViL2Nz
cy91aS1saWdodG5lc3MvaW1hZ2VzL3VpLWJnX2dsYXNzXzEwMF9mZGY1Y2VfMXg0MDAucG5nCmlu
ZGV4IGEyM2JhYWQyNWIxZDFmZjM2ZTE3MzYxZWFiMjQyNzFmMmU5YjczMjYuLjczOGJhM2Y2MzIy
ODRkYzI1NmJiMTRjZWJlNGYwZDgwMmNmZGJkNzkgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKbGl0
ZXJhbCA0MDYKemNtZUFTQE4/KG9sSHlgdVZCcSFpYTB2cF5qNmdJJmZDPFJqdSomZn5rWVkpOV5t
U3hsKngxa2dDeV5EJVM0ajI8CnpAP35KQ1FlJDlmWGtsUloxciV5eyFONT56emAqYi1mcX10bDFf
T2g1IUpKKXpIYjRvc0J5Vj9AfDZzcndAJTtgXgp6Z3VUU20qT21QTkNtKmo4JEZ6NHA2QGZ5dEpZ
NV9eSmRWRlRaX214aEQ4Y15We19vOG1ZT3p6K1hgRFY9N0puYy0KeiE4QVRIX2woJjVyKjR+dD0z
WlF+ZGE9bVNsQVpRPFBjSWlaWTtGNlFgRUZ7WWpXUHA2VGNYNlY/VChSWm8pU1Q7Cno5LVZCPE5I
fThwRnlScFVNV09rIUZNZ0MteFZjMSZPfD5rVT5aYWFha2IwNn4qViVhPTEqKjwxcEtpUDUjUVg1
Kwp6bXFnfnI/eH1WeUBiMHU/YEAqclA/TyomNy1vcGxVQylsT184SEt2Vz59VWtLUW5rYzJxOWk0
O0ItSlhwQz4yT0MKejcjU0Z2PV45dy04ayZSezhlMThnU1ElTDg4VVJVeWMkZDUjQz5uQ31RIT4q
a2Fjal8leXY3MzV6fkpmWD1kI1d6CkdwJFAhZjVzST9fCgpkZWx0YSAxMDcKemNtYlFuVHN1SmBt
NGw2ZWZnd01GPm8kO2JAcE4kdnZGSl95QCUhX2BkTm5wU3d6an5lREg1dH1gWDhVYEc3Qj5eCnpF
QjdSJUJxYnl6MDh2c3hpZChBVDtuWU4tOSomfnwleHJnejdhITN1XmghYDxrbE1uQGM8amlPRD9z
eFlKWURAPApKKTtUM0swUlR5R0JTLSlNCgpkaWZmIC0tZ2l0IGEvV2ViRHJpdmVyVGVzdHMvaW1w
b3J0ZWQvc2VsZW5pdW0vY29tbW9uL3NyYy93ZWIvY3NzL3VpLWxpZ2h0bmVzcy9pbWFnZXMvdWkt
YmdfZ2xhc3NfNjVfZmZmZmZmXzF4NDAwLnBuZyBiL1dlYkRyaXZlclRlc3RzL2ltcG9ydGVkL3Nl
bGVuaXVtL2NvbW1vbi9zcmMvd2ViL2Nzcy91aS1saWdodG5lc3MvaW1hZ2VzL3VpLWJnX2dsYXNz
XzY1X2ZmZmZmZl8xeDQwMC5wbmcKaW5kZXggNDJjY2JhMjY5YjZlOTFiZWYxMmFkMGZhMThiZTY1
MWI1ZWYwZWU2OC4uM2Q1M2Y3NzAyOTE1ODlmZjg5MzdjYWY5MzJmMTA3NzdmOTk0M2FkYyAxMDA2
NDQKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDI2NQp6Y21lQVNATj8ob2xIeWB1VkJxIWlhMHZw
Xmo2Z0kyTkg4JENFMVE9QURWQjZjVXE9UnBqczR0ejU/TyhLZz1DSykKelVqfkxNSDNvKTs3Nnlp
Mkslc15nMz1FfFAzPUZSbDcjT1QoRmZmUTAlLUkhYTFDKEcmQF4qSiZWNyVLVXlhZFEmCnpGWSl3
c1dxLWlRJEUoQ0s/Y0dtQnBwYy1haShgbiFgUShmUWlQcHNoQjk5c3ZyZT5VQXlsaz5ENkRYLSM7
dT13cwp6bDMwPnptMFhreHEhXjQwNDkjPjZFT2lZe0xKVzxxajdfV3pFT1pUa3EoUXQoLVZQS0V4
JW54WFhfZEcmPXQqODwKUTBjdjNJYm9GeXQ9YWtSezBRMTtFX3k3T14KCmRlbHRhIDg3CnpjbWVC
ViVBNm4oJGljP0l6PnB1b2JzSTwtYylCPS1Tb0ZSPHQ7b2xxQWFlTV4reCEyfFhwMz1ud1ZjX3JX
UmNlKQpxazA4eWIoSyo9LXcqSylDSzR+bnFObm1ga2c7KDArdkM8WnhVSXRIQktiTGgqMn43WSkh
WFJuQAoKZGlmZiAtLWdpdCBhL1dlYkRyaXZlclRlc3RzL2ltcG9ydGVkL3NlbGVuaXVtL2NvbW1v
bi9zcmMvd2ViL2Nzcy91aS1saWdodG5lc3MvaW1hZ2VzL3VpLWJnX2dsb3NzLXdhdmVfMzVfZjZh
ODI4XzUwMHgxMDAucG5nIGIvV2ViRHJpdmVyVGVzdHMvaW1wb3J0ZWQvc2VsZW5pdW0vY29tbW9u
L3NyYy93ZWIvY3NzL3VpLWxpZ2h0bmVzcy9pbWFnZXMvdWktYmdfZ2xvc3Mtd2F2ZV8zNV9mNmE4
MjhfNTAweDEwMC5wbmcKaW5kZXggMzlkNTgyNGQ2YWY1NDU2ZjFlODlmYzc4NDdlYTM1OTllYTVm
ZDgxNS4uN2FmMjgxMTczYjkxMmIxNjBhOTQ2M2RmM2U5ZDVmM2Q1MTdjYTBiNiAxMDA2NDQKR0lU
IGJpbmFyeSBwYXRjaApsaXRlcmFsIDU4NzMKemNtY2d3WCZ7P2YrZkx0XlBOIU9RdzZ4a3tyayZK
WU4tPFQtYml0cSlMWmQ+ZztqTFkqTmtscWJEMmwxSXMlV0pjCnpPQUA0IUhqLSRpNyE8VzhmfmNh
RmgkU0o+TUVKdFllOU1wYj97fEpZPVJTOXleVzs0RHgkbzstKk9VNklxbThXMAp6YVR4I3JBWno9
fVJUbHRZJnpqVEBJUEA+KzY+cFMhUWAmdFViampmbzA4cFFHVkFGVDZib3s7bEZEPyFNME9BWSkK
emFRaHdyQWQ8Um4makEzamBUKVIhNCorMkw3eXZqTGBJUEt6Q2pIP1hLWU4/MitxLVNReUtxZUUq
JXhFJFY3MmUjCnplbVU3dy17dm9VYDJoZT5UKGBZPyR1KXQrRSV5RStofmReUWVCRz99PSRoKnsq
eyhWclY/Tklock9GPCt2bUcqWAp6ejVuNGdtaVg5QWNIPz51JHNfVTYpbTdOTkozZW07ZWlTTDNJ
MSpIcjhwKkZiQjZDSzU5b1dDMmtrfn52RyhNKk8KentNWGAlWnZBRnQ7IWxQJVY8WWtTRkY0N3BQ
K1ooRyVtMDFzRE04MnpLYH5oMyNnMzxoaTE/Tk1jcl85QUBFKyszCnowUlpGMip3fkFeN1FpR1dX
N200fndhPTg/aiFTPEpeVkxeNyN4O1FQKG9QUkplRWF8Rm1YQ29hZ2ZKIzJLSGA+RAp6YjRqcCY3
U3dOcVI/X2YkbnJWMHJAN01hJE5eQUJVSlBqVU9yPClydlE4Yn5Ab2QqP0I+WlcpZTFCUlJvYTdT
Jn4KelYrQmwhTHdQP2g1T2VgZmNvVDlWbUkzKktATlRfaGxDS28pdHo3UEBqVn1SNFUtQXlpcjZl
IzhTXjRVKnI0YkBjCno3ck50cVBBITJlRX1AMn1NO05DWXhKYVNAT3RuXmhabWxLVG5EPTEodCEw
dUJoZXVmJnk2JVI8ZVNabFVtTT0rUwp6UVUkI1omdjVGUkFwI0FLOD1YXmgzcks2KTVCR00haDMp
LUJnVGl3MjwxKC0zcX44KkExMmUhXm1mZFM9YDV2K0UKemVxbzIjcyRobkMlV3pEPWR4PTZmZXxV
diNJKm9PJUkofTktKEZpaFc3VWc5dEtlMV93Yj9iRnk0XiMpbEM3ZjwzCnp7Un0rLUZHPGp+Vktt
KXNNbztrPUdgQ0NBPGRuOTV4MCZoQyp+eXp+Rn11VEctYyVYdjh2bkNwazVnKVZAbzF5Pgp6XnRn
REBwVCgxK0REJWRxMFVKYUhCJE5Bc14pND5fXlZCTTQ0eEMlY3JgWC1oPm1OfHtWJXp8YGJVZG5y
eH10TFgKejZ4Q2VWWktBcDFUdk8tNzYmSUhYcGMxUzUrMz0wKWlgdm9lbWRkaz1EdVpScnYpRkU9
e0JTJEI3cXl4cCZzPW44CnpoVmx4VUM8MzshaWc0WEo3Yzk+dkktPVAjPUhedDZkOzA4RGFLaj1u
cVRSQFBWc0g2eTRUWHxgO1d6NHhibWF2WQp6PiRULSgrbnBfZ2o9IUN0dCFeJUZ4am51UUB8fFQ3
Vk5DZ140c0NreHhoYTh2OEBGOSk/WXBvZCVgV0pIczNWJWEKenBlZEZxYkJndCUzfWw4TXZJZSpI
KyVMOzMlVGBEKTNrZGNzLXtMcG1IRXhSWSlCWTVnIUU4RG44NUc1fDl5eVJeCnpwe3Y3THBUZyRr
ZilTWlZoKlRwQzd7a3B3WVBEekNAUno+TVZWaEQtKE9sZEtTZ25VTWtgWHBhQylkd0AhN1NTSAp6
MCgxSklAVjRAQFZlSDgzZnBgbWAqYzUwZ296ZVRNQXp1cWxxT0xDcURNJX03ejYmfHk2KWtHdCZK
TnNgTyROYnMKeng4ZSp5dCNTdSF7I1FOdXNPSjBQWFdmKXt5dGd2fk9XLX5HY1Q3Ty1BIXkhaWZq
JFA1Zk05e1g3WitiU0p5JUFeCnpHRXd8UjFgKlZpOytBUjk3emhjRWlobnhzOCU0KFUjYFczfW5P
WWp8aD8pelNhPWZqYyhTMkRMJVc/fSRSUmA5OQp6NGlLcnZVXyRtX1hKJEN6VTM3VWxGN2tsV0BP
dGpaSkBzMH5vclhzRitGUlV5ZkBjPmcmSXJfaWhzPFAjS1UpR04Kejg1eCEoclgyMjUqXz01c1Ny
ZX4jTDNWZHQ4SEgrSkBVVWphYWBGdypJTS04ckEqKzVicDc9QDwzMHczblFBWiQ9CnpJdX1qSEAy
RVAldHRufDQkfk1RdnEybTFoTzAjXmtpd0hmZDZuOXgqVHZHd0pHVyROMD91dTs5QT01QCE2QEdv
aAp6MWBmOD5Pelh4M0ZIdCtTNEEmU05ZZD0paWZTQlctOFp0Mm9YT2tLS2Y8ZCpsR14wVVBHUnQk
aVg3IyNeQ3p8WWgKenhKKkxxXzFmfTw4KEBweEo3RzZjfExtIVZYRk8tRm01RDFqLS1uRTxCI1BJ
bV98Mmx4OWI1K2grPCE9WHgmIUBFCnpQPHVKYEoqZjJWOUdBLXd2e1IzV3FtYmlRVyhKaFJjZX1F
YDFMWT54VipVdDFydjs3blMpS3R8aTIybjh7clkqQgp6VD19JE8zaFVQeEw3PkJ6LT5ybzJkWS12
KDw2X3Z5Pm1VZE1lJTE/ci1ZWDA/e3owcllSNWxDTGkqTVcod2ZuK0wKekAkPiRnYjI2T3o+RiVh
bkZyMjEyR31DKFYzZzNiI093eGhVPGd7YSNHVkh5VGJLemtAMUNWOzRedTtUJmNfd0FOCnp2PDU/
dG5AKGN8QllQXzxJUTRwMC1POyRGeU93Q2xWbyQ2N2YlYXhnO1hzOUNpRCoxa25rUWc0a3JhVEIr
RTZCIQp6Tko8dGpMYlZ2fSVAI1c0THVjbE9GUkx9ZHBwd0MwIXAoJGAoRGtqX0hvQyl+PDYwPUBP
QTZAJEVUP015WXROYkoKeiVLVUIkWWhZUWNfcE82SndZUnttMypJfT83VWViWjd2I1ZCaE08VGBt
ZWU3cU9PMiFLVFE2NF4yeGtZIURiNmxSCnpFP2M4aEVONyhSKzB7JFI0OGN8QnstT31gY3hjYGNi
V0NVflBzXzlTUyYya0orPENIbzhSMGUqSGU3dVR1ZD0tRQp6IU03STwqU0o3bUspMVAyY0FsTl5R
bVU4bWJ0MF5CeUQtaEc5YG1wKTBWbDJzZEsrPkI/RmJMfjM3O1AkJVo7S1kKelgkNFB2ZmpATilJ
QW9FUiFoZTdiNmtSZkJYRz5CXjV5UFNaNipHeFFaT0lIZEVpaFFUNTJvdmNyVktwNF9xT01ECnpt
X3gpITM7bkhRc05zeFRiQGBIMEg3WnB1JH56KmE1aUUrODswekcoSzxlPVk+WmZhKCVHV2E3cDx1
RnNXLW1ZMwp6ZUlCQXM9MmVINzdlS1U/ZyhAb3hjdXpHKjU1JWMwZmwtPCowJFU0bEh8PU4/P0oo
QDN3JGFCN3RMNV5DJjw2NFgKekBwKXxvSk9vQERaTSFKUV5MVnxvcWB7aT5hX1ZnRkVOWD5jJkBG
QjRWTTtkK0Y2a0BBeUI8MlFsWGAkQlo9LShTCnpINGdpejtfaV98Pk1jND83dmZxQjdWKTNycW13
fXghamJUa148ejBvXilFcypAdG1vT0JNPE5lcWt+Z3Y/VlRXKAp6elVzMztAYCZtSihXOW9DNkM3
VVNZN1lsT0JSdF9zYn1fPyprO2BpTT8lVzc9bnBnTGUyeUZ9PWNNZjZ4Oyg5N0cKeik4enk8UntL
VyFDeXcxaUtgZzJeYHZOWVlKTEUhZCZGVFpGbmhVMWckZ2AjX014SkFfbW5UcTFFQ1M7PmUhY0N2
CnpCfHlXTG1sRzw5ZTQ+NDJEVFIkNG1BbUxXVmlWKlJoWE1VfklLR3xIJmdEWEBuJGokKnBvcFRQ
Mk8zJHB4eGt1OQp6Oz9zcWk4dGh6WVdkSjtJaWJmXkBvdGFfMCM3MiV5TT4+UDE7MXpzQzkwWlp8
bm1pe1VgYFRiQDRkWEg/OWBoSngKelV3TXB4SncpdmZxRWJ0Y2lqN25LZ2w4VyEyMTV3TkA+c0N7
dldfO1JkaC1qVSVuZHZIQWxtXjNUKkt2ZUNYJUVYCnpUa041MlU1IXNOJiRMMS16LXdCPlNCSlNU
SHRZRV84Unpkc1BQTTcqaFMpZTgmTGYkPiNkZnooVnoqTFBsRiotNAp6bVdMTlJfRFNeQWw4ei1R
XnImdHtqK2IzY1dMbU47UG83T1ZEbl4zT2YxLXxpTDF1P2wxUHtkSWwpJmBxYlF4M2kKenJyRDst
bVg0TE5WR3VgNzNlNyYlRzVlZm8wJCN6eTRicUEzamZ1IWN3N1Q+ZWg+ZzB6RWdNTkh7YjxYbjVS
M3FgCnpsfVNJRXhoWkVAeEo5THQzZSpqQDQtcHk3UjB7UkNJNiU/NklOXnVUczJwUTt2Zj1wc3JL
MyQ8NU9pY3R6VTkjcAp6N0RFNSZWaE57Jlg0ezElSHdEaE5eeG1eK0EjQG5XJDM9dW56VFhUQHM3
Nk1QOHwocVIhQ3M0QiR6WVV4O2YrajcKejxWOWs2T1BUWilLZVNVciNAMlJ0M1lNRjwpeERNS252
PXZsRlJ2U1JSPEtQLSliVyVSbj4/K1QwbzNoKFBwXnRKCno5VUItb3psZVQ2by0tYWo0ak0wPiUp
cUxoZTRQWGx7dnIoQmghTFZxSGRwO08/IU5VSiYpYH1QUUpaM2VVWVMzZwp6S1U7Z3pONklxbk5n
RTdzKGwpfmhKMVJYOXteKHBgNGU1bGNwfU1QQHduUElOJkFjZloqODhHaGBGdndqTj88e2oKenJ9
RWE4Pz8lKE4wS2w8Vk9tN2JoUlNVVUBXWHZgYWZrenxacEJAWEFSa3A7azUhWkMrJjsla3s1MFRA
U1AmOVFKCnpKLUBPVnpBNkQqWWAxUV4kSmFfQkoxWURAUiFuYSk1K2ZAS24+MypsI3coazsycER1
cUJyXlZ0PWVNT1klUk5oRwp6dzxQWihzbU9SdiYkUFFiSnNSVFZqa01obHVxZFFWT3c9ZC07T1Io
Rlk/JCp0Q2B7ZzdURElLJFAjNVg8PD88XjkKendvTG9VZnF3NWZKemNlbnBOJjJya2QpNiVQMUA8
UilvJDk1SHJVJERFM003JGt+aCtIbDJ3TFlGJiF+eWx2fTIlCnpaWTR5WGw3XiQ9TmVxMkxfa0dL
JTRNakZGa2kjTTlUfVY3KHV8WHA+QXZxTXgoVnpGenpsbVchVC1iY0laSCpwWQp6I2VSR3ZtWity
WXQkfHlMUEA9SUdVO0FRJkdWJiotUHBIWShkOGNGSmUhYGpVIzB8YH0xa1BORllqTlk+d0orflIK
elhiU1prXj1hQVVpLSlveF9Wd2dXeWd9QiRkU1peR3VVKz9NO1g9YHFAOWV9MW1aMGRjZiRHYVBl
SDFHa1UtV3EtCnppJT5DbUV3I2tvPERyWkZWSn5pUEM8P1UmRE81Y0ojYm9kQkQwTGxyKCl7Yj97
TmczcisrTi1MeVY8aiNTTDhpSQp6Xm16ZEx6V2x3RGg+KV47UG85cEVNMiR8c25SMW8lcH1KWDc7
SWJlMzxgPyZrUzctdi0mdVlFNGNmZj0yWSY/ezgKektBXk96d1ZBUj5PPSV7Q3FqJmtybj4qMkN5
VCUjN2lUSXNEeXVEdnZ6Tl5taWRIbjYyNXkwWm4zaXxJRy1rMnF4CnpXRTtxRmwlKSRCcFJZUzht
ZWtuYjRqeURvOEs8ZS1QdGMoaiNPdlZ5cjc1MGppWiQwdl5+ITJGNXBpKmJaPl9vNwp6PnsrdzFe
bUQydW1LZiZUT1JOckFIYEd1P0pzVzxBWXFGVGV7PzJWe3p6azV3VW1CP2smP2x8MUkpaUVEIzR+
QWYKelBAeyNPK1FDP3Vid0wwaihUSEZwI0huXkJoTFhVVmFOYU8jc2tXYzVNOSNwKXEmSSg9UDRg
WnlYcHNzJFk1UT5TCnp6Z1paKz8mO3YzXjw4aTJGUHt+WXdzJEVUO0MhR2VqI3F0ZiROIzNuUCMl
Mm1aPnJ+bVU1VjEjXj92PDAxPWpsKQp6Q2kmMHtRKCgrbCpUMnxhY1hBZiF1U29xWVFqdXlNZDVr
eWx4VEVeJGl6VGZELUd8ZiQpQnU7TTxmNXVvUW9zU0YKemxTYE9TNGh+YHFxd3ZgZVV0Vns/WWNE
XjV4KyU4V294O01OI30zO0NCR04rPHM3eENNO3wqQzwoN1U4JFhmbCVyCnotSlhId3kqR2prLUdZ
U3t2SFNBIShBUUVDaDtgTyFNNSY2TTZgVmh9VWE3Kks8NlVueCE/TE8tejRteVJJbnt7OQp6YlpQ
NU9TPnxnVl52VGBESnYtKzM0LXV2T3FZNkwhanpzX2MmZEt6ZXpoJWJYQ21MU0QqZzRiMmpGV1Jk
QDxqLSYKenJ2TG9iOzV5fU9reT5sUSprQ1ZiTlEqfGhLKlJRemRSUk99JikmN3okNEFWQT9iYVRt
KTk8XmBJYk4kVj05Yz8mCnoxRkJ5YlAqcFErcz5EYU1gKmJ0TVkweEV0MSV9RTkrWVRBSWMwO2k2
O1NSK1A2cEIjUGJgSCNtaGFxQ1AwQGJkJQp6aVJITC1McHtqfEp9R0dZeUl0OU9kKyRHZGAhP0o/
OFRHZUBFJFdzRUNEcUUjLU10Sm9yZEp1QF5IMSMzXjRvRm0Kej0/KHZvYW9KZj5qUjlTfm5xUX1x
c3BAOTk2JStmYUQ3ZGc/bClhPmd3a3pUVkNqdyhsOFprbkw4dzlzQiRieiRXCnp1dHcqYyUhfDte
QE4hfUlmSX4wRkI/cGNRYklXck5SYXZrdTJBX310NS1iJF5IcG5RZVJrUTE3OFlfYXZucDdBMwp6
PVRyOCpATFIzK0lzbG94NiNgIXZMZm8xc1hxTG0lRDZ6SStPfktXXkFNPzYlX29ENiNhc0NMcnRH
emphVUhObHwKeiNafF58SXd7Yl9XNF9SM3VtXmRueSkpcjdrTSRuMXQqRWpWV0hUS14rOT45NHVZ
NUZRWT12ejY4bXJgWnp4Y0VvCnpIV1VCT0dFMUJ9bncyYEw5blhiRWJzWmIhemJZYHVIeiM5TDZg
V0heamRETzFPRFNmOzU0RVVxV0lWS3NaNntjRwp6UmBYKWs8THhNUDhDRWtwV0dQPjY5RXg5P1RS
V2NLKEc/MUooe1I+IUomQDs9YWswXnhDTzVaVWNwUnR+PnthKl4Kem4tYT8kd0pzJDxPUX1ZSXFy
JVZqU3lzWnZBTWJXWEl8JCFpRVRBZW91TU5oMnp6IWtla2MkN2RjYFlBWGBleXwoCnplNl5mRWsr
ZWRKbjUpfi03MGktJWRwNCVCTGMmVT9kTHlSPFkkbChqJjh9RVA+ZHZ0PG1sdCZOPlNNWVpROFEk
Tgp6ezQoRnZRaUxpZlk1MitBeE5oWTdwdmAqQCNQMF9eMkp6SDdSSWZCZFNMKz40d3NvNmdPMHNj
TURnOVZuRygheDQKenMzSz1uPntCJm4/eiY3aXE5VGtDKFRffj54b0IqeGd9aGd9bEo9dylXMTY9
PFIjVmgpe2whYkgra1c3ZSZKKFF7Cnp7NzQlYXs3T3JxT1deVXtvYmRzXiQ0a1YrN0xZKXRNKjJM
JnRXQnhiK042UWRGOytkWStOTVk8I1RpSVpkZj1HJAp6NGZgUXBYUTt+am5KZ0RaP0AoYFVSbzAp
WjFfZzVLWjE0OHc/MjtxOUcpMFFYbypDPmxKMT9RYVhraXc2VUt2LSgKemw5cz4hZUFMV3spM14j
b1R6V0xaX0d9RlBsZTxmd3JZUDYtTnA9KFMlQ2JpMTE3bjB2b0gpMFVzNU0rZVhPMSR9CnpBU28x
NitsKntkY3RWSXBvKGVGJj02eVEyIT5sWHI+PUUtMj5gZz08Yl5YYHVnMUcyeil0ZGE0OFNVNUVy
X0ltZQp6QmpDfV5PRjUoZmJxcm8wVV9zKDdAfFM2TENFYHYjPkJxRjtDZVAmdW1eb2E7U2IrckVk
P0xfbUUmUmlyWG9kZX4KeiEhRlVKbH1SSV4jPH5RP00kJG5oJj90WjAhbTdGOyV6TTcqeEgpWChg
dUJSdlgrND9+TjVaJWRNfk1NSnBqMj1ACnpoNk1mfld7dmJJKjN+Iz5UYHRVT096eH5NIXx4fmVB
fk0lKilYdz5mdEs3UzQmWjU+ZW1kblQxSngtOFRFbUM5TAp6Pjt2bnV4Mll8aFJoQ15ve3RwcWs1
YFBhdHFyQ3AwVUh4dn5APEtxKDZXKl9AQWJjNTUtUXpWWU8lQ29mbkxFcE4KejQ+cmZ6MzNBZkZU
fWspfXU5QUYtY29NKCltakp2aTgoM25OK2olQ3wtNmUkQWhNblAoJVd6Zn53QHBDR0dZYG1kCno3
TXYjdUwhZUJwNVN3Jm95SGwqRXRrSkl7T2ZGQDN0UzU1bip8VXNfKTt+X2QkSEwhMVFoQmRCWEJV
R0A0JUdEZQp6PSZHJXF3JU99TVprNWIjaUdKR18mQzlNd251Xl51I05TckI7P0R1d2YxNlFwJWpm
QVVLMDx3OEFVeVFhJTt7eC0KeitKcnIkYWRZbjYlPHBHTChHVX1TRkpkcSlgNVh8VmVRcDdxSX0o
SjxDZG5+fWJGWHxnSXYpeFZ3OVI0Myo7bEBxCno2MlB+WlN8Z21JZXZfR0lzKTJUSD9lOWM2TUt7
O31FWVNPKz1UKilXP0pIUGZ7ZzA+TkAlRjQpPkBoYUlMYWBmawp6e0IhcHM1NW9JUTVBXlZ5I2s1
PDRkNDlJJEBePiMwaiRGYSYxQjZiT3c5P3x6ZHJRUHFgJTI7fjVBVVkrXio8P2QKej5HUnBwdVhK
aENWTnB3VjxNPHZmIUomPU82fUF2SFdOUCglLUdwVmdzT3k7Tys8PEBpOSl6YmJmKm5gdEBAaXds
CnpaQ0BqWkp5dW9hUyZZQz1sWmUqRiQ1fkw9K0teRWpRa0MobEFnT0l8O1hmITRVPVVVI2glKDZI
WXA0I1JXVHZASgp6ZW1xQUZqflNXI18mV3xBNUIwaDY+RTVRb2pqejBBY1FtazY7ZE0yUzRLWmwl
SzFaVF81PX47Zz5kbHNsZl9AbVgKenVLJno2UVopfVJPKjxQNFVjSV8lIV9ZbDVnU0FMZzBvKDA/
Ym1ZU0QkLXVtZF9KN3k3VDNxU0Vnd0pNV3FwWX07CnojZV5VYD84MTs2JilPQ0Qre0J2TjlzQ0N8
UDNzQT5gZzFwOzYldHwxeU1FZ3ZuczhPTil6TE83YnxUbns1dzI4Vgp6d2w5eXlFIXBlT0R8dDxu
ZSNZWncmJGRkWD1YaUtNWVV6TXtENkRoJFYtRzt2bSkocnF1bU17KGdgNGIjXzA2YTQKekpxTCtx
elVAQiMtY2tvSiM+emI9eiY4ZUY+VkZGKz9FblYpPVp0bXJGWCl+LT98UlBBKWJQQml7IWhDNCh5
UEFyCmopJG12VVhGXnkrenxCRFRmMVlxd2RIQ3l7enFHWS15byRUKmJMWVBSdiVJITEKCmxpdGVy
YWwgMzc2Mgp6Y21iX2VZZ2lLS3d4LT1RP1A8RTRuTU07JGVXdTJtI1BVJWAmQWVeTE92XjZnY3RK
M3ZNOCFsVUchYUN4USMwZUoKenE/eElxREppOTxmRnA+ZGkwK3cheWFDfF8xdXZBPnlheHp8aVgz
ZUI8THFhanBYYmxGelJVQmlee3d+JClfVUtwCnpwRHowRCo9NCM1MDA4VmM+diNIUjBBU21TVklL
TVMma2ZgQ1NBVjRnMERKTGdQa1JPNzl4aiVKPChoSDZgYlRHagp6cnJeJEplaUhKST87cyY8NXBS
dy1ea2p9PUU7WDBPWCtwZ3orZjVHVnQwTlF2X2didTA+LThKK0YkTz5IcFc/THgKeitZRk9gQ1Ym
NlZWOWZzRXdHI2pzMF8tfHYqIXVqWipNPWpmbzQ1Nz8wRG8tejxefSs4YkkrcWsrV34rJHp6JVom
Cno7TDcmQCZuc2BsOE9maCpXZDxDcF8+VTBwTyVSUF4/WGFfaDdJfTdLI300WHRgcyUtKG0tZW5h
UFdYPEg+JE8mLQp6WH5hMWFPem4/IXI/NXdKVkJOUEpfbzgtKDlGejxfYzFMWUd4VWwoRStXZHg/
d2tOSEgyVCVlV3E5S3owMGgjUkIKellLSX49YTw5X1FxQ15uPD5oeVdsUzY2d2FXZ3lBUCN0JlRm
VFdQPVN4YSl1a1JZJWo3V0h9KEByPUJeV187YiZNCnpSelBZc2Iqal5Lb3UlJWBLNlZQK2RLdFJA
eH5xRUhxNHJYTXhvWC1nY1NmJi0+bE1ZJVRNWEYhR3dfQSkodHA2fQp6MkEla04zdHdiciVLeVVy
cm13MjRWM2Qld3pLPC1xKE07TVRyNDF9dW5gUCEheGVqQURFdl9DSntDVGlmOTA3QiYKekVQYHBE
SklaSFZnbm14aCRFWm5CT1V4en5BcCtaektiRm1nMzlfbi0pJHdZIVFAaX41YUdtSGJONyYqZ2s8
SE5RCnohJC1zUykpNSgjP3FQVyQxQ14zIztjRnZRTVdUZClkKElfNGF3RV5aakdDJVhjblNHZXo+
cTl6V2dWfDIoWmh4bAp6b0RxSnAmTXhXKHFYI0NAb0Y4TCkqciRSZFNqVkZTYyQlej8qOSVZb1o2
c09aIXZ0eFh0Qk08KnI4MjxwN30/MUAKenZlUUkmdGlObXs7NTdqaXBRYk99Yj85bCpsNG5HQVQ0
WT0tdygpQCojSjE/JTJ7KW5ZXnt8Tk89eE0pcz9qUjY8CnppSiFmU09PUHMqJDgtPnZ5Q31fRWl6
MVBKMkwkYnR0a29gPStmSHtOZUBHI2xNRHhrS3RfeSlPKEo1JkFrKXctSQp6bm0hdnpZWDMka0xE
RyRoT3AtS0pnfjd9TTs3M0JGV0F7IWE2MWZlP05Ka2pSX31YdysqYE8wPUFHZzcmZFU8a1EKekE7
ZCUtek0qaXdTMnQ4WSlHdUBKSyZBKWZWPUhIdmJXYDZtVitFWnJ0SlNhdUFwTUNuZEJTfkY+QWBB
Pzlgd2hXCnpNe2ZrRmZgR2BQXjlqKnwtcTlLTHZTPDE5MXo5YV5tSzNMc3N9VzhPPXNafU4kVjRG
aCpTV0Y1TmJaUT5wezA+JAp6MHBlfWQkKnMheTxJNlBAMS1uJEdFPipSJk5TWGJqbWxkNns0WTtP
ODlNdURUSzBIbjBDP1FkTDl6MXFHZWdYcyEKejckTUlHa1Brd2RIRjJvcy1aLWU4NUI/NUFuPnlj
fG08fT4hSWlyZyVILTxOUSV3czB1SWk1MS1hNXBoRG1we2s1CnpEKHpqUEM7dH1Ae3cpKzAme2x+
RlMqPiVGMTFYWXt7PkBrZ0w+YSM2Zk05SnpCRSZhbiZGPmVXaHxiMF5rSjw/bgp6cz03V3l1WD1m
SWh2QWpUVFhgY31IVUgpYlRUSTtPSkdseUJ7KE5LJkc7SHRtbjZeP2M/VGFBc09WfXVCVXRBYT4K
ek5CTTUqbkNhfih4d25+ckd+PGNmUHAqdWI0VihXRilsR2JKcFMofE12QUE4M3lWfX05YmZidCg+
PkdTRzltejNoCno5Rn42NHl9Z2lJcnpebGZsfF81SHBVc0d9P1dwciomZj9iUz18OWJpcWl2Tikt
YX51PnVLPHtMZmNuZ3s2NjNRTAp6TFh6T0AqTjUpcTRDPWo2RThuQytQJWxFd0kjfjB3a3Q7TTRZ
OCErRFl6TjJyQnVZYW8xKkhSSWFeTkM5bkZlZXAKeituczUkWDlCaDQ4Uy1gc3MhayYhSiNEZGQ9
ajFPLTl9P2B2KEJ8PE0xQC1VMTh0K0pzO1pOSElrMyR1JFU7RXl1CnozZXh5R2lwVVFiTztTfEJ6
cChoWHsmIU5CQG9xKmdifWVeKTY4fTUjIWtIJEJoSzxANSF1YnVeWERhJmQxQyNAfAp6M3lZfSYo
flFWTENWZHYpeylJX0VDeEtzSWxtVzhMWiE7PXJ0azRaYVgheG0qPSpaKHxQK1VxZipSZzxJIVRh
dSYKejg1ezQ+PlI3d0Q5N0JWO25LfnF1VUh4Xm1qXkc2SzJHWjEqdVNOP2lMbSE3dkhCN18xXlRH
YktobW5LK0tgR1lBCnpvY3AyPW9uOEx4SkheYDdeMWNoMGZ0KE1UVSR2SkIhUkBnUV5SYHFvWD4o
PWlZI3UrKzNLPm9xU3BHPXs/I1lWdwp6cDNtOTlGWGtefjw2I1g5WDFvS1lYRUglOHQyYnRHNjUo
dTB6Ri1KKV4+OGRqMEV2Yys5X0JkXlkpazlBZld+RlYKeiVpRFYoQ2xTNilUQzdlVnpoe21sO3A0
Y3g4KSRUViZxaFJXcCtkcWl3PmkzMj8xOzVkPkhMck5qPV5PZEo8fUwpCnpXeHF3OGFGSTx+X1Rr
TURRSFM/YHorS1E/K3tBU295JX1SQnU2aTk/QlhiaCVPRXgxT3VafT9uKFZqclQoIUIxOwp6USEj
V0EwTkJ4PV42ckpyRlZzREN1VDQpT1RHPElrYXoqTzh0RlRaKVFMXmBxYll1KWpxKmtURD56WjMk
WjRZcXoKeiZjOSs3JWchJXp4dHYjcDJmaEhibzk4S0J3ZkU8ZTlaPFlyJXVSV2otNUhkM2hUWVk8
JnZlYGplOHk4UlYpa251CnpZQ1QwS2AqSnJSdjxueCVqQWY+JlkoJjIjPX1xRUVVYEVDRWpsQ3A9
WF5fdElvTXg+JWtCVDVrKV5jPXp5VjV3Mwp6Yz5ETEtZNiU9eTBpZ1dpOUJANGhCfWJSNkt8K2pZ
QnQrfWk2TGR8YmAqczYyYzZHZT96R1l2ZFcpPXA5MH4kQWQKenhHQj5jPDNEeX5oUEojdk5YaWVy
T2w0MXhCbl8wTDw1TmhLNkpPLUx2dFMmWnt4akdLZklDNio5JSo/dHYqPyshCnp2O1F7P21ITjJi
fDNERUpPfVI5dzExWlQ1UVZDKEgwdXwwbjljVktfQDJyJUM8KU9uWigzYVMwVXheNkckamEqPAp6
OVJ+b345WGpoUEwpd0B2WWk2cjtIJHRSPndXYDAtWiZRZWRgWDBMWlk5LX5tZnNvIUBkdD81UTtA
fEs2JG1BQiYKeiRKNDEmeSk8e047UUFUUGVVfUJDe2xNXzxENEhaQSlCKWktO2dKMXB3dXNxJGg+
QC1MbFEyaGpYO302fnFkZ2xUCnpHbSVxSm0qRl5pbj13Kj9qO0BDX1A8Zk51Uj5DTW5YSzVGZF53
WFYqKnBaT2RTMUtiU0pzQ35zI1I7dG1YSU1iYAp6SEI+c3g8ck5EbEA0Kyo+UWcmRTVZZkB9ZCN+
WjlENFJ7fVpwTG03Uz1iWTB4I2s8PUg/PVIrPVckPUJtMmFVKm4KeilxZ0QqMCM0PkdHbEhoUWBi
eCNrPU5qYzsrOURAe0Y1YHhJXnRNa0Jme1hJendCPWI5S2J1dUxGN2pNVFJ+TXd0CnpOIyEpOUo0
Jl5WQEpSZTlZIWIyITskckNMUFdaZkdgQztRemB1flRKZEN6di0+ZWA9Ujh1SFhfMntGcCZwV0oq
aAp6I0E2MCZiWShqKF5QQHRfYF9wa3RCVjd7dEZWb2VOV2xOQXx6Z05yJkRNakpfIWsyJTJzMn5G
QGxhJE02ayVoV2kKejd9fWhvRHVvYU43P2xjaFZrQDREdW5wRUlTJDcyJnV1RiZGOyY0dWhDJEwp
Nkl6SEhVcnlSOWVtenB4d3NSWG1qCnpmY31wSSNvUkNCN1kxO3Q9KjU4R3N2N3gzUEd1V15zcG42
ViZkV2YjPypUUTAofCpycj1FZUUxb355MTxxPVhiQgp6SDdNMW42IWZTRD9wbSN0blFxQ3Q+d3lR
aSUpZSpvWDZpWEAkbTBGMVI8anAyWDUhNHhZa0Y3Sis7YnRoQ3whXl8KemZHdHtgdmA1QCt2SF5t
b04lMF5lWHNxXmZ2fEQlXjRkMn55JT9ecT0tTnYrd1I+dEtVVDB2Z2chOF5mV2hZTHFTCnpGQEVP
cEZsZDc+Zl5rcHJifll3TXE9Xjw8cGFuNlMhKkhAZzd0fWVRSkxodVdlTEdUa1QyUCtDazMhVGUx
bGslKQp6dDlUQ3opb0MzPmV8Z3c/UUZ5Zjhja3xaQ14+KTNjYGIkXkM+akNCNEZuZV8xZSRDcXQ9
NFVkI0t+fjhOZmE5MVcKendrMTcmRD9YPzRGUnpSKzVxQ2lJcVBmMH07SzQkdFckfWx+QT91X0U9
SlNlOypmX0RPPnJ7ej1VNF88KWRZKU0hCno3TyNtaXpDK0dOJiM7KWspdmtCVTx0WG5xUF9efC10
R21aY1Q4RGx4dDZQbj9gdXlwQlhAMWZWck5lUFZkI0FMcAp6RjQkODArQEFHOzd4bDVXX3NFXnlO
WUVTJDxDNn1gWmIxJkpDWnh+bllFYmMlciMxZCVNbjBwZ1MkNVFsd0cob3QKeiFaYXs+U0BmWmVz
Ynt2P1l1RmxDUFJqc1Q1YnhCNEArc3FkcX14dnZCaFRuZ1ooTjFMVUNTLWVpPTVzZ0UtVGJjCno3
SEsrQV9PMjNNUEBzVW9jP0k/KlpCfEYpJiV1c3wyPG9SVTwkfkFwUSVmJVJVKmFFYFZtR3JCPEo0
aWVNQ2lyVgp6UF9+T1E7dHhyMldCZ1BRdEFiYXBSViZCb1VMY30/QH16KmdBQUpFRk5vKD8oaU9D
WmhxZSlXNzhlWipVdmFOQDcKemhLS0d2dDAhfShyakI7cWMwS14laHw1bjcoO3ZjK3VIeHxEZ0A9
Rn48STtzM1ZUXz1EI2hlJTVwMlNvT2x5PF93CnoqSEtyekBlajNXP1kreGQrUkpaOzlXWkNHRUdJ
e0VUWWc4aDY7PWR+T2lgPDdAVmZkRSZpVVBpPk8kI0c3ViQ2egp6cT5HJTYhY3U3T0VmK18jXkE9
MjNIZDZEYjkteUsqTlEjPFBHbnYzb3olR2wqSWIjI3FgZEIlTXZZPlMra2pKSTcKemhMaUx6ez56
S0t0SEg+SDtCLWNBTHpqYD5AKy1+P1gyYVA3eXBmOVdNZjhxMG0pd1MhTmtmKyZSJiZ6RWpGT1V4
CnpscV4+diNWQXF9PSk/ZEtSTWUrMDEwZzlPO3FBaWFUQTRkVis9PW13JWkzUmUpRHdaJFdkNUNL
MW00SXZ5JiZFZgp6TzhXIVNwY2dBPnpmVEdBRSF7SVBKTWhkWmBUNHtLIzduZERUOEsyJipqZj1K
OE8+SCppREp9Wkt9enwkQzNVNjIKeiRuWmhrNHYkUUlZek1hViswYEI4UyE9OVJTWXppKlFHI3Rw
PlpZfGxZX2B9QS16STcpKHRWJEI5Ry10QyN6dDhtCno8IU1ATVQ8NDM7d01ObXVvLWtTbVBtNVVR
Ym9ZN3VIKGAjKDdzbHB0Iz1CbkxfO3Q+cmV+cEQ3b0lGa21JQU09cwp6dytJaWxpJW5TQz95a3Mp
dH5xNGxUbFpXKCM1XnlVVkArXkt2SXVRelpET14qVEJ6ITxDdFFoMnJmTzx6PVRTe0gKenpJSCok
VjU2SDB7RW5DUl5YckchWkc3QWpENHJ9USh0Mmw5KFAmUVU2TTw0NDtOeENieTEyZ0UjfnQtemNv
M0ErCnJRcThLWjVlKmZLRWFPezBLZTBzflFteTZYaDVtJUZPIXdWfUNFJT5qI25YJSp1aVd8e3g5
cTB3CgpkaWZmIC0tZ2l0IGEvV2ViRHJpdmVyVGVzdHMvaW1wb3J0ZWQvc2VsZW5pdW0vY29tbW9u
L3NyYy93ZWIvY3NzL3VpLWxpZ2h0bmVzcy9pbWFnZXMvdWktYmdfaGlnaGxpZ2h0LXNvZnRfMTAw
X2VlZWVlZV8xeDEwMC5wbmcgYi9XZWJEcml2ZXJUZXN0cy9pbXBvcnRlZC9zZWxlbml1bS9jb21t
b24vc3JjL3dlYi9jc3MvdWktbGlnaHRuZXNzL2ltYWdlcy91aS1iZ19oaWdobGlnaHQtc29mdF8x
MDBfZWVlZWVlXzF4MTAwLnBuZwppbmRleCBmMTI3MzY3MmQyNTMyNjNiNzU2NGU5ZTIxZDY5ZDdk
OWQwYjMzN2Q5Li40Nzg2MmZlOTVhZDAyNDQ2YjAxMGIxNGJlNjhlYTFkNzM3NjZhYWU0IDEwMDY0
NApHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMzQyCnpjbWVBU0BOPyhvbEh5YHVWQnEhaWEwdnBe
ajZqP3MwMztaVXVIWEMqcSomNCZlSHxHWEh1aUo+Tm57MWA2X1AhSQp6ZD5JKDMpRUYyVlN7Tjk5
MGZpYn5GZmYhRkZmaERJVXxfSkMhTjRHMUZsU2V3NE4hdDkkPWx1S3w5X0Z5aEcmNjEKel83WUVE
U01+Pi1lN3M1PSk4NzQ1MVBhQUB4O1RiTlR1JVA2XjZaZlY0JnE8dEp2PCgkKSl2WlJ1T2hpR0tq
fXhfCnoqJDswRzR4OHQ8dCM2bXU3aUNsdmRII2NJQDU5ZUFaUmVHSXskR31gR2NeM0dwWj8+LWk3
KWtQaHVLeHp6TmdRVwp6TkhmfEtvPks5PkZLKnFAQ0krNHQzTk99bUUmd2BATEFBcytxOWk0O0It
SlhwQz4yT0M3I1NGdj1eOXctOGsmUnsKdThlMThnU1ElTDg4VVJVeWMkZDUjQz5uQ31RIT4qa2Fj
al8leXY3MzV6fkpmWD1kI1d6cCRQeTA3O2xzUwoKZGVsdGEgNzIKemNtY2J7Nmc1R0BpR3opU2Z4
JXJURGdqNi1kYiY3PE5LOCVzQCR2RVRkTm5wU3dsK25WS21ZJkJUVGQ0ZnRMdUV8CmIhb1Y8UGZ6
a3c0aj4mZ3tpV3hqenthbl5MQntUczVEK2Q+SgoKZGlmZiAtLWdpdCBhL1dlYkRyaXZlclRlc3Rz
L2ltcG9ydGVkL3NlbGVuaXVtL2NvbW1vbi9zcmMvd2ViL2Nzcy91aS1saWdodG5lc3MvaW1hZ2Vz
L3VpLWJnX2hpZ2hsaWdodC1zb2Z0Xzc1X2ZmZTQ1Y18xeDEwMC5wbmcgYi9XZWJEcml2ZXJUZXN0
cy9pbXBvcnRlZC9zZWxlbml1bS9jb21tb24vc3JjL3dlYi9jc3MvdWktbGlnaHRuZXNzL2ltYWdl
cy91aS1iZ19oaWdobGlnaHQtc29mdF83NV9mZmU0NWNfMXgxMDAucG5nCmluZGV4IDM1OTM5N2Fj
ZmZkZDg0YmQxMDJmMGU4YTk1MWM5ZDc0NGYyNzhkYjUuLjlkZDRkMDE2OTQyYzdlNjgxM2E3NDA5
MjY3Y2U4ZjYzM2Y5MTdiODggMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAzODYKemNt
ZUFTQE4/KG9sSHlgdVZCcSFpYTB2cF5qNmo/c3p5dV5gKyFISlRRWWA2P3pLI3FHOH5lSGNCKGVo
ZTNkdFRwCnp6Nj1haVk3N2h3RWVzNjVmSTx4fjcjSzxvNyNMbjlGZmRyblV8PGswbjZvUjsxfU1S
bjxuOFlBOX1HQW56VFd8Zwp6dSRPckh5MFNtdTxsfE4xbkQqfGNCMmNLISk1UzRGPE5WVkpoRnBn
TjFZRzJVcXF4bUJga3MzdmRxJU9TVzY3MygKek9TfSh3ZUduM3BhfSF1fEhjaUxRRkBIaEEqOXo7
K0l5JkV5aT89WDU9cjMzLXg/fSQyMkQ/a2ByR1d8ZSpKcjlPCnpuOTBeU1RZfmpVdTt6IWxSVj9T
V0B3e0c5NnZsUEsqOGx6OXI4a2MjNmlEQ0JTJHlFOVJqZGZweHpBQSN5N30rXwp6enZUYXpfMVJQ
ViZjYVBLUWF+NH1tYmdaZ3EkSE40U3x0fnkweDFSfjE0QT1pMTR+XilsTXE4PURgT0tZMH1FWFAK
bEFaWlpxbEQ3anpMdkRVYlc/Q2d+NFNKSC1TYiFRQkpZREA8KTtUM0swUlNkaWcwdWh0CgpkZWx0
YSAxMTIKemNtVi0kMEZWRUkxQXpnTTctPEx3MDAwMC1FTHZheTAwMmx5TF90Ji1tRFB7STM0bE5s
MTFJVWY0ZzBmei1IaXxSCnpxaEkwaEdjWFZhTGlRfk5fent4QVdVdl5WRz9wNVp4fDlAIyFhVExH
YzwpNXRzV1Z5XzI1YjQ+azh1RHBHQSN1ZgpTJG8ybUswMDAwPE1OVU1uTFNUYTd0U2JRawoKZGlm
ZiAtLWdpdCBhL1dlYkRyaXZlclRlc3RzL2ltcG9ydGVkL3NlbGVuaXVtL2NvbW1vbi9zcmMvd2Vi
L2Nzcy91aS1saWdodG5lc3MvaW1hZ2VzL3VpLWljb25zXzIyMjIyMl8yNTZ4MjQwLnBuZyBiL1dl
YkRyaXZlclRlc3RzL2ltcG9ydGVkL3NlbGVuaXVtL2NvbW1vbi9zcmMvd2ViL2Nzcy91aS1saWdo
dG5lc3MvaW1hZ2VzL3VpLWljb25zXzIyMjIyMl8yNTZ4MjQwLnBuZwppbmRleCBiMjczZmYxMTFk
MjE5YzliOWE4Yjk2ZDU3NjgzZDAwNzVmYjc4NzFhLi5mMTg0NDAwZGI1ZGE0NDFhNzY2Njc2MjVj
NzQ1NjdkMjIwMjA4ZTNlIDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgNzAyNQp6Y21a
e0piekReNnhBdksjeUdGV0c1UWQ/VlpscF4+MGNxKCpYJjN8cTFmKmRRMU8jY01xO214NmwjcX40
PkZ4bjgKei19fTRvZWVkcyRmNmhNWj85Y1ByZCMlMHArUnU0Kmwod2NhMFdMS3owMDBDayZsR2U0
MFFCJCo5QWN3Q0pRY0clCnpXRjh1SFRVaVpSMEh9KD9Mcz8pdipvOz1zYlR0NkxqfnhLdVZFfU9i
QENwN0cwTiVnPVZBfnUzIzFIXkw7ZztFPwp6Qmt8QXl3cDNHQTBHTmFLRVBwPihTWTlkYGlkYyk3
QVk4VWJAbUN5KjA2X2cqTU0zdHQmK09pMz1YZkBLLT0xSXMKelJ0T1dmOVgyQyhHZ31IYWB9X1dW
bmZ3NWlsd2AkeU0yV19QTjhmemFKQjI+TlUpYklKOztYT1U2WEFFdk1hak5tCno2PjclbCZVSldJ
dChHakstO2Y2O0A4JSkpSHB+a3tENDNKNGxtfHEqLV5NZWlkUCR3YFlATilgVWt0WWoxbTVYMgp6
VW5+Ui1LTWxOPXhSKXh0a3I/c1NiaTwrNz07alA5aHhlRS08QllvYmZGdGU1I159QStldkBWYXpC
TW52c2g8PT0KelVYaHN9VVQ5QGhkSk1DZlE7NlpSdkp1QDtgKHF+bjgteV9SZC1ja0I+MSZpbHo8
SGY7P0F9fXlYe284fipTbUVECnp4RkF0UG48MFRpaEYxKH1EeH5gQ25Fa0BTY2NLcHUxUjZse2dG
P1FuaUF7LW1WVVBMMypHUTlZV0ZtO2FadUdIbQp6YVRGeT5IeDc3aClfKWMrZCpNQm09c2VaJUc1
K2pmb1k2LUd7LWFVPjNickR9cWI5MVl7Xk5xXj51VGp3Qmx1TUIKeiNzb3EobnRRIzdVZE8mWFRj
fURpWnhiMU1CWFNZKXFPVUlLd2RvZkwmPiVMfWZ9bkZNN3VsYyRJQF5FRkpvM1N4CnoqMVZ4SENF
V19URVB4Oyk4Xj1qaDB6XiV5MSVLYTNtYX18X1p1ajVqNEkxUXh1PDZiKmhXYCQ1cCQ3P0Rzc0gm
KQp6V0cpcUlEKXxObCtUQSFUK05iJXp4e2Q8UGFocT9qUGR1P3AraH0mMjVrQzgpWVFgMD90K29o
VDBJSD5CJn5LZjUKejY4bylQI3xOQW5PO0k1QVQ3bTVPdGk+MUBSUXpnPW5EYGQtZHtMMkd7MHpK
O2N6IWU5I2VucD5aPUJUNyR7eVd6CnoqNHxMeDBxZSlldldNPGUtaz4zUlpGWWhhcEltSTFxaFQo
SnpQU1pxbiUpYiY3cl8jdDRQcXwod157I2hDcTltMgp6bnVkSWw3ZSY2ZnlZfGVfLXdBJSV4KktS
OENpfFBRPTY2bUxYSyQ3I1U8ZjR5RjtQMC1MWFNXbHhRVyQ4ZXVUIWkKekVSJEg+eTFRI2RwWkBJ
T24mX3RWYGhTUT16UCQ/UiNRMXhITU0kdmJmJUUwWl5yfig8bDk1YiQ7NEAzWXZAdFJ1Cnp7NTNj
e2I8VnN3RCpTcGcwKzw/QF40KiFIO3J1SSQjWCF4SVBeVkwpTnpmdGFvcyt5VlFaQTxFO2xIJipP
dWU+SQp6e2s+RlI1JWNPTHJ1STEjJSZXb1Fzbn0ldCNVOCE0cDM5UFVsWnFeSy1NfD8lJmh1QmR1
OWJrKkgrPjNPN1ZXOCQKenBQSnEqQk9XP3JHdT5vVjUxb0NCSDhaP19PI0lAfStZZiklPHB9eXUw
VCl4LSoxfGJ0Um9hI3o5aHchXmopQldrCnpkOyE7QlhOQG9MZF96KHIkPEI/Xml7U1VrKXN3WHxm
ZT9aUzR3PXE+PC1IKjdLZV9OPFdATk57bDZpNHhzM2c2UQp6XnpzLU9POCgyPyVFPlgkYlZMYEkz
WH5ZRzE2Xkp5Nl9QcDd7PkUpUUgyKUZfYVM7Q0FVOH1iRmFXfWF5YDtLfXgKeiNoOChNZj5mS0FQ
PjZUZ3RJRHFhUUlEVDgkbj1IRjdwQnVRWiU1R2wpN2tMIytDQU9JP0B1YnZXWEA2eCliUEJ6CnpA
LTNqdDZWN1V0Wn0xZjZDRzI7Rk1wTFlhbVIlfHVqYjszNXlKUVRVd2Q0UGdyYHE9R2VBQmBZUGFN
THVgdXN5SQp6ZW10MkM/dklBZmNIQV9Ib0N8fCkpPnJJSldpT2B3UTNDdkY1UmRGUTtPUjJkO0FE
VGlVaDEzPWVheVduVSFhbEAKekRVSHBGY1YhRnUqLVl4VGk7dldqTktFS3RrelJNS2gxWE9fMH10
fSVBMm5AX01neGc9S21qSChnU21RfFlrQjR0CnpzZk51T0A2aTV2ekhaMjhjKT00UkQwO2pSKWJ0
JlZgbklXTmVYRHlabkB0MkQ7JDFSSSZEPGVAYEAzKU5jZ3l5VQp6OCVeaj1iNF99R2FhKGNoRXRM
IW8wfFI0Ui1KNzFUMVgleTxHYzYyfXt+MiF8QElUPmk/UGVVQmQ4Qj1jUnIkbFoKeiFsVXVAdCVr
cE15SDVNdDVTd2NNLWc0NyhFWjdmZ0tKUm9rYj8mIyN3QigzdzlkR3YoVXRiP3soPm4qbE5AI29X
CnpEVHBacHlXZW50ZSRPej1YXj1PenRuUXxNTT9uQz17a0Nve01BLURNWG41QkNyM0FIQCU2eF5G
TW90anM9dTxreAp6cDhtfEpjOSVVPGxqcDlCLVpkcEFRK1p1bSZRRzA1VTtUJEBJPzx+X0Y3U0Zr
UnFoaGJidXFDJVA3cTBHO3Q4cWEKelRffnJRPi1lZjxPdGshfW5vfGkkJjlWYkplJjR+Unw5eXx1
VCVfKGQ5YktwaVFTTHN8UGM4aXEzdipwMTArRnBmCnpAa001fDtNOCV8VnpJLWIoNzN0UTJfeFph
djw5UF95PUE3cy1UPUA5XndDRGEycXNnWVJ8MmJ6dyhjaF9veWppKwp6eXhQV1NeM0dXTW1mVncp
PTtzfk4rWihrO1hSX24jT3Ioez5VVXRibFV7XndOSzAodXltcD98KEtpREN6QnwrM2cKenw2YXND
RjA7cnVIazhAVyY/JGwmV353I1ZHZSVXUClQQ2hRdnNZTSNlaGheUEtCajshdXd7Qjc/UDlPSlJH
eTlUCno3bkQrME9MYnotZj81YV96ekV5b3EzYHAzcnRgVV9VdTYpUSR0Nj8haWwrQj1wSz9xNHZJ
OSFWcEd6KkBHJmw+agp6fDQxTl8hTX1qQWUyPl9YRTVKZ3B4OzlNUzxvRGp3blFIR1N2ZTxMLWN6
YnJHODI4U1MoYEF7M0lecmshUWVEJTAKeip2fjFZIW48NXYlX0BxalRWYzhzd2wxJShMeWBqMVZW
ZHczSDZ3VWcwclAxJno2JjlWVXR1K0toIT5QPG58aWlgCnpCTkJibCshIzN9T1VAJilYbmhUXm9T
WDhSKVRmTzB2RVlWe2NgOF85OHpgPys/Mk1PSTl1dnI8KlRjKUEtYm5lQAp6QHVhSUN8OVU9KTBr
JnR2QHZ0P05MX14kMHtYOFYwPWxwcEtjRko7S3VPRGE8ZV5LXztybnlCNF5KNVB3X2lGWmEKejNa
LXhhQHZaejxXaXl6UWMqT08tWiFCTHg5U3xvSnt5JDB1TyUkTkZyUVo0NnRpTF5NP2BTYztSY3Vt
TDBlO282CnpZPi19SUdHO310KT10MVFnMXJFP05mR1QqelliSk5fYih4cmdmOUQqWkA/bE5LVyhO
ITVZQGtmeXQoSlVKJmt6Zgp6R0p0ZE89eCkmVlN1SkQ7RWxpQHI2RkMjSk5vcmVSZVg/fkZJRzRq
SW1jYzY0dEomR2wrPDF6T0N5fVBkI0M7NjwKejslPHcoUm9HWT9XPldVMDxaYmZ8MmE0WGR7bUBf
QlArJFB0NFdaSzNMRT87OEdfcXt6R0piJXZ7e3M8TU97aV96CnpxYU5wTTQrQV5fMmBIO3MteTxt
NThsfHoma1V3IVUxZTsyd294Izlsck1ganIha0FVWThpIUtOcmk7eXpYJmo3RQp6a3A4UURhZ3ly
MFFyS2Jfd2FYQHEjUitxdnFtYiRzQHNjUnVUR1lfLW1eRlFqRnE3PkhAKWBgYHE/WnZVTmlKJEwK
elJ3cko0eTdYOWpMKyQ7eFluLSZWZ1BzJXIrTi1zdkElTm04blI/JCVTUjN3PSE4MTxTKDY/fVVD
UCRlLWQ2JClfCnooO05NTUZ7aDBIQFVZOy1AZHlGR0NsUjd8bDEzWnJnS29iTHg2WnhvclMrWWdG
eGhsMSM0VlhZJkhnNz5DZTVFPwp6eG9+TiVGZitibj5GKVpOJkVVakE+eXxoVUhuMjQkVWk9PldU
U3VXdV45N0JnU2Y4fHFoI05+JUtaKmxSO2p3Nj0KekV8N0YqWXxPZ2RvLUxxJitufFkySSRgIzYy
UDdJa1JsXys5OGtOWUlfSmZDa0U4e3E3P1pLbGBZbzskUXhoPWBFCno8SnRxQ0Z8fGUjIXRtNmBF
RnVLYUF3MCRVWTNafGh0a2IjeUF2PDVLNjBWNm5GYntSJEtCSyVBYz0zfkZFbEFIWQp6ODxnJn52
cUl2R0FKRCpSZkohcHlJS2pQd2owZ30oXmQlUCUhQioyNmBFQ3NxR1FMUit5MEN9bjtpUnZyaHN5
VH0KeilebnhRMndpQUo+YGp9aTltISZWeEBXTDwqVVZBMExPbHdzTUsxVj5TQWhqV0JsQWFfayNl
dGhLK081ZDViZjZZCno4YU4qTXlwQGZJI1NZOH0pfjFtenJxQHJ0JE5UZGxDaF5mb1VPUlhsTUt+
NXstKzFqdEFpKGlAP05Qdlo8QUZ5Wgp6T1g8RDQ2Ym1aUlZ4TSRLNT9RayVSMXJnKSRpI0tTRSZN
QnBhZzczekBDd0FEM1dAVz1ITUk1YjRjK20peDheUXoKemVPaFY2N2Z6M1pmcXE3bUIjbmR8WnA8
QlFhPWxyN0wtSjFVd3Z9NzUhK2RiekFyVlcwNSFnJDcjNz9abmFBa350CnptRyVFUlJWJTl3Nl42
NXgoR3Zpa2kwflB8aFRXRX1fbmk1UGZudjQ7c2YpKihJTnxOTnd3KXBHUTFGISZVJnBJYAp6c2F7
YXFZeGBfWGk9WiN+M3NtPiVSWSkqaVVtVktPSlFfTlZqT2g+d1BQeW43KDJoSEx3OXdseW1VI21m
NCsoOGEKemMhSnlnKGs9S3ghfEJISStUSkI5UEFQeEJ0bnp8UkokTnRxeE9zTHBrRSg1XnR2NSoh
UkxPe0YyOHIhakJ0djFVCnpeX09qJChOTVF8TV5VN3ZjNnFpPilEVXZPI0t+P3grPXQmanB7RyQ9
Mzt5Z2pLfWUlT3JXZEx2PT1SNk5xOSpHdwp6eCtSWUhTYz17dnE5Q044QTtxX3dFI3A8KWRXcWtP
ZSVqdWpgez9MUGxGYndUNDU0VChqeEF6UipwRCY7TGRyRVEKeiZxTks+TjhLI0pkdUV0SEgzciQl
a0JQYWdHPX0oP0wjIyQ2X2REUDI3aSp4VnNDTEIjK0QhR3JWVkVoV3dweCUlCnorTl81VTkmZEhP
JlBQdUsxREJwVVUqfkk9ckZFJTZ2XkhjbzNWdzE0cUJ6UEcpKSEyWnZRSzgyb3hzUmtpfk1icAp6
RyM2OzR4PllwbCgxaFhQOzJMZkFNaWhNTHZjejRFazwrRUIxaCk7RklpKUpfUmROKWJ3N0BXaVpE
I219KEZMUzAKenR+JDJwRXQ/Mjs7b25kbUx8LXEqcU1vJD4ydE0zRjtaMVI+YjF8VGkrN3t5fC1Z
R258a3VoRUY5YEokflZ3TzJACnpQfDNqfntnUFJ7UCRIVnpATXhxKF41VFhESCFZUDIlQHxJJWhX
YlZkSGM/cW9Da2I0YnJGYjtnNXNlYmphP2RPQAp6TzhGWGZUXlBHYk5OfDRtT0hkLVYxantjfjxV
fSRrX1RWVUVNcWN9YXV5QGsqNEZ7dzxUUm4oTlRCUF44RWtINmUKek98IWhpX1EkMmhPezByYGct
KSl0TWMpNmVnV3l2encpKzA3VENHe149RWV9Qm9fJCg9YWUxWitpSD80a2oxWDNsCno7Jndgfm9S
QVZieHsqJTVeazUta2pab154OSpRVVgoVjcpMG4/alBkc2Mqc0VOfWt6ITB9RV47elRQKXVYO0Zq
bwp6aWRTSChxaU02bGJ1U0xNYXE9QmBwU0hIdFBraSUrbzF9VTtkUHpPfW0hTXEyQ3IwTUFpKTV7
MWs/el5hMWd0UW4KenZwKT1aMD1QdkIhMlomek02VkRNdkByNUhLclM4JT50O2JFUzZNRHQjdXgz
SHdzOH1abDgpdThRVGspPEBhaDtnCno2YHkxO1pfSEk+PGxrOW03T2Z0MVByPUlMR2xEdnktPiRh
QEQ4Nm1TVyFCXz0zezBNfFFBNlY5PC1DeCY3bSM5Kgp6ekEpP0R5aD47OEJKNEtlLWdxTn5yOFIt
YkkoIV5UbkN4QHVzVnUwVjB5KHtWcHMpMjl8MytnNDxBOCkycWNoRU0KejZeJXYpJiZRa0c+JVlH
SXA8ajN9MGIoRCtFVmByQ202VmIodC0mNSZmMm15YWlvaCYoQCY0aSY8a0lvSEdXI3xsCnpFWTN9
WUE8YVlTK2xkPSRoa0wyKWxERmZQbHlXYzZvTHVrYl5wa2F3aD5GTDQwKzNyTz5xZWUlK0FaMVNw
NTlregp6OUVmJHdJUGpGYXBUbGBGVWUjVlQhUkBpMW5SJCRnbV4hUSFAalBsY0FiRjQwQkJPeDNG
S3FYMEU8IUBAXjdyWUQKek58eWQkSVFARD9qRFFMVVI1X0VkS0JGXmY9Qjlpcy1ZTHNwS1lWMURU
bz03S1ohbV49Jjk+SkxzX1phNEpvd31MCno1JSY+Xj1CQj49YH5iYHhBRj1NeTRkO3NqbHhIeFYp
RnkrVT52VVdsNzVlI1pwUC1uZkxCa3ZPJDtZbDlYc2F6IQp6d09lVGk5MkdIfXl6PFkjWFh5PW9F
eWROWkFIXmx3WTxhdiE1NnhYI1ojPnw/THU4e0o+VXVDcnFmNmtAVEZAdzgKeiQhKTI1RjZ3cUM4
XyVmWk5BNWFWSDZIam4jcCExaW5icX54YD1uSjctVmJPMm1wQkpIJnhyVW12MV9jKDJGOUNNCno4
bHtDXjNvaG5lantwS3J3cVlkcyVDZ2FQTlFuZHMhfW18O3lrKmk8Z3VrYW1IO1NINmt4cFNNWjct
SWBLcF5DOAp6YFUyO081PDdYMHdpXnFiOEVOTntgQ0cwdFo7YjRTNl9jQ3FuUyZTfFBnJlE0I3Al
cTZqN01pcWgyNSk5Zz1gdWcKei12JkAjcUE3bDhNYHh6IzdFUEdmUWgyOEg8bXg7ZjlFNlJeKVNE
U31tTFI3YUtBPD97RCh1bXk/QHpecm5vO1VDCnpKZTVjdmo7fGpwJkMrUWpeQTJYYj41QUdtPGFC
IXstR0FHWmMwKnVtTld6VTlPRn1AO2s7M0dyNnQyQE8rSEo7NQp6T1ZudVFodUtSTDlkfSRqSFVq
dUZvcCVgWno3KE1XdnBAWjhjKlRCRlI7fkR9PnZoUVFOdjVlMldxcjxmOW9hOFIKeiM1JGVJVDZY
PkVxcHRIcCVzcXdzTEZ0YDtYIUZxZlp8WFprb3Vjb3AmcE5yNGViSWVseztKNCM8QzwrYVdfRTM8
CnpkWTlSJiFEQnJ8QldeP15ybj5Ha3N4O2lXZUs4d28makBOJF5rKGBFPmNJWDw1TUx8cD9qd353
bVppI2VqRiFRIQp6RCVaMDkxeXwyJXY1c0ljMXNCUmJTTFAqSSp4LT88PkRudH5pJXFQTG0mZ3Fz
PUxYd0o0UF9rOWI4Z09kdHI7e0UKek8tUWNWS0IkXmxYTFdiSUUrODReamhfZy11SzhPKWNkekNJ
SDUhXjZuY3RvKi1DPlk0WXcyZ0dDS1ozfXZ7RCR9CnpHSnB+dnNWWn5NazdxUkh0PD9HO2NZWlZZ
Nlk0dlQoKSR2WlpnfE5YM0U/Yj1ONHdAK3JTUzF8cVpodz92TlNHewp6biskYSR6diEtVWFGNDg0
ZmVncWkhZHJ8cEtZdyV0S1FRej4tI1VOQF5rNHMqSTtfWVI7YThXRTBwZyMoLVU/c2YKekg/N2RP
aEZsVX54fC1reVdEazd4R0UzYShWT1ZKbUVwSmZ7VD1SIUZIJGRRT2ppdkcxUzxpMjBAYU8lTFRh
b1NeCnpxTHl7SV9oYzgwWmBEPjBYUEVPRykkVHF7QHcka3tiSTlPUCtDWEx8RWBARGdQNSMxTDMz
a1kmMypON3FEOUxsMQp6aEtEeUNRUGY7SGFYS0J4dU5GN0lGSXkzQFlwWmF5bVBlWS1KKnlNa2Ij
V28zUiFUQSF2d1lBO3h7TiF3NlV2ZXYKemFreC1+SngodX4yezhWRShjS1ZAKXNVSlkka3VAMlJk
MmY3QiZQKG9Mb3UrdUctczItaWxsSUhjI3BPXzV5bD0jCnpUenJwVUh1Mnl2c0RGOTtjM3B2ISsh
eVhoQ0k3OWgrMHc4PXlpdnV0QmRQfD01Z25Bc2x0VUpHS1JeQllqZVZFUwp6Qn1PJmtpcHdqKzVP
VTwxc0EqT2hXR0kyZUM4R1NnVnY5KlprOz1KKiZMSWo0b0sxQkFwODNJQnMxJF53OFpIMX4KejF4
S0lnWGN+ZHFva3s2U2BYIShKdCZOe2J6UE9Rb0BMZDx6YiRafT9wNE85LWw4PGs+TT1uRHd0JFl4
WHgxUT9XCnpfcWlMKkszKnt7KVp4bWhpJDZhKlpFQ3ZrfEQwX0BzXm5fYjQjenVEPU89ViRkbW1F
WlpyUzJGaigkJShsPyt8VAp6YlVIeG8kJiZ3UCp2UkgrakpHfkk/ak16aWh2MEtFZ0p9KTwjVEpL
bmVuRnE1JkUpcnZUZzE3ZWdzO2VeanxzN2EKelN3U1lTZnJBM3F5Tkpzc19udyY4bX5LKn1tMylV
VzhxTlEkSjI4dFhXeXRoNkBFT19ta30rQ09UN3RMZFE7OT02CnoxU0c3SXk8XiZOPX1Je3xuP2s0
Mm9HanV9Jj5nSlQ/Q3NWNVIjRj5OaTxQTkROVm1MWW40fXEjenZrdXkrNTA5UQp6O0ZpTm92WVcz
PlRSIzI5Xyl6dFpoMVRsRFE/fUFMYzNSdmt4ZXVQI0k7JDhtNXlIbH5vOzBjdD5fPihFaXQ2dWkK
enZ8LU5USCtoYW5wKm54Xlh7P3BCSDMwMWNRNDFEO2IobFVePWtaTX5eJUVqQjk1THxVbFczYiR4
aF9CWkJCT3Z0CnolYFpYTjY1V3xVTnxvY1IySl5TRzJaWGVkQ0lNYmdKWlV7MiVWSFZkKSY2Knw5
ZitPfEI7Zll7U3hYR3lGLVQ4Mwp6cEY9UjNmN0V9ZVprT2ArP003NVRFM0F0P0B+ZFplaT82LWl2
KnZPfUxRcXFjd0F6PE45ckhfentXVFdyNXc3KzgKejludmRHKj5nTytPZyV5dDY5PnRWS0twclkp
M24ybHJUM2o5PSkoVn1wcjhtd3s5Zj5MbENlZyZKMGI9KWtDLSZkCnpaaE1FJV48eVdqT3FyUXZx
RnR6aVBJYTQ5KnxoazNtPStZTEVPSHl7O3c3fnMoU3l1bSpYZ05RJHord015WSpVOQp6O3d3Q2F6
Vk9wfWdwdUZPU1lvciYkUHp3KGlRPlVqLUwwUks0fit6UG5wISVwa2NPZmk9K1l8XlVET04ycVch
SU4KekJWNUxVR3pnYHc9THJ0VkR7azh2cUo4WH5TI052d0M0VDVQIWduMDUkbjNkO1FVYnl7a0U5
Xy1PX0dwRUN5Kmd7Cno1bzVeI1hkN3M1KEE3TztPJXYhMk03bEh1Slhac1JwbERGXkM5dE1XblBT
WWwwVFUhQSgoeXhtNjVlV1g4bU5NXgp6emE4Kz07fEAqPVpneTkhIWl2bjwyUEchPU8hdCUyKj5e
SVBgVUNFUE40RUxVbVVhJiFmPCMtbWUlO3NUMHQhayEKek8hdWY1PFZsUkRxI14mUzQqPUZRQ2ts
RV5iN3M4JU1PRkBPUns9TT9ndG1BMjdKMXxNd3R6T15sS3B8QDlrSmBNCnorTXxSOztlRCtZUVE1
YEsxS3wlTnI0YS1SMz1lOWwqMSYoT1g4K0tBRHY7OStYZC0zZ0lRSUQrTDA0UHdaUio5JQp6SDZ+
OSo8UWZtTWp6UHc+ayFSNFBlZl9xck8/S2VQPmNrWGl1Q3EzQWplbUlrKlFMTWQ2JjxSV0g1a3Zm
RmxwJDIKeiE5d2g/ZHp0U3koPT1LJmooRm03MUQ/Km1lRVQ5cDhuI3hTViNmVzI7bVVjK3dZMkB8
SiZ1TE5DdXFBJFJ6PilBCnppQ1FpdG1qTkNBRVYtKCVAb2g4dXUzVzJGZ1VjMjRZSHopPyE9aWJF
TlNoYWlyLW1aKiU8bng4MSRIT3Ulc2Z1QAp6PTlJSnk/QUNEQDR7QioxMlhDJFFIRHR2MFktOWN3
aWY9ezl5IWNjSy1kKWVZKFFYZlhjal9iTFRmT1N+Xik4RWUKenNwZVg3P2VPTFB7VzExOCQjK3km
Pndvb0NkbipGVTV+YU8qOVItcGs/Yyg+PS1AMCg8MSM2QSZGcXdsY2Z5b0g/CnohIy0+YV4xenZG
YT9gdFZrJk9Ibkc0P3JfdztwZiVLJGVKRDVgRmRAJWBKJStXRUlvM2N6bGV+b2NeLSVIejlMXgp6
ejJ+dHFDJmRuZnMmWTB0dEZaNm54a0A+MjhGI3llY0tkWjE4d3RyJHlta25CMVo0NX1hc01CQ3c3
U3xXZEhFcFkKenQxaTsoZ3ZHYkZiPU1pazZycU1HRFFJJD02Plp5emtzQmFgaE0wTj8+cDxoQCEw
bXA5XzRAcHcjfCRmPmpfZH4pCnpYOU89X3BePD09NyhfJCQ4YnFjMUF7Rm57cEJXbjdVMVNieTYr
aWp3P0VAPiFzKlY1R1YmV2VWa0djNmNuKllDfgp6KTNzUkh7ZnQ3USFucilLZzUlUCY+JUJfO0g+
UW19cXE2a2k/Yyk4KStBdSRGN3d1K3JCOUowQDhzZFpLUlByVXcKemxFdW1aem99ez0zd3p7ek9I
VTJLZnF8N1VLRWY9TWx9V0Atdkg4VCs1eUFuV1g4Q1lzbTBvJHx2dkEjP2F+cWBGCnpeWDxaNS17
aTJNMG1RT0B8QWl8a1AkdkJye044azUybFc0dSErLU9GV2BwRjREMlE+aWdSXis3S2cxV2VPKklj
Qwp6NSg2RTElbklQJDVCQ0pyYjxOX3NfczJQPGpVPGV1PTI2ekJpO05ieyY4XnF8KmktYjNVd0xr
eUx9KntAdkZLSzAKenlecCVTNl9DK2xeaDQqVjhjYU4xej1mfU93MGpgbHMtX2VMcnxHb3FXYHEx
TjVgWTRGYkhrRVBZaTNWTDJjSWRnCnpgUH1XOVQkUEx8cDU0Z2lVPWRHWXt3Nng1PU8ycGtfPk9y
c2whSVdlMi0ycih4eE45Vz15UmxZWkBpUUJme2x9Zwp6XkMwaUhjb0B4fS1mX3QxMmlAYjNxRDlL
ZldaMkJnJm9zVndGRW00KTdDb3F7SW08QHY1QXN5aihtbHV6QGV7U0UKemRHUE14JThBV08oYTZp
JSFwbGE/JUVSV04wcis4aiFhVDYySmJaJUJgMkByU197OVhDXjF1WWVVQCpVMih4UUlACnpJSjtX
Z3p4TXFIQWpBV0UhMDxpaWdOWEA8aTFHOU4zLURPaHJSNCFZXzBJQDt1Q0tra0VqKC1oUyEtOEk4
JTdtcApjM3RKbXE4dytiK19kYzZ7PyFmPlJNTk5mcklyRGVfMGFFY2lBXi1wWQoKbGl0ZXJhbCA0
MzY5CnpjbWReP2A4TzIpX3MzXnBoT3JHfVVuZmlVRW44KDlRVzE/TU5reFhWREVwRmluMnt4V3JM
eDVrQkM7a35HbTxxUwp6bENqTDdpOFJLfVV+SiNzQDZZJTFTOX43bGI/JHhMVSt5e2dvX28qaGBB
Vj1zcFhZKiEhVDxtT214Wn5SOVJMOVEKemRqK2hyZiZXXlAjZjlDIVpwcF5WezthSUQ/RWxWTD9S
ZG9od3tVY3o5cl9ZTDc9RDY8JjhGPlBtWVRHXkZYfWMlCnpsPHpBaShtPkdFe0RTMVE7fkk3PHZE
KSRZaihmZD4tNnplJlROQCtGLXhzSTZzZCVTd0sjKk81S3xwRFJacUV5PAp6SmcwTmQ4RkAhT3hx
RWxtYH5VI3BpTTIyQHVAOEI8PGVjSSpTPGVnVUg3fWNzZDghKWpMQkQyc2BwKDh2Ji0tS0UKejcx
XnE5TWdsRnl3a1N0XzVGQ3IyRiVvJlVSKDVqNy1PPm1veUtFJWN0YEIoanlzeEsrMW0/RylVeUlG
czF0MH1MCnplbUdSJj9qR2FNMVlRYmxqP3YmQDBpWFMjZmktVmJSOXpMRW5ITFA/eFF8PSVJaHJj
N155UFdSIXRXJHlIIXpydwp6I0kyfV8hSm5UXihxaylWZ0pyYE5HZFB0VF5kbVFJWmMlPTZuVEF5
SkRYayteM313VU9pbEp1d3E+cz1UXyE5VikKenIxKURUNlZRMn5yZ2RAIUpscnRlM319bX5qfWp1
Q1NgSjQoZC01K2UtM0BFenpUSk5DRTJ6KXcoa0o5MHoqUUUpCnpCdG5WQDRtTT5qVHJaWiokMDFT
bkdvdjAmPUEtSnJYNUdlJVBjZTFWan09NVlRcUJEXldAbjRLbUZ4eHBGS2B1SAp6UDsoeEtWKzZW
SjJ8Zys/X0xjdDdgdUVsTDwmanpHUzhHZnZhMis9OEFAI1YreHNBajl8RGtnKXZMNXloWEB+Qj0K
ek4yS1pTQVVEJVFIYHg+SCtAT3UoRDF+UHl2IzBuYyYkITFrST9JTzAxeXczakQwQDgwcXZjP1Qq
TnI4Py0lckM4CnpANSR8V1k/SHFwYGl4bUVremVKVHpfYF88IW9FMGRzT2BwbzE9JGlfMWs8VW1f
fWNhTVpjcnBxQSp4LX1SdyhmWAp6M1F5aDg7LTReRmUpVUlDSUBheXpteVY/NDhHYlI7MSpzPndz
U1JpMSVaaXZkYCMrVHtBaWI2LXJmJH1NOHN6NnYKemI2RVJici1TbmlPMndiT3YhTTQpbmJ9NlVW
em9WWkVoNWtRV2hfNXg0cll5MzxzSHJISkxxTCtEY0xUNWB0JExACno1X0o4I0g7UFdPMUdXQG9J
ZDFZPmMhODcxTmVhTShfcD00KGtiUzZVI3g8Kms4V2deS0hzMnR0Q3o8K3BCeFEkWgp6UU12O2tW
bTVfZkZfdkhgTXpycSRZJjZ1P2o2fmY8anV5YENeSTBPYDRtZlhLMGxyUlkqVm9lSlgmayQ5YUw7
SGwKemxwNjNzZn4tMXpfNDE5KUE4Xmp8TGVRU21LJlQ4UjduQT1LaTNeSDtZYWVMJmhGNj50SVYw
WWcpTnc3SnlzSU5fCnotX24qS192MWMmRH0tMXtOYkJ3UzJoI20xeTBhNVJpRWNZaWwrNTgkOElE
aDQ5YlBuekU3UjhJbjZQJVZ7MklaVQp6NyNjbHI9VjQ8elQtZ1AydX1ERD55eXJSZUBvWE5xYnFv
Xl5MdmxMRT8lOFhhSSZOKE5wOTAtcHNVfTdrcW1iV2sKelo7WUJ3Sk5uTnM8bTZHcWpWMihjQ1gy
ZSsjdFNPZ0lHbX5KJkRqa25oeSFlYCZwKU5UcT4kfmQhbXg5b01HeVQoCnpuYUJvajBkfWdwUV5h
UnI/Nm5XKSQ0Z29kKmBAVWgyZStZcFNAMChNd3t8enw2a28zTmJUdkRpQ3UzWU8rKWVnTAp6PnVX
KF5haEtGaj5pSi1KRiFeS2hLUXlQVHpuSmE7eHlIWXd4SmdyMTYmV2lkXzkpLSUqbUV3b3tCX3xN
OXRAUzEKemZAVEBxP2IyUWdsIX5fKFJvZTtmZEspeXxYRzA7bHM7WmJUKXctYU9WdHRrI2RhUWNZ
NyRjcFk0OTZIKmBtQCtMCnplUCMkJnlSYkJqRld2fUIpfDUtMXY9KDY2TV87VjFTV3Y2TUhuT319
MT12YnkmOWwrZ2FQP3xwWHdwMEFGRGUjTAp6Jk1SSl4qcVg2d2d4aEFfYCpvPUxHWj5HX05UWCVB
S0hQejRiT15SNzJaWUt9YWxlM2xmZkRnTThIIVdyd3tCN0EKens/Y198ZGgySip5PEh7YE0zbCFI
RXRPY3s7SHtsSnh9KEN8Kmx2UFErUkFjVmA+OGIwNGMzN09tcVV3OyM7RzwqCnpAbnpAZFZgOzcm
XiQpZSFCfWNkNXRsPG5GKD8/dU0jfGAqNXBJS2UhREVVbDUtJjlNPXNfM1luQC1QKGN6eVBRfgp6
VFUzSTNiayV6PCp3OzlWKG9RdnReMkhga0JBVzs9Mm9BPEwxPHFWSUsoWntIa0A1JkUmXzJtUyt8
fSs/Z0BGQnUKeksrZT1PV2c8KWU/Uk87bGxOdzAwPjB7ZyhRPjVfN0heQGJFSmk3O2ZRNEIkTkda
ZXJII0FlMSM4V0RUSGBpQiYpCnpDNkV0M0JZWSNtY0p4aCYpYjJDXnthTHF+cHNGTilRMVN1Y0Nh
QmFCVXIlNVBZWHt+LXF7S0dFaCkqO247Pzc1awp6PWhxJWleSX1yZDt6LSNZeUlgOC1PZk1wV3o1
a2dKRTM8WDdwdGowZG1QazVVckVmJW5WRCU8R2lpdzR3VmghSzAKekZqeS1WQW5wT0ZKSURtPWpx
cWFoUDBXYW08OXF2NFVNSWF6eDhKPFlKej5JITNlYW42PVVaaSFCeEc3aShZQms/CnowMkhNN3dT
MClXbml7ZFdiUU1SdGQtQSlfQXohdD5GO0l3V2Z+ISopLUF6NH15cnlOa3omOSl3PkVsQTgwT2Ng
Ngp6SG8jOUghWTMqUXg5bkBKbikhdzZHXmhiO2Vfbjh6cEl5WENOYEpGa1BjKV5RPzJNc0xORmhN
Z3JjWkktPCMxbmUKempIO0tGZj80ZUFUOTx0PGlVU0M1QnNGLTwkcStIQEBqJVlrPm1RWn1aZkhM
R0EjZCVzO1NaSzRwMEZ3WlQyU157CnpRMkJHMXhKc2JLNj95ckhUakppfDVDMHU9IXxyIT8qNEZM
JXklM3EjKGQrZT5iXzJJOSEqaUkhMzB9NDJJYTBicQp6VWZgWj9MR1NFdnR6OHNgYFRnNW9fQ1Ao
RmJSMFgkRmxFMHlDbkI3c3U8bWNMPkRQbUkyPXlPZ14qMiNjWTlvYFgKejtOWS0zVkJIWmpuVmNH
Uyl7R1o5OHtlK2w8WHxmNCVTKit4NTI2U0UxbUolNk08TnQqIX1jekVRZns/SDFVMGJyCnpeWTdj
WE54SEA9VmVeI2ozSEBCUFU+cX5PJHU2cEVjZ2QwQ3JuSXNXZmZOMU1iQ1pESDw3Y15oditaMFVj
ZjB7dwp6U3ppXnFLdVVIRDlEZ3AwRUFHZ0BAJHpyMzJkUXg+Tj13c2BNRVNFc216Z1QyJkw7P01T
VG8ma3kmIS1KUjNnfjEKelBHVHQ1MTVYKXdyK0J4KEc5bFdkO0BZM15WbH01MFdiJjYtVGl5O0hQ
UzBkckZgckN9cVlxMjJLNClHI0FvRDBYCnpZdyRFK0J6QFpyXjUwTUF3dUAkPyVmOSRyNFdISD8q
Mnw2NyZGWEZoWEJyVkZHbWcpNj9oM14tMT90O1V6SDAqSQp6TlZmOXdRTE5MbkcyQHE+NkNHbT4m
eXxsQ2BpQ0ZmWWR9OWklK3hrbF41b0JKPzw7YW5lQ2ZjSHFKaDdZbDV1TFMKejlGeC0oa01kY055
WmVqWGgyMk57bUN3X3JYMU8hY09FJjM+ZShaSDgxUFI5NXdRQzM3RW40T3t3O3szcTluMTxBCnpQ
Q3s7SFJEMyNBIUBMaykrayF+b25RMHwtVSUjdUdkJCZMP1poTkMmUilWKG1iYE5oVXFyWXlzb01R
O1opc3EheQp6V19Xd1YhK2pPKm5HVDgtSHhfSlZtRktePT50JjtwKUQlJlolTnckZ1NQYSFuejhT
bGg3PWtvMmFtKVhBUndPV3cKenBzejB+SyFzeyhkTSROQj0oQT1ra3A+VCgqeVU2PF9kd0l4PmNI
NCtMV2wyODJoWGE2LUVVcT5SM3Q/RzI2MjM8CnoqUndUTiUtZmdCbUR7ZnUqZWpObikxQEtHP1Nn
PGJ3M2hRfmpDUDlfZExwI0o5Rmkjblgzd0d2PGNMd1E7OHgwYAp6QTwlcEElRTBTOzw1Rkpodzhl
Iz9uJklBNWcxOUZ2IXY3WUMlR3hxZDx4MT0raGh0MXQ+Kjh6M2hZdGtRSlFqQjYKelF8eD53QT1v
JD1PKStuTG1nVFhXMzxnPl82ZGlBO2I0RVl7Kmk8SHhYMlF+UEF8Ui10Sj1WMX40S08zaDdIfkNH
Cnp0TkZMI0o9YUA0UTVLN09ndmotKzNOX0lKVWpjfXgzNH1hN0BiREUzISlLajRzN01FPHYpYHlQ
JHtWfkdfSkA2bAp6cHsmaSlDR3h4MSlYYGxud2N9I2c7ZzwockExIzdFejhASn10dU1EM2JCe1dp
ZmJlfkxXVDB6WU5qZ2JfcW58K0cKejJUQ0RadzFyVnx3UHhAfi1IODw0Xk1HeGZSMGFMcStfayt7
SlQ8bWNreFdMc3cqSiVHJVlIMD4qUiU2ZE8yRU1nCnpANmc/TTNycGJuZkJAaE9kVWViOTxPRHta
dCZUXjdwPjY9fkk/T0lBM0BCV0FHbVR3aVF7eDVDcXE8OGMxMEwhUAp6ZEBRa15Cc2VUWCUkUTde
c301biVIQnwpZ0t4fUgkZDhTYiRiQm5xOS1BZ2xUMmRHUjIoK0k7X2ZMfFI0cCRvZEoKemxsZmIw
TnFJKTc9Xnp+cUFtMVZ7KFBrcHhYc1EjNCpOSDl5WVpgVmZAKT8jdWVHZ3RDbUdHWXw5VSN2fGhS
ZGctCnpRJTAjY0dJZlhDZHtZKUpCfnF5a087S1B2SHV8NUNrJihIbiVERn5jY3RAfWorODd4aHMy
ZXc7ZkxtNSMyK21ifAp6OHs5ZSpZSSh1fGd0fHt4MUcrVT1EQTN5KTlzMnc3QGN2USgkWkpJQSl4
JGV+NV8zTDxyPXZ+QD9hWis2NDJAITMKeiZuVHBwOHBeclJASUVzcWB1aHpmRCZpPktGVn5BU2Np
OFd9akYmVmVKb1BEVXkoQkI+RXhKcGNrOyU7IWAwQUFvCnpBY0hnY25UOCVPWCZVV19ufCV7MkJ8
PDZXcDJNTUd2ZDVgVDJLS3Y7bHR0X35IK3cwMHg2K1NsQURge0s0ITl6eAp6KjE/RXBRJUx3aWlr
KXszbnstK1lOclQ7ZkhfbmlEX05nOXw1OEBtOFJzS0ZWRiE2cGtAcXhhe0JILSY4dHNpbTAKemRB
UShHeUNeOWFuZTdfS1cqI152TUlvZVFkcEpxbVBwJSVweDNHSWZ0YndFU3UjK3ZQeUkqWVR1SjYr
NGB6e3M/Cnpwa3Z+MHg0Y19QRkhgLXRxYWZ3NSk+NEF1UTc4U2taISQ4fUlOTEs7RWdyOzJ0UzE4
aEVPNT10O1FEbVotcXU/SQp6Rys9RE5gblI3Mlh0b3t7YkpwfHxga30tMkc7NSN4ZzhFfnhnejIy
KV5fWjs9S3w0QChFJjVKKVNZMm9mPW9sY3cKejUpQEwpX050Y20hKjVuRXkwTTl2MGBTMzM7cE80
VDxtdiUwUng2P2MySH5UQSV6T09eVDIkQEQ8Q3V0M3thZX18CnpBVEBVemM+Tjs+NChaKzxqNWoy
RFEqcjtVfDZhO1lmUDFqU1QkSTNtU24zYU5uIT88PUItWGt6Rz9oUUg7QGJ1JQp6bUZZRERnYkMl
V3R7NkxCcnMlODhMfWRlRjlwc2V9ZG1JcDRsbXBAVGlyOXEpSktFU2E9aD4xOXBfMD51I2UtdkUK
elhDVSg2Z0F2dX5JN0N3KHhkJTBlNTlNTkx3XlUzN1pEYnNCcmolZURDZXh3OGEzR2BuVGNYVk5M
NntCN0hqQGkmCnpiVkJ7O0FwRXRIazc2cTA4REo0OGRTeGQkQyg7JEs2PUZwVTx+bDlwVm9UOWFy
V15WdXslQmNuNGBlSXBrT1ZDfAp6JClBS1lHX2B5cE17MEBCVWIzXjlscWlfYz9PTkh8NFVKTUpX
RG93TVZqYWN5Y1g3fTlnPXtPN3N3T0IrezsrPzsKempCbyE5PytuZClpZSN4NUliRlctekJPbzBj
NHFAOXdHVnQ1O3BOdGA9LX5aZ2N3IypgbSgkNmlieHRaYEg9ZT19CnpGI0dafjUkJUFVbn07OFUj
dFJlbTBKKEpUUn08cWlpfXd4bVV6VndWSWcyJHVFMjtHTntoaFQmR0UxaTtfZmkoXwp6OUtLWFAp
ZHMxUSlYblVocj91WE8tSGJLRSU1ZiUrLUM+ZDR2UihkZ0syTUx+bFpzUGhheUoyaDElc0Q0RlZz
dHwKektGKStAYGlOekxSamc0PUs4QCoqMD01Y0U+JT9GRGMoe0leK2c5VVNrPDgkJl5xRH5AJVcw
aTRifHlNRypwNGBOCnpofUkhbHRUUkk4RXgkK0BWezAyQnIleHEjTz9VbGhPe3I4V3NhWm5aQ1px
ME1LOSVBWFUlTURMVDszPTBBOShCVgp6OVZ4eHhKZDdqbyRodzNxOzNvP3lCTG1BPWF6QlVyZDk+
LTxfQU5zMG4zPy1JYyo2Jnl0YkBIfj8wRSgqZD5UNW4Kei1IaUgyanNEZjZ1V2hJRCUjbj5Tek9x
ckZDUERmVWN1NVFQZD88KD13NnB2MUJFI25zeFN7biFVbkM5cUFoYTE8Cno7M2NwWjlBLWUkK1kp
JWI7d0AhIVlSQTlwJUtmOUlIR0dnXnsrcGBtaDtxOGk3fSZlQFYzRVFhTXNJdEVNUyY9WApwbFRA
JDtrMFdjQl9qYjtjbiVfSWR6NEhPJFFVKmFiZjR9K3dpP2U5Nk4+ZmJxe3tpfFcwQChsbgoKZGlm
ZiAtLWdpdCBhL1dlYkRyaXZlclRlc3RzL2ltcG9ydGVkL3NlbGVuaXVtL2NvbW1vbi9zcmMvd2Vi
L2Nzcy91aS1saWdodG5lc3MvaW1hZ2VzL3VpLWljb25zXzIyOGVmMV8yNTZ4MjQwLnBuZyBiL1dl
YkRyaXZlclRlc3RzL2ltcG9ydGVkL3NlbGVuaXVtL2NvbW1vbi9zcmMvd2ViL2Nzcy91aS1saWdo
dG5lc3MvaW1hZ2VzL3VpLWljb25zXzIyOGVmMV8yNTZ4MjQwLnBuZwppbmRleCBhNjQxYTM3MWFm
YTBmYmIwOGJhNTk5ZGM3ZGRmMTRiOWJmYzNjODRmLi4zM2EwNDAwYzA2NTYwMzQ4NTMzYzNlNWQx
MWQwM2RhNDkzNzU1YjczIDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgNDY3Ngp6Y21l
SExYSUdPPXg0IVFyS3RlfGwxV3xlfihvMU5lN2lqYFljP0NsNk1GPWZZNXxrbitARjs+djN5MzAk
RyE7O0sKejZCTU4/TH1+IShVMT9JMTdrJG9gXlg+ZUFiRkVwa1hVfCZLPkB8RE1wNG9mdVNlaEYk
Jn5uaU4wS2l+dXEtTztICno7T1ArOWY8c1N4cU9yO0VRdnZoUkhxIT14PlU2cWU3cGhhOCpVaVl2
Mzs/amcwRCF2PDBFZWVqeEZyQXhsTDNHZwp6R3lvdFUwUlRzRS11by0rcjtBQmluJWR+fHIpfmQj
YCMqWU0zTVFVPj5RRmF+bUFOJXdYQmY+ZF9oX2M2SF5NV28Kej1GVz8hNCg4Wko2dzFSaCE4K0M4
cEctRzU3Yyt1KTA1JilEWC1pQ048Sl96SDxzYk1vJExVR1p5T0hzcyZUbjV3CnpVQmBtUzQxR0Mx
MlApJDErKzkoRmJFU0JAbyhCV08lQj9STXJPOHpkLTdtWV92UXwmY2Z2JVNnXj8rb20zcjQzMwp6
NGFWM15wSnRqR3EhbGB3QG1vWTYwR1JOYGRmR09UVzl5RHxacylzTHJXI1RPQ0EmcDkxLStxJmxy
fU5KRmI4RjAKej1TJj9nZWpfP3JwSXFrMGtFfDlibCUkTypLUUZKbnFCLXx2fElOa0R5JFF8NWhW
TS18bE4kRVByP3wrQWNPUTJvCnope3FCNnNnVih2eiFveVg2WGhgXyQ9MzxkWldGfXFic08yMUEo
fG5yVCEwMCVCemsrKnolMVRAU0FANmRNMFJOVAp6ZjsoKHJ3aF8heXttdSg1ci1Zd1hVKFZDazRt
dDl4XkR1QUI4S0whVFlmUm10NHlEX2thdFE8cjgyelVwWWI5MEUKemhqOD4kZGBAeXt4TkNmRkFA
bXcpJmFARE1mZGBQcXM9fV5eODtiSihNUkIpRXM2fXZadFl2JCNCQkFmNSZnRnFNCnoxNipNaGJA
VkZldVdkQmFlOG9pYTB2YzlEdWg3NkxFbkUobzs2JmNyeWJZMiY9WHo0TlBraThTZjVsazZPQ09E
Mwp6cmlDY2dhPEB2XjUmY0ohTjNQajE4R1JtJDdWc1RzTjkpZm4tYEwqO0c8OWxgR2BEWEk3RDhE
NTJqalpSLUM5ZUoKenNhSDMtQlFmUWBMQWR5dnAyPkd7JDExPzhCfCZNK2QxbUR3Y2FyXypTKDM/
WFd6c3JNPS1ZSmpEezNCWCReNUd5Cno2aThue1cwO31xN3R4cExZPUdANz9mUzFeUDk0fTU3NE1j
R3YtSE1DUzg9O31WWlVwaDtTTlJGVDdIYWBoJHh6agp6RHRveGdndztlKUBlS1JlYX1Nc2dFT3xZ
VzE9Q2xmS3BJJCg1ZG1aI1FKTzNwa0VQQUtAcTVjbj9xQT1gKSlYSUEKemVAelFDYTg8cHhROEJj
VEx8eWorQH0rTEkpcjg/LUV+Plc5Y05zOUBoeiN8bXN4PGNxcng4STxQQSVyVVV3dURiCnoqSTgh
K0khfmdUJTk0NVRic3x3Z1FjMDdubXE3Z01uUlpgS1AzcCNEcHspNlcpfU9hbmBiSzdnV0FOK3d0
YVBxMwp6UllGYHxtSHg/UmshWHZ6YTtDbmVeSE5HQT17YDdHZ0VUMld5diQ2O2lyJlFpVnowPmo0
RG5QM04xRFEjYnZHTTkKemV8UUdwOEUoa2xsPihKZW5aJXxmWHluQ0lKbU5LXkVxbjxJJVBgSTtz
cXFuZTZSJGc3SHo1I0wpNU82RHV8LVRsCnoqPDBvSlopJXsmSEBvJXpWdSNEP2g7MT5BSHRPbiNt
MXxSKWVtJkFWeVhoJnB3VVZeZD8qTXNTSX4xIXJfe2Z2Rwp6dj9vMExfYExIdnhifilnU3VOfTRn
TXp2YVhocExTUjM7JlRCP2dOQ1p7fEI5Zj9LOD8xKjBeMVQ1QWhqSGYmIyQKejU5NHBXbSNqfnol
KlA9b0ZmMTglP0ppU2M3VjJIWTBTJl9fdEZ9VlU1aEhFYVdqP3dIRmpxOVB5WHZYWmQpYEAlCnoq
UkRjMSN5ZkE1QkN1QjBzUiY3PXtQYnBCMzJVM3Vuaz9WbExWJUMyeWBrZyFwdiQwR2wkIylQUXo5
ZG5GdjRAWgp6WVJKTE47bj95ZyZYUUJfP2N7MG9OQ3dneilWX1NLZD5wIzdJZVpObG1mTit7SlZY
bFFFaCh8ODZ4RkwjKGpeWGgKejtBaFcxXmAjWX5QNWdXeW9pR0ghI0pXc0V5a0w3Q0w/R1IxWCZZ
UEMhampKa0xtOWBqXmpvcDQ9QXY1UVJzSm9aCnpAbUJvU2tTejxCSkNnJSVPRV9JKUkzV150S3lP
ZTFRNHxxazJXVjdVNG97dngkd344UDxXKCh+UCQ7V0NnUVQlegp6P0FpSG45OUJxPXBhaCUjN0xE
X0BnLWY9R2BFUnxKYDtTY1B2VWtMVENIYUEqa3xZPkx8Tk0hLXBSKl47QXZaN0wKensmS05KRX5D
RHRZPkw1UyhMbVFaTyZMO2ZlbDRAJnteaFFfIWR8aE83MEklI2NHdm1ONjMjU09PYEspUzVsKHF8
CnopKEd6KU1DfD49N3FYVyEmN2ViRD1pUDNoSDlHcmREQTsjdGVDTj84ZT1vbH1sZ2dWSz1RX345
OURXZE5pJGBFYgp6TSNNOFlnbHBNemQ4UFYpeUBCeiR5RUVnPzBVcEtCJD1OaCpUc2hYY197UChz
VDN8RmIhYWx6dTdgVVo4OVplPyMKenpXKUIxTFk+JE9POXNGT1lDT1Rsa1ZCOVVBelpSWEZnfVBU
Pz9yRmEwT3Vmd01PK21OMFAyRFFSe2NeK3pha2phCnp7NDNSJjN3RklCe045RTFofjZJJUE9RU5P
VERWbX5FYU5hJmlGKSh0M1l9dTRTKF5gZFdEPDY2Vj5KdntVUFZhKwp6dTQqfkJPMXZDQ2AtdzAz
MWJHbzYmbGlNMG8/YDFzc1ZwP2M0TitGXk1OR20zZjViUTU3ZCU0SHh7eXd+K0JJbGUKem84M18+
PT9HRD5COD0/O0ZGKXktYys0LSltPkVKSWo0MnVVOTF5YFo3NHlNQzlANmZlazJeMXAzbVZgQWhW
fj5YCnolVWVsRk5kJlZAZHNNOSFfb3BCJW9VSkFvKkt5YHNmOztgQC1SP1R7LUR3c2JUX2ROMXRK
P3s/N2MzI3Z3KmVWUgp6Ym4pJiFeTUs5JTcwQDswUndDZEZldmljO3ZkZU9RPHlNMmFuV2xBcnV8
ezk3KCtZUDBNMGdjbyFCfHpBMSsjQGoKeistTHZGdldndWppRDNxKTFgZGg2YnwoKmhVTD1Yam9o
KHNUMWZ6JEo+WTI2Sik5NW1CQCVaY0lPIWk3cjFNUT0zCnorPmF8UnRFanprczM7O2p6OWojPkxw
OGVCJEhfWnZqakxsbz9VUXNeNHI5YjdUWTh6PVRSVzw4diU0QilLYTh6dwp6Rj1wWW1TcVRTPCVO
ODNrNig3QyolJXdrZUR+KUxORG5KRzFeKUtFXzhle3RZazdMMV9MUiNMIzZqU0ZHPnZ5dz8Keigz
JmQ5Y09OOzgtMEJjMitwT05CTEdLSStGWEAxU158SU9VX3wwV1VUIVVXUmU3KTJnQCthaz5Wck1L
ZVB0Xzk9CnpFNn1uUm9Gb0BqRDQjaF5KWVEwc2FQVWZueWBeSiYtSHo1eG07S3JDOXd8V1pDRTIz
MWY+Q0ZGJXtDKzt4TSRZZwp6dEpHKXgtR35JYzhLdyYlWUQ+Y20/Z3ZpQTE8d2dQRDE5bzRAdjdI
eWcyWGIjV2pNIW0odSQ4M19OV3xXUkJyPU0KekV4c15iPng9ZGMrNjxRfWp6WXQzVDdUM1FUZUlv
SSozUikwOSNkc2R0K2ZAQllCd156QDxARzhrUnRXWnZUayFVCnptMCpre05mfnluTUshcDBTKX5T
UmUxPDRoVzVzUExwVXEqYiEjQiVsbWR9MXJRT0g7TjxAM1Ulc1Zfe0xuYTwlUwp6NSo4TyZHanlz
flk8bEFvYGhTY3JFX0wzUHtYcTl5aXZQKXU+Izw0bjUtJVpiIXxJN3tYRGxwSHdZTEs7JTVLblQK
ejFuK0AmPXVzQipaV3t5bGQxNkJYRnpaMy07ISFPWGZmMCZQekVjYClpNnxrcj9Gfm1NaVNlS2p3
TzI0V0J1ZWBnCnopQkUmKzRFK3RZdDRYYG9zMCpAWkQpQD5MKXluIVYoR19ia2sqdiNHPk0wMyVX
TVN1dEFiN0B7KV40VShpYUFseAp6U0d1TX5LWCNVOHokMXUlVG9lMnRWb15ya2tybi08PnhnX3VX
VH02d0pkZ2l8TW9hZWJ7YlVFNVhRMjlqRV9yYFkKendeOFFSYnlYR2pzRWUhNHtSaUdJKW57ajc0
ejtye21RLWE8WENEa2shK08zJmIySzBTZHw2M2lTP01ibllRWWBQCnprMSo2bkZhPUokODE1eDln
eGIzcnhucWtFUV9yVXI1KGs0MUk/PTZeOENPMTI0QFduKWZPdlBiYW5wOWZVTCgwOwp6aSlsU1lJ
O2tkSmo0dHBvTW5LOHFsRCUhKSVSVHxlWmN9UENZLXA5fkstPEhSeVYrWnZBcjU8OVg5KEEmWTs9
fkwKemorR2Z1dFhzUnY9eyN9Mi1mcnw7cUJPczRhRVREXjhtIzAkYkNzcE41TlZ8VSZnTElxWEVw
MHAqPD43elp6WkYwCnp5LW9SUCp2PCZxV3x3MykrI0Q7O04re3A4XztQR1hKUGZveEU7SHJnaSNT
WEQxQz9tc09yKzgwTHtTeVU2fGZRXgp6IW1RQ3dHMGBFIz9VJjdQVSE0ZztHTWBpISp3XkBGeDFV
a29HVnFAQ3NAZTV9Zz40bHVeI0hqYUAyKl4yaD1ubHoKenNIOW5PJk0mOTtodHMpKGc0bWNYR15H
dX10JDBAUk80SXBRPjhBbGQmSGh1fklfPyFJKGpNKT9LNitkR2E0SzM7Cno4VUIzM3xGPkpVVF9Z
djlJP3sreVR7MXRrXzJWNWJBbzVKSzlDekE/M2dXJmhZMjI2YmA4bXRPTUZTUD08PXUjKQp6KUp5
diR4R1heJmk1aG1JNzZ5NEBZKSVCSVhZLShtLSM+bXQ8ZXttVCs9M0A5QExzYz1YJXdITytDMDtw
Xz1rRG0KemUyYX1kQEZEJGhibip9cUxvYzJ4SWBhc01ldlUmX08/RjdibWBsMnY7O3RRbVNAUTc8
XmIpVjtqYkNfdj5KRDRjCnpxVTs5IWEmeSNeXnxLa2B3WjRxQ2szbTBhOztEK15SKiNGdGJ1Smdv
aXBOYUk3XndOSFF+IUMya1ojRXFoQWp1Pwp6WDBwPncjUEN3MzxaUiY1YEkjZl4kVnUkQDxrLTBp
aUxnckJfU0J6dW87M1ROZjdDfExhZ2c0WCE/TE90cjZoNHMKejcqXj9od2IySCYzNGx+OGZSJkhB
SXxIaEl2JUd0REozd1FBJkwlTWpgPmVsbHd+KChRbzdVT3pwN3JSaFU2SDM4CnpBcHZhajNzUDFZ
UExKQUcreCRXIXZKfnIjQXdURXxJIW9DR2JEbGlIayM2TipvcjVrZEpSe2RXWCZBPCY/QjB9Vwp6
WDtQQj1UeCoxS24lPGwrTHp5UzR4ODZ0QHR8Qld6dFVCQ05aWUA5c0B8NTVgWHI8aE16VHQxUTRH
NUEpMkg3Z1kKeiYxJWdiJSp9XzxLfURTKGkodyl3NVJxd2VeSkxtIT80bTBBXiZuVU4mVzdLJVd9
aEF7M3BJVCNRajYqfms7SkFsCnpPcTtFdEB+WD9hVHAlQT5tMDN5SWBGLXV5RjM7QipOJWEkIys/
Yl9kLUBsPXoqVTJlQlF5NGpkVzRZbWU0WGF5Qgp6N2FzbmNPayhMVDBDP0hYIVB0RG5gWkNoM2NF
OXV4YlFUOzZHSUoobzA/ZVpxXk1ySihiISlYRHJuSUp6UGo4O30KemNkaEBrR0R1R2lzXnFoeFpz
fDlsTHRwJGIyP3F+a1dQfUtJPG1YOEg8OHcyYnd3eUFjSyZyWFJKJSRfa2FhdzMwCnpoPnx4YiFC
WFd5TV9sN1pScXZ7ekoxb0hGc3B8UHM2alBPPjdWbj9EVm03M01hYEMmcTtoezZBcksjdG97NF9m
Ugp6YjRPRmV3I2tySVloZnVTQGRvK3BQbCowez9tKWtteDVQZjw8JTI+JjZrKyZkJTBtYDZUKGtY
KXs/KW4lTX5RNHsKejI/dyRxLTNJfXleRXc3XjdMTUxKe0w+Y0FPSHU1dWF8dFopdlh5KUU2Qldh
TlU3N095X1VeWXBPd3RFeSVoTDZJCnpaV3RUU3l7eHMtIWIlIzE7R09yRHkrPHBUPEghWGoqfHpz
ajNlSCZDO1d9bFQ9WHs7KXhKbjxlZmF4WCohYyRmbwp6N1l3QE9nSCFxJWQoYXFvWVNBcW1vaVpX
fk9pTkdPZSZafXt4UmsqKmE/QnhwbCg+QzREJGMyKHd7R0VZPTdoWX0KeiUpQCt0bmVSbnkkb1Nz
LVBrYU9XUCNybDlnVkFlJjw0KDQhayg4cGcpVHsyO2pHOSp5d01gV3Ylc1ZHSSt4UEpmCnpucGN9
PWUxeChNZU51TjhANnA/Xl93Q3BzUGFlTEcwakRydyNTY3A4I15VaFA1bkNWekk/eGopUjZORkBz
bk9OWQp6UUZOQEhLUl4xUEFHTWdxbzFQU2VMMHFTVylge1J9R1c8cihFU1paQ2Z4Uz99KWxeIzJR
TGlpNmZ+TmliaXhtPW8KeiFtPUJlNm03TkFxNnZBbkIpPXBIQmdXUVY1aFhUdj18cjshXlA4TzUz
aUdQTnpMb35QbUU5Zy0jeHZ1bV89SnBOCnojVj1FdktSKHR6LUhHR18yTXhyRUBtK0gobCpmTEZa
QCE/PDUkMyspdXdVJTs4WlBLUD8jXmRDWmpMLXAwX0o2dQp6KV9YOHZDMWFtbHtLcD15dWI5KzV7
T2NRamUpWj92TiU5WUZHWDMwI2NLb0NnMWRkXkImVVZAfUJCJWleRUhObVAKeiN+Nk13aFoobDNv
Tlk9emNBUkZCQWBTSX0qKFlNbXxDVmdrZnI1K090bmg7UCt2TytQcXFtUF4yJH0qY19+ckB9Cnom
QHtiaE9iTjNDelVeT000c3QtPFhseXpOVklFaigkfm9sWGVsZiVtJmUtR289eHxRV1goY1khcFlX
MEBeTEt3Rwp6Ki0/ciN1e3ltZ01qRHtCX2twMUlOcTsmNk9wM3NlSWtpaGtQQS1fRSohK3dhZSNE
MkRLQ1JEJUYjMntGY05kSFkKeihrO1p9UX4rYF52UHgxaXMjM0JGSG5RP2FjeyF4S3MrNWNaUWJx
PF9lQ0dOOEFfTjR2YCo9cUVBdCp9OG9Oe0RzCnpXTXo9QCUxQWxjZStpPTZmc0xtRyZPYThjZ0ZH
PTJFK0hPKHd0SkFQMmR7Qn1pPGdJJGhsX2pFamdLQ3VVcG9MYApNdFolTVlwQFdZOUZCUWp9Klo9
P2sKCmxpdGVyYWwgNDM2OQp6Y21kXj9gOE8yKV9zM15waE9yR31VbmZpVUVuOCg5UVcxP01Oa3hY
VkRFcEZpbjJ7eFdyTHg1a0JDO2t+R208cVMKemxDakw3aThSS31Vfkojc0A2WSUxUzl+N2xiPyR4
TFUreXtnb19vKmhgQVY9c3BYWSohIVQ8bU9teFp+UjlSTDlRCnpkaitocmYmV15QI2Y5QyFacHBe
Vns7WHszPUtzenlMMXhiV0VnVChhaHJSPzVoTSE8enZ1UyZucjZ6NmZpQEo+dwp6PEA/SHNHIVFn
M3phVisteFEzbGR0YWQhVTw2aUd6X2VuR0gqMmFrUF9yKW8xRCY4cF41TSk8aTVLdm03K3crMWQK
eiYqfEtBTSY2TjY/JW98WEtMN3hEVmxCKX0+X2M4SUlqNld5KjdISm8mQ0JMdW9+bmo+KDYzcFp6
TyhWdl5adUIzCnpNWWlnamt3QTtGRXl8R30xanBpTWo2fE5UbTdVeWl3PUBGREUqblg8PmpSIVdA
OVhJeWYlJEZkKko1KkQwWjBMbQp6OX1aUXh5VHx4NWZ0Tnk/Vj5FYkp6LUs+YlY5Z3M5UmFYVVA8
Xj07ZT8mRnF4ajs2e2llUi1hLUBIPEpfNEdpV1oKemFWdShLQGFKY2ZedzxqOFZBKmlSM3tFOG57
bTR6NVRhPSQlclhrZ1FPNnYjfUwpb3luVnlHRUU9XzUxLXo2NT9ICnpEZ0dBODFhd31nWGBOZ0Y0
PnljQTFLTUtocWw4R09tY3g8SHA4UUtxY2YqPndaP18tKDNoTUteXmEqKGdhRnZCSAp6aUlDIWZn
SDQkVypOYktJYVkmVD8lJjEzYGBLYkRAUy0wYHhRJXYzVFYrQiE7UkM3TyErMWE5UUNBJEhAM3RS
O2sKeilTU29SNyhzNClme3pNfWVXZ0ZOeyhaSDVkMU99bClmJHJ1VCEpUSZOSW1YeVpzVHpPZjlU
d2N0Y1NmcitNKWFKCno1b3RPKyRqdm0tUDQpeWtIKXh8Y081eGViPj8hYHFHdyQoPiZheHFMTDZ5
b0Ike3ZzTVhnTF8tYnpAMkpfdFM5Mgp6ZHZaRy0rdktsQEs0VnIoPFg4RDdGbTUlZXVyRSM8WVA8
MVlMQUhiISFFfnhDeklNSTY4eCU9WWgtdyRMNi12QjsKeiFjI1oyXyRMZ1BVO1BvM2omKGN3cjZj
S2hoRj1WSUxGITN2WVF2Zk12TFl0VnshaXIhTlV0U3xzaGpubTJLbCt2Cno5TSpvPD5FTHtXUXRA
WitFYS1oeFgwfW5UU1p4bnBpXiNLbjhPeDhGZ0lTfGhjfUtKUTR0bSpITzE2dWl7KE85fQp6MVlO
KUdqaVF0NmZHcWBDaiteYHpVZj84aGteKFR7e2NPUUdXRlA5OGFtfWlzMjhBITUle1IjRU52OGZD
TiFqNjkKemw8dlRYbWB4I0FqM3BSfjUkIXR3OHg2SEpCVDt2ZXFsSSgoZTNsNWYxSjBYUWZVaV45
XnxmPyk4cHAwMislc0FYCnpyM1FTRUFnaGpGeT9rVHkyYn1ZfjVWWXFzNUdzU28jcEZMbDspMF56
KzZQKmA7VDVNdSZXTHY9YnpJOVFAOUshIwp6eDNuZTV7a1R1eDNMI2IhKHQzT1RmcG1ZMD8oNzZu
cVQ3eFdDM0NuYGhVMWYxaFpqeGIlQ3htUENhZkpUemVjYm8KemhESHpFZER6JHZTOVU+TUVLKDJ6
P3xCWT1KZSRYRDltQi1La2VtKihkLWpeOWokMiM2ciREej9zKS1UQ0RDR0NzCno4PjZQdmp7WStZ
SWVGQUBxWTIyViQpYXd5QHEhOUE0cmdrNWI5VGNDO3M5SWdeR3w2bkRQKzU9RnpnJj8oTD12Ywp6
Q2JHZD5mU3V+QDYhOTR0ZCtvI2RAc2lkPGM0X14+IUVJPD83UUJpNnQ9JGJmI2d7OFJVQ2o+WCRy
eDcqY2F3ZTYKemBkU2NKKyRIc3NkT2pFKU8jWWJzNTZ2bS1GUSQ3eXVKSkReWnFrJWhNYUlnQUo8
MnliX01GUXRlX2k7NjJTY1QkCnpwamlmWXlSX0U9clErPkgpcG1sci1VZHpnKi0hfHNzdyhEN3dK
dkMrU2Y4YmI5OztxOCN6PzBwISFic2R7d3l8NQp6cEJhTUhFLVZlPmkjTExqSFJhTUx0cCU5JihI
Q25nN1N3OTZqVnYhIzBrJT9GXks3Jj1UKW1uWW4pRDkoaTs0eDUKel5OSlRKd3F+cHY7a0hAI2Vq
VGQqNDh+KEoocjZqMzR8bWBoOWZFRGowaW0pfislSTVYcGhXeW1oVDtfWnR5fFEmCnp6alBnIy11
ZkFIWjxvbWY1I3trbE9DPVVLY3h4dyo/eF5yS3d3b1o3d3ozQDhla3UpZ2dMTlJuPDxLSWRhakgj
SAp6ZUEpVD1TZWgkR3tYO0V3JDxaeDFZZEZLbF5idUZtYVJkSSVYSTlyYU48TEgySGBTN3xEbXY8
P0pQZF85RmFScGgKejdNMCowVUc8JnxfQkdDO3Z7VEtaZTZoKXMkUkAlSWZgYyhtZml1PylrU3Em
bHEmeHgodmBfTDdjZVEmfUF6KihaCnprVFckK25hSStBYHlHaz9xeWBkZ2BXU2J7NmUmRk40Ulg7
TyYrZnJyNmhqYyszPFlva3Y2KnBgTSNTRSl7dmt6Ywp6M0ZMIyUyO1lkWDllcTxHd0w0OGZmN1kh
Z3M0QkBIbHpjJEEyYGFWMypBdGsrK0pYNUhEWTRCazt1QjRZeGJ1PFgKemBMJjFCeXFNSXFJOHRg
VUV8X0xIKH5GMjs/fCl7KiU1MHIxc0k5Vj1DNmJPLT1eSyRDU2lPbWxWcXpodlNpPzZnCno0QXpQ
VGg8aVpsNGwpNklCZko9VzZFa0F0X30+MU0qR2Njdz9LZnw4UG5odGIwYCF7TmBCcXNhMzdKKz53
QyQhZQp6MDBrKzJFZ3p6O3JiY1dvVUIlSnZwOFcxfSRYRCVlMz40eTs7T1oxY2NULU8jdVc2WXNA
Q31QYWBuWnJOS3pSKDIKejRlJTMpQFFJNFNFJkUhbFdgNXkxNFFoYmVwQkclX1hCVi1PKCU8YVg2
SFZ6Uko3ZWUqUVYzQUI9fkxXeUlveXtWCnpxdn5hKVU+NXRqKUA5I3w7c0MtTU5ldiF6R0RIa31K
ZHBHQ2BpSkYjOD04LVAkWG9rdV89RHclQ3Yze1U3TD5nZgp6UlE/PCR0YGNaKk1QNUdRbWJteCMh
KyohenU+ME1ld1JPOUdGR1N7Yl5tX2ZKLU4wP2pARXFvRmY+JGtoaitFfEAKejdyM1dlJl50Ul5Z
WnJ4S2UqZDxZSnk0Ryg5bWheR094WjhiaTNuI1l0b3N7bWB0eyUpTGo4d1d7WXtqVitRXzZUCnpJ
NV9NTVNhLXhzQ1p+cC1IUkRDaiM8IzBCSWhhY05APjIyYWdYcUNPMGw0NCZrcUN2e3UpVHwobHZg
flBLQER2RQp6e1FJX1RsQ0g1eipnUiE+TE8pazY3e15SK3ZXeDI0VTJeMk9EWHB3VDs2eSs2KyQ1
bSlfKnc0V1kmI2RvOWRDZUUKeik+cCtZa2RocSgkRGhtTWlhWVhleSFATiVMMjZ1eigkYUohUVR7
Ql5XdX1VJF45ZSM1KT1jK1hGOUBJbGw/Wm1NCnpsTmdIaXoqOSF2RGMmdXhPbztaVnhiYFEhU2sw
KmduZnhXem1iWmg0KD0lQ0QlcVA/MD0pO24kJnphV18kVUtWOQp6OGF4ZGNOI0F5WntQKXdqP1Z7
UH12TSlZWSE+NkB9Xj5VK2l2JGA5Pm5NVENQak4+eiV5RiYzeWYlPitUQDB2aDQKemxDOFhhNnpl
bz8lPW8zfU04e2FlYkxIY097XjFBcjhxaU09R3F1Zj9KbylxNWAtKz9zVXBnP1FYeUVVcFdTbStu
CnokSy1VeXFrSTxSPyozd1RWZldFfjxAMjx1Uz8tTVZsMTtqekFBOCppTDR4c2k/Yj9CTmk8VVhn
WkFoJHQyZVgyTwp6bGFTalA2YHV+KEZmV0FId2pkSUNXP0JpfCpZQiQ0LVl0LWUrdXJEeG03czBD
LU5SZVQ9JnhIWT1OTGs5XjwpS18KejhRdmM4YTlAUmNyaHtVfGpSamotPEB4WEpkZkRoQ0hBVTNx
QGBmeFY3REZ8WVpeckg9aDlKI00tMTdnTzYkIzhFCno9PEFDTFBAeCl7VVE2OCZgbUVWWHFgP0N4
Yn4lO0pKPHhRdkl4c2V5KEJacSYhTHVyMV9uVmd6NiR3JGxLXiZqegp6Xj15cTVeWSoyMzxAVzBa
X0tLekRiWkxsa3lDNUo5dD53SExxdXJ1fm8oT0YpaGh6JFkqfFg+Wklic3dueFJ2cn4KejI9cmRP
R1Z1RHx4UmxwQVpFPDAhWDFGKCVBbnBsXkBWXkQzdmJNfXF4ZXxOSTtUVGlaeTcoSU07UjY5UmtB
PmEmCno2Z3dZRTJzUkV6UV9MSG1XcUIrb2dNayhmTWFTRmVvRHEtIUhrRkJfblh0NSsybmNGdWs5
QlFMMUkmb0IxelppKQp6WVd7Nl8mLUlwMWwqT1ZSQSMjMUlMUVM7NVJ7LUteMHdHVGlKYlZTaUBM
QV4kRCQ7QEo+Xkd7NkAmKyU0e2IzKHMKekN+TEVIaVR2KDBiI3p4dD9ZSjByX35wVVpNfm1RKD8/
KG4jPiZ0RCUrQG5xPUFiajUqOFIhflVsMWBHfj1xRko0CnpmbHxtOFpEQ1lndHJgNExjT3BnaUpZ
WDlxUlk1O0RjV3RpflBtUyRWQiRFLVp0XmY0KXZMRE9lXzNYVHE1XnlsVwp6SjlQS20hVi04c0FP
SlhuVWZ1Rk5JZjBSOXRLLXBOczJoTzA0enI2MjB9NUIoT2s+eUIpT2YtM3NQNTlxZlFOYm0KekE0
e3chMkBjQjtHYlIofnN6VnJiTyUodz01UyFYYG9Ab0B4Kyt3Yk5fdE1QVDBWPFFoR3tVZUo7OCh7
JT16e0wqCnpXZDBVZ1FsMWZOSSFIJFkkaFhLI3czIUd2big3NE5iKXQqRm51Y0FBZTE7YFotLUIw
M0NIeUIjMmdxfWc7cXN+SQp6bHU7XjxPeCs8ai07X201aUJ4SnNReHVxdmpzN1FPV01wb3RhPDAp
OS1WdjtYSGIldz0+YykqSTtGZ3NiZl4qZzAKejJEaT9IVEFwd0txMytZd2ZOc3FkM2lQJXtoeUsx
aXl1VlpjQCowdE9fMytOMCNHRnN6PjhNamVKMlVKJUwhJWhpCnpHWVlBdGhIYEUreXdBKnV7KGVK
PWlhM2gqJWs/Nzc5cmstSzwwVlpBUGtsO1RGVWJtZWl8JGZxV084IV96SXZxdAp6JGx5JFZybEg0
Nm5ucFh+WDVZazBpQkpsOz1XdUE0Pn5YNC1mJksweVdmNDJoJjBiMzB0QE5ZWCQ3ZWdRMUZwIWEK
emJ1aS1ENmNXQ1dWJnxSMUNZQEc4KHFPbVdqV2VYM2VYN1VnZ1pQR2ltQX1zb091UWRYZTR1WiMy
PjV6Tj5xbEkwCno5eGt9bEU9dE5wWDFtNipuRnIyRVEzeHM3OSFec0NsZERKWUUkbShxWXYzcTc+
fTFSNz9pWlc3PiR+KiV6S2FDfAp6PSROP01FJD4jKyVUJk1aQ2BkVzF3VWw2WilKZ3lDbn5WJUsm
aTBIfGl3RSUkPnhzWlczdFRmWnhJVWU8eEFqJjQKejRIejQre19TVDBueW0tTG9IaE1+ZSgxMTAm
RCFVX3AjSW5eVkxJbntKIVkjeiY8PlBjaUBwO2NSdXxkPUl0SXdGCnoxY2xWSHl7aEg/QFNEfCha
ZnFpXjBEUTFoY3pITjd4cTg1aClyelFxTEhNWDJeSWt1SzdGQiFrSTQwcyR8Q1k3fgp6Tlhee19V
ak44fUwlTWVkO3wrPTRSTlRNb3puOEtUOzJ0Yjc3YlVQQ21pb2grclpCZklpTTZmX1AzNGNRX19v
MUcKeldxUXAzVkx+fnBFNT9xT0RmJWlpUVEzZjQyWUZAMDl0USokPHY9KlRCNmd2e2p5ODc5ZEE2
aU5zTns1RUAhKGs0Cno4SGhhaVVfXkJ+NCQraUg/bV5BckwlQTUqRWZvXyU4eVNiM0RKMisoJCNp
SGk5TE9tRG1NRjcqNU4zbjImRSFIRwp6b2xya0kyIUhNNXFuT0hnMjNRMSZVZkReYGlGQ3psZzsp
YFR4bFJrWSppIVY5PjR2X0VLVXg7dDFLQ1BDQnRncWcKekArVG47TylhMHVreV8lam0rV2pOQj89
flZ5SD5WI0whKj1sKkBPUzZTVnl0X1VFSCZOQT0/VjJzdEhQeUtrVk55Cno8Sio3M0o0M1VjQjNi
SDFQTTJASVp3O0UwLVByKDI/RV95JWMpNHtmSShXWXJvPiZqZzwjY2pyb3MpeyNqaSlkSwp6JSlX
ZTBMXzQ3OD1IWjgtQHhud3NLcldzOCl4YE1COyhZYENtdTJjLSZTSCh2Ti1GKCplYGw/YyUrbCR8
eV9BSkoKemhjREdud0x2TitidTtfc1h8MTxtSClHQVBhLTR9e2NVV1klWT9uV3ImKG1aMHF+YThy
KylWJnIhUWZAaTMtd1p+CnprMjlmfUs0TXY1Nj5BaWVQaDxMe2ZVVXlQSWBKMWo5PEhDfnckPURu
QnJ8dmBlUCQ1S2EkMEFNb3J6OGt3ajw2Ugp6cUlGMFg+eEB1JiVQJGhmKnhFK089fkQ/XyhfS0dX
USExNThZTC15OSQqNm1tUG87UnAqRGw1bG0tbVZNMmlgaC0Kek1Abnh2NTkwX3R2TXdQRF97bD1i
JGlPbXwrfFN7RDkmUCV6ZVQkR2dYNkFrbC10ZlVGPnRMQExkIUIme3BOMzl0CnpIPjNWaHFrcn0y
WXVsK2piN1Vpb3VXVkdQTnN4WDdVZWJhKzl8fmR6P2QqUU0kbmcwRFpmTzBgN2ZBeT8yeU1tfAp6
Y25SelVoWiZJY3dnakg5Y3VVIXcrVlN0WWF7cCopNElnQmZ8RTgpc3FNWXRCMktIX31TZnNGcShj
OWkoUTZTM1UKb0JvJURJPEgqfE95YEElPD1KJD9xP3xndWBsdEdacS0+Kkt2O3c7KiUoaTlXQGV7
ezVDPWx9byEKCmRpZmYgLS1naXQgYS9XZWJEcml2ZXJUZXN0cy9pbXBvcnRlZC9zZWxlbml1bS9j
b21tb24vc3JjL3dlYi9jc3MvdWktbGlnaHRuZXNzL2ltYWdlcy91aS1pY29uc19lZjhjMDhfMjU2
eDI0MC5wbmcgYi9XZWJEcml2ZXJUZXN0cy9pbXBvcnRlZC9zZWxlbml1bS9jb21tb24vc3JjL3dl
Yi9jc3MvdWktbGlnaHRuZXNzL2ltYWdlcy91aS1pY29uc19lZjhjMDhfMjU2eDI0MC5wbmcKaW5k
ZXggODVlNjNlOWY2MDRjZTA0MmQ1OWViMDZhODQyOGVlYjdjYjc4OTZjOS4uNDU3YWM0NzY0ZGM4
NTk2NGQwODJkNzc4YWYwOTY5Y2IzODViNmVmZiAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApsaXRl
cmFsIDQ2NzYKemNtZUhMWElHTz14NCFRckt0ZXxsMVd8ZX4obzFOZTdpamBZYz9DbDZNRj1mWTV8
a24rQEY7PnYzeTMwJEchOztLCno2Qk1OP0x9fiEoVTE/STE3ayRvYF5YPmVBYkZFcGtYVXwmSz5A
fERNcDRvZnVTZWhGJCZ+bmlOMEtpfnVxLU87SAp6O09QKzlmPHNTeHFPcjtFUXZ2aFJIcSE9eD5V
NnFlN3BoYTgqVWlZdjM7P2pnMEQhdjwwRWVlanhGckF4bEwzR2cKekd5b3RVMFJUc0UtdW8tK3I7
QUJpbiVkfVotaTd+dmAjKllze0JDJmcpUyskfER8MmhXJk09eF4/JEp6QlotaSVGCnomN0J1ZDlu
NyhkRDNwaDFmXzE5RktiZFpCRUBsTXAwQm1tUCkwVVhsIzxeR1glUmxnR2o/PEgqY08mQ05vIWBF
Vwp6eHtke3Q4VHhYMzRwaFkxeHgxblU9U3VOKkpyNCRtbTBNcGpOfFVQXng/Z3M7V3YhbD8xNj9t
MD5IKjFBN21ROTcKejhqUGAtS0Z1XldOR28oVTxGfC1EMDVJVz1efFdtdyRKUU9gK3xHQmdPZntx
bU5fTEJJM1ZLNWtEUSNrY1ZHaGQxCnomWTN6fns2PSlMS0RvP35BNllGPkNgbFZyZXFMVUNNUlZA
VXsrby1QZGxRPEE0ZDB0YENOPURuUGpRaEs/Pl9FRwp6dFJXQUNRWD9aU2ZofVomQygyXz1sQ0tr
QC02bnxKPm8mNDJMb2BFTHhkMDFqTiVaIXJmbXlyKnVMeTZeaVJ7cXcKejEkV3JNWSRLU1pga2Zi
QVA2PEQmek1RQTY5ZGhKWD1WOUtNR2VZYXgpfGszTzlaSSk3PHFgLU1GIzFuSCk9SHxSCno1OD4j
aV8/K2FAYU0kP1VMZytRcG9NfEJoMH1takpSZlN5LUh4JVhuaXtmc1RQPmJOK1NqK1plTU1CP0Fv
eSFBagp6MkRyajE+Z1pMX1UpeU07YEhHMzsxdklSUlVaSF9nVERUbEUhSEstTGNeZjJtJmg/fmpw
WkxKdnspKH1CbXAmVDcKek9iYnp9PCErVS1CbD9kZGs2ZzIzR1d0OWdFI04hT2pARi1Eek9sYXhY
eko3PVg+USpiRVFHTjk1NXskc3lTMGBjCnpRP0c3dk1gRnI+Z0srVVRKKEtVXmojWXFGT009cHRe
VVRVVz9qLXhxdm19JCglQXxGaSg2e080U0pYVihsS0VGWgp6RDNIRUAjeE8oSUZRUEJnKiNPJkYr
VngrLW9JMD5BRCY4JFdYNmNRT3VIdHN7IWhZOTAheVNzVXdmcTw+NW03VzUKelJyWVh+MzlFXnE7
dS1kXz1OI05+U0BMPSQzI1A5fGZpJG9uQkxjYGdxQkwxSDkhcn5kPE0pPUUrYHFuPXR0bWRMCnp7
K2JxTztIcjlXcWhlP3dpTXM5dTxWKVJac3xteHdUdlRuSD89b1AqNWdGPUJSY1k9S1A5dVZ6b0xi
Q3h6eHNaPgp6dUN2WXRiZT0+dmxfbTR3PnFNZjBxPj82Q0ZNO15pR3dyXmZuJChUUUxScz8jdHZf
JEVeb2A1fSRLY29WUz9PRzcKenMpVj9fRCpjbnNCR0RGYTx4RzdgPWNTWkwodFU4VzI1Q30kYyR0
fXc2fV5mMyNhQHk1OFJEcjdqeD5jZT51eHJKCnp7X3FVR0d1KTg5RCtNWntHS296fCg4IUNhYypK
VytUbGYrYm1TTFB4UXNYMWBDU0deRVpiQmZncmlwX1FWdkNyOQp6dmJXMGItXyRebForN2ViI1NX
TCg1ISslS1pQZThmRTd6dHB7ZCVOI2NHRlhHWWI5eF4tdlJRdmJ8X1lMQFIyOFYKelgtfDBnQHA8
UVVhUDNYfnZSYzs3MkwqSzwoMjhhdXM3eWl2T0FIblAtcHFHSTFoLTUoM1B4JTJ3QUwyNVl9bWRn
CnpBSTlIJEZJa15iblU2ekdVfDJIaitGaG8/RVkhUCgwfiZAPVImOWx4QlN6WTslWTFZWlY2SkZu
Y2h5cytfcT8ragp6dVUmPDNqQ2JCOU1QUk0wUXhURiNgUlVFTjY0b31RSENldjlnI2FJNGRxYzxk
TDY8P1hDXnRkb3JiST9DVlQ5KisKeilzVGFrIT9FUjBvRiU4OytzVmBGa3FvM2NzRDFmZGA4YWZF
Yk5DdUFFVnBaP2Q1OUZxVFQpX0dEWExlZ3EpUXoxCnp6fFdxMj5Qc3N8b0F+KWFJJDtRY2lGS0tU
Yyl8OE9oKE5tMihsKWxOZyhhVThoQkEoND45PUI4JXwqNHF0TmRGKwp6PEV7OXVBekt6TWNQMG5r
bVQ8YnBhNiU7UGZabWAycTlgSzc0JCFFeTlHKk9YbDlUNG8kZzVmfHAtQChQMjEjU2IKeip0N0hE
SUlOSCFLP3llZkVnSSkqM3p1dldeV1M8Y19hQitvVyQlYXdPWSNGckJ9cCloe2BuSnVLVzkmeEx2
Q0tnCnp7cERoZFR0PENPKiVYN3ZxSmdlK25saHh8ezkwemt7bVdmPGd9cWBtRTBTZWY/WEw1a0M3
Znhubm1FZ3RCYkBUYAp6dFAkUXBofWlwIUZKdiFlbm44IVEmYiFAMFlqcE9fUF9YYVBffEJ0R3sk
NzR7Q1kzaWUmVUspSElzNzJsN0xVTT0KempFSEEpMi1tWGJAPUVwcGRJUkhnY1cxXygxM1plTWxl
MX5zeE5Adj5AcnxjTndaTGQ+Z25mUVJGbU93R0kreylmCnplRXQxMWcqdmVubUpFT20pT2RvOEEl
YEZ6TGJ6bSZWMDtpdy1pekwtMG5SfVZpP31LbDBNckVxdG9vJnRlbmx7LQp6YEIkbmw3d21kTl9g
TTcxNXhxWWtMYTFlbXZ+YTZ9U2pKKGw2N31aTzYqfFI4dm87Xl8kUnpDQyMlZFVAeW8hPHQKelQt
OT1MbTNUUlBfN2grNTNHeU9Eby1ZVzBKaks/TlFkd3c+OD18Yi1pPHBFN3spbGg5Rkw7RVlicz9R
fXdRSkN7CnpIb0shJShoO0kkTUh0JXlVVmhSdUB0OXdwRipBZmI3KmpJeElVc14tRCZ+V09KZnoo
X0E5cjNIN2N7Xkw0RENyJgp6bWJhM1VrX2N2Kl9OWkRkP29VQmpJOXA5RnVIKCROMWI2eil5V01y
QHlWRVE+eDwqYjFTR047KEZJWW1UWnYhJXQKej07R2FkPF5ofWlFMSt4MHR3Z3tWezJxJXhXUzhh
cSVCPT0tR2ZuSU1Wdlc5RHJ4b3IxaTB+QEZnMFpTSjN1WCg2Cnp4WD1FVFdmZVA2NjJsQm80SUMx
Qz9NQCMyeWhzdzRKNldReDJ1MlNiKWlaMGNyX3A4TjtfPXRabmUzSU0ySEhwNgp6eEYxKHNSI0FL
N1AqRnM1ZGBiUiRoaVlgTWtDUylVOGR0fUYrOSZDLTlMOSlFdyk4VCF3e30kSFdfTEJwZWkmUVYK
elYkOHlBdmwwI3ptbn1BOERuNUdxbk07NHtSdk9YalJlJWMyPnREUT1HeypHKEFJRXw8Z3x4aGZE
Vz1YWCo2KEgmCnpwKjI7ST8+PSVHeHohPDV3cHFQTGdXZWV1VWVXO3Q+dChheUB0ZXp6eENYdHJg
RmcyMDxXSV4kI20tbntvfmtEIwp6Ui1rMXNJN3UkNVAoRXstYylwfU07b3l9RGRyUWFteCplXlhG
OGowTkp5TCsrT1JgMDIxKjZYVm5yJW94YUw9cn0KelNFPGtYeUFjVT9HZldwaylSdS1CK3oqX0oz
IVcycFEySkM3PDVqUWExY195ZSVXI2hDcSFrfTY+YF4oJHNOTSNpCnpUNnwlPSkpKHk/dj43Zns5
RUZENndFbjBxd3IxMFp0KTFnMUpmX05eVDVCc0wpb3heYjwmcFpIQVZ1bipXIT5negp6RCF+e0Br
fX5YQ2kpd0sxdlB1b3NfelkzMSMpe2lnS0FYYzxoaXtoQUVUOD9McUw4b2olamJualEodUBnR284
YXYKekJyR25sWDZSSX0qITBGRl4jMiVMVDxXfG5gK0BHYTYjdFZRKkpHM0RDMDtfPmhTZHxAJlJB
SFlZSHRUeGwtOzF3CnoyO0t3bCg0I0VxLThLZzleVGRWKFZBZ311I2lMcCgwd1dab2U1VytwNT5Z
fksrWiZFajY1fk41WU9pMiROUjsqfgp6cnVYUnM4VHVQKVNDZStGUTVSJi1SUFlyZ3MrSUwhcUFT
KjdCM1lOVylLZTFqJGltSk9MR1grQHQ9JndvNm16MVcKenVYSWd+ZShXc0dmSllHanhGK35QI0c7
SjZCUDtxeipBZS1TJFdzNFVjXj59X2poNWA9YF5nU0EmcGBHNlQ9TT4pCnpabGxicj4jOGQ1UTVS
Ujhgd3pUYnM/V35FOUJPQUBFVUMoeiZPUjg3aFZeYGw9NGR8dGBMZEc0dmVIKkQpUGcmbgp6QTdR
QUVVPCNhZ0cyQmFKMihAPUxhPm9gU3JrK25MQm59MjJiZlF9K0dwPkI1OSolQm8wckJvPTxFSEl8
eSsoNHkKejdTbm8pYlclO2M3K3Y2RmpEVjhJQzQxWXBtd2ZfYC1LTnhQKnc4QXxmd3FTc2NlQSVU
TG1jK0omSmVDaysyfH1nCno5VjtgU1Noc2VTKHxPezR6MWBAeUx9YEI4OzFWSStIQ1Z9aTx8PDJq
QTx7X3lveXxZSyZUN2BIdmRLNmEtJTNYMQp6ZFlrZ291JD5YSSVgVkFxeEgocHdsfkJIR0AjV1oo
Y289QVhUeFFDfTdqYyZRMlApQ05uTWtBMGlKfmZ5RF98dTsKemdqdTdWVnhtS2UrYl41cHpCJl94
V0ltfWR1Jj9wVVphPF5FVyNCI09Sa1B+ezMpP0RTPkglXjstZCh4NDVEUWBhCnpRQXhBbm9MXjR3
NTJ0ZW4xK2coKFhpNkpgVGspKnNtOFNFcihvWHxebipGRHxiPSlnYnEmP2ImZWV8flc7WihHeQp6
R1dffDV8OEtXeXlHQlpJYikqcmF4QDNONj4mSDc+SzspVGRJcXRMKDZ+dWoyKHpxfDxeSytKbWl2
fXYjJWV4VXAKenNoOVJpYTlNJmw1O2cyWkVlIUkrKnFqSlomKm5pQnprbUZRJFV7PnZ4ZGwmSjtK
cyEhKDxuWW13UnhzSEBlbExCCnpgNCReXzs2d1cxPTtSP0poRiZ+WGJta0Voe1R6cD1uKFVCPEZf
Jn5UI2ElbEJ2KmhDIT1wfG13OF43QFUpRSV+Pgp6TWNFRGQ8PnNnLT50ezI+WWtlN09BQV4zPCM4
VlordHNXUFA+cyY2RjZfMSZhRjtNZVlyfmRPNEE+RVFLM3xrSiYKeiYxOSNXaH5jRzUkPVNmQV5E
e0AtaygxYyokKzJANDVARDZMP1dzVFNKWmJoanxFUF9nO34+MiZoaDxlUU49ZjNOCnpGcyMhMVlO
SEtrNjlCMUgwNHBESmNMcjRiV19rRFFjN1ZuSm9sUm02X0V+QDlaWHNWcUhtJFNhSj9xaDF5Q1Az
SAp6TElUKzQ3b0BCKm9GMjhXdyl1cmRXR1U3ZUx3P1dgYmU2SVc8fihfWEJpK2lzSXROYF5jdCk7
JChsQ3JrKn1XOyUKeih4ZkUheHotNWZHYCVAdGhCOGw3WkByTitUdCF4YlNhckNrKyoqSk48U0Re
PiZgUC1oZVoke3E4eFNPcTQ2Oz4oCnpvN0l7Pm40MXJ5Z05peW83UTtrVkFSXlBgPUU9MGQqaE4r
Sj5wYHlrb2VqVGolfDFPXjdIYXhmcSEhZ31COGczOQp6bV5ORU88eUR0O3hqO1UmRHpsUVpeWlZN
WlU3b0tzbElrWmV4aUwkX3pKRWhhdWFpQE5yWjkyQCQ4eTh7OGRrVE0KekU8RjQ+blooangwUHdQ
JWdSJUxEXjx8YDY/U0FQWT1xeHhDV2Fkb0YxZWl4SjxfWU9tPigqKlJPbGVJYXBXWnl7Cno/Xl4k
N1dzc2c0UkxOJlctT19KOWhyYWs+NSlLfjckT3NZYSRqXzFYJExEND1aOD5FP2ZtQ3lzZGtpPTc8
RndGMQp6NUc4TD1mfkNyWmo9MDgrc0BfI2FjVVhZVVFgUGdPRDVmZSRFIzV6USNjVzZpPD5HZ0oh
JFc2S09IPEVGYER1MHQKej04bVJfWklkQ2IqMX1SdTt0bGZHcEFofV4rPHxeQVo7NUB6JUxqI21E
OGxmXmwhcSpDeE11cW97aX01a2p1UDNACno1KU5jSngoQDxZPVhESTtFRjhVY19AXnpKbSFqQlI9
TXFAcFdoP2pTQ258O2t5RTVoWj9jSHlJbjR9TlptWmpfYQp6KyVQdHRkcyVDdmdfU2YyIThgOVFk
eWlIdyRCXyQ2dlRnNjU2cjhjTiEqJDl3Ji1wc3BhZ3t6YDBuPCRzZ3J9QEYKekUqTnlsMmRESGtf
TWtFRilTX0VCSSVQeH1uM2tUbHtsOzBeYTRDYXI8ZHtTSEN+XkM4UkdkPm1aezVQKiVuNW1gCnpu
VFByUUdUKTJaa256M3VwWkVzJHAqbklKMkJYJmskRE0zZEJQbTV+c2FNXng4OHhwYVlNVXhUbjBI
UWF3KHNLfAp6R19OKyNfeX1iaWBsUmtHLWxNbCtAN3U5T287LVhWMTVSUFdpWFc4RmptNj1vQmVw
O2NiZjcwcHNDYk0pUT1fWSkKenF2JSpZZX00Mm9LV1pfSkgkNW9gZ1NidSR0ck5rfFdjWkRtU3V6
KFAwKCtyYHRFc2Y0cWg0M0MxeEA/PTdiXyhHCnpnaz83X0RjV2tLTUhCTEROcSRLWk12U2UhQjEm
eFQodXJtZDx+S1I5NzNOaWtlSnVAb0U0d3x3akF6REFAZCs4bAp6aWVJS1NlfClUY3gpYUY8NGpQ
Q1I8R2Jjb0QzQVJULStWIXpCZ31vcFZaWWV4SEMpaHArP34mTysjR3FIMWtCNFEKenRAbUtVTzIk
NjlfPlZuWVVvb2tCX300ZjV7T1pyU2xqSS1WV2NzLWU/ZjZNMDJwcSVNb2I5d3tMe0l9LVNZbDhu
CnprMV9tVzRsYF81SW9wKGM+XlJMTE1IPWJ7dnJvakJ8MUhfNzB8Z2htUz5YbG94NjRub017Z2c7
NUh0bD9AWFp3ewp6cGxOIzFtPWIwT2VBfmFpOU9RdHkoYiNrbCFhVDZubHlrXyV7YkduQ29VekNF
KGN6cSQoQEk+ZEtqOUArPUl7UFcKenZaRUFmVnMmfn5qNUkpTD8qbD5hbG0ydURtPXU4X2I4NDU4
b0xuJFJ2SDJNPHtEPT1QZU9qTGpWZjVgVj9rKlMpCnpxKzV1YHNRfjA7V1I7fDNSSGJBVVktSHQ7
QF5WT2RSVmYoLXE+SyE8X3t7VkZNRjxGVF93a0pTTHJ8MkdJcHhVTwp6JGpUdCltNjM5P3t9TSND
MH49MlhvUFI3PjJZRiY1VHRZa21aVEJFbzRfQE57N2NVUGg0O1N+Uzh5YEpSempncT8KTVNsP1cp
TEkpbEhVKEJuTD1LdWZ6CgpsaXRlcmFsIDQzNjkKemNtZF4/YDhPMilfczNecGhPckd9VW5maVVF
bjgoOVFXMT9NTmt4WFZERXBGaW4ye3hXckx4NWtCQztrfkdtPHFTCnpsQ2pMN2k4Ukt9VX5KI3NA
NlklMVM5fjdsYj8keExVK3l7Z29fbypoYEFWPXNwWFkqISFUPG1PbXhaflI5Ukw5UQp6ZGoraHJm
JldeUCNmOUMhWnBwXlZ7d3pJfV5NQmBEbStzSHtUUjF3PDR0KXRBM19yb2JYNENkQ09ISkN8N2or
dlcKeiVKLUVNWCZgODdlbklsdWFTYzBfU25ZVXgkR3pVYz92ck5YdCZJYG8/fjdDM1JKPkMtQWpx
ITNBZlU4RHg5MF5fCnpwM31NS2pKellDK2BUKCZlZ0ZYUSM5RWt7Km9WQWFhIXpyWnRtbFJGbndR
UFJKWEg8JXBrSzIqZVBgcFQ9bHdENwp6aWZxKzRCWV9yVVRhK1V8MiMmP2k3PlBWdkQ/N1I0WmZP
TFBUe2U8eio5U2ElLXErSlowYHVGQHVmXnVSMCswZUEKektPQ3hYY2FRT0IweHlMJiQ3dH1kZlh7
eD16P3dISXM7JnlvJW5KcmAre1oyWDk4SHkzYHRtJHU7ZGhkPDh5TCgtCno7I1NuZTtMcHp7PjlH
fkchTHMzczhKdFFFYGpNTTl3PHRma09oYztxbC0zYXtoTyVMQyNaV1ZUKG5ufHZkPHB6WQp6UXY1
QkYzRnkyfig+bDJWOSZRK0syREhXME0rdVFtRXIlbllKXjdjSz91SXBVLSk9d243MVpaLT1AYXIw
OzNeQVkKejUrVEl7MmIoZSV0ezJQWjxCJXgobk5nMT5eSEtGKnZ1QCtYcjxsNncjfG9reHNwZnRk
diRJOXJOX0dRKTdxfCo4CnpzNXlfckZAb0lxMVJvVWBgJH5Va3tyaFZCXjJuXzh0MkhKU3hERmZs
a2Iyelore1dTbHxJb1A/U3IyPU12X3RwYgp6Qmhxd3VrZWd8dW85cWQ4WnFQPD9sKXwlPCo7RCtK
WFdaaSVvbj1HaGYtMDNNbHN6OGgoUStgdj4mQkFjQDJCQzQKel92Q2d3dyNpPSllYTVWbyRnbEVF
VkJCZ19WUEJqISlPTz4pZkB9I2RnNlVMT2VDPkxCSHo8Oyo1WTtZZkUwbE54Cnpne04rNEBsT35v
enhwRjY5cVZAVk9HbmMyNDhJdWFnNEMxVClQXihoV2twUCF7aCFKZWtYfW1eUSNiMkI0ZjFvVAp6
SWpzR3opNH0tJHJRKi10Uzx3NVkleHQ0dnZEek5JN0xqTkRHTHwxVDJlVUAyQHtWVHA5clV1Wmx4
IUQye3JVSnsKejNBJXBXOCR+REMwYjJeUDk1P3dieXVlQjFCbjRvP2BgTG5YJFVmOUY8Qzt9TjRH
TGRBbntTWlNsVDdfUGxDczBJCnpEQlhiJUZgR2lMNyl2a3xCaWVUV0hYM1NjTXh5UV9NK0BpbmA3
OUF8MmI/I3IwQUh1SD51YyVxRz4lPDR4TSNFJgp6Tik3bFJLfl4yVmRpbG9ZND47I31BIXlIT0FY
RW1FaV4rZUEjMDVwYXdHWHM+IXopZ1NvRHVJIz5iUkNxLXFqSmUKelopcj1BYCpFTVg2Kyl+ZXIx
a2R2MUxeKTAtUHNBRU03SkYkTzZHOD40OTYkMjRsa088bTElMnBPanRXd2V2TSNGCno0Mj5TUl5S
VGZVdUl6JWlTZm41Yi10ISMjY3M3c1FJKTtnZEF2cW1uX3Z8JUk5aztmQ1BsMFopUjEraE5RT05K
Tgp6SCUzalQ5c09xKmFgTEYqTWlZPXpsU1NRWjt7X0ZMOU0wN0E9SW4rTyF+d1J9PWJ6R0VRcGsy
IVZjMHApcUtBSD8Kek9reyglMDZXIylEZElDUV9TJVFAPDBZKyE/OSUjJGdXSiUpRU8tPEJUZX0t
fWlaNTRzeHwkdSVsUUZJcz9rNC1CCnpefGNfZHhKJjlNXj9XY3FuRVd5TUFEVUN2VXJoSWFUO3BG
LStAdlkxaWowKkpkejVjPj5eWVpQezxgb0I0fjl4aAp6TDktMCpjNEBCI08yeWxZc19nYEt5JHpi
fnYhTWBOUmFNTkZZRipHc3V8Nyk9Snl5TUhqRkM9SGhHVUVAe2FJfEIKekp+SVRYVTA1MiU3akZi
NVlzI2ZoU18/NGtxYzdIMEVVNDlCOChDaGcwJkp6VT1Ha2EjeE96MSlIMGQ0bTdablJBCno9TV50
ZFl8VTZUIWZtdGV7Vz9fcjhIfnFkcXxxezVBTVVfMkl0MUk0MTQzbn54TD80JksjQk9CNDg8dypU
ZXFsbAp6ZjlYMGZ6NGJIWi1ZJH58QkZmezltUCN5ZUBZWVRxLUJJQ2ZZJlN0RFpEbCNHe1p0ejAy
SjFrQyViYFVePDVaaVoKel9fRmkhdXsya1hgaUVOVmxBfkwyKV5MVzg9XzlWQjt8QmJqJiNiTzxs
emdWM1o+bDlfUmRtIShjXkM/SlU7dEYwCnpFaEBvMXk2UWFfPn0jQXdYe1ZZK2BDXmtOa3hoZ2Ix
UDVjQjAleHVwQVh5ZzlOTz1TblhySlVFP3JRZ3tMY3NuKwp6QVpLY3RHTGZiS19CI14mTmV2fDBe
ZkImP0ROPWFrOHwwIW5wNTI0TEQyNT1zODRCUDhWbCgzPWpmbE5we1g+ZUAKejYzN1JpNXh4OyZK
TmwrWFlJbUF8eztYUn5QKnN2WURFV1lKNkk1ITZ1T34ydHdGQzFaUWV2QjcjM3p+KGFweG4mCnpe
SkA+TWNgPlBKYWlye3lUYDxqWnJXWDt4LXY3KnFtRHhJM1ArTWchT0Mla3cobDtWT3V6Q3w4I2wl
OFR2NChHMAp6N18xY3c1Y2ghODliXkxiTXRDdiRDVDdJT0B4QT5pdWFuLVYraSV8SG8tcEE8MT9W
LWteUjJRPDU7Q28lWHhtTGAKejAxOHQ0VDBUVHdPXncpR3h7OU9TSl45X3xrZ3dYYDclMFJ3IVBP
fkA/eHZuZlVlaHZOOzJSYztebD4za2ZidGszCno4e2o3cDtTJnt1VGxUZTkmSFRjMzhxQCVfS1FG
azwmbnt2bXJON3kmQ3p7ZXRjRS0+cnEhNkhMKTJGIWFhPTAlIQp6TSVCd28hN1RRNXQ7QGFfI1F9
c2pre1VlYldRWjh7Y3AmSE5eJCpKZkgjOHNwa2hre1JAQ1ZCaVB1UEB5RWh1e30KenNRZnVoVHFW
JXJpb0FUcEVwaE1maHlSWWJWZlZXYFl3TEZYVVdtLT09PUooYnlNZiE1O1deQ1YxZ34yMTk0WHgp
CnpGS3x6e3BtJW4tKS1EUmV7UWhrKGQhUWFvSSp5JVduNmg3PDZBe2kqU29iJkJeeXxTcGchJkok
YGtOPnp3VUozeAp6YUIkY2l1PG5TTk9pbTN1WXNRUDVqYy0/TmF4aihqPCl6fTsyaG9GbjAmdV9r
Qk19T0BWUzUpbkRZeDFwZipSUVIKemBTKSR4QndiXmJ1ekFZJWducTdDRnBpbnRXRWEpN3lYNDRt
USg5U3h6PT9rQnhrKjZwQHc0MiQqPiowRkpLZ31UCnp0Z25oKUFTRjhuano1Pmg2P2Yje2M9PFFp
Z1ZlWWJyS1JhZXFXb0UrJVM7dGg9TSNpQnRlTmgmVUp5VjlEaVEyaAp6Q292VDNmdjFlVFFAbVNY
bkdvJCFhcVVsZHY2QHAwR1drb2FFcEc9OHIpUlJSbWB8cH4oVDYyaHBFSXU9a2EtbEgKekhGejJA
bERfUSpgUn1LNStlTmR7V25YLSpoRUhuYD4qWXI0V18zNCRHbVZJbzhPTFdqY1pLNGEwYCtZdi0h
Kn05CnpCd0ttO0RBc0EobkRJLWBpSEA7YD1nUCtte2xnRkxISzNtJFdAPykmZEdoREFfWjJ4T3pJ
MCRwKFpKdEgkdkN4RQp6aj4ra1lOQkp6cy1UbFN4IXRTSH0lSTlmUXYpbWMhQzdYMGJLbFp2NGYm
fUMzK08tNGs3QTxwfSttS2xRNHJUPWwKekNuMntwRG4xPm1WT3xLWVo5eWRQJShOMV51aXNWOHk7
fnBgeDRxRlhEPyFfT3lOOT13KE88ViomTX0xST5kNlc7CnpHclQ/RztsMnZAT2I1a144dzw5dyVK
YmpiXnxIfVBZS299STxxY1UjRVFWPygtO0NXJDNfK1RpeGFJI2xELXhKVAp6KEFPNmdwaDdoP3lf
VUttXmpXaSZOUGBEWD5+Ym9iZCFYclRienAyWnB+SDhsZ0opSTM/bCYoYkRpV2Y4Z0UmNmIKej4p
OUdCPUl1LTYlSSgoKz49akdQPkN6RDhjMG9XSVRGWkdnTSFRN3xKclVZcTQjXlkodnVEdS1hPk9X
RGE0WTR9Cno1YV8qbFcjSUxfYVZmOEwrVHl9YyYyVm9qTEVJQS07ZVFLNldvPzxLYXdZYlohIWYz
K2JANFVpIXZfTHQ5dCpxawp6RFJ3QFQ1TnNUYnJrRlFBJWtvJUcxX0xifGlqS0ZfSVVedGVZJF84
O0dodH50NWZJZVM5XyFrZzJBQzBMMyVEQXAKeiklQEc9cDZlfjJEMnFpc0xnZX5aZ18+eEF1Sz5p
OzFWV3gzYz0hczI7al8qaVJIT3NiKj42LUM8cWNqOGBAPXJPCnpQfVhNWTY4WVYwPmdjWVArSG89
TEBYTGQqan4ybG4tO1dIZyl8Y0NpeGtzSCRLPXs1ckdTREB5QiVMSXwoTkNjOAp6MUVyOEgrUU8p
flN+S3tnP25IfDJkQjhTS3MpQnhRPyVHfX1vKkxWIU5HMm0qVG1SfHBXan5nYD4pQ2xKQ0UjRiQK
emNqKWZCZyhkS09LbWMkQ3l9SVJsYXNuZ0lSPnp+a1AmV1d+OWNDOTUxe0FLbW5aflpNc3F1cDZR
UWY3SjBUMTtDCnpLOSpRZDUqKEh4Vz10bHxSZmpPPm5rb1cjQVUzdD5Ka3V6V3h5NC1sP3htVHYx
NV9yMVhAcEBkel57JmomO3tNcQp6JF4wJDBxJnk/a2JkWmgpa1orTmZYZnFMVEd9UV5qPnFIbFVI
NFZFS2AzeV4tejZZPDZPODhIZjR2Xjt9IXt0LWEKekRXZzt6bll1JTZ6QTF+QTV+PFhOcllKQlM4
fnNubiRqSURPPHlAbUp5ZHppJVpIJFokKVF1WmF6JTQ1PTFtfil+Cno0UWB6WXdMSVlmTGZ4bVUw
b3xHXzZ6RllANCpoKzNjej53PzxUV0RtPmZ4T35pOC1JYiheMDJ7YzRwWGpoREleMgp6WEIxTFA0
ZHZXdWMlUFhRe3IhZCM2PiR7cm0rTThFSk04eWYjIUgkS3A4QXh3VVhtNWA3VHUtSiRtSGU8ZUR6
OFAKemtpblYhT2hiPkNHPnZ3fCZBeTQxNX1fMXcmKjlLOCsyZDN2MU4rQGEkfDgyMG80dTYwVGpA
dSZrSSF+cTJWOVg7Cno+dE12UURJfE8kI20rbTJPKipaSHFgX3sjOClyeTZgJjVzfjJre080RHUx
NkZuMFA7Jl8oMCFlNSVCZWwpe25VMAp6Slh+PDhVNmhvSSV5eH1xR1lfMVRxN1lLREopRVRPQ3Mm
VylUaUNySyoxJURFKnZYZEQtN2h3RSpMVWdqZUhSTWAKeiZAcGtoVGkmZ3RtI0tjK1FJSysyWWJu
OS1zRlZLTkh5SWdmb2I0SF83N3lZaCkpUnEkN1B3fCthRDYmeVp8a2k5Cno4WmI2c3tvQnQxRytQ
Z2ZJY3hkfXttQH4xbnpoZTtMSCk1OyFnUzhAZGR5YWJwZEJjPzdKVmw/dFMrPCNiUFNNVAp6MkAw
dVlkc1dOKDtXdyluLVBsQS0wcis2MkBiWWtFYWBrezBzfSlmSmdZWiM1PURtSWRFdm9rN2FaSlJp
e3ctfH0KemtlYSY8eSNBMmBoaml9XyN2Mm03c2tuZEZlPWxWeHomJSlFRT1waU9FY0omc088YF9i
NV5HJTxuI3Z6cEBval5YCnolSmlCNiFofntHU0J4RG1RfWs3NHFPdCs4NClWJX5KcWAjaSU3Sml2
TWVJVUA5Y31FSV5LNDBsUHw0fVM7PSFANwp6R1oxPDMhSERXfjlISj9ZKz1INktoaktCclRQaH1r
SFpsJTVRJVchbmxqK2M0SUZNMlBFbTNDc0FqfTQzbzVfVlgKekktITFhNWRQWjlNPV9RMDQ2cTBr
eXxSOz42WH1aQTNiNyZ2YkRiNyl2OEN1SSgrenpTZjN6JlAyZU9yUE5QP0R+Cno8V0U4eG5wIUBR
QmVsZTVGV0sybE4pJH0hY0NCcGZoRElxOXZJcVpCdjVzUTx5U1FpbExiZXIzUlRHcFpmN3JpYQp6
IzwlfjVjWk95P01ZN2Izb0cjeVoteEBTMHlSIWs1KzZUVWpATigtfGJudCNMSmgye30lang5TUl3
dXZlOCY2PmYKem4wQCkwaDt+NUYmQkc1djxBc1RPZkx1RUZ0QkxXTSNycD5PRlUhPXdvVyZaU2x+
bnJzez8xdz5uV2ZXX2RucFRkCno0cXZMRFlKKmZ0PlNwJU0oXl94Q1pwTkJuPHYwX14/eSQmaSop
RCVMcFFwJDBOeVJCTHh0anBNZzJCdDI3d1YtfQp6QTc/QHtlWjtjQkQlTDBfcFRfaEAwYjdOb2I+
YzY2Slh9QXxaTDlJRU5NYFU+YHBoN2Q8K1JRaUl9QEU4WSk3MHMKek1DKl8mKSl9R2xtUn1Ae3Y5
Km5tKTI5LT1ybmBRJHJjXjRHKUdWUUhsVHI2QnBHeHRIdVUoOEFGN0ZmaDU0PzV3CnpqK0VZVDk+
eClQV0wtaVFAUk5tPGslNDZfeHUzKVJKbGdiYWB4WVUwJSpfMjl5eTFnVSoxPXZnX0I7YUBKYEo3
UAp6WmJ0cDFNKnImMypTMXI2PUV6MUVVKWlXb2xPWCpGeXJjenRKYH1fYitTJmJoaz5UP1IrfGNA
PUZPbWopNVphNl8KekBEa1Z5NGxeTD5aMyNTSUBzX2VWd2QzRCk8Xkl2cThhfkp7fDRtaE9MXjw3
TTREOCl7dXQ7R0lxcW5gb3FDa3x4CnBOaDtXYSRDMChtZHBxWXomRj54Sy11VkQ9RFQ1JUp6aDha
VCNhWG1qcjcwJSp7e1JhY1NgWXZMCgpkaWZmIC0tZ2l0IGEvV2ViRHJpdmVyVGVzdHMvaW1wb3J0
ZWQvc2VsZW5pdW0vY29tbW9uL3NyYy93ZWIvY3NzL3VpLWxpZ2h0bmVzcy9pbWFnZXMvdWktaWNv
bnNfZmZkMjdhXzI1NngyNDAucG5nIGIvV2ViRHJpdmVyVGVzdHMvaW1wb3J0ZWQvc2VsZW5pdW0v
Y29tbW9uL3NyYy93ZWIvY3NzL3VpLWxpZ2h0bmVzcy9pbWFnZXMvdWktaWNvbnNfZmZkMjdhXzI1
NngyNDAucG5nCmluZGV4IGUxMTdlZmZhM2RjYTI0ZTc5NzhjZmM1ZjhiOTY3ZjY2MWU4MTA0NGYu
LjZhOTI3ZTFmZTJhYTg3MTViMDRkMjBjZGJmZTYwMzlmY2UyYmQxYzMgMTAwNjQ0CkdJVCBiaW5h
cnkgcGF0Y2gKbGl0ZXJhbCA0Njc2CnpjbWVITFhJR089eDQhUXJLdGV8bDFXfGV+KG8xTmU3aWpg
WWM/Q2w2TUY9Zlk1fGtuK0BGOz52M3kzMCRHITs7Swp6NkJNTj9MfX4hKFUxP0kxN2skb2BeWD5l
QWJGRXBrWFV8Jks+QHxETXA0b2Z1U2VoRiQmfm5pTjBLaX51cS1PO0gKejtPUCs5ZjxzU3hxT3I7
RVF2dmhSSHEhPXg+VTZxZTdwaGE4KlVpWXYzOz9qZzBEIXY8MEVlZWp4RnJBeGxMM0dnCnpHeW90
VTBSVHNFLXVvLStyO0FCaW4lZH03aE9xek57Kk45PWVuTWVCYipMTjAlRz9eVEdtUGUhZG88SjM4
e3dIKAp6YkxZaVYyWHBLcTNnekxNVjRaNjRQb3xyaml5NlQ/MEdrezd2P1pwc2FxaVhwQCgrQlA8
TWJyeS1OXlYqPWVNdDsKenU0QlB1aFExdTEwfksrMD95amk4eGwrN2Mmd35NQzw8XiZzKCZWYSE/
dzgkZFMqeGUhSy1iSExkTyRNTzEqMjFpCnoyNGlmZFBjdXlvKGg4bDtfJHtJajA4RHNlSiNDeEZ2
MntsfXhBUj5yUXdeenRsSERTbGc1RlI+Tn1ISHFuMWl5aAp6YkVYYSN6WSgzUlBjSE4wTV4rMElP
NDchWnBPQEVPKFZZOVR8Sz8pbi1ofTMyIX1xM35OZSVudFEoV1o1eU5eMigKellzZHFrKVgwY1NV
PCg9SGlTbjN8PG0tZkp3K1o2Knh7WWtoNVkzUVFGMkRqPjYxfX1AVT41SmRFNWNpSkIwSUV2Cnoh
NXVhKitYIVo8ZSY+YWpRXkw9eEZYdzQlaGFDQ1VkNitsbWpMPj92SEt5KVJodGgzTnhkZWcqalEm
JVF3VVIzNwp6THBiXj1KfTA+fSslLVA4NVBGUj9YSWNvc3p5cnUpUmJraHw0TXE5P3FQU1puKUZR
WXkqMFF9PWs8ZlFqPWttYXMKejBqe3UkSShpbEsqRVNreXpHNVBJMFMmOTdTN19qcjdBXi0oYTNi
JCotVWk4P2IzTGlzQ3FENEV6aGJRM3JIQDgxCnooP1hQTHhtJV58aTJmdFZCaUhQaGo2UlA9Mzsy
JCtxeEVOKFp8dl5ebm1WO2VuJWclOTNuNDgzZ0s9SHVabXAlcQp6KVReN15rKGhHZUFZQS1TJipa
emZWLTtaNGxBeUhaSmhTcVRKSVZnQEVYbX14R0hEJHJebGlITjYqWjV4V2Q3OTsKejNaeVRmRzBm
MlFpfEVVQUhvJGg0Y0t1ZntydyhrM2lnKE04UyRnQjZ0R0x+fnUtYFMkYUVHRjdFa0RMZUw9O1Ul
CnpsfDleTCFmR09AYyFxdUtJUzJQI21iQE94ZzZYU0tBUHA/WWh5WEg9Q3szMSkkSXxCQV9gVCZP
X3BmaGVZbEBHbQp6em9yRW14VEBhVXMyRXlFcU9OLVpgQkp5cVlRa19aN2dieTV5OX02Y00yN2xP
UmhvTioofTx1YXJ4eD93dWY4OXoKej4jVlpAb2hRKnZXeXc3RkkrM1Ujc2lhQlBPQ2JMQk91TWhB
Q1V4Vm5QfVkxdz4oNSYoZUlxbCRHNUdhLVJ5eDwyCnpEal9iZk84P311TlZMVVVJYUEtI2NffTU1
YlJRaDhMN0oyd1VTXzZhTVFgR011fiVlJWhJbEgyQlRacT14fEB4bAp6S1JrbykzXiEhJk5gWHFL
T2t6X0tIMWM5OTlgUEV8N1FPXzlXZio2YSljQTxLaVBzJmtuLUdZclkyc2puKmRuSCYKej81Kjxx
SCNOfVhvODVZVXZCVHdjI0l+NDU4K0NRVyVDI3Y/emFIdEctU217KVQxaV4hY1l3VUU5ZzA7UWVC
Pz04CnorN2xqcmVCT0ItVHpnWiR0ZEAyMkt8eCZ5dzR6eEVEd0J9RjVgI3M2SH1mNDQhN2JCe2Y+
RH0wdCtmUiU4QDh7Pgp6aHctPUdPVisxVT1IcmtQNz91cFhjOSpGejMtend5ZlFEZ3xSYSt0Rmg+
XkRJRzlPKDhtQDY5RFVHLUd5SkAyZj4KellnWnYwPERJdWo1bStuaFJEPmlfZXROVTZndGJqK09f
dUwmQTs4RGktcTNNPCZ9QzM4JTF3fkREVWxJTzd+d2Z5CnpIUk5GQ2FCVFMjWFVWRGVjSmoxKEJt
LSM8WUZ8RUFKYFVhNDlLTUROJWtBMX05d0codW1YdWdraXQxRz09QEpKJAp6QFV2JjFgcUdOZ0NW
b0RVUDhmbjxWcUdSN1VhJm42QjlRTDF3MmR1bVZhZXgmcF5XMk1gbUk9MmI1U2t1RCp1K3kKemNx
QEt1JGQtbDZveW1jPkM3aUE/b0RjfitwZnsrMUQyZlFOMTJpZnZoYlBhVTxmUXBDQH5XMGdEM3NO
bkxESllVCnpfVXdFKDRsQVRiUD1aWj1pXmxvZCFYO2I4e0lfMXF7WVIjQyoqb0lGbEtlbllOZkhk
QmZCcjxeJilKamFrZWU1QQp6ZjRTSHFtci05K0hwU3F2WHJTd3lyVkpAS3ptezJYfDhtenxWWHMp
dGllJVlWeVgkO3MzMT1GdENlQVlFMiZjUn0KellsTD9ZQktIMmAzKXhHVlgzKExuXktRNCQ4bDhQ
SjZ6c2IrelZxbWx6bjVRfk4jI3dBYX4pYDQ0bkdMQyNVcnBJCnpCalRBSCFuTiRWeWkpelktb1df
Vy1JO09jMEZQcW08WlBOWXR7bSVKZUIpX1JFaWY3elZWXz9TNEJTJGxqOzUwVgp6VXd7OGhwLXlh
dEI/RGpzSEopSCYkUldzdzVINDlHNyN+RUZfbzZweWZPQys7QkNkKUIwQ2huRHQ5fmheVWw5eXkK
ensqfiY/MS1zcjVlKHlxaE1ER3VYNU5lcXNFIT9VZ21Ue1A/TTd7WlJnLSRXanRqen5KRzZfNGt1
Xk5VZXVjOU9aCnpTRzYybUMwLTdue2xwaTFnMWlXaz1MXkNnUHFGbytSMkNaSmhBMW9kQXxfI2lL
akl0ajNtemU4VH1VVGc/SFYrIwp6JkYtamBiYzg1YjV5dGpfbSFJQFpKbSF+WSVuVHQ5Iyp+YkY0
djY1SWl1dkZtNHs3KCMkREozKTFyMlpsTHdnZEgKejwqbFRvQiFYRntKKnJsVmAlQDRXJlFfQyk+
cDFmKiFKVTVkWmcoQn0/bGc7enU5NEhoKSRONGMzemlWLStrbEtECnp4X0ViPWRCQTQ+M2d7WWdE
LXJNb3pzS1NhKj0wR3VhO3c0SU93K28qU2ZqN2tYQHhyZ0JEQE4pVjV9PDVnNHNlTQp6P3o0WW9T
O1k+TiM0ck8/MUJiKzN5T1JlJEZPdE9OUExgLUVnMyZgcV5+X3JBWD5eJm1jPk1LcENWTTVSZiVa
ezEKej8jQzZFUm4qPSVSMV5eJVV5fWRjcCZIJW08SyFLLSM/PipQX0RNUHtoY1JONEV4azxidHNU
fDQqPEZwWUFJOD9UCno3XylIT3RiX3hfV3M4bE5palVyWT1GJVUjbH01Q0I2YCV0MWBXTnBkaldL
PXkkRlgyZEF1YUQ9aW03dnBefUFVYAp6WGlYTDV5Tntla1pnbUtpWkMzQm1wbSZDWm12bGhFZGY5
QXZ7Tn1QRnUwYnp1ekZ6N0xgSUItYHVgP0UjcnxKb2IKejY9Pk5EUExoaSVsK1Q8ZG8tZTZSSUMh
UFAtcU53WFpiJDI7JWxfPG1qfSMjSWw1QTAwIUtnRjhXKlpVXisleE8kCnpScUNfO1piWDlKNEFY
QFd3V1ZQT19YRFRtZzZEKUNscz1XamMtM247TDFMTldHTXdXJlh+am5pZHNHZkdzPChscwp6N0dE
XnpeK28jelpIN3d+TjE8VWl0dl9tdXQ9YVRwWXY9ZTBrRXRASyo0aGU1d0hwfjxkOEVFNE5SaiR5
UytfWncKek4tIyF9cXp0PihxOGktMHRXdHdESzB9bk12RXNJciYqcmV6O2hTWU4lViQ1UkRDOF5z
QF9Bdj4pRTZlck95fT91CnozNXlHPzg5TFB+SG9iOFB7WGEkKm1wWDZEZXhVbTsjczZmLV8xR2tP
aUk8U0pWZjkzfUdadlBwK1NgRV5XakFPdgp6Zzc/NVheZTc4QHd+Y31PSmgzNEduRHdBXkB1LSVI
enpEQEMtemtsQE0zaikqX0oqVUIjQ1h0JStBQTB3NX5jbCQKej4zI1lAaFc+YHkpdWRmKClDSml5
Nj97ZEJZR3Irdz0hJihOTlk+Pm9eXn1BPnZhc18rNUlrY31ZZDZ5PyNoZlZVCnpEX3Y4Z0EzSUFr
OzFSPz50X2drK3VfejwmJGNsY19id3NgK3ZlWjlUcDJ2U2ZxYjIrSmV6SnFqR2ZAM01tJUtseQp6
K2JId3V4fmh0TSlXdWNqe3NWODk+YSNPM2h1WVp9T1I2JWJ2a3dOTlZMamlYSWh2MXV6TntwJXRu
P0tPd2N3OEQKek07UGlPbTt4dFc0RUdXbExoVzZSK182UTdzcHIhUWlHI3JobyM8QXxqNFBrMWhv
Yyk/SylnSEp4TUAzS3VhUjdfCnojazhJeG9tM01xTWk9LVBCY1NBUSQ9PGZAV3VKZyF3PCl6Nkhu
aHJncHpVR0UtUiFOLTVRamFsR2xjNj5IYWcycgp6JEkxKlMpfiNMVGJlXzBoWiNWaWFRSlVYMnhJ
X3FkNE9hND54eXNVQmgmMGxGWFktRyp2enFtKVklLTM8d358cjAKei1scUlDWS1mYVF2ckRvWVpq
S2RhQzZ3PTRkXnhyeDl0Syg7bXppPyRNVnpKbmZsOVAqQ2VyQTBxTm9idzNSc0J7CnpWYipBO25D
T3Q9X1JENnR1ZyhNXm5OS1BWPn0mazgrc2BPKDhGKXs2KSRJRGchbk8qU2RWdClJY1VMWWgjNmxR
PAp6Uk1NPEM9YTx2XyF8QntYTDJTJHhuJG17Z1J5P2JEclJuXnVed1dUIVg4JFF+OXJ1YjlYXihi
Y0FIQSk4STJFbV8KejQxZDFpfEokd0Z1OHxVNDljamQ8RX0wK05gdGM0STVQMnFBanlyOGMxI3dA
TUgxNW16e0c4P0NxSmF3YkBAXzs/Cno+Wk5AV1QkVWg/TD04SnAzeGhse0hZV25xdnc2X08/O2sl
Ul4zYz52Wm8haWxjJn1OYEc+WHFzWkp5fil7S0d0Twp6elFzbCFfPmdgJEkoWjAqcCUrZ1RvcH1V
QktnU2BlQ09mMkklcTNrLWFvM0soRWN5NWFkV2whXyN4RmNTYiUoOEoKelFGZW9WeGpFe3xgcT5R
ZVQzXlE2JERwNHlAbD9mZHRIO0lTSStxSigjYllMOTRBbEo5c3NCN2hOVmpBUSE8R1ljCnpHdWkx
VFZ0QT1pYXlEQDN7TEIkezxSb0B7YV9uNCVMfENQNWQrTl9TUG4hTUNLV2R9ckk3c2l4Vk9kcCtR
aiQwKgp6NDZGM00rR3FwWDFWQWJrens8em1vZEgkOVM+OFJuOWlUQmxYT296TmViKFEmVGdYP0RQ
M3ZyVSZ3QkxNdUU8bDQKemtOfiMlMXUzZnhyJF9DcFpHTkU8UyZEVldrUlM4fW91ekRwSVpxenBO
Vm9FQCZPdyhKb3s/KnhHej89PmM1aDB4CnpHJTNrX3R+RWtBTz5hKF5xMEFIMlRXX1FjU0NOJDxS
dnFwc3ctJXJSY31ubWV2e0coQi18I291MV9hMz9nS1FQeQp6WDBfJUk9SHxvYnByWCE/I1cwWi1o
eyFhI2NgfEo8YzJPMW1kWE91QlhUeHQ+dnJtdGZnXz1HVnNZUHwwTk1jaE4KenJwP3crZERVZklF
fDNxYyVCLWE5e0p3VDttKjtEWnIyMl9WWnBfbEtAODN8PD4qTiVtRFUyTSF2RHxSS2hTZT5tCnoz
bEQhekNiOUd2MEs5REhVfkUyT2VIck9peUkqPDtJdHZhM25LPV9QMHBgKCpjfHk5P3kwekw2USg5
QlZyI0h7fgp6eVZuMCU4S2tFTVJxfE87eEFkRk9wKVk9emdvNmglR0N+QTlAXmhzOUB3cGpJVFRV
NUpBbDJPRTk+YjBOSTQhZ2cKek05Q1lKVjV4R1VCZCYzeXMmYGU8OVRzNW9SUH1yKmltQSNgaX16
MW5GJm9sQnglZ2UqQFgjNjUoJHc9KGV3clBFCnp4dVlwIStoajxxd1hoVkVjIVRgKUNxI2NlY2M1
UihUVmtLX0A8RXs+aVpKeyE8c3BrM3VHIylZfDd6V1hxZVFsfQp6Z2FjV1E/dF81VWNeIWl7M3JC
QXF7JU1RbXI2X2pTeGRhdz8qfiZmb2lIYyNzdTF0QTtkLXEhKUNoM0U8VyRGNHAKekg7aiR2VWU/
LVpWST5WaEBYbVk3LWxMVnZhcFZHJVl9QC1NMSFwWW5hR2tRdmJHfVk/VCVgfEt6O3FKQDtWRysp
Cnoza0ZeQyE2fCk+SiFsTCh3ZGZYKFA4cEV+cmxxSEN6ajJsfVQqX2JASXAmWilPNURDMjczV21Z
VGV0OHhiMykhfgp6PTMmMFMlPWUtO1dQST1hQyUlRHdzRShZNSFSV1FYYVZKflZOSj4jIz5RIzRh
TSRNfjwrTk8jUz1BOUZxP2ZaQksKeiY4eThiSzA/YHNLQitzNF92bWZkYCp2KVJDbDZvOGZLITtU
O3MrJmtWeyFRRGglRkVVOXEwKVlEanM5ZClhWXZICnpDXn1acHBDQTN0azZLTFFPLX5CS0FnPEZ3
PnFQSn44R2ZUP21kcihueitSfX5ZQVAtMXNNblFqTERUO0ojUmBjKAp6VmNDc0tpbmR5NShTJHIo
bDMkWDk1bzJxd2ghVUgtYmZWZFZgQXRyMmc/WklzVXJVNEQlNUQhWjxDKmJPZF9xUkMKejsrTHQt
QTBLTzw/bkxyfGc5Yyo3X14hRFglNDVJOEgoJGBfMnk8VT8qZX57YTRIeHR0Y2pxJTZIJUZjKTBy
TjZTCno+cGhzVGxDZSlOeyRtZjxTNGA/MntgQ3olenhzM1RCPjR3N25TU209SkFQNkwwPj5+bVhG
S2Z+NSE4U2RtS2M9RAp6VitfQlQhd2xQMSZOZHw8SjVJQW1rJXMhZz49UUJPZUBuTE5LKjdhc1Io
TGBEP2VZYHQoYzh4ezFXZkBKZH4qY34Kelhxc0wkcmk5cjYtfWJMQjJSV2NfRyZVV0NGYn1MWDxz
NVF4elpse09YWUJFUGJVM0h4dj1TSFZQazJke2BNYlo4Cno+P2xRPVNlQFAjQk1uZzZgI3trOXEo
N1lqQ1BpUyNvWjYpJUNsfTA3WTx8V0lLak9ubnBWc0Y+Nz0xZzh5OT5xeAp6PUAjTn5EZ1plZFN0
VGhNUlZpNW84KERkenljfCtxUloyenlESTxkfEtKKXk0NWR3blRlTFNRNzVFUHxrUEMycVIKenZO
QXx7V3UlPCF6WFZiM3p7WFBvPU59OCFMN3RjaG1rPHY/K2RhdERnViM4fiNtbUZXIV5KKTcjeiY5
U3VOP3B8Ck0pO0hJeSZfVCFsN3BqZmw8XlRXeQoKbGl0ZXJhbCA0MzY5CnpjbWReP2A4TzIpX3Mz
QHBHbUxFKmAjTT4mWmBtcl9rY3d6NU5oJmc9TWNKM0UhO0NFMUUwcnlWNVJvOz5udnR2dAp6ayZJ
PT1YZDtjVkdaQD5xX3h0bnh7MXU8YWQ3WFAtX21fTGx6MzFOWmRjRzJFUVJsZyNWbyg0OHotPyhe
WlZ2emUKenw2VCNCPzRaQXZYbkE0eHVVb1JVYn53OH42OFhQI2UpWnRWZSt4JGkqYHFFMkx8YFhh
Kj1eZSZXfjw5TV8jdG5qCnojclZIK0FxPDdnRUd8ZjBKRmFRMzhtRShoPiU3LUQpTnw1WXFPQj5p
OyhiWiNvNjJ7SjJZOSZeRDN+Ul4kbytYPwp6d2J4QUVJYil4d0N3SzNUU1I0UVZ5bTZOMXJWZ1Bt
bXQwY2FyeUJVY2VIUF8mdX17P15KbjdmMFBUJCNoPlVEcUkKenIhcShGJjFqSjJfIWp4ZEFCPCk3
SCRmb0kqMnp1bmN2dTs7JFNvVTdicj1BaUpAND1CQzR2Tk8+RFNgJlVJQj1LCno7MikwRip0XkZC
dlZmUHVUNEZWTVN3VXclWGtzanlsKzsjKkREeSU9b2NGT3l6REx2TFIoYHpDU091Sj0/RldZbgp6
NVpEIVVhb0Y+LSRAPVZ0P2EmO1VRWU0kT3FlMFpCP0plPzhabk14RGUmdXp6cyp6bEhkPG4he2Zj
T3ktM3RJeGMKemw5RzZmVTs/QD4pVjU4bmZKUGM4U14oe180Ymo1SFFfQiZFWEhXajZ3eEBCOyFt
cjA0Yl9NeClVRkwpVzdgViFjCnpwTXAjQyFhISFzaDNoNDkxeX1ecWZpbVhWWSUhK3NZdTBfRDxQ
PWpjPDUqI3w2Vjx7V1pHTmA2Tjc7VDVAQiYtTwp6NFlBO0xKY2dIX25CPURkPDZhcEl1WVhfZFNS
UzJ+ZDl9dSowQHRBdnAzO3hJVURgUTR7dlNIZUJITGwjdXVqPGkKemR3OUFvRkpkIVlZP0M5PS1X
fTI7Zm1EMlVHR3wmfj5Xb0pNcXBOKEZSOUxNI2pkWnt2SnpFY2tgUF45KDFOPTRKCnphOSV1NCQy
SjhUQWtVYUprX0ZYJWlIdXYjc3ZMX21NbXB7U1J9aWZjI1pjWHYlQ0ZzVD8qPk5eNnIoJUQ/MVlu
VQp6QWFUP1VaR2xPbjx5VWAlV2E4WTllKDZkJW9lPmE2VVhYczBtKTNZRHB9ZCVoYkApQFkhbEtf
QSZENntPUGxObmoKellZKiRiPnZuUnpMOD1DRGJRU2khREwzRCFQXnhoTnR3cllCeW8/aC0mT3ZR
WllKNmthe1JlIzx0Zmt1fVBrJWw+CnpTYzByeV9kKEskX1EyTXtZXk9+RE9LKHN6RE9uTWlfPHB3
VjlISmxqJSVwYkpOUiFOOCEwczFwe1Vwb2FqK0VUVQp6RUsrYXFMK3F3N0d9YTBQTDV1WXRmUSpP
UlRNKT4qaF9SeCVlU1J4QSVufEZ1QyY9Rj08TXZ2bkJBcyhyOV9BR3oKemojTExlTlItcFN0ek4j
ZGAyKXN2VUtyQVE4VkhkXj1iO09wQkN4P1JaeWtjSC10Yjl+cWJMJHgkKGAyPE5WfmNjCno0ejJC
cEA7fm09dz9ZWTNgMUhRc2U8MHFVcm5AK1VtRmFkOTFnVHRaKXNjaWB3dmsxJV87TVdgJlBmfDV0
Rk11NAp6Tm50VUFjT0V1JXoqSm59N21GMnpLem0tcEFKNjlWKnUqayVQejBCdytANkQkbmJYITVA
Rn4jIW0wRDd5MkA+KUIKel9Rc2dtajhnIUdBK0xaT1gpPE1UWm5tdFNaTXZYfWlOfjZtLUpJUVUy
MEtGNmBVNnJzTntpVTxEdnIxV1NAek96CnpsIzZjZzY9SjQpeDxxe2skNnh6JGVZflhva1ZEM3hY
bE5WS3BBQm9LZjlyNl5PIU1jLSUrenFlY3J6IUlCSFpQawp6dzduSnJtVUspMXFARTlmZ14pZ2B7
NmtDWGBpcSVmN1BvfCNXT29fenN1RSptKUIpKzI2TC0kX1IpOE10IWhfK20KekdMfjVlUGx0XjYw
PWU/LU1ZUnNSaHlEZ2xAN1p1RHd6QGpAT059MU9YbyYlOUZGajc5ZFlxOSNQbDJKMHRwWnFXCnpv
aileI1lGdD94Q2wrcjZyKWJHJU94WHhCOWJ6dWxSVzdMNFZ3elpBdE9EJCR3ZGRKc1l1RTtMYVRN
XyM8UUVrSwp6c05qPCpSQkZweUhPNmtVP2ZwN2JgeCR+bVhRdENLLTUmMTFHQ1BJWlJSWTgwc011
ZT97dmdTT29sSz1eKUxaeEgKemJBUmJSRnVWMExfVERhJjdjOW8+Z09XfXZibzl8bDhRVzNpWXc5
cUNEe29+eHReSElVPjtkVjVNSmdjMCN1SFRBCno8Yj85YF5LbXBjJlc0QkQ5OHpPakZ0IU1XdWh9
RSs8bH18e282b0dUYkMhTjRxaSg3dlhJRk1NT25WeE1iZk4pTgp6cGRCKk5CY31SMkh9cT9+V20l
V0hXeU5CJTdsQj1yanxCIW9JfG9zJjh6TlgyJlBhTyg3MyFTaUNHNl8tc2V3VE8KejFSeiZoeChi
MUg7UHlLcntZZm8yI19UY25qMlN7P15jKG8xMSYrZzBwZzB5VXZLYT44MCVFZV9yO0dgR1Vqc3Nt
CnoqQWh0d3BXJUx5O1g0THExWnEjWnB1d3pyWkUkc1IwODdkTnt3N1BBNnxNbyM2d3dKUDA4NUsr
aDcrRD5OeWVYIwp6a3w/TTxvWiY7S3JOPEw8SShJPWREQHE/Y2w0SWJSRiZuZE9zPDV1d012ZyF7
VEJVRDl1fE9NNGVVKn1tU1Z9YmcKeiFvIzYkNz1WTil4YyhwdXVzNnp3SFpWME9HKT9VN1BrVyNB
SW8peWRIcVdGZktRZDZpeHIyWHxPJHdpN0VsdH5RCnpQNnY8PzY0d2dBOHRVcVZtYTxoVz9lNTkl
eks4clowVlk2VT9uJi0wNW1YUUxSTFl2UiojaUhGYyRCWHprcWxIbwp6Nlc5U2lmcEZqR1NuUlQm
amF0P2g/JGEhZDVRcDxaJUt7dnQqM3QlPkpeRXMpSnRQLTJlTnIwRVFlKlpNYCZ9T1UKekNEKnVT
U3ZpRSZwfXVYfEAxZ18lfDMqcmEqTWJCViN+Y3NoZGNGUShkR0xuVHFhTy0ze3U9PXgxO1BwMmlt
ISNgCnp1WjJgVGhmQW1pU3pifDRoYGM0P15ab0dPRipvWFljVn0oZ2UhdkBeYnNlP2RhQWBNYSti
U1pMSWc7cElOMTd2TQp6SU9ZZks9QHNfUGo/fiNscW5ZMm8/ZDEkTXBvcXNZUXclZVglWDZZNCpe
Mjd7aE1XR3FJTEVNblZZVUVNVyN4N2YKenVeSSpuelhRQDZISjhuOzx6VU52ay1QRWpzJTxYMWlv
VSM1R1cjSEE9dWFUX19kcGF9Ril3YFlxOElzQWR0YDdVCnpgKyZme1VBdlQ5b0g4YX4jUXtJU1Q/
Zks0R24oekF5TFhxSUlCJnxSREM0PE1rRyhlV3M2N0dKeUVvZzwxQFI7cAp6cUVybWpGYmwqS3I9
V0BGYUBkbTJmKlVYWT02YUE4cFFea3g2R2Mhc09LXyFCR2olX0tYKEwpMHtfQk4tUkc+MjYKem9e
MStFd2kkZk4kVW51bTEoRlRiOEkjY1lnY0drbHdJRXh0I01iKEQ9eH5PVGVaXnViSilTLXl3ZmRa
Uz9TUkNxCno8ZjYmamg/ZXJ9RmY0ZEtsaCt9WmdEVV54ZG9eTjRYR0F8UU1sWlhrMzZ5MF9uOTRq
KD5EbT1lVTx4KzByKyhLMAp6JGBrRHI2ciROP1h5WWE/eShULXk4PXRFakZBOWhfeFl2ayEwO2ts
cVJQaCRmPitDQ1dPQDhTX20hV3thbFQpemoKelpKYmp4bTUmTm81eGVffkp3LWk3YCZHfT1yKVBP
R0dmRnE8Tzh5LTZDeHF9TytqVk9QS0NSam9Tb2RNXmZnU1Y7CnoyMVowfFhJNmVYUjdieE1TPSQw
ajsrV35CYlUqKkFUNj8heFQ7MkReek5gZHE+K2NAa1FiQiMpYXlgY29qJkMzLQp6KCMmeFZAUTNA
Vkpke3FkSDRnQDRaSmkmbXg5ZUBJbzdAfihvNXZUcmtXPlFFTzFULWdtbFRSSEgrMylnY1VDMFAK
emswN3J2RG5mKjdZNUp9OCE+Rl83RF5aM0lvSF51R0h9X2EoYXh7UShJcnZWJG9sZjNXTiZEWT88
bWYxeyN0cCo2CnpiZX5zU29WYnI0bHs7QGhLZDRWVUotMXNeaks+dVlaZnZYSSg7VnYmRUFvUXRm
SDxYNkB5eTt1U01VKnxhS1hLZAp6UzV2VT47KzRWSV9hPnloKkorQ2ohP2ghUVg/T2BRWGtAQEc3
QWpsb0plNTFDdypyUFhRPiN5P0JeXkV4UlFGdWkKem9sbXYqQzVLfC1wKXtyWmlDTmFpXjBIYDEo
UXIoSHozdiU3Tm5tcmlYdTJ0RD54c2JOIypSMyp3c1poUmo2THZiCnpuMEN1PXFrQz8qZTR7TkZf
Mz1eYlRiMWYhZz9AcnlGSDxtU1g3SiVGRDRPM1VaJUJ5XyU7MzBEWkphLUpHNWluNQp6RmhmTyR3
T2pPZXBQNz9+ZFJwaGpAV1U/O3pDS3o2ZVNBTVV3QXhUJUpNSXlFRzc7fGdfUSs3cnE+Nlp3MnR6
JUEKenp6Jm97d2BkRHY2NiE2V2s5dzEtZGdsUyNTbXtkb3h3Jmg1WjgmT05tbEJCdGV7SilwdWFE
emMhTEM9PXJQUlFLCnpRTkgyMz8tcklvXk1RZHQzVGshQkA4bCN9ZnhWdHJsYzhZPD5PUmFWRSgk
REtjezc3cVZeYCtgJV9Eb3RyVUQ9OAp6NH1MN1FuWmkzUmdVeSp0dGVZLT0kU3FBMkBJWldlKH1t
SWBuemhBVHtxQylteSNySnNmb1MqPFpOUlYyZ1Jsaj8Keil2MUNsX1QrcUg8Vj4peENYaiFUazY9
MyljckBKdyNPY05xZ1MzcGc3eHw0IUEkfHcxNVghaHVSKnZCM3E5WWE0CnpGe3h1ekVRens5WVBs
KGdrYH1HZmZ1dCVqb3RncXAkalp2elJPNEVzRXhmfjkzdll+MDRBeEg9bFI+UjN2M1FzMgp6eSR2
NFNOJWVlQEt6I2tEdEFSYVFEYGQhUiV9I0BUMT12OERBb3cqcj4rMGQxS1N7WnRBfktNdGdtKSsk
Skh1bVcKenc9O0BxV2smTXVHQExLeCNLM0AmV013P3I9akQyXykoKiRMbWtDbTRfQH07UVpJfFNQ
ZThoSUM2eHFCeSFMUXlLCnowMV94bWZOQTlVbEJVQEt6dTc7elFZeEhFPk9DQURBJGd3YVZxbWBl
Tj9YUUZATmtyb2NCfWxVNGhjQ2Y+d3Fpcgp6PllhPVBjRSFYbSNKRzh2QEcwbGomfiloU2NNfVg1
N3ZHdzNnPCReU1VsczUzZnxCaz41RlF3cUUmeyV1KGYkITEKemw4KzUzdnlZWmBtRUVwJllUPD0o
a3JoS3J3P35wU3tOKT9xezBxQlIjMlkhdzQhaFdNZGpgYShAQUByJHpWQit1CnowNkhiQF85KGNR
X0F4YlhJfC0ydz4jUVVocDdrPCtgejkrKGpraH52LVJlbnIjQzlVKyZqTDR2ZzYtRSRmN0BVVQp6
KDFmeEI4e1UydnF9aDNyRSFaK243PSg+RCZ9QDl+M21KXlI1fXxXVkdAIVJTaDNyeyE+UUh3ZyF0
MjlZUyZqaVIKenR5bl9xKms5SDBlZlo3aE8qYihXUnxHIVREWWByb2x+T2I0JjFPd2RNOGtiR2pg
XiR+TDVnZDxkN1lCNVlKV0BICnoxRWwzYDFGd0pOIzNEUjtMVTJYfEExZTBXXzF7YX4zR0BoJm9R
b0ZSNF5SOHlMc09odm0lYFhvZ3syOFpSZXN5eAp6cUI2WkhLJld1Oz5XWWNlV3dMPVBCe35OWD1j
dTNwLXtTO2hxYUU/YlNIdiRnK1NBNmJ4eStWVTNZVlRQRGo2Q04KektMYl8oOWdNMlkjS1c4T054
akg5VG9eWSlyP3FsMmNxOCtXRTQzOHVJRiRoamZkTHM2LTshanY1NWpHY2MzSXBnCno7fWFUMzJO
QUVHZVU7Sn0majU9K3VgND8leGx3TDc/TkRuJTI9ezRXUzM5eW4zZjsmcj18fTU9TS1ZMnlyeGVT
dwp6diUqUG1We197I1FrMXNEPj9NMktEYXBifnozIUUqLUxQbUNlOXE4NkQlTUdTZTs0fn5LLWpL
UXhxNmJeOTAyX3sKeiU+NEc+QFhxazhtdVIqfHZHZTV7QDdzZHM8YVJjSSgpKy1kaz4yaXxpO2d9
b01rZCFvXjA9SEcrdmNQcmNONTRBCnpMR3YkUGxUZVBSeHB+LU9TYl8qYUFDTzFxY3tNcGZTLWZ2
KEBVbVJ2JVVPKWNTdDtlZUA5KFMpZj58fmJ3VUBlWgp6PWtUUypzZGpMY2x3TVo8Smd4MEVeayRx
bk14SEJhezBeKCFtZmlBKV5aRUo9LSEhWmVsY3lOfkVGOE1iYilpOWUKel4+RyM/JVUzKWJxLXVq
P0BAdmp+NnRxKVpTfHxKeHpgK2RpLU01PEZpZWBtdVdsKUE3dGZ6SXlJaGQlRjVQUVBoCnpBeGY4
TXh5fWV2dT0qbHRmfmppKXBGV2w3Sj02VzhFd3hJeXZ+fiUzbn1vYn5gQmJXUkxmdkJnTkpZUXNm
OGVYZgp6YipBPTNAR18xLXF3QTcjZlM7X3kldUVicCQ+U1hNPWgzRUxgP3BCPlc5QTtgVjJ2TSl2
ayYlS0Z5fFRBaCNBUUEKemJfPzwhSFRxWU56UDZqcnc/SCZPYE9DK0lufXo1e3BlMWVTXldrNilt
WXY7PzdhNnt2SyNncjVgbEQjVDJWcElrCnpMVHx5bmtaP255eys4aEw2KDRFYVEjJTNPU01ERHp0
Pko9PTNmQCVMTHtgdlUkM1pAQTJhOUMzYUMtWVk0M2RSPgpwSTdKMG5AO2IzfmApdWJ2c3J8aVUo
bDtMe0EjRTZKYH1lQzR1c24tMHVRRWYmezJ3czFtKGw8TAoKZGlmZiAtLWdpdCBhL1dlYkRyaXZl
clRlc3RzL2ltcG9ydGVkL3NlbGVuaXVtL2NvbW1vbi9zcmMvd2ViL2Nzcy91aS1saWdodG5lc3Mv
aW1hZ2VzL3VpLWljb25zX2ZmZmZmZl8yNTZ4MjQwLnBuZyBiL1dlYkRyaXZlclRlc3RzL2ltcG9y
dGVkL3NlbGVuaXVtL2NvbW1vbi9zcmMvd2ViL2Nzcy91aS1saWdodG5lc3MvaW1hZ2VzL3VpLWlj
b25zX2ZmZmZmZl8yNTZ4MjQwLnBuZwppbmRleCA0MmY4Zjk5MmM3MjdkZGFhNjE3ZGEyMjRhNTIy
ZTQ2M2RmNjkwMzg3Li4yY2JlMTBmMGIyYjM0YmU2YjJmN2NhMzg1MGZiYzk0OGNlMjgxZmE1IDEw
MDY0NApHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgNjQ4Nwp6Y21adSRYSC0qUighTDN5MWVCXjJM
N0Q7cjI3PmU9eS1FYFZLe1YxcU0wJGBTZ2l4ZU9NP2lZLXkoMClqPXx3c3MKekM/cnh0aFg3S0E0
fG4lRlhMcnkzeHBVezxeVzFtbCZZWVFmcEV2QkdqQG5pNzh7X34wVC04dWwpJn5JNDx0P3k3Cnoy
RCFZZFdWcCYtM1clK093Z0xjRE1ebGBjNkpQND1tZ0BUMjBOfjlIME8lazlJSnRhOyNzaCNtOTAx
bkwwNl4qawp6MDVDWUdIUzVWLXo1cldqc3dvMihBPD17Rm1sYFFqTHRCTHVPOUNTMngqbGBQcVhH
Ym9RWDB3JTJBKHNVMiF7d24KeiZsNk0+OVdVU0smcHNjeVUyNVh8TF9pI3haSk17UTF6QkNvd25z
cyhDdCZKdCQ9PTl5RkJ2TiM+dmIkXmteN1NKCnpkT0pXLXBUUTB4ODZ6aiZWIzFLJEJ4bjM2KXUy
RiNleWY1Z1VuMmtJT3ViVSR2YWEyRTRDaypUd2lTRVh4bnFmeQp6cERsLTVMbyZJdVo/P1RgbWo/
JD0oPEUpQEpaeTluTCY9ejBSMXhVVlFCR1FSWEp2M045ekRZMyZlMT57M3ZmeXEKemdSOEY1NXxl
MTdNQHs4IVBXVj02UHhAV3NDU1Iwe1ppQDxwZ2s+dSEtd2ZiKmp+M1BHO1NBeU8mMWtUVXUjXilv
Cnp2enJ5SSU1MFpldDVeXnRfckNyJFZVSSg7WElmQD8tXjt7fVFVS2dFd0RwTHtWYHhqdEc1MkJx
YXB8NHg9aVk0Twp6VXQmR3RZZmhJcE84eDsheStieztLMj1Dcz5fPmRNND4pcVUhS21lX2FMajlS
TD0pVFNLV0AlKU0zfnJiZDI+SnAKemg9ZktKRTBSdEVzbF42SjVyYjNfSilxIypDKmElMnMtUnFC
UihHS1clMj5ldm1JO19oP1kyQkY2aGctR1NOKF5WCnprU0tMRGhHdkRSJFc5RyRVTElfLWYlRj5o
d1IzMT5lKDwleGd2c1loNT19IyY1MEU1eVB3K0pBOTxoLVZBUClLfAp6KzJxPUlPeT59Wi1RYDBk
b1VFViF6UFdiQVJvcEx1eUNQfUU9fFQ3cCNJdk1+LXx9RzQ+KXV5QHlEWWwwcnxtZ2kKeiVQQUgx
N2BTT2F5KjhIeC1VZ2oxNzI0MzlqdHNDfmVoazByTWc7eE1XSlliaUEzMlZjI1N7JitjWDJjYTV+
K3ptCnppMnE/N2x2O3VsMXBZVkU3cTt7bSVyQGxKUlh3KkA0aDl9cHBMdkxEJUR6YCt3MSlPUjJ7
NiFiQDVrIyUyQlp1JAp6MHMqfj43MzlnRj1fZy1iIys0TWtwKUAqdkd8QlZyKzBWdEkpUnteVyo9
b01MU3VQYzRMJUgxfHc1MEYrc0p5SHAKeislI0xaSEtkI31qUFBXVzx6d2U4YDFnJCZzQitXPGRZ
djx8VXZMaVdRPnNmNikpRV5CTGhndFdIKk0hPUthZntoCnozcll5TFReV2lxZVpHN3pNI1hXc3I3
Wm89SiE7S2x6PnAyeHgzSzJZTUtISCp3ZzBMNkYtJmJzalFEdSpYKFJFZwp6cSU3VUpFd1BiQiEo
ZX1GaDg0UFpOeipPejsoP285UDBoeWIweUZOIUFCVlF+c0dsJTZoUE4hfkxrJkVmQHd3PHQKei19
NChDeSVLRGYkKkYxZnpvS35ncE9uRSFkQnl8Nmk9PVlyclg0I0ZUbDktbzxoKnhlYjVYYClsantx
JG87NnpwCnpmJWE9QyQqSEhPM3lvIWlqbEBVJFVKKzNxQl8tfjc8RU5ONXhRPjh6S1loOF4mbnsk
X294WDNUdV9OJld0V2xUWgp6Z0dGZDV0dDlQblR7LXNvPTRHMFZlQURebmFLNlRAZGE5UXRgeyhE
PXJxZCNmQWU5YkNZSmJeampIcGpDVVlKQXwKemZKSlJrdXM4WW8wXjNNfj9mVipVPnJoO0dSeWFT
TD9OO3BsNzs3MlllbyY1bV5FRHNvYkB1RE0+Kn4xQzkwMT5WCnpUe2c2Jmp4TmJYKk1RYk0lVjte
TVdJZl8hOWFicz5Za25URSlAPDB5ckQqSWlzajJaZEQoRStyKGdqVz0zUms2Ugp6eWg9cnM9OWVL
VWlkQDtZQ3dlOyRzRiVuNm4+QjVSZGdrN3Elem9aJCtEY0Rjbit3PldeOGExdSR+KD9xS0VMYCQK
elhLe3d9T0dQSmxhakEla0RFTEgxO2JePjQwT2FGWkBtPypCaWs7S1g8KFpHRXl6LXNVMHZ2fHN6
cTJvfVRhNVd9CnpAZ0M/fG1EaXdlJHowI25obkNeWGBMKlJiSCtxYCtVJkM4d2R1e21scyU0aX07
THtzRXV0O3J+T0dSMzd1dDd1RAp6cV40WkoheTV0MEhZdTtuI3J6VlFNOCo+NW1jI2EzX1AqYkR0
emEycndBemBOcmYmKmdzVn1VSUtrZGNINSM0MnkKekBAaT0+YDZQT0dAYEdgcnp5USljdUhwV2It
WEJ2KjFgX0AwTnooMGF0b012X0hiREIpcDNefU1oRFR7LWA+TTgqCnpNKFV9V2UtaDxlN0BWZkNp
ZUN5O2ppYFFRKTtkSV5WWEQoYWNQVVdJUVl1ZnlQS3goUG9WYHdHUGk/PSlsSERpNgp6RCluWVFp
fT9Kaz5uR0ZWb1RiKTtBUXFoWFBTTkcyPWdlb2lTOUcrbTtfMExBVmZSKFI4JmoxeEhUMXghMlg5
K2YKejJVMjZhSllyPlJeITUwPGk9P3d7QiNMJkA5OCR8VGRUTHZSQH1eTnx2VGNxZnluOX08SlV3
P1RzRCgpeU0zZzxNCnpCQzF6WThwOzNHb3xKKDlFPTNWK3BxWjxpe3hrXyR3M3kpfTJlO3slcT17
Pn1rJmBme3V4TXwjcGxYSHMmM1dJMwp6Y3BjfEYxK1R9a0BwJXJCTWppdHZ3Qyp5QSgkeDFyODtA
Vk0pSndPUXs0bG9XaldPTVdjSUpuMWphNkt6KF55VyUKeiRYK35sZGdOWXhfKFU8TlA5Zis3WVh4
aWs+UzBIeG13SSV0PVFgQmNLaEMwTSYyQTUhS0c7Xmx6YVRpKylVI0N4CnpWd35KdChsdTZ9clFU
e1hPR3gka1U0ZD1MWkJ+eHQ4RzdCaiZPQzhMcDAxUEU5RXViemhVOzRJcSo5d183IT1VPAp6aWZ7
IUFYNHtgYWw1eDtHQzJ9Z3FVJnlOYXc4I1pgUkY2TnNfNzVDKHtIXjg7JURiPCZTUX5iUEk5Pyhn
ZUc9bVkKeiVoJjR4JnxDbzM5cTluejxKZnJmTiYodFUpaV5UUzcxcWFfZHRzZ0ZMT0JIRHFqdERy
I2BVS3RIanpQSG55KHxECnpeJGw5MVR2RG12Y01zR1U7ZnwyZD8tbWk2ZzZ0Tld8Q1h4WEg2VkVV
I05lJW0xVWQ5JGRkaTZBNSthRGR7SlVmfgp6dDNaMURtZ0BxZCRRbyl5SmQ1YVRfLWYxMCNCN1JX
O1Y7MHlBVDBFUylUdVE7JFM8bGBPVWhhejxqS3xwczhsS0IKemwhK1grNnpQfVlKOzVLRVJaPWJF
JGdUZUkjSjgpdHJkSyh4RSQyJntOfjw/ciVjM2gzcTFfP3N7O25YYk5DbjIzCnpRam5OV2VCXzMm
cypoPGBqO05rVF5sKy1hQnhTen4wT3R5OEVDT1Yrb2VhKUltfXMxYCVMWF8xYC08Qyp2PjhNQAp6
eDdZaVZAM3ZKNlpLWUo9UilWbVZeU20xNXc8Ujk7UFBsZ21Kc0VfeStYfnF9WXF4aWAoU0ZjQU4h
dzVydGclNzUKelEreERDJU9ic3g8MTtzYUR9M25tUj9tZHJAb04xTyZUYXsjSSUkdHstbjNZaHJX
NGgkVlM5O2NAOHljX0syKClZCnohbTw2Ym5JaGR5ISpNNXVLViEoVT1DM0ZsNXQjaExkMzhYPCM1
T0p1YXN0MWpteERpMVJXZX14IWVBWSFQaSlZdwp6YHVCdUcqdUJZSGVGTWh+NHwlaSVDaHNKY1VK
VVE1JkhveD5aZCZXYk53cFByI2xHOTJPQlJnJmE0ZkAlYFdiZzIKejxrUkpTSzV6JW9aUmBCeG1i
YH1sbFFhdnI3eU95dHRFZ0YlRntVJF4+e1o7dDJsSGAxMjI1a253dj4mSyhVfTl4CnpeYEpmQ3U8
dSZhNGBDdm1LWVhZd0tveH5ZZ3dTc1E3Xj1Cdkw+MlEwa08mOzttVmxiRTVYcUdJbHImTktDSFRI
Ywp6aUlxak9xUCtsTns0ZU14ZVVgV1d4YDQzemJ7c0J6bW1GbXpvbWdfZ0dEbktiMSE4OVJUY01a
KD5YKmNhNV8/RDQKel5GUSpxLTN8Ylp6dChQJjMqYVA3NVNaKWNMPVdJXm9CK30mTW1FOD1WIVJv
Nk1kJlJQO05jR3NkO19DPFZCLT5RCnpJMk4+SHQ0Slp4V059OFJncjxgcSFmQilwV2FRR3IpNSpg
RVMmQSEldHdTUTJMJFcrZiQpJSp+Ml5zbzAyYjxlLQp6MzUoQUp0NHhtPFFeLUNqYyY4NkVldC1A
VjlsaEZwR3Z+fiNFO048KCZlV2JVRm1ydE8zNDFRVVVjfVl+dWk5aSgKentUS3BJeF96QUF6d20w
MzY4XyFYT2pleXdQQ0ZsOGxqfWVeOFRgQEYzdjJ1KWxoTllwQCE2aCZuWFpoSz49c1N7Cnpva0A/
djdFTU5xNk40bDtvfjtIQi18dT0rUEB3ZkkwKG8kMmg/STt+eHtyWmNrTFcpcHBZKnA9I0QyakhS
XlUxWAp6WFZ7PXZBaTB8QWMod3x8JiVDSDc9MHtTYzhWbXtNK2N9KTNkVy15blVXSmgzM0Y8eylo
ZkQycmYyNEhRRntJV14KemptPnhlb3ZDN0tVMDlKTzs9JEJtemo+ZlpHU2U/az9RdT9mbDg9Y0Bv
UjlHLW9RLWQ0Q1AlQ25oUkhLdGFwcFl2CnpNamMwYnp4Nzg8ZTBPcmU+WnwhNCs+JSQ/THthVm9A
MyNzUzx0Z159SG1TPzBZaTg8YEtSTUNSaktie0ttJUg8MQp6Wn1ObXpNbWc5JWhGa0U7ZTtNSFAq
KVRnSklPbndZb2V3Y0g3aXEzUy1kQXc9alNtPGgkaHBDUGM+RXBkQEhnK2wKejtGJnxXJExTQEAy
cHRuUzlWQXxKWFRFRGpqLU9maCVZME5jVGZiIVojZkZ8dDIqQVF9cSRORGBocyt6a3Nsdyk2Cnpi
PmBmVGMjZyF4b051TlljWCloZkw9MmtDV3FnKWFzdjwmQjk0QDRPZjlFdDBeNytCWVUhT20weWNG
WlJNbXlLbAp6SmM8fH1la1Jtb3loPjklc2RaWW1Rd3V8bEVzejBjPG1sTlcyU0E+ZztvJnxvUlZW
Ml8jZGlvO2tsTDwraFVpOSMKeklsYT9jNmBQZWVDZ3FBKWFhaWQ3UnEhQUZgVlZgNGdRRy0/dUV0
QnR0WFlCeUk8M1V9TEhkUHcheEMlfipLfEBjCnp5XkshSkwyWVJ2LWJRJk8pc0d0RG5JV3JISVUr
bzVkaWBMYWMzdW1qZSNtMklkI0d1NkYzTmUqeFVuNn5KLWx3KQp6OUZqemNyPEJaV2AqY3xGRD4p
cVVhTXR9cTdfQllNYDZxQVRDQ1BsQFVIZWhhWX1+YD5GbW9SQ1IlS31wc14wckcKemMheUI5JURt
NHBsU01WXkheT3U2U2cwS05oJHRheEVrdmw3JisrTEpfaUZpdSFvITNeLXU2U00yYCskejFBRDd6
CnpsUFN9diVCJWwoKiU7Pk1vaCpid0khfGFhbilpR311YkpDYlZxJHkyYihqfHUyfFVrfG8oe3k0
JnRAfClnM303eQp6R1FKKHxKSEc4NyZPUT9eYXV9O1l7Tlc/RTVpUGJpWCstRSlgNlp9NF4xPkZR
cnI9ZTFAO19wbHBIVm5KKV55bkwKel9uR31YZXN6JEojJkNxbEQqNnZQQ0l5d0RQdHxqTCotJWZ3
fDJgbiFrXiQjQVN+X1p0XkxNTVY/ZSpHPHpqPEZaCnpuXkUjcz1vZUIqSFJFLUpGYF8lN3hpfmRR
akhjV2NJfkFGYF5pSmpHV0dvPypXfFQ9dmk3aCp0ZFglVGB6MUAxKwp6Rmx2KXQoUj1aPloqWFd2
O1l0YEA3XiR5bVlOOUE8QU15I0ZzZzRNKDk2JCl8emRiOFVTRjZDMHp7V1VSWkxgc3UKenRzU0BK
PEBsI1c+PHUpa0dtMHw+UlU5Y0xoZjxuUlpEZXZ2WCl0NnVlSiQtaTZaeXZ0JnlQdHQrTWsjUFFG
JlVrCnpWdkYlSkgoSFgjTHctYWV3RGNyT0pJUj40Q2lnUCohZzZvUkl9WGViJENrRjlPfUk2Xig0
IWZCS0JMPVdDJSMkTwp6VEJiLTNSaTVEWUljWnBiJEFrOHdxUkZYPyM/dzJMKEUoJDMkPHFQNTNq
VmoraU1LRkxxdCRuPFR6OHBwK2QkYUAKemI7VXgkJXB2V2NIJXJvYkd6TkxIQ3pmQTRYa2dEczBU
d1h1JStgbkNBbWEkQHhXSnRQPTxTOFRoPCRQJEc9T3h6Cnp2aUFFckZaV3hGPDxRUTMqYVp0KHZK
TWBtQG1mYFpTcjsmZElIIUdgWkpZSDdGZFFfSzxLQUlzP0Y+OU5faX1rcgp6YS1KeGJObEJkfkl7
QWF3KnptO3hsOz1MbjtLVCpyRGZRSHNYMlU8Rlc2ZnY4RCg5a35wNTcoOUFJTldWVmslRkMKenNy
NGxMYm1EKXk8RzNXMTtGKXpLTHhuUitYN3N6bGo7UWtuVzI5NWs5KiNYfF9ofDsmaDtTRnE0OEly
Um84R2gxCnpWO09kY2UjVlE9bENaak5HKkp+a15KQTAwJmcmNnVIXl9qc1doNmhOcHJwclFjX2tf
MzRkbl9rYzRxfVU+dz4jQQp6T0IqYm8kSTZBeThHcyN1N1VDZnF5TnJhQmZPcHZWRDd4cDU3WVJQ
dT56K0V2XiRDdUBHSWJLdUVnU1pEKGpaa0oKel81JXY1RiNgUSVCaUpFMjZRLX5CNUJWVV9AYmc3
RikpZ1ZzLT0rVEVFWG1kTyF8OzB9NmhteU9UcjE1KzRAQEphCnopRE5UPFEjSXY4bUQhUGY3ciNj
aj5+aGwtYUU0K3lZKG0mXjtCIXtmRk9FTXViYjM8VVVzWTk7ekh6MzF2eShnUgp6Q3J2NVRHeGlT
OFA4cmFpI3FHPyU0ZmxydkpQQU1DY2RoVUBOVE4+ZjtPTGohRUkrRXtXaGA3LXVUJGpUSz1OND8K
emhqfUx0eWhnO1FgVzM0YyktaEk/dnlaeUtjNT19UHVQV2h4SUduND1sIXNTeWZwKyk8QE9QIXVl
Jn1lVWRPWjwtCnpjeUBWZ1olSjI7Vk91WWk1WFJJfVUjR2IqPDlAZVg4SXNaO2EzZVAlNTxHVVhD
V2RAIU1qOHMqaGFtRHhfayRFPgp6M2lwVzFYWDtZM0tSN1V3NXZDdXc0aylFalFBPlE7QlVWPWIq
UkVRTDMmVXdvM18qezMpX1NebihpTiY5YzB4YlAKenFzVitIc0VDZkZTViFrdTMjTlBJcURgNklm
ODl6Xis1a1FPKGdDMURjSD9OKms9Zl5DaWlaamY0QnNLdihsJX5LCnoraHdGS3g8WUl7OHUtKk5j
KU1EISpPcComdHN7RTlXbX1YYzZSYmliX1htc3BWQUdmKlN4dDFAej0mbn0+I1pmagp6M1B1NlJR
NXp2eT81bF84NCVobEMxdlNWfmVHZ3Jkc3lrKzc5QmQ8ZWxKbTZ1WkJBYi02QnZxQjFhRytRbCtJ
RmUKelZWKXxoUC1Yb0Z4cHB+eHR4X3pvSHFTV2BYVmo9WFRBYkteT25JLVhRSkItMnopPFRYWHlX
PylOPDQ2MXBNd3ZSCnozSFlxUVIqPFI1bH1VeGQjbj5idUtSK1hXaDVvZyMyYiRJZmowfTRiRko+
M3QtNW56PjBkXipAUHkmcDQ2WUAmcwp6M3xsbipFUX1EbkI0NUdZLWlUbzUmLXo1JWA/OUhAN1JN
SyNUfWxja3R8cHh5azNNSUBYbiVIS1kke256QGJPUCoKeiEmdT44dmVadHpKe1RacG94UV56RGVS
aG1IM0xYMzMrVW9EOT9SMkk2PlpKe1kxSzVoX0l3TXpzUzVhYz84dTtLCnpxT0d4JklKUj05IVM4
KVZydmgwKkR0fXs/Qk0hZ2hicEZZOXtRciYpOW5NPFJmTWl5QDRWWlRiKEZEU2FqMShpdAp6cjx9
aj9aVTM1ezhRWCsqSnk1R051a0g/OzB9U0h8P1V+KjFxcEhoZllvb3pqcXxgTV8rQkg1WntsIXIm
NEomWjUKekxtQi1RODJuc0p2bDFob3NxdDB9OUo7ITF2dnU4MGY5YXp1b0RURFRFKDghT28qbThB
XmEkMVhabEhsTzMzJiQ7CnpsTWk1UHRfM04yUmpfRDU7RHNKXlN0YTNMXiZOTVkjSUJ3eDtrNTdL
IzkjaUBiK2lEe3NXYjJobDhObT5ENWdpRAp6Y1gwKTNsLXh+WVBGRypZaU9YOWE+ITMpUy17TFlz
VmwwI1E9KiotYzFhfGRHZjheNih7OGZYfGpAbT9sSWYyPlcKenpsa3xZJWxLYXVpVl96OTZ7TD9R
MUdxcGxNPjJxIVYxe2FIV1UyfEp6PlBlYkFHREk3OERtJWpuPWZOJlMpNlNaCnpuJXxTOWx5JHJR
KE5feG9hTGBOWmNTfChmUjxIJmc8cUt1QDk2fGpQUzRqTUJse1dKdHN4V2xAWXdsMGZhbVZgfQp6
R3FSOFJWVUJjVWB6bVdSYyhMUjtvbVFQNVVpYmNuJFlnQF9XQ0k+dlV2bSpzUGR1WD41Pn5AI2hn
LTVyWGJmLXYKenJjKm1qI2g8ckw7ZHU+WDFPblF4MDdyYlJKLUpPO05QMXozUClpOTRHeEV9LUJK
UmNvOHNMeCFfLSlTYyttN0lTCnpEY04zd25tUXRNd3VhQUhMQ3p0NGVyI3dlRCp7I0xYciFSTnNY
VE0oaz5JQ3gzMil7JUU8dUxRJSV4M1goOTFUawp6ZWw3YnxwfEB9MmlDaGZvOyZTQUZOJTdZdyNB
bEwoY0xrQE5QVjtmaWlWUl9SM0ReelcqX31xPGN5fDg4QylhJHkKejUqfkQ+Y35YSj9mc0EjZVZg
MyRBX0VGeXQyOSN+VW8kIUtlQiZxSH4kRiFgIVheKDAybEJfUntsS2tKaW47Jj1tCnpjZEYoKyNK
UUMhdEpzSXQ9Xjg9JiF7UGJXcj9NTC1rdFdYPm9ANytVaEVMX35UMEh0X3BaZHshQU96OF9IKCgj
Swp6emFaaXdmbCMqUl5LY042ZTA1eTRGODxPaEZsRytTJH1hYGtPKD41UiFZVVVMbWdYbUcyRDxt
ZHhMVyFCTF9eSDsKekpTTVMqczVkOXU0K09oSl5CZW9SXm1wbmpMTU55Vk9hZl4pbGtUcE5iR0dV
Rktyd28meSpSPzUjYGNoRGdyMkRICnptcWxWdGwrVmRNMV9YKXsqdllIQEwmelFlNzApPXhYJFc/
YUtJPk9JVFJpcXt7S1F1M3MqZmBJbm1LJG1xa1otYAp6VWk0eWxsVzRPeE1hRk1vK2lqNF5LRGRQ
eGxUR1VwYm04OEZVISZRZVBSZ0M/PERpalUmKk89JVl0RFZ2eT5ob0UKenteKitRK3B7JGBZNyQ9
eEpkcjIpZmZNTCFpPktUMUtGZ1o+dVpBOytDSTBLV15eM2czJF9HPiVeZislZWQwdkw+Cnp7LWlx
fE9vRl93eVpNaX16QTtLbEUpflV8XlFDNSNXfHAyPzlHNGEoSVNFY0s5YyMtY2lMKCt2aSM+ezJB
bTdzdAp6O0BmNyZEd1NEaz1fYy0xb0szTz4kSWNvMDg2NypVTFMxelk0SnFaPCZXPXJ0Ukp3IUc5
WWRNd0liTUR6JXcoVFEKej17ajlZWmRjZWRuSjZIUEA3cityI1MyK25gQiF7fEpFMHVAeDRlbnxv
Myokc0RVX3AzZEQxdG5CVSlyfk5VV1QyCnpSPVc8N2srVE1ATGEjP0lUe0NFMDk/WUlqTkVJMzRQ
ei1uZ0IhUT1AWSFZLVd3REZ8S3JmWVh9IXNne2dlZ0R2cQp6NmhTXmYlRTszP145PFg5SFRWX0Nl
bmFXPGp5dFdJeERBdklmPjBENiUzfE44JjE1TG11MX4zQ2dAI2s3RTk5Y1cKenFqUytUPzArciMt
ISRvdUJxMDMtXiRteT5TZnNJKnJrTmNYQF9kVWooSFYpaWcjITBMUThzP0whUnU9fWxiN19nCnoj
VEtMJlYlJmVPTi07SGdiNWMoSj1yPDQpXzFveWBWOTlPelYoK2dhZ09oQlRBUUdeYj5JaUxPYj81
Vl5QXyo/QAp6PHFleHdpPXtRV21rRU1Cd3JHRWE8fiEyVW5YSTh3R2krPj9uckdgS05XNHF1bmZk
ejsqS0Bgajx5WjUlPT4qN1gKektVa1c2JVprMS1BK2E+cy1rR1MtY0NzTGhGfmR6MDlnKDxFO289
K21DIU45Pmw9OERtdlF8cjNRPlpjWTUoaG8wCno3en1qZTZEaX40LXBPKVFfWHhhYE54fFJwXmFS
WEY1XnpEdilhU0ZnSmw3KDJkOWM4UlI1MzxjbklvO0dFTTJXSAp6MSNrfjhCbkU+XiFofVEmZ29M
R3A/QDArdSFyJnJPYUpZOTRaUDktSzlHdEF8WWBwI2dMfUJudGpGNXA0VHVOQTYKej5ZbVUpMGUy
Sn1LVjFUdHs7dSVJJHAtMFI/cklHdlNVRmkodnVpayorZ2peZW5fR0ZnXmpaSHM/RW99WGJkKU87
CkglPnc9cFA2RykoCgpsaXRlcmFsIDQzNjkKemNtZF4/YDhPMilfczNecCMlPnQ8SSQ1JUIqKCUk
UmlmQWxKRGwoKSsqX1cpdGo0YXRKbGBWITRrdX1NaGsqbz1rCnpqQWgxWEI4ezsjN344a15gfTYo
JDZgI2o+b3FKI1Jtd1YyPT1pYypyejdsT3c9ZWFxPUh+O191eDIxKS1KcGNndwp6ZGoraHJmJlde
ZjwlUWs5WnBxZiM7cTNuNXt7UE9ZO2Yhd21UUjFBbjkoNCZJMHoxTE5YNTBRU1RWMk0lNHx5OWMK
eiN7WlFJVkpLdX5hWTU/WmFaUCpHSUdxR3M9ZUBxNm98RVBoWkIzQ0M/QExuT1JLOE9Aent7PDBL
dFNuNT8jfk9XCnp5PUw7eDhUJioleHFFbFM7czV+UGprN2QyYnFJYUE8ZFcoPil4WmJvdm5aZDdl
WDE3V054eD13YHAoOHZ1bHdVWgp6bHtzb31NdVJOSng1IThTNUc7JG8yP0JBcFBIdCspIV4jKld3
YD9yY1ZFfW1jeXVZYFgyb3x1VlV5STlvMXQxMU8KemVtR1dSPzthRCMwJHZKaGlQaHZ+MGlYUyNp
THEhPlFkPD9HJW5Kb14tcDROYTkhLX45YFNDdHU1cGI1YTl+PiRgCnpVe308fFZiOU1kPiQ0VE1i
TDdDM0dQI3I7NFdjJH1aO15qO259eWMhRTNkOzxqcFZ9UE9RN1pnI0U7TmUqYj99YQp6bCpDJkU2
VlA+YHdyeSQhSmttSlAwJSh0SWghIVRFVDg9PEdkLTUtfUoma0o/ZW0oeE1FNkM2NUdBOSV1eipR
RmYKejZrTTdZMX55fFpUclpJO3ojQDxpbHJoZ3tpIXFIfnYrZmZtcjxpJmYjfG9wSnMyMldjXlJ2
WjAlSnplUjd1WlR9CnpzMEZYJUZ9KGM1QnRJMXhfc1U+K3tyaFVpXjYwRzB0MkhKU3hYdi0qRGdD
KEhySmQ4YHxEcDNOdkw1eWc+eEF2VQp6aG98ZkVBfndeLUhyVyZILUp3a3FOWDJJLWJFWEJSJlVo
cCt5Ml4pMWgxSUlsTkN6QyF2LU16QCZ6JlZQeitjbDEKej1mJmY2WSpVfkNgaXhtNFN5MWhsJGhn
KDQlRHk7YnF+azdkMTxASyYlJU5MVGBMK0EpLVFYeUtWc3dYP29wOTAoCnpCI3llRkVpaEBje09Y
VThPcX4xQ0ZJXzM4R1htbnMzKGA7VyhpK2JzbG92Q3g0dTdndks+RHJHT3VnKj9HfDFuegp6X09S
fXxaWVMzcHEtcD9yUzdHMHFhYFRNfXI1WHFEVDRjVj4lUXlrIzlFU31gamMrV3d8RGNiWnJGNlVH
PkNlWHAKek9WSVZ9SzFlI3o5QHR1Iz9YKVJpPT96WE1CYFgzRy1fSTdGTC1acWBuYmZXdFhfRU8x
KiErVTZwSlctX2smK3ZrCnpNZH1USGh9eyhDaF93UGsoUEk0dlZCX0tUNzZrR3hWeXRMeHBXZ30m
Ykh3YGEzRyNRenhWQElDTmF4JkBoazM8Xwp6QmhgVHE2Nkd7LXRDdyRWeyh5MHY3bCF0cDIwfkBn
ZEZYPHQyeUFmN1RaYlU0SCsmTjBEMmhaXmFfNi1JKHlwJEEKekx1LTRZe0V6JGV0eCFUMEtFMUVe
QUJndi09YFBMP1d4Q3gyS2BOSjlidEVCfmIhNT5qekZiRiNiSkU3aT5UNHV4CnpRZHJGM29yZ153
RmNudyQjYlFNdkBTZk4zJEZ1bzdIbkJfYDJaR0J7WnFHcj4leFA7Ml8hUXs9Ti1aaFUxY35eNQp6
ZHQ9T08jd21jcGtYSnlDRz97eyZuPVJ7U249WXRnOzwwOUNIKWw3VEEmd2t0e1E7PlJyQTJJYTYt
UWl4RVBMclUKeiUwKU4kM05oMD9VODI1JjxGOT9XSzM+digkU3p9MEdfKCF2JnhTU0F6amU0e3J1
cCteV0BefUJ5cU9iOTUkPHdOCnorRmxDKk9TK3xoUXFQQ0xMUCNHfHstR3N4e2whYyMkU3ZVfCo8
RlVicz5FMHNid0sqJSNHUH0hNmAlKlpATDsmQwp6M15kRSY+NSViV0FYbVA8c01ka14oQkdpeEpz
Uz9pUiMoUzxzbkcrQ21LZDx+KCZJRiQjfkImKTZkMm1yRHVCaC0KemA3PVlQIys5WFVWKH5fQmlr
NXVGbCNMK01BPzlMVDwkYClHcml0YW5EIUApIWQhQ0s5aEhYJDZNLWtzYWVeRGBqCnozTzxRS3JN
QXBmVzkmQlQtbWdRb3BDTEdPVzshaj8/Y29rQXZzMCpEQmB7Mm1pdjAhYjUwWHNTJHlBeX55PipY
MQp6X219UGl2cyp1N0A5aT5xQSE1OGZEQ3dqXk08MVAodV5tO3VyVmRsTUA+YUlmK0UzLWQ5PFZN
JXF5ayFPSlZDV2gKelBBRVM9QTRoWkpZPFFeNkU7WTZWVn50Pz1ubXl1OUs1aShtYE9Od3tYWCQ0
JD5aVz5mYzRjUzd3NU8zc0NtS0tuCnorOTRBP1Z5ZlNCYjl7fXJFYkNJWXRYT1JKQkN2X19mblo+
P2F9ZWRhQSViUCRqST9KXnEwVUtPIW1kdUE4VSEzYgp6MENKX0pzfU5XUVpvZWJhcFZVSFAlcFBP
VW0/MTwpemQ8ZnE7TWhGe2lldkYybl8mUGhBU05xKiU5em1pSDZYTmoKekVzPUVhOFNXUHV6R0ds
VXAhVEUtOHFCKWEyM0lFc2ZLbT9kSCRpMXF4Q1Q1Xkw/QF5LQX16aWRQSSNndjhHay1YCnpxTStf
QGg3WDtWOSM3MmEreSZGREQxR29xX0pMPXt0anhCbCFuJGYzSVJmISRtQSgtTDslRzRTUloxIVht
MXoyZgp6aGpYLUgwMX0+JWBoelVNLVk2ZzF6fEBAM0dfa2lvP1MwYmNialF1eEpkPnZVJFV5eig0
KnBlRURTVmMtRztPOyUKejlZOTclVHF9VFJzSCtvTiUydShveUM9Vzw5YGVAJm07aTtqQyVMO3NQ
KDlSQkRRbnRoMztaTUVRTkZIM0dFZjBjCnpVPDNSRiFoTkctdkNEb29ZRlNeblBsRm52NChFbEkx
PXZOY3I0MlRGXnU8enBOR0BwbHElPDU8V0Erc0xUXns9LQp6KlNLYWBJZlRXYnpIUW0+cTY3ZntN
b04+e2YmPnhBOTFyNHB6NVpjJkBQXmktOXx8YDk4diRTaSFVQH1vdVo4OFcKemc7WUw9T1E7NH1V
UXRrcHlkfmxEe3FXeTBIfGx3SlhLbWVueiNFPSo5a3QkWVgqWCF3RGs3SVRsSVVHV25qPmE3Cno8
X0dRUjc1MkBKKVkoVSluY3UoZDxxUzVVaHtyS2czXlZyMmJEfD5JaXQ3UH1vQnE4eCRGUDg1KSZO
c3c8I3JPVwp6OFVfeCgxSilaZ20oOHRaWFUlKyh5WWNPK1o3I1pzelB3YTJgeWdpTVBheVg5S29u
ZHRGTVJLITd4YDl1V047KGYKemZXVz84eU9kajtHQTNXZTBZQVc5MmdXaXBuKGQ+emNiQSt2Wl8y
MUI8R0UwZXkqQlp2SnBxPXhIYH50ekBneHxjCnpSMURORzMmYSRzcG8hO2wqcGtrSTghIUxuZFhO
Xk1zPVBFNE1ObHxQYUhVaTtidzVGOUJVJX4kPnhGPy1wZmNXYAp6YnFZPGs4R09wZktnRzhObUpR
VnpsaEZCdTZSJG5CQVh+NysrV0wwcmFFNms3I2JQUXdvPDFWQWBrWjt+ZlcpaWgKenFSSEVjbWgk
VGBFTzxZWSpDQ2RKRCp4aHBIRFgzKkxfYVNeRlQxQStvTWxYeSR+O2MjKzcoVjwzTzJOLWUlQXVa
Cno2WVVmZnFGSEJYPDBkYj9DT2dMKXBRe2AlM1d6d2sqTkEhb3Jfe0FuQGZPVk0+Pz82aWUoNk0p
cEA2QFdRP1RsNwp6b0tyS0VqfHh+MnlaZWhoTUxrRlJSbk9DPlhMJkwrTjttMEJ7X09ROWd6elRZ
YiEhSmN0PWJrP19oSXBZOXJPd1kKek1ucjY5Uig/OEVONTJxUitrIX5xbkNZYy1LbVYmKmQkJk5Z
P3Q1Y2pSKVYrbmNNb3I9cHVUUm9vP3s1ZEg7QCEqCno8flJyViErbGpBTis7UXgyTHJhWSZKV256
XnxzWWJaalArWTt8cEMjRHVIVUgrPkZ+eDNQcVRreCk9T0FFMFg5KAp6KEFPNmdwfkFIXntucStu
KUxIWUREOG1RTj9EREZjZCFVJmQ0UGFhanpTRDF+bFhxM3B7eD1edkl0cnEzZ0ReNE8Kej1oWVNg
PyZDLTAmS3VBVj5Kdn1UP2JhMElhZkwkfitiWn1wJDlsd3l5eD0tdVBOYEhwdnY8KUlhPk9XSGE0
K040Cno2enNjclckXlhBMzJFPGorVHl9Kz9NUG81VWMhcWJHVDtgNyVHeD9sPHhjOVlmVDdMUT5K
d143aFl0a1JKcntROAp6UXwqMXBwX3E2TW5vfEQ2RVgha2dTdjBoMEkzfmVmX2wlJDx1KEAwYC1J
UyZFTHx8fVpOMVIoKkkpRWFeN0kteUcKenlYQ2poSi0xdUYoVXl6KV9eOT0qTl9EWTlLUzc5PkRU
RmpMYDB5MTZuJV5kR05RbjsyVjgybXFvSWk5aXsxNXZ1CnpMcSYoQlRsOUNJblVqWmxUSWE+XiEh
SGxNSzNXOFNkX093MCtFOElUP2gkPTU1JF5aKSRXWUl1aWc9TztMcF8xUQp6NHdPVDtYYldRIT5N
aGBwZFh1U289SzxTVD19UCoheG9kbEVJQkh5JTV7VSRWWlMkd0VrTnNHfHUyPEtrKVdDeUwKenpU
dnk/N004JkNmcV81QFlJViErPFJuXnd0KTVxdHA8eEtfS0ZsZEQzTV5XQUdsTi1VUXxBTkVCWVZv
RzB3M3hSCnpla2A/XyFhRldRJSRaRUFuPVhGSEVsbXtnS3p3QEJoMC1MTndaJlpoP3laJSoxNV9i
X1k0e09zel5+NE91bSEhPAp6c2UmIUc8YX1lfk90N3Zka2JqWW5VXl5Makd+RVRuPkJiYTt3VCF3
S2BIZjFVZWgwNColRDdLZmoqI2J+Qk5mdnoKenNiZj91aU1tNS14aGFRfDdPbTJPclliVT5uZ1VN
OSVGNW5VPDY1SUZ5dShgeVo7VmIxKT13Q2QhTDJLP2MkZXpFCno0SWJTfF4/Wj4pZUVwfVpmandG
KVdhdz9wUEo/e34qZyU7ZTxUWDYmPmZ4T35OeDdkUUdMV1opY1BRKlQhKChXLQp6R20yP3RNKUt9
N29HPDBYejxgbHRXanh2RTwkQUghNCpSe0EyfnVZR3JAbSF2bSpqK2UjQ0U5Xip9T2MjdWloQnwK
ejU7I2tNWTJeOG1ycjgwJSorMDJiRHg2QntKc2NoKGQ3a1FHVjd+aUdUZ0ZaQnUkUGZgdE5mYEIy
e3x0N2ZHaElxCnpvczB4RiNsJGJmeE90Y0dEZCpNRGJkS0JhQ0t4Zzx6QlNfdCFUaUkmRCZGUz5D
RWJyOEpUTmRfMWJqV0N7VWJnawp6OX4pOTtBMSY9RnlJdCRsIVZCWGZEfjZWQ2swZmpPJVF3TEo3
azAwUkgqJUk4Y0NxRjU0MlZ6UF47YE9VLV8/PTwKemJWfU9vUUUpSHFWYHwpWDUrV2JnU3hHV0g+
dCs3LU87KGx+WitGSkopc3lndV4rZUYwMSNTdWorcG5BY3chcz5wCnokLXhGfWM+N3Q5WDZIJF5W
OWh2VDVIe2pLdis9enpXSEEwcGd3OGU1ZlpwbTl2SXBoVnEzJVM0Kk4zJSZqc1leUQp6SyVzU1B1
aj0/ZHtBVHMwbzB5NiMwdzMlWVReQC1fc1R1VFV3SShReztsM0tqZUFiVmsjV21pJVBEeG1gem9x
UX4KeigoPC19KkZTUCU1Z3Q3dUkzdDEmNzVuZXtAMV5icGRXMTtNTUdOa1NyflVBdURiQjQrVlFp
fHgoZ2RPXnppbl8pCnpuY2ZzMmhqOHhkaWl5KUB2Vmtma0l0TEt2c0d0Smg8QWgrTjlyNEZrIzRq
fTMpNWZwNCUkOE9QbSEyKnY4NSQyaQp6MTVwNFVqSD1EViE8K0wteX5zSVM3Jmsrd3dRQDNlQmxE
MGV3R3swKmw+clRiMFR+dEZsNFEzSiFmbGF1Uz09YiYKejZCPFZjNXdEJG5tQ19pYDBFPEFlRD8y
SDxRRW9XeFAte1g2X2kxNVFKRi1Ddi1OLU5MTjklJHw1TDs9ZDZsbUY1Cno7VXVLN3glQ3ElTj9U
Jn5sRCtNZVdafFM8X3NaNjhTaE5hMFhYcWFsPm08SXZpK3dnQVkqKHBWSnhPajM7UF5NcAp6e1B5
NFEmaFZfNFh0cVlOXldfYHcraylyaGJ+Yj8wYEBvbHgtdExgP2p5XjkmQ2Y3c3F4U1NvXj1BPEtj
NlVZb2YKel5Ea2VNUD4hZyVkRHZsQ2YoU3Qka1ZvZnZIOTB8OXlsLWdtdlJ2Y0tTJlllOURkb1RL
QDJtfWlTdkN7M20lNEUwCnpAVEpEN2MxVj8hVVJNNyt0P2YzKSV7WCg2SlhnfkE5VHZHUXlYNm4o
Xll0ME5YOz52RFBjcn5tSUNQb29MV0FfYAp6PDFBPkZ1WHJ8QylkdERyKlBRdCVYczVXZVBXVUIm
Z0JqJHpaI0JJWSU/akRkcGJTQS1QVjBgZEdmXm9hX0pwfVoKemxyR1Y3b2VgI0JeK25QSVFgWkRK
ZUphcz1ydSM9KllMIytuP0dvfWYzMz4xR3Nae1RUeTJiZEJpaGp9bXoqbXAhCnpPem4le1dnTE09
KkNwaXVLVXMqR25IYXtCJDJzaUpxZk5pfFo7fHJIJXN0TSo4YjI2a0FNQ1lZJk5Id1BHdGxZbgp6
N1VWeF9ec2dSJFo4eDI3Zm9TNjNGQ1A8YjdOUUA0bSRXJmE0K3BiQGM2TDhyV2NZcHBIQDFEfmtE
PnR8Z3RjR18KenkjQEN8IVZRVn5UWX1HNWU1N3FwP0Y0alJ4cXF+QGg2Xj8tY3ZEPnlTd1ZMbDJt
Nz1nRVJ0RW4+RndfQE5EJXBPCm9pVkMqbWJ6PCVJKzBLMVpgK0xXdlokM34kK0EhR20/XmhwU2NA
fHx9V3JtTFZLTHZ1enY7WTdBCgpkaWZmIC0tZ2l0IGEvV2ViRHJpdmVyVGVzdHMvaW1wb3J0ZWQv
c2VsZW5pdW0vY29tbW9uL3NyYy93ZWIvY3NzL3VpLWxpZ2h0bmVzcy9qcXVlcnktdWktMS4xMi4x
Lm1pbi5jc3MgYi9XZWJEcml2ZXJUZXN0cy9pbXBvcnRlZC9zZWxlbml1bS9jb21tb24vc3JjL3dl
Yi9jc3MvdWktbGlnaHRuZXNzL2pxdWVyeS11aS0xLjEyLjEubWluLmNzcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
ZWQyMzUxZDY0Y2FkZWQ4NDVmZjM4OWUyYjVjMWMyODVhOWQzYmQ1Ci0tLSAvZGV2L251bGwKKysr
IGIvV2ViRHJpdmVyVGVzdHMvaW1wb3J0ZWQvc2VsZW5pdW0vY29tbW9uL3NyYy93ZWIvY3NzL3Vp
LWxpZ2h0bmVzcy9qcXVlcnktdWktMS4xMi4xLm1pbi5jc3MKQEAgLTAsMCArMSw3IEBACisvKiEg
alF1ZXJ5IFVJIC0gdjEuMTIuMSAtIDIwMTYtMDktMTQKKyogaHR0cDovL2pxdWVyeXVpLmNvbQor
KiBJbmNsdWRlczogY29yZS5jc3MsIGFjY29yZGlvbi5jc3MsIGF1dG9jb21wbGV0ZS5jc3MsIG1l
bnUuY3NzLCBidXR0b24uY3NzLCBjb250cm9sZ3JvdXAuY3NzLCBjaGVja2JveHJhZGlvLmNzcywg
ZGF0ZXBpY2tlci5jc3MsIGRpYWxvZy5jc3MsIGRyYWdnYWJsZS5jc3MsIHJlc2l6YWJsZS5jc3Ms
IHByb2dyZXNzYmFyLmNzcywgc2VsZWN0YWJsZS5jc3MsIHNlbGVjdG1lbnUuY3NzLCBzbGlkZXIu
Y3NzLCBzb3J0YWJsZS5jc3MsIHNwaW5uZXIuY3NzLCB0YWJzLmNzcywgdG9vbHRpcC5jc3MsIHRo
ZW1lLmNzcworKiBUbyB2aWV3IGFuZCBtb2RpZnkgdGhpcyB0aGVtZSwgdmlzaXQgaHR0cDovL2px
dWVyeXVpLmNvbS90aGVtZXJvbGxlci8/ZmZEZWZhdWx0PVRyZWJ1Y2hldCUyME1TJTJDVGFob21h
JTJDVmVyZGFuYSUyQ0FyaWFsJTJDc2Fucy1zZXJpZiZmd0RlZmF1bHQ9Ym9sZCZmc0RlZmF1bHQ9
MS4xZW0mY29ybmVyUmFkaXVzPTRweCZiZ0NvbG9ySGVhZGVyPWY2YTgyOCZiZ1RleHR1cmVIZWFk
ZXI9Z2xvc3Nfd2F2ZSZiZ0ltZ09wYWNpdHlIZWFkZXI9MzUmYm9yZGVyQ29sb3JIZWFkZXI9ZTc4
ZjA4JmZjSGVhZGVyPWZmZmZmZiZpY29uQ29sb3JIZWFkZXI9ZmZmZmZmJmJnQ29sb3JDb250ZW50
PWVlZWVlZSZiZ1RleHR1cmVDb250ZW50PWhpZ2hsaWdodF9zb2Z0JmJnSW1nT3BhY2l0eUNvbnRl
bnQ9MTAwJmJvcmRlckNvbG9yQ29udGVudD1kZGRkZGQmZmNDb250ZW50PTMzMzMzMyZpY29uQ29s
b3JDb250ZW50PTIyMjIyMiZiZ0NvbG9yRGVmYXVsdD1mNmY2ZjYmYmdUZXh0dXJlRGVmYXVsdD1n
bGFzcyZiZ0ltZ09wYWNpdHlEZWZhdWx0PTEwMCZib3JkZXJDb2xvckRlZmF1bHQ9Y2NjY2NjJmZj
RGVmYXVsdD0xYzk0YzQmaWNvbkNvbG9yRGVmYXVsdD1lZjhjMDgmYmdDb2xvckhvdmVyPWZkZjVj
ZSZiZ1RleHR1cmVIb3Zlcj1nbGFzcyZiZ0ltZ09wYWNpdHlIb3Zlcj0xMDAmYm9yZGVyQ29sb3JI
b3Zlcj1mYmNiMDkmZmNIb3Zlcj1jNzc0MDUmaWNvbkNvbG9ySG92ZXI9ZWY4YzA4JmJnQ29sb3JB
Y3RpdmU9ZmZmZmZmJmJnVGV4dHVyZUFjdGl2ZT1nbGFzcyZiZ0ltZ09wYWNpdHlBY3RpdmU9NjUm
Ym9yZGVyQ29sb3JBY3RpdmU9ZmJkODUwJmZjQWN0aXZlPWViOGYwMCZpY29uQ29sb3JBY3RpdmU9
ZWY4YzA4JmJnQ29sb3JIaWdobGlnaHQ9ZmZlNDVjJmJnVGV4dHVyZUhpZ2hsaWdodD1oaWdobGln
aHRfc29mdCZiZ0ltZ09wYWNpdHlIaWdobGlnaHQ9NzUmYm9yZGVyQ29sb3JIaWdobGlnaHQ9ZmVk
MjJmJmZjSGlnaGxpZ2h0PTM2MzYzNiZpY29uQ29sb3JIaWdobGlnaHQ9MjI4ZWYxJmJnQ29sb3JF
cnJvcj1iODE5MDAmYmdUZXh0dXJlRXJyb3I9ZGlhZ29uYWxzX3RoaWNrJmJnSW1nT3BhY2l0eUVy
cm9yPTE4JmJvcmRlckNvbG9yRXJyb3I9Y2QwYTBhJmZjRXJyb3I9ZmZmZmZmJmljb25Db2xvckVy
cm9yPWZmZDI3YSZiZ0NvbG9yT3ZlcmxheT02NjY2NjYmYmdUZXh0dXJlT3ZlcmxheT1kaWFnb25h
bHNfdGhpY2smYmdJbWdPcGFjaXR5T3ZlcmxheT0yMCZvcGFjaXR5T3ZlcmxheT01MCZiZ0NvbG9y
U2hhZG93PTAwMDAwMCZiZ1RleHR1cmVTaGFkb3c9ZmxhdCZiZ0ltZ09wYWNpdHlTaGFkb3c9MTAm
b3BhY2l0eVNoYWRvdz0yMCZ0aGlja25lc3NTaGFkb3c9NXB4Jm9mZnNldFRvcFNoYWRvdz0tNXB4
Jm9mZnNldExlZnRTaGFkb3c9LTVweCZjb3JuZXJSYWRpdXNTaGFkb3c9NXB4CisqIENvcHlyaWdo
dCBqUXVlcnkgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzOyBMaWNlbnNlZCBNSVQg
Ki8KKworLnVpLWhlbHBlci1oaWRkZW57ZGlzcGxheTpub25lfS51aS1oZWxwZXItaGlkZGVuLWFj
Y2Vzc2libGV7Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0x
cHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHh9
LnVpLWhlbHBlci1yZXNldHttYXJnaW46MDtwYWRkaW5nOjA7Ym9yZGVyOjA7b3V0bGluZTowO2xp
bmUtaGVpZ2h0OjEuMzt0ZXh0LWRlY29yYXRpb246bm9uZTtmb250LXNpemU6MTAwJTtsaXN0LXN0
eWxlOm5vbmV9LnVpLWhlbHBlci1jbGVhcmZpeDpiZWZvcmUsLnVpLWhlbHBlci1jbGVhcmZpeDph
ZnRlcntjb250ZW50OiIiO2Rpc3BsYXk6dGFibGU7Ym9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlfS51
aS1oZWxwZXItY2xlYXJmaXg6YWZ0ZXJ7Y2xlYXI6Ym90aH0udWktaGVscGVyLXpmaXh7d2lkdGg6
MTAwJTtoZWlnaHQ6MTAwJTt0b3A6MDtsZWZ0OjA7cG9zaXRpb246YWJzb2x1dGU7b3BhY2l0eTow
O2ZpbHRlcjpBbHBoYShPcGFjaXR5PTApfS51aS1mcm9udHt6LWluZGV4OjEwMH0udWktc3RhdGUt
ZGlzYWJsZWR7Y3Vyc29yOmRlZmF1bHQhaW1wb3J0YW50O3BvaW50ZXItZXZlbnRzOm5vbmV9LnVp
LWljb257ZGlzcGxheTppbmxpbmUtYmxvY2s7dmVydGljYWwtYWxpZ246bWlkZGxlO21hcmdpbi10
b3A6LS4yNWVtO3Bvc2l0aW9uOnJlbGF0aXZlO3RleHQtaW5kZW50Oi05OTk5OXB4O292ZXJmbG93
OmhpZGRlbjtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXR9LnVpLXdpZGdldC1pY29uLWJsb2Nr
e2xlZnQ6NTAlO21hcmdpbi1sZWZ0Oi04cHg7ZGlzcGxheTpibG9ja30udWktd2lkZ2V0LW92ZXJs
YXl7cG9zaXRpb246Zml4ZWQ7dG9wOjA7bGVmdDowO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCV9LnVp
LWFjY29yZGlvbiAudWktYWNjb3JkaW9uLWhlYWRlcntkaXNwbGF5OmJsb2NrO2N1cnNvcjpwb2lu
dGVyO3Bvc2l0aW9uOnJlbGF0aXZlO21hcmdpbjoycHggMCAwIDA7cGFkZGluZzouNWVtIC41ZW0g
LjVlbSAuN2VtO2ZvbnQtc2l6ZToxMDAlfS51aS1hY2NvcmRpb24gLnVpLWFjY29yZGlvbi1jb250
ZW50e3BhZGRpbmc6MWVtIDIuMmVtO2JvcmRlci10b3A6MDtvdmVyZmxvdzphdXRvfS51aS1hdXRv
Y29tcGxldGV7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowO2N1cnNvcjpkZWZhdWx0fS51
aS1tZW51e2xpc3Qtc3R5bGU6bm9uZTtwYWRkaW5nOjA7bWFyZ2luOjA7ZGlzcGxheTpibG9jaztv
dXRsaW5lOjB9LnVpLW1lbnUgLnVpLW1lbnV7cG9zaXRpb246YWJzb2x1dGV9LnVpLW1lbnUgLnVp
LW1lbnUtaXRlbXttYXJnaW46MDtjdXJzb3I6cG9pbnRlcjtsaXN0LXN0eWxlLWltYWdlOnVybCgi
ZGF0YTppbWFnZS9naWY7YmFzZTY0LFIwbEdPRGxoQVFBQkFJQUFBQUFBQVAvLy95SDVCQUVBQUFB
QUxBQUFBQUFCQUFFQUFBSUJSQUE3Iil9LnVpLW1lbnUgLnVpLW1lbnUtaXRlbS13cmFwcGVye3Bv
c2l0aW9uOnJlbGF0aXZlO3BhZGRpbmc6M3B4IDFlbSAzcHggLjRlbX0udWktbWVudSAudWktbWVu
dS1kaXZpZGVye21hcmdpbjo1cHggMDtoZWlnaHQ6MDtmb250LXNpemU6MDtsaW5lLWhlaWdodDow
O2JvcmRlci13aWR0aDoxcHggMCAwIDB9LnVpLW1lbnUgLnVpLXN0YXRlLWZvY3VzLC51aS1tZW51
IC51aS1zdGF0ZS1hY3RpdmV7bWFyZ2luOi0xcHh9LnVpLW1lbnUtaWNvbnN7cG9zaXRpb246cmVs
YXRpdmV9LnVpLW1lbnUtaWNvbnMgLnVpLW1lbnUtaXRlbS13cmFwcGVye3BhZGRpbmctbGVmdDoy
ZW19LnVpLW1lbnUgLnVpLWljb257cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVm
dDouMmVtO21hcmdpbjphdXRvIDB9LnVpLW1lbnUgLnVpLW1lbnUtaWNvbntsZWZ0OmF1dG87cmln
aHQ6MH0udWktYnV0dG9ue3BhZGRpbmc6LjRlbSAxZW07ZGlzcGxheTppbmxpbmUtYmxvY2s7cG9z
aXRpb246cmVsYXRpdmU7bGluZS1oZWlnaHQ6bm9ybWFsO21hcmdpbi1yaWdodDouMWVtO2N1cnNv
cjpwb2ludGVyO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTt0ZXh0LWFsaWduOmNlbnRlcjstd2Via2l0
LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lOy1tcy11c2VyLXNlbGVjdDpu
b25lO3VzZXItc2VsZWN0Om5vbmU7b3ZlcmZsb3c6dmlzaWJsZX0udWktYnV0dG9uLC51aS1idXR0
b246bGluaywudWktYnV0dG9uOnZpc2l0ZWQsLnVpLWJ1dHRvbjpob3ZlciwudWktYnV0dG9uOmFj
dGl2ZXt0ZXh0LWRlY29yYXRpb246bm9uZX0udWktYnV0dG9uLWljb24tb25seXt3aWR0aDoyZW07
Ym94LXNpemluZzpib3JkZXItYm94O3RleHQtaW5kZW50Oi05OTk5cHg7d2hpdGUtc3BhY2U6bm93
cmFwfWlucHV0LnVpLWJ1dHRvbi51aS1idXR0b24taWNvbi1vbmx5e3RleHQtaW5kZW50OjB9LnVp
LWJ1dHRvbi1pY29uLW9ubHkgLnVpLWljb257cG9zaXRpb246YWJzb2x1dGU7dG9wOjUwJTtsZWZ0
OjUwJTttYXJnaW4tdG9wOi04cHg7bWFyZ2luLWxlZnQ6LThweH0udWktYnV0dG9uLnVpLWljb24t
bm90ZXh0IC51aS1pY29ue3BhZGRpbmc6MDt3aWR0aDoyLjFlbTtoZWlnaHQ6Mi4xZW07dGV4dC1p
bmRlbnQ6LTk5OTlweDt3aGl0ZS1zcGFjZTpub3dyYXB9aW5wdXQudWktYnV0dG9uLnVpLWljb24t
bm90ZXh0IC51aS1pY29ue3dpZHRoOmF1dG87aGVpZ2h0OmF1dG87dGV4dC1pbmRlbnQ6MDt3aGl0
ZS1zcGFjZTpub3JtYWw7cGFkZGluZzouNGVtIDFlbX1pbnB1dC51aS1idXR0b246Oi1tb3otZm9j
dXMtaW5uZXIsYnV0dG9uLnVpLWJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lcntib3JkZXI6MDtwYWRk
aW5nOjB9LnVpLWNvbnRyb2xncm91cHt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7ZGlzcGxheTppbmxp
bmUtYmxvY2t9LnVpLWNvbnRyb2xncm91cCA+IC51aS1jb250cm9sZ3JvdXAtaXRlbXtmbG9hdDps
ZWZ0O21hcmdpbi1sZWZ0OjA7bWFyZ2luLXJpZ2h0OjB9LnVpLWNvbnRyb2xncm91cCA+IC51aS1j
b250cm9sZ3JvdXAtaXRlbTpmb2N1cywudWktY29udHJvbGdyb3VwID4gLnVpLWNvbnRyb2xncm91
cC1pdGVtLnVpLXZpc3VhbC1mb2N1c3t6LWluZGV4Ojk5OTl9LnVpLWNvbnRyb2xncm91cC12ZXJ0
aWNhbCA+IC51aS1jb250cm9sZ3JvdXAtaXRlbXtkaXNwbGF5OmJsb2NrO2Zsb2F0Om5vbmU7d2lk
dGg6MTAwJTttYXJnaW4tdG9wOjA7bWFyZ2luLWJvdHRvbTowO3RleHQtYWxpZ246bGVmdH0udWkt
Y29udHJvbGdyb3VwLXZlcnRpY2FsIC51aS1jb250cm9sZ3JvdXAtaXRlbXtib3gtc2l6aW5nOmJv
cmRlci1ib3h9LnVpLWNvbnRyb2xncm91cCAudWktY29udHJvbGdyb3VwLWxhYmVse3BhZGRpbmc6
LjRlbSAxZW19LnVpLWNvbnRyb2xncm91cCAudWktY29udHJvbGdyb3VwLWxhYmVsIHNwYW57Zm9u
dC1zaXplOjgwJX0udWktY29udHJvbGdyb3VwLWhvcml6b250YWwgLnVpLWNvbnRyb2xncm91cC1s
YWJlbCArIC51aS1jb250cm9sZ3JvdXAtaXRlbXtib3JkZXItbGVmdDpub25lfS51aS1jb250cm9s
Z3JvdXAtdmVydGljYWwgLnVpLWNvbnRyb2xncm91cC1sYWJlbCArIC51aS1jb250cm9sZ3JvdXAt
aXRlbXtib3JkZXItdG9wOm5vbmV9LnVpLWNvbnRyb2xncm91cC1ob3Jpem9udGFsIC51aS1jb250
cm9sZ3JvdXAtbGFiZWwudWktd2lkZ2V0LWNvbnRlbnR7Ym9yZGVyLXJpZ2h0Om5vbmV9LnVpLWNv
bnRyb2xncm91cC12ZXJ0aWNhbCAudWktY29udHJvbGdyb3VwLWxhYmVsLnVpLXdpZGdldC1jb250
ZW50e2JvcmRlci1ib3R0b206bm9uZX0udWktY29udHJvbGdyb3VwLXZlcnRpY2FsIC51aS1zcGlu
bmVyLWlucHV0e3dpZHRoOjc1JTt3aWR0aDpjYWxjKCAxMDAlIC0gMi40ZW0gKX0udWktY29udHJv
bGdyb3VwLXZlcnRpY2FsIC51aS1zcGlubmVyIC51aS1zcGlubmVyLXVwe2JvcmRlci10b3Atc3R5
bGU6c29saWR9LnVpLWNoZWNrYm94cmFkaW8tbGFiZWwgLnVpLWljb24tYmFja2dyb3VuZHtib3gt
c2hhZG93Omluc2V0IDFweCAxcHggMXB4ICNjY2M7Ym9yZGVyLXJhZGl1czouMTJlbTtib3JkZXI6
bm9uZX0udWktY2hlY2tib3hyYWRpby1yYWRpby1sYWJlbCAudWktaWNvbi1iYWNrZ3JvdW5ke3dp
ZHRoOjE2cHg7aGVpZ2h0OjE2cHg7Ym9yZGVyLXJhZGl1czoxZW07b3ZlcmZsb3c6dmlzaWJsZTti
b3JkZXI6bm9uZX0udWktY2hlY2tib3hyYWRpby1yYWRpby1sYWJlbC51aS1jaGVja2JveHJhZGlv
LWNoZWNrZWQgLnVpLWljb24sLnVpLWNoZWNrYm94cmFkaW8tcmFkaW8tbGFiZWwudWktY2hlY2ti
b3hyYWRpby1jaGVja2VkOmhvdmVyIC51aS1pY29ue2JhY2tncm91bmQtaW1hZ2U6bm9uZTt3aWR0
aDo4cHg7aGVpZ2h0OjhweDtib3JkZXItd2lkdGg6NHB4O2JvcmRlci1zdHlsZTpzb2xpZH0udWkt
Y2hlY2tib3hyYWRpby1kaXNhYmxlZHtwb2ludGVyLWV2ZW50czpub25lfS51aS1kYXRlcGlja2Vy
e3dpZHRoOjE3ZW07cGFkZGluZzouMmVtIC4yZW0gMDtkaXNwbGF5Om5vbmV9LnVpLWRhdGVwaWNr
ZXIgLnVpLWRhdGVwaWNrZXItaGVhZGVye3Bvc2l0aW9uOnJlbGF0aXZlO3BhZGRpbmc6LjJlbSAw
fS51aS1kYXRlcGlja2VyIC51aS1kYXRlcGlja2VyLXByZXYsLnVpLWRhdGVwaWNrZXIgLnVpLWRh
dGVwaWNrZXItbmV4dHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MnB4O3dpZHRoOjEuOGVtO2hlaWdo
dDoxLjhlbX0udWktZGF0ZXBpY2tlciAudWktZGF0ZXBpY2tlci1wcmV2LWhvdmVyLC51aS1kYXRl
cGlja2VyIC51aS1kYXRlcGlja2VyLW5leHQtaG92ZXJ7dG9wOjFweH0udWktZGF0ZXBpY2tlciAu
dWktZGF0ZXBpY2tlci1wcmV2e2xlZnQ6MnB4fS51aS1kYXRlcGlja2VyIC51aS1kYXRlcGlja2Vy
LW5leHR7cmlnaHQ6MnB4fS51aS1kYXRlcGlja2VyIC51aS1kYXRlcGlja2VyLXByZXYtaG92ZXJ7
bGVmdDoxcHh9LnVpLWRhdGVwaWNrZXIgLnVpLWRhdGVwaWNrZXItbmV4dC1ob3ZlcntyaWdodDox
cHh9LnVpLWRhdGVwaWNrZXIgLnVpLWRhdGVwaWNrZXItcHJldiBzcGFuLC51aS1kYXRlcGlja2Vy
IC51aS1kYXRlcGlja2VyLW5leHQgc3BhbntkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOmFic29sdXRl
O2xlZnQ6NTAlO21hcmdpbi1sZWZ0Oi04cHg7dG9wOjUwJTttYXJnaW4tdG9wOi04cHh9LnVpLWRh
dGVwaWNrZXIgLnVpLWRhdGVwaWNrZXItdGl0bGV7bWFyZ2luOjAgMi4zZW07bGluZS1oZWlnaHQ6
MS44ZW07dGV4dC1hbGlnbjpjZW50ZXJ9LnVpLWRhdGVwaWNrZXIgLnVpLWRhdGVwaWNrZXItdGl0
bGUgc2VsZWN0e2ZvbnQtc2l6ZToxZW07bWFyZ2luOjFweCAwfS51aS1kYXRlcGlja2VyIHNlbGVj
dC51aS1kYXRlcGlja2VyLW1vbnRoLC51aS1kYXRlcGlja2VyIHNlbGVjdC51aS1kYXRlcGlja2Vy
LXllYXJ7d2lkdGg6NDUlfS51aS1kYXRlcGlja2VyIHRhYmxle3dpZHRoOjEwMCU7Zm9udC1zaXpl
Oi45ZW07Ym9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlO21hcmdpbjowIDAgLjRlbX0udWktZGF0ZXBp
Y2tlciB0aHtwYWRkaW5nOi43ZW0gLjNlbTt0ZXh0LWFsaWduOmNlbnRlcjtmb250LXdlaWdodDpi
b2xkO2JvcmRlcjowfS51aS1kYXRlcGlja2VyIHRke2JvcmRlcjowO3BhZGRpbmc6MXB4fS51aS1k
YXRlcGlja2VyIHRkIHNwYW4sLnVpLWRhdGVwaWNrZXIgdGQgYXtkaXNwbGF5OmJsb2NrO3BhZGRp
bmc6LjJlbTt0ZXh0LWFsaWduOnJpZ2h0O3RleHQtZGVjb3JhdGlvbjpub25lfS51aS1kYXRlcGlj
a2VyIC51aS1kYXRlcGlja2VyLWJ1dHRvbnBhbmV7YmFja2dyb3VuZC1pbWFnZTpub25lO21hcmdp
bjouN2VtIDAgMCAwO3BhZGRpbmc6MCAuMmVtO2JvcmRlci1sZWZ0OjA7Ym9yZGVyLXJpZ2h0OjA7
Ym9yZGVyLWJvdHRvbTowfS51aS1kYXRlcGlja2VyIC51aS1kYXRlcGlja2VyLWJ1dHRvbnBhbmUg
YnV0dG9ue2Zsb2F0OnJpZ2h0O21hcmdpbjouNWVtIC4yZW0gLjRlbTtjdXJzb3I6cG9pbnRlcjtw
YWRkaW5nOi4yZW0gLjZlbSAuM2VtIC42ZW07d2lkdGg6YXV0bztvdmVyZmxvdzp2aXNpYmxlfS51
aS1kYXRlcGlja2VyIC51aS1kYXRlcGlja2VyLWJ1dHRvbnBhbmUgYnV0dG9uLnVpLWRhdGVwaWNr
ZXItY3VycmVudHtmbG9hdDpsZWZ0fS51aS1kYXRlcGlja2VyLnVpLWRhdGVwaWNrZXItbXVsdGl7
d2lkdGg6YXV0b30udWktZGF0ZXBpY2tlci1tdWx0aSAudWktZGF0ZXBpY2tlci1ncm91cHtmbG9h
dDpsZWZ0fS51aS1kYXRlcGlja2VyLW11bHRpIC51aS1kYXRlcGlja2VyLWdyb3VwIHRhYmxle3dp
ZHRoOjk1JTttYXJnaW46MCBhdXRvIC40ZW19LnVpLWRhdGVwaWNrZXItbXVsdGktMiAudWktZGF0
ZXBpY2tlci1ncm91cHt3aWR0aDo1MCV9LnVpLWRhdGVwaWNrZXItbXVsdGktMyAudWktZGF0ZXBp
Y2tlci1ncm91cHt3aWR0aDozMy4zJX0udWktZGF0ZXBpY2tlci1tdWx0aS00IC51aS1kYXRlcGlj
a2VyLWdyb3Vwe3dpZHRoOjI1JX0udWktZGF0ZXBpY2tlci1tdWx0aSAudWktZGF0ZXBpY2tlci1n
cm91cC1sYXN0IC51aS1kYXRlcGlja2VyLWhlYWRlciwudWktZGF0ZXBpY2tlci1tdWx0aSAudWkt
ZGF0ZXBpY2tlci1ncm91cC1taWRkbGUgLnVpLWRhdGVwaWNrZXItaGVhZGVye2JvcmRlci1sZWZ0
LXdpZHRoOjB9LnVpLWRhdGVwaWNrZXItbXVsdGkgLnVpLWRhdGVwaWNrZXItYnV0dG9ucGFuZXtj
bGVhcjpsZWZ0fS51aS1kYXRlcGlja2VyLXJvdy1icmVha3tjbGVhcjpib3RoO3dpZHRoOjEwMCU7
Zm9udC1zaXplOjB9LnVpLWRhdGVwaWNrZXItcnRse2RpcmVjdGlvbjpydGx9LnVpLWRhdGVwaWNr
ZXItcnRsIC51aS1kYXRlcGlja2VyLXByZXZ7cmlnaHQ6MnB4O2xlZnQ6YXV0b30udWktZGF0ZXBp
Y2tlci1ydGwgLnVpLWRhdGVwaWNrZXItbmV4dHtsZWZ0OjJweDtyaWdodDphdXRvfS51aS1kYXRl
cGlja2VyLXJ0bCAudWktZGF0ZXBpY2tlci1wcmV2OmhvdmVye3JpZ2h0OjFweDtsZWZ0OmF1dG99
LnVpLWRhdGVwaWNrZXItcnRsIC51aS1kYXRlcGlja2VyLW5leHQ6aG92ZXJ7bGVmdDoxcHg7cmln
aHQ6YXV0b30udWktZGF0ZXBpY2tlci1ydGwgLnVpLWRhdGVwaWNrZXItYnV0dG9ucGFuZXtjbGVh
cjpyaWdodH0udWktZGF0ZXBpY2tlci1ydGwgLnVpLWRhdGVwaWNrZXItYnV0dG9ucGFuZSBidXR0
b257ZmxvYXQ6bGVmdH0udWktZGF0ZXBpY2tlci1ydGwgLnVpLWRhdGVwaWNrZXItYnV0dG9ucGFu
ZSBidXR0b24udWktZGF0ZXBpY2tlci1jdXJyZW50LC51aS1kYXRlcGlja2VyLXJ0bCAudWktZGF0
ZXBpY2tlci1ncm91cHtmbG9hdDpyaWdodH0udWktZGF0ZXBpY2tlci1ydGwgLnVpLWRhdGVwaWNr
ZXItZ3JvdXAtbGFzdCAudWktZGF0ZXBpY2tlci1oZWFkZXIsLnVpLWRhdGVwaWNrZXItcnRsIC51
aS1kYXRlcGlja2VyLWdyb3VwLW1pZGRsZSAudWktZGF0ZXBpY2tlci1oZWFkZXJ7Ym9yZGVyLXJp
Z2h0LXdpZHRoOjA7Ym9yZGVyLWxlZnQtd2lkdGg6MXB4fS51aS1kYXRlcGlja2VyIC51aS1pY29u
e2Rpc3BsYXk6YmxvY2s7dGV4dC1pbmRlbnQ6LTk5OTk5cHg7b3ZlcmZsb3c6aGlkZGVuO2JhY2tn
cm91bmQtcmVwZWF0Om5vLXJlcGVhdDtsZWZ0Oi41ZW07dG9wOi4zZW19LnVpLWRpYWxvZ3twb3Np
dGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7cGFkZGluZzouMmVtO291dGxpbmU6MH0udWktZGlh
bG9nIC51aS1kaWFsb2ctdGl0bGViYXJ7cGFkZGluZzouNGVtIDFlbTtwb3NpdGlvbjpyZWxhdGl2
ZX0udWktZGlhbG9nIC51aS1kaWFsb2ctdGl0bGV7ZmxvYXQ6bGVmdDttYXJnaW46LjFlbSAwO3do
aXRlLXNwYWNlOm5vd3JhcDt3aWR0aDo5MCU7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6
ZWxsaXBzaXN9LnVpLWRpYWxvZyAudWktZGlhbG9nLXRpdGxlYmFyLWNsb3Nle3Bvc2l0aW9uOmFi
c29sdXRlO3JpZ2h0Oi4zZW07dG9wOjUwJTt3aWR0aDoyMHB4O21hcmdpbjotMTBweCAwIDAgMDtw
YWRkaW5nOjFweDtoZWlnaHQ6MjBweH0udWktZGlhbG9nIC51aS1kaWFsb2ctY29udGVudHtwb3Np
dGlvbjpyZWxhdGl2ZTtib3JkZXI6MDtwYWRkaW5nOi41ZW0gMWVtO2JhY2tncm91bmQ6bm9uZTtv
dmVyZmxvdzphdXRvfS51aS1kaWFsb2cgLnVpLWRpYWxvZy1idXR0b25wYW5le3RleHQtYWxpZ246
bGVmdDtib3JkZXItd2lkdGg6MXB4IDAgMCAwO2JhY2tncm91bmQtaW1hZ2U6bm9uZTttYXJnaW4t
dG9wOi41ZW07cGFkZGluZzouM2VtIDFlbSAuNWVtIC40ZW19LnVpLWRpYWxvZyAudWktZGlhbG9n
LWJ1dHRvbnBhbmUgLnVpLWRpYWxvZy1idXR0b25zZXR7ZmxvYXQ6cmlnaHR9LnVpLWRpYWxvZyAu
dWktZGlhbG9nLWJ1dHRvbnBhbmUgYnV0dG9ue21hcmdpbjouNWVtIC40ZW0gLjVlbSAwO2N1cnNv
cjpwb2ludGVyfS51aS1kaWFsb2cgLnVpLXJlc2l6YWJsZS1ue2hlaWdodDoycHg7dG9wOjB9LnVp
LWRpYWxvZyAudWktcmVzaXphYmxlLWV7d2lkdGg6MnB4O3JpZ2h0OjB9LnVpLWRpYWxvZyAudWkt
cmVzaXphYmxlLXN7aGVpZ2h0OjJweDtib3R0b206MH0udWktZGlhbG9nIC51aS1yZXNpemFibGUt
d3t3aWR0aDoycHg7bGVmdDowfS51aS1kaWFsb2cgLnVpLXJlc2l6YWJsZS1zZSwudWktZGlhbG9n
IC51aS1yZXNpemFibGUtc3csLnVpLWRpYWxvZyAudWktcmVzaXphYmxlLW5lLC51aS1kaWFsb2cg
LnVpLXJlc2l6YWJsZS1ud3t3aWR0aDo3cHg7aGVpZ2h0OjdweH0udWktZGlhbG9nIC51aS1yZXNp
emFibGUtc2V7cmlnaHQ6MDtib3R0b206MH0udWktZGlhbG9nIC51aS1yZXNpemFibGUtc3d7bGVm
dDowO2JvdHRvbTowfS51aS1kaWFsb2cgLnVpLXJlc2l6YWJsZS1uZXtyaWdodDowO3RvcDowfS51
aS1kaWFsb2cgLnVpLXJlc2l6YWJsZS1ud3tsZWZ0OjA7dG9wOjB9LnVpLWRyYWdnYWJsZSAudWkt
ZGlhbG9nLXRpdGxlYmFye2N1cnNvcjptb3ZlfS51aS1kcmFnZ2FibGUtaGFuZGxley1tcy10b3Vj
aC1hY3Rpb246bm9uZTt0b3VjaC1hY3Rpb246bm9uZX0udWktcmVzaXphYmxle3Bvc2l0aW9uOnJl
bGF0aXZlfS51aS1yZXNpemFibGUtaGFuZGxle3Bvc2l0aW9uOmFic29sdXRlO2ZvbnQtc2l6ZTow
LjFweDtkaXNwbGF5OmJsb2NrOy1tcy10b3VjaC1hY3Rpb246bm9uZTt0b3VjaC1hY3Rpb246bm9u
ZX0udWktcmVzaXphYmxlLWRpc2FibGVkIC51aS1yZXNpemFibGUtaGFuZGxlLC51aS1yZXNpemFi
bGUtYXV0b2hpZGUgLnVpLXJlc2l6YWJsZS1oYW5kbGV7ZGlzcGxheTpub25lfS51aS1yZXNpemFi
bGUtbntjdXJzb3I6bi1yZXNpemU7aGVpZ2h0OjdweDt3aWR0aDoxMDAlO3RvcDotNXB4O2xlZnQ6
MH0udWktcmVzaXphYmxlLXN7Y3Vyc29yOnMtcmVzaXplO2hlaWdodDo3cHg7d2lkdGg6MTAwJTti
b3R0b206LTVweDtsZWZ0OjB9LnVpLXJlc2l6YWJsZS1le2N1cnNvcjplLXJlc2l6ZTt3aWR0aDo3
cHg7cmlnaHQ6LTVweDt0b3A6MDtoZWlnaHQ6MTAwJX0udWktcmVzaXphYmxlLXd7Y3Vyc29yOnct
cmVzaXplO3dpZHRoOjdweDtsZWZ0Oi01cHg7dG9wOjA7aGVpZ2h0OjEwMCV9LnVpLXJlc2l6YWJs
ZS1zZXtjdXJzb3I6c2UtcmVzaXplO3dpZHRoOjEycHg7aGVpZ2h0OjEycHg7cmlnaHQ6MXB4O2Jv
dHRvbToxcHh9LnVpLXJlc2l6YWJsZS1zd3tjdXJzb3I6c3ctcmVzaXplO3dpZHRoOjlweDtoZWln
aHQ6OXB4O2xlZnQ6LTVweDtib3R0b206LTVweH0udWktcmVzaXphYmxlLW53e2N1cnNvcjpudy1y
ZXNpemU7d2lkdGg6OXB4O2hlaWdodDo5cHg7bGVmdDotNXB4O3RvcDotNXB4fS51aS1yZXNpemFi
bGUtbmV7Y3Vyc29yOm5lLXJlc2l6ZTt3aWR0aDo5cHg7aGVpZ2h0OjlweDtyaWdodDotNXB4O3Rv
cDotNXB4fS51aS1wcm9ncmVzc2JhcntoZWlnaHQ6MmVtO3RleHQtYWxpZ246bGVmdDtvdmVyZmxv
dzpoaWRkZW59LnVpLXByb2dyZXNzYmFyIC51aS1wcm9ncmVzc2Jhci12YWx1ZXttYXJnaW46LTFw
eDtoZWlnaHQ6MTAwJX0udWktcHJvZ3Jlc3NiYXIgLnVpLXByb2dyZXNzYmFyLW92ZXJsYXl7YmFj
a2dyb3VuZDp1cmwoImRhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxSMGxHT0RsaEtBQW9BSUFCQUFBQUFQ
Ly8veUgvQzA1RlZGTkRRVkJGTWk0d0F3RUFBQUFoK1FRSkFRQUJBQ3dBQUFBQUtBQW9BQUFDa1l3
TnFYcmRDNTJEUzA2YTdNRlpJKzRGSEJDS29EZVdLWHF5bVBxR3F4dkpyWFpiTXg3VHRjK3c5WGdV
MkZCM2xPeVFSV0VUMklGR2lVOW0xZnJEVnB4WlpjNmJmSHd2NGMxWVhQNmsxVmR5MjkyRmI2VWt1
dkZ0WHB2V1N6QStIeWNYSkhVWGlHWUlpTWcyUjZXNDU5Z25XR2ZITmRqSXFEV1ZxZW1IMmVrcE9i
a3BPbHBwV1VxWmlxcjZlZHFxV1FBQUlma0VDUUVBQVFBc0FBQUFBQ2dBS0FBQUFwU01nWm5HZmFx
Y2cxRTJ1dXpEbW1IVUJSOFFpbDk1aGlQS3FXbjNhcXRMc1MxOHk3RzFTek5lb3dXQkVOdFFkK1Qx
Smt0UDA1bnpQVGRKWmxSNnZVeE5XV2pWK3ZVV2hXTmtXRnd4bDlWcFpSZWRZY2ZsSU9MYWZhYTI4
WGRzSC95bmxjYzF1UFZEWnhRSVIwSzI1K2NJQ0Ntb3FDZTVtR2haT2ZlWVNVaDV5SmNKeXJrWldX
cGFSOGRvSjJvNE5ZcTYybEFBQUNINUJBa0JBQUVBTEFBQUFBQW9BQ2dBQUFLVkRJNFl5MjJabklO
Uk5xb3N3MEJ2N2kxZ3lIVWtGajdvU2FXbHUzb3ZDOEd4TnNvNWZsdXozcUxWaEJWZVQvTHo3WlRI
eXhMNWREYWxRV1BWT3NRV3RSbnV3WGFGVGo5alZWaDhwbWE5SmpaNHpZU2o1Wk95bWE3dXVvbGZm
aCtJUjVhVzk3Y0h1QlVYS0dLWGxLam4rRGlIV01jWUphaDROMGxZQ01sSk9YaXBHUnI1cWRnb1NU
cnFXU3E2V0ZsMnlwb2FVQUFBSWZrRUNRRUFBUUFzQUFBQUFDZ0FLQUFBQXBhRWI2SExnZC9pTzdG
Tld0Y0ZXZSt1Zk9ER2pSZm9pSjJha1NoYnVlYjB3dEk1MHptMDJwYnZ3ZldFTVdCUTF6S0dsTElo
c2tpRVBtOVI2dlJYeFY0WnpXVDJ5SE9HcFdNeW9yYmxLbE5wOEhtSEViL2xDWGpjVzdibXRYUDhY
dDIyOU9WV1IxZm9kMmVXcU5mSHVNalhDUGtJR05pbGVPaUltVm1DT0Vtb1NmbjN5WGxKV21vSEdo
cXA2aWxZdVdZcG1UcUtVZ0FBSWZrRUNRRUFBUUFzQUFBQUFDZ0FLQUFBQXBpRUg2a2I1OGJpUTNG
Tld0TUZXVzNlTlZjb2p1RkdmcW5acVNlYnVTMDZ3NVY4MC9YMDJwS2U4ekZ3UDZFRldPVDFsREZr
OHJHRVJoMVRUTk9vY1E2MUhtNFhtMlZleFVIcHpqeW1WaUhyRmJpRUxzZWZWcm42WEtmbnQyUTlH
LytYZGllNDk5WEhkMmc0aDdpb09HaFhHSmJvR0FuWFNCbm9Cd0tZeWZpb3ViWkoySG4wUnVSWmFm
bFpPaWw1NlpwNmlpb0tTWHBVQUFBaCtRUUpBUUFCQUN3QUFBQUFLQUFvQUFBQ2tvUVJxUnZueHVJ
N2tVMWExVVU1YmQ1dG5TZU9aWGhtbjVsV0szcU5UV3ZSZFF4UDhxdmFDKy95YVlRelhPN0JNdmFV
RW1KUmQzVHNpTUFnc3dtTllyU2daZFlyVFg2dFNIR1pPNzNlenVBdzJ1eHVRK0JiZVpmTXhzZXhZ
MzUrL1FlNEoxaW5WMGc0eDNXSHVNaElsMmpYT0tUMlErVlU1ZmdvU1VJNTJWZlp5ZmtKR2toYTZq
bVkrYWFZZGlycStsUUFBQ0g1QkFrQkFBRUFMQUFBQUFBb0FDZ0FBQUtXQklLcFllMEwzWU5LVG9x
c3dVbHZ6bmlnZDR3aVI0S2hackt0OVVwcWlwNjFpOUUzdk12eFJkSGxiRUZpRVhmazlZQVJZeE9a
WkQ2VlEycFV1bkJtdFJYbzFMZjhoTVZWY05sOEphZlYzOGFNMi9GdTVWMTZCbjYzcjZ4dDk3ajA5
K01YU0ZpNEJuaUdGYWUzaHpiSDkraFlCemtwdVVoNWFabUh1YW5aT1pnSXV2YkdpTmVvbUNuYXh4
YXAydXBhQ1pzcSsxa0FBQ0g1QkFrQkFBRUFMQUFBQUFBb0FDZ0FBQUtYakk4Qnk1emY0a094VFZy
WE5WbHYxWDBkOElHWkdLTG5OcFl0bThMcjljcVZldU9TdmZPVzc5RDlhREhpek5oREppZEZaaE55
ZEVhaE9hREg2bm9tdEpqcDF0dXRLb05Xa3ZBNkpxZlJWTEhVL1FVZmF1OWwyeDdHNTRkMWZsOTk1
eGNJR0FkWHFNZkJOYWRvWXJoSCtNZzJLQmxwVnBibHVDaVhtTW5aMlNoNEdCcUorY2tJT3FxSjZM
bUtTbGxabXNvcTZ3cFFBQUFoK1FRSkFRQUJBQ3dBQUFBQUtBQW9BQUFDbFl4L29Mdm94dUpEa1Ux
YTFZVVpiSjU5blNkMlpYaFdxYlJhMi9nRjhHdTJEWTNpcXM3eXJxK3hCWUVrWXZGU004YVNTT2JF
K1pnUmwxQkhGWk5yN3BSQ2F2WjVCVzIxNDJoWTNBTi96V3RzbWYxMnA5WHh4RmwybHBMbjFyc2V6
dGZYWmpkSVdJZjJzNWRJdHdqWUtCZ285eWc1cEhnekpYVEVlR2xadWVucHlQbXBHUW9LT1drWW1T
cGFTbnFLaWxlSTJGQUFBQ0g1QkFrQkFBRUFMQUFBQUFBb0FDZ0FBQUtWakIrZ3Urakc0a09SVFZy
VmhSbHNubjJkSjNabGVGYXB0RnJiK0NYbU85T296ZUw1VmZQOTlIdkFXaHBpVWRjd2twQkgzODI1
QXdZZFU4eFRxbExHaHRDb3NBcktNcHZmYTFtTVJhZTlWdldaZmVCMlhmUGtlTG1tMThsVWNCaitw
NWRuTjhqWFozWUlHRWhZdU9VbjQ1YW9DRGtwMTZobDVJallKdmpXS2Nub0dRcHF5UGxwT2hyM2FF
bGFxcnE1NkJxN1ZBQUFPdz09Iik7aGVpZ2h0OjEwMCU7ZmlsdGVyOmFscGhhKG9wYWNpdHk9MjUp
O29wYWNpdHk6MC4yNX0udWktcHJvZ3Jlc3NiYXItaW5kZXRlcm1pbmF0ZSAudWktcHJvZ3Jlc3Ni
YXItdmFsdWV7YmFja2dyb3VuZC1pbWFnZTpub25lfS51aS1zZWxlY3RhYmxley1tcy10b3VjaC1h
Y3Rpb246bm9uZTt0b3VjaC1hY3Rpb246bm9uZX0udWktc2VsZWN0YWJsZS1oZWxwZXJ7cG9zaXRp
b246YWJzb2x1dGU7ei1pbmRleDoxMDA7Ym9yZGVyOjFweCBkb3R0ZWQgYmxhY2t9LnVpLXNlbGVj
dG1lbnUtbWVudXtwYWRkaW5nOjA7bWFyZ2luOjA7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVm
dDowO2Rpc3BsYXk6bm9uZX0udWktc2VsZWN0bWVudS1tZW51IC51aS1tZW51e292ZXJmbG93OmF1
dG87b3ZlcmZsb3cteDpoaWRkZW47cGFkZGluZy1ib3R0b206MXB4fS51aS1zZWxlY3RtZW51LW1l
bnUgLnVpLW1lbnUgLnVpLXNlbGVjdG1lbnUtb3B0Z3JvdXB7Zm9udC1zaXplOjFlbTtmb250LXdl
aWdodDpib2xkO2xpbmUtaGVpZ2h0OjEuNTtwYWRkaW5nOjJweCAwLjRlbTttYXJnaW46MC41ZW0g
MCAwIDA7aGVpZ2h0OmF1dG87Ym9yZGVyOjB9LnVpLXNlbGVjdG1lbnUtb3BlbntkaXNwbGF5OmJs
b2NrfS51aS1zZWxlY3RtZW51LXRleHR7ZGlzcGxheTpibG9jazttYXJnaW4tcmlnaHQ6MjBweDtv
dmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpc30udWktc2VsZWN0bWVudS1idXR0
b24udWktYnV0dG9ue3RleHQtYWxpZ246bGVmdDt3aGl0ZS1zcGFjZTpub3dyYXA7d2lkdGg6MTRl
bX0udWktc2VsZWN0bWVudS1pY29uLnVpLWljb257ZmxvYXQ6cmlnaHQ7bWFyZ2luLXRvcDowfS51
aS1zbGlkZXJ7cG9zaXRpb246cmVsYXRpdmU7dGV4dC1hbGlnbjpsZWZ0fS51aS1zbGlkZXIgLnVp
LXNsaWRlci1oYW5kbGV7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoyO3dpZHRoOjEuMmVtO2hl
aWdodDoxLjJlbTtjdXJzb3I6ZGVmYXVsdDstbXMtdG91Y2gtYWN0aW9uOm5vbmU7dG91Y2gtYWN0
aW9uOm5vbmV9LnVpLXNsaWRlciAudWktc2xpZGVyLXJhbmdle3Bvc2l0aW9uOmFic29sdXRlO3ot
aW5kZXg6MTtmb250LXNpemU6LjdlbTtkaXNwbGF5OmJsb2NrO2JvcmRlcjowO2JhY2tncm91bmQt
cG9zaXRpb246MCAwfS51aS1zbGlkZXIudWktc3RhdGUtZGlzYWJsZWQgLnVpLXNsaWRlci1oYW5k
bGUsLnVpLXNsaWRlci51aS1zdGF0ZS1kaXNhYmxlZCAudWktc2xpZGVyLXJhbmdle2ZpbHRlcjpp
bmhlcml0fS51aS1zbGlkZXItaG9yaXpvbnRhbHtoZWlnaHQ6LjhlbX0udWktc2xpZGVyLWhvcml6
b250YWwgLnVpLXNsaWRlci1oYW5kbGV7dG9wOi0uM2VtO21hcmdpbi1sZWZ0Oi0uNmVtfS51aS1z
bGlkZXItaG9yaXpvbnRhbCAudWktc2xpZGVyLXJhbmdle3RvcDowO2hlaWdodDoxMDAlfS51aS1z
bGlkZXItaG9yaXpvbnRhbCAudWktc2xpZGVyLXJhbmdlLW1pbntsZWZ0OjB9LnVpLXNsaWRlci1o
b3Jpem9udGFsIC51aS1zbGlkZXItcmFuZ2UtbWF4e3JpZ2h0OjB9LnVpLXNsaWRlci12ZXJ0aWNh
bHt3aWR0aDouOGVtO2hlaWdodDoxMDBweH0udWktc2xpZGVyLXZlcnRpY2FsIC51aS1zbGlkZXIt
aGFuZGxle2xlZnQ6LS4zZW07bWFyZ2luLWxlZnQ6MDttYXJnaW4tYm90dG9tOi0uNmVtfS51aS1z
bGlkZXItdmVydGljYWwgLnVpLXNsaWRlci1yYW5nZXtsZWZ0OjA7d2lkdGg6MTAwJX0udWktc2xp
ZGVyLXZlcnRpY2FsIC51aS1zbGlkZXItcmFuZ2UtbWlue2JvdHRvbTowfS51aS1zbGlkZXItdmVy
dGljYWwgLnVpLXNsaWRlci1yYW5nZS1tYXh7dG9wOjB9LnVpLXNvcnRhYmxlLWhhbmRsZXstbXMt
dG91Y2gtYWN0aW9uOm5vbmU7dG91Y2gtYWN0aW9uOm5vbmV9LnVpLXNwaW5uZXJ7cG9zaXRpb246
cmVsYXRpdmU7ZGlzcGxheTppbmxpbmUtYmxvY2s7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDt2
ZXJ0aWNhbC1hbGlnbjptaWRkbGV9LnVpLXNwaW5uZXItaW5wdXR7Ym9yZGVyOm5vbmU7YmFja2dy
b3VuZDpub25lO2NvbG9yOmluaGVyaXQ7cGFkZGluZzouMjIyZW0gMDttYXJnaW46LjJlbSAwO3Zl
cnRpY2FsLWFsaWduOm1pZGRsZTttYXJnaW4tbGVmdDouNGVtO21hcmdpbi1yaWdodDoyZW19LnVp
LXNwaW5uZXItYnV0dG9ue3dpZHRoOjEuNmVtO2hlaWdodDo1MCU7Zm9udC1zaXplOi41ZW07cGFk
ZGluZzowO21hcmdpbjowO3RleHQtYWxpZ246Y2VudGVyO3Bvc2l0aW9uOmFic29sdXRlO2N1cnNv
cjpkZWZhdWx0O2Rpc3BsYXk6YmxvY2s7b3ZlcmZsb3c6aGlkZGVuO3JpZ2h0OjB9LnVpLXNwaW5u
ZXIgYS51aS1zcGlubmVyLWJ1dHRvbntib3JkZXItdG9wLXN0eWxlOm5vbmU7Ym9yZGVyLWJvdHRv
bS1zdHlsZTpub25lO2JvcmRlci1yaWdodC1zdHlsZTpub25lfS51aS1zcGlubmVyLXVwe3RvcDow
fS51aS1zcGlubmVyLWRvd257Ym90dG9tOjB9LnVpLXRhYnN7cG9zaXRpb246cmVsYXRpdmU7cGFk
ZGluZzouMmVtfS51aS10YWJzIC51aS10YWJzLW5hdnttYXJnaW46MDtwYWRkaW5nOi4yZW0gLjJl
bSAwfS51aS10YWJzIC51aS10YWJzLW5hdiBsaXtsaXN0LXN0eWxlOm5vbmU7ZmxvYXQ6bGVmdDtw
b3NpdGlvbjpyZWxhdGl2ZTt0b3A6MDttYXJnaW46MXB4IC4yZW0gMCAwO2JvcmRlci1ib3R0b20t
d2lkdGg6MDtwYWRkaW5nOjA7d2hpdGUtc3BhY2U6bm93cmFwfS51aS10YWJzIC51aS10YWJzLW5h
diAudWktdGFicy1hbmNob3J7ZmxvYXQ6bGVmdDtwYWRkaW5nOi41ZW0gMWVtO3RleHQtZGVjb3Jh
dGlvbjpub25lfS51aS10YWJzIC51aS10YWJzLW5hdiBsaS51aS10YWJzLWFjdGl2ZXttYXJnaW4t
Ym90dG9tOi0xcHg7cGFkZGluZy1ib3R0b206MXB4fS51aS10YWJzIC51aS10YWJzLW5hdiBsaS51
aS10YWJzLWFjdGl2ZSAudWktdGFicy1hbmNob3IsLnVpLXRhYnMgLnVpLXRhYnMtbmF2IGxpLnVp
LXN0YXRlLWRpc2FibGVkIC51aS10YWJzLWFuY2hvciwudWktdGFicyAudWktdGFicy1uYXYgbGku
dWktdGFicy1sb2FkaW5nIC51aS10YWJzLWFuY2hvcntjdXJzb3I6dGV4dH0udWktdGFicy1jb2xs
YXBzaWJsZSAudWktdGFicy1uYXYgbGkudWktdGFicy1hY3RpdmUgLnVpLXRhYnMtYW5jaG9ye2N1
cnNvcjpwb2ludGVyfS51aS10YWJzIC51aS10YWJzLXBhbmVse2Rpc3BsYXk6YmxvY2s7Ym9yZGVy
LXdpZHRoOjA7cGFkZGluZzoxZW0gMS40ZW07YmFja2dyb3VuZDpub25lfS51aS10b29sdGlwe3Bh
ZGRpbmc6OHB4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6OTk5OTttYXgtd2lkdGg6MzAwcHh9
Ym9keSAudWktdG9vbHRpcHtib3JkZXItd2lkdGg6MnB4fS51aS13aWRnZXR7Zm9udC1mYW1pbHk6
VHJlYnVjaGV0IE1TLFRhaG9tYSxWZXJkYW5hLEFyaWFsLHNhbnMtc2VyaWY7Zm9udC1zaXplOjEu
MWVtfS51aS13aWRnZXQgLnVpLXdpZGdldHtmb250LXNpemU6MWVtfS51aS13aWRnZXQgaW5wdXQs
LnVpLXdpZGdldCBzZWxlY3QsLnVpLXdpZGdldCB0ZXh0YXJlYSwudWktd2lkZ2V0IGJ1dHRvbntm
b250LWZhbWlseTpUcmVidWNoZXQgTVMsVGFob21hLFZlcmRhbmEsQXJpYWwsc2Fucy1zZXJpZjtm
b250LXNpemU6MWVtfS51aS13aWRnZXQudWktd2lkZ2V0LWNvbnRlbnR7Ym9yZGVyOjFweCBzb2xp
ZCAjY2NjfS51aS13aWRnZXQtY29udGVudHtib3JkZXI6MXB4IHNvbGlkICNkZGQ7YmFja2dyb3Vu
ZDojZWVlIHVybCgiaW1hZ2VzL3VpLWJnX2hpZ2hsaWdodC1zb2Z0XzEwMF9lZWVlZWVfMXgxMDAu
cG5nIikgNTAlIHRvcCByZXBlYXQteDtjb2xvcjojMzMzfS51aS13aWRnZXQtY29udGVudCBhe2Nv
bG9yOiMzMzN9LnVpLXdpZGdldC1oZWFkZXJ7Ym9yZGVyOjFweCBzb2xpZCAjZTc4ZjA4O2JhY2tn
cm91bmQ6I2Y2YTgyOCB1cmwoImltYWdlcy91aS1iZ19nbG9zcy13YXZlXzM1X2Y2YTgyOF81MDB4
MTAwLnBuZyIpIDUwJSA1MCUgcmVwZWF0LXg7Y29sb3I6I2ZmZjtmb250LXdlaWdodDpib2xkfS51
aS13aWRnZXQtaGVhZGVyIGF7Y29sb3I6I2ZmZn0udWktc3RhdGUtZGVmYXVsdCwudWktd2lkZ2V0
LWNvbnRlbnQgLnVpLXN0YXRlLWRlZmF1bHQsLnVpLXdpZGdldC1oZWFkZXIgLnVpLXN0YXRlLWRl
ZmF1bHQsLnVpLWJ1dHRvbixodG1sIC51aS1idXR0b24udWktc3RhdGUtZGlzYWJsZWQ6aG92ZXIs
aHRtbCAudWktYnV0dG9uLnVpLXN0YXRlLWRpc2FibGVkOmFjdGl2ZXtib3JkZXI6MXB4IHNvbGlk
ICNjY2M7YmFja2dyb3VuZDojZjZmNmY2IHVybCgiaW1hZ2VzL3VpLWJnX2dsYXNzXzEwMF9mNmY2
ZjZfMXg0MDAucG5nIikgNTAlIDUwJSByZXBlYXQteDtmb250LXdlaWdodDpib2xkO2NvbG9yOiMx
Yzk0YzR9LnVpLXN0YXRlLWRlZmF1bHQgYSwudWktc3RhdGUtZGVmYXVsdCBhOmxpbmssLnVpLXN0
YXRlLWRlZmF1bHQgYTp2aXNpdGVkLGEudWktYnV0dG9uLGE6bGluay51aS1idXR0b24sYTp2aXNp
dGVkLnVpLWJ1dHRvbiwudWktYnV0dG9ue2NvbG9yOiMxYzk0YzQ7dGV4dC1kZWNvcmF0aW9uOm5v
bmV9LnVpLXN0YXRlLWhvdmVyLC51aS13aWRnZXQtY29udGVudCAudWktc3RhdGUtaG92ZXIsLnVp
LXdpZGdldC1oZWFkZXIgLnVpLXN0YXRlLWhvdmVyLC51aS1zdGF0ZS1mb2N1cywudWktd2lkZ2V0
LWNvbnRlbnQgLnVpLXN0YXRlLWZvY3VzLC51aS13aWRnZXQtaGVhZGVyIC51aS1zdGF0ZS1mb2N1
cywudWktYnV0dG9uOmhvdmVyLC51aS1idXR0b246Zm9jdXN7Ym9yZGVyOjFweCBzb2xpZCAjZmJj
YjA5O2JhY2tncm91bmQ6I2ZkZjVjZSB1cmwoImltYWdlcy91aS1iZ19nbGFzc18xMDBfZmRmNWNl
XzF4NDAwLnBuZyIpIDUwJSA1MCUgcmVwZWF0LXg7Zm9udC13ZWlnaHQ6Ym9sZDtjb2xvcjojYzc3
NDA1fS51aS1zdGF0ZS1ob3ZlciBhLC51aS1zdGF0ZS1ob3ZlciBhOmhvdmVyLC51aS1zdGF0ZS1o
b3ZlciBhOmxpbmssLnVpLXN0YXRlLWhvdmVyIGE6dmlzaXRlZCwudWktc3RhdGUtZm9jdXMgYSwu
dWktc3RhdGUtZm9jdXMgYTpob3ZlciwudWktc3RhdGUtZm9jdXMgYTpsaW5rLC51aS1zdGF0ZS1m
b2N1cyBhOnZpc2l0ZWQsYS51aS1idXR0b246aG92ZXIsYS51aS1idXR0b246Zm9jdXN7Y29sb3I6
I2M3NzQwNTt0ZXh0LWRlY29yYXRpb246bm9uZX0udWktdmlzdWFsLWZvY3Vze2JveC1zaGFkb3c6
MCAwIDNweCAxcHggcmdiKDk0LDE1OCwyMTQpfS51aS1zdGF0ZS1hY3RpdmUsLnVpLXdpZGdldC1j
b250ZW50IC51aS1zdGF0ZS1hY3RpdmUsLnVpLXdpZGdldC1oZWFkZXIgLnVpLXN0YXRlLWFjdGl2
ZSxhLnVpLWJ1dHRvbjphY3RpdmUsLnVpLWJ1dHRvbjphY3RpdmUsLnVpLWJ1dHRvbi51aS1zdGF0
ZS1hY3RpdmU6aG92ZXJ7Ym9yZGVyOjFweCBzb2xpZCAjZmJkODUwO2JhY2tncm91bmQ6I2ZmZiB1
cmwoImltYWdlcy91aS1iZ19nbGFzc182NV9mZmZmZmZfMXg0MDAucG5nIikgNTAlIDUwJSByZXBl
YXQteDtmb250LXdlaWdodDpib2xkO2NvbG9yOiNlYjhmMDB9LnVpLWljb24tYmFja2dyb3VuZCwu
dWktc3RhdGUtYWN0aXZlIC51aS1pY29uLWJhY2tncm91bmR7Ym9yZGVyOiNmYmQ4NTA7YmFja2dy
b3VuZC1jb2xvcjojZWI4ZjAwfS51aS1zdGF0ZS1hY3RpdmUgYSwudWktc3RhdGUtYWN0aXZlIGE6
bGluaywudWktc3RhdGUtYWN0aXZlIGE6dmlzaXRlZHtjb2xvcjojZWI4ZjAwO3RleHQtZGVjb3Jh
dGlvbjpub25lfS51aS1zdGF0ZS1oaWdobGlnaHQsLnVpLXdpZGdldC1jb250ZW50IC51aS1zdGF0
ZS1oaWdobGlnaHQsLnVpLXdpZGdldC1oZWFkZXIgLnVpLXN0YXRlLWhpZ2hsaWdodHtib3JkZXI6
MXB4IHNvbGlkICNmZWQyMmY7YmFja2dyb3VuZDojZmZlNDVjIHVybCgiaW1hZ2VzL3VpLWJnX2hp
Z2hsaWdodC1zb2Z0Xzc1X2ZmZTQ1Y18xeDEwMC5wbmciKSA1MCUgdG9wIHJlcGVhdC14O2NvbG9y
OiMzNjM2MzZ9LnVpLXN0YXRlLWNoZWNrZWR7Ym9yZGVyOjFweCBzb2xpZCAjZmVkMjJmO2JhY2tn
cm91bmQ6I2ZmZTQ1Y30udWktc3RhdGUtaGlnaGxpZ2h0IGEsLnVpLXdpZGdldC1jb250ZW50IC51
aS1zdGF0ZS1oaWdobGlnaHQgYSwudWktd2lkZ2V0LWhlYWRlciAudWktc3RhdGUtaGlnaGxpZ2h0
IGF7Y29sb3I6IzM2MzYzNn0udWktc3RhdGUtZXJyb3IsLnVpLXdpZGdldC1jb250ZW50IC51aS1z
dGF0ZS1lcnJvciwudWktd2lkZ2V0LWhlYWRlciAudWktc3RhdGUtZXJyb3J7Ym9yZGVyOjFweCBz
b2xpZCAjY2QwYTBhO2JhY2tncm91bmQ6I2I4MTkwMCB1cmwoImltYWdlcy91aS1iZ19kaWFnb25h
bHMtdGhpY2tfMThfYjgxOTAwXzQweDQwLnBuZyIpIDUwJSA1MCUgcmVwZWF0O2NvbG9yOiNmZmZ9
LnVpLXN0YXRlLWVycm9yIGEsLnVpLXdpZGdldC1jb250ZW50IC51aS1zdGF0ZS1lcnJvciBhLC51
aS13aWRnZXQtaGVhZGVyIC51aS1zdGF0ZS1lcnJvciBhe2NvbG9yOiNmZmZ9LnVpLXN0YXRlLWVy
cm9yLXRleHQsLnVpLXdpZGdldC1jb250ZW50IC51aS1zdGF0ZS1lcnJvci10ZXh0LC51aS13aWRn
ZXQtaGVhZGVyIC51aS1zdGF0ZS1lcnJvci10ZXh0e2NvbG9yOiNmZmZ9LnVpLXByaW9yaXR5LXBy
aW1hcnksLnVpLXdpZGdldC1jb250ZW50IC51aS1wcmlvcml0eS1wcmltYXJ5LC51aS13aWRnZXQt
aGVhZGVyIC51aS1wcmlvcml0eS1wcmltYXJ5e2ZvbnQtd2VpZ2h0OmJvbGR9LnVpLXByaW9yaXR5
LXNlY29uZGFyeSwudWktd2lkZ2V0LWNvbnRlbnQgLnVpLXByaW9yaXR5LXNlY29uZGFyeSwudWkt
d2lkZ2V0LWhlYWRlciAudWktcHJpb3JpdHktc2Vjb25kYXJ5e29wYWNpdHk6Ljc7ZmlsdGVyOkFs
cGhhKE9wYWNpdHk9NzApO2ZvbnQtd2VpZ2h0Om5vcm1hbH0udWktc3RhdGUtZGlzYWJsZWQsLnVp
LXdpZGdldC1jb250ZW50IC51aS1zdGF0ZS1kaXNhYmxlZCwudWktd2lkZ2V0LWhlYWRlciAudWkt
c3RhdGUtZGlzYWJsZWR7b3BhY2l0eTouMzU7ZmlsdGVyOkFscGhhKE9wYWNpdHk9MzUpO2JhY2tn
cm91bmQtaW1hZ2U6bm9uZX0udWktc3RhdGUtZGlzYWJsZWQgLnVpLWljb257ZmlsdGVyOkFscGhh
KE9wYWNpdHk9MzUpfS51aS1pY29ue3dpZHRoOjE2cHg7aGVpZ2h0OjE2cHh9LnVpLWljb24sLnVp
LXdpZGdldC1jb250ZW50IC51aS1pY29ue2JhY2tncm91bmQtaW1hZ2U6dXJsKCJpbWFnZXMvdWkt
aWNvbnNfMjIyMjIyXzI1NngyNDAucG5nIil9LnVpLXdpZGdldC1oZWFkZXIgLnVpLWljb257YmFj
a2dyb3VuZC1pbWFnZTp1cmwoImltYWdlcy91aS1pY29uc19mZmZmZmZfMjU2eDI0MC5wbmciKX0u
dWktc3RhdGUtaG92ZXIgLnVpLWljb24sLnVpLXN0YXRlLWZvY3VzIC51aS1pY29uLC51aS1idXR0
b246aG92ZXIgLnVpLWljb24sLnVpLWJ1dHRvbjpmb2N1cyAudWktaWNvbntiYWNrZ3JvdW5kLWlt
YWdlOnVybCgiaW1hZ2VzL3VpLWljb25zX2VmOGMwOF8yNTZ4MjQwLnBuZyIpfS51aS1zdGF0ZS1h
Y3RpdmUgLnVpLWljb24sLnVpLWJ1dHRvbjphY3RpdmUgLnVpLWljb257YmFja2dyb3VuZC1pbWFn
ZTp1cmwoImltYWdlcy91aS1pY29uc19lZjhjMDhfMjU2eDI0MC5wbmciKX0udWktc3RhdGUtaGln
aGxpZ2h0IC51aS1pY29uLC51aS1idXR0b24gLnVpLXN0YXRlLWhpZ2hsaWdodC51aS1pY29ue2Jh
Y2tncm91bmQtaW1hZ2U6dXJsKCJpbWFnZXMvdWktaWNvbnNfMjI4ZWYxXzI1NngyNDAucG5nIil9
LnVpLXN0YXRlLWVycm9yIC51aS1pY29uLC51aS1zdGF0ZS1lcnJvci10ZXh0IC51aS1pY29ue2Jh
Y2tncm91bmQtaW1hZ2U6dXJsKCJpbWFnZXMvdWktaWNvbnNfZmZkMjdhXzI1NngyNDAucG5nIil9
LnVpLWJ1dHRvbiAudWktaWNvbntiYWNrZ3JvdW5kLWltYWdlOnVybCgiaW1hZ2VzL3VpLWljb25z
X2VmOGMwOF8yNTZ4MjQwLnBuZyIpfS51aS1pY29uLWJsYW5re2JhY2tncm91bmQtcG9zaXRpb246
MTZweCAxNnB4fS51aS1pY29uLWNhcmV0LTEtbntiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgMH0udWkt
aWNvbi1jYXJldC0xLW5le2JhY2tncm91bmQtcG9zaXRpb246LTE2cHggMH0udWktaWNvbi1jYXJl
dC0xLWV7YmFja2dyb3VuZC1wb3NpdGlvbjotMzJweCAwfS51aS1pY29uLWNhcmV0LTEtc2V7YmFj
a2dyb3VuZC1wb3NpdGlvbjotNDhweCAwfS51aS1pY29uLWNhcmV0LTEtc3tiYWNrZ3JvdW5kLXBv
c2l0aW9uOi02NXB4IDB9LnVpLWljb24tY2FyZXQtMS1zd3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi04
MHB4IDB9LnVpLWljb24tY2FyZXQtMS13e2JhY2tncm91bmQtcG9zaXRpb246LTk2cHggMH0udWkt
aWNvbi1jYXJldC0xLW53e2JhY2tncm91bmQtcG9zaXRpb246LTExMnB4IDB9LnVpLWljb24tY2Fy
ZXQtMi1uLXN7YmFja2dyb3VuZC1wb3NpdGlvbjotMTI4cHggMH0udWktaWNvbi1jYXJldC0yLWUt
d3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNDRweCAwfS51aS1pY29uLXRyaWFuZ2xlLTEtbntiYWNr
Z3JvdW5kLXBvc2l0aW9uOjAgLTE2cHh9LnVpLWljb24tdHJpYW5nbGUtMS1uZXtiYWNrZ3JvdW5k
LXBvc2l0aW9uOi0xNnB4IC0xNnB4fS51aS1pY29uLXRyaWFuZ2xlLTEtZXtiYWNrZ3JvdW5kLXBv
c2l0aW9uOi0zMnB4IC0xNnB4fS51aS1pY29uLXRyaWFuZ2xlLTEtc2V7YmFja2dyb3VuZC1wb3Np
dGlvbjotNDhweCAtMTZweH0udWktaWNvbi10cmlhbmdsZS0xLXN7YmFja2dyb3VuZC1wb3NpdGlv
bjotNjVweCAtMTZweH0udWktaWNvbi10cmlhbmdsZS0xLXN3e2JhY2tncm91bmQtcG9zaXRpb246
LTgwcHggLTE2cHh9LnVpLWljb24tdHJpYW5nbGUtMS13e2JhY2tncm91bmQtcG9zaXRpb246LTk2
cHggLTE2cHh9LnVpLWljb24tdHJpYW5nbGUtMS1ud3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMTJw
eCAtMTZweH0udWktaWNvbi10cmlhbmdsZS0yLW4tc3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMjhw
eCAtMTZweH0udWktaWNvbi10cmlhbmdsZS0yLWUtd3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNDRw
eCAtMTZweH0udWktaWNvbi1hcnJvdy0xLW57YmFja2dyb3VuZC1wb3NpdGlvbjowIC0zMnB4fS51
aS1pY29uLWFycm93LTEtbmV7YmFja2dyb3VuZC1wb3NpdGlvbjotMTZweCAtMzJweH0udWktaWNv
bi1hcnJvdy0xLWV7YmFja2dyb3VuZC1wb3NpdGlvbjotMzJweCAtMzJweH0udWktaWNvbi1hcnJv
dy0xLXNle2JhY2tncm91bmQtcG9zaXRpb246LTQ4cHggLTMycHh9LnVpLWljb24tYXJyb3ctMS1z
e2JhY2tncm91bmQtcG9zaXRpb246LTY1cHggLTMycHh9LnVpLWljb24tYXJyb3ctMS1zd3tiYWNr
Z3JvdW5kLXBvc2l0aW9uOi04MHB4IC0zMnB4fS51aS1pY29uLWFycm93LTEtd3tiYWNrZ3JvdW5k
LXBvc2l0aW9uOi05NnB4IC0zMnB4fS51aS1pY29uLWFycm93LTEtbnd7YmFja2dyb3VuZC1wb3Np
dGlvbjotMTEycHggLTMycHh9LnVpLWljb24tYXJyb3ctMi1uLXN7YmFja2dyb3VuZC1wb3NpdGlv
bjotMTI4cHggLTMycHh9LnVpLWljb24tYXJyb3ctMi1uZS1zd3tiYWNrZ3JvdW5kLXBvc2l0aW9u
Oi0xNDRweCAtMzJweH0udWktaWNvbi1hcnJvdy0yLWUtd3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0x
NjBweCAtMzJweH0udWktaWNvbi1hcnJvdy0yLXNlLW53e2JhY2tncm91bmQtcG9zaXRpb246LTE3
NnB4IC0zMnB4fS51aS1pY29uLWFycm93c3RvcC0xLW57YmFja2dyb3VuZC1wb3NpdGlvbjotMTky
cHggLTMycHh9LnVpLWljb24tYXJyb3dzdG9wLTEtZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yMDhw
eCAtMzJweH0udWktaWNvbi1hcnJvd3N0b3AtMS1ze2JhY2tncm91bmQtcG9zaXRpb246LTIyNHB4
IC0zMnB4fS51aS1pY29uLWFycm93c3RvcC0xLXd7YmFja2dyb3VuZC1wb3NpdGlvbjotMjQwcHgg
LTMycHh9LnVpLWljb24tYXJyb3d0aGljay0xLW57YmFja2dyb3VuZC1wb3NpdGlvbjoxcHggLTQ4
cHh9LnVpLWljb24tYXJyb3d0aGljay0xLW5le2JhY2tncm91bmQtcG9zaXRpb246LTE2cHggLTQ4
cHh9LnVpLWljb24tYXJyb3d0aGljay0xLWV7YmFja2dyb3VuZC1wb3NpdGlvbjotMzJweCAtNDhw
eH0udWktaWNvbi1hcnJvd3RoaWNrLTEtc2V7YmFja2dyb3VuZC1wb3NpdGlvbjotNDhweCAtNDhw
eH0udWktaWNvbi1hcnJvd3RoaWNrLTEtc3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi02NHB4IC00OHB4
fS51aS1pY29uLWFycm93dGhpY2stMS1zd3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi04MHB4IC00OHB4
fS51aS1pY29uLWFycm93dGhpY2stMS13e2JhY2tncm91bmQtcG9zaXRpb246LTk2cHggLTQ4cHh9
LnVpLWljb24tYXJyb3d0aGljay0xLW53e2JhY2tncm91bmQtcG9zaXRpb246LTExMnB4IC00OHB4
fS51aS1pY29uLWFycm93dGhpY2stMi1uLXN7YmFja2dyb3VuZC1wb3NpdGlvbjotMTI4cHggLTQ4
cHh9LnVpLWljb24tYXJyb3d0aGljay0yLW5lLXN3e2JhY2tncm91bmQtcG9zaXRpb246LTE0NHB4
IC00OHB4fS51aS1pY29uLWFycm93dGhpY2stMi1lLXd7YmFja2dyb3VuZC1wb3NpdGlvbjotMTYw
cHggLTQ4cHh9LnVpLWljb24tYXJyb3d0aGljay0yLXNlLW53e2JhY2tncm91bmQtcG9zaXRpb246
LTE3NnB4IC00OHB4fS51aS1pY29uLWFycm93dGhpY2tzdG9wLTEtbntiYWNrZ3JvdW5kLXBvc2l0
aW9uOi0xOTJweCAtNDhweH0udWktaWNvbi1hcnJvd3RoaWNrc3RvcC0xLWV7YmFja2dyb3VuZC1w
b3NpdGlvbjotMjA4cHggLTQ4cHh9LnVpLWljb24tYXJyb3d0aGlja3N0b3AtMS1ze2JhY2tncm91
bmQtcG9zaXRpb246LTIyNHB4IC00OHB4fS51aS1pY29uLWFycm93dGhpY2tzdG9wLTEtd3tiYWNr
Z3JvdW5kLXBvc2l0aW9uOi0yNDBweCAtNDhweH0udWktaWNvbi1hcnJvd3JldHVybnRoaWNrLTEt
d3tiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgLTY0cHh9LnVpLWljb24tYXJyb3dyZXR1cm50aGljay0x
LW57YmFja2dyb3VuZC1wb3NpdGlvbjotMTZweCAtNjRweH0udWktaWNvbi1hcnJvd3JldHVybnRo
aWNrLTEtZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zMnB4IC02NHB4fS51aS1pY29uLWFycm93cmV0
dXJudGhpY2stMS1ze2JhY2tncm91bmQtcG9zaXRpb246LTQ4cHggLTY0cHh9LnVpLWljb24tYXJy
b3dyZXR1cm4tMS13e2JhY2tncm91bmQtcG9zaXRpb246LTY0cHggLTY0cHh9LnVpLWljb24tYXJy
b3dyZXR1cm4tMS1ue2JhY2tncm91bmQtcG9zaXRpb246LTgwcHggLTY0cHh9LnVpLWljb24tYXJy
b3dyZXR1cm4tMS1le2JhY2tncm91bmQtcG9zaXRpb246LTk2cHggLTY0cHh9LnVpLWljb24tYXJy
b3dyZXR1cm4tMS1ze2JhY2tncm91bmQtcG9zaXRpb246LTExMnB4IC02NHB4fS51aS1pY29uLWFy
cm93cmVmcmVzaC0xLXd7YmFja2dyb3VuZC1wb3NpdGlvbjotMTI4cHggLTY0cHh9LnVpLWljb24t
YXJyb3dyZWZyZXNoLTEtbntiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNDRweCAtNjRweH0udWktaWNv
bi1hcnJvd3JlZnJlc2gtMS1le2JhY2tncm91bmQtcG9zaXRpb246LTE2MHB4IC02NHB4fS51aS1p
Y29uLWFycm93cmVmcmVzaC0xLXN7YmFja2dyb3VuZC1wb3NpdGlvbjotMTc2cHggLTY0cHh9LnVp
LWljb24tYXJyb3ctNHtiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgLTgwcHh9LnVpLWljb24tYXJyb3ct
NC1kaWFne2JhY2tncm91bmQtcG9zaXRpb246LTE2cHggLTgwcHh9LnVpLWljb24tZXh0bGlua3ti
YWNrZ3JvdW5kLXBvc2l0aW9uOi0zMnB4IC04MHB4fS51aS1pY29uLW5ld3dpbntiYWNrZ3JvdW5k
LXBvc2l0aW9uOi00OHB4IC04MHB4fS51aS1pY29uLXJlZnJlc2h7YmFja2dyb3VuZC1wb3NpdGlv
bjotNjRweCAtODBweH0udWktaWNvbi1zaHVmZmxle2JhY2tncm91bmQtcG9zaXRpb246LTgwcHgg
LTgwcHh9LnVpLWljb24tdHJhbnNmZXItZS13e2JhY2tncm91bmQtcG9zaXRpb246LTk2cHggLTgw
cHh9LnVpLWljb24tdHJhbnNmZXJ0aGljay1lLXd7YmFja2dyb3VuZC1wb3NpdGlvbjotMTEycHgg
LTgwcHh9LnVpLWljb24tZm9sZGVyLWNvbGxhcHNlZHtiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgLTk2
cHh9LnVpLWljb24tZm9sZGVyLW9wZW57YmFja2dyb3VuZC1wb3NpdGlvbjotMTZweCAtOTZweH0u
dWktaWNvbi1kb2N1bWVudHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zMnB4IC05NnB4fS51aS1pY29u
LWRvY3VtZW50LWJ7YmFja2dyb3VuZC1wb3NpdGlvbjotNDhweCAtOTZweH0udWktaWNvbi1ub3Rl
e2JhY2tncm91bmQtcG9zaXRpb246LTY0cHggLTk2cHh9LnVpLWljb24tbWFpbC1jbG9zZWR7YmFj
a2dyb3VuZC1wb3NpdGlvbjotODBweCAtOTZweH0udWktaWNvbi1tYWlsLW9wZW57YmFja2dyb3Vu
ZC1wb3NpdGlvbjotOTZweCAtOTZweH0udWktaWNvbi1zdWl0Y2FzZXtiYWNrZ3JvdW5kLXBvc2l0
aW9uOi0xMTJweCAtOTZweH0udWktaWNvbi1jb21tZW50e2JhY2tncm91bmQtcG9zaXRpb246LTEy
OHB4IC05NnB4fS51aS1pY29uLXBlcnNvbntiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNDRweCAtOTZw
eH0udWktaWNvbi1wcmludHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNjBweCAtOTZweH0udWktaWNv
bi10cmFzaHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNzZweCAtOTZweH0udWktaWNvbi1sb2NrZWR7
YmFja2dyb3VuZC1wb3NpdGlvbjotMTkycHggLTk2cHh9LnVpLWljb24tdW5sb2NrZWR7YmFja2dy
b3VuZC1wb3NpdGlvbjotMjA4cHggLTk2cHh9LnVpLWljb24tYm9va21hcmt7YmFja2dyb3VuZC1w
b3NpdGlvbjotMjI0cHggLTk2cHh9LnVpLWljb24tdGFne2JhY2tncm91bmQtcG9zaXRpb246LTI0
MHB4IC05NnB4fS51aS1pY29uLWhvbWV7YmFja2dyb3VuZC1wb3NpdGlvbjowIC0xMTJweH0udWkt
aWNvbi1mbGFne2JhY2tncm91bmQtcG9zaXRpb246LTE2cHggLTExMnB4fS51aS1pY29uLWNhbGVu
ZGFye2JhY2tncm91bmQtcG9zaXRpb246LTMycHggLTExMnB4fS51aS1pY29uLWNhcnR7YmFja2dy
b3VuZC1wb3NpdGlvbjotNDhweCAtMTEycHh9LnVpLWljb24tcGVuY2lse2JhY2tncm91bmQtcG9z
aXRpb246LTY0cHggLTExMnB4fS51aS1pY29uLWNsb2Nre2JhY2tncm91bmQtcG9zaXRpb246LTgw
cHggLTExMnB4fS51aS1pY29uLWRpc2t7YmFja2dyb3VuZC1wb3NpdGlvbjotOTZweCAtMTEycHh9
LnVpLWljb24tY2FsY3VsYXRvcntiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMTJweCAtMTEycHh9LnVp
LWljb24tem9vbWlue2JhY2tncm91bmQtcG9zaXRpb246LTEyOHB4IC0xMTJweH0udWktaWNvbi16
b29tb3V0e2JhY2tncm91bmQtcG9zaXRpb246LTE0NHB4IC0xMTJweH0udWktaWNvbi1zZWFyY2h7
YmFja2dyb3VuZC1wb3NpdGlvbjotMTYwcHggLTExMnB4fS51aS1pY29uLXdyZW5jaHtiYWNrZ3Jv
dW5kLXBvc2l0aW9uOi0xNzZweCAtMTEycHh9LnVpLWljb24tZ2VhcntiYWNrZ3JvdW5kLXBvc2l0
aW9uOi0xOTJweCAtMTEycHh9LnVpLWljb24taGVhcnR7YmFja2dyb3VuZC1wb3NpdGlvbjotMjA4
cHggLTExMnB4fS51aS1pY29uLXN0YXJ7YmFja2dyb3VuZC1wb3NpdGlvbjotMjI0cHggLTExMnB4
fS51aS1pY29uLWxpbmt7YmFja2dyb3VuZC1wb3NpdGlvbjotMjQwcHggLTExMnB4fS51aS1pY29u
LWNhbmNlbHtiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgLTEyOHB4fS51aS1pY29uLXBsdXN7YmFja2dy
b3VuZC1wb3NpdGlvbjotMTZweCAtMTI4cHh9LnVpLWljb24tcGx1c3RoaWNre2JhY2tncm91bmQt
cG9zaXRpb246LTMycHggLTEyOHB4fS51aS1pY29uLW1pbnVze2JhY2tncm91bmQtcG9zaXRpb246
LTQ4cHggLTEyOHB4fS51aS1pY29uLW1pbnVzdGhpY2t7YmFja2dyb3VuZC1wb3NpdGlvbjotNjRw
eCAtMTI4cHh9LnVpLWljb24tY2xvc2V7YmFja2dyb3VuZC1wb3NpdGlvbjotODBweCAtMTI4cHh9
LnVpLWljb24tY2xvc2V0aGlja3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi05NnB4IC0xMjhweH0udWkt
aWNvbi1rZXl7YmFja2dyb3VuZC1wb3NpdGlvbjotMTEycHggLTEyOHB4fS51aS1pY29uLWxpZ2h0
YnVsYntiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMjhweCAtMTI4cHh9LnVpLWljb24tc2Npc3NvcnN7
YmFja2dyb3VuZC1wb3NpdGlvbjotMTQ0cHggLTEyOHB4fS51aS1pY29uLWNsaXBib2FyZHtiYWNr
Z3JvdW5kLXBvc2l0aW9uOi0xNjBweCAtMTI4cHh9LnVpLWljb24tY29weXtiYWNrZ3JvdW5kLXBv
c2l0aW9uOi0xNzZweCAtMTI4cHh9LnVpLWljb24tY29udGFjdHtiYWNrZ3JvdW5kLXBvc2l0aW9u
Oi0xOTJweCAtMTI4cHh9LnVpLWljb24taW1hZ2V7YmFja2dyb3VuZC1wb3NpdGlvbjotMjA4cHgg
LTEyOHB4fS51aS1pY29uLXZpZGVve2JhY2tncm91bmQtcG9zaXRpb246LTIyNHB4IC0xMjhweH0u
dWktaWNvbi1zY3JpcHR7YmFja2dyb3VuZC1wb3NpdGlvbjotMjQwcHggLTEyOHB4fS51aS1pY29u
LWFsZXJ0e2JhY2tncm91bmQtcG9zaXRpb246MCAtMTQ0cHh9LnVpLWljb24taW5mb3tiYWNrZ3Jv
dW5kLXBvc2l0aW9uOi0xNnB4IC0xNDRweH0udWktaWNvbi1ub3RpY2V7YmFja2dyb3VuZC1wb3Np
dGlvbjotMzJweCAtMTQ0cHh9LnVpLWljb24taGVscHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi00OHB4
IC0xNDRweH0udWktaWNvbi1jaGVja3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi02NHB4IC0xNDRweH0u
dWktaWNvbi1idWxsZXR7YmFja2dyb3VuZC1wb3NpdGlvbjotODBweCAtMTQ0cHh9LnVpLWljb24t
cmFkaW8tb257YmFja2dyb3VuZC1wb3NpdGlvbjotOTZweCAtMTQ0cHh9LnVpLWljb24tcmFkaW8t
b2Zme2JhY2tncm91bmQtcG9zaXRpb246LTExMnB4IC0xNDRweH0udWktaWNvbi1waW4td3tiYWNr
Z3JvdW5kLXBvc2l0aW9uOi0xMjhweCAtMTQ0cHh9LnVpLWljb24tcGluLXN7YmFja2dyb3VuZC1w
b3NpdGlvbjotMTQ0cHggLTE0NHB4fS51aS1pY29uLXBsYXl7YmFja2dyb3VuZC1wb3NpdGlvbjow
IC0xNjBweH0udWktaWNvbi1wYXVzZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNnB4IC0xNjBweH0u
dWktaWNvbi1zZWVrLW5leHR7YmFja2dyb3VuZC1wb3NpdGlvbjotMzJweCAtMTYwcHh9LnVpLWlj
b24tc2Vlay1wcmV2e2JhY2tncm91bmQtcG9zaXRpb246LTQ4cHggLTE2MHB4fS51aS1pY29uLXNl
ZWstZW5ke2JhY2tncm91bmQtcG9zaXRpb246LTY0cHggLTE2MHB4fS51aS1pY29uLXNlZWstc3Rh
cnR7YmFja2dyb3VuZC1wb3NpdGlvbjotODBweCAtMTYwcHh9LnVpLWljb24tc2Vlay1maXJzdHti
YWNrZ3JvdW5kLXBvc2l0aW9uOi04MHB4IC0xNjBweH0udWktaWNvbi1zdG9we2JhY2tncm91bmQt
cG9zaXRpb246LTk2cHggLTE2MHB4fS51aS1pY29uLWVqZWN0e2JhY2tncm91bmQtcG9zaXRpb246
LTExMnB4IC0xNjBweH0udWktaWNvbi12b2x1bWUtb2Zme2JhY2tncm91bmQtcG9zaXRpb246LTEy
OHB4IC0xNjBweH0udWktaWNvbi12b2x1bWUtb257YmFja2dyb3VuZC1wb3NpdGlvbjotMTQ0cHgg
LTE2MHB4fS51aS1pY29uLXBvd2Vye2JhY2tncm91bmQtcG9zaXRpb246MCAtMTc2cHh9LnVpLWlj
b24tc2lnbmFsLWRpYWd7YmFja2dyb3VuZC1wb3NpdGlvbjotMTZweCAtMTc2cHh9LnVpLWljb24t
c2lnbmFse2JhY2tncm91bmQtcG9zaXRpb246LTMycHggLTE3NnB4fS51aS1pY29uLWJhdHRlcnkt
MHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi00OHB4IC0xNzZweH0udWktaWNvbi1iYXR0ZXJ5LTF7YmFj
a2dyb3VuZC1wb3NpdGlvbjotNjRweCAtMTc2cHh9LnVpLWljb24tYmF0dGVyeS0ye2JhY2tncm91
bmQtcG9zaXRpb246LTgwcHggLTE3NnB4fS51aS1pY29uLWJhdHRlcnktM3tiYWNrZ3JvdW5kLXBv
c2l0aW9uOi05NnB4IC0xNzZweH0udWktaWNvbi1jaXJjbGUtcGx1c3tiYWNrZ3JvdW5kLXBvc2l0
aW9uOjAgLTE5MnB4fS51aS1pY29uLWNpcmNsZS1taW51c3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0x
NnB4IC0xOTJweH0udWktaWNvbi1jaXJjbGUtY2xvc2V7YmFja2dyb3VuZC1wb3NpdGlvbjotMzJw
eCAtMTkycHh9LnVpLWljb24tY2lyY2xlLXRyaWFuZ2xlLWV7YmFja2dyb3VuZC1wb3NpdGlvbjot
NDhweCAtMTkycHh9LnVpLWljb24tY2lyY2xlLXRyaWFuZ2xlLXN7YmFja2dyb3VuZC1wb3NpdGlv
bjotNjRweCAtMTkycHh9LnVpLWljb24tY2lyY2xlLXRyaWFuZ2xlLXd7YmFja2dyb3VuZC1wb3Np
dGlvbjotODBweCAtMTkycHh9LnVpLWljb24tY2lyY2xlLXRyaWFuZ2xlLW57YmFja2dyb3VuZC1w
b3NpdGlvbjotOTZweCAtMTkycHh9LnVpLWljb24tY2lyY2xlLWFycm93LWV7YmFja2dyb3VuZC1w
b3NpdGlvbjotMTEycHggLTE5MnB4fS51aS1pY29uLWNpcmNsZS1hcnJvdy1ze2JhY2tncm91bmQt
cG9zaXRpb246LTEyOHB4IC0xOTJweH0udWktaWNvbi1jaXJjbGUtYXJyb3ctd3tiYWNrZ3JvdW5k
LXBvc2l0aW9uOi0xNDRweCAtMTkycHh9LnVpLWljb24tY2lyY2xlLWFycm93LW57YmFja2dyb3Vu
ZC1wb3NpdGlvbjotMTYwcHggLTE5MnB4fS51aS1pY29uLWNpcmNsZS16b29taW57YmFja2dyb3Vu
ZC1wb3NpdGlvbjotMTc2cHggLTE5MnB4fS51aS1pY29uLWNpcmNsZS16b29tb3V0e2JhY2tncm91
bmQtcG9zaXRpb246LTE5MnB4IC0xOTJweH0udWktaWNvbi1jaXJjbGUtY2hlY2t7YmFja2dyb3Vu
ZC1wb3NpdGlvbjotMjA4cHggLTE5MnB4fS51aS1pY29uLWNpcmNsZXNtYWxsLXBsdXN7YmFja2dy
b3VuZC1wb3NpdGlvbjowIC0yMDhweH0udWktaWNvbi1jaXJjbGVzbWFsbC1taW51c3tiYWNrZ3Jv
dW5kLXBvc2l0aW9uOi0xNnB4IC0yMDhweH0udWktaWNvbi1jaXJjbGVzbWFsbC1jbG9zZXtiYWNr
Z3JvdW5kLXBvc2l0aW9uOi0zMnB4IC0yMDhweH0udWktaWNvbi1zcXVhcmVzbWFsbC1wbHVze2Jh
Y2tncm91bmQtcG9zaXRpb246LTQ4cHggLTIwOHB4fS51aS1pY29uLXNxdWFyZXNtYWxsLW1pbnVz
e2JhY2tncm91bmQtcG9zaXRpb246LTY0cHggLTIwOHB4fS51aS1pY29uLXNxdWFyZXNtYWxsLWNs
b3Nle2JhY2tncm91bmQtcG9zaXRpb246LTgwcHggLTIwOHB4fS51aS1pY29uLWdyaXAtZG90dGVk
LXZlcnRpY2Fse2JhY2tncm91bmQtcG9zaXRpb246MCAtMjI0cHh9LnVpLWljb24tZ3JpcC1kb3R0
ZWQtaG9yaXpvbnRhbHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNnB4IC0yMjRweH0udWktaWNvbi1n
cmlwLXNvbGlkLXZlcnRpY2Fse2JhY2tncm91bmQtcG9zaXRpb246LTMycHggLTIyNHB4fS51aS1p
Y29uLWdyaXAtc29saWQtaG9yaXpvbnRhbHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi00OHB4IC0yMjRw
eH0udWktaWNvbi1ncmlwc21hbGwtZGlhZ29uYWwtc2V7YmFja2dyb3VuZC1wb3NpdGlvbjotNjRw
eCAtMjI0cHh9LnVpLWljb24tZ3JpcC1kaWFnb25hbC1zZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi04
MHB4IC0yMjRweH0udWktY29ybmVyLWFsbCwudWktY29ybmVyLXRvcCwudWktY29ybmVyLWxlZnQs
LnVpLWNvcm5lci10bHtib3JkZXItdG9wLWxlZnQtcmFkaXVzOjRweH0udWktY29ybmVyLWFsbCwu
dWktY29ybmVyLXRvcCwudWktY29ybmVyLXJpZ2h0LC51aS1jb3JuZXItdHJ7Ym9yZGVyLXRvcC1y
aWdodC1yYWRpdXM6NHB4fS51aS1jb3JuZXItYWxsLC51aS1jb3JuZXItYm90dG9tLC51aS1jb3Ju
ZXItbGVmdCwudWktY29ybmVyLWJse2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6NHB4fS51aS1j
b3JuZXItYWxsLC51aS1jb3JuZXItYm90dG9tLC51aS1jb3JuZXItcmlnaHQsLnVpLWNvcm5lci1i
cntib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czo0cHh9LnVpLXdpZGdldC1vdmVybGF5e2JhY2tn
cm91bmQ6IzY2NiB1cmwoImltYWdlcy91aS1iZ19kaWFnb25hbHMtdGhpY2tfMjBfNjY2NjY2XzQw
eDQwLnBuZyIpIDUwJSA1MCUgcmVwZWF0O29wYWNpdHk6LjU7ZmlsdGVyOkFscGhhKE9wYWNpdHk9
NTApfS51aS13aWRnZXQtc2hhZG93ey13ZWJraXQtYm94LXNoYWRvdzotNXB4IC01cHggNXB4ICMw
MDA7Ym94LXNoYWRvdzotNXB4IC01cHggNXB4ICMwMDB9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQpkaWZmIC0tZ2l0IGEvV2ViRHJpdmVyVGVzdHMvaW1wb3J0ZWQvc2VsZW5pdW0vY29tbW9u
L3NyYy93ZWIvY3NzL3VpLWxpZ2h0bmVzcy9qcXVlcnktdWktMS44LjEwLmN1c3RvbS5jc3MgYi9X
ZWJEcml2ZXJUZXN0cy9pbXBvcnRlZC9zZWxlbml1bS9jb21tb24vc3JjL3dlYi9jc3MvdWktbGln
aHRuZXNzL2pxdWVyeS11aS0xLjguMTAuY3VzdG9tLmNzcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMTcwNmUyMjA3N2I3M2EzMjBiYjg3YmIxOGY0NzVlMTYyMTQ4MmEwNi4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9XZWJEcml2ZXJUZXN0cy9p
bXBvcnRlZC9zZWxlbml1bS9jb21tb24vc3JjL3dlYi9jc3MvdWktbGlnaHRuZXNzL2pxdWVyeS11
aS0xLjguMTAuY3VzdG9tLmNzcworKysgL2Rldi9udWxsCkBAIC0xLDU3MyArMCwwIEBACi0vKgot
ICogalF1ZXJ5IFVJIENTUyBGcmFtZXdvcmsgMS44LjEwCi0gKgotICogQ29weXJpZ2h0IDIwMTEs
IEFVVEhPUlMudHh0IChodHRwOi8vanF1ZXJ5dWkuY29tL2Fib3V0KQotICogRHVhbCBsaWNlbnNl
ZCB1bmRlciB0aGUgTUlUIG9yIEdQTCBWZXJzaW9uIDIgbGljZW5zZXMuCi0gKiBodHRwOi8vanF1
ZXJ5Lm9yZy9saWNlbnNlCi0gKgotICogaHR0cDovL2RvY3MuanF1ZXJ5LmNvbS9VSS9UaGVtaW5n
L0FQSQotICovCi0KLS8qIExheW91dCBoZWxwZXJzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tKi8KLS51aS1oZWxwZXItaGlkZGVuIHsgZGlzcGxheTogbm9uZTsgfQotLnVpLWhl
bHBlci1oaWRkZW4tYWNjZXNzaWJsZSB7IHBvc2l0aW9uOiBhYnNvbHV0ZSAhaW1wb3J0YW50OyBj
bGlwOiByZWN0KDFweCAxcHggMXB4IDFweCk7IGNsaXA6IHJlY3QoMXB4LDFweCwxcHgsMXB4KTsg
fQotLnVpLWhlbHBlci1yZXNldCB7IG1hcmdpbjogMDsgcGFkZGluZzogMDsgYm9yZGVyOiAwOyBv
dXRsaW5lOiAwOyBsaW5lLWhlaWdodDogMS4zOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IGZvbnQt
c2l6ZTogMTAwJTsgbGlzdC1zdHlsZTogbm9uZTsgfQotLnVpLWhlbHBlci1jbGVhcmZpeDphZnRl
ciB7IGNvbnRlbnQ6ICIuIjsgZGlzcGxheTogYmxvY2s7IGhlaWdodDogMDsgY2xlYXI6IGJvdGg7
IHZpc2liaWxpdHk6IGhpZGRlbjsgfQotLnVpLWhlbHBlci1jbGVhcmZpeCB7IGRpc3BsYXk6IGlu
bGluZS1ibG9jazsgfQotLyogcmVxdWlyZWQgY29tbWVudCBmb3IgY2xlYXJmaXggdG8gd29yayBp
biBPcGVyYSBcKi8KLSogaHRtbCAudWktaGVscGVyLWNsZWFyZml4IHsgaGVpZ2h0OjElOyB9Ci0u
dWktaGVscGVyLWNsZWFyZml4IHsgZGlzcGxheTpibG9jazsgfQotLyogZW5kIGNsZWFyZml4ICov
Ci0udWktaGVscGVyLXpmaXggeyB3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlOyB0b3A6IDA7IGxl
ZnQ6IDA7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgb3BhY2l0eTogMDsgZmlsdGVyOkFscGhhKE9wYWNp
dHk9MCk7IH0KLQotCi0vKiBJbnRlcmFjdGlvbiBDdWVzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tKi8KLS51aS1zdGF0ZS1kaXNhYmxlZCB7IGN1cnNvcjogZGVmYXVsdCAhaW1w
b3J0YW50OyB9Ci0KLQotLyogSWNvbnMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0qLwotCi0vKiBzdGF0ZXMgYW5kIGltYWdlcyAqLwotLnVpLWljb24geyBkaXNwbGF5OiBibG9j
azsgdGV4dC1pbmRlbnQ6IC05OTk5OXB4OyBvdmVyZmxvdzogaGlkZGVuOyBiYWNrZ3JvdW5kLXJl
cGVhdDogbm8tcmVwZWF0OyB9Ci0KLQotLyogTWlzYyB2aXN1YWxzCi0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tKi8KLQotLyogT3ZlcmxheXMgKi8KLS51aS13aWRnZXQtb3Zlcmxh
eSB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAwOyBsZWZ0OiAwOyB3aWR0aDogMTAwJTsgaGVp
Z2h0OiAxMDAlOyB9Ci0KLQotLyoKLSAqIGpRdWVyeSBVSSBDU1MgRnJhbWV3b3JrIDEuOC4xMAot
ICoKLSAqIENvcHlyaWdodCAyMDExLCBBVVRIT1JTLnR4dCAoaHR0cDovL2pxdWVyeXVpLmNvbS9h
Ym91dCkKLSAqIER1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBvciBHUEwgVmVyc2lvbiAyIGxp
Y2Vuc2VzLgotICogaHR0cDovL2pxdWVyeS5vcmcvbGljZW5zZQotICoKLSAqIGh0dHA6Ly9kb2Nz
LmpxdWVyeS5jb20vVUkvVGhlbWluZy9BUEkKLSAqCi0gKiBUbyB2aWV3IGFuZCBtb2RpZnkgdGhp
cyB0aGVtZSwgdmlzaXQgaHR0cDovL2pxdWVyeXVpLmNvbS90aGVtZXJvbGxlci8/ZmZEZWZhdWx0
PVRyZWJ1Y2hldCUyME1TLCUyMFRhaG9tYSwlMjBWZXJkYW5hLCUyMEFyaWFsLCUyMHNhbnMtc2Vy
aWYmZndEZWZhdWx0PWJvbGQmZnNEZWZhdWx0PTEuMWVtJmNvcm5lclJhZGl1cz00cHgmYmdDb2xv
ckhlYWRlcj1mNmE4MjgmYmdUZXh0dXJlSGVhZGVyPTEyX2dsb3NzX3dhdmUucG5nJmJnSW1nT3Bh
Y2l0eUhlYWRlcj0zNSZib3JkZXJDb2xvckhlYWRlcj1lNzhmMDgmZmNIZWFkZXI9ZmZmZmZmJmlj
b25Db2xvckhlYWRlcj1mZmZmZmYmYmdDb2xvckNvbnRlbnQ9ZWVlZWVlJmJnVGV4dHVyZUNvbnRl
bnQ9MDNfaGlnaGxpZ2h0X3NvZnQucG5nJmJnSW1nT3BhY2l0eUNvbnRlbnQ9MTAwJmJvcmRlckNv
bG9yQ29udGVudD1kZGRkZGQmZmNDb250ZW50PTMzMzMzMyZpY29uQ29sb3JDb250ZW50PTIyMjIy
MiZiZ0NvbG9yRGVmYXVsdD1mNmY2ZjYmYmdUZXh0dXJlRGVmYXVsdD0wMl9nbGFzcy5wbmcmYmdJ
bWdPcGFjaXR5RGVmYXVsdD0xMDAmYm9yZGVyQ29sb3JEZWZhdWx0PWNjY2NjYyZmY0RlZmF1bHQ9
MWM5NGM0Jmljb25Db2xvckRlZmF1bHQ9ZWY4YzA4JmJnQ29sb3JIb3Zlcj1mZGY1Y2UmYmdUZXh0
dXJlSG92ZXI9MDJfZ2xhc3MucG5nJmJnSW1nT3BhY2l0eUhvdmVyPTEwMCZib3JkZXJDb2xvckhv
dmVyPWZiY2IwOSZmY0hvdmVyPWM3NzQwNSZpY29uQ29sb3JIb3Zlcj1lZjhjMDgmYmdDb2xvckFj
dGl2ZT1mZmZmZmYmYmdUZXh0dXJlQWN0aXZlPTAyX2dsYXNzLnBuZyZiZ0ltZ09wYWNpdHlBY3Rp
dmU9NjUmYm9yZGVyQ29sb3JBY3RpdmU9ZmJkODUwJmZjQWN0aXZlPWViOGYwMCZpY29uQ29sb3JB
Y3RpdmU9ZWY4YzA4JmJnQ29sb3JIaWdobGlnaHQ9ZmZlNDVjJmJnVGV4dHVyZUhpZ2hsaWdodD0w
M19oaWdobGlnaHRfc29mdC5wbmcmYmdJbWdPcGFjaXR5SGlnaGxpZ2h0PTc1JmJvcmRlckNvbG9y
SGlnaGxpZ2h0PWZlZDIyZiZmY0hpZ2hsaWdodD0zNjM2MzYmaWNvbkNvbG9ySGlnaGxpZ2h0PTIy
OGVmMSZiZ0NvbG9yRXJyb3I9YjgxOTAwJmJnVGV4dHVyZUVycm9yPTA4X2RpYWdvbmFsc190aGlj
ay5wbmcmYmdJbWdPcGFjaXR5RXJyb3I9MTgmYm9yZGVyQ29sb3JFcnJvcj1jZDBhMGEmZmNFcnJv
cj1mZmZmZmYmaWNvbkNvbG9yRXJyb3I9ZmZkMjdhJmJnQ29sb3JPdmVybGF5PTY2NjY2NiZiZ1Rl
eHR1cmVPdmVybGF5PTA4X2RpYWdvbmFsc190aGljay5wbmcmYmdJbWdPcGFjaXR5T3ZlcmxheT0y
MCZvcGFjaXR5T3ZlcmxheT01MCZiZ0NvbG9yU2hhZG93PTAwMDAwMCZiZ1RleHR1cmVTaGFkb3c9
MDFfZmxhdC5wbmcmYmdJbWdPcGFjaXR5U2hhZG93PTEwJm9wYWNpdHlTaGFkb3c9MjAmdGhpY2tu
ZXNzU2hhZG93PTVweCZvZmZzZXRUb3BTaGFkb3c9LTVweCZvZmZzZXRMZWZ0U2hhZG93PS01cHgm
Y29ybmVyUmFkaXVzU2hhZG93PTVweAotICovCi0KLQotLyogQ29tcG9uZW50IGNvbnRhaW5lcnMK
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotLnVpLXdpZGdldCB7IGZvbnQt
ZmFtaWx5OiBUcmVidWNoZXQgTVMsIFRhaG9tYSwgVmVyZGFuYSwgQXJpYWwsIHNhbnMtc2VyaWY7
IGZvbnQtc2l6ZTogMS4xZW07IH0KLS51aS13aWRnZXQgLnVpLXdpZGdldCB7IGZvbnQtc2l6ZTog
MWVtOyB9Ci0udWktd2lkZ2V0IGlucHV0LCAudWktd2lkZ2V0IHNlbGVjdCwgLnVpLXdpZGdldCB0
ZXh0YXJlYSwgLnVpLXdpZGdldCBidXR0b24geyBmb250LWZhbWlseTogVHJlYnVjaGV0IE1TLCBU
YWhvbWEsIFZlcmRhbmEsIEFyaWFsLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDFlbTsgfQotLnVp
LXdpZGdldC1jb250ZW50IHsgYm9yZGVyOiAxcHggc29saWQgI2RkZGRkZDsgYmFja2dyb3VuZDog
I2VlZWVlZSB1cmwoaW1hZ2VzL3VpLWJnX2hpZ2hsaWdodC1zb2Z0XzEwMF9lZWVlZWVfMXgxMDAu
cG5nKSA1MCUgdG9wIHJlcGVhdC14OyBjb2xvcjogIzMzMzMzMzsgfQotLnVpLXdpZGdldC1jb250
ZW50IGEgeyBjb2xvcjogIzMzMzMzMzsgfQotLnVpLXdpZGdldC1oZWFkZXIgeyBib3JkZXI6IDFw
eCBzb2xpZCAjZTc4ZjA4OyBiYWNrZ3JvdW5kOiAjZjZhODI4IHVybChpbWFnZXMvdWktYmdfZ2xv
c3Mtd2F2ZV8zNV9mNmE4MjhfNTAweDEwMC5wbmcpIDUwJSA1MCUgcmVwZWF0LXg7IGNvbG9yOiAj
ZmZmZmZmOyBmb250LXdlaWdodDogYm9sZDsgfQotLnVpLXdpZGdldC1oZWFkZXIgYSB7IGNvbG9y
OiAjZmZmZmZmOyB9Ci0KLS8qIEludGVyYWN0aW9uIHN0YXRlcwotLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLSovCi0udWktc3RhdGUtZGVmYXVsdCwgLnVpLXdpZGdldC1jb250ZW50
IC51aS1zdGF0ZS1kZWZhdWx0LCAudWktd2lkZ2V0LWhlYWRlciAudWktc3RhdGUtZGVmYXVsdCB7
IGJvcmRlcjogMXB4IHNvbGlkICNjY2NjY2M7IGJhY2tncm91bmQ6ICNmNmY2ZjYgdXJsKGltYWdl
cy91aS1iZ19nbGFzc18xMDBfZjZmNmY2XzF4NDAwLnBuZykgNTAlIDUwJSByZXBlYXQteDsgZm9u
dC13ZWlnaHQ6IGJvbGQ7IGNvbG9yOiAjMWM5NGM0OyB9Ci0udWktc3RhdGUtZGVmYXVsdCBhLCAu
dWktc3RhdGUtZGVmYXVsdCBhOmxpbmssIC51aS1zdGF0ZS1kZWZhdWx0IGE6dmlzaXRlZCB7IGNv
bG9yOiAjMWM5NGM0OyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IH0KLS51aS1zdGF0ZS1ob3Zlciwg
LnVpLXdpZGdldC1jb250ZW50IC51aS1zdGF0ZS1ob3ZlciwgLnVpLXdpZGdldC1oZWFkZXIgLnVp
LXN0YXRlLWhvdmVyLCAudWktc3RhdGUtZm9jdXMsIC51aS13aWRnZXQtY29udGVudCAudWktc3Rh
dGUtZm9jdXMsIC51aS13aWRnZXQtaGVhZGVyIC51aS1zdGF0ZS1mb2N1cyB7IGJvcmRlcjogMXB4
IHNvbGlkICNmYmNiMDk7IGJhY2tncm91bmQ6ICNmZGY1Y2UgdXJsKGltYWdlcy91aS1iZ19nbGFz
c18xMDBfZmRmNWNlXzF4NDAwLnBuZykgNTAlIDUwJSByZXBlYXQteDsgZm9udC13ZWlnaHQ6IGJv
bGQ7IGNvbG9yOiAjYzc3NDA1OyB9Ci0udWktc3RhdGUtaG92ZXIgYSwgLnVpLXN0YXRlLWhvdmVy
IGE6aG92ZXIgeyBjb2xvcjogI2M3NzQwNTsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyB9Ci0udWkt
c3RhdGUtYWN0aXZlLCAudWktd2lkZ2V0LWNvbnRlbnQgLnVpLXN0YXRlLWFjdGl2ZSwgLnVpLXdp
ZGdldC1oZWFkZXIgLnVpLXN0YXRlLWFjdGl2ZSB7IGJvcmRlcjogMXB4IHNvbGlkICNmYmQ4NTA7
IGJhY2tncm91bmQ6ICNmZmZmZmYgdXJsKGltYWdlcy91aS1iZ19nbGFzc182NV9mZmZmZmZfMXg0
MDAucG5nKSA1MCUgNTAlIHJlcGVhdC14OyBmb250LXdlaWdodDogYm9sZDsgY29sb3I6ICNlYjhm
MDA7IH0KLS51aS1zdGF0ZS1hY3RpdmUgYSwgLnVpLXN0YXRlLWFjdGl2ZSBhOmxpbmssIC51aS1z
dGF0ZS1hY3RpdmUgYTp2aXNpdGVkIHsgY29sb3I6ICNlYjhmMDA7IHRleHQtZGVjb3JhdGlvbjog
bm9uZTsgfQotLnVpLXdpZGdldCA6YWN0aXZlIHsgb3V0bGluZTogbm9uZTsgfQotCi0vKiBJbnRl
cmFjdGlvbiBDdWVzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLS51aS1z
dGF0ZS1oaWdobGlnaHQsIC51aS13aWRnZXQtY29udGVudCAudWktc3RhdGUtaGlnaGxpZ2h0LCAu
dWktd2lkZ2V0LWhlYWRlciAudWktc3RhdGUtaGlnaGxpZ2h0ICB7Ym9yZGVyOiAxcHggc29saWQg
I2ZlZDIyZjsgYmFja2dyb3VuZDogI2ZmZTQ1YyB1cmwoaW1hZ2VzL3VpLWJnX2hpZ2hsaWdodC1z
b2Z0Xzc1X2ZmZTQ1Y18xeDEwMC5wbmcpIDUwJSB0b3AgcmVwZWF0LXg7IGNvbG9yOiAjMzYzNjM2
OyB9Ci0udWktc3RhdGUtaGlnaGxpZ2h0IGEsIC51aS13aWRnZXQtY29udGVudCAudWktc3RhdGUt
aGlnaGxpZ2h0IGEsLnVpLXdpZGdldC1oZWFkZXIgLnVpLXN0YXRlLWhpZ2hsaWdodCBhIHsgY29s
b3I6ICMzNjM2MzY7IH0KLS51aS1zdGF0ZS1lcnJvciwgLnVpLXdpZGdldC1jb250ZW50IC51aS1z
dGF0ZS1lcnJvciwgLnVpLXdpZGdldC1oZWFkZXIgLnVpLXN0YXRlLWVycm9yIHtib3JkZXI6IDFw
eCBzb2xpZCAjY2QwYTBhOyBiYWNrZ3JvdW5kOiAjYjgxOTAwIHVybChpbWFnZXMvdWktYmdfZGlh
Z29uYWxzLXRoaWNrXzE4X2I4MTkwMF80MHg0MC5wbmcpIDUwJSA1MCUgcmVwZWF0OyBjb2xvcjog
I2ZmZmZmZjsgfQotLnVpLXN0YXRlLWVycm9yIGEsIC51aS13aWRnZXQtY29udGVudCAudWktc3Rh
dGUtZXJyb3IgYSwgLnVpLXdpZGdldC1oZWFkZXIgLnVpLXN0YXRlLWVycm9yIGEgeyBjb2xvcjog
I2ZmZmZmZjsgfQotLnVpLXN0YXRlLWVycm9yLXRleHQsIC51aS13aWRnZXQtY29udGVudCAudWkt
c3RhdGUtZXJyb3ItdGV4dCwgLnVpLXdpZGdldC1oZWFkZXIgLnVpLXN0YXRlLWVycm9yLXRleHQg
eyBjb2xvcjogI2ZmZmZmZjsgfQotLnVpLXByaW9yaXR5LXByaW1hcnksIC51aS13aWRnZXQtY29u
dGVudCAudWktcHJpb3JpdHktcHJpbWFyeSwgLnVpLXdpZGdldC1oZWFkZXIgLnVpLXByaW9yaXR5
LXByaW1hcnkgeyBmb250LXdlaWdodDogYm9sZDsgfQotLnVpLXByaW9yaXR5LXNlY29uZGFyeSwg
LnVpLXdpZGdldC1jb250ZW50IC51aS1wcmlvcml0eS1zZWNvbmRhcnksICAudWktd2lkZ2V0LWhl
YWRlciAudWktcHJpb3JpdHktc2Vjb25kYXJ5IHsgb3BhY2l0eTogLjc7IGZpbHRlcjpBbHBoYShP
cGFjaXR5PTcwKTsgZm9udC13ZWlnaHQ6IG5vcm1hbDsgfQotLnVpLXN0YXRlLWRpc2FibGVkLCAu
dWktd2lkZ2V0LWNvbnRlbnQgLnVpLXN0YXRlLWRpc2FibGVkLCAudWktd2lkZ2V0LWhlYWRlciAu
dWktc3RhdGUtZGlzYWJsZWQgeyBvcGFjaXR5OiAuMzU7IGZpbHRlcjpBbHBoYShPcGFjaXR5PTM1
KTsgYmFja2dyb3VuZC1pbWFnZTogbm9uZTsgfQotCi0vKiBJY29ucwotLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSovCi0KLS8qIHN0YXRlcyBhbmQgaW1hZ2VzICovCi0udWktaWNv
biB7IHdpZHRoOiAxNnB4OyBoZWlnaHQ6IDE2cHg7IGJhY2tncm91bmQtaW1hZ2U6IHVybChpbWFn
ZXMvdWktaWNvbnNfMjIyMjIyXzI1NngyNDAucG5nKTsgfQotLnVpLXdpZGdldC1jb250ZW50IC51
aS1pY29uIHtiYWNrZ3JvdW5kLWltYWdlOiB1cmwoaW1hZ2VzL3VpLWljb25zXzIyMjIyMl8yNTZ4
MjQwLnBuZyk7IH0KLS51aS13aWRnZXQtaGVhZGVyIC51aS1pY29uIHtiYWNrZ3JvdW5kLWltYWdl
OiB1cmwoaW1hZ2VzL3VpLWljb25zX2ZmZmZmZl8yNTZ4MjQwLnBuZyk7IH0KLS51aS1zdGF0ZS1k
ZWZhdWx0IC51aS1pY29uIHsgYmFja2dyb3VuZC1pbWFnZTogdXJsKGltYWdlcy91aS1pY29uc19l
ZjhjMDhfMjU2eDI0MC5wbmcpOyB9Ci0udWktc3RhdGUtaG92ZXIgLnVpLWljb24sIC51aS1zdGF0
ZS1mb2N1cyAudWktaWNvbiB7YmFja2dyb3VuZC1pbWFnZTogdXJsKGltYWdlcy91aS1pY29uc19l
ZjhjMDhfMjU2eDI0MC5wbmcpOyB9Ci0udWktc3RhdGUtYWN0aXZlIC51aS1pY29uIHtiYWNrZ3Jv
dW5kLWltYWdlOiB1cmwoaW1hZ2VzL3VpLWljb25zX2VmOGMwOF8yNTZ4MjQwLnBuZyk7IH0KLS51
aS1zdGF0ZS1oaWdobGlnaHQgLnVpLWljb24ge2JhY2tncm91bmQtaW1hZ2U6IHVybChpbWFnZXMv
dWktaWNvbnNfMjI4ZWYxXzI1NngyNDAucG5nKTsgfQotLnVpLXN0YXRlLWVycm9yIC51aS1pY29u
LCAudWktc3RhdGUtZXJyb3ItdGV4dCAudWktaWNvbiB7YmFja2dyb3VuZC1pbWFnZTogdXJsKGlt
YWdlcy91aS1pY29uc19mZmQyN2FfMjU2eDI0MC5wbmcpOyB9Ci0KLS8qIHBvc2l0aW9uaW5nICov
Ci0udWktaWNvbi1jYXJhdC0xLW4geyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIDA7IH0KLS51aS1p
Y29uLWNhcmF0LTEtbmUgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTZweCAwOyB9Ci0udWktaWNv
bi1jYXJhdC0xLWUgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMzJweCAwOyB9Ci0udWktaWNvbi1j
YXJhdC0xLXNlIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTQ4cHggMDsgfQotLnVpLWljb24tY2Fy
YXQtMS1zIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTY0cHggMDsgfQotLnVpLWljb24tY2FyYXQt
MS1zdyB7IGJhY2tncm91bmQtcG9zaXRpb246IC04MHB4IDA7IH0KLS51aS1pY29uLWNhcmF0LTEt
dyB7IGJhY2tncm91bmQtcG9zaXRpb246IC05NnB4IDA7IH0KLS51aS1pY29uLWNhcmF0LTEtbncg
eyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTEycHggMDsgfQotLnVpLWljb24tY2FyYXQtMi1uLXMg
eyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTI4cHggMDsgfQotLnVpLWljb24tY2FyYXQtMi1lLXcg
eyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTQ0cHggMDsgfQotLnVpLWljb24tdHJpYW5nbGUtMS1u
IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAtMTZweDsgfQotLnVpLWljb24tdHJpYW5nbGUtMS1u
ZSB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xNnB4IC0xNnB4OyB9Ci0udWktaWNvbi10cmlhbmds
ZS0xLWUgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMzJweCAtMTZweDsgfQotLnVpLWljb24tdHJp
YW5nbGUtMS1zZSB7IGJhY2tncm91bmQtcG9zaXRpb246IC00OHB4IC0xNnB4OyB9Ci0udWktaWNv
bi10cmlhbmdsZS0xLXMgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNjRweCAtMTZweDsgfQotLnVp
LWljb24tdHJpYW5nbGUtMS1zdyB7IGJhY2tncm91bmQtcG9zaXRpb246IC04MHB4IC0xNnB4OyB9
Ci0udWktaWNvbi10cmlhbmdsZS0xLXcgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtOTZweCAtMTZw
eDsgfQotLnVpLWljb24tdHJpYW5nbGUtMS1udyB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xMTJw
eCAtMTZweDsgfQotLnVpLWljb24tdHJpYW5nbGUtMi1uLXMgeyBiYWNrZ3JvdW5kLXBvc2l0aW9u
OiAtMTI4cHggLTE2cHg7IH0KLS51aS1pY29uLXRyaWFuZ2xlLTItZS13IHsgYmFja2dyb3VuZC1w
b3NpdGlvbjogLTE0NHB4IC0xNnB4OyB9Ci0udWktaWNvbi1hcnJvdy0xLW4geyBiYWNrZ3JvdW5k
LXBvc2l0aW9uOiAwIC0zMnB4OyB9Ci0udWktaWNvbi1hcnJvdy0xLW5lIHsgYmFja2dyb3VuZC1w
b3NpdGlvbjogLTE2cHggLTMycHg7IH0KLS51aS1pY29uLWFycm93LTEtZSB7IGJhY2tncm91bmQt
cG9zaXRpb246IC0zMnB4IC0zMnB4OyB9Ci0udWktaWNvbi1hcnJvdy0xLXNlIHsgYmFja2dyb3Vu
ZC1wb3NpdGlvbjogLTQ4cHggLTMycHg7IH0KLS51aS1pY29uLWFycm93LTEtcyB7IGJhY2tncm91
bmQtcG9zaXRpb246IC02NHB4IC0zMnB4OyB9Ci0udWktaWNvbi1hcnJvdy0xLXN3IHsgYmFja2dy
b3VuZC1wb3NpdGlvbjogLTgwcHggLTMycHg7IH0KLS51aS1pY29uLWFycm93LTEtdyB7IGJhY2tn
cm91bmQtcG9zaXRpb246IC05NnB4IC0zMnB4OyB9Ci0udWktaWNvbi1hcnJvdy0xLW53IHsgYmFj
a2dyb3VuZC1wb3NpdGlvbjogLTExMnB4IC0zMnB4OyB9Ci0udWktaWNvbi1hcnJvdy0yLW4tcyB7
IGJhY2tncm91bmQtcG9zaXRpb246IC0xMjhweCAtMzJweDsgfQotLnVpLWljb24tYXJyb3ctMi1u
ZS1zdyB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xNDRweCAtMzJweDsgfQotLnVpLWljb24tYXJy
b3ctMi1lLXcgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTYwcHggLTMycHg7IH0KLS51aS1pY29u
LWFycm93LTItc2UtbncgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTc2cHggLTMycHg7IH0KLS51
aS1pY29uLWFycm93c3RvcC0xLW4geyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTkycHggLTMycHg7
IH0KLS51aS1pY29uLWFycm93c3RvcC0xLWUgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMjA4cHgg
LTMycHg7IH0KLS51aS1pY29uLWFycm93c3RvcC0xLXMgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAt
MjI0cHggLTMycHg7IH0KLS51aS1pY29uLWFycm93c3RvcC0xLXcgeyBiYWNrZ3JvdW5kLXBvc2l0
aW9uOiAtMjQwcHggLTMycHg7IH0KLS51aS1pY29uLWFycm93dGhpY2stMS1uIHsgYmFja2dyb3Vu
ZC1wb3NpdGlvbjogMCAtNDhweDsgfQotLnVpLWljb24tYXJyb3d0aGljay0xLW5lIHsgYmFja2dy
b3VuZC1wb3NpdGlvbjogLTE2cHggLTQ4cHg7IH0KLS51aS1pY29uLWFycm93dGhpY2stMS1lIHsg
YmFja2dyb3VuZC1wb3NpdGlvbjogLTMycHggLTQ4cHg7IH0KLS51aS1pY29uLWFycm93dGhpY2st
MS1zZSB7IGJhY2tncm91bmQtcG9zaXRpb246IC00OHB4IC00OHB4OyB9Ci0udWktaWNvbi1hcnJv
d3RoaWNrLTEtcyB7IGJhY2tncm91bmQtcG9zaXRpb246IC02NHB4IC00OHB4OyB9Ci0udWktaWNv
bi1hcnJvd3RoaWNrLTEtc3cgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtODBweCAtNDhweDsgfQot
LnVpLWljb24tYXJyb3d0aGljay0xLXcgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtOTZweCAtNDhw
eDsgfQotLnVpLWljb24tYXJyb3d0aGljay0xLW53IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTEx
MnB4IC00OHB4OyB9Ci0udWktaWNvbi1hcnJvd3RoaWNrLTItbi1zIHsgYmFja2dyb3VuZC1wb3Np
dGlvbjogLTEyOHB4IC00OHB4OyB9Ci0udWktaWNvbi1hcnJvd3RoaWNrLTItbmUtc3cgeyBiYWNr
Z3JvdW5kLXBvc2l0aW9uOiAtMTQ0cHggLTQ4cHg7IH0KLS51aS1pY29uLWFycm93dGhpY2stMi1l
LXcgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTYwcHggLTQ4cHg7IH0KLS51aS1pY29uLWFycm93
dGhpY2stMi1zZS1udyB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xNzZweCAtNDhweDsgfQotLnVp
LWljb24tYXJyb3d0aGlja3N0b3AtMS1uIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE5MnB4IC00
OHB4OyB9Ci0udWktaWNvbi1hcnJvd3RoaWNrc3RvcC0xLWUgeyBiYWNrZ3JvdW5kLXBvc2l0aW9u
OiAtMjA4cHggLTQ4cHg7IH0KLS51aS1pY29uLWFycm93dGhpY2tzdG9wLTEtcyB7IGJhY2tncm91
bmQtcG9zaXRpb246IC0yMjRweCAtNDhweDsgfQotLnVpLWljb24tYXJyb3d0aGlja3N0b3AtMS13
IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTI0MHB4IC00OHB4OyB9Ci0udWktaWNvbi1hcnJvd3Jl
dHVybnRoaWNrLTEtdyB7IGJhY2tncm91bmQtcG9zaXRpb246IDAgLTY0cHg7IH0KLS51aS1pY29u
LWFycm93cmV0dXJudGhpY2stMS1uIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE2cHggLTY0cHg7
IH0KLS51aS1pY29uLWFycm93cmV0dXJudGhpY2stMS1lIHsgYmFja2dyb3VuZC1wb3NpdGlvbjog
LTMycHggLTY0cHg7IH0KLS51aS1pY29uLWFycm93cmV0dXJudGhpY2stMS1zIHsgYmFja2dyb3Vu
ZC1wb3NpdGlvbjogLTQ4cHggLTY0cHg7IH0KLS51aS1pY29uLWFycm93cmV0dXJuLTEtdyB7IGJh
Y2tncm91bmQtcG9zaXRpb246IC02NHB4IC02NHB4OyB9Ci0udWktaWNvbi1hcnJvd3JldHVybi0x
LW4geyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtODBweCAtNjRweDsgfQotLnVpLWljb24tYXJyb3dy
ZXR1cm4tMS1lIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTk2cHggLTY0cHg7IH0KLS51aS1pY29u
LWFycm93cmV0dXJuLTEtcyB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xMTJweCAtNjRweDsgfQot
LnVpLWljb24tYXJyb3dyZWZyZXNoLTEtdyB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xMjhweCAt
NjRweDsgfQotLnVpLWljb24tYXJyb3dyZWZyZXNoLTEtbiB7IGJhY2tncm91bmQtcG9zaXRpb246
IC0xNDRweCAtNjRweDsgfQotLnVpLWljb24tYXJyb3dyZWZyZXNoLTEtZSB7IGJhY2tncm91bmQt
cG9zaXRpb246IC0xNjBweCAtNjRweDsgfQotLnVpLWljb24tYXJyb3dyZWZyZXNoLTEtcyB7IGJh
Y2tncm91bmQtcG9zaXRpb246IC0xNzZweCAtNjRweDsgfQotLnVpLWljb24tYXJyb3ctNCB7IGJh
Y2tncm91bmQtcG9zaXRpb246IDAgLTgwcHg7IH0KLS51aS1pY29uLWFycm93LTQtZGlhZyB7IGJh
Y2tncm91bmQtcG9zaXRpb246IC0xNnB4IC04MHB4OyB9Ci0udWktaWNvbi1leHRsaW5rIHsgYmFj
a2dyb3VuZC1wb3NpdGlvbjogLTMycHggLTgwcHg7IH0KLS51aS1pY29uLW5ld3dpbiB7IGJhY2tn
cm91bmQtcG9zaXRpb246IC00OHB4IC04MHB4OyB9Ci0udWktaWNvbi1yZWZyZXNoIHsgYmFja2dy
b3VuZC1wb3NpdGlvbjogLTY0cHggLTgwcHg7IH0KLS51aS1pY29uLXNodWZmbGUgeyBiYWNrZ3Jv
dW5kLXBvc2l0aW9uOiAtODBweCAtODBweDsgfQotLnVpLWljb24tdHJhbnNmZXItZS13IHsgYmFj
a2dyb3VuZC1wb3NpdGlvbjogLTk2cHggLTgwcHg7IH0KLS51aS1pY29uLXRyYW5zZmVydGhpY2st
ZS13IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTExMnB4IC04MHB4OyB9Ci0udWktaWNvbi1mb2xk
ZXItY29sbGFwc2VkIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAtOTZweDsgfQotLnVpLWljb24t
Zm9sZGVyLW9wZW4geyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTZweCAtOTZweDsgfQotLnVpLWlj
b24tZG9jdW1lbnQgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMzJweCAtOTZweDsgfQotLnVpLWlj
b24tZG9jdW1lbnQtYiB7IGJhY2tncm91bmQtcG9zaXRpb246IC00OHB4IC05NnB4OyB9Ci0udWkt
aWNvbi1ub3RlIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTY0cHggLTk2cHg7IH0KLS51aS1pY29u
LW1haWwtY2xvc2VkIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTgwcHggLTk2cHg7IH0KLS51aS1p
Y29uLW1haWwtb3BlbiB7IGJhY2tncm91bmQtcG9zaXRpb246IC05NnB4IC05NnB4OyB9Ci0udWkt
aWNvbi1zdWl0Y2FzZSB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xMTJweCAtOTZweDsgfQotLnVp
LWljb24tY29tbWVudCB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xMjhweCAtOTZweDsgfQotLnVp
LWljb24tcGVyc29uIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE0NHB4IC05NnB4OyB9Ci0udWkt
aWNvbi1wcmludCB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xNjBweCAtOTZweDsgfQotLnVpLWlj
b24tdHJhc2ggeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTc2cHggLTk2cHg7IH0KLS51aS1pY29u
LWxvY2tlZCB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xOTJweCAtOTZweDsgfQotLnVpLWljb24t
dW5sb2NrZWQgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMjA4cHggLTk2cHg7IH0KLS51aS1pY29u
LWJvb2ttYXJrIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTIyNHB4IC05NnB4OyB9Ci0udWktaWNv
bi10YWcgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMjQwcHggLTk2cHg7IH0KLS51aS1pY29uLWhv
bWUgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIC0xMTJweDsgfQotLnVpLWljb24tZmxhZyB7IGJh
Y2tncm91bmQtcG9zaXRpb246IC0xNnB4IC0xMTJweDsgfQotLnVpLWljb24tY2FsZW5kYXIgeyBi
YWNrZ3JvdW5kLXBvc2l0aW9uOiAtMzJweCAtMTEycHg7IH0KLS51aS1pY29uLWNhcnQgeyBiYWNr
Z3JvdW5kLXBvc2l0aW9uOiAtNDhweCAtMTEycHg7IH0KLS51aS1pY29uLXBlbmNpbCB7IGJhY2tn
cm91bmQtcG9zaXRpb246IC02NHB4IC0xMTJweDsgfQotLnVpLWljb24tY2xvY2sgeyBiYWNrZ3Jv
dW5kLXBvc2l0aW9uOiAtODBweCAtMTEycHg7IH0KLS51aS1pY29uLWRpc2sgeyBiYWNrZ3JvdW5k
LXBvc2l0aW9uOiAtOTZweCAtMTEycHg7IH0KLS51aS1pY29uLWNhbGN1bGF0b3IgeyBiYWNrZ3Jv
dW5kLXBvc2l0aW9uOiAtMTEycHggLTExMnB4OyB9Ci0udWktaWNvbi16b29taW4geyBiYWNrZ3Jv
dW5kLXBvc2l0aW9uOiAtMTI4cHggLTExMnB4OyB9Ci0udWktaWNvbi16b29tb3V0IHsgYmFja2dy
b3VuZC1wb3NpdGlvbjogLTE0NHB4IC0xMTJweDsgfQotLnVpLWljb24tc2VhcmNoIHsgYmFja2dy
b3VuZC1wb3NpdGlvbjogLTE2MHB4IC0xMTJweDsgfQotLnVpLWljb24td3JlbmNoIHsgYmFja2dy
b3VuZC1wb3NpdGlvbjogLTE3NnB4IC0xMTJweDsgfQotLnVpLWljb24tZ2VhciB7IGJhY2tncm91
bmQtcG9zaXRpb246IC0xOTJweCAtMTEycHg7IH0KLS51aS1pY29uLWhlYXJ0IHsgYmFja2dyb3Vu
ZC1wb3NpdGlvbjogLTIwOHB4IC0xMTJweDsgfQotLnVpLWljb24tc3RhciB7IGJhY2tncm91bmQt
cG9zaXRpb246IC0yMjRweCAtMTEycHg7IH0KLS51aS1pY29uLWxpbmsgeyBiYWNrZ3JvdW5kLXBv
c2l0aW9uOiAtMjQwcHggLTExMnB4OyB9Ci0udWktaWNvbi1jYW5jZWwgeyBiYWNrZ3JvdW5kLXBv
c2l0aW9uOiAwIC0xMjhweDsgfQotLnVpLWljb24tcGx1cyB7IGJhY2tncm91bmQtcG9zaXRpb246
IC0xNnB4IC0xMjhweDsgfQotLnVpLWljb24tcGx1c3RoaWNrIHsgYmFja2dyb3VuZC1wb3NpdGlv
bjogLTMycHggLTEyOHB4OyB9Ci0udWktaWNvbi1taW51cyB7IGJhY2tncm91bmQtcG9zaXRpb246
IC00OHB4IC0xMjhweDsgfQotLnVpLWljb24tbWludXN0aGljayB7IGJhY2tncm91bmQtcG9zaXRp
b246IC02NHB4IC0xMjhweDsgfQotLnVpLWljb24tY2xvc2UgeyBiYWNrZ3JvdW5kLXBvc2l0aW9u
OiAtODBweCAtMTI4cHg7IH0KLS51aS1pY29uLWNsb3NldGhpY2sgeyBiYWNrZ3JvdW5kLXBvc2l0
aW9uOiAtOTZweCAtMTI4cHg7IH0KLS51aS1pY29uLWtleSB7IGJhY2tncm91bmQtcG9zaXRpb246
IC0xMTJweCAtMTI4cHg7IH0KLS51aS1pY29uLWxpZ2h0YnVsYiB7IGJhY2tncm91bmQtcG9zaXRp
b246IC0xMjhweCAtMTI4cHg7IH0KLS51aS1pY29uLXNjaXNzb3JzIHsgYmFja2dyb3VuZC1wb3Np
dGlvbjogLTE0NHB4IC0xMjhweDsgfQotLnVpLWljb24tY2xpcGJvYXJkIHsgYmFja2dyb3VuZC1w
b3NpdGlvbjogLTE2MHB4IC0xMjhweDsgfQotLnVpLWljb24tY29weSB7IGJhY2tncm91bmQtcG9z
aXRpb246IC0xNzZweCAtMTI4cHg7IH0KLS51aS1pY29uLWNvbnRhY3QgeyBiYWNrZ3JvdW5kLXBv
c2l0aW9uOiAtMTkycHggLTEyOHB4OyB9Ci0udWktaWNvbi1pbWFnZSB7IGJhY2tncm91bmQtcG9z
aXRpb246IC0yMDhweCAtMTI4cHg7IH0KLS51aS1pY29uLXZpZGVvIHsgYmFja2dyb3VuZC1wb3Np
dGlvbjogLTIyNHB4IC0xMjhweDsgfQotLnVpLWljb24tc2NyaXB0IHsgYmFja2dyb3VuZC1wb3Np
dGlvbjogLTI0MHB4IC0xMjhweDsgfQotLnVpLWljb24tYWxlcnQgeyBiYWNrZ3JvdW5kLXBvc2l0
aW9uOiAwIC0xNDRweDsgfQotLnVpLWljb24taW5mbyB7IGJhY2tncm91bmQtcG9zaXRpb246IC0x
NnB4IC0xNDRweDsgfQotLnVpLWljb24tbm90aWNlIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTMy
cHggLTE0NHB4OyB9Ci0udWktaWNvbi1oZWxwIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTQ4cHgg
LTE0NHB4OyB9Ci0udWktaWNvbi1jaGVjayB7IGJhY2tncm91bmQtcG9zaXRpb246IC02NHB4IC0x
NDRweDsgfQotLnVpLWljb24tYnVsbGV0IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTgwcHggLTE0
NHB4OyB9Ci0udWktaWNvbi1yYWRpby1vZmYgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtOTZweCAt
MTQ0cHg7IH0KLS51aS1pY29uLXJhZGlvLW9uIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTExMnB4
IC0xNDRweDsgfQotLnVpLWljb24tcGluLXcgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTI4cHgg
LTE0NHB4OyB9Ci0udWktaWNvbi1waW4tcyB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xNDRweCAt
MTQ0cHg7IH0KLS51aS1pY29uLXBsYXkgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIC0xNjBweDsg
fQotLnVpLWljb24tcGF1c2UgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTZweCAtMTYwcHg7IH0K
LS51aS1pY29uLXNlZWstbmV4dCB7IGJhY2tncm91bmQtcG9zaXRpb246IC0zMnB4IC0xNjBweDsg
fQotLnVpLWljb24tc2Vlay1wcmV2IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTQ4cHggLTE2MHB4
OyB9Ci0udWktaWNvbi1zZWVrLWVuZCB7IGJhY2tncm91bmQtcG9zaXRpb246IC02NHB4IC0xNjBw
eDsgfQotLnVpLWljb24tc2Vlay1zdGFydCB7IGJhY2tncm91bmQtcG9zaXRpb246IC04MHB4IC0x
NjBweDsgfQotLyogdWktaWNvbi1zZWVrLWZpcnN0IGlzIGRlcHJlY2F0ZWQsIHVzZSB1aS1pY29u
LXNlZWstc3RhcnQgaW5zdGVhZCAqLwotLnVpLWljb24tc2Vlay1maXJzdCB7IGJhY2tncm91bmQt
cG9zaXRpb246IC04MHB4IC0xNjBweDsgfQotLnVpLWljb24tc3RvcCB7IGJhY2tncm91bmQtcG9z
aXRpb246IC05NnB4IC0xNjBweDsgfQotLnVpLWljb24tZWplY3QgeyBiYWNrZ3JvdW5kLXBvc2l0
aW9uOiAtMTEycHggLTE2MHB4OyB9Ci0udWktaWNvbi12b2x1bWUtb2ZmIHsgYmFja2dyb3VuZC1w
b3NpdGlvbjogLTEyOHB4IC0xNjBweDsgfQotLnVpLWljb24tdm9sdW1lLW9uIHsgYmFja2dyb3Vu
ZC1wb3NpdGlvbjogLTE0NHB4IC0xNjBweDsgfQotLnVpLWljb24tcG93ZXIgeyBiYWNrZ3JvdW5k
LXBvc2l0aW9uOiAwIC0xNzZweDsgfQotLnVpLWljb24tc2lnbmFsLWRpYWcgeyBiYWNrZ3JvdW5k
LXBvc2l0aW9uOiAtMTZweCAtMTc2cHg7IH0KLS51aS1pY29uLXNpZ25hbCB7IGJhY2tncm91bmQt
cG9zaXRpb246IC0zMnB4IC0xNzZweDsgfQotLnVpLWljb24tYmF0dGVyeS0wIHsgYmFja2dyb3Vu
ZC1wb3NpdGlvbjogLTQ4cHggLTE3NnB4OyB9Ci0udWktaWNvbi1iYXR0ZXJ5LTEgeyBiYWNrZ3Jv
dW5kLXBvc2l0aW9uOiAtNjRweCAtMTc2cHg7IH0KLS51aS1pY29uLWJhdHRlcnktMiB7IGJhY2tn
cm91bmQtcG9zaXRpb246IC04MHB4IC0xNzZweDsgfQotLnVpLWljb24tYmF0dGVyeS0zIHsgYmFj
a2dyb3VuZC1wb3NpdGlvbjogLTk2cHggLTE3NnB4OyB9Ci0udWktaWNvbi1jaXJjbGUtcGx1cyB7
IGJhY2tncm91bmQtcG9zaXRpb246IDAgLTE5MnB4OyB9Ci0udWktaWNvbi1jaXJjbGUtbWludXMg
eyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTZweCAtMTkycHg7IH0KLS51aS1pY29uLWNpcmNsZS1j
bG9zZSB7IGJhY2tncm91bmQtcG9zaXRpb246IC0zMnB4IC0xOTJweDsgfQotLnVpLWljb24tY2ly
Y2xlLXRyaWFuZ2xlLWUgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNDhweCAtMTkycHg7IH0KLS51
aS1pY29uLWNpcmNsZS10cmlhbmdsZS1zIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTY0cHggLTE5
MnB4OyB9Ci0udWktaWNvbi1jaXJjbGUtdHJpYW5nbGUtdyB7IGJhY2tncm91bmQtcG9zaXRpb246
IC04MHB4IC0xOTJweDsgfQotLnVpLWljb24tY2lyY2xlLXRyaWFuZ2xlLW4geyBiYWNrZ3JvdW5k
LXBvc2l0aW9uOiAtOTZweCAtMTkycHg7IH0KLS51aS1pY29uLWNpcmNsZS1hcnJvdy1lIHsgYmFj
a2dyb3VuZC1wb3NpdGlvbjogLTExMnB4IC0xOTJweDsgfQotLnVpLWljb24tY2lyY2xlLWFycm93
LXMgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTI4cHggLTE5MnB4OyB9Ci0udWktaWNvbi1jaXJj
bGUtYXJyb3ctdyB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xNDRweCAtMTkycHg7IH0KLS51aS1p
Y29uLWNpcmNsZS1hcnJvdy1uIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE2MHB4IC0xOTJweDsg
fQotLnVpLWljb24tY2lyY2xlLXpvb21pbiB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xNzZweCAt
MTkycHg7IH0KLS51aS1pY29uLWNpcmNsZS16b29tb3V0IHsgYmFja2dyb3VuZC1wb3NpdGlvbjog
LTE5MnB4IC0xOTJweDsgfQotLnVpLWljb24tY2lyY2xlLWNoZWNrIHsgYmFja2dyb3VuZC1wb3Np
dGlvbjogLTIwOHB4IC0xOTJweDsgfQotLnVpLWljb24tY2lyY2xlc21hbGwtcGx1cyB7IGJhY2tn
cm91bmQtcG9zaXRpb246IDAgLTIwOHB4OyB9Ci0udWktaWNvbi1jaXJjbGVzbWFsbC1taW51cyB7
IGJhY2tncm91bmQtcG9zaXRpb246IC0xNnB4IC0yMDhweDsgfQotLnVpLWljb24tY2lyY2xlc21h
bGwtY2xvc2UgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMzJweCAtMjA4cHg7IH0KLS51aS1pY29u
LXNxdWFyZXNtYWxsLXBsdXMgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNDhweCAtMjA4cHg7IH0K
LS51aS1pY29uLXNxdWFyZXNtYWxsLW1pbnVzIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTY0cHgg
LTIwOHB4OyB9Ci0udWktaWNvbi1zcXVhcmVzbWFsbC1jbG9zZSB7IGJhY2tncm91bmQtcG9zaXRp
b246IC04MHB4IC0yMDhweDsgfQotLnVpLWljb24tZ3JpcC1kb3R0ZWQtdmVydGljYWwgeyBiYWNr
Z3JvdW5kLXBvc2l0aW9uOiAwIC0yMjRweDsgfQotLnVpLWljb24tZ3JpcC1kb3R0ZWQtaG9yaXpv
bnRhbCB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xNnB4IC0yMjRweDsgfQotLnVpLWljb24tZ3Jp
cC1zb2xpZC12ZXJ0aWNhbCB7IGJhY2tncm91bmQtcG9zaXRpb246IC0zMnB4IC0yMjRweDsgfQot
LnVpLWljb24tZ3JpcC1zb2xpZC1ob3Jpem9udGFsIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTQ4
cHggLTIyNHB4OyB9Ci0udWktaWNvbi1ncmlwc21hbGwtZGlhZ29uYWwtc2UgeyBiYWNrZ3JvdW5k
LXBvc2l0aW9uOiAtNjRweCAtMjI0cHg7IH0KLS51aS1pY29uLWdyaXAtZGlhZ29uYWwtc2UgeyBi
YWNrZ3JvdW5kLXBvc2l0aW9uOiAtODBweCAtMjI0cHg7IH0KLQotCi0vKiBNaXNjIHZpc3VhbHMK
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotCi0vKiBDb3JuZXIgcmFkaXVz
ICovCi0udWktY29ybmVyLXRsIHsgLW1vei1ib3JkZXItcmFkaXVzLXRvcGxlZnQ6IDRweDsgLXdl
YmtpdC1ib3JkZXItdG9wLWxlZnQtcmFkaXVzOiA0cHg7IGJvcmRlci10b3AtbGVmdC1yYWRpdXM6
IDRweDsgfQotLnVpLWNvcm5lci10ciB7IC1tb3otYm9yZGVyLXJhZGl1cy10b3ByaWdodDogNHB4
OyAtd2Via2l0LWJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiA0cHg7IGJvcmRlci10b3AtcmlnaHQt
cmFkaXVzOiA0cHg7IH0KLS51aS1jb3JuZXItYmwgeyAtbW96LWJvcmRlci1yYWRpdXMtYm90dG9t
bGVmdDogNHB4OyAtd2Via2l0LWJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDRweDsgYm9yZGVy
LWJvdHRvbS1sZWZ0LXJhZGl1czogNHB4OyB9Ci0udWktY29ybmVyLWJyIHsgLW1vei1ib3JkZXIt
cmFkaXVzLWJvdHRvbXJpZ2h0OiA0cHg7IC13ZWJraXQtYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRp
dXM6IDRweDsgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDRweDsgfQotLnVpLWNvcm5lci10
b3AgeyAtbW96LWJvcmRlci1yYWRpdXMtdG9wbGVmdDogNHB4OyAtd2Via2l0LWJvcmRlci10b3At
bGVmdC1yYWRpdXM6IDRweDsgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogNHB4OyAtbW96LWJvcmRl
ci1yYWRpdXMtdG9wcmlnaHQ6IDRweDsgLXdlYmtpdC1ib3JkZXItdG9wLXJpZ2h0LXJhZGl1czog
NHB4OyBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogNHB4OyB9Ci0udWktY29ybmVyLWJvdHRvbSB7
IC1tb3otYm9yZGVyLXJhZGl1cy1ib3R0b21sZWZ0OiA0cHg7IC13ZWJraXQtYm9yZGVyLWJvdHRv
bS1sZWZ0LXJhZGl1czogNHB4OyBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiA0cHg7IC1tb3ot
Ym9yZGVyLXJhZGl1cy1ib3R0b21yaWdodDogNHB4OyAtd2Via2l0LWJvcmRlci1ib3R0b20tcmln
aHQtcmFkaXVzOiA0cHg7IGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiA0cHg7IH0KLS51aS1j
b3JuZXItcmlnaHQgeyAgLW1vei1ib3JkZXItcmFkaXVzLXRvcHJpZ2h0OiA0cHg7IC13ZWJraXQt
Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDRweDsgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDRw
eDsgLW1vei1ib3JkZXItcmFkaXVzLWJvdHRvbXJpZ2h0OiA0cHg7IC13ZWJraXQtYm9yZGVyLWJv
dHRvbS1yaWdodC1yYWRpdXM6IDRweDsgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDRweDsg
fQotLnVpLWNvcm5lci1sZWZ0IHsgLW1vei1ib3JkZXItcmFkaXVzLXRvcGxlZnQ6IDRweDsgLXdl
YmtpdC1ib3JkZXItdG9wLWxlZnQtcmFkaXVzOiA0cHg7IGJvcmRlci10b3AtbGVmdC1yYWRpdXM6
IDRweDsgLW1vei1ib3JkZXItcmFkaXVzLWJvdHRvbWxlZnQ6IDRweDsgLXdlYmtpdC1ib3JkZXIt
Ym90dG9tLWxlZnQtcmFkaXVzOiA0cHg7IGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDRweDsg
fQotLnVpLWNvcm5lci1hbGwgeyAtbW96LWJvcmRlci1yYWRpdXM6IDRweDsgLXdlYmtpdC1ib3Jk
ZXItcmFkaXVzOiA0cHg7IGJvcmRlci1yYWRpdXM6IDRweDsgfQotCi0vKiBPdmVybGF5cyAqLwot
LnVpLXdpZGdldC1vdmVybGF5IHsgYmFja2dyb3VuZDogIzY2NjY2NiB1cmwoaW1hZ2VzL3VpLWJn
X2RpYWdvbmFscy10aGlja18yMF82NjY2NjZfNDB4NDAucG5nKSA1MCUgNTAlIHJlcGVhdDsgb3Bh
Y2l0eTogLjUwO2ZpbHRlcjpBbHBoYShPcGFjaXR5PTUwKTsgfQotLnVpLXdpZGdldC1zaGFkb3cg
eyBtYXJnaW46IC01cHggMCAwIC01cHg7IHBhZGRpbmc6IDVweDsgYmFja2dyb3VuZDogIzAwMDAw
MCB1cmwoaW1hZ2VzL3VpLWJnX2ZsYXRfMTBfMDAwMDAwXzQweDEwMC5wbmcpIDUwJSA1MCUgcmVw
ZWF0LXg7IG9wYWNpdHk6IC4yMDtmaWx0ZXI6QWxwaGEoT3BhY2l0eT0yMCk7IC1tb3otYm9yZGVy
LXJhZGl1czogNXB4OyAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDVweDsgYm9yZGVyLXJhZGl1czog
NXB4OyB9LyoKLSAqIGpRdWVyeSBVSSBSZXNpemFibGUgMS44LjEwCi0gKgotICogQ29weXJpZ2h0
IDIwMTEsIEFVVEhPUlMudHh0IChodHRwOi8vanF1ZXJ5dWkuY29tL2Fib3V0KQotICogRHVhbCBs
aWNlbnNlZCB1bmRlciB0aGUgTUlUIG9yIEdQTCBWZXJzaW9uIDIgbGljZW5zZXMuCi0gKiBodHRw
Oi8vanF1ZXJ5Lm9yZy9saWNlbnNlCi0gKgotICogaHR0cDovL2RvY3MuanF1ZXJ5LmNvbS9VSS9S
ZXNpemFibGUjdGhlbWluZwotICovCi0udWktcmVzaXphYmxlIHsgcG9zaXRpb246IHJlbGF0aXZl
O30KLS51aS1yZXNpemFibGUtaGFuZGxlIHsgcG9zaXRpb246IGFic29sdXRlO2ZvbnQtc2l6ZTog
MC4xcHg7ei1pbmRleDogOTk5OTk7IGRpc3BsYXk6IGJsb2NrO30KLS51aS1yZXNpemFibGUtZGlz
YWJsZWQgLnVpLXJlc2l6YWJsZS1oYW5kbGUsIC51aS1yZXNpemFibGUtYXV0b2hpZGUgLnVpLXJl
c2l6YWJsZS1oYW5kbGUgeyBkaXNwbGF5OiBub25lOyB9Ci0udWktcmVzaXphYmxlLW4geyBjdXJz
b3I6IG4tcmVzaXplOyBoZWlnaHQ6IDdweDsgd2lkdGg6IDEwMCU7IHRvcDogLTVweDsgbGVmdDog
MDsgfQotLnVpLXJlc2l6YWJsZS1zIHsgY3Vyc29yOiBzLXJlc2l6ZTsgaGVpZ2h0OiA3cHg7IHdp
ZHRoOiAxMDAlOyBib3R0b206IC01cHg7IGxlZnQ6IDA7IH0KLS51aS1yZXNpemFibGUtZSB7IGN1
cnNvcjogZS1yZXNpemU7IHdpZHRoOiA3cHg7IHJpZ2h0OiAtNXB4OyB0b3A6IDA7IGhlaWdodDog
MTAwJTsgfQotLnVpLXJlc2l6YWJsZS13IHsgY3Vyc29yOiB3LXJlc2l6ZTsgd2lkdGg6IDdweDsg
bGVmdDogLTVweDsgdG9wOiAwOyBoZWlnaHQ6IDEwMCU7IH0KLS51aS1yZXNpemFibGUtc2UgeyBj
dXJzb3I6IHNlLXJlc2l6ZTsgd2lkdGg6IDEycHg7IGhlaWdodDogMTJweDsgcmlnaHQ6IDFweDsg
Ym90dG9tOiAxcHg7IH0KLS51aS1yZXNpemFibGUtc3cgeyBjdXJzb3I6IHN3LXJlc2l6ZTsgd2lk
dGg6IDlweDsgaGVpZ2h0OiA5cHg7IGxlZnQ6IC01cHg7IGJvdHRvbTogLTVweDsgfQotLnVpLXJl
c2l6YWJsZS1udyB7IGN1cnNvcjogbnctcmVzaXplOyB3aWR0aDogOXB4OyBoZWlnaHQ6IDlweDsg
bGVmdDogLTVweDsgdG9wOiAtNXB4OyB9Ci0udWktcmVzaXphYmxlLW5lIHsgY3Vyc29yOiBuZS1y
ZXNpemU7IHdpZHRoOiA5cHg7IGhlaWdodDogOXB4OyByaWdodDogLTVweDsgdG9wOiAtNXB4O30v
KgotICogalF1ZXJ5IFVJIFNlbGVjdGFibGUgMS44LjEwCi0gKgotICogQ29weXJpZ2h0IDIwMTEs
IEFVVEhPUlMudHh0IChodHRwOi8vanF1ZXJ5dWkuY29tL2Fib3V0KQotICogRHVhbCBsaWNlbnNl
ZCB1bmRlciB0aGUgTUlUIG9yIEdQTCBWZXJzaW9uIDIgbGljZW5zZXMuCi0gKiBodHRwOi8vanF1
ZXJ5Lm9yZy9saWNlbnNlCi0gKgotICogaHR0cDovL2RvY3MuanF1ZXJ5LmNvbS9VSS9TZWxlY3Rh
YmxlI3RoZW1pbmcKLSAqLwotLnVpLXNlbGVjdGFibGUtaGVscGVyIHsgcG9zaXRpb246IGFic29s
dXRlOyB6LWluZGV4OiAxMDA7IGJvcmRlcjoxcHggZG90dGVkIGJsYWNrOyB9Ci0vKgotICogalF1
ZXJ5IFVJIEFjY29yZGlvbiAxLjguMTAKLSAqCi0gKiBDb3B5cmlnaHQgMjAxMSwgQVVUSE9SUy50
eHQgKGh0dHA6Ly9qcXVlcnl1aS5jb20vYWJvdXQpCi0gKiBEdWFsIGxpY2Vuc2VkIHVuZGVyIHRo
ZSBNSVQgb3IgR1BMIFZlcnNpb24gMiBsaWNlbnNlcy4KLSAqIGh0dHA6Ly9qcXVlcnkub3JnL2xp
Y2Vuc2UKLSAqCi0gKiBodHRwOi8vZG9jcy5qcXVlcnkuY29tL1VJL0FjY29yZGlvbiN0aGVtaW5n
Ci0gKi8KLS8qIElFL1dpbiAtIEZpeCBhbmltYXRpb24gYnVnIC0gIzQ2MTUgKi8KLS51aS1hY2Nv
cmRpb24geyB3aWR0aDogMTAwJTsgfQotLnVpLWFjY29yZGlvbiAudWktYWNjb3JkaW9uLWhlYWRl
ciB7IGN1cnNvcjogcG9pbnRlcjsgcG9zaXRpb246IHJlbGF0aXZlOyBtYXJnaW4tdG9wOiAxcHg7
IHpvb206IDE7IH0KLS51aS1hY2NvcmRpb24gLnVpLWFjY29yZGlvbi1saS1maXggeyBkaXNwbGF5
OiBpbmxpbmU7IH0KLS51aS1hY2NvcmRpb24gLnVpLWFjY29yZGlvbi1oZWFkZXItYWN0aXZlIHsg
Ym9yZGVyLWJvdHRvbTogMCAhaW1wb3J0YW50OyB9Ci0udWktYWNjb3JkaW9uIC51aS1hY2NvcmRp
b24taGVhZGVyIGEgeyBkaXNwbGF5OiBibG9jazsgZm9udC1zaXplOiAxZW07IHBhZGRpbmc6IC41
ZW0gLjVlbSAuNWVtIC43ZW07IH0KLS51aS1hY2NvcmRpb24taWNvbnMgLnVpLWFjY29yZGlvbi1o
ZWFkZXIgYSB7IHBhZGRpbmctbGVmdDogMi4yZW07IH0KLS51aS1hY2NvcmRpb24gLnVpLWFjY29y
ZGlvbi1oZWFkZXIgLnVpLWljb24geyBwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6IC41ZW07IHRv
cDogNTAlOyBtYXJnaW4tdG9wOiAtOHB4OyB9Ci0udWktYWNjb3JkaW9uIC51aS1hY2NvcmRpb24t
Y29udGVudCB7IHBhZGRpbmc6IDFlbSAyLjJlbTsgYm9yZGVyLXRvcDogMDsgbWFyZ2luLXRvcDog
LTJweDsgcG9zaXRpb246IHJlbGF0aXZlOyB0b3A6IDFweDsgbWFyZ2luLWJvdHRvbTogMnB4OyBv
dmVyZmxvdzogYXV0bzsgZGlzcGxheTogbm9uZTsgem9vbTogMTsgfQotLnVpLWFjY29yZGlvbiAu
dWktYWNjb3JkaW9uLWNvbnRlbnQtYWN0aXZlIHsgZGlzcGxheTogYmxvY2s7IH0KLS8qCi0gKiBq
UXVlcnkgVUkgQXV0b2NvbXBsZXRlIDEuOC4xMAotICoKLSAqIENvcHlyaWdodCAyMDExLCBBVVRI
T1JTLnR4dCAoaHR0cDovL2pxdWVyeXVpLmNvbS9hYm91dCkKLSAqIER1YWwgbGljZW5zZWQgdW5k
ZXIgdGhlIE1JVCBvciBHUEwgVmVyc2lvbiAyIGxpY2Vuc2VzLgotICogaHR0cDovL2pxdWVyeS5v
cmcvbGljZW5zZQotICoKLSAqIGh0dHA6Ly9kb2NzLmpxdWVyeS5jb20vVUkvQXV0b2NvbXBsZXRl
I3RoZW1pbmcKLSAqLwotLnVpLWF1dG9jb21wbGV0ZSB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgY3Vy
c29yOiBkZWZhdWx0OyB9CQotCi0vKiB3b3JrYXJvdW5kcyAqLwotKiBodG1sIC51aS1hdXRvY29t
cGxldGUgeyB3aWR0aDoxcHg7IH0gLyogd2l0aG91dCB0aGlzLCB0aGUgbWVudSBleHBhbmRzIHRv
IDEwMCUgaW4gSUU2ICovCi0KLS8qCi0gKiBqUXVlcnkgVUkgTWVudSAxLjguMTAKLSAqCi0gKiBD
b3B5cmlnaHQgMjAxMCwgQVVUSE9SUy50eHQgKGh0dHA6Ly9qcXVlcnl1aS5jb20vYWJvdXQpCi0g
KiBEdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgb3IgR1BMIFZlcnNpb24gMiBsaWNlbnNlcy4K
LSAqIGh0dHA6Ly9qcXVlcnkub3JnL2xpY2Vuc2UKLSAqCi0gKiBodHRwOi8vZG9jcy5qcXVlcnku
Y29tL1VJL01lbnUjdGhlbWluZwotICovCi0udWktbWVudSB7Ci0JbGlzdC1zdHlsZTpub25lOwot
CXBhZGRpbmc6IDJweDsKLQltYXJnaW46IDA7Ci0JZGlzcGxheTpibG9jazsKLQlmbG9hdDogbGVm
dDsKLX0KLS51aS1tZW51IC51aS1tZW51IHsKLQltYXJnaW4tdG9wOiAtM3B4OwotfQotLnVpLW1l
bnUgLnVpLW1lbnUtaXRlbSB7Ci0JbWFyZ2luOjA7Ci0JcGFkZGluZzogMDsKLQl6b29tOiAxOwot
CWZsb2F0OiBsZWZ0OwotCWNsZWFyOiBsZWZ0OwotCXdpZHRoOiAxMDAlOwotfQotLnVpLW1lbnUg
LnVpLW1lbnUtaXRlbSBhIHsKLQl0ZXh0LWRlY29yYXRpb246bm9uZTsKLQlkaXNwbGF5OmJsb2Nr
OwotCXBhZGRpbmc6LjJlbSAuNGVtOwotCWxpbmUtaGVpZ2h0OjEuNTsKLQl6b29tOjE7Ci19Ci0u
dWktbWVudSAudWktbWVudS1pdGVtIGEudWktc3RhdGUtaG92ZXIsCi0udWktbWVudSAudWktbWVu
dS1pdGVtIGEudWktc3RhdGUtYWN0aXZlIHsKLQlmb250LXdlaWdodDogbm9ybWFsOwotCW1hcmdp
bjogLTFweDsKLX0KLS8qCi0gKiBqUXVlcnkgVUkgQnV0dG9uIDEuOC4xMAotICoKLSAqIENvcHly
aWdodCAyMDExLCBBVVRIT1JTLnR4dCAoaHR0cDovL2pxdWVyeXVpLmNvbS9hYm91dCkKLSAqIER1
YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBvciBHUEwgVmVyc2lvbiAyIGxpY2Vuc2VzLgotICog
aHR0cDovL2pxdWVyeS5vcmcvbGljZW5zZQotICoKLSAqIGh0dHA6Ly9kb2NzLmpxdWVyeS5jb20v
VUkvQnV0dG9uI3RoZW1pbmcKLSAqLwotLnVpLWJ1dHRvbiB7IGRpc3BsYXk6IGlubGluZS1ibG9j
azsgcG9zaXRpb246IHJlbGF0aXZlOyBwYWRkaW5nOiAwOyBtYXJnaW4tcmlnaHQ6IC4xZW07IHRl
eHQtZGVjb3JhdGlvbjogbm9uZSAhaW1wb3J0YW50OyBjdXJzb3I6IHBvaW50ZXI7IHRleHQtYWxp
Z246IGNlbnRlcjsgem9vbTogMTsgb3ZlcmZsb3c6IHZpc2libGU7IH0gLyogdGhlIG92ZXJmbG93
IHByb3BlcnR5IHJlbW92ZXMgZXh0cmEgd2lkdGggaW4gSUUgKi8KLS51aS1idXR0b24taWNvbi1v
bmx5IHsgd2lkdGg6IDIuMmVtOyB9IC8qIHRvIG1ha2Ugcm9vbSBmb3IgdGhlIGljb24sIGEgd2lk
dGggbmVlZHMgdG8gYmUgc2V0IGhlcmUgKi8KLWJ1dHRvbi51aS1idXR0b24taWNvbi1vbmx5IHsg
d2lkdGg6IDIuNGVtOyB9IC8qIGJ1dHRvbiBlbGVtZW50cyBzZWVtIHRvIG5lZWQgYSBsaXR0bGUg
bW9yZSB3aWR0aCAqLwotLnVpLWJ1dHRvbi1pY29ucy1vbmx5IHsgd2lkdGg6IDMuNGVtOyB9IAot
YnV0dG9uLnVpLWJ1dHRvbi1pY29ucy1vbmx5IHsgd2lkdGg6IDMuN2VtOyB9IAotCi0vKmJ1dHRv
biB0ZXh0IGVsZW1lbnQgKi8KLS51aS1idXR0b24gLnVpLWJ1dHRvbi10ZXh0IHsgZGlzcGxheTog
YmxvY2s7IGxpbmUtaGVpZ2h0OiAxLjQ7ICB9Ci0udWktYnV0dG9uLXRleHQtb25seSAudWktYnV0
dG9uLXRleHQgeyBwYWRkaW5nOiAuNGVtIDFlbTsgfQotLnVpLWJ1dHRvbi1pY29uLW9ubHkgLnVp
LWJ1dHRvbi10ZXh0LCAudWktYnV0dG9uLWljb25zLW9ubHkgLnVpLWJ1dHRvbi10ZXh0IHsgcGFk
ZGluZzogLjRlbTsgdGV4dC1pbmRlbnQ6IC05OTk5OTk5cHg7IH0KLS51aS1idXR0b24tdGV4dC1p
Y29uLXByaW1hcnkgLnVpLWJ1dHRvbi10ZXh0LCAudWktYnV0dG9uLXRleHQtaWNvbnMgLnVpLWJ1
dHRvbi10ZXh0IHsgcGFkZGluZzogLjRlbSAxZW0gLjRlbSAyLjFlbTsgfQotLnVpLWJ1dHRvbi10
ZXh0LWljb24tc2Vjb25kYXJ5IC51aS1idXR0b24tdGV4dCwgLnVpLWJ1dHRvbi10ZXh0LWljb25z
IC51aS1idXR0b24tdGV4dCB7IHBhZGRpbmc6IC40ZW0gMi4xZW0gLjRlbSAxZW07IH0KLS51aS1i
dXR0b24tdGV4dC1pY29ucyAudWktYnV0dG9uLXRleHQgeyBwYWRkaW5nLWxlZnQ6IDIuMWVtOyBw
YWRkaW5nLXJpZ2h0OiAyLjFlbTsgfQotLyogbm8gaWNvbiBzdXBwb3J0IGZvciBpbnB1dCBlbGVt
ZW50cywgcHJvdmlkZSBwYWRkaW5nIGJ5IGRlZmF1bHQgKi8KLWlucHV0LnVpLWJ1dHRvbiB7IHBh
ZGRpbmc6IC40ZW0gMWVtOyB9Ci0KLS8qYnV0dG9uIGljb24gZWxlbWVudChzKSAqLwotLnVpLWJ1
dHRvbi1pY29uLW9ubHkgLnVpLWljb24sIC51aS1idXR0b24tdGV4dC1pY29uLXByaW1hcnkgLnVp
LWljb24sIC51aS1idXR0b24tdGV4dC1pY29uLXNlY29uZGFyeSAudWktaWNvbiwgLnVpLWJ1dHRv
bi10ZXh0LWljb25zIC51aS1pY29uLCAudWktYnV0dG9uLWljb25zLW9ubHkgLnVpLWljb24geyBw
b3NpdGlvbjogYWJzb2x1dGU7IHRvcDogNTAlOyBtYXJnaW4tdG9wOiAtOHB4OyB9Ci0udWktYnV0
dG9uLWljb24tb25seSAudWktaWNvbiB7IGxlZnQ6IDUwJTsgbWFyZ2luLWxlZnQ6IC04cHg7IH0K
LS51aS1idXR0b24tdGV4dC1pY29uLXByaW1hcnkgLnVpLWJ1dHRvbi1pY29uLXByaW1hcnksIC51
aS1idXR0b24tdGV4dC1pY29ucyAudWktYnV0dG9uLWljb24tcHJpbWFyeSwgLnVpLWJ1dHRvbi1p
Y29ucy1vbmx5IC51aS1idXR0b24taWNvbi1wcmltYXJ5IHsgbGVmdDogLjVlbTsgfQotLnVpLWJ1
dHRvbi10ZXh0LWljb24tc2Vjb25kYXJ5IC51aS1idXR0b24taWNvbi1zZWNvbmRhcnksIC51aS1i
dXR0b24tdGV4dC1pY29ucyAudWktYnV0dG9uLWljb24tc2Vjb25kYXJ5LCAudWktYnV0dG9uLWlj
b25zLW9ubHkgLnVpLWJ1dHRvbi1pY29uLXNlY29uZGFyeSB7IHJpZ2h0OiAuNWVtOyB9Ci0udWkt
YnV0dG9uLXRleHQtaWNvbnMgLnVpLWJ1dHRvbi1pY29uLXNlY29uZGFyeSwgLnVpLWJ1dHRvbi1p
Y29ucy1vbmx5IC51aS1idXR0b24taWNvbi1zZWNvbmRhcnkgeyByaWdodDogLjVlbTsgfQotCi0v
KmJ1dHRvbiBzZXRzKi8KLS51aS1idXR0b25zZXQgeyBtYXJnaW4tcmlnaHQ6IDdweDsgfQotLnVp
LWJ1dHRvbnNldCAudWktYnV0dG9uIHsgbWFyZ2luLWxlZnQ6IDA7IG1hcmdpbi1yaWdodDogLS4z
ZW07IH0KLQotLyogd29ya2Fyb3VuZHMgKi8KLWJ1dHRvbi51aS1idXR0b246Oi1tb3otZm9jdXMt
aW5uZXIgeyBib3JkZXI6IDA7IHBhZGRpbmc6IDA7IH0gLyogcmVzZXQgZXh0cmEgcGFkZGluZyBp
biBGaXJlZm94ICovCi0vKgotICogalF1ZXJ5IFVJIERpYWxvZyAxLjguMTAKLSAqCi0gKiBDb3B5
cmlnaHQgMjAxMSwgQVVUSE9SUy50eHQgKGh0dHA6Ly9qcXVlcnl1aS5jb20vYWJvdXQpCi0gKiBE
dWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgb3IgR1BMIFZlcnNpb24gMiBsaWNlbnNlcy4KLSAq
IGh0dHA6Ly9qcXVlcnkub3JnL2xpY2Vuc2UKLSAqCi0gKiBodHRwOi8vZG9jcy5qcXVlcnkuY29t
L1VJL0RpYWxvZyN0aGVtaW5nCi0gKi8KLS51aS1kaWFsb2cgeyBwb3NpdGlvbjogYWJzb2x1dGU7
IHBhZGRpbmc6IC4yZW07IHdpZHRoOiAzMDBweDsgb3ZlcmZsb3c6IGhpZGRlbjsgfQotLnVpLWRp
YWxvZyAudWktZGlhbG9nLXRpdGxlYmFyIHsgcGFkZGluZzogLjRlbSAxZW07IHBvc2l0aW9uOiBy
ZWxhdGl2ZTsgIH0KLS51aS1kaWFsb2cgLnVpLWRpYWxvZy10aXRsZSB7IGZsb2F0OiBsZWZ0OyBt
YXJnaW46IC4xZW0gMTZweCAuMWVtIDA7IH0gCi0udWktZGlhbG9nIC51aS1kaWFsb2ctdGl0bGVi
YXItY2xvc2UgeyBwb3NpdGlvbjogYWJzb2x1dGU7IHJpZ2h0OiAuM2VtOyB0b3A6IDUwJTsgd2lk
dGg6IDE5cHg7IG1hcmdpbjogLTEwcHggMCAwIDA7IHBhZGRpbmc6IDFweDsgaGVpZ2h0OiAxOHB4
OyB9Ci0udWktZGlhbG9nIC51aS1kaWFsb2ctdGl0bGViYXItY2xvc2Ugc3BhbiB7IGRpc3BsYXk6
IGJsb2NrOyBtYXJnaW46IDFweDsgfQotLnVpLWRpYWxvZyAudWktZGlhbG9nLXRpdGxlYmFyLWNs
b3NlOmhvdmVyLCAudWktZGlhbG9nIC51aS1kaWFsb2ctdGl0bGViYXItY2xvc2U6Zm9jdXMgeyBw
YWRkaW5nOiAwOyB9Ci0udWktZGlhbG9nIC51aS1kaWFsb2ctY29udGVudCB7IHBvc2l0aW9uOiBy
ZWxhdGl2ZTsgYm9yZGVyOiAwOyBwYWRkaW5nOiAuNWVtIDFlbTsgYmFja2dyb3VuZDogbm9uZTsg
b3ZlcmZsb3c6IGF1dG87IHpvb206IDE7IH0KLS51aS1kaWFsb2cgLnVpLWRpYWxvZy1idXR0b25w
YW5lIHsgdGV4dC1hbGlnbjogbGVmdDsgYm9yZGVyLXdpZHRoOiAxcHggMCAwIDA7IGJhY2tncm91
bmQtaW1hZ2U6IG5vbmU7IG1hcmdpbjogLjVlbSAwIDAgMDsgcGFkZGluZzogLjNlbSAxZW0gLjVl
bSAuNGVtOyB9Ci0udWktZGlhbG9nIC51aS1kaWFsb2ctYnV0dG9ucGFuZSAudWktZGlhbG9nLWJ1
dHRvbnNldCB7IGZsb2F0OiByaWdodDsgfQotLnVpLWRpYWxvZyAudWktZGlhbG9nLWJ1dHRvbnBh
bmUgYnV0dG9uIHsgbWFyZ2luOiAuNWVtIC40ZW0gLjVlbSAwOyBjdXJzb3I6IHBvaW50ZXI7IH0K
LS51aS1kaWFsb2cgLnVpLXJlc2l6YWJsZS1zZSB7IHdpZHRoOiAxNHB4OyBoZWlnaHQ6IDE0cHg7
IHJpZ2h0OiAzcHg7IGJvdHRvbTogM3B4OyB9Ci0udWktZHJhZ2dhYmxlIC51aS1kaWFsb2ctdGl0
bGViYXIgeyBjdXJzb3I6IG1vdmU7IH0KLS8qCi0gKiBqUXVlcnkgVUkgU2xpZGVyIDEuOC4xMAot
ICoKLSAqIENvcHlyaWdodCAyMDExLCBBVVRIT1JTLnR4dCAoaHR0cDovL2pxdWVyeXVpLmNvbS9h
Ym91dCkKLSAqIER1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBvciBHUEwgVmVyc2lvbiAyIGxp
Y2Vuc2VzLgotICogaHR0cDovL2pxdWVyeS5vcmcvbGljZW5zZQotICoKLSAqIGh0dHA6Ly9kb2Nz
LmpxdWVyeS5jb20vVUkvU2xpZGVyI3RoZW1pbmcKLSAqLwotLnVpLXNsaWRlciB7IHBvc2l0aW9u
OiByZWxhdGl2ZTsgdGV4dC1hbGlnbjogbGVmdDsgfQotLnVpLXNsaWRlciAudWktc2xpZGVyLWhh
bmRsZSB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgei1pbmRleDogMjsgd2lkdGg6IDEuMmVtOyBoZWln
aHQ6IDEuMmVtOyBjdXJzb3I6IGRlZmF1bHQ7IH0KLS51aS1zbGlkZXIgLnVpLXNsaWRlci1yYW5n
ZSB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgei1pbmRleDogMTsgZm9udC1zaXplOiAuN2VtOyBkaXNw
bGF5OiBibG9jazsgYm9yZGVyOiAwOyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIDA7IH0KLQotLnVp
LXNsaWRlci1ob3Jpem9udGFsIHsgaGVpZ2h0OiAuOGVtOyB9Ci0udWktc2xpZGVyLWhvcml6b250
YWwgLnVpLXNsaWRlci1oYW5kbGUgeyB0b3A6IC0uM2VtOyBtYXJnaW4tbGVmdDogLS42ZW07IH0K
LS51aS1zbGlkZXItaG9yaXpvbnRhbCAudWktc2xpZGVyLXJhbmdlIHsgdG9wOiAwOyBoZWlnaHQ6
IDEwMCU7IH0KLS51aS1zbGlkZXItaG9yaXpvbnRhbCAudWktc2xpZGVyLXJhbmdlLW1pbiB7IGxl
ZnQ6IDA7IH0KLS51aS1zbGlkZXItaG9yaXpvbnRhbCAudWktc2xpZGVyLXJhbmdlLW1heCB7IHJp
Z2h0OiAwOyB9Ci0KLS51aS1zbGlkZXItdmVydGljYWwgeyB3aWR0aDogLjhlbTsgaGVpZ2h0OiAx
MDBweDsgfQotLnVpLXNsaWRlci12ZXJ0aWNhbCAudWktc2xpZGVyLWhhbmRsZSB7IGxlZnQ6IC0u
M2VtOyBtYXJnaW4tbGVmdDogMDsgbWFyZ2luLWJvdHRvbTogLS42ZW07IH0KLS51aS1zbGlkZXIt
dmVydGljYWwgLnVpLXNsaWRlci1yYW5nZSB7IGxlZnQ6IDA7IHdpZHRoOiAxMDAlOyB9Ci0udWkt
c2xpZGVyLXZlcnRpY2FsIC51aS1zbGlkZXItcmFuZ2UtbWluIHsgYm90dG9tOiAwOyB9Ci0udWkt
c2xpZGVyLXZlcnRpY2FsIC51aS1zbGlkZXItcmFuZ2UtbWF4IHsgdG9wOiAwOyB9LyoKLSAqIGpR
dWVyeSBVSSBUYWJzIDEuOC4xMAotICoKLSAqIENvcHlyaWdodCAyMDExLCBBVVRIT1JTLnR4dCAo
aHR0cDovL2pxdWVyeXVpLmNvbS9hYm91dCkKLSAqIER1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1J
VCBvciBHUEwgVmVyc2lvbiAyIGxpY2Vuc2VzLgotICogaHR0cDovL2pxdWVyeS5vcmcvbGljZW5z
ZQotICoKLSAqIGh0dHA6Ly9kb2NzLmpxdWVyeS5jb20vVUkvVGFicyN0aGVtaW5nCi0gKi8KLS51
aS10YWJzIHsgcG9zaXRpb246IHJlbGF0aXZlOyBwYWRkaW5nOiAuMmVtOyB6b29tOiAxOyB9IC8q
IHBvc2l0aW9uOiByZWxhdGl2ZSBwcmV2ZW50cyBJRSBzY3JvbGwgYnVnIChlbGVtZW50IHdpdGgg
cG9zaXRpb246IHJlbGF0aXZlIGluc2lkZSBjb250YWluZXIgd2l0aCBvdmVyZmxvdzogYXV0byBh
cHBlYXIgYXMgImZpeGVkIikgKi8KLS51aS10YWJzIC51aS10YWJzLW5hdiB7IG1hcmdpbjogMDsg
cGFkZGluZzogLjJlbSAuMmVtIDA7IH0KLS51aS10YWJzIC51aS10YWJzLW5hdiBsaSB7IGxpc3Qt
c3R5bGU6IG5vbmU7IGZsb2F0OiBsZWZ0OyBwb3NpdGlvbjogcmVsYXRpdmU7IHRvcDogMXB4OyBt
YXJnaW46IDAgLjJlbSAxcHggMDsgYm9yZGVyLWJvdHRvbTogMCAhaW1wb3J0YW50OyBwYWRkaW5n
OiAwOyB3aGl0ZS1zcGFjZTogbm93cmFwOyB9Ci0udWktdGFicyAudWktdGFicy1uYXYgbGkgYSB7
IGZsb2F0OiBsZWZ0OyBwYWRkaW5nOiAuNWVtIDFlbTsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyB9
Ci0udWktdGFicyAudWktdGFicy1uYXYgbGkudWktdGFicy1zZWxlY3RlZCB7IG1hcmdpbi1ib3R0
b206IDA7IHBhZGRpbmctYm90dG9tOiAxcHg7IH0KLS51aS10YWJzIC51aS10YWJzLW5hdiBsaS51
aS10YWJzLXNlbGVjdGVkIGEsIC51aS10YWJzIC51aS10YWJzLW5hdiBsaS51aS1zdGF0ZS1kaXNh
YmxlZCBhLCAudWktdGFicyAudWktdGFicy1uYXYgbGkudWktc3RhdGUtcHJvY2Vzc2luZyBhIHsg
Y3Vyc29yOiB0ZXh0OyB9Ci0udWktdGFicyAudWktdGFicy1uYXYgbGkgYSwgLnVpLXRhYnMudWkt
dGFicy1jb2xsYXBzaWJsZSAudWktdGFicy1uYXYgbGkudWktdGFicy1zZWxlY3RlZCBhIHsgY3Vy
c29yOiBwb2ludGVyOyB9IC8qIGZpcnN0IHNlbGVjdG9yIGluIGdyb3VwIHNlZW1zIG9ic29sZXRl
LCBidXQgcmVxdWlyZWQgdG8gb3ZlcmNvbWUgYnVnIGluIE9wZXJhIGFwcGx5aW5nIGN1cnNvcjog
dGV4dCBvdmVyYWxsIGlmIGRlZmluZWQgZWxzZXdoZXJlLi4uICovCi0udWktdGFicyAudWktdGFi
cy1wYW5lbCB7IGRpc3BsYXk6IGJsb2NrOyBib3JkZXItd2lkdGg6IDA7IHBhZGRpbmc6IDFlbSAx
LjRlbTsgYmFja2dyb3VuZDogbm9uZTsgfQotLnVpLXRhYnMgLnVpLXRhYnMtaGlkZSB7IGRpc3Bs
YXk6IG5vbmUgIWltcG9ydGFudDsgfQotLyoKLSAqIGpRdWVyeSBVSSBEYXRlcGlja2VyIDEuOC4x
MAotICoKLSAqIENvcHlyaWdodCAyMDExLCBBVVRIT1JTLnR4dCAoaHR0cDovL2pxdWVyeXVpLmNv
bS9hYm91dCkKLSAqIER1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBvciBHUEwgVmVyc2lvbiAy
IGxpY2Vuc2VzLgotICogaHR0cDovL2pxdWVyeS5vcmcvbGljZW5zZQotICoKLSAqIGh0dHA6Ly9k
b2NzLmpxdWVyeS5jb20vVUkvRGF0ZXBpY2tlciN0aGVtaW5nCi0gKi8KLS51aS1kYXRlcGlja2Vy
IHsgd2lkdGg6IDE3ZW07IHBhZGRpbmc6IC4yZW0gLjJlbSAwOyBkaXNwbGF5OiBub25lOyB9Ci0u
dWktZGF0ZXBpY2tlciAudWktZGF0ZXBpY2tlci1oZWFkZXIgeyBwb3NpdGlvbjpyZWxhdGl2ZTsg
cGFkZGluZzouMmVtIDA7IH0KLS51aS1kYXRlcGlja2VyIC51aS1kYXRlcGlja2VyLXByZXYsIC51
aS1kYXRlcGlja2VyIC51aS1kYXRlcGlja2VyLW5leHQgeyBwb3NpdGlvbjphYnNvbHV0ZTsgdG9w
OiAycHg7IHdpZHRoOiAxLjhlbTsgaGVpZ2h0OiAxLjhlbTsgfQotLnVpLWRhdGVwaWNrZXIgLnVp
LWRhdGVwaWNrZXItcHJldi1ob3ZlciwgLnVpLWRhdGVwaWNrZXIgLnVpLWRhdGVwaWNrZXItbmV4
dC1ob3ZlciB7IHRvcDogMXB4OyB9Ci0udWktZGF0ZXBpY2tlciAudWktZGF0ZXBpY2tlci1wcmV2
IHsgbGVmdDoycHg7IH0KLS51aS1kYXRlcGlja2VyIC51aS1kYXRlcGlja2VyLW5leHQgeyByaWdo
dDoycHg7IH0KLS51aS1kYXRlcGlja2VyIC51aS1kYXRlcGlja2VyLXByZXYtaG92ZXIgeyBsZWZ0
OjFweDsgfQotLnVpLWRhdGVwaWNrZXIgLnVpLWRhdGVwaWNrZXItbmV4dC1ob3ZlciB7IHJpZ2h0
OjFweDsgfQotLnVpLWRhdGVwaWNrZXIgLnVpLWRhdGVwaWNrZXItcHJldiBzcGFuLCAudWktZGF0
ZXBpY2tlciAudWktZGF0ZXBpY2tlci1uZXh0IHNwYW4geyBkaXNwbGF5OiBibG9jazsgcG9zaXRp
b246IGFic29sdXRlOyBsZWZ0OiA1MCU7IG1hcmdpbi1sZWZ0OiAtOHB4OyB0b3A6IDUwJTsgbWFy
Z2luLXRvcDogLThweDsgIH0KLS51aS1kYXRlcGlja2VyIC51aS1kYXRlcGlja2VyLXRpdGxlIHsg
bWFyZ2luOiAwIDIuM2VtOyBsaW5lLWhlaWdodDogMS44ZW07IHRleHQtYWxpZ246IGNlbnRlcjsg
fQotLnVpLWRhdGVwaWNrZXIgLnVpLWRhdGVwaWNrZXItdGl0bGUgc2VsZWN0IHsgZm9udC1zaXpl
OjFlbTsgbWFyZ2luOjFweCAwOyB9Ci0udWktZGF0ZXBpY2tlciBzZWxlY3QudWktZGF0ZXBpY2tl
ci1tb250aC15ZWFyIHt3aWR0aDogMTAwJTt9Ci0udWktZGF0ZXBpY2tlciBzZWxlY3QudWktZGF0
ZXBpY2tlci1tb250aCwgCi0udWktZGF0ZXBpY2tlciBzZWxlY3QudWktZGF0ZXBpY2tlci15ZWFy
IHsgd2lkdGg6IDQ5JTt9Ci0udWktZGF0ZXBpY2tlciB0YWJsZSB7d2lkdGg6IDEwMCU7IGZvbnQt
c2l6ZTogLjllbTsgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsgbWFyZ2luOjAgMCAuNGVtOyB9
Ci0udWktZGF0ZXBpY2tlciB0aCB7IHBhZGRpbmc6IC43ZW0gLjNlbTsgdGV4dC1hbGlnbjogY2Vu
dGVyOyBmb250LXdlaWdodDogYm9sZDsgYm9yZGVyOiAwOyAgfQotLnVpLWRhdGVwaWNrZXIgdGQg
eyBib3JkZXI6IDA7IHBhZGRpbmc6IDFweDsgfQotLnVpLWRhdGVwaWNrZXIgdGQgc3BhbiwgLnVp
LWRhdGVwaWNrZXIgdGQgYSB7IGRpc3BsYXk6IGJsb2NrOyBwYWRkaW5nOiAuMmVtOyB0ZXh0LWFs
aWduOiByaWdodDsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyB9Ci0udWktZGF0ZXBpY2tlciAudWkt
ZGF0ZXBpY2tlci1idXR0b25wYW5lIHsgYmFja2dyb3VuZC1pbWFnZTogbm9uZTsgbWFyZ2luOiAu
N2VtIDAgMCAwOyBwYWRkaW5nOjAgLjJlbTsgYm9yZGVyLWxlZnQ6IDA7IGJvcmRlci1yaWdodDog
MDsgYm9yZGVyLWJvdHRvbTogMDsgfQotLnVpLWRhdGVwaWNrZXIgLnVpLWRhdGVwaWNrZXItYnV0
dG9ucGFuZSBidXR0b24geyBmbG9hdDogcmlnaHQ7IG1hcmdpbjogLjVlbSAuMmVtIC40ZW07IGN1
cnNvcjogcG9pbnRlcjsgcGFkZGluZzogLjJlbSAuNmVtIC4zZW0gLjZlbTsgd2lkdGg6YXV0bzsg
b3ZlcmZsb3c6dmlzaWJsZTsgfQotLnVpLWRhdGVwaWNrZXIgLnVpLWRhdGVwaWNrZXItYnV0dG9u
cGFuZSBidXR0b24udWktZGF0ZXBpY2tlci1jdXJyZW50IHsgZmxvYXQ6bGVmdDsgfQotCi0vKiB3
aXRoIG11bHRpcGxlIGNhbGVuZGFycyAqLwotLnVpLWRhdGVwaWNrZXIudWktZGF0ZXBpY2tlci1t
dWx0aSB7IHdpZHRoOmF1dG87IH0KLS51aS1kYXRlcGlja2VyLW11bHRpIC51aS1kYXRlcGlja2Vy
LWdyb3VwIHsgZmxvYXQ6bGVmdDsgfQotLnVpLWRhdGVwaWNrZXItbXVsdGkgLnVpLWRhdGVwaWNr
ZXItZ3JvdXAgdGFibGUgeyB3aWR0aDo5NSU7IG1hcmdpbjowIGF1dG8gLjRlbTsgfQotLnVpLWRh
dGVwaWNrZXItbXVsdGktMiAudWktZGF0ZXBpY2tlci1ncm91cCB7IHdpZHRoOjUwJTsgfQotLnVp
LWRhdGVwaWNrZXItbXVsdGktMyAudWktZGF0ZXBpY2tlci1ncm91cCB7IHdpZHRoOjMzLjMlOyB9
Ci0udWktZGF0ZXBpY2tlci1tdWx0aS00IC51aS1kYXRlcGlja2VyLWdyb3VwIHsgd2lkdGg6MjUl
OyB9Ci0udWktZGF0ZXBpY2tlci1tdWx0aSAudWktZGF0ZXBpY2tlci1ncm91cC1sYXN0IC51aS1k
YXRlcGlja2VyLWhlYWRlciB7IGJvcmRlci1sZWZ0LXdpZHRoOjA7IH0KLS51aS1kYXRlcGlja2Vy
LW11bHRpIC51aS1kYXRlcGlja2VyLWdyb3VwLW1pZGRsZSAudWktZGF0ZXBpY2tlci1oZWFkZXIg
eyBib3JkZXItbGVmdC13aWR0aDowOyB9Ci0udWktZGF0ZXBpY2tlci1tdWx0aSAudWktZGF0ZXBp
Y2tlci1idXR0b25wYW5lIHsgY2xlYXI6bGVmdDsgfQotLnVpLWRhdGVwaWNrZXItcm93LWJyZWFr
IHsgY2xlYXI6Ym90aDsgd2lkdGg6MTAwJTsgfQotCi0vKiBSVEwgc3VwcG9ydCAqLwotLnVpLWRh
dGVwaWNrZXItcnRsIHsgZGlyZWN0aW9uOiBydGw7IH0KLS51aS1kYXRlcGlja2VyLXJ0bCAudWkt
ZGF0ZXBpY2tlci1wcmV2IHsgcmlnaHQ6IDJweDsgbGVmdDogYXV0bzsgfQotLnVpLWRhdGVwaWNr
ZXItcnRsIC51aS1kYXRlcGlja2VyLW5leHQgeyBsZWZ0OiAycHg7IHJpZ2h0OiBhdXRvOyB9Ci0u
dWktZGF0ZXBpY2tlci1ydGwgLnVpLWRhdGVwaWNrZXItcHJldjpob3ZlciB7IHJpZ2h0OiAxcHg7
IGxlZnQ6IGF1dG87IH0KLS51aS1kYXRlcGlja2VyLXJ0bCAudWktZGF0ZXBpY2tlci1uZXh0Omhv
dmVyIHsgbGVmdDogMXB4OyByaWdodDogYXV0bzsgfQotLnVpLWRhdGVwaWNrZXItcnRsIC51aS1k
YXRlcGlja2VyLWJ1dHRvbnBhbmUgeyBjbGVhcjpyaWdodDsgfQotLnVpLWRhdGVwaWNrZXItcnRs
IC51aS1kYXRlcGlja2VyLWJ1dHRvbnBhbmUgYnV0dG9uIHsgZmxvYXQ6IGxlZnQ7IH0KLS51aS1k
YXRlcGlja2VyLXJ0bCAudWktZGF0ZXBpY2tlci1idXR0b25wYW5lIGJ1dHRvbi51aS1kYXRlcGlj
a2VyLWN1cnJlbnQgeyBmbG9hdDpyaWdodDsgfQotLnVpLWRhdGVwaWNrZXItcnRsIC51aS1kYXRl
cGlja2VyLWdyb3VwIHsgZmxvYXQ6cmlnaHQ7IH0KLS51aS1kYXRlcGlja2VyLXJ0bCAudWktZGF0
ZXBpY2tlci1ncm91cC1sYXN0IC51aS1kYXRlcGlja2VyLWhlYWRlciB7IGJvcmRlci1yaWdodC13
aWR0aDowOyBib3JkZXItbGVmdC13aWR0aDoxcHg7IH0KLS51aS1kYXRlcGlja2VyLXJ0bCAudWkt
ZGF0ZXBpY2tlci1ncm91cC1taWRkbGUgLnVpLWRhdGVwaWNrZXItaGVhZGVyIHsgYm9yZGVyLXJp
Z2h0LXdpZHRoOjA7IGJvcmRlci1sZWZ0LXdpZHRoOjFweDsgfQotCi0vKiBJRTYgSUZSQU1FIEZJ
WCAodGFrZW4gZnJvbSBkYXRlcGlja2VyIDEuNS4zICovCi0udWktZGF0ZXBpY2tlci1jb3ZlciB7
Ci0gICAgZGlzcGxheTogbm9uZTsgLypzb3JyeSBmb3IgSUU1Ki8KLSAgICBkaXNwbGF5LyoqLzog
YmxvY2s7IC8qc29ycnkgZm9yIElFNSovCi0gICAgcG9zaXRpb246IGFic29sdXRlOyAvKm11c3Qg
aGF2ZSovCi0gICAgei1pbmRleDogLTE7IC8qbXVzdCBoYXZlKi8KLSAgICBmaWx0ZXI6IG1hc2so
KTsgLyptdXN0IGhhdmUqLwotICAgIHRvcDogLTRweDsgLyptdXN0IGhhdmUqLwotICAgIGxlZnQ6
IC00cHg7IC8qbXVzdCBoYXZlKi8KLSAgICB3aWR0aDogMjAwcHg7IC8qbXVzdCBoYXZlKi8KLSAg
ICBoZWlnaHQ6IDIwMHB4OyAvKm11c3QgaGF2ZSovCi19LyoKLSAqIGpRdWVyeSBVSSBQcm9ncmVz
c2JhciAxLjguMTAKLSAqCi0gKiBDb3B5cmlnaHQgMjAxMSwgQVVUSE9SUy50eHQgKGh0dHA6Ly9q
cXVlcnl1aS5jb20vYWJvdXQpCi0gKiBEdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgb3IgR1BM
IFZlcnNpb24gMiBsaWNlbnNlcy4KLSAqIGh0dHA6Ly9qcXVlcnkub3JnL2xpY2Vuc2UKLSAqCi0g
KiBodHRwOi8vZG9jcy5qcXVlcnkuY29tL1VJL1Byb2dyZXNzYmFyI3RoZW1pbmcKLSAqLwotLnVp
LXByb2dyZXNzYmFyIHsgaGVpZ2h0OjJlbTsgdGV4dC1hbGlnbjogbGVmdDsgfQotLnVpLXByb2dy
ZXNzYmFyIC51aS1wcm9ncmVzc2Jhci12YWx1ZSB7bWFyZ2luOiAtMXB4OyBoZWlnaHQ6MTAwJTsg
fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1dlYkRyaXZlclRlc3Rz
L2ltcG9ydGVkL3NlbGVuaXVtL2NvbW1vbi9zcmMvd2ViL2RyYWdnYWJsZUxpc3RzLmh0bWwgYi9X
ZWJEcml2ZXJUZXN0cy9pbXBvcnRlZC9zZWxlbml1bS9jb21tb24vc3JjL3dlYi9kcmFnZ2FibGVM
aXN0cy5odG1sCmluZGV4IGY3ZTBkY2FjZTQ2ZDZkZDQyNGFhMmFhNzExNGE0N2FjOTQ0Yjk2Zjgu
LmRmMWZjZGM1MzhmNjU3NTA2YTliY2M0ZjBiYmZlOWI5ZGNhOTUxOTkgMTAwNjQ0Ci0tLSBhL1dl
YkRyaXZlclRlc3RzL2ltcG9ydGVkL3NlbGVuaXVtL2NvbW1vbi9zcmMvd2ViL2RyYWdnYWJsZUxp
c3RzLmh0bWwKKysrIGIvV2ViRHJpdmVyVGVzdHMvaW1wb3J0ZWQvc2VsZW5pdW0vY29tbW9uL3Ny
Yy93ZWIvZHJhZ2dhYmxlTGlzdHMuaHRtbApAQCAtNSw5ICs1LDkgQEAKICAgICA8dGl0bGU+alF1
ZXJ5IFVJIFNvcnRhYmxlIC0gQ29ubmVjdCBsaXN0czwvdGl0bGU+CiAgICAgPCEtLWxpbmsgdHlw
ZT0idGV4dC9jc3MiIGhyZWY9ImRldmVsb3BtZW50LWJ1bmRsZS90aGVtZXMvYmFzZS9qcXVlcnku
dWkuYWxsLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiAvLS0+CiAgICAgPCEtLWxpbmsgdHlwZT0idGV4
dC9jc3MiIGhyZWY9ImRldmVsb3BtZW50LWJ1bmRsZS9kZW1vcy9kZW1vcy5jc3MiIHJlbD0ic3R5
bGVzaGVldCIgLy0tPgotICAgIDxsaW5rIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvdWktbGln
aHRuZXNzL2pxdWVyeS11aS0xLjguMTAuY3VzdG9tLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiAvPgot
ICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL2pxdWVyeS0xLjQuNC5t
aW4uanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9
ImpzL2pxdWVyeS11aS0xLjguMTAuY3VzdG9tLm1pbi5qcyI+PC9zY3JpcHQ+CisgICAgPGxpbmsg
dHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy91aS1saWdodG5lc3MvanF1ZXJ5LXVpLTEuMTIuMS5t
aW4uY3NzIiByZWw9InN0eWxlc2hlZXQiIC8+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFz
Y3JpcHQiIHNyYz0ianMvanF1ZXJ5LTMuNS4xLm1pbi5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlw
dCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ianMvanF1ZXJ5LXVpLTEuMTIuMS5taW4uanMi
Pjwvc2NyaXB0PgogICAgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CiAgICAgICAjc29ydGFibGUx
LCAjc29ydGFibGUyIHsgbGlzdC1zdHlsZS10eXBlOiBub25lOyBtYXJnaW46IDA7IHBhZGRpbmc6
IDA7IGZsb2F0OiBsZWZ0OyBtYXJnaW4tcmlnaHQ6IDEwcHg7IH0KICAgICAgICNzb3J0YWJsZTEg
bGksICNzb3J0YWJsZTIgbGkgeyBtYXJnaW46IDAgNXB4IDVweCA1cHg7IHBhZGRpbmc6IDVweDsg
Zm9udC1zaXplOiAxLjJlbTsgd2lkdGg6IDEyMHB4OyB9CmRpZmYgLS1naXQgYS9XZWJEcml2ZXJU
ZXN0cy9pbXBvcnRlZC9zZWxlbml1bS9jb21tb24vc3JjL3dlYi9kcm9wcGFibGVJdGVtcy5odG1s
IGIvV2ViRHJpdmVyVGVzdHMvaW1wb3J0ZWQvc2VsZW5pdW0vY29tbW9uL3NyYy93ZWIvZHJvcHBh
YmxlSXRlbXMuaHRtbAppbmRleCBmYzg1MGFjOTZiNzA1NDQyZWQxOWFmY2MzMjYzNjM3OWY5YTZl
MDVhLi5hMDZiZTVmYmM4NzA5M2M2NWYyNGNhY2I2YWJmNTUxYjY4ZjIzMThkIDEwMDY0NAotLS0g
YS9XZWJEcml2ZXJUZXN0cy9pbXBvcnRlZC9zZWxlbml1bS9jb21tb24vc3JjL3dlYi9kcm9wcGFi
bGVJdGVtcy5odG1sCisrKyBiL1dlYkRyaXZlclRlc3RzL2ltcG9ydGVkL3NlbGVuaXVtL2NvbW1v
bi9zcmMvd2ViL2Ryb3BwYWJsZUl0ZW1zLmh0bWwKQEAgLTMsOSArMyw5IEBACiA8aGVhZD4KICAg
PG1ldGEgY2hhcnNldD0iVVRGLTgiIC8+CiAgIDx0aXRsZT5qUXVlcnkgVUkgRHJvcHBhYmxlIC0g
RGVmYXVsdCBEZW1vPC90aXRsZT4KLSAgICA8bGluayB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY3Nz
L3VpLWxpZ2h0bmVzcy9qcXVlcnktdWktMS44LjEwLmN1c3RvbS5jc3MiIHJlbD0ic3R5bGVzaGVl
dCIgLz4KLSAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJqcy9qcXVlcnkt
MS40LjQubWluLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlw
dCIgc3JjPSJqcy9qcXVlcnktdWktMS44LjEwLmN1c3RvbS5taW4uanMiPjwvc2NyaXB0PgorICAg
IDxsaW5rIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvdWktbGlnaHRuZXNzL2pxdWVyeS11aS0x
LjEyLjEubWluLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiAvPgorICAgIDxzY3JpcHQgdHlwZT0idGV4
dC9qYXZhc2NyaXB0IiBzcmM9ImpzL2pxdWVyeS0zLjUuMS5taW4uanMiPjwvc2NyaXB0PgorICAg
IDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL2pxdWVyeS11aS0xLjEyLjEu
bWluLmpzIj48L3NjcmlwdD4KICAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KICAgI2RyYWdnYWJs
ZSB7IHdpZHRoOiAxMDBweDsgaGVpZ2h0OiAxMDBweDsgcGFkZGluZzogMC41ZW07IGZsb2F0OiBs
ZWZ0OyBtYXJnaW46IDEwcHggMTBweCAxMHB4IDA7IH0KICAgI2Ryb3BwYWJsZSB7IHdpZHRoOiAx
NTBweDsgaGVpZ2h0OiAxNTBweDsgcGFkZGluZzogMC41ZW07IGZsb2F0OiBsZWZ0OyBtYXJnaW46
IDEwcHg7IH0KZGlmZiAtLWdpdCBhL1dlYkRyaXZlclRlc3RzL2ltcG9ydGVkL3NlbGVuaXVtL2Nv
bW1vbi9zcmMvd2ViL2pxdWVyeS0xLjMuMi5qcyBiL1dlYkRyaXZlclRlc3RzL2ltcG9ydGVkL3Nl
bGVuaXVtL2NvbW1vbi9zcmMvd2ViL2pxdWVyeS0xLjMuMi5qcwpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggNDYyY2RlNTZjMzdkYTI5OTQzYWJiM2Q2Mjg2YzZmMTc1OTViNzBkZi4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9XZWJEcml2ZXJUZXN0
cy9pbXBvcnRlZC9zZWxlbml1bS9jb21tb24vc3JjL3dlYi9qcXVlcnktMS4zLjIuanMKKysrIC9k
ZXYvbnVsbApAQCAtMSw0Mzc2ICswLDAgQEAKLS8qIQotICogalF1ZXJ5IEphdmFTY3JpcHQgTGli
cmFyeSB2MS4zLjIKLSAqIGh0dHA6Ly9qcXVlcnkuY29tLwotICoKLSAqIENvcHlyaWdodCAoYykg
MjAwOSBKb2huIFJlc2lnCi0gKiBEdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgYW5kIEdQTCBs
aWNlbnNlcy4KLSAqIGh0dHA6Ly9kb2NzLmpxdWVyeS5jb20vTGljZW5zZQotICoKLSAqIERhdGU6
IDIwMDktMDItMTkgMTc6MzQ6MjEgLTA1MDAgKFRodSwgMTkgRmViIDIwMDkpCi0gKiBSZXZpc2lv
bjogNjI0NgotICovCi0oZnVuY3Rpb24oKXsKLQotdmFyIAotCS8vIFdpbGwgc3BlZWQgdXAgcmVm
ZXJlbmNlcyB0byB3aW5kb3csIGFuZCBhbGxvd3MgbXVuZ2luZyBpdHMgbmFtZS4KLQl3aW5kb3cg
PSB0aGlzLAotCS8vIFdpbGwgc3BlZWQgdXAgcmVmZXJlbmNlcyB0byB1bmRlZmluZWQsIGFuZCBh
bGxvd3MgbXVuZ2luZyBpdHMgbmFtZS4KLQl1bmRlZmluZWQsCi0JLy8gTWFwIG92ZXIgalF1ZXJ5
IGluIGNhc2Ugb2Ygb3ZlcndyaXRlCi0JX2pRdWVyeSA9IHdpbmRvdy5qUXVlcnksCi0JLy8gTWFw
IG92ZXIgdGhlICQgaW4gY2FzZSBvZiBvdmVyd3JpdGUKLQlfJCA9IHdpbmRvdy4kLAotCi0JalF1
ZXJ5ID0gd2luZG93LmpRdWVyeSA9IHdpbmRvdy4kID0gZnVuY3Rpb24oIHNlbGVjdG9yLCBjb250
ZXh0ICkgewotCQkvLyBUaGUgalF1ZXJ5IG9iamVjdCBpcyBhY3R1YWxseSBqdXN0IHRoZSBpbml0
IGNvbnN0cnVjdG9yICdlbmhhbmNlZCcKLQkJcmV0dXJuIG5ldyBqUXVlcnkuZm4uaW5pdCggc2Vs
ZWN0b3IsIGNvbnRleHQgKTsKLQl9LAotCi0JLy8gQSBzaW1wbGUgd2F5IHRvIGNoZWNrIGZvciBI
VE1MIHN0cmluZ3Mgb3IgSUQgc3RyaW5ncwotCS8vIChib3RoIG9mIHdoaWNoIHdlIG9wdGltaXpl
IGZvcikKLQlxdWlja0V4cHIgPSAvXltePF0qKDwoLnxccykrPilbXj5dKiR8XiMoW1x3LV0rKSQv
LAotCS8vIElzIGl0IGEgc2ltcGxlIHNlbGVjdG9yCi0JaXNTaW1wbGUgPSAvXi5bXjojXFtcLixd
KiQvOwotCi1qUXVlcnkuZm4gPSBqUXVlcnkucHJvdG90eXBlID0gewotCWluaXQ6IGZ1bmN0aW9u
KCBzZWxlY3RvciwgY29udGV4dCApIHsKLQkJLy8gTWFrZSBzdXJlIHRoYXQgYSBzZWxlY3Rpb24g
d2FzIHByb3ZpZGVkCi0JCXNlbGVjdG9yID0gc2VsZWN0b3IgfHwgZG9jdW1lbnQ7Ci0KLQkJLy8g
SGFuZGxlICQoRE9NRWxlbWVudCkKLQkJaWYgKCBzZWxlY3Rvci5ub2RlVHlwZSApIHsKLQkJCXRo
aXNbMF0gPSBzZWxlY3RvcjsKLQkJCXRoaXMubGVuZ3RoID0gMTsKLQkJCXRoaXMuY29udGV4dCA9
IHNlbGVjdG9yOwotCQkJcmV0dXJuIHRoaXM7Ci0JCX0KLQkJLy8gSGFuZGxlIEhUTUwgc3RyaW5n
cwotCQlpZiAoIHR5cGVvZiBzZWxlY3RvciA9PT0gInN0cmluZyIgKSB7Ci0JCQkvLyBBcmUgd2Ug
ZGVhbGluZyB3aXRoIEhUTUwgc3RyaW5nIG9yIGFuIElEPwotCQkJdmFyIG1hdGNoID0gcXVpY2tF
eHByLmV4ZWMoIHNlbGVjdG9yICk7Ci0KLQkJCS8vIFZlcmlmeSBhIG1hdGNoLCBhbmQgdGhhdCBu
byBjb250ZXh0IHdhcyBzcGVjaWZpZWQgZm9yICNpZAotCQkJaWYgKCBtYXRjaCAmJiAobWF0Y2hb
MV0gfHwgIWNvbnRleHQpICkgewotCi0JCQkJLy8gSEFORExFOiAkKGh0bWwpIC0+ICQoYXJyYXkp
Ci0JCQkJaWYgKCBtYXRjaFsxXSApCi0JCQkJCXNlbGVjdG9yID0galF1ZXJ5LmNsZWFuKCBbIG1h
dGNoWzFdIF0sIGNvbnRleHQgKTsKLQotCQkJCS8vIEhBTkRMRTogJCgiI2lkIikKLQkJCQllbHNl
IHsKLQkJCQkJdmFyIGVsZW0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCggbWF0Y2hbM10gKTsK
LQotCQkJCQkvLyBIYW5kbGUgdGhlIGNhc2Ugd2hlcmUgSUUgYW5kIE9wZXJhIHJldHVybiBpdGVt
cwotCQkJCQkvLyBieSBuYW1lIGluc3RlYWQgb2YgSUQKLQkJCQkJaWYgKCBlbGVtICYmIGVsZW0u
aWQgIT0gbWF0Y2hbM10gKQotCQkJCQkJcmV0dXJuIGpRdWVyeSgpLmZpbmQoIHNlbGVjdG9yICk7
Ci0KLQkJCQkJLy8gT3RoZXJ3aXNlLCB3ZSBpbmplY3QgdGhlIGVsZW1lbnQgZGlyZWN0bHkgaW50
byB0aGUgalF1ZXJ5IG9iamVjdAotCQkJCQl2YXIgcmV0ID0galF1ZXJ5KCBlbGVtIHx8IFtdICk7
Ci0JCQkJCXJldC5jb250ZXh0ID0gZG9jdW1lbnQ7Ci0JCQkJCXJldC5zZWxlY3RvciA9IHNlbGVj
dG9yOwotCQkJCQlyZXR1cm4gcmV0OwotCQkJCX0KLQotCQkJLy8gSEFORExFOiAkKGV4cHIsIFtj
b250ZXh0XSkKLQkJCS8vICh3aGljaCBpcyBqdXN0IGVxdWl2YWxlbnQgdG86ICQoY29udGVudCku
ZmluZChleHByKQotCQkJfSBlbHNlCi0JCQkJcmV0dXJuIGpRdWVyeSggY29udGV4dCApLmZpbmQo
IHNlbGVjdG9yICk7Ci0KLQkJLy8gSEFORExFOiAkKGZ1bmN0aW9uKQotCQkvLyBTaG9ydGN1dCBm
b3IgZG9jdW1lbnQgcmVhZHkKLQkJfSBlbHNlIGlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIHNlbGVj
dG9yICkgKQotCQkJcmV0dXJuIGpRdWVyeSggZG9jdW1lbnQgKS5yZWFkeSggc2VsZWN0b3IgKTsK
LQotCQkvLyBNYWtlIHN1cmUgdGhhdCBvbGQgc2VsZWN0b3Igc3RhdGUgaXMgcGFzc2VkIGFsb25n
Ci0JCWlmICggc2VsZWN0b3Iuc2VsZWN0b3IgJiYgc2VsZWN0b3IuY29udGV4dCApIHsKLQkJCXRo
aXMuc2VsZWN0b3IgPSBzZWxlY3Rvci5zZWxlY3RvcjsKLQkJCXRoaXMuY29udGV4dCA9IHNlbGVj
dG9yLmNvbnRleHQ7Ci0JCX0KLQotCQlyZXR1cm4gdGhpcy5zZXRBcnJheShqUXVlcnkuaXNBcnJh
eSggc2VsZWN0b3IgKSA/Ci0JCQlzZWxlY3RvciA6Ci0JCQlqUXVlcnkubWFrZUFycmF5KHNlbGVj
dG9yKSk7Ci0JfSwKLQotCS8vIFN0YXJ0IHdpdGggYW4gZW1wdHkgc2VsZWN0b3IKLQlzZWxlY3Rv
cjogIiIsCi0KLQkvLyBUaGUgY3VycmVudCB2ZXJzaW9uIG9mIGpRdWVyeSBiZWluZyB1c2VkCi0J
anF1ZXJ5OiAiMS4zLjIiLAotCi0JLy8gVGhlIG51bWJlciBvZiBlbGVtZW50cyBjb250YWluZWQg
aW4gdGhlIG1hdGNoZWQgZWxlbWVudCBzZXQKLQlzaXplOiBmdW5jdGlvbigpIHsKLQkJcmV0dXJu
IHRoaXMubGVuZ3RoOwotCX0sCi0KLQkvLyBHZXQgdGhlIE50aCBlbGVtZW50IGluIHRoZSBtYXRj
aGVkIGVsZW1lbnQgc2V0IE9SCi0JLy8gR2V0IHRoZSB3aG9sZSBtYXRjaGVkIGVsZW1lbnQgc2V0
IGFzIGEgY2xlYW4gYXJyYXkKLQlnZXQ6IGZ1bmN0aW9uKCBudW0gKSB7Ci0JCXJldHVybiBudW0g
PT09IHVuZGVmaW5lZCA/Ci0KLQkJCS8vIFJldHVybiBhICdjbGVhbicgYXJyYXkKLQkJCUFycmF5
LnByb3RvdHlwZS5zbGljZS5jYWxsKCB0aGlzICkgOgotCi0JCQkvLyBSZXR1cm4ganVzdCB0aGUg
b2JqZWN0Ci0JCQl0aGlzWyBudW0gXTsKLQl9LAotCi0JLy8gVGFrZSBhbiBhcnJheSBvZiBlbGVt
ZW50cyBhbmQgcHVzaCBpdCBvbnRvIHRoZSBzdGFjawotCS8vIChyZXR1cm5pbmcgdGhlIG5ldyBt
YXRjaGVkIGVsZW1lbnQgc2V0KQotCXB1c2hTdGFjazogZnVuY3Rpb24oIGVsZW1zLCBuYW1lLCBz
ZWxlY3RvciApIHsKLQkJLy8gQnVpbGQgYSBuZXcgalF1ZXJ5IG1hdGNoZWQgZWxlbWVudCBzZXQK
LQkJdmFyIHJldCA9IGpRdWVyeSggZWxlbXMgKTsKLQotCQkvLyBBZGQgdGhlIG9sZCBvYmplY3Qg
b250byB0aGUgc3RhY2sgKGFzIGEgcmVmZXJlbmNlKQotCQlyZXQucHJldk9iamVjdCA9IHRoaXM7
Ci0KLQkJcmV0LmNvbnRleHQgPSB0aGlzLmNvbnRleHQ7Ci0KLQkJaWYgKCBuYW1lID09PSAiZmlu
ZCIgKQotCQkJcmV0LnNlbGVjdG9yID0gdGhpcy5zZWxlY3RvciArICh0aGlzLnNlbGVjdG9yID8g
IiAiIDogIiIpICsgc2VsZWN0b3I7Ci0JCWVsc2UgaWYgKCBuYW1lICkKLQkJCXJldC5zZWxlY3Rv
ciA9IHRoaXMuc2VsZWN0b3IgKyAiLiIgKyBuYW1lICsgIigiICsgc2VsZWN0b3IgKyAiKSI7Ci0K
LQkJLy8gUmV0dXJuIHRoZSBuZXdseS1mb3JtZWQgZWxlbWVudCBzZXQKLQkJcmV0dXJuIHJldDsK
LQl9LAotCi0JLy8gRm9yY2UgdGhlIGN1cnJlbnQgbWF0Y2hlZCBzZXQgb2YgZWxlbWVudHMgdG8g
YmVjb21lCi0JLy8gdGhlIHNwZWNpZmllZCBhcnJheSBvZiBlbGVtZW50cyAoZGVzdHJveWluZyB0
aGUgc3RhY2sgaW4gdGhlIHByb2Nlc3MpCi0JLy8gWW91IHNob3VsZCB1c2UgcHVzaFN0YWNrKCkg
aW4gb3JkZXIgdG8gZG8gdGhpcywgYnV0IG1haW50YWluIHRoZSBzdGFjawotCXNldEFycmF5OiBm
dW5jdGlvbiggZWxlbXMgKSB7Ci0JCS8vIFJlc2V0dGluZyB0aGUgbGVuZ3RoIHRvIDAsIHRoZW4g
dXNpbmcgdGhlIG5hdGl2ZSBBcnJheSBwdXNoCi0JCS8vIGlzIGEgc3VwZXItZmFzdCB3YXkgdG8g
cG9wdWxhdGUgYW4gb2JqZWN0IHdpdGggYXJyYXktbGlrZSBwcm9wZXJ0aWVzCi0JCXRoaXMubGVu
Z3RoID0gMDsKLQkJQXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkoIHRoaXMsIGVsZW1zICk7Ci0K
LQkJcmV0dXJuIHRoaXM7Ci0JfSwKLQotCS8vIEV4ZWN1dGUgYSBjYWxsYmFjayBmb3IgZXZlcnkg
ZWxlbWVudCBpbiB0aGUgbWF0Y2hlZCBzZXQuCi0JLy8gKFlvdSBjYW4gc2VlZCB0aGUgYXJndW1l
bnRzIHdpdGggYW4gYXJyYXkgb2YgYXJncywgYnV0IHRoaXMgaXMKLQkvLyBvbmx5IHVzZWQgaW50
ZXJuYWxseS4pCi0JZWFjaDogZnVuY3Rpb24oIGNhbGxiYWNrLCBhcmdzICkgewotCQlyZXR1cm4g
alF1ZXJ5LmVhY2goIHRoaXMsIGNhbGxiYWNrLCBhcmdzICk7Ci0JfSwKLQotCS8vIERldGVybWlu
ZSB0aGUgcG9zaXRpb24gb2YgYW4gZWxlbWVudCB3aXRoaW4KLQkvLyB0aGUgbWF0Y2hlZCBzZXQg
b2YgZWxlbWVudHMKLQlpbmRleDogZnVuY3Rpb24oIGVsZW0gKSB7Ci0JCS8vIExvY2F0ZSB0aGUg
cG9zaXRpb24gb2YgdGhlIGRlc2lyZWQgZWxlbWVudAotCQlyZXR1cm4galF1ZXJ5LmluQXJyYXko
Ci0JCQkvLyBJZiBpdCByZWNlaXZlcyBhIGpRdWVyeSBvYmplY3QsIHRoZSBmaXJzdCBlbGVtZW50
IGlzIHVzZWQKLQkJCWVsZW0gJiYgZWxlbS5qcXVlcnkgPyBlbGVtWzBdIDogZWxlbQotCQksIHRo
aXMgKTsKLQl9LAotCi0JYXR0cjogZnVuY3Rpb24oIG5hbWUsIHZhbHVlLCB0eXBlICkgewotCQl2
YXIgb3B0aW9ucyA9IG5hbWU7Ci0KLQkJLy8gTG9vayBmb3IgdGhlIGNhc2Ugd2hlcmUgd2UncmUg
YWNjZXNzaW5nIGEgc3R5bGUgdmFsdWUKLQkJaWYgKCB0eXBlb2YgbmFtZSA9PT0gInN0cmluZyIg
KQotCQkJaWYgKCB2YWx1ZSA9PT0gdW5kZWZpbmVkICkKLQkJCQlyZXR1cm4gdGhpc1swXSAmJiBq
UXVlcnlbIHR5cGUgfHwgImF0dHIiIF0oIHRoaXNbMF0sIG5hbWUgKTsKLQotCQkJZWxzZSB7Ci0J
CQkJb3B0aW9ucyA9IHt9OwotCQkJCW9wdGlvbnNbIG5hbWUgXSA9IHZhbHVlOwotCQkJfQotCi0J
CS8vIENoZWNrIHRvIHNlZSBpZiB3ZSdyZSBzZXR0aW5nIHN0eWxlIHZhbHVlcwotCQlyZXR1cm4g
dGhpcy5lYWNoKGZ1bmN0aW9uKGkpewotCQkJLy8gU2V0IGFsbCB0aGUgc3R5bGVzCi0JCQlmb3Ig
KCBuYW1lIGluIG9wdGlvbnMgKQotCQkJCWpRdWVyeS5hdHRyKAotCQkJCQl0eXBlID8KLQkJCQkJ
CXRoaXMuc3R5bGUgOgotCQkJCQkJdGhpcywKLQkJCQkJbmFtZSwgalF1ZXJ5LnByb3AoIHRoaXMs
IG9wdGlvbnNbIG5hbWUgXSwgdHlwZSwgaSwgbmFtZSApCi0JCQkJKTsKLQkJfSk7Ci0JfSwKLQot
CWNzczogZnVuY3Rpb24oIGtleSwgdmFsdWUgKSB7Ci0JCS8vIGlnbm9yZSBuZWdhdGl2ZSB3aWR0
aCBhbmQgaGVpZ2h0IHZhbHVlcwotCQlpZiAoIChrZXkgPT0gJ3dpZHRoJyB8fCBrZXkgPT0gJ2hl
aWdodCcpICYmIHBhcnNlRmxvYXQodmFsdWUpIDwgMCApCi0JCQl2YWx1ZSA9IHVuZGVmaW5lZDsK
LQkJcmV0dXJuIHRoaXMuYXR0cigga2V5LCB2YWx1ZSwgImN1ckNTUyIgKTsKLQl9LAotCi0JdGV4
dDogZnVuY3Rpb24oIHRleHQgKSB7Ci0JCWlmICggdHlwZW9mIHRleHQgIT09ICJvYmplY3QiICYm
IHRleHQgIT0gbnVsbCApCi0JCQlyZXR1cm4gdGhpcy5lbXB0eSgpLmFwcGVuZCggKHRoaXNbMF0g
JiYgdGhpc1swXS5vd25lckRvY3VtZW50IHx8IGRvY3VtZW50KS5jcmVhdGVUZXh0Tm9kZSggdGV4
dCApICk7Ci0KLQkJdmFyIHJldCA9ICIiOwotCi0JCWpRdWVyeS5lYWNoKCB0ZXh0IHx8IHRoaXMs
IGZ1bmN0aW9uKCl7Ci0JCQlqUXVlcnkuZWFjaCggdGhpcy5jaGlsZE5vZGVzLCBmdW5jdGlvbigp
ewotCQkJCWlmICggdGhpcy5ub2RlVHlwZSAhPSA4ICkKLQkJCQkJcmV0ICs9IHRoaXMubm9kZVR5
cGUgIT0gMSA/Ci0JCQkJCQl0aGlzLm5vZGVWYWx1ZSA6Ci0JCQkJCQlqUXVlcnkuZm4udGV4dCgg
WyB0aGlzIF0gKTsKLQkJCX0pOwotCQl9KTsKLQotCQlyZXR1cm4gcmV0OwotCX0sCi0KLQl3cmFw
QWxsOiBmdW5jdGlvbiggaHRtbCApIHsKLQkJaWYgKCB0aGlzWzBdICkgewotCQkJLy8gVGhlIGVs
ZW1lbnRzIHRvIHdyYXAgdGhlIHRhcmdldCBhcm91bmQKLQkJCXZhciB3cmFwID0galF1ZXJ5KCBo
dG1sLCB0aGlzWzBdLm93bmVyRG9jdW1lbnQgKS5jbG9uZSgpOwotCi0JCQlpZiAoIHRoaXNbMF0u
cGFyZW50Tm9kZSApCi0JCQkJd3JhcC5pbnNlcnRCZWZvcmUoIHRoaXNbMF0gKTsKLQotCQkJd3Jh
cC5tYXAoZnVuY3Rpb24oKXsKLQkJCQl2YXIgZWxlbSA9IHRoaXM7Ci0KLQkJCQl3aGlsZSAoIGVs
ZW0uZmlyc3RDaGlsZCApCi0JCQkJCWVsZW0gPSBlbGVtLmZpcnN0Q2hpbGQ7Ci0KLQkJCQlyZXR1
cm4gZWxlbTsKLQkJCX0pLmFwcGVuZCh0aGlzKTsKLQkJfQotCi0JCXJldHVybiB0aGlzOwotCX0s
Ci0KLQl3cmFwSW5uZXI6IGZ1bmN0aW9uKCBodG1sICkgewotCQlyZXR1cm4gdGhpcy5lYWNoKGZ1
bmN0aW9uKCl7Ci0JCQlqUXVlcnkoIHRoaXMgKS5jb250ZW50cygpLndyYXBBbGwoIGh0bWwgKTsK
LQkJfSk7Ci0JfSwKLQotCXdyYXA6IGZ1bmN0aW9uKCBodG1sICkgewotCQlyZXR1cm4gdGhpcy5l
YWNoKGZ1bmN0aW9uKCl7Ci0JCQlqUXVlcnkoIHRoaXMgKS53cmFwQWxsKCBodG1sICk7Ci0JCX0p
OwotCX0sCi0KLQlhcHBlbmQ6IGZ1bmN0aW9uKCkgewotCQlyZXR1cm4gdGhpcy5kb21NYW5pcChh
cmd1bWVudHMsIHRydWUsIGZ1bmN0aW9uKGVsZW0pewotCQkJaWYgKHRoaXMubm9kZVR5cGUgPT0g
MSkKLQkJCQl0aGlzLmFwcGVuZENoaWxkKCBlbGVtICk7Ci0JCX0pOwotCX0sCi0KLQlwcmVwZW5k
OiBmdW5jdGlvbigpIHsKLQkJcmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLCB0cnVlLCBm
dW5jdGlvbihlbGVtKXsKLQkJCWlmICh0aGlzLm5vZGVUeXBlID09IDEpCi0JCQkJdGhpcy5pbnNl
cnRCZWZvcmUoIGVsZW0sIHRoaXMuZmlyc3RDaGlsZCApOwotCQl9KTsKLQl9LAotCi0JYmVmb3Jl
OiBmdW5jdGlvbigpIHsKLQkJcmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLCBmYWxzZSwg
ZnVuY3Rpb24oZWxlbSl7Ci0JCQl0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKCBlbGVtLCB0
aGlzICk7Ci0JCX0pOwotCX0sCi0KLQlhZnRlcjogZnVuY3Rpb24oKSB7Ci0JCXJldHVybiB0aGlz
LmRvbU1hbmlwKGFyZ3VtZW50cywgZmFsc2UsIGZ1bmN0aW9uKGVsZW0pewotCQkJdGhpcy5wYXJl
bnROb2RlLmluc2VydEJlZm9yZSggZWxlbSwgdGhpcy5uZXh0U2libGluZyApOwotCQl9KTsKLQl9
LAotCi0JZW5kOiBmdW5jdGlvbigpIHsKLQkJcmV0dXJuIHRoaXMucHJldk9iamVjdCB8fCBqUXVl
cnkoIFtdICk7Ci0JfSwKLQotCS8vIEZvciBpbnRlcm5hbCB1c2Ugb25seS4KLQkvLyBCZWhhdmVz
IGxpa2UgYW4gQXJyYXkncyBtZXRob2QsIG5vdCBsaWtlIGEgalF1ZXJ5IG1ldGhvZC4KLQlwdXNo
OiBbXS5wdXNoLAotCXNvcnQ6IFtdLnNvcnQsCi0Jc3BsaWNlOiBbXS5zcGxpY2UsCi0KLQlmaW5k
OiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7Ci0JCWlmICggdGhpcy5sZW5ndGggPT09IDEgKSB7Ci0J
CQl2YXIgcmV0ID0gdGhpcy5wdXNoU3RhY2soIFtdLCAiZmluZCIsIHNlbGVjdG9yICk7Ci0JCQly
ZXQubGVuZ3RoID0gMDsKLQkJCWpRdWVyeS5maW5kKCBzZWxlY3RvciwgdGhpc1swXSwgcmV0ICk7
Ci0JCQlyZXR1cm4gcmV0OwotCQl9IGVsc2UgewotCQkJcmV0dXJuIHRoaXMucHVzaFN0YWNrKCBq
UXVlcnkudW5pcXVlKGpRdWVyeS5tYXAodGhpcywgZnVuY3Rpb24oZWxlbSl7Ci0JCQkJcmV0dXJu
IGpRdWVyeS5maW5kKCBzZWxlY3RvciwgZWxlbSApOwotCQkJfSkpLCAiZmluZCIsIHNlbGVjdG9y
ICk7Ci0JCX0KLQl9LAotCi0JY2xvbmU6IGZ1bmN0aW9uKCBldmVudHMgKSB7Ci0JCS8vIERvIHRo
ZSBjbG9uZQotCQl2YXIgcmV0ID0gdGhpcy5tYXAoZnVuY3Rpb24oKXsKLQkJCWlmICggIWpRdWVy
eS5zdXBwb3J0Lm5vQ2xvbmVFdmVudCAmJiAhalF1ZXJ5LmlzWE1MRG9jKHRoaXMpICkgewotCQkJ
CS8vIElFIGNvcGllcyBldmVudHMgYm91bmQgdmlhIGF0dGFjaEV2ZW50IHdoZW4KLQkJCQkvLyB1
c2luZyBjbG9uZU5vZGUuIENhbGxpbmcgZGV0YWNoRXZlbnQgb24gdGhlCi0JCQkJLy8gY2xvbmUg
d2lsbCBhbHNvIHJlbW92ZSB0aGUgZXZlbnRzIGZyb20gdGhlIG9yaWduYWwKLQkJCQkvLyBJbiBv
cmRlciB0byBnZXQgYXJvdW5kIHRoaXMsIHdlIHVzZSBpbm5lckhUTUwuCi0JCQkJLy8gVW5mb3J0
dW5hdGVseSwgdGhpcyBtZWFucyBzb21lIG1vZGlmaWNhdGlvbnMgdG8KLQkJCQkvLyBhdHRyaWJ1
dGVzIGluIElFIHRoYXQgYXJlIGFjdHVhbGx5IG9ubHkgc3RvcmVkCi0JCQkJLy8gYXMgcHJvcGVy
dGllcyB3aWxsIG5vdCBiZSBjb3BpZWQgKHN1Y2ggYXMgdGhlCi0JCQkJLy8gdGhlIG5hbWUgYXR0
cmlidXRlIG9uIGFuIGlucHV0KS4KLQkJCQl2YXIgaHRtbCA9IHRoaXMub3V0ZXJIVE1MOwotCQkJ
CWlmICggIWh0bWwgKSB7Ci0JCQkJCXZhciBkaXYgPSB0aGlzLm93bmVyRG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiZGl2Iik7Ci0JCQkJCWRpdi5hcHBlbmRDaGlsZCggdGhpcy5jbG9uZU5vZGUodHJ1
ZSkgKTsKLQkJCQkJaHRtbCA9IGRpdi5pbm5lckhUTUw7Ci0JCQkJfQotCi0JCQkJcmV0dXJuIGpR
dWVyeS5jbGVhbihbaHRtbC5yZXBsYWNlKC8galF1ZXJ5XGQrPSIoPzpcZCt8bnVsbCkiL2csICIi
KS5yZXBsYWNlKC9eXHMqLywgIiIpXSlbMF07Ci0JCQl9IGVsc2UKLQkJCQlyZXR1cm4gdGhpcy5j
bG9uZU5vZGUodHJ1ZSk7Ci0JCX0pOwotCi0JCS8vIENvcHkgdGhlIGV2ZW50cyBmcm9tIHRoZSBv
cmlnaW5hbCB0byB0aGUgY2xvbmUKLQkJaWYgKCBldmVudHMgPT09IHRydWUgKSB7Ci0JCQl2YXIg
b3JpZyA9IHRoaXMuZmluZCgiKiIpLmFuZFNlbGYoKSwgaSA9IDA7Ci0KLQkJCXJldC5maW5kKCIq
IikuYW5kU2VsZigpLmVhY2goZnVuY3Rpb24oKXsKLQkJCQlpZiAoIHRoaXMubm9kZU5hbWUgIT09
IG9yaWdbaV0ubm9kZU5hbWUgKQotCQkJCQlyZXR1cm47Ci0KLQkJCQl2YXIgZXZlbnRzID0galF1
ZXJ5LmRhdGEoIG9yaWdbaV0sICJldmVudHMiICk7Ci0KLQkJCQlmb3IgKCB2YXIgdHlwZSBpbiBl
dmVudHMgKSB7Ci0JCQkJCWZvciAoIHZhciBoYW5kbGVyIGluIGV2ZW50c1sgdHlwZSBdICkgewot
CQkJCQkJalF1ZXJ5LmV2ZW50LmFkZCggdGhpcywgdHlwZSwgZXZlbnRzWyB0eXBlIF1bIGhhbmRs
ZXIgXSwgZXZlbnRzWyB0eXBlIF1bIGhhbmRsZXIgXS5kYXRhICk7Ci0JCQkJCX0KLQkJCQl9Ci0K
LQkJCQlpKys7Ci0JCQl9KTsKLQkJfQotCi0JCS8vIFJldHVybiB0aGUgY2xvbmVkIHNldAotCQly
ZXR1cm4gcmV0OwotCX0sCi0KLQlmaWx0ZXI6IGZ1bmN0aW9uKCBzZWxlY3RvciApIHsKLQkJcmV0
dXJuIHRoaXMucHVzaFN0YWNrKAotCQkJalF1ZXJ5LmlzRnVuY3Rpb24oIHNlbGVjdG9yICkgJiYK
LQkJCWpRdWVyeS5ncmVwKHRoaXMsIGZ1bmN0aW9uKGVsZW0sIGkpewotCQkJCXJldHVybiBzZWxl
Y3Rvci5jYWxsKCBlbGVtLCBpICk7Ci0JCQl9KSB8fAotCi0JCQlqUXVlcnkubXVsdGlGaWx0ZXIo
IHNlbGVjdG9yLCBqUXVlcnkuZ3JlcCh0aGlzLCBmdW5jdGlvbihlbGVtKXsKLQkJCQlyZXR1cm4g
ZWxlbS5ub2RlVHlwZSA9PT0gMTsKLQkJCX0pICksICJmaWx0ZXIiLCBzZWxlY3RvciApOwotCX0s
Ci0KLQljbG9zZXN0OiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7Ci0JCXZhciBwb3MgPSBqUXVlcnku
ZXhwci5tYXRjaC5QT1MudGVzdCggc2VsZWN0b3IgKSA/IGpRdWVyeShzZWxlY3RvcikgOiBudWxs
LAotCQkJY2xvc2VyID0gMDsKLQotCQlyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXsKLQkJCXZh
ciBjdXIgPSB0aGlzOwotCQkJd2hpbGUgKCBjdXIgJiYgY3VyLm93bmVyRG9jdW1lbnQgKSB7Ci0J
CQkJaWYgKCBwb3MgPyBwb3MuaW5kZXgoY3VyKSA+IC0xIDogalF1ZXJ5KGN1cikuaXMoc2VsZWN0
b3IpICkgewotCQkJCQlqUXVlcnkuZGF0YShjdXIsICJjbG9zZXN0IiwgY2xvc2VyKTsKLQkJCQkJ
cmV0dXJuIGN1cjsKLQkJCQl9Ci0JCQkJY3VyID0gY3VyLnBhcmVudE5vZGU7Ci0JCQkJY2xvc2Vy
Kys7Ci0JCQl9Ci0JCX0pOwotCX0sCi0KLQlub3Q6IGZ1bmN0aW9uKCBzZWxlY3RvciApIHsKLQkJ
aWYgKCB0eXBlb2Ygc2VsZWN0b3IgPT09ICJzdHJpbmciICkKLQkJCS8vIHRlc3Qgc3BlY2lhbCBj
YXNlIHdoZXJlIGp1c3Qgb25lIHNlbGVjdG9yIGlzIHBhc3NlZCBpbgotCQkJaWYgKCBpc1NpbXBs
ZS50ZXN0KCBzZWxlY3RvciApICkKLQkJCQlyZXR1cm4gdGhpcy5wdXNoU3RhY2soIGpRdWVyeS5t
dWx0aUZpbHRlciggc2VsZWN0b3IsIHRoaXMsIHRydWUgKSwgIm5vdCIsIHNlbGVjdG9yICk7Ci0J
CQllbHNlCi0JCQkJc2VsZWN0b3IgPSBqUXVlcnkubXVsdGlGaWx0ZXIoIHNlbGVjdG9yLCB0aGlz
ICk7Ci0KLQkJdmFyIGlzQXJyYXlMaWtlID0gc2VsZWN0b3IubGVuZ3RoICYmIHNlbGVjdG9yW3Nl
bGVjdG9yLmxlbmd0aCAtIDFdICE9PSB1bmRlZmluZWQgJiYgIXNlbGVjdG9yLm5vZGVUeXBlOwot
CQlyZXR1cm4gdGhpcy5maWx0ZXIoZnVuY3Rpb24oKSB7Ci0JCQlyZXR1cm4gaXNBcnJheUxpa2Ug
PyBqUXVlcnkuaW5BcnJheSggdGhpcywgc2VsZWN0b3IgKSA8IDAgOiB0aGlzICE9IHNlbGVjdG9y
OwotCQl9KTsKLQl9LAotCi0JYWRkOiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7Ci0JCXJldHVybiB0
aGlzLnB1c2hTdGFjayggalF1ZXJ5LnVuaXF1ZSggalF1ZXJ5Lm1lcmdlKAotCQkJdGhpcy5nZXQo
KSwKLQkJCXR5cGVvZiBzZWxlY3RvciA9PT0gInN0cmluZyIgPwotCQkJCWpRdWVyeSggc2VsZWN0
b3IgKSA6Ci0JCQkJalF1ZXJ5Lm1ha2VBcnJheSggc2VsZWN0b3IgKQotCQkpKSk7Ci0JfSwKLQot
CWlzOiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7Ci0JCXJldHVybiAhIXNlbGVjdG9yICYmIGpRdWVy
eS5tdWx0aUZpbHRlciggc2VsZWN0b3IsIHRoaXMgKS5sZW5ndGggPiAwOwotCX0sCi0KLQloYXND
bGFzczogZnVuY3Rpb24oIHNlbGVjdG9yICkgewotCQlyZXR1cm4gISFzZWxlY3RvciAmJiB0aGlz
LmlzKCAiLiIgKyBzZWxlY3RvciApOwotCX0sCi0KLQl2YWw6IGZ1bmN0aW9uKCB2YWx1ZSApIHsK
LQkJaWYgKCB2YWx1ZSA9PT0gdW5kZWZpbmVkICkgewkJCQotCQkJdmFyIGVsZW0gPSB0aGlzWzBd
OwotCi0JCQlpZiAoIGVsZW0gKSB7Ci0JCQkJaWYoIGpRdWVyeS5ub2RlTmFtZSggZWxlbSwgJ29w
dGlvbicgKSApCi0JCQkJCXJldHVybiAoZWxlbS5hdHRyaWJ1dGVzLnZhbHVlIHx8IHt9KS5zcGVj
aWZpZWQgPyBlbGVtLnZhbHVlIDogZWxlbS50ZXh0OwotCQkJCQotCQkJCS8vIFdlIG5lZWQgdG8g
aGFuZGxlIHNlbGVjdCBib3hlcyBzcGVjaWFsCi0JCQkJaWYgKCBqUXVlcnkubm9kZU5hbWUoIGVs
ZW0sICJzZWxlY3QiICkgKSB7Ci0JCQkJCXZhciBpbmRleCA9IGVsZW0uc2VsZWN0ZWRJbmRleCwK
LQkJCQkJCXZhbHVlcyA9IFtdLAotCQkJCQkJb3B0aW9ucyA9IGVsZW0ub3B0aW9ucywKLQkJCQkJ
CW9uZSA9IGVsZW0udHlwZSA9PSAic2VsZWN0LW9uZSI7Ci0KLQkJCQkJLy8gTm90aGluZyB3YXMg
c2VsZWN0ZWQKLQkJCQkJaWYgKCBpbmRleCA8IDAgKQotCQkJCQkJcmV0dXJuIG51bGw7Ci0KLQkJ
CQkJLy8gTG9vcCB0aHJvdWdoIGFsbCB0aGUgc2VsZWN0ZWQgb3B0aW9ucwotCQkJCQlmb3IgKCB2
YXIgaSA9IG9uZSA/IGluZGV4IDogMCwgbWF4ID0gb25lID8gaW5kZXggKyAxIDogb3B0aW9ucy5s
ZW5ndGg7IGkgPCBtYXg7IGkrKyApIHsKLQkJCQkJCXZhciBvcHRpb24gPSBvcHRpb25zWyBpIF07
Ci0KLQkJCQkJCWlmICggb3B0aW9uLnNlbGVjdGVkICkgewotCQkJCQkJCS8vIEdldCB0aGUgc3Bl
Y2lmYyB2YWx1ZSBmb3IgdGhlIG9wdGlvbgotCQkJCQkJCXZhbHVlID0galF1ZXJ5KG9wdGlvbiku
dmFsKCk7Ci0KLQkJCQkJCQkvLyBXZSBkb24ndCBuZWVkIGFuIGFycmF5IGZvciBvbmUgc2VsZWN0
cwotCQkJCQkJCWlmICggb25lICkKLQkJCQkJCQkJcmV0dXJuIHZhbHVlOwotCi0JCQkJCQkJLy8g
TXVsdGktU2VsZWN0cyByZXR1cm4gYW4gYXJyYXkKLQkJCQkJCQl2YWx1ZXMucHVzaCggdmFsdWUg
KTsKLQkJCQkJCX0KLQkJCQkJfQotCi0JCQkJCXJldHVybiB2YWx1ZXM7CQkJCQotCQkJCX0KLQot
CQkJCS8vIEV2ZXJ5dGhpbmcgZWxzZSwgd2UganVzdCBncmFiIHRoZSB2YWx1ZQotCQkJCXJldHVy
biAoZWxlbS52YWx1ZSB8fCAiIikucmVwbGFjZSgvXHIvZywgIiIpOwotCi0JCQl9Ci0KLQkJCXJl
dHVybiB1bmRlZmluZWQ7Ci0JCX0KLQotCQlpZiAoIHR5cGVvZiB2YWx1ZSA9PT0gIm51bWJlciIg
KQotCQkJdmFsdWUgKz0gJyc7Ci0KLQkJcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpewotCQkJ
aWYgKCB0aGlzLm5vZGVUeXBlICE9IDEgKQotCQkJCXJldHVybjsKLQotCQkJaWYgKCBqUXVlcnku
aXNBcnJheSh2YWx1ZSkgJiYgL3JhZGlvfGNoZWNrYm94Ly50ZXN0KCB0aGlzLnR5cGUgKSApCi0J
CQkJdGhpcy5jaGVja2VkID0gKGpRdWVyeS5pbkFycmF5KHRoaXMudmFsdWUsIHZhbHVlKSA+PSAw
IHx8Ci0JCQkJCWpRdWVyeS5pbkFycmF5KHRoaXMubmFtZSwgdmFsdWUpID49IDApOwotCi0JCQll
bHNlIGlmICggalF1ZXJ5Lm5vZGVOYW1lKCB0aGlzLCAic2VsZWN0IiApICkgewotCQkJCXZhciB2
YWx1ZXMgPSBqUXVlcnkubWFrZUFycmF5KHZhbHVlKTsKLQotCQkJCWpRdWVyeSggIm9wdGlvbiIs
IHRoaXMgKS5lYWNoKGZ1bmN0aW9uKCl7Ci0JCQkJCXRoaXMuc2VsZWN0ZWQgPSAoalF1ZXJ5Lmlu
QXJyYXkoIHRoaXMudmFsdWUsIHZhbHVlcyApID49IDAgfHwKLQkJCQkJCWpRdWVyeS5pbkFycmF5
KCB0aGlzLnRleHQsIHZhbHVlcyApID49IDApOwotCQkJCX0pOwotCi0JCQkJaWYgKCAhdmFsdWVz
Lmxlbmd0aCApCi0JCQkJCXRoaXMuc2VsZWN0ZWRJbmRleCA9IC0xOwotCi0JCQl9IGVsc2UKLQkJ
CQl0aGlzLnZhbHVlID0gdmFsdWU7Ci0JCX0pOwotCX0sCi0KLQlodG1sOiBmdW5jdGlvbiggdmFs
dWUgKSB7Ci0JCXJldHVybiB2YWx1ZSA9PT0gdW5kZWZpbmVkID8KLQkJCSh0aGlzWzBdID8KLQkJ
CQl0aGlzWzBdLmlubmVySFRNTC5yZXBsYWNlKC8galF1ZXJ5XGQrPSIoPzpcZCt8bnVsbCkiL2cs
ICIiKSA6Ci0JCQkJbnVsbCkgOgotCQkJdGhpcy5lbXB0eSgpLmFwcGVuZCggdmFsdWUgKTsKLQl9
LAotCi0JcmVwbGFjZVdpdGg6IGZ1bmN0aW9uKCB2YWx1ZSApIHsKLQkJcmV0dXJuIHRoaXMuYWZ0
ZXIoIHZhbHVlICkucmVtb3ZlKCk7Ci0JfSwKLQotCWVxOiBmdW5jdGlvbiggaSApIHsKLQkJcmV0
dXJuIHRoaXMuc2xpY2UoIGksICtpICsgMSApOwotCX0sCi0KLQlzbGljZTogZnVuY3Rpb24oKSB7
Ci0JCXJldHVybiB0aGlzLnB1c2hTdGFjayggQXJyYXkucHJvdG90eXBlLnNsaWNlLmFwcGx5KCB0
aGlzLCBhcmd1bWVudHMgKSwKLQkJCSJzbGljZSIsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxs
KGFyZ3VtZW50cykuam9pbigiLCIpICk7Ci0JfSwKLQotCW1hcDogZnVuY3Rpb24oIGNhbGxiYWNr
ICkgewotCQlyZXR1cm4gdGhpcy5wdXNoU3RhY2soIGpRdWVyeS5tYXAodGhpcywgZnVuY3Rpb24o
ZWxlbSwgaSl7Ci0JCQlyZXR1cm4gY2FsbGJhY2suY2FsbCggZWxlbSwgaSwgZWxlbSApOwotCQl9
KSk7Ci0JfSwKLQotCWFuZFNlbGY6IGZ1bmN0aW9uKCkgewotCQlyZXR1cm4gdGhpcy5hZGQoIHRo
aXMucHJldk9iamVjdCApOwotCX0sCi0KLQlkb21NYW5pcDogZnVuY3Rpb24oIGFyZ3MsIHRhYmxl
LCBjYWxsYmFjayApIHsKLQkJaWYgKCB0aGlzWzBdICkgewotCQkJdmFyIGZyYWdtZW50ID0gKHRo
aXNbMF0ub3duZXJEb2N1bWVudCB8fCB0aGlzWzBdKS5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCks
Ci0JCQkJc2NyaXB0cyA9IGpRdWVyeS5jbGVhbiggYXJncywgKHRoaXNbMF0ub3duZXJEb2N1bWVu
dCB8fCB0aGlzWzBdKSwgZnJhZ21lbnQgKSwKLQkJCQlmaXJzdCA9IGZyYWdtZW50LmZpcnN0Q2hp
bGQ7Ci0KLQkJCWlmICggZmlyc3QgKQotCQkJCWZvciAoIHZhciBpID0gMCwgbCA9IHRoaXMubGVu
Z3RoOyBpIDwgbDsgaSsrICkKLQkJCQkJY2FsbGJhY2suY2FsbCggcm9vdCh0aGlzW2ldLCBmaXJz
dCksIHRoaXMubGVuZ3RoID4gMSB8fCBpID4gMCA/Ci0JCQkJCQkJZnJhZ21lbnQuY2xvbmVOb2Rl
KHRydWUpIDogZnJhZ21lbnQgKTsKLQkJCi0JCQlpZiAoIHNjcmlwdHMgKQotCQkJCWpRdWVyeS5l
YWNoKCBzY3JpcHRzLCBldmFsU2NyaXB0ICk7Ci0JCX0KLQotCQlyZXR1cm4gdGhpczsKLQkJCi0J
CWZ1bmN0aW9uIHJvb3QoIGVsZW0sIGN1ciApIHsKLQkJCXJldHVybiB0YWJsZSAmJiBqUXVlcnku
bm9kZU5hbWUoZWxlbSwgInRhYmxlIikgJiYgalF1ZXJ5Lm5vZGVOYW1lKGN1ciwgInRyIikgPwot
CQkJCShlbGVtLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0Ym9keSIpWzBdIHx8Ci0JCQkJZWxlbS5h
cHBlbmRDaGlsZChlbGVtLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGJvZHkiKSkpIDoK
LQkJCQllbGVtOwotCQl9Ci0JfQotfTsKLQotLy8gR2l2ZSB0aGUgaW5pdCBmdW5jdGlvbiB0aGUg
alF1ZXJ5IHByb3RvdHlwZSBmb3IgbGF0ZXIgaW5zdGFudGlhdGlvbgotalF1ZXJ5LmZuLmluaXQu
cHJvdG90eXBlID0galF1ZXJ5LmZuOwotCi1mdW5jdGlvbiBldmFsU2NyaXB0KCBpLCBlbGVtICkg
ewotCWlmICggZWxlbS5zcmMgKQotCQlqUXVlcnkuYWpheCh7Ci0JCQl1cmw6IGVsZW0uc3JjLAot
CQkJYXN5bmM6IGZhbHNlLAotCQkJZGF0YVR5cGU6ICJzY3JpcHQiCi0JCX0pOwotCi0JZWxzZQot
CQlqUXVlcnkuZ2xvYmFsRXZhbCggZWxlbS50ZXh0IHx8IGVsZW0udGV4dENvbnRlbnQgfHwgZWxl
bS5pbm5lckhUTUwgfHwgIiIgKTsKLQotCWlmICggZWxlbS5wYXJlbnROb2RlICkKLQkJZWxlbS5w
YXJlbnROb2RlLnJlbW92ZUNoaWxkKCBlbGVtICk7Ci19Ci0KLWZ1bmN0aW9uIG5vdygpewotCXJl
dHVybiArbmV3IERhdGU7Ci19Ci0KLWpRdWVyeS5leHRlbmQgPSBqUXVlcnkuZm4uZXh0ZW5kID0g
ZnVuY3Rpb24oKSB7Ci0JLy8gY29weSByZWZlcmVuY2UgdG8gdGFyZ2V0IG9iamVjdAotCXZhciB0
YXJnZXQgPSBhcmd1bWVudHNbMF0gfHwge30sIGkgPSAxLCBsZW5ndGggPSBhcmd1bWVudHMubGVu
Z3RoLCBkZWVwID0gZmFsc2UsIG9wdGlvbnM7Ci0KLQkvLyBIYW5kbGUgYSBkZWVwIGNvcHkgc2l0
dWF0aW9uCi0JaWYgKCB0eXBlb2YgdGFyZ2V0ID09PSAiYm9vbGVhbiIgKSB7Ci0JCWRlZXAgPSB0
YXJnZXQ7Ci0JCXRhcmdldCA9IGFyZ3VtZW50c1sxXSB8fCB7fTsKLQkJLy8gc2tpcCB0aGUgYm9v
bGVhbiBhbmQgdGhlIHRhcmdldAotCQlpID0gMjsKLQl9Ci0KLQkvLyBIYW5kbGUgY2FzZSB3aGVu
IHRhcmdldCBpcyBhIHN0cmluZyBvciBzb21ldGhpbmcgKHBvc3NpYmxlIGluIGRlZXAgY29weSkK
LQlpZiAoIHR5cGVvZiB0YXJnZXQgIT09ICJvYmplY3QiICYmICFqUXVlcnkuaXNGdW5jdGlvbih0
YXJnZXQpICkKLQkJdGFyZ2V0ID0ge307Ci0KLQkvLyBleHRlbmQgalF1ZXJ5IGl0c2VsZiBpZiBv
bmx5IG9uZSBhcmd1bWVudCBpcyBwYXNzZWQKLQlpZiAoIGxlbmd0aCA9PSBpICkgewotCQl0YXJn
ZXQgPSB0aGlzOwotCQktLWk7Ci0JfQotCi0JZm9yICggOyBpIDwgbGVuZ3RoOyBpKysgKQotCQkv
LyBPbmx5IGRlYWwgd2l0aCBub24tbnVsbC91bmRlZmluZWQgdmFsdWVzCi0JCWlmICggKG9wdGlv
bnMgPSBhcmd1bWVudHNbIGkgXSkgIT0gbnVsbCApCi0JCQkvLyBFeHRlbmQgdGhlIGJhc2Ugb2Jq
ZWN0Ci0JCQlmb3IgKCB2YXIgbmFtZSBpbiBvcHRpb25zICkgewotCQkJCXZhciBzcmMgPSB0YXJn
ZXRbIG5hbWUgXSwgY29weSA9IG9wdGlvbnNbIG5hbWUgXTsKLQotCQkJCS8vIFByZXZlbnQgbmV2
ZXItZW5kaW5nIGxvb3AKLQkJCQlpZiAoIHRhcmdldCA9PT0gY29weSApCi0JCQkJCWNvbnRpbnVl
OwotCi0JCQkJLy8gUmVjdXJzZSBpZiB3ZSdyZSBtZXJnaW5nIG9iamVjdCB2YWx1ZXMKLQkJCQlp
ZiAoIGRlZXAgJiYgY29weSAmJiB0eXBlb2YgY29weSA9PT0gIm9iamVjdCIgJiYgIWNvcHkubm9k
ZVR5cGUgKQotCQkJCQl0YXJnZXRbIG5hbWUgXSA9IGpRdWVyeS5leHRlbmQoIGRlZXAsIAotCQkJ
CQkJLy8gTmV2ZXIgbW92ZSBvcmlnaW5hbCBvYmplY3RzLCBjbG9uZSB0aGVtCi0JCQkJCQlzcmMg
fHwgKCBjb3B5Lmxlbmd0aCAhPSBudWxsID8gWyBdIDogeyB9ICkKLQkJCQkJLCBjb3B5ICk7Ci0K
LQkJCQkvLyBEb24ndCBicmluZyBpbiB1bmRlZmluZWQgdmFsdWVzCi0JCQkJZWxzZSBpZiAoIGNv
cHkgIT09IHVuZGVmaW5lZCApCi0JCQkJCXRhcmdldFsgbmFtZSBdID0gY29weTsKLQotCQkJfQot
Ci0JLy8gUmV0dXJuIHRoZSBtb2RpZmllZCBvYmplY3QKLQlyZXR1cm4gdGFyZ2V0OwotfTsKLQot
Ly8gZXhjbHVkZSB0aGUgZm9sbG93aW5nIGNzcyBwcm9wZXJ0aWVzIHRvIGFkZCBweAotdmFyCWV4
Y2x1ZGUgPSAvei0/aW5kZXh8Zm9udC0/d2VpZ2h0fG9wYWNpdHl8em9vbXxsaW5lLT9oZWlnaHQv
aSwKLQkvLyBjYWNoZSBkZWZhdWx0VmlldwotCWRlZmF1bHRWaWV3ID0gZG9jdW1lbnQuZGVmYXVs
dFZpZXcgfHwge30sCi0JdG9TdHJpbmcgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nOwotCi1q
UXVlcnkuZXh0ZW5kKHsKLQlub0NvbmZsaWN0OiBmdW5jdGlvbiggZGVlcCApIHsKLQkJd2luZG93
LiQgPSBfJDsKLQotCQlpZiAoIGRlZXAgKQotCQkJd2luZG93LmpRdWVyeSA9IF9qUXVlcnk7Ci0K
LQkJcmV0dXJuIGpRdWVyeTsKLQl9LAotCi0JLy8gU2VlIHRlc3QvdW5pdC9jb3JlLmpzIGZvciBk
ZXRhaWxzIGNvbmNlcm5pbmcgaXNGdW5jdGlvbi4KLQkvLyBTaW5jZSB2ZXJzaW9uIDEuMywgRE9N
IG1ldGhvZHMgYW5kIGZ1bmN0aW9ucyBsaWtlIGFsZXJ0Ci0JLy8gYXJlbid0IHN1cHBvcnRlZC4g
VGhleSByZXR1cm4gZmFsc2Ugb24gSUUgKCMyOTY4KS4KLQlpc0Z1bmN0aW9uOiBmdW5jdGlvbigg
b2JqICkgewotCQlyZXR1cm4gdG9TdHJpbmcuY2FsbChvYmopID09PSAiW29iamVjdCBGdW5jdGlv
bl0iOwotCX0sCi0KLQlpc0FycmF5OiBmdW5jdGlvbiggb2JqICkgewotCQlyZXR1cm4gdG9TdHJp
bmcuY2FsbChvYmopID09PSAiW29iamVjdCBBcnJheV0iOwotCX0sCi0KLQkvLyBjaGVjayBpZiBh
biBlbGVtZW50IGlzIGluIGEgKG9yIGlzIGFuKSBYTUwgZG9jdW1lbnQKLQlpc1hNTERvYzogZnVu
Y3Rpb24oIGVsZW0gKSB7Ci0JCXJldHVybiBlbGVtLm5vZGVUeXBlID09PSA5ICYmIGVsZW0uZG9j
dW1lbnRFbGVtZW50Lm5vZGVOYW1lICE9PSAiSFRNTCIgfHwKLQkJCSEhZWxlbS5vd25lckRvY3Vt
ZW50ICYmIGpRdWVyeS5pc1hNTERvYyggZWxlbS5vd25lckRvY3VtZW50ICk7Ci0JfSwKLQotCS8v
IEV2YWx1bGF0ZXMgYSBzY3JpcHQgaW4gYSBnbG9iYWwgY29udGV4dAotCWdsb2JhbEV2YWw6IGZ1
bmN0aW9uKCBkYXRhICkgewotCQlpZiAoIGRhdGEgJiYgL1xTLy50ZXN0KGRhdGEpICkgewotCQkJ
Ly8gSW5zcGlyZWQgYnkgY29kZSBieSBBbmRyZWEgR2lhbW1hcmNoaQotCQkJLy8gaHR0cDovL3dl
YnJlZmxlY3Rpb24uYmxvZ3Nwb3QuY29tLzIwMDcvMDgvZ2xvYmFsLXNjb3BlLWV2YWx1YXRpb24t
YW5kLWRvbS5odG1sCi0JCQl2YXIgaGVhZCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJoZWFkIilbMF0gfHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LAotCQkJCXNjcmlwdCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpOwotCi0JCQlzY3JpcHQudHlwZSA9ICJ0ZXh0
L2phdmFzY3JpcHQiOwotCQkJaWYgKCBqUXVlcnkuc3VwcG9ydC5zY3JpcHRFdmFsICkKLQkJCQlz
Y3JpcHQuYXBwZW5kQ2hpbGQoIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCBkYXRhICkgKTsKLQkJ
CWVsc2UKLQkJCQlzY3JpcHQudGV4dCA9IGRhdGE7Ci0KLQkJCS8vIFVzZSBpbnNlcnRCZWZvcmUg
aW5zdGVhZCBvZiBhcHBlbmRDaGlsZCAgdG8gY2lyY3VtdmVudCBhbiBJRTYgYnVnLgotCQkJLy8g
VGhpcyBhcmlzZXMgd2hlbiBhIGJhc2Ugbm9kZSBpcyB1c2VkICgjMjcwOSkuCi0JCQloZWFkLmlu
c2VydEJlZm9yZSggc2NyaXB0LCBoZWFkLmZpcnN0Q2hpbGQgKTsKLQkJCWhlYWQucmVtb3ZlQ2hp
bGQoIHNjcmlwdCApOwotCQl9Ci0JfSwKLQotCW5vZGVOYW1lOiBmdW5jdGlvbiggZWxlbSwgbmFt
ZSApIHsKLQkJcmV0dXJuIGVsZW0ubm9kZU5hbWUgJiYgZWxlbS5ub2RlTmFtZS50b1VwcGVyQ2Fz
ZSgpID09IG5hbWUudG9VcHBlckNhc2UoKTsKLQl9LAotCi0JLy8gYXJncyBpcyBmb3IgaW50ZXJu
YWwgdXNhZ2Ugb25seQotCWVhY2g6IGZ1bmN0aW9uKCBvYmplY3QsIGNhbGxiYWNrLCBhcmdzICkg
ewotCQl2YXIgbmFtZSwgaSA9IDAsIGxlbmd0aCA9IG9iamVjdC5sZW5ndGg7Ci0KLQkJaWYgKCBh
cmdzICkgewotCQkJaWYgKCBsZW5ndGggPT09IHVuZGVmaW5lZCApIHsKLQkJCQlmb3IgKCBuYW1l
IGluIG9iamVjdCApCi0JCQkJCWlmICggY2FsbGJhY2suYXBwbHkoIG9iamVjdFsgbmFtZSBdLCBh
cmdzICkgPT09IGZhbHNlICkKLQkJCQkJCWJyZWFrOwotCQkJfSBlbHNlCi0JCQkJZm9yICggOyBp
IDwgbGVuZ3RoOyApCi0JCQkJCWlmICggY2FsbGJhY2suYXBwbHkoIG9iamVjdFsgaSsrIF0sIGFy
Z3MgKSA9PT0gZmFsc2UgKQotCQkJCQkJYnJlYWs7Ci0KLQkJLy8gQSBzcGVjaWFsLCBmYXN0LCBj
YXNlIGZvciB0aGUgbW9zdCBjb21tb24gdXNlIG9mIGVhY2gKLQkJfSBlbHNlIHsKLQkJCWlmICgg
bGVuZ3RoID09PSB1bmRlZmluZWQgKSB7Ci0JCQkJZm9yICggbmFtZSBpbiBvYmplY3QgKQotCQkJ
CQlpZiAoIGNhbGxiYWNrLmNhbGwoIG9iamVjdFsgbmFtZSBdLCBuYW1lLCBvYmplY3RbIG5hbWUg
XSApID09PSBmYWxzZSApCi0JCQkJCQlicmVhazsKLQkJCX0gZWxzZQotCQkJCWZvciAoIHZhciB2
YWx1ZSA9IG9iamVjdFswXTsKLQkJCQkJaSA8IGxlbmd0aCAmJiBjYWxsYmFjay5jYWxsKCB2YWx1
ZSwgaSwgdmFsdWUgKSAhPT0gZmFsc2U7IHZhbHVlID0gb2JqZWN0WysraV0gKXt9Ci0JCX0KLQot
CQlyZXR1cm4gb2JqZWN0OwotCX0sCi0KLQlwcm9wOiBmdW5jdGlvbiggZWxlbSwgdmFsdWUsIHR5
cGUsIGksIG5hbWUgKSB7Ci0JCS8vIEhhbmRsZSBleGVjdXRhYmxlIGZ1bmN0aW9ucwotCQlpZiAo
IGpRdWVyeS5pc0Z1bmN0aW9uKCB2YWx1ZSApICkKLQkJCXZhbHVlID0gdmFsdWUuY2FsbCggZWxl
bSwgaSApOwotCi0JCS8vIEhhbmRsZSBwYXNzaW5nIGluIGEgbnVtYmVyIHRvIGEgQ1NTIHByb3Bl
cnR5Ci0JCXJldHVybiB0eXBlb2YgdmFsdWUgPT09ICJudW1iZXIiICYmIHR5cGUgPT0gImN1ckNT
UyIgJiYgIWV4Y2x1ZGUudGVzdCggbmFtZSApID8KLQkJCXZhbHVlICsgInB4IiA6Ci0JCQl2YWx1
ZTsKLQl9LAotCi0JY2xhc3NOYW1lOiB7Ci0JCS8vIGludGVybmFsIG9ubHksIHVzZSBhZGRDbGFz
cygiY2xhc3MiKQotCQlhZGQ6IGZ1bmN0aW9uKCBlbGVtLCBjbGFzc05hbWVzICkgewotCQkJalF1
ZXJ5LmVhY2goKGNsYXNzTmFtZXMgfHwgIiIpLnNwbGl0KC9ccysvKSwgZnVuY3Rpb24oaSwgY2xh
c3NOYW1lKXsKLQkJCQlpZiAoIGVsZW0ubm9kZVR5cGUgPT0gMSAmJiAhalF1ZXJ5LmNsYXNzTmFt
ZS5oYXMoIGVsZW0uY2xhc3NOYW1lLCBjbGFzc05hbWUgKSApCi0JCQkJCWVsZW0uY2xhc3NOYW1l
ICs9IChlbGVtLmNsYXNzTmFtZSA/ICIgIiA6ICIiKSArIGNsYXNzTmFtZTsKLQkJCX0pOwotCQl9
LAotCi0JCS8vIGludGVybmFsIG9ubHksIHVzZSByZW1vdmVDbGFzcygiY2xhc3MiKQotCQlyZW1v
dmU6IGZ1bmN0aW9uKCBlbGVtLCBjbGFzc05hbWVzICkgewotCQkJaWYgKGVsZW0ubm9kZVR5cGUg
PT0gMSkKLQkJCQllbGVtLmNsYXNzTmFtZSA9IGNsYXNzTmFtZXMgIT09IHVuZGVmaW5lZCA/Ci0J
CQkJCWpRdWVyeS5ncmVwKGVsZW0uY2xhc3NOYW1lLnNwbGl0KC9ccysvKSwgZnVuY3Rpb24oY2xh
c3NOYW1lKXsKLQkJCQkJCXJldHVybiAhalF1ZXJ5LmNsYXNzTmFtZS5oYXMoIGNsYXNzTmFtZXMs
IGNsYXNzTmFtZSApOwotCQkJCQl9KS5qb2luKCIgIikgOgotCQkJCQkiIjsKLQkJfSwKLQotCQkv
LyBpbnRlcm5hbCBvbmx5LCB1c2UgaGFzQ2xhc3MoImNsYXNzIikKLQkJaGFzOiBmdW5jdGlvbigg
ZWxlbSwgY2xhc3NOYW1lICkgewotCQkJcmV0dXJuIGVsZW0gJiYgalF1ZXJ5LmluQXJyYXkoIGNs
YXNzTmFtZSwgKGVsZW0uY2xhc3NOYW1lIHx8IGVsZW0pLnRvU3RyaW5nKCkuc3BsaXQoL1xzKy8p
ICkgPiAtMTsKLQkJfQotCX0sCi0KLQkvLyBBIG1ldGhvZCBmb3IgcXVpY2tseSBzd2FwcGluZyBp
bi9vdXQgQ1NTIHByb3BlcnRpZXMgdG8gZ2V0IGNvcnJlY3QgY2FsY3VsYXRpb25zCi0Jc3dhcDog
ZnVuY3Rpb24oIGVsZW0sIG9wdGlvbnMsIGNhbGxiYWNrICkgewotCQl2YXIgb2xkID0ge307Ci0J
CS8vIFJlbWVtYmVyIHRoZSBvbGQgdmFsdWVzLCBhbmQgaW5zZXJ0IHRoZSBuZXcgb25lcwotCQlm
b3IgKCB2YXIgbmFtZSBpbiBvcHRpb25zICkgewotCQkJb2xkWyBuYW1lIF0gPSBlbGVtLnN0eWxl
WyBuYW1lIF07Ci0JCQllbGVtLnN0eWxlWyBuYW1lIF0gPSBvcHRpb25zWyBuYW1lIF07Ci0JCX0K
LQotCQljYWxsYmFjay5jYWxsKCBlbGVtICk7Ci0KLQkJLy8gUmV2ZXJ0IHRoZSBvbGQgdmFsdWVz
Ci0JCWZvciAoIHZhciBuYW1lIGluIG9wdGlvbnMgKQotCQkJZWxlbS5zdHlsZVsgbmFtZSBdID0g
b2xkWyBuYW1lIF07Ci0JfSwKLQotCWNzczogZnVuY3Rpb24oIGVsZW0sIG5hbWUsIGZvcmNlLCBl
eHRyYSApIHsKLQkJaWYgKCBuYW1lID09ICJ3aWR0aCIgfHwgbmFtZSA9PSAiaGVpZ2h0IiApIHsK
LQkJCXZhciB2YWwsIHByb3BzID0geyBwb3NpdGlvbjogImFic29sdXRlIiwgdmlzaWJpbGl0eTog
ImhpZGRlbiIsIGRpc3BsYXk6ImJsb2NrIiB9LCB3aGljaCA9IG5hbWUgPT0gIndpZHRoIiA/IFsg
IkxlZnQiLCAiUmlnaHQiIF0gOiBbICJUb3AiLCAiQm90dG9tIiBdOwotCi0JCQlmdW5jdGlvbiBn
ZXRXSCgpIHsKLQkJCQl2YWwgPSBuYW1lID09ICJ3aWR0aCIgPyBlbGVtLm9mZnNldFdpZHRoIDog
ZWxlbS5vZmZzZXRIZWlnaHQ7Ci0KLQkJCQlpZiAoIGV4dHJhID09PSAiYm9yZGVyIiApCi0JCQkJ
CXJldHVybjsKLQotCQkJCWpRdWVyeS5lYWNoKCB3aGljaCwgZnVuY3Rpb24oKSB7Ci0JCQkJCWlm
ICggIWV4dHJhICkKLQkJCQkJCXZhbCAtPSBwYXJzZUZsb2F0KGpRdWVyeS5jdXJDU1MoIGVsZW0s
ICJwYWRkaW5nIiArIHRoaXMsIHRydWUpKSB8fCAwOwotCQkJCQlpZiAoIGV4dHJhID09PSAibWFy
Z2luIiApCi0JCQkJCQl2YWwgKz0gcGFyc2VGbG9hdChqUXVlcnkuY3VyQ1NTKCBlbGVtLCAibWFy
Z2luIiArIHRoaXMsIHRydWUpKSB8fCAwOwotCQkJCQllbHNlCi0JCQkJCQl2YWwgLT0gcGFyc2VG
bG9hdChqUXVlcnkuY3VyQ1NTKCBlbGVtLCAiYm9yZGVyIiArIHRoaXMgKyAiV2lkdGgiLCB0cnVl
KSkgfHwgMDsKLQkJCQl9KTsKLQkJCX0KLQotCQkJaWYgKCBlbGVtLm9mZnNldFdpZHRoICE9PSAw
ICkKLQkJCQlnZXRXSCgpOwotCQkJZWxzZQotCQkJCWpRdWVyeS5zd2FwKCBlbGVtLCBwcm9wcywg
Z2V0V0ggKTsKLQotCQkJcmV0dXJuIE1hdGgubWF4KDAsIE1hdGgucm91bmQodmFsKSk7Ci0JCX0K
LQotCQlyZXR1cm4galF1ZXJ5LmN1ckNTUyggZWxlbSwgbmFtZSwgZm9yY2UgKTsKLQl9LAotCi0J
Y3VyQ1NTOiBmdW5jdGlvbiggZWxlbSwgbmFtZSwgZm9yY2UgKSB7Ci0JCXZhciByZXQsIHN0eWxl
ID0gZWxlbS5zdHlsZTsKLQotCQkvLyBXZSBuZWVkIHRvIGhhbmRsZSBvcGFjaXR5IHNwZWNpYWwg
aW4gSUUKLQkJaWYgKCBuYW1lID09ICJvcGFjaXR5IiAmJiAhalF1ZXJ5LnN1cHBvcnQub3BhY2l0
eSApIHsKLQkJCXJldCA9IGpRdWVyeS5hdHRyKCBzdHlsZSwgIm9wYWNpdHkiICk7Ci0KLQkJCXJl
dHVybiByZXQgPT0gIiIgPwotCQkJCSIxIiA6Ci0JCQkJcmV0OwotCQl9Ci0KLQkJLy8gTWFrZSBz
dXJlIHdlJ3JlIHVzaW5nIHRoZSByaWdodCBuYW1lIGZvciBnZXR0aW5nIHRoZSBmbG9hdCB2YWx1
ZQotCQlpZiAoIG5hbWUubWF0Y2goIC9mbG9hdC9pICkgKQotCQkJbmFtZSA9IHN0eWxlRmxvYXQ7
Ci0KLQkJaWYgKCAhZm9yY2UgJiYgc3R5bGUgJiYgc3R5bGVbIG5hbWUgXSApCi0JCQlyZXQgPSBz
dHlsZVsgbmFtZSBdOwotCi0JCWVsc2UgaWYgKCBkZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxl
ICkgewotCi0JCQkvLyBPbmx5ICJmbG9hdCIgaXMgbmVlZGVkIGhlcmUKLQkJCWlmICggbmFtZS5t
YXRjaCggL2Zsb2F0L2kgKSApCi0JCQkJbmFtZSA9ICJmbG9hdCI7Ci0KLQkJCW5hbWUgPSBuYW1l
LnJlcGxhY2UoIC8oW0EtWl0pL2csICItJDEiICkudG9Mb3dlckNhc2UoKTsKLQotCQkJdmFyIGNv
bXB1dGVkU3R5bGUgPSBkZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKCBlbGVtLCBudWxsICk7
Ci0KLQkJCWlmICggY29tcHV0ZWRTdHlsZSApCi0JCQkJcmV0ID0gY29tcHV0ZWRTdHlsZS5nZXRQ
cm9wZXJ0eVZhbHVlKCBuYW1lICk7Ci0KLQkJCS8vIFdlIHNob3VsZCBhbHdheXMgZ2V0IGEgbnVt
YmVyIGJhY2sgZnJvbSBvcGFjaXR5Ci0JCQlpZiAoIG5hbWUgPT0gIm9wYWNpdHkiICYmIHJldCA9
PSAiIiApCi0JCQkJcmV0ID0gIjEiOwotCi0JCX0gZWxzZSBpZiAoIGVsZW0uY3VycmVudFN0eWxl
ICkgewotCQkJdmFyIGNhbWVsQ2FzZSA9IG5hbWUucmVwbGFjZSgvXC0oXHcpL2csIGZ1bmN0aW9u
KGFsbCwgbGV0dGVyKXsKLQkJCQlyZXR1cm4gbGV0dGVyLnRvVXBwZXJDYXNlKCk7Ci0JCQl9KTsK
LQotCQkJcmV0ID0gZWxlbS5jdXJyZW50U3R5bGVbIG5hbWUgXSB8fCBlbGVtLmN1cnJlbnRTdHls
ZVsgY2FtZWxDYXNlIF07Ci0KLQkJCS8vIEZyb20gdGhlIGF3ZXNvbWUgaGFjayBieSBEZWFuIEVk
d2FyZHMKLQkJCS8vIGh0dHA6Ly9lcmlrLmVhZS5uZXQvYXJjaGl2ZXMvMjAwNy8wNy8yNy8xOC41
NC4xNS8jY29tbWVudC0xMDIyOTEKLQotCQkJLy8gSWYgd2UncmUgbm90IGRlYWxpbmcgd2l0aCBh
IHJlZ3VsYXIgcGl4ZWwgbnVtYmVyCi0JCQkvLyBidXQgYSBudW1iZXIgdGhhdCBoYXMgYSB3ZWly
ZCBlbmRpbmcsIHdlIG5lZWQgdG8gY29udmVydCBpdCB0byBwaXhlbHMKLQkJCWlmICggIS9eXGQr
KHB4KT8kL2kudGVzdCggcmV0ICkgJiYgL15cZC8udGVzdCggcmV0ICkgKSB7Ci0JCQkJLy8gUmVt
ZW1iZXIgdGhlIG9yaWdpbmFsIHZhbHVlcwotCQkJCXZhciBsZWZ0ID0gc3R5bGUubGVmdCwgcnNM
ZWZ0ID0gZWxlbS5ydW50aW1lU3R5bGUubGVmdDsKLQotCQkJCS8vIFB1dCBpbiB0aGUgbmV3IHZh
bHVlcyB0byBnZXQgYSBjb21wdXRlZCB2YWx1ZSBvdXQKLQkJCQllbGVtLnJ1bnRpbWVTdHlsZS5s
ZWZ0ID0gZWxlbS5jdXJyZW50U3R5bGUubGVmdDsKLQkJCQlzdHlsZS5sZWZ0ID0gcmV0IHx8IDA7
Ci0JCQkJcmV0ID0gc3R5bGUucGl4ZWxMZWZ0ICsgInB4IjsKLQotCQkJCS8vIFJldmVydCB0aGUg
Y2hhbmdlZCB2YWx1ZXMKLQkJCQlzdHlsZS5sZWZ0ID0gbGVmdDsKLQkJCQllbGVtLnJ1bnRpbWVT
dHlsZS5sZWZ0ID0gcnNMZWZ0OwotCQkJfQotCQl9Ci0KLQkJcmV0dXJuIHJldDsKLQl9LAotCi0J
Y2xlYW46IGZ1bmN0aW9uKCBlbGVtcywgY29udGV4dCwgZnJhZ21lbnQgKSB7Ci0JCWNvbnRleHQg
PSBjb250ZXh0IHx8IGRvY3VtZW50OwotCi0JCS8vICFjb250ZXh0LmNyZWF0ZUVsZW1lbnQgZmFp
bHMgaW4gSUUgd2l0aCBhbiBlcnJvciBidXQgcmV0dXJucyB0eXBlb2YgJ29iamVjdCcKLQkJaWYg
KCB0eXBlb2YgY29udGV4dC5jcmVhdGVFbGVtZW50ID09PSAidW5kZWZpbmVkIiApCi0JCQljb250
ZXh0ID0gY29udGV4dC5vd25lckRvY3VtZW50IHx8IGNvbnRleHRbMF0gJiYgY29udGV4dFswXS5v
d25lckRvY3VtZW50IHx8IGRvY3VtZW50OwotCi0JCS8vIElmIGEgc2luZ2xlIHN0cmluZyBpcyBw
YXNzZWQgaW4gYW5kIGl0J3MgYSBzaW5nbGUgdGFnCi0JCS8vIGp1c3QgZG8gYSBjcmVhdGVFbGVt
ZW50IGFuZCBza2lwIHRoZSByZXN0Ci0JCWlmICggIWZyYWdtZW50ICYmIGVsZW1zLmxlbmd0aCA9
PT0gMSAmJiB0eXBlb2YgZWxlbXNbMF0gPT09ICJzdHJpbmciICkgewotCQkJdmFyIG1hdGNoID0g
L148KFx3KylccypcLz8+JC8uZXhlYyhlbGVtc1swXSk7Ci0JCQlpZiAoIG1hdGNoICkKLQkJCQly
ZXR1cm4gWyBjb250ZXh0LmNyZWF0ZUVsZW1lbnQoIG1hdGNoWzFdICkgXTsKLQkJfQotCi0JCXZh
ciByZXQgPSBbXSwgc2NyaXB0cyA9IFtdLCBkaXYgPSBjb250ZXh0LmNyZWF0ZUVsZW1lbnQoImRp
diIpOwotCi0JCWpRdWVyeS5lYWNoKGVsZW1zLCBmdW5jdGlvbihpLCBlbGVtKXsKLQkJCWlmICgg
dHlwZW9mIGVsZW0gPT09ICJudW1iZXIiICkKLQkJCQllbGVtICs9ICcnOwotCi0JCQlpZiAoICFl
bGVtICkKLQkJCQlyZXR1cm47Ci0KLQkJCS8vIENvbnZlcnQgaHRtbCBzdHJpbmcgaW50byBET00g
bm9kZXMKLQkJCWlmICggdHlwZW9mIGVsZW0gPT09ICJzdHJpbmciICkgewotCQkJCS8vIEZpeCAi
WEhUTUwiLXN0eWxlIHRhZ3MgaW4gYWxsIGJyb3dzZXJzCi0JCQkJZWxlbSA9IGVsZW0ucmVwbGFj
ZSgvKDwoXHcrKVtePl0qPylcLz4vZywgZnVuY3Rpb24oYWxsLCBmcm9udCwgdGFnKXsKLQkJCQkJ
cmV0dXJuIHRhZy5tYXRjaCgvXihhYmJyfGJyfGNvbHxpbWd8aW5wdXR8bGlua3xtZXRhfHBhcmFt
fGhyfGFyZWF8ZW1iZWQpJC9pKSA/Ci0JCQkJCQlhbGwgOgotCQkJCQkJZnJvbnQgKyAiPjwvIiAr
IHRhZyArICI+IjsKLQkJCQl9KTsKLQotCQkJCS8vIFRyaW0gd2hpdGVzcGFjZSwgb3RoZXJ3aXNl
IGluZGV4T2Ygd29uJ3Qgd29yayBhcyBleHBlY3RlZAotCQkJCXZhciB0YWdzID0gZWxlbS5yZXBs
YWNlKC9eXHMrLywgIiIpLnN1YnN0cmluZygwLCAxMCkudG9Mb3dlckNhc2UoKTsKLQotCQkJCXZh
ciB3cmFwID0KLQkJCQkJLy8gb3B0aW9uIG9yIG9wdGdyb3VwCi0JCQkJCSF0YWdzLmluZGV4T2Yo
IjxvcHQiKSAmJgotCQkJCQlbIDEsICI8c2VsZWN0IG11bHRpcGxlPSdtdWx0aXBsZSc+IiwgIjwv
c2VsZWN0PiIgXSB8fAotCi0JCQkJCSF0YWdzLmluZGV4T2YoIjxsZWciKSAmJgotCQkJCQlbIDEs
ICI8ZmllbGRzZXQ+IiwgIjwvZmllbGRzZXQ+IiBdIHx8Ci0KLQkJCQkJdGFncy5tYXRjaCgvXjwo
dGhlYWR8dGJvZHl8dGZvb3R8Y29sZ3xjYXApLykgJiYKLQkJCQkJWyAxLCAiPHRhYmxlPiIsICI8
L3RhYmxlPiIgXSB8fAotCi0JCQkJCSF0YWdzLmluZGV4T2YoIjx0ciIpICYmCi0JCQkJCVsgMiwg
Ijx0YWJsZT48dGJvZHk+IiwgIjwvdGJvZHk+PC90YWJsZT4iIF0gfHwKLQotCQkJCSAJLy8gPHRo
ZWFkPiBtYXRjaGVkIGFib3ZlCi0JCQkJCSghdGFncy5pbmRleE9mKCI8dGQiKSB8fCAhdGFncy5p
bmRleE9mKCI8dGgiKSkgJiYKLQkJCQkJWyAzLCAiPHRhYmxlPjx0Ym9keT48dHI+IiwgIjwvdHI+
PC90Ym9keT48L3RhYmxlPiIgXSB8fAotCi0JCQkJCSF0YWdzLmluZGV4T2YoIjxjb2wiKSAmJgot
CQkJCQlbIDIsICI8dGFibGU+PHRib2R5PjwvdGJvZHk+PGNvbGdyb3VwPiIsICI8L2NvbGdyb3Vw
PjwvdGFibGU+IiBdIHx8Ci0KLQkJCQkJLy8gSUUgY2FuJ3Qgc2VyaWFsaXplIDxsaW5rPiBhbmQg
PHNjcmlwdD4gdGFncyBub3JtYWxseQotCQkJCQkhalF1ZXJ5LnN1cHBvcnQuaHRtbFNlcmlhbGl6
ZSAmJgotCQkJCQlbIDEsICJkaXY8ZGl2PiIsICI8L2Rpdj4iIF0gfHwKLQotCQkJCQlbIDAsICIi
LCAiIiBdOwotCi0JCQkJLy8gR28gdG8gaHRtbCBhbmQgYmFjaywgdGhlbiBwZWVsIG9mZiBleHRy
YSB3cmFwcGVycwotCQkJCWRpdi5pbm5lckhUTUwgPSB3cmFwWzFdICsgZWxlbSArIHdyYXBbMl07
Ci0KLQkJCQkvLyBNb3ZlIHRvIHRoZSByaWdodCBkZXB0aAotCQkJCXdoaWxlICggd3JhcFswXS0t
ICkKLQkJCQkJZGl2ID0gZGl2Lmxhc3RDaGlsZDsKLQotCQkJCS8vIFJlbW92ZSBJRSdzIGF1dG9p
bnNlcnRlZCA8dGJvZHk+IGZyb20gdGFibGUgZnJhZ21lbnRzCi0JCQkJaWYgKCAhalF1ZXJ5LnN1
cHBvcnQudGJvZHkgKSB7Ci0KLQkJCQkJLy8gU3RyaW5nIHdhcyBhIDx0YWJsZT4sICptYXkqIGhh
dmUgc3B1cmlvdXMgPHRib2R5PgotCQkJCQl2YXIgaGFzQm9keSA9IC88dGJvZHkvaS50ZXN0KGVs
ZW0pLAotCQkJCQkJdGJvZHkgPSAhdGFncy5pbmRleE9mKCI8dGFibGUiKSAmJiAhaGFzQm9keSA/
Ci0JCQkJCQkJZGl2LmZpcnN0Q2hpbGQgJiYgZGl2LmZpcnN0Q2hpbGQuY2hpbGROb2RlcyA6Ci0K
LQkJCQkJCS8vIFN0cmluZyB3YXMgYSBiYXJlIDx0aGVhZD4gb3IgPHRmb290PgotCQkJCQkJd3Jh
cFsxXSA9PSAiPHRhYmxlPiIgJiYgIWhhc0JvZHkgPwotCQkJCQkJCWRpdi5jaGlsZE5vZGVzIDoK
LQkJCQkJCQlbXTsKLQotCQkJCQlmb3IgKCB2YXIgaiA9IHRib2R5Lmxlbmd0aCAtIDE7IGogPj0g
MCA7IC0taiApCi0JCQkJCQlpZiAoIGpRdWVyeS5ub2RlTmFtZSggdGJvZHlbIGogXSwgInRib2R5
IiApICYmICF0Ym9keVsgaiBdLmNoaWxkTm9kZXMubGVuZ3RoICkKLQkJCQkJCQl0Ym9keVsgaiBd
LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoIHRib2R5WyBqIF0gKTsKLQotCQkJCQl9Ci0KLQkJCQkv
LyBJRSBjb21wbGV0ZWx5IGtpbGxzIGxlYWRpbmcgd2hpdGVzcGFjZSB3aGVuIGlubmVySFRNTCBp
cyB1c2VkCi0JCQkJaWYgKCAhalF1ZXJ5LnN1cHBvcnQubGVhZGluZ1doaXRlc3BhY2UgJiYgL15c
cy8udGVzdCggZWxlbSApICkKLQkJCQkJZGl2Lmluc2VydEJlZm9yZSggY29udGV4dC5jcmVhdGVU
ZXh0Tm9kZSggZWxlbS5tYXRjaCgvXlxzKi8pWzBdICksIGRpdi5maXJzdENoaWxkICk7Ci0JCQkJ
Ci0JCQkJZWxlbSA9IGpRdWVyeS5tYWtlQXJyYXkoIGRpdi5jaGlsZE5vZGVzICk7Ci0JCQl9Ci0K
LQkJCWlmICggZWxlbS5ub2RlVHlwZSApCi0JCQkJcmV0LnB1c2goIGVsZW0gKTsKLQkJCWVsc2UK
LQkJCQlyZXQgPSBqUXVlcnkubWVyZ2UoIHJldCwgZWxlbSApOwotCi0JCX0pOwotCi0JCWlmICgg
ZnJhZ21lbnQgKSB7Ci0JCQlmb3IgKCB2YXIgaSA9IDA7IHJldFtpXTsgaSsrICkgewotCQkJCWlm
ICggalF1ZXJ5Lm5vZGVOYW1lKCByZXRbaV0sICJzY3JpcHQiICkgJiYgKCFyZXRbaV0udHlwZSB8
fCByZXRbaV0udHlwZS50b0xvd2VyQ2FzZSgpID09PSAidGV4dC9qYXZhc2NyaXB0IikgKSB7Ci0J
CQkJCXNjcmlwdHMucHVzaCggcmV0W2ldLnBhcmVudE5vZGUgPyByZXRbaV0ucGFyZW50Tm9kZS5y
ZW1vdmVDaGlsZCggcmV0W2ldICkgOiByZXRbaV0gKTsKLQkJCQl9IGVsc2UgewotCQkJCQlpZiAo
IHJldFtpXS5ub2RlVHlwZSA9PT0gMSApCi0JCQkJCQlyZXQuc3BsaWNlLmFwcGx5KCByZXQsIFtp
ICsgMSwgMF0uY29uY2F0KGpRdWVyeS5tYWtlQXJyYXkocmV0W2ldLmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJzY3JpcHQiKSkpICk7Ci0JCQkJCWZyYWdtZW50LmFwcGVuZENoaWxkKCByZXRbaV0gKTsK
LQkJCQl9Ci0JCQl9Ci0JCQkKLQkJCXJldHVybiBzY3JpcHRzOwotCQl9Ci0KLQkJcmV0dXJuIHJl
dDsKLQl9LAotCi0JYXR0cjogZnVuY3Rpb24oIGVsZW0sIG5hbWUsIHZhbHVlICkgewotCQkvLyBk
b24ndCBzZXQgYXR0cmlidXRlcyBvbiB0ZXh0IGFuZCBjb21tZW50IG5vZGVzCi0JCWlmICghZWxl
bSB8fCBlbGVtLm5vZGVUeXBlID09IDMgfHwgZWxlbS5ub2RlVHlwZSA9PSA4KQotCQkJcmV0dXJu
IHVuZGVmaW5lZDsKLQotCQl2YXIgbm90eG1sID0gIWpRdWVyeS5pc1hNTERvYyggZWxlbSApLAot
CQkJLy8gV2hldGhlciB3ZSBhcmUgc2V0dGluZyAob3IgZ2V0dGluZykKLQkJCXNldCA9IHZhbHVl
ICE9PSB1bmRlZmluZWQ7Ci0KLQkJLy8gVHJ5IHRvIG5vcm1hbGl6ZS9maXggdGhlIG5hbWUKLQkJ
bmFtZSA9IG5vdHhtbCAmJiBqUXVlcnkucHJvcHNbIG5hbWUgXSB8fCBuYW1lOwotCi0JCS8vIE9u
bHkgZG8gYWxsIHRoZSBmb2xsb3dpbmcgaWYgdGhpcyBpcyBhIG5vZGUgKGZhc3RlciBmb3Igc3R5
bGUpCi0JCS8vIElFIGVsZW0uZ2V0QXR0cmlidXRlIHBhc3NlcyBldmVuIGZvciBzdHlsZQotCQlp
ZiAoIGVsZW0udGFnTmFtZSApIHsKLQotCQkJLy8gVGhlc2UgYXR0cmlidXRlcyByZXF1aXJlIHNw
ZWNpYWwgdHJlYXRtZW50Ci0JCQl2YXIgc3BlY2lhbCA9IC9ocmVmfHNyY3xzdHlsZS8udGVzdCgg
bmFtZSApOwotCi0JCQkvLyBTYWZhcmkgbWlzLXJlcG9ydHMgdGhlIGRlZmF1bHQgc2VsZWN0ZWQg
cHJvcGVydHkgb2YgYSBoaWRkZW4gb3B0aW9uCi0JCQkvLyBBY2Nlc3NpbmcgdGhlIHBhcmVudCdz
IHNlbGVjdGVkSW5kZXggcHJvcGVydHkgZml4ZXMgaXQKLQkJCWlmICggbmFtZSA9PSAic2VsZWN0
ZWQiICYmIGVsZW0ucGFyZW50Tm9kZSApCi0JCQkJZWxlbS5wYXJlbnROb2RlLnNlbGVjdGVkSW5k
ZXg7Ci0KLQkJCS8vIElmIGFwcGxpY2FibGUsIGFjY2VzcyB0aGUgYXR0cmlidXRlIHZpYSB0aGUg
RE9NIDAgd2F5Ci0JCQlpZiAoIG5hbWUgaW4gZWxlbSAmJiBub3R4bWwgJiYgIXNwZWNpYWwgKSB7
Ci0JCQkJaWYgKCBzZXQgKXsKLQkJCQkJLy8gV2UgY2FuJ3QgYWxsb3cgdGhlIHR5cGUgcHJvcGVy
dHkgdG8gYmUgY2hhbmdlZCAoc2luY2UgaXQgY2F1c2VzIHByb2JsZW1zIGluIElFKQotCQkJCQlp
ZiAoIG5hbWUgPT0gInR5cGUiICYmIGpRdWVyeS5ub2RlTmFtZSggZWxlbSwgImlucHV0IiApICYm
IGVsZW0ucGFyZW50Tm9kZSApCi0JCQkJCQl0aHJvdyAidHlwZSBwcm9wZXJ0eSBjYW4ndCBiZSBj
aGFuZ2VkIjsKLQotCQkJCQllbGVtWyBuYW1lIF0gPSB2YWx1ZTsKLQkJCQl9Ci0KLQkJCQkvLyBi
cm93c2VycyBpbmRleCBlbGVtZW50cyBieSBpZC9uYW1lIG9uIGZvcm1zLCBnaXZlIHByaW9yaXR5
IHRvIGF0dHJpYnV0ZXMuCi0JCQkJaWYoIGpRdWVyeS5ub2RlTmFtZSggZWxlbSwgImZvcm0iICkg
JiYgZWxlbS5nZXRBdHRyaWJ1dGVOb2RlKG5hbWUpICkKLQkJCQkJcmV0dXJuIGVsZW0uZ2V0QXR0
cmlidXRlTm9kZSggbmFtZSApLm5vZGVWYWx1ZTsKLQotCQkJCS8vIGVsZW0udGFiSW5kZXggZG9l
c24ndCBhbHdheXMgcmV0dXJuIHRoZSBjb3JyZWN0IHZhbHVlIHdoZW4gaXQgaGFzbid0IGJlZW4g
ZXhwbGljaXRseSBzZXQKLQkJCQkvLyBodHRwOi8vZmx1aWRwcm9qZWN0Lm9yZy9ibG9nLzIwMDgv
MDEvMDkvZ2V0dGluZy1zZXR0aW5nLWFuZC1yZW1vdmluZy10YWJpbmRleC12YWx1ZXMtd2l0aC1q
YXZhc2NyaXB0LwotCQkJCWlmICggbmFtZSA9PSAidGFiSW5kZXgiICkgewotCQkJCQl2YXIgYXR0
cmlidXRlTm9kZSA9IGVsZW0uZ2V0QXR0cmlidXRlTm9kZSggInRhYkluZGV4IiApOwotCQkJCQly
ZXR1cm4gYXR0cmlidXRlTm9kZSAmJiBhdHRyaWJ1dGVOb2RlLnNwZWNpZmllZAotCQkJCQkJPyBh
dHRyaWJ1dGVOb2RlLnZhbHVlCi0JCQkJCQk6IGVsZW0ubm9kZU5hbWUubWF0Y2goLyhidXR0b258
aW5wdXR8b2JqZWN0fHNlbGVjdHx0ZXh0YXJlYSkvaSkKLQkJCQkJCQk/IDAKLQkJCQkJCQk6IGVs
ZW0ubm9kZU5hbWUubWF0Y2goL14oYXxhcmVhKSQvaSkgJiYgZWxlbS5ocmVmCi0JCQkJCQkJCT8g
MAotCQkJCQkJCQk6IHVuZGVmaW5lZDsKLQkJCQl9Ci0KLQkJCQlyZXR1cm4gZWxlbVsgbmFtZSBd
OwotCQkJfQotCi0JCQlpZiAoICFqUXVlcnkuc3VwcG9ydC5zdHlsZSAmJiBub3R4bWwgJiYgIG5h
bWUgPT0gInN0eWxlIiApCi0JCQkJcmV0dXJuIGpRdWVyeS5hdHRyKCBlbGVtLnN0eWxlLCAiY3Nz
VGV4dCIsIHZhbHVlICk7Ci0KLQkJCWlmICggc2V0ICkKLQkJCQkvLyBjb252ZXJ0IHRoZSB2YWx1
ZSB0byBhIHN0cmluZyAoYWxsIGJyb3dzZXJzIGRvIHRoaXMgYnV0IElFKSBzZWUgIzEwNzAKLQkJ
CQllbGVtLnNldEF0dHJpYnV0ZSggbmFtZSwgIiIgKyB2YWx1ZSApOwotCi0JCQl2YXIgYXR0ciA9
ICFqUXVlcnkuc3VwcG9ydC5ocmVmTm9ybWFsaXplZCAmJiBub3R4bWwgJiYgc3BlY2lhbAotCQkJ
CQkvLyBTb21lIGF0dHJpYnV0ZXMgcmVxdWlyZSBhIHNwZWNpYWwgY2FsbCBvbiBJRQotCQkJCQk/
IGVsZW0uZ2V0QXR0cmlidXRlKCBuYW1lLCAyICkKLQkJCQkJOiBlbGVtLmdldEF0dHJpYnV0ZSgg
bmFtZSApOwotCi0JCQkvLyBOb24tZXhpc3RlbnQgYXR0cmlidXRlcyByZXR1cm4gbnVsbCwgd2Ug
bm9ybWFsaXplIHRvIHVuZGVmaW5lZAotCQkJcmV0dXJuIGF0dHIgPT09IG51bGwgPyB1bmRlZmlu
ZWQgOiBhdHRyOwotCQl9Ci0KLQkJLy8gZWxlbSBpcyBhY3R1YWxseSBlbGVtLnN0eWxlIC4uLiBz
ZXQgdGhlIHN0eWxlCi0KLQkJLy8gSUUgdXNlcyBmaWx0ZXJzIGZvciBvcGFjaXR5Ci0JCWlmICgg
IWpRdWVyeS5zdXBwb3J0Lm9wYWNpdHkgJiYgbmFtZSA9PSAib3BhY2l0eSIgKSB7Ci0JCQlpZiAo
IHNldCApIHsKLQkJCQkvLyBJRSBoYXMgdHJvdWJsZSB3aXRoIG9wYWNpdHkgaWYgaXQgZG9lcyBu
b3QgaGF2ZSBsYXlvdXQKLQkJCQkvLyBGb3JjZSBpdCBieSBzZXR0aW5nIHRoZSB6b29tIGxldmVs
Ci0JCQkJZWxlbS56b29tID0gMTsKLQotCQkJCS8vIFNldCB0aGUgYWxwaGEgZmlsdGVyIHRvIHNl
dCB0aGUgb3BhY2l0eQotCQkJCWVsZW0uZmlsdGVyID0gKGVsZW0uZmlsdGVyIHx8ICIiKS5yZXBs
YWNlKCAvYWxwaGFcKFteKV0qXCkvLCAiIiApICsKLQkJCQkJKHBhcnNlSW50KCB2YWx1ZSApICsg
JycgPT0gIk5hTiIgPyAiIiA6ICJhbHBoYShvcGFjaXR5PSIgKyB2YWx1ZSAqIDEwMCArICIpIik7
Ci0JCQl9Ci0KLQkJCXJldHVybiBlbGVtLmZpbHRlciAmJiBlbGVtLmZpbHRlci5pbmRleE9mKCJv
cGFjaXR5PSIpID49IDAgPwotCQkJCShwYXJzZUZsb2F0KCBlbGVtLmZpbHRlci5tYXRjaCgvb3Bh
Y2l0eT0oW14pXSopLylbMV0gKSAvIDEwMCkgKyAnJzoKLQkJCQkiIjsKLQkJfQotCi0JCW5hbWUg
PSBuYW1lLnJlcGxhY2UoLy0oW2Etel0pL2lnLCBmdW5jdGlvbihhbGwsIGxldHRlcil7Ci0JCQly
ZXR1cm4gbGV0dGVyLnRvVXBwZXJDYXNlKCk7Ci0JCX0pOwotCi0JCWlmICggc2V0ICkKLQkJCWVs
ZW1bIG5hbWUgXSA9IHZhbHVlOwotCi0JCXJldHVybiBlbGVtWyBuYW1lIF07Ci0JfSwKLQotCXRy
aW06IGZ1bmN0aW9uKCB0ZXh0ICkgewotCQlyZXR1cm4gKHRleHQgfHwgIiIpLnJlcGxhY2UoIC9e
XHMrfFxzKyQvZywgIiIgKTsKLQl9LAotCi0JbWFrZUFycmF5OiBmdW5jdGlvbiggYXJyYXkgKSB7
Ci0JCXZhciByZXQgPSBbXTsKLQotCQlpZiggYXJyYXkgIT0gbnVsbCApewotCQkJdmFyIGkgPSBh
cnJheS5sZW5ndGg7Ci0JCQkvLyBUaGUgd2luZG93LCBzdHJpbmdzIChhbmQgZnVuY3Rpb25zKSBh
bHNvIGhhdmUgJ2xlbmd0aCcKLQkJCWlmKCBpID09IG51bGwgfHwgdHlwZW9mIGFycmF5ID09PSAi
c3RyaW5nIiB8fCBqUXVlcnkuaXNGdW5jdGlvbihhcnJheSkgfHwgYXJyYXkuc2V0SW50ZXJ2YWwg
KQotCQkJCXJldFswXSA9IGFycmF5OwotCQkJZWxzZQotCQkJCXdoaWxlKCBpICkKLQkJCQkJcmV0
Wy0taV0gPSBhcnJheVtpXTsKLQkJfQotCi0JCXJldHVybiByZXQ7Ci0JfSwKLQotCWluQXJyYXk6
IGZ1bmN0aW9uKCBlbGVtLCBhcnJheSApIHsKLQkJZm9yICggdmFyIGkgPSAwLCBsZW5ndGggPSBh
cnJheS5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKyApCi0JCS8vIFVzZSA9PT0gYmVjYXVzZSBvbiBJ
RSwgd2luZG93ID09IGRvY3VtZW50Ci0JCQlpZiAoIGFycmF5WyBpIF0gPT09IGVsZW0gKQotCQkJ
CXJldHVybiBpOwotCi0JCXJldHVybiAtMTsKLQl9LAotCi0JbWVyZ2U6IGZ1bmN0aW9uKCBmaXJz
dCwgc2Vjb25kICkgewotCQkvLyBXZSBoYXZlIHRvIGxvb3AgdGhpcyB3YXkgYmVjYXVzZSBJRSAm
IE9wZXJhIG92ZXJ3cml0ZSB0aGUgbGVuZ3RoCi0JCS8vIGV4cGFuZG8gb2YgZ2V0RWxlbWVudHNC
eVRhZ05hbWUKLQkJdmFyIGkgPSAwLCBlbGVtLCBwb3MgPSBmaXJzdC5sZW5ndGg7Ci0JCS8vIEFs
c28sIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIGNvcnJlY3QgZWxlbWVudHMgYXJlIGJl
aW5nIHJldHVybmVkCi0JCS8vIChJRSByZXR1cm5zIGNvbW1lbnQgbm9kZXMgaW4gYSAnKicgcXVl
cnkpCi0JCWlmICggIWpRdWVyeS5zdXBwb3J0LmdldEFsbCApIHsKLQkJCXdoaWxlICggKGVsZW0g
PSBzZWNvbmRbIGkrKyBdKSAhPSBudWxsICkKLQkJCQlpZiAoIGVsZW0ubm9kZVR5cGUgIT0gOCAp
Ci0JCQkJCWZpcnN0WyBwb3MrKyBdID0gZWxlbTsKLQotCQl9IGVsc2UKLQkJCXdoaWxlICggKGVs
ZW0gPSBzZWNvbmRbIGkrKyBdKSAhPSBudWxsICkKLQkJCQlmaXJzdFsgcG9zKysgXSA9IGVsZW07
Ci0KLQkJcmV0dXJuIGZpcnN0OwotCX0sCi0KLQl1bmlxdWU6IGZ1bmN0aW9uKCBhcnJheSApIHsK
LQkJdmFyIHJldCA9IFtdLCBkb25lID0ge307Ci0KLQkJdHJ5IHsKLQotCQkJZm9yICggdmFyIGkg
PSAwLCBsZW5ndGggPSBhcnJheS5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKyApIHsKLQkJCQl2YXIg
aWQgPSBqUXVlcnkuZGF0YSggYXJyYXlbIGkgXSApOwotCi0JCQkJaWYgKCAhZG9uZVsgaWQgXSAp
IHsKLQkJCQkJZG9uZVsgaWQgXSA9IHRydWU7Ci0JCQkJCXJldC5wdXNoKCBhcnJheVsgaSBdICk7
Ci0JCQkJfQotCQkJfQotCi0JCX0gY2F0Y2goIGUgKSB7Ci0JCQlyZXQgPSBhcnJheTsKLQkJfQot
Ci0JCXJldHVybiByZXQ7Ci0JfSwKLQotCWdyZXA6IGZ1bmN0aW9uKCBlbGVtcywgY2FsbGJhY2ss
IGludiApIHsKLQkJdmFyIHJldCA9IFtdOwotCi0JCS8vIEdvIHRocm91Z2ggdGhlIGFycmF5LCBv
bmx5IHNhdmluZyB0aGUgaXRlbXMKLQkJLy8gdGhhdCBwYXNzIHRoZSB2YWxpZGF0b3IgZnVuY3Rp
b24KLQkJZm9yICggdmFyIGkgPSAwLCBsZW5ndGggPSBlbGVtcy5sZW5ndGg7IGkgPCBsZW5ndGg7
IGkrKyApCi0JCQlpZiAoICFpbnYgIT0gIWNhbGxiYWNrKCBlbGVtc1sgaSBdLCBpICkgKQotCQkJ
CXJldC5wdXNoKCBlbGVtc1sgaSBdICk7Ci0KLQkJcmV0dXJuIHJldDsKLQl9LAotCi0JbWFwOiBm
dW5jdGlvbiggZWxlbXMsIGNhbGxiYWNrICkgewotCQl2YXIgcmV0ID0gW107Ci0KLQkJLy8gR28g
dGhyb3VnaCB0aGUgYXJyYXksIHRyYW5zbGF0aW5nIGVhY2ggb2YgdGhlIGl0ZW1zIHRvIHRoZWly
Ci0JCS8vIG5ldyB2YWx1ZSAob3IgdmFsdWVzKS4KLQkJZm9yICggdmFyIGkgPSAwLCBsZW5ndGgg
PSBlbGVtcy5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKyApIHsKLQkJCXZhciB2YWx1ZSA9IGNhbGxi
YWNrKCBlbGVtc1sgaSBdLCBpICk7Ci0KLQkJCWlmICggdmFsdWUgIT0gbnVsbCApCi0JCQkJcmV0
WyByZXQubGVuZ3RoIF0gPSB2YWx1ZTsKLQkJfQotCi0JCXJldHVybiByZXQuY29uY2F0LmFwcGx5
KCBbXSwgcmV0ICk7Ci0JfQotfSk7Ci0KLS8vIFVzZSBvZiBqUXVlcnkuYnJvd3NlciBpcyBkZXBy
ZWNhdGVkLgotLy8gSXQncyBpbmNsdWRlZCBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgYW5k
IHBsdWdpbnMsCi0vLyBhbHRob3VnaCB0aGV5IHNob3VsZCB3b3JrIHRvIG1pZ3JhdGUgYXdheS4K
LQotdmFyIHVzZXJBZ2VudCA9IG5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKTsKLQot
Ly8gRmlndXJlIG91dCB3aGF0IGJyb3dzZXIgaXMgYmVpbmcgdXNlZAotalF1ZXJ5LmJyb3dzZXIg
PSB7Ci0JdmVyc2lvbjogKHVzZXJBZ2VudC5tYXRjaCggLy4rKD86cnZ8aXR8cmF8aWUpW1wvOiBd
KFtcZC5dKykvICkgfHwgWzAsJzAnXSlbMV0sCi0Jc2FmYXJpOiAvd2Via2l0Ly50ZXN0KCB1c2Vy
QWdlbnQgKSwKLQlvcGVyYTogL29wZXJhLy50ZXN0KCB1c2VyQWdlbnQgKSwKLQltc2llOiAvbXNp
ZS8udGVzdCggdXNlckFnZW50ICkgJiYgIS9vcGVyYS8udGVzdCggdXNlckFnZW50ICksCi0JbW96
aWxsYTogL21vemlsbGEvLnRlc3QoIHVzZXJBZ2VudCApICYmICEvKGNvbXBhdGlibGV8d2Via2l0
KS8udGVzdCggdXNlckFnZW50ICkKLX07Ci0KLWpRdWVyeS5lYWNoKHsKLQlwYXJlbnQ6IGZ1bmN0
aW9uKGVsZW0pe3JldHVybiBlbGVtLnBhcmVudE5vZGU7fSwKLQlwYXJlbnRzOiBmdW5jdGlvbihl
bGVtKXtyZXR1cm4galF1ZXJ5LmRpcihlbGVtLCJwYXJlbnROb2RlIik7fSwKLQluZXh0OiBmdW5j
dGlvbihlbGVtKXtyZXR1cm4galF1ZXJ5Lm50aChlbGVtLDIsIm5leHRTaWJsaW5nIik7fSwKLQlw
cmV2OiBmdW5jdGlvbihlbGVtKXtyZXR1cm4galF1ZXJ5Lm50aChlbGVtLDIsInByZXZpb3VzU2li
bGluZyIpO30sCi0JbmV4dEFsbDogZnVuY3Rpb24oZWxlbSl7cmV0dXJuIGpRdWVyeS5kaXIoZWxl
bSwibmV4dFNpYmxpbmciKTt9LAotCXByZXZBbGw6IGZ1bmN0aW9uKGVsZW0pe3JldHVybiBqUXVl
cnkuZGlyKGVsZW0sInByZXZpb3VzU2libGluZyIpO30sCi0Jc2libGluZ3M6IGZ1bmN0aW9uKGVs
ZW0pe3JldHVybiBqUXVlcnkuc2libGluZyhlbGVtLnBhcmVudE5vZGUuZmlyc3RDaGlsZCxlbGVt
KTt9LAotCWNoaWxkcmVuOiBmdW5jdGlvbihlbGVtKXtyZXR1cm4galF1ZXJ5LnNpYmxpbmcoZWxl
bS5maXJzdENoaWxkKTt9LAotCWNvbnRlbnRzOiBmdW5jdGlvbihlbGVtKXtyZXR1cm4galF1ZXJ5
Lm5vZGVOYW1lKGVsZW0sImlmcmFtZSIpP2VsZW0uY29udGVudERvY3VtZW50fHxlbGVtLmNvbnRl
bnRXaW5kb3cuZG9jdW1lbnQ6alF1ZXJ5Lm1ha2VBcnJheShlbGVtLmNoaWxkTm9kZXMpO30KLX0s
IGZ1bmN0aW9uKG5hbWUsIGZuKXsKLQlqUXVlcnkuZm5bIG5hbWUgXSA9IGZ1bmN0aW9uKCBzZWxl
Y3RvciApIHsKLQkJdmFyIHJldCA9IGpRdWVyeS5tYXAoIHRoaXMsIGZuICk7Ci0KLQkJaWYgKCBz
ZWxlY3RvciAmJiB0eXBlb2Ygc2VsZWN0b3IgPT0gInN0cmluZyIgKQotCQkJcmV0ID0galF1ZXJ5
Lm11bHRpRmlsdGVyKCBzZWxlY3RvciwgcmV0ICk7Ci0KLQkJcmV0dXJuIHRoaXMucHVzaFN0YWNr
KCBqUXVlcnkudW5pcXVlKCByZXQgKSwgbmFtZSwgc2VsZWN0b3IgKTsKLQl9OwotfSk7Ci0KLWpR
dWVyeS5lYWNoKHsKLQlhcHBlbmRUbzogImFwcGVuZCIsCi0JcHJlcGVuZFRvOiAicHJlcGVuZCIs
Ci0JaW5zZXJ0QmVmb3JlOiAiYmVmb3JlIiwKLQlpbnNlcnRBZnRlcjogImFmdGVyIiwKLQlyZXBs
YWNlQWxsOiAicmVwbGFjZVdpdGgiCi19LCBmdW5jdGlvbihuYW1lLCBvcmlnaW5hbCl7Ci0JalF1
ZXJ5LmZuWyBuYW1lIF0gPSBmdW5jdGlvbiggc2VsZWN0b3IgKSB7Ci0JCXZhciByZXQgPSBbXSwg
aW5zZXJ0ID0galF1ZXJ5KCBzZWxlY3RvciApOwotCi0JCWZvciAoIHZhciBpID0gMCwgbCA9IGlu
c2VydC5sZW5ndGg7IGkgPCBsOyBpKysgKSB7Ci0JCQl2YXIgZWxlbXMgPSAoaSA+IDAgPyB0aGlz
LmNsb25lKHRydWUpIDogdGhpcykuZ2V0KCk7Ci0JCQlqUXVlcnkuZm5bIG9yaWdpbmFsIF0uYXBw
bHkoIGpRdWVyeShpbnNlcnRbaV0pLCBlbGVtcyApOwotCQkJcmV0ID0gcmV0LmNvbmNhdCggZWxl
bXMgKTsKLQkJfQotCi0JCXJldHVybiB0aGlzLnB1c2hTdGFjayggcmV0LCBuYW1lLCBzZWxlY3Rv
ciApOwotCX07Ci19KTsKLQotalF1ZXJ5LmVhY2goewotCXJlbW92ZUF0dHI6IGZ1bmN0aW9uKCBu
YW1lICkgewotCQlqUXVlcnkuYXR0ciggdGhpcywgbmFtZSwgIiIgKTsKLQkJaWYgKHRoaXMubm9k
ZVR5cGUgPT0gMSkKLQkJCXRoaXMucmVtb3ZlQXR0cmlidXRlKCBuYW1lICk7Ci0JfSwKLQotCWFk
ZENsYXNzOiBmdW5jdGlvbiggY2xhc3NOYW1lcyApIHsKLQkJalF1ZXJ5LmNsYXNzTmFtZS5hZGQo
IHRoaXMsIGNsYXNzTmFtZXMgKTsKLQl9LAotCi0JcmVtb3ZlQ2xhc3M6IGZ1bmN0aW9uKCBjbGFz
c05hbWVzICkgewotCQlqUXVlcnkuY2xhc3NOYW1lLnJlbW92ZSggdGhpcywgY2xhc3NOYW1lcyAp
OwotCX0sCi0KLQl0b2dnbGVDbGFzczogZnVuY3Rpb24oIGNsYXNzTmFtZXMsIHN0YXRlICkgewot
CQlpZiggdHlwZW9mIHN0YXRlICE9PSAiYm9vbGVhbiIgKQotCQkJc3RhdGUgPSAhalF1ZXJ5LmNs
YXNzTmFtZS5oYXMoIHRoaXMsIGNsYXNzTmFtZXMgKTsKLQkJalF1ZXJ5LmNsYXNzTmFtZVsgc3Rh
dGUgPyAiYWRkIiA6ICJyZW1vdmUiIF0oIHRoaXMsIGNsYXNzTmFtZXMgKTsKLQl9LAotCi0JcmVt
b3ZlOiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7Ci0JCWlmICggIXNlbGVjdG9yIHx8IGpRdWVyeS5m
aWx0ZXIoIHNlbGVjdG9yLCBbIHRoaXMgXSApLmxlbmd0aCApIHsKLQkJCS8vIFByZXZlbnQgbWVt
b3J5IGxlYWtzCi0JCQlqUXVlcnkoICIqIiwgdGhpcyApLmFkZChbdGhpc10pLmVhY2goZnVuY3Rp
b24oKXsKLQkJCQlqUXVlcnkuZXZlbnQucmVtb3ZlKHRoaXMpOwotCQkJCWpRdWVyeS5yZW1vdmVE
YXRhKHRoaXMpOwotCQkJfSk7Ci0JCQlpZiAodGhpcy5wYXJlbnROb2RlKQotCQkJCXRoaXMucGFy
ZW50Tm9kZS5yZW1vdmVDaGlsZCggdGhpcyApOwotCQl9Ci0JfSwKLQotCWVtcHR5OiBmdW5jdGlv
bigpIHsKLQkJLy8gUmVtb3ZlIGVsZW1lbnQgbm9kZXMgYW5kIHByZXZlbnQgbWVtb3J5IGxlYWtz
Ci0JCWpRdWVyeSh0aGlzKS5jaGlsZHJlbigpLnJlbW92ZSgpOwotCi0JCS8vIFJlbW92ZSBhbnkg
cmVtYWluaW5nIG5vZGVzCi0JCXdoaWxlICggdGhpcy5maXJzdENoaWxkICkKLQkJCXRoaXMucmVt
b3ZlQ2hpbGQoIHRoaXMuZmlyc3RDaGlsZCApOwotCX0KLX0sIGZ1bmN0aW9uKG5hbWUsIGZuKXsK
LQlqUXVlcnkuZm5bIG5hbWUgXSA9IGZ1bmN0aW9uKCl7Ci0JCXJldHVybiB0aGlzLmVhY2goIGZu
LCBhcmd1bWVudHMgKTsKLQl9OwotfSk7Ci0KLS8vIEhlbHBlciBmdW5jdGlvbiB1c2VkIGJ5IHRo
ZSBkaW1lbnNpb25zIGFuZCBvZmZzZXQgbW9kdWxlcwotZnVuY3Rpb24gbnVtKGVsZW0sIHByb3Ap
IHsKLQlyZXR1cm4gZWxlbVswXSAmJiBwYXJzZUludCggalF1ZXJ5LmN1ckNTUyhlbGVtWzBdLCBw
cm9wLCB0cnVlKSwgMTAgKSB8fCAwOwotfQotdmFyIGV4cGFuZG8gPSAialF1ZXJ5IiArIG5vdygp
LCB1dWlkID0gMCwgd2luZG93RGF0YSA9IHt9OwotCi1qUXVlcnkuZXh0ZW5kKHsKLQljYWNoZTog
e30sCi0KLQlkYXRhOiBmdW5jdGlvbiggZWxlbSwgbmFtZSwgZGF0YSApIHsKLQkJZWxlbSA9IGVs
ZW0gPT0gd2luZG93ID8KLQkJCXdpbmRvd0RhdGEgOgotCQkJZWxlbTsKLQotCQl2YXIgaWQgPSBl
bGVtWyBleHBhbmRvIF07Ci0KLQkJLy8gQ29tcHV0ZSBhIHVuaXF1ZSBJRCBmb3IgdGhlIGVsZW1l
bnQKLQkJaWYgKCAhaWQgKQotCQkJaWQgPSBlbGVtWyBleHBhbmRvIF0gPSArK3V1aWQ7Ci0KLQkJ
Ly8gT25seSBnZW5lcmF0ZSB0aGUgZGF0YSBjYWNoZSBpZiB3ZSdyZQotCQkvLyB0cnlpbmcgdG8g
YWNjZXNzIG9yIG1hbmlwdWxhdGUgaXQKLQkJaWYgKCBuYW1lICYmICFqUXVlcnkuY2FjaGVbIGlk
IF0gKQotCQkJalF1ZXJ5LmNhY2hlWyBpZCBdID0ge307Ci0KLQkJLy8gUHJldmVudCBvdmVycmlk
aW5nIHRoZSBuYW1lZCBjYWNoZSB3aXRoIHVuZGVmaW5lZCB2YWx1ZXMKLQkJaWYgKCBkYXRhICE9
PSB1bmRlZmluZWQgKQotCQkJalF1ZXJ5LmNhY2hlWyBpZCBdWyBuYW1lIF0gPSBkYXRhOwotCi0J
CS8vIFJldHVybiB0aGUgbmFtZWQgY2FjaGUgZGF0YSwgb3IgdGhlIElEIGZvciB0aGUgZWxlbWVu
dAotCQlyZXR1cm4gbmFtZSA/Ci0JCQlqUXVlcnkuY2FjaGVbIGlkIF1bIG5hbWUgXSA6Ci0JCQlp
ZDsKLQl9LAotCi0JcmVtb3ZlRGF0YTogZnVuY3Rpb24oIGVsZW0sIG5hbWUgKSB7Ci0JCWVsZW0g
PSBlbGVtID09IHdpbmRvdyA/Ci0JCQl3aW5kb3dEYXRhIDoKLQkJCWVsZW07Ci0KLQkJdmFyIGlk
ID0gZWxlbVsgZXhwYW5kbyBdOwotCi0JCS8vIElmIHdlIHdhbnQgdG8gcmVtb3ZlIGEgc3BlY2lm
aWMgc2VjdGlvbiBvZiB0aGUgZWxlbWVudCdzIGRhdGEKLQkJaWYgKCBuYW1lICkgewotCQkJaWYg
KCBqUXVlcnkuY2FjaGVbIGlkIF0gKSB7Ci0JCQkJLy8gUmVtb3ZlIHRoZSBzZWN0aW9uIG9mIGNh
Y2hlIGRhdGEKLQkJCQlkZWxldGUgalF1ZXJ5LmNhY2hlWyBpZCBdWyBuYW1lIF07Ci0KLQkJCQkv
LyBJZiB3ZSd2ZSByZW1vdmVkIGFsbCB0aGUgZGF0YSwgcmVtb3ZlIHRoZSBlbGVtZW50J3MgY2Fj
aGUKLQkJCQluYW1lID0gIiI7Ci0KLQkJCQlmb3IgKCBuYW1lIGluIGpRdWVyeS5jYWNoZVsgaWQg
XSApCi0JCQkJCWJyZWFrOwotCi0JCQkJaWYgKCAhbmFtZSApCi0JCQkJCWpRdWVyeS5yZW1vdmVE
YXRhKCBlbGVtICk7Ci0JCQl9Ci0KLQkJLy8gT3RoZXJ3aXNlLCB3ZSB3YW50IHRvIHJlbW92ZSBh
bGwgb2YgdGhlIGVsZW1lbnQncyBkYXRhCi0JCX0gZWxzZSB7Ci0JCQkvLyBDbGVhbiB1cCB0aGUg
ZWxlbWVudCBleHBhbmRvCi0JCQl0cnkgewotCQkJCWRlbGV0ZSBlbGVtWyBleHBhbmRvIF07Ci0J
CQl9IGNhdGNoKGUpewotCQkJCS8vIElFIGhhcyB0cm91YmxlIGRpcmVjdGx5IHJlbW92aW5nIHRo
ZSBleHBhbmRvCi0JCQkJLy8gYnV0IGl0J3Mgb2sgd2l0aCB1c2luZyByZW1vdmVBdHRyaWJ1dGUK
LQkJCQlpZiAoIGVsZW0ucmVtb3ZlQXR0cmlidXRlICkKLQkJCQkJZWxlbS5yZW1vdmVBdHRyaWJ1
dGUoIGV4cGFuZG8gKTsKLQkJCX0KLQotCQkJLy8gQ29tcGxldGVseSByZW1vdmUgdGhlIGRhdGEg
Y2FjaGUKLQkJCWRlbGV0ZSBqUXVlcnkuY2FjaGVbIGlkIF07Ci0JCX0KLQl9LAotCXF1ZXVlOiBm
dW5jdGlvbiggZWxlbSwgdHlwZSwgZGF0YSApIHsKLQkJaWYgKCBlbGVtICl7Ci0JCi0JCQl0eXBl
ID0gKHR5cGUgfHwgImZ4IikgKyAicXVldWUiOwotCQotCQkJdmFyIHEgPSBqUXVlcnkuZGF0YSgg
ZWxlbSwgdHlwZSApOwotCQotCQkJaWYgKCAhcSB8fCBqUXVlcnkuaXNBcnJheShkYXRhKSApCi0J
CQkJcSA9IGpRdWVyeS5kYXRhKCBlbGVtLCB0eXBlLCBqUXVlcnkubWFrZUFycmF5KGRhdGEpICk7
Ci0JCQllbHNlIGlmKCBkYXRhICkKLQkJCQlxLnB1c2goIGRhdGEgKTsKLQkKLQkJfQotCQlyZXR1
cm4gcTsKLQl9LAotCi0JZGVxdWV1ZTogZnVuY3Rpb24oIGVsZW0sIHR5cGUgKXsKLQkJdmFyIHF1
ZXVlID0galF1ZXJ5LnF1ZXVlKCBlbGVtLCB0eXBlICksCi0JCQlmbiA9IHF1ZXVlLnNoaWZ0KCk7
Ci0JCQotCQlpZiggIXR5cGUgfHwgdHlwZSA9PT0gImZ4IiApCi0JCQlmbiA9IHF1ZXVlWzBdOwot
CQkJCi0JCWlmKCBmbiAhPT0gdW5kZWZpbmVkICkKLQkJCWZuLmNhbGwoZWxlbSk7Ci0JfQotfSk7
Ci0KLWpRdWVyeS5mbi5leHRlbmQoewotCWRhdGE6IGZ1bmN0aW9uKCBrZXksIHZhbHVlICl7Ci0J
CXZhciBwYXJ0cyA9IGtleS5zcGxpdCgiLiIpOwotCQlwYXJ0c1sxXSA9IHBhcnRzWzFdID8gIi4i
ICsgcGFydHNbMV0gOiAiIjsKLQotCQlpZiAoIHZhbHVlID09PSB1bmRlZmluZWQgKSB7Ci0JCQl2
YXIgZGF0YSA9IHRoaXMudHJpZ2dlckhhbmRsZXIoImdldERhdGEiICsgcGFydHNbMV0gKyAiISIs
IFtwYXJ0c1swXV0pOwotCi0JCQlpZiAoIGRhdGEgPT09IHVuZGVmaW5lZCAmJiB0aGlzLmxlbmd0
aCApCi0JCQkJZGF0YSA9IGpRdWVyeS5kYXRhKCB0aGlzWzBdLCBrZXkgKTsKLQotCQkJcmV0dXJu
IGRhdGEgPT09IHVuZGVmaW5lZCAmJiBwYXJ0c1sxXSA/Ci0JCQkJdGhpcy5kYXRhKCBwYXJ0c1sw
XSApIDoKLQkJCQlkYXRhOwotCQl9IGVsc2UKLQkJCXJldHVybiB0aGlzLnRyaWdnZXIoInNldERh
dGEiICsgcGFydHNbMV0gKyAiISIsIFtwYXJ0c1swXSwgdmFsdWVdKS5lYWNoKGZ1bmN0aW9uKCl7
Ci0JCQkJalF1ZXJ5LmRhdGEoIHRoaXMsIGtleSwgdmFsdWUgKTsKLQkJCX0pOwotCX0sCi0KLQly
ZW1vdmVEYXRhOiBmdW5jdGlvbigga2V5ICl7Ci0JCXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24o
KXsKLQkJCWpRdWVyeS5yZW1vdmVEYXRhKCB0aGlzLCBrZXkgKTsKLQkJfSk7Ci0JfSwKLQlxdWV1
ZTogZnVuY3Rpb24odHlwZSwgZGF0YSl7Ci0JCWlmICggdHlwZW9mIHR5cGUgIT09ICJzdHJpbmci
ICkgewotCQkJZGF0YSA9IHR5cGU7Ci0JCQl0eXBlID0gImZ4IjsKLQkJfQotCi0JCWlmICggZGF0
YSA9PT0gdW5kZWZpbmVkICkKLQkJCXJldHVybiBqUXVlcnkucXVldWUoIHRoaXNbMF0sIHR5cGUg
KTsKLQotCQlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7Ci0JCQl2YXIgcXVldWUgPSBqUXVl
cnkucXVldWUoIHRoaXMsIHR5cGUsIGRhdGEgKTsKLQkJCQotCQkJIGlmKCB0eXBlID09ICJmeCIg
JiYgcXVldWUubGVuZ3RoID09IDEgKQotCQkJCXF1ZXVlWzBdLmNhbGwodGhpcyk7Ci0JCX0pOwot
CX0sCi0JZGVxdWV1ZTogZnVuY3Rpb24odHlwZSl7Ci0JCXJldHVybiB0aGlzLmVhY2goZnVuY3Rp
b24oKXsKLQkJCWpRdWVyeS5kZXF1ZXVlKCB0aGlzLCB0eXBlICk7Ci0JCX0pOwotCX0KLX0pOy8q
IQotICogU2l6emxlIENTUyBTZWxlY3RvciBFbmdpbmUgLSB2MC45LjMKLSAqICBDb3B5cmlnaHQg
MjAwOSwgVGhlIERvam8gRm91bmRhdGlvbgotICogIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQsIEJT
RCwgYW5kIEdQTCBMaWNlbnNlcy4KLSAqICBNb3JlIGluZm9ybWF0aW9uOiBodHRwOi8vc2l6emxl
anMuY29tLwotICovCi0oZnVuY3Rpb24oKXsKLQotdmFyIGNodW5rZXIgPSAvKCg/OlwoKD86XChb
XigpXStcKXxbXigpXSspK1wpfFxbKD86XFtbXltcXV0qXF18WyciXVteJyJdKlsnIl18W15bXF0n
Il0rKStcXXxcXC58W14gPit+LChcW1xcXSspK3xbPit+XSkoXHMqLFxzKik/L2csCi0JZG9uZSA9
IDAsCi0JdG9TdHJpbmcgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nOwotCi12YXIgU2l6emxl
ID0gZnVuY3Rpb24oc2VsZWN0b3IsIGNvbnRleHQsIHJlc3VsdHMsIHNlZWQpIHsKLQlyZXN1bHRz
ID0gcmVzdWx0cyB8fCBbXTsKLQljb250ZXh0ID0gY29udGV4dCB8fCBkb2N1bWVudDsKLQotCWlm
ICggY29udGV4dC5ub2RlVHlwZSAhPT0gMSAmJiBjb250ZXh0Lm5vZGVUeXBlICE9PSA5ICkKLQkJ
cmV0dXJuIFtdOwotCQotCWlmICggIXNlbGVjdG9yIHx8IHR5cGVvZiBzZWxlY3RvciAhPT0gInN0
cmluZyIgKSB7Ci0JCXJldHVybiByZXN1bHRzOwotCX0KLQotCXZhciBwYXJ0cyA9IFtdLCBtLCBz
ZXQsIGNoZWNrU2V0LCBjaGVjaywgbW9kZSwgZXh0cmEsIHBydW5lID0gdHJ1ZTsKLQkKLQkvLyBS
ZXNldCB0aGUgcG9zaXRpb24gb2YgdGhlIGNodW5rZXIgcmVnZXhwIChzdGFydCBmcm9tIGhlYWQp
Ci0JY2h1bmtlci5sYXN0SW5kZXggPSAwOwotCQotCXdoaWxlICggKG0gPSBjaHVua2VyLmV4ZWMo
c2VsZWN0b3IpKSAhPT0gbnVsbCApIHsKLQkJcGFydHMucHVzaCggbVsxXSApOwotCQkKLQkJaWYg
KCBtWzJdICkgewotCQkJZXh0cmEgPSBSZWdFeHAucmlnaHRDb250ZXh0OwotCQkJYnJlYWs7Ci0J
CX0KLQl9Ci0KLQlpZiAoIHBhcnRzLmxlbmd0aCA+IDEgJiYgb3JpZ1BPUy5leGVjKCBzZWxlY3Rv
ciApICkgewotCQlpZiAoIHBhcnRzLmxlbmd0aCA9PT0gMiAmJiBFeHByLnJlbGF0aXZlWyBwYXJ0
c1swXSBdICkgewotCQkJc2V0ID0gcG9zUHJvY2VzcyggcGFydHNbMF0gKyBwYXJ0c1sxXSwgY29u
dGV4dCApOwotCQl9IGVsc2UgewotCQkJc2V0ID0gRXhwci5yZWxhdGl2ZVsgcGFydHNbMF0gXSA/
Ci0JCQkJWyBjb250ZXh0IF0gOgotCQkJCVNpenpsZSggcGFydHMuc2hpZnQoKSwgY29udGV4dCAp
OwotCi0JCQl3aGlsZSAoIHBhcnRzLmxlbmd0aCApIHsKLQkJCQlzZWxlY3RvciA9IHBhcnRzLnNo
aWZ0KCk7Ci0KLQkJCQlpZiAoIEV4cHIucmVsYXRpdmVbIHNlbGVjdG9yIF0gKQotCQkJCQlzZWxl
Y3RvciArPSBwYXJ0cy5zaGlmdCgpOwotCi0JCQkJc2V0ID0gcG9zUHJvY2Vzcyggc2VsZWN0b3Is
IHNldCApOwotCQkJfQotCQl9Ci0JfSBlbHNlIHsKLQkJdmFyIHJldCA9IHNlZWQgPwotCQkJeyBl
eHByOiBwYXJ0cy5wb3AoKSwgc2V0OiBtYWtlQXJyYXkoc2VlZCkgfSA6Ci0JCQlTaXp6bGUuZmlu
ZCggcGFydHMucG9wKCksIHBhcnRzLmxlbmd0aCA9PT0gMSAmJiBjb250ZXh0LnBhcmVudE5vZGUg
PyBjb250ZXh0LnBhcmVudE5vZGUgOiBjb250ZXh0LCBpc1hNTChjb250ZXh0KSApOwotCQlzZXQg
PSBTaXp6bGUuZmlsdGVyKCByZXQuZXhwciwgcmV0LnNldCApOwotCi0JCWlmICggcGFydHMubGVu
Z3RoID4gMCApIHsKLQkJCWNoZWNrU2V0ID0gbWFrZUFycmF5KHNldCk7Ci0JCX0gZWxzZSB7Ci0J
CQlwcnVuZSA9IGZhbHNlOwotCQl9Ci0KLQkJd2hpbGUgKCBwYXJ0cy5sZW5ndGggKSB7Ci0JCQl2
YXIgY3VyID0gcGFydHMucG9wKCksIHBvcCA9IGN1cjsKLQotCQkJaWYgKCAhRXhwci5yZWxhdGl2
ZVsgY3VyIF0gKSB7Ci0JCQkJY3VyID0gIiI7Ci0JCQl9IGVsc2UgewotCQkJCXBvcCA9IHBhcnRz
LnBvcCgpOwotCQkJfQotCi0JCQlpZiAoIHBvcCA9PSBudWxsICkgewotCQkJCXBvcCA9IGNvbnRl
eHQ7Ci0JCQl9Ci0KLQkJCUV4cHIucmVsYXRpdmVbIGN1ciBdKCBjaGVja1NldCwgcG9wLCBpc1hN
TChjb250ZXh0KSApOwotCQl9Ci0JfQotCi0JaWYgKCAhY2hlY2tTZXQgKSB7Ci0JCWNoZWNrU2V0
ID0gc2V0OwotCX0KLQotCWlmICggIWNoZWNrU2V0ICkgewotCQl0aHJvdyAiU3ludGF4IGVycm9y
LCB1bnJlY29nbml6ZWQgZXhwcmVzc2lvbjogIiArIChjdXIgfHwgc2VsZWN0b3IpOwotCX0KLQot
CWlmICggdG9TdHJpbmcuY2FsbChjaGVja1NldCkgPT09ICJbb2JqZWN0IEFycmF5XSIgKSB7Ci0J
CWlmICggIXBydW5lICkgewotCQkJcmVzdWx0cy5wdXNoLmFwcGx5KCByZXN1bHRzLCBjaGVja1Nl
dCApOwotCQl9IGVsc2UgaWYgKCBjb250ZXh0Lm5vZGVUeXBlID09PSAxICkgewotCQkJZm9yICgg
dmFyIGkgPSAwOyBjaGVja1NldFtpXSAhPSBudWxsOyBpKysgKSB7Ci0JCQkJaWYgKCBjaGVja1Nl
dFtpXSAmJiAoY2hlY2tTZXRbaV0gPT09IHRydWUgfHwgY2hlY2tTZXRbaV0ubm9kZVR5cGUgPT09
IDEgJiYgY29udGFpbnMoY29udGV4dCwgY2hlY2tTZXRbaV0pKSApIHsKLQkJCQkJcmVzdWx0cy5w
dXNoKCBzZXRbaV0gKTsKLQkJCQl9Ci0JCQl9Ci0JCX0gZWxzZSB7Ci0JCQlmb3IgKCB2YXIgaSA9
IDA7IGNoZWNrU2V0W2ldICE9IG51bGw7IGkrKyApIHsKLQkJCQlpZiAoIGNoZWNrU2V0W2ldICYm
IGNoZWNrU2V0W2ldLm5vZGVUeXBlID09PSAxICkgewotCQkJCQlyZXN1bHRzLnB1c2goIHNldFtp
XSApOwotCQkJCX0KLQkJCX0KLQkJfQotCX0gZWxzZSB7Ci0JCW1ha2VBcnJheSggY2hlY2tTZXQs
IHJlc3VsdHMgKTsKLQl9Ci0KLQlpZiAoIGV4dHJhICkgewotCQlTaXp6bGUoIGV4dHJhLCBjb250
ZXh0LCByZXN1bHRzLCBzZWVkICk7Ci0KLQkJaWYgKCBzb3J0T3JkZXIgKSB7Ci0JCQloYXNEdXBs
aWNhdGUgPSBmYWxzZTsKLQkJCXJlc3VsdHMuc29ydChzb3J0T3JkZXIpOwotCi0JCQlpZiAoIGhh
c0R1cGxpY2F0ZSApIHsKLQkJCQlmb3IgKCB2YXIgaSA9IDE7IGkgPCByZXN1bHRzLmxlbmd0aDsg
aSsrICkgewotCQkJCQlpZiAoIHJlc3VsdHNbaV0gPT09IHJlc3VsdHNbaS0xXSApIHsKLQkJCQkJ
CXJlc3VsdHMuc3BsaWNlKGktLSwgMSk7Ci0JCQkJCX0KLQkJCQl9Ci0JCQl9Ci0JCX0KLQl9Ci0K
LQlyZXR1cm4gcmVzdWx0czsKLX07Ci0KLVNpenpsZS5tYXRjaGVzID0gZnVuY3Rpb24oZXhwciwg
c2V0KXsKLQlyZXR1cm4gU2l6emxlKGV4cHIsIG51bGwsIG51bGwsIHNldCk7Ci19OwotCi1TaXp6
bGUuZmluZCA9IGZ1bmN0aW9uKGV4cHIsIGNvbnRleHQsIGlzWE1MKXsKLQl2YXIgc2V0LCBtYXRj
aDsKLQotCWlmICggIWV4cHIgKSB7Ci0JCXJldHVybiBbXTsKLQl9Ci0KLQlmb3IgKCB2YXIgaSA9
IDAsIGwgPSBFeHByLm9yZGVyLmxlbmd0aDsgaSA8IGw7IGkrKyApIHsKLQkJdmFyIHR5cGUgPSBF
eHByLm9yZGVyW2ldLCBtYXRjaDsKLQkJCi0JCWlmICggKG1hdGNoID0gRXhwci5tYXRjaFsgdHlw
ZSBdLmV4ZWMoIGV4cHIgKSkgKSB7Ci0JCQl2YXIgbGVmdCA9IFJlZ0V4cC5sZWZ0Q29udGV4dDsK
LQotCQkJaWYgKCBsZWZ0LnN1YnN0ciggbGVmdC5sZW5ndGggLSAxICkgIT09ICJcXCIgKSB7Ci0J
CQkJbWF0Y2hbMV0gPSAobWF0Y2hbMV0gfHwgIiIpLnJlcGxhY2UoL1xcL2csICIiKTsKLQkJCQlz
ZXQgPSBFeHByLmZpbmRbIHR5cGUgXSggbWF0Y2gsIGNvbnRleHQsIGlzWE1MICk7Ci0JCQkJaWYg
KCBzZXQgIT0gbnVsbCApIHsKLQkJCQkJZXhwciA9IGV4cHIucmVwbGFjZSggRXhwci5tYXRjaFsg
dHlwZSBdLCAiIiApOwotCQkJCQlicmVhazsKLQkJCQl9Ci0JCQl9Ci0JCX0KLQl9Ci0KLQlpZiAo
ICFzZXQgKSB7Ci0JCXNldCA9IGNvbnRleHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKTsKLQl9
Ci0KLQlyZXR1cm4ge3NldDogc2V0LCBleHByOiBleHByfTsKLX07Ci0KLVNpenpsZS5maWx0ZXIg
PSBmdW5jdGlvbihleHByLCBzZXQsIGlucGxhY2UsIG5vdCl7Ci0JdmFyIG9sZCA9IGV4cHIsIHJl
c3VsdCA9IFtdLCBjdXJMb29wID0gc2V0LCBtYXRjaCwgYW55Rm91bmQsCi0JCWlzWE1MRmlsdGVy
ID0gc2V0ICYmIHNldFswXSAmJiBpc1hNTChzZXRbMF0pOwotCi0Jd2hpbGUgKCBleHByICYmIHNl
dC5sZW5ndGggKSB7Ci0JCWZvciAoIHZhciB0eXBlIGluIEV4cHIuZmlsdGVyICkgewotCQkJaWYg
KCAobWF0Y2ggPSBFeHByLm1hdGNoWyB0eXBlIF0uZXhlYyggZXhwciApKSAhPSBudWxsICkgewot
CQkJCXZhciBmaWx0ZXIgPSBFeHByLmZpbHRlclsgdHlwZSBdLCBmb3VuZCwgaXRlbTsKLQkJCQlh
bnlGb3VuZCA9IGZhbHNlOwotCi0JCQkJaWYgKCBjdXJMb29wID09IHJlc3VsdCApIHsKLQkJCQkJ
cmVzdWx0ID0gW107Ci0JCQkJfQotCi0JCQkJaWYgKCBFeHByLnByZUZpbHRlclsgdHlwZSBdICkg
ewotCQkJCQltYXRjaCA9IEV4cHIucHJlRmlsdGVyWyB0eXBlIF0oIG1hdGNoLCBjdXJMb29wLCBp
bnBsYWNlLCByZXN1bHQsIG5vdCwgaXNYTUxGaWx0ZXIgKTsKLQotCQkJCQlpZiAoICFtYXRjaCAp
IHsKLQkJCQkJCWFueUZvdW5kID0gZm91bmQgPSB0cnVlOwotCQkJCQl9IGVsc2UgaWYgKCBtYXRj
aCA9PT0gdHJ1ZSApIHsKLQkJCQkJCWNvbnRpbnVlOwotCQkJCQl9Ci0JCQkJfQotCi0JCQkJaWYg
KCBtYXRjaCApIHsKLQkJCQkJZm9yICggdmFyIGkgPSAwOyAoaXRlbSA9IGN1ckxvb3BbaV0pICE9
IG51bGw7IGkrKyApIHsKLQkJCQkJCWlmICggaXRlbSApIHsKLQkJCQkJCQlmb3VuZCA9IGZpbHRl
ciggaXRlbSwgbWF0Y2gsIGksIGN1ckxvb3AgKTsKLQkJCQkJCQl2YXIgcGFzcyA9IG5vdCBeICEh
Zm91bmQ7Ci0KLQkJCQkJCQlpZiAoIGlucGxhY2UgJiYgZm91bmQgIT0gbnVsbCApIHsKLQkJCQkJ
CQkJaWYgKCBwYXNzICkgewotCQkJCQkJCQkJYW55Rm91bmQgPSB0cnVlOwotCQkJCQkJCQl9IGVs
c2UgewotCQkJCQkJCQkJY3VyTG9vcFtpXSA9IGZhbHNlOwotCQkJCQkJCQl9Ci0JCQkJCQkJfSBl
bHNlIGlmICggcGFzcyApIHsKLQkJCQkJCQkJcmVzdWx0LnB1c2goIGl0ZW0gKTsKLQkJCQkJCQkJ
YW55Rm91bmQgPSB0cnVlOwotCQkJCQkJCX0KLQkJCQkJCX0KLQkJCQkJfQotCQkJCX0KLQotCQkJ
CWlmICggZm91bmQgIT09IHVuZGVmaW5lZCApIHsKLQkJCQkJaWYgKCAhaW5wbGFjZSApIHsKLQkJ
CQkJCWN1ckxvb3AgPSByZXN1bHQ7Ci0JCQkJCX0KLQotCQkJCQlleHByID0gZXhwci5yZXBsYWNl
KCBFeHByLm1hdGNoWyB0eXBlIF0sICIiICk7Ci0KLQkJCQkJaWYgKCAhYW55Rm91bmQgKSB7Ci0J
CQkJCQlyZXR1cm4gW107Ci0JCQkJCX0KLQotCQkJCQlicmVhazsKLQkJCQl9Ci0JCQl9Ci0JCX0K
LQotCQkvLyBJbXByb3BlciBleHByZXNzaW9uCi0JCWlmICggZXhwciA9PSBvbGQgKSB7Ci0JCQlp
ZiAoIGFueUZvdW5kID09IG51bGwgKSB7Ci0JCQkJdGhyb3cgIlN5bnRheCBlcnJvciwgdW5yZWNv
Z25pemVkIGV4cHJlc3Npb246ICIgKyBleHByOwotCQkJfSBlbHNlIHsKLQkJCQlicmVhazsKLQkJ
CX0KLQkJfQotCi0JCW9sZCA9IGV4cHI7Ci0JfQotCi0JcmV0dXJuIGN1ckxvb3A7Ci19OwotCi12
YXIgRXhwciA9IFNpenpsZS5zZWxlY3RvcnMgPSB7Ci0Jb3JkZXI6IFsgIklEIiwgIk5BTUUiLCAi
VEFHIiBdLAotCW1hdGNoOiB7Ci0JCUlEOiAvIygoPzpbXHdcdTAwYzAtXHVGRkZGXy1dfFxcLikr
KS8sCi0JCUNMQVNTOiAvXC4oKD86W1x3XHUwMGMwLVx1RkZGRl8tXXxcXC4pKykvLAotCQlOQU1F
OiAvXFtuYW1lPVsnIl0qKCg/Oltcd1x1MDBjMC1cdUZGRkZfLV18XFwuKSspWyciXSpcXS8sCi0J
CUFUVFI6IC9cW1xzKigoPzpbXHdcdTAwYzAtXHVGRkZGXy1dfFxcLikrKVxzKig/OihcUz89KVxz
KihbJyJdKikoLio/KVwzfClccypcXS8sCi0JCVRBRzogL14oKD86W1x3XHUwMGMwLVx1RkZGRlwq
Xy1dfFxcLikrKS8sCi0JCUNISUxEOiAvOihvbmx5fG50aHxsYXN0fGZpcnN0KS1jaGlsZCg/Olwo
KGV2ZW58b2RkfFtcZG4rLV0qKVwpKT8vLAotCQlQT1M6IC86KG50aHxlcXxndHxsdHxmaXJzdHxs
YXN0fGV2ZW58b2RkKSg/OlwoKFxkKilcKSk/KD89W14tXXwkKS8sCi0JCVBTRVVETzogLzooKD86
W1x3XHUwMGMwLVx1RkZGRl8tXXxcXC4pKykoPzpcKChbJyJdKikoKD86XChbXlwpXStcKXxbXlwy
XChcKV0qKSspXDJcKSk/LwotCX0sCi0JYXR0ck1hcDogewotCQkiY2xhc3MiOiAiY2xhc3NOYW1l
IiwKLQkJImZvciI6ICJodG1sRm9yIgotCX0sCi0JYXR0ckhhbmRsZTogewotCQlocmVmOiBmdW5j
dGlvbihlbGVtKXsKLQkJCXJldHVybiBlbGVtLmdldEF0dHJpYnV0ZSgiaHJlZiIpOwotCQl9Ci0J
fSwKLQlyZWxhdGl2ZTogewotCQkiKyI6IGZ1bmN0aW9uKGNoZWNrU2V0LCBwYXJ0LCBpc1hNTCl7
Ci0JCQl2YXIgaXNQYXJ0U3RyID0gdHlwZW9mIHBhcnQgPT09ICJzdHJpbmciLAotCQkJCWlzVGFn
ID0gaXNQYXJ0U3RyICYmICEvXFcvLnRlc3QocGFydCksCi0JCQkJaXNQYXJ0U3RyTm90VGFnID0g
aXNQYXJ0U3RyICYmICFpc1RhZzsKLQotCQkJaWYgKCBpc1RhZyAmJiAhaXNYTUwgKSB7Ci0JCQkJ
cGFydCA9IHBhcnQudG9VcHBlckNhc2UoKTsKLQkJCX0KLQotCQkJZm9yICggdmFyIGkgPSAwLCBs
ID0gY2hlY2tTZXQubGVuZ3RoLCBlbGVtOyBpIDwgbDsgaSsrICkgewotCQkJCWlmICggKGVsZW0g
PSBjaGVja1NldFtpXSkgKSB7Ci0JCQkJCXdoaWxlICggKGVsZW0gPSBlbGVtLnByZXZpb3VzU2li
bGluZykgJiYgZWxlbS5ub2RlVHlwZSAhPT0gMSApIHt9Ci0KLQkJCQkJY2hlY2tTZXRbaV0gPSBp
c1BhcnRTdHJOb3RUYWcgfHwgZWxlbSAmJiBlbGVtLm5vZGVOYW1lID09PSBwYXJ0ID8KLQkJCQkJ
CWVsZW0gfHwgZmFsc2UgOgotCQkJCQkJZWxlbSA9PT0gcGFydDsKLQkJCQl9Ci0JCQl9Ci0KLQkJ
CWlmICggaXNQYXJ0U3RyTm90VGFnICkgewotCQkJCVNpenpsZS5maWx0ZXIoIHBhcnQsIGNoZWNr
U2V0LCB0cnVlICk7Ci0JCQl9Ci0JCX0sCi0JCSI+IjogZnVuY3Rpb24oY2hlY2tTZXQsIHBhcnQs
IGlzWE1MKXsKLQkJCXZhciBpc1BhcnRTdHIgPSB0eXBlb2YgcGFydCA9PT0gInN0cmluZyI7Ci0K
LQkJCWlmICggaXNQYXJ0U3RyICYmICEvXFcvLnRlc3QocGFydCkgKSB7Ci0JCQkJcGFydCA9IGlz
WE1MID8gcGFydCA6IHBhcnQudG9VcHBlckNhc2UoKTsKLQotCQkJCWZvciAoIHZhciBpID0gMCwg
bCA9IGNoZWNrU2V0Lmxlbmd0aDsgaSA8IGw7IGkrKyApIHsKLQkJCQkJdmFyIGVsZW0gPSBjaGVj
a1NldFtpXTsKLQkJCQkJaWYgKCBlbGVtICkgewotCQkJCQkJdmFyIHBhcmVudCA9IGVsZW0ucGFy
ZW50Tm9kZTsKLQkJCQkJCWNoZWNrU2V0W2ldID0gcGFyZW50Lm5vZGVOYW1lID09PSBwYXJ0ID8g
cGFyZW50IDogZmFsc2U7Ci0JCQkJCX0KLQkJCQl9Ci0JCQl9IGVsc2UgewotCQkJCWZvciAoIHZh
ciBpID0gMCwgbCA9IGNoZWNrU2V0Lmxlbmd0aDsgaSA8IGw7IGkrKyApIHsKLQkJCQkJdmFyIGVs
ZW0gPSBjaGVja1NldFtpXTsKLQkJCQkJaWYgKCBlbGVtICkgewotCQkJCQkJY2hlY2tTZXRbaV0g
PSBpc1BhcnRTdHIgPwotCQkJCQkJCWVsZW0ucGFyZW50Tm9kZSA6Ci0JCQkJCQkJZWxlbS5wYXJl
bnROb2RlID09PSBwYXJ0OwotCQkJCQl9Ci0JCQkJfQotCi0JCQkJaWYgKCBpc1BhcnRTdHIgKSB7
Ci0JCQkJCVNpenpsZS5maWx0ZXIoIHBhcnQsIGNoZWNrU2V0LCB0cnVlICk7Ci0JCQkJfQotCQkJ
fQotCQl9LAotCQkiIjogZnVuY3Rpb24oY2hlY2tTZXQsIHBhcnQsIGlzWE1MKXsKLQkJCXZhciBk
b25lTmFtZSA9IGRvbmUrKywgY2hlY2tGbiA9IGRpckNoZWNrOwotCi0JCQlpZiAoICFwYXJ0Lm1h
dGNoKC9cVy8pICkgewotCQkJCXZhciBub2RlQ2hlY2sgPSBwYXJ0ID0gaXNYTUwgPyBwYXJ0IDog
cGFydC50b1VwcGVyQ2FzZSgpOwotCQkJCWNoZWNrRm4gPSBkaXJOb2RlQ2hlY2s7Ci0JCQl9Ci0K
LQkJCWNoZWNrRm4oInBhcmVudE5vZGUiLCBwYXJ0LCBkb25lTmFtZSwgY2hlY2tTZXQsIG5vZGVD
aGVjaywgaXNYTUwpOwotCQl9LAotCQkifiI6IGZ1bmN0aW9uKGNoZWNrU2V0LCBwYXJ0LCBpc1hN
TCl7Ci0JCQl2YXIgZG9uZU5hbWUgPSBkb25lKyssIGNoZWNrRm4gPSBkaXJDaGVjazsKLQotCQkJ
aWYgKCB0eXBlb2YgcGFydCA9PT0gInN0cmluZyIgJiYgIXBhcnQubWF0Y2goL1xXLykgKSB7Ci0J
CQkJdmFyIG5vZGVDaGVjayA9IHBhcnQgPSBpc1hNTCA/IHBhcnQgOiBwYXJ0LnRvVXBwZXJDYXNl
KCk7Ci0JCQkJY2hlY2tGbiA9IGRpck5vZGVDaGVjazsKLQkJCX0KLQotCQkJY2hlY2tGbigicHJl
dmlvdXNTaWJsaW5nIiwgcGFydCwgZG9uZU5hbWUsIGNoZWNrU2V0LCBub2RlQ2hlY2ssIGlzWE1M
KTsKLQkJfQotCX0sCi0JZmluZDogewotCQlJRDogZnVuY3Rpb24obWF0Y2gsIGNvbnRleHQsIGlz
WE1MKXsKLQkJCWlmICggdHlwZW9mIGNvbnRleHQuZ2V0RWxlbWVudEJ5SWQgIT09ICJ1bmRlZmlu
ZWQiICYmICFpc1hNTCApIHsKLQkJCQl2YXIgbSA9IGNvbnRleHQuZ2V0RWxlbWVudEJ5SWQobWF0
Y2hbMV0pOwotCQkJCXJldHVybiBtID8gW21dIDogW107Ci0JCQl9Ci0JCX0sCi0JCU5BTUU6IGZ1
bmN0aW9uKG1hdGNoLCBjb250ZXh0LCBpc1hNTCl7Ci0JCQlpZiAoIHR5cGVvZiBjb250ZXh0Lmdl
dEVsZW1lbnRzQnlOYW1lICE9PSAidW5kZWZpbmVkIiApIHsKLQkJCQl2YXIgcmV0ID0gW10sIHJl
c3VsdHMgPSBjb250ZXh0LmdldEVsZW1lbnRzQnlOYW1lKG1hdGNoWzFdKTsKLQotCQkJCWZvciAo
IHZhciBpID0gMCwgbCA9IHJlc3VsdHMubGVuZ3RoOyBpIDwgbDsgaSsrICkgewotCQkJCQlpZiAo
IHJlc3VsdHNbaV0uZ2V0QXR0cmlidXRlKCJuYW1lIikgPT09IG1hdGNoWzFdICkgewotCQkJCQkJ
cmV0LnB1c2goIHJlc3VsdHNbaV0gKTsKLQkJCQkJfQotCQkJCX0KLQotCQkJCXJldHVybiByZXQu
bGVuZ3RoID09PSAwID8gbnVsbCA6IHJldDsKLQkJCX0KLQkJfSwKLQkJVEFHOiBmdW5jdGlvbiht
YXRjaCwgY29udGV4dCl7Ci0JCQlyZXR1cm4gY29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSht
YXRjaFsxXSk7Ci0JCX0KLQl9LAotCXByZUZpbHRlcjogewotCQlDTEFTUzogZnVuY3Rpb24obWF0
Y2gsIGN1ckxvb3AsIGlucGxhY2UsIHJlc3VsdCwgbm90LCBpc1hNTCl7Ci0JCQltYXRjaCA9ICIg
IiArIG1hdGNoWzFdLnJlcGxhY2UoL1xcL2csICIiKSArICIgIjsKLQotCQkJaWYgKCBpc1hNTCAp
IHsKLQkJCQlyZXR1cm4gbWF0Y2g7Ci0JCQl9Ci0KLQkJCWZvciAoIHZhciBpID0gMCwgZWxlbTsg
KGVsZW0gPSBjdXJMb29wW2ldKSAhPSBudWxsOyBpKysgKSB7Ci0JCQkJaWYgKCBlbGVtICkgewot
CQkJCQlpZiAoIG5vdCBeIChlbGVtLmNsYXNzTmFtZSAmJiAoIiAiICsgZWxlbS5jbGFzc05hbWUg
KyAiICIpLmluZGV4T2YobWF0Y2gpID49IDApICkgewotCQkJCQkJaWYgKCAhaW5wbGFjZSApCi0J
CQkJCQkJcmVzdWx0LnB1c2goIGVsZW0gKTsKLQkJCQkJfSBlbHNlIGlmICggaW5wbGFjZSApIHsK
LQkJCQkJCWN1ckxvb3BbaV0gPSBmYWxzZTsKLQkJCQkJfQotCQkJCX0KLQkJCX0KLQotCQkJcmV0
dXJuIGZhbHNlOwotCQl9LAotCQlJRDogZnVuY3Rpb24obWF0Y2gpewotCQkJcmV0dXJuIG1hdGNo
WzFdLnJlcGxhY2UoL1xcL2csICIiKTsKLQkJfSwKLQkJVEFHOiBmdW5jdGlvbihtYXRjaCwgY3Vy
TG9vcCl7Ci0JCQlmb3IgKCB2YXIgaSA9IDA7IGN1ckxvb3BbaV0gPT09IGZhbHNlOyBpKysgKXt9
Ci0JCQlyZXR1cm4gY3VyTG9vcFtpXSAmJiBpc1hNTChjdXJMb29wW2ldKSA/IG1hdGNoWzFdIDog
bWF0Y2hbMV0udG9VcHBlckNhc2UoKTsKLQkJfSwKLQkJQ0hJTEQ6IGZ1bmN0aW9uKG1hdGNoKXsK
LQkJCWlmICggbWF0Y2hbMV0gPT0gIm50aCIgKSB7Ci0JCQkJLy8gcGFyc2UgZXF1YXRpb25zIGxp
a2UgJ2V2ZW4nLCAnb2RkJywgJzUnLCAnMm4nLCAnM24rMicsICc0bi0xJywgJy1uKzYnCi0JCQkJ
dmFyIHRlc3QgPSAvKC0/KShcZCopbigoPzpcK3wtKT9cZCopLy5leGVjKAotCQkJCQltYXRjaFsy
XSA9PSAiZXZlbiIgJiYgIjJuIiB8fCBtYXRjaFsyXSA9PSAib2RkIiAmJiAiMm4rMSIgfHwKLQkJ
CQkJIS9cRC8udGVzdCggbWF0Y2hbMl0gKSAmJiAiMG4rIiArIG1hdGNoWzJdIHx8IG1hdGNoWzJd
KTsKLQotCQkJCS8vIGNhbGN1bGF0ZSB0aGUgbnVtYmVycyAoZmlyc3QpbisobGFzdCkgaW5jbHVk
aW5nIGlmIHRoZXkgYXJlIG5lZ2F0aXZlCi0JCQkJbWF0Y2hbMl0gPSAodGVzdFsxXSArICh0ZXN0
WzJdIHx8IDEpKSAtIDA7Ci0JCQkJbWF0Y2hbM10gPSB0ZXN0WzNdIC0gMDsKLQkJCX0KLQotCQkJ
Ly8gVE9ETzogTW92ZSB0byBub3JtYWwgY2FjaGluZyBzeXN0ZW0KLQkJCW1hdGNoWzBdID0gZG9u
ZSsrOwotCi0JCQlyZXR1cm4gbWF0Y2g7Ci0JCX0sCi0JCUFUVFI6IGZ1bmN0aW9uKG1hdGNoLCBj
dXJMb29wLCBpbnBsYWNlLCByZXN1bHQsIG5vdCwgaXNYTUwpewotCQkJdmFyIG5hbWUgPSBtYXRj
aFsxXS5yZXBsYWNlKC9cXC9nLCAiIik7Ci0JCQkKLQkJCWlmICggIWlzWE1MICYmIEV4cHIuYXR0
ck1hcFtuYW1lXSApIHsKLQkJCQltYXRjaFsxXSA9IEV4cHIuYXR0ck1hcFtuYW1lXTsKLQkJCX0K
LQotCQkJaWYgKCBtYXRjaFsyXSA9PT0gIn49IiApIHsKLQkJCQltYXRjaFs0XSA9ICIgIiArIG1h
dGNoWzRdICsgIiAiOwotCQkJfQotCi0JCQlyZXR1cm4gbWF0Y2g7Ci0JCX0sCi0JCVBTRVVETzog
ZnVuY3Rpb24obWF0Y2gsIGN1ckxvb3AsIGlucGxhY2UsIHJlc3VsdCwgbm90KXsKLQkJCWlmICgg
bWF0Y2hbMV0gPT09ICJub3QiICkgewotCQkJCS8vIElmIHdlJ3JlIGRlYWxpbmcgd2l0aCBhIGNv
bXBsZXggZXhwcmVzc2lvbiwgb3IgYSBzaW1wbGUgb25lCi0JCQkJaWYgKCBtYXRjaFszXS5tYXRj
aChjaHVua2VyKS5sZW5ndGggPiAxIHx8IC9eXHcvLnRlc3QobWF0Y2hbM10pICkgewotCQkJCQlt
YXRjaFszXSA9IFNpenpsZShtYXRjaFszXSwgbnVsbCwgbnVsbCwgY3VyTG9vcCk7Ci0JCQkJfSBl
bHNlIHsKLQkJCQkJdmFyIHJldCA9IFNpenpsZS5maWx0ZXIobWF0Y2hbM10sIGN1ckxvb3AsIGlu
cGxhY2UsIHRydWUgXiBub3QpOwotCQkJCQlpZiAoICFpbnBsYWNlICkgewotCQkJCQkJcmVzdWx0
LnB1c2guYXBwbHkoIHJlc3VsdCwgcmV0ICk7Ci0JCQkJCX0KLQkJCQkJcmV0dXJuIGZhbHNlOwot
CQkJCX0KLQkJCX0gZWxzZSBpZiAoIEV4cHIubWF0Y2guUE9TLnRlc3QoIG1hdGNoWzBdICkgfHwg
RXhwci5tYXRjaC5DSElMRC50ZXN0KCBtYXRjaFswXSApICkgewotCQkJCXJldHVybiB0cnVlOwot
CQkJfQotCQkJCi0JCQlyZXR1cm4gbWF0Y2g7Ci0JCX0sCi0JCVBPUzogZnVuY3Rpb24obWF0Y2gp
ewotCQkJbWF0Y2gudW5zaGlmdCggdHJ1ZSApOwotCQkJcmV0dXJuIG1hdGNoOwotCQl9Ci0JfSwK
LQlmaWx0ZXJzOiB7Ci0JCWVuYWJsZWQ6IGZ1bmN0aW9uKGVsZW0pewotCQkJcmV0dXJuIGVsZW0u
ZGlzYWJsZWQgPT09IGZhbHNlICYmIGVsZW0udHlwZSAhPT0gImhpZGRlbiI7Ci0JCX0sCi0JCWRp
c2FibGVkOiBmdW5jdGlvbihlbGVtKXsKLQkJCXJldHVybiBlbGVtLmRpc2FibGVkID09PSB0cnVl
OwotCQl9LAotCQljaGVja2VkOiBmdW5jdGlvbihlbGVtKXsKLQkJCXJldHVybiBlbGVtLmNoZWNr
ZWQgPT09IHRydWU7Ci0JCX0sCi0JCXNlbGVjdGVkOiBmdW5jdGlvbihlbGVtKXsKLQkJCS8vIEFj
Y2Vzc2luZyB0aGlzIHByb3BlcnR5IG1ha2VzIHNlbGVjdGVkLWJ5LWRlZmF1bHQKLQkJCS8vIG9w
dGlvbnMgaW4gU2FmYXJpIHdvcmsgcHJvcGVybHkKLQkJCWVsZW0ucGFyZW50Tm9kZS5zZWxlY3Rl
ZEluZGV4OwotCQkJcmV0dXJuIGVsZW0uc2VsZWN0ZWQgPT09IHRydWU7Ci0JCX0sCi0JCXBhcmVu
dDogZnVuY3Rpb24oZWxlbSl7Ci0JCQlyZXR1cm4gISFlbGVtLmZpcnN0Q2hpbGQ7Ci0JCX0sCi0J
CWVtcHR5OiBmdW5jdGlvbihlbGVtKXsKLQkJCXJldHVybiAhZWxlbS5maXJzdENoaWxkOwotCQl9
LAotCQloYXM6IGZ1bmN0aW9uKGVsZW0sIGksIG1hdGNoKXsKLQkJCXJldHVybiAhIVNpenpsZSgg
bWF0Y2hbM10sIGVsZW0gKS5sZW5ndGg7Ci0JCX0sCi0JCWhlYWRlcjogZnVuY3Rpb24oZWxlbSl7
Ci0JCQlyZXR1cm4gL2hcZC9pLnRlc3QoIGVsZW0ubm9kZU5hbWUgKTsKLQkJfSwKLQkJdGV4dDog
ZnVuY3Rpb24oZWxlbSl7Ci0JCQlyZXR1cm4gInRleHQiID09PSBlbGVtLnR5cGU7Ci0JCX0sCi0J
CXJhZGlvOiBmdW5jdGlvbihlbGVtKXsKLQkJCXJldHVybiAicmFkaW8iID09PSBlbGVtLnR5cGU7
Ci0JCX0sCi0JCWNoZWNrYm94OiBmdW5jdGlvbihlbGVtKXsKLQkJCXJldHVybiAiY2hlY2tib3gi
ID09PSBlbGVtLnR5cGU7Ci0JCX0sCi0JCWZpbGU6IGZ1bmN0aW9uKGVsZW0pewotCQkJcmV0dXJu
ICJmaWxlIiA9PT0gZWxlbS50eXBlOwotCQl9LAotCQlwYXNzd29yZDogZnVuY3Rpb24oZWxlbSl7
Ci0JCQlyZXR1cm4gInBhc3N3b3JkIiA9PT0gZWxlbS50eXBlOwotCQl9LAotCQlzdWJtaXQ6IGZ1
bmN0aW9uKGVsZW0pewotCQkJcmV0dXJuICJzdWJtaXQiID09PSBlbGVtLnR5cGU7Ci0JCX0sCi0J
CWltYWdlOiBmdW5jdGlvbihlbGVtKXsKLQkJCXJldHVybiAiaW1hZ2UiID09PSBlbGVtLnR5cGU7
Ci0JCX0sCi0JCXJlc2V0OiBmdW5jdGlvbihlbGVtKXsKLQkJCXJldHVybiAicmVzZXQiID09PSBl
bGVtLnR5cGU7Ci0JCX0sCi0JCWJ1dHRvbjogZnVuY3Rpb24oZWxlbSl7Ci0JCQlyZXR1cm4gImJ1
dHRvbiIgPT09IGVsZW0udHlwZSB8fCBlbGVtLm5vZGVOYW1lLnRvVXBwZXJDYXNlKCkgPT09ICJC
VVRUT04iOwotCQl9LAotCQlpbnB1dDogZnVuY3Rpb24oZWxlbSl7Ci0JCQlyZXR1cm4gL2lucHV0
fHNlbGVjdHx0ZXh0YXJlYXxidXR0b24vaS50ZXN0KGVsZW0ubm9kZU5hbWUpOwotCQl9Ci0JfSwK
LQlzZXRGaWx0ZXJzOiB7Ci0JCWZpcnN0OiBmdW5jdGlvbihlbGVtLCBpKXsKLQkJCXJldHVybiBp
ID09PSAwOwotCQl9LAotCQlsYXN0OiBmdW5jdGlvbihlbGVtLCBpLCBtYXRjaCwgYXJyYXkpewot
CQkJcmV0dXJuIGkgPT09IGFycmF5Lmxlbmd0aCAtIDE7Ci0JCX0sCi0JCWV2ZW46IGZ1bmN0aW9u
KGVsZW0sIGkpewotCQkJcmV0dXJuIGkgJSAyID09PSAwOwotCQl9LAotCQlvZGQ6IGZ1bmN0aW9u
KGVsZW0sIGkpewotCQkJcmV0dXJuIGkgJSAyID09PSAxOwotCQl9LAotCQlsdDogZnVuY3Rpb24o
ZWxlbSwgaSwgbWF0Y2gpewotCQkJcmV0dXJuIGkgPCBtYXRjaFszXSAtIDA7Ci0JCX0sCi0JCWd0
OiBmdW5jdGlvbihlbGVtLCBpLCBtYXRjaCl7Ci0JCQlyZXR1cm4gaSA+IG1hdGNoWzNdIC0gMDsK
LQkJfSwKLQkJbnRoOiBmdW5jdGlvbihlbGVtLCBpLCBtYXRjaCl7Ci0JCQlyZXR1cm4gbWF0Y2hb
M10gLSAwID09IGk7Ci0JCX0sCi0JCWVxOiBmdW5jdGlvbihlbGVtLCBpLCBtYXRjaCl7Ci0JCQly
ZXR1cm4gbWF0Y2hbM10gLSAwID09IGk7Ci0JCX0KLQl9LAotCWZpbHRlcjogewotCQlQU0VVRE86
IGZ1bmN0aW9uKGVsZW0sIG1hdGNoLCBpLCBhcnJheSl7Ci0JCQl2YXIgbmFtZSA9IG1hdGNoWzFd
LCBmaWx0ZXIgPSBFeHByLmZpbHRlcnNbIG5hbWUgXTsKLQotCQkJaWYgKCBmaWx0ZXIgKSB7Ci0J
CQkJcmV0dXJuIGZpbHRlciggZWxlbSwgaSwgbWF0Y2gsIGFycmF5ICk7Ci0JCQl9IGVsc2UgaWYg
KCBuYW1lID09PSAiY29udGFpbnMiICkgewotCQkJCXJldHVybiAoZWxlbS50ZXh0Q29udGVudCB8
fCBlbGVtLmlubmVyVGV4dCB8fCAiIikuaW5kZXhPZihtYXRjaFszXSkgPj0gMDsKLQkJCX0gZWxz
ZSBpZiAoIG5hbWUgPT09ICJub3QiICkgewotCQkJCXZhciBub3QgPSBtYXRjaFszXTsKLQotCQkJ
CWZvciAoIHZhciBpID0gMCwgbCA9IG5vdC5sZW5ndGg7IGkgPCBsOyBpKysgKSB7Ci0JCQkJCWlm
ICggbm90W2ldID09PSBlbGVtICkgewotCQkJCQkJcmV0dXJuIGZhbHNlOwotCQkJCQl9Ci0JCQkJ
fQotCi0JCQkJcmV0dXJuIHRydWU7Ci0JCQl9Ci0JCX0sCi0JCUNISUxEOiBmdW5jdGlvbihlbGVt
LCBtYXRjaCl7Ci0JCQl2YXIgdHlwZSA9IG1hdGNoWzFdLCBub2RlID0gZWxlbTsKLQkJCXN3aXRj
aCAodHlwZSkgewotCQkJCWNhc2UgJ29ubHknOgotCQkJCWNhc2UgJ2ZpcnN0JzoKLQkJCQkJd2hp
bGUgKG5vZGUgPSBub2RlLnByZXZpb3VzU2libGluZykgIHsKLQkJCQkJCWlmICggbm9kZS5ub2Rl
VHlwZSA9PT0gMSApIHJldHVybiBmYWxzZTsKLQkJCQkJfQotCQkJCQlpZiAoIHR5cGUgPT0gJ2Zp
cnN0JykgcmV0dXJuIHRydWU7Ci0JCQkJCW5vZGUgPSBlbGVtOwotCQkJCWNhc2UgJ2xhc3QnOgot
CQkJCQl3aGlsZSAobm9kZSA9IG5vZGUubmV4dFNpYmxpbmcpICB7Ci0JCQkJCQlpZiAoIG5vZGUu
bm9kZVR5cGUgPT09IDEgKSByZXR1cm4gZmFsc2U7Ci0JCQkJCX0KLQkJCQkJcmV0dXJuIHRydWU7
Ci0JCQkJY2FzZSAnbnRoJzoKLQkJCQkJdmFyIGZpcnN0ID0gbWF0Y2hbMl0sIGxhc3QgPSBtYXRj
aFszXTsKLQotCQkJCQlpZiAoIGZpcnN0ID09IDEgJiYgbGFzdCA9PSAwICkgewotCQkJCQkJcmV0
dXJuIHRydWU7Ci0JCQkJCX0KLQkJCQkJCi0JCQkJCXZhciBkb25lTmFtZSA9IG1hdGNoWzBdLAot
CQkJCQkJcGFyZW50ID0gZWxlbS5wYXJlbnROb2RlOwotCQotCQkJCQlpZiAoIHBhcmVudCAmJiAo
cGFyZW50LnNpemNhY2hlICE9PSBkb25lTmFtZSB8fCAhZWxlbS5ub2RlSW5kZXgpICkgewotCQkJ
CQkJdmFyIGNvdW50ID0gMDsKLQkJCQkJCWZvciAoIG5vZGUgPSBwYXJlbnQuZmlyc3RDaGlsZDsg
bm9kZTsgbm9kZSA9IG5vZGUubmV4dFNpYmxpbmcgKSB7Ci0JCQkJCQkJaWYgKCBub2RlLm5vZGVU
eXBlID09PSAxICkgewotCQkJCQkJCQlub2RlLm5vZGVJbmRleCA9ICsrY291bnQ7Ci0JCQkJCQkJ
fQotCQkJCQkJfSAKLQkJCQkJCXBhcmVudC5zaXpjYWNoZSA9IGRvbmVOYW1lOwotCQkJCQl9Ci0J
CQkJCQotCQkJCQl2YXIgZGlmZiA9IGVsZW0ubm9kZUluZGV4IC0gbGFzdDsKLQkJCQkJaWYgKCBm
aXJzdCA9PSAwICkgewotCQkJCQkJcmV0dXJuIGRpZmYgPT0gMDsKLQkJCQkJfSBlbHNlIHsKLQkJ
CQkJCXJldHVybiAoIGRpZmYgJSBmaXJzdCA9PSAwICYmIGRpZmYgLyBmaXJzdCA+PSAwICk7Ci0J
CQkJCX0KLQkJCX0KLQkJfSwKLQkJSUQ6IGZ1bmN0aW9uKGVsZW0sIG1hdGNoKXsKLQkJCXJldHVy
biBlbGVtLm5vZGVUeXBlID09PSAxICYmIGVsZW0uZ2V0QXR0cmlidXRlKCJpZCIpID09PSBtYXRj
aDsKLQkJfSwKLQkJVEFHOiBmdW5jdGlvbihlbGVtLCBtYXRjaCl7Ci0JCQlyZXR1cm4gKG1hdGNo
ID09PSAiKiIgJiYgZWxlbS5ub2RlVHlwZSA9PT0gMSkgfHwgZWxlbS5ub2RlTmFtZSA9PT0gbWF0
Y2g7Ci0JCX0sCi0JCUNMQVNTOiBmdW5jdGlvbihlbGVtLCBtYXRjaCl7Ci0JCQlyZXR1cm4gKCIg
IiArIChlbGVtLmNsYXNzTmFtZSB8fCBlbGVtLmdldEF0dHJpYnV0ZSgiY2xhc3MiKSkgKyAiICIp
Ci0JCQkJLmluZGV4T2YoIG1hdGNoICkgPiAtMTsKLQkJfSwKLQkJQVRUUjogZnVuY3Rpb24oZWxl
bSwgbWF0Y2gpewotCQkJdmFyIG5hbWUgPSBtYXRjaFsxXSwKLQkJCQlyZXN1bHQgPSBFeHByLmF0
dHJIYW5kbGVbIG5hbWUgXSA/Ci0JCQkJCUV4cHIuYXR0ckhhbmRsZVsgbmFtZSBdKCBlbGVtICkg
OgotCQkJCQllbGVtWyBuYW1lIF0gIT0gbnVsbCA/Ci0JCQkJCQllbGVtWyBuYW1lIF0gOgotCQkJ
CQkJZWxlbS5nZXRBdHRyaWJ1dGUoIG5hbWUgKSwKLQkJCQl2YWx1ZSA9IHJlc3VsdCArICIiLAot
CQkJCXR5cGUgPSBtYXRjaFsyXSwKLQkJCQljaGVjayA9IG1hdGNoWzRdOwotCi0JCQlyZXR1cm4g
cmVzdWx0ID09IG51bGwgPwotCQkJCXR5cGUgPT09ICIhPSIgOgotCQkJCXR5cGUgPT09ICI9IiA/
Ci0JCQkJdmFsdWUgPT09IGNoZWNrIDoKLQkJCQl0eXBlID09PSAiKj0iID8KLQkJCQl2YWx1ZS5p
bmRleE9mKGNoZWNrKSA+PSAwIDoKLQkJCQl0eXBlID09PSAifj0iID8KLQkJCQkoIiAiICsgdmFs
dWUgKyAiICIpLmluZGV4T2YoY2hlY2spID49IDAgOgotCQkJCSFjaGVjayA/Ci0JCQkJdmFsdWUg
JiYgcmVzdWx0ICE9PSBmYWxzZSA6Ci0JCQkJdHlwZSA9PT0gIiE9IiA/Ci0JCQkJdmFsdWUgIT0g
Y2hlY2sgOgotCQkJCXR5cGUgPT09ICJePSIgPwotCQkJCXZhbHVlLmluZGV4T2YoY2hlY2spID09
PSAwIDoKLQkJCQl0eXBlID09PSAiJD0iID8KLQkJCQl2YWx1ZS5zdWJzdHIodmFsdWUubGVuZ3Ro
IC0gY2hlY2subGVuZ3RoKSA9PT0gY2hlY2sgOgotCQkJCXR5cGUgPT09ICJ8PSIgPwotCQkJCXZh
bHVlID09PSBjaGVjayB8fCB2YWx1ZS5zdWJzdHIoMCwgY2hlY2subGVuZ3RoICsgMSkgPT09IGNo
ZWNrICsgIi0iIDoKLQkJCQlmYWxzZTsKLQkJfSwKLQkJUE9TOiBmdW5jdGlvbihlbGVtLCBtYXRj
aCwgaSwgYXJyYXkpewotCQkJdmFyIG5hbWUgPSBtYXRjaFsyXSwgZmlsdGVyID0gRXhwci5zZXRG
aWx0ZXJzWyBuYW1lIF07Ci0KLQkJCWlmICggZmlsdGVyICkgewotCQkJCXJldHVybiBmaWx0ZXIo
IGVsZW0sIGksIG1hdGNoLCBhcnJheSApOwotCQkJfQotCQl9Ci0JfQotfTsKLQotdmFyIG9yaWdQ
T1MgPSBFeHByLm1hdGNoLlBPUzsKLQotZm9yICggdmFyIHR5cGUgaW4gRXhwci5tYXRjaCApIHsK
LQlFeHByLm1hdGNoWyB0eXBlIF0gPSBSZWdFeHAoIEV4cHIubWF0Y2hbIHR5cGUgXS5zb3VyY2Ug
KyAvKD8hW15cW10qXF0pKD8hW15cKF0qXCkpLy5zb3VyY2UgKTsKLX0KLQotdmFyIG1ha2VBcnJh
eSA9IGZ1bmN0aW9uKGFycmF5LCByZXN1bHRzKSB7Ci0JYXJyYXkgPSBBcnJheS5wcm90b3R5cGUu
c2xpY2UuY2FsbCggYXJyYXkgKTsKLQotCWlmICggcmVzdWx0cyApIHsKLQkJcmVzdWx0cy5wdXNo
LmFwcGx5KCByZXN1bHRzLCBhcnJheSApOwotCQlyZXR1cm4gcmVzdWx0czsKLQl9Ci0JCi0JcmV0
dXJuIGFycmF5OwotfTsKLQotLy8gUGVyZm9ybSBhIHNpbXBsZSBjaGVjayB0byBkZXRlcm1pbmUg
aWYgdGhlIGJyb3dzZXIgaXMgY2FwYWJsZSBvZgotLy8gY29udmVydGluZyBhIE5vZGVMaXN0IHRv
IGFuIGFycmF5IHVzaW5nIGJ1aWx0aW4gbWV0aG9kcy4KLXRyeSB7Ci0JQXJyYXkucHJvdG90eXBl
LnNsaWNlLmNhbGwoIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jaGlsZE5vZGVzICk7Ci0KLS8v
IFByb3ZpZGUgYSBmYWxsYmFjayBtZXRob2QgaWYgaXQgZG9lcyBub3Qgd29yawotfSBjYXRjaChl
KXsKLQltYWtlQXJyYXkgPSBmdW5jdGlvbihhcnJheSwgcmVzdWx0cykgewotCQl2YXIgcmV0ID0g
cmVzdWx0cyB8fCBbXTsKLQotCQlpZiAoIHRvU3RyaW5nLmNhbGwoYXJyYXkpID09PSAiW29iamVj
dCBBcnJheV0iICkgewotCQkJQXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkoIHJldCwgYXJyYXkg
KTsKLQkJfSBlbHNlIHsKLQkJCWlmICggdHlwZW9mIGFycmF5Lmxlbmd0aCA9PT0gIm51bWJlciIg
KSB7Ci0JCQkJZm9yICggdmFyIGkgPSAwLCBsID0gYXJyYXkubGVuZ3RoOyBpIDwgbDsgaSsrICkg
ewotCQkJCQlyZXQucHVzaCggYXJyYXlbaV0gKTsKLQkJCQl9Ci0JCQl9IGVsc2UgewotCQkJCWZv
ciAoIHZhciBpID0gMDsgYXJyYXlbaV07IGkrKyApIHsKLQkJCQkJcmV0LnB1c2goIGFycmF5W2ld
ICk7Ci0JCQkJfQotCQkJfQotCQl9Ci0KLQkJcmV0dXJuIHJldDsKLQl9OwotfQotCi12YXIgc29y
dE9yZGVyOwotCi1pZiAoIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jb21wYXJlRG9jdW1lbnRQ
b3NpdGlvbiApIHsKLQlzb3J0T3JkZXIgPSBmdW5jdGlvbiggYSwgYiApIHsKLQkJdmFyIHJldCA9
IGEuY29tcGFyZURvY3VtZW50UG9zaXRpb24oYikgJiA0ID8gLTEgOiBhID09PSBiID8gMCA6IDE7
Ci0JCWlmICggcmV0ID09PSAwICkgewotCQkJaGFzRHVwbGljYXRlID0gdHJ1ZTsKLQkJfQotCQly
ZXR1cm4gcmV0OwotCX07Ci19IGVsc2UgaWYgKCAic291cmNlSW5kZXgiIGluIGRvY3VtZW50LmRv
Y3VtZW50RWxlbWVudCApIHsKLQlzb3J0T3JkZXIgPSBmdW5jdGlvbiggYSwgYiApIHsKLQkJdmFy
IHJldCA9IGEuc291cmNlSW5kZXggLSBiLnNvdXJjZUluZGV4OwotCQlpZiAoIHJldCA9PT0gMCAp
IHsKLQkJCWhhc0R1cGxpY2F0ZSA9IHRydWU7Ci0JCX0KLQkJcmV0dXJuIHJldDsKLQl9OwotfSBl
bHNlIGlmICggZG9jdW1lbnQuY3JlYXRlUmFuZ2UgKSB7Ci0Jc29ydE9yZGVyID0gZnVuY3Rpb24o
IGEsIGIgKSB7Ci0JCXZhciBhUmFuZ2UgPSBhLm93bmVyRG9jdW1lbnQuY3JlYXRlUmFuZ2UoKSwg
YlJhbmdlID0gYi5vd25lckRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Ci0JCWFSYW5nZS5zZWxlY3RO
b2RlKGEpOwotCQlhUmFuZ2UuY29sbGFwc2UodHJ1ZSk7Ci0JCWJSYW5nZS5zZWxlY3ROb2RlKGIp
OwotCQliUmFuZ2UuY29sbGFwc2UodHJ1ZSk7Ci0JCXZhciByZXQgPSBhUmFuZ2UuY29tcGFyZUJv
dW5kYXJ5UG9pbnRzKFJhbmdlLlNUQVJUX1RPX0VORCwgYlJhbmdlKTsKLQkJaWYgKCByZXQgPT09
IDAgKSB7Ci0JCQloYXNEdXBsaWNhdGUgPSB0cnVlOwotCQl9Ci0JCXJldHVybiByZXQ7Ci0JfTsK
LX0KLQotLy8gQ2hlY2sgdG8gc2VlIGlmIHRoZSBicm93c2VyIHJldHVybnMgZWxlbWVudHMgYnkg
bmFtZSB3aGVuCi0vLyBxdWVyeWluZyBieSBnZXRFbGVtZW50QnlJZCAoYW5kIHByb3ZpZGUgYSB3
b3JrYXJvdW5kKQotKGZ1bmN0aW9uKCl7Ci0JLy8gV2UncmUgZ29pbmcgdG8gaW5qZWN0IGEgZmFr
ZSBpbnB1dCBlbGVtZW50IHdpdGggYSBzcGVjaWZpZWQgbmFtZQotCXZhciBmb3JtID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiZm9ybSIpLAotCQlpZCA9ICJzY3JpcHQiICsgKG5ldyBEYXRlKS5n
ZXRUaW1lKCk7Ci0JZm9ybS5pbm5lckhUTUwgPSAiPGlucHV0IG5hbWU9JyIgKyBpZCArICInLz4i
OwotCi0JLy8gSW5qZWN0IGl0IGludG8gdGhlIHJvb3QgZWxlbWVudCwgY2hlY2sgaXRzIHN0YXR1
cywgYW5kIHJlbW92ZSBpdCBxdWlja2x5Ci0JdmFyIHJvb3QgPSBkb2N1bWVudC5kb2N1bWVudEVs
ZW1lbnQ7Ci0Jcm9vdC5pbnNlcnRCZWZvcmUoIGZvcm0sIHJvb3QuZmlyc3RDaGlsZCApOwotCi0J
Ly8gVGhlIHdvcmthcm91bmQgaGFzIHRvIGRvIGFkZGl0aW9uYWwgY2hlY2tzIGFmdGVyIGEgZ2V0
RWxlbWVudEJ5SWQKLQkvLyBXaGljaCBzbG93cyB0aGluZ3MgZG93biBmb3Igb3RoZXIgYnJvd3Nl
cnMgKGhlbmNlIHRoZSBicmFuY2hpbmcpCi0JaWYgKCAhIWRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCBpZCApICkgewotCQlFeHByLmZpbmQuSUQgPSBmdW5jdGlvbihtYXRjaCwgY29udGV4dCwgaXNY
TUwpewotCQkJaWYgKCB0eXBlb2YgY29udGV4dC5nZXRFbGVtZW50QnlJZCAhPT0gInVuZGVmaW5l
ZCIgJiYgIWlzWE1MICkgewotCQkJCXZhciBtID0gY29udGV4dC5nZXRFbGVtZW50QnlJZChtYXRj
aFsxXSk7Ci0JCQkJcmV0dXJuIG0gPyBtLmlkID09PSBtYXRjaFsxXSB8fCB0eXBlb2YgbS5nZXRB
dHRyaWJ1dGVOb2RlICE9PSAidW5kZWZpbmVkIiAmJiBtLmdldEF0dHJpYnV0ZU5vZGUoImlkIiku
bm9kZVZhbHVlID09PSBtYXRjaFsxXSA/IFttXSA6IHVuZGVmaW5lZCA6IFtdOwotCQkJfQotCQl9
OwotCi0JCUV4cHIuZmlsdGVyLklEID0gZnVuY3Rpb24oZWxlbSwgbWF0Y2gpewotCQkJdmFyIG5v
ZGUgPSB0eXBlb2YgZWxlbS5nZXRBdHRyaWJ1dGVOb2RlICE9PSAidW5kZWZpbmVkIiAmJiBlbGVt
LmdldEF0dHJpYnV0ZU5vZGUoImlkIik7Ci0JCQlyZXR1cm4gZWxlbS5ub2RlVHlwZSA9PT0gMSAm
JiBub2RlICYmIG5vZGUubm9kZVZhbHVlID09PSBtYXRjaDsKLQkJfTsKLQl9Ci0KLQlyb290LnJl
bW92ZUNoaWxkKCBmb3JtICk7Ci19KSgpOwotCi0oZnVuY3Rpb24oKXsKLQkvLyBDaGVjayB0byBz
ZWUgaWYgdGhlIGJyb3dzZXIgcmV0dXJucyBvbmx5IGVsZW1lbnRzCi0JLy8gd2hlbiBkb2luZyBn
ZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpCi0KLQkvLyBDcmVhdGUgYSBmYWtlIGVsZW1lbnQKLQl2
YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0JZGl2LmFwcGVuZENoaWxk
KCBkb2N1bWVudC5jcmVhdGVDb21tZW50KCIiKSApOwotCi0JLy8gTWFrZSBzdXJlIG5vIGNvbW1l
bnRzIGFyZSBmb3VuZAotCWlmICggZGl2LmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIikubGVuZ3Ro
ID4gMCApIHsKLQkJRXhwci5maW5kLlRBRyA9IGZ1bmN0aW9uKG1hdGNoLCBjb250ZXh0KXsKLQkJ
CXZhciByZXN1bHRzID0gY29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZShtYXRjaFsxXSk7Ci0K
LQkJCS8vIEZpbHRlciBvdXQgcG9zc2libGUgY29tbWVudHMKLQkJCWlmICggbWF0Y2hbMV0gPT09
ICIqIiApIHsKLQkJCQl2YXIgdG1wID0gW107Ci0KLQkJCQlmb3IgKCB2YXIgaSA9IDA7IHJlc3Vs
dHNbaV07IGkrKyApIHsKLQkJCQkJaWYgKCByZXN1bHRzW2ldLm5vZGVUeXBlID09PSAxICkgewot
CQkJCQkJdG1wLnB1c2goIHJlc3VsdHNbaV0gKTsKLQkJCQkJfQotCQkJCX0KLQotCQkJCXJlc3Vs
dHMgPSB0bXA7Ci0JCQl9Ci0KLQkJCXJldHVybiByZXN1bHRzOwotCQl9OwotCX0KLQotCS8vIENo
ZWNrIHRvIHNlZSBpZiBhbiBhdHRyaWJ1dGUgcmV0dXJucyBub3JtYWxpemVkIGhyZWYgYXR0cmli
dXRlcwotCWRpdi5pbm5lckhUTUwgPSAiPGEgaHJlZj0nIyc+PC9hPiI7Ci0JaWYgKCBkaXYuZmly
c3RDaGlsZCAmJiB0eXBlb2YgZGl2LmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRlICE9PSAidW5kZWZp
bmVkIiAmJgotCQkJZGl2LmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRlKCJocmVmIikgIT09ICIjIiAp
IHsKLQkJRXhwci5hdHRySGFuZGxlLmhyZWYgPSBmdW5jdGlvbihlbGVtKXsKLQkJCXJldHVybiBl
bGVtLmdldEF0dHJpYnV0ZSgiaHJlZiIsIDIpOwotCQl9OwotCX0KLX0pKCk7Ci0KLWlmICggZG9j
dW1lbnQucXVlcnlTZWxlY3RvckFsbCApIChmdW5jdGlvbigpewotCXZhciBvbGRTaXp6bGUgPSBT
aXp6bGUsIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotCWRpdi5pbm5lckhU
TUwgPSAiPHAgY2xhc3M9J1RFU1QnPjwvcD4iOwotCi0JLy8gU2FmYXJpIGNhbid0IGhhbmRsZSB1
cHBlcmNhc2Ugb3IgdW5pY29kZSBjaGFyYWN0ZXJzIHdoZW4KLQkvLyBpbiBxdWlya3MgbW9kZS4K
LQlpZiAoIGRpdi5xdWVyeVNlbGVjdG9yQWxsICYmIGRpdi5xdWVyeVNlbGVjdG9yQWxsKCIuVEVT
VCIpLmxlbmd0aCA9PT0gMCApIHsKLQkJcmV0dXJuOwotCX0KLQkKLQlTaXp6bGUgPSBmdW5jdGlv
bihxdWVyeSwgY29udGV4dCwgZXh0cmEsIHNlZWQpewotCQljb250ZXh0ID0gY29udGV4dCB8fCBk
b2N1bWVudDsKLQotCQkvLyBPbmx5IHVzZSBxdWVyeVNlbGVjdG9yQWxsIG9uIG5vbi1YTUwgZG9j
dW1lbnRzCi0JCS8vIChJRCBzZWxlY3RvcnMgZG9uJ3Qgd29yayBpbiBub24tSFRNTCBkb2N1bWVu
dHMpCi0JCWlmICggIXNlZWQgJiYgY29udGV4dC5ub2RlVHlwZSA9PT0gOSAmJiAhaXNYTUwoY29u
dGV4dCkgKSB7Ci0JCQl0cnkgewotCQkJCXJldHVybiBtYWtlQXJyYXkoIGNvbnRleHQucXVlcnlT
ZWxlY3RvckFsbChxdWVyeSksIGV4dHJhICk7Ci0JCQl9IGNhdGNoKGUpe30KLQkJfQotCQkKLQkJ
cmV0dXJuIG9sZFNpenpsZShxdWVyeSwgY29udGV4dCwgZXh0cmEsIHNlZWQpOwotCX07Ci0KLQlT
aXp6bGUuZmluZCA9IG9sZFNpenpsZS5maW5kOwotCVNpenpsZS5maWx0ZXIgPSBvbGRTaXp6bGUu
ZmlsdGVyOwotCVNpenpsZS5zZWxlY3RvcnMgPSBvbGRTaXp6bGUuc2VsZWN0b3JzOwotCVNpenps
ZS5tYXRjaGVzID0gb2xkU2l6emxlLm1hdGNoZXM7Ci19KSgpOwotCi1pZiAoIGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlDbGFzc05hbWUgJiYgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmdldEVsZW1l
bnRzQnlDbGFzc05hbWUgKSAoZnVuY3Rpb24oKXsKLQl2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiZGl2Iik7Ci0JZGl2LmlubmVySFRNTCA9ICI8ZGl2IGNsYXNzPSd0ZXN0IGUnPjwv
ZGl2PjxkaXYgY2xhc3M9J3Rlc3QnPjwvZGl2PiI7Ci0KLQkvLyBPcGVyYSBjYW4ndCBmaW5kIGEg
c2Vjb25kIGNsYXNzbmFtZSAoaW4gOS42KQotCWlmICggZGl2LmdldEVsZW1lbnRzQnlDbGFzc05h
bWUoImUiKS5sZW5ndGggPT09IDAgKQotCQlyZXR1cm47Ci0KLQkvLyBTYWZhcmkgY2FjaGVzIGNs
YXNzIGF0dHJpYnV0ZXMsIGRvZXNuJ3QgY2F0Y2ggY2hhbmdlcyAoaW4gMy4yKQotCWRpdi5sYXN0
Q2hpbGQuY2xhc3NOYW1lID0gImUiOwotCi0JaWYgKCBkaXYuZ2V0RWxlbWVudHNCeUNsYXNzTmFt
ZSgiZSIpLmxlbmd0aCA9PT0gMSApCi0JCXJldHVybjsKLQotCUV4cHIub3JkZXIuc3BsaWNlKDEs
IDAsICJDTEFTUyIpOwotCUV4cHIuZmluZC5DTEFTUyA9IGZ1bmN0aW9uKG1hdGNoLCBjb250ZXh0
LCBpc1hNTCkgewotCQlpZiAoIHR5cGVvZiBjb250ZXh0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUg
IT09ICJ1bmRlZmluZWQiICYmICFpc1hNTCApIHsKLQkJCXJldHVybiBjb250ZXh0LmdldEVsZW1l
bnRzQnlDbGFzc05hbWUobWF0Y2hbMV0pOwotCQl9Ci0JfTsKLX0pKCk7Ci0KLWZ1bmN0aW9uIGRp
ck5vZGVDaGVjayggZGlyLCBjdXIsIGRvbmVOYW1lLCBjaGVja1NldCwgbm9kZUNoZWNrLCBpc1hN
TCApIHsKLQl2YXIgc2liRGlyID0gZGlyID09ICJwcmV2aW91c1NpYmxpbmciICYmICFpc1hNTDsK
LQlmb3IgKCB2YXIgaSA9IDAsIGwgPSBjaGVja1NldC5sZW5ndGg7IGkgPCBsOyBpKysgKSB7Ci0J
CXZhciBlbGVtID0gY2hlY2tTZXRbaV07Ci0JCWlmICggZWxlbSApIHsKLQkJCWlmICggc2liRGly
ICYmIGVsZW0ubm9kZVR5cGUgPT09IDEgKXsKLQkJCQllbGVtLnNpemNhY2hlID0gZG9uZU5hbWU7
Ci0JCQkJZWxlbS5zaXpzZXQgPSBpOwotCQkJfQotCQkJZWxlbSA9IGVsZW1bZGlyXTsKLQkJCXZh
ciBtYXRjaCA9IGZhbHNlOwotCi0JCQl3aGlsZSAoIGVsZW0gKSB7Ci0JCQkJaWYgKCBlbGVtLnNp
emNhY2hlID09PSBkb25lTmFtZSApIHsKLQkJCQkJbWF0Y2ggPSBjaGVja1NldFtlbGVtLnNpenNl
dF07Ci0JCQkJCWJyZWFrOwotCQkJCX0KLQotCQkJCWlmICggZWxlbS5ub2RlVHlwZSA9PT0gMSAm
JiAhaXNYTUwgKXsKLQkJCQkJZWxlbS5zaXpjYWNoZSA9IGRvbmVOYW1lOwotCQkJCQllbGVtLnNp
enNldCA9IGk7Ci0JCQkJfQotCi0JCQkJaWYgKCBlbGVtLm5vZGVOYW1lID09PSBjdXIgKSB7Ci0J
CQkJCW1hdGNoID0gZWxlbTsKLQkJCQkJYnJlYWs7Ci0JCQkJfQotCi0JCQkJZWxlbSA9IGVsZW1b
ZGlyXTsKLQkJCX0KLQotCQkJY2hlY2tTZXRbaV0gPSBtYXRjaDsKLQkJfQotCX0KLX0KLQotZnVu
Y3Rpb24gZGlyQ2hlY2soIGRpciwgY3VyLCBkb25lTmFtZSwgY2hlY2tTZXQsIG5vZGVDaGVjaywg
aXNYTUwgKSB7Ci0JdmFyIHNpYkRpciA9IGRpciA9PSAicHJldmlvdXNTaWJsaW5nIiAmJiAhaXNY
TUw7Ci0JZm9yICggdmFyIGkgPSAwLCBsID0gY2hlY2tTZXQubGVuZ3RoOyBpIDwgbDsgaSsrICkg
ewotCQl2YXIgZWxlbSA9IGNoZWNrU2V0W2ldOwotCQlpZiAoIGVsZW0gKSB7Ci0JCQlpZiAoIHNp
YkRpciAmJiBlbGVtLm5vZGVUeXBlID09PSAxICkgewotCQkJCWVsZW0uc2l6Y2FjaGUgPSBkb25l
TmFtZTsKLQkJCQllbGVtLnNpenNldCA9IGk7Ci0JCQl9Ci0JCQllbGVtID0gZWxlbVtkaXJdOwot
CQkJdmFyIG1hdGNoID0gZmFsc2U7Ci0KLQkJCXdoaWxlICggZWxlbSApIHsKLQkJCQlpZiAoIGVs
ZW0uc2l6Y2FjaGUgPT09IGRvbmVOYW1lICkgewotCQkJCQltYXRjaCA9IGNoZWNrU2V0W2VsZW0u
c2l6c2V0XTsKLQkJCQkJYnJlYWs7Ci0JCQkJfQotCi0JCQkJaWYgKCBlbGVtLm5vZGVUeXBlID09
PSAxICkgewotCQkJCQlpZiAoICFpc1hNTCApIHsKLQkJCQkJCWVsZW0uc2l6Y2FjaGUgPSBkb25l
TmFtZTsKLQkJCQkJCWVsZW0uc2l6c2V0ID0gaTsKLQkJCQkJfQotCQkJCQlpZiAoIHR5cGVvZiBj
dXIgIT09ICJzdHJpbmciICkgewotCQkJCQkJaWYgKCBlbGVtID09PSBjdXIgKSB7Ci0JCQkJCQkJ
bWF0Y2ggPSB0cnVlOwotCQkJCQkJCWJyZWFrOwotCQkJCQkJfQotCi0JCQkJCX0gZWxzZSBpZiAo
IFNpenpsZS5maWx0ZXIoIGN1ciwgW2VsZW1dICkubGVuZ3RoID4gMCApIHsKLQkJCQkJCW1hdGNo
ID0gZWxlbTsKLQkJCQkJCWJyZWFrOwotCQkJCQl9Ci0JCQkJfQotCi0JCQkJZWxlbSA9IGVsZW1b
ZGlyXTsKLQkJCX0KLQotCQkJY2hlY2tTZXRbaV0gPSBtYXRjaDsKLQkJfQotCX0KLX0KLQotdmFy
IGNvbnRhaW5zID0gZG9jdW1lbnQuY29tcGFyZURvY3VtZW50UG9zaXRpb24gPyAgZnVuY3Rpb24o
YSwgYil7Ci0JcmV0dXJuIGEuY29tcGFyZURvY3VtZW50UG9zaXRpb24oYikgJiAxNjsKLX0gOiBm
dW5jdGlvbihhLCBiKXsKLQlyZXR1cm4gYSAhPT0gYiAmJiAoYS5jb250YWlucyA/IGEuY29udGFp
bnMoYikgOiB0cnVlKTsKLX07Ci0KLXZhciBpc1hNTCA9IGZ1bmN0aW9uKGVsZW0pewotCXJldHVy
biBlbGVtLm5vZGVUeXBlID09PSA5ICYmIGVsZW0uZG9jdW1lbnRFbGVtZW50Lm5vZGVOYW1lICE9
PSAiSFRNTCIgfHwKLQkJISFlbGVtLm93bmVyRG9jdW1lbnQgJiYgaXNYTUwoIGVsZW0ub3duZXJE
b2N1bWVudCApOwotfTsKLQotdmFyIHBvc1Byb2Nlc3MgPSBmdW5jdGlvbihzZWxlY3RvciwgY29u
dGV4dCl7Ci0JdmFyIHRtcFNldCA9IFtdLCBsYXRlciA9ICIiLCBtYXRjaCwKLQkJcm9vdCA9IGNv
bnRleHQubm9kZVR5cGUgPyBbY29udGV4dF0gOiBjb250ZXh0OwotCi0JLy8gUG9zaXRpb24gc2Vs
ZWN0b3JzIG11c3QgYmUgZG9uZSBhZnRlciB0aGUgZmlsdGVyCi0JLy8gQW5kIHNvIG11c3QgOm5v
dChwb3NpdGlvbmFsKSBzbyB3ZSBtb3ZlIGFsbCBQU0VVRE9zIHRvIHRoZSBlbmQKLQl3aGlsZSAo
IChtYXRjaCA9IEV4cHIubWF0Y2guUFNFVURPLmV4ZWMoIHNlbGVjdG9yICkpICkgewotCQlsYXRl
ciArPSBtYXRjaFswXTsKLQkJc2VsZWN0b3IgPSBzZWxlY3Rvci5yZXBsYWNlKCBFeHByLm1hdGNo
LlBTRVVETywgIiIgKTsKLQl9Ci0KLQlzZWxlY3RvciA9IEV4cHIucmVsYXRpdmVbc2VsZWN0b3Jd
ID8gc2VsZWN0b3IgKyAiKiIgOiBzZWxlY3RvcjsKLQotCWZvciAoIHZhciBpID0gMCwgbCA9IHJv
b3QubGVuZ3RoOyBpIDwgbDsgaSsrICkgewotCQlTaXp6bGUoIHNlbGVjdG9yLCByb290W2ldLCB0
bXBTZXQgKTsKLQl9Ci0KLQlyZXR1cm4gU2l6emxlLmZpbHRlciggbGF0ZXIsIHRtcFNldCApOwot
fTsKLQotLy8gRVhQT1NFCi1qUXVlcnkuZmluZCA9IFNpenpsZTsKLWpRdWVyeS5maWx0ZXIgPSBT
aXp6bGUuZmlsdGVyOwotalF1ZXJ5LmV4cHIgPSBTaXp6bGUuc2VsZWN0b3JzOwotalF1ZXJ5LmV4
cHJbIjoiXSA9IGpRdWVyeS5leHByLmZpbHRlcnM7Ci0KLVNpenpsZS5zZWxlY3RvcnMuZmlsdGVy
cy5oaWRkZW4gPSBmdW5jdGlvbihlbGVtKXsKLQlyZXR1cm4gZWxlbS5vZmZzZXRXaWR0aCA9PT0g
MCB8fCBlbGVtLm9mZnNldEhlaWdodCA9PT0gMDsKLX07Ci0KLVNpenpsZS5zZWxlY3RvcnMuZmls
dGVycy52aXNpYmxlID0gZnVuY3Rpb24oZWxlbSl7Ci0JcmV0dXJuIGVsZW0ub2Zmc2V0V2lkdGgg
PiAwIHx8IGVsZW0ub2Zmc2V0SGVpZ2h0ID4gMDsKLX07Ci0KLVNpenpsZS5zZWxlY3RvcnMuZmls
dGVycy5hbmltYXRlZCA9IGZ1bmN0aW9uKGVsZW0pewotCXJldHVybiBqUXVlcnkuZ3JlcChqUXVl
cnkudGltZXJzLCBmdW5jdGlvbihmbil7Ci0JCXJldHVybiBlbGVtID09PSBmbi5lbGVtOwotCX0p
Lmxlbmd0aDsKLX07Ci0KLWpRdWVyeS5tdWx0aUZpbHRlciA9IGZ1bmN0aW9uKCBleHByLCBlbGVt
cywgbm90ICkgewotCWlmICggbm90ICkgewotCQlleHByID0gIjpub3QoIiArIGV4cHIgKyAiKSI7
Ci0JfQotCi0JcmV0dXJuIFNpenpsZS5tYXRjaGVzKGV4cHIsIGVsZW1zKTsKLX07Ci0KLWpRdWVy
eS5kaXIgPSBmdW5jdGlvbiggZWxlbSwgZGlyICl7Ci0JdmFyIG1hdGNoZWQgPSBbXSwgY3VyID0g
ZWxlbVtkaXJdOwotCXdoaWxlICggY3VyICYmIGN1ciAhPSBkb2N1bWVudCApIHsKLQkJaWYgKCBj
dXIubm9kZVR5cGUgPT0gMSApCi0JCQltYXRjaGVkLnB1c2goIGN1ciApOwotCQljdXIgPSBjdXJb
ZGlyXTsKLQl9Ci0JcmV0dXJuIG1hdGNoZWQ7Ci19OwotCi1qUXVlcnkubnRoID0gZnVuY3Rpb24o
Y3VyLCByZXN1bHQsIGRpciwgZWxlbSl7Ci0JcmVzdWx0ID0gcmVzdWx0IHx8IDE7Ci0JdmFyIG51
bSA9IDA7Ci0KLQlmb3IgKCA7IGN1cjsgY3VyID0gY3VyW2Rpcl0gKQotCQlpZiAoIGN1ci5ub2Rl
VHlwZSA9PSAxICYmICsrbnVtID09IHJlc3VsdCApCi0JCQlicmVhazsKLQotCXJldHVybiBjdXI7
Ci19OwotCi1qUXVlcnkuc2libGluZyA9IGZ1bmN0aW9uKG4sIGVsZW0pewotCXZhciByID0gW107
Ci0KLQlmb3IgKCA7IG47IG4gPSBuLm5leHRTaWJsaW5nICkgewotCQlpZiAoIG4ubm9kZVR5cGUg
PT0gMSAmJiBuICE9IGVsZW0gKQotCQkJci5wdXNoKCBuICk7Ci0JfQotCi0JcmV0dXJuIHI7Ci19
OwotCi1yZXR1cm47Ci0KLXdpbmRvdy5TaXp6bGUgPSBTaXp6bGU7Ci0KLX0pKCk7Ci0vKgotICog
QSBudW1iZXIgb2YgaGVscGVyIGZ1bmN0aW9ucyB1c2VkIGZvciBtYW5hZ2luZyBldmVudHMuCi0g
KiBNYW55IG9mIHRoZSBpZGVhcyBiZWhpbmQgdGhpcyBjb2RlIG9yaWdpbmF0ZWQgZnJvbQotICog
RGVhbiBFZHdhcmRzJyBhZGRFdmVudCBsaWJyYXJ5LgotICovCi1qUXVlcnkuZXZlbnQgPSB7Ci0K
LQkvLyBCaW5kIGFuIGV2ZW50IHRvIGFuIGVsZW1lbnQKLQkvLyBPcmlnaW5hbCBieSBEZWFuIEVk
d2FyZHMKLQlhZGQ6IGZ1bmN0aW9uKGVsZW0sIHR5cGVzLCBoYW5kbGVyLCBkYXRhKSB7Ci0JCWlm
ICggZWxlbS5ub2RlVHlwZSA9PSAzIHx8IGVsZW0ubm9kZVR5cGUgPT0gOCApCi0JCQlyZXR1cm47
Ci0KLQkJLy8gRm9yIHdoYXRldmVyIHJlYXNvbiwgSUUgaGFzIHRyb3VibGUgcGFzc2luZyB0aGUg
d2luZG93IG9iamVjdAotCQkvLyBhcm91bmQsIGNhdXNpbmcgaXQgdG8gYmUgY2xvbmVkIGluIHRo
ZSBwcm9jZXNzCi0JCWlmICggZWxlbS5zZXRJbnRlcnZhbCAmJiBlbGVtICE9IHdpbmRvdyApCi0J
CQllbGVtID0gd2luZG93OwotCi0JCS8vIE1ha2Ugc3VyZSB0aGF0IHRoZSBmdW5jdGlvbiBiZWlu
ZyBleGVjdXRlZCBoYXMgYSB1bmlxdWUgSUQKLQkJaWYgKCAhaGFuZGxlci5ndWlkICkKLQkJCWhh
bmRsZXIuZ3VpZCA9IHRoaXMuZ3VpZCsrOwotCi0JCS8vIGlmIGRhdGEgaXMgcGFzc2VkLCBiaW5k
IHRvIGhhbmRsZXIKLQkJaWYgKCBkYXRhICE9PSB1bmRlZmluZWQgKSB7Ci0JCQkvLyBDcmVhdGUg
dGVtcG9yYXJ5IGZ1bmN0aW9uIHBvaW50ZXIgdG8gb3JpZ2luYWwgaGFuZGxlcgotCQkJdmFyIGZu
ID0gaGFuZGxlcjsKLQotCQkJLy8gQ3JlYXRlIHVuaXF1ZSBoYW5kbGVyIGZ1bmN0aW9uLCB3cmFw
cGVkIGFyb3VuZCBvcmlnaW5hbCBoYW5kbGVyCi0JCQloYW5kbGVyID0gdGhpcy5wcm94eSggZm4g
KTsKLQotCQkJLy8gU3RvcmUgZGF0YSBpbiB1bmlxdWUgaGFuZGxlcgotCQkJaGFuZGxlci5kYXRh
ID0gZGF0YTsKLQkJfQotCi0JCS8vIEluaXQgdGhlIGVsZW1lbnQncyBldmVudCBzdHJ1Y3R1cmUK
LQkJdmFyIGV2ZW50cyA9IGpRdWVyeS5kYXRhKGVsZW0sICJldmVudHMiKSB8fCBqUXVlcnkuZGF0
YShlbGVtLCAiZXZlbnRzIiwge30pLAotCQkJaGFuZGxlID0galF1ZXJ5LmRhdGEoZWxlbSwgImhh
bmRsZSIpIHx8IGpRdWVyeS5kYXRhKGVsZW0sICJoYW5kbGUiLCBmdW5jdGlvbigpewotCQkJCS8v
IEhhbmRsZSB0aGUgc2Vjb25kIGV2ZW50IG9mIGEgdHJpZ2dlciBhbmQgd2hlbgotCQkJCS8vIGFu
IGV2ZW50IGlzIGNhbGxlZCBhZnRlciBhIHBhZ2UgaGFzIHVubG9hZGVkCi0JCQkJcmV0dXJuIHR5
cGVvZiBqUXVlcnkgIT09ICJ1bmRlZmluZWQiICYmICFqUXVlcnkuZXZlbnQudHJpZ2dlcmVkID8K
LQkJCQkJalF1ZXJ5LmV2ZW50LmhhbmRsZS5hcHBseShhcmd1bWVudHMuY2FsbGVlLmVsZW0sIGFy
Z3VtZW50cykgOgotCQkJCQl1bmRlZmluZWQ7Ci0JCQl9KTsKLQkJLy8gQWRkIGVsZW0gYXMgYSBw
cm9wZXJ0eSBvZiB0aGUgaGFuZGxlIGZ1bmN0aW9uCi0JCS8vIFRoaXMgaXMgdG8gcHJldmVudCBh
IG1lbW9yeSBsZWFrIHdpdGggbm9uLW5hdGl2ZQotCQkvLyBldmVudCBpbiBJRS4KLQkJaGFuZGxl
LmVsZW0gPSBlbGVtOwotCi0JCS8vIEhhbmRsZSBtdWx0aXBsZSBldmVudHMgc2VwYXJhdGVkIGJ5
IGEgc3BhY2UKLQkJLy8galF1ZXJ5KC4uLikuYmluZCgibW91c2VvdmVyIG1vdXNlb3V0IiwgZm4p
OwotCQlqUXVlcnkuZWFjaCh0eXBlcy5zcGxpdCgvXHMrLyksIGZ1bmN0aW9uKGluZGV4LCB0eXBl
KSB7Ci0JCQkvLyBOYW1lc3BhY2VkIGV2ZW50IGhhbmRsZXJzCi0JCQl2YXIgbmFtZXNwYWNlcyA9
IHR5cGUuc3BsaXQoIi4iKTsKLQkJCXR5cGUgPSBuYW1lc3BhY2VzLnNoaWZ0KCk7Ci0JCQloYW5k
bGVyLnR5cGUgPSBuYW1lc3BhY2VzLnNsaWNlKCkuc29ydCgpLmpvaW4oIi4iKTsKLQotCQkJLy8g
R2V0IHRoZSBjdXJyZW50IGxpc3Qgb2YgZnVuY3Rpb25zIGJvdW5kIHRvIHRoaXMgZXZlbnQKLQkJ
CXZhciBoYW5kbGVycyA9IGV2ZW50c1t0eXBlXTsKLQkJCQotCQkJaWYgKCBqUXVlcnkuZXZlbnQu
c3BlY2lhbEFsbFt0eXBlXSApCi0JCQkJalF1ZXJ5LmV2ZW50LnNwZWNpYWxBbGxbdHlwZV0uc2V0
dXAuY2FsbChlbGVtLCBkYXRhLCBuYW1lc3BhY2VzKTsKLQotCQkJLy8gSW5pdCB0aGUgZXZlbnQg
aGFuZGxlciBxdWV1ZQotCQkJaWYgKCFoYW5kbGVycykgewotCQkJCWhhbmRsZXJzID0gZXZlbnRz
W3R5cGVdID0ge307Ci0KLQkJCQkvLyBDaGVjayBmb3IgYSBzcGVjaWFsIGV2ZW50IGhhbmRsZXIK
LQkJCQkvLyBPbmx5IHVzZSBhZGRFdmVudExpc3RlbmVyL2F0dGFjaEV2ZW50IGlmIHRoZSBzcGVj
aWFsCi0JCQkJLy8gZXZlbnRzIGhhbmRsZXIgcmV0dXJucyBmYWxzZQotCQkJCWlmICggIWpRdWVy
eS5ldmVudC5zcGVjaWFsW3R5cGVdIHx8IGpRdWVyeS5ldmVudC5zcGVjaWFsW3R5cGVdLnNldHVw
LmNhbGwoZWxlbSwgZGF0YSwgbmFtZXNwYWNlcykgPT09IGZhbHNlICkgewotCQkJCQkvLyBCaW5k
IHRoZSBnbG9iYWwgZXZlbnQgaGFuZGxlciB0byB0aGUgZWxlbWVudAotCQkJCQlpZiAoZWxlbS5h
ZGRFdmVudExpc3RlbmVyKQotCQkJCQkJZWxlbS5hZGRFdmVudExpc3RlbmVyKHR5cGUsIGhhbmRs
ZSwgZmFsc2UpOwotCQkJCQllbHNlIGlmIChlbGVtLmF0dGFjaEV2ZW50KQotCQkJCQkJZWxlbS5h
dHRhY2hFdmVudCgib24iICsgdHlwZSwgaGFuZGxlKTsKLQkJCQl9Ci0JCQl9Ci0KLQkJCS8vIEFk
ZCB0aGUgZnVuY3Rpb24gdG8gdGhlIGVsZW1lbnQncyBoYW5kbGVyIGxpc3QKLQkJCWhhbmRsZXJz
W2hhbmRsZXIuZ3VpZF0gPSBoYW5kbGVyOwotCi0JCQkvLyBLZWVwIHRyYWNrIG9mIHdoaWNoIGV2
ZW50cyBoYXZlIGJlZW4gdXNlZCwgZm9yIGdsb2JhbCB0cmlnZ2VyaW5nCi0JCQlqUXVlcnkuZXZl
bnQuZ2xvYmFsW3R5cGVdID0gdHJ1ZTsKLQkJfSk7Ci0KLQkJLy8gTnVsbGlmeSBlbGVtIHRvIHBy
ZXZlbnQgbWVtb3J5IGxlYWtzIGluIElFCi0JCWVsZW0gPSBudWxsOwotCX0sCi0KLQlndWlkOiAx
LAotCWdsb2JhbDoge30sCi0KLQkvLyBEZXRhY2ggYW4gZXZlbnQgb3Igc2V0IG9mIGV2ZW50cyBm
cm9tIGFuIGVsZW1lbnQKLQlyZW1vdmU6IGZ1bmN0aW9uKGVsZW0sIHR5cGVzLCBoYW5kbGVyKSB7
Ci0JCS8vIGRvbid0IGRvIGV2ZW50cyBvbiB0ZXh0IGFuZCBjb21tZW50IG5vZGVzCi0JCWlmICgg
ZWxlbS5ub2RlVHlwZSA9PSAzIHx8IGVsZW0ubm9kZVR5cGUgPT0gOCApCi0JCQlyZXR1cm47Ci0K
LQkJdmFyIGV2ZW50cyA9IGpRdWVyeS5kYXRhKGVsZW0sICJldmVudHMiKSwgcmV0LCBpbmRleDsK
LQotCQlpZiAoIGV2ZW50cyApIHsKLQkJCS8vIFVuYmluZCBhbGwgZXZlbnRzIGZvciB0aGUgZWxl
bWVudAotCQkJaWYgKCB0eXBlcyA9PT0gdW5kZWZpbmVkIHx8ICh0eXBlb2YgdHlwZXMgPT09ICJz
dHJpbmciICYmIHR5cGVzLmNoYXJBdCgwKSA9PSAiLiIpICkKLQkJCQlmb3IgKCB2YXIgdHlwZSBp
biBldmVudHMgKQotCQkJCQl0aGlzLnJlbW92ZSggZWxlbSwgdHlwZSArICh0eXBlcyB8fCAiIikg
KTsKLQkJCWVsc2UgewotCQkJCS8vIHR5cGVzIGlzIGFjdHVhbGx5IGFuIGV2ZW50IG9iamVjdCBo
ZXJlCi0JCQkJaWYgKCB0eXBlcy50eXBlICkgewotCQkJCQloYW5kbGVyID0gdHlwZXMuaGFuZGxl
cjsKLQkJCQkJdHlwZXMgPSB0eXBlcy50eXBlOwotCQkJCX0KLQotCQkJCS8vIEhhbmRsZSBtdWx0
aXBsZSBldmVudHMgc2VwZXJhdGVkIGJ5IGEgc3BhY2UKLQkJCQkvLyBqUXVlcnkoLi4uKS51bmJp
bmQoIm1vdXNlb3ZlciBtb3VzZW91dCIsIGZuKTsKLQkJCQlqUXVlcnkuZWFjaCh0eXBlcy5zcGxp
dCgvXHMrLyksIGZ1bmN0aW9uKGluZGV4LCB0eXBlKXsKLQkJCQkJLy8gTmFtZXNwYWNlZCBldmVu
dCBoYW5kbGVycwotCQkJCQl2YXIgbmFtZXNwYWNlcyA9IHR5cGUuc3BsaXQoIi4iKTsKLQkJCQkJ
dHlwZSA9IG5hbWVzcGFjZXMuc2hpZnQoKTsKLQkJCQkJdmFyIG5hbWVzcGFjZSA9IFJlZ0V4cCgi
KF58XFwuKSIgKyBuYW1lc3BhY2VzLnNsaWNlKCkuc29ydCgpLmpvaW4oIi4qXFwuIikgKyAiKFxc
LnwkKSIpOwotCi0JCQkJCWlmICggZXZlbnRzW3R5cGVdICkgewotCQkJCQkJLy8gcmVtb3ZlIHRo
ZSBnaXZlbiBoYW5kbGVyIGZvciB0aGUgZ2l2ZW4gdHlwZQotCQkJCQkJaWYgKCBoYW5kbGVyICkK
LQkJCQkJCQlkZWxldGUgZXZlbnRzW3R5cGVdW2hhbmRsZXIuZ3VpZF07Ci0KLQkJCQkJCS8vIHJl
bW92ZSBhbGwgaGFuZGxlcnMgZm9yIHRoZSBnaXZlbiB0eXBlCi0JCQkJCQllbHNlCi0JCQkJCQkJ
Zm9yICggdmFyIGhhbmRsZSBpbiBldmVudHNbdHlwZV0gKQotCQkJCQkJCQkvLyBIYW5kbGUgdGhl
IHJlbW92YWwgb2YgbmFtZXNwYWNlZCBldmVudHMKLQkJCQkJCQkJaWYgKCBuYW1lc3BhY2UudGVz
dChldmVudHNbdHlwZV1baGFuZGxlXS50eXBlKSApCi0JCQkJCQkJCQlkZWxldGUgZXZlbnRzW3R5
cGVdW2hhbmRsZV07Ci0JCQkJCQkJCQkKLQkJCQkJCWlmICggalF1ZXJ5LmV2ZW50LnNwZWNpYWxB
bGxbdHlwZV0gKQotCQkJCQkJCWpRdWVyeS5ldmVudC5zcGVjaWFsQWxsW3R5cGVdLnRlYXJkb3du
LmNhbGwoZWxlbSwgbmFtZXNwYWNlcyk7Ci0KLQkJCQkJCS8vIHJlbW92ZSBnZW5lcmljIGV2ZW50
IGhhbmRsZXIgaWYgbm8gbW9yZSBoYW5kbGVycyBleGlzdAotCQkJCQkJZm9yICggcmV0IGluIGV2
ZW50c1t0eXBlXSApIGJyZWFrOwotCQkJCQkJaWYgKCAhcmV0ICkgewotCQkJCQkJCWlmICggIWpR
dWVyeS5ldmVudC5zcGVjaWFsW3R5cGVdIHx8IGpRdWVyeS5ldmVudC5zcGVjaWFsW3R5cGVdLnRl
YXJkb3duLmNhbGwoZWxlbSwgbmFtZXNwYWNlcykgPT09IGZhbHNlICkgewotCQkJCQkJCQlpZiAo
ZWxlbS5yZW1vdmVFdmVudExpc3RlbmVyKQotCQkJCQkJCQkJZWxlbS5yZW1vdmVFdmVudExpc3Rl
bmVyKHR5cGUsIGpRdWVyeS5kYXRhKGVsZW0sICJoYW5kbGUiKSwgZmFsc2UpOwotCQkJCQkJCQll
bHNlIGlmIChlbGVtLmRldGFjaEV2ZW50KQotCQkJCQkJCQkJZWxlbS5kZXRhY2hFdmVudCgib24i
ICsgdHlwZSwgalF1ZXJ5LmRhdGEoZWxlbSwgImhhbmRsZSIpKTsKLQkJCQkJCQl9Ci0JCQkJCQkJ
cmV0ID0gbnVsbDsKLQkJCQkJCQlkZWxldGUgZXZlbnRzW3R5cGVdOwotCQkJCQkJfQotCQkJCQl9
Ci0JCQkJfSk7Ci0JCQl9Ci0KLQkJCS8vIFJlbW92ZSB0aGUgZXhwYW5kbyBpZiBpdCdzIG5vIGxv
bmdlciB1c2VkCi0JCQlmb3IgKCByZXQgaW4gZXZlbnRzICkgYnJlYWs7Ci0JCQlpZiAoICFyZXQg
KSB7Ci0JCQkJdmFyIGhhbmRsZSA9IGpRdWVyeS5kYXRhKCBlbGVtLCAiaGFuZGxlIiApOwotCQkJ
CWlmICggaGFuZGxlICkgaGFuZGxlLmVsZW0gPSBudWxsOwotCQkJCWpRdWVyeS5yZW1vdmVEYXRh
KCBlbGVtLCAiZXZlbnRzIiApOwotCQkJCWpRdWVyeS5yZW1vdmVEYXRhKCBlbGVtLCAiaGFuZGxl
IiApOwotCQkJfQotCQl9Ci0JfSwKLQotCS8vIGJ1YmJsaW5nIGlzIGludGVybmFsCi0JdHJpZ2dl
cjogZnVuY3Rpb24oIGV2ZW50LCBkYXRhLCBlbGVtLCBidWJibGluZyApIHsKLQkJLy8gRXZlbnQg
b2JqZWN0IG9yIGV2ZW50IHR5cGUKLQkJdmFyIHR5cGUgPSBldmVudC50eXBlIHx8IGV2ZW50Owot
Ci0JCWlmKCAhYnViYmxpbmcgKXsKLQkJCWV2ZW50ID0gdHlwZW9mIGV2ZW50ID09PSAib2JqZWN0
IiA/Ci0JCQkJLy8galF1ZXJ5LkV2ZW50IG9iamVjdAotCQkJCWV2ZW50W2V4cGFuZG9dID8gZXZl
bnQgOgotCQkJCS8vIE9iamVjdCBsaXRlcmFsCi0JCQkJalF1ZXJ5LmV4dGVuZCggalF1ZXJ5LkV2
ZW50KHR5cGUpLCBldmVudCApIDoKLQkJCQkvLyBKdXN0IHRoZSBldmVudCB0eXBlIChzdHJpbmcp
Ci0JCQkJalF1ZXJ5LkV2ZW50KHR5cGUpOwotCi0JCQlpZiAoIHR5cGUuaW5kZXhPZigiISIpID49
IDAgKSB7Ci0JCQkJZXZlbnQudHlwZSA9IHR5cGUgPSB0eXBlLnNsaWNlKDAsIC0xKTsKLQkJCQll
dmVudC5leGNsdXNpdmUgPSB0cnVlOwotCQkJfQotCi0JCQkvLyBIYW5kbGUgYSBnbG9iYWwgdHJp
Z2dlcgotCQkJaWYgKCAhZWxlbSApIHsKLQkJCQkvLyBEb24ndCBidWJibGUgY3VzdG9tIGV2ZW50
cyB3aGVuIGdsb2JhbCAodG8gYXZvaWQgdG9vIG11Y2ggb3ZlcmhlYWQpCi0JCQkJZXZlbnQuc3Rv
cFByb3BhZ2F0aW9uKCk7Ci0JCQkJLy8gT25seSB0cmlnZ2VyIGlmIHdlJ3ZlIGV2ZXIgYm91bmQg
YW4gZXZlbnQgZm9yIGl0Ci0JCQkJaWYgKCB0aGlzLmdsb2JhbFt0eXBlXSApCi0JCQkJCWpRdWVy
eS5lYWNoKCBqUXVlcnkuY2FjaGUsIGZ1bmN0aW9uKCl7Ci0JCQkJCQlpZiAoIHRoaXMuZXZlbnRz
ICYmIHRoaXMuZXZlbnRzW3R5cGVdICkKLQkJCQkJCQlqUXVlcnkuZXZlbnQudHJpZ2dlciggZXZl
bnQsIGRhdGEsIHRoaXMuaGFuZGxlLmVsZW0gKTsKLQkJCQkJfSk7Ci0JCQl9Ci0KLQkJCS8vIEhh
bmRsZSB0cmlnZ2VyaW5nIGEgc2luZ2xlIGVsZW1lbnQKLQotCQkJLy8gZG9uJ3QgZG8gZXZlbnRz
IG9uIHRleHQgYW5kIGNvbW1lbnQgbm9kZXMKLQkJCWlmICggIWVsZW0gfHwgZWxlbS5ub2RlVHlw
ZSA9PSAzIHx8IGVsZW0ubm9kZVR5cGUgPT0gOCApCi0JCQkJcmV0dXJuIHVuZGVmaW5lZDsKLQkJ
CQotCQkJLy8gQ2xlYW4gdXAgaW4gY2FzZSBpdCBpcyByZXVzZWQKLQkJCWV2ZW50LnJlc3VsdCA9
IHVuZGVmaW5lZDsKLQkJCWV2ZW50LnRhcmdldCA9IGVsZW07Ci0JCQkKLQkJCS8vIENsb25lIHRo
ZSBpbmNvbWluZyBkYXRhLCBpZiBhbnkKLQkJCWRhdGEgPSBqUXVlcnkubWFrZUFycmF5KGRhdGEp
OwotCQkJZGF0YS51bnNoaWZ0KCBldmVudCApOwotCQl9Ci0KLQkJZXZlbnQuY3VycmVudFRhcmdl
dCA9IGVsZW07Ci0KLQkJLy8gVHJpZ2dlciB0aGUgZXZlbnQsIGl0IGlzIGFzc3VtZWQgdGhhdCAi
aGFuZGxlIiBpcyBhIGZ1bmN0aW9uCi0JCXZhciBoYW5kbGUgPSBqUXVlcnkuZGF0YShlbGVtLCAi
aGFuZGxlIik7Ci0JCWlmICggaGFuZGxlICkKLQkJCWhhbmRsZS5hcHBseSggZWxlbSwgZGF0YSAp
OwotCi0JCS8vIEhhbmRsZSB0cmlnZ2VyaW5nIG5hdGl2ZSAub25mb28gaGFuZGxlcnMgKGFuZCBv
biBsaW5rcyBzaW5jZSB3ZSBkb24ndCBjYWxsIC5jbGljaygpIGZvciBsaW5rcykKLQkJaWYgKCAo
IWVsZW1bdHlwZV0gfHwgKGpRdWVyeS5ub2RlTmFtZShlbGVtLCAnYScpICYmIHR5cGUgPT0gImNs
aWNrIikpICYmIGVsZW1bIm9uIit0eXBlXSAmJiBlbGVtWyJvbiIrdHlwZV0uYXBwbHkoIGVsZW0s
IGRhdGEgKSA9PT0gZmFsc2UgKQotCQkJZXZlbnQucmVzdWx0ID0gZmFsc2U7Ci0KLQkJLy8gVHJp
Z2dlciB0aGUgbmF0aXZlIGV2ZW50cyAoZXhjZXB0IGZvciBjbGlja3Mgb24gbGlua3MpCi0JCWlm
ICggIWJ1YmJsaW5nICYmIGVsZW1bdHlwZV0gJiYgIWV2ZW50LmlzRGVmYXVsdFByZXZlbnRlZCgp
ICYmICEoalF1ZXJ5Lm5vZGVOYW1lKGVsZW0sICdhJykgJiYgdHlwZSA9PSAiY2xpY2siKSApIHsK
LQkJCXRoaXMudHJpZ2dlcmVkID0gdHJ1ZTsKLQkJCXRyeSB7Ci0JCQkJZWxlbVsgdHlwZSBdKCk7
Ci0JCQkvLyBwcmV2ZW50IElFIGZyb20gdGhyb3dpbmcgYW4gZXJyb3IgZm9yIHNvbWUgaGlkZGVu
IGVsZW1lbnRzCi0JCQl9IGNhdGNoIChlKSB7fQotCQl9Ci0KLQkJdGhpcy50cmlnZ2VyZWQgPSBm
YWxzZTsKLQotCQlpZiAoICFldmVudC5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpICkgewotCQkJdmFy
IHBhcmVudCA9IGVsZW0ucGFyZW50Tm9kZSB8fCBlbGVtLm93bmVyRG9jdW1lbnQ7Ci0JCQlpZiAo
IHBhcmVudCApCi0JCQkJalF1ZXJ5LmV2ZW50LnRyaWdnZXIoZXZlbnQsIGRhdGEsIHBhcmVudCwg
dHJ1ZSk7Ci0JCX0KLQl9LAotCi0JaGFuZGxlOiBmdW5jdGlvbihldmVudCkgewotCQkvLyByZXR1
cm5lZCB1bmRlZmluZWQgb3IgZmFsc2UKLQkJdmFyIGFsbCwgaGFuZGxlcnM7Ci0KLQkJZXZlbnQg
PSBhcmd1bWVudHNbMF0gPSBqUXVlcnkuZXZlbnQuZml4KCBldmVudCB8fCB3aW5kb3cuZXZlbnQg
KTsKLQkJZXZlbnQuY3VycmVudFRhcmdldCA9IHRoaXM7Ci0JCQotCQkvLyBOYW1lc3BhY2VkIGV2
ZW50IGhhbmRsZXJzCi0JCXZhciBuYW1lc3BhY2VzID0gZXZlbnQudHlwZS5zcGxpdCgiLiIpOwot
CQlldmVudC50eXBlID0gbmFtZXNwYWNlcy5zaGlmdCgpOwotCi0JCS8vIENhY2hlIHRoaXMgbm93
LCBhbGwgPSB0cnVlIG1lYW5zLCBhbnkgaGFuZGxlcgotCQlhbGwgPSAhbmFtZXNwYWNlcy5sZW5n
dGggJiYgIWV2ZW50LmV4Y2x1c2l2ZTsKLQkJCi0JCXZhciBuYW1lc3BhY2UgPSBSZWdFeHAoIihe
fFxcLikiICsgbmFtZXNwYWNlcy5zbGljZSgpLnNvcnQoKS5qb2luKCIuKlxcLiIpICsgIihcXC58
JCkiKTsKLQotCQloYW5kbGVycyA9ICggalF1ZXJ5LmRhdGEodGhpcywgImV2ZW50cyIpIHx8IHt9
IClbZXZlbnQudHlwZV07Ci0KLQkJZm9yICggdmFyIGogaW4gaGFuZGxlcnMgKSB7Ci0JCQl2YXIg
aGFuZGxlciA9IGhhbmRsZXJzW2pdOwotCi0JCQkvLyBGaWx0ZXIgdGhlIGZ1bmN0aW9ucyBieSBj
bGFzcwotCQkJaWYgKCBhbGwgfHwgbmFtZXNwYWNlLnRlc3QoaGFuZGxlci50eXBlKSApIHsKLQkJ
CQkvLyBQYXNzIGluIGEgcmVmZXJlbmNlIHRvIHRoZSBoYW5kbGVyIGZ1bmN0aW9uIGl0c2VsZgot
CQkJCS8vIFNvIHRoYXQgd2UgY2FuIGxhdGVyIHJlbW92ZSBpdAotCQkJCWV2ZW50LmhhbmRsZXIg
PSBoYW5kbGVyOwotCQkJCWV2ZW50LmRhdGEgPSBoYW5kbGVyLmRhdGE7Ci0KLQkJCQl2YXIgcmV0
ID0gaGFuZGxlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwotCi0JCQkJaWYoIHJldCAhPT0gdW5k
ZWZpbmVkICl7Ci0JCQkJCWV2ZW50LnJlc3VsdCA9IHJldDsKLQkJCQkJaWYgKCByZXQgPT09IGZh
bHNlICkgewotCQkJCQkJZXZlbnQucHJldmVudERlZmF1bHQoKTsKLQkJCQkJCWV2ZW50LnN0b3BQ
cm9wYWdhdGlvbigpOwotCQkJCQl9Ci0JCQkJfQotCi0JCQkJaWYoIGV2ZW50LmlzSW1tZWRpYXRl
UHJvcGFnYXRpb25TdG9wcGVkKCkgKQotCQkJCQlicmVhazsKLQotCQkJfQotCQl9Ci0JfSwKLQot
CXByb3BzOiAiYWx0S2V5IGF0dHJDaGFuZ2UgYXR0ck5hbWUgYnViYmxlcyBidXR0b24gY2FuY2Vs
YWJsZSBjaGFyQ29kZSBjbGllbnRYIGNsaWVudFkgY3RybEtleSBjdXJyZW50VGFyZ2V0IGRhdGEg
ZGV0YWlsIGV2ZW50UGhhc2UgZnJvbUVsZW1lbnQgaGFuZGxlciBrZXlDb2RlIG1ldGFLZXkgbmV3
VmFsdWUgb3JpZ2luYWxUYXJnZXQgcGFnZVggcGFnZVkgcHJldlZhbHVlIHJlbGF0ZWROb2RlIHJl
bGF0ZWRUYXJnZXQgc2NyZWVuWCBzY3JlZW5ZIHNoaWZ0S2V5IHNyY0VsZW1lbnQgdGFyZ2V0IHRv
RWxlbWVudCB2aWV3IHdoZWVsRGVsdGEgd2hpY2giLnNwbGl0KCIgIiksCi0KLQlmaXg6IGZ1bmN0
aW9uKGV2ZW50KSB7Ci0JCWlmICggZXZlbnRbZXhwYW5kb10gKQotCQkJcmV0dXJuIGV2ZW50Owot
Ci0JCS8vIHN0b3JlIGEgY29weSBvZiB0aGUgb3JpZ2luYWwgZXZlbnQgb2JqZWN0Ci0JCS8vIGFu
ZCAiY2xvbmUiIHRvIHNldCByZWFkLW9ubHkgcHJvcGVydGllcwotCQl2YXIgb3JpZ2luYWxFdmVu
dCA9IGV2ZW50OwotCQlldmVudCA9IGpRdWVyeS5FdmVudCggb3JpZ2luYWxFdmVudCApOwotCi0J
CWZvciAoIHZhciBpID0gdGhpcy5wcm9wcy5sZW5ndGgsIHByb3A7IGk7ICl7Ci0JCQlwcm9wID0g
dGhpcy5wcm9wc1sgLS1pIF07Ci0JCQlldmVudFsgcHJvcCBdID0gb3JpZ2luYWxFdmVudFsgcHJv
cCBdOwotCQl9Ci0KLQkJLy8gRml4IHRhcmdldCBwcm9wZXJ0eSwgaWYgbmVjZXNzYXJ5Ci0JCWlm
ICggIWV2ZW50LnRhcmdldCApCi0JCQlldmVudC50YXJnZXQgPSBldmVudC5zcmNFbGVtZW50IHx8
IGRvY3VtZW50OyAvLyBGaXhlcyAjMTkyNSB3aGVyZSBzcmNFbGVtZW50IG1pZ2h0IG5vdCBiZSBk
ZWZpbmVkIGVpdGhlcgotCi0JCS8vIGNoZWNrIGlmIHRhcmdldCBpcyBhIHRleHRub2RlIChzYWZh
cmkpCi0JCWlmICggZXZlbnQudGFyZ2V0Lm5vZGVUeXBlID09IDMgKQotCQkJZXZlbnQudGFyZ2V0
ID0gZXZlbnQudGFyZ2V0LnBhcmVudE5vZGU7Ci0KLQkJLy8gQWRkIHJlbGF0ZWRUYXJnZXQsIGlm
IG5lY2Vzc2FyeQotCQlpZiAoICFldmVudC5yZWxhdGVkVGFyZ2V0ICYmIGV2ZW50LmZyb21FbGVt
ZW50ICkKLQkJCWV2ZW50LnJlbGF0ZWRUYXJnZXQgPSBldmVudC5mcm9tRWxlbWVudCA9PSBldmVu
dC50YXJnZXQgPyBldmVudC50b0VsZW1lbnQgOiBldmVudC5mcm9tRWxlbWVudDsKLQotCQkvLyBD
YWxjdWxhdGUgcGFnZVgvWSBpZiBtaXNzaW5nIGFuZCBjbGllbnRYL1kgYXZhaWxhYmxlCi0JCWlm
ICggZXZlbnQucGFnZVggPT0gbnVsbCAmJiBldmVudC5jbGllbnRYICE9IG51bGwgKSB7Ci0JCQl2
YXIgZG9jID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCBib2R5ID0gZG9jdW1lbnQuYm9keTsK
LQkJCWV2ZW50LnBhZ2VYID0gZXZlbnQuY2xpZW50WCArIChkb2MgJiYgZG9jLnNjcm9sbExlZnQg
fHwgYm9keSAmJiBib2R5LnNjcm9sbExlZnQgfHwgMCkgLSAoZG9jLmNsaWVudExlZnQgfHwgMCk7
Ci0JCQlldmVudC5wYWdlWSA9IGV2ZW50LmNsaWVudFkgKyAoZG9jICYmIGRvYy5zY3JvbGxUb3Ag
fHwgYm9keSAmJiBib2R5LnNjcm9sbFRvcCB8fCAwKSAtIChkb2MuY2xpZW50VG9wIHx8IDApOwot
CQl9Ci0KLQkJLy8gQWRkIHdoaWNoIGZvciBrZXkgZXZlbnRzCi0JCWlmICggIWV2ZW50LndoaWNo
ICYmICgoZXZlbnQuY2hhckNvZGUgfHwgZXZlbnQuY2hhckNvZGUgPT09IDApID8gZXZlbnQuY2hh
ckNvZGUgOiBldmVudC5rZXlDb2RlKSApCi0JCQlldmVudC53aGljaCA9IGV2ZW50LmNoYXJDb2Rl
IHx8IGV2ZW50LmtleUNvZGU7Ci0KLQkJLy8gQWRkIG1ldGFLZXkgdG8gbm9uLU1hYyBicm93c2Vy
cyAodXNlIGN0cmwgZm9yIFBDJ3MgYW5kIE1ldGEgZm9yIE1hY3MpCi0JCWlmICggIWV2ZW50Lm1l
dGFLZXkgJiYgZXZlbnQuY3RybEtleSApCi0JCQlldmVudC5tZXRhS2V5ID0gZXZlbnQuY3RybEtl
eTsKLQotCQkvLyBBZGQgd2hpY2ggZm9yIGNsaWNrOiAxID09IGxlZnQ7IDIgPT0gbWlkZGxlOyAz
ID09IHJpZ2h0Ci0JCS8vIE5vdGU6IGJ1dHRvbiBpcyBub3Qgbm9ybWFsaXplZCwgc28gZG9uJ3Qg
dXNlIGl0Ci0JCWlmICggIWV2ZW50LndoaWNoICYmIGV2ZW50LmJ1dHRvbiApCi0JCQlldmVudC53
aGljaCA9IChldmVudC5idXR0b24gJiAxID8gMSA6ICggZXZlbnQuYnV0dG9uICYgMiA/IDMgOiAo
IGV2ZW50LmJ1dHRvbiAmIDQgPyAyIDogMCApICkpOwotCi0JCXJldHVybiBldmVudDsKLQl9LAot
Ci0JcHJveHk6IGZ1bmN0aW9uKCBmbiwgcHJveHkgKXsKLQkJcHJveHkgPSBwcm94eSB8fCBmdW5j
dGlvbigpeyByZXR1cm4gZm4uYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfTsKLQkJLy8gU2V0IHRo
ZSBndWlkIG9mIHVuaXF1ZSBoYW5kbGVyIHRvIHRoZSBzYW1lIG9mIG9yaWdpbmFsIGhhbmRsZXIs
IHNvIGl0IGNhbiBiZSByZW1vdmVkCi0JCXByb3h5Lmd1aWQgPSBmbi5ndWlkID0gZm4uZ3VpZCB8
fCBwcm94eS5ndWlkIHx8IHRoaXMuZ3VpZCsrOwotCQkvLyBTbyBwcm94eSBjYW4gYmUgZGVjbGFy
ZWQgYXMgYW4gYXJndW1lbnQKLQkJcmV0dXJuIHByb3h5OwotCX0sCi0KLQlzcGVjaWFsOiB7Ci0J
CXJlYWR5OiB7Ci0JCQkvLyBNYWtlIHN1cmUgdGhlIHJlYWR5IGV2ZW50IGlzIHNldHVwCi0JCQlz
ZXR1cDogYmluZFJlYWR5LAotCQkJdGVhcmRvd246IGZ1bmN0aW9uKCkge30KLQkJfQotCX0sCi0J
Ci0Jc3BlY2lhbEFsbDogewotCQlsaXZlOiB7Ci0JCQlzZXR1cDogZnVuY3Rpb24oIHNlbGVjdG9y
LCBuYW1lc3BhY2VzICl7Ci0JCQkJalF1ZXJ5LmV2ZW50LmFkZCggdGhpcywgbmFtZXNwYWNlc1sw
XSwgbGl2ZUhhbmRsZXIgKTsKLQkJCX0sCi0JCQl0ZWFyZG93bjogIGZ1bmN0aW9uKCBuYW1lc3Bh
Y2VzICl7Ci0JCQkJaWYgKCBuYW1lc3BhY2VzLmxlbmd0aCApIHsKLQkJCQkJdmFyIHJlbW92ZSA9
IDAsIG5hbWUgPSBSZWdFeHAoIihefFxcLikiICsgbmFtZXNwYWNlc1swXSArICIoXFwufCQpIik7
Ci0JCQkJCQotCQkJCQlqUXVlcnkuZWFjaCggKGpRdWVyeS5kYXRhKHRoaXMsICJldmVudHMiKS5s
aXZlIHx8IHt9KSwgZnVuY3Rpb24oKXsKLQkJCQkJCWlmICggbmFtZS50ZXN0KHRoaXMudHlwZSkg
KQotCQkJCQkJCXJlbW92ZSsrOwotCQkJCQl9KTsKLQkJCQkJCi0JCQkJCWlmICggcmVtb3ZlIDwg
MSApCi0JCQkJCQlqUXVlcnkuZXZlbnQucmVtb3ZlKCB0aGlzLCBuYW1lc3BhY2VzWzBdLCBsaXZl
SGFuZGxlciApOwotCQkJCX0KLQkJCX0KLQkJfQotCX0KLX07Ci0KLWpRdWVyeS5FdmVudCA9IGZ1
bmN0aW9uKCBzcmMgKXsKLQkvLyBBbGxvdyBpbnN0YW50aWF0aW9uIHdpdGhvdXQgdGhlICduZXcn
IGtleXdvcmQKLQlpZiggIXRoaXMucHJldmVudERlZmF1bHQgKQotCQlyZXR1cm4gbmV3IGpRdWVy
eS5FdmVudChzcmMpOwotCQotCS8vIEV2ZW50IG9iamVjdAotCWlmKCBzcmMgJiYgc3JjLnR5cGUg
KXsKLQkJdGhpcy5vcmlnaW5hbEV2ZW50ID0gc3JjOwotCQl0aGlzLnR5cGUgPSBzcmMudHlwZTsK
LQkvLyBFdmVudCB0eXBlCi0JfWVsc2UKLQkJdGhpcy50eXBlID0gc3JjOwotCi0JLy8gdGltZVN0
YW1wIGlzIGJ1Z2d5IGZvciBzb21lIGV2ZW50cyBvbiBGaXJlZm94KCMzODQzKQotCS8vIFNvIHdl
IHdvbid0IHJlbHkgb24gdGhlIG5hdGl2ZSB2YWx1ZQotCXRoaXMudGltZVN0YW1wID0gbm93KCk7
Ci0JCi0JLy8gTWFyayBpdCBhcyBmaXhlZAotCXRoaXNbZXhwYW5kb10gPSB0cnVlOwotfTsKLQot
ZnVuY3Rpb24gcmV0dXJuRmFsc2UoKXsKLQlyZXR1cm4gZmFsc2U7Ci19Ci1mdW5jdGlvbiByZXR1
cm5UcnVlKCl7Ci0JcmV0dXJuIHRydWU7Ci19Ci0KLS8vIGpRdWVyeS5FdmVudCBpcyBiYXNlZCBv
biBET00zIEV2ZW50cyBhcyBzcGVjaWZpZWQgYnkgdGhlIEVDTUFTY3JpcHQgTGFuZ3VhZ2UgQmlu
ZGluZwotLy8gaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMy9XRC1ET00tTGV2ZWwtMy1FdmVudHMt
MjAwMzAzMzEvZWNtYS1zY3JpcHQtYmluZGluZy5odG1sCi1qUXVlcnkuRXZlbnQucHJvdG90eXBl
ID0gewotCXByZXZlbnREZWZhdWx0OiBmdW5jdGlvbigpIHsKLQkJdGhpcy5pc0RlZmF1bHRQcmV2
ZW50ZWQgPSByZXR1cm5UcnVlOwotCi0JCXZhciBlID0gdGhpcy5vcmlnaW5hbEV2ZW50OwotCQlp
ZiggIWUgKQotCQkJcmV0dXJuOwotCQkvLyBpZiBwcmV2ZW50RGVmYXVsdCBleGlzdHMgcnVuIGl0
IG9uIHRoZSBvcmlnaW5hbCBldmVudAotCQlpZiAoZS5wcmV2ZW50RGVmYXVsdCkKLQkJCWUucHJl
dmVudERlZmF1bHQoKTsKLQkJLy8gb3RoZXJ3aXNlIHNldCB0aGUgcmV0dXJuVmFsdWUgcHJvcGVy
dHkgb2YgdGhlIG9yaWdpbmFsIGV2ZW50IHRvIGZhbHNlIChJRSkKLQkJZS5yZXR1cm5WYWx1ZSA9
IGZhbHNlOwotCX0sCi0Jc3RvcFByb3BhZ2F0aW9uOiBmdW5jdGlvbigpIHsKLQkJdGhpcy5pc1By
b3BhZ2F0aW9uU3RvcHBlZCA9IHJldHVyblRydWU7Ci0KLQkJdmFyIGUgPSB0aGlzLm9yaWdpbmFs
RXZlbnQ7Ci0JCWlmKCAhZSApCi0JCQlyZXR1cm47Ci0JCS8vIGlmIHN0b3BQcm9wYWdhdGlvbiBl
eGlzdHMgcnVuIGl0IG9uIHRoZSBvcmlnaW5hbCBldmVudAotCQlpZiAoZS5zdG9wUHJvcGFnYXRp
b24pCi0JCQllLnN0b3BQcm9wYWdhdGlvbigpOwotCQkvLyBvdGhlcndpc2Ugc2V0IHRoZSBjYW5j
ZWxCdWJibGUgcHJvcGVydHkgb2YgdGhlIG9yaWdpbmFsIGV2ZW50IHRvIHRydWUgKElFKQotCQll
LmNhbmNlbEJ1YmJsZSA9IHRydWU7Ci0JfSwKLQlzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb246ZnVu
Y3Rpb24oKXsKLQkJdGhpcy5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCA9IHJldHVyblRy
dWU7Ci0JCXRoaXMuc3RvcFByb3BhZ2F0aW9uKCk7Ci0JfSwKLQlpc0RlZmF1bHRQcmV2ZW50ZWQ6
IHJldHVybkZhbHNlLAotCWlzUHJvcGFnYXRpb25TdG9wcGVkOiByZXR1cm5GYWxzZSwKLQlpc0lt
bWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZDogcmV0dXJuRmFsc2UKLX07Ci0vLyBDaGVja3MgaWYg
YW4gZXZlbnQgaGFwcGVuZWQgb24gYW4gZWxlbWVudCB3aXRoaW4gYW5vdGhlciBlbGVtZW50Ci0v
LyBVc2VkIGluIGpRdWVyeS5ldmVudC5zcGVjaWFsLm1vdXNlZW50ZXIgYW5kIG1vdXNlbGVhdmUg
aGFuZGxlcnMKLXZhciB3aXRoaW5FbGVtZW50ID0gZnVuY3Rpb24oZXZlbnQpIHsKLQkvLyBDaGVj
ayBpZiBtb3VzZShvdmVyfG91dCkgYXJlIHN0aWxsIHdpdGhpbiB0aGUgc2FtZSBwYXJlbnQgZWxl
bWVudAotCXZhciBwYXJlbnQgPSBldmVudC5yZWxhdGVkVGFyZ2V0OwotCS8vIFRyYXZlcnNlIHVw
IHRoZSB0cmVlCi0Jd2hpbGUgKCBwYXJlbnQgJiYgcGFyZW50ICE9IHRoaXMgKQotCQl0cnkgeyBw
YXJlbnQgPSBwYXJlbnQucGFyZW50Tm9kZTsgfQotCQljYXRjaChlKSB7IHBhcmVudCA9IHRoaXM7
IH0KLQkKLQlpZiggcGFyZW50ICE9IHRoaXMgKXsKLQkJLy8gc2V0IHRoZSBjb3JyZWN0IGV2ZW50
IHR5cGUKLQkJZXZlbnQudHlwZSA9IGV2ZW50LmRhdGE7Ci0JCS8vIGhhbmRsZSBldmVudCBpZiB3
ZSBhY3R1YWxseSBqdXN0IG1vdXNlZCBvbiB0byBhIG5vbiBzdWItZWxlbWVudAotCQlqUXVlcnku
ZXZlbnQuaGFuZGxlLmFwcGx5KCB0aGlzLCBhcmd1bWVudHMgKTsKLQl9Ci19OwotCQotalF1ZXJ5
LmVhY2goeyAKLQltb3VzZW92ZXI6ICdtb3VzZWVudGVyJywgCi0JbW91c2VvdXQ6ICdtb3VzZWxl
YXZlJwotfSwgZnVuY3Rpb24oIG9yaWcsIGZpeCApewotCWpRdWVyeS5ldmVudC5zcGVjaWFsWyBm
aXggXSA9IHsKLQkJc2V0dXA6IGZ1bmN0aW9uKCl7Ci0JCQlqUXVlcnkuZXZlbnQuYWRkKCB0aGlz
LCBvcmlnLCB3aXRoaW5FbGVtZW50LCBmaXggKTsKLQkJfSwKLQkJdGVhcmRvd246IGZ1bmN0aW9u
KCl7Ci0JCQlqUXVlcnkuZXZlbnQucmVtb3ZlKCB0aGlzLCBvcmlnLCB3aXRoaW5FbGVtZW50ICk7
Ci0JCX0KLQl9OwkJCSAgIAotfSk7Ci0KLWpRdWVyeS5mbi5leHRlbmQoewotCWJpbmQ6IGZ1bmN0
aW9uKCB0eXBlLCBkYXRhLCBmbiApIHsKLQkJcmV0dXJuIHR5cGUgPT0gInVubG9hZCIgPyB0aGlz
Lm9uZSh0eXBlLCBkYXRhLCBmbikgOiB0aGlzLmVhY2goZnVuY3Rpb24oKXsKLQkJCWpRdWVyeS5l
dmVudC5hZGQoIHRoaXMsIHR5cGUsIGZuIHx8IGRhdGEsIGZuICYmIGRhdGEgKTsKLQkJfSk7Ci0J
fSwKLQotCW9uZTogZnVuY3Rpb24oIHR5cGUsIGRhdGEsIGZuICkgewotCQl2YXIgb25lID0galF1
ZXJ5LmV2ZW50LnByb3h5KCBmbiB8fCBkYXRhLCBmdW5jdGlvbihldmVudCkgewotCQkJalF1ZXJ5
KHRoaXMpLnVuYmluZChldmVudCwgb25lKTsKLQkJCXJldHVybiAoZm4gfHwgZGF0YSkuYXBwbHko
IHRoaXMsIGFyZ3VtZW50cyApOwotCQl9KTsKLQkJcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigp
ewotCQkJalF1ZXJ5LmV2ZW50LmFkZCggdGhpcywgdHlwZSwgb25lLCBmbiAmJiBkYXRhKTsKLQkJ
fSk7Ci0JfSwKLQotCXVuYmluZDogZnVuY3Rpb24oIHR5cGUsIGZuICkgewotCQlyZXR1cm4gdGhp
cy5lYWNoKGZ1bmN0aW9uKCl7Ci0JCQlqUXVlcnkuZXZlbnQucmVtb3ZlKCB0aGlzLCB0eXBlLCBm
biApOwotCQl9KTsKLQl9LAotCi0JdHJpZ2dlcjogZnVuY3Rpb24oIHR5cGUsIGRhdGEgKSB7Ci0J
CXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXsKLQkJCWpRdWVyeS5ldmVudC50cmlnZ2VyKCB0
eXBlLCBkYXRhLCB0aGlzICk7Ci0JCX0pOwotCX0sCi0KLQl0cmlnZ2VySGFuZGxlcjogZnVuY3Rp
b24oIHR5cGUsIGRhdGEgKSB7Ci0JCWlmKCB0aGlzWzBdICl7Ci0JCQl2YXIgZXZlbnQgPSBqUXVl
cnkuRXZlbnQodHlwZSk7Ci0JCQlldmVudC5wcmV2ZW50RGVmYXVsdCgpOwotCQkJZXZlbnQuc3Rv
cFByb3BhZ2F0aW9uKCk7Ci0JCQlqUXVlcnkuZXZlbnQudHJpZ2dlciggZXZlbnQsIGRhdGEsIHRo
aXNbMF0gKTsKLQkJCXJldHVybiBldmVudC5yZXN1bHQ7Ci0JCX0JCQotCX0sCi0KLQl0b2dnbGU6
IGZ1bmN0aW9uKCBmbiApIHsKLQkJLy8gU2F2ZSByZWZlcmVuY2UgdG8gYXJndW1lbnRzIGZvciBh
Y2Nlc3MgaW4gY2xvc3VyZQotCQl2YXIgYXJncyA9IGFyZ3VtZW50cywgaSA9IDE7Ci0KLQkJLy8g
bGluayBhbGwgdGhlIGZ1bmN0aW9ucywgc28gYW55IG9mIHRoZW0gY2FuIHVuYmluZCB0aGlzIGNs
aWNrIGhhbmRsZXIKLQkJd2hpbGUoIGkgPCBhcmdzLmxlbmd0aCApCi0JCQlqUXVlcnkuZXZlbnQu
cHJveHkoIGZuLCBhcmdzW2krK10gKTsKLQotCQlyZXR1cm4gdGhpcy5jbGljayggalF1ZXJ5LmV2
ZW50LnByb3h5KCBmbiwgZnVuY3Rpb24oZXZlbnQpIHsKLQkJCS8vIEZpZ3VyZSBvdXQgd2hpY2gg
ZnVuY3Rpb24gdG8gZXhlY3V0ZQotCQkJdGhpcy5sYXN0VG9nZ2xlID0gKCB0aGlzLmxhc3RUb2dn
bGUgfHwgMCApICUgaTsKLQotCQkJLy8gTWFrZSBzdXJlIHRoYXQgY2xpY2tzIHN0b3AKLQkJCWV2
ZW50LnByZXZlbnREZWZhdWx0KCk7Ci0KLQkJCS8vIGFuZCBleGVjdXRlIHRoZSBmdW5jdGlvbgot
CQkJcmV0dXJuIGFyZ3NbIHRoaXMubGFzdFRvZ2dsZSsrIF0uYXBwbHkoIHRoaXMsIGFyZ3VtZW50
cyApIHx8IGZhbHNlOwotCQl9KSk7Ci0JfSwKLQotCWhvdmVyOiBmdW5jdGlvbihmbk92ZXIsIGZu
T3V0KSB7Ci0JCXJldHVybiB0aGlzLm1vdXNlZW50ZXIoZm5PdmVyKS5tb3VzZWxlYXZlKGZuT3V0
KTsKLQl9LAotCi0JcmVhZHk6IGZ1bmN0aW9uKGZuKSB7Ci0JCS8vIEF0dGFjaCB0aGUgbGlzdGVu
ZXJzCi0JCWJpbmRSZWFkeSgpOwotCi0JCS8vIElmIHRoZSBET00gaXMgYWxyZWFkeSByZWFkeQot
CQlpZiAoIGpRdWVyeS5pc1JlYWR5ICkKLQkJCS8vIEV4ZWN1dGUgdGhlIGZ1bmN0aW9uIGltbWVk
aWF0ZWx5Ci0JCQlmbi5jYWxsKCBkb2N1bWVudCwgalF1ZXJ5ICk7Ci0KLQkJLy8gT3RoZXJ3aXNl
LCByZW1lbWJlciB0aGUgZnVuY3Rpb24gZm9yIGxhdGVyCi0JCWVsc2UKLQkJCS8vIEFkZCB0aGUg
ZnVuY3Rpb24gdG8gdGhlIHdhaXQgbGlzdAotCQkJalF1ZXJ5LnJlYWR5TGlzdC5wdXNoKCBmbiAp
OwotCi0JCXJldHVybiB0aGlzOwotCX0sCi0JCi0JbGl2ZTogZnVuY3Rpb24oIHR5cGUsIGZuICl7
Ci0JCXZhciBwcm94eSA9IGpRdWVyeS5ldmVudC5wcm94eSggZm4gKTsKLQkJcHJveHkuZ3VpZCAr
PSB0aGlzLnNlbGVjdG9yICsgdHlwZTsKLQotCQlqUXVlcnkoZG9jdW1lbnQpLmJpbmQoIGxpdmVD
b252ZXJ0KHR5cGUsIHRoaXMuc2VsZWN0b3IpLCB0aGlzLnNlbGVjdG9yLCBwcm94eSApOwotCi0J
CXJldHVybiB0aGlzOwotCX0sCi0JCi0JZGllOiBmdW5jdGlvbiggdHlwZSwgZm4gKXsKLQkJalF1
ZXJ5KGRvY3VtZW50KS51bmJpbmQoIGxpdmVDb252ZXJ0KHR5cGUsIHRoaXMuc2VsZWN0b3IpLCBm
biA/IHsgZ3VpZDogZm4uZ3VpZCArIHRoaXMuc2VsZWN0b3IgKyB0eXBlIH0gOiBudWxsICk7Ci0J
CXJldHVybiB0aGlzOwotCX0KLX0pOwotCi1mdW5jdGlvbiBsaXZlSGFuZGxlciggZXZlbnQgKXsK
LQl2YXIgY2hlY2sgPSBSZWdFeHAoIihefFxcLikiICsgZXZlbnQudHlwZSArICIoXFwufCQpIiks
Ci0JCXN0b3AgPSB0cnVlLAotCQllbGVtcyA9IFtdOwotCi0JalF1ZXJ5LmVhY2goalF1ZXJ5LmRh
dGEodGhpcywgImV2ZW50cyIpLmxpdmUgfHwgW10sIGZ1bmN0aW9uKGksIGZuKXsKLQkJaWYgKCBj
aGVjay50ZXN0KGZuLnR5cGUpICkgewotCQkJdmFyIGVsZW0gPSBqUXVlcnkoZXZlbnQudGFyZ2V0
KS5jbG9zZXN0KGZuLmRhdGEpWzBdOwotCQkJaWYgKCBlbGVtICkKLQkJCQllbGVtcy5wdXNoKHsg
ZWxlbTogZWxlbSwgZm46IGZuIH0pOwotCQl9Ci0JfSk7Ci0KLQllbGVtcy5zb3J0KGZ1bmN0aW9u
KGEsYikgewotCQlyZXR1cm4galF1ZXJ5LmRhdGEoYS5lbGVtLCAiY2xvc2VzdCIpIC0galF1ZXJ5
LmRhdGEoYi5lbGVtLCAiY2xvc2VzdCIpOwotCX0pOwotCQotCWpRdWVyeS5lYWNoKGVsZW1zLCBm
dW5jdGlvbigpewotCQlpZiAoIHRoaXMuZm4uY2FsbCh0aGlzLmVsZW0sIGV2ZW50LCB0aGlzLmZu
LmRhdGEpID09PSBmYWxzZSApCi0JCQlyZXR1cm4gKHN0b3AgPSBmYWxzZSk7Ci0JfSk7Ci0KLQly
ZXR1cm4gc3RvcDsKLX0KLQotZnVuY3Rpb24gbGl2ZUNvbnZlcnQodHlwZSwgc2VsZWN0b3Ipewot
CXJldHVybiBbImxpdmUiLCB0eXBlLCBzZWxlY3Rvci5yZXBsYWNlKC9cLi9nLCAiYCIpLnJlcGxh
Y2UoLyAvZywgInwiKV0uam9pbigiLiIpOwotfQotCi1qUXVlcnkuZXh0ZW5kKHsKLQlpc1JlYWR5
OiBmYWxzZSwKLQlyZWFkeUxpc3Q6IFtdLAotCS8vIEhhbmRsZSB3aGVuIHRoZSBET00gaXMgcmVh
ZHkKLQlyZWFkeTogZnVuY3Rpb24oKSB7Ci0JCS8vIE1ha2Ugc3VyZSB0aGF0IHRoZSBET00gaXMg
bm90IGFscmVhZHkgbG9hZGVkCi0JCWlmICggIWpRdWVyeS5pc1JlYWR5ICkgewotCQkJLy8gUmVt
ZW1iZXIgdGhhdCB0aGUgRE9NIGlzIHJlYWR5Ci0JCQlqUXVlcnkuaXNSZWFkeSA9IHRydWU7Ci0K
LQkJCS8vIElmIHRoZXJlIGFyZSBmdW5jdGlvbnMgYm91bmQsIHRvIGV4ZWN1dGUKLQkJCWlmICgg
alF1ZXJ5LnJlYWR5TGlzdCApIHsKLQkJCQkvLyBFeGVjdXRlIGFsbCBvZiB0aGVtCi0JCQkJalF1
ZXJ5LmVhY2goIGpRdWVyeS5yZWFkeUxpc3QsIGZ1bmN0aW9uKCl7Ci0JCQkJCXRoaXMuY2FsbCgg
ZG9jdW1lbnQsIGpRdWVyeSApOwotCQkJCX0pOwotCi0JCQkJLy8gUmVzZXQgdGhlIGxpc3Qgb2Yg
ZnVuY3Rpb25zCi0JCQkJalF1ZXJ5LnJlYWR5TGlzdCA9IG51bGw7Ci0JCQl9Ci0KLQkJCS8vIFRy
aWdnZXIgYW55IGJvdW5kIHJlYWR5IGV2ZW50cwotCQkJalF1ZXJ5KGRvY3VtZW50KS50cmlnZ2Vy
SGFuZGxlcigicmVhZHkiKTsKLQkJfQotCX0KLX0pOwotCi12YXIgcmVhZHlCb3VuZCA9IGZhbHNl
OwotCi1mdW5jdGlvbiBiaW5kUmVhZHkoKXsKLQlpZiAoIHJlYWR5Qm91bmQgKSByZXR1cm47Ci0J
cmVhZHlCb3VuZCA9IHRydWU7Ci0KLQkvLyBNb3ppbGxhLCBPcGVyYSBhbmQgd2Via2l0IG5pZ2h0
bGllcyBjdXJyZW50bHkgc3VwcG9ydCB0aGlzIGV2ZW50Ci0JaWYgKCBkb2N1bWVudC5hZGRFdmVu
dExpc3RlbmVyICkgewotCQkvLyBVc2UgdGhlIGhhbmR5IGV2ZW50IGNhbGxiYWNrCi0JCWRvY3Vt
ZW50LmFkZEV2ZW50TGlzdGVuZXIoICJET01Db250ZW50TG9hZGVkIiwgZnVuY3Rpb24oKXsKLQkJ
CWRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoICJET01Db250ZW50TG9hZGVkIiwgYXJndW1l
bnRzLmNhbGxlZSwgZmFsc2UgKTsKLQkJCWpRdWVyeS5yZWFkeSgpOwotCQl9LCBmYWxzZSApOwot
Ci0JLy8gSWYgSUUgZXZlbnQgbW9kZWwgaXMgdXNlZAotCX0gZWxzZSBpZiAoIGRvY3VtZW50LmF0
dGFjaEV2ZW50ICkgewotCQkvLyBlbnN1cmUgZmlyaW5nIGJlZm9yZSBvbmxvYWQsCi0JCS8vIG1h
eWJlIGxhdGUgYnV0IHNhZmUgYWxzbyBmb3IgaWZyYW1lcwotCQlkb2N1bWVudC5hdHRhY2hFdmVu
dCgib25yZWFkeXN0YXRlY2hhbmdlIiwgZnVuY3Rpb24oKXsKLQkJCWlmICggZG9jdW1lbnQucmVh
ZHlTdGF0ZSA9PT0gImNvbXBsZXRlIiApIHsKLQkJCQlkb2N1bWVudC5kZXRhY2hFdmVudCggIm9u
cmVhZHlzdGF0ZWNoYW5nZSIsIGFyZ3VtZW50cy5jYWxsZWUgKTsKLQkJCQlqUXVlcnkucmVhZHko
KTsKLQkJCX0KLQkJfSk7Ci0KLQkJLy8gSWYgSUUgYW5kIG5vdCBhbiBpZnJhbWUKLQkJLy8gY29u
dGludWFsbHkgY2hlY2sgdG8gc2VlIGlmIHRoZSBkb2N1bWVudCBpcyByZWFkeQotCQlpZiAoIGRv
Y3VtZW50LmRvY3VtZW50RWxlbWVudC5kb1Njcm9sbCAmJiB3aW5kb3cgPT0gd2luZG93LnRvcCAp
IChmdW5jdGlvbigpewotCQkJaWYgKCBqUXVlcnkuaXNSZWFkeSApIHJldHVybjsKLQotCQkJdHJ5
IHsKLQkJCQkvLyBJZiBJRSBpcyB1c2VkLCB1c2UgdGhlIHRyaWNrIGJ5IERpZWdvIFBlcmluaQot
CQkJCS8vIGh0dHA6Ly9qYXZhc2NyaXB0Lm53Ym94LmNvbS9JRUNvbnRlbnRMb2FkZWQvCi0JCQkJ
ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmRvU2Nyb2xsKCJsZWZ0Iik7Ci0JCQl9IGNhdGNoKCBl
cnJvciApIHsKLQkJCQlzZXRUaW1lb3V0KCBhcmd1bWVudHMuY2FsbGVlLCAwICk7Ci0JCQkJcmV0
dXJuOwotCQkJfQotCi0JCQkvLyBhbmQgZXhlY3V0ZSBhbnkgd2FpdGluZyBmdW5jdGlvbnMKLQkJ
CWpRdWVyeS5yZWFkeSgpOwotCQl9KSgpOwotCX0KLQotCS8vIEEgZmFsbGJhY2sgdG8gd2luZG93
Lm9ubG9hZCwgdGhhdCB3aWxsIGFsd2F5cyB3b3JrCi0JalF1ZXJ5LmV2ZW50LmFkZCggd2luZG93
LCAibG9hZCIsIGpRdWVyeS5yZWFkeSApOwotfQotCi1qUXVlcnkuZWFjaCggKCJibHVyLGZvY3Vz
LGxvYWQscmVzaXplLHNjcm9sbCx1bmxvYWQsY2xpY2ssZGJsY2xpY2ssIiArCi0JIm1vdXNlZG93
bixtb3VzZXVwLG1vdXNlbW92ZSxtb3VzZW92ZXIsbW91c2VvdXQsbW91c2VlbnRlcixtb3VzZWxl
YXZlLCIgKwotCSJjaGFuZ2Usc2VsZWN0LHN1Ym1pdCxrZXlkb3duLGtleXByZXNzLGtleXVwLGVy
cm9yIikuc3BsaXQoIiwiKSwgZnVuY3Rpb24oaSwgbmFtZSl7Ci0KLQkvLyBIYW5kbGUgZXZlbnQg
YmluZGluZwotCWpRdWVyeS5mbltuYW1lXSA9IGZ1bmN0aW9uKGZuKXsKLQkJcmV0dXJuIGZuID8g
dGhpcy5iaW5kKG5hbWUsIGZuKSA6IHRoaXMudHJpZ2dlcihuYW1lKTsKLQl9OwotfSk7Ci0KLS8v
IFByZXZlbnQgbWVtb3J5IGxlYWtzIGluIElFCi0vLyBBbmQgcHJldmVudCBlcnJvcnMgb24gcmVm
cmVzaCB3aXRoIGV2ZW50cyBsaWtlIG1vdXNlb3ZlciBpbiBvdGhlciBicm93c2VycwotLy8gV2lu
ZG93IGlzbid0IGluY2x1ZGVkIHNvIGFzIG5vdCB0byB1bmJpbmQgZXhpc3RpbmcgdW5sb2FkIGV2
ZW50cwotalF1ZXJ5KCB3aW5kb3cgKS5iaW5kKCAndW5sb2FkJywgZnVuY3Rpb24oKXsgCi0JZm9y
ICggdmFyIGlkIGluIGpRdWVyeS5jYWNoZSApCi0JCS8vIFNraXAgdGhlIHdpbmRvdwotCQlpZiAo
IGlkICE9IDEgJiYgalF1ZXJ5LmNhY2hlWyBpZCBdLmhhbmRsZSApCi0JCQlqUXVlcnkuZXZlbnQu
cmVtb3ZlKCBqUXVlcnkuY2FjaGVbIGlkIF0uaGFuZGxlLmVsZW0gKTsKLX0pOyAKLShmdW5jdGlv
bigpewotCi0JalF1ZXJ5LnN1cHBvcnQgPSB7fTsKLQotCXZhciByb290ID0gZG9jdW1lbnQuZG9j
dW1lbnRFbGVtZW50LAotCQlzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzY3JpcHQi
KSwKLQkJZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksCi0JCWlkID0gInNjcmlw
dCIgKyAobmV3IERhdGUpLmdldFRpbWUoKTsKLQotCWRpdi5zdHlsZS5kaXNwbGF5ID0gIm5vbmUi
OwotCWRpdi5pbm5lckhUTUwgPSAnICAgPGxpbmsvPjx0YWJsZT48L3RhYmxlPjxhIGhyZWY9Ii9h
IiBzdHlsZT0iY29sb3I6cmVkO2Zsb2F0OmxlZnQ7b3BhY2l0eTouNTsiPmE8L2E+PHNlbGVjdD48
b3B0aW9uPnRleHQ8L29wdGlvbj48L3NlbGVjdD48b2JqZWN0PjxwYXJhbS8+PC9vYmplY3Q+JzsK
LQotCXZhciBhbGwgPSBkaXYuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKSwKLQkJYSA9IGRpdi5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgiYSIpWzBdOwotCi0JLy8gQ2FuJ3QgZ2V0IGJhc2ljIHRlc3Qg
c3VwcG9ydAotCWlmICggIWFsbCB8fCAhYWxsLmxlbmd0aCB8fCAhYSApIHsKLQkJcmV0dXJuOwot
CX0KLQotCWpRdWVyeS5zdXBwb3J0ID0gewotCQkvLyBJRSBzdHJpcHMgbGVhZGluZyB3aGl0ZXNw
YWNlIHdoZW4gLmlubmVySFRNTCBpcyB1c2VkCi0JCWxlYWRpbmdXaGl0ZXNwYWNlOiBkaXYuZmly
c3RDaGlsZC5ub2RlVHlwZSA9PSAzLAotCQkKLQkJLy8gTWFrZSBzdXJlIHRoYXQgdGJvZHkgZWxl
bWVudHMgYXJlbid0IGF1dG9tYXRpY2FsbHkgaW5zZXJ0ZWQKLQkJLy8gSUUgd2lsbCBpbnNlcnQg
dGhlbSBpbnRvIGVtcHR5IHRhYmxlcwotCQl0Ym9keTogIWRpdi5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGJvZHkiKS5sZW5ndGgsCi0JCQotCQkvLyBNYWtlIHN1cmUgdGhhdCB5b3UgY2FuIGdldCBh
bGwgZWxlbWVudHMgaW4gYW4gPG9iamVjdD4gZWxlbWVudAotCQkvLyBJRSA3IGFsd2F5cyByZXR1
cm5zIG5vIHJlc3VsdHMKLQkJb2JqZWN0QWxsOiAhIWRpdi5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
b2JqZWN0IilbMF0KLQkJCS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpLmxlbmd0aCwKLQkJCi0J
CS8vIE1ha2Ugc3VyZSB0aGF0IGxpbmsgZWxlbWVudHMgZ2V0IHNlcmlhbGl6ZWQgY29ycmVjdGx5
IGJ5IGlubmVySFRNTAotCQkvLyBUaGlzIHJlcXVpcmVzIGEgd3JhcHBlciBlbGVtZW50IGluIElF
Ci0JCWh0bWxTZXJpYWxpemU6ICEhZGl2LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJsaW5rIikubGVu
Z3RoLAotCQkKLQkJLy8gR2V0IHRoZSBzdHlsZSBpbmZvcm1hdGlvbiBmcm9tIGdldEF0dHJpYnV0
ZQotCQkvLyAoSUUgdXNlcyAuY3NzVGV4dCBpbnN0ZWQpCi0JCXN0eWxlOiAvcmVkLy50ZXN0KCBh
LmdldEF0dHJpYnV0ZSgic3R5bGUiKSApLAotCQkKLQkJLy8gTWFrZSBzdXJlIHRoYXQgVVJMcyBh
cmVuJ3QgbWFuaXB1bGF0ZWQKLQkJLy8gKElFIG5vcm1hbGl6ZXMgaXQgYnkgZGVmYXVsdCkKLQkJ
aHJlZk5vcm1hbGl6ZWQ6IGEuZ2V0QXR0cmlidXRlKCJocmVmIikgPT09ICIvYSIsCi0JCQotCQkv
LyBNYWtlIHN1cmUgdGhhdCBlbGVtZW50IG9wYWNpdHkgZXhpc3RzCi0JCS8vIChJRSB1c2VzIGZp
bHRlciBpbnN0ZWFkKQotCQlvcGFjaXR5OiBhLnN0eWxlLm9wYWNpdHkgPT09ICIwLjUiLAotCQkK
LQkJLy8gVmVyaWZ5IHN0eWxlIGZsb2F0IGV4aXN0ZW5jZQotCQkvLyAoSUUgdXNlcyBzdHlsZUZs
b2F0IGluc3RlYWQgb2YgY3NzRmxvYXQpCi0JCWNzc0Zsb2F0OiAhIWEuc3R5bGUuY3NzRmxvYXQs
Ci0KLQkJLy8gV2lsbCBiZSBkZWZpbmVkIGxhdGVyCi0JCXNjcmlwdEV2YWw6IGZhbHNlLAotCQlu
b0Nsb25lRXZlbnQ6IHRydWUsCi0JCWJveE1vZGVsOiBudWxsCi0JfTsKLQkKLQlzY3JpcHQudHlw
ZSA9ICJ0ZXh0L2phdmFzY3JpcHQiOwotCXRyeSB7Ci0JCXNjcmlwdC5hcHBlbmRDaGlsZCggZG9j
dW1lbnQuY3JlYXRlVGV4dE5vZGUoICJ3aW5kb3cuIiArIGlkICsgIj0xOyIgKSApOwotCX0gY2F0
Y2goZSl7fQotCi0Jcm9vdC5pbnNlcnRCZWZvcmUoIHNjcmlwdCwgcm9vdC5maXJzdENoaWxkICk7
Ci0JCi0JLy8gTWFrZSBzdXJlIHRoYXQgdGhlIGV4ZWN1dGlvbiBvZiBjb2RlIHdvcmtzIGJ5IGlu
amVjdGluZyBhIHNjcmlwdAotCS8vIHRhZyB3aXRoIGFwcGVuZENoaWxkL2NyZWF0ZVRleHROb2Rl
Ci0JLy8gKElFIGRvZXNuJ3Qgc3VwcG9ydCB0aGlzLCBmYWlscywgYW5kIHVzZXMgLnRleHQgaW5z
dGVhZCkKLQlpZiAoIHdpbmRvd1sgaWQgXSApIHsKLQkJalF1ZXJ5LnN1cHBvcnQuc2NyaXB0RXZh
bCA9IHRydWU7Ci0JCWRlbGV0ZSB3aW5kb3dbIGlkIF07Ci0JfQotCi0Jcm9vdC5yZW1vdmVDaGls
ZCggc2NyaXB0ICk7Ci0KLQlpZiAoIGRpdi5hdHRhY2hFdmVudCAmJiBkaXYuZmlyZUV2ZW50ICkg
ewotCQlkaXYuYXR0YWNoRXZlbnQoIm9uY2xpY2siLCBmdW5jdGlvbigpewotCQkJLy8gQ2xvbmlu
ZyBhIG5vZGUgc2hvdWxkbid0IGNvcHkgb3ZlciBhbnkKLQkJCS8vIGJvdW5kIGV2ZW50IGhhbmRs
ZXJzIChJRSBkb2VzIHRoaXMpCi0JCQlqUXVlcnkuc3VwcG9ydC5ub0Nsb25lRXZlbnQgPSBmYWxz
ZTsKLQkJCWRpdi5kZXRhY2hFdmVudCgib25jbGljayIsIGFyZ3VtZW50cy5jYWxsZWUpOwotCQl9
KTsKLQkJZGl2LmNsb25lTm9kZSh0cnVlKS5maXJlRXZlbnQoIm9uY2xpY2siKTsKLQl9Ci0KLQkv
LyBGaWd1cmUgb3V0IGlmIHRoZSBXM0MgYm94IG1vZGVsIHdvcmtzIGFzIGV4cGVjdGVkCi0JLy8g
ZG9jdW1lbnQuYm9keSBtdXN0IGV4aXN0IGJlZm9yZSB3ZSBjYW4gZG8gdGhpcwotCWpRdWVyeShm
dW5jdGlvbigpewotCQl2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0J
CWRpdi5zdHlsZS53aWR0aCA9IGRpdi5zdHlsZS5wYWRkaW5nTGVmdCA9ICIxcHgiOwotCi0JCWRv
Y3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoIGRpdiApOwotCQlqUXVlcnkuYm94TW9kZWwgPSBqUXVl
cnkuc3VwcG9ydC5ib3hNb2RlbCA9IGRpdi5vZmZzZXRXaWR0aCA9PT0gMjsKLQkJZG9jdW1lbnQu
Ym9keS5yZW1vdmVDaGlsZCggZGl2ICkuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKLQl9KTsKLX0p
KCk7Ci0KLXZhciBzdHlsZUZsb2F0ID0galF1ZXJ5LnN1cHBvcnQuY3NzRmxvYXQgPyAiY3NzRmxv
YXQiIDogInN0eWxlRmxvYXQiOwotCi1qUXVlcnkucHJvcHMgPSB7Ci0JImZvciI6ICJodG1sRm9y
IiwKLQkiY2xhc3MiOiAiY2xhc3NOYW1lIiwKLQkiZmxvYXQiOiBzdHlsZUZsb2F0LAotCWNzc0Zs
b2F0OiBzdHlsZUZsb2F0LAotCXN0eWxlRmxvYXQ6IHN0eWxlRmxvYXQsCi0JcmVhZG9ubHk6ICJy
ZWFkT25seSIsCi0JbWF4bGVuZ3RoOiAibWF4TGVuZ3RoIiwKLQljZWxsc3BhY2luZzogImNlbGxT
cGFjaW5nIiwKLQlyb3dzcGFuOiAicm93U3BhbiIsCi0JdGFiaW5kZXg6ICJ0YWJJbmRleCIKLX07
Ci1qUXVlcnkuZm4uZXh0ZW5kKHsKLQkvLyBLZWVwIGEgY29weSBvZiB0aGUgb2xkIGxvYWQKLQlf
bG9hZDogalF1ZXJ5LmZuLmxvYWQsCi0KLQlsb2FkOiBmdW5jdGlvbiggdXJsLCBwYXJhbXMsIGNh
bGxiYWNrICkgewotCQlpZiAoIHR5cGVvZiB1cmwgIT09ICJzdHJpbmciICkKLQkJCXJldHVybiB0
aGlzLl9sb2FkKCB1cmwgKTsKLQotCQl2YXIgb2ZmID0gdXJsLmluZGV4T2YoIiAiKTsKLQkJaWYg
KCBvZmYgPj0gMCApIHsKLQkJCXZhciBzZWxlY3RvciA9IHVybC5zbGljZShvZmYsIHVybC5sZW5n
dGgpOwotCQkJdXJsID0gdXJsLnNsaWNlKDAsIG9mZik7Ci0JCX0KLQotCQkvLyBEZWZhdWx0IHRv
IGEgR0VUIHJlcXVlc3QKLQkJdmFyIHR5cGUgPSAiR0VUIjsKLQotCQkvLyBJZiB0aGUgc2Vjb25k
IHBhcmFtZXRlciB3YXMgcHJvdmlkZWQKLQkJaWYgKCBwYXJhbXMgKQotCQkJLy8gSWYgaXQncyBh
IGZ1bmN0aW9uCi0JCQlpZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCBwYXJhbXMgKSApIHsKLQkJCQkv
LyBXZSBhc3N1bWUgdGhhdCBpdCdzIHRoZSBjYWxsYmFjawotCQkJCWNhbGxiYWNrID0gcGFyYW1z
OwotCQkJCXBhcmFtcyA9IG51bGw7Ci0KLQkJCS8vIE90aGVyd2lzZSwgYnVpbGQgYSBwYXJhbSBz
dHJpbmcKLQkJCX0gZWxzZSBpZiggdHlwZW9mIHBhcmFtcyA9PT0gIm9iamVjdCIgKSB7Ci0JCQkJ
cGFyYW1zID0galF1ZXJ5LnBhcmFtKCBwYXJhbXMgKTsKLQkJCQl0eXBlID0gIlBPU1QiOwotCQkJ
fQotCi0JCXZhciBzZWxmID0gdGhpczsKLQotCQkvLyBSZXF1ZXN0IHRoZSByZW1vdGUgZG9jdW1l
bnQKLQkJalF1ZXJ5LmFqYXgoewotCQkJdXJsOiB1cmwsCi0JCQl0eXBlOiB0eXBlLAotCQkJZGF0
YVR5cGU6ICJodG1sIiwKLQkJCWRhdGE6IHBhcmFtcywKLQkJCWNvbXBsZXRlOiBmdW5jdGlvbihy
ZXMsIHN0YXR1cyl7Ci0JCQkJLy8gSWYgc3VjY2Vzc2Z1bCwgaW5qZWN0IHRoZSBIVE1MIGludG8g
YWxsIHRoZSBtYXRjaGVkIGVsZW1lbnRzCi0JCQkJaWYgKCBzdGF0dXMgPT0gInN1Y2Nlc3MiIHx8
IHN0YXR1cyA9PSAibm90bW9kaWZpZWQiICkKLQkJCQkJLy8gU2VlIGlmIGEgc2VsZWN0b3Igd2Fz
IHNwZWNpZmllZAotCQkJCQlzZWxmLmh0bWwoIHNlbGVjdG9yID8KLQkJCQkJCS8vIENyZWF0ZSBh
IGR1bW15IGRpdiB0byBob2xkIHRoZSByZXN1bHRzCi0JCQkJCQlqUXVlcnkoIjxkaXYvPiIpCi0J
CQkJCQkJLy8gaW5qZWN0IHRoZSBjb250ZW50cyBvZiB0aGUgZG9jdW1lbnQgaW4sIHJlbW92aW5n
IHRoZSBzY3JpcHRzCi0JCQkJCQkJLy8gdG8gYXZvaWQgYW55ICdQZXJtaXNzaW9uIERlbmllZCcg
ZXJyb3JzIGluIElFCi0JCQkJCQkJLmFwcGVuZChyZXMucmVzcG9uc2VUZXh0LnJlcGxhY2UoLzxz
Y3JpcHQoLnxccykqP1wvc2NyaXB0Pi9nLCAiIikpCi0KLQkJCQkJCQkvLyBMb2NhdGUgdGhlIHNw
ZWNpZmllZCBlbGVtZW50cwotCQkJCQkJCS5maW5kKHNlbGVjdG9yKSA6Ci0KLQkJCQkJCS8vIElm
IG5vdCwganVzdCBpbmplY3QgdGhlIGZ1bGwgcmVzdWx0Ci0JCQkJCQlyZXMucmVzcG9uc2VUZXh0
ICk7Ci0KLQkJCQlpZiggY2FsbGJhY2sgKQotCQkJCQlzZWxmLmVhY2goIGNhbGxiYWNrLCBbcmVz
LnJlc3BvbnNlVGV4dCwgc3RhdHVzLCByZXNdICk7Ci0JCQl9Ci0JCX0pOwotCQlyZXR1cm4gdGhp
czsKLQl9LAotCi0Jc2VyaWFsaXplOiBmdW5jdGlvbigpIHsKLQkJcmV0dXJuIGpRdWVyeS5wYXJh
bSh0aGlzLnNlcmlhbGl6ZUFycmF5KCkpOwotCX0sCi0Jc2VyaWFsaXplQXJyYXk6IGZ1bmN0aW9u
KCkgewotCQlyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXsKLQkJCXJldHVybiB0aGlzLmVsZW1l
bnRzID8galF1ZXJ5Lm1ha2VBcnJheSh0aGlzLmVsZW1lbnRzKSA6IHRoaXM7Ci0JCX0pCi0JCS5m
aWx0ZXIoZnVuY3Rpb24oKXsKLQkJCXJldHVybiB0aGlzLm5hbWUgJiYgIXRoaXMuZGlzYWJsZWQg
JiYKLQkJCQkodGhpcy5jaGVja2VkIHx8IC9zZWxlY3R8dGV4dGFyZWEvaS50ZXN0KHRoaXMubm9k
ZU5hbWUpIHx8Ci0JCQkJCS90ZXh0fGhpZGRlbnxwYXNzd29yZHxzZWFyY2gvaS50ZXN0KHRoaXMu
dHlwZSkpOwotCQl9KQotCQkubWFwKGZ1bmN0aW9uKGksIGVsZW0pewotCQkJdmFyIHZhbCA9IGpR
dWVyeSh0aGlzKS52YWwoKTsKLQkJCXJldHVybiB2YWwgPT0gbnVsbCA/IG51bGwgOgotCQkJCWpR
dWVyeS5pc0FycmF5KHZhbCkgPwotCQkJCQlqUXVlcnkubWFwKCB2YWwsIGZ1bmN0aW9uKHZhbCwg
aSl7Ci0JCQkJCQlyZXR1cm4ge25hbWU6IGVsZW0ubmFtZSwgdmFsdWU6IHZhbH07Ci0JCQkJCX0p
IDoKLQkJCQkJe25hbWU6IGVsZW0ubmFtZSwgdmFsdWU6IHZhbH07Ci0JCX0pLmdldCgpOwotCX0K
LX0pOwotCi0vLyBBdHRhY2ggYSBidW5jaCBvZiBmdW5jdGlvbnMgZm9yIGhhbmRsaW5nIGNvbW1v
biBBSkFYIGV2ZW50cwotalF1ZXJ5LmVhY2goICJhamF4U3RhcnQsYWpheFN0b3AsYWpheENvbXBs
ZXRlLGFqYXhFcnJvcixhamF4U3VjY2VzcyxhamF4U2VuZCIuc3BsaXQoIiwiKSwgZnVuY3Rpb24o
aSxvKXsKLQlqUXVlcnkuZm5bb10gPSBmdW5jdGlvbihmKXsKLQkJcmV0dXJuIHRoaXMuYmluZChv
LCBmKTsKLQl9OwotfSk7Ci0KLXZhciBqc2MgPSBub3coKTsKLQotalF1ZXJ5LmV4dGVuZCh7Ci0g
IAotCWdldDogZnVuY3Rpb24oIHVybCwgZGF0YSwgY2FsbGJhY2ssIHR5cGUgKSB7Ci0JCS8vIHNo
aWZ0IGFyZ3VtZW50cyBpZiBkYXRhIGFyZ3VtZW50IHdhcyBvbW1pdGVkCi0JCWlmICggalF1ZXJ5
LmlzRnVuY3Rpb24oIGRhdGEgKSApIHsKLQkJCWNhbGxiYWNrID0gZGF0YTsKLQkJCWRhdGEgPSBu
dWxsOwotCQl9Ci0KLQkJcmV0dXJuIGpRdWVyeS5hamF4KHsKLQkJCXR5cGU6ICJHRVQiLAotCQkJ
dXJsOiB1cmwsCi0JCQlkYXRhOiBkYXRhLAotCQkJc3VjY2VzczogY2FsbGJhY2ssCi0JCQlkYXRh
VHlwZTogdHlwZQotCQl9KTsKLQl9LAotCi0JZ2V0U2NyaXB0OiBmdW5jdGlvbiggdXJsLCBjYWxs
YmFjayApIHsKLQkJcmV0dXJuIGpRdWVyeS5nZXQodXJsLCBudWxsLCBjYWxsYmFjaywgInNjcmlw
dCIpOwotCX0sCi0KLQlnZXRKU09OOiBmdW5jdGlvbiggdXJsLCBkYXRhLCBjYWxsYmFjayApIHsK
LQkJcmV0dXJuIGpRdWVyeS5nZXQodXJsLCBkYXRhLCBjYWxsYmFjaywgImpzb24iKTsKLQl9LAot
Ci0JcG9zdDogZnVuY3Rpb24oIHVybCwgZGF0YSwgY2FsbGJhY2ssIHR5cGUgKSB7Ci0JCWlmICgg
alF1ZXJ5LmlzRnVuY3Rpb24oIGRhdGEgKSApIHsKLQkJCWNhbGxiYWNrID0gZGF0YTsKLQkJCWRh
dGEgPSB7fTsKLQkJfQotCi0JCXJldHVybiBqUXVlcnkuYWpheCh7Ci0JCQl0eXBlOiAiUE9TVCIs
Ci0JCQl1cmw6IHVybCwKLQkJCWRhdGE6IGRhdGEsCi0JCQlzdWNjZXNzOiBjYWxsYmFjaywKLQkJ
CWRhdGFUeXBlOiB0eXBlCi0JCX0pOwotCX0sCi0KLQlhamF4U2V0dXA6IGZ1bmN0aW9uKCBzZXR0
aW5ncyApIHsKLQkJalF1ZXJ5LmV4dGVuZCggalF1ZXJ5LmFqYXhTZXR0aW5ncywgc2V0dGluZ3Mg
KTsKLQl9LAotCi0JYWpheFNldHRpbmdzOiB7Ci0JCXVybDogbG9jYXRpb24uaHJlZiwKLQkJZ2xv
YmFsOiB0cnVlLAotCQl0eXBlOiAiR0VUIiwKLQkJY29udGVudFR5cGU6ICJhcHBsaWNhdGlvbi94
LXd3dy1mb3JtLXVybGVuY29kZWQiLAotCQlwcm9jZXNzRGF0YTogdHJ1ZSwKLQkJYXN5bmM6IHRy
dWUsCi0JCS8qCi0JCXRpbWVvdXQ6IDAsCi0JCWRhdGE6IG51bGwsCi0JCXVzZXJuYW1lOiBudWxs
LAotCQlwYXNzd29yZDogbnVsbCwKLQkJKi8KLQkJLy8gQ3JlYXRlIHRoZSByZXF1ZXN0IG9iamVj
dDsgTWljcm9zb2Z0IGZhaWxlZCB0byBwcm9wZXJseQotCQkvLyBpbXBsZW1lbnQgdGhlIFhNTEh0
dHBSZXF1ZXN0IGluIElFNywgc28gd2UgdXNlIHRoZSBBY3RpdmVYT2JqZWN0IHdoZW4gaXQgaXMg
YXZhaWxhYmxlCi0JCS8vIFRoaXMgZnVuY3Rpb24gY2FuIGJlIG92ZXJyaWRlbiBieSBjYWxsaW5n
IGpRdWVyeS5hamF4U2V0dXAKLQkJeGhyOmZ1bmN0aW9uKCl7Ci0JCQlyZXR1cm4gd2luZG93LkFj
dGl2ZVhPYmplY3QgPyBuZXcgQWN0aXZlWE9iamVjdCgiTWljcm9zb2Z0LlhNTEhUVFAiKSA6IG5l
dyBYTUxIdHRwUmVxdWVzdCgpOwotCQl9LAotCQlhY2NlcHRzOiB7Ci0JCQl4bWw6ICJhcHBsaWNh
dGlvbi94bWwsIHRleHQveG1sIiwKLQkJCWh0bWw6ICJ0ZXh0L2h0bWwiLAotCQkJc2NyaXB0OiAi
dGV4dC9qYXZhc2NyaXB0LCBhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiwKLQkJCWpzb246ICJhcHBs
aWNhdGlvbi9qc29uLCB0ZXh0L2phdmFzY3JpcHQiLAotCQkJdGV4dDogInRleHQvcGxhaW4iLAot
CQkJX2RlZmF1bHQ6ICIqLyoiCi0JCX0KLQl9LAotCi0JLy8gTGFzdC1Nb2RpZmllZCBoZWFkZXIg
Y2FjaGUgZm9yIG5leHQgcmVxdWVzdAotCWxhc3RNb2RpZmllZDoge30sCi0KLQlhamF4OiBmdW5j
dGlvbiggcyApIHsKLQkJLy8gRXh0ZW5kIHRoZSBzZXR0aW5ncywgYnV0IHJlLWV4dGVuZCAncycg
c28gdGhhdCBpdCBjYW4gYmUKLQkJLy8gY2hlY2tlZCBhZ2FpbiBsYXRlciAoaW4gdGhlIHRlc3Qg
c3VpdGUsIHNwZWNpZmljYWxseSkKLQkJcyA9IGpRdWVyeS5leHRlbmQodHJ1ZSwgcywgalF1ZXJ5
LmV4dGVuZCh0cnVlLCB7fSwgalF1ZXJ5LmFqYXhTZXR0aW5ncywgcykpOwotCi0JCXZhciBqc29u
cCwganNyZSA9IC89XD8oJnwkKS9nLCBzdGF0dXMsIGRhdGEsCi0JCQl0eXBlID0gcy50eXBlLnRv
VXBwZXJDYXNlKCk7Ci0KLQkJLy8gY29udmVydCBkYXRhIGlmIG5vdCBhbHJlYWR5IGEgc3RyaW5n
Ci0JCWlmICggcy5kYXRhICYmIHMucHJvY2Vzc0RhdGEgJiYgdHlwZW9mIHMuZGF0YSAhPT0gInN0
cmluZyIgKQotCQkJcy5kYXRhID0galF1ZXJ5LnBhcmFtKHMuZGF0YSk7Ci0KLQkJLy8gSGFuZGxl
IEpTT05QIFBhcmFtZXRlciBDYWxsYmFja3MKLQkJaWYgKCBzLmRhdGFUeXBlID09ICJqc29ucCIg
KSB7Ci0JCQlpZiAoIHR5cGUgPT0gIkdFVCIgKSB7Ci0JCQkJaWYgKCAhcy51cmwubWF0Y2goanNy
ZSkgKQotCQkJCQlzLnVybCArPSAocy51cmwubWF0Y2goL1w/LykgPyAiJiIgOiAiPyIpICsgKHMu
anNvbnAgfHwgImNhbGxiYWNrIikgKyAiPT8iOwotCQkJfSBlbHNlIGlmICggIXMuZGF0YSB8fCAh
cy5kYXRhLm1hdGNoKGpzcmUpICkKLQkJCQlzLmRhdGEgPSAocy5kYXRhID8gcy5kYXRhICsgIiYi
IDogIiIpICsgKHMuanNvbnAgfHwgImNhbGxiYWNrIikgKyAiPT8iOwotCQkJcy5kYXRhVHlwZSA9
ICJqc29uIjsKLQkJfQotCi0JCS8vIEJ1aWxkIHRlbXBvcmFyeSBKU09OUCBmdW5jdGlvbgotCQlp
ZiAoIHMuZGF0YVR5cGUgPT0gImpzb24iICYmIChzLmRhdGEgJiYgcy5kYXRhLm1hdGNoKGpzcmUp
IHx8IHMudXJsLm1hdGNoKGpzcmUpKSApIHsKLQkJCWpzb25wID0gImpzb25wIiArIGpzYysrOwot
Ci0JCQkvLyBSZXBsYWNlIHRoZSA9PyBzZXF1ZW5jZSBib3RoIGluIHRoZSBxdWVyeSBzdHJpbmcg
YW5kIHRoZSBkYXRhCi0JCQlpZiAoIHMuZGF0YSApCi0JCQkJcy5kYXRhID0gKHMuZGF0YSArICIi
KS5yZXBsYWNlKGpzcmUsICI9IiArIGpzb25wICsgIiQxIik7Ci0JCQlzLnVybCA9IHMudXJsLnJl
cGxhY2UoanNyZSwgIj0iICsganNvbnAgKyAiJDEiKTsKLQotCQkJLy8gV2UgbmVlZCB0byBtYWtl
IHN1cmUKLQkJCS8vIHRoYXQgYSBKU09OUCBzdHlsZSByZXNwb25zZSBpcyBleGVjdXRlZCBwcm9w
ZXJseQotCQkJcy5kYXRhVHlwZSA9ICJzY3JpcHQiOwotCi0JCQkvLyBIYW5kbGUgSlNPTlAtc3R5
bGUgbG9hZGluZwotCQkJd2luZG93WyBqc29ucCBdID0gZnVuY3Rpb24odG1wKXsKLQkJCQlkYXRh
ID0gdG1wOwotCQkJCXN1Y2Nlc3MoKTsKLQkJCQljb21wbGV0ZSgpOwotCQkJCS8vIEdhcmJhZ2Ug
Y29sbGVjdAotCQkJCXdpbmRvd1sganNvbnAgXSA9IHVuZGVmaW5lZDsKLQkJCQl0cnl7IGRlbGV0
ZSB3aW5kb3dbIGpzb25wIF07IH0gY2F0Y2goZSl7fQotCQkJCWlmICggaGVhZCApCi0JCQkJCWhl
YWQucmVtb3ZlQ2hpbGQoIHNjcmlwdCApOwotCQkJfTsKLQkJfQotCi0JCWlmICggcy5kYXRhVHlw
ZSA9PSAic2NyaXB0IiAmJiBzLmNhY2hlID09IG51bGwgKQotCQkJcy5jYWNoZSA9IGZhbHNlOwot
Ci0JCWlmICggcy5jYWNoZSA9PT0gZmFsc2UgJiYgdHlwZSA9PSAiR0VUIiApIHsKLQkJCXZhciB0
cyA9IG5vdygpOwotCQkJLy8gdHJ5IHJlcGxhY2luZyBfPSBpZiBpdCBpcyB0aGVyZQotCQkJdmFy
IHJldCA9IHMudXJsLnJlcGxhY2UoLyhcP3wmKV89Lio/KCZ8JCkvLCAiJDFfPSIgKyB0cyArICIk
MiIpOwotCQkJLy8gaWYgbm90aGluZyB3YXMgcmVwbGFjZWQsIGFkZCB0aW1lc3RhbXAgdG8gdGhl
IGVuZAotCQkJcy51cmwgPSByZXQgKyAoKHJldCA9PSBzLnVybCkgPyAocy51cmwubWF0Y2goL1w/
LykgPyAiJiIgOiAiPyIpICsgIl89IiArIHRzIDogIiIpOwotCQl9Ci0KLQkJLy8gSWYgZGF0YSBp
cyBhdmFpbGFibGUsIGFwcGVuZCBkYXRhIHRvIHVybCBmb3IgZ2V0IHJlcXVlc3RzCi0JCWlmICgg
cy5kYXRhICYmIHR5cGUgPT0gIkdFVCIgKSB7Ci0JCQlzLnVybCArPSAocy51cmwubWF0Y2goL1w/
LykgPyAiJiIgOiAiPyIpICsgcy5kYXRhOwotCi0JCQkvLyBJRSBsaWtlcyB0byBzZW5kIGJvdGgg
Z2V0IGFuZCBwb3N0IGRhdGEsIHByZXZlbnQgdGhpcwotCQkJcy5kYXRhID0gbnVsbDsKLQkJfQot
Ci0JCS8vIFdhdGNoIGZvciBhIG5ldyBzZXQgb2YgcmVxdWVzdHMKLQkJaWYgKCBzLmdsb2JhbCAm
JiAhIGpRdWVyeS5hY3RpdmUrKyApCi0JCQlqUXVlcnkuZXZlbnQudHJpZ2dlciggImFqYXhTdGFy
dCIgKTsKLQotCQkvLyBNYXRjaGVzIGFuIGFic29sdXRlIFVSTCwgYW5kIHNhdmVzIHRoZSBkb21h
aW4KLQkJdmFyIHBhcnRzID0gL14oXHcrOik/XC9cLyhbXlwvPyNdKykvLmV4ZWMoIHMudXJsICk7
Ci0KLQkJLy8gSWYgd2UncmUgcmVxdWVzdGluZyBhIHJlbW90ZSBkb2N1bWVudAotCQkvLyBhbmQg
dHJ5aW5nIHRvIGxvYWQgSlNPTiBvciBTY3JpcHQgd2l0aCBhIEdFVAotCQlpZiAoIHMuZGF0YVR5
cGUgPT0gInNjcmlwdCIgJiYgdHlwZSA9PSAiR0VUIiAmJiBwYXJ0cwotCQkJJiYgKCBwYXJ0c1sx
XSAmJiBwYXJ0c1sxXSAhPSBsb2NhdGlvbi5wcm90b2NvbCB8fCBwYXJ0c1syXSAhPSBsb2NhdGlv
bi5ob3N0ICkpewotCi0JCQl2YXIgaGVhZCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJoZWFkIilbMF07Ci0JCQl2YXIgc2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2Ny
aXB0Iik7Ci0JCQlzY3JpcHQuc3JjID0gcy51cmw7Ci0JCQlpZiAocy5zY3JpcHRDaGFyc2V0KQot
CQkJCXNjcmlwdC5jaGFyc2V0ID0gcy5zY3JpcHRDaGFyc2V0OwotCi0JCQkvLyBIYW5kbGUgU2Ny
aXB0IGxvYWRpbmcKLQkJCWlmICggIWpzb25wICkgewotCQkJCXZhciBkb25lID0gZmFsc2U7Ci0K
LQkJCQkvLyBBdHRhY2ggaGFuZGxlcnMgZm9yIGFsbCBicm93c2VycwotCQkJCXNjcmlwdC5vbmxv
YWQgPSBzY3JpcHQub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24oKXsKLQkJCQkJaWYgKCAh
ZG9uZSAmJiAoIXRoaXMucmVhZHlTdGF0ZSB8fAotCQkJCQkJCXRoaXMucmVhZHlTdGF0ZSA9PSAi
bG9hZGVkIiB8fCB0aGlzLnJlYWR5U3RhdGUgPT0gImNvbXBsZXRlIikgKSB7Ci0JCQkJCQlkb25l
ID0gdHJ1ZTsKLQkJCQkJCXN1Y2Nlc3MoKTsKLQkJCQkJCWNvbXBsZXRlKCk7Ci0KLQkJCQkJCS8v
IEhhbmRsZSBtZW1vcnkgbGVhayBpbiBJRQotCQkJCQkJc2NyaXB0Lm9ubG9hZCA9IHNjcmlwdC5v
bnJlYWR5c3RhdGVjaGFuZ2UgPSBudWxsOwotCQkJCQkJaGVhZC5yZW1vdmVDaGlsZCggc2NyaXB0
ICk7Ci0JCQkJCX0KLQkJCQl9OwotCQkJfQotCi0JCQloZWFkLmFwcGVuZENoaWxkKHNjcmlwdCk7
Ci0KLQkJCS8vIFdlIGhhbmRsZSBldmVyeXRoaW5nIHVzaW5nIHRoZSBzY3JpcHQgZWxlbWVudCBp
bmplY3Rpb24KLQkJCXJldHVybiB1bmRlZmluZWQ7Ci0JCX0KLQotCQl2YXIgcmVxdWVzdERvbmUg
PSBmYWxzZTsKLQotCQkvLyBDcmVhdGUgdGhlIHJlcXVlc3Qgb2JqZWN0Ci0JCXZhciB4aHIgPSBz
LnhocigpOwotCi0JCS8vIE9wZW4gdGhlIHNvY2tldAotCQkvLyBQYXNzaW5nIG51bGwgdXNlcm5h
bWUsIGdlbmVyYXRlcyBhIGxvZ2luIHBvcHVwIG9uIE9wZXJhICgjMjg2NSkKLQkJaWYoIHMudXNl
cm5hbWUgKQotCQkJeGhyLm9wZW4odHlwZSwgcy51cmwsIHMuYXN5bmMsIHMudXNlcm5hbWUsIHMu
cGFzc3dvcmQpOwotCQllbHNlCi0JCQl4aHIub3Blbih0eXBlLCBzLnVybCwgcy5hc3luYyk7Ci0K
LQkJLy8gTmVlZCBhbiBleHRyYSB0cnkvY2F0Y2ggZm9yIGNyb3NzIGRvbWFpbiByZXF1ZXN0cyBp
biBGaXJlZm94IDMKLQkJdHJ5IHsKLQkJCS8vIFNldCB0aGUgY29ycmVjdCBoZWFkZXIsIGlmIGRh
dGEgaXMgYmVpbmcgc2VudAotCQkJaWYgKCBzLmRhdGEgKQotCQkJCXhoci5zZXRSZXF1ZXN0SGVh
ZGVyKCJDb250ZW50LVR5cGUiLCBzLmNvbnRlbnRUeXBlKTsKLQotCQkJLy8gU2V0IHRoZSBJZi1N
b2RpZmllZC1TaW5jZSBoZWFkZXIsIGlmIGlmTW9kaWZpZWQgbW9kZS4KLQkJCWlmICggcy5pZk1v
ZGlmaWVkICkKLQkJCQl4aHIuc2V0UmVxdWVzdEhlYWRlcigiSWYtTW9kaWZpZWQtU2luY2UiLAot
CQkJCQlqUXVlcnkubGFzdE1vZGlmaWVkW3MudXJsXSB8fCAiVGh1LCAwMSBKYW4gMTk3MCAwMDow
MDowMCBHTVQiICk7Ci0KLQkJCS8vIFNldCBoZWFkZXIgc28gdGhlIGNhbGxlZCBzY3JpcHQga25v
d3MgdGhhdCBpdCdzIGFuIFhNTEh0dHBSZXF1ZXN0Ci0JCQl4aHIuc2V0UmVxdWVzdEhlYWRlcigi
WC1SZXF1ZXN0ZWQtV2l0aCIsICJYTUxIdHRwUmVxdWVzdCIpOwotCi0JCQkvLyBTZXQgdGhlIEFj
Y2VwdHMgaGVhZGVyIGZvciB0aGUgc2VydmVyLCBkZXBlbmRpbmcgb24gdGhlIGRhdGFUeXBlCi0J
CQl4aHIuc2V0UmVxdWVzdEhlYWRlcigiQWNjZXB0Iiwgcy5kYXRhVHlwZSAmJiBzLmFjY2VwdHNb
IHMuZGF0YVR5cGUgXSA/Ci0JCQkJcy5hY2NlcHRzWyBzLmRhdGFUeXBlIF0gKyAiLCAqLyoiIDoK
LQkJCQlzLmFjY2VwdHMuX2RlZmF1bHQgKTsKLQkJfSBjYXRjaChlKXt9Ci0KLQkJLy8gQWxsb3cg
Y3VzdG9tIGhlYWRlcnMvbWltZXR5cGVzIGFuZCBlYXJseSBhYm9ydAotCQlpZiAoIHMuYmVmb3Jl
U2VuZCAmJiBzLmJlZm9yZVNlbmQoeGhyLCBzKSA9PT0gZmFsc2UgKSB7Ci0JCQkvLyBIYW5kbGUg
dGhlIGdsb2JhbCBBSkFYIGNvdW50ZXIKLQkJCWlmICggcy5nbG9iYWwgJiYgISAtLWpRdWVyeS5h
Y3RpdmUgKQotCQkJCWpRdWVyeS5ldmVudC50cmlnZ2VyKCAiYWpheFN0b3AiICk7Ci0JCQkvLyBj
bG9zZSBvcGVuZGVkIHNvY2tldAotCQkJeGhyLmFib3J0KCk7Ci0JCQlyZXR1cm4gZmFsc2U7Ci0J
CX0KLQotCQlpZiAoIHMuZ2xvYmFsICkKLQkJCWpRdWVyeS5ldmVudC50cmlnZ2VyKCJhamF4U2Vu
ZCIsIFt4aHIsIHNdKTsKLQotCQkvLyBXYWl0IGZvciBhIHJlc3BvbnNlIHRvIGNvbWUgYmFjawot
CQl2YXIgb25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24oaXNUaW1lb3V0KXsKLQkJCS8vIFRo
ZSByZXF1ZXN0IHdhcyBhYm9ydGVkLCBjbGVhciB0aGUgaW50ZXJ2YWwgYW5kIGRlY3JlbWVudCBq
UXVlcnkuYWN0aXZlCi0JCQlpZiAoeGhyLnJlYWR5U3RhdGUgPT0gMCkgewotCQkJCWlmIChpdmFs
KSB7Ci0JCQkJCS8vIGNsZWFyIHBvbGwgaW50ZXJ2YWwKLQkJCQkJY2xlYXJJbnRlcnZhbChpdmFs
KTsKLQkJCQkJaXZhbCA9IG51bGw7Ci0JCQkJCS8vIEhhbmRsZSB0aGUgZ2xvYmFsIEFKQVggY291
bnRlcgotCQkJCQlpZiAoIHMuZ2xvYmFsICYmICEgLS1qUXVlcnkuYWN0aXZlICkKLQkJCQkJCWpR
dWVyeS5ldmVudC50cmlnZ2VyKCAiYWpheFN0b3AiICk7Ci0JCQkJfQotCQkJLy8gVGhlIHRyYW5z
ZmVyIGlzIGNvbXBsZXRlIGFuZCB0aGUgZGF0YSBpcyBhdmFpbGFibGUsIG9yIHRoZSByZXF1ZXN0
IHRpbWVkIG91dAotCQkJfSBlbHNlIGlmICggIXJlcXVlc3REb25lICYmIHhociAmJiAoeGhyLnJl
YWR5U3RhdGUgPT0gNCB8fCBpc1RpbWVvdXQgPT0gInRpbWVvdXQiKSApIHsKLQkJCQlyZXF1ZXN0
RG9uZSA9IHRydWU7Ci0KLQkJCQkvLyBjbGVhciBwb2xsIGludGVydmFsCi0JCQkJaWYgKGl2YWwp
IHsKLQkJCQkJY2xlYXJJbnRlcnZhbChpdmFsKTsKLQkJCQkJaXZhbCA9IG51bGw7Ci0JCQkJfQot
Ci0JCQkJc3RhdHVzID0gaXNUaW1lb3V0ID09ICJ0aW1lb3V0IiA/ICJ0aW1lb3V0IiA6Ci0JCQkJ
CSFqUXVlcnkuaHR0cFN1Y2Nlc3MoIHhociApID8gImVycm9yIiA6Ci0JCQkJCXMuaWZNb2RpZmll
ZCAmJiBqUXVlcnkuaHR0cE5vdE1vZGlmaWVkKCB4aHIsIHMudXJsICkgPyAibm90bW9kaWZpZWQi
IDoKLQkJCQkJInN1Y2Nlc3MiOwotCi0JCQkJaWYgKCBzdGF0dXMgPT0gInN1Y2Nlc3MiICkgewot
CQkJCQkvLyBXYXRjaCBmb3IsIGFuZCBjYXRjaCwgWE1MIGRvY3VtZW50IHBhcnNlIGVycm9ycwot
CQkJCQl0cnkgewotCQkJCQkJLy8gcHJvY2VzcyB0aGUgZGF0YSAocnVucyB0aGUgeG1sIHRocm91
Z2ggaHR0cERhdGEgcmVnYXJkbGVzcyBvZiBjYWxsYmFjaykKLQkJCQkJCWRhdGEgPSBqUXVlcnku
aHR0cERhdGEoIHhociwgcy5kYXRhVHlwZSwgcyApOwotCQkJCQl9IGNhdGNoKGUpIHsKLQkJCQkJ
CXN0YXR1cyA9ICJwYXJzZXJlcnJvciI7Ci0JCQkJCX0KLQkJCQl9Ci0KLQkJCQkvLyBNYWtlIHN1
cmUgdGhhdCB0aGUgcmVxdWVzdCB3YXMgc3VjY2Vzc2Z1bCBvciBub3Rtb2RpZmllZAotCQkJCWlm
ICggc3RhdHVzID09ICJzdWNjZXNzIiApIHsKLQkJCQkJLy8gQ2FjaGUgTGFzdC1Nb2RpZmllZCBo
ZWFkZXIsIGlmIGlmTW9kaWZpZWQgbW9kZS4KLQkJCQkJdmFyIG1vZFJlczsKLQkJCQkJdHJ5IHsK
LQkJCQkJCW1vZFJlcyA9IHhoci5nZXRSZXNwb25zZUhlYWRlcigiTGFzdC1Nb2RpZmllZCIpOwot
CQkJCQl9IGNhdGNoKGUpIHt9IC8vIHN3YWxsb3cgZXhjZXB0aW9uIHRocm93biBieSBGRiBpZiBo
ZWFkZXIgaXMgbm90IGF2YWlsYWJsZQotCi0JCQkJCWlmICggcy5pZk1vZGlmaWVkICYmIG1vZFJl
cyApCi0JCQkJCQlqUXVlcnkubGFzdE1vZGlmaWVkW3MudXJsXSA9IG1vZFJlczsKLQotCQkJCQkv
LyBKU09OUCBoYW5kbGVzIGl0cyBvd24gc3VjY2VzcyBjYWxsYmFjawotCQkJCQlpZiAoICFqc29u
cCApCi0JCQkJCQlzdWNjZXNzKCk7Ci0JCQkJfSBlbHNlCi0JCQkJCWpRdWVyeS5oYW5kbGVFcnJv
cihzLCB4aHIsIHN0YXR1cyk7Ci0KLQkJCQkvLyBGaXJlIHRoZSBjb21wbGV0ZSBoYW5kbGVycwot
CQkJCWNvbXBsZXRlKCk7Ci0KLQkJCQlpZiAoIGlzVGltZW91dCApCi0JCQkJCXhoci5hYm9ydCgp
OwotCi0JCQkJLy8gU3RvcCBtZW1vcnkgbGVha3MKLQkJCQlpZiAoIHMuYXN5bmMgKQotCQkJCQl4
aHIgPSBudWxsOwotCQkJfQotCQl9OwotCi0JCWlmICggcy5hc3luYyApIHsKLQkJCS8vIGRvbid0
IGF0dGFjaCB0aGUgaGFuZGxlciB0byB0aGUgcmVxdWVzdCwganVzdCBwb2xsIGl0IGluc3RlYWQK
LQkJCXZhciBpdmFsID0gc2V0SW50ZXJ2YWwob25yZWFkeXN0YXRlY2hhbmdlLCAxMyk7Ci0KLQkJ
CS8vIFRpbWVvdXQgY2hlY2tlcgotCQkJaWYgKCBzLnRpbWVvdXQgPiAwICkKLQkJCQlzZXRUaW1l
b3V0KGZ1bmN0aW9uKCl7Ci0JCQkJCS8vIENoZWNrIHRvIHNlZSBpZiB0aGUgcmVxdWVzdCBpcyBz
dGlsbCBoYXBwZW5pbmcKLQkJCQkJaWYgKCB4aHIgJiYgIXJlcXVlc3REb25lICkKLQkJCQkJCW9u
cmVhZHlzdGF0ZWNoYW5nZSggInRpbWVvdXQiICk7Ci0JCQkJfSwgcy50aW1lb3V0KTsKLQkJfQot
Ci0JCS8vIFNlbmQgdGhlIGRhdGEKLQkJdHJ5IHsKLQkJCXhoci5zZW5kKHMuZGF0YSk7Ci0JCX0g
Y2F0Y2goZSkgewotCQkJalF1ZXJ5LmhhbmRsZUVycm9yKHMsIHhociwgbnVsbCwgZSk7Ci0JCX0K
LQotCQkvLyBmaXJlZm94IDEuNSBkb2Vzbid0IGZpcmUgc3RhdGVjaGFuZ2UgZm9yIHN5bmMgcmVx
dWVzdHMKLQkJaWYgKCAhcy5hc3luYyApCi0JCQlvbnJlYWR5c3RhdGVjaGFuZ2UoKTsKLQotCQlm
dW5jdGlvbiBzdWNjZXNzKCl7Ci0JCQkvLyBJZiBhIGxvY2FsIGNhbGxiYWNrIHdhcyBzcGVjaWZp
ZWQsIGZpcmUgaXQgYW5kIHBhc3MgaXQgdGhlIGRhdGEKLQkJCWlmICggcy5zdWNjZXNzICkKLQkJ
CQlzLnN1Y2Nlc3MoIGRhdGEsIHN0YXR1cyApOwotCi0JCQkvLyBGaXJlIHRoZSBnbG9iYWwgY2Fs
bGJhY2sKLQkJCWlmICggcy5nbG9iYWwgKQotCQkJCWpRdWVyeS5ldmVudC50cmlnZ2VyKCAiYWph
eFN1Y2Nlc3MiLCBbeGhyLCBzXSApOwotCQl9Ci0KLQkJZnVuY3Rpb24gY29tcGxldGUoKXsKLQkJ
CS8vIFByb2Nlc3MgcmVzdWx0Ci0JCQlpZiAoIHMuY29tcGxldGUgKQotCQkJCXMuY29tcGxldGUo
eGhyLCBzdGF0dXMpOwotCi0JCQkvLyBUaGUgcmVxdWVzdCB3YXMgY29tcGxldGVkCi0JCQlpZiAo
IHMuZ2xvYmFsICkKLQkJCQlqUXVlcnkuZXZlbnQudHJpZ2dlciggImFqYXhDb21wbGV0ZSIsIFt4
aHIsIHNdICk7Ci0KLQkJCS8vIEhhbmRsZSB0aGUgZ2xvYmFsIEFKQVggY291bnRlcgotCQkJaWYg
KCBzLmdsb2JhbCAmJiAhIC0talF1ZXJ5LmFjdGl2ZSApCi0JCQkJalF1ZXJ5LmV2ZW50LnRyaWdn
ZXIoICJhamF4U3RvcCIgKTsKLQkJfQotCi0JCS8vIHJldHVybiBYTUxIdHRwUmVxdWVzdCB0byBh
bGxvdyBhYm9ydGluZyB0aGUgcmVxdWVzdCBldGMuCi0JCXJldHVybiB4aHI7Ci0JfSwKLQotCWhh
bmRsZUVycm9yOiBmdW5jdGlvbiggcywgeGhyLCBzdGF0dXMsIGUgKSB7Ci0JCS8vIElmIGEgbG9j
YWwgY2FsbGJhY2sgd2FzIHNwZWNpZmllZCwgZmlyZSBpdAotCQlpZiAoIHMuZXJyb3IgKSBzLmVy
cm9yKCB4aHIsIHN0YXR1cywgZSApOwotCi0JCS8vIEZpcmUgdGhlIGdsb2JhbCBjYWxsYmFjawot
CQlpZiAoIHMuZ2xvYmFsICkKLQkJCWpRdWVyeS5ldmVudC50cmlnZ2VyKCAiYWpheEVycm9yIiwg
W3hociwgcywgZV0gKTsKLQl9LAotCi0JLy8gQ291bnRlciBmb3IgaG9sZGluZyB0aGUgbnVtYmVy
IG9mIGFjdGl2ZSBxdWVyaWVzCi0JYWN0aXZlOiAwLAotCi0JLy8gRGV0ZXJtaW5lcyBpZiBhbiBY
TUxIdHRwUmVxdWVzdCB3YXMgc3VjY2Vzc2Z1bCBvciBub3QKLQlodHRwU3VjY2VzczogZnVuY3Rp
b24oIHhociApIHsKLQkJdHJ5IHsKLQkJCS8vIElFIGVycm9yIHNvbWV0aW1lcyByZXR1cm5zIDEy
MjMgd2hlbiBpdCBzaG91bGQgYmUgMjA0IHNvIHRyZWF0IGl0IGFzIHN1Y2Nlc3MsIHNlZSAjMTQ1
MAotCQkJcmV0dXJuICF4aHIuc3RhdHVzICYmIGxvY2F0aW9uLnByb3RvY29sID09ICJmaWxlOiIg
fHwKLQkJCQkoIHhoci5zdGF0dXMgPj0gMjAwICYmIHhoci5zdGF0dXMgPCAzMDAgKSB8fCB4aHIu
c3RhdHVzID09IDMwNCB8fCB4aHIuc3RhdHVzID09IDEyMjM7Ci0JCX0gY2F0Y2goZSl7fQotCQly
ZXR1cm4gZmFsc2U7Ci0JfSwKLQotCS8vIERldGVybWluZXMgaWYgYW4gWE1MSHR0cFJlcXVlc3Qg
cmV0dXJucyBOb3RNb2RpZmllZAotCWh0dHBOb3RNb2RpZmllZDogZnVuY3Rpb24oIHhociwgdXJs
ICkgewotCQl0cnkgewotCQkJdmFyIHhoclJlcyA9IHhoci5nZXRSZXNwb25zZUhlYWRlcigiTGFz
dC1Nb2RpZmllZCIpOwotCi0JCQkvLyBGaXJlZm94IGFsd2F5cyByZXR1cm5zIDIwMC4gY2hlY2sg
TGFzdC1Nb2RpZmllZCBkYXRlCi0JCQlyZXR1cm4geGhyLnN0YXR1cyA9PSAzMDQgfHwgeGhyUmVz
ID09IGpRdWVyeS5sYXN0TW9kaWZpZWRbdXJsXTsKLQkJfSBjYXRjaChlKXt9Ci0JCXJldHVybiBm
YWxzZTsKLQl9LAotCi0JaHR0cERhdGE6IGZ1bmN0aW9uKCB4aHIsIHR5cGUsIHMgKSB7Ci0JCXZh
ciBjdCA9IHhoci5nZXRSZXNwb25zZUhlYWRlcigiY29udGVudC10eXBlIiksCi0JCQl4bWwgPSB0
eXBlID09ICJ4bWwiIHx8ICF0eXBlICYmIGN0ICYmIGN0LmluZGV4T2YoInhtbCIpID49IDAsCi0J
CQlkYXRhID0geG1sID8geGhyLnJlc3BvbnNlWE1MIDogeGhyLnJlc3BvbnNlVGV4dDsKLQotCQlp
ZiAoIHhtbCAmJiBkYXRhLmRvY3VtZW50RWxlbWVudC50YWdOYW1lID09ICJwYXJzZXJlcnJvciIg
KQotCQkJdGhyb3cgInBhcnNlcmVycm9yIjsKLQkJCQotCQkvLyBBbGxvdyBhIHByZS1maWx0ZXJp
bmcgZnVuY3Rpb24gdG8gc2FuaXRpemUgdGhlIHJlc3BvbnNlCi0JCS8vIHMgIT0gbnVsbCBpcyBj
aGVja2VkIHRvIGtlZXAgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkKLQkJaWYoIHMgJiYgcy5kYXRh
RmlsdGVyICkKLQkJCWRhdGEgPSBzLmRhdGFGaWx0ZXIoIGRhdGEsIHR5cGUgKTsKLQotCQkvLyBU
aGUgZmlsdGVyIGNhbiBhY3R1YWxseSBwYXJzZSB0aGUgcmVzcG9uc2UKLQkJaWYoIHR5cGVvZiBk
YXRhID09PSAic3RyaW5nIiApewotCi0JCQkvLyBJZiB0aGUgdHlwZSBpcyAic2NyaXB0IiwgZXZh
bCBpdCBpbiBnbG9iYWwgY29udGV4dAotCQkJaWYgKCB0eXBlID09ICJzY3JpcHQiICkKLQkJCQlq
UXVlcnkuZ2xvYmFsRXZhbCggZGF0YSApOwotCi0JCQkvLyBHZXQgdGhlIEphdmFTY3JpcHQgb2Jq
ZWN0LCBpZiBKU09OIGlzIHVzZWQuCi0JCQlpZiAoIHR5cGUgPT0gImpzb24iICkKLQkJCQlkYXRh
ID0gd2luZG93WyJldmFsIl0oIigiICsgZGF0YSArICIpIik7Ci0JCX0KLQkJCi0JCXJldHVybiBk
YXRhOwotCX0sCi0KLQkvLyBTZXJpYWxpemUgYW4gYXJyYXkgb2YgZm9ybSBlbGVtZW50cyBvciBh
IHNldCBvZgotCS8vIGtleS92YWx1ZXMgaW50byBhIHF1ZXJ5IHN0cmluZwotCXBhcmFtOiBmdW5j
dGlvbiggYSApIHsKLQkJdmFyIHMgPSBbIF07Ci0KLQkJZnVuY3Rpb24gYWRkKCBrZXksIHZhbHVl
ICl7Ci0JCQlzWyBzLmxlbmd0aCBdID0gZW5jb2RlVVJJQ29tcG9uZW50KGtleSkgKyAnPScgKyBl
bmNvZGVVUklDb21wb25lbnQodmFsdWUpOwotCQl9OwotCi0JCS8vIElmIGFuIGFycmF5IHdhcyBw
YXNzZWQgaW4sIGFzc3VtZSB0aGF0IGl0IGlzIGFuIGFycmF5Ci0JCS8vIG9mIGZvcm0gZWxlbWVu
dHMKLQkJaWYgKCBqUXVlcnkuaXNBcnJheShhKSB8fCBhLmpxdWVyeSApCi0JCQkvLyBTZXJpYWxp
emUgdGhlIGZvcm0gZWxlbWVudHMKLQkJCWpRdWVyeS5lYWNoKCBhLCBmdW5jdGlvbigpewotCQkJ
CWFkZCggdGhpcy5uYW1lLCB0aGlzLnZhbHVlICk7Ci0JCQl9KTsKLQotCQkvLyBPdGhlcndpc2Us
IGFzc3VtZSB0aGF0IGl0J3MgYW4gb2JqZWN0IG9mIGtleS92YWx1ZSBwYWlycwotCQllbHNlCi0J
CQkvLyBTZXJpYWxpemUgdGhlIGtleS92YWx1ZXMKLQkJCWZvciAoIHZhciBqIGluIGEgKQotCQkJ
CS8vIElmIHRoZSB2YWx1ZSBpcyBhbiBhcnJheSB0aGVuIHRoZSBrZXkgbmFtZXMgbmVlZCB0byBi
ZSByZXBlYXRlZAotCQkJCWlmICggalF1ZXJ5LmlzQXJyYXkoYVtqXSkgKQotCQkJCQlqUXVlcnku
ZWFjaCggYVtqXSwgZnVuY3Rpb24oKXsKLQkJCQkJCWFkZCggaiwgdGhpcyApOwotCQkJCQl9KTsK
LQkJCQllbHNlCi0JCQkJCWFkZCggaiwgalF1ZXJ5LmlzRnVuY3Rpb24oYVtqXSkgPyBhW2pdKCkg
OiBhW2pdICk7Ci0KLQkJLy8gUmV0dXJuIHRoZSByZXN1bHRpbmcgc2VyaWFsaXphdGlvbgotCQly
ZXR1cm4gcy5qb2luKCImIikucmVwbGFjZSgvJTIwL2csICIrIik7Ci0JfQotCi19KTsKLXZhciBl
bGVtZGlzcGxheSA9IHt9LAotCXRpbWVySWQsCi0JZnhBdHRycyA9IFsKLQkJLy8gaGVpZ2h0IGFu
aW1hdGlvbnMKLQkJWyAiaGVpZ2h0IiwgIm1hcmdpblRvcCIsICJtYXJnaW5Cb3R0b20iLCAicGFk
ZGluZ1RvcCIsICJwYWRkaW5nQm90dG9tIiBdLAotCQkvLyB3aWR0aCBhbmltYXRpb25zCi0JCVsg
IndpZHRoIiwgIm1hcmdpbkxlZnQiLCAibWFyZ2luUmlnaHQiLCAicGFkZGluZ0xlZnQiLCAicGFk
ZGluZ1JpZ2h0IiBdLAotCQkvLyBvcGFjaXR5IGFuaW1hdGlvbnMKLQkJWyAib3BhY2l0eSIgXQot
CV07Ci0KLWZ1bmN0aW9uIGdlbkZ4KCB0eXBlLCBudW0gKXsKLQl2YXIgb2JqID0ge307Ci0JalF1
ZXJ5LmVhY2goIGZ4QXR0cnMuY29uY2F0LmFwcGx5KFtdLCBmeEF0dHJzLnNsaWNlKDAsbnVtKSks
IGZ1bmN0aW9uKCl7Ci0JCW9ialsgdGhpcyBdID0gdHlwZTsKLQl9KTsKLQlyZXR1cm4gb2JqOwot
fQotCi1qUXVlcnkuZm4uZXh0ZW5kKHsKLQlzaG93OiBmdW5jdGlvbihzcGVlZCxjYWxsYmFjayl7
Ci0JCWlmICggc3BlZWQgKSB7Ci0JCQlyZXR1cm4gdGhpcy5hbmltYXRlKCBnZW5GeCgic2hvdyIs
IDMpLCBzcGVlZCwgY2FsbGJhY2spOwotCQl9IGVsc2UgewotCQkJZm9yICggdmFyIGkgPSAwLCBs
ID0gdGhpcy5sZW5ndGg7IGkgPCBsOyBpKysgKXsKLQkJCQl2YXIgb2xkID0galF1ZXJ5LmRhdGEo
dGhpc1tpXSwgIm9sZGRpc3BsYXkiKTsKLQkJCQkKLQkJCQl0aGlzW2ldLnN0eWxlLmRpc3BsYXkg
PSBvbGQgfHwgIiI7Ci0JCQkJCi0JCQkJaWYgKCBqUXVlcnkuY3NzKHRoaXNbaV0sICJkaXNwbGF5
IikgPT09ICJub25lIiApIHsKLQkJCQkJdmFyIHRhZ05hbWUgPSB0aGlzW2ldLnRhZ05hbWUsIGRp
c3BsYXk7Ci0JCQkJCQotCQkJCQlpZiAoIGVsZW1kaXNwbGF5WyB0YWdOYW1lIF0gKSB7Ci0JCQkJ
CQlkaXNwbGF5ID0gZWxlbWRpc3BsYXlbIHRhZ05hbWUgXTsKLQkJCQkJfSBlbHNlIHsKLQkJCQkJ
CXZhciBlbGVtID0galF1ZXJ5KCI8IiArIHRhZ05hbWUgKyAiIC8+IikuYXBwZW5kVG8oImJvZHki
KTsKLQkJCQkJCQotCQkJCQkJZGlzcGxheSA9IGVsZW0uY3NzKCJkaXNwbGF5Iik7Ci0JCQkJCQlp
ZiAoIGRpc3BsYXkgPT09ICJub25lIiApCi0JCQkJCQkJZGlzcGxheSA9ICJibG9jayI7Ci0JCQkJ
CQkKLQkJCQkJCWVsZW0ucmVtb3ZlKCk7Ci0JCQkJCQkKLQkJCQkJCWVsZW1kaXNwbGF5WyB0YWdO
YW1lIF0gPSBkaXNwbGF5OwotCQkJCQl9Ci0JCQkJCQotCQkJCQlqUXVlcnkuZGF0YSh0aGlzW2ld
LCAib2xkZGlzcGxheSIsIGRpc3BsYXkpOwotCQkJCX0KLQkJCX0KLQotCQkJLy8gU2V0IHRoZSBk
aXNwbGF5IG9mIHRoZSBlbGVtZW50cyBpbiBhIHNlY29uZCBsb29wCi0JCQkvLyB0byBhdm9pZCB0
aGUgY29uc3RhbnQgcmVmbG93Ci0JCQlmb3IgKCB2YXIgaSA9IDAsIGwgPSB0aGlzLmxlbmd0aDsg
aSA8IGw7IGkrKyApewotCQkJCXRoaXNbaV0uc3R5bGUuZGlzcGxheSA9IGpRdWVyeS5kYXRhKHRo
aXNbaV0sICJvbGRkaXNwbGF5IikgfHwgIiI7Ci0JCQl9Ci0JCQkKLQkJCXJldHVybiB0aGlzOwot
CQl9Ci0JfSwKLQotCWhpZGU6IGZ1bmN0aW9uKHNwZWVkLGNhbGxiYWNrKXsKLQkJaWYgKCBzcGVl
ZCApIHsKLQkJCXJldHVybiB0aGlzLmFuaW1hdGUoIGdlbkZ4KCJoaWRlIiwgMyksIHNwZWVkLCBj
YWxsYmFjayk7Ci0JCX0gZWxzZSB7Ci0JCQlmb3IgKCB2YXIgaSA9IDAsIGwgPSB0aGlzLmxlbmd0
aDsgaSA8IGw7IGkrKyApewotCQkJCXZhciBvbGQgPSBqUXVlcnkuZGF0YSh0aGlzW2ldLCAib2xk
ZGlzcGxheSIpOwotCQkJCWlmICggIW9sZCAmJiBvbGQgIT09ICJub25lIiApCi0JCQkJCWpRdWVy
eS5kYXRhKHRoaXNbaV0sICJvbGRkaXNwbGF5IiwgalF1ZXJ5LmNzcyh0aGlzW2ldLCAiZGlzcGxh
eSIpKTsKLQkJCX0KLQotCQkJLy8gU2V0IHRoZSBkaXNwbGF5IG9mIHRoZSBlbGVtZW50cyBpbiBh
IHNlY29uZCBsb29wCi0JCQkvLyB0byBhdm9pZCB0aGUgY29uc3RhbnQgcmVmbG93Ci0JCQlmb3Ig
KCB2YXIgaSA9IDAsIGwgPSB0aGlzLmxlbmd0aDsgaSA8IGw7IGkrKyApewotCQkJCXRoaXNbaV0u
c3R5bGUuZGlzcGxheSA9ICJub25lIjsKLQkJCX0KLQotCQkJcmV0dXJuIHRoaXM7Ci0JCX0KLQl9
LAotCi0JLy8gU2F2ZSB0aGUgb2xkIHRvZ2dsZSBmdW5jdGlvbgotCV90b2dnbGU6IGpRdWVyeS5m
bi50b2dnbGUsCi0KLQl0b2dnbGU6IGZ1bmN0aW9uKCBmbiwgZm4yICl7Ci0JCXZhciBib29sID0g
dHlwZW9mIGZuID09PSAiYm9vbGVhbiI7Ci0KLQkJcmV0dXJuIGpRdWVyeS5pc0Z1bmN0aW9uKGZu
KSAmJiBqUXVlcnkuaXNGdW5jdGlvbihmbjIpID8KLQkJCXRoaXMuX3RvZ2dsZS5hcHBseSggdGhp
cywgYXJndW1lbnRzICkgOgotCQkJZm4gPT0gbnVsbCB8fCBib29sID8KLQkJCQl0aGlzLmVhY2go
ZnVuY3Rpb24oKXsKLQkJCQkJdmFyIHN0YXRlID0gYm9vbCA/IGZuIDogalF1ZXJ5KHRoaXMpLmlz
KCI6aGlkZGVuIik7Ci0JCQkJCWpRdWVyeSh0aGlzKVsgc3RhdGUgPyAic2hvdyIgOiAiaGlkZSIg
XSgpOwotCQkJCX0pIDoKLQkJCQl0aGlzLmFuaW1hdGUoZ2VuRngoInRvZ2dsZSIsIDMpLCBmbiwg
Zm4yKTsKLQl9LAotCi0JZmFkZVRvOiBmdW5jdGlvbihzcGVlZCx0byxjYWxsYmFjayl7Ci0JCXJl
dHVybiB0aGlzLmFuaW1hdGUoe29wYWNpdHk6IHRvfSwgc3BlZWQsIGNhbGxiYWNrKTsKLQl9LAot
Ci0JYW5pbWF0ZTogZnVuY3Rpb24oIHByb3AsIHNwZWVkLCBlYXNpbmcsIGNhbGxiYWNrICkgewot
CQl2YXIgb3B0YWxsID0galF1ZXJ5LnNwZWVkKHNwZWVkLCBlYXNpbmcsIGNhbGxiYWNrKTsKLQot
CQlyZXR1cm4gdGhpc1sgb3B0YWxsLnF1ZXVlID09PSBmYWxzZSA/ICJlYWNoIiA6ICJxdWV1ZSIg
XShmdW5jdGlvbigpewotCQkKLQkJCXZhciBvcHQgPSBqUXVlcnkuZXh0ZW5kKHt9LCBvcHRhbGwp
LCBwLAotCQkJCWhpZGRlbiA9IHRoaXMubm9kZVR5cGUgPT0gMSAmJiBqUXVlcnkodGhpcykuaXMo
IjpoaWRkZW4iKSwKLQkJCQlzZWxmID0gdGhpczsKLQkKLQkJCWZvciAoIHAgaW4gcHJvcCApIHsK
LQkJCQlpZiAoIHByb3BbcF0gPT0gImhpZGUiICYmIGhpZGRlbiB8fCBwcm9wW3BdID09ICJzaG93
IiAmJiAhaGlkZGVuICkKLQkJCQkJcmV0dXJuIG9wdC5jb21wbGV0ZS5jYWxsKHRoaXMpOwotCi0J
CQkJaWYgKCAoIHAgPT0gImhlaWdodCIgfHwgcCA9PSAid2lkdGgiICkgJiYgdGhpcy5zdHlsZSAp
IHsKLQkJCQkJLy8gU3RvcmUgZGlzcGxheSBwcm9wZXJ0eQotCQkJCQlvcHQuZGlzcGxheSA9IGpR
dWVyeS5jc3ModGhpcywgImRpc3BsYXkiKTsKLQotCQkJCQkvLyBNYWtlIHN1cmUgdGhhdCBub3Ro
aW5nIHNuZWFrcyBvdXQKLQkJCQkJb3B0Lm92ZXJmbG93ID0gdGhpcy5zdHlsZS5vdmVyZmxvdzsK
LQkJCQl9Ci0JCQl9Ci0KLQkJCWlmICggb3B0Lm92ZXJmbG93ICE9IG51bGwgKQotCQkJCXRoaXMu
c3R5bGUub3ZlcmZsb3cgPSAiaGlkZGVuIjsKLQotCQkJb3B0LmN1ckFuaW0gPSBqUXVlcnkuZXh0
ZW5kKHt9LCBwcm9wKTsKLQotCQkJalF1ZXJ5LmVhY2goIHByb3AsIGZ1bmN0aW9uKG5hbWUsIHZh
bCl7Ci0JCQkJdmFyIGUgPSBuZXcgalF1ZXJ5LmZ4KCBzZWxmLCBvcHQsIG5hbWUgKTsKLQotCQkJ
CWlmICggL3RvZ2dsZXxzaG93fGhpZGUvLnRlc3QodmFsKSApCi0JCQkJCWVbIHZhbCA9PSAidG9n
Z2xlIiA/IGhpZGRlbiA/ICJzaG93IiA6ICJoaWRlIiA6IHZhbCBdKCBwcm9wICk7Ci0JCQkJZWxz
ZSB7Ci0JCQkJCXZhciBwYXJ0cyA9IHZhbC50b1N0cmluZygpLm1hdGNoKC9eKFsrLV09KT8oW1xk
Ky0uXSspKC4qKSQvKSwKLQkJCQkJCXN0YXJ0ID0gZS5jdXIodHJ1ZSkgfHwgMDsKLQotCQkJCQlp
ZiAoIHBhcnRzICkgewotCQkJCQkJdmFyIGVuZCA9IHBhcnNlRmxvYXQocGFydHNbMl0pLAotCQkJ
CQkJCXVuaXQgPSBwYXJ0c1szXSB8fCAicHgiOwotCi0JCQkJCQkvLyBXZSBuZWVkIHRvIGNvbXB1
dGUgc3RhcnRpbmcgdmFsdWUKLQkJCQkJCWlmICggdW5pdCAhPSAicHgiICkgewotCQkJCQkJCXNl
bGYuc3R5bGVbIG5hbWUgXSA9IChlbmQgfHwgMSkgKyB1bml0OwotCQkJCQkJCXN0YXJ0ID0gKChl
bmQgfHwgMSkgLyBlLmN1cih0cnVlKSkgKiBzdGFydDsKLQkJCQkJCQlzZWxmLnN0eWxlWyBuYW1l
IF0gPSBzdGFydCArIHVuaXQ7Ci0JCQkJCQl9Ci0KLQkJCQkJCS8vIElmIGEgKz0vLT0gdG9rZW4g
d2FzIHByb3ZpZGVkLCB3ZSdyZSBkb2luZyBhIHJlbGF0aXZlIGFuaW1hdGlvbgotCQkJCQkJaWYg
KCBwYXJ0c1sxXSApCi0JCQkJCQkJZW5kID0gKChwYXJ0c1sxXSA9PSAiLT0iID8gLTEgOiAxKSAq
IGVuZCkgKyBzdGFydDsKLQotCQkJCQkJZS5jdXN0b20oIHN0YXJ0LCBlbmQsIHVuaXQgKTsKLQkJ
CQkJfSBlbHNlCi0JCQkJCQllLmN1c3RvbSggc3RhcnQsIHZhbCwgIiIgKTsKLQkJCQl9Ci0JCQl9
KTsKLQotCQkJLy8gRm9yIEpTIHN0cmljdCBjb21wbGlhbmNlCi0JCQlyZXR1cm4gdHJ1ZTsKLQkJ
fSk7Ci0JfSwKLQotCXN0b3A6IGZ1bmN0aW9uKGNsZWFyUXVldWUsIGdvdG9FbmQpewotCQl2YXIg
dGltZXJzID0galF1ZXJ5LnRpbWVyczsKLQotCQlpZiAoY2xlYXJRdWV1ZSkKLQkJCXRoaXMucXVl
dWUoW10pOwotCi0JCXRoaXMuZWFjaChmdW5jdGlvbigpewotCQkJLy8gZ28gaW4gcmV2ZXJzZSBv
cmRlciBzbyBhbnl0aGluZyBhZGRlZCB0byB0aGUgcXVldWUgZHVyaW5nIHRoZSBsb29wIGlzIGln
bm9yZWQKLQkJCWZvciAoIHZhciBpID0gdGltZXJzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tICkK
LQkJCQlpZiAoIHRpbWVyc1tpXS5lbGVtID09IHRoaXMgKSB7Ci0JCQkJCWlmIChnb3RvRW5kKQot
CQkJCQkJLy8gZm9yY2UgdGhlIG5leHQgc3RlcCB0byBiZSB0aGUgbGFzdAotCQkJCQkJdGltZXJz
W2ldKHRydWUpOwotCQkJCQl0aW1lcnMuc3BsaWNlKGksIDEpOwotCQkJCX0KLQkJfSk7Ci0KLQkJ
Ly8gc3RhcnQgdGhlIG5leHQgaW4gdGhlIHF1ZXVlIGlmIHRoZSBsYXN0IHN0ZXAgd2Fzbid0IGZv
cmNlZAotCQlpZiAoIWdvdG9FbmQpCi0JCQl0aGlzLmRlcXVldWUoKTsKLQotCQlyZXR1cm4gdGhp
czsKLQl9Ci0KLX0pOwotCi0vLyBHZW5lcmF0ZSBzaG9ydGN1dHMgZm9yIGN1c3RvbSBhbmltYXRp
b25zCi1qUXVlcnkuZWFjaCh7Ci0Jc2xpZGVEb3duOiBnZW5GeCgic2hvdyIsIDEpLAotCXNsaWRl
VXA6IGdlbkZ4KCJoaWRlIiwgMSksCi0Jc2xpZGVUb2dnbGU6IGdlbkZ4KCJ0b2dnbGUiLCAxKSwK
LQlmYWRlSW46IHsgb3BhY2l0eTogInNob3ciIH0sCi0JZmFkZU91dDogeyBvcGFjaXR5OiAiaGlk
ZSIgfQotfSwgZnVuY3Rpb24oIG5hbWUsIHByb3BzICl7Ci0JalF1ZXJ5LmZuWyBuYW1lIF0gPSBm
dW5jdGlvbiggc3BlZWQsIGNhbGxiYWNrICl7Ci0JCXJldHVybiB0aGlzLmFuaW1hdGUoIHByb3Bz
LCBzcGVlZCwgY2FsbGJhY2sgKTsKLQl9OwotfSk7Ci0KLWpRdWVyeS5leHRlbmQoewotCi0Jc3Bl
ZWQ6IGZ1bmN0aW9uKHNwZWVkLCBlYXNpbmcsIGZuKSB7Ci0JCXZhciBvcHQgPSB0eXBlb2Ygc3Bl
ZWQgPT09ICJvYmplY3QiID8gc3BlZWQgOiB7Ci0JCQljb21wbGV0ZTogZm4gfHwgIWZuICYmIGVh
c2luZyB8fAotCQkJCWpRdWVyeS5pc0Z1bmN0aW9uKCBzcGVlZCApICYmIHNwZWVkLAotCQkJZHVy
YXRpb246IHNwZWVkLAotCQkJZWFzaW5nOiBmbiAmJiBlYXNpbmcgfHwgZWFzaW5nICYmICFqUXVl
cnkuaXNGdW5jdGlvbihlYXNpbmcpICYmIGVhc2luZwotCQl9OwotCi0JCW9wdC5kdXJhdGlvbiA9
IGpRdWVyeS5meC5vZmYgPyAwIDogdHlwZW9mIG9wdC5kdXJhdGlvbiA9PT0gIm51bWJlciIgPyBv
cHQuZHVyYXRpb24gOgotCQkJalF1ZXJ5LmZ4LnNwZWVkc1tvcHQuZHVyYXRpb25dIHx8IGpRdWVy
eS5meC5zcGVlZHMuX2RlZmF1bHQ7Ci0KLQkJLy8gUXVldWVpbmcKLQkJb3B0Lm9sZCA9IG9wdC5j
b21wbGV0ZTsKLQkJb3B0LmNvbXBsZXRlID0gZnVuY3Rpb24oKXsKLQkJCWlmICggb3B0LnF1ZXVl
ICE9PSBmYWxzZSApCi0JCQkJalF1ZXJ5KHRoaXMpLmRlcXVldWUoKTsKLQkJCWlmICggalF1ZXJ5
LmlzRnVuY3Rpb24oIG9wdC5vbGQgKSApCi0JCQkJb3B0Lm9sZC5jYWxsKCB0aGlzICk7Ci0JCX07
Ci0KLQkJcmV0dXJuIG9wdDsKLQl9LAotCi0JZWFzaW5nOiB7Ci0JCWxpbmVhcjogZnVuY3Rpb24o
IHAsIG4sIGZpcnN0TnVtLCBkaWZmICkgewotCQkJcmV0dXJuIGZpcnN0TnVtICsgZGlmZiAqIHA7
Ci0JCX0sCi0JCXN3aW5nOiBmdW5jdGlvbiggcCwgbiwgZmlyc3ROdW0sIGRpZmYgKSB7Ci0JCQly
ZXR1cm4gKCgtTWF0aC5jb3MocCpNYXRoLlBJKS8yKSArIDAuNSkgKiBkaWZmICsgZmlyc3ROdW07
Ci0JCX0KLQl9LAotCi0JdGltZXJzOiBbXSwKLQotCWZ4OiBmdW5jdGlvbiggZWxlbSwgb3B0aW9u
cywgcHJvcCApewotCQl0aGlzLm9wdGlvbnMgPSBvcHRpb25zOwotCQl0aGlzLmVsZW0gPSBlbGVt
OwotCQl0aGlzLnByb3AgPSBwcm9wOwotCi0JCWlmICggIW9wdGlvbnMub3JpZyApCi0JCQlvcHRp
b25zLm9yaWcgPSB7fTsKLQl9Ci0KLX0pOwotCi1qUXVlcnkuZngucHJvdG90eXBlID0gewotCi0J
Ly8gU2ltcGxlIGZ1bmN0aW9uIGZvciBzZXR0aW5nIGEgc3R5bGUgdmFsdWUKLQl1cGRhdGU6IGZ1
bmN0aW9uKCl7Ci0JCWlmICggdGhpcy5vcHRpb25zLnN0ZXAgKQotCQkJdGhpcy5vcHRpb25zLnN0
ZXAuY2FsbCggdGhpcy5lbGVtLCB0aGlzLm5vdywgdGhpcyApOwotCi0JCShqUXVlcnkuZnguc3Rl
cFt0aGlzLnByb3BdIHx8IGpRdWVyeS5meC5zdGVwLl9kZWZhdWx0KSggdGhpcyApOwotCi0JCS8v
IFNldCBkaXNwbGF5IHByb3BlcnR5IHRvIGJsb2NrIGZvciBoZWlnaHQvd2lkdGggYW5pbWF0aW9u
cwotCQlpZiAoICggdGhpcy5wcm9wID09ICJoZWlnaHQiIHx8IHRoaXMucHJvcCA9PSAid2lkdGgi
ICkgJiYgdGhpcy5lbGVtLnN0eWxlICkKLQkJCXRoaXMuZWxlbS5zdHlsZS5kaXNwbGF5ID0gImJs
b2NrIjsKLQl9LAotCi0JLy8gR2V0IHRoZSBjdXJyZW50IHNpemUKLQljdXI6IGZ1bmN0aW9uKGZv
cmNlKXsKLQkJaWYgKCB0aGlzLmVsZW1bdGhpcy5wcm9wXSAhPSBudWxsICYmICghdGhpcy5lbGVt
LnN0eWxlIHx8IHRoaXMuZWxlbS5zdHlsZVt0aGlzLnByb3BdID09IG51bGwpICkKLQkJCXJldHVy
biB0aGlzLmVsZW1bIHRoaXMucHJvcCBdOwotCi0JCXZhciByID0gcGFyc2VGbG9hdChqUXVlcnku
Y3NzKHRoaXMuZWxlbSwgdGhpcy5wcm9wLCBmb3JjZSkpOwotCQlyZXR1cm4gciAmJiByID4gLTEw
MDAwID8gciA6IHBhcnNlRmxvYXQoalF1ZXJ5LmN1ckNTUyh0aGlzLmVsZW0sIHRoaXMucHJvcCkp
IHx8IDA7Ci0JfSwKLQotCS8vIFN0YXJ0IGFuIGFuaW1hdGlvbiBmcm9tIG9uZSBudW1iZXIgdG8g
YW5vdGhlcgotCWN1c3RvbTogZnVuY3Rpb24oZnJvbSwgdG8sIHVuaXQpewotCQl0aGlzLnN0YXJ0
VGltZSA9IG5vdygpOwotCQl0aGlzLnN0YXJ0ID0gZnJvbTsKLQkJdGhpcy5lbmQgPSB0bzsKLQkJ
dGhpcy51bml0ID0gdW5pdCB8fCB0aGlzLnVuaXQgfHwgInB4IjsKLQkJdGhpcy5ub3cgPSB0aGlz
LnN0YXJ0OwotCQl0aGlzLnBvcyA9IHRoaXMuc3RhdGUgPSAwOwotCi0JCXZhciBzZWxmID0gdGhp
czsKLQkJZnVuY3Rpb24gdChnb3RvRW5kKXsKLQkJCXJldHVybiBzZWxmLnN0ZXAoZ290b0VuZCk7
Ci0JCX0KLQotCQl0LmVsZW0gPSB0aGlzLmVsZW07Ci0KLQkJaWYgKCB0KCkgJiYgalF1ZXJ5LnRp
bWVycy5wdXNoKHQpICYmICF0aW1lcklkICkgewotCQkJdGltZXJJZCA9IHNldEludGVydmFsKGZ1
bmN0aW9uKCl7Ci0JCQkJdmFyIHRpbWVycyA9IGpRdWVyeS50aW1lcnM7Ci0KLQkJCQlmb3IgKCB2
YXIgaSA9IDA7IGkgPCB0aW1lcnMubGVuZ3RoOyBpKysgKQotCQkJCQlpZiAoICF0aW1lcnNbaV0o
KSApCi0JCQkJCQl0aW1lcnMuc3BsaWNlKGktLSwgMSk7Ci0KLQkJCQlpZiAoICF0aW1lcnMubGVu
Z3RoICkgewotCQkJCQljbGVhckludGVydmFsKCB0aW1lcklkICk7Ci0JCQkJCXRpbWVySWQgPSB1
bmRlZmluZWQ7Ci0JCQkJfQotCQkJfSwgMTMpOwotCQl9Ci0JfSwKLQotCS8vIFNpbXBsZSAnc2hv
dycgZnVuY3Rpb24KLQlzaG93OiBmdW5jdGlvbigpewotCQkvLyBSZW1lbWJlciB3aGVyZSB3ZSBz
dGFydGVkLCBzbyB0aGF0IHdlIGNhbiBnbyBiYWNrIHRvIGl0IGxhdGVyCi0JCXRoaXMub3B0aW9u
cy5vcmlnW3RoaXMucHJvcF0gPSBqUXVlcnkuYXR0ciggdGhpcy5lbGVtLnN0eWxlLCB0aGlzLnBy
b3AgKTsKLQkJdGhpcy5vcHRpb25zLnNob3cgPSB0cnVlOwotCi0JCS8vIEJlZ2luIHRoZSBhbmlt
YXRpb24KLQkJLy8gTWFrZSBzdXJlIHRoYXQgd2Ugc3RhcnQgYXQgYSBzbWFsbCB3aWR0aC9oZWln
aHQgdG8gYXZvaWQgYW55Ci0JCS8vIGZsYXNoIG9mIGNvbnRlbnQKLQkJdGhpcy5jdXN0b20odGhp
cy5wcm9wID09ICJ3aWR0aCIgfHwgdGhpcy5wcm9wID09ICJoZWlnaHQiID8gMSA6IDAsIHRoaXMu
Y3VyKCkpOwotCi0JCS8vIFN0YXJ0IGJ5IHNob3dpbmcgdGhlIGVsZW1lbnQKLQkJalF1ZXJ5KHRo
aXMuZWxlbSkuc2hvdygpOwotCX0sCi0KLQkvLyBTaW1wbGUgJ2hpZGUnIGZ1bmN0aW9uCi0JaGlk
ZTogZnVuY3Rpb24oKXsKLQkJLy8gUmVtZW1iZXIgd2hlcmUgd2Ugc3RhcnRlZCwgc28gdGhhdCB3
ZSBjYW4gZ28gYmFjayB0byBpdCBsYXRlcgotCQl0aGlzLm9wdGlvbnMub3JpZ1t0aGlzLnByb3Bd
ID0galF1ZXJ5LmF0dHIoIHRoaXMuZWxlbS5zdHlsZSwgdGhpcy5wcm9wICk7Ci0JCXRoaXMub3B0
aW9ucy5oaWRlID0gdHJ1ZTsKLQotCQkvLyBCZWdpbiB0aGUgYW5pbWF0aW9uCi0JCXRoaXMuY3Vz
dG9tKHRoaXMuY3VyKCksIDApOwotCX0sCi0KLQkvLyBFYWNoIHN0ZXAgb2YgYW4gYW5pbWF0aW9u
Ci0Jc3RlcDogZnVuY3Rpb24oZ290b0VuZCl7Ci0JCXZhciB0ID0gbm93KCk7Ci0KLQkJaWYgKCBn
b3RvRW5kIHx8IHQgPj0gdGhpcy5vcHRpb25zLmR1cmF0aW9uICsgdGhpcy5zdGFydFRpbWUgKSB7
Ci0JCQl0aGlzLm5vdyA9IHRoaXMuZW5kOwotCQkJdGhpcy5wb3MgPSB0aGlzLnN0YXRlID0gMTsK
LQkJCXRoaXMudXBkYXRlKCk7Ci0KLQkJCXRoaXMub3B0aW9ucy5jdXJBbmltWyB0aGlzLnByb3Ag
XSA9IHRydWU7Ci0KLQkJCXZhciBkb25lID0gdHJ1ZTsKLQkJCWZvciAoIHZhciBpIGluIHRoaXMu
b3B0aW9ucy5jdXJBbmltICkKLQkJCQlpZiAoIHRoaXMub3B0aW9ucy5jdXJBbmltW2ldICE9PSB0
cnVlICkKLQkJCQkJZG9uZSA9IGZhbHNlOwotCi0JCQlpZiAoIGRvbmUgKSB7Ci0JCQkJaWYgKCB0
aGlzLm9wdGlvbnMuZGlzcGxheSAhPSBudWxsICkgewotCQkJCQkvLyBSZXNldCB0aGUgb3ZlcmZs
b3cKLQkJCQkJdGhpcy5lbGVtLnN0eWxlLm92ZXJmbG93ID0gdGhpcy5vcHRpb25zLm92ZXJmbG93
OwotCi0JCQkJCS8vIFJlc2V0IHRoZSBkaXNwbGF5Ci0JCQkJCXRoaXMuZWxlbS5zdHlsZS5kaXNw
bGF5ID0gdGhpcy5vcHRpb25zLmRpc3BsYXk7Ci0JCQkJCWlmICggalF1ZXJ5LmNzcyh0aGlzLmVs
ZW0sICJkaXNwbGF5IikgPT0gIm5vbmUiICkKLQkJCQkJCXRoaXMuZWxlbS5zdHlsZS5kaXNwbGF5
ID0gImJsb2NrIjsKLQkJCQl9Ci0KLQkJCQkvLyBIaWRlIHRoZSBlbGVtZW50IGlmIHRoZSAiaGlk
ZSIgb3BlcmF0aW9uIHdhcyBkb25lCi0JCQkJaWYgKCB0aGlzLm9wdGlvbnMuaGlkZSApCi0JCQkJ
CWpRdWVyeSh0aGlzLmVsZW0pLmhpZGUoKTsKLQotCQkJCS8vIFJlc2V0IHRoZSBwcm9wZXJ0aWVz
LCBpZiB0aGUgaXRlbSBoYXMgYmVlbiBoaWRkZW4gb3Igc2hvd24KLQkJCQlpZiAoIHRoaXMub3B0
aW9ucy5oaWRlIHx8IHRoaXMub3B0aW9ucy5zaG93ICkKLQkJCQkJZm9yICggdmFyIHAgaW4gdGhp
cy5vcHRpb25zLmN1ckFuaW0gKQotCQkJCQkJalF1ZXJ5LmF0dHIodGhpcy5lbGVtLnN0eWxlLCBw
LCB0aGlzLm9wdGlvbnMub3JpZ1twXSk7Ci0JCQkJCQotCQkJCS8vIEV4ZWN1dGUgdGhlIGNvbXBs
ZXRlIGZ1bmN0aW9uCi0JCQkJdGhpcy5vcHRpb25zLmNvbXBsZXRlLmNhbGwoIHRoaXMuZWxlbSAp
OwotCQkJfQotCi0JCQlyZXR1cm4gZmFsc2U7Ci0JCX0gZWxzZSB7Ci0JCQl2YXIgbiA9IHQgLSB0
aGlzLnN0YXJ0VGltZTsKLQkJCXRoaXMuc3RhdGUgPSBuIC8gdGhpcy5vcHRpb25zLmR1cmF0aW9u
OwotCi0JCQkvLyBQZXJmb3JtIHRoZSBlYXNpbmcgZnVuY3Rpb24sIGRlZmF1bHRzIHRvIHN3aW5n
Ci0JCQl0aGlzLnBvcyA9IGpRdWVyeS5lYXNpbmdbdGhpcy5vcHRpb25zLmVhc2luZyB8fCAoalF1
ZXJ5LmVhc2luZy5zd2luZyA/ICJzd2luZyIgOiAibGluZWFyIildKHRoaXMuc3RhdGUsIG4sIDAs
IDEsIHRoaXMub3B0aW9ucy5kdXJhdGlvbik7Ci0JCQl0aGlzLm5vdyA9IHRoaXMuc3RhcnQgKyAo
KHRoaXMuZW5kIC0gdGhpcy5zdGFydCkgKiB0aGlzLnBvcyk7Ci0KLQkJCS8vIFBlcmZvcm0gdGhl
IG5leHQgc3RlcCBvZiB0aGUgYW5pbWF0aW9uCi0JCQl0aGlzLnVwZGF0ZSgpOwotCQl9Ci0KLQkJ
cmV0dXJuIHRydWU7Ci0JfQotCi19OwotCi1qUXVlcnkuZXh0ZW5kKCBqUXVlcnkuZngsIHsKLQlz
cGVlZHM6ewotCQlzbG93OiA2MDAsCi0gCQlmYXN0OiAyMDAsCi0gCQkvLyBEZWZhdWx0IHNwZWVk
Ci0gCQlfZGVmYXVsdDogNDAwCi0JfSwKLQlzdGVwOiB7Ci0KLQkJb3BhY2l0eTogZnVuY3Rpb24o
ZngpewotCQkJalF1ZXJ5LmF0dHIoZnguZWxlbS5zdHlsZSwgIm9wYWNpdHkiLCBmeC5ub3cpOwot
CQl9LAotCi0JCV9kZWZhdWx0OiBmdW5jdGlvbihmeCl7Ci0JCQlpZiAoIGZ4LmVsZW0uc3R5bGUg
JiYgZnguZWxlbS5zdHlsZVsgZngucHJvcCBdICE9IG51bGwgKQotCQkJCWZ4LmVsZW0uc3R5bGVb
IGZ4LnByb3AgXSA9IGZ4Lm5vdyArIGZ4LnVuaXQ7Ci0JCQllbHNlCi0JCQkJZnguZWxlbVsgZngu
cHJvcCBdID0gZngubm93OwotCQl9Ci0JfQotfSk7Ci1pZiAoIGRvY3VtZW50LmRvY3VtZW50RWxl
bWVudFsiZ2V0Qm91bmRpbmdDbGllbnRSZWN0Il0gKQotCWpRdWVyeS5mbi5vZmZzZXQgPSBmdW5j
dGlvbigpIHsKLQkJaWYgKCAhdGhpc1swXSApIHJldHVybiB7IHRvcDogMCwgbGVmdDogMCB9Owot
CQlpZiAoIHRoaXNbMF0gPT09IHRoaXNbMF0ub3duZXJEb2N1bWVudC5ib2R5ICkgcmV0dXJuIGpR
dWVyeS5vZmZzZXQuYm9keU9mZnNldCggdGhpc1swXSApOwotCQl2YXIgYm94ICA9IHRoaXNbMF0u
Z2V0Qm91bmRpbmdDbGllbnRSZWN0KCksIGRvYyA9IHRoaXNbMF0ub3duZXJEb2N1bWVudCwgYm9k
eSA9IGRvYy5ib2R5LCBkb2NFbGVtID0gZG9jLmRvY3VtZW50RWxlbWVudCwKLQkJCWNsaWVudFRv
cCA9IGRvY0VsZW0uY2xpZW50VG9wIHx8IGJvZHkuY2xpZW50VG9wIHx8IDAsIGNsaWVudExlZnQg
PSBkb2NFbGVtLmNsaWVudExlZnQgfHwgYm9keS5jbGllbnRMZWZ0IHx8IDAsCi0JCQl0b3AgID0g
Ym94LnRvcCAgKyAoc2VsZi5wYWdlWU9mZnNldCB8fCBqUXVlcnkuYm94TW9kZWwgJiYgZG9jRWxl
bS5zY3JvbGxUb3AgIHx8IGJvZHkuc2Nyb2xsVG9wICkgLSBjbGllbnRUb3AsCi0JCQlsZWZ0ID0g
Ym94LmxlZnQgKyAoc2VsZi5wYWdlWE9mZnNldCB8fCBqUXVlcnkuYm94TW9kZWwgJiYgZG9jRWxl
bS5zY3JvbGxMZWZ0IHx8IGJvZHkuc2Nyb2xsTGVmdCkgLSBjbGllbnRMZWZ0OwotCQlyZXR1cm4g
eyB0b3A6IHRvcCwgbGVmdDogbGVmdCB9OwotCX07Ci1lbHNlIAotCWpRdWVyeS5mbi5vZmZzZXQg
PSBmdW5jdGlvbigpIHsKLQkJaWYgKCAhdGhpc1swXSApIHJldHVybiB7IHRvcDogMCwgbGVmdDog
MCB9OwotCQlpZiAoIHRoaXNbMF0gPT09IHRoaXNbMF0ub3duZXJEb2N1bWVudC5ib2R5ICkgcmV0
dXJuIGpRdWVyeS5vZmZzZXQuYm9keU9mZnNldCggdGhpc1swXSApOwotCQlqUXVlcnkub2Zmc2V0
LmluaXRpYWxpemVkIHx8IGpRdWVyeS5vZmZzZXQuaW5pdGlhbGl6ZSgpOwotCi0JCXZhciBlbGVt
ID0gdGhpc1swXSwgb2Zmc2V0UGFyZW50ID0gZWxlbS5vZmZzZXRQYXJlbnQsIHByZXZPZmZzZXRQ
YXJlbnQgPSBlbGVtLAotCQkJZG9jID0gZWxlbS5vd25lckRvY3VtZW50LCBjb21wdXRlZFN0eWxl
LCBkb2NFbGVtID0gZG9jLmRvY3VtZW50RWxlbWVudCwKLQkJCWJvZHkgPSBkb2MuYm9keSwgZGVm
YXVsdFZpZXcgPSBkb2MuZGVmYXVsdFZpZXcsCi0JCQlwcmV2Q29tcHV0ZWRTdHlsZSA9IGRlZmF1
bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWxlbSwgbnVsbCksCi0JCQl0b3AgPSBlbGVtLm9mZnNl
dFRvcCwgbGVmdCA9IGVsZW0ub2Zmc2V0TGVmdDsKLQotCQl3aGlsZSAoIChlbGVtID0gZWxlbS5w
YXJlbnROb2RlKSAmJiBlbGVtICE9PSBib2R5ICYmIGVsZW0gIT09IGRvY0VsZW0gKSB7Ci0JCQlj
b21wdXRlZFN0eWxlID0gZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtLCBudWxsKTsK
LQkJCXRvcCAtPSBlbGVtLnNjcm9sbFRvcCwgbGVmdCAtPSBlbGVtLnNjcm9sbExlZnQ7Ci0JCQlp
ZiAoIGVsZW0gPT09IG9mZnNldFBhcmVudCApIHsKLQkJCQl0b3AgKz0gZWxlbS5vZmZzZXRUb3As
IGxlZnQgKz0gZWxlbS5vZmZzZXRMZWZ0OwotCQkJCWlmICggalF1ZXJ5Lm9mZnNldC5kb2VzTm90
QWRkQm9yZGVyICYmICEoalF1ZXJ5Lm9mZnNldC5kb2VzQWRkQm9yZGVyRm9yVGFibGVBbmRDZWxs
cyAmJiAvXnQoYWJsZXxkfGgpJC9pLnRlc3QoZWxlbS50YWdOYW1lKSkgKQotCQkJCQl0b3AgICs9
IHBhcnNlSW50KCBjb21wdXRlZFN0eWxlLmJvcmRlclRvcFdpZHRoLCAgMTApIHx8IDAsCi0JCQkJ
CWxlZnQgKz0gcGFyc2VJbnQoIGNvbXB1dGVkU3R5bGUuYm9yZGVyTGVmdFdpZHRoLCAxMCkgfHwg
MDsKLQkJCQlwcmV2T2Zmc2V0UGFyZW50ID0gb2Zmc2V0UGFyZW50LCBvZmZzZXRQYXJlbnQgPSBl
bGVtLm9mZnNldFBhcmVudDsKLQkJCX0KLQkJCWlmICggalF1ZXJ5Lm9mZnNldC5zdWJ0cmFjdHNC
b3JkZXJGb3JPdmVyZmxvd05vdFZpc2libGUgJiYgY29tcHV0ZWRTdHlsZS5vdmVyZmxvdyAhPT0g
InZpc2libGUiICkKLQkJCQl0b3AgICs9IHBhcnNlSW50KCBjb21wdXRlZFN0eWxlLmJvcmRlclRv
cFdpZHRoLCAgMTApIHx8IDAsCi0JCQkJbGVmdCArPSBwYXJzZUludCggY29tcHV0ZWRTdHlsZS5i
b3JkZXJMZWZ0V2lkdGgsIDEwKSB8fCAwOwotCQkJcHJldkNvbXB1dGVkU3R5bGUgPSBjb21wdXRl
ZFN0eWxlOwotCQl9Ci0KLQkJaWYgKCBwcmV2Q29tcHV0ZWRTdHlsZS5wb3NpdGlvbiA9PT0gInJl
bGF0aXZlIiB8fCBwcmV2Q29tcHV0ZWRTdHlsZS5wb3NpdGlvbiA9PT0gInN0YXRpYyIgKQotCQkJ
dG9wICArPSBib2R5Lm9mZnNldFRvcCwKLQkJCWxlZnQgKz0gYm9keS5vZmZzZXRMZWZ0OwotCi0J
CWlmICggcHJldkNvbXB1dGVkU3R5bGUucG9zaXRpb24gPT09ICJmaXhlZCIgKQotCQkJdG9wICAr
PSBNYXRoLm1heChkb2NFbGVtLnNjcm9sbFRvcCwgYm9keS5zY3JvbGxUb3ApLAotCQkJbGVmdCAr
PSBNYXRoLm1heChkb2NFbGVtLnNjcm9sbExlZnQsIGJvZHkuc2Nyb2xsTGVmdCk7Ci0KLQkJcmV0
dXJuIHsgdG9wOiB0b3AsIGxlZnQ6IGxlZnQgfTsKLQl9OwotCi1qUXVlcnkub2Zmc2V0ID0gewot
CWluaXRpYWxpemU6IGZ1bmN0aW9uKCkgewotCQlpZiAoIHRoaXMuaW5pdGlhbGl6ZWQgKSByZXR1
cm47Ci0JCXZhciBib2R5ID0gZG9jdW1lbnQuYm9keSwgY29udGFpbmVyID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnZGl2JyksIGlubmVyRGl2LCBjaGVja0RpdiwgdGFibGUsIHRkLCBydWxlcywg
cHJvcCwgYm9keU1hcmdpblRvcCA9IGJvZHkuc3R5bGUubWFyZ2luVG9wLAotCQkJaHRtbCA9ICc8
ZGl2IHN0eWxlPSJwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7bWFyZ2luOjA7Ym9yZGVy
OjVweCBzb2xpZCAjMDAwO3BhZGRpbmc6MDt3aWR0aDoxcHg7aGVpZ2h0OjFweDsiPjxkaXY+PC9k
aXY+PC9kaXY+PHRhYmxlIHN0eWxlPSJwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7bWFy
Z2luOjA7Ym9yZGVyOjVweCBzb2xpZCAjMDAwO3BhZGRpbmc6MDt3aWR0aDoxcHg7aGVpZ2h0OjFw
eDsiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+PHRyPjx0ZD48L3RkPjwvdHI+PC90
YWJsZT4nOwotCi0JCXJ1bGVzID0geyBwb3NpdGlvbjogJ2Fic29sdXRlJywgdG9wOiAwLCBsZWZ0
OiAwLCBtYXJnaW46IDAsIGJvcmRlcjogMCwgd2lkdGg6ICcxcHgnLCBoZWlnaHQ6ICcxcHgnLCB2
aXNpYmlsaXR5OiAnaGlkZGVuJyB9OwotCQlmb3IgKCBwcm9wIGluIHJ1bGVzICkgY29udGFpbmVy
LnN0eWxlW3Byb3BdID0gcnVsZXNbcHJvcF07Ci0KLQkJY29udGFpbmVyLmlubmVySFRNTCA9IGh0
bWw7Ci0JCWJvZHkuaW5zZXJ0QmVmb3JlKGNvbnRhaW5lciwgYm9keS5maXJzdENoaWxkKTsKLQkJ
aW5uZXJEaXYgPSBjb250YWluZXIuZmlyc3RDaGlsZCwgY2hlY2tEaXYgPSBpbm5lckRpdi5maXJz
dENoaWxkLCB0ZCA9IGlubmVyRGl2Lm5leHRTaWJsaW5nLmZpcnN0Q2hpbGQuZmlyc3RDaGlsZDsK
LQotCQl0aGlzLmRvZXNOb3RBZGRCb3JkZXIgPSAoY2hlY2tEaXYub2Zmc2V0VG9wICE9PSA1KTsK
LQkJdGhpcy5kb2VzQWRkQm9yZGVyRm9yVGFibGVBbmRDZWxscyA9ICh0ZC5vZmZzZXRUb3AgPT09
IDUpOwotCi0JCWlubmVyRGl2LnN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbicsIGlubmVyRGl2LnN0
eWxlLnBvc2l0aW9uID0gJ3JlbGF0aXZlJzsKLQkJdGhpcy5zdWJ0cmFjdHNCb3JkZXJGb3JPdmVy
Zmxvd05vdFZpc2libGUgPSAoY2hlY2tEaXYub2Zmc2V0VG9wID09PSAtNSk7Ci0KLQkJYm9keS5z
dHlsZS5tYXJnaW5Ub3AgPSAnMXB4JzsKLQkJdGhpcy5kb2VzTm90SW5jbHVkZU1hcmdpbkluQm9k
eU9mZnNldCA9IChib2R5Lm9mZnNldFRvcCA9PT0gMCk7Ci0JCWJvZHkuc3R5bGUubWFyZ2luVG9w
ID0gYm9keU1hcmdpblRvcDsKLQotCQlib2R5LnJlbW92ZUNoaWxkKGNvbnRhaW5lcik7Ci0JCXRo
aXMuaW5pdGlhbGl6ZWQgPSB0cnVlOwotCX0sCi0KLQlib2R5T2Zmc2V0OiBmdW5jdGlvbihib2R5
KSB7Ci0JCWpRdWVyeS5vZmZzZXQuaW5pdGlhbGl6ZWQgfHwgalF1ZXJ5Lm9mZnNldC5pbml0aWFs
aXplKCk7Ci0JCXZhciB0b3AgPSBib2R5Lm9mZnNldFRvcCwgbGVmdCA9IGJvZHkub2Zmc2V0TGVm
dDsKLQkJaWYgKCBqUXVlcnkub2Zmc2V0LmRvZXNOb3RJbmNsdWRlTWFyZ2luSW5Cb2R5T2Zmc2V0
ICkKLQkJCXRvcCAgKz0gcGFyc2VJbnQoIGpRdWVyeS5jdXJDU1MoYm9keSwgJ21hcmdpblRvcCcs
ICB0cnVlKSwgMTAgKSB8fCAwLAotCQkJbGVmdCArPSBwYXJzZUludCggalF1ZXJ5LmN1ckNTUyhi
b2R5LCAnbWFyZ2luTGVmdCcsIHRydWUpLCAxMCApIHx8IDA7Ci0JCXJldHVybiB7IHRvcDogdG9w
LCBsZWZ0OiBsZWZ0IH07Ci0JfQotfTsKLQotCi1qUXVlcnkuZm4uZXh0ZW5kKHsKLQlwb3NpdGlv
bjogZnVuY3Rpb24oKSB7Ci0JCXZhciBsZWZ0ID0gMCwgdG9wID0gMCwgcmVzdWx0czsKLQotCQlp
ZiAoIHRoaXNbMF0gKSB7Ci0JCQkvLyBHZXQgKnJlYWwqIG9mZnNldFBhcmVudAotCQkJdmFyIG9m
ZnNldFBhcmVudCA9IHRoaXMub2Zmc2V0UGFyZW50KCksCi0KLQkJCS8vIEdldCBjb3JyZWN0IG9m
ZnNldHMKLQkJCW9mZnNldCAgICAgICA9IHRoaXMub2Zmc2V0KCksCi0JCQlwYXJlbnRPZmZzZXQg
PSAvXmJvZHl8aHRtbCQvaS50ZXN0KG9mZnNldFBhcmVudFswXS50YWdOYW1lKSA/IHsgdG9wOiAw
LCBsZWZ0OiAwIH0gOiBvZmZzZXRQYXJlbnQub2Zmc2V0KCk7Ci0KLQkJCS8vIFN1YnRyYWN0IGVs
ZW1lbnQgbWFyZ2lucwotCQkJLy8gbm90ZTogd2hlbiBhbiBlbGVtZW50IGhhcyBtYXJnaW46IGF1
dG8gdGhlIG9mZnNldExlZnQgYW5kIG1hcmdpbkxlZnQgCi0JCQkvLyBhcmUgdGhlIHNhbWUgaW4g
U2FmYXJpIGNhdXNpbmcgb2Zmc2V0LmxlZnQgdG8gaW5jb3JyZWN0bHkgYmUgMAotCQkJb2Zmc2V0
LnRvcCAgLT0gbnVtKCB0aGlzLCAnbWFyZ2luVG9wJyAgKTsKLQkJCW9mZnNldC5sZWZ0IC09IG51
bSggdGhpcywgJ21hcmdpbkxlZnQnICk7Ci0KLQkJCS8vIEFkZCBvZmZzZXRQYXJlbnQgYm9yZGVy
cwotCQkJcGFyZW50T2Zmc2V0LnRvcCAgKz0gbnVtKCBvZmZzZXRQYXJlbnQsICdib3JkZXJUb3BX
aWR0aCcgICk7Ci0JCQlwYXJlbnRPZmZzZXQubGVmdCArPSBudW0oIG9mZnNldFBhcmVudCwgJ2Jv
cmRlckxlZnRXaWR0aCcgKTsKLQotCQkJLy8gU3VidHJhY3QgdGhlIHR3byBvZmZzZXRzCi0JCQly
ZXN1bHRzID0gewotCQkJCXRvcDogIG9mZnNldC50b3AgIC0gcGFyZW50T2Zmc2V0LnRvcCwKLQkJ
CQlsZWZ0OiBvZmZzZXQubGVmdCAtIHBhcmVudE9mZnNldC5sZWZ0Ci0JCQl9OwotCQl9Ci0KLQkJ
cmV0dXJuIHJlc3VsdHM7Ci0JfSwKLQotCW9mZnNldFBhcmVudDogZnVuY3Rpb24oKSB7Ci0JCXZh
ciBvZmZzZXRQYXJlbnQgPSB0aGlzWzBdLm9mZnNldFBhcmVudCB8fCBkb2N1bWVudC5ib2R5Owot
CQl3aGlsZSAoIG9mZnNldFBhcmVudCAmJiAoIS9eYm9keXxodG1sJC9pLnRlc3Qob2Zmc2V0UGFy
ZW50LnRhZ05hbWUpICYmIGpRdWVyeS5jc3Mob2Zmc2V0UGFyZW50LCAncG9zaXRpb24nKSA9PSAn
c3RhdGljJykgKQotCQkJb2Zmc2V0UGFyZW50ID0gb2Zmc2V0UGFyZW50Lm9mZnNldFBhcmVudDsK
LQkJcmV0dXJuIGpRdWVyeShvZmZzZXRQYXJlbnQpOwotCX0KLX0pOwotCi0KLS8vIENyZWF0ZSBz
Y3JvbGxMZWZ0IGFuZCBzY3JvbGxUb3AgbWV0aG9kcwotalF1ZXJ5LmVhY2goIFsnTGVmdCcsICdU
b3AnXSwgZnVuY3Rpb24oaSwgbmFtZSkgewotCXZhciBtZXRob2QgPSAnc2Nyb2xsJyArIG5hbWU7
Ci0JCi0JalF1ZXJ5LmZuWyBtZXRob2QgXSA9IGZ1bmN0aW9uKHZhbCkgewotCQlpZiAoIXRoaXNb
MF0pIHJldHVybiBudWxsOwotCi0JCXJldHVybiB2YWwgIT09IHVuZGVmaW5lZCA/Ci0KLQkJCS8v
IFNldCB0aGUgc2Nyb2xsIG9mZnNldAotCQkJdGhpcy5lYWNoKGZ1bmN0aW9uKCkgewotCQkJCXRo
aXMgPT0gd2luZG93IHx8IHRoaXMgPT0gZG9jdW1lbnQgPwotCQkJCQl3aW5kb3cuc2Nyb2xsVG8o
Ci0JCQkJCQkhaSA/IHZhbCA6IGpRdWVyeSh3aW5kb3cpLnNjcm9sbExlZnQoKSwKLQkJCQkJCSBp
ID8gdmFsIDogalF1ZXJ5KHdpbmRvdykuc2Nyb2xsVG9wKCkKLQkJCQkJKSA6Ci0JCQkJCXRoaXNb
IG1ldGhvZCBdID0gdmFsOwotCQkJfSkgOgotCi0JCQkvLyBSZXR1cm4gdGhlIHNjcm9sbCBvZmZz
ZXQKLQkJCXRoaXNbMF0gPT0gd2luZG93IHx8IHRoaXNbMF0gPT0gZG9jdW1lbnQgPwotCQkJCXNl
bGZbIGkgPyAncGFnZVlPZmZzZXQnIDogJ3BhZ2VYT2Zmc2V0JyBdIHx8Ci0JCQkJCWpRdWVyeS5i
b3hNb2RlbCAmJiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnRbIG1ldGhvZCBdIHx8Ci0JCQkJCWRv
Y3VtZW50LmJvZHlbIG1ldGhvZCBdIDoKLQkJCQl0aGlzWzBdWyBtZXRob2QgXTsKLQl9OwotfSk7
Ci0vLyBDcmVhdGUgaW5uZXJIZWlnaHQsIGlubmVyV2lkdGgsIG91dGVySGVpZ2h0IGFuZCBvdXRl
cldpZHRoIG1ldGhvZHMKLWpRdWVyeS5lYWNoKFsgIkhlaWdodCIsICJXaWR0aCIgXSwgZnVuY3Rp
b24oaSwgbmFtZSl7Ci0KLQl2YXIgdGwgPSBpID8gIkxlZnQiICA6ICJUb3AiLCAgLy8gdG9wIG9y
IGxlZnQKLQkJYnIgPSBpID8gIlJpZ2h0IiA6ICJCb3R0b20iLCAvLyBib3R0b20gb3IgcmlnaHQK
LQkJbG93ZXIgPSBuYW1lLnRvTG93ZXJDYXNlKCk7Ci0KLQkvLyBpbm5lckhlaWdodCBhbmQgaW5u
ZXJXaWR0aAotCWpRdWVyeS5mblsiaW5uZXIiICsgbmFtZV0gPSBmdW5jdGlvbigpewotCQlyZXR1
cm4gdGhpc1swXSA/Ci0JCQlqUXVlcnkuY3NzKCB0aGlzWzBdLCBsb3dlciwgZmFsc2UsICJwYWRk
aW5nIiApIDoKLQkJCW51bGw7Ci0JfTsKLQotCS8vIG91dGVySGVpZ2h0IGFuZCBvdXRlcldpZHRo
Ci0JalF1ZXJ5LmZuWyJvdXRlciIgKyBuYW1lXSA9IGZ1bmN0aW9uKG1hcmdpbikgewotCQlyZXR1
cm4gdGhpc1swXSA/Ci0JCQlqUXVlcnkuY3NzKCB0aGlzWzBdLCBsb3dlciwgZmFsc2UsIG1hcmdp
biA/ICJtYXJnaW4iIDogImJvcmRlciIgKSA6Ci0JCQludWxsOwotCX07Ci0JCi0JdmFyIHR5cGUg
PSBuYW1lLnRvTG93ZXJDYXNlKCk7Ci0KLQlqUXVlcnkuZm5bIHR5cGUgXSA9IGZ1bmN0aW9uKCBz
aXplICkgewotCQkvLyBHZXQgd2luZG93IHdpZHRoIG9yIGhlaWdodAotCQlyZXR1cm4gdGhpc1sw
XSA9PSB3aW5kb3cgPwotCQkJLy8gRXZlcnlvbmUgZWxzZSB1c2UgZG9jdW1lbnQuZG9jdW1lbnRF
bGVtZW50IG9yIGRvY3VtZW50LmJvZHkgZGVwZW5kaW5nIG9uIFF1aXJrcyB2cyBTdGFuZGFyZHMg
bW9kZQotCQkJZG9jdW1lbnQuY29tcGF0TW9kZSA9PSAiQ1NTMUNvbXBhdCIgJiYgZG9jdW1lbnQu
ZG9jdW1lbnRFbGVtZW50WyAiY2xpZW50IiArIG5hbWUgXSB8fAotCQkJZG9jdW1lbnQuYm9keVsg
ImNsaWVudCIgKyBuYW1lIF0gOgotCi0JCQkvLyBHZXQgZG9jdW1lbnQgd2lkdGggb3IgaGVpZ2h0
Ci0JCQl0aGlzWzBdID09IGRvY3VtZW50ID8KLQkJCQkvLyBFaXRoZXIgc2Nyb2xsW1dpZHRoL0hl
aWdodF0gb3Igb2Zmc2V0W1dpZHRoL0hlaWdodF0sIHdoaWNoZXZlciBpcyBncmVhdGVyCi0JCQkJ
TWF0aC5tYXgoCi0JCQkJCWRvY3VtZW50LmRvY3VtZW50RWxlbWVudFsiY2xpZW50IiArIG5hbWVd
LAotCQkJCQlkb2N1bWVudC5ib2R5WyJzY3JvbGwiICsgbmFtZV0sIGRvY3VtZW50LmRvY3VtZW50
RWxlbWVudFsic2Nyb2xsIiArIG5hbWVdLAotCQkJCQlkb2N1bWVudC5ib2R5WyJvZmZzZXQiICsg
bmFtZV0sIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudFsib2Zmc2V0IiArIG5hbWVdCi0JCQkJKSA6
Ci0KLQkJCQkvLyBHZXQgb3Igc2V0IHdpZHRoIG9yIGhlaWdodCBvbiB0aGUgZWxlbWVudAotCQkJ
CXNpemUgPT09IHVuZGVmaW5lZCA/Ci0JCQkJCS8vIEdldCB3aWR0aCBvciBoZWlnaHQgb24gdGhl
IGVsZW1lbnQKLQkJCQkJKHRoaXMubGVuZ3RoID8galF1ZXJ5LmNzcyggdGhpc1swXSwgdHlwZSAp
IDogbnVsbCkgOgotCi0JCQkJCS8vIFNldCB0aGUgd2lkdGggb3IgaGVpZ2h0IG9uIHRoZSBlbGVt
ZW50IChkZWZhdWx0IHRvIHBpeGVscyBpZiB2YWx1ZSBpcyB1bml0bGVzcykKLQkJCQkJdGhpcy5j
c3MoIHR5cGUsIHR5cGVvZiBzaXplID09PSAic3RyaW5nIiA/IHNpemUgOiBzaXplICsgInB4IiAp
OwotCX07Ci0KLX0pOwotfSkoKTsKZGlmZiAtLWdpdCBhL1dlYkRyaXZlclRlc3RzL2ltcG9ydGVk
L3NlbGVuaXVtL2NvbW1vbi9zcmMvd2ViL2pzL2pxdWVyeS0xLjQuNC5taW4uanMgYi9XZWJEcml2
ZXJUZXN0cy9pbXBvcnRlZC9zZWxlbml1bS9jb21tb24vc3JjL3dlYi9qcy9qcXVlcnktMS40LjQu
bWluLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZjNjYTJlMmRhZjQzNWVkYjY2
ZTU3YTBiODY4MWFlZGE5NTdjODY1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1dlYkRyaXZlclRlc3RzL2ltcG9ydGVkL3NlbGVuaXVtL2NvbW1vbi9zcmMv
d2ViL2pzL2pxdWVyeS0xLjQuNC5taW4uanMKKysrIC9kZXYvbnVsbApAQCAtMSwxNjcgKzAsMCBA
QAotLyohCi0gKiBqUXVlcnkgSmF2YVNjcmlwdCBMaWJyYXJ5IHYxLjQuNAotICogaHR0cDovL2px
dWVyeS5jb20vCi0gKgotICogQ29weXJpZ2h0IDIwMTAsIEpvaG4gUmVzaWcKLSAqIER1YWwgbGlj
ZW5zZWQgdW5kZXIgdGhlIE1JVCBvciBHUEwgVmVyc2lvbiAyIGxpY2Vuc2VzLgotICogaHR0cDov
L2pxdWVyeS5vcmcvbGljZW5zZQotICoKLSAqIEluY2x1ZGVzIFNpenpsZS5qcwotICogaHR0cDov
L3NpenpsZWpzLmNvbS8KLSAqIENvcHlyaWdodCAyMDEwLCBUaGUgRG9qbyBGb3VuZGF0aW9uCi0g
KiBSZWxlYXNlZCB1bmRlciB0aGUgTUlULCBCU0QsIGFuZCBHUEwgTGljZW5zZXMuCi0gKgotICog
RGF0ZTogVGh1IE5vdiAxMSAxOTowNDo1MyAyMDEwIC0wNTAwCi0gKi8KLShmdW5jdGlvbihFLEIp
e2Z1bmN0aW9uIGthKGEsYixkKXtpZihkPT09QiYmYS5ub2RlVHlwZT09PTEpe2Q9YS5nZXRBdHRy
aWJ1dGUoImRhdGEtIitiKTtpZih0eXBlb2YgZD09PSJzdHJpbmciKXt0cnl7ZD1kPT09InRydWUi
P3RydWU6ZD09PSJmYWxzZSI/ZmFsc2U6ZD09PSJudWxsIj9udWxsOiFjLmlzTmFOKGQpP3BhcnNl
RmxvYXQoZCk6SmEudGVzdChkKT9jLnBhcnNlSlNPTihkKTpkfWNhdGNoKGUpe31jLmRhdGEoYSxi
LGQpfWVsc2UgZD1CfXJldHVybiBkfWZ1bmN0aW9uIFUoKXtyZXR1cm4gZmFsc2V9ZnVuY3Rpb24g
Y2EoKXtyZXR1cm4gdHJ1ZX1mdW5jdGlvbiBsYShhLGIsZCl7ZFswXS50eXBlPWE7cmV0dXJuIGMu
ZXZlbnQuaGFuZGxlLmFwcGx5KGIsZCl9ZnVuY3Rpb24gS2EoYSl7dmFyIGIsZCxlLGYsaCxsLGss
byx4LHIsQSxDPVtdO2Y9W107aD1jLmRhdGEodGhpcyx0aGlzLm5vZGVUeXBlPyJldmVudHMiOiJf
X2V2ZW50c19fIik7aWYodHlwZW9mIGg9PT0iZnVuY3Rpb24iKWg9Ci1oLmV2ZW50cztpZighKGEu
bGl2ZUZpcmVkPT09dGhpc3x8IWh8fCFoLmxpdmV8fGEuYnV0dG9uJiZhLnR5cGU9PT0iY2xpY2si
KSl7aWYoYS5uYW1lc3BhY2UpQT1SZWdFeHAoIihefFxcLikiK2EubmFtZXNwYWNlLnNwbGl0KCIu
Iikuam9pbigiXFwuKD86LipcXC4pPyIpKyIoXFwufCQpIik7YS5saXZlRmlyZWQ9dGhpczt2YXIg
Sj1oLmxpdmUuc2xpY2UoMCk7Zm9yKGs9MDtrPEoubGVuZ3RoO2srKyl7aD1KW2tdO2gub3JpZ1R5
cGUucmVwbGFjZShYLCIiKT09PWEudHlwZT9mLnB1c2goaC5zZWxlY3Rvcik6Si5zcGxpY2Uoay0t
LDEpfWY9YyhhLnRhcmdldCkuY2xvc2VzdChmLGEuY3VycmVudFRhcmdldCk7bz0wO2Zvcih4PWYu
bGVuZ3RoO288eDtvKyspe3I9ZltvXTtmb3Ioaz0wO2s8Si5sZW5ndGg7aysrKXtoPUpba107aWYo
ci5zZWxlY3Rvcj09PWguc2VsZWN0b3ImJighQXx8QS50ZXN0KGgubmFtZXNwYWNlKSkpe2w9ci5l
bGVtO2U9bnVsbDtpZihoLnByZVR5cGU9PT0ibW91c2VlbnRlciJ8fAotaC5wcmVUeXBlPT09Im1v
dXNlbGVhdmUiKXthLnR5cGU9aC5wcmVUeXBlO2U9YyhhLnJlbGF0ZWRUYXJnZXQpLmNsb3Nlc3Qo
aC5zZWxlY3RvcilbMF19aWYoIWV8fGUhPT1sKUMucHVzaCh7ZWxlbTpsLGhhbmRsZU9iajpoLGxl
dmVsOnIubGV2ZWx9KX19fW89MDtmb3IoeD1DLmxlbmd0aDtvPHg7bysrKXtmPUNbb107aWYoZCYm
Zi5sZXZlbD5kKWJyZWFrO2EuY3VycmVudFRhcmdldD1mLmVsZW07YS5kYXRhPWYuaGFuZGxlT2Jq
LmRhdGE7YS5oYW5kbGVPYmo9Zi5oYW5kbGVPYmo7QT1mLmhhbmRsZU9iai5vcmlnSGFuZGxlci5h
cHBseShmLmVsZW0sYXJndW1lbnRzKTtpZihBPT09ZmFsc2V8fGEuaXNQcm9wYWdhdGlvblN0b3Bw
ZWQoKSl7ZD1mLmxldmVsO2lmKEE9PT1mYWxzZSliPWZhbHNlO2lmKGEuaXNJbW1lZGlhdGVQcm9w
YWdhdGlvblN0b3BwZWQoKSlicmVha319cmV0dXJuIGJ9fWZ1bmN0aW9uIFkoYSxiKXtyZXR1cm4o
YSYmYSE9PSIqIj9hKyIuIjoiIikrYi5yZXBsYWNlKExhLAotImAiKS5yZXBsYWNlKE1hLCImIil9
ZnVuY3Rpb24gbWEoYSxiLGQpe2lmKGMuaXNGdW5jdGlvbihiKSlyZXR1cm4gYy5ncmVwKGEsZnVu
Y3Rpb24oZixoKXtyZXR1cm4hIWIuY2FsbChmLGgsZik9PT1kfSk7ZWxzZSBpZihiLm5vZGVUeXBl
KXJldHVybiBjLmdyZXAoYSxmdW5jdGlvbihmKXtyZXR1cm4gZj09PWI9PT1kfSk7ZWxzZSBpZih0
eXBlb2YgYj09PSJzdHJpbmciKXt2YXIgZT1jLmdyZXAoYSxmdW5jdGlvbihmKXtyZXR1cm4gZi5u
b2RlVHlwZT09PTF9KTtpZihOYS50ZXN0KGIpKXJldHVybiBjLmZpbHRlcihiLGUsIWQpO2Vsc2Ug
Yj1jLmZpbHRlcihiLGUpfXJldHVybiBjLmdyZXAoYSxmdW5jdGlvbihmKXtyZXR1cm4gYy5pbkFy
cmF5KGYsYik+PTA9PT1kfSl9ZnVuY3Rpb24gbmEoYSxiKXt2YXIgZD0wO2IuZWFjaChmdW5jdGlv
bigpe2lmKHRoaXMubm9kZU5hbWU9PT0oYVtkXSYmYVtkXS5ub2RlTmFtZSkpe3ZhciBlPWMuZGF0
YShhW2QrK10pLGY9Yy5kYXRhKHRoaXMsCi1lKTtpZihlPWUmJmUuZXZlbnRzKXtkZWxldGUgZi5o
YW5kbGU7Zi5ldmVudHM9e307Zm9yKHZhciBoIGluIGUpZm9yKHZhciBsIGluIGVbaF0pYy5ldmVu
dC5hZGQodGhpcyxoLGVbaF1bbF0sZVtoXVtsXS5kYXRhKX19fSl9ZnVuY3Rpb24gT2EoYSxiKXti
LnNyYz9jLmFqYXgoe3VybDpiLnNyYyxhc3luYzpmYWxzZSxkYXRhVHlwZToic2NyaXB0In0pOmMu
Z2xvYmFsRXZhbChiLnRleHR8fGIudGV4dENvbnRlbnR8fGIuaW5uZXJIVE1MfHwiIik7Yi5wYXJl
bnROb2RlJiZiLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoYil9ZnVuY3Rpb24gb2EoYSxiLGQpe3Zh
ciBlPWI9PT0id2lkdGgiP2Eub2Zmc2V0V2lkdGg6YS5vZmZzZXRIZWlnaHQ7aWYoZD09PSJib3Jk
ZXIiKXJldHVybiBlO2MuZWFjaChiPT09IndpZHRoIj9QYTpRYSxmdW5jdGlvbigpe2R8fChlLT1w
YXJzZUZsb2F0KGMuY3NzKGEsInBhZGRpbmciK3RoaXMpKXx8MCk7aWYoZD09PSJtYXJnaW4iKWUr
PXBhcnNlRmxvYXQoYy5jc3MoYSwKLSJtYXJnaW4iK3RoaXMpKXx8MDtlbHNlIGUtPXBhcnNlRmxv
YXQoYy5jc3MoYSwiYm9yZGVyIit0aGlzKyJXaWR0aCIpKXx8MH0pO3JldHVybiBlfWZ1bmN0aW9u
IGRhKGEsYixkLGUpe2lmKGMuaXNBcnJheShiKSYmYi5sZW5ndGgpYy5lYWNoKGIsZnVuY3Rpb24o
ZixoKXtkfHxSYS50ZXN0KGEpP2UoYSxoKTpkYShhKyJbIisodHlwZW9mIGg9PT0ib2JqZWN0Inx8
Yy5pc0FycmF5KGgpP2Y6IiIpKyJdIixoLGQsZSl9KTtlbHNlIGlmKCFkJiZiIT1udWxsJiZ0eXBl
b2YgYj09PSJvYmplY3QiKWMuaXNFbXB0eU9iamVjdChiKT9lKGEsIiIpOmMuZWFjaChiLGZ1bmN0
aW9uKGYsaCl7ZGEoYSsiWyIrZisiXSIsaCxkLGUpfSk7ZWxzZSBlKGEsYil9ZnVuY3Rpb24gUyhh
LGIpe3ZhciBkPXt9O2MuZWFjaChwYS5jb25jYXQuYXBwbHkoW10scGEuc2xpY2UoMCxiKSksZnVu
Y3Rpb24oKXtkW3RoaXNdPWF9KTtyZXR1cm4gZH1mdW5jdGlvbiBxYShhKXtpZighZWFbYV0pe3Zh
ciBiPWMoIjwiKwotYSsiPiIpLmFwcGVuZFRvKCJib2R5IiksZD1iLmNzcygiZGlzcGxheSIpO2Iu
cmVtb3ZlKCk7aWYoZD09PSJub25lInx8ZD09PSIiKWQ9ImJsb2NrIjtlYVthXT1kfXJldHVybiBl
YVthXX1mdW5jdGlvbiBmYShhKXtyZXR1cm4gYy5pc1dpbmRvdyhhKT9hOmEubm9kZVR5cGU9PT05
P2EuZGVmYXVsdFZpZXd8fGEucGFyZW50V2luZG93OmZhbHNlfXZhciB0PUUuZG9jdW1lbnQsYz1m
dW5jdGlvbigpe2Z1bmN0aW9uIGEoKXtpZighYi5pc1JlYWR5KXt0cnl7dC5kb2N1bWVudEVsZW1l
bnQuZG9TY3JvbGwoImxlZnQiKX1jYXRjaChqKXtzZXRUaW1lb3V0KGEsMSk7cmV0dXJufWIucmVh
ZHkoKX19dmFyIGI9ZnVuY3Rpb24oaixzKXtyZXR1cm4gbmV3IGIuZm4uaW5pdChqLHMpfSxkPUUu
alF1ZXJ5LGU9RS4kLGYsaD0vXig/OltePF0qKDxbXHdcV10rPilbXj5dKiR8IyhbXHdcLV0rKSQp
LyxsPS9cUy8saz0vXlxzKy8sbz0vXHMrJC8seD0vXFcvLHI9L1xkLyxBPS9ePChcdyspXHMqXC8/
Pig/OjxcL1wxPik/JC8sCi1DPS9eW1xdLDp7fVxzXSokLyxKPS9cXCg/OlsiXFxcL2JmbnJ0XXx1
WzAtOWEtZkEtRl17NH0pL2csdz0vIlteIlxcXG5ccl0qInx0cnVlfGZhbHNlfG51bGx8LT9cZCso
PzpcLlxkKik/KD86W2VFXVsrXC1dP1xkKyk/L2csST0vKD86Xnw6fCwpKD86XHMqXFspKy9nLEw9
Lyh3ZWJraXQpWyBcL10oW1x3Ll0rKS8sZz0vKG9wZXJhKSg/Oi4qdmVyc2lvbik/WyBcL10oW1x3
Ll0rKS8saT0vKG1zaWUpIChbXHcuXSspLyxuPS8obW96aWxsYSkoPzouKj8gcnY6KFtcdy5dKykp
Py8sbT1uYXZpZ2F0b3IudXNlckFnZW50LHA9ZmFsc2UscT1bXSx1LHk9T2JqZWN0LnByb3RvdHlw
ZS50b1N0cmluZyxGPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksTT1BcnJheS5wcm90
b3R5cGUucHVzaCxOPUFycmF5LnByb3RvdHlwZS5zbGljZSxPPVN0cmluZy5wcm90b3R5cGUudHJp
bSxEPUFycmF5LnByb3RvdHlwZS5pbmRleE9mLFI9e307Yi5mbj1iLnByb3RvdHlwZT17aW5pdDpm
dW5jdGlvbihqLAotcyl7dmFyIHYseixIO2lmKCFqKXJldHVybiB0aGlzO2lmKGoubm9kZVR5cGUp
e3RoaXMuY29udGV4dD10aGlzWzBdPWo7dGhpcy5sZW5ndGg9MTtyZXR1cm4gdGhpc31pZihqPT09
ImJvZHkiJiYhcyYmdC5ib2R5KXt0aGlzLmNvbnRleHQ9dDt0aGlzWzBdPXQuYm9keTt0aGlzLnNl
bGVjdG9yPSJib2R5Ijt0aGlzLmxlbmd0aD0xO3JldHVybiB0aGlzfWlmKHR5cGVvZiBqPT09InN0
cmluZyIpaWYoKHY9aC5leGVjKGopKSYmKHZbMV18fCFzKSlpZih2WzFdKXtIPXM/cy5vd25lckRv
Y3VtZW50fHxzOnQ7aWYoej1BLmV4ZWMoaikpaWYoYi5pc1BsYWluT2JqZWN0KHMpKXtqPVt0LmNy
ZWF0ZUVsZW1lbnQoelsxXSldO2IuZm4uYXR0ci5jYWxsKGoscyx0cnVlKX1lbHNlIGo9W0guY3Jl
YXRlRWxlbWVudCh6WzFdKV07ZWxzZXt6PWIuYnVpbGRGcmFnbWVudChbdlsxXV0sW0hdKTtqPSh6
LmNhY2hlYWJsZT96LmZyYWdtZW50LmNsb25lTm9kZSh0cnVlKTp6LmZyYWdtZW50KS5jaGlsZE5v
ZGVzfXJldHVybiBiLm1lcmdlKHRoaXMsCi1qKX1lbHNle2lmKCh6PXQuZ2V0RWxlbWVudEJ5SWQo
dlsyXSkpJiZ6LnBhcmVudE5vZGUpe2lmKHouaWQhPT12WzJdKXJldHVybiBmLmZpbmQoaik7dGhp
cy5sZW5ndGg9MTt0aGlzWzBdPXp9dGhpcy5jb250ZXh0PXQ7dGhpcy5zZWxlY3Rvcj1qO3JldHVy
biB0aGlzfWVsc2UgaWYoIXMmJiF4LnRlc3Qoaikpe3RoaXMuc2VsZWN0b3I9ajt0aGlzLmNvbnRl
eHQ9dDtqPXQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoaik7cmV0dXJuIGIubWVyZ2UodGhpcyxqKX1l
bHNlIHJldHVybiFzfHxzLmpxdWVyeT8oc3x8ZikuZmluZChqKTpiKHMpLmZpbmQoaik7ZWxzZSBp
ZihiLmlzRnVuY3Rpb24oaikpcmV0dXJuIGYucmVhZHkoaik7aWYoai5zZWxlY3RvciE9PUIpe3Ro
aXMuc2VsZWN0b3I9ai5zZWxlY3Rvcjt0aGlzLmNvbnRleHQ9ai5jb250ZXh0fXJldHVybiBiLm1h
a2VBcnJheShqLHRoaXMpfSxzZWxlY3RvcjoiIixqcXVlcnk6IjEuNC40IixsZW5ndGg6MCxzaXpl
OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubGVuZ3RofSwKLXRvQXJyYXk6ZnVuY3Rpb24oKXtyZXR1
cm4gTi5jYWxsKHRoaXMsMCl9LGdldDpmdW5jdGlvbihqKXtyZXR1cm4gaj09bnVsbD90aGlzLnRv
QXJyYXkoKTpqPDA/dGhpcy5zbGljZShqKVswXTp0aGlzW2pdfSxwdXNoU3RhY2s6ZnVuY3Rpb24o
aixzLHYpe3ZhciB6PWIoKTtiLmlzQXJyYXkoaik/TS5hcHBseSh6LGopOmIubWVyZ2UoeixqKTt6
LnByZXZPYmplY3Q9dGhpczt6LmNvbnRleHQ9dGhpcy5jb250ZXh0O2lmKHM9PT0iZmluZCIpei5z
ZWxlY3Rvcj10aGlzLnNlbGVjdG9yKyh0aGlzLnNlbGVjdG9yPyIgIjoiIikrdjtlbHNlIGlmKHMp
ei5zZWxlY3Rvcj10aGlzLnNlbGVjdG9yKyIuIitzKyIoIit2KyIpIjtyZXR1cm4gen0sZWFjaDpm
dW5jdGlvbihqLHMpe3JldHVybiBiLmVhY2godGhpcyxqLHMpfSxyZWFkeTpmdW5jdGlvbihqKXti
LmJpbmRSZWFkeSgpO2lmKGIuaXNSZWFkeSlqLmNhbGwodCxiKTtlbHNlIHEmJnEucHVzaChqKTty
ZXR1cm4gdGhpc30sZXE6ZnVuY3Rpb24oail7cmV0dXJuIGo9PT0KLS0xP3RoaXMuc2xpY2Uoaik6
dGhpcy5zbGljZShqLCtqKzEpfSxmaXJzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVxKDApfSxs
YXN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZXEoLTEpfSxzbGljZTpmdW5jdGlvbigpe3JldHVy
biB0aGlzLnB1c2hTdGFjayhOLmFwcGx5KHRoaXMsYXJndW1lbnRzKSwic2xpY2UiLE4uY2FsbChh
cmd1bWVudHMpLmpvaW4oIiwiKSl9LG1hcDpmdW5jdGlvbihqKXtyZXR1cm4gdGhpcy5wdXNoU3Rh
Y2soYi5tYXAodGhpcyxmdW5jdGlvbihzLHYpe3JldHVybiBqLmNhbGwocyx2LHMpfSkpfSxlbmQ6
ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcmV2T2JqZWN0fHxiKG51bGwpfSxwdXNoOk0sc29ydDpb
XS5zb3J0LHNwbGljZTpbXS5zcGxpY2V9O2IuZm4uaW5pdC5wcm90b3R5cGU9Yi5mbjtiLmV4dGVu
ZD1iLmZuLmV4dGVuZD1mdW5jdGlvbigpe3ZhciBqLHMsdix6LEgsRz1hcmd1bWVudHNbMF18fHt9
LEs9MSxRPWFyZ3VtZW50cy5sZW5ndGgsZ2E9ZmFsc2U7Ci1pZih0eXBlb2YgRz09PSJib29sZWFu
Iil7Z2E9RztHPWFyZ3VtZW50c1sxXXx8e307Sz0yfWlmKHR5cGVvZiBHIT09Im9iamVjdCImJiFi
LmlzRnVuY3Rpb24oRykpRz17fTtpZihRPT09Syl7Rz10aGlzOy0tS31mb3IoO0s8UTtLKyspaWYo
KGo9YXJndW1lbnRzW0tdKSE9bnVsbClmb3IocyBpbiBqKXt2PUdbc107ej1qW3NdO2lmKEchPT16
KWlmKGdhJiZ6JiYoYi5pc1BsYWluT2JqZWN0KHopfHwoSD1iLmlzQXJyYXkoeikpKSl7aWYoSCl7
SD1mYWxzZTt2PXYmJmIuaXNBcnJheSh2KT92OltdfWVsc2Ugdj12JiZiLmlzUGxhaW5PYmplY3Qo
dik/djp7fTtHW3NdPWIuZXh0ZW5kKGdhLHYseil9ZWxzZSBpZih6IT09QilHW3NdPXp9cmV0dXJu
IEd9O2IuZXh0ZW5kKHtub0NvbmZsaWN0OmZ1bmN0aW9uKGope0UuJD1lO2lmKGopRS5qUXVlcnk9
ZDtyZXR1cm4gYn0saXNSZWFkeTpmYWxzZSxyZWFkeVdhaXQ6MSxyZWFkeTpmdW5jdGlvbihqKXtq
PT09dHJ1ZSYmYi5yZWFkeVdhaXQtLTsKLWlmKCFiLnJlYWR5V2FpdHx8aiE9PXRydWUmJiFiLmlz
UmVhZHkpe2lmKCF0LmJvZHkpcmV0dXJuIHNldFRpbWVvdXQoYi5yZWFkeSwxKTtiLmlzUmVhZHk9
dHJ1ZTtpZighKGohPT10cnVlJiYtLWIucmVhZHlXYWl0PjApKWlmKHEpe3ZhciBzPTAsdj1xO2Zv
cihxPW51bGw7aj12W3MrK107KWouY2FsbCh0LGIpO2IuZm4udHJpZ2dlciYmYih0KS50cmlnZ2Vy
KCJyZWFkeSIpLnVuYmluZCgicmVhZHkiKX19fSxiaW5kUmVhZHk6ZnVuY3Rpb24oKXtpZighcCl7
cD10cnVlO2lmKHQucmVhZHlTdGF0ZT09PSJjb21wbGV0ZSIpcmV0dXJuIHNldFRpbWVvdXQoYi5y
ZWFkeSwxKTtpZih0LmFkZEV2ZW50TGlzdGVuZXIpe3QuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29u
dGVudExvYWRlZCIsdSxmYWxzZSk7RS5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixiLnJlYWR5LGZh
bHNlKX1lbHNlIGlmKHQuYXR0YWNoRXZlbnQpe3QuYXR0YWNoRXZlbnQoIm9ucmVhZHlzdGF0ZWNo
YW5nZSIsdSk7RS5hdHRhY2hFdmVudCgib25sb2FkIiwKLWIucmVhZHkpO3ZhciBqPWZhbHNlO3Ry
eXtqPUUuZnJhbWVFbGVtZW50PT1udWxsfWNhdGNoKHMpe310LmRvY3VtZW50RWxlbWVudC5kb1Nj
cm9sbCYmaiYmYSgpfX19LGlzRnVuY3Rpb246ZnVuY3Rpb24oail7cmV0dXJuIGIudHlwZShqKT09
PSJmdW5jdGlvbiJ9LGlzQXJyYXk6QXJyYXkuaXNBcnJheXx8ZnVuY3Rpb24oail7cmV0dXJuIGIu
dHlwZShqKT09PSJhcnJheSJ9LGlzV2luZG93OmZ1bmN0aW9uKGope3JldHVybiBqJiZ0eXBlb2Yg
aj09PSJvYmplY3QiJiYic2V0SW50ZXJ2YWwiaW4gan0saXNOYU46ZnVuY3Rpb24oail7cmV0dXJu
IGo9PW51bGx8fCFyLnRlc3Qoail8fGlzTmFOKGopfSx0eXBlOmZ1bmN0aW9uKGope3JldHVybiBq
PT1udWxsP1N0cmluZyhqKTpSW3kuY2FsbChqKV18fCJvYmplY3QifSxpc1BsYWluT2JqZWN0OmZ1
bmN0aW9uKGope2lmKCFqfHxiLnR5cGUoaikhPT0ib2JqZWN0Inx8ai5ub2RlVHlwZXx8Yi5pc1dp
bmRvdyhqKSlyZXR1cm4gZmFsc2U7aWYoai5jb25zdHJ1Y3RvciYmCi0hRi5jYWxsKGosImNvbnN0
cnVjdG9yIikmJiFGLmNhbGwoai5jb25zdHJ1Y3Rvci5wcm90b3R5cGUsImlzUHJvdG90eXBlT2Yi
KSlyZXR1cm4gZmFsc2U7Zm9yKHZhciBzIGluIGopO3JldHVybiBzPT09Qnx8Ri5jYWxsKGoscyl9
LGlzRW1wdHlPYmplY3Q6ZnVuY3Rpb24oail7Zm9yKHZhciBzIGluIGopcmV0dXJuIGZhbHNlO3Jl
dHVybiB0cnVlfSxlcnJvcjpmdW5jdGlvbihqKXt0aHJvdyBqO30scGFyc2VKU09OOmZ1bmN0aW9u
KGope2lmKHR5cGVvZiBqIT09InN0cmluZyJ8fCFqKXJldHVybiBudWxsO2o9Yi50cmltKGopO2lm
KEMudGVzdChqLnJlcGxhY2UoSiwiQCIpLnJlcGxhY2UodywiXSIpLnJlcGxhY2UoSSwiIikpKXJl
dHVybiBFLkpTT04mJkUuSlNPTi5wYXJzZT9FLkpTT04ucGFyc2Uoaik6KG5ldyBGdW5jdGlvbigi
cmV0dXJuICIraikpKCk7ZWxzZSBiLmVycm9yKCJJbnZhbGlkIEpTT046ICIrail9LG5vb3A6ZnVu
Y3Rpb24oKXt9LGdsb2JhbEV2YWw6ZnVuY3Rpb24oail7aWYoaiYmCi1sLnRlc3Qoaikpe3ZhciBz
PXQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImhlYWQiKVswXXx8dC5kb2N1bWVudEVsZW1lbnQsdj10
LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpO3YudHlwZT0idGV4dC9qYXZhc2NyaXB0IjtpZihiLnN1
cHBvcnQuc2NyaXB0RXZhbCl2LmFwcGVuZENoaWxkKHQuY3JlYXRlVGV4dE5vZGUoaikpO2Vsc2Ug
di50ZXh0PWo7cy5pbnNlcnRCZWZvcmUodixzLmZpcnN0Q2hpbGQpO3MucmVtb3ZlQ2hpbGQodil9
fSxub2RlTmFtZTpmdW5jdGlvbihqLHMpe3JldHVybiBqLm5vZGVOYW1lJiZqLm5vZGVOYW1lLnRv
VXBwZXJDYXNlKCk9PT1zLnRvVXBwZXJDYXNlKCl9LGVhY2g6ZnVuY3Rpb24oaixzLHYpe3ZhciB6
LEg9MCxHPWoubGVuZ3RoLEs9Rz09PUJ8fGIuaXNGdW5jdGlvbihqKTtpZih2KWlmKEspZm9yKHog
aW4gail7aWYocy5hcHBseShqW3pdLHYpPT09ZmFsc2UpYnJlYWt9ZWxzZSBmb3IoO0g8Rzspe2lm
KHMuYXBwbHkoaltIKytdLHYpPT09ZmFsc2UpYnJlYWt9ZWxzZSBpZihLKWZvcih6IGluIGope2lm
KHMuY2FsbChqW3pdLAoteixqW3pdKT09PWZhbHNlKWJyZWFrfWVsc2UgZm9yKHY9alswXTtIPEcm
JnMuY2FsbCh2LEgsdikhPT1mYWxzZTt2PWpbKytIXSk7cmV0dXJuIGp9LHRyaW06Tz9mdW5jdGlv
bihqKXtyZXR1cm4gaj09bnVsbD8iIjpPLmNhbGwoail9OmZ1bmN0aW9uKGope3JldHVybiBqPT1u
dWxsPyIiOmoudG9TdHJpbmcoKS5yZXBsYWNlKGssIiIpLnJlcGxhY2UobywiIil9LG1ha2VBcnJh
eTpmdW5jdGlvbihqLHMpe3ZhciB2PXN8fFtdO2lmKGohPW51bGwpe3ZhciB6PWIudHlwZShqKTtq
Lmxlbmd0aD09bnVsbHx8ej09PSJzdHJpbmcifHx6PT09ImZ1bmN0aW9uInx8ej09PSJyZWdleHAi
fHxiLmlzV2luZG93KGopP00uY2FsbCh2LGopOmIubWVyZ2UodixqKX1yZXR1cm4gdn0saW5BcnJh
eTpmdW5jdGlvbihqLHMpe2lmKHMuaW5kZXhPZilyZXR1cm4gcy5pbmRleE9mKGopO2Zvcih2YXIg
dj0wLHo9cy5sZW5ndGg7djx6O3YrKylpZihzW3ZdPT09ailyZXR1cm4gdjtyZXR1cm4tMX0sbWVy
Z2U6ZnVuY3Rpb24oaiwKLXMpe3ZhciB2PWoubGVuZ3RoLHo9MDtpZih0eXBlb2Ygcy5sZW5ndGg9
PT0ibnVtYmVyIilmb3IodmFyIEg9cy5sZW5ndGg7ejxIO3orKylqW3YrK109c1t6XTtlbHNlIGZv
cig7c1t6XSE9PUI7KWpbdisrXT1zW3orK107ai5sZW5ndGg9djtyZXR1cm4gan0sZ3JlcDpmdW5j
dGlvbihqLHMsdil7dmFyIHo9W10sSDt2PSEhdjtmb3IodmFyIEc9MCxLPWoubGVuZ3RoO0c8SztH
Kyspe0g9ISFzKGpbR10sRyk7diE9PUgmJnoucHVzaChqW0ddKX1yZXR1cm4gen0sbWFwOmZ1bmN0
aW9uKGoscyx2KXtmb3IodmFyIHo9W10sSCxHPTAsSz1qLmxlbmd0aDtHPEs7RysrKXtIPXMoaltH
XSxHLHYpO2lmKEghPW51bGwpelt6Lmxlbmd0aF09SH1yZXR1cm4gei5jb25jYXQuYXBwbHkoW10s
eil9LGd1aWQ6MSxwcm94eTpmdW5jdGlvbihqLHMsdil7aWYoYXJndW1lbnRzLmxlbmd0aD09PTIp
aWYodHlwZW9mIHM9PT0ic3RyaW5nIil7dj1qO2o9dltzXTtzPUJ9ZWxzZSBpZihzJiYhYi5pc0Z1
bmN0aW9uKHMpKXt2PQotcztzPUJ9aWYoIXMmJmopcz1mdW5jdGlvbigpe3JldHVybiBqLmFwcGx5
KHZ8fHRoaXMsYXJndW1lbnRzKX07aWYoailzLmd1aWQ9ai5ndWlkPWouZ3VpZHx8cy5ndWlkfHxi
Lmd1aWQrKztyZXR1cm4gc30sYWNjZXNzOmZ1bmN0aW9uKGoscyx2LHosSCxHKXt2YXIgSz1qLmxl
bmd0aDtpZih0eXBlb2Ygcz09PSJvYmplY3QiKXtmb3IodmFyIFEgaW4gcyliLmFjY2VzcyhqLFEs
c1tRXSx6LEgsdik7cmV0dXJuIGp9aWYodiE9PUIpe3o9IUcmJnomJmIuaXNGdW5jdGlvbih2KTtm
b3IoUT0wO1E8SztRKyspSChqW1FdLHMsej92LmNhbGwoaltRXSxRLEgoaltRXSxzKSk6dixHKTty
ZXR1cm4gan1yZXR1cm4gSz9IKGpbMF0scyk6Qn0sbm93OmZ1bmN0aW9uKCl7cmV0dXJuKG5ldyBE
YXRlKS5nZXRUaW1lKCl9LHVhTWF0Y2g6ZnVuY3Rpb24oail7aj1qLnRvTG93ZXJDYXNlKCk7aj1M
LmV4ZWMoail8fGcuZXhlYyhqKXx8aS5leGVjKGopfHxqLmluZGV4T2YoImNvbXBhdGlibGUiKTww
JiZuLmV4ZWMoail8fAotW107cmV0dXJue2Jyb3dzZXI6alsxXXx8IiIsdmVyc2lvbjpqWzJdfHwi
MCJ9fSxicm93c2VyOnt9fSk7Yi5lYWNoKCJCb29sZWFuIE51bWJlciBTdHJpbmcgRnVuY3Rpb24g
QXJyYXkgRGF0ZSBSZWdFeHAgT2JqZWN0Ii5zcGxpdCgiICIpLGZ1bmN0aW9uKGoscyl7UlsiW29i
amVjdCAiK3MrIl0iXT1zLnRvTG93ZXJDYXNlKCl9KTttPWIudWFNYXRjaChtKTtpZihtLmJyb3dz
ZXIpe2IuYnJvd3NlclttLmJyb3dzZXJdPXRydWU7Yi5icm93c2VyLnZlcnNpb249bS52ZXJzaW9u
fWlmKGIuYnJvd3Nlci53ZWJraXQpYi5icm93c2VyLnNhZmFyaT10cnVlO2lmKEQpYi5pbkFycmF5
PWZ1bmN0aW9uKGoscyl7cmV0dXJuIEQuY2FsbChzLGopfTtpZighL1xzLy50ZXN0KCJcdTAwYTAi
KSl7az0vXltcc1x4QTBdKy87bz0vW1xzXHhBMF0rJC99Zj1iKHQpO2lmKHQuYWRkRXZlbnRMaXN0
ZW5lcil1PWZ1bmN0aW9uKCl7dC5yZW1vdmVFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVk
Iix1LAotZmFsc2UpO2IucmVhZHkoKX07ZWxzZSBpZih0LmF0dGFjaEV2ZW50KXU9ZnVuY3Rpb24o
KXtpZih0LnJlYWR5U3RhdGU9PT0iY29tcGxldGUiKXt0LmRldGFjaEV2ZW50KCJvbnJlYWR5c3Rh
dGVjaGFuZ2UiLHUpO2IucmVhZHkoKX19O3JldHVybiBFLmpRdWVyeT1FLiQ9Yn0oKTsoZnVuY3Rp
b24oKXtjLnN1cHBvcnQ9e307dmFyIGE9dC5kb2N1bWVudEVsZW1lbnQsYj10LmNyZWF0ZUVsZW1l
bnQoInNjcmlwdCIpLGQ9dC5jcmVhdGVFbGVtZW50KCJkaXYiKSxlPSJzY3JpcHQiK2Mubm93KCk7
ZC5zdHlsZS5kaXNwbGF5PSJub25lIjtkLmlubmVySFRNTD0iICAgPGxpbmsvPjx0YWJsZT48L3Rh
YmxlPjxhIGhyZWY9Jy9hJyBzdHlsZT0nY29sb3I6cmVkO2Zsb2F0OmxlZnQ7b3BhY2l0eTouNTU7
Jz5hPC9hPjxpbnB1dCB0eXBlPSdjaGVja2JveCcvPiI7dmFyIGY9ZC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgiKiIpLGg9ZC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYSIpWzBdLGw9dC5jcmVhdGVFbGVt
ZW50KCJzZWxlY3QiKSwKLWs9bC5hcHBlbmRDaGlsZCh0LmNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIp
KTtpZighKCFmfHwhZi5sZW5ndGh8fCFoKSl7Yy5zdXBwb3J0PXtsZWFkaW5nV2hpdGVzcGFjZTpk
LmZpcnN0Q2hpbGQubm9kZVR5cGU9PT0zLHRib2R5OiFkLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
Ym9keSIpLmxlbmd0aCxodG1sU2VyaWFsaXplOiEhZC5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGlu
ayIpLmxlbmd0aCxzdHlsZTovcmVkLy50ZXN0KGguZ2V0QXR0cmlidXRlKCJzdHlsZSIpKSxocmVm
Tm9ybWFsaXplZDpoLmdldEF0dHJpYnV0ZSgiaHJlZiIpPT09Ii9hIixvcGFjaXR5Oi9eMC41NSQv
LnRlc3QoaC5zdHlsZS5vcGFjaXR5KSxjc3NGbG9hdDohIWguc3R5bGUuY3NzRmxvYXQsY2hlY2tP
bjpkLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpbnB1dCIpWzBdLnZhbHVlPT09Im9uIixvcHRTZWxl
Y3RlZDprLnNlbGVjdGVkLGRlbGV0ZUV4cGFuZG86dHJ1ZSxvcHREaXNhYmxlZDpmYWxzZSxjaGVj
a0Nsb25lOmZhbHNlLAotc2NyaXB0RXZhbDpmYWxzZSxub0Nsb25lRXZlbnQ6dHJ1ZSxib3hNb2Rl
bDpudWxsLGlubGluZUJsb2NrTmVlZHNMYXlvdXQ6ZmFsc2Usc2hyaW5rV3JhcEJsb2NrczpmYWxz
ZSxyZWxpYWJsZUhpZGRlbk9mZnNldHM6dHJ1ZX07bC5kaXNhYmxlZD10cnVlO2Muc3VwcG9ydC5v
cHREaXNhYmxlZD0hay5kaXNhYmxlZDtiLnR5cGU9InRleHQvamF2YXNjcmlwdCI7dHJ5e2IuYXBw
ZW5kQ2hpbGQodC5jcmVhdGVUZXh0Tm9kZSgid2luZG93LiIrZSsiPTE7IikpfWNhdGNoKG8pe31h
Lmluc2VydEJlZm9yZShiLGEuZmlyc3RDaGlsZCk7aWYoRVtlXSl7Yy5zdXBwb3J0LnNjcmlwdEV2
YWw9dHJ1ZTtkZWxldGUgRVtlXX10cnl7ZGVsZXRlIGIudGVzdH1jYXRjaCh4KXtjLnN1cHBvcnQu
ZGVsZXRlRXhwYW5kbz1mYWxzZX1hLnJlbW92ZUNoaWxkKGIpO2lmKGQuYXR0YWNoRXZlbnQmJmQu
ZmlyZUV2ZW50KXtkLmF0dGFjaEV2ZW50KCJvbmNsaWNrIixmdW5jdGlvbiByKCl7Yy5zdXBwb3J0
Lm5vQ2xvbmVFdmVudD0KLWZhbHNlO2QuZGV0YWNoRXZlbnQoIm9uY2xpY2siLHIpfSk7ZC5jbG9u
ZU5vZGUodHJ1ZSkuZmlyZUV2ZW50KCJvbmNsaWNrIil9ZD10LmNyZWF0ZUVsZW1lbnQoImRpdiIp
O2QuaW5uZXJIVE1MPSI8aW5wdXQgdHlwZT0ncmFkaW8nIG5hbWU9J3JhZGlvdGVzdCcgY2hlY2tl
ZD0nY2hlY2tlZCcvPiI7YT10LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTthLmFwcGVuZENoaWxk
KGQuZmlyc3RDaGlsZCk7Yy5zdXBwb3J0LmNoZWNrQ2xvbmU9YS5jbG9uZU5vZGUodHJ1ZSkuY2xv
bmVOb2RlKHRydWUpLmxhc3RDaGlsZC5jaGVja2VkO2MoZnVuY3Rpb24oKXt2YXIgcj10LmNyZWF0
ZUVsZW1lbnQoImRpdiIpO3Iuc3R5bGUud2lkdGg9ci5zdHlsZS5wYWRkaW5nTGVmdD0iMXB4Ijt0
LmJvZHkuYXBwZW5kQ2hpbGQocik7Yy5ib3hNb2RlbD1jLnN1cHBvcnQuYm94TW9kZWw9ci5vZmZz
ZXRXaWR0aD09PTI7aWYoInpvb20iaW4gci5zdHlsZSl7ci5zdHlsZS5kaXNwbGF5PSJpbmxpbmUi
O3Iuc3R5bGUuem9vbT0KLTE7Yy5zdXBwb3J0LmlubGluZUJsb2NrTmVlZHNMYXlvdXQ9ci5vZmZz
ZXRXaWR0aD09PTI7ci5zdHlsZS5kaXNwbGF5PSIiO3IuaW5uZXJIVE1MPSI8ZGl2IHN0eWxlPSd3
aWR0aDo0cHg7Jz48L2Rpdj4iO2Muc3VwcG9ydC5zaHJpbmtXcmFwQmxvY2tzPXIub2Zmc2V0V2lk
dGghPT0yfXIuaW5uZXJIVE1MPSI8dGFibGU+PHRyPjx0ZCBzdHlsZT0ncGFkZGluZzowO2Rpc3Bs
YXk6bm9uZSc+PC90ZD48dGQ+dDwvdGQ+PC90cj48L3RhYmxlPiI7dmFyIEE9ci5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGQiKTtjLnN1cHBvcnQucmVsaWFibGVIaWRkZW5PZmZzZXRzPUFbMF0ub2Zm
c2V0SGVpZ2h0PT09MDtBWzBdLnN0eWxlLmRpc3BsYXk9IiI7QVsxXS5zdHlsZS5kaXNwbGF5PSJu
b25lIjtjLnN1cHBvcnQucmVsaWFibGVIaWRkZW5PZmZzZXRzPWMuc3VwcG9ydC5yZWxpYWJsZUhp
ZGRlbk9mZnNldHMmJkFbMF0ub2Zmc2V0SGVpZ2h0PT09MDtyLmlubmVySFRNTD0iIjt0LmJvZHku
cmVtb3ZlQ2hpbGQocikuc3R5bGUuZGlzcGxheT0KLSJub25lIn0pO2E9ZnVuY3Rpb24ocil7dmFy
IEE9dC5jcmVhdGVFbGVtZW50KCJkaXYiKTtyPSJvbiIrcjt2YXIgQz1yIGluIEE7aWYoIUMpe0Eu
c2V0QXR0cmlidXRlKHIsInJldHVybjsiKTtDPXR5cGVvZiBBW3JdPT09ImZ1bmN0aW9uIn1yZXR1
cm4gQ307Yy5zdXBwb3J0LnN1Ym1pdEJ1YmJsZXM9YSgic3VibWl0Iik7Yy5zdXBwb3J0LmNoYW5n
ZUJ1YmJsZXM9YSgiY2hhbmdlIik7YT1iPWQ9Zj1oPW51bGx9fSkoKTt2YXIgcmE9e30sSmE9L14o
Pzpcey4qXH18XFsuKlxdKSQvO2MuZXh0ZW5kKHtjYWNoZTp7fSx1dWlkOjAsZXhwYW5kbzoialF1
ZXJ5IitjLm5vdygpLG5vRGF0YTp7ZW1iZWQ6dHJ1ZSxvYmplY3Q6ImNsc2lkOkQyN0NEQjZFLUFF
NkQtMTFjZi05NkI4LTQ0NDU1MzU0MDAwMCIsYXBwbGV0OnRydWV9LGRhdGE6ZnVuY3Rpb24oYSxi
LGQpe2lmKGMuYWNjZXB0RGF0YShhKSl7YT1hPT1FP3JhOmE7dmFyIGU9YS5ub2RlVHlwZSxmPWU/
YVtjLmV4cGFuZG9dOm51bGwsaD0KLWMuY2FjaGU7aWYoIShlJiYhZiYmdHlwZW9mIGI9PT0ic3Ry
aW5nIiYmZD09PUIpKXtpZihlKWZ8fChhW2MuZXhwYW5kb109Zj0rK2MudXVpZCk7ZWxzZSBoPWE7
aWYodHlwZW9mIGI9PT0ib2JqZWN0IilpZihlKWhbZl09Yy5leHRlbmQoaFtmXSxiKTtlbHNlIGMu
ZXh0ZW5kKGgsYik7ZWxzZSBpZihlJiYhaFtmXSloW2ZdPXt9O2E9ZT9oW2ZdOmg7aWYoZCE9PUIp
YVtiXT1kO3JldHVybiB0eXBlb2YgYj09PSJzdHJpbmciP2FbYl06YX19fSxyZW1vdmVEYXRhOmZ1
bmN0aW9uKGEsYil7aWYoYy5hY2NlcHREYXRhKGEpKXthPWE9PUU/cmE6YTt2YXIgZD1hLm5vZGVU
eXBlLGU9ZD9hW2MuZXhwYW5kb106YSxmPWMuY2FjaGUsaD1kP2ZbZV06ZTtpZihiKXtpZihoKXtk
ZWxldGUgaFtiXTtkJiZjLmlzRW1wdHlPYmplY3QoaCkmJmMucmVtb3ZlRGF0YShhKX19ZWxzZSBp
ZihkJiZjLnN1cHBvcnQuZGVsZXRlRXhwYW5kbylkZWxldGUgYVtjLmV4cGFuZG9dO2Vsc2UgaWYo
YS5yZW1vdmVBdHRyaWJ1dGUpYS5yZW1vdmVBdHRyaWJ1dGUoYy5leHBhbmRvKTsKLWVsc2UgaWYo
ZClkZWxldGUgZltlXTtlbHNlIGZvcih2YXIgbCBpbiBhKWRlbGV0ZSBhW2xdfX0sYWNjZXB0RGF0
YTpmdW5jdGlvbihhKXtpZihhLm5vZGVOYW1lKXt2YXIgYj1jLm5vRGF0YVthLm5vZGVOYW1lLnRv
TG93ZXJDYXNlKCldO2lmKGIpcmV0dXJuIShiPT09dHJ1ZXx8YS5nZXRBdHRyaWJ1dGUoImNsYXNz
aWQiKSE9PWIpfXJldHVybiB0cnVlfX0pO2MuZm4uZXh0ZW5kKHtkYXRhOmZ1bmN0aW9uKGEsYil7
dmFyIGQ9bnVsbDtpZih0eXBlb2YgYT09PSJ1bmRlZmluZWQiKXtpZih0aGlzLmxlbmd0aCl7dmFy
IGU9dGhpc1swXS5hdHRyaWJ1dGVzLGY7ZD1jLmRhdGEodGhpc1swXSk7Zm9yKHZhciBoPTAsbD1l
Lmxlbmd0aDtoPGw7aCsrKXtmPWVbaF0ubmFtZTtpZihmLmluZGV4T2YoImRhdGEtIik9PT0wKXtm
PWYuc3Vic3RyKDUpO2thKHRoaXNbMF0sZixkW2ZdKX19fXJldHVybiBkfWVsc2UgaWYodHlwZW9m
IGE9PT0ib2JqZWN0IilyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7Yy5kYXRhKHRoaXMsCi1h
KX0pO3ZhciBrPWEuc3BsaXQoIi4iKTtrWzFdPWtbMV0/Ii4iK2tbMV06IiI7aWYoYj09PUIpe2Q9
dGhpcy50cmlnZ2VySGFuZGxlcigiZ2V0RGF0YSIra1sxXSsiISIsW2tbMF1dKTtpZihkPT09QiYm
dGhpcy5sZW5ndGgpe2Q9Yy5kYXRhKHRoaXNbMF0sYSk7ZD1rYSh0aGlzWzBdLGEsZCl9cmV0dXJu
IGQ9PT1CJiZrWzFdP3RoaXMuZGF0YShrWzBdKTpkfWVsc2UgcmV0dXJuIHRoaXMuZWFjaChmdW5j
dGlvbigpe3ZhciBvPWModGhpcykseD1ba1swXSxiXTtvLnRyaWdnZXJIYW5kbGVyKCJzZXREYXRh
IitrWzFdKyIhIix4KTtjLmRhdGEodGhpcyxhLGIpO28udHJpZ2dlckhhbmRsZXIoImNoYW5nZURh
dGEiK2tbMV0rIiEiLHgpfSl9LHJlbW92ZURhdGE6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZWFj
aChmdW5jdGlvbigpe2MucmVtb3ZlRGF0YSh0aGlzLGEpfSl9fSk7Yy5leHRlbmQoe3F1ZXVlOmZ1
bmN0aW9uKGEsYixkKXtpZihhKXtiPShifHwiZngiKSsicXVldWUiO3ZhciBlPQotYy5kYXRhKGEs
Yik7aWYoIWQpcmV0dXJuIGV8fFtdO2lmKCFlfHxjLmlzQXJyYXkoZCkpZT1jLmRhdGEoYSxiLGMu
bWFrZUFycmF5KGQpKTtlbHNlIGUucHVzaChkKTtyZXR1cm4gZX19LGRlcXVldWU6ZnVuY3Rpb24o
YSxiKXtiPWJ8fCJmeCI7dmFyIGQ9Yy5xdWV1ZShhLGIpLGU9ZC5zaGlmdCgpO2lmKGU9PT0iaW5w
cm9ncmVzcyIpZT1kLnNoaWZ0KCk7aWYoZSl7Yj09PSJmeCImJmQudW5zaGlmdCgiaW5wcm9ncmVz
cyIpO2UuY2FsbChhLGZ1bmN0aW9uKCl7Yy5kZXF1ZXVlKGEsYil9KX19fSk7Yy5mbi5leHRlbmQo
e3F1ZXVlOmZ1bmN0aW9uKGEsYil7aWYodHlwZW9mIGEhPT0ic3RyaW5nIil7Yj1hO2E9ImZ4In1p
ZihiPT09QilyZXR1cm4gYy5xdWV1ZSh0aGlzWzBdLGEpO3JldHVybiB0aGlzLmVhY2goZnVuY3Rp
b24oKXt2YXIgZD1jLnF1ZXVlKHRoaXMsYSxiKTthPT09ImZ4IiYmZFswXSE9PSJpbnByb2dyZXNz
IiYmYy5kZXF1ZXVlKHRoaXMsYSl9KX0sZGVxdWV1ZTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5l
YWNoKGZ1bmN0aW9uKCl7Yy5kZXF1ZXVlKHRoaXMsCi1hKX0pfSxkZWxheTpmdW5jdGlvbihhLGIp
e2E9Yy5meD9jLmZ4LnNwZWVkc1thXXx8YTphO2I9Ynx8ImZ4IjtyZXR1cm4gdGhpcy5xdWV1ZShi
LGZ1bmN0aW9uKCl7dmFyIGQ9dGhpcztzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Yy5kZXF1ZXVlKGQs
Yil9LGEpfSl9LGNsZWFyUXVldWU6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucXVldWUoYXx8ImZ4
IixbXSl9fSk7dmFyIHNhPS9bXG5cdF0vZyxoYT0vXHMrLyxTYT0vXHIvZyxUYT0vXig/OmhyZWZ8
c3JjfHN0eWxlKSQvLFVhPS9eKD86YnV0dG9ufGlucHV0KSQvaSxWYT0vXig/OmJ1dHRvbnxpbnB1
dHxvYmplY3R8c2VsZWN0fHRleHRhcmVhKSQvaSxXYT0vXmEoPzpyZWEpPyQvaSx0YT0vXig/OnJh
ZGlvfGNoZWNrYm94KSQvaTtjLnByb3BzPXsiZm9yIjoiaHRtbEZvciIsImNsYXNzIjoiY2xhc3NO
YW1lIixyZWFkb25seToicmVhZE9ubHkiLG1heGxlbmd0aDoibWF4TGVuZ3RoIixjZWxsc3BhY2lu
ZzoiY2VsbFNwYWNpbmciLHJvd3NwYW46InJvd1NwYW4iLAotY29sc3BhbjoiY29sU3BhbiIsdGFi
aW5kZXg6InRhYkluZGV4Iix1c2VtYXA6InVzZU1hcCIsZnJhbWVib3JkZXI6ImZyYW1lQm9yZGVy
In07Yy5mbi5leHRlbmQoe2F0dHI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYy5hY2Nlc3ModGhpcyxh
LGIsdHJ1ZSxjLmF0dHIpfSxyZW1vdmVBdHRyOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmVhY2go
ZnVuY3Rpb24oKXtjLmF0dHIodGhpcyxhLCIiKTt0aGlzLm5vZGVUeXBlPT09MSYmdGhpcy5yZW1v
dmVBdHRyaWJ1dGUoYSl9KX0sYWRkQ2xhc3M6ZnVuY3Rpb24oYSl7aWYoYy5pc0Z1bmN0aW9uKGEp
KXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oeCl7dmFyIHI9Yyh0aGlzKTtyLmFkZENsYXNzKGEu
Y2FsbCh0aGlzLHgsci5hdHRyKCJjbGFzcyIpKSl9KTtpZihhJiZ0eXBlb2YgYT09PSJzdHJpbmci
KWZvcih2YXIgYj0oYXx8IiIpLnNwbGl0KGhhKSxkPTAsZT10aGlzLmxlbmd0aDtkPGU7ZCsrKXt2
YXIgZj10aGlzW2RdO2lmKGYubm9kZVR5cGU9PT0KLTEpaWYoZi5jbGFzc05hbWUpe2Zvcih2YXIg
aD0iICIrZi5jbGFzc05hbWUrIiAiLGw9Zi5jbGFzc05hbWUsaz0wLG89Yi5sZW5ndGg7azxvO2sr
KylpZihoLmluZGV4T2YoIiAiK2Jba10rIiAiKTwwKWwrPSIgIitiW2tdO2YuY2xhc3NOYW1lPWMu
dHJpbShsKX1lbHNlIGYuY2xhc3NOYW1lPWF9cmV0dXJuIHRoaXN9LHJlbW92ZUNsYXNzOmZ1bmN0
aW9uKGEpe2lmKGMuaXNGdW5jdGlvbihhKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKG8pe3Zh
ciB4PWModGhpcyk7eC5yZW1vdmVDbGFzcyhhLmNhbGwodGhpcyxvLHguYXR0cigiY2xhc3MiKSkp
fSk7aWYoYSYmdHlwZW9mIGE9PT0ic3RyaW5nInx8YT09PUIpZm9yKHZhciBiPShhfHwiIikuc3Bs
aXQoaGEpLGQ9MCxlPXRoaXMubGVuZ3RoO2Q8ZTtkKyspe3ZhciBmPXRoaXNbZF07aWYoZi5ub2Rl
VHlwZT09PTEmJmYuY2xhc3NOYW1lKWlmKGEpe2Zvcih2YXIgaD0oIiAiK2YuY2xhc3NOYW1lKyIg
IikucmVwbGFjZShzYSwiICIpLAotbD0wLGs9Yi5sZW5ndGg7bDxrO2wrKyloPWgucmVwbGFjZSgi
ICIrYltsXSsiICIsIiAiKTtmLmNsYXNzTmFtZT1jLnRyaW0oaCl9ZWxzZSBmLmNsYXNzTmFtZT0i
In1yZXR1cm4gdGhpc30sdG9nZ2xlQ2xhc3M6ZnVuY3Rpb24oYSxiKXt2YXIgZD10eXBlb2YgYSxl
PXR5cGVvZiBiPT09ImJvb2xlYW4iO2lmKGMuaXNGdW5jdGlvbihhKSlyZXR1cm4gdGhpcy5lYWNo
KGZ1bmN0aW9uKGYpe3ZhciBoPWModGhpcyk7aC50b2dnbGVDbGFzcyhhLmNhbGwodGhpcyxmLGgu
YXR0cigiY2xhc3MiKSxiKSxiKX0pO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtpZihkPT09
InN0cmluZyIpZm9yKHZhciBmLGg9MCxsPWModGhpcyksaz1iLG89YS5zcGxpdChoYSk7Zj1vW2gr
K107KXtrPWU/azohbC5oYXNDbGFzcyhmKTtsW2s/ImFkZENsYXNzIjoicmVtb3ZlQ2xhc3MiXShm
KX1lbHNlIGlmKGQ9PT0idW5kZWZpbmVkInx8ZD09PSJib29sZWFuIil7dGhpcy5jbGFzc05hbWUm
JmMuZGF0YSh0aGlzLAotIl9fY2xhc3NOYW1lX18iLHRoaXMuY2xhc3NOYW1lKTt0aGlzLmNsYXNz
TmFtZT10aGlzLmNsYXNzTmFtZXx8YT09PWZhbHNlPyIiOmMuZGF0YSh0aGlzLCJfX2NsYXNzTmFt
ZV9fIil8fCIifX0pfSxoYXNDbGFzczpmdW5jdGlvbihhKXthPSIgIithKyIgIjtmb3IodmFyIGI9
MCxkPXRoaXMubGVuZ3RoO2I8ZDtiKyspaWYoKCIgIit0aGlzW2JdLmNsYXNzTmFtZSsiICIpLnJl
cGxhY2Uoc2EsIiAiKS5pbmRleE9mKGEpPi0xKXJldHVybiB0cnVlO3JldHVybiBmYWxzZX0sdmFs
OmZ1bmN0aW9uKGEpe2lmKCFhcmd1bWVudHMubGVuZ3RoKXt2YXIgYj10aGlzWzBdO2lmKGIpe2lm
KGMubm9kZU5hbWUoYiwib3B0aW9uIikpe3ZhciBkPWIuYXR0cmlidXRlcy52YWx1ZTtyZXR1cm4h
ZHx8ZC5zcGVjaWZpZWQ/Yi52YWx1ZTpiLnRleHR9aWYoYy5ub2RlTmFtZShiLCJzZWxlY3QiKSl7
dmFyIGU9Yi5zZWxlY3RlZEluZGV4O2Q9W107dmFyIGY9Yi5vcHRpb25zO2I9Yi50eXBlPT09InNl
bGVjdC1vbmUiOwotaWYoZTwwKXJldHVybiBudWxsO3ZhciBoPWI/ZTowO2ZvcihlPWI/ZSsxOmYu
bGVuZ3RoO2g8ZTtoKyspe3ZhciBsPWZbaF07aWYobC5zZWxlY3RlZCYmKGMuc3VwcG9ydC5vcHRE
aXNhYmxlZD8hbC5kaXNhYmxlZDpsLmdldEF0dHJpYnV0ZSgiZGlzYWJsZWQiKT09PW51bGwpJiYo
IWwucGFyZW50Tm9kZS5kaXNhYmxlZHx8IWMubm9kZU5hbWUobC5wYXJlbnROb2RlLCJvcHRncm91
cCIpKSl7YT1jKGwpLnZhbCgpO2lmKGIpcmV0dXJuIGE7ZC5wdXNoKGEpfX1yZXR1cm4gZH1pZih0
YS50ZXN0KGIudHlwZSkmJiFjLnN1cHBvcnQuY2hlY2tPbilyZXR1cm4gYi5nZXRBdHRyaWJ1dGUo
InZhbHVlIik9PT1udWxsPyJvbiI6Yi52YWx1ZTtyZXR1cm4oYi52YWx1ZXx8IiIpLnJlcGxhY2Uo
U2EsIiIpfXJldHVybiBCfXZhciBrPWMuaXNGdW5jdGlvbihhKTtyZXR1cm4gdGhpcy5lYWNoKGZ1
bmN0aW9uKG8pe3ZhciB4PWModGhpcykscj1hO2lmKHRoaXMubm9kZVR5cGU9PT0xKXtpZihrKXI9
Ci1hLmNhbGwodGhpcyxvLHgudmFsKCkpO2lmKHI9PW51bGwpcj0iIjtlbHNlIGlmKHR5cGVvZiBy
PT09Im51bWJlciIpcis9IiI7ZWxzZSBpZihjLmlzQXJyYXkocikpcj1jLm1hcChyLGZ1bmN0aW9u
KEMpe3JldHVybiBDPT1udWxsPyIiOkMrIiJ9KTtpZihjLmlzQXJyYXkocikmJnRhLnRlc3QodGhp
cy50eXBlKSl0aGlzLmNoZWNrZWQ9Yy5pbkFycmF5KHgudmFsKCkscik+PTA7ZWxzZSBpZihjLm5v
ZGVOYW1lKHRoaXMsInNlbGVjdCIpKXt2YXIgQT1jLm1ha2VBcnJheShyKTtjKCJvcHRpb24iLHRo
aXMpLmVhY2goZnVuY3Rpb24oKXt0aGlzLnNlbGVjdGVkPWMuaW5BcnJheShjKHRoaXMpLnZhbCgp
LEEpPj0wfSk7aWYoIUEubGVuZ3RoKXRoaXMuc2VsZWN0ZWRJbmRleD0tMX1lbHNlIHRoaXMudmFs
dWU9cn19KX19KTtjLmV4dGVuZCh7YXR0ckZuOnt2YWw6dHJ1ZSxjc3M6dHJ1ZSxodG1sOnRydWUs
dGV4dDp0cnVlLGRhdGE6dHJ1ZSx3aWR0aDp0cnVlLGhlaWdodDp0cnVlLG9mZnNldDp0cnVlfSwK
LWF0dHI6ZnVuY3Rpb24oYSxiLGQsZSl7aWYoIWF8fGEubm9kZVR5cGU9PT0zfHxhLm5vZGVUeXBl
PT09OClyZXR1cm4gQjtpZihlJiZiIGluIGMuYXR0ckZuKXJldHVybiBjKGEpW2JdKGQpO2U9YS5u
b2RlVHlwZSE9PTF8fCFjLmlzWE1MRG9jKGEpO3ZhciBmPWQhPT1CO2I9ZSYmYy5wcm9wc1tiXXx8
Yjt2YXIgaD1UYS50ZXN0KGIpO2lmKChiIGluIGF8fGFbYl0hPT1CKSYmZSYmIWgpe2lmKGYpe2I9
PT0idHlwZSImJlVhLnRlc3QoYS5ub2RlTmFtZSkmJmEucGFyZW50Tm9kZSYmYy5lcnJvcigidHlw
ZSBwcm9wZXJ0eSBjYW4ndCBiZSBjaGFuZ2VkIik7aWYoZD09PW51bGwpYS5ub2RlVHlwZT09PTEm
JmEucmVtb3ZlQXR0cmlidXRlKGIpO2Vsc2UgYVtiXT1kfWlmKGMubm9kZU5hbWUoYSwiZm9ybSIp
JiZhLmdldEF0dHJpYnV0ZU5vZGUoYikpcmV0dXJuIGEuZ2V0QXR0cmlidXRlTm9kZShiKS5ub2Rl
VmFsdWU7aWYoYj09PSJ0YWJJbmRleCIpcmV0dXJuKGI9YS5nZXRBdHRyaWJ1dGVOb2RlKCJ0YWJJ
bmRleCIpKSYmCi1iLnNwZWNpZmllZD9iLnZhbHVlOlZhLnRlc3QoYS5ub2RlTmFtZSl8fFdhLnRl
c3QoYS5ub2RlTmFtZSkmJmEuaHJlZj8wOkI7cmV0dXJuIGFbYl19aWYoIWMuc3VwcG9ydC5zdHls
ZSYmZSYmYj09PSJzdHlsZSIpe2lmKGYpYS5zdHlsZS5jc3NUZXh0PSIiK2Q7cmV0dXJuIGEuc3R5
bGUuY3NzVGV4dH1mJiZhLnNldEF0dHJpYnV0ZShiLCIiK2QpO2lmKCFhLmF0dHJpYnV0ZXNbYl0m
JmEuaGFzQXR0cmlidXRlJiYhYS5oYXNBdHRyaWJ1dGUoYikpcmV0dXJuIEI7YT0hYy5zdXBwb3J0
LmhyZWZOb3JtYWxpemVkJiZlJiZoP2EuZ2V0QXR0cmlidXRlKGIsMik6YS5nZXRBdHRyaWJ1dGUo
Yik7cmV0dXJuIGE9PT1udWxsP0I6YX19KTt2YXIgWD0vXC4oLiopJC8saWE9L14oPzp0ZXh0YXJl
YXxpbnB1dHxzZWxlY3QpJC9pLExhPS9cLi9nLE1hPS8gL2csWGE9L1teXHdccy58YF0vZyxZYT1m
dW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKFhhLCJcXCQmIil9LHVhPXtmb2N1c2luOjAsZm9j
dXNvdXQ6MH07Ci1jLmV2ZW50PXthZGQ6ZnVuY3Rpb24oYSxiLGQsZSl7aWYoIShhLm5vZGVUeXBl
PT09M3x8YS5ub2RlVHlwZT09PTgpKXtpZihjLmlzV2luZG93KGEpJiZhIT09RSYmIWEuZnJhbWVF
bGVtZW50KWE9RTtpZihkPT09ZmFsc2UpZD1VO2Vsc2UgaWYoIWQpcmV0dXJuO3ZhciBmLGg7aWYo
ZC5oYW5kbGVyKXtmPWQ7ZD1mLmhhbmRsZXJ9aWYoIWQuZ3VpZClkLmd1aWQ9Yy5ndWlkKys7aWYo
aD1jLmRhdGEoYSkpe3ZhciBsPWEubm9kZVR5cGU/ImV2ZW50cyI6Il9fZXZlbnRzX18iLGs9aFts
XSxvPWguaGFuZGxlO2lmKHR5cGVvZiBrPT09ImZ1bmN0aW9uIil7bz1rLmhhbmRsZTtrPWsuZXZl
bnRzfWVsc2UgaWYoIWspe2Eubm9kZVR5cGV8fChoW2xdPWg9ZnVuY3Rpb24oKXt9KTtoLmV2ZW50
cz1rPXt9fWlmKCFvKWguaGFuZGxlPW89ZnVuY3Rpb24oKXtyZXR1cm4gdHlwZW9mIGMhPT0idW5k
ZWZpbmVkIiYmIWMuZXZlbnQudHJpZ2dlcmVkP2MuZXZlbnQuaGFuZGxlLmFwcGx5KG8uZWxlbSwK
LWFyZ3VtZW50cyk6Qn07by5lbGVtPWE7Yj1iLnNwbGl0KCIgIik7Zm9yKHZhciB4PTAscjtsPWJb
eCsrXTspe2g9Zj9jLmV4dGVuZCh7fSxmKTp7aGFuZGxlcjpkLGRhdGE6ZX07aWYobC5pbmRleE9m
KCIuIik+LTEpe3I9bC5zcGxpdCgiLiIpO2w9ci5zaGlmdCgpO2gubmFtZXNwYWNlPXIuc2xpY2Uo
MCkuc29ydCgpLmpvaW4oIi4iKX1lbHNle3I9W107aC5uYW1lc3BhY2U9IiJ9aC50eXBlPWw7aWYo
IWguZ3VpZCloLmd1aWQ9ZC5ndWlkO3ZhciBBPWtbbF0sQz1jLmV2ZW50LnNwZWNpYWxbbF18fHt9
O2lmKCFBKXtBPWtbbF09W107aWYoIUMuc2V0dXB8fEMuc2V0dXAuY2FsbChhLGUscixvKT09PWZh
bHNlKWlmKGEuYWRkRXZlbnRMaXN0ZW5lcilhLmFkZEV2ZW50TGlzdGVuZXIobCxvLGZhbHNlKTtl
bHNlIGEuYXR0YWNoRXZlbnQmJmEuYXR0YWNoRXZlbnQoIm9uIitsLG8pfWlmKEMuYWRkKXtDLmFk
ZC5jYWxsKGEsaCk7aWYoIWguaGFuZGxlci5ndWlkKWguaGFuZGxlci5ndWlkPQotZC5ndWlkfUEu
cHVzaChoKTtjLmV2ZW50Lmdsb2JhbFtsXT10cnVlfWE9bnVsbH19fSxnbG9iYWw6e30scmVtb3Zl
OmZ1bmN0aW9uKGEsYixkLGUpe2lmKCEoYS5ub2RlVHlwZT09PTN8fGEubm9kZVR5cGU9PT04KSl7
aWYoZD09PWZhbHNlKWQ9VTt2YXIgZixoLGw9MCxrLG8seCxyLEEsQyxKPWEubm9kZVR5cGU/ImV2
ZW50cyI6Il9fZXZlbnRzX18iLHc9Yy5kYXRhKGEpLEk9dyYmd1tKXTtpZih3JiZJKXtpZih0eXBl
b2YgST09PSJmdW5jdGlvbiIpe3c9STtJPUkuZXZlbnRzfWlmKGImJmIudHlwZSl7ZD1iLmhhbmRs
ZXI7Yj1iLnR5cGV9aWYoIWJ8fHR5cGVvZiBiPT09InN0cmluZyImJmIuY2hhckF0KDApPT09Ii4i
KXtiPWJ8fCIiO2ZvcihmIGluIEkpYy5ldmVudC5yZW1vdmUoYSxmK2IpfWVsc2V7Zm9yKGI9Yi5z
cGxpdCgiICIpO2Y9YltsKytdOyl7cj1mO2s9Zi5pbmRleE9mKCIuIik8MDtvPVtdO2lmKCFrKXtv
PWYuc3BsaXQoIi4iKTtmPW8uc2hpZnQoKTt4PVJlZ0V4cCgiKF58XFwuKSIrCi1jLm1hcChvLnNs
aWNlKDApLnNvcnQoKSxZYSkuam9pbigiXFwuKD86LipcXC4pPyIpKyIoXFwufCQpIil9aWYoQT1J
W2ZdKWlmKGQpe3I9Yy5ldmVudC5zcGVjaWFsW2ZdfHx7fTtmb3IoaD1lfHwwO2g8QS5sZW5ndGg7
aCsrKXtDPUFbaF07aWYoZC5ndWlkPT09Qy5ndWlkKXtpZihrfHx4LnRlc3QoQy5uYW1lc3BhY2Up
KXtlPT1udWxsJiZBLnNwbGljZShoLS0sMSk7ci5yZW1vdmUmJnIucmVtb3ZlLmNhbGwoYSxDKX1p
ZihlIT1udWxsKWJyZWFrfX1pZihBLmxlbmd0aD09PTB8fGUhPW51bGwmJkEubGVuZ3RoPT09MSl7
aWYoIXIudGVhcmRvd258fHIudGVhcmRvd24uY2FsbChhLG8pPT09ZmFsc2UpYy5yZW1vdmVFdmVu
dChhLGYsdy5oYW5kbGUpO2RlbGV0ZSBJW2ZdfX1lbHNlIGZvcihoPTA7aDxBLmxlbmd0aDtoKysp
e0M9QVtoXTtpZihrfHx4LnRlc3QoQy5uYW1lc3BhY2UpKXtjLmV2ZW50LnJlbW92ZShhLHIsQy5o
YW5kbGVyLGgpO0Euc3BsaWNlKGgtLSwxKX19fWlmKGMuaXNFbXB0eU9iamVjdChJKSl7aWYoYj0K
LXcuaGFuZGxlKWIuZWxlbT1udWxsO2RlbGV0ZSB3LmV2ZW50cztkZWxldGUgdy5oYW5kbGU7aWYo
dHlwZW9mIHc9PT0iZnVuY3Rpb24iKWMucmVtb3ZlRGF0YShhLEopO2Vsc2UgYy5pc0VtcHR5T2Jq
ZWN0KHcpJiZjLnJlbW92ZURhdGEoYSl9fX19fSx0cmlnZ2VyOmZ1bmN0aW9uKGEsYixkLGUpe3Zh
ciBmPWEudHlwZXx8YTtpZighZSl7YT10eXBlb2YgYT09PSJvYmplY3QiP2FbYy5leHBhbmRvXT9h
OmMuZXh0ZW5kKGMuRXZlbnQoZiksYSk6Yy5FdmVudChmKTtpZihmLmluZGV4T2YoIiEiKT49MCl7
YS50eXBlPWY9Zi5zbGljZSgwLC0xKTthLmV4Y2x1c2l2ZT10cnVlfWlmKCFkKXthLnN0b3BQcm9w
YWdhdGlvbigpO2MuZXZlbnQuZ2xvYmFsW2ZdJiZjLmVhY2goYy5jYWNoZSxmdW5jdGlvbigpe3Ro
aXMuZXZlbnRzJiZ0aGlzLmV2ZW50c1tmXSYmYy5ldmVudC50cmlnZ2VyKGEsYix0aGlzLmhhbmRs
ZS5lbGVtKX0pfWlmKCFkfHxkLm5vZGVUeXBlPT09M3x8ZC5ub2RlVHlwZT09PQotOClyZXR1cm4g
QjthLnJlc3VsdD1CO2EudGFyZ2V0PWQ7Yj1jLm1ha2VBcnJheShiKTtiLnVuc2hpZnQoYSl9YS5j
dXJyZW50VGFyZ2V0PWQ7KGU9ZC5ub2RlVHlwZT9jLmRhdGEoZCwiaGFuZGxlIik6KGMuZGF0YShk
LCJfX2V2ZW50c19fIil8fHt9KS5oYW5kbGUpJiZlLmFwcGx5KGQsYik7ZT1kLnBhcmVudE5vZGV8
fGQub3duZXJEb2N1bWVudDt0cnl7aWYoIShkJiZkLm5vZGVOYW1lJiZjLm5vRGF0YVtkLm5vZGVO
YW1lLnRvTG93ZXJDYXNlKCldKSlpZihkWyJvbiIrZl0mJmRbIm9uIitmXS5hcHBseShkLGIpPT09
ZmFsc2Upe2EucmVzdWx0PWZhbHNlO2EucHJldmVudERlZmF1bHQoKX19Y2F0Y2goaCl7fWlmKCFh
LmlzUHJvcGFnYXRpb25TdG9wcGVkKCkmJmUpYy5ldmVudC50cmlnZ2VyKGEsYixlLHRydWUpO2Vs
c2UgaWYoIWEuaXNEZWZhdWx0UHJldmVudGVkKCkpe3ZhciBsO2U9YS50YXJnZXQ7dmFyIGs9Zi5y
ZXBsYWNlKFgsIiIpLG89Yy5ub2RlTmFtZShlLCJhIikmJms9PT0KLSJjbGljayIseD1jLmV2ZW50
LnNwZWNpYWxba118fHt9O2lmKCgheC5fZGVmYXVsdHx8eC5fZGVmYXVsdC5jYWxsKGQsYSk9PT1m
YWxzZSkmJiFvJiYhKGUmJmUubm9kZU5hbWUmJmMubm9EYXRhW2Uubm9kZU5hbWUudG9Mb3dlckNh
c2UoKV0pKXt0cnl7aWYoZVtrXSl7aWYobD1lWyJvbiIra10pZVsib24iK2tdPW51bGw7Yy5ldmVu
dC50cmlnZ2VyZWQ9dHJ1ZTtlW2tdKCl9fWNhdGNoKHIpe31pZihsKWVbIm9uIitrXT1sO2MuZXZl
bnQudHJpZ2dlcmVkPWZhbHNlfX19LGhhbmRsZTpmdW5jdGlvbihhKXt2YXIgYixkLGUsZjtkPVtd
O3ZhciBoPWMubWFrZUFycmF5KGFyZ3VtZW50cyk7YT1oWzBdPWMuZXZlbnQuZml4KGF8fEUuZXZl
bnQpO2EuY3VycmVudFRhcmdldD10aGlzO2I9YS50eXBlLmluZGV4T2YoIi4iKTwwJiYhYS5leGNs
dXNpdmU7aWYoIWIpe2U9YS50eXBlLnNwbGl0KCIuIik7YS50eXBlPWUuc2hpZnQoKTtkPWUuc2xp
Y2UoMCkuc29ydCgpO2U9UmVnRXhwKCIoXnxcXC4pIisKLWQuam9pbigiXFwuKD86LipcXC4pPyIp
KyIoXFwufCQpIil9YS5uYW1lc3BhY2U9YS5uYW1lc3BhY2V8fGQuam9pbigiLiIpO2Y9Yy5kYXRh
KHRoaXMsdGhpcy5ub2RlVHlwZT8iZXZlbnRzIjoiX19ldmVudHNfXyIpO2lmKHR5cGVvZiBmPT09
ImZ1bmN0aW9uIilmPWYuZXZlbnRzO2Q9KGZ8fHt9KVthLnR5cGVdO2lmKGYmJmQpe2Q9ZC5zbGlj
ZSgwKTtmPTA7Zm9yKHZhciBsPWQubGVuZ3RoO2Y8bDtmKyspe3ZhciBrPWRbZl07aWYoYnx8ZS50
ZXN0KGsubmFtZXNwYWNlKSl7YS5oYW5kbGVyPWsuaGFuZGxlcjthLmRhdGE9ay5kYXRhO2EuaGFu
ZGxlT2JqPWs7az1rLmhhbmRsZXIuYXBwbHkodGhpcyxoKTtpZihrIT09Qil7YS5yZXN1bHQ9aztp
ZihrPT09ZmFsc2Upe2EucHJldmVudERlZmF1bHQoKTthLnN0b3BQcm9wYWdhdGlvbigpfX1pZihh
LmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkKCkpYnJlYWt9fX1yZXR1cm4gYS5yZXN1bHR9
LHByb3BzOiJhbHRLZXkgYXR0ckNoYW5nZSBhdHRyTmFtZSBidWJibGVzIGJ1dHRvbiBjYW5jZWxh
YmxlIGNoYXJDb2RlIGNsaWVudFggY2xpZW50WSBjdHJsS2V5IGN1cnJlbnRUYXJnZXQgZGF0YSBk
ZXRhaWwgZXZlbnRQaGFzZSBmcm9tRWxlbWVudCBoYW5kbGVyIGtleUNvZGUgbGF5ZXJYIGxheWVy
WSBtZXRhS2V5IG5ld1ZhbHVlIG9mZnNldFggb2Zmc2V0WSBwYWdlWCBwYWdlWSBwcmV2VmFsdWUg
cmVsYXRlZE5vZGUgcmVsYXRlZFRhcmdldCBzY3JlZW5YIHNjcmVlblkgc2hpZnRLZXkgc3JjRWxl
bWVudCB0YXJnZXQgdG9FbGVtZW50IHZpZXcgd2hlZWxEZWx0YSB3aGljaCIuc3BsaXQoIiAiKSwK
LWZpeDpmdW5jdGlvbihhKXtpZihhW2MuZXhwYW5kb10pcmV0dXJuIGE7dmFyIGI9YTthPWMuRXZl
bnQoYik7Zm9yKHZhciBkPXRoaXMucHJvcHMubGVuZ3RoLGU7ZDspe2U9dGhpcy5wcm9wc1stLWRd
O2FbZV09YltlXX1pZighYS50YXJnZXQpYS50YXJnZXQ9YS5zcmNFbGVtZW50fHx0O2lmKGEudGFy
Z2V0Lm5vZGVUeXBlPT09MylhLnRhcmdldD1hLnRhcmdldC5wYXJlbnROb2RlO2lmKCFhLnJlbGF0
ZWRUYXJnZXQmJmEuZnJvbUVsZW1lbnQpYS5yZWxhdGVkVGFyZ2V0PWEuZnJvbUVsZW1lbnQ9PT1h
LnRhcmdldD9hLnRvRWxlbWVudDphLmZyb21FbGVtZW50O2lmKGEucGFnZVg9PW51bGwmJmEuY2xp
ZW50WCE9bnVsbCl7Yj10LmRvY3VtZW50RWxlbWVudDtkPXQuYm9keTthLnBhZ2VYPWEuY2xpZW50
WCsoYiYmYi5zY3JvbGxMZWZ0fHxkJiZkLnNjcm9sbExlZnR8fDApLShiJiZiLmNsaWVudExlZnR8
fGQmJmQuY2xpZW50TGVmdHx8MCk7YS5wYWdlWT1hLmNsaWVudFkrKGImJmIuc2Nyb2xsVG9wfHwK
LWQmJmQuc2Nyb2xsVG9wfHwwKS0oYiYmYi5jbGllbnRUb3B8fGQmJmQuY2xpZW50VG9wfHwwKX1p
ZihhLndoaWNoPT1udWxsJiYoYS5jaGFyQ29kZSE9bnVsbHx8YS5rZXlDb2RlIT1udWxsKSlhLndo
aWNoPWEuY2hhckNvZGUhPW51bGw/YS5jaGFyQ29kZTphLmtleUNvZGU7aWYoIWEubWV0YUtleSYm
YS5jdHJsS2V5KWEubWV0YUtleT1hLmN0cmxLZXk7aWYoIWEud2hpY2gmJmEuYnV0dG9uIT09Qilh
LndoaWNoPWEuYnV0dG9uJjE/MTphLmJ1dHRvbiYyPzM6YS5idXR0b24mND8yOjA7cmV0dXJuIGF9
LGd1aWQ6MUU4LHByb3h5OmMucHJveHksc3BlY2lhbDp7cmVhZHk6e3NldHVwOmMuYmluZFJlYWR5
LHRlYXJkb3duOmMubm9vcH0sbGl2ZTp7YWRkOmZ1bmN0aW9uKGEpe2MuZXZlbnQuYWRkKHRoaXMs
WShhLm9yaWdUeXBlLGEuc2VsZWN0b3IpLGMuZXh0ZW5kKHt9LGEse2hhbmRsZXI6S2EsZ3VpZDph
LmhhbmRsZXIuZ3VpZH0pKX0scmVtb3ZlOmZ1bmN0aW9uKGEpe2MuZXZlbnQucmVtb3ZlKHRoaXMs
Ci1ZKGEub3JpZ1R5cGUsYS5zZWxlY3RvciksYSl9fSxiZWZvcmV1bmxvYWQ6e3NldHVwOmZ1bmN0
aW9uKGEsYixkKXtpZihjLmlzV2luZG93KHRoaXMpKXRoaXMub25iZWZvcmV1bmxvYWQ9ZH0sdGVh
cmRvd246ZnVuY3Rpb24oYSxiKXtpZih0aGlzLm9uYmVmb3JldW5sb2FkPT09Yil0aGlzLm9uYmVm
b3JldW5sb2FkPW51bGx9fX19O2MucmVtb3ZlRXZlbnQ9dC5yZW1vdmVFdmVudExpc3RlbmVyP2Z1
bmN0aW9uKGEsYixkKXthLnJlbW92ZUV2ZW50TGlzdGVuZXImJmEucmVtb3ZlRXZlbnRMaXN0ZW5l
cihiLGQsZmFsc2UpfTpmdW5jdGlvbihhLGIsZCl7YS5kZXRhY2hFdmVudCYmYS5kZXRhY2hFdmVu
dCgib24iK2IsZCl9O2MuRXZlbnQ9ZnVuY3Rpb24oYSl7aWYoIXRoaXMucHJldmVudERlZmF1bHQp
cmV0dXJuIG5ldyBjLkV2ZW50KGEpO2lmKGEmJmEudHlwZSl7dGhpcy5vcmlnaW5hbEV2ZW50PWE7
dGhpcy50eXBlPWEudHlwZX1lbHNlIHRoaXMudHlwZT1hO3RoaXMudGltZVN0YW1wPQotYy5ub3co
KTt0aGlzW2MuZXhwYW5kb109dHJ1ZX07Yy5FdmVudC5wcm90b3R5cGU9e3ByZXZlbnREZWZhdWx0
OmZ1bmN0aW9uKCl7dGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQ9Y2E7dmFyIGE9dGhpcy5vcmlnaW5h
bEV2ZW50O2lmKGEpaWYoYS5wcmV2ZW50RGVmYXVsdClhLnByZXZlbnREZWZhdWx0KCk7ZWxzZSBh
LnJldHVyblZhbHVlPWZhbHNlfSxzdG9wUHJvcGFnYXRpb246ZnVuY3Rpb24oKXt0aGlzLmlzUHJv
cGFnYXRpb25TdG9wcGVkPWNhO3ZhciBhPXRoaXMub3JpZ2luYWxFdmVudDtpZihhKXthLnN0b3BQ
cm9wYWdhdGlvbiYmYS5zdG9wUHJvcGFnYXRpb24oKTthLmNhbmNlbEJ1YmJsZT10cnVlfX0sc3Rv
cEltbWVkaWF0ZVByb3BhZ2F0aW9uOmZ1bmN0aW9uKCl7dGhpcy5pc0ltbWVkaWF0ZVByb3BhZ2F0
aW9uU3RvcHBlZD1jYTt0aGlzLnN0b3BQcm9wYWdhdGlvbigpfSxpc0RlZmF1bHRQcmV2ZW50ZWQ6
VSxpc1Byb3BhZ2F0aW9uU3RvcHBlZDpVLGlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkOlV9
OwotdmFyIHZhPWZ1bmN0aW9uKGEpe3ZhciBiPWEucmVsYXRlZFRhcmdldDt0cnl7Zm9yKDtiJiZi
IT09dGhpczspYj1iLnBhcmVudE5vZGU7aWYoYiE9PXRoaXMpe2EudHlwZT1hLmRhdGE7Yy5ldmVu
dC5oYW5kbGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfX1jYXRjaChkKXt9fSx3YT1mdW5jdGlvbihh
KXthLnR5cGU9YS5kYXRhO2MuZXZlbnQuaGFuZGxlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Yy5l
YWNoKHttb3VzZWVudGVyOiJtb3VzZW92ZXIiLG1vdXNlbGVhdmU6Im1vdXNlb3V0In0sZnVuY3Rp
b24oYSxiKXtjLmV2ZW50LnNwZWNpYWxbYV09e3NldHVwOmZ1bmN0aW9uKGQpe2MuZXZlbnQuYWRk
KHRoaXMsYixkJiZkLnNlbGVjdG9yP3dhOnZhLGEpfSx0ZWFyZG93bjpmdW5jdGlvbihkKXtjLmV2
ZW50LnJlbW92ZSh0aGlzLGIsZCYmZC5zZWxlY3Rvcj93YTp2YSl9fX0pO2lmKCFjLnN1cHBvcnQu
c3VibWl0QnViYmxlcyljLmV2ZW50LnNwZWNpYWwuc3VibWl0PXtzZXR1cDpmdW5jdGlvbigpe2lm
KHRoaXMubm9kZU5hbWUudG9Mb3dlckNhc2UoKSE9PQotImZvcm0iKXtjLmV2ZW50LmFkZCh0aGlz
LCJjbGljay5zcGVjaWFsU3VibWl0IixmdW5jdGlvbihhKXt2YXIgYj1hLnRhcmdldCxkPWIudHlw
ZTtpZigoZD09PSJzdWJtaXQifHxkPT09ImltYWdlIikmJmMoYikuY2xvc2VzdCgiZm9ybSIpLmxl
bmd0aCl7YS5saXZlRmlyZWQ9QjtyZXR1cm4gbGEoInN1Ym1pdCIsdGhpcyxhcmd1bWVudHMpfX0p
O2MuZXZlbnQuYWRkKHRoaXMsImtleXByZXNzLnNwZWNpYWxTdWJtaXQiLGZ1bmN0aW9uKGEpe3Zh
ciBiPWEudGFyZ2V0LGQ9Yi50eXBlO2lmKChkPT09InRleHQifHxkPT09InBhc3N3b3JkIikmJmMo
YikuY2xvc2VzdCgiZm9ybSIpLmxlbmd0aCYmYS5rZXlDb2RlPT09MTMpe2EubGl2ZUZpcmVkPUI7
cmV0dXJuIGxhKCJzdWJtaXQiLHRoaXMsYXJndW1lbnRzKX19KX1lbHNlIHJldHVybiBmYWxzZX0s
dGVhcmRvd246ZnVuY3Rpb24oKXtjLmV2ZW50LnJlbW92ZSh0aGlzLCIuc3BlY2lhbFN1Ym1pdCIp
fX07aWYoIWMuc3VwcG9ydC5jaGFuZ2VCdWJibGVzKXt2YXIgViwKLXhhPWZ1bmN0aW9uKGEpe3Zh
ciBiPWEudHlwZSxkPWEudmFsdWU7aWYoYj09PSJyYWRpbyJ8fGI9PT0iY2hlY2tib3giKWQ9YS5j
aGVja2VkO2Vsc2UgaWYoYj09PSJzZWxlY3QtbXVsdGlwbGUiKWQ9YS5zZWxlY3RlZEluZGV4Pi0x
P2MubWFwKGEub3B0aW9ucyxmdW5jdGlvbihlKXtyZXR1cm4gZS5zZWxlY3RlZH0pLmpvaW4oIi0i
KToiIjtlbHNlIGlmKGEubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PSJzZWxlY3QiKWQ9YS5zZWxl
Y3RlZEluZGV4O3JldHVybiBkfSxaPWZ1bmN0aW9uKGEsYil7dmFyIGQ9YS50YXJnZXQsZSxmO2lm
KCEoIWlhLnRlc3QoZC5ub2RlTmFtZSl8fGQucmVhZE9ubHkpKXtlPWMuZGF0YShkLCJfY2hhbmdl
X2RhdGEiKTtmPXhhKGQpO2lmKGEudHlwZSE9PSJmb2N1c291dCJ8fGQudHlwZSE9PSJyYWRpbyIp
Yy5kYXRhKGQsIl9jaGFuZ2VfZGF0YSIsZik7aWYoIShlPT09Qnx8Zj09PWUpKWlmKGUhPW51bGx8
fGYpe2EudHlwZT0iY2hhbmdlIjthLmxpdmVGaXJlZD0KLUI7cmV0dXJuIGMuZXZlbnQudHJpZ2dl
cihhLGIsZCl9fX07Yy5ldmVudC5zcGVjaWFsLmNoYW5nZT17ZmlsdGVyczp7Zm9jdXNvdXQ6Wixi
ZWZvcmVkZWFjdGl2YXRlOlosY2xpY2s6ZnVuY3Rpb24oYSl7dmFyIGI9YS50YXJnZXQsZD1iLnR5
cGU7aWYoZD09PSJyYWRpbyJ8fGQ9PT0iY2hlY2tib3gifHxiLm5vZGVOYW1lLnRvTG93ZXJDYXNl
KCk9PT0ic2VsZWN0IilyZXR1cm4gWi5jYWxsKHRoaXMsYSl9LGtleWRvd246ZnVuY3Rpb24oYSl7
dmFyIGI9YS50YXJnZXQsZD1iLnR5cGU7aWYoYS5rZXlDb2RlPT09MTMmJmIubm9kZU5hbWUudG9M
b3dlckNhc2UoKSE9PSJ0ZXh0YXJlYSJ8fGEua2V5Q29kZT09PTMyJiYoZD09PSJjaGVja2JveCJ8
fGQ9PT0icmFkaW8iKXx8ZD09PSJzZWxlY3QtbXVsdGlwbGUiKXJldHVybiBaLmNhbGwodGhpcyxh
KX0sYmVmb3JlYWN0aXZhdGU6ZnVuY3Rpb24oYSl7YT1hLnRhcmdldDtjLmRhdGEoYSwiX2NoYW5n
ZV9kYXRhIix4YShhKSl9fSxzZXR1cDpmdW5jdGlvbigpe2lmKHRoaXMudHlwZT09PQotImZpbGUi
KXJldHVybiBmYWxzZTtmb3IodmFyIGEgaW4gViljLmV2ZW50LmFkZCh0aGlzLGErIi5zcGVjaWFs
Q2hhbmdlIixWW2FdKTtyZXR1cm4gaWEudGVzdCh0aGlzLm5vZGVOYW1lKX0sdGVhcmRvd246ZnVu
Y3Rpb24oKXtjLmV2ZW50LnJlbW92ZSh0aGlzLCIuc3BlY2lhbENoYW5nZSIpO3JldHVybiBpYS50
ZXN0KHRoaXMubm9kZU5hbWUpfX07Vj1jLmV2ZW50LnNwZWNpYWwuY2hhbmdlLmZpbHRlcnM7Vi5m
b2N1cz1WLmJlZm9yZWFjdGl2YXRlfXQuYWRkRXZlbnRMaXN0ZW5lciYmYy5lYWNoKHtmb2N1czoi
Zm9jdXNpbiIsYmx1cjoiZm9jdXNvdXQifSxmdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGQoZSl7ZT1j
LmV2ZW50LmZpeChlKTtlLnR5cGU9YjtyZXR1cm4gYy5ldmVudC50cmlnZ2VyKGUsbnVsbCxlLnRh
cmdldCl9Yy5ldmVudC5zcGVjaWFsW2JdPXtzZXR1cDpmdW5jdGlvbigpe3VhW2JdKys9PT0wJiZ0
LmFkZEV2ZW50TGlzdGVuZXIoYSxkLHRydWUpfSx0ZWFyZG93bjpmdW5jdGlvbigpey0tdWFbYl09
PT0KLTAmJnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihhLGQsdHJ1ZSl9fX0pO2MuZWFjaChbImJpbmQi
LCJvbmUiXSxmdW5jdGlvbihhLGIpe2MuZm5bYl09ZnVuY3Rpb24oZCxlLGYpe2lmKHR5cGVvZiBk
PT09Im9iamVjdCIpe2Zvcih2YXIgaCBpbiBkKXRoaXNbYl0oaCxlLGRbaF0sZik7cmV0dXJuIHRo
aXN9aWYoYy5pc0Z1bmN0aW9uKGUpfHxlPT09ZmFsc2Upe2Y9ZTtlPUJ9dmFyIGw9Yj09PSJvbmUi
P2MucHJveHkoZixmdW5jdGlvbihvKXtjKHRoaXMpLnVuYmluZChvLGwpO3JldHVybiBmLmFwcGx5
KHRoaXMsYXJndW1lbnRzKX0pOmY7aWYoZD09PSJ1bmxvYWQiJiZiIT09Im9uZSIpdGhpcy5vbmUo
ZCxlLGYpO2Vsc2V7aD0wO2Zvcih2YXIgaz10aGlzLmxlbmd0aDtoPGs7aCsrKWMuZXZlbnQuYWRk
KHRoaXNbaF0sZCxsLGUpfXJldHVybiB0aGlzfX0pO2MuZm4uZXh0ZW5kKHt1bmJpbmQ6ZnVuY3Rp
b24oYSxiKXtpZih0eXBlb2YgYT09PSJvYmplY3QiJiYhYS5wcmV2ZW50RGVmYXVsdClmb3IodmFy
IGQgaW4gYSl0aGlzLnVuYmluZChkLAotYVtkXSk7ZWxzZXtkPTA7Zm9yKHZhciBlPXRoaXMubGVu
Z3RoO2Q8ZTtkKyspYy5ldmVudC5yZW1vdmUodGhpc1tkXSxhLGIpfXJldHVybiB0aGlzfSxkZWxl
Z2F0ZTpmdW5jdGlvbihhLGIsZCxlKXtyZXR1cm4gdGhpcy5saXZlKGIsZCxlLGEpfSx1bmRlbGVn
YXRlOmZ1bmN0aW9uKGEsYixkKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD09PTA/dGhpcy51bmJp
bmQoImxpdmUiKTp0aGlzLmRpZShiLG51bGwsZCxhKX0sdHJpZ2dlcjpmdW5jdGlvbihhLGIpe3Jl
dHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtjLmV2ZW50LnRyaWdnZXIoYSxiLHRoaXMpfSl9LHRy
aWdnZXJIYW5kbGVyOmZ1bmN0aW9uKGEsYil7aWYodGhpc1swXSl7dmFyIGQ9Yy5FdmVudChhKTtk
LnByZXZlbnREZWZhdWx0KCk7ZC5zdG9wUHJvcGFnYXRpb24oKTtjLmV2ZW50LnRyaWdnZXIoZCxi
LHRoaXNbMF0pO3JldHVybiBkLnJlc3VsdH19LHRvZ2dsZTpmdW5jdGlvbihhKXtmb3IodmFyIGI9
YXJndW1lbnRzLGQ9Ci0xO2Q8Yi5sZW5ndGg7KWMucHJveHkoYSxiW2QrK10pO3JldHVybiB0aGlz
LmNsaWNrKGMucHJveHkoYSxmdW5jdGlvbihlKXt2YXIgZj0oYy5kYXRhKHRoaXMsImxhc3RUb2dn
bGUiK2EuZ3VpZCl8fDApJWQ7Yy5kYXRhKHRoaXMsImxhc3RUb2dnbGUiK2EuZ3VpZCxmKzEpO2Uu
cHJldmVudERlZmF1bHQoKTtyZXR1cm4gYltmXS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fGZhbHNl
fSkpfSxob3ZlcjpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLm1vdXNlZW50ZXIoYSkubW91c2Vs
ZWF2ZShifHxhKX19KTt2YXIgeWE9e2ZvY3VzOiJmb2N1c2luIixibHVyOiJmb2N1c291dCIsbW91
c2VlbnRlcjoibW91c2VvdmVyIixtb3VzZWxlYXZlOiJtb3VzZW91dCJ9O2MuZWFjaChbImxpdmUi
LCJkaWUiXSxmdW5jdGlvbihhLGIpe2MuZm5bYl09ZnVuY3Rpb24oZCxlLGYsaCl7dmFyIGwsaz0w
LG8seCxyPWh8fHRoaXMuc2VsZWN0b3I7aD1oP3RoaXM6Yyh0aGlzLmNvbnRleHQpO2lmKHR5cGVv
ZiBkPT09Ci0ib2JqZWN0IiYmIWQucHJldmVudERlZmF1bHQpe2ZvcihsIGluIGQpaFtiXShsLGUs
ZFtsXSxyKTtyZXR1cm4gdGhpc31pZihjLmlzRnVuY3Rpb24oZSkpe2Y9ZTtlPUJ9Zm9yKGQ9KGR8
fCIiKS5zcGxpdCgiICIpOyhsPWRbaysrXSkhPW51bGw7KXtvPVguZXhlYyhsKTt4PSIiO2lmKG8p
e3g9b1swXTtsPWwucmVwbGFjZShYLCIiKX1pZihsPT09ImhvdmVyIilkLnB1c2goIm1vdXNlZW50
ZXIiK3gsIm1vdXNlbGVhdmUiK3gpO2Vsc2V7bz1sO2lmKGw9PT0iZm9jdXMifHxsPT09ImJsdXIi
KXtkLnB1c2goeWFbbF0reCk7bCs9eH1lbHNlIGw9KHlhW2xdfHxsKSt4O2lmKGI9PT0ibGl2ZSIp
e3g9MDtmb3IodmFyIEE9aC5sZW5ndGg7eDxBO3grKyljLmV2ZW50LmFkZChoW3hdLCJsaXZlLiIr
WShsLHIpLHtkYXRhOmUsc2VsZWN0b3I6cixoYW5kbGVyOmYsb3JpZ1R5cGU6bCxvcmlnSGFuZGxl
cjpmLHByZVR5cGU6b30pfWVsc2UgaC51bmJpbmQoImxpdmUuIitZKGwsciksZil9fXJldHVybiB0
aGlzfX0pOwotYy5lYWNoKCJibHVyIGZvY3VzIGZvY3VzaW4gZm9jdXNvdXQgbG9hZCByZXNpemUg
c2Nyb2xsIHVubG9hZCBjbGljayBkYmxjbGljayBtb3VzZWRvd24gbW91c2V1cCBtb3VzZW1vdmUg
bW91c2VvdmVyIG1vdXNlb3V0IG1vdXNlZW50ZXIgbW91c2VsZWF2ZSBjaGFuZ2Ugc2VsZWN0IHN1
Ym1pdCBrZXlkb3duIGtleXByZXNzIGtleXVwIGVycm9yIi5zcGxpdCgiICIpLGZ1bmN0aW9uKGEs
Yil7Yy5mbltiXT1mdW5jdGlvbihkLGUpe2lmKGU9PW51bGwpe2U9ZDtkPW51bGx9cmV0dXJuIGFy
Z3VtZW50cy5sZW5ndGg+MD90aGlzLmJpbmQoYixkLGUpOnRoaXMudHJpZ2dlcihiKX07aWYoYy5h
dHRyRm4pYy5hdHRyRm5bYl09dHJ1ZX0pO0UuYXR0YWNoRXZlbnQmJiFFLmFkZEV2ZW50TGlzdGVu
ZXImJmMoRSkuYmluZCgidW5sb2FkIixmdW5jdGlvbigpe2Zvcih2YXIgYSBpbiBjLmNhY2hlKWlm
KGMuY2FjaGVbYV0uaGFuZGxlKXRyeXtjLmV2ZW50LnJlbW92ZShjLmNhY2hlW2FdLmhhbmRsZS5l
bGVtKX1jYXRjaChiKXt9fSk7Ci0oZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGcsaSxuLG0scCxxKXtw
PTA7Zm9yKHZhciB1PW0ubGVuZ3RoO3A8dTtwKyspe3ZhciB5PW1bcF07aWYoeSl7dmFyIEY9ZmFs
c2U7Zm9yKHk9eVtnXTt5Oyl7aWYoeS5zaXpjYWNoZT09PW4pe0Y9bVt5LnNpenNldF07YnJlYWt9
aWYoeS5ub2RlVHlwZT09PTEmJiFxKXt5LnNpemNhY2hlPW47eS5zaXpzZXQ9cH1pZih5Lm5vZGVO
YW1lLnRvTG93ZXJDYXNlKCk9PT1pKXtGPXk7YnJlYWt9eT15W2ddfW1bcF09Rn19fWZ1bmN0aW9u
IGIoZyxpLG4sbSxwLHEpe3A9MDtmb3IodmFyIHU9bS5sZW5ndGg7cDx1O3ArKyl7dmFyIHk9bVtw
XTtpZih5KXt2YXIgRj1mYWxzZTtmb3IoeT15W2ddO3k7KXtpZih5LnNpemNhY2hlPT09bil7Rj1t
W3kuc2l6c2V0XTticmVha31pZih5Lm5vZGVUeXBlPT09MSl7aWYoIXEpe3kuc2l6Y2FjaGU9bjt5
LnNpenNldD1wfWlmKHR5cGVvZiBpIT09InN0cmluZyIpe2lmKHk9PT1pKXtGPXRydWU7YnJlYWt9
fWVsc2UgaWYoay5maWx0ZXIoaSwKLVt5XSkubGVuZ3RoPjApe0Y9eTticmVha319eT15W2ddfW1b
cF09Rn19fXZhciBkPS8oKD86XCgoPzpcKFteKCldK1wpfFteKCldKykrXCl8XFsoPzpcW1teXFtc
XV0qXF18WyciXVteJyJdKlsnIl18W15cW1xdJyJdKykrXF18XFwufFteID4rfiwoXFtcXF0rKSt8
Wz4rfl0pKFxzKixccyopPygoPzoufFxyfFxuKSopL2csZT0wLGY9T2JqZWN0LnByb3RvdHlwZS50
b1N0cmluZyxoPWZhbHNlLGw9dHJ1ZTtbMCwwXS5zb3J0KGZ1bmN0aW9uKCl7bD1mYWxzZTtyZXR1
cm4gMH0pO3ZhciBrPWZ1bmN0aW9uKGcsaSxuLG0pe249bnx8W107dmFyIHA9aT1pfHx0O2lmKGku
bm9kZVR5cGUhPT0xJiZpLm5vZGVUeXBlIT09OSlyZXR1cm5bXTtpZighZ3x8dHlwZW9mIGchPT0i
c3RyaW5nIilyZXR1cm4gbjt2YXIgcSx1LHksRixNLE49dHJ1ZSxPPWsuaXNYTUwoaSksRD1bXSxS
PWc7ZG97ZC5leGVjKCIiKTtpZihxPWQuZXhlYyhSKSl7Uj1xWzNdO0QucHVzaChxWzFdKTtpZihx
WzJdKXtGPXFbM107Ci1icmVha319fXdoaWxlKHEpO2lmKEQubGVuZ3RoPjEmJnguZXhlYyhnKSlp
ZihELmxlbmd0aD09PTImJm8ucmVsYXRpdmVbRFswXV0pdT1MKERbMF0rRFsxXSxpKTtlbHNlIGZv
cih1PW8ucmVsYXRpdmVbRFswXV0/W2ldOmsoRC5zaGlmdCgpLGkpO0QubGVuZ3RoOyl7Zz1ELnNo
aWZ0KCk7aWYoby5yZWxhdGl2ZVtnXSlnKz1ELnNoaWZ0KCk7dT1MKGcsdSl9ZWxzZXtpZighbSYm
RC5sZW5ndGg+MSYmaS5ub2RlVHlwZT09PTkmJiFPJiZvLm1hdGNoLklELnRlc3QoRFswXSkmJiFv
Lm1hdGNoLklELnRlc3QoRFtELmxlbmd0aC0xXSkpe3E9ay5maW5kKEQuc2hpZnQoKSxpLE8pO2k9
cS5leHByP2suZmlsdGVyKHEuZXhwcixxLnNldClbMF06cS5zZXRbMF19aWYoaSl7cT1tP3tleHBy
OkQucG9wKCksc2V0OkMobSl9OmsuZmluZChELnBvcCgpLEQubGVuZ3RoPT09MSYmKERbMF09PT0i
fiJ8fERbMF09PT0iKyIpJiZpLnBhcmVudE5vZGU/aS5wYXJlbnROb2RlOmksTyk7dT1xLmV4cHI/
ay5maWx0ZXIocS5leHByLAotcS5zZXQpOnEuc2V0O2lmKEQubGVuZ3RoPjApeT1DKHUpO2Vsc2Ug
Tj1mYWxzZTtmb3IoO0QubGVuZ3RoOyl7cT1NPUQucG9wKCk7aWYoby5yZWxhdGl2ZVtNXSlxPUQu
cG9wKCk7ZWxzZSBNPSIiO2lmKHE9PW51bGwpcT1pO28ucmVsYXRpdmVbTV0oeSxxLE8pfX1lbHNl
IHk9W119eXx8KHk9dSk7eXx8ay5lcnJvcihNfHxnKTtpZihmLmNhbGwoeSk9PT0iW29iamVjdCBB
cnJheV0iKWlmKE4paWYoaSYmaS5ub2RlVHlwZT09PTEpZm9yKGc9MDt5W2ddIT1udWxsO2crKyl7
aWYoeVtnXSYmKHlbZ109PT10cnVlfHx5W2ddLm5vZGVUeXBlPT09MSYmay5jb250YWlucyhpLHlb
Z10pKSluLnB1c2godVtnXSl9ZWxzZSBmb3IoZz0wO3lbZ10hPW51bGw7ZysrKXlbZ10mJnlbZ10u
bm9kZVR5cGU9PT0xJiZuLnB1c2godVtnXSk7ZWxzZSBuLnB1c2guYXBwbHkobix5KTtlbHNlIEMo
eSxuKTtpZihGKXtrKEYscCxuLG0pO2sudW5pcXVlU29ydChuKX1yZXR1cm4gbn07ay51bmlxdWVT
b3J0PWZ1bmN0aW9uKGcpe2lmKHcpe2g9Ci1sO2cuc29ydCh3KTtpZihoKWZvcih2YXIgaT0xO2k8
Zy5sZW5ndGg7aSsrKWdbaV09PT1nW2ktMV0mJmcuc3BsaWNlKGktLSwxKX1yZXR1cm4gZ307ay5t
YXRjaGVzPWZ1bmN0aW9uKGcsaSl7cmV0dXJuIGsoZyxudWxsLG51bGwsaSl9O2subWF0Y2hlc1Nl
bGVjdG9yPWZ1bmN0aW9uKGcsaSl7cmV0dXJuIGsoaSxudWxsLG51bGwsW2ddKS5sZW5ndGg+MH07
ay5maW5kPWZ1bmN0aW9uKGcsaSxuKXt2YXIgbTtpZighZylyZXR1cm5bXTtmb3IodmFyIHA9MCxx
PW8ub3JkZXIubGVuZ3RoO3A8cTtwKyspe3ZhciB1LHk9by5vcmRlcltwXTtpZih1PW8ubGVmdE1h
dGNoW3ldLmV4ZWMoZykpe3ZhciBGPXVbMV07dS5zcGxpY2UoMSwxKTtpZihGLnN1YnN0cihGLmxl
bmd0aC0xKSE9PSJcXCIpe3VbMV09KHVbMV18fCIiKS5yZXBsYWNlKC9cXC9nLCIiKTttPW8uZmlu
ZFt5XSh1LGksbik7aWYobSE9bnVsbCl7Zz1nLnJlcGxhY2Uoby5tYXRjaFt5XSwiIik7YnJlYWt9
fX19bXx8KG09aS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpKTsKLXJldHVybntzZXQ6bSxleHBy
Omd9fTtrLmZpbHRlcj1mdW5jdGlvbihnLGksbixtKXtmb3IodmFyIHAscSx1PWcseT1bXSxGPWks
TT1pJiZpWzBdJiZrLmlzWE1MKGlbMF0pO2cmJmkubGVuZ3RoOyl7Zm9yKHZhciBOIGluIG8uZmls
dGVyKWlmKChwPW8ubGVmdE1hdGNoW05dLmV4ZWMoZykpIT1udWxsJiZwWzJdKXt2YXIgTyxELFI9
by5maWx0ZXJbTl07RD1wWzFdO3E9ZmFsc2U7cC5zcGxpY2UoMSwxKTtpZihELnN1YnN0cihELmxl
bmd0aC0xKSE9PSJcXCIpe2lmKEY9PT15KXk9W107aWYoby5wcmVGaWx0ZXJbTl0paWYocD1vLnBy
ZUZpbHRlcltOXShwLEYsbix5LG0sTSkpe2lmKHA9PT10cnVlKWNvbnRpbnVlfWVsc2UgcT1PPXRy
dWU7aWYocClmb3IodmFyIGo9MDsoRD1GW2pdKSE9bnVsbDtqKyspaWYoRCl7Tz1SKEQscCxqLEYp
O3ZhciBzPW1eISFPO2lmKG4mJk8hPW51bGwpaWYocylxPXRydWU7ZWxzZSBGW2pdPWZhbHNlO2Vs
c2UgaWYocyl7eS5wdXNoKEQpO3E9dHJ1ZX19aWYoTyE9PQotQil7bnx8KEY9eSk7Zz1nLnJlcGxh
Y2Uoby5tYXRjaFtOXSwiIik7aWYoIXEpcmV0dXJuW107YnJlYWt9fX1pZihnPT09dSlpZihxPT1u
dWxsKWsuZXJyb3IoZyk7ZWxzZSBicmVhazt1PWd9cmV0dXJuIEZ9O2suZXJyb3I9ZnVuY3Rpb24o
Zyl7dGhyb3ciU3ludGF4IGVycm9yLCB1bnJlY29nbml6ZWQgZXhwcmVzc2lvbjogIitnO307dmFy
IG89ay5zZWxlY3RvcnM9e29yZGVyOlsiSUQiLCJOQU1FIiwiVEFHIl0sbWF0Y2g6e0lEOi8jKCg/
Oltcd1x1MDBjMC1cdUZGRkZcLV18XFwuKSspLyxDTEFTUzovXC4oKD86W1x3XHUwMGMwLVx1RkZG
RlwtXXxcXC4pKykvLE5BTUU6L1xbbmFtZT1bJyJdKigoPzpbXHdcdTAwYzAtXHVGRkZGXC1dfFxc
LikrKVsnIl0qXF0vLEFUVFI6L1xbXHMqKCg/Oltcd1x1MDBjMC1cdUZGRkZcLV18XFwuKSspXHMq
KD86KFxTPz0pXHMqKFsnIl0qKSguKj8pXDN8KVxzKlxdLyxUQUc6L14oKD86W1x3XHUwMGMwLVx1
RkZGRlwqXC1dfFxcLikrKS8sQ0hJTEQ6Lzoob25seXxudGh8bGFzdHxmaXJzdCktY2hpbGQoPzpc
KChldmVufG9kZHxbXGRuK1wtXSopXCkpPy8sCi1QT1M6LzoobnRofGVxfGd0fGx0fGZpcnN0fGxh
c3R8ZXZlbnxvZGQpKD86XCgoXGQqKVwpKT8oPz1bXlwtXXwkKS8sUFNFVURPOi86KCg/Oltcd1x1
MDBjMC1cdUZGRkZcLV18XFwuKSspKD86XCgoWyciXT8pKCg/OlwoW15cKV0rXCl8W15cKFwpXSop
KylcMlwpKT8vfSxsZWZ0TWF0Y2g6e30sYXR0ck1hcDp7ImNsYXNzIjoiY2xhc3NOYW1lIiwiZm9y
IjoiaHRtbEZvciJ9LGF0dHJIYW5kbGU6e2hyZWY6ZnVuY3Rpb24oZyl7cmV0dXJuIGcuZ2V0QXR0
cmlidXRlKCJocmVmIil9fSxyZWxhdGl2ZTp7IisiOmZ1bmN0aW9uKGcsaSl7dmFyIG49dHlwZW9m
IGk9PT0ic3RyaW5nIixtPW4mJiEvXFcvLnRlc3QoaSk7bj1uJiYhbTtpZihtKWk9aS50b0xvd2Vy
Q2FzZSgpO209MDtmb3IodmFyIHA9Zy5sZW5ndGgscTttPHA7bSsrKWlmKHE9Z1ttXSl7Zm9yKDso
cT1xLnByZXZpb3VzU2libGluZykmJnEubm9kZVR5cGUhPT0xOyk7Z1ttXT1ufHxxJiZxLm5vZGVO
YW1lLnRvTG93ZXJDYXNlKCk9PT0KLWk/cXx8ZmFsc2U6cT09PWl9biYmay5maWx0ZXIoaSxnLHRy
dWUpfSwiPiI6ZnVuY3Rpb24oZyxpKXt2YXIgbixtPXR5cGVvZiBpPT09InN0cmluZyIscD0wLHE9
Zy5sZW5ndGg7aWYobSYmIS9cVy8udGVzdChpKSlmb3IoaT1pLnRvTG93ZXJDYXNlKCk7cDxxO3Ar
Kyl7aWYobj1nW3BdKXtuPW4ucGFyZW50Tm9kZTtnW3BdPW4ubm9kZU5hbWUudG9Mb3dlckNhc2Uo
KT09PWk/bjpmYWxzZX19ZWxzZXtmb3IoO3A8cTtwKyspaWYobj1nW3BdKWdbcF09bT9uLnBhcmVu
dE5vZGU6bi5wYXJlbnROb2RlPT09aTttJiZrLmZpbHRlcihpLGcsdHJ1ZSl9fSwiIjpmdW5jdGlv
bihnLGksbil7dmFyIG0scD1lKysscT1iO2lmKHR5cGVvZiBpPT09InN0cmluZyImJiEvXFcvLnRl
c3QoaSkpe209aT1pLnRvTG93ZXJDYXNlKCk7cT1hfXEoInBhcmVudE5vZGUiLGkscCxnLG0sbil9
LCJ+IjpmdW5jdGlvbihnLGksbil7dmFyIG0scD1lKysscT1iO2lmKHR5cGVvZiBpPT09InN0cmlu
ZyImJiEvXFcvLnRlc3QoaSkpe209Ci1pPWkudG9Mb3dlckNhc2UoKTtxPWF9cSgicHJldmlvdXNT
aWJsaW5nIixpLHAsZyxtLG4pfX0sZmluZDp7SUQ6ZnVuY3Rpb24oZyxpLG4pe2lmKHR5cGVvZiBp
LmdldEVsZW1lbnRCeUlkIT09InVuZGVmaW5lZCImJiFuKXJldHVybihnPWkuZ2V0RWxlbWVudEJ5
SWQoZ1sxXSkpJiZnLnBhcmVudE5vZGU/W2ddOltdfSxOQU1FOmZ1bmN0aW9uKGcsaSl7aWYodHlw
ZW9mIGkuZ2V0RWxlbWVudHNCeU5hbWUhPT0idW5kZWZpbmVkIil7Zm9yKHZhciBuPVtdLG09aS5n
ZXRFbGVtZW50c0J5TmFtZShnWzFdKSxwPTAscT1tLmxlbmd0aDtwPHE7cCsrKW1bcF0uZ2V0QXR0
cmlidXRlKCJuYW1lIik9PT1nWzFdJiZuLnB1c2gobVtwXSk7cmV0dXJuIG4ubGVuZ3RoPT09MD9u
dWxsOm59fSxUQUc6ZnVuY3Rpb24oZyxpKXtyZXR1cm4gaS5nZXRFbGVtZW50c0J5VGFnTmFtZShn
WzFdKX19LHByZUZpbHRlcjp7Q0xBU1M6ZnVuY3Rpb24oZyxpLG4sbSxwLHEpe2c9IiAiK2dbMV0u
cmVwbGFjZSgvXFwvZywKLSIiKSsiICI7aWYocSlyZXR1cm4gZztxPTA7Zm9yKHZhciB1Oyh1PWlb
cV0pIT1udWxsO3ErKylpZih1KWlmKHBeKHUuY2xhc3NOYW1lJiYoIiAiK3UuY2xhc3NOYW1lKyIg
IikucmVwbGFjZSgvW1x0XG5dL2csIiAiKS5pbmRleE9mKGcpPj0wKSlufHxtLnB1c2godSk7ZWxz
ZSBpZihuKWlbcV09ZmFsc2U7cmV0dXJuIGZhbHNlfSxJRDpmdW5jdGlvbihnKXtyZXR1cm4gZ1sx
XS5yZXBsYWNlKC9cXC9nLCIiKX0sVEFHOmZ1bmN0aW9uKGcpe3JldHVybiBnWzFdLnRvTG93ZXJD
YXNlKCl9LENISUxEOmZ1bmN0aW9uKGcpe2lmKGdbMV09PT0ibnRoIil7dmFyIGk9LygtPykoXGQq
KW4oKD86XCt8LSk/XGQqKS8uZXhlYyhnWzJdPT09ImV2ZW4iJiYiMm4ifHxnWzJdPT09Im9kZCIm
JiIybisxInx8IS9cRC8udGVzdChnWzJdKSYmIjBuKyIrZ1syXXx8Z1syXSk7Z1syXT1pWzFdKyhp
WzJdfHwxKS0wO2dbM109aVszXS0wfWdbMF09ZSsrO3JldHVybiBnfSxBVFRSOmZ1bmN0aW9uKGcs
aSxuLAotbSxwLHEpe2k9Z1sxXS5yZXBsYWNlKC9cXC9nLCIiKTtpZighcSYmby5hdHRyTWFwW2ld
KWdbMV09by5hdHRyTWFwW2ldO2lmKGdbMl09PT0ifj0iKWdbNF09IiAiK2dbNF0rIiAiO3JldHVy
biBnfSxQU0VVRE86ZnVuY3Rpb24oZyxpLG4sbSxwKXtpZihnWzFdPT09Im5vdCIpaWYoKGQuZXhl
YyhnWzNdKXx8IiIpLmxlbmd0aD4xfHwvXlx3Ly50ZXN0KGdbM10pKWdbM109ayhnWzNdLG51bGws
bnVsbCxpKTtlbHNle2c9ay5maWx0ZXIoZ1szXSxpLG4sdHJ1ZV5wKTtufHxtLnB1c2guYXBwbHko
bSxnKTtyZXR1cm4gZmFsc2V9ZWxzZSBpZihvLm1hdGNoLlBPUy50ZXN0KGdbMF0pfHxvLm1hdGNo
LkNISUxELnRlc3QoZ1swXSkpcmV0dXJuIHRydWU7cmV0dXJuIGd9LFBPUzpmdW5jdGlvbihnKXtn
LnVuc2hpZnQodHJ1ZSk7cmV0dXJuIGd9fSxmaWx0ZXJzOntlbmFibGVkOmZ1bmN0aW9uKGcpe3Jl
dHVybiBnLmRpc2FibGVkPT09ZmFsc2UmJmcudHlwZSE9PSJoaWRkZW4ifSxkaXNhYmxlZDpmdW5j
dGlvbihnKXtyZXR1cm4gZy5kaXNhYmxlZD09PQotdHJ1ZX0sY2hlY2tlZDpmdW5jdGlvbihnKXty
ZXR1cm4gZy5jaGVja2VkPT09dHJ1ZX0sc2VsZWN0ZWQ6ZnVuY3Rpb24oZyl7cmV0dXJuIGcuc2Vs
ZWN0ZWQ9PT10cnVlfSxwYXJlbnQ6ZnVuY3Rpb24oZyl7cmV0dXJuISFnLmZpcnN0Q2hpbGR9LGVt
cHR5OmZ1bmN0aW9uKGcpe3JldHVybiFnLmZpcnN0Q2hpbGR9LGhhczpmdW5jdGlvbihnLGksbil7
cmV0dXJuISFrKG5bM10sZykubGVuZ3RofSxoZWFkZXI6ZnVuY3Rpb24oZyl7cmV0dXJuL2hcZC9p
LnRlc3QoZy5ub2RlTmFtZSl9LHRleHQ6ZnVuY3Rpb24oZyl7cmV0dXJuInRleHQiPT09Zy50eXBl
fSxyYWRpbzpmdW5jdGlvbihnKXtyZXR1cm4icmFkaW8iPT09Zy50eXBlfSxjaGVja2JveDpmdW5j
dGlvbihnKXtyZXR1cm4iY2hlY2tib3giPT09Zy50eXBlfSxmaWxlOmZ1bmN0aW9uKGcpe3JldHVy
biJmaWxlIj09PWcudHlwZX0scGFzc3dvcmQ6ZnVuY3Rpb24oZyl7cmV0dXJuInBhc3N3b3JkIj09
PWcudHlwZX0sc3VibWl0OmZ1bmN0aW9uKGcpe3JldHVybiJzdWJtaXQiPT09Ci1nLnR5cGV9LGlt
YWdlOmZ1bmN0aW9uKGcpe3JldHVybiJpbWFnZSI9PT1nLnR5cGV9LHJlc2V0OmZ1bmN0aW9uKGcp
e3JldHVybiJyZXNldCI9PT1nLnR5cGV9LGJ1dHRvbjpmdW5jdGlvbihnKXtyZXR1cm4iYnV0dG9u
Ij09PWcudHlwZXx8Zy5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09ImJ1dHRvbiJ9LGlucHV0OmZ1
bmN0aW9uKGcpe3JldHVybi9pbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9uL2kudGVzdChnLm5v
ZGVOYW1lKX19LHNldEZpbHRlcnM6e2ZpcnN0OmZ1bmN0aW9uKGcsaSl7cmV0dXJuIGk9PT0wfSxs
YXN0OmZ1bmN0aW9uKGcsaSxuLG0pe3JldHVybiBpPT09bS5sZW5ndGgtMX0sZXZlbjpmdW5jdGlv
bihnLGkpe3JldHVybiBpJTI9PT0wfSxvZGQ6ZnVuY3Rpb24oZyxpKXtyZXR1cm4gaSUyPT09MX0s
bHQ6ZnVuY3Rpb24oZyxpLG4pe3JldHVybiBpPG5bM10tMH0sZ3Q6ZnVuY3Rpb24oZyxpLG4pe3Jl
dHVybiBpPm5bM10tMH0sbnRoOmZ1bmN0aW9uKGcsaSxuKXtyZXR1cm4gblszXS0KLTA9PT1pfSxl
cTpmdW5jdGlvbihnLGksbil7cmV0dXJuIG5bM10tMD09PWl9fSxmaWx0ZXI6e1BTRVVETzpmdW5j
dGlvbihnLGksbixtKXt2YXIgcD1pWzFdLHE9by5maWx0ZXJzW3BdO2lmKHEpcmV0dXJuIHEoZyxu
LGksbSk7ZWxzZSBpZihwPT09ImNvbnRhaW5zIilyZXR1cm4oZy50ZXh0Q29udGVudHx8Zy5pbm5l
clRleHR8fGsuZ2V0VGV4dChbZ10pfHwiIikuaW5kZXhPZihpWzNdKT49MDtlbHNlIGlmKHA9PT0i
bm90Iil7aT1pWzNdO249MDtmb3IobT1pLmxlbmd0aDtuPG07bisrKWlmKGlbbl09PT1nKXJldHVy
biBmYWxzZTtyZXR1cm4gdHJ1ZX1lbHNlIGsuZXJyb3IoIlN5bnRheCBlcnJvciwgdW5yZWNvZ25p
emVkIGV4cHJlc3Npb246ICIrcCl9LENISUxEOmZ1bmN0aW9uKGcsaSl7dmFyIG49aVsxXSxtPWc7
c3dpdGNoKG4pe2Nhc2UgIm9ubHkiOmNhc2UgImZpcnN0Ijpmb3IoO209bS5wcmV2aW91c1NpYmxp
bmc7KWlmKG0ubm9kZVR5cGU9PT0xKXJldHVybiBmYWxzZTtpZihuPT09Ci0iZmlyc3QiKXJldHVy
biB0cnVlO209ZztjYXNlICJsYXN0Ijpmb3IoO209bS5uZXh0U2libGluZzspaWYobS5ub2RlVHlw
ZT09PTEpcmV0dXJuIGZhbHNlO3JldHVybiB0cnVlO2Nhc2UgIm50aCI6bj1pWzJdO3ZhciBwPWlb
M107aWYobj09PTEmJnA9PT0wKXJldHVybiB0cnVlO3ZhciBxPWlbMF0sdT1nLnBhcmVudE5vZGU7
aWYodSYmKHUuc2l6Y2FjaGUhPT1xfHwhZy5ub2RlSW5kZXgpKXt2YXIgeT0wO2ZvcihtPXUuZmly
c3RDaGlsZDttO209bS5uZXh0U2libGluZylpZihtLm5vZGVUeXBlPT09MSltLm5vZGVJbmRleD0r
K3k7dS5zaXpjYWNoZT1xfW09Zy5ub2RlSW5kZXgtcDtyZXR1cm4gbj09PTA/bT09PTA6bSVuPT09
MCYmbS9uPj0wfX0sSUQ6ZnVuY3Rpb24oZyxpKXtyZXR1cm4gZy5ub2RlVHlwZT09PTEmJmcuZ2V0
QXR0cmlidXRlKCJpZCIpPT09aX0sVEFHOmZ1bmN0aW9uKGcsaSl7cmV0dXJuIGk9PT0iKiImJmcu
bm9kZVR5cGU9PT0xfHxnLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT0KLWl9LENMQVNTOmZ1bmN0
aW9uKGcsaSl7cmV0dXJuKCIgIisoZy5jbGFzc05hbWV8fGcuZ2V0QXR0cmlidXRlKCJjbGFzcyIp
KSsiICIpLmluZGV4T2YoaSk+LTF9LEFUVFI6ZnVuY3Rpb24oZyxpKXt2YXIgbj1pWzFdO249by5h
dHRySGFuZGxlW25dP28uYXR0ckhhbmRsZVtuXShnKTpnW25dIT1udWxsP2dbbl06Zy5nZXRBdHRy
aWJ1dGUobik7dmFyIG09bisiIixwPWlbMl0scT1pWzRdO3JldHVybiBuPT1udWxsP3A9PT0iIT0i
OnA9PT0iPSI/bT09PXE6cD09PSIqPSI/bS5pbmRleE9mKHEpPj0wOnA9PT0ifj0iPygiICIrbSsi
ICIpLmluZGV4T2YocSk+PTA6IXE/bSYmbiE9PWZhbHNlOnA9PT0iIT0iP20hPT1xOnA9PT0iXj0i
P20uaW5kZXhPZihxKT09PTA6cD09PSIkPSI/bS5zdWJzdHIobS5sZW5ndGgtcS5sZW5ndGgpPT09
cTpwPT09Inw9Ij9tPT09cXx8bS5zdWJzdHIoMCxxLmxlbmd0aCsxKT09PXErIi0iOmZhbHNlfSxQ
T1M6ZnVuY3Rpb24oZyxpLG4sbSl7dmFyIHA9by5zZXRGaWx0ZXJzW2lbMl1dOwotaWYocClyZXR1
cm4gcChnLG4saSxtKX19fSx4PW8ubWF0Y2guUE9TLHI9ZnVuY3Rpb24oZyxpKXtyZXR1cm4iXFwi
KyhpLTArMSl9LEE7Zm9yKEEgaW4gby5tYXRjaCl7by5tYXRjaFtBXT1SZWdFeHAoby5tYXRjaFtB
XS5zb3VyY2UrLyg/IVteXFtdKlxdKSg/IVteXChdKlwpKS8uc291cmNlKTtvLmxlZnRNYXRjaFtB
XT1SZWdFeHAoLyheKD86LnxccnxcbikqPykvLnNvdXJjZStvLm1hdGNoW0FdLnNvdXJjZS5yZXBs
YWNlKC9cXChcZCspL2cscikpfXZhciBDPWZ1bmN0aW9uKGcsaSl7Zz1BcnJheS5wcm90b3R5cGUu
c2xpY2UuY2FsbChnLDApO2lmKGkpe2kucHVzaC5hcHBseShpLGcpO3JldHVybiBpfXJldHVybiBn
fTt0cnl7QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodC5kb2N1bWVudEVsZW1lbnQuY2hpbGRO
b2RlcywwKX1jYXRjaChKKXtDPWZ1bmN0aW9uKGcsaSl7dmFyIG49MCxtPWl8fFtdO2lmKGYuY2Fs
bChnKT09PSJbb2JqZWN0IEFycmF5XSIpQXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkobSwKLWcp
O2Vsc2UgaWYodHlwZW9mIGcubGVuZ3RoPT09Im51bWJlciIpZm9yKHZhciBwPWcubGVuZ3RoO248
cDtuKyspbS5wdXNoKGdbbl0pO2Vsc2UgZm9yKDtnW25dO24rKyltLnB1c2goZ1tuXSk7cmV0dXJu
IG19fXZhciB3LEk7aWYodC5kb2N1bWVudEVsZW1lbnQuY29tcGFyZURvY3VtZW50UG9zaXRpb24p
dz1mdW5jdGlvbihnLGkpe2lmKGc9PT1pKXtoPXRydWU7cmV0dXJuIDB9aWYoIWcuY29tcGFyZURv
Y3VtZW50UG9zaXRpb258fCFpLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKXJldHVybiBnLmNvbXBh
cmVEb2N1bWVudFBvc2l0aW9uPy0xOjE7cmV0dXJuIGcuY29tcGFyZURvY3VtZW50UG9zaXRpb24o
aSkmND8tMToxfTtlbHNle3c9ZnVuY3Rpb24oZyxpKXt2YXIgbixtLHA9W10scT1bXTtuPWcucGFy
ZW50Tm9kZTttPWkucGFyZW50Tm9kZTt2YXIgdT1uO2lmKGc9PT1pKXtoPXRydWU7cmV0dXJuIDB9
ZWxzZSBpZihuPT09bSlyZXR1cm4gSShnLGkpO2Vsc2UgaWYobil7aWYoIW0pcmV0dXJuIDF9ZWxz
ZSByZXR1cm4tMTsKLWZvcig7dTspe3AudW5zaGlmdCh1KTt1PXUucGFyZW50Tm9kZX1mb3IodT1t
O3U7KXtxLnVuc2hpZnQodSk7dT11LnBhcmVudE5vZGV9bj1wLmxlbmd0aDttPXEubGVuZ3RoO2Zv
cih1PTA7dTxuJiZ1PG07dSsrKWlmKHBbdV0hPT1xW3VdKXJldHVybiBJKHBbdV0scVt1XSk7cmV0
dXJuIHU9PT1uP0koZyxxW3VdLC0xKTpJKHBbdV0saSwxKX07ST1mdW5jdGlvbihnLGksbil7aWYo
Zz09PWkpcmV0dXJuIG47Zm9yKGc9Zy5uZXh0U2libGluZztnOyl7aWYoZz09PWkpcmV0dXJuLTE7
Zz1nLm5leHRTaWJsaW5nfXJldHVybiAxfX1rLmdldFRleHQ9ZnVuY3Rpb24oZyl7Zm9yKHZhciBp
PSIiLG4sbT0wO2dbbV07bSsrKXtuPWdbbV07aWYobi5ub2RlVHlwZT09PTN8fG4ubm9kZVR5cGU9
PT00KWkrPW4ubm9kZVZhbHVlO2Vsc2UgaWYobi5ub2RlVHlwZSE9PTgpaSs9ay5nZXRUZXh0KG4u
Y2hpbGROb2Rlcyl9cmV0dXJuIGl9OyhmdW5jdGlvbigpe3ZhciBnPXQuY3JlYXRlRWxlbWVudCgi
ZGl2IiksCi1pPSJzY3JpcHQiKyhuZXcgRGF0ZSkuZ2V0VGltZSgpLG49dC5kb2N1bWVudEVsZW1l
bnQ7Zy5pbm5lckhUTUw9IjxhIG5hbWU9JyIraSsiJy8+IjtuLmluc2VydEJlZm9yZShnLG4uZmly
c3RDaGlsZCk7aWYodC5nZXRFbGVtZW50QnlJZChpKSl7by5maW5kLklEPWZ1bmN0aW9uKG0scCxx
KXtpZih0eXBlb2YgcC5nZXRFbGVtZW50QnlJZCE9PSJ1bmRlZmluZWQiJiYhcSlyZXR1cm4ocD1w
LmdldEVsZW1lbnRCeUlkKG1bMV0pKT9wLmlkPT09bVsxXXx8dHlwZW9mIHAuZ2V0QXR0cmlidXRl
Tm9kZSE9PSJ1bmRlZmluZWQiJiZwLmdldEF0dHJpYnV0ZU5vZGUoImlkIikubm9kZVZhbHVlPT09
bVsxXT9bcF06QjpbXX07by5maWx0ZXIuSUQ9ZnVuY3Rpb24obSxwKXt2YXIgcT10eXBlb2YgbS5n
ZXRBdHRyaWJ1dGVOb2RlIT09InVuZGVmaW5lZCImJm0uZ2V0QXR0cmlidXRlTm9kZSgiaWQiKTty
ZXR1cm4gbS5ub2RlVHlwZT09PTEmJnEmJnEubm9kZVZhbHVlPT09cH19bi5yZW1vdmVDaGlsZChn
KTsKLW49Zz1udWxsfSkoKTsoZnVuY3Rpb24oKXt2YXIgZz10LmNyZWF0ZUVsZW1lbnQoImRpdiIp
O2cuYXBwZW5kQ2hpbGQodC5jcmVhdGVDb21tZW50KCIiKSk7aWYoZy5nZXRFbGVtZW50c0J5VGFn
TmFtZSgiKiIpLmxlbmd0aD4wKW8uZmluZC5UQUc9ZnVuY3Rpb24oaSxuKXt2YXIgbT1uLmdldEVs
ZW1lbnRzQnlUYWdOYW1lKGlbMV0pO2lmKGlbMV09PT0iKiIpe2Zvcih2YXIgcD1bXSxxPTA7bVtx
XTtxKyspbVtxXS5ub2RlVHlwZT09PTEmJnAucHVzaChtW3FdKTttPXB9cmV0dXJuIG19O2cuaW5u
ZXJIVE1MPSI8YSBocmVmPScjJz48L2E+IjtpZihnLmZpcnN0Q2hpbGQmJnR5cGVvZiBnLmZpcnN0
Q2hpbGQuZ2V0QXR0cmlidXRlIT09InVuZGVmaW5lZCImJmcuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1
dGUoImhyZWYiKSE9PSIjIilvLmF0dHJIYW5kbGUuaHJlZj1mdW5jdGlvbihpKXtyZXR1cm4gaS5n
ZXRBdHRyaWJ1dGUoImhyZWYiLDIpfTtnPW51bGx9KSgpO3QucXVlcnlTZWxlY3RvckFsbCYmCi1m
dW5jdGlvbigpe3ZhciBnPWssaT10LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2kuaW5uZXJIVE1MPSI8
cCBjbGFzcz0nVEVTVCc+PC9wPiI7aWYoIShpLnF1ZXJ5U2VsZWN0b3JBbGwmJmkucXVlcnlTZWxl
Y3RvckFsbCgiLlRFU1QiKS5sZW5ndGg9PT0wKSl7az1mdW5jdGlvbihtLHAscSx1KXtwPXB8fHQ7
bT1tLnJlcGxhY2UoL1w9XHMqKFteJyJcXV0qKVxzKlxdL2csIj0nJDEnXSIpO2lmKCF1JiYhay5p
c1hNTChwKSlpZihwLm5vZGVUeXBlPT09OSl0cnl7cmV0dXJuIEMocC5xdWVyeVNlbGVjdG9yQWxs
KG0pLHEpfWNhdGNoKHkpe31lbHNlIGlmKHAubm9kZVR5cGU9PT0xJiZwLm5vZGVOYW1lLnRvTG93
ZXJDYXNlKCkhPT0ib2JqZWN0Iil7dmFyIEY9cC5nZXRBdHRyaWJ1dGUoImlkIiksTT1GfHwiX19z
aXp6bGVfXyI7Rnx8cC5zZXRBdHRyaWJ1dGUoImlkIixNKTt0cnl7cmV0dXJuIEMocC5xdWVyeVNl
bGVjdG9yQWxsKCIjIitNKyIgIittKSxxKX1jYXRjaChOKXt9ZmluYWxseXtGfHwKLXAucmVtb3Zl
QXR0cmlidXRlKCJpZCIpfX1yZXR1cm4gZyhtLHAscSx1KX07Zm9yKHZhciBuIGluIGcpa1tuXT1n
W25dO2k9bnVsbH19KCk7KGZ1bmN0aW9uKCl7dmFyIGc9dC5kb2N1bWVudEVsZW1lbnQsaT1nLm1h
dGNoZXNTZWxlY3Rvcnx8Zy5tb3pNYXRjaGVzU2VsZWN0b3J8fGcud2Via2l0TWF0Y2hlc1NlbGVj
dG9yfHxnLm1zTWF0Y2hlc1NlbGVjdG9yLG49ZmFsc2U7dHJ5e2kuY2FsbCh0LmRvY3VtZW50RWxl
bWVudCwiW3Rlc3QhPScnXTpzaXp6bGUiKX1jYXRjaChtKXtuPXRydWV9aWYoaSlrLm1hdGNoZXNT
ZWxlY3Rvcj1mdW5jdGlvbihwLHEpe3E9cS5yZXBsYWNlKC9cPVxzKihbXiciXF1dKilccypcXS9n
LCI9JyQxJ10iKTtpZighay5pc1hNTChwKSl0cnl7aWYobnx8IW8ubWF0Y2guUFNFVURPLnRlc3Qo
cSkmJiEvIT0vLnRlc3QocSkpcmV0dXJuIGkuY2FsbChwLHEpfWNhdGNoKHUpe31yZXR1cm4gayhx
LG51bGwsbnVsbCxbcF0pLmxlbmd0aD4wfX0pKCk7KGZ1bmN0aW9uKCl7dmFyIGc9Ci10LmNyZWF0
ZUVsZW1lbnQoImRpdiIpO2cuaW5uZXJIVE1MPSI8ZGl2IGNsYXNzPSd0ZXN0IGUnPjwvZGl2Pjxk
aXYgY2xhc3M9J3Rlc3QnPjwvZGl2PiI7aWYoISghZy5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lfHxn
LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoImUiKS5sZW5ndGg9PT0wKSl7Zy5sYXN0Q2hpbGQuY2xh
c3NOYW1lPSJlIjtpZihnLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoImUiKS5sZW5ndGghPT0xKXtv
Lm9yZGVyLnNwbGljZSgxLDAsIkNMQVNTIik7by5maW5kLkNMQVNTPWZ1bmN0aW9uKGksbixtKXtp
Zih0eXBlb2Ygbi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lIT09InVuZGVmaW5lZCImJiFtKXJldHVy
biBuLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoaVsxXSl9O2c9bnVsbH19fSkoKTtrLmNvbnRhaW5z
PXQuZG9jdW1lbnRFbGVtZW50LmNvbnRhaW5zP2Z1bmN0aW9uKGcsaSl7cmV0dXJuIGchPT1pJiYo
Zy5jb250YWlucz9nLmNvbnRhaW5zKGkpOnRydWUpfTp0LmRvY3VtZW50RWxlbWVudC5jb21wYXJl
RG9jdW1lbnRQb3NpdGlvbj8KLWZ1bmN0aW9uKGcsaSl7cmV0dXJuISEoZy5jb21wYXJlRG9jdW1l
bnRQb3NpdGlvbihpKSYxNil9OmZ1bmN0aW9uKCl7cmV0dXJuIGZhbHNlfTtrLmlzWE1MPWZ1bmN0
aW9uKGcpe3JldHVybihnPShnP2cub3duZXJEb2N1bWVudHx8ZzowKS5kb2N1bWVudEVsZW1lbnQp
P2cubm9kZU5hbWUhPT0iSFRNTCI6ZmFsc2V9O3ZhciBMPWZ1bmN0aW9uKGcsaSl7Zm9yKHZhciBu
LG09W10scD0iIixxPWkubm9kZVR5cGU/W2ldOmk7bj1vLm1hdGNoLlBTRVVETy5leGVjKGcpOyl7
cCs9blswXTtnPWcucmVwbGFjZShvLm1hdGNoLlBTRVVETywiIil9Zz1vLnJlbGF0aXZlW2ddP2cr
IioiOmc7bj0wO2Zvcih2YXIgdT1xLmxlbmd0aDtuPHU7bisrKWsoZyxxW25dLG0pO3JldHVybiBr
LmZpbHRlcihwLG0pfTtjLmZpbmQ9aztjLmV4cHI9ay5zZWxlY3RvcnM7Yy5leHByWyI6Il09Yy5l
eHByLmZpbHRlcnM7Yy51bmlxdWU9ay51bmlxdWVTb3J0O2MudGV4dD1rLmdldFRleHQ7Yy5pc1hN
TERvYz1rLmlzWE1MOwotYy5jb250YWlucz1rLmNvbnRhaW5zfSkoKTt2YXIgWmE9L1VudGlsJC8s
JGE9L14oPzpwYXJlbnRzfHByZXZVbnRpbHxwcmV2QWxsKS8sYWI9LywvLE5hPS9eLlteOiNcW1wu
LF0qJC8sYmI9QXJyYXkucHJvdG90eXBlLnNsaWNlLGNiPWMuZXhwci5tYXRjaC5QT1M7Yy5mbi5l
eHRlbmQoe2ZpbmQ6ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPXRoaXMucHVzaFN0YWNrKCIiLCJmaW5k
IixhKSxkPTAsZT0wLGY9dGhpcy5sZW5ndGg7ZTxmO2UrKyl7ZD1iLmxlbmd0aDtjLmZpbmQoYSx0
aGlzW2VdLGIpO2lmKGU+MClmb3IodmFyIGg9ZDtoPGIubGVuZ3RoO2grKylmb3IodmFyIGw9MDts
PGQ7bCsrKWlmKGJbbF09PT1iW2hdKXtiLnNwbGljZShoLS0sMSk7YnJlYWt9fXJldHVybiBifSxo
YXM6ZnVuY3Rpb24oYSl7dmFyIGI9YyhhKTtyZXR1cm4gdGhpcy5maWx0ZXIoZnVuY3Rpb24oKXtm
b3IodmFyIGQ9MCxlPWIubGVuZ3RoO2Q8ZTtkKyspaWYoYy5jb250YWlucyh0aGlzLGJbZF0pKXJl
dHVybiB0cnVlfSl9LAotbm90OmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnB1c2hTdGFjayhtYSh0
aGlzLGEsZmFsc2UpLCJub3QiLGEpfSxmaWx0ZXI6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucHVz
aFN0YWNrKG1hKHRoaXMsYSx0cnVlKSwiZmlsdGVyIixhKX0saXM6ZnVuY3Rpb24oYSl7cmV0dXJu
ISFhJiZjLmZpbHRlcihhLHRoaXMpLmxlbmd0aD4wfSxjbG9zZXN0OmZ1bmN0aW9uKGEsYil7dmFy
IGQ9W10sZSxmLGg9dGhpc1swXTtpZihjLmlzQXJyYXkoYSkpe3ZhciBsLGs9e30sbz0xO2lmKGgm
JmEubGVuZ3RoKXtlPTA7Zm9yKGY9YS5sZW5ndGg7ZTxmO2UrKyl7bD1hW2VdO2tbbF18fChrW2xd
PWMuZXhwci5tYXRjaC5QT1MudGVzdChsKT9jKGwsYnx8dGhpcy5jb250ZXh0KTpsKX1mb3IoO2gm
Jmgub3duZXJEb2N1bWVudCYmaCE9PWI7KXtmb3IobCBpbiBrKXtlPWtbbF07aWYoZS5qcXVlcnk/
ZS5pbmRleChoKT4tMTpjKGgpLmlzKGUpKWQucHVzaCh7c2VsZWN0b3I6bCxlbGVtOmgsbGV2ZWw6
b30pfWg9Ci1oLnBhcmVudE5vZGU7bysrfX1yZXR1cm4gZH1sPWNiLnRlc3QoYSk/YyhhLGJ8fHRo
aXMuY29udGV4dCk6bnVsbDtlPTA7Zm9yKGY9dGhpcy5sZW5ndGg7ZTxmO2UrKylmb3IoaD10aGlz
W2VdO2g7KWlmKGw/bC5pbmRleChoKT4tMTpjLmZpbmQubWF0Y2hlc1NlbGVjdG9yKGgsYSkpe2Qu
cHVzaChoKTticmVha31lbHNle2g9aC5wYXJlbnROb2RlO2lmKCFofHwhaC5vd25lckRvY3VtZW50
fHxoPT09YilicmVha31kPWQubGVuZ3RoPjE/Yy51bmlxdWUoZCk6ZDtyZXR1cm4gdGhpcy5wdXNo
U3RhY2soZCwiY2xvc2VzdCIsYSl9LGluZGV4OmZ1bmN0aW9uKGEpe2lmKCFhfHx0eXBlb2YgYT09
PSJzdHJpbmciKXJldHVybiBjLmluQXJyYXkodGhpc1swXSxhP2MoYSk6dGhpcy5wYXJlbnQoKS5j
aGlsZHJlbigpKTtyZXR1cm4gYy5pbkFycmF5KGEuanF1ZXJ5P2FbMF06YSx0aGlzKX0sYWRkOmZ1
bmN0aW9uKGEsYil7dmFyIGQ9dHlwZW9mIGE9PT0ic3RyaW5nIj9jKGEsYnx8dGhpcy5jb250ZXh0
KToKLWMubWFrZUFycmF5KGEpLGU9Yy5tZXJnZSh0aGlzLmdldCgpLGQpO3JldHVybiB0aGlzLnB1
c2hTdGFjayghZFswXXx8IWRbMF0ucGFyZW50Tm9kZXx8ZFswXS5wYXJlbnROb2RlLm5vZGVUeXBl
PT09MTF8fCFlWzBdfHwhZVswXS5wYXJlbnROb2RlfHxlWzBdLnBhcmVudE5vZGUubm9kZVR5cGU9
PT0xMT9lOmMudW5pcXVlKGUpKX0sYW5kU2VsZjpmdW5jdGlvbigpe3JldHVybiB0aGlzLmFkZCh0
aGlzLnByZXZPYmplY3QpfX0pO2MuZWFjaCh7cGFyZW50OmZ1bmN0aW9uKGEpe3JldHVybihhPWEu
cGFyZW50Tm9kZSkmJmEubm9kZVR5cGUhPT0xMT9hOm51bGx9LHBhcmVudHM6ZnVuY3Rpb24oYSl7
cmV0dXJuIGMuZGlyKGEsInBhcmVudE5vZGUiKX0scGFyZW50c1VudGlsOmZ1bmN0aW9uKGEsYixk
KXtyZXR1cm4gYy5kaXIoYSwicGFyZW50Tm9kZSIsZCl9LG5leHQ6ZnVuY3Rpb24oYSl7cmV0dXJu
IGMubnRoKGEsMiwibmV4dFNpYmxpbmciKX0scHJldjpmdW5jdGlvbihhKXtyZXR1cm4gYy5udGgo
YSwKLTIsInByZXZpb3VzU2libGluZyIpfSxuZXh0QWxsOmZ1bmN0aW9uKGEpe3JldHVybiBjLmRp
cihhLCJuZXh0U2libGluZyIpfSxwcmV2QWxsOmZ1bmN0aW9uKGEpe3JldHVybiBjLmRpcihhLCJw
cmV2aW91c1NpYmxpbmciKX0sbmV4dFVudGlsOmZ1bmN0aW9uKGEsYixkKXtyZXR1cm4gYy5kaXIo
YSwibmV4dFNpYmxpbmciLGQpfSxwcmV2VW50aWw6ZnVuY3Rpb24oYSxiLGQpe3JldHVybiBjLmRp
cihhLCJwcmV2aW91c1NpYmxpbmciLGQpfSxzaWJsaW5nczpmdW5jdGlvbihhKXtyZXR1cm4gYy5z
aWJsaW5nKGEucGFyZW50Tm9kZS5maXJzdENoaWxkLGEpfSxjaGlsZHJlbjpmdW5jdGlvbihhKXty
ZXR1cm4gYy5zaWJsaW5nKGEuZmlyc3RDaGlsZCl9LGNvbnRlbnRzOmZ1bmN0aW9uKGEpe3JldHVy
biBjLm5vZGVOYW1lKGEsImlmcmFtZSIpP2EuY29udGVudERvY3VtZW50fHxhLmNvbnRlbnRXaW5k
b3cuZG9jdW1lbnQ6Yy5tYWtlQXJyYXkoYS5jaGlsZE5vZGVzKX19LGZ1bmN0aW9uKGEsCi1iKXtj
LmZuW2FdPWZ1bmN0aW9uKGQsZSl7dmFyIGY9Yy5tYXAodGhpcyxiLGQpO1phLnRlc3QoYSl8fChl
PWQpO2lmKGUmJnR5cGVvZiBlPT09InN0cmluZyIpZj1jLmZpbHRlcihlLGYpO2Y9dGhpcy5sZW5n
dGg+MT9jLnVuaXF1ZShmKTpmO2lmKCh0aGlzLmxlbmd0aD4xfHxhYi50ZXN0KGUpKSYmJGEudGVz
dChhKSlmPWYucmV2ZXJzZSgpO3JldHVybiB0aGlzLnB1c2hTdGFjayhmLGEsYmIuY2FsbChhcmd1
bWVudHMpLmpvaW4oIiwiKSl9fSk7Yy5leHRlbmQoe2ZpbHRlcjpmdW5jdGlvbihhLGIsZCl7aWYo
ZClhPSI6bm90KCIrYSsiKSI7cmV0dXJuIGIubGVuZ3RoPT09MT9jLmZpbmQubWF0Y2hlc1NlbGVj
dG9yKGJbMF0sYSk/W2JbMF1dOltdOmMuZmluZC5tYXRjaGVzKGEsYil9LGRpcjpmdW5jdGlvbihh
LGIsZCl7dmFyIGU9W107Zm9yKGE9YVtiXTthJiZhLm5vZGVUeXBlIT09OSYmKGQ9PT1CfHxhLm5v
ZGVUeXBlIT09MXx8IWMoYSkuaXMoZCkpOyl7YS5ub2RlVHlwZT09PTEmJgotZS5wdXNoKGEpO2E9
YVtiXX1yZXR1cm4gZX0sbnRoOmZ1bmN0aW9uKGEsYixkKXtiPWJ8fDE7Zm9yKHZhciBlPTA7YTth
PWFbZF0paWYoYS5ub2RlVHlwZT09PTEmJisrZT09PWIpYnJlYWs7cmV0dXJuIGF9LHNpYmxpbmc6
ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGQ9W107YTthPWEubmV4dFNpYmxpbmcpYS5ub2RlVHlwZT09
PTEmJmEhPT1iJiZkLnB1c2goYSk7cmV0dXJuIGR9fSk7dmFyIHphPS8galF1ZXJ5XGQrPSIoPzpc
ZCt8bnVsbCkiL2csJD0vXlxzKy8sQWE9LzwoPyFhcmVhfGJyfGNvbHxlbWJlZHxocnxpbWd8aW5w
dXR8bGlua3xtZXRhfHBhcmFtKSgoW1x3Ol0rKVtePl0qKVwvPi9pZyxCYT0vPChbXHc6XSspLyxk
Yj0vPHRib2R5L2ksZWI9Lzx8JiM/XHcrOy8sQ2E9LzwoPzpzY3JpcHR8b2JqZWN0fGVtYmVkfG9w
dGlvbnxzdHlsZSkvaSxEYT0vY2hlY2tlZFxzKig/OltePV18PVxzKi5jaGVja2VkLikvaSxmYj0v
XD0oW149Iic+XHNdK1wvKT4vZyxQPXtvcHRpb246WzEsCi0iPHNlbGVjdCBtdWx0aXBsZT0nbXVs
dGlwbGUnPiIsIjwvc2VsZWN0PiJdLGxlZ2VuZDpbMSwiPGZpZWxkc2V0PiIsIjwvZmllbGRzZXQ+
Il0sdGhlYWQ6WzEsIjx0YWJsZT4iLCI8L3RhYmxlPiJdLHRyOlsyLCI8dGFibGU+PHRib2R5PiIs
IjwvdGJvZHk+PC90YWJsZT4iXSx0ZDpbMywiPHRhYmxlPjx0Ym9keT48dHI+IiwiPC90cj48L3Ri
b2R5PjwvdGFibGU+Il0sY29sOlsyLCI8dGFibGU+PHRib2R5PjwvdGJvZHk+PGNvbGdyb3VwPiIs
IjwvY29sZ3JvdXA+PC90YWJsZT4iXSxhcmVhOlsxLCI8bWFwPiIsIjwvbWFwPiJdLF9kZWZhdWx0
OlswLCIiLCIiXX07UC5vcHRncm91cD1QLm9wdGlvbjtQLnRib2R5PVAudGZvb3Q9UC5jb2xncm91
cD1QLmNhcHRpb249UC50aGVhZDtQLnRoPVAudGQ7aWYoIWMuc3VwcG9ydC5odG1sU2VyaWFsaXpl
KVAuX2RlZmF1bHQ9WzEsImRpdjxkaXY+IiwiPC9kaXY+Il07Yy5mbi5leHRlbmQoe3RleHQ6ZnVu
Y3Rpb24oYSl7aWYoYy5pc0Z1bmN0aW9uKGEpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYil7
dmFyIGQ9Ci1jKHRoaXMpO2QudGV4dChhLmNhbGwodGhpcyxiLGQudGV4dCgpKSl9KTtpZih0eXBl
b2YgYSE9PSJvYmplY3QiJiZhIT09QilyZXR1cm4gdGhpcy5lbXB0eSgpLmFwcGVuZCgodGhpc1sw
XSYmdGhpc1swXS5vd25lckRvY3VtZW50fHx0KS5jcmVhdGVUZXh0Tm9kZShhKSk7cmV0dXJuIGMu
dGV4dCh0aGlzKX0sd3JhcEFsbDpmdW5jdGlvbihhKXtpZihjLmlzRnVuY3Rpb24oYSkpcmV0dXJu
IHRoaXMuZWFjaChmdW5jdGlvbihkKXtjKHRoaXMpLndyYXBBbGwoYS5jYWxsKHRoaXMsZCkpfSk7
aWYodGhpc1swXSl7dmFyIGI9YyhhLHRoaXNbMF0ub3duZXJEb2N1bWVudCkuZXEoMCkuY2xvbmUo
dHJ1ZSk7dGhpc1swXS5wYXJlbnROb2RlJiZiLmluc2VydEJlZm9yZSh0aGlzWzBdKTtiLm1hcChm
dW5jdGlvbigpe2Zvcih2YXIgZD10aGlzO2QuZmlyc3RDaGlsZCYmZC5maXJzdENoaWxkLm5vZGVU
eXBlPT09MTspZD1kLmZpcnN0Q2hpbGQ7cmV0dXJuIGR9KS5hcHBlbmQodGhpcyl9cmV0dXJuIHRo
aXN9LAotd3JhcElubmVyOmZ1bmN0aW9uKGEpe2lmKGMuaXNGdW5jdGlvbihhKSlyZXR1cm4gdGhp
cy5lYWNoKGZ1bmN0aW9uKGIpe2ModGhpcykud3JhcElubmVyKGEuY2FsbCh0aGlzLGIpKX0pO3Jl
dHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgYj1jKHRoaXMpLGQ9Yi5jb250ZW50cygpO2Qu
bGVuZ3RoP2Qud3JhcEFsbChhKTpiLmFwcGVuZChhKX0pfSx3cmFwOmZ1bmN0aW9uKGEpe3JldHVy
biB0aGlzLmVhY2goZnVuY3Rpb24oKXtjKHRoaXMpLndyYXBBbGwoYSl9KX0sdW53cmFwOmZ1bmN0
aW9uKCl7cmV0dXJuIHRoaXMucGFyZW50KCkuZWFjaChmdW5jdGlvbigpe2Mubm9kZU5hbWUodGhp
cywiYm9keSIpfHxjKHRoaXMpLnJlcGxhY2VXaXRoKHRoaXMuY2hpbGROb2Rlcyl9KS5lbmQoKX0s
YXBwZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLHRydWUsZnVu
Y3Rpb24oYSl7dGhpcy5ub2RlVHlwZT09PTEmJnRoaXMuYXBwZW5kQ2hpbGQoYSl9KX0sCi1wcmVw
ZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLHRydWUsZnVuY3Rp
b24oYSl7dGhpcy5ub2RlVHlwZT09PTEmJnRoaXMuaW5zZXJ0QmVmb3JlKGEsdGhpcy5maXJzdENo
aWxkKX0pfSxiZWZvcmU6ZnVuY3Rpb24oKXtpZih0aGlzWzBdJiZ0aGlzWzBdLnBhcmVudE5vZGUp
cmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLGZhbHNlLGZ1bmN0aW9uKGIpe3RoaXMucGFy
ZW50Tm9kZS5pbnNlcnRCZWZvcmUoYix0aGlzKX0pO2Vsc2UgaWYoYXJndW1lbnRzLmxlbmd0aCl7
dmFyIGE9Yyhhcmd1bWVudHNbMF0pO2EucHVzaC5hcHBseShhLHRoaXMudG9BcnJheSgpKTtyZXR1
cm4gdGhpcy5wdXNoU3RhY2soYSwiYmVmb3JlIixhcmd1bWVudHMpfX0sYWZ0ZXI6ZnVuY3Rpb24o
KXtpZih0aGlzWzBdJiZ0aGlzWzBdLnBhcmVudE5vZGUpcmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJn
dW1lbnRzLGZhbHNlLGZ1bmN0aW9uKGIpe3RoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYiwK
LXRoaXMubmV4dFNpYmxpbmcpfSk7ZWxzZSBpZihhcmd1bWVudHMubGVuZ3RoKXt2YXIgYT10aGlz
LnB1c2hTdGFjayh0aGlzLCJhZnRlciIsYXJndW1lbnRzKTthLnB1c2guYXBwbHkoYSxjKGFyZ3Vt
ZW50c1swXSkudG9BcnJheSgpKTtyZXR1cm4gYX19LHJlbW92ZTpmdW5jdGlvbihhLGIpe2Zvcih2
YXIgZD0wLGU7KGU9dGhpc1tkXSkhPW51bGw7ZCsrKWlmKCFhfHxjLmZpbHRlcihhLFtlXSkubGVu
Z3RoKXtpZighYiYmZS5ub2RlVHlwZT09PTEpe2MuY2xlYW5EYXRhKGUuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoIioiKSk7Yy5jbGVhbkRhdGEoW2VdKX1lLnBhcmVudE5vZGUmJmUucGFyZW50Tm9kZS5y
ZW1vdmVDaGlsZChlKX1yZXR1cm4gdGhpc30sZW1wdHk6ZnVuY3Rpb24oKXtmb3IodmFyIGE9MCxi
OyhiPXRoaXNbYV0pIT1udWxsO2ErKylmb3IoYi5ub2RlVHlwZT09PTEmJmMuY2xlYW5EYXRhKGIu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKSk7Yi5maXJzdENoaWxkOyliLnJlbW92ZUNoaWxkKGIu
Zmlyc3RDaGlsZCk7Ci1yZXR1cm4gdGhpc30sY2xvbmU6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5t
YXAoZnVuY3Rpb24oKXtpZighYy5zdXBwb3J0Lm5vQ2xvbmVFdmVudCYmIWMuaXNYTUxEb2ModGhp
cykpe3ZhciBkPXRoaXMub3V0ZXJIVE1MLGU9dGhpcy5vd25lckRvY3VtZW50O2lmKCFkKXtkPWUu
Y3JlYXRlRWxlbWVudCgiZGl2Iik7ZC5hcHBlbmRDaGlsZCh0aGlzLmNsb25lTm9kZSh0cnVlKSk7
ZD1kLmlubmVySFRNTH1yZXR1cm4gYy5jbGVhbihbZC5yZXBsYWNlKHphLCIiKS5yZXBsYWNlKGZi
LCc9IiQxIj4nKS5yZXBsYWNlKCQsIiIpXSxlKVswXX1lbHNlIHJldHVybiB0aGlzLmNsb25lTm9k
ZSh0cnVlKX0pO2lmKGE9PT10cnVlKXtuYSh0aGlzLGIpO25hKHRoaXMuZmluZCgiKiIpLGIuZmlu
ZCgiKiIpKX1yZXR1cm4gYn0saHRtbDpmdW5jdGlvbihhKXtpZihhPT09QilyZXR1cm4gdGhpc1sw
XSYmdGhpc1swXS5ub2RlVHlwZT09PTE/dGhpc1swXS5pbm5lckhUTUwucmVwbGFjZSh6YSwiIik6
bnVsbDsKLWVsc2UgaWYodHlwZW9mIGE9PT0ic3RyaW5nIiYmIUNhLnRlc3QoYSkmJihjLnN1cHBv
cnQubGVhZGluZ1doaXRlc3BhY2V8fCEkLnRlc3QoYSkpJiYhUFsoQmEuZXhlYyhhKXx8WyIiLCIi
XSlbMV0udG9Mb3dlckNhc2UoKV0pe2E9YS5yZXBsYWNlKEFhLCI8JDE+PC8kMj4iKTt0cnl7Zm9y
KHZhciBiPTAsZD10aGlzLmxlbmd0aDtiPGQ7YisrKWlmKHRoaXNbYl0ubm9kZVR5cGU9PT0xKXtj
LmNsZWFuRGF0YSh0aGlzW2JdLmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIikpO3RoaXNbYl0uaW5u
ZXJIVE1MPWF9fWNhdGNoKGUpe3RoaXMuZW1wdHkoKS5hcHBlbmQoYSl9fWVsc2UgYy5pc0Z1bmN0
aW9uKGEpP3RoaXMuZWFjaChmdW5jdGlvbihmKXt2YXIgaD1jKHRoaXMpO2guaHRtbChhLmNhbGwo
dGhpcyxmLGguaHRtbCgpKSl9KTp0aGlzLmVtcHR5KCkuYXBwZW5kKGEpO3JldHVybiB0aGlzfSxy
ZXBsYWNlV2l0aDpmdW5jdGlvbihhKXtpZih0aGlzWzBdJiZ0aGlzWzBdLnBhcmVudE5vZGUpe2lm
KGMuaXNGdW5jdGlvbihhKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGIpe3ZhciBkPQotYyh0
aGlzKSxlPWQuaHRtbCgpO2QucmVwbGFjZVdpdGgoYS5jYWxsKHRoaXMsYixlKSl9KTtpZih0eXBl
b2YgYSE9PSJzdHJpbmciKWE9YyhhKS5kZXRhY2goKTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9u
KCl7dmFyIGI9dGhpcy5uZXh0U2libGluZyxkPXRoaXMucGFyZW50Tm9kZTtjKHRoaXMpLnJlbW92
ZSgpO2I/YyhiKS5iZWZvcmUoYSk6YyhkKS5hcHBlbmQoYSl9KX1lbHNlIHJldHVybiB0aGlzLnB1
c2hTdGFjayhjKGMuaXNGdW5jdGlvbihhKT9hKCk6YSksInJlcGxhY2VXaXRoIixhKX0sZGV0YWNo
OmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnJlbW92ZShhLHRydWUpfSxkb21NYW5pcDpmdW5jdGlv
bihhLGIsZCl7dmFyIGUsZixoLGw9YVswXSxrPVtdO2lmKCFjLnN1cHBvcnQuY2hlY2tDbG9uZSYm
YXJndW1lbnRzLmxlbmd0aD09PTMmJnR5cGVvZiBsPT09InN0cmluZyImJkRhLnRlc3QobCkpcmV0
dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2ModGhpcykuZG9tTWFuaXAoYSwKLWIsZCx0cnVlKX0p
O2lmKGMuaXNGdW5jdGlvbihsKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKHgpe3ZhciByPWMo
dGhpcyk7YVswXT1sLmNhbGwodGhpcyx4LGI/ci5odG1sKCk6Qik7ci5kb21NYW5pcChhLGIsZCl9
KTtpZih0aGlzWzBdKXtlPWwmJmwucGFyZW50Tm9kZTtlPWMuc3VwcG9ydC5wYXJlbnROb2RlJiZl
JiZlLm5vZGVUeXBlPT09MTEmJmUuY2hpbGROb2Rlcy5sZW5ndGg9PT10aGlzLmxlbmd0aD97ZnJh
Z21lbnQ6ZX06Yy5idWlsZEZyYWdtZW50KGEsdGhpcyxrKTtoPWUuZnJhZ21lbnQ7aWYoZj1oLmNo
aWxkTm9kZXMubGVuZ3RoPT09MT9oPWguZmlyc3RDaGlsZDpoLmZpcnN0Q2hpbGQpe2I9YiYmYy5u
b2RlTmFtZShmLCJ0ciIpO2Y9MDtmb3IodmFyIG89dGhpcy5sZW5ndGg7ZjxvO2YrKylkLmNhbGwo
Yj9jLm5vZGVOYW1lKHRoaXNbZl0sInRhYmxlIik/dGhpc1tmXS5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgidGJvZHkiKVswXXx8dGhpc1tmXS5hcHBlbmRDaGlsZCh0aGlzW2ZdLm93bmVyRG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgidGJvZHkiKSk6Ci10aGlzW2ZdOnRoaXNbZl0sZj4wfHxlLmNhY2hlYWJs
ZXx8dGhpcy5sZW5ndGg+MT9oLmNsb25lTm9kZSh0cnVlKTpoKX1rLmxlbmd0aCYmYy5lYWNoKGss
T2EpfXJldHVybiB0aGlzfX0pO2MuYnVpbGRGcmFnbWVudD1mdW5jdGlvbihhLGIsZCl7dmFyIGUs
ZixoO2I9YiYmYlswXT9iWzBdLm93bmVyRG9jdW1lbnR8fGJbMF06dDtpZihhLmxlbmd0aD09PTEm
JnR5cGVvZiBhWzBdPT09InN0cmluZyImJmFbMF0ubGVuZ3RoPDUxMiYmYj09PXQmJiFDYS50ZXN0
KGFbMF0pJiYoYy5zdXBwb3J0LmNoZWNrQ2xvbmV8fCFEYS50ZXN0KGFbMF0pKSl7Zj10cnVlO2lm
KGg9Yy5mcmFnbWVudHNbYVswXV0paWYoaCE9PTEpZT1ofWlmKCFlKXtlPWIuY3JlYXRlRG9jdW1l
bnRGcmFnbWVudCgpO2MuY2xlYW4oYSxiLGUsZCl9aWYoZiljLmZyYWdtZW50c1thWzBdXT1oP2U6
MTtyZXR1cm57ZnJhZ21lbnQ6ZSxjYWNoZWFibGU6Zn19O2MuZnJhZ21lbnRzPXt9O2MuZWFjaCh7
YXBwZW5kVG86ImFwcGVuZCIsCi1wcmVwZW5kVG86InByZXBlbmQiLGluc2VydEJlZm9yZToiYmVm
b3JlIixpbnNlcnRBZnRlcjoiYWZ0ZXIiLHJlcGxhY2VBbGw6InJlcGxhY2VXaXRoIn0sZnVuY3Rp
b24oYSxiKXtjLmZuW2FdPWZ1bmN0aW9uKGQpe3ZhciBlPVtdO2Q9YyhkKTt2YXIgZj10aGlzLmxl
bmd0aD09PTEmJnRoaXNbMF0ucGFyZW50Tm9kZTtpZihmJiZmLm5vZGVUeXBlPT09MTEmJmYuY2hp
bGROb2Rlcy5sZW5ndGg9PT0xJiZkLmxlbmd0aD09PTEpe2RbYl0odGhpc1swXSk7cmV0dXJuIHRo
aXN9ZWxzZXtmPTA7Zm9yKHZhciBoPWQubGVuZ3RoO2Y8aDtmKyspe3ZhciBsPShmPjA/dGhpcy5j
bG9uZSh0cnVlKTp0aGlzKS5nZXQoKTtjKGRbZl0pW2JdKGwpO2U9ZS5jb25jYXQobCl9cmV0dXJu
IHRoaXMucHVzaFN0YWNrKGUsYSxkLnNlbGVjdG9yKX19fSk7Yy5leHRlbmQoe2NsZWFuOmZ1bmN0
aW9uKGEsYixkLGUpe2I9Ynx8dDtpZih0eXBlb2YgYi5jcmVhdGVFbGVtZW50PT09InVuZGVmaW5l
ZCIpYj1iLm93bmVyRG9jdW1lbnR8fAotYlswXSYmYlswXS5vd25lckRvY3VtZW50fHx0O2Zvcih2
YXIgZj1bXSxoPTAsbDsobD1hW2hdKSE9bnVsbDtoKyspe2lmKHR5cGVvZiBsPT09Im51bWJlciIp
bCs9IiI7aWYobCl7aWYodHlwZW9mIGw9PT0ic3RyaW5nIiYmIWViLnRlc3QobCkpbD1iLmNyZWF0
ZVRleHROb2RlKGwpO2Vsc2UgaWYodHlwZW9mIGw9PT0ic3RyaW5nIil7bD1sLnJlcGxhY2UoQWEs
IjwkMT48LyQyPiIpO3ZhciBrPShCYS5leGVjKGwpfHxbIiIsIiJdKVsxXS50b0xvd2VyQ2FzZSgp
LG89UFtrXXx8UC5fZGVmYXVsdCx4PW9bMF0scj1iLmNyZWF0ZUVsZW1lbnQoImRpdiIpO2Zvcihy
LmlubmVySFRNTD1vWzFdK2wrb1syXTt4LS07KXI9ci5sYXN0Q2hpbGQ7aWYoIWMuc3VwcG9ydC50
Ym9keSl7eD1kYi50ZXN0KGwpO2s9az09PSJ0YWJsZSImJiF4P3IuZmlyc3RDaGlsZCYmci5maXJz
dENoaWxkLmNoaWxkTm9kZXM6b1sxXT09PSI8dGFibGU+IiYmIXg/ci5jaGlsZE5vZGVzOltdO2Zv
cihvPWsubGVuZ3RoLQotMTtvPj0wOy0tbyljLm5vZGVOYW1lKGtbb10sInRib2R5IikmJiFrW29d
LmNoaWxkTm9kZXMubGVuZ3RoJiZrW29dLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoa1tvXSl9IWMu
c3VwcG9ydC5sZWFkaW5nV2hpdGVzcGFjZSYmJC50ZXN0KGwpJiZyLmluc2VydEJlZm9yZShiLmNy
ZWF0ZVRleHROb2RlKCQuZXhlYyhsKVswXSksci5maXJzdENoaWxkKTtsPXIuY2hpbGROb2Rlc31p
ZihsLm5vZGVUeXBlKWYucHVzaChsKTtlbHNlIGY9Yy5tZXJnZShmLGwpfX1pZihkKWZvcihoPTA7
ZltoXTtoKyspaWYoZSYmYy5ub2RlTmFtZShmW2hdLCJzY3JpcHQiKSYmKCFmW2hdLnR5cGV8fGZb
aF0udHlwZS50b0xvd2VyQ2FzZSgpPT09InRleHQvamF2YXNjcmlwdCIpKWUucHVzaChmW2hdLnBh
cmVudE5vZGU/ZltoXS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGZbaF0pOmZbaF0pO2Vsc2V7Zlto
XS5ub2RlVHlwZT09PTEmJmYuc3BsaWNlLmFwcGx5KGYsW2grMSwwXS5jb25jYXQoYy5tYWtlQXJy
YXkoZltoXS5nZXRFbGVtZW50c0J5VGFnTmFtZSgic2NyaXB0IikpKSk7Ci1kLmFwcGVuZENoaWxk
KGZbaF0pfXJldHVybiBmfSxjbGVhbkRhdGE6ZnVuY3Rpb24oYSl7Zm9yKHZhciBiLGQsZT1jLmNh
Y2hlLGY9Yy5ldmVudC5zcGVjaWFsLGg9Yy5zdXBwb3J0LmRlbGV0ZUV4cGFuZG8sbD0wLGs7KGs9
YVtsXSkhPW51bGw7bCsrKWlmKCEoay5ub2RlTmFtZSYmYy5ub0RhdGFbay5ub2RlTmFtZS50b0xv
d2VyQ2FzZSgpXSkpaWYoZD1rW2MuZXhwYW5kb10pe2lmKChiPWVbZF0pJiZiLmV2ZW50cylmb3Io
dmFyIG8gaW4gYi5ldmVudHMpZltvXT9jLmV2ZW50LnJlbW92ZShrLG8pOmMucmVtb3ZlRXZlbnQo
ayxvLGIuaGFuZGxlKTtpZihoKWRlbGV0ZSBrW2MuZXhwYW5kb107ZWxzZSBrLnJlbW92ZUF0dHJp
YnV0ZSYmay5yZW1vdmVBdHRyaWJ1dGUoYy5leHBhbmRvKTtkZWxldGUgZVtkXX19fSk7dmFyIEVh
PS9hbHBoYVwoW14pXSpcKS9pLGdiPS9vcGFjaXR5PShbXildKikvLGhiPS8tKFthLXpdKS9pZyxp
Yj0vKFtBLVpdKS9nLEZhPS9eLT9cZCsoPzpweCk/JC9pLAotamI9L14tP1xkLyxrYj17cG9zaXRp
b246ImFic29sdXRlIix2aXNpYmlsaXR5OiJoaWRkZW4iLGRpc3BsYXk6ImJsb2NrIn0sUGE9WyJM
ZWZ0IiwiUmlnaHQiXSxRYT1bIlRvcCIsIkJvdHRvbSJdLFcsR2EsYWEsbGI9ZnVuY3Rpb24oYSxi
KXtyZXR1cm4gYi50b1VwcGVyQ2FzZSgpfTtjLmZuLmNzcz1mdW5jdGlvbihhLGIpe2lmKGFyZ3Vt
ZW50cy5sZW5ndGg9PT0yJiZiPT09QilyZXR1cm4gdGhpcztyZXR1cm4gYy5hY2Nlc3ModGhpcyxh
LGIsdHJ1ZSxmdW5jdGlvbihkLGUsZil7cmV0dXJuIGYhPT1CP2Muc3R5bGUoZCxlLGYpOmMuY3Nz
KGQsZSl9KX07Yy5leHRlbmQoe2Nzc0hvb2tzOntvcGFjaXR5OntnZXQ6ZnVuY3Rpb24oYSxiKXtp
ZihiKXt2YXIgZD1XKGEsIm9wYWNpdHkiLCJvcGFjaXR5Iik7cmV0dXJuIGQ9PT0iIj8iMSI6ZH1l
bHNlIHJldHVybiBhLnN0eWxlLm9wYWNpdHl9fX0sY3NzTnVtYmVyOnt6SW5kZXg6dHJ1ZSxmb250
V2VpZ2h0OnRydWUsb3BhY2l0eTp0cnVlLAotem9vbTp0cnVlLGxpbmVIZWlnaHQ6dHJ1ZX0sY3Nz
UHJvcHM6eyJmbG9hdCI6Yy5zdXBwb3J0LmNzc0Zsb2F0PyJjc3NGbG9hdCI6InN0eWxlRmxvYXQi
fSxzdHlsZTpmdW5jdGlvbihhLGIsZCxlKXtpZighKCFhfHxhLm5vZGVUeXBlPT09M3x8YS5ub2Rl
VHlwZT09PTh8fCFhLnN0eWxlKSl7dmFyIGYsaD1jLmNhbWVsQ2FzZShiKSxsPWEuc3R5bGUsaz1j
LmNzc0hvb2tzW2hdO2I9Yy5jc3NQcm9wc1toXXx8aDtpZihkIT09Qil7aWYoISh0eXBlb2YgZD09
PSJudW1iZXIiJiZpc05hTihkKXx8ZD09bnVsbCkpe2lmKHR5cGVvZiBkPT09Im51bWJlciImJiFj
LmNzc051bWJlcltoXSlkKz0icHgiO2lmKCFrfHwhKCJzZXQiaW4gayl8fChkPWsuc2V0KGEsZCkp
IT09Qil0cnl7bFtiXT1kfWNhdGNoKG8pe319fWVsc2V7aWYoayYmImdldCJpbiBrJiYoZj1rLmdl
dChhLGZhbHNlLGUpKSE9PUIpcmV0dXJuIGY7cmV0dXJuIGxbYl19fX0sY3NzOmZ1bmN0aW9uKGEs
YixkKXt2YXIgZSxmPWMuY2FtZWxDYXNlKGIpLAotaD1jLmNzc0hvb2tzW2ZdO2I9Yy5jc3NQcm9w
c1tmXXx8ZjtpZihoJiYiZ2V0ImluIGgmJihlPWguZ2V0KGEsdHJ1ZSxkKSkhPT1CKXJldHVybiBl
O2Vsc2UgaWYoVylyZXR1cm4gVyhhLGIsZil9LHN3YXA6ZnVuY3Rpb24oYSxiLGQpe3ZhciBlPXt9
LGY7Zm9yKGYgaW4gYil7ZVtmXT1hLnN0eWxlW2ZdO2Euc3R5bGVbZl09YltmXX1kLmNhbGwoYSk7
Zm9yKGYgaW4gYilhLnN0eWxlW2ZdPWVbZl19LGNhbWVsQ2FzZTpmdW5jdGlvbihhKXtyZXR1cm4g
YS5yZXBsYWNlKGhiLGxiKX19KTtjLmN1ckNTUz1jLmNzcztjLmVhY2goWyJoZWlnaHQiLCJ3aWR0
aCJdLGZ1bmN0aW9uKGEsYil7Yy5jc3NIb29rc1tiXT17Z2V0OmZ1bmN0aW9uKGQsZSxmKXt2YXIg
aDtpZihlKXtpZihkLm9mZnNldFdpZHRoIT09MCloPW9hKGQsYixmKTtlbHNlIGMuc3dhcChkLGti
LGZ1bmN0aW9uKCl7aD1vYShkLGIsZil9KTtpZihoPD0wKXtoPVcoZCxiLGIpO2lmKGg9PT0iMHB4
IiYmYWEpaD1hYShkLGIsYik7Ci1pZihoIT1udWxsKXJldHVybiBoPT09IiJ8fGg9PT0iYXV0byI/
IjBweCI6aH1pZihoPDB8fGg9PW51bGwpe2g9ZC5zdHlsZVtiXTtyZXR1cm4gaD09PSIifHxoPT09
ImF1dG8iPyIwcHgiOmh9cmV0dXJuIHR5cGVvZiBoPT09InN0cmluZyI/aDpoKyJweCJ9fSxzZXQ6
ZnVuY3Rpb24oZCxlKXtpZihGYS50ZXN0KGUpKXtlPXBhcnNlRmxvYXQoZSk7aWYoZT49MClyZXR1
cm4gZSsicHgifWVsc2UgcmV0dXJuIGV9fX0pO2lmKCFjLnN1cHBvcnQub3BhY2l0eSljLmNzc0hv
b2tzLm9wYWNpdHk9e2dldDpmdW5jdGlvbihhLGIpe3JldHVybiBnYi50ZXN0KChiJiZhLmN1cnJl
bnRTdHlsZT9hLmN1cnJlbnRTdHlsZS5maWx0ZXI6YS5zdHlsZS5maWx0ZXIpfHwiIik/cGFyc2VG
bG9hdChSZWdFeHAuJDEpLzEwMCsiIjpiPyIxIjoiIn0sc2V0OmZ1bmN0aW9uKGEsYil7dmFyIGQ9
YS5zdHlsZTtkLnpvb209MTt2YXIgZT1jLmlzTmFOKGIpPyIiOiJhbHBoYShvcGFjaXR5PSIrYiox
MDArIikiLGY9Ci1kLmZpbHRlcnx8IiI7ZC5maWx0ZXI9RWEudGVzdChmKT9mLnJlcGxhY2UoRWEs
ZSk6ZC5maWx0ZXIrIiAiK2V9fTtpZih0LmRlZmF1bHRWaWV3JiZ0LmRlZmF1bHRWaWV3LmdldENv
bXB1dGVkU3R5bGUpR2E9ZnVuY3Rpb24oYSxiLGQpe3ZhciBlO2Q9ZC5yZXBsYWNlKGliLCItJDEi
KS50b0xvd2VyQ2FzZSgpO2lmKCEoYj1hLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcpKXJldHVy
biBCO2lmKGI9Yi5nZXRDb21wdXRlZFN0eWxlKGEsbnVsbCkpe2U9Yi5nZXRQcm9wZXJ0eVZhbHVl
KGQpO2lmKGU9PT0iIiYmIWMuY29udGFpbnMoYS5vd25lckRvY3VtZW50LmRvY3VtZW50RWxlbWVu
dCxhKSllPWMuc3R5bGUoYSxkKX1yZXR1cm4gZX07aWYodC5kb2N1bWVudEVsZW1lbnQuY3VycmVu
dFN0eWxlKWFhPWZ1bmN0aW9uKGEsYil7dmFyIGQsZSxmPWEuY3VycmVudFN0eWxlJiZhLmN1cnJl
bnRTdHlsZVtiXSxoPWEuc3R5bGU7aWYoIUZhLnRlc3QoZikmJmpiLnRlc3QoZikpe2Q9aC5sZWZ0
OwotZT1hLnJ1bnRpbWVTdHlsZS5sZWZ0O2EucnVudGltZVN0eWxlLmxlZnQ9YS5jdXJyZW50U3R5
bGUubGVmdDtoLmxlZnQ9Yj09PSJmb250U2l6ZSI/IjFlbSI6Znx8MDtmPWgucGl4ZWxMZWZ0KyJw
eCI7aC5sZWZ0PWQ7YS5ydW50aW1lU3R5bGUubGVmdD1lfXJldHVybiBmPT09IiI/ImF1dG8iOmZ9
O1c9R2F8fGFhO2lmKGMuZXhwciYmYy5leHByLmZpbHRlcnMpe2MuZXhwci5maWx0ZXJzLmhpZGRl
bj1mdW5jdGlvbihhKXt2YXIgYj1hLm9mZnNldEhlaWdodDtyZXR1cm4gYS5vZmZzZXRXaWR0aD09
PTAmJmI9PT0wfHwhYy5zdXBwb3J0LnJlbGlhYmxlSGlkZGVuT2Zmc2V0cyYmKGEuc3R5bGUuZGlz
cGxheXx8Yy5jc3MoYSwiZGlzcGxheSIpKT09PSJub25lIn07Yy5leHByLmZpbHRlcnMudmlzaWJs
ZT1mdW5jdGlvbihhKXtyZXR1cm4hYy5leHByLmZpbHRlcnMuaGlkZGVuKGEpfX12YXIgbWI9Yy5u
b3coKSxuYj0vPHNjcmlwdFxiW148XSooPzooPyE8XC9zY3JpcHQ+KTxbXjxdKikqPFwvc2NyaXB0
Pi9naSwKLW9iPS9eKD86c2VsZWN0fHRleHRhcmVhKS9pLHBiPS9eKD86Y29sb3J8ZGF0ZXxkYXRl
dGltZXxlbWFpbHxoaWRkZW58bW9udGh8bnVtYmVyfHBhc3N3b3JkfHJhbmdlfHNlYXJjaHx0ZWx8
dGV4dHx0aW1lfHVybHx3ZWVrKSQvaSxxYj0vXig/OkdFVHxIRUFEKSQvLFJhPS9cW1xdJC8sVD0v
XD1cPygmfCQpLyxqYT0vXD8vLHJiPS8oWz8mXSlfPVteJl0qLyxzYj0vXihcdys6KT9cL1wvKFte
XC8/I10rKS8sdGI9LyUyMC9nLHViPS8jLiokLyxIYT1jLmZuLmxvYWQ7Yy5mbi5leHRlbmQoe2xv
YWQ6ZnVuY3Rpb24oYSxiLGQpe2lmKHR5cGVvZiBhIT09InN0cmluZyImJkhhKXJldHVybiBIYS5h
cHBseSh0aGlzLGFyZ3VtZW50cyk7ZWxzZSBpZighdGhpcy5sZW5ndGgpcmV0dXJuIHRoaXM7dmFy
IGU9YS5pbmRleE9mKCIgIik7aWYoZT49MCl7dmFyIGY9YS5zbGljZShlLGEubGVuZ3RoKTthPWEu
c2xpY2UoMCxlKX1lPSJHRVQiO2lmKGIpaWYoYy5pc0Z1bmN0aW9uKGIpKXtkPWI7Yj1udWxsfWVs
c2UgaWYodHlwZW9mIGI9PT0KLSJvYmplY3QiKXtiPWMucGFyYW0oYixjLmFqYXhTZXR0aW5ncy50
cmFkaXRpb25hbCk7ZT0iUE9TVCJ9dmFyIGg9dGhpcztjLmFqYXgoe3VybDphLHR5cGU6ZSxkYXRh
VHlwZToiaHRtbCIsZGF0YTpiLGNvbXBsZXRlOmZ1bmN0aW9uKGwsayl7aWYoaz09PSJzdWNjZXNz
Inx8az09PSJub3Rtb2RpZmllZCIpaC5odG1sKGY/YygiPGRpdj4iKS5hcHBlbmQobC5yZXNwb25z
ZVRleHQucmVwbGFjZShuYiwiIikpLmZpbmQoZik6bC5yZXNwb25zZVRleHQpO2QmJmguZWFjaChk
LFtsLnJlc3BvbnNlVGV4dCxrLGxdKX19KTtyZXR1cm4gdGhpc30sc2VyaWFsaXplOmZ1bmN0aW9u
KCl7cmV0dXJuIGMucGFyYW0odGhpcy5zZXJpYWxpemVBcnJheSgpKX0sc2VyaWFsaXplQXJyYXk6
ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lbGVtZW50
cz9jLm1ha2VBcnJheSh0aGlzLmVsZW1lbnRzKTp0aGlzfSkuZmlsdGVyKGZ1bmN0aW9uKCl7cmV0
dXJuIHRoaXMubmFtZSYmCi0hdGhpcy5kaXNhYmxlZCYmKHRoaXMuY2hlY2tlZHx8b2IudGVzdCh0
aGlzLm5vZGVOYW1lKXx8cGIudGVzdCh0aGlzLnR5cGUpKX0pLm1hcChmdW5jdGlvbihhLGIpe3Zh
ciBkPWModGhpcykudmFsKCk7cmV0dXJuIGQ9PW51bGw/bnVsbDpjLmlzQXJyYXkoZCk/Yy5tYXAo
ZCxmdW5jdGlvbihlKXtyZXR1cm57bmFtZTpiLm5hbWUsdmFsdWU6ZX19KTp7bmFtZTpiLm5hbWUs
dmFsdWU6ZH19KS5nZXQoKX19KTtjLmVhY2goImFqYXhTdGFydCBhamF4U3RvcCBhamF4Q29tcGxl
dGUgYWpheEVycm9yIGFqYXhTdWNjZXNzIGFqYXhTZW5kIi5zcGxpdCgiICIpLGZ1bmN0aW9uKGEs
Yil7Yy5mbltiXT1mdW5jdGlvbihkKXtyZXR1cm4gdGhpcy5iaW5kKGIsZCl9fSk7Yy5leHRlbmQo
e2dldDpmdW5jdGlvbihhLGIsZCxlKXtpZihjLmlzRnVuY3Rpb24oYikpe2U9ZXx8ZDtkPWI7Yj1u
dWxsfXJldHVybiBjLmFqYXgoe3R5cGU6IkdFVCIsdXJsOmEsZGF0YTpiLHN1Y2Nlc3M6ZCxkYXRh
VHlwZTplfSl9LAotZ2V0U2NyaXB0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIGMuZ2V0KGEsbnVsbCxi
LCJzY3JpcHQiKX0sZ2V0SlNPTjpmdW5jdGlvbihhLGIsZCl7cmV0dXJuIGMuZ2V0KGEsYixkLCJq
c29uIil9LHBvc3Q6ZnVuY3Rpb24oYSxiLGQsZSl7aWYoYy5pc0Z1bmN0aW9uKGIpKXtlPWV8fGQ7
ZD1iO2I9e319cmV0dXJuIGMuYWpheCh7dHlwZToiUE9TVCIsdXJsOmEsZGF0YTpiLHN1Y2Nlc3M6
ZCxkYXRhVHlwZTplfSl9LGFqYXhTZXR1cDpmdW5jdGlvbihhKXtjLmV4dGVuZChjLmFqYXhTZXR0
aW5ncyxhKX0sYWpheFNldHRpbmdzOnt1cmw6bG9jYXRpb24uaHJlZixnbG9iYWw6dHJ1ZSx0eXBl
OiJHRVQiLGNvbnRlbnRUeXBlOiJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiLHBy
b2Nlc3NEYXRhOnRydWUsYXN5bmM6dHJ1ZSx4aHI6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IEUuWE1M
SHR0cFJlcXVlc3R9LGFjY2VwdHM6e3htbDoiYXBwbGljYXRpb24veG1sLCB0ZXh0L3htbCIsaHRt
bDoidGV4dC9odG1sIiwKLXNjcmlwdDoidGV4dC9qYXZhc2NyaXB0LCBhcHBsaWNhdGlvbi9qYXZh
c2NyaXB0Iixqc29uOiJhcHBsaWNhdGlvbi9qc29uLCB0ZXh0L2phdmFzY3JpcHQiLHRleHQ6InRl
eHQvcGxhaW4iLF9kZWZhdWx0OiIqLyoifX0sYWpheDpmdW5jdGlvbihhKXt2YXIgYj1jLmV4dGVu
ZCh0cnVlLHt9LGMuYWpheFNldHRpbmdzLGEpLGQsZSxmLGg9Yi50eXBlLnRvVXBwZXJDYXNlKCks
bD1xYi50ZXN0KGgpO2IudXJsPWIudXJsLnJlcGxhY2UodWIsIiIpO2IuY29udGV4dD1hJiZhLmNv
bnRleHQhPW51bGw/YS5jb250ZXh0OmI7aWYoYi5kYXRhJiZiLnByb2Nlc3NEYXRhJiZ0eXBlb2Yg
Yi5kYXRhIT09InN0cmluZyIpYi5kYXRhPWMucGFyYW0oYi5kYXRhLGIudHJhZGl0aW9uYWwpO2lm
KGIuZGF0YVR5cGU9PT0ianNvbnAiKXtpZihoPT09IkdFVCIpVC50ZXN0KGIudXJsKXx8KGIudXJs
Kz0oamEudGVzdChiLnVybCk/IiYiOiI/IikrKGIuanNvbnB8fCJjYWxsYmFjayIpKyI9PyIpO2Vs
c2UgaWYoIWIuZGF0YXx8Ci0hVC50ZXN0KGIuZGF0YSkpYi5kYXRhPShiLmRhdGE/Yi5kYXRhKyIm
IjoiIikrKGIuanNvbnB8fCJjYWxsYmFjayIpKyI9PyI7Yi5kYXRhVHlwZT0ianNvbiJ9aWYoYi5k
YXRhVHlwZT09PSJqc29uIiYmKGIuZGF0YSYmVC50ZXN0KGIuZGF0YSl8fFQudGVzdChiLnVybCkp
KXtkPWIuanNvbnBDYWxsYmFja3x8Impzb25wIittYisrO2lmKGIuZGF0YSliLmRhdGE9KGIuZGF0
YSsiIikucmVwbGFjZShULCI9IitkKyIkMSIpO2IudXJsPWIudXJsLnJlcGxhY2UoVCwiPSIrZCsi
JDEiKTtiLmRhdGFUeXBlPSJzY3JpcHQiO3ZhciBrPUVbZF07RVtkXT1mdW5jdGlvbihtKXtpZihj
LmlzRnVuY3Rpb24oaykpayhtKTtlbHNle0VbZF09Qjt0cnl7ZGVsZXRlIEVbZF19Y2F0Y2gocCl7
fX1mPW07Yy5oYW5kbGVTdWNjZXNzKGIsdyxlLGYpO2MuaGFuZGxlQ29tcGxldGUoYix3LGUsZik7
ciYmci5yZW1vdmVDaGlsZChBKX19aWYoYi5kYXRhVHlwZT09PSJzY3JpcHQiJiZiLmNhY2hlPT09
bnVsbCliLmNhY2hlPQotZmFsc2U7aWYoYi5jYWNoZT09PWZhbHNlJiZsKXt2YXIgbz1jLm5vdygp
LHg9Yi51cmwucmVwbGFjZShyYiwiJDFfPSIrbyk7Yi51cmw9eCsoeD09PWIudXJsPyhqYS50ZXN0
KGIudXJsKT8iJiI6Ij8iKSsiXz0iK286IiIpfWlmKGIuZGF0YSYmbCliLnVybCs9KGphLnRlc3Qo
Yi51cmwpPyImIjoiPyIpK2IuZGF0YTtiLmdsb2JhbCYmYy5hY3RpdmUrKz09PTAmJmMuZXZlbnQu
dHJpZ2dlcigiYWpheFN0YXJ0Iik7bz0obz1zYi5leGVjKGIudXJsKSkmJihvWzFdJiZvWzFdLnRv
TG93ZXJDYXNlKCkhPT1sb2NhdGlvbi5wcm90b2NvbHx8b1syXS50b0xvd2VyQ2FzZSgpIT09bG9j
YXRpb24uaG9zdCk7aWYoYi5kYXRhVHlwZT09PSJzY3JpcHQiJiZoPT09IkdFVCImJm8pe3ZhciBy
PXQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImhlYWQiKVswXXx8dC5kb2N1bWVudEVsZW1lbnQsQT10
LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpO2lmKGIuc2NyaXB0Q2hhcnNldClBLmNoYXJzZXQ9Yi5z
Y3JpcHRDaGFyc2V0OwotQS5zcmM9Yi51cmw7aWYoIWQpe3ZhciBDPWZhbHNlO0Eub25sb2FkPUEu
b25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7aWYoIUMmJighdGhpcy5yZWFkeVN0YXRlfHx0
aGlzLnJlYWR5U3RhdGU9PT0ibG9hZGVkInx8dGhpcy5yZWFkeVN0YXRlPT09ImNvbXBsZXRlIikp
e0M9dHJ1ZTtjLmhhbmRsZVN1Y2Nlc3MoYix3LGUsZik7Yy5oYW5kbGVDb21wbGV0ZShiLHcsZSxm
KTtBLm9ubG9hZD1BLm9ucmVhZHlzdGF0ZWNoYW5nZT1udWxsO3ImJkEucGFyZW50Tm9kZSYmci5y
ZW1vdmVDaGlsZChBKX19fXIuaW5zZXJ0QmVmb3JlKEEsci5maXJzdENoaWxkKTtyZXR1cm4gQn12
YXIgSj1mYWxzZSx3PWIueGhyKCk7aWYodyl7Yi51c2VybmFtZT93Lm9wZW4oaCxiLnVybCxiLmFz
eW5jLGIudXNlcm5hbWUsYi5wYXNzd29yZCk6dy5vcGVuKGgsYi51cmwsYi5hc3luYyk7dHJ5e2lm
KGIuZGF0YSE9bnVsbCYmIWx8fGEmJmEuY29udGVudFR5cGUpdy5zZXRSZXF1ZXN0SGVhZGVyKCJD
b250ZW50LVR5cGUiLAotYi5jb250ZW50VHlwZSk7aWYoYi5pZk1vZGlmaWVkKXtjLmxhc3RNb2Rp
ZmllZFtiLnVybF0mJncuc2V0UmVxdWVzdEhlYWRlcigiSWYtTW9kaWZpZWQtU2luY2UiLGMubGFz
dE1vZGlmaWVkW2IudXJsXSk7Yy5ldGFnW2IudXJsXSYmdy5zZXRSZXF1ZXN0SGVhZGVyKCJJZi1O
b25lLU1hdGNoIixjLmV0YWdbYi51cmxdKX1vfHx3LnNldFJlcXVlc3RIZWFkZXIoIlgtUmVxdWVz
dGVkLVdpdGgiLCJYTUxIdHRwUmVxdWVzdCIpO3cuc2V0UmVxdWVzdEhlYWRlcigiQWNjZXB0Iixi
LmRhdGFUeXBlJiZiLmFjY2VwdHNbYi5kYXRhVHlwZV0/Yi5hY2NlcHRzW2IuZGF0YVR5cGVdKyIs
ICovKjsgcT0wLjAxIjpiLmFjY2VwdHMuX2RlZmF1bHQpfWNhdGNoKEkpe31pZihiLmJlZm9yZVNl
bmQmJmIuYmVmb3JlU2VuZC5jYWxsKGIuY29udGV4dCx3LGIpPT09ZmFsc2Upe2IuZ2xvYmFsJiZj
LmFjdGl2ZS0tPT09MSYmYy5ldmVudC50cmlnZ2VyKCJhamF4U3RvcCIpO3cuYWJvcnQoKTtyZXR1
cm4gZmFsc2V9Yi5nbG9iYWwmJgotYy50cmlnZ2VyR2xvYmFsKGIsImFqYXhTZW5kIixbdyxiXSk7
dmFyIEw9dy5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24obSl7aWYoIXd8fHcucmVhZHlTdGF0
ZT09PTB8fG09PT0iYWJvcnQiKXtKfHxjLmhhbmRsZUNvbXBsZXRlKGIsdyxlLGYpO0o9dHJ1ZTtp
Zih3KXcub25yZWFkeXN0YXRlY2hhbmdlPWMubm9vcH1lbHNlIGlmKCFKJiZ3JiYody5yZWFkeVN0
YXRlPT09NHx8bT09PSJ0aW1lb3V0Iikpe0o9dHJ1ZTt3Lm9ucmVhZHlzdGF0ZWNoYW5nZT1jLm5v
b3A7ZT1tPT09InRpbWVvdXQiPyJ0aW1lb3V0IjohYy5odHRwU3VjY2Vzcyh3KT8iZXJyb3IiOmIu
aWZNb2RpZmllZCYmYy5odHRwTm90TW9kaWZpZWQodyxiLnVybCk/Im5vdG1vZGlmaWVkIjoic3Vj
Y2VzcyI7dmFyIHA7aWYoZT09PSJzdWNjZXNzIil0cnl7Zj1jLmh0dHBEYXRhKHcsYi5kYXRhVHlw
ZSxiKX1jYXRjaChxKXtlPSJwYXJzZXJlcnJvciI7cD1xfWlmKGU9PT0ic3VjY2VzcyJ8fGU9PT0i
bm90bW9kaWZpZWQiKWR8fAotYy5oYW5kbGVTdWNjZXNzKGIsdyxlLGYpO2Vsc2UgYy5oYW5kbGVF
cnJvcihiLHcsZSxwKTtkfHxjLmhhbmRsZUNvbXBsZXRlKGIsdyxlLGYpO209PT0idGltZW91dCIm
JncuYWJvcnQoKTtpZihiLmFzeW5jKXc9bnVsbH19O3RyeXt2YXIgZz13LmFib3J0O3cuYWJvcnQ9
ZnVuY3Rpb24oKXt3JiZGdW5jdGlvbi5wcm90b3R5cGUuY2FsbC5jYWxsKGcsdyk7TCgiYWJvcnQi
KX19Y2F0Y2goaSl7fWIuYXN5bmMmJmIudGltZW91dD4wJiZzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7
dyYmIUomJkwoInRpbWVvdXQiKX0sYi50aW1lb3V0KTt0cnl7dy5zZW5kKGx8fGIuZGF0YT09bnVs
bD9udWxsOmIuZGF0YSl9Y2F0Y2gobil7Yy5oYW5kbGVFcnJvcihiLHcsbnVsbCxuKTtjLmhhbmRs
ZUNvbXBsZXRlKGIsdyxlLGYpfWIuYXN5bmN8fEwoKTtyZXR1cm4gd319LHBhcmFtOmZ1bmN0aW9u
KGEsYil7dmFyIGQ9W10sZT1mdW5jdGlvbihoLGwpe2w9Yy5pc0Z1bmN0aW9uKGwpP2woKTpsO2Rb
ZC5sZW5ndGhdPQotZW5jb2RlVVJJQ29tcG9uZW50KGgpKyI9IitlbmNvZGVVUklDb21wb25lbnQo
bCl9O2lmKGI9PT1CKWI9Yy5hamF4U2V0dGluZ3MudHJhZGl0aW9uYWw7aWYoYy5pc0FycmF5KGEp
fHxhLmpxdWVyeSljLmVhY2goYSxmdW5jdGlvbigpe2UodGhpcy5uYW1lLHRoaXMudmFsdWUpfSk7
ZWxzZSBmb3IodmFyIGYgaW4gYSlkYShmLGFbZl0sYixlKTtyZXR1cm4gZC5qb2luKCImIikucmVw
bGFjZSh0YiwiKyIpfX0pO2MuZXh0ZW5kKHthY3RpdmU6MCxsYXN0TW9kaWZpZWQ6e30sZXRhZzp7
fSxoYW5kbGVFcnJvcjpmdW5jdGlvbihhLGIsZCxlKXthLmVycm9yJiZhLmVycm9yLmNhbGwoYS5j
b250ZXh0LGIsZCxlKTthLmdsb2JhbCYmYy50cmlnZ2VyR2xvYmFsKGEsImFqYXhFcnJvciIsW2Is
YSxlXSl9LGhhbmRsZVN1Y2Nlc3M6ZnVuY3Rpb24oYSxiLGQsZSl7YS5zdWNjZXNzJiZhLnN1Y2Nl
c3MuY2FsbChhLmNvbnRleHQsZSxkLGIpO2EuZ2xvYmFsJiZjLnRyaWdnZXJHbG9iYWwoYSwiYWph
eFN1Y2Nlc3MiLAotW2IsYV0pfSxoYW5kbGVDb21wbGV0ZTpmdW5jdGlvbihhLGIsZCl7YS5jb21w
bGV0ZSYmYS5jb21wbGV0ZS5jYWxsKGEuY29udGV4dCxiLGQpO2EuZ2xvYmFsJiZjLnRyaWdnZXJH
bG9iYWwoYSwiYWpheENvbXBsZXRlIixbYixhXSk7YS5nbG9iYWwmJmMuYWN0aXZlLS09PT0xJiZj
LmV2ZW50LnRyaWdnZXIoImFqYXhTdG9wIil9LHRyaWdnZXJHbG9iYWw6ZnVuY3Rpb24oYSxiLGQp
eyhhLmNvbnRleHQmJmEuY29udGV4dC51cmw9PW51bGw/YyhhLmNvbnRleHQpOmMuZXZlbnQpLnRy
aWdnZXIoYixkKX0saHR0cFN1Y2Nlc3M6ZnVuY3Rpb24oYSl7dHJ5e3JldHVybiFhLnN0YXR1cyYm
bG9jYXRpb24ucHJvdG9jb2w9PT0iZmlsZToifHxhLnN0YXR1cz49MjAwJiZhLnN0YXR1czwzMDB8
fGEuc3RhdHVzPT09MzA0fHxhLnN0YXR1cz09PTEyMjN9Y2F0Y2goYil7fXJldHVybiBmYWxzZX0s
aHR0cE5vdE1vZGlmaWVkOmZ1bmN0aW9uKGEsYil7dmFyIGQ9YS5nZXRSZXNwb25zZUhlYWRlcigi
TGFzdC1Nb2RpZmllZCIpLAotZT1hLmdldFJlc3BvbnNlSGVhZGVyKCJFdGFnIik7aWYoZCljLmxh
c3RNb2RpZmllZFtiXT1kO2lmKGUpYy5ldGFnW2JdPWU7cmV0dXJuIGEuc3RhdHVzPT09MzA0fSxo
dHRwRGF0YTpmdW5jdGlvbihhLGIsZCl7dmFyIGU9YS5nZXRSZXNwb25zZUhlYWRlcigiY29udGVu
dC10eXBlIil8fCIiLGY9Yj09PSJ4bWwifHwhYiYmZS5pbmRleE9mKCJ4bWwiKT49MDthPWY/YS5y
ZXNwb25zZVhNTDphLnJlc3BvbnNlVGV4dDtmJiZhLmRvY3VtZW50RWxlbWVudC5ub2RlTmFtZT09
PSJwYXJzZXJlcnJvciImJmMuZXJyb3IoInBhcnNlcmVycm9yIik7aWYoZCYmZC5kYXRhRmlsdGVy
KWE9ZC5kYXRhRmlsdGVyKGEsYik7aWYodHlwZW9mIGE9PT0ic3RyaW5nIilpZihiPT09Impzb24i
fHwhYiYmZS5pbmRleE9mKCJqc29uIik+PTApYT1jLnBhcnNlSlNPTihhKTtlbHNlIGlmKGI9PT0i
c2NyaXB0Inx8IWImJmUuaW5kZXhPZigiamF2YXNjcmlwdCIpPj0wKWMuZ2xvYmFsRXZhbChhKTty
ZXR1cm4gYX19KTsKLWlmKEUuQWN0aXZlWE9iamVjdCljLmFqYXhTZXR0aW5ncy54aHI9ZnVuY3Rp
b24oKXtpZihFLmxvY2F0aW9uLnByb3RvY29sIT09ImZpbGU6Iil0cnl7cmV0dXJuIG5ldyBFLlhN
TEh0dHBSZXF1ZXN0fWNhdGNoKGEpe310cnl7cmV0dXJuIG5ldyBFLkFjdGl2ZVhPYmplY3QoIk1p
Y3Jvc29mdC5YTUxIVFRQIil9Y2F0Y2goYil7fX07Yy5zdXBwb3J0LmFqYXg9ISFjLmFqYXhTZXR0
aW5ncy54aHIoKTt2YXIgZWE9e30sdmI9L14oPzp0b2dnbGV8c2hvd3xoaWRlKSQvLHdiPS9eKFsr
XC1dPSk/KFtcZCsuXC1dKykoLiopJC8sYmEscGE9W1siaGVpZ2h0IiwibWFyZ2luVG9wIiwibWFy
Z2luQm90dG9tIiwicGFkZGluZ1RvcCIsInBhZGRpbmdCb3R0b20iXSxbIndpZHRoIiwibWFyZ2lu
TGVmdCIsIm1hcmdpblJpZ2h0IiwicGFkZGluZ0xlZnQiLCJwYWRkaW5nUmlnaHQiXSxbIm9wYWNp
dHkiXV07Yy5mbi5leHRlbmQoe3Nob3c6ZnVuY3Rpb24oYSxiLGQpe2lmKGF8fGE9PT0wKXJldHVy
biB0aGlzLmFuaW1hdGUoUygic2hvdyIsCi0zKSxhLGIsZCk7ZWxzZXtkPTA7Zm9yKHZhciBlPXRo
aXMubGVuZ3RoO2Q8ZTtkKyspe2E9dGhpc1tkXTtiPWEuc3R5bGUuZGlzcGxheTtpZighYy5kYXRh
KGEsIm9sZGRpc3BsYXkiKSYmYj09PSJub25lIiliPWEuc3R5bGUuZGlzcGxheT0iIjtiPT09IiIm
JmMuY3NzKGEsImRpc3BsYXkiKT09PSJub25lIiYmYy5kYXRhKGEsIm9sZGRpc3BsYXkiLHFhKGEu
bm9kZU5hbWUpKX1mb3IoZD0wO2Q8ZTtkKyspe2E9dGhpc1tkXTtiPWEuc3R5bGUuZGlzcGxheTtp
ZihiPT09IiJ8fGI9PT0ibm9uZSIpYS5zdHlsZS5kaXNwbGF5PWMuZGF0YShhLCJvbGRkaXNwbGF5
Iil8fCIifXJldHVybiB0aGlzfX0saGlkZTpmdW5jdGlvbihhLGIsZCl7aWYoYXx8YT09PTApcmV0
dXJuIHRoaXMuYW5pbWF0ZShTKCJoaWRlIiwzKSxhLGIsZCk7ZWxzZXthPTA7Zm9yKGI9dGhpcy5s
ZW5ndGg7YTxiO2ErKyl7ZD1jLmNzcyh0aGlzW2FdLCJkaXNwbGF5Iik7ZCE9PSJub25lIiYmYy5k
YXRhKHRoaXNbYV0sIm9sZGRpc3BsYXkiLAotZCl9Zm9yKGE9MDthPGI7YSsrKXRoaXNbYV0uc3R5
bGUuZGlzcGxheT0ibm9uZSI7cmV0dXJuIHRoaXN9fSxfdG9nZ2xlOmMuZm4udG9nZ2xlLHRvZ2ds
ZTpmdW5jdGlvbihhLGIsZCl7dmFyIGU9dHlwZW9mIGE9PT0iYm9vbGVhbiI7aWYoYy5pc0Z1bmN0
aW9uKGEpJiZjLmlzRnVuY3Rpb24oYikpdGhpcy5fdG9nZ2xlLmFwcGx5KHRoaXMsYXJndW1lbnRz
KTtlbHNlIGE9PW51bGx8fGU/dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGY9ZT9hOmModGhpcyku
aXMoIjpoaWRkZW4iKTtjKHRoaXMpW2Y/InNob3ciOiJoaWRlIl0oKX0pOnRoaXMuYW5pbWF0ZShT
KCJ0b2dnbGUiLDMpLGEsYixkKTtyZXR1cm4gdGhpc30sZmFkZVRvOmZ1bmN0aW9uKGEsYixkLGUp
e3JldHVybiB0aGlzLmZpbHRlcigiOmhpZGRlbiIpLmNzcygib3BhY2l0eSIsMCkuc2hvdygpLmVu
ZCgpLmFuaW1hdGUoe29wYWNpdHk6Yn0sYSxkLGUpfSxhbmltYXRlOmZ1bmN0aW9uKGEsYixkLGUp
e3ZhciBmPWMuc3BlZWQoYiwKLWQsZSk7aWYoYy5pc0VtcHR5T2JqZWN0KGEpKXJldHVybiB0aGlz
LmVhY2goZi5jb21wbGV0ZSk7cmV0dXJuIHRoaXNbZi5xdWV1ZT09PWZhbHNlPyJlYWNoIjoicXVl
dWUiXShmdW5jdGlvbigpe3ZhciBoPWMuZXh0ZW5kKHt9LGYpLGwsaz10aGlzLm5vZGVUeXBlPT09
MSxvPWsmJmModGhpcykuaXMoIjpoaWRkZW4iKSx4PXRoaXM7Zm9yKGwgaW4gYSl7dmFyIHI9Yy5j
YW1lbENhc2UobCk7aWYobCE9PXIpe2Fbcl09YVtsXTtkZWxldGUgYVtsXTtsPXJ9aWYoYVtsXT09
PSJoaWRlIiYmb3x8YVtsXT09PSJzaG93IiYmIW8pcmV0dXJuIGguY29tcGxldGUuY2FsbCh0aGlz
KTtpZihrJiYobD09PSJoZWlnaHQifHxsPT09IndpZHRoIikpe2gub3ZlcmZsb3c9W3RoaXMuc3R5
bGUub3ZlcmZsb3csdGhpcy5zdHlsZS5vdmVyZmxvd1gsdGhpcy5zdHlsZS5vdmVyZmxvd1ldO2lm
KGMuY3NzKHRoaXMsImRpc3BsYXkiKT09PSJpbmxpbmUiJiZjLmNzcyh0aGlzLCJmbG9hdCIpPT09
Im5vbmUiKWlmKGMuc3VwcG9ydC5pbmxpbmVCbG9ja05lZWRzTGF5b3V0KWlmKHFhKHRoaXMubm9k
ZU5hbWUpPT09Ci0iaW5saW5lIil0aGlzLnN0eWxlLmRpc3BsYXk9ImlubGluZS1ibG9jayI7ZWxz
ZXt0aGlzLnN0eWxlLmRpc3BsYXk9ImlubGluZSI7dGhpcy5zdHlsZS56b29tPTF9ZWxzZSB0aGlz
LnN0eWxlLmRpc3BsYXk9ImlubGluZS1ibG9jayJ9aWYoYy5pc0FycmF5KGFbbF0pKXsoaC5zcGVj
aWFsRWFzaW5nPWguc3BlY2lhbEVhc2luZ3x8e30pW2xdPWFbbF1bMV07YVtsXT1hW2xdWzBdfX1p
ZihoLm92ZXJmbG93IT1udWxsKXRoaXMuc3R5bGUub3ZlcmZsb3c9ImhpZGRlbiI7aC5jdXJBbmlt
PWMuZXh0ZW5kKHt9LGEpO2MuZWFjaChhLGZ1bmN0aW9uKEEsQyl7dmFyIEo9bmV3IGMuZngoeCxo
LEEpO2lmKHZiLnRlc3QoQykpSltDPT09InRvZ2dsZSI/bz8ic2hvdyI6ImhpZGUiOkNdKGEpO2Vs
c2V7dmFyIHc9d2IuZXhlYyhDKSxJPUouY3VyKCl8fDA7aWYodyl7dmFyIEw9cGFyc2VGbG9hdCh3
WzJdKSxnPXdbM118fCJweCI7aWYoZyE9PSJweCIpe2Muc3R5bGUoeCxBLChMfHwxKStnKTtJPShM
fHwKLTEpL0ouY3VyKCkqSTtjLnN0eWxlKHgsQSxJK2cpfWlmKHdbMV0pTD0od1sxXT09PSItPSI/
LTE6MSkqTCtJO0ouY3VzdG9tKEksTCxnKX1lbHNlIEouY3VzdG9tKEksQywiIil9fSk7cmV0dXJu
IHRydWV9KX0sc3RvcDpmdW5jdGlvbihhLGIpe3ZhciBkPWMudGltZXJzO2EmJnRoaXMucXVldWUo
W10pO3RoaXMuZWFjaChmdW5jdGlvbigpe2Zvcih2YXIgZT1kLmxlbmd0aC0xO2U+PTA7ZS0tKWlm
KGRbZV0uZWxlbT09PXRoaXMpe2ImJmRbZV0odHJ1ZSk7ZC5zcGxpY2UoZSwxKX19KTtifHx0aGlz
LmRlcXVldWUoKTtyZXR1cm4gdGhpc319KTtjLmVhY2goe3NsaWRlRG93bjpTKCJzaG93IiwxKSxz
bGlkZVVwOlMoImhpZGUiLDEpLHNsaWRlVG9nZ2xlOlMoInRvZ2dsZSIsMSksZmFkZUluOntvcGFj
aXR5OiJzaG93In0sZmFkZU91dDp7b3BhY2l0eToiaGlkZSJ9LGZhZGVUb2dnbGU6e29wYWNpdHk6
InRvZ2dsZSJ9fSxmdW5jdGlvbihhLGIpe2MuZm5bYV09ZnVuY3Rpb24oZCxlLGYpe3JldHVybiB0
aGlzLmFuaW1hdGUoYiwKLWQsZSxmKX19KTtjLmV4dGVuZCh7c3BlZWQ6ZnVuY3Rpb24oYSxiLGQp
e3ZhciBlPWEmJnR5cGVvZiBhPT09Im9iamVjdCI/Yy5leHRlbmQoe30sYSk6e2NvbXBsZXRlOmR8
fCFkJiZifHxjLmlzRnVuY3Rpb24oYSkmJmEsZHVyYXRpb246YSxlYXNpbmc6ZCYmYnx8YiYmIWMu
aXNGdW5jdGlvbihiKSYmYn07ZS5kdXJhdGlvbj1jLmZ4Lm9mZj8wOnR5cGVvZiBlLmR1cmF0aW9u
PT09Im51bWJlciI/ZS5kdXJhdGlvbjplLmR1cmF0aW9uIGluIGMuZnguc3BlZWRzP2MuZnguc3Bl
ZWRzW2UuZHVyYXRpb25dOmMuZnguc3BlZWRzLl9kZWZhdWx0O2Uub2xkPWUuY29tcGxldGU7ZS5j
b21wbGV0ZT1mdW5jdGlvbigpe2UucXVldWUhPT1mYWxzZSYmYyh0aGlzKS5kZXF1ZXVlKCk7Yy5p
c0Z1bmN0aW9uKGUub2xkKSYmZS5vbGQuY2FsbCh0aGlzKX07cmV0dXJuIGV9LGVhc2luZzp7bGlu
ZWFyOmZ1bmN0aW9uKGEsYixkLGUpe3JldHVybiBkK2UqYX0sc3dpbmc6ZnVuY3Rpb24oYSxiLGQs
ZSl7cmV0dXJuKC1NYXRoLmNvcyhhKgotTWF0aC5QSSkvMiswLjUpKmUrZH19LHRpbWVyczpbXSxm
eDpmdW5jdGlvbihhLGIsZCl7dGhpcy5vcHRpb25zPWI7dGhpcy5lbGVtPWE7dGhpcy5wcm9wPWQ7
aWYoIWIub3JpZyliLm9yaWc9e319fSk7Yy5meC5wcm90b3R5cGU9e3VwZGF0ZTpmdW5jdGlvbigp
e3RoaXMub3B0aW9ucy5zdGVwJiZ0aGlzLm9wdGlvbnMuc3RlcC5jYWxsKHRoaXMuZWxlbSx0aGlz
Lm5vdyx0aGlzKTsoYy5meC5zdGVwW3RoaXMucHJvcF18fGMuZnguc3RlcC5fZGVmYXVsdCkodGhp
cyl9LGN1cjpmdW5jdGlvbigpe2lmKHRoaXMuZWxlbVt0aGlzLnByb3BdIT1udWxsJiYoIXRoaXMu
ZWxlbS5zdHlsZXx8dGhpcy5lbGVtLnN0eWxlW3RoaXMucHJvcF09PW51bGwpKXJldHVybiB0aGlz
LmVsZW1bdGhpcy5wcm9wXTt2YXIgYT1wYXJzZUZsb2F0KGMuY3NzKHRoaXMuZWxlbSx0aGlzLnBy
b3ApKTtyZXR1cm4gYSYmYT4tMUU0P2E6MH0sY3VzdG9tOmZ1bmN0aW9uKGEsYixkKXtmdW5jdGlv
biBlKGwpe3JldHVybiBmLnN0ZXAobCl9Ci12YXIgZj10aGlzLGg9Yy5meDt0aGlzLnN0YXJ0VGlt
ZT1jLm5vdygpO3RoaXMuc3RhcnQ9YTt0aGlzLmVuZD1iO3RoaXMudW5pdD1kfHx0aGlzLnVuaXR8
fCJweCI7dGhpcy5ub3c9dGhpcy5zdGFydDt0aGlzLnBvcz10aGlzLnN0YXRlPTA7ZS5lbGVtPXRo
aXMuZWxlbTtpZihlKCkmJmMudGltZXJzLnB1c2goZSkmJiFiYSliYT1zZXRJbnRlcnZhbChoLnRp
Y2ssaC5pbnRlcnZhbCl9LHNob3c6ZnVuY3Rpb24oKXt0aGlzLm9wdGlvbnMub3JpZ1t0aGlzLnBy
b3BdPWMuc3R5bGUodGhpcy5lbGVtLHRoaXMucHJvcCk7dGhpcy5vcHRpb25zLnNob3c9dHJ1ZTt0
aGlzLmN1c3RvbSh0aGlzLnByb3A9PT0id2lkdGgifHx0aGlzLnByb3A9PT0iaGVpZ2h0Ij8xOjAs
dGhpcy5jdXIoKSk7Yyh0aGlzLmVsZW0pLnNob3coKX0saGlkZTpmdW5jdGlvbigpe3RoaXMub3B0
aW9ucy5vcmlnW3RoaXMucHJvcF09Yy5zdHlsZSh0aGlzLmVsZW0sdGhpcy5wcm9wKTt0aGlzLm9w
dGlvbnMuaGlkZT10cnVlOwotdGhpcy5jdXN0b20odGhpcy5jdXIoKSwwKX0sc3RlcDpmdW5jdGlv
bihhKXt2YXIgYj1jLm5vdygpLGQ9dHJ1ZTtpZihhfHxiPj10aGlzLm9wdGlvbnMuZHVyYXRpb24r
dGhpcy5zdGFydFRpbWUpe3RoaXMubm93PXRoaXMuZW5kO3RoaXMucG9zPXRoaXMuc3RhdGU9MTt0
aGlzLnVwZGF0ZSgpO3RoaXMub3B0aW9ucy5jdXJBbmltW3RoaXMucHJvcF09dHJ1ZTtmb3IodmFy
IGUgaW4gdGhpcy5vcHRpb25zLmN1ckFuaW0paWYodGhpcy5vcHRpb25zLmN1ckFuaW1bZV0hPT10
cnVlKWQ9ZmFsc2U7aWYoZCl7aWYodGhpcy5vcHRpb25zLm92ZXJmbG93IT1udWxsJiYhYy5zdXBw
b3J0LnNocmlua1dyYXBCbG9ja3Mpe3ZhciBmPXRoaXMuZWxlbSxoPXRoaXMub3B0aW9ucztjLmVh
Y2goWyIiLCJYIiwiWSJdLGZ1bmN0aW9uKGssbyl7Zi5zdHlsZVsib3ZlcmZsb3ciK29dPWgub3Zl
cmZsb3dba119KX10aGlzLm9wdGlvbnMuaGlkZSYmYyh0aGlzLmVsZW0pLmhpZGUoKTtpZih0aGlz
Lm9wdGlvbnMuaGlkZXx8Ci10aGlzLm9wdGlvbnMuc2hvdylmb3IodmFyIGwgaW4gdGhpcy5vcHRp
b25zLmN1ckFuaW0pYy5zdHlsZSh0aGlzLmVsZW0sbCx0aGlzLm9wdGlvbnMub3JpZ1tsXSk7dGhp
cy5vcHRpb25zLmNvbXBsZXRlLmNhbGwodGhpcy5lbGVtKX1yZXR1cm4gZmFsc2V9ZWxzZXthPWIt
dGhpcy5zdGFydFRpbWU7dGhpcy5zdGF0ZT1hL3RoaXMub3B0aW9ucy5kdXJhdGlvbjtiPXRoaXMu
b3B0aW9ucy5lYXNpbmd8fChjLmVhc2luZy5zd2luZz8ic3dpbmciOiJsaW5lYXIiKTt0aGlzLnBv
cz1jLmVhc2luZ1t0aGlzLm9wdGlvbnMuc3BlY2lhbEVhc2luZyYmdGhpcy5vcHRpb25zLnNwZWNp
YWxFYXNpbmdbdGhpcy5wcm9wXXx8Yl0odGhpcy5zdGF0ZSxhLDAsMSx0aGlzLm9wdGlvbnMuZHVy
YXRpb24pO3RoaXMubm93PXRoaXMuc3RhcnQrKHRoaXMuZW5kLXRoaXMuc3RhcnQpKnRoaXMucG9z
O3RoaXMudXBkYXRlKCl9cmV0dXJuIHRydWV9fTtjLmV4dGVuZChjLmZ4LHt0aWNrOmZ1bmN0aW9u
KCl7Zm9yKHZhciBhPQotYy50aW1lcnMsYj0wO2I8YS5sZW5ndGg7YisrKWFbYl0oKXx8YS5zcGxp
Y2UoYi0tLDEpO2EubGVuZ3RofHxjLmZ4LnN0b3AoKX0saW50ZXJ2YWw6MTMsc3RvcDpmdW5jdGlv
bigpe2NsZWFySW50ZXJ2YWwoYmEpO2JhPW51bGx9LHNwZWVkczp7c2xvdzo2MDAsZmFzdDoyMDAs
X2RlZmF1bHQ6NDAwfSxzdGVwOntvcGFjaXR5OmZ1bmN0aW9uKGEpe2Muc3R5bGUoYS5lbGVtLCJv
cGFjaXR5IixhLm5vdyl9LF9kZWZhdWx0OmZ1bmN0aW9uKGEpe2lmKGEuZWxlbS5zdHlsZSYmYS5l
bGVtLnN0eWxlW2EucHJvcF0hPW51bGwpYS5lbGVtLnN0eWxlW2EucHJvcF09KGEucHJvcD09PSJ3
aWR0aCJ8fGEucHJvcD09PSJoZWlnaHQiP01hdGgubWF4KDAsYS5ub3cpOmEubm93KSthLnVuaXQ7
ZWxzZSBhLmVsZW1bYS5wcm9wXT1hLm5vd319fSk7aWYoYy5leHByJiZjLmV4cHIuZmlsdGVycylj
LmV4cHIuZmlsdGVycy5hbmltYXRlZD1mdW5jdGlvbihhKXtyZXR1cm4gYy5ncmVwKGMudGltZXJz
LGZ1bmN0aW9uKGIpe3JldHVybiBhPT09Ci1iLmVsZW19KS5sZW5ndGh9O3ZhciB4Yj0vXnQoPzph
YmxlfGR8aCkkL2ksSWE9L14oPzpib2R5fGh0bWwpJC9pO2MuZm4ub2Zmc2V0PSJnZXRCb3VuZGlu
Z0NsaWVudFJlY3QiaW4gdC5kb2N1bWVudEVsZW1lbnQ/ZnVuY3Rpb24oYSl7dmFyIGI9dGhpc1sw
XSxkO2lmKGEpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihsKXtjLm9mZnNldC5zZXRPZmZzZXQo
dGhpcyxhLGwpfSk7aWYoIWJ8fCFiLm93bmVyRG9jdW1lbnQpcmV0dXJuIG51bGw7aWYoYj09PWIu
b3duZXJEb2N1bWVudC5ib2R5KXJldHVybiBjLm9mZnNldC5ib2R5T2Zmc2V0KGIpO3RyeXtkPWIu
Z2V0Qm91bmRpbmdDbGllbnRSZWN0KCl9Y2F0Y2goZSl7fXZhciBmPWIub3duZXJEb2N1bWVudCxo
PWYuZG9jdW1lbnRFbGVtZW50O2lmKCFkfHwhYy5jb250YWlucyhoLGIpKXJldHVybiBkfHx7dG9w
OjAsbGVmdDowfTtiPWYuYm9keTtmPWZhKGYpO3JldHVybnt0b3A6ZC50b3ArKGYucGFnZVlPZmZz
ZXR8fGMuc3VwcG9ydC5ib3hNb2RlbCYmCi1oLnNjcm9sbFRvcHx8Yi5zY3JvbGxUb3ApLShoLmNs
aWVudFRvcHx8Yi5jbGllbnRUb3B8fDApLGxlZnQ6ZC5sZWZ0KyhmLnBhZ2VYT2Zmc2V0fHxjLnN1
cHBvcnQuYm94TW9kZWwmJmguc2Nyb2xsTGVmdHx8Yi5zY3JvbGxMZWZ0KS0oaC5jbGllbnRMZWZ0
fHxiLmNsaWVudExlZnR8fDApfX06ZnVuY3Rpb24oYSl7dmFyIGI9dGhpc1swXTtpZihhKXJldHVy
biB0aGlzLmVhY2goZnVuY3Rpb24oeCl7Yy5vZmZzZXQuc2V0T2Zmc2V0KHRoaXMsYSx4KX0pO2lm
KCFifHwhYi5vd25lckRvY3VtZW50KXJldHVybiBudWxsO2lmKGI9PT1iLm93bmVyRG9jdW1lbnQu
Ym9keSlyZXR1cm4gYy5vZmZzZXQuYm9keU9mZnNldChiKTtjLm9mZnNldC5pbml0aWFsaXplKCk7
dmFyIGQsZT1iLm9mZnNldFBhcmVudCxmPWIub3duZXJEb2N1bWVudCxoPWYuZG9jdW1lbnRFbGVt
ZW50LGw9Zi5ib2R5O2Q9KGY9Zi5kZWZhdWx0Vmlldyk/Zi5nZXRDb21wdXRlZFN0eWxlKGIsbnVs
bCk6Yi5jdXJyZW50U3R5bGU7Ci1mb3IodmFyIGs9Yi5vZmZzZXRUb3Asbz1iLm9mZnNldExlZnQ7
KGI9Yi5wYXJlbnROb2RlKSYmYiE9PWwmJmIhPT1oOyl7aWYoYy5vZmZzZXQuc3VwcG9ydHNGaXhl
ZFBvc2l0aW9uJiZkLnBvc2l0aW9uPT09ImZpeGVkIilicmVhaztkPWY/Zi5nZXRDb21wdXRlZFN0
eWxlKGIsbnVsbCk6Yi5jdXJyZW50U3R5bGU7ay09Yi5zY3JvbGxUb3A7by09Yi5zY3JvbGxMZWZ0
O2lmKGI9PT1lKXtrKz1iLm9mZnNldFRvcDtvKz1iLm9mZnNldExlZnQ7aWYoYy5vZmZzZXQuZG9l
c05vdEFkZEJvcmRlciYmIShjLm9mZnNldC5kb2VzQWRkQm9yZGVyRm9yVGFibGVBbmRDZWxscyYm
eGIudGVzdChiLm5vZGVOYW1lKSkpe2srPXBhcnNlRmxvYXQoZC5ib3JkZXJUb3BXaWR0aCl8fDA7
bys9cGFyc2VGbG9hdChkLmJvcmRlckxlZnRXaWR0aCl8fDB9ZT1iLm9mZnNldFBhcmVudH1pZihj
Lm9mZnNldC5zdWJ0cmFjdHNCb3JkZXJGb3JPdmVyZmxvd05vdFZpc2libGUmJmQub3ZlcmZsb3ch
PT0idmlzaWJsZSIpe2srPQotcGFyc2VGbG9hdChkLmJvcmRlclRvcFdpZHRoKXx8MDtvKz1wYXJz
ZUZsb2F0KGQuYm9yZGVyTGVmdFdpZHRoKXx8MH1kPWR9aWYoZC5wb3NpdGlvbj09PSJyZWxhdGl2
ZSJ8fGQucG9zaXRpb249PT0ic3RhdGljIil7ays9bC5vZmZzZXRUb3A7bys9bC5vZmZzZXRMZWZ0
fWlmKGMub2Zmc2V0LnN1cHBvcnRzRml4ZWRQb3NpdGlvbiYmZC5wb3NpdGlvbj09PSJmaXhlZCIp
e2srPU1hdGgubWF4KGguc2Nyb2xsVG9wLGwuc2Nyb2xsVG9wKTtvKz1NYXRoLm1heChoLnNjcm9s
bExlZnQsbC5zY3JvbGxMZWZ0KX1yZXR1cm57dG9wOmssbGVmdDpvfX07Yy5vZmZzZXQ9e2luaXRp
YWxpemU6ZnVuY3Rpb24oKXt2YXIgYT10LmJvZHksYj10LmNyZWF0ZUVsZW1lbnQoImRpdiIpLGQs
ZSxmLGg9cGFyc2VGbG9hdChjLmNzcyhhLCJtYXJnaW5Ub3AiKSl8fDA7Yy5leHRlbmQoYi5zdHls
ZSx7cG9zaXRpb246ImFic29sdXRlIix0b3A6MCxsZWZ0OjAsbWFyZ2luOjAsYm9yZGVyOjAsd2lk
dGg6IjFweCIsCi1oZWlnaHQ6IjFweCIsdmlzaWJpbGl0eToiaGlkZGVuIn0pO2IuaW5uZXJIVE1M
PSI8ZGl2IHN0eWxlPSdwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7bWFyZ2luOjA7Ym9y
ZGVyOjVweCBzb2xpZCAjMDAwO3BhZGRpbmc6MDt3aWR0aDoxcHg7aGVpZ2h0OjFweDsnPjxkaXY+
PC9kaXY+PC9kaXY+PHRhYmxlIHN0eWxlPSdwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7
bWFyZ2luOjA7Ym9yZGVyOjVweCBzb2xpZCAjMDAwO3BhZGRpbmc6MDt3aWR0aDoxcHg7aGVpZ2h0
OjFweDsnIGNlbGxwYWRkaW5nPScwJyBjZWxsc3BhY2luZz0nMCc+PHRyPjx0ZD48L3RkPjwvdHI+
PC90YWJsZT4iO2EuaW5zZXJ0QmVmb3JlKGIsYS5maXJzdENoaWxkKTtkPWIuZmlyc3RDaGlsZDtl
PWQuZmlyc3RDaGlsZDtmPWQubmV4dFNpYmxpbmcuZmlyc3RDaGlsZC5maXJzdENoaWxkO3RoaXMu
ZG9lc05vdEFkZEJvcmRlcj1lLm9mZnNldFRvcCE9PTU7dGhpcy5kb2VzQWRkQm9yZGVyRm9yVGFi
bGVBbmRDZWxscz0KLWYub2Zmc2V0VG9wPT09NTtlLnN0eWxlLnBvc2l0aW9uPSJmaXhlZCI7ZS5z
dHlsZS50b3A9IjIwcHgiO3RoaXMuc3VwcG9ydHNGaXhlZFBvc2l0aW9uPWUub2Zmc2V0VG9wPT09
MjB8fGUub2Zmc2V0VG9wPT09MTU7ZS5zdHlsZS5wb3NpdGlvbj1lLnN0eWxlLnRvcD0iIjtkLnN0
eWxlLm92ZXJmbG93PSJoaWRkZW4iO2Quc3R5bGUucG9zaXRpb249InJlbGF0aXZlIjt0aGlzLnN1
YnRyYWN0c0JvcmRlckZvck92ZXJmbG93Tm90VmlzaWJsZT1lLm9mZnNldFRvcD09PS01O3RoaXMu
ZG9lc05vdEluY2x1ZGVNYXJnaW5JbkJvZHlPZmZzZXQ9YS5vZmZzZXRUb3AhPT1oO2EucmVtb3Zl
Q2hpbGQoYik7Yy5vZmZzZXQuaW5pdGlhbGl6ZT1jLm5vb3B9LGJvZHlPZmZzZXQ6ZnVuY3Rpb24o
YSl7dmFyIGI9YS5vZmZzZXRUb3AsZD1hLm9mZnNldExlZnQ7Yy5vZmZzZXQuaW5pdGlhbGl6ZSgp
O2lmKGMub2Zmc2V0LmRvZXNOb3RJbmNsdWRlTWFyZ2luSW5Cb2R5T2Zmc2V0KXtiKz1wYXJzZUZs
b2F0KGMuY3NzKGEsCi0ibWFyZ2luVG9wIikpfHwwO2QrPXBhcnNlRmxvYXQoYy5jc3MoYSwibWFy
Z2luTGVmdCIpKXx8MH1yZXR1cm57dG9wOmIsbGVmdDpkfX0sc2V0T2Zmc2V0OmZ1bmN0aW9uKGEs
YixkKXt2YXIgZT1jLmNzcyhhLCJwb3NpdGlvbiIpO2lmKGU9PT0ic3RhdGljIilhLnN0eWxlLnBv
c2l0aW9uPSJyZWxhdGl2ZSI7dmFyIGY9YyhhKSxoPWYub2Zmc2V0KCksbD1jLmNzcyhhLCJ0b3Ai
KSxrPWMuY3NzKGEsImxlZnQiKSxvPWU9PT0iYWJzb2x1dGUiJiZjLmluQXJyYXkoImF1dG8iLFts
LGtdKT4tMTtlPXt9O3ZhciB4PXt9O2lmKG8peD1mLnBvc2l0aW9uKCk7bD1vP3gudG9wOnBhcnNl
SW50KGwsMTApfHwwO2s9bz94LmxlZnQ6cGFyc2VJbnQoaywxMCl8fDA7aWYoYy5pc0Z1bmN0aW9u
KGIpKWI9Yi5jYWxsKGEsZCxoKTtpZihiLnRvcCE9bnVsbCllLnRvcD1iLnRvcC1oLnRvcCtsO2lm
KGIubGVmdCE9bnVsbCllLmxlZnQ9Yi5sZWZ0LWgubGVmdCtrOyJ1c2luZyJpbiBiP2IudXNpbmcu
Y2FsbChhLAotZSk6Zi5jc3MoZSl9fTtjLmZuLmV4dGVuZCh7cG9zaXRpb246ZnVuY3Rpb24oKXtp
ZighdGhpc1swXSlyZXR1cm4gbnVsbDt2YXIgYT10aGlzWzBdLGI9dGhpcy5vZmZzZXRQYXJlbnQo
KSxkPXRoaXMub2Zmc2V0KCksZT1JYS50ZXN0KGJbMF0ubm9kZU5hbWUpP3t0b3A6MCxsZWZ0OjB9
OmIub2Zmc2V0KCk7ZC50b3AtPXBhcnNlRmxvYXQoYy5jc3MoYSwibWFyZ2luVG9wIikpfHwwO2Qu
bGVmdC09cGFyc2VGbG9hdChjLmNzcyhhLCJtYXJnaW5MZWZ0IikpfHwwO2UudG9wKz1wYXJzZUZs
b2F0KGMuY3NzKGJbMF0sImJvcmRlclRvcFdpZHRoIikpfHwwO2UubGVmdCs9cGFyc2VGbG9hdChj
LmNzcyhiWzBdLCJib3JkZXJMZWZ0V2lkdGgiKSl8fDA7cmV0dXJue3RvcDpkLnRvcC1lLnRvcCxs
ZWZ0OmQubGVmdC1lLmxlZnR9fSxvZmZzZXRQYXJlbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5t
YXAoZnVuY3Rpb24oKXtmb3IodmFyIGE9dGhpcy5vZmZzZXRQYXJlbnR8fHQuYm9keTthJiYhSWEu
dGVzdChhLm5vZGVOYW1lKSYmCi1jLmNzcyhhLCJwb3NpdGlvbiIpPT09InN0YXRpYyI7KWE9YS5v
ZmZzZXRQYXJlbnQ7cmV0dXJuIGF9KX19KTtjLmVhY2goWyJMZWZ0IiwiVG9wIl0sZnVuY3Rpb24o
YSxiKXt2YXIgZD0ic2Nyb2xsIitiO2MuZm5bZF09ZnVuY3Rpb24oZSl7dmFyIGY9dGhpc1swXSxo
O2lmKCFmKXJldHVybiBudWxsO2lmKGUhPT1CKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtp
ZihoPWZhKHRoaXMpKWguc2Nyb2xsVG8oIWE/ZTpjKGgpLnNjcm9sbExlZnQoKSxhP2U6YyhoKS5z
Y3JvbGxUb3AoKSk7ZWxzZSB0aGlzW2RdPWV9KTtlbHNlIHJldHVybihoPWZhKGYpKT8icGFnZVhP
ZmZzZXQiaW4gaD9oW2E/InBhZ2VZT2Zmc2V0IjoicGFnZVhPZmZzZXQiXTpjLnN1cHBvcnQuYm94
TW9kZWwmJmguZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50W2RdfHxoLmRvY3VtZW50LmJvZHlbZF06
ZltkXX19KTtjLmVhY2goWyJIZWlnaHQiLCJXaWR0aCJdLGZ1bmN0aW9uKGEsYil7dmFyIGQ9Yi50
b0xvd2VyQ2FzZSgpOwotYy5mblsiaW5uZXIiK2JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXNbMF0/
cGFyc2VGbG9hdChjLmNzcyh0aGlzWzBdLGQsInBhZGRpbmciKSk6bnVsbH07Yy5mblsib3V0ZXIi
K2JdPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzWzBdP3BhcnNlRmxvYXQoYy5jc3ModGhpc1swXSxk
LGU/Im1hcmdpbiI6ImJvcmRlciIpKTpudWxsfTtjLmZuW2RdPWZ1bmN0aW9uKGUpe3ZhciBmPXRo
aXNbMF07aWYoIWYpcmV0dXJuIGU9PW51bGw/bnVsbDp0aGlzO2lmKGMuaXNGdW5jdGlvbihlKSly
ZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGwpe3ZhciBrPWModGhpcyk7a1tkXShlLmNhbGwodGhp
cyxsLGtbZF0oKSkpfSk7aWYoYy5pc1dpbmRvdyhmKSlyZXR1cm4gZi5kb2N1bWVudC5jb21wYXRN
b2RlPT09IkNTUzFDb21wYXQiJiZmLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudFsiY2xpZW50Iiti
XXx8Zi5kb2N1bWVudC5ib2R5WyJjbGllbnQiK2JdO2Vsc2UgaWYoZi5ub2RlVHlwZT09PTkpcmV0
dXJuIE1hdGgubWF4KGYuZG9jdW1lbnRFbGVtZW50WyJjbGllbnQiKwotYl0sZi5ib2R5WyJzY3Jv
bGwiK2JdLGYuZG9jdW1lbnRFbGVtZW50WyJzY3JvbGwiK2JdLGYuYm9keVsib2Zmc2V0IitiXSxm
LmRvY3VtZW50RWxlbWVudFsib2Zmc2V0IitiXSk7ZWxzZSBpZihlPT09Qil7Zj1jLmNzcyhmLGQp
O3ZhciBoPXBhcnNlRmxvYXQoZik7cmV0dXJuIGMuaXNOYU4oaCk/ZjpofWVsc2UgcmV0dXJuIHRo
aXMuY3NzKGQsdHlwZW9mIGU9PT0ic3RyaW5nIj9lOmUrInB4Iil9fSl9KSh3aW5kb3cpOwpkaWZm
IC0tZ2l0IGEvV2ViRHJpdmVyVGVzdHMvaW1wb3J0ZWQvc2VsZW5pdW0vY29tbW9uL3NyYy93ZWIv
anMvanF1ZXJ5LTMuNS4xLm1pbi5qcyBiL1dlYkRyaXZlclRlc3RzL2ltcG9ydGVkL3NlbGVuaXVt
L2NvbW1vbi9zcmMvd2ViL2pzL2pxdWVyeS0zLjUuMS5taW4uanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjA2MTQw
MzRhZDNhOTVlNGFlOWY1M2MyYjAxNWVlYjNlOGQ2OGJkZQotLS0gL2Rldi9udWxsCisrKyBiL1dl
YkRyaXZlclRlc3RzL2ltcG9ydGVkL3NlbGVuaXVtL2NvbW1vbi9zcmMvd2ViL2pzL2pxdWVyeS0z
LjUuMS5taW4uanMKQEAgLTAsMCArMSwyIEBACisvKiEgalF1ZXJ5IHYzLjUuMSB8IChjKSBKUyBG
b3VuZGF0aW9uIGFuZCBvdGhlciBjb250cmlidXRvcnMgfCBqcXVlcnkub3JnL2xpY2Vuc2UgKi8K
KyFmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0Ijsib2JqZWN0Ij09dHlwZW9mIG1vZHVsZSYmIm9i
amVjdCI9PXR5cGVvZiBtb2R1bGUuZXhwb3J0cz9tb2R1bGUuZXhwb3J0cz1lLmRvY3VtZW50P3Qo
ZSwhMCk6ZnVuY3Rpb24oZSl7aWYoIWUuZG9jdW1lbnQpdGhyb3cgbmV3IEVycm9yKCJqUXVlcnkg
cmVxdWlyZXMgYSB3aW5kb3cgd2l0aCBhIGRvY3VtZW50Iik7cmV0dXJuIHQoZSl9OnQoZSl9KCJ1
bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzp0aGlzLGZ1bmN0aW9uKEMsZSl7InVzZSBz
dHJpY3QiO3ZhciB0PVtdLHI9T2JqZWN0LmdldFByb3RvdHlwZU9mLHM9dC5zbGljZSxnPXQuZmxh
dD9mdW5jdGlvbihlKXtyZXR1cm4gdC5mbGF0LmNhbGwoZSl9OmZ1bmN0aW9uKGUpe3JldHVybiB0
LmNvbmNhdC5hcHBseShbXSxlKX0sdT10LnB1c2gsaT10LmluZGV4T2Ysbj17fSxvPW4udG9TdHJp
bmcsdj1uLmhhc093blByb3BlcnR5LGE9di50b1N0cmluZyxsPWEuY2FsbChPYmplY3QpLHk9e30s
bT1mdW5jdGlvbihlKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZSYmIm51bWJlciIhPXR5cGVv
ZiBlLm5vZGVUeXBlfSx4PWZ1bmN0aW9uKGUpe3JldHVybiBudWxsIT1lJiZlPT09ZS53aW5kb3d9
LEU9Qy5kb2N1bWVudCxjPXt0eXBlOiEwLHNyYzohMCxub25jZTohMCxub01vZHVsZTohMH07ZnVu
Y3Rpb24gYihlLHQsbil7dmFyIHIsaSxvPShuPW58fEUpLmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIp
O2lmKG8udGV4dD1lLHQpZm9yKHIgaW4gYykoaT10W3JdfHx0LmdldEF0dHJpYnV0ZSYmdC5nZXRB
dHRyaWJ1dGUocikpJiZvLnNldEF0dHJpYnV0ZShyLGkpO24uaGVhZC5hcHBlbmRDaGlsZChvKS5w
YXJlbnROb2RlLnJlbW92ZUNoaWxkKG8pfWZ1bmN0aW9uIHcoZSl7cmV0dXJuIG51bGw9PWU/ZSsi
Ijoib2JqZWN0Ij09dHlwZW9mIGV8fCJmdW5jdGlvbiI9PXR5cGVvZiBlP25bby5jYWxsKGUpXXx8
Im9iamVjdCI6dHlwZW9mIGV9dmFyIGY9IjMuNS4xIixTPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG5l
dyBTLmZuLmluaXQoZSx0KX07ZnVuY3Rpb24gcChlKXt2YXIgdD0hIWUmJiJsZW5ndGgiaW4gZSYm
ZS5sZW5ndGgsbj13KGUpO3JldHVybiFtKGUpJiYheChlKSYmKCJhcnJheSI9PT1ufHwwPT09dHx8
Im51bWJlciI9PXR5cGVvZiB0JiYwPHQmJnQtMSBpbiBlKX1TLmZuPVMucHJvdG90eXBlPXtqcXVl
cnk6Zixjb25zdHJ1Y3RvcjpTLGxlbmd0aDowLHRvQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm4gcy5j
YWxsKHRoaXMpfSxnZXQ6ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PWU/cy5jYWxsKHRoaXMpOmU8
MD90aGlzW2UrdGhpcy5sZW5ndGhdOnRoaXNbZV19LHB1c2hTdGFjazpmdW5jdGlvbihlKXt2YXIg
dD1TLm1lcmdlKHRoaXMuY29uc3RydWN0b3IoKSxlKTtyZXR1cm4gdC5wcmV2T2JqZWN0PXRoaXMs
dH0sZWFjaDpmdW5jdGlvbihlKXtyZXR1cm4gUy5lYWNoKHRoaXMsZSl9LG1hcDpmdW5jdGlvbihu
KXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soUy5tYXAodGhpcyxmdW5jdGlvbihlLHQpe3JldHVybiBu
LmNhbGwoZSx0LGUpfSkpfSxzbGljZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnB1c2hTdGFjayhz
LmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9LGZpcnN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZXEo
MCl9LGxhc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lcSgtMSl9LGV2ZW46ZnVuY3Rpb24oKXty
ZXR1cm4gdGhpcy5wdXNoU3RhY2soUy5ncmVwKHRoaXMsZnVuY3Rpb24oZSx0KXtyZXR1cm4odCsx
KSUyfSkpfSxvZGQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soUy5ncmVwKHRoaXMs
ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdCUyfSkpfSxlcTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLmxl
bmd0aCxuPStlKyhlPDA/dDowKTtyZXR1cm4gdGhpcy5wdXNoU3RhY2soMDw9biYmbjx0P1t0aGlz
W25dXTpbXSl9LGVuZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnByZXZPYmplY3R8fHRoaXMuY29u
c3RydWN0b3IoKX0scHVzaDp1LHNvcnQ6dC5zb3J0LHNwbGljZTp0LnNwbGljZX0sUy5leHRlbmQ9
Uy5mbi5leHRlbmQ9ZnVuY3Rpb24oKXt2YXIgZSx0LG4scixpLG8sYT1hcmd1bWVudHNbMF18fHt9
LHM9MSx1PWFyZ3VtZW50cy5sZW5ndGgsbD0hMTtmb3IoImJvb2xlYW4iPT10eXBlb2YgYSYmKGw9
YSxhPWFyZ3VtZW50c1tzXXx8e30scysrKSwib2JqZWN0Ij09dHlwZW9mIGF8fG0oYSl8fChhPXt9
KSxzPT09dSYmKGE9dGhpcyxzLS0pO3M8dTtzKyspaWYobnVsbCE9KGU9YXJndW1lbnRzW3NdKSlm
b3IodCBpbiBlKXI9ZVt0XSwiX19wcm90b19fIiE9PXQmJmEhPT1yJiYobCYmciYmKFMuaXNQbGFp
bk9iamVjdChyKXx8KGk9QXJyYXkuaXNBcnJheShyKSkpPyhuPWFbdF0sbz1pJiYhQXJyYXkuaXNB
cnJheShuKT9bXTppfHxTLmlzUGxhaW5PYmplY3Qobik/bjp7fSxpPSExLGFbdF09Uy5leHRlbmQo
bCxvLHIpKTp2b2lkIDAhPT1yJiYoYVt0XT1yKSk7cmV0dXJuIGF9LFMuZXh0ZW5kKHtleHBhbmRv
OiJqUXVlcnkiKyhmK01hdGgucmFuZG9tKCkpLnJlcGxhY2UoL1xEL2csIiIpLGlzUmVhZHk6ITAs
ZXJyb3I6ZnVuY3Rpb24oZSl7dGhyb3cgbmV3IEVycm9yKGUpfSxub29wOmZ1bmN0aW9uKCl7fSxp
c1BsYWluT2JqZWN0OmZ1bmN0aW9uKGUpe3ZhciB0LG47cmV0dXJuISghZXx8IltvYmplY3QgT2Jq
ZWN0XSIhPT1vLmNhbGwoZSkpJiYoISh0PXIoZSkpfHwiZnVuY3Rpb24iPT10eXBlb2Yobj12LmNh
bGwodCwiY29uc3RydWN0b3IiKSYmdC5jb25zdHJ1Y3RvcikmJmEuY2FsbChuKT09PWwpfSxpc0Vt
cHR5T2JqZWN0OmZ1bmN0aW9uKGUpe3ZhciB0O2Zvcih0IGluIGUpcmV0dXJuITE7cmV0dXJuITB9
LGdsb2JhbEV2YWw6ZnVuY3Rpb24oZSx0LG4pe2IoZSx7bm9uY2U6dCYmdC5ub25jZX0sbil9LGVh
Y2g6ZnVuY3Rpb24oZSx0KXt2YXIgbixyPTA7aWYocChlKSl7Zm9yKG49ZS5sZW5ndGg7cjxuO3Ir
KylpZighMT09PXQuY2FsbChlW3JdLHIsZVtyXSkpYnJlYWt9ZWxzZSBmb3IociBpbiBlKWlmKCEx
PT09dC5jYWxsKGVbcl0scixlW3JdKSlicmVhaztyZXR1cm4gZX0sbWFrZUFycmF5OmZ1bmN0aW9u
KGUsdCl7dmFyIG49dHx8W107cmV0dXJuIG51bGwhPWUmJihwKE9iamVjdChlKSk/Uy5tZXJnZShu
LCJzdHJpbmciPT10eXBlb2YgZT9bZV06ZSk6dS5jYWxsKG4sZSkpLG59LGluQXJyYXk6ZnVuY3Rp
b24oZSx0LG4pe3JldHVybiBudWxsPT10Py0xOmkuY2FsbCh0LGUsbil9LG1lcmdlOmZ1bmN0aW9u
KGUsdCl7Zm9yKHZhciBuPSt0Lmxlbmd0aCxyPTAsaT1lLmxlbmd0aDtyPG47cisrKWVbaSsrXT10
W3JdO3JldHVybiBlLmxlbmd0aD1pLGV9LGdyZXA6ZnVuY3Rpb24oZSx0LG4pe2Zvcih2YXIgcj1b
XSxpPTAsbz1lLmxlbmd0aCxhPSFuO2k8bztpKyspIXQoZVtpXSxpKSE9PWEmJnIucHVzaChlW2ld
KTtyZXR1cm4gcn0sbWFwOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpLG89MCxhPVtdO2lmKHAoZSkp
Zm9yKHI9ZS5sZW5ndGg7bzxyO28rKyludWxsIT0oaT10KGVbb10sbyxuKSkmJmEucHVzaChpKTtl
bHNlIGZvcihvIGluIGUpbnVsbCE9KGk9dChlW29dLG8sbikpJiZhLnB1c2goaSk7cmV0dXJuIGco
YSl9LGd1aWQ6MSxzdXBwb3J0Onl9KSwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYoUy5mbltT
eW1ib2wuaXRlcmF0b3JdPXRbU3ltYm9sLml0ZXJhdG9yXSksUy5lYWNoKCJCb29sZWFuIE51bWJl
ciBTdHJpbmcgRnVuY3Rpb24gQXJyYXkgRGF0ZSBSZWdFeHAgT2JqZWN0IEVycm9yIFN5bWJvbCIu
c3BsaXQoIiAiKSxmdW5jdGlvbihlLHQpe25bIltvYmplY3QgIit0KyJdIl09dC50b0xvd2VyQ2Fz
ZSgpfSk7dmFyIGQ9ZnVuY3Rpb24obil7dmFyIGUsZCxiLG8saSxoLGYsZyx3LHUsbCxULEMsYSxF
LHYscyxjLHksUz0ic2l6emxlIisxKm5ldyBEYXRlLHA9bi5kb2N1bWVudCxrPTAscj0wLG09dWUo
KSx4PXVlKCksQT11ZSgpLE49dWUoKSxEPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU9PT10JiYobD0h
MCksMH0saj17fS5oYXNPd25Qcm9wZXJ0eSx0PVtdLHE9dC5wb3AsTD10LnB1c2gsSD10LnB1c2gs
Tz10LnNsaWNlLFA9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49MCxyPWUubGVuZ3RoO248cjtuKysp
aWYoZVtuXT09PXQpcmV0dXJuIG47cmV0dXJuLTF9LFI9ImNoZWNrZWR8c2VsZWN0ZWR8YXN5bmN8
YXV0b2ZvY3VzfGF1dG9wbGF5fGNvbnRyb2xzfGRlZmVyfGRpc2FibGVkfGhpZGRlbnxpc21hcHxs
b29wfG11bHRpcGxlfG9wZW58cmVhZG9ubHl8cmVxdWlyZWR8c2NvcGVkIixNPSJbXFx4MjBcXHRc
XHJcXG5cXGZdIixJPSIoPzpcXFxcW1xcZGEtZkEtRl17MSw2fSIrTSsiP3xcXFxcW15cXHJcXG5c
XGZdfFtcXHctXXxbXlwwLVxceDdmXSkrIixXPSJcXFsiK00rIiooIitJKyIpKD86IitNKyIqKFsq
XiR8IX5dPz0pIitNKyIqKD86JygoPzpcXFxcLnxbXlxcXFwnXSkqKSd8XCIoKD86XFxcXC58W15c
XFxcXCJdKSopXCJ8KCIrSSsiKSl8KSIrTSsiKlxcXSIsRj0iOigiK0krIikoPzpcXCgoKCcoKD86
XFxcXC58W15cXFxcJ10pKiknfFwiKCg/OlxcXFwufFteXFxcXFwiXSkqKVwiKXwoKD86XFxcXC58
W15cXFxcKClbXFxdXXwiK1crIikqKXwuKilcXCl8KSIsQj1uZXcgUmVnRXhwKE0rIisiLCJnIiks
JD1uZXcgUmVnRXhwKCJeIitNKyIrfCgoPzpefFteXFxcXF0pKD86XFxcXC4pKikiK00rIiskIiwi
ZyIpLF89bmV3IFJlZ0V4cCgiXiIrTSsiKiwiK00rIioiKSx6PW5ldyBSZWdFeHAoIl4iK00rIioo
Wz4rfl18IitNKyIpIitNKyIqIiksVT1uZXcgUmVnRXhwKE0rInw+IiksWD1uZXcgUmVnRXhwKEYp
LFY9bmV3IFJlZ0V4cCgiXiIrSSsiJCIpLEc9e0lEOm5ldyBSZWdFeHAoIl4jKCIrSSsiKSIpLENM
QVNTOm5ldyBSZWdFeHAoIl5cXC4oIitJKyIpIiksVEFHOm5ldyBSZWdFeHAoIl4oIitJKyJ8Wypd
KSIpLEFUVFI6bmV3IFJlZ0V4cCgiXiIrVyksUFNFVURPOm5ldyBSZWdFeHAoIl4iK0YpLENISUxE
Om5ldyBSZWdFeHAoIl46KG9ubHl8Zmlyc3R8bGFzdHxudGh8bnRoLWxhc3QpLShjaGlsZHxvZi10
eXBlKSg/OlxcKCIrTSsiKihldmVufG9kZHwoKFsrLV18KShcXGQqKW58KSIrTSsiKig/OihbKy1d
fCkiK00rIiooXFxkKyl8KSkiK00rIipcXCl8KSIsImkiKSxib29sOm5ldyBSZWdFeHAoIl4oPzoi
K1IrIikkIiwiaSIpLG5lZWRzQ29udGV4dDpuZXcgUmVnRXhwKCJeIitNKyIqWz4rfl18OihldmVu
fG9kZHxlcXxndHxsdHxudGh8Zmlyc3R8bGFzdCkoPzpcXCgiK00rIiooKD86LVxcZCk/XFxkKiki
K00rIipcXCl8KSg/PVteLV18JCkiLCJpIil9LFk9L0hUTUwkL2ksUT0vXig/OmlucHV0fHNlbGVj
dHx0ZXh0YXJlYXxidXR0b24pJC9pLEo9L15oXGQkL2ksSz0vXltee10rXHtccypcW25hdGl2ZSBc
dy8sWj0vXig/OiMoW1x3LV0rKXwoXHcrKXxcLihbXHctXSspKSQvLGVlPS9bK35dLyx0ZT1uZXcg
UmVnRXhwKCJcXFxcW1xcZGEtZkEtRl17MSw2fSIrTSsiP3xcXFxcKFteXFxyXFxuXFxmXSkiLCJn
IiksbmU9ZnVuY3Rpb24oZSx0KXt2YXIgbj0iMHgiK2Uuc2xpY2UoMSktNjU1MzY7cmV0dXJuIHR8
fChuPDA/U3RyaW5nLmZyb21DaGFyQ29kZShuKzY1NTM2KTpTdHJpbmcuZnJvbUNoYXJDb2RlKG4+
PjEwfDU1Mjk2LDEwMjMmbnw1NjMyMCkpfSxyZT0vKFtcMC1ceDFmXHg3Zl18Xi0/XGQpfF4tJHxb
XlwwLVx4MWZceDdmLVx1RkZGRlx3LV0vZyxpZT1mdW5jdGlvbihlLHQpe3JldHVybiB0PyJcMCI9
PT1lPyJcdWZmZmQiOmUuc2xpY2UoMCwtMSkrIlxcIitlLmNoYXJDb2RlQXQoZS5sZW5ndGgtMSku
dG9TdHJpbmcoMTYpKyIgIjoiXFwiK2V9LG9lPWZ1bmN0aW9uKCl7VCgpfSxhZT1iZShmdW5jdGlv
bihlKXtyZXR1cm4hMD09PWUuZGlzYWJsZWQmJiJmaWVsZHNldCI9PT1lLm5vZGVOYW1lLnRvTG93
ZXJDYXNlKCl9LHtkaXI6InBhcmVudE5vZGUiLG5leHQ6ImxlZ2VuZCJ9KTt0cnl7SC5hcHBseSh0
PU8uY2FsbChwLmNoaWxkTm9kZXMpLHAuY2hpbGROb2RlcyksdFtwLmNoaWxkTm9kZXMubGVuZ3Ro
XS5ub2RlVHlwZX1jYXRjaChlKXtIPXthcHBseTp0Lmxlbmd0aD9mdW5jdGlvbihlLHQpe0wuYXBw
bHkoZSxPLmNhbGwodCkpfTpmdW5jdGlvbihlLHQpe3ZhciBuPWUubGVuZ3RoLHI9MDt3aGlsZShl
W24rK109dFtyKytdKTtlLmxlbmd0aD1uLTF9fX1mdW5jdGlvbiBzZSh0LGUsbixyKXt2YXIgaSxv
LGEscyx1LGwsYyxmPWUmJmUub3duZXJEb2N1bWVudCxwPWU/ZS5ub2RlVHlwZTo5O2lmKG49bnx8
W10sInN0cmluZyIhPXR5cGVvZiB0fHwhdHx8MSE9PXAmJjkhPT1wJiYxMSE9PXApcmV0dXJuIG47
aWYoIXImJihUKGUpLGU9ZXx8QyxFKSl7aWYoMTEhPT1wJiYodT1aLmV4ZWModCkpKWlmKGk9dVsx
XSl7aWYoOT09PXApe2lmKCEoYT1lLmdldEVsZW1lbnRCeUlkKGkpKSlyZXR1cm4gbjtpZihhLmlk
PT09aSlyZXR1cm4gbi5wdXNoKGEpLG59ZWxzZSBpZihmJiYoYT1mLmdldEVsZW1lbnRCeUlkKGkp
KSYmeShlLGEpJiZhLmlkPT09aSlyZXR1cm4gbi5wdXNoKGEpLG59ZWxzZXtpZih1WzJdKXJldHVy
biBILmFwcGx5KG4sZS5nZXRFbGVtZW50c0J5VGFnTmFtZSh0KSksbjtpZigoaT11WzNdKSYmZC5n
ZXRFbGVtZW50c0J5Q2xhc3NOYW1lJiZlLmdldEVsZW1lbnRzQnlDbGFzc05hbWUpcmV0dXJuIEgu
YXBwbHkobixlLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoaSkpLG59aWYoZC5xc2EmJiFOW3QrIiAi
XSYmKCF2fHwhdi50ZXN0KHQpKSYmKDEhPT1wfHwib2JqZWN0IiE9PWUubm9kZU5hbWUudG9Mb3dl
ckNhc2UoKSkpe2lmKGM9dCxmPWUsMT09PXAmJihVLnRlc3QodCl8fHoudGVzdCh0KSkpeyhmPWVl
LnRlc3QodCkmJnllKGUucGFyZW50Tm9kZSl8fGUpPT09ZSYmZC5zY29wZXx8KChzPWUuZ2V0QXR0
cmlidXRlKCJpZCIpKT9zPXMucmVwbGFjZShyZSxpZSk6ZS5zZXRBdHRyaWJ1dGUoImlkIixzPVMp
KSxvPShsPWgodCkpLmxlbmd0aDt3aGlsZShvLS0pbFtvXT0ocz8iIyIrczoiOnNjb3BlIikrIiAi
K3hlKGxbb10pO2M9bC5qb2luKCIsIil9dHJ5e3JldHVybiBILmFwcGx5KG4sZi5xdWVyeVNlbGVj
dG9yQWxsKGMpKSxufWNhdGNoKGUpe04odCwhMCl9ZmluYWxseXtzPT09UyYmZS5yZW1vdmVBdHRy
aWJ1dGUoImlkIil9fX1yZXR1cm4gZyh0LnJlcGxhY2UoJCwiJDEiKSxlLG4scil9ZnVuY3Rpb24g
dWUoKXt2YXIgcj1bXTtyZXR1cm4gZnVuY3Rpb24gZSh0LG4pe3JldHVybiByLnB1c2godCsiICIp
PmIuY2FjaGVMZW5ndGgmJmRlbGV0ZSBlW3Iuc2hpZnQoKV0sZVt0KyIgIl09bn19ZnVuY3Rpb24g
bGUoZSl7cmV0dXJuIGVbU109ITAsZX1mdW5jdGlvbiBjZShlKXt2YXIgdD1DLmNyZWF0ZUVsZW1l
bnQoImZpZWxkc2V0Iik7dHJ5e3JldHVybiEhZSh0KX1jYXRjaChlKXtyZXR1cm4hMX1maW5hbGx5
e3QucGFyZW50Tm9kZSYmdC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHQpLHQ9bnVsbH19ZnVuY3Rp
b24gZmUoZSx0KXt2YXIgbj1lLnNwbGl0KCJ8Iikscj1uLmxlbmd0aDt3aGlsZShyLS0pYi5hdHRy
SGFuZGxlW25bcl1dPXR9ZnVuY3Rpb24gcGUoZSx0KXt2YXIgbj10JiZlLHI9biYmMT09PWUubm9k
ZVR5cGUmJjE9PT10Lm5vZGVUeXBlJiZlLnNvdXJjZUluZGV4LXQuc291cmNlSW5kZXg7aWYocily
ZXR1cm4gcjtpZihuKXdoaWxlKG49bi5uZXh0U2libGluZylpZihuPT09dClyZXR1cm4tMTtyZXR1
cm4gZT8xOi0xfWZ1bmN0aW9uIGRlKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4iaW5wdXQi
PT09ZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpJiZlLnR5cGU9PT10fX1mdW5jdGlvbiBoZShuKXty
ZXR1cm4gZnVuY3Rpb24oZSl7dmFyIHQ9ZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybigi
aW5wdXQiPT09dHx8ImJ1dHRvbiI9PT10KSYmZS50eXBlPT09bn19ZnVuY3Rpb24gZ2UodCl7cmV0
dXJuIGZ1bmN0aW9uKGUpe3JldHVybiJmb3JtImluIGU/ZS5wYXJlbnROb2RlJiYhMT09PWUuZGlz
YWJsZWQ/ImxhYmVsImluIGU/ImxhYmVsImluIGUucGFyZW50Tm9kZT9lLnBhcmVudE5vZGUuZGlz
YWJsZWQ9PT10OmUuZGlzYWJsZWQ9PT10OmUuaXNEaXNhYmxlZD09PXR8fGUuaXNEaXNhYmxlZCE9
PSF0JiZhZShlKT09PXQ6ZS5kaXNhYmxlZD09PXQ6ImxhYmVsImluIGUmJmUuZGlzYWJsZWQ9PT10
fX1mdW5jdGlvbiB2ZShhKXtyZXR1cm4gbGUoZnVuY3Rpb24obyl7cmV0dXJuIG89K28sbGUoZnVu
Y3Rpb24oZSx0KXt2YXIgbixyPWEoW10sZS5sZW5ndGgsbyksaT1yLmxlbmd0aDt3aGlsZShpLS0p
ZVtuPXJbaV1dJiYoZVtuXT0hKHRbbl09ZVtuXSkpfSl9KX1mdW5jdGlvbiB5ZShlKXtyZXR1cm4g
ZSYmInVuZGVmaW5lZCIhPXR5cGVvZiBlLmdldEVsZW1lbnRzQnlUYWdOYW1lJiZlfWZvcihlIGlu
IGQ9c2Uuc3VwcG9ydD17fSxpPXNlLmlzWE1MPWZ1bmN0aW9uKGUpe3ZhciB0PWUubmFtZXNwYWNl
VVJJLG49KGUub3duZXJEb2N1bWVudHx8ZSkuZG9jdW1lbnRFbGVtZW50O3JldHVybiFZLnRlc3Qo
dHx8biYmbi5ub2RlTmFtZXx8IkhUTUwiKX0sVD1zZS5zZXREb2N1bWVudD1mdW5jdGlvbihlKXt2
YXIgdCxuLHI9ZT9lLm93bmVyRG9jdW1lbnR8fGU6cDtyZXR1cm4gciE9QyYmOT09PXIubm9kZVR5
cGUmJnIuZG9jdW1lbnRFbGVtZW50JiYoYT0oQz1yKS5kb2N1bWVudEVsZW1lbnQsRT0haShDKSxw
IT1DJiYobj1DLmRlZmF1bHRWaWV3KSYmbi50b3AhPT1uJiYobi5hZGRFdmVudExpc3RlbmVyP24u
YWRkRXZlbnRMaXN0ZW5lcigidW5sb2FkIixvZSwhMSk6bi5hdHRhY2hFdmVudCYmbi5hdHRhY2hF
dmVudCgib251bmxvYWQiLG9lKSksZC5zY29wZT1jZShmdW5jdGlvbihlKXtyZXR1cm4gYS5hcHBl
bmRDaGlsZChlKS5hcHBlbmRDaGlsZChDLmNyZWF0ZUVsZW1lbnQoImRpdiIpKSwidW5kZWZpbmVk
IiE9dHlwZW9mIGUucXVlcnlTZWxlY3RvckFsbCYmIWUucXVlcnlTZWxlY3RvckFsbCgiOnNjb3Bl
IGZpZWxkc2V0IGRpdiIpLmxlbmd0aH0pLGQuYXR0cmlidXRlcz1jZShmdW5jdGlvbihlKXtyZXR1
cm4gZS5jbGFzc05hbWU9ImkiLCFlLmdldEF0dHJpYnV0ZSgiY2xhc3NOYW1lIil9KSxkLmdldEVs
ZW1lbnRzQnlUYWdOYW1lPWNlKGZ1bmN0aW9uKGUpe3JldHVybiBlLmFwcGVuZENoaWxkKEMuY3Jl
YXRlQ29tbWVudCgiIikpLCFlLmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIikubGVuZ3RofSksZC5n
ZXRFbGVtZW50c0J5Q2xhc3NOYW1lPUsudGVzdChDLmdldEVsZW1lbnRzQnlDbGFzc05hbWUpLGQu
Z2V0QnlJZD1jZShmdW5jdGlvbihlKXtyZXR1cm4gYS5hcHBlbmRDaGlsZChlKS5pZD1TLCFDLmdl
dEVsZW1lbnRzQnlOYW1lfHwhQy5nZXRFbGVtZW50c0J5TmFtZShTKS5sZW5ndGh9KSxkLmdldEJ5
SWQ/KGIuZmlsdGVyLklEPWZ1bmN0aW9uKGUpe3ZhciB0PWUucmVwbGFjZSh0ZSxuZSk7cmV0dXJu
IGZ1bmN0aW9uKGUpe3JldHVybiBlLmdldEF0dHJpYnV0ZSgiaWQiKT09PXR9fSxiLmZpbmQuSUQ9
ZnVuY3Rpb24oZSx0KXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIHQuZ2V0RWxlbWVudEJ5SWQmJkUp
e3ZhciBuPXQuZ2V0RWxlbWVudEJ5SWQoZSk7cmV0dXJuIG4/W25dOltdfX0pOihiLmZpbHRlci5J
RD1mdW5jdGlvbihlKXt2YXIgbj1lLnJlcGxhY2UodGUsbmUpO3JldHVybiBmdW5jdGlvbihlKXt2
YXIgdD0idW5kZWZpbmVkIiE9dHlwZW9mIGUuZ2V0QXR0cmlidXRlTm9kZSYmZS5nZXRBdHRyaWJ1
dGVOb2RlKCJpZCIpO3JldHVybiB0JiZ0LnZhbHVlPT09bn19LGIuZmluZC5JRD1mdW5jdGlvbihl
LHQpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgdC5nZXRFbGVtZW50QnlJZCYmRSl7dmFyIG4scixp
LG89dC5nZXRFbGVtZW50QnlJZChlKTtpZihvKXtpZigobj1vLmdldEF0dHJpYnV0ZU5vZGUoImlk
IikpJiZuLnZhbHVlPT09ZSlyZXR1cm5bb107aT10LmdldEVsZW1lbnRzQnlOYW1lKGUpLHI9MDt3
aGlsZShvPWlbcisrXSlpZigobj1vLmdldEF0dHJpYnV0ZU5vZGUoImlkIikpJiZuLnZhbHVlPT09
ZSlyZXR1cm5bb119cmV0dXJuW119fSksYi5maW5kLlRBRz1kLmdldEVsZW1lbnRzQnlUYWdOYW1l
P2Z1bmN0aW9uKGUsdCl7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiB0LmdldEVsZW1lbnRzQnlU
YWdOYW1lP3QuZ2V0RWxlbWVudHNCeVRhZ05hbWUoZSk6ZC5xc2E/dC5xdWVyeVNlbGVjdG9yQWxs
KGUpOnZvaWQgMH06ZnVuY3Rpb24oZSx0KXt2YXIgbixyPVtdLGk9MCxvPXQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoZSk7aWYoIioiPT09ZSl7d2hpbGUobj1vW2krK10pMT09PW4ubm9kZVR5cGUmJnIu
cHVzaChuKTtyZXR1cm4gcn1yZXR1cm4gb30sYi5maW5kLkNMQVNTPWQuZ2V0RWxlbWVudHNCeUNs
YXNzTmFtZSYmZnVuY3Rpb24oZSx0KXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIHQuZ2V0RWxlbWVu
dHNCeUNsYXNzTmFtZSYmRSlyZXR1cm4gdC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGUpfSxzPVtd
LHY9W10sKGQucXNhPUsudGVzdChDLnF1ZXJ5U2VsZWN0b3JBbGwpKSYmKGNlKGZ1bmN0aW9uKGUp
e3ZhciB0O2EuYXBwZW5kQ2hpbGQoZSkuaW5uZXJIVE1MPSI8YSBpZD0nIitTKyInPjwvYT48c2Vs
ZWN0IGlkPSciK1MrIi1cclxcJyBtc2FsbG93Y2FwdHVyZT0nJz48b3B0aW9uIHNlbGVjdGVkPScn
Pjwvb3B0aW9uPjwvc2VsZWN0PiIsZS5xdWVyeVNlbGVjdG9yQWxsKCJbbXNhbGxvd2NhcHR1cmVe
PScnXSIpLmxlbmd0aCYmdi5wdXNoKCJbKl4kXT0iK00rIiooPzonJ3xcIlwiKSIpLGUucXVlcnlT
ZWxlY3RvckFsbCgiW3NlbGVjdGVkXSIpLmxlbmd0aHx8di5wdXNoKCJcXFsiK00rIiooPzp2YWx1
ZXwiK1IrIikiKSxlLnF1ZXJ5U2VsZWN0b3JBbGwoIltpZH49IitTKyItXSIpLmxlbmd0aHx8di5w
dXNoKCJ+PSIpLCh0PUMuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSkuc2V0QXR0cmlidXRlKCJuYW1l
IiwiIiksZS5hcHBlbmRDaGlsZCh0KSxlLnF1ZXJ5U2VsZWN0b3JBbGwoIltuYW1lPScnXSIpLmxl
bmd0aHx8di5wdXNoKCJcXFsiK00rIipuYW1lIitNKyIqPSIrTSsiKig/OicnfFwiXCIpIiksZS5x
dWVyeVNlbGVjdG9yQWxsKCI6Y2hlY2tlZCIpLmxlbmd0aHx8di5wdXNoKCI6Y2hlY2tlZCIpLGUu
cXVlcnlTZWxlY3RvckFsbCgiYSMiK1MrIisqIikubGVuZ3RofHx2LnB1c2goIi4jLitbK35dIiks
ZS5xdWVyeVNlbGVjdG9yQWxsKCJcXFxmIiksdi5wdXNoKCJbXFxyXFxuXFxmXSIpfSksY2UoZnVu
Y3Rpb24oZSl7ZS5pbm5lckhUTUw9IjxhIGhyZWY9JycgZGlzYWJsZWQ9J2Rpc2FibGVkJz48L2E+
PHNlbGVjdCBkaXNhYmxlZD0nZGlzYWJsZWQnPjxvcHRpb24vPjwvc2VsZWN0PiI7dmFyIHQ9Qy5j
cmVhdGVFbGVtZW50KCJpbnB1dCIpO3Quc2V0QXR0cmlidXRlKCJ0eXBlIiwiaGlkZGVuIiksZS5h
cHBlbmRDaGlsZCh0KS5zZXRBdHRyaWJ1dGUoIm5hbWUiLCJEIiksZS5xdWVyeVNlbGVjdG9yQWxs
KCJbbmFtZT1kXSIpLmxlbmd0aCYmdi5wdXNoKCJuYW1lIitNKyIqWypeJHwhfl0/PSIpLDIhPT1l
LnF1ZXJ5U2VsZWN0b3JBbGwoIjplbmFibGVkIikubGVuZ3RoJiZ2LnB1c2goIjplbmFibGVkIiwi
OmRpc2FibGVkIiksYS5hcHBlbmRDaGlsZChlKS5kaXNhYmxlZD0hMCwyIT09ZS5xdWVyeVNlbGVj
dG9yQWxsKCI6ZGlzYWJsZWQiKS5sZW5ndGgmJnYucHVzaCgiOmVuYWJsZWQiLCI6ZGlzYWJsZWQi
KSxlLnF1ZXJ5U2VsZWN0b3JBbGwoIiosOngiKSx2LnB1c2goIiwuKjoiKX0pKSwoZC5tYXRjaGVz
U2VsZWN0b3I9Sy50ZXN0KGM9YS5tYXRjaGVzfHxhLndlYmtpdE1hdGNoZXNTZWxlY3Rvcnx8YS5t
b3pNYXRjaGVzU2VsZWN0b3J8fGEub01hdGNoZXNTZWxlY3Rvcnx8YS5tc01hdGNoZXNTZWxlY3Rv
cikpJiZjZShmdW5jdGlvbihlKXtkLmRpc2Nvbm5lY3RlZE1hdGNoPWMuY2FsbChlLCIqIiksYy5j
YWxsKGUsIltzIT0nJ106eCIpLHMucHVzaCgiIT0iLEYpfSksdj12Lmxlbmd0aCYmbmV3IFJlZ0V4
cCh2LmpvaW4oInwiKSkscz1zLmxlbmd0aCYmbmV3IFJlZ0V4cChzLmpvaW4oInwiKSksdD1LLnRl
c3QoYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbikseT10fHxLLnRlc3QoYS5jb250YWlucyk/ZnVu
Y3Rpb24oZSx0KXt2YXIgbj05PT09ZS5ub2RlVHlwZT9lLmRvY3VtZW50RWxlbWVudDplLHI9dCYm
dC5wYXJlbnROb2RlO3JldHVybiBlPT09cnx8ISghcnx8MSE9PXIubm9kZVR5cGV8fCEobi5jb250
YWlucz9uLmNvbnRhaW5zKHIpOmUuY29tcGFyZURvY3VtZW50UG9zaXRpb24mJjE2JmUuY29tcGFy
ZURvY3VtZW50UG9zaXRpb24ocikpKX06ZnVuY3Rpb24oZSx0KXtpZih0KXdoaWxlKHQ9dC5wYXJl
bnROb2RlKWlmKHQ9PT1lKXJldHVybiEwO3JldHVybiExfSxEPXQ/ZnVuY3Rpb24oZSx0KXtpZihl
PT09dClyZXR1cm4gbD0hMCwwO3ZhciBuPSFlLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uLSF0LmNv
bXBhcmVEb2N1bWVudFBvc2l0aW9uO3JldHVybiBufHwoMSYobj0oZS5vd25lckRvY3VtZW50fHxl
KT09KHQub3duZXJEb2N1bWVudHx8dCk/ZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbih0KToxKXx8
IWQuc29ydERldGFjaGVkJiZ0LmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGUpPT09bj9lPT1DfHxl
Lm93bmVyRG9jdW1lbnQ9PXAmJnkocCxlKT8tMTp0PT1DfHx0Lm93bmVyRG9jdW1lbnQ9PXAmJnko
cCx0KT8xOnU/UCh1LGUpLVAodSx0KTowOjQmbj8tMToxKX06ZnVuY3Rpb24oZSx0KXtpZihlPT09
dClyZXR1cm4gbD0hMCwwO3ZhciBuLHI9MCxpPWUucGFyZW50Tm9kZSxvPXQucGFyZW50Tm9kZSxh
PVtlXSxzPVt0XTtpZighaXx8IW8pcmV0dXJuIGU9PUM/LTE6dD09Qz8xOmk/LTE6bz8xOnU/UCh1
LGUpLVAodSx0KTowO2lmKGk9PT1vKXJldHVybiBwZShlLHQpO249ZTt3aGlsZShuPW4ucGFyZW50
Tm9kZSlhLnVuc2hpZnQobik7bj10O3doaWxlKG49bi5wYXJlbnROb2RlKXMudW5zaGlmdChuKTt3
aGlsZShhW3JdPT09c1tyXSlyKys7cmV0dXJuIHI/cGUoYVtyXSxzW3JdKTphW3JdPT1wPy0xOnNb
cl09PXA/MTowfSksQ30sc2UubWF0Y2hlcz1mdW5jdGlvbihlLHQpe3JldHVybiBzZShlLG51bGws
bnVsbCx0KX0sc2UubWF0Y2hlc1NlbGVjdG9yPWZ1bmN0aW9uKGUsdCl7aWYoVChlKSxkLm1hdGNo
ZXNTZWxlY3RvciYmRSYmIU5bdCsiICJdJiYoIXN8fCFzLnRlc3QodCkpJiYoIXZ8fCF2LnRlc3Qo
dCkpKXRyeXt2YXIgbj1jLmNhbGwoZSx0KTtpZihufHxkLmRpc2Nvbm5lY3RlZE1hdGNofHxlLmRv
Y3VtZW50JiYxMSE9PWUuZG9jdW1lbnQubm9kZVR5cGUpcmV0dXJuIG59Y2F0Y2goZSl7Tih0LCEw
KX1yZXR1cm4gMDxzZSh0LEMsbnVsbCxbZV0pLmxlbmd0aH0sc2UuY29udGFpbnM9ZnVuY3Rpb24o
ZSx0KXtyZXR1cm4oZS5vd25lckRvY3VtZW50fHxlKSE9QyYmVChlKSx5KGUsdCl9LHNlLmF0dHI9
ZnVuY3Rpb24oZSx0KXsoZS5vd25lckRvY3VtZW50fHxlKSE9QyYmVChlKTt2YXIgbj1iLmF0dHJI
YW5kbGVbdC50b0xvd2VyQ2FzZSgpXSxyPW4mJmouY2FsbChiLmF0dHJIYW5kbGUsdC50b0xvd2Vy
Q2FzZSgpKT9uKGUsdCwhRSk6dm9pZCAwO3JldHVybiB2b2lkIDAhPT1yP3I6ZC5hdHRyaWJ1dGVz
fHwhRT9lLmdldEF0dHJpYnV0ZSh0KToocj1lLmdldEF0dHJpYnV0ZU5vZGUodCkpJiZyLnNwZWNp
ZmllZD9yLnZhbHVlOm51bGx9LHNlLmVzY2FwZT1mdW5jdGlvbihlKXtyZXR1cm4oZSsiIikucmVw
bGFjZShyZSxpZSl9LHNlLmVycm9yPWZ1bmN0aW9uKGUpe3Rocm93IG5ldyBFcnJvcigiU3ludGF4
IGVycm9yLCB1bnJlY29nbml6ZWQgZXhwcmVzc2lvbjogIitlKX0sc2UudW5pcXVlU29ydD1mdW5j
dGlvbihlKXt2YXIgdCxuPVtdLHI9MCxpPTA7aWYobD0hZC5kZXRlY3REdXBsaWNhdGVzLHU9IWQu
c29ydFN0YWJsZSYmZS5zbGljZSgwKSxlLnNvcnQoRCksbCl7d2hpbGUodD1lW2krK10pdD09PWVb
aV0mJihyPW4ucHVzaChpKSk7d2hpbGUoci0tKWUuc3BsaWNlKG5bcl0sMSl9cmV0dXJuIHU9bnVs
bCxlfSxvPXNlLmdldFRleHQ9ZnVuY3Rpb24oZSl7dmFyIHQsbj0iIixyPTAsaT1lLm5vZGVUeXBl
O2lmKGkpe2lmKDE9PT1pfHw5PT09aXx8MTE9PT1pKXtpZigic3RyaW5nIj09dHlwZW9mIGUudGV4
dENvbnRlbnQpcmV0dXJuIGUudGV4dENvbnRlbnQ7Zm9yKGU9ZS5maXJzdENoaWxkO2U7ZT1lLm5l
eHRTaWJsaW5nKW4rPW8oZSl9ZWxzZSBpZigzPT09aXx8ND09PWkpcmV0dXJuIGUubm9kZVZhbHVl
fWVsc2Ugd2hpbGUodD1lW3IrK10pbis9byh0KTtyZXR1cm4gbn0sKGI9c2Uuc2VsZWN0b3JzPXtj
YWNoZUxlbmd0aDo1MCxjcmVhdGVQc2V1ZG86bGUsbWF0Y2g6RyxhdHRySGFuZGxlOnt9LGZpbmQ6
e30scmVsYXRpdmU6eyI+Ijp7ZGlyOiJwYXJlbnROb2RlIixmaXJzdDohMH0sIiAiOntkaXI6InBh
cmVudE5vZGUifSwiKyI6e2RpcjoicHJldmlvdXNTaWJsaW5nIixmaXJzdDohMH0sIn4iOntkaXI6
InByZXZpb3VzU2libGluZyJ9fSxwcmVGaWx0ZXI6e0FUVFI6ZnVuY3Rpb24oZSl7cmV0dXJuIGVb
MV09ZVsxXS5yZXBsYWNlKHRlLG5lKSxlWzNdPShlWzNdfHxlWzRdfHxlWzVdfHwiIikucmVwbGFj
ZSh0ZSxuZSksIn49Ij09PWVbMl0mJihlWzNdPSIgIitlWzNdKyIgIiksZS5zbGljZSgwLDQpfSxD
SElMRDpmdW5jdGlvbihlKXtyZXR1cm4gZVsxXT1lWzFdLnRvTG93ZXJDYXNlKCksIm50aCI9PT1l
WzFdLnNsaWNlKDAsMyk/KGVbM118fHNlLmVycm9yKGVbMF0pLGVbNF09KyhlWzRdP2VbNV0rKGVb
Nl18fDEpOjIqKCJldmVuIj09PWVbM118fCJvZGQiPT09ZVszXSkpLGVbNV09KyhlWzddK2VbOF18
fCJvZGQiPT09ZVszXSkpOmVbM10mJnNlLmVycm9yKGVbMF0pLGV9LFBTRVVETzpmdW5jdGlvbihl
KXt2YXIgdCxuPSFlWzZdJiZlWzJdO3JldHVybiBHLkNISUxELnRlc3QoZVswXSk/bnVsbDooZVsz
XT9lWzJdPWVbNF18fGVbNV18fCIiOm4mJlgudGVzdChuKSYmKHQ9aChuLCEwKSkmJih0PW4uaW5k
ZXhPZigiKSIsbi5sZW5ndGgtdCktbi5sZW5ndGgpJiYoZVswXT1lWzBdLnNsaWNlKDAsdCksZVsy
XT1uLnNsaWNlKDAsdCkpLGUuc2xpY2UoMCwzKSl9fSxmaWx0ZXI6e1RBRzpmdW5jdGlvbihlKXt2
YXIgdD1lLnJlcGxhY2UodGUsbmUpLnRvTG93ZXJDYXNlKCk7cmV0dXJuIioiPT09ZT9mdW5jdGlv
bigpe3JldHVybiEwfTpmdW5jdGlvbihlKXtyZXR1cm4gZS5ub2RlTmFtZSYmZS5ub2RlTmFtZS50
b0xvd2VyQ2FzZSgpPT09dH19LENMQVNTOmZ1bmN0aW9uKGUpe3ZhciB0PW1bZSsiICJdO3JldHVy
biB0fHwodD1uZXcgUmVnRXhwKCIoXnwiK00rIikiK2UrIigiK00rInwkKSIpKSYmbShlLGZ1bmN0
aW9uKGUpe3JldHVybiB0LnRlc3QoInN0cmluZyI9PXR5cGVvZiBlLmNsYXNzTmFtZSYmZS5jbGFz
c05hbWV8fCJ1bmRlZmluZWQiIT10eXBlb2YgZS5nZXRBdHRyaWJ1dGUmJmUuZ2V0QXR0cmlidXRl
KCJjbGFzcyIpfHwiIil9KX0sQVRUUjpmdW5jdGlvbihuLHIsaSl7cmV0dXJuIGZ1bmN0aW9uKGUp
e3ZhciB0PXNlLmF0dHIoZSxuKTtyZXR1cm4gbnVsbD09dD8iIT0iPT09cjohcnx8KHQrPSIiLCI9
Ij09PXI/dD09PWk6IiE9Ij09PXI/dCE9PWk6Il49Ij09PXI/aSYmMD09PXQuaW5kZXhPZihpKToi
Kj0iPT09cj9pJiYtMTx0LmluZGV4T2YoaSk6IiQ9Ij09PXI/aSYmdC5zbGljZSgtaS5sZW5ndGgp
PT09aToifj0iPT09cj8tMTwoIiAiK3QucmVwbGFjZShCLCIgIikrIiAiKS5pbmRleE9mKGkpOiJ8
PSI9PT1yJiYodD09PWl8fHQuc2xpY2UoMCxpLmxlbmd0aCsxKT09PWkrIi0iKSl9fSxDSElMRDpm
dW5jdGlvbihoLGUsdCxnLHYpe3ZhciB5PSJudGgiIT09aC5zbGljZSgwLDMpLG09Imxhc3QiIT09
aC5zbGljZSgtNCkseD0ib2YtdHlwZSI9PT1lO3JldHVybiAxPT09ZyYmMD09PXY/ZnVuY3Rpb24o
ZSl7cmV0dXJuISFlLnBhcmVudE5vZGV9OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpLG8sYSxzLHUs
bD15IT09bT8ibmV4dFNpYmxpbmciOiJwcmV2aW91c1NpYmxpbmciLGM9ZS5wYXJlbnROb2RlLGY9
eCYmZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpLHA9IW4mJiF4LGQ9ITE7aWYoYyl7aWYoeSl7d2hp
bGUobCl7YT1lO3doaWxlKGE9YVtsXSlpZih4P2Eubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PWY6
MT09PWEubm9kZVR5cGUpcmV0dXJuITE7dT1sPSJvbmx5Ij09PWgmJiF1JiYibmV4dFNpYmxpbmci
fXJldHVybiEwfWlmKHU9W20/Yy5maXJzdENoaWxkOmMubGFzdENoaWxkXSxtJiZwKXtkPShzPShy
PShpPShvPShhPWMpW1NdfHwoYVtTXT17fSkpW2EudW5pcXVlSURdfHwob1thLnVuaXF1ZUlEXT17
fSkpW2hdfHxbXSlbMF09PT1rJiZyWzFdKSYmclsyXSxhPXMmJmMuY2hpbGROb2Rlc1tzXTt3aGls
ZShhPSsrcyYmYSYmYVtsXXx8KGQ9cz0wKXx8dS5wb3AoKSlpZigxPT09YS5ub2RlVHlwZSYmKytk
JiZhPT09ZSl7aVtoXT1bayxzLGRdO2JyZWFrfX1lbHNlIGlmKHAmJihkPXM9KHI9KGk9KG89KGE9
ZSlbU118fChhW1NdPXt9KSlbYS51bmlxdWVJRF18fChvW2EudW5pcXVlSURdPXt9KSlbaF18fFtd
KVswXT09PWsmJnJbMV0pLCExPT09ZCl3aGlsZShhPSsrcyYmYSYmYVtsXXx8KGQ9cz0wKXx8dS5w
b3AoKSlpZigoeD9hLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1mOjE9PT1hLm5vZGVUeXBlKSYm
KytkJiYocCYmKChpPShvPWFbU118fChhW1NdPXt9KSlbYS51bmlxdWVJRF18fChvW2EudW5pcXVl
SURdPXt9KSlbaF09W2ssZF0pLGE9PT1lKSlicmVhaztyZXR1cm4oZC09dik9PT1nfHxkJWc9PTAm
JjA8PWQvZ319fSxQU0VVRE86ZnVuY3Rpb24oZSxvKXt2YXIgdCxhPWIucHNldWRvc1tlXXx8Yi5z
ZXRGaWx0ZXJzW2UudG9Mb3dlckNhc2UoKV18fHNlLmVycm9yKCJ1bnN1cHBvcnRlZCBwc2V1ZG86
ICIrZSk7cmV0dXJuIGFbU10/YShvKToxPGEubGVuZ3RoPyh0PVtlLGUsIiIsb10sYi5zZXRGaWx0
ZXJzLmhhc093blByb3BlcnR5KGUudG9Mb3dlckNhc2UoKSk/bGUoZnVuY3Rpb24oZSx0KXt2YXIg
bixyPWEoZSxvKSxpPXIubGVuZ3RoO3doaWxlKGktLSllW249UChlLHJbaV0pXT0hKHRbbl09cltp
XSl9KTpmdW5jdGlvbihlKXtyZXR1cm4gYShlLDAsdCl9KTphfX0scHNldWRvczp7bm90OmxlKGZ1
bmN0aW9uKGUpe3ZhciByPVtdLGk9W10scz1mKGUucmVwbGFjZSgkLCIkMSIpKTtyZXR1cm4gc1tT
XT9sZShmdW5jdGlvbihlLHQsbixyKXt2YXIgaSxvPXMoZSxudWxsLHIsW10pLGE9ZS5sZW5ndGg7
d2hpbGUoYS0tKShpPW9bYV0pJiYoZVthXT0hKHRbYV09aSkpfSk6ZnVuY3Rpb24oZSx0LG4pe3Jl
dHVybiByWzBdPWUscyhyLG51bGwsbixpKSxyWzBdPW51bGwsIWkucG9wKCl9fSksaGFzOmxlKGZ1
bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gMDxzZSh0LGUpLmxlbmd0aH19KSxj
b250YWluczpsZShmdW5jdGlvbih0KXtyZXR1cm4gdD10LnJlcGxhY2UodGUsbmUpLGZ1bmN0aW9u
KGUpe3JldHVybi0xPChlLnRleHRDb250ZW50fHxvKGUpKS5pbmRleE9mKHQpfX0pLGxhbmc6bGUo
ZnVuY3Rpb24obil7cmV0dXJuIFYudGVzdChufHwiIil8fHNlLmVycm9yKCJ1bnN1cHBvcnRlZCBs
YW5nOiAiK24pLG49bi5yZXBsYWNlKHRlLG5lKS50b0xvd2VyQ2FzZSgpLGZ1bmN0aW9uKGUpe3Zh
ciB0O2Rve2lmKHQ9RT9lLmxhbmc6ZS5nZXRBdHRyaWJ1dGUoInhtbDpsYW5nIil8fGUuZ2V0QXR0
cmlidXRlKCJsYW5nIikpcmV0dXJuKHQ9dC50b0xvd2VyQ2FzZSgpKT09PW58fDA9PT10LmluZGV4
T2YobisiLSIpfXdoaWxlKChlPWUucGFyZW50Tm9kZSkmJjE9PT1lLm5vZGVUeXBlKTtyZXR1cm4h
MX19KSx0YXJnZXQ6ZnVuY3Rpb24oZSl7dmFyIHQ9bi5sb2NhdGlvbiYmbi5sb2NhdGlvbi5oYXNo
O3JldHVybiB0JiZ0LnNsaWNlKDEpPT09ZS5pZH0scm9vdDpmdW5jdGlvbihlKXtyZXR1cm4gZT09
PWF9LGZvY3VzOmZ1bmN0aW9uKGUpe3JldHVybiBlPT09Qy5hY3RpdmVFbGVtZW50JiYoIUMuaGFz
Rm9jdXN8fEMuaGFzRm9jdXMoKSkmJiEhKGUudHlwZXx8ZS5ocmVmfHx+ZS50YWJJbmRleCl9LGVu
YWJsZWQ6Z2UoITEpLGRpc2FibGVkOmdlKCEwKSxjaGVja2VkOmZ1bmN0aW9uKGUpe3ZhciB0PWUu
bm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4iaW5wdXQiPT09dCYmISFlLmNoZWNrZWR8fCJv
cHRpb24iPT09dCYmISFlLnNlbGVjdGVkfSxzZWxlY3RlZDpmdW5jdGlvbihlKXtyZXR1cm4gZS5w
YXJlbnROb2RlJiZlLnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCwhMD09PWUuc2VsZWN0ZWR9LGVt
cHR5OmZ1bmN0aW9uKGUpe2ZvcihlPWUuZmlyc3RDaGlsZDtlO2U9ZS5uZXh0U2libGluZylpZihl
Lm5vZGVUeXBlPDYpcmV0dXJuITE7cmV0dXJuITB9LHBhcmVudDpmdW5jdGlvbihlKXtyZXR1cm4h
Yi5wc2V1ZG9zLmVtcHR5KGUpfSxoZWFkZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIEoudGVzdChlLm5v
ZGVOYW1lKX0saW5wdXQ6ZnVuY3Rpb24oZSl7cmV0dXJuIFEudGVzdChlLm5vZGVOYW1lKX0sYnV0
dG9uOmZ1bmN0aW9uKGUpe3ZhciB0PWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4iaW5w
dXQiPT09dCYmImJ1dHRvbiI9PT1lLnR5cGV8fCJidXR0b24iPT09dH0sdGV4dDpmdW5jdGlvbihl
KXt2YXIgdDtyZXR1cm4iaW5wdXQiPT09ZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpJiYidGV4dCI9
PT1lLnR5cGUmJihudWxsPT0odD1lLmdldEF0dHJpYnV0ZSgidHlwZSIpKXx8InRleHQiPT09dC50
b0xvd2VyQ2FzZSgpKX0sZmlyc3Q6dmUoZnVuY3Rpb24oKXtyZXR1cm5bMF19KSxsYXN0OnZlKGZ1
bmN0aW9uKGUsdCl7cmV0dXJuW3QtMV19KSxlcTp2ZShmdW5jdGlvbihlLHQsbil7cmV0dXJuW248
MD9uK3Q6bl19KSxldmVuOnZlKGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPTA7bjx0O24rPTIpZS5w
dXNoKG4pO3JldHVybiBlfSksb2RkOnZlKGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPTE7bjx0O24r
PTIpZS5wdXNoKG4pO3JldHVybiBlfSksbHQ6dmUoZnVuY3Rpb24oZSx0LG4pe2Zvcih2YXIgcj1u
PDA/bit0OnQ8bj90Om47MDw9LS1yOyllLnB1c2gocik7cmV0dXJuIGV9KSxndDp2ZShmdW5jdGlv
bihlLHQsbil7Zm9yKHZhciByPW48MD9uK3Q6bjsrK3I8dDspZS5wdXNoKHIpO3JldHVybiBlfSl9
fSkucHNldWRvcy5udGg9Yi5wc2V1ZG9zLmVxLHtyYWRpbzohMCxjaGVja2JveDohMCxmaWxlOiEw
LHBhc3N3b3JkOiEwLGltYWdlOiEwfSliLnBzZXVkb3NbZV09ZGUoZSk7Zm9yKGUgaW57c3VibWl0
OiEwLHJlc2V0OiEwfSliLnBzZXVkb3NbZV09aGUoZSk7ZnVuY3Rpb24gbWUoKXt9ZnVuY3Rpb24g
eGUoZSl7Zm9yKHZhciB0PTAsbj1lLmxlbmd0aCxyPSIiO3Q8bjt0Kyspcis9ZVt0XS52YWx1ZTty
ZXR1cm4gcn1mdW5jdGlvbiBiZShzLGUsdCl7dmFyIHU9ZS5kaXIsbD1lLm5leHQsYz1sfHx1LGY9
dCYmInBhcmVudE5vZGUiPT09YyxwPXIrKztyZXR1cm4gZS5maXJzdD9mdW5jdGlvbihlLHQsbil7
d2hpbGUoZT1lW3VdKWlmKDE9PT1lLm5vZGVUeXBlfHxmKXJldHVybiBzKGUsdCxuKTtyZXR1cm4h
MX06ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGksbyxhPVtrLHBdO2lmKG4pe3doaWxlKGU9ZVt1XSlp
ZigoMT09PWUubm9kZVR5cGV8fGYpJiZzKGUsdCxuKSlyZXR1cm4hMH1lbHNlIHdoaWxlKGU9ZVt1
XSlpZigxPT09ZS5ub2RlVHlwZXx8ZilpZihpPShvPWVbU118fChlW1NdPXt9KSlbZS51bmlxdWVJ
RF18fChvW2UudW5pcXVlSURdPXt9KSxsJiZsPT09ZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpKWU9
ZVt1XXx8ZTtlbHNle2lmKChyPWlbY10pJiZyWzBdPT09ayYmclsxXT09PXApcmV0dXJuIGFbMl09
clsyXTtpZigoaVtjXT1hKVsyXT1zKGUsdCxuKSlyZXR1cm4hMH1yZXR1cm4hMX19ZnVuY3Rpb24g
d2UoaSl7cmV0dXJuIDE8aS5sZW5ndGg/ZnVuY3Rpb24oZSx0LG4pe3ZhciByPWkubGVuZ3RoO3do
aWxlKHItLSlpZighaVtyXShlLHQsbikpcmV0dXJuITE7cmV0dXJuITB9OmlbMF19ZnVuY3Rpb24g
VGUoZSx0LG4scixpKXtmb3IodmFyIG8sYT1bXSxzPTAsdT1lLmxlbmd0aCxsPW51bGwhPXQ7czx1
O3MrKykobz1lW3NdKSYmKG4mJiFuKG8scixpKXx8KGEucHVzaChvKSxsJiZ0LnB1c2gocykpKTty
ZXR1cm4gYX1mdW5jdGlvbiBDZShkLGgsZyx2LHksZSl7cmV0dXJuIHYmJiF2W1NdJiYodj1DZSh2
KSkseSYmIXlbU10mJih5PUNlKHksZSkpLGxlKGZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpLG8sYSxz
PVtdLHU9W10sbD10Lmxlbmd0aCxjPWV8fGZ1bmN0aW9uKGUsdCxuKXtmb3IodmFyIHI9MCxpPXQu
bGVuZ3RoO3I8aTtyKyspc2UoZSx0W3JdLG4pO3JldHVybiBufShofHwiKiIsbi5ub2RlVHlwZT9b
bl06bixbXSksZj0hZHx8IWUmJmg/YzpUZShjLHMsZCxuLHIpLHA9Zz95fHwoZT9kOmx8fHYpP1td
OnQ6ZjtpZihnJiZnKGYscCxuLHIpLHYpe2k9VGUocCx1KSx2KGksW10sbixyKSxvPWkubGVuZ3Ro
O3doaWxlKG8tLSkoYT1pW29dKSYmKHBbdVtvXV09IShmW3Vbb11dPWEpKX1pZihlKXtpZih5fHxk
KXtpZih5KXtpPVtdLG89cC5sZW5ndGg7d2hpbGUoby0tKShhPXBbb10pJiZpLnB1c2goZltvXT1h
KTt5KG51bGwscD1bXSxpLHIpfW89cC5sZW5ndGg7d2hpbGUoby0tKShhPXBbb10pJiYtMTwoaT15
P1AoZSxhKTpzW29dKSYmKGVbaV09ISh0W2ldPWEpKX19ZWxzZSBwPVRlKHA9PT10P3Auc3BsaWNl
KGwscC5sZW5ndGgpOnApLHk/eShudWxsLHQscCxyKTpILmFwcGx5KHQscCl9KX1mdW5jdGlvbiBF
ZShlKXtmb3IodmFyIGksdCxuLHI9ZS5sZW5ndGgsbz1iLnJlbGF0aXZlW2VbMF0udHlwZV0sYT1v
fHxiLnJlbGF0aXZlWyIgIl0scz1vPzE6MCx1PWJlKGZ1bmN0aW9uKGUpe3JldHVybiBlPT09aX0s
YSwhMCksbD1iZShmdW5jdGlvbihlKXtyZXR1cm4tMTxQKGksZSl9LGEsITApLGM9W2Z1bmN0aW9u
KGUsdCxuKXt2YXIgcj0hbyYmKG58fHQhPT13KXx8KChpPXQpLm5vZGVUeXBlP3UoZSx0LG4pOmwo
ZSx0LG4pKTtyZXR1cm4gaT1udWxsLHJ9XTtzPHI7cysrKWlmKHQ9Yi5yZWxhdGl2ZVtlW3NdLnR5
cGVdKWM9W2JlKHdlKGMpLHQpXTtlbHNle2lmKCh0PWIuZmlsdGVyW2Vbc10udHlwZV0uYXBwbHko
bnVsbCxlW3NdLm1hdGNoZXMpKVtTXSl7Zm9yKG49KytzO248cjtuKyspaWYoYi5yZWxhdGl2ZVtl
W25dLnR5cGVdKWJyZWFrO3JldHVybiBDZSgxPHMmJndlKGMpLDE8cyYmeGUoZS5zbGljZSgwLHMt
MSkuY29uY2F0KHt2YWx1ZToiICI9PT1lW3MtMl0udHlwZT8iKiI6IiJ9KSkucmVwbGFjZSgkLCIk
MSIpLHQsczxuJiZFZShlLnNsaWNlKHMsbikpLG48ciYmRWUoZT1lLnNsaWNlKG4pKSxuPHImJnhl
KGUpKX1jLnB1c2godCl9cmV0dXJuIHdlKGMpfXJldHVybiBtZS5wcm90b3R5cGU9Yi5maWx0ZXJz
PWIucHNldWRvcyxiLnNldEZpbHRlcnM9bmV3IG1lLGg9c2UudG9rZW5pemU9ZnVuY3Rpb24oZSx0
KXt2YXIgbixyLGksbyxhLHMsdSxsPXhbZSsiICJdO2lmKGwpcmV0dXJuIHQ/MDpsLnNsaWNlKDAp
O2E9ZSxzPVtdLHU9Yi5wcmVGaWx0ZXI7d2hpbGUoYSl7Zm9yKG8gaW4gbiYmIShyPV8uZXhlYyhh
KSl8fChyJiYoYT1hLnNsaWNlKHJbMF0ubGVuZ3RoKXx8YSkscy5wdXNoKGk9W10pKSxuPSExLChy
PXouZXhlYyhhKSkmJihuPXIuc2hpZnQoKSxpLnB1c2goe3ZhbHVlOm4sdHlwZTpyWzBdLnJlcGxh
Y2UoJCwiICIpfSksYT1hLnNsaWNlKG4ubGVuZ3RoKSksYi5maWx0ZXIpIShyPUdbb10uZXhlYyhh
KSl8fHVbb10mJiEocj11W29dKHIpKXx8KG49ci5zaGlmdCgpLGkucHVzaCh7dmFsdWU6bix0eXBl
Om8sbWF0Y2hlczpyfSksYT1hLnNsaWNlKG4ubGVuZ3RoKSk7aWYoIW4pYnJlYWt9cmV0dXJuIHQ/
YS5sZW5ndGg6YT9zZS5lcnJvcihlKTp4KGUscykuc2xpY2UoMCl9LGY9c2UuY29tcGlsZT1mdW5j
dGlvbihlLHQpe3ZhciBuLHYseSxtLHgscixpPVtdLG89W10sYT1BW2UrIiAiXTtpZighYSl7dHx8
KHQ9aChlKSksbj10Lmxlbmd0aDt3aGlsZShuLS0pKGE9RWUodFtuXSkpW1NdP2kucHVzaChhKTpv
LnB1c2goYSk7KGE9QShlLCh2PW8sbT0wPCh5PWkpLmxlbmd0aCx4PTA8di5sZW5ndGgscj1mdW5j
dGlvbihlLHQsbixyLGkpe3ZhciBvLGEscyx1PTAsbD0iMCIsYz1lJiZbXSxmPVtdLHA9dyxkPWV8
fHgmJmIuZmluZC5UQUcoIioiLGkpLGg9ays9bnVsbD09cD8xOk1hdGgucmFuZG9tKCl8fC4xLGc9
ZC5sZW5ndGg7Zm9yKGkmJih3PXQ9PUN8fHR8fGkpO2whPT1nJiZudWxsIT0obz1kW2xdKTtsKysp
e2lmKHgmJm8pe2E9MCx0fHxvLm93bmVyRG9jdW1lbnQ9PUN8fChUKG8pLG49IUUpO3doaWxlKHM9
dlthKytdKWlmKHMobyx0fHxDLG4pKXtyLnB1c2gobyk7YnJlYWt9aSYmKGs9aCl9bSYmKChvPSFz
JiZvKSYmdS0tLGUmJmMucHVzaChvKSl9aWYodSs9bCxtJiZsIT09dSl7YT0wO3doaWxlKHM9eVth
KytdKXMoYyxmLHQsbik7aWYoZSl7aWYoMDx1KXdoaWxlKGwtLSljW2xdfHxmW2xdfHwoZltsXT1x
LmNhbGwocikpO2Y9VGUoZil9SC5hcHBseShyLGYpLGkmJiFlJiYwPGYubGVuZ3RoJiYxPHUreS5s
ZW5ndGgmJnNlLnVuaXF1ZVNvcnQocil9cmV0dXJuIGkmJihrPWgsdz1wKSxjfSxtP2xlKHIpOnIp
KSkuc2VsZWN0b3I9ZX1yZXR1cm4gYX0sZz1zZS5zZWxlY3Q9ZnVuY3Rpb24oZSx0LG4scil7dmFy
IGksbyxhLHMsdSxsPSJmdW5jdGlvbiI9PXR5cGVvZiBlJiZlLGM9IXImJmgoZT1sLnNlbGVjdG9y
fHxlKTtpZihuPW58fFtdLDE9PT1jLmxlbmd0aCl7aWYoMjwobz1jWzBdPWNbMF0uc2xpY2UoMCkp
Lmxlbmd0aCYmIklEIj09PShhPW9bMF0pLnR5cGUmJjk9PT10Lm5vZGVUeXBlJiZFJiZiLnJlbGF0
aXZlW29bMV0udHlwZV0pe2lmKCEodD0oYi5maW5kLklEKGEubWF0Y2hlc1swXS5yZXBsYWNlKHRl
LG5lKSx0KXx8W10pWzBdKSlyZXR1cm4gbjtsJiYodD10LnBhcmVudE5vZGUpLGU9ZS5zbGljZShv
LnNoaWZ0KCkudmFsdWUubGVuZ3RoKX1pPUcubmVlZHNDb250ZXh0LnRlc3QoZSk/MDpvLmxlbmd0
aDt3aGlsZShpLS0pe2lmKGE9b1tpXSxiLnJlbGF0aXZlW3M9YS50eXBlXSlicmVhaztpZigodT1i
LmZpbmRbc10pJiYocj11KGEubWF0Y2hlc1swXS5yZXBsYWNlKHRlLG5lKSxlZS50ZXN0KG9bMF0u
dHlwZSkmJnllKHQucGFyZW50Tm9kZSl8fHQpKSl7aWYoby5zcGxpY2UoaSwxKSwhKGU9ci5sZW5n
dGgmJnhlKG8pKSlyZXR1cm4gSC5hcHBseShuLHIpLG47YnJlYWt9fX1yZXR1cm4obHx8ZihlLGMp
KShyLHQsIUUsbiwhdHx8ZWUudGVzdChlKSYmeWUodC5wYXJlbnROb2RlKXx8dCksbn0sZC5zb3J0
U3RhYmxlPVMuc3BsaXQoIiIpLnNvcnQoRCkuam9pbigiIik9PT1TLGQuZGV0ZWN0RHVwbGljYXRl
cz0hIWwsVCgpLGQuc29ydERldGFjaGVkPWNlKGZ1bmN0aW9uKGUpe3JldHVybiAxJmUuY29tcGFy
ZURvY3VtZW50UG9zaXRpb24oQy5jcmVhdGVFbGVtZW50KCJmaWVsZHNldCIpKX0pLGNlKGZ1bmN0
aW9uKGUpe3JldHVybiBlLmlubmVySFRNTD0iPGEgaHJlZj0nIyc+PC9hPiIsIiMiPT09ZS5maXJz
dENoaWxkLmdldEF0dHJpYnV0ZSgiaHJlZiIpfSl8fGZlKCJ0eXBlfGhyZWZ8aGVpZ2h0fHdpZHRo
IixmdW5jdGlvbihlLHQsbil7aWYoIW4pcmV0dXJuIGUuZ2V0QXR0cmlidXRlKHQsInR5cGUiPT09
dC50b0xvd2VyQ2FzZSgpPzE6Mil9KSxkLmF0dHJpYnV0ZXMmJmNlKGZ1bmN0aW9uKGUpe3JldHVy
biBlLmlubmVySFRNTD0iPGlucHV0Lz4iLGUuZmlyc3RDaGlsZC5zZXRBdHRyaWJ1dGUoInZhbHVl
IiwiIiksIiI9PT1lLmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRlKCJ2YWx1ZSIpfSl8fGZlKCJ2YWx1
ZSIsZnVuY3Rpb24oZSx0LG4pe2lmKCFuJiYiaW5wdXQiPT09ZS5ub2RlTmFtZS50b0xvd2VyQ2Fz
ZSgpKXJldHVybiBlLmRlZmF1bHRWYWx1ZX0pLGNlKGZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1l
LmdldEF0dHJpYnV0ZSgiZGlzYWJsZWQiKX0pfHxmZShSLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcjtp
ZighbilyZXR1cm4hMD09PWVbdF0/dC50b0xvd2VyQ2FzZSgpOihyPWUuZ2V0QXR0cmlidXRlTm9k
ZSh0KSkmJnIuc3BlY2lmaWVkP3IudmFsdWU6bnVsbH0pLHNlfShDKTtTLmZpbmQ9ZCxTLmV4cHI9
ZC5zZWxlY3RvcnMsUy5leHByWyI6Il09Uy5leHByLnBzZXVkb3MsUy51bmlxdWVTb3J0PVMudW5p
cXVlPWQudW5pcXVlU29ydCxTLnRleHQ9ZC5nZXRUZXh0LFMuaXNYTUxEb2M9ZC5pc1hNTCxTLmNv
bnRhaW5zPWQuY29udGFpbnMsUy5lc2NhcGVTZWxlY3Rvcj1kLmVzY2FwZTt2YXIgaD1mdW5jdGlv
bihlLHQsbil7dmFyIHI9W10saT12b2lkIDAhPT1uO3doaWxlKChlPWVbdF0pJiY5IT09ZS5ub2Rl
VHlwZSlpZigxPT09ZS5ub2RlVHlwZSl7aWYoaSYmUyhlKS5pcyhuKSlicmVhaztyLnB1c2goZSl9
cmV0dXJuIHJ9LFQ9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49W107ZTtlPWUubmV4dFNpYmxpbmcp
MT09PWUubm9kZVR5cGUmJmUhPT10JiZuLnB1c2goZSk7cmV0dXJuIG59LGs9Uy5leHByLm1hdGNo
Lm5lZWRzQ29udGV4dDtmdW5jdGlvbiBBKGUsdCl7cmV0dXJuIGUubm9kZU5hbWUmJmUubm9kZU5h
bWUudG9Mb3dlckNhc2UoKT09PXQudG9Mb3dlckNhc2UoKX12YXIgTj0vXjwoW2Etel1bXlwvXDA+
Olx4MjBcdFxyXG5cZl0qKVtceDIwXHRcclxuXGZdKlwvPz4oPzo8XC9cMT58KSQvaTtmdW5jdGlv
biBEKGUsbixyKXtyZXR1cm4gbShuKT9TLmdyZXAoZSxmdW5jdGlvbihlLHQpe3JldHVybiEhbi5j
YWxsKGUsdCxlKSE9PXJ9KTpuLm5vZGVUeXBlP1MuZ3JlcChlLGZ1bmN0aW9uKGUpe3JldHVybiBl
PT09biE9PXJ9KToic3RyaW5nIiE9dHlwZW9mIG4/Uy5ncmVwKGUsZnVuY3Rpb24oZSl7cmV0dXJu
LTE8aS5jYWxsKG4sZSkhPT1yfSk6Uy5maWx0ZXIobixlLHIpfVMuZmlsdGVyPWZ1bmN0aW9uKGUs
dCxuKXt2YXIgcj10WzBdO3JldHVybiBuJiYoZT0iOm5vdCgiK2UrIikiKSwxPT09dC5sZW5ndGgm
JjE9PT1yLm5vZGVUeXBlP1MuZmluZC5tYXRjaGVzU2VsZWN0b3IocixlKT9bcl06W106Uy5maW5k
Lm1hdGNoZXMoZSxTLmdyZXAodCxmdW5jdGlvbihlKXtyZXR1cm4gMT09PWUubm9kZVR5cGV9KSl9
LFMuZm4uZXh0ZW5kKHtmaW5kOmZ1bmN0aW9uKGUpe3ZhciB0LG4scj10aGlzLmxlbmd0aCxpPXRo
aXM7aWYoInN0cmluZyIhPXR5cGVvZiBlKXJldHVybiB0aGlzLnB1c2hTdGFjayhTKGUpLmZpbHRl
cihmdW5jdGlvbigpe2Zvcih0PTA7dDxyO3QrKylpZihTLmNvbnRhaW5zKGlbdF0sdGhpcykpcmV0
dXJuITB9KSk7Zm9yKG49dGhpcy5wdXNoU3RhY2soW10pLHQ9MDt0PHI7dCsrKVMuZmluZChlLGlb
dF0sbik7cmV0dXJuIDE8cj9TLnVuaXF1ZVNvcnQobik6bn0sZmlsdGVyOmZ1bmN0aW9uKGUpe3Jl
dHVybiB0aGlzLnB1c2hTdGFjayhEKHRoaXMsZXx8W10sITEpKX0sbm90OmZ1bmN0aW9uKGUpe3Jl
dHVybiB0aGlzLnB1c2hTdGFjayhEKHRoaXMsZXx8W10sITApKX0saXM6ZnVuY3Rpb24oZSl7cmV0
dXJuISFEKHRoaXMsInN0cmluZyI9PXR5cGVvZiBlJiZrLnRlc3QoZSk/UyhlKTplfHxbXSwhMSku
bGVuZ3RofX0pO3ZhciBqLHE9L14oPzpccyooPFtcd1xXXSs+KVtePl0qfCMoW1x3LV0rKSkkLzso
Uy5mbi5pbml0PWZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpO2lmKCFlKXJldHVybiB0aGlzO2lmKG49
bnx8aiwic3RyaW5nIj09dHlwZW9mIGUpe2lmKCEocj0iPCI9PT1lWzBdJiYiPiI9PT1lW2UubGVu
Z3RoLTFdJiYzPD1lLmxlbmd0aD9bbnVsbCxlLG51bGxdOnEuZXhlYyhlKSl8fCFyWzFdJiZ0KXJl
dHVybiF0fHx0LmpxdWVyeT8odHx8bikuZmluZChlKTp0aGlzLmNvbnN0cnVjdG9yKHQpLmZpbmQo
ZSk7aWYoclsxXSl7aWYodD10IGluc3RhbmNlb2YgUz90WzBdOnQsUy5tZXJnZSh0aGlzLFMucGFy
c2VIVE1MKHJbMV0sdCYmdC5ub2RlVHlwZT90Lm93bmVyRG9jdW1lbnR8fHQ6RSwhMCkpLE4udGVz
dChyWzFdKSYmUy5pc1BsYWluT2JqZWN0KHQpKWZvcihyIGluIHQpbSh0aGlzW3JdKT90aGlzW3Jd
KHRbcl0pOnRoaXMuYXR0cihyLHRbcl0pO3JldHVybiB0aGlzfXJldHVybihpPUUuZ2V0RWxlbWVu
dEJ5SWQoclsyXSkpJiYodGhpc1swXT1pLHRoaXMubGVuZ3RoPTEpLHRoaXN9cmV0dXJuIGUubm9k
ZVR5cGU/KHRoaXNbMF09ZSx0aGlzLmxlbmd0aD0xLHRoaXMpOm0oZSk/dm9pZCAwIT09bi5yZWFk
eT9uLnJlYWR5KGUpOmUoUyk6Uy5tYWtlQXJyYXkoZSx0aGlzKX0pLnByb3RvdHlwZT1TLmZuLGo9
UyhFKTt2YXIgTD0vXig/OnBhcmVudHN8cHJldig/OlVudGlsfEFsbCkpLyxIPXtjaGlsZHJlbjoh
MCxjb250ZW50czohMCxuZXh0OiEwLHByZXY6ITB9O2Z1bmN0aW9uIE8oZSx0KXt3aGlsZSgoZT1l
W3RdKSYmMSE9PWUubm9kZVR5cGUpO3JldHVybiBlfVMuZm4uZXh0ZW5kKHtoYXM6ZnVuY3Rpb24o
ZSl7dmFyIHQ9UyhlLHRoaXMpLG49dC5sZW5ndGg7cmV0dXJuIHRoaXMuZmlsdGVyKGZ1bmN0aW9u
KCl7Zm9yKHZhciBlPTA7ZTxuO2UrKylpZihTLmNvbnRhaW5zKHRoaXMsdFtlXSkpcmV0dXJuITB9
KX0sY2xvc2VzdDpmdW5jdGlvbihlLHQpe3ZhciBuLHI9MCxpPXRoaXMubGVuZ3RoLG89W10sYT0i
c3RyaW5nIiE9dHlwZW9mIGUmJlMoZSk7aWYoIWsudGVzdChlKSlmb3IoO3I8aTtyKyspZm9yKG49
dGhpc1tyXTtuJiZuIT09dDtuPW4ucGFyZW50Tm9kZSlpZihuLm5vZGVUeXBlPDExJiYoYT8tMTxh
LmluZGV4KG4pOjE9PT1uLm5vZGVUeXBlJiZTLmZpbmQubWF0Y2hlc1NlbGVjdG9yKG4sZSkpKXtv
LnB1c2gobik7YnJlYWt9cmV0dXJuIHRoaXMucHVzaFN0YWNrKDE8by5sZW5ndGg/Uy51bmlxdWVT
b3J0KG8pOm8pfSxpbmRleDpmdW5jdGlvbihlKXtyZXR1cm4gZT8ic3RyaW5nIj09dHlwZW9mIGU/
aS5jYWxsKFMoZSksdGhpc1swXSk6aS5jYWxsKHRoaXMsZS5qcXVlcnk/ZVswXTplKTp0aGlzWzBd
JiZ0aGlzWzBdLnBhcmVudE5vZGU/dGhpcy5maXJzdCgpLnByZXZBbGwoKS5sZW5ndGg6LTF9LGFk
ZDpmdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLnB1c2hTdGFjayhTLnVuaXF1ZVNvcnQoUy5tZXJn
ZSh0aGlzLmdldCgpLFMoZSx0KSkpKX0sYWRkQmFjazpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5h
ZGQobnVsbD09ZT90aGlzLnByZXZPYmplY3Q6dGhpcy5wcmV2T2JqZWN0LmZpbHRlcihlKSl9fSks
Uy5lYWNoKHtwYXJlbnQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5wYXJlbnROb2RlO3JldHVybiB0JiYx
MSE9PXQubm9kZVR5cGU/dDpudWxsfSxwYXJlbnRzOmZ1bmN0aW9uKGUpe3JldHVybiBoKGUsInBh
cmVudE5vZGUiKX0scGFyZW50c1VudGlsOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gaChlLCJwYXJl
bnROb2RlIixuKX0sbmV4dDpmdW5jdGlvbihlKXtyZXR1cm4gTyhlLCJuZXh0U2libGluZyIpfSxw
cmV2OmZ1bmN0aW9uKGUpe3JldHVybiBPKGUsInByZXZpb3VzU2libGluZyIpfSxuZXh0QWxsOmZ1
bmN0aW9uKGUpe3JldHVybiBoKGUsIm5leHRTaWJsaW5nIil9LHByZXZBbGw6ZnVuY3Rpb24oZSl7
cmV0dXJuIGgoZSwicHJldmlvdXNTaWJsaW5nIil9LG5leHRVbnRpbDpmdW5jdGlvbihlLHQsbil7
cmV0dXJuIGgoZSwibmV4dFNpYmxpbmciLG4pfSxwcmV2VW50aWw6ZnVuY3Rpb24oZSx0LG4pe3Jl
dHVybiBoKGUsInByZXZpb3VzU2libGluZyIsbil9LHNpYmxpbmdzOmZ1bmN0aW9uKGUpe3JldHVy
biBUKChlLnBhcmVudE5vZGV8fHt9KS5maXJzdENoaWxkLGUpfSxjaGlsZHJlbjpmdW5jdGlvbihl
KXtyZXR1cm4gVChlLmZpcnN0Q2hpbGQpfSxjb250ZW50czpmdW5jdGlvbihlKXtyZXR1cm4gbnVs
bCE9ZS5jb250ZW50RG9jdW1lbnQmJnIoZS5jb250ZW50RG9jdW1lbnQpP2UuY29udGVudERvY3Vt
ZW50OihBKGUsInRlbXBsYXRlIikmJihlPWUuY29udGVudHx8ZSksUy5tZXJnZShbXSxlLmNoaWxk
Tm9kZXMpKX19LGZ1bmN0aW9uKHIsaSl7Uy5mbltyXT1mdW5jdGlvbihlLHQpe3ZhciBuPVMubWFw
KHRoaXMsaSxlKTtyZXR1cm4iVW50aWwiIT09ci5zbGljZSgtNSkmJih0PWUpLHQmJiJzdHJpbmci
PT10eXBlb2YgdCYmKG49Uy5maWx0ZXIodCxuKSksMTx0aGlzLmxlbmd0aCYmKEhbcl18fFMudW5p
cXVlU29ydChuKSxMLnRlc3QocikmJm4ucmV2ZXJzZSgpKSx0aGlzLnB1c2hTdGFjayhuKX19KTt2
YXIgUD0vW15ceDIwXHRcclxuXGZdKy9nO2Z1bmN0aW9uIFIoZSl7cmV0dXJuIGV9ZnVuY3Rpb24g
TShlKXt0aHJvdyBlfWZ1bmN0aW9uIEkoZSx0LG4scil7dmFyIGk7dHJ5e2UmJm0oaT1lLnByb21p
c2UpP2kuY2FsbChlKS5kb25lKHQpLmZhaWwobik6ZSYmbShpPWUudGhlbik/aS5jYWxsKGUsdCxu
KTp0LmFwcGx5KHZvaWQgMCxbZV0uc2xpY2UocikpfWNhdGNoKGUpe24uYXBwbHkodm9pZCAwLFtl
XSl9fVMuQ2FsbGJhY2tzPWZ1bmN0aW9uKHIpe3ZhciBlLG47cj0ic3RyaW5nIj09dHlwZW9mIHI/
KGU9cixuPXt9LFMuZWFjaChlLm1hdGNoKFApfHxbXSxmdW5jdGlvbihlLHQpe25bdF09ITB9KSxu
KTpTLmV4dGVuZCh7fSxyKTt2YXIgaSx0LG8sYSxzPVtdLHU9W10sbD0tMSxjPWZ1bmN0aW9uKCl7
Zm9yKGE9YXx8ci5vbmNlLG89aT0hMDt1Lmxlbmd0aDtsPS0xKXt0PXUuc2hpZnQoKTt3aGlsZSgr
K2w8cy5sZW5ndGgpITE9PT1zW2xdLmFwcGx5KHRbMF0sdFsxXSkmJnIuc3RvcE9uRmFsc2UmJihs
PXMubGVuZ3RoLHQ9ITEpfXIubWVtb3J5fHwodD0hMSksaT0hMSxhJiYocz10P1tdOiIiKX0sZj17
YWRkOmZ1bmN0aW9uKCl7cmV0dXJuIHMmJih0JiYhaSYmKGw9cy5sZW5ndGgtMSx1LnB1c2godCkp
LGZ1bmN0aW9uIG4oZSl7Uy5lYWNoKGUsZnVuY3Rpb24oZSx0KXttKHQpP3IudW5pcXVlJiZmLmhh
cyh0KXx8cy5wdXNoKHQpOnQmJnQubGVuZ3RoJiYic3RyaW5nIiE9PXcodCkmJm4odCl9KX0oYXJn
dW1lbnRzKSx0JiYhaSYmYygpKSx0aGlzfSxyZW1vdmU6ZnVuY3Rpb24oKXtyZXR1cm4gUy5lYWNo
KGFyZ3VtZW50cyxmdW5jdGlvbihlLHQpe3ZhciBuO3doaWxlKC0xPChuPVMuaW5BcnJheSh0LHMs
bikpKXMuc3BsaWNlKG4sMSksbjw9bCYmbC0tfSksdGhpc30saGFzOmZ1bmN0aW9uKGUpe3JldHVy
biBlPy0xPFMuaW5BcnJheShlLHMpOjA8cy5sZW5ndGh9LGVtcHR5OmZ1bmN0aW9uKCl7cmV0dXJu
IHMmJihzPVtdKSx0aGlzfSxkaXNhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIGE9dT1bXSxzPXQ9IiIs
dGhpc30sZGlzYWJsZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hc30sbG9jazpmdW5jdGlvbigpe3JldHVy
biBhPXU9W10sdHx8aXx8KHM9dD0iIiksdGhpc30sbG9ja2VkOmZ1bmN0aW9uKCl7cmV0dXJuISFh
fSxmaXJlV2l0aDpmdW5jdGlvbihlLHQpe3JldHVybiBhfHwodD1bZSwodD10fHxbXSkuc2xpY2U/
dC5zbGljZSgpOnRdLHUucHVzaCh0KSxpfHxjKCkpLHRoaXN9LGZpcmU6ZnVuY3Rpb24oKXtyZXR1
cm4gZi5maXJlV2l0aCh0aGlzLGFyZ3VtZW50cyksdGhpc30sZmlyZWQ6ZnVuY3Rpb24oKXtyZXR1
cm4hIW99fTtyZXR1cm4gZn0sUy5leHRlbmQoe0RlZmVycmVkOmZ1bmN0aW9uKGUpe3ZhciBvPVtb
Im5vdGlmeSIsInByb2dyZXNzIixTLkNhbGxiYWNrcygibWVtb3J5IiksUy5DYWxsYmFja3MoIm1l
bW9yeSIpLDJdLFsicmVzb2x2ZSIsImRvbmUiLFMuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLFMu
Q2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLDAsInJlc29sdmVkIl0sWyJyZWplY3QiLCJmYWlsIixT
LkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSxTLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSwxLCJy
ZWplY3RlZCJdXSxpPSJwZW5kaW5nIixhPXtzdGF0ZTpmdW5jdGlvbigpe3JldHVybiBpfSxhbHdh
eXM6ZnVuY3Rpb24oKXtyZXR1cm4gcy5kb25lKGFyZ3VtZW50cykuZmFpbChhcmd1bWVudHMpLHRo
aXN9LCJjYXRjaCI6ZnVuY3Rpb24oZSl7cmV0dXJuIGEudGhlbihudWxsLGUpfSxwaXBlOmZ1bmN0
aW9uKCl7dmFyIGk9YXJndW1lbnRzO3JldHVybiBTLkRlZmVycmVkKGZ1bmN0aW9uKHIpe1MuZWFj
aChvLGZ1bmN0aW9uKGUsdCl7dmFyIG49bShpW3RbNF1dKSYmaVt0WzRdXTtzW3RbMV1dKGZ1bmN0
aW9uKCl7dmFyIGU9biYmbi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7ZSYmbShlLnByb21pc2UpP2Uu
cHJvbWlzZSgpLnByb2dyZXNzKHIubm90aWZ5KS5kb25lKHIucmVzb2x2ZSkuZmFpbChyLnJlamVj
dCk6clt0WzBdKyJXaXRoIl0odGhpcyxuP1tlXTphcmd1bWVudHMpfSl9KSxpPW51bGx9KS5wcm9t
aXNlKCl9LHRoZW46ZnVuY3Rpb24odCxuLHIpe3ZhciB1PTA7ZnVuY3Rpb24gbChpLG8sYSxzKXty
ZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj10aGlzLHI9YXJndW1lbnRzLGU9ZnVuY3Rpb24oKXt2YXIg
ZSx0O2lmKCEoaTx1KSl7aWYoKGU9YS5hcHBseShuLHIpKT09PW8ucHJvbWlzZSgpKXRocm93IG5l
dyBUeXBlRXJyb3IoIlRoZW5hYmxlIHNlbGYtcmVzb2x1dGlvbiIpO3Q9ZSYmKCJvYmplY3QiPT10
eXBlb2YgZXx8ImZ1bmN0aW9uIj09dHlwZW9mIGUpJiZlLnRoZW4sbSh0KT9zP3QuY2FsbChlLGwo
dSxvLFIscyksbCh1LG8sTSxzKSk6KHUrKyx0LmNhbGwoZSxsKHUsbyxSLHMpLGwodSxvLE0scyks
bCh1LG8sUixvLm5vdGlmeVdpdGgpKSk6KGEhPT1SJiYobj12b2lkIDAscj1bZV0pLChzfHxvLnJl
c29sdmVXaXRoKShuLHIpKX19LHQ9cz9lOmZ1bmN0aW9uKCl7dHJ5e2UoKX1jYXRjaChlKXtTLkRl
ZmVycmVkLmV4Y2VwdGlvbkhvb2smJlMuRGVmZXJyZWQuZXhjZXB0aW9uSG9vayhlLHQuc3RhY2tU
cmFjZSksdTw9aSsxJiYoYSE9PU0mJihuPXZvaWQgMCxyPVtlXSksby5yZWplY3RXaXRoKG4scikp
fX07aT90KCk6KFMuRGVmZXJyZWQuZ2V0U3RhY2tIb29rJiYodC5zdGFja1RyYWNlPVMuRGVmZXJy
ZWQuZ2V0U3RhY2tIb29rKCkpLEMuc2V0VGltZW91dCh0KSl9fXJldHVybiBTLkRlZmVycmVkKGZ1
bmN0aW9uKGUpe29bMF1bM10uYWRkKGwoMCxlLG0ocik/cjpSLGUubm90aWZ5V2l0aCkpLG9bMV1b
M10uYWRkKGwoMCxlLG0odCk/dDpSKSksb1syXVszXS5hZGQobCgwLGUsbShuKT9uOk0pKX0pLnBy
b21pc2UoKX0scHJvbWlzZTpmdW5jdGlvbihlKXtyZXR1cm4gbnVsbCE9ZT9TLmV4dGVuZChlLGEp
OmF9fSxzPXt9O3JldHVybiBTLmVhY2gobyxmdW5jdGlvbihlLHQpe3ZhciBuPXRbMl0scj10WzVd
O2FbdFsxXV09bi5hZGQsciYmbi5hZGQoZnVuY3Rpb24oKXtpPXJ9LG9bMy1lXVsyXS5kaXNhYmxl
LG9bMy1lXVszXS5kaXNhYmxlLG9bMF1bMl0ubG9jayxvWzBdWzNdLmxvY2spLG4uYWRkKHRbM10u
ZmlyZSksc1t0WzBdXT1mdW5jdGlvbigpe3JldHVybiBzW3RbMF0rIldpdGgiXSh0aGlzPT09cz92
b2lkIDA6dGhpcyxhcmd1bWVudHMpLHRoaXN9LHNbdFswXSsiV2l0aCJdPW4uZmlyZVdpdGh9KSxh
LnByb21pc2UocyksZSYmZS5jYWxsKHMscyksc30sd2hlbjpmdW5jdGlvbihlKXt2YXIgbj1hcmd1
bWVudHMubGVuZ3RoLHQ9bixyPUFycmF5KHQpLGk9cy5jYWxsKGFyZ3VtZW50cyksbz1TLkRlZmVy
cmVkKCksYT1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7clt0XT10aGlzLGlbdF09MTxh
cmd1bWVudHMubGVuZ3RoP3MuY2FsbChhcmd1bWVudHMpOmUsLS1ufHxvLnJlc29sdmVXaXRoKHIs
aSl9fTtpZihuPD0xJiYoSShlLG8uZG9uZShhKHQpKS5yZXNvbHZlLG8ucmVqZWN0LCFuKSwicGVu
ZGluZyI9PT1vLnN0YXRlKCl8fG0oaVt0XSYmaVt0XS50aGVuKSkpcmV0dXJuIG8udGhlbigpO3do
aWxlKHQtLSlJKGlbdF0sYSh0KSxvLnJlamVjdCk7cmV0dXJuIG8ucHJvbWlzZSgpfX0pO3ZhciBX
PS9eKEV2YWx8SW50ZXJuYWx8UmFuZ2V8UmVmZXJlbmNlfFN5bnRheHxUeXBlfFVSSSlFcnJvciQv
O1MuRGVmZXJyZWQuZXhjZXB0aW9uSG9vaz1mdW5jdGlvbihlLHQpe0MuY29uc29sZSYmQy5jb25z
b2xlLndhcm4mJmUmJlcudGVzdChlLm5hbWUpJiZDLmNvbnNvbGUud2FybigialF1ZXJ5LkRlZmVy
cmVkIGV4Y2VwdGlvbjogIitlLm1lc3NhZ2UsZS5zdGFjayx0KX0sUy5yZWFkeUV4Y2VwdGlvbj1m
dW5jdGlvbihlKXtDLnNldFRpbWVvdXQoZnVuY3Rpb24oKXt0aHJvdyBlfSl9O3ZhciBGPVMuRGVm
ZXJyZWQoKTtmdW5jdGlvbiBCKCl7RS5yZW1vdmVFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9h
ZGVkIixCKSxDLnJlbW92ZUV2ZW50TGlzdGVuZXIoImxvYWQiLEIpLFMucmVhZHkoKX1TLmZuLnJl
YWR5PWZ1bmN0aW9uKGUpe3JldHVybiBGLnRoZW4oZSlbImNhdGNoIl0oZnVuY3Rpb24oZSl7Uy5y
ZWFkeUV4Y2VwdGlvbihlKX0pLHRoaXN9LFMuZXh0ZW5kKHtpc1JlYWR5OiExLHJlYWR5V2FpdDox
LHJlYWR5OmZ1bmN0aW9uKGUpeyghMD09PWU/LS1TLnJlYWR5V2FpdDpTLmlzUmVhZHkpfHwoUy5p
c1JlYWR5PSEwKSE9PWUmJjA8LS1TLnJlYWR5V2FpdHx8Ri5yZXNvbHZlV2l0aChFLFtTXSl9fSks
Uy5yZWFkeS50aGVuPUYudGhlbiwiY29tcGxldGUiPT09RS5yZWFkeVN0YXRlfHwibG9hZGluZyIh
PT1FLnJlYWR5U3RhdGUmJiFFLmRvY3VtZW50RWxlbWVudC5kb1Njcm9sbD9DLnNldFRpbWVvdXQo
Uy5yZWFkeSk6KEUuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsQiksQy5hZGRF
dmVudExpc3RlbmVyKCJsb2FkIixCKSk7dmFyICQ9ZnVuY3Rpb24oZSx0LG4scixpLG8sYSl7dmFy
IHM9MCx1PWUubGVuZ3RoLGw9bnVsbD09bjtpZigib2JqZWN0Ij09PXcobikpZm9yKHMgaW4gaT0h
MCxuKSQoZSx0LHMsbltzXSwhMCxvLGEpO2Vsc2UgaWYodm9pZCAwIT09ciYmKGk9ITAsbShyKXx8
KGE9ITApLGwmJihhPyh0LmNhbGwoZSxyKSx0PW51bGwpOihsPXQsdD1mdW5jdGlvbihlLHQsbil7
cmV0dXJuIGwuY2FsbChTKGUpLG4pfSkpLHQpKWZvcig7czx1O3MrKyl0KGVbc10sbixhP3I6ci5j
YWxsKGVbc10scyx0KGVbc10sbikpKTtyZXR1cm4gaT9lOmw/dC5jYWxsKGUpOnU/dChlWzBdLG4p
Om99LF89L14tbXMtLyx6PS8tKFthLXpdKS9nO2Z1bmN0aW9uIFUoZSx0KXtyZXR1cm4gdC50b1Vw
cGVyQ2FzZSgpfWZ1bmN0aW9uIFgoZSl7cmV0dXJuIGUucmVwbGFjZShfLCJtcy0iKS5yZXBsYWNl
KHosVSl9dmFyIFY9ZnVuY3Rpb24oZSl7cmV0dXJuIDE9PT1lLm5vZGVUeXBlfHw5PT09ZS5ub2Rl
VHlwZXx8IStlLm5vZGVUeXBlfTtmdW5jdGlvbiBHKCl7dGhpcy5leHBhbmRvPVMuZXhwYW5kbytH
LnVpZCsrfUcudWlkPTEsRy5wcm90b3R5cGU9e2NhY2hlOmZ1bmN0aW9uKGUpe3ZhciB0PWVbdGhp
cy5leHBhbmRvXTtyZXR1cm4gdHx8KHQ9e30sVihlKSYmKGUubm9kZVR5cGU/ZVt0aGlzLmV4cGFu
ZG9dPXQ6T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdGhpcy5leHBhbmRvLHt2YWx1ZTp0LGNvbmZp
Z3VyYWJsZTohMH0pKSksdH0sc2V0OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpPXRoaXMuY2FjaGUo
ZSk7aWYoInN0cmluZyI9PXR5cGVvZiB0KWlbWCh0KV09bjtlbHNlIGZvcihyIGluIHQpaVtYKHIp
XT10W3JdO3JldHVybiBpfSxnZXQ6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdm9pZCAwPT09dD90aGlz
LmNhY2hlKGUpOmVbdGhpcy5leHBhbmRvXSYmZVt0aGlzLmV4cGFuZG9dW1godCldfSxhY2Nlc3M6
ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB2b2lkIDA9PT10fHx0JiYic3RyaW5nIj09dHlwZW9mIHQm
JnZvaWQgMD09PW4/dGhpcy5nZXQoZSx0KToodGhpcy5zZXQoZSx0LG4pLHZvaWQgMCE9PW4/bjp0
KX0scmVtb3ZlOmZ1bmN0aW9uKGUsdCl7dmFyIG4scj1lW3RoaXMuZXhwYW5kb107aWYodm9pZCAw
IT09cil7aWYodm9pZCAwIT09dCl7bj0odD1BcnJheS5pc0FycmF5KHQpP3QubWFwKFgpOih0PVgo
dCkpaW4gcj9bdF06dC5tYXRjaChQKXx8W10pLmxlbmd0aDt3aGlsZShuLS0pZGVsZXRlIHJbdFtu
XV19KHZvaWQgMD09PXR8fFMuaXNFbXB0eU9iamVjdChyKSkmJihlLm5vZGVUeXBlP2VbdGhpcy5l
eHBhbmRvXT12b2lkIDA6ZGVsZXRlIGVbdGhpcy5leHBhbmRvXSl9fSxoYXNEYXRhOmZ1bmN0aW9u
KGUpe3ZhciB0PWVbdGhpcy5leHBhbmRvXTtyZXR1cm4gdm9pZCAwIT09dCYmIVMuaXNFbXB0eU9i
amVjdCh0KX19O3ZhciBZPW5ldyBHLFE9bmV3IEcsSj0vXig/Olx7W1x3XFddKlx9fFxbW1x3XFdd
KlxdKSQvLEs9L1tBLVpdL2c7ZnVuY3Rpb24gWihlLHQsbil7dmFyIHIsaTtpZih2b2lkIDA9PT1u
JiYxPT09ZS5ub2RlVHlwZSlpZihyPSJkYXRhLSIrdC5yZXBsYWNlKEssIi0kJiIpLnRvTG93ZXJD
YXNlKCksInN0cmluZyI9PXR5cGVvZihuPWUuZ2V0QXR0cmlidXRlKHIpKSl7dHJ5e249InRydWUi
PT09KGk9bil8fCJmYWxzZSIhPT1pJiYoIm51bGwiPT09aT9udWxsOmk9PT0raSsiIj8raTpKLnRl
c3QoaSk/SlNPTi5wYXJzZShpKTppKX1jYXRjaChlKXt9US5zZXQoZSx0LG4pfWVsc2Ugbj12b2lk
IDA7cmV0dXJuIG59Uy5leHRlbmQoe2hhc0RhdGE6ZnVuY3Rpb24oZSl7cmV0dXJuIFEuaGFzRGF0
YShlKXx8WS5oYXNEYXRhKGUpfSxkYXRhOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gUS5hY2Nlc3Mo
ZSx0LG4pfSxyZW1vdmVEYXRhOmZ1bmN0aW9uKGUsdCl7US5yZW1vdmUoZSx0KX0sX2RhdGE6ZnVu
Y3Rpb24oZSx0LG4pe3JldHVybiBZLmFjY2VzcyhlLHQsbil9LF9yZW1vdmVEYXRhOmZ1bmN0aW9u
KGUsdCl7WS5yZW1vdmUoZSx0KX19KSxTLmZuLmV4dGVuZCh7ZGF0YTpmdW5jdGlvbihuLGUpe3Zh
ciB0LHIsaSxvPXRoaXNbMF0sYT1vJiZvLmF0dHJpYnV0ZXM7aWYodm9pZCAwPT09bil7aWYodGhp
cy5sZW5ndGgmJihpPVEuZ2V0KG8pLDE9PT1vLm5vZGVUeXBlJiYhWS5nZXQobywiaGFzRGF0YUF0
dHJzIikpKXt0PWEubGVuZ3RoO3doaWxlKHQtLSlhW3RdJiYwPT09KHI9YVt0XS5uYW1lKS5pbmRl
eE9mKCJkYXRhLSIpJiYocj1YKHIuc2xpY2UoNSkpLFoobyxyLGlbcl0pKTtZLnNldChvLCJoYXNE
YXRhQXR0cnMiLCEwKX1yZXR1cm4gaX1yZXR1cm4ib2JqZWN0Ij09dHlwZW9mIG4/dGhpcy5lYWNo
KGZ1bmN0aW9uKCl7US5zZXQodGhpcyxuKX0pOiQodGhpcyxmdW5jdGlvbihlKXt2YXIgdDtpZihv
JiZ2b2lkIDA9PT1lKXJldHVybiB2b2lkIDAhPT0odD1RLmdldChvLG4pKT90OnZvaWQgMCE9PSh0
PVoobyxuKSk/dDp2b2lkIDA7dGhpcy5lYWNoKGZ1bmN0aW9uKCl7US5zZXQodGhpcyxuLGUpfSl9
LG51bGwsZSwxPGFyZ3VtZW50cy5sZW5ndGgsbnVsbCwhMCl9LHJlbW92ZURhdGE6ZnVuY3Rpb24o
ZSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe1EucmVtb3ZlKHRoaXMsZSl9KX19KSxTLmV4
dGVuZCh7cXVldWU6ZnVuY3Rpb24oZSx0LG4pe3ZhciByO2lmKGUpcmV0dXJuIHQ9KHR8fCJmeCIp
KyJxdWV1ZSIscj1ZLmdldChlLHQpLG4mJighcnx8QXJyYXkuaXNBcnJheShuKT9yPVkuYWNjZXNz
KGUsdCxTLm1ha2VBcnJheShuKSk6ci5wdXNoKG4pKSxyfHxbXX0sZGVxdWV1ZTpmdW5jdGlvbihl
LHQpe3Q9dHx8ImZ4Ijt2YXIgbj1TLnF1ZXVlKGUsdCkscj1uLmxlbmd0aCxpPW4uc2hpZnQoKSxv
PVMuX3F1ZXVlSG9va3MoZSx0KTsiaW5wcm9ncmVzcyI9PT1pJiYoaT1uLnNoaWZ0KCksci0tKSxp
JiYoImZ4Ij09PXQmJm4udW5zaGlmdCgiaW5wcm9ncmVzcyIpLGRlbGV0ZSBvLnN0b3AsaS5jYWxs
KGUsZnVuY3Rpb24oKXtTLmRlcXVldWUoZSx0KX0sbykpLCFyJiZvJiZvLmVtcHR5LmZpcmUoKX0s
X3F1ZXVlSG9va3M6ZnVuY3Rpb24oZSx0KXt2YXIgbj10KyJxdWV1ZUhvb2tzIjtyZXR1cm4gWS5n
ZXQoZSxuKXx8WS5hY2Nlc3MoZSxuLHtlbXB0eTpTLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKS5h
ZGQoZnVuY3Rpb24oKXtZLnJlbW92ZShlLFt0KyJxdWV1ZSIsbl0pfSl9KX19KSxTLmZuLmV4dGVu
ZCh7cXVldWU6ZnVuY3Rpb24odCxuKXt2YXIgZT0yO3JldHVybiJzdHJpbmciIT10eXBlb2YgdCYm
KG49dCx0PSJmeCIsZS0tKSxhcmd1bWVudHMubGVuZ3RoPGU/Uy5xdWV1ZSh0aGlzWzBdLHQpOnZv
aWQgMD09PW4/dGhpczp0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZT1TLnF1ZXVlKHRoaXMsdCxu
KTtTLl9xdWV1ZUhvb2tzKHRoaXMsdCksImZ4Ij09PXQmJiJpbnByb2dyZXNzIiE9PWVbMF0mJlMu
ZGVxdWV1ZSh0aGlzLHQpfSl9LGRlcXVldWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZWFjaChm
dW5jdGlvbigpe1MuZGVxdWV1ZSh0aGlzLGUpfSl9LGNsZWFyUXVldWU6ZnVuY3Rpb24oZSl7cmV0
dXJuIHRoaXMucXVldWUoZXx8ImZ4IixbXSl9LHByb21pc2U6ZnVuY3Rpb24oZSx0KXt2YXIgbixy
PTEsaT1TLkRlZmVycmVkKCksbz10aGlzLGE9dGhpcy5sZW5ndGgscz1mdW5jdGlvbigpey0tcnx8
aS5yZXNvbHZlV2l0aChvLFtvXSl9OyJzdHJpbmciIT10eXBlb2YgZSYmKHQ9ZSxlPXZvaWQgMCks
ZT1lfHwiZngiO3doaWxlKGEtLSkobj1ZLmdldChvW2FdLGUrInF1ZXVlSG9va3MiKSkmJm4uZW1w
dHkmJihyKyssbi5lbXB0eS5hZGQocykpO3JldHVybiBzKCksaS5wcm9taXNlKHQpfX0pO3ZhciBl
ZT0vWystXT8oPzpcZCpcLnwpXGQrKD86W2VFXVsrLV0/XGQrfCkvLnNvdXJjZSx0ZT1uZXcgUmVn
RXhwKCJeKD86KFsrLV0pPXwpKCIrZWUrIikoW2EteiVdKikkIiwiaSIpLG5lPVsiVG9wIiwiUmln
aHQiLCJCb3R0b20iLCJMZWZ0Il0scmU9RS5kb2N1bWVudEVsZW1lbnQsaWU9ZnVuY3Rpb24oZSl7
cmV0dXJuIFMuY29udGFpbnMoZS5vd25lckRvY3VtZW50LGUpfSxvZT17Y29tcG9zZWQ6ITB9O3Jl
LmdldFJvb3ROb2RlJiYoaWU9ZnVuY3Rpb24oZSl7cmV0dXJuIFMuY29udGFpbnMoZS5vd25lckRv
Y3VtZW50LGUpfHxlLmdldFJvb3ROb2RlKG9lKT09PWUub3duZXJEb2N1bWVudH0pO3ZhciBhZT1m
dW5jdGlvbihlLHQpe3JldHVybiJub25lIj09PShlPXR8fGUpLnN0eWxlLmRpc3BsYXl8fCIiPT09
ZS5zdHlsZS5kaXNwbGF5JiZpZShlKSYmIm5vbmUiPT09Uy5jc3MoZSwiZGlzcGxheSIpfTtmdW5j
dGlvbiBzZShlLHQsbixyKXt2YXIgaSxvLGE9MjAscz1yP2Z1bmN0aW9uKCl7cmV0dXJuIHIuY3Vy
KCl9OmZ1bmN0aW9uKCl7cmV0dXJuIFMuY3NzKGUsdCwiIil9LHU9cygpLGw9biYmblszXXx8KFMu
Y3NzTnVtYmVyW3RdPyIiOiJweCIpLGM9ZS5ub2RlVHlwZSYmKFMuY3NzTnVtYmVyW3RdfHwicHgi
IT09bCYmK3UpJiZ0ZS5leGVjKFMuY3NzKGUsdCkpO2lmKGMmJmNbM10hPT1sKXt1Lz0yLGw9bHx8
Y1szXSxjPSt1fHwxO3doaWxlKGEtLSlTLnN0eWxlKGUsdCxjK2wpLCgxLW8pKigxLShvPXMoKS91
fHwuNSkpPD0wJiYoYT0wKSxjLz1vO2MqPTIsUy5zdHlsZShlLHQsYytsKSxuPW58fFtdfXJldHVy
biBuJiYoYz0rY3x8K3V8fDAsaT1uWzFdP2MrKG5bMV0rMSkqblsyXTorblsyXSxyJiYoci51bml0
PWwsci5zdGFydD1jLHIuZW5kPWkpKSxpfXZhciB1ZT17fTtmdW5jdGlvbiBsZShlLHQpe2Zvcih2
YXIgbixyLGksbyxhLHMsdSxsPVtdLGM9MCxmPWUubGVuZ3RoO2M8ZjtjKyspKHI9ZVtjXSkuc3R5
bGUmJihuPXIuc3R5bGUuZGlzcGxheSx0Pygibm9uZSI9PT1uJiYobFtjXT1ZLmdldChyLCJkaXNw
bGF5Iil8fG51bGwsbFtjXXx8KHIuc3R5bGUuZGlzcGxheT0iIikpLCIiPT09ci5zdHlsZS5kaXNw
bGF5JiZhZShyKSYmKGxbY109KHU9YT1vPXZvaWQgMCxhPShpPXIpLm93bmVyRG9jdW1lbnQscz1p
Lm5vZGVOYW1lLCh1PXVlW3NdKXx8KG89YS5ib2R5LmFwcGVuZENoaWxkKGEuY3JlYXRlRWxlbWVu
dChzKSksdT1TLmNzcyhvLCJkaXNwbGF5Iiksby5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKG8pLCJu
b25lIj09PXUmJih1PSJibG9jayIpLHVlW3NdPXUpKSkpOiJub25lIiE9PW4mJihsW2NdPSJub25l
IixZLnNldChyLCJkaXNwbGF5IixuKSkpO2ZvcihjPTA7YzxmO2MrKyludWxsIT1sW2NdJiYoZVtj
XS5zdHlsZS5kaXNwbGF5PWxbY10pO3JldHVybiBlfVMuZm4uZXh0ZW5kKHtzaG93OmZ1bmN0aW9u
KCl7cmV0dXJuIGxlKHRoaXMsITApfSxoaWRlOmZ1bmN0aW9uKCl7cmV0dXJuIGxlKHRoaXMpfSx0
b2dnbGU6ZnVuY3Rpb24oZSl7cmV0dXJuImJvb2xlYW4iPT10eXBlb2YgZT9lP3RoaXMuc2hvdygp
OnRoaXMuaGlkZSgpOnRoaXMuZWFjaChmdW5jdGlvbigpe2FlKHRoaXMpP1ModGhpcykuc2hvdygp
OlModGhpcykuaGlkZSgpfSl9fSk7dmFyIGNlLGZlLHBlPS9eKD86Y2hlY2tib3h8cmFkaW8pJC9p
LGRlPS88KFthLXpdW15cL1wwPlx4MjBcdFxyXG5cZl0qKS9pLGhlPS9eJHxebW9kdWxlJHxcLyg/
OmphdmF8ZWNtYSlzY3JpcHQvaTtjZT1FLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKS5hcHBlbmRD
aGlsZChFLmNyZWF0ZUVsZW1lbnQoImRpdiIpKSwoZmU9RS5jcmVhdGVFbGVtZW50KCJpbnB1dCIp
KS5zZXRBdHRyaWJ1dGUoInR5cGUiLCJyYWRpbyIpLGZlLnNldEF0dHJpYnV0ZSgiY2hlY2tlZCIs
ImNoZWNrZWQiKSxmZS5zZXRBdHRyaWJ1dGUoIm5hbWUiLCJ0IiksY2UuYXBwZW5kQ2hpbGQoZmUp
LHkuY2hlY2tDbG9uZT1jZS5jbG9uZU5vZGUoITApLmNsb25lTm9kZSghMCkubGFzdENoaWxkLmNo
ZWNrZWQsY2UuaW5uZXJIVE1MPSI8dGV4dGFyZWE+eDwvdGV4dGFyZWE+Iix5Lm5vQ2xvbmVDaGVj
a2VkPSEhY2UuY2xvbmVOb2RlKCEwKS5sYXN0Q2hpbGQuZGVmYXVsdFZhbHVlLGNlLmlubmVySFRN
TD0iPG9wdGlvbj48L29wdGlvbj4iLHkub3B0aW9uPSEhY2UubGFzdENoaWxkO3ZhciBnZT17dGhl
YWQ6WzEsIjx0YWJsZT4iLCI8L3RhYmxlPiJdLGNvbDpbMiwiPHRhYmxlPjxjb2xncm91cD4iLCI8
L2NvbGdyb3VwPjwvdGFibGU+Il0sdHI6WzIsIjx0YWJsZT48dGJvZHk+IiwiPC90Ym9keT48L3Rh
YmxlPiJdLHRkOlszLCI8dGFibGU+PHRib2R5Pjx0cj4iLCI8L3RyPjwvdGJvZHk+PC90YWJsZT4i
XSxfZGVmYXVsdDpbMCwiIiwiIl19O2Z1bmN0aW9uIHZlKGUsdCl7dmFyIG47cmV0dXJuIG49InVu
ZGVmaW5lZCIhPXR5cGVvZiBlLmdldEVsZW1lbnRzQnlUYWdOYW1lP2UuZ2V0RWxlbWVudHNCeVRh
Z05hbWUodHx8IioiKToidW5kZWZpbmVkIiE9dHlwZW9mIGUucXVlcnlTZWxlY3RvckFsbD9lLnF1
ZXJ5U2VsZWN0b3JBbGwodHx8IioiKTpbXSx2b2lkIDA9PT10fHx0JiZBKGUsdCk/Uy5tZXJnZShb
ZV0sbik6bn1mdW5jdGlvbiB5ZShlLHQpe2Zvcih2YXIgbj0wLHI9ZS5sZW5ndGg7bjxyO24rKylZ
LnNldChlW25dLCJnbG9iYWxFdmFsIiwhdHx8WS5nZXQodFtuXSwiZ2xvYmFsRXZhbCIpKX1nZS50
Ym9keT1nZS50Zm9vdD1nZS5jb2xncm91cD1nZS5jYXB0aW9uPWdlLnRoZWFkLGdlLnRoPWdlLnRk
LHkub3B0aW9ufHwoZ2Uub3B0Z3JvdXA9Z2Uub3B0aW9uPVsxLCI8c2VsZWN0IG11bHRpcGxlPSdt
dWx0aXBsZSc+IiwiPC9zZWxlY3Q+Il0pO3ZhciBtZT0vPHwmIz9cdys7LztmdW5jdGlvbiB4ZShl
LHQsbixyLGkpe2Zvcih2YXIgbyxhLHMsdSxsLGMsZj10LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQo
KSxwPVtdLGQ9MCxoPWUubGVuZ3RoO2Q8aDtkKyspaWYoKG89ZVtkXSl8fDA9PT1vKWlmKCJvYmpl
Y3QiPT09dyhvKSlTLm1lcmdlKHAsby5ub2RlVHlwZT9bb106byk7ZWxzZSBpZihtZS50ZXN0KG8p
KXthPWF8fGYuYXBwZW5kQ2hpbGQodC5jcmVhdGVFbGVtZW50KCJkaXYiKSkscz0oZGUuZXhlYyhv
KXx8WyIiLCIiXSlbMV0udG9Mb3dlckNhc2UoKSx1PWdlW3NdfHxnZS5fZGVmYXVsdCxhLmlubmVy
SFRNTD11WzFdK1MuaHRtbFByZWZpbHRlcihvKSt1WzJdLGM9dVswXTt3aGlsZShjLS0pYT1hLmxh
c3RDaGlsZDtTLm1lcmdlKHAsYS5jaGlsZE5vZGVzKSwoYT1mLmZpcnN0Q2hpbGQpLnRleHRDb250
ZW50PSIifWVsc2UgcC5wdXNoKHQuY3JlYXRlVGV4dE5vZGUobykpO2YudGV4dENvbnRlbnQ9IiIs
ZD0wO3doaWxlKG89cFtkKytdKWlmKHImJi0xPFMuaW5BcnJheShvLHIpKWkmJmkucHVzaChvKTtl
bHNlIGlmKGw9aWUobyksYT12ZShmLmFwcGVuZENoaWxkKG8pLCJzY3JpcHQiKSxsJiZ5ZShhKSxu
KXtjPTA7d2hpbGUobz1hW2MrK10paGUudGVzdChvLnR5cGV8fCIiKSYmbi5wdXNoKG8pfXJldHVy
biBmfXZhciBiZT0vXmtleS8sd2U9L14oPzptb3VzZXxwb2ludGVyfGNvbnRleHRtZW51fGRyYWd8
ZHJvcCl8Y2xpY2svLFRlPS9eKFteLl0qKSg/OlwuKC4rKXwpLztmdW5jdGlvbiBDZSgpe3JldHVy
biEwfWZ1bmN0aW9uIEVlKCl7cmV0dXJuITF9ZnVuY3Rpb24gU2UoZSx0KXtyZXR1cm4gZT09PWZ1
bmN0aW9uKCl7dHJ5e3JldHVybiBFLmFjdGl2ZUVsZW1lbnR9Y2F0Y2goZSl7fX0oKT09KCJmb2N1
cyI9PT10KX1mdW5jdGlvbiBrZShlLHQsbixyLGksbyl7dmFyIGEscztpZigib2JqZWN0Ij09dHlw
ZW9mIHQpe2ZvcihzIGluInN0cmluZyIhPXR5cGVvZiBuJiYocj1yfHxuLG49dm9pZCAwKSx0KWtl
KGUscyxuLHIsdFtzXSxvKTtyZXR1cm4gZX1pZihudWxsPT1yJiZudWxsPT1pPyhpPW4scj1uPXZv
aWQgMCk6bnVsbD09aSYmKCJzdHJpbmciPT10eXBlb2Ygbj8oaT1yLHI9dm9pZCAwKTooaT1yLHI9
bixuPXZvaWQgMCkpLCExPT09aSlpPUVlO2Vsc2UgaWYoIWkpcmV0dXJuIGU7cmV0dXJuIDE9PT1v
JiYoYT1pLChpPWZ1bmN0aW9uKGUpe3JldHVybiBTKCkub2ZmKGUpLGEuYXBwbHkodGhpcyxhcmd1
bWVudHMpfSkuZ3VpZD1hLmd1aWR8fChhLmd1aWQ9Uy5ndWlkKyspKSxlLmVhY2goZnVuY3Rpb24o
KXtTLmV2ZW50LmFkZCh0aGlzLHQsaSxyLG4pfSl9ZnVuY3Rpb24gQWUoZSxpLG8pe28/KFkuc2V0
KGUsaSwhMSksUy5ldmVudC5hZGQoZSxpLHtuYW1lc3BhY2U6ITEsaGFuZGxlcjpmdW5jdGlvbihl
KXt2YXIgdCxuLHI9WS5nZXQodGhpcyxpKTtpZigxJmUuaXNUcmlnZ2VyJiZ0aGlzW2ldKXtpZihy
Lmxlbmd0aCkoUy5ldmVudC5zcGVjaWFsW2ldfHx7fSkuZGVsZWdhdGVUeXBlJiZlLnN0b3BQcm9w
YWdhdGlvbigpO2Vsc2UgaWYocj1zLmNhbGwoYXJndW1lbnRzKSxZLnNldCh0aGlzLGksciksdD1v
KHRoaXMsaSksdGhpc1tpXSgpLHIhPT0obj1ZLmdldCh0aGlzLGkpKXx8dD9ZLnNldCh0aGlzLGks
ITEpOm49e30sciE9PW4pcmV0dXJuIGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCksZS5wcmV2
ZW50RGVmYXVsdCgpLG4udmFsdWV9ZWxzZSByLmxlbmd0aCYmKFkuc2V0KHRoaXMsaSx7dmFsdWU6
Uy5ldmVudC50cmlnZ2VyKFMuZXh0ZW5kKHJbMF0sUy5FdmVudC5wcm90b3R5cGUpLHIuc2xpY2Uo
MSksdGhpcyl9KSxlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpKX19KSk6dm9pZCAwPT09WS5n
ZXQoZSxpKSYmUy5ldmVudC5hZGQoZSxpLENlKX1TLmV2ZW50PXtnbG9iYWw6e30sYWRkOmZ1bmN0
aW9uKHQsZSxuLHIsaSl7dmFyIG8sYSxzLHUsbCxjLGYscCxkLGgsZyx2PVkuZ2V0KHQpO2lmKFYo
dCkpe24uaGFuZGxlciYmKG49KG89bikuaGFuZGxlcixpPW8uc2VsZWN0b3IpLGkmJlMuZmluZC5t
YXRjaGVzU2VsZWN0b3IocmUsaSksbi5ndWlkfHwobi5ndWlkPVMuZ3VpZCsrKSwodT12LmV2ZW50
cyl8fCh1PXYuZXZlbnRzPU9iamVjdC5jcmVhdGUobnVsbCkpLChhPXYuaGFuZGxlKXx8KGE9di5o
YW5kbGU9ZnVuY3Rpb24oZSl7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiBTJiZTLmV2ZW50LnRy
aWdnZXJlZCE9PWUudHlwZT9TLmV2ZW50LmRpc3BhdGNoLmFwcGx5KHQsYXJndW1lbnRzKTp2b2lk
IDB9KSxsPShlPShlfHwiIikubWF0Y2goUCl8fFsiIl0pLmxlbmd0aDt3aGlsZShsLS0pZD1nPShz
PVRlLmV4ZWMoZVtsXSl8fFtdKVsxXSxoPShzWzJdfHwiIikuc3BsaXQoIi4iKS5zb3J0KCksZCYm
KGY9Uy5ldmVudC5zcGVjaWFsW2RdfHx7fSxkPShpP2YuZGVsZWdhdGVUeXBlOmYuYmluZFR5cGUp
fHxkLGY9Uy5ldmVudC5zcGVjaWFsW2RdfHx7fSxjPVMuZXh0ZW5kKHt0eXBlOmQsb3JpZ1R5cGU6
ZyxkYXRhOnIsaGFuZGxlcjpuLGd1aWQ6bi5ndWlkLHNlbGVjdG9yOmksbmVlZHNDb250ZXh0Omkm
JlMuZXhwci5tYXRjaC5uZWVkc0NvbnRleHQudGVzdChpKSxuYW1lc3BhY2U6aC5qb2luKCIuIil9
LG8pLChwPXVbZF0pfHwoKHA9dVtkXT1bXSkuZGVsZWdhdGVDb3VudD0wLGYuc2V0dXAmJiExIT09
Zi5zZXR1cC5jYWxsKHQscixoLGEpfHx0LmFkZEV2ZW50TGlzdGVuZXImJnQuYWRkRXZlbnRMaXN0
ZW5lcihkLGEpKSxmLmFkZCYmKGYuYWRkLmNhbGwodCxjKSxjLmhhbmRsZXIuZ3VpZHx8KGMuaGFu
ZGxlci5ndWlkPW4uZ3VpZCkpLGk/cC5zcGxpY2UocC5kZWxlZ2F0ZUNvdW50KyssMCxjKTpwLnB1
c2goYyksUy5ldmVudC5nbG9iYWxbZF09ITApfX0scmVtb3ZlOmZ1bmN0aW9uKGUsdCxuLHIsaSl7
dmFyIG8sYSxzLHUsbCxjLGYscCxkLGgsZyx2PVkuaGFzRGF0YShlKSYmWS5nZXQoZSk7aWYodiYm
KHU9di5ldmVudHMpKXtsPSh0PSh0fHwiIikubWF0Y2goUCl8fFsiIl0pLmxlbmd0aDt3aGlsZShs
LS0paWYoZD1nPShzPVRlLmV4ZWModFtsXSl8fFtdKVsxXSxoPShzWzJdfHwiIikuc3BsaXQoIi4i
KS5zb3J0KCksZCl7Zj1TLmV2ZW50LnNwZWNpYWxbZF18fHt9LHA9dVtkPShyP2YuZGVsZWdhdGVU
eXBlOmYuYmluZFR5cGUpfHxkXXx8W10scz1zWzJdJiZuZXcgUmVnRXhwKCIoXnxcXC4pIitoLmpv
aW4oIlxcLig/Oi4qXFwufCkiKSsiKFxcLnwkKSIpLGE9bz1wLmxlbmd0aDt3aGlsZShvLS0pYz1w
W29dLCFpJiZnIT09Yy5vcmlnVHlwZXx8biYmbi5ndWlkIT09Yy5ndWlkfHxzJiYhcy50ZXN0KGMu
bmFtZXNwYWNlKXx8ciYmciE9PWMuc2VsZWN0b3ImJigiKioiIT09cnx8IWMuc2VsZWN0b3IpfHwo
cC5zcGxpY2UobywxKSxjLnNlbGVjdG9yJiZwLmRlbGVnYXRlQ291bnQtLSxmLnJlbW92ZSYmZi5y
ZW1vdmUuY2FsbChlLGMpKTthJiYhcC5sZW5ndGgmJihmLnRlYXJkb3duJiYhMSE9PWYudGVhcmRv
d24uY2FsbChlLGgsdi5oYW5kbGUpfHxTLnJlbW92ZUV2ZW50KGUsZCx2LmhhbmRsZSksZGVsZXRl
IHVbZF0pfWVsc2UgZm9yKGQgaW4gdSlTLmV2ZW50LnJlbW92ZShlLGQrdFtsXSxuLHIsITApO1Mu
aXNFbXB0eU9iamVjdCh1KSYmWS5yZW1vdmUoZSwiaGFuZGxlIGV2ZW50cyIpfX0sZGlzcGF0Y2g6
ZnVuY3Rpb24oZSl7dmFyIHQsbixyLGksbyxhLHM9bmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGgp
LHU9Uy5ldmVudC5maXgoZSksbD0oWS5nZXQodGhpcywiZXZlbnRzIil8fE9iamVjdC5jcmVhdGUo
bnVsbCkpW3UudHlwZV18fFtdLGM9Uy5ldmVudC5zcGVjaWFsW3UudHlwZV18fHt9O2ZvcihzWzBd
PXUsdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspc1t0XT1hcmd1bWVudHNbdF07aWYodS5kZWxl
Z2F0ZVRhcmdldD10aGlzLCFjLnByZURpc3BhdGNofHwhMSE9PWMucHJlRGlzcGF0Y2guY2FsbCh0
aGlzLHUpKXthPVMuZXZlbnQuaGFuZGxlcnMuY2FsbCh0aGlzLHUsbCksdD0wO3doaWxlKChpPWFb
dCsrXSkmJiF1LmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpe3UuY3VycmVudFRhcmdldD1pLmVsZW0s
bj0wO3doaWxlKChvPWkuaGFuZGxlcnNbbisrXSkmJiF1LmlzSW1tZWRpYXRlUHJvcGFnYXRpb25T
dG9wcGVkKCkpdS5ybmFtZXNwYWNlJiYhMSE9PW8ubmFtZXNwYWNlJiYhdS5ybmFtZXNwYWNlLnRl
c3Qoby5uYW1lc3BhY2UpfHwodS5oYW5kbGVPYmo9byx1LmRhdGE9by5kYXRhLHZvaWQgMCE9PShy
PSgoUy5ldmVudC5zcGVjaWFsW28ub3JpZ1R5cGVdfHx7fSkuaGFuZGxlfHxvLmhhbmRsZXIpLmFw
cGx5KGkuZWxlbSxzKSkmJiExPT09KHUucmVzdWx0PXIpJiYodS5wcmV2ZW50RGVmYXVsdCgpLHUu
c3RvcFByb3BhZ2F0aW9uKCkpKX1yZXR1cm4gYy5wb3N0RGlzcGF0Y2gmJmMucG9zdERpc3BhdGNo
LmNhbGwodGhpcyx1KSx1LnJlc3VsdH19LGhhbmRsZXJzOmZ1bmN0aW9uKGUsdCl7dmFyIG4scixp
LG8sYSxzPVtdLHU9dC5kZWxlZ2F0ZUNvdW50LGw9ZS50YXJnZXQ7aWYodSYmbC5ub2RlVHlwZSYm
ISgiY2xpY2siPT09ZS50eXBlJiYxPD1lLmJ1dHRvbikpZm9yKDtsIT09dGhpcztsPWwucGFyZW50
Tm9kZXx8dGhpcylpZigxPT09bC5ub2RlVHlwZSYmKCJjbGljayIhPT1lLnR5cGV8fCEwIT09bC5k
aXNhYmxlZCkpe2ZvcihvPVtdLGE9e30sbj0wO248dTtuKyspdm9pZCAwPT09YVtpPShyPXRbbl0p
LnNlbGVjdG9yKyIgIl0mJihhW2ldPXIubmVlZHNDb250ZXh0Py0xPFMoaSx0aGlzKS5pbmRleChs
KTpTLmZpbmQoaSx0aGlzLG51bGwsW2xdKS5sZW5ndGgpLGFbaV0mJm8ucHVzaChyKTtvLmxlbmd0
aCYmcy5wdXNoKHtlbGVtOmwsaGFuZGxlcnM6b30pfXJldHVybiBsPXRoaXMsdTx0Lmxlbmd0aCYm
cy5wdXNoKHtlbGVtOmwsaGFuZGxlcnM6dC5zbGljZSh1KX0pLHN9LGFkZFByb3A6ZnVuY3Rpb24o
dCxlKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoUy5FdmVudC5wcm90b3R5cGUsdCx7ZW51bWVyYWJs
ZTohMCxjb25maWd1cmFibGU6ITAsZ2V0Om0oZSk/ZnVuY3Rpb24oKXtpZih0aGlzLm9yaWdpbmFs
RXZlbnQpcmV0dXJuIGUodGhpcy5vcmlnaW5hbEV2ZW50KX06ZnVuY3Rpb24oKXtpZih0aGlzLm9y
aWdpbmFsRXZlbnQpcmV0dXJuIHRoaXMub3JpZ2luYWxFdmVudFt0XX0sc2V0OmZ1bmN0aW9uKGUp
e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLHQse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxl
OiEwLHdyaXRhYmxlOiEwLHZhbHVlOmV9KX19KX0sZml4OmZ1bmN0aW9uKGUpe3JldHVybiBlW1Mu
ZXhwYW5kb10/ZTpuZXcgUy5FdmVudChlKX0sc3BlY2lhbDp7bG9hZDp7bm9CdWJibGU6ITB9LGNs
aWNrOntzZXR1cDpmdW5jdGlvbihlKXt2YXIgdD10aGlzfHxlO3JldHVybiBwZS50ZXN0KHQudHlw
ZSkmJnQuY2xpY2smJkEodCwiaW5wdXQiKSYmQWUodCwiY2xpY2siLENlKSwhMX0sdHJpZ2dlcjpm
dW5jdGlvbihlKXt2YXIgdD10aGlzfHxlO3JldHVybiBwZS50ZXN0KHQudHlwZSkmJnQuY2xpY2sm
JkEodCwiaW5wdXQiKSYmQWUodCwiY2xpY2siKSwhMH0sX2RlZmF1bHQ6ZnVuY3Rpb24oZSl7dmFy
IHQ9ZS50YXJnZXQ7cmV0dXJuIHBlLnRlc3QodC50eXBlKSYmdC5jbGljayYmQSh0LCJpbnB1dCIp
JiZZLmdldCh0LCJjbGljayIpfHxBKHQsImEiKX19LGJlZm9yZXVubG9hZDp7cG9zdERpc3BhdGNo
OmZ1bmN0aW9uKGUpe3ZvaWQgMCE9PWUucmVzdWx0JiZlLm9yaWdpbmFsRXZlbnQmJihlLm9yaWdp
bmFsRXZlbnQucmV0dXJuVmFsdWU9ZS5yZXN1bHQpfX19fSxTLnJlbW92ZUV2ZW50PWZ1bmN0aW9u
KGUsdCxuKXtlLnJlbW92ZUV2ZW50TGlzdGVuZXImJmUucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LG4p
fSxTLkV2ZW50PWZ1bmN0aW9uKGUsdCl7aWYoISh0aGlzIGluc3RhbmNlb2YgUy5FdmVudCkpcmV0
dXJuIG5ldyBTLkV2ZW50KGUsdCk7ZSYmZS50eXBlPyh0aGlzLm9yaWdpbmFsRXZlbnQ9ZSx0aGlz
LnR5cGU9ZS50eXBlLHRoaXMuaXNEZWZhdWx0UHJldmVudGVkPWUuZGVmYXVsdFByZXZlbnRlZHx8
dm9pZCAwPT09ZS5kZWZhdWx0UHJldmVudGVkJiYhMT09PWUucmV0dXJuVmFsdWU/Q2U6RWUsdGhp
cy50YXJnZXQ9ZS50YXJnZXQmJjM9PT1lLnRhcmdldC5ub2RlVHlwZT9lLnRhcmdldC5wYXJlbnRO
b2RlOmUudGFyZ2V0LHRoaXMuY3VycmVudFRhcmdldD1lLmN1cnJlbnRUYXJnZXQsdGhpcy5yZWxh
dGVkVGFyZ2V0PWUucmVsYXRlZFRhcmdldCk6dGhpcy50eXBlPWUsdCYmUy5leHRlbmQodGhpcyx0
KSx0aGlzLnRpbWVTdGFtcD1lJiZlLnRpbWVTdGFtcHx8RGF0ZS5ub3coKSx0aGlzW1MuZXhwYW5k
b109ITB9LFMuRXZlbnQucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpTLkV2ZW50LGlzRGVmYXVsdFBy
ZXZlbnRlZDpFZSxpc1Byb3BhZ2F0aW9uU3RvcHBlZDpFZSxpc0ltbWVkaWF0ZVByb3BhZ2F0aW9u
U3RvcHBlZDpFZSxpc1NpbXVsYXRlZDohMSxwcmV2ZW50RGVmYXVsdDpmdW5jdGlvbigpe3ZhciBl
PXRoaXMub3JpZ2luYWxFdmVudDt0aGlzLmlzRGVmYXVsdFByZXZlbnRlZD1DZSxlJiYhdGhpcy5p
c1NpbXVsYXRlZCYmZS5wcmV2ZW50RGVmYXVsdCgpfSxzdG9wUHJvcGFnYXRpb246ZnVuY3Rpb24o
KXt2YXIgZT10aGlzLm9yaWdpbmFsRXZlbnQ7dGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZD1DZSxl
JiYhdGhpcy5pc1NpbXVsYXRlZCYmZS5zdG9wUHJvcGFnYXRpb24oKX0sc3RvcEltbWVkaWF0ZVBy
b3BhZ2F0aW9uOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vcmlnaW5hbEV2ZW50O3RoaXMuaXNJbW1l
ZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ9Q2UsZSYmIXRoaXMuaXNTaW11bGF0ZWQmJmUuc3RvcElt
bWVkaWF0ZVByb3BhZ2F0aW9uKCksdGhpcy5zdG9wUHJvcGFnYXRpb24oKX19LFMuZWFjaCh7YWx0
S2V5OiEwLGJ1YmJsZXM6ITAsY2FuY2VsYWJsZTohMCxjaGFuZ2VkVG91Y2hlczohMCxjdHJsS2V5
OiEwLGRldGFpbDohMCxldmVudFBoYXNlOiEwLG1ldGFLZXk6ITAscGFnZVg6ITAscGFnZVk6ITAs
c2hpZnRLZXk6ITAsdmlldzohMCwiY2hhciI6ITAsY29kZTohMCxjaGFyQ29kZTohMCxrZXk6ITAs
a2V5Q29kZTohMCxidXR0b246ITAsYnV0dG9uczohMCxjbGllbnRYOiEwLGNsaWVudFk6ITAsb2Zm
c2V0WDohMCxvZmZzZXRZOiEwLHBvaW50ZXJJZDohMCxwb2ludGVyVHlwZTohMCxzY3JlZW5YOiEw
LHNjcmVlblk6ITAsdGFyZ2V0VG91Y2hlczohMCx0b0VsZW1lbnQ6ITAsdG91Y2hlczohMCx3aGlj
aDpmdW5jdGlvbihlKXt2YXIgdD1lLmJ1dHRvbjtyZXR1cm4gbnVsbD09ZS53aGljaCYmYmUudGVz
dChlLnR5cGUpP251bGwhPWUuY2hhckNvZGU/ZS5jaGFyQ29kZTplLmtleUNvZGU6IWUud2hpY2gm
JnZvaWQgMCE9PXQmJndlLnRlc3QoZS50eXBlKT8xJnQ/MToyJnQ/Mzo0JnQ/MjowOmUud2hpY2h9
fSxTLmV2ZW50LmFkZFByb3ApLFMuZWFjaCh7Zm9jdXM6ImZvY3VzaW4iLGJsdXI6ImZvY3Vzb3V0
In0sZnVuY3Rpb24oZSx0KXtTLmV2ZW50LnNwZWNpYWxbZV09e3NldHVwOmZ1bmN0aW9uKCl7cmV0
dXJuIEFlKHRoaXMsZSxTZSksITF9LHRyaWdnZXI6ZnVuY3Rpb24oKXtyZXR1cm4gQWUodGhpcyxl
KSwhMH0sZGVsZWdhdGVUeXBlOnR9fSksUy5lYWNoKHttb3VzZWVudGVyOiJtb3VzZW92ZXIiLG1v
dXNlbGVhdmU6Im1vdXNlb3V0Iixwb2ludGVyZW50ZXI6InBvaW50ZXJvdmVyIixwb2ludGVybGVh
dmU6InBvaW50ZXJvdXQifSxmdW5jdGlvbihlLGkpe1MuZXZlbnQuc3BlY2lhbFtlXT17ZGVsZWdh
dGVUeXBlOmksYmluZFR5cGU6aSxoYW5kbGU6ZnVuY3Rpb24oZSl7dmFyIHQsbj1lLnJlbGF0ZWRU
YXJnZXQscj1lLmhhbmRsZU9iajtyZXR1cm4gbiYmKG49PT10aGlzfHxTLmNvbnRhaW5zKHRoaXMs
bikpfHwoZS50eXBlPXIub3JpZ1R5cGUsdD1yLmhhbmRsZXIuYXBwbHkodGhpcyxhcmd1bWVudHMp
LGUudHlwZT1pKSx0fX19KSxTLmZuLmV4dGVuZCh7b246ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJu
IGtlKHRoaXMsZSx0LG4scil9LG9uZTpmdW5jdGlvbihlLHQsbixyKXtyZXR1cm4ga2UodGhpcyxl
LHQsbixyLDEpfSxvZmY6ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGk7aWYoZSYmZS5wcmV2ZW50RGVm
YXVsdCYmZS5oYW5kbGVPYmopcmV0dXJuIHI9ZS5oYW5kbGVPYmosUyhlLmRlbGVnYXRlVGFyZ2V0
KS5vZmYoci5uYW1lc3BhY2U/ci5vcmlnVHlwZSsiLiIrci5uYW1lc3BhY2U6ci5vcmlnVHlwZSxy
LnNlbGVjdG9yLHIuaGFuZGxlciksdGhpcztpZigib2JqZWN0Ij09dHlwZW9mIGUpe2ZvcihpIGlu
IGUpdGhpcy5vZmYoaSx0LGVbaV0pO3JldHVybiB0aGlzfXJldHVybiExIT09dCYmImZ1bmN0aW9u
IiE9dHlwZW9mIHR8fChuPXQsdD12b2lkIDApLCExPT09biYmKG49RWUpLHRoaXMuZWFjaChmdW5j
dGlvbigpe1MuZXZlbnQucmVtb3ZlKHRoaXMsZSxuLHQpfSl9fSk7dmFyIE5lPS88c2NyaXB0fDxz
dHlsZXw8bGluay9pLERlPS9jaGVja2VkXHMqKD86W149XXw9XHMqLmNoZWNrZWQuKS9pLGplPS9e
XHMqPCEoPzpcW0NEQVRBXFt8LS0pfCg/OlxdXF18LS0pPlxzKiQvZztmdW5jdGlvbiBxZShlLHQp
e3JldHVybiBBKGUsInRhYmxlIikmJkEoMTEhPT10Lm5vZGVUeXBlP3Q6dC5maXJzdENoaWxkLCJ0
ciIpJiZTKGUpLmNoaWxkcmVuKCJ0Ym9keSIpWzBdfHxlfWZ1bmN0aW9uIExlKGUpe3JldHVybiBl
LnR5cGU9KG51bGwhPT1lLmdldEF0dHJpYnV0ZSgidHlwZSIpKSsiLyIrZS50eXBlLGV9ZnVuY3Rp
b24gSGUoZSl7cmV0dXJuInRydWUvIj09PShlLnR5cGV8fCIiKS5zbGljZSgwLDUpP2UudHlwZT1l
LnR5cGUuc2xpY2UoNSk6ZS5yZW1vdmVBdHRyaWJ1dGUoInR5cGUiKSxlfWZ1bmN0aW9uIE9lKGUs
dCl7dmFyIG4scixpLG8sYSxzO2lmKDE9PT10Lm5vZGVUeXBlKXtpZihZLmhhc0RhdGEoZSkmJihz
PVkuZ2V0KGUpLmV2ZW50cykpZm9yKGkgaW4gWS5yZW1vdmUodCwiaGFuZGxlIGV2ZW50cyIpLHMp
Zm9yKG49MCxyPXNbaV0ubGVuZ3RoO248cjtuKyspUy5ldmVudC5hZGQodCxpLHNbaV1bbl0pO1Eu
aGFzRGF0YShlKSYmKG89US5hY2Nlc3MoZSksYT1TLmV4dGVuZCh7fSxvKSxRLnNldCh0LGEpKX19
ZnVuY3Rpb24gUGUobixyLGksbyl7cj1nKHIpO3ZhciBlLHQsYSxzLHUsbCxjPTAsZj1uLmxlbmd0
aCxwPWYtMSxkPXJbMF0saD1tKGQpO2lmKGh8fDE8ZiYmInN0cmluZyI9PXR5cGVvZiBkJiYheS5j
aGVja0Nsb25lJiZEZS50ZXN0KGQpKXJldHVybiBuLmVhY2goZnVuY3Rpb24oZSl7dmFyIHQ9bi5l
cShlKTtoJiYoclswXT1kLmNhbGwodGhpcyxlLHQuaHRtbCgpKSksUGUodCxyLGksbyl9KTtpZihm
JiYodD0oZT14ZShyLG5bMF0ub3duZXJEb2N1bWVudCwhMSxuLG8pKS5maXJzdENoaWxkLDE9PT1l
LmNoaWxkTm9kZXMubGVuZ3RoJiYoZT10KSx0fHxvKSl7Zm9yKHM9KGE9Uy5tYXAodmUoZSwic2Ny
aXB0IiksTGUpKS5sZW5ndGg7YzxmO2MrKyl1PWUsYyE9PXAmJih1PVMuY2xvbmUodSwhMCwhMCks
cyYmUy5tZXJnZShhLHZlKHUsInNjcmlwdCIpKSksaS5jYWxsKG5bY10sdSxjKTtpZihzKWZvcihs
PWFbYS5sZW5ndGgtMV0ub3duZXJEb2N1bWVudCxTLm1hcChhLEhlKSxjPTA7YzxzO2MrKyl1PWFb
Y10saGUudGVzdCh1LnR5cGV8fCIiKSYmIVkuYWNjZXNzKHUsImdsb2JhbEV2YWwiKSYmUy5jb250
YWlucyhsLHUpJiYodS5zcmMmJiJtb2R1bGUiIT09KHUudHlwZXx8IiIpLnRvTG93ZXJDYXNlKCk/
Uy5fZXZhbFVybCYmIXUubm9Nb2R1bGUmJlMuX2V2YWxVcmwodS5zcmMse25vbmNlOnUubm9uY2V8
fHUuZ2V0QXR0cmlidXRlKCJub25jZSIpfSxsKTpiKHUudGV4dENvbnRlbnQucmVwbGFjZShqZSwi
IiksdSxsKSl9cmV0dXJuIG59ZnVuY3Rpb24gUmUoZSx0LG4pe2Zvcih2YXIgcixpPXQ/Uy5maWx0
ZXIodCxlKTplLG89MDtudWxsIT0ocj1pW29dKTtvKyspbnx8MSE9PXIubm9kZVR5cGV8fFMuY2xl
YW5EYXRhKHZlKHIpKSxyLnBhcmVudE5vZGUmJihuJiZpZShyKSYmeWUodmUociwic2NyaXB0Iikp
LHIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChyKSk7cmV0dXJuIGV9Uy5leHRlbmQoe2h0bWxQcmVm
aWx0ZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LGNsb25lOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixp
LG8sYSxzLHUsbCxjPWUuY2xvbmVOb2RlKCEwKSxmPWllKGUpO2lmKCEoeS5ub0Nsb25lQ2hlY2tl
ZHx8MSE9PWUubm9kZVR5cGUmJjExIT09ZS5ub2RlVHlwZXx8Uy5pc1hNTERvYyhlKSkpZm9yKGE9
dmUoYykscj0wLGk9KG89dmUoZSkpLmxlbmd0aDtyPGk7cisrKXM9b1tyXSx1PWFbcl0sdm9pZCAw
LCJpbnB1dCI9PT0obD11Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpJiZwZS50ZXN0KHMudHlwZSk/
dS5jaGVja2VkPXMuY2hlY2tlZDoiaW5wdXQiIT09bCYmInRleHRhcmVhIiE9PWx8fCh1LmRlZmF1
bHRWYWx1ZT1zLmRlZmF1bHRWYWx1ZSk7aWYodClpZihuKWZvcihvPW98fHZlKGUpLGE9YXx8dmUo
Yykscj0wLGk9by5sZW5ndGg7cjxpO3IrKylPZShvW3JdLGFbcl0pO2Vsc2UgT2UoZSxjKTtyZXR1
cm4gMDwoYT12ZShjLCJzY3JpcHQiKSkubGVuZ3RoJiZ5ZShhLCFmJiZ2ZShlLCJzY3JpcHQiKSks
Y30sY2xlYW5EYXRhOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxuLHIsaT1TLmV2ZW50LnNwZWNpYWws
bz0wO3ZvaWQgMCE9PShuPWVbb10pO28rKylpZihWKG4pKXtpZih0PW5bWS5leHBhbmRvXSl7aWYo
dC5ldmVudHMpZm9yKHIgaW4gdC5ldmVudHMpaVtyXT9TLmV2ZW50LnJlbW92ZShuLHIpOlMucmVt
b3ZlRXZlbnQobixyLHQuaGFuZGxlKTtuW1kuZXhwYW5kb109dm9pZCAwfW5bUS5leHBhbmRvXSYm
KG5bUS5leHBhbmRvXT12b2lkIDApfX19KSxTLmZuLmV4dGVuZCh7ZGV0YWNoOmZ1bmN0aW9uKGUp
e3JldHVybiBSZSh0aGlzLGUsITApfSxyZW1vdmU6ZnVuY3Rpb24oZSl7cmV0dXJuIFJlKHRoaXMs
ZSl9LHRleHQ6ZnVuY3Rpb24oZSl7cmV0dXJuICQodGhpcyxmdW5jdGlvbihlKXtyZXR1cm4gdm9p
ZCAwPT09ZT9TLnRleHQodGhpcyk6dGhpcy5lbXB0eSgpLmVhY2goZnVuY3Rpb24oKXsxIT09dGhp
cy5ub2RlVHlwZSYmMTEhPT10aGlzLm5vZGVUeXBlJiY5IT09dGhpcy5ub2RlVHlwZXx8KHRoaXMu
dGV4dENvbnRlbnQ9ZSl9KX0sbnVsbCxlLGFyZ3VtZW50cy5sZW5ndGgpfSxhcHBlbmQ6ZnVuY3Rp
b24oKXtyZXR1cm4gUGUodGhpcyxhcmd1bWVudHMsZnVuY3Rpb24oZSl7MSE9PXRoaXMubm9kZVR5
cGUmJjExIT09dGhpcy5ub2RlVHlwZSYmOSE9PXRoaXMubm9kZVR5cGV8fHFlKHRoaXMsZSkuYXBw
ZW5kQ2hpbGQoZSl9KX0scHJlcGVuZDpmdW5jdGlvbigpe3JldHVybiBQZSh0aGlzLGFyZ3VtZW50
cyxmdW5jdGlvbihlKXtpZigxPT09dGhpcy5ub2RlVHlwZXx8MTE9PT10aGlzLm5vZGVUeXBlfHw5
PT09dGhpcy5ub2RlVHlwZSl7dmFyIHQ9cWUodGhpcyxlKTt0Lmluc2VydEJlZm9yZShlLHQuZmly
c3RDaGlsZCl9fSl9LGJlZm9yZTpmdW5jdGlvbigpe3JldHVybiBQZSh0aGlzLGFyZ3VtZW50cyxm
dW5jdGlvbihlKXt0aGlzLnBhcmVudE5vZGUmJnRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUo
ZSx0aGlzKX0pfSxhZnRlcjpmdW5jdGlvbigpe3JldHVybiBQZSh0aGlzLGFyZ3VtZW50cyxmdW5j
dGlvbihlKXt0aGlzLnBhcmVudE5vZGUmJnRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZSx0
aGlzLm5leHRTaWJsaW5nKX0pfSxlbXB0eTpmdW5jdGlvbigpe2Zvcih2YXIgZSx0PTA7bnVsbCE9
KGU9dGhpc1t0XSk7dCsrKTE9PT1lLm5vZGVUeXBlJiYoUy5jbGVhbkRhdGEodmUoZSwhMSkpLGUu
dGV4dENvbnRlbnQ9IiIpO3JldHVybiB0aGlzfSxjbG9uZTpmdW5jdGlvbihlLHQpe3JldHVybiBl
PW51bGwhPWUmJmUsdD1udWxsPT10P2U6dCx0aGlzLm1hcChmdW5jdGlvbigpe3JldHVybiBTLmNs
b25lKHRoaXMsZSx0KX0pfSxodG1sOmZ1bmN0aW9uKGUpe3JldHVybiAkKHRoaXMsZnVuY3Rpb24o
ZSl7dmFyIHQ9dGhpc1swXXx8e30sbj0wLHI9dGhpcy5sZW5ndGg7aWYodm9pZCAwPT09ZSYmMT09
PXQubm9kZVR5cGUpcmV0dXJuIHQuaW5uZXJIVE1MO2lmKCJzdHJpbmciPT10eXBlb2YgZSYmIU5l
LnRlc3QoZSkmJiFnZVsoZGUuZXhlYyhlKXx8WyIiLCIiXSlbMV0udG9Mb3dlckNhc2UoKV0pe2U9
Uy5odG1sUHJlZmlsdGVyKGUpO3RyeXtmb3IoO248cjtuKyspMT09PSh0PXRoaXNbbl18fHt9KS5u
b2RlVHlwZSYmKFMuY2xlYW5EYXRhKHZlKHQsITEpKSx0LmlubmVySFRNTD1lKTt0PTB9Y2F0Y2go
ZSl7fX10JiZ0aGlzLmVtcHR5KCkuYXBwZW5kKGUpfSxudWxsLGUsYXJndW1lbnRzLmxlbmd0aCl9
LHJlcGxhY2VXaXRoOmZ1bmN0aW9uKCl7dmFyIG49W107cmV0dXJuIFBlKHRoaXMsYXJndW1lbnRz
LGZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMucGFyZW50Tm9kZTtTLmluQXJyYXkodGhpcyxuKTwwJiYo
Uy5jbGVhbkRhdGEodmUodGhpcykpLHQmJnQucmVwbGFjZUNoaWxkKGUsdGhpcykpfSxuKX19KSxT
LmVhY2goe2FwcGVuZFRvOiJhcHBlbmQiLHByZXBlbmRUbzoicHJlcGVuZCIsaW5zZXJ0QmVmb3Jl
OiJiZWZvcmUiLGluc2VydEFmdGVyOiJhZnRlciIscmVwbGFjZUFsbDoicmVwbGFjZVdpdGgifSxm
dW5jdGlvbihlLGEpe1MuZm5bZV09ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LG49W10scj1TKGUpLGk9
ci5sZW5ndGgtMSxvPTA7bzw9aTtvKyspdD1vPT09aT90aGlzOnRoaXMuY2xvbmUoITApLFMocltv
XSlbYV0odCksdS5hcHBseShuLHQuZ2V0KCkpO3JldHVybiB0aGlzLnB1c2hTdGFjayhuKX19KTt2
YXIgTWU9bmV3IFJlZ0V4cCgiXigiK2VlKyIpKD8hcHgpW2EteiVdKyQiLCJpIiksSWU9ZnVuY3Rp
b24oZSl7dmFyIHQ9ZS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3O3JldHVybiB0JiZ0Lm9wZW5l
cnx8KHQ9QyksdC5nZXRDb21wdXRlZFN0eWxlKGUpfSxXZT1mdW5jdGlvbihlLHQsbil7dmFyIHIs
aSxvPXt9O2ZvcihpIGluIHQpb1tpXT1lLnN0eWxlW2ldLGUuc3R5bGVbaV09dFtpXTtmb3IoaSBp
biByPW4uY2FsbChlKSx0KWUuc3R5bGVbaV09b1tpXTtyZXR1cm4gcn0sRmU9bmV3IFJlZ0V4cChu
ZS5qb2luKCJ8IiksImkiKTtmdW5jdGlvbiBCZShlLHQsbil7dmFyIHIsaSxvLGEscz1lLnN0eWxl
O3JldHVybihuPW58fEllKGUpKSYmKCIiIT09KGE9bi5nZXRQcm9wZXJ0eVZhbHVlKHQpfHxuW3Rd
KXx8aWUoZSl8fChhPVMuc3R5bGUoZSx0KSksIXkucGl4ZWxCb3hTdHlsZXMoKSYmTWUudGVzdChh
KSYmRmUudGVzdCh0KSYmKHI9cy53aWR0aCxpPXMubWluV2lkdGgsbz1zLm1heFdpZHRoLHMubWlu
V2lkdGg9cy5tYXhXaWR0aD1zLndpZHRoPWEsYT1uLndpZHRoLHMud2lkdGg9cixzLm1pbldpZHRo
PWkscy5tYXhXaWR0aD1vKSksdm9pZCAwIT09YT9hKyIiOmF9ZnVuY3Rpb24gJGUoZSx0KXtyZXR1
cm57Z2V0OmZ1bmN0aW9uKCl7aWYoIWUoKSlyZXR1cm4odGhpcy5nZXQ9dCkuYXBwbHkodGhpcyxh
cmd1bWVudHMpO2RlbGV0ZSB0aGlzLmdldH19fSFmdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXtpZihs
KXt1LnN0eWxlLmNzc1RleHQ9InBvc2l0aW9uOmFic29sdXRlO2xlZnQ6LTExMTExcHg7d2lkdGg6
NjBweDttYXJnaW4tdG9wOjFweDtwYWRkaW5nOjA7Ym9yZGVyOjAiLGwuc3R5bGUuY3NzVGV4dD0i
cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3g7b3Zl
cmZsb3c6c2Nyb2xsO21hcmdpbjphdXRvO2JvcmRlcjoxcHg7cGFkZGluZzoxcHg7d2lkdGg6NjAl
O3RvcDoxJSIscmUuYXBwZW5kQ2hpbGQodSkuYXBwZW5kQ2hpbGQobCk7dmFyIGU9Qy5nZXRDb21w
dXRlZFN0eWxlKGwpO249IjElIiE9PWUudG9wLHM9MTI9PT10KGUubWFyZ2luTGVmdCksbC5zdHls
ZS5yaWdodD0iNjAlIixvPTM2PT09dChlLnJpZ2h0KSxyPTM2PT09dChlLndpZHRoKSxsLnN0eWxl
LnBvc2l0aW9uPSJhYnNvbHV0ZSIsaT0xMj09PXQobC5vZmZzZXRXaWR0aC8zKSxyZS5yZW1vdmVD
aGlsZCh1KSxsPW51bGx9fWZ1bmN0aW9uIHQoZSl7cmV0dXJuIE1hdGgucm91bmQocGFyc2VGbG9h
dChlKSl9dmFyIG4scixpLG8sYSxzLHU9RS5jcmVhdGVFbGVtZW50KCJkaXYiKSxsPUUuY3JlYXRl
RWxlbWVudCgiZGl2Iik7bC5zdHlsZSYmKGwuc3R5bGUuYmFja2dyb3VuZENsaXA9ImNvbnRlbnQt
Ym94IixsLmNsb25lTm9kZSghMCkuc3R5bGUuYmFja2dyb3VuZENsaXA9IiIseS5jbGVhckNsb25l
U3R5bGU9ImNvbnRlbnQtYm94Ij09PWwuc3R5bGUuYmFja2dyb3VuZENsaXAsUy5leHRlbmQoeSx7
Ym94U2l6aW5nUmVsaWFibGU6ZnVuY3Rpb24oKXtyZXR1cm4gZSgpLHJ9LHBpeGVsQm94U3R5bGVz
OmZ1bmN0aW9uKCl7cmV0dXJuIGUoKSxvfSxwaXhlbFBvc2l0aW9uOmZ1bmN0aW9uKCl7cmV0dXJu
IGUoKSxufSxyZWxpYWJsZU1hcmdpbkxlZnQ6ZnVuY3Rpb24oKXtyZXR1cm4gZSgpLHN9LHNjcm9s
bGJveFNpemU6ZnVuY3Rpb24oKXtyZXR1cm4gZSgpLGl9LHJlbGlhYmxlVHJEaW1lbnNpb25zOmZ1
bmN0aW9uKCl7dmFyIGUsdCxuLHI7cmV0dXJuIG51bGw9PWEmJihlPUUuY3JlYXRlRWxlbWVudCgi
dGFibGUiKSx0PUUuY3JlYXRlRWxlbWVudCgidHIiKSxuPUUuY3JlYXRlRWxlbWVudCgiZGl2Iiks
ZS5zdHlsZS5jc3NUZXh0PSJwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0Oi0xMTExMXB4Iix0LnN0eWxl
LmhlaWdodD0iMXB4IixuLnN0eWxlLmhlaWdodD0iOXB4IixyZS5hcHBlbmRDaGlsZChlKS5hcHBl
bmRDaGlsZCh0KS5hcHBlbmRDaGlsZChuKSxyPUMuZ2V0Q29tcHV0ZWRTdHlsZSh0KSxhPTM8cGFy
c2VJbnQoci5oZWlnaHQpLHJlLnJlbW92ZUNoaWxkKGUpKSxhfX0pKX0oKTt2YXIgX2U9WyJXZWJr
aXQiLCJNb3oiLCJtcyJdLHplPUUuY3JlYXRlRWxlbWVudCgiZGl2Iikuc3R5bGUsVWU9e307ZnVu
Y3Rpb24gWGUoZSl7dmFyIHQ9Uy5jc3NQcm9wc1tlXXx8VWVbZV07cmV0dXJuIHR8fChlIGluIHpl
P2U6VWVbZV09ZnVuY3Rpb24oZSl7dmFyIHQ9ZVswXS50b1VwcGVyQ2FzZSgpK2Uuc2xpY2UoMSks
bj1fZS5sZW5ndGg7d2hpbGUobi0tKWlmKChlPV9lW25dK3QpaW4gemUpcmV0dXJuIGV9KGUpfHxl
KX12YXIgVmU9L14obm9uZXx0YWJsZSg/IS1jW2VhXSkuKykvLEdlPS9eLS0vLFllPXtwb3NpdGlv
bjoiYWJzb2x1dGUiLHZpc2liaWxpdHk6ImhpZGRlbiIsZGlzcGxheToiYmxvY2sifSxRZT17bGV0
dGVyU3BhY2luZzoiMCIsZm9udFdlaWdodDoiNDAwIn07ZnVuY3Rpb24gSmUoZSx0LG4pe3ZhciBy
PXRlLmV4ZWModCk7cmV0dXJuIHI/TWF0aC5tYXgoMCxyWzJdLShufHwwKSkrKHJbM118fCJweCIp
OnR9ZnVuY3Rpb24gS2UoZSx0LG4scixpLG8pe3ZhciBhPSJ3aWR0aCI9PT10PzE6MCxzPTAsdT0w
O2lmKG49PT0ocj8iYm9yZGVyIjoiY29udGVudCIpKXJldHVybiAwO2Zvcig7YTw0O2ErPTIpIm1h
cmdpbiI9PT1uJiYodSs9Uy5jc3MoZSxuK25lW2FdLCEwLGkpKSxyPygiY29udGVudCI9PT1uJiYo
dS09Uy5jc3MoZSwicGFkZGluZyIrbmVbYV0sITAsaSkpLCJtYXJnaW4iIT09biYmKHUtPVMuY3Nz
KGUsImJvcmRlciIrbmVbYV0rIldpZHRoIiwhMCxpKSkpOih1Kz1TLmNzcyhlLCJwYWRkaW5nIitu
ZVthXSwhMCxpKSwicGFkZGluZyIhPT1uP3UrPVMuY3NzKGUsImJvcmRlciIrbmVbYV0rIldpZHRo
IiwhMCxpKTpzKz1TLmNzcyhlLCJib3JkZXIiK25lW2FdKyJXaWR0aCIsITAsaSkpO3JldHVybiFy
JiYwPD1vJiYodSs9TWF0aC5tYXgoMCxNYXRoLmNlaWwoZVsib2Zmc2V0Iit0WzBdLnRvVXBwZXJD
YXNlKCkrdC5zbGljZSgxKV0tby11LXMtLjUpKXx8MCksdX1mdW5jdGlvbiBaZShlLHQsbil7dmFy
IHI9SWUoZSksaT0oIXkuYm94U2l6aW5nUmVsaWFibGUoKXx8bikmJiJib3JkZXItYm94Ij09PVMu
Y3NzKGUsImJveFNpemluZyIsITEsciksbz1pLGE9QmUoZSx0LHIpLHM9Im9mZnNldCIrdFswXS50
b1VwcGVyQ2FzZSgpK3Quc2xpY2UoMSk7aWYoTWUudGVzdChhKSl7aWYoIW4pcmV0dXJuIGE7YT0i
YXV0byJ9cmV0dXJuKCF5LmJveFNpemluZ1JlbGlhYmxlKCkmJml8fCF5LnJlbGlhYmxlVHJEaW1l
bnNpb25zKCkmJkEoZSwidHIiKXx8ImF1dG8iPT09YXx8IXBhcnNlRmxvYXQoYSkmJiJpbmxpbmUi
PT09Uy5jc3MoZSwiZGlzcGxheSIsITEscikpJiZlLmdldENsaWVudFJlY3RzKCkubGVuZ3RoJiYo
aT0iYm9yZGVyLWJveCI9PT1TLmNzcyhlLCJib3hTaXppbmciLCExLHIpLChvPXMgaW4gZSkmJihh
PWVbc10pKSwoYT1wYXJzZUZsb2F0KGEpfHwwKStLZShlLHQsbnx8KGk/ImJvcmRlciI6ImNvbnRl
bnQiKSxvLHIsYSkrInB4In1mdW5jdGlvbiBldChlLHQsbixyLGkpe3JldHVybiBuZXcgZXQucHJv
dG90eXBlLmluaXQoZSx0LG4scixpKX1TLmV4dGVuZCh7Y3NzSG9va3M6e29wYWNpdHk6e2dldDpm
dW5jdGlvbihlLHQpe2lmKHQpe3ZhciBuPUJlKGUsIm9wYWNpdHkiKTtyZXR1cm4iIj09PW4/IjEi
Om59fX19LGNzc051bWJlcjp7YW5pbWF0aW9uSXRlcmF0aW9uQ291bnQ6ITAsY29sdW1uQ291bnQ6
ITAsZmlsbE9wYWNpdHk6ITAsZmxleEdyb3c6ITAsZmxleFNocmluazohMCxmb250V2VpZ2h0OiEw
LGdyaWRBcmVhOiEwLGdyaWRDb2x1bW46ITAsZ3JpZENvbHVtbkVuZDohMCxncmlkQ29sdW1uU3Rh
cnQ6ITAsZ3JpZFJvdzohMCxncmlkUm93RW5kOiEwLGdyaWRSb3dTdGFydDohMCxsaW5lSGVpZ2h0
OiEwLG9wYWNpdHk6ITAsb3JkZXI6ITAsb3JwaGFuczohMCx3aWRvd3M6ITAsekluZGV4OiEwLHpv
b206ITB9LGNzc1Byb3BzOnt9LHN0eWxlOmZ1bmN0aW9uKGUsdCxuLHIpe2lmKGUmJjMhPT1lLm5v
ZGVUeXBlJiY4IT09ZS5ub2RlVHlwZSYmZS5zdHlsZSl7dmFyIGksbyxhLHM9WCh0KSx1PUdlLnRl
c3QodCksbD1lLnN0eWxlO2lmKHV8fCh0PVhlKHMpKSxhPVMuY3NzSG9va3NbdF18fFMuY3NzSG9v
a3Nbc10sdm9pZCAwPT09bilyZXR1cm4gYSYmImdldCJpbiBhJiZ2b2lkIDAhPT0oaT1hLmdldChl
LCExLHIpKT9pOmxbdF07InN0cmluZyI9PT0obz10eXBlb2YgbikmJihpPXRlLmV4ZWMobikpJiZp
WzFdJiYobj1zZShlLHQsaSksbz0ibnVtYmVyIiksbnVsbCE9biYmbj09biYmKCJudW1iZXIiIT09
b3x8dXx8KG4rPWkmJmlbM118fChTLmNzc051bWJlcltzXT8iIjoicHgiKSkseS5jbGVhckNsb25l
U3R5bGV8fCIiIT09bnx8MCE9PXQuaW5kZXhPZigiYmFja2dyb3VuZCIpfHwobFt0XT0iaW5oZXJp
dCIpLGEmJiJzZXQiaW4gYSYmdm9pZCAwPT09KG49YS5zZXQoZSxuLHIpKXx8KHU/bC5zZXRQcm9w
ZXJ0eSh0LG4pOmxbdF09bikpfX0sY3NzOmZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpLG8sYSxzPVgo
dCk7cmV0dXJuIEdlLnRlc3QodCl8fCh0PVhlKHMpKSwoYT1TLmNzc0hvb2tzW3RdfHxTLmNzc0hv
b2tzW3NdKSYmImdldCJpbiBhJiYoaT1hLmdldChlLCEwLG4pKSx2b2lkIDA9PT1pJiYoaT1CZShl
LHQscikpLCJub3JtYWwiPT09aSYmdCBpbiBRZSYmKGk9UWVbdF0pLCIiPT09bnx8bj8obz1wYXJz
ZUZsb2F0KGkpLCEwPT09bnx8aXNGaW5pdGUobyk/b3x8MDppKTppfX0pLFMuZWFjaChbImhlaWdo
dCIsIndpZHRoIl0sZnVuY3Rpb24oZSx1KXtTLmNzc0hvb2tzW3VdPXtnZXQ6ZnVuY3Rpb24oZSx0
LG4pe2lmKHQpcmV0dXJuIVZlLnRlc3QoUy5jc3MoZSwiZGlzcGxheSIpKXx8ZS5nZXRDbGllbnRS
ZWN0cygpLmxlbmd0aCYmZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aD9aZShlLHUsbik6
V2UoZSxZZSxmdW5jdGlvbigpe3JldHVybiBaZShlLHUsbil9KX0sc2V0OmZ1bmN0aW9uKGUsdCxu
KXt2YXIgcixpPUllKGUpLG89IXkuc2Nyb2xsYm94U2l6ZSgpJiYiYWJzb2x1dGUiPT09aS5wb3Np
dGlvbixhPShvfHxuKSYmImJvcmRlci1ib3giPT09Uy5jc3MoZSwiYm94U2l6aW5nIiwhMSxpKSxz
PW4/S2UoZSx1LG4sYSxpKTowO3JldHVybiBhJiZvJiYocy09TWF0aC5jZWlsKGVbIm9mZnNldCIr
dVswXS50b1VwcGVyQ2FzZSgpK3Uuc2xpY2UoMSldLXBhcnNlRmxvYXQoaVt1XSktS2UoZSx1LCJi
b3JkZXIiLCExLGkpLS41KSkscyYmKHI9dGUuZXhlYyh0KSkmJiJweCIhPT0oclszXXx8InB4Iikm
JihlLnN0eWxlW3VdPXQsdD1TLmNzcyhlLHUpKSxKZSgwLHQscyl9fX0pLFMuY3NzSG9va3MubWFy
Z2luTGVmdD0kZSh5LnJlbGlhYmxlTWFyZ2luTGVmdCxmdW5jdGlvbihlLHQpe2lmKHQpcmV0dXJu
KHBhcnNlRmxvYXQoQmUoZSwibWFyZ2luTGVmdCIpKXx8ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3Qo
KS5sZWZ0LVdlKGUse21hcmdpbkxlZnQ6MH0sZnVuY3Rpb24oKXtyZXR1cm4gZS5nZXRCb3VuZGlu
Z0NsaWVudFJlY3QoKS5sZWZ0fSkpKyJweCJ9KSxTLmVhY2goe21hcmdpbjoiIixwYWRkaW5nOiIi
LGJvcmRlcjoiV2lkdGgifSxmdW5jdGlvbihpLG8pe1MuY3NzSG9va3NbaStvXT17ZXhwYW5kOmZ1
bmN0aW9uKGUpe2Zvcih2YXIgdD0wLG49e30scj0ic3RyaW5nIj09dHlwZW9mIGU/ZS5zcGxpdCgi
ICIpOltlXTt0PDQ7dCsrKW5baStuZVt0XStvXT1yW3RdfHxyW3QtMl18fHJbMF07cmV0dXJuIG59
fSwibWFyZ2luIiE9PWkmJihTLmNzc0hvb2tzW2krb10uc2V0PUplKX0pLFMuZm4uZXh0ZW5kKHtj
c3M6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gJCh0aGlzLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpLG89
e30sYT0wO2lmKEFycmF5LmlzQXJyYXkodCkpe2ZvcihyPUllKGUpLGk9dC5sZW5ndGg7YTxpO2Er
KylvW3RbYV1dPVMuY3NzKGUsdFthXSwhMSxyKTtyZXR1cm4gb31yZXR1cm4gdm9pZCAwIT09bj9T
LnN0eWxlKGUsdCxuKTpTLmNzcyhlLHQpfSxlLHQsMTxhcmd1bWVudHMubGVuZ3RoKX19KSwoKFMu
VHdlZW49ZXQpLnByb3RvdHlwZT17Y29uc3RydWN0b3I6ZXQsaW5pdDpmdW5jdGlvbihlLHQsbixy
LGksbyl7dGhpcy5lbGVtPWUsdGhpcy5wcm9wPW4sdGhpcy5lYXNpbmc9aXx8Uy5lYXNpbmcuX2Rl
ZmF1bHQsdGhpcy5vcHRpb25zPXQsdGhpcy5zdGFydD10aGlzLm5vdz10aGlzLmN1cigpLHRoaXMu
ZW5kPXIsdGhpcy51bml0PW98fChTLmNzc051bWJlcltuXT8iIjoicHgiKX0sY3VyOmZ1bmN0aW9u
KCl7dmFyIGU9ZXQucHJvcEhvb2tzW3RoaXMucHJvcF07cmV0dXJuIGUmJmUuZ2V0P2UuZ2V0KHRo
aXMpOmV0LnByb3BIb29rcy5fZGVmYXVsdC5nZXQodGhpcyl9LHJ1bjpmdW5jdGlvbihlKXt2YXIg
dCxuPWV0LnByb3BIb29rc1t0aGlzLnByb3BdO3JldHVybiB0aGlzLm9wdGlvbnMuZHVyYXRpb24/
dGhpcy5wb3M9dD1TLmVhc2luZ1t0aGlzLmVhc2luZ10oZSx0aGlzLm9wdGlvbnMuZHVyYXRpb24q
ZSwwLDEsdGhpcy5vcHRpb25zLmR1cmF0aW9uKTp0aGlzLnBvcz10PWUsdGhpcy5ub3c9KHRoaXMu
ZW5kLXRoaXMuc3RhcnQpKnQrdGhpcy5zdGFydCx0aGlzLm9wdGlvbnMuc3RlcCYmdGhpcy5vcHRp
b25zLnN0ZXAuY2FsbCh0aGlzLmVsZW0sdGhpcy5ub3csdGhpcyksbiYmbi5zZXQ/bi5zZXQodGhp
cyk6ZXQucHJvcEhvb2tzLl9kZWZhdWx0LnNldCh0aGlzKSx0aGlzfX0pLmluaXQucHJvdG90eXBl
PWV0LnByb3RvdHlwZSwoZXQucHJvcEhvb2tzPXtfZGVmYXVsdDp7Z2V0OmZ1bmN0aW9uKGUpe3Zh
ciB0O3JldHVybiAxIT09ZS5lbGVtLm5vZGVUeXBlfHxudWxsIT1lLmVsZW1bZS5wcm9wXSYmbnVs
bD09ZS5lbGVtLnN0eWxlW2UucHJvcF0/ZS5lbGVtW2UucHJvcF06KHQ9Uy5jc3MoZS5lbGVtLGUu
cHJvcCwiIikpJiYiYXV0byIhPT10P3Q6MH0sc2V0OmZ1bmN0aW9uKGUpe1MuZnguc3RlcFtlLnBy
b3BdP1MuZnguc3RlcFtlLnByb3BdKGUpOjEhPT1lLmVsZW0ubm9kZVR5cGV8fCFTLmNzc0hvb2tz
W2UucHJvcF0mJm51bGw9PWUuZWxlbS5zdHlsZVtYZShlLnByb3ApXT9lLmVsZW1bZS5wcm9wXT1l
Lm5vdzpTLnN0eWxlKGUuZWxlbSxlLnByb3AsZS5ub3crZS51bml0KX19fSkuc2Nyb2xsVG9wPWV0
LnByb3BIb29rcy5zY3JvbGxMZWZ0PXtzZXQ6ZnVuY3Rpb24oZSl7ZS5lbGVtLm5vZGVUeXBlJiZl
LmVsZW0ucGFyZW50Tm9kZSYmKGUuZWxlbVtlLnByb3BdPWUubm93KX19LFMuZWFzaW5nPXtsaW5l
YXI6ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LHN3aW5nOmZ1bmN0aW9uKGUpe3JldHVybi41LU1hdGgu
Y29zKGUqTWF0aC5QSSkvMn0sX2RlZmF1bHQ6InN3aW5nIn0sUy5meD1ldC5wcm90b3R5cGUuaW5p
dCxTLmZ4LnN0ZXA9e307dmFyIHR0LG50LHJ0LGl0LG90PS9eKD86dG9nZ2xlfHNob3d8aGlkZSkk
LyxhdD0vcXVldWVIb29rcyQvO2Z1bmN0aW9uIHN0KCl7bnQmJighMT09PUUuaGlkZGVuJiZDLnJl
cXVlc3RBbmltYXRpb25GcmFtZT9DLnJlcXVlc3RBbmltYXRpb25GcmFtZShzdCk6Qy5zZXRUaW1l
b3V0KHN0LFMuZnguaW50ZXJ2YWwpLFMuZngudGljaygpKX1mdW5jdGlvbiB1dCgpe3JldHVybiBD
LnNldFRpbWVvdXQoZnVuY3Rpb24oKXt0dD12b2lkIDB9KSx0dD1EYXRlLm5vdygpfWZ1bmN0aW9u
IGx0KGUsdCl7dmFyIG4scj0wLGk9e2hlaWdodDplfTtmb3IodD10PzE6MDtyPDQ7cis9Mi10KWlb
Im1hcmdpbiIrKG49bmVbcl0pXT1pWyJwYWRkaW5nIituXT1lO3JldHVybiB0JiYoaS5vcGFjaXR5
PWkud2lkdGg9ZSksaX1mdW5jdGlvbiBjdChlLHQsbil7Zm9yKHZhciByLGk9KGZ0LnR3ZWVuZXJz
W3RdfHxbXSkuY29uY2F0KGZ0LnR3ZWVuZXJzWyIqIl0pLG89MCxhPWkubGVuZ3RoO288YTtvKysp
aWYocj1pW29dLmNhbGwobix0LGUpKXJldHVybiByfWZ1bmN0aW9uIGZ0KG8sZSx0KXt2YXIgbixh
LHI9MCxpPWZ0LnByZWZpbHRlcnMubGVuZ3RoLHM9Uy5EZWZlcnJlZCgpLmFsd2F5cyhmdW5jdGlv
bigpe2RlbGV0ZSB1LmVsZW19KSx1PWZ1bmN0aW9uKCl7aWYoYSlyZXR1cm4hMTtmb3IodmFyIGU9
dHR8fHV0KCksdD1NYXRoLm1heCgwLGwuc3RhcnRUaW1lK2wuZHVyYXRpb24tZSksbj0xLSh0L2wu
ZHVyYXRpb258fDApLHI9MCxpPWwudHdlZW5zLmxlbmd0aDtyPGk7cisrKWwudHdlZW5zW3JdLnJ1
bihuKTtyZXR1cm4gcy5ub3RpZnlXaXRoKG8sW2wsbix0XSksbjwxJiZpP3Q6KGl8fHMubm90aWZ5
V2l0aChvLFtsLDEsMF0pLHMucmVzb2x2ZVdpdGgobyxbbF0pLCExKX0sbD1zLnByb21pc2Uoe2Vs
ZW06byxwcm9wczpTLmV4dGVuZCh7fSxlKSxvcHRzOlMuZXh0ZW5kKCEwLHtzcGVjaWFsRWFzaW5n
Ont9LGVhc2luZzpTLmVhc2luZy5fZGVmYXVsdH0sdCksb3JpZ2luYWxQcm9wZXJ0aWVzOmUsb3Jp
Z2luYWxPcHRpb25zOnQsc3RhcnRUaW1lOnR0fHx1dCgpLGR1cmF0aW9uOnQuZHVyYXRpb24sdHdl
ZW5zOltdLGNyZWF0ZVR3ZWVuOmZ1bmN0aW9uKGUsdCl7dmFyIG49Uy5Ud2VlbihvLGwub3B0cyxl
LHQsbC5vcHRzLnNwZWNpYWxFYXNpbmdbZV18fGwub3B0cy5lYXNpbmcpO3JldHVybiBsLnR3ZWVu
cy5wdXNoKG4pLG59LHN0b3A6ZnVuY3Rpb24oZSl7dmFyIHQ9MCxuPWU/bC50d2VlbnMubGVuZ3Ro
OjA7aWYoYSlyZXR1cm4gdGhpcztmb3IoYT0hMDt0PG47dCsrKWwudHdlZW5zW3RdLnJ1bigxKTty
ZXR1cm4gZT8ocy5ub3RpZnlXaXRoKG8sW2wsMSwwXSkscy5yZXNvbHZlV2l0aChvLFtsLGVdKSk6
cy5yZWplY3RXaXRoKG8sW2wsZV0pLHRoaXN9fSksYz1sLnByb3BzO2ZvcighZnVuY3Rpb24oZSx0
KXt2YXIgbixyLGksbyxhO2ZvcihuIGluIGUpaWYoaT10W3I9WChuKV0sbz1lW25dLEFycmF5Lmlz
QXJyYXkobykmJihpPW9bMV0sbz1lW25dPW9bMF0pLG4hPT1yJiYoZVtyXT1vLGRlbGV0ZSBlW25d
KSwoYT1TLmNzc0hvb2tzW3JdKSYmImV4cGFuZCJpbiBhKWZvcihuIGluIG89YS5leHBhbmQobyks
ZGVsZXRlIGVbcl0sbyluIGluIGV8fChlW25dPW9bbl0sdFtuXT1pKTtlbHNlIHRbcl09aX0oYyxs
Lm9wdHMuc3BlY2lhbEVhc2luZyk7cjxpO3IrKylpZihuPWZ0LnByZWZpbHRlcnNbcl0uY2FsbChs
LG8sYyxsLm9wdHMpKXJldHVybiBtKG4uc3RvcCkmJihTLl9xdWV1ZUhvb2tzKGwuZWxlbSxsLm9w
dHMucXVldWUpLnN0b3A9bi5zdG9wLmJpbmQobikpLG47cmV0dXJuIFMubWFwKGMsY3QsbCksbShs
Lm9wdHMuc3RhcnQpJiZsLm9wdHMuc3RhcnQuY2FsbChvLGwpLGwucHJvZ3Jlc3MobC5vcHRzLnBy
b2dyZXNzKS5kb25lKGwub3B0cy5kb25lLGwub3B0cy5jb21wbGV0ZSkuZmFpbChsLm9wdHMuZmFp
bCkuYWx3YXlzKGwub3B0cy5hbHdheXMpLFMuZngudGltZXIoUy5leHRlbmQodSx7ZWxlbTpvLGFu
aW06bCxxdWV1ZTpsLm9wdHMucXVldWV9KSksbH1TLkFuaW1hdGlvbj1TLmV4dGVuZChmdCx7dHdl
ZW5lcnM6eyIqIjpbZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLmNyZWF0ZVR3ZWVuKGUsdCk7cmV0
dXJuIHNlKG4uZWxlbSxlLHRlLmV4ZWModCksbiksbn1dfSx0d2VlbmVyOmZ1bmN0aW9uKGUsdCl7
bShlKT8odD1lLGU9WyIqIl0pOmU9ZS5tYXRjaChQKTtmb3IodmFyIG4scj0wLGk9ZS5sZW5ndGg7
cjxpO3IrKyluPWVbcl0sZnQudHdlZW5lcnNbbl09ZnQudHdlZW5lcnNbbl18fFtdLGZ0LnR3ZWVu
ZXJzW25dLnVuc2hpZnQodCl9LHByZWZpbHRlcnM6W2Z1bmN0aW9uKGUsdCxuKXt2YXIgcixpLG8s
YSxzLHUsbCxjLGY9IndpZHRoImluIHR8fCJoZWlnaHQiaW4gdCxwPXRoaXMsZD17fSxoPWUuc3R5
bGUsZz1lLm5vZGVUeXBlJiZhZShlKSx2PVkuZ2V0KGUsImZ4c2hvdyIpO2ZvcihyIGluIG4ucXVl
dWV8fChudWxsPT0oYT1TLl9xdWV1ZUhvb2tzKGUsImZ4IikpLnVucXVldWVkJiYoYS51bnF1ZXVl
ZD0wLHM9YS5lbXB0eS5maXJlLGEuZW1wdHkuZmlyZT1mdW5jdGlvbigpe2EudW5xdWV1ZWR8fHMo
KX0pLGEudW5xdWV1ZWQrKyxwLmFsd2F5cyhmdW5jdGlvbigpe3AuYWx3YXlzKGZ1bmN0aW9uKCl7
YS51bnF1ZXVlZC0tLFMucXVldWUoZSwiZngiKS5sZW5ndGh8fGEuZW1wdHkuZmlyZSgpfSl9KSks
dClpZihpPXRbcl0sb3QudGVzdChpKSl7aWYoZGVsZXRlIHRbcl0sbz1vfHwidG9nZ2xlIj09PWks
aT09PShnPyJoaWRlIjoic2hvdyIpKXtpZigic2hvdyIhPT1pfHwhdnx8dm9pZCAwPT09dltyXSlj
b250aW51ZTtnPSEwfWRbcl09diYmdltyXXx8Uy5zdHlsZShlLHIpfWlmKCh1PSFTLmlzRW1wdHlP
YmplY3QodCkpfHwhUy5pc0VtcHR5T2JqZWN0KGQpKWZvcihyIGluIGYmJjE9PT1lLm5vZGVUeXBl
JiYobi5vdmVyZmxvdz1baC5vdmVyZmxvdyxoLm92ZXJmbG93WCxoLm92ZXJmbG93WV0sbnVsbD09
KGw9diYmdi5kaXNwbGF5KSYmKGw9WS5nZXQoZSwiZGlzcGxheSIpKSwibm9uZSI9PT0oYz1TLmNz
cyhlLCJkaXNwbGF5IikpJiYobD9jPWw6KGxlKFtlXSwhMCksbD1lLnN0eWxlLmRpc3BsYXl8fGws
Yz1TLmNzcyhlLCJkaXNwbGF5IiksbGUoW2VdKSkpLCgiaW5saW5lIj09PWN8fCJpbmxpbmUtYmxv
Y2siPT09YyYmbnVsbCE9bCkmJiJub25lIj09PVMuY3NzKGUsImZsb2F0IikmJih1fHwocC5kb25l
KGZ1bmN0aW9uKCl7aC5kaXNwbGF5PWx9KSxudWxsPT1sJiYoYz1oLmRpc3BsYXksbD0ibm9uZSI9
PT1jPyIiOmMpKSxoLmRpc3BsYXk9ImlubGluZS1ibG9jayIpKSxuLm92ZXJmbG93JiYoaC5vdmVy
Zmxvdz0iaGlkZGVuIixwLmFsd2F5cyhmdW5jdGlvbigpe2gub3ZlcmZsb3c9bi5vdmVyZmxvd1sw
XSxoLm92ZXJmbG93WD1uLm92ZXJmbG93WzFdLGgub3ZlcmZsb3dZPW4ub3ZlcmZsb3dbMl19KSks
dT0hMSxkKXV8fCh2PyJoaWRkZW4iaW4gdiYmKGc9di5oaWRkZW4pOnY9WS5hY2Nlc3MoZSwiZnhz
aG93Iix7ZGlzcGxheTpsfSksbyYmKHYuaGlkZGVuPSFnKSxnJiZsZShbZV0sITApLHAuZG9uZShm
dW5jdGlvbigpe2ZvcihyIGluIGd8fGxlKFtlXSksWS5yZW1vdmUoZSwiZnhzaG93IiksZClTLnN0
eWxlKGUscixkW3JdKX0pKSx1PWN0KGc/dltyXTowLHIscCksciBpbiB2fHwodltyXT11LnN0YXJ0
LGcmJih1LmVuZD11LnN0YXJ0LHUuc3RhcnQ9MCkpfV0scHJlZmlsdGVyOmZ1bmN0aW9uKGUsdCl7
dD9mdC5wcmVmaWx0ZXJzLnVuc2hpZnQoZSk6ZnQucHJlZmlsdGVycy5wdXNoKGUpfX0pLFMuc3Bl
ZWQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUmJiJvYmplY3QiPT10eXBlb2YgZT9TLmV4dGVuZCh7
fSxlKTp7Y29tcGxldGU6bnx8IW4mJnR8fG0oZSkmJmUsZHVyYXRpb246ZSxlYXNpbmc6biYmdHx8
dCYmIW0odCkmJnR9O3JldHVybiBTLmZ4Lm9mZj9yLmR1cmF0aW9uPTA6Im51bWJlciIhPXR5cGVv
ZiByLmR1cmF0aW9uJiYoci5kdXJhdGlvbiBpbiBTLmZ4LnNwZWVkcz9yLmR1cmF0aW9uPVMuZngu
c3BlZWRzW3IuZHVyYXRpb25dOnIuZHVyYXRpb249Uy5meC5zcGVlZHMuX2RlZmF1bHQpLG51bGwh
PXIucXVldWUmJiEwIT09ci5xdWV1ZXx8KHIucXVldWU9ImZ4Iiksci5vbGQ9ci5jb21wbGV0ZSxy
LmNvbXBsZXRlPWZ1bmN0aW9uKCl7bShyLm9sZCkmJnIub2xkLmNhbGwodGhpcyksci5xdWV1ZSYm
Uy5kZXF1ZXVlKHRoaXMsci5xdWV1ZSl9LHJ9LFMuZm4uZXh0ZW5kKHtmYWRlVG86ZnVuY3Rpb24o
ZSx0LG4scil7cmV0dXJuIHRoaXMuZmlsdGVyKGFlKS5jc3MoIm9wYWNpdHkiLDApLnNob3coKS5l
bmQoKS5hbmltYXRlKHtvcGFjaXR5OnR9LGUsbixyKX0sYW5pbWF0ZTpmdW5jdGlvbih0LGUsbixy
KXt2YXIgaT1TLmlzRW1wdHlPYmplY3QodCksbz1TLnNwZWVkKGUsbixyKSxhPWZ1bmN0aW9uKCl7
dmFyIGU9ZnQodGhpcyxTLmV4dGVuZCh7fSx0KSxvKTsoaXx8WS5nZXQodGhpcywiZmluaXNoIikp
JiZlLnN0b3AoITApfTtyZXR1cm4gYS5maW5pc2g9YSxpfHwhMT09PW8ucXVldWU/dGhpcy5lYWNo
KGEpOnRoaXMucXVldWUoby5xdWV1ZSxhKX0sc3RvcDpmdW5jdGlvbihpLGUsbyl7dmFyIGE9ZnVu
Y3Rpb24oZSl7dmFyIHQ9ZS5zdG9wO2RlbGV0ZSBlLnN0b3AsdChvKX07cmV0dXJuInN0cmluZyIh
PXR5cGVvZiBpJiYobz1lLGU9aSxpPXZvaWQgMCksZSYmdGhpcy5xdWV1ZShpfHwiZngiLFtdKSx0
aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZT0hMCx0PW51bGwhPWkmJmkrInF1ZXVlSG9va3MiLG49
Uy50aW1lcnMscj1ZLmdldCh0aGlzKTtpZih0KXJbdF0mJnJbdF0uc3RvcCYmYShyW3RdKTtlbHNl
IGZvcih0IGluIHIpclt0XSYmclt0XS5zdG9wJiZhdC50ZXN0KHQpJiZhKHJbdF0pO2Zvcih0PW4u
bGVuZ3RoO3QtLTspblt0XS5lbGVtIT09dGhpc3x8bnVsbCE9aSYmblt0XS5xdWV1ZSE9PWl8fChu
W3RdLmFuaW0uc3RvcChvKSxlPSExLG4uc3BsaWNlKHQsMSkpOyFlJiZvfHxTLmRlcXVldWUodGhp
cyxpKX0pfSxmaW5pc2g6ZnVuY3Rpb24oYSl7cmV0dXJuITEhPT1hJiYoYT1hfHwiZngiKSx0aGlz
LmVhY2goZnVuY3Rpb24oKXt2YXIgZSx0PVkuZ2V0KHRoaXMpLG49dFthKyJxdWV1ZSJdLHI9dFth
KyJxdWV1ZUhvb2tzIl0saT1TLnRpbWVycyxvPW4/bi5sZW5ndGg6MDtmb3IodC5maW5pc2g9ITAs
Uy5xdWV1ZSh0aGlzLGEsW10pLHImJnIuc3RvcCYmci5zdG9wLmNhbGwodGhpcywhMCksZT1pLmxl
bmd0aDtlLS07KWlbZV0uZWxlbT09PXRoaXMmJmlbZV0ucXVldWU9PT1hJiYoaVtlXS5hbmltLnN0
b3AoITApLGkuc3BsaWNlKGUsMSkpO2ZvcihlPTA7ZTxvO2UrKyluW2VdJiZuW2VdLmZpbmlzaCYm
bltlXS5maW5pc2guY2FsbCh0aGlzKTtkZWxldGUgdC5maW5pc2h9KX19KSxTLmVhY2goWyJ0b2dn
bGUiLCJzaG93IiwiaGlkZSJdLGZ1bmN0aW9uKGUscil7dmFyIGk9Uy5mbltyXTtTLmZuW3JdPWZ1
bmN0aW9uKGUsdCxuKXtyZXR1cm4gbnVsbD09ZXx8ImJvb2xlYW4iPT10eXBlb2YgZT9pLmFwcGx5
KHRoaXMsYXJndW1lbnRzKTp0aGlzLmFuaW1hdGUobHQociwhMCksZSx0LG4pfX0pLFMuZWFjaCh7
c2xpZGVEb3duOmx0KCJzaG93Iiksc2xpZGVVcDpsdCgiaGlkZSIpLHNsaWRlVG9nZ2xlOmx0KCJ0
b2dnbGUiKSxmYWRlSW46e29wYWNpdHk6InNob3cifSxmYWRlT3V0OntvcGFjaXR5OiJoaWRlIn0s
ZmFkZVRvZ2dsZTp7b3BhY2l0eToidG9nZ2xlIn19LGZ1bmN0aW9uKGUscil7Uy5mbltlXT1mdW5j
dGlvbihlLHQsbil7cmV0dXJuIHRoaXMuYW5pbWF0ZShyLGUsdCxuKX19KSxTLnRpbWVycz1bXSxT
LmZ4LnRpY2s9ZnVuY3Rpb24oKXt2YXIgZSx0PTAsbj1TLnRpbWVycztmb3IodHQ9RGF0ZS5ub3co
KTt0PG4ubGVuZ3RoO3QrKykoZT1uW3RdKSgpfHxuW3RdIT09ZXx8bi5zcGxpY2UodC0tLDEpO24u
bGVuZ3RofHxTLmZ4LnN0b3AoKSx0dD12b2lkIDB9LFMuZngudGltZXI9ZnVuY3Rpb24oZSl7Uy50
aW1lcnMucHVzaChlKSxTLmZ4LnN0YXJ0KCl9LFMuZnguaW50ZXJ2YWw9MTMsUy5meC5zdGFydD1m
dW5jdGlvbigpe250fHwobnQ9ITAsc3QoKSl9LFMuZnguc3RvcD1mdW5jdGlvbigpe250PW51bGx9
LFMuZnguc3BlZWRzPXtzbG93OjYwMCxmYXN0OjIwMCxfZGVmYXVsdDo0MDB9LFMuZm4uZGVsYXk9
ZnVuY3Rpb24ocixlKXtyZXR1cm4gcj1TLmZ4JiZTLmZ4LnNwZWVkc1tyXXx8cixlPWV8fCJmeCIs
dGhpcy5xdWV1ZShlLGZ1bmN0aW9uKGUsdCl7dmFyIG49Qy5zZXRUaW1lb3V0KGUscik7dC5zdG9w
PWZ1bmN0aW9uKCl7Qy5jbGVhclRpbWVvdXQobil9fSl9LHJ0PUUuY3JlYXRlRWxlbWVudCgiaW5w
dXQiKSxpdD1FLmNyZWF0ZUVsZW1lbnQoInNlbGVjdCIpLmFwcGVuZENoaWxkKEUuY3JlYXRlRWxl
bWVudCgib3B0aW9uIikpLHJ0LnR5cGU9ImNoZWNrYm94Iix5LmNoZWNrT249IiIhPT1ydC52YWx1
ZSx5Lm9wdFNlbGVjdGVkPWl0LnNlbGVjdGVkLChydD1FLmNyZWF0ZUVsZW1lbnQoImlucHV0Iikp
LnZhbHVlPSJ0IixydC50eXBlPSJyYWRpbyIseS5yYWRpb1ZhbHVlPSJ0Ij09PXJ0LnZhbHVlO3Zh
ciBwdCxkdD1TLmV4cHIuYXR0ckhhbmRsZTtTLmZuLmV4dGVuZCh7YXR0cjpmdW5jdGlvbihlLHQp
e3JldHVybiAkKHRoaXMsUy5hdHRyLGUsdCwxPGFyZ3VtZW50cy5sZW5ndGgpfSxyZW1vdmVBdHRy
OmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtTLnJlbW92ZUF0dHIodGhp
cyxlKX0pfX0pLFMuZXh0ZW5kKHthdHRyOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpLG89ZS5ub2Rl
VHlwZTtpZigzIT09byYmOCE9PW8mJjIhPT1vKXJldHVybiJ1bmRlZmluZWQiPT10eXBlb2YgZS5n
ZXRBdHRyaWJ1dGU/Uy5wcm9wKGUsdCxuKTooMT09PW8mJlMuaXNYTUxEb2MoZSl8fChpPVMuYXR0
ckhvb2tzW3QudG9Mb3dlckNhc2UoKV18fChTLmV4cHIubWF0Y2guYm9vbC50ZXN0KHQpP3B0OnZv
aWQgMCkpLHZvaWQgMCE9PW4/bnVsbD09PW4/dm9pZCBTLnJlbW92ZUF0dHIoZSx0KTppJiYic2V0
ImluIGkmJnZvaWQgMCE9PShyPWkuc2V0KGUsbix0KSk/cjooZS5zZXRBdHRyaWJ1dGUodCxuKyIi
KSxuKTppJiYiZ2V0ImluIGkmJm51bGwhPT0ocj1pLmdldChlLHQpKT9yOm51bGw9PShyPVMuZmlu
ZC5hdHRyKGUsdCkpP3ZvaWQgMDpyKX0sYXR0ckhvb2tzOnt0eXBlOntzZXQ6ZnVuY3Rpb24oZSx0
KXtpZigheS5yYWRpb1ZhbHVlJiYicmFkaW8iPT09dCYmQShlLCJpbnB1dCIpKXt2YXIgbj1lLnZh
bHVlO3JldHVybiBlLnNldEF0dHJpYnV0ZSgidHlwZSIsdCksbiYmKGUudmFsdWU9biksdH19fX0s
cmVtb3ZlQXR0cjpmdW5jdGlvbihlLHQpe3ZhciBuLHI9MCxpPXQmJnQubWF0Y2goUCk7aWYoaSYm
MT09PWUubm9kZVR5cGUpd2hpbGUobj1pW3IrK10pZS5yZW1vdmVBdHRyaWJ1dGUobil9fSkscHQ9
e3NldDpmdW5jdGlvbihlLHQsbil7cmV0dXJuITE9PT10P1MucmVtb3ZlQXR0cihlLG4pOmUuc2V0
QXR0cmlidXRlKG4sbiksbn19LFMuZWFjaChTLmV4cHIubWF0Y2guYm9vbC5zb3VyY2UubWF0Y2go
L1x3Ky9nKSxmdW5jdGlvbihlLHQpe3ZhciBhPWR0W3RdfHxTLmZpbmQuYXR0cjtkdFt0XT1mdW5j
dGlvbihlLHQsbil7dmFyIHIsaSxvPXQudG9Mb3dlckNhc2UoKTtyZXR1cm4gbnx8KGk9ZHRbb10s
ZHRbb109cixyPW51bGwhPWEoZSx0LG4pP286bnVsbCxkdFtvXT1pKSxyfX0pO3ZhciBodD0vXig/
OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b24pJC9pLGd0PS9eKD86YXxhcmVhKSQvaTtmdW5j
dGlvbiB2dChlKXtyZXR1cm4oZS5tYXRjaChQKXx8W10pLmpvaW4oIiAiKX1mdW5jdGlvbiB5dChl
KXtyZXR1cm4gZS5nZXRBdHRyaWJ1dGUmJmUuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfHwiIn1mdW5j
dGlvbiBtdChlKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT9lOiJzdHJpbmciPT10eXBlb2YgZSYm
ZS5tYXRjaChQKXx8W119Uy5mbi5leHRlbmQoe3Byb3A6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gJCh0
aGlzLFMucHJvcCxlLHQsMTxhcmd1bWVudHMubGVuZ3RoKX0scmVtb3ZlUHJvcDpmdW5jdGlvbihl
KXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7ZGVsZXRlIHRoaXNbUy5wcm9wRml4W2VdfHxl
XX0pfX0pLFMuZXh0ZW5kKHtwcm9wOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpLG89ZS5ub2RlVHlw
ZTtpZigzIT09byYmOCE9PW8mJjIhPT1vKXJldHVybiAxPT09byYmUy5pc1hNTERvYyhlKXx8KHQ9
Uy5wcm9wRml4W3RdfHx0LGk9Uy5wcm9wSG9va3NbdF0pLHZvaWQgMCE9PW4/aSYmInNldCJpbiBp
JiZ2b2lkIDAhPT0ocj1pLnNldChlLG4sdCkpP3I6ZVt0XT1uOmkmJiJnZXQiaW4gaSYmbnVsbCE9
PShyPWkuZ2V0KGUsdCkpP3I6ZVt0XX0scHJvcEhvb2tzOnt0YWJJbmRleDp7Z2V0OmZ1bmN0aW9u
KGUpe3ZhciB0PVMuZmluZC5hdHRyKGUsInRhYmluZGV4Iik7cmV0dXJuIHQ/cGFyc2VJbnQodCwx
MCk6aHQudGVzdChlLm5vZGVOYW1lKXx8Z3QudGVzdChlLm5vZGVOYW1lKSYmZS5ocmVmPzA6LTF9
fX0scHJvcEZpeDp7ImZvciI6Imh0bWxGb3IiLCJjbGFzcyI6ImNsYXNzTmFtZSJ9fSkseS5vcHRT
ZWxlY3RlZHx8KFMucHJvcEhvb2tzLnNlbGVjdGVkPXtnZXQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5w
YXJlbnROb2RlO3JldHVybiB0JiZ0LnBhcmVudE5vZGUmJnQucGFyZW50Tm9kZS5zZWxlY3RlZElu
ZGV4LG51bGx9LHNldDpmdW5jdGlvbihlKXt2YXIgdD1lLnBhcmVudE5vZGU7dCYmKHQuc2VsZWN0
ZWRJbmRleCx0LnBhcmVudE5vZGUmJnQucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4KX19KSxTLmVh
Y2goWyJ0YWJJbmRleCIsInJlYWRPbmx5IiwibWF4TGVuZ3RoIiwiY2VsbFNwYWNpbmciLCJjZWxs
UGFkZGluZyIsInJvd1NwYW4iLCJjb2xTcGFuIiwidXNlTWFwIiwiZnJhbWVCb3JkZXIiLCJjb250
ZW50RWRpdGFibGUiXSxmdW5jdGlvbigpe1MucHJvcEZpeFt0aGlzLnRvTG93ZXJDYXNlKCldPXRo
aXN9KSxTLmZuLmV4dGVuZCh7YWRkQ2xhc3M6ZnVuY3Rpb24odCl7dmFyIGUsbixyLGksbyxhLHMs
dT0wO2lmKG0odCkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihlKXtTKHRoaXMpLmFkZENsYXNz
KHQuY2FsbCh0aGlzLGUseXQodGhpcykpKX0pO2lmKChlPW10KHQpKS5sZW5ndGgpd2hpbGUobj10
aGlzW3UrK10paWYoaT15dChuKSxyPTE9PT1uLm5vZGVUeXBlJiYiICIrdnQoaSkrIiAiKXthPTA7
d2hpbGUobz1lW2ErK10pci5pbmRleE9mKCIgIitvKyIgIik8MCYmKHIrPW8rIiAiKTtpIT09KHM9
dnQocikpJiZuLnNldEF0dHJpYnV0ZSgiY2xhc3MiLHMpfXJldHVybiB0aGlzfSxyZW1vdmVDbGFz
czpmdW5jdGlvbih0KXt2YXIgZSxuLHIsaSxvLGEscyx1PTA7aWYobSh0KSlyZXR1cm4gdGhpcy5l
YWNoKGZ1bmN0aW9uKGUpe1ModGhpcykucmVtb3ZlQ2xhc3ModC5jYWxsKHRoaXMsZSx5dCh0aGlz
KSkpfSk7aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIHRoaXMuYXR0cigiY2xhc3MiLCIiKTtp
ZigoZT1tdCh0KSkubGVuZ3RoKXdoaWxlKG49dGhpc1t1KytdKWlmKGk9eXQobikscj0xPT09bi5u
b2RlVHlwZSYmIiAiK3Z0KGkpKyIgIil7YT0wO3doaWxlKG89ZVthKytdKXdoaWxlKC0xPHIuaW5k
ZXhPZigiICIrbysiICIpKXI9ci5yZXBsYWNlKCIgIitvKyIgIiwiICIpO2khPT0ocz12dChyKSkm
Jm4uc2V0QXR0cmlidXRlKCJjbGFzcyIscyl9cmV0dXJuIHRoaXN9LHRvZ2dsZUNsYXNzOmZ1bmN0
aW9uKGksdCl7dmFyIG89dHlwZW9mIGksYT0ic3RyaW5nIj09PW98fEFycmF5LmlzQXJyYXkoaSk7
cmV0dXJuImJvb2xlYW4iPT10eXBlb2YgdCYmYT90P3RoaXMuYWRkQ2xhc3MoaSk6dGhpcy5yZW1v
dmVDbGFzcyhpKTptKGkpP3RoaXMuZWFjaChmdW5jdGlvbihlKXtTKHRoaXMpLnRvZ2dsZUNsYXNz
KGkuY2FsbCh0aGlzLGUseXQodGhpcyksdCksdCl9KTp0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIg
ZSx0LG4scjtpZihhKXt0PTAsbj1TKHRoaXMpLHI9bXQoaSk7d2hpbGUoZT1yW3QrK10pbi5oYXND
bGFzcyhlKT9uLnJlbW92ZUNsYXNzKGUpOm4uYWRkQ2xhc3MoZSl9ZWxzZSB2b2lkIDAhPT1pJiYi
Ym9vbGVhbiIhPT1vfHwoKGU9eXQodGhpcykpJiZZLnNldCh0aGlzLCJfX2NsYXNzTmFtZV9fIixl
KSx0aGlzLnNldEF0dHJpYnV0ZSYmdGhpcy5zZXRBdHRyaWJ1dGUoImNsYXNzIixlfHwhMT09PWk/
IiI6WS5nZXQodGhpcywiX19jbGFzc05hbWVfXyIpfHwiIikpfSl9LGhhc0NsYXNzOmZ1bmN0aW9u
KGUpe3ZhciB0LG4scj0wO3Q9IiAiK2UrIiAiO3doaWxlKG49dGhpc1tyKytdKWlmKDE9PT1uLm5v
ZGVUeXBlJiYtMTwoIiAiK3Z0KHl0KG4pKSsiICIpLmluZGV4T2YodCkpcmV0dXJuITA7cmV0dXJu
ITF9fSk7dmFyIHh0PS9cci9nO1MuZm4uZXh0ZW5kKHt2YWw6ZnVuY3Rpb24obil7dmFyIHIsZSxp
LHQ9dGhpc1swXTtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT1tKG4pLHRoaXMuZWFjaChmdW5j
dGlvbihlKXt2YXIgdDsxPT09dGhpcy5ub2RlVHlwZSYmKG51bGw9PSh0PWk/bi5jYWxsKHRoaXMs
ZSxTKHRoaXMpLnZhbCgpKTpuKT90PSIiOiJudW1iZXIiPT10eXBlb2YgdD90Kz0iIjpBcnJheS5p
c0FycmF5KHQpJiYodD1TLm1hcCh0LGZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lPyIiOmUrIiJ9
KSksKHI9Uy52YWxIb29rc1t0aGlzLnR5cGVdfHxTLnZhbEhvb2tzW3RoaXMubm9kZU5hbWUudG9M
b3dlckNhc2UoKV0pJiYic2V0ImluIHImJnZvaWQgMCE9PXIuc2V0KHRoaXMsdCwidmFsdWUiKXx8
KHRoaXMudmFsdWU9dCkpfSkpOnQ/KHI9Uy52YWxIb29rc1t0LnR5cGVdfHxTLnZhbEhvb2tzW3Qu
bm9kZU5hbWUudG9Mb3dlckNhc2UoKV0pJiYiZ2V0ImluIHImJnZvaWQgMCE9PShlPXIuZ2V0KHQs
InZhbHVlIikpP2U6InN0cmluZyI9PXR5cGVvZihlPXQudmFsdWUpP2UucmVwbGFjZSh4dCwiIik6
bnVsbD09ZT8iIjplOnZvaWQgMH19KSxTLmV4dGVuZCh7dmFsSG9va3M6e29wdGlvbjp7Z2V0OmZ1
bmN0aW9uKGUpe3ZhciB0PVMuZmluZC5hdHRyKGUsInZhbHVlIik7cmV0dXJuIG51bGwhPXQ/dDp2
dChTLnRleHQoZSkpfX0sc2VsZWN0OntnZXQ6ZnVuY3Rpb24oZSl7dmFyIHQsbixyLGk9ZS5vcHRp
b25zLG89ZS5zZWxlY3RlZEluZGV4LGE9InNlbGVjdC1vbmUiPT09ZS50eXBlLHM9YT9udWxsOltd
LHU9YT9vKzE6aS5sZW5ndGg7Zm9yKHI9bzwwP3U6YT9vOjA7cjx1O3IrKylpZigoKG49aVtyXSku
c2VsZWN0ZWR8fHI9PT1vKSYmIW4uZGlzYWJsZWQmJighbi5wYXJlbnROb2RlLmRpc2FibGVkfHwh
QShuLnBhcmVudE5vZGUsIm9wdGdyb3VwIikpKXtpZih0PVMobikudmFsKCksYSlyZXR1cm4gdDtz
LnB1c2godCl9cmV0dXJuIHN9LHNldDpmdW5jdGlvbihlLHQpe3ZhciBuLHIsaT1lLm9wdGlvbnMs
bz1TLm1ha2VBcnJheSh0KSxhPWkubGVuZ3RoO3doaWxlKGEtLSkoKHI9aVthXSkuc2VsZWN0ZWQ9
LTE8Uy5pbkFycmF5KFMudmFsSG9va3Mub3B0aW9uLmdldChyKSxvKSkmJihuPSEwKTtyZXR1cm4g
bnx8KGUuc2VsZWN0ZWRJbmRleD0tMSksb319fX0pLFMuZWFjaChbInJhZGlvIiwiY2hlY2tib3gi
XSxmdW5jdGlvbigpe1MudmFsSG9va3NbdGhpc109e3NldDpmdW5jdGlvbihlLHQpe2lmKEFycmF5
LmlzQXJyYXkodCkpcmV0dXJuIGUuY2hlY2tlZD0tMTxTLmluQXJyYXkoUyhlKS52YWwoKSx0KX19
LHkuY2hlY2tPbnx8KFMudmFsSG9va3NbdGhpc10uZ2V0PWZ1bmN0aW9uKGUpe3JldHVybiBudWxs
PT09ZS5nZXRBdHRyaWJ1dGUoInZhbHVlIik/Im9uIjplLnZhbHVlfSl9KSx5LmZvY3VzaW49Im9u
Zm9jdXNpbiJpbiBDO3ZhciBidD0vXig/OmZvY3VzaW5mb2N1c3xmb2N1c291dGJsdXIpJC8sd3Q9
ZnVuY3Rpb24oZSl7ZS5zdG9wUHJvcGFnYXRpb24oKX07Uy5leHRlbmQoUy5ldmVudCx7dHJpZ2dl
cjpmdW5jdGlvbihlLHQsbixyKXt2YXIgaSxvLGEscyx1LGwsYyxmLHA9W258fEVdLGQ9di5jYWxs
KGUsInR5cGUiKT9lLnR5cGU6ZSxoPXYuY2FsbChlLCJuYW1lc3BhY2UiKT9lLm5hbWVzcGFjZS5z
cGxpdCgiLiIpOltdO2lmKG89Zj1hPW49bnx8RSwzIT09bi5ub2RlVHlwZSYmOCE9PW4ubm9kZVR5
cGUmJiFidC50ZXN0KGQrUy5ldmVudC50cmlnZ2VyZWQpJiYoLTE8ZC5pbmRleE9mKCIuIikmJihk
PShoPWQuc3BsaXQoIi4iKSkuc2hpZnQoKSxoLnNvcnQoKSksdT1kLmluZGV4T2YoIjoiKTwwJiYi
b24iK2QsKGU9ZVtTLmV4cGFuZG9dP2U6bmV3IFMuRXZlbnQoZCwib2JqZWN0Ij09dHlwZW9mIGUm
JmUpKS5pc1RyaWdnZXI9cj8yOjMsZS5uYW1lc3BhY2U9aC5qb2luKCIuIiksZS5ybmFtZXNwYWNl
PWUubmFtZXNwYWNlP25ldyBSZWdFeHAoIihefFxcLikiK2guam9pbigiXFwuKD86LipcXC58KSIp
KyIoXFwufCQpIik6bnVsbCxlLnJlc3VsdD12b2lkIDAsZS50YXJnZXR8fChlLnRhcmdldD1uKSx0
PW51bGw9PXQ/W2VdOlMubWFrZUFycmF5KHQsW2VdKSxjPVMuZXZlbnQuc3BlY2lhbFtkXXx8e30s
cnx8IWMudHJpZ2dlcnx8ITEhPT1jLnRyaWdnZXIuYXBwbHkobix0KSkpe2lmKCFyJiYhYy5ub0J1
YmJsZSYmIXgobikpe2ZvcihzPWMuZGVsZWdhdGVUeXBlfHxkLGJ0LnRlc3QocytkKXx8KG89by5w
YXJlbnROb2RlKTtvO289by5wYXJlbnROb2RlKXAucHVzaChvKSxhPW87YT09PShuLm93bmVyRG9j
dW1lbnR8fEUpJiZwLnB1c2goYS5kZWZhdWx0Vmlld3x8YS5wYXJlbnRXaW5kb3d8fEMpfWk9MDt3
aGlsZSgobz1wW2krK10pJiYhZS5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpKWY9byxlLnR5cGU9MTxp
P3M6Yy5iaW5kVHlwZXx8ZCwobD0oWS5nZXQobywiZXZlbnRzIil8fE9iamVjdC5jcmVhdGUobnVs
bCkpW2UudHlwZV0mJlkuZ2V0KG8sImhhbmRsZSIpKSYmbC5hcHBseShvLHQpLChsPXUmJm9bdV0p
JiZsLmFwcGx5JiZWKG8pJiYoZS5yZXN1bHQ9bC5hcHBseShvLHQpLCExPT09ZS5yZXN1bHQmJmUu
cHJldmVudERlZmF1bHQoKSk7cmV0dXJuIGUudHlwZT1kLHJ8fGUuaXNEZWZhdWx0UHJldmVudGVk
KCl8fGMuX2RlZmF1bHQmJiExIT09Yy5fZGVmYXVsdC5hcHBseShwLnBvcCgpLHQpfHwhVihuKXx8
dSYmbShuW2RdKSYmIXgobikmJigoYT1uW3VdKSYmKG5bdV09bnVsbCksUy5ldmVudC50cmlnZ2Vy
ZWQ9ZCxlLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkmJmYuYWRkRXZlbnRMaXN0ZW5lcihkLHd0KSxu
W2RdKCksZS5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpJiZmLnJlbW92ZUV2ZW50TGlzdGVuZXIoZCx3
dCksUy5ldmVudC50cmlnZ2VyZWQ9dm9pZCAwLGEmJihuW3VdPWEpKSxlLnJlc3VsdH19LHNpbXVs
YXRlOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1TLmV4dGVuZChuZXcgUy5FdmVudCxuLHt0eXBlOmUs
aXNTaW11bGF0ZWQ6ITB9KTtTLmV2ZW50LnRyaWdnZXIocixudWxsLHQpfX0pLFMuZm4uZXh0ZW5k
KHt0cmlnZ2VyOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe1MuZXZl
bnQudHJpZ2dlcihlLHQsdGhpcyl9KX0sdHJpZ2dlckhhbmRsZXI6ZnVuY3Rpb24oZSx0KXt2YXIg
bj10aGlzWzBdO2lmKG4pcmV0dXJuIFMuZXZlbnQudHJpZ2dlcihlLHQsbiwhMCl9fSkseS5mb2N1
c2lufHxTLmVhY2goe2ZvY3VzOiJmb2N1c2luIixibHVyOiJmb2N1c291dCJ9LGZ1bmN0aW9uKG4s
cil7dmFyIGk9ZnVuY3Rpb24oZSl7Uy5ldmVudC5zaW11bGF0ZShyLGUudGFyZ2V0LFMuZXZlbnQu
Zml4KGUpKX07Uy5ldmVudC5zcGVjaWFsW3JdPXtzZXR1cDpmdW5jdGlvbigpe3ZhciBlPXRoaXMu
b3duZXJEb2N1bWVudHx8dGhpcy5kb2N1bWVudHx8dGhpcyx0PVkuYWNjZXNzKGUscik7dHx8ZS5h
ZGRFdmVudExpc3RlbmVyKG4saSwhMCksWS5hY2Nlc3MoZSxyLCh0fHwwKSsxKX0sdGVhcmRvd246
ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm93bmVyRG9jdW1lbnR8fHRoaXMuZG9jdW1lbnR8fHRoaXMs
dD1ZLmFjY2VzcyhlLHIpLTE7dD9ZLmFjY2VzcyhlLHIsdCk6KGUucmVtb3ZlRXZlbnRMaXN0ZW5l
cihuLGksITApLFkucmVtb3ZlKGUscikpfX19KTt2YXIgVHQ9Qy5sb2NhdGlvbixDdD17Z3VpZDpE
YXRlLm5vdygpfSxFdD0vXD8vO1MucGFyc2VYTUw9ZnVuY3Rpb24oZSl7dmFyIHQ7aWYoIWV8fCJz
dHJpbmciIT10eXBlb2YgZSlyZXR1cm4gbnVsbDt0cnl7dD0obmV3IEMuRE9NUGFyc2VyKS5wYXJz
ZUZyb21TdHJpbmcoZSwidGV4dC94bWwiKX1jYXRjaChlKXt0PXZvaWQgMH1yZXR1cm4gdCYmIXQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInBhcnNlcmVycm9yIikubGVuZ3RofHxTLmVycm9yKCJJbnZh
bGlkIFhNTDogIitlKSx0fTt2YXIgU3Q9L1xbXF0kLyxrdD0vXHI/XG4vZyxBdD0vXig/OnN1Ym1p
dHxidXR0b258aW1hZ2V8cmVzZXR8ZmlsZSkkL2ksTnQ9L14oPzppbnB1dHxzZWxlY3R8dGV4dGFy
ZWF8a2V5Z2VuKS9pO2Z1bmN0aW9uIER0KG4sZSxyLGkpe3ZhciB0O2lmKEFycmF5LmlzQXJyYXko
ZSkpUy5lYWNoKGUsZnVuY3Rpb24oZSx0KXtyfHxTdC50ZXN0KG4pP2kobix0KTpEdChuKyJbIiso
Im9iamVjdCI9PXR5cGVvZiB0JiZudWxsIT10P2U6IiIpKyJdIix0LHIsaSl9KTtlbHNlIGlmKHJ8
fCJvYmplY3QiIT09dyhlKSlpKG4sZSk7ZWxzZSBmb3IodCBpbiBlKUR0KG4rIlsiK3QrIl0iLGVb
dF0scixpKX1TLnBhcmFtPWZ1bmN0aW9uKGUsdCl7dmFyIG4scj1bXSxpPWZ1bmN0aW9uKGUsdCl7
dmFyIG49bSh0KT90KCk6dDtyW3IubGVuZ3RoXT1lbmNvZGVVUklDb21wb25lbnQoZSkrIj0iK2Vu
Y29kZVVSSUNvbXBvbmVudChudWxsPT1uPyIiOm4pfTtpZihudWxsPT1lKXJldHVybiIiO2lmKEFy
cmF5LmlzQXJyYXkoZSl8fGUuanF1ZXJ5JiYhUy5pc1BsYWluT2JqZWN0KGUpKVMuZWFjaChlLGZ1
bmN0aW9uKCl7aSh0aGlzLm5hbWUsdGhpcy52YWx1ZSl9KTtlbHNlIGZvcihuIGluIGUpRHQobixl
W25dLHQsaSk7cmV0dXJuIHIuam9pbigiJiIpfSxTLmZuLmV4dGVuZCh7c2VyaWFsaXplOmZ1bmN0
aW9uKCl7cmV0dXJuIFMucGFyYW0odGhpcy5zZXJpYWxpemVBcnJheSgpKX0sc2VyaWFsaXplQXJy
YXk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXt2YXIgZT1TLnByb3AodGhp
cywiZWxlbWVudHMiKTtyZXR1cm4gZT9TLm1ha2VBcnJheShlKTp0aGlzfSkuZmlsdGVyKGZ1bmN0
aW9uKCl7dmFyIGU9dGhpcy50eXBlO3JldHVybiB0aGlzLm5hbWUmJiFTKHRoaXMpLmlzKCI6ZGlz
YWJsZWQiKSYmTnQudGVzdCh0aGlzLm5vZGVOYW1lKSYmIUF0LnRlc3QoZSkmJih0aGlzLmNoZWNr
ZWR8fCFwZS50ZXN0KGUpKX0pLm1hcChmdW5jdGlvbihlLHQpe3ZhciBuPVModGhpcykudmFsKCk7
cmV0dXJuIG51bGw9PW4/bnVsbDpBcnJheS5pc0FycmF5KG4pP1MubWFwKG4sZnVuY3Rpb24oZSl7
cmV0dXJue25hbWU6dC5uYW1lLHZhbHVlOmUucmVwbGFjZShrdCwiXHJcbiIpfX0pOntuYW1lOnQu
bmFtZSx2YWx1ZTpuLnJlcGxhY2Uoa3QsIlxyXG4iKX19KS5nZXQoKX19KTt2YXIganQ9LyUyMC9n
LHF0PS8jLiokLyxMdD0vKFs/Jl0pXz1bXiZdKi8sSHQ9L14oLio/KTpbIFx0XSooW15cclxuXSop
JC9nbSxPdD0vXig/OkdFVHxIRUFEKSQvLFB0PS9eXC9cLy8sUnQ9e30sTXQ9e30sSXQ9IiovIi5j
b25jYXQoIioiKSxXdD1FLmNyZWF0ZUVsZW1lbnQoImEiKTtmdW5jdGlvbiBGdChvKXtyZXR1cm4g
ZnVuY3Rpb24oZSx0KXsic3RyaW5nIiE9dHlwZW9mIGUmJih0PWUsZT0iKiIpO3ZhciBuLHI9MCxp
PWUudG9Mb3dlckNhc2UoKS5tYXRjaChQKXx8W107aWYobSh0KSl3aGlsZShuPWlbcisrXSkiKyI9
PT1uWzBdPyhuPW4uc2xpY2UoMSl8fCIqIiwob1tuXT1vW25dfHxbXSkudW5zaGlmdCh0KSk6KG9b
bl09b1tuXXx8W10pLnB1c2godCl9fWZ1bmN0aW9uIEJ0KHQsaSxvLGEpe3ZhciBzPXt9LHU9dD09
PU10O2Z1bmN0aW9uIGwoZSl7dmFyIHI7cmV0dXJuIHNbZV09ITAsUy5lYWNoKHRbZV18fFtdLGZ1
bmN0aW9uKGUsdCl7dmFyIG49dChpLG8sYSk7cmV0dXJuInN0cmluZyIhPXR5cGVvZiBufHx1fHxz
W25dP3U/IShyPW4pOnZvaWQgMDooaS5kYXRhVHlwZXMudW5zaGlmdChuKSxsKG4pLCExKX0pLHJ9
cmV0dXJuIGwoaS5kYXRhVHlwZXNbMF0pfHwhc1siKiJdJiZsKCIqIil9ZnVuY3Rpb24gJHQoZSx0
KXt2YXIgbixyLGk9Uy5hamF4U2V0dGluZ3MuZmxhdE9wdGlvbnN8fHt9O2ZvcihuIGluIHQpdm9p
ZCAwIT09dFtuXSYmKChpW25dP2U6cnx8KHI9e30pKVtuXT10W25dKTtyZXR1cm4gciYmUy5leHRl
bmQoITAsZSxyKSxlfVd0LmhyZWY9VHQuaHJlZixTLmV4dGVuZCh7YWN0aXZlOjAsbGFzdE1vZGlm
aWVkOnt9LGV0YWc6e30sYWpheFNldHRpbmdzOnt1cmw6VHQuaHJlZix0eXBlOiJHRVQiLGlzTG9j
YWw6L14oPzphYm91dHxhcHB8YXBwLXN0b3JhZ2V8ListZXh0ZW5zaW9ufGZpbGV8cmVzfHdpZGdl
dCk6JC8udGVzdChUdC5wcm90b2NvbCksZ2xvYmFsOiEwLHByb2Nlc3NEYXRhOiEwLGFzeW5jOiEw
LGNvbnRlbnRUeXBlOiJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7IGNoYXJzZXQ9
VVRGLTgiLGFjY2VwdHM6eyIqIjpJdCx0ZXh0OiJ0ZXh0L3BsYWluIixodG1sOiJ0ZXh0L2h0bWwi
LHhtbDoiYXBwbGljYXRpb24veG1sLCB0ZXh0L3htbCIsanNvbjoiYXBwbGljYXRpb24vanNvbiwg
dGV4dC9qYXZhc2NyaXB0In0sY29udGVudHM6e3htbDovXGJ4bWxcYi8saHRtbDovXGJodG1sLyxq
c29uOi9cYmpzb25cYi99LHJlc3BvbnNlRmllbGRzOnt4bWw6InJlc3BvbnNlWE1MIix0ZXh0OiJy
ZXNwb25zZVRleHQiLGpzb246InJlc3BvbnNlSlNPTiJ9LGNvbnZlcnRlcnM6eyIqIHRleHQiOlN0
cmluZywidGV4dCBodG1sIjohMCwidGV4dCBqc29uIjpKU09OLnBhcnNlLCJ0ZXh0IHhtbCI6Uy5w
YXJzZVhNTH0sZmxhdE9wdGlvbnM6e3VybDohMCxjb250ZXh0OiEwfX0sYWpheFNldHVwOmZ1bmN0
aW9uKGUsdCl7cmV0dXJuIHQ/JHQoJHQoZSxTLmFqYXhTZXR0aW5ncyksdCk6JHQoUy5hamF4U2V0
dGluZ3MsZSl9LGFqYXhQcmVmaWx0ZXI6RnQoUnQpLGFqYXhUcmFuc3BvcnQ6RnQoTXQpLGFqYXg6
ZnVuY3Rpb24oZSx0KXsib2JqZWN0Ij09dHlwZW9mIGUmJih0PWUsZT12b2lkIDApLHQ9dHx8e307
dmFyIGMsZixwLG4sZCxyLGgsZyxpLG8sdj1TLmFqYXhTZXR1cCh7fSx0KSx5PXYuY29udGV4dHx8
dixtPXYuY29udGV4dCYmKHkubm9kZVR5cGV8fHkuanF1ZXJ5KT9TKHkpOlMuZXZlbnQseD1TLkRl
ZmVycmVkKCksYj1TLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSx3PXYuc3RhdHVzQ29kZXx8e30s
YT17fSxzPXt9LHU9ImNhbmNlbGVkIixUPXtyZWFkeVN0YXRlOjAsZ2V0UmVzcG9uc2VIZWFkZXI6
ZnVuY3Rpb24oZSl7dmFyIHQ7aWYoaCl7aWYoIW4pe249e307d2hpbGUodD1IdC5leGVjKHApKW5b
dFsxXS50b0xvd2VyQ2FzZSgpKyIgIl09KG5bdFsxXS50b0xvd2VyQ2FzZSgpKyIgIl18fFtdKS5j
b25jYXQodFsyXSl9dD1uW2UudG9Mb3dlckNhc2UoKSsiICJdfXJldHVybiBudWxsPT10P251bGw6
dC5qb2luKCIsICIpfSxnZXRBbGxSZXNwb25zZUhlYWRlcnM6ZnVuY3Rpb24oKXtyZXR1cm4gaD9w
Om51bGx9LHNldFJlcXVlc3RIZWFkZXI6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbnVsbD09aCYmKGU9
c1tlLnRvTG93ZXJDYXNlKCldPXNbZS50b0xvd2VyQ2FzZSgpXXx8ZSxhW2VdPXQpLHRoaXN9LG92
ZXJyaWRlTWltZVR5cGU6ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PWgmJih2Lm1pbWVUeXBlPWUp
LHRoaXN9LHN0YXR1c0NvZGU6ZnVuY3Rpb24oZSl7dmFyIHQ7aWYoZSlpZihoKVQuYWx3YXlzKGVb
VC5zdGF0dXNdKTtlbHNlIGZvcih0IGluIGUpd1t0XT1bd1t0XSxlW3RdXTtyZXR1cm4gdGhpc30s
YWJvcnQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZXx8dTtyZXR1cm4gYyYmYy5hYm9ydCh0KSxsKDAsdCks
dGhpc319O2lmKHgucHJvbWlzZShUKSx2LnVybD0oKGV8fHYudXJsfHxUdC5ocmVmKSsiIikucmVw
bGFjZShQdCxUdC5wcm90b2NvbCsiLy8iKSx2LnR5cGU9dC5tZXRob2R8fHQudHlwZXx8di5tZXRo
b2R8fHYudHlwZSx2LmRhdGFUeXBlcz0odi5kYXRhVHlwZXx8IioiKS50b0xvd2VyQ2FzZSgpLm1h
dGNoKFApfHxbIiJdLG51bGw9PXYuY3Jvc3NEb21haW4pe3I9RS5jcmVhdGVFbGVtZW50KCJhIik7
dHJ5e3IuaHJlZj12LnVybCxyLmhyZWY9ci5ocmVmLHYuY3Jvc3NEb21haW49V3QucHJvdG9jb2wr
Ii8vIitXdC5ob3N0IT1yLnByb3RvY29sKyIvLyIrci5ob3N0fWNhdGNoKGUpe3YuY3Jvc3NEb21h
aW49ITB9fWlmKHYuZGF0YSYmdi5wcm9jZXNzRGF0YSYmInN0cmluZyIhPXR5cGVvZiB2LmRhdGEm
Jih2LmRhdGE9Uy5wYXJhbSh2LmRhdGEsdi50cmFkaXRpb25hbCkpLEJ0KFJ0LHYsdCxUKSxoKXJl
dHVybiBUO2ZvcihpIGluKGc9Uy5ldmVudCYmdi5nbG9iYWwpJiYwPT1TLmFjdGl2ZSsrJiZTLmV2
ZW50LnRyaWdnZXIoImFqYXhTdGFydCIpLHYudHlwZT12LnR5cGUudG9VcHBlckNhc2UoKSx2Lmhh
c0NvbnRlbnQ9IU90LnRlc3Qodi50eXBlKSxmPXYudXJsLnJlcGxhY2UocXQsIiIpLHYuaGFzQ29u
dGVudD92LmRhdGEmJnYucHJvY2Vzc0RhdGEmJjA9PT0odi5jb250ZW50VHlwZXx8IiIpLmluZGV4
T2YoImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIpJiYodi5kYXRhPXYuZGF0YS5y
ZXBsYWNlKGp0LCIrIikpOihvPXYudXJsLnNsaWNlKGYubGVuZ3RoKSx2LmRhdGEmJih2LnByb2Nl
c3NEYXRhfHwic3RyaW5nIj09dHlwZW9mIHYuZGF0YSkmJihmKz0oRXQudGVzdChmKT8iJiI6Ij8i
KSt2LmRhdGEsZGVsZXRlIHYuZGF0YSksITE9PT12LmNhY2hlJiYoZj1mLnJlcGxhY2UoTHQsIiQx
Iiksbz0oRXQudGVzdChmKT8iJiI6Ij8iKSsiXz0iK0N0Lmd1aWQrKytvKSx2LnVybD1mK28pLHYu
aWZNb2RpZmllZCYmKFMubGFzdE1vZGlmaWVkW2ZdJiZULnNldFJlcXVlc3RIZWFkZXIoIklmLU1v
ZGlmaWVkLVNpbmNlIixTLmxhc3RNb2RpZmllZFtmXSksUy5ldGFnW2ZdJiZULnNldFJlcXVlc3RI
ZWFkZXIoIklmLU5vbmUtTWF0Y2giLFMuZXRhZ1tmXSkpLCh2LmRhdGEmJnYuaGFzQ29udGVudCYm
ITEhPT12LmNvbnRlbnRUeXBlfHx0LmNvbnRlbnRUeXBlKSYmVC5zZXRSZXF1ZXN0SGVhZGVyKCJD
b250ZW50LVR5cGUiLHYuY29udGVudFR5cGUpLFQuc2V0UmVxdWVzdEhlYWRlcigiQWNjZXB0Iix2
LmRhdGFUeXBlc1swXSYmdi5hY2NlcHRzW3YuZGF0YVR5cGVzWzBdXT92LmFjY2VwdHNbdi5kYXRh
VHlwZXNbMF1dKygiKiIhPT12LmRhdGFUeXBlc1swXT8iLCAiK0l0KyI7IHE9MC4wMSI6IiIpOnYu
YWNjZXB0c1siKiJdKSx2LmhlYWRlcnMpVC5zZXRSZXF1ZXN0SGVhZGVyKGksdi5oZWFkZXJzW2ld
KTtpZih2LmJlZm9yZVNlbmQmJighMT09PXYuYmVmb3JlU2VuZC5jYWxsKHksVCx2KXx8aCkpcmV0
dXJuIFQuYWJvcnQoKTtpZih1PSJhYm9ydCIsYi5hZGQodi5jb21wbGV0ZSksVC5kb25lKHYuc3Vj
Y2VzcyksVC5mYWlsKHYuZXJyb3IpLGM9QnQoTXQsdix0LFQpKXtpZihULnJlYWR5U3RhdGU9MSxn
JiZtLnRyaWdnZXIoImFqYXhTZW5kIixbVCx2XSksaClyZXR1cm4gVDt2LmFzeW5jJiYwPHYudGlt
ZW91dCYmKGQ9Qy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7VC5hYm9ydCgidGltZW91dCIpfSx2LnRp
bWVvdXQpKTt0cnl7aD0hMSxjLnNlbmQoYSxsKX1jYXRjaChlKXtpZihoKXRocm93IGU7bCgtMSxl
KX19ZWxzZSBsKC0xLCJObyBUcmFuc3BvcnQiKTtmdW5jdGlvbiBsKGUsdCxuLHIpe3ZhciBpLG8s
YSxzLHUsbD10O2h8fChoPSEwLGQmJkMuY2xlYXJUaW1lb3V0KGQpLGM9dm9pZCAwLHA9cnx8IiIs
VC5yZWFkeVN0YXRlPTA8ZT80OjAsaT0yMDA8PWUmJmU8MzAwfHwzMDQ9PT1lLG4mJihzPWZ1bmN0
aW9uKGUsdCxuKXt2YXIgcixpLG8sYSxzPWUuY29udGVudHMsdT1lLmRhdGFUeXBlczt3aGlsZSgi
KiI9PT11WzBdKXUuc2hpZnQoKSx2b2lkIDA9PT1yJiYocj1lLm1pbWVUeXBlfHx0LmdldFJlc3Bv
bnNlSGVhZGVyKCJDb250ZW50LVR5cGUiKSk7aWYocilmb3IoaSBpbiBzKWlmKHNbaV0mJnNbaV0u
dGVzdChyKSl7dS51bnNoaWZ0KGkpO2JyZWFrfWlmKHVbMF1pbiBuKW89dVswXTtlbHNle2Zvcihp
IGluIG4pe2lmKCF1WzBdfHxlLmNvbnZlcnRlcnNbaSsiICIrdVswXV0pe289aTticmVha31hfHwo
YT1pKX1vPW98fGF9aWYobylyZXR1cm4gbyE9PXVbMF0mJnUudW5zaGlmdChvKSxuW29dfSh2LFQs
bikpLCFpJiYtMTxTLmluQXJyYXkoInNjcmlwdCIsdi5kYXRhVHlwZXMpJiYodi5jb252ZXJ0ZXJz
WyJ0ZXh0IHNjcmlwdCJdPWZ1bmN0aW9uKCl7fSkscz1mdW5jdGlvbihlLHQsbixyKXt2YXIgaSxv
LGEscyx1LGw9e30sYz1lLmRhdGFUeXBlcy5zbGljZSgpO2lmKGNbMV0pZm9yKGEgaW4gZS5jb252
ZXJ0ZXJzKWxbYS50b0xvd2VyQ2FzZSgpXT1lLmNvbnZlcnRlcnNbYV07bz1jLnNoaWZ0KCk7d2hp
bGUobylpZihlLnJlc3BvbnNlRmllbGRzW29dJiYobltlLnJlc3BvbnNlRmllbGRzW29dXT10KSwh
dSYmciYmZS5kYXRhRmlsdGVyJiYodD1lLmRhdGFGaWx0ZXIodCxlLmRhdGFUeXBlKSksdT1vLG89
Yy5zaGlmdCgpKWlmKCIqIj09PW8pbz11O2Vsc2UgaWYoIioiIT09dSYmdSE9PW8pe2lmKCEoYT1s
W3UrIiAiK29dfHxsWyIqICIrb10pKWZvcihpIGluIGwpaWYoKHM9aS5zcGxpdCgiICIpKVsxXT09
PW8mJihhPWxbdSsiICIrc1swXV18fGxbIiogIitzWzBdXSkpeyEwPT09YT9hPWxbaV06ITAhPT1s
W2ldJiYobz1zWzBdLGMudW5zaGlmdChzWzFdKSk7YnJlYWt9aWYoITAhPT1hKWlmKGEmJmVbInRo
cm93cyJdKXQ9YSh0KTtlbHNlIHRyeXt0PWEodCl9Y2F0Y2goZSl7cmV0dXJue3N0YXRlOiJwYXJz
ZXJlcnJvciIsZXJyb3I6YT9lOiJObyBjb252ZXJzaW9uIGZyb20gIit1KyIgdG8gIitvfX19cmV0
dXJue3N0YXRlOiJzdWNjZXNzIixkYXRhOnR9fSh2LHMsVCxpKSxpPyh2LmlmTW9kaWZpZWQmJigo
dT1ULmdldFJlc3BvbnNlSGVhZGVyKCJMYXN0LU1vZGlmaWVkIikpJiYoUy5sYXN0TW9kaWZpZWRb
Zl09dSksKHU9VC5nZXRSZXNwb25zZUhlYWRlcigiZXRhZyIpKSYmKFMuZXRhZ1tmXT11KSksMjA0
PT09ZXx8IkhFQUQiPT09di50eXBlP2w9Im5vY29udGVudCI6MzA0PT09ZT9sPSJub3Rtb2RpZmll
ZCI6KGw9cy5zdGF0ZSxvPXMuZGF0YSxpPSEoYT1zLmVycm9yKSkpOihhPWwsIWUmJmx8fChsPSJl
cnJvciIsZTwwJiYoZT0wKSkpLFQuc3RhdHVzPWUsVC5zdGF0dXNUZXh0PSh0fHxsKSsiIixpP3gu
cmVzb2x2ZVdpdGgoeSxbbyxsLFRdKTp4LnJlamVjdFdpdGgoeSxbVCxsLGFdKSxULnN0YXR1c0Nv
ZGUodyksdz12b2lkIDAsZyYmbS50cmlnZ2VyKGk/ImFqYXhTdWNjZXNzIjoiYWpheEVycm9yIixb
VCx2LGk/bzphXSksYi5maXJlV2l0aCh5LFtULGxdKSxnJiYobS50cmlnZ2VyKCJhamF4Q29tcGxl
dGUiLFtULHZdKSwtLVMuYWN0aXZlfHxTLmV2ZW50LnRyaWdnZXIoImFqYXhTdG9wIikpKX1yZXR1
cm4gVH0sZ2V0SlNPTjpmdW5jdGlvbihlLHQsbil7cmV0dXJuIFMuZ2V0KGUsdCxuLCJqc29uIil9
LGdldFNjcmlwdDpmdW5jdGlvbihlLHQpe3JldHVybiBTLmdldChlLHZvaWQgMCx0LCJzY3JpcHQi
KX19KSxTLmVhY2goWyJnZXQiLCJwb3N0Il0sZnVuY3Rpb24oZSxpKXtTW2ldPWZ1bmN0aW9uKGUs
dCxuLHIpe3JldHVybiBtKHQpJiYocj1yfHxuLG49dCx0PXZvaWQgMCksUy5hamF4KFMuZXh0ZW5k
KHt1cmw6ZSx0eXBlOmksZGF0YVR5cGU6cixkYXRhOnQsc3VjY2VzczpufSxTLmlzUGxhaW5PYmpl
Y3QoZSkmJmUpKX19KSxTLmFqYXhQcmVmaWx0ZXIoZnVuY3Rpb24oZSl7dmFyIHQ7Zm9yKHQgaW4g
ZS5oZWFkZXJzKSJjb250ZW50LXR5cGUiPT09dC50b0xvd2VyQ2FzZSgpJiYoZS5jb250ZW50VHlw
ZT1lLmhlYWRlcnNbdF18fCIiKX0pLFMuX2V2YWxVcmw9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBT
LmFqYXgoe3VybDplLHR5cGU6IkdFVCIsZGF0YVR5cGU6InNjcmlwdCIsY2FjaGU6ITAsYXN5bmM6
ITEsZ2xvYmFsOiExLGNvbnZlcnRlcnM6eyJ0ZXh0IHNjcmlwdCI6ZnVuY3Rpb24oKXt9fSxkYXRh
RmlsdGVyOmZ1bmN0aW9uKGUpe1MuZ2xvYmFsRXZhbChlLHQsbil9fSl9LFMuZm4uZXh0ZW5kKHt3
cmFwQWxsOmZ1bmN0aW9uKGUpe3ZhciB0O3JldHVybiB0aGlzWzBdJiYobShlKSYmKGU9ZS5jYWxs
KHRoaXNbMF0pKSx0PVMoZSx0aGlzWzBdLm93bmVyRG9jdW1lbnQpLmVxKDApLmNsb25lKCEwKSx0
aGlzWzBdLnBhcmVudE5vZGUmJnQuaW5zZXJ0QmVmb3JlKHRoaXNbMF0pLHQubWFwKGZ1bmN0aW9u
KCl7dmFyIGU9dGhpczt3aGlsZShlLmZpcnN0RWxlbWVudENoaWxkKWU9ZS5maXJzdEVsZW1lbnRD
aGlsZDtyZXR1cm4gZX0pLmFwcGVuZCh0aGlzKSksdGhpc30sd3JhcElubmVyOmZ1bmN0aW9uKG4p
e3JldHVybiBtKG4pP3RoaXMuZWFjaChmdW5jdGlvbihlKXtTKHRoaXMpLndyYXBJbm5lcihuLmNh
bGwodGhpcyxlKSl9KTp0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZT1TKHRoaXMpLHQ9ZS5jb250
ZW50cygpO3QubGVuZ3RoP3Qud3JhcEFsbChuKTplLmFwcGVuZChuKX0pfSx3cmFwOmZ1bmN0aW9u
KHQpe3ZhciBuPW0odCk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihlKXtTKHRoaXMpLndyYXBB
bGwobj90LmNhbGwodGhpcyxlKTp0KX0pfSx1bndyYXA6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMu
cGFyZW50KGUpLm5vdCgiYm9keSIpLmVhY2goZnVuY3Rpb24oKXtTKHRoaXMpLnJlcGxhY2VXaXRo
KHRoaXMuY2hpbGROb2Rlcyl9KSx0aGlzfX0pLFMuZXhwci5wc2V1ZG9zLmhpZGRlbj1mdW5jdGlv
bihlKXtyZXR1cm4hUy5leHByLnBzZXVkb3MudmlzaWJsZShlKX0sUy5leHByLnBzZXVkb3Mudmlz
aWJsZT1mdW5jdGlvbihlKXtyZXR1cm4hIShlLm9mZnNldFdpZHRofHxlLm9mZnNldEhlaWdodHx8
ZS5nZXRDbGllbnRSZWN0cygpLmxlbmd0aCl9LFMuYWpheFNldHRpbmdzLnhocj1mdW5jdGlvbigp
e3RyeXtyZXR1cm4gbmV3IEMuWE1MSHR0cFJlcXVlc3R9Y2F0Y2goZSl7fX07dmFyIF90PXswOjIw
MCwxMjIzOjIwNH0senQ9Uy5hamF4U2V0dGluZ3MueGhyKCk7eS5jb3JzPSEhenQmJiJ3aXRoQ3Jl
ZGVudGlhbHMiaW4genQseS5hamF4PXp0PSEhenQsUy5hamF4VHJhbnNwb3J0KGZ1bmN0aW9uKGkp
e3ZhciBvLGE7aWYoeS5jb3JzfHx6dCYmIWkuY3Jvc3NEb21haW4pcmV0dXJue3NlbmQ6ZnVuY3Rp
b24oZSx0KXt2YXIgbixyPWkueGhyKCk7aWYoci5vcGVuKGkudHlwZSxpLnVybCxpLmFzeW5jLGku
dXNlcm5hbWUsaS5wYXNzd29yZCksaS54aHJGaWVsZHMpZm9yKG4gaW4gaS54aHJGaWVsZHMpcltu
XT1pLnhockZpZWxkc1tuXTtmb3IobiBpbiBpLm1pbWVUeXBlJiZyLm92ZXJyaWRlTWltZVR5cGUm
JnIub3ZlcnJpZGVNaW1lVHlwZShpLm1pbWVUeXBlKSxpLmNyb3NzRG9tYWlufHxlWyJYLVJlcXVl
c3RlZC1XaXRoIl18fChlWyJYLVJlcXVlc3RlZC1XaXRoIl09IlhNTEh0dHBSZXF1ZXN0IiksZSly
LnNldFJlcXVlc3RIZWFkZXIobixlW25dKTtvPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigp
e28mJihvPWE9ci5vbmxvYWQ9ci5vbmVycm9yPXIub25hYm9ydD1yLm9udGltZW91dD1yLm9ucmVh
ZHlzdGF0ZWNoYW5nZT1udWxsLCJhYm9ydCI9PT1lP3IuYWJvcnQoKToiZXJyb3IiPT09ZT8ibnVt
YmVyIiE9dHlwZW9mIHIuc3RhdHVzP3QoMCwiZXJyb3IiKTp0KHIuc3RhdHVzLHIuc3RhdHVzVGV4
dCk6dChfdFtyLnN0YXR1c118fHIuc3RhdHVzLHIuc3RhdHVzVGV4dCwidGV4dCIhPT0oci5yZXNw
b25zZVR5cGV8fCJ0ZXh0Iil8fCJzdHJpbmciIT10eXBlb2Ygci5yZXNwb25zZVRleHQ/e2JpbmFy
eTpyLnJlc3BvbnNlfTp7dGV4dDpyLnJlc3BvbnNlVGV4dH0sci5nZXRBbGxSZXNwb25zZUhlYWRl
cnMoKSkpfX0sci5vbmxvYWQ9bygpLGE9ci5vbmVycm9yPXIub250aW1lb3V0PW8oImVycm9yIiks
dm9pZCAwIT09ci5vbmFib3J0P3Iub25hYm9ydD1hOnIub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0
aW9uKCl7ND09PXIucmVhZHlTdGF0ZSYmQy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7byYmYSgpfSl9
LG89bygiYWJvcnQiKTt0cnl7ci5zZW5kKGkuaGFzQ29udGVudCYmaS5kYXRhfHxudWxsKX1jYXRj
aChlKXtpZihvKXRocm93IGV9fSxhYm9ydDpmdW5jdGlvbigpe28mJm8oKX19fSksUy5hamF4UHJl
ZmlsdGVyKGZ1bmN0aW9uKGUpe2UuY3Jvc3NEb21haW4mJihlLmNvbnRlbnRzLnNjcmlwdD0hMSl9
KSxTLmFqYXhTZXR1cCh7YWNjZXB0czp7c2NyaXB0OiJ0ZXh0L2phdmFzY3JpcHQsIGFwcGxpY2F0
aW9uL2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2VjbWFzY3JpcHQsIGFwcGxpY2F0aW9uL3gtZWNt
YXNjcmlwdCJ9LGNvbnRlbnRzOntzY3JpcHQ6L1xiKD86amF2YXxlY21hKXNjcmlwdFxiL30sY29u
dmVydGVyczp7InRleHQgc2NyaXB0IjpmdW5jdGlvbihlKXtyZXR1cm4gUy5nbG9iYWxFdmFsKGUp
LGV9fX0pLFMuYWpheFByZWZpbHRlcigic2NyaXB0IixmdW5jdGlvbihlKXt2b2lkIDA9PT1lLmNh
Y2hlJiYoZS5jYWNoZT0hMSksZS5jcm9zc0RvbWFpbiYmKGUudHlwZT0iR0VUIil9KSxTLmFqYXhU
cmFuc3BvcnQoInNjcmlwdCIsZnVuY3Rpb24obil7dmFyIHIsaTtpZihuLmNyb3NzRG9tYWlufHxu
LnNjcmlwdEF0dHJzKXJldHVybntzZW5kOmZ1bmN0aW9uKGUsdCl7cj1TKCI8c2NyaXB0PiIpLmF0
dHIobi5zY3JpcHRBdHRyc3x8e30pLnByb3Aoe2NoYXJzZXQ6bi5zY3JpcHRDaGFyc2V0LHNyYzpu
LnVybH0pLm9uKCJsb2FkIGVycm9yIixpPWZ1bmN0aW9uKGUpe3IucmVtb3ZlKCksaT1udWxsLGUm
JnQoImVycm9yIj09PWUudHlwZT80MDQ6MjAwLGUudHlwZSl9KSxFLmhlYWQuYXBwZW5kQ2hpbGQo
clswXSl9LGFib3J0OmZ1bmN0aW9uKCl7aSYmaSgpfX19KTt2YXIgVXQsWHQ9W10sVnQ9Lyg9KVw/
KD89JnwkKXxcP1w/LztTLmFqYXhTZXR1cCh7anNvbnA6ImNhbGxiYWNrIixqc29ucENhbGxiYWNr
OmZ1bmN0aW9uKCl7dmFyIGU9WHQucG9wKCl8fFMuZXhwYW5kbysiXyIrQ3QuZ3VpZCsrO3JldHVy
biB0aGlzW2VdPSEwLGV9fSksUy5hamF4UHJlZmlsdGVyKCJqc29uIGpzb25wIixmdW5jdGlvbihl
LHQsbil7dmFyIHIsaSxvLGE9ITEhPT1lLmpzb25wJiYoVnQudGVzdChlLnVybCk/InVybCI6InN0
cmluZyI9PXR5cGVvZiBlLmRhdGEmJjA9PT0oZS5jb250ZW50VHlwZXx8IiIpLmluZGV4T2YoImFw
cGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIpJiZWdC50ZXN0KGUuZGF0YSkmJiJkYXRh
Iik7aWYoYXx8Impzb25wIj09PWUuZGF0YVR5cGVzWzBdKXJldHVybiByPWUuanNvbnBDYWxsYmFj
az1tKGUuanNvbnBDYWxsYmFjayk/ZS5qc29ucENhbGxiYWNrKCk6ZS5qc29ucENhbGxiYWNrLGE/
ZVthXT1lW2FdLnJlcGxhY2UoVnQsIiQxIityKTohMSE9PWUuanNvbnAmJihlLnVybCs9KEV0LnRl
c3QoZS51cmwpPyImIjoiPyIpK2UuanNvbnArIj0iK3IpLGUuY29udmVydGVyc1sic2NyaXB0IGpz
b24iXT1mdW5jdGlvbigpe3JldHVybiBvfHxTLmVycm9yKHIrIiB3YXMgbm90IGNhbGxlZCIpLG9b
MF19LGUuZGF0YVR5cGVzWzBdPSJqc29uIixpPUNbcl0sQ1tyXT1mdW5jdGlvbigpe289YXJndW1l
bnRzfSxuLmFsd2F5cyhmdW5jdGlvbigpe3ZvaWQgMD09PWk/UyhDKS5yZW1vdmVQcm9wKHIpOkNb
cl09aSxlW3JdJiYoZS5qc29ucENhbGxiYWNrPXQuanNvbnBDYWxsYmFjayxYdC5wdXNoKHIpKSxv
JiZtKGkpJiZpKG9bMF0pLG89aT12b2lkIDB9KSwic2NyaXB0In0pLHkuY3JlYXRlSFRNTERvY3Vt
ZW50PSgoVXQ9RS5pbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQoIiIpLmJvZHkpLmlu
bmVySFRNTD0iPGZvcm0+PC9mb3JtPjxmb3JtPjwvZm9ybT4iLDI9PT1VdC5jaGlsZE5vZGVzLmxl
bmd0aCksUy5wYXJzZUhUTUw9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiJzdHJpbmciIT10eXBlb2Yg
ZT9bXTooImJvb2xlYW4iPT10eXBlb2YgdCYmKG49dCx0PSExKSx0fHwoeS5jcmVhdGVIVE1MRG9j
dW1lbnQ/KChyPSh0PUUuaW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERvY3VtZW50KCIiKSkuY3Jl
YXRlRWxlbWVudCgiYmFzZSIpKS5ocmVmPUUubG9jYXRpb24uaHJlZix0LmhlYWQuYXBwZW5kQ2hp
bGQocikpOnQ9RSksbz0hbiYmW10sKGk9Ti5leGVjKGUpKT9bdC5jcmVhdGVFbGVtZW50KGlbMV0p
XTooaT14ZShbZV0sdCxvKSxvJiZvLmxlbmd0aCYmUyhvKS5yZW1vdmUoKSxTLm1lcmdlKFtdLGku
Y2hpbGROb2RlcykpKTt2YXIgcixpLG99LFMuZm4ubG9hZD1mdW5jdGlvbihlLHQsbil7dmFyIHIs
aSxvLGE9dGhpcyxzPWUuaW5kZXhPZigiICIpO3JldHVybi0xPHMmJihyPXZ0KGUuc2xpY2Uocykp
LGU9ZS5zbGljZSgwLHMpKSxtKHQpPyhuPXQsdD12b2lkIDApOnQmJiJvYmplY3QiPT10eXBlb2Yg
dCYmKGk9IlBPU1QiKSwwPGEubGVuZ3RoJiZTLmFqYXgoe3VybDplLHR5cGU6aXx8IkdFVCIsZGF0
YVR5cGU6Imh0bWwiLGRhdGE6dH0pLmRvbmUoZnVuY3Rpb24oZSl7bz1hcmd1bWVudHMsYS5odG1s
KHI/UygiPGRpdj4iKS5hcHBlbmQoUy5wYXJzZUhUTUwoZSkpLmZpbmQocik6ZSl9KS5hbHdheXMo
biYmZnVuY3Rpb24oZSx0KXthLmVhY2goZnVuY3Rpb24oKXtuLmFwcGx5KHRoaXMsb3x8W2UucmVz
cG9uc2VUZXh0LHQsZV0pfSl9KSx0aGlzfSxTLmV4cHIucHNldWRvcy5hbmltYXRlZD1mdW5jdGlv
bih0KXtyZXR1cm4gUy5ncmVwKFMudGltZXJzLGZ1bmN0aW9uKGUpe3JldHVybiB0PT09ZS5lbGVt
fSkubGVuZ3RofSxTLm9mZnNldD17c2V0T2Zmc2V0OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpLG8s
YSxzLHUsbD1TLmNzcyhlLCJwb3NpdGlvbiIpLGM9UyhlKSxmPXt9OyJzdGF0aWMiPT09bCYmKGUu
c3R5bGUucG9zaXRpb249InJlbGF0aXZlIikscz1jLm9mZnNldCgpLG89Uy5jc3MoZSwidG9wIiks
dT1TLmNzcyhlLCJsZWZ0IiksKCJhYnNvbHV0ZSI9PT1sfHwiZml4ZWQiPT09bCkmJi0xPChvK3Up
LmluZGV4T2YoImF1dG8iKT8oYT0ocj1jLnBvc2l0aW9uKCkpLnRvcCxpPXIubGVmdCk6KGE9cGFy
c2VGbG9hdChvKXx8MCxpPXBhcnNlRmxvYXQodSl8fDApLG0odCkmJih0PXQuY2FsbChlLG4sUy5l
eHRlbmQoe30scykpKSxudWxsIT10LnRvcCYmKGYudG9wPXQudG9wLXMudG9wK2EpLG51bGwhPXQu
bGVmdCYmKGYubGVmdD10LmxlZnQtcy5sZWZ0K2kpLCJ1c2luZyJpbiB0P3QudXNpbmcuY2FsbChl
LGYpOigibnVtYmVyIj09dHlwZW9mIGYudG9wJiYoZi50b3ArPSJweCIpLCJudW1iZXIiPT10eXBl
b2YgZi5sZWZ0JiYoZi5sZWZ0Kz0icHgiKSxjLmNzcyhmKSl9fSxTLmZuLmV4dGVuZCh7b2Zmc2V0
OmZ1bmN0aW9uKHQpe2lmKGFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIHZvaWQgMD09PXQ/dGhpczp0
aGlzLmVhY2goZnVuY3Rpb24oZSl7Uy5vZmZzZXQuc2V0T2Zmc2V0KHRoaXMsdCxlKX0pO3ZhciBl
LG4scj10aGlzWzBdO3JldHVybiByP3IuZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGg/KGU9ci5nZXRC
b3VuZGluZ0NsaWVudFJlY3QoKSxuPXIub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldyx7dG9wOmUu
dG9wK24ucGFnZVlPZmZzZXQsbGVmdDplLmxlZnQrbi5wYWdlWE9mZnNldH0pOnt0b3A6MCxsZWZ0
OjB9OnZvaWQgMH0scG9zaXRpb246ZnVuY3Rpb24oKXtpZih0aGlzWzBdKXt2YXIgZSx0LG4scj10
aGlzWzBdLGk9e3RvcDowLGxlZnQ6MH07aWYoImZpeGVkIj09PVMuY3NzKHIsInBvc2l0aW9uIikp
dD1yLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2Vsc2V7dD10aGlzLm9mZnNldCgpLG49ci5vd25l
ckRvY3VtZW50LGU9ci5vZmZzZXRQYXJlbnR8fG4uZG9jdW1lbnRFbGVtZW50O3doaWxlKGUmJihl
PT09bi5ib2R5fHxlPT09bi5kb2N1bWVudEVsZW1lbnQpJiYic3RhdGljIj09PVMuY3NzKGUsInBv
c2l0aW9uIikpZT1lLnBhcmVudE5vZGU7ZSYmZSE9PXImJjE9PT1lLm5vZGVUeXBlJiYoKGk9Uyhl
KS5vZmZzZXQoKSkudG9wKz1TLmNzcyhlLCJib3JkZXJUb3BXaWR0aCIsITApLGkubGVmdCs9Uy5j
c3MoZSwiYm9yZGVyTGVmdFdpZHRoIiwhMCkpfXJldHVybnt0b3A6dC50b3AtaS50b3AtUy5jc3Mo
ciwibWFyZ2luVG9wIiwhMCksbGVmdDp0LmxlZnQtaS5sZWZ0LVMuY3NzKHIsIm1hcmdpbkxlZnQi
LCEwKX19fSxvZmZzZXRQYXJlbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24o
KXt2YXIgZT10aGlzLm9mZnNldFBhcmVudDt3aGlsZShlJiYic3RhdGljIj09PVMuY3NzKGUsInBv
c2l0aW9uIikpZT1lLm9mZnNldFBhcmVudDtyZXR1cm4gZXx8cmV9KX19KSxTLmVhY2goe3Njcm9s
bExlZnQ6InBhZ2VYT2Zmc2V0IixzY3JvbGxUb3A6InBhZ2VZT2Zmc2V0In0sZnVuY3Rpb24odCxp
KXt2YXIgbz0icGFnZVlPZmZzZXQiPT09aTtTLmZuW3RdPWZ1bmN0aW9uKGUpe3JldHVybiAkKHRo
aXMsZnVuY3Rpb24oZSx0LG4pe3ZhciByO2lmKHgoZSk/cj1lOjk9PT1lLm5vZGVUeXBlJiYocj1l
LmRlZmF1bHRWaWV3KSx2b2lkIDA9PT1uKXJldHVybiByP3JbaV06ZVt0XTtyP3Iuc2Nyb2xsVG8o
bz9yLnBhZ2VYT2Zmc2V0Om4sbz9uOnIucGFnZVlPZmZzZXQpOmVbdF09bn0sdCxlLGFyZ3VtZW50
cy5sZW5ndGgpfX0pLFMuZWFjaChbInRvcCIsImxlZnQiXSxmdW5jdGlvbihlLG4pe1MuY3NzSG9v
a3Nbbl09JGUoeS5waXhlbFBvc2l0aW9uLGZ1bmN0aW9uKGUsdCl7aWYodClyZXR1cm4gdD1CZShl
LG4pLE1lLnRlc3QodCk/UyhlKS5wb3NpdGlvbigpW25dKyJweCI6dH0pfSksUy5lYWNoKHtIZWln
aHQ6ImhlaWdodCIsV2lkdGg6IndpZHRoIn0sZnVuY3Rpb24oYSxzKXtTLmVhY2goe3BhZGRpbmc6
ImlubmVyIithLGNvbnRlbnQ6cywiIjoib3V0ZXIiK2F9LGZ1bmN0aW9uKHIsbyl7Uy5mbltvXT1m
dW5jdGlvbihlLHQpe3ZhciBuPWFyZ3VtZW50cy5sZW5ndGgmJihyfHwiYm9vbGVhbiIhPXR5cGVv
ZiBlKSxpPXJ8fCghMD09PWV8fCEwPT09dD8ibWFyZ2luIjoiYm9yZGVyIik7cmV0dXJuICQodGhp
cyxmdW5jdGlvbihlLHQsbil7dmFyIHI7cmV0dXJuIHgoZSk/MD09PW8uaW5kZXhPZigib3V0ZXIi
KT9lWyJpbm5lciIrYV06ZS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnRbImNsaWVudCIrYV06OT09
PWUubm9kZVR5cGU/KHI9ZS5kb2N1bWVudEVsZW1lbnQsTWF0aC5tYXgoZS5ib2R5WyJzY3JvbGwi
K2FdLHJbInNjcm9sbCIrYV0sZS5ib2R5WyJvZmZzZXQiK2FdLHJbIm9mZnNldCIrYV0sclsiY2xp
ZW50IithXSkpOnZvaWQgMD09PW4/Uy5jc3MoZSx0LGkpOlMuc3R5bGUoZSx0LG4saSl9LHMsbj9l
OnZvaWQgMCxuKX19KX0pLFMuZWFjaChbImFqYXhTdGFydCIsImFqYXhTdG9wIiwiYWpheENvbXBs
ZXRlIiwiYWpheEVycm9yIiwiYWpheFN1Y2Nlc3MiLCJhamF4U2VuZCJdLGZ1bmN0aW9uKGUsdCl7
Uy5mblt0XT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5vbih0LGUpfX0pLFMuZm4uZXh0ZW5kKHti
aW5kOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdGhpcy5vbihlLG51bGwsdCxuKX0sdW5iaW5kOmZ1
bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMub2ZmKGUsbnVsbCx0KX0sZGVsZWdhdGU6ZnVuY3Rpb24o
ZSx0LG4scil7cmV0dXJuIHRoaXMub24odCxlLG4scil9LHVuZGVsZWdhdGU6ZnVuY3Rpb24oZSx0
LG4pe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD90aGlzLm9mZihlLCIqKiIpOnRoaXMub2Zm
KHQsZXx8IioqIixuKX0saG92ZXI6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5tb3VzZWVudGVy
KGUpLm1vdXNlbGVhdmUodHx8ZSl9fSksUy5lYWNoKCJibHVyIGZvY3VzIGZvY3VzaW4gZm9jdXNv
dXQgcmVzaXplIHNjcm9sbCBjbGljayBkYmxjbGljayBtb3VzZWRvd24gbW91c2V1cCBtb3VzZW1v
dmUgbW91c2VvdmVyIG1vdXNlb3V0IG1vdXNlZW50ZXIgbW91c2VsZWF2ZSBjaGFuZ2Ugc2VsZWN0
IHN1Ym1pdCBrZXlkb3duIGtleXByZXNzIGtleXVwIGNvbnRleHRtZW51Ii5zcGxpdCgiICIpLGZ1
bmN0aW9uKGUsbil7Uy5mbltuXT1mdW5jdGlvbihlLHQpe3JldHVybiAwPGFyZ3VtZW50cy5sZW5n
dGg/dGhpcy5vbihuLG51bGwsZSx0KTp0aGlzLnRyaWdnZXIobil9fSk7dmFyIEd0PS9eW1xzXHVG
RUZGXHhBMF0rfFtcc1x1RkVGRlx4QTBdKyQvZztTLnByb3h5PWZ1bmN0aW9uKGUsdCl7dmFyIG4s
cixpO2lmKCJzdHJpbmciPT10eXBlb2YgdCYmKG49ZVt0XSx0PWUsZT1uKSxtKGUpKXJldHVybiBy
PXMuY2FsbChhcmd1bWVudHMsMiksKGk9ZnVuY3Rpb24oKXtyZXR1cm4gZS5hcHBseSh0fHx0aGlz
LHIuY29uY2F0KHMuY2FsbChhcmd1bWVudHMpKSl9KS5ndWlkPWUuZ3VpZD1lLmd1aWR8fFMuZ3Vp
ZCsrLGl9LFMuaG9sZFJlYWR5PWZ1bmN0aW9uKGUpe2U/Uy5yZWFkeVdhaXQrKzpTLnJlYWR5KCEw
KX0sUy5pc0FycmF5PUFycmF5LmlzQXJyYXksUy5wYXJzZUpTT049SlNPTi5wYXJzZSxTLm5vZGVO
YW1lPUEsUy5pc0Z1bmN0aW9uPW0sUy5pc1dpbmRvdz14LFMuY2FtZWxDYXNlPVgsUy50eXBlPXcs
Uy5ub3c9RGF0ZS5ub3csUy5pc051bWVyaWM9ZnVuY3Rpb24oZSl7dmFyIHQ9Uy50eXBlKGUpO3Jl
dHVybigibnVtYmVyIj09PXR8fCJzdHJpbmciPT09dCkmJiFpc05hTihlLXBhcnNlRmxvYXQoZSkp
fSxTLnRyaW09ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PWU/IiI6KGUrIiIpLnJlcGxhY2UoR3Qs
IiIpfSwiZnVuY3Rpb24iPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kJiZkZWZpbmUoImpxdWVy
eSIsW10sZnVuY3Rpb24oKXtyZXR1cm4gU30pO3ZhciBZdD1DLmpRdWVyeSxRdD1DLiQ7cmV0dXJu
IFMubm9Db25mbGljdD1mdW5jdGlvbihlKXtyZXR1cm4gQy4kPT09UyYmKEMuJD1RdCksZSYmQy5q
UXVlcnk9PT1TJiYoQy5qUXVlcnk9WXQpLFN9LCJ1bmRlZmluZWQiPT10eXBlb2YgZSYmKEMualF1
ZXJ5PUMuJD1TKSxTfSk7CmRpZmYgLS1naXQgYS9XZWJEcml2ZXJUZXN0cy9pbXBvcnRlZC9zZWxl
bml1bS9jb21tb24vc3JjL3dlYi9qcy9qcXVlcnktdWktMS4xMi4xLm1pbi5qcyBiL1dlYkRyaXZl
clRlc3RzL2ltcG9ydGVkL3NlbGVuaXVtL2NvbW1vbi9zcmMvd2ViL2pzL2pxdWVyeS11aS0xLjEy
LjEubWluLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI1Mzk4YTE2NzQxNTA1MGFlOGJmYjBiZmViYWM2YWEzYWI3
OTA5MDkKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJEcml2ZXJUZXN0cy9pbXBvcnRlZC9zZWxlbml1
bS9jb21tb24vc3JjL3dlYi9qcy9qcXVlcnktdWktMS4xMi4xLm1pbi5qcwpAQCAtMCwwICsxLDEz
IEBACisvKiEgalF1ZXJ5IFVJIC0gdjEuMTIuMSAtIDIwMTYtMDktMTQKKyogaHR0cDovL2pxdWVy
eXVpLmNvbQorKiBJbmNsdWRlczogd2lkZ2V0LmpzLCBwb3NpdGlvbi5qcywgZGF0YS5qcywgZGlz
YWJsZS1zZWxlY3Rpb24uanMsIGVmZmVjdC5qcywgZWZmZWN0cy9lZmZlY3QtYmxpbmQuanMsIGVm
ZmVjdHMvZWZmZWN0LWJvdW5jZS5qcywgZWZmZWN0cy9lZmZlY3QtY2xpcC5qcywgZWZmZWN0cy9l
ZmZlY3QtZHJvcC5qcywgZWZmZWN0cy9lZmZlY3QtZXhwbG9kZS5qcywgZWZmZWN0cy9lZmZlY3Qt
ZmFkZS5qcywgZWZmZWN0cy9lZmZlY3QtZm9sZC5qcywgZWZmZWN0cy9lZmZlY3QtaGlnaGxpZ2h0
LmpzLCBlZmZlY3RzL2VmZmVjdC1wdWZmLmpzLCBlZmZlY3RzL2VmZmVjdC1wdWxzYXRlLmpzLCBl
ZmZlY3RzL2VmZmVjdC1zY2FsZS5qcywgZWZmZWN0cy9lZmZlY3Qtc2hha2UuanMsIGVmZmVjdHMv
ZWZmZWN0LXNpemUuanMsIGVmZmVjdHMvZWZmZWN0LXNsaWRlLmpzLCBlZmZlY3RzL2VmZmVjdC10
cmFuc2Zlci5qcywgZm9jdXNhYmxlLmpzLCBmb3JtLXJlc2V0LW1peGluLmpzLCBqcXVlcnktMS03
LmpzLCBrZXljb2RlLmpzLCBsYWJlbHMuanMsIHNjcm9sbC1wYXJlbnQuanMsIHRhYmJhYmxlLmpz
LCB1bmlxdWUtaWQuanMsIHdpZGdldHMvYWNjb3JkaW9uLmpzLCB3aWRnZXRzL2F1dG9jb21wbGV0
ZS5qcywgd2lkZ2V0cy9idXR0b24uanMsIHdpZGdldHMvY2hlY2tib3hyYWRpby5qcywgd2lkZ2V0
cy9jb250cm9sZ3JvdXAuanMsIHdpZGdldHMvZGF0ZXBpY2tlci5qcywgd2lkZ2V0cy9kaWFsb2cu
anMsIHdpZGdldHMvZHJhZ2dhYmxlLmpzLCB3aWRnZXRzL2Ryb3BwYWJsZS5qcywgd2lkZ2V0cy9t
ZW51LmpzLCB3aWRnZXRzL21vdXNlLmpzLCB3aWRnZXRzL3Byb2dyZXNzYmFyLmpzLCB3aWRnZXRz
L3Jlc2l6YWJsZS5qcywgd2lkZ2V0cy9zZWxlY3RhYmxlLmpzLCB3aWRnZXRzL3NlbGVjdG1lbnUu
anMsIHdpZGdldHMvc2xpZGVyLmpzLCB3aWRnZXRzL3NvcnRhYmxlLmpzLCB3aWRnZXRzL3NwaW5u
ZXIuanMsIHdpZGdldHMvdGFicy5qcywgd2lkZ2V0cy90b29sdGlwLmpzCisqIENvcHlyaWdodCBq
UXVlcnkgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzOyBMaWNlbnNlZCBNSVQgKi8K
KworKGZ1bmN0aW9uKHQpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVm
aW5lKFsianF1ZXJ5Il0sdCk6dChqUXVlcnkpfSkoZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSh0KXtm
b3IodmFyIGU9dC5jc3MoInZpc2liaWxpdHkiKTsiaW5oZXJpdCI9PT1lOyl0PXQucGFyZW50KCks
ZT10LmNzcygidmlzaWJpbGl0eSIpO3JldHVybiJoaWRkZW4iIT09ZX1mdW5jdGlvbiBpKHQpe2Zv
cih2YXIgZSxpO3QubGVuZ3RoJiZ0WzBdIT09ZG9jdW1lbnQ7KXtpZihlPXQuY3NzKCJwb3NpdGlv
biIpLCgiYWJzb2x1dGUiPT09ZXx8InJlbGF0aXZlIj09PWV8fCJmaXhlZCI9PT1lKSYmKGk9cGFy
c2VJbnQodC5jc3MoInpJbmRleCIpLDEwKSwhaXNOYU4oaSkmJjAhPT1pKSlyZXR1cm4gaTt0PXQu
cGFyZW50KCl9cmV0dXJuIDB9ZnVuY3Rpb24gcygpe3RoaXMuX2N1ckluc3Q9bnVsbCx0aGlzLl9r
ZXlFdmVudD0hMSx0aGlzLl9kaXNhYmxlZElucHV0cz1bXSx0aGlzLl9kYXRlcGlja2VyU2hvd2lu
Zz0hMSx0aGlzLl9pbkRpYWxvZz0hMSx0aGlzLl9tYWluRGl2SWQ9InVpLWRhdGVwaWNrZXItZGl2
Iix0aGlzLl9pbmxpbmVDbGFzcz0idWktZGF0ZXBpY2tlci1pbmxpbmUiLHRoaXMuX2FwcGVuZENs
YXNzPSJ1aS1kYXRlcGlja2VyLWFwcGVuZCIsdGhpcy5fdHJpZ2dlckNsYXNzPSJ1aS1kYXRlcGlj
a2VyLXRyaWdnZXIiLHRoaXMuX2RpYWxvZ0NsYXNzPSJ1aS1kYXRlcGlja2VyLWRpYWxvZyIsdGhp
cy5fZGlzYWJsZUNsYXNzPSJ1aS1kYXRlcGlja2VyLWRpc2FibGVkIix0aGlzLl91bnNlbGVjdGFi
bGVDbGFzcz0idWktZGF0ZXBpY2tlci11bnNlbGVjdGFibGUiLHRoaXMuX2N1cnJlbnRDbGFzcz0i
dWktZGF0ZXBpY2tlci1jdXJyZW50LWRheSIsdGhpcy5fZGF5T3ZlckNsYXNzPSJ1aS1kYXRlcGlj
a2VyLWRheXMtY2VsbC1vdmVyIix0aGlzLnJlZ2lvbmFsPVtdLHRoaXMucmVnaW9uYWxbIiJdPXtj
bG9zZVRleHQ6IkRvbmUiLHByZXZUZXh0OiJQcmV2IixuZXh0VGV4dDoiTmV4dCIsY3VycmVudFRl
eHQ6IlRvZGF5Iixtb250aE5hbWVzOlsiSmFudWFyeSIsIkZlYnJ1YXJ5IiwiTWFyY2giLCJBcHJp
bCIsIk1heSIsIkp1bmUiLCJKdWx5IiwiQXVndXN0IiwiU2VwdGVtYmVyIiwiT2N0b2JlciIsIk5v
dmVtYmVyIiwiRGVjZW1iZXIiXSxtb250aE5hbWVzU2hvcnQ6WyJKYW4iLCJGZWIiLCJNYXIiLCJB
cHIiLCJNYXkiLCJKdW4iLCJKdWwiLCJBdWciLCJTZXAiLCJPY3QiLCJOb3YiLCJEZWMiXSxkYXlO
YW1lczpbIlN1bmRheSIsIk1vbmRheSIsIlR1ZXNkYXkiLCJXZWRuZXNkYXkiLCJUaHVyc2RheSIs
IkZyaWRheSIsIlNhdHVyZGF5Il0sZGF5TmFtZXNTaG9ydDpbIlN1biIsIk1vbiIsIlR1ZSIsIldl
ZCIsIlRodSIsIkZyaSIsIlNhdCJdLGRheU5hbWVzTWluOlsiU3UiLCJNbyIsIlR1IiwiV2UiLCJU
aCIsIkZyIiwiU2EiXSx3ZWVrSGVhZGVyOiJXayIsZGF0ZUZvcm1hdDoibW0vZGQveXkiLGZpcnN0
RGF5OjAsaXNSVEw6ITEsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiJ9LHRoaXMu
X2RlZmF1bHRzPXtzaG93T246ImZvY3VzIixzaG93QW5pbToiZmFkZUluIixzaG93T3B0aW9uczp7
fSxkZWZhdWx0RGF0ZTpudWxsLGFwcGVuZFRleHQ6IiIsYnV0dG9uVGV4dDoiLi4uIixidXR0b25J
bWFnZToiIixidXR0b25JbWFnZU9ubHk6ITEsaGlkZUlmTm9QcmV2TmV4dDohMSxuYXZpZ2F0aW9u
QXNEYXRlRm9ybWF0OiExLGdvdG9DdXJyZW50OiExLGNoYW5nZU1vbnRoOiExLGNoYW5nZVllYXI6
ITEseWVhclJhbmdlOiJjLTEwOmMrMTAiLHNob3dPdGhlck1vbnRoczohMSxzZWxlY3RPdGhlck1v
bnRoczohMSxzaG93V2VlazohMSxjYWxjdWxhdGVXZWVrOnRoaXMuaXNvODYwMVdlZWssc2hvcnRZ
ZWFyQ3V0b2ZmOiIrMTAiLG1pbkRhdGU6bnVsbCxtYXhEYXRlOm51bGwsZHVyYXRpb246ImZhc3Qi
LGJlZm9yZVNob3dEYXk6bnVsbCxiZWZvcmVTaG93Om51bGwsb25TZWxlY3Q6bnVsbCxvbkNoYW5n
ZU1vbnRoWWVhcjpudWxsLG9uQ2xvc2U6bnVsbCxudW1iZXJPZk1vbnRoczoxLHNob3dDdXJyZW50
QXRQb3M6MCxzdGVwTW9udGhzOjEsc3RlcEJpZ01vbnRoczoxMixhbHRGaWVsZDoiIixhbHRGb3Jt
YXQ6IiIsY29uc3RyYWluSW5wdXQ6ITAsc2hvd0J1dHRvblBhbmVsOiExLGF1dG9TaXplOiExLGRp
c2FibGVkOiExfSx0LmV4dGVuZCh0aGlzLl9kZWZhdWx0cyx0aGlzLnJlZ2lvbmFsWyIiXSksdGhp
cy5yZWdpb25hbC5lbj10LmV4dGVuZCghMCx7fSx0aGlzLnJlZ2lvbmFsWyIiXSksdGhpcy5yZWdp
b25hbFsiZW4tVVMiXT10LmV4dGVuZCghMCx7fSx0aGlzLnJlZ2lvbmFsLmVuKSx0aGlzLmRwRGl2
PW4odCgiPGRpdiBpZD0nIit0aGlzLl9tYWluRGl2SWQrIicgY2xhc3M9J3VpLWRhdGVwaWNrZXIg
dWktd2lkZ2V0IHVpLXdpZGdldC1jb250ZW50IHVpLWhlbHBlci1jbGVhcmZpeCB1aS1jb3JuZXIt
YWxsJz48L2Rpdj4iKSl9ZnVuY3Rpb24gbihlKXt2YXIgaT0iYnV0dG9uLCAudWktZGF0ZXBpY2tl
ci1wcmV2LCAudWktZGF0ZXBpY2tlci1uZXh0LCAudWktZGF0ZXBpY2tlci1jYWxlbmRhciB0ZCBh
IjtyZXR1cm4gZS5vbigibW91c2VvdXQiLGksZnVuY3Rpb24oKXt0KHRoaXMpLnJlbW92ZUNsYXNz
KCJ1aS1zdGF0ZS1ob3ZlciIpLC0xIT09dGhpcy5jbGFzc05hbWUuaW5kZXhPZigidWktZGF0ZXBp
Y2tlci1wcmV2IikmJnQodGhpcykucmVtb3ZlQ2xhc3MoInVpLWRhdGVwaWNrZXItcHJldi1ob3Zl
ciIpLC0xIT09dGhpcy5jbGFzc05hbWUuaW5kZXhPZigidWktZGF0ZXBpY2tlci1uZXh0IikmJnQo
dGhpcykucmVtb3ZlQ2xhc3MoInVpLWRhdGVwaWNrZXItbmV4dC1ob3ZlciIpfSkub24oIm1vdXNl
b3ZlciIsaSxvKX1mdW5jdGlvbiBvKCl7dC5kYXRlcGlja2VyLl9pc0Rpc2FibGVkRGF0ZXBpY2tl
cihtLmlubGluZT9tLmRwRGl2LnBhcmVudCgpWzBdOm0uaW5wdXRbMF0pfHwodCh0aGlzKS5wYXJl
bnRzKCIudWktZGF0ZXBpY2tlci1jYWxlbmRhciIpLmZpbmQoImEiKS5yZW1vdmVDbGFzcygidWkt
c3RhdGUtaG92ZXIiKSx0KHRoaXMpLmFkZENsYXNzKCJ1aS1zdGF0ZS1ob3ZlciIpLC0xIT09dGhp
cy5jbGFzc05hbWUuaW5kZXhPZigidWktZGF0ZXBpY2tlci1wcmV2IikmJnQodGhpcykuYWRkQ2xh
c3MoInVpLWRhdGVwaWNrZXItcHJldi1ob3ZlciIpLC0xIT09dGhpcy5jbGFzc05hbWUuaW5kZXhP
ZigidWktZGF0ZXBpY2tlci1uZXh0IikmJnQodGhpcykuYWRkQ2xhc3MoInVpLWRhdGVwaWNrZXIt
bmV4dC1ob3ZlciIpKX1mdW5jdGlvbiBhKGUsaSl7dC5leHRlbmQoZSxpKTtmb3IodmFyIHMgaW4g
aSludWxsPT1pW3NdJiYoZVtzXT1pW3NdKTtyZXR1cm4gZX1mdW5jdGlvbiByKHQpe3JldHVybiBm
dW5jdGlvbigpe3ZhciBlPXRoaXMuZWxlbWVudC52YWwoKTt0LmFwcGx5KHRoaXMsYXJndW1lbnRz
KSx0aGlzLl9yZWZyZXNoKCksZSE9PXRoaXMuZWxlbWVudC52YWwoKSYmdGhpcy5fdHJpZ2dlcigi
Y2hhbmdlIil9fXQudWk9dC51aXx8e30sdC51aS52ZXJzaW9uPSIxLjEyLjEiO3ZhciBoPTAsbD1B
cnJheS5wcm90b3R5cGUuc2xpY2U7dC5jbGVhbkRhdGE9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0
aW9uKGkpe3ZhciBzLG4sbztmb3Iobz0wO251bGwhPShuPWlbb10pO28rKyl0cnl7cz10Ll9kYXRh
KG4sImV2ZW50cyIpLHMmJnMucmVtb3ZlJiZ0KG4pLnRyaWdnZXJIYW5kbGVyKCJyZW1vdmUiKX1j
YXRjaChhKXt9ZShpKX19KHQuY2xlYW5EYXRhKSx0LndpZGdldD1mdW5jdGlvbihlLGkscyl7dmFy
IG4sbyxhLHI9e30saD1lLnNwbGl0KCIuIilbMF07ZT1lLnNwbGl0KCIuIilbMV07dmFyIGw9aCsi
LSIrZTtyZXR1cm4gc3x8KHM9aSxpPXQuV2lkZ2V0KSx0LmlzQXJyYXkocykmJihzPXQuZXh0ZW5k
LmFwcGx5KG51bGwsW3t9XS5jb25jYXQocykpKSx0LmV4cHJbIjoiXVtsLnRvTG93ZXJDYXNlKCld
PWZ1bmN0aW9uKGUpe3JldHVybiEhdC5kYXRhKGUsbCl9LHRbaF09dFtoXXx8e30sbj10W2hdW2Vd
LG89dFtoXVtlXT1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl9jcmVhdGVXaWRnZXQ/KGFyZ3Vt
ZW50cy5sZW5ndGgmJnRoaXMuX2NyZWF0ZVdpZGdldCh0LGUpLHZvaWQgMCk6bmV3IG8odCxlKX0s
dC5leHRlbmQobyxuLHt2ZXJzaW9uOnMudmVyc2lvbixfcHJvdG86dC5leHRlbmQoe30scyksX2No
aWxkQ29uc3RydWN0b3JzOltdfSksYT1uZXcgaSxhLm9wdGlvbnM9dC53aWRnZXQuZXh0ZW5kKHt9
LGEub3B0aW9ucyksdC5lYWNoKHMsZnVuY3Rpb24oZSxzKXtyZXR1cm4gdC5pc0Z1bmN0aW9uKHMp
PyhyW2VdPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe3JldHVybiBpLnByb3RvdHlwZVtlXS5hcHBs
eSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gbih0KXtyZXR1cm4gaS5wcm90b3R5cGVbZV0uYXBw
bHkodGhpcyx0KX1yZXR1cm4gZnVuY3Rpb24oKXt2YXIgZSxpPXRoaXMuX3N1cGVyLG89dGhpcy5f
c3VwZXJBcHBseTtyZXR1cm4gdGhpcy5fc3VwZXI9dCx0aGlzLl9zdXBlckFwcGx5PW4sZT1zLmFw
cGx5KHRoaXMsYXJndW1lbnRzKSx0aGlzLl9zdXBlcj1pLHRoaXMuX3N1cGVyQXBwbHk9byxlfX0o
KSx2b2lkIDApOihyW2VdPXMsdm9pZCAwKX0pLG8ucHJvdG90eXBlPXQud2lkZ2V0LmV4dGVuZChh
LHt3aWRnZXRFdmVudFByZWZpeDpuP2Eud2lkZ2V0RXZlbnRQcmVmaXh8fGU6ZX0scix7Y29uc3Ry
dWN0b3I6byxuYW1lc3BhY2U6aCx3aWRnZXROYW1lOmUsd2lkZ2V0RnVsbE5hbWU6bH0pLG4/KHQu
ZWFjaChuLl9jaGlsZENvbnN0cnVjdG9ycyxmdW5jdGlvbihlLGkpe3ZhciBzPWkucHJvdG90eXBl
O3Qud2lkZ2V0KHMubmFtZXNwYWNlKyIuIitzLndpZGdldE5hbWUsbyxpLl9wcm90byl9KSxkZWxl
dGUgbi5fY2hpbGRDb25zdHJ1Y3RvcnMpOmkuX2NoaWxkQ29uc3RydWN0b3JzLnB1c2gobyksdC53
aWRnZXQuYnJpZGdlKGUsbyksb30sdC53aWRnZXQuZXh0ZW5kPWZ1bmN0aW9uKGUpe2Zvcih2YXIg
aSxzLG49bC5jYWxsKGFyZ3VtZW50cywxKSxvPTAsYT1uLmxlbmd0aDthPm87bysrKWZvcihpIGlu
IG5bb10pcz1uW29dW2ldLG5bb10uaGFzT3duUHJvcGVydHkoaSkmJnZvaWQgMCE9PXMmJihlW2ld
PXQuaXNQbGFpbk9iamVjdChzKT90LmlzUGxhaW5PYmplY3QoZVtpXSk/dC53aWRnZXQuZXh0ZW5k
KHt9LGVbaV0scyk6dC53aWRnZXQuZXh0ZW5kKHt9LHMpOnMpO3JldHVybiBlfSx0LndpZGdldC5i
cmlkZ2U9ZnVuY3Rpb24oZSxpKXt2YXIgcz1pLnByb3RvdHlwZS53aWRnZXRGdWxsTmFtZXx8ZTt0
LmZuW2VdPWZ1bmN0aW9uKG4pe3ZhciBvPSJzdHJpbmciPT10eXBlb2YgbixhPWwuY2FsbChhcmd1
bWVudHMsMSkscj10aGlzO3JldHVybiBvP3RoaXMubGVuZ3RofHwiaW5zdGFuY2UiIT09bj90aGlz
LmVhY2goZnVuY3Rpb24oKXt2YXIgaSxvPXQuZGF0YSh0aGlzLHMpO3JldHVybiJpbnN0YW5jZSI9
PT1uPyhyPW8sITEpOm8/dC5pc0Z1bmN0aW9uKG9bbl0pJiYiXyIhPT1uLmNoYXJBdCgwKT8oaT1v
W25dLmFwcGx5KG8sYSksaSE9PW8mJnZvaWQgMCE9PWk/KHI9aSYmaS5qcXVlcnk/ci5wdXNoU3Rh
Y2soaS5nZXQoKSk6aSwhMSk6dm9pZCAwKTp0LmVycm9yKCJubyBzdWNoIG1ldGhvZCAnIituKyIn
IGZvciAiK2UrIiB3aWRnZXQgaW5zdGFuY2UiKTp0LmVycm9yKCJjYW5ub3QgY2FsbCBtZXRob2Rz
IG9uICIrZSsiIHByaW9yIHRvIGluaXRpYWxpemF0aW9uOyAiKyJhdHRlbXB0ZWQgdG8gY2FsbCBt
ZXRob2QgJyIrbisiJyIpfSk6cj12b2lkIDA6KGEubGVuZ3RoJiYobj10LndpZGdldC5leHRlbmQu
YXBwbHkobnVsbCxbbl0uY29uY2F0KGEpKSksdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGU9dC5k
YXRhKHRoaXMscyk7ZT8oZS5vcHRpb24obnx8e30pLGUuX2luaXQmJmUuX2luaXQoKSk6dC5kYXRh
KHRoaXMscyxuZXcgaShuLHRoaXMpKX0pKSxyfX0sdC5XaWRnZXQ9ZnVuY3Rpb24oKXt9LHQuV2lk
Z2V0Ll9jaGlsZENvbnN0cnVjdG9ycz1bXSx0LldpZGdldC5wcm90b3R5cGU9e3dpZGdldE5hbWU6
IndpZGdldCIsd2lkZ2V0RXZlbnRQcmVmaXg6IiIsZGVmYXVsdEVsZW1lbnQ6IjxkaXY+IixvcHRp
b25zOntjbGFzc2VzOnt9LGRpc2FibGVkOiExLGNyZWF0ZTpudWxsfSxfY3JlYXRlV2lkZ2V0OmZ1
bmN0aW9uKGUsaSl7aT10KGl8fHRoaXMuZGVmYXVsdEVsZW1lbnR8fHRoaXMpWzBdLHRoaXMuZWxl
bWVudD10KGkpLHRoaXMudXVpZD1oKyssdGhpcy5ldmVudE5hbWVzcGFjZT0iLiIrdGhpcy53aWRn
ZXROYW1lK3RoaXMudXVpZCx0aGlzLmJpbmRpbmdzPXQoKSx0aGlzLmhvdmVyYWJsZT10KCksdGhp
cy5mb2N1c2FibGU9dCgpLHRoaXMuY2xhc3Nlc0VsZW1lbnRMb29rdXA9e30saSE9PXRoaXMmJih0
LmRhdGEoaSx0aGlzLndpZGdldEZ1bGxOYW1lLHRoaXMpLHRoaXMuX29uKCEwLHRoaXMuZWxlbWVu
dCx7cmVtb3ZlOmZ1bmN0aW9uKHQpe3QudGFyZ2V0PT09aSYmdGhpcy5kZXN0cm95KCl9fSksdGhp
cy5kb2N1bWVudD10KGkuc3R5bGU/aS5vd25lckRvY3VtZW50OmkuZG9jdW1lbnR8fGkpLHRoaXMu
d2luZG93PXQodGhpcy5kb2N1bWVudFswXS5kZWZhdWx0Vmlld3x8dGhpcy5kb2N1bWVudFswXS5w
YXJlbnRXaW5kb3cpKSx0aGlzLm9wdGlvbnM9dC53aWRnZXQuZXh0ZW5kKHt9LHRoaXMub3B0aW9u
cyx0aGlzLl9nZXRDcmVhdGVPcHRpb25zKCksZSksdGhpcy5fY3JlYXRlKCksdGhpcy5vcHRpb25z
LmRpc2FibGVkJiZ0aGlzLl9zZXRPcHRpb25EaXNhYmxlZCh0aGlzLm9wdGlvbnMuZGlzYWJsZWQp
LHRoaXMuX3RyaWdnZXIoImNyZWF0ZSIsbnVsbCx0aGlzLl9nZXRDcmVhdGVFdmVudERhdGEoKSks
dGhpcy5faW5pdCgpfSxfZ2V0Q3JlYXRlT3B0aW9uczpmdW5jdGlvbigpe3JldHVybnt9fSxfZ2V0
Q3JlYXRlRXZlbnREYXRhOnQubm9vcCxfY3JlYXRlOnQubm9vcCxfaW5pdDp0Lm5vb3AsZGVzdHJv
eTpmdW5jdGlvbigpe3ZhciBlPXRoaXM7dGhpcy5fZGVzdHJveSgpLHQuZWFjaCh0aGlzLmNsYXNz
ZXNFbGVtZW50TG9va3VwLGZ1bmN0aW9uKHQsaSl7ZS5fcmVtb3ZlQ2xhc3MoaSx0KX0pLHRoaXMu
ZWxlbWVudC5vZmYodGhpcy5ldmVudE5hbWVzcGFjZSkucmVtb3ZlRGF0YSh0aGlzLndpZGdldEZ1
bGxOYW1lKSx0aGlzLndpZGdldCgpLm9mZih0aGlzLmV2ZW50TmFtZXNwYWNlKS5yZW1vdmVBdHRy
KCJhcmlhLWRpc2FibGVkIiksdGhpcy5iaW5kaW5ncy5vZmYodGhpcy5ldmVudE5hbWVzcGFjZSl9
LF9kZXN0cm95OnQubm9vcCx3aWRnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lbGVtZW50fSxv
cHRpb246ZnVuY3Rpb24oZSxpKXt2YXIgcyxuLG8sYT1lO2lmKDA9PT1hcmd1bWVudHMubGVuZ3Ro
KXJldHVybiB0LndpZGdldC5leHRlbmQoe30sdGhpcy5vcHRpb25zKTtpZigic3RyaW5nIj09dHlw
ZW9mIGUpaWYoYT17fSxzPWUuc3BsaXQoIi4iKSxlPXMuc2hpZnQoKSxzLmxlbmd0aCl7Zm9yKG49
YVtlXT10LndpZGdldC5leHRlbmQoe30sdGhpcy5vcHRpb25zW2VdKSxvPTA7cy5sZW5ndGgtMT5v
O28rKyluW3Nbb11dPW5bc1tvXV18fHt9LG49bltzW29dXTtpZihlPXMucG9wKCksMT09PWFyZ3Vt
ZW50cy5sZW5ndGgpcmV0dXJuIHZvaWQgMD09PW5bZV0/bnVsbDpuW2VdO25bZV09aX1lbHNle2lm
KDE9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiB2b2lkIDA9PT10aGlzLm9wdGlvbnNbZV0/bnVs
bDp0aGlzLm9wdGlvbnNbZV07YVtlXT1pfXJldHVybiB0aGlzLl9zZXRPcHRpb25zKGEpLHRoaXN9
LF9zZXRPcHRpb25zOmZ1bmN0aW9uKHQpe3ZhciBlO2ZvcihlIGluIHQpdGhpcy5fc2V0T3B0aW9u
KGUsdFtlXSk7cmV0dXJuIHRoaXN9LF9zZXRPcHRpb246ZnVuY3Rpb24odCxlKXtyZXR1cm4iY2xh
c3NlcyI9PT10JiZ0aGlzLl9zZXRPcHRpb25DbGFzc2VzKGUpLHRoaXMub3B0aW9uc1t0XT1lLCJk
aXNhYmxlZCI9PT10JiZ0aGlzLl9zZXRPcHRpb25EaXNhYmxlZChlKSx0aGlzfSxfc2V0T3B0aW9u
Q2xhc3NlczpmdW5jdGlvbihlKXt2YXIgaSxzLG47Zm9yKGkgaW4gZSluPXRoaXMuY2xhc3Nlc0Vs
ZW1lbnRMb29rdXBbaV0sZVtpXSE9PXRoaXMub3B0aW9ucy5jbGFzc2VzW2ldJiZuJiZuLmxlbmd0
aCYmKHM9dChuLmdldCgpKSx0aGlzLl9yZW1vdmVDbGFzcyhuLGkpLHMuYWRkQ2xhc3ModGhpcy5f
Y2xhc3Nlcyh7ZWxlbWVudDpzLGtleXM6aSxjbGFzc2VzOmUsYWRkOiEwfSkpKX0sX3NldE9wdGlv
bkRpc2FibGVkOmZ1bmN0aW9uKHQpe3RoaXMuX3RvZ2dsZUNsYXNzKHRoaXMud2lkZ2V0KCksdGhp
cy53aWRnZXRGdWxsTmFtZSsiLWRpc2FibGVkIixudWxsLCEhdCksdCYmKHRoaXMuX3JlbW92ZUNs
YXNzKHRoaXMuaG92ZXJhYmxlLG51bGwsInVpLXN0YXRlLWhvdmVyIiksdGhpcy5fcmVtb3ZlQ2xh
c3ModGhpcy5mb2N1c2FibGUsbnVsbCwidWktc3RhdGUtZm9jdXMiKSl9LGVuYWJsZTpmdW5jdGlv
bigpe3JldHVybiB0aGlzLl9zZXRPcHRpb25zKHtkaXNhYmxlZDohMX0pfSxkaXNhYmxlOmZ1bmN0
aW9uKCl7cmV0dXJuIHRoaXMuX3NldE9wdGlvbnMoe2Rpc2FibGVkOiEwfSl9LF9jbGFzc2VzOmZ1
bmN0aW9uKGUpe2Z1bmN0aW9uIGkoaSxvKXt2YXIgYSxyO2ZvcihyPTA7aS5sZW5ndGg+cjtyKysp
YT1uLmNsYXNzZXNFbGVtZW50TG9va3VwW2lbcl1dfHx0KCksYT1lLmFkZD90KHQudW5pcXVlKGEu
Z2V0KCkuY29uY2F0KGUuZWxlbWVudC5nZXQoKSkpKTp0KGEubm90KGUuZWxlbWVudCkuZ2V0KCkp
LG4uY2xhc3Nlc0VsZW1lbnRMb29rdXBbaVtyXV09YSxzLnB1c2goaVtyXSksbyYmZS5jbGFzc2Vz
W2lbcl1dJiZzLnB1c2goZS5jbGFzc2VzW2lbcl1dKX12YXIgcz1bXSxuPXRoaXM7cmV0dXJuIGU9
dC5leHRlbmQoe2VsZW1lbnQ6dGhpcy5lbGVtZW50LGNsYXNzZXM6dGhpcy5vcHRpb25zLmNsYXNz
ZXN8fHt9fSxlKSx0aGlzLl9vbihlLmVsZW1lbnQse3JlbW92ZToiX3VudHJhY2tDbGFzc2VzRWxl
bWVudCJ9KSxlLmtleXMmJmkoZS5rZXlzLm1hdGNoKC9cUysvZyl8fFtdLCEwKSxlLmV4dHJhJiZp
KGUuZXh0cmEubWF0Y2goL1xTKy9nKXx8W10pLHMuam9pbigiICIpfSxfdW50cmFja0NsYXNzZXNF
bGVtZW50OmZ1bmN0aW9uKGUpe3ZhciBpPXRoaXM7dC5lYWNoKGkuY2xhc3Nlc0VsZW1lbnRMb29r
dXAsZnVuY3Rpb24ocyxuKXstMSE9PXQuaW5BcnJheShlLnRhcmdldCxuKSYmKGkuY2xhc3Nlc0Vs
ZW1lbnRMb29rdXBbc109dChuLm5vdChlLnRhcmdldCkuZ2V0KCkpKX0pfSxfcmVtb3ZlQ2xhc3M6
ZnVuY3Rpb24odCxlLGkpe3JldHVybiB0aGlzLl90b2dnbGVDbGFzcyh0LGUsaSwhMSl9LF9hZGRD
bGFzczpmdW5jdGlvbih0LGUsaSl7cmV0dXJuIHRoaXMuX3RvZ2dsZUNsYXNzKHQsZSxpLCEwKX0s
X3RvZ2dsZUNsYXNzOmZ1bmN0aW9uKHQsZSxpLHMpe3M9ImJvb2xlYW4iPT10eXBlb2Ygcz9zOmk7
dmFyIG49InN0cmluZyI9PXR5cGVvZiB0fHxudWxsPT09dCxvPXtleHRyYTpuP2U6aSxrZXlzOm4/
dDplLGVsZW1lbnQ6bj90aGlzLmVsZW1lbnQ6dCxhZGQ6c307cmV0dXJuIG8uZWxlbWVudC50b2dn
bGVDbGFzcyh0aGlzLl9jbGFzc2VzKG8pLHMpLHRoaXN9LF9vbjpmdW5jdGlvbihlLGkscyl7dmFy
IG4sbz10aGlzOyJib29sZWFuIiE9dHlwZW9mIGUmJihzPWksaT1lLGU9ITEpLHM/KGk9bj10KGkp
LHRoaXMuYmluZGluZ3M9dGhpcy5iaW5kaW5ncy5hZGQoaSkpOihzPWksaT10aGlzLmVsZW1lbnQs
bj10aGlzLndpZGdldCgpKSx0LmVhY2gocyxmdW5jdGlvbihzLGEpe2Z1bmN0aW9uIHIoKXtyZXR1
cm4gZXx8by5vcHRpb25zLmRpc2FibGVkIT09ITAmJiF0KHRoaXMpLmhhc0NsYXNzKCJ1aS1zdGF0
ZS1kaXNhYmxlZCIpPygic3RyaW5nIj09dHlwZW9mIGE/b1thXTphKS5hcHBseShvLGFyZ3VtZW50
cyk6dm9pZCAwfSJzdHJpbmciIT10eXBlb2YgYSYmKHIuZ3VpZD1hLmd1aWQ9YS5ndWlkfHxyLmd1
aWR8fHQuZ3VpZCsrKTt2YXIgaD1zLm1hdGNoKC9eKFtcdzotXSopXHMqKC4qKSQvKSxsPWhbMV0r
by5ldmVudE5hbWVzcGFjZSxjPWhbMl07Yz9uLm9uKGwsYyxyKTppLm9uKGwscil9KX0sX29mZjpm
dW5jdGlvbihlLGkpe2k9KGl8fCIiKS5zcGxpdCgiICIpLmpvaW4odGhpcy5ldmVudE5hbWVzcGFj
ZSsiICIpK3RoaXMuZXZlbnROYW1lc3BhY2UsZS5vZmYoaSkub2ZmKGkpLHRoaXMuYmluZGluZ3M9
dCh0aGlzLmJpbmRpbmdzLm5vdChlKS5nZXQoKSksdGhpcy5mb2N1c2FibGU9dCh0aGlzLmZvY3Vz
YWJsZS5ub3QoZSkuZ2V0KCkpLHRoaXMuaG92ZXJhYmxlPXQodGhpcy5ob3ZlcmFibGUubm90KGUp
LmdldCgpKX0sX2RlbGF5OmZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gaSgpe3JldHVybigic3RyaW5n
Ij09dHlwZW9mIHQ/c1t0XTp0KS5hcHBseShzLGFyZ3VtZW50cyl9dmFyIHM9dGhpcztyZXR1cm4g
c2V0VGltZW91dChpLGV8fDApfSxfaG92ZXJhYmxlOmZ1bmN0aW9uKGUpe3RoaXMuaG92ZXJhYmxl
PXRoaXMuaG92ZXJhYmxlLmFkZChlKSx0aGlzLl9vbihlLHttb3VzZWVudGVyOmZ1bmN0aW9uKGUp
e3RoaXMuX2FkZENsYXNzKHQoZS5jdXJyZW50VGFyZ2V0KSxudWxsLCJ1aS1zdGF0ZS1ob3ZlciIp
fSxtb3VzZWxlYXZlOmZ1bmN0aW9uKGUpe3RoaXMuX3JlbW92ZUNsYXNzKHQoZS5jdXJyZW50VGFy
Z2V0KSxudWxsLCJ1aS1zdGF0ZS1ob3ZlciIpfX0pfSxfZm9jdXNhYmxlOmZ1bmN0aW9uKGUpe3Ro
aXMuZm9jdXNhYmxlPXRoaXMuZm9jdXNhYmxlLmFkZChlKSx0aGlzLl9vbihlLHtmb2N1c2luOmZ1
bmN0aW9uKGUpe3RoaXMuX2FkZENsYXNzKHQoZS5jdXJyZW50VGFyZ2V0KSxudWxsLCJ1aS1zdGF0
ZS1mb2N1cyIpfSxmb2N1c291dDpmdW5jdGlvbihlKXt0aGlzLl9yZW1vdmVDbGFzcyh0KGUuY3Vy
cmVudFRhcmdldCksbnVsbCwidWktc3RhdGUtZm9jdXMiKX19KX0sX3RyaWdnZXI6ZnVuY3Rpb24o
ZSxpLHMpe3ZhciBuLG8sYT10aGlzLm9wdGlvbnNbZV07aWYocz1zfHx7fSxpPXQuRXZlbnQoaSks
aS50eXBlPShlPT09dGhpcy53aWRnZXRFdmVudFByZWZpeD9lOnRoaXMud2lkZ2V0RXZlbnRQcmVm
aXgrZSkudG9Mb3dlckNhc2UoKSxpLnRhcmdldD10aGlzLmVsZW1lbnRbMF0sbz1pLm9yaWdpbmFs
RXZlbnQpZm9yKG4gaW4gbyluIGluIGl8fChpW25dPW9bbl0pO3JldHVybiB0aGlzLmVsZW1lbnQu
dHJpZ2dlcihpLHMpLCEodC5pc0Z1bmN0aW9uKGEpJiZhLmFwcGx5KHRoaXMuZWxlbWVudFswXSxb
aV0uY29uY2F0KHMpKT09PSExfHxpLmlzRGVmYXVsdFByZXZlbnRlZCgpKX19LHQuZWFjaCh7c2hv
dzoiZmFkZUluIixoaWRlOiJmYWRlT3V0In0sZnVuY3Rpb24oZSxpKXt0LldpZGdldC5wcm90b3R5
cGVbIl8iK2VdPWZ1bmN0aW9uKHMsbixvKXsic3RyaW5nIj09dHlwZW9mIG4mJihuPXtlZmZlY3Q6
bn0pO3ZhciBhLHI9bj9uPT09ITB8fCJudW1iZXIiPT10eXBlb2Ygbj9pOm4uZWZmZWN0fHxpOmU7
bj1ufHx7fSwibnVtYmVyIj09dHlwZW9mIG4mJihuPXtkdXJhdGlvbjpufSksYT0hdC5pc0VtcHR5
T2JqZWN0KG4pLG4uY29tcGxldGU9byxuLmRlbGF5JiZzLmRlbGF5KG4uZGVsYXkpLGEmJnQuZWZm
ZWN0cyYmdC5lZmZlY3RzLmVmZmVjdFtyXT9zW2VdKG4pOnIhPT1lJiZzW3JdP3Nbcl0obi5kdXJh
dGlvbixuLmVhc2luZyxvKTpzLnF1ZXVlKGZ1bmN0aW9uKGkpe3QodGhpcylbZV0oKSxvJiZvLmNh
bGwoc1swXSksaSgpfSl9fSksdC53aWRnZXQsZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQsZSxpKXty
ZXR1cm5bcGFyc2VGbG9hdCh0WzBdKSoodS50ZXN0KHRbMF0pP2UvMTAwOjEpLHBhcnNlRmxvYXQo
dFsxXSkqKHUudGVzdCh0WzFdKT9pLzEwMDoxKV19ZnVuY3Rpb24gaShlLGkpe3JldHVybiBwYXJz
ZUludCh0LmNzcyhlLGkpLDEwKXx8MH1mdW5jdGlvbiBzKGUpe3ZhciBpPWVbMF07cmV0dXJuIDk9
PT1pLm5vZGVUeXBlP3t3aWR0aDplLndpZHRoKCksaGVpZ2h0OmUuaGVpZ2h0KCksb2Zmc2V0Ont0
b3A6MCxsZWZ0OjB9fTp0LmlzV2luZG93KGkpP3t3aWR0aDplLndpZHRoKCksaGVpZ2h0OmUuaGVp
Z2h0KCksb2Zmc2V0Ont0b3A6ZS5zY3JvbGxUb3AoKSxsZWZ0OmUuc2Nyb2xsTGVmdCgpfX06aS5w
cmV2ZW50RGVmYXVsdD97d2lkdGg6MCxoZWlnaHQ6MCxvZmZzZXQ6e3RvcDppLnBhZ2VZLGxlZnQ6
aS5wYWdlWH19Ont3aWR0aDplLm91dGVyV2lkdGgoKSxoZWlnaHQ6ZS5vdXRlckhlaWdodCgpLG9m
ZnNldDplLm9mZnNldCgpfX12YXIgbixvPU1hdGgubWF4LGE9TWF0aC5hYnMscj0vbGVmdHxjZW50
ZXJ8cmlnaHQvLGg9L3RvcHxjZW50ZXJ8Ym90dG9tLyxsPS9bXCtcLV1cZCsoXC5bXGRdKyk/JT8v
LGM9L15cdysvLHU9LyUkLyxkPXQuZm4ucG9zaXRpb247dC5wb3NpdGlvbj17c2Nyb2xsYmFyV2lk
dGg6ZnVuY3Rpb24oKXtpZih2b2lkIDAhPT1uKXJldHVybiBuO3ZhciBlLGkscz10KCI8ZGl2IHN0
eWxlPSdkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjUwcHg7aGVpZ2h0OjUw
cHg7b3ZlcmZsb3c6aGlkZGVuOyc+PGRpdiBzdHlsZT0naGVpZ2h0OjEwMHB4O3dpZHRoOmF1dG87
Jz48L2Rpdj48L2Rpdj4iKSxvPXMuY2hpbGRyZW4oKVswXTtyZXR1cm4gdCgiYm9keSIpLmFwcGVu
ZChzKSxlPW8ub2Zmc2V0V2lkdGgscy5jc3MoIm92ZXJmbG93Iiwic2Nyb2xsIiksaT1vLm9mZnNl
dFdpZHRoLGU9PT1pJiYoaT1zWzBdLmNsaWVudFdpZHRoKSxzLnJlbW92ZSgpLG49ZS1pfSxnZXRT
Y3JvbGxJbmZvOmZ1bmN0aW9uKGUpe3ZhciBpPWUuaXNXaW5kb3d8fGUuaXNEb2N1bWVudD8iIjpl
LmVsZW1lbnQuY3NzKCJvdmVyZmxvdy14Iikscz1lLmlzV2luZG93fHxlLmlzRG9jdW1lbnQ/IiI6
ZS5lbGVtZW50LmNzcygib3ZlcmZsb3cteSIpLG49InNjcm9sbCI9PT1pfHwiYXV0byI9PT1pJiZl
LndpZHRoPGUuZWxlbWVudFswXS5zY3JvbGxXaWR0aCxvPSJzY3JvbGwiPT09c3x8ImF1dG8iPT09
cyYmZS5oZWlnaHQ8ZS5lbGVtZW50WzBdLnNjcm9sbEhlaWdodDtyZXR1cm57d2lkdGg6bz90LnBv
c2l0aW9uLnNjcm9sbGJhcldpZHRoKCk6MCxoZWlnaHQ6bj90LnBvc2l0aW9uLnNjcm9sbGJhcldp
ZHRoKCk6MH19LGdldFdpdGhpbkluZm86ZnVuY3Rpb24oZSl7dmFyIGk9dChlfHx3aW5kb3cpLHM9
dC5pc1dpbmRvdyhpWzBdKSxuPSEhaVswXSYmOT09PWlbMF0ubm9kZVR5cGUsbz0hcyYmIW47cmV0
dXJue2VsZW1lbnQ6aSxpc1dpbmRvdzpzLGlzRG9jdW1lbnQ6bixvZmZzZXQ6bz90KGUpLm9mZnNl
dCgpOntsZWZ0OjAsdG9wOjB9LHNjcm9sbExlZnQ6aS5zY3JvbGxMZWZ0KCksc2Nyb2xsVG9wOmku
c2Nyb2xsVG9wKCksd2lkdGg6aS5vdXRlcldpZHRoKCksaGVpZ2h0Omkub3V0ZXJIZWlnaHQoKX19
fSx0LmZuLnBvc2l0aW9uPWZ1bmN0aW9uKG4pe2lmKCFufHwhbi5vZilyZXR1cm4gZC5hcHBseSh0
aGlzLGFyZ3VtZW50cyk7bj10LmV4dGVuZCh7fSxuKTt2YXIgdSxwLGYsZyxtLF8sdj10KG4ub2Yp
LGI9dC5wb3NpdGlvbi5nZXRXaXRoaW5JbmZvKG4ud2l0aGluKSx5PXQucG9zaXRpb24uZ2V0U2Ny
b2xsSW5mbyhiKSx3PShuLmNvbGxpc2lvbnx8ImZsaXAiKS5zcGxpdCgiICIpLGs9e307cmV0dXJu
IF89cyh2KSx2WzBdLnByZXZlbnREZWZhdWx0JiYobi5hdD0ibGVmdCB0b3AiKSxwPV8ud2lkdGgs
Zj1fLmhlaWdodCxnPV8ub2Zmc2V0LG09dC5leHRlbmQoe30sZyksdC5lYWNoKFsibXkiLCJhdCJd
LGZ1bmN0aW9uKCl7dmFyIHQsZSxpPShuW3RoaXNdfHwiIikuc3BsaXQoIiAiKTsxPT09aS5sZW5n
dGgmJihpPXIudGVzdChpWzBdKT9pLmNvbmNhdChbImNlbnRlciJdKTpoLnRlc3QoaVswXSk/WyJj
ZW50ZXIiXS5jb25jYXQoaSk6WyJjZW50ZXIiLCJjZW50ZXIiXSksaVswXT1yLnRlc3QoaVswXSk/
aVswXToiY2VudGVyIixpWzFdPWgudGVzdChpWzFdKT9pWzFdOiJjZW50ZXIiLHQ9bC5leGVjKGlb
MF0pLGU9bC5leGVjKGlbMV0pLGtbdGhpc109W3Q/dFswXTowLGU/ZVswXTowXSxuW3RoaXNdPVtj
LmV4ZWMoaVswXSlbMF0sYy5leGVjKGlbMV0pWzBdXX0pLDE9PT13Lmxlbmd0aCYmKHdbMV09d1sw
XSksInJpZ2h0Ij09PW4uYXRbMF0/bS5sZWZ0Kz1wOiJjZW50ZXIiPT09bi5hdFswXSYmKG0ubGVm
dCs9cC8yKSwiYm90dG9tIj09PW4uYXRbMV0/bS50b3ArPWY6ImNlbnRlciI9PT1uLmF0WzFdJiYo
bS50b3ArPWYvMiksdT1lKGsuYXQscCxmKSxtLmxlZnQrPXVbMF0sbS50b3ArPXVbMV0sdGhpcy5l
YWNoKGZ1bmN0aW9uKCl7dmFyIHMscixoPXQodGhpcyksbD1oLm91dGVyV2lkdGgoKSxjPWgub3V0
ZXJIZWlnaHQoKSxkPWkodGhpcywibWFyZ2luTGVmdCIpLF89aSh0aGlzLCJtYXJnaW5Ub3AiKSx4
PWwrZCtpKHRoaXMsIm1hcmdpblJpZ2h0IikreS53aWR0aCxDPWMrXytpKHRoaXMsIm1hcmdpbkJv
dHRvbSIpK3kuaGVpZ2h0LEQ9dC5leHRlbmQoe30sbSksST1lKGsubXksaC5vdXRlcldpZHRoKCks
aC5vdXRlckhlaWdodCgpKTsicmlnaHQiPT09bi5teVswXT9ELmxlZnQtPWw6ImNlbnRlciI9PT1u
Lm15WzBdJiYoRC5sZWZ0LT1sLzIpLCJib3R0b20iPT09bi5teVsxXT9ELnRvcC09YzoiY2VudGVy
Ij09PW4ubXlbMV0mJihELnRvcC09Yy8yKSxELmxlZnQrPUlbMF0sRC50b3ArPUlbMV0scz17bWFy
Z2luTGVmdDpkLG1hcmdpblRvcDpffSx0LmVhY2goWyJsZWZ0IiwidG9wIl0sZnVuY3Rpb24oZSxp
KXt0LnVpLnBvc2l0aW9uW3dbZV1dJiZ0LnVpLnBvc2l0aW9uW3dbZV1dW2ldKEQse3RhcmdldFdp
ZHRoOnAsdGFyZ2V0SGVpZ2h0OmYsZWxlbVdpZHRoOmwsZWxlbUhlaWdodDpjLGNvbGxpc2lvblBv
c2l0aW9uOnMsY29sbGlzaW9uV2lkdGg6eCxjb2xsaXNpb25IZWlnaHQ6QyxvZmZzZXQ6W3VbMF0r
SVswXSx1WzFdK0lbMV1dLG15Om4ubXksYXQ6bi5hdCx3aXRoaW46YixlbGVtOmh9KX0pLG4udXNp
bmcmJihyPWZ1bmN0aW9uKHQpe3ZhciBlPWcubGVmdC1ELmxlZnQsaT1lK3AtbCxzPWcudG9wLUQu
dG9wLHI9cytmLWMsdT17dGFyZ2V0OntlbGVtZW50OnYsbGVmdDpnLmxlZnQsdG9wOmcudG9wLHdp
ZHRoOnAsaGVpZ2h0OmZ9LGVsZW1lbnQ6e2VsZW1lbnQ6aCxsZWZ0OkQubGVmdCx0b3A6RC50b3As
d2lkdGg6bCxoZWlnaHQ6Y30saG9yaXpvbnRhbDowPmk/ImxlZnQiOmU+MD8icmlnaHQiOiJjZW50
ZXIiLHZlcnRpY2FsOjA+cj8idG9wIjpzPjA/ImJvdHRvbSI6Im1pZGRsZSJ9O2w+cCYmcD5hKGUr
aSkmJih1Lmhvcml6b250YWw9ImNlbnRlciIpLGM+ZiYmZj5hKHMrcikmJih1LnZlcnRpY2FsPSJt
aWRkbGUiKSx1LmltcG9ydGFudD1vKGEoZSksYShpKSk+byhhKHMpLGEocikpPyJob3Jpem9udGFs
IjoidmVydGljYWwiLG4udXNpbmcuY2FsbCh0aGlzLHQsdSl9KSxoLm9mZnNldCh0LmV4dGVuZChE
LHt1c2luZzpyfSkpfSl9LHQudWkucG9zaXRpb249e2ZpdDp7bGVmdDpmdW5jdGlvbih0LGUpe3Zh
ciBpLHM9ZS53aXRoaW4sbj1zLmlzV2luZG93P3Muc2Nyb2xsTGVmdDpzLm9mZnNldC5sZWZ0LGE9
cy53aWR0aCxyPXQubGVmdC1lLmNvbGxpc2lvblBvc2l0aW9uLm1hcmdpbkxlZnQsaD1uLXIsbD1y
K2UuY29sbGlzaW9uV2lkdGgtYS1uO2UuY29sbGlzaW9uV2lkdGg+YT9oPjAmJjA+PWw/KGk9dC5s
ZWZ0K2grZS5jb2xsaXNpb25XaWR0aC1hLW4sdC5sZWZ0Kz1oLWkpOnQubGVmdD1sPjAmJjA+PWg/
bjpoPmw/bithLWUuY29sbGlzaW9uV2lkdGg6bjpoPjA/dC5sZWZ0Kz1oOmw+MD90LmxlZnQtPWw6
dC5sZWZ0PW8odC5sZWZ0LXIsdC5sZWZ0KX0sdG9wOmZ1bmN0aW9uKHQsZSl7dmFyIGkscz1lLndp
dGhpbixuPXMuaXNXaW5kb3c/cy5zY3JvbGxUb3A6cy5vZmZzZXQudG9wLGE9ZS53aXRoaW4uaGVp
Z2h0LHI9dC50b3AtZS5jb2xsaXNpb25Qb3NpdGlvbi5tYXJnaW5Ub3AsaD1uLXIsbD1yK2UuY29s
bGlzaW9uSGVpZ2h0LWEtbjtlLmNvbGxpc2lvbkhlaWdodD5hP2g+MCYmMD49bD8oaT10LnRvcCto
K2UuY29sbGlzaW9uSGVpZ2h0LWEtbix0LnRvcCs9aC1pKTp0LnRvcD1sPjAmJjA+PWg/bjpoPmw/
bithLWUuY29sbGlzaW9uSGVpZ2h0Om46aD4wP3QudG9wKz1oOmw+MD90LnRvcC09bDp0LnRvcD1v
KHQudG9wLXIsdC50b3ApfX0sZmxpcDp7bGVmdDpmdW5jdGlvbih0LGUpe3ZhciBpLHMsbj1lLndp
dGhpbixvPW4ub2Zmc2V0LmxlZnQrbi5zY3JvbGxMZWZ0LHI9bi53aWR0aCxoPW4uaXNXaW5kb3c/
bi5zY3JvbGxMZWZ0Om4ub2Zmc2V0LmxlZnQsbD10LmxlZnQtZS5jb2xsaXNpb25Qb3NpdGlvbi5t
YXJnaW5MZWZ0LGM9bC1oLHU9bCtlLmNvbGxpc2lvbldpZHRoLXItaCxkPSJsZWZ0Ij09PWUubXlb
MF0/LWUuZWxlbVdpZHRoOiJyaWdodCI9PT1lLm15WzBdP2UuZWxlbVdpZHRoOjAscD0ibGVmdCI9
PT1lLmF0WzBdP2UudGFyZ2V0V2lkdGg6InJpZ2h0Ij09PWUuYXRbMF0/LWUudGFyZ2V0V2lkdGg6
MCxmPS0yKmUub2Zmc2V0WzBdOzA+Yz8oaT10LmxlZnQrZCtwK2YrZS5jb2xsaXNpb25XaWR0aC1y
LW8sKDA+aXx8YShjKT5pKSYmKHQubGVmdCs9ZCtwK2YpKTp1PjAmJihzPXQubGVmdC1lLmNvbGxp
c2lvblBvc2l0aW9uLm1hcmdpbkxlZnQrZCtwK2YtaCwocz4wfHx1PmEocykpJiYodC5sZWZ0Kz1k
K3ArZikpfSx0b3A6ZnVuY3Rpb24odCxlKXt2YXIgaSxzLG49ZS53aXRoaW4sbz1uLm9mZnNldC50
b3Arbi5zY3JvbGxUb3Ascj1uLmhlaWdodCxoPW4uaXNXaW5kb3c/bi5zY3JvbGxUb3A6bi5vZmZz
ZXQudG9wLGw9dC50b3AtZS5jb2xsaXNpb25Qb3NpdGlvbi5tYXJnaW5Ub3AsYz1sLWgsdT1sK2Uu
Y29sbGlzaW9uSGVpZ2h0LXItaCxkPSJ0b3AiPT09ZS5teVsxXSxwPWQ/LWUuZWxlbUhlaWdodDoi
Ym90dG9tIj09PWUubXlbMV0/ZS5lbGVtSGVpZ2h0OjAsZj0idG9wIj09PWUuYXRbMV0/ZS50YXJn
ZXRIZWlnaHQ6ImJvdHRvbSI9PT1lLmF0WzFdPy1lLnRhcmdldEhlaWdodDowLGc9LTIqZS5vZmZz
ZXRbMV07MD5jPyhzPXQudG9wK3ArZitnK2UuY29sbGlzaW9uSGVpZ2h0LXItbywoMD5zfHxhKGMp
PnMpJiYodC50b3ArPXArZitnKSk6dT4wJiYoaT10LnRvcC1lLmNvbGxpc2lvblBvc2l0aW9uLm1h
cmdpblRvcCtwK2YrZy1oLChpPjB8fHU+YShpKSkmJih0LnRvcCs9cCtmK2cpKX19LGZsaXBmaXQ6
e2xlZnQ6ZnVuY3Rpb24oKXt0LnVpLnBvc2l0aW9uLmZsaXAubGVmdC5hcHBseSh0aGlzLGFyZ3Vt
ZW50cyksdC51aS5wb3NpdGlvbi5maXQubGVmdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LHRvcDpm
dW5jdGlvbigpe3QudWkucG9zaXRpb24uZmxpcC50b3AuYXBwbHkodGhpcyxhcmd1bWVudHMpLHQu
dWkucG9zaXRpb24uZml0LnRvcC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fX19KCksdC51aS5wb3Np
dGlvbix0LmV4dGVuZCh0LmV4cHJbIjoiXSx7ZGF0YTp0LmV4cHIuY3JlYXRlUHNldWRvP3QuZXhw
ci5jcmVhdGVQc2V1ZG8oZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKGkpe3JldHVybiEhdC5k
YXRhKGksZSl9fSk6ZnVuY3Rpb24oZSxpLHMpe3JldHVybiEhdC5kYXRhKGUsc1szXSl9fSksdC5m
bi5leHRlbmQoe2Rpc2FibGVTZWxlY3Rpb246ZnVuY3Rpb24oKXt2YXIgdD0ib25zZWxlY3RzdGFy
dCJpbiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKT8ic2VsZWN0c3RhcnQiOiJtb3VzZWRv
d24iO3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0aGlzLm9uKHQrIi51aS1kaXNhYmxlU2VsZWN0
aW9uIixmdW5jdGlvbih0KXt0LnByZXZlbnREZWZhdWx0KCl9KX19KCksZW5hYmxlU2VsZWN0aW9u
OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub2ZmKCIudWktZGlzYWJsZVNlbGVjdGlvbiIpfX0pO3Zh
ciBjPSJ1aS1lZmZlY3RzLSIsdT0idWktZWZmZWN0cy1zdHlsZSIsZD0idWktZWZmZWN0cy1hbmlt
YXRlZCIscD10O3QuZWZmZWN0cz17ZWZmZWN0Ont9fSxmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIGko
dCxlLGkpe3ZhciBzPXVbZS50eXBlXXx8e307cmV0dXJuIG51bGw9PXQ/aXx8IWUuZGVmP251bGw6
ZS5kZWY6KHQ9cy5mbG9vcj9+fnQ6cGFyc2VGbG9hdCh0KSxpc05hTih0KT9lLmRlZjpzLm1vZD8o
dCtzLm1vZCklcy5tb2Q6MD50PzA6dD5zLm1heD9zLm1heDp0KX1mdW5jdGlvbiBzKGkpe3ZhciBz
PWwoKSxuPXMuX3JnYmE9W107cmV0dXJuIGk9aS50b0xvd2VyQ2FzZSgpLGYoaCxmdW5jdGlvbih0
LG8pe3ZhciBhLHI9by5yZS5leGVjKGkpLGg9ciYmby5wYXJzZShyKSxsPW8uc3BhY2V8fCJyZ2Jh
IjtyZXR1cm4gaD8oYT1zW2xdKGgpLHNbY1tsXS5jYWNoZV09YVtjW2xdLmNhY2hlXSxuPXMuX3Jn
YmE9YS5fcmdiYSwhMSk6ZX0pLG4ubGVuZ3RoPygiMCwwLDAsMCI9PT1uLmpvaW4oKSYmdC5leHRl
bmQobixvLnRyYW5zcGFyZW50KSxzKTpvW2ldfWZ1bmN0aW9uIG4odCxlLGkpe3JldHVybiBpPShp
KzEpJTEsMT42Kmk/dCs2KihlLXQpKmk6MT4yKmk/ZToyPjMqaT90KzYqKGUtdCkqKDIvMy1pKTp0
fXZhciBvLGE9ImJhY2tncm91bmRDb2xvciBib3JkZXJCb3R0b21Db2xvciBib3JkZXJMZWZ0Q29s
b3IgYm9yZGVyUmlnaHRDb2xvciBib3JkZXJUb3BDb2xvciBjb2xvciBjb2x1bW5SdWxlQ29sb3Ig
b3V0bGluZUNvbG9yIHRleHREZWNvcmF0aW9uQ29sb3IgdGV4dEVtcGhhc2lzQ29sb3IiLHI9L14o
W1wtK10pPVxzKihcZCtcLj9cZCopLyxoPVt7cmU6L3JnYmE/XChccyooXGR7MSwzfSlccyosXHMq
KFxkezEsM30pXHMqLFxzKihcZHsxLDN9KVxzKig/OixccyooXGQ/KD86XC5cZCspPylccyopP1wp
LyxwYXJzZTpmdW5jdGlvbih0KXtyZXR1cm5bdFsxXSx0WzJdLHRbM10sdFs0XV19fSx7cmU6L3Jn
YmE/XChccyooXGQrKD86XC5cZCspPylcJVxzKixccyooXGQrKD86XC5cZCspPylcJVxzKixccyoo
XGQrKD86XC5cZCspPylcJVxzKig/OixccyooXGQ/KD86XC5cZCspPylccyopP1wpLyxwYXJzZTpm
dW5jdGlvbih0KXtyZXR1cm5bMi41NSp0WzFdLDIuNTUqdFsyXSwyLjU1KnRbM10sdFs0XV19fSx7
cmU6LyMoW2EtZjAtOV17Mn0pKFthLWYwLTldezJ9KShbYS1mMC05XXsyfSkvLHBhcnNlOmZ1bmN0
aW9uKHQpe3JldHVybltwYXJzZUludCh0WzFdLDE2KSxwYXJzZUludCh0WzJdLDE2KSxwYXJzZUlu
dCh0WzNdLDE2KV19fSx7cmU6LyMoW2EtZjAtOV0pKFthLWYwLTldKShbYS1mMC05XSkvLHBhcnNl
OmZ1bmN0aW9uKHQpe3JldHVybltwYXJzZUludCh0WzFdK3RbMV0sMTYpLHBhcnNlSW50KHRbMl0r
dFsyXSwxNikscGFyc2VJbnQodFszXSt0WzNdLDE2KV19fSx7cmU6L2hzbGE/XChccyooXGQrKD86
XC5cZCspPylccyosXHMqKFxkKyg/OlwuXGQrKT8pXCVccyosXHMqKFxkKyg/OlwuXGQrKT8pXCVc
cyooPzosXHMqKFxkPyg/OlwuXGQrKT8pXHMqKT9cKS8sc3BhY2U6ImhzbGEiLHBhcnNlOmZ1bmN0
aW9uKHQpe3JldHVyblt0WzFdLHRbMl0vMTAwLHRbM10vMTAwLHRbNF1dfX1dLGw9dC5Db2xvcj1m
dW5jdGlvbihlLGkscyxuKXtyZXR1cm4gbmV3IHQuQ29sb3IuZm4ucGFyc2UoZSxpLHMsbil9LGM9
e3JnYmE6e3Byb3BzOntyZWQ6e2lkeDowLHR5cGU6ImJ5dGUifSxncmVlbjp7aWR4OjEsdHlwZToi
Ynl0ZSJ9LGJsdWU6e2lkeDoyLHR5cGU6ImJ5dGUifX19LGhzbGE6e3Byb3BzOntodWU6e2lkeDow
LHR5cGU6ImRlZ3JlZXMifSxzYXR1cmF0aW9uOntpZHg6MSx0eXBlOiJwZXJjZW50In0sbGlnaHRu
ZXNzOntpZHg6Mix0eXBlOiJwZXJjZW50In19fX0sdT17ImJ5dGUiOntmbG9vcjohMCxtYXg6MjU1
fSxwZXJjZW50OnttYXg6MX0sZGVncmVlczp7bW9kOjM2MCxmbG9vcjohMH19LGQ9bC5zdXBwb3J0
PXt9LHA9dCgiPHA+IilbMF0sZj10LmVhY2g7cC5zdHlsZS5jc3NUZXh0PSJiYWNrZ3JvdW5kLWNv
bG9yOnJnYmEoMSwxLDEsLjUpIixkLnJnYmE9cC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IuaW5kZXhP
ZigicmdiYSIpPi0xLGYoYyxmdW5jdGlvbih0LGUpe2UuY2FjaGU9Il8iK3QsZS5wcm9wcy5hbHBo
YT17aWR4OjMsdHlwZToicGVyY2VudCIsZGVmOjF9fSksbC5mbj10LmV4dGVuZChsLnByb3RvdHlw
ZSx7cGFyc2U6ZnVuY3Rpb24obixhLHIsaCl7aWYobj09PWUpcmV0dXJuIHRoaXMuX3JnYmE9W251
bGwsbnVsbCxudWxsLG51bGxdLHRoaXM7KG4uanF1ZXJ5fHxuLm5vZGVUeXBlKSYmKG49dChuKS5j
c3MoYSksYT1lKTt2YXIgdT10aGlzLGQ9dC50eXBlKG4pLHA9dGhpcy5fcmdiYT1bXTtyZXR1cm4g
YSE9PWUmJihuPVtuLGEscixoXSxkPSJhcnJheSIpLCJzdHJpbmciPT09ZD90aGlzLnBhcnNlKHMo
bil8fG8uX2RlZmF1bHQpOiJhcnJheSI9PT1kPyhmKGMucmdiYS5wcm9wcyxmdW5jdGlvbih0LGUp
e3BbZS5pZHhdPWkobltlLmlkeF0sZSl9KSx0aGlzKToib2JqZWN0Ij09PWQ/KG4gaW5zdGFuY2Vv
ZiBsP2YoYyxmdW5jdGlvbih0LGUpe25bZS5jYWNoZV0mJih1W2UuY2FjaGVdPW5bZS5jYWNoZV0u
c2xpY2UoKSl9KTpmKGMsZnVuY3Rpb24oZSxzKXt2YXIgbz1zLmNhY2hlO2Yocy5wcm9wcyxmdW5j
dGlvbih0LGUpe2lmKCF1W29dJiZzLnRvKXtpZigiYWxwaGEiPT09dHx8bnVsbD09blt0XSlyZXR1
cm47dVtvXT1zLnRvKHUuX3JnYmEpfXVbb11bZS5pZHhdPWkoblt0XSxlLCEwKX0pLHVbb10mJjA+
dC5pbkFycmF5KG51bGwsdVtvXS5zbGljZSgwLDMpKSYmKHVbb11bM109MSxzLmZyb20mJih1Ll9y
Z2JhPXMuZnJvbSh1W29dKSkpfSksdGhpcyk6ZX0saXM6ZnVuY3Rpb24odCl7dmFyIGk9bCh0KSxz
PSEwLG49dGhpcztyZXR1cm4gZihjLGZ1bmN0aW9uKHQsbyl7dmFyIGEscj1pW28uY2FjaGVdO3Jl
dHVybiByJiYoYT1uW28uY2FjaGVdfHxvLnRvJiZvLnRvKG4uX3JnYmEpfHxbXSxmKG8ucHJvcHMs
ZnVuY3Rpb24odCxpKXtyZXR1cm4gbnVsbCE9cltpLmlkeF0/cz1yW2kuaWR4XT09PWFbaS5pZHhd
OmV9KSksc30pLHN9LF9zcGFjZTpmdW5jdGlvbigpe3ZhciB0PVtdLGU9dGhpcztyZXR1cm4gZihj
LGZ1bmN0aW9uKGkscyl7ZVtzLmNhY2hlXSYmdC5wdXNoKGkpfSksdC5wb3AoKX0sdHJhbnNpdGlv
bjpmdW5jdGlvbih0LGUpe3ZhciBzPWwodCksbj1zLl9zcGFjZSgpLG89Y1tuXSxhPTA9PT10aGlz
LmFscGhhKCk/bCgidHJhbnNwYXJlbnQiKTp0aGlzLHI9YVtvLmNhY2hlXXx8by50byhhLl9yZ2Jh
KSxoPXIuc2xpY2UoKTtyZXR1cm4gcz1zW28uY2FjaGVdLGYoby5wcm9wcyxmdW5jdGlvbih0LG4p
e3ZhciBvPW4uaWR4LGE9cltvXSxsPXNbb10sYz11W24udHlwZV18fHt9O251bGwhPT1sJiYobnVs
bD09PWE/aFtvXT1sOihjLm1vZCYmKGwtYT5jLm1vZC8yP2ErPWMubW9kOmEtbD5jLm1vZC8yJiYo
YS09Yy5tb2QpKSxoW29dPWkoKGwtYSkqZSthLG4pKSl9KSx0aGlzW25dKGgpfSxibGVuZDpmdW5j
dGlvbihlKXtpZigxPT09dGhpcy5fcmdiYVszXSlyZXR1cm4gdGhpczt2YXIgaT10aGlzLl9yZ2Jh
LnNsaWNlKCkscz1pLnBvcCgpLG49bChlKS5fcmdiYTtyZXR1cm4gbCh0Lm1hcChpLGZ1bmN0aW9u
KHQsZSl7cmV0dXJuKDEtcykqbltlXStzKnR9KSl9LHRvUmdiYVN0cmluZzpmdW5jdGlvbigpe3Zh
ciBlPSJyZ2JhKCIsaT10Lm1hcCh0aGlzLl9yZ2JhLGZ1bmN0aW9uKHQsZSl7cmV0dXJuIG51bGw9
PXQ/ZT4yPzE6MDp0fSk7cmV0dXJuIDE9PT1pWzNdJiYoaS5wb3AoKSxlPSJyZ2IoIiksZStpLmpv
aW4oKSsiKSJ9LHRvSHNsYVN0cmluZzpmdW5jdGlvbigpe3ZhciBlPSJoc2xhKCIsaT10Lm1hcCh0
aGlzLmhzbGEoKSxmdW5jdGlvbih0LGUpe3JldHVybiBudWxsPT10JiYodD1lPjI/MTowKSxlJiYz
PmUmJih0PU1hdGgucm91bmQoMTAwKnQpKyIlIiksdH0pO3JldHVybiAxPT09aVszXSYmKGkucG9w
KCksZT0iaHNsKCIpLGUraS5qb2luKCkrIikifSx0b0hleFN0cmluZzpmdW5jdGlvbihlKXt2YXIg
aT10aGlzLl9yZ2JhLnNsaWNlKCkscz1pLnBvcCgpO3JldHVybiBlJiZpLnB1c2gofn4oMjU1KnMp
KSwiIyIrdC5tYXAoaSxmdW5jdGlvbih0KXtyZXR1cm4gdD0odHx8MCkudG9TdHJpbmcoMTYpLDE9
PT10Lmxlbmd0aD8iMCIrdDp0fSkuam9pbigiIil9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJu
IDA9PT10aGlzLl9yZ2JhWzNdPyJ0cmFuc3BhcmVudCI6dGhpcy50b1JnYmFTdHJpbmcoKX19KSxs
LmZuLnBhcnNlLnByb3RvdHlwZT1sLmZuLGMuaHNsYS50bz1mdW5jdGlvbih0KXtpZihudWxsPT10
WzBdfHxudWxsPT10WzFdfHxudWxsPT10WzJdKXJldHVybltudWxsLG51bGwsbnVsbCx0WzNdXTt2
YXIgZSxpLHM9dFswXS8yNTUsbj10WzFdLzI1NSxvPXRbMl0vMjU1LGE9dFszXSxyPU1hdGgubWF4
KHMsbixvKSxoPU1hdGgubWluKHMsbixvKSxsPXItaCxjPXIraCx1PS41KmM7cmV0dXJuIGU9aD09
PXI/MDpzPT09cj82MCoobi1vKS9sKzM2MDpuPT09cj82MCooby1zKS9sKzEyMDo2MCoocy1uKS9s
KzI0MCxpPTA9PT1sPzA6LjU+PXU/bC9jOmwvKDItYyksW01hdGgucm91bmQoZSklMzYwLGksdSxu
dWxsPT1hPzE6YV19LGMuaHNsYS5mcm9tPWZ1bmN0aW9uKHQpe2lmKG51bGw9PXRbMF18fG51bGw9
PXRbMV18fG51bGw9PXRbMl0pcmV0dXJuW251bGwsbnVsbCxudWxsLHRbM11dO3ZhciBlPXRbMF0v
MzYwLGk9dFsxXSxzPXRbMl0sbz10WzNdLGE9LjU+PXM/cyooMStpKTpzK2ktcyppLHI9MipzLWE7
cmV0dXJuW01hdGgucm91bmQoMjU1Km4ocixhLGUrMS8zKSksTWF0aC5yb3VuZCgyNTUqbihyLGEs
ZSkpLE1hdGgucm91bmQoMjU1Km4ocixhLGUtMS8zKSksb119LGYoYyxmdW5jdGlvbihzLG4pe3Zh
ciBvPW4ucHJvcHMsYT1uLmNhY2hlLGg9bi50byxjPW4uZnJvbTtsLmZuW3NdPWZ1bmN0aW9uKHMp
e2lmKGgmJiF0aGlzW2FdJiYodGhpc1thXT1oKHRoaXMuX3JnYmEpKSxzPT09ZSlyZXR1cm4gdGhp
c1thXS5zbGljZSgpO3ZhciBuLHI9dC50eXBlKHMpLHU9ImFycmF5Ij09PXJ8fCJvYmplY3QiPT09
cj9zOmFyZ3VtZW50cyxkPXRoaXNbYV0uc2xpY2UoKTtyZXR1cm4gZihvLGZ1bmN0aW9uKHQsZSl7
dmFyIHM9dVsib2JqZWN0Ij09PXI/dDplLmlkeF07bnVsbD09cyYmKHM9ZFtlLmlkeF0pLGRbZS5p
ZHhdPWkocyxlKX0pLGM/KG49bChjKGQpKSxuW2FdPWQsbik6bChkKX0sZihvLGZ1bmN0aW9uKGUs
aSl7bC5mbltlXXx8KGwuZm5bZV09ZnVuY3Rpb24obil7dmFyIG8sYT10LnR5cGUobiksaD0iYWxw
aGEiPT09ZT90aGlzLl9oc2xhPyJoc2xhIjoicmdiYSI6cyxsPXRoaXNbaF0oKSxjPWxbaS5pZHhd
O3JldHVybiJ1bmRlZmluZWQiPT09YT9jOigiZnVuY3Rpb24iPT09YSYmKG49bi5jYWxsKHRoaXMs
YyksYT10LnR5cGUobikpLG51bGw9PW4mJmkuZW1wdHk/dGhpczooInN0cmluZyI9PT1hJiYobz1y
LmV4ZWMobiksbyYmKG49YytwYXJzZUZsb2F0KG9bMl0pKigiKyI9PT1vWzFdPzE6LTEpKSksbFtp
LmlkeF09bix0aGlzW2hdKGwpKSl9KX0pfSksbC5ob29rPWZ1bmN0aW9uKGUpe3ZhciBpPWUuc3Bs
aXQoIiAiKTtmKGksZnVuY3Rpb24oZSxpKXt0LmNzc0hvb2tzW2ldPXtzZXQ6ZnVuY3Rpb24oZSxu
KXt2YXIgbyxhLHI9IiI7aWYoInRyYW5zcGFyZW50IiE9PW4mJigic3RyaW5nIiE9PXQudHlwZShu
KXx8KG89cyhuKSkpKXtpZihuPWwob3x8biksIWQucmdiYSYmMSE9PW4uX3JnYmFbM10pe2Zvcihh
PSJiYWNrZ3JvdW5kQ29sb3IiPT09aT9lLnBhcmVudE5vZGU6ZTsoIiI9PT1yfHwidHJhbnNwYXJl
bnQiPT09cikmJmEmJmEuc3R5bGU7KXRyeXtyPXQuY3NzKGEsImJhY2tncm91bmRDb2xvciIpLGE9
YS5wYXJlbnROb2RlfWNhdGNoKGgpe31uPW4uYmxlbmQociYmInRyYW5zcGFyZW50IiE9PXI/cjoi
X2RlZmF1bHQiKX1uPW4udG9SZ2JhU3RyaW5nKCl9dHJ5e2Uuc3R5bGVbaV09bn1jYXRjaChoKXt9
fX0sdC5meC5zdGVwW2ldPWZ1bmN0aW9uKGUpe2UuY29sb3JJbml0fHwoZS5zdGFydD1sKGUuZWxl
bSxpKSxlLmVuZD1sKGUuZW5kKSxlLmNvbG9ySW5pdD0hMCksdC5jc3NIb29rc1tpXS5zZXQoZS5l
bGVtLGUuc3RhcnQudHJhbnNpdGlvbihlLmVuZCxlLnBvcykpfX0pfSxsLmhvb2soYSksdC5jc3NI
b29rcy5ib3JkZXJDb2xvcj17ZXhwYW5kOmZ1bmN0aW9uKHQpe3ZhciBlPXt9O3JldHVybiBmKFsi
VG9wIiwiUmlnaHQiLCJCb3R0b20iLCJMZWZ0Il0sZnVuY3Rpb24oaSxzKXtlWyJib3JkZXIiK3Mr
IkNvbG9yIl09dH0pLGV9fSxvPXQuQ29sb3IubmFtZXM9e2FxdWE6IiMwMGZmZmYiLGJsYWNrOiIj
MDAwMDAwIixibHVlOiIjMDAwMGZmIixmdWNoc2lhOiIjZmYwMGZmIixncmF5OiIjODA4MDgwIixn
cmVlbjoiIzAwODAwMCIsbGltZToiIzAwZmYwMCIsbWFyb29uOiIjODAwMDAwIixuYXZ5OiIjMDAw
MDgwIixvbGl2ZToiIzgwODAwMCIscHVycGxlOiIjODAwMDgwIixyZWQ6IiNmZjAwMDAiLHNpbHZl
cjoiI2MwYzBjMCIsdGVhbDoiIzAwODA4MCIsd2hpdGU6IiNmZmZmZmYiLHllbGxvdzoiI2ZmZmYw
MCIsdHJhbnNwYXJlbnQ6W251bGwsbnVsbCxudWxsLDBdLF9kZWZhdWx0OiIjZmZmZmZmIn19KHAp
LGZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlKXt2YXIgaSxzLG49ZS5vd25lckRvY3VtZW50LmRlZmF1
bHRWaWV3P2Uub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGUsbnVs
bCk6ZS5jdXJyZW50U3R5bGUsbz17fTtpZihuJiZuLmxlbmd0aCYmblswXSYmbltuWzBdXSlmb3Io
cz1uLmxlbmd0aDtzLS07KWk9bltzXSwic3RyaW5nIj09dHlwZW9mIG5baV0mJihvW3QuY2FtZWxD
YXNlKGkpXT1uW2ldKTtlbHNlIGZvcihpIGluIG4pInN0cmluZyI9PXR5cGVvZiBuW2ldJiYob1tp
XT1uW2ldKTtyZXR1cm4gb31mdW5jdGlvbiBpKGUsaSl7dmFyIHMsbyxhPXt9O2ZvcihzIGluIGkp
bz1pW3NdLGVbc10hPT1vJiYobltzXXx8KHQuZnguc3RlcFtzXXx8IWlzTmFOKHBhcnNlRmxvYXQo
bykpKSYmKGFbc109bykpO3JldHVybiBhfXZhciBzPVsiYWRkIiwicmVtb3ZlIiwidG9nZ2xlIl0s
bj17Ym9yZGVyOjEsYm9yZGVyQm90dG9tOjEsYm9yZGVyQ29sb3I6MSxib3JkZXJMZWZ0OjEsYm9y
ZGVyUmlnaHQ6MSxib3JkZXJUb3A6MSxib3JkZXJXaWR0aDoxLG1hcmdpbjoxLHBhZGRpbmc6MX07
dC5lYWNoKFsiYm9yZGVyTGVmdFN0eWxlIiwiYm9yZGVyUmlnaHRTdHlsZSIsImJvcmRlckJvdHRv
bVN0eWxlIiwiYm9yZGVyVG9wU3R5bGUiXSxmdW5jdGlvbihlLGkpe3QuZnguc3RlcFtpXT1mdW5j
dGlvbih0KXsoIm5vbmUiIT09dC5lbmQmJiF0LnNldEF0dHJ8fDE9PT10LnBvcyYmIXQuc2V0QXR0
cikmJihwLnN0eWxlKHQuZWxlbSxpLHQuZW5kKSx0LnNldEF0dHI9ITApfX0pLHQuZm4uYWRkQmFj
a3x8KHQuZm4uYWRkQmFjaz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5hZGQobnVsbD09dD90aGlz
LnByZXZPYmplY3Q6dGhpcy5wcmV2T2JqZWN0LmZpbHRlcih0KSl9KSx0LmVmZmVjdHMuYW5pbWF0
ZUNsYXNzPWZ1bmN0aW9uKG4sbyxhLHIpe3ZhciBoPXQuc3BlZWQobyxhLHIpO3JldHVybiB0aGlz
LnF1ZXVlKGZ1bmN0aW9uKCl7dmFyIG8sYT10KHRoaXMpLHI9YS5hdHRyKCJjbGFzcyIpfHwiIixs
PWguY2hpbGRyZW4/YS5maW5kKCIqIikuYWRkQmFjaygpOmE7bD1sLm1hcChmdW5jdGlvbigpe3Zh
ciBpPXQodGhpcyk7cmV0dXJue2VsOmksc3RhcnQ6ZSh0aGlzKX19KSxvPWZ1bmN0aW9uKCl7dC5l
YWNoKHMsZnVuY3Rpb24odCxlKXtuW2VdJiZhW2UrIkNsYXNzIl0obltlXSl9KX0sbygpLGw9bC5t
YXAoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lbmQ9ZSh0aGlzLmVsWzBdKSx0aGlzLmRpZmY9aSh0
aGlzLnN0YXJ0LHRoaXMuZW5kKSx0aGlzfSksYS5hdHRyKCJjbGFzcyIsciksbD1sLm1hcChmdW5j
dGlvbigpe3ZhciBlPXRoaXMsaT10LkRlZmVycmVkKCkscz10LmV4dGVuZCh7fSxoLHtxdWV1ZToh
MSxjb21wbGV0ZTpmdW5jdGlvbigpe2kucmVzb2x2ZShlKX19KTtyZXR1cm4gdGhpcy5lbC5hbmlt
YXRlKHRoaXMuZGlmZixzKSxpLnByb21pc2UoKX0pLHQud2hlbi5hcHBseSh0LGwuZ2V0KCkpLmRv
bmUoZnVuY3Rpb24oKXtvKCksdC5lYWNoKGFyZ3VtZW50cyxmdW5jdGlvbigpe3ZhciBlPXRoaXMu
ZWw7dC5lYWNoKHRoaXMuZGlmZixmdW5jdGlvbih0KXtlLmNzcyh0LCIiKX0pfSksaC5jb21wbGV0
ZS5jYWxsKGFbMF0pfSl9KX0sdC5mbi5leHRlbmQoe2FkZENsYXNzOmZ1bmN0aW9uKGUpe3JldHVy
biBmdW5jdGlvbihpLHMsbixvKXtyZXR1cm4gcz90LmVmZmVjdHMuYW5pbWF0ZUNsYXNzLmNhbGwo
dGhpcyx7YWRkOml9LHMsbixvKTplLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KHQuZm4uYWRkQ2xh
c3MpLHJlbW92ZUNsYXNzOmZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbihpLHMsbixvKXtyZXR1
cm4gYXJndW1lbnRzLmxlbmd0aD4xP3QuZWZmZWN0cy5hbmltYXRlQ2xhc3MuY2FsbCh0aGlzLHty
ZW1vdmU6aX0scyxuLG8pOmUuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0odC5mbi5yZW1vdmVDbGFz
cyksdG9nZ2xlQ2xhc3M6ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKGkscyxuLG8sYSl7cmV0
dXJuImJvb2xlYW4iPT10eXBlb2Ygc3x8dm9pZCAwPT09cz9uP3QuZWZmZWN0cy5hbmltYXRlQ2xh
c3MuY2FsbCh0aGlzLHM/e2FkZDppfTp7cmVtb3ZlOml9LG4sbyxhKTplLmFwcGx5KHRoaXMsYXJn
dW1lbnRzKTp0LmVmZmVjdHMuYW5pbWF0ZUNsYXNzLmNhbGwodGhpcyx7dG9nZ2xlOml9LHMsbixv
KX19KHQuZm4udG9nZ2xlQ2xhc3MpLHN3aXRjaENsYXNzOmZ1bmN0aW9uKGUsaSxzLG4sbyl7cmV0
dXJuIHQuZWZmZWN0cy5hbmltYXRlQ2xhc3MuY2FsbCh0aGlzLHthZGQ6aSxyZW1vdmU6ZX0scyxu
LG8pfX0pfSgpLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLGkscyxuKXtyZXR1cm4gdC5pc1BsYWlu
T2JqZWN0KGUpJiYoaT1lLGU9ZS5lZmZlY3QpLGU9e2VmZmVjdDplfSxudWxsPT1pJiYoaT17fSks
dC5pc0Z1bmN0aW9uKGkpJiYobj1pLHM9bnVsbCxpPXt9KSwoIm51bWJlciI9PXR5cGVvZiBpfHx0
LmZ4LnNwZWVkc1tpXSkmJihuPXMscz1pLGk9e30pLHQuaXNGdW5jdGlvbihzKSYmKG49cyxzPW51
bGwpLGkmJnQuZXh0ZW5kKGUsaSkscz1zfHxpLmR1cmF0aW9uLGUuZHVyYXRpb249dC5meC5vZmY/
MDoibnVtYmVyIj09dHlwZW9mIHM/czpzIGluIHQuZnguc3BlZWRzP3QuZnguc3BlZWRzW3NdOnQu
Znguc3BlZWRzLl9kZWZhdWx0LGUuY29tcGxldGU9bnx8aS5jb21wbGV0ZSxlfWZ1bmN0aW9uIGko
ZSl7cmV0dXJuIWV8fCJudW1iZXIiPT10eXBlb2YgZXx8dC5meC5zcGVlZHNbZV0/ITA6InN0cmlu
ZyIhPXR5cGVvZiBlfHx0LmVmZmVjdHMuZWZmZWN0W2VdP3QuaXNGdW5jdGlvbihlKT8hMDoib2Jq
ZWN0IiE9dHlwZW9mIGV8fGUuZWZmZWN0PyExOiEwOiEwfWZ1bmN0aW9uIHModCxlKXt2YXIgaT1l
Lm91dGVyV2lkdGgoKSxzPWUub3V0ZXJIZWlnaHQoKSxuPS9ecmVjdFwoKC0/XGQqXC4/XGQqcHh8
LT9cZCslfGF1dG8pLD9ccyooLT9cZCpcLj9cZCpweHwtP1xkKyV8YXV0byksP1xzKigtP1xkKlwu
P1xkKnB4fC0/XGQrJXxhdXRvKSw/XHMqKC0/XGQqXC4/XGQqcHh8LT9cZCslfGF1dG8pXCkkLyxv
PW4uZXhlYyh0KXx8WyIiLDAsaSxzLDBdO3JldHVybnt0b3A6cGFyc2VGbG9hdChvWzFdKXx8MCxy
aWdodDoiYXV0byI9PT1vWzJdP2k6cGFyc2VGbG9hdChvWzJdKSxib3R0b206ImF1dG8iPT09b1sz
XT9zOnBhcnNlRmxvYXQob1szXSksbGVmdDpwYXJzZUZsb2F0KG9bNF0pfHwwfX10LmV4cHImJnQu
ZXhwci5maWx0ZXJzJiZ0LmV4cHIuZmlsdGVycy5hbmltYXRlZCYmKHQuZXhwci5maWx0ZXJzLmFu
aW1hdGVkPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbihpKXtyZXR1cm4hIXQoaSkuZGF0YShk
KXx8ZShpKX19KHQuZXhwci5maWx0ZXJzLmFuaW1hdGVkKSksdC51aUJhY2tDb21wYXQhPT0hMSYm
dC5leHRlbmQodC5lZmZlY3RzLHtzYXZlOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBpPTAscz1lLmxl
bmd0aDtzPmk7aSsrKW51bGwhPT1lW2ldJiZ0LmRhdGEoYytlW2ldLHRbMF0uc3R5bGVbZVtpXV0p
fSxyZXN0b3JlOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBpLHM9MCxuPWUubGVuZ3RoO24+cztzKysp
bnVsbCE9PWVbc10mJihpPXQuZGF0YShjK2Vbc10pLHQuY3NzKGVbc10saSkpfSxzZXRNb2RlOmZ1
bmN0aW9uKHQsZSl7cmV0dXJuInRvZ2dsZSI9PT1lJiYoZT10LmlzKCI6aGlkZGVuIik/InNob3ci
OiJoaWRlIiksZX0sY3JlYXRlV3JhcHBlcjpmdW5jdGlvbihlKXtpZihlLnBhcmVudCgpLmlzKCIu
dWktZWZmZWN0cy13cmFwcGVyIikpcmV0dXJuIGUucGFyZW50KCk7dmFyIGk9e3dpZHRoOmUub3V0
ZXJXaWR0aCghMCksaGVpZ2h0OmUub3V0ZXJIZWlnaHQoITApLCJmbG9hdCI6ZS5jc3MoImZsb2F0
Iil9LHM9dCgiPGRpdj48L2Rpdj4iKS5hZGRDbGFzcygidWktZWZmZWN0cy13cmFwcGVyIikuY3Nz
KHtmb250U2l6ZToiMTAwJSIsYmFja2dyb3VuZDoidHJhbnNwYXJlbnQiLGJvcmRlcjoibm9uZSIs
bWFyZ2luOjAscGFkZGluZzowfSksbj17d2lkdGg6ZS53aWR0aCgpLGhlaWdodDplLmhlaWdodCgp
fSxvPWRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7dHJ5e28uaWR9Y2F0Y2goYSl7bz1kb2N1bWVudC5i
b2R5fXJldHVybiBlLndyYXAocyksKGVbMF09PT1vfHx0LmNvbnRhaW5zKGVbMF0sbykpJiZ0KG8p
LnRyaWdnZXIoImZvY3VzIikscz1lLnBhcmVudCgpLCJzdGF0aWMiPT09ZS5jc3MoInBvc2l0aW9u
Iik/KHMuY3NzKHtwb3NpdGlvbjoicmVsYXRpdmUifSksZS5jc3Moe3Bvc2l0aW9uOiJyZWxhdGl2
ZSJ9KSk6KHQuZXh0ZW5kKGkse3Bvc2l0aW9uOmUuY3NzKCJwb3NpdGlvbiIpLHpJbmRleDplLmNz
cygiei1pbmRleCIpfSksdC5lYWNoKFsidG9wIiwibGVmdCIsImJvdHRvbSIsInJpZ2h0Il0sZnVu
Y3Rpb24odCxzKXtpW3NdPWUuY3NzKHMpLGlzTmFOKHBhcnNlSW50KGlbc10sMTApKSYmKGlbc109
ImF1dG8iKX0pLGUuY3NzKHtwb3NpdGlvbjoicmVsYXRpdmUiLHRvcDowLGxlZnQ6MCxyaWdodDoi
YXV0byIsYm90dG9tOiJhdXRvIn0pKSxlLmNzcyhuKSxzLmNzcyhpKS5zaG93KCl9LHJlbW92ZVdy
YXBwZXI6ZnVuY3Rpb24oZSl7dmFyIGk9ZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtyZXR1cm4gZS5w
YXJlbnQoKS5pcygiLnVpLWVmZmVjdHMtd3JhcHBlciIpJiYoZS5wYXJlbnQoKS5yZXBsYWNlV2l0
aChlKSwoZVswXT09PWl8fHQuY29udGFpbnMoZVswXSxpKSkmJnQoaSkudHJpZ2dlcigiZm9jdXMi
KSksZX19KSx0LmV4dGVuZCh0LmVmZmVjdHMse3ZlcnNpb246IjEuMTIuMSIsZGVmaW5lOmZ1bmN0
aW9uKGUsaSxzKXtyZXR1cm4gc3x8KHM9aSxpPSJlZmZlY3QiKSx0LmVmZmVjdHMuZWZmZWN0W2Vd
PXMsdC5lZmZlY3RzLmVmZmVjdFtlXS5tb2RlPWksc30sc2NhbGVkRGltZW5zaW9uczpmdW5jdGlv
bih0LGUsaSl7aWYoMD09PWUpcmV0dXJue2hlaWdodDowLHdpZHRoOjAsb3V0ZXJIZWlnaHQ6MCxv
dXRlcldpZHRoOjB9O3ZhciBzPSJob3Jpem9udGFsIiE9PWk/KGV8fDEwMCkvMTAwOjEsbj0idmVy
dGljYWwiIT09aT8oZXx8MTAwKS8xMDA6MTtyZXR1cm57aGVpZ2h0OnQuaGVpZ2h0KCkqbix3aWR0
aDp0LndpZHRoKCkqcyxvdXRlckhlaWdodDp0Lm91dGVySGVpZ2h0KCkqbixvdXRlcldpZHRoOnQu
b3V0ZXJXaWR0aCgpKnN9fSxjbGlwVG9Cb3g6ZnVuY3Rpb24odCl7cmV0dXJue3dpZHRoOnQuY2xp
cC5yaWdodC10LmNsaXAubGVmdCxoZWlnaHQ6dC5jbGlwLmJvdHRvbS10LmNsaXAudG9wLGxlZnQ6
dC5jbGlwLmxlZnQsdG9wOnQuY2xpcC50b3B9fSx1bnNoaWZ0OmZ1bmN0aW9uKHQsZSxpKXt2YXIg
cz10LnF1ZXVlKCk7ZT4xJiZzLnNwbGljZS5hcHBseShzLFsxLDBdLmNvbmNhdChzLnNwbGljZShl
LGkpKSksdC5kZXF1ZXVlKCl9LHNhdmVTdHlsZTpmdW5jdGlvbih0KXt0LmRhdGEodSx0WzBdLnN0
eWxlLmNzc1RleHQpfSxyZXN0b3JlU3R5bGU6ZnVuY3Rpb24odCl7dFswXS5zdHlsZS5jc3NUZXh0
PXQuZGF0YSh1KXx8IiIsdC5yZW1vdmVEYXRhKHUpfSxtb2RlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9
dC5pcygiOmhpZGRlbiIpO3JldHVybiJ0b2dnbGUiPT09ZSYmKGU9aT8ic2hvdyI6ImhpZGUiKSwo
aT8iaGlkZSI9PT1lOiJzaG93Ij09PWUpJiYoZT0ibm9uZSIpLGV9LGdldEJhc2VsaW5lOmZ1bmN0
aW9uKHQsZSl7dmFyIGkscztzd2l0Y2godFswXSl7Y2FzZSJ0b3AiOmk9MDticmVhaztjYXNlIm1p
ZGRsZSI6aT0uNTticmVhaztjYXNlImJvdHRvbSI6aT0xO2JyZWFrO2RlZmF1bHQ6aT10WzBdL2Uu
aGVpZ2h0fXN3aXRjaCh0WzFdKXtjYXNlImxlZnQiOnM9MDticmVhaztjYXNlImNlbnRlciI6cz0u
NTticmVhaztjYXNlInJpZ2h0IjpzPTE7YnJlYWs7ZGVmYXVsdDpzPXRbMV0vZS53aWR0aH1yZXR1
cm57eDpzLHk6aX19LGNyZWF0ZVBsYWNlaG9sZGVyOmZ1bmN0aW9uKGUpe3ZhciBpLHM9ZS5jc3Mo
InBvc2l0aW9uIiksbj1lLnBvc2l0aW9uKCk7cmV0dXJuIGUuY3NzKHttYXJnaW5Ub3A6ZS5jc3Mo
Im1hcmdpblRvcCIpLG1hcmdpbkJvdHRvbTplLmNzcygibWFyZ2luQm90dG9tIiksbWFyZ2luTGVm
dDplLmNzcygibWFyZ2luTGVmdCIpLG1hcmdpblJpZ2h0OmUuY3NzKCJtYXJnaW5SaWdodCIpfSku
b3V0ZXJXaWR0aChlLm91dGVyV2lkdGgoKSkub3V0ZXJIZWlnaHQoZS5vdXRlckhlaWdodCgpKSwv
XihzdGF0aWN8cmVsYXRpdmUpLy50ZXN0KHMpJiYocz0iYWJzb2x1dGUiLGk9dCgiPCIrZVswXS5u
b2RlTmFtZSsiPiIpLmluc2VydEFmdGVyKGUpLmNzcyh7ZGlzcGxheTovXihpbmxpbmV8cnVieSkv
LnRlc3QoZS5jc3MoImRpc3BsYXkiKSk/ImlubGluZS1ibG9jayI6ImJsb2NrIix2aXNpYmlsaXR5
OiJoaWRkZW4iLG1hcmdpblRvcDplLmNzcygibWFyZ2luVG9wIiksbWFyZ2luQm90dG9tOmUuY3Nz
KCJtYXJnaW5Cb3R0b20iKSxtYXJnaW5MZWZ0OmUuY3NzKCJtYXJnaW5MZWZ0IiksbWFyZ2luUmln
aHQ6ZS5jc3MoIm1hcmdpblJpZ2h0IiksImZsb2F0IjplLmNzcygiZmxvYXQiKX0pLm91dGVyV2lk
dGgoZS5vdXRlcldpZHRoKCkpLm91dGVySGVpZ2h0KGUub3V0ZXJIZWlnaHQoKSkuYWRkQ2xhc3Mo
InVpLWVmZmVjdHMtcGxhY2Vob2xkZXIiKSxlLmRhdGEoYysicGxhY2Vob2xkZXIiLGkpKSxlLmNz
cyh7cG9zaXRpb246cyxsZWZ0Om4ubGVmdCx0b3A6bi50b3B9KSxpfSxyZW1vdmVQbGFjZWhvbGRl
cjpmdW5jdGlvbih0KXt2YXIgZT1jKyJwbGFjZWhvbGRlciIsaT10LmRhdGEoZSk7aSYmKGkucmVt
b3ZlKCksdC5yZW1vdmVEYXRhKGUpKX0sY2xlYW5VcDpmdW5jdGlvbihlKXt0LmVmZmVjdHMucmVz
dG9yZVN0eWxlKGUpLHQuZWZmZWN0cy5yZW1vdmVQbGFjZWhvbGRlcihlKX0sc2V0VHJhbnNpdGlv
bjpmdW5jdGlvbihlLGkscyxuKXtyZXR1cm4gbj1ufHx7fSx0LmVhY2goaSxmdW5jdGlvbih0LGkp
e3ZhciBvPWUuY3NzVW5pdChpKTtvWzBdPjAmJihuW2ldPW9bMF0qcytvWzFdKX0pLG59fSksdC5m
bi5leHRlbmQoe2VmZmVjdDpmdW5jdGlvbigpe2Z1bmN0aW9uIGkoZSl7ZnVuY3Rpb24gaSgpe3Iu
cmVtb3ZlRGF0YShkKSx0LmVmZmVjdHMuY2xlYW5VcChyKSwiaGlkZSI9PT1zLm1vZGUmJnIuaGlk
ZSgpLGEoKX1mdW5jdGlvbiBhKCl7dC5pc0Z1bmN0aW9uKGgpJiZoLmNhbGwoclswXSksdC5pc0Z1
bmN0aW9uKGUpJiZlKCl9dmFyIHI9dCh0aGlzKTtzLm1vZGU9Yy5zaGlmdCgpLHQudWlCYWNrQ29t
cGF0PT09ITF8fG8/Im5vbmUiPT09cy5tb2RlPyhyW2xdKCksYSgpKTpuLmNhbGwoclswXSxzLGkp
OihyLmlzKCI6aGlkZGVuIik/ImhpZGUiPT09bDoic2hvdyI9PT1sKT8ocltsXSgpLGEoKSk6bi5j
YWxsKHJbMF0scyxhKX12YXIgcz1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxuPXQuZWZmZWN0cy5l
ZmZlY3Rbcy5lZmZlY3RdLG89bi5tb2RlLGE9cy5xdWV1ZSxyPWF8fCJmeCIsaD1zLmNvbXBsZXRl
LGw9cy5tb2RlLGM9W10sdT1mdW5jdGlvbihlKXt2YXIgaT10KHRoaXMpLHM9dC5lZmZlY3RzLm1v
ZGUoaSxsKXx8bztpLmRhdGEoZCwhMCksYy5wdXNoKHMpLG8mJigic2hvdyI9PT1zfHxzPT09byYm
ImhpZGUiPT09cykmJmkuc2hvdygpLG8mJiJub25lIj09PXN8fHQuZWZmZWN0cy5zYXZlU3R5bGUo
aSksdC5pc0Z1bmN0aW9uKGUpJiZlKCl9O3JldHVybiB0LmZ4Lm9mZnx8IW4/bD90aGlzW2xdKHMu
ZHVyYXRpb24saCk6dGhpcy5lYWNoKGZ1bmN0aW9uKCl7aCYmaC5jYWxsKHRoaXMpfSk6YT09PSEx
P3RoaXMuZWFjaCh1KS5lYWNoKGkpOnRoaXMucXVldWUocix1KS5xdWV1ZShyLGkpfSxzaG93OmZ1
bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihzKXtpZihpKHMpKXJldHVybiB0LmFwcGx5KHRoaXMs
YXJndW1lbnRzKTt2YXIgbj1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gbi5tb2RlPSJz
aG93Iix0aGlzLmVmZmVjdC5jYWxsKHRoaXMsbikKK319KHQuZm4uc2hvdyksaGlkZTpmdW5jdGlv
bih0KXtyZXR1cm4gZnVuY3Rpb24ocyl7aWYoaShzKSlyZXR1cm4gdC5hcHBseSh0aGlzLGFyZ3Vt
ZW50cyk7dmFyIG49ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIG4ubW9kZT0iaGlkZSIs
dGhpcy5lZmZlY3QuY2FsbCh0aGlzLG4pfX0odC5mbi5oaWRlKSx0b2dnbGU6ZnVuY3Rpb24odCl7
cmV0dXJuIGZ1bmN0aW9uKHMpe2lmKGkocyl8fCJib29sZWFuIj09dHlwZW9mIHMpcmV0dXJuIHQu
YXBwbHkodGhpcyxhcmd1bWVudHMpO3ZhciBuPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVy
biBuLm1vZGU9InRvZ2dsZSIsdGhpcy5lZmZlY3QuY2FsbCh0aGlzLG4pfX0odC5mbi50b2dnbGUp
LGNzc1VuaXQ6ZnVuY3Rpb24oZSl7dmFyIGk9dGhpcy5jc3MoZSkscz1bXTtyZXR1cm4gdC5lYWNo
KFsiZW0iLCJweCIsIiUiLCJwdCJdLGZ1bmN0aW9uKHQsZSl7aS5pbmRleE9mKGUpPjAmJihzPVtw
YXJzZUZsb2F0KGkpLGVdKX0pLHN9LGNzc0NsaXA6ZnVuY3Rpb24odCl7cmV0dXJuIHQ/dGhpcy5j
c3MoImNsaXAiLCJyZWN0KCIrdC50b3ArInB4ICIrdC5yaWdodCsicHggIit0LmJvdHRvbSsicHgg
Iit0LmxlZnQrInB4KSIpOnModGhpcy5jc3MoImNsaXAiKSx0aGlzKX0sdHJhbnNmZXI6ZnVuY3Rp
b24oZSxpKXt2YXIgcz10KHRoaXMpLG49dChlLnRvKSxvPSJmaXhlZCI9PT1uLmNzcygicG9zaXRp
b24iKSxhPXQoImJvZHkiKSxyPW8/YS5zY3JvbGxUb3AoKTowLGg9bz9hLnNjcm9sbExlZnQoKTow
LGw9bi5vZmZzZXQoKSxjPXt0b3A6bC50b3AtcixsZWZ0OmwubGVmdC1oLGhlaWdodDpuLmlubmVy
SGVpZ2h0KCksd2lkdGg6bi5pbm5lcldpZHRoKCl9LHU9cy5vZmZzZXQoKSxkPXQoIjxkaXYgY2xh
c3M9J3VpLWVmZmVjdHMtdHJhbnNmZXInPjwvZGl2PiIpLmFwcGVuZFRvKCJib2R5IikuYWRkQ2xh
c3MoZS5jbGFzc05hbWUpLmNzcyh7dG9wOnUudG9wLXIsbGVmdDp1LmxlZnQtaCxoZWlnaHQ6cy5p
bm5lckhlaWdodCgpLHdpZHRoOnMuaW5uZXJXaWR0aCgpLHBvc2l0aW9uOm8/ImZpeGVkIjoiYWJz
b2x1dGUifSkuYW5pbWF0ZShjLGUuZHVyYXRpb24sZS5lYXNpbmcsZnVuY3Rpb24oKXtkLnJlbW92
ZSgpLHQuaXNGdW5jdGlvbihpKSYmaSgpfSl9fSksdC5meC5zdGVwLmNsaXA9ZnVuY3Rpb24oZSl7
ZS5jbGlwSW5pdHx8KGUuc3RhcnQ9dChlLmVsZW0pLmNzc0NsaXAoKSwic3RyaW5nIj09dHlwZW9m
IGUuZW5kJiYoZS5lbmQ9cyhlLmVuZCxlLmVsZW0pKSxlLmNsaXBJbml0PSEwKSx0KGUuZWxlbSku
Y3NzQ2xpcCh7dG9wOmUucG9zKihlLmVuZC50b3AtZS5zdGFydC50b3ApK2Uuc3RhcnQudG9wLHJp
Z2h0OmUucG9zKihlLmVuZC5yaWdodC1lLnN0YXJ0LnJpZ2h0KStlLnN0YXJ0LnJpZ2h0LGJvdHRv
bTplLnBvcyooZS5lbmQuYm90dG9tLWUuc3RhcnQuYm90dG9tKStlLnN0YXJ0LmJvdHRvbSxsZWZ0
OmUucG9zKihlLmVuZC5sZWZ0LWUuc3RhcnQubGVmdCkrZS5zdGFydC5sZWZ0fSl9fSgpLGZ1bmN0
aW9uKCl7dmFyIGU9e307dC5lYWNoKFsiUXVhZCIsIkN1YmljIiwiUXVhcnQiLCJRdWludCIsIkV4
cG8iXSxmdW5jdGlvbih0LGkpe2VbaV09ZnVuY3Rpb24oZSl7cmV0dXJuIE1hdGgucG93KGUsdCsy
KX19KSx0LmV4dGVuZChlLHtTaW5lOmZ1bmN0aW9uKHQpe3JldHVybiAxLU1hdGguY29zKHQqTWF0
aC5QSS8yKX0sQ2lyYzpmdW5jdGlvbih0KXtyZXR1cm4gMS1NYXRoLnNxcnQoMS10KnQpfSxFbGFz
dGljOmZ1bmN0aW9uKHQpe3JldHVybiAwPT09dHx8MT09PXQ/dDotTWF0aC5wb3coMiw4Kih0LTEp
KSpNYXRoLnNpbigoODAqKHQtMSktNy41KSpNYXRoLlBJLzE1KX0sQmFjazpmdW5jdGlvbih0KXty
ZXR1cm4gdCp0KigzKnQtMil9LEJvdW5jZTpmdW5jdGlvbih0KXtmb3IodmFyIGUsaT00OygoZT1N
YXRoLnBvdygyLC0taSkpLTEpLzExPnQ7KTtyZXR1cm4gMS9NYXRoLnBvdyg0LDMtaSktNy41NjI1
Kk1hdGgucG93KCgzKmUtMikvMjItdCwyKX19KSx0LmVhY2goZSxmdW5jdGlvbihlLGkpe3QuZWFz
aW5nWyJlYXNlSW4iK2VdPWksdC5lYXNpbmdbImVhc2VPdXQiK2VdPWZ1bmN0aW9uKHQpe3JldHVy
biAxLWkoMS10KX0sdC5lYXNpbmdbImVhc2VJbk91dCIrZV09ZnVuY3Rpb24odCl7cmV0dXJuLjU+
dD9pKDIqdCkvMjoxLWkoLTIqdCsyKS8yfX0pfSgpO3ZhciBmPXQuZWZmZWN0czt0LmVmZmVjdHMu
ZGVmaW5lKCJibGluZCIsImhpZGUiLGZ1bmN0aW9uKGUsaSl7dmFyIHM9e3VwOlsiYm90dG9tIiwi
dG9wIl0sdmVydGljYWw6WyJib3R0b20iLCJ0b3AiXSxkb3duOlsidG9wIiwiYm90dG9tIl0sbGVm
dDpbInJpZ2h0IiwibGVmdCJdLGhvcml6b250YWw6WyJyaWdodCIsImxlZnQiXSxyaWdodDpbImxl
ZnQiLCJyaWdodCJdfSxuPXQodGhpcyksbz1lLmRpcmVjdGlvbnx8InVwIixhPW4uY3NzQ2xpcCgp
LHI9e2NsaXA6dC5leHRlbmQoe30sYSl9LGg9dC5lZmZlY3RzLmNyZWF0ZVBsYWNlaG9sZGVyKG4p
O3IuY2xpcFtzW29dWzBdXT1yLmNsaXBbc1tvXVsxXV0sInNob3ciPT09ZS5tb2RlJiYobi5jc3ND
bGlwKHIuY2xpcCksaCYmaC5jc3ModC5lZmZlY3RzLmNsaXBUb0JveChyKSksci5jbGlwPWEpLGgm
JmguYW5pbWF0ZSh0LmVmZmVjdHMuY2xpcFRvQm94KHIpLGUuZHVyYXRpb24sZS5lYXNpbmcpLG4u
YW5pbWF0ZShyLHtxdWV1ZTohMSxkdXJhdGlvbjplLmR1cmF0aW9uLGVhc2luZzplLmVhc2luZyxj
b21wbGV0ZTppfSl9KSx0LmVmZmVjdHMuZGVmaW5lKCJib3VuY2UiLGZ1bmN0aW9uKGUsaSl7dmFy
IHMsbixvLGE9dCh0aGlzKSxyPWUubW9kZSxoPSJoaWRlIj09PXIsbD0ic2hvdyI9PT1yLGM9ZS5k
aXJlY3Rpb258fCJ1cCIsdT1lLmRpc3RhbmNlLGQ9ZS50aW1lc3x8NSxwPTIqZCsobHx8aD8xOjAp
LGY9ZS5kdXJhdGlvbi9wLGc9ZS5lYXNpbmcsbT0idXAiPT09Y3x8ImRvd24iPT09Yz8idG9wIjoi
bGVmdCIsXz0idXAiPT09Y3x8ImxlZnQiPT09Yyx2PTAsYj1hLnF1ZXVlKCkubGVuZ3RoO2Zvcih0
LmVmZmVjdHMuY3JlYXRlUGxhY2Vob2xkZXIoYSksbz1hLmNzcyhtKSx1fHwodT1hWyJ0b3AiPT09
bT8ib3V0ZXJIZWlnaHQiOiJvdXRlcldpZHRoIl0oKS8zKSxsJiYobj17b3BhY2l0eToxfSxuW21d
PW8sYS5jc3MoIm9wYWNpdHkiLDApLmNzcyhtLF8/MiotdToyKnUpLmFuaW1hdGUobixmLGcpKSxo
JiYodS89TWF0aC5wb3coMixkLTEpKSxuPXt9LG5bbV09bztkPnY7disrKXM9e30sc1ttXT0oXz8i
LT0iOiIrPSIpK3UsYS5hbmltYXRlKHMsZixnKS5hbmltYXRlKG4sZixnKSx1PWg/Mip1OnUvMjto
JiYocz17b3BhY2l0eTowfSxzW21dPShfPyItPSI6Iis9IikrdSxhLmFuaW1hdGUocyxmLGcpKSxh
LnF1ZXVlKGkpLHQuZWZmZWN0cy51bnNoaWZ0KGEsYixwKzEpfSksdC5lZmZlY3RzLmRlZmluZSgi
Y2xpcCIsImhpZGUiLGZ1bmN0aW9uKGUsaSl7dmFyIHMsbj17fSxvPXQodGhpcyksYT1lLmRpcmVj
dGlvbnx8InZlcnRpY2FsIixyPSJib3RoIj09PWEsaD1yfHwiaG9yaXpvbnRhbCI9PT1hLGw9cnx8
InZlcnRpY2FsIj09PWE7cz1vLmNzc0NsaXAoKSxuLmNsaXA9e3RvcDpsPyhzLmJvdHRvbS1zLnRv
cCkvMjpzLnRvcCxyaWdodDpoPyhzLnJpZ2h0LXMubGVmdCkvMjpzLnJpZ2h0LGJvdHRvbTpsPyhz
LmJvdHRvbS1zLnRvcCkvMjpzLmJvdHRvbSxsZWZ0Omg/KHMucmlnaHQtcy5sZWZ0KS8yOnMubGVm
dH0sdC5lZmZlY3RzLmNyZWF0ZVBsYWNlaG9sZGVyKG8pLCJzaG93Ij09PWUubW9kZSYmKG8uY3Nz
Q2xpcChuLmNsaXApLG4uY2xpcD1zKSxvLmFuaW1hdGUobix7cXVldWU6ITEsZHVyYXRpb246ZS5k
dXJhdGlvbixlYXNpbmc6ZS5lYXNpbmcsY29tcGxldGU6aX0pfSksdC5lZmZlY3RzLmRlZmluZSgi
ZHJvcCIsImhpZGUiLGZ1bmN0aW9uKGUsaSl7dmFyIHMsbj10KHRoaXMpLG89ZS5tb2RlLGE9InNo
b3ciPT09byxyPWUuZGlyZWN0aW9ufHwibGVmdCIsaD0idXAiPT09cnx8ImRvd24iPT09cj8idG9w
IjoibGVmdCIsbD0idXAiPT09cnx8ImxlZnQiPT09cj8iLT0iOiIrPSIsYz0iKz0iPT09bD8iLT0i
OiIrPSIsdT17b3BhY2l0eTowfTt0LmVmZmVjdHMuY3JlYXRlUGxhY2Vob2xkZXIobikscz1lLmRp
c3RhbmNlfHxuWyJ0b3AiPT09aD8ib3V0ZXJIZWlnaHQiOiJvdXRlcldpZHRoIl0oITApLzIsdVto
XT1sK3MsYSYmKG4uY3NzKHUpLHVbaF09YytzLHUub3BhY2l0eT0xKSxuLmFuaW1hdGUodSx7cXVl
dWU6ITEsZHVyYXRpb246ZS5kdXJhdGlvbixlYXNpbmc6ZS5lYXNpbmcsY29tcGxldGU6aX0pfSks
dC5lZmZlY3RzLmRlZmluZSgiZXhwbG9kZSIsImhpZGUiLGZ1bmN0aW9uKGUsaSl7ZnVuY3Rpb24g
cygpe2IucHVzaCh0aGlzKSxiLmxlbmd0aD09PXUqZCYmbigpfWZ1bmN0aW9uIG4oKXtwLmNzcyh7
dmlzaWJpbGl0eToidmlzaWJsZSJ9KSx0KGIpLnJlbW92ZSgpLGkoKX12YXIgbyxhLHIsaCxsLGMs
dT1lLnBpZWNlcz9NYXRoLnJvdW5kKE1hdGguc3FydChlLnBpZWNlcykpOjMsZD11LHA9dCh0aGlz
KSxmPWUubW9kZSxnPSJzaG93Ij09PWYsbT1wLnNob3coKS5jc3MoInZpc2liaWxpdHkiLCJoaWRk
ZW4iKS5vZmZzZXQoKSxfPU1hdGguY2VpbChwLm91dGVyV2lkdGgoKS9kKSx2PU1hdGguY2VpbChw
Lm91dGVySGVpZ2h0KCkvdSksYj1bXTtmb3Iobz0wO3U+bztvKyspZm9yKGg9bS50b3Arbyp2LGM9
by0odS0xKS8yLGE9MDtkPmE7YSsrKXI9bS5sZWZ0K2EqXyxsPWEtKGQtMSkvMixwLmNsb25lKCku
YXBwZW5kVG8oImJvZHkiKS53cmFwKCI8ZGl2PjwvZGl2PiIpLmNzcyh7cG9zaXRpb246ImFic29s
dXRlIix2aXNpYmlsaXR5OiJ2aXNpYmxlIixsZWZ0Oi1hKl8sdG9wOi1vKnZ9KS5wYXJlbnQoKS5h
ZGRDbGFzcygidWktZWZmZWN0cy1leHBsb2RlIikuY3NzKHtwb3NpdGlvbjoiYWJzb2x1dGUiLG92
ZXJmbG93OiJoaWRkZW4iLHdpZHRoOl8saGVpZ2h0OnYsbGVmdDpyKyhnP2wqXzowKSx0b3A6aCso
Zz9jKnY6MCksb3BhY2l0eTpnPzA6MX0pLmFuaW1hdGUoe2xlZnQ6cisoZz8wOmwqXyksdG9wOmgr
KGc/MDpjKnYpLG9wYWNpdHk6Zz8xOjB9LGUuZHVyYXRpb258fDUwMCxlLmVhc2luZyxzKX0pLHQu
ZWZmZWN0cy5kZWZpbmUoImZhZGUiLCJ0b2dnbGUiLGZ1bmN0aW9uKGUsaSl7dmFyIHM9InNob3ci
PT09ZS5tb2RlO3QodGhpcykuY3NzKCJvcGFjaXR5IixzPzA6MSkuYW5pbWF0ZSh7b3BhY2l0eTpz
PzE6MH0se3F1ZXVlOiExLGR1cmF0aW9uOmUuZHVyYXRpb24sZWFzaW5nOmUuZWFzaW5nLGNvbXBs
ZXRlOml9KX0pLHQuZWZmZWN0cy5kZWZpbmUoImZvbGQiLCJoaWRlIixmdW5jdGlvbihlLGkpe3Zh
ciBzPXQodGhpcyksbj1lLm1vZGUsbz0ic2hvdyI9PT1uLGE9ImhpZGUiPT09bixyPWUuc2l6ZXx8
MTUsaD0vKFswLTldKyklLy5leGVjKHIpLGw9ISFlLmhvcml6Rmlyc3QsYz1sP1sicmlnaHQiLCJi
b3R0b20iXTpbImJvdHRvbSIsInJpZ2h0Il0sdT1lLmR1cmF0aW9uLzIsZD10LmVmZmVjdHMuY3Jl
YXRlUGxhY2Vob2xkZXIocykscD1zLmNzc0NsaXAoKSxmPXtjbGlwOnQuZXh0ZW5kKHt9LHApfSxn
PXtjbGlwOnQuZXh0ZW5kKHt9LHApfSxtPVtwW2NbMF1dLHBbY1sxXV1dLF89cy5xdWV1ZSgpLmxl
bmd0aDtoJiYocj1wYXJzZUludChoWzFdLDEwKS8xMDAqbVthPzA6MV0pLGYuY2xpcFtjWzBdXT1y
LGcuY2xpcFtjWzBdXT1yLGcuY2xpcFtjWzFdXT0wLG8mJihzLmNzc0NsaXAoZy5jbGlwKSxkJiZk
LmNzcyh0LmVmZmVjdHMuY2xpcFRvQm94KGcpKSxnLmNsaXA9cCkscy5xdWV1ZShmdW5jdGlvbihp
KXtkJiZkLmFuaW1hdGUodC5lZmZlY3RzLmNsaXBUb0JveChmKSx1LGUuZWFzaW5nKS5hbmltYXRl
KHQuZWZmZWN0cy5jbGlwVG9Cb3goZyksdSxlLmVhc2luZyksaSgpfSkuYW5pbWF0ZShmLHUsZS5l
YXNpbmcpLmFuaW1hdGUoZyx1LGUuZWFzaW5nKS5xdWV1ZShpKSx0LmVmZmVjdHMudW5zaGlmdChz
LF8sNCl9KSx0LmVmZmVjdHMuZGVmaW5lKCJoaWdobGlnaHQiLCJzaG93IixmdW5jdGlvbihlLGkp
e3ZhciBzPXQodGhpcyksbj17YmFja2dyb3VuZENvbG9yOnMuY3NzKCJiYWNrZ3JvdW5kQ29sb3Ii
KX07ImhpZGUiPT09ZS5tb2RlJiYobi5vcGFjaXR5PTApLHQuZWZmZWN0cy5zYXZlU3R5bGUocyks
cy5jc3Moe2JhY2tncm91bmRJbWFnZToibm9uZSIsYmFja2dyb3VuZENvbG9yOmUuY29sb3J8fCIj
ZmZmZjk5In0pLmFuaW1hdGUobix7cXVldWU6ITEsZHVyYXRpb246ZS5kdXJhdGlvbixlYXNpbmc6
ZS5lYXNpbmcsY29tcGxldGU6aX0pfSksdC5lZmZlY3RzLmRlZmluZSgic2l6ZSIsZnVuY3Rpb24o
ZSxpKXt2YXIgcyxuLG8sYT10KHRoaXMpLHI9WyJmb250U2l6ZSJdLGg9WyJib3JkZXJUb3BXaWR0
aCIsImJvcmRlckJvdHRvbVdpZHRoIiwicGFkZGluZ1RvcCIsInBhZGRpbmdCb3R0b20iXSxsPVsi
Ym9yZGVyTGVmdFdpZHRoIiwiYm9yZGVyUmlnaHRXaWR0aCIsInBhZGRpbmdMZWZ0IiwicGFkZGlu
Z1JpZ2h0Il0sYz1lLm1vZGUsdT0iZWZmZWN0IiE9PWMsZD1lLnNjYWxlfHwiYm90aCIscD1lLm9y
aWdpbnx8WyJtaWRkbGUiLCJjZW50ZXIiXSxmPWEuY3NzKCJwb3NpdGlvbiIpLGc9YS5wb3NpdGlv
bigpLG09dC5lZmZlY3RzLnNjYWxlZERpbWVuc2lvbnMoYSksXz1lLmZyb218fG0sdj1lLnRvfHx0
LmVmZmVjdHMuc2NhbGVkRGltZW5zaW9ucyhhLDApO3QuZWZmZWN0cy5jcmVhdGVQbGFjZWhvbGRl
cihhKSwic2hvdyI9PT1jJiYobz1fLF89dix2PW8pLG49e2Zyb206e3k6Xy5oZWlnaHQvbS5oZWln
aHQseDpfLndpZHRoL20ud2lkdGh9LHRvOnt5OnYuaGVpZ2h0L20uaGVpZ2h0LHg6di53aWR0aC9t
LndpZHRofX0sKCJib3giPT09ZHx8ImJvdGgiPT09ZCkmJihuLmZyb20ueSE9PW4udG8ueSYmKF89
dC5lZmZlY3RzLnNldFRyYW5zaXRpb24oYSxoLG4uZnJvbS55LF8pLHY9dC5lZmZlY3RzLnNldFRy
YW5zaXRpb24oYSxoLG4udG8ueSx2KSksbi5mcm9tLnghPT1uLnRvLngmJihfPXQuZWZmZWN0cy5z
ZXRUcmFuc2l0aW9uKGEsbCxuLmZyb20ueCxfKSx2PXQuZWZmZWN0cy5zZXRUcmFuc2l0aW9uKGEs
bCxuLnRvLngsdikpKSwoImNvbnRlbnQiPT09ZHx8ImJvdGgiPT09ZCkmJm4uZnJvbS55IT09bi50
by55JiYoXz10LmVmZmVjdHMuc2V0VHJhbnNpdGlvbihhLHIsbi5mcm9tLnksXyksdj10LmVmZmVj
dHMuc2V0VHJhbnNpdGlvbihhLHIsbi50by55LHYpKSxwJiYocz10LmVmZmVjdHMuZ2V0QmFzZWxp
bmUocCxtKSxfLnRvcD0obS5vdXRlckhlaWdodC1fLm91dGVySGVpZ2h0KSpzLnkrZy50b3AsXy5s
ZWZ0PShtLm91dGVyV2lkdGgtXy5vdXRlcldpZHRoKSpzLngrZy5sZWZ0LHYudG9wPShtLm91dGVy
SGVpZ2h0LXYub3V0ZXJIZWlnaHQpKnMueStnLnRvcCx2LmxlZnQ9KG0ub3V0ZXJXaWR0aC12Lm91
dGVyV2lkdGgpKnMueCtnLmxlZnQpLGEuY3NzKF8pLCgiY29udGVudCI9PT1kfHwiYm90aCI9PT1k
KSYmKGg9aC5jb25jYXQoWyJtYXJnaW5Ub3AiLCJtYXJnaW5Cb3R0b20iXSkuY29uY2F0KHIpLGw9
bC5jb25jYXQoWyJtYXJnaW5MZWZ0IiwibWFyZ2luUmlnaHQiXSksYS5maW5kKCIqW3dpZHRoXSIp
LmVhY2goZnVuY3Rpb24oKXt2YXIgaT10KHRoaXMpLHM9dC5lZmZlY3RzLnNjYWxlZERpbWVuc2lv
bnMoaSksbz17aGVpZ2h0OnMuaGVpZ2h0Km4uZnJvbS55LHdpZHRoOnMud2lkdGgqbi5mcm9tLngs
b3V0ZXJIZWlnaHQ6cy5vdXRlckhlaWdodCpuLmZyb20ueSxvdXRlcldpZHRoOnMub3V0ZXJXaWR0
aCpuLmZyb20ueH0sYT17aGVpZ2h0OnMuaGVpZ2h0Km4udG8ueSx3aWR0aDpzLndpZHRoKm4udG8u
eCxvdXRlckhlaWdodDpzLmhlaWdodCpuLnRvLnksb3V0ZXJXaWR0aDpzLndpZHRoKm4udG8ueH07
bi5mcm9tLnkhPT1uLnRvLnkmJihvPXQuZWZmZWN0cy5zZXRUcmFuc2l0aW9uKGksaCxuLmZyb20u
eSxvKSxhPXQuZWZmZWN0cy5zZXRUcmFuc2l0aW9uKGksaCxuLnRvLnksYSkpLG4uZnJvbS54IT09
bi50by54JiYobz10LmVmZmVjdHMuc2V0VHJhbnNpdGlvbihpLGwsbi5mcm9tLngsbyksYT10LmVm
ZmVjdHMuc2V0VHJhbnNpdGlvbihpLGwsbi50by54LGEpKSx1JiZ0LmVmZmVjdHMuc2F2ZVN0eWxl
KGkpLGkuY3NzKG8pLGkuYW5pbWF0ZShhLGUuZHVyYXRpb24sZS5lYXNpbmcsZnVuY3Rpb24oKXt1
JiZ0LmVmZmVjdHMucmVzdG9yZVN0eWxlKGkpfSl9KSksYS5hbmltYXRlKHYse3F1ZXVlOiExLGR1
cmF0aW9uOmUuZHVyYXRpb24sZWFzaW5nOmUuZWFzaW5nLGNvbXBsZXRlOmZ1bmN0aW9uKCl7dmFy
IGU9YS5vZmZzZXQoKTswPT09di5vcGFjaXR5JiZhLmNzcygib3BhY2l0eSIsXy5vcGFjaXR5KSx1
fHwoYS5jc3MoInBvc2l0aW9uIiwic3RhdGljIj09PWY/InJlbGF0aXZlIjpmKS5vZmZzZXQoZSks
dC5lZmZlY3RzLnNhdmVTdHlsZShhKSksaSgpfX0pfSksdC5lZmZlY3RzLmRlZmluZSgic2NhbGUi
LGZ1bmN0aW9uKGUsaSl7dmFyIHM9dCh0aGlzKSxuPWUubW9kZSxvPXBhcnNlSW50KGUucGVyY2Vu
dCwxMCl8fCgwPT09cGFyc2VJbnQoZS5wZXJjZW50LDEwKT8wOiJlZmZlY3QiIT09bj8wOjEwMCks
YT10LmV4dGVuZCghMCx7ZnJvbTp0LmVmZmVjdHMuc2NhbGVkRGltZW5zaW9ucyhzKSx0bzp0LmVm
ZmVjdHMuc2NhbGVkRGltZW5zaW9ucyhzLG8sZS5kaXJlY3Rpb258fCJib3RoIiksb3JpZ2luOmUu
b3JpZ2lufHxbIm1pZGRsZSIsImNlbnRlciJdfSxlKTtlLmZhZGUmJihhLmZyb20ub3BhY2l0eT0x
LGEudG8ub3BhY2l0eT0wKSx0LmVmZmVjdHMuZWZmZWN0LnNpemUuY2FsbCh0aGlzLGEsaSl9KSx0
LmVmZmVjdHMuZGVmaW5lKCJwdWZmIiwiaGlkZSIsZnVuY3Rpb24oZSxpKXt2YXIgcz10LmV4dGVu
ZCghMCx7fSxlLHtmYWRlOiEwLHBlcmNlbnQ6cGFyc2VJbnQoZS5wZXJjZW50LDEwKXx8MTUwfSk7
dC5lZmZlY3RzLmVmZmVjdC5zY2FsZS5jYWxsKHRoaXMscyxpKX0pLHQuZWZmZWN0cy5kZWZpbmUo
InB1bHNhdGUiLCJzaG93IixmdW5jdGlvbihlLGkpe3ZhciBzPXQodGhpcyksbj1lLm1vZGUsbz0i
c2hvdyI9PT1uLGE9ImhpZGUiPT09bixyPW98fGEsaD0yKihlLnRpbWVzfHw1KSsocj8xOjApLGw9
ZS5kdXJhdGlvbi9oLGM9MCx1PTEsZD1zLnF1ZXVlKCkubGVuZ3RoO2Zvcigob3x8IXMuaXMoIjp2
aXNpYmxlIikpJiYocy5jc3MoIm9wYWNpdHkiLDApLnNob3coKSxjPTEpO2g+dTt1Kyspcy5hbmlt
YXRlKHtvcGFjaXR5OmN9LGwsZS5lYXNpbmcpLGM9MS1jO3MuYW5pbWF0ZSh7b3BhY2l0eTpjfSxs
LGUuZWFzaW5nKSxzLnF1ZXVlKGkpLHQuZWZmZWN0cy51bnNoaWZ0KHMsZCxoKzEpfSksdC5lZmZl
Y3RzLmRlZmluZSgic2hha2UiLGZ1bmN0aW9uKGUsaSl7dmFyIHM9MSxuPXQodGhpcyksbz1lLmRp
cmVjdGlvbnx8ImxlZnQiLGE9ZS5kaXN0YW5jZXx8MjAscj1lLnRpbWVzfHwzLGg9MipyKzEsbD1N
YXRoLnJvdW5kKGUuZHVyYXRpb24vaCksYz0idXAiPT09b3x8ImRvd24iPT09bz8idG9wIjoibGVm
dCIsdT0idXAiPT09b3x8ImxlZnQiPT09byxkPXt9LHA9e30sZj17fSxnPW4ucXVldWUoKS5sZW5n
dGg7Zm9yKHQuZWZmZWN0cy5jcmVhdGVQbGFjZWhvbGRlcihuKSxkW2NdPSh1PyItPSI6Iis9Iikr
YSxwW2NdPSh1PyIrPSI6Ii09IikrMiphLGZbY109KHU/Ii09IjoiKz0iKSsyKmEsbi5hbmltYXRl
KGQsbCxlLmVhc2luZyk7cj5zO3MrKyluLmFuaW1hdGUocCxsLGUuZWFzaW5nKS5hbmltYXRlKGYs
bCxlLmVhc2luZyk7bi5hbmltYXRlKHAsbCxlLmVhc2luZykuYW5pbWF0ZShkLGwvMixlLmVhc2lu
ZykucXVldWUoaSksdC5lZmZlY3RzLnVuc2hpZnQobixnLGgrMSl9KSx0LmVmZmVjdHMuZGVmaW5l
KCJzbGlkZSIsInNob3ciLGZ1bmN0aW9uKGUsaSl7dmFyIHMsbixvPXQodGhpcyksYT17dXA6WyJi
b3R0b20iLCJ0b3AiXSxkb3duOlsidG9wIiwiYm90dG9tIl0sbGVmdDpbInJpZ2h0IiwibGVmdCJd
LHJpZ2h0OlsibGVmdCIsInJpZ2h0Il19LHI9ZS5tb2RlLGg9ZS5kaXJlY3Rpb258fCJsZWZ0Iixs
PSJ1cCI9PT1ofHwiZG93biI9PT1oPyJ0b3AiOiJsZWZ0IixjPSJ1cCI9PT1ofHwibGVmdCI9PT1o
LHU9ZS5kaXN0YW5jZXx8b1sidG9wIj09PWw/Im91dGVySGVpZ2h0Ijoib3V0ZXJXaWR0aCJdKCEw
KSxkPXt9O3QuZWZmZWN0cy5jcmVhdGVQbGFjZWhvbGRlcihvKSxzPW8uY3NzQ2xpcCgpLG49by5w
b3NpdGlvbigpW2xdLGRbbF09KGM/LTE6MSkqdStuLGQuY2xpcD1vLmNzc0NsaXAoKSxkLmNsaXBb
YVtoXVsxXV09ZC5jbGlwW2FbaF1bMF1dLCJzaG93Ij09PXImJihvLmNzc0NsaXAoZC5jbGlwKSxv
LmNzcyhsLGRbbF0pLGQuY2xpcD1zLGRbbF09biksby5hbmltYXRlKGQse3F1ZXVlOiExLGR1cmF0
aW9uOmUuZHVyYXRpb24sZWFzaW5nOmUuZWFzaW5nLGNvbXBsZXRlOml9KX0pO3ZhciBmO3QudWlC
YWNrQ29tcGF0IT09ITEmJihmPXQuZWZmZWN0cy5kZWZpbmUoInRyYW5zZmVyIixmdW5jdGlvbihl
LGkpe3QodGhpcykudHJhbnNmZXIoZSxpKX0pKSx0LnVpLmZvY3VzYWJsZT1mdW5jdGlvbihpLHMp
e3ZhciBuLG8sYSxyLGgsbD1pLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuImFyZWEiPT09
bD8obj1pLnBhcmVudE5vZGUsbz1uLm5hbWUsaS5ocmVmJiZvJiYibWFwIj09PW4ubm9kZU5hbWUu
dG9Mb3dlckNhc2UoKT8oYT10KCJpbWdbdXNlbWFwPScjIitvKyInXSIpLGEubGVuZ3RoPjAmJmEu
aXMoIjp2aXNpYmxlIikpOiExKTooL14oaW5wdXR8c2VsZWN0fHRleHRhcmVhfGJ1dHRvbnxvYmpl
Y3QpJC8udGVzdChsKT8ocj0haS5kaXNhYmxlZCxyJiYoaD10KGkpLmNsb3Nlc3QoImZpZWxkc2V0
IilbMF0saCYmKHI9IWguZGlzYWJsZWQpKSk6cj0iYSI9PT1sP2kuaHJlZnx8czpzLHImJnQoaSku
aXMoIjp2aXNpYmxlIikmJmUodChpKSkpfSx0LmV4dGVuZCh0LmV4cHJbIjoiXSx7Zm9jdXNhYmxl
OmZ1bmN0aW9uKGUpe3JldHVybiB0LnVpLmZvY3VzYWJsZShlLG51bGwhPXQuYXR0cihlLCJ0YWJp
bmRleCIpKX19KSx0LnVpLmZvY3VzYWJsZSx0LmZuLmZvcm09ZnVuY3Rpb24oKXtyZXR1cm4ic3Ry
aW5nIj09dHlwZW9mIHRoaXNbMF0uZm9ybT90aGlzLmNsb3Nlc3QoImZvcm0iKTp0KHRoaXNbMF0u
Zm9ybSl9LHQudWkuZm9ybVJlc2V0TWl4aW49e19mb3JtUmVzZXRIYW5kbGVyOmZ1bmN0aW9uKCl7
dmFyIGU9dCh0aGlzKTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dmFyIGk9ZS5kYXRhKCJ1aS1mb3Jt
LXJlc2V0LWluc3RhbmNlcyIpO3QuZWFjaChpLGZ1bmN0aW9uKCl7dGhpcy5yZWZyZXNoKCl9KX0p
fSxfYmluZEZvcm1SZXNldEhhbmRsZXI6ZnVuY3Rpb24oKXtpZih0aGlzLmZvcm09dGhpcy5lbGVt
ZW50LmZvcm0oKSx0aGlzLmZvcm0ubGVuZ3RoKXt2YXIgdD10aGlzLmZvcm0uZGF0YSgidWktZm9y
bS1yZXNldC1pbnN0YW5jZXMiKXx8W107dC5sZW5ndGh8fHRoaXMuZm9ybS5vbigicmVzZXQudWkt
Zm9ybS1yZXNldCIsdGhpcy5fZm9ybVJlc2V0SGFuZGxlciksdC5wdXNoKHRoaXMpLHRoaXMuZm9y
bS5kYXRhKCJ1aS1mb3JtLXJlc2V0LWluc3RhbmNlcyIsdCl9fSxfdW5iaW5kRm9ybVJlc2V0SGFu
ZGxlcjpmdW5jdGlvbigpe2lmKHRoaXMuZm9ybS5sZW5ndGgpe3ZhciBlPXRoaXMuZm9ybS5kYXRh
KCJ1aS1mb3JtLXJlc2V0LWluc3RhbmNlcyIpO2Uuc3BsaWNlKHQuaW5BcnJheSh0aGlzLGUpLDEp
LGUubGVuZ3RoP3RoaXMuZm9ybS5kYXRhKCJ1aS1mb3JtLXJlc2V0LWluc3RhbmNlcyIsZSk6dGhp
cy5mb3JtLnJlbW92ZURhdGEoInVpLWZvcm0tcmVzZXQtaW5zdGFuY2VzIikub2ZmKCJyZXNldC51
aS1mb3JtLXJlc2V0Iil9fX0sIjEuNyI9PT10LmZuLmpxdWVyeS5zdWJzdHJpbmcoMCwzKSYmKHQu
ZWFjaChbIldpZHRoIiwiSGVpZ2h0Il0sZnVuY3Rpb24oZSxpKXtmdW5jdGlvbiBzKGUsaSxzLG8p
e3JldHVybiB0LmVhY2gobixmdW5jdGlvbigpe2ktPXBhcnNlRmxvYXQodC5jc3MoZSwicGFkZGlu
ZyIrdGhpcykpfHwwLHMmJihpLT1wYXJzZUZsb2F0KHQuY3NzKGUsImJvcmRlciIrdGhpcysiV2lk
dGgiKSl8fDApLG8mJihpLT1wYXJzZUZsb2F0KHQuY3NzKGUsIm1hcmdpbiIrdGhpcykpfHwwKX0p
LGl9dmFyIG49IldpZHRoIj09PWk/WyJMZWZ0IiwiUmlnaHQiXTpbIlRvcCIsIkJvdHRvbSJdLG89
aS50b0xvd2VyQ2FzZSgpLGE9e2lubmVyV2lkdGg6dC5mbi5pbm5lcldpZHRoLGlubmVySGVpZ2h0
OnQuZm4uaW5uZXJIZWlnaHQsb3V0ZXJXaWR0aDp0LmZuLm91dGVyV2lkdGgsb3V0ZXJIZWlnaHQ6
dC5mbi5vdXRlckhlaWdodH07dC5mblsiaW5uZXIiK2ldPWZ1bmN0aW9uKGUpe3JldHVybiB2b2lk
IDA9PT1lP2FbImlubmVyIitpXS5jYWxsKHRoaXMpOnRoaXMuZWFjaChmdW5jdGlvbigpe3QodGhp
cykuY3NzKG8scyh0aGlzLGUpKyJweCIpfSl9LHQuZm5bIm91dGVyIitpXT1mdW5jdGlvbihlLG4p
e3JldHVybiJudW1iZXIiIT10eXBlb2YgZT9hWyJvdXRlciIraV0uY2FsbCh0aGlzLGUpOnRoaXMu
ZWFjaChmdW5jdGlvbigpe3QodGhpcykuY3NzKG8scyh0aGlzLGUsITAsbikrInB4Iil9KX19KSx0
LmZuLmFkZEJhY2s9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuYWRkKG51bGw9PXQ/dGhpcy5wcmV2
T2JqZWN0OnRoaXMucHJldk9iamVjdC5maWx0ZXIodCkpfSksdC51aS5rZXlDb2RlPXtCQUNLU1BB
Q0U6OCxDT01NQToxODgsREVMRVRFOjQ2LERPV046NDAsRU5EOjM1LEVOVEVSOjEzLEVTQ0FQRToy
NyxIT01FOjM2LExFRlQ6MzcsUEFHRV9ET1dOOjM0LFBBR0VfVVA6MzMsUEVSSU9EOjE5MCxSSUdI
VDozOSxTUEFDRTozMixUQUI6OSxVUDozOH0sdC51aS5lc2NhcGVTZWxlY3Rvcj1mdW5jdGlvbigp
e3ZhciB0PS8oWyEiIyQlJicoKSorLC5cLzo7PD0+P0BbXF1eYHt8fX5dKS9nO3JldHVybiBmdW5j
dGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKHQsIlxcJDEiKX19KCksdC5mbi5sYWJlbHM9ZnVuY3Rp
b24oKXt2YXIgZSxpLHMsbixvO3JldHVybiB0aGlzWzBdLmxhYmVscyYmdGhpc1swXS5sYWJlbHMu
bGVuZ3RoP3RoaXMucHVzaFN0YWNrKHRoaXNbMF0ubGFiZWxzKToobj10aGlzLmVxKDApLnBhcmVu
dHMoImxhYmVsIikscz10aGlzLmF0dHIoImlkIikscyYmKGU9dGhpcy5lcSgwKS5wYXJlbnRzKCku
bGFzdCgpLG89ZS5hZGQoZS5sZW5ndGg/ZS5zaWJsaW5ncygpOnRoaXMuc2libGluZ3MoKSksaT0i
bGFiZWxbZm9yPSciK3QudWkuZXNjYXBlU2VsZWN0b3IocykrIiddIixuPW4uYWRkKG8uZmluZChp
KS5hZGRCYWNrKGkpKSksdGhpcy5wdXNoU3RhY2sobikpfSx0LmZuLnNjcm9sbFBhcmVudD1mdW5j
dGlvbihlKXt2YXIgaT10aGlzLmNzcygicG9zaXRpb24iKSxzPSJhYnNvbHV0ZSI9PT1pLG49ZT8v
KGF1dG98c2Nyb2xsfGhpZGRlbikvOi8oYXV0b3xzY3JvbGwpLyxvPXRoaXMucGFyZW50cygpLmZp
bHRlcihmdW5jdGlvbigpe3ZhciBlPXQodGhpcyk7cmV0dXJuIHMmJiJzdGF0aWMiPT09ZS5jc3Mo
InBvc2l0aW9uIik/ITE6bi50ZXN0KGUuY3NzKCJvdmVyZmxvdyIpK2UuY3NzKCJvdmVyZmxvdy15
IikrZS5jc3MoIm92ZXJmbG93LXgiKSl9KS5lcSgwKTtyZXR1cm4iZml4ZWQiIT09aSYmby5sZW5n
dGg/bzp0KHRoaXNbMF0ub3duZXJEb2N1bWVudHx8ZG9jdW1lbnQpfSx0LmV4dGVuZCh0LmV4cHJb
IjoiXSx7dGFiYmFibGU6ZnVuY3Rpb24oZSl7dmFyIGk9dC5hdHRyKGUsInRhYmluZGV4Iikscz1u
dWxsIT1pO3JldHVybighc3x8aT49MCkmJnQudWkuZm9jdXNhYmxlKGUscyl9fSksdC5mbi5leHRl
bmQoe3VuaXF1ZUlkOmZ1bmN0aW9uKCl7dmFyIHQ9MDtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4g
dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dGhpcy5pZHx8KHRoaXMuaWQ9InVpLWlkLSIrICsrdCl9KX19
KCkscmVtb3ZlVW5pcXVlSWQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7
L151aS1pZC1cZCskLy50ZXN0KHRoaXMuaWQpJiZ0KHRoaXMpLnJlbW92ZUF0dHIoImlkIil9KX19
KSx0LndpZGdldCgidWkuYWNjb3JkaW9uIix7dmVyc2lvbjoiMS4xMi4xIixvcHRpb25zOnthY3Rp
dmU6MCxhbmltYXRlOnt9LGNsYXNzZXM6eyJ1aS1hY2NvcmRpb24taGVhZGVyIjoidWktY29ybmVy
LXRvcCIsInVpLWFjY29yZGlvbi1oZWFkZXItY29sbGFwc2VkIjoidWktY29ybmVyLWFsbCIsInVp
LWFjY29yZGlvbi1jb250ZW50IjoidWktY29ybmVyLWJvdHRvbSJ9LGNvbGxhcHNpYmxlOiExLGV2
ZW50OiJjbGljayIsaGVhZGVyOiI+IGxpID4gOmZpcnN0LWNoaWxkLCA+IDpub3QobGkpOmV2ZW4i
LGhlaWdodFN0eWxlOiJhdXRvIixpY29uczp7YWN0aXZlSGVhZGVyOiJ1aS1pY29uLXRyaWFuZ2xl
LTEtcyIsaGVhZGVyOiJ1aS1pY29uLXRyaWFuZ2xlLTEtZSJ9LGFjdGl2YXRlOm51bGwsYmVmb3Jl
QWN0aXZhdGU6bnVsbH0saGlkZVByb3BzOntib3JkZXJUb3BXaWR0aDoiaGlkZSIsYm9yZGVyQm90
dG9tV2lkdGg6ImhpZGUiLHBhZGRpbmdUb3A6ImhpZGUiLHBhZGRpbmdCb3R0b206ImhpZGUiLGhl
aWdodDoiaGlkZSJ9LHNob3dQcm9wczp7Ym9yZGVyVG9wV2lkdGg6InNob3ciLGJvcmRlckJvdHRv
bVdpZHRoOiJzaG93IixwYWRkaW5nVG9wOiJzaG93IixwYWRkaW5nQm90dG9tOiJzaG93IixoZWln
aHQ6InNob3cifSxfY3JlYXRlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vcHRpb25zO3RoaXMucHJl
dlNob3c9dGhpcy5wcmV2SGlkZT10KCksdGhpcy5fYWRkQ2xhc3MoInVpLWFjY29yZGlvbiIsInVp
LXdpZGdldCB1aS1oZWxwZXItcmVzZXQiKSx0aGlzLmVsZW1lbnQuYXR0cigicm9sZSIsInRhYmxp
c3QiKSxlLmNvbGxhcHNpYmxlfHxlLmFjdGl2ZSE9PSExJiZudWxsIT1lLmFjdGl2ZXx8KGUuYWN0
aXZlPTApLHRoaXMuX3Byb2Nlc3NQYW5lbHMoKSwwPmUuYWN0aXZlJiYoZS5hY3RpdmUrPXRoaXMu
aGVhZGVycy5sZW5ndGgpLHRoaXMuX3JlZnJlc2goKX0sX2dldENyZWF0ZUV2ZW50RGF0YTpmdW5j
dGlvbigpe3JldHVybntoZWFkZXI6dGhpcy5hY3RpdmUscGFuZWw6dGhpcy5hY3RpdmUubGVuZ3Ro
P3RoaXMuYWN0aXZlLm5leHQoKTp0KCl9fSxfY3JlYXRlSWNvbnM6ZnVuY3Rpb24oKXt2YXIgZSxp
LHM9dGhpcy5vcHRpb25zLmljb25zO3MmJihlPXQoIjxzcGFuPiIpLHRoaXMuX2FkZENsYXNzKGUs
InVpLWFjY29yZGlvbi1oZWFkZXItaWNvbiIsInVpLWljb24gIitzLmhlYWRlciksZS5wcmVwZW5k
VG8odGhpcy5oZWFkZXJzKSxpPXRoaXMuYWN0aXZlLmNoaWxkcmVuKCIudWktYWNjb3JkaW9uLWhl
YWRlci1pY29uIiksdGhpcy5fcmVtb3ZlQ2xhc3MoaSxzLmhlYWRlcikuX2FkZENsYXNzKGksbnVs
bCxzLmFjdGl2ZUhlYWRlcikuX2FkZENsYXNzKHRoaXMuaGVhZGVycywidWktYWNjb3JkaW9uLWlj
b25zIikpfSxfZGVzdHJveUljb25zOmZ1bmN0aW9uKCl7dGhpcy5fcmVtb3ZlQ2xhc3ModGhpcy5o
ZWFkZXJzLCJ1aS1hY2NvcmRpb24taWNvbnMiKSx0aGlzLmhlYWRlcnMuY2hpbGRyZW4oIi51aS1h
Y2NvcmRpb24taGVhZGVyLWljb24iKS5yZW1vdmUoKX0sX2Rlc3Ryb3k6ZnVuY3Rpb24oKXt2YXIg
dDt0aGlzLmVsZW1lbnQucmVtb3ZlQXR0cigicm9sZSIpLHRoaXMuaGVhZGVycy5yZW1vdmVBdHRy
KCJyb2xlIGFyaWEtZXhwYW5kZWQgYXJpYS1zZWxlY3RlZCBhcmlhLWNvbnRyb2xzIHRhYkluZGV4
IikucmVtb3ZlVW5pcXVlSWQoKSx0aGlzLl9kZXN0cm95SWNvbnMoKSx0PXRoaXMuaGVhZGVycy5u
ZXh0KCkuY3NzKCJkaXNwbGF5IiwiIikucmVtb3ZlQXR0cigicm9sZSBhcmlhLWhpZGRlbiBhcmlh
LWxhYmVsbGVkYnkiKS5yZW1vdmVVbmlxdWVJZCgpLCJjb250ZW50IiE9PXRoaXMub3B0aW9ucy5o
ZWlnaHRTdHlsZSYmdC5jc3MoImhlaWdodCIsIiIpfSxfc2V0T3B0aW9uOmZ1bmN0aW9uKHQsZSl7
cmV0dXJuImFjdGl2ZSI9PT10Pyh0aGlzLl9hY3RpdmF0ZShlKSx2b2lkIDApOigiZXZlbnQiPT09
dCYmKHRoaXMub3B0aW9ucy5ldmVudCYmdGhpcy5fb2ZmKHRoaXMuaGVhZGVycyx0aGlzLm9wdGlv
bnMuZXZlbnQpLHRoaXMuX3NldHVwRXZlbnRzKGUpKSx0aGlzLl9zdXBlcih0LGUpLCJjb2xsYXBz
aWJsZSIhPT10fHxlfHx0aGlzLm9wdGlvbnMuYWN0aXZlIT09ITF8fHRoaXMuX2FjdGl2YXRlKDAp
LCJpY29ucyI9PT10JiYodGhpcy5fZGVzdHJveUljb25zKCksZSYmdGhpcy5fY3JlYXRlSWNvbnMo
KSksdm9pZCAwKX0sX3NldE9wdGlvbkRpc2FibGVkOmZ1bmN0aW9uKHQpe3RoaXMuX3N1cGVyKHQp
LHRoaXMuZWxlbWVudC5hdHRyKCJhcmlhLWRpc2FibGVkIix0KSx0aGlzLl90b2dnbGVDbGFzcyhu
dWxsLCJ1aS1zdGF0ZS1kaXNhYmxlZCIsISF0KSx0aGlzLl90b2dnbGVDbGFzcyh0aGlzLmhlYWRl
cnMuYWRkKHRoaXMuaGVhZGVycy5uZXh0KCkpLG51bGwsInVpLXN0YXRlLWRpc2FibGVkIiwhIXQp
fSxfa2V5ZG93bjpmdW5jdGlvbihlKXtpZighZS5hbHRLZXkmJiFlLmN0cmxLZXkpe3ZhciBpPXQu
dWkua2V5Q29kZSxzPXRoaXMuaGVhZGVycy5sZW5ndGgsbj10aGlzLmhlYWRlcnMuaW5kZXgoZS50
YXJnZXQpLG89ITE7c3dpdGNoKGUua2V5Q29kZSl7Y2FzZSBpLlJJR0hUOmNhc2UgaS5ET1dOOm89
dGhpcy5oZWFkZXJzWyhuKzEpJXNdO2JyZWFrO2Nhc2UgaS5MRUZUOmNhc2UgaS5VUDpvPXRoaXMu
aGVhZGVyc1sobi0xK3MpJXNdO2JyZWFrO2Nhc2UgaS5TUEFDRTpjYXNlIGkuRU5URVI6dGhpcy5f
ZXZlbnRIYW5kbGVyKGUpO2JyZWFrO2Nhc2UgaS5IT01FOm89dGhpcy5oZWFkZXJzWzBdO2JyZWFr
O2Nhc2UgaS5FTkQ6bz10aGlzLmhlYWRlcnNbcy0xXX1vJiYodChlLnRhcmdldCkuYXR0cigidGFi
SW5kZXgiLC0xKSx0KG8pLmF0dHIoInRhYkluZGV4IiwwKSx0KG8pLnRyaWdnZXIoImZvY3VzIiks
ZS5wcmV2ZW50RGVmYXVsdCgpKX19LF9wYW5lbEtleURvd246ZnVuY3Rpb24oZSl7ZS5rZXlDb2Rl
PT09dC51aS5rZXlDb2RlLlVQJiZlLmN0cmxLZXkmJnQoZS5jdXJyZW50VGFyZ2V0KS5wcmV2KCku
dHJpZ2dlcigiZm9jdXMiKX0scmVmcmVzaDpmdW5jdGlvbigpe3ZhciBlPXRoaXMub3B0aW9uczt0
aGlzLl9wcm9jZXNzUGFuZWxzKCksZS5hY3RpdmU9PT0hMSYmZS5jb2xsYXBzaWJsZT09PSEwfHwh
dGhpcy5oZWFkZXJzLmxlbmd0aD8oZS5hY3RpdmU9ITEsdGhpcy5hY3RpdmU9dCgpKTplLmFjdGl2
ZT09PSExP3RoaXMuX2FjdGl2YXRlKDApOnRoaXMuYWN0aXZlLmxlbmd0aCYmIXQuY29udGFpbnMo
dGhpcy5lbGVtZW50WzBdLHRoaXMuYWN0aXZlWzBdKT90aGlzLmhlYWRlcnMubGVuZ3RoPT09dGhp
cy5oZWFkZXJzLmZpbmQoIi51aS1zdGF0ZS1kaXNhYmxlZCIpLmxlbmd0aD8oZS5hY3RpdmU9ITEs
dGhpcy5hY3RpdmU9dCgpKTp0aGlzLl9hY3RpdmF0ZShNYXRoLm1heCgwLGUuYWN0aXZlLTEpKTpl
LmFjdGl2ZT10aGlzLmhlYWRlcnMuaW5kZXgodGhpcy5hY3RpdmUpLHRoaXMuX2Rlc3Ryb3lJY29u
cygpLHRoaXMuX3JlZnJlc2goKX0sX3Byb2Nlc3NQYW5lbHM6ZnVuY3Rpb24oKXt2YXIgdD10aGlz
LmhlYWRlcnMsZT10aGlzLnBhbmVsczt0aGlzLmhlYWRlcnM9dGhpcy5lbGVtZW50LmZpbmQodGhp
cy5vcHRpb25zLmhlYWRlciksdGhpcy5fYWRkQ2xhc3ModGhpcy5oZWFkZXJzLCJ1aS1hY2NvcmRp
b24taGVhZGVyIHVpLWFjY29yZGlvbi1oZWFkZXItY29sbGFwc2VkIiwidWktc3RhdGUtZGVmYXVs
dCIpLHRoaXMucGFuZWxzPXRoaXMuaGVhZGVycy5uZXh0KCkuZmlsdGVyKCI6bm90KC51aS1hY2Nv
cmRpb24tY29udGVudC1hY3RpdmUpIikuaGlkZSgpLHRoaXMuX2FkZENsYXNzKHRoaXMucGFuZWxz
LCJ1aS1hY2NvcmRpb24tY29udGVudCIsInVpLWhlbHBlci1yZXNldCB1aS13aWRnZXQtY29udGVu
dCIpLGUmJih0aGlzLl9vZmYodC5ub3QodGhpcy5oZWFkZXJzKSksdGhpcy5fb2ZmKGUubm90KHRo
aXMucGFuZWxzKSkpfSxfcmVmcmVzaDpmdW5jdGlvbigpe3ZhciBlLGk9dGhpcy5vcHRpb25zLHM9
aS5oZWlnaHRTdHlsZSxuPXRoaXMuZWxlbWVudC5wYXJlbnQoKTt0aGlzLmFjdGl2ZT10aGlzLl9m
aW5kQWN0aXZlKGkuYWN0aXZlKSx0aGlzLl9hZGRDbGFzcyh0aGlzLmFjdGl2ZSwidWktYWNjb3Jk
aW9uLWhlYWRlci1hY3RpdmUiLCJ1aS1zdGF0ZS1hY3RpdmUiKS5fcmVtb3ZlQ2xhc3ModGhpcy5h
Y3RpdmUsInVpLWFjY29yZGlvbi1oZWFkZXItY29sbGFwc2VkIiksdGhpcy5fYWRkQ2xhc3ModGhp
cy5hY3RpdmUubmV4dCgpLCJ1aS1hY2NvcmRpb24tY29udGVudC1hY3RpdmUiKSx0aGlzLmFjdGl2
ZS5uZXh0KCkuc2hvdygpLHRoaXMuaGVhZGVycy5hdHRyKCJyb2xlIiwidGFiIikuZWFjaChmdW5j
dGlvbigpe3ZhciBlPXQodGhpcyksaT1lLnVuaXF1ZUlkKCkuYXR0cigiaWQiKSxzPWUubmV4dCgp
LG49cy51bmlxdWVJZCgpLmF0dHIoImlkIik7ZS5hdHRyKCJhcmlhLWNvbnRyb2xzIixuKSxzLmF0
dHIoImFyaWEtbGFiZWxsZWRieSIsaSl9KS5uZXh0KCkuYXR0cigicm9sZSIsInRhYnBhbmVsIiks
dGhpcy5oZWFkZXJzLm5vdCh0aGlzLmFjdGl2ZSkuYXR0cih7ImFyaWEtc2VsZWN0ZWQiOiJmYWxz
ZSIsImFyaWEtZXhwYW5kZWQiOiJmYWxzZSIsdGFiSW5kZXg6LTF9KS5uZXh0KCkuYXR0cih7ImFy
aWEtaGlkZGVuIjoidHJ1ZSJ9KS5oaWRlKCksdGhpcy5hY3RpdmUubGVuZ3RoP3RoaXMuYWN0aXZl
LmF0dHIoeyJhcmlhLXNlbGVjdGVkIjoidHJ1ZSIsImFyaWEtZXhwYW5kZWQiOiJ0cnVlIix0YWJJ
bmRleDowfSkubmV4dCgpLmF0dHIoeyJhcmlhLWhpZGRlbiI6ImZhbHNlIn0pOnRoaXMuaGVhZGVy
cy5lcSgwKS5hdHRyKCJ0YWJJbmRleCIsMCksdGhpcy5fY3JlYXRlSWNvbnMoKSx0aGlzLl9zZXR1
cEV2ZW50cyhpLmV2ZW50KSwiZmlsbCI9PT1zPyhlPW4uaGVpZ2h0KCksdGhpcy5lbGVtZW50LnNp
YmxpbmdzKCI6dmlzaWJsZSIpLmVhY2goZnVuY3Rpb24oKXt2YXIgaT10KHRoaXMpLHM9aS5jc3Mo
InBvc2l0aW9uIik7ImFic29sdXRlIiE9PXMmJiJmaXhlZCIhPT1zJiYoZS09aS5vdXRlckhlaWdo
dCghMCkpfSksdGhpcy5oZWFkZXJzLmVhY2goZnVuY3Rpb24oKXtlLT10KHRoaXMpLm91dGVySGVp
Z2h0KCEwKX0pLHRoaXMuaGVhZGVycy5uZXh0KCkuZWFjaChmdW5jdGlvbigpe3QodGhpcykuaGVp
Z2h0KE1hdGgubWF4KDAsZS10KHRoaXMpLmlubmVySGVpZ2h0KCkrdCh0aGlzKS5oZWlnaHQoKSkp
fSkuY3NzKCJvdmVyZmxvdyIsImF1dG8iKSk6ImF1dG8iPT09cyYmKGU9MCx0aGlzLmhlYWRlcnMu
bmV4dCgpLmVhY2goZnVuY3Rpb24oKXt2YXIgaT10KHRoaXMpLmlzKCI6dmlzaWJsZSIpO2l8fHQo
dGhpcykuc2hvdygpLGU9TWF0aC5tYXgoZSx0KHRoaXMpLmNzcygiaGVpZ2h0IiwiIikuaGVpZ2h0
KCkpLGl8fHQodGhpcykuaGlkZSgpfSkuaGVpZ2h0KGUpKX0sX2FjdGl2YXRlOmZ1bmN0aW9uKGUp
e3ZhciBpPXRoaXMuX2ZpbmRBY3RpdmUoZSlbMF07aSE9PXRoaXMuYWN0aXZlWzBdJiYoaT1pfHx0
aGlzLmFjdGl2ZVswXSx0aGlzLl9ldmVudEhhbmRsZXIoe3RhcmdldDppLGN1cnJlbnRUYXJnZXQ6
aSxwcmV2ZW50RGVmYXVsdDp0Lm5vb3B9KSl9LF9maW5kQWN0aXZlOmZ1bmN0aW9uKGUpe3JldHVy
biJudW1iZXIiPT10eXBlb2YgZT90aGlzLmhlYWRlcnMuZXEoZSk6dCgpfSxfc2V0dXBFdmVudHM6
ZnVuY3Rpb24oZSl7dmFyIGk9e2tleWRvd246Il9rZXlkb3duIn07ZSYmdC5lYWNoKGUuc3BsaXQo
IiAiKSxmdW5jdGlvbih0LGUpe2lbZV09Il9ldmVudEhhbmRsZXIifSksdGhpcy5fb2ZmKHRoaXMu
aGVhZGVycy5hZGQodGhpcy5oZWFkZXJzLm5leHQoKSkpLHRoaXMuX29uKHRoaXMuaGVhZGVycyxp
KSx0aGlzLl9vbih0aGlzLmhlYWRlcnMubmV4dCgpLHtrZXlkb3duOiJfcGFuZWxLZXlEb3duIn0p
LHRoaXMuX2hvdmVyYWJsZSh0aGlzLmhlYWRlcnMpLHRoaXMuX2ZvY3VzYWJsZSh0aGlzLmhlYWRl
cnMpfSxfZXZlbnRIYW5kbGVyOmZ1bmN0aW9uKGUpe3ZhciBpLHMsbj10aGlzLm9wdGlvbnMsbz10
aGlzLmFjdGl2ZSxhPXQoZS5jdXJyZW50VGFyZ2V0KSxyPWFbMF09PT1vWzBdLGg9ciYmbi5jb2xs
YXBzaWJsZSxsPWg/dCgpOmEubmV4dCgpLGM9by5uZXh0KCksdT17b2xkSGVhZGVyOm8sb2xkUGFu
ZWw6YyxuZXdIZWFkZXI6aD90KCk6YSxuZXdQYW5lbDpsfTtlLnByZXZlbnREZWZhdWx0KCksciYm
IW4uY29sbGFwc2libGV8fHRoaXMuX3RyaWdnZXIoImJlZm9yZUFjdGl2YXRlIixlLHUpPT09ITF8
fChuLmFjdGl2ZT1oPyExOnRoaXMuaGVhZGVycy5pbmRleChhKSx0aGlzLmFjdGl2ZT1yP3QoKTph
LHRoaXMuX3RvZ2dsZSh1KSx0aGlzLl9yZW1vdmVDbGFzcyhvLCJ1aS1hY2NvcmRpb24taGVhZGVy
LWFjdGl2ZSIsInVpLXN0YXRlLWFjdGl2ZSIpLG4uaWNvbnMmJihpPW8uY2hpbGRyZW4oIi51aS1h
Y2NvcmRpb24taGVhZGVyLWljb24iKSx0aGlzLl9yZW1vdmVDbGFzcyhpLG51bGwsbi5pY29ucy5h
Y3RpdmVIZWFkZXIpLl9hZGRDbGFzcyhpLG51bGwsbi5pY29ucy5oZWFkZXIpKSxyfHwodGhpcy5f
cmVtb3ZlQ2xhc3MoYSwidWktYWNjb3JkaW9uLWhlYWRlci1jb2xsYXBzZWQiKS5fYWRkQ2xhc3Mo
YSwidWktYWNjb3JkaW9uLWhlYWRlci1hY3RpdmUiLCJ1aS1zdGF0ZS1hY3RpdmUiKSxuLmljb25z
JiYocz1hLmNoaWxkcmVuKCIudWktYWNjb3JkaW9uLWhlYWRlci1pY29uIiksdGhpcy5fcmVtb3Zl
Q2xhc3MocyxudWxsLG4uaWNvbnMuaGVhZGVyKS5fYWRkQ2xhc3MocyxudWxsLG4uaWNvbnMuYWN0
aXZlSGVhZGVyKSksdGhpcy5fYWRkQ2xhc3MoYS5uZXh0KCksInVpLWFjY29yZGlvbi1jb250ZW50
LWFjdGl2ZSIpKSl9LF90b2dnbGU6ZnVuY3Rpb24oZSl7dmFyIGk9ZS5uZXdQYW5lbCxzPXRoaXMu
cHJldlNob3cubGVuZ3RoP3RoaXMucHJldlNob3c6ZS5vbGRQYW5lbDt0aGlzLnByZXZTaG93LmFk
ZCh0aGlzLnByZXZIaWRlKS5zdG9wKCEwLCEwKSx0aGlzLnByZXZTaG93PWksdGhpcy5wcmV2SGlk
ZT1zLHRoaXMub3B0aW9ucy5hbmltYXRlP3RoaXMuX2FuaW1hdGUoaSxzLGUpOihzLmhpZGUoKSxp
LnNob3coKSx0aGlzLl90b2dnbGVDb21wbGV0ZShlKSkscy5hdHRyKHsiYXJpYS1oaWRkZW4iOiJ0
cnVlIn0pLHMucHJldigpLmF0dHIoeyJhcmlhLXNlbGVjdGVkIjoiZmFsc2UiLCJhcmlhLWV4cGFu
ZGVkIjoiZmFsc2UifSksaS5sZW5ndGgmJnMubGVuZ3RoP3MucHJldigpLmF0dHIoe3RhYkluZGV4
Oi0xLCJhcmlhLWV4cGFuZGVkIjoiZmFsc2UifSk6aS5sZW5ndGgmJnRoaXMuaGVhZGVycy5maWx0
ZXIoZnVuY3Rpb24oKXtyZXR1cm4gMD09PXBhcnNlSW50KHQodGhpcykuYXR0cigidGFiSW5kZXgi
KSwxMCl9KS5hdHRyKCJ0YWJJbmRleCIsLTEpLGkuYXR0cigiYXJpYS1oaWRkZW4iLCJmYWxzZSIp
LnByZXYoKS5hdHRyKHsiYXJpYS1zZWxlY3RlZCI6InRydWUiLCJhcmlhLWV4cGFuZGVkIjoidHJ1
ZSIsdGFiSW5kZXg6MH0pfSxfYW5pbWF0ZTpmdW5jdGlvbih0LGUsaSl7dmFyIHMsbixvLGE9dGhp
cyxyPTAsaD10LmNzcygiYm94LXNpemluZyIpLGw9dC5sZW5ndGgmJighZS5sZW5ndGh8fHQuaW5k
ZXgoKTxlLmluZGV4KCkpLGM9dGhpcy5vcHRpb25zLmFuaW1hdGV8fHt9LHU9bCYmYy5kb3dufHxj
LGQ9ZnVuY3Rpb24oKXthLl90b2dnbGVDb21wbGV0ZShpKX07cmV0dXJuIm51bWJlciI9PXR5cGVv
ZiB1JiYobz11KSwic3RyaW5nIj09dHlwZW9mIHUmJihuPXUpLG49bnx8dS5lYXNpbmd8fGMuZWFz
aW5nLG89b3x8dS5kdXJhdGlvbnx8Yy5kdXJhdGlvbixlLmxlbmd0aD90Lmxlbmd0aD8ocz10LnNo
b3coKS5vdXRlckhlaWdodCgpLGUuYW5pbWF0ZSh0aGlzLmhpZGVQcm9wcyx7ZHVyYXRpb246byxl
YXNpbmc6bixzdGVwOmZ1bmN0aW9uKHQsZSl7ZS5ub3c9TWF0aC5yb3VuZCh0KX19KSx0LmhpZGUo
KS5hbmltYXRlKHRoaXMuc2hvd1Byb3BzLHtkdXJhdGlvbjpvLGVhc2luZzpuLGNvbXBsZXRlOmQs
c3RlcDpmdW5jdGlvbih0LGkpe2kubm93PU1hdGgucm91bmQodCksImhlaWdodCIhPT1pLnByb3A/
ImNvbnRlbnQtYm94Ij09PWgmJihyKz1pLm5vdyk6ImNvbnRlbnQiIT09YS5vcHRpb25zLmhlaWdo
dFN0eWxlJiYoaS5ub3c9TWF0aC5yb3VuZChzLWUub3V0ZXJIZWlnaHQoKS1yKSxyPTApfX0pLHZv
aWQgMCk6ZS5hbmltYXRlKHRoaXMuaGlkZVByb3BzLG8sbixkKTp0LmFuaW1hdGUodGhpcy5zaG93
UHJvcHMsbyxuLGQpfSxfdG9nZ2xlQ29tcGxldGU6ZnVuY3Rpb24odCl7dmFyIGU9dC5vbGRQYW5l
bCxpPWUucHJldigpO3RoaXMuX3JlbW92ZUNsYXNzKGUsInVpLWFjY29yZGlvbi1jb250ZW50LWFj
dGl2ZSIpLHRoaXMuX3JlbW92ZUNsYXNzKGksInVpLWFjY29yZGlvbi1oZWFkZXItYWN0aXZlIiku
X2FkZENsYXNzKGksInVpLWFjY29yZGlvbi1oZWFkZXItY29sbGFwc2VkIiksZS5sZW5ndGgmJihl
LnBhcmVudCgpWzBdLmNsYXNzTmFtZT1lLnBhcmVudCgpWzBdLmNsYXNzTmFtZSksdGhpcy5fdHJp
Z2dlcigiYWN0aXZhdGUiLG51bGwsdCl9fSksdC51aS5zYWZlQWN0aXZlRWxlbWVudD1mdW5jdGlv
bih0KXt2YXIgZTt0cnl7ZT10LmFjdGl2ZUVsZW1lbnR9Y2F0Y2goaSl7ZT10LmJvZHl9cmV0dXJu
IGV8fChlPXQuYm9keSksZS5ub2RlTmFtZXx8KGU9dC5ib2R5KSxlfSx0LndpZGdldCgidWkubWVu
dSIse3ZlcnNpb246IjEuMTIuMSIsZGVmYXVsdEVsZW1lbnQ6Ijx1bD4iLGRlbGF5OjMwMCxvcHRp
b25zOntpY29uczp7c3VibWVudToidWktaWNvbi1jYXJldC0xLWUifSxpdGVtczoiPiAqIixtZW51
czoidWwiLHBvc2l0aW9uOntteToibGVmdCB0b3AiLGF0OiJyaWdodCB0b3AifSxyb2xlOiJtZW51
IixibHVyOm51bGwsZm9jdXM6bnVsbCxzZWxlY3Q6bnVsbH0sX2NyZWF0ZTpmdW5jdGlvbigpe3Ro
aXMuYWN0aXZlTWVudT10aGlzLmVsZW1lbnQsdGhpcy5tb3VzZUhhbmRsZWQ9ITEsdGhpcy5lbGVt
ZW50LnVuaXF1ZUlkKCkuYXR0cih7cm9sZTp0aGlzLm9wdGlvbnMucm9sZSx0YWJJbmRleDowfSks
dGhpcy5fYWRkQ2xhc3MoInVpLW1lbnUiLCJ1aS13aWRnZXQgdWktd2lkZ2V0LWNvbnRlbnQiKSx0
aGlzLl9vbih7Im1vdXNlZG93biAudWktbWVudS1pdGVtIjpmdW5jdGlvbih0KXt0LnByZXZlbnRE
ZWZhdWx0KCl9LCJjbGljayAudWktbWVudS1pdGVtIjpmdW5jdGlvbihlKXt2YXIgaT10KGUudGFy
Z2V0KSxzPXQodC51aS5zYWZlQWN0aXZlRWxlbWVudCh0aGlzLmRvY3VtZW50WzBdKSk7IXRoaXMu
bW91c2VIYW5kbGVkJiZpLm5vdCgiLnVpLXN0YXRlLWRpc2FibGVkIikubGVuZ3RoJiYodGhpcy5z
ZWxlY3QoZSksZS5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpfHwodGhpcy5tb3VzZUhhbmRsZWQ9ITAp
LGkuaGFzKCIudWktbWVudSIpLmxlbmd0aD90aGlzLmV4cGFuZChlKTohdGhpcy5lbGVtZW50Lmlz
KCI6Zm9jdXMiKSYmcy5jbG9zZXN0KCIudWktbWVudSIpLmxlbmd0aCYmKHRoaXMuZWxlbWVudC50
cmlnZ2VyKCJmb2N1cyIsWyEwXSksdGhpcy5hY3RpdmUmJjE9PT10aGlzLmFjdGl2ZS5wYXJlbnRz
KCIudWktbWVudSIpLmxlbmd0aCYmY2xlYXJUaW1lb3V0KHRoaXMudGltZXIpKSl9LCJtb3VzZWVu
dGVyIC51aS1tZW51LWl0ZW0iOmZ1bmN0aW9uKGUpe2lmKCF0aGlzLnByZXZpb3VzRmlsdGVyKXt2
YXIgaT10KGUudGFyZ2V0KS5jbG9zZXN0KCIudWktbWVudS1pdGVtIikscz10KGUuY3VycmVudFRh
cmdldCk7aVswXT09PXNbMF0mJih0aGlzLl9yZW1vdmVDbGFzcyhzLnNpYmxpbmdzKCkuY2hpbGRy
ZW4oIi51aS1zdGF0ZS1hY3RpdmUiKSxudWxsLCJ1aS1zdGF0ZS1hY3RpdmUiKSx0aGlzLmZvY3Vz
KGUscykpfX0sbW91c2VsZWF2ZToiY29sbGFwc2VBbGwiLCJtb3VzZWxlYXZlIC51aS1tZW51Ijoi
Y29sbGFwc2VBbGwiLGZvY3VzOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5hY3RpdmV8fHRoaXMu
ZWxlbWVudC5maW5kKHRoaXMub3B0aW9ucy5pdGVtcykuZXEoMCk7ZXx8dGhpcy5mb2N1cyh0LGkp
fSxibHVyOmZ1bmN0aW9uKGUpe3RoaXMuX2RlbGF5KGZ1bmN0aW9uKCl7dmFyIGk9IXQuY29udGFp
bnModGhpcy5lbGVtZW50WzBdLHQudWkuc2FmZUFjdGl2ZUVsZW1lbnQodGhpcy5kb2N1bWVudFsw
XSkpO2kmJnRoaXMuY29sbGFwc2VBbGwoZSl9KX0sa2V5ZG93bjoiX2tleWRvd24ifSksdGhpcy5y
ZWZyZXNoKCksdGhpcy5fb24odGhpcy5kb2N1bWVudCx7Y2xpY2s6ZnVuY3Rpb24odCl7dGhpcy5f
Y2xvc2VPbkRvY3VtZW50Q2xpY2sodCkmJnRoaXMuY29sbGFwc2VBbGwodCksdGhpcy5tb3VzZUhh
bmRsZWQ9ITF9fSl9LF9kZXN0cm95OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5lbGVtZW50LmZpbmQo
Ii51aS1tZW51LWl0ZW0iKS5yZW1vdmVBdHRyKCJyb2xlIGFyaWEtZGlzYWJsZWQiKSxpPWUuY2hp
bGRyZW4oIi51aS1tZW51LWl0ZW0td3JhcHBlciIpLnJlbW92ZVVuaXF1ZUlkKCkucmVtb3ZlQXR0
cigidGFiSW5kZXggcm9sZSBhcmlhLWhhc3BvcHVwIik7dGhpcy5lbGVtZW50LnJlbW92ZUF0dHIo
ImFyaWEtYWN0aXZlZGVzY2VuZGFudCIpLmZpbmQoIi51aS1tZW51IikuYWRkQmFjaygpLnJlbW92
ZUF0dHIoInJvbGUgYXJpYS1sYWJlbGxlZGJ5IGFyaWEtZXhwYW5kZWQgYXJpYS1oaWRkZW4gYXJp
YS1kaXNhYmxlZCB0YWJJbmRleCIpLnJlbW92ZVVuaXF1ZUlkKCkuc2hvdygpLGkuY2hpbGRyZW4o
KS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGU9dCh0aGlzKTtlLmRhdGEoInVpLW1lbnUtc3VibWVudS1j
YXJldCIpJiZlLnJlbW92ZSgpfSl9LF9rZXlkb3duOmZ1bmN0aW9uKGUpe3ZhciBpLHMsbixvLGE9
ITA7c3dpdGNoKGUua2V5Q29kZSl7Y2FzZSB0LnVpLmtleUNvZGUuUEFHRV9VUDp0aGlzLnByZXZp
b3VzUGFnZShlKTticmVhaztjYXNlIHQudWkua2V5Q29kZS5QQUdFX0RPV046dGhpcy5uZXh0UGFn
ZShlKTticmVhaztjYXNlIHQudWkua2V5Q29kZS5IT01FOnRoaXMuX21vdmUoImZpcnN0IiwiZmly
c3QiLGUpO2JyZWFrO2Nhc2UgdC51aS5rZXlDb2RlLkVORDp0aGlzLl9tb3ZlKCJsYXN0IiwibGFz
dCIsZSk7YnJlYWs7Y2FzZSB0LnVpLmtleUNvZGUuVVA6dGhpcy5wcmV2aW91cyhlKTticmVhaztj
YXNlIHQudWkua2V5Q29kZS5ET1dOOnRoaXMubmV4dChlKTticmVhaztjYXNlIHQudWkua2V5Q29k
ZS5MRUZUOnRoaXMuY29sbGFwc2UoZSk7YnJlYWs7Y2FzZSB0LnVpLmtleUNvZGUuUklHSFQ6dGhp
cy5hY3RpdmUmJiF0aGlzLmFjdGl2ZS5pcygiLnVpLXN0YXRlLWRpc2FibGVkIikmJnRoaXMuZXhw
YW5kKGUpO2JyZWFrO2Nhc2UgdC51aS5rZXlDb2RlLkVOVEVSOmNhc2UgdC51aS5rZXlDb2RlLlNQ
QUNFOnRoaXMuX2FjdGl2YXRlKGUpO2JyZWFrO2Nhc2UgdC51aS5rZXlDb2RlLkVTQ0FQRTp0aGlz
LmNvbGxhcHNlKGUpO2JyZWFrO2RlZmF1bHQ6YT0hMSxzPXRoaXMucHJldmlvdXNGaWx0ZXJ8fCIi
LG89ITEsbj1lLmtleUNvZGU+PTk2JiYxMDU+PWUua2V5Q29kZT8iIisoZS5rZXlDb2RlLTk2KTpT
dHJpbmcuZnJvbUNoYXJDb2RlKGUua2V5Q29kZSksY2xlYXJUaW1lb3V0KHRoaXMuZmlsdGVyVGlt
ZXIpLG49PT1zP289ITA6bj1zK24saT10aGlzLl9maWx0ZXJNZW51SXRlbXMobiksaT1vJiYtMSE9
PWkuaW5kZXgodGhpcy5hY3RpdmUubmV4dCgpKT90aGlzLmFjdGl2ZS5uZXh0QWxsKCIudWktbWVu
dS1pdGVtIik6aSxpLmxlbmd0aHx8KG49U3RyaW5nLmZyb21DaGFyQ29kZShlLmtleUNvZGUpLGk9
dGhpcy5fZmlsdGVyTWVudUl0ZW1zKG4pKSxpLmxlbmd0aD8odGhpcy5mb2N1cyhlLGkpLHRoaXMu
cHJldmlvdXNGaWx0ZXI9bix0aGlzLmZpbHRlclRpbWVyPXRoaXMuX2RlbGF5KGZ1bmN0aW9uKCl7
ZGVsZXRlIHRoaXMucHJldmlvdXNGaWx0ZXJ9LDFlMykpOmRlbGV0ZSB0aGlzLnByZXZpb3VzRmls
dGVyfWEmJmUucHJldmVudERlZmF1bHQoKX0sX2FjdGl2YXRlOmZ1bmN0aW9uKHQpe3RoaXMuYWN0
aXZlJiYhdGhpcy5hY3RpdmUuaXMoIi51aS1zdGF0ZS1kaXNhYmxlZCIpJiYodGhpcy5hY3RpdmUu
Y2hpbGRyZW4oIlthcmlhLWhhc3BvcHVwPSd0cnVlJ10iKS5sZW5ndGg/dGhpcy5leHBhbmQodCk6
dGhpcy5zZWxlY3QodCkpfSxyZWZyZXNoOmZ1bmN0aW9uKCl7dmFyIGUsaSxzLG4sbyxhPXRoaXMs
cj10aGlzLm9wdGlvbnMuaWNvbnMuc3VibWVudSxoPXRoaXMuZWxlbWVudC5maW5kKHRoaXMub3B0
aW9ucy5tZW51cyk7dGhpcy5fdG9nZ2xlQ2xhc3MoInVpLW1lbnUtaWNvbnMiLG51bGwsISF0aGlz
LmVsZW1lbnQuZmluZCgiLnVpLWljb24iKS5sZW5ndGgpLHM9aC5maWx0ZXIoIjpub3QoLnVpLW1l
bnUpIikuaGlkZSgpLmF0dHIoe3JvbGU6dGhpcy5vcHRpb25zLnJvbGUsImFyaWEtaGlkZGVuIjoi
dHJ1ZSIsImFyaWEtZXhwYW5kZWQiOiJmYWxzZSJ9KS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGU9dCh0
aGlzKSxpPWUucHJldigpLHM9dCgiPHNwYW4+IikuZGF0YSgidWktbWVudS1zdWJtZW51LWNhcmV0
IiwhMCk7YS5fYWRkQ2xhc3MocywidWktbWVudS1pY29uIiwidWktaWNvbiAiK3IpLGkuYXR0cigi
YXJpYS1oYXNwb3B1cCIsInRydWUiKS5wcmVwZW5kKHMpLGUuYXR0cigiYXJpYS1sYWJlbGxlZGJ5
IixpLmF0dHIoImlkIikpfSksdGhpcy5fYWRkQ2xhc3MocywidWktbWVudSIsInVpLXdpZGdldCB1
aS13aWRnZXQtY29udGVudCB1aS1mcm9udCIpLGU9aC5hZGQodGhpcy5lbGVtZW50KSxpPWUuZmlu
ZCh0aGlzLm9wdGlvbnMuaXRlbXMpLGkubm90KCIudWktbWVudS1pdGVtIikuZWFjaChmdW5jdGlv
bigpe3ZhciBlPXQodGhpcyk7YS5faXNEaXZpZGVyKGUpJiZhLl9hZGRDbGFzcyhlLCJ1aS1tZW51
LWRpdmlkZXIiLCJ1aS13aWRnZXQtY29udGVudCIpfSksbj1pLm5vdCgiLnVpLW1lbnUtaXRlbSwg
LnVpLW1lbnUtZGl2aWRlciIpLG89bi5jaGlsZHJlbigpLm5vdCgiLnVpLW1lbnUiKS51bmlxdWVJ
ZCgpLmF0dHIoe3RhYkluZGV4Oi0xLHJvbGU6dGhpcy5faXRlbVJvbGUoKX0pLHRoaXMuX2FkZENs
YXNzKG4sInVpLW1lbnUtaXRlbSIpLl9hZGRDbGFzcyhvLCJ1aS1tZW51LWl0ZW0td3JhcHBlciIp
LGkuZmlsdGVyKCIudWktc3RhdGUtZGlzYWJsZWQiKS5hdHRyKCJhcmlhLWRpc2FibGVkIiwidHJ1
ZSIpLHRoaXMuYWN0aXZlJiYhdC5jb250YWlucyh0aGlzLmVsZW1lbnRbMF0sdGhpcy5hY3RpdmVb
MF0pJiZ0aGlzLmJsdXIoKX0sX2l0ZW1Sb2xlOmZ1bmN0aW9uKCl7cmV0dXJue21lbnU6Im1lbnVp
dGVtIixsaXN0Ym94OiJvcHRpb24ifVt0aGlzLm9wdGlvbnMucm9sZV19LF9zZXRPcHRpb246ZnVu
Y3Rpb24odCxlKXtpZigiaWNvbnMiPT09dCl7dmFyIGk9dGhpcy5lbGVtZW50LmZpbmQoIi51aS1t
ZW51LWljb24iKTt0aGlzLl9yZW1vdmVDbGFzcyhpLG51bGwsdGhpcy5vcHRpb25zLmljb25zLnN1
Ym1lbnUpLl9hZGRDbGFzcyhpLG51bGwsZS5zdWJtZW51KX10aGlzLl9zdXBlcih0LGUpfSxfc2V0
T3B0aW9uRGlzYWJsZWQ6ZnVuY3Rpb24odCl7dGhpcy5fc3VwZXIodCksdGhpcy5lbGVtZW50LmF0
dHIoImFyaWEtZGlzYWJsZWQiLHQrIiIpLHRoaXMuX3RvZ2dsZUNsYXNzKG51bGwsInVpLXN0YXRl
LWRpc2FibGVkIiwhIXQpfSxmb2N1czpmdW5jdGlvbih0LGUpe3ZhciBpLHMsbjt0aGlzLmJsdXIo
dCx0JiYiZm9jdXMiPT09dC50eXBlKSx0aGlzLl9zY3JvbGxJbnRvVmlldyhlKSx0aGlzLmFjdGl2
ZT1lLmZpcnN0KCkscz10aGlzLmFjdGl2ZS5jaGlsZHJlbigiLnVpLW1lbnUtaXRlbS13cmFwcGVy
IiksdGhpcy5fYWRkQ2xhc3MocyxudWxsLCJ1aS1zdGF0ZS1hY3RpdmUiKSx0aGlzLm9wdGlvbnMu
cm9sZSYmdGhpcy5lbGVtZW50LmF0dHIoImFyaWEtYWN0aXZlZGVzY2VuZGFudCIscy5hdHRyKCJp
ZCIpKSxuPXRoaXMuYWN0aXZlLnBhcmVudCgpLmNsb3Nlc3QoIi51aS1tZW51LWl0ZW0iKS5jaGls
ZHJlbigiLnVpLW1lbnUtaXRlbS13cmFwcGVyIiksdGhpcy5fYWRkQ2xhc3MobixudWxsLCJ1aS1z
dGF0ZS1hY3RpdmUiKSx0JiYia2V5ZG93biI9PT10LnR5cGU/dGhpcy5fY2xvc2UoKTp0aGlzLnRp
bWVyPXRoaXMuX2RlbGF5KGZ1bmN0aW9uKCl7dGhpcy5fY2xvc2UoKX0sdGhpcy5kZWxheSksaT1l
LmNoaWxkcmVuKCIudWktbWVudSIpLGkubGVuZ3RoJiZ0JiYvXm1vdXNlLy50ZXN0KHQudHlwZSkm
JnRoaXMuX3N0YXJ0T3BlbmluZyhpKSx0aGlzLmFjdGl2ZU1lbnU9ZS5wYXJlbnQoKSx0aGlzLl90
cmlnZ2VyKCJmb2N1cyIsdCx7aXRlbTplfSl9LF9zY3JvbGxJbnRvVmlldzpmdW5jdGlvbihlKXt2
YXIgaSxzLG4sbyxhLHI7dGhpcy5faGFzU2Nyb2xsKCkmJihpPXBhcnNlRmxvYXQodC5jc3ModGhp
cy5hY3RpdmVNZW51WzBdLCJib3JkZXJUb3BXaWR0aCIpKXx8MCxzPXBhcnNlRmxvYXQodC5jc3Mo
dGhpcy5hY3RpdmVNZW51WzBdLCJwYWRkaW5nVG9wIikpfHwwLG49ZS5vZmZzZXQoKS50b3AtdGhp
cy5hY3RpdmVNZW51Lm9mZnNldCgpLnRvcC1pLXMsbz10aGlzLmFjdGl2ZU1lbnUuc2Nyb2xsVG9w
KCksYT10aGlzLmFjdGl2ZU1lbnUuaGVpZ2h0KCkscj1lLm91dGVySGVpZ2h0KCksMD5uP3RoaXMu
YWN0aXZlTWVudS5zY3JvbGxUb3AobytuKTpuK3I+YSYmdGhpcy5hY3RpdmVNZW51LnNjcm9sbFRv
cChvK24tYStyKSl9LGJsdXI6ZnVuY3Rpb24odCxlKXtlfHxjbGVhclRpbWVvdXQodGhpcy50aW1l
ciksdGhpcy5hY3RpdmUmJih0aGlzLl9yZW1vdmVDbGFzcyh0aGlzLmFjdGl2ZS5jaGlsZHJlbigi
LnVpLW1lbnUtaXRlbS13cmFwcGVyIiksbnVsbCwidWktc3RhdGUtYWN0aXZlIiksdGhpcy5fdHJp
Z2dlcigiYmx1ciIsdCx7aXRlbTp0aGlzLmFjdGl2ZX0pLHRoaXMuYWN0aXZlPW51bGwpfSxfc3Rh
cnRPcGVuaW5nOmZ1bmN0aW9uKHQpe2NsZWFyVGltZW91dCh0aGlzLnRpbWVyKSwidHJ1ZSI9PT10
LmF0dHIoImFyaWEtaGlkZGVuIikmJih0aGlzLnRpbWVyPXRoaXMuX2RlbGF5KGZ1bmN0aW9uKCl7
dGhpcy5fY2xvc2UoKSx0aGlzLl9vcGVuKHQpfSx0aGlzLmRlbGF5KSl9LF9vcGVuOmZ1bmN0aW9u
KGUpe3ZhciBpPXQuZXh0ZW5kKHtvZjp0aGlzLmFjdGl2ZX0sdGhpcy5vcHRpb25zLnBvc2l0aW9u
KTtjbGVhclRpbWVvdXQodGhpcy50aW1lciksdGhpcy5lbGVtZW50LmZpbmQoIi51aS1tZW51Iiku
bm90KGUucGFyZW50cygiLnVpLW1lbnUiKSkuaGlkZSgpLmF0dHIoImFyaWEtaGlkZGVuIiwidHJ1
ZSIpLGUuc2hvdygpLnJlbW92ZUF0dHIoImFyaWEtaGlkZGVuIikuYXR0cigiYXJpYS1leHBhbmRl
ZCIsInRydWUiKS5wb3NpdGlvbihpKX0sY29sbGFwc2VBbGw6ZnVuY3Rpb24oZSxpKXtjbGVhclRp
bWVvdXQodGhpcy50aW1lciksdGhpcy50aW1lcj10aGlzLl9kZWxheShmdW5jdGlvbigpe3ZhciBz
PWk/dGhpcy5lbGVtZW50OnQoZSYmZS50YXJnZXQpLmNsb3Nlc3QodGhpcy5lbGVtZW50LmZpbmQo
Ii51aS1tZW51IikpO3MubGVuZ3RofHwocz10aGlzLmVsZW1lbnQpLHRoaXMuX2Nsb3NlKHMpLHRo
aXMuYmx1cihlKSx0aGlzLl9yZW1vdmVDbGFzcyhzLmZpbmQoIi51aS1zdGF0ZS1hY3RpdmUiKSxu
dWxsLCJ1aS1zdGF0ZS1hY3RpdmUiKSx0aGlzLmFjdGl2ZU1lbnU9c30sdGhpcy5kZWxheSl9LF9j
bG9zZTpmdW5jdGlvbih0KXt0fHwodD10aGlzLmFjdGl2ZT90aGlzLmFjdGl2ZS5wYXJlbnQoKTp0
aGlzLmVsZW1lbnQpLHQuZmluZCgiLnVpLW1lbnUiKS5oaWRlKCkuYXR0cigiYXJpYS1oaWRkZW4i
LCJ0cnVlIikuYXR0cigiYXJpYS1leHBhbmRlZCIsImZhbHNlIil9LF9jbG9zZU9uRG9jdW1lbnRD
bGljazpmdW5jdGlvbihlKXtyZXR1cm4hdChlLnRhcmdldCkuY2xvc2VzdCgiLnVpLW1lbnUiKS5s
ZW5ndGh9LF9pc0RpdmlkZXI6ZnVuY3Rpb24odCl7cmV0dXJuIS9bXlwtXHUyMDE0XHUyMDEzXHNd
Ly50ZXN0KHQudGV4dCgpKX0sY29sbGFwc2U6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5hY3RpdmUm
JnRoaXMuYWN0aXZlLnBhcmVudCgpLmNsb3Nlc3QoIi51aS1tZW51LWl0ZW0iLHRoaXMuZWxlbWVu
dCk7ZSYmZS5sZW5ndGgmJih0aGlzLl9jbG9zZSgpLHRoaXMuZm9jdXModCxlKSl9LGV4cGFuZDpm
dW5jdGlvbih0KXt2YXIgZT10aGlzLmFjdGl2ZSYmdGhpcy5hY3RpdmUuY2hpbGRyZW4oIi51aS1t
ZW51ICIpLmZpbmQodGhpcy5vcHRpb25zLml0ZW1zKS5maXJzdCgpO2UmJmUubGVuZ3RoJiYodGhp
cy5fb3BlbihlLnBhcmVudCgpKSx0aGlzLl9kZWxheShmdW5jdGlvbigpe3RoaXMuZm9jdXModCxl
KX0pKX0sbmV4dDpmdW5jdGlvbih0KXt0aGlzLl9tb3ZlKCJuZXh0IiwiZmlyc3QiLHQpfSxwcmV2
aW91czpmdW5jdGlvbih0KXt0aGlzLl9tb3ZlKCJwcmV2IiwibGFzdCIsdCl9LGlzRmlyc3RJdGVt
OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYWN0aXZlJiYhdGhpcy5hY3RpdmUucHJldkFsbCgiLnVp
LW1lbnUtaXRlbSIpLmxlbmd0aH0saXNMYXN0SXRlbTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmFj
dGl2ZSYmIXRoaXMuYWN0aXZlLm5leHRBbGwoIi51aS1tZW51LWl0ZW0iKS5sZW5ndGh9LF9tb3Zl
OmZ1bmN0aW9uKHQsZSxpKXt2YXIgczt0aGlzLmFjdGl2ZSYmKHM9ImZpcnN0Ij09PXR8fCJsYXN0
Ij09PXQ/dGhpcy5hY3RpdmVbImZpcnN0Ij09PXQ/InByZXZBbGwiOiJuZXh0QWxsIl0oIi51aS1t
ZW51LWl0ZW0iKS5lcSgtMSk6dGhpcy5hY3RpdmVbdCsiQWxsIl0oIi51aS1tZW51LWl0ZW0iKS5l
cSgwKSkscyYmcy5sZW5ndGgmJnRoaXMuYWN0aXZlfHwocz10aGlzLmFjdGl2ZU1lbnUuZmluZCh0
aGlzLm9wdGlvbnMuaXRlbXMpW2VdKCkpLHRoaXMuZm9jdXMoaSxzKX0sbmV4dFBhZ2U6ZnVuY3Rp
b24oZSl7dmFyIGkscyxuO3JldHVybiB0aGlzLmFjdGl2ZT8odGhpcy5pc0xhc3RJdGVtKCl8fCh0
aGlzLl9oYXNTY3JvbGwoKT8ocz10aGlzLmFjdGl2ZS5vZmZzZXQoKS50b3Asbj10aGlzLmVsZW1l
bnQuaGVpZ2h0KCksdGhpcy5hY3RpdmUubmV4dEFsbCgiLnVpLW1lbnUtaXRlbSIpLmVhY2goZnVu
Y3Rpb24oKXtyZXR1cm4gaT10KHRoaXMpLDA+aS5vZmZzZXQoKS50b3Atcy1ufSksdGhpcy5mb2N1
cyhlLGkpKTp0aGlzLmZvY3VzKGUsdGhpcy5hY3RpdmVNZW51LmZpbmQodGhpcy5vcHRpb25zLml0
ZW1zKVt0aGlzLmFjdGl2ZT8ibGFzdCI6ImZpcnN0Il0oKSkpLHZvaWQgMCk6KHRoaXMubmV4dChl
KSx2b2lkIDApfSxwcmV2aW91c1BhZ2U6ZnVuY3Rpb24oZSl7dmFyIGkscyxuO3JldHVybiB0aGlz
LmFjdGl2ZT8odGhpcy5pc0ZpcnN0SXRlbSgpfHwodGhpcy5faGFzU2Nyb2xsKCk/KHM9dGhpcy5h
Y3RpdmUub2Zmc2V0KCkudG9wLG49dGhpcy5lbGVtZW50LmhlaWdodCgpLHRoaXMuYWN0aXZlLnBy
ZXZBbGwoIi51aS1tZW51LWl0ZW0iKS5lYWNoKGZ1bmN0aW9uKCl7cmV0dXJuIGk9dCh0aGlzKSxp
Lm9mZnNldCgpLnRvcC1zK24+MH0pLHRoaXMuZm9jdXMoZSxpKSk6dGhpcy5mb2N1cyhlLHRoaXMu
YWN0aXZlTWVudS5maW5kKHRoaXMub3B0aW9ucy5pdGVtcykuZmlyc3QoKSkpLHZvaWQgMCk6KHRo
aXMubmV4dChlKSx2b2lkIDApfSxfaGFzU2Nyb2xsOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWxl
bWVudC5vdXRlckhlaWdodCgpPHRoaXMuZWxlbWVudC5wcm9wKCJzY3JvbGxIZWlnaHQiKX0sc2Vs
ZWN0OmZ1bmN0aW9uKGUpe3RoaXMuYWN0aXZlPXRoaXMuYWN0aXZlfHx0KGUudGFyZ2V0KS5jbG9z
ZXN0KCIudWktbWVudS1pdGVtIik7dmFyIGk9e2l0ZW06dGhpcy5hY3RpdmV9O3RoaXMuYWN0aXZl
LmhhcygiLnVpLW1lbnUiKS5sZW5ndGh8fHRoaXMuY29sbGFwc2VBbGwoZSwhMCksdGhpcy5fdHJp
Z2dlcigic2VsZWN0IixlLGkpfSxfZmlsdGVyTWVudUl0ZW1zOmZ1bmN0aW9uKGUpe3ZhciBpPWUu
cmVwbGFjZSgvW1wtXFtcXXt9KCkqKz8uLFxcXF4kfCNcc10vZywiXFwkJiIpLHM9UmVnRXhwKCJe
IitpLCJpIik7cmV0dXJuIHRoaXMuYWN0aXZlTWVudS5maW5kKHRoaXMub3B0aW9ucy5pdGVtcyku
ZmlsdGVyKCIudWktbWVudS1pdGVtIikuZmlsdGVyKGZ1bmN0aW9uKCl7cmV0dXJuIHMudGVzdCh0
LnRyaW0odCh0aGlzKS5jaGlsZHJlbigiLnVpLW1lbnUtaXRlbS13cmFwcGVyIikudGV4dCgpKSl9
KX19KSx0LndpZGdldCgidWkuYXV0b2NvbXBsZXRlIix7dmVyc2lvbjoiMS4xMi4xIixkZWZhdWx0
RWxlbWVudDoiPGlucHV0PiIsb3B0aW9uczp7YXBwZW5kVG86bnVsbCxhdXRvRm9jdXM6ITEsZGVs
YXk6MzAwLG1pbkxlbmd0aDoxLHBvc2l0aW9uOntteToibGVmdCB0b3AiLGF0OiJsZWZ0IGJvdHRv
bSIsY29sbGlzaW9uOiJub25lIn0sc291cmNlOm51bGwsY2hhbmdlOm51bGwsY2xvc2U6bnVsbCxm
b2N1czpudWxsLG9wZW46bnVsbCxyZXNwb25zZTpudWxsLHNlYXJjaDpudWxsLHNlbGVjdDpudWxs
fSxyZXF1ZXN0SW5kZXg6MCxwZW5kaW5nOjAsX2NyZWF0ZTpmdW5jdGlvbigpe3ZhciBlLGkscyxu
PXRoaXMuZWxlbWVudFswXS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpLG89InRleHRhcmVhIj09PW4s
YT0iaW5wdXQiPT09bjsKK3RoaXMuaXNNdWx0aUxpbmU9b3x8IWEmJnRoaXMuX2lzQ29udGVudEVk
aXRhYmxlKHRoaXMuZWxlbWVudCksdGhpcy52YWx1ZU1ldGhvZD10aGlzLmVsZW1lbnRbb3x8YT8i
dmFsIjoidGV4dCJdLHRoaXMuaXNOZXdNZW51PSEwLHRoaXMuX2FkZENsYXNzKCJ1aS1hdXRvY29t
cGxldGUtaW5wdXQiKSx0aGlzLmVsZW1lbnQuYXR0cigiYXV0b2NvbXBsZXRlIiwib2ZmIiksdGhp
cy5fb24odGhpcy5lbGVtZW50LHtrZXlkb3duOmZ1bmN0aW9uKG4pe2lmKHRoaXMuZWxlbWVudC5w
cm9wKCJyZWFkT25seSIpKXJldHVybiBlPSEwLHM9ITAsaT0hMCx2b2lkIDA7ZT0hMSxzPSExLGk9
ITE7dmFyIG89dC51aS5rZXlDb2RlO3N3aXRjaChuLmtleUNvZGUpe2Nhc2Ugby5QQUdFX1VQOmU9
ITAsdGhpcy5fbW92ZSgicHJldmlvdXNQYWdlIixuKTticmVhaztjYXNlIG8uUEFHRV9ET1dOOmU9
ITAsdGhpcy5fbW92ZSgibmV4dFBhZ2UiLG4pO2JyZWFrO2Nhc2Ugby5VUDplPSEwLHRoaXMuX2tl
eUV2ZW50KCJwcmV2aW91cyIsbik7YnJlYWs7Y2FzZSBvLkRPV046ZT0hMCx0aGlzLl9rZXlFdmVu
dCgibmV4dCIsbik7YnJlYWs7Y2FzZSBvLkVOVEVSOnRoaXMubWVudS5hY3RpdmUmJihlPSEwLG4u
cHJldmVudERlZmF1bHQoKSx0aGlzLm1lbnUuc2VsZWN0KG4pKTticmVhaztjYXNlIG8uVEFCOnRo
aXMubWVudS5hY3RpdmUmJnRoaXMubWVudS5zZWxlY3Qobik7YnJlYWs7Y2FzZSBvLkVTQ0FQRTp0
aGlzLm1lbnUuZWxlbWVudC5pcygiOnZpc2libGUiKSYmKHRoaXMuaXNNdWx0aUxpbmV8fHRoaXMu
X3ZhbHVlKHRoaXMudGVybSksdGhpcy5jbG9zZShuKSxuLnByZXZlbnREZWZhdWx0KCkpO2JyZWFr
O2RlZmF1bHQ6aT0hMCx0aGlzLl9zZWFyY2hUaW1lb3V0KG4pfX0sa2V5cHJlc3M6ZnVuY3Rpb24o
cyl7aWYoZSlyZXR1cm4gZT0hMSwoIXRoaXMuaXNNdWx0aUxpbmV8fHRoaXMubWVudS5lbGVtZW50
LmlzKCI6dmlzaWJsZSIpKSYmcy5wcmV2ZW50RGVmYXVsdCgpLHZvaWQgMDtpZighaSl7dmFyIG49
dC51aS5rZXlDb2RlO3N3aXRjaChzLmtleUNvZGUpe2Nhc2Ugbi5QQUdFX1VQOnRoaXMuX21vdmUo
InByZXZpb3VzUGFnZSIscyk7YnJlYWs7Y2FzZSBuLlBBR0VfRE9XTjp0aGlzLl9tb3ZlKCJuZXh0
UGFnZSIscyk7YnJlYWs7Y2FzZSBuLlVQOnRoaXMuX2tleUV2ZW50KCJwcmV2aW91cyIscyk7YnJl
YWs7Y2FzZSBuLkRPV046dGhpcy5fa2V5RXZlbnQoIm5leHQiLHMpfX19LGlucHV0OmZ1bmN0aW9u
KHQpe3JldHVybiBzPyhzPSExLHQucHJldmVudERlZmF1bHQoKSx2b2lkIDApOih0aGlzLl9zZWFy
Y2hUaW1lb3V0KHQpLHZvaWQgMCl9LGZvY3VzOmZ1bmN0aW9uKCl7dGhpcy5zZWxlY3RlZEl0ZW09
bnVsbCx0aGlzLnByZXZpb3VzPXRoaXMuX3ZhbHVlKCl9LGJsdXI6ZnVuY3Rpb24odCl7cmV0dXJu
IHRoaXMuY2FuY2VsQmx1cj8oZGVsZXRlIHRoaXMuY2FuY2VsQmx1cix2b2lkIDApOihjbGVhclRp
bWVvdXQodGhpcy5zZWFyY2hpbmcpLHRoaXMuY2xvc2UodCksdGhpcy5fY2hhbmdlKHQpLHZvaWQg
MCl9fSksdGhpcy5faW5pdFNvdXJjZSgpLHRoaXMubWVudT10KCI8dWw+IikuYXBwZW5kVG8odGhp
cy5fYXBwZW5kVG8oKSkubWVudSh7cm9sZTpudWxsfSkuaGlkZSgpLm1lbnUoImluc3RhbmNlIiks
dGhpcy5fYWRkQ2xhc3ModGhpcy5tZW51LmVsZW1lbnQsInVpLWF1dG9jb21wbGV0ZSIsInVpLWZy
b250IiksdGhpcy5fb24odGhpcy5tZW51LmVsZW1lbnQse21vdXNlZG93bjpmdW5jdGlvbihlKXtl
LnByZXZlbnREZWZhdWx0KCksdGhpcy5jYW5jZWxCbHVyPSEwLHRoaXMuX2RlbGF5KGZ1bmN0aW9u
KCl7ZGVsZXRlIHRoaXMuY2FuY2VsQmx1cix0aGlzLmVsZW1lbnRbMF0hPT10LnVpLnNhZmVBY3Rp
dmVFbGVtZW50KHRoaXMuZG9jdW1lbnRbMF0pJiZ0aGlzLmVsZW1lbnQudHJpZ2dlcigiZm9jdXMi
KX0pfSxtZW51Zm9jdXM6ZnVuY3Rpb24oZSxpKXt2YXIgcyxuO3JldHVybiB0aGlzLmlzTmV3TWVu
dSYmKHRoaXMuaXNOZXdNZW51PSExLGUub3JpZ2luYWxFdmVudCYmL15tb3VzZS8udGVzdChlLm9y
aWdpbmFsRXZlbnQudHlwZSkpPyh0aGlzLm1lbnUuYmx1cigpLHRoaXMuZG9jdW1lbnQub25lKCJt
b3VzZW1vdmUiLGZ1bmN0aW9uKCl7dChlLnRhcmdldCkudHJpZ2dlcihlLm9yaWdpbmFsRXZlbnQp
fSksdm9pZCAwKToobj1pLml0ZW0uZGF0YSgidWktYXV0b2NvbXBsZXRlLWl0ZW0iKSwhMSE9PXRo
aXMuX3RyaWdnZXIoImZvY3VzIixlLHtpdGVtOm59KSYmZS5vcmlnaW5hbEV2ZW50JiYvXmtleS8u
dGVzdChlLm9yaWdpbmFsRXZlbnQudHlwZSkmJnRoaXMuX3ZhbHVlKG4udmFsdWUpLHM9aS5pdGVt
LmF0dHIoImFyaWEtbGFiZWwiKXx8bi52YWx1ZSxzJiZ0LnRyaW0ocykubGVuZ3RoJiYodGhpcy5s
aXZlUmVnaW9uLmNoaWxkcmVuKCkuaGlkZSgpLHQoIjxkaXY+IikudGV4dChzKS5hcHBlbmRUbyh0
aGlzLmxpdmVSZWdpb24pKSx2b2lkIDApfSxtZW51c2VsZWN0OmZ1bmN0aW9uKGUsaSl7dmFyIHM9
aS5pdGVtLmRhdGEoInVpLWF1dG9jb21wbGV0ZS1pdGVtIiksbj10aGlzLnByZXZpb3VzO3RoaXMu
ZWxlbWVudFswXSE9PXQudWkuc2FmZUFjdGl2ZUVsZW1lbnQodGhpcy5kb2N1bWVudFswXSkmJih0
aGlzLmVsZW1lbnQudHJpZ2dlcigiZm9jdXMiKSx0aGlzLnByZXZpb3VzPW4sdGhpcy5fZGVsYXko
ZnVuY3Rpb24oKXt0aGlzLnByZXZpb3VzPW4sdGhpcy5zZWxlY3RlZEl0ZW09c30pKSwhMSE9PXRo
aXMuX3RyaWdnZXIoInNlbGVjdCIsZSx7aXRlbTpzfSkmJnRoaXMuX3ZhbHVlKHMudmFsdWUpLHRo
aXMudGVybT10aGlzLl92YWx1ZSgpLHRoaXMuY2xvc2UoZSksdGhpcy5zZWxlY3RlZEl0ZW09c319
KSx0aGlzLmxpdmVSZWdpb249dCgiPGRpdj4iLHtyb2xlOiJzdGF0dXMiLCJhcmlhLWxpdmUiOiJh
c3NlcnRpdmUiLCJhcmlhLXJlbGV2YW50IjoiYWRkaXRpb25zIn0pLmFwcGVuZFRvKHRoaXMuZG9j
dW1lbnRbMF0uYm9keSksdGhpcy5fYWRkQ2xhc3ModGhpcy5saXZlUmVnaW9uLG51bGwsInVpLWhl
bHBlci1oaWRkZW4tYWNjZXNzaWJsZSIpLHRoaXMuX29uKHRoaXMud2luZG93LHtiZWZvcmV1bmxv
YWQ6ZnVuY3Rpb24oKXt0aGlzLmVsZW1lbnQucmVtb3ZlQXR0cigiYXV0b2NvbXBsZXRlIil9fSl9
LF9kZXN0cm95OmZ1bmN0aW9uKCl7Y2xlYXJUaW1lb3V0KHRoaXMuc2VhcmNoaW5nKSx0aGlzLmVs
ZW1lbnQucmVtb3ZlQXR0cigiYXV0b2NvbXBsZXRlIiksdGhpcy5tZW51LmVsZW1lbnQucmVtb3Zl
KCksdGhpcy5saXZlUmVnaW9uLnJlbW92ZSgpfSxfc2V0T3B0aW9uOmZ1bmN0aW9uKHQsZSl7dGhp
cy5fc3VwZXIodCxlKSwic291cmNlIj09PXQmJnRoaXMuX2luaXRTb3VyY2UoKSwiYXBwZW5kVG8i
PT09dCYmdGhpcy5tZW51LmVsZW1lbnQuYXBwZW5kVG8odGhpcy5fYXBwZW5kVG8oKSksImRpc2Fi
bGVkIj09PXQmJmUmJnRoaXMueGhyJiZ0aGlzLnhoci5hYm9ydCgpfSxfaXNFdmVudFRhcmdldElu
V2lkZ2V0OmZ1bmN0aW9uKGUpe3ZhciBpPXRoaXMubWVudS5lbGVtZW50WzBdO3JldHVybiBlLnRh
cmdldD09PXRoaXMuZWxlbWVudFswXXx8ZS50YXJnZXQ9PT1pfHx0LmNvbnRhaW5zKGksZS50YXJn
ZXQpfSxfY2xvc2VPbkNsaWNrT3V0c2lkZTpmdW5jdGlvbih0KXt0aGlzLl9pc0V2ZW50VGFyZ2V0
SW5XaWRnZXQodCl8fHRoaXMuY2xvc2UoKX0sX2FwcGVuZFRvOmZ1bmN0aW9uKCl7dmFyIGU9dGhp
cy5vcHRpb25zLmFwcGVuZFRvO3JldHVybiBlJiYoZT1lLmpxdWVyeXx8ZS5ub2RlVHlwZT90KGUp
OnRoaXMuZG9jdW1lbnQuZmluZChlKS5lcSgwKSksZSYmZVswXXx8KGU9dGhpcy5lbGVtZW50LmNs
b3Nlc3QoIi51aS1mcm9udCwgZGlhbG9nIikpLGUubGVuZ3RofHwoZT10aGlzLmRvY3VtZW50WzBd
LmJvZHkpLGV9LF9pbml0U291cmNlOmZ1bmN0aW9uKCl7dmFyIGUsaSxzPXRoaXM7dC5pc0FycmF5
KHRoaXMub3B0aW9ucy5zb3VyY2UpPyhlPXRoaXMub3B0aW9ucy5zb3VyY2UsdGhpcy5zb3VyY2U9
ZnVuY3Rpb24oaSxzKXtzKHQudWkuYXV0b2NvbXBsZXRlLmZpbHRlcihlLGkudGVybSkpfSk6InN0
cmluZyI9PXR5cGVvZiB0aGlzLm9wdGlvbnMuc291cmNlPyhpPXRoaXMub3B0aW9ucy5zb3VyY2Us
dGhpcy5zb3VyY2U9ZnVuY3Rpb24oZSxuKXtzLnhociYmcy54aHIuYWJvcnQoKSxzLnhocj10LmFq
YXgoe3VybDppLGRhdGE6ZSxkYXRhVHlwZToianNvbiIsc3VjY2VzczpmdW5jdGlvbih0KXtuKHQp
fSxlcnJvcjpmdW5jdGlvbigpe24oW10pfX0pfSk6dGhpcy5zb3VyY2U9dGhpcy5vcHRpb25zLnNv
dXJjZX0sX3NlYXJjaFRpbWVvdXQ6ZnVuY3Rpb24odCl7Y2xlYXJUaW1lb3V0KHRoaXMuc2VhcmNo
aW5nKSx0aGlzLnNlYXJjaGluZz10aGlzLl9kZWxheShmdW5jdGlvbigpe3ZhciBlPXRoaXMudGVy
bT09PXRoaXMuX3ZhbHVlKCksaT10aGlzLm1lbnUuZWxlbWVudC5pcygiOnZpc2libGUiKSxzPXQu
YWx0S2V5fHx0LmN0cmxLZXl8fHQubWV0YUtleXx8dC5zaGlmdEtleTsoIWV8fGUmJiFpJiYhcykm
Jih0aGlzLnNlbGVjdGVkSXRlbT1udWxsLHRoaXMuc2VhcmNoKG51bGwsdCkpfSx0aGlzLm9wdGlv
bnMuZGVsYXkpfSxzZWFyY2g6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD1udWxsIT10P3Q6dGhpcy5f
dmFsdWUoKSx0aGlzLnRlcm09dGhpcy5fdmFsdWUoKSx0Lmxlbmd0aDx0aGlzLm9wdGlvbnMubWlu
TGVuZ3RoP3RoaXMuY2xvc2UoZSk6dGhpcy5fdHJpZ2dlcigic2VhcmNoIixlKSE9PSExP3RoaXMu
X3NlYXJjaCh0KTp2b2lkIDB9LF9zZWFyY2g6ZnVuY3Rpb24odCl7dGhpcy5wZW5kaW5nKyssdGhp
cy5fYWRkQ2xhc3MoInVpLWF1dG9jb21wbGV0ZS1sb2FkaW5nIiksdGhpcy5jYW5jZWxTZWFyY2g9
ITEsdGhpcy5zb3VyY2Uoe3Rlcm06dH0sdGhpcy5fcmVzcG9uc2UoKSl9LF9yZXNwb25zZTpmdW5j
dGlvbigpe3ZhciBlPSsrdGhpcy5yZXF1ZXN0SW5kZXg7cmV0dXJuIHQucHJveHkoZnVuY3Rpb24o
dCl7ZT09PXRoaXMucmVxdWVzdEluZGV4JiZ0aGlzLl9fcmVzcG9uc2UodCksdGhpcy5wZW5kaW5n
LS0sdGhpcy5wZW5kaW5nfHx0aGlzLl9yZW1vdmVDbGFzcygidWktYXV0b2NvbXBsZXRlLWxvYWRp
bmciKX0sdGhpcyl9LF9fcmVzcG9uc2U6ZnVuY3Rpb24odCl7dCYmKHQ9dGhpcy5fbm9ybWFsaXpl
KHQpKSx0aGlzLl90cmlnZ2VyKCJyZXNwb25zZSIsbnVsbCx7Y29udGVudDp0fSksIXRoaXMub3B0
aW9ucy5kaXNhYmxlZCYmdCYmdC5sZW5ndGgmJiF0aGlzLmNhbmNlbFNlYXJjaD8odGhpcy5fc3Vn
Z2VzdCh0KSx0aGlzLl90cmlnZ2VyKCJvcGVuIikpOnRoaXMuX2Nsb3NlKCl9LGNsb3NlOmZ1bmN0
aW9uKHQpe3RoaXMuY2FuY2VsU2VhcmNoPSEwLHRoaXMuX2Nsb3NlKHQpfSxfY2xvc2U6ZnVuY3Rp
b24odCl7dGhpcy5fb2ZmKHRoaXMuZG9jdW1lbnQsIm1vdXNlZG93biIpLHRoaXMubWVudS5lbGVt
ZW50LmlzKCI6dmlzaWJsZSIpJiYodGhpcy5tZW51LmVsZW1lbnQuaGlkZSgpLHRoaXMubWVudS5i
bHVyKCksdGhpcy5pc05ld01lbnU9ITAsdGhpcy5fdHJpZ2dlcigiY2xvc2UiLHQpKX0sX2NoYW5n
ZTpmdW5jdGlvbih0KXt0aGlzLnByZXZpb3VzIT09dGhpcy5fdmFsdWUoKSYmdGhpcy5fdHJpZ2dl
cigiY2hhbmdlIix0LHtpdGVtOnRoaXMuc2VsZWN0ZWRJdGVtfSl9LF9ub3JtYWxpemU6ZnVuY3Rp
b24oZSl7cmV0dXJuIGUubGVuZ3RoJiZlWzBdLmxhYmVsJiZlWzBdLnZhbHVlP2U6dC5tYXAoZSxm
dW5jdGlvbihlKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGU/e2xhYmVsOmUsdmFsdWU6ZX06dC5l
eHRlbmQoe30sZSx7bGFiZWw6ZS5sYWJlbHx8ZS52YWx1ZSx2YWx1ZTplLnZhbHVlfHxlLmxhYmVs
fSl9KX0sX3N1Z2dlc3Q6ZnVuY3Rpb24oZSl7dmFyIGk9dGhpcy5tZW51LmVsZW1lbnQuZW1wdHko
KTt0aGlzLl9yZW5kZXJNZW51KGksZSksdGhpcy5pc05ld01lbnU9ITAsdGhpcy5tZW51LnJlZnJl
c2goKSxpLnNob3coKSx0aGlzLl9yZXNpemVNZW51KCksaS5wb3NpdGlvbih0LmV4dGVuZCh7b2Y6
dGhpcy5lbGVtZW50fSx0aGlzLm9wdGlvbnMucG9zaXRpb24pKSx0aGlzLm9wdGlvbnMuYXV0b0Zv
Y3VzJiZ0aGlzLm1lbnUubmV4dCgpLHRoaXMuX29uKHRoaXMuZG9jdW1lbnQse21vdXNlZG93bjoi
X2Nsb3NlT25DbGlja091dHNpZGUifSl9LF9yZXNpemVNZW51OmZ1bmN0aW9uKCl7dmFyIHQ9dGhp
cy5tZW51LmVsZW1lbnQ7dC5vdXRlcldpZHRoKE1hdGgubWF4KHQud2lkdGgoIiIpLm91dGVyV2lk
dGgoKSsxLHRoaXMuZWxlbWVudC5vdXRlcldpZHRoKCkpKX0sX3JlbmRlck1lbnU6ZnVuY3Rpb24o
ZSxpKXt2YXIgcz10aGlzO3QuZWFjaChpLGZ1bmN0aW9uKHQsaSl7cy5fcmVuZGVySXRlbURhdGEo
ZSxpKX0pfSxfcmVuZGVySXRlbURhdGE6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5fcmVuZGVy
SXRlbSh0LGUpLmRhdGEoInVpLWF1dG9jb21wbGV0ZS1pdGVtIixlKX0sX3JlbmRlckl0ZW06ZnVu
Y3Rpb24oZSxpKXtyZXR1cm4gdCgiPGxpPiIpLmFwcGVuZCh0KCI8ZGl2PiIpLnRleHQoaS5sYWJl
bCkpLmFwcGVuZFRvKGUpfSxfbW92ZTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLm1lbnUuZWxl
bWVudC5pcygiOnZpc2libGUiKT90aGlzLm1lbnUuaXNGaXJzdEl0ZW0oKSYmL15wcmV2aW91cy8u
dGVzdCh0KXx8dGhpcy5tZW51LmlzTGFzdEl0ZW0oKSYmL15uZXh0Ly50ZXN0KHQpPyh0aGlzLmlz
TXVsdGlMaW5lfHx0aGlzLl92YWx1ZSh0aGlzLnRlcm0pLHRoaXMubWVudS5ibHVyKCksdm9pZCAw
KToodGhpcy5tZW51W3RdKGUpLHZvaWQgMCk6KHRoaXMuc2VhcmNoKG51bGwsZSksdm9pZCAwKX0s
d2lkZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWVudS5lbGVtZW50fSxfdmFsdWU6ZnVuY3Rp
b24oKXtyZXR1cm4gdGhpcy52YWx1ZU1ldGhvZC5hcHBseSh0aGlzLmVsZW1lbnQsYXJndW1lbnRz
KX0sX2tleUV2ZW50OmZ1bmN0aW9uKHQsZSl7KCF0aGlzLmlzTXVsdGlMaW5lfHx0aGlzLm1lbnUu
ZWxlbWVudC5pcygiOnZpc2libGUiKSkmJih0aGlzLl9tb3ZlKHQsZSksZS5wcmV2ZW50RGVmYXVs
dCgpKX0sX2lzQ29udGVudEVkaXRhYmxlOmZ1bmN0aW9uKHQpe2lmKCF0Lmxlbmd0aClyZXR1cm4h
MTt2YXIgZT10LnByb3AoImNvbnRlbnRFZGl0YWJsZSIpO3JldHVybiJpbmhlcml0Ij09PWU/dGhp
cy5faXNDb250ZW50RWRpdGFibGUodC5wYXJlbnQoKSk6InRydWUiPT09ZX19KSx0LmV4dGVuZCh0
LnVpLmF1dG9jb21wbGV0ZSx7ZXNjYXBlUmVnZXg6ZnVuY3Rpb24odCl7cmV0dXJuIHQucmVwbGFj
ZSgvW1wtXFtcXXt9KCkqKz8uLFxcXF4kfCNcc10vZywiXFwkJiIpfSxmaWx0ZXI6ZnVuY3Rpb24o
ZSxpKXt2YXIgcz1SZWdFeHAodC51aS5hdXRvY29tcGxldGUuZXNjYXBlUmVnZXgoaSksImkiKTty
ZXR1cm4gdC5ncmVwKGUsZnVuY3Rpb24odCl7cmV0dXJuIHMudGVzdCh0LmxhYmVsfHx0LnZhbHVl
fHx0KX0pfX0pLHQud2lkZ2V0KCJ1aS5hdXRvY29tcGxldGUiLHQudWkuYXV0b2NvbXBsZXRlLHtv
cHRpb25zOnttZXNzYWdlczp7bm9SZXN1bHRzOiJObyBzZWFyY2ggcmVzdWx0cy4iLHJlc3VsdHM6
ZnVuY3Rpb24odCl7cmV0dXJuIHQrKHQ+MT8iIHJlc3VsdHMgYXJlIjoiIHJlc3VsdCBpcyIpKyIg
YXZhaWxhYmxlLCB1c2UgdXAgYW5kIGRvd24gYXJyb3cga2V5cyB0byBuYXZpZ2F0ZS4ifX19LF9f
cmVzcG9uc2U6ZnVuY3Rpb24oZSl7dmFyIGk7dGhpcy5fc3VwZXJBcHBseShhcmd1bWVudHMpLHRo
aXMub3B0aW9ucy5kaXNhYmxlZHx8dGhpcy5jYW5jZWxTZWFyY2h8fChpPWUmJmUubGVuZ3RoP3Ro
aXMub3B0aW9ucy5tZXNzYWdlcy5yZXN1bHRzKGUubGVuZ3RoKTp0aGlzLm9wdGlvbnMubWVzc2Fn
ZXMubm9SZXN1bHRzLHRoaXMubGl2ZVJlZ2lvbi5jaGlsZHJlbigpLmhpZGUoKSx0KCI8ZGl2PiIp
LnRleHQoaSkuYXBwZW5kVG8odGhpcy5saXZlUmVnaW9uKSl9fSksdC51aS5hdXRvY29tcGxldGU7
dmFyIGc9L3VpLWNvcm5lci0oW2Etel0pezIsNn0vZzt0LndpZGdldCgidWkuY29udHJvbGdyb3Vw
Iix7dmVyc2lvbjoiMS4xMi4xIixkZWZhdWx0RWxlbWVudDoiPGRpdj4iLG9wdGlvbnM6e2RpcmVj
dGlvbjoiaG9yaXpvbnRhbCIsZGlzYWJsZWQ6bnVsbCxvbmx5VmlzaWJsZTohMCxpdGVtczp7YnV0
dG9uOiJpbnB1dFt0eXBlPWJ1dHRvbl0sIGlucHV0W3R5cGU9c3VibWl0XSwgaW5wdXRbdHlwZT1y
ZXNldF0sIGJ1dHRvbiwgYSIsY29udHJvbGdyb3VwTGFiZWw6Ii51aS1jb250cm9sZ3JvdXAtbGFi
ZWwiLGNoZWNrYm94cmFkaW86ImlucHV0W3R5cGU9J2NoZWNrYm94J10sIGlucHV0W3R5cGU9J3Jh
ZGlvJ10iLHNlbGVjdG1lbnU6InNlbGVjdCIsc3Bpbm5lcjoiLnVpLXNwaW5uZXItaW5wdXQifX0s
X2NyZWF0ZTpmdW5jdGlvbigpe3RoaXMuX2VuaGFuY2UoKX0sX2VuaGFuY2U6ZnVuY3Rpb24oKXt0
aGlzLmVsZW1lbnQuYXR0cigicm9sZSIsInRvb2xiYXIiKSx0aGlzLnJlZnJlc2goKX0sX2Rlc3Ry
b3k6ZnVuY3Rpb24oKXt0aGlzLl9jYWxsQ2hpbGRNZXRob2QoImRlc3Ryb3kiKSx0aGlzLmNoaWxk
V2lkZ2V0cy5yZW1vdmVEYXRhKCJ1aS1jb250cm9sZ3JvdXAtZGF0YSIpLHRoaXMuZWxlbWVudC5y
ZW1vdmVBdHRyKCJyb2xlIiksdGhpcy5vcHRpb25zLml0ZW1zLmNvbnRyb2xncm91cExhYmVsJiZ0
aGlzLmVsZW1lbnQuZmluZCh0aGlzLm9wdGlvbnMuaXRlbXMuY29udHJvbGdyb3VwTGFiZWwpLmZp
bmQoIi51aS1jb250cm9sZ3JvdXAtbGFiZWwtY29udGVudHMiKS5jb250ZW50cygpLnVud3JhcCgp
fSxfaW5pdFdpZGdldHM6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLGk9W107dC5lYWNoKHRoaXMub3B0
aW9ucy5pdGVtcyxmdW5jdGlvbihzLG4pe3ZhciBvLGE9e307cmV0dXJuIG4/ImNvbnRyb2xncm91
cExhYmVsIj09PXM/KG89ZS5lbGVtZW50LmZpbmQobiksby5lYWNoKGZ1bmN0aW9uKCl7dmFyIGU9
dCh0aGlzKTtlLmNoaWxkcmVuKCIudWktY29udHJvbGdyb3VwLWxhYmVsLWNvbnRlbnRzIikubGVu
Z3RofHxlLmNvbnRlbnRzKCkud3JhcEFsbCgiPHNwYW4gY2xhc3M9J3VpLWNvbnRyb2xncm91cC1s
YWJlbC1jb250ZW50cyc+PC9zcGFuPiIpfSksZS5fYWRkQ2xhc3MobyxudWxsLCJ1aS13aWRnZXQg
dWktd2lkZ2V0LWNvbnRlbnQgdWktc3RhdGUtZGVmYXVsdCIpLGk9aS5jb25jYXQoby5nZXQoKSks
dm9pZCAwKToodC5mbltzXSYmKGE9ZVsiXyIrcysiT3B0aW9ucyJdP2VbIl8iK3MrIk9wdGlvbnMi
XSgibWlkZGxlIik6e2NsYXNzZXM6e319LGUuZWxlbWVudC5maW5kKG4pLmVhY2goZnVuY3Rpb24o
KXt2YXIgbj10KHRoaXMpLG89bltzXSgiaW5zdGFuY2UiKSxyPXQud2lkZ2V0LmV4dGVuZCh7fSxh
KTtpZigiYnV0dG9uIiE9PXN8fCFuLnBhcmVudCgiLnVpLXNwaW5uZXIiKS5sZW5ndGgpe298fChv
PW5bc10oKVtzXSgiaW5zdGFuY2UiKSksbyYmKHIuY2xhc3Nlcz1lLl9yZXNvbHZlQ2xhc3Nlc1Zh
bHVlcyhyLmNsYXNzZXMsbykpLG5bc10ocik7dmFyIGg9bltzXSgid2lkZ2V0Iik7dC5kYXRhKGhb
MF0sInVpLWNvbnRyb2xncm91cC1kYXRhIixvP286bltzXSgiaW5zdGFuY2UiKSksaS5wdXNoKGhb
MF0pfX0pKSx2b2lkIDApOnZvaWQgMH0pLHRoaXMuY2hpbGRXaWRnZXRzPXQodC51bmlxdWUoaSkp
LHRoaXMuX2FkZENsYXNzKHRoaXMuY2hpbGRXaWRnZXRzLCJ1aS1jb250cm9sZ3JvdXAtaXRlbSIp
fSxfY2FsbENoaWxkTWV0aG9kOmZ1bmN0aW9uKGUpe3RoaXMuY2hpbGRXaWRnZXRzLmVhY2goZnVu
Y3Rpb24oKXt2YXIgaT10KHRoaXMpLHM9aS5kYXRhKCJ1aS1jb250cm9sZ3JvdXAtZGF0YSIpO3Mm
JnNbZV0mJnNbZV0oKX0pfSxfdXBkYXRlQ29ybmVyQ2xhc3M6ZnVuY3Rpb24odCxlKXt2YXIgaT0i
dWktY29ybmVyLXRvcCB1aS1jb3JuZXItYm90dG9tIHVpLWNvcm5lci1sZWZ0IHVpLWNvcm5lci1y
aWdodCB1aS1jb3JuZXItYWxsIixzPXRoaXMuX2J1aWxkU2ltcGxlT3B0aW9ucyhlLCJsYWJlbCIp
LmNsYXNzZXMubGFiZWw7dGhpcy5fcmVtb3ZlQ2xhc3ModCxudWxsLGkpLHRoaXMuX2FkZENsYXNz
KHQsbnVsbCxzKX0sX2J1aWxkU2ltcGxlT3B0aW9uczpmdW5jdGlvbih0LGUpe3ZhciBpPSJ2ZXJ0
aWNhbCI9PT10aGlzLm9wdGlvbnMuZGlyZWN0aW9uLHM9e2NsYXNzZXM6e319O3JldHVybiBzLmNs
YXNzZXNbZV09e21pZGRsZToiIixmaXJzdDoidWktY29ybmVyLSIrKGk/InRvcCI6ImxlZnQiKSxs
YXN0OiJ1aS1jb3JuZXItIisoaT8iYm90dG9tIjoicmlnaHQiKSxvbmx5OiJ1aS1jb3JuZXItYWxs
In1bdF0sc30sX3NwaW5uZXJPcHRpb25zOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX2J1aWxkU2lt
cGxlT3B0aW9ucyh0LCJ1aS1zcGlubmVyIik7cmV0dXJuIGUuY2xhc3Nlc1sidWktc3Bpbm5lci11
cCJdPSIiLGUuY2xhc3Nlc1sidWktc3Bpbm5lci1kb3duIl09IiIsZX0sX2J1dHRvbk9wdGlvbnM6
ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2J1aWxkU2ltcGxlT3B0aW9ucyh0LCJ1aS1idXR0b24i
KX0sX2NoZWNrYm94cmFkaW9PcHRpb25zOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9idWlsZFNp
bXBsZU9wdGlvbnModCwidWktY2hlY2tib3hyYWRpby1sYWJlbCIpfSxfc2VsZWN0bWVudU9wdGlv
bnM6ZnVuY3Rpb24odCl7dmFyIGU9InZlcnRpY2FsIj09PXRoaXMub3B0aW9ucy5kaXJlY3Rpb247
cmV0dXJue3dpZHRoOmU/ImF1dG8iOiExLGNsYXNzZXM6e21pZGRsZTp7InVpLXNlbGVjdG1lbnUt
YnV0dG9uLW9wZW4iOiIiLCJ1aS1zZWxlY3RtZW51LWJ1dHRvbi1jbG9zZWQiOiIifSxmaXJzdDp7
InVpLXNlbGVjdG1lbnUtYnV0dG9uLW9wZW4iOiJ1aS1jb3JuZXItIisoZT8idG9wIjoidGwiKSwi
dWktc2VsZWN0bWVudS1idXR0b24tY2xvc2VkIjoidWktY29ybmVyLSIrKGU/InRvcCI6ImxlZnQi
KX0sbGFzdDp7InVpLXNlbGVjdG1lbnUtYnV0dG9uLW9wZW4iOmU/IiI6InVpLWNvcm5lci10ciIs
InVpLXNlbGVjdG1lbnUtYnV0dG9uLWNsb3NlZCI6InVpLWNvcm5lci0iKyhlPyJib3R0b20iOiJy
aWdodCIpfSxvbmx5OnsidWktc2VsZWN0bWVudS1idXR0b24tb3BlbiI6InVpLWNvcm5lci10b3Ai
LCJ1aS1zZWxlY3RtZW51LWJ1dHRvbi1jbG9zZWQiOiJ1aS1jb3JuZXItYWxsIn19W3RdfX0sX3Jl
c29sdmVDbGFzc2VzVmFsdWVzOmZ1bmN0aW9uKGUsaSl7dmFyIHM9e307cmV0dXJuIHQuZWFjaChl
LGZ1bmN0aW9uKG4pe3ZhciBvPWkub3B0aW9ucy5jbGFzc2VzW25dfHwiIjtvPXQudHJpbShvLnJl
cGxhY2UoZywiIikpLHNbbl09KG8rIiAiK2Vbbl0pLnJlcGxhY2UoL1xzKy9nLCIgIil9KSxzfSxf
c2V0T3B0aW9uOmZ1bmN0aW9uKHQsZSl7cmV0dXJuImRpcmVjdGlvbiI9PT10JiZ0aGlzLl9yZW1v
dmVDbGFzcygidWktY29udHJvbGdyb3VwLSIrdGhpcy5vcHRpb25zLmRpcmVjdGlvbiksdGhpcy5f
c3VwZXIodCxlKSwiZGlzYWJsZWQiPT09dD8odGhpcy5fY2FsbENoaWxkTWV0aG9kKGU/ImRpc2Fi
bGUiOiJlbmFibGUiKSx2b2lkIDApOih0aGlzLnJlZnJlc2goKSx2b2lkIDApfSxyZWZyZXNoOmZ1
bmN0aW9uKCl7dmFyIGUsaT10aGlzO3RoaXMuX2FkZENsYXNzKCJ1aS1jb250cm9sZ3JvdXAgdWkt
Y29udHJvbGdyb3VwLSIrdGhpcy5vcHRpb25zLmRpcmVjdGlvbiksImhvcml6b250YWwiPT09dGhp
cy5vcHRpb25zLmRpcmVjdGlvbiYmdGhpcy5fYWRkQ2xhc3MobnVsbCwidWktaGVscGVyLWNsZWFy
Zml4IiksdGhpcy5faW5pdFdpZGdldHMoKSxlPXRoaXMuY2hpbGRXaWRnZXRzLHRoaXMub3B0aW9u
cy5vbmx5VmlzaWJsZSYmKGU9ZS5maWx0ZXIoIjp2aXNpYmxlIikpLGUubGVuZ3RoJiYodC5lYWNo
KFsiZmlyc3QiLCJsYXN0Il0sZnVuY3Rpb24odCxzKXt2YXIgbj1lW3NdKCkuZGF0YSgidWktY29u
dHJvbGdyb3VwLWRhdGEiKTtpZihuJiZpWyJfIituLndpZGdldE5hbWUrIk9wdGlvbnMiXSl7dmFy
IG89aVsiXyIrbi53aWRnZXROYW1lKyJPcHRpb25zIl0oMT09PWUubGVuZ3RoPyJvbmx5IjpzKTtv
LmNsYXNzZXM9aS5fcmVzb2x2ZUNsYXNzZXNWYWx1ZXMoby5jbGFzc2VzLG4pLG4uZWxlbWVudFtu
LndpZGdldE5hbWVdKG8pfWVsc2UgaS5fdXBkYXRlQ29ybmVyQ2xhc3MoZVtzXSgpLHMpfSksdGhp
cy5fY2FsbENoaWxkTWV0aG9kKCJyZWZyZXNoIikpfX0pLHQud2lkZ2V0KCJ1aS5jaGVja2JveHJh
ZGlvIixbdC51aS5mb3JtUmVzZXRNaXhpbix7dmVyc2lvbjoiMS4xMi4xIixvcHRpb25zOntkaXNh
YmxlZDpudWxsLGxhYmVsOm51bGwsaWNvbjohMCxjbGFzc2VzOnsidWktY2hlY2tib3hyYWRpby1s
YWJlbCI6InVpLWNvcm5lci1hbGwiLCJ1aS1jaGVja2JveHJhZGlvLWljb24iOiJ1aS1jb3JuZXIt
YWxsIn19LF9nZXRDcmVhdGVPcHRpb25zOmZ1bmN0aW9uKCl7dmFyIGUsaSxzPXRoaXMsbj10aGlz
Ll9zdXBlcigpfHx7fTtyZXR1cm4gdGhpcy5fcmVhZFR5cGUoKSxpPXRoaXMuZWxlbWVudC5sYWJl
bHMoKSx0aGlzLmxhYmVsPXQoaVtpLmxlbmd0aC0xXSksdGhpcy5sYWJlbC5sZW5ndGh8fHQuZXJy
b3IoIk5vIGxhYmVsIGZvdW5kIGZvciBjaGVja2JveHJhZGlvIHdpZGdldCIpLHRoaXMub3JpZ2lu
YWxMYWJlbD0iIix0aGlzLmxhYmVsLmNvbnRlbnRzKCkubm90KHRoaXMuZWxlbWVudFswXSkuZWFj
aChmdW5jdGlvbigpe3Mub3JpZ2luYWxMYWJlbCs9Mz09PXRoaXMubm9kZVR5cGU/dCh0aGlzKS50
ZXh0KCk6dGhpcy5vdXRlckhUTUx9KSx0aGlzLm9yaWdpbmFsTGFiZWwmJihuLmxhYmVsPXRoaXMu
b3JpZ2luYWxMYWJlbCksZT10aGlzLmVsZW1lbnRbMF0uZGlzYWJsZWQsbnVsbCE9ZSYmKG4uZGlz
YWJsZWQ9ZSksbn0sX2NyZWF0ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuZWxlbWVudFswXS5jaGVj
a2VkO3RoaXMuX2JpbmRGb3JtUmVzZXRIYW5kbGVyKCksbnVsbD09dGhpcy5vcHRpb25zLmRpc2Fi
bGVkJiYodGhpcy5vcHRpb25zLmRpc2FibGVkPXRoaXMuZWxlbWVudFswXS5kaXNhYmxlZCksdGhp
cy5fc2V0T3B0aW9uKCJkaXNhYmxlZCIsdGhpcy5vcHRpb25zLmRpc2FibGVkKSx0aGlzLl9hZGRD
bGFzcygidWktY2hlY2tib3hyYWRpbyIsInVpLWhlbHBlci1oaWRkZW4tYWNjZXNzaWJsZSIpLHRo
aXMuX2FkZENsYXNzKHRoaXMubGFiZWwsInVpLWNoZWNrYm94cmFkaW8tbGFiZWwiLCJ1aS1idXR0
b24gdWktd2lkZ2V0IiksInJhZGlvIj09PXRoaXMudHlwZSYmdGhpcy5fYWRkQ2xhc3ModGhpcy5s
YWJlbCwidWktY2hlY2tib3hyYWRpby1yYWRpby1sYWJlbCIpLHRoaXMub3B0aW9ucy5sYWJlbCYm
dGhpcy5vcHRpb25zLmxhYmVsIT09dGhpcy5vcmlnaW5hbExhYmVsP3RoaXMuX3VwZGF0ZUxhYmVs
KCk6dGhpcy5vcmlnaW5hbExhYmVsJiYodGhpcy5vcHRpb25zLmxhYmVsPXRoaXMub3JpZ2luYWxM
YWJlbCksdGhpcy5fZW5oYW5jZSgpLHQmJih0aGlzLl9hZGRDbGFzcyh0aGlzLmxhYmVsLCJ1aS1j
aGVja2JveHJhZGlvLWNoZWNrZWQiLCJ1aS1zdGF0ZS1hY3RpdmUiKSx0aGlzLmljb24mJnRoaXMu
X2FkZENsYXNzKHRoaXMuaWNvbixudWxsLCJ1aS1zdGF0ZS1ob3ZlciIpKSx0aGlzLl9vbih7Y2hh
bmdlOiJfdG9nZ2xlQ2xhc3NlcyIsZm9jdXM6ZnVuY3Rpb24oKXt0aGlzLl9hZGRDbGFzcyh0aGlz
LmxhYmVsLG51bGwsInVpLXN0YXRlLWZvY3VzIHVpLXZpc3VhbC1mb2N1cyIpfSxibHVyOmZ1bmN0
aW9uKCl7dGhpcy5fcmVtb3ZlQ2xhc3ModGhpcy5sYWJlbCxudWxsLCJ1aS1zdGF0ZS1mb2N1cyB1
aS12aXN1YWwtZm9jdXMiKX19KX0sX3JlYWRUeXBlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5lbGVt
ZW50WzBdLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7dGhpcy50eXBlPXRoaXMuZWxlbWVudFswXS50
eXBlLCJpbnB1dCI9PT1lJiYvcmFkaW98Y2hlY2tib3gvLnRlc3QodGhpcy50eXBlKXx8dC5lcnJv
cigiQ2FuJ3QgY3JlYXRlIGNoZWNrYm94cmFkaW8gb24gZWxlbWVudC5ub2RlTmFtZT0iK2UrIiBh
bmQgZWxlbWVudC50eXBlPSIrdGhpcy50eXBlKX0sX2VuaGFuY2U6ZnVuY3Rpb24oKXt0aGlzLl91
cGRhdGVJY29uKHRoaXMuZWxlbWVudFswXS5jaGVja2VkKX0sd2lkZ2V0OmZ1bmN0aW9uKCl7cmV0
dXJuIHRoaXMubGFiZWx9LF9nZXRSYWRpb0dyb3VwOmZ1bmN0aW9uKCl7dmFyIGUsaT10aGlzLmVs
ZW1lbnRbMF0ubmFtZSxzPSJpbnB1dFtuYW1lPSciK3QudWkuZXNjYXBlU2VsZWN0b3IoaSkrIidd
IjtyZXR1cm4gaT8oZT10aGlzLmZvcm0ubGVuZ3RoP3QodGhpcy5mb3JtWzBdLmVsZW1lbnRzKS5m
aWx0ZXIocyk6dChzKS5maWx0ZXIoZnVuY3Rpb24oKXtyZXR1cm4gMD09PXQodGhpcykuZm9ybSgp
Lmxlbmd0aH0pLGUubm90KHRoaXMuZWxlbWVudCkpOnQoW10pfSxfdG9nZ2xlQ2xhc3NlczpmdW5j
dGlvbigpe3ZhciBlPXRoaXMuZWxlbWVudFswXS5jaGVja2VkO3RoaXMuX3RvZ2dsZUNsYXNzKHRo
aXMubGFiZWwsInVpLWNoZWNrYm94cmFkaW8tY2hlY2tlZCIsInVpLXN0YXRlLWFjdGl2ZSIsZSks
dGhpcy5vcHRpb25zLmljb24mJiJjaGVja2JveCI9PT10aGlzLnR5cGUmJnRoaXMuX3RvZ2dsZUNs
YXNzKHRoaXMuaWNvbixudWxsLCJ1aS1pY29uLWNoZWNrIHVpLXN0YXRlLWNoZWNrZWQiLGUpLl90
b2dnbGVDbGFzcyh0aGlzLmljb24sbnVsbCwidWktaWNvbi1ibGFuayIsIWUpLCJyYWRpbyI9PT10
aGlzLnR5cGUmJnRoaXMuX2dldFJhZGlvR3JvdXAoKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGU9dCh0
aGlzKS5jaGVja2JveHJhZGlvKCJpbnN0YW5jZSIpO2UmJmUuX3JlbW92ZUNsYXNzKGUubGFiZWws
InVpLWNoZWNrYm94cmFkaW8tY2hlY2tlZCIsInVpLXN0YXRlLWFjdGl2ZSIpfSl9LF9kZXN0cm95
OmZ1bmN0aW9uKCl7dGhpcy5fdW5iaW5kRm9ybVJlc2V0SGFuZGxlcigpLHRoaXMuaWNvbiYmKHRo
aXMuaWNvbi5yZW1vdmUoKSx0aGlzLmljb25TcGFjZS5yZW1vdmUoKSl9LF9zZXRPcHRpb246ZnVu
Y3Rpb24odCxlKXtyZXR1cm4ibGFiZWwiIT09dHx8ZT8odGhpcy5fc3VwZXIodCxlKSwiZGlzYWJs
ZWQiPT09dD8odGhpcy5fdG9nZ2xlQ2xhc3ModGhpcy5sYWJlbCxudWxsLCJ1aS1zdGF0ZS1kaXNh
YmxlZCIsZSksdGhpcy5lbGVtZW50WzBdLmRpc2FibGVkPWUsdm9pZCAwKToodGhpcy5yZWZyZXNo
KCksdm9pZCAwKSk6dm9pZCAwfSxfdXBkYXRlSWNvbjpmdW5jdGlvbihlKXt2YXIgaT0idWktaWNv
biB1aS1pY29uLWJhY2tncm91bmQgIjt0aGlzLm9wdGlvbnMuaWNvbj8odGhpcy5pY29ufHwodGhp
cy5pY29uPXQoIjxzcGFuPiIpLHRoaXMuaWNvblNwYWNlPXQoIjxzcGFuPiA8L3NwYW4+IiksdGhp
cy5fYWRkQ2xhc3ModGhpcy5pY29uU3BhY2UsInVpLWNoZWNrYm94cmFkaW8taWNvbi1zcGFjZSIp
KSwiY2hlY2tib3giPT09dGhpcy50eXBlPyhpKz1lPyJ1aS1pY29uLWNoZWNrIHVpLXN0YXRlLWNo
ZWNrZWQiOiJ1aS1pY29uLWJsYW5rIix0aGlzLl9yZW1vdmVDbGFzcyh0aGlzLmljb24sbnVsbCxl
PyJ1aS1pY29uLWJsYW5rIjoidWktaWNvbi1jaGVjayIpKTppKz0idWktaWNvbi1ibGFuayIsdGhp
cy5fYWRkQ2xhc3ModGhpcy5pY29uLCJ1aS1jaGVja2JveHJhZGlvLWljb24iLGkpLGV8fHRoaXMu
X3JlbW92ZUNsYXNzKHRoaXMuaWNvbixudWxsLCJ1aS1pY29uLWNoZWNrIHVpLXN0YXRlLWNoZWNr
ZWQiKSx0aGlzLmljb24ucHJlcGVuZFRvKHRoaXMubGFiZWwpLmFmdGVyKHRoaXMuaWNvblNwYWNl
KSk6dm9pZCAwIT09dGhpcy5pY29uJiYodGhpcy5pY29uLnJlbW92ZSgpLHRoaXMuaWNvblNwYWNl
LnJlbW92ZSgpLGRlbGV0ZSB0aGlzLmljb24pfSxfdXBkYXRlTGFiZWw6ZnVuY3Rpb24oKXt2YXIg
dD10aGlzLmxhYmVsLmNvbnRlbnRzKCkubm90KHRoaXMuZWxlbWVudFswXSk7dGhpcy5pY29uJiYo
dD10Lm5vdCh0aGlzLmljb25bMF0pKSx0aGlzLmljb25TcGFjZSYmKHQ9dC5ub3QodGhpcy5pY29u
U3BhY2VbMF0pKSx0LnJlbW92ZSgpLHRoaXMubGFiZWwuYXBwZW5kKHRoaXMub3B0aW9ucy5sYWJl
bCl9LHJlZnJlc2g6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmVsZW1lbnRbMF0uY2hlY2tlZCxlPXRo
aXMuZWxlbWVudFswXS5kaXNhYmxlZDt0aGlzLl91cGRhdGVJY29uKHQpLHRoaXMuX3RvZ2dsZUNs
YXNzKHRoaXMubGFiZWwsInVpLWNoZWNrYm94cmFkaW8tY2hlY2tlZCIsInVpLXN0YXRlLWFjdGl2
ZSIsdCksbnVsbCE9PXRoaXMub3B0aW9ucy5sYWJlbCYmdGhpcy5fdXBkYXRlTGFiZWwoKSxlIT09
dGhpcy5vcHRpb25zLmRpc2FibGVkJiZ0aGlzLl9zZXRPcHRpb25zKHtkaXNhYmxlZDplfSl9fV0p
LHQudWkuY2hlY2tib3hyYWRpbyx0LndpZGdldCgidWkuYnV0dG9uIix7dmVyc2lvbjoiMS4xMi4x
IixkZWZhdWx0RWxlbWVudDoiPGJ1dHRvbj4iLG9wdGlvbnM6e2NsYXNzZXM6eyJ1aS1idXR0b24i
OiJ1aS1jb3JuZXItYWxsIn0sZGlzYWJsZWQ6bnVsbCxpY29uOm51bGwsaWNvblBvc2l0aW9uOiJi
ZWdpbm5pbmciLGxhYmVsOm51bGwsc2hvd0xhYmVsOiEwfSxfZ2V0Q3JlYXRlT3B0aW9uczpmdW5j
dGlvbigpe3ZhciB0LGU9dGhpcy5fc3VwZXIoKXx8e307cmV0dXJuIHRoaXMuaXNJbnB1dD10aGlz
LmVsZW1lbnQuaXMoImlucHV0IiksdD10aGlzLmVsZW1lbnRbMF0uZGlzYWJsZWQsbnVsbCE9dCYm
KGUuZGlzYWJsZWQ9dCksdGhpcy5vcmlnaW5hbExhYmVsPXRoaXMuaXNJbnB1dD90aGlzLmVsZW1l
bnQudmFsKCk6dGhpcy5lbGVtZW50Lmh0bWwoKSx0aGlzLm9yaWdpbmFsTGFiZWwmJihlLmxhYmVs
PXRoaXMub3JpZ2luYWxMYWJlbCksZX0sX2NyZWF0ZTpmdW5jdGlvbigpeyF0aGlzLm9wdGlvbi5z
aG93TGFiZWwmIXRoaXMub3B0aW9ucy5pY29uJiYodGhpcy5vcHRpb25zLnNob3dMYWJlbD0hMCks
bnVsbD09dGhpcy5vcHRpb25zLmRpc2FibGVkJiYodGhpcy5vcHRpb25zLmRpc2FibGVkPXRoaXMu
ZWxlbWVudFswXS5kaXNhYmxlZHx8ITEpLHRoaXMuaGFzVGl0bGU9ISF0aGlzLmVsZW1lbnQuYXR0
cigidGl0bGUiKSx0aGlzLm9wdGlvbnMubGFiZWwmJnRoaXMub3B0aW9ucy5sYWJlbCE9PXRoaXMu
b3JpZ2luYWxMYWJlbCYmKHRoaXMuaXNJbnB1dD90aGlzLmVsZW1lbnQudmFsKHRoaXMub3B0aW9u
cy5sYWJlbCk6dGhpcy5lbGVtZW50Lmh0bWwodGhpcy5vcHRpb25zLmxhYmVsKSksdGhpcy5fYWRk
Q2xhc3MoInVpLWJ1dHRvbiIsInVpLXdpZGdldCIpLHRoaXMuX3NldE9wdGlvbigiZGlzYWJsZWQi
LHRoaXMub3B0aW9ucy5kaXNhYmxlZCksdGhpcy5fZW5oYW5jZSgpLHRoaXMuZWxlbWVudC5pcygi
YSIpJiZ0aGlzLl9vbih7a2V5dXA6ZnVuY3Rpb24oZSl7ZS5rZXlDb2RlPT09dC51aS5rZXlDb2Rl
LlNQQUNFJiYoZS5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuZWxlbWVudFswXS5jbGljaz90aGlzLmVs
ZW1lbnRbMF0uY2xpY2soKTp0aGlzLmVsZW1lbnQudHJpZ2dlcigiY2xpY2siKSl9fSl9LF9lbmhh
bmNlOmZ1bmN0aW9uKCl7dGhpcy5lbGVtZW50LmlzKCJidXR0b24iKXx8dGhpcy5lbGVtZW50LmF0
dHIoInJvbGUiLCJidXR0b24iKSx0aGlzLm9wdGlvbnMuaWNvbiYmKHRoaXMuX3VwZGF0ZUljb24o
Imljb24iLHRoaXMub3B0aW9ucy5pY29uKSx0aGlzLl91cGRhdGVUb29sdGlwKCkpfSxfdXBkYXRl
VG9vbHRpcDpmdW5jdGlvbigpe3RoaXMudGl0bGU9dGhpcy5lbGVtZW50LmF0dHIoInRpdGxlIiks
dGhpcy5vcHRpb25zLnNob3dMYWJlbHx8dGhpcy50aXRsZXx8dGhpcy5lbGVtZW50LmF0dHIoInRp
dGxlIix0aGlzLm9wdGlvbnMubGFiZWwpfSxfdXBkYXRlSWNvbjpmdW5jdGlvbihlLGkpe3ZhciBz
PSJpY29uUG9zaXRpb24iIT09ZSxuPXM/dGhpcy5vcHRpb25zLmljb25Qb3NpdGlvbjppLG89InRv
cCI9PT1ufHwiYm90dG9tIj09PW47dGhpcy5pY29uP3MmJnRoaXMuX3JlbW92ZUNsYXNzKHRoaXMu
aWNvbixudWxsLHRoaXMub3B0aW9ucy5pY29uKToodGhpcy5pY29uPXQoIjxzcGFuPiIpLHRoaXMu
X2FkZENsYXNzKHRoaXMuaWNvbiwidWktYnV0dG9uLWljb24iLCJ1aS1pY29uIiksdGhpcy5vcHRp
b25zLnNob3dMYWJlbHx8dGhpcy5fYWRkQ2xhc3MoInVpLWJ1dHRvbi1pY29uLW9ubHkiKSkscyYm
dGhpcy5fYWRkQ2xhc3ModGhpcy5pY29uLG51bGwsaSksdGhpcy5fYXR0YWNoSWNvbihuKSxvPyh0
aGlzLl9hZGRDbGFzcyh0aGlzLmljb24sbnVsbCwidWktd2lkZ2V0LWljb24tYmxvY2siKSx0aGlz
Lmljb25TcGFjZSYmdGhpcy5pY29uU3BhY2UucmVtb3ZlKCkpOih0aGlzLmljb25TcGFjZXx8KHRo
aXMuaWNvblNwYWNlPXQoIjxzcGFuPiA8L3NwYW4+IiksdGhpcy5fYWRkQ2xhc3ModGhpcy5pY29u
U3BhY2UsInVpLWJ1dHRvbi1pY29uLXNwYWNlIikpLHRoaXMuX3JlbW92ZUNsYXNzKHRoaXMuaWNv
bixudWxsLCJ1aS13aWdldC1pY29uLWJsb2NrIiksdGhpcy5fYXR0YWNoSWNvblNwYWNlKG4pKX0s
X2Rlc3Ryb3k6ZnVuY3Rpb24oKXt0aGlzLmVsZW1lbnQucmVtb3ZlQXR0cigicm9sZSIpLHRoaXMu
aWNvbiYmdGhpcy5pY29uLnJlbW92ZSgpLHRoaXMuaWNvblNwYWNlJiZ0aGlzLmljb25TcGFjZS5y
ZW1vdmUoKSx0aGlzLmhhc1RpdGxlfHx0aGlzLmVsZW1lbnQucmVtb3ZlQXR0cigidGl0bGUiKX0s
X2F0dGFjaEljb25TcGFjZTpmdW5jdGlvbih0KXt0aGlzLmljb25bL14oPzplbmR8Ym90dG9tKS8u
dGVzdCh0KT8iYmVmb3JlIjoiYWZ0ZXIiXSh0aGlzLmljb25TcGFjZSl9LF9hdHRhY2hJY29uOmZ1
bmN0aW9uKHQpe3RoaXMuZWxlbWVudFsvXig/OmVuZHxib3R0b20pLy50ZXN0KHQpPyJhcHBlbmQi
OiJwcmVwZW5kIl0odGhpcy5pY29uKX0sX3NldE9wdGlvbnM6ZnVuY3Rpb24odCl7dmFyIGU9dm9p
ZCAwPT09dC5zaG93TGFiZWw/dGhpcy5vcHRpb25zLnNob3dMYWJlbDp0LnNob3dMYWJlbCxpPXZv
aWQgMD09PXQuaWNvbj90aGlzLm9wdGlvbnMuaWNvbjp0Lmljb247ZXx8aXx8KHQuc2hvd0xhYmVs
PSEwKSx0aGlzLl9zdXBlcih0KX0sX3NldE9wdGlvbjpmdW5jdGlvbih0LGUpeyJpY29uIj09PXQm
JihlP3RoaXMuX3VwZGF0ZUljb24odCxlKTp0aGlzLmljb24mJih0aGlzLmljb24ucmVtb3ZlKCks
dGhpcy5pY29uU3BhY2UmJnRoaXMuaWNvblNwYWNlLnJlbW92ZSgpKSksImljb25Qb3NpdGlvbiI9
PT10JiZ0aGlzLl91cGRhdGVJY29uKHQsZSksInNob3dMYWJlbCI9PT10JiYodGhpcy5fdG9nZ2xl
Q2xhc3MoInVpLWJ1dHRvbi1pY29uLW9ubHkiLG51bGwsIWUpLHRoaXMuX3VwZGF0ZVRvb2x0aXAo
KSksImxhYmVsIj09PXQmJih0aGlzLmlzSW5wdXQ/dGhpcy5lbGVtZW50LnZhbChlKToodGhpcy5l
bGVtZW50Lmh0bWwoZSksdGhpcy5pY29uJiYodGhpcy5fYXR0YWNoSWNvbih0aGlzLm9wdGlvbnMu
aWNvblBvc2l0aW9uKSx0aGlzLl9hdHRhY2hJY29uU3BhY2UodGhpcy5vcHRpb25zLmljb25Qb3Np
dGlvbikpKSksdGhpcy5fc3VwZXIodCxlKSwiZGlzYWJsZWQiPT09dCYmKHRoaXMuX3RvZ2dsZUNs
YXNzKG51bGwsInVpLXN0YXRlLWRpc2FibGVkIixlKSx0aGlzLmVsZW1lbnRbMF0uZGlzYWJsZWQ9
ZSxlJiZ0aGlzLmVsZW1lbnQuYmx1cigpKX0scmVmcmVzaDpmdW5jdGlvbigpe3ZhciB0PXRoaXMu
ZWxlbWVudC5pcygiaW5wdXQsIGJ1dHRvbiIpP3RoaXMuZWxlbWVudFswXS5kaXNhYmxlZDp0aGlz
LmVsZW1lbnQuaGFzQ2xhc3MoInVpLWJ1dHRvbi1kaXNhYmxlZCIpO3QhPT10aGlzLm9wdGlvbnMu
ZGlzYWJsZWQmJnRoaXMuX3NldE9wdGlvbnMoe2Rpc2FibGVkOnR9KSx0aGlzLl91cGRhdGVUb29s
dGlwKCl9fSksdC51aUJhY2tDb21wYXQhPT0hMSYmKHQud2lkZ2V0KCJ1aS5idXR0b24iLHQudWku
YnV0dG9uLHtvcHRpb25zOnt0ZXh0OiEwLGljb25zOntwcmltYXJ5Om51bGwsc2Vjb25kYXJ5Om51
bGx9fSxfY3JlYXRlOmZ1bmN0aW9uKCl7dGhpcy5vcHRpb25zLnNob3dMYWJlbCYmIXRoaXMub3B0
aW9ucy50ZXh0JiYodGhpcy5vcHRpb25zLnNob3dMYWJlbD10aGlzLm9wdGlvbnMudGV4dCksIXRo
aXMub3B0aW9ucy5zaG93TGFiZWwmJnRoaXMub3B0aW9ucy50ZXh0JiYodGhpcy5vcHRpb25zLnRl
eHQ9dGhpcy5vcHRpb25zLnNob3dMYWJlbCksdGhpcy5vcHRpb25zLmljb258fCF0aGlzLm9wdGlv
bnMuaWNvbnMucHJpbWFyeSYmIXRoaXMub3B0aW9ucy5pY29ucy5zZWNvbmRhcnk/dGhpcy5vcHRp
b25zLmljb24mJih0aGlzLm9wdGlvbnMuaWNvbnMucHJpbWFyeT10aGlzLm9wdGlvbnMuaWNvbik6
dGhpcy5vcHRpb25zLmljb25zLnByaW1hcnk/dGhpcy5vcHRpb25zLmljb249dGhpcy5vcHRpb25z
Lmljb25zLnByaW1hcnk6KHRoaXMub3B0aW9ucy5pY29uPXRoaXMub3B0aW9ucy5pY29ucy5zZWNv
bmRhcnksdGhpcy5vcHRpb25zLmljb25Qb3NpdGlvbj0iZW5kIiksdGhpcy5fc3VwZXIoKX0sX3Nl
dE9wdGlvbjpmdW5jdGlvbih0LGUpe3JldHVybiJ0ZXh0Ij09PXQ/KHRoaXMuX3N1cGVyKCJzaG93
TGFiZWwiLGUpLHZvaWQgMCk6KCJzaG93TGFiZWwiPT09dCYmKHRoaXMub3B0aW9ucy50ZXh0PWUp
LCJpY29uIj09PXQmJih0aGlzLm9wdGlvbnMuaWNvbnMucHJpbWFyeT1lKSwiaWNvbnMiPT09dCYm
KGUucHJpbWFyeT8odGhpcy5fc3VwZXIoImljb24iLGUucHJpbWFyeSksdGhpcy5fc3VwZXIoImlj
b25Qb3NpdGlvbiIsImJlZ2lubmluZyIpKTplLnNlY29uZGFyeSYmKHRoaXMuX3N1cGVyKCJpY29u
IixlLnNlY29uZGFyeSksdGhpcy5fc3VwZXIoImljb25Qb3NpdGlvbiIsImVuZCIpKSksdGhpcy5f
c3VwZXJBcHBseShhcmd1bWVudHMpLHZvaWQgMCl9fSksdC5mbi5idXR0b249ZnVuY3Rpb24oZSl7
cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMubGVuZ3RofHx0aGlzLmxlbmd0aCYmIklOUFVU
IiE9PXRoaXNbMF0udGFnTmFtZXx8dGhpcy5sZW5ndGgmJiJJTlBVVCI9PT10aGlzWzBdLnRhZ05h
bWUmJiJjaGVja2JveCIhPT10aGlzLmF0dHIoInR5cGUiKSYmInJhZGlvIiE9PXRoaXMuYXR0cigi
dHlwZSIpP2UuYXBwbHkodGhpcyxhcmd1bWVudHMpOih0LnVpLmNoZWNrYm94cmFkaW98fHQuZXJy
b3IoIkNoZWNrYm94cmFkaW8gd2lkZ2V0IG1pc3NpbmciKSwwPT09YXJndW1lbnRzLmxlbmd0aD90
aGlzLmNoZWNrYm94cmFkaW8oe2ljb246ITF9KTp0aGlzLmNoZWNrYm94cmFkaW8uYXBwbHkodGhp
cyxhcmd1bWVudHMpKX19KHQuZm4uYnV0dG9uKSx0LmZuLmJ1dHRvbnNldD1mdW5jdGlvbigpe3Jl
dHVybiB0LnVpLmNvbnRyb2xncm91cHx8dC5lcnJvcigiQ29udHJvbGdyb3VwIHdpZGdldCBtaXNz
aW5nIiksIm9wdGlvbiI9PT1hcmd1bWVudHNbMF0mJiJpdGVtcyI9PT1hcmd1bWVudHNbMV0mJmFy
Z3VtZW50c1syXT90aGlzLmNvbnRyb2xncm91cC5hcHBseSh0aGlzLFthcmd1bWVudHNbMF0sIml0
ZW1zLmJ1dHRvbiIsYXJndW1lbnRzWzJdXSk6Im9wdGlvbiI9PT1hcmd1bWVudHNbMF0mJiJpdGVt
cyI9PT1hcmd1bWVudHNbMV0/dGhpcy5jb250cm9sZ3JvdXAuYXBwbHkodGhpcyxbYXJndW1lbnRz
WzBdLCJpdGVtcy5idXR0b24iXSk6KCJvYmplY3QiPT10eXBlb2YgYXJndW1lbnRzWzBdJiZhcmd1
bWVudHNbMF0uaXRlbXMmJihhcmd1bWVudHNbMF0uaXRlbXM9e2J1dHRvbjphcmd1bWVudHNbMF0u
aXRlbXN9KSx0aGlzLmNvbnRyb2xncm91cC5hcHBseSh0aGlzLGFyZ3VtZW50cykpfSksdC51aS5i
dXR0b24sdC5leHRlbmQodC51aSx7ZGF0ZXBpY2tlcjp7dmVyc2lvbjoiMS4xMi4xIn19KTt2YXIg
bTt0LmV4dGVuZChzLnByb3RvdHlwZSx7bWFya2VyQ2xhc3NOYW1lOiJoYXNEYXRlcGlja2VyIixt
YXhSb3dzOjQsX3dpZGdldERhdGVwaWNrZXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kcERpdn0s
c2V0RGVmYXVsdHM6ZnVuY3Rpb24odCl7cmV0dXJuIGEodGhpcy5fZGVmYXVsdHMsdHx8e30pLHRo
aXN9LF9hdHRhY2hEYXRlcGlja2VyOmZ1bmN0aW9uKGUsaSl7dmFyIHMsbixvO3M9ZS5ub2RlTmFt
ZS50b0xvd2VyQ2FzZSgpLG49ImRpdiI9PT1zfHwic3BhbiI9PT1zLGUuaWR8fCh0aGlzLnV1aWQr
PTEsZS5pZD0iZHAiK3RoaXMudXVpZCksbz10aGlzLl9uZXdJbnN0KHQoZSksbiksby5zZXR0aW5n
cz10LmV4dGVuZCh7fSxpfHx7fSksImlucHV0Ij09PXM/dGhpcy5fY29ubmVjdERhdGVwaWNrZXIo
ZSxvKTpuJiZ0aGlzLl9pbmxpbmVEYXRlcGlja2VyKGUsbyl9LF9uZXdJbnN0OmZ1bmN0aW9uKGUs
aSl7dmFyIHM9ZVswXS5pZC5yZXBsYWNlKC8oW15BLVphLXowLTlfXC1dKS9nLCJcXFxcJDEiKTty
ZXR1cm57aWQ6cyxpbnB1dDplLHNlbGVjdGVkRGF5OjAsc2VsZWN0ZWRNb250aDowLHNlbGVjdGVk
WWVhcjowLGRyYXdNb250aDowLGRyYXdZZWFyOjAsaW5saW5lOmksZHBEaXY6aT9uKHQoIjxkaXYg
Y2xhc3M9JyIrdGhpcy5faW5saW5lQ2xhc3MrIiB1aS1kYXRlcGlja2VyIHVpLXdpZGdldCB1aS13
aWRnZXQtY29udGVudCB1aS1oZWxwZXItY2xlYXJmaXggdWktY29ybmVyLWFsbCc+PC9kaXY+Iikp
OnRoaXMuZHBEaXZ9fSxfY29ubmVjdERhdGVwaWNrZXI6ZnVuY3Rpb24oZSxpKXt2YXIgcz10KGUp
O2kuYXBwZW5kPXQoW10pLGkudHJpZ2dlcj10KFtdKSxzLmhhc0NsYXNzKHRoaXMubWFya2VyQ2xh
c3NOYW1lKXx8KHRoaXMuX2F0dGFjaG1lbnRzKHMsaSkscy5hZGRDbGFzcyh0aGlzLm1hcmtlckNs
YXNzTmFtZSkub24oImtleWRvd24iLHRoaXMuX2RvS2V5RG93bikub24oImtleXByZXNzIix0aGlz
Ll9kb0tleVByZXNzKS5vbigia2V5dXAiLHRoaXMuX2RvS2V5VXApLHRoaXMuX2F1dG9TaXplKGkp
LHQuZGF0YShlLCJkYXRlcGlja2VyIixpKSxpLnNldHRpbmdzLmRpc2FibGVkJiZ0aGlzLl9kaXNh
YmxlRGF0ZXBpY2tlcihlKSl9LF9hdHRhY2htZW50czpmdW5jdGlvbihlLGkpe3ZhciBzLG4sbyxh
PXRoaXMuX2dldChpLCJhcHBlbmRUZXh0Iikscj10aGlzLl9nZXQoaSwiaXNSVEwiKTtpLmFwcGVu
ZCYmaS5hcHBlbmQucmVtb3ZlKCksYSYmKGkuYXBwZW5kPXQoIjxzcGFuIGNsYXNzPSciK3RoaXMu
X2FwcGVuZENsYXNzKyInPiIrYSsiPC9zcGFuPiIpLGVbcj8iYmVmb3JlIjoiYWZ0ZXIiXShpLmFw
cGVuZCkpLGUub2ZmKCJmb2N1cyIsdGhpcy5fc2hvd0RhdGVwaWNrZXIpLGkudHJpZ2dlciYmaS50
cmlnZ2VyLnJlbW92ZSgpLHM9dGhpcy5fZ2V0KGksInNob3dPbiIpLCgiZm9jdXMiPT09c3x8ImJv
dGgiPT09cykmJmUub24oImZvY3VzIix0aGlzLl9zaG93RGF0ZXBpY2tlciksKCJidXR0b24iPT09
c3x8ImJvdGgiPT09cykmJihuPXRoaXMuX2dldChpLCJidXR0b25UZXh0Iiksbz10aGlzLl9nZXQo
aSwiYnV0dG9uSW1hZ2UiKSxpLnRyaWdnZXI9dCh0aGlzLl9nZXQoaSwiYnV0dG9uSW1hZ2VPbmx5
Iik/dCgiPGltZy8+IikuYWRkQ2xhc3ModGhpcy5fdHJpZ2dlckNsYXNzKS5hdHRyKHtzcmM6byxh
bHQ6bix0aXRsZTpufSk6dCgiPGJ1dHRvbiB0eXBlPSdidXR0b24nPjwvYnV0dG9uPiIpLmFkZENs
YXNzKHRoaXMuX3RyaWdnZXJDbGFzcykuaHRtbChvP3QoIjxpbWcvPiIpLmF0dHIoe3NyYzpvLGFs
dDpuLHRpdGxlOm59KTpuKSksZVtyPyJiZWZvcmUiOiJhZnRlciJdKGkudHJpZ2dlciksaS50cmln
Z2VyLm9uKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gdC5kYXRlcGlja2VyLl9kYXRlcGlja2Vy
U2hvd2luZyYmdC5kYXRlcGlja2VyLl9sYXN0SW5wdXQ9PT1lWzBdP3QuZGF0ZXBpY2tlci5faGlk
ZURhdGVwaWNrZXIoKTp0LmRhdGVwaWNrZXIuX2RhdGVwaWNrZXJTaG93aW5nJiZ0LmRhdGVwaWNr
ZXIuX2xhc3RJbnB1dCE9PWVbMF0/KHQuZGF0ZXBpY2tlci5faGlkZURhdGVwaWNrZXIoKSx0LmRh
dGVwaWNrZXIuX3Nob3dEYXRlcGlja2VyKGVbMF0pKTp0LmRhdGVwaWNrZXIuX3Nob3dEYXRlcGlj
a2VyKGVbMF0pLCExfSkpfSxfYXV0b1NpemU6ZnVuY3Rpb24odCl7aWYodGhpcy5fZ2V0KHQsImF1
dG9TaXplIikmJiF0LmlubGluZSl7dmFyIGUsaSxzLG4sbz1uZXcgRGF0ZSgyMDA5LDExLDIwKSxh
PXRoaXMuX2dldCh0LCJkYXRlRm9ybWF0Iik7YS5tYXRjaCgvW0RNXS8pJiYoZT1mdW5jdGlvbih0
KXtmb3IoaT0wLHM9MCxuPTA7dC5sZW5ndGg+bjtuKyspdFtuXS5sZW5ndGg+aSYmKGk9dFtuXS5s
ZW5ndGgscz1uKTtyZXR1cm4gc30sby5zZXRNb250aChlKHRoaXMuX2dldCh0LGEubWF0Y2goL01N
Lyk/Im1vbnRoTmFtZXMiOiJtb250aE5hbWVzU2hvcnQiKSkpLG8uc2V0RGF0ZShlKHRoaXMuX2dl
dCh0LGEubWF0Y2goL0RELyk/ImRheU5hbWVzIjoiZGF5TmFtZXNTaG9ydCIpKSsyMC1vLmdldERh
eSgpKSksdC5pbnB1dC5hdHRyKCJzaXplIix0aGlzLl9mb3JtYXREYXRlKHQsbykubGVuZ3RoKX19
LF9pbmxpbmVEYXRlcGlja2VyOmZ1bmN0aW9uKGUsaSl7dmFyIHM9dChlKTtzLmhhc0NsYXNzKHRo
aXMubWFya2VyQ2xhc3NOYW1lKXx8KHMuYWRkQ2xhc3ModGhpcy5tYXJrZXJDbGFzc05hbWUpLmFw
cGVuZChpLmRwRGl2KSx0LmRhdGEoZSwiZGF0ZXBpY2tlciIsaSksdGhpcy5fc2V0RGF0ZShpLHRo
aXMuX2dldERlZmF1bHREYXRlKGkpLCEwKSx0aGlzLl91cGRhdGVEYXRlcGlja2VyKGkpLHRoaXMu
X3VwZGF0ZUFsdGVybmF0ZShpKSxpLnNldHRpbmdzLmRpc2FibGVkJiZ0aGlzLl9kaXNhYmxlRGF0
ZXBpY2tlcihlKSxpLmRwRGl2LmNzcygiZGlzcGxheSIsImJsb2NrIikpfSxfZGlhbG9nRGF0ZXBp
Y2tlcjpmdW5jdGlvbihlLGkscyxuLG8pe3ZhciByLGgsbCxjLHUsZD10aGlzLl9kaWFsb2dJbnN0
O3JldHVybiBkfHwodGhpcy51dWlkKz0xLHI9ImRwIit0aGlzLnV1aWQsdGhpcy5fZGlhbG9nSW5w
dXQ9dCgiPGlucHV0IHR5cGU9J3RleHQnIGlkPSciK3IrIicgc3R5bGU9J3Bvc2l0aW9uOiBhYnNv
bHV0ZTsgdG9wOiAtMTAwcHg7IHdpZHRoOiAwcHg7Jy8+IiksdGhpcy5fZGlhbG9nSW5wdXQub24o
ImtleWRvd24iLHRoaXMuX2RvS2V5RG93biksdCgiYm9keSIpLmFwcGVuZCh0aGlzLl9kaWFsb2dJ
bnB1dCksZD10aGlzLl9kaWFsb2dJbnN0PXRoaXMuX25ld0luc3QodGhpcy5fZGlhbG9nSW5wdXQs
ITEpLGQuc2V0dGluZ3M9e30sdC5kYXRhKHRoaXMuX2RpYWxvZ0lucHV0WzBdLCJkYXRlcGlja2Vy
IixkKSksYShkLnNldHRpbmdzLG58fHt9KSxpPWkmJmkuY29uc3RydWN0b3I9PT1EYXRlP3RoaXMu
X2Zvcm1hdERhdGUoZCxpKTppLHRoaXMuX2RpYWxvZ0lucHV0LnZhbChpKSx0aGlzLl9wb3M9bz9v
Lmxlbmd0aD9vOltvLnBhZ2VYLG8ucGFnZVldOm51bGwsdGhpcy5fcG9zfHwoaD1kb2N1bWVudC5k
b2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGgsbD1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xp
ZW50SGVpZ2h0LGM9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbExlZnR8fGRvY3VtZW50
LmJvZHkuc2Nyb2xsTGVmdCx1PWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3B8fGRv
Y3VtZW50LmJvZHkuc2Nyb2xsVG9wLHRoaXMuX3Bvcz1baC8yLTEwMCtjLGwvMi0xNTArdV0pLHRo
aXMuX2RpYWxvZ0lucHV0LmNzcygibGVmdCIsdGhpcy5fcG9zWzBdKzIwKyJweCIpLmNzcygidG9w
Iix0aGlzLl9wb3NbMV0rInB4IiksZC5zZXR0aW5ncy5vblNlbGVjdD1zLHRoaXMuX2luRGlhbG9n
PSEwLHRoaXMuZHBEaXYuYWRkQ2xhc3ModGhpcy5fZGlhbG9nQ2xhc3MpLHRoaXMuX3Nob3dEYXRl
cGlja2VyKHRoaXMuX2RpYWxvZ0lucHV0WzBdKSx0LmJsb2NrVUkmJnQuYmxvY2tVSSh0aGlzLmRw
RGl2KSx0LmRhdGEodGhpcy5fZGlhbG9nSW5wdXRbMF0sImRhdGVwaWNrZXIiLGQpLHRoaXN9LF9k
ZXN0cm95RGF0ZXBpY2tlcjpmdW5jdGlvbihlKXt2YXIgaSxzPXQoZSksbj10LmRhdGEoZSwiZGF0
ZXBpY2tlciIpO3MuaGFzQ2xhc3ModGhpcy5tYXJrZXJDbGFzc05hbWUpJiYoaT1lLm5vZGVOYW1l
LnRvTG93ZXJDYXNlKCksdC5yZW1vdmVEYXRhKGUsImRhdGVwaWNrZXIiKSwiaW5wdXQiPT09aT8o
bi5hcHBlbmQucmVtb3ZlKCksbi50cmlnZ2VyLnJlbW92ZSgpLHMucmVtb3ZlQ2xhc3ModGhpcy5t
YXJrZXJDbGFzc05hbWUpLm9mZigiZm9jdXMiLHRoaXMuX3Nob3dEYXRlcGlja2VyKS5vZmYoImtl
eWRvd24iLHRoaXMuX2RvS2V5RG93bikub2ZmKCJrZXlwcmVzcyIsdGhpcy5fZG9LZXlQcmVzcyku
b2ZmKCJrZXl1cCIsdGhpcy5fZG9LZXlVcCkpOigiZGl2Ij09PWl8fCJzcGFuIj09PWkpJiZzLnJl
bW92ZUNsYXNzKHRoaXMubWFya2VyQ2xhc3NOYW1lKS5lbXB0eSgpLG09PT1uJiYobT1udWxsKSl9
LF9lbmFibGVEYXRlcGlja2VyOmZ1bmN0aW9uKGUpe3ZhciBpLHMsbj10KGUpLG89dC5kYXRhKGUs
ImRhdGVwaWNrZXIiKTtuLmhhc0NsYXNzKHRoaXMubWFya2VyQ2xhc3NOYW1lKSYmKGk9ZS5ub2Rl
TmFtZS50b0xvd2VyQ2FzZSgpLCJpbnB1dCI9PT1pPyhlLmRpc2FibGVkPSExLG8udHJpZ2dlci5m
aWx0ZXIoImJ1dHRvbiIpLmVhY2goZnVuY3Rpb24oKXt0aGlzLmRpc2FibGVkPSExfSkuZW5kKCku
ZmlsdGVyKCJpbWciKS5jc3Moe29wYWNpdHk6IjEuMCIsY3Vyc29yOiIifSkpOigiZGl2Ij09PWl8
fCJzcGFuIj09PWkpJiYocz1uLmNoaWxkcmVuKCIuIit0aGlzLl9pbmxpbmVDbGFzcykscy5jaGls
ZHJlbigpLnJlbW92ZUNsYXNzKCJ1aS1zdGF0ZS1kaXNhYmxlZCIpLHMuZmluZCgic2VsZWN0LnVp
LWRhdGVwaWNrZXItbW9udGgsIHNlbGVjdC51aS1kYXRlcGlja2VyLXllYXIiKS5wcm9wKCJkaXNh
YmxlZCIsITEpKSx0aGlzLl9kaXNhYmxlZElucHV0cz10Lm1hcCh0aGlzLl9kaXNhYmxlZElucHV0
cyxmdW5jdGlvbih0KXtyZXR1cm4gdD09PWU/bnVsbDp0fSkpfSxfZGlzYWJsZURhdGVwaWNrZXI6
ZnVuY3Rpb24oZSl7dmFyIGkscyxuPXQoZSksbz10LmRhdGEoZSwiZGF0ZXBpY2tlciIpO24uaGFz
Q2xhc3ModGhpcy5tYXJrZXJDbGFzc05hbWUpJiYoaT1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCks
ImlucHV0Ij09PWk/KGUuZGlzYWJsZWQ9ITAsby50cmlnZ2VyLmZpbHRlcigiYnV0dG9uIikuZWFj
aChmdW5jdGlvbigpe3RoaXMuZGlzYWJsZWQ9ITB9KS5lbmQoKS5maWx0ZXIoImltZyIpLmNzcyh7
b3BhY2l0eToiMC41IixjdXJzb3I6ImRlZmF1bHQifSkpOigiZGl2Ij09PWl8fCJzcGFuIj09PWkp
JiYocz1uLmNoaWxkcmVuKCIuIit0aGlzLl9pbmxpbmVDbGFzcykscy5jaGlsZHJlbigpLmFkZENs
YXNzKCJ1aS1zdGF0ZS1kaXNhYmxlZCIpLHMuZmluZCgic2VsZWN0LnVpLWRhdGVwaWNrZXItbW9u
dGgsIHNlbGVjdC51aS1kYXRlcGlja2VyLXllYXIiKS5wcm9wKCJkaXNhYmxlZCIsITApKSx0aGlz
Ll9kaXNhYmxlZElucHV0cz10Lm1hcCh0aGlzLl9kaXNhYmxlZElucHV0cyxmdW5jdGlvbih0KXty
ZXR1cm4gdD09PWU/bnVsbDp0fSksdGhpcy5fZGlzYWJsZWRJbnB1dHNbdGhpcy5fZGlzYWJsZWRJ
bnB1dHMubGVuZ3RoXT1lKX0sX2lzRGlzYWJsZWREYXRlcGlja2VyOmZ1bmN0aW9uKHQpe2lmKCF0
KXJldHVybiExO2Zvcih2YXIgZT0wO3RoaXMuX2Rpc2FibGVkSW5wdXRzLmxlbmd0aD5lO2UrKylp
Zih0aGlzLl9kaXNhYmxlZElucHV0c1tlXT09PXQpcmV0dXJuITA7cmV0dXJuITF9LF9nZXRJbnN0
OmZ1bmN0aW9uKGUpe3RyeXtyZXR1cm4gdC5kYXRhKGUsImRhdGVwaWNrZXIiKX1jYXRjaChpKXt0
aHJvdyJNaXNzaW5nIGluc3RhbmNlIGRhdGEgZm9yIHRoaXMgZGF0ZXBpY2tlciJ9fSxfb3B0aW9u
RGF0ZXBpY2tlcjpmdW5jdGlvbihlLGkscyl7dmFyIG4sbyxyLGgsbD10aGlzLl9nZXRJbnN0KGUp
O3JldHVybiAyPT09YXJndW1lbnRzLmxlbmd0aCYmInN0cmluZyI9PXR5cGVvZiBpPyJkZWZhdWx0
cyI9PT1pP3QuZXh0ZW5kKHt9LHQuZGF0ZXBpY2tlci5fZGVmYXVsdHMpOmw/ImFsbCI9PT1pP3Qu
ZXh0ZW5kKHt9LGwuc2V0dGluZ3MpOnRoaXMuX2dldChsLGkpOm51bGw6KG49aXx8e30sInN0cmlu
ZyI9PXR5cGVvZiBpJiYobj17fSxuW2ldPXMpLGwmJih0aGlzLl9jdXJJbnN0PT09bCYmdGhpcy5f
aGlkZURhdGVwaWNrZXIoKSxvPXRoaXMuX2dldERhdGVEYXRlcGlja2VyKGUsITApLHI9dGhpcy5f
Z2V0TWluTWF4RGF0ZShsLCJtaW4iKSxoPXRoaXMuX2dldE1pbk1heERhdGUobCwibWF4IiksYShs
LnNldHRpbmdzLG4pLG51bGwhPT1yJiZ2b2lkIDAhPT1uLmRhdGVGb3JtYXQmJnZvaWQgMD09PW4u
bWluRGF0ZSYmKGwuc2V0dGluZ3MubWluRGF0ZT10aGlzLl9mb3JtYXREYXRlKGwscikpLG51bGwh
PT1oJiZ2b2lkIDAhPT1uLmRhdGVGb3JtYXQmJnZvaWQgMD09PW4ubWF4RGF0ZSYmKGwuc2V0dGlu
Z3MubWF4RGF0ZT10aGlzLl9mb3JtYXREYXRlKGwsaCkpLCJkaXNhYmxlZCJpbiBuJiYobi5kaXNh
YmxlZD90aGlzLl9kaXNhYmxlRGF0ZXBpY2tlcihlKTp0aGlzLl9lbmFibGVEYXRlcGlja2VyKGUp
KSx0aGlzLl9hdHRhY2htZW50cyh0KGUpLGwpLHRoaXMuX2F1dG9TaXplKGwpLHRoaXMuX3NldERh
dGUobCxvKSx0aGlzLl91cGRhdGVBbHRlcm5hdGUobCksdGhpcy5fdXBkYXRlRGF0ZXBpY2tlcihs
KSksdm9pZCAwKX0sX2NoYW5nZURhdGVwaWNrZXI6ZnVuY3Rpb24odCxlLGkpe3RoaXMuX29wdGlv
bkRhdGVwaWNrZXIodCxlLGkpfSxfcmVmcmVzaERhdGVwaWNrZXI6ZnVuY3Rpb24odCl7dmFyIGU9
dGhpcy5fZ2V0SW5zdCh0KTtlJiZ0aGlzLl91cGRhdGVEYXRlcGlja2VyKGUpfSxfc2V0RGF0ZURh
dGVwaWNrZXI6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLl9nZXRJbnN0KHQpO2kmJih0aGlzLl9z
ZXREYXRlKGksZSksdGhpcy5fdXBkYXRlRGF0ZXBpY2tlcihpKSx0aGlzLl91cGRhdGVBbHRlcm5h
dGUoaSkpfSxfZ2V0RGF0ZURhdGVwaWNrZXI6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLl9nZXRJ
bnN0KHQpO3JldHVybiBpJiYhaS5pbmxpbmUmJnRoaXMuX3NldERhdGVGcm9tRmllbGQoaSxlKSxp
P3RoaXMuX2dldERhdGUoaSk6bnVsbH0sX2RvS2V5RG93bjpmdW5jdGlvbihlKXt2YXIgaSxzLG4s
bz10LmRhdGVwaWNrZXIuX2dldEluc3QoZS50YXJnZXQpLGE9ITAscj1vLmRwRGl2LmlzKCIudWkt
ZGF0ZXBpY2tlci1ydGwiKTtpZihvLl9rZXlFdmVudD0hMCx0LmRhdGVwaWNrZXIuX2RhdGVwaWNr
ZXJTaG93aW5nKXN3aXRjaChlLmtleUNvZGUpe2Nhc2UgOTp0LmRhdGVwaWNrZXIuX2hpZGVEYXRl
cGlja2VyKCksYT0hMTticmVhaztjYXNlIDEzOnJldHVybiBuPXQoInRkLiIrdC5kYXRlcGlja2Vy
Ll9kYXlPdmVyQ2xhc3MrIjpub3QoLiIrdC5kYXRlcGlja2VyLl9jdXJyZW50Q2xhc3MrIikiLG8u
ZHBEaXYpLG5bMF0mJnQuZGF0ZXBpY2tlci5fc2VsZWN0RGF5KGUudGFyZ2V0LG8uc2VsZWN0ZWRN
b250aCxvLnNlbGVjdGVkWWVhcixuWzBdKSxpPXQuZGF0ZXBpY2tlci5fZ2V0KG8sIm9uU2VsZWN0
IiksaT8ocz10LmRhdGVwaWNrZXIuX2Zvcm1hdERhdGUobyksaS5hcHBseShvLmlucHV0P28uaW5w
dXRbMF06bnVsbCxbcyxvXSkpOnQuZGF0ZXBpY2tlci5faGlkZURhdGVwaWNrZXIoKSwhMTtjYXNl
IDI3OnQuZGF0ZXBpY2tlci5faGlkZURhdGVwaWNrZXIoKTticmVhaztjYXNlIDMzOnQuZGF0ZXBp
Y2tlci5fYWRqdXN0RGF0ZShlLnRhcmdldCxlLmN0cmxLZXk/LXQuZGF0ZXBpY2tlci5fZ2V0KG8s
InN0ZXBCaWdNb250aHMiKTotdC5kYXRlcGlja2VyLl9nZXQobywic3RlcE1vbnRocyIpLCJNIik7
YnJlYWs7Y2FzZSAzNDp0LmRhdGVwaWNrZXIuX2FkanVzdERhdGUoZS50YXJnZXQsZS5jdHJsS2V5
Pyt0LmRhdGVwaWNrZXIuX2dldChvLCJzdGVwQmlnTW9udGhzIik6K3QuZGF0ZXBpY2tlci5fZ2V0
KG8sInN0ZXBNb250aHMiKSwiTSIpO2JyZWFrO2Nhc2UgMzU6KGUuY3RybEtleXx8ZS5tZXRhS2V5
KSYmdC5kYXRlcGlja2VyLl9jbGVhckRhdGUoZS50YXJnZXQpLGE9ZS5jdHJsS2V5fHxlLm1ldGFL
ZXk7YnJlYWs7Y2FzZSAzNjooZS5jdHJsS2V5fHxlLm1ldGFLZXkpJiZ0LmRhdGVwaWNrZXIuX2dv
dG9Ub2RheShlLnRhcmdldCksYT1lLmN0cmxLZXl8fGUubWV0YUtleTticmVhaztjYXNlIDM3Oihl
LmN0cmxLZXl8fGUubWV0YUtleSkmJnQuZGF0ZXBpY2tlci5fYWRqdXN0RGF0ZShlLnRhcmdldCxy
PzE6LTEsIkQiKSxhPWUuY3RybEtleXx8ZS5tZXRhS2V5LGUub3JpZ2luYWxFdmVudC5hbHRLZXkm
JnQuZGF0ZXBpY2tlci5fYWRqdXN0RGF0ZShlLnRhcmdldCxlLmN0cmxLZXk/LXQuZGF0ZXBpY2tl
ci5fZ2V0KG8sInN0ZXBCaWdNb250aHMiKTotdC5kYXRlcGlja2VyLl9nZXQobywic3RlcE1vbnRo
cyIpLCJNIik7YnJlYWs7Y2FzZSAzODooZS5jdHJsS2V5fHxlLm1ldGFLZXkpJiZ0LmRhdGVwaWNr
ZXIuX2FkanVzdERhdGUoZS50YXJnZXQsLTcsIkQiKSxhPWUuY3RybEtleXx8ZS5tZXRhS2V5O2Jy
ZWFrO2Nhc2UgMzk6KGUuY3RybEtleXx8ZS5tZXRhS2V5KSYmdC5kYXRlcGlja2VyLl9hZGp1c3RE
YXRlKGUudGFyZ2V0LHI/LTE6MSwiRCIpLGE9ZS5jdHJsS2V5fHxlLm1ldGFLZXksZS5vcmlnaW5h
bEV2ZW50LmFsdEtleSYmdC5kYXRlcGlja2VyLl9hZGp1c3REYXRlKGUudGFyZ2V0LGUuY3RybEtl
eT8rdC5kYXRlcGlja2VyLl9nZXQobywic3RlcEJpZ01vbnRocyIpOit0LmRhdGVwaWNrZXIuX2dl
dChvLCJzdGVwTW9udGhzIiksIk0iKTticmVhaztjYXNlIDQwOihlLmN0cmxLZXl8fGUubWV0YUtl
eSkmJnQuZGF0ZXBpY2tlci5fYWRqdXN0RGF0ZShlLnRhcmdldCw3LCJEIiksYT1lLmN0cmxLZXl8
fGUubWV0YUtleTticmVhaztkZWZhdWx0OmE9ITF9ZWxzZSAzNj09PWUua2V5Q29kZSYmZS5jdHJs
S2V5P3QuZGF0ZXBpY2tlci5fc2hvd0RhdGVwaWNrZXIodGhpcyk6YT0hMTthJiYoZS5wcmV2ZW50
RGVmYXVsdCgpLGUuc3RvcFByb3BhZ2F0aW9uKCkpfSxfZG9LZXlQcmVzczpmdW5jdGlvbihlKXt2
YXIgaSxzLG49dC5kYXRlcGlja2VyLl9nZXRJbnN0KGUudGFyZ2V0KTtyZXR1cm4gdC5kYXRlcGlj
a2VyLl9nZXQobiwiY29uc3RyYWluSW5wdXQiKT8oaT10LmRhdGVwaWNrZXIuX3Bvc3NpYmxlQ2hh
cnModC5kYXRlcGlja2VyLl9nZXQobiwiZGF0ZUZvcm1hdCIpKSxzPVN0cmluZy5mcm9tQ2hhckNv
ZGUobnVsbD09ZS5jaGFyQ29kZT9lLmtleUNvZGU6ZS5jaGFyQ29kZSksZS5jdHJsS2V5fHxlLm1l
dGFLZXl8fCIgIj5zfHwhaXx8aS5pbmRleE9mKHMpPi0xKTp2b2lkIDB9LF9kb0tleVVwOmZ1bmN0
aW9uKGUpe3ZhciBpLHM9dC5kYXRlcGlja2VyLl9nZXRJbnN0KGUudGFyZ2V0KTtpZihzLmlucHV0
LnZhbCgpIT09cy5sYXN0VmFsKXRyeXtpPXQuZGF0ZXBpY2tlci5wYXJzZURhdGUodC5kYXRlcGlj
a2VyLl9nZXQocywiZGF0ZUZvcm1hdCIpLHMuaW5wdXQ/cy5pbnB1dC52YWwoKTpudWxsLHQuZGF0
ZXBpY2tlci5fZ2V0Rm9ybWF0Q29uZmlnKHMpKSxpJiYodC5kYXRlcGlja2VyLl9zZXREYXRlRnJv
bUZpZWxkKHMpLHQuZGF0ZXBpY2tlci5fdXBkYXRlQWx0ZXJuYXRlKHMpLHQuZGF0ZXBpY2tlci5f
dXBkYXRlRGF0ZXBpY2tlcihzKSl9Y2F0Y2gobil7fXJldHVybiEwfSxfc2hvd0RhdGVwaWNrZXI6
ZnVuY3Rpb24oZSl7aWYoZT1lLnRhcmdldHx8ZSwiaW5wdXQiIT09ZS5ub2RlTmFtZS50b0xvd2Vy
Q2FzZSgpJiYoZT10KCJpbnB1dCIsZS5wYXJlbnROb2RlKVswXSksIXQuZGF0ZXBpY2tlci5faXNE
aXNhYmxlZERhdGVwaWNrZXIoZSkmJnQuZGF0ZXBpY2tlci5fbGFzdElucHV0IT09ZSl7dmFyIHMs
bixvLHIsaCxsLGM7cz10LmRhdGVwaWNrZXIuX2dldEluc3QoZSksdC5kYXRlcGlja2VyLl9jdXJJ
bnN0JiZ0LmRhdGVwaWNrZXIuX2N1ckluc3QhPT1zJiYodC5kYXRlcGlja2VyLl9jdXJJbnN0LmRw
RGl2LnN0b3AoITAsITApLHMmJnQuZGF0ZXBpY2tlci5fZGF0ZXBpY2tlclNob3dpbmcmJnQuZGF0
ZXBpY2tlci5faGlkZURhdGVwaWNrZXIodC5kYXRlcGlja2VyLl9jdXJJbnN0LmlucHV0WzBdKSks
bj10LmRhdGVwaWNrZXIuX2dldChzLCJiZWZvcmVTaG93Iiksbz1uP24uYXBwbHkoZSxbZSxzXSk6
e30sbyE9PSExJiYoYShzLnNldHRpbmdzLG8pLHMubGFzdFZhbD1udWxsLHQuZGF0ZXBpY2tlci5f
bGFzdElucHV0PWUsdC5kYXRlcGlja2VyLl9zZXREYXRlRnJvbUZpZWxkKHMpLHQuZGF0ZXBpY2tl
ci5faW5EaWFsb2cmJihlLnZhbHVlPSIiKSx0LmRhdGVwaWNrZXIuX3Bvc3x8KHQuZGF0ZXBpY2tl
ci5fcG9zPXQuZGF0ZXBpY2tlci5fZmluZFBvcyhlKSx0LmRhdGVwaWNrZXIuX3Bvc1sxXSs9ZS5v
ZmZzZXRIZWlnaHQpLHI9ITEsdChlKS5wYXJlbnRzKCkuZWFjaChmdW5jdGlvbigpe3JldHVybiBy
fD0iZml4ZWQiPT09dCh0aGlzKS5jc3MoInBvc2l0aW9uIiksIXJ9KSxoPXtsZWZ0OnQuZGF0ZXBp
Y2tlci5fcG9zWzBdLHRvcDp0LmRhdGVwaWNrZXIuX3Bvc1sxXX0sdC5kYXRlcGlja2VyLl9wb3M9
bnVsbCxzLmRwRGl2LmVtcHR5KCkscy5kcERpdi5jc3Moe3Bvc2l0aW9uOiJhYnNvbHV0ZSIsZGlz
cGxheToiYmxvY2siLHRvcDoiLTEwMDBweCJ9KSx0LmRhdGVwaWNrZXIuX3VwZGF0ZURhdGVwaWNr
ZXIocyksaD10LmRhdGVwaWNrZXIuX2NoZWNrT2Zmc2V0KHMsaCxyKSxzLmRwRGl2LmNzcyh7cG9z
aXRpb246dC5kYXRlcGlja2VyLl9pbkRpYWxvZyYmdC5ibG9ja1VJPyJzdGF0aWMiOnI/ImZpeGVk
IjoiYWJzb2x1dGUiLGRpc3BsYXk6Im5vbmUiLGxlZnQ6aC5sZWZ0KyJweCIsdG9wOmgudG9wKyJw
eCJ9KSxzLmlubGluZXx8KGw9dC5kYXRlcGlja2VyLl9nZXQocywic2hvd0FuaW0iKSxjPXQuZGF0
ZXBpY2tlci5fZ2V0KHMsImR1cmF0aW9uIikscy5kcERpdi5jc3MoInotaW5kZXgiLGkodChlKSkr
MSksdC5kYXRlcGlja2VyLl9kYXRlcGlja2VyU2hvd2luZz0hMCx0LmVmZmVjdHMmJnQuZWZmZWN0
cy5lZmZlY3RbbF0/cy5kcERpdi5zaG93KGwsdC5kYXRlcGlja2VyLl9nZXQocywic2hvd09wdGlv
bnMiKSxjKTpzLmRwRGl2W2x8fCJzaG93Il0obD9jOm51bGwpLHQuZGF0ZXBpY2tlci5fc2hvdWxk
Rm9jdXNJbnB1dChzKSYmcy5pbnB1dC50cmlnZ2VyKCJmb2N1cyIpLHQuZGF0ZXBpY2tlci5fY3Vy
SW5zdD1zKSkKK319LF91cGRhdGVEYXRlcGlja2VyOmZ1bmN0aW9uKGUpe3RoaXMubWF4Um93cz00
LG09ZSxlLmRwRGl2LmVtcHR5KCkuYXBwZW5kKHRoaXMuX2dlbmVyYXRlSFRNTChlKSksdGhpcy5f
YXR0YWNoSGFuZGxlcnMoZSk7dmFyIGkscz10aGlzLl9nZXROdW1iZXJPZk1vbnRocyhlKSxuPXNb
MV0sYT0xNyxyPWUuZHBEaXYuZmluZCgiLiIrdGhpcy5fZGF5T3ZlckNsYXNzKyIgYSIpO3IubGVu
Z3RoPjAmJm8uYXBwbHkoci5nZXQoMCkpLGUuZHBEaXYucmVtb3ZlQ2xhc3MoInVpLWRhdGVwaWNr
ZXItbXVsdGktMiB1aS1kYXRlcGlja2VyLW11bHRpLTMgdWktZGF0ZXBpY2tlci1tdWx0aS00Iiku
d2lkdGgoIiIpLG4+MSYmZS5kcERpdi5hZGRDbGFzcygidWktZGF0ZXBpY2tlci1tdWx0aS0iK24p
LmNzcygid2lkdGgiLGEqbisiZW0iKSxlLmRwRGl2WygxIT09c1swXXx8MSE9PXNbMV0/ImFkZCI6
InJlbW92ZSIpKyJDbGFzcyJdKCJ1aS1kYXRlcGlja2VyLW11bHRpIiksZS5kcERpdlsodGhpcy5f
Z2V0KGUsImlzUlRMIik/ImFkZCI6InJlbW92ZSIpKyJDbGFzcyJdKCJ1aS1kYXRlcGlja2VyLXJ0
bCIpLGU9PT10LmRhdGVwaWNrZXIuX2N1ckluc3QmJnQuZGF0ZXBpY2tlci5fZGF0ZXBpY2tlclNo
b3dpbmcmJnQuZGF0ZXBpY2tlci5fc2hvdWxkRm9jdXNJbnB1dChlKSYmZS5pbnB1dC50cmlnZ2Vy
KCJmb2N1cyIpLGUueWVhcnNodG1sJiYoaT1lLnllYXJzaHRtbCxzZXRUaW1lb3V0KGZ1bmN0aW9u
KCl7aT09PWUueWVhcnNodG1sJiZlLnllYXJzaHRtbCYmZS5kcERpdi5maW5kKCJzZWxlY3QudWkt
ZGF0ZXBpY2tlci15ZWFyOmZpcnN0IikucmVwbGFjZVdpdGgoZS55ZWFyc2h0bWwpLGk9ZS55ZWFy
c2h0bWw9bnVsbH0sMCkpfSxfc2hvdWxkRm9jdXNJbnB1dDpmdW5jdGlvbih0KXtyZXR1cm4gdC5p
bnB1dCYmdC5pbnB1dC5pcygiOnZpc2libGUiKSYmIXQuaW5wdXQuaXMoIjpkaXNhYmxlZCIpJiYh
dC5pbnB1dC5pcygiOmZvY3VzIil9LF9jaGVja09mZnNldDpmdW5jdGlvbihlLGkscyl7dmFyIG49
ZS5kcERpdi5vdXRlcldpZHRoKCksbz1lLmRwRGl2Lm91dGVySGVpZ2h0KCksYT1lLmlucHV0P2Uu
aW5wdXQub3V0ZXJXaWR0aCgpOjAscj1lLmlucHV0P2UuaW5wdXQub3V0ZXJIZWlnaHQoKTowLGg9
ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoKyhzPzA6dChkb2N1bWVudCkuc2Ny
b2xsTGVmdCgpKSxsPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQrKHM/MDp0
KGRvY3VtZW50KS5zY3JvbGxUb3AoKSk7cmV0dXJuIGkubGVmdC09dGhpcy5fZ2V0KGUsImlzUlRM
Iik/bi1hOjAsaS5sZWZ0LT1zJiZpLmxlZnQ9PT1lLmlucHV0Lm9mZnNldCgpLmxlZnQ/dChkb2N1
bWVudCkuc2Nyb2xsTGVmdCgpOjAsaS50b3AtPXMmJmkudG9wPT09ZS5pbnB1dC5vZmZzZXQoKS50
b3Arcj90KGRvY3VtZW50KS5zY3JvbGxUb3AoKTowLGkubGVmdC09TWF0aC5taW4oaS5sZWZ0LGku
bGVmdCtuPmgmJmg+bj9NYXRoLmFicyhpLmxlZnQrbi1oKTowKSxpLnRvcC09TWF0aC5taW4oaS50
b3AsaS50b3Arbz5sJiZsPm8/TWF0aC5hYnMobytyKTowKSxpfSxfZmluZFBvczpmdW5jdGlvbihl
KXtmb3IodmFyIGkscz10aGlzLl9nZXRJbnN0KGUpLG49dGhpcy5fZ2V0KHMsImlzUlRMIik7ZSYm
KCJoaWRkZW4iPT09ZS50eXBlfHwxIT09ZS5ub2RlVHlwZXx8dC5leHByLmZpbHRlcnMuaGlkZGVu
KGUpKTspZT1lW24/InByZXZpb3VzU2libGluZyI6Im5leHRTaWJsaW5nIl07cmV0dXJuIGk9dChl
KS5vZmZzZXQoKSxbaS5sZWZ0LGkudG9wXX0sX2hpZGVEYXRlcGlja2VyOmZ1bmN0aW9uKGUpe3Zh
ciBpLHMsbixvLGE9dGhpcy5fY3VySW5zdDshYXx8ZSYmYSE9PXQuZGF0YShlLCJkYXRlcGlja2Vy
Iil8fHRoaXMuX2RhdGVwaWNrZXJTaG93aW5nJiYoaT10aGlzLl9nZXQoYSwic2hvd0FuaW0iKSxz
PXRoaXMuX2dldChhLCJkdXJhdGlvbiIpLG49ZnVuY3Rpb24oKXt0LmRhdGVwaWNrZXIuX3RpZHlE
aWFsb2coYSl9LHQuZWZmZWN0cyYmKHQuZWZmZWN0cy5lZmZlY3RbaV18fHQuZWZmZWN0c1tpXSk/
YS5kcERpdi5oaWRlKGksdC5kYXRlcGlja2VyLl9nZXQoYSwic2hvd09wdGlvbnMiKSxzLG4pOmEu
ZHBEaXZbInNsaWRlRG93biI9PT1pPyJzbGlkZVVwIjoiZmFkZUluIj09PWk/ImZhZGVPdXQiOiJo
aWRlIl0oaT9zOm51bGwsbiksaXx8bigpLHRoaXMuX2RhdGVwaWNrZXJTaG93aW5nPSExLG89dGhp
cy5fZ2V0KGEsIm9uQ2xvc2UiKSxvJiZvLmFwcGx5KGEuaW5wdXQ/YS5pbnB1dFswXTpudWxsLFth
LmlucHV0P2EuaW5wdXQudmFsKCk6IiIsYV0pLHRoaXMuX2xhc3RJbnB1dD1udWxsLHRoaXMuX2lu
RGlhbG9nJiYodGhpcy5fZGlhbG9nSW5wdXQuY3NzKHtwb3NpdGlvbjoiYWJzb2x1dGUiLGxlZnQ6
IjAiLHRvcDoiLTEwMHB4In0pLHQuYmxvY2tVSSYmKHQudW5ibG9ja1VJKCksdCgiYm9keSIpLmFw
cGVuZCh0aGlzLmRwRGl2KSkpLHRoaXMuX2luRGlhbG9nPSExKX0sX3RpZHlEaWFsb2c6ZnVuY3Rp
b24odCl7dC5kcERpdi5yZW1vdmVDbGFzcyh0aGlzLl9kaWFsb2dDbGFzcykub2ZmKCIudWktZGF0
ZXBpY2tlci1jYWxlbmRhciIpfSxfY2hlY2tFeHRlcm5hbENsaWNrOmZ1bmN0aW9uKGUpe2lmKHQu
ZGF0ZXBpY2tlci5fY3VySW5zdCl7dmFyIGk9dChlLnRhcmdldCkscz10LmRhdGVwaWNrZXIuX2dl
dEluc3QoaVswXSk7KGlbMF0uaWQhPT10LmRhdGVwaWNrZXIuX21haW5EaXZJZCYmMD09PWkucGFy
ZW50cygiIyIrdC5kYXRlcGlja2VyLl9tYWluRGl2SWQpLmxlbmd0aCYmIWkuaGFzQ2xhc3ModC5k
YXRlcGlja2VyLm1hcmtlckNsYXNzTmFtZSkmJiFpLmNsb3Nlc3QoIi4iK3QuZGF0ZXBpY2tlci5f
dHJpZ2dlckNsYXNzKS5sZW5ndGgmJnQuZGF0ZXBpY2tlci5fZGF0ZXBpY2tlclNob3dpbmcmJigh
dC5kYXRlcGlja2VyLl9pbkRpYWxvZ3x8IXQuYmxvY2tVSSl8fGkuaGFzQ2xhc3ModC5kYXRlcGlj
a2VyLm1hcmtlckNsYXNzTmFtZSkmJnQuZGF0ZXBpY2tlci5fY3VySW5zdCE9PXMpJiZ0LmRhdGVw
aWNrZXIuX2hpZGVEYXRlcGlja2VyKCl9fSxfYWRqdXN0RGF0ZTpmdW5jdGlvbihlLGkscyl7dmFy
IG49dChlKSxvPXRoaXMuX2dldEluc3QoblswXSk7dGhpcy5faXNEaXNhYmxlZERhdGVwaWNrZXIo
blswXSl8fCh0aGlzLl9hZGp1c3RJbnN0RGF0ZShvLGkrKCJNIj09PXM/dGhpcy5fZ2V0KG8sInNo
b3dDdXJyZW50QXRQb3MiKTowKSxzKSx0aGlzLl91cGRhdGVEYXRlcGlja2VyKG8pKX0sX2dvdG9U
b2RheTpmdW5jdGlvbihlKXt2YXIgaSxzPXQoZSksbj10aGlzLl9nZXRJbnN0KHNbMF0pO3RoaXMu
X2dldChuLCJnb3RvQ3VycmVudCIpJiZuLmN1cnJlbnREYXk/KG4uc2VsZWN0ZWREYXk9bi5jdXJy
ZW50RGF5LG4uZHJhd01vbnRoPW4uc2VsZWN0ZWRNb250aD1uLmN1cnJlbnRNb250aCxuLmRyYXdZ
ZWFyPW4uc2VsZWN0ZWRZZWFyPW4uY3VycmVudFllYXIpOihpPW5ldyBEYXRlLG4uc2VsZWN0ZWRE
YXk9aS5nZXREYXRlKCksbi5kcmF3TW9udGg9bi5zZWxlY3RlZE1vbnRoPWkuZ2V0TW9udGgoKSxu
LmRyYXdZZWFyPW4uc2VsZWN0ZWRZZWFyPWkuZ2V0RnVsbFllYXIoKSksdGhpcy5fbm90aWZ5Q2hh
bmdlKG4pLHRoaXMuX2FkanVzdERhdGUocyl9LF9zZWxlY3RNb250aFllYXI6ZnVuY3Rpb24oZSxp
LHMpe3ZhciBuPXQoZSksbz10aGlzLl9nZXRJbnN0KG5bMF0pO29bInNlbGVjdGVkIisoIk0iPT09
cz8iTW9udGgiOiJZZWFyIildPW9bImRyYXciKygiTSI9PT1zPyJNb250aCI6IlllYXIiKV09cGFy
c2VJbnQoaS5vcHRpb25zW2kuc2VsZWN0ZWRJbmRleF0udmFsdWUsMTApLHRoaXMuX25vdGlmeUNo
YW5nZShvKSx0aGlzLl9hZGp1c3REYXRlKG4pfSxfc2VsZWN0RGF5OmZ1bmN0aW9uKGUsaSxzLG4p
e3ZhciBvLGE9dChlKTt0KG4pLmhhc0NsYXNzKHRoaXMuX3Vuc2VsZWN0YWJsZUNsYXNzKXx8dGhp
cy5faXNEaXNhYmxlZERhdGVwaWNrZXIoYVswXSl8fChvPXRoaXMuX2dldEluc3QoYVswXSksby5z
ZWxlY3RlZERheT1vLmN1cnJlbnREYXk9dCgiYSIsbikuaHRtbCgpLG8uc2VsZWN0ZWRNb250aD1v
LmN1cnJlbnRNb250aD1pLG8uc2VsZWN0ZWRZZWFyPW8uY3VycmVudFllYXI9cyx0aGlzLl9zZWxl
Y3REYXRlKGUsdGhpcy5fZm9ybWF0RGF0ZShvLG8uY3VycmVudERheSxvLmN1cnJlbnRNb250aCxv
LmN1cnJlbnRZZWFyKSkpfSxfY2xlYXJEYXRlOmZ1bmN0aW9uKGUpe3ZhciBpPXQoZSk7dGhpcy5f
c2VsZWN0RGF0ZShpLCIiKX0sX3NlbGVjdERhdGU6ZnVuY3Rpb24oZSxpKXt2YXIgcyxuPXQoZSks
bz10aGlzLl9nZXRJbnN0KG5bMF0pO2k9bnVsbCE9aT9pOnRoaXMuX2Zvcm1hdERhdGUobyksby5p
bnB1dCYmby5pbnB1dC52YWwoaSksdGhpcy5fdXBkYXRlQWx0ZXJuYXRlKG8pLHM9dGhpcy5fZ2V0
KG8sIm9uU2VsZWN0Iikscz9zLmFwcGx5KG8uaW5wdXQ/by5pbnB1dFswXTpudWxsLFtpLG9dKTpv
LmlucHV0JiZvLmlucHV0LnRyaWdnZXIoImNoYW5nZSIpLG8uaW5saW5lP3RoaXMuX3VwZGF0ZURh
dGVwaWNrZXIobyk6KHRoaXMuX2hpZGVEYXRlcGlja2VyKCksdGhpcy5fbGFzdElucHV0PW8uaW5w
dXRbMF0sIm9iamVjdCIhPXR5cGVvZiBvLmlucHV0WzBdJiZvLmlucHV0LnRyaWdnZXIoImZvY3Vz
IiksdGhpcy5fbGFzdElucHV0PW51bGwpfSxfdXBkYXRlQWx0ZXJuYXRlOmZ1bmN0aW9uKGUpe3Zh
ciBpLHMsbixvPXRoaXMuX2dldChlLCJhbHRGaWVsZCIpO28mJihpPXRoaXMuX2dldChlLCJhbHRG
b3JtYXQiKXx8dGhpcy5fZ2V0KGUsImRhdGVGb3JtYXQiKSxzPXRoaXMuX2dldERhdGUoZSksbj10
aGlzLmZvcm1hdERhdGUoaSxzLHRoaXMuX2dldEZvcm1hdENvbmZpZyhlKSksdChvKS52YWwobikp
fSxub1dlZWtlbmRzOmZ1bmN0aW9uKHQpe3ZhciBlPXQuZ2V0RGF5KCk7cmV0dXJuW2U+MCYmNj5l
LCIiXX0saXNvODYwMVdlZWs6ZnVuY3Rpb24odCl7dmFyIGUsaT1uZXcgRGF0ZSh0LmdldFRpbWUo
KSk7cmV0dXJuIGkuc2V0RGF0ZShpLmdldERhdGUoKSs0LShpLmdldERheSgpfHw3KSksZT1pLmdl
dFRpbWUoKSxpLnNldE1vbnRoKDApLGkuc2V0RGF0ZSgxKSxNYXRoLmZsb29yKE1hdGgucm91bmQo
KGUtaSkvODY0ZTUpLzcpKzF9LHBhcnNlRGF0ZTpmdW5jdGlvbihlLGkscyl7aWYobnVsbD09ZXx8
bnVsbD09aSl0aHJvdyJJbnZhbGlkIGFyZ3VtZW50cyI7aWYoaT0ib2JqZWN0Ij09dHlwZW9mIGk/
IiIraTppKyIiLCIiPT09aSlyZXR1cm4gbnVsbDt2YXIgbixvLGEscixoPTAsbD0ocz9zLnNob3J0
WWVhckN1dG9mZjpudWxsKXx8dGhpcy5fZGVmYXVsdHMuc2hvcnRZZWFyQ3V0b2ZmLGM9InN0cmlu
ZyIhPXR5cGVvZiBsP2w6KG5ldyBEYXRlKS5nZXRGdWxsWWVhcigpJTEwMCtwYXJzZUludChsLDEw
KSx1PShzP3MuZGF5TmFtZXNTaG9ydDpudWxsKXx8dGhpcy5fZGVmYXVsdHMuZGF5TmFtZXNTaG9y
dCxkPShzP3MuZGF5TmFtZXM6bnVsbCl8fHRoaXMuX2RlZmF1bHRzLmRheU5hbWVzLHA9KHM/cy5t
b250aE5hbWVzU2hvcnQ6bnVsbCl8fHRoaXMuX2RlZmF1bHRzLm1vbnRoTmFtZXNTaG9ydCxmPShz
P3MubW9udGhOYW1lczpudWxsKXx8dGhpcy5fZGVmYXVsdHMubW9udGhOYW1lcyxnPS0xLG09LTEs
Xz0tMSx2PS0xLGI9ITEseT1mdW5jdGlvbih0KXt2YXIgaT1lLmxlbmd0aD5uKzEmJmUuY2hhckF0
KG4rMSk9PT10O3JldHVybiBpJiZuKyssaX0sdz1mdW5jdGlvbih0KXt2YXIgZT15KHQpLHM9IkAi
PT09dD8xNDoiISI9PT10PzIwOiJ5Ij09PXQmJmU/NDoibyI9PT10PzM6MixuPSJ5Ij09PXQ/czox
LG89UmVnRXhwKCJeXFxkeyIrbisiLCIrcysifSIpLGE9aS5zdWJzdHJpbmcoaCkubWF0Y2gobyk7
aWYoIWEpdGhyb3ciTWlzc2luZyBudW1iZXIgYXQgcG9zaXRpb24gIitoO3JldHVybiBoKz1hWzBd
Lmxlbmd0aCxwYXJzZUludChhWzBdLDEwKX0saz1mdW5jdGlvbihlLHMsbil7dmFyIG89LTEsYT10
Lm1hcCh5KGUpP246cyxmdW5jdGlvbih0LGUpe3JldHVybltbZSx0XV19KS5zb3J0KGZ1bmN0aW9u
KHQsZSl7cmV0dXJuLSh0WzFdLmxlbmd0aC1lWzFdLmxlbmd0aCl9KTtpZih0LmVhY2goYSxmdW5j
dGlvbih0LGUpe3ZhciBzPWVbMV07cmV0dXJuIGkuc3Vic3RyKGgscy5sZW5ndGgpLnRvTG93ZXJD
YXNlKCk9PT1zLnRvTG93ZXJDYXNlKCk/KG89ZVswXSxoKz1zLmxlbmd0aCwhMSk6dm9pZCAwfSks
LTEhPT1vKXJldHVybiBvKzE7dGhyb3ciVW5rbm93biBuYW1lIGF0IHBvc2l0aW9uICIraH0seD1m
dW5jdGlvbigpe2lmKGkuY2hhckF0KGgpIT09ZS5jaGFyQXQobikpdGhyb3ciVW5leHBlY3RlZCBs
aXRlcmFsIGF0IHBvc2l0aW9uICIraDtoKyt9O2ZvcihuPTA7ZS5sZW5ndGg+bjtuKyspaWYoYiki
JyIhPT1lLmNoYXJBdChuKXx8eSgiJyIpP3goKTpiPSExO2Vsc2Ugc3dpdGNoKGUuY2hhckF0KG4p
KXtjYXNlImQiOl89dygiZCIpO2JyZWFrO2Nhc2UiRCI6aygiRCIsdSxkKTticmVhaztjYXNlIm8i
OnY9dygibyIpO2JyZWFrO2Nhc2UibSI6bT13KCJtIik7YnJlYWs7Y2FzZSJNIjptPWsoIk0iLHAs
Zik7YnJlYWs7Y2FzZSJ5IjpnPXcoInkiKTticmVhaztjYXNlIkAiOnI9bmV3IERhdGUodygiQCIp
KSxnPXIuZ2V0RnVsbFllYXIoKSxtPXIuZ2V0TW9udGgoKSsxLF89ci5nZXREYXRlKCk7YnJlYWs7
Y2FzZSIhIjpyPW5ldyBEYXRlKCh3KCIhIiktdGhpcy5fdGlja3NUbzE5NzApLzFlNCksZz1yLmdl
dEZ1bGxZZWFyKCksbT1yLmdldE1vbnRoKCkrMSxfPXIuZ2V0RGF0ZSgpO2JyZWFrO2Nhc2UiJyI6
eSgiJyIpP3goKTpiPSEwO2JyZWFrO2RlZmF1bHQ6eCgpfWlmKGkubGVuZ3RoPmgmJihhPWkuc3Vi
c3RyKGgpLCEvXlxzKy8udGVzdChhKSkpdGhyb3ciRXh0cmEvdW5wYXJzZWQgY2hhcmFjdGVycyBm
b3VuZCBpbiBkYXRlOiAiK2E7aWYoLTE9PT1nP2c9KG5ldyBEYXRlKS5nZXRGdWxsWWVhcigpOjEw
MD5nJiYoZys9KG5ldyBEYXRlKS5nZXRGdWxsWWVhcigpLShuZXcgRGF0ZSkuZ2V0RnVsbFllYXIo
KSUxMDArKGM+PWc/MDotMTAwKSksdj4tMSlmb3IobT0xLF89djs7KXtpZihvPXRoaXMuX2dldERh
eXNJbk1vbnRoKGcsbS0xKSxvPj1fKWJyZWFrO20rKyxfLT1vfWlmKHI9dGhpcy5fZGF5bGlnaHRT
YXZpbmdBZGp1c3QobmV3IERhdGUoZyxtLTEsXykpLHIuZ2V0RnVsbFllYXIoKSE9PWd8fHIuZ2V0
TW9udGgoKSsxIT09bXx8ci5nZXREYXRlKCkhPT1fKXRocm93IkludmFsaWQgZGF0ZSI7cmV0dXJu
IHJ9LEFUT006Inl5LW1tLWRkIixDT09LSUU6IkQsIGRkIE0geXkiLElTT184NjAxOiJ5eS1tbS1k
ZCIsUkZDXzgyMjoiRCwgZCBNIHkiLFJGQ184NTA6IkRELCBkZC1NLXkiLFJGQ18xMDM2OiJELCBk
IE0geSIsUkZDXzExMjM6IkQsIGQgTSB5eSIsUkZDXzI4MjI6IkQsIGQgTSB5eSIsUlNTOiJELCBk
IE0geSIsVElDS1M6IiEiLFRJTUVTVEFNUDoiQCIsVzNDOiJ5eS1tbS1kZCIsX3RpY2tzVG8xOTcw
OjFlNyo2MCo2MCoyNCooNzE4Njg1K01hdGguZmxvb3IoNDkyLjUpLU1hdGguZmxvb3IoMTkuNykr
TWF0aC5mbG9vcig0LjkyNSkpLGZvcm1hdERhdGU6ZnVuY3Rpb24odCxlLGkpe2lmKCFlKXJldHVy
biIiO3ZhciBzLG49KGk/aS5kYXlOYW1lc1Nob3J0Om51bGwpfHx0aGlzLl9kZWZhdWx0cy5kYXlO
YW1lc1Nob3J0LG89KGk/aS5kYXlOYW1lczpudWxsKXx8dGhpcy5fZGVmYXVsdHMuZGF5TmFtZXMs
YT0oaT9pLm1vbnRoTmFtZXNTaG9ydDpudWxsKXx8dGhpcy5fZGVmYXVsdHMubW9udGhOYW1lc1No
b3J0LHI9KGk/aS5tb250aE5hbWVzOm51bGwpfHx0aGlzLl9kZWZhdWx0cy5tb250aE5hbWVzLGg9
ZnVuY3Rpb24oZSl7dmFyIGk9dC5sZW5ndGg+cysxJiZ0LmNoYXJBdChzKzEpPT09ZTtyZXR1cm4g
aSYmcysrLGl9LGw9ZnVuY3Rpb24odCxlLGkpe3ZhciBzPSIiK2U7aWYoaCh0KSlmb3IoO2k+cy5s
ZW5ndGg7KXM9IjAiK3M7cmV0dXJuIHN9LGM9ZnVuY3Rpb24odCxlLGkscyl7cmV0dXJuIGgodCk/
c1tlXTppW2VdfSx1PSIiLGQ9ITE7aWYoZSlmb3Iocz0wO3QubGVuZ3RoPnM7cysrKWlmKGQpIici
IT09dC5jaGFyQXQocyl8fGgoIiciKT91Kz10LmNoYXJBdChzKTpkPSExO2Vsc2Ugc3dpdGNoKHQu
Y2hhckF0KHMpKXtjYXNlImQiOnUrPWwoImQiLGUuZ2V0RGF0ZSgpLDIpO2JyZWFrO2Nhc2UiRCI6
dSs9YygiRCIsZS5nZXREYXkoKSxuLG8pO2JyZWFrO2Nhc2UibyI6dSs9bCgibyIsTWF0aC5yb3Vu
ZCgobmV3IERhdGUoZS5nZXRGdWxsWWVhcigpLGUuZ2V0TW9udGgoKSxlLmdldERhdGUoKSkuZ2V0
VGltZSgpLW5ldyBEYXRlKGUuZ2V0RnVsbFllYXIoKSwwLDApLmdldFRpbWUoKSkvODY0ZTUpLDMp
O2JyZWFrO2Nhc2UibSI6dSs9bCgibSIsZS5nZXRNb250aCgpKzEsMik7YnJlYWs7Y2FzZSJNIjp1
Kz1jKCJNIixlLmdldE1vbnRoKCksYSxyKTticmVhaztjYXNlInkiOnUrPWgoInkiKT9lLmdldEZ1
bGxZZWFyKCk6KDEwPmUuZ2V0RnVsbFllYXIoKSUxMDA/IjAiOiIiKStlLmdldEZ1bGxZZWFyKCkl
MTAwO2JyZWFrO2Nhc2UiQCI6dSs9ZS5nZXRUaW1lKCk7YnJlYWs7Y2FzZSIhIjp1Kz0xZTQqZS5n
ZXRUaW1lKCkrdGhpcy5fdGlja3NUbzE5NzA7YnJlYWs7Y2FzZSInIjpoKCInIik/dSs9IiciOmQ9
ITA7YnJlYWs7ZGVmYXVsdDp1Kz10LmNoYXJBdChzKX1yZXR1cm4gdX0sX3Bvc3NpYmxlQ2hhcnM6
ZnVuY3Rpb24odCl7dmFyIGUsaT0iIixzPSExLG49ZnVuY3Rpb24oaSl7dmFyIHM9dC5sZW5ndGg+
ZSsxJiZ0LmNoYXJBdChlKzEpPT09aTtyZXR1cm4gcyYmZSsrLHN9O2ZvcihlPTA7dC5sZW5ndGg+
ZTtlKyspaWYocykiJyIhPT10LmNoYXJBdChlKXx8bigiJyIpP2krPXQuY2hhckF0KGUpOnM9ITE7
ZWxzZSBzd2l0Y2godC5jaGFyQXQoZSkpe2Nhc2UiZCI6Y2FzZSJtIjpjYXNlInkiOmNhc2UiQCI6
aSs9IjAxMjM0NTY3ODkiO2JyZWFrO2Nhc2UiRCI6Y2FzZSJNIjpyZXR1cm4gbnVsbDtjYXNlIici
Om4oIiciKT9pKz0iJyI6cz0hMDticmVhaztkZWZhdWx0OmkrPXQuY2hhckF0KGUpfXJldHVybiBp
fSxfZ2V0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHZvaWQgMCE9PXQuc2V0dGluZ3NbZV0/dC5zZXR0
aW5nc1tlXTp0aGlzLl9kZWZhdWx0c1tlXX0sX3NldERhdGVGcm9tRmllbGQ6ZnVuY3Rpb24odCxl
KXtpZih0LmlucHV0LnZhbCgpIT09dC5sYXN0VmFsKXt2YXIgaT10aGlzLl9nZXQodCwiZGF0ZUZv
cm1hdCIpLHM9dC5sYXN0VmFsPXQuaW5wdXQ/dC5pbnB1dC52YWwoKTpudWxsLG49dGhpcy5fZ2V0
RGVmYXVsdERhdGUodCksbz1uLGE9dGhpcy5fZ2V0Rm9ybWF0Q29uZmlnKHQpO3RyeXtvPXRoaXMu
cGFyc2VEYXRlKGkscyxhKXx8bn1jYXRjaChyKXtzPWU/IiI6c310LnNlbGVjdGVkRGF5PW8uZ2V0
RGF0ZSgpLHQuZHJhd01vbnRoPXQuc2VsZWN0ZWRNb250aD1vLmdldE1vbnRoKCksdC5kcmF3WWVh
cj10LnNlbGVjdGVkWWVhcj1vLmdldEZ1bGxZZWFyKCksdC5jdXJyZW50RGF5PXM/by5nZXREYXRl
KCk6MCx0LmN1cnJlbnRNb250aD1zP28uZ2V0TW9udGgoKTowLHQuY3VycmVudFllYXI9cz9vLmdl
dEZ1bGxZZWFyKCk6MCx0aGlzLl9hZGp1c3RJbnN0RGF0ZSh0KX19LF9nZXREZWZhdWx0RGF0ZTpm
dW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcmVzdHJpY3RNaW5NYXgodCx0aGlzLl9kZXRlcm1pbmVE
YXRlKHQsdGhpcy5fZ2V0KHQsImRlZmF1bHREYXRlIiksbmV3IERhdGUpKX0sX2RldGVybWluZURh
dGU6ZnVuY3Rpb24oZSxpLHMpe3ZhciBuPWZ1bmN0aW9uKHQpe3ZhciBlPW5ldyBEYXRlO3JldHVy
biBlLnNldERhdGUoZS5nZXREYXRlKCkrdCksZX0sbz1mdW5jdGlvbihpKXt0cnl7cmV0dXJuIHQu
ZGF0ZXBpY2tlci5wYXJzZURhdGUodC5kYXRlcGlja2VyLl9nZXQoZSwiZGF0ZUZvcm1hdCIpLGks
dC5kYXRlcGlja2VyLl9nZXRGb3JtYXRDb25maWcoZSkpfWNhdGNoKHMpe31mb3IodmFyIG49KGku
dG9Mb3dlckNhc2UoKS5tYXRjaCgvXmMvKT90LmRhdGVwaWNrZXIuX2dldERhdGUoZSk6bnVsbCl8
fG5ldyBEYXRlLG89bi5nZXRGdWxsWWVhcigpLGE9bi5nZXRNb250aCgpLHI9bi5nZXREYXRlKCks
aD0vKFsrXC1dP1swLTldKylccyooZHxEfHd8V3xtfE18eXxZKT8vZyxsPWguZXhlYyhpKTtsOyl7
c3dpdGNoKGxbMl18fCJkIil7Y2FzZSJkIjpjYXNlIkQiOnIrPXBhcnNlSW50KGxbMV0sMTApO2Jy
ZWFrO2Nhc2UidyI6Y2FzZSJXIjpyKz03KnBhcnNlSW50KGxbMV0sMTApO2JyZWFrO2Nhc2UibSI6
Y2FzZSJNIjphKz1wYXJzZUludChsWzFdLDEwKSxyPU1hdGgubWluKHIsdC5kYXRlcGlja2VyLl9n
ZXREYXlzSW5Nb250aChvLGEpKTticmVhaztjYXNlInkiOmNhc2UiWSI6bys9cGFyc2VJbnQobFsx
XSwxMCkscj1NYXRoLm1pbihyLHQuZGF0ZXBpY2tlci5fZ2V0RGF5c0luTW9udGgobyxhKSl9bD1o
LmV4ZWMoaSl9cmV0dXJuIG5ldyBEYXRlKG8sYSxyKX0sYT1udWxsPT1pfHwiIj09PWk/czoic3Ry
aW5nIj09dHlwZW9mIGk/byhpKToibnVtYmVyIj09dHlwZW9mIGk/aXNOYU4oaSk/czpuKGkpOm5l
dyBEYXRlKGkuZ2V0VGltZSgpKTtyZXR1cm4gYT1hJiYiSW52YWxpZCBEYXRlIj09IiIrYT9zOmEs
YSYmKGEuc2V0SG91cnMoMCksYS5zZXRNaW51dGVzKDApLGEuc2V0U2Vjb25kcygwKSxhLnNldE1p
bGxpc2Vjb25kcygwKSksdGhpcy5fZGF5bGlnaHRTYXZpbmdBZGp1c3QoYSl9LF9kYXlsaWdodFNh
dmluZ0FkanVzdDpmdW5jdGlvbih0KXtyZXR1cm4gdD8odC5zZXRIb3Vycyh0LmdldEhvdXJzKCk+
MTI/dC5nZXRIb3VycygpKzI6MCksdCk6bnVsbH0sX3NldERhdGU6ZnVuY3Rpb24odCxlLGkpe3Zh
ciBzPSFlLG49dC5zZWxlY3RlZE1vbnRoLG89dC5zZWxlY3RlZFllYXIsYT10aGlzLl9yZXN0cmlj
dE1pbk1heCh0LHRoaXMuX2RldGVybWluZURhdGUodCxlLG5ldyBEYXRlKSk7dC5zZWxlY3RlZERh
eT10LmN1cnJlbnREYXk9YS5nZXREYXRlKCksdC5kcmF3TW9udGg9dC5zZWxlY3RlZE1vbnRoPXQu
Y3VycmVudE1vbnRoPWEuZ2V0TW9udGgoKSx0LmRyYXdZZWFyPXQuc2VsZWN0ZWRZZWFyPXQuY3Vy
cmVudFllYXI9YS5nZXRGdWxsWWVhcigpLG49PT10LnNlbGVjdGVkTW9udGgmJm89PT10LnNlbGVj
dGVkWWVhcnx8aXx8dGhpcy5fbm90aWZ5Q2hhbmdlKHQpLHRoaXMuX2FkanVzdEluc3REYXRlKHQp
LHQuaW5wdXQmJnQuaW5wdXQudmFsKHM/IiI6dGhpcy5fZm9ybWF0RGF0ZSh0KSl9LF9nZXREYXRl
OmZ1bmN0aW9uKHQpe3ZhciBlPSF0LmN1cnJlbnRZZWFyfHx0LmlucHV0JiYiIj09PXQuaW5wdXQu
dmFsKCk/bnVsbDp0aGlzLl9kYXlsaWdodFNhdmluZ0FkanVzdChuZXcgRGF0ZSh0LmN1cnJlbnRZ
ZWFyLHQuY3VycmVudE1vbnRoLHQuY3VycmVudERheSkpO3JldHVybiBlfSxfYXR0YWNoSGFuZGxl
cnM6ZnVuY3Rpb24oZSl7dmFyIGk9dGhpcy5fZ2V0KGUsInN0ZXBNb250aHMiKSxzPSIjIitlLmlk
LnJlcGxhY2UoL1xcXFwvZywiXFwiKTtlLmRwRGl2LmZpbmQoIltkYXRhLWhhbmRsZXJdIikubWFw
KGZ1bmN0aW9uKCl7dmFyIGU9e3ByZXY6ZnVuY3Rpb24oKXt0LmRhdGVwaWNrZXIuX2FkanVzdERh
dGUocywtaSwiTSIpfSxuZXh0OmZ1bmN0aW9uKCl7dC5kYXRlcGlja2VyLl9hZGp1c3REYXRlKHMs
K2ksIk0iKX0saGlkZTpmdW5jdGlvbigpe3QuZGF0ZXBpY2tlci5faGlkZURhdGVwaWNrZXIoKX0s
dG9kYXk6ZnVuY3Rpb24oKXt0LmRhdGVwaWNrZXIuX2dvdG9Ub2RheShzKX0sc2VsZWN0RGF5OmZ1
bmN0aW9uKCl7cmV0dXJuIHQuZGF0ZXBpY2tlci5fc2VsZWN0RGF5KHMsK3RoaXMuZ2V0QXR0cmli
dXRlKCJkYXRhLW1vbnRoIiksK3RoaXMuZ2V0QXR0cmlidXRlKCJkYXRhLXllYXIiKSx0aGlzKSwh
MX0sc2VsZWN0TW9udGg6ZnVuY3Rpb24oKXtyZXR1cm4gdC5kYXRlcGlja2VyLl9zZWxlY3RNb250
aFllYXIocyx0aGlzLCJNIiksITF9LHNlbGVjdFllYXI6ZnVuY3Rpb24oKXtyZXR1cm4gdC5kYXRl
cGlja2VyLl9zZWxlY3RNb250aFllYXIocyx0aGlzLCJZIiksITF9fTt0KHRoaXMpLm9uKHRoaXMu
Z2V0QXR0cmlidXRlKCJkYXRhLWV2ZW50IiksZVt0aGlzLmdldEF0dHJpYnV0ZSgiZGF0YS1oYW5k
bGVyIildKX0pfSxfZ2VuZXJhdGVIVE1MOmZ1bmN0aW9uKHQpe3ZhciBlLGkscyxuLG8sYSxyLGgs
bCxjLHUsZCxwLGYsZyxtLF8sdixiLHksdyxrLHgsQyxELEksVCxQLE0sUyxILHosTyxBLE4sVyxF
LEYsTCxSPW5ldyBEYXRlLEI9dGhpcy5fZGF5bGlnaHRTYXZpbmdBZGp1c3QobmV3IERhdGUoUi5n
ZXRGdWxsWWVhcigpLFIuZ2V0TW9udGgoKSxSLmdldERhdGUoKSkpLFk9dGhpcy5fZ2V0KHQsImlz
UlRMIiksaj10aGlzLl9nZXQodCwic2hvd0J1dHRvblBhbmVsIikscT10aGlzLl9nZXQodCwiaGlk
ZUlmTm9QcmV2TmV4dCIpLEs9dGhpcy5fZ2V0KHQsIm5hdmlnYXRpb25Bc0RhdGVGb3JtYXQiKSxV
PXRoaXMuX2dldE51bWJlck9mTW9udGhzKHQpLFY9dGhpcy5fZ2V0KHQsInNob3dDdXJyZW50QXRQ
b3MiKSwkPXRoaXMuX2dldCh0LCJzdGVwTW9udGhzIiksWD0xIT09VVswXXx8MSE9PVVbMV0sRz10
aGlzLl9kYXlsaWdodFNhdmluZ0FkanVzdCh0LmN1cnJlbnREYXk/bmV3IERhdGUodC5jdXJyZW50
WWVhcix0LmN1cnJlbnRNb250aCx0LmN1cnJlbnREYXkpOm5ldyBEYXRlKDk5OTksOSw5KSksUT10
aGlzLl9nZXRNaW5NYXhEYXRlKHQsIm1pbiIpLEo9dGhpcy5fZ2V0TWluTWF4RGF0ZSh0LCJtYXgi
KSxaPXQuZHJhd01vbnRoLVYsdGU9dC5kcmF3WWVhcjtpZigwPlomJihaKz0xMix0ZS0tKSxKKWZv
cihlPXRoaXMuX2RheWxpZ2h0U2F2aW5nQWRqdXN0KG5ldyBEYXRlKEouZ2V0RnVsbFllYXIoKSxK
LmdldE1vbnRoKCktVVswXSpVWzFdKzEsSi5nZXREYXRlKCkpKSxlPVEmJlE+ZT9ROmU7dGhpcy5f
ZGF5bGlnaHRTYXZpbmdBZGp1c3QobmV3IERhdGUodGUsWiwxKSk+ZTspWi0tLDA+WiYmKFo9MTEs
dGUtLSk7Zm9yKHQuZHJhd01vbnRoPVosdC5kcmF3WWVhcj10ZSxpPXRoaXMuX2dldCh0LCJwcmV2
VGV4dCIpLGk9Sz90aGlzLmZvcm1hdERhdGUoaSx0aGlzLl9kYXlsaWdodFNhdmluZ0FkanVzdChu
ZXcgRGF0ZSh0ZSxaLSQsMSkpLHRoaXMuX2dldEZvcm1hdENvbmZpZyh0KSk6aSxzPXRoaXMuX2Nh
bkFkanVzdE1vbnRoKHQsLTEsdGUsWik/IjxhIGNsYXNzPSd1aS1kYXRlcGlja2VyLXByZXYgdWkt
Y29ybmVyLWFsbCcgZGF0YS1oYW5kbGVyPSdwcmV2JyBkYXRhLWV2ZW50PSdjbGljaycgdGl0bGU9
JyIraSsiJz48c3BhbiBjbGFzcz0ndWktaWNvbiB1aS1pY29uLWNpcmNsZS10cmlhbmdsZS0iKyhZ
PyJlIjoidyIpKyInPiIraSsiPC9zcGFuPjwvYT4iOnE/IiI6IjxhIGNsYXNzPSd1aS1kYXRlcGlj
a2VyLXByZXYgdWktY29ybmVyLWFsbCB1aS1zdGF0ZS1kaXNhYmxlZCcgdGl0bGU9JyIraSsiJz48
c3BhbiBjbGFzcz0ndWktaWNvbiB1aS1pY29uLWNpcmNsZS10cmlhbmdsZS0iKyhZPyJlIjoidyIp
KyInPiIraSsiPC9zcGFuPjwvYT4iLG49dGhpcy5fZ2V0KHQsIm5leHRUZXh0Iiksbj1LP3RoaXMu
Zm9ybWF0RGF0ZShuLHRoaXMuX2RheWxpZ2h0U2F2aW5nQWRqdXN0KG5ldyBEYXRlKHRlLForJCwx
KSksdGhpcy5fZ2V0Rm9ybWF0Q29uZmlnKHQpKTpuLG89dGhpcy5fY2FuQWRqdXN0TW9udGgodCwx
LHRlLFopPyI8YSBjbGFzcz0ndWktZGF0ZXBpY2tlci1uZXh0IHVpLWNvcm5lci1hbGwnIGRhdGEt
aGFuZGxlcj0nbmV4dCcgZGF0YS1ldmVudD0nY2xpY2snIHRpdGxlPSciK24rIic+PHNwYW4gY2xh
c3M9J3VpLWljb24gdWktaWNvbi1jaXJjbGUtdHJpYW5nbGUtIisoWT8idyI6ImUiKSsiJz4iK24r
Ijwvc3Bhbj48L2E+IjpxPyIiOiI8YSBjbGFzcz0ndWktZGF0ZXBpY2tlci1uZXh0IHVpLWNvcm5l
ci1hbGwgdWktc3RhdGUtZGlzYWJsZWQnIHRpdGxlPSciK24rIic+PHNwYW4gY2xhc3M9J3VpLWlj
b24gdWktaWNvbi1jaXJjbGUtdHJpYW5nbGUtIisoWT8idyI6ImUiKSsiJz4iK24rIjwvc3Bhbj48
L2E+IixhPXRoaXMuX2dldCh0LCJjdXJyZW50VGV4dCIpLHI9dGhpcy5fZ2V0KHQsImdvdG9DdXJy
ZW50IikmJnQuY3VycmVudERheT9HOkIsYT1LP3RoaXMuZm9ybWF0RGF0ZShhLHIsdGhpcy5fZ2V0
Rm9ybWF0Q29uZmlnKHQpKTphLGg9dC5pbmxpbmU/IiI6IjxidXR0b24gdHlwZT0nYnV0dG9uJyBj
bGFzcz0ndWktZGF0ZXBpY2tlci1jbG9zZSB1aS1zdGF0ZS1kZWZhdWx0IHVpLXByaW9yaXR5LXBy
aW1hcnkgdWktY29ybmVyLWFsbCcgZGF0YS1oYW5kbGVyPSdoaWRlJyBkYXRhLWV2ZW50PSdjbGlj
ayc+Iit0aGlzLl9nZXQodCwiY2xvc2VUZXh0IikrIjwvYnV0dG9uPiIsbD1qPyI8ZGl2IGNsYXNz
PSd1aS1kYXRlcGlja2VyLWJ1dHRvbnBhbmUgdWktd2lkZ2V0LWNvbnRlbnQnPiIrKFk/aDoiIikr
KHRoaXMuX2lzSW5SYW5nZSh0LHIpPyI8YnV0dG9uIHR5cGU9J2J1dHRvbicgY2xhc3M9J3VpLWRh
dGVwaWNrZXItY3VycmVudCB1aS1zdGF0ZS1kZWZhdWx0IHVpLXByaW9yaXR5LXNlY29uZGFyeSB1
aS1jb3JuZXItYWxsJyBkYXRhLWhhbmRsZXI9J3RvZGF5JyBkYXRhLWV2ZW50PSdjbGljayc+Iith
KyI8L2J1dHRvbj4iOiIiKSsoWT8iIjpoKSsiPC9kaXY+IjoiIixjPXBhcnNlSW50KHRoaXMuX2dl
dCh0LCJmaXJzdERheSIpLDEwKSxjPWlzTmFOKGMpPzA6Yyx1PXRoaXMuX2dldCh0LCJzaG93V2Vl
ayIpLGQ9dGhpcy5fZ2V0KHQsImRheU5hbWVzIikscD10aGlzLl9nZXQodCwiZGF5TmFtZXNNaW4i
KSxmPXRoaXMuX2dldCh0LCJtb250aE5hbWVzIiksZz10aGlzLl9nZXQodCwibW9udGhOYW1lc1No
b3J0IiksbT10aGlzLl9nZXQodCwiYmVmb3JlU2hvd0RheSIpLF89dGhpcy5fZ2V0KHQsInNob3dP
dGhlck1vbnRocyIpLHY9dGhpcy5fZ2V0KHQsInNlbGVjdE90aGVyTW9udGhzIiksYj10aGlzLl9n
ZXREZWZhdWx0RGF0ZSh0KSx5PSIiLGs9MDtVWzBdPms7aysrKXtmb3IoeD0iIix0aGlzLm1heFJv
d3M9NCxDPTA7VVsxXT5DO0MrKyl7aWYoRD10aGlzLl9kYXlsaWdodFNhdmluZ0FkanVzdChuZXcg
RGF0ZSh0ZSxaLHQuc2VsZWN0ZWREYXkpKSxJPSIgdWktY29ybmVyLWFsbCIsVD0iIixYKXtpZihU
Kz0iPGRpdiBjbGFzcz0ndWktZGF0ZXBpY2tlci1ncm91cCIsVVsxXT4xKXN3aXRjaChDKXtjYXNl
IDA6VCs9IiB1aS1kYXRlcGlja2VyLWdyb3VwLWZpcnN0IixJPSIgdWktY29ybmVyLSIrKFk/InJp
Z2h0IjoibGVmdCIpO2JyZWFrO2Nhc2UgVVsxXS0xOlQrPSIgdWktZGF0ZXBpY2tlci1ncm91cC1s
YXN0IixJPSIgdWktY29ybmVyLSIrKFk/ImxlZnQiOiJyaWdodCIpO2JyZWFrO2RlZmF1bHQ6VCs9
IiB1aS1kYXRlcGlja2VyLWdyb3VwLW1pZGRsZSIsST0iIn1UKz0iJz4ifWZvcihUKz0iPGRpdiBj
bGFzcz0ndWktZGF0ZXBpY2tlci1oZWFkZXIgdWktd2lkZ2V0LWhlYWRlciB1aS1oZWxwZXItY2xl
YXJmaXgiK0krIic+IisoL2FsbHxsZWZ0Ly50ZXN0KEkpJiYwPT09az9ZP286czoiIikrKC9hbGx8
cmlnaHQvLnRlc3QoSSkmJjA9PT1rP1k/czpvOiIiKSt0aGlzLl9nZW5lcmF0ZU1vbnRoWWVhckhl
YWRlcih0LFosdGUsUSxKLGs+MHx8Qz4wLGYsZykrIjwvZGl2Pjx0YWJsZSBjbGFzcz0ndWktZGF0
ZXBpY2tlci1jYWxlbmRhcic+PHRoZWFkPiIrIjx0cj4iLFA9dT8iPHRoIGNsYXNzPSd1aS1kYXRl
cGlja2VyLXdlZWstY29sJz4iK3RoaXMuX2dldCh0LCJ3ZWVrSGVhZGVyIikrIjwvdGg+IjoiIix3
PTA7Nz53O3crKylNPSh3K2MpJTcsUCs9Ijx0aCBzY29wZT0nY29sJyIrKCh3K2MrNiklNz49NT8i
IGNsYXNzPSd1aS1kYXRlcGlja2VyLXdlZWstZW5kJyI6IiIpKyI+IisiPHNwYW4gdGl0bGU9JyIr
ZFtNXSsiJz4iK3BbTV0rIjwvc3Bhbj48L3RoPiI7Zm9yKFQrPVArIjwvdHI+PC90aGVhZD48dGJv
ZHk+IixTPXRoaXMuX2dldERheXNJbk1vbnRoKHRlLFopLHRlPT09dC5zZWxlY3RlZFllYXImJlo9
PT10LnNlbGVjdGVkTW9udGgmJih0LnNlbGVjdGVkRGF5PU1hdGgubWluKHQuc2VsZWN0ZWREYXks
UykpLEg9KHRoaXMuX2dldEZpcnN0RGF5T2ZNb250aCh0ZSxaKS1jKzcpJTcsej1NYXRoLmNlaWwo
KEgrUykvNyksTz1YP3RoaXMubWF4Um93cz56P3RoaXMubWF4Um93czp6OnosdGhpcy5tYXhSb3dz
PU8sQT10aGlzLl9kYXlsaWdodFNhdmluZ0FkanVzdChuZXcgRGF0ZSh0ZSxaLDEtSCkpLE49MDtP
Pk47TisrKXtmb3IoVCs9Ijx0cj4iLFc9dT8iPHRkIGNsYXNzPSd1aS1kYXRlcGlja2VyLXdlZWst
Y29sJz4iK3RoaXMuX2dldCh0LCJjYWxjdWxhdGVXZWVrIikoQSkrIjwvdGQ+IjoiIix3PTA7Nz53
O3crKylFPW0/bS5hcHBseSh0LmlucHV0P3QuaW5wdXRbMF06bnVsbCxbQV0pOlshMCwiIl0sRj1B
LmdldE1vbnRoKCkhPT1aLEw9RiYmIXZ8fCFFWzBdfHxRJiZRPkF8fEomJkE+SixXKz0iPHRkIGNs
YXNzPSciKygodytjKzYpJTc+PTU/IiB1aS1kYXRlcGlja2VyLXdlZWstZW5kIjoiIikrKEY/IiB1
aS1kYXRlcGlja2VyLW90aGVyLW1vbnRoIjoiIikrKEEuZ2V0VGltZSgpPT09RC5nZXRUaW1lKCkm
Jlo9PT10LnNlbGVjdGVkTW9udGgmJnQuX2tleUV2ZW50fHxiLmdldFRpbWUoKT09PUEuZ2V0VGlt
ZSgpJiZiLmdldFRpbWUoKT09PUQuZ2V0VGltZSgpPyIgIit0aGlzLl9kYXlPdmVyQ2xhc3M6IiIp
KyhMPyIgIit0aGlzLl91bnNlbGVjdGFibGVDbGFzcysiIHVpLXN0YXRlLWRpc2FibGVkIjoiIikr
KEYmJiFfPyIiOiIgIitFWzFdKyhBLmdldFRpbWUoKT09PUcuZ2V0VGltZSgpPyIgIit0aGlzLl9j
dXJyZW50Q2xhc3M6IiIpKyhBLmdldFRpbWUoKT09PUIuZ2V0VGltZSgpPyIgdWktZGF0ZXBpY2tl
ci10b2RheSI6IiIpKSsiJyIrKEYmJiFffHwhRVsyXT8iIjoiIHRpdGxlPSciK0VbMl0ucmVwbGFj
ZSgvJy9nLCImIzM5OyIpKyInIikrKEw/IiI6IiBkYXRhLWhhbmRsZXI9J3NlbGVjdERheScgZGF0
YS1ldmVudD0nY2xpY2snIGRhdGEtbW9udGg9JyIrQS5nZXRNb250aCgpKyInIGRhdGEteWVhcj0n
IitBLmdldEZ1bGxZZWFyKCkrIiciKSsiPiIrKEYmJiFfPyImI3hhMDsiOkw/IjxzcGFuIGNsYXNz
PSd1aS1zdGF0ZS1kZWZhdWx0Jz4iK0EuZ2V0RGF0ZSgpKyI8L3NwYW4+IjoiPGEgY2xhc3M9J3Vp
LXN0YXRlLWRlZmF1bHQiKyhBLmdldFRpbWUoKT09PUIuZ2V0VGltZSgpPyIgdWktc3RhdGUtaGln
aGxpZ2h0IjoiIikrKEEuZ2V0VGltZSgpPT09Ry5nZXRUaW1lKCk/IiB1aS1zdGF0ZS1hY3RpdmUi
OiIiKSsoRj8iIHVpLXByaW9yaXR5LXNlY29uZGFyeSI6IiIpKyInIGhyZWY9JyMnPiIrQS5nZXRE
YXRlKCkrIjwvYT4iKSsiPC90ZD4iLEEuc2V0RGF0ZShBLmdldERhdGUoKSsxKSxBPXRoaXMuX2Rh
eWxpZ2h0U2F2aW5nQWRqdXN0KEEpO1QrPVcrIjwvdHI+In1aKyssWj4xMSYmKFo9MCx0ZSsrKSxU
Kz0iPC90Ym9keT48L3RhYmxlPiIrKFg/IjwvZGl2PiIrKFVbMF0+MCYmQz09PVVbMV0tMT8iPGRp
diBjbGFzcz0ndWktZGF0ZXBpY2tlci1yb3ctYnJlYWsnPjwvZGl2PiI6IiIpOiIiKSx4Kz1UfXkr
PXh9cmV0dXJuIHkrPWwsdC5fa2V5RXZlbnQ9ITEseX0sX2dlbmVyYXRlTW9udGhZZWFySGVhZGVy
OmZ1bmN0aW9uKHQsZSxpLHMsbixvLGEscil7dmFyIGgsbCxjLHUsZCxwLGYsZyxtPXRoaXMuX2dl
dCh0LCJjaGFuZ2VNb250aCIpLF89dGhpcy5fZ2V0KHQsImNoYW5nZVllYXIiKSx2PXRoaXMuX2dl
dCh0LCJzaG93TW9udGhBZnRlclllYXIiKSxiPSI8ZGl2IGNsYXNzPSd1aS1kYXRlcGlja2VyLXRp
dGxlJz4iLHk9IiI7aWYob3x8IW0peSs9IjxzcGFuIGNsYXNzPSd1aS1kYXRlcGlja2VyLW1vbnRo
Jz4iK2FbZV0rIjwvc3Bhbj4iO2Vsc2V7Zm9yKGg9cyYmcy5nZXRGdWxsWWVhcigpPT09aSxsPW4m
Jm4uZ2V0RnVsbFllYXIoKT09PWkseSs9IjxzZWxlY3QgY2xhc3M9J3VpLWRhdGVwaWNrZXItbW9u
dGgnIGRhdGEtaGFuZGxlcj0nc2VsZWN0TW9udGgnIGRhdGEtZXZlbnQ9J2NoYW5nZSc+IixjPTA7
MTI+YztjKyspKCFofHxjPj1zLmdldE1vbnRoKCkpJiYoIWx8fG4uZ2V0TW9udGgoKT49YykmJih5
Kz0iPG9wdGlvbiB2YWx1ZT0nIitjKyInIisoYz09PWU/IiBzZWxlY3RlZD0nc2VsZWN0ZWQnIjoi
IikrIj4iK3JbY10rIjwvb3B0aW9uPiIpO3krPSI8L3NlbGVjdD4ifWlmKHZ8fChiKz15KyghbyYm
bSYmXz8iIjoiJiN4YTA7IikpLCF0LnllYXJzaHRtbClpZih0LnllYXJzaHRtbD0iIixvfHwhXyli
Kz0iPHNwYW4gY2xhc3M9J3VpLWRhdGVwaWNrZXIteWVhcic+IitpKyI8L3NwYW4+IjtlbHNle2Zv
cih1PXRoaXMuX2dldCh0LCJ5ZWFyUmFuZ2UiKS5zcGxpdCgiOiIpLGQ9KG5ldyBEYXRlKS5nZXRG
dWxsWWVhcigpLHA9ZnVuY3Rpb24odCl7dmFyIGU9dC5tYXRjaCgvY1srXC1dLiovKT9pK3BhcnNl
SW50KHQuc3Vic3RyaW5nKDEpLDEwKTp0Lm1hdGNoKC9bK1wtXS4qLyk/ZCtwYXJzZUludCh0LDEw
KTpwYXJzZUludCh0LDEwKTtyZXR1cm4gaXNOYU4oZSk/ZDplfSxmPXAodVswXSksZz1NYXRoLm1h
eChmLHAodVsxXXx8IiIpKSxmPXM/TWF0aC5tYXgoZixzLmdldEZ1bGxZZWFyKCkpOmYsZz1uP01h
dGgubWluKGcsbi5nZXRGdWxsWWVhcigpKTpnLHQueWVhcnNodG1sKz0iPHNlbGVjdCBjbGFzcz0n
dWktZGF0ZXBpY2tlci15ZWFyJyBkYXRhLWhhbmRsZXI9J3NlbGVjdFllYXInIGRhdGEtZXZlbnQ9
J2NoYW5nZSc+IjtnPj1mO2YrKyl0LnllYXJzaHRtbCs9IjxvcHRpb24gdmFsdWU9JyIrZisiJyIr
KGY9PT1pPyIgc2VsZWN0ZWQ9J3NlbGVjdGVkJyI6IiIpKyI+IitmKyI8L29wdGlvbj4iO3QueWVh
cnNodG1sKz0iPC9zZWxlY3Q+IixiKz10LnllYXJzaHRtbCx0LnllYXJzaHRtbD1udWxsfXJldHVy
biBiKz10aGlzLl9nZXQodCwieWVhclN1ZmZpeCIpLHYmJihiKz0oIW8mJm0mJl8/IiI6IiYjeGEw
OyIpK3kpLGIrPSI8L2Rpdj4ifSxfYWRqdXN0SW5zdERhdGU6ZnVuY3Rpb24odCxlLGkpe3ZhciBz
PXQuc2VsZWN0ZWRZZWFyKygiWSI9PT1pP2U6MCksbj10LnNlbGVjdGVkTW9udGgrKCJNIj09PWk/
ZTowKSxvPU1hdGgubWluKHQuc2VsZWN0ZWREYXksdGhpcy5fZ2V0RGF5c0luTW9udGgocyxuKSkr
KCJEIj09PWk/ZTowKSxhPXRoaXMuX3Jlc3RyaWN0TWluTWF4KHQsdGhpcy5fZGF5bGlnaHRTYXZp
bmdBZGp1c3QobmV3IERhdGUocyxuLG8pKSk7dC5zZWxlY3RlZERheT1hLmdldERhdGUoKSx0LmRy
YXdNb250aD10LnNlbGVjdGVkTW9udGg9YS5nZXRNb250aCgpLHQuZHJhd1llYXI9dC5zZWxlY3Rl
ZFllYXI9YS5nZXRGdWxsWWVhcigpLCgiTSI9PT1pfHwiWSI9PT1pKSYmdGhpcy5fbm90aWZ5Q2hh
bmdlKHQpfSxfcmVzdHJpY3RNaW5NYXg6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLl9nZXRNaW5N
YXhEYXRlKHQsIm1pbiIpLHM9dGhpcy5fZ2V0TWluTWF4RGF0ZSh0LCJtYXgiKSxuPWkmJmk+ZT9p
OmU7cmV0dXJuIHMmJm4+cz9zOm59LF9ub3RpZnlDaGFuZ2U6ZnVuY3Rpb24odCl7dmFyIGU9dGhp
cy5fZ2V0KHQsIm9uQ2hhbmdlTW9udGhZZWFyIik7ZSYmZS5hcHBseSh0LmlucHV0P3QuaW5wdXRb
MF06bnVsbCxbdC5zZWxlY3RlZFllYXIsdC5zZWxlY3RlZE1vbnRoKzEsdF0pfSxfZ2V0TnVtYmVy
T2ZNb250aHM6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fZ2V0KHQsIm51bWJlck9mTW9udGhzIik7
cmV0dXJuIG51bGw9PWU/WzEsMV06Im51bWJlciI9PXR5cGVvZiBlP1sxLGVdOmV9LF9nZXRNaW5N
YXhEYXRlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuX2RldGVybWluZURhdGUodCx0aGlzLl9n
ZXQodCxlKyJEYXRlIiksbnVsbCl9LF9nZXREYXlzSW5Nb250aDpmdW5jdGlvbih0LGUpe3JldHVy
biAzMi10aGlzLl9kYXlsaWdodFNhdmluZ0FkanVzdChuZXcgRGF0ZSh0LGUsMzIpKS5nZXREYXRl
KCl9LF9nZXRGaXJzdERheU9mTW9udGg6ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IERhdGUodCxl
LDEpLmdldERheSgpfSxfY2FuQWRqdXN0TW9udGg6ZnVuY3Rpb24odCxlLGkscyl7dmFyIG49dGhp
cy5fZ2V0TnVtYmVyT2ZNb250aHModCksbz10aGlzLl9kYXlsaWdodFNhdmluZ0FkanVzdChuZXcg
RGF0ZShpLHMrKDA+ZT9lOm5bMF0qblsxXSksMSkpO3JldHVybiAwPmUmJm8uc2V0RGF0ZSh0aGlz
Ll9nZXREYXlzSW5Nb250aChvLmdldEZ1bGxZZWFyKCksby5nZXRNb250aCgpKSksdGhpcy5faXNJ
blJhbmdlKHQsbyl9LF9pc0luUmFuZ2U6ZnVuY3Rpb24odCxlKXt2YXIgaSxzLG49dGhpcy5fZ2V0
TWluTWF4RGF0ZSh0LCJtaW4iKSxvPXRoaXMuX2dldE1pbk1heERhdGUodCwibWF4IiksYT1udWxs
LHI9bnVsbCxoPXRoaXMuX2dldCh0LCJ5ZWFyUmFuZ2UiKTtyZXR1cm4gaCYmKGk9aC5zcGxpdCgi
OiIpLHM9KG5ldyBEYXRlKS5nZXRGdWxsWWVhcigpLGE9cGFyc2VJbnQoaVswXSwxMCkscj1wYXJz
ZUludChpWzFdLDEwKSxpWzBdLm1hdGNoKC9bK1wtXS4qLykmJihhKz1zKSxpWzFdLm1hdGNoKC9b
K1wtXS4qLykmJihyKz1zKSksKCFufHxlLmdldFRpbWUoKT49bi5nZXRUaW1lKCkpJiYoIW98fGUu
Z2V0VGltZSgpPD1vLmdldFRpbWUoKSkmJighYXx8ZS5nZXRGdWxsWWVhcigpPj1hKSYmKCFyfHxy
Pj1lLmdldEZ1bGxZZWFyKCkpfSxfZ2V0Rm9ybWF0Q29uZmlnOmZ1bmN0aW9uKHQpe3ZhciBlPXRo
aXMuX2dldCh0LCJzaG9ydFllYXJDdXRvZmYiKTtyZXR1cm4gZT0ic3RyaW5nIiE9dHlwZW9mIGU/
ZToobmV3IERhdGUpLmdldEZ1bGxZZWFyKCklMTAwK3BhcnNlSW50KGUsMTApLHtzaG9ydFllYXJD
dXRvZmY6ZSxkYXlOYW1lc1Nob3J0OnRoaXMuX2dldCh0LCJkYXlOYW1lc1Nob3J0IiksZGF5TmFt
ZXM6dGhpcy5fZ2V0KHQsImRheU5hbWVzIiksbW9udGhOYW1lc1Nob3J0OnRoaXMuX2dldCh0LCJt
b250aE5hbWVzU2hvcnQiKSxtb250aE5hbWVzOnRoaXMuX2dldCh0LCJtb250aE5hbWVzIil9fSxf
Zm9ybWF0RGF0ZTpmdW5jdGlvbih0LGUsaSxzKXtlfHwodC5jdXJyZW50RGF5PXQuc2VsZWN0ZWRE
YXksdC5jdXJyZW50TW9udGg9dC5zZWxlY3RlZE1vbnRoLHQuY3VycmVudFllYXI9dC5zZWxlY3Rl
ZFllYXIpO3ZhciBuPWU/Im9iamVjdCI9PXR5cGVvZiBlP2U6dGhpcy5fZGF5bGlnaHRTYXZpbmdB
ZGp1c3QobmV3IERhdGUocyxpLGUpKTp0aGlzLl9kYXlsaWdodFNhdmluZ0FkanVzdChuZXcgRGF0
ZSh0LmN1cnJlbnRZZWFyLHQuY3VycmVudE1vbnRoLHQuY3VycmVudERheSkpO3JldHVybiB0aGlz
LmZvcm1hdERhdGUodGhpcy5fZ2V0KHQsImRhdGVGb3JtYXQiKSxuLHRoaXMuX2dldEZvcm1hdENv
bmZpZyh0KSl9fSksdC5mbi5kYXRlcGlja2VyPWZ1bmN0aW9uKGUpe2lmKCF0aGlzLmxlbmd0aCly
ZXR1cm4gdGhpczt0LmRhdGVwaWNrZXIuaW5pdGlhbGl6ZWR8fCh0KGRvY3VtZW50KS5vbigibW91
c2Vkb3duIix0LmRhdGVwaWNrZXIuX2NoZWNrRXh0ZXJuYWxDbGljayksdC5kYXRlcGlja2VyLmlu
aXRpYWxpemVkPSEwKSwwPT09dCgiIyIrdC5kYXRlcGlja2VyLl9tYWluRGl2SWQpLmxlbmd0aCYm
dCgiYm9keSIpLmFwcGVuZCh0LmRhdGVwaWNrZXIuZHBEaXYpO3ZhciBpPUFycmF5LnByb3RvdHlw
ZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKTtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIGV8fCJpc0Rp
c2FibGVkIiE9PWUmJiJnZXREYXRlIiE9PWUmJiJ3aWRnZXQiIT09ZT8ib3B0aW9uIj09PWUmJjI9
PT1hcmd1bWVudHMubGVuZ3RoJiYic3RyaW5nIj09dHlwZW9mIGFyZ3VtZW50c1sxXT90LmRhdGVw
aWNrZXJbIl8iK2UrIkRhdGVwaWNrZXIiXS5hcHBseSh0LmRhdGVwaWNrZXIsW3RoaXNbMF1dLmNv
bmNhdChpKSk6dGhpcy5lYWNoKGZ1bmN0aW9uKCl7InN0cmluZyI9PXR5cGVvZiBlP3QuZGF0ZXBp
Y2tlclsiXyIrZSsiRGF0ZXBpY2tlciJdLmFwcGx5KHQuZGF0ZXBpY2tlcixbdGhpc10uY29uY2F0
KGkpKTp0LmRhdGVwaWNrZXIuX2F0dGFjaERhdGVwaWNrZXIodGhpcyxlKX0pOnQuZGF0ZXBpY2tl
clsiXyIrZSsiRGF0ZXBpY2tlciJdLmFwcGx5KHQuZGF0ZXBpY2tlcixbdGhpc1swXV0uY29uY2F0
KGkpKX0sdC5kYXRlcGlja2VyPW5ldyBzLHQuZGF0ZXBpY2tlci5pbml0aWFsaXplZD0hMSx0LmRh
dGVwaWNrZXIudXVpZD0obmV3IERhdGUpLmdldFRpbWUoKSx0LmRhdGVwaWNrZXIudmVyc2lvbj0i
MS4xMi4xIix0LmRhdGVwaWNrZXIsdC51aS5pZT0hIS9tc2llIFtcdy5dKy8uZXhlYyhuYXZpZ2F0
b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkpO3ZhciBfPSExO3QoZG9jdW1lbnQpLm9uKCJtb3Vz
ZXVwIixmdW5jdGlvbigpe189ITF9KSx0LndpZGdldCgidWkubW91c2UiLHt2ZXJzaW9uOiIxLjEy
LjEiLG9wdGlvbnM6e2NhbmNlbDoiaW5wdXQsIHRleHRhcmVhLCBidXR0b24sIHNlbGVjdCwgb3B0
aW9uIixkaXN0YW5jZToxLGRlbGF5OjB9LF9tb3VzZUluaXQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlz
O3RoaXMuZWxlbWVudC5vbigibW91c2Vkb3duLiIrdGhpcy53aWRnZXROYW1lLGZ1bmN0aW9uKHQp
e3JldHVybiBlLl9tb3VzZURvd24odCl9KS5vbigiY2xpY2suIit0aGlzLndpZGdldE5hbWUsZnVu
Y3Rpb24oaSl7cmV0dXJuITA9PT10LmRhdGEoaS50YXJnZXQsZS53aWRnZXROYW1lKyIucHJldmVu
dENsaWNrRXZlbnQiKT8odC5yZW1vdmVEYXRhKGkudGFyZ2V0LGUud2lkZ2V0TmFtZSsiLnByZXZl
bnRDbGlja0V2ZW50IiksaS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKSwhMSk6dm9pZCAwfSks
dGhpcy5zdGFydGVkPSExfSxfbW91c2VEZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy5lbGVtZW50Lm9m
ZigiLiIrdGhpcy53aWRnZXROYW1lKSx0aGlzLl9tb3VzZU1vdmVEZWxlZ2F0ZSYmdGhpcy5kb2N1
bWVudC5vZmYoIm1vdXNlbW92ZS4iK3RoaXMud2lkZ2V0TmFtZSx0aGlzLl9tb3VzZU1vdmVEZWxl
Z2F0ZSkub2ZmKCJtb3VzZXVwLiIrdGhpcy53aWRnZXROYW1lLHRoaXMuX21vdXNlVXBEZWxlZ2F0
ZSl9LF9tb3VzZURvd246ZnVuY3Rpb24oZSl7aWYoIV8pe3RoaXMuX21vdXNlTW92ZWQ9ITEsdGhp
cy5fbW91c2VTdGFydGVkJiZ0aGlzLl9tb3VzZVVwKGUpLHRoaXMuX21vdXNlRG93bkV2ZW50PWU7
dmFyIGk9dGhpcyxzPTE9PT1lLndoaWNoLG49InN0cmluZyI9PXR5cGVvZiB0aGlzLm9wdGlvbnMu
Y2FuY2VsJiZlLnRhcmdldC5ub2RlTmFtZT90KGUudGFyZ2V0KS5jbG9zZXN0KHRoaXMub3B0aW9u
cy5jYW5jZWwpLmxlbmd0aDohMTtyZXR1cm4gcyYmIW4mJnRoaXMuX21vdXNlQ2FwdHVyZShlKT8o
dGhpcy5tb3VzZURlbGF5TWV0PSF0aGlzLm9wdGlvbnMuZGVsYXksdGhpcy5tb3VzZURlbGF5TWV0
fHwodGhpcy5fbW91c2VEZWxheVRpbWVyPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtpLm1vdXNlRGVs
YXlNZXQ9ITB9LHRoaXMub3B0aW9ucy5kZWxheSkpLHRoaXMuX21vdXNlRGlzdGFuY2VNZXQoZSkm
JnRoaXMuX21vdXNlRGVsYXlNZXQoZSkmJih0aGlzLl9tb3VzZVN0YXJ0ZWQ9dGhpcy5fbW91c2VT
dGFydChlKSE9PSExLCF0aGlzLl9tb3VzZVN0YXJ0ZWQpPyhlLnByZXZlbnREZWZhdWx0KCksITAp
OighMD09PXQuZGF0YShlLnRhcmdldCx0aGlzLndpZGdldE5hbWUrIi5wcmV2ZW50Q2xpY2tFdmVu
dCIpJiZ0LnJlbW92ZURhdGEoZS50YXJnZXQsdGhpcy53aWRnZXROYW1lKyIucHJldmVudENsaWNr
RXZlbnQiKSx0aGlzLl9tb3VzZU1vdmVEZWxlZ2F0ZT1mdW5jdGlvbih0KXtyZXR1cm4gaS5fbW91
c2VNb3ZlKHQpfSx0aGlzLl9tb3VzZVVwRGVsZWdhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIGkuX21v
dXNlVXAodCl9LHRoaXMuZG9jdW1lbnQub24oIm1vdXNlbW92ZS4iK3RoaXMud2lkZ2V0TmFtZSx0
aGlzLl9tb3VzZU1vdmVEZWxlZ2F0ZSkub24oIm1vdXNldXAuIit0aGlzLndpZGdldE5hbWUsdGhp
cy5fbW91c2VVcERlbGVnYXRlKSxlLnByZXZlbnREZWZhdWx0KCksXz0hMCwhMCkpOiEwfX0sX21v
dXNlTW92ZTpmdW5jdGlvbihlKXtpZih0aGlzLl9tb3VzZU1vdmVkKXtpZih0LnVpLmllJiYoIWRv
Y3VtZW50LmRvY3VtZW50TW9kZXx8OT5kb2N1bWVudC5kb2N1bWVudE1vZGUpJiYhZS5idXR0b24p
cmV0dXJuIHRoaXMuX21vdXNlVXAoZSk7aWYoIWUud2hpY2gpaWYoZS5vcmlnaW5hbEV2ZW50LmFs
dEtleXx8ZS5vcmlnaW5hbEV2ZW50LmN0cmxLZXl8fGUub3JpZ2luYWxFdmVudC5tZXRhS2V5fHxl
Lm9yaWdpbmFsRXZlbnQuc2hpZnRLZXkpdGhpcy5pZ25vcmVNaXNzaW5nV2hpY2g9ITA7ZWxzZSBp
ZighdGhpcy5pZ25vcmVNaXNzaW5nV2hpY2gpcmV0dXJuIHRoaXMuX21vdXNlVXAoZSl9cmV0dXJu
KGUud2hpY2h8fGUuYnV0dG9uKSYmKHRoaXMuX21vdXNlTW92ZWQ9ITApLHRoaXMuX21vdXNlU3Rh
cnRlZD8odGhpcy5fbW91c2VEcmFnKGUpLGUucHJldmVudERlZmF1bHQoKSk6KHRoaXMuX21vdXNl
RGlzdGFuY2VNZXQoZSkmJnRoaXMuX21vdXNlRGVsYXlNZXQoZSkmJih0aGlzLl9tb3VzZVN0YXJ0
ZWQ9dGhpcy5fbW91c2VTdGFydCh0aGlzLl9tb3VzZURvd25FdmVudCxlKSE9PSExLHRoaXMuX21v
dXNlU3RhcnRlZD90aGlzLl9tb3VzZURyYWcoZSk6dGhpcy5fbW91c2VVcChlKSksIXRoaXMuX21v
dXNlU3RhcnRlZCl9LF9tb3VzZVVwOmZ1bmN0aW9uKGUpe3RoaXMuZG9jdW1lbnQub2ZmKCJtb3Vz
ZW1vdmUuIit0aGlzLndpZGdldE5hbWUsdGhpcy5fbW91c2VNb3ZlRGVsZWdhdGUpLm9mZigibW91
c2V1cC4iK3RoaXMud2lkZ2V0TmFtZSx0aGlzLl9tb3VzZVVwRGVsZWdhdGUpLHRoaXMuX21vdXNl
U3RhcnRlZCYmKHRoaXMuX21vdXNlU3RhcnRlZD0hMSxlLnRhcmdldD09PXRoaXMuX21vdXNlRG93
bkV2ZW50LnRhcmdldCYmdC5kYXRhKGUudGFyZ2V0LHRoaXMud2lkZ2V0TmFtZSsiLnByZXZlbnRD
bGlja0V2ZW50IiwhMCksdGhpcy5fbW91c2VTdG9wKGUpKSx0aGlzLl9tb3VzZURlbGF5VGltZXIm
JihjbGVhclRpbWVvdXQodGhpcy5fbW91c2VEZWxheVRpbWVyKSxkZWxldGUgdGhpcy5fbW91c2VE
ZWxheVRpbWVyKSx0aGlzLmlnbm9yZU1pc3NpbmdXaGljaD0hMSxfPSExLGUucHJldmVudERlZmF1
bHQoKX0sX21vdXNlRGlzdGFuY2VNZXQ6ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgubWF4KE1hdGgu
YWJzKHRoaXMuX21vdXNlRG93bkV2ZW50LnBhZ2VYLXQucGFnZVgpLE1hdGguYWJzKHRoaXMuX21v
dXNlRG93bkV2ZW50LnBhZ2VZLXQucGFnZVkpKT49dGhpcy5vcHRpb25zLmRpc3RhbmNlfSxfbW91
c2VEZWxheU1ldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1vdXNlRGVsYXlNZXR9LF9tb3VzZVN0
YXJ0OmZ1bmN0aW9uKCl7fSxfbW91c2VEcmFnOmZ1bmN0aW9uKCl7fSxfbW91c2VTdG9wOmZ1bmN0
aW9uKCl7fSxfbW91c2VDYXB0dXJlOmZ1bmN0aW9uKCl7cmV0dXJuITB9fSksdC51aS5wbHVnaW49
e2FkZDpmdW5jdGlvbihlLGkscyl7dmFyIG4sbz10LnVpW2VdLnByb3RvdHlwZTtmb3IobiBpbiBz
KW8ucGx1Z2luc1tuXT1vLnBsdWdpbnNbbl18fFtdLG8ucGx1Z2luc1tuXS5wdXNoKFtpLHNbbl1d
KX0sY2FsbDpmdW5jdGlvbih0LGUsaSxzKXt2YXIgbixvPXQucGx1Z2luc1tlXTtpZihvJiYoc3x8
dC5lbGVtZW50WzBdLnBhcmVudE5vZGUmJjExIT09dC5lbGVtZW50WzBdLnBhcmVudE5vZGUubm9k
ZVR5cGUpKWZvcihuPTA7by5sZW5ndGg+bjtuKyspdC5vcHRpb25zW29bbl1bMF1dJiZvW25dWzFd
LmFwcGx5KHQuZWxlbWVudCxpKX19LHQudWkuc2FmZUJsdXI9ZnVuY3Rpb24oZSl7ZSYmImJvZHki
IT09ZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpJiZ0KGUpLnRyaWdnZXIoImJsdXIiKX0sdC53aWRn
ZXQoInVpLmRyYWdnYWJsZSIsdC51aS5tb3VzZSx7dmVyc2lvbjoiMS4xMi4xIix3aWRnZXRFdmVu
dFByZWZpeDoiZHJhZyIsb3B0aW9uczp7YWRkQ2xhc3NlczohMCxhcHBlbmRUbzoicGFyZW50Iixh
eGlzOiExLGNvbm5lY3RUb1NvcnRhYmxlOiExLGNvbnRhaW5tZW50OiExLGN1cnNvcjoiYXV0byIs
Y3Vyc29yQXQ6ITEsZ3JpZDohMSxoYW5kbGU6ITEsaGVscGVyOiJvcmlnaW5hbCIsaWZyYW1lRml4
OiExLG9wYWNpdHk6ITEscmVmcmVzaFBvc2l0aW9uczohMSxyZXZlcnQ6ITEscmV2ZXJ0RHVyYXRp
b246NTAwLHNjb3BlOiJkZWZhdWx0IixzY3JvbGw6ITAsc2Nyb2xsU2Vuc2l0aXZpdHk6MjAsc2Ny
b2xsU3BlZWQ6MjAsc25hcDohMSxzbmFwTW9kZToiYm90aCIsc25hcFRvbGVyYW5jZToyMCxzdGFj
azohMSx6SW5kZXg6ITEsZHJhZzpudWxsLHN0YXJ0Om51bGwsc3RvcDpudWxsfSxfY3JlYXRlOmZ1
bmN0aW9uKCl7Im9yaWdpbmFsIj09PXRoaXMub3B0aW9ucy5oZWxwZXImJnRoaXMuX3NldFBvc2l0
aW9uUmVsYXRpdmUoKSx0aGlzLm9wdGlvbnMuYWRkQ2xhc3NlcyYmdGhpcy5fYWRkQ2xhc3MoInVp
LWRyYWdnYWJsZSIpLHRoaXMuX3NldEhhbmRsZUNsYXNzTmFtZSgpLHRoaXMuX21vdXNlSW5pdCgp
fSxfc2V0T3B0aW9uOmZ1bmN0aW9uKHQsZSl7dGhpcy5fc3VwZXIodCxlKSwiaGFuZGxlIj09PXQm
Jih0aGlzLl9yZW1vdmVIYW5kbGVDbGFzc05hbWUoKSx0aGlzLl9zZXRIYW5kbGVDbGFzc05hbWUo
KSl9LF9kZXN0cm95OmZ1bmN0aW9uKCl7cmV0dXJuKHRoaXMuaGVscGVyfHx0aGlzLmVsZW1lbnQp
LmlzKCIudWktZHJhZ2dhYmxlLWRyYWdnaW5nIik/KHRoaXMuZGVzdHJveU9uQ2xlYXI9ITAsdm9p
ZCAwKToodGhpcy5fcmVtb3ZlSGFuZGxlQ2xhc3NOYW1lKCksdGhpcy5fbW91c2VEZXN0cm95KCks
dm9pZCAwKX0sX21vdXNlQ2FwdHVyZTpmdW5jdGlvbihlKXt2YXIgaT10aGlzLm9wdGlvbnM7cmV0
dXJuIHRoaXMuaGVscGVyfHxpLmRpc2FibGVkfHx0KGUudGFyZ2V0KS5jbG9zZXN0KCIudWktcmVz
aXphYmxlLWhhbmRsZSIpLmxlbmd0aD4wPyExOih0aGlzLmhhbmRsZT10aGlzLl9nZXRIYW5kbGUo
ZSksdGhpcy5oYW5kbGU/KHRoaXMuX2JsdXJBY3RpdmVFbGVtZW50KGUpLHRoaXMuX2Jsb2NrRnJh
bWVzKGkuaWZyYW1lRml4PT09ITA/ImlmcmFtZSI6aS5pZnJhbWVGaXgpLCEwKTohMSl9LF9ibG9j
a0ZyYW1lczpmdW5jdGlvbihlKXt0aGlzLmlmcmFtZUJsb2Nrcz10aGlzLmRvY3VtZW50LmZpbmQo
ZSkubWFwKGZ1bmN0aW9uKCl7dmFyIGU9dCh0aGlzKTtyZXR1cm4gdCgiPGRpdj4iKS5jc3MoInBv
c2l0aW9uIiwiYWJzb2x1dGUiKS5hcHBlbmRUbyhlLnBhcmVudCgpKS5vdXRlcldpZHRoKGUub3V0
ZXJXaWR0aCgpKS5vdXRlckhlaWdodChlLm91dGVySGVpZ2h0KCkpLm9mZnNldChlLm9mZnNldCgp
KVswXX0pfSxfdW5ibG9ja0ZyYW1lczpmdW5jdGlvbigpe3RoaXMuaWZyYW1lQmxvY2tzJiYodGhp
cy5pZnJhbWVCbG9ja3MucmVtb3ZlKCksZGVsZXRlIHRoaXMuaWZyYW1lQmxvY2tzKX0sX2JsdXJB
Y3RpdmVFbGVtZW50OmZ1bmN0aW9uKGUpe3ZhciBpPXQudWkuc2FmZUFjdGl2ZUVsZW1lbnQodGhp
cy5kb2N1bWVudFswXSkscz10KGUudGFyZ2V0KTtzLmNsb3Nlc3QoaSkubGVuZ3RofHx0LnVpLnNh
ZmVCbHVyKGkpfSxfbW91c2VTdGFydDpmdW5jdGlvbihlKXt2YXIgaT10aGlzLm9wdGlvbnM7cmV0
dXJuIHRoaXMuaGVscGVyPXRoaXMuX2NyZWF0ZUhlbHBlcihlKSx0aGlzLl9hZGRDbGFzcyh0aGlz
LmhlbHBlciwidWktZHJhZ2dhYmxlLWRyYWdnaW5nIiksdGhpcy5fY2FjaGVIZWxwZXJQcm9wb3J0
aW9ucygpLHQudWkuZGRtYW5hZ2VyJiYodC51aS5kZG1hbmFnZXIuY3VycmVudD10aGlzKSx0aGlz
Ll9jYWNoZU1hcmdpbnMoKSx0aGlzLmNzc1Bvc2l0aW9uPXRoaXMuaGVscGVyLmNzcygicG9zaXRp
b24iKSx0aGlzLnNjcm9sbFBhcmVudD10aGlzLmhlbHBlci5zY3JvbGxQYXJlbnQoITApLHRoaXMu
b2Zmc2V0UGFyZW50PXRoaXMuaGVscGVyLm9mZnNldFBhcmVudCgpLHRoaXMuaGFzRml4ZWRBbmNl
c3Rvcj10aGlzLmhlbHBlci5wYXJlbnRzKCkuZmlsdGVyKGZ1bmN0aW9uKCl7cmV0dXJuImZpeGVk
Ij09PXQodGhpcykuY3NzKCJwb3NpdGlvbiIpfSkubGVuZ3RoPjAsdGhpcy5wb3NpdGlvbkFicz10
aGlzLmVsZW1lbnQub2Zmc2V0KCksdGhpcy5fcmVmcmVzaE9mZnNldHMoZSksdGhpcy5vcmlnaW5h
bFBvc2l0aW9uPXRoaXMucG9zaXRpb249dGhpcy5fZ2VuZXJhdGVQb3NpdGlvbihlLCExKSx0aGlz
Lm9yaWdpbmFsUGFnZVg9ZS5wYWdlWCx0aGlzLm9yaWdpbmFsUGFnZVk9ZS5wYWdlWSxpLmN1cnNv
ckF0JiZ0aGlzLl9hZGp1c3RPZmZzZXRGcm9tSGVscGVyKGkuY3Vyc29yQXQpLHRoaXMuX3NldENv
bnRhaW5tZW50KCksdGhpcy5fdHJpZ2dlcigic3RhcnQiLGUpPT09ITE/KHRoaXMuX2NsZWFyKCks
ITEpOih0aGlzLl9jYWNoZUhlbHBlclByb3BvcnRpb25zKCksdC51aS5kZG1hbmFnZXImJiFpLmRy
b3BCZWhhdmlvdXImJnQudWkuZGRtYW5hZ2VyLnByZXBhcmVPZmZzZXRzKHRoaXMsZSksdGhpcy5f
bW91c2VEcmFnKGUsITApLHQudWkuZGRtYW5hZ2VyJiZ0LnVpLmRkbWFuYWdlci5kcmFnU3RhcnQo
dGhpcyxlKSwhMCl9LF9yZWZyZXNoT2Zmc2V0czpmdW5jdGlvbih0KXt0aGlzLm9mZnNldD17dG9w
OnRoaXMucG9zaXRpb25BYnMudG9wLXRoaXMubWFyZ2lucy50b3AsbGVmdDp0aGlzLnBvc2l0aW9u
QWJzLmxlZnQtdGhpcy5tYXJnaW5zLmxlZnQsc2Nyb2xsOiExLHBhcmVudDp0aGlzLl9nZXRQYXJl
bnRPZmZzZXQoKSxyZWxhdGl2ZTp0aGlzLl9nZXRSZWxhdGl2ZU9mZnNldCgpfSx0aGlzLm9mZnNl
dC5jbGljaz17bGVmdDp0LnBhZ2VYLXRoaXMub2Zmc2V0LmxlZnQsdG9wOnQucGFnZVktdGhpcy5v
ZmZzZXQudG9wfX0sX21vdXNlRHJhZzpmdW5jdGlvbihlLGkpe2lmKHRoaXMuaGFzRml4ZWRBbmNl
c3RvciYmKHRoaXMub2Zmc2V0LnBhcmVudD10aGlzLl9nZXRQYXJlbnRPZmZzZXQoKSksdGhpcy5w
b3NpdGlvbj10aGlzLl9nZW5lcmF0ZVBvc2l0aW9uKGUsITApLHRoaXMucG9zaXRpb25BYnM9dGhp
cy5fY29udmVydFBvc2l0aW9uVG8oImFic29sdXRlIiksIWkpe3ZhciBzPXRoaXMuX3VpSGFzaCgp
O2lmKHRoaXMuX3RyaWdnZXIoImRyYWciLGUscyk9PT0hMSlyZXR1cm4gdGhpcy5fbW91c2VVcChu
ZXcgdC5FdmVudCgibW91c2V1cCIsZSkpLCExO3RoaXMucG9zaXRpb249cy5wb3NpdGlvbn1yZXR1
cm4gdGhpcy5oZWxwZXJbMF0uc3R5bGUubGVmdD10aGlzLnBvc2l0aW9uLmxlZnQrInB4Iix0aGlz
LmhlbHBlclswXS5zdHlsZS50b3A9dGhpcy5wb3NpdGlvbi50b3ArInB4Iix0LnVpLmRkbWFuYWdl
ciYmdC51aS5kZG1hbmFnZXIuZHJhZyh0aGlzLGUpLCExfSxfbW91c2VTdG9wOmZ1bmN0aW9uKGUp
e3ZhciBpPXRoaXMscz0hMTtyZXR1cm4gdC51aS5kZG1hbmFnZXImJiF0aGlzLm9wdGlvbnMuZHJv
cEJlaGF2aW91ciYmKHM9dC51aS5kZG1hbmFnZXIuZHJvcCh0aGlzLGUpKSx0aGlzLmRyb3BwZWQm
JihzPXRoaXMuZHJvcHBlZCx0aGlzLmRyb3BwZWQ9ITEpLCJpbnZhbGlkIj09PXRoaXMub3B0aW9u
cy5yZXZlcnQmJiFzfHwidmFsaWQiPT09dGhpcy5vcHRpb25zLnJldmVydCYmc3x8dGhpcy5vcHRp
b25zLnJldmVydD09PSEwfHx0LmlzRnVuY3Rpb24odGhpcy5vcHRpb25zLnJldmVydCkmJnRoaXMu
b3B0aW9ucy5yZXZlcnQuY2FsbCh0aGlzLmVsZW1lbnQscyk/dCh0aGlzLmhlbHBlcikuYW5pbWF0
ZSh0aGlzLm9yaWdpbmFsUG9zaXRpb24scGFyc2VJbnQodGhpcy5vcHRpb25zLnJldmVydER1cmF0
aW9uLDEwKSxmdW5jdGlvbigpe2kuX3RyaWdnZXIoInN0b3AiLGUpIT09ITEmJmkuX2NsZWFyKCl9
KTp0aGlzLl90cmlnZ2VyKCJzdG9wIixlKSE9PSExJiZ0aGlzLl9jbGVhcigpLCExfSxfbW91c2VV
cDpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fdW5ibG9ja0ZyYW1lcygpLHQudWkuZGRtYW5hZ2Vy
JiZ0LnVpLmRkbWFuYWdlci5kcmFnU3RvcCh0aGlzLGUpLHRoaXMuaGFuZGxlRWxlbWVudC5pcyhl
LnRhcmdldCkmJnRoaXMuZWxlbWVudC50cmlnZ2VyKCJmb2N1cyIpLHQudWkubW91c2UucHJvdG90
eXBlLl9tb3VzZVVwLmNhbGwodGhpcyxlKX0sY2FuY2VsOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMu
aGVscGVyLmlzKCIudWktZHJhZ2dhYmxlLWRyYWdnaW5nIik/dGhpcy5fbW91c2VVcChuZXcgdC5F
dmVudCgibW91c2V1cCIse3RhcmdldDp0aGlzLmVsZW1lbnRbMF19KSk6dGhpcy5fY2xlYXIoKSx0
aGlzfSxfZ2V0SGFuZGxlOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLm9wdGlvbnMuaGFuZGxlPyEh
dChlLnRhcmdldCkuY2xvc2VzdCh0aGlzLmVsZW1lbnQuZmluZCh0aGlzLm9wdGlvbnMuaGFuZGxl
KSkubGVuZ3RoOiEwfSxfc2V0SGFuZGxlQ2xhc3NOYW1lOmZ1bmN0aW9uKCl7dGhpcy5oYW5kbGVF
bGVtZW50PXRoaXMub3B0aW9ucy5oYW5kbGU/dGhpcy5lbGVtZW50LmZpbmQodGhpcy5vcHRpb25z
LmhhbmRsZSk6dGhpcy5lbGVtZW50LHRoaXMuX2FkZENsYXNzKHRoaXMuaGFuZGxlRWxlbWVudCwi
dWktZHJhZ2dhYmxlLWhhbmRsZSIpfSxfcmVtb3ZlSGFuZGxlQ2xhc3NOYW1lOmZ1bmN0aW9uKCl7
dGhpcy5fcmVtb3ZlQ2xhc3ModGhpcy5oYW5kbGVFbGVtZW50LCJ1aS1kcmFnZ2FibGUtaGFuZGxl
Iil9LF9jcmVhdGVIZWxwZXI6ZnVuY3Rpb24oZSl7dmFyIGk9dGhpcy5vcHRpb25zLHM9dC5pc0Z1
bmN0aW9uKGkuaGVscGVyKSxuPXM/dChpLmhlbHBlci5hcHBseSh0aGlzLmVsZW1lbnRbMF0sW2Vd
KSk6ImNsb25lIj09PWkuaGVscGVyP3RoaXMuZWxlbWVudC5jbG9uZSgpLnJlbW92ZUF0dHIoImlk
Iik6dGhpcy5lbGVtZW50O3JldHVybiBuLnBhcmVudHMoImJvZHkiKS5sZW5ndGh8fG4uYXBwZW5k
VG8oInBhcmVudCI9PT1pLmFwcGVuZFRvP3RoaXMuZWxlbWVudFswXS5wYXJlbnROb2RlOmkuYXBw
ZW5kVG8pLHMmJm5bMF09PT10aGlzLmVsZW1lbnRbMF0mJnRoaXMuX3NldFBvc2l0aW9uUmVsYXRp
dmUoKSxuWzBdPT09dGhpcy5lbGVtZW50WzBdfHwvKGZpeGVkfGFic29sdXRlKS8udGVzdChuLmNz
cygicG9zaXRpb24iKSl8fG4uY3NzKCJwb3NpdGlvbiIsImFic29sdXRlIiksbn0sX3NldFBvc2l0
aW9uUmVsYXRpdmU6ZnVuY3Rpb24oKXsvXig/OnJ8YXxmKS8udGVzdCh0aGlzLmVsZW1lbnQuY3Nz
KCJwb3NpdGlvbiIpKXx8KHRoaXMuZWxlbWVudFswXS5zdHlsZS5wb3NpdGlvbj0icmVsYXRpdmUi
KX0sX2FkanVzdE9mZnNldEZyb21IZWxwZXI6ZnVuY3Rpb24oZSl7InN0cmluZyI9PXR5cGVvZiBl
JiYoZT1lLnNwbGl0KCIgIikpLHQuaXNBcnJheShlKSYmKGU9e2xlZnQ6K2VbMF0sdG9wOitlWzFd
fHwwfSksImxlZnQiaW4gZSYmKHRoaXMub2Zmc2V0LmNsaWNrLmxlZnQ9ZS5sZWZ0K3RoaXMubWFy
Z2lucy5sZWZ0KSwicmlnaHQiaW4gZSYmKHRoaXMub2Zmc2V0LmNsaWNrLmxlZnQ9dGhpcy5oZWxw
ZXJQcm9wb3J0aW9ucy53aWR0aC1lLnJpZ2h0K3RoaXMubWFyZ2lucy5sZWZ0KSwidG9wImluIGUm
Jih0aGlzLm9mZnNldC5jbGljay50b3A9ZS50b3ArdGhpcy5tYXJnaW5zLnRvcCksImJvdHRvbSJp
biBlJiYodGhpcy5vZmZzZXQuY2xpY2sudG9wPXRoaXMuaGVscGVyUHJvcG9ydGlvbnMuaGVpZ2h0
LWUuYm90dG9tK3RoaXMubWFyZ2lucy50b3ApfSxfaXNSb290Tm9kZTpmdW5jdGlvbih0KXtyZXR1
cm4vKGh0bWx8Ym9keSkvaS50ZXN0KHQudGFnTmFtZSl8fHQ9PT10aGlzLmRvY3VtZW50WzBdfSxf
Z2V0UGFyZW50T2Zmc2V0OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vZmZzZXRQYXJlbnQub2Zmc2V0
KCksaT10aGlzLmRvY3VtZW50WzBdO3JldHVybiJhYnNvbHV0ZSI9PT10aGlzLmNzc1Bvc2l0aW9u
JiZ0aGlzLnNjcm9sbFBhcmVudFswXSE9PWkmJnQuY29udGFpbnModGhpcy5zY3JvbGxQYXJlbnRb
MF0sdGhpcy5vZmZzZXRQYXJlbnRbMF0pJiYoZS5sZWZ0Kz10aGlzLnNjcm9sbFBhcmVudC5zY3Jv
bGxMZWZ0KCksZS50b3ArPXRoaXMuc2Nyb2xsUGFyZW50LnNjcm9sbFRvcCgpKSx0aGlzLl9pc1Jv
b3ROb2RlKHRoaXMub2Zmc2V0UGFyZW50WzBdKSYmKGU9e3RvcDowLGxlZnQ6MH0pLHt0b3A6ZS50
b3ArKHBhcnNlSW50KHRoaXMub2Zmc2V0UGFyZW50LmNzcygiYm9yZGVyVG9wV2lkdGgiKSwxMCl8
fDApLGxlZnQ6ZS5sZWZ0KyhwYXJzZUludCh0aGlzLm9mZnNldFBhcmVudC5jc3MoImJvcmRlckxl
ZnRXaWR0aCIpLDEwKXx8MCl9fSxfZ2V0UmVsYXRpdmVPZmZzZXQ6ZnVuY3Rpb24oKXtpZigicmVs
YXRpdmUiIT09dGhpcy5jc3NQb3NpdGlvbilyZXR1cm57dG9wOjAsbGVmdDowfTt2YXIgdD10aGlz
LmVsZW1lbnQucG9zaXRpb24oKSxlPXRoaXMuX2lzUm9vdE5vZGUodGhpcy5zY3JvbGxQYXJlbnRb
MF0pO3JldHVybnt0b3A6dC50b3AtKHBhcnNlSW50KHRoaXMuaGVscGVyLmNzcygidG9wIiksMTAp
fHwwKSsoZT8wOnRoaXMuc2Nyb2xsUGFyZW50LnNjcm9sbFRvcCgpKSxsZWZ0OnQubGVmdC0ocGFy
c2VJbnQodGhpcy5oZWxwZXIuY3NzKCJsZWZ0IiksMTApfHwwKSsoZT8wOnRoaXMuc2Nyb2xsUGFy
ZW50LnNjcm9sbExlZnQoKSl9Cit9LF9jYWNoZU1hcmdpbnM6ZnVuY3Rpb24oKXt0aGlzLm1hcmdp
bnM9e2xlZnQ6cGFyc2VJbnQodGhpcy5lbGVtZW50LmNzcygibWFyZ2luTGVmdCIpLDEwKXx8MCx0
b3A6cGFyc2VJbnQodGhpcy5lbGVtZW50LmNzcygibWFyZ2luVG9wIiksMTApfHwwLHJpZ2h0OnBh
cnNlSW50KHRoaXMuZWxlbWVudC5jc3MoIm1hcmdpblJpZ2h0IiksMTApfHwwLGJvdHRvbTpwYXJz
ZUludCh0aGlzLmVsZW1lbnQuY3NzKCJtYXJnaW5Cb3R0b20iKSwxMCl8fDB9fSxfY2FjaGVIZWxw
ZXJQcm9wb3J0aW9uczpmdW5jdGlvbigpe3RoaXMuaGVscGVyUHJvcG9ydGlvbnM9e3dpZHRoOnRo
aXMuaGVscGVyLm91dGVyV2lkdGgoKSxoZWlnaHQ6dGhpcy5oZWxwZXIub3V0ZXJIZWlnaHQoKX19
LF9zZXRDb250YWlubWVudDpmdW5jdGlvbigpe3ZhciBlLGkscyxuPXRoaXMub3B0aW9ucyxvPXRo
aXMuZG9jdW1lbnRbMF07cmV0dXJuIHRoaXMucmVsYXRpdmVDb250YWluZXI9bnVsbCxuLmNvbnRh
aW5tZW50PyJ3aW5kb3ciPT09bi5jb250YWlubWVudD8odGhpcy5jb250YWlubWVudD1bdCh3aW5k
b3cpLnNjcm9sbExlZnQoKS10aGlzLm9mZnNldC5yZWxhdGl2ZS5sZWZ0LXRoaXMub2Zmc2V0LnBh
cmVudC5sZWZ0LHQod2luZG93KS5zY3JvbGxUb3AoKS10aGlzLm9mZnNldC5yZWxhdGl2ZS50b3At
dGhpcy5vZmZzZXQucGFyZW50LnRvcCx0KHdpbmRvdykuc2Nyb2xsTGVmdCgpK3Qod2luZG93KS53
aWR0aCgpLXRoaXMuaGVscGVyUHJvcG9ydGlvbnMud2lkdGgtdGhpcy5tYXJnaW5zLmxlZnQsdCh3
aW5kb3cpLnNjcm9sbFRvcCgpKyh0KHdpbmRvdykuaGVpZ2h0KCl8fG8uYm9keS5wYXJlbnROb2Rl
LnNjcm9sbEhlaWdodCktdGhpcy5oZWxwZXJQcm9wb3J0aW9ucy5oZWlnaHQtdGhpcy5tYXJnaW5z
LnRvcF0sdm9pZCAwKToiZG9jdW1lbnQiPT09bi5jb250YWlubWVudD8odGhpcy5jb250YWlubWVu
dD1bMCwwLHQobykud2lkdGgoKS10aGlzLmhlbHBlclByb3BvcnRpb25zLndpZHRoLXRoaXMubWFy
Z2lucy5sZWZ0LCh0KG8pLmhlaWdodCgpfHxvLmJvZHkucGFyZW50Tm9kZS5zY3JvbGxIZWlnaHQp
LXRoaXMuaGVscGVyUHJvcG9ydGlvbnMuaGVpZ2h0LXRoaXMubWFyZ2lucy50b3BdLHZvaWQgMCk6
bi5jb250YWlubWVudC5jb25zdHJ1Y3Rvcj09PUFycmF5Pyh0aGlzLmNvbnRhaW5tZW50PW4uY29u
dGFpbm1lbnQsdm9pZCAwKTooInBhcmVudCI9PT1uLmNvbnRhaW5tZW50JiYobi5jb250YWlubWVu
dD10aGlzLmhlbHBlclswXS5wYXJlbnROb2RlKSxpPXQobi5jb250YWlubWVudCkscz1pWzBdLHMm
JihlPS8oc2Nyb2xsfGF1dG8pLy50ZXN0KGkuY3NzKCJvdmVyZmxvdyIpKSx0aGlzLmNvbnRhaW5t
ZW50PVsocGFyc2VJbnQoaS5jc3MoImJvcmRlckxlZnRXaWR0aCIpLDEwKXx8MCkrKHBhcnNlSW50
KGkuY3NzKCJwYWRkaW5nTGVmdCIpLDEwKXx8MCksKHBhcnNlSW50KGkuY3NzKCJib3JkZXJUb3BX
aWR0aCIpLDEwKXx8MCkrKHBhcnNlSW50KGkuY3NzKCJwYWRkaW5nVG9wIiksMTApfHwwKSwoZT9N
YXRoLm1heChzLnNjcm9sbFdpZHRoLHMub2Zmc2V0V2lkdGgpOnMub2Zmc2V0V2lkdGgpLShwYXJz
ZUludChpLmNzcygiYm9yZGVyUmlnaHRXaWR0aCIpLDEwKXx8MCktKHBhcnNlSW50KGkuY3NzKCJw
YWRkaW5nUmlnaHQiKSwxMCl8fDApLXRoaXMuaGVscGVyUHJvcG9ydGlvbnMud2lkdGgtdGhpcy5t
YXJnaW5zLmxlZnQtdGhpcy5tYXJnaW5zLnJpZ2h0LChlP01hdGgubWF4KHMuc2Nyb2xsSGVpZ2h0
LHMub2Zmc2V0SGVpZ2h0KTpzLm9mZnNldEhlaWdodCktKHBhcnNlSW50KGkuY3NzKCJib3JkZXJC
b3R0b21XaWR0aCIpLDEwKXx8MCktKHBhcnNlSW50KGkuY3NzKCJwYWRkaW5nQm90dG9tIiksMTAp
fHwwKS10aGlzLmhlbHBlclByb3BvcnRpb25zLmhlaWdodC10aGlzLm1hcmdpbnMudG9wLXRoaXMu
bWFyZ2lucy5ib3R0b21dLHRoaXMucmVsYXRpdmVDb250YWluZXI9aSksdm9pZCAwKToodGhpcy5j
b250YWlubWVudD1udWxsLHZvaWQgMCl9LF9jb252ZXJ0UG9zaXRpb25UbzpmdW5jdGlvbih0LGUp
e2V8fChlPXRoaXMucG9zaXRpb24pO3ZhciBpPSJhYnNvbHV0ZSI9PT10PzE6LTEscz10aGlzLl9p
c1Jvb3ROb2RlKHRoaXMuc2Nyb2xsUGFyZW50WzBdKTtyZXR1cm57dG9wOmUudG9wK3RoaXMub2Zm
c2V0LnJlbGF0aXZlLnRvcCppK3RoaXMub2Zmc2V0LnBhcmVudC50b3AqaS0oImZpeGVkIj09PXRo
aXMuY3NzUG9zaXRpb24/LXRoaXMub2Zmc2V0LnNjcm9sbC50b3A6cz8wOnRoaXMub2Zmc2V0LnNj
cm9sbC50b3ApKmksbGVmdDplLmxlZnQrdGhpcy5vZmZzZXQucmVsYXRpdmUubGVmdCppK3RoaXMu
b2Zmc2V0LnBhcmVudC5sZWZ0KmktKCJmaXhlZCI9PT10aGlzLmNzc1Bvc2l0aW9uPy10aGlzLm9m
ZnNldC5zY3JvbGwubGVmdDpzPzA6dGhpcy5vZmZzZXQuc2Nyb2xsLmxlZnQpKml9fSxfZ2VuZXJh
dGVQb3NpdGlvbjpmdW5jdGlvbih0LGUpe3ZhciBpLHMsbixvLGE9dGhpcy5vcHRpb25zLHI9dGhp
cy5faXNSb290Tm9kZSh0aGlzLnNjcm9sbFBhcmVudFswXSksaD10LnBhZ2VYLGw9dC5wYWdlWTty
ZXR1cm4gciYmdGhpcy5vZmZzZXQuc2Nyb2xsfHwodGhpcy5vZmZzZXQuc2Nyb2xsPXt0b3A6dGhp
cy5zY3JvbGxQYXJlbnQuc2Nyb2xsVG9wKCksbGVmdDp0aGlzLnNjcm9sbFBhcmVudC5zY3JvbGxM
ZWZ0KCl9KSxlJiYodGhpcy5jb250YWlubWVudCYmKHRoaXMucmVsYXRpdmVDb250YWluZXI/KHM9
dGhpcy5yZWxhdGl2ZUNvbnRhaW5lci5vZmZzZXQoKSxpPVt0aGlzLmNvbnRhaW5tZW50WzBdK3Mu
bGVmdCx0aGlzLmNvbnRhaW5tZW50WzFdK3MudG9wLHRoaXMuY29udGFpbm1lbnRbMl0rcy5sZWZ0
LHRoaXMuY29udGFpbm1lbnRbM10rcy50b3BdKTppPXRoaXMuY29udGFpbm1lbnQsdC5wYWdlWC10
aGlzLm9mZnNldC5jbGljay5sZWZ0PGlbMF0mJihoPWlbMF0rdGhpcy5vZmZzZXQuY2xpY2subGVm
dCksdC5wYWdlWS10aGlzLm9mZnNldC5jbGljay50b3A8aVsxXSYmKGw9aVsxXSt0aGlzLm9mZnNl
dC5jbGljay50b3ApLHQucGFnZVgtdGhpcy5vZmZzZXQuY2xpY2subGVmdD5pWzJdJiYoaD1pWzJd
K3RoaXMub2Zmc2V0LmNsaWNrLmxlZnQpLHQucGFnZVktdGhpcy5vZmZzZXQuY2xpY2sudG9wPmlb
M10mJihsPWlbM10rdGhpcy5vZmZzZXQuY2xpY2sudG9wKSksYS5ncmlkJiYobj1hLmdyaWRbMV0/
dGhpcy5vcmlnaW5hbFBhZ2VZK01hdGgucm91bmQoKGwtdGhpcy5vcmlnaW5hbFBhZ2VZKS9hLmdy
aWRbMV0pKmEuZ3JpZFsxXTp0aGlzLm9yaWdpbmFsUGFnZVksbD1pP24tdGhpcy5vZmZzZXQuY2xp
Y2sudG9wPj1pWzFdfHxuLXRoaXMub2Zmc2V0LmNsaWNrLnRvcD5pWzNdP246bi10aGlzLm9mZnNl
dC5jbGljay50b3A+PWlbMV0/bi1hLmdyaWRbMV06bithLmdyaWRbMV06bixvPWEuZ3JpZFswXT90
aGlzLm9yaWdpbmFsUGFnZVgrTWF0aC5yb3VuZCgoaC10aGlzLm9yaWdpbmFsUGFnZVgpL2EuZ3Jp
ZFswXSkqYS5ncmlkWzBdOnRoaXMub3JpZ2luYWxQYWdlWCxoPWk/by10aGlzLm9mZnNldC5jbGlj
ay5sZWZ0Pj1pWzBdfHxvLXRoaXMub2Zmc2V0LmNsaWNrLmxlZnQ+aVsyXT9vOm8tdGhpcy5vZmZz
ZXQuY2xpY2subGVmdD49aVswXT9vLWEuZ3JpZFswXTpvK2EuZ3JpZFswXTpvKSwieSI9PT1hLmF4
aXMmJihoPXRoaXMub3JpZ2luYWxQYWdlWCksIngiPT09YS5heGlzJiYobD10aGlzLm9yaWdpbmFs
UGFnZVkpKSx7dG9wOmwtdGhpcy5vZmZzZXQuY2xpY2sudG9wLXRoaXMub2Zmc2V0LnJlbGF0aXZl
LnRvcC10aGlzLm9mZnNldC5wYXJlbnQudG9wKygiZml4ZWQiPT09dGhpcy5jc3NQb3NpdGlvbj8t
dGhpcy5vZmZzZXQuc2Nyb2xsLnRvcDpyPzA6dGhpcy5vZmZzZXQuc2Nyb2xsLnRvcCksbGVmdDpo
LXRoaXMub2Zmc2V0LmNsaWNrLmxlZnQtdGhpcy5vZmZzZXQucmVsYXRpdmUubGVmdC10aGlzLm9m
ZnNldC5wYXJlbnQubGVmdCsoImZpeGVkIj09PXRoaXMuY3NzUG9zaXRpb24/LXRoaXMub2Zmc2V0
LnNjcm9sbC5sZWZ0OnI/MDp0aGlzLm9mZnNldC5zY3JvbGwubGVmdCl9fSxfY2xlYXI6ZnVuY3Rp
b24oKXt0aGlzLl9yZW1vdmVDbGFzcyh0aGlzLmhlbHBlciwidWktZHJhZ2dhYmxlLWRyYWdnaW5n
IiksdGhpcy5oZWxwZXJbMF09PT10aGlzLmVsZW1lbnRbMF18fHRoaXMuY2FuY2VsSGVscGVyUmVt
b3ZhbHx8dGhpcy5oZWxwZXIucmVtb3ZlKCksdGhpcy5oZWxwZXI9bnVsbCx0aGlzLmNhbmNlbEhl
bHBlclJlbW92YWw9ITEsdGhpcy5kZXN0cm95T25DbGVhciYmdGhpcy5kZXN0cm95KCl9LF90cmln
Z2VyOmZ1bmN0aW9uKGUsaSxzKXtyZXR1cm4gcz1zfHx0aGlzLl91aUhhc2goKSx0LnVpLnBsdWdp
bi5jYWxsKHRoaXMsZSxbaSxzLHRoaXNdLCEwKSwvXihkcmFnfHN0YXJ0fHN0b3ApLy50ZXN0KGUp
JiYodGhpcy5wb3NpdGlvbkFicz10aGlzLl9jb252ZXJ0UG9zaXRpb25UbygiYWJzb2x1dGUiKSxz
Lm9mZnNldD10aGlzLnBvc2l0aW9uQWJzKSx0LldpZGdldC5wcm90b3R5cGUuX3RyaWdnZXIuY2Fs
bCh0aGlzLGUsaSxzKX0scGx1Z2luczp7fSxfdWlIYXNoOmZ1bmN0aW9uKCl7cmV0dXJue2hlbHBl
cjp0aGlzLmhlbHBlcixwb3NpdGlvbjp0aGlzLnBvc2l0aW9uLG9yaWdpbmFsUG9zaXRpb246dGhp
cy5vcmlnaW5hbFBvc2l0aW9uLG9mZnNldDp0aGlzLnBvc2l0aW9uQWJzfX19KSx0LnVpLnBsdWdp
bi5hZGQoImRyYWdnYWJsZSIsImNvbm5lY3RUb1NvcnRhYmxlIix7c3RhcnQ6ZnVuY3Rpb24oZSxp
LHMpe3ZhciBuPXQuZXh0ZW5kKHt9LGkse2l0ZW06cy5lbGVtZW50fSk7cy5zb3J0YWJsZXM9W10s
dChzLm9wdGlvbnMuY29ubmVjdFRvU29ydGFibGUpLmVhY2goZnVuY3Rpb24oKXt2YXIgaT10KHRo
aXMpLnNvcnRhYmxlKCJpbnN0YW5jZSIpO2kmJiFpLm9wdGlvbnMuZGlzYWJsZWQmJihzLnNvcnRh
Ymxlcy5wdXNoKGkpLGkucmVmcmVzaFBvc2l0aW9ucygpLGkuX3RyaWdnZXIoImFjdGl2YXRlIixl
LG4pKX0pfSxzdG9wOmZ1bmN0aW9uKGUsaSxzKXt2YXIgbj10LmV4dGVuZCh7fSxpLHtpdGVtOnMu
ZWxlbWVudH0pO3MuY2FuY2VsSGVscGVyUmVtb3ZhbD0hMSx0LmVhY2gocy5zb3J0YWJsZXMsZnVu
Y3Rpb24oKXt2YXIgdD10aGlzO3QuaXNPdmVyPyh0LmlzT3Zlcj0wLHMuY2FuY2VsSGVscGVyUmVt
b3ZhbD0hMCx0LmNhbmNlbEhlbHBlclJlbW92YWw9ITEsdC5fc3RvcmVkQ1NTPXtwb3NpdGlvbjp0
LnBsYWNlaG9sZGVyLmNzcygicG9zaXRpb24iKSx0b3A6dC5wbGFjZWhvbGRlci5jc3MoInRvcCIp
LGxlZnQ6dC5wbGFjZWhvbGRlci5jc3MoImxlZnQiKX0sdC5fbW91c2VTdG9wKGUpLHQub3B0aW9u
cy5oZWxwZXI9dC5vcHRpb25zLl9oZWxwZXIpOih0LmNhbmNlbEhlbHBlclJlbW92YWw9ITAsdC5f
dHJpZ2dlcigiZGVhY3RpdmF0ZSIsZSxuKSl9KX0sZHJhZzpmdW5jdGlvbihlLGkscyl7dC5lYWNo
KHMuc29ydGFibGVzLGZ1bmN0aW9uKCl7dmFyIG49ITEsbz10aGlzO28ucG9zaXRpb25BYnM9cy5w
b3NpdGlvbkFicyxvLmhlbHBlclByb3BvcnRpb25zPXMuaGVscGVyUHJvcG9ydGlvbnMsby5vZmZz
ZXQuY2xpY2s9cy5vZmZzZXQuY2xpY2ssby5faW50ZXJzZWN0c1dpdGgoby5jb250YWluZXJDYWNo
ZSkmJihuPSEwLHQuZWFjaChzLnNvcnRhYmxlcyxmdW5jdGlvbigpe3JldHVybiB0aGlzLnBvc2l0
aW9uQWJzPXMucG9zaXRpb25BYnMsdGhpcy5oZWxwZXJQcm9wb3J0aW9ucz1zLmhlbHBlclByb3Bv
cnRpb25zLHRoaXMub2Zmc2V0LmNsaWNrPXMub2Zmc2V0LmNsaWNrLHRoaXMhPT1vJiZ0aGlzLl9p
bnRlcnNlY3RzV2l0aCh0aGlzLmNvbnRhaW5lckNhY2hlKSYmdC5jb250YWlucyhvLmVsZW1lbnRb
MF0sdGhpcy5lbGVtZW50WzBdKSYmKG49ITEpLG59KSksbj8oby5pc092ZXJ8fChvLmlzT3Zlcj0x
LHMuX3BhcmVudD1pLmhlbHBlci5wYXJlbnQoKSxvLmN1cnJlbnRJdGVtPWkuaGVscGVyLmFwcGVu
ZFRvKG8uZWxlbWVudCkuZGF0YSgidWktc29ydGFibGUtaXRlbSIsITApLG8ub3B0aW9ucy5faGVs
cGVyPW8ub3B0aW9ucy5oZWxwZXIsby5vcHRpb25zLmhlbHBlcj1mdW5jdGlvbigpe3JldHVybiBp
LmhlbHBlclswXX0sZS50YXJnZXQ9by5jdXJyZW50SXRlbVswXSxvLl9tb3VzZUNhcHR1cmUoZSwh
MCksby5fbW91c2VTdGFydChlLCEwLCEwKSxvLm9mZnNldC5jbGljay50b3A9cy5vZmZzZXQuY2xp
Y2sudG9wLG8ub2Zmc2V0LmNsaWNrLmxlZnQ9cy5vZmZzZXQuY2xpY2subGVmdCxvLm9mZnNldC5w
YXJlbnQubGVmdC09cy5vZmZzZXQucGFyZW50LmxlZnQtby5vZmZzZXQucGFyZW50LmxlZnQsby5v
ZmZzZXQucGFyZW50LnRvcC09cy5vZmZzZXQucGFyZW50LnRvcC1vLm9mZnNldC5wYXJlbnQudG9w
LHMuX3RyaWdnZXIoInRvU29ydGFibGUiLGUpLHMuZHJvcHBlZD1vLmVsZW1lbnQsdC5lYWNoKHMu
c29ydGFibGVzLGZ1bmN0aW9uKCl7dGhpcy5yZWZyZXNoUG9zaXRpb25zKCl9KSxzLmN1cnJlbnRJ
dGVtPXMuZWxlbWVudCxvLmZyb21PdXRzaWRlPXMpLG8uY3VycmVudEl0ZW0mJihvLl9tb3VzZURy
YWcoZSksaS5wb3NpdGlvbj1vLnBvc2l0aW9uKSk6by5pc092ZXImJihvLmlzT3Zlcj0wLG8uY2Fu
Y2VsSGVscGVyUmVtb3ZhbD0hMCxvLm9wdGlvbnMuX3JldmVydD1vLm9wdGlvbnMucmV2ZXJ0LG8u
b3B0aW9ucy5yZXZlcnQ9ITEsby5fdHJpZ2dlcigib3V0IixlLG8uX3VpSGFzaChvKSksby5fbW91
c2VTdG9wKGUsITApLG8ub3B0aW9ucy5yZXZlcnQ9by5vcHRpb25zLl9yZXZlcnQsby5vcHRpb25z
LmhlbHBlcj1vLm9wdGlvbnMuX2hlbHBlcixvLnBsYWNlaG9sZGVyJiZvLnBsYWNlaG9sZGVyLnJl
bW92ZSgpLGkuaGVscGVyLmFwcGVuZFRvKHMuX3BhcmVudCkscy5fcmVmcmVzaE9mZnNldHMoZSks
aS5wb3NpdGlvbj1zLl9nZW5lcmF0ZVBvc2l0aW9uKGUsITApLHMuX3RyaWdnZXIoImZyb21Tb3J0
YWJsZSIsZSkscy5kcm9wcGVkPSExLHQuZWFjaChzLnNvcnRhYmxlcyxmdW5jdGlvbigpe3RoaXMu
cmVmcmVzaFBvc2l0aW9ucygpfSkpfSl9fSksdC51aS5wbHVnaW4uYWRkKCJkcmFnZ2FibGUiLCJj
dXJzb3IiLHtzdGFydDpmdW5jdGlvbihlLGkscyl7dmFyIG49dCgiYm9keSIpLG89cy5vcHRpb25z
O24uY3NzKCJjdXJzb3IiKSYmKG8uX2N1cnNvcj1uLmNzcygiY3Vyc29yIikpLG4uY3NzKCJjdXJz
b3IiLG8uY3Vyc29yKX0sc3RvcDpmdW5jdGlvbihlLGkscyl7dmFyIG49cy5vcHRpb25zO24uX2N1
cnNvciYmdCgiYm9keSIpLmNzcygiY3Vyc29yIixuLl9jdXJzb3IpfX0pLHQudWkucGx1Z2luLmFk
ZCgiZHJhZ2dhYmxlIiwib3BhY2l0eSIse3N0YXJ0OmZ1bmN0aW9uKGUsaSxzKXt2YXIgbj10KGku
aGVscGVyKSxvPXMub3B0aW9ucztuLmNzcygib3BhY2l0eSIpJiYoby5fb3BhY2l0eT1uLmNzcygi
b3BhY2l0eSIpKSxuLmNzcygib3BhY2l0eSIsby5vcGFjaXR5KX0sc3RvcDpmdW5jdGlvbihlLGks
cyl7dmFyIG49cy5vcHRpb25zO24uX29wYWNpdHkmJnQoaS5oZWxwZXIpLmNzcygib3BhY2l0eSIs
bi5fb3BhY2l0eSl9fSksdC51aS5wbHVnaW4uYWRkKCJkcmFnZ2FibGUiLCJzY3JvbGwiLHtzdGFy
dDpmdW5jdGlvbih0LGUsaSl7aS5zY3JvbGxQYXJlbnROb3RIaWRkZW58fChpLnNjcm9sbFBhcmVu
dE5vdEhpZGRlbj1pLmhlbHBlci5zY3JvbGxQYXJlbnQoITEpKSxpLnNjcm9sbFBhcmVudE5vdEhp
ZGRlblswXSE9PWkuZG9jdW1lbnRbMF0mJiJIVE1MIiE9PWkuc2Nyb2xsUGFyZW50Tm90SGlkZGVu
WzBdLnRhZ05hbWUmJihpLm92ZXJmbG93T2Zmc2V0PWkuc2Nyb2xsUGFyZW50Tm90SGlkZGVuLm9m
ZnNldCgpKX0sZHJhZzpmdW5jdGlvbihlLGkscyl7dmFyIG49cy5vcHRpb25zLG89ITEsYT1zLnNj
cm9sbFBhcmVudE5vdEhpZGRlblswXSxyPXMuZG9jdW1lbnRbMF07YSE9PXImJiJIVE1MIiE9PWEu
dGFnTmFtZT8obi5heGlzJiYieCI9PT1uLmF4aXN8fChzLm92ZXJmbG93T2Zmc2V0LnRvcCthLm9m
ZnNldEhlaWdodC1lLnBhZ2VZPG4uc2Nyb2xsU2Vuc2l0aXZpdHk/YS5zY3JvbGxUb3A9bz1hLnNj
cm9sbFRvcCtuLnNjcm9sbFNwZWVkOmUucGFnZVktcy5vdmVyZmxvd09mZnNldC50b3A8bi5zY3Jv
bGxTZW5zaXRpdml0eSYmKGEuc2Nyb2xsVG9wPW89YS5zY3JvbGxUb3Atbi5zY3JvbGxTcGVlZCkp
LG4uYXhpcyYmInkiPT09bi5heGlzfHwocy5vdmVyZmxvd09mZnNldC5sZWZ0K2Eub2Zmc2V0V2lk
dGgtZS5wYWdlWDxuLnNjcm9sbFNlbnNpdGl2aXR5P2Euc2Nyb2xsTGVmdD1vPWEuc2Nyb2xsTGVm
dCtuLnNjcm9sbFNwZWVkOmUucGFnZVgtcy5vdmVyZmxvd09mZnNldC5sZWZ0PG4uc2Nyb2xsU2Vu
c2l0aXZpdHkmJihhLnNjcm9sbExlZnQ9bz1hLnNjcm9sbExlZnQtbi5zY3JvbGxTcGVlZCkpKToo
bi5heGlzJiYieCI9PT1uLmF4aXN8fChlLnBhZ2VZLXQocikuc2Nyb2xsVG9wKCk8bi5zY3JvbGxT
ZW5zaXRpdml0eT9vPXQocikuc2Nyb2xsVG9wKHQocikuc2Nyb2xsVG9wKCktbi5zY3JvbGxTcGVl
ZCk6dCh3aW5kb3cpLmhlaWdodCgpLShlLnBhZ2VZLXQocikuc2Nyb2xsVG9wKCkpPG4uc2Nyb2xs
U2Vuc2l0aXZpdHkmJihvPXQocikuc2Nyb2xsVG9wKHQocikuc2Nyb2xsVG9wKCkrbi5zY3JvbGxT
cGVlZCkpKSxuLmF4aXMmJiJ5Ij09PW4uYXhpc3x8KGUucGFnZVgtdChyKS5zY3JvbGxMZWZ0KCk8
bi5zY3JvbGxTZW5zaXRpdml0eT9vPXQocikuc2Nyb2xsTGVmdCh0KHIpLnNjcm9sbExlZnQoKS1u
LnNjcm9sbFNwZWVkKTp0KHdpbmRvdykud2lkdGgoKS0oZS5wYWdlWC10KHIpLnNjcm9sbExlZnQo
KSk8bi5zY3JvbGxTZW5zaXRpdml0eSYmKG89dChyKS5zY3JvbGxMZWZ0KHQocikuc2Nyb2xsTGVm
dCgpK24uc2Nyb2xsU3BlZWQpKSkpLG8hPT0hMSYmdC51aS5kZG1hbmFnZXImJiFuLmRyb3BCZWhh
dmlvdXImJnQudWkuZGRtYW5hZ2VyLnByZXBhcmVPZmZzZXRzKHMsZSl9fSksdC51aS5wbHVnaW4u
YWRkKCJkcmFnZ2FibGUiLCJzbmFwIix7c3RhcnQ6ZnVuY3Rpb24oZSxpLHMpe3ZhciBuPXMub3B0
aW9ucztzLnNuYXBFbGVtZW50cz1bXSx0KG4uc25hcC5jb25zdHJ1Y3RvciE9PVN0cmluZz9uLnNu
YXAuaXRlbXN8fCI6ZGF0YSh1aS1kcmFnZ2FibGUpIjpuLnNuYXApLmVhY2goZnVuY3Rpb24oKXt2
YXIgZT10KHRoaXMpLGk9ZS5vZmZzZXQoKTt0aGlzIT09cy5lbGVtZW50WzBdJiZzLnNuYXBFbGVt
ZW50cy5wdXNoKHtpdGVtOnRoaXMsd2lkdGg6ZS5vdXRlcldpZHRoKCksaGVpZ2h0OmUub3V0ZXJI
ZWlnaHQoKSx0b3A6aS50b3AsbGVmdDppLmxlZnR9KX0pfSxkcmFnOmZ1bmN0aW9uKGUsaSxzKXt2
YXIgbixvLGEscixoLGwsYyx1LGQscCxmPXMub3B0aW9ucyxnPWYuc25hcFRvbGVyYW5jZSxtPWku
b2Zmc2V0LmxlZnQsXz1tK3MuaGVscGVyUHJvcG9ydGlvbnMud2lkdGgsdj1pLm9mZnNldC50b3As
Yj12K3MuaGVscGVyUHJvcG9ydGlvbnMuaGVpZ2h0O2ZvcihkPXMuc25hcEVsZW1lbnRzLmxlbmd0
aC0xO2Q+PTA7ZC0tKWg9cy5zbmFwRWxlbWVudHNbZF0ubGVmdC1zLm1hcmdpbnMubGVmdCxsPWgr
cy5zbmFwRWxlbWVudHNbZF0ud2lkdGgsYz1zLnNuYXBFbGVtZW50c1tkXS50b3Atcy5tYXJnaW5z
LnRvcCx1PWMrcy5zbmFwRWxlbWVudHNbZF0uaGVpZ2h0LGgtZz5ffHxtPmwrZ3x8Yy1nPmJ8fHY+
dStnfHwhdC5jb250YWlucyhzLnNuYXBFbGVtZW50c1tkXS5pdGVtLm93bmVyRG9jdW1lbnQscy5z
bmFwRWxlbWVudHNbZF0uaXRlbSk/KHMuc25hcEVsZW1lbnRzW2RdLnNuYXBwaW5nJiZzLm9wdGlv
bnMuc25hcC5yZWxlYXNlJiZzLm9wdGlvbnMuc25hcC5yZWxlYXNlLmNhbGwocy5lbGVtZW50LGUs
dC5leHRlbmQocy5fdWlIYXNoKCkse3NuYXBJdGVtOnMuc25hcEVsZW1lbnRzW2RdLml0ZW19KSks
cy5zbmFwRWxlbWVudHNbZF0uc25hcHBpbmc9ITEpOigiaW5uZXIiIT09Zi5zbmFwTW9kZSYmKG49
Zz49TWF0aC5hYnMoYy1iKSxvPWc+PU1hdGguYWJzKHUtdiksYT1nPj1NYXRoLmFicyhoLV8pLHI9
Zz49TWF0aC5hYnMobC1tKSxuJiYoaS5wb3NpdGlvbi50b3A9cy5fY29udmVydFBvc2l0aW9uVG8o
InJlbGF0aXZlIix7dG9wOmMtcy5oZWxwZXJQcm9wb3J0aW9ucy5oZWlnaHQsbGVmdDowfSkudG9w
KSxvJiYoaS5wb3NpdGlvbi50b3A9cy5fY29udmVydFBvc2l0aW9uVG8oInJlbGF0aXZlIix7dG9w
OnUsbGVmdDowfSkudG9wKSxhJiYoaS5wb3NpdGlvbi5sZWZ0PXMuX2NvbnZlcnRQb3NpdGlvblRv
KCJyZWxhdGl2ZSIse3RvcDowLGxlZnQ6aC1zLmhlbHBlclByb3BvcnRpb25zLndpZHRofSkubGVm
dCksciYmKGkucG9zaXRpb24ubGVmdD1zLl9jb252ZXJ0UG9zaXRpb25UbygicmVsYXRpdmUiLHt0
b3A6MCxsZWZ0Omx9KS5sZWZ0KSkscD1ufHxvfHxhfHxyLCJvdXRlciIhPT1mLnNuYXBNb2RlJiYo
bj1nPj1NYXRoLmFicyhjLXYpLG89Zz49TWF0aC5hYnModS1iKSxhPWc+PU1hdGguYWJzKGgtbSks
cj1nPj1NYXRoLmFicyhsLV8pLG4mJihpLnBvc2l0aW9uLnRvcD1zLl9jb252ZXJ0UG9zaXRpb25U
bygicmVsYXRpdmUiLHt0b3A6YyxsZWZ0OjB9KS50b3ApLG8mJihpLnBvc2l0aW9uLnRvcD1zLl9j
b252ZXJ0UG9zaXRpb25UbygicmVsYXRpdmUiLHt0b3A6dS1zLmhlbHBlclByb3BvcnRpb25zLmhl
aWdodCxsZWZ0OjB9KS50b3ApLGEmJihpLnBvc2l0aW9uLmxlZnQ9cy5fY29udmVydFBvc2l0aW9u
VG8oInJlbGF0aXZlIix7dG9wOjAsbGVmdDpofSkubGVmdCksciYmKGkucG9zaXRpb24ubGVmdD1z
Ll9jb252ZXJ0UG9zaXRpb25UbygicmVsYXRpdmUiLHt0b3A6MCxsZWZ0Omwtcy5oZWxwZXJQcm9w
b3J0aW9ucy53aWR0aH0pLmxlZnQpKSwhcy5zbmFwRWxlbWVudHNbZF0uc25hcHBpbmcmJihufHxv
fHxhfHxyfHxwKSYmcy5vcHRpb25zLnNuYXAuc25hcCYmcy5vcHRpb25zLnNuYXAuc25hcC5jYWxs
KHMuZWxlbWVudCxlLHQuZXh0ZW5kKHMuX3VpSGFzaCgpLHtzbmFwSXRlbTpzLnNuYXBFbGVtZW50
c1tkXS5pdGVtfSkpLHMuc25hcEVsZW1lbnRzW2RdLnNuYXBwaW5nPW58fG98fGF8fHJ8fHApfX0p
LHQudWkucGx1Z2luLmFkZCgiZHJhZ2dhYmxlIiwic3RhY2siLHtzdGFydDpmdW5jdGlvbihlLGks
cyl7dmFyIG4sbz1zLm9wdGlvbnMsYT10Lm1ha2VBcnJheSh0KG8uc3RhY2spKS5zb3J0KGZ1bmN0
aW9uKGUsaSl7cmV0dXJuKHBhcnNlSW50KHQoZSkuY3NzKCJ6SW5kZXgiKSwxMCl8fDApLShwYXJz
ZUludCh0KGkpLmNzcygiekluZGV4IiksMTApfHwwKX0pO2EubGVuZ3RoJiYobj1wYXJzZUludCh0
KGFbMF0pLmNzcygiekluZGV4IiksMTApfHwwLHQoYSkuZWFjaChmdW5jdGlvbihlKXt0KHRoaXMp
LmNzcygiekluZGV4IixuK2UpfSksdGhpcy5jc3MoInpJbmRleCIsbithLmxlbmd0aCkpfX0pLHQu
dWkucGx1Z2luLmFkZCgiZHJhZ2dhYmxlIiwiekluZGV4Iix7c3RhcnQ6ZnVuY3Rpb24oZSxpLHMp
e3ZhciBuPXQoaS5oZWxwZXIpLG89cy5vcHRpb25zO24uY3NzKCJ6SW5kZXgiKSYmKG8uX3pJbmRl
eD1uLmNzcygiekluZGV4IikpLG4uY3NzKCJ6SW5kZXgiLG8uekluZGV4KX0sc3RvcDpmdW5jdGlv
bihlLGkscyl7dmFyIG49cy5vcHRpb25zO24uX3pJbmRleCYmdChpLmhlbHBlcikuY3NzKCJ6SW5k
ZXgiLG4uX3pJbmRleCl9fSksdC51aS5kcmFnZ2FibGUsdC53aWRnZXQoInVpLnJlc2l6YWJsZSIs
dC51aS5tb3VzZSx7dmVyc2lvbjoiMS4xMi4xIix3aWRnZXRFdmVudFByZWZpeDoicmVzaXplIixv
cHRpb25zOnthbHNvUmVzaXplOiExLGFuaW1hdGU6ITEsYW5pbWF0ZUR1cmF0aW9uOiJzbG93Iixh
bmltYXRlRWFzaW5nOiJzd2luZyIsYXNwZWN0UmF0aW86ITEsYXV0b0hpZGU6ITEsY2xhc3Nlczp7
InVpLXJlc2l6YWJsZS1zZSI6InVpLWljb24gdWktaWNvbi1ncmlwc21hbGwtZGlhZ29uYWwtc2Ui
fSxjb250YWlubWVudDohMSxnaG9zdDohMSxncmlkOiExLGhhbmRsZXM6ImUscyxzZSIsaGVscGVy
OiExLG1heEhlaWdodDpudWxsLG1heFdpZHRoOm51bGwsbWluSGVpZ2h0OjEwLG1pbldpZHRoOjEw
LHpJbmRleDo5MCxyZXNpemU6bnVsbCxzdGFydDpudWxsLHN0b3A6bnVsbH0sX251bTpmdW5jdGlv
bih0KXtyZXR1cm4gcGFyc2VGbG9hdCh0KXx8MH0sX2lzTnVtYmVyOmZ1bmN0aW9uKHQpe3JldHVy
biFpc05hTihwYXJzZUZsb2F0KHQpKX0sX2hhc1Njcm9sbDpmdW5jdGlvbihlLGkpe2lmKCJoaWRk
ZW4iPT09dChlKS5jc3MoIm92ZXJmbG93IikpcmV0dXJuITE7dmFyIHM9aSYmImxlZnQiPT09aT8i
c2Nyb2xsTGVmdCI6InNjcm9sbFRvcCIsbj0hMTtyZXR1cm4gZVtzXT4wPyEwOihlW3NdPTEsbj1l
W3NdPjAsZVtzXT0wLG4pfSxfY3JlYXRlOmZ1bmN0aW9uKCl7dmFyIGUsaT10aGlzLm9wdGlvbnMs
cz10aGlzO3RoaXMuX2FkZENsYXNzKCJ1aS1yZXNpemFibGUiKSx0LmV4dGVuZCh0aGlzLHtfYXNw
ZWN0UmF0aW86ISFpLmFzcGVjdFJhdGlvLGFzcGVjdFJhdGlvOmkuYXNwZWN0UmF0aW8sb3JpZ2lu
YWxFbGVtZW50OnRoaXMuZWxlbWVudCxfcHJvcG9ydGlvbmFsbHlSZXNpemVFbGVtZW50czpbXSxf
aGVscGVyOmkuaGVscGVyfHxpLmdob3N0fHxpLmFuaW1hdGU/aS5oZWxwZXJ8fCJ1aS1yZXNpemFi
bGUtaGVscGVyIjpudWxsfSksdGhpcy5lbGVtZW50WzBdLm5vZGVOYW1lLm1hdGNoKC9eKGNhbnZh
c3x0ZXh0YXJlYXxpbnB1dHxzZWxlY3R8YnV0dG9ufGltZykkL2kpJiYodGhpcy5lbGVtZW50Lndy
YXAodCgiPGRpdiBjbGFzcz0ndWktd3JhcHBlcicgc3R5bGU9J292ZXJmbG93OiBoaWRkZW47Jz48
L2Rpdj4iKS5jc3Moe3Bvc2l0aW9uOnRoaXMuZWxlbWVudC5jc3MoInBvc2l0aW9uIiksd2lkdGg6
dGhpcy5lbGVtZW50Lm91dGVyV2lkdGgoKSxoZWlnaHQ6dGhpcy5lbGVtZW50Lm91dGVySGVpZ2h0
KCksdG9wOnRoaXMuZWxlbWVudC5jc3MoInRvcCIpLGxlZnQ6dGhpcy5lbGVtZW50LmNzcygibGVm
dCIpfSkpLHRoaXMuZWxlbWVudD10aGlzLmVsZW1lbnQucGFyZW50KCkuZGF0YSgidWktcmVzaXph
YmxlIix0aGlzLmVsZW1lbnQucmVzaXphYmxlKCJpbnN0YW5jZSIpKSx0aGlzLmVsZW1lbnRJc1dy
YXBwZXI9ITAsZT17bWFyZ2luVG9wOnRoaXMub3JpZ2luYWxFbGVtZW50LmNzcygibWFyZ2luVG9w
IiksbWFyZ2luUmlnaHQ6dGhpcy5vcmlnaW5hbEVsZW1lbnQuY3NzKCJtYXJnaW5SaWdodCIpLG1h
cmdpbkJvdHRvbTp0aGlzLm9yaWdpbmFsRWxlbWVudC5jc3MoIm1hcmdpbkJvdHRvbSIpLG1hcmdp
bkxlZnQ6dGhpcy5vcmlnaW5hbEVsZW1lbnQuY3NzKCJtYXJnaW5MZWZ0Iil9LHRoaXMuZWxlbWVu
dC5jc3MoZSksdGhpcy5vcmlnaW5hbEVsZW1lbnQuY3NzKCJtYXJnaW4iLDApLHRoaXMub3JpZ2lu
YWxSZXNpemVTdHlsZT10aGlzLm9yaWdpbmFsRWxlbWVudC5jc3MoInJlc2l6ZSIpLHRoaXMub3Jp
Z2luYWxFbGVtZW50LmNzcygicmVzaXplIiwibm9uZSIpLHRoaXMuX3Byb3BvcnRpb25hbGx5UmVz
aXplRWxlbWVudHMucHVzaCh0aGlzLm9yaWdpbmFsRWxlbWVudC5jc3Moe3Bvc2l0aW9uOiJzdGF0
aWMiLHpvb206MSxkaXNwbGF5OiJibG9jayJ9KSksdGhpcy5vcmlnaW5hbEVsZW1lbnQuY3NzKGUp
LHRoaXMuX3Byb3BvcnRpb25hbGx5UmVzaXplKCkpLHRoaXMuX3NldHVwSGFuZGxlcygpLGkuYXV0
b0hpZGUmJnQodGhpcy5lbGVtZW50KS5vbigibW91c2VlbnRlciIsZnVuY3Rpb24oKXtpLmRpc2Fi
bGVkfHwocy5fcmVtb3ZlQ2xhc3MoInVpLXJlc2l6YWJsZS1hdXRvaGlkZSIpLHMuX2hhbmRsZXMu
c2hvdygpKX0pLm9uKCJtb3VzZWxlYXZlIixmdW5jdGlvbigpe2kuZGlzYWJsZWR8fHMucmVzaXpp
bmd8fChzLl9hZGRDbGFzcygidWktcmVzaXphYmxlLWF1dG9oaWRlIikscy5faGFuZGxlcy5oaWRl
KCkpfSksdGhpcy5fbW91c2VJbml0KCl9LF9kZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy5fbW91c2VE
ZXN0cm95KCk7dmFyIGUsaT1mdW5jdGlvbihlKXt0KGUpLnJlbW92ZURhdGEoInJlc2l6YWJsZSIp
LnJlbW92ZURhdGEoInVpLXJlc2l6YWJsZSIpLm9mZigiLnJlc2l6YWJsZSIpLmZpbmQoIi51aS1y
ZXNpemFibGUtaGFuZGxlIikucmVtb3ZlKCl9O3JldHVybiB0aGlzLmVsZW1lbnRJc1dyYXBwZXIm
JihpKHRoaXMuZWxlbWVudCksZT10aGlzLmVsZW1lbnQsdGhpcy5vcmlnaW5hbEVsZW1lbnQuY3Nz
KHtwb3NpdGlvbjplLmNzcygicG9zaXRpb24iKSx3aWR0aDplLm91dGVyV2lkdGgoKSxoZWlnaHQ6
ZS5vdXRlckhlaWdodCgpLHRvcDplLmNzcygidG9wIiksbGVmdDplLmNzcygibGVmdCIpfSkuaW5z
ZXJ0QWZ0ZXIoZSksZS5yZW1vdmUoKSksdGhpcy5vcmlnaW5hbEVsZW1lbnQuY3NzKCJyZXNpemUi
LHRoaXMub3JpZ2luYWxSZXNpemVTdHlsZSksaSh0aGlzLm9yaWdpbmFsRWxlbWVudCksdGhpc30s
X3NldE9wdGlvbjpmdW5jdGlvbih0LGUpe3N3aXRjaCh0aGlzLl9zdXBlcih0LGUpLHQpe2Nhc2Ui
aGFuZGxlcyI6dGhpcy5fcmVtb3ZlSGFuZGxlcygpLHRoaXMuX3NldHVwSGFuZGxlcygpO2JyZWFr
O2RlZmF1bHQ6fX0sX3NldHVwSGFuZGxlczpmdW5jdGlvbigpe3ZhciBlLGkscyxuLG8sYT10aGlz
Lm9wdGlvbnMscj10aGlzO2lmKHRoaXMuaGFuZGxlcz1hLmhhbmRsZXN8fCh0KCIudWktcmVzaXph
YmxlLWhhbmRsZSIsdGhpcy5lbGVtZW50KS5sZW5ndGg/e246Ii51aS1yZXNpemFibGUtbiIsZToi
LnVpLXJlc2l6YWJsZS1lIixzOiIudWktcmVzaXphYmxlLXMiLHc6Ii51aS1yZXNpemFibGUtdyIs
c2U6Ii51aS1yZXNpemFibGUtc2UiLHN3OiIudWktcmVzaXphYmxlLXN3IixuZToiLnVpLXJlc2l6
YWJsZS1uZSIsbnc6Ii51aS1yZXNpemFibGUtbncifToiZSxzLHNlIiksdGhpcy5faGFuZGxlcz10
KCksdGhpcy5oYW5kbGVzLmNvbnN0cnVjdG9yPT09U3RyaW5nKWZvcigiYWxsIj09PXRoaXMuaGFu
ZGxlcyYmKHRoaXMuaGFuZGxlcz0ibixlLHMsdyxzZSxzdyxuZSxudyIpLHM9dGhpcy5oYW5kbGVz
LnNwbGl0KCIsIiksdGhpcy5oYW5kbGVzPXt9LGk9MDtzLmxlbmd0aD5pO2krKyllPXQudHJpbShz
W2ldKSxuPSJ1aS1yZXNpemFibGUtIitlLG89dCgiPGRpdj4iKSx0aGlzLl9hZGRDbGFzcyhvLCJ1
aS1yZXNpemFibGUtaGFuZGxlICIrbiksby5jc3Moe3pJbmRleDphLnpJbmRleH0pLHRoaXMuaGFu
ZGxlc1tlXT0iLnVpLXJlc2l6YWJsZS0iK2UsdGhpcy5lbGVtZW50LmFwcGVuZChvKTt0aGlzLl9y
ZW5kZXJBeGlzPWZ1bmN0aW9uKGUpe3ZhciBpLHMsbixvO2U9ZXx8dGhpcy5lbGVtZW50O2Zvcihp
IGluIHRoaXMuaGFuZGxlcyl0aGlzLmhhbmRsZXNbaV0uY29uc3RydWN0b3I9PT1TdHJpbmc/dGhp
cy5oYW5kbGVzW2ldPXRoaXMuZWxlbWVudC5jaGlsZHJlbih0aGlzLmhhbmRsZXNbaV0pLmZpcnN0
KCkuc2hvdygpOih0aGlzLmhhbmRsZXNbaV0uanF1ZXJ5fHx0aGlzLmhhbmRsZXNbaV0ubm9kZVR5
cGUpJiYodGhpcy5oYW5kbGVzW2ldPXQodGhpcy5oYW5kbGVzW2ldKSx0aGlzLl9vbih0aGlzLmhh
bmRsZXNbaV0se21vdXNlZG93bjpyLl9tb3VzZURvd259KSksdGhpcy5lbGVtZW50SXNXcmFwcGVy
JiZ0aGlzLm9yaWdpbmFsRWxlbWVudFswXS5ub2RlTmFtZS5tYXRjaCgvXih0ZXh0YXJlYXxpbnB1
dHxzZWxlY3R8YnV0dG9uKSQvaSkmJihzPXQodGhpcy5oYW5kbGVzW2ldLHRoaXMuZWxlbWVudCks
bz0vc3d8bmV8bnd8c2V8bnxzLy50ZXN0KGkpP3Mub3V0ZXJIZWlnaHQoKTpzLm91dGVyV2lkdGgo
KSxuPVsicGFkZGluZyIsL25lfG53fG4vLnRlc3QoaSk/IlRvcCI6L3NlfHN3fHMvLnRlc3QoaSk/
IkJvdHRvbSI6L15lJC8udGVzdChpKT8iUmlnaHQiOiJMZWZ0Il0uam9pbigiIiksZS5jc3Mobixv
KSx0aGlzLl9wcm9wb3J0aW9uYWxseVJlc2l6ZSgpKSx0aGlzLl9oYW5kbGVzPXRoaXMuX2hhbmRs
ZXMuYWRkKHRoaXMuaGFuZGxlc1tpXSl9LHRoaXMuX3JlbmRlckF4aXModGhpcy5lbGVtZW50KSx0
aGlzLl9oYW5kbGVzPXRoaXMuX2hhbmRsZXMuYWRkKHRoaXMuZWxlbWVudC5maW5kKCIudWktcmVz
aXphYmxlLWhhbmRsZSIpKSx0aGlzLl9oYW5kbGVzLmRpc2FibGVTZWxlY3Rpb24oKSx0aGlzLl9o
YW5kbGVzLm9uKCJtb3VzZW92ZXIiLGZ1bmN0aW9uKCl7ci5yZXNpemluZ3x8KHRoaXMuY2xhc3NO
YW1lJiYobz10aGlzLmNsYXNzTmFtZS5tYXRjaCgvdWktcmVzaXphYmxlLShzZXxzd3xuZXxud3xu
fGV8c3x3KS9pKSksci5heGlzPW8mJm9bMV0/b1sxXToic2UiKX0pLGEuYXV0b0hpZGUmJih0aGlz
Ll9oYW5kbGVzLmhpZGUoKSx0aGlzLl9hZGRDbGFzcygidWktcmVzaXphYmxlLWF1dG9oaWRlIikp
fSxfcmVtb3ZlSGFuZGxlczpmdW5jdGlvbigpe3RoaXMuX2hhbmRsZXMucmVtb3ZlKCl9LF9tb3Vz
ZUNhcHR1cmU6ZnVuY3Rpb24oZSl7dmFyIGkscyxuPSExO2ZvcihpIGluIHRoaXMuaGFuZGxlcylz
PXQodGhpcy5oYW5kbGVzW2ldKVswXSwocz09PWUudGFyZ2V0fHx0LmNvbnRhaW5zKHMsZS50YXJn
ZXQpKSYmKG49ITApO3JldHVybiF0aGlzLm9wdGlvbnMuZGlzYWJsZWQmJm59LF9tb3VzZVN0YXJ0
OmZ1bmN0aW9uKGUpe3ZhciBpLHMsbixvPXRoaXMub3B0aW9ucyxhPXRoaXMuZWxlbWVudDtyZXR1
cm4gdGhpcy5yZXNpemluZz0hMCx0aGlzLl9yZW5kZXJQcm94eSgpLGk9dGhpcy5fbnVtKHRoaXMu
aGVscGVyLmNzcygibGVmdCIpKSxzPXRoaXMuX251bSh0aGlzLmhlbHBlci5jc3MoInRvcCIpKSxv
LmNvbnRhaW5tZW50JiYoaSs9dChvLmNvbnRhaW5tZW50KS5zY3JvbGxMZWZ0KCl8fDAscys9dChv
LmNvbnRhaW5tZW50KS5zY3JvbGxUb3AoKXx8MCksdGhpcy5vZmZzZXQ9dGhpcy5oZWxwZXIub2Zm
c2V0KCksdGhpcy5wb3NpdGlvbj17bGVmdDppLHRvcDpzfSx0aGlzLnNpemU9dGhpcy5faGVscGVy
P3t3aWR0aDp0aGlzLmhlbHBlci53aWR0aCgpLGhlaWdodDp0aGlzLmhlbHBlci5oZWlnaHQoKX06
e3dpZHRoOmEud2lkdGgoKSxoZWlnaHQ6YS5oZWlnaHQoKX0sdGhpcy5vcmlnaW5hbFNpemU9dGhp
cy5faGVscGVyP3t3aWR0aDphLm91dGVyV2lkdGgoKSxoZWlnaHQ6YS5vdXRlckhlaWdodCgpfTp7
d2lkdGg6YS53aWR0aCgpLGhlaWdodDphLmhlaWdodCgpfSx0aGlzLnNpemVEaWZmPXt3aWR0aDph
Lm91dGVyV2lkdGgoKS1hLndpZHRoKCksaGVpZ2h0OmEub3V0ZXJIZWlnaHQoKS1hLmhlaWdodCgp
fSx0aGlzLm9yaWdpbmFsUG9zaXRpb249e2xlZnQ6aSx0b3A6c30sdGhpcy5vcmlnaW5hbE1vdXNl
UG9zaXRpb249e2xlZnQ6ZS5wYWdlWCx0b3A6ZS5wYWdlWX0sdGhpcy5hc3BlY3RSYXRpbz0ibnVt
YmVyIj09dHlwZW9mIG8uYXNwZWN0UmF0aW8/by5hc3BlY3RSYXRpbzp0aGlzLm9yaWdpbmFsU2l6
ZS53aWR0aC90aGlzLm9yaWdpbmFsU2l6ZS5oZWlnaHR8fDEsbj10KCIudWktcmVzaXphYmxlLSIr
dGhpcy5heGlzKS5jc3MoImN1cnNvciIpLHQoImJvZHkiKS5jc3MoImN1cnNvciIsImF1dG8iPT09
bj90aGlzLmF4aXMrIi1yZXNpemUiOm4pLHRoaXMuX2FkZENsYXNzKCJ1aS1yZXNpemFibGUtcmVz
aXppbmciKSx0aGlzLl9wcm9wYWdhdGUoInN0YXJ0IixlKSwhMH0sX21vdXNlRHJhZzpmdW5jdGlv
bihlKXt2YXIgaSxzLG49dGhpcy5vcmlnaW5hbE1vdXNlUG9zaXRpb24sbz10aGlzLmF4aXMsYT1l
LnBhZ2VYLW4ubGVmdHx8MCxyPWUucGFnZVktbi50b3B8fDAsaD10aGlzLl9jaGFuZ2Vbb107cmV0
dXJuIHRoaXMuX3VwZGF0ZVByZXZQcm9wZXJ0aWVzKCksaD8oaT1oLmFwcGx5KHRoaXMsW2UsYSxy
XSksdGhpcy5fdXBkYXRlVmlydHVhbEJvdW5kYXJpZXMoZS5zaGlmdEtleSksKHRoaXMuX2FzcGVj
dFJhdGlvfHxlLnNoaWZ0S2V5KSYmKGk9dGhpcy5fdXBkYXRlUmF0aW8oaSxlKSksaT10aGlzLl9y
ZXNwZWN0U2l6ZShpLGUpLHRoaXMuX3VwZGF0ZUNhY2hlKGkpLHRoaXMuX3Byb3BhZ2F0ZSgicmVz
aXplIixlKSxzPXRoaXMuX2FwcGx5Q2hhbmdlcygpLCF0aGlzLl9oZWxwZXImJnRoaXMuX3Byb3Bv
cnRpb25hbGx5UmVzaXplRWxlbWVudHMubGVuZ3RoJiZ0aGlzLl9wcm9wb3J0aW9uYWxseVJlc2l6
ZSgpLHQuaXNFbXB0eU9iamVjdChzKXx8KHRoaXMuX3VwZGF0ZVByZXZQcm9wZXJ0aWVzKCksdGhp
cy5fdHJpZ2dlcigicmVzaXplIixlLHRoaXMudWkoKSksdGhpcy5fYXBwbHlDaGFuZ2VzKCkpLCEx
KTohMX0sX21vdXNlU3RvcDpmdW5jdGlvbihlKXt0aGlzLnJlc2l6aW5nPSExO3ZhciBpLHMsbixv
LGEscixoLGw9dGhpcy5vcHRpb25zLGM9dGhpcztyZXR1cm4gdGhpcy5faGVscGVyJiYoaT10aGlz
Ll9wcm9wb3J0aW9uYWxseVJlc2l6ZUVsZW1lbnRzLHM9aS5sZW5ndGgmJi90ZXh0YXJlYS9pLnRl
c3QoaVswXS5ub2RlTmFtZSksbj1zJiZ0aGlzLl9oYXNTY3JvbGwoaVswXSwibGVmdCIpPzA6Yy5z
aXplRGlmZi5oZWlnaHQsbz1zPzA6Yy5zaXplRGlmZi53aWR0aCxhPXt3aWR0aDpjLmhlbHBlci53
aWR0aCgpLW8saGVpZ2h0OmMuaGVscGVyLmhlaWdodCgpLW59LHI9cGFyc2VGbG9hdChjLmVsZW1l
bnQuY3NzKCJsZWZ0IikpKyhjLnBvc2l0aW9uLmxlZnQtYy5vcmlnaW5hbFBvc2l0aW9uLmxlZnQp
fHxudWxsLGg9cGFyc2VGbG9hdChjLmVsZW1lbnQuY3NzKCJ0b3AiKSkrKGMucG9zaXRpb24udG9w
LWMub3JpZ2luYWxQb3NpdGlvbi50b3ApfHxudWxsLGwuYW5pbWF0ZXx8dGhpcy5lbGVtZW50LmNz
cyh0LmV4dGVuZChhLHt0b3A6aCxsZWZ0OnJ9KSksYy5oZWxwZXIuaGVpZ2h0KGMuc2l6ZS5oZWln
aHQpLGMuaGVscGVyLndpZHRoKGMuc2l6ZS53aWR0aCksdGhpcy5faGVscGVyJiYhbC5hbmltYXRl
JiZ0aGlzLl9wcm9wb3J0aW9uYWxseVJlc2l6ZSgpKSx0KCJib2R5IikuY3NzKCJjdXJzb3IiLCJh
dXRvIiksdGhpcy5fcmVtb3ZlQ2xhc3MoInVpLXJlc2l6YWJsZS1yZXNpemluZyIpLHRoaXMuX3By
b3BhZ2F0ZSgic3RvcCIsZSksdGhpcy5faGVscGVyJiZ0aGlzLmhlbHBlci5yZW1vdmUoKSwhMX0s
X3VwZGF0ZVByZXZQcm9wZXJ0aWVzOmZ1bmN0aW9uKCl7dGhpcy5wcmV2UG9zaXRpb249e3RvcDp0
aGlzLnBvc2l0aW9uLnRvcCxsZWZ0OnRoaXMucG9zaXRpb24ubGVmdH0sdGhpcy5wcmV2U2l6ZT17
d2lkdGg6dGhpcy5zaXplLndpZHRoLGhlaWdodDp0aGlzLnNpemUuaGVpZ2h0fX0sX2FwcGx5Q2hh
bmdlczpmdW5jdGlvbigpe3ZhciB0PXt9O3JldHVybiB0aGlzLnBvc2l0aW9uLnRvcCE9PXRoaXMu
cHJldlBvc2l0aW9uLnRvcCYmKHQudG9wPXRoaXMucG9zaXRpb24udG9wKyJweCIpLHRoaXMucG9z
aXRpb24ubGVmdCE9PXRoaXMucHJldlBvc2l0aW9uLmxlZnQmJih0LmxlZnQ9dGhpcy5wb3NpdGlv
bi5sZWZ0KyJweCIpLHRoaXMuc2l6ZS53aWR0aCE9PXRoaXMucHJldlNpemUud2lkdGgmJih0Lndp
ZHRoPXRoaXMuc2l6ZS53aWR0aCsicHgiKSx0aGlzLnNpemUuaGVpZ2h0IT09dGhpcy5wcmV2U2l6
ZS5oZWlnaHQmJih0LmhlaWdodD10aGlzLnNpemUuaGVpZ2h0KyJweCIpLHRoaXMuaGVscGVyLmNz
cyh0KSx0fSxfdXBkYXRlVmlydHVhbEJvdW5kYXJpZXM6ZnVuY3Rpb24odCl7dmFyIGUsaSxzLG4s
byxhPXRoaXMub3B0aW9ucztvPXttaW5XaWR0aDp0aGlzLl9pc051bWJlcihhLm1pbldpZHRoKT9h
Lm1pbldpZHRoOjAsbWF4V2lkdGg6dGhpcy5faXNOdW1iZXIoYS5tYXhXaWR0aCk/YS5tYXhXaWR0
aDoxLzAsbWluSGVpZ2h0OnRoaXMuX2lzTnVtYmVyKGEubWluSGVpZ2h0KT9hLm1pbkhlaWdodDow
LG1heEhlaWdodDp0aGlzLl9pc051bWJlcihhLm1heEhlaWdodCk/YS5tYXhIZWlnaHQ6MS8wfSwo
dGhpcy5fYXNwZWN0UmF0aW98fHQpJiYoZT1vLm1pbkhlaWdodCp0aGlzLmFzcGVjdFJhdGlvLHM9
by5taW5XaWR0aC90aGlzLmFzcGVjdFJhdGlvLGk9by5tYXhIZWlnaHQqdGhpcy5hc3BlY3RSYXRp
byxuPW8ubWF4V2lkdGgvdGhpcy5hc3BlY3RSYXRpbyxlPm8ubWluV2lkdGgmJihvLm1pbldpZHRo
PWUpLHM+by5taW5IZWlnaHQmJihvLm1pbkhlaWdodD1zKSxvLm1heFdpZHRoPmkmJihvLm1heFdp
ZHRoPWkpLG8ubWF4SGVpZ2h0Pm4mJihvLm1heEhlaWdodD1uKSksdGhpcy5fdkJvdW5kYXJpZXM9
b30sX3VwZGF0ZUNhY2hlOmZ1bmN0aW9uKHQpe3RoaXMub2Zmc2V0PXRoaXMuaGVscGVyLm9mZnNl
dCgpLHRoaXMuX2lzTnVtYmVyKHQubGVmdCkmJih0aGlzLnBvc2l0aW9uLmxlZnQ9dC5sZWZ0KSx0
aGlzLl9pc051bWJlcih0LnRvcCkmJih0aGlzLnBvc2l0aW9uLnRvcD10LnRvcCksdGhpcy5faXNO
dW1iZXIodC5oZWlnaHQpJiYodGhpcy5zaXplLmhlaWdodD10LmhlaWdodCksdGhpcy5faXNOdW1i
ZXIodC53aWR0aCkmJih0aGlzLnNpemUud2lkdGg9dC53aWR0aCl9LF91cGRhdGVSYXRpbzpmdW5j
dGlvbih0KXt2YXIgZT10aGlzLnBvc2l0aW9uLGk9dGhpcy5zaXplLHM9dGhpcy5heGlzO3JldHVy
biB0aGlzLl9pc051bWJlcih0LmhlaWdodCk/dC53aWR0aD10LmhlaWdodCp0aGlzLmFzcGVjdFJh
dGlvOnRoaXMuX2lzTnVtYmVyKHQud2lkdGgpJiYodC5oZWlnaHQ9dC53aWR0aC90aGlzLmFzcGVj
dFJhdGlvKSwic3ciPT09cyYmKHQubGVmdD1lLmxlZnQrKGkud2lkdGgtdC53aWR0aCksdC50b3A9
bnVsbCksIm53Ij09PXMmJih0LnRvcD1lLnRvcCsoaS5oZWlnaHQtdC5oZWlnaHQpLHQubGVmdD1l
LmxlZnQrKGkud2lkdGgtdC53aWR0aCkpLHR9LF9yZXNwZWN0U2l6ZTpmdW5jdGlvbih0KXt2YXIg
ZT10aGlzLl92Qm91bmRhcmllcyxpPXRoaXMuYXhpcyxzPXRoaXMuX2lzTnVtYmVyKHQud2lkdGgp
JiZlLm1heFdpZHRoJiZlLm1heFdpZHRoPHQud2lkdGgsbj10aGlzLl9pc051bWJlcih0LmhlaWdo
dCkmJmUubWF4SGVpZ2h0JiZlLm1heEhlaWdodDx0LmhlaWdodCxvPXRoaXMuX2lzTnVtYmVyKHQu
d2lkdGgpJiZlLm1pbldpZHRoJiZlLm1pbldpZHRoPnQud2lkdGgsYT10aGlzLl9pc051bWJlcih0
LmhlaWdodCkmJmUubWluSGVpZ2h0JiZlLm1pbkhlaWdodD50LmhlaWdodCxyPXRoaXMub3JpZ2lu
YWxQb3NpdGlvbi5sZWZ0K3RoaXMub3JpZ2luYWxTaXplLndpZHRoLGg9dGhpcy5vcmlnaW5hbFBv
c2l0aW9uLnRvcCt0aGlzLm9yaWdpbmFsU2l6ZS5oZWlnaHQsbD0vc3d8bnd8dy8udGVzdChpKSxj
PS9ud3xuZXxuLy50ZXN0KGkpO3JldHVybiBvJiYodC53aWR0aD1lLm1pbldpZHRoKSxhJiYodC5o
ZWlnaHQ9ZS5taW5IZWlnaHQpLHMmJih0LndpZHRoPWUubWF4V2lkdGgpLG4mJih0LmhlaWdodD1l
Lm1heEhlaWdodCksbyYmbCYmKHQubGVmdD1yLWUubWluV2lkdGgpLHMmJmwmJih0LmxlZnQ9ci1l
Lm1heFdpZHRoKSxhJiZjJiYodC50b3A9aC1lLm1pbkhlaWdodCksbiYmYyYmKHQudG9wPWgtZS5t
YXhIZWlnaHQpLHQud2lkdGh8fHQuaGVpZ2h0fHx0LmxlZnR8fCF0LnRvcD90LndpZHRofHx0Lmhl
aWdodHx8dC50b3B8fCF0LmxlZnR8fCh0LmxlZnQ9bnVsbCk6dC50b3A9bnVsbCx0fSxfZ2V0UGFk
ZGluZ1BsdXNCb3JkZXJEaW1lbnNpb25zOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wLGk9W10scz1b
dC5jc3MoImJvcmRlclRvcFdpZHRoIiksdC5jc3MoImJvcmRlclJpZ2h0V2lkdGgiKSx0LmNzcygi
Ym9yZGVyQm90dG9tV2lkdGgiKSx0LmNzcygiYm9yZGVyTGVmdFdpZHRoIildLG49W3QuY3NzKCJw
YWRkaW5nVG9wIiksdC5jc3MoInBhZGRpbmdSaWdodCIpLHQuY3NzKCJwYWRkaW5nQm90dG9tIiks
dC5jc3MoInBhZGRpbmdMZWZ0IildOzQ+ZTtlKyspaVtlXT1wYXJzZUZsb2F0KHNbZV0pfHwwLGlb
ZV0rPXBhcnNlRmxvYXQobltlXSl8fDA7cmV0dXJue2hlaWdodDppWzBdK2lbMl0sd2lkdGg6aVsx
XStpWzNdfX0sX3Byb3BvcnRpb25hbGx5UmVzaXplOmZ1bmN0aW9uKCl7aWYodGhpcy5fcHJvcG9y
dGlvbmFsbHlSZXNpemVFbGVtZW50cy5sZW5ndGgpZm9yKHZhciB0LGU9MCxpPXRoaXMuaGVscGVy
fHx0aGlzLmVsZW1lbnQ7dGhpcy5fcHJvcG9ydGlvbmFsbHlSZXNpemVFbGVtZW50cy5sZW5ndGg+
ZTtlKyspdD10aGlzLl9wcm9wb3J0aW9uYWxseVJlc2l6ZUVsZW1lbnRzW2VdLHRoaXMub3V0ZXJE
aW1lbnNpb25zfHwodGhpcy5vdXRlckRpbWVuc2lvbnM9dGhpcy5fZ2V0UGFkZGluZ1BsdXNCb3Jk
ZXJEaW1lbnNpb25zKHQpKSx0LmNzcyh7aGVpZ2h0OmkuaGVpZ2h0KCktdGhpcy5vdXRlckRpbWVu
c2lvbnMuaGVpZ2h0fHwwLHdpZHRoOmkud2lkdGgoKS10aGlzLm91dGVyRGltZW5zaW9ucy53aWR0
aHx8MH0pfSxfcmVuZGVyUHJveHk6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmVsZW1lbnQsaT10aGlz
Lm9wdGlvbnM7dGhpcy5lbGVtZW50T2Zmc2V0PWUub2Zmc2V0KCksdGhpcy5faGVscGVyPyh0aGlz
LmhlbHBlcj10aGlzLmhlbHBlcnx8dCgiPGRpdiBzdHlsZT0nb3ZlcmZsb3c6aGlkZGVuOyc+PC9k
aXY+IiksdGhpcy5fYWRkQ2xhc3ModGhpcy5oZWxwZXIsdGhpcy5faGVscGVyKSx0aGlzLmhlbHBl
ci5jc3Moe3dpZHRoOnRoaXMuZWxlbWVudC5vdXRlcldpZHRoKCksaGVpZ2h0OnRoaXMuZWxlbWVu
dC5vdXRlckhlaWdodCgpLHBvc2l0aW9uOiJhYnNvbHV0ZSIsbGVmdDp0aGlzLmVsZW1lbnRPZmZz
ZXQubGVmdCsicHgiLHRvcDp0aGlzLmVsZW1lbnRPZmZzZXQudG9wKyJweCIsekluZGV4OisraS56
SW5kZXh9KSx0aGlzLmhlbHBlci5hcHBlbmRUbygiYm9keSIpLmRpc2FibGVTZWxlY3Rpb24oKSk6
dGhpcy5oZWxwZXI9dGhpcy5lbGVtZW50fSxfY2hhbmdlOntlOmZ1bmN0aW9uKHQsZSl7cmV0dXJu
e3dpZHRoOnRoaXMub3JpZ2luYWxTaXplLndpZHRoK2V9fSx3OmZ1bmN0aW9uKHQsZSl7dmFyIGk9
dGhpcy5vcmlnaW5hbFNpemUscz10aGlzLm9yaWdpbmFsUG9zaXRpb247cmV0dXJue2xlZnQ6cy5s
ZWZ0K2Usd2lkdGg6aS53aWR0aC1lfX0sbjpmdW5jdGlvbih0LGUsaSl7dmFyIHM9dGhpcy5vcmln
aW5hbFNpemUsbj10aGlzLm9yaWdpbmFsUG9zaXRpb247cmV0dXJue3RvcDpuLnRvcCtpLGhlaWdo
dDpzLmhlaWdodC1pfX0sczpmdW5jdGlvbih0LGUsaSl7cmV0dXJue2hlaWdodDp0aGlzLm9yaWdp
bmFsU2l6ZS5oZWlnaHQraX19LHNlOmZ1bmN0aW9uKGUsaSxzKXtyZXR1cm4gdC5leHRlbmQodGhp
cy5fY2hhbmdlLnMuYXBwbHkodGhpcyxhcmd1bWVudHMpLHRoaXMuX2NoYW5nZS5lLmFwcGx5KHRo
aXMsW2UsaSxzXSkpfSxzdzpmdW5jdGlvbihlLGkscyl7cmV0dXJuIHQuZXh0ZW5kKHRoaXMuX2No
YW5nZS5zLmFwcGx5KHRoaXMsYXJndW1lbnRzKSx0aGlzLl9jaGFuZ2Uudy5hcHBseSh0aGlzLFtl
LGksc10pKX0sbmU6ZnVuY3Rpb24oZSxpLHMpe3JldHVybiB0LmV4dGVuZCh0aGlzLl9jaGFuZ2Uu
bi5hcHBseSh0aGlzLGFyZ3VtZW50cyksdGhpcy5fY2hhbmdlLmUuYXBwbHkodGhpcyxbZSxpLHNd
KSl9LG53OmZ1bmN0aW9uKGUsaSxzKXtyZXR1cm4gdC5leHRlbmQodGhpcy5fY2hhbmdlLm4uYXBw
bHkodGhpcyxhcmd1bWVudHMpLHRoaXMuX2NoYW5nZS53LmFwcGx5KHRoaXMsW2UsaSxzXSkpfX0s
X3Byb3BhZ2F0ZTpmdW5jdGlvbihlLGkpe3QudWkucGx1Z2luLmNhbGwodGhpcyxlLFtpLHRoaXMu
dWkoKV0pLCJyZXNpemUiIT09ZSYmdGhpcy5fdHJpZ2dlcihlLGksdGhpcy51aSgpKX0scGx1Z2lu
czp7fSx1aTpmdW5jdGlvbigpe3JldHVybntvcmlnaW5hbEVsZW1lbnQ6dGhpcy5vcmlnaW5hbEVs
ZW1lbnQsZWxlbWVudDp0aGlzLmVsZW1lbnQsaGVscGVyOnRoaXMuaGVscGVyLHBvc2l0aW9uOnRo
aXMucG9zaXRpb24sc2l6ZTp0aGlzLnNpemUsb3JpZ2luYWxTaXplOnRoaXMub3JpZ2luYWxTaXpl
LG9yaWdpbmFsUG9zaXRpb246dGhpcy5vcmlnaW5hbFBvc2l0aW9ufX19KSx0LnVpLnBsdWdpbi5h
ZGQoInJlc2l6YWJsZSIsImFuaW1hdGUiLHtzdG9wOmZ1bmN0aW9uKGUpe3ZhciBpPXQodGhpcyku
cmVzaXphYmxlKCJpbnN0YW5jZSIpLHM9aS5vcHRpb25zLG49aS5fcHJvcG9ydGlvbmFsbHlSZXNp
emVFbGVtZW50cyxvPW4ubGVuZ3RoJiYvdGV4dGFyZWEvaS50ZXN0KG5bMF0ubm9kZU5hbWUpLGE9
byYmaS5faGFzU2Nyb2xsKG5bMF0sImxlZnQiKT8wOmkuc2l6ZURpZmYuaGVpZ2h0LHI9bz8wOmku
c2l6ZURpZmYud2lkdGgsaD17d2lkdGg6aS5zaXplLndpZHRoLXIsaGVpZ2h0Omkuc2l6ZS5oZWln
aHQtYX0sbD1wYXJzZUZsb2F0KGkuZWxlbWVudC5jc3MoImxlZnQiKSkrKGkucG9zaXRpb24ubGVm
dC1pLm9yaWdpbmFsUG9zaXRpb24ubGVmdCl8fG51bGwsYz1wYXJzZUZsb2F0KGkuZWxlbWVudC5j
c3MoInRvcCIpKSsoaS5wb3NpdGlvbi50b3AtaS5vcmlnaW5hbFBvc2l0aW9uLnRvcCl8fG51bGw7
aS5lbGVtZW50LmFuaW1hdGUodC5leHRlbmQoaCxjJiZsP3t0b3A6YyxsZWZ0Omx9Ont9KSx7ZHVy
YXRpb246cy5hbmltYXRlRHVyYXRpb24sZWFzaW5nOnMuYW5pbWF0ZUVhc2luZyxzdGVwOmZ1bmN0
aW9uKCl7dmFyIHM9e3dpZHRoOnBhcnNlRmxvYXQoaS5lbGVtZW50LmNzcygid2lkdGgiKSksaGVp
Z2h0OnBhcnNlRmxvYXQoaS5lbGVtZW50LmNzcygiaGVpZ2h0IikpLHRvcDpwYXJzZUZsb2F0KGku
ZWxlbWVudC5jc3MoInRvcCIpKSxsZWZ0OnBhcnNlRmxvYXQoaS5lbGVtZW50LmNzcygibGVmdCIp
KX07biYmbi5sZW5ndGgmJnQoblswXSkuY3NzKHt3aWR0aDpzLndpZHRoLGhlaWdodDpzLmhlaWdo
dH0pLGkuX3VwZGF0ZUNhY2hlKHMpLGkuX3Byb3BhZ2F0ZSgicmVzaXplIixlKX19KX19KSx0LnVp
LnBsdWdpbi5hZGQoInJlc2l6YWJsZSIsImNvbnRhaW5tZW50Iix7c3RhcnQ6ZnVuY3Rpb24oKXt2
YXIgZSxpLHMsbixvLGEscixoPXQodGhpcykucmVzaXphYmxlKCJpbnN0YW5jZSIpLGw9aC5vcHRp
b25zLGM9aC5lbGVtZW50LHU9bC5jb250YWlubWVudCxkPXUgaW5zdGFuY2VvZiB0P3UuZ2V0KDAp
Oi9wYXJlbnQvLnRlc3QodSk/Yy5wYXJlbnQoKS5nZXQoMCk6dTtkJiYoaC5jb250YWluZXJFbGVt
ZW50PXQoZCksL2RvY3VtZW50Ly50ZXN0KHUpfHx1PT09ZG9jdW1lbnQ/KGguY29udGFpbmVyT2Zm
c2V0PXtsZWZ0OjAsdG9wOjB9LGguY29udGFpbmVyUG9zaXRpb249e2xlZnQ6MCx0b3A6MH0saC5w
YXJlbnREYXRhPXtlbGVtZW50OnQoZG9jdW1lbnQpLGxlZnQ6MCx0b3A6MCx3aWR0aDp0KGRvY3Vt
ZW50KS53aWR0aCgpLGhlaWdodDp0KGRvY3VtZW50KS5oZWlnaHQoKXx8ZG9jdW1lbnQuYm9keS5w
YXJlbnROb2RlLnNjcm9sbEhlaWdodH0pOihlPXQoZCksaT1bXSx0KFsiVG9wIiwiUmlnaHQiLCJM
ZWZ0IiwiQm90dG9tIl0pLmVhY2goZnVuY3Rpb24odCxzKXtpW3RdPWguX251bShlLmNzcygicGFk
ZGluZyIrcykpfSksaC5jb250YWluZXJPZmZzZXQ9ZS5vZmZzZXQoKSxoLmNvbnRhaW5lclBvc2l0
aW9uPWUucG9zaXRpb24oKSxoLmNvbnRhaW5lclNpemU9e2hlaWdodDplLmlubmVySGVpZ2h0KCkt
aVszXSx3aWR0aDplLmlubmVyV2lkdGgoKS1pWzFdfSxzPWguY29udGFpbmVyT2Zmc2V0LG49aC5j
b250YWluZXJTaXplLmhlaWdodCxvPWguY29udGFpbmVyU2l6ZS53aWR0aCxhPWguX2hhc1Njcm9s
bChkLCJsZWZ0Iik/ZC5zY3JvbGxXaWR0aDpvLHI9aC5faGFzU2Nyb2xsKGQpP2Quc2Nyb2xsSGVp
Z2h0Om4saC5wYXJlbnREYXRhPXtlbGVtZW50OmQsbGVmdDpzLmxlZnQsdG9wOnMudG9wLHdpZHRo
OmEsaGVpZ2h0OnJ9KSl9LHJlc2l6ZTpmdW5jdGlvbihlKXt2YXIgaSxzLG4sbyxhPXQodGhpcyku
cmVzaXphYmxlKCJpbnN0YW5jZSIpLHI9YS5vcHRpb25zLGg9YS5jb250YWluZXJPZmZzZXQsbD1h
LnBvc2l0aW9uLGM9YS5fYXNwZWN0UmF0aW98fGUuc2hpZnRLZXksdT17dG9wOjAsbGVmdDowfSxk
PWEuY29udGFpbmVyRWxlbWVudCxwPSEwO2RbMF0hPT1kb2N1bWVudCYmL3N0YXRpYy8udGVzdChk
LmNzcygicG9zaXRpb24iKSkmJih1PWgpLGwubGVmdDwoYS5faGVscGVyP2gubGVmdDowKSYmKGEu
c2l6ZS53aWR0aD1hLnNpemUud2lkdGgrKGEuX2hlbHBlcj9hLnBvc2l0aW9uLmxlZnQtaC5sZWZ0
OmEucG9zaXRpb24ubGVmdC11LmxlZnQpLGMmJihhLnNpemUuaGVpZ2h0PWEuc2l6ZS53aWR0aC9h
LmFzcGVjdFJhdGlvLHA9ITEpLGEucG9zaXRpb24ubGVmdD1yLmhlbHBlcj9oLmxlZnQ6MCksbC50
b3A8KGEuX2hlbHBlcj9oLnRvcDowKSYmKGEuc2l6ZS5oZWlnaHQ9YS5zaXplLmhlaWdodCsoYS5f
aGVscGVyP2EucG9zaXRpb24udG9wLWgudG9wOmEucG9zaXRpb24udG9wKSxjJiYoYS5zaXplLndp
ZHRoPWEuc2l6ZS5oZWlnaHQqYS5hc3BlY3RSYXRpbyxwPSExKSxhLnBvc2l0aW9uLnRvcD1hLl9o
ZWxwZXI/aC50b3A6MCksbj1hLmNvbnRhaW5lckVsZW1lbnQuZ2V0KDApPT09YS5lbGVtZW50LnBh
cmVudCgpLmdldCgwKSxvPS9yZWxhdGl2ZXxhYnNvbHV0ZS8udGVzdChhLmNvbnRhaW5lckVsZW1l
bnQuY3NzKCJwb3NpdGlvbiIpKSxuJiZvPyhhLm9mZnNldC5sZWZ0PWEucGFyZW50RGF0YS5sZWZ0
K2EucG9zaXRpb24ubGVmdCxhLm9mZnNldC50b3A9YS5wYXJlbnREYXRhLnRvcCthLnBvc2l0aW9u
LnRvcCk6KGEub2Zmc2V0LmxlZnQ9YS5lbGVtZW50Lm9mZnNldCgpLmxlZnQsYS5vZmZzZXQudG9w
PWEuZWxlbWVudC5vZmZzZXQoKS50b3ApLGk9TWF0aC5hYnMoYS5zaXplRGlmZi53aWR0aCsoYS5f
aGVscGVyP2Eub2Zmc2V0LmxlZnQtdS5sZWZ0OmEub2Zmc2V0LmxlZnQtaC5sZWZ0KSkscz1NYXRo
LmFicyhhLnNpemVEaWZmLmhlaWdodCsoYS5faGVscGVyP2Eub2Zmc2V0LnRvcC11LnRvcDphLm9m
ZnNldC50b3AtaC50b3ApKSxpK2Euc2l6ZS53aWR0aD49YS5wYXJlbnREYXRhLndpZHRoJiYoYS5z
aXplLndpZHRoPWEucGFyZW50RGF0YS53aWR0aC1pLGMmJihhLnNpemUuaGVpZ2h0PWEuc2l6ZS53
aWR0aC9hLmFzcGVjdFJhdGlvLHA9ITEpKSxzK2Euc2l6ZS5oZWlnaHQ+PWEucGFyZW50RGF0YS5o
ZWlnaHQmJihhLnNpemUuaGVpZ2h0PWEucGFyZW50RGF0YS5oZWlnaHQtcyxjJiYoYS5zaXplLndp
ZHRoPWEuc2l6ZS5oZWlnaHQqYS5hc3BlY3RSYXRpbyxwPSExKSkscHx8KGEucG9zaXRpb24ubGVm
dD1hLnByZXZQb3NpdGlvbi5sZWZ0LGEucG9zaXRpb24udG9wPWEucHJldlBvc2l0aW9uLnRvcCxh
LnNpemUud2lkdGg9YS5wcmV2U2l6ZS53aWR0aCxhLnNpemUuaGVpZ2h0PWEucHJldlNpemUuaGVp
Z2h0KX0sc3RvcDpmdW5jdGlvbigpe3ZhciBlPXQodGhpcykucmVzaXphYmxlKCJpbnN0YW5jZSIp
LGk9ZS5vcHRpb25zLHM9ZS5jb250YWluZXJPZmZzZXQsbj1lLmNvbnRhaW5lclBvc2l0aW9uLG89
ZS5jb250YWluZXJFbGVtZW50LGE9dChlLmhlbHBlcikscj1hLm9mZnNldCgpLGg9YS5vdXRlcldp
ZHRoKCktZS5zaXplRGlmZi53aWR0aCxsPWEub3V0ZXJIZWlnaHQoKS1lLnNpemVEaWZmLmhlaWdo
dDtlLl9oZWxwZXImJiFpLmFuaW1hdGUmJi9yZWxhdGl2ZS8udGVzdChvLmNzcygicG9zaXRpb24i
KSkmJnQodGhpcykuY3NzKHtsZWZ0OnIubGVmdC1uLmxlZnQtcy5sZWZ0LHdpZHRoOmgsaGVpZ2h0
Omx9KSxlLl9oZWxwZXImJiFpLmFuaW1hdGUmJi9zdGF0aWMvLnRlc3Qoby5jc3MoInBvc2l0aW9u
IikpJiZ0KHRoaXMpLmNzcyh7bGVmdDpyLmxlZnQtbi5sZWZ0LXMubGVmdCx3aWR0aDpoLGhlaWdo
dDpsfSl9fSksdC51aS5wbHVnaW4uYWRkKCJyZXNpemFibGUiLCJhbHNvUmVzaXplIix7c3RhcnQ6
ZnVuY3Rpb24oKXt2YXIgZT10KHRoaXMpLnJlc2l6YWJsZSgiaW5zdGFuY2UiKSxpPWUub3B0aW9u
czt0KGkuYWxzb1Jlc2l6ZSkuZWFjaChmdW5jdGlvbigpe3ZhciBlPXQodGhpcyk7ZS5kYXRhKCJ1
aS1yZXNpemFibGUtYWxzb3Jlc2l6ZSIse3dpZHRoOnBhcnNlRmxvYXQoZS53aWR0aCgpKSxoZWln
aHQ6cGFyc2VGbG9hdChlLmhlaWdodCgpKSxsZWZ0OnBhcnNlRmxvYXQoZS5jc3MoImxlZnQiKSks
dG9wOnBhcnNlRmxvYXQoZS5jc3MoInRvcCIpKX0pfSl9LHJlc2l6ZTpmdW5jdGlvbihlLGkpe3Zh
ciBzPXQodGhpcykucmVzaXphYmxlKCJpbnN0YW5jZSIpLG49cy5vcHRpb25zLG89cy5vcmlnaW5h
bFNpemUsYT1zLm9yaWdpbmFsUG9zaXRpb24scj17aGVpZ2h0OnMuc2l6ZS5oZWlnaHQtby5oZWln
aHR8fDAsd2lkdGg6cy5zaXplLndpZHRoLW8ud2lkdGh8fDAsdG9wOnMucG9zaXRpb24udG9wLWEu
dG9wfHwwLGxlZnQ6cy5wb3NpdGlvbi5sZWZ0LWEubGVmdHx8MH07dChuLmFsc29SZXNpemUpLmVh
Y2goZnVuY3Rpb24oKXt2YXIgZT10KHRoaXMpLHM9dCh0aGlzKS5kYXRhKCJ1aS1yZXNpemFibGUt
YWxzb3Jlc2l6ZSIpLG49e30sbz1lLnBhcmVudHMoaS5vcmlnaW5hbEVsZW1lbnRbMF0pLmxlbmd0
aD9bIndpZHRoIiwiaGVpZ2h0Il06WyJ3aWR0aCIsImhlaWdodCIsInRvcCIsImxlZnQiXTt0LmVh
Y2gobyxmdW5jdGlvbih0LGUpe3ZhciBpPShzW2VdfHwwKSsocltlXXx8MCk7aSYmaT49MCYmKG5b
ZV09aXx8bnVsbCl9KSxlLmNzcyhuKX0pfSxzdG9wOmZ1bmN0aW9uKCl7dCh0aGlzKS5yZW1vdmVE
YXRhKCJ1aS1yZXNpemFibGUtYWxzb3Jlc2l6ZSIpfX0pLHQudWkucGx1Z2luLmFkZCgicmVzaXph
YmxlIiwiZ2hvc3QiLHtzdGFydDpmdW5jdGlvbigpe3ZhciBlPXQodGhpcykucmVzaXphYmxlKCJp
bnN0YW5jZSIpLGk9ZS5zaXplO2UuZ2hvc3Q9ZS5vcmlnaW5hbEVsZW1lbnQuY2xvbmUoKSxlLmdo
b3N0LmNzcyh7b3BhY2l0eTouMjUsZGlzcGxheToiYmxvY2siLHBvc2l0aW9uOiJyZWxhdGl2ZSIs
aGVpZ2h0OmkuaGVpZ2h0LHdpZHRoOmkud2lkdGgsbWFyZ2luOjAsbGVmdDowLHRvcDowfSksZS5f
YWRkQ2xhc3MoZS5naG9zdCwidWktcmVzaXphYmxlLWdob3N0IiksdC51aUJhY2tDb21wYXQhPT0h
MSYmInN0cmluZyI9PXR5cGVvZiBlLm9wdGlvbnMuZ2hvc3QmJmUuZ2hvc3QuYWRkQ2xhc3ModGhp
cy5vcHRpb25zLmdob3N0KSxlLmdob3N0LmFwcGVuZFRvKGUuaGVscGVyKX0scmVzaXplOmZ1bmN0
aW9uKCl7dmFyIGU9dCh0aGlzKS5yZXNpemFibGUoImluc3RhbmNlIik7ZS5naG9zdCYmZS5naG9z
dC5jc3Moe3Bvc2l0aW9uOiJyZWxhdGl2ZSIsaGVpZ2h0OmUuc2l6ZS5oZWlnaHQsd2lkdGg6ZS5z
aXplLndpZHRofSl9LHN0b3A6ZnVuY3Rpb24oKXt2YXIgZT10KHRoaXMpLnJlc2l6YWJsZSgiaW5z
dGFuY2UiKTtlLmdob3N0JiZlLmhlbHBlciYmZS5oZWxwZXIuZ2V0KDApLnJlbW92ZUNoaWxkKGUu
Z2hvc3QuZ2V0KDApKX19KSx0LnVpLnBsdWdpbi5hZGQoInJlc2l6YWJsZSIsImdyaWQiLHtyZXNp
emU6ZnVuY3Rpb24oKXt2YXIgZSxpPXQodGhpcykucmVzaXphYmxlKCJpbnN0YW5jZSIpLHM9aS5v
cHRpb25zLG49aS5zaXplLG89aS5vcmlnaW5hbFNpemUsYT1pLm9yaWdpbmFsUG9zaXRpb24scj1p
LmF4aXMsaD0ibnVtYmVyIj09dHlwZW9mIHMuZ3JpZD9bcy5ncmlkLHMuZ3JpZF06cy5ncmlkLGw9
aFswXXx8MSxjPWhbMV18fDEsdT1NYXRoLnJvdW5kKChuLndpZHRoLW8ud2lkdGgpL2wpKmwsZD1N
YXRoLnJvdW5kKChuLmhlaWdodC1vLmhlaWdodCkvYykqYyxwPW8ud2lkdGgrdSxmPW8uaGVpZ2h0
K2QsZz1zLm1heFdpZHRoJiZwPnMubWF4V2lkdGgsbT1zLm1heEhlaWdodCYmZj5zLm1heEhlaWdo
dCxfPXMubWluV2lkdGgmJnMubWluV2lkdGg+cCx2PXMubWluSGVpZ2h0JiZzLm1pbkhlaWdodD5m
O3MuZ3JpZD1oLF8mJihwKz1sKSx2JiYoZis9YyksZyYmKHAtPWwpLG0mJihmLT1jKSwvXihzZXxz
fGUpJC8udGVzdChyKT8oaS5zaXplLndpZHRoPXAsaS5zaXplLmhlaWdodD1mKTovXihuZSkkLy50
ZXN0KHIpPyhpLnNpemUud2lkdGg9cCxpLnNpemUuaGVpZ2h0PWYsaS5wb3NpdGlvbi50b3A9YS50
b3AtZCk6L14oc3cpJC8udGVzdChyKT8oaS5zaXplLndpZHRoPXAsaS5zaXplLmhlaWdodD1mLGku
cG9zaXRpb24ubGVmdD1hLmxlZnQtdSk6KCgwPj1mLWN8fDA+PXAtbCkmJihlPWkuX2dldFBhZGRp
bmdQbHVzQm9yZGVyRGltZW5zaW9ucyh0aGlzKSksZi1jPjA/KGkuc2l6ZS5oZWlnaHQ9ZixpLnBv
c2l0aW9uLnRvcD1hLnRvcC1kKTooZj1jLWUuaGVpZ2h0LGkuc2l6ZS5oZWlnaHQ9ZixpLnBvc2l0
aW9uLnRvcD1hLnRvcCtvLmhlaWdodC1mKSxwLWw+MD8oaS5zaXplLndpZHRoPXAsaS5wb3NpdGlv
bi5sZWZ0PWEubGVmdC11KToocD1sLWUud2lkdGgsaS5zaXplLndpZHRoPXAsaS5wb3NpdGlvbi5s
ZWZ0PWEubGVmdCtvLndpZHRoLXApKX19KSx0LnVpLnJlc2l6YWJsZSx0LndpZGdldCgidWkuZGlh
bG9nIix7dmVyc2lvbjoiMS4xMi4xIixvcHRpb25zOnthcHBlbmRUbzoiYm9keSIsYXV0b09wZW46
ITAsYnV0dG9uczpbXSxjbGFzc2VzOnsidWktZGlhbG9nIjoidWktY29ybmVyLWFsbCIsInVpLWRp
YWxvZy10aXRsZWJhciI6InVpLWNvcm5lci1hbGwifSxjbG9zZU9uRXNjYXBlOiEwLGNsb3NlVGV4
dDoiQ2xvc2UiLGRyYWdnYWJsZTohMCxoaWRlOm51bGwsaGVpZ2h0OiJhdXRvIixtYXhIZWlnaHQ6
bnVsbCxtYXhXaWR0aDpudWxsLG1pbkhlaWdodDoxNTAsbWluV2lkdGg6MTUwLG1vZGFsOiExLHBv
c2l0aW9uOntteToiY2VudGVyIixhdDoiY2VudGVyIixvZjp3aW5kb3csY29sbGlzaW9uOiJmaXQi
LHVzaW5nOmZ1bmN0aW9uKGUpe3ZhciBpPXQodGhpcykuY3NzKGUpLm9mZnNldCgpLnRvcDswPmkm
JnQodGhpcykuY3NzKCJ0b3AiLGUudG9wLWkpfX0scmVzaXphYmxlOiEwLHNob3c6bnVsbCx0aXRs
ZTpudWxsLHdpZHRoOjMwMCxiZWZvcmVDbG9zZTpudWxsLGNsb3NlOm51bGwsZHJhZzpudWxsLGRy
YWdTdGFydDpudWxsLGRyYWdTdG9wOm51bGwsZm9jdXM6bnVsbCxvcGVuOm51bGwscmVzaXplOm51
bGwscmVzaXplU3RhcnQ6bnVsbCxyZXNpemVTdG9wOm51bGx9LHNpemVSZWxhdGVkT3B0aW9uczp7
YnV0dG9uczohMCxoZWlnaHQ6ITAsbWF4SGVpZ2h0OiEwLG1heFdpZHRoOiEwLG1pbkhlaWdodDoh
MCxtaW5XaWR0aDohMCx3aWR0aDohMH0scmVzaXphYmxlUmVsYXRlZE9wdGlvbnM6e21heEhlaWdo
dDohMCxtYXhXaWR0aDohMCxtaW5IZWlnaHQ6ITAsbWluV2lkdGg6ITB9LF9jcmVhdGU6ZnVuY3Rp
b24oKXt0aGlzLm9yaWdpbmFsQ3NzPXtkaXNwbGF5OnRoaXMuZWxlbWVudFswXS5zdHlsZS5kaXNw
bGF5LHdpZHRoOnRoaXMuZWxlbWVudFswXS5zdHlsZS53aWR0aCxtaW5IZWlnaHQ6dGhpcy5lbGVt
ZW50WzBdLnN0eWxlLm1pbkhlaWdodCxtYXhIZWlnaHQ6dGhpcy5lbGVtZW50WzBdLnN0eWxlLm1h
eEhlaWdodCxoZWlnaHQ6dGhpcy5lbGVtZW50WzBdLnN0eWxlLmhlaWdodH0sdGhpcy5vcmlnaW5h
bFBvc2l0aW9uPXtwYXJlbnQ6dGhpcy5lbGVtZW50LnBhcmVudCgpLGluZGV4OnRoaXMuZWxlbWVu
dC5wYXJlbnQoKS5jaGlsZHJlbigpLmluZGV4KHRoaXMuZWxlbWVudCl9LHRoaXMub3JpZ2luYWxU
aXRsZT10aGlzLmVsZW1lbnQuYXR0cigidGl0bGUiKSxudWxsPT10aGlzLm9wdGlvbnMudGl0bGUm
Jm51bGwhPXRoaXMub3JpZ2luYWxUaXRsZSYmKHRoaXMub3B0aW9ucy50aXRsZT10aGlzLm9yaWdp
bmFsVGl0bGUpLHRoaXMub3B0aW9ucy5kaXNhYmxlZCYmKHRoaXMub3B0aW9ucy5kaXNhYmxlZD0h
MSksdGhpcy5fY3JlYXRlV3JhcHBlcigpLHRoaXMuZWxlbWVudC5zaG93KCkucmVtb3ZlQXR0cigi
dGl0bGUiKS5hcHBlbmRUbyh0aGlzLnVpRGlhbG9nKSx0aGlzLl9hZGRDbGFzcygidWktZGlhbG9n
LWNvbnRlbnQiLCJ1aS13aWRnZXQtY29udGVudCIpLHRoaXMuX2NyZWF0ZVRpdGxlYmFyKCksdGhp
cy5fY3JlYXRlQnV0dG9uUGFuZSgpLHRoaXMub3B0aW9ucy5kcmFnZ2FibGUmJnQuZm4uZHJhZ2dh
YmxlJiZ0aGlzLl9tYWtlRHJhZ2dhYmxlKCksdGhpcy5vcHRpb25zLnJlc2l6YWJsZSYmdC5mbi5y
ZXNpemFibGUmJnRoaXMuX21ha2VSZXNpemFibGUoKSx0aGlzLl9pc09wZW49ITEsdGhpcy5fdHJh
Y2tGb2N1cygpfSxfaW5pdDpmdW5jdGlvbigpe3RoaXMub3B0aW9ucy5hdXRvT3BlbiYmdGhpcy5v
cGVuKCl9LF9hcHBlbmRUbzpmdW5jdGlvbigpe3ZhciBlPXRoaXMub3B0aW9ucy5hcHBlbmRUbzty
ZXR1cm4gZSYmKGUuanF1ZXJ5fHxlLm5vZGVUeXBlKT90KGUpOnRoaXMuZG9jdW1lbnQuZmluZChl
fHwiYm9keSIpLmVxKDApfSxfZGVzdHJveTpmdW5jdGlvbigpe3ZhciB0LGU9dGhpcy5vcmlnaW5h
bFBvc2l0aW9uO3RoaXMuX3VudHJhY2tJbnN0YW5jZSgpLHRoaXMuX2Rlc3Ryb3lPdmVybGF5KCks
dGhpcy5lbGVtZW50LnJlbW92ZVVuaXF1ZUlkKCkuY3NzKHRoaXMub3JpZ2luYWxDc3MpLmRldGFj
aCgpLHRoaXMudWlEaWFsb2cucmVtb3ZlKCksdGhpcy5vcmlnaW5hbFRpdGxlJiZ0aGlzLmVsZW1l
bnQuYXR0cigidGl0bGUiLHRoaXMub3JpZ2luYWxUaXRsZSksdD1lLnBhcmVudC5jaGlsZHJlbigp
LmVxKGUuaW5kZXgpLHQubGVuZ3RoJiZ0WzBdIT09dGhpcy5lbGVtZW50WzBdP3QuYmVmb3JlKHRo
aXMuZWxlbWVudCk6ZS5wYXJlbnQuYXBwZW5kKHRoaXMuZWxlbWVudCl9LHdpZGdldDpmdW5jdGlv
bigpe3JldHVybiB0aGlzLnVpRGlhbG9nCit9LGRpc2FibGU6dC5ub29wLGVuYWJsZTp0Lm5vb3As
Y2xvc2U6ZnVuY3Rpb24oZSl7dmFyIGk9dGhpczt0aGlzLl9pc09wZW4mJnRoaXMuX3RyaWdnZXIo
ImJlZm9yZUNsb3NlIixlKSE9PSExJiYodGhpcy5faXNPcGVuPSExLHRoaXMuX2ZvY3VzZWRFbGVt
ZW50PW51bGwsdGhpcy5fZGVzdHJveU92ZXJsYXkoKSx0aGlzLl91bnRyYWNrSW5zdGFuY2UoKSx0
aGlzLm9wZW5lci5maWx0ZXIoIjpmb2N1c2FibGUiKS50cmlnZ2VyKCJmb2N1cyIpLmxlbmd0aHx8
dC51aS5zYWZlQmx1cih0LnVpLnNhZmVBY3RpdmVFbGVtZW50KHRoaXMuZG9jdW1lbnRbMF0pKSx0
aGlzLl9oaWRlKHRoaXMudWlEaWFsb2csdGhpcy5vcHRpb25zLmhpZGUsZnVuY3Rpb24oKXtpLl90
cmlnZ2VyKCJjbG9zZSIsZSl9KSl9LGlzT3BlbjpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9pc09w
ZW59LG1vdmVUb1RvcDpmdW5jdGlvbigpe3RoaXMuX21vdmVUb1RvcCgpfSxfbW92ZVRvVG9wOmZ1
bmN0aW9uKGUsaSl7dmFyIHM9ITEsbj10aGlzLnVpRGlhbG9nLnNpYmxpbmdzKCIudWktZnJvbnQ6
dmlzaWJsZSIpLm1hcChmdW5jdGlvbigpe3JldHVybit0KHRoaXMpLmNzcygiei1pbmRleCIpfSku
Z2V0KCksbz1NYXRoLm1heC5hcHBseShudWxsLG4pO3JldHVybiBvPj0rdGhpcy51aURpYWxvZy5j
c3MoInotaW5kZXgiKSYmKHRoaXMudWlEaWFsb2cuY3NzKCJ6LWluZGV4IixvKzEpLHM9ITApLHMm
JiFpJiZ0aGlzLl90cmlnZ2VyKCJmb2N1cyIsZSksc30sb3BlbjpmdW5jdGlvbigpe3ZhciBlPXRo
aXM7cmV0dXJuIHRoaXMuX2lzT3Blbj8odGhpcy5fbW92ZVRvVG9wKCkmJnRoaXMuX2ZvY3VzVGFi
YmFibGUoKSx2b2lkIDApOih0aGlzLl9pc09wZW49ITAsdGhpcy5vcGVuZXI9dCh0LnVpLnNhZmVB
Y3RpdmVFbGVtZW50KHRoaXMuZG9jdW1lbnRbMF0pKSx0aGlzLl9zaXplKCksdGhpcy5fcG9zaXRp
b24oKSx0aGlzLl9jcmVhdGVPdmVybGF5KCksdGhpcy5fbW92ZVRvVG9wKG51bGwsITApLHRoaXMu
b3ZlcmxheSYmdGhpcy5vdmVybGF5LmNzcygiei1pbmRleCIsdGhpcy51aURpYWxvZy5jc3MoInot
aW5kZXgiKS0xKSx0aGlzLl9zaG93KHRoaXMudWlEaWFsb2csdGhpcy5vcHRpb25zLnNob3csZnVu
Y3Rpb24oKXtlLl9mb2N1c1RhYmJhYmxlKCksZS5fdHJpZ2dlcigiZm9jdXMiKX0pLHRoaXMuX21h
a2VGb2N1c1RhcmdldCgpLHRoaXMuX3RyaWdnZXIoIm9wZW4iKSx2b2lkIDApfSxfZm9jdXNUYWJi
YWJsZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2ZvY3VzZWRFbGVtZW50O3R8fCh0PXRoaXMuZWxl
bWVudC5maW5kKCJbYXV0b2ZvY3VzXSIpKSx0Lmxlbmd0aHx8KHQ9dGhpcy5lbGVtZW50LmZpbmQo
Ijp0YWJiYWJsZSIpKSx0Lmxlbmd0aHx8KHQ9dGhpcy51aURpYWxvZ0J1dHRvblBhbmUuZmluZCgi
OnRhYmJhYmxlIikpLHQubGVuZ3RofHwodD10aGlzLnVpRGlhbG9nVGl0bGViYXJDbG9zZS5maWx0
ZXIoIjp0YWJiYWJsZSIpKSx0Lmxlbmd0aHx8KHQ9dGhpcy51aURpYWxvZyksdC5lcSgwKS50cmln
Z2VyKCJmb2N1cyIpfSxfa2VlcEZvY3VzOmZ1bmN0aW9uKGUpe2Z1bmN0aW9uIGkoKXt2YXIgZT10
LnVpLnNhZmVBY3RpdmVFbGVtZW50KHRoaXMuZG9jdW1lbnRbMF0pLGk9dGhpcy51aURpYWxvZ1sw
XT09PWV8fHQuY29udGFpbnModGhpcy51aURpYWxvZ1swXSxlKTtpfHx0aGlzLl9mb2N1c1RhYmJh
YmxlKCl9ZS5wcmV2ZW50RGVmYXVsdCgpLGkuY2FsbCh0aGlzKSx0aGlzLl9kZWxheShpKX0sX2Ny
ZWF0ZVdyYXBwZXI6ZnVuY3Rpb24oKXt0aGlzLnVpRGlhbG9nPXQoIjxkaXY+IikuaGlkZSgpLmF0
dHIoe3RhYkluZGV4Oi0xLHJvbGU6ImRpYWxvZyJ9KS5hcHBlbmRUbyh0aGlzLl9hcHBlbmRUbygp
KSx0aGlzLl9hZGRDbGFzcyh0aGlzLnVpRGlhbG9nLCJ1aS1kaWFsb2ciLCJ1aS13aWRnZXQgdWkt
d2lkZ2V0LWNvbnRlbnQgdWktZnJvbnQiKSx0aGlzLl9vbih0aGlzLnVpRGlhbG9nLHtrZXlkb3du
OmZ1bmN0aW9uKGUpe2lmKHRoaXMub3B0aW9ucy5jbG9zZU9uRXNjYXBlJiYhZS5pc0RlZmF1bHRQ
cmV2ZW50ZWQoKSYmZS5rZXlDb2RlJiZlLmtleUNvZGU9PT10LnVpLmtleUNvZGUuRVNDQVBFKXJl
dHVybiBlLnByZXZlbnREZWZhdWx0KCksdGhpcy5jbG9zZShlKSx2b2lkIDA7aWYoZS5rZXlDb2Rl
PT09dC51aS5rZXlDb2RlLlRBQiYmIWUuaXNEZWZhdWx0UHJldmVudGVkKCkpe3ZhciBpPXRoaXMu
dWlEaWFsb2cuZmluZCgiOnRhYmJhYmxlIikscz1pLmZpbHRlcigiOmZpcnN0Iiksbj1pLmZpbHRl
cigiOmxhc3QiKTtlLnRhcmdldCE9PW5bMF0mJmUudGFyZ2V0IT09dGhpcy51aURpYWxvZ1swXXx8
ZS5zaGlmdEtleT9lLnRhcmdldCE9PXNbMF0mJmUudGFyZ2V0IT09dGhpcy51aURpYWxvZ1swXXx8
IWUuc2hpZnRLZXl8fCh0aGlzLl9kZWxheShmdW5jdGlvbigpe24udHJpZ2dlcigiZm9jdXMiKX0p
LGUucHJldmVudERlZmF1bHQoKSk6KHRoaXMuX2RlbGF5KGZ1bmN0aW9uKCl7cy50cmlnZ2VyKCJm
b2N1cyIpfSksZS5wcmV2ZW50RGVmYXVsdCgpKX19LG1vdXNlZG93bjpmdW5jdGlvbih0KXt0aGlz
Ll9tb3ZlVG9Ub3AodCkmJnRoaXMuX2ZvY3VzVGFiYmFibGUoKX19KSx0aGlzLmVsZW1lbnQuZmlu
ZCgiW2FyaWEtZGVzY3JpYmVkYnldIikubGVuZ3RofHx0aGlzLnVpRGlhbG9nLmF0dHIoeyJhcmlh
LWRlc2NyaWJlZGJ5Ijp0aGlzLmVsZW1lbnQudW5pcXVlSWQoKS5hdHRyKCJpZCIpfSl9LF9jcmVh
dGVUaXRsZWJhcjpmdW5jdGlvbigpe3ZhciBlO3RoaXMudWlEaWFsb2dUaXRsZWJhcj10KCI8ZGl2
PiIpLHRoaXMuX2FkZENsYXNzKHRoaXMudWlEaWFsb2dUaXRsZWJhciwidWktZGlhbG9nLXRpdGxl
YmFyIiwidWktd2lkZ2V0LWhlYWRlciB1aS1oZWxwZXItY2xlYXJmaXgiKSx0aGlzLl9vbih0aGlz
LnVpRGlhbG9nVGl0bGViYXIse21vdXNlZG93bjpmdW5jdGlvbihlKXt0KGUudGFyZ2V0KS5jbG9z
ZXN0KCIudWktZGlhbG9nLXRpdGxlYmFyLWNsb3NlIil8fHRoaXMudWlEaWFsb2cudHJpZ2dlcigi
Zm9jdXMiKX19KSx0aGlzLnVpRGlhbG9nVGl0bGViYXJDbG9zZT10KCI8YnV0dG9uIHR5cGU9J2J1
dHRvbic+PC9idXR0b24+IikuYnV0dG9uKHtsYWJlbDp0KCI8YT4iKS50ZXh0KHRoaXMub3B0aW9u
cy5jbG9zZVRleHQpLmh0bWwoKSxpY29uOiJ1aS1pY29uLWNsb3NldGhpY2siLHNob3dMYWJlbDoh
MX0pLmFwcGVuZFRvKHRoaXMudWlEaWFsb2dUaXRsZWJhciksdGhpcy5fYWRkQ2xhc3ModGhpcy51
aURpYWxvZ1RpdGxlYmFyQ2xvc2UsInVpLWRpYWxvZy10aXRsZWJhci1jbG9zZSIpLHRoaXMuX29u
KHRoaXMudWlEaWFsb2dUaXRsZWJhckNsb3NlLHtjbGljazpmdW5jdGlvbih0KXt0LnByZXZlbnRE
ZWZhdWx0KCksdGhpcy5jbG9zZSh0KX19KSxlPXQoIjxzcGFuPiIpLnVuaXF1ZUlkKCkucHJlcGVu
ZFRvKHRoaXMudWlEaWFsb2dUaXRsZWJhciksdGhpcy5fYWRkQ2xhc3MoZSwidWktZGlhbG9nLXRp
dGxlIiksdGhpcy5fdGl0bGUoZSksdGhpcy51aURpYWxvZ1RpdGxlYmFyLnByZXBlbmRUbyh0aGlz
LnVpRGlhbG9nKSx0aGlzLnVpRGlhbG9nLmF0dHIoeyJhcmlhLWxhYmVsbGVkYnkiOmUuYXR0cigi
aWQiKX0pfSxfdGl0bGU6ZnVuY3Rpb24odCl7dGhpcy5vcHRpb25zLnRpdGxlP3QudGV4dCh0aGlz
Lm9wdGlvbnMudGl0bGUpOnQuaHRtbCgiJiMxNjA7Iil9LF9jcmVhdGVCdXR0b25QYW5lOmZ1bmN0
aW9uKCl7dGhpcy51aURpYWxvZ0J1dHRvblBhbmU9dCgiPGRpdj4iKSx0aGlzLl9hZGRDbGFzcyh0
aGlzLnVpRGlhbG9nQnV0dG9uUGFuZSwidWktZGlhbG9nLWJ1dHRvbnBhbmUiLCJ1aS13aWRnZXQt
Y29udGVudCB1aS1oZWxwZXItY2xlYXJmaXgiKSx0aGlzLnVpQnV0dG9uU2V0PXQoIjxkaXY+Iiku
YXBwZW5kVG8odGhpcy51aURpYWxvZ0J1dHRvblBhbmUpLHRoaXMuX2FkZENsYXNzKHRoaXMudWlC
dXR0b25TZXQsInVpLWRpYWxvZy1idXR0b25zZXQiKSx0aGlzLl9jcmVhdGVCdXR0b25zKCl9LF9j
cmVhdGVCdXR0b25zOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyxpPXRoaXMub3B0aW9ucy5idXR0b25z
O3JldHVybiB0aGlzLnVpRGlhbG9nQnV0dG9uUGFuZS5yZW1vdmUoKSx0aGlzLnVpQnV0dG9uU2V0
LmVtcHR5KCksdC5pc0VtcHR5T2JqZWN0KGkpfHx0LmlzQXJyYXkoaSkmJiFpLmxlbmd0aD8odGhp
cy5fcmVtb3ZlQ2xhc3ModGhpcy51aURpYWxvZywidWktZGlhbG9nLWJ1dHRvbnMiKSx2b2lkIDAp
Oih0LmVhY2goaSxmdW5jdGlvbihpLHMpe3ZhciBuLG87cz10LmlzRnVuY3Rpb24ocyk/e2NsaWNr
OnMsdGV4dDppfTpzLHM9dC5leHRlbmQoe3R5cGU6ImJ1dHRvbiJ9LHMpLG49cy5jbGljayxvPXtp
Y29uOnMuaWNvbixpY29uUG9zaXRpb246cy5pY29uUG9zaXRpb24sc2hvd0xhYmVsOnMuc2hvd0xh
YmVsLGljb25zOnMuaWNvbnMsdGV4dDpzLnRleHR9LGRlbGV0ZSBzLmNsaWNrLGRlbGV0ZSBzLmlj
b24sZGVsZXRlIHMuaWNvblBvc2l0aW9uLGRlbGV0ZSBzLnNob3dMYWJlbCxkZWxldGUgcy5pY29u
cywiYm9vbGVhbiI9PXR5cGVvZiBzLnRleHQmJmRlbGV0ZSBzLnRleHQsdCgiPGJ1dHRvbj48L2J1
dHRvbj4iLHMpLmJ1dHRvbihvKS5hcHBlbmRUbyhlLnVpQnV0dG9uU2V0KS5vbigiY2xpY2siLGZ1
bmN0aW9uKCl7bi5hcHBseShlLmVsZW1lbnRbMF0sYXJndW1lbnRzKX0pfSksdGhpcy5fYWRkQ2xh
c3ModGhpcy51aURpYWxvZywidWktZGlhbG9nLWJ1dHRvbnMiKSx0aGlzLnVpRGlhbG9nQnV0dG9u
UGFuZS5hcHBlbmRUbyh0aGlzLnVpRGlhbG9nKSx2b2lkIDApfSxfbWFrZURyYWdnYWJsZTpmdW5j
dGlvbigpe2Z1bmN0aW9uIGUodCl7cmV0dXJue3Bvc2l0aW9uOnQucG9zaXRpb24sb2Zmc2V0OnQu
b2Zmc2V0fX12YXIgaT10aGlzLHM9dGhpcy5vcHRpb25zO3RoaXMudWlEaWFsb2cuZHJhZ2dhYmxl
KHtjYW5jZWw6Ii51aS1kaWFsb2ctY29udGVudCwgLnVpLWRpYWxvZy10aXRsZWJhci1jbG9zZSIs
aGFuZGxlOiIudWktZGlhbG9nLXRpdGxlYmFyIixjb250YWlubWVudDoiZG9jdW1lbnQiLHN0YXJ0
OmZ1bmN0aW9uKHMsbil7aS5fYWRkQ2xhc3ModCh0aGlzKSwidWktZGlhbG9nLWRyYWdnaW5nIiks
aS5fYmxvY2tGcmFtZXMoKSxpLl90cmlnZ2VyKCJkcmFnU3RhcnQiLHMsZShuKSl9LGRyYWc6ZnVu
Y3Rpb24odCxzKXtpLl90cmlnZ2VyKCJkcmFnIix0LGUocykpfSxzdG9wOmZ1bmN0aW9uKG4sbyl7
dmFyIGE9by5vZmZzZXQubGVmdC1pLmRvY3VtZW50LnNjcm9sbExlZnQoKSxyPW8ub2Zmc2V0LnRv
cC1pLmRvY3VtZW50LnNjcm9sbFRvcCgpO3MucG9zaXRpb249e215OiJsZWZ0IHRvcCIsYXQ6Imxl
ZnQiKyhhPj0wPyIrIjoiIikrYSsiICIrInRvcCIrKHI+PTA/IisiOiIiKStyLG9mOmkud2luZG93
fSxpLl9yZW1vdmVDbGFzcyh0KHRoaXMpLCJ1aS1kaWFsb2ctZHJhZ2dpbmciKSxpLl91bmJsb2Nr
RnJhbWVzKCksaS5fdHJpZ2dlcigiZHJhZ1N0b3AiLG4sZShvKSl9fSl9LF9tYWtlUmVzaXphYmxl
OmZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0KXtyZXR1cm57b3JpZ2luYWxQb3NpdGlvbjp0Lm9yaWdp
bmFsUG9zaXRpb24sb3JpZ2luYWxTaXplOnQub3JpZ2luYWxTaXplLHBvc2l0aW9uOnQucG9zaXRp
b24sc2l6ZTp0LnNpemV9fXZhciBpPXRoaXMscz10aGlzLm9wdGlvbnMsbj1zLnJlc2l6YWJsZSxv
PXRoaXMudWlEaWFsb2cuY3NzKCJwb3NpdGlvbiIpLGE9InN0cmluZyI9PXR5cGVvZiBuP246Im4s
ZSxzLHcsc2Usc3csbmUsbnciO3RoaXMudWlEaWFsb2cucmVzaXphYmxlKHtjYW5jZWw6Ii51aS1k
aWFsb2ctY29udGVudCIsY29udGFpbm1lbnQ6ImRvY3VtZW50IixhbHNvUmVzaXplOnRoaXMuZWxl
bWVudCxtYXhXaWR0aDpzLm1heFdpZHRoLG1heEhlaWdodDpzLm1heEhlaWdodCxtaW5XaWR0aDpz
Lm1pbldpZHRoLG1pbkhlaWdodDp0aGlzLl9taW5IZWlnaHQoKSxoYW5kbGVzOmEsc3RhcnQ6ZnVu
Y3Rpb24ocyxuKXtpLl9hZGRDbGFzcyh0KHRoaXMpLCJ1aS1kaWFsb2ctcmVzaXppbmciKSxpLl9i
bG9ja0ZyYW1lcygpLGkuX3RyaWdnZXIoInJlc2l6ZVN0YXJ0IixzLGUobikpfSxyZXNpemU6ZnVu
Y3Rpb24odCxzKXtpLl90cmlnZ2VyKCJyZXNpemUiLHQsZShzKSl9LHN0b3A6ZnVuY3Rpb24obixv
KXt2YXIgYT1pLnVpRGlhbG9nLm9mZnNldCgpLHI9YS5sZWZ0LWkuZG9jdW1lbnQuc2Nyb2xsTGVm
dCgpLGg9YS50b3AtaS5kb2N1bWVudC5zY3JvbGxUb3AoKTtzLmhlaWdodD1pLnVpRGlhbG9nLmhl
aWdodCgpLHMud2lkdGg9aS51aURpYWxvZy53aWR0aCgpLHMucG9zaXRpb249e215OiJsZWZ0IHRv
cCIsYXQ6ImxlZnQiKyhyPj0wPyIrIjoiIikrcisiICIrInRvcCIrKGg+PTA/IisiOiIiKStoLG9m
Omkud2luZG93fSxpLl9yZW1vdmVDbGFzcyh0KHRoaXMpLCJ1aS1kaWFsb2ctcmVzaXppbmciKSxp
Ll91bmJsb2NrRnJhbWVzKCksaS5fdHJpZ2dlcigicmVzaXplU3RvcCIsbixlKG8pKX19KS5jc3Mo
InBvc2l0aW9uIixvKX0sX3RyYWNrRm9jdXM6ZnVuY3Rpb24oKXt0aGlzLl9vbih0aGlzLndpZGdl
dCgpLHtmb2N1c2luOmZ1bmN0aW9uKGUpe3RoaXMuX21ha2VGb2N1c1RhcmdldCgpLHRoaXMuX2Zv
Y3VzZWRFbGVtZW50PXQoZS50YXJnZXQpfX0pfSxfbWFrZUZvY3VzVGFyZ2V0OmZ1bmN0aW9uKCl7
dGhpcy5fdW50cmFja0luc3RhbmNlKCksdGhpcy5fdHJhY2tpbmdJbnN0YW5jZXMoKS51bnNoaWZ0
KHRoaXMpfSxfdW50cmFja0luc3RhbmNlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fdHJhY2tpbmdJ
bnN0YW5jZXMoKSxpPXQuaW5BcnJheSh0aGlzLGUpOy0xIT09aSYmZS5zcGxpY2UoaSwxKX0sX3Ry
YWNraW5nSW5zdGFuY2VzOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5kb2N1bWVudC5kYXRhKCJ1aS1k
aWFsb2ctaW5zdGFuY2VzIik7cmV0dXJuIHR8fCh0PVtdLHRoaXMuZG9jdW1lbnQuZGF0YSgidWkt
ZGlhbG9nLWluc3RhbmNlcyIsdCkpLHR9LF9taW5IZWlnaHQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlz
Lm9wdGlvbnM7cmV0dXJuImF1dG8iPT09dC5oZWlnaHQ/dC5taW5IZWlnaHQ6TWF0aC5taW4odC5t
aW5IZWlnaHQsdC5oZWlnaHQpfSxfcG9zaXRpb246ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnVpRGlh
bG9nLmlzKCI6dmlzaWJsZSIpO3R8fHRoaXMudWlEaWFsb2cuc2hvdygpLHRoaXMudWlEaWFsb2cu
cG9zaXRpb24odGhpcy5vcHRpb25zLnBvc2l0aW9uKSx0fHx0aGlzLnVpRGlhbG9nLmhpZGUoKX0s
X3NldE9wdGlvbnM6ZnVuY3Rpb24oZSl7dmFyIGk9dGhpcyxzPSExLG49e307dC5lYWNoKGUsZnVu
Y3Rpb24odCxlKXtpLl9zZXRPcHRpb24odCxlKSx0IGluIGkuc2l6ZVJlbGF0ZWRPcHRpb25zJiYo
cz0hMCksdCBpbiBpLnJlc2l6YWJsZVJlbGF0ZWRPcHRpb25zJiYoblt0XT1lKX0pLHMmJih0aGlz
Ll9zaXplKCksdGhpcy5fcG9zaXRpb24oKSksdGhpcy51aURpYWxvZy5pcygiOmRhdGEodWktcmVz
aXphYmxlKSIpJiZ0aGlzLnVpRGlhbG9nLnJlc2l6YWJsZSgib3B0aW9uIixuKX0sX3NldE9wdGlv
bjpmdW5jdGlvbihlLGkpe3ZhciBzLG4sbz10aGlzLnVpRGlhbG9nOyJkaXNhYmxlZCIhPT1lJiYo
dGhpcy5fc3VwZXIoZSxpKSwiYXBwZW5kVG8iPT09ZSYmdGhpcy51aURpYWxvZy5hcHBlbmRUbyh0
aGlzLl9hcHBlbmRUbygpKSwiYnV0dG9ucyI9PT1lJiZ0aGlzLl9jcmVhdGVCdXR0b25zKCksImNs
b3NlVGV4dCI9PT1lJiZ0aGlzLnVpRGlhbG9nVGl0bGViYXJDbG9zZS5idXR0b24oe2xhYmVsOnQo
IjxhPiIpLnRleHQoIiIrdGhpcy5vcHRpb25zLmNsb3NlVGV4dCkuaHRtbCgpfSksImRyYWdnYWJs
ZSI9PT1lJiYocz1vLmlzKCI6ZGF0YSh1aS1kcmFnZ2FibGUpIikscyYmIWkmJm8uZHJhZ2dhYmxl
KCJkZXN0cm95IiksIXMmJmkmJnRoaXMuX21ha2VEcmFnZ2FibGUoKSksInBvc2l0aW9uIj09PWUm
JnRoaXMuX3Bvc2l0aW9uKCksInJlc2l6YWJsZSI9PT1lJiYobj1vLmlzKCI6ZGF0YSh1aS1yZXNp
emFibGUpIiksbiYmIWkmJm8ucmVzaXphYmxlKCJkZXN0cm95IiksbiYmInN0cmluZyI9PXR5cGVv
ZiBpJiZvLnJlc2l6YWJsZSgib3B0aW9uIiwiaGFuZGxlcyIsaSksbnx8aT09PSExfHx0aGlzLl9t
YWtlUmVzaXphYmxlKCkpLCJ0aXRsZSI9PT1lJiZ0aGlzLl90aXRsZSh0aGlzLnVpRGlhbG9nVGl0
bGViYXIuZmluZCgiLnVpLWRpYWxvZy10aXRsZSIpKSl9LF9zaXplOmZ1bmN0aW9uKCl7dmFyIHQs
ZSxpLHM9dGhpcy5vcHRpb25zO3RoaXMuZWxlbWVudC5zaG93KCkuY3NzKHt3aWR0aDoiYXV0byIs
bWluSGVpZ2h0OjAsbWF4SGVpZ2h0OiJub25lIixoZWlnaHQ6MH0pLHMubWluV2lkdGg+cy53aWR0
aCYmKHMud2lkdGg9cy5taW5XaWR0aCksdD10aGlzLnVpRGlhbG9nLmNzcyh7aGVpZ2h0OiJhdXRv
Iix3aWR0aDpzLndpZHRofSkub3V0ZXJIZWlnaHQoKSxlPU1hdGgubWF4KDAscy5taW5IZWlnaHQt
dCksaT0ibnVtYmVyIj09dHlwZW9mIHMubWF4SGVpZ2h0P01hdGgubWF4KDAscy5tYXhIZWlnaHQt
dCk6Im5vbmUiLCJhdXRvIj09PXMuaGVpZ2h0P3RoaXMuZWxlbWVudC5jc3Moe21pbkhlaWdodDpl
LG1heEhlaWdodDppLGhlaWdodDoiYXV0byJ9KTp0aGlzLmVsZW1lbnQuaGVpZ2h0KE1hdGgubWF4
KDAscy5oZWlnaHQtdCkpLHRoaXMudWlEaWFsb2cuaXMoIjpkYXRhKHVpLXJlc2l6YWJsZSkiKSYm
dGhpcy51aURpYWxvZy5yZXNpemFibGUoIm9wdGlvbiIsIm1pbkhlaWdodCIsdGhpcy5fbWluSGVp
Z2h0KCkpfSxfYmxvY2tGcmFtZXM6ZnVuY3Rpb24oKXt0aGlzLmlmcmFtZUJsb2Nrcz10aGlzLmRv
Y3VtZW50LmZpbmQoImlmcmFtZSIpLm1hcChmdW5jdGlvbigpe3ZhciBlPXQodGhpcyk7cmV0dXJu
IHQoIjxkaXY+IikuY3NzKHtwb3NpdGlvbjoiYWJzb2x1dGUiLHdpZHRoOmUub3V0ZXJXaWR0aCgp
LGhlaWdodDplLm91dGVySGVpZ2h0KCl9KS5hcHBlbmRUbyhlLnBhcmVudCgpKS5vZmZzZXQoZS5v
ZmZzZXQoKSlbMF19KX0sX3VuYmxvY2tGcmFtZXM6ZnVuY3Rpb24oKXt0aGlzLmlmcmFtZUJsb2Nr
cyYmKHRoaXMuaWZyYW1lQmxvY2tzLnJlbW92ZSgpLGRlbGV0ZSB0aGlzLmlmcmFtZUJsb2Nrcyl9
LF9hbGxvd0ludGVyYWN0aW9uOmZ1bmN0aW9uKGUpe3JldHVybiB0KGUudGFyZ2V0KS5jbG9zZXN0
KCIudWktZGlhbG9nIikubGVuZ3RoPyEwOiEhdChlLnRhcmdldCkuY2xvc2VzdCgiLnVpLWRhdGVw
aWNrZXIiKS5sZW5ndGh9LF9jcmVhdGVPdmVybGF5OmZ1bmN0aW9uKCl7aWYodGhpcy5vcHRpb25z
Lm1vZGFsKXt2YXIgZT0hMDt0aGlzLl9kZWxheShmdW5jdGlvbigpe2U9ITF9KSx0aGlzLmRvY3Vt
ZW50LmRhdGEoInVpLWRpYWxvZy1vdmVybGF5cyIpfHx0aGlzLl9vbih0aGlzLmRvY3VtZW50LHtm
b2N1c2luOmZ1bmN0aW9uKHQpe2V8fHRoaXMuX2FsbG93SW50ZXJhY3Rpb24odCl8fCh0LnByZXZl
bnREZWZhdWx0KCksdGhpcy5fdHJhY2tpbmdJbnN0YW5jZXMoKVswXS5fZm9jdXNUYWJiYWJsZSgp
KX19KSx0aGlzLm92ZXJsYXk9dCgiPGRpdj4iKS5hcHBlbmRUbyh0aGlzLl9hcHBlbmRUbygpKSx0
aGlzLl9hZGRDbGFzcyh0aGlzLm92ZXJsYXksbnVsbCwidWktd2lkZ2V0LW92ZXJsYXkgdWktZnJv
bnQiKSx0aGlzLl9vbih0aGlzLm92ZXJsYXkse21vdXNlZG93bjoiX2tlZXBGb2N1cyJ9KSx0aGlz
LmRvY3VtZW50LmRhdGEoInVpLWRpYWxvZy1vdmVybGF5cyIsKHRoaXMuZG9jdW1lbnQuZGF0YSgi
dWktZGlhbG9nLW92ZXJsYXlzIil8fDApKzEpfX0sX2Rlc3Ryb3lPdmVybGF5OmZ1bmN0aW9uKCl7
aWYodGhpcy5vcHRpb25zLm1vZGFsJiZ0aGlzLm92ZXJsYXkpe3ZhciB0PXRoaXMuZG9jdW1lbnQu
ZGF0YSgidWktZGlhbG9nLW92ZXJsYXlzIiktMTt0P3RoaXMuZG9jdW1lbnQuZGF0YSgidWktZGlh
bG9nLW92ZXJsYXlzIix0KToodGhpcy5fb2ZmKHRoaXMuZG9jdW1lbnQsImZvY3VzaW4iKSx0aGlz
LmRvY3VtZW50LnJlbW92ZURhdGEoInVpLWRpYWxvZy1vdmVybGF5cyIpKSx0aGlzLm92ZXJsYXku
cmVtb3ZlKCksdGhpcy5vdmVybGF5PW51bGx9fX0pLHQudWlCYWNrQ29tcGF0IT09ITEmJnQud2lk
Z2V0KCJ1aS5kaWFsb2ciLHQudWkuZGlhbG9nLHtvcHRpb25zOntkaWFsb2dDbGFzczoiIn0sX2Ny
ZWF0ZVdyYXBwZXI6ZnVuY3Rpb24oKXt0aGlzLl9zdXBlcigpLHRoaXMudWlEaWFsb2cuYWRkQ2xh
c3ModGhpcy5vcHRpb25zLmRpYWxvZ0NsYXNzKX0sX3NldE9wdGlvbjpmdW5jdGlvbih0LGUpeyJk
aWFsb2dDbGFzcyI9PT10JiZ0aGlzLnVpRGlhbG9nLnJlbW92ZUNsYXNzKHRoaXMub3B0aW9ucy5k
aWFsb2dDbGFzcykuYWRkQ2xhc3MoZSksdGhpcy5fc3VwZXJBcHBseShhcmd1bWVudHMpfX0pLHQu
dWkuZGlhbG9nLHQud2lkZ2V0KCJ1aS5kcm9wcGFibGUiLHt2ZXJzaW9uOiIxLjEyLjEiLHdpZGdl
dEV2ZW50UHJlZml4OiJkcm9wIixvcHRpb25zOnthY2NlcHQ6IioiLGFkZENsYXNzZXM6ITAsZ3Jl
ZWR5OiExLHNjb3BlOiJkZWZhdWx0Iix0b2xlcmFuY2U6ImludGVyc2VjdCIsYWN0aXZhdGU6bnVs
bCxkZWFjdGl2YXRlOm51bGwsZHJvcDpudWxsLG91dDpudWxsLG92ZXI6bnVsbH0sX2NyZWF0ZTpm
dW5jdGlvbigpe3ZhciBlLGk9dGhpcy5vcHRpb25zLHM9aS5hY2NlcHQ7dGhpcy5pc292ZXI9ITEs
dGhpcy5pc291dD0hMCx0aGlzLmFjY2VwdD10LmlzRnVuY3Rpb24ocyk/czpmdW5jdGlvbih0KXty
ZXR1cm4gdC5pcyhzKX0sdGhpcy5wcm9wb3J0aW9ucz1mdW5jdGlvbigpe3JldHVybiBhcmd1bWVu
dHMubGVuZ3RoPyhlPWFyZ3VtZW50c1swXSx2b2lkIDApOmU/ZTplPXt3aWR0aDp0aGlzLmVsZW1l
bnRbMF0ub2Zmc2V0V2lkdGgsaGVpZ2h0OnRoaXMuZWxlbWVudFswXS5vZmZzZXRIZWlnaHR9fSx0
aGlzLl9hZGRUb01hbmFnZXIoaS5zY29wZSksaS5hZGRDbGFzc2VzJiZ0aGlzLl9hZGRDbGFzcygi
dWktZHJvcHBhYmxlIil9LF9hZGRUb01hbmFnZXI6ZnVuY3Rpb24oZSl7dC51aS5kZG1hbmFnZXIu
ZHJvcHBhYmxlc1tlXT10LnVpLmRkbWFuYWdlci5kcm9wcGFibGVzW2VdfHxbXSx0LnVpLmRkbWFu
YWdlci5kcm9wcGFibGVzW2VdLnB1c2godGhpcyl9LF9zcGxpY2U6ZnVuY3Rpb24odCl7Zm9yKHZh
ciBlPTA7dC5sZW5ndGg+ZTtlKyspdFtlXT09PXRoaXMmJnQuc3BsaWNlKGUsMSl9LF9kZXN0cm95
OmZ1bmN0aW9uKCl7dmFyIGU9dC51aS5kZG1hbmFnZXIuZHJvcHBhYmxlc1t0aGlzLm9wdGlvbnMu
c2NvcGVdO3RoaXMuX3NwbGljZShlKX0sX3NldE9wdGlvbjpmdW5jdGlvbihlLGkpe2lmKCJhY2Nl
cHQiPT09ZSl0aGlzLmFjY2VwdD10LmlzRnVuY3Rpb24oaSk/aTpmdW5jdGlvbih0KXtyZXR1cm4g
dC5pcyhpKX07ZWxzZSBpZigic2NvcGUiPT09ZSl7dmFyIHM9dC51aS5kZG1hbmFnZXIuZHJvcHBh
Ymxlc1t0aGlzLm9wdGlvbnMuc2NvcGVdO3RoaXMuX3NwbGljZShzKSx0aGlzLl9hZGRUb01hbmFn
ZXIoaSl9dGhpcy5fc3VwZXIoZSxpKX0sX2FjdGl2YXRlOmZ1bmN0aW9uKGUpe3ZhciBpPXQudWku
ZGRtYW5hZ2VyLmN1cnJlbnQ7dGhpcy5fYWRkQWN0aXZlQ2xhc3MoKSxpJiZ0aGlzLl90cmlnZ2Vy
KCJhY3RpdmF0ZSIsZSx0aGlzLnVpKGkpKX0sX2RlYWN0aXZhdGU6ZnVuY3Rpb24oZSl7dmFyIGk9
dC51aS5kZG1hbmFnZXIuY3VycmVudDt0aGlzLl9yZW1vdmVBY3RpdmVDbGFzcygpLGkmJnRoaXMu
X3RyaWdnZXIoImRlYWN0aXZhdGUiLGUsdGhpcy51aShpKSl9LF9vdmVyOmZ1bmN0aW9uKGUpe3Zh
ciBpPXQudWkuZGRtYW5hZ2VyLmN1cnJlbnQ7aSYmKGkuY3VycmVudEl0ZW18fGkuZWxlbWVudClb
MF0hPT10aGlzLmVsZW1lbnRbMF0mJnRoaXMuYWNjZXB0LmNhbGwodGhpcy5lbGVtZW50WzBdLGku
Y3VycmVudEl0ZW18fGkuZWxlbWVudCkmJih0aGlzLl9hZGRIb3ZlckNsYXNzKCksdGhpcy5fdHJp
Z2dlcigib3ZlciIsZSx0aGlzLnVpKGkpKSl9LF9vdXQ6ZnVuY3Rpb24oZSl7dmFyIGk9dC51aS5k
ZG1hbmFnZXIuY3VycmVudDtpJiYoaS5jdXJyZW50SXRlbXx8aS5lbGVtZW50KVswXSE9PXRoaXMu
ZWxlbWVudFswXSYmdGhpcy5hY2NlcHQuY2FsbCh0aGlzLmVsZW1lbnRbMF0saS5jdXJyZW50SXRl
bXx8aS5lbGVtZW50KSYmKHRoaXMuX3JlbW92ZUhvdmVyQ2xhc3MoKSx0aGlzLl90cmlnZ2VyKCJv
dXQiLGUsdGhpcy51aShpKSkpfSxfZHJvcDpmdW5jdGlvbihlLGkpe3ZhciBzPWl8fHQudWkuZGRt
YW5hZ2VyLmN1cnJlbnQsbj0hMTtyZXR1cm4gcyYmKHMuY3VycmVudEl0ZW18fHMuZWxlbWVudClb
MF0hPT10aGlzLmVsZW1lbnRbMF0/KHRoaXMuZWxlbWVudC5maW5kKCI6ZGF0YSh1aS1kcm9wcGFi
bGUpIikubm90KCIudWktZHJhZ2dhYmxlLWRyYWdnaW5nIikuZWFjaChmdW5jdGlvbigpe3ZhciBp
PXQodGhpcykuZHJvcHBhYmxlKCJpbnN0YW5jZSIpO3JldHVybiBpLm9wdGlvbnMuZ3JlZWR5JiYh
aS5vcHRpb25zLmRpc2FibGVkJiZpLm9wdGlvbnMuc2NvcGU9PT1zLm9wdGlvbnMuc2NvcGUmJmku
YWNjZXB0LmNhbGwoaS5lbGVtZW50WzBdLHMuY3VycmVudEl0ZW18fHMuZWxlbWVudCkmJnYocyx0
LmV4dGVuZChpLHtvZmZzZXQ6aS5lbGVtZW50Lm9mZnNldCgpfSksaS5vcHRpb25zLnRvbGVyYW5j
ZSxlKT8obj0hMCwhMSk6dm9pZCAwfSksbj8hMTp0aGlzLmFjY2VwdC5jYWxsKHRoaXMuZWxlbWVu
dFswXSxzLmN1cnJlbnRJdGVtfHxzLmVsZW1lbnQpPyh0aGlzLl9yZW1vdmVBY3RpdmVDbGFzcygp
LHRoaXMuX3JlbW92ZUhvdmVyQ2xhc3MoKSx0aGlzLl90cmlnZ2VyKCJkcm9wIixlLHRoaXMudWko
cykpLHRoaXMuZWxlbWVudCk6ITEpOiExfSx1aTpmdW5jdGlvbih0KXtyZXR1cm57ZHJhZ2dhYmxl
OnQuY3VycmVudEl0ZW18fHQuZWxlbWVudCxoZWxwZXI6dC5oZWxwZXIscG9zaXRpb246dC5wb3Np
dGlvbixvZmZzZXQ6dC5wb3NpdGlvbkFic319LF9hZGRIb3ZlckNsYXNzOmZ1bmN0aW9uKCl7dGhp
cy5fYWRkQ2xhc3MoInVpLWRyb3BwYWJsZS1ob3ZlciIpfSxfcmVtb3ZlSG92ZXJDbGFzczpmdW5j
dGlvbigpe3RoaXMuX3JlbW92ZUNsYXNzKCJ1aS1kcm9wcGFibGUtaG92ZXIiKX0sX2FkZEFjdGl2
ZUNsYXNzOmZ1bmN0aW9uKCl7dGhpcy5fYWRkQ2xhc3MoInVpLWRyb3BwYWJsZS1hY3RpdmUiKX0s
X3JlbW92ZUFjdGl2ZUNsYXNzOmZ1bmN0aW9uKCl7dGhpcy5fcmVtb3ZlQ2xhc3MoInVpLWRyb3Bw
YWJsZS1hY3RpdmUiKX19KTt2YXIgdj10LnVpLmludGVyc2VjdD1mdW5jdGlvbigpe2Z1bmN0aW9u
IHQodCxlLGkpe3JldHVybiB0Pj1lJiZlK2k+dH1yZXR1cm4gZnVuY3Rpb24oZSxpLHMsbil7aWYo
IWkub2Zmc2V0KXJldHVybiExO3ZhciBvPShlLnBvc2l0aW9uQWJzfHxlLnBvc2l0aW9uLmFic29s
dXRlKS5sZWZ0K2UubWFyZ2lucy5sZWZ0LGE9KGUucG9zaXRpb25BYnN8fGUucG9zaXRpb24uYWJz
b2x1dGUpLnRvcCtlLm1hcmdpbnMudG9wLHI9bytlLmhlbHBlclByb3BvcnRpb25zLndpZHRoLGg9
YStlLmhlbHBlclByb3BvcnRpb25zLmhlaWdodCxsPWkub2Zmc2V0LmxlZnQsYz1pLm9mZnNldC50
b3AsdT1sK2kucHJvcG9ydGlvbnMoKS53aWR0aCxkPWMraS5wcm9wb3J0aW9ucygpLmhlaWdodDtz
d2l0Y2gocyl7Y2FzZSJmaXQiOnJldHVybiBvPj1sJiZ1Pj1yJiZhPj1jJiZkPj1oO2Nhc2UiaW50
ZXJzZWN0IjpyZXR1cm4gbytlLmhlbHBlclByb3BvcnRpb25zLndpZHRoLzI+bCYmdT5yLWUuaGVs
cGVyUHJvcG9ydGlvbnMud2lkdGgvMiYmYStlLmhlbHBlclByb3BvcnRpb25zLmhlaWdodC8yPmMm
JmQ+aC1lLmhlbHBlclByb3BvcnRpb25zLmhlaWdodC8yO2Nhc2UicG9pbnRlciI6cmV0dXJuIHQo
bi5wYWdlWSxjLGkucHJvcG9ydGlvbnMoKS5oZWlnaHQpJiZ0KG4ucGFnZVgsbCxpLnByb3BvcnRp
b25zKCkud2lkdGgpO2Nhc2UidG91Y2giOnJldHVybihhPj1jJiZkPj1hfHxoPj1jJiZkPj1ofHxj
PmEmJmg+ZCkmJihvPj1sJiZ1Pj1vfHxyPj1sJiZ1Pj1yfHxsPm8mJnI+dSk7ZGVmYXVsdDpyZXR1
cm4hMX19fSgpO3QudWkuZGRtYW5hZ2VyPXtjdXJyZW50Om51bGwsZHJvcHBhYmxlczp7ImRlZmF1
bHQiOltdfSxwcmVwYXJlT2Zmc2V0czpmdW5jdGlvbihlLGkpe3ZhciBzLG4sbz10LnVpLmRkbWFu
YWdlci5kcm9wcGFibGVzW2Uub3B0aW9ucy5zY29wZV18fFtdLGE9aT9pLnR5cGU6bnVsbCxyPShl
LmN1cnJlbnRJdGVtfHxlLmVsZW1lbnQpLmZpbmQoIjpkYXRhKHVpLWRyb3BwYWJsZSkiKS5hZGRC
YWNrKCk7dDpmb3Iocz0wO28ubGVuZ3RoPnM7cysrKWlmKCEob1tzXS5vcHRpb25zLmRpc2FibGVk
fHxlJiYhb1tzXS5hY2NlcHQuY2FsbChvW3NdLmVsZW1lbnRbMF0sZS5jdXJyZW50SXRlbXx8ZS5l
bGVtZW50KSkpe2ZvcihuPTA7ci5sZW5ndGg+bjtuKyspaWYocltuXT09PW9bc10uZWxlbWVudFsw
XSl7b1tzXS5wcm9wb3J0aW9ucygpLmhlaWdodD0wO2NvbnRpbnVlIHR9b1tzXS52aXNpYmxlPSJu
b25lIiE9PW9bc10uZWxlbWVudC5jc3MoImRpc3BsYXkiKSxvW3NdLnZpc2libGUmJigibW91c2Vk
b3duIj09PWEmJm9bc10uX2FjdGl2YXRlLmNhbGwob1tzXSxpKSxvW3NdLm9mZnNldD1vW3NdLmVs
ZW1lbnQub2Zmc2V0KCksb1tzXS5wcm9wb3J0aW9ucyh7d2lkdGg6b1tzXS5lbGVtZW50WzBdLm9m
ZnNldFdpZHRoLGhlaWdodDpvW3NdLmVsZW1lbnRbMF0ub2Zmc2V0SGVpZ2h0fSkpfX0sZHJvcDpm
dW5jdGlvbihlLGkpe3ZhciBzPSExO3JldHVybiB0LmVhY2goKHQudWkuZGRtYW5hZ2VyLmRyb3Bw
YWJsZXNbZS5vcHRpb25zLnNjb3BlXXx8W10pLnNsaWNlKCksZnVuY3Rpb24oKXt0aGlzLm9wdGlv
bnMmJighdGhpcy5vcHRpb25zLmRpc2FibGVkJiZ0aGlzLnZpc2libGUmJnYoZSx0aGlzLHRoaXMu
b3B0aW9ucy50b2xlcmFuY2UsaSkmJihzPXRoaXMuX2Ryb3AuY2FsbCh0aGlzLGkpfHxzKSwhdGhp
cy5vcHRpb25zLmRpc2FibGVkJiZ0aGlzLnZpc2libGUmJnRoaXMuYWNjZXB0LmNhbGwodGhpcy5l
bGVtZW50WzBdLGUuY3VycmVudEl0ZW18fGUuZWxlbWVudCkmJih0aGlzLmlzb3V0PSEwLHRoaXMu
aXNvdmVyPSExLHRoaXMuX2RlYWN0aXZhdGUuY2FsbCh0aGlzLGkpKSl9KSxzfSxkcmFnU3RhcnQ6
ZnVuY3Rpb24oZSxpKXtlLmVsZW1lbnQucGFyZW50c1VudGlsKCJib2R5Iikub24oInNjcm9sbC5k
cm9wcGFibGUiLGZ1bmN0aW9uKCl7ZS5vcHRpb25zLnJlZnJlc2hQb3NpdGlvbnN8fHQudWkuZGRt
YW5hZ2VyLnByZXBhcmVPZmZzZXRzKGUsaSl9KX0sZHJhZzpmdW5jdGlvbihlLGkpe2Uub3B0aW9u
cy5yZWZyZXNoUG9zaXRpb25zJiZ0LnVpLmRkbWFuYWdlci5wcmVwYXJlT2Zmc2V0cyhlLGkpLHQu
ZWFjaCh0LnVpLmRkbWFuYWdlci5kcm9wcGFibGVzW2Uub3B0aW9ucy5zY29wZV18fFtdLGZ1bmN0
aW9uKCl7aWYoIXRoaXMub3B0aW9ucy5kaXNhYmxlZCYmIXRoaXMuZ3JlZWR5Q2hpbGQmJnRoaXMu
dmlzaWJsZSl7dmFyIHMsbixvLGE9dihlLHRoaXMsdGhpcy5vcHRpb25zLnRvbGVyYW5jZSxpKSxy
PSFhJiZ0aGlzLmlzb3Zlcj8iaXNvdXQiOmEmJiF0aGlzLmlzb3Zlcj8iaXNvdmVyIjpudWxsO3Im
Jih0aGlzLm9wdGlvbnMuZ3JlZWR5JiYobj10aGlzLm9wdGlvbnMuc2NvcGUsbz10aGlzLmVsZW1l
bnQucGFyZW50cygiOmRhdGEodWktZHJvcHBhYmxlKSIpLmZpbHRlcihmdW5jdGlvbigpe3JldHVy
biB0KHRoaXMpLmRyb3BwYWJsZSgiaW5zdGFuY2UiKS5vcHRpb25zLnNjb3BlPT09bn0pLG8ubGVu
Z3RoJiYocz10KG9bMF0pLmRyb3BwYWJsZSgiaW5zdGFuY2UiKSxzLmdyZWVkeUNoaWxkPSJpc292
ZXIiPT09cikpLHMmJiJpc292ZXIiPT09ciYmKHMuaXNvdmVyPSExLHMuaXNvdXQ9ITAscy5fb3V0
LmNhbGwocyxpKSksdGhpc1tyXT0hMCx0aGlzWyJpc291dCI9PT1yPyJpc292ZXIiOiJpc291dCJd
PSExLHRoaXNbImlzb3ZlciI9PT1yPyJfb3ZlciI6Il9vdXQiXS5jYWxsKHRoaXMsaSkscyYmImlz
b3V0Ij09PXImJihzLmlzb3V0PSExLHMuaXNvdmVyPSEwLHMuX292ZXIuY2FsbChzLGkpKSl9fSl9
LGRyYWdTdG9wOmZ1bmN0aW9uKGUsaSl7ZS5lbGVtZW50LnBhcmVudHNVbnRpbCgiYm9keSIpLm9m
Zigic2Nyb2xsLmRyb3BwYWJsZSIpLGUub3B0aW9ucy5yZWZyZXNoUG9zaXRpb25zfHx0LnVpLmRk
bWFuYWdlci5wcmVwYXJlT2Zmc2V0cyhlLGkpfX0sdC51aUJhY2tDb21wYXQhPT0hMSYmdC53aWRn
ZXQoInVpLmRyb3BwYWJsZSIsdC51aS5kcm9wcGFibGUse29wdGlvbnM6e2hvdmVyQ2xhc3M6ITEs
YWN0aXZlQ2xhc3M6ITF9LF9hZGRBY3RpdmVDbGFzczpmdW5jdGlvbigpe3RoaXMuX3N1cGVyKCks
dGhpcy5vcHRpb25zLmFjdGl2ZUNsYXNzJiZ0aGlzLmVsZW1lbnQuYWRkQ2xhc3ModGhpcy5vcHRp
b25zLmFjdGl2ZUNsYXNzKX0sX3JlbW92ZUFjdGl2ZUNsYXNzOmZ1bmN0aW9uKCl7dGhpcy5fc3Vw
ZXIoKSx0aGlzLm9wdGlvbnMuYWN0aXZlQ2xhc3MmJnRoaXMuZWxlbWVudC5yZW1vdmVDbGFzcyh0
aGlzLm9wdGlvbnMuYWN0aXZlQ2xhc3MpfSxfYWRkSG92ZXJDbGFzczpmdW5jdGlvbigpe3RoaXMu
X3N1cGVyKCksdGhpcy5vcHRpb25zLmhvdmVyQ2xhc3MmJnRoaXMuZWxlbWVudC5hZGRDbGFzcyh0
aGlzLm9wdGlvbnMuaG92ZXJDbGFzcyl9LF9yZW1vdmVIb3ZlckNsYXNzOmZ1bmN0aW9uKCl7dGhp
cy5fc3VwZXIoKSx0aGlzLm9wdGlvbnMuaG92ZXJDbGFzcyYmdGhpcy5lbGVtZW50LnJlbW92ZUNs
YXNzKHRoaXMub3B0aW9ucy5ob3ZlckNsYXNzKX19KSx0LnVpLmRyb3BwYWJsZSx0LndpZGdldCgi
dWkucHJvZ3Jlc3NiYXIiLHt2ZXJzaW9uOiIxLjEyLjEiLG9wdGlvbnM6e2NsYXNzZXM6eyJ1aS1w
cm9ncmVzc2JhciI6InVpLWNvcm5lci1hbGwiLCJ1aS1wcm9ncmVzc2Jhci12YWx1ZSI6InVpLWNv
cm5lci1sZWZ0IiwidWktcHJvZ3Jlc3NiYXItY29tcGxldGUiOiJ1aS1jb3JuZXItcmlnaHQifSxt
YXg6MTAwLHZhbHVlOjAsY2hhbmdlOm51bGwsY29tcGxldGU6bnVsbH0sbWluOjAsX2NyZWF0ZTpm
dW5jdGlvbigpe3RoaXMub2xkVmFsdWU9dGhpcy5vcHRpb25zLnZhbHVlPXRoaXMuX2NvbnN0cmFp
bmVkVmFsdWUoKSx0aGlzLmVsZW1lbnQuYXR0cih7cm9sZToicHJvZ3Jlc3NiYXIiLCJhcmlhLXZh
bHVlbWluIjp0aGlzLm1pbn0pLHRoaXMuX2FkZENsYXNzKCJ1aS1wcm9ncmVzc2JhciIsInVpLXdp
ZGdldCB1aS13aWRnZXQtY29udGVudCIpLHRoaXMudmFsdWVEaXY9dCgiPGRpdj4iKS5hcHBlbmRU
byh0aGlzLmVsZW1lbnQpLHRoaXMuX2FkZENsYXNzKHRoaXMudmFsdWVEaXYsInVpLXByb2dyZXNz
YmFyLXZhbHVlIiwidWktd2lkZ2V0LWhlYWRlciIpLHRoaXMuX3JlZnJlc2hWYWx1ZSgpfSxfZGVz
dHJveTpmdW5jdGlvbigpe3RoaXMuZWxlbWVudC5yZW1vdmVBdHRyKCJyb2xlIGFyaWEtdmFsdWVt
aW4gYXJpYS12YWx1ZW1heCBhcmlhLXZhbHVlbm93IiksdGhpcy52YWx1ZURpdi5yZW1vdmUoKX0s
dmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHZvaWQgMD09PXQ/dGhpcy5vcHRpb25zLnZhbHVlOih0
aGlzLm9wdGlvbnMudmFsdWU9dGhpcy5fY29uc3RyYWluZWRWYWx1ZSh0KSx0aGlzLl9yZWZyZXNo
VmFsdWUoKSx2b2lkIDApfSxfY29uc3RyYWluZWRWYWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdm9p
ZCAwPT09dCYmKHQ9dGhpcy5vcHRpb25zLnZhbHVlKSx0aGlzLmluZGV0ZXJtaW5hdGU9dD09PSEx
LCJudW1iZXIiIT10eXBlb2YgdCYmKHQ9MCksdGhpcy5pbmRldGVybWluYXRlPyExOk1hdGgubWlu
KHRoaXMub3B0aW9ucy5tYXgsTWF0aC5tYXgodGhpcy5taW4sdCkpfSxfc2V0T3B0aW9uczpmdW5j
dGlvbih0KXt2YXIgZT10LnZhbHVlO2RlbGV0ZSB0LnZhbHVlLHRoaXMuX3N1cGVyKHQpLHRoaXMu
b3B0aW9ucy52YWx1ZT10aGlzLl9jb25zdHJhaW5lZFZhbHVlKGUpLHRoaXMuX3JlZnJlc2hWYWx1
ZSgpfSxfc2V0T3B0aW9uOmZ1bmN0aW9uKHQsZSl7Im1heCI9PT10JiYoZT1NYXRoLm1heCh0aGlz
Lm1pbixlKSksdGhpcy5fc3VwZXIodCxlKX0sX3NldE9wdGlvbkRpc2FibGVkOmZ1bmN0aW9uKHQp
e3RoaXMuX3N1cGVyKHQpLHRoaXMuZWxlbWVudC5hdHRyKCJhcmlhLWRpc2FibGVkIix0KSx0aGlz
Ll90b2dnbGVDbGFzcyhudWxsLCJ1aS1zdGF0ZS1kaXNhYmxlZCIsISF0KX0sX3BlcmNlbnRhZ2U6
ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbmRldGVybWluYXRlPzEwMDoxMDAqKHRoaXMub3B0aW9u
cy52YWx1ZS10aGlzLm1pbikvKHRoaXMub3B0aW9ucy5tYXgtdGhpcy5taW4pfSxfcmVmcmVzaFZh
bHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vcHRpb25zLnZhbHVlLGk9dGhpcy5fcGVyY2VudGFn
ZSgpO3RoaXMudmFsdWVEaXYudG9nZ2xlKHRoaXMuaW5kZXRlcm1pbmF0ZXx8ZT50aGlzLm1pbiku
d2lkdGgoaS50b0ZpeGVkKDApKyIlIiksdGhpcy5fdG9nZ2xlQ2xhc3ModGhpcy52YWx1ZURpdiwi
dWktcHJvZ3Jlc3NiYXItY29tcGxldGUiLG51bGwsZT09PXRoaXMub3B0aW9ucy5tYXgpLl90b2dn
bGVDbGFzcygidWktcHJvZ3Jlc3NiYXItaW5kZXRlcm1pbmF0ZSIsbnVsbCx0aGlzLmluZGV0ZXJt
aW5hdGUpLHRoaXMuaW5kZXRlcm1pbmF0ZT8odGhpcy5lbGVtZW50LnJlbW92ZUF0dHIoImFyaWEt
dmFsdWVub3ciKSx0aGlzLm92ZXJsYXlEaXZ8fCh0aGlzLm92ZXJsYXlEaXY9dCgiPGRpdj4iKS5h
cHBlbmRUbyh0aGlzLnZhbHVlRGl2KSx0aGlzLl9hZGRDbGFzcyh0aGlzLm92ZXJsYXlEaXYsInVp
LXByb2dyZXNzYmFyLW92ZXJsYXkiKSkpOih0aGlzLmVsZW1lbnQuYXR0cih7ImFyaWEtdmFsdWVt
YXgiOnRoaXMub3B0aW9ucy5tYXgsImFyaWEtdmFsdWVub3ciOmV9KSx0aGlzLm92ZXJsYXlEaXYm
Jih0aGlzLm92ZXJsYXlEaXYucmVtb3ZlKCksdGhpcy5vdmVybGF5RGl2PW51bGwpKSx0aGlzLm9s
ZFZhbHVlIT09ZSYmKHRoaXMub2xkVmFsdWU9ZSx0aGlzLl90cmlnZ2VyKCJjaGFuZ2UiKSksZT09
PXRoaXMub3B0aW9ucy5tYXgmJnRoaXMuX3RyaWdnZXIoImNvbXBsZXRlIil9fSksdC53aWRnZXQo
InVpLnNlbGVjdGFibGUiLHQudWkubW91c2Use3ZlcnNpb246IjEuMTIuMSIsb3B0aW9uczp7YXBw
ZW5kVG86ImJvZHkiLGF1dG9SZWZyZXNoOiEwLGRpc3RhbmNlOjAsZmlsdGVyOiIqIix0b2xlcmFu
Y2U6InRvdWNoIixzZWxlY3RlZDpudWxsLHNlbGVjdGluZzpudWxsLHN0YXJ0Om51bGwsc3RvcDpu
dWxsLHVuc2VsZWN0ZWQ6bnVsbCx1bnNlbGVjdGluZzpudWxsfSxfY3JlYXRlOmZ1bmN0aW9uKCl7
dmFyIGU9dGhpczt0aGlzLl9hZGRDbGFzcygidWktc2VsZWN0YWJsZSIpLHRoaXMuZHJhZ2dlZD0h
MSx0aGlzLnJlZnJlc2g9ZnVuY3Rpb24oKXtlLmVsZW1lbnRQb3M9dChlLmVsZW1lbnRbMF0pLm9m
ZnNldCgpLGUuc2VsZWN0ZWVzPXQoZS5vcHRpb25zLmZpbHRlcixlLmVsZW1lbnRbMF0pLGUuX2Fk
ZENsYXNzKGUuc2VsZWN0ZWVzLCJ1aS1zZWxlY3RlZSIpLGUuc2VsZWN0ZWVzLmVhY2goZnVuY3Rp
b24oKXt2YXIgaT10KHRoaXMpLHM9aS5vZmZzZXQoKSxuPXtsZWZ0OnMubGVmdC1lLmVsZW1lbnRQ
b3MubGVmdCx0b3A6cy50b3AtZS5lbGVtZW50UG9zLnRvcH07dC5kYXRhKHRoaXMsInNlbGVjdGFi
bGUtaXRlbSIse2VsZW1lbnQ6dGhpcywkZWxlbWVudDppLGxlZnQ6bi5sZWZ0LHRvcDpuLnRvcCxy
aWdodDpuLmxlZnQraS5vdXRlcldpZHRoKCksYm90dG9tOm4udG9wK2kub3V0ZXJIZWlnaHQoKSxz
dGFydHNlbGVjdGVkOiExLHNlbGVjdGVkOmkuaGFzQ2xhc3MoInVpLXNlbGVjdGVkIiksc2VsZWN0
aW5nOmkuaGFzQ2xhc3MoInVpLXNlbGVjdGluZyIpLHVuc2VsZWN0aW5nOmkuaGFzQ2xhc3MoInVp
LXVuc2VsZWN0aW5nIil9KX0pfSx0aGlzLnJlZnJlc2goKSx0aGlzLl9tb3VzZUluaXQoKSx0aGlz
LmhlbHBlcj10KCI8ZGl2PiIpLHRoaXMuX2FkZENsYXNzKHRoaXMuaGVscGVyLCJ1aS1zZWxlY3Rh
YmxlLWhlbHBlciIpfSxfZGVzdHJveTpmdW5jdGlvbigpe3RoaXMuc2VsZWN0ZWVzLnJlbW92ZURh
dGEoInNlbGVjdGFibGUtaXRlbSIpLHRoaXMuX21vdXNlRGVzdHJveSgpfSxfbW91c2VTdGFydDpm
dW5jdGlvbihlKXt2YXIgaT10aGlzLHM9dGhpcy5vcHRpb25zO3RoaXMub3Bvcz1bZS5wYWdlWCxl
LnBhZ2VZXSx0aGlzLmVsZW1lbnRQb3M9dCh0aGlzLmVsZW1lbnRbMF0pLm9mZnNldCgpLHRoaXMu
b3B0aW9ucy5kaXNhYmxlZHx8KHRoaXMuc2VsZWN0ZWVzPXQocy5maWx0ZXIsdGhpcy5lbGVtZW50
WzBdKSx0aGlzLl90cmlnZ2VyKCJzdGFydCIsZSksdChzLmFwcGVuZFRvKS5hcHBlbmQodGhpcy5o
ZWxwZXIpLHRoaXMuaGVscGVyLmNzcyh7bGVmdDplLnBhZ2VYLHRvcDplLnBhZ2VZLHdpZHRoOjAs
aGVpZ2h0OjB9KSxzLmF1dG9SZWZyZXNoJiZ0aGlzLnJlZnJlc2goKSx0aGlzLnNlbGVjdGVlcy5m
aWx0ZXIoIi51aS1zZWxlY3RlZCIpLmVhY2goZnVuY3Rpb24oKXt2YXIgcz10LmRhdGEodGhpcywi
c2VsZWN0YWJsZS1pdGVtIik7cy5zdGFydHNlbGVjdGVkPSEwLGUubWV0YUtleXx8ZS5jdHJsS2V5
fHwoaS5fcmVtb3ZlQ2xhc3Mocy4kZWxlbWVudCwidWktc2VsZWN0ZWQiKSxzLnNlbGVjdGVkPSEx
LGkuX2FkZENsYXNzKHMuJGVsZW1lbnQsInVpLXVuc2VsZWN0aW5nIikscy51bnNlbGVjdGluZz0h
MCxpLl90cmlnZ2VyKCJ1bnNlbGVjdGluZyIsZSx7dW5zZWxlY3Rpbmc6cy5lbGVtZW50fSkpfSks
dChlLnRhcmdldCkucGFyZW50cygpLmFkZEJhY2soKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIHMsbj10
LmRhdGEodGhpcywic2VsZWN0YWJsZS1pdGVtIik7cmV0dXJuIG4/KHM9IWUubWV0YUtleSYmIWUu
Y3RybEtleXx8IW4uJGVsZW1lbnQuaGFzQ2xhc3MoInVpLXNlbGVjdGVkIiksaS5fcmVtb3ZlQ2xh
c3Mobi4kZWxlbWVudCxzPyJ1aS11bnNlbGVjdGluZyI6InVpLXNlbGVjdGVkIikuX2FkZENsYXNz
KG4uJGVsZW1lbnQscz8idWktc2VsZWN0aW5nIjoidWktdW5zZWxlY3RpbmciKSxuLnVuc2VsZWN0
aW5nPSFzLG4uc2VsZWN0aW5nPXMsbi5zZWxlY3RlZD1zLHM/aS5fdHJpZ2dlcigic2VsZWN0aW5n
IixlLHtzZWxlY3Rpbmc6bi5lbGVtZW50fSk6aS5fdHJpZ2dlcigidW5zZWxlY3RpbmciLGUse3Vu
c2VsZWN0aW5nOm4uZWxlbWVudH0pLCExKTp2b2lkIDB9KSl9LF9tb3VzZURyYWc6ZnVuY3Rpb24o
ZSl7aWYodGhpcy5kcmFnZ2VkPSEwLCF0aGlzLm9wdGlvbnMuZGlzYWJsZWQpe3ZhciBpLHM9dGhp
cyxuPXRoaXMub3B0aW9ucyxvPXRoaXMub3Bvc1swXSxhPXRoaXMub3Bvc1sxXSxyPWUucGFnZVgs
aD1lLnBhZ2VZO3JldHVybiBvPnImJihpPXIscj1vLG89aSksYT5oJiYoaT1oLGg9YSxhPWkpLHRo
aXMuaGVscGVyLmNzcyh7bGVmdDpvLHRvcDphLHdpZHRoOnItbyxoZWlnaHQ6aC1hfSksdGhpcy5z
ZWxlY3RlZXMuZWFjaChmdW5jdGlvbigpe3ZhciBpPXQuZGF0YSh0aGlzLCJzZWxlY3RhYmxlLWl0
ZW0iKSxsPSExLGM9e307aSYmaS5lbGVtZW50IT09cy5lbGVtZW50WzBdJiYoYy5sZWZ0PWkubGVm
dCtzLmVsZW1lbnRQb3MubGVmdCxjLnJpZ2h0PWkucmlnaHQrcy5lbGVtZW50UG9zLmxlZnQsYy50
b3A9aS50b3Arcy5lbGVtZW50UG9zLnRvcCxjLmJvdHRvbT1pLmJvdHRvbStzLmVsZW1lbnRQb3Mu
dG9wLCJ0b3VjaCI9PT1uLnRvbGVyYW5jZT9sPSEoYy5sZWZ0PnJ8fG8+Yy5yaWdodHx8Yy50b3A+
aHx8YT5jLmJvdHRvbSk6ImZpdCI9PT1uLnRvbGVyYW5jZSYmKGw9Yy5sZWZ0Pm8mJnI+Yy5yaWdo
dCYmYy50b3A+YSYmaD5jLmJvdHRvbSksbD8oaS5zZWxlY3RlZCYmKHMuX3JlbW92ZUNsYXNzKGku
JGVsZW1lbnQsInVpLXNlbGVjdGVkIiksaS5zZWxlY3RlZD0hMSksaS51bnNlbGVjdGluZyYmKHMu
X3JlbW92ZUNsYXNzKGkuJGVsZW1lbnQsInVpLXVuc2VsZWN0aW5nIiksaS51bnNlbGVjdGluZz0h
MSksaS5zZWxlY3Rpbmd8fChzLl9hZGRDbGFzcyhpLiRlbGVtZW50LCJ1aS1zZWxlY3RpbmciKSxp
LnNlbGVjdGluZz0hMCxzLl90cmlnZ2VyKCJzZWxlY3RpbmciLGUse3NlbGVjdGluZzppLmVsZW1l
bnR9KSkpOihpLnNlbGVjdGluZyYmKChlLm1ldGFLZXl8fGUuY3RybEtleSkmJmkuc3RhcnRzZWxl
Y3RlZD8ocy5fcmVtb3ZlQ2xhc3MoaS4kZWxlbWVudCwidWktc2VsZWN0aW5nIiksaS5zZWxlY3Rp
bmc9ITEscy5fYWRkQ2xhc3MoaS4kZWxlbWVudCwidWktc2VsZWN0ZWQiKSxpLnNlbGVjdGVkPSEw
KToocy5fcmVtb3ZlQ2xhc3MoaS4kZWxlbWVudCwidWktc2VsZWN0aW5nIiksaS5zZWxlY3Rpbmc9
ITEsaS5zdGFydHNlbGVjdGVkJiYocy5fYWRkQ2xhc3MoaS4kZWxlbWVudCwidWktdW5zZWxlY3Rp
bmciKSxpLnVuc2VsZWN0aW5nPSEwKSxzLl90cmlnZ2VyKCJ1bnNlbGVjdGluZyIsZSx7dW5zZWxl
Y3Rpbmc6aS5lbGVtZW50fSkpKSxpLnNlbGVjdGVkJiYoZS5tZXRhS2V5fHxlLmN0cmxLZXl8fGku
c3RhcnRzZWxlY3RlZHx8KHMuX3JlbW92ZUNsYXNzKGkuJGVsZW1lbnQsInVpLXNlbGVjdGVkIiks
aS5zZWxlY3RlZD0hMSxzLl9hZGRDbGFzcyhpLiRlbGVtZW50LCJ1aS11bnNlbGVjdGluZyIpLGku
dW5zZWxlY3Rpbmc9ITAscy5fdHJpZ2dlcigidW5zZWxlY3RpbmciLGUse3Vuc2VsZWN0aW5nOmku
ZWxlbWVudH0pKSkpKX0pLCExfX0sX21vdXNlU3RvcDpmdW5jdGlvbihlKXt2YXIgaT10aGlzO3Jl
dHVybiB0aGlzLmRyYWdnZWQ9ITEsdCgiLnVpLXVuc2VsZWN0aW5nIix0aGlzLmVsZW1lbnRbMF0p
LmVhY2goZnVuY3Rpb24oKXt2YXIgcz10LmRhdGEodGhpcywic2VsZWN0YWJsZS1pdGVtIik7aS5f
cmVtb3ZlQ2xhc3Mocy4kZWxlbWVudCwidWktdW5zZWxlY3RpbmciKSxzLnVuc2VsZWN0aW5nPSEx
LHMuc3RhcnRzZWxlY3RlZD0hMSxpLl90cmlnZ2VyKCJ1bnNlbGVjdGVkIixlLHt1bnNlbGVjdGVk
OnMuZWxlbWVudH0pfSksdCgiLnVpLXNlbGVjdGluZyIsdGhpcy5lbGVtZW50WzBdKS5lYWNoKGZ1
bmN0aW9uKCl7dmFyIHM9dC5kYXRhKHRoaXMsInNlbGVjdGFibGUtaXRlbSIpO2kuX3JlbW92ZUNs
YXNzKHMuJGVsZW1lbnQsInVpLXNlbGVjdGluZyIpLl9hZGRDbGFzcyhzLiRlbGVtZW50LCJ1aS1z
ZWxlY3RlZCIpLHMuc2VsZWN0aW5nPSExLHMuc2VsZWN0ZWQ9ITAscy5zdGFydHNlbGVjdGVkPSEw
LGkuX3RyaWdnZXIoInNlbGVjdGVkIixlLHtzZWxlY3RlZDpzLmVsZW1lbnR9KX0pLHRoaXMuX3Ry
aWdnZXIoInN0b3AiLGUpLHRoaXMuaGVscGVyLnJlbW92ZSgpLCExfX0pLHQud2lkZ2V0KCJ1aS5z
ZWxlY3RtZW51IixbdC51aS5mb3JtUmVzZXRNaXhpbix7dmVyc2lvbjoiMS4xMi4xIixkZWZhdWx0
RWxlbWVudDoiPHNlbGVjdD4iLG9wdGlvbnM6e2FwcGVuZFRvOm51bGwsY2xhc3Nlczp7InVpLXNl
bGVjdG1lbnUtYnV0dG9uLW9wZW4iOiJ1aS1jb3JuZXItdG9wIiwidWktc2VsZWN0bWVudS1idXR0
b24tY2xvc2VkIjoidWktY29ybmVyLWFsbCJ9LGRpc2FibGVkOm51bGwsaWNvbnM6e2J1dHRvbjoi
dWktaWNvbi10cmlhbmdsZS0xLXMifSxwb3NpdGlvbjp7bXk6ImxlZnQgdG9wIixhdDoibGVmdCBi
b3R0b20iLGNvbGxpc2lvbjoibm9uZSJ9LHdpZHRoOiExLGNoYW5nZTpudWxsLGNsb3NlOm51bGws
Zm9jdXM6bnVsbCxvcGVuOm51bGwsc2VsZWN0Om51bGx9LF9jcmVhdGU6ZnVuY3Rpb24oKXt2YXIg
ZT10aGlzLmVsZW1lbnQudW5pcXVlSWQoKS5hdHRyKCJpZCIpO3RoaXMuaWRzPXtlbGVtZW50OmUs
YnV0dG9uOmUrIi1idXR0b24iLG1lbnU6ZSsiLW1lbnUifSx0aGlzLl9kcmF3QnV0dG9uKCksdGhp
cy5fZHJhd01lbnUoKSx0aGlzLl9iaW5kRm9ybVJlc2V0SGFuZGxlcigpLHRoaXMuX3JlbmRlcmVk
PSExLHRoaXMubWVudUl0ZW1zPXQoKX0sX2RyYXdCdXR0b246ZnVuY3Rpb24oKXt2YXIgZSxpPXRo
aXMscz10aGlzLl9wYXJzZU9wdGlvbih0aGlzLmVsZW1lbnQuZmluZCgib3B0aW9uOnNlbGVjdGVk
IiksdGhpcy5lbGVtZW50WzBdLnNlbGVjdGVkSW5kZXgpO3RoaXMubGFiZWxzPXRoaXMuZWxlbWVu
dC5sYWJlbHMoKS5hdHRyKCJmb3IiLHRoaXMuaWRzLmJ1dHRvbiksdGhpcy5fb24odGhpcy5sYWJl
bHMse2NsaWNrOmZ1bmN0aW9uKHQpe3RoaXMuYnV0dG9uLmZvY3VzKCksdC5wcmV2ZW50RGVmYXVs
dCgpfX0pLHRoaXMuZWxlbWVudC5oaWRlKCksdGhpcy5idXR0b249dCgiPHNwYW4+Iix7dGFiaW5k
ZXg6dGhpcy5vcHRpb25zLmRpc2FibGVkPy0xOjAsaWQ6dGhpcy5pZHMuYnV0dG9uLHJvbGU6ImNv
bWJvYm94IiwiYXJpYS1leHBhbmRlZCI6ImZhbHNlIiwiYXJpYS1hdXRvY29tcGxldGUiOiJsaXN0
IiwiYXJpYS1vd25zIjp0aGlzLmlkcy5tZW51LCJhcmlhLWhhc3BvcHVwIjoidHJ1ZSIsdGl0bGU6
dGhpcy5lbGVtZW50LmF0dHIoInRpdGxlIil9KS5pbnNlcnRBZnRlcih0aGlzLmVsZW1lbnQpLHRo
aXMuX2FkZENsYXNzKHRoaXMuYnV0dG9uLCJ1aS1zZWxlY3RtZW51LWJ1dHRvbiB1aS1zZWxlY3Rt
ZW51LWJ1dHRvbi1jbG9zZWQiLCJ1aS1idXR0b24gdWktd2lkZ2V0IiksZT10KCI8c3Bhbj4iKS5h
cHBlbmRUbyh0aGlzLmJ1dHRvbiksdGhpcy5fYWRkQ2xhc3MoZSwidWktc2VsZWN0bWVudS1pY29u
IiwidWktaWNvbiAiK3RoaXMub3B0aW9ucy5pY29ucy5idXR0b24pLHRoaXMuYnV0dG9uSXRlbT10
aGlzLl9yZW5kZXJCdXR0b25JdGVtKHMpLmFwcGVuZFRvKHRoaXMuYnV0dG9uKSx0aGlzLm9wdGlv
bnMud2lkdGghPT0hMSYmdGhpcy5fcmVzaXplQnV0dG9uKCksdGhpcy5fb24odGhpcy5idXR0b24s
dGhpcy5fYnV0dG9uRXZlbnRzKSx0aGlzLmJ1dHRvbi5vbmUoImZvY3VzaW4iLGZ1bmN0aW9uKCl7
aS5fcmVuZGVyZWR8fGkuX3JlZnJlc2hNZW51KCl9KX0sX2RyYXdNZW51OmZ1bmN0aW9uKCl7dmFy
IGU9dGhpczt0aGlzLm1lbnU9dCgiPHVsPiIseyJhcmlhLWhpZGRlbiI6InRydWUiLCJhcmlhLWxh
YmVsbGVkYnkiOnRoaXMuaWRzLmJ1dHRvbixpZDp0aGlzLmlkcy5tZW51fSksdGhpcy5tZW51V3Jh
cD10KCI8ZGl2PiIpLmFwcGVuZCh0aGlzLm1lbnUpLHRoaXMuX2FkZENsYXNzKHRoaXMubWVudVdy
YXAsInVpLXNlbGVjdG1lbnUtbWVudSIsInVpLWZyb250IiksdGhpcy5tZW51V3JhcC5hcHBlbmRU
byh0aGlzLl9hcHBlbmRUbygpKSx0aGlzLm1lbnVJbnN0YW5jZT10aGlzLm1lbnUubWVudSh7Y2xh
c3Nlczp7InVpLW1lbnUiOiJ1aS1jb3JuZXItYm90dG9tIn0scm9sZToibGlzdGJveCIsc2VsZWN0
OmZ1bmN0aW9uKHQsaSl7dC5wcmV2ZW50RGVmYXVsdCgpLGUuX3NldFNlbGVjdGlvbigpLGUuX3Nl
bGVjdChpLml0ZW0uZGF0YSgidWktc2VsZWN0bWVudS1pdGVtIiksdCl9LGZvY3VzOmZ1bmN0aW9u
KHQsaSl7dmFyIHM9aS5pdGVtLmRhdGEoInVpLXNlbGVjdG1lbnUtaXRlbSIpO251bGwhPWUuZm9j
dXNJbmRleCYmcy5pbmRleCE9PWUuZm9jdXNJbmRleCYmKGUuX3RyaWdnZXIoImZvY3VzIix0LHtp
dGVtOnN9KSxlLmlzT3Blbnx8ZS5fc2VsZWN0KHMsdCkpLGUuZm9jdXNJbmRleD1zLmluZGV4LGUu
YnV0dG9uLmF0dHIoImFyaWEtYWN0aXZlZGVzY2VuZGFudCIsZS5tZW51SXRlbXMuZXEocy5pbmRl
eCkuYXR0cigiaWQiKSl9fSkubWVudSgiaW5zdGFuY2UiKSx0aGlzLm1lbnVJbnN0YW5jZS5fb2Zm
KHRoaXMubWVudSwibW91c2VsZWF2ZSIpLHRoaXMubWVudUluc3RhbmNlLl9jbG9zZU9uRG9jdW1l
bnRDbGljaz1mdW5jdGlvbigpe3JldHVybiExfSx0aGlzLm1lbnVJbnN0YW5jZS5faXNEaXZpZGVy
PWZ1bmN0aW9uKCl7cmV0dXJuITF9fSxyZWZyZXNoOmZ1bmN0aW9uKCl7dGhpcy5fcmVmcmVzaE1l
bnUoKSx0aGlzLmJ1dHRvbkl0ZW0ucmVwbGFjZVdpdGgodGhpcy5idXR0b25JdGVtPXRoaXMuX3Jl
bmRlckJ1dHRvbkl0ZW0odGhpcy5fZ2V0U2VsZWN0ZWRJdGVtKCkuZGF0YSgidWktc2VsZWN0bWVu
dS1pdGVtIil8fHt9KSksbnVsbD09PXRoaXMub3B0aW9ucy53aWR0aCYmdGhpcy5fcmVzaXplQnV0
dG9uKCl9LF9yZWZyZXNoTWVudTpmdW5jdGlvbigpe3ZhciB0LGU9dGhpcy5lbGVtZW50LmZpbmQo
Im9wdGlvbiIpO3RoaXMubWVudS5lbXB0eSgpLHRoaXMuX3BhcnNlT3B0aW9ucyhlKSx0aGlzLl9y
ZW5kZXJNZW51KHRoaXMubWVudSx0aGlzLml0ZW1zKSx0aGlzLm1lbnVJbnN0YW5jZS5yZWZyZXNo
KCksdGhpcy5tZW51SXRlbXM9dGhpcy5tZW51LmZpbmQoImxpIikubm90KCIudWktc2VsZWN0bWVu
dS1vcHRncm91cCIpLmZpbmQoIi51aS1tZW51LWl0ZW0td3JhcHBlciIpLHRoaXMuX3JlbmRlcmVk
PSEwLGUubGVuZ3RoJiYodD10aGlzLl9nZXRTZWxlY3RlZEl0ZW0oKSx0aGlzLm1lbnVJbnN0YW5j
ZS5mb2N1cyhudWxsLHQpLHRoaXMuX3NldEFyaWEodC5kYXRhKCJ1aS1zZWxlY3RtZW51LWl0ZW0i
KSksdGhpcy5fc2V0T3B0aW9uKCJkaXNhYmxlZCIsdGhpcy5lbGVtZW50LnByb3AoImRpc2FibGVk
IikpKX0sb3BlbjpmdW5jdGlvbih0KXt0aGlzLm9wdGlvbnMuZGlzYWJsZWR8fCh0aGlzLl9yZW5k
ZXJlZD8odGhpcy5fcmVtb3ZlQ2xhc3ModGhpcy5tZW51LmZpbmQoIi51aS1zdGF0ZS1hY3RpdmUi
KSxudWxsLCJ1aS1zdGF0ZS1hY3RpdmUiKSx0aGlzLm1lbnVJbnN0YW5jZS5mb2N1cyhudWxsLHRo
aXMuX2dldFNlbGVjdGVkSXRlbSgpKSk6dGhpcy5fcmVmcmVzaE1lbnUoKSx0aGlzLm1lbnVJdGVt
cy5sZW5ndGgmJih0aGlzLmlzT3Blbj0hMCx0aGlzLl90b2dnbGVBdHRyKCksdGhpcy5fcmVzaXpl
TWVudSgpLHRoaXMuX3Bvc2l0aW9uKCksdGhpcy5fb24odGhpcy5kb2N1bWVudCx0aGlzLl9kb2N1
bWVudENsaWNrKSx0aGlzLl90cmlnZ2VyKCJvcGVuIix0KSkpfSxfcG9zaXRpb246ZnVuY3Rpb24o
KXt0aGlzLm1lbnVXcmFwLnBvc2l0aW9uKHQuZXh0ZW5kKHtvZjp0aGlzLmJ1dHRvbn0sdGhpcy5v
cHRpb25zLnBvc2l0aW9uKSl9LGNsb3NlOmZ1bmN0aW9uKHQpe3RoaXMuaXNPcGVuJiYodGhpcy5p
c09wZW49ITEsdGhpcy5fdG9nZ2xlQXR0cigpLHRoaXMucmFuZ2U9bnVsbCx0aGlzLl9vZmYodGhp
cy5kb2N1bWVudCksdGhpcy5fdHJpZ2dlcigiY2xvc2UiLHQpKX0sd2lkZ2V0OmZ1bmN0aW9uKCl7
cmV0dXJuIHRoaXMuYnV0dG9ufSxtZW51V2lkZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWVu
dX0sX3JlbmRlckJ1dHRvbkl0ZW06ZnVuY3Rpb24oZSl7dmFyIGk9dCgiPHNwYW4+Iik7cmV0dXJu
IHRoaXMuX3NldFRleHQoaSxlLmxhYmVsKSx0aGlzLl9hZGRDbGFzcyhpLCJ1aS1zZWxlY3RtZW51
LXRleHQiKSxpfSxfcmVuZGVyTWVudTpmdW5jdGlvbihlLGkpe3ZhciBzPXRoaXMsbj0iIjt0LmVh
Y2goaSxmdW5jdGlvbihpLG8pe3ZhciBhO28ub3B0Z3JvdXAhPT1uJiYoYT10KCI8bGk+Iix7dGV4
dDpvLm9wdGdyb3VwfSkscy5fYWRkQ2xhc3MoYSwidWktc2VsZWN0bWVudS1vcHRncm91cCIsInVp
LW1lbnUtZGl2aWRlciIrKG8uZWxlbWVudC5wYXJlbnQoIm9wdGdyb3VwIikucHJvcCgiZGlzYWJs
ZWQiKT8iIHVpLXN0YXRlLWRpc2FibGVkIjoiIikpLGEuYXBwZW5kVG8oZSksbj1vLm9wdGdyb3Vw
KSxzLl9yZW5kZXJJdGVtRGF0YShlLG8pfSl9LF9yZW5kZXJJdGVtRGF0YTpmdW5jdGlvbih0LGUp
e3JldHVybiB0aGlzLl9yZW5kZXJJdGVtKHQsZSkuZGF0YSgidWktc2VsZWN0bWVudS1pdGVtIixl
KX0sX3JlbmRlckl0ZW06ZnVuY3Rpb24oZSxpKXt2YXIgcz10KCI8bGk+Iiksbj10KCI8ZGl2PiIs
e3RpdGxlOmkuZWxlbWVudC5hdHRyKCJ0aXRsZSIpfSk7cmV0dXJuIGkuZGlzYWJsZWQmJnRoaXMu
X2FkZENsYXNzKHMsbnVsbCwidWktc3RhdGUtZGlzYWJsZWQiKSx0aGlzLl9zZXRUZXh0KG4saS5s
YWJlbCkscy5hcHBlbmQobikuYXBwZW5kVG8oZSl9LF9zZXRUZXh0OmZ1bmN0aW9uKHQsZSl7ZT90
LnRleHQoZSk6dC5odG1sKCImIzE2MDsiKX0sX21vdmU6ZnVuY3Rpb24odCxlKXt2YXIgaSxzLG49
Ii51aS1tZW51LWl0ZW0iO3RoaXMuaXNPcGVuP2k9dGhpcy5tZW51SXRlbXMuZXEodGhpcy5mb2N1
c0luZGV4KS5wYXJlbnQoImxpIik6KGk9dGhpcy5tZW51SXRlbXMuZXEodGhpcy5lbGVtZW50WzBd
LnNlbGVjdGVkSW5kZXgpLnBhcmVudCgibGkiKSxuKz0iOm5vdCgudWktc3RhdGUtZGlzYWJsZWQp
Iikscz0iZmlyc3QiPT09dHx8Imxhc3QiPT09dD9pWyJmaXJzdCI9PT10PyJwcmV2QWxsIjoibmV4
dEFsbCJdKG4pLmVxKC0xKTppW3QrIkFsbCJdKG4pLmVxKDApLHMubGVuZ3RoJiZ0aGlzLm1lbnVJ
bnN0YW5jZS5mb2N1cyhlLHMpfSxfZ2V0U2VsZWN0ZWRJdGVtOmZ1bmN0aW9uKCl7cmV0dXJuIHRo
aXMubWVudUl0ZW1zLmVxKHRoaXMuZWxlbWVudFswXS5zZWxlY3RlZEluZGV4KS5wYXJlbnQoImxp
Iil9LF90b2dnbGU6ZnVuY3Rpb24odCl7dGhpc1t0aGlzLmlzT3Blbj8iY2xvc2UiOiJvcGVuIl0o
dCl9LF9zZXRTZWxlY3Rpb246ZnVuY3Rpb24oKXt2YXIgdDt0aGlzLnJhbmdlJiYod2luZG93Lmdl
dFNlbGVjdGlvbj8odD13aW5kb3cuZ2V0U2VsZWN0aW9uKCksdC5yZW1vdmVBbGxSYW5nZXMoKSx0
LmFkZFJhbmdlKHRoaXMucmFuZ2UpKTp0aGlzLnJhbmdlLnNlbGVjdCgpLHRoaXMuYnV0dG9uLmZv
Y3VzKCkpfSxfZG9jdW1lbnRDbGljazp7bW91c2Vkb3duOmZ1bmN0aW9uKGUpe3RoaXMuaXNPcGVu
JiYodChlLnRhcmdldCkuY2xvc2VzdCgiLnVpLXNlbGVjdG1lbnUtbWVudSwgIyIrdC51aS5lc2Nh
cGVTZWxlY3Rvcih0aGlzLmlkcy5idXR0b24pKS5sZW5ndGh8fHRoaXMuY2xvc2UoZSkpfX0sX2J1
dHRvbkV2ZW50czp7bW91c2Vkb3duOmZ1bmN0aW9uKCl7dmFyIHQ7d2luZG93LmdldFNlbGVjdGlv
bj8odD13aW5kb3cuZ2V0U2VsZWN0aW9uKCksdC5yYW5nZUNvdW50JiYodGhpcy5yYW5nZT10Lmdl
dFJhbmdlQXQoMCkpKTp0aGlzLnJhbmdlPWRvY3VtZW50LnNlbGVjdGlvbi5jcmVhdGVSYW5nZSgp
fSxjbGljazpmdW5jdGlvbih0KXt0aGlzLl9zZXRTZWxlY3Rpb24oKSx0aGlzLl90b2dnbGUodCl9
LGtleWRvd246ZnVuY3Rpb24oZSl7dmFyIGk9ITA7c3dpdGNoKGUua2V5Q29kZSl7Y2FzZSB0LnVp
LmtleUNvZGUuVEFCOmNhc2UgdC51aS5rZXlDb2RlLkVTQ0FQRTp0aGlzLmNsb3NlKGUpLGk9ITE7
YnJlYWs7Y2FzZSB0LnVpLmtleUNvZGUuRU5URVI6dGhpcy5pc09wZW4mJnRoaXMuX3NlbGVjdEZv
Y3VzZWRJdGVtKGUpO2JyZWFrO2Nhc2UgdC51aS5rZXlDb2RlLlVQOmUuYWx0S2V5P3RoaXMuX3Rv
Z2dsZShlKTp0aGlzLl9tb3ZlKCJwcmV2IixlKTticmVhaztjYXNlIHQudWkua2V5Q29kZS5ET1dO
OmUuYWx0S2V5P3RoaXMuX3RvZ2dsZShlKTp0aGlzLl9tb3ZlKCJuZXh0IixlKTticmVhaztjYXNl
IHQudWkua2V5Q29kZS5TUEFDRTp0aGlzLmlzT3Blbj90aGlzLl9zZWxlY3RGb2N1c2VkSXRlbShl
KTp0aGlzLl90b2dnbGUoZSk7YnJlYWs7Y2FzZSB0LnVpLmtleUNvZGUuTEVGVDp0aGlzLl9tb3Zl
KCJwcmV2IixlKTticmVhaztjYXNlIHQudWkua2V5Q29kZS5SSUdIVDp0aGlzLl9tb3ZlKCJuZXh0
IixlKTticmVhaztjYXNlIHQudWkua2V5Q29kZS5IT01FOmNhc2UgdC51aS5rZXlDb2RlLlBBR0Vf
VVA6dGhpcy5fbW92ZSgiZmlyc3QiLGUpO2JyZWFrO2Nhc2UgdC51aS5rZXlDb2RlLkVORDpjYXNl
IHQudWkua2V5Q29kZS5QQUdFX0RPV046dGhpcy5fbW92ZSgibGFzdCIsZSk7YnJlYWs7ZGVmYXVs
dDp0aGlzLm1lbnUudHJpZ2dlcihlKSxpPSExfWkmJmUucHJldmVudERlZmF1bHQoKX19LF9zZWxl
Y3RGb2N1c2VkSXRlbTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLm1lbnVJdGVtcy5lcSh0aGlzLmZv
Y3VzSW5kZXgpLnBhcmVudCgibGkiKTtlLmhhc0NsYXNzKCJ1aS1zdGF0ZS1kaXNhYmxlZCIpfHx0
aGlzLl9zZWxlY3QoZS5kYXRhKCJ1aS1zZWxlY3RtZW51LWl0ZW0iKSx0KX0sX3NlbGVjdDpmdW5j
dGlvbih0LGUpe3ZhciBpPXRoaXMuZWxlbWVudFswXS5zZWxlY3RlZEluZGV4O3RoaXMuZWxlbWVu
dFswXS5zZWxlY3RlZEluZGV4PXQuaW5kZXgsdGhpcy5idXR0b25JdGVtLnJlcGxhY2VXaXRoKHRo
aXMuYnV0dG9uSXRlbT10aGlzLl9yZW5kZXJCdXR0b25JdGVtKHQpKSx0aGlzLl9zZXRBcmlhKHQp
LHRoaXMuX3RyaWdnZXIoInNlbGVjdCIsZSx7aXRlbTp0fSksdC5pbmRleCE9PWkmJnRoaXMuX3Ry
aWdnZXIoImNoYW5nZSIsZSx7aXRlbTp0fSksdGhpcy5jbG9zZShlKX0sX3NldEFyaWE6ZnVuY3Rp
b24odCl7dmFyIGU9dGhpcy5tZW51SXRlbXMuZXEodC5pbmRleCkuYXR0cigiaWQiKTt0aGlzLmJ1
dHRvbi5hdHRyKHsiYXJpYS1sYWJlbGxlZGJ5IjplLCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnQiOmV9
KSx0aGlzLm1lbnUuYXR0cigiYXJpYS1hY3RpdmVkZXNjZW5kYW50IixlKX0sX3NldE9wdGlvbjpm
dW5jdGlvbih0LGUpe2lmKCJpY29ucyI9PT10KXt2YXIgaT10aGlzLmJ1dHRvbi5maW5kKCJzcGFu
LnVpLWljb24iKTt0aGlzLl9yZW1vdmVDbGFzcyhpLG51bGwsdGhpcy5vcHRpb25zLmljb25zLmJ1
dHRvbikuX2FkZENsYXNzKGksbnVsbCxlLmJ1dHRvbil9dGhpcy5fc3VwZXIodCxlKSwiYXBwZW5k
VG8iPT09dCYmdGhpcy5tZW51V3JhcC5hcHBlbmRUbyh0aGlzLl9hcHBlbmRUbygpKSwid2lkdGgi
PT09dCYmdGhpcy5fcmVzaXplQnV0dG9uKCl9LF9zZXRPcHRpb25EaXNhYmxlZDpmdW5jdGlvbih0
KXt0aGlzLl9zdXBlcih0KSx0aGlzLm1lbnVJbnN0YW5jZS5vcHRpb24oImRpc2FibGVkIix0KSx0
aGlzLmJ1dHRvbi5hdHRyKCJhcmlhLWRpc2FibGVkIix0KSx0aGlzLl90b2dnbGVDbGFzcyh0aGlz
LmJ1dHRvbixudWxsLCJ1aS1zdGF0ZS1kaXNhYmxlZCIsdCksdGhpcy5lbGVtZW50LnByb3AoImRp
c2FibGVkIix0KSx0Pyh0aGlzLmJ1dHRvbi5hdHRyKCJ0YWJpbmRleCIsLTEpLHRoaXMuY2xvc2Uo
KSk6dGhpcy5idXR0b24uYXR0cigidGFiaW5kZXgiLDApfSxfYXBwZW5kVG86ZnVuY3Rpb24oKXt2
YXIgZT10aGlzLm9wdGlvbnMuYXBwZW5kVG87cmV0dXJuIGUmJihlPWUuanF1ZXJ5fHxlLm5vZGVU
eXBlP3QoZSk6dGhpcy5kb2N1bWVudC5maW5kKGUpLmVxKDApKSxlJiZlWzBdfHwoZT10aGlzLmVs
ZW1lbnQuY2xvc2VzdCgiLnVpLWZyb250LCBkaWFsb2ciKSksZS5sZW5ndGh8fChlPXRoaXMuZG9j
dW1lbnRbMF0uYm9keSksZX0sX3RvZ2dsZUF0dHI6ZnVuY3Rpb24oKXt0aGlzLmJ1dHRvbi5hdHRy
KCJhcmlhLWV4cGFuZGVkIix0aGlzLmlzT3BlbiksdGhpcy5fcmVtb3ZlQ2xhc3ModGhpcy5idXR0
b24sInVpLXNlbGVjdG1lbnUtYnV0dG9uLSIrKHRoaXMuaXNPcGVuPyJjbG9zZWQiOiJvcGVuIikp
Ll9hZGRDbGFzcyh0aGlzLmJ1dHRvbiwidWktc2VsZWN0bWVudS1idXR0b24tIisodGhpcy5pc09w
ZW4/Im9wZW4iOiJjbG9zZWQiKSkuX3RvZ2dsZUNsYXNzKHRoaXMubWVudVdyYXAsInVpLXNlbGVj
dG1lbnUtb3BlbiIsbnVsbCx0aGlzLmlzT3BlbiksdGhpcy5tZW51LmF0dHIoImFyaWEtaGlkZGVu
IiwhdGhpcy5pc09wZW4pfSxfcmVzaXplQnV0dG9uOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5vcHRp
b25zLndpZHRoO3JldHVybiB0PT09ITE/KHRoaXMuYnV0dG9uLmNzcygid2lkdGgiLCIiKSx2b2lk
IDApOihudWxsPT09dCYmKHQ9dGhpcy5lbGVtZW50LnNob3coKS5vdXRlcldpZHRoKCksdGhpcy5l
bGVtZW50LmhpZGUoKSksdGhpcy5idXR0b24ub3V0ZXJXaWR0aCh0KSx2b2lkIDApfSxfcmVzaXpl
TWVudTpmdW5jdGlvbigpe3RoaXMubWVudS5vdXRlcldpZHRoKE1hdGgubWF4KHRoaXMuYnV0dG9u
Lm91dGVyV2lkdGgoKSx0aGlzLm1lbnUud2lkdGgoIiIpLm91dGVyV2lkdGgoKSsxKSl9LF9nZXRD
cmVhdGVPcHRpb25zOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fc3VwZXIoKTtyZXR1cm4gdC5kaXNh
YmxlZD10aGlzLmVsZW1lbnQucHJvcCgiZGlzYWJsZWQiKSx0fSxfcGFyc2VPcHRpb25zOmZ1bmN0
aW9uKGUpe3ZhciBpPXRoaXMscz1bXTtlLmVhY2goZnVuY3Rpb24oZSxuKXtzLnB1c2goaS5fcGFy
c2VPcHRpb24odChuKSxlKSl9KSx0aGlzLml0ZW1zPXN9LF9wYXJzZU9wdGlvbjpmdW5jdGlvbih0
LGUpe3ZhciBpPXQucGFyZW50KCJvcHRncm91cCIpO3JldHVybntlbGVtZW50OnQsaW5kZXg6ZSx2
YWx1ZTp0LnZhbCgpLGxhYmVsOnQudGV4dCgpLG9wdGdyb3VwOmkuYXR0cigibGFiZWwiKXx8IiIs
ZGlzYWJsZWQ6aS5wcm9wKCJkaXNhYmxlZCIpfHx0LnByb3AoImRpc2FibGVkIil9fSxfZGVzdHJv
eTpmdW5jdGlvbigpe3RoaXMuX3VuYmluZEZvcm1SZXNldEhhbmRsZXIoKSx0aGlzLm1lbnVXcmFw
LnJlbW92ZSgpLHRoaXMuYnV0dG9uLnJlbW92ZSgpLHRoaXMuZWxlbWVudC5zaG93KCksdGhpcy5l
bGVtZW50LnJlbW92ZVVuaXF1ZUlkKCksdGhpcy5sYWJlbHMuYXR0cigiZm9yIix0aGlzLmlkcy5l
bGVtZW50KX19XSksdC53aWRnZXQoInVpLnNsaWRlciIsdC51aS5tb3VzZSx7dmVyc2lvbjoiMS4x
Mi4xIix3aWRnZXRFdmVudFByZWZpeDoic2xpZGUiLG9wdGlvbnM6e2FuaW1hdGU6ITEsY2xhc3Nl
czp7InVpLXNsaWRlciI6InVpLWNvcm5lci1hbGwiLCJ1aS1zbGlkZXItaGFuZGxlIjoidWktY29y
bmVyLWFsbCIsInVpLXNsaWRlci1yYW5nZSI6InVpLWNvcm5lci1hbGwgdWktd2lkZ2V0LWhlYWRl
ciJ9LGRpc3RhbmNlOjAsbWF4OjEwMCxtaW46MCxvcmllbnRhdGlvbjoiaG9yaXpvbnRhbCIscmFu
Z2U6ITEsc3RlcDoxLHZhbHVlOjAsdmFsdWVzOm51bGwsY2hhbmdlOm51bGwsc2xpZGU6bnVsbCxz
dGFydDpudWxsLHN0b3A6bnVsbH0sbnVtUGFnZXM6NSxfY3JlYXRlOmZ1bmN0aW9uKCl7dGhpcy5f
a2V5U2xpZGluZz0hMSx0aGlzLl9tb3VzZVNsaWRpbmc9ITEsdGhpcy5fYW5pbWF0ZU9mZj0hMCx0
aGlzLl9oYW5kbGVJbmRleD1udWxsLHRoaXMuX2RldGVjdE9yaWVudGF0aW9uKCksdGhpcy5fbW91
c2VJbml0KCksdGhpcy5fY2FsY3VsYXRlTmV3TWF4KCksdGhpcy5fYWRkQ2xhc3MoInVpLXNsaWRl
ciB1aS1zbGlkZXItIit0aGlzLm9yaWVudGF0aW9uLCJ1aS13aWRnZXQgdWktd2lkZ2V0LWNvbnRl
bnQiKSx0aGlzLl9yZWZyZXNoKCksdGhpcy5fYW5pbWF0ZU9mZj0hMQorfSxfcmVmcmVzaDpmdW5j
dGlvbigpe3RoaXMuX2NyZWF0ZVJhbmdlKCksdGhpcy5fY3JlYXRlSGFuZGxlcygpLHRoaXMuX3Nl
dHVwRXZlbnRzKCksdGhpcy5fcmVmcmVzaFZhbHVlKCl9LF9jcmVhdGVIYW5kbGVzOmZ1bmN0aW9u
KCl7dmFyIGUsaSxzPXRoaXMub3B0aW9ucyxuPXRoaXMuZWxlbWVudC5maW5kKCIudWktc2xpZGVy
LWhhbmRsZSIpLG89IjxzcGFuIHRhYmluZGV4PScwJz48L3NwYW4+IixhPVtdO2ZvcihpPXMudmFs
dWVzJiZzLnZhbHVlcy5sZW5ndGh8fDEsbi5sZW5ndGg+aSYmKG4uc2xpY2UoaSkucmVtb3ZlKCks
bj1uLnNsaWNlKDAsaSkpLGU9bi5sZW5ndGg7aT5lO2UrKylhLnB1c2gobyk7dGhpcy5oYW5kbGVz
PW4uYWRkKHQoYS5qb2luKCIiKSkuYXBwZW5kVG8odGhpcy5lbGVtZW50KSksdGhpcy5fYWRkQ2xh
c3ModGhpcy5oYW5kbGVzLCJ1aS1zbGlkZXItaGFuZGxlIiwidWktc3RhdGUtZGVmYXVsdCIpLHRo
aXMuaGFuZGxlPXRoaXMuaGFuZGxlcy5lcSgwKSx0aGlzLmhhbmRsZXMuZWFjaChmdW5jdGlvbihl
KXt0KHRoaXMpLmRhdGEoInVpLXNsaWRlci1oYW5kbGUtaW5kZXgiLGUpLmF0dHIoInRhYkluZGV4
IiwwKX0pfSxfY3JlYXRlUmFuZ2U6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm9wdGlvbnM7ZS5yYW5n
ZT8oZS5yYW5nZT09PSEwJiYoZS52YWx1ZXM/ZS52YWx1ZXMubGVuZ3RoJiYyIT09ZS52YWx1ZXMu
bGVuZ3RoP2UudmFsdWVzPVtlLnZhbHVlc1swXSxlLnZhbHVlc1swXV06dC5pc0FycmF5KGUudmFs
dWVzKSYmKGUudmFsdWVzPWUudmFsdWVzLnNsaWNlKDApKTplLnZhbHVlcz1bdGhpcy5fdmFsdWVN
aW4oKSx0aGlzLl92YWx1ZU1pbigpXSksdGhpcy5yYW5nZSYmdGhpcy5yYW5nZS5sZW5ndGg/KHRo
aXMuX3JlbW92ZUNsYXNzKHRoaXMucmFuZ2UsInVpLXNsaWRlci1yYW5nZS1taW4gdWktc2xpZGVy
LXJhbmdlLW1heCIpLHRoaXMucmFuZ2UuY3NzKHtsZWZ0OiIiLGJvdHRvbToiIn0pKToodGhpcy5y
YW5nZT10KCI8ZGl2PiIpLmFwcGVuZFRvKHRoaXMuZWxlbWVudCksdGhpcy5fYWRkQ2xhc3ModGhp
cy5yYW5nZSwidWktc2xpZGVyLXJhbmdlIikpLCgibWluIj09PWUucmFuZ2V8fCJtYXgiPT09ZS5y
YW5nZSkmJnRoaXMuX2FkZENsYXNzKHRoaXMucmFuZ2UsInVpLXNsaWRlci1yYW5nZS0iK2UucmFu
Z2UpKToodGhpcy5yYW5nZSYmdGhpcy5yYW5nZS5yZW1vdmUoKSx0aGlzLnJhbmdlPW51bGwpfSxf
c2V0dXBFdmVudHM6ZnVuY3Rpb24oKXt0aGlzLl9vZmYodGhpcy5oYW5kbGVzKSx0aGlzLl9vbih0
aGlzLmhhbmRsZXMsdGhpcy5faGFuZGxlRXZlbnRzKSx0aGlzLl9ob3ZlcmFibGUodGhpcy5oYW5k
bGVzKSx0aGlzLl9mb2N1c2FibGUodGhpcy5oYW5kbGVzKX0sX2Rlc3Ryb3k6ZnVuY3Rpb24oKXt0
aGlzLmhhbmRsZXMucmVtb3ZlKCksdGhpcy5yYW5nZSYmdGhpcy5yYW5nZS5yZW1vdmUoKSx0aGlz
Ll9tb3VzZURlc3Ryb3koKX0sX21vdXNlQ2FwdHVyZTpmdW5jdGlvbihlKXt2YXIgaSxzLG4sbyxh
LHIsaCxsLGM9dGhpcyx1PXRoaXMub3B0aW9ucztyZXR1cm4gdS5kaXNhYmxlZD8hMToodGhpcy5l
bGVtZW50U2l6ZT17d2lkdGg6dGhpcy5lbGVtZW50Lm91dGVyV2lkdGgoKSxoZWlnaHQ6dGhpcy5l
bGVtZW50Lm91dGVySGVpZ2h0KCl9LHRoaXMuZWxlbWVudE9mZnNldD10aGlzLmVsZW1lbnQub2Zm
c2V0KCksaT17eDplLnBhZ2VYLHk6ZS5wYWdlWX0scz10aGlzLl9ub3JtVmFsdWVGcm9tTW91c2Uo
aSksbj10aGlzLl92YWx1ZU1heCgpLXRoaXMuX3ZhbHVlTWluKCkrMSx0aGlzLmhhbmRsZXMuZWFj
aChmdW5jdGlvbihlKXt2YXIgaT1NYXRoLmFicyhzLWMudmFsdWVzKGUpKTsobj5pfHxuPT09aSYm
KGU9PT1jLl9sYXN0Q2hhbmdlZFZhbHVlfHxjLnZhbHVlcyhlKT09PXUubWluKSkmJihuPWksbz10
KHRoaXMpLGE9ZSl9KSxyPXRoaXMuX3N0YXJ0KGUsYSkscj09PSExPyExOih0aGlzLl9tb3VzZVNs
aWRpbmc9ITAsdGhpcy5faGFuZGxlSW5kZXg9YSx0aGlzLl9hZGRDbGFzcyhvLG51bGwsInVpLXN0
YXRlLWFjdGl2ZSIpLG8udHJpZ2dlcigiZm9jdXMiKSxoPW8ub2Zmc2V0KCksbD0hdChlLnRhcmdl
dCkucGFyZW50cygpLmFkZEJhY2soKS5pcygiLnVpLXNsaWRlci1oYW5kbGUiKSx0aGlzLl9jbGlj
a09mZnNldD1sP3tsZWZ0OjAsdG9wOjB9OntsZWZ0OmUucGFnZVgtaC5sZWZ0LW8ud2lkdGgoKS8y
LHRvcDplLnBhZ2VZLWgudG9wLW8uaGVpZ2h0KCkvMi0ocGFyc2VJbnQoby5jc3MoImJvcmRlclRv
cFdpZHRoIiksMTApfHwwKS0ocGFyc2VJbnQoby5jc3MoImJvcmRlckJvdHRvbVdpZHRoIiksMTAp
fHwwKSsocGFyc2VJbnQoby5jc3MoIm1hcmdpblRvcCIpLDEwKXx8MCl9LHRoaXMuaGFuZGxlcy5o
YXNDbGFzcygidWktc3RhdGUtaG92ZXIiKXx8dGhpcy5fc2xpZGUoZSxhLHMpLHRoaXMuX2FuaW1h
dGVPZmY9ITAsITApKX0sX21vdXNlU3RhcnQ6ZnVuY3Rpb24oKXtyZXR1cm4hMH0sX21vdXNlRHJh
ZzpmdW5jdGlvbih0KXt2YXIgZT17eDp0LnBhZ2VYLHk6dC5wYWdlWX0saT10aGlzLl9ub3JtVmFs
dWVGcm9tTW91c2UoZSk7cmV0dXJuIHRoaXMuX3NsaWRlKHQsdGhpcy5faGFuZGxlSW5kZXgsaSks
ITF9LF9tb3VzZVN0b3A6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3JlbW92ZUNsYXNzKHRoaXMu
aGFuZGxlcyxudWxsLCJ1aS1zdGF0ZS1hY3RpdmUiKSx0aGlzLl9tb3VzZVNsaWRpbmc9ITEsdGhp
cy5fc3RvcCh0LHRoaXMuX2hhbmRsZUluZGV4KSx0aGlzLl9jaGFuZ2UodCx0aGlzLl9oYW5kbGVJ
bmRleCksdGhpcy5faGFuZGxlSW5kZXg9bnVsbCx0aGlzLl9jbGlja09mZnNldD1udWxsLHRoaXMu
X2FuaW1hdGVPZmY9ITEsITF9LF9kZXRlY3RPcmllbnRhdGlvbjpmdW5jdGlvbigpe3RoaXMub3Jp
ZW50YXRpb249InZlcnRpY2FsIj09PXRoaXMub3B0aW9ucy5vcmllbnRhdGlvbj8idmVydGljYWwi
OiJob3Jpem9udGFsIn0sX25vcm1WYWx1ZUZyb21Nb3VzZTpmdW5jdGlvbih0KXt2YXIgZSxpLHMs
bixvO3JldHVybiJob3Jpem9udGFsIj09PXRoaXMub3JpZW50YXRpb24/KGU9dGhpcy5lbGVtZW50
U2l6ZS53aWR0aCxpPXQueC10aGlzLmVsZW1lbnRPZmZzZXQubGVmdC0odGhpcy5fY2xpY2tPZmZz
ZXQ/dGhpcy5fY2xpY2tPZmZzZXQubGVmdDowKSk6KGU9dGhpcy5lbGVtZW50U2l6ZS5oZWlnaHQs
aT10LnktdGhpcy5lbGVtZW50T2Zmc2V0LnRvcC0odGhpcy5fY2xpY2tPZmZzZXQ/dGhpcy5fY2xp
Y2tPZmZzZXQudG9wOjApKSxzPWkvZSxzPjEmJihzPTEpLDA+cyYmKHM9MCksInZlcnRpY2FsIj09
PXRoaXMub3JpZW50YXRpb24mJihzPTEtcyksbj10aGlzLl92YWx1ZU1heCgpLXRoaXMuX3ZhbHVl
TWluKCksbz10aGlzLl92YWx1ZU1pbigpK3Mqbix0aGlzLl90cmltQWxpZ25WYWx1ZShvKX0sX3Vp
SGFzaDpmdW5jdGlvbih0LGUsaSl7dmFyIHM9e2hhbmRsZTp0aGlzLmhhbmRsZXNbdF0saGFuZGxl
SW5kZXg6dCx2YWx1ZTp2b2lkIDAhPT1lP2U6dGhpcy52YWx1ZSgpfTtyZXR1cm4gdGhpcy5faGFz
TXVsdGlwbGVWYWx1ZXMoKSYmKHMudmFsdWU9dm9pZCAwIT09ZT9lOnRoaXMudmFsdWVzKHQpLHMu
dmFsdWVzPWl8fHRoaXMudmFsdWVzKCkpLHN9LF9oYXNNdWx0aXBsZVZhbHVlczpmdW5jdGlvbigp
e3JldHVybiB0aGlzLm9wdGlvbnMudmFsdWVzJiZ0aGlzLm9wdGlvbnMudmFsdWVzLmxlbmd0aH0s
X3N0YXJ0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuX3RyaWdnZXIoInN0YXJ0Iix0LHRoaXMu
X3VpSGFzaChlKSl9LF9zbGlkZTpmdW5jdGlvbih0LGUsaSl7dmFyIHMsbixvPXRoaXMudmFsdWUo
KSxhPXRoaXMudmFsdWVzKCk7dGhpcy5faGFzTXVsdGlwbGVWYWx1ZXMoKSYmKG49dGhpcy52YWx1
ZXMoZT8wOjEpLG89dGhpcy52YWx1ZXMoZSksMj09PXRoaXMub3B0aW9ucy52YWx1ZXMubGVuZ3Ro
JiZ0aGlzLm9wdGlvbnMucmFuZ2U9PT0hMCYmKGk9MD09PWU/TWF0aC5taW4obixpKTpNYXRoLm1h
eChuLGkpKSxhW2VdPWkpLGkhPT1vJiYocz10aGlzLl90cmlnZ2VyKCJzbGlkZSIsdCx0aGlzLl91
aUhhc2goZSxpLGEpKSxzIT09ITEmJih0aGlzLl9oYXNNdWx0aXBsZVZhbHVlcygpP3RoaXMudmFs
dWVzKGUsaSk6dGhpcy52YWx1ZShpKSkpfSxfc3RvcDpmdW5jdGlvbih0LGUpe3RoaXMuX3RyaWdn
ZXIoInN0b3AiLHQsdGhpcy5fdWlIYXNoKGUpKX0sX2NoYW5nZTpmdW5jdGlvbih0LGUpe3RoaXMu
X2tleVNsaWRpbmd8fHRoaXMuX21vdXNlU2xpZGluZ3x8KHRoaXMuX2xhc3RDaGFuZ2VkVmFsdWU9
ZSx0aGlzLl90cmlnZ2VyKCJjaGFuZ2UiLHQsdGhpcy5fdWlIYXNoKGUpKSl9LHZhbHVlOmZ1bmN0
aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0aGlzLm9wdGlvbnMudmFsdWU9dGhpcy5f
dHJpbUFsaWduVmFsdWUodCksdGhpcy5fcmVmcmVzaFZhbHVlKCksdGhpcy5fY2hhbmdlKG51bGws
MCksdm9pZCAwKTp0aGlzLl92YWx1ZSgpfSx2YWx1ZXM6ZnVuY3Rpb24oZSxpKXt2YXIgcyxuLG87
aWYoYXJndW1lbnRzLmxlbmd0aD4xKXJldHVybiB0aGlzLm9wdGlvbnMudmFsdWVzW2VdPXRoaXMu
X3RyaW1BbGlnblZhbHVlKGkpLHRoaXMuX3JlZnJlc2hWYWx1ZSgpLHRoaXMuX2NoYW5nZShudWxs
LGUpLHZvaWQgMDtpZighYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gdGhpcy5fdmFsdWVzKCk7aWYo
IXQuaXNBcnJheShhcmd1bWVudHNbMF0pKXJldHVybiB0aGlzLl9oYXNNdWx0aXBsZVZhbHVlcygp
P3RoaXMuX3ZhbHVlcyhlKTp0aGlzLnZhbHVlKCk7Zm9yKHM9dGhpcy5vcHRpb25zLnZhbHVlcyxu
PWFyZ3VtZW50c1swXSxvPTA7cy5sZW5ndGg+bztvKz0xKXNbb109dGhpcy5fdHJpbUFsaWduVmFs
dWUobltvXSksdGhpcy5fY2hhbmdlKG51bGwsbyk7dGhpcy5fcmVmcmVzaFZhbHVlKCl9LF9zZXRP
cHRpb246ZnVuY3Rpb24oZSxpKXt2YXIgcyxuPTA7c3dpdGNoKCJyYW5nZSI9PT1lJiZ0aGlzLm9w
dGlvbnMucmFuZ2U9PT0hMCYmKCJtaW4iPT09aT8odGhpcy5vcHRpb25zLnZhbHVlPXRoaXMuX3Zh
bHVlcygwKSx0aGlzLm9wdGlvbnMudmFsdWVzPW51bGwpOiJtYXgiPT09aSYmKHRoaXMub3B0aW9u
cy52YWx1ZT10aGlzLl92YWx1ZXModGhpcy5vcHRpb25zLnZhbHVlcy5sZW5ndGgtMSksdGhpcy5v
cHRpb25zLnZhbHVlcz1udWxsKSksdC5pc0FycmF5KHRoaXMub3B0aW9ucy52YWx1ZXMpJiYobj10
aGlzLm9wdGlvbnMudmFsdWVzLmxlbmd0aCksdGhpcy5fc3VwZXIoZSxpKSxlKXtjYXNlIm9yaWVu
dGF0aW9uIjp0aGlzLl9kZXRlY3RPcmllbnRhdGlvbigpLHRoaXMuX3JlbW92ZUNsYXNzKCJ1aS1z
bGlkZXItaG9yaXpvbnRhbCB1aS1zbGlkZXItdmVydGljYWwiKS5fYWRkQ2xhc3MoInVpLXNsaWRl
ci0iK3RoaXMub3JpZW50YXRpb24pLHRoaXMuX3JlZnJlc2hWYWx1ZSgpLHRoaXMub3B0aW9ucy5y
YW5nZSYmdGhpcy5fcmVmcmVzaFJhbmdlKGkpLHRoaXMuaGFuZGxlcy5jc3MoImhvcml6b250YWwi
PT09aT8iYm90dG9tIjoibGVmdCIsIiIpO2JyZWFrO2Nhc2UidmFsdWUiOnRoaXMuX2FuaW1hdGVP
ZmY9ITAsdGhpcy5fcmVmcmVzaFZhbHVlKCksdGhpcy5fY2hhbmdlKG51bGwsMCksdGhpcy5fYW5p
bWF0ZU9mZj0hMTticmVhaztjYXNlInZhbHVlcyI6Zm9yKHRoaXMuX2FuaW1hdGVPZmY9ITAsdGhp
cy5fcmVmcmVzaFZhbHVlKCkscz1uLTE7cz49MDtzLS0pdGhpcy5fY2hhbmdlKG51bGwscyk7dGhp
cy5fYW5pbWF0ZU9mZj0hMTticmVhaztjYXNlInN0ZXAiOmNhc2UibWluIjpjYXNlIm1heCI6dGhp
cy5fYW5pbWF0ZU9mZj0hMCx0aGlzLl9jYWxjdWxhdGVOZXdNYXgoKSx0aGlzLl9yZWZyZXNoVmFs
dWUoKSx0aGlzLl9hbmltYXRlT2ZmPSExO2JyZWFrO2Nhc2UicmFuZ2UiOnRoaXMuX2FuaW1hdGVP
ZmY9ITAsdGhpcy5fcmVmcmVzaCgpLHRoaXMuX2FuaW1hdGVPZmY9ITF9fSxfc2V0T3B0aW9uRGlz
YWJsZWQ6ZnVuY3Rpb24odCl7dGhpcy5fc3VwZXIodCksdGhpcy5fdG9nZ2xlQ2xhc3MobnVsbCwi
dWktc3RhdGUtZGlzYWJsZWQiLCEhdCl9LF92YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMub3B0
aW9ucy52YWx1ZTtyZXR1cm4gdD10aGlzLl90cmltQWxpZ25WYWx1ZSh0KX0sX3ZhbHVlczpmdW5j
dGlvbih0KXt2YXIgZSxpLHM7aWYoYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZT10aGlzLm9wdGlv
bnMudmFsdWVzW3RdLGU9dGhpcy5fdHJpbUFsaWduVmFsdWUoZSk7aWYodGhpcy5faGFzTXVsdGlw
bGVWYWx1ZXMoKSl7Zm9yKGk9dGhpcy5vcHRpb25zLnZhbHVlcy5zbGljZSgpLHM9MDtpLmxlbmd0
aD5zO3MrPTEpaVtzXT10aGlzLl90cmltQWxpZ25WYWx1ZShpW3NdKTtyZXR1cm4gaX1yZXR1cm5b
XX0sX3RyaW1BbGlnblZhbHVlOmZ1bmN0aW9uKHQpe2lmKHRoaXMuX3ZhbHVlTWluKCk+PXQpcmV0
dXJuIHRoaXMuX3ZhbHVlTWluKCk7aWYodD49dGhpcy5fdmFsdWVNYXgoKSlyZXR1cm4gdGhpcy5f
dmFsdWVNYXgoKTt2YXIgZT10aGlzLm9wdGlvbnMuc3RlcD4wP3RoaXMub3B0aW9ucy5zdGVwOjEs
aT0odC10aGlzLl92YWx1ZU1pbigpKSVlLHM9dC1pO3JldHVybiAyKk1hdGguYWJzKGkpPj1lJiYo
cys9aT4wP2U6LWUpLHBhcnNlRmxvYXQocy50b0ZpeGVkKDUpKX0sX2NhbGN1bGF0ZU5ld01heDpm
dW5jdGlvbigpe3ZhciB0PXRoaXMub3B0aW9ucy5tYXgsZT10aGlzLl92YWx1ZU1pbigpLGk9dGhp
cy5vcHRpb25zLnN0ZXAscz1NYXRoLnJvdW5kKCh0LWUpL2kpKmk7dD1zK2UsdD50aGlzLm9wdGlv
bnMubWF4JiYodC09aSksdGhpcy5tYXg9cGFyc2VGbG9hdCh0LnRvRml4ZWQodGhpcy5fcHJlY2lz
aW9uKCkpKX0sX3ByZWNpc2lvbjpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX3ByZWNpc2lvbk9mKHRo
aXMub3B0aW9ucy5zdGVwKTtyZXR1cm4gbnVsbCE9PXRoaXMub3B0aW9ucy5taW4mJih0PU1hdGgu
bWF4KHQsdGhpcy5fcHJlY2lzaW9uT2YodGhpcy5vcHRpb25zLm1pbikpKSx0fSxfcHJlY2lzaW9u
T2Y6ZnVuY3Rpb24odCl7dmFyIGU9IiIrdCxpPWUuaW5kZXhPZigiLiIpO3JldHVybi0xPT09aT8w
OmUubGVuZ3RoLWktMX0sX3ZhbHVlTWluOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3B0aW9ucy5t
aW59LF92YWx1ZU1heDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1heH0sX3JlZnJlc2hSYW5nZTpm
dW5jdGlvbih0KXsidmVydGljYWwiPT09dCYmdGhpcy5yYW5nZS5jc3Moe3dpZHRoOiIiLGxlZnQ6
IiJ9KSwiaG9yaXpvbnRhbCI9PT10JiZ0aGlzLnJhbmdlLmNzcyh7aGVpZ2h0OiIiLGJvdHRvbToi
In0pfSxfcmVmcmVzaFZhbHVlOmZ1bmN0aW9uKCl7dmFyIGUsaSxzLG4sbyxhPXRoaXMub3B0aW9u
cy5yYW5nZSxyPXRoaXMub3B0aW9ucyxoPXRoaXMsbD10aGlzLl9hbmltYXRlT2ZmPyExOnIuYW5p
bWF0ZSxjPXt9O3RoaXMuX2hhc011bHRpcGxlVmFsdWVzKCk/dGhpcy5oYW5kbGVzLmVhY2goZnVu
Y3Rpb24ocyl7aT0xMDAqKChoLnZhbHVlcyhzKS1oLl92YWx1ZU1pbigpKS8oaC5fdmFsdWVNYXgo
KS1oLl92YWx1ZU1pbigpKSksY1siaG9yaXpvbnRhbCI9PT1oLm9yaWVudGF0aW9uPyJsZWZ0Ijoi
Ym90dG9tIl09aSsiJSIsdCh0aGlzKS5zdG9wKDEsMSlbbD8iYW5pbWF0ZSI6ImNzcyJdKGMsci5h
bmltYXRlKSxoLm9wdGlvbnMucmFuZ2U9PT0hMCYmKCJob3Jpem9udGFsIj09PWgub3JpZW50YXRp
b24/KDA9PT1zJiZoLnJhbmdlLnN0b3AoMSwxKVtsPyJhbmltYXRlIjoiY3NzIl0oe2xlZnQ6aSsi
JSJ9LHIuYW5pbWF0ZSksMT09PXMmJmgucmFuZ2VbbD8iYW5pbWF0ZSI6ImNzcyJdKHt3aWR0aDpp
LWUrIiUifSx7cXVldWU6ITEsZHVyYXRpb246ci5hbmltYXRlfSkpOigwPT09cyYmaC5yYW5nZS5z
dG9wKDEsMSlbbD8iYW5pbWF0ZSI6ImNzcyJdKHtib3R0b206aSsiJSJ9LHIuYW5pbWF0ZSksMT09
PXMmJmgucmFuZ2VbbD8iYW5pbWF0ZSI6ImNzcyJdKHtoZWlnaHQ6aS1lKyIlIn0se3F1ZXVlOiEx
LGR1cmF0aW9uOnIuYW5pbWF0ZX0pKSksZT1pfSk6KHM9dGhpcy52YWx1ZSgpLG49dGhpcy5fdmFs
dWVNaW4oKSxvPXRoaXMuX3ZhbHVlTWF4KCksaT1vIT09bj8xMDAqKChzLW4pLyhvLW4pKTowLGNb
Imhvcml6b250YWwiPT09dGhpcy5vcmllbnRhdGlvbj8ibGVmdCI6ImJvdHRvbSJdPWkrIiUiLHRo
aXMuaGFuZGxlLnN0b3AoMSwxKVtsPyJhbmltYXRlIjoiY3NzIl0oYyxyLmFuaW1hdGUpLCJtaW4i
PT09YSYmImhvcml6b250YWwiPT09dGhpcy5vcmllbnRhdGlvbiYmdGhpcy5yYW5nZS5zdG9wKDEs
MSlbbD8iYW5pbWF0ZSI6ImNzcyJdKHt3aWR0aDppKyIlIn0sci5hbmltYXRlKSwibWF4Ij09PWEm
JiJob3Jpem9udGFsIj09PXRoaXMub3JpZW50YXRpb24mJnRoaXMucmFuZ2Uuc3RvcCgxLDEpW2w/
ImFuaW1hdGUiOiJjc3MiXSh7d2lkdGg6MTAwLWkrIiUifSxyLmFuaW1hdGUpLCJtaW4iPT09YSYm
InZlcnRpY2FsIj09PXRoaXMub3JpZW50YXRpb24mJnRoaXMucmFuZ2Uuc3RvcCgxLDEpW2w/ImFu
aW1hdGUiOiJjc3MiXSh7aGVpZ2h0OmkrIiUifSxyLmFuaW1hdGUpLCJtYXgiPT09YSYmInZlcnRp
Y2FsIj09PXRoaXMub3JpZW50YXRpb24mJnRoaXMucmFuZ2Uuc3RvcCgxLDEpW2w/ImFuaW1hdGUi
OiJjc3MiXSh7aGVpZ2h0OjEwMC1pKyIlIn0sci5hbmltYXRlKSl9LF9oYW5kbGVFdmVudHM6e2tl
eWRvd246ZnVuY3Rpb24oZSl7dmFyIGkscyxuLG8sYT10KGUudGFyZ2V0KS5kYXRhKCJ1aS1zbGlk
ZXItaGFuZGxlLWluZGV4Iik7c3dpdGNoKGUua2V5Q29kZSl7Y2FzZSB0LnVpLmtleUNvZGUuSE9N
RTpjYXNlIHQudWkua2V5Q29kZS5FTkQ6Y2FzZSB0LnVpLmtleUNvZGUuUEFHRV9VUDpjYXNlIHQu
dWkua2V5Q29kZS5QQUdFX0RPV046Y2FzZSB0LnVpLmtleUNvZGUuVVA6Y2FzZSB0LnVpLmtleUNv
ZGUuUklHSFQ6Y2FzZSB0LnVpLmtleUNvZGUuRE9XTjpjYXNlIHQudWkua2V5Q29kZS5MRUZUOmlm
KGUucHJldmVudERlZmF1bHQoKSwhdGhpcy5fa2V5U2xpZGluZyYmKHRoaXMuX2tleVNsaWRpbmc9
ITAsdGhpcy5fYWRkQ2xhc3ModChlLnRhcmdldCksbnVsbCwidWktc3RhdGUtYWN0aXZlIiksaT10
aGlzLl9zdGFydChlLGEpLGk9PT0hMSkpcmV0dXJufXN3aXRjaChvPXRoaXMub3B0aW9ucy5zdGVw
LHM9bj10aGlzLl9oYXNNdWx0aXBsZVZhbHVlcygpP3RoaXMudmFsdWVzKGEpOnRoaXMudmFsdWUo
KSxlLmtleUNvZGUpe2Nhc2UgdC51aS5rZXlDb2RlLkhPTUU6bj10aGlzLl92YWx1ZU1pbigpO2Jy
ZWFrO2Nhc2UgdC51aS5rZXlDb2RlLkVORDpuPXRoaXMuX3ZhbHVlTWF4KCk7YnJlYWs7Y2FzZSB0
LnVpLmtleUNvZGUuUEFHRV9VUDpuPXRoaXMuX3RyaW1BbGlnblZhbHVlKHMrKHRoaXMuX3ZhbHVl
TWF4KCktdGhpcy5fdmFsdWVNaW4oKSkvdGhpcy5udW1QYWdlcyk7YnJlYWs7Y2FzZSB0LnVpLmtl
eUNvZGUuUEFHRV9ET1dOOm49dGhpcy5fdHJpbUFsaWduVmFsdWUocy0odGhpcy5fdmFsdWVNYXgo
KS10aGlzLl92YWx1ZU1pbigpKS90aGlzLm51bVBhZ2VzKTticmVhaztjYXNlIHQudWkua2V5Q29k
ZS5VUDpjYXNlIHQudWkua2V5Q29kZS5SSUdIVDppZihzPT09dGhpcy5fdmFsdWVNYXgoKSlyZXR1
cm47bj10aGlzLl90cmltQWxpZ25WYWx1ZShzK28pO2JyZWFrO2Nhc2UgdC51aS5rZXlDb2RlLkRP
V046Y2FzZSB0LnVpLmtleUNvZGUuTEVGVDppZihzPT09dGhpcy5fdmFsdWVNaW4oKSlyZXR1cm47
bj10aGlzLl90cmltQWxpZ25WYWx1ZShzLW8pfXRoaXMuX3NsaWRlKGUsYSxuKX0sa2V5dXA6ZnVu
Y3Rpb24oZSl7dmFyIGk9dChlLnRhcmdldCkuZGF0YSgidWktc2xpZGVyLWhhbmRsZS1pbmRleCIp
O3RoaXMuX2tleVNsaWRpbmcmJih0aGlzLl9rZXlTbGlkaW5nPSExLHRoaXMuX3N0b3AoZSxpKSx0
aGlzLl9jaGFuZ2UoZSxpKSx0aGlzLl9yZW1vdmVDbGFzcyh0KGUudGFyZ2V0KSxudWxsLCJ1aS1z
dGF0ZS1hY3RpdmUiKSl9fX0pLHQud2lkZ2V0KCJ1aS5zb3J0YWJsZSIsdC51aS5tb3VzZSx7dmVy
c2lvbjoiMS4xMi4xIix3aWRnZXRFdmVudFByZWZpeDoic29ydCIscmVhZHk6ITEsb3B0aW9uczp7
YXBwZW5kVG86InBhcmVudCIsYXhpczohMSxjb25uZWN0V2l0aDohMSxjb250YWlubWVudDohMSxj
dXJzb3I6ImF1dG8iLGN1cnNvckF0OiExLGRyb3BPbkVtcHR5OiEwLGZvcmNlUGxhY2Vob2xkZXJT
aXplOiExLGZvcmNlSGVscGVyU2l6ZTohMSxncmlkOiExLGhhbmRsZTohMSxoZWxwZXI6Im9yaWdp
bmFsIixpdGVtczoiPiAqIixvcGFjaXR5OiExLHBsYWNlaG9sZGVyOiExLHJldmVydDohMSxzY3Jv
bGw6ITAsc2Nyb2xsU2Vuc2l0aXZpdHk6MjAsc2Nyb2xsU3BlZWQ6MjAsc2NvcGU6ImRlZmF1bHQi
LHRvbGVyYW5jZToiaW50ZXJzZWN0Iix6SW5kZXg6MWUzLGFjdGl2YXRlOm51bGwsYmVmb3JlU3Rv
cDpudWxsLGNoYW5nZTpudWxsLGRlYWN0aXZhdGU6bnVsbCxvdXQ6bnVsbCxvdmVyOm51bGwscmVj
ZWl2ZTpudWxsLHJlbW92ZTpudWxsLHNvcnQ6bnVsbCxzdGFydDpudWxsLHN0b3A6bnVsbCx1cGRh
dGU6bnVsbH0sX2lzT3ZlckF4aXM6ZnVuY3Rpb24odCxlLGkpe3JldHVybiB0Pj1lJiZlK2k+dH0s
X2lzRmxvYXRpbmc6ZnVuY3Rpb24odCl7cmV0dXJuL2xlZnR8cmlnaHQvLnRlc3QodC5jc3MoImZs
b2F0IikpfHwvaW5saW5lfHRhYmxlLWNlbGwvLnRlc3QodC5jc3MoImRpc3BsYXkiKSl9LF9jcmVh
dGU6ZnVuY3Rpb24oKXt0aGlzLmNvbnRhaW5lckNhY2hlPXt9LHRoaXMuX2FkZENsYXNzKCJ1aS1z
b3J0YWJsZSIpLHRoaXMucmVmcmVzaCgpLHRoaXMub2Zmc2V0PXRoaXMuZWxlbWVudC5vZmZzZXQo
KSx0aGlzLl9tb3VzZUluaXQoKSx0aGlzLl9zZXRIYW5kbGVDbGFzc05hbWUoKSx0aGlzLnJlYWR5
PSEwfSxfc2V0T3B0aW9uOmZ1bmN0aW9uKHQsZSl7dGhpcy5fc3VwZXIodCxlKSwiaGFuZGxlIj09
PXQmJnRoaXMuX3NldEhhbmRsZUNsYXNzTmFtZSgpfSxfc2V0SGFuZGxlQ2xhc3NOYW1lOmZ1bmN0
aW9uKCl7dmFyIGU9dGhpczt0aGlzLl9yZW1vdmVDbGFzcyh0aGlzLmVsZW1lbnQuZmluZCgiLnVp
LXNvcnRhYmxlLWhhbmRsZSIpLCJ1aS1zb3J0YWJsZS1oYW5kbGUiKSx0LmVhY2godGhpcy5pdGVt
cyxmdW5jdGlvbigpe2UuX2FkZENsYXNzKHRoaXMuaW5zdGFuY2Uub3B0aW9ucy5oYW5kbGU/dGhp
cy5pdGVtLmZpbmQodGhpcy5pbnN0YW5jZS5vcHRpb25zLmhhbmRsZSk6dGhpcy5pdGVtLCJ1aS1z
b3J0YWJsZS1oYW5kbGUiKX0pfSxfZGVzdHJveTpmdW5jdGlvbigpe3RoaXMuX21vdXNlRGVzdHJv
eSgpO2Zvcih2YXIgdD10aGlzLml0ZW1zLmxlbmd0aC0xO3Q+PTA7dC0tKXRoaXMuaXRlbXNbdF0u
aXRlbS5yZW1vdmVEYXRhKHRoaXMud2lkZ2V0TmFtZSsiLWl0ZW0iKTtyZXR1cm4gdGhpc30sX21v
dXNlQ2FwdHVyZTpmdW5jdGlvbihlLGkpe3ZhciBzPW51bGwsbj0hMSxvPXRoaXM7cmV0dXJuIHRo
aXMucmV2ZXJ0aW5nPyExOnRoaXMub3B0aW9ucy5kaXNhYmxlZHx8InN0YXRpYyI9PT10aGlzLm9w
dGlvbnMudHlwZT8hMToodGhpcy5fcmVmcmVzaEl0ZW1zKGUpLHQoZS50YXJnZXQpLnBhcmVudHMo
KS5lYWNoKGZ1bmN0aW9uKCl7cmV0dXJuIHQuZGF0YSh0aGlzLG8ud2lkZ2V0TmFtZSsiLWl0ZW0i
KT09PW8/KHM9dCh0aGlzKSwhMSk6dm9pZCAwfSksdC5kYXRhKGUudGFyZ2V0LG8ud2lkZ2V0TmFt
ZSsiLWl0ZW0iKT09PW8mJihzPXQoZS50YXJnZXQpKSxzPyF0aGlzLm9wdGlvbnMuaGFuZGxlfHxp
fHwodCh0aGlzLm9wdGlvbnMuaGFuZGxlLHMpLmZpbmQoIioiKS5hZGRCYWNrKCkuZWFjaChmdW5j
dGlvbigpe3RoaXM9PT1lLnRhcmdldCYmKG49ITApfSksbik/KHRoaXMuY3VycmVudEl0ZW09cyx0
aGlzLl9yZW1vdmVDdXJyZW50c0Zyb21JdGVtcygpLCEwKTohMTohMSl9LF9tb3VzZVN0YXJ0OmZ1
bmN0aW9uKGUsaSxzKXt2YXIgbixvLGE9dGhpcy5vcHRpb25zO2lmKHRoaXMuY3VycmVudENvbnRh
aW5lcj10aGlzLHRoaXMucmVmcmVzaFBvc2l0aW9ucygpLHRoaXMuaGVscGVyPXRoaXMuX2NyZWF0
ZUhlbHBlcihlKSx0aGlzLl9jYWNoZUhlbHBlclByb3BvcnRpb25zKCksdGhpcy5fY2FjaGVNYXJn
aW5zKCksdGhpcy5zY3JvbGxQYXJlbnQ9dGhpcy5oZWxwZXIuc2Nyb2xsUGFyZW50KCksdGhpcy5v
ZmZzZXQ9dGhpcy5jdXJyZW50SXRlbS5vZmZzZXQoKSx0aGlzLm9mZnNldD17dG9wOnRoaXMub2Zm
c2V0LnRvcC10aGlzLm1hcmdpbnMudG9wLGxlZnQ6dGhpcy5vZmZzZXQubGVmdC10aGlzLm1hcmdp
bnMubGVmdH0sdC5leHRlbmQodGhpcy5vZmZzZXQse2NsaWNrOntsZWZ0OmUucGFnZVgtdGhpcy5v
ZmZzZXQubGVmdCx0b3A6ZS5wYWdlWS10aGlzLm9mZnNldC50b3B9LHBhcmVudDp0aGlzLl9nZXRQ
YXJlbnRPZmZzZXQoKSxyZWxhdGl2ZTp0aGlzLl9nZXRSZWxhdGl2ZU9mZnNldCgpfSksdGhpcy5o
ZWxwZXIuY3NzKCJwb3NpdGlvbiIsImFic29sdXRlIiksdGhpcy5jc3NQb3NpdGlvbj10aGlzLmhl
bHBlci5jc3MoInBvc2l0aW9uIiksdGhpcy5vcmlnaW5hbFBvc2l0aW9uPXRoaXMuX2dlbmVyYXRl
UG9zaXRpb24oZSksdGhpcy5vcmlnaW5hbFBhZ2VYPWUucGFnZVgsdGhpcy5vcmlnaW5hbFBhZ2VZ
PWUucGFnZVksYS5jdXJzb3JBdCYmdGhpcy5fYWRqdXN0T2Zmc2V0RnJvbUhlbHBlcihhLmN1cnNv
ckF0KSx0aGlzLmRvbVBvc2l0aW9uPXtwcmV2OnRoaXMuY3VycmVudEl0ZW0ucHJldigpWzBdLHBh
cmVudDp0aGlzLmN1cnJlbnRJdGVtLnBhcmVudCgpWzBdfSx0aGlzLmhlbHBlclswXSE9PXRoaXMu
Y3VycmVudEl0ZW1bMF0mJnRoaXMuY3VycmVudEl0ZW0uaGlkZSgpLHRoaXMuX2NyZWF0ZVBsYWNl
aG9sZGVyKCksYS5jb250YWlubWVudCYmdGhpcy5fc2V0Q29udGFpbm1lbnQoKSxhLmN1cnNvciYm
ImF1dG8iIT09YS5jdXJzb3ImJihvPXRoaXMuZG9jdW1lbnQuZmluZCgiYm9keSIpLHRoaXMuc3Rv
cmVkQ3Vyc29yPW8uY3NzKCJjdXJzb3IiKSxvLmNzcygiY3Vyc29yIixhLmN1cnNvciksdGhpcy5z
dG9yZWRTdHlsZXNoZWV0PXQoIjxzdHlsZT4qeyBjdXJzb3I6ICIrYS5jdXJzb3IrIiAhaW1wb3J0
YW50OyB9PC9zdHlsZT4iKS5hcHBlbmRUbyhvKSksYS5vcGFjaXR5JiYodGhpcy5oZWxwZXIuY3Nz
KCJvcGFjaXR5IikmJih0aGlzLl9zdG9yZWRPcGFjaXR5PXRoaXMuaGVscGVyLmNzcygib3BhY2l0
eSIpKSx0aGlzLmhlbHBlci5jc3MoIm9wYWNpdHkiLGEub3BhY2l0eSkpLGEuekluZGV4JiYodGhp
cy5oZWxwZXIuY3NzKCJ6SW5kZXgiKSYmKHRoaXMuX3N0b3JlZFpJbmRleD10aGlzLmhlbHBlci5j
c3MoInpJbmRleCIpKSx0aGlzLmhlbHBlci5jc3MoInpJbmRleCIsYS56SW5kZXgpKSx0aGlzLnNj
cm9sbFBhcmVudFswXSE9PXRoaXMuZG9jdW1lbnRbMF0mJiJIVE1MIiE9PXRoaXMuc2Nyb2xsUGFy
ZW50WzBdLnRhZ05hbWUmJih0aGlzLm92ZXJmbG93T2Zmc2V0PXRoaXMuc2Nyb2xsUGFyZW50Lm9m
ZnNldCgpKSx0aGlzLl90cmlnZ2VyKCJzdGFydCIsZSx0aGlzLl91aUhhc2goKSksdGhpcy5fcHJl
c2VydmVIZWxwZXJQcm9wb3J0aW9uc3x8dGhpcy5fY2FjaGVIZWxwZXJQcm9wb3J0aW9ucygpLCFz
KWZvcihuPXRoaXMuY29udGFpbmVycy5sZW5ndGgtMTtuPj0wO24tLSl0aGlzLmNvbnRhaW5lcnNb
bl0uX3RyaWdnZXIoImFjdGl2YXRlIixlLHRoaXMuX3VpSGFzaCh0aGlzKSk7cmV0dXJuIHQudWku
ZGRtYW5hZ2VyJiYodC51aS5kZG1hbmFnZXIuY3VycmVudD10aGlzKSx0LnVpLmRkbWFuYWdlciYm
IWEuZHJvcEJlaGF2aW91ciYmdC51aS5kZG1hbmFnZXIucHJlcGFyZU9mZnNldHModGhpcyxlKSx0
aGlzLmRyYWdnaW5nPSEwLHRoaXMuX2FkZENsYXNzKHRoaXMuaGVscGVyLCJ1aS1zb3J0YWJsZS1o
ZWxwZXIiKSx0aGlzLl9tb3VzZURyYWcoZSksITB9LF9tb3VzZURyYWc6ZnVuY3Rpb24oZSl7dmFy
IGkscyxuLG8sYT10aGlzLm9wdGlvbnMscj0hMTtmb3IodGhpcy5wb3NpdGlvbj10aGlzLl9nZW5l
cmF0ZVBvc2l0aW9uKGUpLHRoaXMucG9zaXRpb25BYnM9dGhpcy5fY29udmVydFBvc2l0aW9uVG8o
ImFic29sdXRlIiksdGhpcy5sYXN0UG9zaXRpb25BYnN8fCh0aGlzLmxhc3RQb3NpdGlvbkFicz10
aGlzLnBvc2l0aW9uQWJzKSx0aGlzLm9wdGlvbnMuc2Nyb2xsJiYodGhpcy5zY3JvbGxQYXJlbnRb
MF0hPT10aGlzLmRvY3VtZW50WzBdJiYiSFRNTCIhPT10aGlzLnNjcm9sbFBhcmVudFswXS50YWdO
YW1lPyh0aGlzLm92ZXJmbG93T2Zmc2V0LnRvcCt0aGlzLnNjcm9sbFBhcmVudFswXS5vZmZzZXRI
ZWlnaHQtZS5wYWdlWTxhLnNjcm9sbFNlbnNpdGl2aXR5P3RoaXMuc2Nyb2xsUGFyZW50WzBdLnNj
cm9sbFRvcD1yPXRoaXMuc2Nyb2xsUGFyZW50WzBdLnNjcm9sbFRvcCthLnNjcm9sbFNwZWVkOmUu
cGFnZVktdGhpcy5vdmVyZmxvd09mZnNldC50b3A8YS5zY3JvbGxTZW5zaXRpdml0eSYmKHRoaXMu
c2Nyb2xsUGFyZW50WzBdLnNjcm9sbFRvcD1yPXRoaXMuc2Nyb2xsUGFyZW50WzBdLnNjcm9sbFRv
cC1hLnNjcm9sbFNwZWVkKSx0aGlzLm92ZXJmbG93T2Zmc2V0LmxlZnQrdGhpcy5zY3JvbGxQYXJl
bnRbMF0ub2Zmc2V0V2lkdGgtZS5wYWdlWDxhLnNjcm9sbFNlbnNpdGl2aXR5P3RoaXMuc2Nyb2xs
UGFyZW50WzBdLnNjcm9sbExlZnQ9cj10aGlzLnNjcm9sbFBhcmVudFswXS5zY3JvbGxMZWZ0K2Eu
c2Nyb2xsU3BlZWQ6ZS5wYWdlWC10aGlzLm92ZXJmbG93T2Zmc2V0LmxlZnQ8YS5zY3JvbGxTZW5z
aXRpdml0eSYmKHRoaXMuc2Nyb2xsUGFyZW50WzBdLnNjcm9sbExlZnQ9cj10aGlzLnNjcm9sbFBh
cmVudFswXS5zY3JvbGxMZWZ0LWEuc2Nyb2xsU3BlZWQpKTooZS5wYWdlWS10aGlzLmRvY3VtZW50
LnNjcm9sbFRvcCgpPGEuc2Nyb2xsU2Vuc2l0aXZpdHk/cj10aGlzLmRvY3VtZW50LnNjcm9sbFRv
cCh0aGlzLmRvY3VtZW50LnNjcm9sbFRvcCgpLWEuc2Nyb2xsU3BlZWQpOnRoaXMud2luZG93Lmhl
aWdodCgpLShlLnBhZ2VZLXRoaXMuZG9jdW1lbnQuc2Nyb2xsVG9wKCkpPGEuc2Nyb2xsU2Vuc2l0
aXZpdHkmJihyPXRoaXMuZG9jdW1lbnQuc2Nyb2xsVG9wKHRoaXMuZG9jdW1lbnQuc2Nyb2xsVG9w
KCkrYS5zY3JvbGxTcGVlZCkpLGUucGFnZVgtdGhpcy5kb2N1bWVudC5zY3JvbGxMZWZ0KCk8YS5z
Y3JvbGxTZW5zaXRpdml0eT9yPXRoaXMuZG9jdW1lbnQuc2Nyb2xsTGVmdCh0aGlzLmRvY3VtZW50
LnNjcm9sbExlZnQoKS1hLnNjcm9sbFNwZWVkKTp0aGlzLndpbmRvdy53aWR0aCgpLShlLnBhZ2VY
LXRoaXMuZG9jdW1lbnQuc2Nyb2xsTGVmdCgpKTxhLnNjcm9sbFNlbnNpdGl2aXR5JiYocj10aGlz
LmRvY3VtZW50LnNjcm9sbExlZnQodGhpcy5kb2N1bWVudC5zY3JvbGxMZWZ0KCkrYS5zY3JvbGxT
cGVlZCkpKSxyIT09ITEmJnQudWkuZGRtYW5hZ2VyJiYhYS5kcm9wQmVoYXZpb3VyJiZ0LnVpLmRk
bWFuYWdlci5wcmVwYXJlT2Zmc2V0cyh0aGlzLGUpKSx0aGlzLnBvc2l0aW9uQWJzPXRoaXMuX2Nv
bnZlcnRQb3NpdGlvblRvKCJhYnNvbHV0ZSIpLHRoaXMub3B0aW9ucy5heGlzJiYieSI9PT10aGlz
Lm9wdGlvbnMuYXhpc3x8KHRoaXMuaGVscGVyWzBdLnN0eWxlLmxlZnQ9dGhpcy5wb3NpdGlvbi5s
ZWZ0KyJweCIpLHRoaXMub3B0aW9ucy5heGlzJiYieCI9PT10aGlzLm9wdGlvbnMuYXhpc3x8KHRo
aXMuaGVscGVyWzBdLnN0eWxlLnRvcD10aGlzLnBvc2l0aW9uLnRvcCsicHgiKSxpPXRoaXMuaXRl
bXMubGVuZ3RoLTE7aT49MDtpLS0paWYocz10aGlzLml0ZW1zW2ldLG49cy5pdGVtWzBdLG89dGhp
cy5faW50ZXJzZWN0c1dpdGhQb2ludGVyKHMpLG8mJnMuaW5zdGFuY2U9PT10aGlzLmN1cnJlbnRD
b250YWluZXImJm4hPT10aGlzLmN1cnJlbnRJdGVtWzBdJiZ0aGlzLnBsYWNlaG9sZGVyWzE9PT1v
PyJuZXh0IjoicHJldiJdKClbMF0hPT1uJiYhdC5jb250YWlucyh0aGlzLnBsYWNlaG9sZGVyWzBd
LG4pJiYoInNlbWktZHluYW1pYyI9PT10aGlzLm9wdGlvbnMudHlwZT8hdC5jb250YWlucyh0aGlz
LmVsZW1lbnRbMF0sbik6ITApKXtpZih0aGlzLmRpcmVjdGlvbj0xPT09bz8iZG93biI6InVwIiwi
cG9pbnRlciIhPT10aGlzLm9wdGlvbnMudG9sZXJhbmNlJiYhdGhpcy5faW50ZXJzZWN0c1dpdGhT
aWRlcyhzKSlicmVhazt0aGlzLl9yZWFycmFuZ2UoZSxzKSx0aGlzLl90cmlnZ2VyKCJjaGFuZ2Ui
LGUsdGhpcy5fdWlIYXNoKCkpO2JyZWFrfXJldHVybiB0aGlzLl9jb250YWN0Q29udGFpbmVycyhl
KSx0LnVpLmRkbWFuYWdlciYmdC51aS5kZG1hbmFnZXIuZHJhZyh0aGlzLGUpLHRoaXMuX3RyaWdn
ZXIoInNvcnQiLGUsdGhpcy5fdWlIYXNoKCkpLHRoaXMubGFzdFBvc2l0aW9uQWJzPXRoaXMucG9z
aXRpb25BYnMsITF9LF9tb3VzZVN0b3A6ZnVuY3Rpb24oZSxpKXtpZihlKXtpZih0LnVpLmRkbWFu
YWdlciYmIXRoaXMub3B0aW9ucy5kcm9wQmVoYXZpb3VyJiZ0LnVpLmRkbWFuYWdlci5kcm9wKHRo
aXMsZSksdGhpcy5vcHRpb25zLnJldmVydCl7dmFyIHM9dGhpcyxuPXRoaXMucGxhY2Vob2xkZXIu
b2Zmc2V0KCksbz10aGlzLm9wdGlvbnMuYXhpcyxhPXt9O28mJiJ4IiE9PW98fChhLmxlZnQ9bi5s
ZWZ0LXRoaXMub2Zmc2V0LnBhcmVudC5sZWZ0LXRoaXMubWFyZ2lucy5sZWZ0Kyh0aGlzLm9mZnNl
dFBhcmVudFswXT09PXRoaXMuZG9jdW1lbnRbMF0uYm9keT8wOnRoaXMub2Zmc2V0UGFyZW50WzBd
LnNjcm9sbExlZnQpKSxvJiYieSIhPT1vfHwoYS50b3A9bi50b3AtdGhpcy5vZmZzZXQucGFyZW50
LnRvcC10aGlzLm1hcmdpbnMudG9wKyh0aGlzLm9mZnNldFBhcmVudFswXT09PXRoaXMuZG9jdW1l
bnRbMF0uYm9keT8wOnRoaXMub2Zmc2V0UGFyZW50WzBdLnNjcm9sbFRvcCkpLHRoaXMucmV2ZXJ0
aW5nPSEwLHQodGhpcy5oZWxwZXIpLmFuaW1hdGUoYSxwYXJzZUludCh0aGlzLm9wdGlvbnMucmV2
ZXJ0LDEwKXx8NTAwLGZ1bmN0aW9uKCl7cy5fY2xlYXIoZSl9KX1lbHNlIHRoaXMuX2NsZWFyKGUs
aSk7cmV0dXJuITF9fSxjYW5jZWw6ZnVuY3Rpb24oKXtpZih0aGlzLmRyYWdnaW5nKXt0aGlzLl9t
b3VzZVVwKG5ldyB0LkV2ZW50KCJtb3VzZXVwIix7dGFyZ2V0Om51bGx9KSksIm9yaWdpbmFsIj09
PXRoaXMub3B0aW9ucy5oZWxwZXI/KHRoaXMuY3VycmVudEl0ZW0uY3NzKHRoaXMuX3N0b3JlZENT
UyksdGhpcy5fcmVtb3ZlQ2xhc3ModGhpcy5jdXJyZW50SXRlbSwidWktc29ydGFibGUtaGVscGVy
IikpOnRoaXMuY3VycmVudEl0ZW0uc2hvdygpO2Zvcih2YXIgZT10aGlzLmNvbnRhaW5lcnMubGVu
Z3RoLTE7ZT49MDtlLS0pdGhpcy5jb250YWluZXJzW2VdLl90cmlnZ2VyKCJkZWFjdGl2YXRlIixu
dWxsLHRoaXMuX3VpSGFzaCh0aGlzKSksdGhpcy5jb250YWluZXJzW2VdLmNvbnRhaW5lckNhY2hl
Lm92ZXImJih0aGlzLmNvbnRhaW5lcnNbZV0uX3RyaWdnZXIoIm91dCIsbnVsbCx0aGlzLl91aUhh
c2godGhpcykpLHRoaXMuY29udGFpbmVyc1tlXS5jb250YWluZXJDYWNoZS5vdmVyPTApfXJldHVy
biB0aGlzLnBsYWNlaG9sZGVyJiYodGhpcy5wbGFjZWhvbGRlclswXS5wYXJlbnROb2RlJiZ0aGlz
LnBsYWNlaG9sZGVyWzBdLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5wbGFjZWhvbGRlclsw
XSksIm9yaWdpbmFsIiE9PXRoaXMub3B0aW9ucy5oZWxwZXImJnRoaXMuaGVscGVyJiZ0aGlzLmhl
bHBlclswXS5wYXJlbnROb2RlJiZ0aGlzLmhlbHBlci5yZW1vdmUoKSx0LmV4dGVuZCh0aGlzLHto
ZWxwZXI6bnVsbCxkcmFnZ2luZzohMSxyZXZlcnRpbmc6ITEsX25vRmluYWxTb3J0Om51bGx9KSx0
aGlzLmRvbVBvc2l0aW9uLnByZXY/dCh0aGlzLmRvbVBvc2l0aW9uLnByZXYpLmFmdGVyKHRoaXMu
Y3VycmVudEl0ZW0pOnQodGhpcy5kb21Qb3NpdGlvbi5wYXJlbnQpLnByZXBlbmQodGhpcy5jdXJy
ZW50SXRlbSkpLHRoaXN9LHNlcmlhbGl6ZTpmdW5jdGlvbihlKXt2YXIgaT10aGlzLl9nZXRJdGVt
c0FzalF1ZXJ5KGUmJmUuY29ubmVjdGVkKSxzPVtdO3JldHVybiBlPWV8fHt9LHQoaSkuZWFjaChm
dW5jdGlvbigpe3ZhciBpPSh0KGUuaXRlbXx8dGhpcykuYXR0cihlLmF0dHJpYnV0ZXx8ImlkIil8
fCIiKS5tYXRjaChlLmV4cHJlc3Npb258fC8oLispW1wtPV9dKC4rKS8pO2kmJnMucHVzaCgoZS5r
ZXl8fGlbMV0rIltdIikrIj0iKyhlLmtleSYmZS5leHByZXNzaW9uP2lbMV06aVsyXSkpfSksIXMu
bGVuZ3RoJiZlLmtleSYmcy5wdXNoKGUua2V5KyI9Iikscy5qb2luKCImIil9LHRvQXJyYXk6ZnVu
Y3Rpb24oZSl7dmFyIGk9dGhpcy5fZ2V0SXRlbXNBc2pRdWVyeShlJiZlLmNvbm5lY3RlZCkscz1b
XTtyZXR1cm4gZT1lfHx7fSxpLmVhY2goZnVuY3Rpb24oKXtzLnB1c2godChlLml0ZW18fHRoaXMp
LmF0dHIoZS5hdHRyaWJ1dGV8fCJpZCIpfHwiIil9KSxzfSxfaW50ZXJzZWN0c1dpdGg6ZnVuY3Rp
b24odCl7dmFyIGU9dGhpcy5wb3NpdGlvbkFicy5sZWZ0LGk9ZSt0aGlzLmhlbHBlclByb3BvcnRp
b25zLndpZHRoLHM9dGhpcy5wb3NpdGlvbkFicy50b3Asbj1zK3RoaXMuaGVscGVyUHJvcG9ydGlv
bnMuaGVpZ2h0LG89dC5sZWZ0LGE9byt0LndpZHRoLHI9dC50b3AsaD1yK3QuaGVpZ2h0LGw9dGhp
cy5vZmZzZXQuY2xpY2sudG9wLGM9dGhpcy5vZmZzZXQuY2xpY2subGVmdCx1PSJ4Ij09PXRoaXMu
b3B0aW9ucy5heGlzfHxzK2w+ciYmaD5zK2wsZD0ieSI9PT10aGlzLm9wdGlvbnMuYXhpc3x8ZStj
Pm8mJmE+ZStjLHA9dSYmZDtyZXR1cm4icG9pbnRlciI9PT10aGlzLm9wdGlvbnMudG9sZXJhbmNl
fHx0aGlzLm9wdGlvbnMuZm9yY2VQb2ludGVyRm9yQ29udGFpbmVyc3x8InBvaW50ZXIiIT09dGhp
cy5vcHRpb25zLnRvbGVyYW5jZSYmdGhpcy5oZWxwZXJQcm9wb3J0aW9uc1t0aGlzLmZsb2F0aW5n
PyJ3aWR0aCI6ImhlaWdodCJdPnRbdGhpcy5mbG9hdGluZz8id2lkdGgiOiJoZWlnaHQiXT9wOmUr
dGhpcy5oZWxwZXJQcm9wb3J0aW9ucy53aWR0aC8yPm8mJmE+aS10aGlzLmhlbHBlclByb3BvcnRp
b25zLndpZHRoLzImJnMrdGhpcy5oZWxwZXJQcm9wb3J0aW9ucy5oZWlnaHQvMj5yJiZoPm4tdGhp
cy5oZWxwZXJQcm9wb3J0aW9ucy5oZWlnaHQvMn0sX2ludGVyc2VjdHNXaXRoUG9pbnRlcjpmdW5j
dGlvbih0KXt2YXIgZSxpLHM9IngiPT09dGhpcy5vcHRpb25zLmF4aXN8fHRoaXMuX2lzT3ZlckF4
aXModGhpcy5wb3NpdGlvbkFicy50b3ArdGhpcy5vZmZzZXQuY2xpY2sudG9wLHQudG9wLHQuaGVp
Z2h0KSxuPSJ5Ij09PXRoaXMub3B0aW9ucy5heGlzfHx0aGlzLl9pc092ZXJBeGlzKHRoaXMucG9z
aXRpb25BYnMubGVmdCt0aGlzLm9mZnNldC5jbGljay5sZWZ0LHQubGVmdCx0LndpZHRoKSxvPXMm
Jm47cmV0dXJuIG8/KGU9dGhpcy5fZ2V0RHJhZ1ZlcnRpY2FsRGlyZWN0aW9uKCksaT10aGlzLl9n
ZXREcmFnSG9yaXpvbnRhbERpcmVjdGlvbigpLHRoaXMuZmxvYXRpbmc/InJpZ2h0Ij09PWl8fCJk
b3duIj09PWU/MjoxOmUmJigiZG93biI9PT1lPzI6MSkpOiExfSxfaW50ZXJzZWN0c1dpdGhTaWRl
czpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl9pc092ZXJBeGlzKHRoaXMucG9zaXRpb25BYnMudG9w
K3RoaXMub2Zmc2V0LmNsaWNrLnRvcCx0LnRvcCt0LmhlaWdodC8yLHQuaGVpZ2h0KSxpPXRoaXMu
X2lzT3ZlckF4aXModGhpcy5wb3NpdGlvbkFicy5sZWZ0K3RoaXMub2Zmc2V0LmNsaWNrLmxlZnQs
dC5sZWZ0K3Qud2lkdGgvMix0LndpZHRoKSxzPXRoaXMuX2dldERyYWdWZXJ0aWNhbERpcmVjdGlv
bigpLG49dGhpcy5fZ2V0RHJhZ0hvcml6b250YWxEaXJlY3Rpb24oKTtyZXR1cm4gdGhpcy5mbG9h
dGluZyYmbj8icmlnaHQiPT09biYmaXx8ImxlZnQiPT09biYmIWk6cyYmKCJkb3duIj09PXMmJmV8
fCJ1cCI9PT1zJiYhZSl9LF9nZXREcmFnVmVydGljYWxEaXJlY3Rpb246ZnVuY3Rpb24oKXt2YXIg
dD10aGlzLnBvc2l0aW9uQWJzLnRvcC10aGlzLmxhc3RQb3NpdGlvbkFicy50b3A7cmV0dXJuIDAh
PT10JiYodD4wPyJkb3duIjoidXAiKX0sX2dldERyYWdIb3Jpem9udGFsRGlyZWN0aW9uOmZ1bmN0
aW9uKCl7dmFyIHQ9dGhpcy5wb3NpdGlvbkFicy5sZWZ0LXRoaXMubGFzdFBvc2l0aW9uQWJzLmxl
ZnQ7cmV0dXJuIDAhPT10JiYodD4wPyJyaWdodCI6ImxlZnQiKX0scmVmcmVzaDpmdW5jdGlvbih0
KXtyZXR1cm4gdGhpcy5fcmVmcmVzaEl0ZW1zKHQpLHRoaXMuX3NldEhhbmRsZUNsYXNzTmFtZSgp
LHRoaXMucmVmcmVzaFBvc2l0aW9ucygpLHRoaXN9LF9jb25uZWN0V2l0aDpmdW5jdGlvbigpe3Zh
ciB0PXRoaXMub3B0aW9ucztyZXR1cm4gdC5jb25uZWN0V2l0aC5jb25zdHJ1Y3Rvcj09PVN0cmlu
Zz9bdC5jb25uZWN0V2l0aF06dC5jb25uZWN0V2l0aH0sX2dldEl0ZW1zQXNqUXVlcnk6ZnVuY3Rp
b24oZSl7ZnVuY3Rpb24gaSgpe3IucHVzaCh0aGlzKX12YXIgcyxuLG8sYSxyPVtdLGg9W10sbD10
aGlzLl9jb25uZWN0V2l0aCgpO2lmKGwmJmUpZm9yKHM9bC5sZW5ndGgtMTtzPj0wO3MtLSlmb3Io
bz10KGxbc10sdGhpcy5kb2N1bWVudFswXSksbj1vLmxlbmd0aC0xO24+PTA7bi0tKWE9dC5kYXRh
KG9bbl0sdGhpcy53aWRnZXRGdWxsTmFtZSksYSYmYSE9PXRoaXMmJiFhLm9wdGlvbnMuZGlzYWJs
ZWQmJmgucHVzaChbdC5pc0Z1bmN0aW9uKGEub3B0aW9ucy5pdGVtcyk/YS5vcHRpb25zLml0ZW1z
LmNhbGwoYS5lbGVtZW50KTp0KGEub3B0aW9ucy5pdGVtcyxhLmVsZW1lbnQpLm5vdCgiLnVpLXNv
cnRhYmxlLWhlbHBlciIpLm5vdCgiLnVpLXNvcnRhYmxlLXBsYWNlaG9sZGVyIiksYV0pO2Zvciho
LnB1c2goW3QuaXNGdW5jdGlvbih0aGlzLm9wdGlvbnMuaXRlbXMpP3RoaXMub3B0aW9ucy5pdGVt
cy5jYWxsKHRoaXMuZWxlbWVudCxudWxsLHtvcHRpb25zOnRoaXMub3B0aW9ucyxpdGVtOnRoaXMu
Y3VycmVudEl0ZW19KTp0KHRoaXMub3B0aW9ucy5pdGVtcyx0aGlzLmVsZW1lbnQpLm5vdCgiLnVp
LXNvcnRhYmxlLWhlbHBlciIpLm5vdCgiLnVpLXNvcnRhYmxlLXBsYWNlaG9sZGVyIiksdGhpc10p
LHM9aC5sZW5ndGgtMTtzPj0wO3MtLSloW3NdWzBdLmVhY2goaSk7cmV0dXJuIHQocil9LF9yZW1v
dmVDdXJyZW50c0Zyb21JdGVtczpmdW5jdGlvbigpe3ZhciBlPXRoaXMuY3VycmVudEl0ZW0uZmlu
ZCgiOmRhdGEoIit0aGlzLndpZGdldE5hbWUrIi1pdGVtKSIpO3RoaXMuaXRlbXM9dC5ncmVwKHRo
aXMuaXRlbXMsZnVuY3Rpb24odCl7Zm9yKHZhciBpPTA7ZS5sZW5ndGg+aTtpKyspaWYoZVtpXT09
PXQuaXRlbVswXSlyZXR1cm4hMTtyZXR1cm4hMH0pfSxfcmVmcmVzaEl0ZW1zOmZ1bmN0aW9uKGUp
e3RoaXMuaXRlbXM9W10sdGhpcy5jb250YWluZXJzPVt0aGlzXTt2YXIgaSxzLG4sbyxhLHIsaCxs
LGM9dGhpcy5pdGVtcyx1PVtbdC5pc0Z1bmN0aW9uKHRoaXMub3B0aW9ucy5pdGVtcyk/dGhpcy5v
cHRpb25zLml0ZW1zLmNhbGwodGhpcy5lbGVtZW50WzBdLGUse2l0ZW06dGhpcy5jdXJyZW50SXRl
bX0pOnQodGhpcy5vcHRpb25zLml0ZW1zLHRoaXMuZWxlbWVudCksdGhpc11dLGQ9dGhpcy5fY29u
bmVjdFdpdGgoKTtpZihkJiZ0aGlzLnJlYWR5KWZvcihpPWQubGVuZ3RoLTE7aT49MDtpLS0pZm9y
KG49dChkW2ldLHRoaXMuZG9jdW1lbnRbMF0pLHM9bi5sZW5ndGgtMTtzPj0wO3MtLSlvPXQuZGF0
YShuW3NdLHRoaXMud2lkZ2V0RnVsbE5hbWUpLG8mJm8hPT10aGlzJiYhby5vcHRpb25zLmRpc2Fi
bGVkJiYodS5wdXNoKFt0LmlzRnVuY3Rpb24oby5vcHRpb25zLml0ZW1zKT9vLm9wdGlvbnMuaXRl
bXMuY2FsbChvLmVsZW1lbnRbMF0sZSx7aXRlbTp0aGlzLmN1cnJlbnRJdGVtfSk6dChvLm9wdGlv
bnMuaXRlbXMsby5lbGVtZW50KSxvXSksdGhpcy5jb250YWluZXJzLnB1c2gobykpO2ZvcihpPXUu
bGVuZ3RoLTE7aT49MDtpLS0pZm9yKGE9dVtpXVsxXSxyPXVbaV1bMF0scz0wLGw9ci5sZW5ndGg7
bD5zO3MrKyloPXQocltzXSksaC5kYXRhKHRoaXMud2lkZ2V0TmFtZSsiLWl0ZW0iLGEpLGMucHVz
aCh7aXRlbTpoLGluc3RhbmNlOmEsd2lkdGg6MCxoZWlnaHQ6MCxsZWZ0OjAsdG9wOjB9KX0scmVm
cmVzaFBvc2l0aW9uczpmdW5jdGlvbihlKXt0aGlzLmZsb2F0aW5nPXRoaXMuaXRlbXMubGVuZ3Ro
PyJ4Ij09PXRoaXMub3B0aW9ucy5heGlzfHx0aGlzLl9pc0Zsb2F0aW5nKHRoaXMuaXRlbXNbMF0u
aXRlbSk6ITEsdGhpcy5vZmZzZXRQYXJlbnQmJnRoaXMuaGVscGVyJiYodGhpcy5vZmZzZXQucGFy
ZW50PXRoaXMuX2dldFBhcmVudE9mZnNldCgpKTt2YXIgaSxzLG4sbztmb3IoaT10aGlzLml0ZW1z
Lmxlbmd0aC0xO2k+PTA7aS0tKXM9dGhpcy5pdGVtc1tpXSxzLmluc3RhbmNlIT09dGhpcy5jdXJy
ZW50Q29udGFpbmVyJiZ0aGlzLmN1cnJlbnRDb250YWluZXImJnMuaXRlbVswXSE9PXRoaXMuY3Vy
cmVudEl0ZW1bMF18fChuPXRoaXMub3B0aW9ucy50b2xlcmFuY2VFbGVtZW50P3QodGhpcy5vcHRp
b25zLnRvbGVyYW5jZUVsZW1lbnQscy5pdGVtKTpzLml0ZW0sZXx8KHMud2lkdGg9bi5vdXRlcldp
ZHRoKCkscy5oZWlnaHQ9bi5vdXRlckhlaWdodCgpKSxvPW4ub2Zmc2V0KCkscy5sZWZ0PW8ubGVm
dCxzLnRvcD1vLnRvcCk7aWYodGhpcy5vcHRpb25zLmN1c3RvbSYmdGhpcy5vcHRpb25zLmN1c3Rv
bS5yZWZyZXNoQ29udGFpbmVycyl0aGlzLm9wdGlvbnMuY3VzdG9tLnJlZnJlc2hDb250YWluZXJz
LmNhbGwodGhpcyk7ZWxzZSBmb3IoaT10aGlzLmNvbnRhaW5lcnMubGVuZ3RoLTE7aT49MDtpLS0p
bz10aGlzLmNvbnRhaW5lcnNbaV0uZWxlbWVudC5vZmZzZXQoKSx0aGlzLmNvbnRhaW5lcnNbaV0u
Y29udGFpbmVyQ2FjaGUubGVmdD1vLmxlZnQsdGhpcy5jb250YWluZXJzW2ldLmNvbnRhaW5lckNh
Y2hlLnRvcD1vLnRvcCx0aGlzLmNvbnRhaW5lcnNbaV0uY29udGFpbmVyQ2FjaGUud2lkdGg9dGhp
cy5jb250YWluZXJzW2ldLmVsZW1lbnQub3V0ZXJXaWR0aCgpLHRoaXMuY29udGFpbmVyc1tpXS5j
b250YWluZXJDYWNoZS5oZWlnaHQ9dGhpcy5jb250YWluZXJzW2ldLmVsZW1lbnQub3V0ZXJIZWln
aHQoKTtyZXR1cm4gdGhpc30sX2NyZWF0ZVBsYWNlaG9sZGVyOmZ1bmN0aW9uKGUpe2U9ZXx8dGhp
czt2YXIgaSxzPWUub3B0aW9ucztzLnBsYWNlaG9sZGVyJiZzLnBsYWNlaG9sZGVyLmNvbnN0cnVj
dG9yIT09U3RyaW5nfHwoaT1zLnBsYWNlaG9sZGVyLHMucGxhY2Vob2xkZXI9e2VsZW1lbnQ6ZnVu
Y3Rpb24oKXt2YXIgcz1lLmN1cnJlbnRJdGVtWzBdLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCksbj10
KCI8IitzKyI+IixlLmRvY3VtZW50WzBdKTtyZXR1cm4gZS5fYWRkQ2xhc3MobiwidWktc29ydGFi
bGUtcGxhY2Vob2xkZXIiLGl8fGUuY3VycmVudEl0ZW1bMF0uY2xhc3NOYW1lKS5fcmVtb3ZlQ2xh
c3MobiwidWktc29ydGFibGUtaGVscGVyIiksInRib2R5Ij09PXM/ZS5fY3JlYXRlVHJQbGFjZWhv
bGRlcihlLmN1cnJlbnRJdGVtLmZpbmQoInRyIikuZXEoMCksdCgiPHRyPiIsZS5kb2N1bWVudFsw
XSkuYXBwZW5kVG8obikpOiJ0ciI9PT1zP2UuX2NyZWF0ZVRyUGxhY2Vob2xkZXIoZS5jdXJyZW50
SXRlbSxuKToiaW1nIj09PXMmJm4uYXR0cigic3JjIixlLmN1cnJlbnRJdGVtLmF0dHIoInNyYyIp
KSxpfHxuLmNzcygidmlzaWJpbGl0eSIsImhpZGRlbiIpLG59LHVwZGF0ZTpmdW5jdGlvbih0LG4p
eyghaXx8cy5mb3JjZVBsYWNlaG9sZGVyU2l6ZSkmJihuLmhlaWdodCgpfHxuLmhlaWdodChlLmN1
cnJlbnRJdGVtLmlubmVySGVpZ2h0KCktcGFyc2VJbnQoZS5jdXJyZW50SXRlbS5jc3MoInBhZGRp
bmdUb3AiKXx8MCwxMCktcGFyc2VJbnQoZS5jdXJyZW50SXRlbS5jc3MoInBhZGRpbmdCb3R0b20i
KXx8MCwxMCkpLG4ud2lkdGgoKXx8bi53aWR0aChlLmN1cnJlbnRJdGVtLmlubmVyV2lkdGgoKS1w
YXJzZUludChlLmN1cnJlbnRJdGVtLmNzcygicGFkZGluZ0xlZnQiKXx8MCwxMCktcGFyc2VJbnQo
ZS5jdXJyZW50SXRlbS5jc3MoInBhZGRpbmdSaWdodCIpfHwwLDEwKSkpfX0pLGUucGxhY2Vob2xk
ZXI9dChzLnBsYWNlaG9sZGVyLmVsZW1lbnQuY2FsbChlLmVsZW1lbnQsZS5jdXJyZW50SXRlbSkp
LGUuY3VycmVudEl0ZW0uYWZ0ZXIoZS5wbGFjZWhvbGRlcikscy5wbGFjZWhvbGRlci51cGRhdGUo
ZSxlLnBsYWNlaG9sZGVyKX0sX2NyZWF0ZVRyUGxhY2Vob2xkZXI6ZnVuY3Rpb24oZSxpKXt2YXIg
cz10aGlzO2UuY2hpbGRyZW4oKS5lYWNoKGZ1bmN0aW9uKCl7dCgiPHRkPiYjMTYwOzwvdGQ+Iixz
LmRvY3VtZW50WzBdKS5hdHRyKCJjb2xzcGFuIix0KHRoaXMpLmF0dHIoImNvbHNwYW4iKXx8MSku
YXBwZW5kVG8oaSl9KX0sX2NvbnRhY3RDb250YWluZXJzOmZ1bmN0aW9uKGUpe3ZhciBpLHMsbixv
LGEscixoLGwsYyx1LGQ9bnVsbCxwPW51bGw7Zm9yKGk9dGhpcy5jb250YWluZXJzLmxlbmd0aC0x
O2k+PTA7aS0tKWlmKCF0LmNvbnRhaW5zKHRoaXMuY3VycmVudEl0ZW1bMF0sdGhpcy5jb250YWlu
ZXJzW2ldLmVsZW1lbnRbMF0pKWlmKHRoaXMuX2ludGVyc2VjdHNXaXRoKHRoaXMuY29udGFpbmVy
c1tpXS5jb250YWluZXJDYWNoZSkpe2lmKGQmJnQuY29udGFpbnModGhpcy5jb250YWluZXJzW2ld
LmVsZW1lbnRbMF0sZC5lbGVtZW50WzBdKSljb250aW51ZTtkPXRoaXMuY29udGFpbmVyc1tpXSxw
PWl9ZWxzZSB0aGlzLmNvbnRhaW5lcnNbaV0uY29udGFpbmVyQ2FjaGUub3ZlciYmKHRoaXMuY29u
dGFpbmVyc1tpXS5fdHJpZ2dlcigib3V0IixlLHRoaXMuX3VpSGFzaCh0aGlzKSksdGhpcy5jb250
YWluZXJzW2ldLmNvbnRhaW5lckNhY2hlLm92ZXI9MCk7aWYoZClpZigxPT09dGhpcy5jb250YWlu
ZXJzLmxlbmd0aCl0aGlzLmNvbnRhaW5lcnNbcF0uY29udGFpbmVyQ2FjaGUub3Zlcnx8KHRoaXMu
Y29udGFpbmVyc1twXS5fdHJpZ2dlcigib3ZlciIsZSx0aGlzLl91aUhhc2godGhpcykpLHRoaXMu
Y29udGFpbmVyc1twXS5jb250YWluZXJDYWNoZS5vdmVyPTEpO2Vsc2V7Zm9yKG49MWU0LG89bnVs
bCxjPWQuZmxvYXRpbmd8fHRoaXMuX2lzRmxvYXRpbmcodGhpcy5jdXJyZW50SXRlbSksYT1jPyJs
ZWZ0IjoidG9wIixyPWM/IndpZHRoIjoiaGVpZ2h0Iix1PWM/InBhZ2VYIjoicGFnZVkiLHM9dGhp
cy5pdGVtcy5sZW5ndGgtMTtzPj0wO3MtLSl0LmNvbnRhaW5zKHRoaXMuY29udGFpbmVyc1twXS5l
bGVtZW50WzBdLHRoaXMuaXRlbXNbc10uaXRlbVswXSkmJnRoaXMuaXRlbXNbc10uaXRlbVswXSE9
PXRoaXMuY3VycmVudEl0ZW1bMF0mJihoPXRoaXMuaXRlbXNbc10uaXRlbS5vZmZzZXQoKVthXSxs
PSExLGVbdV0taD50aGlzLml0ZW1zW3NdW3JdLzImJihsPSEwKSxuPk1hdGguYWJzKGVbdV0taCkm
JihuPU1hdGguYWJzKGVbdV0taCksbz10aGlzLml0ZW1zW3NdLHRoaXMuZGlyZWN0aW9uPWw/InVw
IjoiZG93biIpKTtpZighbyYmIXRoaXMub3B0aW9ucy5kcm9wT25FbXB0eSlyZXR1cm47aWYodGhp
cy5jdXJyZW50Q29udGFpbmVyPT09dGhpcy5jb250YWluZXJzW3BdKXJldHVybiB0aGlzLmN1cnJl
bnRDb250YWluZXIuY29udGFpbmVyQ2FjaGUub3Zlcnx8KHRoaXMuY29udGFpbmVyc1twXS5fdHJp
Z2dlcigib3ZlciIsZSx0aGlzLl91aUhhc2goKSksdGhpcy5jdXJyZW50Q29udGFpbmVyLmNvbnRh
aW5lckNhY2hlLm92ZXI9MSksdm9pZCAwO28/dGhpcy5fcmVhcnJhbmdlKGUsbyxudWxsLCEwKTp0
aGlzLl9yZWFycmFuZ2UoZSxudWxsLHRoaXMuY29udGFpbmVyc1twXS5lbGVtZW50LCEwKSx0aGlz
Ll90cmlnZ2VyKCJjaGFuZ2UiLGUsdGhpcy5fdWlIYXNoKCkpLHRoaXMuY29udGFpbmVyc1twXS5f
dHJpZ2dlcigiY2hhbmdlIixlLHRoaXMuX3VpSGFzaCh0aGlzKSksdGhpcy5jdXJyZW50Q29udGFp
bmVyPXRoaXMuY29udGFpbmVyc1twXSx0aGlzLm9wdGlvbnMucGxhY2Vob2xkZXIudXBkYXRlKHRo
aXMuY3VycmVudENvbnRhaW5lcix0aGlzLnBsYWNlaG9sZGVyKSx0aGlzLmNvbnRhaW5lcnNbcF0u
X3RyaWdnZXIoIm92ZXIiLGUsdGhpcy5fdWlIYXNoKHRoaXMpKSx0aGlzLmNvbnRhaW5lcnNbcF0u
Y29udGFpbmVyQ2FjaGUub3Zlcj0xfX0sX2NyZWF0ZUhlbHBlcjpmdW5jdGlvbihlKXt2YXIgaT10
aGlzLm9wdGlvbnMscz10LmlzRnVuY3Rpb24oaS5oZWxwZXIpP3QoaS5oZWxwZXIuYXBwbHkodGhp
cy5lbGVtZW50WzBdLFtlLHRoaXMuY3VycmVudEl0ZW1dKSk6ImNsb25lIj09PWkuaGVscGVyP3Ro
aXMuY3VycmVudEl0ZW0uY2xvbmUoKTp0aGlzLmN1cnJlbnRJdGVtO3JldHVybiBzLnBhcmVudHMo
ImJvZHkiKS5sZW5ndGh8fHQoInBhcmVudCIhPT1pLmFwcGVuZFRvP2kuYXBwZW5kVG86dGhpcy5j
dXJyZW50SXRlbVswXS5wYXJlbnROb2RlKVswXS5hcHBlbmRDaGlsZChzWzBdKSxzWzBdPT09dGhp
cy5jdXJyZW50SXRlbVswXSYmKHRoaXMuX3N0b3JlZENTUz17d2lkdGg6dGhpcy5jdXJyZW50SXRl
bVswXS5zdHlsZS53aWR0aCxoZWlnaHQ6dGhpcy5jdXJyZW50SXRlbVswXS5zdHlsZS5oZWlnaHQs
cG9zaXRpb246dGhpcy5jdXJyZW50SXRlbS5jc3MoInBvc2l0aW9uIiksdG9wOnRoaXMuY3VycmVu
dEl0ZW0uY3NzKCJ0b3AiKSxsZWZ0OnRoaXMuY3VycmVudEl0ZW0uY3NzKCJsZWZ0Iil9KSwoIXNb
MF0uc3R5bGUud2lkdGh8fGkuZm9yY2VIZWxwZXJTaXplKSYmcy53aWR0aCh0aGlzLmN1cnJlbnRJ
dGVtLndpZHRoKCkpLCghc1swXS5zdHlsZS5oZWlnaHR8fGkuZm9yY2VIZWxwZXJTaXplKSYmcy5o
ZWlnaHQodGhpcy5jdXJyZW50SXRlbS5oZWlnaHQoKSksc30sX2FkanVzdE9mZnNldEZyb21IZWxw
ZXI6ZnVuY3Rpb24oZSl7InN0cmluZyI9PXR5cGVvZiBlJiYoZT1lLnNwbGl0KCIgIikpLHQuaXNB
cnJheShlKSYmKGU9e2xlZnQ6K2VbMF0sdG9wOitlWzFdfHwwfSksImxlZnQiaW4gZSYmKHRoaXMu
b2Zmc2V0LmNsaWNrLmxlZnQ9ZS5sZWZ0K3RoaXMubWFyZ2lucy5sZWZ0KSwicmlnaHQiaW4gZSYm
KHRoaXMub2Zmc2V0LmNsaWNrLmxlZnQ9dGhpcy5oZWxwZXJQcm9wb3J0aW9ucy53aWR0aC1lLnJp
Z2h0K3RoaXMubWFyZ2lucy5sZWZ0KSwidG9wImluIGUmJih0aGlzLm9mZnNldC5jbGljay50b3A9
ZS50b3ArdGhpcy5tYXJnaW5zLnRvcCksImJvdHRvbSJpbiBlJiYodGhpcy5vZmZzZXQuY2xpY2su
dG9wPXRoaXMuaGVscGVyUHJvcG9ydGlvbnMuaGVpZ2h0LWUuYm90dG9tK3RoaXMubWFyZ2lucy50
b3ApfSxfZ2V0UGFyZW50T2Zmc2V0OmZ1bmN0aW9uKCl7dGhpcy5vZmZzZXRQYXJlbnQ9dGhpcy5o
ZWxwZXIub2Zmc2V0UGFyZW50KCk7dmFyIGU9dGhpcy5vZmZzZXRQYXJlbnQub2Zmc2V0KCk7cmV0
dXJuImFic29sdXRlIj09PXRoaXMuY3NzUG9zaXRpb24mJnRoaXMuc2Nyb2xsUGFyZW50WzBdIT09
dGhpcy5kb2N1bWVudFswXSYmdC5jb250YWlucyh0aGlzLnNjcm9sbFBhcmVudFswXSx0aGlzLm9m
ZnNldFBhcmVudFswXSkmJihlLmxlZnQrPXRoaXMuc2Nyb2xsUGFyZW50LnNjcm9sbExlZnQoKSxl
LnRvcCs9dGhpcy5zY3JvbGxQYXJlbnQuc2Nyb2xsVG9wKCkpLCh0aGlzLm9mZnNldFBhcmVudFsw
XT09PXRoaXMuZG9jdW1lbnRbMF0uYm9keXx8dGhpcy5vZmZzZXRQYXJlbnRbMF0udGFnTmFtZSYm
Imh0bWwiPT09dGhpcy5vZmZzZXRQYXJlbnRbMF0udGFnTmFtZS50b0xvd2VyQ2FzZSgpJiZ0LnVp
LmllKSYmKGU9e3RvcDowLGxlZnQ6MH0pLHt0b3A6ZS50b3ArKHBhcnNlSW50KHRoaXMub2Zmc2V0
UGFyZW50LmNzcygiYm9yZGVyVG9wV2lkdGgiKSwxMCl8fDApLGxlZnQ6ZS5sZWZ0KyhwYXJzZUlu
dCh0aGlzLm9mZnNldFBhcmVudC5jc3MoImJvcmRlckxlZnRXaWR0aCIpLDEwKXx8MCl9fSxfZ2V0
UmVsYXRpdmVPZmZzZXQ6ZnVuY3Rpb24oKXtpZigicmVsYXRpdmUiPT09dGhpcy5jc3NQb3NpdGlv
bil7dmFyIHQ9dGhpcy5jdXJyZW50SXRlbS5wb3NpdGlvbigpO3JldHVybnt0b3A6dC50b3AtKHBh
cnNlSW50KHRoaXMuaGVscGVyLmNzcygidG9wIiksMTApfHwwKSt0aGlzLnNjcm9sbFBhcmVudC5z
Y3JvbGxUb3AoKSxsZWZ0OnQubGVmdC0ocGFyc2VJbnQodGhpcy5oZWxwZXIuY3NzKCJsZWZ0Iiks
MTApfHwwKSt0aGlzLnNjcm9sbFBhcmVudC5zY3JvbGxMZWZ0KCl9fXJldHVybnt0b3A6MCxsZWZ0
OjB9fSxfY2FjaGVNYXJnaW5zOmZ1bmN0aW9uKCl7dGhpcy5tYXJnaW5zPXtsZWZ0OnBhcnNlSW50
KHRoaXMuY3VycmVudEl0ZW0uY3NzKCJtYXJnaW5MZWZ0IiksMTApfHwwLHRvcDpwYXJzZUludCh0
aGlzLmN1cnJlbnRJdGVtLmNzcygibWFyZ2luVG9wIiksMTApfHwwfX0sX2NhY2hlSGVscGVyUHJv
cG9ydGlvbnM6ZnVuY3Rpb24oKXt0aGlzLmhlbHBlclByb3BvcnRpb25zPXt3aWR0aDp0aGlzLmhl
bHBlci5vdXRlcldpZHRoKCksaGVpZ2h0OnRoaXMuaGVscGVyLm91dGVySGVpZ2h0KCl9fSxfc2V0
Q29udGFpbm1lbnQ6ZnVuY3Rpb24oKXt2YXIgZSxpLHMsbj10aGlzLm9wdGlvbnM7InBhcmVudCI9
PT1uLmNvbnRhaW5tZW50JiYobi5jb250YWlubWVudD10aGlzLmhlbHBlclswXS5wYXJlbnROb2Rl
KSwoImRvY3VtZW50Ij09PW4uY29udGFpbm1lbnR8fCJ3aW5kb3ciPT09bi5jb250YWlubWVudCkm
Jih0aGlzLmNvbnRhaW5tZW50PVswLXRoaXMub2Zmc2V0LnJlbGF0aXZlLmxlZnQtdGhpcy5vZmZz
ZXQucGFyZW50LmxlZnQsMC10aGlzLm9mZnNldC5yZWxhdGl2ZS50b3AtdGhpcy5vZmZzZXQucGFy
ZW50LnRvcCwiZG9jdW1lbnQiPT09bi5jb250YWlubWVudD90aGlzLmRvY3VtZW50LndpZHRoKCk6
dGhpcy53aW5kb3cud2lkdGgoKS10aGlzLmhlbHBlclByb3BvcnRpb25zLndpZHRoLXRoaXMubWFy
Z2lucy5sZWZ0LCgiZG9jdW1lbnQiPT09bi5jb250YWlubWVudD90aGlzLmRvY3VtZW50LmhlaWdo
dCgpfHxkb2N1bWVudC5ib2R5LnBhcmVudE5vZGUuc2Nyb2xsSGVpZ2h0OnRoaXMud2luZG93Lmhl
aWdodCgpfHx0aGlzLmRvY3VtZW50WzBdLmJvZHkucGFyZW50Tm9kZS5zY3JvbGxIZWlnaHQpLXRo
aXMuaGVscGVyUHJvcG9ydGlvbnMuaGVpZ2h0LXRoaXMubWFyZ2lucy50b3BdKSwvXihkb2N1bWVu
dHx3aW5kb3d8cGFyZW50KSQvLnRlc3Qobi5jb250YWlubWVudCl8fChlPXQobi5jb250YWlubWVu
dClbMF0saT10KG4uY29udGFpbm1lbnQpLm9mZnNldCgpLHM9ImhpZGRlbiIhPT10KGUpLmNzcygi
b3ZlcmZsb3ciKSx0aGlzLmNvbnRhaW5tZW50PVtpLmxlZnQrKHBhcnNlSW50KHQoZSkuY3NzKCJi
b3JkZXJMZWZ0V2lkdGgiKSwxMCl8fDApKyhwYXJzZUludCh0KGUpLmNzcygicGFkZGluZ0xlZnQi
KSwxMCl8fDApLXRoaXMubWFyZ2lucy5sZWZ0LGkudG9wKyhwYXJzZUludCh0KGUpLmNzcygiYm9y
ZGVyVG9wV2lkdGgiKSwxMCl8fDApKyhwYXJzZUludCh0KGUpLmNzcygicGFkZGluZ1RvcCIpLDEw
KXx8MCktdGhpcy5tYXJnaW5zLnRvcCxpLmxlZnQrKHM/TWF0aC5tYXgoZS5zY3JvbGxXaWR0aCxl
Lm9mZnNldFdpZHRoKTplLm9mZnNldFdpZHRoKS0ocGFyc2VJbnQodChlKS5jc3MoImJvcmRlckxl
ZnRXaWR0aCIpLDEwKXx8MCktKHBhcnNlSW50KHQoZSkuY3NzKCJwYWRkaW5nUmlnaHQiKSwxMCl8
fDApLXRoaXMuaGVscGVyUHJvcG9ydGlvbnMud2lkdGgtdGhpcy5tYXJnaW5zLmxlZnQsaS50b3Ar
KHM/TWF0aC5tYXgoZS5zY3JvbGxIZWlnaHQsZS5vZmZzZXRIZWlnaHQpOmUub2Zmc2V0SGVpZ2h0
KS0ocGFyc2VJbnQodChlKS5jc3MoImJvcmRlclRvcFdpZHRoIiksMTApfHwwKS0ocGFyc2VJbnQo
dChlKS5jc3MoInBhZGRpbmdCb3R0b20iKSwxMCl8fDApLXRoaXMuaGVscGVyUHJvcG9ydGlvbnMu
aGVpZ2h0LXRoaXMubWFyZ2lucy50b3BdKX0sX2NvbnZlcnRQb3NpdGlvblRvOmZ1bmN0aW9uKGUs
aSl7aXx8KGk9dGhpcy5wb3NpdGlvbik7dmFyIHM9ImFic29sdXRlIj09PWU/MTotMSxuPSJhYnNv
bHV0ZSIhPT10aGlzLmNzc1Bvc2l0aW9ufHx0aGlzLnNjcm9sbFBhcmVudFswXSE9PXRoaXMuZG9j
dW1lbnRbMF0mJnQuY29udGFpbnModGhpcy5zY3JvbGxQYXJlbnRbMF0sdGhpcy5vZmZzZXRQYXJl
bnRbMF0pP3RoaXMuc2Nyb2xsUGFyZW50OnRoaXMub2Zmc2V0UGFyZW50LG89LyhodG1sfGJvZHkp
L2kudGVzdChuWzBdLnRhZ05hbWUpO3JldHVybnt0b3A6aS50b3ArdGhpcy5vZmZzZXQucmVsYXRp
dmUudG9wKnMrdGhpcy5vZmZzZXQucGFyZW50LnRvcCpzLSgiZml4ZWQiPT09dGhpcy5jc3NQb3Np
dGlvbj8tdGhpcy5zY3JvbGxQYXJlbnQuc2Nyb2xsVG9wKCk6bz8wOm4uc2Nyb2xsVG9wKCkpKnMs
bGVmdDppLmxlZnQrdGhpcy5vZmZzZXQucmVsYXRpdmUubGVmdCpzK3RoaXMub2Zmc2V0LnBhcmVu
dC5sZWZ0KnMtKCJmaXhlZCI9PT10aGlzLmNzc1Bvc2l0aW9uPy10aGlzLnNjcm9sbFBhcmVudC5z
Y3JvbGxMZWZ0KCk6bz8wOm4uc2Nyb2xsTGVmdCgpKSpzfX0sX2dlbmVyYXRlUG9zaXRpb246ZnVu
Y3Rpb24oZSl7dmFyIGkscyxuPXRoaXMub3B0aW9ucyxvPWUucGFnZVgsYT1lLnBhZ2VZLHI9ImFi
c29sdXRlIiE9PXRoaXMuY3NzUG9zaXRpb258fHRoaXMuc2Nyb2xsUGFyZW50WzBdIT09dGhpcy5k
b2N1bWVudFswXSYmdC5jb250YWlucyh0aGlzLnNjcm9sbFBhcmVudFswXSx0aGlzLm9mZnNldFBh
cmVudFswXSk/dGhpcy5zY3JvbGxQYXJlbnQ6dGhpcy5vZmZzZXRQYXJlbnQsaD0vKGh0bWx8Ym9k
eSkvaS50ZXN0KHJbMF0udGFnTmFtZSk7cmV0dXJuInJlbGF0aXZlIiE9PXRoaXMuY3NzUG9zaXRp
b258fHRoaXMuc2Nyb2xsUGFyZW50WzBdIT09dGhpcy5kb2N1bWVudFswXSYmdGhpcy5zY3JvbGxQ
YXJlbnRbMF0hPT10aGlzLm9mZnNldFBhcmVudFswXXx8KHRoaXMub2Zmc2V0LnJlbGF0aXZlPXRo
aXMuX2dldFJlbGF0aXZlT2Zmc2V0KCkpLHRoaXMub3JpZ2luYWxQb3NpdGlvbiYmKHRoaXMuY29u
dGFpbm1lbnQmJihlLnBhZ2VYLXRoaXMub2Zmc2V0LmNsaWNrLmxlZnQ8dGhpcy5jb250YWlubWVu
dFswXSYmKG89dGhpcy5jb250YWlubWVudFswXSt0aGlzLm9mZnNldC5jbGljay5sZWZ0KSxlLnBh
Z2VZLXRoaXMub2Zmc2V0LmNsaWNrLnRvcDx0aGlzLmNvbnRhaW5tZW50WzFdJiYoYT10aGlzLmNv
bnRhaW5tZW50WzFdK3RoaXMub2Zmc2V0LmNsaWNrLnRvcCksZS5wYWdlWC10aGlzLm9mZnNldC5j
bGljay5sZWZ0PnRoaXMuY29udGFpbm1lbnRbMl0mJihvPXRoaXMuY29udGFpbm1lbnRbMl0rdGhp
cy5vZmZzZXQuY2xpY2subGVmdCksZS5wYWdlWS10aGlzLm9mZnNldC5jbGljay50b3A+dGhpcy5j
b250YWlubWVudFszXSYmKGE9dGhpcy5jb250YWlubWVudFszXSt0aGlzLm9mZnNldC5jbGljay50
b3ApKSxuLmdyaWQmJihpPXRoaXMub3JpZ2luYWxQYWdlWStNYXRoLnJvdW5kKChhLXRoaXMub3Jp
Z2luYWxQYWdlWSkvbi5ncmlkWzFdKSpuLmdyaWRbMV0sYT10aGlzLmNvbnRhaW5tZW50P2ktdGhp
cy5vZmZzZXQuY2xpY2sudG9wPj10aGlzLmNvbnRhaW5tZW50WzFdJiZpLXRoaXMub2Zmc2V0LmNs
aWNrLnRvcDw9dGhpcy5jb250YWlubWVudFszXT9pOmktdGhpcy5vZmZzZXQuY2xpY2sudG9wPj10
aGlzLmNvbnRhaW5tZW50WzFdP2ktbi5ncmlkWzFdOmkrbi5ncmlkWzFdOmkscz10aGlzLm9yaWdp
bmFsUGFnZVgrTWF0aC5yb3VuZCgoby10aGlzLm9yaWdpbmFsUGFnZVgpL24uZ3JpZFswXSkqbi5n
cmlkWzBdLG89dGhpcy5jb250YWlubWVudD9zLXRoaXMub2Zmc2V0LmNsaWNrLmxlZnQ+PXRoaXMu
Y29udGFpbm1lbnRbMF0mJnMtdGhpcy5vZmZzZXQuY2xpY2subGVmdDw9dGhpcy5jb250YWlubWVu
dFsyXT9zOnMtdGhpcy5vZmZzZXQuY2xpY2subGVmdD49dGhpcy5jb250YWlubWVudFswXT9zLW4u
Z3JpZFswXTpzK24uZ3JpZFswXTpzKSkse3RvcDphLXRoaXMub2Zmc2V0LmNsaWNrLnRvcC10aGlz
Lm9mZnNldC5yZWxhdGl2ZS50b3AtdGhpcy5vZmZzZXQucGFyZW50LnRvcCsoImZpeGVkIj09PXRo
aXMuY3NzUG9zaXRpb24/LXRoaXMuc2Nyb2xsUGFyZW50LnNjcm9sbFRvcCgpOmg/MDpyLnNjcm9s
bFRvcCgpKSxsZWZ0Om8tdGhpcy5vZmZzZXQuY2xpY2subGVmdC10aGlzLm9mZnNldC5yZWxhdGl2
ZS5sZWZ0LXRoaXMub2Zmc2V0LnBhcmVudC5sZWZ0KygiZml4ZWQiPT09dGhpcy5jc3NQb3NpdGlv
bj8tdGhpcy5zY3JvbGxQYXJlbnQuc2Nyb2xsTGVmdCgpOmg/MDpyLnNjcm9sbExlZnQoKSl9fSxf
cmVhcnJhbmdlOmZ1bmN0aW9uKHQsZSxpLHMpe2k/aVswXS5hcHBlbmRDaGlsZCh0aGlzLnBsYWNl
aG9sZGVyWzBdKTplLml0ZW1bMF0ucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodGhpcy5wbGFjZWhv
bGRlclswXSwiZG93biI9PT10aGlzLmRpcmVjdGlvbj9lLml0ZW1bMF06ZS5pdGVtWzBdLm5leHRT
aWJsaW5nKSx0aGlzLmNvdW50ZXI9dGhpcy5jb3VudGVyPysrdGhpcy5jb3VudGVyOjE7dmFyIG49
dGhpcy5jb3VudGVyOwordGhpcy5fZGVsYXkoZnVuY3Rpb24oKXtuPT09dGhpcy5jb3VudGVyJiZ0
aGlzLnJlZnJlc2hQb3NpdGlvbnMoIXMpfSl9LF9jbGVhcjpmdW5jdGlvbih0LGUpe2Z1bmN0aW9u
IGkodCxlLGkpe3JldHVybiBmdW5jdGlvbihzKXtpLl90cmlnZ2VyKHQscyxlLl91aUhhc2goZSkp
fX10aGlzLnJldmVydGluZz0hMTt2YXIgcyxuPVtdO2lmKCF0aGlzLl9ub0ZpbmFsU29ydCYmdGhp
cy5jdXJyZW50SXRlbS5wYXJlbnQoKS5sZW5ndGgmJnRoaXMucGxhY2Vob2xkZXIuYmVmb3JlKHRo
aXMuY3VycmVudEl0ZW0pLHRoaXMuX25vRmluYWxTb3J0PW51bGwsdGhpcy5oZWxwZXJbMF09PT10
aGlzLmN1cnJlbnRJdGVtWzBdKXtmb3IocyBpbiB0aGlzLl9zdG9yZWRDU1MpKCJhdXRvIj09PXRo
aXMuX3N0b3JlZENTU1tzXXx8InN0YXRpYyI9PT10aGlzLl9zdG9yZWRDU1Nbc10pJiYodGhpcy5f
c3RvcmVkQ1NTW3NdPSIiKTt0aGlzLmN1cnJlbnRJdGVtLmNzcyh0aGlzLl9zdG9yZWRDU1MpLHRo
aXMuX3JlbW92ZUNsYXNzKHRoaXMuY3VycmVudEl0ZW0sInVpLXNvcnRhYmxlLWhlbHBlciIpfWVs
c2UgdGhpcy5jdXJyZW50SXRlbS5zaG93KCk7Zm9yKHRoaXMuZnJvbU91dHNpZGUmJiFlJiZuLnB1
c2goZnVuY3Rpb24odCl7dGhpcy5fdHJpZ2dlcigicmVjZWl2ZSIsdCx0aGlzLl91aUhhc2godGhp
cy5mcm9tT3V0c2lkZSkpfSksIXRoaXMuZnJvbU91dHNpZGUmJnRoaXMuZG9tUG9zaXRpb24ucHJl
dj09PXRoaXMuY3VycmVudEl0ZW0ucHJldigpLm5vdCgiLnVpLXNvcnRhYmxlLWhlbHBlciIpWzBd
JiZ0aGlzLmRvbVBvc2l0aW9uLnBhcmVudD09PXRoaXMuY3VycmVudEl0ZW0ucGFyZW50KClbMF18
fGV8fG4ucHVzaChmdW5jdGlvbih0KXt0aGlzLl90cmlnZ2VyKCJ1cGRhdGUiLHQsdGhpcy5fdWlI
YXNoKCkpfSksdGhpcyE9PXRoaXMuY3VycmVudENvbnRhaW5lciYmKGV8fChuLnB1c2goZnVuY3Rp
b24odCl7dGhpcy5fdHJpZ2dlcigicmVtb3ZlIix0LHRoaXMuX3VpSGFzaCgpKX0pLG4ucHVzaChm
dW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7dC5fdHJpZ2dlcigicmVjZWl2ZSIsZSx0aGlz
Ll91aUhhc2godGhpcykpfX0uY2FsbCh0aGlzLHRoaXMuY3VycmVudENvbnRhaW5lcikpLG4ucHVz
aChmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7dC5fdHJpZ2dlcigidXBkYXRlIixlLHRo
aXMuX3VpSGFzaCh0aGlzKSl9fS5jYWxsKHRoaXMsdGhpcy5jdXJyZW50Q29udGFpbmVyKSkpKSxz
PXRoaXMuY29udGFpbmVycy5sZW5ndGgtMTtzPj0wO3MtLSllfHxuLnB1c2goaSgiZGVhY3RpdmF0
ZSIsdGhpcyx0aGlzLmNvbnRhaW5lcnNbc10pKSx0aGlzLmNvbnRhaW5lcnNbc10uY29udGFpbmVy
Q2FjaGUub3ZlciYmKG4ucHVzaChpKCJvdXQiLHRoaXMsdGhpcy5jb250YWluZXJzW3NdKSksdGhp
cy5jb250YWluZXJzW3NdLmNvbnRhaW5lckNhY2hlLm92ZXI9MCk7aWYodGhpcy5zdG9yZWRDdXJz
b3ImJih0aGlzLmRvY3VtZW50LmZpbmQoImJvZHkiKS5jc3MoImN1cnNvciIsdGhpcy5zdG9yZWRD
dXJzb3IpLHRoaXMuc3RvcmVkU3R5bGVzaGVldC5yZW1vdmUoKSksdGhpcy5fc3RvcmVkT3BhY2l0
eSYmdGhpcy5oZWxwZXIuY3NzKCJvcGFjaXR5Iix0aGlzLl9zdG9yZWRPcGFjaXR5KSx0aGlzLl9z
dG9yZWRaSW5kZXgmJnRoaXMuaGVscGVyLmNzcygiekluZGV4IiwiYXV0byI9PT10aGlzLl9zdG9y
ZWRaSW5kZXg/IiI6dGhpcy5fc3RvcmVkWkluZGV4KSx0aGlzLmRyYWdnaW5nPSExLGV8fHRoaXMu
X3RyaWdnZXIoImJlZm9yZVN0b3AiLHQsdGhpcy5fdWlIYXNoKCkpLHRoaXMucGxhY2Vob2xkZXJb
MF0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLnBsYWNlaG9sZGVyWzBdKSx0aGlzLmNhbmNl
bEhlbHBlclJlbW92YWx8fCh0aGlzLmhlbHBlclswXSE9PXRoaXMuY3VycmVudEl0ZW1bMF0mJnRo
aXMuaGVscGVyLnJlbW92ZSgpLHRoaXMuaGVscGVyPW51bGwpLCFlKXtmb3Iocz0wO24ubGVuZ3Ro
PnM7cysrKW5bc10uY2FsbCh0aGlzLHQpO3RoaXMuX3RyaWdnZXIoInN0b3AiLHQsdGhpcy5fdWlI
YXNoKCkpfXJldHVybiB0aGlzLmZyb21PdXRzaWRlPSExLCF0aGlzLmNhbmNlbEhlbHBlclJlbW92
YWx9LF90cmlnZ2VyOmZ1bmN0aW9uKCl7dC5XaWRnZXQucHJvdG90eXBlLl90cmlnZ2VyLmFwcGx5
KHRoaXMsYXJndW1lbnRzKT09PSExJiZ0aGlzLmNhbmNlbCgpfSxfdWlIYXNoOmZ1bmN0aW9uKGUp
e3ZhciBpPWV8fHRoaXM7cmV0dXJue2hlbHBlcjppLmhlbHBlcixwbGFjZWhvbGRlcjppLnBsYWNl
aG9sZGVyfHx0KFtdKSxwb3NpdGlvbjppLnBvc2l0aW9uLG9yaWdpbmFsUG9zaXRpb246aS5vcmln
aW5hbFBvc2l0aW9uLG9mZnNldDppLnBvc2l0aW9uQWJzLGl0ZW06aS5jdXJyZW50SXRlbSxzZW5k
ZXI6ZT9lLmVsZW1lbnQ6bnVsbH19fSksdC53aWRnZXQoInVpLnNwaW5uZXIiLHt2ZXJzaW9uOiIx
LjEyLjEiLGRlZmF1bHRFbGVtZW50OiI8aW5wdXQ+Iix3aWRnZXRFdmVudFByZWZpeDoic3BpbiIs
b3B0aW9uczp7Y2xhc3Nlczp7InVpLXNwaW5uZXIiOiJ1aS1jb3JuZXItYWxsIiwidWktc3Bpbm5l
ci1kb3duIjoidWktY29ybmVyLWJyIiwidWktc3Bpbm5lci11cCI6InVpLWNvcm5lci10ciJ9LGN1
bHR1cmU6bnVsbCxpY29uczp7ZG93bjoidWktaWNvbi10cmlhbmdsZS0xLXMiLHVwOiJ1aS1pY29u
LXRyaWFuZ2xlLTEtbiJ9LGluY3JlbWVudGFsOiEwLG1heDpudWxsLG1pbjpudWxsLG51bWJlckZv
cm1hdDpudWxsLHBhZ2U6MTAsc3RlcDoxLGNoYW5nZTpudWxsLHNwaW46bnVsbCxzdGFydDpudWxs
LHN0b3A6bnVsbH0sX2NyZWF0ZTpmdW5jdGlvbigpe3RoaXMuX3NldE9wdGlvbigibWF4Iix0aGlz
Lm9wdGlvbnMubWF4KSx0aGlzLl9zZXRPcHRpb24oIm1pbiIsdGhpcy5vcHRpb25zLm1pbiksdGhp
cy5fc2V0T3B0aW9uKCJzdGVwIix0aGlzLm9wdGlvbnMuc3RlcCksIiIhPT10aGlzLnZhbHVlKCkm
JnRoaXMuX3ZhbHVlKHRoaXMuZWxlbWVudC52YWwoKSwhMCksdGhpcy5fZHJhdygpLHRoaXMuX29u
KHRoaXMuX2V2ZW50cyksdGhpcy5fcmVmcmVzaCgpLHRoaXMuX29uKHRoaXMud2luZG93LHtiZWZv
cmV1bmxvYWQ6ZnVuY3Rpb24oKXt0aGlzLmVsZW1lbnQucmVtb3ZlQXR0cigiYXV0b2NvbXBsZXRl
Iil9fSl9LF9nZXRDcmVhdGVPcHRpb25zOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fc3VwZXIoKSxp
PXRoaXMuZWxlbWVudDtyZXR1cm4gdC5lYWNoKFsibWluIiwibWF4Iiwic3RlcCJdLGZ1bmN0aW9u
KHQscyl7dmFyIG49aS5hdHRyKHMpO251bGwhPW4mJm4ubGVuZ3RoJiYoZVtzXT1uKX0pLGV9LF9l
dmVudHM6e2tleWRvd246ZnVuY3Rpb24odCl7dGhpcy5fc3RhcnQodCkmJnRoaXMuX2tleWRvd24o
dCkmJnQucHJldmVudERlZmF1bHQoKX0sa2V5dXA6Il9zdG9wIixmb2N1czpmdW5jdGlvbigpe3Ro
aXMucHJldmlvdXM9dGhpcy5lbGVtZW50LnZhbCgpfSxibHVyOmZ1bmN0aW9uKHQpe3JldHVybiB0
aGlzLmNhbmNlbEJsdXI/KGRlbGV0ZSB0aGlzLmNhbmNlbEJsdXIsdm9pZCAwKToodGhpcy5fc3Rv
cCgpLHRoaXMuX3JlZnJlc2goKSx0aGlzLnByZXZpb3VzIT09dGhpcy5lbGVtZW50LnZhbCgpJiZ0
aGlzLl90cmlnZ2VyKCJjaGFuZ2UiLHQpLHZvaWQgMCl9LG1vdXNld2hlZWw6ZnVuY3Rpb24odCxl
KXtpZihlKXtpZighdGhpcy5zcGlubmluZyYmIXRoaXMuX3N0YXJ0KHQpKXJldHVybiExO3RoaXMu
X3NwaW4oKGU+MD8xOi0xKSp0aGlzLm9wdGlvbnMuc3RlcCx0KSxjbGVhclRpbWVvdXQodGhpcy5t
b3VzZXdoZWVsVGltZXIpLHRoaXMubW91c2V3aGVlbFRpbWVyPXRoaXMuX2RlbGF5KGZ1bmN0aW9u
KCl7dGhpcy5zcGlubmluZyYmdGhpcy5fc3RvcCh0KX0sMTAwKSx0LnByZXZlbnREZWZhdWx0KCl9
fSwibW91c2Vkb3duIC51aS1zcGlubmVyLWJ1dHRvbiI6ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gaSgp
e3ZhciBlPXRoaXMuZWxlbWVudFswXT09PXQudWkuc2FmZUFjdGl2ZUVsZW1lbnQodGhpcy5kb2N1
bWVudFswXSk7ZXx8KHRoaXMuZWxlbWVudC50cmlnZ2VyKCJmb2N1cyIpLHRoaXMucHJldmlvdXM9
cyx0aGlzLl9kZWxheShmdW5jdGlvbigpe3RoaXMucHJldmlvdXM9c30pKX12YXIgcztzPXRoaXMu
ZWxlbWVudFswXT09PXQudWkuc2FmZUFjdGl2ZUVsZW1lbnQodGhpcy5kb2N1bWVudFswXSk/dGhp
cy5wcmV2aW91czp0aGlzLmVsZW1lbnQudmFsKCksZS5wcmV2ZW50RGVmYXVsdCgpLGkuY2FsbCh0
aGlzKSx0aGlzLmNhbmNlbEJsdXI9ITAsdGhpcy5fZGVsYXkoZnVuY3Rpb24oKXtkZWxldGUgdGhp
cy5jYW5jZWxCbHVyLGkuY2FsbCh0aGlzKX0pLHRoaXMuX3N0YXJ0KGUpIT09ITEmJnRoaXMuX3Jl
cGVhdChudWxsLHQoZS5jdXJyZW50VGFyZ2V0KS5oYXNDbGFzcygidWktc3Bpbm5lci11cCIpPzE6
LTEsZSl9LCJtb3VzZXVwIC51aS1zcGlubmVyLWJ1dHRvbiI6Il9zdG9wIiwibW91c2VlbnRlciAu
dWktc3Bpbm5lci1idXR0b24iOmZ1bmN0aW9uKGUpe3JldHVybiB0KGUuY3VycmVudFRhcmdldCku
aGFzQ2xhc3MoInVpLXN0YXRlLWFjdGl2ZSIpP3RoaXMuX3N0YXJ0KGUpPT09ITE/ITE6KHRoaXMu
X3JlcGVhdChudWxsLHQoZS5jdXJyZW50VGFyZ2V0KS5oYXNDbGFzcygidWktc3Bpbm5lci11cCIp
PzE6LTEsZSksdm9pZCAwKTp2b2lkIDB9LCJtb3VzZWxlYXZlIC51aS1zcGlubmVyLWJ1dHRvbiI6
Il9zdG9wIn0sX2VuaGFuY2U6ZnVuY3Rpb24oKXt0aGlzLnVpU3Bpbm5lcj10aGlzLmVsZW1lbnQu
YXR0cigiYXV0b2NvbXBsZXRlIiwib2ZmIikud3JhcCgiPHNwYW4+IikucGFyZW50KCkuYXBwZW5k
KCI8YT48L2E+PGE+PC9hPiIpfSxfZHJhdzpmdW5jdGlvbigpe3RoaXMuX2VuaGFuY2UoKSx0aGlz
Ll9hZGRDbGFzcyh0aGlzLnVpU3Bpbm5lciwidWktc3Bpbm5lciIsInVpLXdpZGdldCB1aS13aWRn
ZXQtY29udGVudCIpLHRoaXMuX2FkZENsYXNzKCJ1aS1zcGlubmVyLWlucHV0IiksdGhpcy5lbGVt
ZW50LmF0dHIoInJvbGUiLCJzcGluYnV0dG9uIiksdGhpcy5idXR0b25zPXRoaXMudWlTcGlubmVy
LmNoaWxkcmVuKCJhIikuYXR0cigidGFiSW5kZXgiLC0xKS5hdHRyKCJhcmlhLWhpZGRlbiIsITAp
LmJ1dHRvbih7Y2xhc3Nlczp7InVpLWJ1dHRvbiI6IiJ9fSksdGhpcy5fcmVtb3ZlQ2xhc3ModGhp
cy5idXR0b25zLCJ1aS1jb3JuZXItYWxsIiksdGhpcy5fYWRkQ2xhc3ModGhpcy5idXR0b25zLmZp
cnN0KCksInVpLXNwaW5uZXItYnV0dG9uIHVpLXNwaW5uZXItdXAiKSx0aGlzLl9hZGRDbGFzcyh0
aGlzLmJ1dHRvbnMubGFzdCgpLCJ1aS1zcGlubmVyLWJ1dHRvbiB1aS1zcGlubmVyLWRvd24iKSx0
aGlzLmJ1dHRvbnMuZmlyc3QoKS5idXR0b24oe2ljb246dGhpcy5vcHRpb25zLmljb25zLnVwLHNo
b3dMYWJlbDohMX0pLHRoaXMuYnV0dG9ucy5sYXN0KCkuYnV0dG9uKHtpY29uOnRoaXMub3B0aW9u
cy5pY29ucy5kb3duLHNob3dMYWJlbDohMX0pLHRoaXMuYnV0dG9ucy5oZWlnaHQoKT5NYXRoLmNl
aWwoLjUqdGhpcy51aVNwaW5uZXIuaGVpZ2h0KCkpJiZ0aGlzLnVpU3Bpbm5lci5oZWlnaHQoKT4w
JiZ0aGlzLnVpU3Bpbm5lci5oZWlnaHQodGhpcy51aVNwaW5uZXIuaGVpZ2h0KCkpfSxfa2V5ZG93
bjpmdW5jdGlvbihlKXt2YXIgaT10aGlzLm9wdGlvbnMscz10LnVpLmtleUNvZGU7c3dpdGNoKGUu
a2V5Q29kZSl7Y2FzZSBzLlVQOnJldHVybiB0aGlzLl9yZXBlYXQobnVsbCwxLGUpLCEwO2Nhc2Ug
cy5ET1dOOnJldHVybiB0aGlzLl9yZXBlYXQobnVsbCwtMSxlKSwhMDtjYXNlIHMuUEFHRV9VUDpy
ZXR1cm4gdGhpcy5fcmVwZWF0KG51bGwsaS5wYWdlLGUpLCEwO2Nhc2Ugcy5QQUdFX0RPV046cmV0
dXJuIHRoaXMuX3JlcGVhdChudWxsLC1pLnBhZ2UsZSksITB9cmV0dXJuITF9LF9zdGFydDpmdW5j
dGlvbih0KXtyZXR1cm4gdGhpcy5zcGlubmluZ3x8dGhpcy5fdHJpZ2dlcigic3RhcnQiLHQpIT09
ITE/KHRoaXMuY291bnRlcnx8KHRoaXMuY291bnRlcj0xKSx0aGlzLnNwaW5uaW5nPSEwLCEwKToh
MX0sX3JlcGVhdDpmdW5jdGlvbih0LGUsaSl7dD10fHw1MDAsY2xlYXJUaW1lb3V0KHRoaXMudGlt
ZXIpLHRoaXMudGltZXI9dGhpcy5fZGVsYXkoZnVuY3Rpb24oKXt0aGlzLl9yZXBlYXQoNDAsZSxp
KX0sdCksdGhpcy5fc3BpbihlKnRoaXMub3B0aW9ucy5zdGVwLGkpfSxfc3BpbjpmdW5jdGlvbih0
LGUpe3ZhciBpPXRoaXMudmFsdWUoKXx8MDt0aGlzLmNvdW50ZXJ8fCh0aGlzLmNvdW50ZXI9MSks
aT10aGlzLl9hZGp1c3RWYWx1ZShpK3QqdGhpcy5faW5jcmVtZW50KHRoaXMuY291bnRlcikpLHRo
aXMuc3Bpbm5pbmcmJnRoaXMuX3RyaWdnZXIoInNwaW4iLGUse3ZhbHVlOml9KT09PSExfHwodGhp
cy5fdmFsdWUoaSksdGhpcy5jb3VudGVyKyspfSxfaW5jcmVtZW50OmZ1bmN0aW9uKGUpe3ZhciBp
PXRoaXMub3B0aW9ucy5pbmNyZW1lbnRhbDtyZXR1cm4gaT90LmlzRnVuY3Rpb24oaSk/aShlKTpN
YXRoLmZsb29yKGUqZSplLzVlNC1lKmUvNTAwKzE3KmUvMjAwKzEpOjF9LF9wcmVjaXNpb246ZnVu
Y3Rpb24oKXt2YXIgdD10aGlzLl9wcmVjaXNpb25PZih0aGlzLm9wdGlvbnMuc3RlcCk7cmV0dXJu
IG51bGwhPT10aGlzLm9wdGlvbnMubWluJiYodD1NYXRoLm1heCh0LHRoaXMuX3ByZWNpc2lvbk9m
KHRoaXMub3B0aW9ucy5taW4pKSksdH0sX3ByZWNpc2lvbk9mOmZ1bmN0aW9uKHQpe3ZhciBlPSIi
K3QsaT1lLmluZGV4T2YoIi4iKTtyZXR1cm4tMT09PWk/MDplLmxlbmd0aC1pLTF9LF9hZGp1c3RW
YWx1ZTpmdW5jdGlvbih0KXt2YXIgZSxpLHM9dGhpcy5vcHRpb25zO3JldHVybiBlPW51bGwhPT1z
Lm1pbj9zLm1pbjowLGk9dC1lLGk9TWF0aC5yb3VuZChpL3Muc3RlcCkqcy5zdGVwLHQ9ZStpLHQ9
cGFyc2VGbG9hdCh0LnRvRml4ZWQodGhpcy5fcHJlY2lzaW9uKCkpKSxudWxsIT09cy5tYXgmJnQ+
cy5tYXg/cy5tYXg6bnVsbCE9PXMubWluJiZzLm1pbj50P3MubWluOnR9LF9zdG9wOmZ1bmN0aW9u
KHQpe3RoaXMuc3Bpbm5pbmcmJihjbGVhclRpbWVvdXQodGhpcy50aW1lciksY2xlYXJUaW1lb3V0
KHRoaXMubW91c2V3aGVlbFRpbWVyKSx0aGlzLmNvdW50ZXI9MCx0aGlzLnNwaW5uaW5nPSExLHRo
aXMuX3RyaWdnZXIoInN0b3AiLHQpKX0sX3NldE9wdGlvbjpmdW5jdGlvbih0LGUpe3ZhciBpLHMs
bjtyZXR1cm4iY3VsdHVyZSI9PT10fHwibnVtYmVyRm9ybWF0Ij09PXQ/KGk9dGhpcy5fcGFyc2Uo
dGhpcy5lbGVtZW50LnZhbCgpKSx0aGlzLm9wdGlvbnNbdF09ZSx0aGlzLmVsZW1lbnQudmFsKHRo
aXMuX2Zvcm1hdChpKSksdm9pZCAwKTooKCJtYXgiPT09dHx8Im1pbiI9PT10fHwic3RlcCI9PT10
KSYmInN0cmluZyI9PXR5cGVvZiBlJiYoZT10aGlzLl9wYXJzZShlKSksImljb25zIj09PXQmJihz
PXRoaXMuYnV0dG9ucy5maXJzdCgpLmZpbmQoIi51aS1pY29uIiksdGhpcy5fcmVtb3ZlQ2xhc3Mo
cyxudWxsLHRoaXMub3B0aW9ucy5pY29ucy51cCksdGhpcy5fYWRkQ2xhc3MocyxudWxsLGUudXAp
LG49dGhpcy5idXR0b25zLmxhc3QoKS5maW5kKCIudWktaWNvbiIpLHRoaXMuX3JlbW92ZUNsYXNz
KG4sbnVsbCx0aGlzLm9wdGlvbnMuaWNvbnMuZG93biksdGhpcy5fYWRkQ2xhc3MobixudWxsLGUu
ZG93bikpLHRoaXMuX3N1cGVyKHQsZSksdm9pZCAwKX0sX3NldE9wdGlvbkRpc2FibGVkOmZ1bmN0
aW9uKHQpe3RoaXMuX3N1cGVyKHQpLHRoaXMuX3RvZ2dsZUNsYXNzKHRoaXMudWlTcGlubmVyLG51
bGwsInVpLXN0YXRlLWRpc2FibGVkIiwhIXQpLHRoaXMuZWxlbWVudC5wcm9wKCJkaXNhYmxlZCIs
ISF0KSx0aGlzLmJ1dHRvbnMuYnV0dG9uKHQ/ImRpc2FibGUiOiJlbmFibGUiKX0sX3NldE9wdGlv
bnM6cihmdW5jdGlvbih0KXt0aGlzLl9zdXBlcih0KX0pLF9wYXJzZTpmdW5jdGlvbih0KXtyZXR1
cm4ic3RyaW5nIj09dHlwZW9mIHQmJiIiIT09dCYmKHQ9d2luZG93Lkdsb2JhbGl6ZSYmdGhpcy5v
cHRpb25zLm51bWJlckZvcm1hdD9HbG9iYWxpemUucGFyc2VGbG9hdCh0LDEwLHRoaXMub3B0aW9u
cy5jdWx0dXJlKTordCksIiI9PT10fHxpc05hTih0KT9udWxsOnR9LF9mb3JtYXQ6ZnVuY3Rpb24o
dCl7cmV0dXJuIiI9PT10PyIiOndpbmRvdy5HbG9iYWxpemUmJnRoaXMub3B0aW9ucy5udW1iZXJG
b3JtYXQ/R2xvYmFsaXplLmZvcm1hdCh0LHRoaXMub3B0aW9ucy5udW1iZXJGb3JtYXQsdGhpcy5v
cHRpb25zLmN1bHR1cmUpOnR9LF9yZWZyZXNoOmZ1bmN0aW9uKCl7dGhpcy5lbGVtZW50LmF0dHIo
eyJhcmlhLXZhbHVlbWluIjp0aGlzLm9wdGlvbnMubWluLCJhcmlhLXZhbHVlbWF4Ijp0aGlzLm9w
dGlvbnMubWF4LCJhcmlhLXZhbHVlbm93Ijp0aGlzLl9wYXJzZSh0aGlzLmVsZW1lbnQudmFsKCkp
fSl9LGlzVmFsaWQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnZhbHVlKCk7cmV0dXJuIG51bGw9PT10
PyExOnQ9PT10aGlzLl9hZGp1c3RWYWx1ZSh0KX0sX3ZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk7
IiIhPT10JiYoaT10aGlzLl9wYXJzZSh0KSxudWxsIT09aSYmKGV8fChpPXRoaXMuX2FkanVzdFZh
bHVlKGkpKSx0PXRoaXMuX2Zvcm1hdChpKSkpLHRoaXMuZWxlbWVudC52YWwodCksdGhpcy5fcmVm
cmVzaCgpfSxfZGVzdHJveTpmdW5jdGlvbigpe3RoaXMuZWxlbWVudC5wcm9wKCJkaXNhYmxlZCIs
ITEpLnJlbW92ZUF0dHIoImF1dG9jb21wbGV0ZSByb2xlIGFyaWEtdmFsdWVtaW4gYXJpYS12YWx1
ZW1heCBhcmlhLXZhbHVlbm93IiksdGhpcy51aVNwaW5uZXIucmVwbGFjZVdpdGgodGhpcy5lbGVt
ZW50KX0sc3RlcFVwOnIoZnVuY3Rpb24odCl7dGhpcy5fc3RlcFVwKHQpfSksX3N0ZXBVcDpmdW5j
dGlvbih0KXt0aGlzLl9zdGFydCgpJiYodGhpcy5fc3BpbigodHx8MSkqdGhpcy5vcHRpb25zLnN0
ZXApLHRoaXMuX3N0b3AoKSl9LHN0ZXBEb3duOnIoZnVuY3Rpb24odCl7dGhpcy5fc3RlcERvd24o
dCl9KSxfc3RlcERvd246ZnVuY3Rpb24odCl7dGhpcy5fc3RhcnQoKSYmKHRoaXMuX3NwaW4oKHR8
fDEpKi10aGlzLm9wdGlvbnMuc3RlcCksdGhpcy5fc3RvcCgpKX0scGFnZVVwOnIoZnVuY3Rpb24o
dCl7dGhpcy5fc3RlcFVwKCh0fHwxKSp0aGlzLm9wdGlvbnMucGFnZSl9KSxwYWdlRG93bjpyKGZ1
bmN0aW9uKHQpe3RoaXMuX3N0ZXBEb3duKCh0fHwxKSp0aGlzLm9wdGlvbnMucGFnZSl9KSx2YWx1
ZTpmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocih0aGlzLl92YWx1ZSkuY2Fs
bCh0aGlzLHQpLHZvaWQgMCk6dGhpcy5fcGFyc2UodGhpcy5lbGVtZW50LnZhbCgpKX0sd2lkZ2V0
OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudWlTcGlubmVyfX0pLHQudWlCYWNrQ29tcGF0IT09ITEm
JnQud2lkZ2V0KCJ1aS5zcGlubmVyIix0LnVpLnNwaW5uZXIse19lbmhhbmNlOmZ1bmN0aW9uKCl7
dGhpcy51aVNwaW5uZXI9dGhpcy5lbGVtZW50LmF0dHIoImF1dG9jb21wbGV0ZSIsIm9mZiIpLndy
YXAodGhpcy5fdWlTcGlubmVySHRtbCgpKS5wYXJlbnQoKS5hcHBlbmQodGhpcy5fYnV0dG9uSHRt
bCgpKX0sX3VpU3Bpbm5lckh0bWw6ZnVuY3Rpb24oKXtyZXR1cm4iPHNwYW4+In0sX2J1dHRvbkh0
bWw6ZnVuY3Rpb24oKXtyZXR1cm4iPGE+PC9hPjxhPjwvYT4ifX0pLHQudWkuc3Bpbm5lcix0Lndp
ZGdldCgidWkudGFicyIse3ZlcnNpb246IjEuMTIuMSIsZGVsYXk6MzAwLG9wdGlvbnM6e2FjdGl2
ZTpudWxsLGNsYXNzZXM6eyJ1aS10YWJzIjoidWktY29ybmVyLWFsbCIsInVpLXRhYnMtbmF2Ijoi
dWktY29ybmVyLWFsbCIsInVpLXRhYnMtcGFuZWwiOiJ1aS1jb3JuZXItYm90dG9tIiwidWktdGFi
cy10YWIiOiJ1aS1jb3JuZXItdG9wIn0sY29sbGFwc2libGU6ITEsZXZlbnQ6ImNsaWNrIixoZWln
aHRTdHlsZToiY29udGVudCIsaGlkZTpudWxsLHNob3c6bnVsbCxhY3RpdmF0ZTpudWxsLGJlZm9y
ZUFjdGl2YXRlOm51bGwsYmVmb3JlTG9hZDpudWxsLGxvYWQ6bnVsbH0sX2lzTG9jYWw6ZnVuY3Rp
b24oKXt2YXIgdD0vIy4qJC87cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciBpLHM7aT1lLmhyZWYucmVw
bGFjZSh0LCIiKSxzPWxvY2F0aW9uLmhyZWYucmVwbGFjZSh0LCIiKTt0cnl7aT1kZWNvZGVVUklD
b21wb25lbnQoaSl9Y2F0Y2gobil7fXRyeXtzPWRlY29kZVVSSUNvbXBvbmVudChzKX1jYXRjaChu
KXt9cmV0dXJuIGUuaGFzaC5sZW5ndGg+MSYmaT09PXN9fSgpLF9jcmVhdGU6ZnVuY3Rpb24oKXt2
YXIgZT10aGlzLGk9dGhpcy5vcHRpb25zO3RoaXMucnVubmluZz0hMSx0aGlzLl9hZGRDbGFzcygi
dWktdGFicyIsInVpLXdpZGdldCB1aS13aWRnZXQtY29udGVudCIpLHRoaXMuX3RvZ2dsZUNsYXNz
KCJ1aS10YWJzLWNvbGxhcHNpYmxlIixudWxsLGkuY29sbGFwc2libGUpLHRoaXMuX3Byb2Nlc3NU
YWJzKCksaS5hY3RpdmU9dGhpcy5faW5pdGlhbEFjdGl2ZSgpLHQuaXNBcnJheShpLmRpc2FibGVk
KSYmKGkuZGlzYWJsZWQ9dC51bmlxdWUoaS5kaXNhYmxlZC5jb25jYXQodC5tYXAodGhpcy50YWJz
LmZpbHRlcigiLnVpLXN0YXRlLWRpc2FibGVkIiksZnVuY3Rpb24odCl7cmV0dXJuIGUudGFicy5p
bmRleCh0KX0pKSkuc29ydCgpKSx0aGlzLmFjdGl2ZT10aGlzLm9wdGlvbnMuYWN0aXZlIT09ITEm
JnRoaXMuYW5jaG9ycy5sZW5ndGg/dGhpcy5fZmluZEFjdGl2ZShpLmFjdGl2ZSk6dCgpLHRoaXMu
X3JlZnJlc2goKSx0aGlzLmFjdGl2ZS5sZW5ndGgmJnRoaXMubG9hZChpLmFjdGl2ZSl9LF9pbml0
aWFsQWN0aXZlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vcHRpb25zLmFjdGl2ZSxpPXRoaXMub3B0
aW9ucy5jb2xsYXBzaWJsZSxzPWxvY2F0aW9uLmhhc2guc3Vic3RyaW5nKDEpO3JldHVybiBudWxs
PT09ZSYmKHMmJnRoaXMudGFicy5lYWNoKGZ1bmN0aW9uKGksbil7cmV0dXJuIHQobikuYXR0cigi
YXJpYS1jb250cm9scyIpPT09cz8oZT1pLCExKTp2b2lkIDB9KSxudWxsPT09ZSYmKGU9dGhpcy50
YWJzLmluZGV4KHRoaXMudGFicy5maWx0ZXIoIi51aS10YWJzLWFjdGl2ZSIpKSksKG51bGw9PT1l
fHwtMT09PWUpJiYoZT10aGlzLnRhYnMubGVuZ3RoPzA6ITEpKSxlIT09ITEmJihlPXRoaXMudGFi
cy5pbmRleCh0aGlzLnRhYnMuZXEoZSkpLC0xPT09ZSYmKGU9aT8hMTowKSksIWkmJmU9PT0hMSYm
dGhpcy5hbmNob3JzLmxlbmd0aCYmKGU9MCksZX0sX2dldENyZWF0ZUV2ZW50RGF0YTpmdW5jdGlv
bigpe3JldHVybnt0YWI6dGhpcy5hY3RpdmUscGFuZWw6dGhpcy5hY3RpdmUubGVuZ3RoP3RoaXMu
X2dldFBhbmVsRm9yVGFiKHRoaXMuYWN0aXZlKTp0KCl9fSxfdGFiS2V5ZG93bjpmdW5jdGlvbihl
KXt2YXIgaT10KHQudWkuc2FmZUFjdGl2ZUVsZW1lbnQodGhpcy5kb2N1bWVudFswXSkpLmNsb3Nl
c3QoImxpIikscz10aGlzLnRhYnMuaW5kZXgoaSksbj0hMDtpZighdGhpcy5faGFuZGxlUGFnZU5h
dihlKSl7c3dpdGNoKGUua2V5Q29kZSl7Y2FzZSB0LnVpLmtleUNvZGUuUklHSFQ6Y2FzZSB0LnVp
LmtleUNvZGUuRE9XTjpzKys7YnJlYWs7Y2FzZSB0LnVpLmtleUNvZGUuVVA6Y2FzZSB0LnVpLmtl
eUNvZGUuTEVGVDpuPSExLHMtLTticmVhaztjYXNlIHQudWkua2V5Q29kZS5FTkQ6cz10aGlzLmFu
Y2hvcnMubGVuZ3RoLTE7YnJlYWs7Y2FzZSB0LnVpLmtleUNvZGUuSE9NRTpzPTA7YnJlYWs7Y2Fz
ZSB0LnVpLmtleUNvZGUuU1BBQ0U6cmV0dXJuIGUucHJldmVudERlZmF1bHQoKSxjbGVhclRpbWVv
dXQodGhpcy5hY3RpdmF0aW5nKSx0aGlzLl9hY3RpdmF0ZShzKSx2b2lkIDA7Y2FzZSB0LnVpLmtl
eUNvZGUuRU5URVI6cmV0dXJuIGUucHJldmVudERlZmF1bHQoKSxjbGVhclRpbWVvdXQodGhpcy5h
Y3RpdmF0aW5nKSx0aGlzLl9hY3RpdmF0ZShzPT09dGhpcy5vcHRpb25zLmFjdGl2ZT8hMTpzKSx2
b2lkIDA7ZGVmYXVsdDpyZXR1cm59ZS5wcmV2ZW50RGVmYXVsdCgpLGNsZWFyVGltZW91dCh0aGlz
LmFjdGl2YXRpbmcpLHM9dGhpcy5fZm9jdXNOZXh0VGFiKHMsbiksZS5jdHJsS2V5fHxlLm1ldGFL
ZXl8fChpLmF0dHIoImFyaWEtc2VsZWN0ZWQiLCJmYWxzZSIpLHRoaXMudGFicy5lcShzKS5hdHRy
KCJhcmlhLXNlbGVjdGVkIiwidHJ1ZSIpLHRoaXMuYWN0aXZhdGluZz10aGlzLl9kZWxheShmdW5j
dGlvbigpe3RoaXMub3B0aW9uKCJhY3RpdmUiLHMpfSx0aGlzLmRlbGF5KSl9fSxfcGFuZWxLZXlk
b3duOmZ1bmN0aW9uKGUpe3RoaXMuX2hhbmRsZVBhZ2VOYXYoZSl8fGUuY3RybEtleSYmZS5rZXlD
b2RlPT09dC51aS5rZXlDb2RlLlVQJiYoZS5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuYWN0aXZlLnRy
aWdnZXIoImZvY3VzIikpfSxfaGFuZGxlUGFnZU5hdjpmdW5jdGlvbihlKXtyZXR1cm4gZS5hbHRL
ZXkmJmUua2V5Q29kZT09PXQudWkua2V5Q29kZS5QQUdFX1VQPyh0aGlzLl9hY3RpdmF0ZSh0aGlz
Ll9mb2N1c05leHRUYWIodGhpcy5vcHRpb25zLmFjdGl2ZS0xLCExKSksITApOmUuYWx0S2V5JiZl
LmtleUNvZGU9PT10LnVpLmtleUNvZGUuUEFHRV9ET1dOPyh0aGlzLl9hY3RpdmF0ZSh0aGlzLl9m
b2N1c05leHRUYWIodGhpcy5vcHRpb25zLmFjdGl2ZSsxLCEwKSksITApOnZvaWQgMH0sX2ZpbmRO
ZXh0VGFiOmZ1bmN0aW9uKGUsaSl7ZnVuY3Rpb24gcygpe3JldHVybiBlPm4mJihlPTApLDA+ZSYm
KGU9biksZX1mb3IodmFyIG49dGhpcy50YWJzLmxlbmd0aC0xOy0xIT09dC5pbkFycmF5KHMoKSx0
aGlzLm9wdGlvbnMuZGlzYWJsZWQpOyllPWk/ZSsxOmUtMTtyZXR1cm4gZX0sX2ZvY3VzTmV4dFRh
YjpmdW5jdGlvbih0LGUpe3JldHVybiB0PXRoaXMuX2ZpbmROZXh0VGFiKHQsZSksdGhpcy50YWJz
LmVxKHQpLnRyaWdnZXIoImZvY3VzIiksdH0sX3NldE9wdGlvbjpmdW5jdGlvbih0LGUpe3JldHVy
biJhY3RpdmUiPT09dD8odGhpcy5fYWN0aXZhdGUoZSksdm9pZCAwKToodGhpcy5fc3VwZXIodCxl
KSwiY29sbGFwc2libGUiPT09dCYmKHRoaXMuX3RvZ2dsZUNsYXNzKCJ1aS10YWJzLWNvbGxhcHNp
YmxlIixudWxsLGUpLGV8fHRoaXMub3B0aW9ucy5hY3RpdmUhPT0hMXx8dGhpcy5fYWN0aXZhdGUo
MCkpLCJldmVudCI9PT10JiZ0aGlzLl9zZXR1cEV2ZW50cyhlKSwiaGVpZ2h0U3R5bGUiPT09dCYm
dGhpcy5fc2V0dXBIZWlnaHRTdHlsZShlKSx2b2lkIDApfSxfc2FuaXRpemVTZWxlY3RvcjpmdW5j
dGlvbih0KXtyZXR1cm4gdD90LnJlcGxhY2UoL1shIiQlJicoKSorLC5cLzo7PD0+P0BcW1xdXF5g
e3x9fl0vZywiXFwkJiIpOiIifSxyZWZyZXNoOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vcHRpb25z
LGk9dGhpcy50YWJsaXN0LmNoaWxkcmVuKCI6aGFzKGFbaHJlZl0pIik7ZS5kaXNhYmxlZD10Lm1h
cChpLmZpbHRlcigiLnVpLXN0YXRlLWRpc2FibGVkIiksZnVuY3Rpb24odCl7cmV0dXJuIGkuaW5k
ZXgodCl9KSx0aGlzLl9wcm9jZXNzVGFicygpLGUuYWN0aXZlIT09ITEmJnRoaXMuYW5jaG9ycy5s
ZW5ndGg/dGhpcy5hY3RpdmUubGVuZ3RoJiYhdC5jb250YWlucyh0aGlzLnRhYmxpc3RbMF0sdGhp
cy5hY3RpdmVbMF0pP3RoaXMudGFicy5sZW5ndGg9PT1lLmRpc2FibGVkLmxlbmd0aD8oZS5hY3Rp
dmU9ITEsdGhpcy5hY3RpdmU9dCgpKTp0aGlzLl9hY3RpdmF0ZSh0aGlzLl9maW5kTmV4dFRhYihN
YXRoLm1heCgwLGUuYWN0aXZlLTEpLCExKSk6ZS5hY3RpdmU9dGhpcy50YWJzLmluZGV4KHRoaXMu
YWN0aXZlKTooZS5hY3RpdmU9ITEsdGhpcy5hY3RpdmU9dCgpKSx0aGlzLl9yZWZyZXNoKCl9LF9y
ZWZyZXNoOmZ1bmN0aW9uKCl7dGhpcy5fc2V0T3B0aW9uRGlzYWJsZWQodGhpcy5vcHRpb25zLmRp
c2FibGVkKSx0aGlzLl9zZXR1cEV2ZW50cyh0aGlzLm9wdGlvbnMuZXZlbnQpLHRoaXMuX3NldHVw
SGVpZ2h0U3R5bGUodGhpcy5vcHRpb25zLmhlaWdodFN0eWxlKSx0aGlzLnRhYnMubm90KHRoaXMu
YWN0aXZlKS5hdHRyKHsiYXJpYS1zZWxlY3RlZCI6ImZhbHNlIiwiYXJpYS1leHBhbmRlZCI6ImZh
bHNlIix0YWJJbmRleDotMX0pLHRoaXMucGFuZWxzLm5vdCh0aGlzLl9nZXRQYW5lbEZvclRhYih0
aGlzLmFjdGl2ZSkpLmhpZGUoKS5hdHRyKHsiYXJpYS1oaWRkZW4iOiJ0cnVlIn0pLHRoaXMuYWN0
aXZlLmxlbmd0aD8odGhpcy5hY3RpdmUuYXR0cih7ImFyaWEtc2VsZWN0ZWQiOiJ0cnVlIiwiYXJp
YS1leHBhbmRlZCI6InRydWUiLHRhYkluZGV4OjB9KSx0aGlzLl9hZGRDbGFzcyh0aGlzLmFjdGl2
ZSwidWktdGFicy1hY3RpdmUiLCJ1aS1zdGF0ZS1hY3RpdmUiKSx0aGlzLl9nZXRQYW5lbEZvclRh
Yih0aGlzLmFjdGl2ZSkuc2hvdygpLmF0dHIoeyJhcmlhLWhpZGRlbiI6ImZhbHNlIn0pKTp0aGlz
LnRhYnMuZXEoMCkuYXR0cigidGFiSW5kZXgiLDApfSxfcHJvY2Vzc1RhYnM6ZnVuY3Rpb24oKXt2
YXIgZT10aGlzLGk9dGhpcy50YWJzLHM9dGhpcy5hbmNob3JzLG49dGhpcy5wYW5lbHM7dGhpcy50
YWJsaXN0PXRoaXMuX2dldExpc3QoKS5hdHRyKCJyb2xlIiwidGFibGlzdCIpLHRoaXMuX2FkZENs
YXNzKHRoaXMudGFibGlzdCwidWktdGFicy1uYXYiLCJ1aS1oZWxwZXItcmVzZXQgdWktaGVscGVy
LWNsZWFyZml4IHVpLXdpZGdldC1oZWFkZXIiKSx0aGlzLnRhYmxpc3Qub24oIm1vdXNlZG93biIr
dGhpcy5ldmVudE5hbWVzcGFjZSwiPiBsaSIsZnVuY3Rpb24oZSl7dCh0aGlzKS5pcygiLnVpLXN0
YXRlLWRpc2FibGVkIikmJmUucHJldmVudERlZmF1bHQoKX0pLm9uKCJmb2N1cyIrdGhpcy5ldmVu
dE5hbWVzcGFjZSwiLnVpLXRhYnMtYW5jaG9yIixmdW5jdGlvbigpe3QodGhpcykuY2xvc2VzdCgi
bGkiKS5pcygiLnVpLXN0YXRlLWRpc2FibGVkIikmJnRoaXMuYmx1cigpfSksdGhpcy50YWJzPXRo
aXMudGFibGlzdC5maW5kKCI+IGxpOmhhcyhhW2hyZWZdKSIpLmF0dHIoe3JvbGU6InRhYiIsdGFi
SW5kZXg6LTF9KSx0aGlzLl9hZGRDbGFzcyh0aGlzLnRhYnMsInVpLXRhYnMtdGFiIiwidWktc3Rh
dGUtZGVmYXVsdCIpLHRoaXMuYW5jaG9ycz10aGlzLnRhYnMubWFwKGZ1bmN0aW9uKCl7cmV0dXJu
IHQoImEiLHRoaXMpWzBdfSkuYXR0cih7cm9sZToicHJlc2VudGF0aW9uIix0YWJJbmRleDotMX0p
LHRoaXMuX2FkZENsYXNzKHRoaXMuYW5jaG9ycywidWktdGFicy1hbmNob3IiKSx0aGlzLnBhbmVs
cz10KCksdGhpcy5hbmNob3JzLmVhY2goZnVuY3Rpb24oaSxzKXt2YXIgbixvLGEscj10KHMpLnVu
aXF1ZUlkKCkuYXR0cigiaWQiKSxoPXQocykuY2xvc2VzdCgibGkiKSxsPWguYXR0cigiYXJpYS1j
b250cm9scyIpO2UuX2lzTG9jYWwocyk/KG49cy5oYXNoLGE9bi5zdWJzdHJpbmcoMSksbz1lLmVs
ZW1lbnQuZmluZChlLl9zYW5pdGl6ZVNlbGVjdG9yKG4pKSk6KGE9aC5hdHRyKCJhcmlhLWNvbnRy
b2xzIil8fHQoe30pLnVuaXF1ZUlkKClbMF0uaWQsbj0iIyIrYSxvPWUuZWxlbWVudC5maW5kKG4p
LG8ubGVuZ3RofHwobz1lLl9jcmVhdGVQYW5lbChhKSxvLmluc2VydEFmdGVyKGUucGFuZWxzW2kt
MV18fGUudGFibGlzdCkpLG8uYXR0cigiYXJpYS1saXZlIiwicG9saXRlIikpLG8ubGVuZ3RoJiYo
ZS5wYW5lbHM9ZS5wYW5lbHMuYWRkKG8pKSxsJiZoLmRhdGEoInVpLXRhYnMtYXJpYS1jb250cm9s
cyIsbCksaC5hdHRyKHsiYXJpYS1jb250cm9scyI6YSwiYXJpYS1sYWJlbGxlZGJ5IjpyfSksby5h
dHRyKCJhcmlhLWxhYmVsbGVkYnkiLHIpfSksdGhpcy5wYW5lbHMuYXR0cigicm9sZSIsInRhYnBh
bmVsIiksdGhpcy5fYWRkQ2xhc3ModGhpcy5wYW5lbHMsInVpLXRhYnMtcGFuZWwiLCJ1aS13aWRn
ZXQtY29udGVudCIpLGkmJih0aGlzLl9vZmYoaS5ub3QodGhpcy50YWJzKSksdGhpcy5fb2ZmKHMu
bm90KHRoaXMuYW5jaG9ycykpLHRoaXMuX29mZihuLm5vdCh0aGlzLnBhbmVscykpKX0sX2dldExp
c3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50YWJsaXN0fHx0aGlzLmVsZW1lbnQuZmluZCgib2ws
IHVsIikuZXEoMCl9LF9jcmVhdGVQYW5lbDpmdW5jdGlvbihlKXtyZXR1cm4gdCgiPGRpdj4iKS5h
dHRyKCJpZCIsZSkuZGF0YSgidWktdGFicy1kZXN0cm95IiwhMCl9LF9zZXRPcHRpb25EaXNhYmxl
ZDpmdW5jdGlvbihlKXt2YXIgaSxzLG47Zm9yKHQuaXNBcnJheShlKSYmKGUubGVuZ3RoP2UubGVu
Z3RoPT09dGhpcy5hbmNob3JzLmxlbmd0aCYmKGU9ITApOmU9ITEpLG49MDtzPXRoaXMudGFic1tu
XTtuKyspaT10KHMpLGU9PT0hMHx8LTEhPT10LmluQXJyYXkobixlKT8oaS5hdHRyKCJhcmlhLWRp
c2FibGVkIiwidHJ1ZSIpLHRoaXMuX2FkZENsYXNzKGksbnVsbCwidWktc3RhdGUtZGlzYWJsZWQi
KSk6KGkucmVtb3ZlQXR0cigiYXJpYS1kaXNhYmxlZCIpLHRoaXMuX3JlbW92ZUNsYXNzKGksbnVs
bCwidWktc3RhdGUtZGlzYWJsZWQiKSk7dGhpcy5vcHRpb25zLmRpc2FibGVkPWUsdGhpcy5fdG9n
Z2xlQ2xhc3ModGhpcy53aWRnZXQoKSx0aGlzLndpZGdldEZ1bGxOYW1lKyItZGlzYWJsZWQiLG51
bGwsZT09PSEwKX0sX3NldHVwRXZlbnRzOmZ1bmN0aW9uKGUpe3ZhciBpPXt9O2UmJnQuZWFjaChl
LnNwbGl0KCIgIiksZnVuY3Rpb24odCxlKXtpW2VdPSJfZXZlbnRIYW5kbGVyIn0pLHRoaXMuX29m
Zih0aGlzLmFuY2hvcnMuYWRkKHRoaXMudGFicykuYWRkKHRoaXMucGFuZWxzKSksdGhpcy5fb24o
ITAsdGhpcy5hbmNob3JzLHtjbGljazpmdW5jdGlvbih0KXt0LnByZXZlbnREZWZhdWx0KCl9fSks
dGhpcy5fb24odGhpcy5hbmNob3JzLGkpLHRoaXMuX29uKHRoaXMudGFicyx7a2V5ZG93bjoiX3Rh
YktleWRvd24ifSksdGhpcy5fb24odGhpcy5wYW5lbHMse2tleWRvd246Il9wYW5lbEtleWRvd24i
fSksdGhpcy5fZm9jdXNhYmxlKHRoaXMudGFicyksdGhpcy5faG92ZXJhYmxlKHRoaXMudGFicyl9
LF9zZXR1cEhlaWdodFN0eWxlOmZ1bmN0aW9uKGUpe3ZhciBpLHM9dGhpcy5lbGVtZW50LnBhcmVu
dCgpOyJmaWxsIj09PWU/KGk9cy5oZWlnaHQoKSxpLT10aGlzLmVsZW1lbnQub3V0ZXJIZWlnaHQo
KS10aGlzLmVsZW1lbnQuaGVpZ2h0KCksdGhpcy5lbGVtZW50LnNpYmxpbmdzKCI6dmlzaWJsZSIp
LmVhY2goZnVuY3Rpb24oKXt2YXIgZT10KHRoaXMpLHM9ZS5jc3MoInBvc2l0aW9uIik7ImFic29s
dXRlIiE9PXMmJiJmaXhlZCIhPT1zJiYoaS09ZS5vdXRlckhlaWdodCghMCkpfSksdGhpcy5lbGVt
ZW50LmNoaWxkcmVuKCkubm90KHRoaXMucGFuZWxzKS5lYWNoKGZ1bmN0aW9uKCl7aS09dCh0aGlz
KS5vdXRlckhlaWdodCghMCl9KSx0aGlzLnBhbmVscy5lYWNoKGZ1bmN0aW9uKCl7dCh0aGlzKS5o
ZWlnaHQoTWF0aC5tYXgoMCxpLXQodGhpcykuaW5uZXJIZWlnaHQoKSt0KHRoaXMpLmhlaWdodCgp
KSl9KS5jc3MoIm92ZXJmbG93IiwiYXV0byIpKToiYXV0byI9PT1lJiYoaT0wLHRoaXMucGFuZWxz
LmVhY2goZnVuY3Rpb24oKXtpPU1hdGgubWF4KGksdCh0aGlzKS5oZWlnaHQoIiIpLmhlaWdodCgp
KX0pLmhlaWdodChpKSl9LF9ldmVudEhhbmRsZXI6ZnVuY3Rpb24oZSl7dmFyIGk9dGhpcy5vcHRp
b25zLHM9dGhpcy5hY3RpdmUsbj10KGUuY3VycmVudFRhcmdldCksbz1uLmNsb3Nlc3QoImxpIiks
YT1vWzBdPT09c1swXSxyPWEmJmkuY29sbGFwc2libGUsaD1yP3QoKTp0aGlzLl9nZXRQYW5lbEZv
clRhYihvKSxsPXMubGVuZ3RoP3RoaXMuX2dldFBhbmVsRm9yVGFiKHMpOnQoKSxjPXtvbGRUYWI6
cyxvbGRQYW5lbDpsLG5ld1RhYjpyP3QoKTpvLG5ld1BhbmVsOmh9O2UucHJldmVudERlZmF1bHQo
KSxvLmhhc0NsYXNzKCJ1aS1zdGF0ZS1kaXNhYmxlZCIpfHxvLmhhc0NsYXNzKCJ1aS10YWJzLWxv
YWRpbmciKXx8dGhpcy5ydW5uaW5nfHxhJiYhaS5jb2xsYXBzaWJsZXx8dGhpcy5fdHJpZ2dlcigi
YmVmb3JlQWN0aXZhdGUiLGUsYyk9PT0hMXx8KGkuYWN0aXZlPXI/ITE6dGhpcy50YWJzLmluZGV4
KG8pLHRoaXMuYWN0aXZlPWE/dCgpOm8sdGhpcy54aHImJnRoaXMueGhyLmFib3J0KCksbC5sZW5n
dGh8fGgubGVuZ3RofHx0LmVycm9yKCJqUXVlcnkgVUkgVGFiczogTWlzbWF0Y2hpbmcgZnJhZ21l
bnQgaWRlbnRpZmllci4iKSxoLmxlbmd0aCYmdGhpcy5sb2FkKHRoaXMudGFicy5pbmRleChvKSxl
KSx0aGlzLl90b2dnbGUoZSxjKSl9LF90b2dnbGU6ZnVuY3Rpb24oZSxpKXtmdW5jdGlvbiBzKCl7
by5ydW5uaW5nPSExLG8uX3RyaWdnZXIoImFjdGl2YXRlIixlLGkpfWZ1bmN0aW9uIG4oKXtvLl9h
ZGRDbGFzcyhpLm5ld1RhYi5jbG9zZXN0KCJsaSIpLCJ1aS10YWJzLWFjdGl2ZSIsInVpLXN0YXRl
LWFjdGl2ZSIpLGEubGVuZ3RoJiZvLm9wdGlvbnMuc2hvdz9vLl9zaG93KGEsby5vcHRpb25zLnNo
b3cscyk6KGEuc2hvdygpLHMoKSl9dmFyIG89dGhpcyxhPWkubmV3UGFuZWwscj1pLm9sZFBhbmVs
O3RoaXMucnVubmluZz0hMCxyLmxlbmd0aCYmdGhpcy5vcHRpb25zLmhpZGU/dGhpcy5faGlkZShy
LHRoaXMub3B0aW9ucy5oaWRlLGZ1bmN0aW9uKCl7by5fcmVtb3ZlQ2xhc3MoaS5vbGRUYWIuY2xv
c2VzdCgibGkiKSwidWktdGFicy1hY3RpdmUiLCJ1aS1zdGF0ZS1hY3RpdmUiKSxuKCl9KToodGhp
cy5fcmVtb3ZlQ2xhc3MoaS5vbGRUYWIuY2xvc2VzdCgibGkiKSwidWktdGFicy1hY3RpdmUiLCJ1
aS1zdGF0ZS1hY3RpdmUiKSxyLmhpZGUoKSxuKCkpLHIuYXR0cigiYXJpYS1oaWRkZW4iLCJ0cnVl
IiksaS5vbGRUYWIuYXR0cih7ImFyaWEtc2VsZWN0ZWQiOiJmYWxzZSIsImFyaWEtZXhwYW5kZWQi
OiJmYWxzZSJ9KSxhLmxlbmd0aCYmci5sZW5ndGg/aS5vbGRUYWIuYXR0cigidGFiSW5kZXgiLC0x
KTphLmxlbmd0aCYmdGhpcy50YWJzLmZpbHRlcihmdW5jdGlvbigpe3JldHVybiAwPT09dCh0aGlz
KS5hdHRyKCJ0YWJJbmRleCIpfSkuYXR0cigidGFiSW5kZXgiLC0xKSxhLmF0dHIoImFyaWEtaGlk
ZGVuIiwiZmFsc2UiKSxpLm5ld1RhYi5hdHRyKHsiYXJpYS1zZWxlY3RlZCI6InRydWUiLCJhcmlh
LWV4cGFuZGVkIjoidHJ1ZSIsdGFiSW5kZXg6MH0pfSxfYWN0aXZhdGU6ZnVuY3Rpb24oZSl7dmFy
IGkscz10aGlzLl9maW5kQWN0aXZlKGUpO3NbMF0hPT10aGlzLmFjdGl2ZVswXSYmKHMubGVuZ3Ro
fHwocz10aGlzLmFjdGl2ZSksaT1zLmZpbmQoIi51aS10YWJzLWFuY2hvciIpWzBdLHRoaXMuX2V2
ZW50SGFuZGxlcih7dGFyZ2V0OmksY3VycmVudFRhcmdldDppLHByZXZlbnREZWZhdWx0OnQubm9v
cH0pKX0sX2ZpbmRBY3RpdmU6ZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT0hMT90KCk6dGhpcy50YWJz
LmVxKGUpfSxfZ2V0SW5kZXg6ZnVuY3Rpb24oZSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlJiYo
ZT10aGlzLmFuY2hvcnMuaW5kZXgodGhpcy5hbmNob3JzLmZpbHRlcigiW2hyZWYkPSciK3QudWku
ZXNjYXBlU2VsZWN0b3IoZSkrIiddIikpKSxlfSxfZGVzdHJveTpmdW5jdGlvbigpe3RoaXMueGhy
JiZ0aGlzLnhoci5hYm9ydCgpLHRoaXMudGFibGlzdC5yZW1vdmVBdHRyKCJyb2xlIikub2ZmKHRo
aXMuZXZlbnROYW1lc3BhY2UpLHRoaXMuYW5jaG9ycy5yZW1vdmVBdHRyKCJyb2xlIHRhYkluZGV4
IikucmVtb3ZlVW5pcXVlSWQoKSx0aGlzLnRhYnMuYWRkKHRoaXMucGFuZWxzKS5lYWNoKGZ1bmN0
aW9uKCl7dC5kYXRhKHRoaXMsInVpLXRhYnMtZGVzdHJveSIpP3QodGhpcykucmVtb3ZlKCk6dCh0
aGlzKS5yZW1vdmVBdHRyKCJyb2xlIHRhYkluZGV4IGFyaWEtbGl2ZSBhcmlhLWJ1c3kgYXJpYS1z
ZWxlY3RlZCBhcmlhLWxhYmVsbGVkYnkgYXJpYS1oaWRkZW4gYXJpYS1leHBhbmRlZCIpfSksdGhp
cy50YWJzLmVhY2goZnVuY3Rpb24oKXt2YXIgZT10KHRoaXMpLGk9ZS5kYXRhKCJ1aS10YWJzLWFy
aWEtY29udHJvbHMiKTtpP2UuYXR0cigiYXJpYS1jb250cm9scyIsaSkucmVtb3ZlRGF0YSgidWkt
dGFicy1hcmlhLWNvbnRyb2xzIik6ZS5yZW1vdmVBdHRyKCJhcmlhLWNvbnRyb2xzIil9KSx0aGlz
LnBhbmVscy5zaG93KCksImNvbnRlbnQiIT09dGhpcy5vcHRpb25zLmhlaWdodFN0eWxlJiZ0aGlz
LnBhbmVscy5jc3MoImhlaWdodCIsIiIpfSxlbmFibGU6ZnVuY3Rpb24oZSl7dmFyIGk9dGhpcy5v
cHRpb25zLmRpc2FibGVkO2khPT0hMSYmKHZvaWQgMD09PWU/aT0hMTooZT10aGlzLl9nZXRJbmRl
eChlKSxpPXQuaXNBcnJheShpKT90Lm1hcChpLGZ1bmN0aW9uKHQpe3JldHVybiB0IT09ZT90Om51
bGx9KTp0Lm1hcCh0aGlzLnRhYnMsZnVuY3Rpb24odCxpKXtyZXR1cm4gaSE9PWU/aTpudWxsfSkp
LHRoaXMuX3NldE9wdGlvbkRpc2FibGVkKGkpKX0sZGlzYWJsZTpmdW5jdGlvbihlKXt2YXIgaT10
aGlzLm9wdGlvbnMuZGlzYWJsZWQ7aWYoaSE9PSEwKXtpZih2b2lkIDA9PT1lKWk9ITA7ZWxzZXtp
ZihlPXRoaXMuX2dldEluZGV4KGUpLC0xIT09dC5pbkFycmF5KGUsaSkpcmV0dXJuO2k9dC5pc0Fy
cmF5KGkpP3QubWVyZ2UoW2VdLGkpLnNvcnQoKTpbZV19dGhpcy5fc2V0T3B0aW9uRGlzYWJsZWQo
aSl9fSxsb2FkOmZ1bmN0aW9uKGUsaSl7ZT10aGlzLl9nZXRJbmRleChlKTt2YXIgcz10aGlzLG49
dGhpcy50YWJzLmVxKGUpLG89bi5maW5kKCIudWktdGFicy1hbmNob3IiKSxhPXRoaXMuX2dldFBh
bmVsRm9yVGFiKG4pLHI9e3RhYjpuLHBhbmVsOmF9LGg9ZnVuY3Rpb24odCxlKXsiYWJvcnQiPT09
ZSYmcy5wYW5lbHMuc3RvcCghMSwhMCkscy5fcmVtb3ZlQ2xhc3MobiwidWktdGFicy1sb2FkaW5n
IiksYS5yZW1vdmVBdHRyKCJhcmlhLWJ1c3kiKSx0PT09cy54aHImJmRlbGV0ZSBzLnhocn07dGhp
cy5faXNMb2NhbChvWzBdKXx8KHRoaXMueGhyPXQuYWpheCh0aGlzLl9hamF4U2V0dGluZ3Mobyxp
LHIpKSx0aGlzLnhociYmImNhbmNlbGVkIiE9PXRoaXMueGhyLnN0YXR1c1RleHQmJih0aGlzLl9h
ZGRDbGFzcyhuLCJ1aS10YWJzLWxvYWRpbmciKSxhLmF0dHIoImFyaWEtYnVzeSIsInRydWUiKSx0
aGlzLnhoci5kb25lKGZ1bmN0aW9uKHQsZSxuKXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YS5odG1s
KHQpLHMuX3RyaWdnZXIoImxvYWQiLGksciksaChuLGUpfSwxKX0pLmZhaWwoZnVuY3Rpb24odCxl
KXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7aCh0LGUpfSwxKX0pKSl9LF9hamF4U2V0dGluZ3M6ZnVu
Y3Rpb24oZSxpLHMpe3ZhciBuPXRoaXM7cmV0dXJue3VybDplLmF0dHIoImhyZWYiKS5yZXBsYWNl
KC8jLiokLywiIiksYmVmb3JlU2VuZDpmdW5jdGlvbihlLG8pe3JldHVybiBuLl90cmlnZ2VyKCJi
ZWZvcmVMb2FkIixpLHQuZXh0ZW5kKHtqcVhIUjplLGFqYXhTZXR0aW5nczpvfSxzKSl9fX0sX2dl
dFBhbmVsRm9yVGFiOmZ1bmN0aW9uKGUpe3ZhciBpPXQoZSkuYXR0cigiYXJpYS1jb250cm9scyIp
O3JldHVybiB0aGlzLmVsZW1lbnQuZmluZCh0aGlzLl9zYW5pdGl6ZVNlbGVjdG9yKCIjIitpKSl9
fSksdC51aUJhY2tDb21wYXQhPT0hMSYmdC53aWRnZXQoInVpLnRhYnMiLHQudWkudGFicyx7X3By
b2Nlc3NUYWJzOmZ1bmN0aW9uKCl7dGhpcy5fc3VwZXJBcHBseShhcmd1bWVudHMpLHRoaXMuX2Fk
ZENsYXNzKHRoaXMudGFicywidWktdGFiIil9fSksdC51aS50YWJzLHQud2lkZ2V0KCJ1aS50b29s
dGlwIix7dmVyc2lvbjoiMS4xMi4xIixvcHRpb25zOntjbGFzc2VzOnsidWktdG9vbHRpcCI6InVp
LWNvcm5lci1hbGwgdWktd2lkZ2V0LXNoYWRvdyJ9LGNvbnRlbnQ6ZnVuY3Rpb24oKXt2YXIgZT10
KHRoaXMpLmF0dHIoInRpdGxlIil8fCIiO3JldHVybiB0KCI8YT4iKS50ZXh0KGUpLmh0bWwoKX0s
aGlkZTohMCxpdGVtczoiW3RpdGxlXTpub3QoW2Rpc2FibGVkXSkiLHBvc2l0aW9uOntteToibGVm
dCB0b3ArMTUiLGF0OiJsZWZ0IGJvdHRvbSIsY29sbGlzaW9uOiJmbGlwZml0IGZsaXAifSxzaG93
OiEwLHRyYWNrOiExLGNsb3NlOm51bGwsb3BlbjpudWxsfSxfYWRkRGVzY3JpYmVkQnk6ZnVuY3Rp
b24oZSxpKXt2YXIgcz0oZS5hdHRyKCJhcmlhLWRlc2NyaWJlZGJ5Iil8fCIiKS5zcGxpdCgvXHMr
Lyk7cy5wdXNoKGkpLGUuZGF0YSgidWktdG9vbHRpcC1pZCIsaSkuYXR0cigiYXJpYS1kZXNjcmli
ZWRieSIsdC50cmltKHMuam9pbigiICIpKSl9LF9yZW1vdmVEZXNjcmliZWRCeTpmdW5jdGlvbihl
KXt2YXIgaT1lLmRhdGEoInVpLXRvb2x0aXAtaWQiKSxzPShlLmF0dHIoImFyaWEtZGVzY3JpYmVk
YnkiKXx8IiIpLnNwbGl0KC9ccysvKSxuPXQuaW5BcnJheShpLHMpOy0xIT09biYmcy5zcGxpY2Uo
biwxKSxlLnJlbW92ZURhdGEoInVpLXRvb2x0aXAtaWQiKSxzPXQudHJpbShzLmpvaW4oIiAiKSks
cz9lLmF0dHIoImFyaWEtZGVzY3JpYmVkYnkiLHMpOmUucmVtb3ZlQXR0cigiYXJpYS1kZXNjcmli
ZWRieSIpfSxfY3JlYXRlOmZ1bmN0aW9uKCl7dGhpcy5fb24oe21vdXNlb3Zlcjoib3BlbiIsZm9j
dXNpbjoib3BlbiJ9KSx0aGlzLnRvb2x0aXBzPXt9LHRoaXMucGFyZW50cz17fSx0aGlzLmxpdmVS
ZWdpb249dCgiPGRpdj4iKS5hdHRyKHtyb2xlOiJsb2ciLCJhcmlhLWxpdmUiOiJhc3NlcnRpdmUi
LCJhcmlhLXJlbGV2YW50IjoiYWRkaXRpb25zIn0pLmFwcGVuZFRvKHRoaXMuZG9jdW1lbnRbMF0u
Ym9keSksdGhpcy5fYWRkQ2xhc3ModGhpcy5saXZlUmVnaW9uLG51bGwsInVpLWhlbHBlci1oaWRk
ZW4tYWNjZXNzaWJsZSIpLHRoaXMuZGlzYWJsZWRUaXRsZXM9dChbXSl9LF9zZXRPcHRpb246ZnVu
Y3Rpb24oZSxpKXt2YXIgcz10aGlzO3RoaXMuX3N1cGVyKGUsaSksImNvbnRlbnQiPT09ZSYmdC5l
YWNoKHRoaXMudG9vbHRpcHMsZnVuY3Rpb24odCxlKXtzLl91cGRhdGVDb250ZW50KGUuZWxlbWVu
dCl9KX0sX3NldE9wdGlvbkRpc2FibGVkOmZ1bmN0aW9uKHQpe3RoaXNbdD8iX2Rpc2FibGUiOiJf
ZW5hYmxlIl0oKX0sX2Rpc2FibGU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3QuZWFjaCh0aGlzLnRv
b2x0aXBzLGZ1bmN0aW9uKGkscyl7dmFyIG49dC5FdmVudCgiYmx1ciIpO24udGFyZ2V0PW4uY3Vy
cmVudFRhcmdldD1zLmVsZW1lbnRbMF0sZS5jbG9zZShuLCEwKX0pLHRoaXMuZGlzYWJsZWRUaXRs
ZXM9dGhpcy5kaXNhYmxlZFRpdGxlcy5hZGQodGhpcy5lbGVtZW50LmZpbmQodGhpcy5vcHRpb25z
Lml0ZW1zKS5hZGRCYWNrKCkuZmlsdGVyKGZ1bmN0aW9uKCl7dmFyIGU9dCh0aGlzKTtyZXR1cm4g
ZS5pcygiW3RpdGxlXSIpP2UuZGF0YSgidWktdG9vbHRpcC10aXRsZSIsZS5hdHRyKCJ0aXRsZSIp
KS5yZW1vdmVBdHRyKCJ0aXRsZSIpOnZvaWQgMH0pKX0sX2VuYWJsZTpmdW5jdGlvbigpe3RoaXMu
ZGlzYWJsZWRUaXRsZXMuZWFjaChmdW5jdGlvbigpe3ZhciBlPXQodGhpcyk7ZS5kYXRhKCJ1aS10
b29sdGlwLXRpdGxlIikmJmUuYXR0cigidGl0bGUiLGUuZGF0YSgidWktdG9vbHRpcC10aXRsZSIp
KX0pLHRoaXMuZGlzYWJsZWRUaXRsZXM9dChbXSl9LG9wZW46ZnVuY3Rpb24oZSl7dmFyIGk9dGhp
cyxzPXQoZT9lLnRhcmdldDp0aGlzLmVsZW1lbnQpLmNsb3Nlc3QodGhpcy5vcHRpb25zLml0ZW1z
KTtzLmxlbmd0aCYmIXMuZGF0YSgidWktdG9vbHRpcC1pZCIpJiYocy5hdHRyKCJ0aXRsZSIpJiZz
LmRhdGEoInVpLXRvb2x0aXAtdGl0bGUiLHMuYXR0cigidGl0bGUiKSkscy5kYXRhKCJ1aS10b29s
dGlwLW9wZW4iLCEwKSxlJiYibW91c2VvdmVyIj09PWUudHlwZSYmcy5wYXJlbnRzKCkuZWFjaChm
dW5jdGlvbigpe3ZhciBlLHM9dCh0aGlzKTtzLmRhdGEoInVpLXRvb2x0aXAtb3BlbiIpJiYoZT10
LkV2ZW50KCJibHVyIiksZS50YXJnZXQ9ZS5jdXJyZW50VGFyZ2V0PXRoaXMsaS5jbG9zZShlLCEw
KSkscy5hdHRyKCJ0aXRsZSIpJiYocy51bmlxdWVJZCgpLGkucGFyZW50c1t0aGlzLmlkXT17ZWxl
bWVudDp0aGlzLHRpdGxlOnMuYXR0cigidGl0bGUiKX0scy5hdHRyKCJ0aXRsZSIsIiIpKX0pLHRo
aXMuX3JlZ2lzdGVyQ2xvc2VIYW5kbGVycyhlLHMpLHRoaXMuX3VwZGF0ZUNvbnRlbnQocyxlKSl9
LF91cGRhdGVDb250ZW50OmZ1bmN0aW9uKHQsZSl7dmFyIGkscz10aGlzLm9wdGlvbnMuY29udGVu
dCxuPXRoaXMsbz1lP2UudHlwZTpudWxsO3JldHVybiJzdHJpbmciPT10eXBlb2Ygc3x8cy5ub2Rl
VHlwZXx8cy5qcXVlcnk/dGhpcy5fb3BlbihlLHQscyk6KGk9cy5jYWxsKHRbMF0sZnVuY3Rpb24o
aSl7bi5fZGVsYXkoZnVuY3Rpb24oKXt0LmRhdGEoInVpLXRvb2x0aXAtb3BlbiIpJiYoZSYmKGUu
dHlwZT1vKSx0aGlzLl9vcGVuKGUsdCxpKSl9KX0pLGkmJnRoaXMuX29wZW4oZSx0LGkpLHZvaWQg
MCl9LF9vcGVuOmZ1bmN0aW9uKGUsaSxzKXtmdW5jdGlvbiBuKHQpe2wub2Y9dCxhLmlzKCI6aGlk
ZGVuIil8fGEucG9zaXRpb24obCl9dmFyIG8sYSxyLGgsbD10LmV4dGVuZCh7fSx0aGlzLm9wdGlv
bnMucG9zaXRpb24pO2lmKHMpe2lmKG89dGhpcy5fZmluZChpKSlyZXR1cm4gby50b29sdGlwLmZp
bmQoIi51aS10b29sdGlwLWNvbnRlbnQiKS5odG1sKHMpLHZvaWQgMDtpLmlzKCJbdGl0bGVdIikm
JihlJiYibW91c2VvdmVyIj09PWUudHlwZT9pLmF0dHIoInRpdGxlIiwiIik6aS5yZW1vdmVBdHRy
KCJ0aXRsZSIpKSxvPXRoaXMuX3Rvb2x0aXAoaSksYT1vLnRvb2x0aXAsdGhpcy5fYWRkRGVzY3Jp
YmVkQnkoaSxhLmF0dHIoImlkIikpLGEuZmluZCgiLnVpLXRvb2x0aXAtY29udGVudCIpLmh0bWwo
cyksdGhpcy5saXZlUmVnaW9uLmNoaWxkcmVuKCkuaGlkZSgpLGg9dCgiPGRpdj4iKS5odG1sKGEu
ZmluZCgiLnVpLXRvb2x0aXAtY29udGVudCIpLmh0bWwoKSksaC5yZW1vdmVBdHRyKCJuYW1lIiku
ZmluZCgiW25hbWVdIikucmVtb3ZlQXR0cigibmFtZSIpLGgucmVtb3ZlQXR0cigiaWQiKS5maW5k
KCJbaWRdIikucmVtb3ZlQXR0cigiaWQiKSxoLmFwcGVuZFRvKHRoaXMubGl2ZVJlZ2lvbiksdGhp
cy5vcHRpb25zLnRyYWNrJiZlJiYvXm1vdXNlLy50ZXN0KGUudHlwZSk/KHRoaXMuX29uKHRoaXMu
ZG9jdW1lbnQse21vdXNlbW92ZTpufSksbihlKSk6YS5wb3NpdGlvbih0LmV4dGVuZCh7b2Y6aX0s
dGhpcy5vcHRpb25zLnBvc2l0aW9uKSksYS5oaWRlKCksdGhpcy5fc2hvdyhhLHRoaXMub3B0aW9u
cy5zaG93KSx0aGlzLm9wdGlvbnMudHJhY2smJnRoaXMub3B0aW9ucy5zaG93JiZ0aGlzLm9wdGlv
bnMuc2hvdy5kZWxheSYmKHI9dGhpcy5kZWxheWVkU2hvdz1zZXRJbnRlcnZhbChmdW5jdGlvbigp
e2EuaXMoIjp2aXNpYmxlIikmJihuKGwub2YpLGNsZWFySW50ZXJ2YWwocikpfSx0LmZ4LmludGVy
dmFsKSksdGhpcy5fdHJpZ2dlcigib3BlbiIsZSx7dG9vbHRpcDphfSl9fSxfcmVnaXN0ZXJDbG9z
ZUhhbmRsZXJzOmZ1bmN0aW9uKGUsaSl7dmFyIHM9e2tleXVwOmZ1bmN0aW9uKGUpe2lmKGUua2V5
Q29kZT09PXQudWkua2V5Q29kZS5FU0NBUEUpe3ZhciBzPXQuRXZlbnQoZSk7cy5jdXJyZW50VGFy
Z2V0PWlbMF0sdGhpcy5jbG9zZShzLCEwKX19fTtpWzBdIT09dGhpcy5lbGVtZW50WzBdJiYocy5y
ZW1vdmU9ZnVuY3Rpb24oKXt0aGlzLl9yZW1vdmVUb29sdGlwKHRoaXMuX2ZpbmQoaSkudG9vbHRp
cCl9KSxlJiYibW91c2VvdmVyIiE9PWUudHlwZXx8KHMubW91c2VsZWF2ZT0iY2xvc2UiKSxlJiYi
Zm9jdXNpbiIhPT1lLnR5cGV8fChzLmZvY3Vzb3V0PSJjbG9zZSIpLHRoaXMuX29uKCEwLGkscyl9
LGNsb3NlOmZ1bmN0aW9uKGUpe3ZhciBpLHM9dGhpcyxuPXQoZT9lLmN1cnJlbnRUYXJnZXQ6dGhp
cy5lbGVtZW50KSxvPXRoaXMuX2ZpbmQobik7cmV0dXJuIG8/KGk9by50b29sdGlwLG8uY2xvc2lu
Z3x8KGNsZWFySW50ZXJ2YWwodGhpcy5kZWxheWVkU2hvdyksbi5kYXRhKCJ1aS10b29sdGlwLXRp
dGxlIikmJiFuLmF0dHIoInRpdGxlIikmJm4uYXR0cigidGl0bGUiLG4uZGF0YSgidWktdG9vbHRp
cC10aXRsZSIpKSx0aGlzLl9yZW1vdmVEZXNjcmliZWRCeShuKSxvLmhpZGluZz0hMCxpLnN0b3Ao
ITApLHRoaXMuX2hpZGUoaSx0aGlzLm9wdGlvbnMuaGlkZSxmdW5jdGlvbigpe3MuX3JlbW92ZVRv
b2x0aXAodCh0aGlzKSl9KSxuLnJlbW92ZURhdGEoInVpLXRvb2x0aXAtb3BlbiIpLHRoaXMuX29m
ZihuLCJtb3VzZWxlYXZlIGZvY3Vzb3V0IGtleXVwIiksblswXSE9PXRoaXMuZWxlbWVudFswXSYm
dGhpcy5fb2ZmKG4sInJlbW92ZSIpLHRoaXMuX29mZih0aGlzLmRvY3VtZW50LCJtb3VzZW1vdmUi
KSxlJiYibW91c2VsZWF2ZSI9PT1lLnR5cGUmJnQuZWFjaCh0aGlzLnBhcmVudHMsZnVuY3Rpb24o
ZSxpKXt0KGkuZWxlbWVudCkuYXR0cigidGl0bGUiLGkudGl0bGUpLGRlbGV0ZSBzLnBhcmVudHNb
ZV19KSxvLmNsb3Npbmc9ITAsdGhpcy5fdHJpZ2dlcigiY2xvc2UiLGUse3Rvb2x0aXA6aX0pLG8u
aGlkaW5nfHwoby5jbG9zaW5nPSExKSksdm9pZCAwKToobi5yZW1vdmVEYXRhKCJ1aS10b29sdGlw
LW9wZW4iKSx2b2lkIDApfSxfdG9vbHRpcDpmdW5jdGlvbihlKXt2YXIgaT10KCI8ZGl2PiIpLmF0
dHIoInJvbGUiLCJ0b29sdGlwIikscz10KCI8ZGl2PiIpLmFwcGVuZFRvKGkpLG49aS51bmlxdWVJ
ZCgpLmF0dHIoImlkIik7cmV0dXJuIHRoaXMuX2FkZENsYXNzKHMsInVpLXRvb2x0aXAtY29udGVu
dCIpLHRoaXMuX2FkZENsYXNzKGksInVpLXRvb2x0aXAiLCJ1aS13aWRnZXQgdWktd2lkZ2V0LWNv
bnRlbnQiKSxpLmFwcGVuZFRvKHRoaXMuX2FwcGVuZFRvKGUpKSx0aGlzLnRvb2x0aXBzW25dPXtl
bGVtZW50OmUsdG9vbHRpcDppfX0sX2ZpbmQ6ZnVuY3Rpb24odCl7dmFyIGU9dC5kYXRhKCJ1aS10
b29sdGlwLWlkIik7cmV0dXJuIGU/dGhpcy50b29sdGlwc1tlXTpudWxsfSxfcmVtb3ZlVG9vbHRp
cDpmdW5jdGlvbih0KXt0LnJlbW92ZSgpLGRlbGV0ZSB0aGlzLnRvb2x0aXBzW3QuYXR0cigiaWQi
KV19LF9hcHBlbmRUbzpmdW5jdGlvbih0KXt2YXIgZT10LmNsb3Nlc3QoIi51aS1mcm9udCwgZGlh
bG9nIik7cmV0dXJuIGUubGVuZ3RofHwoZT10aGlzLmRvY3VtZW50WzBdLmJvZHkpLGV9LF9kZXN0
cm95OmZ1bmN0aW9uKCl7dmFyIGU9dGhpczt0LmVhY2godGhpcy50b29sdGlwcyxmdW5jdGlvbihp
LHMpe3ZhciBuPXQuRXZlbnQoImJsdXIiKSxvPXMuZWxlbWVudDtuLnRhcmdldD1uLmN1cnJlbnRU
YXJnZXQ9b1swXSxlLmNsb3NlKG4sITApLHQoIiMiK2kpLnJlbW92ZSgpLG8uZGF0YSgidWktdG9v
bHRpcC10aXRsZSIpJiYoby5hdHRyKCJ0aXRsZSIpfHxvLmF0dHIoInRpdGxlIixvLmRhdGEoInVp
LXRvb2x0aXAtdGl0bGUiKSksby5yZW1vdmVEYXRhKCJ1aS10b29sdGlwLXRpdGxlIikpfSksdGhp
cy5saXZlUmVnaW9uLnJlbW92ZSgpfX0pLHQudWlCYWNrQ29tcGF0IT09ITEmJnQud2lkZ2V0KCJ1
aS50b29sdGlwIix0LnVpLnRvb2x0aXAse29wdGlvbnM6e3Rvb2x0aXBDbGFzczpudWxsfSxfdG9v
bHRpcDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX3N1cGVyQXBwbHkoYXJndW1lbnRzKTtyZXR1cm4g
dGhpcy5vcHRpb25zLnRvb2x0aXBDbGFzcyYmdC50b29sdGlwLmFkZENsYXNzKHRoaXMub3B0aW9u
cy50b29sdGlwQ2xhc3MpLHR9fSksdC51aS50b29sdGlwfSk7ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvV2ViRHJpdmVyVGVzdHMvaW1wb3J0ZWQvc2VsZW5pdW0vY29t
bW9uL3NyYy93ZWIvanMvanF1ZXJ5LXVpLTEuOC4xMC5jdXN0b20ubWluLmpzIGIvV2ViRHJpdmVy
VGVzdHMvaW1wb3J0ZWQvc2VsZW5pdW0vY29tbW9uL3NyYy93ZWIvanMvanF1ZXJ5LXVpLTEuOC4x
MC5jdXN0b20ubWluLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZDRmZjFjZWMx
MGM3MjU4NDAzYjA3NzdiMjc0MzZkYjVhODIyYmEwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1dlYkRyaXZlclRlc3RzL2ltcG9ydGVkL3NlbGVuaXVtL2Nv
bW1vbi9zcmMvd2ViL2pzL2pxdWVyeS11aS0xLjguMTAuY3VzdG9tLm1pbi5qcworKysgL2Rldi9u
dWxsCkBAIC0xLDc4MiArMCwwIEBACi0vKiEKLSAqIGpRdWVyeSBVSSAxLjguMTAKLSAqCi0gKiBD
b3B5cmlnaHQgMjAxMSwgQVVUSE9SUy50eHQgKGh0dHA6Ly9qcXVlcnl1aS5jb20vYWJvdXQpCi0g
KiBEdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgb3IgR1BMIFZlcnNpb24gMiBsaWNlbnNlcy4K
LSAqIGh0dHA6Ly9qcXVlcnkub3JnL2xpY2Vuc2UKLSAqCi0gKiBodHRwOi8vZG9jcy5qcXVlcnku
Y29tL1VJCi0gKi8KLShmdW5jdGlvbihjLGope2Z1bmN0aW9uIGsoYSl7cmV0dXJuIWMoYSkucGFy
ZW50cygpLmFuZFNlbGYoKS5maWx0ZXIoZnVuY3Rpb24oKXtyZXR1cm4gYy5jdXJDU1ModGhpcywi
dmlzaWJpbGl0eSIpPT09ImhpZGRlbiJ8fGMuZXhwci5maWx0ZXJzLmhpZGRlbih0aGlzKX0pLmxl
bmd0aH1jLnVpPWMudWl8fHt9O2lmKCFjLnVpLnZlcnNpb24pe2MuZXh0ZW5kKGMudWkse3ZlcnNp
b246IjEuOC4xMCIsa2V5Q29kZTp7QUxUOjE4LEJBQ0tTUEFDRTo4LENBUFNfTE9DSzoyMCxDT01N
QToxODgsQ09NTUFORDo5MSxDT01NQU5EX0xFRlQ6OTEsQ09NTUFORF9SSUdIVDo5MyxDT05UUk9M
OjE3LERFTEVURTo0NixET1dOOjQwLEVORDozNSxFTlRFUjoxMyxFU0NBUEU6MjcsSE9NRTozNixJ
TlNFUlQ6NDUsTEVGVDozNyxNRU5VOjkzLE5VTVBBRF9BREQ6MTA3LE5VTVBBRF9ERUNJTUFMOjEx
MCxOVU1QQURfRElWSURFOjExMSxOVU1QQURfRU5URVI6MTA4LE5VTVBBRF9NVUxUSVBMWToxMDYs
Ci1OVU1QQURfU1VCVFJBQ1Q6MTA5LFBBR0VfRE9XTjozNCxQQUdFX1VQOjMzLFBFUklPRDoxOTAs
UklHSFQ6MzksU0hJRlQ6MTYsU1BBQ0U6MzIsVEFCOjksVVA6MzgsV0lORE9XUzo5MX19KTtjLmZu
LmV4dGVuZCh7X2ZvY3VzOmMuZm4uZm9jdXMsZm9jdXM6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdHlw
ZW9mIGE9PT0ibnVtYmVyIj90aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZD10aGlzO3NldFRpbWVv
dXQoZnVuY3Rpb24oKXtjKGQpLmZvY3VzKCk7YiYmYi5jYWxsKGQpfSxhKX0pOnRoaXMuX2ZvY3Vz
LmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sc2Nyb2xsUGFyZW50OmZ1bmN0aW9uKCl7dmFyIGE7YT1j
LmJyb3dzZXIubXNpZSYmLyhzdGF0aWN8cmVsYXRpdmUpLy50ZXN0KHRoaXMuY3NzKCJwb3NpdGlv
biIpKXx8L2Fic29sdXRlLy50ZXN0KHRoaXMuY3NzKCJwb3NpdGlvbiIpKT90aGlzLnBhcmVudHMo
KS5maWx0ZXIoZnVuY3Rpb24oKXtyZXR1cm4vKHJlbGF0aXZlfGFic29sdXRlfGZpeGVkKS8udGVz
dChjLmN1ckNTUyh0aGlzLAotInBvc2l0aW9uIiwxKSkmJi8oYXV0b3xzY3JvbGwpLy50ZXN0KGMu
Y3VyQ1NTKHRoaXMsIm92ZXJmbG93IiwxKStjLmN1ckNTUyh0aGlzLCJvdmVyZmxvdy15IiwxKStj
LmN1ckNTUyh0aGlzLCJvdmVyZmxvdy14IiwxKSl9KS5lcSgwKTp0aGlzLnBhcmVudHMoKS5maWx0
ZXIoZnVuY3Rpb24oKXtyZXR1cm4vKGF1dG98c2Nyb2xsKS8udGVzdChjLmN1ckNTUyh0aGlzLCJv
dmVyZmxvdyIsMSkrYy5jdXJDU1ModGhpcywib3ZlcmZsb3cteSIsMSkrYy5jdXJDU1ModGhpcywi
b3ZlcmZsb3cteCIsMSkpfSkuZXEoMCk7cmV0dXJuL2ZpeGVkLy50ZXN0KHRoaXMuY3NzKCJwb3Np
dGlvbiIpKXx8IWEubGVuZ3RoP2MoZG9jdW1lbnQpOmF9LHpJbmRleDpmdW5jdGlvbihhKXtpZihh
IT09ailyZXR1cm4gdGhpcy5jc3MoInpJbmRleCIsYSk7aWYodGhpcy5sZW5ndGgpe2E9Yyh0aGlz
WzBdKTtmb3IodmFyIGI7YS5sZW5ndGgmJmFbMF0hPT1kb2N1bWVudDspe2I9YS5jc3MoInBvc2l0
aW9uIik7Ci1pZihiPT09ImFic29sdXRlInx8Yj09PSJyZWxhdGl2ZSJ8fGI9PT0iZml4ZWQiKXti
PXBhcnNlSW50KGEuY3NzKCJ6SW5kZXgiKSwxMCk7aWYoIWlzTmFOKGIpJiZiIT09MClyZXR1cm4g
Yn1hPWEucGFyZW50KCl9fXJldHVybiAwfSxkaXNhYmxlU2VsZWN0aW9uOmZ1bmN0aW9uKCl7cmV0
dXJuIHRoaXMuYmluZCgoYy5zdXBwb3J0LnNlbGVjdHN0YXJ0PyJzZWxlY3RzdGFydCI6Im1vdXNl
ZG93biIpKyIudWktZGlzYWJsZVNlbGVjdGlvbiIsZnVuY3Rpb24oYSl7YS5wcmV2ZW50RGVmYXVs
dCgpfSl9LGVuYWJsZVNlbGVjdGlvbjpmdW5jdGlvbigpe3JldHVybiB0aGlzLnVuYmluZCgiLnVp
LWRpc2FibGVTZWxlY3Rpb24iKX19KTtjLmVhY2goWyJXaWR0aCIsIkhlaWdodCJdLGZ1bmN0aW9u
KGEsYil7ZnVuY3Rpb24gZChmLGcsbCxtKXtjLmVhY2goZSxmdW5jdGlvbigpe2ctPXBhcnNlRmxv
YXQoYy5jdXJDU1MoZiwicGFkZGluZyIrdGhpcyx0cnVlKSl8fDA7aWYobClnLT1wYXJzZUZsb2F0
KGMuY3VyQ1NTKGYsCi0iYm9yZGVyIit0aGlzKyJXaWR0aCIsdHJ1ZSkpfHwwO2lmKG0pZy09cGFy
c2VGbG9hdChjLmN1ckNTUyhmLCJtYXJnaW4iK3RoaXMsdHJ1ZSkpfHwwfSk7cmV0dXJuIGd9dmFy
IGU9Yj09PSJXaWR0aCI/WyJMZWZ0IiwiUmlnaHQiXTpbIlRvcCIsIkJvdHRvbSJdLGg9Yi50b0xv
d2VyQ2FzZSgpLGk9e2lubmVyV2lkdGg6Yy5mbi5pbm5lcldpZHRoLGlubmVySGVpZ2h0OmMuZm4u
aW5uZXJIZWlnaHQsb3V0ZXJXaWR0aDpjLmZuLm91dGVyV2lkdGgsb3V0ZXJIZWlnaHQ6Yy5mbi5v
dXRlckhlaWdodH07Yy5mblsiaW5uZXIiK2JdPWZ1bmN0aW9uKGYpe2lmKGY9PT1qKXJldHVybiBp
WyJpbm5lciIrYl0uY2FsbCh0aGlzKTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7Yyh0aGlz
KS5jc3MoaCxkKHRoaXMsZikrInB4Iil9KX07Yy5mblsib3V0ZXIiK2JdPWZ1bmN0aW9uKGYsZyl7
aWYodHlwZW9mIGYhPT0ibnVtYmVyIilyZXR1cm4gaVsib3V0ZXIiK2JdLmNhbGwodGhpcyxmKTty
ZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7Yyh0aGlzKS5jc3MoaCwKLWQodGhpcyxmLHRydWUs
ZykrInB4Iil9KX19KTtjLmV4dGVuZChjLmV4cHJbIjoiXSx7ZGF0YTpmdW5jdGlvbihhLGIsZCl7
cmV0dXJuISFjLmRhdGEoYSxkWzNdKX0sZm9jdXNhYmxlOmZ1bmN0aW9uKGEpe3ZhciBiPWEubm9k
ZU5hbWUudG9Mb3dlckNhc2UoKSxkPWMuYXR0cihhLCJ0YWJpbmRleCIpO2lmKCJhcmVhIj09PWIp
e2I9YS5wYXJlbnROb2RlO2Q9Yi5uYW1lO2lmKCFhLmhyZWZ8fCFkfHxiLm5vZGVOYW1lLnRvTG93
ZXJDYXNlKCkhPT0ibWFwIilyZXR1cm4gZmFsc2U7YT1jKCJpbWdbdXNlbWFwPSMiK2QrIl0iKVsw
XTtyZXR1cm4hIWEmJmsoYSl9cmV0dXJuKC9pbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9ufG9i
amVjdC8udGVzdChiKT8hYS5kaXNhYmxlZDoiYSI9PWI/YS5ocmVmfHwhaXNOYU4oZCk6IWlzTmFO
KGQpKSYmayhhKX0sdGFiYmFibGU6ZnVuY3Rpb24oYSl7dmFyIGI9Yy5hdHRyKGEsInRhYmluZGV4
Iik7cmV0dXJuKGlzTmFOKGIpfHxiPj0wKSYmYyhhKS5pcygiOmZvY3VzYWJsZSIpfX0pOwotYyhm
dW5jdGlvbigpe3ZhciBhPWRvY3VtZW50LmJvZHksYj1hLmFwcGVuZENoaWxkKGI9ZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiZGl2IikpO2MuZXh0ZW5kKGIuc3R5bGUse21pbkhlaWdodDoiMTAwcHgi
LGhlaWdodDoiYXV0byIscGFkZGluZzowLGJvcmRlcldpZHRoOjB9KTtjLnN1cHBvcnQubWluSGVp
Z2h0PWIub2Zmc2V0SGVpZ2h0PT09MTAwO2Muc3VwcG9ydC5zZWxlY3RzdGFydD0ib25zZWxlY3Rz
dGFydCJpbiBiO2EucmVtb3ZlQ2hpbGQoYikuc3R5bGUuZGlzcGxheT0ibm9uZSJ9KTtjLmV4dGVu
ZChjLnVpLHtwbHVnaW46e2FkZDpmdW5jdGlvbihhLGIsZCl7YT1jLnVpW2FdLnByb3RvdHlwZTtm
b3IodmFyIGUgaW4gZCl7YS5wbHVnaW5zW2VdPWEucGx1Z2luc1tlXXx8W107YS5wbHVnaW5zW2Vd
LnB1c2goW2IsZFtlXV0pfX0sY2FsbDpmdW5jdGlvbihhLGIsZCl7aWYoKGI9YS5wbHVnaW5zW2Jd
KSYmYS5lbGVtZW50WzBdLnBhcmVudE5vZGUpZm9yKHZhciBlPTA7ZTxiLmxlbmd0aDtlKyspYS5v
cHRpb25zW2JbZV1bMF1dJiYKLWJbZV1bMV0uYXBwbHkoYS5lbGVtZW50LGQpfX0sY29udGFpbnM6
ZnVuY3Rpb24oYSxiKXtyZXR1cm4gZG9jdW1lbnQuY29tcGFyZURvY3VtZW50UG9zaXRpb24/YS5j
b21wYXJlRG9jdW1lbnRQb3NpdGlvbihiKSYxNjphIT09YiYmYS5jb250YWlucyhiKX0saGFzU2Ny
b2xsOmZ1bmN0aW9uKGEsYil7aWYoYyhhKS5jc3MoIm92ZXJmbG93Iik9PT0iaGlkZGVuIilyZXR1
cm4gZmFsc2U7Yj1iJiZiPT09ImxlZnQiPyJzY3JvbGxMZWZ0Ijoic2Nyb2xsVG9wIjt2YXIgZD1m
YWxzZTtpZihhW2JdPjApcmV0dXJuIHRydWU7YVtiXT0xO2Q9YVtiXT4wO2FbYl09MDtyZXR1cm4g
ZH0saXNPdmVyQXhpczpmdW5jdGlvbihhLGIsZCl7cmV0dXJuIGE+YiYmYTxiK2R9LGlzT3Zlcjpm
dW5jdGlvbihhLGIsZCxlLGgsaSl7cmV0dXJuIGMudWkuaXNPdmVyQXhpcyhhLGQsaCkmJmMudWku
aXNPdmVyQXhpcyhiLGUsaSl9fSl9fSkoalF1ZXJ5KTsKLTsvKiEKLSAqIGpRdWVyeSBVSSBXaWRn
ZXQgMS44LjEwCi0gKgotICogQ29weXJpZ2h0IDIwMTEsIEFVVEhPUlMudHh0IChodHRwOi8vanF1
ZXJ5dWkuY29tL2Fib3V0KQotICogRHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIG9yIEdQTCBW
ZXJzaW9uIDIgbGljZW5zZXMuCi0gKiBodHRwOi8vanF1ZXJ5Lm9yZy9saWNlbnNlCi0gKgotICog
aHR0cDovL2RvY3MuanF1ZXJ5LmNvbS9VSS9XaWRnZXQKLSAqLwotKGZ1bmN0aW9uKGIsail7aWYo
Yi5jbGVhbkRhdGEpe3ZhciBrPWIuY2xlYW5EYXRhO2IuY2xlYW5EYXRhPWZ1bmN0aW9uKGEpe2Zv
cih2YXIgYz0wLGQ7KGQ9YVtjXSkhPW51bGw7YysrKWIoZCkudHJpZ2dlckhhbmRsZXIoInJlbW92
ZSIpO2soYSl9fWVsc2V7dmFyIGw9Yi5mbi5yZW1vdmU7Yi5mbi5yZW1vdmU9ZnVuY3Rpb24oYSxj
KXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7aWYoIWMpaWYoIWF8fGIuZmlsdGVyKGEsW3Ro
aXNdKS5sZW5ndGgpYigiKiIsdGhpcykuYWRkKFt0aGlzXSkuZWFjaChmdW5jdGlvbigpe2IodGhp
cykudHJpZ2dlckhhbmRsZXIoInJlbW92ZSIpfSk7cmV0dXJuIGwuY2FsbChiKHRoaXMpLGEsYyl9
KX19Yi53aWRnZXQ9ZnVuY3Rpb24oYSxjLGQpe3ZhciBlPWEuc3BsaXQoIi4iKVswXSxmO2E9YS5z
cGxpdCgiLiIpWzFdO2Y9ZSsiLSIrYTtpZighZCl7ZD1jO2M9Yi5XaWRnZXR9Yi5leHByWyI6Il1b
Zl09ZnVuY3Rpb24oaCl7cmV0dXJuISFiLmRhdGEoaCwKLWEpfTtiW2VdPWJbZV18fHt9O2JbZV1b
YV09ZnVuY3Rpb24oaCxnKXthcmd1bWVudHMubGVuZ3RoJiZ0aGlzLl9jcmVhdGVXaWRnZXQoaCxn
KX07Yz1uZXcgYztjLm9wdGlvbnM9Yi5leHRlbmQodHJ1ZSx7fSxjLm9wdGlvbnMpO2JbZV1bYV0u
cHJvdG90eXBlPWIuZXh0ZW5kKHRydWUsYyx7bmFtZXNwYWNlOmUsd2lkZ2V0TmFtZTphLHdpZGdl
dEV2ZW50UHJlZml4OmJbZV1bYV0ucHJvdG90eXBlLndpZGdldEV2ZW50UHJlZml4fHxhLHdpZGdl
dEJhc2VDbGFzczpmfSxkKTtiLndpZGdldC5icmlkZ2UoYSxiW2VdW2FdKX07Yi53aWRnZXQuYnJp
ZGdlPWZ1bmN0aW9uKGEsYyl7Yi5mblthXT1mdW5jdGlvbihkKXt2YXIgZT10eXBlb2YgZD09PSJz
dHJpbmciLGY9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpLGg9dGhpcztk
PSFlJiZmLmxlbmd0aD9iLmV4dGVuZC5hcHBseShudWxsLFt0cnVlLGRdLmNvbmNhdChmKSk6ZDtp
ZihlJiZkLmNoYXJBdCgwKT09PSJfIilyZXR1cm4gaDsKLWU/dGhpcy5lYWNoKGZ1bmN0aW9uKCl7
dmFyIGc9Yi5kYXRhKHRoaXMsYSksaT1nJiZiLmlzRnVuY3Rpb24oZ1tkXSk/Z1tkXS5hcHBseShn
LGYpOmc7aWYoaSE9PWcmJmkhPT1qKXtoPWk7cmV0dXJuIGZhbHNlfX0pOnRoaXMuZWFjaChmdW5j
dGlvbigpe3ZhciBnPWIuZGF0YSh0aGlzLGEpO2c/Zy5vcHRpb24oZHx8e30pLl9pbml0KCk6Yi5k
YXRhKHRoaXMsYSxuZXcgYyhkLHRoaXMpKX0pO3JldHVybiBofX07Yi5XaWRnZXQ9ZnVuY3Rpb24o
YSxjKXthcmd1bWVudHMubGVuZ3RoJiZ0aGlzLl9jcmVhdGVXaWRnZXQoYSxjKX07Yi5XaWRnZXQu
cHJvdG90eXBlPXt3aWRnZXROYW1lOiJ3aWRnZXQiLHdpZGdldEV2ZW50UHJlZml4OiIiLG9wdGlv
bnM6e2Rpc2FibGVkOmZhbHNlfSxfY3JlYXRlV2lkZ2V0OmZ1bmN0aW9uKGEsYyl7Yi5kYXRhKGMs
dGhpcy53aWRnZXROYW1lLHRoaXMpO3RoaXMuZWxlbWVudD1iKGMpO3RoaXMub3B0aW9ucz1iLmV4
dGVuZCh0cnVlLHt9LHRoaXMub3B0aW9ucywKLXRoaXMuX2dldENyZWF0ZU9wdGlvbnMoKSxhKTt2
YXIgZD10aGlzO3RoaXMuZWxlbWVudC5iaW5kKCJyZW1vdmUuIit0aGlzLndpZGdldE5hbWUsZnVu
Y3Rpb24oKXtkLmRlc3Ryb3koKX0pO3RoaXMuX2NyZWF0ZSgpO3RoaXMuX3RyaWdnZXIoImNyZWF0
ZSIpO3RoaXMuX2luaXQoKX0sX2dldENyZWF0ZU9wdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm4gYi5t
ZXRhZGF0YSYmYi5tZXRhZGF0YS5nZXQodGhpcy5lbGVtZW50WzBdKVt0aGlzLndpZGdldE5hbWVd
fSxfY3JlYXRlOmZ1bmN0aW9uKCl7fSxfaW5pdDpmdW5jdGlvbigpe30sZGVzdHJveTpmdW5jdGlv
bigpe3RoaXMuZWxlbWVudC51bmJpbmQoIi4iK3RoaXMud2lkZ2V0TmFtZSkucmVtb3ZlRGF0YSh0
aGlzLndpZGdldE5hbWUpO3RoaXMud2lkZ2V0KCkudW5iaW5kKCIuIit0aGlzLndpZGdldE5hbWUp
LnJlbW92ZUF0dHIoImFyaWEtZGlzYWJsZWQiKS5yZW1vdmVDbGFzcyh0aGlzLndpZGdldEJhc2VD
bGFzcysiLWRpc2FibGVkIHVpLXN0YXRlLWRpc2FibGVkIil9LAotd2lkZ2V0OmZ1bmN0aW9uKCl7
cmV0dXJuIHRoaXMuZWxlbWVudH0sb3B0aW9uOmZ1bmN0aW9uKGEsYyl7dmFyIGQ9YTtpZihhcmd1
bWVudHMubGVuZ3RoPT09MClyZXR1cm4gYi5leHRlbmQoe30sdGhpcy5vcHRpb25zKTtpZih0eXBl
b2YgYT09PSJzdHJpbmciKXtpZihjPT09ailyZXR1cm4gdGhpcy5vcHRpb25zW2FdO2Q9e307ZFth
XT1jfXRoaXMuX3NldE9wdGlvbnMoZCk7cmV0dXJuIHRoaXN9LF9zZXRPcHRpb25zOmZ1bmN0aW9u
KGEpe3ZhciBjPXRoaXM7Yi5lYWNoKGEsZnVuY3Rpb24oZCxlKXtjLl9zZXRPcHRpb24oZCxlKX0p
O3JldHVybiB0aGlzfSxfc2V0T3B0aW9uOmZ1bmN0aW9uKGEsYyl7dGhpcy5vcHRpb25zW2FdPWM7
aWYoYT09PSJkaXNhYmxlZCIpdGhpcy53aWRnZXQoKVtjPyJhZGRDbGFzcyI6InJlbW92ZUNsYXNz
Il0odGhpcy53aWRnZXRCYXNlQ2xhc3MrIi1kaXNhYmxlZCB1aS1zdGF0ZS1kaXNhYmxlZCIpLmF0
dHIoImFyaWEtZGlzYWJsZWQiLGMpO3JldHVybiB0aGlzfSwKLWVuYWJsZTpmdW5jdGlvbigpe3Jl
dHVybiB0aGlzLl9zZXRPcHRpb24oImRpc2FibGVkIixmYWxzZSl9LGRpc2FibGU6ZnVuY3Rpb24o
KXtyZXR1cm4gdGhpcy5fc2V0T3B0aW9uKCJkaXNhYmxlZCIsdHJ1ZSl9LF90cmlnZ2VyOmZ1bmN0
aW9uKGEsYyxkKXt2YXIgZT10aGlzLm9wdGlvbnNbYV07Yz1iLkV2ZW50KGMpO2MudHlwZT0oYT09
PXRoaXMud2lkZ2V0RXZlbnRQcmVmaXg/YTp0aGlzLndpZGdldEV2ZW50UHJlZml4K2EpLnRvTG93
ZXJDYXNlKCk7ZD1kfHx7fTtpZihjLm9yaWdpbmFsRXZlbnQpe2E9Yi5ldmVudC5wcm9wcy5sZW5n
dGg7Zm9yKHZhciBmO2E7KXtmPWIuZXZlbnQucHJvcHNbLS1hXTtjW2ZdPWMub3JpZ2luYWxFdmVu
dFtmXX19dGhpcy5lbGVtZW50LnRyaWdnZXIoYyxkKTtyZXR1cm4hKGIuaXNGdW5jdGlvbihlKSYm
ZS5jYWxsKHRoaXMuZWxlbWVudFswXSxjLGQpPT09ZmFsc2V8fGMuaXNEZWZhdWx0UHJldmVudGVk
KCkpfX19KShqUXVlcnkpOwotOy8qIQotICogalF1ZXJ5IFVJIE1vdXNlIDEuOC4xMAotICoKLSAq
IENvcHlyaWdodCAyMDExLCBBVVRIT1JTLnR4dCAoaHR0cDovL2pxdWVyeXVpLmNvbS9hYm91dCkK
LSAqIER1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBvciBHUEwgVmVyc2lvbiAyIGxpY2Vuc2Vz
LgotICogaHR0cDovL2pxdWVyeS5vcmcvbGljZW5zZQotICoKLSAqIGh0dHA6Ly9kb2NzLmpxdWVy
eS5jb20vVUkvTW91c2UKLSAqCi0gKiBEZXBlbmRzOgotICoJanF1ZXJ5LnVpLndpZGdldC5qcwot
ICovCi0oZnVuY3Rpb24oYyl7Yy53aWRnZXQoInVpLm1vdXNlIix7b3B0aW9uczp7Y2FuY2VsOiI6
aW5wdXQsb3B0aW9uIixkaXN0YW5jZToxLGRlbGF5OjB9LF9tb3VzZUluaXQ6ZnVuY3Rpb24oKXt2
YXIgYT10aGlzO3RoaXMuZWxlbWVudC5iaW5kKCJtb3VzZWRvd24uIit0aGlzLndpZGdldE5hbWUs
ZnVuY3Rpb24oYil7cmV0dXJuIGEuX21vdXNlRG93bihiKX0pLmJpbmQoImNsaWNrLiIrdGhpcy53
aWRnZXROYW1lLGZ1bmN0aW9uKGIpe2lmKHRydWU9PT1jLmRhdGEoYi50YXJnZXQsYS53aWRnZXRO
YW1lKyIucHJldmVudENsaWNrRXZlbnQiKSl7Yy5yZW1vdmVEYXRhKGIudGFyZ2V0LGEud2lkZ2V0
TmFtZSsiLnByZXZlbnRDbGlja0V2ZW50Iik7Yi5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTty
ZXR1cm4gZmFsc2V9fSk7dGhpcy5zdGFydGVkPWZhbHNlfSxfbW91c2VEZXN0cm95OmZ1bmN0aW9u
KCl7dGhpcy5lbGVtZW50LnVuYmluZCgiLiIrdGhpcy53aWRnZXROYW1lKX0sX21vdXNlRG93bjpm
dW5jdGlvbihhKXthLm9yaWdpbmFsRXZlbnQ9Ci1hLm9yaWdpbmFsRXZlbnR8fHt9O2lmKCFhLm9y
aWdpbmFsRXZlbnQubW91c2VIYW5kbGVkKXt0aGlzLl9tb3VzZVN0YXJ0ZWQmJnRoaXMuX21vdXNl
VXAoYSk7dGhpcy5fbW91c2VEb3duRXZlbnQ9YTt2YXIgYj10aGlzLGU9YS53aGljaD09MSxmPXR5
cGVvZiB0aGlzLm9wdGlvbnMuY2FuY2VsPT0ic3RyaW5nIj9jKGEudGFyZ2V0KS5wYXJlbnRzKCku
YWRkKGEudGFyZ2V0KS5maWx0ZXIodGhpcy5vcHRpb25zLmNhbmNlbCkubGVuZ3RoOmZhbHNlO2lm
KCFlfHxmfHwhdGhpcy5fbW91c2VDYXB0dXJlKGEpKXJldHVybiB0cnVlO3RoaXMubW91c2VEZWxh
eU1ldD0hdGhpcy5vcHRpb25zLmRlbGF5O2lmKCF0aGlzLm1vdXNlRGVsYXlNZXQpdGhpcy5fbW91
c2VEZWxheVRpbWVyPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtiLm1vdXNlRGVsYXlNZXQ9dHJ1ZX0s
dGhpcy5vcHRpb25zLmRlbGF5KTtpZih0aGlzLl9tb3VzZURpc3RhbmNlTWV0KGEpJiZ0aGlzLl9t
b3VzZURlbGF5TWV0KGEpKXt0aGlzLl9tb3VzZVN0YXJ0ZWQ9Ci10aGlzLl9tb3VzZVN0YXJ0KGEp
IT09ZmFsc2U7aWYoIXRoaXMuX21vdXNlU3RhcnRlZCl7YS5wcmV2ZW50RGVmYXVsdCgpO3JldHVy
biB0cnVlfX10aGlzLl9tb3VzZU1vdmVEZWxlZ2F0ZT1mdW5jdGlvbihkKXtyZXR1cm4gYi5fbW91
c2VNb3ZlKGQpfTt0aGlzLl9tb3VzZVVwRGVsZWdhdGU9ZnVuY3Rpb24oZCl7cmV0dXJuIGIuX21v
dXNlVXAoZCl9O2MoZG9jdW1lbnQpLmJpbmQoIm1vdXNlbW92ZS4iK3RoaXMud2lkZ2V0TmFtZSx0
aGlzLl9tb3VzZU1vdmVEZWxlZ2F0ZSkuYmluZCgibW91c2V1cC4iK3RoaXMud2lkZ2V0TmFtZSx0
aGlzLl9tb3VzZVVwRGVsZWdhdGUpO2EucHJldmVudERlZmF1bHQoKTtyZXR1cm4gYS5vcmlnaW5h
bEV2ZW50Lm1vdXNlSGFuZGxlZD10cnVlfX0sX21vdXNlTW92ZTpmdW5jdGlvbihhKXtpZihjLmJy
b3dzZXIubXNpZSYmIShkb2N1bWVudC5kb2N1bWVudE1vZGU+PTkpJiYhYS5idXR0b24pcmV0dXJu
IHRoaXMuX21vdXNlVXAoYSk7aWYodGhpcy5fbW91c2VTdGFydGVkKXt0aGlzLl9tb3VzZURyYWco
YSk7Ci1yZXR1cm4gYS5wcmV2ZW50RGVmYXVsdCgpfWlmKHRoaXMuX21vdXNlRGlzdGFuY2VNZXQo
YSkmJnRoaXMuX21vdXNlRGVsYXlNZXQoYSkpKHRoaXMuX21vdXNlU3RhcnRlZD10aGlzLl9tb3Vz
ZVN0YXJ0KHRoaXMuX21vdXNlRG93bkV2ZW50LGEpIT09ZmFsc2UpP3RoaXMuX21vdXNlRHJhZyhh
KTp0aGlzLl9tb3VzZVVwKGEpO3JldHVybiF0aGlzLl9tb3VzZVN0YXJ0ZWR9LF9tb3VzZVVwOmZ1
bmN0aW9uKGEpe2MoZG9jdW1lbnQpLnVuYmluZCgibW91c2Vtb3ZlLiIrdGhpcy53aWRnZXROYW1l
LHRoaXMuX21vdXNlTW92ZURlbGVnYXRlKS51bmJpbmQoIm1vdXNldXAuIit0aGlzLndpZGdldE5h
bWUsdGhpcy5fbW91c2VVcERlbGVnYXRlKTtpZih0aGlzLl9tb3VzZVN0YXJ0ZWQpe3RoaXMuX21v
dXNlU3RhcnRlZD1mYWxzZTthLnRhcmdldD09dGhpcy5fbW91c2VEb3duRXZlbnQudGFyZ2V0JiZj
LmRhdGEoYS50YXJnZXQsdGhpcy53aWRnZXROYW1lKyIucHJldmVudENsaWNrRXZlbnQiLAotdHJ1
ZSk7dGhpcy5fbW91c2VTdG9wKGEpfXJldHVybiBmYWxzZX0sX21vdXNlRGlzdGFuY2VNZXQ6ZnVu
Y3Rpb24oYSl7cmV0dXJuIE1hdGgubWF4KE1hdGguYWJzKHRoaXMuX21vdXNlRG93bkV2ZW50LnBh
Z2VYLWEucGFnZVgpLE1hdGguYWJzKHRoaXMuX21vdXNlRG93bkV2ZW50LnBhZ2VZLWEucGFnZVkp
KT49dGhpcy5vcHRpb25zLmRpc3RhbmNlfSxfbW91c2VEZWxheU1ldDpmdW5jdGlvbigpe3JldHVy
biB0aGlzLm1vdXNlRGVsYXlNZXR9LF9tb3VzZVN0YXJ0OmZ1bmN0aW9uKCl7fSxfbW91c2VEcmFn
OmZ1bmN0aW9uKCl7fSxfbW91c2VTdG9wOmZ1bmN0aW9uKCl7fSxfbW91c2VDYXB0dXJlOmZ1bmN0
aW9uKCl7cmV0dXJuIHRydWV9fSl9KShqUXVlcnkpOwotOy8qCi0gKiBqUXVlcnkgVUkgUG9zaXRp
b24gMS44LjEwCi0gKgotICogQ29weXJpZ2h0IDIwMTEsIEFVVEhPUlMudHh0IChodHRwOi8vanF1
ZXJ5dWkuY29tL2Fib3V0KQotICogRHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIG9yIEdQTCBW
ZXJzaW9uIDIgbGljZW5zZXMuCi0gKiBodHRwOi8vanF1ZXJ5Lm9yZy9saWNlbnNlCi0gKgotICog
aHR0cDovL2RvY3MuanF1ZXJ5LmNvbS9VSS9Qb3NpdGlvbgotICovCi0oZnVuY3Rpb24oYyl7Yy51
aT1jLnVpfHx7fTt2YXIgbj0vbGVmdHxjZW50ZXJ8cmlnaHQvLG89L3RvcHxjZW50ZXJ8Ym90dG9t
Lyx0PWMuZm4ucG9zaXRpb24sdT1jLmZuLm9mZnNldDtjLmZuLnBvc2l0aW9uPWZ1bmN0aW9uKGIp
e2lmKCFifHwhYi5vZilyZXR1cm4gdC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7Yj1jLmV4dGVuZCh7
fSxiKTt2YXIgYT1jKGIub2YpLGQ9YVswXSxnPShiLmNvbGxpc2lvbnx8ImZsaXAiKS5zcGxpdCgi
ICIpLGU9Yi5vZmZzZXQ/Yi5vZmZzZXQuc3BsaXQoIiAiKTpbMCwwXSxoLGssajtpZihkLm5vZGVU
eXBlPT09OSl7aD1hLndpZHRoKCk7az1hLmhlaWdodCgpO2o9e3RvcDowLGxlZnQ6MH19ZWxzZSBp
ZihkLnNldFRpbWVvdXQpe2g9YS53aWR0aCgpO2s9YS5oZWlnaHQoKTtqPXt0b3A6YS5zY3JvbGxU
b3AoKSxsZWZ0OmEuc2Nyb2xsTGVmdCgpfX1lbHNlIGlmKGQucHJldmVudERlZmF1bHQpe2IuYXQ9
ImxlZnQgdG9wIjtoPWs9MDtqPXt0b3A6Yi5vZi5wYWdlWSwKLWxlZnQ6Yi5vZi5wYWdlWH19ZWxz
ZXtoPWEub3V0ZXJXaWR0aCgpO2s9YS5vdXRlckhlaWdodCgpO2o9YS5vZmZzZXQoKX1jLmVhY2go
WyJteSIsImF0Il0sZnVuY3Rpb24oKXt2YXIgZj0oYlt0aGlzXXx8IiIpLnNwbGl0KCIgIik7aWYo
Zi5sZW5ndGg9PT0xKWY9bi50ZXN0KGZbMF0pP2YuY29uY2F0KFsiY2VudGVyIl0pOm8udGVzdChm
WzBdKT9bImNlbnRlciJdLmNvbmNhdChmKTpbImNlbnRlciIsImNlbnRlciJdO2ZbMF09bi50ZXN0
KGZbMF0pP2ZbMF06ImNlbnRlciI7ZlsxXT1vLnRlc3QoZlsxXSk/ZlsxXToiY2VudGVyIjtiW3Ro
aXNdPWZ9KTtpZihnLmxlbmd0aD09PTEpZ1sxXT1nWzBdO2VbMF09cGFyc2VJbnQoZVswXSwxMCl8
fDA7aWYoZS5sZW5ndGg9PT0xKWVbMV09ZVswXTtlWzFdPXBhcnNlSW50KGVbMV0sMTApfHwwO2lm
KGIuYXRbMF09PT0icmlnaHQiKWoubGVmdCs9aDtlbHNlIGlmKGIuYXRbMF09PT0iY2VudGVyIilq
LmxlZnQrPWgvMjtpZihiLmF0WzFdPT09ImJvdHRvbSIpai50b3ArPQotaztlbHNlIGlmKGIuYXRb
MV09PT0iY2VudGVyIilqLnRvcCs9ay8yO2oubGVmdCs9ZVswXTtqLnRvcCs9ZVsxXTtyZXR1cm4g
dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGY9Yyh0aGlzKSxsPWYub3V0ZXJXaWR0aCgpLG09Zi5v
dXRlckhlaWdodCgpLHA9cGFyc2VJbnQoYy5jdXJDU1ModGhpcywibWFyZ2luTGVmdCIsdHJ1ZSkp
fHwwLHE9cGFyc2VJbnQoYy5jdXJDU1ModGhpcywibWFyZ2luVG9wIix0cnVlKSl8fDAsdj1sK3Ar
KHBhcnNlSW50KGMuY3VyQ1NTKHRoaXMsIm1hcmdpblJpZ2h0Iix0cnVlKSl8fDApLHc9bStxKyhw
YXJzZUludChjLmN1ckNTUyh0aGlzLCJtYXJnaW5Cb3R0b20iLHRydWUpKXx8MCksaT1jLmV4dGVu
ZCh7fSxqKSxyO2lmKGIubXlbMF09PT0icmlnaHQiKWkubGVmdC09bDtlbHNlIGlmKGIubXlbMF09
PT0iY2VudGVyIilpLmxlZnQtPWwvMjtpZihiLm15WzFdPT09ImJvdHRvbSIpaS50b3AtPW07ZWxz
ZSBpZihiLm15WzFdPT09ImNlbnRlciIpaS50b3AtPQotbS8yO2kubGVmdD1NYXRoLnJvdW5kKGku
bGVmdCk7aS50b3A9TWF0aC5yb3VuZChpLnRvcCk7cj17bGVmdDppLmxlZnQtcCx0b3A6aS50b3At
cX07Yy5lYWNoKFsibGVmdCIsInRvcCJdLGZ1bmN0aW9uKHMseCl7Yy51aS5wb3NpdGlvbltnW3Nd
XSYmYy51aS5wb3NpdGlvbltnW3NdXVt4XShpLHt0YXJnZXRXaWR0aDpoLHRhcmdldEhlaWdodDpr
LGVsZW1XaWR0aDpsLGVsZW1IZWlnaHQ6bSxjb2xsaXNpb25Qb3NpdGlvbjpyLGNvbGxpc2lvbldp
ZHRoOnYsY29sbGlzaW9uSGVpZ2h0Oncsb2Zmc2V0OmUsbXk6Yi5teSxhdDpiLmF0fSl9KTtjLmZu
LmJnaWZyYW1lJiZmLmJnaWZyYW1lKCk7Zi5vZmZzZXQoYy5leHRlbmQoaSx7dXNpbmc6Yi51c2lu
Z30pKX0pfTtjLnVpLnBvc2l0aW9uPXtmaXQ6e2xlZnQ6ZnVuY3Rpb24oYixhKXt2YXIgZD1jKHdp
bmRvdyk7ZD1hLmNvbGxpc2lvblBvc2l0aW9uLmxlZnQrYS5jb2xsaXNpb25XaWR0aC1kLndpZHRo
KCktZC5zY3JvbGxMZWZ0KCk7Yi5sZWZ0PQotZD4wP2IubGVmdC1kOk1hdGgubWF4KGIubGVmdC1h
LmNvbGxpc2lvblBvc2l0aW9uLmxlZnQsYi5sZWZ0KX0sdG9wOmZ1bmN0aW9uKGIsYSl7dmFyIGQ9
Yyh3aW5kb3cpO2Q9YS5jb2xsaXNpb25Qb3NpdGlvbi50b3ArYS5jb2xsaXNpb25IZWlnaHQtZC5o
ZWlnaHQoKS1kLnNjcm9sbFRvcCgpO2IudG9wPWQ+MD9iLnRvcC1kOk1hdGgubWF4KGIudG9wLWEu
Y29sbGlzaW9uUG9zaXRpb24udG9wLGIudG9wKX19LGZsaXA6e2xlZnQ6ZnVuY3Rpb24oYixhKXtp
ZihhLmF0WzBdIT09ImNlbnRlciIpe3ZhciBkPWMod2luZG93KTtkPWEuY29sbGlzaW9uUG9zaXRp
b24ubGVmdCthLmNvbGxpc2lvbldpZHRoLWQud2lkdGgoKS1kLnNjcm9sbExlZnQoKTt2YXIgZz1h
Lm15WzBdPT09ImxlZnQiPy1hLmVsZW1XaWR0aDphLm15WzBdPT09InJpZ2h0Ij9hLmVsZW1XaWR0
aDowLGU9YS5hdFswXT09PSJsZWZ0Ij9hLnRhcmdldFdpZHRoOi1hLnRhcmdldFdpZHRoLGg9LTIq
YS5vZmZzZXRbMF07Yi5sZWZ0Kz0KLWEuY29sbGlzaW9uUG9zaXRpb24ubGVmdDwwP2crZStoOmQ+
MD9nK2UraDowfX0sdG9wOmZ1bmN0aW9uKGIsYSl7aWYoYS5hdFsxXSE9PSJjZW50ZXIiKXt2YXIg
ZD1jKHdpbmRvdyk7ZD1hLmNvbGxpc2lvblBvc2l0aW9uLnRvcCthLmNvbGxpc2lvbkhlaWdodC1k
LmhlaWdodCgpLWQuc2Nyb2xsVG9wKCk7dmFyIGc9YS5teVsxXT09PSJ0b3AiPy1hLmVsZW1IZWln
aHQ6YS5teVsxXT09PSJib3R0b20iP2EuZWxlbUhlaWdodDowLGU9YS5hdFsxXT09PSJ0b3AiP2Eu
dGFyZ2V0SGVpZ2h0Oi1hLnRhcmdldEhlaWdodCxoPS0yKmEub2Zmc2V0WzFdO2IudG9wKz1hLmNv
bGxpc2lvblBvc2l0aW9uLnRvcDwwP2crZStoOmQ+MD9nK2UraDowfX19fTtpZighYy5vZmZzZXQu
c2V0T2Zmc2V0KXtjLm9mZnNldC5zZXRPZmZzZXQ9ZnVuY3Rpb24oYixhKXtpZigvc3RhdGljLy50
ZXN0KGMuY3VyQ1NTKGIsInBvc2l0aW9uIikpKWIuc3R5bGUucG9zaXRpb249InJlbGF0aXZlIjt2
YXIgZD1jKGIpLAotZz1kLm9mZnNldCgpLGU9cGFyc2VJbnQoYy5jdXJDU1MoYiwidG9wIix0cnVl
KSwxMCl8fDAsaD1wYXJzZUludChjLmN1ckNTUyhiLCJsZWZ0Iix0cnVlKSwxMCl8fDA7Zz17dG9w
OmEudG9wLWcudG9wK2UsbGVmdDphLmxlZnQtZy5sZWZ0K2h9OyJ1c2luZyJpbiBhP2EudXNpbmcu
Y2FsbChiLGcpOmQuY3NzKGcpfTtjLmZuLm9mZnNldD1mdW5jdGlvbihiKXt2YXIgYT10aGlzWzBd
O2lmKCFhfHwhYS5vd25lckRvY3VtZW50KXJldHVybiBudWxsO2lmKGIpcmV0dXJuIHRoaXMuZWFj
aChmdW5jdGlvbigpe2Mub2Zmc2V0LnNldE9mZnNldCh0aGlzLGIpfSk7cmV0dXJuIHUuY2FsbCh0
aGlzKX19fSkoalF1ZXJ5KTsKLTsvKgotICogalF1ZXJ5IFVJIERyYWdnYWJsZSAxLjguMTAKLSAq
Ci0gKiBDb3B5cmlnaHQgMjAxMSwgQVVUSE9SUy50eHQgKGh0dHA6Ly9qcXVlcnl1aS5jb20vYWJv
dXQpCi0gKiBEdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgb3IgR1BMIFZlcnNpb24gMiBsaWNl
bnNlcy4KLSAqIGh0dHA6Ly9qcXVlcnkub3JnL2xpY2Vuc2UKLSAqCi0gKiBodHRwOi8vZG9jcy5q
cXVlcnkuY29tL1VJL0RyYWdnYWJsZXMKLSAqCi0gKiBEZXBlbmRzOgotICoJanF1ZXJ5LnVpLmNv
cmUuanMKLSAqCWpxdWVyeS51aS5tb3VzZS5qcwotICoJanF1ZXJ5LnVpLndpZGdldC5qcwotICov
Ci0oZnVuY3Rpb24oZCl7ZC53aWRnZXQoInVpLmRyYWdnYWJsZSIsZC51aS5tb3VzZSx7d2lkZ2V0
RXZlbnRQcmVmaXg6ImRyYWciLG9wdGlvbnM6e2FkZENsYXNzZXM6dHJ1ZSxhcHBlbmRUbzoicGFy
ZW50IixheGlzOmZhbHNlLGNvbm5lY3RUb1NvcnRhYmxlOmZhbHNlLGNvbnRhaW5tZW50OmZhbHNl
LGN1cnNvcjoiYXV0byIsY3Vyc29yQXQ6ZmFsc2UsZ3JpZDpmYWxzZSxoYW5kbGU6ZmFsc2UsaGVs
cGVyOiJvcmlnaW5hbCIsaWZyYW1lRml4OmZhbHNlLG9wYWNpdHk6ZmFsc2UscmVmcmVzaFBvc2l0
aW9uczpmYWxzZSxyZXZlcnQ6ZmFsc2UscmV2ZXJ0RHVyYXRpb246NTAwLHNjb3BlOiJkZWZhdWx0
IixzY3JvbGw6dHJ1ZSxzY3JvbGxTZW5zaXRpdml0eToyMCxzY3JvbGxTcGVlZDoyMCxzbmFwOmZh
bHNlLHNuYXBNb2RlOiJib3RoIixzbmFwVG9sZXJhbmNlOjIwLHN0YWNrOmZhbHNlLHpJbmRleDpm
YWxzZX0sX2NyZWF0ZTpmdW5jdGlvbigpe2lmKHRoaXMub3B0aW9ucy5oZWxwZXI9PQotIm9yaWdp
bmFsIiYmIS9eKD86cnxhfGYpLy50ZXN0KHRoaXMuZWxlbWVudC5jc3MoInBvc2l0aW9uIikpKXRo
aXMuZWxlbWVudFswXS5zdHlsZS5wb3NpdGlvbj0icmVsYXRpdmUiO3RoaXMub3B0aW9ucy5hZGRD
bGFzc2VzJiZ0aGlzLmVsZW1lbnQuYWRkQ2xhc3MoInVpLWRyYWdnYWJsZSIpO3RoaXMub3B0aW9u
cy5kaXNhYmxlZCYmdGhpcy5lbGVtZW50LmFkZENsYXNzKCJ1aS1kcmFnZ2FibGUtZGlzYWJsZWQi
KTt0aGlzLl9tb3VzZUluaXQoKX0sZGVzdHJveTpmdW5jdGlvbigpe2lmKHRoaXMuZWxlbWVudC5k
YXRhKCJkcmFnZ2FibGUiKSl7dGhpcy5lbGVtZW50LnJlbW92ZURhdGEoImRyYWdnYWJsZSIpLnVu
YmluZCgiLmRyYWdnYWJsZSIpLnJlbW92ZUNsYXNzKCJ1aS1kcmFnZ2FibGUgdWktZHJhZ2dhYmxl
LWRyYWdnaW5nIHVpLWRyYWdnYWJsZS1kaXNhYmxlZCIpO3RoaXMuX21vdXNlRGVzdHJveSgpO3Jl
dHVybiB0aGlzfX0sX21vdXNlQ2FwdHVyZTpmdW5jdGlvbihhKXt2YXIgYj0KLXRoaXMub3B0aW9u
cztpZih0aGlzLmhlbHBlcnx8Yi5kaXNhYmxlZHx8ZChhLnRhcmdldCkuaXMoIi51aS1yZXNpemFi
bGUtaGFuZGxlIikpcmV0dXJuIGZhbHNlO3RoaXMuaGFuZGxlPXRoaXMuX2dldEhhbmRsZShhKTtp
ZighdGhpcy5oYW5kbGUpcmV0dXJuIGZhbHNlO3JldHVybiB0cnVlfSxfbW91c2VTdGFydDpmdW5j
dGlvbihhKXt2YXIgYj10aGlzLm9wdGlvbnM7dGhpcy5oZWxwZXI9dGhpcy5fY3JlYXRlSGVscGVy
KGEpO3RoaXMuX2NhY2hlSGVscGVyUHJvcG9ydGlvbnMoKTtpZihkLnVpLmRkbWFuYWdlcilkLnVp
LmRkbWFuYWdlci5jdXJyZW50PXRoaXM7dGhpcy5fY2FjaGVNYXJnaW5zKCk7dGhpcy5jc3NQb3Np
dGlvbj10aGlzLmhlbHBlci5jc3MoInBvc2l0aW9uIik7dGhpcy5zY3JvbGxQYXJlbnQ9dGhpcy5o
ZWxwZXIuc2Nyb2xsUGFyZW50KCk7dGhpcy5vZmZzZXQ9dGhpcy5wb3NpdGlvbkFicz10aGlzLmVs
ZW1lbnQub2Zmc2V0KCk7dGhpcy5vZmZzZXQ9e3RvcDp0aGlzLm9mZnNldC50b3AtCi10aGlzLm1h
cmdpbnMudG9wLGxlZnQ6dGhpcy5vZmZzZXQubGVmdC10aGlzLm1hcmdpbnMubGVmdH07ZC5leHRl
bmQodGhpcy5vZmZzZXQse2NsaWNrOntsZWZ0OmEucGFnZVgtdGhpcy5vZmZzZXQubGVmdCx0b3A6
YS5wYWdlWS10aGlzLm9mZnNldC50b3B9LHBhcmVudDp0aGlzLl9nZXRQYXJlbnRPZmZzZXQoKSxy
ZWxhdGl2ZTp0aGlzLl9nZXRSZWxhdGl2ZU9mZnNldCgpfSk7dGhpcy5vcmlnaW5hbFBvc2l0aW9u
PXRoaXMucG9zaXRpb249dGhpcy5fZ2VuZXJhdGVQb3NpdGlvbihhKTt0aGlzLm9yaWdpbmFsUGFn
ZVg9YS5wYWdlWDt0aGlzLm9yaWdpbmFsUGFnZVk9YS5wYWdlWTtiLmN1cnNvckF0JiZ0aGlzLl9h
ZGp1c3RPZmZzZXRGcm9tSGVscGVyKGIuY3Vyc29yQXQpO2IuY29udGFpbm1lbnQmJnRoaXMuX3Nl
dENvbnRhaW5tZW50KCk7aWYodGhpcy5fdHJpZ2dlcigic3RhcnQiLGEpPT09ZmFsc2Upe3RoaXMu
X2NsZWFyKCk7cmV0dXJuIGZhbHNlfXRoaXMuX2NhY2hlSGVscGVyUHJvcG9ydGlvbnMoKTsKLWQu
dWkuZGRtYW5hZ2VyJiYhYi5kcm9wQmVoYXZpb3VyJiZkLnVpLmRkbWFuYWdlci5wcmVwYXJlT2Zm
c2V0cyh0aGlzLGEpO3RoaXMuaGVscGVyLmFkZENsYXNzKCJ1aS1kcmFnZ2FibGUtZHJhZ2dpbmci
KTt0aGlzLl9tb3VzZURyYWcoYSx0cnVlKTtyZXR1cm4gdHJ1ZX0sX21vdXNlRHJhZzpmdW5jdGlv
bihhLGIpe3RoaXMucG9zaXRpb249dGhpcy5fZ2VuZXJhdGVQb3NpdGlvbihhKTt0aGlzLnBvc2l0
aW9uQWJzPXRoaXMuX2NvbnZlcnRQb3NpdGlvblRvKCJhYnNvbHV0ZSIpO2lmKCFiKXtiPXRoaXMu
X3VpSGFzaCgpO2lmKHRoaXMuX3RyaWdnZXIoImRyYWciLGEsYik9PT1mYWxzZSl7dGhpcy5fbW91
c2VVcCh7fSk7cmV0dXJuIGZhbHNlfXRoaXMucG9zaXRpb249Yi5wb3NpdGlvbn1pZighdGhpcy5v
cHRpb25zLmF4aXN8fHRoaXMub3B0aW9ucy5heGlzIT0ieSIpdGhpcy5oZWxwZXJbMF0uc3R5bGUu
bGVmdD10aGlzLnBvc2l0aW9uLmxlZnQrInB4IjtpZighdGhpcy5vcHRpb25zLmF4aXN8fAotdGhp
cy5vcHRpb25zLmF4aXMhPSJ4Iil0aGlzLmhlbHBlclswXS5zdHlsZS50b3A9dGhpcy5wb3NpdGlv
bi50b3ArInB4IjtkLnVpLmRkbWFuYWdlciYmZC51aS5kZG1hbmFnZXIuZHJhZyh0aGlzLGEpO3Jl
dHVybiBmYWxzZX0sX21vdXNlU3RvcDpmdW5jdGlvbihhKXt2YXIgYj1mYWxzZTtpZihkLnVpLmRk
bWFuYWdlciYmIXRoaXMub3B0aW9ucy5kcm9wQmVoYXZpb3VyKWI9ZC51aS5kZG1hbmFnZXIuZHJv
cCh0aGlzLGEpO2lmKHRoaXMuZHJvcHBlZCl7Yj10aGlzLmRyb3BwZWQ7dGhpcy5kcm9wcGVkPWZh
bHNlfWlmKCghdGhpcy5lbGVtZW50WzBdfHwhdGhpcy5lbGVtZW50WzBdLnBhcmVudE5vZGUpJiZ0
aGlzLm9wdGlvbnMuaGVscGVyPT0ib3JpZ2luYWwiKXJldHVybiBmYWxzZTtpZih0aGlzLm9wdGlv
bnMucmV2ZXJ0PT0iaW52YWxpZCImJiFifHx0aGlzLm9wdGlvbnMucmV2ZXJ0PT0idmFsaWQiJiZi
fHx0aGlzLm9wdGlvbnMucmV2ZXJ0PT09dHJ1ZXx8ZC5pc0Z1bmN0aW9uKHRoaXMub3B0aW9ucy5y
ZXZlcnQpJiYKLXRoaXMub3B0aW9ucy5yZXZlcnQuY2FsbCh0aGlzLmVsZW1lbnQsYikpe3ZhciBj
PXRoaXM7ZCh0aGlzLmhlbHBlcikuYW5pbWF0ZSh0aGlzLm9yaWdpbmFsUG9zaXRpb24scGFyc2VJ
bnQodGhpcy5vcHRpb25zLnJldmVydER1cmF0aW9uLDEwKSxmdW5jdGlvbigpe2MuX3RyaWdnZXIo
InN0b3AiLGEpIT09ZmFsc2UmJmMuX2NsZWFyKCl9KX1lbHNlIHRoaXMuX3RyaWdnZXIoInN0b3Ai
LGEpIT09ZmFsc2UmJnRoaXMuX2NsZWFyKCk7cmV0dXJuIGZhbHNlfSxjYW5jZWw6ZnVuY3Rpb24o
KXt0aGlzLmhlbHBlci5pcygiLnVpLWRyYWdnYWJsZS1kcmFnZ2luZyIpP3RoaXMuX21vdXNlVXAo
e30pOnRoaXMuX2NsZWFyKCk7cmV0dXJuIHRoaXN9LF9nZXRIYW5kbGU6ZnVuY3Rpb24oYSl7dmFy
IGI9IXRoaXMub3B0aW9ucy5oYW5kbGV8fCFkKHRoaXMub3B0aW9ucy5oYW5kbGUsdGhpcy5lbGVt
ZW50KS5sZW5ndGg/dHJ1ZTpmYWxzZTtkKHRoaXMub3B0aW9ucy5oYW5kbGUsdGhpcy5lbGVtZW50
KS5maW5kKCIqIikuYW5kU2VsZigpLmVhY2goZnVuY3Rpb24oKXtpZih0aGlzPT0KLWEudGFyZ2V0
KWI9dHJ1ZX0pO3JldHVybiBifSxfY3JlYXRlSGVscGVyOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMu
b3B0aW9uczthPWQuaXNGdW5jdGlvbihiLmhlbHBlcik/ZChiLmhlbHBlci5hcHBseSh0aGlzLmVs
ZW1lbnRbMF0sW2FdKSk6Yi5oZWxwZXI9PSJjbG9uZSI/dGhpcy5lbGVtZW50LmNsb25lKCk6dGhp
cy5lbGVtZW50O2EucGFyZW50cygiYm9keSIpLmxlbmd0aHx8YS5hcHBlbmRUbyhiLmFwcGVuZFRv
PT0icGFyZW50Ij90aGlzLmVsZW1lbnRbMF0ucGFyZW50Tm9kZTpiLmFwcGVuZFRvKTthWzBdIT10
aGlzLmVsZW1lbnRbMF0mJiEvKGZpeGVkfGFic29sdXRlKS8udGVzdChhLmNzcygicG9zaXRpb24i
KSkmJmEuY3NzKCJwb3NpdGlvbiIsImFic29sdXRlIik7cmV0dXJuIGF9LF9hZGp1c3RPZmZzZXRG
cm9tSGVscGVyOmZ1bmN0aW9uKGEpe2lmKHR5cGVvZiBhPT0ic3RyaW5nIilhPWEuc3BsaXQoIiAi
KTtpZihkLmlzQXJyYXkoYSkpYT17bGVmdDorYVswXSx0b3A6K2FbMV18fAotMH07aWYoImxlZnQi
aW4gYSl0aGlzLm9mZnNldC5jbGljay5sZWZ0PWEubGVmdCt0aGlzLm1hcmdpbnMubGVmdDtpZigi
cmlnaHQiaW4gYSl0aGlzLm9mZnNldC5jbGljay5sZWZ0PXRoaXMuaGVscGVyUHJvcG9ydGlvbnMu
d2lkdGgtYS5yaWdodCt0aGlzLm1hcmdpbnMubGVmdDtpZigidG9wImluIGEpdGhpcy5vZmZzZXQu
Y2xpY2sudG9wPWEudG9wK3RoaXMubWFyZ2lucy50b3A7aWYoImJvdHRvbSJpbiBhKXRoaXMub2Zm
c2V0LmNsaWNrLnRvcD10aGlzLmhlbHBlclByb3BvcnRpb25zLmhlaWdodC1hLmJvdHRvbSt0aGlz
Lm1hcmdpbnMudG9wfSxfZ2V0UGFyZW50T2Zmc2V0OmZ1bmN0aW9uKCl7dGhpcy5vZmZzZXRQYXJl
bnQ9dGhpcy5oZWxwZXIub2Zmc2V0UGFyZW50KCk7dmFyIGE9dGhpcy5vZmZzZXRQYXJlbnQub2Zm
c2V0KCk7aWYodGhpcy5jc3NQb3NpdGlvbj09ImFic29sdXRlIiYmdGhpcy5zY3JvbGxQYXJlbnRb
MF0hPWRvY3VtZW50JiZkLnVpLmNvbnRhaW5zKHRoaXMuc2Nyb2xsUGFyZW50WzBdLAotdGhpcy5v
ZmZzZXRQYXJlbnRbMF0pKXthLmxlZnQrPXRoaXMuc2Nyb2xsUGFyZW50LnNjcm9sbExlZnQoKTth
LnRvcCs9dGhpcy5zY3JvbGxQYXJlbnQuc2Nyb2xsVG9wKCl9aWYodGhpcy5vZmZzZXRQYXJlbnRb
MF09PWRvY3VtZW50LmJvZHl8fHRoaXMub2Zmc2V0UGFyZW50WzBdLnRhZ05hbWUmJnRoaXMub2Zm
c2V0UGFyZW50WzBdLnRhZ05hbWUudG9Mb3dlckNhc2UoKT09Imh0bWwiJiZkLmJyb3dzZXIubXNp
ZSlhPXt0b3A6MCxsZWZ0OjB9O3JldHVybnt0b3A6YS50b3ArKHBhcnNlSW50KHRoaXMub2Zmc2V0
UGFyZW50LmNzcygiYm9yZGVyVG9wV2lkdGgiKSwxMCl8fDApLGxlZnQ6YS5sZWZ0KyhwYXJzZUlu
dCh0aGlzLm9mZnNldFBhcmVudC5jc3MoImJvcmRlckxlZnRXaWR0aCIpLDEwKXx8MCl9fSxfZ2V0
UmVsYXRpdmVPZmZzZXQ6ZnVuY3Rpb24oKXtpZih0aGlzLmNzc1Bvc2l0aW9uPT0icmVsYXRpdmUi
KXt2YXIgYT10aGlzLmVsZW1lbnQucG9zaXRpb24oKTtyZXR1cm57dG9wOmEudG9wLQotKHBhcnNl
SW50KHRoaXMuaGVscGVyLmNzcygidG9wIiksMTApfHwwKSt0aGlzLnNjcm9sbFBhcmVudC5zY3Jv
bGxUb3AoKSxsZWZ0OmEubGVmdC0ocGFyc2VJbnQodGhpcy5oZWxwZXIuY3NzKCJsZWZ0IiksMTAp
fHwwKSt0aGlzLnNjcm9sbFBhcmVudC5zY3JvbGxMZWZ0KCl9fWVsc2UgcmV0dXJue3RvcDowLGxl
ZnQ6MH19LF9jYWNoZU1hcmdpbnM6ZnVuY3Rpb24oKXt0aGlzLm1hcmdpbnM9e2xlZnQ6cGFyc2VJ
bnQodGhpcy5lbGVtZW50LmNzcygibWFyZ2luTGVmdCIpLDEwKXx8MCx0b3A6cGFyc2VJbnQodGhp
cy5lbGVtZW50LmNzcygibWFyZ2luVG9wIiksMTApfHwwfX0sX2NhY2hlSGVscGVyUHJvcG9ydGlv
bnM6ZnVuY3Rpb24oKXt0aGlzLmhlbHBlclByb3BvcnRpb25zPXt3aWR0aDp0aGlzLmhlbHBlci5v
dXRlcldpZHRoKCksaGVpZ2h0OnRoaXMuaGVscGVyLm91dGVySGVpZ2h0KCl9fSxfc2V0Q29udGFp
bm1lbnQ6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLm9wdGlvbnM7aWYoYS5jb250YWlubWVudD09Ci0i
cGFyZW50IilhLmNvbnRhaW5tZW50PXRoaXMuaGVscGVyWzBdLnBhcmVudE5vZGU7aWYoYS5jb250
YWlubWVudD09ImRvY3VtZW50Inx8YS5jb250YWlubWVudD09IndpbmRvdyIpdGhpcy5jb250YWlu
bWVudD1bKGEuY29udGFpbm1lbnQ9PSJkb2N1bWVudCI/MDpkKHdpbmRvdykuc2Nyb2xsTGVmdCgp
KS10aGlzLm9mZnNldC5yZWxhdGl2ZS5sZWZ0LXRoaXMub2Zmc2V0LnBhcmVudC5sZWZ0LChhLmNv
bnRhaW5tZW50PT0iZG9jdW1lbnQiPzA6ZCh3aW5kb3cpLnNjcm9sbFRvcCgpKS10aGlzLm9mZnNl
dC5yZWxhdGl2ZS50b3AtdGhpcy5vZmZzZXQucGFyZW50LnRvcCwoYS5jb250YWlubWVudD09ImRv
Y3VtZW50Ij8wOmQod2luZG93KS5zY3JvbGxMZWZ0KCkpK2QoYS5jb250YWlubWVudD09ImRvY3Vt
ZW50Ij9kb2N1bWVudDp3aW5kb3cpLndpZHRoKCktdGhpcy5oZWxwZXJQcm9wb3J0aW9ucy53aWR0
aC10aGlzLm1hcmdpbnMubGVmdCwoYS5jb250YWlubWVudD09ImRvY3VtZW50Ij8KLTA6ZCh3aW5k
b3cpLnNjcm9sbFRvcCgpKSsoZChhLmNvbnRhaW5tZW50PT0iZG9jdW1lbnQiP2RvY3VtZW50Ondp
bmRvdykuaGVpZ2h0KCl8fGRvY3VtZW50LmJvZHkucGFyZW50Tm9kZS5zY3JvbGxIZWlnaHQpLXRo
aXMuaGVscGVyUHJvcG9ydGlvbnMuaGVpZ2h0LXRoaXMubWFyZ2lucy50b3BdO2lmKCEvXihkb2N1
bWVudHx3aW5kb3d8cGFyZW50KSQvLnRlc3QoYS5jb250YWlubWVudCkmJmEuY29udGFpbm1lbnQu
Y29uc3RydWN0b3IhPUFycmF5KXt2YXIgYj1kKGEuY29udGFpbm1lbnQpWzBdO2lmKGIpe2E9ZChh
LmNvbnRhaW5tZW50KS5vZmZzZXQoKTt2YXIgYz1kKGIpLmNzcygib3ZlcmZsb3ciKSE9ImhpZGRl
biI7dGhpcy5jb250YWlubWVudD1bYS5sZWZ0KyhwYXJzZUludChkKGIpLmNzcygiYm9yZGVyTGVm
dFdpZHRoIiksMTApfHwwKSsocGFyc2VJbnQoZChiKS5jc3MoInBhZGRpbmdMZWZ0IiksMTApfHww
KS10aGlzLm1hcmdpbnMubGVmdCxhLnRvcCsocGFyc2VJbnQoZChiKS5jc3MoImJvcmRlclRvcFdp
ZHRoIiksCi0xMCl8fDApKyhwYXJzZUludChkKGIpLmNzcygicGFkZGluZ1RvcCIpLDEwKXx8MCkt
dGhpcy5tYXJnaW5zLnRvcCxhLmxlZnQrKGM/TWF0aC5tYXgoYi5zY3JvbGxXaWR0aCxiLm9mZnNl
dFdpZHRoKTpiLm9mZnNldFdpZHRoKS0ocGFyc2VJbnQoZChiKS5jc3MoImJvcmRlckxlZnRXaWR0
aCIpLDEwKXx8MCktKHBhcnNlSW50KGQoYikuY3NzKCJwYWRkaW5nUmlnaHQiKSwxMCl8fDApLXRo
aXMuaGVscGVyUHJvcG9ydGlvbnMud2lkdGgtdGhpcy5tYXJnaW5zLmxlZnQsYS50b3ArKGM/TWF0
aC5tYXgoYi5zY3JvbGxIZWlnaHQsYi5vZmZzZXRIZWlnaHQpOmIub2Zmc2V0SGVpZ2h0KS0ocGFy
c2VJbnQoZChiKS5jc3MoImJvcmRlclRvcFdpZHRoIiksMTApfHwwKS0ocGFyc2VJbnQoZChiKS5j
c3MoInBhZGRpbmdCb3R0b20iKSwxMCl8fDApLXRoaXMuaGVscGVyUHJvcG9ydGlvbnMuaGVpZ2h0
LXRoaXMubWFyZ2lucy50b3BdfX1lbHNlIGlmKGEuY29udGFpbm1lbnQuY29uc3RydWN0b3I9PQot
QXJyYXkpdGhpcy5jb250YWlubWVudD1hLmNvbnRhaW5tZW50fSxfY29udmVydFBvc2l0aW9uVG86
ZnVuY3Rpb24oYSxiKXtpZighYiliPXRoaXMucG9zaXRpb247YT1hPT0iYWJzb2x1dGUiPzE6LTE7
dmFyIGM9dGhpcy5jc3NQb3NpdGlvbj09ImFic29sdXRlIiYmISh0aGlzLnNjcm9sbFBhcmVudFsw
XSE9ZG9jdW1lbnQmJmQudWkuY29udGFpbnModGhpcy5zY3JvbGxQYXJlbnRbMF0sdGhpcy5vZmZz
ZXRQYXJlbnRbMF0pKT90aGlzLm9mZnNldFBhcmVudDp0aGlzLnNjcm9sbFBhcmVudCxmPS8oaHRt
bHxib2R5KS9pLnRlc3QoY1swXS50YWdOYW1lKTtyZXR1cm57dG9wOmIudG9wK3RoaXMub2Zmc2V0
LnJlbGF0aXZlLnRvcCphK3RoaXMub2Zmc2V0LnBhcmVudC50b3AqYS0oZC5icm93c2VyLnNhZmFy
aSYmZC5icm93c2VyLnZlcnNpb248NTI2JiZ0aGlzLmNzc1Bvc2l0aW9uPT0iZml4ZWQiPzA6KHRo
aXMuY3NzUG9zaXRpb249PSJmaXhlZCI/LXRoaXMuc2Nyb2xsUGFyZW50LnNjcm9sbFRvcCgpOgot
Zj8wOmMuc2Nyb2xsVG9wKCkpKmEpLGxlZnQ6Yi5sZWZ0K3RoaXMub2Zmc2V0LnJlbGF0aXZlLmxl
ZnQqYSt0aGlzLm9mZnNldC5wYXJlbnQubGVmdCphLShkLmJyb3dzZXIuc2FmYXJpJiZkLmJyb3dz
ZXIudmVyc2lvbjw1MjYmJnRoaXMuY3NzUG9zaXRpb249PSJmaXhlZCI/MDoodGhpcy5jc3NQb3Np
dGlvbj09ImZpeGVkIj8tdGhpcy5zY3JvbGxQYXJlbnQuc2Nyb2xsTGVmdCgpOmY/MDpjLnNjcm9s
bExlZnQoKSkqYSl9fSxfZ2VuZXJhdGVQb3NpdGlvbjpmdW5jdGlvbihhKXt2YXIgYj10aGlzLm9w
dGlvbnMsYz10aGlzLmNzc1Bvc2l0aW9uPT0iYWJzb2x1dGUiJiYhKHRoaXMuc2Nyb2xsUGFyZW50
WzBdIT1kb2N1bWVudCYmZC51aS5jb250YWlucyh0aGlzLnNjcm9sbFBhcmVudFswXSx0aGlzLm9m
ZnNldFBhcmVudFswXSkpP3RoaXMub2Zmc2V0UGFyZW50OnRoaXMuc2Nyb2xsUGFyZW50LGY9Lyho
dG1sfGJvZHkpL2kudGVzdChjWzBdLnRhZ05hbWUpLGU9YS5wYWdlWCxnPWEucGFnZVk7Ci1pZih0
aGlzLm9yaWdpbmFsUG9zaXRpb24pe2lmKHRoaXMuY29udGFpbm1lbnQpe2lmKGEucGFnZVgtdGhp
cy5vZmZzZXQuY2xpY2subGVmdDx0aGlzLmNvbnRhaW5tZW50WzBdKWU9dGhpcy5jb250YWlubWVu
dFswXSt0aGlzLm9mZnNldC5jbGljay5sZWZ0O2lmKGEucGFnZVktdGhpcy5vZmZzZXQuY2xpY2su
dG9wPHRoaXMuY29udGFpbm1lbnRbMV0pZz10aGlzLmNvbnRhaW5tZW50WzFdK3RoaXMub2Zmc2V0
LmNsaWNrLnRvcDtpZihhLnBhZ2VYLXRoaXMub2Zmc2V0LmNsaWNrLmxlZnQ+dGhpcy5jb250YWlu
bWVudFsyXSllPXRoaXMuY29udGFpbm1lbnRbMl0rdGhpcy5vZmZzZXQuY2xpY2subGVmdDtpZihh
LnBhZ2VZLXRoaXMub2Zmc2V0LmNsaWNrLnRvcD50aGlzLmNvbnRhaW5tZW50WzNdKWc9dGhpcy5j
b250YWlubWVudFszXSt0aGlzLm9mZnNldC5jbGljay50b3B9aWYoYi5ncmlkKXtnPXRoaXMub3Jp
Z2luYWxQYWdlWStNYXRoLnJvdW5kKChnLXRoaXMub3JpZ2luYWxQYWdlWSkvCi1iLmdyaWRbMV0p
KmIuZ3JpZFsxXTtnPXRoaXMuY29udGFpbm1lbnQ/IShnLXRoaXMub2Zmc2V0LmNsaWNrLnRvcDx0
aGlzLmNvbnRhaW5tZW50WzFdfHxnLXRoaXMub2Zmc2V0LmNsaWNrLnRvcD50aGlzLmNvbnRhaW5t
ZW50WzNdKT9nOiEoZy10aGlzLm9mZnNldC5jbGljay50b3A8dGhpcy5jb250YWlubWVudFsxXSk/
Zy1iLmdyaWRbMV06ZytiLmdyaWRbMV06ZztlPXRoaXMub3JpZ2luYWxQYWdlWCtNYXRoLnJvdW5k
KChlLXRoaXMub3JpZ2luYWxQYWdlWCkvYi5ncmlkWzBdKSpiLmdyaWRbMF07ZT10aGlzLmNvbnRh
aW5tZW50PyEoZS10aGlzLm9mZnNldC5jbGljay5sZWZ0PHRoaXMuY29udGFpbm1lbnRbMF18fGUt
dGhpcy5vZmZzZXQuY2xpY2subGVmdD50aGlzLmNvbnRhaW5tZW50WzJdKT9lOiEoZS10aGlzLm9m
ZnNldC5jbGljay5sZWZ0PHRoaXMuY29udGFpbm1lbnRbMF0pP2UtYi5ncmlkWzBdOmUrYi5ncmlk
WzBdOmV9fXJldHVybnt0b3A6Zy10aGlzLm9mZnNldC5jbGljay50b3AtCi10aGlzLm9mZnNldC5y
ZWxhdGl2ZS50b3AtdGhpcy5vZmZzZXQucGFyZW50LnRvcCsoZC5icm93c2VyLnNhZmFyaSYmZC5i
cm93c2VyLnZlcnNpb248NTI2JiZ0aGlzLmNzc1Bvc2l0aW9uPT0iZml4ZWQiPzA6dGhpcy5jc3NQ
b3NpdGlvbj09ImZpeGVkIj8tdGhpcy5zY3JvbGxQYXJlbnQuc2Nyb2xsVG9wKCk6Zj8wOmMuc2Ny
b2xsVG9wKCkpLGxlZnQ6ZS10aGlzLm9mZnNldC5jbGljay5sZWZ0LXRoaXMub2Zmc2V0LnJlbGF0
aXZlLmxlZnQtdGhpcy5vZmZzZXQucGFyZW50LmxlZnQrKGQuYnJvd3Nlci5zYWZhcmkmJmQuYnJv
d3Nlci52ZXJzaW9uPDUyNiYmdGhpcy5jc3NQb3NpdGlvbj09ImZpeGVkIj8wOnRoaXMuY3NzUG9z
aXRpb249PSJmaXhlZCI/LXRoaXMuc2Nyb2xsUGFyZW50LnNjcm9sbExlZnQoKTpmPzA6Yy5zY3Jv
bGxMZWZ0KCkpfX0sX2NsZWFyOmZ1bmN0aW9uKCl7dGhpcy5oZWxwZXIucmVtb3ZlQ2xhc3MoInVp
LWRyYWdnYWJsZS1kcmFnZ2luZyIpO3RoaXMuaGVscGVyWzBdIT0KLXRoaXMuZWxlbWVudFswXSYm
IXRoaXMuY2FuY2VsSGVscGVyUmVtb3ZhbCYmdGhpcy5oZWxwZXIucmVtb3ZlKCk7dGhpcy5oZWxw
ZXI9bnVsbDt0aGlzLmNhbmNlbEhlbHBlclJlbW92YWw9ZmFsc2V9LF90cmlnZ2VyOmZ1bmN0aW9u
KGEsYixjKXtjPWN8fHRoaXMuX3VpSGFzaCgpO2QudWkucGx1Z2luLmNhbGwodGhpcyxhLFtiLGNd
KTtpZihhPT0iZHJhZyIpdGhpcy5wb3NpdGlvbkFicz10aGlzLl9jb252ZXJ0UG9zaXRpb25Ubygi
YWJzb2x1dGUiKTtyZXR1cm4gZC5XaWRnZXQucHJvdG90eXBlLl90cmlnZ2VyLmNhbGwodGhpcyxh
LGIsYyl9LHBsdWdpbnM6e30sX3VpSGFzaDpmdW5jdGlvbigpe3JldHVybntoZWxwZXI6dGhpcy5o
ZWxwZXIscG9zaXRpb246dGhpcy5wb3NpdGlvbixvcmlnaW5hbFBvc2l0aW9uOnRoaXMub3JpZ2lu
YWxQb3NpdGlvbixvZmZzZXQ6dGhpcy5wb3NpdGlvbkFic319fSk7ZC5leHRlbmQoZC51aS5kcmFn
Z2FibGUse3ZlcnNpb246IjEuOC4xMCJ9KTsKLWQudWkucGx1Z2luLmFkZCgiZHJhZ2dhYmxlIiwi
Y29ubmVjdFRvU29ydGFibGUiLHtzdGFydDpmdW5jdGlvbihhLGIpe3ZhciBjPWQodGhpcykuZGF0
YSgiZHJhZ2dhYmxlIiksZj1jLm9wdGlvbnMsZT1kLmV4dGVuZCh7fSxiLHtpdGVtOmMuZWxlbWVu
dH0pO2Muc29ydGFibGVzPVtdO2QoZi5jb25uZWN0VG9Tb3J0YWJsZSkuZWFjaChmdW5jdGlvbigp
e3ZhciBnPWQuZGF0YSh0aGlzLCJzb3J0YWJsZSIpO2lmKGcmJiFnLm9wdGlvbnMuZGlzYWJsZWQp
e2Muc29ydGFibGVzLnB1c2goe2luc3RhbmNlOmcsc2hvdWxkUmV2ZXJ0Omcub3B0aW9ucy5yZXZl
cnR9KTtnLl9yZWZyZXNoSXRlbXMoKTtnLl90cmlnZ2VyKCJhY3RpdmF0ZSIsYSxlKX19KX0sc3Rv
cDpmdW5jdGlvbihhLGIpe3ZhciBjPWQodGhpcykuZGF0YSgiZHJhZ2dhYmxlIiksZj1kLmV4dGVu
ZCh7fSxiLHtpdGVtOmMuZWxlbWVudH0pO2QuZWFjaChjLnNvcnRhYmxlcyxmdW5jdGlvbigpe2lm
KHRoaXMuaW5zdGFuY2UuaXNPdmVyKXt0aGlzLmluc3RhbmNlLmlzT3Zlcj0KLTA7Yy5jYW5jZWxI
ZWxwZXJSZW1vdmFsPXRydWU7dGhpcy5pbnN0YW5jZS5jYW5jZWxIZWxwZXJSZW1vdmFsPWZhbHNl
O2lmKHRoaXMuc2hvdWxkUmV2ZXJ0KXRoaXMuaW5zdGFuY2Uub3B0aW9ucy5yZXZlcnQ9dHJ1ZTt0
aGlzLmluc3RhbmNlLl9tb3VzZVN0b3AoYSk7dGhpcy5pbnN0YW5jZS5vcHRpb25zLmhlbHBlcj10
aGlzLmluc3RhbmNlLm9wdGlvbnMuX2hlbHBlcjtjLm9wdGlvbnMuaGVscGVyPT0ib3JpZ2luYWwi
JiZ0aGlzLmluc3RhbmNlLmN1cnJlbnRJdGVtLmNzcyh7dG9wOiJhdXRvIixsZWZ0OiJhdXRvIn0p
fWVsc2V7dGhpcy5pbnN0YW5jZS5jYW5jZWxIZWxwZXJSZW1vdmFsPWZhbHNlO3RoaXMuaW5zdGFu
Y2UuX3RyaWdnZXIoImRlYWN0aXZhdGUiLGEsZil9fSl9LGRyYWc6ZnVuY3Rpb24oYSxiKXt2YXIg
Yz1kKHRoaXMpLmRhdGEoImRyYWdnYWJsZSIpLGY9dGhpcztkLmVhY2goYy5zb3J0YWJsZXMsZnVu
Y3Rpb24oKXt0aGlzLmluc3RhbmNlLnBvc2l0aW9uQWJzPQotYy5wb3NpdGlvbkFiczt0aGlzLmlu
c3RhbmNlLmhlbHBlclByb3BvcnRpb25zPWMuaGVscGVyUHJvcG9ydGlvbnM7dGhpcy5pbnN0YW5j
ZS5vZmZzZXQuY2xpY2s9Yy5vZmZzZXQuY2xpY2s7aWYodGhpcy5pbnN0YW5jZS5faW50ZXJzZWN0
c1dpdGgodGhpcy5pbnN0YW5jZS5jb250YWluZXJDYWNoZSkpe2lmKCF0aGlzLmluc3RhbmNlLmlz
T3Zlcil7dGhpcy5pbnN0YW5jZS5pc092ZXI9MTt0aGlzLmluc3RhbmNlLmN1cnJlbnRJdGVtPWQo
ZikuY2xvbmUoKS5hcHBlbmRUbyh0aGlzLmluc3RhbmNlLmVsZW1lbnQpLmRhdGEoInNvcnRhYmxl
LWl0ZW0iLHRydWUpO3RoaXMuaW5zdGFuY2Uub3B0aW9ucy5faGVscGVyPXRoaXMuaW5zdGFuY2Uu
b3B0aW9ucy5oZWxwZXI7dGhpcy5pbnN0YW5jZS5vcHRpb25zLmhlbHBlcj1mdW5jdGlvbigpe3Jl
dHVybiBiLmhlbHBlclswXX07YS50YXJnZXQ9dGhpcy5pbnN0YW5jZS5jdXJyZW50SXRlbVswXTt0
aGlzLmluc3RhbmNlLl9tb3VzZUNhcHR1cmUoYSwKLXRydWUpO3RoaXMuaW5zdGFuY2UuX21vdXNl
U3RhcnQoYSx0cnVlLHRydWUpO3RoaXMuaW5zdGFuY2Uub2Zmc2V0LmNsaWNrLnRvcD1jLm9mZnNl
dC5jbGljay50b3A7dGhpcy5pbnN0YW5jZS5vZmZzZXQuY2xpY2subGVmdD1jLm9mZnNldC5jbGlj
ay5sZWZ0O3RoaXMuaW5zdGFuY2Uub2Zmc2V0LnBhcmVudC5sZWZ0LT1jLm9mZnNldC5wYXJlbnQu
bGVmdC10aGlzLmluc3RhbmNlLm9mZnNldC5wYXJlbnQubGVmdDt0aGlzLmluc3RhbmNlLm9mZnNl
dC5wYXJlbnQudG9wLT1jLm9mZnNldC5wYXJlbnQudG9wLXRoaXMuaW5zdGFuY2Uub2Zmc2V0LnBh
cmVudC50b3A7Yy5fdHJpZ2dlcigidG9Tb3J0YWJsZSIsYSk7Yy5kcm9wcGVkPXRoaXMuaW5zdGFu
Y2UuZWxlbWVudDtjLmN1cnJlbnRJdGVtPWMuZWxlbWVudDt0aGlzLmluc3RhbmNlLmZyb21PdXRz
aWRlPWN9dGhpcy5pbnN0YW5jZS5jdXJyZW50SXRlbSYmdGhpcy5pbnN0YW5jZS5fbW91c2VEcmFn
KGEpfWVsc2UgaWYodGhpcy5pbnN0YW5jZS5pc092ZXIpe3RoaXMuaW5zdGFuY2UuaXNPdmVyPQot
MDt0aGlzLmluc3RhbmNlLmNhbmNlbEhlbHBlclJlbW92YWw9dHJ1ZTt0aGlzLmluc3RhbmNlLm9w
dGlvbnMucmV2ZXJ0PWZhbHNlO3RoaXMuaW5zdGFuY2UuX3RyaWdnZXIoIm91dCIsYSx0aGlzLmlu
c3RhbmNlLl91aUhhc2godGhpcy5pbnN0YW5jZSkpO3RoaXMuaW5zdGFuY2UuX21vdXNlU3RvcChh
LHRydWUpO3RoaXMuaW5zdGFuY2Uub3B0aW9ucy5oZWxwZXI9dGhpcy5pbnN0YW5jZS5vcHRpb25z
Ll9oZWxwZXI7dGhpcy5pbnN0YW5jZS5jdXJyZW50SXRlbS5yZW1vdmUoKTt0aGlzLmluc3RhbmNl
LnBsYWNlaG9sZGVyJiZ0aGlzLmluc3RhbmNlLnBsYWNlaG9sZGVyLnJlbW92ZSgpO2MuX3RyaWdn
ZXIoImZyb21Tb3J0YWJsZSIsYSk7Yy5kcm9wcGVkPWZhbHNlfX0pfX0pO2QudWkucGx1Z2luLmFk
ZCgiZHJhZ2dhYmxlIiwiY3Vyc29yIix7c3RhcnQ6ZnVuY3Rpb24oKXt2YXIgYT1kKCJib2R5Iiks
Yj1kKHRoaXMpLmRhdGEoImRyYWdnYWJsZSIpLm9wdGlvbnM7aWYoYS5jc3MoImN1cnNvciIpKWIu
X2N1cnNvcj0KLWEuY3NzKCJjdXJzb3IiKTthLmNzcygiY3Vyc29yIixiLmN1cnNvcil9LHN0b3A6
ZnVuY3Rpb24oKXt2YXIgYT1kKHRoaXMpLmRhdGEoImRyYWdnYWJsZSIpLm9wdGlvbnM7YS5fY3Vy
c29yJiZkKCJib2R5IikuY3NzKCJjdXJzb3IiLGEuX2N1cnNvcil9fSk7ZC51aS5wbHVnaW4uYWRk
KCJkcmFnZ2FibGUiLCJpZnJhbWVGaXgiLHtzdGFydDpmdW5jdGlvbigpe3ZhciBhPWQodGhpcyku
ZGF0YSgiZHJhZ2dhYmxlIikub3B0aW9ucztkKGEuaWZyYW1lRml4PT09dHJ1ZT8iaWZyYW1lIjph
LmlmcmFtZUZpeCkuZWFjaChmdW5jdGlvbigpe2QoJzxkaXYgY2xhc3M9InVpLWRyYWdnYWJsZS1p
ZnJhbWVGaXgiIHN0eWxlPSJiYWNrZ3JvdW5kOiAjZmZmOyI+PC9kaXY+JykuY3NzKHt3aWR0aDp0
aGlzLm9mZnNldFdpZHRoKyJweCIsaGVpZ2h0OnRoaXMub2Zmc2V0SGVpZ2h0KyJweCIscG9zaXRp
b246ImFic29sdXRlIixvcGFjaXR5OiIwLjAwMSIsekluZGV4OjFFM30pLmNzcyhkKHRoaXMpLm9m
ZnNldCgpKS5hcHBlbmRUbygiYm9keSIpfSl9LAotc3RvcDpmdW5jdGlvbigpe2QoImRpdi51aS1k
cmFnZ2FibGUtaWZyYW1lRml4IikuZWFjaChmdW5jdGlvbigpe3RoaXMucGFyZW50Tm9kZS5yZW1v
dmVDaGlsZCh0aGlzKX0pfX0pO2QudWkucGx1Z2luLmFkZCgiZHJhZ2dhYmxlIiwib3BhY2l0eSIs
e3N0YXJ0OmZ1bmN0aW9uKGEsYil7YT1kKGIuaGVscGVyKTtiPWQodGhpcykuZGF0YSgiZHJhZ2dh
YmxlIikub3B0aW9ucztpZihhLmNzcygib3BhY2l0eSIpKWIuX29wYWNpdHk9YS5jc3MoIm9wYWNp
dHkiKTthLmNzcygib3BhY2l0eSIsYi5vcGFjaXR5KX0sc3RvcDpmdW5jdGlvbihhLGIpe2E9ZCh0
aGlzKS5kYXRhKCJkcmFnZ2FibGUiKS5vcHRpb25zO2EuX29wYWNpdHkmJmQoYi5oZWxwZXIpLmNz
cygib3BhY2l0eSIsYS5fb3BhY2l0eSl9fSk7ZC51aS5wbHVnaW4uYWRkKCJkcmFnZ2FibGUiLCJz
Y3JvbGwiLHtzdGFydDpmdW5jdGlvbigpe3ZhciBhPWQodGhpcykuZGF0YSgiZHJhZ2dhYmxlIik7
aWYoYS5zY3JvbGxQYXJlbnRbMF0hPQotZG9jdW1lbnQmJmEuc2Nyb2xsUGFyZW50WzBdLnRhZ05h
bWUhPSJIVE1MIilhLm92ZXJmbG93T2Zmc2V0PWEuc2Nyb2xsUGFyZW50Lm9mZnNldCgpfSxkcmFn
OmZ1bmN0aW9uKGEpe3ZhciBiPWQodGhpcykuZGF0YSgiZHJhZ2dhYmxlIiksYz1iLm9wdGlvbnMs
Zj1mYWxzZTtpZihiLnNjcm9sbFBhcmVudFswXSE9ZG9jdW1lbnQmJmIuc2Nyb2xsUGFyZW50WzBd
LnRhZ05hbWUhPSJIVE1MIil7aWYoIWMuYXhpc3x8Yy5heGlzIT0ieCIpaWYoYi5vdmVyZmxvd09m
ZnNldC50b3ArYi5zY3JvbGxQYXJlbnRbMF0ub2Zmc2V0SGVpZ2h0LWEucGFnZVk8Yy5zY3JvbGxT
ZW5zaXRpdml0eSliLnNjcm9sbFBhcmVudFswXS5zY3JvbGxUb3A9Zj1iLnNjcm9sbFBhcmVudFsw
XS5zY3JvbGxUb3ArYy5zY3JvbGxTcGVlZDtlbHNlIGlmKGEucGFnZVktYi5vdmVyZmxvd09mZnNl
dC50b3A8Yy5zY3JvbGxTZW5zaXRpdml0eSliLnNjcm9sbFBhcmVudFswXS5zY3JvbGxUb3A9Zj1i
LnNjcm9sbFBhcmVudFswXS5zY3JvbGxUb3AtCi1jLnNjcm9sbFNwZWVkO2lmKCFjLmF4aXN8fGMu
YXhpcyE9InkiKWlmKGIub3ZlcmZsb3dPZmZzZXQubGVmdCtiLnNjcm9sbFBhcmVudFswXS5vZmZz
ZXRXaWR0aC1hLnBhZ2VYPGMuc2Nyb2xsU2Vuc2l0aXZpdHkpYi5zY3JvbGxQYXJlbnRbMF0uc2Ny
b2xsTGVmdD1mPWIuc2Nyb2xsUGFyZW50WzBdLnNjcm9sbExlZnQrYy5zY3JvbGxTcGVlZDtlbHNl
IGlmKGEucGFnZVgtYi5vdmVyZmxvd09mZnNldC5sZWZ0PGMuc2Nyb2xsU2Vuc2l0aXZpdHkpYi5z
Y3JvbGxQYXJlbnRbMF0uc2Nyb2xsTGVmdD1mPWIuc2Nyb2xsUGFyZW50WzBdLnNjcm9sbExlZnQt
Yy5zY3JvbGxTcGVlZH1lbHNle2lmKCFjLmF4aXN8fGMuYXhpcyE9IngiKWlmKGEucGFnZVktZChk
b2N1bWVudCkuc2Nyb2xsVG9wKCk8Yy5zY3JvbGxTZW5zaXRpdml0eSlmPWQoZG9jdW1lbnQpLnNj
cm9sbFRvcChkKGRvY3VtZW50KS5zY3JvbGxUb3AoKS1jLnNjcm9sbFNwZWVkKTtlbHNlIGlmKGQo
d2luZG93KS5oZWlnaHQoKS0KLShhLnBhZ2VZLWQoZG9jdW1lbnQpLnNjcm9sbFRvcCgpKTxjLnNj
cm9sbFNlbnNpdGl2aXR5KWY9ZChkb2N1bWVudCkuc2Nyb2xsVG9wKGQoZG9jdW1lbnQpLnNjcm9s
bFRvcCgpK2Muc2Nyb2xsU3BlZWQpO2lmKCFjLmF4aXN8fGMuYXhpcyE9InkiKWlmKGEucGFnZVgt
ZChkb2N1bWVudCkuc2Nyb2xsTGVmdCgpPGMuc2Nyb2xsU2Vuc2l0aXZpdHkpZj1kKGRvY3VtZW50
KS5zY3JvbGxMZWZ0KGQoZG9jdW1lbnQpLnNjcm9sbExlZnQoKS1jLnNjcm9sbFNwZWVkKTtlbHNl
IGlmKGQod2luZG93KS53aWR0aCgpLShhLnBhZ2VYLWQoZG9jdW1lbnQpLnNjcm9sbExlZnQoKSk8
Yy5zY3JvbGxTZW5zaXRpdml0eSlmPWQoZG9jdW1lbnQpLnNjcm9sbExlZnQoZChkb2N1bWVudCku
c2Nyb2xsTGVmdCgpK2Muc2Nyb2xsU3BlZWQpfWYhPT1mYWxzZSYmZC51aS5kZG1hbmFnZXImJiFj
LmRyb3BCZWhhdmlvdXImJmQudWkuZGRtYW5hZ2VyLnByZXBhcmVPZmZzZXRzKGIsYSl9fSk7ZC51
aS5wbHVnaW4uYWRkKCJkcmFnZ2FibGUiLAotInNuYXAiLHtzdGFydDpmdW5jdGlvbigpe3ZhciBh
PWQodGhpcykuZGF0YSgiZHJhZ2dhYmxlIiksYj1hLm9wdGlvbnM7YS5zbmFwRWxlbWVudHM9W107
ZChiLnNuYXAuY29uc3RydWN0b3IhPVN0cmluZz9iLnNuYXAuaXRlbXN8fCI6ZGF0YShkcmFnZ2Fi
bGUpIjpiLnNuYXApLmVhY2goZnVuY3Rpb24oKXt2YXIgYz1kKHRoaXMpLGY9Yy5vZmZzZXQoKTt0
aGlzIT1hLmVsZW1lbnRbMF0mJmEuc25hcEVsZW1lbnRzLnB1c2goe2l0ZW06dGhpcyx3aWR0aDpj
Lm91dGVyV2lkdGgoKSxoZWlnaHQ6Yy5vdXRlckhlaWdodCgpLHRvcDpmLnRvcCxsZWZ0OmYubGVm
dH0pfSl9LGRyYWc6ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9ZCh0aGlzKS5kYXRhKCJkcmFnZ2Fi
bGUiKSxmPWMub3B0aW9ucyxlPWYuc25hcFRvbGVyYW5jZSxnPWIub2Zmc2V0LmxlZnQsbj1nK2Mu
aGVscGVyUHJvcG9ydGlvbnMud2lkdGgsbT1iLm9mZnNldC50b3Asbz1tK2MuaGVscGVyUHJvcG9y
dGlvbnMuaGVpZ2h0LGg9Ci1jLnNuYXBFbGVtZW50cy5sZW5ndGgtMTtoPj0wO2gtLSl7dmFyIGk9
Yy5zbmFwRWxlbWVudHNbaF0ubGVmdCxrPWkrYy5zbmFwRWxlbWVudHNbaF0ud2lkdGgsaj1jLnNu
YXBFbGVtZW50c1toXS50b3AsbD1qK2Muc25hcEVsZW1lbnRzW2hdLmhlaWdodDtpZihpLWU8ZyYm
ZzxrK2UmJmotZTxtJiZtPGwrZXx8aS1lPGcmJmc8aytlJiZqLWU8byYmbzxsK2V8fGktZTxuJiZu
PGsrZSYmai1lPG0mJm08bCtlfHxpLWU8biYmbjxrK2UmJmotZTxvJiZvPGwrZSl7aWYoZi5zbmFw
TW9kZSE9ImlubmVyIil7dmFyIHA9TWF0aC5hYnMoai1vKTw9ZSxxPU1hdGguYWJzKGwtbSk8PWUs
cj1NYXRoLmFicyhpLW4pPD1lLHM9TWF0aC5hYnMoay1nKTw9ZTtpZihwKWIucG9zaXRpb24udG9w
PWMuX2NvbnZlcnRQb3NpdGlvblRvKCJyZWxhdGl2ZSIse3RvcDpqLWMuaGVscGVyUHJvcG9ydGlv
bnMuaGVpZ2h0LGxlZnQ6MH0pLnRvcC1jLm1hcmdpbnMudG9wO2lmKHEpYi5wb3NpdGlvbi50b3A9
Yy5fY29udmVydFBvc2l0aW9uVG8oInJlbGF0aXZlIiwKLXt0b3A6bCxsZWZ0OjB9KS50b3AtYy5t
YXJnaW5zLnRvcDtpZihyKWIucG9zaXRpb24ubGVmdD1jLl9jb252ZXJ0UG9zaXRpb25UbygicmVs
YXRpdmUiLHt0b3A6MCxsZWZ0OmktYy5oZWxwZXJQcm9wb3J0aW9ucy53aWR0aH0pLmxlZnQtYy5t
YXJnaW5zLmxlZnQ7aWYocyliLnBvc2l0aW9uLmxlZnQ9Yy5fY29udmVydFBvc2l0aW9uVG8oInJl
bGF0aXZlIix7dG9wOjAsbGVmdDprfSkubGVmdC1jLm1hcmdpbnMubGVmdH12YXIgdD1wfHxxfHxy
fHxzO2lmKGYuc25hcE1vZGUhPSJvdXRlciIpe3A9TWF0aC5hYnMoai1tKTw9ZTtxPU1hdGguYWJz
KGwtbyk8PWU7cj1NYXRoLmFicyhpLWcpPD1lO3M9TWF0aC5hYnMoay1uKTw9ZTtpZihwKWIucG9z
aXRpb24udG9wPWMuX2NvbnZlcnRQb3NpdGlvblRvKCJyZWxhdGl2ZSIse3RvcDpqLGxlZnQ6MH0p
LnRvcC1jLm1hcmdpbnMudG9wO2lmKHEpYi5wb3NpdGlvbi50b3A9Yy5fY29udmVydFBvc2l0aW9u
VG8oInJlbGF0aXZlIix7dG9wOmwtYy5oZWxwZXJQcm9wb3J0aW9ucy5oZWlnaHQsCi1sZWZ0OjB9
KS50b3AtYy5tYXJnaW5zLnRvcDtpZihyKWIucG9zaXRpb24ubGVmdD1jLl9jb252ZXJ0UG9zaXRp
b25UbygicmVsYXRpdmUiLHt0b3A6MCxsZWZ0Oml9KS5sZWZ0LWMubWFyZ2lucy5sZWZ0O2lmKHMp
Yi5wb3NpdGlvbi5sZWZ0PWMuX2NvbnZlcnRQb3NpdGlvblRvKCJyZWxhdGl2ZSIse3RvcDowLGxl
ZnQ6ay1jLmhlbHBlclByb3BvcnRpb25zLndpZHRofSkubGVmdC1jLm1hcmdpbnMubGVmdH1pZigh
Yy5zbmFwRWxlbWVudHNbaF0uc25hcHBpbmcmJihwfHxxfHxyfHxzfHx0KSljLm9wdGlvbnMuc25h
cC5zbmFwJiZjLm9wdGlvbnMuc25hcC5zbmFwLmNhbGwoYy5lbGVtZW50LGEsZC5leHRlbmQoYy5f
dWlIYXNoKCkse3NuYXBJdGVtOmMuc25hcEVsZW1lbnRzW2hdLml0ZW19KSk7Yy5zbmFwRWxlbWVu
dHNbaF0uc25hcHBpbmc9cHx8cXx8cnx8c3x8dH1lbHNle2Muc25hcEVsZW1lbnRzW2hdLnNuYXBw
aW5nJiZjLm9wdGlvbnMuc25hcC5yZWxlYXNlJiZjLm9wdGlvbnMuc25hcC5yZWxlYXNlLmNhbGwo
Yy5lbGVtZW50LAotYSxkLmV4dGVuZChjLl91aUhhc2goKSx7c25hcEl0ZW06Yy5zbmFwRWxlbWVu
dHNbaF0uaXRlbX0pKTtjLnNuYXBFbGVtZW50c1toXS5zbmFwcGluZz1mYWxzZX19fX0pO2QudWku
cGx1Z2luLmFkZCgiZHJhZ2dhYmxlIiwic3RhY2siLHtzdGFydDpmdW5jdGlvbigpe3ZhciBhPWQo
dGhpcykuZGF0YSgiZHJhZ2dhYmxlIikub3B0aW9uczthPWQubWFrZUFycmF5KGQoYS5zdGFjaykp
LnNvcnQoZnVuY3Rpb24oYyxmKXtyZXR1cm4ocGFyc2VJbnQoZChjKS5jc3MoInpJbmRleCIpLDEw
KXx8MCktKHBhcnNlSW50KGQoZikuY3NzKCJ6SW5kZXgiKSwxMCl8fDApfSk7aWYoYS5sZW5ndGgp
e3ZhciBiPXBhcnNlSW50KGFbMF0uc3R5bGUuekluZGV4KXx8MDtkKGEpLmVhY2goZnVuY3Rpb24o
Yyl7dGhpcy5zdHlsZS56SW5kZXg9YitjfSk7dGhpc1swXS5zdHlsZS56SW5kZXg9YithLmxlbmd0
aH19fSk7ZC51aS5wbHVnaW4uYWRkKCJkcmFnZ2FibGUiLCJ6SW5kZXgiLHtzdGFydDpmdW5jdGlv
bihhLAotYil7YT1kKGIuaGVscGVyKTtiPWQodGhpcykuZGF0YSgiZHJhZ2dhYmxlIikub3B0aW9u
cztpZihhLmNzcygiekluZGV4IikpYi5fekluZGV4PWEuY3NzKCJ6SW5kZXgiKTthLmNzcygieklu
ZGV4IixiLnpJbmRleCl9LHN0b3A6ZnVuY3Rpb24oYSxiKXthPWQodGhpcykuZGF0YSgiZHJhZ2dh
YmxlIikub3B0aW9uczthLl96SW5kZXgmJmQoYi5oZWxwZXIpLmNzcygiekluZGV4IixhLl96SW5k
ZXgpfX0pfSkoalF1ZXJ5KTsKLTsvKgotICogalF1ZXJ5IFVJIERyb3BwYWJsZSAxLjguMTAKLSAq
Ci0gKiBDb3B5cmlnaHQgMjAxMSwgQVVUSE9SUy50eHQgKGh0dHA6Ly9qcXVlcnl1aS5jb20vYWJv
dXQpCi0gKiBEdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgb3IgR1BMIFZlcnNpb24gMiBsaWNl
bnNlcy4KLSAqIGh0dHA6Ly9qcXVlcnkub3JnL2xpY2Vuc2UKLSAqCi0gKiBodHRwOi8vZG9jcy5q
cXVlcnkuY29tL1VJL0Ryb3BwYWJsZXMKLSAqCi0gKiBEZXBlbmRzOgotICoJanF1ZXJ5LnVpLmNv
cmUuanMKLSAqCWpxdWVyeS51aS53aWRnZXQuanMKLSAqCWpxdWVyeS51aS5tb3VzZS5qcwotICoJ
anF1ZXJ5LnVpLmRyYWdnYWJsZS5qcwotICovCi0oZnVuY3Rpb24oZCl7ZC53aWRnZXQoInVpLmRy
b3BwYWJsZSIse3dpZGdldEV2ZW50UHJlZml4OiJkcm9wIixvcHRpb25zOnthY2NlcHQ6IioiLGFj
dGl2ZUNsYXNzOmZhbHNlLGFkZENsYXNzZXM6dHJ1ZSxncmVlZHk6ZmFsc2UsaG92ZXJDbGFzczpm
YWxzZSxzY29wZToiZGVmYXVsdCIsdG9sZXJhbmNlOiJpbnRlcnNlY3QifSxfY3JlYXRlOmZ1bmN0
aW9uKCl7dmFyIGE9dGhpcy5vcHRpb25zLGI9YS5hY2NlcHQ7dGhpcy5pc292ZXI9MDt0aGlzLmlz
b3V0PTE7dGhpcy5hY2NlcHQ9ZC5pc0Z1bmN0aW9uKGIpP2I6ZnVuY3Rpb24oYyl7cmV0dXJuIGMu
aXMoYil9O3RoaXMucHJvcG9ydGlvbnM9e3dpZHRoOnRoaXMuZWxlbWVudFswXS5vZmZzZXRXaWR0
aCxoZWlnaHQ6dGhpcy5lbGVtZW50WzBdLm9mZnNldEhlaWdodH07ZC51aS5kZG1hbmFnZXIuZHJv
cHBhYmxlc1thLnNjb3BlXT1kLnVpLmRkbWFuYWdlci5kcm9wcGFibGVzW2Euc2NvcGVdfHxbXTtk
LnVpLmRkbWFuYWdlci5kcm9wcGFibGVzW2Euc2NvcGVdLnB1c2godGhpcyk7Ci1hLmFkZENsYXNz
ZXMmJnRoaXMuZWxlbWVudC5hZGRDbGFzcygidWktZHJvcHBhYmxlIil9LGRlc3Ryb3k6ZnVuY3Rp
b24oKXtmb3IodmFyIGE9ZC51aS5kZG1hbmFnZXIuZHJvcHBhYmxlc1t0aGlzLm9wdGlvbnMuc2Nv
cGVdLGI9MDtiPGEubGVuZ3RoO2IrKylhW2JdPT10aGlzJiZhLnNwbGljZShiLDEpO3RoaXMuZWxl
bWVudC5yZW1vdmVDbGFzcygidWktZHJvcHBhYmxlIHVpLWRyb3BwYWJsZS1kaXNhYmxlZCIpLnJl
bW92ZURhdGEoImRyb3BwYWJsZSIpLnVuYmluZCgiLmRyb3BwYWJsZSIpO3JldHVybiB0aGlzfSxf
c2V0T3B0aW9uOmZ1bmN0aW9uKGEsYil7aWYoYT09ImFjY2VwdCIpdGhpcy5hY2NlcHQ9ZC5pc0Z1
bmN0aW9uKGIpP2I6ZnVuY3Rpb24oYyl7cmV0dXJuIGMuaXMoYil9O2QuV2lkZ2V0LnByb3RvdHlw
ZS5fc2V0T3B0aW9uLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sX2FjdGl2YXRlOmZ1bmN0aW9uKGEp
e3ZhciBiPWQudWkuZGRtYW5hZ2VyLmN1cnJlbnQ7dGhpcy5vcHRpb25zLmFjdGl2ZUNsYXNzJiYK
LXRoaXMuZWxlbWVudC5hZGRDbGFzcyh0aGlzLm9wdGlvbnMuYWN0aXZlQ2xhc3MpO2ImJnRoaXMu
X3RyaWdnZXIoImFjdGl2YXRlIixhLHRoaXMudWkoYikpfSxfZGVhY3RpdmF0ZTpmdW5jdGlvbihh
KXt2YXIgYj1kLnVpLmRkbWFuYWdlci5jdXJyZW50O3RoaXMub3B0aW9ucy5hY3RpdmVDbGFzcyYm
dGhpcy5lbGVtZW50LnJlbW92ZUNsYXNzKHRoaXMub3B0aW9ucy5hY3RpdmVDbGFzcyk7YiYmdGhp
cy5fdHJpZ2dlcigiZGVhY3RpdmF0ZSIsYSx0aGlzLnVpKGIpKX0sX292ZXI6ZnVuY3Rpb24oYSl7
dmFyIGI9ZC51aS5kZG1hbmFnZXIuY3VycmVudDtpZighKCFifHwoYi5jdXJyZW50SXRlbXx8Yi5l
bGVtZW50KVswXT09dGhpcy5lbGVtZW50WzBdKSlpZih0aGlzLmFjY2VwdC5jYWxsKHRoaXMuZWxl
bWVudFswXSxiLmN1cnJlbnRJdGVtfHxiLmVsZW1lbnQpKXt0aGlzLm9wdGlvbnMuaG92ZXJDbGFz
cyYmdGhpcy5lbGVtZW50LmFkZENsYXNzKHRoaXMub3B0aW9ucy5ob3ZlckNsYXNzKTsKLXRoaXMu
X3RyaWdnZXIoIm92ZXIiLGEsdGhpcy51aShiKSl9fSxfb3V0OmZ1bmN0aW9uKGEpe3ZhciBiPWQu
dWkuZGRtYW5hZ2VyLmN1cnJlbnQ7aWYoISghYnx8KGIuY3VycmVudEl0ZW18fGIuZWxlbWVudClb
MF09PXRoaXMuZWxlbWVudFswXSkpaWYodGhpcy5hY2NlcHQuY2FsbCh0aGlzLmVsZW1lbnRbMF0s
Yi5jdXJyZW50SXRlbXx8Yi5lbGVtZW50KSl7dGhpcy5vcHRpb25zLmhvdmVyQ2xhc3MmJnRoaXMu
ZWxlbWVudC5yZW1vdmVDbGFzcyh0aGlzLm9wdGlvbnMuaG92ZXJDbGFzcyk7dGhpcy5fdHJpZ2dl
cigib3V0IixhLHRoaXMudWkoYikpfX0sX2Ryb3A6ZnVuY3Rpb24oYSxiKXt2YXIgYz1ifHxkLnVp
LmRkbWFuYWdlci5jdXJyZW50O2lmKCFjfHwoYy5jdXJyZW50SXRlbXx8Yy5lbGVtZW50KVswXT09
dGhpcy5lbGVtZW50WzBdKXJldHVybiBmYWxzZTt2YXIgZT1mYWxzZTt0aGlzLmVsZW1lbnQuZmlu
ZCgiOmRhdGEoZHJvcHBhYmxlKSIpLm5vdCgiLnVpLWRyYWdnYWJsZS1kcmFnZ2luZyIpLmVhY2go
ZnVuY3Rpb24oKXt2YXIgZz0KLWQuZGF0YSh0aGlzLCJkcm9wcGFibGUiKTtpZihnLm9wdGlvbnMu
Z3JlZWR5JiYhZy5vcHRpb25zLmRpc2FibGVkJiZnLm9wdGlvbnMuc2NvcGU9PWMub3B0aW9ucy5z
Y29wZSYmZy5hY2NlcHQuY2FsbChnLmVsZW1lbnRbMF0sYy5jdXJyZW50SXRlbXx8Yy5lbGVtZW50
KSYmZC51aS5pbnRlcnNlY3QoYyxkLmV4dGVuZChnLHtvZmZzZXQ6Zy5lbGVtZW50Lm9mZnNldCgp
fSksZy5vcHRpb25zLnRvbGVyYW5jZSkpe2U9dHJ1ZTtyZXR1cm4gZmFsc2V9fSk7aWYoZSlyZXR1
cm4gZmFsc2U7aWYodGhpcy5hY2NlcHQuY2FsbCh0aGlzLmVsZW1lbnRbMF0sYy5jdXJyZW50SXRl
bXx8Yy5lbGVtZW50KSl7dGhpcy5vcHRpb25zLmFjdGl2ZUNsYXNzJiZ0aGlzLmVsZW1lbnQucmVt
b3ZlQ2xhc3ModGhpcy5vcHRpb25zLmFjdGl2ZUNsYXNzKTt0aGlzLm9wdGlvbnMuaG92ZXJDbGFz
cyYmdGhpcy5lbGVtZW50LnJlbW92ZUNsYXNzKHRoaXMub3B0aW9ucy5ob3ZlckNsYXNzKTt0aGlz
Ll90cmlnZ2VyKCJkcm9wIiwKLWEsdGhpcy51aShjKSk7cmV0dXJuIHRoaXMuZWxlbWVudH1yZXR1
cm4gZmFsc2V9LHVpOmZ1bmN0aW9uKGEpe3JldHVybntkcmFnZ2FibGU6YS5jdXJyZW50SXRlbXx8
YS5lbGVtZW50LGhlbHBlcjphLmhlbHBlcixwb3NpdGlvbjphLnBvc2l0aW9uLG9mZnNldDphLnBv
c2l0aW9uQWJzfX19KTtkLmV4dGVuZChkLnVpLmRyb3BwYWJsZSx7dmVyc2lvbjoiMS44LjEwIn0p
O2QudWkuaW50ZXJzZWN0PWZ1bmN0aW9uKGEsYixjKXtpZighYi5vZmZzZXQpcmV0dXJuIGZhbHNl
O3ZhciBlPShhLnBvc2l0aW9uQWJzfHxhLnBvc2l0aW9uLmFic29sdXRlKS5sZWZ0LGc9ZSthLmhl
bHBlclByb3BvcnRpb25zLndpZHRoLGY9KGEucG9zaXRpb25BYnN8fGEucG9zaXRpb24uYWJzb2x1
dGUpLnRvcCxoPWYrYS5oZWxwZXJQcm9wb3J0aW9ucy5oZWlnaHQsaT1iLm9mZnNldC5sZWZ0LGs9
aStiLnByb3BvcnRpb25zLndpZHRoLGo9Yi5vZmZzZXQudG9wLGw9aitiLnByb3BvcnRpb25zLmhl
aWdodDsKLXN3aXRjaChjKXtjYXNlICJmaXQiOnJldHVybiBpPD1lJiZnPD1rJiZqPD1mJiZoPD1s
O2Nhc2UgImludGVyc2VjdCI6cmV0dXJuIGk8ZSthLmhlbHBlclByb3BvcnRpb25zLndpZHRoLzIm
JmctYS5oZWxwZXJQcm9wb3J0aW9ucy53aWR0aC8yPGsmJmo8ZithLmhlbHBlclByb3BvcnRpb25z
LmhlaWdodC8yJiZoLWEuaGVscGVyUHJvcG9ydGlvbnMuaGVpZ2h0LzI8bDtjYXNlICJwb2ludGVy
IjpyZXR1cm4gZC51aS5pc092ZXIoKGEucG9zaXRpb25BYnN8fGEucG9zaXRpb24uYWJzb2x1dGUp
LnRvcCsoYS5jbGlja09mZnNldHx8YS5vZmZzZXQuY2xpY2spLnRvcCwoYS5wb3NpdGlvbkFic3x8
YS5wb3NpdGlvbi5hYnNvbHV0ZSkubGVmdCsoYS5jbGlja09mZnNldHx8YS5vZmZzZXQuY2xpY2sp
LmxlZnQsaixpLGIucHJvcG9ydGlvbnMuaGVpZ2h0LGIucHJvcG9ydGlvbnMud2lkdGgpO2Nhc2Ug
InRvdWNoIjpyZXR1cm4oZj49aiYmZjw9bHx8aD49aiYmaDw9bHx8ZjxqJiZoPmwpJiYoZT49Ci1p
JiZlPD1rfHxnPj1pJiZnPD1rfHxlPGkmJmc+ayk7ZGVmYXVsdDpyZXR1cm4gZmFsc2V9fTtkLnVp
LmRkbWFuYWdlcj17Y3VycmVudDpudWxsLGRyb3BwYWJsZXM6eyJkZWZhdWx0IjpbXX0scHJlcGFy
ZU9mZnNldHM6ZnVuY3Rpb24oYSxiKXt2YXIgYz1kLnVpLmRkbWFuYWdlci5kcm9wcGFibGVzW2Eu
b3B0aW9ucy5zY29wZV18fFtdLGU9Yj9iLnR5cGU6bnVsbCxnPShhLmN1cnJlbnRJdGVtfHxhLmVs
ZW1lbnQpLmZpbmQoIjpkYXRhKGRyb3BwYWJsZSkiKS5hbmRTZWxmKCksZj0wO2E6Zm9yKDtmPGMu
bGVuZ3RoO2YrKylpZighKGNbZl0ub3B0aW9ucy5kaXNhYmxlZHx8YSYmIWNbZl0uYWNjZXB0LmNh
bGwoY1tmXS5lbGVtZW50WzBdLGEuY3VycmVudEl0ZW18fGEuZWxlbWVudCkpKXtmb3IodmFyIGg9
MDtoPGcubGVuZ3RoO2grKylpZihnW2hdPT1jW2ZdLmVsZW1lbnRbMF0pe2NbZl0ucHJvcG9ydGlv
bnMuaGVpZ2h0PTA7Y29udGludWUgYX1jW2ZdLnZpc2libGU9Y1tmXS5lbGVtZW50LmNzcygiZGlz
cGxheSIpIT0KLSJub25lIjtpZihjW2ZdLnZpc2libGUpe2NbZl0ub2Zmc2V0PWNbZl0uZWxlbWVu
dC5vZmZzZXQoKTtjW2ZdLnByb3BvcnRpb25zPXt3aWR0aDpjW2ZdLmVsZW1lbnRbMF0ub2Zmc2V0
V2lkdGgsaGVpZ2h0OmNbZl0uZWxlbWVudFswXS5vZmZzZXRIZWlnaHR9O2U9PSJtb3VzZWRvd24i
JiZjW2ZdLl9hY3RpdmF0ZS5jYWxsKGNbZl0sYil9fX0sZHJvcDpmdW5jdGlvbihhLGIpe3ZhciBj
PWZhbHNlO2QuZWFjaChkLnVpLmRkbWFuYWdlci5kcm9wcGFibGVzW2Eub3B0aW9ucy5zY29wZV18
fFtdLGZ1bmN0aW9uKCl7aWYodGhpcy5vcHRpb25zKXtpZighdGhpcy5vcHRpb25zLmRpc2FibGVk
JiZ0aGlzLnZpc2libGUmJmQudWkuaW50ZXJzZWN0KGEsdGhpcyx0aGlzLm9wdGlvbnMudG9sZXJh
bmNlKSljPWN8fHRoaXMuX2Ryb3AuY2FsbCh0aGlzLGIpO2lmKCF0aGlzLm9wdGlvbnMuZGlzYWJs
ZWQmJnRoaXMudmlzaWJsZSYmdGhpcy5hY2NlcHQuY2FsbCh0aGlzLmVsZW1lbnRbMF0sYS5jdXJy
ZW50SXRlbXx8Ci1hLmVsZW1lbnQpKXt0aGlzLmlzb3V0PTE7dGhpcy5pc292ZXI9MDt0aGlzLl9k
ZWFjdGl2YXRlLmNhbGwodGhpcyxiKX19fSk7cmV0dXJuIGN9LGRyYWc6ZnVuY3Rpb24oYSxiKXth
Lm9wdGlvbnMucmVmcmVzaFBvc2l0aW9ucyYmZC51aS5kZG1hbmFnZXIucHJlcGFyZU9mZnNldHMo
YSxiKTtkLmVhY2goZC51aS5kZG1hbmFnZXIuZHJvcHBhYmxlc1thLm9wdGlvbnMuc2NvcGVdfHxb
XSxmdW5jdGlvbigpe2lmKCEodGhpcy5vcHRpb25zLmRpc2FibGVkfHx0aGlzLmdyZWVkeUNoaWxk
fHwhdGhpcy52aXNpYmxlKSl7dmFyIGM9ZC51aS5pbnRlcnNlY3QoYSx0aGlzLHRoaXMub3B0aW9u
cy50b2xlcmFuY2UpO2lmKGM9IWMmJnRoaXMuaXNvdmVyPT0xPyJpc291dCI6YyYmdGhpcy5pc292
ZXI9PTA/Imlzb3ZlciI6bnVsbCl7dmFyIGU7aWYodGhpcy5vcHRpb25zLmdyZWVkeSl7dmFyIGc9
dGhpcy5lbGVtZW50LnBhcmVudHMoIjpkYXRhKGRyb3BwYWJsZSk6ZXEoMCkiKTtpZihnLmxlbmd0
aCl7ZT0KLWQuZGF0YShnWzBdLCJkcm9wcGFibGUiKTtlLmdyZWVkeUNoaWxkPWM9PSJpc292ZXIi
PzE6MH19aWYoZSYmYz09Imlzb3ZlciIpe2UuaXNvdmVyPTA7ZS5pc291dD0xO2UuX291dC5jYWxs
KGUsYil9dGhpc1tjXT0xO3RoaXNbYz09Imlzb3V0Ij8iaXNvdmVyIjoiaXNvdXQiXT0wO3RoaXNb
Yz09Imlzb3ZlciI/Il9vdmVyIjoiX291dCJdLmNhbGwodGhpcyxiKTtpZihlJiZjPT0iaXNvdXQi
KXtlLmlzb3V0PTA7ZS5pc292ZXI9MTtlLl9vdmVyLmNhbGwoZSxiKX19fX0pfX19KShqUXVlcnkp
OwotOy8qCi0gKiBqUXVlcnkgVUkgUmVzaXphYmxlIDEuOC4xMAotICoKLSAqIENvcHlyaWdodCAy
MDExLCBBVVRIT1JTLnR4dCAoaHR0cDovL2pxdWVyeXVpLmNvbS9hYm91dCkKLSAqIER1YWwgbGlj
ZW5zZWQgdW5kZXIgdGhlIE1JVCBvciBHUEwgVmVyc2lvbiAyIGxpY2Vuc2VzLgotICogaHR0cDov
L2pxdWVyeS5vcmcvbGljZW5zZQotICoKLSAqIGh0dHA6Ly9kb2NzLmpxdWVyeS5jb20vVUkvUmVz
aXphYmxlcwotICoKLSAqIERlcGVuZHM6Ci0gKglqcXVlcnkudWkuY29yZS5qcwotICoJanF1ZXJ5
LnVpLm1vdXNlLmpzCi0gKglqcXVlcnkudWkud2lkZ2V0LmpzCi0gKi8KLShmdW5jdGlvbihlKXtl
LndpZGdldCgidWkucmVzaXphYmxlIixlLnVpLm1vdXNlLHt3aWRnZXRFdmVudFByZWZpeDoicmVz
aXplIixvcHRpb25zOnthbHNvUmVzaXplOmZhbHNlLGFuaW1hdGU6ZmFsc2UsYW5pbWF0ZUR1cmF0
aW9uOiJzbG93IixhbmltYXRlRWFzaW5nOiJzd2luZyIsYXNwZWN0UmF0aW86ZmFsc2UsYXV0b0hp
ZGU6ZmFsc2UsY29udGFpbm1lbnQ6ZmFsc2UsZ2hvc3Q6ZmFsc2UsZ3JpZDpmYWxzZSxoYW5kbGVz
OiJlLHMsc2UiLGhlbHBlcjpmYWxzZSxtYXhIZWlnaHQ6bnVsbCxtYXhXaWR0aDpudWxsLG1pbkhl
aWdodDoxMCxtaW5XaWR0aDoxMCx6SW5kZXg6MUUzfSxfY3JlYXRlOmZ1bmN0aW9uKCl7dmFyIGI9
dGhpcyxhPXRoaXMub3B0aW9uczt0aGlzLmVsZW1lbnQuYWRkQ2xhc3MoInVpLXJlc2l6YWJsZSIp
O2UuZXh0ZW5kKHRoaXMse19hc3BlY3RSYXRpbzohIWEuYXNwZWN0UmF0aW8sYXNwZWN0UmF0aW86
YS5hc3BlY3RSYXRpbyxvcmlnaW5hbEVsZW1lbnQ6dGhpcy5lbGVtZW50LAotX3Byb3BvcnRpb25h
bGx5UmVzaXplRWxlbWVudHM6W10sX2hlbHBlcjphLmhlbHBlcnx8YS5naG9zdHx8YS5hbmltYXRl
P2EuaGVscGVyfHwidWktcmVzaXphYmxlLWhlbHBlciI6bnVsbH0pO2lmKHRoaXMuZWxlbWVudFsw
XS5ub2RlTmFtZS5tYXRjaCgvY2FudmFzfHRleHRhcmVhfGlucHV0fHNlbGVjdHxidXR0b258aW1n
L2kpKXsvcmVsYXRpdmUvLnRlc3QodGhpcy5lbGVtZW50LmNzcygicG9zaXRpb24iKSkmJmUuYnJv
d3Nlci5vcGVyYSYmdGhpcy5lbGVtZW50LmNzcyh7cG9zaXRpb246InJlbGF0aXZlIix0b3A6ImF1
dG8iLGxlZnQ6ImF1dG8ifSk7dGhpcy5lbGVtZW50LndyYXAoZSgnPGRpdiBjbGFzcz0idWktd3Jh
cHBlciIgc3R5bGU9Im92ZXJmbG93OiBoaWRkZW47Ij48L2Rpdj4nKS5jc3Moe3Bvc2l0aW9uOnRo
aXMuZWxlbWVudC5jc3MoInBvc2l0aW9uIiksd2lkdGg6dGhpcy5lbGVtZW50Lm91dGVyV2lkdGgo
KSxoZWlnaHQ6dGhpcy5lbGVtZW50Lm91dGVySGVpZ2h0KCksCi10b3A6dGhpcy5lbGVtZW50LmNz
cygidG9wIiksbGVmdDp0aGlzLmVsZW1lbnQuY3NzKCJsZWZ0Iil9KSk7dGhpcy5lbGVtZW50PXRo
aXMuZWxlbWVudC5wYXJlbnQoKS5kYXRhKCJyZXNpemFibGUiLHRoaXMuZWxlbWVudC5kYXRhKCJy
ZXNpemFibGUiKSk7dGhpcy5lbGVtZW50SXNXcmFwcGVyPXRydWU7dGhpcy5lbGVtZW50LmNzcyh7
bWFyZ2luTGVmdDp0aGlzLm9yaWdpbmFsRWxlbWVudC5jc3MoIm1hcmdpbkxlZnQiKSxtYXJnaW5U
b3A6dGhpcy5vcmlnaW5hbEVsZW1lbnQuY3NzKCJtYXJnaW5Ub3AiKSxtYXJnaW5SaWdodDp0aGlz
Lm9yaWdpbmFsRWxlbWVudC5jc3MoIm1hcmdpblJpZ2h0IiksbWFyZ2luQm90dG9tOnRoaXMub3Jp
Z2luYWxFbGVtZW50LmNzcygibWFyZ2luQm90dG9tIil9KTt0aGlzLm9yaWdpbmFsRWxlbWVudC5j
c3Moe21hcmdpbkxlZnQ6MCxtYXJnaW5Ub3A6MCxtYXJnaW5SaWdodDowLG1hcmdpbkJvdHRvbTow
fSk7dGhpcy5vcmlnaW5hbFJlc2l6ZVN0eWxlPQotdGhpcy5vcmlnaW5hbEVsZW1lbnQuY3NzKCJy
ZXNpemUiKTt0aGlzLm9yaWdpbmFsRWxlbWVudC5jc3MoInJlc2l6ZSIsIm5vbmUiKTt0aGlzLl9w
cm9wb3J0aW9uYWxseVJlc2l6ZUVsZW1lbnRzLnB1c2godGhpcy5vcmlnaW5hbEVsZW1lbnQuY3Nz
KHtwb3NpdGlvbjoic3RhdGljIix6b29tOjEsZGlzcGxheToiYmxvY2sifSkpO3RoaXMub3JpZ2lu
YWxFbGVtZW50LmNzcyh7bWFyZ2luOnRoaXMub3JpZ2luYWxFbGVtZW50LmNzcygibWFyZ2luIil9
KTt0aGlzLl9wcm9wb3J0aW9uYWxseVJlc2l6ZSgpfXRoaXMuaGFuZGxlcz1hLmhhbmRsZXN8fCgh
ZSgiLnVpLXJlc2l6YWJsZS1oYW5kbGUiLHRoaXMuZWxlbWVudCkubGVuZ3RoPyJlLHMsc2UiOntu
OiIudWktcmVzaXphYmxlLW4iLGU6Ii51aS1yZXNpemFibGUtZSIsczoiLnVpLXJlc2l6YWJsZS1z
Iix3OiIudWktcmVzaXphYmxlLXciLHNlOiIudWktcmVzaXphYmxlLXNlIixzdzoiLnVpLXJlc2l6
YWJsZS1zdyIsbmU6Ii51aS1yZXNpemFibGUtbmUiLAotbnc6Ii51aS1yZXNpemFibGUtbncifSk7
aWYodGhpcy5oYW5kbGVzLmNvbnN0cnVjdG9yPT1TdHJpbmcpe2lmKHRoaXMuaGFuZGxlcz09ImFs
bCIpdGhpcy5oYW5kbGVzPSJuLGUscyx3LHNlLHN3LG5lLG53Ijt2YXIgYz10aGlzLmhhbmRsZXMu
c3BsaXQoIiwiKTt0aGlzLmhhbmRsZXM9e307Zm9yKHZhciBkPTA7ZDxjLmxlbmd0aDtkKyspe3Zh
ciBmPWUudHJpbShjW2RdKSxnPWUoJzxkaXYgY2xhc3M9InVpLXJlc2l6YWJsZS1oYW5kbGUgJyso
InVpLXJlc2l6YWJsZS0iK2YpKyciPjwvZGl2PicpOy9zd3xzZXxuZXxudy8udGVzdChmKSYmZy5j
c3Moe3pJbmRleDorK2EuekluZGV4fSk7InNlIj09ZiYmZy5hZGRDbGFzcygidWktaWNvbiB1aS1p
Y29uLWdyaXBzbWFsbC1kaWFnb25hbC1zZSIpO3RoaXMuaGFuZGxlc1tmXT0iLnVpLXJlc2l6YWJs
ZS0iK2Y7dGhpcy5lbGVtZW50LmFwcGVuZChnKX19dGhpcy5fcmVuZGVyQXhpcz1mdW5jdGlvbiho
KXtoPWh8fHRoaXMuZWxlbWVudDtmb3IodmFyIGkgaW4gdGhpcy5oYW5kbGVzKXtpZih0aGlzLmhh
bmRsZXNbaV0uY29uc3RydWN0b3I9PQotU3RyaW5nKXRoaXMuaGFuZGxlc1tpXT1lKHRoaXMuaGFu
ZGxlc1tpXSx0aGlzLmVsZW1lbnQpLnNob3coKTtpZih0aGlzLmVsZW1lbnRJc1dyYXBwZXImJnRo
aXMub3JpZ2luYWxFbGVtZW50WzBdLm5vZGVOYW1lLm1hdGNoKC90ZXh0YXJlYXxpbnB1dHxzZWxl
Y3R8YnV0dG9uL2kpKXt2YXIgaj1lKHRoaXMuaGFuZGxlc1tpXSx0aGlzLmVsZW1lbnQpLGs9MDtr
PS9zd3xuZXxud3xzZXxufHMvLnRlc3QoaSk/ai5vdXRlckhlaWdodCgpOmoub3V0ZXJXaWR0aCgp
O2o9WyJwYWRkaW5nIiwvbmV8bnd8bi8udGVzdChpKT8iVG9wIjovc2V8c3d8cy8udGVzdChpKT8i
Qm90dG9tIjovXmUkLy50ZXN0KGkpPyJSaWdodCI6IkxlZnQiXS5qb2luKCIiKTtoLmNzcyhqLGsp
O3RoaXMuX3Byb3BvcnRpb25hbGx5UmVzaXplKCl9ZSh0aGlzLmhhbmRsZXNbaV0pfX07dGhpcy5f
cmVuZGVyQXhpcyh0aGlzLmVsZW1lbnQpO3RoaXMuX2hhbmRsZXM9ZSgiLnVpLXJlc2l6YWJsZS1o
YW5kbGUiLHRoaXMuZWxlbWVudCkuZGlzYWJsZVNlbGVjdGlvbigpOwotdGhpcy5faGFuZGxlcy5t
b3VzZW92ZXIoZnVuY3Rpb24oKXtpZighYi5yZXNpemluZyl7aWYodGhpcy5jbGFzc05hbWUpdmFy
IGg9dGhpcy5jbGFzc05hbWUubWF0Y2goL3VpLXJlc2l6YWJsZS0oc2V8c3d8bmV8bnd8bnxlfHN8
dykvaSk7Yi5heGlzPWgmJmhbMV0/aFsxXToic2UifX0pO2lmKGEuYXV0b0hpZGUpe3RoaXMuX2hh
bmRsZXMuaGlkZSgpO2UodGhpcy5lbGVtZW50KS5hZGRDbGFzcygidWktcmVzaXphYmxlLWF1dG9o
aWRlIikuaG92ZXIoZnVuY3Rpb24oKXtlKHRoaXMpLnJlbW92ZUNsYXNzKCJ1aS1yZXNpemFibGUt
YXV0b2hpZGUiKTtiLl9oYW5kbGVzLnNob3coKX0sZnVuY3Rpb24oKXtpZighYi5yZXNpemluZyl7
ZSh0aGlzKS5hZGRDbGFzcygidWktcmVzaXphYmxlLWF1dG9oaWRlIik7Yi5faGFuZGxlcy5oaWRl
KCl9fSl9dGhpcy5fbW91c2VJbml0KCl9LGRlc3Ryb3k6ZnVuY3Rpb24oKXt0aGlzLl9tb3VzZURl
c3Ryb3koKTt2YXIgYj1mdW5jdGlvbihjKXtlKGMpLnJlbW92ZUNsYXNzKCJ1aS1yZXNpemFibGUg
dWktcmVzaXphYmxlLWRpc2FibGVkIHVpLXJlc2l6YWJsZS1yZXNpemluZyIpLnJlbW92ZURhdGEo
InJlc2l6YWJsZSIpLnVuYmluZCgiLnJlc2l6YWJsZSIpLmZpbmQoIi51aS1yZXNpemFibGUtaGFu
ZGxlIikucmVtb3ZlKCl9OwotaWYodGhpcy5lbGVtZW50SXNXcmFwcGVyKXtiKHRoaXMuZWxlbWVu
dCk7dmFyIGE9dGhpcy5lbGVtZW50O2EuYWZ0ZXIodGhpcy5vcmlnaW5hbEVsZW1lbnQuY3NzKHtw
b3NpdGlvbjphLmNzcygicG9zaXRpb24iKSx3aWR0aDphLm91dGVyV2lkdGgoKSxoZWlnaHQ6YS5v
dXRlckhlaWdodCgpLHRvcDphLmNzcygidG9wIiksbGVmdDphLmNzcygibGVmdCIpfSkpLnJlbW92
ZSgpfXRoaXMub3JpZ2luYWxFbGVtZW50LmNzcygicmVzaXplIix0aGlzLm9yaWdpbmFsUmVzaXpl
U3R5bGUpO2IodGhpcy5vcmlnaW5hbEVsZW1lbnQpO3JldHVybiB0aGlzfSxfbW91c2VDYXB0dXJl
OmZ1bmN0aW9uKGIpe3ZhciBhPWZhbHNlO2Zvcih2YXIgYyBpbiB0aGlzLmhhbmRsZXMpaWYoZSh0
aGlzLmhhbmRsZXNbY10pWzBdPT1iLnRhcmdldClhPXRydWU7cmV0dXJuIXRoaXMub3B0aW9ucy5k
aXNhYmxlZCYmYX0sX21vdXNlU3RhcnQ6ZnVuY3Rpb24oYil7dmFyIGE9dGhpcy5vcHRpb25zLGM9
dGhpcy5lbGVtZW50LnBvc2l0aW9uKCksCi1kPXRoaXMuZWxlbWVudDt0aGlzLnJlc2l6aW5nPXRy
dWU7dGhpcy5kb2N1bWVudFNjcm9sbD17dG9wOmUoZG9jdW1lbnQpLnNjcm9sbFRvcCgpLGxlZnQ6
ZShkb2N1bWVudCkuc2Nyb2xsTGVmdCgpfTtpZihkLmlzKCIudWktZHJhZ2dhYmxlIil8fC9hYnNv
bHV0ZS8udGVzdChkLmNzcygicG9zaXRpb24iKSkpZC5jc3Moe3Bvc2l0aW9uOiJhYnNvbHV0ZSIs
dG9wOmMudG9wLGxlZnQ6Yy5sZWZ0fSk7ZS5icm93c2VyLm9wZXJhJiYvcmVsYXRpdmUvLnRlc3Qo
ZC5jc3MoInBvc2l0aW9uIikpJiZkLmNzcyh7cG9zaXRpb246InJlbGF0aXZlIix0b3A6ImF1dG8i
LGxlZnQ6ImF1dG8ifSk7dGhpcy5fcmVuZGVyUHJveHkoKTtjPW0odGhpcy5oZWxwZXIuY3NzKCJs
ZWZ0IikpO3ZhciBmPW0odGhpcy5oZWxwZXIuY3NzKCJ0b3AiKSk7aWYoYS5jb250YWlubWVudCl7
Yys9ZShhLmNvbnRhaW5tZW50KS5zY3JvbGxMZWZ0KCl8fDA7Zis9ZShhLmNvbnRhaW5tZW50KS5z
Y3JvbGxUb3AoKXx8MH10aGlzLm9mZnNldD0KLXRoaXMuaGVscGVyLm9mZnNldCgpO3RoaXMucG9z
aXRpb249e2xlZnQ6Yyx0b3A6Zn07dGhpcy5zaXplPXRoaXMuX2hlbHBlcj97d2lkdGg6ZC5vdXRl
cldpZHRoKCksaGVpZ2h0OmQub3V0ZXJIZWlnaHQoKX06e3dpZHRoOmQud2lkdGgoKSxoZWlnaHQ6
ZC5oZWlnaHQoKX07dGhpcy5vcmlnaW5hbFNpemU9dGhpcy5faGVscGVyP3t3aWR0aDpkLm91dGVy
V2lkdGgoKSxoZWlnaHQ6ZC5vdXRlckhlaWdodCgpfTp7d2lkdGg6ZC53aWR0aCgpLGhlaWdodDpk
LmhlaWdodCgpfTt0aGlzLm9yaWdpbmFsUG9zaXRpb249e2xlZnQ6Yyx0b3A6Zn07dGhpcy5zaXpl
RGlmZj17d2lkdGg6ZC5vdXRlcldpZHRoKCktZC53aWR0aCgpLGhlaWdodDpkLm91dGVySGVpZ2h0
KCktZC5oZWlnaHQoKX07dGhpcy5vcmlnaW5hbE1vdXNlUG9zaXRpb249e2xlZnQ6Yi5wYWdlWCx0
b3A6Yi5wYWdlWX07dGhpcy5hc3BlY3RSYXRpbz10eXBlb2YgYS5hc3BlY3RSYXRpbz09Im51bWJl
ciI/YS5hc3BlY3RSYXRpbzoKLXRoaXMub3JpZ2luYWxTaXplLndpZHRoL3RoaXMub3JpZ2luYWxT
aXplLmhlaWdodHx8MTthPWUoIi51aS1yZXNpemFibGUtIit0aGlzLmF4aXMpLmNzcygiY3Vyc29y
Iik7ZSgiYm9keSIpLmNzcygiY3Vyc29yIixhPT0iYXV0byI/dGhpcy5heGlzKyItcmVzaXplIjph
KTtkLmFkZENsYXNzKCJ1aS1yZXNpemFibGUtcmVzaXppbmciKTt0aGlzLl9wcm9wYWdhdGUoInN0
YXJ0IixiKTtyZXR1cm4gdHJ1ZX0sX21vdXNlRHJhZzpmdW5jdGlvbihiKXt2YXIgYT10aGlzLmhl
bHBlcixjPXRoaXMub3JpZ2luYWxNb3VzZVBvc2l0aW9uLGQ9dGhpcy5fY2hhbmdlW3RoaXMuYXhp
c107aWYoIWQpcmV0dXJuIGZhbHNlO2M9ZC5hcHBseSh0aGlzLFtiLGIucGFnZVgtYy5sZWZ0fHww
LGIucGFnZVktYy50b3B8fDBdKTtpZih0aGlzLl9hc3BlY3RSYXRpb3x8Yi5zaGlmdEtleSljPXRo
aXMuX3VwZGF0ZVJhdGlvKGMsYik7Yz10aGlzLl9yZXNwZWN0U2l6ZShjLGIpO3RoaXMuX3Byb3Bh
Z2F0ZSgicmVzaXplIiwKLWIpO2EuY3NzKHt0b3A6dGhpcy5wb3NpdGlvbi50b3ArInB4IixsZWZ0
OnRoaXMucG9zaXRpb24ubGVmdCsicHgiLHdpZHRoOnRoaXMuc2l6ZS53aWR0aCsicHgiLGhlaWdo
dDp0aGlzLnNpemUuaGVpZ2h0KyJweCJ9KTshdGhpcy5faGVscGVyJiZ0aGlzLl9wcm9wb3J0aW9u
YWxseVJlc2l6ZUVsZW1lbnRzLmxlbmd0aCYmdGhpcy5fcHJvcG9ydGlvbmFsbHlSZXNpemUoKTt0
aGlzLl91cGRhdGVDYWNoZShjKTt0aGlzLl90cmlnZ2VyKCJyZXNpemUiLGIsdGhpcy51aSgpKTty
ZXR1cm4gZmFsc2V9LF9tb3VzZVN0b3A6ZnVuY3Rpb24oYil7dGhpcy5yZXNpemluZz1mYWxzZTt2
YXIgYT10aGlzLm9wdGlvbnMsYz10aGlzO2lmKHRoaXMuX2hlbHBlcil7dmFyIGQ9dGhpcy5fcHJv
cG9ydGlvbmFsbHlSZXNpemVFbGVtZW50cyxmPWQubGVuZ3RoJiYvdGV4dGFyZWEvaS50ZXN0KGRb
MF0ubm9kZU5hbWUpO2Q9ZiYmZS51aS5oYXNTY3JvbGwoZFswXSwibGVmdCIpPzA6Yy5zaXplRGlm
Zi5oZWlnaHQ7Ci1mPWY/MDpjLnNpemVEaWZmLndpZHRoO2Y9e3dpZHRoOmMuaGVscGVyLndpZHRo
KCktZixoZWlnaHQ6Yy5oZWxwZXIuaGVpZ2h0KCktZH07ZD1wYXJzZUludChjLmVsZW1lbnQuY3Nz
KCJsZWZ0IiksMTApKyhjLnBvc2l0aW9uLmxlZnQtYy5vcmlnaW5hbFBvc2l0aW9uLmxlZnQpfHxu
dWxsO3ZhciBnPXBhcnNlSW50KGMuZWxlbWVudC5jc3MoInRvcCIpLDEwKSsoYy5wb3NpdGlvbi50
b3AtYy5vcmlnaW5hbFBvc2l0aW9uLnRvcCl8fG51bGw7YS5hbmltYXRlfHx0aGlzLmVsZW1lbnQu
Y3NzKGUuZXh0ZW5kKGYse3RvcDpnLGxlZnQ6ZH0pKTtjLmhlbHBlci5oZWlnaHQoYy5zaXplLmhl
aWdodCk7Yy5oZWxwZXIud2lkdGgoYy5zaXplLndpZHRoKTt0aGlzLl9oZWxwZXImJiFhLmFuaW1h
dGUmJnRoaXMuX3Byb3BvcnRpb25hbGx5UmVzaXplKCl9ZSgiYm9keSIpLmNzcygiY3Vyc29yIiwi
YXV0byIpO3RoaXMuZWxlbWVudC5yZW1vdmVDbGFzcygidWktcmVzaXphYmxlLXJlc2l6aW5nIik7
Ci10aGlzLl9wcm9wYWdhdGUoInN0b3AiLGIpO3RoaXMuX2hlbHBlciYmdGhpcy5oZWxwZXIucmVt
b3ZlKCk7cmV0dXJuIGZhbHNlfSxfdXBkYXRlQ2FjaGU6ZnVuY3Rpb24oYil7dGhpcy5vZmZzZXQ9
dGhpcy5oZWxwZXIub2Zmc2V0KCk7aWYobChiLmxlZnQpKXRoaXMucG9zaXRpb24ubGVmdD1iLmxl
ZnQ7aWYobChiLnRvcCkpdGhpcy5wb3NpdGlvbi50b3A9Yi50b3A7aWYobChiLmhlaWdodCkpdGhp
cy5zaXplLmhlaWdodD1iLmhlaWdodDtpZihsKGIud2lkdGgpKXRoaXMuc2l6ZS53aWR0aD1iLndp
ZHRofSxfdXBkYXRlUmF0aW86ZnVuY3Rpb24oYil7dmFyIGE9dGhpcy5wb3NpdGlvbixjPXRoaXMu
c2l6ZSxkPXRoaXMuYXhpcztpZihiLmhlaWdodCliLndpZHRoPWMuaGVpZ2h0KnRoaXMuYXNwZWN0
UmF0aW87ZWxzZSBpZihiLndpZHRoKWIuaGVpZ2h0PWMud2lkdGgvdGhpcy5hc3BlY3RSYXRpbztp
ZihkPT0ic3ciKXtiLmxlZnQ9YS5sZWZ0KyhjLndpZHRoLWIud2lkdGgpO2IudG9wPQotbnVsbH1p
ZihkPT0ibnciKXtiLnRvcD1hLnRvcCsoYy5oZWlnaHQtYi5oZWlnaHQpO2IubGVmdD1hLmxlZnQr
KGMud2lkdGgtYi53aWR0aCl9cmV0dXJuIGJ9LF9yZXNwZWN0U2l6ZTpmdW5jdGlvbihiKXt2YXIg
YT10aGlzLm9wdGlvbnMsYz10aGlzLmF4aXMsZD1sKGIud2lkdGgpJiZhLm1heFdpZHRoJiZhLm1h
eFdpZHRoPGIud2lkdGgsZj1sKGIuaGVpZ2h0KSYmYS5tYXhIZWlnaHQmJmEubWF4SGVpZ2h0PGIu
aGVpZ2h0LGc9bChiLndpZHRoKSYmYS5taW5XaWR0aCYmYS5taW5XaWR0aD5iLndpZHRoLGg9bChi
LmhlaWdodCkmJmEubWluSGVpZ2h0JiZhLm1pbkhlaWdodD5iLmhlaWdodDtpZihnKWIud2lkdGg9
YS5taW5XaWR0aDtpZihoKWIuaGVpZ2h0PWEubWluSGVpZ2h0O2lmKGQpYi53aWR0aD1hLm1heFdp
ZHRoO2lmKGYpYi5oZWlnaHQ9YS5tYXhIZWlnaHQ7dmFyIGk9dGhpcy5vcmlnaW5hbFBvc2l0aW9u
LmxlZnQrdGhpcy5vcmlnaW5hbFNpemUud2lkdGgsaj10aGlzLnBvc2l0aW9uLnRvcCsKLXRoaXMu
c2l6ZS5oZWlnaHQsaz0vc3d8bnd8dy8udGVzdChjKTtjPS9ud3xuZXxuLy50ZXN0KGMpO2lmKGcm
JmspYi5sZWZ0PWktYS5taW5XaWR0aDtpZihkJiZrKWIubGVmdD1pLWEubWF4V2lkdGg7aWYoaCYm
YyliLnRvcD1qLWEubWluSGVpZ2h0O2lmKGYmJmMpYi50b3A9ai1hLm1heEhlaWdodDtpZigoYT0h
Yi53aWR0aCYmIWIuaGVpZ2h0KSYmIWIubGVmdCYmYi50b3ApYi50b3A9bnVsbDtlbHNlIGlmKGEm
JiFiLnRvcCYmYi5sZWZ0KWIubGVmdD1udWxsO3JldHVybiBifSxfcHJvcG9ydGlvbmFsbHlSZXNp
emU6ZnVuY3Rpb24oKXtpZih0aGlzLl9wcm9wb3J0aW9uYWxseVJlc2l6ZUVsZW1lbnRzLmxlbmd0
aClmb3IodmFyIGI9dGhpcy5oZWxwZXJ8fHRoaXMuZWxlbWVudCxhPTA7YTx0aGlzLl9wcm9wb3J0
aW9uYWxseVJlc2l6ZUVsZW1lbnRzLmxlbmd0aDthKyspe3ZhciBjPXRoaXMuX3Byb3BvcnRpb25h
bGx5UmVzaXplRWxlbWVudHNbYV07aWYoIXRoaXMuYm9yZGVyRGlmKXt2YXIgZD0KLVtjLmNzcygi
Ym9yZGVyVG9wV2lkdGgiKSxjLmNzcygiYm9yZGVyUmlnaHRXaWR0aCIpLGMuY3NzKCJib3JkZXJC
b3R0b21XaWR0aCIpLGMuY3NzKCJib3JkZXJMZWZ0V2lkdGgiKV0sZj1bYy5jc3MoInBhZGRpbmdU
b3AiKSxjLmNzcygicGFkZGluZ1JpZ2h0IiksYy5jc3MoInBhZGRpbmdCb3R0b20iKSxjLmNzcygi
cGFkZGluZ0xlZnQiKV07dGhpcy5ib3JkZXJEaWY9ZS5tYXAoZCxmdW5jdGlvbihnLGgpe2c9cGFy
c2VJbnQoZywxMCl8fDA7aD1wYXJzZUludChmW2hdLDEwKXx8MDtyZXR1cm4gZytofSl9ZS5icm93
c2VyLm1zaWUmJihlKGIpLmlzKCI6aGlkZGVuIil8fGUoYikucGFyZW50cygiOmhpZGRlbiIpLmxl
bmd0aCl8fGMuY3NzKHtoZWlnaHQ6Yi5oZWlnaHQoKS10aGlzLmJvcmRlckRpZlswXS10aGlzLmJv
cmRlckRpZlsyXXx8MCx3aWR0aDpiLndpZHRoKCktdGhpcy5ib3JkZXJEaWZbMV0tdGhpcy5ib3Jk
ZXJEaWZbM118fDB9KX19LF9yZW5kZXJQcm94eTpmdW5jdGlvbigpe3ZhciBiPQotdGhpcy5vcHRp
b25zO3RoaXMuZWxlbWVudE9mZnNldD10aGlzLmVsZW1lbnQub2Zmc2V0KCk7aWYodGhpcy5faGVs
cGVyKXt0aGlzLmhlbHBlcj10aGlzLmhlbHBlcnx8ZSgnPGRpdiBzdHlsZT0ib3ZlcmZsb3c6aGlk
ZGVuOyI+PC9kaXY+Jyk7dmFyIGE9ZS5icm93c2VyLm1zaWUmJmUuYnJvd3Nlci52ZXJzaW9uPDcs
Yz1hPzE6MDthPWE/MjotMTt0aGlzLmhlbHBlci5hZGRDbGFzcyh0aGlzLl9oZWxwZXIpLmNzcyh7
d2lkdGg6dGhpcy5lbGVtZW50Lm91dGVyV2lkdGgoKSthLGhlaWdodDp0aGlzLmVsZW1lbnQub3V0
ZXJIZWlnaHQoKSthLHBvc2l0aW9uOiJhYnNvbHV0ZSIsbGVmdDp0aGlzLmVsZW1lbnRPZmZzZXQu
bGVmdC1jKyJweCIsdG9wOnRoaXMuZWxlbWVudE9mZnNldC50b3AtYysicHgiLHpJbmRleDorK2Iu
ekluZGV4fSk7dGhpcy5oZWxwZXIuYXBwZW5kVG8oImJvZHkiKS5kaXNhYmxlU2VsZWN0aW9uKCl9
ZWxzZSB0aGlzLmhlbHBlcj10aGlzLmVsZW1lbnR9LF9jaGFuZ2U6e2U6ZnVuY3Rpb24oYiwKLWEp
e3JldHVybnt3aWR0aDp0aGlzLm9yaWdpbmFsU2l6ZS53aWR0aCthfX0sdzpmdW5jdGlvbihiLGEp
e3JldHVybntsZWZ0OnRoaXMub3JpZ2luYWxQb3NpdGlvbi5sZWZ0K2Esd2lkdGg6dGhpcy5vcmln
aW5hbFNpemUud2lkdGgtYX19LG46ZnVuY3Rpb24oYixhLGMpe3JldHVybnt0b3A6dGhpcy5vcmln
aW5hbFBvc2l0aW9uLnRvcCtjLGhlaWdodDp0aGlzLm9yaWdpbmFsU2l6ZS5oZWlnaHQtY319LHM6
ZnVuY3Rpb24oYixhLGMpe3JldHVybntoZWlnaHQ6dGhpcy5vcmlnaW5hbFNpemUuaGVpZ2h0K2N9
fSxzZTpmdW5jdGlvbihiLGEsYyl7cmV0dXJuIGUuZXh0ZW5kKHRoaXMuX2NoYW5nZS5zLmFwcGx5
KHRoaXMsYXJndW1lbnRzKSx0aGlzLl9jaGFuZ2UuZS5hcHBseSh0aGlzLFtiLGEsY10pKX0sc3c6
ZnVuY3Rpb24oYixhLGMpe3JldHVybiBlLmV4dGVuZCh0aGlzLl9jaGFuZ2Uucy5hcHBseSh0aGlz
LGFyZ3VtZW50cyksdGhpcy5fY2hhbmdlLncuYXBwbHkodGhpcyxbYixhLAotY10pKX0sbmU6ZnVu
Y3Rpb24oYixhLGMpe3JldHVybiBlLmV4dGVuZCh0aGlzLl9jaGFuZ2Uubi5hcHBseSh0aGlzLGFy
Z3VtZW50cyksdGhpcy5fY2hhbmdlLmUuYXBwbHkodGhpcyxbYixhLGNdKSl9LG53OmZ1bmN0aW9u
KGIsYSxjKXtyZXR1cm4gZS5leHRlbmQodGhpcy5fY2hhbmdlLm4uYXBwbHkodGhpcyxhcmd1bWVu
dHMpLHRoaXMuX2NoYW5nZS53LmFwcGx5KHRoaXMsW2IsYSxjXSkpfX0sX3Byb3BhZ2F0ZTpmdW5j
dGlvbihiLGEpe2UudWkucGx1Z2luLmNhbGwodGhpcyxiLFthLHRoaXMudWkoKV0pO2IhPSJyZXNp
emUiJiZ0aGlzLl90cmlnZ2VyKGIsYSx0aGlzLnVpKCkpfSxwbHVnaW5zOnt9LHVpOmZ1bmN0aW9u
KCl7cmV0dXJue29yaWdpbmFsRWxlbWVudDp0aGlzLm9yaWdpbmFsRWxlbWVudCxlbGVtZW50OnRo
aXMuZWxlbWVudCxoZWxwZXI6dGhpcy5oZWxwZXIscG9zaXRpb246dGhpcy5wb3NpdGlvbixzaXpl
OnRoaXMuc2l6ZSxvcmlnaW5hbFNpemU6dGhpcy5vcmlnaW5hbFNpemUsCi1vcmlnaW5hbFBvc2l0
aW9uOnRoaXMub3JpZ2luYWxQb3NpdGlvbn19fSk7ZS5leHRlbmQoZS51aS5yZXNpemFibGUse3Zl
cnNpb246IjEuOC4xMCJ9KTtlLnVpLnBsdWdpbi5hZGQoInJlc2l6YWJsZSIsImFsc29SZXNpemUi
LHtzdGFydDpmdW5jdGlvbigpe3ZhciBiPWUodGhpcykuZGF0YSgicmVzaXphYmxlIikub3B0aW9u
cyxhPWZ1bmN0aW9uKGMpe2UoYykuZWFjaChmdW5jdGlvbigpe3ZhciBkPWUodGhpcyk7ZC5kYXRh
KCJyZXNpemFibGUtYWxzb3Jlc2l6ZSIse3dpZHRoOnBhcnNlSW50KGQud2lkdGgoKSwxMCksaGVp
Z2h0OnBhcnNlSW50KGQuaGVpZ2h0KCksMTApLGxlZnQ6cGFyc2VJbnQoZC5jc3MoImxlZnQiKSwx
MCksdG9wOnBhcnNlSW50KGQuY3NzKCJ0b3AiKSwxMCkscG9zaXRpb246ZC5jc3MoInBvc2l0aW9u
Iil9KX0pfTtpZih0eXBlb2YgYi5hbHNvUmVzaXplPT0ib2JqZWN0IiYmIWIuYWxzb1Jlc2l6ZS5w
YXJlbnROb2RlKWlmKGIuYWxzb1Jlc2l6ZS5sZW5ndGgpe2IuYWxzb1Jlc2l6ZT0KLWIuYWxzb1Jl
c2l6ZVswXTthKGIuYWxzb1Jlc2l6ZSl9ZWxzZSBlLmVhY2goYi5hbHNvUmVzaXplLGZ1bmN0aW9u
KGMpe2EoYyl9KTtlbHNlIGEoYi5hbHNvUmVzaXplKX0scmVzaXplOmZ1bmN0aW9uKGIsYSl7dmFy
IGM9ZSh0aGlzKS5kYXRhKCJyZXNpemFibGUiKTtiPWMub3B0aW9uczt2YXIgZD1jLm9yaWdpbmFs
U2l6ZSxmPWMub3JpZ2luYWxQb3NpdGlvbixnPXtoZWlnaHQ6Yy5zaXplLmhlaWdodC1kLmhlaWdo
dHx8MCx3aWR0aDpjLnNpemUud2lkdGgtZC53aWR0aHx8MCx0b3A6Yy5wb3NpdGlvbi50b3AtZi50
b3B8fDAsbGVmdDpjLnBvc2l0aW9uLmxlZnQtZi5sZWZ0fHwwfSxoPWZ1bmN0aW9uKGksail7ZShp
KS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGs9ZSh0aGlzKSxxPWUodGhpcykuZGF0YSgicmVzaXphYmxl
LWFsc29yZXNpemUiKSxwPXt9LHI9aiYmai5sZW5ndGg/ajprLnBhcmVudHMoYS5vcmlnaW5hbEVs
ZW1lbnRbMF0pLmxlbmd0aD9bIndpZHRoIiwiaGVpZ2h0Il06WyJ3aWR0aCIsCi0iaGVpZ2h0Iiwi
dG9wIiwibGVmdCJdO2UuZWFjaChyLGZ1bmN0aW9uKG4sbyl7aWYoKG49KHFbb118fDApKyhnW29d
fHwwKSkmJm4+PTApcFtvXT1ufHxudWxsfSk7aWYoZS5icm93c2VyLm9wZXJhJiYvcmVsYXRpdmUv
LnRlc3Qoay5jc3MoInBvc2l0aW9uIikpKXtjLl9yZXZlcnRUb1JlbGF0aXZlUG9zaXRpb249dHJ1
ZTtrLmNzcyh7cG9zaXRpb246ImFic29sdXRlIix0b3A6ImF1dG8iLGxlZnQ6ImF1dG8ifSl9ay5j
c3MocCl9KX07dHlwZW9mIGIuYWxzb1Jlc2l6ZT09Im9iamVjdCImJiFiLmFsc29SZXNpemUubm9k
ZVR5cGU/ZS5lYWNoKGIuYWxzb1Jlc2l6ZSxmdW5jdGlvbihpLGope2goaSxqKX0pOmgoYi5hbHNv
UmVzaXplKX0sc3RvcDpmdW5jdGlvbigpe3ZhciBiPWUodGhpcykuZGF0YSgicmVzaXphYmxlIiks
YT1iLm9wdGlvbnMsYz1mdW5jdGlvbihkKXtlKGQpLmVhY2goZnVuY3Rpb24oKXt2YXIgZj1lKHRo
aXMpO2YuY3NzKHtwb3NpdGlvbjpmLmRhdGEoInJlc2l6YWJsZS1hbHNvcmVzaXplIikucG9zaXRp
b259KX0pfTsKLWlmKGIuX3JldmVydFRvUmVsYXRpdmVQb3NpdGlvbil7Yi5fcmV2ZXJ0VG9SZWxh
dGl2ZVBvc2l0aW9uPWZhbHNlO3R5cGVvZiBhLmFsc29SZXNpemU9PSJvYmplY3QiJiYhYS5hbHNv
UmVzaXplLm5vZGVUeXBlP2UuZWFjaChhLmFsc29SZXNpemUsZnVuY3Rpb24oZCl7YyhkKX0pOmMo
YS5hbHNvUmVzaXplKX1lKHRoaXMpLnJlbW92ZURhdGEoInJlc2l6YWJsZS1hbHNvcmVzaXplIil9
fSk7ZS51aS5wbHVnaW4uYWRkKCJyZXNpemFibGUiLCJhbmltYXRlIix7c3RvcDpmdW5jdGlvbihi
KXt2YXIgYT1lKHRoaXMpLmRhdGEoInJlc2l6YWJsZSIpLGM9YS5vcHRpb25zLGQ9YS5fcHJvcG9y
dGlvbmFsbHlSZXNpemVFbGVtZW50cyxmPWQubGVuZ3RoJiYvdGV4dGFyZWEvaS50ZXN0KGRbMF0u
bm9kZU5hbWUpLGc9ZiYmZS51aS5oYXNTY3JvbGwoZFswXSwibGVmdCIpPzA6YS5zaXplRGlmZi5o
ZWlnaHQ7Zj17d2lkdGg6YS5zaXplLndpZHRoLShmPzA6YS5zaXplRGlmZi53aWR0aCksaGVpZ2h0
OmEuc2l6ZS5oZWlnaHQtCi1nfTtnPXBhcnNlSW50KGEuZWxlbWVudC5jc3MoImxlZnQiKSwxMCkr
KGEucG9zaXRpb24ubGVmdC1hLm9yaWdpbmFsUG9zaXRpb24ubGVmdCl8fG51bGw7dmFyIGg9cGFy
c2VJbnQoYS5lbGVtZW50LmNzcygidG9wIiksMTApKyhhLnBvc2l0aW9uLnRvcC1hLm9yaWdpbmFs
UG9zaXRpb24udG9wKXx8bnVsbDthLmVsZW1lbnQuYW5pbWF0ZShlLmV4dGVuZChmLGgmJmc/e3Rv
cDpoLGxlZnQ6Z306e30pLHtkdXJhdGlvbjpjLmFuaW1hdGVEdXJhdGlvbixlYXNpbmc6Yy5hbmlt
YXRlRWFzaW5nLHN0ZXA6ZnVuY3Rpb24oKXt2YXIgaT17d2lkdGg6cGFyc2VJbnQoYS5lbGVtZW50
LmNzcygid2lkdGgiKSwxMCksaGVpZ2h0OnBhcnNlSW50KGEuZWxlbWVudC5jc3MoImhlaWdodCIp
LDEwKSx0b3A6cGFyc2VJbnQoYS5lbGVtZW50LmNzcygidG9wIiksMTApLGxlZnQ6cGFyc2VJbnQo
YS5lbGVtZW50LmNzcygibGVmdCIpLDEwKX07ZCYmZC5sZW5ndGgmJmUoZFswXSkuY3NzKHt3aWR0
aDppLndpZHRoLAotaGVpZ2h0OmkuaGVpZ2h0fSk7YS5fdXBkYXRlQ2FjaGUoaSk7YS5fcHJvcGFn
YXRlKCJyZXNpemUiLGIpfX0pfX0pO2UudWkucGx1Z2luLmFkZCgicmVzaXphYmxlIiwiY29udGFp
bm1lbnQiLHtzdGFydDpmdW5jdGlvbigpe3ZhciBiPWUodGhpcykuZGF0YSgicmVzaXphYmxlIiks
YT1iLmVsZW1lbnQsYz1iLm9wdGlvbnMuY29udGFpbm1lbnQ7aWYoYT1jIGluc3RhbmNlb2YgZT9j
LmdldCgwKTovcGFyZW50Ly50ZXN0KGMpP2EucGFyZW50KCkuZ2V0KDApOmMpe2IuY29udGFpbmVy
RWxlbWVudD1lKGEpO2lmKC9kb2N1bWVudC8udGVzdChjKXx8Yz09ZG9jdW1lbnQpe2IuY29udGFp
bmVyT2Zmc2V0PXtsZWZ0OjAsdG9wOjB9O2IuY29udGFpbmVyUG9zaXRpb249e2xlZnQ6MCx0b3A6
MH07Yi5wYXJlbnREYXRhPXtlbGVtZW50OmUoZG9jdW1lbnQpLGxlZnQ6MCx0b3A6MCx3aWR0aDpl
KGRvY3VtZW50KS53aWR0aCgpLGhlaWdodDplKGRvY3VtZW50KS5oZWlnaHQoKXx8ZG9jdW1lbnQu
Ym9keS5wYXJlbnROb2RlLnNjcm9sbEhlaWdodH19ZWxzZXt2YXIgZD0KLWUoYSksZj1bXTtlKFsi
VG9wIiwiUmlnaHQiLCJMZWZ0IiwiQm90dG9tIl0pLmVhY2goZnVuY3Rpb24oaSxqKXtmW2ldPW0o
ZC5jc3MoInBhZGRpbmciK2opKX0pO2IuY29udGFpbmVyT2Zmc2V0PWQub2Zmc2V0KCk7Yi5jb250
YWluZXJQb3NpdGlvbj1kLnBvc2l0aW9uKCk7Yi5jb250YWluZXJTaXplPXtoZWlnaHQ6ZC5pbm5l
ckhlaWdodCgpLWZbM10sd2lkdGg6ZC5pbm5lcldpZHRoKCktZlsxXX07Yz1iLmNvbnRhaW5lck9m
ZnNldDt2YXIgZz1iLmNvbnRhaW5lclNpemUuaGVpZ2h0LGg9Yi5jb250YWluZXJTaXplLndpZHRo
O2g9ZS51aS5oYXNTY3JvbGwoYSwibGVmdCIpP2Euc2Nyb2xsV2lkdGg6aDtnPWUudWkuaGFzU2Ny
b2xsKGEpP2Euc2Nyb2xsSGVpZ2h0Omc7Yi5wYXJlbnREYXRhPXtlbGVtZW50OmEsbGVmdDpjLmxl
ZnQsdG9wOmMudG9wLHdpZHRoOmgsaGVpZ2h0Omd9fX19LHJlc2l6ZTpmdW5jdGlvbihiKXt2YXIg
YT1lKHRoaXMpLmRhdGEoInJlc2l6YWJsZSIpLGM9YS5vcHRpb25zLAotZD1hLmNvbnRhaW5lck9m
ZnNldCxmPWEucG9zaXRpb247Yj1hLl9hc3BlY3RSYXRpb3x8Yi5zaGlmdEtleTt2YXIgZz17dG9w
OjAsbGVmdDowfSxoPWEuY29udGFpbmVyRWxlbWVudDtpZihoWzBdIT1kb2N1bWVudCYmL3N0YXRp
Yy8udGVzdChoLmNzcygicG9zaXRpb24iKSkpZz1kO2lmKGYubGVmdDwoYS5faGVscGVyP2QubGVm
dDowKSl7YS5zaXplLndpZHRoKz1hLl9oZWxwZXI/YS5wb3NpdGlvbi5sZWZ0LWQubGVmdDphLnBv
c2l0aW9uLmxlZnQtZy5sZWZ0O2lmKGIpYS5zaXplLmhlaWdodD1hLnNpemUud2lkdGgvYy5hc3Bl
Y3RSYXRpbzthLnBvc2l0aW9uLmxlZnQ9Yy5oZWxwZXI/ZC5sZWZ0OjB9aWYoZi50b3A8KGEuX2hl
bHBlcj9kLnRvcDowKSl7YS5zaXplLmhlaWdodCs9YS5faGVscGVyP2EucG9zaXRpb24udG9wLWQu
dG9wOmEucG9zaXRpb24udG9wO2lmKGIpYS5zaXplLndpZHRoPWEuc2l6ZS5oZWlnaHQqYy5hc3Bl
Y3RSYXRpbzthLnBvc2l0aW9uLnRvcD1hLl9oZWxwZXI/Ci1kLnRvcDowfWEub2Zmc2V0LmxlZnQ9
YS5wYXJlbnREYXRhLmxlZnQrYS5wb3NpdGlvbi5sZWZ0O2Eub2Zmc2V0LnRvcD1hLnBhcmVudERh
dGEudG9wK2EucG9zaXRpb24udG9wO2M9TWF0aC5hYnMoKGEuX2hlbHBlcj9hLm9mZnNldC5sZWZ0
LWcubGVmdDphLm9mZnNldC5sZWZ0LWcubGVmdCkrYS5zaXplRGlmZi53aWR0aCk7ZD1NYXRoLmFi
cygoYS5faGVscGVyP2Eub2Zmc2V0LnRvcC1nLnRvcDphLm9mZnNldC50b3AtZC50b3ApK2Euc2l6
ZURpZmYuaGVpZ2h0KTtmPWEuY29udGFpbmVyRWxlbWVudC5nZXQoMCk9PWEuZWxlbWVudC5wYXJl
bnQoKS5nZXQoMCk7Zz0vcmVsYXRpdmV8YWJzb2x1dGUvLnRlc3QoYS5jb250YWluZXJFbGVtZW50
LmNzcygicG9zaXRpb24iKSk7aWYoZiYmZyljLT1hLnBhcmVudERhdGEubGVmdDtpZihjK2Euc2l6
ZS53aWR0aD49YS5wYXJlbnREYXRhLndpZHRoKXthLnNpemUud2lkdGg9YS5wYXJlbnREYXRhLndp
ZHRoLWM7aWYoYilhLnNpemUuaGVpZ2h0PQotYS5zaXplLndpZHRoL2EuYXNwZWN0UmF0aW99aWYo
ZCthLnNpemUuaGVpZ2h0Pj1hLnBhcmVudERhdGEuaGVpZ2h0KXthLnNpemUuaGVpZ2h0PWEucGFy
ZW50RGF0YS5oZWlnaHQtZDtpZihiKWEuc2l6ZS53aWR0aD1hLnNpemUuaGVpZ2h0KmEuYXNwZWN0
UmF0aW99fSxzdG9wOmZ1bmN0aW9uKCl7dmFyIGI9ZSh0aGlzKS5kYXRhKCJyZXNpemFibGUiKSxh
PWIub3B0aW9ucyxjPWIuY29udGFpbmVyT2Zmc2V0LGQ9Yi5jb250YWluZXJQb3NpdGlvbixmPWIu
Y29udGFpbmVyRWxlbWVudCxnPWUoYi5oZWxwZXIpLGg9Zy5vZmZzZXQoKSxpPWcub3V0ZXJXaWR0
aCgpLWIuc2l6ZURpZmYud2lkdGg7Zz1nLm91dGVySGVpZ2h0KCktYi5zaXplRGlmZi5oZWlnaHQ7
Yi5faGVscGVyJiYhYS5hbmltYXRlJiYvcmVsYXRpdmUvLnRlc3QoZi5jc3MoInBvc2l0aW9uIikp
JiZlKHRoaXMpLmNzcyh7bGVmdDpoLmxlZnQtZC5sZWZ0LWMubGVmdCx3aWR0aDppLGhlaWdodDpn
fSk7Yi5faGVscGVyJiYhYS5hbmltYXRlJiYKLS9zdGF0aWMvLnRlc3QoZi5jc3MoInBvc2l0aW9u
IikpJiZlKHRoaXMpLmNzcyh7bGVmdDpoLmxlZnQtZC5sZWZ0LWMubGVmdCx3aWR0aDppLGhlaWdo
dDpnfSl9fSk7ZS51aS5wbHVnaW4uYWRkKCJyZXNpemFibGUiLCJnaG9zdCIse3N0YXJ0OmZ1bmN0
aW9uKCl7dmFyIGI9ZSh0aGlzKS5kYXRhKCJyZXNpemFibGUiKSxhPWIub3B0aW9ucyxjPWIuc2l6
ZTtiLmdob3N0PWIub3JpZ2luYWxFbGVtZW50LmNsb25lKCk7Yi5naG9zdC5jc3Moe29wYWNpdHk6
MC4yNSxkaXNwbGF5OiJibG9jayIscG9zaXRpb246InJlbGF0aXZlIixoZWlnaHQ6Yy5oZWlnaHQs
d2lkdGg6Yy53aWR0aCxtYXJnaW46MCxsZWZ0OjAsdG9wOjB9KS5hZGRDbGFzcygidWktcmVzaXph
YmxlLWdob3N0IikuYWRkQ2xhc3ModHlwZW9mIGEuZ2hvc3Q9PSJzdHJpbmciP2EuZ2hvc3Q6IiIp
O2IuZ2hvc3QuYXBwZW5kVG8oYi5oZWxwZXIpfSxyZXNpemU6ZnVuY3Rpb24oKXt2YXIgYj1lKHRo
aXMpLmRhdGEoInJlc2l6YWJsZSIpOwotYi5naG9zdCYmYi5naG9zdC5jc3Moe3Bvc2l0aW9uOiJy
ZWxhdGl2ZSIsaGVpZ2h0OmIuc2l6ZS5oZWlnaHQsd2lkdGg6Yi5zaXplLndpZHRofSl9LHN0b3A6
ZnVuY3Rpb24oKXt2YXIgYj1lKHRoaXMpLmRhdGEoInJlc2l6YWJsZSIpO2IuZ2hvc3QmJmIuaGVs
cGVyJiZiLmhlbHBlci5nZXQoMCkucmVtb3ZlQ2hpbGQoYi5naG9zdC5nZXQoMCkpfX0pO2UudWku
cGx1Z2luLmFkZCgicmVzaXphYmxlIiwiZ3JpZCIse3Jlc2l6ZTpmdW5jdGlvbigpe3ZhciBiPWUo
dGhpcykuZGF0YSgicmVzaXphYmxlIiksYT1iLm9wdGlvbnMsYz1iLnNpemUsZD1iLm9yaWdpbmFs
U2l6ZSxmPWIub3JpZ2luYWxQb3NpdGlvbixnPWIuYXhpczthLmdyaWQ9dHlwZW9mIGEuZ3JpZD09
Im51bWJlciI/W2EuZ3JpZCxhLmdyaWRdOmEuZ3JpZDt2YXIgaD1NYXRoLnJvdW5kKChjLndpZHRo
LWQud2lkdGgpLyhhLmdyaWRbMF18fDEpKSooYS5ncmlkWzBdfHwxKTthPU1hdGgucm91bmQoKGMu
aGVpZ2h0LWQuaGVpZ2h0KS8KLShhLmdyaWRbMV18fDEpKSooYS5ncmlkWzFdfHwxKTtpZigvXihz
ZXxzfGUpJC8udGVzdChnKSl7Yi5zaXplLndpZHRoPWQud2lkdGgraDtiLnNpemUuaGVpZ2h0PWQu
aGVpZ2h0K2F9ZWxzZSBpZigvXihuZSkkLy50ZXN0KGcpKXtiLnNpemUud2lkdGg9ZC53aWR0aCto
O2Iuc2l6ZS5oZWlnaHQ9ZC5oZWlnaHQrYTtiLnBvc2l0aW9uLnRvcD1mLnRvcC1hfWVsc2V7aWYo
L14oc3cpJC8udGVzdChnKSl7Yi5zaXplLndpZHRoPWQud2lkdGgraDtiLnNpemUuaGVpZ2h0PWQu
aGVpZ2h0K2F9ZWxzZXtiLnNpemUud2lkdGg9ZC53aWR0aCtoO2Iuc2l6ZS5oZWlnaHQ9ZC5oZWln
aHQrYTtiLnBvc2l0aW9uLnRvcD1mLnRvcC1hfWIucG9zaXRpb24ubGVmdD1mLmxlZnQtaH19fSk7
dmFyIG09ZnVuY3Rpb24oYil7cmV0dXJuIHBhcnNlSW50KGIsMTApfHwwfSxsPWZ1bmN0aW9uKGIp
e3JldHVybiFpc05hTihwYXJzZUludChiLDEwKSl9fSkoalF1ZXJ5KTsKLTsvKgotICogalF1ZXJ5
IFVJIFNlbGVjdGFibGUgMS44LjEwCi0gKgotICogQ29weXJpZ2h0IDIwMTEsIEFVVEhPUlMudHh0
IChodHRwOi8vanF1ZXJ5dWkuY29tL2Fib3V0KQotICogRHVhbCBsaWNlbnNlZCB1bmRlciB0aGUg
TUlUIG9yIEdQTCBWZXJzaW9uIDIgbGljZW5zZXMuCi0gKiBodHRwOi8vanF1ZXJ5Lm9yZy9saWNl
bnNlCi0gKgotICogaHR0cDovL2RvY3MuanF1ZXJ5LmNvbS9VSS9TZWxlY3RhYmxlcwotICoKLSAq
IERlcGVuZHM6Ci0gKglqcXVlcnkudWkuY29yZS5qcwotICoJanF1ZXJ5LnVpLm1vdXNlLmpzCi0g
KglqcXVlcnkudWkud2lkZ2V0LmpzCi0gKi8KLShmdW5jdGlvbihlKXtlLndpZGdldCgidWkuc2Vs
ZWN0YWJsZSIsZS51aS5tb3VzZSx7b3B0aW9uczp7YXBwZW5kVG86ImJvZHkiLGF1dG9SZWZyZXNo
OnRydWUsZGlzdGFuY2U6MCxmaWx0ZXI6IioiLHRvbGVyYW5jZToidG91Y2gifSxfY3JlYXRlOmZ1
bmN0aW9uKCl7dmFyIGM9dGhpczt0aGlzLmVsZW1lbnQuYWRkQ2xhc3MoInVpLXNlbGVjdGFibGUi
KTt0aGlzLmRyYWdnZWQ9ZmFsc2U7dmFyIGY7dGhpcy5yZWZyZXNoPWZ1bmN0aW9uKCl7Zj1lKGMu
b3B0aW9ucy5maWx0ZXIsYy5lbGVtZW50WzBdKTtmLmVhY2goZnVuY3Rpb24oKXt2YXIgZD1lKHRo
aXMpLGI9ZC5vZmZzZXQoKTtlLmRhdGEodGhpcywic2VsZWN0YWJsZS1pdGVtIix7ZWxlbWVudDp0
aGlzLCRlbGVtZW50OmQsbGVmdDpiLmxlZnQsdG9wOmIudG9wLHJpZ2h0OmIubGVmdCtkLm91dGVy
V2lkdGgoKSxib3R0b206Yi50b3ArZC5vdXRlckhlaWdodCgpLHN0YXJ0c2VsZWN0ZWQ6ZmFsc2Us
c2VsZWN0ZWQ6ZC5oYXNDbGFzcygidWktc2VsZWN0ZWQiKSwKLXNlbGVjdGluZzpkLmhhc0NsYXNz
KCJ1aS1zZWxlY3RpbmciKSx1bnNlbGVjdGluZzpkLmhhc0NsYXNzKCJ1aS11bnNlbGVjdGluZyIp
fSl9KX07dGhpcy5yZWZyZXNoKCk7dGhpcy5zZWxlY3RlZXM9Zi5hZGRDbGFzcygidWktc2VsZWN0
ZWUiKTt0aGlzLl9tb3VzZUluaXQoKTt0aGlzLmhlbHBlcj1lKCI8ZGl2IGNsYXNzPSd1aS1zZWxl
Y3RhYmxlLWhlbHBlcic+PC9kaXY+Iil9LGRlc3Ryb3k6ZnVuY3Rpb24oKXt0aGlzLnNlbGVjdGVl
cy5yZW1vdmVDbGFzcygidWktc2VsZWN0ZWUiKS5yZW1vdmVEYXRhKCJzZWxlY3RhYmxlLWl0ZW0i
KTt0aGlzLmVsZW1lbnQucmVtb3ZlQ2xhc3MoInVpLXNlbGVjdGFibGUgdWktc2VsZWN0YWJsZS1k
aXNhYmxlZCIpLnJlbW92ZURhdGEoInNlbGVjdGFibGUiKS51bmJpbmQoIi5zZWxlY3RhYmxlIik7
dGhpcy5fbW91c2VEZXN0cm95KCk7cmV0dXJuIHRoaXN9LF9tb3VzZVN0YXJ0OmZ1bmN0aW9uKGMp
e3ZhciBmPXRoaXM7dGhpcy5vcG9zPVtjLnBhZ2VYLAotYy5wYWdlWV07aWYoIXRoaXMub3B0aW9u
cy5kaXNhYmxlZCl7dmFyIGQ9dGhpcy5vcHRpb25zO3RoaXMuc2VsZWN0ZWVzPWUoZC5maWx0ZXIs
dGhpcy5lbGVtZW50WzBdKTt0aGlzLl90cmlnZ2VyKCJzdGFydCIsYyk7ZShkLmFwcGVuZFRvKS5h
cHBlbmQodGhpcy5oZWxwZXIpO3RoaXMuaGVscGVyLmNzcyh7bGVmdDpjLmNsaWVudFgsdG9wOmMu
Y2xpZW50WSx3aWR0aDowLGhlaWdodDowfSk7ZC5hdXRvUmVmcmVzaCYmdGhpcy5yZWZyZXNoKCk7
dGhpcy5zZWxlY3RlZXMuZmlsdGVyKCIudWktc2VsZWN0ZWQiKS5lYWNoKGZ1bmN0aW9uKCl7dmFy
IGI9ZS5kYXRhKHRoaXMsInNlbGVjdGFibGUtaXRlbSIpO2Iuc3RhcnRzZWxlY3RlZD10cnVlO2lm
KCFjLm1ldGFLZXkpe2IuJGVsZW1lbnQucmVtb3ZlQ2xhc3MoInVpLXNlbGVjdGVkIik7Yi5zZWxl
Y3RlZD1mYWxzZTtiLiRlbGVtZW50LmFkZENsYXNzKCJ1aS11bnNlbGVjdGluZyIpO2IudW5zZWxl
Y3Rpbmc9dHJ1ZTtmLl90cmlnZ2VyKCJ1bnNlbGVjdGluZyIsCi1jLHt1bnNlbGVjdGluZzpiLmVs
ZW1lbnR9KX19KTtlKGMudGFyZ2V0KS5wYXJlbnRzKCkuYW5kU2VsZigpLmVhY2goZnVuY3Rpb24o
KXt2YXIgYj1lLmRhdGEodGhpcywic2VsZWN0YWJsZS1pdGVtIik7aWYoYil7dmFyIGc9IWMubWV0
YUtleXx8IWIuJGVsZW1lbnQuaGFzQ2xhc3MoInVpLXNlbGVjdGVkIik7Yi4kZWxlbWVudC5yZW1v
dmVDbGFzcyhnPyJ1aS11bnNlbGVjdGluZyI6InVpLXNlbGVjdGVkIikuYWRkQ2xhc3MoZz8idWkt
c2VsZWN0aW5nIjoidWktdW5zZWxlY3RpbmciKTtiLnVuc2VsZWN0aW5nPSFnO2Iuc2VsZWN0aW5n
PWc7KGIuc2VsZWN0ZWQ9Zyk/Zi5fdHJpZ2dlcigic2VsZWN0aW5nIixjLHtzZWxlY3Rpbmc6Yi5l
bGVtZW50fSk6Zi5fdHJpZ2dlcigidW5zZWxlY3RpbmciLGMse3Vuc2VsZWN0aW5nOmIuZWxlbWVu
dH0pO3JldHVybiBmYWxzZX19KX19LF9tb3VzZURyYWc6ZnVuY3Rpb24oYyl7dmFyIGY9dGhpczt0
aGlzLmRyYWdnZWQ9dHJ1ZTtpZighdGhpcy5vcHRpb25zLmRpc2FibGVkKXt2YXIgZD0KLXRoaXMu
b3B0aW9ucyxiPXRoaXMub3Bvc1swXSxnPXRoaXMub3Bvc1sxXSxoPWMucGFnZVgsaT1jLnBhZ2VZ
O2lmKGI+aCl7dmFyIGo9aDtoPWI7Yj1qfWlmKGc+aSl7aj1pO2k9ZztnPWp9dGhpcy5oZWxwZXIu
Y3NzKHtsZWZ0OmIsdG9wOmcsd2lkdGg6aC1iLGhlaWdodDppLWd9KTt0aGlzLnNlbGVjdGVlcy5l
YWNoKGZ1bmN0aW9uKCl7dmFyIGE9ZS5kYXRhKHRoaXMsInNlbGVjdGFibGUtaXRlbSIpO2lmKCEo
IWF8fGEuZWxlbWVudD09Zi5lbGVtZW50WzBdKSl7dmFyIGs9ZmFsc2U7aWYoZC50b2xlcmFuY2U9
PSJ0b3VjaCIpaz0hKGEubGVmdD5ofHxhLnJpZ2h0PGJ8fGEudG9wPml8fGEuYm90dG9tPGcpO2Vs
c2UgaWYoZC50b2xlcmFuY2U9PSJmaXQiKWs9YS5sZWZ0PmImJmEucmlnaHQ8aCYmYS50b3A+ZyYm
YS5ib3R0b208aTtpZihrKXtpZihhLnNlbGVjdGVkKXthLiRlbGVtZW50LnJlbW92ZUNsYXNzKCJ1
aS1zZWxlY3RlZCIpO2Euc2VsZWN0ZWQ9ZmFsc2V9aWYoYS51bnNlbGVjdGluZyl7YS4kZWxlbWVu
dC5yZW1vdmVDbGFzcygidWktdW5zZWxlY3RpbmciKTsKLWEudW5zZWxlY3Rpbmc9ZmFsc2V9aWYo
IWEuc2VsZWN0aW5nKXthLiRlbGVtZW50LmFkZENsYXNzKCJ1aS1zZWxlY3RpbmciKTthLnNlbGVj
dGluZz10cnVlO2YuX3RyaWdnZXIoInNlbGVjdGluZyIsYyx7c2VsZWN0aW5nOmEuZWxlbWVudH0p
fX1lbHNle2lmKGEuc2VsZWN0aW5nKWlmKGMubWV0YUtleSYmYS5zdGFydHNlbGVjdGVkKXthLiRl
bGVtZW50LnJlbW92ZUNsYXNzKCJ1aS1zZWxlY3RpbmciKTthLnNlbGVjdGluZz1mYWxzZTthLiRl
bGVtZW50LmFkZENsYXNzKCJ1aS1zZWxlY3RlZCIpO2Euc2VsZWN0ZWQ9dHJ1ZX1lbHNle2EuJGVs
ZW1lbnQucmVtb3ZlQ2xhc3MoInVpLXNlbGVjdGluZyIpO2Euc2VsZWN0aW5nPWZhbHNlO2lmKGEu
c3RhcnRzZWxlY3RlZCl7YS4kZWxlbWVudC5hZGRDbGFzcygidWktdW5zZWxlY3RpbmciKTthLnVu
c2VsZWN0aW5nPXRydWV9Zi5fdHJpZ2dlcigidW5zZWxlY3RpbmciLGMse3Vuc2VsZWN0aW5nOmEu
ZWxlbWVudH0pfWlmKGEuc2VsZWN0ZWQpaWYoIWMubWV0YUtleSYmCi0hYS5zdGFydHNlbGVjdGVk
KXthLiRlbGVtZW50LnJlbW92ZUNsYXNzKCJ1aS1zZWxlY3RlZCIpO2Euc2VsZWN0ZWQ9ZmFsc2U7
YS4kZWxlbWVudC5hZGRDbGFzcygidWktdW5zZWxlY3RpbmciKTthLnVuc2VsZWN0aW5nPXRydWU7
Zi5fdHJpZ2dlcigidW5zZWxlY3RpbmciLGMse3Vuc2VsZWN0aW5nOmEuZWxlbWVudH0pfX19fSk7
cmV0dXJuIGZhbHNlfX0sX21vdXNlU3RvcDpmdW5jdGlvbihjKXt2YXIgZj10aGlzO3RoaXMuZHJh
Z2dlZD1mYWxzZTtlKCIudWktdW5zZWxlY3RpbmciLHRoaXMuZWxlbWVudFswXSkuZWFjaChmdW5j
dGlvbigpe3ZhciBkPWUuZGF0YSh0aGlzLCJzZWxlY3RhYmxlLWl0ZW0iKTtkLiRlbGVtZW50LnJl
bW92ZUNsYXNzKCJ1aS11bnNlbGVjdGluZyIpO2QudW5zZWxlY3Rpbmc9ZmFsc2U7ZC5zdGFydHNl
bGVjdGVkPWZhbHNlO2YuX3RyaWdnZXIoInVuc2VsZWN0ZWQiLGMse3Vuc2VsZWN0ZWQ6ZC5lbGVt
ZW50fSl9KTtlKCIudWktc2VsZWN0aW5nIix0aGlzLmVsZW1lbnRbMF0pLmVhY2goZnVuY3Rpb24o
KXt2YXIgZD0KLWUuZGF0YSh0aGlzLCJzZWxlY3RhYmxlLWl0ZW0iKTtkLiRlbGVtZW50LnJlbW92
ZUNsYXNzKCJ1aS1zZWxlY3RpbmciKS5hZGRDbGFzcygidWktc2VsZWN0ZWQiKTtkLnNlbGVjdGlu
Zz1mYWxzZTtkLnNlbGVjdGVkPXRydWU7ZC5zdGFydHNlbGVjdGVkPXRydWU7Zi5fdHJpZ2dlcigi
c2VsZWN0ZWQiLGMse3NlbGVjdGVkOmQuZWxlbWVudH0pfSk7dGhpcy5fdHJpZ2dlcigic3RvcCIs
Yyk7dGhpcy5oZWxwZXIucmVtb3ZlKCk7cmV0dXJuIGZhbHNlfX0pO2UuZXh0ZW5kKGUudWkuc2Vs
ZWN0YWJsZSx7dmVyc2lvbjoiMS44LjEwIn0pfSkoalF1ZXJ5KTsKLTsvKgotICogalF1ZXJ5IFVJ
IFNvcnRhYmxlIDEuOC4xMAotICoKLSAqIENvcHlyaWdodCAyMDExLCBBVVRIT1JTLnR4dCAoaHR0
cDovL2pxdWVyeXVpLmNvbS9hYm91dCkKLSAqIER1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBv
ciBHUEwgVmVyc2lvbiAyIGxpY2Vuc2VzLgotICogaHR0cDovL2pxdWVyeS5vcmcvbGljZW5zZQot
ICoKLSAqIGh0dHA6Ly9kb2NzLmpxdWVyeS5jb20vVUkvU29ydGFibGVzCi0gKgotICogRGVwZW5k
czoKLSAqCWpxdWVyeS51aS5jb3JlLmpzCi0gKglqcXVlcnkudWkubW91c2UuanMKLSAqCWpxdWVy
eS51aS53aWRnZXQuanMKLSAqLwotKGZ1bmN0aW9uKGQpe2Qud2lkZ2V0KCJ1aS5zb3J0YWJsZSIs
ZC51aS5tb3VzZSx7d2lkZ2V0RXZlbnRQcmVmaXg6InNvcnQiLG9wdGlvbnM6e2FwcGVuZFRvOiJw
YXJlbnQiLGF4aXM6ZmFsc2UsY29ubmVjdFdpdGg6ZmFsc2UsY29udGFpbm1lbnQ6ZmFsc2UsY3Vy
c29yOiJhdXRvIixjdXJzb3JBdDpmYWxzZSxkcm9wT25FbXB0eTp0cnVlLGZvcmNlUGxhY2Vob2xk
ZXJTaXplOmZhbHNlLGZvcmNlSGVscGVyU2l6ZTpmYWxzZSxncmlkOmZhbHNlLGhhbmRsZTpmYWxz
ZSxoZWxwZXI6Im9yaWdpbmFsIixpdGVtczoiPiAqIixvcGFjaXR5OmZhbHNlLHBsYWNlaG9sZGVy
OmZhbHNlLHJldmVydDpmYWxzZSxzY3JvbGw6dHJ1ZSxzY3JvbGxTZW5zaXRpdml0eToyMCxzY3Jv
bGxTcGVlZDoyMCxzY29wZToiZGVmYXVsdCIsdG9sZXJhbmNlOiJpbnRlcnNlY3QiLHpJbmRleDox
RTN9LF9jcmVhdGU6ZnVuY3Rpb24oKXt0aGlzLmNvbnRhaW5lckNhY2hlPXt9O3RoaXMuZWxlbWVu
dC5hZGRDbGFzcygidWktc29ydGFibGUiKTsKLXRoaXMucmVmcmVzaCgpO3RoaXMuZmxvYXRpbmc9
dGhpcy5pdGVtcy5sZW5ndGg/L2xlZnR8cmlnaHQvLnRlc3QodGhpcy5pdGVtc1swXS5pdGVtLmNz
cygiZmxvYXQiKSk6ZmFsc2U7dGhpcy5vZmZzZXQ9dGhpcy5lbGVtZW50Lm9mZnNldCgpO3RoaXMu
X21vdXNlSW5pdCgpfSxkZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy5lbGVtZW50LnJlbW92ZUNsYXNz
KCJ1aS1zb3J0YWJsZSB1aS1zb3J0YWJsZS1kaXNhYmxlZCIpLnJlbW92ZURhdGEoInNvcnRhYmxl
IikudW5iaW5kKCIuc29ydGFibGUiKTt0aGlzLl9tb3VzZURlc3Ryb3koKTtmb3IodmFyIGE9dGhp
cy5pdGVtcy5sZW5ndGgtMTthPj0wO2EtLSl0aGlzLml0ZW1zW2FdLml0ZW0ucmVtb3ZlRGF0YSgi
c29ydGFibGUtaXRlbSIpO3JldHVybiB0aGlzfSxfc2V0T3B0aW9uOmZ1bmN0aW9uKGEsYil7aWYo
YT09PSJkaXNhYmxlZCIpe3RoaXMub3B0aW9uc1thXT1iO3RoaXMud2lkZ2V0KClbYj8iYWRkQ2xh
c3MiOiJyZW1vdmVDbGFzcyJdKCJ1aS1zb3J0YWJsZS1kaXNhYmxlZCIpfWVsc2UgZC5XaWRnZXQu
cHJvdG90eXBlLl9zZXRPcHRpb24uYXBwbHkodGhpcywKLWFyZ3VtZW50cyl9LF9tb3VzZUNhcHR1
cmU6ZnVuY3Rpb24oYSxiKXtpZih0aGlzLnJldmVydGluZylyZXR1cm4gZmFsc2U7aWYodGhpcy5v
cHRpb25zLmRpc2FibGVkfHx0aGlzLm9wdGlvbnMudHlwZT09InN0YXRpYyIpcmV0dXJuIGZhbHNl
O3RoaXMuX3JlZnJlc2hJdGVtcyhhKTt2YXIgYz1udWxsLGU9dGhpcztkKGEudGFyZ2V0KS5wYXJl
bnRzKCkuZWFjaChmdW5jdGlvbigpe2lmKGQuZGF0YSh0aGlzLCJzb3J0YWJsZS1pdGVtIik9PWUp
e2M9ZCh0aGlzKTtyZXR1cm4gZmFsc2V9fSk7aWYoZC5kYXRhKGEudGFyZ2V0LCJzb3J0YWJsZS1p
dGVtIik9PWUpYz1kKGEudGFyZ2V0KTtpZighYylyZXR1cm4gZmFsc2U7aWYodGhpcy5vcHRpb25z
LmhhbmRsZSYmIWIpe3ZhciBmPWZhbHNlO2QodGhpcy5vcHRpb25zLmhhbmRsZSxjKS5maW5kKCIq
IikuYW5kU2VsZigpLmVhY2goZnVuY3Rpb24oKXtpZih0aGlzPT1hLnRhcmdldClmPXRydWV9KTtp
ZighZilyZXR1cm4gZmFsc2V9dGhpcy5jdXJyZW50SXRlbT0KLWM7dGhpcy5fcmVtb3ZlQ3VycmVu
dHNGcm9tSXRlbXMoKTtyZXR1cm4gdHJ1ZX0sX21vdXNlU3RhcnQ6ZnVuY3Rpb24oYSxiLGMpe2I9
dGhpcy5vcHRpb25zO3ZhciBlPXRoaXM7dGhpcy5jdXJyZW50Q29udGFpbmVyPXRoaXM7dGhpcy5y
ZWZyZXNoUG9zaXRpb25zKCk7dGhpcy5oZWxwZXI9dGhpcy5fY3JlYXRlSGVscGVyKGEpO3RoaXMu
X2NhY2hlSGVscGVyUHJvcG9ydGlvbnMoKTt0aGlzLl9jYWNoZU1hcmdpbnMoKTt0aGlzLnNjcm9s
bFBhcmVudD10aGlzLmhlbHBlci5zY3JvbGxQYXJlbnQoKTt0aGlzLm9mZnNldD10aGlzLmN1cnJl
bnRJdGVtLm9mZnNldCgpO3RoaXMub2Zmc2V0PXt0b3A6dGhpcy5vZmZzZXQudG9wLXRoaXMubWFy
Z2lucy50b3AsbGVmdDp0aGlzLm9mZnNldC5sZWZ0LXRoaXMubWFyZ2lucy5sZWZ0fTt0aGlzLmhl
bHBlci5jc3MoInBvc2l0aW9uIiwiYWJzb2x1dGUiKTt0aGlzLmNzc1Bvc2l0aW9uPXRoaXMuaGVs
cGVyLmNzcygicG9zaXRpb24iKTtkLmV4dGVuZCh0aGlzLm9mZnNldCwKLXtjbGljazp7bGVmdDph
LnBhZ2VYLXRoaXMub2Zmc2V0LmxlZnQsdG9wOmEucGFnZVktdGhpcy5vZmZzZXQudG9wfSxwYXJl
bnQ6dGhpcy5fZ2V0UGFyZW50T2Zmc2V0KCkscmVsYXRpdmU6dGhpcy5fZ2V0UmVsYXRpdmVPZmZz
ZXQoKX0pO3RoaXMub3JpZ2luYWxQb3NpdGlvbj10aGlzLl9nZW5lcmF0ZVBvc2l0aW9uKGEpO3Ro
aXMub3JpZ2luYWxQYWdlWD1hLnBhZ2VYO3RoaXMub3JpZ2luYWxQYWdlWT1hLnBhZ2VZO2IuY3Vy
c29yQXQmJnRoaXMuX2FkanVzdE9mZnNldEZyb21IZWxwZXIoYi5jdXJzb3JBdCk7dGhpcy5kb21Q
b3NpdGlvbj17cHJldjp0aGlzLmN1cnJlbnRJdGVtLnByZXYoKVswXSxwYXJlbnQ6dGhpcy5jdXJy
ZW50SXRlbS5wYXJlbnQoKVswXX07dGhpcy5oZWxwZXJbMF0hPXRoaXMuY3VycmVudEl0ZW1bMF0m
JnRoaXMuY3VycmVudEl0ZW0uaGlkZSgpO3RoaXMuX2NyZWF0ZVBsYWNlaG9sZGVyKCk7Yi5jb250
YWlubWVudCYmdGhpcy5fc2V0Q29udGFpbm1lbnQoKTsKLWlmKGIuY3Vyc29yKXtpZihkKCJib2R5
IikuY3NzKCJjdXJzb3IiKSl0aGlzLl9zdG9yZWRDdXJzb3I9ZCgiYm9keSIpLmNzcygiY3Vyc29y
Iik7ZCgiYm9keSIpLmNzcygiY3Vyc29yIixiLmN1cnNvcil9aWYoYi5vcGFjaXR5KXtpZih0aGlz
LmhlbHBlci5jc3MoIm9wYWNpdHkiKSl0aGlzLl9zdG9yZWRPcGFjaXR5PXRoaXMuaGVscGVyLmNz
cygib3BhY2l0eSIpO3RoaXMuaGVscGVyLmNzcygib3BhY2l0eSIsYi5vcGFjaXR5KX1pZihiLnpJ
bmRleCl7aWYodGhpcy5oZWxwZXIuY3NzKCJ6SW5kZXgiKSl0aGlzLl9zdG9yZWRaSW5kZXg9dGhp
cy5oZWxwZXIuY3NzKCJ6SW5kZXgiKTt0aGlzLmhlbHBlci5jc3MoInpJbmRleCIsYi56SW5kZXgp
fWlmKHRoaXMuc2Nyb2xsUGFyZW50WzBdIT1kb2N1bWVudCYmdGhpcy5zY3JvbGxQYXJlbnRbMF0u
dGFnTmFtZSE9IkhUTUwiKXRoaXMub3ZlcmZsb3dPZmZzZXQ9dGhpcy5zY3JvbGxQYXJlbnQub2Zm
c2V0KCk7dGhpcy5fdHJpZ2dlcigic3RhcnQiLAotYSx0aGlzLl91aUhhc2goKSk7dGhpcy5fcHJl
c2VydmVIZWxwZXJQcm9wb3J0aW9uc3x8dGhpcy5fY2FjaGVIZWxwZXJQcm9wb3J0aW9ucygpO2lm
KCFjKWZvcihjPXRoaXMuY29udGFpbmVycy5sZW5ndGgtMTtjPj0wO2MtLSl0aGlzLmNvbnRhaW5l
cnNbY10uX3RyaWdnZXIoImFjdGl2YXRlIixhLGUuX3VpSGFzaCh0aGlzKSk7aWYoZC51aS5kZG1h
bmFnZXIpZC51aS5kZG1hbmFnZXIuY3VycmVudD10aGlzO2QudWkuZGRtYW5hZ2VyJiYhYi5kcm9w
QmVoYXZpb3VyJiZkLnVpLmRkbWFuYWdlci5wcmVwYXJlT2Zmc2V0cyh0aGlzLGEpO3RoaXMuZHJh
Z2dpbmc9dHJ1ZTt0aGlzLmhlbHBlci5hZGRDbGFzcygidWktc29ydGFibGUtaGVscGVyIik7dGhp
cy5fbW91c2VEcmFnKGEpO3JldHVybiB0cnVlfSxfbW91c2VEcmFnOmZ1bmN0aW9uKGEpe3RoaXMu
cG9zaXRpb249dGhpcy5fZ2VuZXJhdGVQb3NpdGlvbihhKTt0aGlzLnBvc2l0aW9uQWJzPXRoaXMu
X2NvbnZlcnRQb3NpdGlvblRvKCJhYnNvbHV0ZSIpOwotaWYoIXRoaXMubGFzdFBvc2l0aW9uQWJz
KXRoaXMubGFzdFBvc2l0aW9uQWJzPXRoaXMucG9zaXRpb25BYnM7aWYodGhpcy5vcHRpb25zLnNj
cm9sbCl7dmFyIGI9dGhpcy5vcHRpb25zLGM9ZmFsc2U7aWYodGhpcy5zY3JvbGxQYXJlbnRbMF0h
PWRvY3VtZW50JiZ0aGlzLnNjcm9sbFBhcmVudFswXS50YWdOYW1lIT0iSFRNTCIpe2lmKHRoaXMu
b3ZlcmZsb3dPZmZzZXQudG9wK3RoaXMuc2Nyb2xsUGFyZW50WzBdLm9mZnNldEhlaWdodC1hLnBh
Z2VZPGIuc2Nyb2xsU2Vuc2l0aXZpdHkpdGhpcy5zY3JvbGxQYXJlbnRbMF0uc2Nyb2xsVG9wPWM9
dGhpcy5zY3JvbGxQYXJlbnRbMF0uc2Nyb2xsVG9wK2Iuc2Nyb2xsU3BlZWQ7ZWxzZSBpZihhLnBh
Z2VZLXRoaXMub3ZlcmZsb3dPZmZzZXQudG9wPGIuc2Nyb2xsU2Vuc2l0aXZpdHkpdGhpcy5zY3Jv
bGxQYXJlbnRbMF0uc2Nyb2xsVG9wPWM9dGhpcy5zY3JvbGxQYXJlbnRbMF0uc2Nyb2xsVG9wLWIu
c2Nyb2xsU3BlZWQ7aWYodGhpcy5vdmVyZmxvd09mZnNldC5sZWZ0KwotdGhpcy5zY3JvbGxQYXJl
bnRbMF0ub2Zmc2V0V2lkdGgtYS5wYWdlWDxiLnNjcm9sbFNlbnNpdGl2aXR5KXRoaXMuc2Nyb2xs
UGFyZW50WzBdLnNjcm9sbExlZnQ9Yz10aGlzLnNjcm9sbFBhcmVudFswXS5zY3JvbGxMZWZ0K2Iu
c2Nyb2xsU3BlZWQ7ZWxzZSBpZihhLnBhZ2VYLXRoaXMub3ZlcmZsb3dPZmZzZXQubGVmdDxiLnNj
cm9sbFNlbnNpdGl2aXR5KXRoaXMuc2Nyb2xsUGFyZW50WzBdLnNjcm9sbExlZnQ9Yz10aGlzLnNj
cm9sbFBhcmVudFswXS5zY3JvbGxMZWZ0LWIuc2Nyb2xsU3BlZWR9ZWxzZXtpZihhLnBhZ2VZLWQo
ZG9jdW1lbnQpLnNjcm9sbFRvcCgpPGIuc2Nyb2xsU2Vuc2l0aXZpdHkpYz1kKGRvY3VtZW50KS5z
Y3JvbGxUb3AoZChkb2N1bWVudCkuc2Nyb2xsVG9wKCktYi5zY3JvbGxTcGVlZCk7ZWxzZSBpZihk
KHdpbmRvdykuaGVpZ2h0KCktKGEucGFnZVktZChkb2N1bWVudCkuc2Nyb2xsVG9wKCkpPGIuc2Ny
b2xsU2Vuc2l0aXZpdHkpYz1kKGRvY3VtZW50KS5zY3JvbGxUb3AoZChkb2N1bWVudCkuc2Nyb2xs
VG9wKCkrCi1iLnNjcm9sbFNwZWVkKTtpZihhLnBhZ2VYLWQoZG9jdW1lbnQpLnNjcm9sbExlZnQo
KTxiLnNjcm9sbFNlbnNpdGl2aXR5KWM9ZChkb2N1bWVudCkuc2Nyb2xsTGVmdChkKGRvY3VtZW50
KS5zY3JvbGxMZWZ0KCktYi5zY3JvbGxTcGVlZCk7ZWxzZSBpZihkKHdpbmRvdykud2lkdGgoKS0o
YS5wYWdlWC1kKGRvY3VtZW50KS5zY3JvbGxMZWZ0KCkpPGIuc2Nyb2xsU2Vuc2l0aXZpdHkpYz1k
KGRvY3VtZW50KS5zY3JvbGxMZWZ0KGQoZG9jdW1lbnQpLnNjcm9sbExlZnQoKStiLnNjcm9sbFNw
ZWVkKX1jIT09ZmFsc2UmJmQudWkuZGRtYW5hZ2VyJiYhYi5kcm9wQmVoYXZpb3VyJiZkLnVpLmRk
bWFuYWdlci5wcmVwYXJlT2Zmc2V0cyh0aGlzLGEpfXRoaXMucG9zaXRpb25BYnM9dGhpcy5fY29u
dmVydFBvc2l0aW9uVG8oImFic29sdXRlIik7aWYoIXRoaXMub3B0aW9ucy5heGlzfHx0aGlzLm9w
dGlvbnMuYXhpcyE9InkiKXRoaXMuaGVscGVyWzBdLnN0eWxlLmxlZnQ9dGhpcy5wb3NpdGlvbi5s
ZWZ0KwotInB4IjtpZighdGhpcy5vcHRpb25zLmF4aXN8fHRoaXMub3B0aW9ucy5heGlzIT0ieCIp
dGhpcy5oZWxwZXJbMF0uc3R5bGUudG9wPXRoaXMucG9zaXRpb24udG9wKyJweCI7Zm9yKGI9dGhp
cy5pdGVtcy5sZW5ndGgtMTtiPj0wO2ItLSl7Yz10aGlzLml0ZW1zW2JdO3ZhciBlPWMuaXRlbVsw
XSxmPXRoaXMuX2ludGVyc2VjdHNXaXRoUG9pbnRlcihjKTtpZihmKWlmKGUhPXRoaXMuY3VycmVu
dEl0ZW1bMF0mJnRoaXMucGxhY2Vob2xkZXJbZj09MT8ibmV4dCI6InByZXYiXSgpWzBdIT1lJiYh
ZC51aS5jb250YWlucyh0aGlzLnBsYWNlaG9sZGVyWzBdLGUpJiYodGhpcy5vcHRpb25zLnR5cGU9
PSJzZW1pLWR5bmFtaWMiPyFkLnVpLmNvbnRhaW5zKHRoaXMuZWxlbWVudFswXSxlKTp0cnVlKSl7
dGhpcy5kaXJlY3Rpb249Zj09MT8iZG93biI6InVwIjtpZih0aGlzLm9wdGlvbnMudG9sZXJhbmNl
PT0icG9pbnRlciJ8fHRoaXMuX2ludGVyc2VjdHNXaXRoU2lkZXMoYykpdGhpcy5fcmVhcnJhbmdl
KGEsCi1jKTtlbHNlIGJyZWFrO3RoaXMuX3RyaWdnZXIoImNoYW5nZSIsYSx0aGlzLl91aUhhc2go
KSk7YnJlYWt9fXRoaXMuX2NvbnRhY3RDb250YWluZXJzKGEpO2QudWkuZGRtYW5hZ2VyJiZkLnVp
LmRkbWFuYWdlci5kcmFnKHRoaXMsYSk7dGhpcy5fdHJpZ2dlcigic29ydCIsYSx0aGlzLl91aUhh
c2goKSk7dGhpcy5sYXN0UG9zaXRpb25BYnM9dGhpcy5wb3NpdGlvbkFicztyZXR1cm4gZmFsc2V9
LF9tb3VzZVN0b3A6ZnVuY3Rpb24oYSxiKXtpZihhKXtkLnVpLmRkbWFuYWdlciYmIXRoaXMub3B0
aW9ucy5kcm9wQmVoYXZpb3VyJiZkLnVpLmRkbWFuYWdlci5kcm9wKHRoaXMsYSk7aWYodGhpcy5v
cHRpb25zLnJldmVydCl7dmFyIGM9dGhpcztiPWMucGxhY2Vob2xkZXIub2Zmc2V0KCk7Yy5yZXZl
cnRpbmc9dHJ1ZTtkKHRoaXMuaGVscGVyKS5hbmltYXRlKHtsZWZ0OmIubGVmdC10aGlzLm9mZnNl
dC5wYXJlbnQubGVmdC1jLm1hcmdpbnMubGVmdCsodGhpcy5vZmZzZXRQYXJlbnRbMF09PQotZG9j
dW1lbnQuYm9keT8wOnRoaXMub2Zmc2V0UGFyZW50WzBdLnNjcm9sbExlZnQpLHRvcDpiLnRvcC10
aGlzLm9mZnNldC5wYXJlbnQudG9wLWMubWFyZ2lucy50b3ArKHRoaXMub2Zmc2V0UGFyZW50WzBd
PT1kb2N1bWVudC5ib2R5PzA6dGhpcy5vZmZzZXRQYXJlbnRbMF0uc2Nyb2xsVG9wKX0scGFyc2VJ
bnQodGhpcy5vcHRpb25zLnJldmVydCwxMCl8fDUwMCxmdW5jdGlvbigpe2MuX2NsZWFyKGEpfSl9
ZWxzZSB0aGlzLl9jbGVhcihhLGIpO3JldHVybiBmYWxzZX19LGNhbmNlbDpmdW5jdGlvbigpe3Zh
ciBhPXRoaXM7aWYodGhpcy5kcmFnZ2luZyl7dGhpcy5fbW91c2VVcCh7dGFyZ2V0Om51bGx9KTt0
aGlzLm9wdGlvbnMuaGVscGVyPT0ib3JpZ2luYWwiP3RoaXMuY3VycmVudEl0ZW0uY3NzKHRoaXMu
X3N0b3JlZENTUykucmVtb3ZlQ2xhc3MoInVpLXNvcnRhYmxlLWhlbHBlciIpOnRoaXMuY3VycmVu
dEl0ZW0uc2hvdygpO2Zvcih2YXIgYj10aGlzLmNvbnRhaW5lcnMubGVuZ3RoLQotMTtiPj0wO2It
LSl7dGhpcy5jb250YWluZXJzW2JdLl90cmlnZ2VyKCJkZWFjdGl2YXRlIixudWxsLGEuX3VpSGFz
aCh0aGlzKSk7aWYodGhpcy5jb250YWluZXJzW2JdLmNvbnRhaW5lckNhY2hlLm92ZXIpe3RoaXMu
Y29udGFpbmVyc1tiXS5fdHJpZ2dlcigib3V0IixudWxsLGEuX3VpSGFzaCh0aGlzKSk7dGhpcy5j
b250YWluZXJzW2JdLmNvbnRhaW5lckNhY2hlLm92ZXI9MH19fWlmKHRoaXMucGxhY2Vob2xkZXIp
e3RoaXMucGxhY2Vob2xkZXJbMF0ucGFyZW50Tm9kZSYmdGhpcy5wbGFjZWhvbGRlclswXS5wYXJl
bnROb2RlLnJlbW92ZUNoaWxkKHRoaXMucGxhY2Vob2xkZXJbMF0pO3RoaXMub3B0aW9ucy5oZWxw
ZXIhPSJvcmlnaW5hbCImJnRoaXMuaGVscGVyJiZ0aGlzLmhlbHBlclswXS5wYXJlbnROb2RlJiZ0
aGlzLmhlbHBlci5yZW1vdmUoKTtkLmV4dGVuZCh0aGlzLHtoZWxwZXI6bnVsbCxkcmFnZ2luZzpm
YWxzZSxyZXZlcnRpbmc6ZmFsc2UsX25vRmluYWxTb3J0Om51bGx9KTsKLXRoaXMuZG9tUG9zaXRp
b24ucHJldj9kKHRoaXMuZG9tUG9zaXRpb24ucHJldikuYWZ0ZXIodGhpcy5jdXJyZW50SXRlbSk6
ZCh0aGlzLmRvbVBvc2l0aW9uLnBhcmVudCkucHJlcGVuZCh0aGlzLmN1cnJlbnRJdGVtKX1yZXR1
cm4gdGhpc30sc2VyaWFsaXplOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuX2dldEl0ZW1zQXNqUXVl
cnkoYSYmYS5jb25uZWN0ZWQpLGM9W107YT1hfHx7fTtkKGIpLmVhY2goZnVuY3Rpb24oKXt2YXIg
ZT0oZChhLml0ZW18fHRoaXMpLmF0dHIoYS5hdHRyaWJ1dGV8fCJpZCIpfHwiIikubWF0Y2goYS5l
eHByZXNzaW9ufHwvKC4rKVstPV9dKC4rKS8pO2lmKGUpYy5wdXNoKChhLmtleXx8ZVsxXSsiW10i
KSsiPSIrKGEua2V5JiZhLmV4cHJlc3Npb24/ZVsxXTplWzJdKSl9KTshYy5sZW5ndGgmJmEua2V5
JiZjLnB1c2goYS5rZXkrIj0iKTtyZXR1cm4gYy5qb2luKCImIil9LHRvQXJyYXk6ZnVuY3Rpb24o
YSl7dmFyIGI9dGhpcy5fZ2V0SXRlbXNBc2pRdWVyeShhJiYKLWEuY29ubmVjdGVkKSxjPVtdO2E9
YXx8e307Yi5lYWNoKGZ1bmN0aW9uKCl7Yy5wdXNoKGQoYS5pdGVtfHx0aGlzKS5hdHRyKGEuYXR0
cmlidXRlfHwiaWQiKXx8IiIpfSk7cmV0dXJuIGN9LF9pbnRlcnNlY3RzV2l0aDpmdW5jdGlvbihh
KXt2YXIgYj10aGlzLnBvc2l0aW9uQWJzLmxlZnQsYz1iK3RoaXMuaGVscGVyUHJvcG9ydGlvbnMu
d2lkdGgsZT10aGlzLnBvc2l0aW9uQWJzLnRvcCxmPWUrdGhpcy5oZWxwZXJQcm9wb3J0aW9ucy5o
ZWlnaHQsZz1hLmxlZnQsaD1nK2Eud2lkdGgsaT1hLnRvcCxrPWkrYS5oZWlnaHQsaj10aGlzLm9m
ZnNldC5jbGljay50b3AsbD10aGlzLm9mZnNldC5jbGljay5sZWZ0O2o9ZStqPmkmJmUrajxrJiZi
K2w+ZyYmYitsPGg7cmV0dXJuIHRoaXMub3B0aW9ucy50b2xlcmFuY2U9PSJwb2ludGVyInx8dGhp
cy5vcHRpb25zLmZvcmNlUG9pbnRlckZvckNvbnRhaW5lcnN8fHRoaXMub3B0aW9ucy50b2xlcmFu
Y2UhPSJwb2ludGVyIiYmdGhpcy5oZWxwZXJQcm9wb3J0aW9uc1t0aGlzLmZsb2F0aW5nPwotIndp
ZHRoIjoiaGVpZ2h0Il0+YVt0aGlzLmZsb2F0aW5nPyJ3aWR0aCI6ImhlaWdodCJdP2o6ZzxiK3Ro
aXMuaGVscGVyUHJvcG9ydGlvbnMud2lkdGgvMiYmYy10aGlzLmhlbHBlclByb3BvcnRpb25zLndp
ZHRoLzI8aCYmaTxlK3RoaXMuaGVscGVyUHJvcG9ydGlvbnMuaGVpZ2h0LzImJmYtdGhpcy5oZWxw
ZXJQcm9wb3J0aW9ucy5oZWlnaHQvMjxrfSxfaW50ZXJzZWN0c1dpdGhQb2ludGVyOmZ1bmN0aW9u
KGEpe3ZhciBiPWQudWkuaXNPdmVyQXhpcyh0aGlzLnBvc2l0aW9uQWJzLnRvcCt0aGlzLm9mZnNl
dC5jbGljay50b3AsYS50b3AsYS5oZWlnaHQpO2E9ZC51aS5pc092ZXJBeGlzKHRoaXMucG9zaXRp
b25BYnMubGVmdCt0aGlzLm9mZnNldC5jbGljay5sZWZ0LGEubGVmdCxhLndpZHRoKTtiPWImJmE7
YT10aGlzLl9nZXREcmFnVmVydGljYWxEaXJlY3Rpb24oKTt2YXIgYz10aGlzLl9nZXREcmFnSG9y
aXpvbnRhbERpcmVjdGlvbigpO2lmKCFiKXJldHVybiBmYWxzZTtyZXR1cm4gdGhpcy5mbG9hdGlu
Zz8KLWMmJmM9PSJyaWdodCJ8fGE9PSJkb3duIj8yOjE6YSYmKGE9PSJkb3duIj8yOjEpfSxfaW50
ZXJzZWN0c1dpdGhTaWRlczpmdW5jdGlvbihhKXt2YXIgYj1kLnVpLmlzT3ZlckF4aXModGhpcy5w
b3NpdGlvbkFicy50b3ArdGhpcy5vZmZzZXQuY2xpY2sudG9wLGEudG9wK2EuaGVpZ2h0LzIsYS5o
ZWlnaHQpO2E9ZC51aS5pc092ZXJBeGlzKHRoaXMucG9zaXRpb25BYnMubGVmdCt0aGlzLm9mZnNl
dC5jbGljay5sZWZ0LGEubGVmdCthLndpZHRoLzIsYS53aWR0aCk7dmFyIGM9dGhpcy5fZ2V0RHJh
Z1ZlcnRpY2FsRGlyZWN0aW9uKCksZT10aGlzLl9nZXREcmFnSG9yaXpvbnRhbERpcmVjdGlvbigp
O3JldHVybiB0aGlzLmZsb2F0aW5nJiZlP2U9PSJyaWdodCImJmF8fGU9PSJsZWZ0IiYmIWE6YyYm
KGM9PSJkb3duIiYmYnx8Yz09InVwIiYmIWIpfSxfZ2V0RHJhZ1ZlcnRpY2FsRGlyZWN0aW9uOmZ1
bmN0aW9uKCl7dmFyIGE9dGhpcy5wb3NpdGlvbkFicy50b3AtdGhpcy5sYXN0UG9zaXRpb25BYnMu
dG9wOwotcmV0dXJuIGEhPTAmJihhPjA/ImRvd24iOiJ1cCIpfSxfZ2V0RHJhZ0hvcml6b250YWxE
aXJlY3Rpb246ZnVuY3Rpb24oKXt2YXIgYT10aGlzLnBvc2l0aW9uQWJzLmxlZnQtdGhpcy5sYXN0
UG9zaXRpb25BYnMubGVmdDtyZXR1cm4gYSE9MCYmKGE+MD8icmlnaHQiOiJsZWZ0Iil9LHJlZnJl
c2g6ZnVuY3Rpb24oYSl7dGhpcy5fcmVmcmVzaEl0ZW1zKGEpO3RoaXMucmVmcmVzaFBvc2l0aW9u
cygpO3JldHVybiB0aGlzfSxfY29ubmVjdFdpdGg6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLm9wdGlv
bnM7cmV0dXJuIGEuY29ubmVjdFdpdGguY29uc3RydWN0b3I9PVN0cmluZz9bYS5jb25uZWN0V2l0
aF06YS5jb25uZWN0V2l0aH0sX2dldEl0ZW1zQXNqUXVlcnk6ZnVuY3Rpb24oYSl7dmFyIGI9W10s
Yz1bXSxlPXRoaXMuX2Nvbm5lY3RXaXRoKCk7aWYoZSYmYSlmb3IoYT1lLmxlbmd0aC0xO2E+PTA7
YS0tKWZvcih2YXIgZj1kKGVbYV0pLGc9Zi5sZW5ndGgtMTtnPj0wO2ctLSl7dmFyIGg9Ci1kLmRh
dGEoZltnXSwic29ydGFibGUiKTtpZihoJiZoIT10aGlzJiYhaC5vcHRpb25zLmRpc2FibGVkKWMu
cHVzaChbZC5pc0Z1bmN0aW9uKGgub3B0aW9ucy5pdGVtcyk/aC5vcHRpb25zLml0ZW1zLmNhbGwo
aC5lbGVtZW50KTpkKGgub3B0aW9ucy5pdGVtcyxoLmVsZW1lbnQpLm5vdCgiLnVpLXNvcnRhYmxl
LWhlbHBlciIpLm5vdCgiLnVpLXNvcnRhYmxlLXBsYWNlaG9sZGVyIiksaF0pfWMucHVzaChbZC5p
c0Z1bmN0aW9uKHRoaXMub3B0aW9ucy5pdGVtcyk/dGhpcy5vcHRpb25zLml0ZW1zLmNhbGwodGhp
cy5lbGVtZW50LG51bGwse29wdGlvbnM6dGhpcy5vcHRpb25zLGl0ZW06dGhpcy5jdXJyZW50SXRl
bX0pOmQodGhpcy5vcHRpb25zLml0ZW1zLHRoaXMuZWxlbWVudCkubm90KCIudWktc29ydGFibGUt
aGVscGVyIikubm90KCIudWktc29ydGFibGUtcGxhY2Vob2xkZXIiKSx0aGlzXSk7Zm9yKGE9Yy5s
ZW5ndGgtMTthPj0wO2EtLSljW2FdWzBdLmVhY2goZnVuY3Rpb24oKXtiLnB1c2godGhpcyl9KTsK
LXJldHVybiBkKGIpfSxfcmVtb3ZlQ3VycmVudHNGcm9tSXRlbXM6ZnVuY3Rpb24oKXtmb3IodmFy
IGE9dGhpcy5jdXJyZW50SXRlbS5maW5kKCI6ZGF0YShzb3J0YWJsZS1pdGVtKSIpLGI9MDtiPHRo
aXMuaXRlbXMubGVuZ3RoO2IrKylmb3IodmFyIGM9MDtjPGEubGVuZ3RoO2MrKylhW2NdPT10aGlz
Lml0ZW1zW2JdLml0ZW1bMF0mJnRoaXMuaXRlbXMuc3BsaWNlKGIsMSl9LF9yZWZyZXNoSXRlbXM6
ZnVuY3Rpb24oYSl7dGhpcy5pdGVtcz1bXTt0aGlzLmNvbnRhaW5lcnM9W3RoaXNdO3ZhciBiPXRo
aXMuaXRlbXMsYz1bW2QuaXNGdW5jdGlvbih0aGlzLm9wdGlvbnMuaXRlbXMpP3RoaXMub3B0aW9u
cy5pdGVtcy5jYWxsKHRoaXMuZWxlbWVudFswXSxhLHtpdGVtOnRoaXMuY3VycmVudEl0ZW19KTpk
KHRoaXMub3B0aW9ucy5pdGVtcyx0aGlzLmVsZW1lbnQpLHRoaXNdXSxlPXRoaXMuX2Nvbm5lY3RX
aXRoKCk7aWYoZSlmb3IodmFyIGY9ZS5sZW5ndGgtMTtmPj0wO2YtLSlmb3IodmFyIGc9Ci1kKGVb
Zl0pLGg9Zy5sZW5ndGgtMTtoPj0wO2gtLSl7dmFyIGk9ZC5kYXRhKGdbaF0sInNvcnRhYmxlIik7
aWYoaSYmaSE9dGhpcyYmIWkub3B0aW9ucy5kaXNhYmxlZCl7Yy5wdXNoKFtkLmlzRnVuY3Rpb24o
aS5vcHRpb25zLml0ZW1zKT9pLm9wdGlvbnMuaXRlbXMuY2FsbChpLmVsZW1lbnRbMF0sYSx7aXRl
bTp0aGlzLmN1cnJlbnRJdGVtfSk6ZChpLm9wdGlvbnMuaXRlbXMsaS5lbGVtZW50KSxpXSk7dGhp
cy5jb250YWluZXJzLnB1c2goaSl9fWZvcihmPWMubGVuZ3RoLTE7Zj49MDtmLS0pe2E9Y1tmXVsx
XTtlPWNbZl1bMF07aD0wO2ZvcihnPWUubGVuZ3RoO2g8ZztoKyspe2k9ZChlW2hdKTtpLmRhdGEo
InNvcnRhYmxlLWl0ZW0iLGEpO2IucHVzaCh7aXRlbTppLGluc3RhbmNlOmEsd2lkdGg6MCxoZWln
aHQ6MCxsZWZ0OjAsdG9wOjB9KX19fSxyZWZyZXNoUG9zaXRpb25zOmZ1bmN0aW9uKGEpe2lmKHRo
aXMub2Zmc2V0UGFyZW50JiZ0aGlzLmhlbHBlcil0aGlzLm9mZnNldC5wYXJlbnQ9Ci10aGlzLl9n
ZXRQYXJlbnRPZmZzZXQoKTtmb3IodmFyIGI9dGhpcy5pdGVtcy5sZW5ndGgtMTtiPj0wO2ItLSl7
dmFyIGM9dGhpcy5pdGVtc1tiXSxlPXRoaXMub3B0aW9ucy50b2xlcmFuY2VFbGVtZW50P2QodGhp
cy5vcHRpb25zLnRvbGVyYW5jZUVsZW1lbnQsYy5pdGVtKTpjLml0ZW07aWYoIWEpe2Mud2lkdGg9
ZS5vdXRlcldpZHRoKCk7Yy5oZWlnaHQ9ZS5vdXRlckhlaWdodCgpfWU9ZS5vZmZzZXQoKTtjLmxl
ZnQ9ZS5sZWZ0O2MudG9wPWUudG9wfWlmKHRoaXMub3B0aW9ucy5jdXN0b20mJnRoaXMub3B0aW9u
cy5jdXN0b20ucmVmcmVzaENvbnRhaW5lcnMpdGhpcy5vcHRpb25zLmN1c3RvbS5yZWZyZXNoQ29u
dGFpbmVycy5jYWxsKHRoaXMpO2Vsc2UgZm9yKGI9dGhpcy5jb250YWluZXJzLmxlbmd0aC0xO2I+
PTA7Yi0tKXtlPXRoaXMuY29udGFpbmVyc1tiXS5lbGVtZW50Lm9mZnNldCgpO3RoaXMuY29udGFp
bmVyc1tiXS5jb250YWluZXJDYWNoZS5sZWZ0PWUubGVmdDt0aGlzLmNvbnRhaW5lcnNbYl0uY29u
dGFpbmVyQ2FjaGUudG9wPQotZS50b3A7dGhpcy5jb250YWluZXJzW2JdLmNvbnRhaW5lckNhY2hl
LndpZHRoPXRoaXMuY29udGFpbmVyc1tiXS5lbGVtZW50Lm91dGVyV2lkdGgoKTt0aGlzLmNvbnRh
aW5lcnNbYl0uY29udGFpbmVyQ2FjaGUuaGVpZ2h0PXRoaXMuY29udGFpbmVyc1tiXS5lbGVtZW50
Lm91dGVySGVpZ2h0KCl9cmV0dXJuIHRoaXN9LF9jcmVhdGVQbGFjZWhvbGRlcjpmdW5jdGlvbihh
KXt2YXIgYj1hfHx0aGlzLGM9Yi5vcHRpb25zO2lmKCFjLnBsYWNlaG9sZGVyfHxjLnBsYWNlaG9s
ZGVyLmNvbnN0cnVjdG9yPT1TdHJpbmcpe3ZhciBlPWMucGxhY2Vob2xkZXI7Yy5wbGFjZWhvbGRl
cj17ZWxlbWVudDpmdW5jdGlvbigpe3ZhciBmPWQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudChiLmN1
cnJlbnRJdGVtWzBdLm5vZGVOYW1lKSkuYWRkQ2xhc3MoZXx8Yi5jdXJyZW50SXRlbVswXS5jbGFz
c05hbWUrIiB1aS1zb3J0YWJsZS1wbGFjZWhvbGRlciIpLnJlbW92ZUNsYXNzKCJ1aS1zb3J0YWJs
ZS1oZWxwZXIiKVswXTsKLWlmKCFlKWYuc3R5bGUudmlzaWJpbGl0eT0iaGlkZGVuIjtyZXR1cm4g
Zn0sdXBkYXRlOmZ1bmN0aW9uKGYsZyl7aWYoIShlJiYhYy5mb3JjZVBsYWNlaG9sZGVyU2l6ZSkp
e2cuaGVpZ2h0KCl8fGcuaGVpZ2h0KGIuY3VycmVudEl0ZW0uaW5uZXJIZWlnaHQoKS1wYXJzZUlu
dChiLmN1cnJlbnRJdGVtLmNzcygicGFkZGluZ1RvcCIpfHwwLDEwKS1wYXJzZUludChiLmN1cnJl
bnRJdGVtLmNzcygicGFkZGluZ0JvdHRvbSIpfHwwLDEwKSk7Zy53aWR0aCgpfHxnLndpZHRoKGIu
Y3VycmVudEl0ZW0uaW5uZXJXaWR0aCgpLXBhcnNlSW50KGIuY3VycmVudEl0ZW0uY3NzKCJwYWRk
aW5nTGVmdCIpfHwwLDEwKS1wYXJzZUludChiLmN1cnJlbnRJdGVtLmNzcygicGFkZGluZ1JpZ2h0
Iil8fDAsMTApKX19fX1iLnBsYWNlaG9sZGVyPWQoYy5wbGFjZWhvbGRlci5lbGVtZW50LmNhbGwo
Yi5lbGVtZW50LGIuY3VycmVudEl0ZW0pKTtiLmN1cnJlbnRJdGVtLmFmdGVyKGIucGxhY2Vob2xk
ZXIpOwotYy5wbGFjZWhvbGRlci51cGRhdGUoYixiLnBsYWNlaG9sZGVyKX0sX2NvbnRhY3RDb250
YWluZXJzOmZ1bmN0aW9uKGEpe2Zvcih2YXIgYj1udWxsLGM9bnVsbCxlPXRoaXMuY29udGFpbmVy
cy5sZW5ndGgtMTtlPj0wO2UtLSlpZighZC51aS5jb250YWlucyh0aGlzLmN1cnJlbnRJdGVtWzBd
LHRoaXMuY29udGFpbmVyc1tlXS5lbGVtZW50WzBdKSlpZih0aGlzLl9pbnRlcnNlY3RzV2l0aCh0
aGlzLmNvbnRhaW5lcnNbZV0uY29udGFpbmVyQ2FjaGUpKXtpZighKGImJmQudWkuY29udGFpbnMo
dGhpcy5jb250YWluZXJzW2VdLmVsZW1lbnRbMF0sYi5lbGVtZW50WzBdKSkpe2I9dGhpcy5jb250
YWluZXJzW2VdO2M9ZX19ZWxzZSBpZih0aGlzLmNvbnRhaW5lcnNbZV0uY29udGFpbmVyQ2FjaGUu
b3Zlcil7dGhpcy5jb250YWluZXJzW2VdLl90cmlnZ2VyKCJvdXQiLGEsdGhpcy5fdWlIYXNoKHRo
aXMpKTt0aGlzLmNvbnRhaW5lcnNbZV0uY29udGFpbmVyQ2FjaGUub3Zlcj0wfWlmKGIpaWYodGhp
cy5jb250YWluZXJzLmxlbmd0aD09PQotMSl7dGhpcy5jb250YWluZXJzW2NdLl90cmlnZ2VyKCJv
dmVyIixhLHRoaXMuX3VpSGFzaCh0aGlzKSk7dGhpcy5jb250YWluZXJzW2NdLmNvbnRhaW5lckNh
Y2hlLm92ZXI9MX1lbHNlIGlmKHRoaXMuY3VycmVudENvbnRhaW5lciE9dGhpcy5jb250YWluZXJz
W2NdKXtiPTFFNDtlPW51bGw7Zm9yKHZhciBmPXRoaXMucG9zaXRpb25BYnNbdGhpcy5jb250YWlu
ZXJzW2NdLmZsb2F0aW5nPyJsZWZ0IjoidG9wIl0sZz10aGlzLml0ZW1zLmxlbmd0aC0xO2c+PTA7
Zy0tKWlmKGQudWkuY29udGFpbnModGhpcy5jb250YWluZXJzW2NdLmVsZW1lbnRbMF0sdGhpcy5p
dGVtc1tnXS5pdGVtWzBdKSl7dmFyIGg9dGhpcy5pdGVtc1tnXVt0aGlzLmNvbnRhaW5lcnNbY10u
ZmxvYXRpbmc/ImxlZnQiOiJ0b3AiXTtpZihNYXRoLmFicyhoLWYpPGIpe2I9TWF0aC5hYnMoaC1m
KTtlPXRoaXMuaXRlbXNbZ119fWlmKGV8fHRoaXMub3B0aW9ucy5kcm9wT25FbXB0eSl7dGhpcy5j
dXJyZW50Q29udGFpbmVyPQotdGhpcy5jb250YWluZXJzW2NdO2U/dGhpcy5fcmVhcnJhbmdlKGEs
ZSxudWxsLHRydWUpOnRoaXMuX3JlYXJyYW5nZShhLG51bGwsdGhpcy5jb250YWluZXJzW2NdLmVs
ZW1lbnQsdHJ1ZSk7dGhpcy5fdHJpZ2dlcigiY2hhbmdlIixhLHRoaXMuX3VpSGFzaCgpKTt0aGlz
LmNvbnRhaW5lcnNbY10uX3RyaWdnZXIoImNoYW5nZSIsYSx0aGlzLl91aUhhc2godGhpcykpO3Ro
aXMub3B0aW9ucy5wbGFjZWhvbGRlci51cGRhdGUodGhpcy5jdXJyZW50Q29udGFpbmVyLHRoaXMu
cGxhY2Vob2xkZXIpO3RoaXMuY29udGFpbmVyc1tjXS5fdHJpZ2dlcigib3ZlciIsYSx0aGlzLl91
aUhhc2godGhpcykpO3RoaXMuY29udGFpbmVyc1tjXS5jb250YWluZXJDYWNoZS5vdmVyPTF9fX0s
X2NyZWF0ZUhlbHBlcjpmdW5jdGlvbihhKXt2YXIgYj10aGlzLm9wdGlvbnM7YT1kLmlzRnVuY3Rp
b24oYi5oZWxwZXIpP2QoYi5oZWxwZXIuYXBwbHkodGhpcy5lbGVtZW50WzBdLFthLHRoaXMuY3Vy
cmVudEl0ZW1dKSk6Ci1iLmhlbHBlcj09ImNsb25lIj90aGlzLmN1cnJlbnRJdGVtLmNsb25lKCk6
dGhpcy5jdXJyZW50SXRlbTthLnBhcmVudHMoImJvZHkiKS5sZW5ndGh8fGQoYi5hcHBlbmRUbyE9
InBhcmVudCI/Yi5hcHBlbmRUbzp0aGlzLmN1cnJlbnRJdGVtWzBdLnBhcmVudE5vZGUpWzBdLmFw
cGVuZENoaWxkKGFbMF0pO2lmKGFbMF09PXRoaXMuY3VycmVudEl0ZW1bMF0pdGhpcy5fc3RvcmVk
Q1NTPXt3aWR0aDp0aGlzLmN1cnJlbnRJdGVtWzBdLnN0eWxlLndpZHRoLGhlaWdodDp0aGlzLmN1
cnJlbnRJdGVtWzBdLnN0eWxlLmhlaWdodCxwb3NpdGlvbjp0aGlzLmN1cnJlbnRJdGVtLmNzcygi
cG9zaXRpb24iKSx0b3A6dGhpcy5jdXJyZW50SXRlbS5jc3MoInRvcCIpLGxlZnQ6dGhpcy5jdXJy
ZW50SXRlbS5jc3MoImxlZnQiKX07aWYoYVswXS5zdHlsZS53aWR0aD09IiJ8fGIuZm9yY2VIZWxw
ZXJTaXplKWEud2lkdGgodGhpcy5jdXJyZW50SXRlbS53aWR0aCgpKTtpZihhWzBdLnN0eWxlLmhl
aWdodD09Ci0iInx8Yi5mb3JjZUhlbHBlclNpemUpYS5oZWlnaHQodGhpcy5jdXJyZW50SXRlbS5o
ZWlnaHQoKSk7cmV0dXJuIGF9LF9hZGp1c3RPZmZzZXRGcm9tSGVscGVyOmZ1bmN0aW9uKGEpe2lm
KHR5cGVvZiBhPT0ic3RyaW5nIilhPWEuc3BsaXQoIiAiKTtpZihkLmlzQXJyYXkoYSkpYT17bGVm
dDorYVswXSx0b3A6K2FbMV18fDB9O2lmKCJsZWZ0ImluIGEpdGhpcy5vZmZzZXQuY2xpY2subGVm
dD1hLmxlZnQrdGhpcy5tYXJnaW5zLmxlZnQ7aWYoInJpZ2h0ImluIGEpdGhpcy5vZmZzZXQuY2xp
Y2subGVmdD10aGlzLmhlbHBlclByb3BvcnRpb25zLndpZHRoLWEucmlnaHQrdGhpcy5tYXJnaW5z
LmxlZnQ7aWYoInRvcCJpbiBhKXRoaXMub2Zmc2V0LmNsaWNrLnRvcD1hLnRvcCt0aGlzLm1hcmdp
bnMudG9wO2lmKCJib3R0b20iaW4gYSl0aGlzLm9mZnNldC5jbGljay50b3A9dGhpcy5oZWxwZXJQ
cm9wb3J0aW9ucy5oZWlnaHQtYS5ib3R0b20rdGhpcy5tYXJnaW5zLnRvcH0sX2dldFBhcmVudE9m
ZnNldDpmdW5jdGlvbigpe3RoaXMub2Zmc2V0UGFyZW50PQotdGhpcy5oZWxwZXIub2Zmc2V0UGFy
ZW50KCk7dmFyIGE9dGhpcy5vZmZzZXRQYXJlbnQub2Zmc2V0KCk7aWYodGhpcy5jc3NQb3NpdGlv
bj09ImFic29sdXRlIiYmdGhpcy5zY3JvbGxQYXJlbnRbMF0hPWRvY3VtZW50JiZkLnVpLmNvbnRh
aW5zKHRoaXMuc2Nyb2xsUGFyZW50WzBdLHRoaXMub2Zmc2V0UGFyZW50WzBdKSl7YS5sZWZ0Kz10
aGlzLnNjcm9sbFBhcmVudC5zY3JvbGxMZWZ0KCk7YS50b3ArPXRoaXMuc2Nyb2xsUGFyZW50LnNj
cm9sbFRvcCgpfWlmKHRoaXMub2Zmc2V0UGFyZW50WzBdPT1kb2N1bWVudC5ib2R5fHx0aGlzLm9m
ZnNldFBhcmVudFswXS50YWdOYW1lJiZ0aGlzLm9mZnNldFBhcmVudFswXS50YWdOYW1lLnRvTG93
ZXJDYXNlKCk9PSJodG1sIiYmZC5icm93c2VyLm1zaWUpYT17dG9wOjAsbGVmdDowfTtyZXR1cm57
dG9wOmEudG9wKyhwYXJzZUludCh0aGlzLm9mZnNldFBhcmVudC5jc3MoImJvcmRlclRvcFdpZHRo
IiksMTApfHwwKSxsZWZ0OmEubGVmdCsocGFyc2VJbnQodGhpcy5vZmZzZXRQYXJlbnQuY3NzKCJi
b3JkZXJMZWZ0V2lkdGgiKSwKLTEwKXx8MCl9fSxfZ2V0UmVsYXRpdmVPZmZzZXQ6ZnVuY3Rpb24o
KXtpZih0aGlzLmNzc1Bvc2l0aW9uPT0icmVsYXRpdmUiKXt2YXIgYT10aGlzLmN1cnJlbnRJdGVt
LnBvc2l0aW9uKCk7cmV0dXJue3RvcDphLnRvcC0ocGFyc2VJbnQodGhpcy5oZWxwZXIuY3NzKCJ0
b3AiKSwxMCl8fDApK3RoaXMuc2Nyb2xsUGFyZW50LnNjcm9sbFRvcCgpLGxlZnQ6YS5sZWZ0LShw
YXJzZUludCh0aGlzLmhlbHBlci5jc3MoImxlZnQiKSwxMCl8fDApK3RoaXMuc2Nyb2xsUGFyZW50
LnNjcm9sbExlZnQoKX19ZWxzZSByZXR1cm57dG9wOjAsbGVmdDowfX0sX2NhY2hlTWFyZ2luczpm
dW5jdGlvbigpe3RoaXMubWFyZ2lucz17bGVmdDpwYXJzZUludCh0aGlzLmN1cnJlbnRJdGVtLmNz
cygibWFyZ2luTGVmdCIpLDEwKXx8MCx0b3A6cGFyc2VJbnQodGhpcy5jdXJyZW50SXRlbS5jc3Mo
Im1hcmdpblRvcCIpLDEwKXx8MH19LF9jYWNoZUhlbHBlclByb3BvcnRpb25zOmZ1bmN0aW9uKCl7
dGhpcy5oZWxwZXJQcm9wb3J0aW9ucz0KLXt3aWR0aDp0aGlzLmhlbHBlci5vdXRlcldpZHRoKCks
aGVpZ2h0OnRoaXMuaGVscGVyLm91dGVySGVpZ2h0KCl9fSxfc2V0Q29udGFpbm1lbnQ6ZnVuY3Rp
b24oKXt2YXIgYT10aGlzLm9wdGlvbnM7aWYoYS5jb250YWlubWVudD09InBhcmVudCIpYS5jb250
YWlubWVudD10aGlzLmhlbHBlclswXS5wYXJlbnROb2RlO2lmKGEuY29udGFpbm1lbnQ9PSJkb2N1
bWVudCJ8fGEuY29udGFpbm1lbnQ9PSJ3aW5kb3ciKXRoaXMuY29udGFpbm1lbnQ9WzAtdGhpcy5v
ZmZzZXQucmVsYXRpdmUubGVmdC10aGlzLm9mZnNldC5wYXJlbnQubGVmdCwwLXRoaXMub2Zmc2V0
LnJlbGF0aXZlLnRvcC10aGlzLm9mZnNldC5wYXJlbnQudG9wLGQoYS5jb250YWlubWVudD09ImRv
Y3VtZW50Ij9kb2N1bWVudDp3aW5kb3cpLndpZHRoKCktdGhpcy5oZWxwZXJQcm9wb3J0aW9ucy53
aWR0aC10aGlzLm1hcmdpbnMubGVmdCwoZChhLmNvbnRhaW5tZW50PT0iZG9jdW1lbnQiP2RvY3Vt
ZW50OndpbmRvdykuaGVpZ2h0KCl8fAotZG9jdW1lbnQuYm9keS5wYXJlbnROb2RlLnNjcm9sbEhl
aWdodCktdGhpcy5oZWxwZXJQcm9wb3J0aW9ucy5oZWlnaHQtdGhpcy5tYXJnaW5zLnRvcF07aWYo
IS9eKGRvY3VtZW50fHdpbmRvd3xwYXJlbnQpJC8udGVzdChhLmNvbnRhaW5tZW50KSl7dmFyIGI9
ZChhLmNvbnRhaW5tZW50KVswXTthPWQoYS5jb250YWlubWVudCkub2Zmc2V0KCk7dmFyIGM9ZChi
KS5jc3MoIm92ZXJmbG93IikhPSJoaWRkZW4iO3RoaXMuY29udGFpbm1lbnQ9W2EubGVmdCsocGFy
c2VJbnQoZChiKS5jc3MoImJvcmRlckxlZnRXaWR0aCIpLDEwKXx8MCkrKHBhcnNlSW50KGQoYiku
Y3NzKCJwYWRkaW5nTGVmdCIpLDEwKXx8MCktdGhpcy5tYXJnaW5zLmxlZnQsYS50b3ArKHBhcnNl
SW50KGQoYikuY3NzKCJib3JkZXJUb3BXaWR0aCIpLDEwKXx8MCkrKHBhcnNlSW50KGQoYikuY3Nz
KCJwYWRkaW5nVG9wIiksMTApfHwwKS10aGlzLm1hcmdpbnMudG9wLGEubGVmdCsoYz9NYXRoLm1h
eChiLnNjcm9sbFdpZHRoLAotYi5vZmZzZXRXaWR0aCk6Yi5vZmZzZXRXaWR0aCktKHBhcnNlSW50
KGQoYikuY3NzKCJib3JkZXJMZWZ0V2lkdGgiKSwxMCl8fDApLShwYXJzZUludChkKGIpLmNzcygi
cGFkZGluZ1JpZ2h0IiksMTApfHwwKS10aGlzLmhlbHBlclByb3BvcnRpb25zLndpZHRoLXRoaXMu
bWFyZ2lucy5sZWZ0LGEudG9wKyhjP01hdGgubWF4KGIuc2Nyb2xsSGVpZ2h0LGIub2Zmc2V0SGVp
Z2h0KTpiLm9mZnNldEhlaWdodCktKHBhcnNlSW50KGQoYikuY3NzKCJib3JkZXJUb3BXaWR0aCIp
LDEwKXx8MCktKHBhcnNlSW50KGQoYikuY3NzKCJwYWRkaW5nQm90dG9tIiksMTApfHwwKS10aGlz
LmhlbHBlclByb3BvcnRpb25zLmhlaWdodC10aGlzLm1hcmdpbnMudG9wXX19LF9jb252ZXJ0UG9z
aXRpb25UbzpmdW5jdGlvbihhLGIpe2lmKCFiKWI9dGhpcy5wb3NpdGlvbjthPWE9PSJhYnNvbHV0
ZSI/MTotMTt2YXIgYz10aGlzLmNzc1Bvc2l0aW9uPT0iYWJzb2x1dGUiJiYhKHRoaXMuc2Nyb2xs
UGFyZW50WzBdIT0KLWRvY3VtZW50JiZkLnVpLmNvbnRhaW5zKHRoaXMuc2Nyb2xsUGFyZW50WzBd
LHRoaXMub2Zmc2V0UGFyZW50WzBdKSk/dGhpcy5vZmZzZXRQYXJlbnQ6dGhpcy5zY3JvbGxQYXJl
bnQsZT0vKGh0bWx8Ym9keSkvaS50ZXN0KGNbMF0udGFnTmFtZSk7cmV0dXJue3RvcDpiLnRvcCt0
aGlzLm9mZnNldC5yZWxhdGl2ZS50b3AqYSt0aGlzLm9mZnNldC5wYXJlbnQudG9wKmEtKGQuYnJv
d3Nlci5zYWZhcmkmJnRoaXMuY3NzUG9zaXRpb249PSJmaXhlZCI/MDoodGhpcy5jc3NQb3NpdGlv
bj09ImZpeGVkIj8tdGhpcy5zY3JvbGxQYXJlbnQuc2Nyb2xsVG9wKCk6ZT8wOmMuc2Nyb2xsVG9w
KCkpKmEpLGxlZnQ6Yi5sZWZ0K3RoaXMub2Zmc2V0LnJlbGF0aXZlLmxlZnQqYSt0aGlzLm9mZnNl
dC5wYXJlbnQubGVmdCphLShkLmJyb3dzZXIuc2FmYXJpJiZ0aGlzLmNzc1Bvc2l0aW9uPT0iZml4
ZWQiPzA6KHRoaXMuY3NzUG9zaXRpb249PSJmaXhlZCI/LXRoaXMuc2Nyb2xsUGFyZW50LnNjcm9s
bExlZnQoKToKLWU/MDpjLnNjcm9sbExlZnQoKSkqYSl9fSxfZ2VuZXJhdGVQb3NpdGlvbjpmdW5j
dGlvbihhKXt2YXIgYj10aGlzLm9wdGlvbnMsYz10aGlzLmNzc1Bvc2l0aW9uPT0iYWJzb2x1dGUi
JiYhKHRoaXMuc2Nyb2xsUGFyZW50WzBdIT1kb2N1bWVudCYmZC51aS5jb250YWlucyh0aGlzLnNj
cm9sbFBhcmVudFswXSx0aGlzLm9mZnNldFBhcmVudFswXSkpP3RoaXMub2Zmc2V0UGFyZW50OnRo
aXMuc2Nyb2xsUGFyZW50LGU9LyhodG1sfGJvZHkpL2kudGVzdChjWzBdLnRhZ05hbWUpO2lmKHRo
aXMuY3NzUG9zaXRpb249PSJyZWxhdGl2ZSImJiEodGhpcy5zY3JvbGxQYXJlbnRbMF0hPWRvY3Vt
ZW50JiZ0aGlzLnNjcm9sbFBhcmVudFswXSE9dGhpcy5vZmZzZXRQYXJlbnRbMF0pKXRoaXMub2Zm
c2V0LnJlbGF0aXZlPXRoaXMuX2dldFJlbGF0aXZlT2Zmc2V0KCk7dmFyIGY9YS5wYWdlWCxnPWEu
cGFnZVk7aWYodGhpcy5vcmlnaW5hbFBvc2l0aW9uKXtpZih0aGlzLmNvbnRhaW5tZW50KXtpZihh
LnBhZ2VYLQotdGhpcy5vZmZzZXQuY2xpY2subGVmdDx0aGlzLmNvbnRhaW5tZW50WzBdKWY9dGhp
cy5jb250YWlubWVudFswXSt0aGlzLm9mZnNldC5jbGljay5sZWZ0O2lmKGEucGFnZVktdGhpcy5v
ZmZzZXQuY2xpY2sudG9wPHRoaXMuY29udGFpbm1lbnRbMV0pZz10aGlzLmNvbnRhaW5tZW50WzFd
K3RoaXMub2Zmc2V0LmNsaWNrLnRvcDtpZihhLnBhZ2VYLXRoaXMub2Zmc2V0LmNsaWNrLmxlZnQ+
dGhpcy5jb250YWlubWVudFsyXSlmPXRoaXMuY29udGFpbm1lbnRbMl0rdGhpcy5vZmZzZXQuY2xp
Y2subGVmdDtpZihhLnBhZ2VZLXRoaXMub2Zmc2V0LmNsaWNrLnRvcD50aGlzLmNvbnRhaW5tZW50
WzNdKWc9dGhpcy5jb250YWlubWVudFszXSt0aGlzLm9mZnNldC5jbGljay50b3B9aWYoYi5ncmlk
KXtnPXRoaXMub3JpZ2luYWxQYWdlWStNYXRoLnJvdW5kKChnLXRoaXMub3JpZ2luYWxQYWdlWSkv
Yi5ncmlkWzFdKSpiLmdyaWRbMV07Zz10aGlzLmNvbnRhaW5tZW50PyEoZy10aGlzLm9mZnNldC5j
bGljay50b3A8Ci10aGlzLmNvbnRhaW5tZW50WzFdfHxnLXRoaXMub2Zmc2V0LmNsaWNrLnRvcD50
aGlzLmNvbnRhaW5tZW50WzNdKT9nOiEoZy10aGlzLm9mZnNldC5jbGljay50b3A8dGhpcy5jb250
YWlubWVudFsxXSk/Zy1iLmdyaWRbMV06ZytiLmdyaWRbMV06ZztmPXRoaXMub3JpZ2luYWxQYWdl
WCtNYXRoLnJvdW5kKChmLXRoaXMub3JpZ2luYWxQYWdlWCkvYi5ncmlkWzBdKSpiLmdyaWRbMF07
Zj10aGlzLmNvbnRhaW5tZW50PyEoZi10aGlzLm9mZnNldC5jbGljay5sZWZ0PHRoaXMuY29udGFp
bm1lbnRbMF18fGYtdGhpcy5vZmZzZXQuY2xpY2subGVmdD50aGlzLmNvbnRhaW5tZW50WzJdKT9m
OiEoZi10aGlzLm9mZnNldC5jbGljay5sZWZ0PHRoaXMuY29udGFpbm1lbnRbMF0pP2YtYi5ncmlk
WzBdOmYrYi5ncmlkWzBdOmZ9fXJldHVybnt0b3A6Zy10aGlzLm9mZnNldC5jbGljay50b3AtdGhp
cy5vZmZzZXQucmVsYXRpdmUudG9wLXRoaXMub2Zmc2V0LnBhcmVudC50b3ArKGQuYnJvd3Nlci5z
YWZhcmkmJgotdGhpcy5jc3NQb3NpdGlvbj09ImZpeGVkIj8wOnRoaXMuY3NzUG9zaXRpb249PSJm
aXhlZCI/LXRoaXMuc2Nyb2xsUGFyZW50LnNjcm9sbFRvcCgpOmU/MDpjLnNjcm9sbFRvcCgpKSxs
ZWZ0OmYtdGhpcy5vZmZzZXQuY2xpY2subGVmdC10aGlzLm9mZnNldC5yZWxhdGl2ZS5sZWZ0LXRo
aXMub2Zmc2V0LnBhcmVudC5sZWZ0KyhkLmJyb3dzZXIuc2FmYXJpJiZ0aGlzLmNzc1Bvc2l0aW9u
PT0iZml4ZWQiPzA6dGhpcy5jc3NQb3NpdGlvbj09ImZpeGVkIj8tdGhpcy5zY3JvbGxQYXJlbnQu
c2Nyb2xsTGVmdCgpOmU/MDpjLnNjcm9sbExlZnQoKSl9fSxfcmVhcnJhbmdlOmZ1bmN0aW9uKGEs
YixjLGUpe2M/Y1swXS5hcHBlbmRDaGlsZCh0aGlzLnBsYWNlaG9sZGVyWzBdKTpiLml0ZW1bMF0u
cGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodGhpcy5wbGFjZWhvbGRlclswXSx0aGlzLmRpcmVjdGlv
bj09ImRvd24iP2IuaXRlbVswXTpiLml0ZW1bMF0ubmV4dFNpYmxpbmcpO3RoaXMuY291bnRlcj0K
LXRoaXMuY291bnRlcj8rK3RoaXMuY291bnRlcjoxO3ZhciBmPXRoaXMsZz10aGlzLmNvdW50ZXI7
d2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKXtnPT1mLmNvdW50ZXImJmYucmVmcmVzaFBvc2l0
aW9ucyghZSl9LDApfSxfY2xlYXI6ZnVuY3Rpb24oYSxiKXt0aGlzLnJldmVydGluZz1mYWxzZTt2
YXIgYz1bXTshdGhpcy5fbm9GaW5hbFNvcnQmJnRoaXMuY3VycmVudEl0ZW1bMF0ucGFyZW50Tm9k
ZSYmdGhpcy5wbGFjZWhvbGRlci5iZWZvcmUodGhpcy5jdXJyZW50SXRlbSk7dGhpcy5fbm9GaW5h
bFNvcnQ9bnVsbDtpZih0aGlzLmhlbHBlclswXT09dGhpcy5jdXJyZW50SXRlbVswXSl7Zm9yKHZh
ciBlIGluIHRoaXMuX3N0b3JlZENTUylpZih0aGlzLl9zdG9yZWRDU1NbZV09PSJhdXRvInx8dGhp
cy5fc3RvcmVkQ1NTW2VdPT0ic3RhdGljIil0aGlzLl9zdG9yZWRDU1NbZV09IiI7dGhpcy5jdXJy
ZW50SXRlbS5jc3ModGhpcy5fc3RvcmVkQ1NTKS5yZW1vdmVDbGFzcygidWktc29ydGFibGUtaGVs
cGVyIil9ZWxzZSB0aGlzLmN1cnJlbnRJdGVtLnNob3coKTsKLXRoaXMuZnJvbU91dHNpZGUmJiFi
JiZjLnB1c2goZnVuY3Rpb24oZil7dGhpcy5fdHJpZ2dlcigicmVjZWl2ZSIsZix0aGlzLl91aUhh
c2godGhpcy5mcm9tT3V0c2lkZSkpfSk7aWYoKHRoaXMuZnJvbU91dHNpZGV8fHRoaXMuZG9tUG9z
aXRpb24ucHJldiE9dGhpcy5jdXJyZW50SXRlbS5wcmV2KCkubm90KCIudWktc29ydGFibGUtaGVs
cGVyIilbMF18fHRoaXMuZG9tUG9zaXRpb24ucGFyZW50IT10aGlzLmN1cnJlbnRJdGVtLnBhcmVu
dCgpWzBdKSYmIWIpYy5wdXNoKGZ1bmN0aW9uKGYpe3RoaXMuX3RyaWdnZXIoInVwZGF0ZSIsZix0
aGlzLl91aUhhc2goKSl9KTtpZighZC51aS5jb250YWlucyh0aGlzLmVsZW1lbnRbMF0sdGhpcy5j
dXJyZW50SXRlbVswXSkpe2J8fGMucHVzaChmdW5jdGlvbihmKXt0aGlzLl90cmlnZ2VyKCJyZW1v
dmUiLGYsdGhpcy5fdWlIYXNoKCkpfSk7Zm9yKGU9dGhpcy5jb250YWluZXJzLmxlbmd0aC0xO2U+
PTA7ZS0tKWlmKGQudWkuY29udGFpbnModGhpcy5jb250YWluZXJzW2VdLmVsZW1lbnRbMF0sCi10
aGlzLmN1cnJlbnRJdGVtWzBdKSYmIWIpe2MucHVzaChmdW5jdGlvbihmKXtyZXR1cm4gZnVuY3Rp
b24oZyl7Zi5fdHJpZ2dlcigicmVjZWl2ZSIsZyx0aGlzLl91aUhhc2godGhpcykpfX0uY2FsbCh0
aGlzLHRoaXMuY29udGFpbmVyc1tlXSkpO2MucHVzaChmdW5jdGlvbihmKXtyZXR1cm4gZnVuY3Rp
b24oZyl7Zi5fdHJpZ2dlcigidXBkYXRlIixnLHRoaXMuX3VpSGFzaCh0aGlzKSl9fS5jYWxsKHRo
aXMsdGhpcy5jb250YWluZXJzW2VdKSl9fWZvcihlPXRoaXMuY29udGFpbmVycy5sZW5ndGgtMTtl
Pj0wO2UtLSl7Ynx8Yy5wdXNoKGZ1bmN0aW9uKGYpe3JldHVybiBmdW5jdGlvbihnKXtmLl90cmln
Z2VyKCJkZWFjdGl2YXRlIixnLHRoaXMuX3VpSGFzaCh0aGlzKSl9fS5jYWxsKHRoaXMsdGhpcy5j
b250YWluZXJzW2VdKSk7aWYodGhpcy5jb250YWluZXJzW2VdLmNvbnRhaW5lckNhY2hlLm92ZXIp
e2MucHVzaChmdW5jdGlvbihmKXtyZXR1cm4gZnVuY3Rpb24oZyl7Zi5fdHJpZ2dlcigib3V0IiwK
LWcsdGhpcy5fdWlIYXNoKHRoaXMpKX19LmNhbGwodGhpcyx0aGlzLmNvbnRhaW5lcnNbZV0pKTt0
aGlzLmNvbnRhaW5lcnNbZV0uY29udGFpbmVyQ2FjaGUub3Zlcj0wfX10aGlzLl9zdG9yZWRDdXJz
b3ImJmQoImJvZHkiKS5jc3MoImN1cnNvciIsdGhpcy5fc3RvcmVkQ3Vyc29yKTt0aGlzLl9zdG9y
ZWRPcGFjaXR5JiZ0aGlzLmhlbHBlci5jc3MoIm9wYWNpdHkiLHRoaXMuX3N0b3JlZE9wYWNpdHkp
O2lmKHRoaXMuX3N0b3JlZFpJbmRleCl0aGlzLmhlbHBlci5jc3MoInpJbmRleCIsdGhpcy5fc3Rv
cmVkWkluZGV4PT0iYXV0byI/IiI6dGhpcy5fc3RvcmVkWkluZGV4KTt0aGlzLmRyYWdnaW5nPWZh
bHNlO2lmKHRoaXMuY2FuY2VsSGVscGVyUmVtb3ZhbCl7aWYoIWIpe3RoaXMuX3RyaWdnZXIoImJl
Zm9yZVN0b3AiLGEsdGhpcy5fdWlIYXNoKCkpO2ZvcihlPTA7ZTxjLmxlbmd0aDtlKyspY1tlXS5j
YWxsKHRoaXMsYSk7dGhpcy5fdHJpZ2dlcigic3RvcCIsYSx0aGlzLl91aUhhc2goKSl9cmV0dXJu
IGZhbHNlfWJ8fAotdGhpcy5fdHJpZ2dlcigiYmVmb3JlU3RvcCIsYSx0aGlzLl91aUhhc2goKSk7
dGhpcy5wbGFjZWhvbGRlclswXS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMucGxhY2Vob2xk
ZXJbMF0pO3RoaXMuaGVscGVyWzBdIT10aGlzLmN1cnJlbnRJdGVtWzBdJiZ0aGlzLmhlbHBlci5y
ZW1vdmUoKTt0aGlzLmhlbHBlcj1udWxsO2lmKCFiKXtmb3IoZT0wO2U8Yy5sZW5ndGg7ZSsrKWNb
ZV0uY2FsbCh0aGlzLGEpO3RoaXMuX3RyaWdnZXIoInN0b3AiLGEsdGhpcy5fdWlIYXNoKCkpfXRo
aXMuZnJvbU91dHNpZGU9ZmFsc2U7cmV0dXJuIHRydWV9LF90cmlnZ2VyOmZ1bmN0aW9uKCl7ZC5X
aWRnZXQucHJvdG90eXBlLl90cmlnZ2VyLmFwcGx5KHRoaXMsYXJndW1lbnRzKT09PWZhbHNlJiZ0
aGlzLmNhbmNlbCgpfSxfdWlIYXNoOmZ1bmN0aW9uKGEpe3ZhciBiPWF8fHRoaXM7cmV0dXJue2hl
bHBlcjpiLmhlbHBlcixwbGFjZWhvbGRlcjpiLnBsYWNlaG9sZGVyfHxkKFtdKSxwb3NpdGlvbjpi
LnBvc2l0aW9uLAotb3JpZ2luYWxQb3NpdGlvbjpiLm9yaWdpbmFsUG9zaXRpb24sb2Zmc2V0OmIu
cG9zaXRpb25BYnMsaXRlbTpiLmN1cnJlbnRJdGVtLHNlbmRlcjphP2EuZWxlbWVudDpudWxsfX19
KTtkLmV4dGVuZChkLnVpLnNvcnRhYmxlLHt2ZXJzaW9uOiIxLjguMTAifSl9KShqUXVlcnkpOwot
Oy8qCi0gKiBqUXVlcnkgVUkgQWNjb3JkaW9uIDEuOC4xMAotICoKLSAqIENvcHlyaWdodCAyMDEx
LCBBVVRIT1JTLnR4dCAoaHR0cDovL2pxdWVyeXVpLmNvbS9hYm91dCkKLSAqIER1YWwgbGljZW5z
ZWQgdW5kZXIgdGhlIE1JVCBvciBHUEwgVmVyc2lvbiAyIGxpY2Vuc2VzLgotICogaHR0cDovL2px
dWVyeS5vcmcvbGljZW5zZQotICoKLSAqIGh0dHA6Ly9kb2NzLmpxdWVyeS5jb20vVUkvQWNjb3Jk
aW9uCi0gKgotICogRGVwZW5kczoKLSAqCWpxdWVyeS51aS5jb3JlLmpzCi0gKglqcXVlcnkudWku
d2lkZ2V0LmpzCi0gKi8KLShmdW5jdGlvbihjKXtjLndpZGdldCgidWkuYWNjb3JkaW9uIix7b3B0
aW9uczp7YWN0aXZlOjAsYW5pbWF0ZWQ6InNsaWRlIixhdXRvSGVpZ2h0OnRydWUsY2xlYXJTdHls
ZTpmYWxzZSxjb2xsYXBzaWJsZTpmYWxzZSxldmVudDoiY2xpY2siLGZpbGxTcGFjZTpmYWxzZSxo
ZWFkZXI6Ij4gbGkgPiA6Zmlyc3QtY2hpbGQsPiA6bm90KGxpKTpldmVuIixpY29uczp7aGVhZGVy
OiJ1aS1pY29uLXRyaWFuZ2xlLTEtZSIsaGVhZGVyU2VsZWN0ZWQ6InVpLWljb24tdHJpYW5nbGUt
MS1zIn0sbmF2aWdhdGlvbjpmYWxzZSxuYXZpZ2F0aW9uRmlsdGVyOmZ1bmN0aW9uKCl7cmV0dXJu
IHRoaXMuaHJlZi50b0xvd2VyQ2FzZSgpPT09bG9jYXRpb24uaHJlZi50b0xvd2VyQ2FzZSgpfX0s
X2NyZWF0ZTpmdW5jdGlvbigpe3ZhciBhPXRoaXMsYj1hLm9wdGlvbnM7YS5ydW5uaW5nPTA7YS5l
bGVtZW50LmFkZENsYXNzKCJ1aS1hY2NvcmRpb24gdWktd2lkZ2V0IHVpLWhlbHBlci1yZXNldCIp
LmNoaWxkcmVuKCJsaSIpLmFkZENsYXNzKCJ1aS1hY2NvcmRpb24tbGktZml4Iik7Ci1hLmhlYWRl
cnM9YS5lbGVtZW50LmZpbmQoYi5oZWFkZXIpLmFkZENsYXNzKCJ1aS1hY2NvcmRpb24taGVhZGVy
IHVpLWhlbHBlci1yZXNldCB1aS1zdGF0ZS1kZWZhdWx0IHVpLWNvcm5lci1hbGwiKS5iaW5kKCJt
b3VzZWVudGVyLmFjY29yZGlvbiIsZnVuY3Rpb24oKXtiLmRpc2FibGVkfHxjKHRoaXMpLmFkZENs
YXNzKCJ1aS1zdGF0ZS1ob3ZlciIpfSkuYmluZCgibW91c2VsZWF2ZS5hY2NvcmRpb24iLGZ1bmN0
aW9uKCl7Yi5kaXNhYmxlZHx8Yyh0aGlzKS5yZW1vdmVDbGFzcygidWktc3RhdGUtaG92ZXIiKX0p
LmJpbmQoImZvY3VzLmFjY29yZGlvbiIsZnVuY3Rpb24oKXtiLmRpc2FibGVkfHxjKHRoaXMpLmFk
ZENsYXNzKCJ1aS1zdGF0ZS1mb2N1cyIpfSkuYmluZCgiYmx1ci5hY2NvcmRpb24iLGZ1bmN0aW9u
KCl7Yi5kaXNhYmxlZHx8Yyh0aGlzKS5yZW1vdmVDbGFzcygidWktc3RhdGUtZm9jdXMiKX0pO2Eu
aGVhZGVycy5uZXh0KCkuYWRkQ2xhc3MoInVpLWFjY29yZGlvbi1jb250ZW50IHVpLWhlbHBlci1y
ZXNldCB1aS13aWRnZXQtY29udGVudCB1aS1jb3JuZXItYm90dG9tIik7Ci1pZihiLm5hdmlnYXRp
b24pe3ZhciBkPWEuZWxlbWVudC5maW5kKCJhIikuZmlsdGVyKGIubmF2aWdhdGlvbkZpbHRlciku
ZXEoMCk7aWYoZC5sZW5ndGgpe3ZhciBoPWQuY2xvc2VzdCgiLnVpLWFjY29yZGlvbi1oZWFkZXIi
KTthLmFjdGl2ZT1oLmxlbmd0aD9oOmQuY2xvc2VzdCgiLnVpLWFjY29yZGlvbi1jb250ZW50Iiku
cHJldigpfX1hLmFjdGl2ZT1hLl9maW5kQWN0aXZlKGEuYWN0aXZlfHxiLmFjdGl2ZSkuYWRkQ2xh
c3MoInVpLXN0YXRlLWRlZmF1bHQgdWktc3RhdGUtYWN0aXZlIikudG9nZ2xlQ2xhc3MoInVpLWNv
cm5lci1hbGwiKS50b2dnbGVDbGFzcygidWktY29ybmVyLXRvcCIpO2EuYWN0aXZlLm5leHQoKS5h
ZGRDbGFzcygidWktYWNjb3JkaW9uLWNvbnRlbnQtYWN0aXZlIik7YS5fY3JlYXRlSWNvbnMoKTth
LnJlc2l6ZSgpO2EuZWxlbWVudC5hdHRyKCJyb2xlIiwidGFibGlzdCIpO2EuaGVhZGVycy5hdHRy
KCJyb2xlIiwidGFiIikuYmluZCgia2V5ZG93bi5hY2NvcmRpb24iLAotZnVuY3Rpb24oZil7cmV0
dXJuIGEuX2tleWRvd24oZil9KS5uZXh0KCkuYXR0cigicm9sZSIsInRhYnBhbmVsIik7YS5oZWFk
ZXJzLm5vdChhLmFjdGl2ZXx8IiIpLmF0dHIoeyJhcmlhLWV4cGFuZGVkIjoiZmFsc2UiLHRhYklu
ZGV4Oi0xfSkubmV4dCgpLmhpZGUoKTthLmFjdGl2ZS5sZW5ndGg/YS5hY3RpdmUuYXR0cih7ImFy
aWEtZXhwYW5kZWQiOiJ0cnVlIix0YWJJbmRleDowfSk6YS5oZWFkZXJzLmVxKDApLmF0dHIoInRh
YkluZGV4IiwwKTtjLmJyb3dzZXIuc2FmYXJpfHxhLmhlYWRlcnMuZmluZCgiYSIpLmF0dHIoInRh
YkluZGV4IiwtMSk7Yi5ldmVudCYmYS5oZWFkZXJzLmJpbmQoYi5ldmVudC5zcGxpdCgiICIpLmpv
aW4oIi5hY2NvcmRpb24gIikrIi5hY2NvcmRpb24iLGZ1bmN0aW9uKGYpe2EuX2NsaWNrSGFuZGxl
ci5jYWxsKGEsZix0aGlzKTtmLnByZXZlbnREZWZhdWx0KCl9KX0sX2NyZWF0ZUljb25zOmZ1bmN0
aW9uKCl7dmFyIGE9dGhpcy5vcHRpb25zO2lmKGEuaWNvbnMpe2MoIjxzcGFuPjwvc3Bhbj4iKS5h
ZGRDbGFzcygidWktaWNvbiAiKwotYS5pY29ucy5oZWFkZXIpLnByZXBlbmRUbyh0aGlzLmhlYWRl
cnMpO3RoaXMuYWN0aXZlLmNoaWxkcmVuKCIudWktaWNvbiIpLnRvZ2dsZUNsYXNzKGEuaWNvbnMu
aGVhZGVyKS50b2dnbGVDbGFzcyhhLmljb25zLmhlYWRlclNlbGVjdGVkKTt0aGlzLmVsZW1lbnQu
YWRkQ2xhc3MoInVpLWFjY29yZGlvbi1pY29ucyIpfX0sX2Rlc3Ryb3lJY29uczpmdW5jdGlvbigp
e3RoaXMuaGVhZGVycy5jaGlsZHJlbigiLnVpLWljb24iKS5yZW1vdmUoKTt0aGlzLmVsZW1lbnQu
cmVtb3ZlQ2xhc3MoInVpLWFjY29yZGlvbi1pY29ucyIpfSxkZXN0cm95OmZ1bmN0aW9uKCl7dmFy
IGE9dGhpcy5vcHRpb25zO3RoaXMuZWxlbWVudC5yZW1vdmVDbGFzcygidWktYWNjb3JkaW9uIHVp
LXdpZGdldCB1aS1oZWxwZXItcmVzZXQiKS5yZW1vdmVBdHRyKCJyb2xlIik7dGhpcy5oZWFkZXJz
LnVuYmluZCgiLmFjY29yZGlvbiIpLnJlbW92ZUNsYXNzKCJ1aS1hY2NvcmRpb24taGVhZGVyIHVp
LWFjY29yZGlvbi1kaXNhYmxlZCB1aS1oZWxwZXItcmVzZXQgdWktc3RhdGUtZGVmYXVsdCB1aS1j
b3JuZXItYWxsIHVpLXN0YXRlLWFjdGl2ZSB1aS1zdGF0ZS1kaXNhYmxlZCB1aS1jb3JuZXItdG9w
IikucmVtb3ZlQXR0cigicm9sZSIpLnJlbW92ZUF0dHIoImFyaWEtZXhwYW5kZWQiKS5yZW1vdmVB
dHRyKCJ0YWJJbmRleCIpOwotdGhpcy5oZWFkZXJzLmZpbmQoImEiKS5yZW1vdmVBdHRyKCJ0YWJJ
bmRleCIpO3RoaXMuX2Rlc3Ryb3lJY29ucygpO3ZhciBiPXRoaXMuaGVhZGVycy5uZXh0KCkuY3Nz
KCJkaXNwbGF5IiwiIikucmVtb3ZlQXR0cigicm9sZSIpLnJlbW92ZUNsYXNzKCJ1aS1oZWxwZXIt
cmVzZXQgdWktd2lkZ2V0LWNvbnRlbnQgdWktY29ybmVyLWJvdHRvbSB1aS1hY2NvcmRpb24tY29u
dGVudCB1aS1hY2NvcmRpb24tY29udGVudC1hY3RpdmUgdWktYWNjb3JkaW9uLWRpc2FibGVkIHVp
LXN0YXRlLWRpc2FibGVkIik7aWYoYS5hdXRvSGVpZ2h0fHxhLmZpbGxIZWlnaHQpYi5jc3MoImhl
aWdodCIsIiIpO3JldHVybiBjLldpZGdldC5wcm90b3R5cGUuZGVzdHJveS5jYWxsKHRoaXMpfSxf
c2V0T3B0aW9uOmZ1bmN0aW9uKGEsYil7Yy5XaWRnZXQucHJvdG90eXBlLl9zZXRPcHRpb24uYXBw
bHkodGhpcyxhcmd1bWVudHMpO2E9PSJhY3RpdmUiJiZ0aGlzLmFjdGl2YXRlKGIpO2lmKGE9PSJp
Y29ucyIpe3RoaXMuX2Rlc3Ryb3lJY29ucygpOwotYiYmdGhpcy5fY3JlYXRlSWNvbnMoKX1pZihh
PT0iZGlzYWJsZWQiKXRoaXMuaGVhZGVycy5hZGQodGhpcy5oZWFkZXJzLm5leHQoKSlbYj8iYWRk
Q2xhc3MiOiJyZW1vdmVDbGFzcyJdKCJ1aS1hY2NvcmRpb24tZGlzYWJsZWQgdWktc3RhdGUtZGlz
YWJsZWQiKX0sX2tleWRvd246ZnVuY3Rpb24oYSl7aWYoISh0aGlzLm9wdGlvbnMuZGlzYWJsZWR8
fGEuYWx0S2V5fHxhLmN0cmxLZXkpKXt2YXIgYj1jLnVpLmtleUNvZGUsZD10aGlzLmhlYWRlcnMu
bGVuZ3RoLGg9dGhpcy5oZWFkZXJzLmluZGV4KGEudGFyZ2V0KSxmPWZhbHNlO3N3aXRjaChhLmtl
eUNvZGUpe2Nhc2UgYi5SSUdIVDpjYXNlIGIuRE9XTjpmPXRoaXMuaGVhZGVyc1soaCsxKSVkXTti
cmVhaztjYXNlIGIuTEVGVDpjYXNlIGIuVVA6Zj10aGlzLmhlYWRlcnNbKGgtMStkKSVkXTticmVh
aztjYXNlIGIuU1BBQ0U6Y2FzZSBiLkVOVEVSOnRoaXMuX2NsaWNrSGFuZGxlcih7dGFyZ2V0OmEu
dGFyZ2V0fSxhLnRhcmdldCk7Ci1hLnByZXZlbnREZWZhdWx0KCl9aWYoZil7YyhhLnRhcmdldCku
YXR0cigidGFiSW5kZXgiLC0xKTtjKGYpLmF0dHIoInRhYkluZGV4IiwwKTtmLmZvY3VzKCk7cmV0
dXJuIGZhbHNlfXJldHVybiB0cnVlfX0scmVzaXplOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5vcHRp
b25zLGI7aWYoYS5maWxsU3BhY2Upe2lmKGMuYnJvd3Nlci5tc2llKXt2YXIgZD10aGlzLmVsZW1l
bnQucGFyZW50KCkuY3NzKCJvdmVyZmxvdyIpO3RoaXMuZWxlbWVudC5wYXJlbnQoKS5jc3MoIm92
ZXJmbG93IiwiaGlkZGVuIil9Yj10aGlzLmVsZW1lbnQucGFyZW50KCkuaGVpZ2h0KCk7Yy5icm93
c2VyLm1zaWUmJnRoaXMuZWxlbWVudC5wYXJlbnQoKS5jc3MoIm92ZXJmbG93IixkKTt0aGlzLmhl
YWRlcnMuZWFjaChmdW5jdGlvbigpe2ItPWModGhpcykub3V0ZXJIZWlnaHQodHJ1ZSl9KTt0aGlz
LmhlYWRlcnMubmV4dCgpLmVhY2goZnVuY3Rpb24oKXtjKHRoaXMpLmhlaWdodChNYXRoLm1heCgw
LGItYyh0aGlzKS5pbm5lckhlaWdodCgpKwotYyh0aGlzKS5oZWlnaHQoKSkpfSkuY3NzKCJvdmVy
ZmxvdyIsImF1dG8iKX1lbHNlIGlmKGEuYXV0b0hlaWdodCl7Yj0wO3RoaXMuaGVhZGVycy5uZXh0
KCkuZWFjaChmdW5jdGlvbigpe2I9TWF0aC5tYXgoYixjKHRoaXMpLmhlaWdodCgiIikuaGVpZ2h0
KCkpfSkuaGVpZ2h0KGIpfXJldHVybiB0aGlzfSxhY3RpdmF0ZTpmdW5jdGlvbihhKXt0aGlzLm9w
dGlvbnMuYWN0aXZlPWE7YT10aGlzLl9maW5kQWN0aXZlKGEpWzBdO3RoaXMuX2NsaWNrSGFuZGxl
cih7dGFyZ2V0OmF9LGEpO3JldHVybiB0aGlzfSxfZmluZEFjdGl2ZTpmdW5jdGlvbihhKXtyZXR1
cm4gYT90eXBlb2YgYT09PSJudW1iZXIiP3RoaXMuaGVhZGVycy5maWx0ZXIoIjplcSgiK2ErIiki
KTp0aGlzLmhlYWRlcnMubm90KHRoaXMuaGVhZGVycy5ub3QoYSkpOmE9PT1mYWxzZT9jKFtdKTp0
aGlzLmhlYWRlcnMuZmlsdGVyKCI6ZXEoMCkiKX0sX2NsaWNrSGFuZGxlcjpmdW5jdGlvbihhLGIp
e3ZhciBkPXRoaXMub3B0aW9uczsKLWlmKCFkLmRpc2FibGVkKWlmKGEudGFyZ2V0KXthPWMoYS5j
dXJyZW50VGFyZ2V0fHxiKTtiPWFbMF09PT10aGlzLmFjdGl2ZVswXTtkLmFjdGl2ZT1kLmNvbGxh
cHNpYmxlJiZiP2ZhbHNlOnRoaXMuaGVhZGVycy5pbmRleChhKTtpZighKHRoaXMucnVubmluZ3x8
IWQuY29sbGFwc2libGUmJmIpKXt2YXIgaD10aGlzLmFjdGl2ZTtqPWEubmV4dCgpO2c9dGhpcy5h
Y3RpdmUubmV4dCgpO2U9e29wdGlvbnM6ZCxuZXdIZWFkZXI6YiYmZC5jb2xsYXBzaWJsZT9jKFtd
KTphLG9sZEhlYWRlcjp0aGlzLmFjdGl2ZSxuZXdDb250ZW50OmImJmQuY29sbGFwc2libGU/Yyhb
XSk6aixvbGRDb250ZW50Omd9O3ZhciBmPXRoaXMuaGVhZGVycy5pbmRleCh0aGlzLmFjdGl2ZVsw
XSk+dGhpcy5oZWFkZXJzLmluZGV4KGFbMF0pO3RoaXMuYWN0aXZlPWI/YyhbXSk6YTt0aGlzLl90
b2dnbGUoaixnLGUsYixmKTtoLnJlbW92ZUNsYXNzKCJ1aS1zdGF0ZS1hY3RpdmUgdWktY29ybmVy
LXRvcCIpLmFkZENsYXNzKCJ1aS1zdGF0ZS1kZWZhdWx0IHVpLWNvcm5lci1hbGwiKS5jaGlsZHJl
bigiLnVpLWljb24iKS5yZW1vdmVDbGFzcyhkLmljb25zLmhlYWRlclNlbGVjdGVkKS5hZGRDbGFz
cyhkLmljb25zLmhlYWRlcik7Ci1pZighYil7YS5yZW1vdmVDbGFzcygidWktc3RhdGUtZGVmYXVs
dCB1aS1jb3JuZXItYWxsIikuYWRkQ2xhc3MoInVpLXN0YXRlLWFjdGl2ZSB1aS1jb3JuZXItdG9w
IikuY2hpbGRyZW4oIi51aS1pY29uIikucmVtb3ZlQ2xhc3MoZC5pY29ucy5oZWFkZXIpLmFkZENs
YXNzKGQuaWNvbnMuaGVhZGVyU2VsZWN0ZWQpO2EubmV4dCgpLmFkZENsYXNzKCJ1aS1hY2NvcmRp
b24tY29udGVudC1hY3RpdmUiKX19fWVsc2UgaWYoZC5jb2xsYXBzaWJsZSl7dGhpcy5hY3RpdmUu
cmVtb3ZlQ2xhc3MoInVpLXN0YXRlLWFjdGl2ZSB1aS1jb3JuZXItdG9wIikuYWRkQ2xhc3MoInVp
LXN0YXRlLWRlZmF1bHQgdWktY29ybmVyLWFsbCIpLmNoaWxkcmVuKCIudWktaWNvbiIpLnJlbW92
ZUNsYXNzKGQuaWNvbnMuaGVhZGVyU2VsZWN0ZWQpLmFkZENsYXNzKGQuaWNvbnMuaGVhZGVyKTt0
aGlzLmFjdGl2ZS5uZXh0KCkuYWRkQ2xhc3MoInVpLWFjY29yZGlvbi1jb250ZW50LWFjdGl2ZSIp
O3ZhciBnPXRoaXMuYWN0aXZlLm5leHQoKSwKLWU9e29wdGlvbnM6ZCxuZXdIZWFkZXI6YyhbXSks
b2xkSGVhZGVyOmQuYWN0aXZlLG5ld0NvbnRlbnQ6YyhbXSksb2xkQ29udGVudDpnfSxqPXRoaXMu
YWN0aXZlPWMoW10pO3RoaXMuX3RvZ2dsZShqLGcsZSl9fSxfdG9nZ2xlOmZ1bmN0aW9uKGEsYixk
LGgsZil7dmFyIGc9dGhpcyxlPWcub3B0aW9ucztnLnRvU2hvdz1hO2cudG9IaWRlPWI7Zy5kYXRh
PWQ7dmFyIGo9ZnVuY3Rpb24oKXtpZihnKXJldHVybiBnLl9jb21wbGV0ZWQuYXBwbHkoZyxhcmd1
bWVudHMpfTtnLl90cmlnZ2VyKCJjaGFuZ2VzdGFydCIsbnVsbCxnLmRhdGEpO2cucnVubmluZz1i
LnNpemUoKT09PTA/YS5zaXplKCk6Yi5zaXplKCk7aWYoZS5hbmltYXRlZCl7ZD17fTtkPWUuY29s
bGFwc2libGUmJmg/e3RvU2hvdzpjKFtdKSx0b0hpZGU6Yixjb21wbGV0ZTpqLGRvd246ZixhdXRv
SGVpZ2h0OmUuYXV0b0hlaWdodHx8ZS5maWxsU3BhY2V9Ont0b1Nob3c6YSx0b0hpZGU6Yixjb21w
bGV0ZTpqLGRvd246ZixhdXRvSGVpZ2h0OmUuYXV0b0hlaWdodHx8Ci1lLmZpbGxTcGFjZX07aWYo
IWUucHJveGllZCllLnByb3hpZWQ9ZS5hbmltYXRlZDtpZighZS5wcm94aWVkRHVyYXRpb24pZS5w
cm94aWVkRHVyYXRpb249ZS5kdXJhdGlvbjtlLmFuaW1hdGVkPWMuaXNGdW5jdGlvbihlLnByb3hp
ZWQpP2UucHJveGllZChkKTplLnByb3hpZWQ7ZS5kdXJhdGlvbj1jLmlzRnVuY3Rpb24oZS5wcm94
aWVkRHVyYXRpb24pP2UucHJveGllZER1cmF0aW9uKGQpOmUucHJveGllZER1cmF0aW9uO2g9Yy51
aS5hY2NvcmRpb24uYW5pbWF0aW9uczt2YXIgaT1lLmR1cmF0aW9uLGs9ZS5hbmltYXRlZDtpZihr
JiYhaFtrXSYmIWMuZWFzaW5nW2tdKWs9InNsaWRlIjtoW2tdfHwoaFtrXT1mdW5jdGlvbihsKXt0
aGlzLnNsaWRlKGwse2Vhc2luZzprLGR1cmF0aW9uOml8fDcwMH0pfSk7aFtrXShkKX1lbHNle2lm
KGUuY29sbGFwc2libGUmJmgpYS50b2dnbGUoKTtlbHNle2IuaGlkZSgpO2Euc2hvdygpfWoodHJ1
ZSl9Yi5wcmV2KCkuYXR0cih7ImFyaWEtZXhwYW5kZWQiOiJmYWxzZSIsCi10YWJJbmRleDotMX0p
LmJsdXIoKTthLnByZXYoKS5hdHRyKHsiYXJpYS1leHBhbmRlZCI6InRydWUiLHRhYkluZGV4OjB9
KS5mb2N1cygpfSxfY29tcGxldGVkOmZ1bmN0aW9uKGEpe3RoaXMucnVubmluZz1hPzA6LS10aGlz
LnJ1bm5pbmc7aWYoIXRoaXMucnVubmluZyl7dGhpcy5vcHRpb25zLmNsZWFyU3R5bGUmJnRoaXMu
dG9TaG93LmFkZCh0aGlzLnRvSGlkZSkuY3NzKHtoZWlnaHQ6IiIsb3ZlcmZsb3c6IiJ9KTt0aGlz
LnRvSGlkZS5yZW1vdmVDbGFzcygidWktYWNjb3JkaW9uLWNvbnRlbnQtYWN0aXZlIik7aWYodGhp
cy50b0hpZGUubGVuZ3RoKXRoaXMudG9IaWRlLnBhcmVudCgpWzBdLmNsYXNzTmFtZT10aGlzLnRv
SGlkZS5wYXJlbnQoKVswXS5jbGFzc05hbWU7dGhpcy5fdHJpZ2dlcigiY2hhbmdlIixudWxsLHRo
aXMuZGF0YSl9fX0pO2MuZXh0ZW5kKGMudWkuYWNjb3JkaW9uLHt2ZXJzaW9uOiIxLjguMTAiLGFu
aW1hdGlvbnM6e3NsaWRlOmZ1bmN0aW9uKGEsYil7YT0KLWMuZXh0ZW5kKHtlYXNpbmc6InN3aW5n
IixkdXJhdGlvbjozMDB9LGEsYik7aWYoYS50b0hpZGUuc2l6ZSgpKWlmKGEudG9TaG93LnNpemUo
KSl7dmFyIGQ9YS50b1Nob3cuY3NzKCJvdmVyZmxvdyIpLGg9MCxmPXt9LGc9e30sZTtiPWEudG9T
aG93O2U9YlswXS5zdHlsZS53aWR0aDtiLndpZHRoKHBhcnNlSW50KGIucGFyZW50KCkud2lkdGgo
KSwxMCktcGFyc2VJbnQoYi5jc3MoInBhZGRpbmdMZWZ0IiksMTApLXBhcnNlSW50KGIuY3NzKCJw
YWRkaW5nUmlnaHQiKSwxMCktKHBhcnNlSW50KGIuY3NzKCJib3JkZXJMZWZ0V2lkdGgiKSwxMCl8
fDApLShwYXJzZUludChiLmNzcygiYm9yZGVyUmlnaHRXaWR0aCIpLDEwKXx8MCkpO2MuZWFjaChb
ImhlaWdodCIsInBhZGRpbmdUb3AiLCJwYWRkaW5nQm90dG9tIl0sZnVuY3Rpb24oaixpKXtnW2ld
PSJoaWRlIjtqPSgiIitjLmNzcyhhLnRvU2hvd1swXSxpKSkubWF0Y2goL14oW1xkKy0uXSspKC4q
KSQvKTtmW2ldPXt2YWx1ZTpqWzFdLAotdW5pdDpqWzJdfHwicHgifX0pO2EudG9TaG93LmNzcyh7
aGVpZ2h0OjAsb3ZlcmZsb3c6ImhpZGRlbiJ9KS5zaG93KCk7YS50b0hpZGUuZmlsdGVyKCI6aGlk
ZGVuIikuZWFjaChhLmNvbXBsZXRlKS5lbmQoKS5maWx0ZXIoIjp2aXNpYmxlIikuYW5pbWF0ZShn
LHtzdGVwOmZ1bmN0aW9uKGosaSl7aWYoaS5wcm9wPT0iaGVpZ2h0IiloPWkuZW5kLWkuc3RhcnQ9
PT0wPzA6KGkubm93LWkuc3RhcnQpLyhpLmVuZC1pLnN0YXJ0KTthLnRvU2hvd1swXS5zdHlsZVtp
LnByb3BdPWgqZltpLnByb3BdLnZhbHVlK2ZbaS5wcm9wXS51bml0fSxkdXJhdGlvbjphLmR1cmF0
aW9uLGVhc2luZzphLmVhc2luZyxjb21wbGV0ZTpmdW5jdGlvbigpe2EuYXV0b0hlaWdodHx8YS50
b1Nob3cuY3NzKCJoZWlnaHQiLCIiKTthLnRvU2hvdy5jc3Moe3dpZHRoOmUsb3ZlcmZsb3c6ZH0p
O2EuY29tcGxldGUoKX19KX1lbHNlIGEudG9IaWRlLmFuaW1hdGUoe2hlaWdodDoiaGlkZSIscGFk
ZGluZ1RvcDoiaGlkZSIsCi1wYWRkaW5nQm90dG9tOiJoaWRlIn0sYSk7ZWxzZSBhLnRvU2hvdy5h
bmltYXRlKHtoZWlnaHQ6InNob3ciLHBhZGRpbmdUb3A6InNob3ciLHBhZGRpbmdCb3R0b206InNo
b3cifSxhKX0sYm91bmNlc2xpZGU6ZnVuY3Rpb24oYSl7dGhpcy5zbGlkZShhLHtlYXNpbmc6YS5k
b3duPyJlYXNlT3V0Qm91bmNlIjoic3dpbmciLGR1cmF0aW9uOmEuZG93bj8xRTM6MjAwfSl9fX0p
fSkoalF1ZXJ5KTsKLTsvKgotICogalF1ZXJ5IFVJIEF1dG9jb21wbGV0ZSAxLjguMTAKLSAqCi0g
KiBDb3B5cmlnaHQgMjAxMSwgQVVUSE9SUy50eHQgKGh0dHA6Ly9qcXVlcnl1aS5jb20vYWJvdXQp
Ci0gKiBEdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgb3IgR1BMIFZlcnNpb24gMiBsaWNlbnNl
cy4KLSAqIGh0dHA6Ly9qcXVlcnkub3JnL2xpY2Vuc2UKLSAqCi0gKiBodHRwOi8vZG9jcy5qcXVl
cnkuY29tL1VJL0F1dG9jb21wbGV0ZQotICoKLSAqIERlcGVuZHM6Ci0gKglqcXVlcnkudWkuY29y
ZS5qcwotICoJanF1ZXJ5LnVpLndpZGdldC5qcwotICoJanF1ZXJ5LnVpLnBvc2l0aW9uLmpzCi0g
Ki8KLShmdW5jdGlvbihkKXt2YXIgZT0wO2Qud2lkZ2V0KCJ1aS5hdXRvY29tcGxldGUiLHtvcHRp
b25zOnthcHBlbmRUbzoiYm9keSIsZGVsYXk6MzAwLG1pbkxlbmd0aDoxLHBvc2l0aW9uOntteToi
bGVmdCB0b3AiLGF0OiJsZWZ0IGJvdHRvbSIsY29sbGlzaW9uOiJub25lIn0sc291cmNlOm51bGx9
LHBlbmRpbmc6MCxfY3JlYXRlOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcyxiPXRoaXMuZWxlbWVudFsw
XS5vd25lckRvY3VtZW50LGc7dGhpcy5lbGVtZW50LmFkZENsYXNzKCJ1aS1hdXRvY29tcGxldGUt
aW5wdXQiKS5hdHRyKCJhdXRvY29tcGxldGUiLCJvZmYiKS5hdHRyKHtyb2xlOiJ0ZXh0Ym94Iiwi
YXJpYS1hdXRvY29tcGxldGUiOiJsaXN0IiwiYXJpYS1oYXNwb3B1cCI6InRydWUifSkuYmluZCgi
a2V5ZG93bi5hdXRvY29tcGxldGUiLGZ1bmN0aW9uKGMpe2lmKCEoYS5vcHRpb25zLmRpc2FibGVk
fHxhLmVsZW1lbnQuYXR0cigicmVhZG9ubHkiKSkpe2c9ZmFsc2U7dmFyIGY9ZC51aS5rZXlDb2Rl
Owotc3dpdGNoKGMua2V5Q29kZSl7Y2FzZSBmLlBBR0VfVVA6YS5fbW92ZSgicHJldmlvdXNQYWdl
IixjKTticmVhaztjYXNlIGYuUEFHRV9ET1dOOmEuX21vdmUoIm5leHRQYWdlIixjKTticmVhaztj
YXNlIGYuVVA6YS5fbW92ZSgicHJldmlvdXMiLGMpO2MucHJldmVudERlZmF1bHQoKTticmVhaztj
YXNlIGYuRE9XTjphLl9tb3ZlKCJuZXh0IixjKTtjLnByZXZlbnREZWZhdWx0KCk7YnJlYWs7Y2Fz
ZSBmLkVOVEVSOmNhc2UgZi5OVU1QQURfRU5URVI6aWYoYS5tZW51LmFjdGl2ZSl7Zz10cnVlO2Mu
cHJldmVudERlZmF1bHQoKX1jYXNlIGYuVEFCOmlmKCFhLm1lbnUuYWN0aXZlKXJldHVybjthLm1l
bnUuc2VsZWN0KGMpO2JyZWFrO2Nhc2UgZi5FU0NBUEU6YS5lbGVtZW50LnZhbChhLnRlcm0pO2Eu
Y2xvc2UoYyk7YnJlYWs7ZGVmYXVsdDpjbGVhclRpbWVvdXQoYS5zZWFyY2hpbmcpO2Euc2VhcmNo
aW5nPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtpZihhLnRlcm0hPWEuZWxlbWVudC52YWwoKSl7YS5z
ZWxlY3RlZEl0ZW09Ci1udWxsO2Euc2VhcmNoKG51bGwsYyl9fSxhLm9wdGlvbnMuZGVsYXkpO2Jy
ZWFrfX19KS5iaW5kKCJrZXlwcmVzcy5hdXRvY29tcGxldGUiLGZ1bmN0aW9uKGMpe2lmKGcpe2c9
ZmFsc2U7Yy5wcmV2ZW50RGVmYXVsdCgpfX0pLmJpbmQoImZvY3VzLmF1dG9jb21wbGV0ZSIsZnVu
Y3Rpb24oKXtpZighYS5vcHRpb25zLmRpc2FibGVkKXthLnNlbGVjdGVkSXRlbT1udWxsO2EucHJl
dmlvdXM9YS5lbGVtZW50LnZhbCgpfX0pLmJpbmQoImJsdXIuYXV0b2NvbXBsZXRlIixmdW5jdGlv
bihjKXtpZighYS5vcHRpb25zLmRpc2FibGVkKXtjbGVhclRpbWVvdXQoYS5zZWFyY2hpbmcpO2Eu
Y2xvc2luZz1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YS5jbG9zZShjKTthLl9jaGFuZ2UoYyl9LDE1
MCl9fSk7dGhpcy5faW5pdFNvdXJjZSgpO3RoaXMucmVzcG9uc2U9ZnVuY3Rpb24oKXtyZXR1cm4g
YS5fcmVzcG9uc2UuYXBwbHkoYSxhcmd1bWVudHMpfTt0aGlzLm1lbnU9ZCgiPHVsPjwvdWw+Iiku
YWRkQ2xhc3MoInVpLWF1dG9jb21wbGV0ZSIpLmFwcGVuZFRvKGQodGhpcy5vcHRpb25zLmFwcGVu
ZFRvfHwKLSJib2R5IixiKVswXSkubW91c2Vkb3duKGZ1bmN0aW9uKGMpe3ZhciBmPWEubWVudS5l
bGVtZW50WzBdO2QoYy50YXJnZXQpLmNsb3Nlc3QoIi51aS1tZW51LWl0ZW0iKS5sZW5ndGh8fHNl
dFRpbWVvdXQoZnVuY3Rpb24oKXtkKGRvY3VtZW50KS5vbmUoIm1vdXNlZG93biIsZnVuY3Rpb24o
aCl7aC50YXJnZXQhPT1hLmVsZW1lbnRbMF0mJmgudGFyZ2V0IT09ZiYmIWQudWkuY29udGFpbnMo
ZixoLnRhcmdldCkmJmEuY2xvc2UoKX0pfSwxKTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Y2xlYXJU
aW1lb3V0KGEuY2xvc2luZyl9LDEzKX0pLm1lbnUoe2ZvY3VzOmZ1bmN0aW9uKGMsZil7Zj1mLml0
ZW0uZGF0YSgiaXRlbS5hdXRvY29tcGxldGUiKTtmYWxzZSE9PWEuX3RyaWdnZXIoImZvY3VzIixj
LHtpdGVtOmZ9KSYmL15rZXkvLnRlc3QoYy5vcmlnaW5hbEV2ZW50LnR5cGUpJiZhLmVsZW1lbnQu
dmFsKGYudmFsdWUpfSxzZWxlY3RlZDpmdW5jdGlvbihjLGYpe3ZhciBoPWYuaXRlbS5kYXRhKCJp
dGVtLmF1dG9jb21wbGV0ZSIpLAotaT1hLnByZXZpb3VzO2lmKGEuZWxlbWVudFswXSE9PWIuYWN0
aXZlRWxlbWVudCl7YS5lbGVtZW50LmZvY3VzKCk7YS5wcmV2aW91cz1pO3NldFRpbWVvdXQoZnVu
Y3Rpb24oKXthLnByZXZpb3VzPWk7YS5zZWxlY3RlZEl0ZW09aH0sMSl9ZmFsc2UhPT1hLl90cmln
Z2VyKCJzZWxlY3QiLGMse2l0ZW06aH0pJiZhLmVsZW1lbnQudmFsKGgudmFsdWUpO2EudGVybT1h
LmVsZW1lbnQudmFsKCk7YS5jbG9zZShjKTthLnNlbGVjdGVkSXRlbT1ofSxibHVyOmZ1bmN0aW9u
KCl7YS5tZW51LmVsZW1lbnQuaXMoIjp2aXNpYmxlIikmJmEuZWxlbWVudC52YWwoKSE9PWEudGVy
bSYmYS5lbGVtZW50LnZhbChhLnRlcm0pfX0pLnpJbmRleCh0aGlzLmVsZW1lbnQuekluZGV4KCkr
MSkuY3NzKHt0b3A6MCxsZWZ0OjB9KS5oaWRlKCkuZGF0YSgibWVudSIpO2QuZm4uYmdpZnJhbWUm
JnRoaXMubWVudS5lbGVtZW50LmJnaWZyYW1lKCl9LGRlc3Ryb3k6ZnVuY3Rpb24oKXt0aGlzLmVs
ZW1lbnQucmVtb3ZlQ2xhc3MoInVpLWF1dG9jb21wbGV0ZS1pbnB1dCIpLnJlbW92ZUF0dHIoImF1
dG9jb21wbGV0ZSIpLnJlbW92ZUF0dHIoInJvbGUiKS5yZW1vdmVBdHRyKCJhcmlhLWF1dG9jb21w
bGV0ZSIpLnJlbW92ZUF0dHIoImFyaWEtaGFzcG9wdXAiKTsKLXRoaXMubWVudS5lbGVtZW50LnJl
bW92ZSgpO2QuV2lkZ2V0LnByb3RvdHlwZS5kZXN0cm95LmNhbGwodGhpcyl9LF9zZXRPcHRpb246
ZnVuY3Rpb24oYSxiKXtkLldpZGdldC5wcm90b3R5cGUuX3NldE9wdGlvbi5hcHBseSh0aGlzLGFy
Z3VtZW50cyk7YT09PSJzb3VyY2UiJiZ0aGlzLl9pbml0U291cmNlKCk7aWYoYT09PSJhcHBlbmRU
byIpdGhpcy5tZW51LmVsZW1lbnQuYXBwZW5kVG8oZChifHwiYm9keSIsdGhpcy5lbGVtZW50WzBd
Lm93bmVyRG9jdW1lbnQpWzBdKTthPT09ImRpc2FibGVkIiYmYiYmdGhpcy54aHImJnRoaXMueGhy
LmFib3J0KCl9LF9pbml0U291cmNlOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcyxiLGc7aWYoZC5pc0Fy
cmF5KHRoaXMub3B0aW9ucy5zb3VyY2UpKXtiPXRoaXMub3B0aW9ucy5zb3VyY2U7dGhpcy5zb3Vy
Y2U9ZnVuY3Rpb24oYyxmKXtmKGQudWkuYXV0b2NvbXBsZXRlLmZpbHRlcihiLGMudGVybSkpfX1l
bHNlIGlmKHR5cGVvZiB0aGlzLm9wdGlvbnMuc291cmNlPT09Ci0ic3RyaW5nIil7Zz10aGlzLm9w
dGlvbnMuc291cmNlO3RoaXMuc291cmNlPWZ1bmN0aW9uKGMsZil7YS54aHImJmEueGhyLmFib3J0
KCk7YS54aHI9ZC5hamF4KHt1cmw6ZyxkYXRhOmMsZGF0YVR5cGU6Impzb24iLGF1dG9jb21wbGV0
ZVJlcXVlc3Q6KytlLHN1Y2Nlc3M6ZnVuY3Rpb24oaCl7dGhpcy5hdXRvY29tcGxldGVSZXF1ZXN0
PT09ZSYmZihoKX0sZXJyb3I6ZnVuY3Rpb24oKXt0aGlzLmF1dG9jb21wbGV0ZVJlcXVlc3Q9PT1l
JiZmKFtdKX19KX19ZWxzZSB0aGlzLnNvdXJjZT10aGlzLm9wdGlvbnMuc291cmNlfSxzZWFyY2g6
ZnVuY3Rpb24oYSxiKXthPWEhPW51bGw/YTp0aGlzLmVsZW1lbnQudmFsKCk7dGhpcy50ZXJtPXRo
aXMuZWxlbWVudC52YWwoKTtpZihhLmxlbmd0aDx0aGlzLm9wdGlvbnMubWluTGVuZ3RoKXJldHVy
biB0aGlzLmNsb3NlKGIpO2NsZWFyVGltZW91dCh0aGlzLmNsb3NpbmcpO2lmKHRoaXMuX3RyaWdn
ZXIoInNlYXJjaCIsYikhPT1mYWxzZSlyZXR1cm4gdGhpcy5fc2VhcmNoKGEpfSwKLV9zZWFyY2g6
ZnVuY3Rpb24oYSl7dGhpcy5wZW5kaW5nKys7dGhpcy5lbGVtZW50LmFkZENsYXNzKCJ1aS1hdXRv
Y29tcGxldGUtbG9hZGluZyIpO3RoaXMuc291cmNlKHt0ZXJtOmF9LHRoaXMucmVzcG9uc2UpfSxf
cmVzcG9uc2U6ZnVuY3Rpb24oYSl7aWYoIXRoaXMub3B0aW9ucy5kaXNhYmxlZCYmYSYmYS5sZW5n
dGgpe2E9dGhpcy5fbm9ybWFsaXplKGEpO3RoaXMuX3N1Z2dlc3QoYSk7dGhpcy5fdHJpZ2dlcigi
b3BlbiIpfWVsc2UgdGhpcy5jbG9zZSgpO3RoaXMucGVuZGluZy0tO3RoaXMucGVuZGluZ3x8dGhp
cy5lbGVtZW50LnJlbW92ZUNsYXNzKCJ1aS1hdXRvY29tcGxldGUtbG9hZGluZyIpfSxjbG9zZTpm
dW5jdGlvbihhKXtjbGVhclRpbWVvdXQodGhpcy5jbG9zaW5nKTtpZih0aGlzLm1lbnUuZWxlbWVu
dC5pcygiOnZpc2libGUiKSl7dGhpcy5tZW51LmVsZW1lbnQuaGlkZSgpO3RoaXMubWVudS5kZWFj
dGl2YXRlKCk7dGhpcy5fdHJpZ2dlcigiY2xvc2UiLGEpfX0sX2NoYW5nZTpmdW5jdGlvbihhKXt0
aGlzLnByZXZpb3VzIT09Ci10aGlzLmVsZW1lbnQudmFsKCkmJnRoaXMuX3RyaWdnZXIoImNoYW5n
ZSIsYSx7aXRlbTp0aGlzLnNlbGVjdGVkSXRlbX0pfSxfbm9ybWFsaXplOmZ1bmN0aW9uKGEpe2lm
KGEubGVuZ3RoJiZhWzBdLmxhYmVsJiZhWzBdLnZhbHVlKXJldHVybiBhO3JldHVybiBkLm1hcChh
LGZ1bmN0aW9uKGIpe2lmKHR5cGVvZiBiPT09InN0cmluZyIpcmV0dXJue2xhYmVsOmIsdmFsdWU6
Yn07cmV0dXJuIGQuZXh0ZW5kKHtsYWJlbDpiLmxhYmVsfHxiLnZhbHVlLHZhbHVlOmIudmFsdWV8
fGIubGFiZWx9LGIpfSl9LF9zdWdnZXN0OmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMubWVudS5lbGVt
ZW50LmVtcHR5KCkuekluZGV4KHRoaXMuZWxlbWVudC56SW5kZXgoKSsxKTt0aGlzLl9yZW5kZXJN
ZW51KGIsYSk7dGhpcy5tZW51LmRlYWN0aXZhdGUoKTt0aGlzLm1lbnUucmVmcmVzaCgpO2Iuc2hv
dygpO3RoaXMuX3Jlc2l6ZU1lbnUoKTtiLnBvc2l0aW9uKGQuZXh0ZW5kKHtvZjp0aGlzLmVsZW1l
bnR9LHRoaXMub3B0aW9ucy5wb3NpdGlvbikpfSwKLV9yZXNpemVNZW51OmZ1bmN0aW9uKCl7dmFy
IGE9dGhpcy5tZW51LmVsZW1lbnQ7YS5vdXRlcldpZHRoKE1hdGgubWF4KGEud2lkdGgoIiIpLm91
dGVyV2lkdGgoKSx0aGlzLmVsZW1lbnQub3V0ZXJXaWR0aCgpKSl9LF9yZW5kZXJNZW51OmZ1bmN0
aW9uKGEsYil7dmFyIGc9dGhpcztkLmVhY2goYixmdW5jdGlvbihjLGYpe2cuX3JlbmRlckl0ZW0o
YSxmKX0pfSxfcmVuZGVySXRlbTpmdW5jdGlvbihhLGIpe3JldHVybiBkKCI8bGk+PC9saT4iKS5k
YXRhKCJpdGVtLmF1dG9jb21wbGV0ZSIsYikuYXBwZW5kKGQoIjxhPjwvYT4iKS50ZXh0KGIubGFi
ZWwpKS5hcHBlbmRUbyhhKX0sX21vdmU6ZnVuY3Rpb24oYSxiKXtpZih0aGlzLm1lbnUuZWxlbWVu
dC5pcygiOnZpc2libGUiKSlpZih0aGlzLm1lbnUuZmlyc3QoKSYmL15wcmV2aW91cy8udGVzdChh
KXx8dGhpcy5tZW51Lmxhc3QoKSYmL15uZXh0Ly50ZXN0KGEpKXt0aGlzLmVsZW1lbnQudmFsKHRo
aXMudGVybSk7dGhpcy5tZW51LmRlYWN0aXZhdGUoKX1lbHNlIHRoaXMubWVudVthXShiKTsKLWVs
c2UgdGhpcy5zZWFyY2gobnVsbCxiKX0sd2lkZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWVu
dS5lbGVtZW50fX0pO2QuZXh0ZW5kKGQudWkuYXV0b2NvbXBsZXRlLHtlc2NhcGVSZWdleDpmdW5j
dGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKC9bLVtcXXt9KCkqKz8uLFxcXiR8I1xzXS9nLCJcXCQm
Iil9LGZpbHRlcjpmdW5jdGlvbihhLGIpe3ZhciBnPW5ldyBSZWdFeHAoZC51aS5hdXRvY29tcGxl
dGUuZXNjYXBlUmVnZXgoYiksImkiKTtyZXR1cm4gZC5ncmVwKGEsZnVuY3Rpb24oYyl7cmV0dXJu
IGcudGVzdChjLmxhYmVsfHxjLnZhbHVlfHxjKX0pfX0pfSkoalF1ZXJ5KTsKLShmdW5jdGlvbihk
KXtkLndpZGdldCgidWkubWVudSIse19jcmVhdGU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3RoaXMu
ZWxlbWVudC5hZGRDbGFzcygidWktbWVudSB1aS13aWRnZXQgdWktd2lkZ2V0LWNvbnRlbnQgdWkt
Y29ybmVyLWFsbCIpLmF0dHIoe3JvbGU6Imxpc3Rib3giLCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnQi
OiJ1aS1hY3RpdmUtbWVudWl0ZW0ifSkuY2xpY2soZnVuY3Rpb24oYSl7aWYoZChhLnRhcmdldCku
Y2xvc2VzdCgiLnVpLW1lbnUtaXRlbSBhIikubGVuZ3RoKXthLnByZXZlbnREZWZhdWx0KCk7ZS5z
ZWxlY3QoYSl9fSk7dGhpcy5yZWZyZXNoKCl9LHJlZnJlc2g6ZnVuY3Rpb24oKXt2YXIgZT10aGlz
O3RoaXMuZWxlbWVudC5jaGlsZHJlbigibGk6bm90KC51aS1tZW51LWl0ZW0pOmhhcyhhKSIpLmFk
ZENsYXNzKCJ1aS1tZW51LWl0ZW0iKS5hdHRyKCJyb2xlIiwibWVudWl0ZW0iKS5jaGlsZHJlbigi
YSIpLmFkZENsYXNzKCJ1aS1jb3JuZXItYWxsIikuYXR0cigidGFiaW5kZXgiLAotLTEpLm1vdXNl
ZW50ZXIoZnVuY3Rpb24oYSl7ZS5hY3RpdmF0ZShhLGQodGhpcykucGFyZW50KCkpfSkubW91c2Vs
ZWF2ZShmdW5jdGlvbigpe2UuZGVhY3RpdmF0ZSgpfSl9LGFjdGl2YXRlOmZ1bmN0aW9uKGUsYSl7
dGhpcy5kZWFjdGl2YXRlKCk7aWYodGhpcy5oYXNTY3JvbGwoKSl7dmFyIGI9YS5vZmZzZXQoKS50
b3AtdGhpcy5lbGVtZW50Lm9mZnNldCgpLnRvcCxnPXRoaXMuZWxlbWVudC5hdHRyKCJzY3JvbGxU
b3AiKSxjPXRoaXMuZWxlbWVudC5oZWlnaHQoKTtpZihiPDApdGhpcy5lbGVtZW50LmF0dHIoInNj
cm9sbFRvcCIsZytiKTtlbHNlIGI+PWMmJnRoaXMuZWxlbWVudC5hdHRyKCJzY3JvbGxUb3AiLGcr
Yi1jK2EuaGVpZ2h0KCkpfXRoaXMuYWN0aXZlPWEuZXEoMCkuY2hpbGRyZW4oImEiKS5hZGRDbGFz
cygidWktc3RhdGUtaG92ZXIiKS5hdHRyKCJpZCIsInVpLWFjdGl2ZS1tZW51aXRlbSIpLmVuZCgp
O3RoaXMuX3RyaWdnZXIoImZvY3VzIixlLHtpdGVtOmF9KX0sCi1kZWFjdGl2YXRlOmZ1bmN0aW9u
KCl7aWYodGhpcy5hY3RpdmUpe3RoaXMuYWN0aXZlLmNoaWxkcmVuKCJhIikucmVtb3ZlQ2xhc3Mo
InVpLXN0YXRlLWhvdmVyIikucmVtb3ZlQXR0cigiaWQiKTt0aGlzLl90cmlnZ2VyKCJibHVyIik7
dGhpcy5hY3RpdmU9bnVsbH19LG5leHQ6ZnVuY3Rpb24oZSl7dGhpcy5tb3ZlKCJuZXh0IiwiLnVp
LW1lbnUtaXRlbTpmaXJzdCIsZSl9LHByZXZpb3VzOmZ1bmN0aW9uKGUpe3RoaXMubW92ZSgicHJl
diIsIi51aS1tZW51LWl0ZW06bGFzdCIsZSl9LGZpcnN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMu
YWN0aXZlJiYhdGhpcy5hY3RpdmUucHJldkFsbCgiLnVpLW1lbnUtaXRlbSIpLmxlbmd0aH0sbGFz
dDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmFjdGl2ZSYmIXRoaXMuYWN0aXZlLm5leHRBbGwoIi51
aS1tZW51LWl0ZW0iKS5sZW5ndGh9LG1vdmU6ZnVuY3Rpb24oZSxhLGIpe2lmKHRoaXMuYWN0aXZl
KXtlPXRoaXMuYWN0aXZlW2UrIkFsbCJdKCIudWktbWVudS1pdGVtIikuZXEoMCk7Ci1lLmxlbmd0
aD90aGlzLmFjdGl2YXRlKGIsZSk6dGhpcy5hY3RpdmF0ZShiLHRoaXMuZWxlbWVudC5jaGlsZHJl
bihhKSl9ZWxzZSB0aGlzLmFjdGl2YXRlKGIsdGhpcy5lbGVtZW50LmNoaWxkcmVuKGEpKX0sbmV4
dFBhZ2U6ZnVuY3Rpb24oZSl7aWYodGhpcy5oYXNTY3JvbGwoKSlpZighdGhpcy5hY3RpdmV8fHRo
aXMubGFzdCgpKXRoaXMuYWN0aXZhdGUoZSx0aGlzLmVsZW1lbnQuY2hpbGRyZW4oIi51aS1tZW51
LWl0ZW06Zmlyc3QiKSk7ZWxzZXt2YXIgYT10aGlzLmFjdGl2ZS5vZmZzZXQoKS50b3AsYj10aGlz
LmVsZW1lbnQuaGVpZ2h0KCksZz10aGlzLmVsZW1lbnQuY2hpbGRyZW4oIi51aS1tZW51LWl0ZW0i
KS5maWx0ZXIoZnVuY3Rpb24oKXt2YXIgYz1kKHRoaXMpLm9mZnNldCgpLnRvcC1hLWIrZCh0aGlz
KS5oZWlnaHQoKTtyZXR1cm4gYzwxMCYmYz4tMTB9KTtnLmxlbmd0aHx8KGc9dGhpcy5lbGVtZW50
LmNoaWxkcmVuKCIudWktbWVudS1pdGVtOmxhc3QiKSk7dGhpcy5hY3RpdmF0ZShlLAotZyl9ZWxz
ZSB0aGlzLmFjdGl2YXRlKGUsdGhpcy5lbGVtZW50LmNoaWxkcmVuKCIudWktbWVudS1pdGVtIiku
ZmlsdGVyKCF0aGlzLmFjdGl2ZXx8dGhpcy5sYXN0KCk/IjpmaXJzdCI6IjpsYXN0IikpfSxwcmV2
aW91c1BhZ2U6ZnVuY3Rpb24oZSl7aWYodGhpcy5oYXNTY3JvbGwoKSlpZighdGhpcy5hY3RpdmV8
fHRoaXMuZmlyc3QoKSl0aGlzLmFjdGl2YXRlKGUsdGhpcy5lbGVtZW50LmNoaWxkcmVuKCIudWkt
bWVudS1pdGVtOmxhc3QiKSk7ZWxzZXt2YXIgYT10aGlzLmFjdGl2ZS5vZmZzZXQoKS50b3AsYj10
aGlzLmVsZW1lbnQuaGVpZ2h0KCk7cmVzdWx0PXRoaXMuZWxlbWVudC5jaGlsZHJlbigiLnVpLW1l
bnUtaXRlbSIpLmZpbHRlcihmdW5jdGlvbigpe3ZhciBnPWQodGhpcykub2Zmc2V0KCkudG9wLWEr
Yi1kKHRoaXMpLmhlaWdodCgpO3JldHVybiBnPDEwJiZnPi0xMH0pO3Jlc3VsdC5sZW5ndGh8fChy
ZXN1bHQ9dGhpcy5lbGVtZW50LmNoaWxkcmVuKCIudWktbWVudS1pdGVtOmZpcnN0IikpOwotdGhp
cy5hY3RpdmF0ZShlLHJlc3VsdCl9ZWxzZSB0aGlzLmFjdGl2YXRlKGUsdGhpcy5lbGVtZW50LmNo
aWxkcmVuKCIudWktbWVudS1pdGVtIikuZmlsdGVyKCF0aGlzLmFjdGl2ZXx8dGhpcy5maXJzdCgp
PyI6bGFzdCI6IjpmaXJzdCIpKX0saGFzU2Nyb2xsOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWxl
bWVudC5oZWlnaHQoKTx0aGlzLmVsZW1lbnQuYXR0cigic2Nyb2xsSGVpZ2h0Iil9LHNlbGVjdDpm
dW5jdGlvbihlKXt0aGlzLl90cmlnZ2VyKCJzZWxlY3RlZCIsZSx7aXRlbTp0aGlzLmFjdGl2ZX0p
fX0pfSkoalF1ZXJ5KTsKLTsvKgotICogalF1ZXJ5IFVJIEJ1dHRvbiAxLjguMTAKLSAqCi0gKiBD
b3B5cmlnaHQgMjAxMSwgQVVUSE9SUy50eHQgKGh0dHA6Ly9qcXVlcnl1aS5jb20vYWJvdXQpCi0g
KiBEdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgb3IgR1BMIFZlcnNpb24gMiBsaWNlbnNlcy4K
LSAqIGh0dHA6Ly9qcXVlcnkub3JnL2xpY2Vuc2UKLSAqCi0gKiBodHRwOi8vZG9jcy5qcXVlcnku
Y29tL1VJL0J1dHRvbgotICoKLSAqIERlcGVuZHM6Ci0gKglqcXVlcnkudWkuY29yZS5qcwotICoJ
anF1ZXJ5LnVpLndpZGdldC5qcwotICovCi0oZnVuY3Rpb24oYSl7dmFyIGcsaT1mdW5jdGlvbihi
KXthKCI6dWktYnV0dG9uIixiLnRhcmdldC5mb3JtKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGM9YSh0
aGlzKS5kYXRhKCJidXR0b24iKTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Yy5yZWZyZXNoKCl9LDEp
fSl9LGg9ZnVuY3Rpb24oYil7dmFyIGM9Yi5uYW1lLGQ9Yi5mb3JtLGY9YShbXSk7aWYoYylmPWQ/
YShkKS5maW5kKCJbbmFtZT0nIitjKyInXSIpOmEoIltuYW1lPSciK2MrIiddIixiLm93bmVyRG9j
dW1lbnQpLmZpbHRlcihmdW5jdGlvbigpe3JldHVybiF0aGlzLmZvcm19KTtyZXR1cm4gZn07YS53
aWRnZXQoInVpLmJ1dHRvbiIse29wdGlvbnM6e2Rpc2FibGVkOm51bGwsdGV4dDp0cnVlLGxhYmVs
Om51bGwsaWNvbnM6e3ByaW1hcnk6bnVsbCxzZWNvbmRhcnk6bnVsbH19LF9jcmVhdGU6ZnVuY3Rp
b24oKXt0aGlzLmVsZW1lbnQuY2xvc2VzdCgiZm9ybSIpLnVuYmluZCgicmVzZXQuYnV0dG9uIiku
YmluZCgicmVzZXQuYnV0dG9uIiwKLWkpO2lmKHR5cGVvZiB0aGlzLm9wdGlvbnMuZGlzYWJsZWQh
PT0iYm9vbGVhbiIpdGhpcy5vcHRpb25zLmRpc2FibGVkPXRoaXMuZWxlbWVudC5hdHRyKCJkaXNh
YmxlZCIpO3RoaXMuX2RldGVybWluZUJ1dHRvblR5cGUoKTt0aGlzLmhhc1RpdGxlPSEhdGhpcy5i
dXR0b25FbGVtZW50LmF0dHIoInRpdGxlIik7dmFyIGI9dGhpcyxjPXRoaXMub3B0aW9ucyxkPXRo
aXMudHlwZT09PSJjaGVja2JveCJ8fHRoaXMudHlwZT09PSJyYWRpbyIsZj0idWktc3RhdGUtaG92
ZXIiKyghZD8iIHVpLXN0YXRlLWFjdGl2ZSI6IiIpO2lmKGMubGFiZWw9PT1udWxsKWMubGFiZWw9
dGhpcy5idXR0b25FbGVtZW50Lmh0bWwoKTtpZih0aGlzLmVsZW1lbnQuaXMoIjpkaXNhYmxlZCIp
KWMuZGlzYWJsZWQ9dHJ1ZTt0aGlzLmJ1dHRvbkVsZW1lbnQuYWRkQ2xhc3MoInVpLWJ1dHRvbiB1
aS13aWRnZXQgdWktc3RhdGUtZGVmYXVsdCB1aS1jb3JuZXItYWxsIikuYXR0cigicm9sZSIsImJ1
dHRvbiIpLmJpbmQoIm1vdXNlZW50ZXIuYnV0dG9uIiwKLWZ1bmN0aW9uKCl7aWYoIWMuZGlzYWJs
ZWQpe2EodGhpcykuYWRkQ2xhc3MoInVpLXN0YXRlLWhvdmVyIik7dGhpcz09PWcmJmEodGhpcyku
YWRkQ2xhc3MoInVpLXN0YXRlLWFjdGl2ZSIpfX0pLmJpbmQoIm1vdXNlbGVhdmUuYnV0dG9uIixm
dW5jdGlvbigpe2MuZGlzYWJsZWR8fGEodGhpcykucmVtb3ZlQ2xhc3MoZil9KS5iaW5kKCJmb2N1
cy5idXR0b24iLGZ1bmN0aW9uKCl7YSh0aGlzKS5hZGRDbGFzcygidWktc3RhdGUtZm9jdXMiKX0p
LmJpbmQoImJsdXIuYnV0dG9uIixmdW5jdGlvbigpe2EodGhpcykucmVtb3ZlQ2xhc3MoInVpLXN0
YXRlLWZvY3VzIil9KTtkJiZ0aGlzLmVsZW1lbnQuYmluZCgiY2hhbmdlLmJ1dHRvbiIsZnVuY3Rp
b24oKXtiLnJlZnJlc2goKX0pO2lmKHRoaXMudHlwZT09PSJjaGVja2JveCIpdGhpcy5idXR0b25F
bGVtZW50LmJpbmQoImNsaWNrLmJ1dHRvbiIsZnVuY3Rpb24oKXtpZihjLmRpc2FibGVkKXJldHVy
biBmYWxzZTthKHRoaXMpLnRvZ2dsZUNsYXNzKCJ1aS1zdGF0ZS1hY3RpdmUiKTsKLWIuYnV0dG9u
RWxlbWVudC5hdHRyKCJhcmlhLXByZXNzZWQiLGIuZWxlbWVudFswXS5jaGVja2VkKX0pO2Vsc2Ug
aWYodGhpcy50eXBlPT09InJhZGlvIil0aGlzLmJ1dHRvbkVsZW1lbnQuYmluZCgiY2xpY2suYnV0
dG9uIixmdW5jdGlvbigpe2lmKGMuZGlzYWJsZWQpcmV0dXJuIGZhbHNlO2EodGhpcykuYWRkQ2xh
c3MoInVpLXN0YXRlLWFjdGl2ZSIpO2IuYnV0dG9uRWxlbWVudC5hdHRyKCJhcmlhLXByZXNzZWQi
LHRydWUpO3ZhciBlPWIuZWxlbWVudFswXTtoKGUpLm5vdChlKS5tYXAoZnVuY3Rpb24oKXtyZXR1
cm4gYSh0aGlzKS5idXR0b24oIndpZGdldCIpWzBdfSkucmVtb3ZlQ2xhc3MoInVpLXN0YXRlLWFj
dGl2ZSIpLmF0dHIoImFyaWEtcHJlc3NlZCIsZmFsc2UpfSk7ZWxzZXt0aGlzLmJ1dHRvbkVsZW1l
bnQuYmluZCgibW91c2Vkb3duLmJ1dHRvbiIsZnVuY3Rpb24oKXtpZihjLmRpc2FibGVkKXJldHVy
biBmYWxzZTthKHRoaXMpLmFkZENsYXNzKCJ1aS1zdGF0ZS1hY3RpdmUiKTsKLWc9dGhpczthKGRv
Y3VtZW50KS5vbmUoIm1vdXNldXAiLGZ1bmN0aW9uKCl7Zz1udWxsfSl9KS5iaW5kKCJtb3VzZXVw
LmJ1dHRvbiIsZnVuY3Rpb24oKXtpZihjLmRpc2FibGVkKXJldHVybiBmYWxzZTthKHRoaXMpLnJl
bW92ZUNsYXNzKCJ1aS1zdGF0ZS1hY3RpdmUiKX0pLmJpbmQoImtleWRvd24uYnV0dG9uIixmdW5j
dGlvbihlKXtpZihjLmRpc2FibGVkKXJldHVybiBmYWxzZTtpZihlLmtleUNvZGU9PWEudWkua2V5
Q29kZS5TUEFDRXx8ZS5rZXlDb2RlPT1hLnVpLmtleUNvZGUuRU5URVIpYSh0aGlzKS5hZGRDbGFz
cygidWktc3RhdGUtYWN0aXZlIil9KS5iaW5kKCJrZXl1cC5idXR0b24iLGZ1bmN0aW9uKCl7YSh0
aGlzKS5yZW1vdmVDbGFzcygidWktc3RhdGUtYWN0aXZlIil9KTt0aGlzLmJ1dHRvbkVsZW1lbnQu
aXMoImEiKSYmdGhpcy5idXR0b25FbGVtZW50LmtleXVwKGZ1bmN0aW9uKGUpe2Uua2V5Q29kZT09
PWEudWkua2V5Q29kZS5TUEFDRSYmYSh0aGlzKS5jbGljaygpfSl9dGhpcy5fc2V0T3B0aW9uKCJk
aXNhYmxlZCIsCi1jLmRpc2FibGVkKX0sX2RldGVybWluZUJ1dHRvblR5cGU6ZnVuY3Rpb24oKXt0
aGlzLnR5cGU9dGhpcy5lbGVtZW50LmlzKCI6Y2hlY2tib3giKT8iY2hlY2tib3giOnRoaXMuZWxl
bWVudC5pcygiOnJhZGlvIik/InJhZGlvIjp0aGlzLmVsZW1lbnQuaXMoImlucHV0Iik/ImlucHV0
IjoiYnV0dG9uIjtpZih0aGlzLnR5cGU9PT0iY2hlY2tib3gifHx0aGlzLnR5cGU9PT0icmFkaW8i
KXt0aGlzLmJ1dHRvbkVsZW1lbnQ9dGhpcy5lbGVtZW50LnBhcmVudHMoKS5sYXN0KCkuZmluZCgi
bGFiZWxbZm9yPSIrdGhpcy5lbGVtZW50LmF0dHIoImlkIikrIl0iKTt0aGlzLmVsZW1lbnQuYWRk
Q2xhc3MoInVpLWhlbHBlci1oaWRkZW4tYWNjZXNzaWJsZSIpO3ZhciBiPXRoaXMuZWxlbWVudC5p
cygiOmNoZWNrZWQiKTtiJiZ0aGlzLmJ1dHRvbkVsZW1lbnQuYWRkQ2xhc3MoInVpLXN0YXRlLWFj
dGl2ZSIpO3RoaXMuYnV0dG9uRWxlbWVudC5hdHRyKCJhcmlhLXByZXNzZWQiLGIpfWVsc2UgdGhp
cy5idXR0b25FbGVtZW50PQotdGhpcy5lbGVtZW50fSx3aWRnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4g
dGhpcy5idXR0b25FbGVtZW50fSxkZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy5lbGVtZW50LnJlbW92
ZUNsYXNzKCJ1aS1oZWxwZXItaGlkZGVuLWFjY2Vzc2libGUiKTt0aGlzLmJ1dHRvbkVsZW1lbnQu
cmVtb3ZlQ2xhc3MoInVpLWJ1dHRvbiB1aS13aWRnZXQgdWktc3RhdGUtZGVmYXVsdCB1aS1jb3Ju
ZXItYWxsIHVpLXN0YXRlLWhvdmVyIHVpLXN0YXRlLWFjdGl2ZSAgdWktYnV0dG9uLWljb25zLW9u
bHkgdWktYnV0dG9uLWljb24tb25seSB1aS1idXR0b24tdGV4dC1pY29ucyB1aS1idXR0b24tdGV4
dC1pY29uLXByaW1hcnkgdWktYnV0dG9uLXRleHQtaWNvbi1zZWNvbmRhcnkgdWktYnV0dG9uLXRl
eHQtb25seSIpLnJlbW92ZUF0dHIoInJvbGUiKS5yZW1vdmVBdHRyKCJhcmlhLXByZXNzZWQiKS5o
dG1sKHRoaXMuYnV0dG9uRWxlbWVudC5maW5kKCIudWktYnV0dG9uLXRleHQiKS5odG1sKCkpO3Ro
aXMuaGFzVGl0bGV8fAotdGhpcy5idXR0b25FbGVtZW50LnJlbW92ZUF0dHIoInRpdGxlIik7YS5X
aWRnZXQucHJvdG90eXBlLmRlc3Ryb3kuY2FsbCh0aGlzKX0sX3NldE9wdGlvbjpmdW5jdGlvbihi
LGMpe2EuV2lkZ2V0LnByb3RvdHlwZS5fc2V0T3B0aW9uLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtp
ZihiPT09ImRpc2FibGVkIiljP3RoaXMuZWxlbWVudC5hdHRyKCJkaXNhYmxlZCIsdHJ1ZSk6dGhp
cy5lbGVtZW50LnJlbW92ZUF0dHIoImRpc2FibGVkIik7dGhpcy5fcmVzZXRCdXR0b24oKX0scmVm
cmVzaDpmdW5jdGlvbigpe3ZhciBiPXRoaXMuZWxlbWVudC5pcygiOmRpc2FibGVkIik7YiE9PXRo
aXMub3B0aW9ucy5kaXNhYmxlZCYmdGhpcy5fc2V0T3B0aW9uKCJkaXNhYmxlZCIsYik7aWYodGhp
cy50eXBlPT09InJhZGlvIiloKHRoaXMuZWxlbWVudFswXSkuZWFjaChmdW5jdGlvbigpe2EodGhp
cykuaXMoIjpjaGVja2VkIik/YSh0aGlzKS5idXR0b24oIndpZGdldCIpLmFkZENsYXNzKCJ1aS1z
dGF0ZS1hY3RpdmUiKS5hdHRyKCJhcmlhLXByZXNzZWQiLAotdHJ1ZSk6YSh0aGlzKS5idXR0b24o
IndpZGdldCIpLnJlbW92ZUNsYXNzKCJ1aS1zdGF0ZS1hY3RpdmUiKS5hdHRyKCJhcmlhLXByZXNz
ZWQiLGZhbHNlKX0pO2Vsc2UgaWYodGhpcy50eXBlPT09ImNoZWNrYm94Iil0aGlzLmVsZW1lbnQu
aXMoIjpjaGVja2VkIik/dGhpcy5idXR0b25FbGVtZW50LmFkZENsYXNzKCJ1aS1zdGF0ZS1hY3Rp
dmUiKS5hdHRyKCJhcmlhLXByZXNzZWQiLHRydWUpOnRoaXMuYnV0dG9uRWxlbWVudC5yZW1vdmVD
bGFzcygidWktc3RhdGUtYWN0aXZlIikuYXR0cigiYXJpYS1wcmVzc2VkIixmYWxzZSl9LF9yZXNl
dEJ1dHRvbjpmdW5jdGlvbigpe2lmKHRoaXMudHlwZT09PSJpbnB1dCIpdGhpcy5vcHRpb25zLmxh
YmVsJiZ0aGlzLmVsZW1lbnQudmFsKHRoaXMub3B0aW9ucy5sYWJlbCk7ZWxzZXt2YXIgYj10aGlz
LmJ1dHRvbkVsZW1lbnQucmVtb3ZlQ2xhc3MoInVpLWJ1dHRvbi1pY29ucy1vbmx5IHVpLWJ1dHRv
bi1pY29uLW9ubHkgdWktYnV0dG9uLXRleHQtaWNvbnMgdWktYnV0dG9uLXRleHQtaWNvbi1wcmlt
YXJ5IHVpLWJ1dHRvbi10ZXh0LWljb24tc2Vjb25kYXJ5IHVpLWJ1dHRvbi10ZXh0LW9ubHkiKSwK
LWM9YSgiPHNwYW4+PC9zcGFuPiIpLmFkZENsYXNzKCJ1aS1idXR0b24tdGV4dCIpLmh0bWwodGhp
cy5vcHRpb25zLmxhYmVsKS5hcHBlbmRUbyhiLmVtcHR5KCkpLnRleHQoKSxkPXRoaXMub3B0aW9u
cy5pY29ucyxmPWQucHJpbWFyeSYmZC5zZWNvbmRhcnksZT1bXTtpZihkLnByaW1hcnl8fGQuc2Vj
b25kYXJ5KXtlLnB1c2goInVpLWJ1dHRvbi10ZXh0LWljb24iKyhmPyJzIjpkLnByaW1hcnk/Ii1w
cmltYXJ5IjoiLXNlY29uZGFyeSIpKTtkLnByaW1hcnkmJmIucHJlcGVuZCgiPHNwYW4gY2xhc3M9
J3VpLWJ1dHRvbi1pY29uLXByaW1hcnkgdWktaWNvbiAiK2QucHJpbWFyeSsiJz48L3NwYW4+Iik7
ZC5zZWNvbmRhcnkmJmIuYXBwZW5kKCI8c3BhbiBjbGFzcz0ndWktYnV0dG9uLWljb24tc2Vjb25k
YXJ5IHVpLWljb24gIitkLnNlY29uZGFyeSsiJz48L3NwYW4+Iik7aWYoIXRoaXMub3B0aW9ucy50
ZXh0KXtlLnB1c2goZj8idWktYnV0dG9uLWljb25zLW9ubHkiOiJ1aS1idXR0b24taWNvbi1vbmx5
Iik7Ci1iLnJlbW92ZUNsYXNzKCJ1aS1idXR0b24tdGV4dC1pY29ucyB1aS1idXR0b24tdGV4dC1p
Y29uLXByaW1hcnkgdWktYnV0dG9uLXRleHQtaWNvbi1zZWNvbmRhcnkiKTt0aGlzLmhhc1RpdGxl
fHxiLmF0dHIoInRpdGxlIixjKX19ZWxzZSBlLnB1c2goInVpLWJ1dHRvbi10ZXh0LW9ubHkiKTti
LmFkZENsYXNzKGUuam9pbigiICIpKX19fSk7YS53aWRnZXQoInVpLmJ1dHRvbnNldCIse29wdGlv
bnM6e2l0ZW1zOiI6YnV0dG9uLCA6c3VibWl0LCA6cmVzZXQsIDpjaGVja2JveCwgOnJhZGlvLCBh
LCA6ZGF0YShidXR0b24pIn0sX2NyZWF0ZTpmdW5jdGlvbigpe3RoaXMuZWxlbWVudC5hZGRDbGFz
cygidWktYnV0dG9uc2V0Iil9LF9pbml0OmZ1bmN0aW9uKCl7dGhpcy5yZWZyZXNoKCl9LF9zZXRP
cHRpb246ZnVuY3Rpb24oYixjKXtiPT09ImRpc2FibGVkIiYmdGhpcy5idXR0b25zLmJ1dHRvbigi
b3B0aW9uIixiLGMpO2EuV2lkZ2V0LnByb3RvdHlwZS5fc2V0T3B0aW9uLmFwcGx5KHRoaXMsCi1h
cmd1bWVudHMpfSxyZWZyZXNoOmZ1bmN0aW9uKCl7dGhpcy5idXR0b25zPXRoaXMuZWxlbWVudC5m
aW5kKHRoaXMub3B0aW9ucy5pdGVtcykuZmlsdGVyKCI6dWktYnV0dG9uIikuYnV0dG9uKCJyZWZy
ZXNoIikuZW5kKCkubm90KCI6dWktYnV0dG9uIikuYnV0dG9uKCkuZW5kKCkubWFwKGZ1bmN0aW9u
KCl7cmV0dXJuIGEodGhpcykuYnV0dG9uKCJ3aWRnZXQiKVswXX0pLnJlbW92ZUNsYXNzKCJ1aS1j
b3JuZXItYWxsIHVpLWNvcm5lci1sZWZ0IHVpLWNvcm5lci1yaWdodCIpLmZpbHRlcigiOmZpcnN0
IikuYWRkQ2xhc3MoInVpLWNvcm5lci1sZWZ0IikuZW5kKCkuZmlsdGVyKCI6bGFzdCIpLmFkZENs
YXNzKCJ1aS1jb3JuZXItcmlnaHQiKS5lbmQoKS5lbmQoKX0sZGVzdHJveTpmdW5jdGlvbigpe3Ro
aXMuZWxlbWVudC5yZW1vdmVDbGFzcygidWktYnV0dG9uc2V0Iik7dGhpcy5idXR0b25zLm1hcChm
dW5jdGlvbigpe3JldHVybiBhKHRoaXMpLmJ1dHRvbigid2lkZ2V0IilbMF19KS5yZW1vdmVDbGFz
cygidWktY29ybmVyLWxlZnQgdWktY29ybmVyLXJpZ2h0IikuZW5kKCkuYnV0dG9uKCJkZXN0cm95
Iik7Ci1hLldpZGdldC5wcm90b3R5cGUuZGVzdHJveS5jYWxsKHRoaXMpfX0pfSkoalF1ZXJ5KTsK
LTsvKgotICogalF1ZXJ5IFVJIERpYWxvZyAxLjguMTAKLSAqCi0gKiBDb3B5cmlnaHQgMjAxMSwg
QVVUSE9SUy50eHQgKGh0dHA6Ly9qcXVlcnl1aS5jb20vYWJvdXQpCi0gKiBEdWFsIGxpY2Vuc2Vk
IHVuZGVyIHRoZSBNSVQgb3IgR1BMIFZlcnNpb24gMiBsaWNlbnNlcy4KLSAqIGh0dHA6Ly9qcXVl
cnkub3JnL2xpY2Vuc2UKLSAqCi0gKiBodHRwOi8vZG9jcy5qcXVlcnkuY29tL1VJL0RpYWxvZwot
ICoKLSAqIERlcGVuZHM6Ci0gKglqcXVlcnkudWkuY29yZS5qcwotICoJanF1ZXJ5LnVpLndpZGdl
dC5qcwotICogIGpxdWVyeS51aS5idXR0b24uanMKLSAqCWpxdWVyeS51aS5kcmFnZ2FibGUuanMK
LSAqCWpxdWVyeS51aS5tb3VzZS5qcwotICoJanF1ZXJ5LnVpLnBvc2l0aW9uLmpzCi0gKglqcXVl
cnkudWkucmVzaXphYmxlLmpzCi0gKi8KLShmdW5jdGlvbihjLGope3ZhciBrPXtidXR0b25zOnRy
dWUsaGVpZ2h0OnRydWUsbWF4SGVpZ2h0OnRydWUsbWF4V2lkdGg6dHJ1ZSxtaW5IZWlnaHQ6dHJ1
ZSxtaW5XaWR0aDp0cnVlLHdpZHRoOnRydWV9LGw9e21heEhlaWdodDp0cnVlLG1heFdpZHRoOnRy
dWUsbWluSGVpZ2h0OnRydWUsbWluV2lkdGg6dHJ1ZX07Yy53aWRnZXQoInVpLmRpYWxvZyIse29w
dGlvbnM6e2F1dG9PcGVuOnRydWUsYnV0dG9uczp7fSxjbG9zZU9uRXNjYXBlOnRydWUsY2xvc2VU
ZXh0OiJjbG9zZSIsZGlhbG9nQ2xhc3M6IiIsZHJhZ2dhYmxlOnRydWUsaGlkZTpudWxsLGhlaWdo
dDoiYXV0byIsbWF4SGVpZ2h0OmZhbHNlLG1heFdpZHRoOmZhbHNlLG1pbkhlaWdodDoxNTAsbWlu
V2lkdGg6MTUwLG1vZGFsOmZhbHNlLHBvc2l0aW9uOntteToiY2VudGVyIixhdDoiY2VudGVyIixj
b2xsaXNpb246ImZpdCIsdXNpbmc6ZnVuY3Rpb24oYSl7dmFyIGI9Yyh0aGlzKS5jc3MoYSkub2Zm
c2V0KCkudG9wO2I8MCYmCi1jKHRoaXMpLmNzcygidG9wIixhLnRvcC1iKX19LHJlc2l6YWJsZTp0
cnVlLHNob3c6bnVsbCxzdGFjazp0cnVlLHRpdGxlOiIiLHdpZHRoOjMwMCx6SW5kZXg6MUUzfSxf
Y3JlYXRlOmZ1bmN0aW9uKCl7dGhpcy5vcmlnaW5hbFRpdGxlPXRoaXMuZWxlbWVudC5hdHRyKCJ0
aXRsZSIpO2lmKHR5cGVvZiB0aGlzLm9yaWdpbmFsVGl0bGUhPT0ic3RyaW5nIil0aGlzLm9yaWdp
bmFsVGl0bGU9IiI7dGhpcy5vcHRpb25zLnRpdGxlPXRoaXMub3B0aW9ucy50aXRsZXx8dGhpcy5v
cmlnaW5hbFRpdGxlO3ZhciBhPXRoaXMsYj1hLm9wdGlvbnMsZD1iLnRpdGxlfHwiJiMxNjA7Iixl
PWMudWkuZGlhbG9nLmdldFRpdGxlSWQoYS5lbGVtZW50KSxnPShhLnVpRGlhbG9nPWMoIjxkaXY+
PC9kaXY+IikpLmFwcGVuZFRvKGRvY3VtZW50LmJvZHkpLmhpZGUoKS5hZGRDbGFzcygidWktZGlh
bG9nIHVpLXdpZGdldCB1aS13aWRnZXQtY29udGVudCB1aS1jb3JuZXItYWxsICIrYi5kaWFsb2dD
bGFzcykuY3NzKHt6SW5kZXg6Yi56SW5kZXh9KS5hdHRyKCJ0YWJJbmRleCIsCi0tMSkuY3NzKCJv
dXRsaW5lIiwwKS5rZXlkb3duKGZ1bmN0aW9uKGkpe2lmKGIuY2xvc2VPbkVzY2FwZSYmaS5rZXlD
b2RlJiZpLmtleUNvZGU9PT1jLnVpLmtleUNvZGUuRVNDQVBFKXthLmNsb3NlKGkpO2kucHJldmVu
dERlZmF1bHQoKX19KS5hdHRyKHtyb2xlOiJkaWFsb2ciLCJhcmlhLWxhYmVsbGVkYnkiOmV9KS5t
b3VzZWRvd24oZnVuY3Rpb24oaSl7YS5tb3ZlVG9Ub3AoZmFsc2UsaSl9KTthLmVsZW1lbnQuc2hv
dygpLnJlbW92ZUF0dHIoInRpdGxlIikuYWRkQ2xhc3MoInVpLWRpYWxvZy1jb250ZW50IHVpLXdp
ZGdldC1jb250ZW50IikuYXBwZW5kVG8oZyk7dmFyIGY9KGEudWlEaWFsb2dUaXRsZWJhcj1jKCI8
ZGl2PjwvZGl2PiIpKS5hZGRDbGFzcygidWktZGlhbG9nLXRpdGxlYmFyIHVpLXdpZGdldC1oZWFk
ZXIgdWktY29ybmVyLWFsbCB1aS1oZWxwZXItY2xlYXJmaXgiKS5wcmVwZW5kVG8oZyksaD1jKCc8
YSBocmVmPSIjIj48L2E+JykuYWRkQ2xhc3MoInVpLWRpYWxvZy10aXRsZWJhci1jbG9zZSB1aS1j
b3JuZXItYWxsIikuYXR0cigicm9sZSIsCi0iYnV0dG9uIikuaG92ZXIoZnVuY3Rpb24oKXtoLmFk
ZENsYXNzKCJ1aS1zdGF0ZS1ob3ZlciIpfSxmdW5jdGlvbigpe2gucmVtb3ZlQ2xhc3MoInVpLXN0
YXRlLWhvdmVyIil9KS5mb2N1cyhmdW5jdGlvbigpe2guYWRkQ2xhc3MoInVpLXN0YXRlLWZvY3Vz
Iil9KS5ibHVyKGZ1bmN0aW9uKCl7aC5yZW1vdmVDbGFzcygidWktc3RhdGUtZm9jdXMiKX0pLmNs
aWNrKGZ1bmN0aW9uKGkpe2EuY2xvc2UoaSk7cmV0dXJuIGZhbHNlfSkuYXBwZW5kVG8oZik7KGEu
dWlEaWFsb2dUaXRsZWJhckNsb3NlVGV4dD1jKCI8c3Bhbj48L3NwYW4+IikpLmFkZENsYXNzKCJ1
aS1pY29uIHVpLWljb24tY2xvc2V0aGljayIpLnRleHQoYi5jbG9zZVRleHQpLmFwcGVuZFRvKGgp
O2MoIjxzcGFuPjwvc3Bhbj4iKS5hZGRDbGFzcygidWktZGlhbG9nLXRpdGxlIikuYXR0cigiaWQi
LGUpLmh0bWwoZCkucHJlcGVuZFRvKGYpO2lmKGMuaXNGdW5jdGlvbihiLmJlZm9yZWNsb3NlKSYm
IWMuaXNGdW5jdGlvbihiLmJlZm9yZUNsb3NlKSliLmJlZm9yZUNsb3NlPQotYi5iZWZvcmVjbG9z
ZTtmLmZpbmQoIioiKS5hZGQoZikuZGlzYWJsZVNlbGVjdGlvbigpO2IuZHJhZ2dhYmxlJiZjLmZu
LmRyYWdnYWJsZSYmYS5fbWFrZURyYWdnYWJsZSgpO2IucmVzaXphYmxlJiZjLmZuLnJlc2l6YWJs
ZSYmYS5fbWFrZVJlc2l6YWJsZSgpO2EuX2NyZWF0ZUJ1dHRvbnMoYi5idXR0b25zKTthLl9pc09w
ZW49ZmFsc2U7Yy5mbi5iZ2lmcmFtZSYmZy5iZ2lmcmFtZSgpfSxfaW5pdDpmdW5jdGlvbigpe3Ro
aXMub3B0aW9ucy5hdXRvT3BlbiYmdGhpcy5vcGVuKCl9LGRlc3Ryb3k6ZnVuY3Rpb24oKXt2YXIg
YT10aGlzO2Eub3ZlcmxheSYmYS5vdmVybGF5LmRlc3Ryb3koKTthLnVpRGlhbG9nLmhpZGUoKTth
LmVsZW1lbnQudW5iaW5kKCIuZGlhbG9nIikucmVtb3ZlRGF0YSgiZGlhbG9nIikucmVtb3ZlQ2xh
c3MoInVpLWRpYWxvZy1jb250ZW50IHVpLXdpZGdldC1jb250ZW50IikuaGlkZSgpLmFwcGVuZFRv
KCJib2R5Iik7YS51aURpYWxvZy5yZW1vdmUoKTthLm9yaWdpbmFsVGl0bGUmJgotYS5lbGVtZW50
LmF0dHIoInRpdGxlIixhLm9yaWdpbmFsVGl0bGUpO3JldHVybiBhfSx3aWRnZXQ6ZnVuY3Rpb24o
KXtyZXR1cm4gdGhpcy51aURpYWxvZ30sY2xvc2U6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcyxkLGU7
aWYoZmFsc2UhPT1iLl90cmlnZ2VyKCJiZWZvcmVDbG9zZSIsYSkpe2Iub3ZlcmxheSYmYi5vdmVy
bGF5LmRlc3Ryb3koKTtiLnVpRGlhbG9nLnVuYmluZCgia2V5cHJlc3MudWktZGlhbG9nIik7Yi5f
aXNPcGVuPWZhbHNlO2lmKGIub3B0aW9ucy5oaWRlKWIudWlEaWFsb2cuaGlkZShiLm9wdGlvbnMu
aGlkZSxmdW5jdGlvbigpe2IuX3RyaWdnZXIoImNsb3NlIixhKX0pO2Vsc2V7Yi51aURpYWxvZy5o
aWRlKCk7Yi5fdHJpZ2dlcigiY2xvc2UiLGEpfWMudWkuZGlhbG9nLm92ZXJsYXkucmVzaXplKCk7
aWYoYi5vcHRpb25zLm1vZGFsKXtkPTA7YygiLnVpLWRpYWxvZyIpLmVhY2goZnVuY3Rpb24oKXtp
Zih0aGlzIT09Yi51aURpYWxvZ1swXSl7ZT1jKHRoaXMpLmNzcygiei1pbmRleCIpOwotaXNOYU4o
ZSl8fChkPU1hdGgubWF4KGQsZSkpfX0pO2MudWkuZGlhbG9nLm1heFo9ZH1yZXR1cm4gYn19LGlz
T3BlbjpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9pc09wZW59LG1vdmVUb1RvcDpmdW5jdGlvbihh
LGIpe3ZhciBkPXRoaXMsZT1kLm9wdGlvbnM7aWYoZS5tb2RhbCYmIWF8fCFlLnN0YWNrJiYhZS5t
b2RhbClyZXR1cm4gZC5fdHJpZ2dlcigiZm9jdXMiLGIpO2lmKGUuekluZGV4PmMudWkuZGlhbG9n
Lm1heFopYy51aS5kaWFsb2cubWF4Wj1lLnpJbmRleDtpZihkLm92ZXJsYXkpe2MudWkuZGlhbG9n
Lm1heForPTE7ZC5vdmVybGF5LiRlbC5jc3MoInotaW5kZXgiLGMudWkuZGlhbG9nLm92ZXJsYXku
bWF4Wj1jLnVpLmRpYWxvZy5tYXhaKX1hPXtzY3JvbGxUb3A6ZC5lbGVtZW50LmF0dHIoInNjcm9s
bFRvcCIpLHNjcm9sbExlZnQ6ZC5lbGVtZW50LmF0dHIoInNjcm9sbExlZnQiKX07Yy51aS5kaWFs
b2cubWF4Wis9MTtkLnVpRGlhbG9nLmNzcygiei1pbmRleCIsYy51aS5kaWFsb2cubWF4Wik7Ci1k
LmVsZW1lbnQuYXR0cihhKTtkLl90cmlnZ2VyKCJmb2N1cyIsYik7cmV0dXJuIGR9LG9wZW46ZnVu
Y3Rpb24oKXtpZighdGhpcy5faXNPcGVuKXt2YXIgYT10aGlzLGI9YS5vcHRpb25zLGQ9YS51aURp
YWxvZzthLm92ZXJsYXk9Yi5tb2RhbD9uZXcgYy51aS5kaWFsb2cub3ZlcmxheShhKTpudWxsO2Eu
X3NpemUoKTthLl9wb3NpdGlvbihiLnBvc2l0aW9uKTtkLnNob3coYi5zaG93KTthLm1vdmVUb1Rv
cCh0cnVlKTtiLm1vZGFsJiZkLmJpbmQoImtleXByZXNzLnVpLWRpYWxvZyIsZnVuY3Rpb24oZSl7
aWYoZS5rZXlDb2RlPT09Yy51aS5rZXlDb2RlLlRBQil7dmFyIGc9YygiOnRhYmJhYmxlIix0aGlz
KSxmPWcuZmlsdGVyKCI6Zmlyc3QiKTtnPWcuZmlsdGVyKCI6bGFzdCIpO2lmKGUudGFyZ2V0PT09
Z1swXSYmIWUuc2hpZnRLZXkpe2YuZm9jdXMoMSk7cmV0dXJuIGZhbHNlfWVsc2UgaWYoZS50YXJn
ZXQ9PT1mWzBdJiZlLnNoaWZ0S2V5KXtnLmZvY3VzKDEpO3JldHVybiBmYWxzZX19fSk7Ci1jKGEu
ZWxlbWVudC5maW5kKCI6dGFiYmFibGUiKS5nZXQoKS5jb25jYXQoZC5maW5kKCIudWktZGlhbG9n
LWJ1dHRvbnBhbmUgOnRhYmJhYmxlIikuZ2V0KCkuY29uY2F0KGQuZ2V0KCkpKSkuZXEoMCkuZm9j
dXMoKTthLl9pc09wZW49dHJ1ZTthLl90cmlnZ2VyKCJvcGVuIik7cmV0dXJuIGF9fSxfY3JlYXRl
QnV0dG9uczpmdW5jdGlvbihhKXt2YXIgYj10aGlzLGQ9ZmFsc2UsZT1jKCI8ZGl2PjwvZGl2PiIp
LmFkZENsYXNzKCJ1aS1kaWFsb2ctYnV0dG9ucGFuZSB1aS13aWRnZXQtY29udGVudCB1aS1oZWxw
ZXItY2xlYXJmaXgiKSxnPWMoIjxkaXY+PC9kaXY+IikuYWRkQ2xhc3MoInVpLWRpYWxvZy1idXR0
b25zZXQiKS5hcHBlbmRUbyhlKTtiLnVpRGlhbG9nLmZpbmQoIi51aS1kaWFsb2ctYnV0dG9ucGFu
ZSIpLnJlbW92ZSgpO3R5cGVvZiBhPT09Im9iamVjdCImJmEhPT1udWxsJiZjLmVhY2goYSxmdW5j
dGlvbigpe3JldHVybiEoZD10cnVlKX0pO2lmKGQpe2MuZWFjaChhLGZ1bmN0aW9uKGYsCi1oKXto
PWMuaXNGdW5jdGlvbihoKT97Y2xpY2s6aCx0ZXh0OmZ9Omg7Zj1jKCc8YnV0dG9uIHR5cGU9ImJ1
dHRvbiI+PC9idXR0b24+JykuYXR0cihoLHRydWUpLnVuYmluZCgiY2xpY2siKS5jbGljayhmdW5j
dGlvbigpe2guY2xpY2suYXBwbHkoYi5lbGVtZW50WzBdLGFyZ3VtZW50cyl9KS5hcHBlbmRUbyhn
KTtjLmZuLmJ1dHRvbiYmZi5idXR0b24oKX0pO2UuYXBwZW5kVG8oYi51aURpYWxvZyl9fSxfbWFr
ZURyYWdnYWJsZTpmdW5jdGlvbigpe2Z1bmN0aW9uIGEoZil7cmV0dXJue3Bvc2l0aW9uOmYucG9z
aXRpb24sb2Zmc2V0OmYub2Zmc2V0fX12YXIgYj10aGlzLGQ9Yi5vcHRpb25zLGU9Yyhkb2N1bWVu
dCksZztiLnVpRGlhbG9nLmRyYWdnYWJsZSh7Y2FuY2VsOiIudWktZGlhbG9nLWNvbnRlbnQsIC51
aS1kaWFsb2ctdGl0bGViYXItY2xvc2UiLGhhbmRsZToiLnVpLWRpYWxvZy10aXRsZWJhciIsY29u
dGFpbm1lbnQ6ImRvY3VtZW50IixzdGFydDpmdW5jdGlvbihmLGgpe2c9Ci1kLmhlaWdodD09PSJh
dXRvIj8iYXV0byI6Yyh0aGlzKS5oZWlnaHQoKTtjKHRoaXMpLmhlaWdodChjKHRoaXMpLmhlaWdo
dCgpKS5hZGRDbGFzcygidWktZGlhbG9nLWRyYWdnaW5nIik7Yi5fdHJpZ2dlcigiZHJhZ1N0YXJ0
IixmLGEoaCkpfSxkcmFnOmZ1bmN0aW9uKGYsaCl7Yi5fdHJpZ2dlcigiZHJhZyIsZixhKGgpKX0s
c3RvcDpmdW5jdGlvbihmLGgpe2QucG9zaXRpb249W2gucG9zaXRpb24ubGVmdC1lLnNjcm9sbExl
ZnQoKSxoLnBvc2l0aW9uLnRvcC1lLnNjcm9sbFRvcCgpXTtjKHRoaXMpLnJlbW92ZUNsYXNzKCJ1
aS1kaWFsb2ctZHJhZ2dpbmciKS5oZWlnaHQoZyk7Yi5fdHJpZ2dlcigiZHJhZ1N0b3AiLGYsYSho
KSk7Yy51aS5kaWFsb2cub3ZlcmxheS5yZXNpemUoKX19KX0sX21ha2VSZXNpemFibGU6ZnVuY3Rp
b24oYSl7ZnVuY3Rpb24gYihmKXtyZXR1cm57b3JpZ2luYWxQb3NpdGlvbjpmLm9yaWdpbmFsUG9z
aXRpb24sb3JpZ2luYWxTaXplOmYub3JpZ2luYWxTaXplLAotcG9zaXRpb246Zi5wb3NpdGlvbixz
aXplOmYuc2l6ZX19YT1hPT09aj90aGlzLm9wdGlvbnMucmVzaXphYmxlOmE7dmFyIGQ9dGhpcyxl
PWQub3B0aW9ucyxnPWQudWlEaWFsb2cuY3NzKCJwb3NpdGlvbiIpO2E9dHlwZW9mIGE9PT0ic3Ry
aW5nIj9hOiJuLGUscyx3LHNlLHN3LG5lLG53IjtkLnVpRGlhbG9nLnJlc2l6YWJsZSh7Y2FuY2Vs
OiIudWktZGlhbG9nLWNvbnRlbnQiLGNvbnRhaW5tZW50OiJkb2N1bWVudCIsYWxzb1Jlc2l6ZTpk
LmVsZW1lbnQsbWF4V2lkdGg6ZS5tYXhXaWR0aCxtYXhIZWlnaHQ6ZS5tYXhIZWlnaHQsbWluV2lk
dGg6ZS5taW5XaWR0aCxtaW5IZWlnaHQ6ZC5fbWluSGVpZ2h0KCksaGFuZGxlczphLHN0YXJ0OmZ1
bmN0aW9uKGYsaCl7Yyh0aGlzKS5hZGRDbGFzcygidWktZGlhbG9nLXJlc2l6aW5nIik7ZC5fdHJp
Z2dlcigicmVzaXplU3RhcnQiLGYsYihoKSl9LHJlc2l6ZTpmdW5jdGlvbihmLGgpe2QuX3RyaWdn
ZXIoInJlc2l6ZSIsZixiKGgpKX0sc3RvcDpmdW5jdGlvbihmLAotaCl7Yyh0aGlzKS5yZW1vdmVD
bGFzcygidWktZGlhbG9nLXJlc2l6aW5nIik7ZS5oZWlnaHQ9Yyh0aGlzKS5oZWlnaHQoKTtlLndp
ZHRoPWModGhpcykud2lkdGgoKTtkLl90cmlnZ2VyKCJyZXNpemVTdG9wIixmLGIoaCkpO2MudWku
ZGlhbG9nLm92ZXJsYXkucmVzaXplKCl9fSkuY3NzKCJwb3NpdGlvbiIsZykuZmluZCgiLnVpLXJl
c2l6YWJsZS1zZSIpLmFkZENsYXNzKCJ1aS1pY29uIHVpLWljb24tZ3JpcC1kaWFnb25hbC1zZSIp
fSxfbWluSGVpZ2h0OmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5vcHRpb25zO3JldHVybiBhLmhlaWdo
dD09PSJhdXRvIj9hLm1pbkhlaWdodDpNYXRoLm1pbihhLm1pbkhlaWdodCxhLmhlaWdodCl9LF9w
b3NpdGlvbjpmdW5jdGlvbihhKXt2YXIgYj1bXSxkPVswLDBdLGU7aWYoYSl7aWYodHlwZW9mIGE9
PT0ic3RyaW5nInx8dHlwZW9mIGE9PT0ib2JqZWN0IiYmIjAiaW4gYSl7Yj1hLnNwbGl0P2Euc3Bs
aXQoIiAiKTpbYVswXSxhWzFdXTtpZihiLmxlbmd0aD09PQotMSliWzFdPWJbMF07Yy5lYWNoKFsi
bGVmdCIsInRvcCJdLGZ1bmN0aW9uKGcsZil7aWYoK2JbZ109PT1iW2ddKXtkW2ddPWJbZ107Yltn
XT1mfX0pO2E9e215OmIuam9pbigiICIpLGF0OmIuam9pbigiICIpLG9mZnNldDpkLmpvaW4oIiAi
KX19YT1jLmV4dGVuZCh7fSxjLnVpLmRpYWxvZy5wcm90b3R5cGUub3B0aW9ucy5wb3NpdGlvbixh
KX1lbHNlIGE9Yy51aS5kaWFsb2cucHJvdG90eXBlLm9wdGlvbnMucG9zaXRpb247KGU9dGhpcy51
aURpYWxvZy5pcygiOnZpc2libGUiKSl8fHRoaXMudWlEaWFsb2cuc2hvdygpO3RoaXMudWlEaWFs
b2cuY3NzKHt0b3A6MCxsZWZ0OjB9KS5wb3NpdGlvbihjLmV4dGVuZCh7b2Y6d2luZG93fSxhKSk7
ZXx8dGhpcy51aURpYWxvZy5oaWRlKCl9LF9zZXRPcHRpb25zOmZ1bmN0aW9uKGEpe3ZhciBiPXRo
aXMsZD17fSxlPWZhbHNlO2MuZWFjaChhLGZ1bmN0aW9uKGcsZil7Yi5fc2V0T3B0aW9uKGcsZik7
aWYoZyBpbiBrKWU9dHJ1ZTtpZihnIGluCi1sKWRbZ109Zn0pO2UmJnRoaXMuX3NpemUoKTt0aGlz
LnVpRGlhbG9nLmlzKCI6ZGF0YShyZXNpemFibGUpIikmJnRoaXMudWlEaWFsb2cucmVzaXphYmxl
KCJvcHRpb24iLGQpfSxfc2V0T3B0aW9uOmZ1bmN0aW9uKGEsYil7dmFyIGQ9dGhpcyxlPWQudWlE
aWFsb2c7c3dpdGNoKGEpe2Nhc2UgImJlZm9yZWNsb3NlIjphPSJiZWZvcmVDbG9zZSI7YnJlYWs7
Y2FzZSAiYnV0dG9ucyI6ZC5fY3JlYXRlQnV0dG9ucyhiKTticmVhaztjYXNlICJjbG9zZVRleHQi
OmQudWlEaWFsb2dUaXRsZWJhckNsb3NlVGV4dC50ZXh0KCIiK2IpO2JyZWFrO2Nhc2UgImRpYWxv
Z0NsYXNzIjplLnJlbW92ZUNsYXNzKGQub3B0aW9ucy5kaWFsb2dDbGFzcykuYWRkQ2xhc3MoInVp
LWRpYWxvZyB1aS13aWRnZXQgdWktd2lkZ2V0LWNvbnRlbnQgdWktY29ybmVyLWFsbCAiK2IpO2Jy
ZWFrO2Nhc2UgImRpc2FibGVkIjpiP2UuYWRkQ2xhc3MoInVpLWRpYWxvZy1kaXNhYmxlZCIpOmUu
cmVtb3ZlQ2xhc3MoInVpLWRpYWxvZy1kaXNhYmxlZCIpOwotYnJlYWs7Y2FzZSAiZHJhZ2dhYmxl
Ijp2YXIgZz1lLmlzKCI6ZGF0YShkcmFnZ2FibGUpIik7ZyYmIWImJmUuZHJhZ2dhYmxlKCJkZXN0
cm95Iik7IWcmJmImJmQuX21ha2VEcmFnZ2FibGUoKTticmVhaztjYXNlICJwb3NpdGlvbiI6ZC5f
cG9zaXRpb24oYik7YnJlYWs7Y2FzZSAicmVzaXphYmxlIjooZz1lLmlzKCI6ZGF0YShyZXNpemFi
bGUpIikpJiYhYiYmZS5yZXNpemFibGUoImRlc3Ryb3kiKTtnJiZ0eXBlb2YgYj09PSJzdHJpbmci
JiZlLnJlc2l6YWJsZSgib3B0aW9uIiwiaGFuZGxlcyIsYik7IWcmJmIhPT1mYWxzZSYmZC5fbWFr
ZVJlc2l6YWJsZShiKTticmVhaztjYXNlICJ0aXRsZSI6YygiLnVpLWRpYWxvZy10aXRsZSIsZC51
aURpYWxvZ1RpdGxlYmFyKS5odG1sKCIiKyhifHwiJiMxNjA7IikpO2JyZWFrfWMuV2lkZ2V0LnBy
b3RvdHlwZS5fc2V0T3B0aW9uLmFwcGx5KGQsYXJndW1lbnRzKX0sX3NpemU6ZnVuY3Rpb24oKXt2
YXIgYT10aGlzLm9wdGlvbnMsYixkLGU9Ci10aGlzLnVpRGlhbG9nLmlzKCI6dmlzaWJsZSIpO3Ro
aXMuZWxlbWVudC5zaG93KCkuY3NzKHt3aWR0aDoiYXV0byIsbWluSGVpZ2h0OjAsaGVpZ2h0OjB9
KTtpZihhLm1pbldpZHRoPmEud2lkdGgpYS53aWR0aD1hLm1pbldpZHRoO2I9dGhpcy51aURpYWxv
Zy5jc3Moe2hlaWdodDoiYXV0byIsd2lkdGg6YS53aWR0aH0pLmhlaWdodCgpO2Q9TWF0aC5tYXgo
MCxhLm1pbkhlaWdodC1iKTtpZihhLmhlaWdodD09PSJhdXRvIilpZihjLnN1cHBvcnQubWluSGVp
Z2h0KXRoaXMuZWxlbWVudC5jc3Moe21pbkhlaWdodDpkLGhlaWdodDoiYXV0byJ9KTtlbHNle3Ro
aXMudWlEaWFsb2cuc2hvdygpO2E9dGhpcy5lbGVtZW50LmNzcygiaGVpZ2h0IiwiYXV0byIpLmhl
aWdodCgpO2V8fHRoaXMudWlEaWFsb2cuaGlkZSgpO3RoaXMuZWxlbWVudC5oZWlnaHQoTWF0aC5t
YXgoYSxkKSl9ZWxzZSB0aGlzLmVsZW1lbnQuaGVpZ2h0KE1hdGgubWF4KGEuaGVpZ2h0LWIsMCkp
O3RoaXMudWlEaWFsb2cuaXMoIjpkYXRhKHJlc2l6YWJsZSkiKSYmCi10aGlzLnVpRGlhbG9nLnJl
c2l6YWJsZSgib3B0aW9uIiwibWluSGVpZ2h0Iix0aGlzLl9taW5IZWlnaHQoKSl9fSk7Yy5leHRl
bmQoYy51aS5kaWFsb2cse3ZlcnNpb246IjEuOC4xMCIsdXVpZDowLG1heFo6MCxnZXRUaXRsZUlk
OmZ1bmN0aW9uKGEpe2E9YS5hdHRyKCJpZCIpO2lmKCFhKXt0aGlzLnV1aWQrPTE7YT10aGlzLnV1
aWR9cmV0dXJuInVpLWRpYWxvZy10aXRsZS0iK2F9LG92ZXJsYXk6ZnVuY3Rpb24oYSl7dGhpcy4k
ZWw9Yy51aS5kaWFsb2cub3ZlcmxheS5jcmVhdGUoYSl9fSk7Yy5leHRlbmQoYy51aS5kaWFsb2cu
b3ZlcmxheSx7aW5zdGFuY2VzOltdLG9sZEluc3RhbmNlczpbXSxtYXhaOjAsZXZlbnRzOmMubWFw
KCJmb2N1cyxtb3VzZWRvd24sbW91c2V1cCxrZXlkb3duLGtleXByZXNzLGNsaWNrIi5zcGxpdCgi
LCIpLGZ1bmN0aW9uKGEpe3JldHVybiBhKyIuZGlhbG9nLW92ZXJsYXkifSkuam9pbigiICIpLGNy
ZWF0ZTpmdW5jdGlvbihhKXtpZih0aGlzLmluc3RhbmNlcy5sZW5ndGg9PT0KLTApe3NldFRpbWVv
dXQoZnVuY3Rpb24oKXtjLnVpLmRpYWxvZy5vdmVybGF5Lmluc3RhbmNlcy5sZW5ndGgmJmMoZG9j
dW1lbnQpLmJpbmQoYy51aS5kaWFsb2cub3ZlcmxheS5ldmVudHMsZnVuY3Rpb24oZCl7aWYoYyhk
LnRhcmdldCkuekluZGV4KCk8Yy51aS5kaWFsb2cub3ZlcmxheS5tYXhaKXJldHVybiBmYWxzZX0p
fSwxKTtjKGRvY3VtZW50KS5iaW5kKCJrZXlkb3duLmRpYWxvZy1vdmVybGF5IixmdW5jdGlvbihk
KXtpZihhLm9wdGlvbnMuY2xvc2VPbkVzY2FwZSYmZC5rZXlDb2RlJiZkLmtleUNvZGU9PT1jLnVp
LmtleUNvZGUuRVNDQVBFKXthLmNsb3NlKGQpO2QucHJldmVudERlZmF1bHQoKX19KTtjKHdpbmRv
dykuYmluZCgicmVzaXplLmRpYWxvZy1vdmVybGF5IixjLnVpLmRpYWxvZy5vdmVybGF5LnJlc2l6
ZSl9dmFyIGI9KHRoaXMub2xkSW5zdGFuY2VzLnBvcCgpfHxjKCI8ZGl2PjwvZGl2PiIpLmFkZENs
YXNzKCJ1aS13aWRnZXQtb3ZlcmxheSIpKS5hcHBlbmRUbyhkb2N1bWVudC5ib2R5KS5jc3Moe3dp
ZHRoOnRoaXMud2lkdGgoKSwKLWhlaWdodDp0aGlzLmhlaWdodCgpfSk7Yy5mbi5iZ2lmcmFtZSYm
Yi5iZ2lmcmFtZSgpO3RoaXMuaW5zdGFuY2VzLnB1c2goYik7cmV0dXJuIGJ9LGRlc3Ryb3k6ZnVu
Y3Rpb24oYSl7dmFyIGI9Yy5pbkFycmF5KGEsdGhpcy5pbnN0YW5jZXMpO2IhPS0xJiZ0aGlzLm9s
ZEluc3RhbmNlcy5wdXNoKHRoaXMuaW5zdGFuY2VzLnNwbGljZShiLDEpWzBdKTt0aGlzLmluc3Rh
bmNlcy5sZW5ndGg9PT0wJiZjKFtkb2N1bWVudCx3aW5kb3ddKS51bmJpbmQoIi5kaWFsb2ctb3Zl
cmxheSIpO2EucmVtb3ZlKCk7dmFyIGQ9MDtjLmVhY2godGhpcy5pbnN0YW5jZXMsZnVuY3Rpb24o
KXtkPU1hdGgubWF4KGQsdGhpcy5jc3MoInotaW5kZXgiKSl9KTt0aGlzLm1heFo9ZH0saGVpZ2h0
OmZ1bmN0aW9uKCl7dmFyIGEsYjtpZihjLmJyb3dzZXIubXNpZSYmYy5icm93c2VyLnZlcnNpb248
Nyl7YT1NYXRoLm1heChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsSGVpZ2h0LGRvY3Vt
ZW50LmJvZHkuc2Nyb2xsSGVpZ2h0KTsKLWI9TWF0aC5tYXgoZG9jdW1lbnQuZG9jdW1lbnRFbGVt
ZW50Lm9mZnNldEhlaWdodCxkb2N1bWVudC5ib2R5Lm9mZnNldEhlaWdodCk7cmV0dXJuIGE8Yj9j
KHdpbmRvdykuaGVpZ2h0KCkrInB4IjphKyJweCJ9ZWxzZSByZXR1cm4gYyhkb2N1bWVudCkuaGVp
Z2h0KCkrInB4In0sd2lkdGg6ZnVuY3Rpb24oKXt2YXIgYSxiO2lmKGMuYnJvd3Nlci5tc2llJiZj
LmJyb3dzZXIudmVyc2lvbjw3KXthPU1hdGgubWF4KGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5z
Y3JvbGxXaWR0aCxkb2N1bWVudC5ib2R5LnNjcm9sbFdpZHRoKTtiPU1hdGgubWF4KGRvY3VtZW50
LmRvY3VtZW50RWxlbWVudC5vZmZzZXRXaWR0aCxkb2N1bWVudC5ib2R5Lm9mZnNldFdpZHRoKTty
ZXR1cm4gYTxiP2Mod2luZG93KS53aWR0aCgpKyJweCI6YSsicHgifWVsc2UgcmV0dXJuIGMoZG9j
dW1lbnQpLndpZHRoKCkrInB4In0scmVzaXplOmZ1bmN0aW9uKCl7dmFyIGE9YyhbXSk7Yy5lYWNo
KGMudWkuZGlhbG9nLm92ZXJsYXkuaW5zdGFuY2VzLAotZnVuY3Rpb24oKXthPWEuYWRkKHRoaXMp
fSk7YS5jc3Moe3dpZHRoOjAsaGVpZ2h0OjB9KS5jc3Moe3dpZHRoOmMudWkuZGlhbG9nLm92ZXJs
YXkud2lkdGgoKSxoZWlnaHQ6Yy51aS5kaWFsb2cub3ZlcmxheS5oZWlnaHQoKX0pfX0pO2MuZXh0
ZW5kKGMudWkuZGlhbG9nLm92ZXJsYXkucHJvdG90eXBlLHtkZXN0cm95OmZ1bmN0aW9uKCl7Yy51
aS5kaWFsb2cub3ZlcmxheS5kZXN0cm95KHRoaXMuJGVsKX19KX0pKGpRdWVyeSk7Ci07LyoKLSAq
IGpRdWVyeSBVSSBTbGlkZXIgMS44LjEwCi0gKgotICogQ29weXJpZ2h0IDIwMTEsIEFVVEhPUlMu
dHh0IChodHRwOi8vanF1ZXJ5dWkuY29tL2Fib3V0KQotICogRHVhbCBsaWNlbnNlZCB1bmRlciB0
aGUgTUlUIG9yIEdQTCBWZXJzaW9uIDIgbGljZW5zZXMuCi0gKiBodHRwOi8vanF1ZXJ5Lm9yZy9s
aWNlbnNlCi0gKgotICogaHR0cDovL2RvY3MuanF1ZXJ5LmNvbS9VSS9TbGlkZXIKLSAqCi0gKiBE
ZXBlbmRzOgotICoJanF1ZXJ5LnVpLmNvcmUuanMKLSAqCWpxdWVyeS51aS5tb3VzZS5qcwotICoJ
anF1ZXJ5LnVpLndpZGdldC5qcwotICovCi0oZnVuY3Rpb24oZCl7ZC53aWRnZXQoInVpLnNsaWRl
ciIsZC51aS5tb3VzZSx7d2lkZ2V0RXZlbnRQcmVmaXg6InNsaWRlIixvcHRpb25zOnthbmltYXRl
OmZhbHNlLGRpc3RhbmNlOjAsbWF4OjEwMCxtaW46MCxvcmllbnRhdGlvbjoiaG9yaXpvbnRhbCIs
cmFuZ2U6ZmFsc2Usc3RlcDoxLHZhbHVlOjAsdmFsdWVzOm51bGx9LF9jcmVhdGU6ZnVuY3Rpb24o
KXt2YXIgYj10aGlzLGE9dGhpcy5vcHRpb25zO3RoaXMuX21vdXNlU2xpZGluZz10aGlzLl9rZXlT
bGlkaW5nPWZhbHNlO3RoaXMuX2FuaW1hdGVPZmY9dHJ1ZTt0aGlzLl9oYW5kbGVJbmRleD1udWxs
O3RoaXMuX2RldGVjdE9yaWVudGF0aW9uKCk7dGhpcy5fbW91c2VJbml0KCk7dGhpcy5lbGVtZW50
LmFkZENsYXNzKCJ1aS1zbGlkZXIgdWktc2xpZGVyLSIrdGhpcy5vcmllbnRhdGlvbisiIHVpLXdp
ZGdldCB1aS13aWRnZXQtY29udGVudCB1aS1jb3JuZXItYWxsIik7YS5kaXNhYmxlZCYmdGhpcy5l
bGVtZW50LmFkZENsYXNzKCJ1aS1zbGlkZXItZGlzYWJsZWQgdWktZGlzYWJsZWQiKTsKLXRoaXMu
cmFuZ2U9ZChbXSk7aWYoYS5yYW5nZSl7aWYoYS5yYW5nZT09PXRydWUpe3RoaXMucmFuZ2U9ZCgi
PGRpdj48L2Rpdj4iKTtpZighYS52YWx1ZXMpYS52YWx1ZXM9W3RoaXMuX3ZhbHVlTWluKCksdGhp
cy5fdmFsdWVNaW4oKV07aWYoYS52YWx1ZXMubGVuZ3RoJiZhLnZhbHVlcy5sZW5ndGghPT0yKWEu
dmFsdWVzPVthLnZhbHVlc1swXSxhLnZhbHVlc1swXV19ZWxzZSB0aGlzLnJhbmdlPWQoIjxkaXY+
PC9kaXY+Iik7dGhpcy5yYW5nZS5hcHBlbmRUbyh0aGlzLmVsZW1lbnQpLmFkZENsYXNzKCJ1aS1z
bGlkZXItcmFuZ2UiKTtpZihhLnJhbmdlPT09Im1pbiJ8fGEucmFuZ2U9PT0ibWF4Iil0aGlzLnJh
bmdlLmFkZENsYXNzKCJ1aS1zbGlkZXItcmFuZ2UtIithLnJhbmdlKTt0aGlzLnJhbmdlLmFkZENs
YXNzKCJ1aS13aWRnZXQtaGVhZGVyIil9ZCgiLnVpLXNsaWRlci1oYW5kbGUiLHRoaXMuZWxlbWVu
dCkubGVuZ3RoPT09MCYmZCgiPGEgaHJlZj0nIyc+PC9hPiIpLmFwcGVuZFRvKHRoaXMuZWxlbWVu
dCkuYWRkQ2xhc3MoInVpLXNsaWRlci1oYW5kbGUiKTsKLWlmKGEudmFsdWVzJiZhLnZhbHVlcy5s
ZW5ndGgpZm9yKDtkKCIudWktc2xpZGVyLWhhbmRsZSIsdGhpcy5lbGVtZW50KS5sZW5ndGg8YS52
YWx1ZXMubGVuZ3RoOylkKCI8YSBocmVmPScjJz48L2E+IikuYXBwZW5kVG8odGhpcy5lbGVtZW50
KS5hZGRDbGFzcygidWktc2xpZGVyLWhhbmRsZSIpO3RoaXMuaGFuZGxlcz1kKCIudWktc2xpZGVy
LWhhbmRsZSIsdGhpcy5lbGVtZW50KS5hZGRDbGFzcygidWktc3RhdGUtZGVmYXVsdCB1aS1jb3Ju
ZXItYWxsIik7dGhpcy5oYW5kbGU9dGhpcy5oYW5kbGVzLmVxKDApO3RoaXMuaGFuZGxlcy5hZGQo
dGhpcy5yYW5nZSkuZmlsdGVyKCJhIikuY2xpY2soZnVuY3Rpb24oYyl7Yy5wcmV2ZW50RGVmYXVs
dCgpfSkuaG92ZXIoZnVuY3Rpb24oKXthLmRpc2FibGVkfHxkKHRoaXMpLmFkZENsYXNzKCJ1aS1z
dGF0ZS1ob3ZlciIpfSxmdW5jdGlvbigpe2QodGhpcykucmVtb3ZlQ2xhc3MoInVpLXN0YXRlLWhv
dmVyIil9KS5mb2N1cyhmdW5jdGlvbigpe2lmKGEuZGlzYWJsZWQpZCh0aGlzKS5ibHVyKCk7Ci1l
bHNle2QoIi51aS1zbGlkZXIgLnVpLXN0YXRlLWZvY3VzIikucmVtb3ZlQ2xhc3MoInVpLXN0YXRl
LWZvY3VzIik7ZCh0aGlzKS5hZGRDbGFzcygidWktc3RhdGUtZm9jdXMiKX19KS5ibHVyKGZ1bmN0
aW9uKCl7ZCh0aGlzKS5yZW1vdmVDbGFzcygidWktc3RhdGUtZm9jdXMiKX0pO3RoaXMuaGFuZGxl
cy5lYWNoKGZ1bmN0aW9uKGMpe2QodGhpcykuZGF0YSgiaW5kZXgudWktc2xpZGVyLWhhbmRsZSIs
Yyl9KTt0aGlzLmhhbmRsZXMua2V5ZG93bihmdW5jdGlvbihjKXt2YXIgZT10cnVlLGY9ZCh0aGlz
KS5kYXRhKCJpbmRleC51aS1zbGlkZXItaGFuZGxlIiksaCxnLGk7aWYoIWIub3B0aW9ucy5kaXNh
YmxlZCl7c3dpdGNoKGMua2V5Q29kZSl7Y2FzZSBkLnVpLmtleUNvZGUuSE9NRTpjYXNlIGQudWku
a2V5Q29kZS5FTkQ6Y2FzZSBkLnVpLmtleUNvZGUuUEFHRV9VUDpjYXNlIGQudWkua2V5Q29kZS5Q
QUdFX0RPV046Y2FzZSBkLnVpLmtleUNvZGUuVVA6Y2FzZSBkLnVpLmtleUNvZGUuUklHSFQ6Y2Fz
ZSBkLnVpLmtleUNvZGUuRE9XTjpjYXNlIGQudWkua2V5Q29kZS5MRUZUOmU9Ci1mYWxzZTtpZigh
Yi5fa2V5U2xpZGluZyl7Yi5fa2V5U2xpZGluZz10cnVlO2QodGhpcykuYWRkQ2xhc3MoInVpLXN0
YXRlLWFjdGl2ZSIpO2g9Yi5fc3RhcnQoYyxmKTtpZihoPT09ZmFsc2UpcmV0dXJufWJyZWFrfWk9
Yi5vcHRpb25zLnN0ZXA7aD1iLm9wdGlvbnMudmFsdWVzJiZiLm9wdGlvbnMudmFsdWVzLmxlbmd0
aD8oZz1iLnZhbHVlcyhmKSk6KGc9Yi52YWx1ZSgpKTtzd2l0Y2goYy5rZXlDb2RlKXtjYXNlIGQu
dWkua2V5Q29kZS5IT01FOmc9Yi5fdmFsdWVNaW4oKTticmVhaztjYXNlIGQudWkua2V5Q29kZS5F
TkQ6Zz1iLl92YWx1ZU1heCgpO2JyZWFrO2Nhc2UgZC51aS5rZXlDb2RlLlBBR0VfVVA6Zz1iLl90
cmltQWxpZ25WYWx1ZShoKyhiLl92YWx1ZU1heCgpLWIuX3ZhbHVlTWluKCkpLzUpO2JyZWFrO2Nh
c2UgZC51aS5rZXlDb2RlLlBBR0VfRE9XTjpnPWIuX3RyaW1BbGlnblZhbHVlKGgtKGIuX3ZhbHVl
TWF4KCktYi5fdmFsdWVNaW4oKSkvNSk7YnJlYWs7Y2FzZSBkLnVpLmtleUNvZGUuVVA6Y2FzZSBk
LnVpLmtleUNvZGUuUklHSFQ6aWYoaD09PQotYi5fdmFsdWVNYXgoKSlyZXR1cm47Zz1iLl90cmlt
QWxpZ25WYWx1ZShoK2kpO2JyZWFrO2Nhc2UgZC51aS5rZXlDb2RlLkRPV046Y2FzZSBkLnVpLmtl
eUNvZGUuTEVGVDppZihoPT09Yi5fdmFsdWVNaW4oKSlyZXR1cm47Zz1iLl90cmltQWxpZ25WYWx1
ZShoLWkpO2JyZWFrfWIuX3NsaWRlKGMsZixnKTtyZXR1cm4gZX19KS5rZXl1cChmdW5jdGlvbihj
KXt2YXIgZT1kKHRoaXMpLmRhdGEoImluZGV4LnVpLXNsaWRlci1oYW5kbGUiKTtpZihiLl9rZXlT
bGlkaW5nKXtiLl9rZXlTbGlkaW5nPWZhbHNlO2IuX3N0b3AoYyxlKTtiLl9jaGFuZ2UoYyxlKTtk
KHRoaXMpLnJlbW92ZUNsYXNzKCJ1aS1zdGF0ZS1hY3RpdmUiKX19KTt0aGlzLl9yZWZyZXNoVmFs
dWUoKTt0aGlzLl9hbmltYXRlT2ZmPWZhbHNlfSxkZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy5oYW5k
bGVzLnJlbW92ZSgpO3RoaXMucmFuZ2UucmVtb3ZlKCk7dGhpcy5lbGVtZW50LnJlbW92ZUNsYXNz
KCJ1aS1zbGlkZXIgdWktc2xpZGVyLWhvcml6b250YWwgdWktc2xpZGVyLXZlcnRpY2FsIHVpLXNs
aWRlci1kaXNhYmxlZCB1aS13aWRnZXQgdWktd2lkZ2V0LWNvbnRlbnQgdWktY29ybmVyLWFsbCIp
LnJlbW92ZURhdGEoInNsaWRlciIpLnVuYmluZCgiLnNsaWRlciIpOwotdGhpcy5fbW91c2VEZXN0
cm95KCk7cmV0dXJuIHRoaXN9LF9tb3VzZUNhcHR1cmU6ZnVuY3Rpb24oYil7dmFyIGE9dGhpcy5v
cHRpb25zLGMsZSxmLGgsZztpZihhLmRpc2FibGVkKXJldHVybiBmYWxzZTt0aGlzLmVsZW1lbnRT
aXplPXt3aWR0aDp0aGlzLmVsZW1lbnQub3V0ZXJXaWR0aCgpLGhlaWdodDp0aGlzLmVsZW1lbnQu
b3V0ZXJIZWlnaHQoKX07dGhpcy5lbGVtZW50T2Zmc2V0PXRoaXMuZWxlbWVudC5vZmZzZXQoKTtj
PXRoaXMuX25vcm1WYWx1ZUZyb21Nb3VzZSh7eDpiLnBhZ2VYLHk6Yi5wYWdlWX0pO2U9dGhpcy5f
dmFsdWVNYXgoKS10aGlzLl92YWx1ZU1pbigpKzE7aD10aGlzO3RoaXMuaGFuZGxlcy5lYWNoKGZ1
bmN0aW9uKGkpe3ZhciBqPU1hdGguYWJzKGMtaC52YWx1ZXMoaSkpO2lmKGU+ail7ZT1qO2Y9ZCh0
aGlzKTtnPWl9fSk7aWYoYS5yYW5nZT09PXRydWUmJnRoaXMudmFsdWVzKDEpPT09YS5taW4pe2cr
PTE7Zj1kKHRoaXMuaGFuZGxlc1tnXSl9aWYodGhpcy5fc3RhcnQoYiwKLWcpPT09ZmFsc2UpcmV0
dXJuIGZhbHNlO3RoaXMuX21vdXNlU2xpZGluZz10cnVlO2guX2hhbmRsZUluZGV4PWc7Zi5hZGRD
bGFzcygidWktc3RhdGUtYWN0aXZlIikuZm9jdXMoKTthPWYub2Zmc2V0KCk7dGhpcy5fY2xpY2tP
ZmZzZXQ9IWQoYi50YXJnZXQpLnBhcmVudHMoKS5hbmRTZWxmKCkuaXMoIi51aS1zbGlkZXItaGFu
ZGxlIik/e2xlZnQ6MCx0b3A6MH06e2xlZnQ6Yi5wYWdlWC1hLmxlZnQtZi53aWR0aCgpLzIsdG9w
OmIucGFnZVktYS50b3AtZi5oZWlnaHQoKS8yLShwYXJzZUludChmLmNzcygiYm9yZGVyVG9wV2lk
dGgiKSwxMCl8fDApLShwYXJzZUludChmLmNzcygiYm9yZGVyQm90dG9tV2lkdGgiKSwxMCl8fDAp
KyhwYXJzZUludChmLmNzcygibWFyZ2luVG9wIiksMTApfHwwKX07dGhpcy5oYW5kbGVzLmhhc0Ns
YXNzKCJ1aS1zdGF0ZS1ob3ZlciIpfHx0aGlzLl9zbGlkZShiLGcsYyk7cmV0dXJuIHRoaXMuX2Fu
aW1hdGVPZmY9dHJ1ZX0sX21vdXNlU3RhcnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdHJ1ZX0sCi1fbW91
c2VEcmFnOmZ1bmN0aW9uKGIpe3ZhciBhPXRoaXMuX25vcm1WYWx1ZUZyb21Nb3VzZSh7eDpiLnBh
Z2VYLHk6Yi5wYWdlWX0pO3RoaXMuX3NsaWRlKGIsdGhpcy5faGFuZGxlSW5kZXgsYSk7cmV0dXJu
IGZhbHNlfSxfbW91c2VTdG9wOmZ1bmN0aW9uKGIpe3RoaXMuaGFuZGxlcy5yZW1vdmVDbGFzcygi
dWktc3RhdGUtYWN0aXZlIik7dGhpcy5fbW91c2VTbGlkaW5nPWZhbHNlO3RoaXMuX3N0b3AoYix0
aGlzLl9oYW5kbGVJbmRleCk7dGhpcy5fY2hhbmdlKGIsdGhpcy5faGFuZGxlSW5kZXgpO3RoaXMu
X2NsaWNrT2Zmc2V0PXRoaXMuX2hhbmRsZUluZGV4PW51bGw7cmV0dXJuIHRoaXMuX2FuaW1hdGVP
ZmY9ZmFsc2V9LF9kZXRlY3RPcmllbnRhdGlvbjpmdW5jdGlvbigpe3RoaXMub3JpZW50YXRpb249
dGhpcy5vcHRpb25zLm9yaWVudGF0aW9uPT09InZlcnRpY2FsIj8idmVydGljYWwiOiJob3Jpem9u
dGFsIn0sX25vcm1WYWx1ZUZyb21Nb3VzZTpmdW5jdGlvbihiKXt2YXIgYTsKLWlmKHRoaXMub3Jp
ZW50YXRpb249PT0iaG9yaXpvbnRhbCIpe2E9dGhpcy5lbGVtZW50U2l6ZS53aWR0aDtiPWIueC10
aGlzLmVsZW1lbnRPZmZzZXQubGVmdC0odGhpcy5fY2xpY2tPZmZzZXQ/dGhpcy5fY2xpY2tPZmZz
ZXQubGVmdDowKX1lbHNle2E9dGhpcy5lbGVtZW50U2l6ZS5oZWlnaHQ7Yj1iLnktdGhpcy5lbGVt
ZW50T2Zmc2V0LnRvcC0odGhpcy5fY2xpY2tPZmZzZXQ/dGhpcy5fY2xpY2tPZmZzZXQudG9wOjAp
fWE9Yi9hO2lmKGE+MSlhPTE7aWYoYTwwKWE9MDtpZih0aGlzLm9yaWVudGF0aW9uPT09InZlcnRp
Y2FsIilhPTEtYTtiPXRoaXMuX3ZhbHVlTWF4KCktdGhpcy5fdmFsdWVNaW4oKTtyZXR1cm4gdGhp
cy5fdHJpbUFsaWduVmFsdWUodGhpcy5fdmFsdWVNaW4oKSthKmIpfSxfc3RhcnQ6ZnVuY3Rpb24o
YixhKXt2YXIgYz17aGFuZGxlOnRoaXMuaGFuZGxlc1thXSx2YWx1ZTp0aGlzLnZhbHVlKCl9O2lm
KHRoaXMub3B0aW9ucy52YWx1ZXMmJnRoaXMub3B0aW9ucy52YWx1ZXMubGVuZ3RoKXtjLnZhbHVl
PQotdGhpcy52YWx1ZXMoYSk7Yy52YWx1ZXM9dGhpcy52YWx1ZXMoKX1yZXR1cm4gdGhpcy5fdHJp
Z2dlcigic3RhcnQiLGIsYyl9LF9zbGlkZTpmdW5jdGlvbihiLGEsYyl7dmFyIGU7aWYodGhpcy5v
cHRpb25zLnZhbHVlcyYmdGhpcy5vcHRpb25zLnZhbHVlcy5sZW5ndGgpe2U9dGhpcy52YWx1ZXMo
YT8wOjEpO2lmKHRoaXMub3B0aW9ucy52YWx1ZXMubGVuZ3RoPT09MiYmdGhpcy5vcHRpb25zLnJh
bmdlPT09dHJ1ZSYmKGE9PT0wJiZjPmV8fGE9PT0xJiZjPGUpKWM9ZTtpZihjIT09dGhpcy52YWx1
ZXMoYSkpe2U9dGhpcy52YWx1ZXMoKTtlW2FdPWM7Yj10aGlzLl90cmlnZ2VyKCJzbGlkZSIsYix7
aGFuZGxlOnRoaXMuaGFuZGxlc1thXSx2YWx1ZTpjLHZhbHVlczplfSk7dGhpcy52YWx1ZXMoYT8w
OjEpO2IhPT1mYWxzZSYmdGhpcy52YWx1ZXMoYSxjLHRydWUpfX1lbHNlIGlmKGMhPT10aGlzLnZh
bHVlKCkpe2I9dGhpcy5fdHJpZ2dlcigic2xpZGUiLGIse2hhbmRsZTp0aGlzLmhhbmRsZXNbYV0s
Ci12YWx1ZTpjfSk7YiE9PWZhbHNlJiZ0aGlzLnZhbHVlKGMpfX0sX3N0b3A6ZnVuY3Rpb24oYixh
KXt2YXIgYz17aGFuZGxlOnRoaXMuaGFuZGxlc1thXSx2YWx1ZTp0aGlzLnZhbHVlKCl9O2lmKHRo
aXMub3B0aW9ucy52YWx1ZXMmJnRoaXMub3B0aW9ucy52YWx1ZXMubGVuZ3RoKXtjLnZhbHVlPXRo
aXMudmFsdWVzKGEpO2MudmFsdWVzPXRoaXMudmFsdWVzKCl9dGhpcy5fdHJpZ2dlcigic3RvcCIs
YixjKX0sX2NoYW5nZTpmdW5jdGlvbihiLGEpe2lmKCF0aGlzLl9rZXlTbGlkaW5nJiYhdGhpcy5f
bW91c2VTbGlkaW5nKXt2YXIgYz17aGFuZGxlOnRoaXMuaGFuZGxlc1thXSx2YWx1ZTp0aGlzLnZh
bHVlKCl9O2lmKHRoaXMub3B0aW9ucy52YWx1ZXMmJnRoaXMub3B0aW9ucy52YWx1ZXMubGVuZ3Ro
KXtjLnZhbHVlPXRoaXMudmFsdWVzKGEpO2MudmFsdWVzPXRoaXMudmFsdWVzKCl9dGhpcy5fdHJp
Z2dlcigiY2hhbmdlIixiLGMpfX0sdmFsdWU6ZnVuY3Rpb24oYil7aWYoYXJndW1lbnRzLmxlbmd0
aCl7dGhpcy5vcHRpb25zLnZhbHVlPQotdGhpcy5fdHJpbUFsaWduVmFsdWUoYik7dGhpcy5fcmVm
cmVzaFZhbHVlKCk7dGhpcy5fY2hhbmdlKG51bGwsMCl9cmV0dXJuIHRoaXMuX3ZhbHVlKCl9LHZh
bHVlczpmdW5jdGlvbihiLGEpe3ZhciBjLGUsZjtpZihhcmd1bWVudHMubGVuZ3RoPjEpe3RoaXMu
b3B0aW9ucy52YWx1ZXNbYl09dGhpcy5fdHJpbUFsaWduVmFsdWUoYSk7dGhpcy5fcmVmcmVzaFZh
bHVlKCk7dGhpcy5fY2hhbmdlKG51bGwsYil9aWYoYXJndW1lbnRzLmxlbmd0aClpZihkLmlzQXJy
YXkoYXJndW1lbnRzWzBdKSl7Yz10aGlzLm9wdGlvbnMudmFsdWVzO2U9YXJndW1lbnRzWzBdO2Zv
cihmPTA7ZjxjLmxlbmd0aDtmKz0xKXtjW2ZdPXRoaXMuX3RyaW1BbGlnblZhbHVlKGVbZl0pO3Ro
aXMuX2NoYW5nZShudWxsLGYpfXRoaXMuX3JlZnJlc2hWYWx1ZSgpfWVsc2UgcmV0dXJuIHRoaXMu
b3B0aW9ucy52YWx1ZXMmJnRoaXMub3B0aW9ucy52YWx1ZXMubGVuZ3RoP3RoaXMuX3ZhbHVlcyhi
KTp0aGlzLnZhbHVlKCk7Ci1lbHNlIHJldHVybiB0aGlzLl92YWx1ZXMoKX0sX3NldE9wdGlvbjpm
dW5jdGlvbihiLGEpe3ZhciBjLGU9MDtpZihkLmlzQXJyYXkodGhpcy5vcHRpb25zLnZhbHVlcykp
ZT10aGlzLm9wdGlvbnMudmFsdWVzLmxlbmd0aDtkLldpZGdldC5wcm90b3R5cGUuX3NldE9wdGlv
bi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7c3dpdGNoKGIpe2Nhc2UgImRpc2FibGVkIjppZihhKXt0
aGlzLmhhbmRsZXMuZmlsdGVyKCIudWktc3RhdGUtZm9jdXMiKS5ibHVyKCk7dGhpcy5oYW5kbGVz
LnJlbW92ZUNsYXNzKCJ1aS1zdGF0ZS1ob3ZlciIpO3RoaXMuaGFuZGxlcy5hdHRyKCJkaXNhYmxl
ZCIsImRpc2FibGVkIik7dGhpcy5lbGVtZW50LmFkZENsYXNzKCJ1aS1kaXNhYmxlZCIpfWVsc2V7
dGhpcy5oYW5kbGVzLnJlbW92ZUF0dHIoImRpc2FibGVkIik7dGhpcy5lbGVtZW50LnJlbW92ZUNs
YXNzKCJ1aS1kaXNhYmxlZCIpfWJyZWFrO2Nhc2UgIm9yaWVudGF0aW9uIjp0aGlzLl9kZXRlY3RP
cmllbnRhdGlvbigpOwotdGhpcy5lbGVtZW50LnJlbW92ZUNsYXNzKCJ1aS1zbGlkZXItaG9yaXpv
bnRhbCB1aS1zbGlkZXItdmVydGljYWwiKS5hZGRDbGFzcygidWktc2xpZGVyLSIrdGhpcy5vcmll
bnRhdGlvbik7dGhpcy5fcmVmcmVzaFZhbHVlKCk7YnJlYWs7Y2FzZSAidmFsdWUiOnRoaXMuX2Fu
aW1hdGVPZmY9dHJ1ZTt0aGlzLl9yZWZyZXNoVmFsdWUoKTt0aGlzLl9jaGFuZ2UobnVsbCwwKTt0
aGlzLl9hbmltYXRlT2ZmPWZhbHNlO2JyZWFrO2Nhc2UgInZhbHVlcyI6dGhpcy5fYW5pbWF0ZU9m
Zj10cnVlO3RoaXMuX3JlZnJlc2hWYWx1ZSgpO2ZvcihjPTA7YzxlO2MrPTEpdGhpcy5fY2hhbmdl
KG51bGwsYyk7dGhpcy5fYW5pbWF0ZU9mZj1mYWxzZTticmVha319LF92YWx1ZTpmdW5jdGlvbigp
e3ZhciBiPXRoaXMub3B0aW9ucy52YWx1ZTtyZXR1cm4gYj10aGlzLl90cmltQWxpZ25WYWx1ZShi
KX0sX3ZhbHVlczpmdW5jdGlvbihiKXt2YXIgYSxjO2lmKGFyZ3VtZW50cy5sZW5ndGgpe2E9dGhp
cy5vcHRpb25zLnZhbHVlc1tiXTsKLXJldHVybiBhPXRoaXMuX3RyaW1BbGlnblZhbHVlKGEpfWVs
c2V7YT10aGlzLm9wdGlvbnMudmFsdWVzLnNsaWNlKCk7Zm9yKGM9MDtjPGEubGVuZ3RoO2MrPTEp
YVtjXT10aGlzLl90cmltQWxpZ25WYWx1ZShhW2NdKTtyZXR1cm4gYX19LF90cmltQWxpZ25WYWx1
ZTpmdW5jdGlvbihiKXtpZihiPD10aGlzLl92YWx1ZU1pbigpKXJldHVybiB0aGlzLl92YWx1ZU1p
bigpO2lmKGI+PXRoaXMuX3ZhbHVlTWF4KCkpcmV0dXJuIHRoaXMuX3ZhbHVlTWF4KCk7dmFyIGE9
dGhpcy5vcHRpb25zLnN0ZXA+MD90aGlzLm9wdGlvbnMuc3RlcDoxLGM9KGItdGhpcy5fdmFsdWVN
aW4oKSklYTthbGlnblZhbHVlPWItYztpZihNYXRoLmFicyhjKSoyPj1hKWFsaWduVmFsdWUrPWM+
MD9hOi1hO3JldHVybiBwYXJzZUZsb2F0KGFsaWduVmFsdWUudG9GaXhlZCg1KSl9LF92YWx1ZU1p
bjpmdW5jdGlvbigpe3JldHVybiB0aGlzLm9wdGlvbnMubWlufSxfdmFsdWVNYXg6ZnVuY3Rpb24o
KXtyZXR1cm4gdGhpcy5vcHRpb25zLm1heH0sCi1fcmVmcmVzaFZhbHVlOmZ1bmN0aW9uKCl7dmFy
IGI9dGhpcy5vcHRpb25zLnJhbmdlLGE9dGhpcy5vcHRpb25zLGM9dGhpcyxlPSF0aGlzLl9hbmlt
YXRlT2ZmP2EuYW5pbWF0ZTpmYWxzZSxmLGg9e30sZyxpLGosbDtpZih0aGlzLm9wdGlvbnMudmFs
dWVzJiZ0aGlzLm9wdGlvbnMudmFsdWVzLmxlbmd0aCl0aGlzLmhhbmRsZXMuZWFjaChmdW5jdGlv
bihrKXtmPShjLnZhbHVlcyhrKS1jLl92YWx1ZU1pbigpKS8oYy5fdmFsdWVNYXgoKS1jLl92YWx1
ZU1pbigpKSoxMDA7aFtjLm9yaWVudGF0aW9uPT09Imhvcml6b250YWwiPyJsZWZ0IjoiYm90dG9t
Il09ZisiJSI7ZCh0aGlzKS5zdG9wKDEsMSlbZT8iYW5pbWF0ZSI6ImNzcyJdKGgsYS5hbmltYXRl
KTtpZihjLm9wdGlvbnMucmFuZ2U9PT10cnVlKWlmKGMub3JpZW50YXRpb249PT0iaG9yaXpvbnRh
bCIpe2lmKGs9PT0wKWMucmFuZ2Uuc3RvcCgxLDEpW2U/ImFuaW1hdGUiOiJjc3MiXSh7bGVmdDpm
KyIlIn0sYS5hbmltYXRlKTsKLWlmKGs9PT0xKWMucmFuZ2VbZT8iYW5pbWF0ZSI6ImNzcyJdKHt3
aWR0aDpmLWcrIiUifSx7cXVldWU6ZmFsc2UsZHVyYXRpb246YS5hbmltYXRlfSl9ZWxzZXtpZihr
PT09MCljLnJhbmdlLnN0b3AoMSwxKVtlPyJhbmltYXRlIjoiY3NzIl0oe2JvdHRvbTpmKyIlIn0s
YS5hbmltYXRlKTtpZihrPT09MSljLnJhbmdlW2U/ImFuaW1hdGUiOiJjc3MiXSh7aGVpZ2h0OmYt
ZysiJSJ9LHtxdWV1ZTpmYWxzZSxkdXJhdGlvbjphLmFuaW1hdGV9KX1nPWZ9KTtlbHNle2k9dGhp
cy52YWx1ZSgpO2o9dGhpcy5fdmFsdWVNaW4oKTtsPXRoaXMuX3ZhbHVlTWF4KCk7Zj1sIT09aj8o
aS1qKS8obC1qKSoxMDA6MDtoW2Mub3JpZW50YXRpb249PT0iaG9yaXpvbnRhbCI/ImxlZnQiOiJi
b3R0b20iXT1mKyIlIjt0aGlzLmhhbmRsZS5zdG9wKDEsMSlbZT8iYW5pbWF0ZSI6ImNzcyJdKGgs
YS5hbmltYXRlKTtpZihiPT09Im1pbiImJnRoaXMub3JpZW50YXRpb249PT0iaG9yaXpvbnRhbCIp
dGhpcy5yYW5nZS5zdG9wKDEsCi0xKVtlPyJhbmltYXRlIjoiY3NzIl0oe3dpZHRoOmYrIiUifSxh
LmFuaW1hdGUpO2lmKGI9PT0ibWF4IiYmdGhpcy5vcmllbnRhdGlvbj09PSJob3Jpem9udGFsIil0
aGlzLnJhbmdlW2U/ImFuaW1hdGUiOiJjc3MiXSh7d2lkdGg6MTAwLWYrIiUifSx7cXVldWU6ZmFs
c2UsZHVyYXRpb246YS5hbmltYXRlfSk7aWYoYj09PSJtaW4iJiZ0aGlzLm9yaWVudGF0aW9uPT09
InZlcnRpY2FsIil0aGlzLnJhbmdlLnN0b3AoMSwxKVtlPyJhbmltYXRlIjoiY3NzIl0oe2hlaWdo
dDpmKyIlIn0sYS5hbmltYXRlKTtpZihiPT09Im1heCImJnRoaXMub3JpZW50YXRpb249PT0idmVy
dGljYWwiKXRoaXMucmFuZ2VbZT8iYW5pbWF0ZSI6ImNzcyJdKHtoZWlnaHQ6MTAwLWYrIiUifSx7
cXVldWU6ZmFsc2UsZHVyYXRpb246YS5hbmltYXRlfSl9fX0pO2QuZXh0ZW5kKGQudWkuc2xpZGVy
LHt2ZXJzaW9uOiIxLjguMTAifSl9KShqUXVlcnkpOwotOy8qCi0gKiBqUXVlcnkgVUkgVGFicyAx
LjguMTAKLSAqCi0gKiBDb3B5cmlnaHQgMjAxMSwgQVVUSE9SUy50eHQgKGh0dHA6Ly9qcXVlcnl1
aS5jb20vYWJvdXQpCi0gKiBEdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgb3IgR1BMIFZlcnNp
b24gMiBsaWNlbnNlcy4KLSAqIGh0dHA6Ly9qcXVlcnkub3JnL2xpY2Vuc2UKLSAqCi0gKiBodHRw
Oi8vZG9jcy5qcXVlcnkuY29tL1VJL1RhYnMKLSAqCi0gKiBEZXBlbmRzOgotICoJanF1ZXJ5LnVp
LmNvcmUuanMKLSAqCWpxdWVyeS51aS53aWRnZXQuanMKLSAqLwotKGZ1bmN0aW9uKGQscCl7ZnVu
Y3Rpb24gdSgpe3JldHVybisrdn1mdW5jdGlvbiB3KCl7cmV0dXJuKyt4fXZhciB2PTAseD0wO2Qu
d2lkZ2V0KCJ1aS50YWJzIix7b3B0aW9uczp7YWRkOm51bGwsYWpheE9wdGlvbnM6bnVsbCxjYWNo
ZTpmYWxzZSxjb29raWU6bnVsbCxjb2xsYXBzaWJsZTpmYWxzZSxkaXNhYmxlOm51bGwsZGlzYWJs
ZWQ6W10sZW5hYmxlOm51bGwsZXZlbnQ6ImNsaWNrIixmeDpudWxsLGlkUHJlZml4OiJ1aS10YWJz
LSIsbG9hZDpudWxsLHBhbmVsVGVtcGxhdGU6IjxkaXY+PC9kaXY+IixyZW1vdmU6bnVsbCxzZWxl
Y3Q6bnVsbCxzaG93Om51bGwsc3Bpbm5lcjoiPGVtPkxvYWRpbmcmIzgyMzA7PC9lbT4iLHRhYlRl
bXBsYXRlOiI8bGk+PGEgaHJlZj0nI3tocmVmfSc+PHNwYW4+I3tsYWJlbH08L3NwYW4+PC9hPjwv
bGk+In0sX2NyZWF0ZTpmdW5jdGlvbigpe3RoaXMuX3RhYmlmeSh0cnVlKX0sX3NldE9wdGlvbjpm
dW5jdGlvbihiLGUpe2lmKGI9PSJzZWxlY3RlZCIpdGhpcy5vcHRpb25zLmNvbGxhcHNpYmxlJiYK
LWU9PXRoaXMub3B0aW9ucy5zZWxlY3RlZHx8dGhpcy5zZWxlY3QoZSk7ZWxzZXt0aGlzLm9wdGlv
bnNbYl09ZTt0aGlzLl90YWJpZnkoKX19LF90YWJJZDpmdW5jdGlvbihiKXtyZXR1cm4gYi50aXRs
ZSYmYi50aXRsZS5yZXBsYWNlKC9ccy9nLCJfIikucmVwbGFjZSgvW15cd1x1MDBjMC1cdUZGRkYt
XS9nLCIiKXx8dGhpcy5vcHRpb25zLmlkUHJlZml4K3UoKX0sX3Nhbml0aXplU2VsZWN0b3I6ZnVu
Y3Rpb24oYil7cmV0dXJuIGIucmVwbGFjZSgvOi9nLCJcXDoiKX0sX2Nvb2tpZTpmdW5jdGlvbigp
e3ZhciBiPXRoaXMuY29va2llfHwodGhpcy5jb29raWU9dGhpcy5vcHRpb25zLmNvb2tpZS5uYW1l
fHwidWktdGFicy0iK3coKSk7cmV0dXJuIGQuY29va2llLmFwcGx5KG51bGwsW2JdLmNvbmNhdChk
Lm1ha2VBcnJheShhcmd1bWVudHMpKSl9LF91aTpmdW5jdGlvbihiLGUpe3JldHVybnt0YWI6Yixw
YW5lbDplLGluZGV4OnRoaXMuYW5jaG9ycy5pbmRleChiKX19LF9jbGVhbnVwOmZ1bmN0aW9uKCl7
dGhpcy5saXMuZmlsdGVyKCIudWktc3RhdGUtcHJvY2Vzc2luZyIpLnJlbW92ZUNsYXNzKCJ1aS1z
dGF0ZS1wcm9jZXNzaW5nIikuZmluZCgic3BhbjpkYXRhKGxhYmVsLnRhYnMpIikuZWFjaChmdW5j
dGlvbigpe3ZhciBiPQotZCh0aGlzKTtiLmh0bWwoYi5kYXRhKCJsYWJlbC50YWJzIikpLnJlbW92
ZURhdGEoImxhYmVsLnRhYnMiKX0pfSxfdGFiaWZ5OmZ1bmN0aW9uKGIpe2Z1bmN0aW9uIGUoZyxm
KXtnLmNzcygiZGlzcGxheSIsIiIpOyFkLnN1cHBvcnQub3BhY2l0eSYmZi5vcGFjaXR5JiZnWzBd
LnN0eWxlLnJlbW92ZUF0dHJpYnV0ZSgiZmlsdGVyIil9dmFyIGE9dGhpcyxjPXRoaXMub3B0aW9u
cyxoPS9eIy4rLzt0aGlzLmxpc3Q9dGhpcy5lbGVtZW50LmZpbmQoIm9sLHVsIikuZXEoMCk7dGhp
cy5saXM9ZCgiID4gbGk6aGFzKGFbaHJlZl0pIix0aGlzLmxpc3QpO3RoaXMuYW5jaG9ycz10aGlz
Lmxpcy5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gZCgiYSIsdGhpcylbMF19KTt0aGlzLnBhbmVscz1k
KFtdKTt0aGlzLmFuY2hvcnMuZWFjaChmdW5jdGlvbihnLGYpe3ZhciBpPWQoZikuYXR0cigiaHJl
ZiIpLGw9aS5zcGxpdCgiIyIpWzBdLHE7aWYobCYmKGw9PT1sb2NhdGlvbi50b1N0cmluZygpLnNw
bGl0KCIjIilbMF18fAotKHE9ZCgiYmFzZSIpWzBdKSYmbD09PXEuaHJlZikpe2k9Zi5oYXNoO2Yu
aHJlZj1pfWlmKGgudGVzdChpKSlhLnBhbmVscz1hLnBhbmVscy5hZGQoYS5lbGVtZW50LmZpbmQo
YS5fc2FuaXRpemVTZWxlY3RvcihpKSkpO2Vsc2UgaWYoaSYmaSE9PSIjIil7ZC5kYXRhKGYsImhy
ZWYudGFicyIsaSk7ZC5kYXRhKGYsImxvYWQudGFicyIsaS5yZXBsYWNlKC8jLiokLywiIikpO2k9
YS5fdGFiSWQoZik7Zi5ocmVmPSIjIitpO2Y9YS5lbGVtZW50LmZpbmQoIiMiK2kpO2lmKCFmLmxl
bmd0aCl7Zj1kKGMucGFuZWxUZW1wbGF0ZSkuYXR0cigiaWQiLGkpLmFkZENsYXNzKCJ1aS10YWJz
LXBhbmVsIHVpLXdpZGdldC1jb250ZW50IHVpLWNvcm5lci1ib3R0b20iKS5pbnNlcnRBZnRlcihh
LnBhbmVsc1tnLTFdfHxhLmxpc3QpO2YuZGF0YSgiZGVzdHJveS50YWJzIix0cnVlKX1hLnBhbmVs
cz1hLnBhbmVscy5hZGQoZil9ZWxzZSBjLmRpc2FibGVkLnB1c2goZyl9KTtpZihiKXt0aGlzLmVs
ZW1lbnQuYWRkQ2xhc3MoInVpLXRhYnMgdWktd2lkZ2V0IHVpLXdpZGdldC1jb250ZW50IHVpLWNv
cm5lci1hbGwiKTsKLXRoaXMubGlzdC5hZGRDbGFzcygidWktdGFicy1uYXYgdWktaGVscGVyLXJl
c2V0IHVpLWhlbHBlci1jbGVhcmZpeCB1aS13aWRnZXQtaGVhZGVyIHVpLWNvcm5lci1hbGwiKTt0
aGlzLmxpcy5hZGRDbGFzcygidWktc3RhdGUtZGVmYXVsdCB1aS1jb3JuZXItdG9wIik7dGhpcy5w
YW5lbHMuYWRkQ2xhc3MoInVpLXRhYnMtcGFuZWwgdWktd2lkZ2V0LWNvbnRlbnQgdWktY29ybmVy
LWJvdHRvbSIpO2lmKGMuc2VsZWN0ZWQ9PT1wKXtsb2NhdGlvbi5oYXNoJiZ0aGlzLmFuY2hvcnMu
ZWFjaChmdW5jdGlvbihnLGYpe2lmKGYuaGFzaD09bG9jYXRpb24uaGFzaCl7Yy5zZWxlY3RlZD1n
O3JldHVybiBmYWxzZX19KTtpZih0eXBlb2YgYy5zZWxlY3RlZCE9PSJudW1iZXIiJiZjLmNvb2tp
ZSljLnNlbGVjdGVkPXBhcnNlSW50KGEuX2Nvb2tpZSgpLDEwKTtpZih0eXBlb2YgYy5zZWxlY3Rl
ZCE9PSJudW1iZXIiJiZ0aGlzLmxpcy5maWx0ZXIoIi51aS10YWJzLXNlbGVjdGVkIikubGVuZ3Ro
KWMuc2VsZWN0ZWQ9Ci10aGlzLmxpcy5pbmRleCh0aGlzLmxpcy5maWx0ZXIoIi51aS10YWJzLXNl
bGVjdGVkIikpO2Muc2VsZWN0ZWQ9Yy5zZWxlY3RlZHx8KHRoaXMubGlzLmxlbmd0aD8wOi0xKX1l
bHNlIGlmKGMuc2VsZWN0ZWQ9PT1udWxsKWMuc2VsZWN0ZWQ9LTE7Yy5zZWxlY3RlZD1jLnNlbGVj
dGVkPj0wJiZ0aGlzLmFuY2hvcnNbYy5zZWxlY3RlZF18fGMuc2VsZWN0ZWQ8MD9jLnNlbGVjdGVk
OjA7Yy5kaXNhYmxlZD1kLnVuaXF1ZShjLmRpc2FibGVkLmNvbmNhdChkLm1hcCh0aGlzLmxpcy5m
aWx0ZXIoIi51aS1zdGF0ZS1kaXNhYmxlZCIpLGZ1bmN0aW9uKGcpe3JldHVybiBhLmxpcy5pbmRl
eChnKX0pKSkuc29ydCgpO2QuaW5BcnJheShjLnNlbGVjdGVkLGMuZGlzYWJsZWQpIT0tMSYmYy5k
aXNhYmxlZC5zcGxpY2UoZC5pbkFycmF5KGMuc2VsZWN0ZWQsYy5kaXNhYmxlZCksMSk7dGhpcy5w
YW5lbHMuYWRkQ2xhc3MoInVpLXRhYnMtaGlkZSIpO3RoaXMubGlzLnJlbW92ZUNsYXNzKCJ1aS10
YWJzLXNlbGVjdGVkIHVpLXN0YXRlLWFjdGl2ZSIpOwotaWYoYy5zZWxlY3RlZD49MCYmdGhpcy5h
bmNob3JzLmxlbmd0aCl7YS5lbGVtZW50LmZpbmQoYS5fc2FuaXRpemVTZWxlY3RvcihhLmFuY2hv
cnNbYy5zZWxlY3RlZF0uaGFzaCkpLnJlbW92ZUNsYXNzKCJ1aS10YWJzLWhpZGUiKTt0aGlzLmxp
cy5lcShjLnNlbGVjdGVkKS5hZGRDbGFzcygidWktdGFicy1zZWxlY3RlZCB1aS1zdGF0ZS1hY3Rp
dmUiKTthLmVsZW1lbnQucXVldWUoInRhYnMiLGZ1bmN0aW9uKCl7YS5fdHJpZ2dlcigic2hvdyIs
bnVsbCxhLl91aShhLmFuY2hvcnNbYy5zZWxlY3RlZF0sYS5lbGVtZW50LmZpbmQoYS5fc2FuaXRp
emVTZWxlY3RvcihhLmFuY2hvcnNbYy5zZWxlY3RlZF0uaGFzaCkpWzBdKSl9KTt0aGlzLmxvYWQo
Yy5zZWxlY3RlZCl9ZCh3aW5kb3cpLmJpbmQoInVubG9hZCIsZnVuY3Rpb24oKXthLmxpcy5hZGQo
YS5hbmNob3JzKS51bmJpbmQoIi50YWJzIik7YS5saXM9YS5hbmNob3JzPWEucGFuZWxzPW51bGx9
KX1lbHNlIGMuc2VsZWN0ZWQ9dGhpcy5saXMuaW5kZXgodGhpcy5saXMuZmlsdGVyKCIudWktdGFi
cy1zZWxlY3RlZCIpKTsKLXRoaXMuZWxlbWVudFtjLmNvbGxhcHNpYmxlPyJhZGRDbGFzcyI6InJl
bW92ZUNsYXNzIl0oInVpLXRhYnMtY29sbGFwc2libGUiKTtjLmNvb2tpZSYmdGhpcy5fY29va2ll
KGMuc2VsZWN0ZWQsYy5jb29raWUpO2I9MDtmb3IodmFyIGo7aj10aGlzLmxpc1tiXTtiKyspZChq
KVtkLmluQXJyYXkoYixjLmRpc2FibGVkKSE9LTEmJiFkKGopLmhhc0NsYXNzKCJ1aS10YWJzLXNl
bGVjdGVkIik/ImFkZENsYXNzIjoicmVtb3ZlQ2xhc3MiXSgidWktc3RhdGUtZGlzYWJsZWQiKTtj
LmNhY2hlPT09ZmFsc2UmJnRoaXMuYW5jaG9ycy5yZW1vdmVEYXRhKCJjYWNoZS50YWJzIik7dGhp
cy5saXMuYWRkKHRoaXMuYW5jaG9ycykudW5iaW5kKCIudGFicyIpO2lmKGMuZXZlbnQhPT0ibW91
c2VvdmVyIil7dmFyIGs9ZnVuY3Rpb24oZyxmKXtmLmlzKCI6bm90KC51aS1zdGF0ZS1kaXNhYmxl
ZCkiKSYmZi5hZGRDbGFzcygidWktc3RhdGUtIitnKX0sbj1mdW5jdGlvbihnLGYpe2YucmVtb3Zl
Q2xhc3MoInVpLXN0YXRlLSIrCi1nKX07dGhpcy5saXMuYmluZCgibW91c2VvdmVyLnRhYnMiLGZ1
bmN0aW9uKCl7aygiaG92ZXIiLGQodGhpcykpfSk7dGhpcy5saXMuYmluZCgibW91c2VvdXQudGFi
cyIsZnVuY3Rpb24oKXtuKCJob3ZlciIsZCh0aGlzKSl9KTt0aGlzLmFuY2hvcnMuYmluZCgiZm9j
dXMudGFicyIsZnVuY3Rpb24oKXtrKCJmb2N1cyIsZCh0aGlzKS5jbG9zZXN0KCJsaSIpKX0pO3Ro
aXMuYW5jaG9ycy5iaW5kKCJibHVyLnRhYnMiLGZ1bmN0aW9uKCl7bigiZm9jdXMiLGQodGhpcyku
Y2xvc2VzdCgibGkiKSl9KX12YXIgbSxvO2lmKGMuZngpaWYoZC5pc0FycmF5KGMuZngpKXttPWMu
ZnhbMF07bz1jLmZ4WzFdfWVsc2UgbT1vPWMuZng7dmFyIHI9bz9mdW5jdGlvbihnLGYpe2QoZyku
Y2xvc2VzdCgibGkiKS5hZGRDbGFzcygidWktdGFicy1zZWxlY3RlZCB1aS1zdGF0ZS1hY3RpdmUi
KTtmLmhpZGUoKS5yZW1vdmVDbGFzcygidWktdGFicy1oaWRlIikuYW5pbWF0ZShvLG8uZHVyYXRp
b258fCJub3JtYWwiLAotZnVuY3Rpb24oKXtlKGYsbyk7YS5fdHJpZ2dlcigic2hvdyIsbnVsbCxh
Ll91aShnLGZbMF0pKX0pfTpmdW5jdGlvbihnLGYpe2QoZykuY2xvc2VzdCgibGkiKS5hZGRDbGFz
cygidWktdGFicy1zZWxlY3RlZCB1aS1zdGF0ZS1hY3RpdmUiKTtmLnJlbW92ZUNsYXNzKCJ1aS10
YWJzLWhpZGUiKTthLl90cmlnZ2VyKCJzaG93IixudWxsLGEuX3VpKGcsZlswXSkpfSxzPW0/ZnVu
Y3Rpb24oZyxmKXtmLmFuaW1hdGUobSxtLmR1cmF0aW9ufHwibm9ybWFsIixmdW5jdGlvbigpe2Eu
bGlzLnJlbW92ZUNsYXNzKCJ1aS10YWJzLXNlbGVjdGVkIHVpLXN0YXRlLWFjdGl2ZSIpO2YuYWRk
Q2xhc3MoInVpLXRhYnMtaGlkZSIpO2UoZixtKTthLmVsZW1lbnQuZGVxdWV1ZSgidGFicyIpfSl9
OmZ1bmN0aW9uKGcsZil7YS5saXMucmVtb3ZlQ2xhc3MoInVpLXRhYnMtc2VsZWN0ZWQgdWktc3Rh
dGUtYWN0aXZlIik7Zi5hZGRDbGFzcygidWktdGFicy1oaWRlIik7YS5lbGVtZW50LmRlcXVldWUo
InRhYnMiKX07Ci10aGlzLmFuY2hvcnMuYmluZChjLmV2ZW50KyIudGFicyIsZnVuY3Rpb24oKXt2
YXIgZz10aGlzLGY9ZChnKS5jbG9zZXN0KCJsaSIpLGk9YS5wYW5lbHMuZmlsdGVyKCI6bm90KC51
aS10YWJzLWhpZGUpIiksbD1hLmVsZW1lbnQuZmluZChhLl9zYW5pdGl6ZVNlbGVjdG9yKGcuaGFz
aCkpO2lmKGYuaGFzQ2xhc3MoInVpLXRhYnMtc2VsZWN0ZWQiKSYmIWMuY29sbGFwc2libGV8fGYu
aGFzQ2xhc3MoInVpLXN0YXRlLWRpc2FibGVkIil8fGYuaGFzQ2xhc3MoInVpLXN0YXRlLXByb2Nl
c3NpbmciKXx8YS5wYW5lbHMuZmlsdGVyKCI6YW5pbWF0ZWQiKS5sZW5ndGh8fGEuX3RyaWdnZXIo
InNlbGVjdCIsbnVsbCxhLl91aSh0aGlzLGxbMF0pKT09PWZhbHNlKXt0aGlzLmJsdXIoKTtyZXR1
cm4gZmFsc2V9Yy5zZWxlY3RlZD1hLmFuY2hvcnMuaW5kZXgodGhpcyk7YS5hYm9ydCgpO2lmKGMu
Y29sbGFwc2libGUpaWYoZi5oYXNDbGFzcygidWktdGFicy1zZWxlY3RlZCIpKXtjLnNlbGVjdGVk
PQotLTE7Yy5jb29raWUmJmEuX2Nvb2tpZShjLnNlbGVjdGVkLGMuY29va2llKTthLmVsZW1lbnQu
cXVldWUoInRhYnMiLGZ1bmN0aW9uKCl7cyhnLGkpfSkuZGVxdWV1ZSgidGFicyIpO3RoaXMuYmx1
cigpO3JldHVybiBmYWxzZX1lbHNlIGlmKCFpLmxlbmd0aCl7Yy5jb29raWUmJmEuX2Nvb2tpZShj
LnNlbGVjdGVkLGMuY29va2llKTthLmVsZW1lbnQucXVldWUoInRhYnMiLGZ1bmN0aW9uKCl7cihn
LGwpfSk7YS5sb2FkKGEuYW5jaG9ycy5pbmRleCh0aGlzKSk7dGhpcy5ibHVyKCk7cmV0dXJuIGZh
bHNlfWMuY29va2llJiZhLl9jb29raWUoYy5zZWxlY3RlZCxjLmNvb2tpZSk7aWYobC5sZW5ndGgp
e2kubGVuZ3RoJiZhLmVsZW1lbnQucXVldWUoInRhYnMiLGZ1bmN0aW9uKCl7cyhnLGkpfSk7YS5l
bGVtZW50LnF1ZXVlKCJ0YWJzIixmdW5jdGlvbigpe3IoZyxsKX0pO2EubG9hZChhLmFuY2hvcnMu
aW5kZXgodGhpcykpfWVsc2UgdGhyb3cialF1ZXJ5IFVJIFRhYnM6IE1pc21hdGNoaW5nIGZyYWdt
ZW50IGlkZW50aWZpZXIuIjsKLWQuYnJvd3Nlci5tc2llJiZ0aGlzLmJsdXIoKX0pO3RoaXMuYW5j
aG9ycy5iaW5kKCJjbGljay50YWJzIixmdW5jdGlvbigpe3JldHVybiBmYWxzZX0pfSxfZ2V0SW5k
ZXg6ZnVuY3Rpb24oYil7aWYodHlwZW9mIGI9PSJzdHJpbmciKWI9dGhpcy5hbmNob3JzLmluZGV4
KHRoaXMuYW5jaG9ycy5maWx0ZXIoIltocmVmJD0iK2IrIl0iKSk7cmV0dXJuIGJ9LGRlc3Ryb3k6
ZnVuY3Rpb24oKXt2YXIgYj10aGlzLm9wdGlvbnM7dGhpcy5hYm9ydCgpO3RoaXMuZWxlbWVudC51
bmJpbmQoIi50YWJzIikucmVtb3ZlQ2xhc3MoInVpLXRhYnMgdWktd2lkZ2V0IHVpLXdpZGdldC1j
b250ZW50IHVpLWNvcm5lci1hbGwgdWktdGFicy1jb2xsYXBzaWJsZSIpLnJlbW92ZURhdGEoInRh
YnMiKTt0aGlzLmxpc3QucmVtb3ZlQ2xhc3MoInVpLXRhYnMtbmF2IHVpLWhlbHBlci1yZXNldCB1
aS1oZWxwZXItY2xlYXJmaXggdWktd2lkZ2V0LWhlYWRlciB1aS1jb3JuZXItYWxsIik7dGhpcy5h
bmNob3JzLmVhY2goZnVuY3Rpb24oKXt2YXIgZT0KLWQuZGF0YSh0aGlzLCJocmVmLnRhYnMiKTtp
ZihlKXRoaXMuaHJlZj1lO3ZhciBhPWQodGhpcykudW5iaW5kKCIudGFicyIpO2QuZWFjaChbImhy
ZWYiLCJsb2FkIiwiY2FjaGUiXSxmdW5jdGlvbihjLGgpe2EucmVtb3ZlRGF0YShoKyIudGFicyIp
fSl9KTt0aGlzLmxpcy51bmJpbmQoIi50YWJzIikuYWRkKHRoaXMucGFuZWxzKS5lYWNoKGZ1bmN0
aW9uKCl7ZC5kYXRhKHRoaXMsImRlc3Ryb3kudGFicyIpP2QodGhpcykucmVtb3ZlKCk6ZCh0aGlz
KS5yZW1vdmVDbGFzcygidWktc3RhdGUtZGVmYXVsdCB1aS1jb3JuZXItdG9wIHVpLXRhYnMtc2Vs
ZWN0ZWQgdWktc3RhdGUtYWN0aXZlIHVpLXN0YXRlLWhvdmVyIHVpLXN0YXRlLWZvY3VzIHVpLXN0
YXRlLWRpc2FibGVkIHVpLXRhYnMtcGFuZWwgdWktd2lkZ2V0LWNvbnRlbnQgdWktY29ybmVyLWJv
dHRvbSB1aS10YWJzLWhpZGUiKX0pO2IuY29va2llJiZ0aGlzLl9jb29raWUobnVsbCxiLmNvb2tp
ZSk7cmV0dXJuIHRoaXN9LGFkZDpmdW5jdGlvbihiLAotZSxhKXtpZihhPT09cClhPXRoaXMuYW5j
aG9ycy5sZW5ndGg7dmFyIGM9dGhpcyxoPXRoaXMub3B0aW9ucztlPWQoaC50YWJUZW1wbGF0ZS5y
ZXBsYWNlKC8jXHtocmVmXH0vZyxiKS5yZXBsYWNlKC8jXHtsYWJlbFx9L2csZSkpO2I9IWIuaW5k
ZXhPZigiIyIpP2IucmVwbGFjZSgiIyIsIiIpOnRoaXMuX3RhYklkKGQoImEiLGUpWzBdKTtlLmFk
ZENsYXNzKCJ1aS1zdGF0ZS1kZWZhdWx0IHVpLWNvcm5lci10b3AiKS5kYXRhKCJkZXN0cm95LnRh
YnMiLHRydWUpO3ZhciBqPWMuZWxlbWVudC5maW5kKCIjIitiKTtqLmxlbmd0aHx8KGo9ZChoLnBh
bmVsVGVtcGxhdGUpLmF0dHIoImlkIixiKS5kYXRhKCJkZXN0cm95LnRhYnMiLHRydWUpKTtqLmFk
ZENsYXNzKCJ1aS10YWJzLXBhbmVsIHVpLXdpZGdldC1jb250ZW50IHVpLWNvcm5lci1ib3R0b20g
dWktdGFicy1oaWRlIik7aWYoYT49dGhpcy5saXMubGVuZ3RoKXtlLmFwcGVuZFRvKHRoaXMubGlz
dCk7ai5hcHBlbmRUbyh0aGlzLmxpc3RbMF0ucGFyZW50Tm9kZSl9ZWxzZXtlLmluc2VydEJlZm9y
ZSh0aGlzLmxpc1thXSk7Ci1qLmluc2VydEJlZm9yZSh0aGlzLnBhbmVsc1thXSl9aC5kaXNhYmxl
ZD1kLm1hcChoLmRpc2FibGVkLGZ1bmN0aW9uKGspe3JldHVybiBrPj1hPysrazprfSk7dGhpcy5f
dGFiaWZ5KCk7aWYodGhpcy5hbmNob3JzLmxlbmd0aD09MSl7aC5zZWxlY3RlZD0wO2UuYWRkQ2xh
c3MoInVpLXRhYnMtc2VsZWN0ZWQgdWktc3RhdGUtYWN0aXZlIik7ai5yZW1vdmVDbGFzcygidWkt
dGFicy1oaWRlIik7dGhpcy5lbGVtZW50LnF1ZXVlKCJ0YWJzIixmdW5jdGlvbigpe2MuX3RyaWdn
ZXIoInNob3ciLG51bGwsYy5fdWkoYy5hbmNob3JzWzBdLGMucGFuZWxzWzBdKSl9KTt0aGlzLmxv
YWQoMCl9dGhpcy5fdHJpZ2dlcigiYWRkIixudWxsLHRoaXMuX3VpKHRoaXMuYW5jaG9yc1thXSx0
aGlzLnBhbmVsc1thXSkpO3JldHVybiB0aGlzfSxyZW1vdmU6ZnVuY3Rpb24oYil7Yj10aGlzLl9n
ZXRJbmRleChiKTt2YXIgZT10aGlzLm9wdGlvbnMsYT10aGlzLmxpcy5lcShiKS5yZW1vdmUoKSxj
PXRoaXMucGFuZWxzLmVxKGIpLnJlbW92ZSgpOwotaWYoYS5oYXNDbGFzcygidWktdGFicy1zZWxl
Y3RlZCIpJiZ0aGlzLmFuY2hvcnMubGVuZ3RoPjEpdGhpcy5zZWxlY3QoYisoYisxPHRoaXMuYW5j
aG9ycy5sZW5ndGg/MTotMSkpO2UuZGlzYWJsZWQ9ZC5tYXAoZC5ncmVwKGUuZGlzYWJsZWQsZnVu
Y3Rpb24oaCl7cmV0dXJuIGghPWJ9KSxmdW5jdGlvbihoKXtyZXR1cm4gaD49Yj8tLWg6aH0pO3Ro
aXMuX3RhYmlmeSgpO3RoaXMuX3RyaWdnZXIoInJlbW92ZSIsbnVsbCx0aGlzLl91aShhLmZpbmQo
ImEiKVswXSxjWzBdKSk7cmV0dXJuIHRoaXN9LGVuYWJsZTpmdW5jdGlvbihiKXtiPXRoaXMuX2dl
dEluZGV4KGIpO3ZhciBlPXRoaXMub3B0aW9ucztpZihkLmluQXJyYXkoYixlLmRpc2FibGVkKSE9
LTEpe3RoaXMubGlzLmVxKGIpLnJlbW92ZUNsYXNzKCJ1aS1zdGF0ZS1kaXNhYmxlZCIpO2UuZGlz
YWJsZWQ9ZC5ncmVwKGUuZGlzYWJsZWQsZnVuY3Rpb24oYSl7cmV0dXJuIGEhPWJ9KTt0aGlzLl90
cmlnZ2VyKCJlbmFibGUiLG51bGwsCi10aGlzLl91aSh0aGlzLmFuY2hvcnNbYl0sdGhpcy5wYW5l
bHNbYl0pKTtyZXR1cm4gdGhpc319LGRpc2FibGU6ZnVuY3Rpb24oYil7Yj10aGlzLl9nZXRJbmRl
eChiKTt2YXIgZT10aGlzLm9wdGlvbnM7aWYoYiE9ZS5zZWxlY3RlZCl7dGhpcy5saXMuZXEoYiku
YWRkQ2xhc3MoInVpLXN0YXRlLWRpc2FibGVkIik7ZS5kaXNhYmxlZC5wdXNoKGIpO2UuZGlzYWJs
ZWQuc29ydCgpO3RoaXMuX3RyaWdnZXIoImRpc2FibGUiLG51bGwsdGhpcy5fdWkodGhpcy5hbmNo
b3JzW2JdLHRoaXMucGFuZWxzW2JdKSl9cmV0dXJuIHRoaXN9LHNlbGVjdDpmdW5jdGlvbihiKXti
PXRoaXMuX2dldEluZGV4KGIpO2lmKGI9PS0xKWlmKHRoaXMub3B0aW9ucy5jb2xsYXBzaWJsZSYm
dGhpcy5vcHRpb25zLnNlbGVjdGVkIT0tMSliPXRoaXMub3B0aW9ucy5zZWxlY3RlZDtlbHNlIHJl
dHVybiB0aGlzO3RoaXMuYW5jaG9ycy5lcShiKS50cmlnZ2VyKHRoaXMub3B0aW9ucy5ldmVudCsi
LnRhYnMiKTtyZXR1cm4gdGhpc30sCi1sb2FkOmZ1bmN0aW9uKGIpe2I9dGhpcy5fZ2V0SW5kZXgo
Yik7dmFyIGU9dGhpcyxhPXRoaXMub3B0aW9ucyxjPXRoaXMuYW5jaG9ycy5lcShiKVswXSxoPWQu
ZGF0YShjLCJsb2FkLnRhYnMiKTt0aGlzLmFib3J0KCk7aWYoIWh8fHRoaXMuZWxlbWVudC5xdWV1
ZSgidGFicyIpLmxlbmd0aCE9PTAmJmQuZGF0YShjLCJjYWNoZS50YWJzIikpdGhpcy5lbGVtZW50
LmRlcXVldWUoInRhYnMiKTtlbHNle3RoaXMubGlzLmVxKGIpLmFkZENsYXNzKCJ1aS1zdGF0ZS1w
cm9jZXNzaW5nIik7aWYoYS5zcGlubmVyKXt2YXIgaj1kKCJzcGFuIixjKTtqLmRhdGEoImxhYmVs
LnRhYnMiLGouaHRtbCgpKS5odG1sKGEuc3Bpbm5lcil9dGhpcy54aHI9ZC5hamF4KGQuZXh0ZW5k
KHt9LGEuYWpheE9wdGlvbnMse3VybDpoLHN1Y2Nlc3M6ZnVuY3Rpb24oayxuKXtlLmVsZW1lbnQu
ZmluZChlLl9zYW5pdGl6ZVNlbGVjdG9yKGMuaGFzaCkpLmh0bWwoayk7ZS5fY2xlYW51cCgpO2Eu
Y2FjaGUmJmQuZGF0YShjLAotImNhY2hlLnRhYnMiLHRydWUpO2UuX3RyaWdnZXIoImxvYWQiLG51
bGwsZS5fdWkoZS5hbmNob3JzW2JdLGUucGFuZWxzW2JdKSk7dHJ5e2EuYWpheE9wdGlvbnMuc3Vj
Y2VzcyhrLG4pfWNhdGNoKG0pe319LGVycm9yOmZ1bmN0aW9uKGssbil7ZS5fY2xlYW51cCgpO2Uu
X3RyaWdnZXIoImxvYWQiLG51bGwsZS5fdWkoZS5hbmNob3JzW2JdLGUucGFuZWxzW2JdKSk7dHJ5
e2EuYWpheE9wdGlvbnMuZXJyb3IoayxuLGIsYyl9Y2F0Y2gobSl7fX19KSk7ZS5lbGVtZW50LmRl
cXVldWUoInRhYnMiKTtyZXR1cm4gdGhpc319LGFib3J0OmZ1bmN0aW9uKCl7dGhpcy5lbGVtZW50
LnF1ZXVlKFtdKTt0aGlzLnBhbmVscy5zdG9wKGZhbHNlLHRydWUpO3RoaXMuZWxlbWVudC5xdWV1
ZSgidGFicyIsdGhpcy5lbGVtZW50LnF1ZXVlKCJ0YWJzIikuc3BsaWNlKC0yLDIpKTtpZih0aGlz
Lnhocil7dGhpcy54aHIuYWJvcnQoKTtkZWxldGUgdGhpcy54aHJ9dGhpcy5fY2xlYW51cCgpO3Jl
dHVybiB0aGlzfSwKLXVybDpmdW5jdGlvbihiLGUpe3RoaXMuYW5jaG9ycy5lcShiKS5yZW1vdmVE
YXRhKCJjYWNoZS50YWJzIikuZGF0YSgibG9hZC50YWJzIixlKTtyZXR1cm4gdGhpc30sbGVuZ3Ro
OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYW5jaG9ycy5sZW5ndGh9fSk7ZC5leHRlbmQoZC51aS50
YWJzLHt2ZXJzaW9uOiIxLjguMTAifSk7ZC5leHRlbmQoZC51aS50YWJzLnByb3RvdHlwZSx7cm90
YXRpb246bnVsbCxyb3RhdGU6ZnVuY3Rpb24oYixlKXt2YXIgYT10aGlzLGM9dGhpcy5vcHRpb25z
LGg9YS5fcm90YXRlfHwoYS5fcm90YXRlPWZ1bmN0aW9uKGope2NsZWFyVGltZW91dChhLnJvdGF0
aW9uKTthLnJvdGF0aW9uPXNldFRpbWVvdXQoZnVuY3Rpb24oKXt2YXIgaz1jLnNlbGVjdGVkO2Eu
c2VsZWN0KCsrazxhLmFuY2hvcnMubGVuZ3RoP2s6MCl9LGIpO2omJmouc3RvcFByb3BhZ2F0aW9u
KCl9KTtlPWEuX3Vucm90YXRlfHwoYS5fdW5yb3RhdGU9IWU/ZnVuY3Rpb24oail7ai5jbGllbnRY
JiYKLWEucm90YXRlKG51bGwpfTpmdW5jdGlvbigpe3Q9Yy5zZWxlY3RlZDtoKCl9KTtpZihiKXt0
aGlzLmVsZW1lbnQuYmluZCgidGFic3Nob3ciLGgpO3RoaXMuYW5jaG9ycy5iaW5kKGMuZXZlbnQr
Ii50YWJzIixlKTtoKCl9ZWxzZXtjbGVhclRpbWVvdXQoYS5yb3RhdGlvbik7dGhpcy5lbGVtZW50
LnVuYmluZCgidGFic3Nob3ciLGgpO3RoaXMuYW5jaG9ycy51bmJpbmQoYy5ldmVudCsiLnRhYnMi
LGUpO2RlbGV0ZSB0aGlzLl9yb3RhdGU7ZGVsZXRlIHRoaXMuX3Vucm90YXRlfXJldHVybiB0aGlz
fX0pfSkoalF1ZXJ5KTsKLTsvKgotICogalF1ZXJ5IFVJIERhdGVwaWNrZXIgMS44LjEwCi0gKgot
ICogQ29weXJpZ2h0IDIwMTEsIEFVVEhPUlMudHh0IChodHRwOi8vanF1ZXJ5dWkuY29tL2Fib3V0
KQotICogRHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIG9yIEdQTCBWZXJzaW9uIDIgbGljZW5z
ZXMuCi0gKiBodHRwOi8vanF1ZXJ5Lm9yZy9saWNlbnNlCi0gKgotICogaHR0cDovL2RvY3MuanF1
ZXJ5LmNvbS9VSS9EYXRlcGlja2VyCi0gKgotICogRGVwZW5kczoKLSAqCWpxdWVyeS51aS5jb3Jl
LmpzCi0gKi8KLShmdW5jdGlvbihkLEcpe2Z1bmN0aW9uIEsoKXt0aGlzLmRlYnVnPWZhbHNlO3Ro
aXMuX2N1ckluc3Q9bnVsbDt0aGlzLl9rZXlFdmVudD1mYWxzZTt0aGlzLl9kaXNhYmxlZElucHV0
cz1bXTt0aGlzLl9pbkRpYWxvZz10aGlzLl9kYXRlcGlja2VyU2hvd2luZz1mYWxzZTt0aGlzLl9t
YWluRGl2SWQ9InVpLWRhdGVwaWNrZXItZGl2Ijt0aGlzLl9pbmxpbmVDbGFzcz0idWktZGF0ZXBp
Y2tlci1pbmxpbmUiO3RoaXMuX2FwcGVuZENsYXNzPSJ1aS1kYXRlcGlja2VyLWFwcGVuZCI7dGhp
cy5fdHJpZ2dlckNsYXNzPSJ1aS1kYXRlcGlja2VyLXRyaWdnZXIiO3RoaXMuX2RpYWxvZ0NsYXNz
PSJ1aS1kYXRlcGlja2VyLWRpYWxvZyI7dGhpcy5fZGlzYWJsZUNsYXNzPSJ1aS1kYXRlcGlja2Vy
LWRpc2FibGVkIjt0aGlzLl91bnNlbGVjdGFibGVDbGFzcz0idWktZGF0ZXBpY2tlci11bnNlbGVj
dGFibGUiO3RoaXMuX2N1cnJlbnRDbGFzcz0idWktZGF0ZXBpY2tlci1jdXJyZW50LWRheSI7dGhp
cy5fZGF5T3ZlckNsYXNzPQotInVpLWRhdGVwaWNrZXItZGF5cy1jZWxsLW92ZXIiO3RoaXMucmVn
aW9uYWw9W107dGhpcy5yZWdpb25hbFsiIl09e2Nsb3NlVGV4dDoiRG9uZSIscHJldlRleHQ6IlBy
ZXYiLG5leHRUZXh0OiJOZXh0IixjdXJyZW50VGV4dDoiVG9kYXkiLG1vbnRoTmFtZXM6WyJKYW51
YXJ5IiwiRmVicnVhcnkiLCJNYXJjaCIsIkFwcmlsIiwiTWF5IiwiSnVuZSIsIkp1bHkiLCJBdWd1
c3QiLCJTZXB0ZW1iZXIiLCJPY3RvYmVyIiwiTm92ZW1iZXIiLCJEZWNlbWJlciJdLG1vbnRoTmFt
ZXNTaG9ydDpbIkphbiIsIkZlYiIsIk1hciIsIkFwciIsIk1heSIsIkp1biIsIkp1bCIsIkF1ZyIs
IlNlcCIsIk9jdCIsIk5vdiIsIkRlYyJdLGRheU5hbWVzOlsiU3VuZGF5IiwiTW9uZGF5IiwiVHVl
c2RheSIsIldlZG5lc2RheSIsIlRodXJzZGF5IiwiRnJpZGF5IiwiU2F0dXJkYXkiXSxkYXlOYW1l
c1Nob3J0OlsiU3VuIiwiTW9uIiwiVHVlIiwiV2VkIiwiVGh1IiwiRnJpIiwiU2F0Il0sZGF5TmFt
ZXNNaW46WyJTdSIsCi0iTW8iLCJUdSIsIldlIiwiVGgiLCJGciIsIlNhIl0sd2Vla0hlYWRlcjoi
V2siLGRhdGVGb3JtYXQ6Im1tL2RkL3l5IixmaXJzdERheTowLGlzUlRMOmZhbHNlLHNob3dNb250
aEFmdGVyWWVhcjpmYWxzZSx5ZWFyU3VmZml4OiIifTt0aGlzLl9kZWZhdWx0cz17c2hvd09uOiJm
b2N1cyIsc2hvd0FuaW06ImZhZGVJbiIsc2hvd09wdGlvbnM6e30sZGVmYXVsdERhdGU6bnVsbCxh
cHBlbmRUZXh0OiIiLGJ1dHRvblRleHQ6Ii4uLiIsYnV0dG9uSW1hZ2U6IiIsYnV0dG9uSW1hZ2VP
bmx5OmZhbHNlLGhpZGVJZk5vUHJldk5leHQ6ZmFsc2UsbmF2aWdhdGlvbkFzRGF0ZUZvcm1hdDpm
YWxzZSxnb3RvQ3VycmVudDpmYWxzZSxjaGFuZ2VNb250aDpmYWxzZSxjaGFuZ2VZZWFyOmZhbHNl
LHllYXJSYW5nZToiYy0xMDpjKzEwIixzaG93T3RoZXJNb250aHM6ZmFsc2Usc2VsZWN0T3RoZXJN
b250aHM6ZmFsc2Usc2hvd1dlZWs6ZmFsc2UsY2FsY3VsYXRlV2Vlazp0aGlzLmlzbzg2MDFXZWVr
LHNob3J0WWVhckN1dG9mZjoiKzEwIiwKLW1pbkRhdGU6bnVsbCxtYXhEYXRlOm51bGwsZHVyYXRp
b246ImZhc3QiLGJlZm9yZVNob3dEYXk6bnVsbCxiZWZvcmVTaG93Om51bGwsb25TZWxlY3Q6bnVs
bCxvbkNoYW5nZU1vbnRoWWVhcjpudWxsLG9uQ2xvc2U6bnVsbCxudW1iZXJPZk1vbnRoczoxLHNo
b3dDdXJyZW50QXRQb3M6MCxzdGVwTW9udGhzOjEsc3RlcEJpZ01vbnRoczoxMixhbHRGaWVsZDoi
IixhbHRGb3JtYXQ6IiIsY29uc3RyYWluSW5wdXQ6dHJ1ZSxzaG93QnV0dG9uUGFuZWw6ZmFsc2Us
YXV0b1NpemU6ZmFsc2V9O2QuZXh0ZW5kKHRoaXMuX2RlZmF1bHRzLHRoaXMucmVnaW9uYWxbIiJd
KTt0aGlzLmRwRGl2PWQoJzxkaXYgaWQ9IicrdGhpcy5fbWFpbkRpdklkKyciIGNsYXNzPSJ1aS1k
YXRlcGlja2VyIHVpLXdpZGdldCB1aS13aWRnZXQtY29udGVudCB1aS1oZWxwZXItY2xlYXJmaXgg
dWktY29ybmVyLWFsbCI+PC9kaXY+Jyl9ZnVuY3Rpb24gRShhLGIpe2QuZXh0ZW5kKGEsYik7Zm9y
KHZhciBjIGluIGIpaWYoYltjXT09Ci1udWxsfHxiW2NdPT1HKWFbY109YltjXTtyZXR1cm4gYX1k
LmV4dGVuZChkLnVpLHtkYXRlcGlja2VyOnt2ZXJzaW9uOiIxLjguMTAifX0pO3ZhciB5PShuZXcg
RGF0ZSkuZ2V0VGltZSgpO2QuZXh0ZW5kKEsucHJvdG90eXBlLHttYXJrZXJDbGFzc05hbWU6Imhh
c0RhdGVwaWNrZXIiLGxvZzpmdW5jdGlvbigpe3RoaXMuZGVidWcmJmNvbnNvbGUubG9nLmFwcGx5
KCIiLGFyZ3VtZW50cyl9LF93aWRnZXREYXRlcGlja2VyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMu
ZHBEaXZ9LHNldERlZmF1bHRzOmZ1bmN0aW9uKGEpe0UodGhpcy5fZGVmYXVsdHMsYXx8e30pO3Jl
dHVybiB0aGlzfSxfYXR0YWNoRGF0ZXBpY2tlcjpmdW5jdGlvbihhLGIpe3ZhciBjPW51bGw7Zm9y
KHZhciBlIGluIHRoaXMuX2RlZmF1bHRzKXt2YXIgZj1hLmdldEF0dHJpYnV0ZSgiZGF0ZToiK2Up
O2lmKGYpe2M9Y3x8e307dHJ5e2NbZV09ZXZhbChmKX1jYXRjaChoKXtjW2VdPWZ9fX1lPWEubm9k
ZU5hbWUudG9Mb3dlckNhc2UoKTsKLWY9ZT09ImRpdiJ8fGU9PSJzcGFuIjtpZighYS5pZCl7dGhp
cy51dWlkKz0xO2EuaWQ9ImRwIit0aGlzLnV1aWR9dmFyIGk9dGhpcy5fbmV3SW5zdChkKGEpLGYp
O2kuc2V0dGluZ3M9ZC5leHRlbmQoe30sYnx8e30sY3x8e30pO2lmKGU9PSJpbnB1dCIpdGhpcy5f
Y29ubmVjdERhdGVwaWNrZXIoYSxpKTtlbHNlIGYmJnRoaXMuX2lubGluZURhdGVwaWNrZXIoYSxp
KX0sX25ld0luc3Q6ZnVuY3Rpb24oYSxiKXtyZXR1cm57aWQ6YVswXS5pZC5yZXBsYWNlKC8oW15B
LVphLXowLTlfLV0pL2csIlxcXFwkMSIpLGlucHV0OmEsc2VsZWN0ZWREYXk6MCxzZWxlY3RlZE1v
bnRoOjAsc2VsZWN0ZWRZZWFyOjAsZHJhd01vbnRoOjAsZHJhd1llYXI6MCxpbmxpbmU6YixkcERp
djohYj90aGlzLmRwRGl2OmQoJzxkaXYgY2xhc3M9IicrdGhpcy5faW5saW5lQ2xhc3MrJyB1aS1k
YXRlcGlja2VyIHVpLXdpZGdldCB1aS13aWRnZXQtY29udGVudCB1aS1oZWxwZXItY2xlYXJmaXgg
dWktY29ybmVyLWFsbCI+PC9kaXY+Jyl9fSwKLV9jb25uZWN0RGF0ZXBpY2tlcjpmdW5jdGlvbihh
LGIpe3ZhciBjPWQoYSk7Yi5hcHBlbmQ9ZChbXSk7Yi50cmlnZ2VyPWQoW10pO2lmKCFjLmhhc0Ns
YXNzKHRoaXMubWFya2VyQ2xhc3NOYW1lKSl7dGhpcy5fYXR0YWNobWVudHMoYyxiKTtjLmFkZENs
YXNzKHRoaXMubWFya2VyQ2xhc3NOYW1lKS5rZXlkb3duKHRoaXMuX2RvS2V5RG93bikua2V5cHJl
c3ModGhpcy5fZG9LZXlQcmVzcykua2V5dXAodGhpcy5fZG9LZXlVcCkuYmluZCgic2V0RGF0YS5k
YXRlcGlja2VyIixmdW5jdGlvbihlLGYsaCl7Yi5zZXR0aW5nc1tmXT1ofSkuYmluZCgiZ2V0RGF0
YS5kYXRlcGlja2VyIixmdW5jdGlvbihlLGYpe3JldHVybiB0aGlzLl9nZXQoYixmKX0pO3RoaXMu
X2F1dG9TaXplKGIpO2QuZGF0YShhLCJkYXRlcGlja2VyIixiKX19LF9hdHRhY2htZW50czpmdW5j
dGlvbihhLGIpe3ZhciBjPXRoaXMuX2dldChiLCJhcHBlbmRUZXh0IiksZT10aGlzLl9nZXQoYiwi
aXNSVEwiKTtiLmFwcGVuZCYmCi1iLmFwcGVuZC5yZW1vdmUoKTtpZihjKXtiLmFwcGVuZD1kKCc8
c3BhbiBjbGFzcz0iJyt0aGlzLl9hcHBlbmRDbGFzcysnIj4nK2MrIjwvc3Bhbj4iKTthW2U/ImJl
Zm9yZSI6ImFmdGVyIl0oYi5hcHBlbmQpfWEudW5iaW5kKCJmb2N1cyIsdGhpcy5fc2hvd0RhdGVw
aWNrZXIpO2IudHJpZ2dlciYmYi50cmlnZ2VyLnJlbW92ZSgpO2M9dGhpcy5fZ2V0KGIsInNob3dP
biIpO2lmKGM9PSJmb2N1cyJ8fGM9PSJib3RoIilhLmZvY3VzKHRoaXMuX3Nob3dEYXRlcGlja2Vy
KTtpZihjPT0iYnV0dG9uInx8Yz09ImJvdGgiKXtjPXRoaXMuX2dldChiLCJidXR0b25UZXh0Iik7
dmFyIGY9dGhpcy5fZ2V0KGIsImJ1dHRvbkltYWdlIik7Yi50cmlnZ2VyPWQodGhpcy5fZ2V0KGIs
ImJ1dHRvbkltYWdlT25seSIpP2QoIjxpbWcvPiIpLmFkZENsYXNzKHRoaXMuX3RyaWdnZXJDbGFz
cykuYXR0cih7c3JjOmYsYWx0OmMsdGl0bGU6Y30pOmQoJzxidXR0b24gdHlwZT0iYnV0dG9uIj48
L2J1dHRvbj4nKS5hZGRDbGFzcyh0aGlzLl90cmlnZ2VyQ2xhc3MpLmh0bWwoZj09Ci0iIj9jOmQo
IjxpbWcvPiIpLmF0dHIoe3NyYzpmLGFsdDpjLHRpdGxlOmN9KSkpO2FbZT8iYmVmb3JlIjoiYWZ0
ZXIiXShiLnRyaWdnZXIpO2IudHJpZ2dlci5jbGljayhmdW5jdGlvbigpe2QuZGF0ZXBpY2tlci5f
ZGF0ZXBpY2tlclNob3dpbmcmJmQuZGF0ZXBpY2tlci5fbGFzdElucHV0PT1hWzBdP2QuZGF0ZXBp
Y2tlci5faGlkZURhdGVwaWNrZXIoKTpkLmRhdGVwaWNrZXIuX3Nob3dEYXRlcGlja2VyKGFbMF0p
O3JldHVybiBmYWxzZX0pfX0sX2F1dG9TaXplOmZ1bmN0aW9uKGEpe2lmKHRoaXMuX2dldChhLCJh
dXRvU2l6ZSIpJiYhYS5pbmxpbmUpe3ZhciBiPW5ldyBEYXRlKDIwMDksMTEsMjApLGM9dGhpcy5f
Z2V0KGEsImRhdGVGb3JtYXQiKTtpZihjLm1hdGNoKC9bRE1dLykpe3ZhciBlPWZ1bmN0aW9uKGYp
e2Zvcih2YXIgaD0wLGk9MCxnPTA7ZzxmLmxlbmd0aDtnKyspaWYoZltnXS5sZW5ndGg+aCl7aD1m
W2ddLmxlbmd0aDtpPWd9cmV0dXJuIGl9O2Iuc2V0TW9udGgoZSh0aGlzLl9nZXQoYSwKLWMubWF0
Y2goL01NLyk/Im1vbnRoTmFtZXMiOiJtb250aE5hbWVzU2hvcnQiKSkpO2Iuc2V0RGF0ZShlKHRo
aXMuX2dldChhLGMubWF0Y2goL0RELyk/ImRheU5hbWVzIjoiZGF5TmFtZXNTaG9ydCIpKSsyMC1i
LmdldERheSgpKX1hLmlucHV0LmF0dHIoInNpemUiLHRoaXMuX2Zvcm1hdERhdGUoYSxiKS5sZW5n
dGgpfX0sX2lubGluZURhdGVwaWNrZXI6ZnVuY3Rpb24oYSxiKXt2YXIgYz1kKGEpO2lmKCFjLmhh
c0NsYXNzKHRoaXMubWFya2VyQ2xhc3NOYW1lKSl7Yy5hZGRDbGFzcyh0aGlzLm1hcmtlckNsYXNz
TmFtZSkuYXBwZW5kKGIuZHBEaXYpLmJpbmQoInNldERhdGEuZGF0ZXBpY2tlciIsZnVuY3Rpb24o
ZSxmLGgpe2Iuc2V0dGluZ3NbZl09aH0pLmJpbmQoImdldERhdGEuZGF0ZXBpY2tlciIsZnVuY3Rp
b24oZSxmKXtyZXR1cm4gdGhpcy5fZ2V0KGIsZil9KTtkLmRhdGEoYSwiZGF0ZXBpY2tlciIsYik7
dGhpcy5fc2V0RGF0ZShiLHRoaXMuX2dldERlZmF1bHREYXRlKGIpLAotdHJ1ZSk7dGhpcy5fdXBk
YXRlRGF0ZXBpY2tlcihiKTt0aGlzLl91cGRhdGVBbHRlcm5hdGUoYik7Yi5kcERpdi5zaG93KCl9
fSxfZGlhbG9nRGF0ZXBpY2tlcjpmdW5jdGlvbihhLGIsYyxlLGYpe2E9dGhpcy5fZGlhbG9nSW5z
dDtpZighYSl7dGhpcy51dWlkKz0xO3RoaXMuX2RpYWxvZ0lucHV0PWQoJzxpbnB1dCB0eXBlPSJ0
ZXh0IiBpZD0iJysoImRwIit0aGlzLnV1aWQpKyciIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7
IHRvcDogLTEwMHB4OyB3aWR0aDogMHB4OyB6LWluZGV4OiAtMTA7Ii8+Jyk7dGhpcy5fZGlhbG9n
SW5wdXQua2V5ZG93bih0aGlzLl9kb0tleURvd24pO2QoImJvZHkiKS5hcHBlbmQodGhpcy5fZGlh
bG9nSW5wdXQpO2E9dGhpcy5fZGlhbG9nSW5zdD10aGlzLl9uZXdJbnN0KHRoaXMuX2RpYWxvZ0lu
cHV0LGZhbHNlKTthLnNldHRpbmdzPXt9O2QuZGF0YSh0aGlzLl9kaWFsb2dJbnB1dFswXSwiZGF0
ZXBpY2tlciIsYSl9RShhLnNldHRpbmdzLGV8fHt9KTsKLWI9YiYmYi5jb25zdHJ1Y3Rvcj09RGF0
ZT90aGlzLl9mb3JtYXREYXRlKGEsYik6Yjt0aGlzLl9kaWFsb2dJbnB1dC52YWwoYik7dGhpcy5f
cG9zPWY/Zi5sZW5ndGg/ZjpbZi5wYWdlWCxmLnBhZ2VZXTpudWxsO2lmKCF0aGlzLl9wb3MpdGhp
cy5fcG9zPVtkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGgvMi0xMDArKGRvY3Vt
ZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxMZWZ0fHxkb2N1bWVudC5ib2R5LnNjcm9sbExlZnQp
LGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQvMi0xNTArKGRvY3VtZW50LmRv
Y3VtZW50RWxlbWVudC5zY3JvbGxUb3B8fGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wKV07dGhpcy5f
ZGlhbG9nSW5wdXQuY3NzKCJsZWZ0Iix0aGlzLl9wb3NbMF0rMjArInB4IikuY3NzKCJ0b3AiLHRo
aXMuX3Bvc1sxXSsicHgiKTthLnNldHRpbmdzLm9uU2VsZWN0PWM7dGhpcy5faW5EaWFsb2c9dHJ1
ZTt0aGlzLmRwRGl2LmFkZENsYXNzKHRoaXMuX2RpYWxvZ0NsYXNzKTsKLXRoaXMuX3Nob3dEYXRl
cGlja2VyKHRoaXMuX2RpYWxvZ0lucHV0WzBdKTtkLmJsb2NrVUkmJmQuYmxvY2tVSSh0aGlzLmRw
RGl2KTtkLmRhdGEodGhpcy5fZGlhbG9nSW5wdXRbMF0sImRhdGVwaWNrZXIiLGEpO3JldHVybiB0
aGlzfSxfZGVzdHJveURhdGVwaWNrZXI6ZnVuY3Rpb24oYSl7dmFyIGI9ZChhKSxjPWQuZGF0YShh
LCJkYXRlcGlja2VyIik7aWYoYi5oYXNDbGFzcyh0aGlzLm1hcmtlckNsYXNzTmFtZSkpe3ZhciBl
PWEubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtkLnJlbW92ZURhdGEoYSwiZGF0ZXBpY2tlciIpO2lm
KGU9PSJpbnB1dCIpe2MuYXBwZW5kLnJlbW92ZSgpO2MudHJpZ2dlci5yZW1vdmUoKTtiLnJlbW92
ZUNsYXNzKHRoaXMubWFya2VyQ2xhc3NOYW1lKS51bmJpbmQoImZvY3VzIix0aGlzLl9zaG93RGF0
ZXBpY2tlcikudW5iaW5kKCJrZXlkb3duIix0aGlzLl9kb0tleURvd24pLnVuYmluZCgia2V5cHJl
c3MiLHRoaXMuX2RvS2V5UHJlc3MpLnVuYmluZCgia2V5dXAiLAotdGhpcy5fZG9LZXlVcCl9ZWxz
ZSBpZihlPT0iZGl2Inx8ZT09InNwYW4iKWIucmVtb3ZlQ2xhc3ModGhpcy5tYXJrZXJDbGFzc05h
bWUpLmVtcHR5KCl9fSxfZW5hYmxlRGF0ZXBpY2tlcjpmdW5jdGlvbihhKXt2YXIgYj1kKGEpLGM9
ZC5kYXRhKGEsImRhdGVwaWNrZXIiKTtpZihiLmhhc0NsYXNzKHRoaXMubWFya2VyQ2xhc3NOYW1l
KSl7dmFyIGU9YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO2lmKGU9PSJpbnB1dCIpe2EuZGlzYWJs
ZWQ9ZmFsc2U7Yy50cmlnZ2VyLmZpbHRlcigiYnV0dG9uIikuZWFjaChmdW5jdGlvbigpe3RoaXMu
ZGlzYWJsZWQ9ZmFsc2V9KS5lbmQoKS5maWx0ZXIoImltZyIpLmNzcyh7b3BhY2l0eToiMS4wIixj
dXJzb3I6IiJ9KX1lbHNlIGlmKGU9PSJkaXYifHxlPT0ic3BhbiIpYi5jaGlsZHJlbigiLiIrdGhp
cy5faW5saW5lQ2xhc3MpLmNoaWxkcmVuKCkucmVtb3ZlQ2xhc3MoInVpLXN0YXRlLWRpc2FibGVk
Iik7dGhpcy5fZGlzYWJsZWRJbnB1dHM9ZC5tYXAodGhpcy5fZGlzYWJsZWRJbnB1dHMsCi1mdW5j
dGlvbihmKXtyZXR1cm4gZj09YT9udWxsOmZ9KX19LF9kaXNhYmxlRGF0ZXBpY2tlcjpmdW5jdGlv
bihhKXt2YXIgYj1kKGEpLGM9ZC5kYXRhKGEsImRhdGVwaWNrZXIiKTtpZihiLmhhc0NsYXNzKHRo
aXMubWFya2VyQ2xhc3NOYW1lKSl7dmFyIGU9YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO2lmKGU9
PSJpbnB1dCIpe2EuZGlzYWJsZWQ9dHJ1ZTtjLnRyaWdnZXIuZmlsdGVyKCJidXR0b24iKS5lYWNo
KGZ1bmN0aW9uKCl7dGhpcy5kaXNhYmxlZD10cnVlfSkuZW5kKCkuZmlsdGVyKCJpbWciKS5jc3Mo
e29wYWNpdHk6IjAuNSIsY3Vyc29yOiJkZWZhdWx0In0pfWVsc2UgaWYoZT09ImRpdiJ8fGU9PSJz
cGFuIiliLmNoaWxkcmVuKCIuIit0aGlzLl9pbmxpbmVDbGFzcykuY2hpbGRyZW4oKS5hZGRDbGFz
cygidWktc3RhdGUtZGlzYWJsZWQiKTt0aGlzLl9kaXNhYmxlZElucHV0cz1kLm1hcCh0aGlzLl9k
aXNhYmxlZElucHV0cyxmdW5jdGlvbihmKXtyZXR1cm4gZj09YT9udWxsOgotZn0pO3RoaXMuX2Rp
c2FibGVkSW5wdXRzW3RoaXMuX2Rpc2FibGVkSW5wdXRzLmxlbmd0aF09YX19LF9pc0Rpc2FibGVk
RGF0ZXBpY2tlcjpmdW5jdGlvbihhKXtpZighYSlyZXR1cm4gZmFsc2U7Zm9yKHZhciBiPTA7Yjx0
aGlzLl9kaXNhYmxlZElucHV0cy5sZW5ndGg7YisrKWlmKHRoaXMuX2Rpc2FibGVkSW5wdXRzW2Jd
PT1hKXJldHVybiB0cnVlO3JldHVybiBmYWxzZX0sX2dldEluc3Q6ZnVuY3Rpb24oYSl7dHJ5e3Jl
dHVybiBkLmRhdGEoYSwiZGF0ZXBpY2tlciIpfWNhdGNoKGIpe3Rocm93Ik1pc3NpbmcgaW5zdGFu
Y2UgZGF0YSBmb3IgdGhpcyBkYXRlcGlja2VyIjt9fSxfb3B0aW9uRGF0ZXBpY2tlcjpmdW5jdGlv
bihhLGIsYyl7dmFyIGU9dGhpcy5fZ2V0SW5zdChhKTtpZihhcmd1bWVudHMubGVuZ3RoPT0yJiZ0
eXBlb2YgYj09InN0cmluZyIpcmV0dXJuIGI9PSJkZWZhdWx0cyI/ZC5leHRlbmQoe30sZC5kYXRl
cGlja2VyLl9kZWZhdWx0cyk6ZT9iPT0iYWxsIj9kLmV4dGVuZCh7fSwKLWUuc2V0dGluZ3MpOnRo
aXMuX2dldChlLGIpOm51bGw7dmFyIGY9Ynx8e307aWYodHlwZW9mIGI9PSJzdHJpbmciKXtmPXt9
O2ZbYl09Y31pZihlKXt0aGlzLl9jdXJJbnN0PT1lJiZ0aGlzLl9oaWRlRGF0ZXBpY2tlcigpO3Zh
ciBoPXRoaXMuX2dldERhdGVEYXRlcGlja2VyKGEsdHJ1ZSk7RShlLnNldHRpbmdzLGYpO3RoaXMu
X2F0dGFjaG1lbnRzKGQoYSksZSk7dGhpcy5fYXV0b1NpemUoZSk7dGhpcy5fc2V0RGF0ZURhdGVw
aWNrZXIoYSxoKTt0aGlzLl91cGRhdGVEYXRlcGlja2VyKGUpfX0sX2NoYW5nZURhdGVwaWNrZXI6
ZnVuY3Rpb24oYSxiLGMpe3RoaXMuX29wdGlvbkRhdGVwaWNrZXIoYSxiLGMpfSxfcmVmcmVzaERh
dGVwaWNrZXI6ZnVuY3Rpb24oYSl7KGE9dGhpcy5fZ2V0SW5zdChhKSkmJnRoaXMuX3VwZGF0ZURh
dGVwaWNrZXIoYSl9LF9zZXREYXRlRGF0ZXBpY2tlcjpmdW5jdGlvbihhLGIpe2lmKGE9dGhpcy5f
Z2V0SW5zdChhKSl7dGhpcy5fc2V0RGF0ZShhLGIpOwotdGhpcy5fdXBkYXRlRGF0ZXBpY2tlcihh
KTt0aGlzLl91cGRhdGVBbHRlcm5hdGUoYSl9fSxfZ2V0RGF0ZURhdGVwaWNrZXI6ZnVuY3Rpb24o
YSxiKXsoYT10aGlzLl9nZXRJbnN0KGEpKSYmIWEuaW5saW5lJiZ0aGlzLl9zZXREYXRlRnJvbUZp
ZWxkKGEsYik7cmV0dXJuIGE/dGhpcy5fZ2V0RGF0ZShhKTpudWxsfSxfZG9LZXlEb3duOmZ1bmN0
aW9uKGEpe3ZhciBiPWQuZGF0ZXBpY2tlci5fZ2V0SW5zdChhLnRhcmdldCksYz10cnVlLGU9Yi5k
cERpdi5pcygiLnVpLWRhdGVwaWNrZXItcnRsIik7Yi5fa2V5RXZlbnQ9dHJ1ZTtpZihkLmRhdGVw
aWNrZXIuX2RhdGVwaWNrZXJTaG93aW5nKXN3aXRjaChhLmtleUNvZGUpe2Nhc2UgOTpkLmRhdGVw
aWNrZXIuX2hpZGVEYXRlcGlja2VyKCk7Yz1mYWxzZTticmVhaztjYXNlIDEzOmM9ZCgidGQuIitk
LmRhdGVwaWNrZXIuX2RheU92ZXJDbGFzcysiOm5vdCguIitkLmRhdGVwaWNrZXIuX2N1cnJlbnRD
bGFzcysiKSIsYi5kcERpdik7Y1swXT8KLWQuZGF0ZXBpY2tlci5fc2VsZWN0RGF5KGEudGFyZ2V0
LGIuc2VsZWN0ZWRNb250aCxiLnNlbGVjdGVkWWVhcixjWzBdKTpkLmRhdGVwaWNrZXIuX2hpZGVE
YXRlcGlja2VyKCk7cmV0dXJuIGZhbHNlO2Nhc2UgMjc6ZC5kYXRlcGlja2VyLl9oaWRlRGF0ZXBp
Y2tlcigpO2JyZWFrO2Nhc2UgMzM6ZC5kYXRlcGlja2VyLl9hZGp1c3REYXRlKGEudGFyZ2V0LGEu
Y3RybEtleT8tZC5kYXRlcGlja2VyLl9nZXQoYiwic3RlcEJpZ01vbnRocyIpOi1kLmRhdGVwaWNr
ZXIuX2dldChiLCJzdGVwTW9udGhzIiksIk0iKTticmVhaztjYXNlIDM0OmQuZGF0ZXBpY2tlci5f
YWRqdXN0RGF0ZShhLnRhcmdldCxhLmN0cmxLZXk/K2QuZGF0ZXBpY2tlci5fZ2V0KGIsInN0ZXBC
aWdNb250aHMiKTorZC5kYXRlcGlja2VyLl9nZXQoYiwic3RlcE1vbnRocyIpLCJNIik7YnJlYWs7
Y2FzZSAzNTppZihhLmN0cmxLZXl8fGEubWV0YUtleSlkLmRhdGVwaWNrZXIuX2NsZWFyRGF0ZShh
LnRhcmdldCk7Yz1hLmN0cmxLZXl8fAotYS5tZXRhS2V5O2JyZWFrO2Nhc2UgMzY6aWYoYS5jdHJs
S2V5fHxhLm1ldGFLZXkpZC5kYXRlcGlja2VyLl9nb3RvVG9kYXkoYS50YXJnZXQpO2M9YS5jdHJs
S2V5fHxhLm1ldGFLZXk7YnJlYWs7Y2FzZSAzNzppZihhLmN0cmxLZXl8fGEubWV0YUtleSlkLmRh
dGVwaWNrZXIuX2FkanVzdERhdGUoYS50YXJnZXQsZT8rMTotMSwiRCIpO2M9YS5jdHJsS2V5fHxh
Lm1ldGFLZXk7aWYoYS5vcmlnaW5hbEV2ZW50LmFsdEtleSlkLmRhdGVwaWNrZXIuX2FkanVzdERh
dGUoYS50YXJnZXQsYS5jdHJsS2V5Py1kLmRhdGVwaWNrZXIuX2dldChiLCJzdGVwQmlnTW9udGhz
Iik6LWQuZGF0ZXBpY2tlci5fZ2V0KGIsInN0ZXBNb250aHMiKSwiTSIpO2JyZWFrO2Nhc2UgMzg6
aWYoYS5jdHJsS2V5fHxhLm1ldGFLZXkpZC5kYXRlcGlja2VyLl9hZGp1c3REYXRlKGEudGFyZ2V0
LC03LCJEIik7Yz1hLmN0cmxLZXl8fGEubWV0YUtleTticmVhaztjYXNlIDM5OmlmKGEuY3RybEtl
eXx8YS5tZXRhS2V5KWQuZGF0ZXBpY2tlci5fYWRqdXN0RGF0ZShhLnRhcmdldCwKLWU/LTE6KzEs
IkQiKTtjPWEuY3RybEtleXx8YS5tZXRhS2V5O2lmKGEub3JpZ2luYWxFdmVudC5hbHRLZXkpZC5k
YXRlcGlja2VyLl9hZGp1c3REYXRlKGEudGFyZ2V0LGEuY3RybEtleT8rZC5kYXRlcGlja2VyLl9n
ZXQoYiwic3RlcEJpZ01vbnRocyIpOitkLmRhdGVwaWNrZXIuX2dldChiLCJzdGVwTW9udGhzIiks
Ik0iKTticmVhaztjYXNlIDQwOmlmKGEuY3RybEtleXx8YS5tZXRhS2V5KWQuZGF0ZXBpY2tlci5f
YWRqdXN0RGF0ZShhLnRhcmdldCwrNywiRCIpO2M9YS5jdHJsS2V5fHxhLm1ldGFLZXk7YnJlYWs7
ZGVmYXVsdDpjPWZhbHNlfWVsc2UgaWYoYS5rZXlDb2RlPT0zNiYmYS5jdHJsS2V5KWQuZGF0ZXBp
Y2tlci5fc2hvd0RhdGVwaWNrZXIodGhpcyk7ZWxzZSBjPWZhbHNlO2lmKGMpe2EucHJldmVudERl
ZmF1bHQoKTthLnN0b3BQcm9wYWdhdGlvbigpfX0sX2RvS2V5UHJlc3M6ZnVuY3Rpb24oYSl7dmFy
IGI9ZC5kYXRlcGlja2VyLl9nZXRJbnN0KGEudGFyZ2V0KTtpZihkLmRhdGVwaWNrZXIuX2dldChi
LAotImNvbnN0cmFpbklucHV0Iikpe2I9ZC5kYXRlcGlja2VyLl9wb3NzaWJsZUNoYXJzKGQuZGF0
ZXBpY2tlci5fZ2V0KGIsImRhdGVGb3JtYXQiKSk7dmFyIGM9U3RyaW5nLmZyb21DaGFyQ29kZShh
LmNoYXJDb2RlPT1HP2Eua2V5Q29kZTphLmNoYXJDb2RlKTtyZXR1cm4gYS5jdHJsS2V5fHxhLm1l
dGFLZXl8fGM8IiAifHwhYnx8Yi5pbmRleE9mKGMpPi0xfX0sX2RvS2V5VXA6ZnVuY3Rpb24oYSl7
YT1kLmRhdGVwaWNrZXIuX2dldEluc3QoYS50YXJnZXQpO2lmKGEuaW5wdXQudmFsKCkhPWEubGFz
dFZhbCl0cnl7aWYoZC5kYXRlcGlja2VyLnBhcnNlRGF0ZShkLmRhdGVwaWNrZXIuX2dldChhLCJk
YXRlRm9ybWF0IiksYS5pbnB1dD9hLmlucHV0LnZhbCgpOm51bGwsZC5kYXRlcGlja2VyLl9nZXRG
b3JtYXRDb25maWcoYSkpKXtkLmRhdGVwaWNrZXIuX3NldERhdGVGcm9tRmllbGQoYSk7ZC5kYXRl
cGlja2VyLl91cGRhdGVBbHRlcm5hdGUoYSk7ZC5kYXRlcGlja2VyLl91cGRhdGVEYXRlcGlja2Vy
KGEpfX1jYXRjaChiKXtkLmRhdGVwaWNrZXIubG9nKGIpfXJldHVybiB0cnVlfSwKLV9zaG93RGF0
ZXBpY2tlcjpmdW5jdGlvbihhKXthPWEudGFyZ2V0fHxhO2lmKGEubm9kZU5hbWUudG9Mb3dlckNh
c2UoKSE9ImlucHV0IilhPWQoImlucHV0IixhLnBhcmVudE5vZGUpWzBdO2lmKCEoZC5kYXRlcGlj
a2VyLl9pc0Rpc2FibGVkRGF0ZXBpY2tlcihhKXx8ZC5kYXRlcGlja2VyLl9sYXN0SW5wdXQ9PWEp
KXt2YXIgYj1kLmRhdGVwaWNrZXIuX2dldEluc3QoYSk7ZC5kYXRlcGlja2VyLl9jdXJJbnN0JiZk
LmRhdGVwaWNrZXIuX2N1ckluc3QhPWImJmQuZGF0ZXBpY2tlci5fY3VySW5zdC5kcERpdi5zdG9w
KHRydWUsdHJ1ZSk7dmFyIGM9ZC5kYXRlcGlja2VyLl9nZXQoYiwiYmVmb3JlU2hvdyIpO0UoYi5z
ZXR0aW5ncyxjP2MuYXBwbHkoYSxbYSxiXSk6e30pO2IubGFzdFZhbD1udWxsO2QuZGF0ZXBpY2tl
ci5fbGFzdElucHV0PWE7ZC5kYXRlcGlja2VyLl9zZXREYXRlRnJvbUZpZWxkKGIpO2lmKGQuZGF0
ZXBpY2tlci5faW5EaWFsb2cpYS52YWx1ZT0iIjtpZighZC5kYXRlcGlja2VyLl9wb3Mpe2QuZGF0
ZXBpY2tlci5fcG9zPQotZC5kYXRlcGlja2VyLl9maW5kUG9zKGEpO2QuZGF0ZXBpY2tlci5fcG9z
WzFdKz1hLm9mZnNldEhlaWdodH12YXIgZT1mYWxzZTtkKGEpLnBhcmVudHMoKS5lYWNoKGZ1bmN0
aW9uKCl7ZXw9ZCh0aGlzKS5jc3MoInBvc2l0aW9uIik9PSJmaXhlZCI7cmV0dXJuIWV9KTtpZihl
JiZkLmJyb3dzZXIub3BlcmEpe2QuZGF0ZXBpY2tlci5fcG9zWzBdLT1kb2N1bWVudC5kb2N1bWVu
dEVsZW1lbnQuc2Nyb2xsTGVmdDtkLmRhdGVwaWNrZXIuX3Bvc1sxXS09ZG9jdW1lbnQuZG9jdW1l
bnRFbGVtZW50LnNjcm9sbFRvcH1jPXtsZWZ0OmQuZGF0ZXBpY2tlci5fcG9zWzBdLHRvcDpkLmRh
dGVwaWNrZXIuX3Bvc1sxXX07ZC5kYXRlcGlja2VyLl9wb3M9bnVsbDtiLmRwRGl2LmVtcHR5KCk7
Yi5kcERpdi5jc3Moe3Bvc2l0aW9uOiJhYnNvbHV0ZSIsZGlzcGxheToiYmxvY2siLHRvcDoiLTEw
MDBweCJ9KTtkLmRhdGVwaWNrZXIuX3VwZGF0ZURhdGVwaWNrZXIoYik7Yz1kLmRhdGVwaWNrZXIu
X2NoZWNrT2Zmc2V0KGIsCi1jLGUpO2IuZHBEaXYuY3NzKHtwb3NpdGlvbjpkLmRhdGVwaWNrZXIu
X2luRGlhbG9nJiZkLmJsb2NrVUk/InN0YXRpYyI6ZT8iZml4ZWQiOiJhYnNvbHV0ZSIsZGlzcGxh
eToibm9uZSIsbGVmdDpjLmxlZnQrInB4Iix0b3A6Yy50b3ArInB4In0pO2lmKCFiLmlubGluZSl7
Yz1kLmRhdGVwaWNrZXIuX2dldChiLCJzaG93QW5pbSIpO3ZhciBmPWQuZGF0ZXBpY2tlci5fZ2V0
KGIsImR1cmF0aW9uIiksaD1mdW5jdGlvbigpe2QuZGF0ZXBpY2tlci5fZGF0ZXBpY2tlclNob3dp
bmc9dHJ1ZTt2YXIgaT1iLmRwRGl2LmZpbmQoImlmcmFtZS51aS1kYXRlcGlja2VyLWNvdmVyIik7
aWYoaS5sZW5ndGgpe3ZhciBnPWQuZGF0ZXBpY2tlci5fZ2V0Qm9yZGVycyhiLmRwRGl2KTtpLmNz
cyh7bGVmdDotZ1swXSx0b3A6LWdbMV0sd2lkdGg6Yi5kcERpdi5vdXRlcldpZHRoKCksaGVpZ2h0
OmIuZHBEaXYub3V0ZXJIZWlnaHQoKX0pfX07Yi5kcERpdi56SW5kZXgoZChhKS56SW5kZXgoKSsx
KTtkLmVmZmVjdHMmJgotZC5lZmZlY3RzW2NdP2IuZHBEaXYuc2hvdyhjLGQuZGF0ZXBpY2tlci5f
Z2V0KGIsInNob3dPcHRpb25zIiksZixoKTpiLmRwRGl2W2N8fCJzaG93Il0oYz9mOm51bGwsaCk7
aWYoIWN8fCFmKWgoKTtiLmlucHV0LmlzKCI6dmlzaWJsZSIpJiYhYi5pbnB1dC5pcygiOmRpc2Fi
bGVkIikmJmIuaW5wdXQuZm9jdXMoKTtkLmRhdGVwaWNrZXIuX2N1ckluc3Q9Yn19fSxfdXBkYXRl
RGF0ZXBpY2tlcjpmdW5jdGlvbihhKXt2YXIgYj10aGlzLGM9ZC5kYXRlcGlja2VyLl9nZXRCb3Jk
ZXJzKGEuZHBEaXYpO2EuZHBEaXYuZW1wdHkoKS5hcHBlbmQodGhpcy5fZ2VuZXJhdGVIVE1MKGEp
KTt2YXIgZT1hLmRwRGl2LmZpbmQoImlmcmFtZS51aS1kYXRlcGlja2VyLWNvdmVyIik7ZS5sZW5n
dGgmJmUuY3NzKHtsZWZ0Oi1jWzBdLHRvcDotY1sxXSx3aWR0aDphLmRwRGl2Lm91dGVyV2lkdGgo
KSxoZWlnaHQ6YS5kcERpdi5vdXRlckhlaWdodCgpfSk7YS5kcERpdi5maW5kKCJidXR0b24sIC51
aS1kYXRlcGlja2VyLXByZXYsIC51aS1kYXRlcGlja2VyLW5leHQsIC51aS1kYXRlcGlja2VyLWNh
bGVuZGFyIHRkIGEiKS5iaW5kKCJtb3VzZW91dCIsCi1mdW5jdGlvbigpe2QodGhpcykucmVtb3Zl
Q2xhc3MoInVpLXN0YXRlLWhvdmVyIik7dGhpcy5jbGFzc05hbWUuaW5kZXhPZigidWktZGF0ZXBp
Y2tlci1wcmV2IikhPS0xJiZkKHRoaXMpLnJlbW92ZUNsYXNzKCJ1aS1kYXRlcGlja2VyLXByZXYt
aG92ZXIiKTt0aGlzLmNsYXNzTmFtZS5pbmRleE9mKCJ1aS1kYXRlcGlja2VyLW5leHQiKSE9LTEm
JmQodGhpcykucmVtb3ZlQ2xhc3MoInVpLWRhdGVwaWNrZXItbmV4dC1ob3ZlciIpfSkuYmluZCgi
bW91c2VvdmVyIixmdW5jdGlvbigpe2lmKCFiLl9pc0Rpc2FibGVkRGF0ZXBpY2tlcihhLmlubGlu
ZT9hLmRwRGl2LnBhcmVudCgpWzBdOmEuaW5wdXRbMF0pKXtkKHRoaXMpLnBhcmVudHMoIi51aS1k
YXRlcGlja2VyLWNhbGVuZGFyIikuZmluZCgiYSIpLnJlbW92ZUNsYXNzKCJ1aS1zdGF0ZS1ob3Zl
ciIpO2QodGhpcykuYWRkQ2xhc3MoInVpLXN0YXRlLWhvdmVyIik7dGhpcy5jbGFzc05hbWUuaW5k
ZXhPZigidWktZGF0ZXBpY2tlci1wcmV2IikhPQotLTEmJmQodGhpcykuYWRkQ2xhc3MoInVpLWRh
dGVwaWNrZXItcHJldi1ob3ZlciIpO3RoaXMuY2xhc3NOYW1lLmluZGV4T2YoInVpLWRhdGVwaWNr
ZXItbmV4dCIpIT0tMSYmZCh0aGlzKS5hZGRDbGFzcygidWktZGF0ZXBpY2tlci1uZXh0LWhvdmVy
Iil9fSkuZW5kKCkuZmluZCgiLiIrdGhpcy5fZGF5T3ZlckNsYXNzKyIgYSIpLnRyaWdnZXIoIm1v
dXNlb3ZlciIpLmVuZCgpO2M9dGhpcy5fZ2V0TnVtYmVyT2ZNb250aHMoYSk7ZT1jWzFdO2U+MT9h
LmRwRGl2LmFkZENsYXNzKCJ1aS1kYXRlcGlja2VyLW11bHRpLSIrZSkuY3NzKCJ3aWR0aCIsMTcq
ZSsiZW0iKTphLmRwRGl2LnJlbW92ZUNsYXNzKCJ1aS1kYXRlcGlja2VyLW11bHRpLTIgdWktZGF0
ZXBpY2tlci1tdWx0aS0zIHVpLWRhdGVwaWNrZXItbXVsdGktNCIpLndpZHRoKCIiKTthLmRwRGl2
WyhjWzBdIT0xfHxjWzFdIT0xPyJhZGQiOiJyZW1vdmUiKSsiQ2xhc3MiXSgidWktZGF0ZXBpY2tl
ci1tdWx0aSIpO2EuZHBEaXZbKHRoaXMuX2dldChhLAotImlzUlRMIik/ImFkZCI6InJlbW92ZSIp
KyJDbGFzcyJdKCJ1aS1kYXRlcGlja2VyLXJ0bCIpO2E9PWQuZGF0ZXBpY2tlci5fY3VySW5zdCYm
ZC5kYXRlcGlja2VyLl9kYXRlcGlja2VyU2hvd2luZyYmYS5pbnB1dCYmYS5pbnB1dC5pcygiOnZp
c2libGUiKSYmIWEuaW5wdXQuaXMoIjpkaXNhYmxlZCIpJiZhLmlucHV0WzBdIT1kb2N1bWVudC5h
Y3RpdmVFbGVtZW50JiZhLmlucHV0LmZvY3VzKCk7aWYoYS55ZWFyc2h0bWwpe3ZhciBmPWEueWVh
cnNodG1sO3NldFRpbWVvdXQoZnVuY3Rpb24oKXtmPT09YS55ZWFyc2h0bWwmJmEuZHBEaXYuZmlu
ZCgic2VsZWN0LnVpLWRhdGVwaWNrZXIteWVhcjpmaXJzdCIpLnJlcGxhY2VXaXRoKGEueWVhcnNo
dG1sKTtmPWEueWVhcnNodG1sPW51bGx9LDApfX0sX2dldEJvcmRlcnM6ZnVuY3Rpb24oYSl7dmFy
IGI9ZnVuY3Rpb24oYyl7cmV0dXJue3RoaW46MSxtZWRpdW06Mix0aGljazozfVtjXXx8Y307cmV0
dXJuW3BhcnNlRmxvYXQoYihhLmNzcygiYm9yZGVyLWxlZnQtd2lkdGgiKSkpLAotcGFyc2VGbG9h
dChiKGEuY3NzKCJib3JkZXItdG9wLXdpZHRoIikpKV19LF9jaGVja09mZnNldDpmdW5jdGlvbihh
LGIsYyl7dmFyIGU9YS5kcERpdi5vdXRlcldpZHRoKCksZj1hLmRwRGl2Lm91dGVySGVpZ2h0KCks
aD1hLmlucHV0P2EuaW5wdXQub3V0ZXJXaWR0aCgpOjAsaT1hLmlucHV0P2EuaW5wdXQub3V0ZXJI
ZWlnaHQoKTowLGc9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoK2QoZG9jdW1l
bnQpLnNjcm9sbExlZnQoKSxqPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQr
ZChkb2N1bWVudCkuc2Nyb2xsVG9wKCk7Yi5sZWZ0LT10aGlzLl9nZXQoYSwiaXNSVEwiKT9lLWg6
MDtiLmxlZnQtPWMmJmIubGVmdD09YS5pbnB1dC5vZmZzZXQoKS5sZWZ0P2QoZG9jdW1lbnQpLnNj
cm9sbExlZnQoKTowO2IudG9wLT1jJiZiLnRvcD09YS5pbnB1dC5vZmZzZXQoKS50b3AraT9kKGRv
Y3VtZW50KS5zY3JvbGxUb3AoKTowO2IubGVmdC09TWF0aC5taW4oYi5sZWZ0LAotYi5sZWZ0K2U+
ZyYmZz5lP01hdGguYWJzKGIubGVmdCtlLWcpOjApO2IudG9wLT1NYXRoLm1pbihiLnRvcCxiLnRv
cCtmPmomJmo+Zj9NYXRoLmFicyhmK2kpOjApO3JldHVybiBifSxfZmluZFBvczpmdW5jdGlvbihh
KXtmb3IodmFyIGI9dGhpcy5fZ2V0KHRoaXMuX2dldEluc3QoYSksImlzUlRMIik7YSYmKGEudHlw
ZT09ImhpZGRlbiJ8fGEubm9kZVR5cGUhPTF8fGQuZXhwci5maWx0ZXJzLmhpZGRlbihhKSk7KWE9
YVtiPyJwcmV2aW91c1NpYmxpbmciOiJuZXh0U2libGluZyJdO2E9ZChhKS5vZmZzZXQoKTtyZXR1
cm5bYS5sZWZ0LGEudG9wXX0sX2hpZGVEYXRlcGlja2VyOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMu
X2N1ckluc3Q7aWYoISghYnx8YSYmYiE9ZC5kYXRhKGEsImRhdGVwaWNrZXIiKSkpaWYodGhpcy5f
ZGF0ZXBpY2tlclNob3dpbmcpe2E9dGhpcy5fZ2V0KGIsInNob3dBbmltIik7dmFyIGM9dGhpcy5f
Z2V0KGIsImR1cmF0aW9uIiksZT1mdW5jdGlvbigpe2QuZGF0ZXBpY2tlci5fdGlkeURpYWxvZyhi
KTsKLXRoaXMuX2N1ckluc3Q9bnVsbH07ZC5lZmZlY3RzJiZkLmVmZmVjdHNbYV0/Yi5kcERpdi5o
aWRlKGEsZC5kYXRlcGlja2VyLl9nZXQoYiwic2hvd09wdGlvbnMiKSxjLGUpOmIuZHBEaXZbYT09
InNsaWRlRG93biI/InNsaWRlVXAiOmE9PSJmYWRlSW4iPyJmYWRlT3V0IjoiaGlkZSJdKGE/Yzpu
dWxsLGUpO2F8fGUoKTtpZihhPXRoaXMuX2dldChiLCJvbkNsb3NlIikpYS5hcHBseShiLmlucHV0
P2IuaW5wdXRbMF06bnVsbCxbYi5pbnB1dD9iLmlucHV0LnZhbCgpOiIiLGJdKTt0aGlzLl9kYXRl
cGlja2VyU2hvd2luZz1mYWxzZTt0aGlzLl9sYXN0SW5wdXQ9bnVsbDtpZih0aGlzLl9pbkRpYWxv
Zyl7dGhpcy5fZGlhbG9nSW5wdXQuY3NzKHtwb3NpdGlvbjoiYWJzb2x1dGUiLGxlZnQ6IjAiLHRv
cDoiLTEwMHB4In0pO2lmKGQuYmxvY2tVSSl7ZC51bmJsb2NrVUkoKTtkKCJib2R5IikuYXBwZW5k
KHRoaXMuZHBEaXYpfX10aGlzLl9pbkRpYWxvZz1mYWxzZX19LF90aWR5RGlhbG9nOmZ1bmN0aW9u
KGEpe2EuZHBEaXYucmVtb3ZlQ2xhc3ModGhpcy5fZGlhbG9nQ2xhc3MpLnVuYmluZCgiLnVpLWRh
dGVwaWNrZXItY2FsZW5kYXIiKX0sCi1fY2hlY2tFeHRlcm5hbENsaWNrOmZ1bmN0aW9uKGEpe2lm
KGQuZGF0ZXBpY2tlci5fY3VySW5zdCl7YT1kKGEudGFyZ2V0KTthWzBdLmlkIT1kLmRhdGVwaWNr
ZXIuX21haW5EaXZJZCYmYS5wYXJlbnRzKCIjIitkLmRhdGVwaWNrZXIuX21haW5EaXZJZCkubGVu
Z3RoPT0wJiYhYS5oYXNDbGFzcyhkLmRhdGVwaWNrZXIubWFya2VyQ2xhc3NOYW1lKSYmIWEuaGFz
Q2xhc3MoZC5kYXRlcGlja2VyLl90cmlnZ2VyQ2xhc3MpJiZkLmRhdGVwaWNrZXIuX2RhdGVwaWNr
ZXJTaG93aW5nJiYhKGQuZGF0ZXBpY2tlci5faW5EaWFsb2cmJmQuYmxvY2tVSSkmJmQuZGF0ZXBp
Y2tlci5faGlkZURhdGVwaWNrZXIoKX19LF9hZGp1c3REYXRlOmZ1bmN0aW9uKGEsYixjKXthPWQo
YSk7dmFyIGU9dGhpcy5fZ2V0SW5zdChhWzBdKTtpZighdGhpcy5faXNEaXNhYmxlZERhdGVwaWNr
ZXIoYVswXSkpe3RoaXMuX2FkanVzdEluc3REYXRlKGUsYisoYz09Ik0iP3RoaXMuX2dldChlLCJz
aG93Q3VycmVudEF0UG9zIik6Ci0wKSxjKTt0aGlzLl91cGRhdGVEYXRlcGlja2VyKGUpfX0sX2dv
dG9Ub2RheTpmdW5jdGlvbihhKXthPWQoYSk7dmFyIGI9dGhpcy5fZ2V0SW5zdChhWzBdKTtpZih0
aGlzLl9nZXQoYiwiZ290b0N1cnJlbnQiKSYmYi5jdXJyZW50RGF5KXtiLnNlbGVjdGVkRGF5PWIu
Y3VycmVudERheTtiLmRyYXdNb250aD1iLnNlbGVjdGVkTW9udGg9Yi5jdXJyZW50TW9udGg7Yi5k
cmF3WWVhcj1iLnNlbGVjdGVkWWVhcj1iLmN1cnJlbnRZZWFyfWVsc2V7dmFyIGM9bmV3IERhdGU7
Yi5zZWxlY3RlZERheT1jLmdldERhdGUoKTtiLmRyYXdNb250aD1iLnNlbGVjdGVkTW9udGg9Yy5n
ZXRNb250aCgpO2IuZHJhd1llYXI9Yi5zZWxlY3RlZFllYXI9Yy5nZXRGdWxsWWVhcigpfXRoaXMu
X25vdGlmeUNoYW5nZShiKTt0aGlzLl9hZGp1c3REYXRlKGEpfSxfc2VsZWN0TW9udGhZZWFyOmZ1
bmN0aW9uKGEsYixjKXthPWQoYSk7dmFyIGU9dGhpcy5fZ2V0SW5zdChhWzBdKTtlLl9zZWxlY3Rp
bmdNb250aFllYXI9Ci1mYWxzZTtlWyJzZWxlY3RlZCIrKGM9PSJNIj8iTW9udGgiOiJZZWFyIild
PWVbImRyYXciKyhjPT0iTSI/Ik1vbnRoIjoiWWVhciIpXT1wYXJzZUludChiLm9wdGlvbnNbYi5z
ZWxlY3RlZEluZGV4XS52YWx1ZSwxMCk7dGhpcy5fbm90aWZ5Q2hhbmdlKGUpO3RoaXMuX2FkanVz
dERhdGUoYSl9LF9jbGlja01vbnRoWWVhcjpmdW5jdGlvbihhKXt2YXIgYj10aGlzLl9nZXRJbnN0
KGQoYSlbMF0pO2IuaW5wdXQmJmIuX3NlbGVjdGluZ01vbnRoWWVhciYmc2V0VGltZW91dChmdW5j
dGlvbigpe2IuaW5wdXQuZm9jdXMoKX0sMCk7Yi5fc2VsZWN0aW5nTW9udGhZZWFyPSFiLl9zZWxl
Y3RpbmdNb250aFllYXJ9LF9zZWxlY3REYXk6ZnVuY3Rpb24oYSxiLGMsZSl7dmFyIGY9ZChhKTtp
ZighKGQoZSkuaGFzQ2xhc3ModGhpcy5fdW5zZWxlY3RhYmxlQ2xhc3MpfHx0aGlzLl9pc0Rpc2Fi
bGVkRGF0ZXBpY2tlcihmWzBdKSkpe2Y9dGhpcy5fZ2V0SW5zdChmWzBdKTtmLnNlbGVjdGVkRGF5
PWYuY3VycmVudERheT0KLWQoImEiLGUpLmh0bWwoKTtmLnNlbGVjdGVkTW9udGg9Zi5jdXJyZW50
TW9udGg9YjtmLnNlbGVjdGVkWWVhcj1mLmN1cnJlbnRZZWFyPWM7dGhpcy5fc2VsZWN0RGF0ZShh
LHRoaXMuX2Zvcm1hdERhdGUoZixmLmN1cnJlbnREYXksZi5jdXJyZW50TW9udGgsZi5jdXJyZW50
WWVhcikpfX0sX2NsZWFyRGF0ZTpmdW5jdGlvbihhKXthPWQoYSk7dGhpcy5fZ2V0SW5zdChhWzBd
KTt0aGlzLl9zZWxlY3REYXRlKGEsIiIpfSxfc2VsZWN0RGF0ZTpmdW5jdGlvbihhLGIpe2E9dGhp
cy5fZ2V0SW5zdChkKGEpWzBdKTtiPWIhPW51bGw/Yjp0aGlzLl9mb3JtYXREYXRlKGEpO2EuaW5w
dXQmJmEuaW5wdXQudmFsKGIpO3RoaXMuX3VwZGF0ZUFsdGVybmF0ZShhKTt2YXIgYz10aGlzLl9n
ZXQoYSwib25TZWxlY3QiKTtpZihjKWMuYXBwbHkoYS5pbnB1dD9hLmlucHV0WzBdOm51bGwsW2Is
YV0pO2Vsc2UgYS5pbnB1dCYmYS5pbnB1dC50cmlnZ2VyKCJjaGFuZ2UiKTtpZihhLmlubGluZSl0
aGlzLl91cGRhdGVEYXRlcGlja2VyKGEpOwotZWxzZXt0aGlzLl9oaWRlRGF0ZXBpY2tlcigpO3Ro
aXMuX2xhc3RJbnB1dD1hLmlucHV0WzBdO3R5cGVvZiBhLmlucHV0WzBdIT0ib2JqZWN0IiYmYS5p
bnB1dC5mb2N1cygpO3RoaXMuX2xhc3RJbnB1dD1udWxsfX0sX3VwZGF0ZUFsdGVybmF0ZTpmdW5j
dGlvbihhKXt2YXIgYj10aGlzLl9nZXQoYSwiYWx0RmllbGQiKTtpZihiKXt2YXIgYz10aGlzLl9n
ZXQoYSwiYWx0Rm9ybWF0Iil8fHRoaXMuX2dldChhLCJkYXRlRm9ybWF0IiksZT10aGlzLl9nZXRE
YXRlKGEpLGY9dGhpcy5mb3JtYXREYXRlKGMsZSx0aGlzLl9nZXRGb3JtYXRDb25maWcoYSkpO2Qo
YikuZWFjaChmdW5jdGlvbigpe2QodGhpcykudmFsKGYpfSl9fSxub1dlZWtlbmRzOmZ1bmN0aW9u
KGEpe2E9YS5nZXREYXkoKTtyZXR1cm5bYT4wJiZhPDYsIiJdfSxpc284NjAxV2VlazpmdW5jdGlv
bihhKXthPW5ldyBEYXRlKGEuZ2V0VGltZSgpKTthLnNldERhdGUoYS5nZXREYXRlKCkrNC0oYS5n
ZXREYXkoKXx8NykpO3ZhciBiPQotYS5nZXRUaW1lKCk7YS5zZXRNb250aCgwKTthLnNldERhdGUo
MSk7cmV0dXJuIE1hdGguZmxvb3IoTWF0aC5yb3VuZCgoYi1hKS84NjRFNSkvNykrMX0scGFyc2VE
YXRlOmZ1bmN0aW9uKGEsYixjKXtpZihhPT1udWxsfHxiPT1udWxsKXRocm93IkludmFsaWQgYXJn
dW1lbnRzIjtiPXR5cGVvZiBiPT0ib2JqZWN0Ij9iLnRvU3RyaW5nKCk6YisiIjtpZihiPT0iIily
ZXR1cm4gbnVsbDt2YXIgZT0oYz9jLnNob3J0WWVhckN1dG9mZjpudWxsKXx8dGhpcy5fZGVmYXVs
dHMuc2hvcnRZZWFyQ3V0b2ZmO2U9dHlwZW9mIGUhPSJzdHJpbmciP2U6KG5ldyBEYXRlKS5nZXRG
dWxsWWVhcigpJTEwMCtwYXJzZUludChlLDEwKTtmb3IodmFyIGY9KGM/Yy5kYXlOYW1lc1Nob3J0
Om51bGwpfHx0aGlzLl9kZWZhdWx0cy5kYXlOYW1lc1Nob3J0LGg9KGM/Yy5kYXlOYW1lczpudWxs
KXx8dGhpcy5fZGVmYXVsdHMuZGF5TmFtZXMsaT0oYz9jLm1vbnRoTmFtZXNTaG9ydDpudWxsKXx8
dGhpcy5fZGVmYXVsdHMubW9udGhOYW1lc1Nob3J0LAotZz0oYz9jLm1vbnRoTmFtZXM6bnVsbCl8
fHRoaXMuX2RlZmF1bHRzLm1vbnRoTmFtZXMsaj1jPS0xLGw9LTEsdT0tMSxrPWZhbHNlLG89ZnVu
Y3Rpb24ocCl7KHA9eisxPGEubGVuZ3RoJiZhLmNoYXJBdCh6KzEpPT1wKSYmeisrO3JldHVybiBw
fSxtPWZ1bmN0aW9uKHApe3ZhciB2PW8ocCk7cD1uZXcgUmVnRXhwKCJeXFxkezEsIisocD09IkAi
PzE0OnA9PSIhIj8yMDpwPT0ieSImJnY/NDpwPT0ibyI/MzoyKSsifSIpO3A9Yi5zdWJzdHJpbmco
cykubWF0Y2gocCk7aWYoIXApdGhyb3ciTWlzc2luZyBudW1iZXIgYXQgcG9zaXRpb24gIitzO3Mr
PXBbMF0ubGVuZ3RoO3JldHVybiBwYXJzZUludChwWzBdLDEwKX0sbj1mdW5jdGlvbihwLHYsSCl7
cD1vKHApP0g6djtmb3Iodj0wO3Y8cC5sZW5ndGg7disrKWlmKGIuc3Vic3RyKHMscFt2XS5sZW5n
dGgpLnRvTG93ZXJDYXNlKCk9PXBbdl0udG9Mb3dlckNhc2UoKSl7cys9cFt2XS5sZW5ndGg7cmV0
dXJuIHYrMX10aHJvdyJVbmtub3duIG5hbWUgYXQgcG9zaXRpb24gIisKLXM7fSxyPWZ1bmN0aW9u
KCl7aWYoYi5jaGFyQXQocykhPWEuY2hhckF0KHopKXRocm93IlVuZXhwZWN0ZWQgbGl0ZXJhbCBh
dCBwb3NpdGlvbiAiK3M7cysrfSxzPTAsej0wO3o8YS5sZW5ndGg7eisrKWlmKGspaWYoYS5jaGFy
QXQoeik9PSInIiYmIW8oIiciKSlrPWZhbHNlO2Vsc2UgcigpO2Vsc2Ugc3dpdGNoKGEuY2hhckF0
KHopKXtjYXNlICJkIjpsPW0oImQiKTticmVhaztjYXNlICJEIjpuKCJEIixmLGgpO2JyZWFrO2Nh
c2UgIm8iOnU9bSgibyIpO2JyZWFrO2Nhc2UgIm0iOmo9bSgibSIpO2JyZWFrO2Nhc2UgIk0iOmo9
bigiTSIsaSxnKTticmVhaztjYXNlICJ5IjpjPW0oInkiKTticmVhaztjYXNlICJAIjp2YXIgdz1u
ZXcgRGF0ZShtKCJAIikpO2M9dy5nZXRGdWxsWWVhcigpO2o9dy5nZXRNb250aCgpKzE7bD13Lmdl
dERhdGUoKTticmVhaztjYXNlICIhIjp3PW5ldyBEYXRlKChtKCIhIiktdGhpcy5fdGlja3NUbzE5
NzApLzFFNCk7Yz13LmdldEZ1bGxZZWFyKCk7aj13LmdldE1vbnRoKCkrCi0xO2w9dy5nZXREYXRl
KCk7YnJlYWs7Y2FzZSAiJyI6aWYobygiJyIpKXIoKTtlbHNlIGs9dHJ1ZTticmVhaztkZWZhdWx0
OnIoKX1pZihjPT0tMSljPShuZXcgRGF0ZSkuZ2V0RnVsbFllYXIoKTtlbHNlIGlmKGM8MTAwKWMr
PShuZXcgRGF0ZSkuZ2V0RnVsbFllYXIoKS0obmV3IERhdGUpLmdldEZ1bGxZZWFyKCklMTAwKyhj
PD1lPzA6LTEwMCk7aWYodT4tMSl7aj0xO2w9dTtkb3tlPXRoaXMuX2dldERheXNJbk1vbnRoKGMs
ai0xKTtpZihsPD1lKWJyZWFrO2orKztsLT1lfXdoaWxlKDEpfXc9dGhpcy5fZGF5bGlnaHRTYXZp
bmdBZGp1c3QobmV3IERhdGUoYyxqLTEsbCkpO2lmKHcuZ2V0RnVsbFllYXIoKSE9Y3x8dy5nZXRN
b250aCgpKzEhPWp8fHcuZ2V0RGF0ZSgpIT1sKXRocm93IkludmFsaWQgZGF0ZSI7cmV0dXJuIHd9
LEFUT006Inl5LW1tLWRkIixDT09LSUU6IkQsIGRkIE0geXkiLElTT184NjAxOiJ5eS1tbS1kZCIs
UkZDXzgyMjoiRCwgZCBNIHkiLFJGQ184NTA6IkRELCBkZC1NLXkiLAotUkZDXzEwMzY6IkQsIGQg
TSB5IixSRkNfMTEyMzoiRCwgZCBNIHl5IixSRkNfMjgyMjoiRCwgZCBNIHl5IixSU1M6IkQsIGQg
TSB5IixUSUNLUzoiISIsVElNRVNUQU1QOiJAIixXM0M6Inl5LW1tLWRkIixfdGlja3NUbzE5NzA6
KDcxODY4NStNYXRoLmZsb29yKDQ5Mi41KS1NYXRoLmZsb29yKDE5LjcpK01hdGguZmxvb3IoNC45
MjUpKSoyNCo2MCo2MCoxRTcsZm9ybWF0RGF0ZTpmdW5jdGlvbihhLGIsYyl7aWYoIWIpcmV0dXJu
IiI7dmFyIGU9KGM/Yy5kYXlOYW1lc1Nob3J0Om51bGwpfHx0aGlzLl9kZWZhdWx0cy5kYXlOYW1l
c1Nob3J0LGY9KGM/Yy5kYXlOYW1lczpudWxsKXx8dGhpcy5fZGVmYXVsdHMuZGF5TmFtZXMsaD0o
Yz9jLm1vbnRoTmFtZXNTaG9ydDpudWxsKXx8dGhpcy5fZGVmYXVsdHMubW9udGhOYW1lc1Nob3J0
O2M9KGM/Yy5tb250aE5hbWVzOm51bGwpfHx0aGlzLl9kZWZhdWx0cy5tb250aE5hbWVzO3ZhciBp
PWZ1bmN0aW9uKG8peyhvPWsrMTxhLmxlbmd0aCYmCi1hLmNoYXJBdChrKzEpPT1vKSYmaysrO3Jl
dHVybiBvfSxnPWZ1bmN0aW9uKG8sbSxuKXttPSIiK207aWYoaShvKSlmb3IoO20ubGVuZ3RoPG47
KW09IjAiK207cmV0dXJuIG19LGo9ZnVuY3Rpb24obyxtLG4scil7cmV0dXJuIGkobyk/clttXTpu
W21dfSxsPSIiLHU9ZmFsc2U7aWYoYilmb3IodmFyIGs9MDtrPGEubGVuZ3RoO2srKylpZih1KWlm
KGEuY2hhckF0KGspPT0iJyImJiFpKCInIikpdT1mYWxzZTtlbHNlIGwrPWEuY2hhckF0KGspO2Vs
c2Ugc3dpdGNoKGEuY2hhckF0KGspKXtjYXNlICJkIjpsKz1nKCJkIixiLmdldERhdGUoKSwyKTti
cmVhaztjYXNlICJEIjpsKz1qKCJEIixiLmdldERheSgpLGUsZik7YnJlYWs7Y2FzZSAibyI6bCs9
ZygibyIsKGIuZ2V0VGltZSgpLShuZXcgRGF0ZShiLmdldEZ1bGxZZWFyKCksMCwwKSkuZ2V0VGlt
ZSgpKS84NjRFNSwzKTticmVhaztjYXNlICJtIjpsKz1nKCJtIixiLmdldE1vbnRoKCkrMSwyKTti
cmVhaztjYXNlICJNIjpsKz1qKCJNIiwKLWIuZ2V0TW9udGgoKSxoLGMpO2JyZWFrO2Nhc2UgInki
OmwrPWkoInkiKT9iLmdldEZ1bGxZZWFyKCk6KGIuZ2V0WWVhcigpJTEwMDwxMD8iMCI6IiIpK2Iu
Z2V0WWVhcigpJTEwMDticmVhaztjYXNlICJAIjpsKz1iLmdldFRpbWUoKTticmVhaztjYXNlICIh
IjpsKz1iLmdldFRpbWUoKSoxRTQrdGhpcy5fdGlja3NUbzE5NzA7YnJlYWs7Y2FzZSAiJyI6aWYo
aSgiJyIpKWwrPSInIjtlbHNlIHU9dHJ1ZTticmVhaztkZWZhdWx0OmwrPWEuY2hhckF0KGspfXJl
dHVybiBsfSxfcG9zc2libGVDaGFyczpmdW5jdGlvbihhKXtmb3IodmFyIGI9IiIsYz1mYWxzZSxl
PWZ1bmN0aW9uKGgpeyhoPWYrMTxhLmxlbmd0aCYmYS5jaGFyQXQoZisxKT09aCkmJmYrKztyZXR1
cm4gaH0sZj0wO2Y8YS5sZW5ndGg7ZisrKWlmKGMpaWYoYS5jaGFyQXQoZik9PSInIiYmIWUoIici
KSljPWZhbHNlO2Vsc2UgYis9YS5jaGFyQXQoZik7ZWxzZSBzd2l0Y2goYS5jaGFyQXQoZikpe2Nh
c2UgImQiOmNhc2UgIm0iOmNhc2UgInkiOmNhc2UgIkAiOmIrPQotIjAxMjM0NTY3ODkiO2JyZWFr
O2Nhc2UgIkQiOmNhc2UgIk0iOnJldHVybiBudWxsO2Nhc2UgIiciOmlmKGUoIiciKSliKz0iJyI7
ZWxzZSBjPXRydWU7YnJlYWs7ZGVmYXVsdDpiKz1hLmNoYXJBdChmKX1yZXR1cm4gYn0sX2dldDpm
dW5jdGlvbihhLGIpe3JldHVybiBhLnNldHRpbmdzW2JdIT09Rz9hLnNldHRpbmdzW2JdOnRoaXMu
X2RlZmF1bHRzW2JdfSxfc2V0RGF0ZUZyb21GaWVsZDpmdW5jdGlvbihhLGIpe2lmKGEuaW5wdXQu
dmFsKCkhPWEubGFzdFZhbCl7dmFyIGM9dGhpcy5fZ2V0KGEsImRhdGVGb3JtYXQiKSxlPWEubGFz
dFZhbD1hLmlucHV0P2EuaW5wdXQudmFsKCk6bnVsbCxmLGg7Zj1oPXRoaXMuX2dldERlZmF1bHRE
YXRlKGEpO3ZhciBpPXRoaXMuX2dldEZvcm1hdENvbmZpZyhhKTt0cnl7Zj10aGlzLnBhcnNlRGF0
ZShjLGUsaSl8fGh9Y2F0Y2goZyl7dGhpcy5sb2coZyk7ZT1iPyIiOmV9YS5zZWxlY3RlZERheT1m
LmdldERhdGUoKTthLmRyYXdNb250aD1hLnNlbGVjdGVkTW9udGg9Ci1mLmdldE1vbnRoKCk7YS5k
cmF3WWVhcj1hLnNlbGVjdGVkWWVhcj1mLmdldEZ1bGxZZWFyKCk7YS5jdXJyZW50RGF5PWU/Zi5n
ZXREYXRlKCk6MDthLmN1cnJlbnRNb250aD1lP2YuZ2V0TW9udGgoKTowO2EuY3VycmVudFllYXI9
ZT9mLmdldEZ1bGxZZWFyKCk6MDt0aGlzLl9hZGp1c3RJbnN0RGF0ZShhKX19LF9nZXREZWZhdWx0
RGF0ZTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5fcmVzdHJpY3RNaW5NYXgoYSx0aGlzLl9kZXRl
cm1pbmVEYXRlKGEsdGhpcy5fZ2V0KGEsImRlZmF1bHREYXRlIiksbmV3IERhdGUpKX0sX2RldGVy
bWluZURhdGU6ZnVuY3Rpb24oYSxiLGMpe3ZhciBlPWZ1bmN0aW9uKGgpe3ZhciBpPW5ldyBEYXRl
O2kuc2V0RGF0ZShpLmdldERhdGUoKStoKTtyZXR1cm4gaX0sZj1mdW5jdGlvbihoKXt0cnl7cmV0
dXJuIGQuZGF0ZXBpY2tlci5wYXJzZURhdGUoZC5kYXRlcGlja2VyLl9nZXQoYSwiZGF0ZUZvcm1h
dCIpLGgsZC5kYXRlcGlja2VyLl9nZXRGb3JtYXRDb25maWcoYSkpfWNhdGNoKGkpe312YXIgZz0K
LShoLnRvTG93ZXJDYXNlKCkubWF0Y2goL15jLyk/ZC5kYXRlcGlja2VyLl9nZXREYXRlKGEpOm51
bGwpfHxuZXcgRGF0ZSxqPWcuZ2V0RnVsbFllYXIoKSxsPWcuZ2V0TW9udGgoKTtnPWcuZ2V0RGF0
ZSgpO2Zvcih2YXIgdT0vKFsrLV0/WzAtOV0rKVxzKihkfER8d3xXfG18TXx5fFkpPy9nLGs9dS5l
eGVjKGgpO2s7KXtzd2l0Y2goa1syXXx8ImQiKXtjYXNlICJkIjpjYXNlICJEIjpnKz1wYXJzZUlu
dChrWzFdLDEwKTticmVhaztjYXNlICJ3IjpjYXNlICJXIjpnKz1wYXJzZUludChrWzFdLDEwKSo3
O2JyZWFrO2Nhc2UgIm0iOmNhc2UgIk0iOmwrPXBhcnNlSW50KGtbMV0sMTApO2c9TWF0aC5taW4o
ZyxkLmRhdGVwaWNrZXIuX2dldERheXNJbk1vbnRoKGosbCkpO2JyZWFrO2Nhc2UgInkiOmNhc2Ug
IlkiOmorPXBhcnNlSW50KGtbMV0sMTApO2c9TWF0aC5taW4oZyxkLmRhdGVwaWNrZXIuX2dldERh
eXNJbk1vbnRoKGosbCkpO2JyZWFrfWs9dS5leGVjKGgpfXJldHVybiBuZXcgRGF0ZShqLAotbCxn
KX07aWYoYj0oYj1iPT1udWxsfHxiPT09IiI/Yzp0eXBlb2YgYj09InN0cmluZyI/ZihiKTp0eXBl
b2YgYj09Im51bWJlciI/aXNOYU4oYik/YzplKGIpOm5ldyBEYXRlKGIuZ2V0VGltZSgpKSkmJmIu
dG9TdHJpbmcoKT09IkludmFsaWQgRGF0ZSI/YzpiKXtiLnNldEhvdXJzKDApO2Iuc2V0TWludXRl
cygwKTtiLnNldFNlY29uZHMoMCk7Yi5zZXRNaWxsaXNlY29uZHMoMCl9cmV0dXJuIHRoaXMuX2Rh
eWxpZ2h0U2F2aW5nQWRqdXN0KGIpfSxfZGF5bGlnaHRTYXZpbmdBZGp1c3Q6ZnVuY3Rpb24oYSl7
aWYoIWEpcmV0dXJuIG51bGw7YS5zZXRIb3VycyhhLmdldEhvdXJzKCk+MTI/YS5nZXRIb3Vycygp
KzI6MCk7cmV0dXJuIGF9LF9zZXREYXRlOmZ1bmN0aW9uKGEsYixjKXt2YXIgZT0hYixmPWEuc2Vs
ZWN0ZWRNb250aCxoPWEuc2VsZWN0ZWRZZWFyO2I9dGhpcy5fcmVzdHJpY3RNaW5NYXgoYSx0aGlz
Ll9kZXRlcm1pbmVEYXRlKGEsYixuZXcgRGF0ZSkpO2Euc2VsZWN0ZWREYXk9Ci1hLmN1cnJlbnRE
YXk9Yi5nZXREYXRlKCk7YS5kcmF3TW9udGg9YS5zZWxlY3RlZE1vbnRoPWEuY3VycmVudE1vbnRo
PWIuZ2V0TW9udGgoKTthLmRyYXdZZWFyPWEuc2VsZWN0ZWRZZWFyPWEuY3VycmVudFllYXI9Yi5n
ZXRGdWxsWWVhcigpO2lmKChmIT1hLnNlbGVjdGVkTW9udGh8fGghPWEuc2VsZWN0ZWRZZWFyKSYm
IWMpdGhpcy5fbm90aWZ5Q2hhbmdlKGEpO3RoaXMuX2FkanVzdEluc3REYXRlKGEpO2lmKGEuaW5w
dXQpYS5pbnB1dC52YWwoZT8iIjp0aGlzLl9mb3JtYXREYXRlKGEpKX0sX2dldERhdGU6ZnVuY3Rp
b24oYSl7cmV0dXJuIWEuY3VycmVudFllYXJ8fGEuaW5wdXQmJmEuaW5wdXQudmFsKCk9PSIiP251
bGw6dGhpcy5fZGF5bGlnaHRTYXZpbmdBZGp1c3QobmV3IERhdGUoYS5jdXJyZW50WWVhcixhLmN1
cnJlbnRNb250aCxhLmN1cnJlbnREYXkpKX0sX2dlbmVyYXRlSFRNTDpmdW5jdGlvbihhKXt2YXIg
Yj1uZXcgRGF0ZTtiPXRoaXMuX2RheWxpZ2h0U2F2aW5nQWRqdXN0KG5ldyBEYXRlKGIuZ2V0RnVs
bFllYXIoKSwKLWIuZ2V0TW9udGgoKSxiLmdldERhdGUoKSkpO3ZhciBjPXRoaXMuX2dldChhLCJp
c1JUTCIpLGU9dGhpcy5fZ2V0KGEsInNob3dCdXR0b25QYW5lbCIpLGY9dGhpcy5fZ2V0KGEsImhp
ZGVJZk5vUHJldk5leHQiKSxoPXRoaXMuX2dldChhLCJuYXZpZ2F0aW9uQXNEYXRlRm9ybWF0Iiks
aT10aGlzLl9nZXROdW1iZXJPZk1vbnRocyhhKSxnPXRoaXMuX2dldChhLCJzaG93Q3VycmVudEF0
UG9zIiksaj10aGlzLl9nZXQoYSwic3RlcE1vbnRocyIpLGw9aVswXSE9MXx8aVsxXSE9MSx1PXRo
aXMuX2RheWxpZ2h0U2F2aW5nQWRqdXN0KCFhLmN1cnJlbnREYXk/bmV3IERhdGUoOTk5OSw5LDkp
Om5ldyBEYXRlKGEuY3VycmVudFllYXIsYS5jdXJyZW50TW9udGgsYS5jdXJyZW50RGF5KSksaz10
aGlzLl9nZXRNaW5NYXhEYXRlKGEsIm1pbiIpLG89dGhpcy5fZ2V0TWluTWF4RGF0ZShhLCJtYXgi
KTtnPWEuZHJhd01vbnRoLWc7dmFyIG09YS5kcmF3WWVhcjtpZihnPDApe2crPTEyO20tLX1pZihv
KXt2YXIgbj0KLXRoaXMuX2RheWxpZ2h0U2F2aW5nQWRqdXN0KG5ldyBEYXRlKG8uZ2V0RnVsbFll
YXIoKSxvLmdldE1vbnRoKCktaVswXSppWzFdKzEsby5nZXREYXRlKCkpKTtmb3Iobj1rJiZuPGs/
azpuO3RoaXMuX2RheWxpZ2h0U2F2aW5nQWRqdXN0KG5ldyBEYXRlKG0sZywxKSk+bjspe2ctLTtp
ZihnPDApe2c9MTE7bS0tfX19YS5kcmF3TW9udGg9ZzthLmRyYXdZZWFyPW07bj10aGlzLl9nZXQo
YSwicHJldlRleHQiKTtuPSFoP246dGhpcy5mb3JtYXREYXRlKG4sdGhpcy5fZGF5bGlnaHRTYXZp
bmdBZGp1c3QobmV3IERhdGUobSxnLWosMSkpLHRoaXMuX2dldEZvcm1hdENvbmZpZyhhKSk7bj10
aGlzLl9jYW5BZGp1c3RNb250aChhLC0xLG0sZyk/JzxhIGNsYXNzPSJ1aS1kYXRlcGlja2VyLXBy
ZXYgdWktY29ybmVyLWFsbCIgb25jbGljaz0iRFBfalF1ZXJ5XycreSsiLmRhdGVwaWNrZXIuX2Fk
anVzdERhdGUoJyMiK2EuaWQrIicsIC0iK2orIiwgJ00nKTtcIiB0aXRsZT1cIiIrbisnIj48c3Bh
biBjbGFzcz0idWktaWNvbiB1aS1pY29uLWNpcmNsZS10cmlhbmdsZS0nKwotKGM/ImUiOiJ3Iikr
JyI+JytuKyI8L3NwYW4+PC9hPiI6Zj8iIjonPGEgY2xhc3M9InVpLWRhdGVwaWNrZXItcHJldiB1
aS1jb3JuZXItYWxsIHVpLXN0YXRlLWRpc2FibGVkIiB0aXRsZT0iJytuKyciPjxzcGFuIGNsYXNz
PSJ1aS1pY29uIHVpLWljb24tY2lyY2xlLXRyaWFuZ2xlLScrKGM/ImUiOiJ3IikrJyI+JytuKyI8
L3NwYW4+PC9hPiI7dmFyIHI9dGhpcy5fZ2V0KGEsIm5leHRUZXh0Iik7cj0haD9yOnRoaXMuZm9y
bWF0RGF0ZShyLHRoaXMuX2RheWxpZ2h0U2F2aW5nQWRqdXN0KG5ldyBEYXRlKG0sZytqLDEpKSx0
aGlzLl9nZXRGb3JtYXRDb25maWcoYSkpO2Y9dGhpcy5fY2FuQWRqdXN0TW9udGgoYSwrMSxtLGcp
Pyc8YSBjbGFzcz0idWktZGF0ZXBpY2tlci1uZXh0IHVpLWNvcm5lci1hbGwiIG9uY2xpY2s9IkRQ
X2pRdWVyeV8nK3krIi5kYXRlcGlja2VyLl9hZGp1c3REYXRlKCcjIithLmlkKyInLCArIitqKyIs
ICdNJyk7XCIgdGl0bGU9XCIiK3IrJyI+PHNwYW4gY2xhc3M9InVpLWljb24gdWktaWNvbi1jaXJj
bGUtdHJpYW5nbGUtJysKLShjPyJ3IjoiZSIpKyciPicrcisiPC9zcGFuPjwvYT4iOmY/IiI6Jzxh
IGNsYXNzPSJ1aS1kYXRlcGlja2VyLW5leHQgdWktY29ybmVyLWFsbCB1aS1zdGF0ZS1kaXNhYmxl
ZCIgdGl0bGU9IicrcisnIj48c3BhbiBjbGFzcz0idWktaWNvbiB1aS1pY29uLWNpcmNsZS10cmlh
bmdsZS0nKyhjPyJ3IjoiZSIpKyciPicrcisiPC9zcGFuPjwvYT4iO2o9dGhpcy5fZ2V0KGEsImN1
cnJlbnRUZXh0Iik7cj10aGlzLl9nZXQoYSwiZ290b0N1cnJlbnQiKSYmYS5jdXJyZW50RGF5P3U6
YjtqPSFoP2o6dGhpcy5mb3JtYXREYXRlKGoscix0aGlzLl9nZXRGb3JtYXRDb25maWcoYSkpO2g9
IWEuaW5saW5lPyc8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9InVpLWRhdGVwaWNrZXItY2xv
c2UgdWktc3RhdGUtZGVmYXVsdCB1aS1wcmlvcml0eS1wcmltYXJ5IHVpLWNvcm5lci1hbGwiIG9u
Y2xpY2s9IkRQX2pRdWVyeV8nK3krJy5kYXRlcGlja2VyLl9oaWRlRGF0ZXBpY2tlcigpOyI+Jyt0
aGlzLl9nZXQoYSwKLSJjbG9zZVRleHQiKSsiPC9idXR0b24+IjoiIjtlPWU/JzxkaXYgY2xhc3M9
InVpLWRhdGVwaWNrZXItYnV0dG9ucGFuZSB1aS13aWRnZXQtY29udGVudCI+JysoYz9oOiIiKSso
dGhpcy5faXNJblJhbmdlKGEscik/JzxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0idWktZGF0
ZXBpY2tlci1jdXJyZW50IHVpLXN0YXRlLWRlZmF1bHQgdWktcHJpb3JpdHktc2Vjb25kYXJ5IHVp
LWNvcm5lci1hbGwiIG9uY2xpY2s9IkRQX2pRdWVyeV8nK3krIi5kYXRlcGlja2VyLl9nb3RvVG9k
YXkoJyMiK2EuaWQrIicpO1wiPiIraisiPC9idXR0b24+IjoiIikrKGM/IiI6aCkrIjwvZGl2PiI6
IiI7aD1wYXJzZUludCh0aGlzLl9nZXQoYSwiZmlyc3REYXkiKSwxMCk7aD1pc05hTihoKT8wOmg7
aj10aGlzLl9nZXQoYSwic2hvd1dlZWsiKTtyPXRoaXMuX2dldChhLCJkYXlOYW1lcyIpO3RoaXMu
X2dldChhLCJkYXlOYW1lc1Nob3J0Iik7dmFyIHM9dGhpcy5fZ2V0KGEsImRheU5hbWVzTWluIiks
ej0KLXRoaXMuX2dldChhLCJtb250aE5hbWVzIiksdz10aGlzLl9nZXQoYSwibW9udGhOYW1lc1No
b3J0IikscD10aGlzLl9nZXQoYSwiYmVmb3JlU2hvd0RheSIpLHY9dGhpcy5fZ2V0KGEsInNob3dP
dGhlck1vbnRocyIpLEg9dGhpcy5fZ2V0KGEsInNlbGVjdE90aGVyTW9udGhzIik7dGhpcy5fZ2V0
KGEsImNhbGN1bGF0ZVdlZWsiKTtmb3IodmFyIEw9dGhpcy5fZ2V0RGVmYXVsdERhdGUoYSksST0i
IixDPTA7QzxpWzBdO0MrKyl7Zm9yKHZhciBNPSIiLEQ9MDtEPGlbMV07RCsrKXt2YXIgTj10aGlz
Ll9kYXlsaWdodFNhdmluZ0FkanVzdChuZXcgRGF0ZShtLGcsYS5zZWxlY3RlZERheSkpLHQ9IiB1
aS1jb3JuZXItYWxsIix4PSIiO2lmKGwpe3grPSc8ZGl2IGNsYXNzPSJ1aS1kYXRlcGlja2VyLWdy
b3VwJztpZihpWzFdPjEpc3dpdGNoKEQpe2Nhc2UgMDp4Kz0iIHVpLWRhdGVwaWNrZXItZ3JvdXAt
Zmlyc3QiO3Q9IiB1aS1jb3JuZXItIisoYz8icmlnaHQiOiJsZWZ0Iik7YnJlYWs7Y2FzZSBpWzFd
LQotMTp4Kz0iIHVpLWRhdGVwaWNrZXItZ3JvdXAtbGFzdCI7dD0iIHVpLWNvcm5lci0iKyhjPyJs
ZWZ0IjoicmlnaHQiKTticmVhaztkZWZhdWx0OngrPSIgdWktZGF0ZXBpY2tlci1ncm91cC1taWRk
bGUiO3Q9IiI7YnJlYWt9eCs9JyI+J314Kz0nPGRpdiBjbGFzcz0idWktZGF0ZXBpY2tlci1oZWFk
ZXIgdWktd2lkZ2V0LWhlYWRlciB1aS1oZWxwZXItY2xlYXJmaXgnK3QrJyI+JysoL2FsbHxsZWZ0
Ly50ZXN0KHQpJiZDPT0wP2M/ZjpuOiIiKSsoL2FsbHxyaWdodC8udGVzdCh0KSYmQz09MD9jP246
ZjoiIikrdGhpcy5fZ2VuZXJhdGVNb250aFllYXJIZWFkZXIoYSxnLG0sayxvLEM+MHx8RD4wLHos
dykrJzwvZGl2Pjx0YWJsZSBjbGFzcz0idWktZGF0ZXBpY2tlci1jYWxlbmRhciI+PHRoZWFkPjx0
cj4nO3ZhciBBPWo/Jzx0aCBjbGFzcz0idWktZGF0ZXBpY2tlci13ZWVrLWNvbCI+Jyt0aGlzLl9n
ZXQoYSwid2Vla0hlYWRlciIpKyI8L3RoPiI6IiI7Zm9yKHQ9MDt0PDc7dCsrKXt2YXIgcT0KLSh0
K2gpJTc7QSs9Ijx0aCIrKCh0K2grNiklNz49NT8nIGNsYXNzPSJ1aS1kYXRlcGlja2VyLXdlZWst
ZW5kIic6IiIpKyc+PHNwYW4gdGl0bGU9IicrcltxXSsnIj4nK3NbcV0rIjwvc3Bhbj48L3RoPiJ9
eCs9QSsiPC90cj48L3RoZWFkPjx0Ym9keT4iO0E9dGhpcy5fZ2V0RGF5c0luTW9udGgobSxnKTtp
ZihtPT1hLnNlbGVjdGVkWWVhciYmZz09YS5zZWxlY3RlZE1vbnRoKWEuc2VsZWN0ZWREYXk9TWF0
aC5taW4oYS5zZWxlY3RlZERheSxBKTt0PSh0aGlzLl9nZXRGaXJzdERheU9mTW9udGgobSxnKS1o
KzcpJTc7QT1sPzY6TWF0aC5jZWlsKCh0K0EpLzcpO3E9dGhpcy5fZGF5bGlnaHRTYXZpbmdBZGp1
c3QobmV3IERhdGUobSxnLDEtdCkpO2Zvcih2YXIgTz0wO088QTtPKyspe3grPSI8dHI+Ijt2YXIg
UD0haj8iIjonPHRkIGNsYXNzPSJ1aS1kYXRlcGlja2VyLXdlZWstY29sIj4nK3RoaXMuX2dldChh
LCJjYWxjdWxhdGVXZWVrIikocSkrIjwvdGQ+Ijtmb3IodD0wO3Q8Nzt0Kyspe3ZhciBGPQotcD9w
LmFwcGx5KGEuaW5wdXQ/YS5pbnB1dFswXTpudWxsLFtxXSk6W3RydWUsIiJdLEI9cS5nZXRNb250
aCgpIT1nLEo9QiYmIUh8fCFGWzBdfHxrJiZxPGt8fG8mJnE+bztQKz0nPHRkIGNsYXNzPSInKygo
dCtoKzYpJTc+PTU/IiB1aS1kYXRlcGlja2VyLXdlZWstZW5kIjoiIikrKEI/IiB1aS1kYXRlcGlj
a2VyLW90aGVyLW1vbnRoIjoiIikrKHEuZ2V0VGltZSgpPT1OLmdldFRpbWUoKSYmZz09YS5zZWxl
Y3RlZE1vbnRoJiZhLl9rZXlFdmVudHx8TC5nZXRUaW1lKCk9PXEuZ2V0VGltZSgpJiZMLmdldFRp
bWUoKT09Ti5nZXRUaW1lKCk/IiAiK3RoaXMuX2RheU92ZXJDbGFzczoiIikrKEo/IiAiK3RoaXMu
X3Vuc2VsZWN0YWJsZUNsYXNzKyIgdWktc3RhdGUtZGlzYWJsZWQiOiIiKSsoQiYmIXY/IiI6IiAi
K0ZbMV0rKHEuZ2V0VGltZSgpPT11LmdldFRpbWUoKT8iICIrdGhpcy5fY3VycmVudENsYXNzOiIi
KSsocS5nZXRUaW1lKCk9PWIuZ2V0VGltZSgpPyIgdWktZGF0ZXBpY2tlci10b2RheSI6Ci0iIikp
KyciJysoKCFCfHx2KSYmRlsyXT8nIHRpdGxlPSInK0ZbMl0rJyInOiIiKSsoSj8iIjonIG9uY2xp
Y2s9IkRQX2pRdWVyeV8nK3krIi5kYXRlcGlja2VyLl9zZWxlY3REYXkoJyMiK2EuaWQrIicsIitx
LmdldE1vbnRoKCkrIiwiK3EuZ2V0RnVsbFllYXIoKSsnLCB0aGlzKTtyZXR1cm4gZmFsc2U7Iicp
KyI+IisoQiYmIXY/IiYjeGEwOyI6Sj8nPHNwYW4gY2xhc3M9InVpLXN0YXRlLWRlZmF1bHQiPicr
cS5nZXREYXRlKCkrIjwvc3Bhbj4iOic8YSBjbGFzcz0idWktc3RhdGUtZGVmYXVsdCcrKHEuZ2V0
VGltZSgpPT1iLmdldFRpbWUoKT8iIHVpLXN0YXRlLWhpZ2hsaWdodCI6IiIpKyhxLmdldFRpbWUo
KT09dS5nZXRUaW1lKCk/IiB1aS1zdGF0ZS1hY3RpdmUiOiIiKSsoQj8iIHVpLXByaW9yaXR5LXNl
Y29uZGFyeSI6IiIpKyciIGhyZWY9IiMiPicrcS5nZXREYXRlKCkrIjwvYT4iKSsiPC90ZD4iO3Eu
c2V0RGF0ZShxLmdldERhdGUoKSsxKTtxPXRoaXMuX2RheWxpZ2h0U2F2aW5nQWRqdXN0KHEpfXgr
PQotUCsiPC90cj4ifWcrKztpZihnPjExKXtnPTA7bSsrfXgrPSI8L3Rib2R5PjwvdGFibGU+Iiso
bD8iPC9kaXY+IisoaVswXT4wJiZEPT1pWzFdLTE/JzxkaXYgY2xhc3M9InVpLWRhdGVwaWNrZXIt
cm93LWJyZWFrIj48L2Rpdj4nOiIiKToiIik7TSs9eH1JKz1NfUkrPWUrKGQuYnJvd3Nlci5tc2ll
JiZwYXJzZUludChkLmJyb3dzZXIudmVyc2lvbiwxMCk8NyYmIWEuaW5saW5lPyc8aWZyYW1lIHNy
Yz0iamF2YXNjcmlwdDpmYWxzZTsiIGNsYXNzPSJ1aS1kYXRlcGlja2VyLWNvdmVyIiBmcmFtZWJv
cmRlcj0iMCI+PC9pZnJhbWU+JzoiIik7YS5fa2V5RXZlbnQ9ZmFsc2U7cmV0dXJuIEl9LF9nZW5l
cmF0ZU1vbnRoWWVhckhlYWRlcjpmdW5jdGlvbihhLGIsYyxlLGYsaCxpLGcpe3ZhciBqPXRoaXMu
X2dldChhLCJjaGFuZ2VNb250aCIpLGw9dGhpcy5fZ2V0KGEsImNoYW5nZVllYXIiKSx1PXRoaXMu
X2dldChhLCJzaG93TW9udGhBZnRlclllYXIiKSxrPSc8ZGl2IGNsYXNzPSJ1aS1kYXRlcGlja2Vy
LXRpdGxlIj4nLAotbz0iIjtpZihofHwhailvKz0nPHNwYW4gY2xhc3M9InVpLWRhdGVwaWNrZXIt
bW9udGgiPicraVtiXSsiPC9zcGFuPiI7ZWxzZXtpPWUmJmUuZ2V0RnVsbFllYXIoKT09Yzt2YXIg
bT1mJiZmLmdldEZ1bGxZZWFyKCk9PWM7bys9JzxzZWxlY3QgY2xhc3M9InVpLWRhdGVwaWNrZXIt
bW9udGgiIG9uY2hhbmdlPSJEUF9qUXVlcnlfJyt5KyIuZGF0ZXBpY2tlci5fc2VsZWN0TW9udGhZ
ZWFyKCcjIithLmlkKyInLCB0aGlzLCAnTScpO1wiIG9uY2xpY2s9XCJEUF9qUXVlcnlfIit5KyIu
ZGF0ZXBpY2tlci5fY2xpY2tNb250aFllYXIoJyMiK2EuaWQrIicpO1wiPiI7Zm9yKHZhciBuPTA7
bjwxMjtuKyspaWYoKCFpfHxuPj1lLmdldE1vbnRoKCkpJiYoIW18fG48PWYuZ2V0TW9udGgoKSkp
bys9JzxvcHRpb24gdmFsdWU9IicrbisnIicrKG49PWI/JyBzZWxlY3RlZD0ic2VsZWN0ZWQiJzoi
IikrIj4iK2dbbl0rIjwvb3B0aW9uPiI7bys9Ijwvc2VsZWN0PiJ9dXx8KGsrPW8rKGh8fCEoaiYm
Ci1sKT8iJiN4YTA7IjoiIikpO2EueWVhcnNodG1sPSIiO2lmKGh8fCFsKWsrPSc8c3BhbiBjbGFz
cz0idWktZGF0ZXBpY2tlci15ZWFyIj4nK2MrIjwvc3Bhbj4iO2Vsc2V7Zz10aGlzLl9nZXQoYSwi
eWVhclJhbmdlIikuc3BsaXQoIjoiKTt2YXIgcj0obmV3IERhdGUpLmdldEZ1bGxZZWFyKCk7aT1m
dW5jdGlvbihzKXtzPXMubWF0Y2goL2NbKy1dLiovKT9jK3BhcnNlSW50KHMuc3Vic3RyaW5nKDEp
LDEwKTpzLm1hdGNoKC9bKy1dLiovKT9yK3BhcnNlSW50KHMsMTApOnBhcnNlSW50KHMsMTApO3Jl
dHVybiBpc05hTihzKT9yOnN9O2I9aShnWzBdKTtnPU1hdGgubWF4KGIsaShnWzFdfHwiIikpO2I9
ZT9NYXRoLm1heChiLGUuZ2V0RnVsbFllYXIoKSk6YjtnPWY/TWF0aC5taW4oZyxmLmdldEZ1bGxZ
ZWFyKCkpOmc7Zm9yKGEueWVhcnNodG1sKz0nPHNlbGVjdCBjbGFzcz0idWktZGF0ZXBpY2tlci15
ZWFyIiBvbmNoYW5nZT0iRFBfalF1ZXJ5XycreSsiLmRhdGVwaWNrZXIuX3NlbGVjdE1vbnRoWWVh
cignIyIrCi1hLmlkKyInLCB0aGlzLCAnWScpO1wiIG9uY2xpY2s9XCJEUF9qUXVlcnlfIit5KyIu
ZGF0ZXBpY2tlci5fY2xpY2tNb250aFllYXIoJyMiK2EuaWQrIicpO1wiPiI7Yjw9ZztiKyspYS55
ZWFyc2h0bWwrPSc8b3B0aW9uIHZhbHVlPSInK2IrJyInKyhiPT1jPycgc2VsZWN0ZWQ9InNlbGVj
dGVkIic6IiIpKyI+IitiKyI8L29wdGlvbj4iO2EueWVhcnNodG1sKz0iPC9zZWxlY3Q+IjtpZihk
LmJyb3dzZXIubW96aWxsYSlrKz0nPHNlbGVjdCBjbGFzcz0idWktZGF0ZXBpY2tlci15ZWFyIj48
b3B0aW9uIHZhbHVlPSInK2MrJyIgc2VsZWN0ZWQ9InNlbGVjdGVkIj4nK2MrIjwvb3B0aW9uPjwv
c2VsZWN0PiI7ZWxzZXtrKz1hLnllYXJzaHRtbDthLnllYXJzaHRtbD1udWxsfX1rKz10aGlzLl9n
ZXQoYSwieWVhclN1ZmZpeCIpO2lmKHUpays9KGh8fCEoaiYmbCk/IiYjeGEwOyI6IiIpK287ays9
IjwvZGl2PiI7cmV0dXJuIGt9LF9hZGp1c3RJbnN0RGF0ZTpmdW5jdGlvbihhLGIsYyl7dmFyIGU9
Ci1hLmRyYXdZZWFyKyhjPT0iWSI/YjowKSxmPWEuZHJhd01vbnRoKyhjPT0iTSI/YjowKTtiPU1h
dGgubWluKGEuc2VsZWN0ZWREYXksdGhpcy5fZ2V0RGF5c0luTW9udGgoZSxmKSkrKGM9PSJEIj9i
OjApO2U9dGhpcy5fcmVzdHJpY3RNaW5NYXgoYSx0aGlzLl9kYXlsaWdodFNhdmluZ0FkanVzdChu
ZXcgRGF0ZShlLGYsYikpKTthLnNlbGVjdGVkRGF5PWUuZ2V0RGF0ZSgpO2EuZHJhd01vbnRoPWEu
c2VsZWN0ZWRNb250aD1lLmdldE1vbnRoKCk7YS5kcmF3WWVhcj1hLnNlbGVjdGVkWWVhcj1lLmdl
dEZ1bGxZZWFyKCk7aWYoYz09Ik0ifHxjPT0iWSIpdGhpcy5fbm90aWZ5Q2hhbmdlKGEpfSxfcmVz
dHJpY3RNaW5NYXg6ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLl9nZXRNaW5NYXhEYXRlKGEsIm1p
biIpO2E9dGhpcy5fZ2V0TWluTWF4RGF0ZShhLCJtYXgiKTtiPWMmJmI8Yz9jOmI7cmV0dXJuIGI9
YSYmYj5hP2E6Yn0sX25vdGlmeUNoYW5nZTpmdW5jdGlvbihhKXt2YXIgYj10aGlzLl9nZXQoYSwK
LSJvbkNoYW5nZU1vbnRoWWVhciIpO2lmKGIpYi5hcHBseShhLmlucHV0P2EuaW5wdXRbMF06bnVs
bCxbYS5zZWxlY3RlZFllYXIsYS5zZWxlY3RlZE1vbnRoKzEsYV0pfSxfZ2V0TnVtYmVyT2ZNb250
aHM6ZnVuY3Rpb24oYSl7YT10aGlzLl9nZXQoYSwibnVtYmVyT2ZNb250aHMiKTtyZXR1cm4gYT09
bnVsbD9bMSwxXTp0eXBlb2YgYT09Im51bWJlciI/WzEsYV06YX0sX2dldE1pbk1heERhdGU6ZnVu
Y3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5fZGV0ZXJtaW5lRGF0ZShhLHRoaXMuX2dldChhLGIrIkRh
dGUiKSxudWxsKX0sX2dldERheXNJbk1vbnRoOmZ1bmN0aW9uKGEsYil7cmV0dXJuIDMyLXRoaXMu
X2RheWxpZ2h0U2F2aW5nQWRqdXN0KG5ldyBEYXRlKGEsYiwzMikpLmdldERhdGUoKX0sX2dldEZp
cnN0RGF5T2ZNb250aDpmdW5jdGlvbihhLGIpe3JldHVybihuZXcgRGF0ZShhLGIsMSkpLmdldERh
eSgpfSxfY2FuQWRqdXN0TW9udGg6ZnVuY3Rpb24oYSxiLGMsZSl7dmFyIGY9dGhpcy5fZ2V0TnVt
YmVyT2ZNb250aHMoYSk7Ci1jPXRoaXMuX2RheWxpZ2h0U2F2aW5nQWRqdXN0KG5ldyBEYXRlKGMs
ZSsoYjwwP2I6ZlswXSpmWzFdKSwxKSk7YjwwJiZjLnNldERhdGUodGhpcy5fZ2V0RGF5c0luTW9u
dGgoYy5nZXRGdWxsWWVhcigpLGMuZ2V0TW9udGgoKSkpO3JldHVybiB0aGlzLl9pc0luUmFuZ2Uo
YSxjKX0sX2lzSW5SYW5nZTpmdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMuX2dldE1pbk1heERhdGUo
YSwibWluIik7YT10aGlzLl9nZXRNaW5NYXhEYXRlKGEsIm1heCIpO3JldHVybighY3x8Yi5nZXRU
aW1lKCk+PWMuZ2V0VGltZSgpKSYmKCFhfHxiLmdldFRpbWUoKTw9YS5nZXRUaW1lKCkpfSxfZ2V0
Rm9ybWF0Q29uZmlnOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuX2dldChhLCJzaG9ydFllYXJDdXRv
ZmYiKTtiPXR5cGVvZiBiIT0ic3RyaW5nIj9iOihuZXcgRGF0ZSkuZ2V0RnVsbFllYXIoKSUxMDAr
cGFyc2VJbnQoYiwxMCk7cmV0dXJue3Nob3J0WWVhckN1dG9mZjpiLGRheU5hbWVzU2hvcnQ6dGhp
cy5fZ2V0KGEsCi0iZGF5TmFtZXNTaG9ydCIpLGRheU5hbWVzOnRoaXMuX2dldChhLCJkYXlOYW1l
cyIpLG1vbnRoTmFtZXNTaG9ydDp0aGlzLl9nZXQoYSwibW9udGhOYW1lc1Nob3J0IiksbW9udGhO
YW1lczp0aGlzLl9nZXQoYSwibW9udGhOYW1lcyIpfX0sX2Zvcm1hdERhdGU6ZnVuY3Rpb24oYSxi
LGMsZSl7aWYoIWIpe2EuY3VycmVudERheT1hLnNlbGVjdGVkRGF5O2EuY3VycmVudE1vbnRoPWEu
c2VsZWN0ZWRNb250aDthLmN1cnJlbnRZZWFyPWEuc2VsZWN0ZWRZZWFyfWI9Yj90eXBlb2YgYj09
Im9iamVjdCI/Yjp0aGlzLl9kYXlsaWdodFNhdmluZ0FkanVzdChuZXcgRGF0ZShlLGMsYikpOnRo
aXMuX2RheWxpZ2h0U2F2aW5nQWRqdXN0KG5ldyBEYXRlKGEuY3VycmVudFllYXIsYS5jdXJyZW50
TW9udGgsYS5jdXJyZW50RGF5KSk7cmV0dXJuIHRoaXMuZm9ybWF0RGF0ZSh0aGlzLl9nZXQoYSwi
ZGF0ZUZvcm1hdCIpLGIsdGhpcy5fZ2V0Rm9ybWF0Q29uZmlnKGEpKX19KTtkLmZuLmRhdGVwaWNr
ZXI9Ci1mdW5jdGlvbihhKXtpZighdGhpcy5sZW5ndGgpcmV0dXJuIHRoaXM7aWYoIWQuZGF0ZXBp
Y2tlci5pbml0aWFsaXplZCl7ZChkb2N1bWVudCkubW91c2Vkb3duKGQuZGF0ZXBpY2tlci5fY2hl
Y2tFeHRlcm5hbENsaWNrKS5maW5kKCJib2R5IikuYXBwZW5kKGQuZGF0ZXBpY2tlci5kcERpdik7
ZC5kYXRlcGlja2VyLmluaXRpYWxpemVkPXRydWV9dmFyIGI9QXJyYXkucHJvdG90eXBlLnNsaWNl
LmNhbGwoYXJndW1lbnRzLDEpO2lmKHR5cGVvZiBhPT0ic3RyaW5nIiYmKGE9PSJpc0Rpc2FibGVk
Inx8YT09ImdldERhdGUifHxhPT0id2lkZ2V0IikpcmV0dXJuIGQuZGF0ZXBpY2tlclsiXyIrYSsi
RGF0ZXBpY2tlciJdLmFwcGx5KGQuZGF0ZXBpY2tlcixbdGhpc1swXV0uY29uY2F0KGIpKTtpZihh
PT0ib3B0aW9uIiYmYXJndW1lbnRzLmxlbmd0aD09MiYmdHlwZW9mIGFyZ3VtZW50c1sxXT09InN0
cmluZyIpcmV0dXJuIGQuZGF0ZXBpY2tlclsiXyIrYSsiRGF0ZXBpY2tlciJdLmFwcGx5KGQuZGF0
ZXBpY2tlciwKLVt0aGlzWzBdXS5jb25jYXQoYikpO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24o
KXt0eXBlb2YgYT09InN0cmluZyI/ZC5kYXRlcGlja2VyWyJfIithKyJEYXRlcGlja2VyIl0uYXBw
bHkoZC5kYXRlcGlja2VyLFt0aGlzXS5jb25jYXQoYikpOmQuZGF0ZXBpY2tlci5fYXR0YWNoRGF0
ZXBpY2tlcih0aGlzLGEpfSl9O2QuZGF0ZXBpY2tlcj1uZXcgSztkLmRhdGVwaWNrZXIuaW5pdGlh
bGl6ZWQ9ZmFsc2U7ZC5kYXRlcGlja2VyLnV1aWQ9KG5ldyBEYXRlKS5nZXRUaW1lKCk7ZC5kYXRl
cGlja2VyLnZlcnNpb249IjEuOC4xMCI7d2luZG93WyJEUF9qUXVlcnlfIit5XT1kfSkoalF1ZXJ5
KTsKLTsvKgotICogalF1ZXJ5IFVJIFByb2dyZXNzYmFyIDEuOC4xMAotICoKLSAqIENvcHlyaWdo
dCAyMDExLCBBVVRIT1JTLnR4dCAoaHR0cDovL2pxdWVyeXVpLmNvbS9hYm91dCkKLSAqIER1YWwg
bGljZW5zZWQgdW5kZXIgdGhlIE1JVCBvciBHUEwgVmVyc2lvbiAyIGxpY2Vuc2VzLgotICogaHR0
cDovL2pxdWVyeS5vcmcvbGljZW5zZQotICoKLSAqIGh0dHA6Ly9kb2NzLmpxdWVyeS5jb20vVUkv
UHJvZ3Jlc3NiYXIKLSAqCi0gKiBEZXBlbmRzOgotICogICBqcXVlcnkudWkuY29yZS5qcwotICog
ICBqcXVlcnkudWkud2lkZ2V0LmpzCi0gKi8KLShmdW5jdGlvbihiLGQpe2Iud2lkZ2V0KCJ1aS5w
cm9ncmVzc2JhciIse29wdGlvbnM6e3ZhbHVlOjAsbWF4OjEwMH0sbWluOjAsX2NyZWF0ZTpmdW5j
dGlvbigpe3RoaXMuZWxlbWVudC5hZGRDbGFzcygidWktcHJvZ3Jlc3NiYXIgdWktd2lkZ2V0IHVp
LXdpZGdldC1jb250ZW50IHVpLWNvcm5lci1hbGwiKS5hdHRyKHtyb2xlOiJwcm9ncmVzc2JhciIs
ImFyaWEtdmFsdWVtaW4iOnRoaXMubWluLCJhcmlhLXZhbHVlbWF4Ijp0aGlzLm9wdGlvbnMubWF4
LCJhcmlhLXZhbHVlbm93Ijp0aGlzLl92YWx1ZSgpfSk7dGhpcy52YWx1ZURpdj1iKCI8ZGl2IGNs
YXNzPSd1aS1wcm9ncmVzc2Jhci12YWx1ZSB1aS13aWRnZXQtaGVhZGVyIHVpLWNvcm5lci1sZWZ0
Jz48L2Rpdj4iKS5hcHBlbmRUbyh0aGlzLmVsZW1lbnQpO3RoaXMub2xkVmFsdWU9dGhpcy5fdmFs
dWUoKTt0aGlzLl9yZWZyZXNoVmFsdWUoKX0sZGVzdHJveTpmdW5jdGlvbigpe3RoaXMuZWxlbWVu
dC5yZW1vdmVDbGFzcygidWktcHJvZ3Jlc3NiYXIgdWktd2lkZ2V0IHVpLXdpZGdldC1jb250ZW50
IHVpLWNvcm5lci1hbGwiKS5yZW1vdmVBdHRyKCJyb2xlIikucmVtb3ZlQXR0cigiYXJpYS12YWx1
ZW1pbiIpLnJlbW92ZUF0dHIoImFyaWEtdmFsdWVtYXgiKS5yZW1vdmVBdHRyKCJhcmlhLXZhbHVl
bm93Iik7Ci10aGlzLnZhbHVlRGl2LnJlbW92ZSgpO2IuV2lkZ2V0LnByb3RvdHlwZS5kZXN0cm95
LmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sdmFsdWU6ZnVuY3Rpb24oYSl7aWYoYT09PWQpcmV0dXJu
IHRoaXMuX3ZhbHVlKCk7dGhpcy5fc2V0T3B0aW9uKCJ2YWx1ZSIsYSk7cmV0dXJuIHRoaXN9LF9z
ZXRPcHRpb246ZnVuY3Rpb24oYSxjKXtpZihhPT09InZhbHVlIil7dGhpcy5vcHRpb25zLnZhbHVl
PWM7dGhpcy5fcmVmcmVzaFZhbHVlKCk7dGhpcy5fdmFsdWUoKT09PXRoaXMub3B0aW9ucy5tYXgm
JnRoaXMuX3RyaWdnZXIoImNvbXBsZXRlIil9Yi5XaWRnZXQucHJvdG90eXBlLl9zZXRPcHRpb24u
YXBwbHkodGhpcyxhcmd1bWVudHMpfSxfdmFsdWU6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLm9wdGlv
bnMudmFsdWU7aWYodHlwZW9mIGEhPT0ibnVtYmVyIilhPTA7cmV0dXJuIE1hdGgubWluKHRoaXMu
b3B0aW9ucy5tYXgsTWF0aC5tYXgodGhpcy5taW4sYSkpfSxfcGVyY2VudGFnZTpmdW5jdGlvbigp
e3JldHVybiAxMDAqCi10aGlzLl92YWx1ZSgpL3RoaXMub3B0aW9ucy5tYXh9LF9yZWZyZXNoVmFs
dWU6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLnZhbHVlKCksYz10aGlzLl9wZXJjZW50YWdlKCk7aWYo
dGhpcy5vbGRWYWx1ZSE9PWEpe3RoaXMub2xkVmFsdWU9YTt0aGlzLl90cmlnZ2VyKCJjaGFuZ2Ui
KX10aGlzLnZhbHVlRGl2LnRvZ2dsZUNsYXNzKCJ1aS1jb3JuZXItcmlnaHQiLGE9PT10aGlzLm9w
dGlvbnMubWF4KS53aWR0aChjLnRvRml4ZWQoMCkrIiUiKTt0aGlzLmVsZW1lbnQuYXR0cigiYXJp
YS12YWx1ZW5vdyIsYSl9fSk7Yi5leHRlbmQoYi51aS5wcm9ncmVzc2Jhcix7dmVyc2lvbjoiMS44
LjEwIn0pfSkoalF1ZXJ5KTsKLTsvKgotICogalF1ZXJ5IFVJIEVmZmVjdHMgMS44LjEwCi0gKgot
ICogQ29weXJpZ2h0IDIwMTEsIEFVVEhPUlMudHh0IChodHRwOi8vanF1ZXJ5dWkuY29tL2Fib3V0
KQotICogRHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIG9yIEdQTCBWZXJzaW9uIDIgbGljZW5z
ZXMuCi0gKiBodHRwOi8vanF1ZXJ5Lm9yZy9saWNlbnNlCi0gKgotICogaHR0cDovL2RvY3MuanF1
ZXJ5LmNvbS9VSS9FZmZlY3RzLwotICovCi1qUXVlcnkuZWZmZWN0c3x8ZnVuY3Rpb24oZixqKXtm
dW5jdGlvbiBuKGMpe3ZhciBhO2lmKGMmJmMuY29uc3RydWN0b3I9PUFycmF5JiZjLmxlbmd0aD09
MylyZXR1cm4gYztpZihhPS9yZ2JcKFxzKihbMC05XXsxLDN9KVxzKixccyooWzAtOV17MSwzfSlc
cyosXHMqKFswLTldezEsM30pXHMqXCkvLmV4ZWMoYykpcmV0dXJuW3BhcnNlSW50KGFbMV0sMTAp
LHBhcnNlSW50KGFbMl0sMTApLHBhcnNlSW50KGFbM10sMTApXTtpZihhPS9yZ2JcKFxzKihbMC05
XSsoPzpcLlswLTldKyk/KVwlXHMqLFxzKihbMC05XSsoPzpcLlswLTldKyk/KVwlXHMqLFxzKihb
MC05XSsoPzpcLlswLTldKyk/KVwlXHMqXCkvLmV4ZWMoYykpcmV0dXJuW3BhcnNlRmxvYXQoYVsx
XSkqMi41NSxwYXJzZUZsb2F0KGFbMl0pKjIuNTUscGFyc2VGbG9hdChhWzNdKSoyLjU1XTtpZihh
PS8jKFthLWZBLUYwLTldezJ9KShbYS1mQS1GMC05XXsyfSkoW2EtZkEtRjAtOV17Mn0pLy5leGVj
KGMpKXJldHVybltwYXJzZUludChhWzFdLAotMTYpLHBhcnNlSW50KGFbMl0sMTYpLHBhcnNlSW50
KGFbM10sMTYpXTtpZihhPS8jKFthLWZBLUYwLTldKShbYS1mQS1GMC05XSkoW2EtZkEtRjAtOV0p
Ly5leGVjKGMpKXJldHVybltwYXJzZUludChhWzFdK2FbMV0sMTYpLHBhcnNlSW50KGFbMl0rYVsy
XSwxNikscGFyc2VJbnQoYVszXSthWzNdLDE2KV07aWYoL3JnYmFcKDAsIDAsIDAsIDBcKS8uZXhl
YyhjKSlyZXR1cm4gby50cmFuc3BhcmVudDtyZXR1cm4gb1tmLnRyaW0oYykudG9Mb3dlckNhc2Uo
KV19ZnVuY3Rpb24gcyhjLGEpe3ZhciBiO2Rve2I9Zi5jdXJDU1MoYyxhKTtpZihiIT0iIiYmYiE9
InRyYW5zcGFyZW50Inx8Zi5ub2RlTmFtZShjLCJib2R5IikpYnJlYWs7YT0iYmFja2dyb3VuZENv
bG9yIn13aGlsZShjPWMucGFyZW50Tm9kZSk7cmV0dXJuIG4oYil9ZnVuY3Rpb24gcCgpe3ZhciBj
PWRvY3VtZW50LmRlZmF1bHRWaWV3P2RvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5
bGUodGhpcyxudWxsKTp0aGlzLmN1cnJlbnRTdHlsZSwKLWE9e30sYixkO2lmKGMmJmMubGVuZ3Ro
JiZjWzBdJiZjW2NbMF1dKWZvcih2YXIgZT1jLmxlbmd0aDtlLS07KXtiPWNbZV07aWYodHlwZW9m
IGNbYl09PSJzdHJpbmciKXtkPWIucmVwbGFjZSgvXC0oXHcpL2csZnVuY3Rpb24oZyxoKXtyZXR1
cm4gaC50b1VwcGVyQ2FzZSgpfSk7YVtkXT1jW2JdfX1lbHNlIGZvcihiIGluIGMpaWYodHlwZW9m
IGNbYl09PT0ic3RyaW5nIilhW2JdPWNbYl07cmV0dXJuIGF9ZnVuY3Rpb24gcShjKXt2YXIgYSxi
O2ZvcihhIGluIGMpe2I9Y1thXTtpZihiPT1udWxsfHxmLmlzRnVuY3Rpb24oYil8fGEgaW4gdHx8
L3Njcm9sbGJhci8udGVzdChhKXx8IS9jb2xvci9pLnRlc3QoYSkmJmlzTmFOKHBhcnNlRmxvYXQo
YikpKWRlbGV0ZSBjW2FdfXJldHVybiBjfWZ1bmN0aW9uIHUoYyxhKXt2YXIgYj17XzowfSxkO2Zv
cihkIGluIGEpaWYoY1tkXSE9YVtkXSliW2RdPWFbZF07cmV0dXJuIGJ9ZnVuY3Rpb24gayhjLGEs
YixkKXtpZih0eXBlb2YgYz09Im9iamVjdCIpe2Q9Ci1hO2I9bnVsbDthPWM7Yz1hLmVmZmVjdH1p
ZihmLmlzRnVuY3Rpb24oYSkpe2Q9YTtiPW51bGw7YT17fX1pZih0eXBlb2YgYT09Im51bWJlciJ8
fGYuZnguc3BlZWRzW2FdKXtkPWI7Yj1hO2E9e319aWYoZi5pc0Z1bmN0aW9uKGIpKXtkPWI7Yj1u
dWxsfWE9YXx8e307Yj1ifHxhLmR1cmF0aW9uO2I9Zi5meC5vZmY/MDp0eXBlb2YgYj09Im51bWJl
ciI/YjpiIGluIGYuZnguc3BlZWRzP2YuZnguc3BlZWRzW2JdOmYuZnguc3BlZWRzLl9kZWZhdWx0
O2Q9ZHx8YS5jb21wbGV0ZTtyZXR1cm5bYyxhLGIsZF19ZnVuY3Rpb24gbShjKXtpZighY3x8dHlw
ZW9mIGM9PT0ibnVtYmVyInx8Zi5meC5zcGVlZHNbY10pcmV0dXJuIHRydWU7aWYodHlwZW9mIGM9
PT0ic3RyaW5nIiYmIWYuZWZmZWN0c1tjXSlyZXR1cm4gdHJ1ZTtyZXR1cm4gZmFsc2V9Zi5lZmZl
Y3RzPXt9O2YuZWFjaChbImJhY2tncm91bmRDb2xvciIsImJvcmRlckJvdHRvbUNvbG9yIiwiYm9y
ZGVyTGVmdENvbG9yIiwiYm9yZGVyUmlnaHRDb2xvciIsCi0iYm9yZGVyVG9wQ29sb3IiLCJib3Jk
ZXJDb2xvciIsImNvbG9yIiwib3V0bGluZUNvbG9yIl0sZnVuY3Rpb24oYyxhKXtmLmZ4LnN0ZXBb
YV09ZnVuY3Rpb24oYil7aWYoIWIuY29sb3JJbml0KXtiLnN0YXJ0PXMoYi5lbGVtLGEpO2IuZW5k
PW4oYi5lbmQpO2IuY29sb3JJbml0PXRydWV9Yi5lbGVtLnN0eWxlW2FdPSJyZ2IoIitNYXRoLm1h
eChNYXRoLm1pbihwYXJzZUludChiLnBvcyooYi5lbmRbMF0tYi5zdGFydFswXSkrYi5zdGFydFsw
XSwxMCksMjU1KSwwKSsiLCIrTWF0aC5tYXgoTWF0aC5taW4ocGFyc2VJbnQoYi5wb3MqKGIuZW5k
WzFdLWIuc3RhcnRbMV0pK2Iuc3RhcnRbMV0sMTApLDI1NSksMCkrIiwiK01hdGgubWF4KE1hdGgu
bWluKHBhcnNlSW50KGIucG9zKihiLmVuZFsyXS1iLnN0YXJ0WzJdKStiLnN0YXJ0WzJdLDEwKSwy
NTUpLDApKyIpIn19KTt2YXIgbz17YXF1YTpbMCwyNTUsMjU1XSxhenVyZTpbMjQwLDI1NSwyNTVd
LGJlaWdlOlsyNDUsMjQ1LDIyMF0sYmxhY2s6WzAsCi0wLDBdLGJsdWU6WzAsMCwyNTVdLGJyb3du
OlsxNjUsNDIsNDJdLGN5YW46WzAsMjU1LDI1NV0sZGFya2JsdWU6WzAsMCwxMzldLGRhcmtjeWFu
OlswLDEzOSwxMzldLGRhcmtncmV5OlsxNjksMTY5LDE2OV0sZGFya2dyZWVuOlswLDEwMCwwXSxk
YXJra2hha2k6WzE4OSwxODMsMTA3XSxkYXJrbWFnZW50YTpbMTM5LDAsMTM5XSxkYXJrb2xpdmVn
cmVlbjpbODUsMTA3LDQ3XSxkYXJrb3JhbmdlOlsyNTUsMTQwLDBdLGRhcmtvcmNoaWQ6WzE1Myw1
MCwyMDRdLGRhcmtyZWQ6WzEzOSwwLDBdLGRhcmtzYWxtb246WzIzMywxNTAsMTIyXSxkYXJrdmlv
bGV0OlsxNDgsMCwyMTFdLGZ1Y2hzaWE6WzI1NSwwLDI1NV0sZ29sZDpbMjU1LDIxNSwwXSxncmVl
bjpbMCwxMjgsMF0saW5kaWdvOls3NSwwLDEzMF0sa2hha2k6WzI0MCwyMzAsMTQwXSxsaWdodGJs
dWU6WzE3MywyMTYsMjMwXSxsaWdodGN5YW46WzIyNCwyNTUsMjU1XSxsaWdodGdyZWVuOlsxNDQs
MjM4LDE0NF0sbGlnaHRncmV5OlsyMTEsCi0yMTEsMjExXSxsaWdodHBpbms6WzI1NSwxODIsMTkz
XSxsaWdodHllbGxvdzpbMjU1LDI1NSwyMjRdLGxpbWU6WzAsMjU1LDBdLG1hZ2VudGE6WzI1NSww
LDI1NV0sbWFyb29uOlsxMjgsMCwwXSxuYXZ5OlswLDAsMTI4XSxvbGl2ZTpbMTI4LDEyOCwwXSxv
cmFuZ2U6WzI1NSwxNjUsMF0scGluazpbMjU1LDE5MiwyMDNdLHB1cnBsZTpbMTI4LDAsMTI4XSx2
aW9sZXQ6WzEyOCwwLDEyOF0scmVkOlsyNTUsMCwwXSxzaWx2ZXI6WzE5MiwxOTIsMTkyXSx3aGl0
ZTpbMjU1LDI1NSwyNTVdLHllbGxvdzpbMjU1LDI1NSwwXSx0cmFuc3BhcmVudDpbMjU1LDI1NSwy
NTVdfSxyPVsiYWRkIiwicmVtb3ZlIiwidG9nZ2xlIl0sdD17Ym9yZGVyOjEsYm9yZGVyQm90dG9t
OjEsYm9yZGVyQ29sb3I6MSxib3JkZXJMZWZ0OjEsYm9yZGVyUmlnaHQ6MSxib3JkZXJUb3A6MSxi
b3JkZXJXaWR0aDoxLG1hcmdpbjoxLHBhZGRpbmc6MX07Zi5lZmZlY3RzLmFuaW1hdGVDbGFzcz1m
dW5jdGlvbihjLGEsYiwKLWQpe2lmKGYuaXNGdW5jdGlvbihiKSl7ZD1iO2I9bnVsbH1yZXR1cm4g
dGhpcy5xdWV1ZSgiZngiLGZ1bmN0aW9uKCl7dmFyIGU9Zih0aGlzKSxnPWUuYXR0cigic3R5bGUi
KXx8IiAiLGg9cShwLmNhbGwodGhpcykpLGwsdj1lLmF0dHIoImNsYXNzTmFtZSIpO2YuZWFjaChy
LGZ1bmN0aW9uKHcsaSl7Y1tpXSYmZVtpKyJDbGFzcyJdKGNbaV0pfSk7bD1xKHAuY2FsbCh0aGlz
KSk7ZS5hdHRyKCJjbGFzc05hbWUiLHYpO2UuYW5pbWF0ZSh1KGgsbCksYSxiLGZ1bmN0aW9uKCl7
Zi5lYWNoKHIsZnVuY3Rpb24odyxpKXtjW2ldJiZlW2krIkNsYXNzIl0oY1tpXSl9KTtpZih0eXBl
b2YgZS5hdHRyKCJzdHlsZSIpPT0ib2JqZWN0Iil7ZS5hdHRyKCJzdHlsZSIpLmNzc1RleHQ9IiI7
ZS5hdHRyKCJzdHlsZSIpLmNzc1RleHQ9Z31lbHNlIGUuYXR0cigic3R5bGUiLGcpO2QmJmQuYXBw
bHkodGhpcyxhcmd1bWVudHMpfSk7aD1mLnF1ZXVlKHRoaXMpO2w9aC5zcGxpY2UoaC5sZW5ndGgt
MSwxKVswXTsKLWguc3BsaWNlKDEsMCxsKTtmLmRlcXVldWUodGhpcyl9KX07Zi5mbi5leHRlbmQo
e19hZGRDbGFzczpmLmZuLmFkZENsYXNzLGFkZENsYXNzOmZ1bmN0aW9uKGMsYSxiLGQpe3JldHVy
biBhP2YuZWZmZWN0cy5hbmltYXRlQ2xhc3MuYXBwbHkodGhpcyxbe2FkZDpjfSxhLGIsZF0pOnRo
aXMuX2FkZENsYXNzKGMpfSxfcmVtb3ZlQ2xhc3M6Zi5mbi5yZW1vdmVDbGFzcyxyZW1vdmVDbGFz
czpmdW5jdGlvbihjLGEsYixkKXtyZXR1cm4gYT9mLmVmZmVjdHMuYW5pbWF0ZUNsYXNzLmFwcGx5
KHRoaXMsW3tyZW1vdmU6Y30sYSxiLGRdKTp0aGlzLl9yZW1vdmVDbGFzcyhjKX0sX3RvZ2dsZUNs
YXNzOmYuZm4udG9nZ2xlQ2xhc3MsdG9nZ2xlQ2xhc3M6ZnVuY3Rpb24oYyxhLGIsZCxlKXtyZXR1
cm4gdHlwZW9mIGE9PSJib29sZWFuInx8YT09PWo/Yj9mLmVmZmVjdHMuYW5pbWF0ZUNsYXNzLmFw
cGx5KHRoaXMsW2E/e2FkZDpjfTp7cmVtb3ZlOmN9LGIsZCxlXSk6dGhpcy5fdG9nZ2xlQ2xhc3Mo
YywKLWEpOmYuZWZmZWN0cy5hbmltYXRlQ2xhc3MuYXBwbHkodGhpcyxbe3RvZ2dsZTpjfSxhLGIs
ZF0pfSxzd2l0Y2hDbGFzczpmdW5jdGlvbihjLGEsYixkLGUpe3JldHVybiBmLmVmZmVjdHMuYW5p
bWF0ZUNsYXNzLmFwcGx5KHRoaXMsW3thZGQ6YSxyZW1vdmU6Y30sYixkLGVdKX19KTtmLmV4dGVu
ZChmLmVmZmVjdHMse3ZlcnNpb246IjEuOC4xMCIsc2F2ZTpmdW5jdGlvbihjLGEpe2Zvcih2YXIg
Yj0wO2I8YS5sZW5ndGg7YisrKWFbYl0hPT1udWxsJiZjLmRhdGEoImVjLnN0b3JhZ2UuIithW2Jd
LGNbMF0uc3R5bGVbYVtiXV0pfSxyZXN0b3JlOmZ1bmN0aW9uKGMsYSl7Zm9yKHZhciBiPTA7Yjxh
Lmxlbmd0aDtiKyspYVtiXSE9PW51bGwmJmMuY3NzKGFbYl0sYy5kYXRhKCJlYy5zdG9yYWdlLiIr
YVtiXSkpfSxzZXRNb2RlOmZ1bmN0aW9uKGMsYSl7aWYoYT09InRvZ2dsZSIpYT1jLmlzKCI6aGlk
ZGVuIik/InNob3ciOiJoaWRlIjtyZXR1cm4gYX0sZ2V0QmFzZWxpbmU6ZnVuY3Rpb24oYywKLWEp
e3ZhciBiO3N3aXRjaChjWzBdKXtjYXNlICJ0b3AiOmI9MDticmVhaztjYXNlICJtaWRkbGUiOmI9
MC41O2JyZWFrO2Nhc2UgImJvdHRvbSI6Yj0xO2JyZWFrO2RlZmF1bHQ6Yj1jWzBdL2EuaGVpZ2h0
fXN3aXRjaChjWzFdKXtjYXNlICJsZWZ0IjpjPTA7YnJlYWs7Y2FzZSAiY2VudGVyIjpjPTAuNTti
cmVhaztjYXNlICJyaWdodCI6Yz0xO2JyZWFrO2RlZmF1bHQ6Yz1jWzFdL2Eud2lkdGh9cmV0dXJu
e3g6Yyx5OmJ9fSxjcmVhdGVXcmFwcGVyOmZ1bmN0aW9uKGMpe2lmKGMucGFyZW50KCkuaXMoIi51
aS1lZmZlY3RzLXdyYXBwZXIiKSlyZXR1cm4gYy5wYXJlbnQoKTt2YXIgYT17d2lkdGg6Yy5vdXRl
cldpZHRoKHRydWUpLGhlaWdodDpjLm91dGVySGVpZ2h0KHRydWUpLCJmbG9hdCI6Yy5jc3MoImZs
b2F0Iil9LGI9ZigiPGRpdj48L2Rpdj4iKS5hZGRDbGFzcygidWktZWZmZWN0cy13cmFwcGVyIiku
Y3NzKHtmb250U2l6ZToiMTAwJSIsYmFja2dyb3VuZDoidHJhbnNwYXJlbnQiLAotYm9yZGVyOiJu
b25lIixtYXJnaW46MCxwYWRkaW5nOjB9KTtjLndyYXAoYik7Yj1jLnBhcmVudCgpO2lmKGMuY3Nz
KCJwb3NpdGlvbiIpPT0ic3RhdGljIil7Yi5jc3Moe3Bvc2l0aW9uOiJyZWxhdGl2ZSJ9KTtjLmNz
cyh7cG9zaXRpb246InJlbGF0aXZlIn0pfWVsc2V7Zi5leHRlbmQoYSx7cG9zaXRpb246Yy5jc3Mo
InBvc2l0aW9uIiksekluZGV4OmMuY3NzKCJ6LWluZGV4Iil9KTtmLmVhY2goWyJ0b3AiLCJsZWZ0
IiwiYm90dG9tIiwicmlnaHQiXSxmdW5jdGlvbihkLGUpe2FbZV09Yy5jc3MoZSk7aWYoaXNOYU4o
cGFyc2VJbnQoYVtlXSwxMCkpKWFbZV09ImF1dG8ifSk7Yy5jc3Moe3Bvc2l0aW9uOiJyZWxhdGl2
ZSIsdG9wOjAsbGVmdDowLHJpZ2h0OiJhdXRvIixib3R0b206ImF1dG8ifSl9cmV0dXJuIGIuY3Nz
KGEpLnNob3coKX0scmVtb3ZlV3JhcHBlcjpmdW5jdGlvbihjKXtpZihjLnBhcmVudCgpLmlzKCIu
dWktZWZmZWN0cy13cmFwcGVyIikpcmV0dXJuIGMucGFyZW50KCkucmVwbGFjZVdpdGgoYyk7Ci1y
ZXR1cm4gY30sc2V0VHJhbnNpdGlvbjpmdW5jdGlvbihjLGEsYixkKXtkPWR8fHt9O2YuZWFjaChh
LGZ1bmN0aW9uKGUsZyl7dW5pdD1jLmNzc1VuaXQoZyk7aWYodW5pdFswXT4wKWRbZ109dW5pdFsw
XSpiK3VuaXRbMV19KTtyZXR1cm4gZH19KTtmLmZuLmV4dGVuZCh7ZWZmZWN0OmZ1bmN0aW9uKGMp
e3ZhciBhPWsuYXBwbHkodGhpcyxhcmd1bWVudHMpLGI9e29wdGlvbnM6YVsxXSxkdXJhdGlvbjph
WzJdLGNhbGxiYWNrOmFbM119O2E9Yi5vcHRpb25zLm1vZGU7dmFyIGQ9Zi5lZmZlY3RzW2NdO2lm
KGYuZngub2ZmfHwhZClyZXR1cm4gYT90aGlzW2FdKGIuZHVyYXRpb24sYi5jYWxsYmFjayk6dGhp
cy5lYWNoKGZ1bmN0aW9uKCl7Yi5jYWxsYmFjayYmYi5jYWxsYmFjay5jYWxsKHRoaXMpfSk7cmV0
dXJuIGQuY2FsbCh0aGlzLGIpfSxfc2hvdzpmLmZuLnNob3csc2hvdzpmdW5jdGlvbihjKXtpZiht
KGMpKXJldHVybiB0aGlzLl9zaG93LmFwcGx5KHRoaXMsYXJndW1lbnRzKTsKLWVsc2V7dmFyIGE9
ay5hcHBseSh0aGlzLGFyZ3VtZW50cyk7YVsxXS5tb2RlPSJzaG93IjtyZXR1cm4gdGhpcy5lZmZl
Y3QuYXBwbHkodGhpcyxhKX19LF9oaWRlOmYuZm4uaGlkZSxoaWRlOmZ1bmN0aW9uKGMpe2lmKG0o
YykpcmV0dXJuIHRoaXMuX2hpZGUuYXBwbHkodGhpcyxhcmd1bWVudHMpO2Vsc2V7dmFyIGE9ay5h
cHBseSh0aGlzLGFyZ3VtZW50cyk7YVsxXS5tb2RlPSJoaWRlIjtyZXR1cm4gdGhpcy5lZmZlY3Qu
YXBwbHkodGhpcyxhKX19LF9fdG9nZ2xlOmYuZm4udG9nZ2xlLHRvZ2dsZTpmdW5jdGlvbihjKXtp
ZihtKGMpfHx0eXBlb2YgYz09PSJib29sZWFuInx8Zi5pc0Z1bmN0aW9uKGMpKXJldHVybiB0aGlz
Ll9fdG9nZ2xlLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtlbHNle3ZhciBhPWsuYXBwbHkodGhpcyxh
cmd1bWVudHMpO2FbMV0ubW9kZT0idG9nZ2xlIjtyZXR1cm4gdGhpcy5lZmZlY3QuYXBwbHkodGhp
cyxhKX19LGNzc1VuaXQ6ZnVuY3Rpb24oYyl7dmFyIGE9dGhpcy5jc3MoYyksCi1iPVtdO2YuZWFj
aChbImVtIiwicHgiLCIlIiwicHQiXSxmdW5jdGlvbihkLGUpe2lmKGEuaW5kZXhPZihlKT4wKWI9
W3BhcnNlRmxvYXQoYSksZV19KTtyZXR1cm4gYn19KTtmLmVhc2luZy5qc3dpbmc9Zi5lYXNpbmcu
c3dpbmc7Zi5leHRlbmQoZi5lYXNpbmcse2RlZjoiZWFzZU91dFF1YWQiLHN3aW5nOmZ1bmN0aW9u
KGMsYSxiLGQsZSl7cmV0dXJuIGYuZWFzaW5nW2YuZWFzaW5nLmRlZl0oYyxhLGIsZCxlKX0sZWFz
ZUluUXVhZDpmdW5jdGlvbihjLGEsYixkLGUpe3JldHVybiBkKihhLz1lKSphK2J9LGVhc2VPdXRR
dWFkOmZ1bmN0aW9uKGMsYSxiLGQsZSl7cmV0dXJuLWQqKGEvPWUpKihhLTIpK2J9LGVhc2VJbk91
dFF1YWQ6ZnVuY3Rpb24oYyxhLGIsZCxlKXtpZigoYS89ZS8yKTwxKXJldHVybiBkLzIqYSphK2I7
cmV0dXJuLWQvMiooLS1hKihhLTIpLTEpK2J9LGVhc2VJbkN1YmljOmZ1bmN0aW9uKGMsYSxiLGQs
ZSl7cmV0dXJuIGQqKGEvPWUpKmEqYStifSxlYXNlT3V0Q3ViaWM6ZnVuY3Rpb24oYywKLWEsYixk
LGUpe3JldHVybiBkKigoYT1hL2UtMSkqYSphKzEpK2J9LGVhc2VJbk91dEN1YmljOmZ1bmN0aW9u
KGMsYSxiLGQsZSl7aWYoKGEvPWUvMik8MSlyZXR1cm4gZC8yKmEqYSphK2I7cmV0dXJuIGQvMioo
KGEtPTIpKmEqYSsyKStifSxlYXNlSW5RdWFydDpmdW5jdGlvbihjLGEsYixkLGUpe3JldHVybiBk
KihhLz1lKSphKmEqYStifSxlYXNlT3V0UXVhcnQ6ZnVuY3Rpb24oYyxhLGIsZCxlKXtyZXR1cm4t
ZCooKGE9YS9lLTEpKmEqYSphLTEpK2J9LGVhc2VJbk91dFF1YXJ0OmZ1bmN0aW9uKGMsYSxiLGQs
ZSl7aWYoKGEvPWUvMik8MSlyZXR1cm4gZC8yKmEqYSphKmErYjtyZXR1cm4tZC8yKigoYS09Mikq
YSphKmEtMikrYn0sZWFzZUluUXVpbnQ6ZnVuY3Rpb24oYyxhLGIsZCxlKXtyZXR1cm4gZCooYS89
ZSkqYSphKmEqYStifSxlYXNlT3V0UXVpbnQ6ZnVuY3Rpb24oYyxhLGIsZCxlKXtyZXR1cm4gZCoo
KGE9YS9lLTEpKmEqYSphKmErMSkrYn0sZWFzZUluT3V0UXVpbnQ6ZnVuY3Rpb24oYywKLWEsYixk
LGUpe2lmKChhLz1lLzIpPDEpcmV0dXJuIGQvMiphKmEqYSphKmErYjtyZXR1cm4gZC8yKigoYS09
MikqYSphKmEqYSsyKStifSxlYXNlSW5TaW5lOmZ1bmN0aW9uKGMsYSxiLGQsZSl7cmV0dXJuLWQq
TWF0aC5jb3MoYS9lKihNYXRoLlBJLzIpKStkK2J9LGVhc2VPdXRTaW5lOmZ1bmN0aW9uKGMsYSxi
LGQsZSl7cmV0dXJuIGQqTWF0aC5zaW4oYS9lKihNYXRoLlBJLzIpKStifSxlYXNlSW5PdXRTaW5l
OmZ1bmN0aW9uKGMsYSxiLGQsZSl7cmV0dXJuLWQvMiooTWF0aC5jb3MoTWF0aC5QSSphL2UpLTEp
K2J9LGVhc2VJbkV4cG86ZnVuY3Rpb24oYyxhLGIsZCxlKXtyZXR1cm4gYT09MD9iOmQqTWF0aC5w
b3coMiwxMCooYS9lLTEpKStifSxlYXNlT3V0RXhwbzpmdW5jdGlvbihjLGEsYixkLGUpe3JldHVy
biBhPT1lP2IrZDpkKigtTWF0aC5wb3coMiwtMTAqYS9lKSsxKStifSxlYXNlSW5PdXRFeHBvOmZ1
bmN0aW9uKGMsYSxiLGQsZSl7aWYoYT09MClyZXR1cm4gYjtpZihhPT0KLWUpcmV0dXJuIGIrZDtp
ZigoYS89ZS8yKTwxKXJldHVybiBkLzIqTWF0aC5wb3coMiwxMCooYS0xKSkrYjtyZXR1cm4gZC8y
KigtTWF0aC5wb3coMiwtMTAqLS1hKSsyKStifSxlYXNlSW5DaXJjOmZ1bmN0aW9uKGMsYSxiLGQs
ZSl7cmV0dXJuLWQqKE1hdGguc3FydCgxLShhLz1lKSphKS0xKStifSxlYXNlT3V0Q2lyYzpmdW5j
dGlvbihjLGEsYixkLGUpe3JldHVybiBkKk1hdGguc3FydCgxLShhPWEvZS0xKSphKStifSxlYXNl
SW5PdXRDaXJjOmZ1bmN0aW9uKGMsYSxiLGQsZSl7aWYoKGEvPWUvMik8MSlyZXR1cm4tZC8yKihN
YXRoLnNxcnQoMS1hKmEpLTEpK2I7cmV0dXJuIGQvMiooTWF0aC5zcXJ0KDEtKGEtPTIpKmEpKzEp
K2J9LGVhc2VJbkVsYXN0aWM6ZnVuY3Rpb24oYyxhLGIsZCxlKXtjPTEuNzAxNTg7dmFyIGc9MCxo
PWQ7aWYoYT09MClyZXR1cm4gYjtpZigoYS89ZSk9PTEpcmV0dXJuIGIrZDtnfHwoZz1lKjAuMyk7
aWYoaDxNYXRoLmFicyhkKSl7aD1kO2M9Zy80fWVsc2UgYz0KLWcvKDIqTWF0aC5QSSkqTWF0aC5h
c2luKGQvaCk7cmV0dXJuLShoKk1hdGgucG93KDIsMTAqKGEtPTEpKSpNYXRoLnNpbigoYSplLWMp
KjIqTWF0aC5QSS9nKSkrYn0sZWFzZU91dEVsYXN0aWM6ZnVuY3Rpb24oYyxhLGIsZCxlKXtjPTEu
NzAxNTg7dmFyIGc9MCxoPWQ7aWYoYT09MClyZXR1cm4gYjtpZigoYS89ZSk9PTEpcmV0dXJuIGIr
ZDtnfHwoZz1lKjAuMyk7aWYoaDxNYXRoLmFicyhkKSl7aD1kO2M9Zy80fWVsc2UgYz1nLygyKk1h
dGguUEkpKk1hdGguYXNpbihkL2gpO3JldHVybiBoKk1hdGgucG93KDIsLTEwKmEpKk1hdGguc2lu
KChhKmUtYykqMipNYXRoLlBJL2cpK2QrYn0sZWFzZUluT3V0RWxhc3RpYzpmdW5jdGlvbihjLGEs
YixkLGUpe2M9MS43MDE1ODt2YXIgZz0wLGg9ZDtpZihhPT0wKXJldHVybiBiO2lmKChhLz1lLzIp
PT0yKXJldHVybiBiK2Q7Z3x8KGc9ZSowLjMqMS41KTtpZihoPE1hdGguYWJzKGQpKXtoPWQ7Yz1n
LzR9ZWxzZSBjPWcvKDIqTWF0aC5QSSkqTWF0aC5hc2luKGQvCi1oKTtpZihhPDEpcmV0dXJuLTAu
NSpoKk1hdGgucG93KDIsMTAqKGEtPTEpKSpNYXRoLnNpbigoYSplLWMpKjIqTWF0aC5QSS9nKSti
O3JldHVybiBoKk1hdGgucG93KDIsLTEwKihhLT0xKSkqTWF0aC5zaW4oKGEqZS1jKSoyKk1hdGgu
UEkvZykqMC41K2QrYn0sZWFzZUluQmFjazpmdW5jdGlvbihjLGEsYixkLGUsZyl7aWYoZz09ailn
PTEuNzAxNTg7cmV0dXJuIGQqKGEvPWUpKmEqKChnKzEpKmEtZykrYn0sZWFzZU91dEJhY2s6ZnVu
Y3Rpb24oYyxhLGIsZCxlLGcpe2lmKGc9PWopZz0xLjcwMTU4O3JldHVybiBkKigoYT1hL2UtMSkq
YSooKGcrMSkqYStnKSsxKStifSxlYXNlSW5PdXRCYWNrOmZ1bmN0aW9uKGMsYSxiLGQsZSxnKXtp
ZihnPT1qKWc9MS43MDE1ODtpZigoYS89ZS8yKTwxKXJldHVybiBkLzIqYSphKigoKGcqPTEuNTI1
KSsxKSphLWcpK2I7cmV0dXJuIGQvMiooKGEtPTIpKmEqKCgoZyo9MS41MjUpKzEpKmErZykrMikr
Yn0sZWFzZUluQm91bmNlOmZ1bmN0aW9uKGMsCi1hLGIsZCxlKXtyZXR1cm4gZC1mLmVhc2luZy5l
YXNlT3V0Qm91bmNlKGMsZS1hLDAsZCxlKStifSxlYXNlT3V0Qm91bmNlOmZ1bmN0aW9uKGMsYSxi
LGQsZSl7cmV0dXJuKGEvPWUpPDEvMi43NT9kKjcuNTYyNSphKmErYjphPDIvMi43NT9kKig3LjU2
MjUqKGEtPTEuNS8yLjc1KSphKzAuNzUpK2I6YTwyLjUvMi43NT9kKig3LjU2MjUqKGEtPTIuMjUv
Mi43NSkqYSswLjkzNzUpK2I6ZCooNy41NjI1KihhLT0yLjYyNS8yLjc1KSphKzAuOTg0Mzc1KSti
fSxlYXNlSW5PdXRCb3VuY2U6ZnVuY3Rpb24oYyxhLGIsZCxlKXtpZihhPGUvMilyZXR1cm4gZi5l
YXNpbmcuZWFzZUluQm91bmNlKGMsYSoyLDAsZCxlKSowLjUrYjtyZXR1cm4gZi5lYXNpbmcuZWFz
ZU91dEJvdW5jZShjLGEqMi1lLDAsZCxlKSowLjUrZCowLjUrYn19KX0oalF1ZXJ5KTsKLTsvKgot
ICogalF1ZXJ5IFVJIEVmZmVjdHMgQmxpbmQgMS44LjEwCi0gKgotICogQ29weXJpZ2h0IDIwMTEs
IEFVVEhPUlMudHh0IChodHRwOi8vanF1ZXJ5dWkuY29tL2Fib3V0KQotICogRHVhbCBsaWNlbnNl
ZCB1bmRlciB0aGUgTUlUIG9yIEdQTCBWZXJzaW9uIDIgbGljZW5zZXMuCi0gKiBodHRwOi8vanF1
ZXJ5Lm9yZy9saWNlbnNlCi0gKgotICogaHR0cDovL2RvY3MuanF1ZXJ5LmNvbS9VSS9FZmZlY3Rz
L0JsaW5kCi0gKgotICogRGVwZW5kczoKLSAqCWpxdWVyeS5lZmZlY3RzLmNvcmUuanMKLSAqLwot
KGZ1bmN0aW9uKGIpe2IuZWZmZWN0cy5ibGluZD1mdW5jdGlvbihjKXtyZXR1cm4gdGhpcy5xdWV1
ZShmdW5jdGlvbigpe3ZhciBhPWIodGhpcyksZz1bInBvc2l0aW9uIiwidG9wIiwiYm90dG9tIiwi
bGVmdCIsInJpZ2h0Il0sZj1iLmVmZmVjdHMuc2V0TW9kZShhLGMub3B0aW9ucy5tb2RlfHwiaGlk
ZSIpLGQ9Yy5vcHRpb25zLmRpcmVjdGlvbnx8InZlcnRpY2FsIjtiLmVmZmVjdHMuc2F2ZShhLGcp
O2Euc2hvdygpO3ZhciBlPWIuZWZmZWN0cy5jcmVhdGVXcmFwcGVyKGEpLmNzcyh7b3ZlcmZsb3c6
ImhpZGRlbiJ9KSxoPWQ9PSJ2ZXJ0aWNhbCI/ImhlaWdodCI6IndpZHRoIjtkPWQ9PSJ2ZXJ0aWNh
bCI/ZS5oZWlnaHQoKTplLndpZHRoKCk7Zj09InNob3ciJiZlLmNzcyhoLDApO3ZhciBpPXt9O2lb
aF09Zj09InNob3ciP2Q6MDtlLmFuaW1hdGUoaSxjLmR1cmF0aW9uLGMub3B0aW9ucy5lYXNpbmcs
ZnVuY3Rpb24oKXtmPT0iaGlkZSImJmEuaGlkZSgpO2IuZWZmZWN0cy5yZXN0b3JlKGEsCi1nKTti
LmVmZmVjdHMucmVtb3ZlV3JhcHBlcihhKTtjLmNhbGxiYWNrJiZjLmNhbGxiYWNrLmFwcGx5KGFb
MF0sYXJndW1lbnRzKTthLmRlcXVldWUoKX0pfSl9fSkoalF1ZXJ5KTsKLTsvKgotICogalF1ZXJ5
IFVJIEVmZmVjdHMgQm91bmNlIDEuOC4xMAotICoKLSAqIENvcHlyaWdodCAyMDExLCBBVVRIT1JT
LnR4dCAoaHR0cDovL2pxdWVyeXVpLmNvbS9hYm91dCkKLSAqIER1YWwgbGljZW5zZWQgdW5kZXIg
dGhlIE1JVCBvciBHUEwgVmVyc2lvbiAyIGxpY2Vuc2VzLgotICogaHR0cDovL2pxdWVyeS5vcmcv
bGljZW5zZQotICoKLSAqIGh0dHA6Ly9kb2NzLmpxdWVyeS5jb20vVUkvRWZmZWN0cy9Cb3VuY2UK
LSAqCi0gKiBEZXBlbmRzOgotICoJanF1ZXJ5LmVmZmVjdHMuY29yZS5qcwotICovCi0oZnVuY3Rp
b24oZSl7ZS5lZmZlY3RzLmJvdW5jZT1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5xdWV1ZShmdW5j
dGlvbigpe3ZhciBhPWUodGhpcyksbD1bInBvc2l0aW9uIiwidG9wIiwiYm90dG9tIiwibGVmdCIs
InJpZ2h0Il0saD1lLmVmZmVjdHMuc2V0TW9kZShhLGIub3B0aW9ucy5tb2RlfHwiZWZmZWN0Iiks
ZD1iLm9wdGlvbnMuZGlyZWN0aW9ufHwidXAiLGM9Yi5vcHRpb25zLmRpc3RhbmNlfHwyMCxtPWIu
b3B0aW9ucy50aW1lc3x8NSxpPWIuZHVyYXRpb258fDI1MDsvc2hvd3xoaWRlLy50ZXN0KGgpJiZs
LnB1c2goIm9wYWNpdHkiKTtlLmVmZmVjdHMuc2F2ZShhLGwpO2Euc2hvdygpO2UuZWZmZWN0cy5j
cmVhdGVXcmFwcGVyKGEpO3ZhciBmPWQ9PSJ1cCJ8fGQ9PSJkb3duIj8idG9wIjoibGVmdCI7ZD1k
PT0idXAifHxkPT0ibGVmdCI/InBvcyI6Im5lZyI7Yz1iLm9wdGlvbnMuZGlzdGFuY2V8fChmPT0i
dG9wIj9hLm91dGVySGVpZ2h0KHttYXJnaW46dHJ1ZX0pLzM6YS5vdXRlcldpZHRoKHttYXJnaW46
dHJ1ZX0pLwotMyk7aWYoaD09InNob3ciKWEuY3NzKCJvcGFjaXR5IiwwKS5jc3MoZixkPT0icG9z
Ij8tYzpjKTtpZihoPT0iaGlkZSIpYy89bSoyO2ghPSJoaWRlIiYmbS0tO2lmKGg9PSJzaG93Iil7
dmFyIGc9e29wYWNpdHk6MX07Z1tmXT0oZD09InBvcyI/Iis9IjoiLT0iKStjO2EuYW5pbWF0ZShn
LGkvMixiLm9wdGlvbnMuZWFzaW5nKTtjLz0yO20tLX1mb3IoZz0wO2c8bTtnKyspe3ZhciBqPXt9
LGs9e307altmXT0oZD09InBvcyI/Ii09IjoiKz0iKStjO2tbZl09KGQ9PSJwb3MiPyIrPSI6Ii09
IikrYzthLmFuaW1hdGUoaixpLzIsYi5vcHRpb25zLmVhc2luZykuYW5pbWF0ZShrLGkvMixiLm9w
dGlvbnMuZWFzaW5nKTtjPWg9PSJoaWRlIj9jKjI6Yy8yfWlmKGg9PSJoaWRlIil7Zz17b3BhY2l0
eTowfTtnW2ZdPShkPT0icG9zIj8iLT0iOiIrPSIpK2M7YS5hbmltYXRlKGcsaS8yLGIub3B0aW9u
cy5lYXNpbmcsZnVuY3Rpb24oKXthLmhpZGUoKTtlLmVmZmVjdHMucmVzdG9yZShhLGwpO2UuZWZm
ZWN0cy5yZW1vdmVXcmFwcGVyKGEpOwotYi5jYWxsYmFjayYmYi5jYWxsYmFjay5hcHBseSh0aGlz
LGFyZ3VtZW50cyl9KX1lbHNle2o9e307az17fTtqW2ZdPShkPT0icG9zIj8iLT0iOiIrPSIpK2M7
a1tmXT0oZD09InBvcyI/Iis9IjoiLT0iKStjO2EuYW5pbWF0ZShqLGkvMixiLm9wdGlvbnMuZWFz
aW5nKS5hbmltYXRlKGssaS8yLGIub3B0aW9ucy5lYXNpbmcsZnVuY3Rpb24oKXtlLmVmZmVjdHMu
cmVzdG9yZShhLGwpO2UuZWZmZWN0cy5yZW1vdmVXcmFwcGVyKGEpO2IuY2FsbGJhY2smJmIuY2Fs
bGJhY2suYXBwbHkodGhpcyxhcmd1bWVudHMpfSl9YS5xdWV1ZSgiZngiLGZ1bmN0aW9uKCl7YS5k
ZXF1ZXVlKCl9KTthLmRlcXVldWUoKX0pfX0pKGpRdWVyeSk7Ci07LyoKLSAqIGpRdWVyeSBVSSBF
ZmZlY3RzIENsaXAgMS44LjEwCi0gKgotICogQ29weXJpZ2h0IDIwMTEsIEFVVEhPUlMudHh0ICho
dHRwOi8vanF1ZXJ5dWkuY29tL2Fib3V0KQotICogRHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlU
IG9yIEdQTCBWZXJzaW9uIDIgbGljZW5zZXMuCi0gKiBodHRwOi8vanF1ZXJ5Lm9yZy9saWNlbnNl
Ci0gKgotICogaHR0cDovL2RvY3MuanF1ZXJ5LmNvbS9VSS9FZmZlY3RzL0NsaXAKLSAqCi0gKiBE
ZXBlbmRzOgotICoJanF1ZXJ5LmVmZmVjdHMuY29yZS5qcwotICovCi0oZnVuY3Rpb24oYil7Yi5l
ZmZlY3RzLmNsaXA9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMucXVldWUoZnVuY3Rpb24oKXt2YXIg
YT1iKHRoaXMpLGk9WyJwb3NpdGlvbiIsInRvcCIsImJvdHRvbSIsImxlZnQiLCJyaWdodCIsImhl
aWdodCIsIndpZHRoIl0sZj1iLmVmZmVjdHMuc2V0TW9kZShhLGUub3B0aW9ucy5tb2RlfHwiaGlk
ZSIpLGM9ZS5vcHRpb25zLmRpcmVjdGlvbnx8InZlcnRpY2FsIjtiLmVmZmVjdHMuc2F2ZShhLGkp
O2Euc2hvdygpO3ZhciBkPWIuZWZmZWN0cy5jcmVhdGVXcmFwcGVyKGEpLmNzcyh7b3ZlcmZsb3c6
ImhpZGRlbiJ9KTtkPWFbMF0udGFnTmFtZT09IklNRyI/ZDphO3ZhciBnPXtzaXplOmM9PSJ2ZXJ0
aWNhbCI/ImhlaWdodCI6IndpZHRoIixwb3NpdGlvbjpjPT0idmVydGljYWwiPyJ0b3AiOiJsZWZ0
In07Yz1jPT0idmVydGljYWwiP2QuaGVpZ2h0KCk6ZC53aWR0aCgpO2lmKGY9PSJzaG93Iil7ZC5j
c3MoZy5zaXplLDApO2QuY3NzKGcucG9zaXRpb24sCi1jLzIpfXZhciBoPXt9O2hbZy5zaXplXT1m
PT0ic2hvdyI/YzowO2hbZy5wb3NpdGlvbl09Zj09InNob3ciPzA6Yy8yO2QuYW5pbWF0ZShoLHtx
dWV1ZTpmYWxzZSxkdXJhdGlvbjplLmR1cmF0aW9uLGVhc2luZzplLm9wdGlvbnMuZWFzaW5nLGNv
bXBsZXRlOmZ1bmN0aW9uKCl7Zj09ImhpZGUiJiZhLmhpZGUoKTtiLmVmZmVjdHMucmVzdG9yZShh
LGkpO2IuZWZmZWN0cy5yZW1vdmVXcmFwcGVyKGEpO2UuY2FsbGJhY2smJmUuY2FsbGJhY2suYXBw
bHkoYVswXSxhcmd1bWVudHMpO2EuZGVxdWV1ZSgpfX0pfSl9fSkoalF1ZXJ5KTsKLTsvKgotICog
alF1ZXJ5IFVJIEVmZmVjdHMgRHJvcCAxLjguMTAKLSAqCi0gKiBDb3B5cmlnaHQgMjAxMSwgQVVU
SE9SUy50eHQgKGh0dHA6Ly9qcXVlcnl1aS5jb20vYWJvdXQpCi0gKiBEdWFsIGxpY2Vuc2VkIHVu
ZGVyIHRoZSBNSVQgb3IgR1BMIFZlcnNpb24gMiBsaWNlbnNlcy4KLSAqIGh0dHA6Ly9qcXVlcnku
b3JnL2xpY2Vuc2UKLSAqCi0gKiBodHRwOi8vZG9jcy5qcXVlcnkuY29tL1VJL0VmZmVjdHMvRHJv
cAotICoKLSAqIERlcGVuZHM6Ci0gKglqcXVlcnkuZWZmZWN0cy5jb3JlLmpzCi0gKi8KLShmdW5j
dGlvbihjKXtjLmVmZmVjdHMuZHJvcD1mdW5jdGlvbihkKXtyZXR1cm4gdGhpcy5xdWV1ZShmdW5j
dGlvbigpe3ZhciBhPWModGhpcyksaD1bInBvc2l0aW9uIiwidG9wIiwiYm90dG9tIiwibGVmdCIs
InJpZ2h0Iiwib3BhY2l0eSJdLGU9Yy5lZmZlY3RzLnNldE1vZGUoYSxkLm9wdGlvbnMubW9kZXx8
ImhpZGUiKSxiPWQub3B0aW9ucy5kaXJlY3Rpb258fCJsZWZ0IjtjLmVmZmVjdHMuc2F2ZShhLGgp
O2Euc2hvdygpO2MuZWZmZWN0cy5jcmVhdGVXcmFwcGVyKGEpO3ZhciBmPWI9PSJ1cCJ8fGI9PSJk
b3duIj8idG9wIjoibGVmdCI7Yj1iPT0idXAifHxiPT0ibGVmdCI/InBvcyI6Im5lZyI7dmFyIGc9
ZC5vcHRpb25zLmRpc3RhbmNlfHwoZj09InRvcCI/YS5vdXRlckhlaWdodCh7bWFyZ2luOnRydWV9
KS8yOmEub3V0ZXJXaWR0aCh7bWFyZ2luOnRydWV9KS8yKTtpZihlPT0ic2hvdyIpYS5jc3MoIm9w
YWNpdHkiLDApLmNzcyhmLGI9PSJwb3MiPy1nOmcpO3ZhciBpPXtvcGFjaXR5OmU9PQotInNob3ci
PzE6MH07aVtmXT0oZT09InNob3ciP2I9PSJwb3MiPyIrPSI6Ii09IjpiPT0icG9zIj8iLT0iOiIr
PSIpK2c7YS5hbmltYXRlKGkse3F1ZXVlOmZhbHNlLGR1cmF0aW9uOmQuZHVyYXRpb24sZWFzaW5n
OmQub3B0aW9ucy5lYXNpbmcsY29tcGxldGU6ZnVuY3Rpb24oKXtlPT0iaGlkZSImJmEuaGlkZSgp
O2MuZWZmZWN0cy5yZXN0b3JlKGEsaCk7Yy5lZmZlY3RzLnJlbW92ZVdyYXBwZXIoYSk7ZC5jYWxs
YmFjayYmZC5jYWxsYmFjay5hcHBseSh0aGlzLGFyZ3VtZW50cyk7YS5kZXF1ZXVlKCl9fSl9KX19
KShqUXVlcnkpOwotOy8qCi0gKiBqUXVlcnkgVUkgRWZmZWN0cyBFeHBsb2RlIDEuOC4xMAotICoK
LSAqIENvcHlyaWdodCAyMDExLCBBVVRIT1JTLnR4dCAoaHR0cDovL2pxdWVyeXVpLmNvbS9hYm91
dCkKLSAqIER1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBvciBHUEwgVmVyc2lvbiAyIGxpY2Vu
c2VzLgotICogaHR0cDovL2pxdWVyeS5vcmcvbGljZW5zZQotICoKLSAqIGh0dHA6Ly9kb2NzLmpx
dWVyeS5jb20vVUkvRWZmZWN0cy9FeHBsb2RlCi0gKgotICogRGVwZW5kczoKLSAqCWpxdWVyeS5l
ZmZlY3RzLmNvcmUuanMKLSAqLwotKGZ1bmN0aW9uKGope2ouZWZmZWN0cy5leHBsb2RlPWZ1bmN0
aW9uKGEpe3JldHVybiB0aGlzLnF1ZXVlKGZ1bmN0aW9uKCl7dmFyIGM9YS5vcHRpb25zLnBpZWNl
cz9NYXRoLnJvdW5kKE1hdGguc3FydChhLm9wdGlvbnMucGllY2VzKSk6MyxkPWEub3B0aW9ucy5w
aWVjZXM/TWF0aC5yb3VuZChNYXRoLnNxcnQoYS5vcHRpb25zLnBpZWNlcykpOjM7YS5vcHRpb25z
Lm1vZGU9YS5vcHRpb25zLm1vZGU9PSJ0b2dnbGUiP2oodGhpcykuaXMoIjp2aXNpYmxlIik/Imhp
ZGUiOiJzaG93IjphLm9wdGlvbnMubW9kZTt2YXIgYj1qKHRoaXMpLnNob3coKS5jc3MoInZpc2li
aWxpdHkiLCJoaWRkZW4iKSxnPWIub2Zmc2V0KCk7Zy50b3AtPXBhcnNlSW50KGIuY3NzKCJtYXJn
aW5Ub3AiKSwxMCl8fDA7Zy5sZWZ0LT1wYXJzZUludChiLmNzcygibWFyZ2luTGVmdCIpLDEwKXx8
MDtmb3IodmFyIGg9Yi5vdXRlcldpZHRoKHRydWUpLGk9Yi5vdXRlckhlaWdodCh0cnVlKSxlPTA7
ZTxjO2UrKylmb3IodmFyIGY9Ci0wO2Y8ZDtmKyspYi5jbG9uZSgpLmFwcGVuZFRvKCJib2R5Iiku
d3JhcCgiPGRpdj48L2Rpdj4iKS5jc3Moe3Bvc2l0aW9uOiJhYnNvbHV0ZSIsdmlzaWJpbGl0eToi
dmlzaWJsZSIsbGVmdDotZiooaC9kKSx0b3A6LWUqKGkvYyl9KS5wYXJlbnQoKS5hZGRDbGFzcygi
dWktZWZmZWN0cy1leHBsb2RlIikuY3NzKHtwb3NpdGlvbjoiYWJzb2x1dGUiLG92ZXJmbG93OiJo
aWRkZW4iLHdpZHRoOmgvZCxoZWlnaHQ6aS9jLGxlZnQ6Zy5sZWZ0K2YqKGgvZCkrKGEub3B0aW9u
cy5tb2RlPT0ic2hvdyI/KGYtTWF0aC5mbG9vcihkLzIpKSooaC9kKTowKSx0b3A6Zy50b3ArZSoo
aS9jKSsoYS5vcHRpb25zLm1vZGU9PSJzaG93Ij8oZS1NYXRoLmZsb29yKGMvMikpKihpL2MpOjAp
LG9wYWNpdHk6YS5vcHRpb25zLm1vZGU9PSJzaG93Ij8wOjF9KS5hbmltYXRlKHtsZWZ0OmcubGVm
dCtmKihoL2QpKyhhLm9wdGlvbnMubW9kZT09InNob3ciPzA6KGYtTWF0aC5mbG9vcihkLzIpKSoo
aC9kKSksdG9wOmcudG9wKwotZSooaS9jKSsoYS5vcHRpb25zLm1vZGU9PSJzaG93Ij8wOihlLU1h
dGguZmxvb3IoYy8yKSkqKGkvYykpLG9wYWNpdHk6YS5vcHRpb25zLm1vZGU9PSJzaG93Ij8xOjB9
LGEuZHVyYXRpb258fDUwMCk7c2V0VGltZW91dChmdW5jdGlvbigpe2Eub3B0aW9ucy5tb2RlPT0i
c2hvdyI/Yi5jc3Moe3Zpc2liaWxpdHk6InZpc2libGUifSk6Yi5jc3Moe3Zpc2liaWxpdHk6InZp
c2libGUifSkuaGlkZSgpO2EuY2FsbGJhY2smJmEuY2FsbGJhY2suYXBwbHkoYlswXSk7Yi5kZXF1
ZXVlKCk7aigiZGl2LnVpLWVmZmVjdHMtZXhwbG9kZSIpLnJlbW92ZSgpfSxhLmR1cmF0aW9ufHw1
MDApfSl9fSkoalF1ZXJ5KTsKLTsvKgotICogalF1ZXJ5IFVJIEVmZmVjdHMgRmFkZSAxLjguMTAK
LSAqCi0gKiBDb3B5cmlnaHQgMjAxMSwgQVVUSE9SUy50eHQgKGh0dHA6Ly9qcXVlcnl1aS5jb20v
YWJvdXQpCi0gKiBEdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgb3IgR1BMIFZlcnNpb24gMiBs
aWNlbnNlcy4KLSAqIGh0dHA6Ly9qcXVlcnkub3JnL2xpY2Vuc2UKLSAqCi0gKiBodHRwOi8vZG9j
cy5qcXVlcnkuY29tL1VJL0VmZmVjdHMvRmFkZQotICoKLSAqIERlcGVuZHM6Ci0gKglqcXVlcnku
ZWZmZWN0cy5jb3JlLmpzCi0gKi8KLShmdW5jdGlvbihiKXtiLmVmZmVjdHMuZmFkZT1mdW5jdGlv
bihhKXtyZXR1cm4gdGhpcy5xdWV1ZShmdW5jdGlvbigpe3ZhciBjPWIodGhpcyksZD1iLmVmZmVj
dHMuc2V0TW9kZShjLGEub3B0aW9ucy5tb2RlfHwiaGlkZSIpO2MuYW5pbWF0ZSh7b3BhY2l0eTpk
fSx7cXVldWU6ZmFsc2UsZHVyYXRpb246YS5kdXJhdGlvbixlYXNpbmc6YS5vcHRpb25zLmVhc2lu
Zyxjb21wbGV0ZTpmdW5jdGlvbigpe2EuY2FsbGJhY2smJmEuY2FsbGJhY2suYXBwbHkodGhpcyxh
cmd1bWVudHMpO2MuZGVxdWV1ZSgpfX0pfSl9fSkoalF1ZXJ5KTsKLTsvKgotICogalF1ZXJ5IFVJ
IEVmZmVjdHMgRm9sZCAxLjguMTAKLSAqCi0gKiBDb3B5cmlnaHQgMjAxMSwgQVVUSE9SUy50eHQg
KGh0dHA6Ly9qcXVlcnl1aS5jb20vYWJvdXQpCi0gKiBEdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBN
SVQgb3IgR1BMIFZlcnNpb24gMiBsaWNlbnNlcy4KLSAqIGh0dHA6Ly9qcXVlcnkub3JnL2xpY2Vu
c2UKLSAqCi0gKiBodHRwOi8vZG9jcy5qcXVlcnkuY29tL1VJL0VmZmVjdHMvRm9sZAotICoKLSAq
IERlcGVuZHM6Ci0gKglqcXVlcnkuZWZmZWN0cy5jb3JlLmpzCi0gKi8KLShmdW5jdGlvbihjKXtj
LmVmZmVjdHMuZm9sZD1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5xdWV1ZShmdW5jdGlvbigpe3Zh
ciBiPWModGhpcyksaj1bInBvc2l0aW9uIiwidG9wIiwiYm90dG9tIiwibGVmdCIsInJpZ2h0Il0s
ZD1jLmVmZmVjdHMuc2V0TW9kZShiLGEub3B0aW9ucy5tb2RlfHwiaGlkZSIpLGc9YS5vcHRpb25z
LnNpemV8fDE1LGg9ISFhLm9wdGlvbnMuaG9yaXpGaXJzdCxrPWEuZHVyYXRpb24/YS5kdXJhdGlv
bi8yOmMuZnguc3BlZWRzLl9kZWZhdWx0LzI7Yy5lZmZlY3RzLnNhdmUoYixqKTtiLnNob3coKTt2
YXIgZT1jLmVmZmVjdHMuY3JlYXRlV3JhcHBlcihiKS5jc3Moe292ZXJmbG93OiJoaWRkZW4ifSks
Zj1kPT0ic2hvdyIhPWgsbD1mP1sid2lkdGgiLCJoZWlnaHQiXTpbImhlaWdodCIsIndpZHRoIl07
Zj1mP1tlLndpZHRoKCksZS5oZWlnaHQoKV06W2UuaGVpZ2h0KCksZS53aWR0aCgpXTt2YXIgaT0v
KFswLTldKyklLy5leGVjKGcpO2lmKGkpZz1wYXJzZUludChpWzFdLAotMTApLzEwMCpmW2Q9PSJo
aWRlIj8wOjFdO2lmKGQ9PSJzaG93IillLmNzcyhoP3toZWlnaHQ6MCx3aWR0aDpnfTp7aGVpZ2h0
Omcsd2lkdGg6MH0pO2g9e307aT17fTtoW2xbMF1dPWQ9PSJzaG93Ij9mWzBdOmc7aVtsWzFdXT1k
PT0ic2hvdyI/ZlsxXTowO2UuYW5pbWF0ZShoLGssYS5vcHRpb25zLmVhc2luZykuYW5pbWF0ZShp
LGssYS5vcHRpb25zLmVhc2luZyxmdW5jdGlvbigpe2Q9PSJoaWRlIiYmYi5oaWRlKCk7Yy5lZmZl
Y3RzLnJlc3RvcmUoYixqKTtjLmVmZmVjdHMucmVtb3ZlV3JhcHBlcihiKTthLmNhbGxiYWNrJiZh
LmNhbGxiYWNrLmFwcGx5KGJbMF0sYXJndW1lbnRzKTtiLmRlcXVldWUoKX0pfSl9fSkoalF1ZXJ5
KTsKLTsvKgotICogalF1ZXJ5IFVJIEVmZmVjdHMgSGlnaGxpZ2h0IDEuOC4xMAotICoKLSAqIENv
cHlyaWdodCAyMDExLCBBVVRIT1JTLnR4dCAoaHR0cDovL2pxdWVyeXVpLmNvbS9hYm91dCkKLSAq
IER1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBvciBHUEwgVmVyc2lvbiAyIGxpY2Vuc2VzLgot
ICogaHR0cDovL2pxdWVyeS5vcmcvbGljZW5zZQotICoKLSAqIGh0dHA6Ly9kb2NzLmpxdWVyeS5j
b20vVUkvRWZmZWN0cy9IaWdobGlnaHQKLSAqCi0gKiBEZXBlbmRzOgotICoJanF1ZXJ5LmVmZmVj
dHMuY29yZS5qcwotICovCi0oZnVuY3Rpb24oYil7Yi5lZmZlY3RzLmhpZ2hsaWdodD1mdW5jdGlv
bihjKXtyZXR1cm4gdGhpcy5xdWV1ZShmdW5jdGlvbigpe3ZhciBhPWIodGhpcyksZT1bImJhY2tn
cm91bmRJbWFnZSIsImJhY2tncm91bmRDb2xvciIsIm9wYWNpdHkiXSxkPWIuZWZmZWN0cy5zZXRN
b2RlKGEsYy5vcHRpb25zLm1vZGV8fCJzaG93IiksZj17YmFja2dyb3VuZENvbG9yOmEuY3NzKCJi
YWNrZ3JvdW5kQ29sb3IiKX07aWYoZD09ImhpZGUiKWYub3BhY2l0eT0wO2IuZWZmZWN0cy5zYXZl
KGEsZSk7YS5zaG93KCkuY3NzKHtiYWNrZ3JvdW5kSW1hZ2U6Im5vbmUiLGJhY2tncm91bmRDb2xv
cjpjLm9wdGlvbnMuY29sb3J8fCIjZmZmZjk5In0pLmFuaW1hdGUoZix7cXVldWU6ZmFsc2UsZHVy
YXRpb246Yy5kdXJhdGlvbixlYXNpbmc6Yy5vcHRpb25zLmVhc2luZyxjb21wbGV0ZTpmdW5jdGlv
bigpe2Q9PSJoaWRlIiYmYS5oaWRlKCk7Yi5lZmZlY3RzLnJlc3RvcmUoYSxlKTtkPT0ic2hvdyIm
JiFiLnN1cHBvcnQub3BhY2l0eSYmCi10aGlzLnN0eWxlLnJlbW92ZUF0dHJpYnV0ZSgiZmlsdGVy
Iik7Yy5jYWxsYmFjayYmYy5jYWxsYmFjay5hcHBseSh0aGlzLGFyZ3VtZW50cyk7YS5kZXF1ZXVl
KCl9fSl9KX19KShqUXVlcnkpOwotOy8qCi0gKiBqUXVlcnkgVUkgRWZmZWN0cyBQdWxzYXRlIDEu
OC4xMAotICoKLSAqIENvcHlyaWdodCAyMDExLCBBVVRIT1JTLnR4dCAoaHR0cDovL2pxdWVyeXVp
LmNvbS9hYm91dCkKLSAqIER1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBvciBHUEwgVmVyc2lv
biAyIGxpY2Vuc2VzLgotICogaHR0cDovL2pxdWVyeS5vcmcvbGljZW5zZQotICoKLSAqIGh0dHA6
Ly9kb2NzLmpxdWVyeS5jb20vVUkvRWZmZWN0cy9QdWxzYXRlCi0gKgotICogRGVwZW5kczoKLSAq
CWpxdWVyeS5lZmZlY3RzLmNvcmUuanMKLSAqLwotKGZ1bmN0aW9uKGQpe2QuZWZmZWN0cy5wdWxz
YXRlPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnF1ZXVlKGZ1bmN0aW9uKCl7dmFyIGI9ZCh0aGlz
KSxjPWQuZWZmZWN0cy5zZXRNb2RlKGIsYS5vcHRpb25zLm1vZGV8fCJzaG93Iik7dGltZXM9KGEu
b3B0aW9ucy50aW1lc3x8NSkqMi0xO2R1cmF0aW9uPWEuZHVyYXRpb24/YS5kdXJhdGlvbi8yOmQu
Znguc3BlZWRzLl9kZWZhdWx0LzI7aXNWaXNpYmxlPWIuaXMoIjp2aXNpYmxlIik7YW5pbWF0ZVRv
PTA7aWYoIWlzVmlzaWJsZSl7Yi5jc3MoIm9wYWNpdHkiLDApLnNob3coKTthbmltYXRlVG89MX1p
ZihjPT0iaGlkZSImJmlzVmlzaWJsZXx8Yz09InNob3ciJiYhaXNWaXNpYmxlKXRpbWVzLS07Zm9y
KGM9MDtjPHRpbWVzO2MrKyl7Yi5hbmltYXRlKHtvcGFjaXR5OmFuaW1hdGVUb30sZHVyYXRpb24s
YS5vcHRpb25zLmVhc2luZyk7YW5pbWF0ZVRvPShhbmltYXRlVG8rMSklMn1iLmFuaW1hdGUoe29w
YWNpdHk6YW5pbWF0ZVRvfSxkdXJhdGlvbiwKLWEub3B0aW9ucy5lYXNpbmcsZnVuY3Rpb24oKXth
bmltYXRlVG89PTAmJmIuaGlkZSgpO2EuY2FsbGJhY2smJmEuY2FsbGJhY2suYXBwbHkodGhpcyxh
cmd1bWVudHMpfSk7Yi5xdWV1ZSgiZngiLGZ1bmN0aW9uKCl7Yi5kZXF1ZXVlKCl9KS5kZXF1ZXVl
KCl9KX19KShqUXVlcnkpOwotOy8qCi0gKiBqUXVlcnkgVUkgRWZmZWN0cyBTY2FsZSAxLjguMTAK
LSAqCi0gKiBDb3B5cmlnaHQgMjAxMSwgQVVUSE9SUy50eHQgKGh0dHA6Ly9qcXVlcnl1aS5jb20v
YWJvdXQpCi0gKiBEdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgb3IgR1BMIFZlcnNpb24gMiBs
aWNlbnNlcy4KLSAqIGh0dHA6Ly9qcXVlcnkub3JnL2xpY2Vuc2UKLSAqCi0gKiBodHRwOi8vZG9j
cy5qcXVlcnkuY29tL1VJL0VmZmVjdHMvU2NhbGUKLSAqCi0gKiBEZXBlbmRzOgotICoJanF1ZXJ5
LmVmZmVjdHMuY29yZS5qcwotICovCi0oZnVuY3Rpb24oYyl7Yy5lZmZlY3RzLnB1ZmY9ZnVuY3Rp
b24oYil7cmV0dXJuIHRoaXMucXVldWUoZnVuY3Rpb24oKXt2YXIgYT1jKHRoaXMpLGU9Yy5lZmZl
Y3RzLnNldE1vZGUoYSxiLm9wdGlvbnMubW9kZXx8ImhpZGUiKSxnPXBhcnNlSW50KGIub3B0aW9u
cy5wZXJjZW50LDEwKXx8MTUwLGg9Zy8xMDAsaT17aGVpZ2h0OmEuaGVpZ2h0KCksd2lkdGg6YS53
aWR0aCgpfTtjLmV4dGVuZChiLm9wdGlvbnMse2ZhZGU6dHJ1ZSxtb2RlOmUscGVyY2VudDplPT0i
aGlkZSI/ZzoxMDAsZnJvbTplPT0iaGlkZSI/aTp7aGVpZ2h0OmkuaGVpZ2h0Kmgsd2lkdGg6aS53
aWR0aCpofX0pO2EuZWZmZWN0KCJzY2FsZSIsYi5vcHRpb25zLGIuZHVyYXRpb24sYi5jYWxsYmFj
ayk7YS5kZXF1ZXVlKCl9KX07Yy5lZmZlY3RzLnNjYWxlPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlz
LnF1ZXVlKGZ1bmN0aW9uKCl7dmFyIGE9Yyh0aGlzKSxlPWMuZXh0ZW5kKHRydWUse30sYi5vcHRp
b25zKSxnPWMuZWZmZWN0cy5zZXRNb2RlKGEsCi1iLm9wdGlvbnMubW9kZXx8ImVmZmVjdCIpLGg9
cGFyc2VJbnQoYi5vcHRpb25zLnBlcmNlbnQsMTApfHwocGFyc2VJbnQoYi5vcHRpb25zLnBlcmNl
bnQsMTApPT0wPzA6Zz09ImhpZGUiPzA6MTAwKSxpPWIub3B0aW9ucy5kaXJlY3Rpb258fCJib3Ro
IixmPWIub3B0aW9ucy5vcmlnaW47aWYoZyE9ImVmZmVjdCIpe2Uub3JpZ2luPWZ8fFsibWlkZGxl
IiwiY2VudGVyIl07ZS5yZXN0b3JlPXRydWV9Zj17aGVpZ2h0OmEuaGVpZ2h0KCksd2lkdGg6YS53
aWR0aCgpfTthLmZyb209Yi5vcHRpb25zLmZyb218fChnPT0ic2hvdyI/e2hlaWdodDowLHdpZHRo
OjB9OmYpO2g9e3k6aSE9Imhvcml6b250YWwiP2gvMTAwOjEseDppIT0idmVydGljYWwiP2gvMTAw
OjF9O2EudG89e2hlaWdodDpmLmhlaWdodCpoLnksd2lkdGg6Zi53aWR0aCpoLnh9O2lmKGIub3B0
aW9ucy5mYWRlKXtpZihnPT0ic2hvdyIpe2EuZnJvbS5vcGFjaXR5PTA7YS50by5vcGFjaXR5PTF9
aWYoZz09ImhpZGUiKXthLmZyb20ub3BhY2l0eT0KLTE7YS50by5vcGFjaXR5PTB9fWUuZnJvbT1h
LmZyb207ZS50bz1hLnRvO2UubW9kZT1nO2EuZWZmZWN0KCJzaXplIixlLGIuZHVyYXRpb24sYi5j
YWxsYmFjayk7YS5kZXF1ZXVlKCl9KX07Yy5lZmZlY3RzLnNpemU9ZnVuY3Rpb24oYil7cmV0dXJu
IHRoaXMucXVldWUoZnVuY3Rpb24oKXt2YXIgYT1jKHRoaXMpLGU9WyJwb3NpdGlvbiIsInRvcCIs
ImJvdHRvbSIsImxlZnQiLCJyaWdodCIsIndpZHRoIiwiaGVpZ2h0Iiwib3ZlcmZsb3ciLCJvcGFj
aXR5Il0sZz1bInBvc2l0aW9uIiwidG9wIiwiYm90dG9tIiwibGVmdCIsInJpZ2h0Iiwib3ZlcmZs
b3ciLCJvcGFjaXR5Il0saD1bIndpZHRoIiwiaGVpZ2h0Iiwib3ZlcmZsb3ciXSxpPVsiZm9udFNp
emUiXSxmPVsiYm9yZGVyVG9wV2lkdGgiLCJib3JkZXJCb3R0b21XaWR0aCIsInBhZGRpbmdUb3Ai
LCJwYWRkaW5nQm90dG9tIl0saz1bImJvcmRlckxlZnRXaWR0aCIsImJvcmRlclJpZ2h0V2lkdGgi
LCJwYWRkaW5nTGVmdCIsInBhZGRpbmdSaWdodCJdLAotcD1jLmVmZmVjdHMuc2V0TW9kZShhLGIu
b3B0aW9ucy5tb2RlfHwiZWZmZWN0Iiksbj1iLm9wdGlvbnMucmVzdG9yZXx8ZmFsc2UsbT1iLm9w
dGlvbnMuc2NhbGV8fCJib3RoIixsPWIub3B0aW9ucy5vcmlnaW4saj17aGVpZ2h0OmEuaGVpZ2h0
KCksd2lkdGg6YS53aWR0aCgpfTthLmZyb209Yi5vcHRpb25zLmZyb218fGo7YS50bz1iLm9wdGlv
bnMudG98fGo7aWYobCl7bD1jLmVmZmVjdHMuZ2V0QmFzZWxpbmUobCxqKTthLmZyb20udG9wPShq
LmhlaWdodC1hLmZyb20uaGVpZ2h0KSpsLnk7YS5mcm9tLmxlZnQ9KGoud2lkdGgtYS5mcm9tLndp
ZHRoKSpsLng7YS50by50b3A9KGouaGVpZ2h0LWEudG8uaGVpZ2h0KSpsLnk7YS50by5sZWZ0PShq
LndpZHRoLWEudG8ud2lkdGgpKmwueH12YXIgZD17ZnJvbTp7eTphLmZyb20uaGVpZ2h0L2ouaGVp
Z2h0LHg6YS5mcm9tLndpZHRoL2oud2lkdGh9LHRvOnt5OmEudG8uaGVpZ2h0L2ouaGVpZ2h0LHg6
YS50by53aWR0aC9qLndpZHRofX07Ci1pZihtPT0iYm94Inx8bT09ImJvdGgiKXtpZihkLmZyb20u
eSE9ZC50by55KXtlPWUuY29uY2F0KGYpO2EuZnJvbT1jLmVmZmVjdHMuc2V0VHJhbnNpdGlvbihh
LGYsZC5mcm9tLnksYS5mcm9tKTthLnRvPWMuZWZmZWN0cy5zZXRUcmFuc2l0aW9uKGEsZixkLnRv
LnksYS50byl9aWYoZC5mcm9tLnghPWQudG8ueCl7ZT1lLmNvbmNhdChrKTthLmZyb209Yy5lZmZl
Y3RzLnNldFRyYW5zaXRpb24oYSxrLGQuZnJvbS54LGEuZnJvbSk7YS50bz1jLmVmZmVjdHMuc2V0
VHJhbnNpdGlvbihhLGssZC50by54LGEudG8pfX1pZihtPT0iY29udGVudCJ8fG09PSJib3RoIilp
ZihkLmZyb20ueSE9ZC50by55KXtlPWUuY29uY2F0KGkpO2EuZnJvbT1jLmVmZmVjdHMuc2V0VHJh
bnNpdGlvbihhLGksZC5mcm9tLnksYS5mcm9tKTthLnRvPWMuZWZmZWN0cy5zZXRUcmFuc2l0aW9u
KGEsaSxkLnRvLnksYS50byl9Yy5lZmZlY3RzLnNhdmUoYSxuP2U6Zyk7YS5zaG93KCk7Yy5lZmZl
Y3RzLmNyZWF0ZVdyYXBwZXIoYSk7Ci1hLmNzcygib3ZlcmZsb3ciLCJoaWRkZW4iKS5jc3MoYS5m
cm9tKTtpZihtPT0iY29udGVudCJ8fG09PSJib3RoIil7Zj1mLmNvbmNhdChbIm1hcmdpblRvcCIs
Im1hcmdpbkJvdHRvbSJdKS5jb25jYXQoaSk7az1rLmNvbmNhdChbIm1hcmdpbkxlZnQiLCJtYXJn
aW5SaWdodCJdKTtoPWUuY29uY2F0KGYpLmNvbmNhdChrKTthLmZpbmQoIipbd2lkdGhdIikuZWFj
aChmdW5jdGlvbigpe2NoaWxkPWModGhpcyk7biYmYy5lZmZlY3RzLnNhdmUoY2hpbGQsaCk7dmFy
IG89e2hlaWdodDpjaGlsZC5oZWlnaHQoKSx3aWR0aDpjaGlsZC53aWR0aCgpfTtjaGlsZC5mcm9t
PXtoZWlnaHQ6by5oZWlnaHQqZC5mcm9tLnksd2lkdGg6by53aWR0aCpkLmZyb20ueH07Y2hpbGQu
dG89e2hlaWdodDpvLmhlaWdodCpkLnRvLnksd2lkdGg6by53aWR0aCpkLnRvLnh9O2lmKGQuZnJv
bS55IT1kLnRvLnkpe2NoaWxkLmZyb209Yy5lZmZlY3RzLnNldFRyYW5zaXRpb24oY2hpbGQsZixk
LmZyb20ueSxjaGlsZC5mcm9tKTsKLWNoaWxkLnRvPWMuZWZmZWN0cy5zZXRUcmFuc2l0aW9uKGNo
aWxkLGYsZC50by55LGNoaWxkLnRvKX1pZihkLmZyb20ueCE9ZC50by54KXtjaGlsZC5mcm9tPWMu
ZWZmZWN0cy5zZXRUcmFuc2l0aW9uKGNoaWxkLGssZC5mcm9tLngsY2hpbGQuZnJvbSk7Y2hpbGQu
dG89Yy5lZmZlY3RzLnNldFRyYW5zaXRpb24oY2hpbGQsayxkLnRvLngsY2hpbGQudG8pfWNoaWxk
LmNzcyhjaGlsZC5mcm9tKTtjaGlsZC5hbmltYXRlKGNoaWxkLnRvLGIuZHVyYXRpb24sYi5vcHRp
b25zLmVhc2luZyxmdW5jdGlvbigpe24mJmMuZWZmZWN0cy5yZXN0b3JlKGNoaWxkLGgpfSl9KX1h
LmFuaW1hdGUoYS50byx7cXVldWU6ZmFsc2UsZHVyYXRpb246Yi5kdXJhdGlvbixlYXNpbmc6Yi5v
cHRpb25zLmVhc2luZyxjb21wbGV0ZTpmdW5jdGlvbigpe2EudG8ub3BhY2l0eT09PTAmJmEuY3Nz
KCJvcGFjaXR5IixhLmZyb20ub3BhY2l0eSk7cD09ImhpZGUiJiZhLmhpZGUoKTtjLmVmZmVjdHMu
cmVzdG9yZShhLAotbj9lOmcpO2MuZWZmZWN0cy5yZW1vdmVXcmFwcGVyKGEpO2IuY2FsbGJhY2sm
JmIuY2FsbGJhY2suYXBwbHkodGhpcyxhcmd1bWVudHMpO2EuZGVxdWV1ZSgpfX0pfSl9fSkoalF1
ZXJ5KTsKLTsvKgotICogalF1ZXJ5IFVJIEVmZmVjdHMgU2hha2UgMS44LjEwCi0gKgotICogQ29w
eXJpZ2h0IDIwMTEsIEFVVEhPUlMudHh0IChodHRwOi8vanF1ZXJ5dWkuY29tL2Fib3V0KQotICog
RHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIG9yIEdQTCBWZXJzaW9uIDIgbGljZW5zZXMuCi0g
KiBodHRwOi8vanF1ZXJ5Lm9yZy9saWNlbnNlCi0gKgotICogaHR0cDovL2RvY3MuanF1ZXJ5LmNv
bS9VSS9FZmZlY3RzL1NoYWtlCi0gKgotICogRGVwZW5kczoKLSAqCWpxdWVyeS5lZmZlY3RzLmNv
cmUuanMKLSAqLwotKGZ1bmN0aW9uKGQpe2QuZWZmZWN0cy5zaGFrZT1mdW5jdGlvbihhKXtyZXR1
cm4gdGhpcy5xdWV1ZShmdW5jdGlvbigpe3ZhciBiPWQodGhpcyksaj1bInBvc2l0aW9uIiwidG9w
IiwiYm90dG9tIiwibGVmdCIsInJpZ2h0Il07ZC5lZmZlY3RzLnNldE1vZGUoYixhLm9wdGlvbnMu
bW9kZXx8ImVmZmVjdCIpO3ZhciBjPWEub3B0aW9ucy5kaXJlY3Rpb258fCJsZWZ0IixlPWEub3B0
aW9ucy5kaXN0YW5jZXx8MjAsbD1hLm9wdGlvbnMudGltZXN8fDMsZj1hLmR1cmF0aW9ufHxhLm9w
dGlvbnMuZHVyYXRpb258fDE0MDtkLmVmZmVjdHMuc2F2ZShiLGopO2Iuc2hvdygpO2QuZWZmZWN0
cy5jcmVhdGVXcmFwcGVyKGIpO3ZhciBnPWM9PSJ1cCJ8fGM9PSJkb3duIj8idG9wIjoibGVmdCIs
aD1jPT0idXAifHxjPT0ibGVmdCI/InBvcyI6Im5lZyI7Yz17fTt2YXIgaT17fSxrPXt9O2NbZ109
KGg9PSJwb3MiPyItPSI6Iis9IikrZTtpW2ddPShoPT0icG9zIj8iKz0iOiItPSIpK2UqMjtrW2dd
PQotKGg9PSJwb3MiPyItPSI6Iis9IikrZSoyO2IuYW5pbWF0ZShjLGYsYS5vcHRpb25zLmVhc2lu
Zyk7Zm9yKGU9MTtlPGw7ZSsrKWIuYW5pbWF0ZShpLGYsYS5vcHRpb25zLmVhc2luZykuYW5pbWF0
ZShrLGYsYS5vcHRpb25zLmVhc2luZyk7Yi5hbmltYXRlKGksZixhLm9wdGlvbnMuZWFzaW5nKS5h
bmltYXRlKGMsZi8yLGEub3B0aW9ucy5lYXNpbmcsZnVuY3Rpb24oKXtkLmVmZmVjdHMucmVzdG9y
ZShiLGopO2QuZWZmZWN0cy5yZW1vdmVXcmFwcGVyKGIpO2EuY2FsbGJhY2smJmEuY2FsbGJhY2su
YXBwbHkodGhpcyxhcmd1bWVudHMpfSk7Yi5xdWV1ZSgiZngiLGZ1bmN0aW9uKCl7Yi5kZXF1ZXVl
KCl9KTtiLmRlcXVldWUoKX0pfX0pKGpRdWVyeSk7Ci07LyoKLSAqIGpRdWVyeSBVSSBFZmZlY3Rz
IFNsaWRlIDEuOC4xMAotICoKLSAqIENvcHlyaWdodCAyMDExLCBBVVRIT1JTLnR4dCAoaHR0cDov
L2pxdWVyeXVpLmNvbS9hYm91dCkKLSAqIER1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBvciBH
UEwgVmVyc2lvbiAyIGxpY2Vuc2VzLgotICogaHR0cDovL2pxdWVyeS5vcmcvbGljZW5zZQotICoK
LSAqIGh0dHA6Ly9kb2NzLmpxdWVyeS5jb20vVUkvRWZmZWN0cy9TbGlkZQotICoKLSAqIERlcGVu
ZHM6Ci0gKglqcXVlcnkuZWZmZWN0cy5jb3JlLmpzCi0gKi8KLShmdW5jdGlvbihjKXtjLmVmZmVj
dHMuc2xpZGU9ZnVuY3Rpb24oZCl7cmV0dXJuIHRoaXMucXVldWUoZnVuY3Rpb24oKXt2YXIgYT1j
KHRoaXMpLGg9WyJwb3NpdGlvbiIsInRvcCIsImJvdHRvbSIsImxlZnQiLCJyaWdodCJdLGY9Yy5l
ZmZlY3RzLnNldE1vZGUoYSxkLm9wdGlvbnMubW9kZXx8InNob3ciKSxiPWQub3B0aW9ucy5kaXJl
Y3Rpb258fCJsZWZ0IjtjLmVmZmVjdHMuc2F2ZShhLGgpO2Euc2hvdygpO2MuZWZmZWN0cy5jcmVh
dGVXcmFwcGVyKGEpLmNzcyh7b3ZlcmZsb3c6ImhpZGRlbiJ9KTt2YXIgZz1iPT0idXAifHxiPT0i
ZG93biI/InRvcCI6ImxlZnQiO2I9Yj09InVwInx8Yj09ImxlZnQiPyJwb3MiOiJuZWciO3ZhciBl
PWQub3B0aW9ucy5kaXN0YW5jZXx8KGc9PSJ0b3AiP2Eub3V0ZXJIZWlnaHQoe21hcmdpbjp0cnVl
fSk6YS5vdXRlcldpZHRoKHttYXJnaW46dHJ1ZX0pKTtpZihmPT0ic2hvdyIpYS5jc3MoZyxiPT0i
cG9zIj9pc05hTihlKT8iLSIrZTotZTplKTsKLXZhciBpPXt9O2lbZ109KGY9PSJzaG93Ij9iPT0i
cG9zIj8iKz0iOiItPSI6Yj09InBvcyI/Ii09IjoiKz0iKStlO2EuYW5pbWF0ZShpLHtxdWV1ZTpm
YWxzZSxkdXJhdGlvbjpkLmR1cmF0aW9uLGVhc2luZzpkLm9wdGlvbnMuZWFzaW5nLGNvbXBsZXRl
OmZ1bmN0aW9uKCl7Zj09ImhpZGUiJiZhLmhpZGUoKTtjLmVmZmVjdHMucmVzdG9yZShhLGgpO2Mu
ZWZmZWN0cy5yZW1vdmVXcmFwcGVyKGEpO2QuY2FsbGJhY2smJmQuY2FsbGJhY2suYXBwbHkodGhp
cyxhcmd1bWVudHMpO2EuZGVxdWV1ZSgpfX0pfSl9fSkoalF1ZXJ5KTsKLTsvKgotICogalF1ZXJ5
IFVJIEVmZmVjdHMgVHJhbnNmZXIgMS44LjEwCi0gKgotICogQ29weXJpZ2h0IDIwMTEsIEFVVEhP
UlMudHh0IChodHRwOi8vanF1ZXJ5dWkuY29tL2Fib3V0KQotICogRHVhbCBsaWNlbnNlZCB1bmRl
ciB0aGUgTUlUIG9yIEdQTCBWZXJzaW9uIDIgbGljZW5zZXMuCi0gKiBodHRwOi8vanF1ZXJ5Lm9y
Zy9saWNlbnNlCi0gKgotICogaHR0cDovL2RvY3MuanF1ZXJ5LmNvbS9VSS9FZmZlY3RzL1RyYW5z
ZmVyCi0gKgotICogRGVwZW5kczoKLSAqCWpxdWVyeS5lZmZlY3RzLmNvcmUuanMKLSAqLwotKGZ1
bmN0aW9uKGUpe2UuZWZmZWN0cy50cmFuc2Zlcj1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5xdWV1
ZShmdW5jdGlvbigpe3ZhciBiPWUodGhpcyksYz1lKGEub3B0aW9ucy50byksZD1jLm9mZnNldCgp
O2M9e3RvcDpkLnRvcCxsZWZ0OmQubGVmdCxoZWlnaHQ6Yy5pbm5lckhlaWdodCgpLHdpZHRoOmMu
aW5uZXJXaWR0aCgpfTtkPWIub2Zmc2V0KCk7dmFyIGY9ZSgnPGRpdiBjbGFzcz0idWktZWZmZWN0
cy10cmFuc2ZlciI+PC9kaXY+JykuYXBwZW5kVG8oZG9jdW1lbnQuYm9keSkuYWRkQ2xhc3MoYS5v
cHRpb25zLmNsYXNzTmFtZSkuY3NzKHt0b3A6ZC50b3AsbGVmdDpkLmxlZnQsaGVpZ2h0OmIuaW5u
ZXJIZWlnaHQoKSx3aWR0aDpiLmlubmVyV2lkdGgoKSxwb3NpdGlvbjoiYWJzb2x1dGUifSkuYW5p
bWF0ZShjLGEuZHVyYXRpb24sYS5vcHRpb25zLmVhc2luZyxmdW5jdGlvbigpe2YucmVtb3ZlKCk7
YS5jYWxsYmFjayYmYS5jYWxsYmFjay5hcHBseShiWzBdLGFyZ3VtZW50cyk7Ci1iLmRlcXVldWUo
KX0pfSl9fSkoalF1ZXJ5KTsKLTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n
aXQgYS9XZWJEcml2ZXJUZXN0cy9pbXBvcnRlZC9zZWxlbml1bS9jb21tb24vc3JjL3dlYi9tb3Vz
ZVBvc2l0aW9uVHJhY2tlci5odG1sIGIvV2ViRHJpdmVyVGVzdHMvaW1wb3J0ZWQvc2VsZW5pdW0v
Y29tbW9uL3NyYy93ZWIvbW91c2VQb3NpdGlvblRyYWNrZXIuaHRtbAppbmRleCAzOWEzMWNkYTRm
NGNlZjZlMzA1OTBjYzEwZDRmNzQ0MDcxOGZkZTZmLi43YmUzMWE2N2FmYTU2Nzg5NzY0ZTRjOTM2
NDBhZGViOWUyOTlkMDQyIDEwMDY0NAotLS0gYS9XZWJEcml2ZXJUZXN0cy9pbXBvcnRlZC9zZWxl
bml1bS9jb21tb24vc3JjL3dlYi9tb3VzZVBvc2l0aW9uVHJhY2tlci5odG1sCisrKyBiL1dlYkRy
aXZlclRlc3RzL2ltcG9ydGVkL3NlbGVuaXVtL2NvbW1vbi9zcmMvd2ViL21vdXNlUG9zaXRpb25U
cmFja2VyLmh0bWwKQEAgLTgsOCArOCw4IEBACiAgICAgICB9CiAgICAgPC9zdHlsZT4KIAotICA8
c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJqcy9qcXVlcnktMS40LjQubWluLmpz
Ij48L3NjcmlwdD4KLSAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ianMvanF1
ZXJ5LXVpLTEuOC4xMC5jdXN0b20ubWluLmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCB0eXBlPSJ0
ZXh0L2phdmFzY3JpcHQiIHNyYz0ianMvanF1ZXJ5LTMuNS4xLm1pbi5qcyI+PC9zY3JpcHQ+Cisg
IDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL2pxdWVyeS11aS0xLjEyLjEu
bWluLmpzIj48L3NjcmlwdD4KICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogICAg
IGpRdWVyeShkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKXsKICAgICAgICAgJCgnI21vdXNldHJh
Y2tlcicpLm1vdXNlbW92ZShmdW5jdGlvbihlKXsKZGlmZiAtLWdpdCBhL1dlYkRyaXZlclRlc3Rz
L2ltcG9ydGVkL3NlbGVuaXVtL2NvbW1vbi9zcmMvd2ViL3NlbGVjdGFibGVJdGVtcy5odG1sIGIv
V2ViRHJpdmVyVGVzdHMvaW1wb3J0ZWQvc2VsZW5pdW0vY29tbW9uL3NyYy93ZWIvc2VsZWN0YWJs
ZUl0ZW1zLmh0bWwKaW5kZXggYTg5MTU0NGQ2NzQ3YWFmZjAwOTQwODg1MDE5N2M5NmEyMGMwYzBk
Mi4uMzdjZTQxMzk0NGVhNTU5OTkwZGNiOTI3ZjY2MGIxNWMwYmJmOGJiNSAxMDA2NDQKLS0tIGEv
V2ViRHJpdmVyVGVzdHMvaW1wb3J0ZWQvc2VsZW5pdW0vY29tbW9uL3NyYy93ZWIvc2VsZWN0YWJs
ZUl0ZW1zLmh0bWwKKysrIGIvV2ViRHJpdmVyVGVzdHMvaW1wb3J0ZWQvc2VsZW5pdW0vY29tbW9u
L3NyYy93ZWIvc2VsZWN0YWJsZUl0ZW1zLmh0bWwKQEAgLTMsOSArMyw5IEBACiA8aGVhZD4KIAk8
bWV0YSBjaGFyc2V0PSJVVEYtOCIgLz4KIAk8dGl0bGU+alF1ZXJ5IFVJIFNlbGVjdGFibGUgLSBE
ZWZhdWx0IGZ1bmN0aW9uYWxpdHk8L3RpdGxlPgotICAgICAgICA8bGluayB0eXBlPSJ0ZXh0L2Nz
cyIgaHJlZj0iY3NzL3VpLWxpZ2h0bmVzcy9qcXVlcnktdWktMS44LjEwLmN1c3RvbS5jc3MiIHJl
bD0ic3R5bGVzaGVldCIgLz4KLSAgICAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
IHNyYz0ianMvanF1ZXJ5LTEuNC40Lm1pbi5qcyI+PC9zY3JpcHQ+Ci0gICAgICAgIDxzY3JpcHQg
dHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL2pxdWVyeS11aS0xLjguMTAuY3VzdG9tLm1p
bi5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxsaW5rIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3Mv
dWktbGlnaHRuZXNzL2pxdWVyeS11aS0xLjEyLjEubWluLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiAv
PgorICAgICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJqcy9qcXVlcnkt
My41LjEubWluLmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFz
Y3JpcHQiIHNyYz0ianMvanF1ZXJ5LXVpLTEuMTIuMS5taW4uanMiPjwvc2NyaXB0PgogCQogCTxz
dHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CiAJI2ZlZWRiYWNrIHsgZm9udC1zaXplOiAxLjRlbTsgfQpk
aWZmIC0tZ2l0IGEvV2ViRHJpdmVyVGVzdHMvaW1wb3J0ZWQvc2VsZW5pdW0vaW1wb3J0ZXIuanNv
biBiL1dlYkRyaXZlclRlc3RzL2ltcG9ydGVkL3NlbGVuaXVtL2ltcG9ydGVyLmpzb24KaW5kZXgg
YjY2MmEyNTRmNzZiMTMzN2U5N2FjY2U1YjYwYjljOTdlNGE2ZDFkYS4uZDk4NWM4ZWRhYzc1YWY3
YWQ3YzRhZmQ2MzEyZDk5Nzc2N2Y3MTZjNyAxMDA2NDQKLS0tIGEvV2ViRHJpdmVyVGVzdHMvaW1w
b3J0ZWQvc2VsZW5pdW0vaW1wb3J0ZXIuanNvbgorKysgYi9XZWJEcml2ZXJUZXN0cy9pbXBvcnRl
ZC9zZWxlbml1bS9pbXBvcnRlci5qc29uCkBAIC0xLDYgKzEsNiBAQAogewogICAgICJyZXBvc2l0
b3J5IjogImh0dHBzOi8vZ2l0aHViLmNvbS9TZWxlbml1bUhRL3NlbGVuaXVtLmdpdCIsCi0gICAg
InJldmlzaW9uIjogIjBkN2U1N2E3MDc5YzBhNDgyODZlOGU3NDFhMDEyMjkxNmMwOGNhMTYiLAor
ICAgICJyZXZpc2lvbiI6ICJkNGY5ZmUyMTNkZDZlNWIxMGI4OWJlMzYwYmU2MzU3NDdlZDNlMTM4
IiwKICAgICAicGF0aHNfdG9faW1wb3J0IjogWwogICAgICAgICAiY29tbW9uIiwKICAgICAgICAg
InB5L2NvbmZ0ZXN0LnB5IiwKQEAgLTksMTEgKzksMjQgQEAKICAgICAgICAgInB5L3Rlc3QiCiAg
ICAgXSwKICAgICAicGF0aHNfdG9fc2tpcCI6IFsKKyAgICAgICAgImNvbW1vbi9CVUlMRC5iYXpl
bCIsCisgICAgICAgICJjb21tb24vZGVmcy5iemwiLAorICAgICAgICAiY29tbW9uL2RldnRvb2xz
IiwKKyAgICAgICAgImNvbW1vbi9wcml2YXRlIiwKKyAgICAgICAgImNvbW1vbi9zcmMvd2ViL0JV
SUxELmJhemVsIiwKKyAgICAgICAgImNvbW1vbi9zcmMvd2ViL2RldlRvb2xzQ29uc29sZVRlc3Qu
aHRtbCIsCisgICAgICAgICJjb21tb24vc3JjL3dlYi9kZXZUb29sc1Byb2ZpbGVyVGVzdC5odG1s
IiwKKyAgICAgICAgImNvbW1vbi9zcmMvd2ViL2RldlRvb2xzU2VjdXJpdHlUZXN0IiwKKyAgICAg
ICAgImNvbW1vbi9zcmMvd2ViL2VsZW1lbnRPYnNjdXJlZEJ5SW52aXNpYmxlRWxlbWVudC5odG1s
IiwKICAgICAgICAgImNvbW1vbi9zcmMvd2ViL1BhZ2UuYXNweCIsCiAgICAgICAgICJjb21tb24v
c3JjL3dlYi9QYWdlLmFzcHguY3MiLAorICAgICAgICAiY29tbW9uL3NyYy93ZWIvcG9zdEZvcm0u
aHRtbCIsCisgICAgICAgICJjb21tb24vc3JjL3dlYi9yYyIsCiAgICAgICAgICJjb21tb24vc3Jj
L3dlYi9SZWRpcmVjdC5hc3B4IiwKICAgICAgICAgImNvbW1vbi9zcmMvd2ViL1JlZGlyZWN0LmFz
cHguY3MiLAogICAgICAgICAiY29tbW9uL3NyYy93ZWIvU2V0dGluZ3MuU3R5bGVDb3AiLAorICAg
ICAgICAiY29tbW9uL3NyYy93ZWIvdXBsb2FkX2hpZGRlbi5odG1sIiwKKyAgICAgICAgImNvbW1v
bi9zcmMvd2ViL3VwbG9hZF9tdWx0aXBsZS5odG1sIiwKICAgICAgICAgInB5L3NlbGVuaXVtL3dl
YmRyaXZlci9hbmRyb2lkIiwKICAgICAgICAgInB5L3NlbGVuaXVtL3dlYmRyaXZlci9ibGFja2Jl
cnJ5IiwKICAgICAgICAgInB5L3NlbGVuaXVtL3dlYmRyaXZlci9jaHJvbWUiLApAQCAtMjMsNiAr
MzYsNyBAQAogICAgICAgICAicHkvc2VsZW5pdW0vd2ViZHJpdmVyL2llIiwKICAgICAgICAgInB5
L3NlbGVuaXVtL3dlYmRyaXZlci9vcGVyYSIsCiAgICAgICAgICJweS9zZWxlbml1bS93ZWJkcml2
ZXIvcGhhbnRvbWpzIiwKKyAgICAgICAgInB5L3Rlc3QvcnVubmVyIiwKICAgICAgICAgInB5L3Rl
c3QvdW5pdCIsCiAgICAgICAgICJweS90ZXN0L3NlbGVuaXVtL3dlYmRyaXZlci9jaHJvbWUiLAog
ICAgICAgICAicHkvdGVzdC9zZWxlbml1bS93ZWJkcml2ZXIvZmlyZWZveCIsCmRpZmYgLS1naXQg
YS9XZWJEcml2ZXJUZXN0cy9pbXBvcnRlZC9zZWxlbml1bS9weS9jb25mdGVzdC5weSBiL1dlYkRy
aXZlclRlc3RzL2ltcG9ydGVkL3NlbGVuaXVtL3B5L2NvbmZ0ZXN0LnB5CmluZGV4IDUwOTAzMTA0
ZDA5N2RlZWU4MGFjMDUxOTQ4YzUzNzg3MzMyZmQwOTkuLjZkNjRmM2ZmZTdjMGUwMzhhZmMyNzc3
ZTRjMWRiN2IwYzc4YjQxNWUgMTAwNjQ0Ci0tLSBhL1dlYkRyaXZlclRlc3RzL2ltcG9ydGVkL3Nl
bGVuaXVtL3B5L2NvbmZ0ZXN0LnB5CisrKyBiL1dlYkRyaXZlclRlc3RzL2ltcG9ydGVkL3NlbGVu
aXVtL3B5L2NvbmZ0ZXN0LnB5CkBAIC00NSw2ICs0NSw3IEBAIGRyaXZlcnMgPSAoCiAgICAgJ1Nh
ZmFyaScsCiAgICAgJ1dlYktpdEdUSycsCiAgICAgJ0Nocm9taXVtRWRnZScsCisgICAgJ1dQRVdl
YktpdCcsCiApCiAKIApAQCAtMTIwLDcgKzEyMSw4IEBAIGRlZiBkcml2ZXIocmVxdWVzdCk6CiAg
ICAgICAgICAgICBvcHRpb25zID0gZ2V0X29wdGlvbnMoZHJpdmVyX2NsYXNzLCByZXF1ZXN0LmNv
bmZpZykKICAgICAgICAgaWYgZHJpdmVyX2NsYXNzID09ICdDaHJvbWl1bUVkZ2UnOgogICAgICAg
ICAgICAgb3B0aW9ucyA9IGdldF9vcHRpb25zKGRyaXZlcl9jbGFzcywgcmVxdWVzdC5jb25maWcp
Ci0gICAgICAgICAgICBrd2FyZ3MudXBkYXRlKHsnaXNfbGVnYWN5JzogRmFsc2V9KQorICAgICAg
ICBpZiBkcml2ZXJfY2xhc3MgPT0gJ1dQRVdlYktpdCc6CisgICAgICAgICAgICBvcHRpb25zID0g
Z2V0X29wdGlvbnMoZHJpdmVyX2NsYXNzLCByZXF1ZXN0LmNvbmZpZykKICAgICAgICAgaWYgZHJp
dmVyX3BhdGggaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBrd2FyZ3NbJ2V4ZWN1dGFibGVfcGF0
aCddID0gZHJpdmVyX3BhdGgKICAgICAgICAgaWYgb3B0aW9ucyBpcyBub3QgTm9uZToKQEAgLTEz
NiwxMCArMTM4LDEyIEBAIGRlZiBnZXRfb3B0aW9ucyhkcml2ZXJfY2xhc3MsIGNvbmZpZyk6CiAg
ICAgYnJvd3Nlcl9hcmdzID0gY29uZmlnLm9wdGlvbi5hcmdzCiAgICAgb3B0aW9ucyA9IE5vbmUK
IAorICAgIGlmIGRyaXZlcl9jbGFzcyA9PSAnQ2hyb21pdW1FZGdlJzoKKyAgICAgICAgb3B0aW9u
cyA9IGdldGF0dHIod2ViZHJpdmVyLCAnRWRnZU9wdGlvbnMnKSgpCisgICAgICAgIG9wdGlvbnMu
dXNlX2Nocm9taXVtID0gVHJ1ZQorCiAgICAgaWYgYnJvd3Nlcl9wYXRoIG9yIGJyb3dzZXJfYXJn
czoKLSAgICAgICAgaWYgZHJpdmVyX2NsYXNzID09ICdDaHJvbWl1bUVkZ2UnOgotICAgICAgICAg
ICAgb3B0aW9ucyA9IGdldGF0dHIod2ViZHJpdmVyLCAnRWRnZU9wdGlvbnMnKShGYWxzZSkKLSAg
ICAgICAgZWxzZToKKyAgICAgICAgaWYgbm90IG9wdGlvbnM6CiAgICAgICAgICAgICBvcHRpb25z
ID0gZ2V0YXR0cih3ZWJkcml2ZXIsICd7fU9wdGlvbnMnLmZvcm1hdChkcml2ZXJfY2xhc3MpKSgp
CiAgICAgICAgIGlmIGRyaXZlcl9jbGFzcyA9PSAnV2ViS2l0R1RLJzoKICAgICAgICAgICAgIG9w
dGlvbnMub3ZlcmxheV9zY3JvbGxiYXJzX2VuYWJsZWQgPSBGYWxzZQpAQCAtMTkwLDcgKzE5NCw3
IEBAIGRlZiBzZXJ2ZXIocmVxdWVzdCk6CiAgICAgX2hvc3QgPSAnbG9jYWxob3N0JwogICAgIF9w
b3J0ID0gNDQ0NAogICAgIF9wYXRoID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShvcy5w
YXRoLmRpcm5hbWUob3MucGF0aC5hYnNwYXRoKF9fZmlsZV9fKSkpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICdiYXplbC1iaW4vamF2YS9zZXJ2ZXIvc3JjL29yZy9vcGVucWEvc2VsZW5pdW0v
Z3JpZC9zZWxlbml1bV9zZXJ2ZXJfZGVwbG95LmphcicpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgJ2phdmEvc2VydmVyL3NyYy9vcmcvb3BlbnFhL3NlbGVuaXVtL2dyaWQvc2VsZW5pdW1fc2Vy
dmVyX2RlcGxveS5qYXInKQogCiAgICAgZGVmIHdhaXRfZm9yX3NlcnZlcih1cmwsIHRpbWVvdXQp
OgogICAgICAgICBzdGFydCA9IHRpbWUudGltZSgpCmRpZmYgLS1naXQgYS9XZWJEcml2ZXJUZXN0
cy9pbXBvcnRlZC9zZWxlbml1bS9weS9zZWxlbml1bS9fX2luaXRfXy5weSBiL1dlYkRyaXZlclRl
c3RzL2ltcG9ydGVkL3NlbGVuaXVtL3B5L3NlbGVuaXVtL19faW5pdF9fLnB5CmluZGV4IDU4MzI4
Y2M1OGQ4Y2RhZjMzZDM5NzE1ZjUwYmU1ZTk1ZmYxNmQyZTcuLjRhMDQ5Yjg1OTEzMmY0ZTIwZTA3
MDNmODFjZWNmNmM5ZWYwOTkxZWUgMTAwNjQ0Ci0tLSBhL1dlYkRyaXZlclRlc3RzL2ltcG9ydGVk
L3NlbGVuaXVtL3B5L3NlbGVuaXVtL19faW5pdF9fLnB5CisrKyBiL1dlYkRyaXZlclRlc3RzL2lt
cG9ydGVkL3NlbGVuaXVtL3B5L3NlbGVuaXVtL19faW5pdF9fLnB5CkBAIC0xNiw0ICsxNiw0IEBA
CiAjIHVuZGVyIHRoZSBMaWNlbnNlLgogCiAKLV9fdmVyc2lvbl9fID0gIjQuMC4wYTMiCitfX3Zl
cnNpb25fXyA9ICI0LjAuMGE2IgpkaWZmIC0tZ2l0IGEvV2ViRHJpdmVyVGVzdHMvaW1wb3J0ZWQv
c2VsZW5pdW0vcHkvc2VsZW5pdW0vd2ViZHJpdmVyL19faW5pdF9fLnB5IGIvV2ViRHJpdmVyVGVz
dHMvaW1wb3J0ZWQvc2VsZW5pdW0vcHkvc2VsZW5pdW0vd2ViZHJpdmVyL19faW5pdF9fLnB5Cmlu
ZGV4IGZkMmQ1OGZiZWNmODlmMGFhYjIzYjY2NTBkNjU0Njc3NTU2N2IzYTkuLjliOTNkY2MyODQ3
YzdlNWQ0MjViN2M0ZmVhMzgwMWFmYWI1ZjRjZmYgMTAwNjQ0Ci0tLSBhL1dlYkRyaXZlclRlc3Rz
L2ltcG9ydGVkL3NlbGVuaXVtL3B5L3NlbGVuaXVtL3dlYmRyaXZlci9fX2luaXRfXy5weQorKysg
Yi9XZWJEcml2ZXJUZXN0cy9pbXBvcnRlZC9zZWxlbml1bS9weS9zZWxlbml1bS93ZWJkcml2ZXIv
X19pbml0X18ucHkKQEAgLTI2LDQgKzI2LDQgQEAgZnJvbSAuY29tbW9uLmFjdGlvbl9jaGFpbnMg
aW1wb3J0IEFjdGlvbkNoYWlucyAgIyBub3FhCiBmcm9tIC5jb21tb24udG91Y2hfYWN0aW9ucyBp
bXBvcnQgVG91Y2hBY3Rpb25zICAjIG5vcWEKIGZyb20gLmNvbW1vbi5wcm94eSBpbXBvcnQgUHJv
eHkgICMgbm9xYQogCi1fX3ZlcnNpb25fXyA9ICc0LjAuMGEzJworX192ZXJzaW9uX18gPSAnNC4w
LjBhNicKZGlmZiAtLWdpdCBhL1dlYkRyaXZlclRlc3RzL2ltcG9ydGVkL3NlbGVuaXVtL3B5L3Nl
bGVuaXVtL3dlYmRyaXZlci9jb21tb24vYWN0aW9uX2NoYWlucy5weSBiL1dlYkRyaXZlclRlc3Rz
L2ltcG9ydGVkL3NlbGVuaXVtL3B5L3NlbGVuaXVtL3dlYmRyaXZlci9jb21tb24vYWN0aW9uX2No
YWlucy5weQppbmRleCA3MDQxMjRiZDE2OGVkYTM1M2E5Njc0YzBlZjgxZDdiNWVlYTllNGQ3Li5k
NzNjZGY0ODE0MzAwMzVjZDI3OTdlZWM2OWQ4Yjk0MDQ5ODMwZGRiIDEwMDY0NAotLS0gYS9XZWJE
cml2ZXJUZXN0cy9pbXBvcnRlZC9zZWxlbml1bS9weS9zZWxlbml1bS93ZWJkcml2ZXIvY29tbW9u
L2FjdGlvbl9jaGFpbnMucHkKKysrIGIvV2ViRHJpdmVyVGVzdHMvaW1wb3J0ZWQvc2VsZW5pdW0v
cHkvc2VsZW5pdW0vd2ViZHJpdmVyL2NvbW1vbi9hY3Rpb25fY2hhaW5zLnB5CkBAIC00MSwxNSAr
NDEsMTUgQEAgY2xhc3MgQWN0aW9uQ2hhaW5zKG9iamVjdCk6CiAKICAgICBBY3Rpb25DaGFpbnMg
Y2FuIGJlIHVzZWQgaW4gYSBjaGFpbiBwYXR0ZXJuOjoKIAotICAgICAgICBtZW51ID0gZHJpdmVy
LmZpbmRfZWxlbWVudF9ieV9jc3Nfc2VsZWN0b3IoIi5uYXYiKQotICAgICAgICBoaWRkZW5fc3Vi
bWVudSA9IGRyaXZlci5maW5kX2VsZW1lbnRfYnlfY3NzX3NlbGVjdG9yKCIubmF2ICNzdWJtZW51
MSIpCisgICAgICAgIG1lbnUgPSBkcml2ZXIuZmluZF9lbGVtZW50KEJ5LkNTU19TRUxFQ1RPUiwg
Ii5uYXYiKQorICAgICAgICBoaWRkZW5fc3VibWVudSA9IGRyaXZlci5maW5kX2VsZW1lbnQoQnku
Q1NTX1NFTEVDVE9SLCAiLm5hdiAjc3VibWVudTEiKQogCiAgICAgICAgIEFjdGlvbkNoYWlucyhk
cml2ZXIpLm1vdmVfdG9fZWxlbWVudChtZW51KS5jbGljayhoaWRkZW5fc3VibWVudSkucGVyZm9y
bSgpCiAKICAgICBPciBhY3Rpb25zIGNhbiBiZSBxdWV1ZWQgdXAgb25lIGJ5IG9uZSwgdGhlbiBw
ZXJmb3JtZWQuOjoKIAotICAgICAgICBtZW51ID0gZHJpdmVyLmZpbmRfZWxlbWVudF9ieV9jc3Nf
c2VsZWN0b3IoIi5uYXYiKQotICAgICAgICBoaWRkZW5fc3VibWVudSA9IGRyaXZlci5maW5kX2Vs
ZW1lbnRfYnlfY3NzX3NlbGVjdG9yKCIubmF2ICNzdWJtZW51MSIpCisgICAgICAgIG1lbnUgPSBk
cml2ZXIuZmluZF9lbGVtZW50KEJ5LkNTU19TRUxFQ1RPUiwgIi5uYXYiKQorICAgICAgICBoaWRk
ZW5fc3VibWVudSA9IGRyaXZlci5maW5kX2VsZW1lbnQoQnkuQ1NTX1NFTEVDVE9SLCAiLm5hdiAj
c3VibWVudTEiKQogCiAgICAgICAgIGFjdGlvbnMgPSBBY3Rpb25DaGFpbnMoZHJpdmVyKQogICAg
ICAgICBhY3Rpb25zLm1vdmVfdG9fZWxlbWVudChtZW51KQpAQCAtMjkwLDcgKzI5MCw5IEBAIGNs
YXNzIEFjdGlvbkNoYWlucyhvYmplY3QpOgogICAgICAgICAgLSB5b2Zmc2V0OiBZIG9mZnNldCB0
byBtb3ZlIHRvLgogICAgICAgICAiIiIKICAgICAgICAgaWYgc2VsZi5fZHJpdmVyLnczYzoKLSAg
ICAgICAgICAgIHNlbGYudzNjX2FjdGlvbnMucG9pbnRlcl9hY3Rpb24ubW92ZV90byh0b19lbGVt
ZW50LCB4b2Zmc2V0LCB5b2Zmc2V0KQorICAgICAgICAgICAgc2VsZi53M2NfYWN0aW9ucy5wb2lu
dGVyX2FjdGlvbi5tb3ZlX3RvKHRvX2VsZW1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50KHhvZmZzZXQpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCh5b2Zmc2V0KSkKICAgICAg
ICAgICAgIHNlbGYudzNjX2FjdGlvbnMua2V5X2FjdGlvbi5wYXVzZSgpCiAgICAgICAgIGVsc2U6
CiAgICAgICAgICAgICBzZWxmLl9hY3Rpb25zLmFwcGVuZCgKZGlmZiAtLWdpdCBhL1dlYkRyaXZl
clRlc3RzL2ltcG9ydGVkL3NlbGVuaXVtL3B5L3NlbGVuaXVtL3dlYmRyaXZlci9jb21tb24vYWN0
aW9ucy9hY3Rpb25fYnVpbGRlci5weSBiL1dlYkRyaXZlclRlc3RzL2ltcG9ydGVkL3NlbGVuaXVt
L3B5L3NlbGVuaXVtL3dlYmRyaXZlci9jb21tb24vYWN0aW9ucy9hY3Rpb25fYnVpbGRlci5weQpp
bmRleCBlYjBlYzg0YmFjMTBkMjRiNjliZTMzZDc0NTljM2M2M2ExMzNiNjE2Li4zMGRjZGI1M2E2
NmFiOTVlODQ5MjY5NmJmMGE1NmE2OWQ5NDliODE1IDEwMDY0NAotLS0gYS9XZWJEcml2ZXJUZXN0
cy9pbXBvcnRlZC9zZWxlbml1bS9weS9zZWxlbml1bS93ZWJkcml2ZXIvY29tbW9uL2FjdGlvbnMv
YWN0aW9uX2J1aWxkZXIucHkKKysrIGIvV2ViRHJpdmVyVGVzdHMvaW1wb3J0ZWQvc2VsZW5pdW0v
cHkvc2VsZW5pdW0vd2ViZHJpdmVyL2NvbW1vbi9hY3Rpb25zL2FjdGlvbl9idWlsZGVyLnB5CkBA
IC0zOCw3ICszOCw3IEBAIGNsYXNzIEFjdGlvbkJ1aWxkZXIob2JqZWN0KToKICAgICAgICAgdHJ5
OgogICAgICAgICAgICAgaWR4ID0gc2VsZi5kZXZpY2VzLmluZGV4KG5hbWUpCiAgICAgICAgICAg
ICByZXR1cm4gc2VsZi5kZXZpY2VzW2lkeF0KLSAgICAgICAgZXhjZXB0OgorICAgICAgICBleGNl
cHQgRXhjZXB0aW9uOgogICAgICAgICAgICAgcGFzcwogCiAgICAgQHByb3BlcnR5CmRpZmYgLS1n
aXQgYS9XZWJEcml2ZXJUZXN0cy9pbXBvcnRlZC9zZWxlbml1bS9weS9zZWxlbml1bS93ZWJkcml2
ZXIvY29tbW9uL2FjdGlvbnMvcG9pbnRlcl9hY3Rpb25zLnB5IGIvV2ViRHJpdmVyVGVzdHMvaW1w
b3J0ZWQvc2VsZW5pdW0vcHkvc2VsZW5pdW0vd2ViZHJpdmVyL2NvbW1vbi9hY3Rpb25zL3BvaW50
ZXJfYWN0aW9ucy5weQppbmRleCA3ZDJmZGM3MzQzYmUxZTQ5YTU2OGVhMDAzODRhOGVjNGFmNGM4
NDI5Li5jYzYwMzNkOWMxZTkzYTVmNmJkODJmOTc5NzBlMmU2NzI4OTY1MWY5IDEwMDY0NAotLS0g
YS9XZWJEcml2ZXJUZXN0cy9pbXBvcnRlZC9zZWxlbml1bS9weS9zZWxlbml1bS93ZWJkcml2ZXIv
Y29tbW9uL2FjdGlvbnMvcG9pbnRlcl9hY3Rpb25zLnB5CisrKyBiL1dlYkRyaXZlclRlc3RzL2lt
cG9ydGVkL3NlbGVuaXVtL3B5L3NlbGVuaXVtL3dlYmRyaXZlci9jb21tb24vYWN0aW9ucy9wb2lu
dGVyX2FjdGlvbnMucHkKQEAgLTIxLDcgKzIxLDYgQEAgZnJvbSAubW91c2VfYnV0dG9uIGltcG9y
dCBNb3VzZUJ1dHRvbgogZnJvbSAucG9pbnRlcl9pbnB1dCBpbXBvcnQgUG9pbnRlcklucHV0CiAK
IGZyb20gc2VsZW5pdW0ud2ViZHJpdmVyLnJlbW90ZS53ZWJlbGVtZW50IGltcG9ydCBXZWJFbGVt
ZW50Ci1mcm9tIHNlbGVuaXVtLndlYmRyaXZlci5zdXBwb3J0LmV2ZW50X2ZpcmluZ193ZWJkcml2
ZXIgaW1wb3J0IEV2ZW50RmlyaW5nV2ViRWxlbWVudAogCiAKIGNsYXNzIFBvaW50ZXJBY3Rpb25z
KEludGVyYWN0aW9uKToKQEAgLTM5LDcgKzM4LDcgQEAgY2xhc3MgUG9pbnRlckFjdGlvbnMoSW50
ZXJhY3Rpb24pOgogICAgICAgICBzZWxmLl9idXR0b25fYWN0aW9uKCJjcmVhdGVfcG9pbnRlcl91
cCIsIGJ1dHRvbj1idXR0b24pCiAKICAgICBkZWYgbW92ZV90byhzZWxmLCBlbGVtZW50LCB4PU5v
bmUsIHk9Tm9uZSk6Ci0gICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGVsZW1lbnQsIChXZWJFbGVt
ZW50LCBFdmVudEZpcmluZ1dlYkVsZW1lbnQpKToKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uo
ZWxlbWVudCwgV2ViRWxlbWVudCk6CiAgICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcigi
bW92ZV90byByZXF1aXJlcyBhIFdlYkVsZW1lbnQiKQogICAgICAgICBpZiB4IGlzIG5vdCBOb25l
IG9yIHkgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBlbF9yZWN0ID0gZWxlbWVudC5yZWN0CmRp
ZmYgLS1naXQgYS9XZWJEcml2ZXJUZXN0cy9pbXBvcnRlZC9zZWxlbml1bS9weS9zZWxlbml1bS93
ZWJkcml2ZXIvY29tbW9uL2FjdGlvbnMvcG9pbnRlcl9pbnB1dC5weSBiL1dlYkRyaXZlclRlc3Rz
L2ltcG9ydGVkL3NlbGVuaXVtL3B5L3NlbGVuaXVtL3dlYmRyaXZlci9jb21tb24vYWN0aW9ucy9w
b2ludGVyX2lucHV0LnB5CmluZGV4IDIyMTZhNWEyMTAyYzJjZTNjMWQ2NGE1OGU5YmQ3ZWM0NTdl
OGVkMGQuLjVjYTc0YWI0YTFhYWM0MmNiNmVmYTBiYTcwNGE2OGFmOWI1NjQwOTMgMTAwNjQ0Ci0t
LSBhL1dlYkRyaXZlclRlc3RzL2ltcG9ydGVkL3NlbGVuaXVtL3B5L3NlbGVuaXVtL3dlYmRyaXZl
ci9jb21tb24vYWN0aW9ucy9wb2ludGVyX2lucHV0LnB5CisrKyBiL1dlYkRyaXZlclRlc3RzL2lt
cG9ydGVkL3NlbGVuaXVtL3B5L3NlbGVuaXVtL3dlYmRyaXZlci9jb21tb24vYWN0aW9ucy9wb2lu
dGVyX2lucHV0LnB5CkBAIC0xOSw3ICsxOSw2IEBAIGZyb20gLmludGVyYWN0aW9uIGltcG9ydCBQ
T0lOVEVSLCBQT0lOVEVSX0tJTkRTCiAKIGZyb20gc2VsZW5pdW0uY29tbW9uLmV4Y2VwdGlvbnMg
aW1wb3J0IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbgogZnJvbSBzZWxlbml1bS53ZWJkcml2ZXIu
cmVtb3RlLndlYmVsZW1lbnQgaW1wb3J0IFdlYkVsZW1lbnQKLWZyb20gc2VsZW5pdW0ud2ViZHJp
dmVyLnN1cHBvcnQuZXZlbnRfZmlyaW5nX3dlYmRyaXZlciBpbXBvcnQgRXZlbnRGaXJpbmdXZWJF
bGVtZW50CiAKIAogY2xhc3MgUG9pbnRlcklucHV0KElucHV0RGV2aWNlKToKQEAgLTI4LDcgKzI3
LDcgQEAgY2xhc3MgUG9pbnRlcklucHV0KElucHV0RGV2aWNlKToKIAogICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBraW5kLCBuYW1lKToKICAgICAgICAgc3VwZXIoUG9pbnRlcklucHV0LCBzZWxmKS5f
X2luaXRfXygpCi0gICAgICAgIGlmIChraW5kIG5vdCBpbiBQT0lOVEVSX0tJTkRTKToKKyAgICAg
ICAgaWYga2luZCBub3QgaW4gUE9JTlRFUl9LSU5EUzoKICAgICAgICAgICAgIHJhaXNlIEludmFs
aWRBcmd1bWVudEV4Y2VwdGlvbigiSW52YWxpZCBQb2ludGVySW5wdXQga2luZCAnJXMnIiAlIGtp
bmQpCiAgICAgICAgIHNlbGYudHlwZSA9IFBPSU5URVIKICAgICAgICAgc2VsZi5raW5kID0ga2lu
ZApAQCAtMzgsNyArMzcsNyBAQCBjbGFzcyBQb2ludGVySW5wdXQoSW5wdXREZXZpY2UpOgogICAg
ICAgICBhY3Rpb24gPSBkaWN0KHR5cGU9InBvaW50ZXJNb3ZlIiwgZHVyYXRpb249ZHVyYXRpb24p
CiAgICAgICAgIGFjdGlvblsieCJdID0geAogICAgICAgICBhY3Rpb25bInkiXSA9IHkKLSAgICAg
ICAgaWYgaXNpbnN0YW5jZShvcmlnaW4sIChXZWJFbGVtZW50LCBFdmVudEZpcmluZ1dlYkVsZW1l
bnQpKToKKyAgICAgICAgaWYgaXNpbnN0YW5jZShvcmlnaW4sIFdlYkVsZW1lbnQpOgogICAgICAg
ICAgICAgYWN0aW9uWyJvcmlnaW4iXSA9IHsiZWxlbWVudC02MDY2LTExZTQtYTUyZS00ZjczNTQ2
NmNlY2YiOiBvcmlnaW4uaWR9CiAgICAgICAgIGVsaWYgb3JpZ2luIGlzIG5vdCBOb25lOgogICAg
ICAgICAgICAgYWN0aW9uWyJvcmlnaW4iXSA9IG9yaWdpbgpkaWZmIC0tZ2l0IGEvV2ViRHJpdmVy
VGVzdHMvaW1wb3J0ZWQvc2VsZW5pdW0vcHkvc2VsZW5pdW0vd2ViZHJpdmVyL2NvbW1vbi9kZXNp
cmVkX2NhcGFiaWxpdGllcy5weSBiL1dlYkRyaXZlclRlc3RzL2ltcG9ydGVkL3NlbGVuaXVtL3B5
L3NlbGVuaXVtL3dlYmRyaXZlci9jb21tb24vZGVzaXJlZF9jYXBhYmlsaXRpZXMucHkKaW5kZXgg
NzRjZDBjMDY3YzA5YjRhMTUwZjQ3N2NmYWMxNDA2NGIwYWZhYzI2Mi4uYzNhNjE3MWU0ZmQ5N2Nk
MTRmZDhmY2VmODUzZDk1NGFkZDkxZWNjMSAxMDA2NDQKLS0tIGEvV2ViRHJpdmVyVGVzdHMvaW1w
b3J0ZWQvc2VsZW5pdW0vcHkvc2VsZW5pdW0vd2ViZHJpdmVyL2NvbW1vbi9kZXNpcmVkX2NhcGFi
aWxpdGllcy5weQorKysgYi9XZWJEcml2ZXJUZXN0cy9pbXBvcnRlZC9zZWxlbml1bS9weS9zZWxl
bml1bS93ZWJkcml2ZXIvY29tbW9uL2Rlc2lyZWRfY2FwYWJpbGl0aWVzLnB5CkBAIC0xMDcsMTkg
KzEwNyw2IEBAIGNsYXNzIERlc2lyZWRDYXBhYmlsaXRpZXMob2JqZWN0KToKICAgICAgICAgInBs
YXRmb3JtIjogIk1BQyIsCiAgICAgfQogCi0gICAgQU5EUk9JRCA9IHsKLSAgICAgICAgImJyb3dz
ZXJOYW1lIjogImFuZHJvaWQiLAotICAgICAgICAidmVyc2lvbiI6ICIiLAotICAgICAgICAicGxh
dGZvcm0iOiAiQU5EUk9JRCIsCi0gICAgfQotCi0gICAgUEhBTlRPTUpTID0gewotICAgICAgICAi
YnJvd3Nlck5hbWUiOiAicGhhbnRvbWpzIiwKLSAgICAgICAgInZlcnNpb24iOiAiIiwKLSAgICAg
ICAgInBsYXRmb3JtIjogIkFOWSIsCi0gICAgICAgICJqYXZhc2NyaXB0RW5hYmxlZCI6IFRydWUs
Ci0gICAgfQotCiAgICAgV0VCS0lUR1RLID0gewogICAgICAgICAiYnJvd3Nlck5hbWUiOiAiTWlu
aUJyb3dzZXIiLAogICAgICAgICAidmVyc2lvbiI6ICIiLApkaWZmIC0tZ2l0IGEvV2ViRHJpdmVy
VGVzdHMvaW1wb3J0ZWQvc2VsZW5pdW0vcHkvc2VsZW5pdW0vd2ViZHJpdmVyL2NvbW1vbi9odG1s
NS9hcHBsaWNhdGlvbl9jYWNoZS5weSBiL1dlYkRyaXZlclRlc3RzL2ltcG9ydGVkL3NlbGVuaXVt
L3B5L3NlbGVuaXVtL3dlYmRyaXZlci9jb21tb24vaHRtbDUvYXBwbGljYXRpb25fY2FjaGUucHkK
aW5kZXggNzQ4NzI3NDE0ZWYwYmRmMTU3OTMwYzJjM2I2NTFlODJiNzYyY2VjMS4uNTIwZDRiMzQ5
ZGM0ODdiODhlNzA4YmRhNDQ0MTM5NjUzMTlkMDU0YiAxMDA2NDQKLS0tIGEvV2ViRHJpdmVyVGVz
dHMvaW1wb3J0ZWQvc2VsZW5pdW0vcHkvc2VsZW5pdW0vd2ViZHJpdmVyL2NvbW1vbi9odG1sNS9h
cHBsaWNhdGlvbl9jYWNoZS5weQorKysgYi9XZWJEcml2ZXJUZXN0cy9pbXBvcnRlZC9zZWxlbml1
bS9weS9zZWxlbml1bS93ZWJkcml2ZXIvY29tbW9uL2h0bWw1L2FwcGxpY2F0aW9uX2NhY2hlLnB5
CkBAIC0xOSw2ICsxOSw5IEBACiBUaGUgQXBwbGljYXRpb25DYWNoZSBpbXBsZW1lbnRhdGlvbi4K
ICIiIgogCisKK2ltcG9ydCB3YXJuaW5ncworCiBmcm9tIHNlbGVuaXVtLndlYmRyaXZlci5yZW1v
dGUuY29tbWFuZCBpbXBvcnQgQ29tbWFuZAogCiAKQEAgLTM4LDYgKzQxLDggQEAgY2xhc3MgQXBw
bGljYXRpb25DYWNoZShvYmplY3QpOgogICAgICAgICA6QXJnczoKICAgICAgICAgIC0gZHJpdmVy
OiBUaGUgV2ViRHJpdmVyIGluc3RhbmNlIHdoaWNoIHBlcmZvcm1zIHVzZXIgYWN0aW9ucy4KICAg
ICAgICAgIiIiCisgICAgICAgIHdhcm5pbmdzLndhcm4oIkFwcGxpY2F0aW9uIENhY2hlIGlzIGJl
aW5nIHJlbW92ZWQgZnJvbSBhbGwgbWFqb3IgYnJvd3NlcnMuIFRoaXMgZmVhdHVyZSB3aWxsIGJl
IHJlbW92ZWQgaW4gZnV0dXJlIHZlcnNpb25zIiwKKyAgICAgICAgICAgICAgICAgICAgICBEZXBy
ZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKICAgICAgICAgc2VsZi5kcml2ZXIgPSBkcml2
ZXIKIAogICAgIEBwcm9wZXJ0eQpkaWZmIC0tZ2l0IGEvV2ViRHJpdmVyVGVzdHMvaW1wb3J0ZWQv
c2VsZW5pdW0vcHkvc2VsZW5pdW0vd2ViZHJpdmVyL2NvbW1vbi9rZXlzLnB5IGIvV2ViRHJpdmVy
VGVzdHMvaW1wb3J0ZWQvc2VsZW5pdW0vcHkvc2VsZW5pdW0vd2ViZHJpdmVyL2NvbW1vbi9rZXlz
LnB5CmluZGV4IGNkM2JiNzZjN2ExODJhYWRjMjFkNWI4ZTJiZmVlZWYwNzQwNmIwZWQuLjc2NjMw
YmIzY2VkYThlNjIwODJiZjI4MGQ5YmJjMWE4MGUyNTNkN2MgMTAwNjQ0Ci0tLSBhL1dlYkRyaXZl
clRlc3RzL2ltcG9ydGVkL3NlbGVuaXVtL3B5L3NlbGVuaXVtL3dlYmRyaXZlci9jb21tb24va2V5
cy5weQorKysgYi9XZWJEcml2ZXJUZXN0cy9pbXBvcnRlZC9zZWxlbml1bS9weS9zZWxlbml1bS93
ZWJkcml2ZXIvY29tbW9uL2tleXMucHkKQEAgLTE5LDc4ICsxOSw3NiBAQAogVGhlIEtleXMgaW1w
bGVtZW50YXRpb24uCiAiIiIKIAotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB1bmljb2RlX2xpdGVy
YWxzCi0KIAogY2xhc3MgS2V5cyhvYmplY3QpOgogICAgICIiIgogICAgIFNldCBvZiBzcGVjaWFs
IGtleXMgY29kZXMuCiAgICAgIiIiCiAKLSAgICBOVUxMID0gJ1x1ZTAwMCcKLSAgICBDQU5DRUwg
PSAnXHVlMDAxJyAgIyBeYnJlYWsKLSAgICBIRUxQID0gJ1x1ZTAwMicKLSAgICBCQUNLU1BBQ0Ug
PSAnXHVlMDAzJworICAgIE5VTEwgPSB1J1x1ZTAwMCcKKyAgICBDQU5DRUwgPSB1J1x1ZTAwMScg
ICMgXmJyZWFrCisgICAgSEVMUCA9IHUnXHVlMDAyJworICAgIEJBQ0tTUEFDRSA9IHUnXHVlMDAz
JwogICAgIEJBQ0tfU1BBQ0UgPSBCQUNLU1BBQ0UKLSAgICBUQUIgPSAnXHVlMDA0JwotICAgIENM
RUFSID0gJ1x1ZTAwNScKLSAgICBSRVRVUk4gPSAnXHVlMDA2JwotICAgIEVOVEVSID0gJ1x1ZTAw
NycKLSAgICBTSElGVCA9ICdcdWUwMDgnCisgICAgVEFCID0gdSdcdWUwMDQnCisgICAgQ0xFQVIg
PSB1J1x1ZTAwNScKKyAgICBSRVRVUk4gPSB1J1x1ZTAwNicKKyAgICBFTlRFUiA9IHUnXHVlMDA3
JworICAgIFNISUZUID0gdSdcdWUwMDgnCiAgICAgTEVGVF9TSElGVCA9IFNISUZUCi0gICAgQ09O
VFJPTCA9ICdcdWUwMDknCisgICAgQ09OVFJPTCA9IHUnXHVlMDA5JwogICAgIExFRlRfQ09OVFJP
TCA9IENPTlRST0wKLSAgICBBTFQgPSAnXHVlMDBhJworICAgIEFMVCA9IHUnXHVlMDBhJwogICAg
IExFRlRfQUxUID0gQUxUCi0gICAgUEFVU0UgPSAnXHVlMDBiJwotICAgIEVTQ0FQRSA9ICdcdWUw
MGMnCi0gICAgU1BBQ0UgPSAnXHVlMDBkJwotICAgIFBBR0VfVVAgPSAnXHVlMDBlJwotICAgIFBB
R0VfRE9XTiA9ICdcdWUwMGYnCi0gICAgRU5EID0gJ1x1ZTAxMCcKLSAgICBIT01FID0gJ1x1ZTAx
MScKLSAgICBMRUZUID0gJ1x1ZTAxMicKKyAgICBQQVVTRSA9IHUnXHVlMDBiJworICAgIEVTQ0FQ
RSA9IHUnXHVlMDBjJworICAgIFNQQUNFID0gdSdcdWUwMGQnCisgICAgUEFHRV9VUCA9IHUnXHVl
MDBlJworICAgIFBBR0VfRE9XTiA9IHUnXHVlMDBmJworICAgIEVORCA9IHUnXHVlMDEwJworICAg
IEhPTUUgPSB1J1x1ZTAxMScKKyAgICBMRUZUID0gdSdcdWUwMTInCiAgICAgQVJST1dfTEVGVCA9
IExFRlQKLSAgICBVUCA9ICdcdWUwMTMnCisgICAgVVAgPSB1J1x1ZTAxMycKICAgICBBUlJPV19V
UCA9IFVQCi0gICAgUklHSFQgPSAnXHVlMDE0JworICAgIFJJR0hUID0gdSdcdWUwMTQnCiAgICAg
QVJST1dfUklHSFQgPSBSSUdIVAotICAgIERPV04gPSAnXHVlMDE1JworICAgIERPV04gPSB1J1x1
ZTAxNScKICAgICBBUlJPV19ET1dOID0gRE9XTgotICAgIElOU0VSVCA9ICdcdWUwMTYnCi0gICAg
REVMRVRFID0gJ1x1ZTAxNycKLSAgICBTRU1JQ09MT04gPSAnXHVlMDE4JwotICAgIEVRVUFMUyA9
ICdcdWUwMTknCisgICAgSU5TRVJUID0gdSdcdWUwMTYnCisgICAgREVMRVRFID0gdSdcdWUwMTcn
CisgICAgU0VNSUNPTE9OID0gdSdcdWUwMTgnCisgICAgRVFVQUxTID0gdSdcdWUwMTknCiAKLSAg
ICBOVU1QQUQwID0gJ1x1ZTAxYScgICMgbnVtYmVyIHBhZCBrZXlzCi0gICAgTlVNUEFEMSA9ICdc
dWUwMWInCi0gICAgTlVNUEFEMiA9ICdcdWUwMWMnCi0gICAgTlVNUEFEMyA9ICdcdWUwMWQnCi0g
ICAgTlVNUEFENCA9ICdcdWUwMWUnCi0gICAgTlVNUEFENSA9ICdcdWUwMWYnCi0gICAgTlVNUEFE
NiA9ICdcdWUwMjAnCi0gICAgTlVNUEFENyA9ICdcdWUwMjEnCi0gICAgTlVNUEFEOCA9ICdcdWUw
MjInCi0gICAgTlVNUEFEOSA9ICdcdWUwMjMnCi0gICAgTVVMVElQTFkgPSAnXHVlMDI0JwotICAg
IEFERCA9ICdcdWUwMjUnCi0gICAgU0VQQVJBVE9SID0gJ1x1ZTAyNicKLSAgICBTVUJUUkFDVCA9
ICdcdWUwMjcnCi0gICAgREVDSU1BTCA9ICdcdWUwMjgnCi0gICAgRElWSURFID0gJ1x1ZTAyOScK
KyAgICBOVU1QQUQwID0gdSdcdWUwMWEnICAjIG51bWJlciBwYWQga2V5cworICAgIE5VTVBBRDEg
PSB1J1x1ZTAxYicKKyAgICBOVU1QQUQyID0gdSdcdWUwMWMnCisgICAgTlVNUEFEMyA9IHUnXHVl
MDFkJworICAgIE5VTVBBRDQgPSB1J1x1ZTAxZScKKyAgICBOVU1QQUQ1ID0gdSdcdWUwMWYnCisg
ICAgTlVNUEFENiA9IHUnXHVlMDIwJworICAgIE5VTVBBRDcgPSB1J1x1ZTAyMScKKyAgICBOVU1Q
QUQ4ID0gdSdcdWUwMjInCisgICAgTlVNUEFEOSA9IHUnXHVlMDIzJworICAgIE1VTFRJUExZID0g
dSdcdWUwMjQnCisgICAgQUREID0gdSdcdWUwMjUnCisgICAgU0VQQVJBVE9SID0gdSdcdWUwMjYn
CisgICAgU1VCVFJBQ1QgPSB1J1x1ZTAyNycKKyAgICBERUNJTUFMID0gdSdcdWUwMjgnCisgICAg
RElWSURFID0gdSdcdWUwMjknCiAKLSAgICBGMSA9ICdcdWUwMzEnICAjIGZ1bmN0aW9uICBrZXlz
Ci0gICAgRjIgPSAnXHVlMDMyJwotICAgIEYzID0gJ1x1ZTAzMycKLSAgICBGNCA9ICdcdWUwMzQn
Ci0gICAgRjUgPSAnXHVlMDM1JwotICAgIEY2ID0gJ1x1ZTAzNicKLSAgICBGNyA9ICdcdWUwMzcn
Ci0gICAgRjggPSAnXHVlMDM4JwotICAgIEY5ID0gJ1x1ZTAzOScKLSAgICBGMTAgPSAnXHVlMDNh
JwotICAgIEYxMSA9ICdcdWUwM2InCi0gICAgRjEyID0gJ1x1ZTAzYycKKyAgICBGMSA9IHUnXHVl
MDMxJyAgIyBmdW5jdGlvbiAga2V5cworICAgIEYyID0gdSdcdWUwMzInCisgICAgRjMgPSB1J1x1
ZTAzMycKKyAgICBGNCA9IHUnXHVlMDM0JworICAgIEY1ID0gdSdcdWUwMzUnCisgICAgRjYgPSB1
J1x1ZTAzNicKKyAgICBGNyA9IHUnXHVlMDM3JworICAgIEY4ID0gdSdcdWUwMzgnCisgICAgRjkg
PSB1J1x1ZTAzOScKKyAgICBGMTAgPSB1J1x1ZTAzYScKKyAgICBGMTEgPSB1J1x1ZTAzYicKKyAg
ICBGMTIgPSB1J1x1ZTAzYycKIAotICAgIE1FVEEgPSAnXHVlMDNkJwotICAgIENPTU1BTkQgPSAn
XHVlMDNkJworICAgIE1FVEEgPSB1J1x1ZTAzZCcKKyAgICBDT01NQU5EID0gdSdcdWUwM2QnCmRp
ZmYgLS1naXQgYS9XZWJEcml2ZXJUZXN0cy9pbXBvcnRlZC9zZWxlbml1bS9weS9zZWxlbml1bS93
ZWJkcml2ZXIvY29tbW9uL29wdGlvbnMucHkgYi9XZWJEcml2ZXJUZXN0cy9pbXBvcnRlZC9zZWxl
bml1bS9weS9zZWxlbml1bS93ZWJkcml2ZXIvY29tbW9uL29wdGlvbnMucHkKaW5kZXggYWFiM2Yw
ODAzY2YwMjczMTQxODJjNTVmMDRkOGQ3NTRkOWExOTBiYy4uYmZmMjUxNzI3YjNlNzhhMmM2MzI1
Njg5MDI5NzljZGM0NjA3NzljMyAxMDA2NDQKLS0tIGEvV2ViRHJpdmVyVGVzdHMvaW1wb3J0ZWQv
c2VsZW5pdW0vcHkvc2VsZW5pdW0vd2ViZHJpdmVyL2NvbW1vbi9vcHRpb25zLnB5CisrKyBiL1dl
YkRyaXZlclRlc3RzL2ltcG9ydGVkL3NlbGVuaXVtL3B5L3NlbGVuaXVtL3dlYmRyaXZlci9jb21t
b24vb3B0aW9ucy5weQpAQCAtMTcsMTQgKzE3LDE3IEBACiAKIGZyb20gYWJjIGltcG9ydCBBQkNN
ZXRhLCBhYnN0cmFjdG1ldGhvZAogCitmcm9tIHNpeCBpbXBvcnQgYWRkX21ldGFjbGFzcwogCisK
K0BhZGRfbWV0YWNsYXNzKEFCQ01ldGEpCiBjbGFzcyBCYXNlT3B0aW9ucyhvYmplY3QpOgogICAg
ICIiIgogICAgIEJhc2UgY2xhc3MgZm9yIGluZGl2aWR1YWwgYnJvd3NlciBvcHRpb25zCiAgICAg
IiIiCi0gICAgX19tZXRhY2xhc3NfXyA9IEFCQ01ldGEKIAogICAgIGRlZiBfX2luaXRfXyhzZWxm
KToKKyAgICAgICAgc3VwZXIoQmFzZU9wdGlvbnMsIHNlbGYpLl9faW5pdF9fKCkKICAgICAgICAg
c2VsZi5fY2FwcyA9IHNlbGYuZGVmYXVsdF9jYXBhYmlsaXRpZXMKICAgICAgICAgc2VsZi5zZXRf
Y2FwYWJpbGl0eSgicGFnZUxvYWRTdHJhdGVneSIsICJub3JtYWwiKQogCkBAIC0zOCwxMiArNDEs
MTMgQEAgY2xhc3MgQmFzZU9wdGlvbnMob2JqZWN0KToKIAogICAgIEBhYnN0cmFjdG1ldGhvZAog
ICAgIGRlZiB0b19jYXBhYmlsaXRpZXMoc2VsZik6Ci0gICAgICAgIHJldHVybgorICAgICAgICAi
IiJDb252ZXJ0IG9wdGlvbnMgaW50byBjYXBhYmlsaXRpZXMgZGljdGlvbmFyeS4iIiIKIAogICAg
IEBwcm9wZXJ0eQogICAgIEBhYnN0cmFjdG1ldGhvZAogICAgIGRlZiBkZWZhdWx0X2NhcGFiaWxp
dGllcyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHt9CisgICAgICAgICIiIlJldHVybiBtaW5pbWFs
IGNhcGFiaWxpdGllcyBuZWNlc3NhcnkgYXMgYSBkaWN0aW9uYXJ5LiIiIgorCiAKIAogY2xhc3Mg
QXJnT3B0aW9ucyhCYXNlT3B0aW9ucyk6CkBAIC03MywzICs3Nyw3IEBAIGNsYXNzIEFyZ09wdGlv
bnMoQmFzZU9wdGlvbnMpOgogCiAgICAgZGVmIHRvX2NhcGFiaWxpdGllcyhzZWxmKToKICAgICAg
ICAgcmV0dXJuIHNlbGYuX2NhcHMKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBkZWZhdWx0X2Nh
cGFiaWxpdGllcyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHt9CmRpZmYgLS1naXQgYS9XZWJEcml2
ZXJUZXN0cy9pbXBvcnRlZC9zZWxlbml1bS9weS9zZWxlbml1bS93ZWJkcml2ZXIvY29tbW9uL3Nl
cnZpY2UucHkgYi9XZWJEcml2ZXJUZXN0cy9pbXBvcnRlZC9zZWxlbml1bS9weS9zZWxlbml1bS93
ZWJkcml2ZXIvY29tbW9uL3NlcnZpY2UucHkKaW5kZXggYWYwNGE5ZjI4OTI5ODNlY2ZjNjk2YmE1
NjAxZjYxMGI3YTM1NzYxNy4uZDIwYTkwMmZhYzdlNGFiYjQwNGE0YmEzZmM4OGVkODJlMTZhM2Uy
ZCAxMDA2NDQKLS0tIGEvV2ViRHJpdmVyVGVzdHMvaW1wb3J0ZWQvc2VsZW5pdW0vcHkvc2VsZW5p
dW0vd2ViZHJpdmVyL2NvbW1vbi9zZXJ2aWNlLnB5CisrKyBiL1dlYkRyaXZlclRlc3RzL2ltcG9y
dGVkL3NlbGVuaXVtL3B5L3NlbGVuaXVtL3dlYmRyaXZlci9jb21tb24vc2VydmljZS5weQpAQCAt
NTYsNyArNTYsNyBAQCBjbGFzcyBTZXJ2aWNlKG9iamVjdCk6CiAgICAgICAgIHJldHVybiAiaHR0
cDovLyVzIiAlIHV0aWxzLmpvaW5faG9zdF9wb3J0KCdsb2NhbGhvc3QnLCBzZWxmLnBvcnQpCiAK
ICAgICBkZWYgY29tbWFuZF9saW5lX2FyZ3Moc2VsZik6Ci0gICAgICAgIHJhaXNlIE5vdEltcGxl
bWVudGVkKCJUaGlzIG1ldGhvZCBuZWVkcyB0byBiZSBpbXBsZW1lbnRlZCBpbiBhIHN1YiBjbGFz
cyIpCisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoIlRoaXMgbWV0aG9kIG5lZWRz
IHRvIGJlIGltcGxlbWVudGVkIGluIGEgc3ViIGNsYXNzIikKIAogICAgIGRlZiBzdGFydChzZWxm
KToKICAgICAgICAgIiIiCmRpZmYgLS1naXQgYS9XZWJEcml2ZXJUZXN0cy9pbXBvcnRlZC9zZWxl
bml1bS9weS9zZWxlbml1bS93ZWJkcml2ZXIvY29tbW9uL3RpbWVvdXRzLnB5IGIvV2ViRHJpdmVy
VGVzdHMvaW1wb3J0ZWQvc2VsZW5pdW0vcHkvc2VsZW5pdW0vd2ViZHJpdmVyL2NvbW1vbi90aW1l
b3V0cy5weQppbmRleCA5ZDQwYjBmMDM1YWRkMmRmNGNhYTA1ZjYyZWZlMzAzZjdiMzFiOTE1Li5k
MTlhZTAxMzk0NjYxODJkNjBmYmFhMmRiYjFlNzRlNThiNDcxOThkIDEwMDY0NAotLS0gYS9XZWJE
cml2ZXJUZXN0cy9pbXBvcnRlZC9zZWxlbml1bS9weS9zZWxlbml1bS93ZWJkcml2ZXIvY29tbW9u
L3RpbWVvdXRzLnB5CisrKyBiL1dlYkRyaXZlclRlc3RzL2ltcG9ydGVkL3NlbGVuaXVtL3B5L3Nl
bGVuaXVtL3dlYmRyaXZlci9jb21tb24vdGltZW91dHMucHkKQEAgLTE1LDE4ICsxNSwxOSBAQAog
IyBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25z
CiAjIHVuZGVyIHRoZSBMaWNlbnNlLgogCisKIGNsYXNzIFRpbWVvdXRzKG9iamVjdCk6Ci0gICAg
CisKICAgICBkZWYgX19pbml0X18oc2VsZiwgaW1wbGljaXRfd2FpdD1Ob25lLCBwYWdlX2xvYWQ9
Tm9uZSwgc2NyaXB0PU5vbmUpOgogICAgICAgICAiIiIKICAgICAgICAgQ3JlYXRlIGEgbmV3IFRp
bWVvdXQgb2JqZWN0LgogCiAgICAgICAgIDpBcmdzOgotICAgICAgICAgLSBpbXBsaWNpdF93YWl0
IC0gRWl0aGVyIGFuIGludCBvciBhIGZsb2F0LiBUaGUgbnVtYmVyIHBhc3NlZCBpbiBuZWVkcyB0
byBob3cgbWFueSAKKyAgICAgICAgIC0gaW1wbGljaXRfd2FpdCAtIEVpdGhlciBhbiBpbnQgb3Ig
YSBmbG9hdC4gVGhlIG51bWJlciBwYXNzZWQgaW4gbmVlZHMgdG8gaG93IG1hbnkKICAgICAgICAg
ICAgIHNlY29uZHMgdGhlIGRyaXZlciB3aWxsIHdhaXQuCi0gICAgICAgICAtIHBhZ2VfbG9hZCAt
IEVpdGhlciBhbiBpbnQgb3IgYSBmbG9hdC4gVGhlIG51bWJlciBwYXNzZWQgaW4gbmVlZHMgdG8g
aG93IG1hbnkgCisgICAgICAgICAtIHBhZ2VfbG9hZCAtIEVpdGhlciBhbiBpbnQgb3IgYSBmbG9h
dC4gVGhlIG51bWJlciBwYXNzZWQgaW4gbmVlZHMgdG8gaG93IG1hbnkKICAgICAgICAgICAgIHNl
Y29uZHMgdGhlIGRyaXZlciB3aWxsIHdhaXQuCi0gICAgICAgICAtIHNjcmlwdCAtIEVpdGhlciBh
biBpbnQgb3IgYSBmbG9hdC4gVGhlIG51bWJlciBwYXNzZWQgaW4gbmVlZHMgdG8gaG93IG1hbnkg
CisgICAgICAgICAtIHNjcmlwdCAtIEVpdGhlciBhbiBpbnQgb3IgYSBmbG9hdC4gVGhlIG51bWJl
ciBwYXNzZWQgaW4gbmVlZHMgdG8gaG93IG1hbnkKICAgICAgICAgICAgIHNlY29uZHMgdGhlIGRy
aXZlciB3aWxsIHdhaXQuCiAgICAgICAgICIiIgogICAgICAgICBzZWxmLl9pbXBsaWNpdF93YWl0
ID0gc2VsZi5fY29udmVydChpbXBsaWNpdF93YWl0KQpAQCAtOTAsNSArOTEsNSBAQCBjbGFzcyBU
aW1lb3V0cyhvYmplY3QpOgogICAgICAgICAgICAgdGltZW91dHNbInBhZ2VMb2FkIl0gPSBzZWxm
Ll9wYWdlX2xvYWQKICAgICAgICAgaWYgc2VsZi5fc2NyaXB0IGlzIG5vdCBOb25lOgogICAgICAg
ICAgICAgdGltZW91dHNbInNjcmlwdCJdID0gc2VsZi5fc2NyaXB0Ci0gICAgICAgIAorCiAgICAg
ICAgIHJldHVybiB0aW1lb3V0cwpkaWZmIC0tZ2l0IGEvV2ViRHJpdmVyVGVzdHMvaW1wb3J0ZWQv
c2VsZW5pdW0vcHkvc2VsZW5pdW0vd2ViZHJpdmVyL2NvbW1vbi93aW5kb3cucHkgYi9XZWJEcml2
ZXJUZXN0cy9pbXBvcnRlZC9zZWxlbml1bS9weS9zZWxlbml1bS93ZWJkcml2ZXIvY29tbW9uL3dp
bmRvdy5weQppbmRleCA3M2Y1OTk4Y2Q4NTNjYTJhYWU1MTViYmI0MTU2NWZmOWEyNzZlNzAxLi45
NTEzNTdiNGMwYjAzNTg2NmU3MjQyMWQ1Yzc4NDc0MmViNzZmYjllIDEwMDY0NAotLS0gYS9XZWJE
cml2ZXJUZXN0cy9pbXBvcnRlZC9zZWxlbml1bS9weS9zZWxlbml1bS93ZWJkcml2ZXIvY29tbW9u
L3dpbmRvdy5weQorKysgYi9XZWJEcml2ZXJUZXN0cy9pbXBvcnRlZC9zZWxlbml1bS9weS9zZWxl
bml1bS93ZWJkcml2ZXIvY29tbW9uL3dpbmRvdy5weQpAQCAtMTksMTEgKzE5LDkgQEAKIFRoZSBX
aW5kb3dUeXBlcyBpbXBsZW1lbnRhdGlvbi4KICIiIgogCi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0
IHVuaWNvZGVfbGl0ZXJhbHMKLQogCiBjbGFzcyBXaW5kb3dUeXBlcyhvYmplY3QpOgogICAgICIi
IlNldCBvZiBzdXBwb3J0ZWQgd2luZG93IHR5cGVzLiIiIgogCi0gICAgVEFCID0gJ3RhYicKLSAg
ICBXSU5ET1cgPSAnd2luZG93JworICAgIFRBQiA9IHUndGFiJworICAgIFdJTkRPVyA9IHUnd2lu
ZG93JwpkaWZmIC0tZ2l0IGEvV2ViRHJpdmVyVGVzdHMvaW1wb3J0ZWQvc2VsZW5pdW0vcHkvc2Vs
ZW5pdW0vd2ViZHJpdmVyL3JlbW90ZS9maWxlX2RldGVjdG9yLnB5IGIvV2ViRHJpdmVyVGVzdHMv
aW1wb3J0ZWQvc2VsZW5pdW0vcHkvc2VsZW5pdW0vd2ViZHJpdmVyL3JlbW90ZS9maWxlX2RldGVj
dG9yLnB5CmluZGV4IGNhZWM5YzMwZmJjNmM0ZmM0YTJiMWM3MWRhNmEzOTk0NTRhYjI3ZmQuLjVk
NmRlYjJhNDQ0MDExNDgwNmI5ZGJmNzcwYzQyNTg2ZjBkYzFjYjAgMTAwNjQ0Ci0tLSBhL1dlYkRy
aXZlclRlc3RzL2ltcG9ydGVkL3NlbGVuaXVtL3B5L3NlbGVuaXVtL3dlYmRyaXZlci9yZW1vdGUv
ZmlsZV9kZXRlY3Rvci5weQorKysgYi9XZWJEcml2ZXJUZXN0cy9pbXBvcnRlZC9zZWxlbml1bS9w
eS9zZWxlbml1bS93ZWJkcml2ZXIvcmVtb3RlL2ZpbGVfZGV0ZWN0b3IucHkKQEAgLTE1LDE5ICsx
NSwyMCBAQAogIyBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxp
bWl0YXRpb25zCiAjIHVuZGVyIHRoZSBMaWNlbnNlLgogCi1pbXBvcnQgYWJjCitmcm9tIGFiYyBp
bXBvcnQgQUJDTWV0YSwgYWJzdHJhY3RtZXRob2QKIGltcG9ydCBvcwogZnJvbSBzZWxlbml1bS53
ZWJkcml2ZXIuY29tbW9uLnV0aWxzIGltcG9ydCBrZXlzX3RvX3R5cGluZworZnJvbSBzaXggaW1w
b3J0IGFkZF9tZXRhY2xhc3MKIAogCitAYWRkX21ldGFjbGFzcyhBQkNNZXRhKQogY2xhc3MgRmls
ZURldGVjdG9yKG9iamVjdCk6CiAgICAgIiIiCiAgICAgVXNlZCBmb3IgaWRlbnRpZnlpbmcgd2hl
dGhlciBhIHNlcXVlbmNlIG9mIGNoYXJzIHJlcHJlc2VudHMgdGhlIHBhdGggdG8gYQogICAgIGZp
bGUuCiAgICAgIiIiCi0gICAgX19tZXRhY2xhc3NfXyA9IGFiYy5BQkNNZXRhCiAKLSAgICBAYWJj
LmFic3RyYWN0bWV0aG9kCisgICAgQGFic3RyYWN0bWV0aG9kCiAgICAgZGVmIGlzX2xvY2FsX2Zp
bGUoc2VsZiwgKmtleXMpOgogICAgICAgICByZXR1cm4KIApkaWZmIC0tZ2l0IGEvV2ViRHJpdmVy
VGVzdHMvaW1wb3J0ZWQvc2VsZW5pdW0vcHkvc2VsZW5pdW0vd2ViZHJpdmVyL3JlbW90ZS9yZW1v
dGVfY29ubmVjdGlvbi5weSBiL1dlYkRyaXZlclRlc3RzL2ltcG9ydGVkL3NlbGVuaXVtL3B5L3Nl
bGVuaXVtL3dlYmRyaXZlci9yZW1vdGUvcmVtb3RlX2Nvbm5lY3Rpb24ucHkKaW5kZXggOTA5NTFj
NjgyMTgxYjVlNjFlY2UwMDU3NGI0YWZmNTg4MjEzZWM2NC4uNmYxYzFiNDcxMjA3ZWJkZDA0OWQ4
NmM0Y2M5MjM1NjdiYjlmYTU2ZSAxMDA2NDQKLS0tIGEvV2ViRHJpdmVyVGVzdHMvaW1wb3J0ZWQv
c2VsZW5pdW0vcHkvc2VsZW5pdW0vd2ViZHJpdmVyL3JlbW90ZS9yZW1vdGVfY29ubmVjdGlvbi5w
eQorKysgYi9XZWJEcml2ZXJUZXN0cy9pbXBvcnRlZC9zZWxlbml1bS9weS9zZWxlbml1bS93ZWJk
cml2ZXIvcmVtb3RlL3JlbW90ZV9jb25uZWN0aW9uLnB5CkBAIC0yMSw3ICsyMSw5IEBAIGltcG9y
dCBwbGF0Zm9ybQogaW1wb3J0IHNvY2tldAogaW1wb3J0IHN0cmluZwogCitpbXBvcnQgY2VydGlm
aQogaW1wb3J0IHVybGxpYjMKK2ltcG9ydCBvcwogCiB0cnk6CiAgICAgZnJvbSB1cmxsaWIgaW1w
b3J0IHBhcnNlCkBAIC00Myw2ICs0NSw3IEBAIGNsYXNzIFJlbW90ZUNvbm5lY3Rpb24ob2JqZWN0
KToKIAogICAgIGJyb3dzZXJfbmFtZSA9IE5vbmUKICAgICBfdGltZW91dCA9IHNvY2tldC5fR0xP
QkFMX0RFRkFVTFRfVElNRU9VVAorICAgIF9jYV9jZXJ0cyA9IGNlcnRpZmkud2hlcmUoKQogCiAg
ICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIGdldF90aW1lb3V0KGNscyk6CkBAIC02OSw2ICs3Miwy
NSBAQCBjbGFzcyBSZW1vdGVDb25uZWN0aW9uKG9iamVjdCk6CiAgICAgICAgICIiIgogICAgICAg
ICBjbHMuX3RpbWVvdXQgPSBzb2NrZXQuX0dMT0JBTF9ERUZBVUxUX1RJTUVPVVQKIAorICAgIEBj
bGFzc21ldGhvZAorICAgIGRlZiBnZXRfY2VydGlmaWNhdGVfYnVuZGxlX3BhdGgoY2xzKToKKyAg
ICAgICAgIiIiCisgICAgICAgIDpSZXR1cm5zOgorICAgICAgICAgICAgUGF0aHMgb2YgdGhlIC5w
ZW0gZW5jb2RlZCBjZXJ0aWZpY2F0ZSB0byB2ZXJpZnkgY29ubmVjdGlvbiB0byBjb21hbmQgZXhl
Y3V0b3IKKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBjbHMuX2NhX2NlcnRzCisKKyAgICBA
Y2xhc3NtZXRob2QKKyAgICBkZWYgc2V0X2NlcnRpZmljYXRlX2J1bmRsZV9wYXRoKGNscywgcGF0
aCk6CisgICAgICAgICIiIgorICAgICAgICBTZXQgdGhlIHBhdGggdG8gdGhlIGNlcnRpZmljYXRl
IGJ1bmRsZSB0byB2ZXJpZnkgY29ubmVjdGlvbiB0byBjb21tYW5kIGV4ZWN1dG9yLgorICAgICAg
ICBDYW4gYWxzbyBiZSBzZXQgdG8gTm9uZSB0byBkaXNhYmxlIGNlcnRpZmljYXRlIHZhbGlkYXRp
b24uCisKKyAgICAgICAgOkFyZ3M6CisgICAgICAgICAgICAtIHBhdGggLSBwYXRoIG9mIGEgLnBl
bSBlbmNvZGVkIGNlcnRpZmljYXRlIGNoYWluLgorICAgICAgICAiIiIKKyAgICAgICAgY2xzLl9j
YV9jZXJ0cyA9IHBhdGgKKwogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBnZXRfcmVtb3RlX2Nv
bm5lY3Rpb25faGVhZGVycyhjbHMsIHBhcnNlZF91cmwsIGtlZXBfYWxpdmU9RmFsc2UpOgogICAg
ICAgICAiIiIKQEAgLTEwMiw2ICsxMjQsMjMgQEAgY2xhc3MgUmVtb3RlQ29ubmVjdGlvbihvYmpl
Y3QpOgogCiAgICAgICAgIHJldHVybiBoZWFkZXJzCiAKKyAgICBkZWYgX2dldF9wcm94eV91cmwo
c2VsZik6CisgICAgICAgIGlmIHNlbGYuX3VybC5zdGFydHN3aXRoKCdodHRwczovLycpOgorICAg
ICAgICAgICAgcmV0dXJuIG9zLmVudmlyb24uZ2V0KCdodHRwc19wcm94eScsIG9zLmVudmlyb24u
Z2V0KCdIVFRQU19QUk9YWScpKQorICAgICAgICBlbGlmIHNlbGYuX3VybC5zdGFydHN3aXRoKCdo
dHRwOi8vJyk6CisgICAgICAgICAgICByZXR1cm4gb3MuZW52aXJvbi5nZXQoJ2h0dHBfcHJveHkn
LCBvcy5lbnZpcm9uLmdldCgnSFRUUF9QUk9YWScpKQorCisgICAgZGVmIF9nZXRfY29ubmVjdGlv
bl9tYW5hZ2VyKHNlbGYpOgorICAgICAgICBwb29sX21hbmFnZXJfaW5pdF9hcmdzID0geworICAg
ICAgICAgICAgJ3RpbWVvdXQnOiBzZWxmLl90aW1lb3V0CisgICAgICAgIH0KKyAgICAgICAgaWYg
c2VsZi5fY2FfY2VydHM6CisgICAgICAgICAgICBwb29sX21hbmFnZXJfaW5pdF9hcmdzWydjZXJ0
X3JlcXMnXSA9ICdDRVJUX1JFUVVJUkVEJworICAgICAgICAgICAgcG9vbF9tYW5hZ2VyX2luaXRf
YXJnc1snY2FfY2VydHMnXSA9IHNlbGYuX2NhX2NlcnRzCisKKyAgICAgICAgcmV0dXJuIHVybGxp
YjMuUG9vbE1hbmFnZXIoKipwb29sX21hbmFnZXJfaW5pdF9hcmdzKSBpZiBzZWxmLl9wcm94eV91
cmwgaXMgTm9uZSBlbHNlIFwKKyAgICAgICAgICAgIHVybGxpYjMuUHJveHlNYW5hZ2VyKHNlbGYu
X3Byb3h5X3VybCwgKipwb29sX21hbmFnZXJfaW5pdF9hcmdzKQorCiAgICAgZGVmIF9faW5pdF9f
KHNlbGYsIHJlbW90ZV9zZXJ2ZXJfYWRkciwga2VlcF9hbGl2ZT1GYWxzZSwgcmVzb2x2ZV9pcD1O
b25lKToKICAgICAgICAgaWYgcmVzb2x2ZV9pcCBpcyBub3QgTm9uZToKICAgICAgICAgICAgIGlt
cG9ydCB3YXJuaW5ncwpAQCAtMTEwLDggKzE0OSwxMCBAQCBjbGFzcyBSZW1vdGVDb25uZWN0aW9u
KG9iamVjdCk6CiAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nKQogICAgICAgICBz
ZWxmLmtlZXBfYWxpdmUgPSBrZWVwX2FsaXZlCiAgICAgICAgIHNlbGYuX3VybCA9IHJlbW90ZV9z
ZXJ2ZXJfYWRkcgorICAgICAgICBzZWxmLl9wcm94eV91cmwgPSBzZWxmLl9nZXRfcHJveHlfdXJs
KCkKICAgICAgICAgaWYga2VlcF9hbGl2ZToKLSAgICAgICAgICAgIHNlbGYuX2Nvbm4gPSB1cmxs
aWIzLlBvb2xNYW5hZ2VyKHRpbWVvdXQ9c2VsZi5fdGltZW91dCkKKyAgICAgICAgICAgIHNlbGYu
X2Nvbm4gPSBzZWxmLl9nZXRfY29ubmVjdGlvbl9tYW5hZ2VyKCkKKwogICAgICAgICBzZWxmLl9j
b21tYW5kcyA9IHsKICAgICAgICAgICAgIENvbW1hbmQuU1RBVFVTOiAoJ0dFVCcsICcvc3RhdHVz
JyksCiAgICAgICAgICAgICBDb21tYW5kLk5FV19TRVNTSU9OOiAoJ1BPU1QnLCAnL3Nlc3Npb24n
KSwKQEAgLTM3NCw3ICs0MTUsOCBAQCBjbGFzcyBSZW1vdGVDb25uZWN0aW9uKG9iamVjdCk6CiAK
ICAgICAgICAgICAgIHN0YXR1c2NvZGUgPSByZXNwLnN0YXR1cwogICAgICAgICBlbHNlOgotICAg
ICAgICAgICAgd2l0aCB1cmxsaWIzLlBvb2xNYW5hZ2VyKHRpbWVvdXQ9c2VsZi5fdGltZW91dCkg
YXMgaHR0cDoKKyAgICAgICAgICAgIGNvbm4gPSBzZWxmLl9nZXRfY29ubmVjdGlvbl9tYW5hZ2Vy
KCkKKyAgICAgICAgICAgIHdpdGggY29ubiBhcyBodHRwOgogICAgICAgICAgICAgICAgIHJlc3Ag
PSBodHRwLnJlcXVlc3QobWV0aG9kLCB1cmwsIGJvZHk9Ym9keSwgaGVhZGVycz1oZWFkZXJzKQog
CiAgICAgICAgICAgICBzdGF0dXNjb2RlID0gcmVzcC5zdGF0dXMKZGlmZiAtLWdpdCBhL1dlYkRy
aXZlclRlc3RzL2ltcG9ydGVkL3NlbGVuaXVtL3B5L3NlbGVuaXVtL3dlYmRyaXZlci9yZW1vdGUv
c3dpdGNoX3RvLnB5IGIvV2ViRHJpdmVyVGVzdHMvaW1wb3J0ZWQvc2VsZW5pdW0vcHkvc2VsZW5p
dW0vd2ViZHJpdmVyL3JlbW90ZS9zd2l0Y2hfdG8ucHkKaW5kZXggYTFhYWFjYmIyMmU5MGVhNjNk
YTdmMjRlNzAzZWQ5OGU3OGRjNmQxZC4uNWRmZDA2MWM4Mzg1YjUzZTE3OWRlM2FjNWM0NDI5ZDM0
MjE2ZDRmMSAxMDA2NDQKLS0tIGEvV2ViRHJpdmVyVGVzdHMvaW1wb3J0ZWQvc2VsZW5pdW0vcHkv
c2VsZW5pdW0vd2ViZHJpdmVyL3JlbW90ZS9zd2l0Y2hfdG8ucHkKKysrIGIvV2ViRHJpdmVyVGVz
dHMvaW1wb3J0ZWQvc2VsZW5pdW0vcHkvc2VsZW5pdW0vd2ViZHJpdmVyL3JlbW90ZS9zd2l0Y2hf
dG8ucHkKQEAgLTgzLDcgKzgzLDcgQEAgY2xhc3MgU3dpdGNoVG86CiAKICAgICAgICAgICAgICAg
ICBkcml2ZXIuc3dpdGNoX3RvLmZyYW1lKCdmcmFtZV9uYW1lJykKICAgICAgICAgICAgICAgICBk
cml2ZXIuc3dpdGNoX3RvLmZyYW1lKDEpCi0gICAgICAgICAgICAgICAgZHJpdmVyLnN3aXRjaF90
by5mcmFtZShkcml2ZXIuZmluZF9lbGVtZW50c19ieV90YWdfbmFtZSgiaWZyYW1lIilbMF0pCisg
ICAgICAgICAgICAgICAgZHJpdmVyLnN3aXRjaF90by5mcmFtZShkcml2ZXIuZmluZF9lbGVtZW50
cyhCeS5UQUdfTkFNRSwgImlmcmFtZSIpWzBdKQogICAgICAgICAiIiIKICAgICAgICAgaWYgaXNp
bnN0YW5jZShmcmFtZV9yZWZlcmVuY2UsIGJhc2VzdHJpbmcpIGFuZCBzZWxmLl9kcml2ZXIudzNj
OgogICAgICAgICAgICAgdHJ5OgpkaWZmIC0tZ2l0IGEvV2ViRHJpdmVyVGVzdHMvaW1wb3J0ZWQv
c2VsZW5pdW0vcHkvc2VsZW5pdW0vd2ViZHJpdmVyL3JlbW90ZS93ZWJkcml2ZXIucHkgYi9XZWJE
cml2ZXJUZXN0cy9pbXBvcnRlZC9zZWxlbml1bS9weS9zZWxlbml1bS93ZWJkcml2ZXIvcmVtb3Rl
L3dlYmRyaXZlci5weQppbmRleCBjNjEwNjI5MzQxOTFiNTkyODJkN2RkODE5NDQwYmI5MTFiY2I1
YmJiLi42MjI4MmQ1MjY5NWJjZmVmNjFmMTA1YmI4Y2UxNWQ3YjVjMzU3NmI2IDEwMDY0NAotLS0g
YS9XZWJEcml2ZXJUZXN0cy9pbXBvcnRlZC9zZWxlbml1bS9weS9zZWxlbml1bS93ZWJkcml2ZXIv
cmVtb3RlL3dlYmRyaXZlci5weQorKysgYi9XZWJEcml2ZXJUZXN0cy9pbXBvcnRlZC9zZWxlbml1
bS9weS9zZWxlbml1bS93ZWJkcml2ZXIvcmVtb3RlL3dlYmRyaXZlci5weQpAQCAtMTcsNiArMTcs
NyBAQAogCiAiIiJUaGUgV2ViRHJpdmVyIGltcGxlbWVudGF0aW9uLiIiIgogCitmcm9tIGFiYyBp
bXBvcnQgQUJDTWV0YQogaW1wb3J0IGJhc2U2NAogaW1wb3J0IGNvcHkKIGZyb20gY29udGV4dGxp
YiBpbXBvcnQgY29udGV4dG1hbmFnZXIKQEAgLTM2LDEyICszNywxMiBAQCBmcm9tIHNlbGVuaXVt
LmNvbW1vbi5leGNlcHRpb25zIGltcG9ydCAoSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vU3VjaENvb2tpZUV4Y2VwdGlv
biwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmtub3duTWV0aG9k
RXhjZXB0aW9uKQogZnJvbSBzZWxlbml1bS53ZWJkcml2ZXIuY29tbW9uLmJ5IGltcG9ydCBCeQot
ZnJvbSBzZWxlbml1bS53ZWJkcml2ZXIuY29tbW9uLmh0bWw1LmFwcGxpY2F0aW9uX2NhY2hlIGlt
cG9ydCBBcHBsaWNhdGlvbkNhY2hlCi0KIGZyb20gc2VsZW5pdW0ud2ViZHJpdmVyLmNvbW1vbi50
aW1lb3V0cyBpbXBvcnQgVGltZW91dHMKLQorZnJvbSBzZWxlbml1bS53ZWJkcml2ZXIuY29tbW9u
Lmh0bWw1LmFwcGxpY2F0aW9uX2NhY2hlIGltcG9ydCBBcHBsaWNhdGlvbkNhY2hlCiBmcm9tIHNl
bGVuaXVtLndlYmRyaXZlci5zdXBwb3J0LnJlbGF0aXZlX2xvY2F0b3IgaW1wb3J0IFJlbGF0aXZl
QnkKIAorZnJvbSBzaXggaW1wb3J0IGFkZF9tZXRhY2xhc3MKKwogdHJ5OgogICAgIHN0ciA9IGJh
c2VzdHJpbmcKIGV4Y2VwdCBOYW1lRXJyb3I6CkBAIC0xMTMsNyArMTE0LDE3IEBAIGRlZiBnZXRf
cmVtb3RlX2Nvbm5lY3Rpb24oY2FwYWJpbGl0aWVzLCBjb21tYW5kX2V4ZWN1dG9yLCBrZWVwX2Fs
aXZlKToKICAgICByZXR1cm4gaGFuZGxlcihjb21tYW5kX2V4ZWN1dG9yLCBrZWVwX2FsaXZlPWtl
ZXBfYWxpdmUpCiAKIAotY2xhc3MgV2ViRHJpdmVyKG9iamVjdCk6CitAYWRkX21ldGFjbGFzcyhB
QkNNZXRhKQorY2xhc3MgQmFzZVdlYkRyaXZlcihvYmplY3QpOgorICAgICIiIgorICAgIEFic3Ry
YWN0IEJhc2UgQ2xhc3MgZm9yIGFsbCBXZWJkcml2ZXIgc3VidHlwZXMuCisgICAgQUJDJ3MgYWxs
b3cgY3VzdG9tIGltcGxlbWVudGF0aW9ucyBvZiBXZWJkcml2ZXIgdG8gYmUgcmVnaXN0ZXJlZCBz
byB0aGF0IGlzaW5zdGFuY2UgdHlwZSBjaGVja3MKKyAgICB3aWxsIHN1Y2NlZWQuCisgICAgIiIi
CisgICAgIyBUT0RPOiBBZnRlciBkcm9wcGluZyBQeXRob24gMiwgdXNlIEFCQyBpbnN0ZWFkIG9m
IEFCQ01ldGEgYW5kIHJlbW92ZSBtZXRhY2xhc3MgZGVjb3JhdG9yLgorCisKK2NsYXNzIFdlYkRy
aXZlcihCYXNlV2ViRHJpdmVyKToKICAgICAiIiIKICAgICBDb250cm9scyBhIGJyb3dzZXIgYnkg
c2VuZGluZyBjb21tYW5kcyB0byBhIHJlbW90ZSBzZXJ2ZXIuCiAgICAgVGhpcyBzZXJ2ZXIgaXMg
ZXhwZWN0ZWQgdG8gYmUgcnVubmluZyB0aGUgV2ViRHJpdmVyIHdpcmUgcHJvdG9jb2wKQEAgLTE2
MCw3ICsxNzEsNyBAQCBjbGFzcyBXZWJEcml2ZXIob2JqZWN0KToKICAgICAgICAgICAgIGVsc2U6
CiAgICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzLnVwZGF0ZShkZXNpcmVkX2NhcGFiaWxpdGll
cykKICAgICAgICAgc2VsZi5jb21tYW5kX2V4ZWN1dG9yID0gY29tbWFuZF9leGVjdXRvcgotICAg
ICAgICBpZiB0eXBlKHNlbGYuY29tbWFuZF9leGVjdXRvcikgaXMgYnl0ZXMgb3IgaXNpbnN0YW5j
ZShzZWxmLmNvbW1hbmRfZXhlY3V0b3IsIHN0cik6CisgICAgICAgIGlmIGlzaW5zdGFuY2Uoc2Vs
Zi5jb21tYW5kX2V4ZWN1dG9yLCAoc3RyLCBieXRlcykpOgogICAgICAgICAgICAgc2VsZi5jb21t
YW5kX2V4ZWN1dG9yID0gZ2V0X3JlbW90ZV9jb25uZWN0aW9uKGNhcGFiaWxpdGllcywgY29tbWFu
ZF9leGVjdXRvcj1jb21tYW5kX2V4ZWN1dG9yLCBrZWVwX2FsaXZlPWtlZXBfYWxpdmUpCiAgICAg
ICAgIHNlbGYuX2lzX3JlbW90ZSA9IFRydWUKICAgICAgICAgc2VsZi5zZXNzaW9uX2lkID0gTm9u
ZQpAQCAtMzc2LDYgKzM4Nyw3IEBAIGNsYXNzIFdlYkRyaXZlcihvYmplY3QpOgogCiAgICAgICAg
ICAgICAgICAgZWxlbWVudCA9IGRyaXZlci5maW5kX2VsZW1lbnRfYnlfaWQoJ2ZvbycpCiAgICAg
ICAgICIiIgorICAgICAgICB3YXJuaW5ncy53YXJuKCJmaW5kX2VsZW1lbnRfYnlfKiBjb21tYW5k
cyBhcmUgZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSBmaW5kX2VsZW1lbnQoKSBpbnN0ZWFkIikKICAg
ICAgICAgcmV0dXJuIHNlbGYuZmluZF9lbGVtZW50KGJ5PUJ5LklELCB2YWx1ZT1pZF8pCiAKICAg
ICBkZWYgZmluZF9lbGVtZW50c19ieV9pZChzZWxmLCBpZF8pOgpAQCAtMzk0LDYgKzQwNiw3IEBA
IGNsYXNzIFdlYkRyaXZlcihvYmplY3QpOgogCiAgICAgICAgICAgICAgICAgZWxlbWVudHMgPSBk
cml2ZXIuZmluZF9lbGVtZW50c19ieV9pZCgnZm9vJykKICAgICAgICAgIiIiCisgICAgICAgIHdh
cm5pbmdzLndhcm4oImZpbmRfZWxlbWVudHNfYnlfKiBjb21tYW5kcyBhcmUgZGVwcmVjYXRlZC4g
UGxlYXNlIHVzZSBmaW5kX2VsZW1lbnRzKCkgaW5zdGVhZCIpCiAgICAgICAgIHJldHVybiBzZWxm
LmZpbmRfZWxlbWVudHMoYnk9QnkuSUQsIHZhbHVlPWlkXykKIAogICAgIGRlZiBmaW5kX2VsZW1l
bnRfYnlfeHBhdGgoc2VsZiwgeHBhdGgpOgpAQCAtNDE0LDYgKzQyNyw3IEBAIGNsYXNzIFdlYkRy
aXZlcihvYmplY3QpOgogCiAgICAgICAgICAgICAgICAgZWxlbWVudCA9IGRyaXZlci5maW5kX2Vs
ZW1lbnRfYnlfeHBhdGgoJy8vZGl2L3RkWzFdJykKICAgICAgICAgIiIiCisgICAgICAgIHdhcm5p
bmdzLndhcm4oImZpbmRfZWxlbWVudF9ieV8qIGNvbW1hbmRzIGFyZSBkZXByZWNhdGVkLiBQbGVh
c2UgdXNlIGZpbmRfZWxlbWVudCgpIGluc3RlYWQiKQogICAgICAgICByZXR1cm4gc2VsZi5maW5k
X2VsZW1lbnQoYnk9QnkuWFBBVEgsIHZhbHVlPXhwYXRoKQogCiAgICAgZGVmIGZpbmRfZWxlbWVu
dHNfYnlfeHBhdGgoc2VsZiwgeHBhdGgpOgpAQCAtNDMyLDYgKzQ0Niw3IEBAIGNsYXNzIFdlYkRy
aXZlcihvYmplY3QpOgogCiAgICAgICAgICAgICAgICAgZWxlbWVudHMgPSBkcml2ZXIuZmluZF9l
bGVtZW50c19ieV94cGF0aCgiLy9kaXZbY29udGFpbnMoQGNsYXNzLCAnZm9vJyldIikKICAgICAg
ICAgIiIiCisgICAgICAgIHdhcm5pbmdzLndhcm4oImZpbmRfZWxlbWVudHNfYnlfKiBjb21tYW5k
cyBhcmUgZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSBmaW5kX2VsZW1lbnRzKCkgaW5zdGVhZCIpCiAg
ICAgICAgIHJldHVybiBzZWxmLmZpbmRfZWxlbWVudHMoYnk9QnkuWFBBVEgsIHZhbHVlPXhwYXRo
KQogCiAgICAgZGVmIGZpbmRfZWxlbWVudF9ieV9saW5rX3RleHQoc2VsZiwgbGlua190ZXh0KToK
QEAgLTQ1Miw2ICs0NjcsNyBAQCBjbGFzcyBXZWJEcml2ZXIob2JqZWN0KToKIAogICAgICAgICAg
ICAgICAgIGVsZW1lbnQgPSBkcml2ZXIuZmluZF9lbGVtZW50X2J5X2xpbmtfdGV4dCgnU2lnbiBJ
bicpCiAgICAgICAgICIiIgorICAgICAgICB3YXJuaW5ncy53YXJuKCJmaW5kX2VsZW1lbnRfYnlf
KiBjb21tYW5kcyBhcmUgZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSBmaW5kX2VsZW1lbnQoKSBpbnN0
ZWFkIikKICAgICAgICAgcmV0dXJuIHNlbGYuZmluZF9lbGVtZW50KGJ5PUJ5LkxJTktfVEVYVCwg
dmFsdWU9bGlua190ZXh0KQogCiAgICAgZGVmIGZpbmRfZWxlbWVudHNfYnlfbGlua190ZXh0KHNl
bGYsIHRleHQpOgpAQCAtNDcwLDYgKzQ4Niw3IEBAIGNsYXNzIFdlYkRyaXZlcihvYmplY3QpOgog
CiAgICAgICAgICAgICAgICAgZWxlbWVudHMgPSBkcml2ZXIuZmluZF9lbGVtZW50c19ieV9saW5r
X3RleHQoJ1NpZ24gSW4nKQogICAgICAgICAiIiIKKyAgICAgICAgd2FybmluZ3Mud2FybigiZmlu
ZF9lbGVtZW50c19ieV8qIGNvbW1hbmRzIGFyZSBkZXByZWNhdGVkLiBQbGVhc2UgdXNlIGZpbmRf
ZWxlbWVudHMoKSBpbnN0ZWFkIikKICAgICAgICAgcmV0dXJuIHNlbGYuZmluZF9lbGVtZW50cyhi
eT1CeS5MSU5LX1RFWFQsIHZhbHVlPXRleHQpCiAKICAgICBkZWYgZmluZF9lbGVtZW50X2J5X3Bh
cnRpYWxfbGlua190ZXh0KHNlbGYsIGxpbmtfdGV4dCk6CkBAIC00OTAsNiArNTA3LDcgQEAgY2xh
c3MgV2ViRHJpdmVyKG9iamVjdCk6CiAKICAgICAgICAgICAgICAgICBlbGVtZW50ID0gZHJpdmVy
LmZpbmRfZWxlbWVudF9ieV9wYXJ0aWFsX2xpbmtfdGV4dCgnU2lnbicpCiAgICAgICAgICIiIgor
ICAgICAgICB3YXJuaW5ncy53YXJuKCJmaW5kX2VsZW1lbnRfYnlfKiBjb21tYW5kcyBhcmUgZGVw
cmVjYXRlZC4gUGxlYXNlIHVzZSBmaW5kX2VsZW1lbnQoKSBpbnN0ZWFkIikKICAgICAgICAgcmV0
dXJuIHNlbGYuZmluZF9lbGVtZW50KGJ5PUJ5LlBBUlRJQUxfTElOS19URVhULCB2YWx1ZT1saW5r
X3RleHQpCiAKICAgICBkZWYgZmluZF9lbGVtZW50c19ieV9wYXJ0aWFsX2xpbmtfdGV4dChzZWxm
LCBsaW5rX3RleHQpOgpAQCAtNTA4LDYgKzUyNiw3IEBAIGNsYXNzIFdlYkRyaXZlcihvYmplY3Qp
OgogCiAgICAgICAgICAgICAgICAgZWxlbWVudHMgPSBkcml2ZXIuZmluZF9lbGVtZW50c19ieV9w
YXJ0aWFsX2xpbmtfdGV4dCgnU2lnbicpCiAgICAgICAgICIiIgorICAgICAgICB3YXJuaW5ncy53
YXJuKCJmaW5kX2VsZW1lbnRzX2J5XyogY29tbWFuZHMgYXJlIGRlcHJlY2F0ZWQuIFBsZWFzZSB1
c2UgZmluZF9lbGVtZW50cygpIGluc3RlYWQiKQogICAgICAgICByZXR1cm4gc2VsZi5maW5kX2Vs
ZW1lbnRzKGJ5PUJ5LlBBUlRJQUxfTElOS19URVhULCB2YWx1ZT1saW5rX3RleHQpCiAKICAgICBk
ZWYgZmluZF9lbGVtZW50X2J5X25hbWUoc2VsZiwgbmFtZSk6CkBAIC01MjgsNiArNTQ3LDcgQEAg
Y2xhc3MgV2ViRHJpdmVyKG9iamVjdCk6CiAKICAgICAgICAgICAgICAgICBlbGVtZW50ID0gZHJp
dmVyLmZpbmRfZWxlbWVudF9ieV9uYW1lKCdmb28nKQogICAgICAgICAiIiIKKyAgICAgICAgd2Fy
bmluZ3Mud2FybigiZmluZF9lbGVtZW50X2J5XyogY29tbWFuZHMgYXJlIGRlcHJlY2F0ZWQuIFBs
ZWFzZSB1c2UgZmluZF9lbGVtZW50KCkgaW5zdGVhZCIpCiAgICAgICAgIHJldHVybiBzZWxmLmZp
bmRfZWxlbWVudChieT1CeS5OQU1FLCB2YWx1ZT1uYW1lKQogCiAgICAgZGVmIGZpbmRfZWxlbWVu
dHNfYnlfbmFtZShzZWxmLCBuYW1lKToKQEAgLTU0Niw2ICs1NjYsNyBAQCBjbGFzcyBXZWJEcml2
ZXIob2JqZWN0KToKIAogICAgICAgICAgICAgICAgIGVsZW1lbnRzID0gZHJpdmVyLmZpbmRfZWxl
bWVudHNfYnlfbmFtZSgnZm9vJykKICAgICAgICAgIiIiCisgICAgICAgIHdhcm5pbmdzLndhcm4o
ImZpbmRfZWxlbWVudHNfYnlfKiBjb21tYW5kcyBhcmUgZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSBm
aW5kX2VsZW1lbnRzKCkgaW5zdGVhZCIpCiAgICAgICAgIHJldHVybiBzZWxmLmZpbmRfZWxlbWVu
dHMoYnk9QnkuTkFNRSwgdmFsdWU9bmFtZSkKIAogICAgIGRlZiBmaW5kX2VsZW1lbnRfYnlfdGFn
X25hbWUoc2VsZiwgbmFtZSk6CkBAIC01NjYsNiArNTg3LDcgQEAgY2xhc3MgV2ViRHJpdmVyKG9i
amVjdCk6CiAKICAgICAgICAgICAgICAgICBlbGVtZW50ID0gZHJpdmVyLmZpbmRfZWxlbWVudF9i
eV90YWdfbmFtZSgnaDEnKQogICAgICAgICAiIiIKKyAgICAgICAgd2FybmluZ3Mud2FybigiZmlu
ZF9lbGVtZW50X2J5XyogY29tbWFuZHMgYXJlIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2UgZmluZF9l
bGVtZW50KCkgaW5zdGVhZCIpCiAgICAgICAgIHJldHVybiBzZWxmLmZpbmRfZWxlbWVudChieT1C
eS5UQUdfTkFNRSwgdmFsdWU9bmFtZSkKIAogICAgIGRlZiBmaW5kX2VsZW1lbnRzX2J5X3RhZ19u
YW1lKHNlbGYsIG5hbWUpOgpAQCAtNTg0LDYgKzYwNiw3IEBAIGNsYXNzIFdlYkRyaXZlcihvYmpl
Y3QpOgogCiAgICAgICAgICAgICAgICAgZWxlbWVudHMgPSBkcml2ZXIuZmluZF9lbGVtZW50c19i
eV90YWdfbmFtZSgnaDEnKQogICAgICAgICAiIiIKKyAgICAgICAgd2FybmluZ3Mud2FybigiZmlu
ZF9lbGVtZW50c19ieV8qIGNvbW1hbmRzIGFyZSBkZXByZWNhdGVkLiBQbGVhc2UgdXNlIGZpbmRf
ZWxlbWVudHMoKSBpbnN0ZWFkIikKICAgICAgICAgcmV0dXJuIHNlbGYuZmluZF9lbGVtZW50cyhi
eT1CeS5UQUdfTkFNRSwgdmFsdWU9bmFtZSkKIAogICAgIGRlZiBmaW5kX2VsZW1lbnRfYnlfY2xh
c3NfbmFtZShzZWxmLCBuYW1lKToKQEAgLTYwNCw2ICs2MjcsNyBAQCBjbGFzcyBXZWJEcml2ZXIo
b2JqZWN0KToKIAogICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBkcml2ZXIuZmluZF9lbGVtZW50
X2J5X2NsYXNzX25hbWUoJ2ZvbycpCiAgICAgICAgICIiIgorICAgICAgICB3YXJuaW5ncy53YXJu
KCJmaW5kX2VsZW1lbnRfYnlfKiBjb21tYW5kcyBhcmUgZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSBm
aW5kX2VsZW1lbnQoKSBpbnN0ZWFkIikKICAgICAgICAgcmV0dXJuIHNlbGYuZmluZF9lbGVtZW50
KGJ5PUJ5LkNMQVNTX05BTUUsIHZhbHVlPW5hbWUpCiAKICAgICBkZWYgZmluZF9lbGVtZW50c19i
eV9jbGFzc19uYW1lKHNlbGYsIG5hbWUpOgpAQCAtNjIyLDYgKzY0Niw3IEBAIGNsYXNzIFdlYkRy
aXZlcihvYmplY3QpOgogCiAgICAgICAgICAgICAgICAgZWxlbWVudHMgPSBkcml2ZXIuZmluZF9l
bGVtZW50c19ieV9jbGFzc19uYW1lKCdmb28nKQogICAgICAgICAiIiIKKyAgICAgICAgd2Fybmlu
Z3Mud2FybigiZmluZF9lbGVtZW50c19ieV8qIGNvbW1hbmRzIGFyZSBkZXByZWNhdGVkLiBQbGVh
c2UgdXNlIGZpbmRfZWxlbWVudHMoKSBpbnN0ZWFkIikKICAgICAgICAgcmV0dXJuIHNlbGYuZmlu
ZF9lbGVtZW50cyhieT1CeS5DTEFTU19OQU1FLCB2YWx1ZT1uYW1lKQogCiAgICAgZGVmIGZpbmRf
ZWxlbWVudF9ieV9jc3Nfc2VsZWN0b3Ioc2VsZiwgY3NzX3NlbGVjdG9yKToKQEAgLTY0Miw2ICs2
NjcsNyBAQCBjbGFzcyBXZWJEcml2ZXIob2JqZWN0KToKIAogICAgICAgICAgICAgICAgIGVsZW1l
bnQgPSBkcml2ZXIuZmluZF9lbGVtZW50X2J5X2Nzc19zZWxlY3RvcignI2ZvbycpCiAgICAgICAg
ICIiIgorICAgICAgICB3YXJuaW5ncy53YXJuKCJmaW5kX2VsZW1lbnRfYnlfKiBjb21tYW5kcyBh
cmUgZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSBmaW5kX2VsZW1lbnQoKSBpbnN0ZWFkIikKICAgICAg
ICAgcmV0dXJuIHNlbGYuZmluZF9lbGVtZW50KGJ5PUJ5LkNTU19TRUxFQ1RPUiwgdmFsdWU9Y3Nz
X3NlbGVjdG9yKQogCiAgICAgZGVmIGZpbmRfZWxlbWVudHNfYnlfY3NzX3NlbGVjdG9yKHNlbGYs
IGNzc19zZWxlY3Rvcik6CkBAIC02NjAsNiArNjg2LDcgQEAgY2xhc3MgV2ViRHJpdmVyKG9iamVj
dCk6CiAKICAgICAgICAgICAgICAgICBlbGVtZW50cyA9IGRyaXZlci5maW5kX2VsZW1lbnRzX2J5
X2Nzc19zZWxlY3RvcignLmZvbycpCiAgICAgICAgICIiIgorICAgICAgICB3YXJuaW5ncy53YXJu
KCJmaW5kX2VsZW1lbnRzX2J5XyogY29tbWFuZHMgYXJlIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2Ug
ZmluZF9lbGVtZW50cygpIGluc3RlYWQiKQogICAgICAgICByZXR1cm4gc2VsZi5maW5kX2VsZW1l
bnRzKGJ5PUJ5LkNTU19TRUxFQ1RPUiwgdmFsdWU9Y3NzX3NlbGVjdG9yKQogCiAgICAgZGVmIGV4
ZWN1dGVfc2NyaXB0KHNlbGYsIHNjcmlwdCwgKmFyZ3MpOgpAQCAtOTI5LDE1ICs5NTYsMjAgQEAg
Y2xhc3MgV2ViRHJpdmVyKG9iamVjdCk6CiAKICAgICAgICAgOkFyZ3M6CiAgICAgICAgICAtIGNv
b2tpZV9kaWN0OiBBIGRpY3Rpb25hcnkgb2JqZWN0LCB3aXRoIHJlcXVpcmVkIGtleXMgLSAibmFt
ZSIgYW5kICJ2YWx1ZSI7Ci0gICAgICAgICAgICBvcHRpb25hbCBrZXlzIC0gInBhdGgiLCAiZG9t
YWluIiwgInNlY3VyZSIsICJleHBpcnkiCisgICAgICAgICAgICBvcHRpb25hbCBrZXlzIC0gInBh
dGgiLCAiZG9tYWluIiwgInNlY3VyZSIsICJleHBpcnkiLCAic2FtZVNpdGUiCiAKICAgICAgICAg
VXNhZ2U6CiAgICAgICAgICAgICBkcml2ZXIuYWRkX2Nvb2tpZSh7J25hbWUnIDogJ2ZvbycsICd2
YWx1ZScgOiAnYmFyJ30pCiAgICAgICAgICAgICBkcml2ZXIuYWRkX2Nvb2tpZSh7J25hbWUnIDog
J2ZvbycsICd2YWx1ZScgOiAnYmFyJywgJ3BhdGgnIDogJy8nfSkKICAgICAgICAgICAgIGRyaXZl
ci5hZGRfY29va2llKHsnbmFtZScgOiAnZm9vJywgJ3ZhbHVlJyA6ICdiYXInLCAncGF0aCcgOiAn
LycsICdzZWN1cmUnOlRydWV9KQorICAgICAgICAgICAgZHJpdmVyLmFkZF9jb29raWUoeyduYW1l
JzogJ2ZvbycsICd2YWx1ZSc6ICdiYXInLCAnc2FtZVNpdGUnOiAnU3RyaWN0J30pCiAKICAgICAg
ICAgIiIiCi0gICAgICAgIHNlbGYuZXhlY3V0ZShDb21tYW5kLkFERF9DT09LSUUsIHsnY29va2ll
JzogY29va2llX2RpY3R9KQorICAgICAgICBpZiAnc2FtZVNpdGUnIGluIGNvb2tpZV9kaWN0Ogor
ICAgICAgICAgICAgYXNzZXJ0IGNvb2tpZV9kaWN0WydzYW1lU2l0ZSddIGluIFsnU3RyaWN0Jywg
J0xheCddCisgICAgICAgICAgICBzZWxmLmV4ZWN1dGUoQ29tbWFuZC5BRERfQ09PS0lFLCB7J2Nv
b2tpZSc6IGNvb2tpZV9kaWN0fSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZXhl
Y3V0ZShDb21tYW5kLkFERF9DT09LSUUsIHsnY29va2llJzogY29va2llX2RpY3R9KQogCiAgICAg
IyBUaW1lb3V0cwogICAgIGRlZiBpbXBsaWNpdGx5X3dhaXQoc2VsZiwgdGltZV90b193YWl0KToK
QEAgLTEwMjIsNyArMTA1NCw3IEBAIGNsYXNzIFdlYkRyaXZlcihvYmplY3QpOgogICAgIEB0aW1l
b3V0cy5zZXR0ZXIKICAgICBkZWYgdGltZW91dHMoc2VsZiwgdGltZW91dHMpOgogICAgICAgICAi
IiIKLSAgICAgICAgU2V0IGFsbCB0aW1lb3V0cyBmb3IgdGhlIHNlc3Npb24uIFRoaXMgd2lsbCBv
dmVycmlkZSBhbnkgcHJldmlvdXNseSAKKyAgICAgICAgU2V0IGFsbCB0aW1lb3V0cyBmb3IgdGhl
IHNlc3Npb24uIFRoaXMgd2lsbCBvdmVycmlkZSBhbnkgcHJldmlvdXNseQogICAgICAgICBzZXQg
dGltZW91dHMuCiAKICAgICAgICAgOlVzYWdlOgpkaWZmIC0tZ2l0IGEvV2ViRHJpdmVyVGVzdHMv
aW1wb3J0ZWQvc2VsZW5pdW0vcHkvc2VsZW5pdW0vd2ViZHJpdmVyL3JlbW90ZS93ZWJlbGVtZW50
LnB5IGIvV2ViRHJpdmVyVGVzdHMvaW1wb3J0ZWQvc2VsZW5pdW0vcHkvc2VsZW5pdW0vd2ViZHJp
dmVyL3JlbW90ZS93ZWJlbGVtZW50LnB5CmluZGV4IDZmYmRlOTM1MzJkZGQyMTg1OTY2Mzg4Mzcy
ODVhZTFjOWM2ZjY1ZjUuLjZmM2ViYmNjM2I1NDdhY2VkMDhmNjYzYTViZmNiNmI0YTAxOGE4NWYg
MTAwNjQ0Ci0tLSBhL1dlYkRyaXZlclRlc3RzL2ltcG9ydGVkL3NlbGVuaXVtL3B5L3NlbGVuaXVt
L3dlYmRyaXZlci9yZW1vdGUvd2ViZWxlbWVudC5weQorKysgYi9XZWJEcml2ZXJUZXN0cy9pbXBv
cnRlZC9zZWxlbml1bS9weS9zZWxlbml1bS93ZWJkcml2ZXIvcmVtb3RlL3dlYmVsZW1lbnQucHkK
QEAgLTIxLDEyICsyMSwxNiBAQCBpbXBvcnQgb3MKIGltcG9ydCBwa2d1dGlsCiBpbXBvcnQgd2Fy
bmluZ3MKIGltcG9ydCB6aXBmaWxlCitmcm9tIGFiYyBpbXBvcnQgQUJDTWV0YQorZnJvbSBpbyBp
bXBvcnQgQnl0ZXNJTwogCiBmcm9tIHNlbGVuaXVtLmNvbW1vbi5leGNlcHRpb25zIGltcG9ydCBX
ZWJEcml2ZXJFeGNlcHRpb24KIGZyb20gc2VsZW5pdW0ud2ViZHJpdmVyLmNvbW1vbi5ieSBpbXBv
cnQgQnkKIGZyb20gc2VsZW5pdW0ud2ViZHJpdmVyLmNvbW1vbi51dGlscyBpbXBvcnQga2V5c190
b190eXBpbmcKIGZyb20gLmNvbW1hbmQgaW1wb3J0IENvbW1hbmQKIAorZnJvbSBzaXggaW1wb3J0
IGFkZF9tZXRhY2xhc3MKKwogIyBQeXRob24gMyBpbXBvcnRzCiB0cnk6CiAgICAgc3RyID0gYmFz
ZXN0cmluZwpAQCAtMzUsMjEgKzM5LDI3IEBAIGV4Y2VwdCBOYW1lRXJyb3I6CiAKIHRyeToKICAg
ICBmcm9tIGJhc2U2NCBpbXBvcnQgZW5jb2RlYnl0ZXMKLWV4Y2VwdCBJbXBvcnRFcnJvcjogICMg
MysKK2V4Y2VwdCBJbXBvcnRFcnJvcjogICMgUHl0aG9uIDIKICAgICBmcm9tIGJhc2U2NCBpbXBv
cnQgZW5jb2Rlc3RyaW5nIGFzIGVuY29kZWJ5dGVzCiAKLXRyeToKLSAgICBmcm9tIFN0cmluZ0lP
IGltcG9ydCBTdHJpbmdJTyBhcyBJT1N0cmVhbQotZXhjZXB0IEltcG9ydEVycm9yOiAgIyAzKwot
ICAgIGZyb20gaW8gaW1wb3J0IEJ5dGVzSU8gYXMgSU9TdHJlYW0KIAorIyBUT0RPOiB3aGVuIGRy
b3BwaW5nIFB5dGhvbiAyLjcsIHVzZSBidWlsdCBpbiBpbXBvcnRsaWJfcmVzb3VyY2VzLmZpbGVz
CiAjIG5vdCByZWx5aW5nIG9uIF9fcGFja2FnZV9fIGhlcmUgYXMgaXQgY2FuIGJlIGBOb25lYCBp
biBzb21lIHNpdHVhdGlvbnMgKHNlZSAjNDU1OCkKIF9wa2cgPSAnLicuam9pbihfX25hbWVfXy5z
cGxpdCgnLicpWzotMV0pCiBnZXRBdHRyaWJ1dGVfanMgPSBwa2d1dGlsLmdldF9kYXRhKF9wa2cs
ICdnZXRBdHRyaWJ1dGUuanMnKS5kZWNvZGUoJ3V0ZjgnKQogaXNEaXNwbGF5ZWRfanMgPSBwa2d1
dGlsLmdldF9kYXRhKF9wa2csICdpc0Rpc3BsYXllZC5qcycpLmRlY29kZSgndXRmOCcpCiAKIAot
Y2xhc3MgV2ViRWxlbWVudChvYmplY3QpOgorQGFkZF9tZXRhY2xhc3MoQUJDTWV0YSkKK2NsYXNz
IEJhc2VXZWJFbGVtZW50KG9iamVjdCk6CisgICAgIiIiCisgICAgQWJzdHJhY3QgQmFzZSBDbGFz
cyBmb3IgV2ViRWxlbWVudC4KKyAgICBBQkMncyB3aWxsIGFsbG93IGN1c3RvbSB0eXBlcyB0byBi
ZSByZWdpc3RlcmVkIGFzIGEgV2ViRWxlbWVudCB0byBwYXNzIHR5cGUgY2hlY2tzLgorICAgICIi
IgorICAgIHBhc3MKKworCitjbGFzcyBXZWJFbGVtZW50KEJhc2VXZWJFbGVtZW50KToKICAgICAi
IiJSZXByZXNlbnRzIGEgRE9NIGVsZW1lbnQuCiAKICAgICBHZW5lcmFsbHksIGFsbCBpbnRlcmVz
dGluZyBvcGVyYXRpb25zIHRoYXQgaW50ZXJhY3Qgd2l0aCBhIGRvY3VtZW50IHdpbGwgYmUKQEAg
LTE0MCwxOCArMTUwLDE4IEBAIGNsYXNzIFdlYkVsZW1lbnQob2JqZWN0KToKIAogICAgICAgICAi
IiIKIAotICAgICAgICBhdHRyaWJ1dGVWYWx1ZSA9ICcnCisgICAgICAgIGF0dHJpYnV0ZV92YWx1
ZSA9ICcnCiAgICAgICAgIGlmIHNlbGYuX3czYzoKLSAgICAgICAgICAgIGF0dHJpYnV0ZVZhbHVl
ID0gc2VsZi5wYXJlbnQuZXhlY3V0ZV9zY3JpcHQoCisgICAgICAgICAgICBhdHRyaWJ1dGVfdmFs
dWUgPSBzZWxmLnBhcmVudC5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgICAgICAicmV0dXJu
ICglcykuYXBwbHkobnVsbCwgYXJndW1lbnRzKTsiICUgZ2V0QXR0cmlidXRlX2pzLAogICAgICAg
ICAgICAgICAgIHNlbGYsIG5hbWUpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXNwID0g
c2VsZi5fZXhlY3V0ZShDb21tYW5kLkdFVF9FTEVNRU5UX0FUVFJJQlVURSwgeyduYW1lJzogbmFt
ZX0pCi0gICAgICAgICAgICBhdHRyaWJ1dGVWYWx1ZSA9IHJlc3AuZ2V0KCd2YWx1ZScpCi0gICAg
ICAgICAgICBpZiBhdHRyaWJ1dGVWYWx1ZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICBp
ZiBuYW1lICE9ICd2YWx1ZScgYW5kIGF0dHJpYnV0ZVZhbHVlLmxvd2VyKCkgaW4gKCd0cnVlJywg
J2ZhbHNlJyk6Ci0gICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZVZhbHVlID0gYXR0cmlidXRl
VmFsdWUubG93ZXIoKQotICAgICAgICByZXR1cm4gYXR0cmlidXRlVmFsdWUKKyAgICAgICAgICAg
IGF0dHJpYnV0ZV92YWx1ZSA9IHJlc3AuZ2V0KCd2YWx1ZScpCisgICAgICAgICAgICBpZiBhdHRy
aWJ1dGVfdmFsdWUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgaWYgbmFtZSAhPSAndmFs
dWUnIGFuZCBhdHRyaWJ1dGVfdmFsdWUubG93ZXIoKSBpbiAoJ3RydWUnLCAnZmFsc2UnKToKKyAg
ICAgICAgICAgICAgICAgICAgYXR0cmlidXRlX3ZhbHVlID0gYXR0cmlidXRlX3ZhbHVlLmxvd2Vy
KCkKKyAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZV92YWx1ZQogCiAgICAgZGVmIGlzX3NlbGVjdGVk
KHNlbGYpOgogICAgICAgICAiIiJSZXR1cm5zIHdoZXRoZXIgdGhlIGVsZW1lbnQgaXMgc2VsZWN0
ZWQuCkBAIC0xODEsNiArMTkxLDcgQEAgY2xhc3MgV2ViRWxlbWVudChvYmplY3QpOgogCiAgICAg
ICAgICAgICAgICAgZm9vX2VsZW1lbnQgPSBlbGVtZW50LmZpbmRfZWxlbWVudF9ieV9pZCgnZm9v
JykKICAgICAgICAgIiIiCisgICAgICAgIHdhcm5pbmdzLndhcm4oImZpbmRfZWxlbWVudF9ieV8q
IGNvbW1hbmRzIGFyZSBkZXByZWNhdGVkLiBQbGVhc2UgdXNlIGZpbmRfZWxlbWVudCgpIGluc3Rl
YWQiKQogICAgICAgICByZXR1cm4gc2VsZi5maW5kX2VsZW1lbnQoYnk9QnkuSUQsIHZhbHVlPWlk
XykKIAogICAgIGRlZiBmaW5kX2VsZW1lbnRzX2J5X2lkKHNlbGYsIGlkXyk6CkBAIC0xOTksNiAr
MjEwLDcgQEAgY2xhc3MgV2ViRWxlbWVudChvYmplY3QpOgogCiAgICAgICAgICAgICAgICAgZWxl
bWVudHMgPSBlbGVtZW50LmZpbmRfZWxlbWVudHNfYnlfaWQoJ2ZvbycpCiAgICAgICAgICIiIgor
ICAgICAgICB3YXJuaW5ncy53YXJuKCJmaW5kX2VsZW1lbnRzX2J5XyogY29tbWFuZHMgYXJlIGRl
cHJlY2F0ZWQuIFBsZWFzZSB1c2UgZmluZF9lbGVtZW50cygpIGluc3RlYWQiKQogICAgICAgICBy
ZXR1cm4gc2VsZi5maW5kX2VsZW1lbnRzKGJ5PUJ5LklELCB2YWx1ZT1pZF8pCiAKICAgICBkZWYg
ZmluZF9lbGVtZW50X2J5X25hbWUoc2VsZiwgbmFtZSk6CkBAIC0yMTgsNiArMjMwLDcgQEAgY2xh
c3MgV2ViRWxlbWVudChvYmplY3QpOgogCiAgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1l
bnQuZmluZF9lbGVtZW50X2J5X25hbWUoJ2ZvbycpCiAgICAgICAgICIiIgorICAgICAgICB3YXJu
aW5ncy53YXJuKCJmaW5kX2VsZW1lbnRfYnlfKiBjb21tYW5kcyBhcmUgZGVwcmVjYXRlZC4gUGxl
YXNlIHVzZSBmaW5kX2VsZW1lbnQoKSBpbnN0ZWFkIikKICAgICAgICAgcmV0dXJuIHNlbGYuZmlu
ZF9lbGVtZW50KGJ5PUJ5Lk5BTUUsIHZhbHVlPW5hbWUpCiAKICAgICBkZWYgZmluZF9lbGVtZW50
c19ieV9uYW1lKHNlbGYsIG5hbWUpOgpAQCAtMjM1LDYgKzI0OCw3IEBAIGNsYXNzIFdlYkVsZW1l
bnQob2JqZWN0KToKIAogICAgICAgICAgICAgICAgIGVsZW1lbnRzID0gZWxlbWVudC5maW5kX2Vs
ZW1lbnRzX2J5X25hbWUoJ2ZvbycpCiAgICAgICAgICIiIgorICAgICAgICB3YXJuaW5ncy53YXJu
KCJmaW5kX2VsZW1lbnRzX2J5XyogY29tbWFuZHMgYXJlIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2Ug
ZmluZF9lbGVtZW50cygpIGluc3RlYWQiKQogICAgICAgICByZXR1cm4gc2VsZi5maW5kX2VsZW1l
bnRzKGJ5PUJ5Lk5BTUUsIHZhbHVlPW5hbWUpCiAKICAgICBkZWYgZmluZF9lbGVtZW50X2J5X2xp
bmtfdGV4dChzZWxmLCBsaW5rX3RleHQpOgpAQCAtMjU0LDYgKzI2OCw3IEBAIGNsYXNzIFdlYkVs
ZW1lbnQob2JqZWN0KToKIAogICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50LmZpbmRf
ZWxlbWVudF9ieV9saW5rX3RleHQoJ1NpZ24gSW4nKQogICAgICAgICAiIiIKKyAgICAgICAgd2Fy
bmluZ3Mud2FybigiZmluZF9lbGVtZW50X2J5XyogY29tbWFuZHMgYXJlIGRlcHJlY2F0ZWQuIFBs
ZWFzZSB1c2UgZmluZF9lbGVtZW50KCkgaW5zdGVhZCIpCiAgICAgICAgIHJldHVybiBzZWxmLmZp
bmRfZWxlbWVudChieT1CeS5MSU5LX1RFWFQsIHZhbHVlPWxpbmtfdGV4dCkKIAogICAgIGRlZiBm
aW5kX2VsZW1lbnRzX2J5X2xpbmtfdGV4dChzZWxmLCBsaW5rX3RleHQpOgpAQCAtMjcxLDYgKzI4
Niw3IEBAIGNsYXNzIFdlYkVsZW1lbnQob2JqZWN0KToKIAogICAgICAgICAgICAgICAgIGVsZW1l
bnRzID0gZWxlbWVudC5maW5kX2VsZW1lbnRzX2J5X2xpbmtfdGV4dCgnU2lnbiBJbicpCiAgICAg
ICAgICIiIgorICAgICAgICB3YXJuaW5ncy53YXJuKCJmaW5kX2VsZW1lbnRzX2J5XyogY29tbWFu
ZHMgYXJlIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2UgZmluZF9lbGVtZW50cygpIGluc3RlYWQiKQog
ICAgICAgICByZXR1cm4gc2VsZi5maW5kX2VsZW1lbnRzKGJ5PUJ5LkxJTktfVEVYVCwgdmFsdWU9
bGlua190ZXh0KQogCiAgICAgZGVmIGZpbmRfZWxlbWVudF9ieV9wYXJ0aWFsX2xpbmtfdGV4dChz
ZWxmLCBsaW5rX3RleHQpOgpAQCAtMjkwLDYgKzMwNiw3IEBAIGNsYXNzIFdlYkVsZW1lbnQob2Jq
ZWN0KToKIAogICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50LmZpbmRfZWxlbWVudF9i
eV9wYXJ0aWFsX2xpbmtfdGV4dCgnU2lnbicpCiAgICAgICAgICIiIgorICAgICAgICB3YXJuaW5n
cy53YXJuKCJmaW5kX2VsZW1lbnRfYnlfKiBjb21tYW5kcyBhcmUgZGVwcmVjYXRlZC4gUGxlYXNl
IHVzZSBmaW5kX2VsZW1lbnQoKSBpbnN0ZWFkIikKICAgICAgICAgcmV0dXJuIHNlbGYuZmluZF9l
bGVtZW50KGJ5PUJ5LlBBUlRJQUxfTElOS19URVhULCB2YWx1ZT1saW5rX3RleHQpCiAKICAgICBk
ZWYgZmluZF9lbGVtZW50c19ieV9wYXJ0aWFsX2xpbmtfdGV4dChzZWxmLCBsaW5rX3RleHQpOgpA
QCAtMzA3LDYgKzMyNCw3IEBAIGNsYXNzIFdlYkVsZW1lbnQob2JqZWN0KToKIAogICAgICAgICAg
ICAgICAgIGVsZW1lbnRzID0gZWxlbWVudC5maW5kX2VsZW1lbnRzX2J5X3BhcnRpYWxfbGlua190
ZXh0KCdTaWduJykKICAgICAgICAgIiIiCisgICAgICAgIHdhcm5pbmdzLndhcm4oImZpbmRfZWxl
bWVudHNfYnlfKiBjb21tYW5kcyBhcmUgZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSBmaW5kX2VsZW1l
bnRzKCkgaW5zdGVhZCIpCiAgICAgICAgIHJldHVybiBzZWxmLmZpbmRfZWxlbWVudHMoYnk9Qnku
UEFSVElBTF9MSU5LX1RFWFQsIHZhbHVlPWxpbmtfdGV4dCkKIAogICAgIGRlZiBmaW5kX2VsZW1l
bnRfYnlfdGFnX25hbWUoc2VsZiwgbmFtZSk6CkBAIC0zMjYsNiArMzQ0LDcgQEAgY2xhc3MgV2Vi
RWxlbWVudChvYmplY3QpOgogCiAgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQuZmlu
ZF9lbGVtZW50X2J5X3RhZ19uYW1lKCdoMScpCiAgICAgICAgICIiIgorICAgICAgICB3YXJuaW5n
cy53YXJuKCJmaW5kX2VsZW1lbnRfYnlfKiBjb21tYW5kcyBhcmUgZGVwcmVjYXRlZC4gUGxlYXNl
IHVzZSBmaW5kX2VsZW1lbnQoKSBpbnN0ZWFkIikKICAgICAgICAgcmV0dXJuIHNlbGYuZmluZF9l
bGVtZW50KGJ5PUJ5LlRBR19OQU1FLCB2YWx1ZT1uYW1lKQogCiAgICAgZGVmIGZpbmRfZWxlbWVu
dHNfYnlfdGFnX25hbWUoc2VsZiwgbmFtZSk6CkBAIC0zNDMsNiArMzYyLDcgQEAgY2xhc3MgV2Vi
RWxlbWVudChvYmplY3QpOgogCiAgICAgICAgICAgICAgICAgZWxlbWVudHMgPSBlbGVtZW50LmZp
bmRfZWxlbWVudHNfYnlfdGFnX25hbWUoJ2gxJykKICAgICAgICAgIiIiCisgICAgICAgIHdhcm5p
bmdzLndhcm4oImZpbmRfZWxlbWVudHNfYnlfKiBjb21tYW5kcyBhcmUgZGVwcmVjYXRlZC4gUGxl
YXNlIHVzZSBmaW5kX2VsZW1lbnRzKCkgaW5zdGVhZCIpCiAgICAgICAgIHJldHVybiBzZWxmLmZp
bmRfZWxlbWVudHMoYnk9QnkuVEFHX05BTUUsIHZhbHVlPW5hbWUpCiAKICAgICBkZWYgZmluZF9l
bGVtZW50X2J5X3hwYXRoKHNlbGYsIHhwYXRoKToKQEAgLTM3Niw2ICszOTYsNyBAQCBjbGFzcyBX
ZWJFbGVtZW50KG9iamVjdCk6CiAKICAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5m
aW5kX2VsZW1lbnRfYnlfeHBhdGgoJy8vZGl2L3RkWzFdJykKICAgICAgICAgIiIiCisgICAgICAg
IHdhcm5pbmdzLndhcm4oImZpbmRfZWxlbWVudF9ieV8qIGNvbW1hbmRzIGFyZSBkZXByZWNhdGVk
LiBQbGVhc2UgdXNlIGZpbmRfZWxlbWVudCgpIGluc3RlYWQiKQogICAgICAgICByZXR1cm4gc2Vs
Zi5maW5kX2VsZW1lbnQoYnk9QnkuWFBBVEgsIHZhbHVlPXhwYXRoKQogCiAgICAgZGVmIGZpbmRf
ZWxlbWVudHNfYnlfeHBhdGgoc2VsZiwgeHBhdGgpOgpAQCAtNDA4LDYgKzQyOSw3IEBAIGNsYXNz
IFdlYkVsZW1lbnQob2JqZWN0KToKICAgICAgICAgICAgICAgICBlbGVtZW50cyA9IGVsZW1lbnQu
ZmluZF9lbGVtZW50c19ieV94cGF0aCgiLy9kaXZbY29udGFpbnMoQGNsYXNzLCAnZm9vJyldIikK
IAogICAgICAgICAiIiIKKyAgICAgICAgd2FybmluZ3Mud2FybigiZmluZF9lbGVtZW50c19ieV8q
IGNvbW1hbmRzIGFyZSBkZXByZWNhdGVkLiBQbGVhc2UgdXNlIGZpbmRfZWxlbWVudHMoKSBpbnN0
ZWFkIikKICAgICAgICAgcmV0dXJuIHNlbGYuZmluZF9lbGVtZW50cyhieT1CeS5YUEFUSCwgdmFs
dWU9eHBhdGgpCiAKICAgICBkZWYgZmluZF9lbGVtZW50X2J5X2NsYXNzX25hbWUoc2VsZiwgbmFt
ZSk6CkBAIC00MjcsNiArNDQ5LDcgQEAgY2xhc3MgV2ViRWxlbWVudChvYmplY3QpOgogCiAgICAg
ICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQuZmluZF9lbGVtZW50X2J5X2NsYXNzX25hbWUo
J2ZvbycpCiAgICAgICAgICIiIgorICAgICAgICB3YXJuaW5ncy53YXJuKCJmaW5kX2VsZW1lbnRf
YnlfKiBjb21tYW5kcyBhcmUgZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSBmaW5kX2VsZW1lbnQoKSBp
bnN0ZWFkIikKICAgICAgICAgcmV0dXJuIHNlbGYuZmluZF9lbGVtZW50KGJ5PUJ5LkNMQVNTX05B
TUUsIHZhbHVlPW5hbWUpCiAKICAgICBkZWYgZmluZF9lbGVtZW50c19ieV9jbGFzc19uYW1lKHNl
bGYsIG5hbWUpOgpAQCAtNDQ0LDYgKzQ2Nyw3IEBAIGNsYXNzIFdlYkVsZW1lbnQob2JqZWN0KToK
IAogICAgICAgICAgICAgICAgIGVsZW1lbnRzID0gZWxlbWVudC5maW5kX2VsZW1lbnRzX2J5X2Ns
YXNzX25hbWUoJ2ZvbycpCiAgICAgICAgICIiIgorICAgICAgICB3YXJuaW5ncy53YXJuKCJmaW5k
X2VsZW1lbnRzX2J5XyogY29tbWFuZHMgYXJlIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2UgZmluZF9l
bGVtZW50cygpIGluc3RlYWQiKQogICAgICAgICByZXR1cm4gc2VsZi5maW5kX2VsZW1lbnRzKGJ5
PUJ5LkNMQVNTX05BTUUsIHZhbHVlPW5hbWUpCiAKICAgICBkZWYgZmluZF9lbGVtZW50X2J5X2Nz
c19zZWxlY3RvcihzZWxmLCBjc3Nfc2VsZWN0b3IpOgpAQCAtNDYzLDYgKzQ4Nyw3IEBAIGNsYXNz
IFdlYkVsZW1lbnQob2JqZWN0KToKIAogICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50
LmZpbmRfZWxlbWVudF9ieV9jc3Nfc2VsZWN0b3IoJyNmb28nKQogICAgICAgICAiIiIKKyAgICAg
ICAgd2FybmluZ3Mud2FybigiZmluZF9lbGVtZW50X2J5XyogY29tbWFuZHMgYXJlIGRlcHJlY2F0
ZWQuIFBsZWFzZSB1c2UgZmluZF9lbGVtZW50KCkgaW5zdGVhZCIpCiAgICAgICAgIHJldHVybiBz
ZWxmLmZpbmRfZWxlbWVudChieT1CeS5DU1NfU0VMRUNUT1IsIHZhbHVlPWNzc19zZWxlY3RvcikK
IAogICAgIGRlZiBmaW5kX2VsZW1lbnRzX2J5X2Nzc19zZWxlY3RvcihzZWxmLCBjc3Nfc2VsZWN0
b3IpOgpAQCAtNDgwLDYgKzUwNSw3IEBAIGNsYXNzIFdlYkVsZW1lbnQob2JqZWN0KToKIAogICAg
ICAgICAgICAgICAgIGVsZW1lbnRzID0gZWxlbWVudC5maW5kX2VsZW1lbnRzX2J5X2Nzc19zZWxl
Y3RvcignLmZvbycpCiAgICAgICAgICIiIgorICAgICAgICB3YXJuaW5ncy53YXJuKCJmaW5kX2Vs
ZW1lbnRzX2J5XyogY29tbWFuZHMgYXJlIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2UgZmluZF9lbGVt
ZW50cygpIGluc3RlYWQiKQogICAgICAgICByZXR1cm4gc2VsZi5maW5kX2VsZW1lbnRzKGJ5PUJ5
LkNTU19TRUxFQ1RPUiwgdmFsdWU9Y3NzX3NlbGVjdG9yKQogCiAgICAgZGVmIHNlbmRfa2V5cyhz
ZWxmLCAqdmFsdWUpOgpAQCAtNDkxLDE0ICs1MTcsMTQgQEAgY2xhc3MgV2ViRWxlbWVudChvYmpl
Y3QpOgogCiAgICAgICAgIFVzZSB0aGlzIHRvIHNlbmQgc2ltcGxlIGtleSBldmVudHMgb3IgdG8g
ZmlsbCBvdXQgZm9ybSBmaWVsZHM6OgogCi0gICAgICAgICAgICBmb3JtX3RleHRmaWVsZCA9IGRy
aXZlci5maW5kX2VsZW1lbnRfYnlfbmFtZSgndXNlcm5hbWUnKQorICAgICAgICAgICAgZm9ybV90
ZXh0ZmllbGQgPSBkcml2ZXIuZmluZF9lbGVtZW50KEJ5Lk5BTUUsICd1c2VybmFtZScpCiAgICAg
ICAgICAgICBmb3JtX3RleHRmaWVsZC5zZW5kX2tleXMoImFkbWluIikKIAogICAgICAgICBUaGlz
IGNhbiBhbHNvIGJlIHVzZWQgdG8gc2V0IGZpbGUgaW5wdXRzLgogCiAgICAgICAgIDo6CiAKLSAg
ICAgICAgICAgIGZpbGVfaW5wdXQgPSBkcml2ZXIuZmluZF9lbGVtZW50X2J5X25hbWUoJ3Byb2Zp
bGVQaWMnKQorICAgICAgICAgICAgZmlsZV9pbnB1dCA9IGRyaXZlci5maW5kX2VsZW1lbnQoQnku
TkFNRSwgJ3Byb2ZpbGVQaWMnKQogICAgICAgICAgICAgZmlsZV9pbnB1dC5zZW5kX2tleXMoInBh
dGgvdG8vcHJvZmlsZXBpYy5naWYiKQogICAgICAgICAgICAgIyBHZW5lcmFsbHkgaXQncyBiZXR0
ZXIgdG8gd3JhcCB0aGUgZmlsZSBwYXRoIGluIG9uZSBvZiB0aGUgbWV0aG9kcwogICAgICAgICAg
ICAgIyBpbiBvcy5wYXRoIHRvIHJldHVybiB0aGUgYWN0dWFsIHBhdGggdG8gc3VwcG9ydCBjcm9z
cyBPUyB0ZXN0aW5nLgpAQCAtNjkyLDcgKzcxOCw3IEBAIGNsYXNzIFdlYkVsZW1lbnQob2JqZWN0
KToKICAgICAgICAgICAgIGlmIGJ5ID09IEJ5LklEOgogICAgICAgICAgICAgICAgIGJ5ID0gQnku
Q1NTX1NFTEVDVE9SCiAgICAgICAgICAgICAgICAgdmFsdWUgPSAnW2lkPSIlcyJdJyAlIHZhbHVl
Ci0gICAgICAgICAgICBlbGlmIGJ5ID09IEJ5LlRBR19OQU1FOiAKKyAgICAgICAgICAgIGVsaWYg
YnkgPT0gQnkuVEFHX05BTUU6CiAgICAgICAgICAgICAgICAgYnkgPSBCeS5DU1NfU0VMRUNUT1IK
ICAgICAgICAgICAgIGVsaWYgYnkgPT0gQnkuQ0xBU1NfTkFNRToKICAgICAgICAgICAgICAgICBi
eSA9IEJ5LkNTU19TRUxFQ1RPUgpAQCAtNzM2LDcgKzc2Miw3IEBAIGNsYXNzIFdlYkVsZW1lbnQo
b2JqZWN0KToKICAgICAgICAgcmV0dXJuIGludChoYXNobGliLm1kNShzZWxmLl9pZC5lbmNvZGUo
J3V0Zi04JykpLmhleGRpZ2VzdCgpLCAxNikKIAogICAgIGRlZiBfdXBsb2FkKHNlbGYsIGZpbGVu
YW1lKToKLSAgICAgICAgZnAgPSBJT1N0cmVhbSgpCisgICAgICAgIGZwID0gQnl0ZXNJTygpCiAg
ICAgICAgIHppcHBlZCA9IHppcGZpbGUuWmlwRmlsZShmcCwgJ3cnLCB6aXBmaWxlLlpJUF9ERUZM
QVRFRCkKICAgICAgICAgemlwcGVkLndyaXRlKGZpbGVuYW1lLCBvcy5wYXRoLnNwbGl0KGZpbGVu
YW1lKVsxXSkKICAgICAgICAgemlwcGVkLmNsb3NlKCkKZGlmZiAtLWdpdCBhL1dlYkRyaXZlclRl
c3RzL2ltcG9ydGVkL3NlbGVuaXVtL3B5L3NlbGVuaXVtL3dlYmRyaXZlci9zdXBwb3J0L2NvbG9y
LnB5IGIvV2ViRHJpdmVyVGVzdHMvaW1wb3J0ZWQvc2VsZW5pdW0vcHkvc2VsZW5pdW0vd2ViZHJp
dmVyL3N1cHBvcnQvY29sb3IucHkKaW5kZXggYjk0ZjdlNTE5MTU2MTUzYzJiMWIxMTQ2NjgyYjI2
ZDE1YmRmN2Q1OS4uNGE5YjhkNDcxYTkzNjUxYTU2ZjYzYWUzYmI5YWFmOWRjM2JmNzc1YiAxMDA2
NDQKLS0tIGEvV2ViRHJpdmVyVGVzdHMvaW1wb3J0ZWQvc2VsZW5pdW0vcHkvc2VsZW5pdW0vd2Vi
ZHJpdmVyL3N1cHBvcnQvY29sb3IucHkKKysrIGIvV2ViRHJpdmVyVGVzdHMvaW1wb3J0ZWQvc2Vs
ZW5pdW0vcHkvc2VsZW5pdW0vd2ViZHJpdmVyL3N1cHBvcnQvY29sb3IucHkKQEAgLTg1LDE1ICs4
NSwxNSBAQCBjbGFzcyBDb2xvcihvYmplY3QpOgogICAgIGRlZiBfZnJvbV9oc2woaCwgcywgbCwg
YT0xKToKICAgICAgICAgaCA9IGZsb2F0KGgpIC8gMzYwCiAgICAgICAgIHMgPSBmbG9hdChzKSAv
IDEwMAotICAgICAgICBsID0gZmxvYXQobCkgLyAxMDAKKyAgICAgICAgX2wgPSBmbG9hdChsKSAv
IDEwMAogCiAgICAgICAgIGlmIHMgPT0gMDoKLSAgICAgICAgICAgIHIgPSBsCisgICAgICAgICAg
ICByID0gX2wKICAgICAgICAgICAgIGcgPSByCiAgICAgICAgICAgICBiID0gcgogICAgICAgICBl
bHNlOgotICAgICAgICAgICAgbHVtaW5vY2l0eTIgPSBsICogKDEgKyBzKSBpZiBsIDwgMC41IGVs
c2UgbCArIHMgLSBsICogcwotICAgICAgICAgICAgbHVtaW5vY2l0eTEgPSAyICogbCAtIGx1bWlu
b2NpdHkyCisgICAgICAgICAgICBsdW1pbm9jaXR5MiA9IF9sICogKDEgKyBzKSBpZiBfbCA8IDAu
NSBlbHNlIF9sICsgcyAtIF9sICogcworICAgICAgICAgICAgbHVtaW5vY2l0eTEgPSAyICogX2wg
LSBsdW1pbm9jaXR5MgogCiAgICAgICAgICAgICBkZWYgaHVlX3RvX3JnYihsdW0xLCBsdW0yLCBo
dWUpOgogICAgICAgICAgICAgICAgIGlmIGh1ZSA8IDAuMDoKZGlmZiAtLWdpdCBhL1dlYkRyaXZl
clRlc3RzL2ltcG9ydGVkL3NlbGVuaXVtL3B5L3NlbGVuaXVtL3dlYmRyaXZlci9zdXBwb3J0L2V2
ZW50X2ZpcmluZ193ZWJkcml2ZXIucHkgYi9XZWJEcml2ZXJUZXN0cy9pbXBvcnRlZC9zZWxlbml1
bS9weS9zZWxlbml1bS93ZWJkcml2ZXIvc3VwcG9ydC9ldmVudF9maXJpbmdfd2ViZHJpdmVyLnB5
CmluZGV4IDMxOGRkODViZDdhYzA5NGQ0MjZlZWE3ODAyNGEwNWM4OGYzNWQ4YjYuLjUzNjIwYTkx
MmU0YjgzM2NlMjRlYzg4YmRjZjU1ZjljOTVlNTgwYWYgMTAwNjQ0Ci0tLSBhL1dlYkRyaXZlclRl
c3RzL2ltcG9ydGVkL3NlbGVuaXVtL3B5L3NlbGVuaXVtL3dlYmRyaXZlci9zdXBwb3J0L2V2ZW50
X2ZpcmluZ193ZWJkcml2ZXIucHkKKysrIGIvV2ViRHJpdmVyVGVzdHMvaW1wb3J0ZWQvc2VsZW5p
dW0vcHkvc2VsZW5pdW0vd2ViZHJpdmVyL3N1cHBvcnQvZXZlbnRfZmlyaW5nX3dlYmRyaXZlci5w
eQpAQCAtMTUsNiArMTUsOSBAQAogIyBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlz
c2lvbnMgYW5kIGxpbWl0YXRpb25zCiAjIHVuZGVyIHRoZSBMaWNlbnNlLgogCisKK2ltcG9ydCB3
YXJuaW5ncworCiBmcm9tIHNlbGVuaXVtLmNvbW1vbi5leGNlcHRpb25zIGltcG9ydCBXZWJEcml2
ZXJFeGNlcHRpb24KIGZyb20gc2VsZW5pdW0ud2ViZHJpdmVyLmNvbW1vbi5ieSBpbXBvcnQgQnkK
IGZyb20gc2VsZW5pdW0ud2ViZHJpdmVyLnJlbW90ZS53ZWJkcml2ZXIgaW1wb3J0IFdlYkRyaXZl
cgpAQCAtMjMsMTAgKzI2LDE0IEBAIGZyb20gLmFic3RyYWN0X2V2ZW50X2xpc3RlbmVyIGltcG9y
dCBBYnN0cmFjdEV2ZW50TGlzdGVuZXIKIAogCiBkZWYgX3dyYXBfZWxlbWVudHMocmVzdWx0LCBl
Zl9kcml2ZXIpOgotICAgIGlmIGlzaW5zdGFuY2UocmVzdWx0LCBXZWJFbGVtZW50KToKKyAgICAj
IGhhbmRsZSB0aGUgY2FzZSBpZiBhbm90aGVyIHdyYXBwZXIgd3JhcHMgRXZlbnRGaXJpbmdXZWJF
bGVtZW50CisgICAgaWYgaXNpbnN0YW5jZShyZXN1bHQsIEV2ZW50RmlyaW5nV2ViRWxlbWVudCk6
CisgICAgICAgIHJldHVybiByZXN1bHQKKyAgICBlbGlmIGlzaW5zdGFuY2UocmVzdWx0LCBXZWJF
bGVtZW50KToKICAgICAgICAgcmV0dXJuIEV2ZW50RmlyaW5nV2ViRWxlbWVudChyZXN1bHQsIGVm
X2RyaXZlcikKICAgICBlbGlmIGlzaW5zdGFuY2UocmVzdWx0LCBsaXN0KToKICAgICAgICAgcmV0
dXJuIFtfd3JhcF9lbGVtZW50cyhpdGVtLCBlZl9kcml2ZXIpIGZvciBpdGVtIGluIHJlc3VsdF0K
KyAgICAjIHJlc3VsdCBpcyBhIGJ1aWx0IGluIHR5cGUuCiAgICAgZWxzZToKICAgICAgICAgcmV0
dXJuIHJlc3VsdAogCkBAIC0xMDQsNTEgKzExMSw2NyBAQCBjbGFzcyBFdmVudEZpcmluZ1dlYkRy
aXZlcihvYmplY3QpOgogICAgICAgICByZXR1cm4gc2VsZi5fZGlzcGF0Y2goImZpbmQiLCAoYnks
IHZhbHVlLCBzZWxmLl9kcml2ZXIpLCAiZmluZF9lbGVtZW50cyIsIChieSwgdmFsdWUpKQogCiAg
ICAgZGVmIGZpbmRfZWxlbWVudF9ieV9pZChzZWxmLCBpZF8pOgorICAgICAgICB3YXJuaW5ncy53
YXJuKCJmaW5kX2VsZW1lbnRfYnlfKiBjb21tYW5kcyBhcmUgZGVwcmVjYXRlZC4gUGxlYXNlIHVz
ZSBmaW5kX2VsZW1lbnQoKSBpbnN0ZWFkIikKICAgICAgICAgcmV0dXJuIHNlbGYuZmluZF9lbGVt
ZW50KGJ5PUJ5LklELCB2YWx1ZT1pZF8pCiAKICAgICBkZWYgZmluZF9lbGVtZW50c19ieV9pZChz
ZWxmLCBpZF8pOgorICAgICAgICB3YXJuaW5ncy53YXJuKCJmaW5kX2VsZW1lbnRfYnlfKiBjb21t
YW5kcyBhcmUgZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSBmaW5kX2VsZW1lbnQoKSBpbnN0ZWFkIikK
ICAgICAgICAgcmV0dXJuIHNlbGYuZmluZF9lbGVtZW50cyhieT1CeS5JRCwgdmFsdWU9aWRfKQog
CiAgICAgZGVmIGZpbmRfZWxlbWVudF9ieV94cGF0aChzZWxmLCB4cGF0aCk6CisgICAgICAgIHdh
cm5pbmdzLndhcm4oImZpbmRfZWxlbWVudF9ieV8qIGNvbW1hbmRzIGFyZSBkZXByZWNhdGVkLiBQ
bGVhc2UgdXNlIGZpbmRfZWxlbWVudCgpIGluc3RlYWQiKQogICAgICAgICByZXR1cm4gc2VsZi5m
aW5kX2VsZW1lbnQoYnk9QnkuWFBBVEgsIHZhbHVlPXhwYXRoKQogCiAgICAgZGVmIGZpbmRfZWxl
bWVudHNfYnlfeHBhdGgoc2VsZiwgeHBhdGgpOgorICAgICAgICB3YXJuaW5ncy53YXJuKCJmaW5k
X2VsZW1lbnRfYnlfKiBjb21tYW5kcyBhcmUgZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSBmaW5kX2Vs
ZW1lbnQoKSBpbnN0ZWFkIikKICAgICAgICAgcmV0dXJuIHNlbGYuZmluZF9lbGVtZW50cyhieT1C
eS5YUEFUSCwgdmFsdWU9eHBhdGgpCiAKICAgICBkZWYgZmluZF9lbGVtZW50X2J5X2xpbmtfdGV4
dChzZWxmLCBsaW5rX3RleHQpOgorICAgICAgICB3YXJuaW5ncy53YXJuKCJmaW5kX2VsZW1lbnRf
YnlfKiBjb21tYW5kcyBhcmUgZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSBmaW5kX2VsZW1lbnQoKSBp
bnN0ZWFkIikKICAgICAgICAgcmV0dXJuIHNlbGYuZmluZF9lbGVtZW50KGJ5PUJ5LkxJTktfVEVY
VCwgdmFsdWU9bGlua190ZXh0KQogCiAgICAgZGVmIGZpbmRfZWxlbWVudHNfYnlfbGlua190ZXh0
KHNlbGYsIHRleHQpOgorICAgICAgICB3YXJuaW5ncy53YXJuKCJmaW5kX2VsZW1lbnRfYnlfKiBj
b21tYW5kcyBhcmUgZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSBmaW5kX2VsZW1lbnQoKSBpbnN0ZWFk
IikKICAgICAgICAgcmV0dXJuIHNlbGYuZmluZF9lbGVtZW50cyhieT1CeS5MSU5LX1RFWFQsIHZh
bHVlPXRleHQpCiAKICAgICBkZWYgZmluZF9lbGVtZW50X2J5X3BhcnRpYWxfbGlua190ZXh0KHNl
bGYsIGxpbmtfdGV4dCk6CisgICAgICAgIHdhcm5pbmdzLndhcm4oImZpbmRfZWxlbWVudF9ieV8q
IGNvbW1hbmRzIGFyZSBkZXByZWNhdGVkLiBQbGVhc2UgdXNlIGZpbmRfZWxlbWVudCgpIGluc3Rl
YWQiKQogICAgICAgICByZXR1cm4gc2VsZi5maW5kX2VsZW1lbnQoYnk9QnkuUEFSVElBTF9MSU5L
X1RFWFQsIHZhbHVlPWxpbmtfdGV4dCkKIAogICAgIGRlZiBmaW5kX2VsZW1lbnRzX2J5X3BhcnRp
YWxfbGlua190ZXh0KHNlbGYsIGxpbmtfdGV4dCk6CisgICAgICAgIHdhcm5pbmdzLndhcm4oImZp
bmRfZWxlbWVudF9ieV8qIGNvbW1hbmRzIGFyZSBkZXByZWNhdGVkLiBQbGVhc2UgdXNlIGZpbmRf
ZWxlbWVudCgpIGluc3RlYWQiKQogICAgICAgICByZXR1cm4gc2VsZi5maW5kX2VsZW1lbnRzKGJ5
PUJ5LlBBUlRJQUxfTElOS19URVhULCB2YWx1ZT1saW5rX3RleHQpCiAKICAgICBkZWYgZmluZF9l
bGVtZW50X2J5X25hbWUoc2VsZiwgbmFtZSk6CisgICAgICAgIHdhcm5pbmdzLndhcm4oImZpbmRf
ZWxlbWVudF9ieV8qIGNvbW1hbmRzIGFyZSBkZXByZWNhdGVkLiBQbGVhc2UgdXNlIGZpbmRfZWxl
bWVudCgpIGluc3RlYWQiKQogICAgICAgICByZXR1cm4gc2VsZi5maW5kX2VsZW1lbnQoYnk9Qnku
TkFNRSwgdmFsdWU9bmFtZSkKIAogICAgIGRlZiBmaW5kX2VsZW1lbnRzX2J5X25hbWUoc2VsZiwg
bmFtZSk6CisgICAgICAgIHdhcm5pbmdzLndhcm4oImZpbmRfZWxlbWVudF9ieV8qIGNvbW1hbmRz
IGFyZSBkZXByZWNhdGVkLiBQbGVhc2UgdXNlIGZpbmRfZWxlbWVudCgpIGluc3RlYWQiKQogICAg
ICAgICByZXR1cm4gc2VsZi5maW5kX2VsZW1lbnRzKGJ5PUJ5Lk5BTUUsIHZhbHVlPW5hbWUpCiAK
ICAgICBkZWYgZmluZF9lbGVtZW50X2J5X3RhZ19uYW1lKHNlbGYsIG5hbWUpOgorICAgICAgICB3
YXJuaW5ncy53YXJuKCJmaW5kX2VsZW1lbnRfYnlfKiBjb21tYW5kcyBhcmUgZGVwcmVjYXRlZC4g
UGxlYXNlIHVzZSBmaW5kX2VsZW1lbnQoKSBpbnN0ZWFkIikKICAgICAgICAgcmV0dXJuIHNlbGYu
ZmluZF9lbGVtZW50KGJ5PUJ5LlRBR19OQU1FLCB2YWx1ZT1uYW1lKQogCiAgICAgZGVmIGZpbmRf
ZWxlbWVudHNfYnlfdGFnX25hbWUoc2VsZiwgbmFtZSk6CisgICAgICAgIHdhcm5pbmdzLndhcm4o
ImZpbmRfZWxlbWVudF9ieV8qIGNvbW1hbmRzIGFyZSBkZXByZWNhdGVkLiBQbGVhc2UgdXNlIGZp
bmRfZWxlbWVudCgpIGluc3RlYWQiKQogICAgICAgICByZXR1cm4gc2VsZi5maW5kX2VsZW1lbnRz
KGJ5PUJ5LlRBR19OQU1FLCB2YWx1ZT1uYW1lKQogCiAgICAgZGVmIGZpbmRfZWxlbWVudF9ieV9j
bGFzc19uYW1lKHNlbGYsIG5hbWUpOgorICAgICAgICB3YXJuaW5ncy53YXJuKCJmaW5kX2VsZW1l
bnRfYnlfKiBjb21tYW5kcyBhcmUgZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSBmaW5kX2VsZW1lbnQo
KSBpbnN0ZWFkIikKICAgICAgICAgcmV0dXJuIHNlbGYuZmluZF9lbGVtZW50KGJ5PUJ5LkNMQVNT
X05BTUUsIHZhbHVlPW5hbWUpCiAKICAgICBkZWYgZmluZF9lbGVtZW50c19ieV9jbGFzc19uYW1l
KHNlbGYsIG5hbWUpOgorICAgICAgICB3YXJuaW5ncy53YXJuKCJmaW5kX2VsZW1lbnRfYnlfKiBj
b21tYW5kcyBhcmUgZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSBmaW5kX2VsZW1lbnQoKSBpbnN0ZWFk
IikKICAgICAgICAgcmV0dXJuIHNlbGYuZmluZF9lbGVtZW50cyhieT1CeS5DTEFTU19OQU1FLCB2
YWx1ZT1uYW1lKQogCiAgICAgZGVmIGZpbmRfZWxlbWVudF9ieV9jc3Nfc2VsZWN0b3Ioc2VsZiwg
Y3NzX3NlbGVjdG9yKToKKyAgICAgICAgd2FybmluZ3Mud2FybigiZmluZF9lbGVtZW50X2J5Xyog
Y29tbWFuZHMgYXJlIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2UgZmluZF9lbGVtZW50KCkgaW5zdGVh
ZCIpCiAgICAgICAgIHJldHVybiBzZWxmLmZpbmRfZWxlbWVudChieT1CeS5DU1NfU0VMRUNUT1Is
IHZhbHVlPWNzc19zZWxlY3RvcikKIAogICAgIGRlZiBmaW5kX2VsZW1lbnRzX2J5X2Nzc19zZWxl
Y3RvcihzZWxmLCBjc3Nfc2VsZWN0b3IpOgorICAgICAgICB3YXJuaW5ncy53YXJuKCJmaW5kX2Vs
ZW1lbnRfYnlfKiBjb21tYW5kcyBhcmUgZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSBmaW5kX2VsZW1l
bnQoKSBpbnN0ZWFkIikKICAgICAgICAgcmV0dXJuIHNlbGYuZmluZF9lbGVtZW50cyhieT1CeS5D
U1NfU0VMRUNUT1IsIHZhbHVlPWNzc19zZWxlY3RvcikKIAogICAgIGRlZiBfZGlzcGF0Y2goc2Vs
ZiwgbF9jYWxsLCBsX2FyZ3MsIGRfY2FsbCwgZF9hcmdzKToKQEAgLTI0NCw0NSArMjY3LDU5IEBA
IGNsYXNzIEV2ZW50RmlyaW5nV2ViRWxlbWVudChvYmplY3QpOgogICAgICAgICByZXR1cm4gc2Vs
Zi5maW5kX2VsZW1lbnRzKGJ5PUJ5LklELCB2YWx1ZT1pZF8pCiAKICAgICBkZWYgZmluZF9lbGVt
ZW50X2J5X25hbWUoc2VsZiwgbmFtZSk6CisgICAgICAgIHdhcm5pbmdzLndhcm4oImZpbmRfZWxl
bWVudF9ieV8qIGNvbW1hbmRzIGFyZSBkZXByZWNhdGVkLiBQbGVhc2UgdXNlIGZpbmRfZWxlbWVu
dCgpIGluc3RlYWQiKQogICAgICAgICByZXR1cm4gc2VsZi5maW5kX2VsZW1lbnQoYnk9QnkuTkFN
RSwgdmFsdWU9bmFtZSkKIAogICAgIGRlZiBmaW5kX2VsZW1lbnRzX2J5X25hbWUoc2VsZiwgbmFt
ZSk6CisgICAgICAgIHdhcm5pbmdzLndhcm4oImZpbmRfZWxlbWVudF9ieV8qIGNvbW1hbmRzIGFy
ZSBkZXByZWNhdGVkLiBQbGVhc2UgdXNlIGZpbmRfZWxlbWVudCgpIGluc3RlYWQiKQogICAgICAg
ICByZXR1cm4gc2VsZi5maW5kX2VsZW1lbnRzKGJ5PUJ5Lk5BTUUsIHZhbHVlPW5hbWUpCiAKICAg
ICBkZWYgZmluZF9lbGVtZW50X2J5X2xpbmtfdGV4dChzZWxmLCBsaW5rX3RleHQpOgorICAgICAg
ICB3YXJuaW5ncy53YXJuKCJmaW5kX2VsZW1lbnRfYnlfKiBjb21tYW5kcyBhcmUgZGVwcmVjYXRl
ZC4gUGxlYXNlIHVzZSBmaW5kX2VsZW1lbnQoKSBpbnN0ZWFkIikKICAgICAgICAgcmV0dXJuIHNl
bGYuZmluZF9lbGVtZW50KGJ5PUJ5LkxJTktfVEVYVCwgdmFsdWU9bGlua190ZXh0KQogCiAgICAg
ZGVmIGZpbmRfZWxlbWVudHNfYnlfbGlua190ZXh0KHNlbGYsIGxpbmtfdGV4dCk6CisgICAgICAg
IHdhcm5pbmdzLndhcm4oImZpbmRfZWxlbWVudF9ieV8qIGNvbW1hbmRzIGFyZSBkZXByZWNhdGVk
LiBQbGVhc2UgdXNlIGZpbmRfZWxlbWVudCgpIGluc3RlYWQiKQogICAgICAgICByZXR1cm4gc2Vs
Zi5maW5kX2VsZW1lbnRzKGJ5PUJ5LkxJTktfVEVYVCwgdmFsdWU9bGlua190ZXh0KQogCiAgICAg
ZGVmIGZpbmRfZWxlbWVudF9ieV9wYXJ0aWFsX2xpbmtfdGV4dChzZWxmLCBsaW5rX3RleHQpOgor
ICAgICAgICB3YXJuaW5ncy53YXJuKCJmaW5kX2VsZW1lbnRfYnlfKiBjb21tYW5kcyBhcmUgZGVw
cmVjYXRlZC4gUGxlYXNlIHVzZSBmaW5kX2VsZW1lbnQoKSBpbnN0ZWFkIikKICAgICAgICAgcmV0
dXJuIHNlbGYuZmluZF9lbGVtZW50KGJ5PUJ5LlBBUlRJQUxfTElOS19URVhULCB2YWx1ZT1saW5r
X3RleHQpCiAKICAgICBkZWYgZmluZF9lbGVtZW50c19ieV9wYXJ0aWFsX2xpbmtfdGV4dChzZWxm
LCBsaW5rX3RleHQpOgorICAgICAgICB3YXJuaW5ncy53YXJuKCJmaW5kX2VsZW1lbnRfYnlfKiBj
b21tYW5kcyBhcmUgZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSBmaW5kX2VsZW1lbnQoKSBpbnN0ZWFk
IikKICAgICAgICAgcmV0dXJuIHNlbGYuZmluZF9lbGVtZW50cyhieT1CeS5QQVJUSUFMX0xJTktf
VEVYVCwgdmFsdWU9bGlua190ZXh0KQogCiAgICAgZGVmIGZpbmRfZWxlbWVudF9ieV90YWdfbmFt
ZShzZWxmLCBuYW1lKToKKyAgICAgICAgd2FybmluZ3Mud2FybigiZmluZF9lbGVtZW50X2J5Xyog
Y29tbWFuZHMgYXJlIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2UgZmluZF9lbGVtZW50KCkgaW5zdGVh
ZCIpCiAgICAgICAgIHJldHVybiBzZWxmLmZpbmRfZWxlbWVudChieT1CeS5UQUdfTkFNRSwgdmFs
dWU9bmFtZSkKIAogICAgIGRlZiBmaW5kX2VsZW1lbnRzX2J5X3RhZ19uYW1lKHNlbGYsIG5hbWUp
OgorICAgICAgICB3YXJuaW5ncy53YXJuKCJmaW5kX2VsZW1lbnRfYnlfKiBjb21tYW5kcyBhcmUg
ZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSBmaW5kX2VsZW1lbnQoKSBpbnN0ZWFkIikKICAgICAgICAg
cmV0dXJuIHNlbGYuZmluZF9lbGVtZW50cyhieT1CeS5UQUdfTkFNRSwgdmFsdWU9bmFtZSkKIAog
ICAgIGRlZiBmaW5kX2VsZW1lbnRfYnlfeHBhdGgoc2VsZiwgeHBhdGgpOgorICAgICAgICB3YXJu
aW5ncy53YXJuKCJmaW5kX2VsZW1lbnRfYnlfKiBjb21tYW5kcyBhcmUgZGVwcmVjYXRlZC4gUGxl
YXNlIHVzZSBmaW5kX2VsZW1lbnQoKSBpbnN0ZWFkIikKICAgICAgICAgcmV0dXJuIHNlbGYuZmlu
ZF9lbGVtZW50KGJ5PUJ5LlhQQVRILCB2YWx1ZT14cGF0aCkKIAogICAgIGRlZiBmaW5kX2VsZW1l
bnRzX2J5X3hwYXRoKHNlbGYsIHhwYXRoKToKKyAgICAgICAgd2FybmluZ3Mud2FybigiZmluZF9l
bGVtZW50X2J5XyogY29tbWFuZHMgYXJlIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2UgZmluZF9lbGVt
ZW50KCkgaW5zdGVhZCIpCiAgICAgICAgIHJldHVybiBzZWxmLmZpbmRfZWxlbWVudHMoYnk9Qnku
WFBBVEgsIHZhbHVlPXhwYXRoKQogCiAgICAgZGVmIGZpbmRfZWxlbWVudF9ieV9jbGFzc19uYW1l
KHNlbGYsIG5hbWUpOgorICAgICAgICB3YXJuaW5ncy53YXJuKCJmaW5kX2VsZW1lbnRfYnlfKiBj
b21tYW5kcyBhcmUgZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSBmaW5kX2VsZW1lbnQoKSBpbnN0ZWFk
IikKICAgICAgICAgcmV0dXJuIHNlbGYuZmluZF9lbGVtZW50KGJ5PUJ5LkNMQVNTX05BTUUsIHZh
bHVlPW5hbWUpCiAKICAgICBkZWYgZmluZF9lbGVtZW50c19ieV9jbGFzc19uYW1lKHNlbGYsIG5h
bWUpOgorICAgICAgICB3YXJuaW5ncy53YXJuKCJmaW5kX2VsZW1lbnRfYnlfKiBjb21tYW5kcyBh
cmUgZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSBmaW5kX2VsZW1lbnQoKSBpbnN0ZWFkIikKICAgICAg
ICAgcmV0dXJuIHNlbGYuZmluZF9lbGVtZW50cyhieT1CeS5DTEFTU19OQU1FLCB2YWx1ZT1uYW1l
KQogCiAgICAgZGVmIGZpbmRfZWxlbWVudF9ieV9jc3Nfc2VsZWN0b3Ioc2VsZiwgY3NzX3NlbGVj
dG9yKToKKyAgICAgICAgd2FybmluZ3Mud2FybigiZmluZF9lbGVtZW50X2J5XyogY29tbWFuZHMg
YXJlIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2UgZmluZF9lbGVtZW50KCkgaW5zdGVhZCIpCiAgICAg
ICAgIHJldHVybiBzZWxmLmZpbmRfZWxlbWVudChieT1CeS5DU1NfU0VMRUNUT1IsIHZhbHVlPWNz
c19zZWxlY3RvcikKIAogICAgIGRlZiBmaW5kX2VsZW1lbnRzX2J5X2Nzc19zZWxlY3RvcihzZWxm
LCBjc3Nfc2VsZWN0b3IpOgorICAgICAgICB3YXJuaW5ncy53YXJuKCJmaW5kX2VsZW1lbnRfYnlf
KiBjb21tYW5kcyBhcmUgZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSBmaW5kX2VsZW1lbnQoKSBpbnN0
ZWFkIikKICAgICAgICAgcmV0dXJuIHNlbGYuZmluZF9lbGVtZW50cyhieT1CeS5DU1NfU0VMRUNU
T1IsIHZhbHVlPWNzc19zZWxlY3RvcikKIAogICAgIGRlZiBfZGlzcGF0Y2goc2VsZiwgbF9jYWxs
LCBsX2FyZ3MsIGRfY2FsbCwgZF9hcmdzKToKQEAgLTMyMCwzICszNTcsNiBAQCBjbGFzcyBFdmVu
dEZpcmluZ1dlYkVsZW1lbnQob2JqZWN0KToKICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBl
OgogICAgICAgICAgICAgc2VsZi5fbGlzdGVuZXIub25fZXhjZXB0aW9uKGUsIHNlbGYuX2RyaXZl
cikKICAgICAgICAgICAgIHJhaXNlCisKKworV2ViRWxlbWVudC5yZWdpc3RlcihFdmVudEZpcmlu
Z1dlYkVsZW1lbnQpCmRpZmYgLS1naXQgYS9XZWJEcml2ZXJUZXN0cy9pbXBvcnRlZC9zZWxlbml1
bS9weS9zZWxlbml1bS93ZWJkcml2ZXIvc3VwcG9ydC9leHBlY3RlZF9jb25kaXRpb25zLnB5IGIv
V2ViRHJpdmVyVGVzdHMvaW1wb3J0ZWQvc2VsZW5pdW0vcHkvc2VsZW5pdW0vd2ViZHJpdmVyL3N1
cHBvcnQvZXhwZWN0ZWRfY29uZGl0aW9ucy5weQppbmRleCA5MTcwMzJjMDI3YzNiNjhhYzhiMTJh
YmM5ZmE4MTQwN2I1ZGQ1ODFkLi45MjBlOGM3NzNiZjU0MmY3ZWRiMDZlNTMwNzUxNmIwN2IxOTY0
MTRjIDEwMDY0NAotLS0gYS9XZWJEcml2ZXJUZXN0cy9pbXBvcnRlZC9zZWxlbml1bS9weS9zZWxl
bml1bS93ZWJkcml2ZXIvc3VwcG9ydC9leHBlY3RlZF9jb25kaXRpb25zLnB5CisrKyBiL1dlYkRy
aXZlclRlc3RzL2ltcG9ydGVkL3NlbGVuaXVtL3B5L3NlbGVuaXVtL3dlYmRyaXZlci9zdXBwb3J0
L2V4cGVjdGVkX2NvbmRpdGlvbnMucHkKQEAgLTE1LDYgKzE1LDggQEAKICMgc3BlY2lmaWMgbGFu
Z3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucwogIyB1bmRlciB0aGUg
TGljZW5zZS4KIAoraW1wb3J0IHJlCisKIGZyb20gc2VsZW5pdW0uY29tbW9uLmV4Y2VwdGlvbnMg
aW1wb3J0IE5vU3VjaEVsZW1lbnRFeGNlcHRpb24KIGZyb20gc2VsZW5pdW0uY29tbW9uLmV4Y2Vw
dGlvbnMgaW1wb3J0IE5vU3VjaEZyYW1lRXhjZXB0aW9uCiBmcm9tIHNlbGVuaXVtLmNvbW1vbi5l
eGNlcHRpb25zIGltcG9ydCBTdGFsZUVsZW1lbnRSZWZlcmVuY2VFeGNlcHRpb24KQEAgLTI4LDE2
NSArMzAsMTQ4IEBAIGZyb20gc2VsZW5pdW0ud2ViZHJpdmVyLnJlbW90ZS53ZWJkcml2ZXIgaW1w
b3J0IFdlYkVsZW1lbnQKICIiIgogCiAKLWNsYXNzIHRpdGxlX2lzKG9iamVjdCk6CitkZWYgdGl0
bGVfaXModGl0bGUpOgogICAgICIiIkFuIGV4cGVjdGF0aW9uIGZvciBjaGVja2luZyB0aGUgdGl0
bGUgb2YgYSBwYWdlLgogICAgIHRpdGxlIGlzIHRoZSBleHBlY3RlZCB0aXRsZSwgd2hpY2ggbXVz
dCBiZSBhbiBleGFjdCBtYXRjaAogICAgIHJldHVybnMgVHJ1ZSBpZiB0aGUgdGl0bGUgbWF0Y2hl
cywgZmFsc2Ugb3RoZXJ3aXNlLiIiIgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0aXRsZSk6Ci0g
ICAgICAgIHNlbGYudGl0bGUgPSB0aXRsZQorICAgIGRlZiBfcHJlZGljYXRlKGRyaXZlcik6Cisg
ICAgICAgIHJldHVybiBkcml2ZXIudGl0bGUgPT0gdGl0bGUKIAotICAgIGRlZiBfX2NhbGxfXyhz
ZWxmLCBkcml2ZXIpOgotICAgICAgICByZXR1cm4gc2VsZi50aXRsZSA9PSBkcml2ZXIudGl0bGUK
KyAgICByZXR1cm4gX3ByZWRpY2F0ZQogCiAKLWNsYXNzIHRpdGxlX2NvbnRhaW5zKG9iamVjdCk6
CitkZWYgdGl0bGVfY29udGFpbnModGl0bGUpOgogICAgICIiIiBBbiBleHBlY3RhdGlvbiBmb3Ig
Y2hlY2tpbmcgdGhhdCB0aGUgdGl0bGUgY29udGFpbnMgYSBjYXNlLXNlbnNpdGl2ZQogICAgIHN1
YnN0cmluZy4gdGl0bGUgaXMgdGhlIGZyYWdtZW50IG9mIHRpdGxlIGV4cGVjdGVkCiAgICAgcmV0
dXJucyBUcnVlIHdoZW4gdGhlIHRpdGxlIG1hdGNoZXMsIEZhbHNlIG90aGVyd2lzZQogICAgICIi
IgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0aXRsZSk6Ci0gICAgICAgIHNlbGYudGl0bGUgPSB0
aXRsZQorICAgIGRlZiBfcHJlZGljYXRlKGRyaXZlcik6CisgICAgICAgIHJldHVybiB0aXRsZSBp
biBkcml2ZXIudGl0bGUKIAotICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBkcml2ZXIpOgotICAgICAg
ICByZXR1cm4gc2VsZi50aXRsZSBpbiBkcml2ZXIudGl0bGUKKyAgICByZXR1cm4gX3ByZWRpY2F0
ZQogCiAKLWNsYXNzIHByZXNlbmNlX29mX2VsZW1lbnRfbG9jYXRlZChvYmplY3QpOgorZGVmIHBy
ZXNlbmNlX29mX2VsZW1lbnRfbG9jYXRlZChsb2NhdG9yKToKICAgICAiIiIgQW4gZXhwZWN0YXRp
b24gZm9yIGNoZWNraW5nIHRoYXQgYW4gZWxlbWVudCBpcyBwcmVzZW50IG9uIHRoZSBET00KICAg
ICBvZiBhIHBhZ2UuIFRoaXMgZG9lcyBub3QgbmVjZXNzYXJpbHkgbWVhbiB0aGF0IHRoZSBlbGVt
ZW50IGlzIHZpc2libGUuCiAgICAgbG9jYXRvciAtIHVzZWQgdG8gZmluZCB0aGUgZWxlbWVudAog
ICAgIHJldHVybnMgdGhlIFdlYkVsZW1lbnQgb25jZSBpdCBpcyBsb2NhdGVkCiAgICAgIiIiCi0g
ICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvY2F0b3IpOgotICAgICAgICBzZWxmLmxvY2F0b3IgPSBs
b2NhdG9yCisgICAgZGVmIF9wcmVkaWNhdGUoZHJpdmVyKToKKyAgICAgICAgcmV0dXJuIGRyaXZl
ci5maW5kX2VsZW1lbnQoKmxvY2F0b3IpCiAKLSAgICBkZWYgX19jYWxsX18oc2VsZiwgZHJpdmVy
KToKLSAgICAgICAgcmV0dXJuIF9maW5kX2VsZW1lbnQoZHJpdmVyLCBzZWxmLmxvY2F0b3IpCisg
ICAgcmV0dXJuIF9wcmVkaWNhdGUKIAogCi1jbGFzcyB1cmxfY29udGFpbnMob2JqZWN0KToKK2Rl
ZiB1cmxfY29udGFpbnModXJsKToKICAgICAiIiIgQW4gZXhwZWN0YXRpb24gZm9yIGNoZWNraW5n
IHRoYXQgdGhlIGN1cnJlbnQgdXJsIGNvbnRhaW5zIGEKICAgICBjYXNlLXNlbnNpdGl2ZSBzdWJz
dHJpbmcuCiAgICAgdXJsIGlzIHRoZSBmcmFnbWVudCBvZiB1cmwgZXhwZWN0ZWQsCiAgICAgcmV0
dXJucyBUcnVlIHdoZW4gdGhlIHVybCBtYXRjaGVzLCBGYWxzZSBvdGhlcndpc2UKICAgICAiIiIK
LSAgICBkZWYgX19pbml0X18oc2VsZiwgdXJsKToKLSAgICAgICAgc2VsZi51cmwgPSB1cmwKKyAg
ICBkZWYgX3ByZWRpY2F0ZShkcml2ZXIpOgorICAgICAgICByZXR1cm4gdXJsIGluIGRyaXZlci5j
dXJyZW50X3VybAogCi0gICAgZGVmIF9fY2FsbF9fKHNlbGYsIGRyaXZlcik6Ci0gICAgICAgIHJl
dHVybiBzZWxmLnVybCBpbiBkcml2ZXIuY3VycmVudF91cmwKKyAgICByZXR1cm4gX3ByZWRpY2F0
ZQogCiAKLWNsYXNzIHVybF9tYXRjaGVzKG9iamVjdCk6CitkZWYgdXJsX21hdGNoZXMocGF0dGVy
bik6CiAgICAgIiIiQW4gZXhwZWN0YXRpb24gZm9yIGNoZWNraW5nIHRoZSBjdXJyZW50IHVybC4K
ICAgICBwYXR0ZXJuIGlzIHRoZSBleHBlY3RlZCBwYXR0ZXJuLCB3aGljaCBtdXN0IGJlIGFuIGV4
YWN0IG1hdGNoCiAgICAgcmV0dXJucyBUcnVlIGlmIHRoZSB1cmwgbWF0Y2hlcywgZmFsc2Ugb3Ro
ZXJ3aXNlLiIiIgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXR0ZXJuKToKLSAgICAgICAgc2Vs
Zi5wYXR0ZXJuID0gcGF0dGVybgotCi0gICAgZGVmIF9fY2FsbF9fKHNlbGYsIGRyaXZlcik6Ci0g
ICAgICAgIGltcG9ydCByZQotICAgICAgICBtYXRjaCA9IHJlLnNlYXJjaChzZWxmLnBhdHRlcm4s
IGRyaXZlci5jdXJyZW50X3VybCkKKyAgICBkZWYgX3ByZWRpY2F0ZShkcml2ZXIpOgorICAgICAg
ICByZXR1cm4gcmUuc2VhcmNoKHBhdHRlcm4sIGRyaXZlci5jdXJyZW50X3VybCkgaXMgbm90IE5v
bmUKIAotICAgICAgICByZXR1cm4gbWF0Y2ggaXMgbm90IE5vbmUKKyAgICByZXR1cm4gX3ByZWRp
Y2F0ZQogCiAKLWNsYXNzIHVybF90b19iZShvYmplY3QpOgorZGVmIHVybF90b19iZSh1cmwpOgog
ICAgICIiIkFuIGV4cGVjdGF0aW9uIGZvciBjaGVja2luZyB0aGUgY3VycmVudCB1cmwuCiAgICAg
dXJsIGlzIHRoZSBleHBlY3RlZCB1cmwsIHdoaWNoIG11c3QgYmUgYW4gZXhhY3QgbWF0Y2gKICAg
ICByZXR1cm5zIFRydWUgaWYgdGhlIHVybCBtYXRjaGVzLCBmYWxzZSBvdGhlcndpc2UuIiIiCi0g
ICAgZGVmIF9faW5pdF9fKHNlbGYsIHVybCk6Ci0gICAgICAgIHNlbGYudXJsID0gdXJsCisgICAg
ZGVmIF9wcmVkaWNhdGUoZHJpdmVyKToKKyAgICAgICAgcmV0dXJuIHVybCA9PSBkcml2ZXIuY3Vy
cmVudF91cmwKIAotICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBkcml2ZXIpOgotICAgICAgICByZXR1
cm4gc2VsZi51cmwgPT0gZHJpdmVyLmN1cnJlbnRfdXJsCisgICAgcmV0dXJuIF9wcmVkaWNhdGUK
IAogCi1jbGFzcyB1cmxfY2hhbmdlcyhvYmplY3QpOgorZGVmIHVybF9jaGFuZ2VzKHVybCk6CiAg
ICAgIiIiQW4gZXhwZWN0YXRpb24gZm9yIGNoZWNraW5nIHRoZSBjdXJyZW50IHVybC4KICAgICB1
cmwgaXMgdGhlIGV4cGVjdGVkIHVybCwgd2hpY2ggbXVzdCBub3QgYmUgYW4gZXhhY3QgbWF0Y2gK
ICAgICByZXR1cm5zIFRydWUgaWYgdGhlIHVybCBpcyBkaWZmZXJlbnQsIGZhbHNlIG90aGVyd2lz
ZS4iIiIKLSAgICBkZWYgX19pbml0X18oc2VsZiwgdXJsKToKLSAgICAgICAgc2VsZi51cmwgPSB1
cmwKKyAgICBkZWYgX3ByZWRpY2F0ZShkcml2ZXIpOgorICAgICAgICByZXR1cm4gdXJsICE9IGRy
aXZlci5jdXJyZW50X3VybAogCi0gICAgZGVmIF9fY2FsbF9fKHNlbGYsIGRyaXZlcik6Ci0gICAg
ICAgIHJldHVybiBzZWxmLnVybCAhPSBkcml2ZXIuY3VycmVudF91cmwKKyAgICByZXR1cm4gX3By
ZWRpY2F0ZQogCiAKLWNsYXNzIHZpc2liaWxpdHlfb2ZfZWxlbWVudF9sb2NhdGVkKG9iamVjdCk6
CitkZWYgdmlzaWJpbGl0eV9vZl9lbGVtZW50X2xvY2F0ZWQobG9jYXRvcik6CiAgICAgIiIiIEFu
IGV4cGVjdGF0aW9uIGZvciBjaGVja2luZyB0aGF0IGFuIGVsZW1lbnQgaXMgcHJlc2VudCBvbiB0
aGUgRE9NIG9mIGEKICAgICBwYWdlIGFuZCB2aXNpYmxlLiBWaXNpYmlsaXR5IG1lYW5zIHRoYXQg
dGhlIGVsZW1lbnQgaXMgbm90IG9ubHkgZGlzcGxheWVkCiAgICAgYnV0IGFsc28gaGFzIGEgaGVp
Z2h0IGFuZCB3aWR0aCB0aGF0IGlzIGdyZWF0ZXIgdGhhbiAwLgogICAgIGxvY2F0b3IgLSB1c2Vk
IHRvIGZpbmQgdGhlIGVsZW1lbnQKICAgICByZXR1cm5zIHRoZSBXZWJFbGVtZW50IG9uY2UgaXQg
aXMgbG9jYXRlZCBhbmQgdmlzaWJsZQogICAgICIiIgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBs
b2NhdG9yKToKLSAgICAgICAgc2VsZi5sb2NhdG9yID0gbG9jYXRvcgotCi0gICAgZGVmIF9fY2Fs
bF9fKHNlbGYsIGRyaXZlcik6CisgICAgZGVmIF9wcmVkaWNhdGUoZHJpdmVyKToKICAgICAgICAg
dHJ5OgotICAgICAgICAgICAgcmV0dXJuIF9lbGVtZW50X2lmX3Zpc2libGUoX2ZpbmRfZWxlbWVu
dChkcml2ZXIsIHNlbGYubG9jYXRvcikpCisgICAgICAgICAgICByZXR1cm4gX2VsZW1lbnRfaWZf
dmlzaWJsZShkcml2ZXIuZmluZF9lbGVtZW50KCpsb2NhdG9yKSkKICAgICAgICAgZXhjZXB0IFN0
YWxlRWxlbWVudFJlZmVyZW5jZUV4Y2VwdGlvbjoKICAgICAgICAgICAgIHJldHVybiBGYWxzZQog
CisgICAgcmV0dXJuIF9wcmVkaWNhdGUKKwogCi1jbGFzcyB2aXNpYmlsaXR5X29mKG9iamVjdCk6
CitkZWYgdmlzaWJpbGl0eV9vZihlbGVtZW50KToKICAgICAiIiIgQW4gZXhwZWN0YXRpb24gZm9y
IGNoZWNraW5nIHRoYXQgYW4gZWxlbWVudCwga25vd24gdG8gYmUgcHJlc2VudCBvbiB0aGUKICAg
ICBET00gb2YgYSBwYWdlLCBpcyB2aXNpYmxlLiBWaXNpYmlsaXR5IG1lYW5zIHRoYXQgdGhlIGVs
ZW1lbnQgaXMgbm90IG9ubHkKICAgICBkaXNwbGF5ZWQgYnV0IGFsc28gaGFzIGEgaGVpZ2h0IGFu
ZCB3aWR0aCB0aGF0IGlzIGdyZWF0ZXIgdGhhbiAwLgogICAgIGVsZW1lbnQgaXMgdGhlIFdlYkVs
ZW1lbnQKICAgICByZXR1cm5zIHRoZSAoc2FtZSkgV2ViRWxlbWVudCBvbmNlIGl0IGlzIHZpc2li
bGUKICAgICAiIiIKLSAgICBkZWYgX19pbml0X18oc2VsZiwgZWxlbWVudCk6Ci0gICAgICAgIHNl
bGYuZWxlbWVudCA9IGVsZW1lbnQKKyAgICBkZWYgX3ByZWRpY2F0ZShfKToKKyAgICAgICAgcmV0
dXJuIF9lbGVtZW50X2lmX3Zpc2libGUoZWxlbWVudCkKIAotICAgIGRlZiBfX2NhbGxfXyhzZWxm
LCBpZ25vcmVkKToKLSAgICAgICAgcmV0dXJuIF9lbGVtZW50X2lmX3Zpc2libGUoc2VsZi5lbGVt
ZW50KQorICAgIHJldHVybiBfcHJlZGljYXRlCiAKIAogZGVmIF9lbGVtZW50X2lmX3Zpc2libGUo
ZWxlbWVudCwgdmlzaWJpbGl0eT1UcnVlKToKICAgICByZXR1cm4gZWxlbWVudCBpZiBlbGVtZW50
LmlzX2Rpc3BsYXllZCgpID09IHZpc2liaWxpdHkgZWxzZSBGYWxzZQogCiAKLWNsYXNzIHByZXNl
bmNlX29mX2FsbF9lbGVtZW50c19sb2NhdGVkKG9iamVjdCk6CitkZWYgcHJlc2VuY2Vfb2ZfYWxs
X2VsZW1lbnRzX2xvY2F0ZWQobG9jYXRvcik6CiAgICAgIiIiIEFuIGV4cGVjdGF0aW9uIGZvciBj
aGVja2luZyB0aGF0IHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBlbGVtZW50IHByZXNlbnQKICAgICBv
biBhIHdlYiBwYWdlLgogICAgIGxvY2F0b3IgaXMgdXNlZCB0byBmaW5kIHRoZSBlbGVtZW50CiAg
ICAgcmV0dXJucyB0aGUgbGlzdCBvZiBXZWJFbGVtZW50cyBvbmNlIHRoZXkgYXJlIGxvY2F0ZWQK
ICAgICAiIiIKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbG9jYXRvcik6Ci0gICAgICAgIHNlbGYu
bG9jYXRvciA9IGxvY2F0b3IKKyAgICBkZWYgX3ByZWRpY2F0ZShkcml2ZXIpOgorICAgICAgICBy
ZXR1cm4gZHJpdmVyLmZpbmRfZWxlbWVudHMoKmxvY2F0b3IpCiAKLSAgICBkZWYgX19jYWxsX18o
c2VsZiwgZHJpdmVyKToKLSAgICAgICAgcmV0dXJuIF9maW5kX2VsZW1lbnRzKGRyaXZlciwgc2Vs
Zi5sb2NhdG9yKQorICAgIHJldHVybiBfcHJlZGljYXRlCiAKIAotY2xhc3MgdmlzaWJpbGl0eV9v
Zl9hbnlfZWxlbWVudHNfbG9jYXRlZChvYmplY3QpOgorZGVmIHZpc2liaWxpdHlfb2ZfYW55X2Vs
ZW1lbnRzX2xvY2F0ZWQobG9jYXRvcik6CiAgICAgIiIiIEFuIGV4cGVjdGF0aW9uIGZvciBjaGVj
a2luZyB0aGF0IHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBlbGVtZW50IHZpc2libGUKICAgICBvbiBh
IHdlYiBwYWdlLgogICAgIGxvY2F0b3IgaXMgdXNlZCB0byBmaW5kIHRoZSBlbGVtZW50CiAgICAg
cmV0dXJucyB0aGUgbGlzdCBvZiBXZWJFbGVtZW50cyBvbmNlIHRoZXkgYXJlIGxvY2F0ZWQKICAg
ICAiIiIKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbG9jYXRvcik6Ci0gICAgICAgIHNlbGYubG9j
YXRvciA9IGxvY2F0b3IKKyAgICBkZWYgX3ByZWRpY2F0ZShkcml2ZXIpOgorICAgICAgICByZXR1
cm4gW2VsZW1lbnQgZm9yIGVsZW1lbnQgaW4gZHJpdmVyLmZpbmRfZWxlbWVudHMoKmxvY2F0b3Ip
IGlmIF9lbGVtZW50X2lmX3Zpc2libGUoZWxlbWVudCldCiAKLSAgICBkZWYgX19jYWxsX18oc2Vs
ZiwgZHJpdmVyKToKLSAgICAgICAgcmV0dXJuIFtlbGVtZW50IGZvciBlbGVtZW50IGluIF9maW5k
X2VsZW1lbnRzKGRyaXZlciwgc2VsZi5sb2NhdG9yKSBpZiBfZWxlbWVudF9pZl92aXNpYmxlKGVs
ZW1lbnQpXQorICAgIHJldHVybiBfcHJlZGljYXRlCiAKIAotY2xhc3MgdmlzaWJpbGl0eV9vZl9h
bGxfZWxlbWVudHNfbG9jYXRlZChvYmplY3QpOgorZGVmIHZpc2liaWxpdHlfb2ZfYWxsX2VsZW1l
bnRzX2xvY2F0ZWQobG9jYXRvcik6CiAgICAgIiIiIEFuIGV4cGVjdGF0aW9uIGZvciBjaGVja2lu
ZyB0aGF0IGFsbCBlbGVtZW50cyBhcmUgcHJlc2VudCBvbiB0aGUgRE9NIG9mIGEKICAgICBwYWdl
IGFuZCB2aXNpYmxlLiBWaXNpYmlsaXR5IG1lYW5zIHRoYXQgdGhlIGVsZW1lbnRzIGFyZSBub3Qg
b25seSBkaXNwbGF5ZWQKICAgICBidXQgYWxzbyBoYXMgYSBoZWlnaHQgYW5kIHdpZHRoIHRoYXQg
aXMgZ3JlYXRlciB0aGFuIDAuCiAgICAgbG9jYXRvciAtIHVzZWQgdG8gZmluZCB0aGUgZWxlbWVu
dHMKICAgICByZXR1cm5zIHRoZSBsaXN0IG9mIFdlYkVsZW1lbnRzIG9uY2UgdGhleSBhcmUgbG9j
YXRlZCBhbmQgdmlzaWJsZQogICAgICIiIgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2NhdG9y
KToKLSAgICAgICAgc2VsZi5sb2NhdG9yID0gbG9jYXRvcgotCi0gICAgZGVmIF9fY2FsbF9fKHNl
bGYsIGRyaXZlcik6CisgICAgZGVmIF9wcmVkaWNhdGUoZHJpdmVyKToKICAgICAgICAgdHJ5Ogot
ICAgICAgICAgICAgZWxlbWVudHMgPSBfZmluZF9lbGVtZW50cyhkcml2ZXIsIHNlbGYubG9jYXRv
cikKKyAgICAgICAgICAgIGVsZW1lbnRzID0gZHJpdmVyLmZpbmRfZWxlbWVudHMoKmxvY2F0b3Ip
CiAgICAgICAgICAgICBmb3IgZWxlbWVudCBpbiBlbGVtZW50czoKICAgICAgICAgICAgICAgICBp
ZiBfZWxlbWVudF9pZl92aXNpYmxlKGVsZW1lbnQsIHZpc2liaWxpdHk9RmFsc2UpOgogICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKQEAgLTE5NCw3OSArMTc5LDY4IEBAIGNsYXNzIHZp
c2liaWxpdHlfb2ZfYWxsX2VsZW1lbnRzX2xvY2F0ZWQob2JqZWN0KToKICAgICAgICAgZXhjZXB0
IFN0YWxlRWxlbWVudFJlZmVyZW5jZUV4Y2VwdGlvbjoKICAgICAgICAgICAgIHJldHVybiBGYWxz
ZQogCisgICAgcmV0dXJuIF9wcmVkaWNhdGUKKwogCi1jbGFzcyB0ZXh0X3RvX2JlX3ByZXNlbnRf
aW5fZWxlbWVudChvYmplY3QpOgorZGVmIHRleHRfdG9fYmVfcHJlc2VudF9pbl9lbGVtZW50KGxv
Y2F0b3IsIHRleHRfKToKICAgICAiIiIgQW4gZXhwZWN0YXRpb24gZm9yIGNoZWNraW5nIGlmIHRo
ZSBnaXZlbiB0ZXh0IGlzIHByZXNlbnQgaW4gdGhlCiAgICAgc3BlY2lmaWVkIGVsZW1lbnQuCiAg
ICAgbG9jYXRvciwgdGV4dAogICAgICIiIgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2NhdG9y
LCB0ZXh0Xyk6Ci0gICAgICAgIHNlbGYubG9jYXRvciA9IGxvY2F0b3IKLSAgICAgICAgc2VsZi50
ZXh0ID0gdGV4dF8KLQotICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBkcml2ZXIpOgorICAgIGRlZiBf
cHJlZGljYXRlKGRyaXZlcik6CiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIGVsZW1lbnRfdGV4
dCA9IF9maW5kX2VsZW1lbnQoZHJpdmVyLCBzZWxmLmxvY2F0b3IpLnRleHQKLSAgICAgICAgICAg
IHJldHVybiBzZWxmLnRleHQgaW4gZWxlbWVudF90ZXh0CisgICAgICAgICAgICBlbGVtZW50X3Rl
eHQgPSBkcml2ZXIuZmluZF9lbGVtZW50KCpsb2NhdG9yKS50ZXh0CisgICAgICAgICAgICByZXR1
cm4gdGV4dF8gaW4gZWxlbWVudF90ZXh0CiAgICAgICAgIGV4Y2VwdCBTdGFsZUVsZW1lbnRSZWZl
cmVuY2VFeGNlcHRpb246CiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKIAorICAgIHJldHVybiBf
cHJlZGljYXRlCisKIAotY2xhc3MgdGV4dF90b19iZV9wcmVzZW50X2luX2VsZW1lbnRfdmFsdWUo
b2JqZWN0KToKK2RlZiB0ZXh0X3RvX2JlX3ByZXNlbnRfaW5fZWxlbWVudF92YWx1ZShsb2NhdG9y
LCB0ZXh0Xyk6CiAgICAgIiIiCiAgICAgQW4gZXhwZWN0YXRpb24gZm9yIGNoZWNraW5nIGlmIHRo
ZSBnaXZlbiB0ZXh0IGlzIHByZXNlbnQgaW4gdGhlIGVsZW1lbnQncwogICAgIGxvY2F0b3IsIHRl
eHQKICAgICAiIiIKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbG9jYXRvciwgdGV4dF8pOgotICAg
ICAgICBzZWxmLmxvY2F0b3IgPSBsb2NhdG9yCi0gICAgICAgIHNlbGYudGV4dCA9IHRleHRfCi0K
LSAgICBkZWYgX19jYWxsX18oc2VsZiwgZHJpdmVyKToKKyAgICBkZWYgX3ByZWRpY2F0ZShkcml2
ZXIpOgogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBlbGVtZW50X3RleHQgPSBfZmluZF9lbGVt
ZW50KGRyaXZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vs
Zi5sb2NhdG9yKS5nZXRfYXR0cmlidXRlKCJ2YWx1ZSIpCi0gICAgICAgICAgICBpZiBlbGVtZW50
X3RleHQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYudGV4dCBpbiBlbGVtZW50X3RleHQK
LSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAg
ICAgICBlbGVtZW50X3RleHQgPSBkcml2ZXIuZmluZF9lbGVtZW50KCpsb2NhdG9yKS5nZXRfYXR0
cmlidXRlKCJ2YWx1ZSIpCisgICAgICAgICAgICByZXR1cm4gdGV4dF8gaW4gZWxlbWVudF90ZXh0
CiAgICAgICAgIGV4Y2VwdCBTdGFsZUVsZW1lbnRSZWZlcmVuY2VFeGNlcHRpb246Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIHJl
dHVybiBfcHJlZGljYXRlCiAKIAotY2xhc3MgZnJhbWVfdG9fYmVfYXZhaWxhYmxlX2FuZF9zd2l0
Y2hfdG9faXQob2JqZWN0KToKK2RlZiBmcmFtZV90b19iZV9hdmFpbGFibGVfYW5kX3N3aXRjaF90
b19pdChsb2NhdG9yKToKICAgICAiIiIgQW4gZXhwZWN0YXRpb24gZm9yIGNoZWNraW5nIHdoZXRo
ZXIgdGhlIGdpdmVuIGZyYW1lIGlzIGF2YWlsYWJsZSB0bwogICAgIHN3aXRjaCB0by4gIElmIHRo
ZSBmcmFtZSBpcyBhdmFpbGFibGUgaXQgc3dpdGNoZXMgdGhlIGdpdmVuIGRyaXZlciB0byB0aGUK
ICAgICBzcGVjaWZpZWQgZnJhbWUuCiAgICAgIiIiCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGxv
Y2F0b3IpOgotICAgICAgICBzZWxmLmZyYW1lX2xvY2F0b3IgPSBsb2NhdG9yCi0KLSAgICBkZWYg
X19jYWxsX18oc2VsZiwgZHJpdmVyKToKKyAgICBkZWYgX3ByZWRpY2F0ZShkcml2ZXIpOgogICAg
ICAgICB0cnk6Ci0gICAgICAgICAgICBpZiBpc2luc3RhbmNlKHNlbGYuZnJhbWVfbG9jYXRvciwg
dHVwbGUpOgotICAgICAgICAgICAgICAgIGRyaXZlci5zd2l0Y2hfdG8uZnJhbWUoX2ZpbmRfZWxl
bWVudChkcml2ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNlbGYuZnJhbWVfbG9jYXRvcikpCisgICAgICAgICAgICBpZiBoYXNhdHRyKGxv
Y2F0b3IsICdfX2l0ZXJfXycpOgorICAgICAgICAgICAgICAgIGRyaXZlci5zd2l0Y2hfdG8uZnJh
bWUoZHJpdmVyLmZpbmRfZWxlbWVudCgqbG9jYXRvcikpCiAgICAgICAgICAgICBlbHNlOgotICAg
ICAgICAgICAgICAgIGRyaXZlci5zd2l0Y2hfdG8uZnJhbWUoc2VsZi5mcmFtZV9sb2NhdG9yKQor
ICAgICAgICAgICAgICAgIGRyaXZlci5zd2l0Y2hfdG8uZnJhbWUobG9jYXRvcikKICAgICAgICAg
ICAgIHJldHVybiBUcnVlCiAgICAgICAgIGV4Y2VwdCBOb1N1Y2hGcmFtZUV4Y2VwdGlvbjoKICAg
ICAgICAgICAgIHJldHVybiBGYWxzZQogCisgICAgcmV0dXJuIF9wcmVkaWNhdGUKKwogCi1jbGFz
cyBpbnZpc2liaWxpdHlfb2ZfZWxlbWVudF9sb2NhdGVkKG9iamVjdCk6CitkZWYgaW52aXNpYmls
aXR5X29mX2VsZW1lbnRfbG9jYXRlZChsb2NhdG9yKToKICAgICAiIiIgQW4gRXhwZWN0YXRpb24g
Zm9yIGNoZWNraW5nIHRoYXQgYW4gZWxlbWVudCBpcyBlaXRoZXIgaW52aXNpYmxlIG9yIG5vdAog
ICAgIHByZXNlbnQgb24gdGhlIERPTS4KIAogICAgIGxvY2F0b3IgdXNlZCB0byBmaW5kIHRoZSBl
bGVtZW50CiAgICAgIiIiCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvY2F0b3IpOgotICAgICAg
ICBzZWxmLnRhcmdldCA9IGxvY2F0b3IKLQotICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBkcml2ZXIp
OgorICAgIGRlZiBfcHJlZGljYXRlKGRyaXZlcik6CiAgICAgICAgIHRyeToKLSAgICAgICAgICAg
IHRhcmdldCA9IHNlbGYudGFyZ2V0CisgICAgICAgICAgICB0YXJnZXQgPSBsb2NhdG9yCiAgICAg
ICAgICAgICBpZiBub3QgaXNpbnN0YW5jZSh0YXJnZXQsIFdlYkVsZW1lbnQpOgotICAgICAgICAg
ICAgICAgIHRhcmdldCA9IF9maW5kX2VsZW1lbnQoZHJpdmVyLCB0YXJnZXQpCisgICAgICAgICAg
ICAgICAgdGFyZ2V0ID0gZHJpdmVyLmZpbmRfZWxlbWVudCgqdGFyZ2V0KQogICAgICAgICAgICAg
cmV0dXJuIF9lbGVtZW50X2lmX3Zpc2libGUodGFyZ2V0LCBGYWxzZSkKICAgICAgICAgZXhjZXB0
IChOb1N1Y2hFbGVtZW50RXhjZXB0aW9uLCBTdGFsZUVsZW1lbnRSZWZlcmVuY2VFeGNlcHRpb24p
OgogICAgICAgICAgICAgIyBJbiB0aGUgY2FzZSBvZiBOb1N1Y2hFbGVtZW50LCByZXR1cm5zIHRy
dWUgYmVjYXVzZSB0aGUgZWxlbWVudCBpcwpAQCAtMjc2LDEzMyArMjUwLDExOSBAQCBjbGFzcyBp
bnZpc2liaWxpdHlfb2ZfZWxlbWVudF9sb2NhdGVkKG9iamVjdCk6CiAgICAgICAgICAgICAjIGVs
ZW1lbnQgcmVmZXJlbmNlIGltcGxpZXMgdGhhdCBlbGVtZW50IGlzIG5vIGxvbmdlciB2aXNpYmxl
LgogICAgICAgICAgICAgcmV0dXJuIFRydWUKIAorICAgIHJldHVybiBfcHJlZGljYXRlCisKIAot
Y2xhc3MgaW52aXNpYmlsaXR5X29mX2VsZW1lbnQoaW52aXNpYmlsaXR5X29mX2VsZW1lbnRfbG9j
YXRlZCk6CitkZWYgaW52aXNpYmlsaXR5X29mX2VsZW1lbnQoZWxlbWVudCk6CiAgICAgIiIiIEFu
IEV4cGVjdGF0aW9uIGZvciBjaGVja2luZyB0aGF0IGFuIGVsZW1lbnQgaXMgZWl0aGVyIGludmlz
aWJsZSBvciBub3QKICAgICBwcmVzZW50IG9uIHRoZSBET00uCiAKICAgICBlbGVtZW50IGlzIGVp
dGhlciBhIGxvY2F0b3IgKHRleHQpIG9yIGFuIFdlYkVsZW1lbnQKICAgICAiIiIKLSAgICBkZWYg
X19pbml0X18oc2VsZiwgZWxlbWVudCk6Ci0gICAgICAgIHNlbGYudGFyZ2V0ID0gZWxlbWVudAor
ICAgIHJldHVybiBpbnZpc2liaWxpdHlfb2ZfZWxlbWVudF9sb2NhdGVkKGVsZW1lbnQpCiAKIAot
Y2xhc3MgZWxlbWVudF90b19iZV9jbGlja2FibGUob2JqZWN0KToKK2RlZiBlbGVtZW50X3RvX2Jl
X2NsaWNrYWJsZShsb2NhdG9yKToKICAgICAiIiIgQW4gRXhwZWN0YXRpb24gZm9yIGNoZWNraW5n
IGFuIGVsZW1lbnQgaXMgdmlzaWJsZSBhbmQgZW5hYmxlZCBzdWNoIHRoYXQKICAgICB5b3UgY2Fu
IGNsaWNrIGl0LiIiIgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2NhdG9yKToKLSAgICAgICAg
c2VsZi5sb2NhdG9yID0gbG9jYXRvcgotCi0gICAgZGVmIF9fY2FsbF9fKHNlbGYsIGRyaXZlcik6
Ci0gICAgICAgIGVsZW1lbnQgPSB2aXNpYmlsaXR5X29mX2VsZW1lbnRfbG9jYXRlZChzZWxmLmxv
Y2F0b3IpKGRyaXZlcikKKyAgICBkZWYgX3ByZWRpY2F0ZShkcml2ZXIpOgorICAgICAgICBlbGVt
ZW50ID0gdmlzaWJpbGl0eV9vZl9lbGVtZW50X2xvY2F0ZWQobG9jYXRvcikoZHJpdmVyKQogICAg
ICAgICBpZiBlbGVtZW50IGFuZCBlbGVtZW50LmlzX2VuYWJsZWQoKToKICAgICAgICAgICAgIHJl
dHVybiBlbGVtZW50CiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKIAor
ICAgIHJldHVybiBfcHJlZGljYXRlCisKIAotY2xhc3Mgc3RhbGVuZXNzX29mKG9iamVjdCk6Citk
ZWYgc3RhbGVuZXNzX29mKGVsZW1lbnQpOgogICAgICIiIiBXYWl0IHVudGlsIGFuIGVsZW1lbnQg
aXMgbm8gbG9uZ2VyIGF0dGFjaGVkIHRvIHRoZSBET00uCiAgICAgZWxlbWVudCBpcyB0aGUgZWxl
bWVudCB0byB3YWl0IGZvci4KICAgICByZXR1cm5zIEZhbHNlIGlmIHRoZSBlbGVtZW50IGlzIHN0
aWxsIGF0dGFjaGVkIHRvIHRoZSBET00sIHRydWUgb3RoZXJ3aXNlLgogICAgICIiIgotICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBlbGVtZW50KToKLSAgICAgICAgc2VsZi5lbGVtZW50ID0gZWxlbWVu
dAotCi0gICAgZGVmIF9fY2FsbF9fKHNlbGYsIGlnbm9yZWQpOgorICAgIGRlZiBfcHJlZGljYXRl
KF8pOgogICAgICAgICB0cnk6CiAgICAgICAgICAgICAjIENhbGxpbmcgYW55IG1ldGhvZCBmb3Jj
ZXMgYSBzdGFsZW5lc3MgY2hlY2sKLSAgICAgICAgICAgIHNlbGYuZWxlbWVudC5pc19lbmFibGVk
KCkKKyAgICAgICAgICAgIGVsZW1lbnQuaXNfZW5hYmxlZCgpCiAgICAgICAgICAgICByZXR1cm4g
RmFsc2UKICAgICAgICAgZXhjZXB0IFN0YWxlRWxlbWVudFJlZmVyZW5jZUV4Y2VwdGlvbjoKICAg
ICAgICAgICAgIHJldHVybiBUcnVlCiAKKyAgICByZXR1cm4gX3ByZWRpY2F0ZQorCiAKLWNsYXNz
IGVsZW1lbnRfdG9fYmVfc2VsZWN0ZWQob2JqZWN0KToKK2RlZiBlbGVtZW50X3RvX2JlX3NlbGVj
dGVkKGVsZW1lbnQpOgogICAgICIiIiBBbiBleHBlY3RhdGlvbiBmb3IgY2hlY2tpbmcgdGhlIHNl
bGVjdGlvbiBpcyBzZWxlY3RlZC4KICAgICBlbGVtZW50IGlzIFdlYkVsZW1lbnQgb2JqZWN0CiAg
ICAgIiIiCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGVsZW1lbnQpOgotICAgICAgICBzZWxmLmVs
ZW1lbnQgPSBlbGVtZW50CisgICAgZGVmIF9wcmVkaWNhdGUoXyk6CisgICAgICAgIHJldHVybiBl
bGVtZW50LmlzX3NlbGVjdGVkKCkKIAotICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBpZ25vcmVkKToK
LSAgICAgICAgcmV0dXJuIHNlbGYuZWxlbWVudC5pc19zZWxlY3RlZCgpCisgICAgcmV0dXJuIF9w
cmVkaWNhdGUKIAogCi1jbGFzcyBlbGVtZW50X2xvY2F0ZWRfdG9fYmVfc2VsZWN0ZWQob2JqZWN0
KToKK2RlZiBlbGVtZW50X2xvY2F0ZWRfdG9fYmVfc2VsZWN0ZWQobG9jYXRvcik6CiAgICAgIiIi
QW4gZXhwZWN0YXRpb24gZm9yIHRoZSBlbGVtZW50IHRvIGJlIGxvY2F0ZWQgaXMgc2VsZWN0ZWQu
CiAgICAgbG9jYXRvciBpcyBhIHR1cGxlIG9mIChieSwgcGF0aCkiIiIKLSAgICBkZWYgX19pbml0
X18oc2VsZiwgbG9jYXRvcik6Ci0gICAgICAgIHNlbGYubG9jYXRvciA9IGxvY2F0b3IKKyAgICBk
ZWYgX3ByZWRpY2F0ZShkcml2ZXIpOgorICAgICAgICByZXR1cm4gZHJpdmVyLmZpbmRfZWxlbWVu
dCgqbG9jYXRvcikuaXNfc2VsZWN0ZWQoKQogCi0gICAgZGVmIF9fY2FsbF9fKHNlbGYsIGRyaXZl
cik6Ci0gICAgICAgIHJldHVybiBfZmluZF9lbGVtZW50KGRyaXZlciwgc2VsZi5sb2NhdG9yKS5p
c19zZWxlY3RlZCgpCisgICAgcmV0dXJuIF9wcmVkaWNhdGUKIAogCi1jbGFzcyBlbGVtZW50X3Nl
bGVjdGlvbl9zdGF0ZV90b19iZShvYmplY3QpOgorZGVmIGVsZW1lbnRfc2VsZWN0aW9uX3N0YXRl
X3RvX2JlKGVsZW1lbnQsIGlzX3NlbGVjdGVkKToKICAgICAiIiIgQW4gZXhwZWN0YXRpb24gZm9y
IGNoZWNraW5nIGlmIHRoZSBnaXZlbiBlbGVtZW50IGlzIHNlbGVjdGVkLgogICAgIGVsZW1lbnQg
aXMgV2ViRWxlbWVudCBvYmplY3QKICAgICBpc19zZWxlY3RlZCBpcyBhIEJvb2xlYW4uIgogICAg
ICIiIgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBlbGVtZW50LCBpc19zZWxlY3RlZCk6Ci0gICAg
ICAgIHNlbGYuZWxlbWVudCA9IGVsZW1lbnQKLSAgICAgICAgc2VsZi5pc19zZWxlY3RlZCA9IGlz
X3NlbGVjdGVkCisgICAgZGVmIF9wcmVkaWNhdGUoXyk6CisgICAgICAgIHJldHVybiBlbGVtZW50
LmlzX3NlbGVjdGVkKCkgPT0gaXNfc2VsZWN0ZWQKIAotICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBp
Z25vcmVkKToKLSAgICAgICAgcmV0dXJuIHNlbGYuZWxlbWVudC5pc19zZWxlY3RlZCgpID09IHNl
bGYuaXNfc2VsZWN0ZWQKKyAgICByZXR1cm4gX3ByZWRpY2F0ZQogCiAKLWNsYXNzIGVsZW1lbnRf
bG9jYXRlZF9zZWxlY3Rpb25fc3RhdGVfdG9fYmUob2JqZWN0KToKK2RlZiBlbGVtZW50X2xvY2F0
ZWRfc2VsZWN0aW9uX3N0YXRlX3RvX2JlKGxvY2F0b3IsIGlzX3NlbGVjdGVkKToKICAgICAiIiIg
QW4gZXhwZWN0YXRpb24gdG8gbG9jYXRlIGFuIGVsZW1lbnQgYW5kIGNoZWNrIGlmIHRoZSBzZWxl
Y3Rpb24gc3RhdGUKICAgICBzcGVjaWZpZWQgaXMgaW4gdGhhdCBzdGF0ZS4KICAgICBsb2NhdG9y
IGlzIGEgdHVwbGUgb2YgKGJ5LCBwYXRoKQogICAgIGlzX3NlbGVjdGVkIGlzIGEgYm9vbGVhbgog
ICAgICIiIgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2NhdG9yLCBpc19zZWxlY3RlZCk6Ci0g
ICAgICAgIHNlbGYubG9jYXRvciA9IGxvY2F0b3IKLSAgICAgICAgc2VsZi5pc19zZWxlY3RlZCA9
IGlzX3NlbGVjdGVkCi0KLSAgICBkZWYgX19jYWxsX18oc2VsZiwgZHJpdmVyKToKKyAgICBkZWYg
X3ByZWRpY2F0ZShkcml2ZXIpOgogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBlbGVtZW50ID0g
X2ZpbmRfZWxlbWVudChkcml2ZXIsIHNlbGYubG9jYXRvcikKLSAgICAgICAgICAgIHJldHVybiBl
bGVtZW50LmlzX3NlbGVjdGVkKCkgPT0gc2VsZi5pc19zZWxlY3RlZAorICAgICAgICAgICAgZWxl
bWVudCA9IGRyaXZlci5maW5kX2VsZW1lbnQoKmxvY2F0b3IpCisgICAgICAgICAgICByZXR1cm4g
ZWxlbWVudC5pc19zZWxlY3RlZCgpID09IGlzX3NlbGVjdGVkCiAgICAgICAgIGV4Y2VwdCBTdGFs
ZUVsZW1lbnRSZWZlcmVuY2VFeGNlcHRpb246CiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKIAor
ICAgIHJldHVybiBfcHJlZGljYXRlCiAKLWNsYXNzIG51bWJlcl9vZl93aW5kb3dzX3RvX2JlKG9i
amVjdCk6Ci0gICAgIiIiIEFuIGV4cGVjdGF0aW9uIGZvciB0aGUgbnVtYmVyIG9mIHdpbmRvd3Mg
dG8gYmUgYSBjZXJ0YWluIHZhbHVlLiIiIgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG51bV93
aW5kb3dzKToKLSAgICAgICAgc2VsZi5udW1fd2luZG93cyA9IG51bV93aW5kb3dzCitkZWYgbnVt
YmVyX29mX3dpbmRvd3NfdG9fYmUobnVtX3dpbmRvd3MpOgorICAgICIiIiBBbiBleHBlY3RhdGlv
biBmb3IgdGhlIG51bWJlciBvZiB3aW5kb3dzIHRvIGJlIGEgY2VydGFpbiB2YWx1ZS4iIiIKKyAg
ICBkZWYgX3ByZWRpY2F0ZShkcml2ZXIpOgorICAgICAgICByZXR1cm4gbGVuKGRyaXZlci53aW5k
b3dfaGFuZGxlcykgPT0gbnVtX3dpbmRvd3MKIAotICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBkcml2
ZXIpOgotICAgICAgICByZXR1cm4gbGVuKGRyaXZlci53aW5kb3dfaGFuZGxlcykgPT0gc2VsZi5u
dW1fd2luZG93cworICAgIHJldHVybiBfcHJlZGljYXRlCiAKIAotY2xhc3MgbmV3X3dpbmRvd19p
c19vcGVuZWQob2JqZWN0KToKK2RlZiBuZXdfd2luZG93X2lzX29wZW5lZChjdXJyZW50X2hhbmRs
ZXMpOgogICAgICIiIiBBbiBleHBlY3RhdGlvbiB0aGF0IGEgbmV3IHdpbmRvdyB3aWxsIGJlIG9w
ZW5lZCBhbmQgaGF2ZSB0aGUgbnVtYmVyIG9mCiAgICAgd2luZG93cyBoYW5kbGVzIGluY3JlYXNl
IiIiCisgICAgZGVmIF9wcmVkaWNhdGUoZHJpdmVyKToKKyAgICAgICAgcmV0dXJuIGxlbihkcml2
ZXIud2luZG93X2hhbmRsZXMpID4gbGVuKGN1cnJlbnRfaGFuZGxlcykKIAotICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBjdXJyZW50X2hhbmRsZXMpOgotICAgICAgICBzZWxmLmN1cnJlbnRfaGFuZGxl
cyA9IGN1cnJlbnRfaGFuZGxlcwotCi0gICAgZGVmIF9fY2FsbF9fKHNlbGYsIGRyaXZlcik6Ci0g
ICAgICAgIHJldHVybiBsZW4oZHJpdmVyLndpbmRvd19oYW5kbGVzKSA+IGxlbihzZWxmLmN1cnJl
bnRfaGFuZGxlcykKKyAgICByZXR1cm4gX3ByZWRpY2F0ZQogCiAKLWNsYXNzIGFsZXJ0X2lzX3By
ZXNlbnQob2JqZWN0KToKLSAgICAiIiIgRXhwZWN0IGFuIGFsZXJ0IHRvIGJlIHByZXNlbnQuIiIi
Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBwYXNzCi0KLSAgICBkZWYgX19jYWxs
X18oc2VsZiwgZHJpdmVyKToKK2RlZiBhbGVydF9pc19wcmVzZW50KCk6CisgICAgZGVmIF9wcmVk
aWNhdGUoZHJpdmVyKToKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgYWxlcnQgPSBkcml2ZXIu
c3dpdGNoX3RvLmFsZXJ0Ci0gICAgICAgICAgICByZXR1cm4gYWxlcnQKKyAgICAgICAgICAgIHJl
dHVybiBkcml2ZXIuc3dpdGNoX3RvLmFsZXJ0CiAgICAgICAgIGV4Y2VwdCBOb0FsZXJ0UHJlc2Vu
dEV4Y2VwdGlvbjoKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogCisgICAgcmV0dXJuIF9wcmVk
aWNhdGUKKwogCiBkZWYgYW55X29mKCpleHBlY3RlZF9jb25kaXRpb25zKToKICAgICAiIiIgQW4g
ZXhwZWN0YXRpb24gdGhhdCBhbnkgb2YgbXVsdGlwbGUgZXhwZWN0ZWQgY29uZGl0aW9ucyBpcyB0
cnVlLgpAQCAtNDUzLDIxICs0MTMsMyBAQCBkZWYgbm9uZV9vZigqZXhwZWN0ZWRfY29uZGl0aW9u
cyk6CiAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICByZXR1cm4gVHJ1ZQogICAgIHJldHVy
biBub25lX29mX2NvbmRpdGlvbgotCi0KLWRlZiBfZmluZF9lbGVtZW50KGRyaXZlciwgYnkpOgot
ICAgICIiIkxvb2tzIHVwIGFuIGVsZW1lbnQuIExvZ3MgYW5kIHJlLXJhaXNlcyBgYFdlYkRyaXZl
ckV4Y2VwdGlvbmBgCi0gICAgaWYgdGhyb3duLiIiIgotICAgIHRyeToKLSAgICAgICAgcmV0dXJu
IGRyaXZlci5maW5kX2VsZW1lbnQoKmJ5KQotICAgIGV4Y2VwdCBOb1N1Y2hFbGVtZW50RXhjZXB0
aW9uIGFzIGU6Ci0gICAgICAgIHJhaXNlIGUKLSAgICBleGNlcHQgV2ViRHJpdmVyRXhjZXB0aW9u
IGFzIGU6Ci0gICAgICAgIHJhaXNlIGUKLQotCi1kZWYgX2ZpbmRfZWxlbWVudHMoZHJpdmVyLCBi
eSk6Ci0gICAgdHJ5OgotICAgICAgICByZXR1cm4gZHJpdmVyLmZpbmRfZWxlbWVudHMoKmJ5KQot
ICAgIGV4Y2VwdCBXZWJEcml2ZXJFeGNlcHRpb24gYXMgZToKLSAgICAgICAgcmFpc2UgZQpkaWZm
IC0tZ2l0IGEvV2ViRHJpdmVyVGVzdHMvaW1wb3J0ZWQvc2VsZW5pdW0vcHkvc2VsZW5pdW0vd2Vi
ZHJpdmVyL3N1cHBvcnQvcmVsYXRpdmVfbG9jYXRvci5weSBiL1dlYkRyaXZlclRlc3RzL2ltcG9y
dGVkL3NlbGVuaXVtL3B5L3NlbGVuaXVtL3dlYmRyaXZlci9zdXBwb3J0L3JlbGF0aXZlX2xvY2F0
b3IucHkKaW5kZXggODYyODNkYjExOTUzMDI1NTYzM2U5MGZhNmJkMjAyNGUzY2JkNGUxMS4uZTJi
ZTc4MTQxMWJmYTg4M2YyNzc0MThjMDE1ZjYyOTQ1MzhhNjgwYyAxMDA2NDQKLS0tIGEvV2ViRHJp
dmVyVGVzdHMvaW1wb3J0ZWQvc2VsZW5pdW0vcHkvc2VsZW5pdW0vd2ViZHJpdmVyL3N1cHBvcnQv
cmVsYXRpdmVfbG9jYXRvci5weQorKysgYi9XZWJEcml2ZXJUZXN0cy9pbXBvcnRlZC9zZWxlbml1
bS9weS9zZWxlbml1bS93ZWJkcml2ZXIvc3VwcG9ydC9yZWxhdGl2ZV9sb2NhdG9yLnB5CkBAIC0x
NSw4ICsxNSw2IEBACiAjIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBh
bmQgbGltaXRhdGlvbnMKICMgdW5kZXIgdGhlIExpY2Vuc2UuCiAKLWltcG9ydCBqc29uCi1pbXBv
cnQgcGtndXRpbAogCiBmcm9tIHNlbGVuaXVtLmNvbW1vbi5leGNlcHRpb25zIGltcG9ydCBXZWJE
cml2ZXJFeGNlcHRpb24KIApAQCAtMjYsMjcgKzI0LDI4IEBAIGRlZiB3aXRoX3RhZ19uYW1lKHRh
Z19uYW1lKToKICAgICAgICAgcmFpc2UgV2ViRHJpdmVyRXhjZXB0aW9uKCJ0YWdfbmFtZSBjYW4g
bm90IGJlIG51bGwiKQogICAgIHJldHVybiBSZWxhdGl2ZUJ5KHsiY3NzIHNlbGVjdG9yIjogdGFn
X25hbWV9KQogCisKIGNsYXNzIFJlbGF0aXZlQnkob2JqZWN0KToKIAotICAgIGRlZiBfX2luaXRf
XyhzZWxmLCByb290ID0gTm9uZSwgZmlsdGVycyA9IFtdKToKKyAgICBkZWYgX19pbml0X18oc2Vs
Ziwgcm9vdD1Ob25lLCBmaWx0ZXJzPU5vbmUpOgogICAgICAgICBzZWxmLnJvb3QgPSByb290Ci0g
ICAgICAgIHNlbGYuZmlsdGVycyA9IGZpbHRlcnMKKyAgICAgICAgc2VsZi5maWx0ZXJzID0gZmls
dGVycyBvciBbXQogCi0gICAgZGVmIGFib3ZlKHNlbGYsIGVsZW1lbnRfb3JfbG9jYXRvciA9IE5v
bmUpOgorICAgIGRlZiBhYm92ZShzZWxmLCBlbGVtZW50X29yX2xvY2F0b3I9Tm9uZSk6CiAgICAg
ICAgIGlmIGVsZW1lbnRfb3JfbG9jYXRvciBpcyBOb25lOgogICAgICAgICAgICAgcmFpc2UgV2Vi
RHJpdmVyRXhjZXB0aW9uKCJFbGVtZW50IG9yIGxvY2F0b3IgbXVzdCBiZSBnaXZlbiB3aGVuIGNh
bGxpbmcgYWJvdmUgbWV0aG9kIikKLSAgICAgICAgCisKICAgICAgICAgc2VsZi5maWx0ZXJzLmFw
cGVuZCh7ImtpbmQiOiAiYWJvdmUiLCAiYXJncyI6IFtlbGVtZW50X29yX2xvY2F0b3JdfSkKICAg
ICAgICAgcmV0dXJuIHNlbGYKIAotICAgIGRlZiBiZWxvdyhzZWxmLCBlbGVtZW50X29yX2xvY2F0
b3IgPSBOb25lKToKKyAgICBkZWYgYmVsb3coc2VsZiwgZWxlbWVudF9vcl9sb2NhdG9yPU5vbmUp
OgogICAgICAgICBpZiBlbGVtZW50X29yX2xvY2F0b3IgaXMgTm9uZToKICAgICAgICAgICAgIHJh
aXNlIFdlYkRyaXZlckV4Y2VwdGlvbigiRWxlbWVudCBvciBsb2NhdG9yIG11c3QgYmUgZ2l2ZW4g
d2hlbiBjYWxsaW5nIGFib3ZlIG1ldGhvZCIpCiAKICAgICAgICAgc2VsZi5maWx0ZXJzLmFwcGVu
ZCh7ImtpbmQiOiAiYmVsb3ciLCAiYXJncyI6IFtlbGVtZW50X29yX2xvY2F0b3JdfSkKICAgICAg
ICAgcmV0dXJuIHNlbGYKIAotICAgIGRlZiB0b19sZWZ0X29mKHNlbGYsIGVsZW1lbnRfb3JfbG9j
YXRvciA9IE5vbmUpOgorICAgIGRlZiB0b19sZWZ0X29mKHNlbGYsIGVsZW1lbnRfb3JfbG9jYXRv
cj1Ob25lKToKICAgICAgICAgaWYgZWxlbWVudF9vcl9sb2NhdG9yIGlzIE5vbmU6CiAgICAgICAg
ICAgICByYWlzZSBXZWJEcml2ZXJFeGNlcHRpb24oIkVsZW1lbnQgb3IgbG9jYXRvciBtdXN0IGJl
IGdpdmVuIHdoZW4gY2FsbGluZyBhYm92ZSBtZXRob2QiKQogCkBAIC02MCwxNyArNTksMTcgQEAg
Y2xhc3MgUmVsYXRpdmVCeShvYmplY3QpOgogICAgICAgICBzZWxmLmZpbHRlcnMuYXBwZW5kKHsi
a2luZCI6ICJyaWdodCIsICJhcmdzIjogW2VsZW1lbnRfb3JfbG9jYXRvcl19KQogICAgICAgICBy
ZXR1cm4gc2VsZgogCi0gICAgZGVmIG5lYXIoc2VsZiwgZWxlbWVudF9vcl9sb2NhdG9yX2Rpc3Rh
bmNlID0gTm9uZSk6Ci0gICAgICAgIGlmIGVsZW1lbnRfb3JfbG9jYXRvciBpcyBOb25lOgorICAg
IGRlZiBuZWFyKHNlbGYsIGVsZW1lbnRfb3JfbG9jYXRvcl9kaXN0YW5jZT1Ob25lKToKKyAgICAg
ICAgaWYgZWxlbWVudF9vcl9sb2NhdG9yX2Rpc3RhbmNlIGlzIE5vbmU6CiAgICAgICAgICAgICBy
YWlzZSBXZWJEcml2ZXJFeGNlcHRpb24oIkVsZW1lbnQgb3IgbG9jYXRvciBvciBkaXN0YW5jZSBt
dXN0IGJlIGdpdmVuIHdoZW4gY2FsbGluZyBhYm92ZSBtZXRob2QiKQogCi0gICAgICAgIHNlbGYu
ZmlsdGVycy5hcHBlbmQoeyJraW5kIjogIm5lYXIiLCAiYXJncyI6IFtlbGVtZW50X29yX2xvY2F0
b3JdfSkKKyAgICAgICAgc2VsZi5maWx0ZXJzLmFwcGVuZCh7ImtpbmQiOiAibmVhciIsICJhcmdz
IjogW2VsZW1lbnRfb3JfbG9jYXRvcl9kaXN0YW5jZV19KQogICAgICAgICByZXR1cm4gc2VsZgog
CiAgICAgZGVmIHRvX2RpY3Qoc2VsZik6CiAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAn
cmVsYXRpdmUnOiB7CiAgICAgICAgICAgICAgICAgJ3Jvb3QnOiBzZWxmLnJvb3QsCi0gICAgICAg
ICAgICAgICAgJ2ZpbHRlcnMnOiBzZWxmLmZpbHRlcnMKLSAgICAgICAgICAgIH0gCisgICAgICAg
ICAgICAgICAgJ2ZpbHRlcnMnOiBzZWxmLmZpbHRlcnMsCisgICAgICAgICAgICB9CiAgICAgICAg
IH0KZGlmZiAtLWdpdCBhL1dlYkRyaXZlclRlc3RzL2ltcG9ydGVkL3NlbGVuaXVtL3B5L3NlbGVu
aXVtL3dlYmRyaXZlci9zdXBwb3J0L3NlbGVjdC5weSBiL1dlYkRyaXZlclRlc3RzL2ltcG9ydGVk
L3NlbGVuaXVtL3B5L3NlbGVuaXVtL3dlYmRyaXZlci9zdXBwb3J0L3NlbGVjdC5weQppbmRleCA3
MTY3NWNhZDEyM2NiMGU3ZWVlMDAwN2VhYjM4MzA3ZTQwODFjZWM5Li41ZDRjMzk2NGJkMjlhNGYy
MmE3NDRmN2FjNDQzMDM0YzQ0MmI2MWJjIDEwMDY0NAotLS0gYS9XZWJEcml2ZXJUZXN0cy9pbXBv
cnRlZC9zZWxlbml1bS9weS9zZWxlbml1bS93ZWJkcml2ZXIvc3VwcG9ydC9zZWxlY3QucHkKKysr
IGIvV2ViRHJpdmVyVGVzdHMvaW1wb3J0ZWQvc2VsZW5pdW0vcHkvc2VsZW5pdW0vd2ViZHJpdmVy
L3N1cHBvcnQvc2VsZWN0LnB5CkBAIC0zMSw3ICszMSw3IEBAIGNsYXNzIFNlbGVjdChvYmplY3Qp
OgogCiAgICAgICAgIEV4YW1wbGU6CiAgICAgICAgICAgICBmcm9tIHNlbGVuaXVtLndlYmRyaXZl
ci5zdXBwb3J0LnVpIGltcG9ydCBTZWxlY3QgXG4KLSAgICAgICAgICAgIFNlbGVjdChkcml2ZXIu
ZmluZF9lbGVtZW50X2J5X3RhZ19uYW1lKCJzZWxlY3QiKSkuc2VsZWN0X2J5X2luZGV4KDIpCisg
ICAgICAgICAgICBTZWxlY3QoZHJpdmVyLmZpbmRfZWxlbWVudChCeS5UQUdfTkFNRSwgInNlbGVj
dCIpKS5zZWxlY3RfYnlfaW5kZXgoMikKICAgICAgICAgIiIiCiAgICAgICAgIGlmIHdlYmVsZW1l
bnQudGFnX25hbWUubG93ZXIoKSAhPSAic2VsZWN0IjoKICAgICAgICAgICAgIHJhaXNlIFVuZXhw
ZWN0ZWRUYWdOYW1lRXhjZXB0aW9uKApkaWZmIC0tZ2l0IGEvV2ViRHJpdmVyVGVzdHMvaW1wb3J0
ZWQvc2VsZW5pdW0vcHkvc2VsZW5pdW0vd2ViZHJpdmVyL3N1cHBvcnQvd2FpdC5weSBiL1dlYkRy
aXZlclRlc3RzL2ltcG9ydGVkL3NlbGVuaXVtL3B5L3NlbGVuaXVtL3dlYmRyaXZlci9zdXBwb3J0
L3dhaXQucHkKaW5kZXggZGNlNTk2MTZiOGM5MDExOGQxMDM5YWE0MWJkZWY0YzUzYTRlZWFhMi4u
ZDNkNDZiMTNkMWM5YmI4MjNmYWZlMGYyNjdlNjk5MWI0MzkzN2E4OSAxMDA2NDQKLS0tIGEvV2Vi
RHJpdmVyVGVzdHMvaW1wb3J0ZWQvc2VsZW5pdW0vcHkvc2VsZW5pdW0vd2ViZHJpdmVyL3N1cHBv
cnQvd2FpdC5weQorKysgYi9XZWJEcml2ZXJUZXN0cy9pbXBvcnRlZC9zZWxlbml1bS9weS9zZWxl
bml1bS93ZWJkcml2ZXIvc3VwcG9ydC93YWl0LnB5CkBAIC0zOCw5ICszOCw5IEBAIGNsYXNzIFdl
YkRyaXZlcldhaXQob2JqZWN0KToKICAgICAgICAgICAgRXhhbXBsZTo6CiAKICAgICAgICAgICAg
IGZyb20gc2VsZW5pdW0ud2ViZHJpdmVyLnN1cHBvcnQud2FpdCBpbXBvcnQgV2ViRHJpdmVyV2Fp
dCBcbgotICAgICAgICAgICAgZWxlbWVudCA9IFdlYkRyaXZlcldhaXQoZHJpdmVyLCAxMCkudW50
aWwobGFtYmRhIHg6IHguZmluZF9lbGVtZW50X2J5X2lkKCJzb21lSWQiKSkgXG4KKyAgICAgICAg
ICAgIGVsZW1lbnQgPSBXZWJEcml2ZXJXYWl0KGRyaXZlciwgMTApLnVudGlsKGxhbWJkYSB4OiB4
LmZpbmRfZWxlbWVudChCeS5JRCwgInNvbWVJZCIpKSBcbgogICAgICAgICAgICAgaXNfZGlzYXBw
ZWFyZWQgPSBXZWJEcml2ZXJXYWl0KGRyaXZlciwgMzAsIDEsIChFbGVtZW50Tm90VmlzaWJsZUV4
Y2VwdGlvbikpLlxcIFxuCi0gICAgICAgICAgICAgICAgICAgICAgICB1bnRpbF9ub3QobGFtYmRh
IHg6IHguZmluZF9lbGVtZW50X2J5X2lkKCJzb21lSWQiKS5pc19kaXNwbGF5ZWQoKSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHVudGlsX25vdChsYW1iZGEgeDogeC5maW5kX2VsZW1lbnQoQnku
SUQsICJzb21lSWQiKS5pc19kaXNwbGF5ZWQoKSkKICAgICAgICAgIiIiCiAgICAgICAgIHNlbGYu
X2RyaXZlciA9IGRyaXZlcgogICAgICAgICBzZWxmLl90aW1lb3V0ID0gZmxvYXQodGltZW91dCkK
ZGlmZiAtLWdpdCBhL1dlYkRyaXZlclRlc3RzL2ltcG9ydGVkL3NlbGVuaXVtL3B5L3NlbGVuaXVt
L3dlYmRyaXZlci93cGV3ZWJraXQvb3B0aW9ucy5weSBiL1dlYkRyaXZlclRlc3RzL2ltcG9ydGVk
L3NlbGVuaXVtL3B5L3NlbGVuaXVtL3dlYmRyaXZlci93cGV3ZWJraXQvb3B0aW9ucy5weQppbmRl
eCAxMDBlYjc2ZTNiMzI4M2U5NTA2YzVkNGY4MTM2YTgzZWNmODc5ZjdmLi42MTQwYWIxMGY1ODBl
ZmJkMzgyYzhmNjI4MjliOWNlYTRlNDY0ZmY2IDEwMDY0NAotLS0gYS9XZWJEcml2ZXJUZXN0cy9p
bXBvcnRlZC9zZWxlbml1bS9weS9zZWxlbml1bS93ZWJkcml2ZXIvd3Bld2Via2l0L29wdGlvbnMu
cHkKKysrIGIvV2ViRHJpdmVyVGVzdHMvaW1wb3J0ZWQvc2VsZW5pdW0vcHkvc2VsZW5pdW0vd2Vi
ZHJpdmVyL3dwZXdlYmtpdC9vcHRpb25zLnB5CkBAIC0xNiwxNCArMTYsMTUgQEAKICMgdW5kZXIg
dGhlIExpY2Vuc2UuCiAKIGZyb20gc2VsZW5pdW0ud2ViZHJpdmVyLmNvbW1vbi5kZXNpcmVkX2Nh
cGFiaWxpdGllcyBpbXBvcnQgRGVzaXJlZENhcGFiaWxpdGllcworZnJvbSBzZWxlbml1bS53ZWJk
cml2ZXIuY29tbW9uLm9wdGlvbnMgaW1wb3J0IEFyZ09wdGlvbnMKIAogCi1jbGFzcyBPcHRpb25z
KG9iamVjdCk6CitjbGFzcyBPcHRpb25zKEFyZ09wdGlvbnMpOgogICAgIEtFWSA9ICd3cGU6YnJv
d3Nlck9wdGlvbnMnCiAKICAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIHN1cGVyKE9w
dGlvbnMsIHNlbGYpLl9faW5pdF9fKCkKICAgICAgICAgc2VsZi5fYmluYXJ5X2xvY2F0aW9uID0g
JycKLSAgICAgICAgc2VsZi5fYXJndW1lbnRzID0gW10KICAgICAgICAgc2VsZi5fY2FwcyA9IERl
c2lyZWRDYXBhYmlsaXRpZXMuV1BFV0VCS0lULmNvcHkoKQogCiAgICAgQHByb3BlcnR5CkBAIC01
MSwyNSArNTIsNiBAQCBjbGFzcyBPcHRpb25zKG9iamVjdCk6CiAgICAgICAgICIiIgogICAgICAg
ICBzZWxmLl9iaW5hcnlfbG9jYXRpb24gPSB2YWx1ZQogCi0gICAgQHByb3BlcnR5Ci0gICAgZGVm
IGFyZ3VtZW50cyhzZWxmKToKLSAgICAgICAgIiIiCi0gICAgICAgIFJldHVybnMgYSBsaXN0IG9m
IGFyZ3VtZW50cyBuZWVkZWQgZm9yIHRoZSBicm93c2VyCi0gICAgICAgICIiIgotICAgICAgICBy
ZXR1cm4gc2VsZi5fYXJndW1lbnRzCi0KLSAgICBkZWYgYWRkX2FyZ3VtZW50KHNlbGYsIGFyZ3Vt
ZW50KToKLSAgICAgICAgIiIiCi0gICAgICAgIEFkZHMgYW4gYXJndW1lbnQgdG8gdGhlIGxpc3QK
LQotICAgICAgICA6QXJnczoKLSAgICAgICAgIC0gU2V0cyB0aGUgYXJndW1lbnRzCi0gICAgICAg
ICIiIgotICAgICAgICBpZiBhcmd1bWVudDoKLSAgICAgICAgICAgIHNlbGYuX2FyZ3VtZW50cy5h
cHBlbmQoYXJndW1lbnQpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVy
cm9yKCJhcmd1bWVudCBjYW4gbm90IGJlIG51bGwiKQotCiAgICAgZGVmIHRvX2NhcGFiaWxpdGll
cyhzZWxmKToKICAgICAgICAgIiIiCiAgICAgICAgIENyZWF0ZXMgYSBjYXBhYmlsaXRpZXMgd2l0
aCBhbGwgdGhlIG9wdGlvbnMgdGhhdCBoYXZlIGJlZW4gc2V0IGFuZApkaWZmIC0tZ2l0IGEvV2Vi
RHJpdmVyVGVzdHMvaW1wb3J0ZWQvc2VsZW5pdW0vcHkvdGVzdC9zZWxlbml1bS93ZWJkcml2ZXIv
Y29tbW9uL2FsZXJ0c190ZXN0cy5weSBiL1dlYkRyaXZlclRlc3RzL2ltcG9ydGVkL3NlbGVuaXVt
L3B5L3Rlc3Qvc2VsZW5pdW0vd2ViZHJpdmVyL2NvbW1vbi9hbGVydHNfdGVzdHMucHkKaW5kZXgg
YmM1YmJlMDYyZGRiNzg2NmQ3OTJlNzliYTgwZWM5MjUzNjdhMGFmYy4uNTZiYjdmODlhOWYwMDRm
MTNlOGYyYmM3YTcxNjhiYmYyYTEzNzZhMyAxMDA2NDQKLS0tIGEvV2ViRHJpdmVyVGVzdHMvaW1w
b3J0ZWQvc2VsZW5pdW0vcHkvdGVzdC9zZWxlbml1bS93ZWJkcml2ZXIvY29tbW9uL2FsZXJ0c190
ZXN0cy5weQorKysgYi9XZWJEcml2ZXJUZXN0cy9pbXBvcnRlZC9zZWxlbml1bS9weS90ZXN0L3Nl
bGVuaXVtL3dlYmRyaXZlci9jb21tb24vYWxlcnRzX3Rlc3RzLnB5CkBAIC00Myw3ICs0Myw3IEBA
IGRlZiB0ZXN0U2hvdWxkQmVBYmxlVG9PdmVycmlkZVRoZVdpbmRvd0FsZXJ0TWV0aG9kKGRyaXZl
ciwgcGFnZXMpOgogICAgICAgICAid2luZG93LmFsZXJ0ID0gZnVuY3Rpb24obXNnKSB7IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCd0ZXh0JykuaW5uZXJIVE1MID0gbXNnOyB9IikKICAgICBkcml2
ZXIuZmluZF9lbGVtZW50KGJ5PUJ5LklELCB2YWx1ZT0iYWxlcnQiKS5jbGljaygpCiAgICAgdHJ5
OgotICAgICAgICBhc3NlcnQgZHJpdmVyLmZpbmRfZWxlbWVudF9ieV9pZCgndGV4dCcpLnRleHQg
PT0gImNoZWVzZSIKKyAgICAgICAgYXNzZXJ0IGRyaXZlci5maW5kX2VsZW1lbnQoQnkuSUQsICd0
ZXh0JykudGV4dCA9PSAiY2hlZXNlIgogICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKICAgICAg
ICAgIyBpZiB3ZSdyZSBoZXJlLCBsaWtlbHkgdGhlIGFsZXJ0IGlzIGRpc3BsYXllZAogICAgICAg
ICAjIG5vdCBkaXNtaXNzaW5nIGl0IHdpbGwgYWZmZWN0IG90aGVyIHRlc3RzCkBAIC03NSw3ICs3
NSw3IEBAIGRlZiB0ZXN0U2hvdWxkQWxsb3dVc2Vyc1RvQWNjZXB0QW5BbGVydFdpdGhOb1RleHRN
YW51YWxseShkcml2ZXIsIHBhZ2VzKToKIAogZGVmIHRlc3RTaG91bGRHZXRUZXh0T2ZBbGVydE9w
ZW5lZEluU2V0VGltZW91dChkcml2ZXIsIHBhZ2VzKToKICAgICBwYWdlcy5sb2FkKCJhbGVydHMu
aHRtbCIpCi0gICAgZHJpdmVyLmZpbmRfZWxlbWVudF9ieV9pZCgic2xvdy1hbGVydCIpLmNsaWNr
KCkKKyAgICBkcml2ZXIuZmluZF9lbGVtZW50KEJ5LklELCAic2xvdy1hbGVydCIpLmNsaWNrKCkK
IAogICAgICMgRE8gTk9UIFdBSVQgT1IgU0xFRVAgSEVSRQogICAgICMgVGhpcyBpcyBhIHJlZ3Jl
c3Npb24gdGVzdCBmb3IgYSBidWcgd2hlcmUgb25seSB0aGUgZmlyc3Qgc3dpdGNoVG8gY2FsbCB3
b3VsZCB0aHJvdywKQEAgLTE1NywxMiArMTU3LDEzIEBAIGRlZiB0ZXN0QWxlcnRTaG91bGROb3RB
bGxvd0FkZGl0aW9uYWxDb21tYW5kc0lmRGltaXNzZWQoZHJpdmVyLCBwYWdlcyk6CiAgICAgICAg
IGFsZXJ0LnRleHQKIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWxfbWFyaW9uZXR0ZShyZWFzb249J0Zh
aWxzIG9uIHRyYXZpcycpCitAcHl0ZXN0Lm1hcmsueGZhaWxfZmlyZWZveChyZWFzb249J0ZhaWxz
IG9uIHRyYXZpcycpCiBAcHl0ZXN0Lm1hcmsueGZhaWxfcmVtb3RlKHJlYXNvbj0nRmFpbHMgb24g
dHJhdmlzJykKK0BweXRlc3QubWFyay54ZmFpbF9zYWZhcmkKIGRlZiB0ZXN0U2hvdWxkQWxsb3dV
c2Vyc1RvQWNjZXB0QW5BbGVydEluQUZyYW1lKGRyaXZlciwgcGFnZXMpOgogICAgIHBhZ2VzLmxv
YWQoImFsZXJ0cy5odG1sIikKICAgICBkcml2ZXIuc3dpdGNoX3RvLmZyYW1lKGRyaXZlci5maW5k
X2VsZW1lbnQoQnkuTkFNRSwgImlmcmFtZVdpdGhBbGVydCIpKQotICAgIGRyaXZlci5maW5kX2Vs
ZW1lbnRfYnlfaWQoImFsZXJ0SW5GcmFtZSIpLmNsaWNrKCkKKyAgICBkcml2ZXIuZmluZF9lbGVt
ZW50KEJ5LklELCAiYWxlcnRJbkZyYW1lIikuY2xpY2soKQogCiAgICAgYWxlcnQgPSBfd2FpdEZv
ckFsZXJ0KGRyaXZlcikKICAgICBhbGVydC5hY2NlcHQoKQpAQCAtMTcwLDE0ICsxNzEsMTUgQEAg
ZGVmIHRlc3RTaG91bGRBbGxvd1VzZXJzVG9BY2NlcHRBbkFsZXJ0SW5BRnJhbWUoZHJpdmVyLCBw
YWdlcyk6CiAgICAgYXNzZXJ0ICJUZXN0aW5nIEFsZXJ0cyIgPT0gZHJpdmVyLnRpdGxlCiAKIAot
QHB5dGVzdC5tYXJrLnhmYWlsX21hcmlvbmV0dGUocmVhc29uPSdGYWlscyBvbiB0cmF2aXMnKQor
QHB5dGVzdC5tYXJrLnhmYWlsX2ZpcmVmb3gocmVhc29uPSdGYWlscyBvbiB0cmF2aXMnKQogQHB5
dGVzdC5tYXJrLnhmYWlsX3JlbW90ZShyZWFzb249J0ZhaWxzIG9uIHRyYXZpcycpCitAcHl0ZXN0
Lm1hcmsueGZhaWxfc2FmYXJpCiBkZWYgdGVzdFNob3VsZEFsbG93VXNlcnNUb0FjY2VwdEFuQWxl
cnRJbkFOZXN0ZWRGcmFtZShkcml2ZXIsIHBhZ2VzKToKICAgICBwYWdlcy5sb2FkKCJhbGVydHMu
aHRtbCIpCiAgICAgZHJpdmVyLnN3aXRjaF90by5mcmFtZShkcml2ZXIuZmluZF9lbGVtZW50KEJ5
Lk5BTUUsICJpZnJhbWVXaXRoSWZyYW1lIikpCiAgICAgZHJpdmVyLnN3aXRjaF90by5mcmFtZShk
cml2ZXIuZmluZF9lbGVtZW50KEJ5Lk5BTUUsICJpZnJhbWVXaXRoQWxlcnQiKSkKIAotICAgIGRy
aXZlci5maW5kX2VsZW1lbnRfYnlfaWQoImFsZXJ0SW5GcmFtZSIpLmNsaWNrKCkKKyAgICBkcml2
ZXIuZmluZF9lbGVtZW50KEJ5LklELCAiYWxlcnRJbkZyYW1lIikuY2xpY2soKQogCiAgICAgYWxl
cnQgPSBfd2FpdEZvckFsZXJ0KGRyaXZlcikKICAgICBhbGVydC5hY2NlcHQoKQpAQCAtMjI3LDYg
KzIyOSw3IEBAIGRlZiB0ZXN0SGFuZGxlc1R3b0FsZXJ0c0Zyb21PbmVJbnRlcmFjdGlvbihkcml2
ZXIsIHBhZ2VzKToKICAgICBhc3NlcnQgZHJpdmVyLmZpbmRfZWxlbWVudChCeS5JRCwgInRleHQy
IikudGV4dCA9PSAiY2hlZGRhciIKIAogCitAcHl0ZXN0Lm1hcmsueGZhaWxfc2FmYXJpCiBkZWYg
dGVzdFNob3VsZEhhbmRsZUFsZXJ0T25QYWdlTG9hZChkcml2ZXIsIHBhZ2VzKToKICAgICBwYWdl
cy5sb2FkKCJhbGVydHMuaHRtbCIpCiAgICAgZHJpdmVyLmZpbmRfZWxlbWVudChCeS5JRCwgIm9w
ZW4tcGFnZS13aXRoLW9ubG9hZC1hbGVydCIpLmNsaWNrKCkKQEAgLTI0Niw3ICsyNDksNiBAQCBk
ZWYgdGVzdFNob3VsZEhhbmRsZUFsZXJ0T25QYWdlTG9hZFVzaW5nR2V0KGRyaXZlciwgcGFnZXMp
OgogICAgIFdlYkRyaXZlcldhaXQoZHJpdmVyLCAzKS51bnRpbChFQy50ZXh0X3RvX2JlX3ByZXNl
bnRfaW5fZWxlbWVudCgoQnkuVEFHX05BTUUsICJwIiksICJQYWdlIHdpdGggb25sb2FkIGV2ZW50
IGhhbmRsZXIiKSkKIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWxfZmlyZWZveChyZWFzb249J05vbiBX
M0MgY29uZm9ybWFudCcpCiBAcHl0ZXN0Lm1hcmsueGZhaWxfY2hyb21lKHJlYXNvbj0nTm9uIFcz
QyBjb25mb3JtYW50JykKIEBweXRlc3QubWFyay54ZmFpbF9jaHJvbWl1bWVkZ2UocmVhc29uPSdO
b24gVzNDIGNvbmZvcm1hbnQnKQogZGVmIHRlc3RTaG91bGRIYW5kbGVBbGVydE9uUGFnZUJlZm9y
ZVVubG9hZChkcml2ZXIsIHBhZ2VzKToKQEAgLTI4OCw3ICsyOTAsNyBAQCBkZWYgdGVzdEFsZXJ0
U2hvdWxkTm90QWxsb3dBZGRpdGlvbmFsQ29tbWFuZHNJZkRpc21pc3NlZChkcml2ZXIsIHBhZ2Vz
KToKICAgICAgICAgYWxlcnQudGV4dAogCiAKLUBweXRlc3QubWFyay54ZmFpbF9tYXJpb25ldHRl
KAorQHB5dGVzdC5tYXJrLnhmYWlsX2ZpcmVmb3goCiAgICAgcmVhc29uPSdodHRwczovL2J1Z3pp
bGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjc5MjExJykKIEBweXRlc3QubWFyay54
ZmFpbF9yZW1vdGUoCiAgICAgcmVhc29uPSdodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3No
b3dfYnVnLmNnaT9pZD0xMjc5MjExJykKZGlmZiAtLWdpdCBhL1dlYkRyaXZlclRlc3RzL2ltcG9y
dGVkL3NlbGVuaXVtL3B5L3Rlc3Qvc2VsZW5pdW0vd2ViZHJpdmVyL2NvbW1vbi9hcGlfZXhhbXBs
ZV90ZXN0cy5weSBiL1dlYkRyaXZlclRlc3RzL2ltcG9ydGVkL3NlbGVuaXVtL3B5L3Rlc3Qvc2Vs
ZW5pdW0vd2ViZHJpdmVyL2NvbW1vbi9hcGlfZXhhbXBsZV90ZXN0cy5weQppbmRleCBkYmM5OGIx
MDQ3MDcyODhmZmE5ZDZlZTQ4ZWUwZmMzYTMxY2RjZDllLi4zOTc0OTI1NDljMmRkODQxZTU1NThi
OTdlMzM1ODVkYWQ4NjE5N2JmIDEwMDY0NAotLS0gYS9XZWJEcml2ZXJUZXN0cy9pbXBvcnRlZC9z
ZWxlbml1bS9weS90ZXN0L3NlbGVuaXVtL3dlYmRyaXZlci9jb21tb24vYXBpX2V4YW1wbGVfdGVz
dHMucHkKKysrIGIvV2ViRHJpdmVyVGVzdHMvaW1wb3J0ZWQvc2VsZW5pdW0vcHkvdGVzdC9zZWxl
bml1bS93ZWJkcml2ZXIvY29tbW9uL2FwaV9leGFtcGxlX3Rlc3RzLnB5CkBAIC0zNyw2ICszNyw3
IEBAIGZyb20gc2VsZW5pdW0uY29tbW9uLmV4Y2VwdGlvbnMgaW1wb3J0ICgKICAgICBOb1N1Y2hX
aW5kb3dFeGNlcHRpb24sCiAgICAgVGltZW91dEV4Y2VwdGlvbiwKICAgICBXZWJEcml2ZXJFeGNl
cHRpb24pCitmcm9tIHNlbGVuaXVtLndlYmRyaXZlci5jb21tb24uYnkgaW1wb3J0IEJ5CiBmcm9t
IHNlbGVuaXVtLndlYmRyaXZlci5zdXBwb3J0LndhaXQgaW1wb3J0IFdlYkRyaXZlcldhaXQKIGZy
b20gc2VsZW5pdW0ud2ViZHJpdmVyLnN1cHBvcnQgaW1wb3J0IGV4cGVjdGVkX2NvbmRpdGlvbnMg
YXMgRUMKIApAQCAtNTUsOTAgKzU2LDkwIEBAIGRlZiB0ZXN0R2V0Q3VycmVudFVybChkcml2ZXIs
IHBhZ2VzLCB3ZWJzZXJ2ZXIpOgogCiBkZWYgdGVzdEZpbmRFbGVtZW50c0J5WFBhdGgoZHJpdmVy
LCBwYWdlcyk6CiAgICAgcGFnZXMubG9hZCgic2ltcGxlVGVzdC5odG1sIikKLSAgICBlbGVtID0g
ZHJpdmVyLmZpbmRfZWxlbWVudF9ieV94cGF0aCgiLy9oMSIpCisgICAgZWxlbSA9IGRyaXZlci5m
aW5kX2VsZW1lbnQoQnkuWFBBVEgsICIvL2gxIikKICAgICBhc3NlcnQgIkhlYWRpbmciID09IGVs
ZW0udGV4dAogCiAKIGRlZiB0ZXN0RmluZEVsZW1lbnRCeVhwYXRoVGhyb3dOb1N1Y2hFbGVtZW50
RXhjZXB0aW9uKGRyaXZlciwgcGFnZXMpOgogICAgIHBhZ2VzLmxvYWQoInNpbXBsZVRlc3QuaHRt
bCIpCiAgICAgd2l0aCBweXRlc3QucmFpc2VzKE5vU3VjaEVsZW1lbnRFeGNlcHRpb24pOgotICAg
ICAgICBkcml2ZXIuZmluZF9lbGVtZW50X2J5X3hwYXRoKCIvL2g0IikKKyAgICAgICAgZHJpdmVy
LmZpbmRfZWxlbWVudChCeS5YUEFUSCwgIi8vaDQiKQogCiAKIGRlZiB0ZXN0RmluZEVsZW1lbnRz
QnlYcGF0aChkcml2ZXIsIHBhZ2VzKToKICAgICBwYWdlcy5sb2FkKCJuZXN0ZWRFbGVtZW50cy5o
dG1sIikKLSAgICBlbGVtcyA9IGRyaXZlci5maW5kX2VsZW1lbnRzX2J5X3hwYXRoKCIvL29wdGlv
biIpCisgICAgZWxlbXMgPSBkcml2ZXIuZmluZF9lbGVtZW50cyhCeS5YUEFUSCwgIi8vb3B0aW9u
IikKICAgICBhc3NlcnQgNDggPT0gbGVuKGVsZW1zKQogICAgIGFzc2VydCAiT25lIiA9PSBlbGVt
c1swXS5nZXRfYXR0cmlidXRlKCJ2YWx1ZSIpCiAKIAogZGVmIHRlc3RGaW5kRWxlbWVudHNCeU5h
bWUoZHJpdmVyLCBwYWdlcyk6CiAgICAgcGFnZXMubG9hZCgieGh0bWxUZXN0Lmh0bWwiKQotICAg
IGVsZW0gPSBkcml2ZXIuZmluZF9lbGVtZW50X2J5X25hbWUoIndpbmRvd09uZSIpCisgICAgZWxl
bSA9IGRyaXZlci5maW5kX2VsZW1lbnQoQnkuTkFNRSwgIndpbmRvd09uZSIpCiAgICAgYXNzZXJ0
ICJPcGVuIG5ldyB3aW5kb3ciID09IGVsZW0udGV4dAogCiAKIGRlZiB0ZXN0RmluZEVsZW1lbnRz
QnlOYW1lSW5FbGVtZW50Q29udGV4dChkcml2ZXIsIHBhZ2VzKToKICAgICBwYWdlcy5sb2FkKCJu
ZXN0ZWRFbGVtZW50cy5odG1sIikKLSAgICBlbGVtID0gZHJpdmVyLmZpbmRfZWxlbWVudF9ieV9u
YW1lKCJmb3JtMiIpCi0gICAgc3ViX2VsZW0gPSBlbGVtLmZpbmRfZWxlbWVudF9ieV9uYW1lKCJz
ZWxlY3RvbWF0aWMiKQorICAgIGVsZW0gPSBkcml2ZXIuZmluZF9lbGVtZW50KEJ5Lk5BTUUsICJm
b3JtMiIpCisgICAgc3ViX2VsZW0gPSBlbGVtLmZpbmRfZWxlbWVudChCeS5OQU1FLCAic2VsZWN0
b21hdGljIikKICAgICBhc3NlcnQgIjIiID09IHN1Yl9lbGVtLmdldF9hdHRyaWJ1dGUoImlkIikK
IAogCiBkZWYgdGVzdEZpbmRFbGVtZW50c0J5TGlua1RleHRJbkVsZW1lbnRDb250ZXh0KGRyaXZl
ciwgcGFnZXMpOgogICAgIHBhZ2VzLmxvYWQoIm5lc3RlZEVsZW1lbnRzLmh0bWwiKQotICAgIGVs
ZW0gPSBkcml2ZXIuZmluZF9lbGVtZW50X2J5X25hbWUoImRpdjEiKQotICAgIHN1Yl9lbGVtID0g
ZWxlbS5maW5kX2VsZW1lbnRfYnlfbGlua190ZXh0KCJoZWxsbyB3b3JsZCIpCisgICAgZWxlbSA9
IGRyaXZlci5maW5kX2VsZW1lbnQoQnkuTkFNRSwgImRpdjEiKQorICAgIHN1Yl9lbGVtID0gZWxl
bS5maW5kX2VsZW1lbnQoQnkuTElOS19URVhULCAiaGVsbG8gd29ybGQiKQogICAgIGFzc2VydCAi
bGluazEiID09IHN1Yl9lbGVtLmdldF9hdHRyaWJ1dGUoIm5hbWUiKQogCiAKIGRlZiB0ZXN0Rmlu
ZEVsZW1lbnRCeUlkSW5FbGVtZW50Q29udGV4dChkcml2ZXIsIHBhZ2VzKToKICAgICBwYWdlcy5s
b2FkKCJuZXN0ZWRFbGVtZW50cy5odG1sIikKLSAgICBlbGVtID0gZHJpdmVyLmZpbmRfZWxlbWVu
dF9ieV9uYW1lKCJmb3JtMiIpCi0gICAgc3ViX2VsZW0gPSBlbGVtLmZpbmRfZWxlbWVudF9ieV9p
ZCgiMiIpCisgICAgZWxlbSA9IGRyaXZlci5maW5kX2VsZW1lbnQoQnkuTkFNRSwgImZvcm0yIikK
KyAgICBzdWJfZWxlbSA9IGVsZW0uZmluZF9lbGVtZW50KEJ5LklELCAiMiIpCiAgICAgYXNzZXJ0
ICJzZWxlY3RvbWF0aWMiID09IHN1Yl9lbGVtLmdldF9hdHRyaWJ1dGUoIm5hbWUiKQogCiAKIGRl
ZiB0ZXN0RmluZEVsZW1lbnRCeVhwYXRoSW5FbGVtZW50Q29udGV4dChkcml2ZXIsIHBhZ2VzKToK
ICAgICBwYWdlcy5sb2FkKCJuZXN0ZWRFbGVtZW50cy5odG1sIikKLSAgICBlbGVtID0gZHJpdmVy
LmZpbmRfZWxlbWVudF9ieV9uYW1lKCJmb3JtMiIpCi0gICAgc3ViX2VsZW0gPSBlbGVtLmZpbmRf
ZWxlbWVudF9ieV94cGF0aCgic2VsZWN0IikKKyAgICBlbGVtID0gZHJpdmVyLmZpbmRfZWxlbWVu
dChCeS5OQU1FLCAiZm9ybTIiKQorICAgIHN1Yl9lbGVtID0gZWxlbS5maW5kX2VsZW1lbnQoQnku
WFBBVEgsICJzZWxlY3QiKQogICAgIGFzc2VydCAiMiIgPT0gc3ViX2VsZW0uZ2V0X2F0dHJpYnV0
ZSgiaWQiKQogCiAKIGRlZiB0ZXN0RmluZEVsZW1lbnRCeVhwYXRoSW5FbGVtZW50Q29udGV4dE5v
dEZvdW5kKGRyaXZlciwgcGFnZXMpOgogICAgIHBhZ2VzLmxvYWQoIm5lc3RlZEVsZW1lbnRzLmh0
bWwiKQotICAgIGVsZW0gPSBkcml2ZXIuZmluZF9lbGVtZW50X2J5X25hbWUoImZvcm0yIikKKyAg
ICBlbGVtID0gZHJpdmVyLmZpbmRfZWxlbWVudChCeS5OQU1FLCAiZm9ybTIiKQogICAgIHdpdGgg
cHl0ZXN0LnJhaXNlcyhOb1N1Y2hFbGVtZW50RXhjZXB0aW9uKToKLSAgICAgICAgZWxlbS5maW5k
X2VsZW1lbnRfYnlfeHBhdGgoImRpdiIpCisgICAgICAgIGVsZW0uZmluZF9lbGVtZW50KEJ5LlhQ
QVRILCAiZGl2IikKIAogCiBkZWYgdGVzdFNob3VsZEJlQWJsZVRvRW50ZXJEYXRhSW50b0Zvcm1G
aWVsZHMoZHJpdmVyLCBwYWdlcyk6CiAgICAgcGFnZXMubG9hZCgieGh0bWxUZXN0Lmh0bWwiKQot
ICAgIGVsZW0gPSBkcml2ZXIuZmluZF9lbGVtZW50X2J5X3hwYXRoKCIvL2Zvcm1bQG5hbWU9J3Nv
bWVGb3JtJ10vaW5wdXRbQGlkPSd1c2VybmFtZSddIikKKyAgICBlbGVtID0gZHJpdmVyLmZpbmRf
ZWxlbWVudChCeS5YUEFUSCwgIi8vZm9ybVtAbmFtZT0nc29tZUZvcm0nXS9pbnB1dFtAaWQ9J3Vz
ZXJuYW1lJ10iKQogICAgIGVsZW0uY2xlYXIoKQogICAgIGVsZW0uc2VuZF9rZXlzKCJzb21lIHRl
eHQiKQotICAgIGVsZW0gPSBkcml2ZXIuZmluZF9lbGVtZW50X2J5X3hwYXRoKCIvL2Zvcm1bQG5h
bWU9J3NvbWVGb3JtJ10vaW5wdXRbQGlkPSd1c2VybmFtZSddIikKKyAgICBlbGVtID0gZHJpdmVy
LmZpbmRfZWxlbWVudChCeS5YUEFUSCwgIi8vZm9ybVtAbmFtZT0nc29tZUZvcm0nXS9pbnB1dFtA
aWQ9J3VzZXJuYW1lJ10iKQogICAgIGFzc2VydCAic29tZSB0ZXh0IiA9PSBlbGVtLmdldF9hdHRy
aWJ1dGUoInZhbHVlIikKIAogCiBkZWYgdGVzdEZpbmRFbGVtZW50QnlUYWdOYW1lKGRyaXZlciwg
cGFnZXMpOgogICAgIHBhZ2VzLmxvYWQoInNpbXBsZVRlc3QuaHRtbCIpCi0gICAgZWxlbXMgPSBk
cml2ZXIuZmluZF9lbGVtZW50c19ieV90YWdfbmFtZSgiZGl2IikKLSAgICBudW1fYnlfeHBhdGgg
PSBsZW4oZHJpdmVyLmZpbmRfZWxlbWVudHNfYnlfeHBhdGgoIi8vZGl2IikpCisgICAgZWxlbXMg
PSBkcml2ZXIuZmluZF9lbGVtZW50cyhCeS5UQUdfTkFNRSwgImRpdiIpCisgICAgbnVtX2J5X3hw
YXRoID0gbGVuKGRyaXZlci5maW5kX2VsZW1lbnRzKEJ5LlhQQVRILCAiLy9kaXYiKSkKICAgICBh
c3NlcnQgbnVtX2J5X3hwYXRoID09IGxlbihlbGVtcykKLSAgICBlbGVtcyA9IGRyaXZlci5maW5k
X2VsZW1lbnRzX2J5X3RhZ19uYW1lKCJpZnJhbWUiKQorICAgIGVsZW1zID0gZHJpdmVyLmZpbmRf
ZWxlbWVudHMoQnkuVEFHX05BTUUsICJpZnJhbWUiKQogICAgIGFzc2VydCAwID09IGxlbihlbGVt
cykKIAogCiBkZWYgdGVzdEZpbmRFbGVtZW50QnlUYWdOYW1lV2l0aGluRWxlbWVudChkcml2ZXIs
IHBhZ2VzKToKICAgICBwYWdlcy5sb2FkKCJzaW1wbGVUZXN0Lmh0bWwiKQotICAgIGRpdiA9IGRy
aXZlci5maW5kX2VsZW1lbnRfYnlfaWQoIm11bHRpbGluZSIpCi0gICAgZWxlbXMgPSBkaXYuZmlu
ZF9lbGVtZW50c19ieV90YWdfbmFtZSgicCIpCisgICAgZGl2ID0gZHJpdmVyLmZpbmRfZWxlbWVu
dChCeS5JRCwgIm11bHRpbGluZSIpCisgICAgZWxlbXMgPSBkaXYuZmluZF9lbGVtZW50cyhCeS5U
QUdfTkFNRSwgInAiKQogICAgIGFzc2VydCBsZW4oZWxlbXMpID09IDEKIAogCi1AcHl0ZXN0Lm1h
cmsueGZhaWxfbWFyaW9uZXR0ZSgKK0BweXRlc3QubWFyay54ZmFpbF9maXJlZm94KAogICAgIHJl
YXNvbj0iVzNDIGltcGxlbWVudGF0aW9ucyBjYW4ndCBzd2l0Y2ggdG8gYSB3aW5kb3cgYnkgbmFt
ZSIsCiAgICAgcmFpc2VzPVRpbWVvdXRFeGNlcHRpb24sCiAgICAgcnVuPUZhbHNlKQpAQCAtMTQ4
LDcgKzE0OSw3IEBAIGRlZiB0ZXN0U3dpdGNoVG9XaW5kb3coZHJpdmVyLCBwYWdlcyk6CiAgICAg
c3dpdGNoX3RvX3dpbmRvd190aW1lb3V0ID0gNQogICAgIHdhaXQgPSBXZWJEcml2ZXJXYWl0KGRy
aXZlciwgc3dpdGNoX3RvX3dpbmRvd190aW1lb3V0LCBpZ25vcmVkX2V4Y2VwdGlvbnM9W05vU3Vj
aFdpbmRvd0V4Y2VwdGlvbl0pCiAgICAgcGFnZXMubG9hZCgieGh0bWxUZXN0Lmh0bWwiKQotICAg
IGRyaXZlci5maW5kX2VsZW1lbnRfYnlfbGlua190ZXh0KCJPcGVuIG5ldyB3aW5kb3ciKS5jbGlj
aygpCisgICAgZHJpdmVyLmZpbmRfZWxlbWVudChCeS5MSU5LX1RFWFQsICJPcGVuIG5ldyB3aW5k
b3ciKS5jbGljaygpCiAgICAgYXNzZXJ0IHRpdGxlXzEgPT0gZHJpdmVyLnRpdGxlCiAgICAgd2Fp
dC51bnRpbChsYW1iZGEgZHI6IGRyLnN3aXRjaF90by53aW5kb3coInJlc3VsdCIpIGlzIE5vbmUp
CiAgICAgYXNzZXJ0IHRpdGxlXzIgPT0gZHJpdmVyLnRpdGxlCkBAIC0xNTYsMjQgKzE1NywyNCBA
QCBkZWYgdGVzdFN3aXRjaFRvV2luZG93KGRyaXZlciwgcGFnZXMpOgogCiBkZWYgdGVzdFN3aXRj
aEZyYW1lQnlOYW1lKGRyaXZlciwgcGFnZXMpOgogICAgIHBhZ2VzLmxvYWQoImZyYW1lc2V0Lmh0
bWwiKQotICAgIGRyaXZlci5zd2l0Y2hfdG8uZnJhbWUoZHJpdmVyLmZpbmRfZWxlbWVudF9ieV9u
YW1lKCJ0aGlyZCIpKQotICAgIGNoZWNrYm94ID0gZHJpdmVyLmZpbmRfZWxlbWVudF9ieV9pZCgi
Y2hlY2t5IikKKyAgICBkcml2ZXIuc3dpdGNoX3RvLmZyYW1lKGRyaXZlci5maW5kX2VsZW1lbnQo
QnkuTkFNRSwgInRoaXJkIikpCisgICAgY2hlY2tib3ggPSBkcml2ZXIuZmluZF9lbGVtZW50KEJ5
LklELCAiY2hlY2t5IikKICAgICBjaGVja2JveC5jbGljaygpCiAgICAgY2hlY2tib3guc3VibWl0
KCkKIAogCiBkZWYgdGVzdElzRW5hYmxlZChkcml2ZXIsIHBhZ2VzKToKICAgICBwYWdlcy5sb2Fk
KCJmb3JtUGFnZS5odG1sIikKLSAgICBlbGVtID0gZHJpdmVyLmZpbmRfZWxlbWVudF9ieV94cGF0
aCgiLy9pbnB1dFtAaWQ9J3dvcmtpbmcnXSIpCisgICAgZWxlbSA9IGRyaXZlci5maW5kX2VsZW1l
bnQoQnkuWFBBVEgsICIvL2lucHV0W0BpZD0nd29ya2luZyddIikKICAgICBhc3NlcnQgZWxlbS5p
c19lbmFibGVkKCkKLSAgICBlbGVtID0gZHJpdmVyLmZpbmRfZWxlbWVudF9ieV94cGF0aCgiLy9p
bnB1dFtAaWQ9J25vdFdvcmtpbmcnXSIpCisgICAgZWxlbSA9IGRyaXZlci5maW5kX2VsZW1lbnQo
QnkuWFBBVEgsICIvL2lucHV0W0BpZD0nbm90V29ya2luZyddIikKICAgICBhc3NlcnQgbm90IGVs
ZW0uaXNfZW5hYmxlZCgpCiAKIAogZGVmIHRlc3RJc1NlbGVjdGVkQW5kVG9nZ2xlKGRyaXZlciwg
cGFnZXMpOgogICAgIHBhZ2VzLmxvYWQoImZvcm1QYWdlLmh0bWwiKQotICAgIGVsZW0gPSBkcml2
ZXIuZmluZF9lbGVtZW50X2J5X2lkKCJtdWx0aSIpCi0gICAgb3B0aW9uX2VsZW1zID0gZWxlbS5m
aW5kX2VsZW1lbnRzX2J5X3hwYXRoKCJvcHRpb24iKQorICAgIGVsZW0gPSBkcml2ZXIuZmluZF9l
bGVtZW50KEJ5LklELCAibXVsdGkiKQorICAgIG9wdGlvbl9lbGVtcyA9IGVsZW0uZmluZF9lbGVt
ZW50cyhCeS5YUEFUSCwgIm9wdGlvbiIpCiAgICAgYXNzZXJ0IG9wdGlvbl9lbGVtc1swXS5pc19z
ZWxlY3RlZCgpCiAgICAgb3B0aW9uX2VsZW1zWzBdLmNsaWNrKCkKICAgICBhc3NlcnQgbm90IG9w
dGlvbl9lbGVtc1swXS5pc19zZWxlY3RlZCgpCkBAIC0xODQsNyArMTg1LDcgQEAgZGVmIHRlc3RJ
c1NlbGVjdGVkQW5kVG9nZ2xlKGRyaXZlciwgcGFnZXMpOgogCiBkZWYgdGVzdE5hdmlnYXRlKGRy
aXZlciwgcGFnZXMpOgogICAgIHBhZ2VzLmxvYWQoImZvcm1QYWdlLmh0bWwiKQotICAgIGRyaXZl
ci5maW5kX2VsZW1lbnRfYnlfaWQoImltYWdlQnV0dG9uIikuc3VibWl0KCkKKyAgICBkcml2ZXIu
ZmluZF9lbGVtZW50KEJ5LklELCAiaW1hZ2VCdXR0b24iKS5zdWJtaXQoKQogICAgIFdlYkRyaXZl
cldhaXQoZHJpdmVyLCAzKS51bnRpbChFQy50aXRsZV9pcygiV2UgQXJyaXZlIEhlcmUiKSkKICAg
ICBkcml2ZXIuYmFjaygpCiAgICAgYXNzZXJ0ICJXZSBMZWF2ZSBGcm9tIEhlcmUiID09IGRyaXZl
ci50aXRsZQpAQCAtMTk1LDE0ICsxOTYsMTQgQEAgZGVmIHRlc3ROYXZpZ2F0ZShkcml2ZXIsIHBh
Z2VzKToKIGRlZiB0ZXN0R2V0QXR0cmlidXRlKGRyaXZlciwgcGFnZXMpOgogICAgIHVybCA9IHBh
Z2VzLnVybCgneGh0bWxUZXN0Lmh0bWwnKQogICAgIGRyaXZlci5nZXQodXJsKQotICAgIGVsZW0g
PSBkcml2ZXIuZmluZF9lbGVtZW50X2J5X2lkKCJpZDEiKQorICAgIGVsZW0gPSBkcml2ZXIuZmlu
ZF9lbGVtZW50KEJ5LklELCAiaWQxIikKICAgICBhdHRyID0gZWxlbS5nZXRfYXR0cmlidXRlKCJo
cmVmIikKICAgICBhc3NlcnQgJ3swfSMnLmZvcm1hdCh1cmwpID09IGF0dHIKIAogCiBkZWYgdGVz
dEdldEltcGxpY2l0QXR0cmlidXRlKGRyaXZlciwgcGFnZXMpOgogICAgIHBhZ2VzLmxvYWQoIm5l
c3RlZEVsZW1lbnRzLmh0bWwiKQotICAgIGVsZW1zID0gZHJpdmVyLmZpbmRfZWxlbWVudHNfYnlf
eHBhdGgoIi8vb3B0aW9uIikKKyAgICBlbGVtcyA9IGRyaXZlci5maW5kX2VsZW1lbnRzKEJ5LlhQ
QVRILCAiLy9vcHRpb24iKQogICAgIGFzc2VydCBsZW4oZWxlbXMpID49IDMKICAgICBmb3IgaSwg
ZWxlbSBpbiBlbnVtZXJhdGUoZWxlbXNbOjNdKToKICAgICAgICAgYXNzZXJ0IGkgPT0gaW50KGVs
ZW0uZ2V0X2F0dHJpYnV0ZSgiaW5kZXgiKSkKQEAgLTIzNSwyMSArMjM2LDIxIEBAIGRlZiB0ZXN0
RXhlY3V0ZVNjcmlwdFdpdGhNdWx0aXBsZUFyZ3MoZHJpdmVyLCBwYWdlcyk6CiAKIGRlZiB0ZXN0
RXhlY3V0ZVNjcmlwdFdpdGhFbGVtZW50QXJncyhkcml2ZXIsIHBhZ2VzKToKICAgICBwYWdlcy5s
b2FkKCJqYXZhc2NyaXB0UGFnZS5odG1sIikKLSAgICBidXR0b24gPSBkcml2ZXIuZmluZF9lbGVt
ZW50X2J5X2lkKCJwbGFpbkJ1dHRvbiIpCisgICAgYnV0dG9uID0gZHJpdmVyLmZpbmRfZWxlbWVu
dChCeS5JRCwgInBsYWluQnV0dG9uIikKICAgICByZXN1bHQgPSBkcml2ZXIuZXhlY3V0ZV9zY3Jp
cHQoImFyZ3VtZW50c1swXVsnZmxpYmJsZSddID0gYXJndW1lbnRzWzBdLmdldEF0dHJpYnV0ZSgn
aWQnKTsgcmV0dXJuIGFyZ3VtZW50c1swXVsnZmxpYmJsZSddOyIsIGJ1dHRvbikKICAgICBhc3Nl
cnQgInBsYWluQnV0dG9uIiA9PSByZXN1bHQKIAogCiBkZWYgdGVzdEZpbmRFbGVtZW50c0J5UGFy
dGlhbExpbmtUZXh0KGRyaXZlciwgcGFnZXMpOgogICAgIHBhZ2VzLmxvYWQoInhodG1sVGVzdC5o
dG1sIikKLSAgICBlbGVtID0gZHJpdmVyLmZpbmRfZWxlbWVudF9ieV9wYXJ0aWFsX2xpbmtfdGV4
dCgibmV3IHdpbmRvdyIpCisgICAgZWxlbSA9IGRyaXZlci5maW5kX2VsZW1lbnQoQnkuUEFSVElB
TF9MSU5LX1RFWFQsICJuZXcgd2luZG93IikKICAgICBlbGVtLmNsaWNrKCkKIAogCiBkZWYgdGVz
dElzRWxlbWVudERpc3BsYXllZChkcml2ZXIsIHBhZ2VzKToKICAgICBwYWdlcy5sb2FkKCJqYXZh
c2NyaXB0UGFnZS5odG1sIikKLSAgICB2aXNpYmxlID0gZHJpdmVyLmZpbmRfZWxlbWVudF9ieV9p
ZCgiZGlzcGxheWVkIikuaXNfZGlzcGxheWVkKCkKLSAgICBub3RfdmlzaWJsZSA9IGRyaXZlci5m
aW5kX2VsZW1lbnRfYnlfaWQoImhpZGRlbiIpLmlzX2Rpc3BsYXllZCgpCisgICAgdmlzaWJsZSA9
IGRyaXZlci5maW5kX2VsZW1lbnQoQnkuSUQsICJkaXNwbGF5ZWQiKS5pc19kaXNwbGF5ZWQoKQor
ICAgIG5vdF92aXNpYmxlID0gZHJpdmVyLmZpbmRfZWxlbWVudChCeS5JRCwgImhpZGRlbiIpLmlz
X2Rpc3BsYXllZCgpCiAgICAgYXNzZXJ0IHZpc2libGUKICAgICBhc3NlcnQgbm90IG5vdF92aXNp
YmxlCiAKQEAgLTI4NSwxNSArMjg2LDE3IEBAIGRlZiB0ZXN0Q2hhbmdlV2luZG93U2l6ZShkcml2
ZXIsIHBhZ2VzKToKICAgICBhc3NlcnQgc2l6ZVsnaGVpZ2h0J10gPT0gbmV3U2l6ZVsxXQogCiAK
LUBweXRlc3QubWFyay54ZmFpbF9tYXJpb25ldHRlKHJhaXNlcz1XZWJEcml2ZXJFeGNlcHRpb24p
CitAcHl0ZXN0Lm1hcmsueGZhaWxfZmlyZWZveChyYWlzZXM9V2ViRHJpdmVyRXhjZXB0aW9uKQog
QHB5dGVzdC5tYXJrLnhmYWlsX3JlbW90ZQorQHB5dGVzdC5tYXJrLnhmYWlsX3NhZmFyaQogZGVm
IHRlc3RHZXRMb2dUeXBlcyhkcml2ZXIsIHBhZ2VzKToKICAgICBwYWdlcy5sb2FkKCJibGFuay5o
dG1sIikKICAgICBhc3NlcnQgaXNpbnN0YW5jZShkcml2ZXIubG9nX3R5cGVzLCBsaXN0KQogCiAK
LUBweXRlc3QubWFyay54ZmFpbF9tYXJpb25ldHRlKHJhaXNlcz1XZWJEcml2ZXJFeGNlcHRpb24p
CitAcHl0ZXN0Lm1hcmsueGZhaWxfZmlyZWZveChyYWlzZXM9V2ViRHJpdmVyRXhjZXB0aW9uKQog
QHB5dGVzdC5tYXJrLnhmYWlsX3JlbW90ZQorQHB5dGVzdC5tYXJrLnhmYWlsX3NhZmFyaQogZGVm
IHRlc3RHZXRMb2coZHJpdmVyLCBwYWdlcyk6CiAgICAgcGFnZXMubG9hZCgiYmxhbmsuaHRtbCIp
CiAgICAgZm9yIGxvZ190eXBlIGluIGRyaXZlci5sb2dfdHlwZXM6CmRpZmYgLS1naXQgYS9XZWJE
cml2ZXJUZXN0cy9pbXBvcnRlZC9zZWxlbml1bS9weS90ZXN0L3NlbGVuaXVtL3dlYmRyaXZlci9j
b21tb24vYXBwY2FjaGVfdGVzdHMucHkgYi9XZWJEcml2ZXJUZXN0cy9pbXBvcnRlZC9zZWxlbml1
bS9weS90ZXN0L3NlbGVuaXVtL3dlYmRyaXZlci9jb21tb24vYXBwY2FjaGVfdGVzdHMucHkKaW5k
ZXggMzNmMTQ3Y2I2N2U3OGU2NWQ1ZDRhNGQ2YTMwMTUxZTNkOWQ0MTFiYi4uY2ZjNjRjYWM2ZTRi
YmJlZDYzMDVjMmQwMGNiZGMwOTQyYTIwYjJhMyAxMDA2NDQKLS0tIGEvV2ViRHJpdmVyVGVzdHMv
aW1wb3J0ZWQvc2VsZW5pdW0vcHkvdGVzdC9zZWxlbml1bS93ZWJkcml2ZXIvY29tbW9uL2FwcGNh
Y2hlX3Rlc3RzLnB5CisrKyBiL1dlYkRyaXZlclRlc3RzL2ltcG9ydGVkL3NlbGVuaXVtL3B5L3Rl
c3Qvc2VsZW5pdW0vd2ViZHJpdmVyL2NvbW1vbi9hcHBjYWNoZV90ZXN0cy5weQpAQCAtMjMsOCAr
MjMsOSBAQCBmcm9tIHNlbGVuaXVtLndlYmRyaXZlci5jb21tb24uaHRtbDUuYXBwbGljYXRpb25f
Y2FjaGUgaW1wb3J0IEFwcGxpY2F0aW9uQ2FjaGUKIAogQHB5dGVzdC5tYXJrLnhmYWlsX2Nocm9t
ZQogQHB5dGVzdC5tYXJrLnhmYWlsX2Nocm9taXVtZWRnZQotQHB5dGVzdC5tYXJrLnhmYWlsX21h
cmlvbmV0dGUocmFpc2VzPVdlYkRyaXZlckV4Y2VwdGlvbikKK0BweXRlc3QubWFyay54ZmFpbF9m
aXJlZm94KHJhaXNlcz1XZWJEcml2ZXJFeGNlcHRpb24pCiBAcHl0ZXN0Lm1hcmsueGZhaWxfcmVt
b3RlCitAcHl0ZXN0Lm1hcmsueGZhaWxfc2FmYXJpCiBkZWYgdGVzdFdlQ2FuR2V0VGhlU3RhdHVz
T2ZUaGVBcHBDYWNoZShkcml2ZXIsIHBhZ2VzKToKICAgICBwYWdlcy5sb2FkKCdodG1sNVBhZ2Un
KQogICAgIGRyaXZlci5pbXBsaWNpdGx5X3dhaXQoMikKZGlmZiAtLWdpdCBhL1dlYkRyaXZlclRl
c3RzL2ltcG9ydGVkL3NlbGVuaXVtL3B5L3Rlc3Qvc2VsZW5pdW0vd2ViZHJpdmVyL2NvbW1vbi9j
aGlsZHJlbl9maW5kaW5nX3Rlc3RzLnB5IGIvV2ViRHJpdmVyVGVzdHMvaW1wb3J0ZWQvc2VsZW5p
dW0vcHkvdGVzdC9zZWxlbml1bS93ZWJkcml2ZXIvY29tbW9uL2NoaWxkcmVuX2ZpbmRpbmdfdGVz
dHMucHkKaW5kZXggNDdhMjQ0YmZkOGIyM2VhNmUzOGVjNDgxOTNhNTNhODI2MjlmYjEwNy4uNmY2
NjdiMmJkMTRlODY1ZTAyYTM4Y2VkYzVhOTIxNzgwNTY2MDM3NSAxMDA2NDQKLS0tIGEvV2ViRHJp
dmVyVGVzdHMvaW1wb3J0ZWQvc2VsZW5pdW0vcHkvdGVzdC9zZWxlbml1bS93ZWJkcml2ZXIvY29t
bW9uL2NoaWxkcmVuX2ZpbmRpbmdfdGVzdHMucHkKKysrIGIvV2ViRHJpdmVyVGVzdHMvaW1wb3J0
ZWQvc2VsZW5pdW0vcHkvdGVzdC9zZWxlbml1bS93ZWJkcml2ZXIvY29tbW9uL2NoaWxkcmVuX2Zp
bmRpbmdfdGVzdHMucHkKQEAgLTIwLDM0ICsyMCwzNSBAQCBpbXBvcnQgcHl0ZXN0CiBmcm9tIHNl
bGVuaXVtLmNvbW1vbi5leGNlcHRpb25zIGltcG9ydCAoCiAgICAgV2ViRHJpdmVyRXhjZXB0aW9u
LAogICAgIE5vU3VjaEVsZW1lbnRFeGNlcHRpb24pCitmcm9tIHNlbGVuaXVtLndlYmRyaXZlci5j
b21tb24uYnkgaW1wb3J0IEJ5CiAKIAogZGVmIHRlc3Rfc2hvdWxkX2ZpbmRfZWxlbWVudF9ieV94
cGF0aChkcml2ZXIsIHBhZ2VzKToKICAgICBwYWdlcy5sb2FkKCJuZXN0ZWRFbGVtZW50cy5odG1s
IikKLSAgICBlbGVtZW50ID0gZHJpdmVyLmZpbmRfZWxlbWVudF9ieV9uYW1lKCJmb3JtMiIpCi0g
ICAgY2hpbGQgPSBlbGVtZW50LmZpbmRfZWxlbWVudF9ieV94cGF0aCgic2VsZWN0IikKKyAgICBl
bGVtZW50ID0gZHJpdmVyLmZpbmRfZWxlbWVudChCeS5OQU1FLCAiZm9ybTIiKQorICAgIGNoaWxk
ID0gZWxlbWVudC5maW5kX2VsZW1lbnQoQnkuWFBBVEgsICJzZWxlY3QiKQogICAgIGFzc2VydCBj
aGlsZC5nZXRfYXR0cmlidXRlKCJpZCIpID09ICIyIgogCiAKIGRlZiB0ZXN0X3Nob3VsZF9ub3Rf
ZmluZF9lbGVtZW50X2J5X3hwYXRoKGRyaXZlciwgcGFnZXMpOgogICAgIHBhZ2VzLmxvYWQoIm5l
c3RlZEVsZW1lbnRzLmh0bWwiKQotICAgIGVsZW1lbnQgPSBkcml2ZXIuZmluZF9lbGVtZW50X2J5
X25hbWUoImZvcm0yIikKKyAgICBlbGVtZW50ID0gZHJpdmVyLmZpbmRfZWxlbWVudChCeS5OQU1F
LCAiZm9ybTIiKQogICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhOb1N1Y2hFbGVtZW50RXhjZXB0aW9u
KToKLSAgICAgICAgZWxlbWVudC5maW5kX2VsZW1lbnRfYnlfeHBhdGgoInNlbGVjdC94IikKKyAg
ICAgICAgZWxlbWVudC5maW5kX2VsZW1lbnQoQnkuWFBBVEgsICJzZWxlY3QveCIpCiAKIAogZGVm
IHRlc3RfZmluZGluZ19kb3Rfc2xhc2hfZWxlbWVudHNfb25fZWxlbWVudF9ieV94cGF0aF9zaG91
bGRfZmluZF9ub3RfdG9wX2xldmVsX2VsZW1lbnRzKGRyaXZlciwgcGFnZXMpOgogICAgIHBhZ2Vz
LmxvYWQoInNpbXBsZVRlc3QuaHRtbCIpCi0gICAgcGFyZW50ID0gZHJpdmVyLmZpbmRfZWxlbWVu
dF9ieV9pZCgibXVsdGlsaW5lIikKLSAgICBjaGlsZHJlbiA9IHBhcmVudC5maW5kX2VsZW1lbnRz
X2J5X3hwYXRoKCIuL3AiKQorICAgIHBhcmVudCA9IGRyaXZlci5maW5kX2VsZW1lbnQoQnkuSUQs
ICJtdWx0aWxpbmUiKQorICAgIGNoaWxkcmVuID0gcGFyZW50LmZpbmRfZWxlbWVudHMoQnkuWFBB
VEgsICIuL3AiKQogICAgIGFzc2VydCAxID09IGxlbihjaGlsZHJlbikKICAgICBhc3NlcnQgIkEg
ZGl2IGNvbnRhaW5pbmciID09IGNoaWxkcmVuWzBdLnRleHQKIAogCiBkZWYgdGVzdF9zaG91bGRf
ZmluZF9lbGVtZW50c19ieV94cGF0aChkcml2ZXIsIHBhZ2VzKToKICAgICBwYWdlcy5sb2FkKCJu
ZXN0ZWRFbGVtZW50cy5odG1sIikKLSAgICBlbGVtZW50ID0gZHJpdmVyLmZpbmRfZWxlbWVudF9i
eV9uYW1lKCJmb3JtMiIpCi0gICAgY2hpbGRyZW4gPSBlbGVtZW50LmZpbmRfZWxlbWVudHNfYnlf
eHBhdGgoInNlbGVjdC9vcHRpb24iKQorICAgIGVsZW1lbnQgPSBkcml2ZXIuZmluZF9lbGVtZW50
KEJ5Lk5BTUUsICJmb3JtMiIpCisgICAgY2hpbGRyZW4gPSBlbGVtZW50LmZpbmRfZWxlbWVudHMo
QnkuWFBBVEgsICJzZWxlY3Qvb3B0aW9uIikKICAgICBhc3NlcnQgbGVuKGNoaWxkcmVuKSA9PSA4
CiAgICAgYXNzZXJ0IGNoaWxkcmVuWzBdLnRleHQgPT0gIk9uZSIKICAgICBhc3NlcnQgY2hpbGRy
ZW5bMV0udGV4dCA9PSAiVHdvIgpAQCAtNTUsNzIgKzU2LDcyIEBAIGRlZiB0ZXN0X3Nob3VsZF9m
aW5kX2VsZW1lbnRzX2J5X3hwYXRoKGRyaXZlciwgcGFnZXMpOgogCiBkZWYgdGVzdF9zaG91bGRf
bm90X2ZpbmRfZWxlbWVudHNfYnlfeHBhdGgoZHJpdmVyLCBwYWdlcyk6CiAgICAgcGFnZXMubG9h
ZCgibmVzdGVkRWxlbWVudHMuaHRtbCIpCi0gICAgZWxlbWVudCA9IGRyaXZlci5maW5kX2VsZW1l
bnRfYnlfbmFtZSgiZm9ybTIiKQotICAgIGNoaWxkcmVuID0gZWxlbWVudC5maW5kX2VsZW1lbnRz
X2J5X3hwYXRoKCJzZWxlY3QveCIpCisgICAgZWxlbWVudCA9IGRyaXZlci5maW5kX2VsZW1lbnQo
QnkuTkFNRSwgImZvcm0yIikKKyAgICBjaGlsZHJlbiA9IGVsZW1lbnQuZmluZF9lbGVtZW50cyhC
eS5YUEFUSCwgInNlbGVjdC94IikKICAgICBhc3NlcnQgbGVuKGNoaWxkcmVuKSA9PSAwCiAKIAog
ZGVmIHRlc3RfZmluZGluZ19lbGVtZW50c19vbl9lbGVtZW50X2J5X3hwYXRoX3Nob3VsZF9maW5k
X3RvcF9sZXZlbF9lbGVtZW50cyhkcml2ZXIsIHBhZ2VzKToKICAgICBwYWdlcy5sb2FkKCJzaW1w
bGVUZXN0Lmh0bWwiKQotICAgIHBhcmVudCA9IGRyaXZlci5maW5kX2VsZW1lbnRfYnlfaWQoIm11
bHRpbGluZSIpCi0gICAgYWxsX3BhcmFfZWxlbWVudHMgPSBkcml2ZXIuZmluZF9lbGVtZW50c19i
eV94cGF0aCgiLy9wIikKLSAgICBjaGlsZHJlbiA9IHBhcmVudC5maW5kX2VsZW1lbnRzX2J5X3hw
YXRoKCIvL3AiKQorICAgIHBhcmVudCA9IGRyaXZlci5maW5kX2VsZW1lbnQoQnkuSUQsICJtdWx0
aWxpbmUiKQorICAgIGFsbF9wYXJhX2VsZW1lbnRzID0gZHJpdmVyLmZpbmRfZWxlbWVudHMoQnku
WFBBVEgsICIvL3AiKQorICAgIGNoaWxkcmVuID0gcGFyZW50LmZpbmRfZWxlbWVudHMoQnkuWFBB
VEgsICIvL3AiKQogICAgIGFzc2VydCBsZW4oYWxsX3BhcmFfZWxlbWVudHMpID09IGxlbihjaGls
ZHJlbikKIAogCiBkZWYgdGVzdF9zaG91bGRfZmluZF9lbGVtZW50X2J5X25hbWUoZHJpdmVyLCBw
YWdlcyk6CiAgICAgcGFnZXMubG9hZCgibmVzdGVkRWxlbWVudHMuaHRtbCIpCi0gICAgZWxlbWVu
dCA9IGRyaXZlci5maW5kX2VsZW1lbnRfYnlfbmFtZSgiZm9ybTIiKQotICAgIGNoaWxkID0gZWxl
bWVudC5maW5kX2VsZW1lbnRfYnlfbmFtZSgic2VsZWN0b21hdGljIikKKyAgICBlbGVtZW50ID0g
ZHJpdmVyLmZpbmRfZWxlbWVudChCeS5OQU1FLCAiZm9ybTIiKQorICAgIGNoaWxkID0gZWxlbWVu
dC5maW5kX2VsZW1lbnQoQnkuTkFNRSwgInNlbGVjdG9tYXRpYyIpCiAgICAgYXNzZXJ0IGNoaWxk
LmdldF9hdHRyaWJ1dGUoImlkIikgPT0gIjIiCiAKIAogZGVmIHRlc3Rfc2hvdWxkX2ZpbmRfZWxl
bWVudHNfYnlfbmFtZShkcml2ZXIsIHBhZ2VzKToKICAgICBwYWdlcy5sb2FkKCJuZXN0ZWRFbGVt
ZW50cy5odG1sIikKLSAgICBlbGVtZW50ID0gZHJpdmVyLmZpbmRfZWxlbWVudF9ieV9uYW1lKCJm
b3JtMiIpCi0gICAgY2hpbGRyZW4gPSBlbGVtZW50LmZpbmRfZWxlbWVudHNfYnlfbmFtZSgic2Vs
ZWN0b21hdGljIikKKyAgICBlbGVtZW50ID0gZHJpdmVyLmZpbmRfZWxlbWVudChCeS5OQU1FLCAi
Zm9ybTIiKQorICAgIGNoaWxkcmVuID0gZWxlbWVudC5maW5kX2VsZW1lbnRzKEJ5Lk5BTUUsICJz
ZWxlY3RvbWF0aWMiKQogICAgIGFzc2VydCBsZW4oY2hpbGRyZW4pID09IDIKIAogCiBkZWYgdGVz
dF9zaG91bGRfZmluZF9lbGVtZW50X2J5X2lkKGRyaXZlciwgcGFnZXMpOgogICAgIHBhZ2VzLmxv
YWQoIm5lc3RlZEVsZW1lbnRzLmh0bWwiKQotICAgIGVsZW1lbnQgPSBkcml2ZXIuZmluZF9lbGVt
ZW50X2J5X25hbWUoImZvcm0yIikKLSAgICBjaGlsZCA9IGVsZW1lbnQuZmluZF9lbGVtZW50X2J5
X2lkKCIyIikKKyAgICBlbGVtZW50ID0gZHJpdmVyLmZpbmRfZWxlbWVudChCeS5OQU1FLCAiZm9y
bTIiKQorICAgIGNoaWxkID0gZWxlbWVudC5maW5kX2VsZW1lbnQoQnkuSUQsICIyIikKICAgICBh
c3NlcnQgY2hpbGQuZ2V0X2F0dHJpYnV0ZSgibmFtZSIpID09ICJzZWxlY3RvbWF0aWMiCiAKIAog
ZGVmIHRlc3Rfc2hvdWxkX2ZpbmRfZWxlbWVudHNfYnlfaWQoZHJpdmVyLCBwYWdlcyk6CiAgICAg
cGFnZXMubG9hZCgibmVzdGVkRWxlbWVudHMuaHRtbCIpCi0gICAgZWxlbWVudCA9IGRyaXZlci5m
aW5kX2VsZW1lbnRfYnlfbmFtZSgiZm9ybTIiKQotICAgIGNoaWxkID0gZWxlbWVudC5maW5kX2Vs
ZW1lbnRzX2J5X2lkKCIyIikKKyAgICBlbGVtZW50ID0gZHJpdmVyLmZpbmRfZWxlbWVudChCeS5O
QU1FLCAiZm9ybTIiKQorICAgIGNoaWxkID0gZWxlbWVudC5maW5kX2VsZW1lbnRzKEJ5LklELCAi
MiIpCiAgICAgYXNzZXJ0IGxlbihjaGlsZCkgPT0gMgogCiAKIGRlZiB0ZXN0X3Nob3VsZF9maW5k
X2VsZW1lbnRfYnlfaWRfd2hlbl9tdWx0aXBsZV9tYXRjaGVzX2V4aXN0KGRyaXZlciwgcGFnZXMp
OgogICAgIHBhZ2VzLmxvYWQoIm5lc3RlZEVsZW1lbnRzLmh0bWwiKQotICAgIGVsZW1lbnQgPSBk
cml2ZXIuZmluZF9lbGVtZW50X2J5X2lkKCJ0ZXN0X2lkX2RpdiIpCi0gICAgY2hpbGQgPSBlbGVt
ZW50LmZpbmRfZWxlbWVudF9ieV9pZCgidGVzdF9pZCIpCisgICAgZWxlbWVudCA9IGRyaXZlci5m
aW5kX2VsZW1lbnQoQnkuSUQsICJ0ZXN0X2lkX2RpdiIpCisgICAgY2hpbGQgPSBlbGVtZW50LmZp
bmRfZWxlbWVudChCeS5JRCwgInRlc3RfaWQiKQogICAgIGFzc2VydCBjaGlsZC50ZXh0ID09ICJp
bnNpZGUiCiAKIAogZGVmIHRlc3Rfc2hvdWxkX2ZpbmRfZWxlbWVudF9ieV9pZF93aGVuX25vX21h
dGNoX2luX2NvbnRleHQoZHJpdmVyLCBwYWdlcyk6CiAgICAgcGFnZXMubG9hZCgibmVzdGVkRWxl
bWVudHMuaHRtbCIpCi0gICAgZWxlbWVudCA9IGRyaXZlci5maW5kX2VsZW1lbnRfYnlfaWQoInRl
c3RfaWRfZGl2IikKKyAgICBlbGVtZW50ID0gZHJpdmVyLmZpbmRfZWxlbWVudChCeS5JRCwgInRl
c3RfaWRfZGl2IikKICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoTm9TdWNoRWxlbWVudEV4Y2VwdGlv
bik6Ci0gICAgICAgIGVsZW1lbnQuZmluZF9lbGVtZW50X2J5X2lkKCJ0ZXN0X2lkX291dCIpCisg
ICAgICAgIGVsZW1lbnQuZmluZF9lbGVtZW50KEJ5LklELCAidGVzdF9pZF9vdXQiKQogCiAKIGRl
ZiB0ZXN0X3Nob3VsZF9maW5kX2VsZW1lbnRfYnlfbGlua190ZXh0KGRyaXZlciwgcGFnZXMpOgog
ICAgIHBhZ2VzLmxvYWQoIm5lc3RlZEVsZW1lbnRzLmh0bWwiKQotICAgIGVsZW1lbnQgPSBkcml2
ZXIuZmluZF9lbGVtZW50X2J5X25hbWUoImRpdjEiKQotICAgIGNoaWxkID0gZWxlbWVudC5maW5k
X2VsZW1lbnRfYnlfbGlua190ZXh0KCJoZWxsbyB3b3JsZCIpCisgICAgZWxlbWVudCA9IGRyaXZl
ci5maW5kX2VsZW1lbnQoQnkuTkFNRSwgImRpdjEiKQorICAgIGNoaWxkID0gZWxlbWVudC5maW5k
X2VsZW1lbnQoQnkuTElOS19URVhULCAiaGVsbG8gd29ybGQiKQogICAgIGFzc2VydCBjaGlsZC5n
ZXRfYXR0cmlidXRlKCJuYW1lIikgPT0gImxpbmsxIgogCiAKIGRlZiB0ZXN0X3Nob3VsZF9maW5k
X2VsZW1lbnRzX2J5X2xpbmtfdGV4dChkcml2ZXIsIHBhZ2VzKToKICAgICBwYWdlcy5sb2FkKCJu
ZXN0ZWRFbGVtZW50cy5odG1sIikKLSAgICBlbGVtZW50ID0gZHJpdmVyLmZpbmRfZWxlbWVudF9i
eV9uYW1lKCJkaXYxIikKLSAgICBjaGlsZHJlbiA9IGVsZW1lbnQuZmluZF9lbGVtZW50c19ieV9s
aW5rX3RleHQoImhlbGxvIHdvcmxkIikKKyAgICBlbGVtZW50ID0gZHJpdmVyLmZpbmRfZWxlbWVu
dChCeS5OQU1FLCAiZGl2MSIpCisgICAgY2hpbGRyZW4gPSBlbGVtZW50LmZpbmRfZWxlbWVudHMo
QnkuTElOS19URVhULCAiaGVsbG8gd29ybGQiKQogICAgIGFzc2VydCBsZW4oY2hpbGRyZW4pID09
IDIKICAgICBhc3NlcnQgImxpbmsxIiA9PSBjaGlsZHJlblswXS5nZXRfYXR0cmlidXRlKCJuYW1l
IikKICAgICBhc3NlcnQgImxpbmsyIiA9PSBjaGlsZHJlblsxXS5nZXRfYXR0cmlidXRlKCJuYW1l
IikKQEAgLTEyOCw1NiArMTI5LDU1IEBAIGRlZiB0ZXN0X3Nob3VsZF9maW5kX2VsZW1lbnRzX2J5
X2xpbmtfdGV4dChkcml2ZXIsIHBhZ2VzKToKIAogZGVmIHRlc3Rfc2hvdWxkX2ZpbmRfZWxlbWVu
dF9ieV9jbGFzc19uYW1lKGRyaXZlciwgcGFnZXMpOgogICAgIHBhZ2VzLmxvYWQoIm5lc3RlZEVs
ZW1lbnRzLmh0bWwiKQotICAgIHBhcmVudCA9IGRyaXZlci5maW5kX2VsZW1lbnRfYnlfbmFtZSgi
Y2xhc3NlcyIpCi0gICAgZWxlbWVudCA9IHBhcmVudC5maW5kX2VsZW1lbnRfYnlfY2xhc3NfbmFt
ZSgib25lIikKKyAgICBwYXJlbnQgPSBkcml2ZXIuZmluZF9lbGVtZW50KEJ5Lk5BTUUsICJjbGFz
c2VzIikKKyAgICBlbGVtZW50ID0gcGFyZW50LmZpbmRfZWxlbWVudChCeS5DTEFTU19OQU1FLCAi
b25lIikKICAgICBhc3NlcnQgIkZpbmQgbWUiID09IGVsZW1lbnQudGV4dAogCiAKIGRlZiB0ZXN0
X3Nob3VsZF9maW5kX2VsZW1lbnRzX2J5X2NsYXNzX25hbWUoZHJpdmVyLCBwYWdlcyk6CiAgICAg
cGFnZXMubG9hZCgibmVzdGVkRWxlbWVudHMuaHRtbCIpCi0gICAgcGFyZW50ID0gZHJpdmVyLmZp
bmRfZWxlbWVudF9ieV9uYW1lKCJjbGFzc2VzIikKLSAgICBlbGVtZW50cyA9IHBhcmVudC5maW5k
X2VsZW1lbnRzX2J5X2NsYXNzX25hbWUoIm9uZSIpCisgICAgcGFyZW50ID0gZHJpdmVyLmZpbmRf
ZWxlbWVudChCeS5OQU1FLCAiY2xhc3NlcyIpCisgICAgZWxlbWVudHMgPSBwYXJlbnQuZmluZF9l
bGVtZW50cyhCeS5DTEFTU19OQU1FLCAib25lIikKICAgICBhc3NlcnQgMiA9PSBsZW4oZWxlbWVu
dHMpCiAKIAogZGVmIHRlc3Rfc2hvdWxkX2ZpbmRfZWxlbWVudF9ieV90YWdfbmFtZShkcml2ZXIs
IHBhZ2VzKToKICAgICBwYWdlcy5sb2FkKCJuZXN0ZWRFbGVtZW50cy5odG1sIikKLSAgICBwYXJl
bnQgPSBkcml2ZXIuZmluZF9lbGVtZW50X2J5X25hbWUoImRpdjEiKQotICAgIGVsZW1lbnQgPSBw
YXJlbnQuZmluZF9lbGVtZW50X2J5X3RhZ19uYW1lKCJhIikKKyAgICBwYXJlbnQgPSBkcml2ZXIu
ZmluZF9lbGVtZW50KEJ5Lk5BTUUsICJkaXYxIikKKyAgICBlbGVtZW50ID0gcGFyZW50LmZpbmRf
ZWxlbWVudChCeS5UQUdfTkFNRSwgImEiKQogICAgIGFzc2VydCAibGluazEiID09IGVsZW1lbnQu
Z2V0X2F0dHJpYnV0ZSgibmFtZSIpCiAKIAogZGVmIHRlc3Rfc2hvdWxkX2ZpbmRfZWxlbWVudHNf
YnlfdGFnX25hbWUoZHJpdmVyLCBwYWdlcyk6CiAgICAgcGFnZXMubG9hZCgibmVzdGVkRWxlbWVu
dHMuaHRtbCIpCi0gICAgcGFyZW50ID0gZHJpdmVyLmZpbmRfZWxlbWVudF9ieV9uYW1lKCJkaXYx
IikKLSAgICBlbGVtZW50cyA9IHBhcmVudC5maW5kX2VsZW1lbnRzX2J5X3RhZ19uYW1lKCJhIikK
KyAgICBwYXJlbnQgPSBkcml2ZXIuZmluZF9lbGVtZW50KEJ5Lk5BTUUsICJkaXYxIikKKyAgICBl
bGVtZW50cyA9IHBhcmVudC5maW5kX2VsZW1lbnRzKEJ5LlRBR19OQU1FLCAiYSIpCiAgICAgYXNz
ZXJ0IDIgPT0gbGVuKGVsZW1lbnRzKQogCiAKIGRlZiB0ZXN0X3Nob3VsZF9iZV9hYmxlX3RvX2Zp
bmRfYW5fZWxlbWVudF9ieV9jc3Nfc2VsZWN0b3IoZHJpdmVyLCBwYWdlcyk6CiAgICAgcGFnZXMu
bG9hZCgibmVzdGVkRWxlbWVudHMuaHRtbCIpCi0gICAgcGFyZW50ID0gZHJpdmVyLmZpbmRfZWxl
bWVudF9ieV9uYW1lKCJmb3JtMiIpCi0gICAgZWxlbWVudCA9IHBhcmVudC5maW5kX2VsZW1lbnRf
YnlfY3NzX3NlbGVjdG9yKCcqW25hbWU9InNlbGVjdG9tYXRpYyJdJykKKyAgICBwYXJlbnQgPSBk
cml2ZXIuZmluZF9lbGVtZW50KEJ5Lk5BTUUsICJmb3JtMiIpCisgICAgZWxlbWVudCA9IHBhcmVu
dC5maW5kX2VsZW1lbnQoQnkuQ1NTX1NFTEVDVE9SLCAnKltuYW1lPSJzZWxlY3RvbWF0aWMiXScp
CiAgICAgYXNzZXJ0ICIyIiA9PSBlbGVtZW50LmdldF9hdHRyaWJ1dGUoImlkIikKIAogCiBkZWYg
dGVzdF9zaG91bGRfYmVfYWJsZV90b19maW5kX211bHRpcGxlX2VsZW1lbnRzX2J5X2Nzc19zZWxl
Y3Rvcihkcml2ZXIsIHBhZ2VzKToKICAgICBwYWdlcy5sb2FkKCJuZXN0ZWRFbGVtZW50cy5odG1s
IikKLSAgICBwYXJlbnQgPSBkcml2ZXIuZmluZF9lbGVtZW50X2J5X25hbWUoImZvcm0yIikKLSAg
ICBlbGVtZW50cyA9IHBhcmVudC5maW5kX2VsZW1lbnRzX2J5X2Nzc19zZWxlY3RvcigKLSAgICAg
ICAgJypbbmFtZT0ic2VsZWN0b21hdGljIl0nKQorICAgIHBhcmVudCA9IGRyaXZlci5maW5kX2Vs
ZW1lbnQoQnkuTkFNRSwgImZvcm0yIikKKyAgICBlbGVtZW50cyA9IHBhcmVudC5maW5kX2VsZW1l
bnRzKEJ5LkNTU19TRUxFQ1RPUiwgJypbbmFtZT0ic2VsZWN0b21hdGljIl0nKQogICAgIGFzc2Vy
dCAyID09IGxlbihlbGVtZW50cykKIAogCiBkZWYgdGVzdF9zaG91bGRfdGhyb3dfYW5fZXJyb3Jf
aWZfdXNlcl9wYXNzZXNfaW5faW52YWxpZF9ieShkcml2ZXIsIHBhZ2VzKToKICAgICBwYWdlcy5s
b2FkKCJuZXN0ZWRFbGVtZW50cy5odG1sIikKLSAgICBlbGVtZW50ID0gZHJpdmVyLmZpbmRfZWxl
bWVudF9ieV9uYW1lKCJmb3JtMiIpCisgICAgZWxlbWVudCA9IGRyaXZlci5maW5kX2VsZW1lbnQo
QnkuTkFNRSwgImZvcm0yIikKICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoV2ViRHJpdmVyRXhjZXB0
aW9uKToKICAgICAgICAgZWxlbWVudC5maW5kX2VsZW1lbnQoImZvbyIsICJiYXIiKQogCiAKIGRl
ZiB0ZXN0X3Nob3VsZF90aHJvd19hbl9lcnJvcl9pZl91c2VyX3Bhc3Nlc19pbl9pbnZhbGlkX2J5
X3doZW5fZmluZF9lbGVtZW50cyhkcml2ZXIsIHBhZ2VzKToKICAgICBwYWdlcy5sb2FkKCJuZXN0
ZWRFbGVtZW50cy5odG1sIikKLSAgICBlbGVtZW50ID0gZHJpdmVyLmZpbmRfZWxlbWVudF9ieV9u
YW1lKCJmb3JtMiIpCisgICAgZWxlbWVudCA9IGRyaXZlci5maW5kX2VsZW1lbnQoQnkuTkFNRSwg
ImZvcm0yIikKICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoV2ViRHJpdmVyRXhjZXB0aW9uKToKICAg
ICAgICAgZWxlbWVudC5maW5kX2VsZW1lbnRzKCJmb28iLCAiYmFyIikKZGlmZiAtLWdpdCBhL1dl
YkRyaXZlclRlc3RzL2ltcG9ydGVkL3NlbGVuaXVtL3B5L3Rlc3Qvc2VsZW5pdW0vd2ViZHJpdmVy
L2NvbW1vbi9jbGVhcl90ZXN0cy5weSBiL1dlYkRyaXZlclRlc3RzL2ltcG9ydGVkL3NlbGVuaXVt
L3B5L3Rlc3Qvc2VsZW5pdW0vd2ViZHJpdmVyL2NvbW1vbi9jbGVhcl90ZXN0cy5weQppbmRleCBi
NjUwZjE3Yjc1Y2ZhZmJhZjJiMGUzYTZiNjBhY2E1MjcxNDg4MjNmLi4xZjY4NTcxZTY4MmJhZWE5
NjVhN2MxMGFmMjIyN2E2OTVmMTA3NGRlIDEwMDY0NAotLS0gYS9XZWJEcml2ZXJUZXN0cy9pbXBv
cnRlZC9zZWxlbml1bS9weS90ZXN0L3NlbGVuaXVtL3dlYmRyaXZlci9jb21tb24vY2xlYXJfdGVz
dHMucHkKKysrIGIvV2ViRHJpdmVyVGVzdHMvaW1wb3J0ZWQvc2VsZW5pdW0vcHkvdGVzdC9zZWxl
bml1bS93ZWJkcml2ZXIvY29tbW9uL2NsZWFyX3Rlc3RzLnB5CkBAIC0xOCwxOCArMTgsMTkgQEAK
IGltcG9ydCBweXRlc3QKIAogZnJvbSBzZWxlbml1bS5jb21tb24uZXhjZXB0aW9ucyBpbXBvcnQg
SW52YWxpZEVsZW1lbnRTdGF0ZUV4Y2VwdGlvbgorZnJvbSBzZWxlbml1bS53ZWJkcml2ZXIuY29t
bW9uLmJ5IGltcG9ydCBCeQogCiAKIGRlZiB0ZXN0V3JpdGFibGVUZXh0SW5wdXRTaG91bGRDbGVh
cihkcml2ZXIsIHBhZ2VzKToKICAgICBwYWdlcy5sb2FkKCJyZWFkT25seVBhZ2UuaHRtbCIpCi0g
ICAgZWxlbWVudCA9IGRyaXZlci5maW5kX2VsZW1lbnRfYnlfaWQoIndyaXRhYmxlVGV4dElucHV0
IikKKyAgICBlbGVtZW50ID0gZHJpdmVyLmZpbmRfZWxlbWVudChCeS5JRCwgIndyaXRhYmxlVGV4
dElucHV0IikKICAgICBlbGVtZW50LmNsZWFyKCkKICAgICBhc3NlcnQgIiIgPT0gZWxlbWVudC5n
ZXRfYXR0cmlidXRlKCJ2YWx1ZSIpCiAKIAogZGVmIHRlc3RUZXh0SW5wdXRTaG91bGROb3RDbGVh
cldoZW5EaXNhYmxlZChkcml2ZXIsIHBhZ2VzKToKICAgICBwYWdlcy5sb2FkKCJyZWFkT25seVBh
Z2UuaHRtbCIpCi0gICAgZWxlbWVudCA9IGRyaXZlci5maW5kX2VsZW1lbnRfYnlfaWQoInRleHRJ
bnB1dG5vdGVuYWJsZWQiKQorICAgIGVsZW1lbnQgPSBkcml2ZXIuZmluZF9lbGVtZW50KEJ5LklE
LCAidGV4dElucHV0bm90ZW5hYmxlZCIpCiAgICAgYXNzZXJ0IG5vdCBlbGVtZW50LmlzX2VuYWJs
ZWQoKQogICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhJbnZhbGlkRWxlbWVudFN0YXRlRXhjZXB0aW9u
KToKICAgICAgICAgZWxlbWVudC5jbGVhcigpCkBAIC0zNywzNCArMzgsMzQgQEAgZGVmIHRlc3RU
ZXh0SW5wdXRTaG91bGROb3RDbGVhcldoZW5EaXNhYmxlZChkcml2ZXIsIHBhZ2VzKToKIAogZGVm
IHRlc3RUZXh0SW5wdXRTaG91bGROb3RDbGVhcldoZW5SZWFkT25seShkcml2ZXIsIHBhZ2VzKToK
ICAgICBwYWdlcy5sb2FkKCJyZWFkT25seVBhZ2UuaHRtbCIpCi0gICAgZWxlbWVudCA9IGRyaXZl
ci5maW5kX2VsZW1lbnRfYnlfaWQoInJlYWRPbmx5VGV4dElucHV0IikKKyAgICBlbGVtZW50ID0g
ZHJpdmVyLmZpbmRfZWxlbWVudChCeS5JRCwgInJlYWRPbmx5VGV4dElucHV0IikKICAgICB3aXRo
IHB5dGVzdC5yYWlzZXMoSW52YWxpZEVsZW1lbnRTdGF0ZUV4Y2VwdGlvbik6CiAgICAgICAgIGVs
ZW1lbnQuY2xlYXIoKQogCiAKIGRlZiB0ZXN0V3JpdGFibGVUZXh0QXJlYVNob3VsZENsZWFyKGRy
aXZlciwgcGFnZXMpOgogICAgIHBhZ2VzLmxvYWQoInJlYWRPbmx5UGFnZS5odG1sIikKLSAgICBl
bGVtZW50ID0gZHJpdmVyLmZpbmRfZWxlbWVudF9ieV9pZCgid3JpdGFibGVUZXh0QXJlYSIpCisg
ICAgZWxlbWVudCA9IGRyaXZlci5maW5kX2VsZW1lbnQoQnkuSUQsICJ3cml0YWJsZVRleHRBcmVh
IikKICAgICBlbGVtZW50LmNsZWFyKCkKICAgICBhc3NlcnQgIiIgPT0gZWxlbWVudC5nZXRfYXR0
cmlidXRlKCJ2YWx1ZSIpCiAKIAogZGVmIHRlc3RUZXh0QXJlYVNob3VsZE5vdENsZWFyV2hlbkRp
c2FibGVkKGRyaXZlciwgcGFnZXMpOgogICAgIHBhZ2VzLmxvYWQoInJlYWRPbmx5UGFnZS5odG1s
IikKLSAgICBlbGVtZW50ID0gZHJpdmVyLmZpbmRfZWxlbWVudF9ieV9pZCgidGV4dEFyZWFOb3Rl
bmFibGVkIikKKyAgICBlbGVtZW50ID0gZHJpdmVyLmZpbmRfZWxlbWVudChCeS5JRCwgInRleHRB
cmVhTm90ZW5hYmxlZCIpCiAgICAgd2l0aCBweXRlc3QucmFpc2VzKEludmFsaWRFbGVtZW50U3Rh
dGVFeGNlcHRpb24pOgogICAgICAgICBlbGVtZW50LmNsZWFyKCkKIAogCiBkZWYgdGVzdFRleHRB
cmVhU2hvdWxkTm90Q2xlYXJXaGVuUmVhZE9ubHkoZHJpdmVyLCBwYWdlcyk6CiAgICAgcGFnZXMu
bG9hZCgicmVhZE9ubHlQYWdlLmh0bWwiKQotICAgIGVsZW1lbnQgPSBkcml2ZXIuZmluZF9lbGVt
ZW50X2J5X2lkKCJ0ZXh0QXJlYVJlYWRPbmx5IikKKyAgICBlbGVtZW50ID0gZHJpdmVyLmZpbmRf
ZWxlbWVudChCeS5JRCwgInRleHRBcmVhUmVhZE9ubHkiKQogICAgIHdpdGggcHl0ZXN0LnJhaXNl
cyhJbnZhbGlkRWxlbWVudFN0YXRlRXhjZXB0aW9uKToKICAgICAgICAgZWxlbWVudC5jbGVhcigp
CiAKIAogZGVmIHRlc3RDb250ZW50RWRpdGFibGVBcmVhU2hvdWxkQ2xlYXIoZHJpdmVyLCBwYWdl
cyk6CiAgICAgcGFnZXMubG9hZCgicmVhZE9ubHlQYWdlLmh0bWwiKQotICAgIGVsZW1lbnQgPSBk
cml2ZXIuZmluZF9lbGVtZW50X2J5X2lkKCJjb250ZW50LWVkaXRhYmxlIikKKyAgICBlbGVtZW50
ID0gZHJpdmVyLmZpbmRfZWxlbWVudChCeS5JRCwgImNvbnRlbnQtZWRpdGFibGUiKQogICAgIGVs
ZW1lbnQuY2xlYXIoKQogICAgIGFzc2VydCAiIiA9PSBlbGVtZW50LnRleHQKZGlmZiAtLWdpdCBh
L1dlYkRyaXZlclRlc3RzL2ltcG9ydGVkL3NlbGVuaXVtL3B5L3Rlc3Qvc2VsZW5pdW0vd2ViZHJp
dmVyL2NvbW1vbi9jbGlja19zY3JvbGxpbmdfdGVzdHMucHkgYi9XZWJEcml2ZXJUZXN0cy9pbXBv
cnRlZC9zZWxlbml1bS9weS90ZXN0L3NlbGVuaXVtL3dlYmRyaXZlci9jb21tb24vY2xpY2tfc2Ny
b2xsaW5nX3Rlc3RzLnB5CmluZGV4IDliYzcxYThhNTZiZWYyYzMyOTk0YjQyYWJiMzg4ZTVmNGI3
ODJjNDMuLmNhMGQwODAwYTMyY2Q4NWQ3YTVjYzA2NTY1ZDE4NGRhMDNlNWMzNWEgMTAwNjQ0Ci0t
LSBhL1dlYkRyaXZlclRlc3RzL2ltcG9ydGVkL3NlbGVuaXVtL3B5L3Rlc3Qvc2VsZW5pdW0vd2Vi
ZHJpdmVyL2NvbW1vbi9jbGlja19zY3JvbGxpbmdfdGVzdHMucHkKKysrIGIvV2ViRHJpdmVyVGVz
dHMvaW1wb3J0ZWQvc2VsZW5pdW0vcHkvdGVzdC9zZWxlbml1bS93ZWJkcml2ZXIvY29tbW9uL2Ns
aWNrX3Njcm9sbGluZ190ZXN0cy5weQpAQCAtNjIsNiArNjIsNyBAQCBkZWYgdGVzdFNob3VsZEJl
QWJsZVRvQ2xpY2tPbkFuRWxlbWVudEhpZGRlbkJ5T3ZlcmZsb3coZHJpdmVyLCBwYWdlcyk6CiAg
ICAgYXNzZXJ0ICJsaW5lOCIgPT0gZHJpdmVyLmZpbmRfZWxlbWVudChCeS5JRCwgImNsaWNrZWQi
KS50ZXh0CiAKIAorQHB5dGVzdC5tYXJrLnhmYWlsX2ZpcmVmb3gKIGRlZiB0ZXN0U2hvdWxkQmVB
YmxlVG9DbGlja09uQW5FbGVtZW50SGlkZGVuQnlEb3VibGVPdmVyZmxvdyhkcml2ZXIsIHBhZ2Vz
KToKICAgICBwYWdlcy5sb2FkKCJzY3JvbGxpbmdfdGVzdHMvcGFnZV93aXRoX2RvdWJsZV9vdmVy
Zmxvd19hdXRvLmh0bWwiKQogCkBAIC04NSw2ICs4Niw3IEBAIGRlZiB0ZXN0U2hvdWxkTm90U2Ny
b2xsT3ZlcmZsb3dFbGVtZW50c1doaWNoQXJlVmlzaWJsZShkcml2ZXIsIHBhZ2VzKToKICAgICBh
c3NlcnQgMCA9PSB5T2Zmc2V0LCAiU2hvdWxkIG5vdCBoYXZlIHNjcm9sbGVkIgogCiAKK0BweXRl
c3QubWFyay54ZmFpbF9maXJlZm94CiBkZWYgdGVzdFNob3VsZE5vdFNjcm9sbElmQWxyZWFkeVNj
cm9sbGVkQW5kRWxlbWVudElzSW5WaWV3KGRyaXZlciwgcGFnZXMpOgogICAgIHBhZ2VzLmxvYWQo
InNjcm9sbDMuaHRtbCIpCiAgICAgZHJpdmVyLmZpbmRfZWxlbWVudChCeS5JRCwgImJ1dHRvbjIi
KS5jbGljaygpCkBAIC05OSwxOSArMTAxLDIxIEBAIGRlZiB0ZXN0U2hvdWxkQmVBYmxlVG9DbGlj
a1JhZGlvQnV0dG9uU2Nyb2xsZWRJbnRvVmlldyhkcml2ZXIsIHBhZ2VzKToKICAgICAjIElmIHdl
IGRvbid0IHRocm93LCB3ZSdyZSBnb29kCiAKIAorQHB5dGVzdC5tYXJrLnhmYWlsX3NhZmFyaQog
ZGVmIHRlc3RTaG91bGRTY3JvbGxPdmVyZmxvd0VsZW1lbnRzSWZDbGlja1BvaW50SXNPdXRPZlZp
ZXdCdXRFbGVtZW50SXNJblZpZXcoZHJpdmVyLCBwYWdlcyk6CiAgICAgcGFnZXMubG9hZCgic2Ny
b2xsNS5odG1sIikKICAgICBkcml2ZXIuZmluZF9lbGVtZW50KEJ5LklELCAiaW5uZXIiKS5jbGlj
aygpCiAgICAgYXNzZXJ0ICJjbGlja2VkIiA9PSBkcml2ZXIuZmluZF9lbGVtZW50KEJ5LklELCAi
Y2xpY2tlZCIpLnRleHQKIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWxfbWFyaW9uZXR0ZSgKK0BweXRl
c3QubWFyay54ZmFpbF9maXJlZm94KAogICAgIHJlYXNvbj0naHR0cHM6Ly9naXRodWIuY29tL3cz
Yy93ZWJkcml2ZXIvaXNzdWVzLzQwOCcpCiBAcHl0ZXN0Lm1hcmsueGZhaWxfcmVtb3RlKAogICAg
IHJlYXNvbj0naHR0cHM6Ly9naXRodWIuY29tL3czYy93ZWJkcml2ZXIvaXNzdWVzLzQwOCcpCitA
cHl0ZXN0Lm1hcmsueGZhaWxfc2FmYXJpCiBkZWYgdGVzdFNob3VsZEJlQWJsZVRvQ2xpY2tFbGVt
ZW50SW5BRnJhbWVUaGF0SXNPdXRPZlZpZXcoZHJpdmVyLCBwYWdlcyk6CiAgICAgcGFnZXMubG9h
ZCgic2Nyb2xsaW5nX3Rlc3RzL3BhZ2Vfd2l0aF9mcmFtZV9vdXRfb2Zfdmlldy5odG1sIikKLSAg
ICBkcml2ZXIuc3dpdGNoX3RvLmZyYW1lKGRyaXZlci5maW5kX2VsZW1lbnRfYnlfbmFtZSgiZnJh
bWUiKSkKKyAgICBkcml2ZXIuc3dpdGNoX3RvLmZyYW1lKGRyaXZlci5maW5kX2VsZW1lbnQoQnku
TkFNRSwgImZyYW1lIikpCiAgICAgZWxlbWVudCA9IGRyaXZlci5maW5kX2VsZW1lbnQoQnkuTkFN
RSwgImNoZWNrYm94IikKICAgICBlbGVtZW50LmNsaWNrKCkKICAgICBhc3NlcnQgZWxlbWVudC5p
c19zZWxlY3RlZCgpCkBAIC0xMTksNyArMTIzLDcgQEAgZGVmIHRlc3RTaG91bGRCZUFibGVUb0Ns
aWNrRWxlbWVudEluQUZyYW1lVGhhdElzT3V0T2ZWaWV3KGRyaXZlciwgcGFnZXMpOgogCiBkZWYg
dGVzdFNob3VsZEJlQWJsZVRvQ2xpY2tFbGVtZW50VGhhdElzT3V0T2ZWaWV3SW5BRnJhbWUoZHJp
dmVyLCBwYWdlcyk6CiAgICAgcGFnZXMubG9hZCgic2Nyb2xsaW5nX3Rlc3RzL3BhZ2Vfd2l0aF9z
Y3JvbGxpbmdfZnJhbWUuaHRtbCIpCi0gICAgZHJpdmVyLnN3aXRjaF90by5mcmFtZShkcml2ZXIu
ZmluZF9lbGVtZW50X2J5X25hbWUoInNjcm9sbGluZ19mcmFtZSIpKQorICAgIGRyaXZlci5zd2l0
Y2hfdG8uZnJhbWUoZHJpdmVyLmZpbmRfZWxlbWVudChCeS5OQU1FLCAic2Nyb2xsaW5nX2ZyYW1l
IikpCiAgICAgZWxlbWVudCA9IGRyaXZlci5maW5kX2VsZW1lbnQoQnkuTkFNRSwgInNjcm9sbF9j
aGVja2JveCIpCiAgICAgZWxlbWVudC5jbGljaygpCiAgICAgYXNzZXJ0IGVsZW1lbnQuaXNfc2Vs
ZWN0ZWQoKQpAQCAtMTMzLDI3ICsxMzcsMzEgQEAgZGVmIHRlc3RTaG91bGROb3RCZUFibGVUb0Ns
aWNrRWxlbWVudFRoYXRJc091dE9mVmlld0luQU5vblNjcm9sbGFibGVGcmFtZShkcml2ZXIKICAg
ICAjIFRPRE8gd2Ugc2hvdWxkIGFzc2VydCB0aGF0IHRoZSBjbGljayB3YXMgdW5zdWNjZXNzZnVs
CiAKIAorQHB5dGVzdC5tYXJrLnhmYWlsX3NhZmFyaQogZGVmIHRlc3RTaG91bGRCZUFibGVUb0Ns
aWNrRWxlbWVudFRoYXRJc091dE9mVmlld0luQUZyYW1lVGhhdElzT3V0T2ZWaWV3KGRyaXZlciwg
cGFnZXMpOgogICAgIHBhZ2VzLmxvYWQoInNjcm9sbGluZ190ZXN0cy9wYWdlX3dpdGhfc2Nyb2xs
aW5nX2ZyYW1lX291dF9vZl92aWV3Lmh0bWwiKQotICAgIGRyaXZlci5zd2l0Y2hfdG8uZnJhbWUo
ZHJpdmVyLmZpbmRfZWxlbWVudF9ieV9uYW1lKCJzY3JvbGxpbmdfZnJhbWUiKSkKKyAgICBkcml2
ZXIuc3dpdGNoX3RvLmZyYW1lKGRyaXZlci5maW5kX2VsZW1lbnQoQnkuTkFNRSwgInNjcm9sbGlu
Z19mcmFtZSIpKQogICAgIGVsZW1lbnQgPSBkcml2ZXIuZmluZF9lbGVtZW50KEJ5Lk5BTUUsICJz
Y3JvbGxfY2hlY2tib3giKQogICAgIGVsZW1lbnQuY2xpY2soKQogICAgIGFzc2VydCBlbGVtZW50
LmlzX3NlbGVjdGVkKCkKIAogCitAcHl0ZXN0Lm1hcmsueGZhaWxfZmlyZWZveAogZGVmIHRlc3RT
aG91bGRCZUFibGVUb0NsaWNrRWxlbWVudFRoYXRJc091dE9mVmlld0luQU5lc3RlZEZyYW1lKGRy
aXZlciwgcGFnZXMpOgogICAgIHBhZ2VzLmxvYWQoInNjcm9sbGluZ190ZXN0cy9wYWdlX3dpdGhf
bmVzdGVkX3Njcm9sbGluZ19mcmFtZXMuaHRtbCIpCi0gICAgZHJpdmVyLnN3aXRjaF90by5mcmFt
ZShkcml2ZXIuZmluZF9lbGVtZW50X2J5X25hbWUoInNjcm9sbGluZ19mcmFtZSIpKQotICAgIGRy
aXZlci5zd2l0Y2hfdG8uZnJhbWUoZHJpdmVyLmZpbmRfZWxlbWVudF9ieV9uYW1lKCJuZXN0ZWRf
c2Nyb2xsaW5nX2ZyYW1lIikpCisgICAgZHJpdmVyLnN3aXRjaF90by5mcmFtZShkcml2ZXIuZmlu
ZF9lbGVtZW50KEJ5Lk5BTUUsICJzY3JvbGxpbmdfZnJhbWUiKSkKKyAgICBkcml2ZXIuc3dpdGNo
X3RvLmZyYW1lKGRyaXZlci5maW5kX2VsZW1lbnQoQnkuTkFNRSwgIm5lc3RlZF9zY3JvbGxpbmdf
ZnJhbWUiKSkKICAgICBlbGVtZW50ID0gZHJpdmVyLmZpbmRfZWxlbWVudChCeS5OQU1FLCAic2Ny
b2xsX2NoZWNrYm94IikKICAgICBlbGVtZW50LmNsaWNrKCkKICAgICBhc3NlcnQgZWxlbWVudC5p
c19zZWxlY3RlZCgpCiAKIAorQHB5dGVzdC5tYXJrLnhmYWlsX2ZpcmVmb3gKK0BweXRlc3QubWFy
ay54ZmFpbF9zYWZhcmkKIGRlZiB0ZXN0U2hvdWxkQmVBYmxlVG9DbGlja0VsZW1lbnRUaGF0SXNP
dXRPZlZpZXdJbkFOZXN0ZWRGcmFtZVRoYXRJc091dE9mVmlldyhkcml2ZXIsIHBhZ2VzKToKICAg
ICBwYWdlcy5sb2FkKCJzY3JvbGxpbmdfdGVzdHMvcGFnZV93aXRoX25lc3RlZF9zY3JvbGxpbmdf
ZnJhbWVzX291dF9vZl92aWV3Lmh0bWwiKQotICAgIGRyaXZlci5zd2l0Y2hfdG8uZnJhbWUoZHJp
dmVyLmZpbmRfZWxlbWVudF9ieV9uYW1lKCJzY3JvbGxpbmdfZnJhbWUiKSkKLSAgICBkcml2ZXIu
c3dpdGNoX3RvLmZyYW1lKGRyaXZlci5maW5kX2VsZW1lbnRfYnlfbmFtZSgibmVzdGVkX3Njcm9s
bGluZ19mcmFtZSIpKQorICAgIGRyaXZlci5zd2l0Y2hfdG8uZnJhbWUoZHJpdmVyLmZpbmRfZWxl
bWVudChCeS5OQU1FLCAic2Nyb2xsaW5nX2ZyYW1lIikpCisgICAgZHJpdmVyLnN3aXRjaF90by5m
cmFtZShkcml2ZXIuZmluZF9lbGVtZW50KEJ5Lk5BTUUsICJuZXN0ZWRfc2Nyb2xsaW5nX2ZyYW1l
IikpCiAgICAgZWxlbWVudCA9IGRyaXZlci5maW5kX2VsZW1lbnQoQnkuTkFNRSwgInNjcm9sbF9j
aGVja2JveCIpCiAgICAgZWxlbWVudC5jbGljaygpCiAgICAgYXNzZXJ0IGVsZW1lbnQuaXNfc2Vs
ZWN0ZWQoKQpAQCAtMTcwLDEzICsxNzgsMTQgQEAgZGVmIGdldFNjcm9sbFRvcChkcml2ZXIpOgog
ICAgIHJldHVybiBkcml2ZXIuZXhlY3V0ZV9zY3JpcHQoInJldHVybiBkb2N1bWVudC5ib2R5LnNj
cm9sbFRvcCIpCiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsX21hcmlvbmV0dGUoCitAcHl0ZXN0Lm1h
cmsueGZhaWxfZmlyZWZveCgKICAgICByZWFzb249J2h0dHBzOi8vZ2l0aHViLmNvbS93M2Mvd2Vi
ZHJpdmVyL2lzc3Vlcy80MDgnKQogQHB5dGVzdC5tYXJrLnhmYWlsX3JlbW90ZSgKICAgICByZWFz
b249J2h0dHBzOi8vZ2l0aHViLmNvbS93M2Mvd2ViZHJpdmVyL2lzc3Vlcy80MDgnKQorQHB5dGVz
dC5tYXJrLnhmYWlsX3NhZmFyaQogZGVmIHRlc3RTaG91bGRCZUFibGVUb0NsaWNrRWxlbWVudElu
QVRhbGxGcmFtZShkcml2ZXIsIHBhZ2VzKToKICAgICBwYWdlcy5sb2FkKCJzY3JvbGxpbmdfdGVz
dHMvcGFnZV93aXRoX3RhbGxfZnJhbWUuaHRtbCIpCi0gICAgZHJpdmVyLnN3aXRjaF90by5mcmFt
ZShkcml2ZXIuZmluZF9lbGVtZW50X2J5X25hbWUoInRhbGxfZnJhbWUiKSkKKyAgICBkcml2ZXIu
c3dpdGNoX3RvLmZyYW1lKGRyaXZlci5maW5kX2VsZW1lbnQoQnkuTkFNRSwgInRhbGxfZnJhbWUi
KSkKICAgICBlbGVtZW50ID0gZHJpdmVyLmZpbmRfZWxlbWVudChCeS5OQU1FLCAiY2hlY2tib3gi
KQogICAgIGVsZW1lbnQuY2xpY2soKQogICAgIGFzc2VydCBlbGVtZW50LmlzX3NlbGVjdGVkKCkK
ZGlmZiAtLWdpdCBhL1dlYkRyaXZlclRlc3RzL2ltcG9ydGVkL3NlbGVuaXVtL3B5L3Rlc3Qvc2Vs
ZW5pdW0vd2ViZHJpdmVyL2NvbW1vbi9jb29raWVfdGVzdHMucHkgYi9XZWJEcml2ZXJUZXN0cy9p
bXBvcnRlZC9zZWxlbml1bS9weS90ZXN0L3NlbGVuaXVtL3dlYmRyaXZlci9jb21tb24vY29va2ll
X3Rlc3RzLnB5CmluZGV4IGExYzA5NzBmZTdhYmEzZThiNGQ5YzM1MTk0OWVmOTE0ZGZiMWYzMmEu
LmEzMjJkZDQzZmEyZGZiYTgwMzUzM2U2MjI4MTA5ZTkyN2JmMTA1ZmQgMTAwNjQ0Ci0tLSBhL1dl
YkRyaXZlclRlc3RzL2ltcG9ydGVkL3NlbGVuaXVtL3B5L3Rlc3Qvc2VsZW5pdW0vd2ViZHJpdmVy
L2NvbW1vbi9jb29raWVfdGVzdHMucHkKKysrIGIvV2ViRHJpdmVyVGVzdHMvaW1wb3J0ZWQvc2Vs
ZW5pdW0vcHkvdGVzdC9zZWxlbml1bS93ZWJkcml2ZXIvY29tbW9uL2Nvb2tpZV90ZXN0cy5weQpA
QCAtMzMsNiArMzMsMzAgQEAgZGVmIGNvb2tpZSh3ZWJzZXJ2ZXIpOgogICAgIHJldHVybiBjb29r
aWUKIAogCitAcHl0ZXN0LmZpeHR1cmUKK2RlZiBzYW1lX3NpdGVfY29va2llX3N0cmljdCh3ZWJz
ZXJ2ZXIpOgorICAgIHNhbWVfc2l0ZV9jb29raWVfc3RyaWN0ID0geworICAgICAgICAnbmFtZSc6
ICdmb28nLAorICAgICAgICAndmFsdWUnOiAnYmFyJywKKyAgICAgICAgJ3BhdGgnOiAnLycsCisg
ICAgICAgICdkb21haW4nOiB3ZWJzZXJ2ZXIuaG9zdCwKKyAgICAgICAgJ3NhbWVTaXRlJzogJ1N0
cmljdCcsCisgICAgICAgICdzZWN1cmUnOiBGYWxzZX0KKyAgICByZXR1cm4gc2FtZV9zaXRlX2Nv
b2tpZV9zdHJpY3QKKworCitAcHl0ZXN0LmZpeHR1cmUKK2RlZiBzYW1lX3NpdGVfY29va2llX2xh
eCh3ZWJzZXJ2ZXIpOgorICAgIHNhbWVfc2l0ZV9jb29raWVfbGF4ID0geworICAgICAgICAnbmFt
ZSc6ICdmb28nLAorICAgICAgICAndmFsdWUnOiAnYmFyJywKKyAgICAgICAgJ3BhdGgnOiAnLycs
CisgICAgICAgICdkb21haW4nOiB3ZWJzZXJ2ZXIuaG9zdCwKKyAgICAgICAgJ3NhbWVTaXRlJzog
J0xheCcsCisgICAgICAgICdzZWN1cmUnOiBGYWxzZX0KKyAgICByZXR1cm4gc2FtZV9zaXRlX2Nv
b2tpZV9sYXgKKworCiBAcHl0ZXN0LmZpeHR1cmUoYXV0b3VzZT1UcnVlKQogZGVmIHBhZ2VzKHJl
cXVlc3QsIGRyaXZlciwgcGFnZXMpOgogICAgIHBhZ2VzLmxvYWQoJ3NpbXBsZVRlc3QuaHRtbCcp
CkBAIC00Niw3ICs3MCwyNiBAQCBkZWYgdGVzdEFkZENvb2tpZShjb29raWUsIGRyaXZlcik6CiAg
ICAgYXNzZXJ0IGNvb2tpZVsnbmFtZSddIGluIHJldHVybmVkCiAKIAorQHB5dGVzdC5tYXJrLnhm
YWlsX2ZpcmVmb3gocmVhc29uPSdzYW1lU2l0ZSBjb29raWUgYXR0cmlidXRlIG5vdCBpbXBsZW1l
bnRlZCcpCitAcHl0ZXN0Lm1hcmsueGZhaWxfcmVtb3RlKHJlYXNvbj0nc2FtZVNpdGUgY29va2ll
IGF0dHJpYnV0ZSBub3QgaW1wbGVtZW50ZWQnKQorQHB5dGVzdC5tYXJrLnhmYWlsX3NhZmFyaQor
ZGVmIHRlc3RBZGRDb29raWVTYW1lU2l0ZVN0cmljdChzYW1lX3NpdGVfY29va2llX3N0cmljdCwg
ZHJpdmVyKToKKyAgICBkcml2ZXIuYWRkX2Nvb2tpZShzYW1lX3NpdGVfY29va2llX3N0cmljdCkK
KyAgICByZXR1cm5lZCA9IGRyaXZlci5nZXRfY29va2llKCdmb28nKQorICAgIGFzc2VydCAnc2Ft
ZVNpdGUnIGluIHJldHVybmVkIGFuZCByZXR1cm5lZFsnc2FtZVNpdGUnXSA9PSAnU3RyaWN0Jwor
CisKK0BweXRlc3QubWFyay54ZmFpbF9maXJlZm94KHJlYXNvbj0nc2FtZVNpdGUgY29va2llIGF0
dHJpYnV0ZSBub3QgaW1wbGVtZW50ZWQnKQorQHB5dGVzdC5tYXJrLnhmYWlsX3JlbW90ZShyZWFz
b249J3NhbWVTaXRlIGNvb2tpZSBhdHRyaWJ1dGUgbm90IGltcGxlbWVudGVkJykKK0BweXRlc3Qu
bWFyay54ZmFpbF9zYWZhcmkKK2RlZiB0ZXN0QWRkQ29va2llU2FtZVNpdGVMYXgoc2FtZV9zaXRl
X2Nvb2tpZV9sYXgsIGRyaXZlcik6CisgICAgZHJpdmVyLmFkZF9jb29raWUoc2FtZV9zaXRlX2Nv
b2tpZV9sYXgpCisgICAgcmV0dXJuZWQgPSBkcml2ZXIuZ2V0X2Nvb2tpZSgnZm9vJykKKyAgICBh
c3NlcnQgJ3NhbWVTaXRlJyBpbiByZXR1cm5lZCBhbmQgcmV0dXJuZWRbJ3NhbWVTaXRlJ10gPT0g
J0xheCcKKworCiBAcHl0ZXN0Lm1hcmsueGZhaWxfaWUKK0BweXRlc3QubWFyay54ZmFpbF9zYWZh
cmkKIGRlZiB0ZXN0QWRkaW5nQUNvb2tpZVRoYXRFeHBpcmVkSW5UaGVQYXN0KGNvb2tpZSwgZHJp
dmVyKToKICAgICBleHBpcmVkID0gY29va2llLmNvcHkoKQogICAgIGV4cGlyZWRbJ2V4cGlyeSdd
ID0gY2FsZW5kYXIudGltZWdtKHRpbWUuZ210aW1lKCkpIC0gMQpkaWZmIC0tZ2l0IGEvV2ViRHJp
dmVyVGVzdHMvaW1wb3J0ZWQvc2VsZW5pdW0vcHkvdGVzdC9zZWxlbml1bS93ZWJkcml2ZXIvY29t
bW9uL2NvcnJlY3RfZXZlbnRfZmlyaW5nX3Rlc3RzLnB5IGIvV2ViRHJpdmVyVGVzdHMvaW1wb3J0
ZWQvc2VsZW5pdW0vcHkvdGVzdC9zZWxlbml1bS93ZWJkcml2ZXIvY29tbW9uL2NvcnJlY3RfZXZl
bnRfZmlyaW5nX3Rlc3RzLnB5CmluZGV4IDFhNmFmMzc4YTMzNDYxZTY0YzA5YjkyMzg3NWY5NTg4
OWZjYzYxNWIuLjg1YTcyMmZmNDU3NTFkMGFjNTI2YmU1OWNjYTZjN2M3ODIwNjRlNmIgMTAwNjQ0
Ci0tLSBhL1dlYkRyaXZlclRlc3RzL2ltcG9ydGVkL3NlbGVuaXVtL3B5L3Rlc3Qvc2VsZW5pdW0v
d2ViZHJpdmVyL2NvbW1vbi9jb3JyZWN0X2V2ZW50X2ZpcmluZ190ZXN0cy5weQorKysgYi9XZWJE
cml2ZXJUZXN0cy9pbXBvcnRlZC9zZWxlbml1bS9weS90ZXN0L3NlbGVuaXVtL3dlYmRyaXZlci9j
b21tb24vY29ycmVjdF9ldmVudF9maXJpbmdfdGVzdHMucHkKQEAgLTE1LDEwOSArMTUsMTIzIEBA
CiAjIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlv
bnMKICMgdW5kZXIgdGhlIExpY2Vuc2UuCiAKK2ltcG9ydCBweXRlc3QKIAorZnJvbSBzZWxlbml1
bS53ZWJkcml2ZXIuY29tbW9uLmJ5IGltcG9ydCBCeQorCisKK0BweXRlc3QubWFyay54ZmFpbF9z
YWZhcmkKIGRlZiB0ZXN0U2hvdWxkRmlyZUNsaWNrRXZlbnRXaGVuQ2xpY2tpbmcoZHJpdmVyLCBw
YWdlcyk6CiAgICAgcGFnZXMubG9hZCgiamF2YXNjcmlwdFBhZ2UuaHRtbCIpCiAgICAgX2NsaWNr
T25FbGVtZW50V2hpY2hSZWNvcmRzRXZlbnRzKGRyaXZlcikKICAgICBfYXNzZXJ0RXZlbnRGaXJl
ZChkcml2ZXIsICJjbGljayIpCiAKIAorQHB5dGVzdC5tYXJrLnhmYWlsX3NhZmFyaQogZGVmIHRl
c3RTaG91bGRGaXJlTW91c2VEb3duRXZlbnRXaGVuQ2xpY2tpbmcoZHJpdmVyLCBwYWdlcyk6CiAg
ICAgcGFnZXMubG9hZCgiamF2YXNjcmlwdFBhZ2UuaHRtbCIpCiAgICAgX2NsaWNrT25FbGVtZW50
V2hpY2hSZWNvcmRzRXZlbnRzKGRyaXZlcikKICAgICBfYXNzZXJ0RXZlbnRGaXJlZChkcml2ZXIs
ICJtb3VzZWRvd24iKQogCiAKK0BweXRlc3QubWFyay54ZmFpbF9zYWZhcmkKIGRlZiB0ZXN0U2hv
dWxkRmlyZU1vdXNlVXBFdmVudFdoZW5DbGlja2luZyhkcml2ZXIsIHBhZ2VzKToKICAgICBwYWdl
cy5sb2FkKCJqYXZhc2NyaXB0UGFnZS5odG1sIikKICAgICBfY2xpY2tPbkVsZW1lbnRXaGljaFJl
Y29yZHNFdmVudHMoZHJpdmVyKQogICAgIF9hc3NlcnRFdmVudEZpcmVkKGRyaXZlciwgIm1vdXNl
dXAiKQogCiAKK0BweXRlc3QubWFyay54ZmFpbF9zYWZhcmkKIGRlZiB0ZXN0U2hvdWxkSXNzdWVN
b3VzZURvd25FdmVudHMoZHJpdmVyLCBwYWdlcyk6CiAgICAgcGFnZXMubG9hZCgiamF2YXNjcmlw
dFBhZ2UuaHRtbCIpCi0gICAgZHJpdmVyLmZpbmRfZWxlbWVudF9ieV9pZCgibW91c2Vkb3duIiku
Y2xpY2soKQotICAgIHJlc3VsdCA9IGRyaXZlci5maW5kX2VsZW1lbnRfYnlfaWQoInJlc3VsdCIp
LnRleHQKKyAgICBkcml2ZXIuZmluZF9lbGVtZW50KEJ5LklELCAibW91c2Vkb3duIikuY2xpY2so
KQorICAgIHJlc3VsdCA9IGRyaXZlci5maW5kX2VsZW1lbnQoQnkuSUQsICJyZXN1bHQiKS50ZXh0
CiAgICAgYXNzZXJ0IHJlc3VsdCA9PSAibW91c2UgZG93biIKIAogCitAcHl0ZXN0Lm1hcmsueGZh
aWxfc2FmYXJpCiBkZWYgdGVzdFNob3VsZElzc3VlQ2xpY2tFdmVudHMoZHJpdmVyLCBwYWdlcyk6
CiAgICAgcGFnZXMubG9hZCgiamF2YXNjcmlwdFBhZ2UuaHRtbCIpCi0gICAgZHJpdmVyLmZpbmRf
ZWxlbWVudF9ieV9pZCgibW91c2VjbGljayIpLmNsaWNrKCkKLSAgICByZXN1bHQgPSBkcml2ZXIu
ZmluZF9lbGVtZW50X2J5X2lkKCJyZXN1bHQiKS50ZXh0CisgICAgZHJpdmVyLmZpbmRfZWxlbWVu
dChCeS5JRCwgIm1vdXNlY2xpY2siKS5jbGljaygpCisgICAgcmVzdWx0ID0gZHJpdmVyLmZpbmRf
ZWxlbWVudChCeS5JRCwgInJlc3VsdCIpLnRleHQKICAgICBhc3NlcnQgcmVzdWx0ID09ICJtb3Vz
ZSBjbGljayIKIAogCitAcHl0ZXN0Lm1hcmsueGZhaWxfc2FmYXJpCiBkZWYgdGVzdFNob3VsZElz
c3VlTW91c2VVcEV2ZW50cyhkcml2ZXIsIHBhZ2VzKToKICAgICBwYWdlcy5sb2FkKCJqYXZhc2Ny
aXB0UGFnZS5odG1sIikKLSAgICBkcml2ZXIuZmluZF9lbGVtZW50X2J5X2lkKCJtb3VzZXVwIiku
Y2xpY2soKQotICAgIHJlc3VsdCA9IGRyaXZlci5maW5kX2VsZW1lbnRfYnlfaWQoInJlc3VsdCIp
LnRleHQKKyAgICBkcml2ZXIuZmluZF9lbGVtZW50KEJ5LklELCAibW91c2V1cCIpLmNsaWNrKCkK
KyAgICByZXN1bHQgPSBkcml2ZXIuZmluZF9lbGVtZW50KEJ5LklELCAicmVzdWx0IikudGV4dAog
ICAgIGFzc2VydCByZXN1bHQgPT0gIm1vdXNlIHVwIgogCiAKK0BweXRlc3QubWFyay54ZmFpbF9z
YWZhcmkKIGRlZiB0ZXN0TW91c2VFdmVudHNTaG91bGRCdWJibGVVcFRvQ29udGFpbmluZ0VsZW1l
bnRzKGRyaXZlciwgcGFnZXMpOgogICAgIHBhZ2VzLmxvYWQoImphdmFzY3JpcHRQYWdlLmh0bWwi
KQotICAgIGRyaXZlci5maW5kX2VsZW1lbnRfYnlfaWQoImNoaWxkIikuY2xpY2soKQotICAgIHJl
c3VsdCA9IGRyaXZlci5maW5kX2VsZW1lbnRfYnlfaWQoInJlc3VsdCIpLnRleHQKKyAgICBkcml2
ZXIuZmluZF9lbGVtZW50KEJ5LklELCAiY2hpbGQiKS5jbGljaygpCisgICAgcmVzdWx0ID0gZHJp
dmVyLmZpbmRfZWxlbWVudChCeS5JRCwgInJlc3VsdCIpLnRleHQKICAgICBhc3NlcnQgcmVzdWx0
ID09ICJtb3VzZSBkb3duIgogCiAKK0BweXRlc3QubWFyay54ZmFpbF9zYWZhcmkKIGRlZiB0ZXN0
U2hvdWxkRW1pdE9uQ2hhbmdlRXZlbnRzV2hlblNlbGVjdGluZ0VsZW1lbnRzKGRyaXZlciwgcGFn
ZXMpOgogICAgIHBhZ2VzLmxvYWQoImphdmFzY3JpcHRQYWdlLmh0bWwiKQotICAgIHNlbGVjdCA9
IGRyaXZlci5maW5kX2VsZW1lbnRfYnlfaWQoJ3NlbGVjdG9yJykKLSAgICBvcHRpb25zID0gc2Vs
ZWN0LmZpbmRfZWxlbWVudHNfYnlfdGFnX25hbWUoJ29wdGlvbicpCi0gICAgaW5pdGlhbFRleHRW
YWx1ZSA9IGRyaXZlci5maW5kX2VsZW1lbnRfYnlfaWQoInJlc3VsdCIpLnRleHQKKyAgICBzZWxl
Y3QgPSBkcml2ZXIuZmluZF9lbGVtZW50KEJ5LklELCAnc2VsZWN0b3InKQorICAgIG9wdGlvbnMg
PSBzZWxlY3QuZmluZF9lbGVtZW50cyhCeS5UQUdfTkFNRSwgJ29wdGlvbicpCisgICAgaW5pdGlh
bFRleHRWYWx1ZSA9IGRyaXZlci5maW5kX2VsZW1lbnQoQnkuSUQsICJyZXN1bHQiKS50ZXh0CiAK
ICAgICBzZWxlY3QuY2xpY2soKQotICAgIGFzc2VydCBkcml2ZXIuZmluZF9lbGVtZW50X2J5X2lk
KCJyZXN1bHQiKS50ZXh0ID09IGluaXRpYWxUZXh0VmFsdWUKKyAgICBhc3NlcnQgZHJpdmVyLmZp
bmRfZWxlbWVudChCeS5JRCwgInJlc3VsdCIpLnRleHQgPT0gaW5pdGlhbFRleHRWYWx1ZQogICAg
IG9wdGlvbnNbMV0uY2xpY2soKQotICAgIGFzc2VydCBkcml2ZXIuZmluZF9lbGVtZW50X2J5X2lk
KCJyZXN1bHQiKS50ZXh0ID09ICJiYXIiCisgICAgYXNzZXJ0IGRyaXZlci5maW5kX2VsZW1lbnQo
QnkuSUQsICJyZXN1bHQiKS50ZXh0ID09ICJiYXIiCiAKIAorQHB5dGVzdC5tYXJrLnhmYWlsX3Nh
ZmFyaQogZGVmIHRlc3RTaG91bGRFbWl0T25DaGFuZ2VFdmVudHNXaGVuQ2hhbmdpbmdUaGVTdGF0
ZU9mQUNoZWNrYm94KGRyaXZlciwgcGFnZXMpOgogICAgIHBhZ2VzLmxvYWQoImphdmFzY3JpcHRQ
YWdlLmh0bWwiKQotICAgIGNoZWNrYm94ID0gZHJpdmVyLmZpbmRfZWxlbWVudF9ieV9pZCgiY2hl
Y2tib3giKQorICAgIGNoZWNrYm94ID0gZHJpdmVyLmZpbmRfZWxlbWVudChCeS5JRCwgImNoZWNr
Ym94IikKICAgICBjaGVja2JveC5jbGljaygpCi0gICAgYXNzZXJ0IGRyaXZlci5maW5kX2VsZW1l
bnRfYnlfaWQoInJlc3VsdCIpLnRleHQgPT0gImNoZWNrYm94IHRoaW5nIgorICAgIGFzc2VydCBk
cml2ZXIuZmluZF9lbGVtZW50KEJ5LklELCAicmVzdWx0IikudGV4dCA9PSAiY2hlY2tib3ggdGhp
bmciCiAKIAogZGVmIHRlc3RTaG91bGRFbWl0Q2xpY2tFdmVudFdoZW5DbGlja2luZ09uQVRleHRJ
bnB1dEVsZW1lbnQoZHJpdmVyLCBwYWdlcyk6CiAgICAgcGFnZXMubG9hZCgiamF2YXNjcmlwdFBh
Z2UuaHRtbCIpCi0gICAgY2xpY2tlciA9IGRyaXZlci5maW5kX2VsZW1lbnRfYnlfaWQoImNsaWNr
RmllbGQiKQorICAgIGNsaWNrZXIgPSBkcml2ZXIuZmluZF9lbGVtZW50KEJ5LklELCAiY2xpY2tG
aWVsZCIpCiAgICAgY2xpY2tlci5jbGljaygpCiAKICAgICBhc3NlcnQgY2xpY2tlci5nZXRfYXR0
cmlidXRlKCJ2YWx1ZSIpID09ICJDbGlja2VkIgogCiAKK0BweXRlc3QubWFyay54ZmFpbF9zYWZh
cmkKIGRlZiB0ZXN0Q2xlYXJpbmdBbkVsZW1lbnRTaG91bGRDYXVzZVRoZU9uQ2hhbmdlSGFuZGxl
clRvRmlyZShkcml2ZXIsIHBhZ2VzKToKICAgICBwYWdlcy5sb2FkKCJqYXZhc2NyaXB0UGFnZS5o
dG1sIikKLSAgICBlbGVtZW50ID0gZHJpdmVyLmZpbmRfZWxlbWVudF9ieV9pZCgiY2xlYXJNZSIp
CisgICAgZWxlbWVudCA9IGRyaXZlci5maW5kX2VsZW1lbnQoQnkuSUQsICJjbGVhck1lIikKICAg
ICBlbGVtZW50LmNsZWFyKCkKLSAgICByZXN1bHQgPSBkcml2ZXIuZmluZF9lbGVtZW50X2J5X2lk
KCJyZXN1bHQiKQorICAgIHJlc3VsdCA9IGRyaXZlci5maW5kX2VsZW1lbnQoQnkuSUQsICJyZXN1
bHQiKQogICAgIGFzc2VydCByZXN1bHQudGV4dCA9PSAiQ2xlYXJlZCIKIAogIyBUT0RPIEN1cnJl
bnRseSBGYWlsaW5nIGFuZCBuZWVkcyBmaXhpbmcKICMgZGVmIHRlc3RTZW5kaW5nS2V5c1RvQW5v
dGhlckVsZW1lbnRTaG91bGRDYXVzZVRoZUJsdXJFdmVudFRvRmlyZShkcml2ZXIsIHBhZ2VzKToK
ICMgICAgcGFnZXMubG9hZCgiamF2YXNjcmlwdFBhZ2UuaHRtbCIpCi0jICAgIGVsZW1lbnQgPSBk
cml2ZXIuZmluZF9lbGVtZW50X2J5X2lkKCJ0aGV3b3JrcyIpCisjICAgIGVsZW1lbnQgPSBkcml2
ZXIuZmluZF9lbGVtZW50KEJ5LklELCAidGhld29ya3MiKQogIyAgICBlbGVtZW50LnNlbmRfa2V5
cygiZm9vIikKLSMgICAgZWxlbWVudDIgPSBkcml2ZXIuZmluZF9lbGVtZW50X2J5X2lkKCJjaGFu
Z2VhYmxlIikKKyMgICAgZWxlbWVudDIgPSBkcml2ZXIuZmluZF9lbGVtZW50KEJ5LklELCAiY2hh
bmdlYWJsZSIpCiAjICAgIGVsZW1lbnQyLnNlbmRfa2V5cygiYmFyIikKICMgICAgX2Fzc2VydEV2
ZW50RmlyZWQoZHJpdmVyLCAiYmx1ciIpCiAKICMgVE9ETyBDdXJyZW50bHkgRmFpbGluZyBhbmQg
bmVlZHMgZml4aW5nCiAjIGRlZiB0ZXN0U2VuZGluZ0tleXNUb0FuRWxlbWVudFNob3VsZENhdXNl
VGhlRm9jdXNFdmVudFRvRmlyZShkcml2ZXIsIHBhZ2VzKToKICMgICAgcGFnZXMubG9hZCgiamF2
YXNjcmlwdFBhZ2UuaHRtbCIpCi0jICAgIGVsZW1lbnQgPSBkcml2ZXIuZmluZF9lbGVtZW50X2J5
X2lkKCJ0aGV3b3JrcyIpCisjICAgIGVsZW1lbnQgPSBkcml2ZXIuZmluZF9lbGVtZW50KEJ5LklE
LCAidGhld29ya3MiKQogIyAgICBlbGVtZW50LnNlbmRfa2V5cygiZm9vIikKICMgICAgX2Fzc2Vy
dEV2ZW50RmlyZWQoZHJpdmVyLCAiZm9jdXMiKQogCiAKIGRlZiBfY2xpY2tPbkVsZW1lbnRXaGlj
aFJlY29yZHNFdmVudHMoZHJpdmVyKToKLSAgICBkcml2ZXIuZmluZF9lbGVtZW50X2J5X2lkKCJw
bGFpbkJ1dHRvbiIpLmNsaWNrKCkKKyAgICBkcml2ZXIuZmluZF9lbGVtZW50KEJ5LklELCAicGxh
aW5CdXR0b24iKS5jbGljaygpCiAKIAogZGVmIF9hc3NlcnRFdmVudEZpcmVkKGRyaXZlciwgZXZl
bnROYW1lKToKLSAgICByZXN1bHQgPSBkcml2ZXIuZmluZF9lbGVtZW50X2J5X2lkKCJyZXN1bHQi
KQorICAgIHJlc3VsdCA9IGRyaXZlci5maW5kX2VsZW1lbnQoQnkuSUQsICJyZXN1bHQiKQogICAg
IHRleHQgPSByZXN1bHQudGV4dAogICAgIGFzc2VydCBldmVudE5hbWUgaW4gdGV4dCwgIk5vICIg
KyBldmVudE5hbWUgKyAiIGZpcmVkOiAiICsgdGV4dApkaWZmIC0tZ2l0IGEvV2ViRHJpdmVyVGVz
dHMvaW1wb3J0ZWQvc2VsZW5pdW0vcHkvdGVzdC9zZWxlbml1bS93ZWJkcml2ZXIvY29tbW9uL2Ry
aXZlcl9lbGVtZW50X2ZpbmRpbmdfdGVzdHMucHkgYi9XZWJEcml2ZXJUZXN0cy9pbXBvcnRlZC9z
ZWxlbml1bS9weS90ZXN0L3NlbGVuaXVtL3dlYmRyaXZlci9jb21tb24vZHJpdmVyX2VsZW1lbnRf
ZmluZGluZ190ZXN0cy5weQppbmRleCA3YjAyODgxZjAxN2YyOWYxM2NmNmY0MTE5MzFmNDIxMDRl
Y2ZlY2Y0Li5kNmU3ODQyODA1NzNlNzJkMTg4N2ZmYjgwNTJjYzg4ZmExNWE2ZjkxIDEwMDY0NAot
LS0gYS9XZWJEcml2ZXJUZXN0cy9pbXBvcnRlZC9zZWxlbml1bS9weS90ZXN0L3NlbGVuaXVtL3dl
YmRyaXZlci9jb21tb24vZHJpdmVyX2VsZW1lbnRfZmluZGluZ190ZXN0cy5weQorKysgYi9XZWJE
cml2ZXJUZXN0cy9pbXBvcnRlZC9zZWxlbml1bS9weS90ZXN0L3NlbGVuaXVtL3dlYmRyaXZlci9j
b21tb24vZHJpdmVyX2VsZW1lbnRfZmluZGluZ190ZXN0cy5weQpAQCAtMjAsOCArMjAsNyBAQCBp
bXBvcnQgcHl0ZXN0CiBmcm9tIHNlbGVuaXVtLndlYmRyaXZlci5jb21tb24uYnkgaW1wb3J0IEJ5
CiBmcm9tIHNlbGVuaXVtLmNvbW1vbi5leGNlcHRpb25zIGltcG9ydCAoCiAgICAgSW52YWxpZFNl
bGVjdG9yRXhjZXB0aW9uLAotICAgIE5vU3VjaEVsZW1lbnRFeGNlcHRpb24sCi0gICAgV2ViRHJp
dmVyRXhjZXB0aW9uKQorICAgIE5vU3VjaEVsZW1lbnRFeGNlcHRpb24pCiAKICMgQnkuaWQgcG9z
aXRpdmUKIApAQCAtMzQwLDcgKzMzOSw2IEBAIGRlZiB0ZXN0X0ZpbmRpbmdfQUxpbmtfQnlfWHBh
dGhfVXNpbmdfQ29udGFpbnNfS2V5d29yZF9TaG91bGRfV29yayhkcml2ZXIsIHBhZ2VzCiBAcHl0
ZXN0Lm1hcmsueGZhaWxfY2hyb21pdW1lZGdlKHJhaXNlcz1JbnZhbGlkU2VsZWN0b3JFeGNlcHRp
b24pCiBAcHl0ZXN0Lm1hcmsueGZhaWxfZmlyZWZveChyYWlzZXM9SW52YWxpZFNlbGVjdG9yRXhj
ZXB0aW9uKQogQHB5dGVzdC5tYXJrLnhmYWlsX3JlbW90ZShyYWlzZXM9SW52YWxpZFNlbGVjdG9y
RXhjZXB0aW9uKQotQHB5dGVzdC5tYXJrLnhmYWlsX21hcmlvbmV0dGUocmFpc2VzPVdlYkRyaXZl
ckV4Y2VwdGlvbikKIEBweXRlc3QubWFyay54ZmFpbF9zYWZhcmkocmFpc2VzPU5vU3VjaEVsZW1l
bnRFeGNlcHRpb24pCiBAcHl0ZXN0Lm1hcmsueGZhaWxfd2Via2l0Z3RrKHJhaXNlcz1JbnZhbGlk
U2VsZWN0b3JFeGNlcHRpb24pCiBkZWYgdGVzdF9TaG91bGRfQmVfQWJsZV9Ub19GaW5kX0VsZW1l
bnRfQnlfWFBhdGhfV2l0aF9OYW1lc3BhY2UoZHJpdmVyLCBwYWdlcyk6CkBAIC01NDMsNiArNTQx
LDcgQEAgZGVmIHRlc3RfTGlua19XaXRoX0Zvcm1hdHRpbmdfVGFncyhkcml2ZXIsIHBhZ2VzKToK
ICAgICBhc3NlcnQgcmVzLnRleHQgPT0gImxpbmsgd2l0aCBmb3JtYXR0aW5nIHRhZ3MiCiAKIAor
QHB5dGVzdC5tYXJrLnhmYWlsX3NhZmFyaQogZGVmIHRlc3RfRHJpdmVyX0Nhbl9HZXRfTGlua19C
eV9MaW5rX1Rlc3RfSWdub3JpbmdfVHJhaWxpbmdfV2hpdGVzcGFjZShkcml2ZXIsIHBhZ2VzKToK
ICAgICBwYWdlcy5sb2FkKCJzaW1wbGVUZXN0Lmh0bWwiKQogICAgIGxpbmsgPSBkcml2ZXIuZmlu
ZF9lbGVtZW50KEJ5LkxJTktfVEVYVCwgImxpbmsgd2l0aCB0cmFpbGluZyBzcGFjZSIpCmRpZmYg
LS1naXQgYS9XZWJEcml2ZXJUZXN0cy9pbXBvcnRlZC9zZWxlbml1bS9weS90ZXN0L3NlbGVuaXVt
L3dlYmRyaXZlci9jb21tb24vZWxlbWVudF9hdHRyaWJ1dGVfdGVzdHMucHkgYi9XZWJEcml2ZXJU
ZXN0cy9pbXBvcnRlZC9zZWxlbml1bS9weS90ZXN0L3NlbGVuaXVtL3dlYmRyaXZlci9jb21tb24v
ZWxlbWVudF9hdHRyaWJ1dGVfdGVzdHMucHkKaW5kZXggMTQ1YzJjOTg0NjA0MmMwN2MwMDFhZTRj
NDJkOWI3OTA5NzdkMmViOS4uZjEzYzVjNjczMzg1Y2Q0ZjQ2YjMxZWM4MDU1ZTliN2MzNWI2ODQ4
MSAxMDA2NDQKLS0tIGEvV2ViRHJpdmVyVGVzdHMvaW1wb3J0ZWQvc2VsZW5pdW0vcHkvdGVzdC9z
ZWxlbml1bS93ZWJkcml2ZXIvY29tbW9uL2VsZW1lbnRfYXR0cmlidXRlX3Rlc3RzLnB5CisrKyBi
L1dlYkRyaXZlclRlc3RzL2ltcG9ydGVkL3NlbGVuaXVtL3B5L3Rlc3Qvc2VsZW5pdW0vd2ViZHJp
dmVyL2NvbW1vbi9lbGVtZW50X2F0dHJpYnV0ZV90ZXN0cy5weQpAQCAtMTgsOTUgKzE4LDk3IEBA
CiBpbXBvcnQgcHl0ZXN0CiAKIGZyb20gc2VsZW5pdW0uY29tbW9uLmV4Y2VwdGlvbnMgaW1wb3J0
IFdlYkRyaXZlckV4Y2VwdGlvbgorZnJvbSBzZWxlbml1bS53ZWJkcml2ZXIuY29tbW9uLmJ5IGlt
cG9ydCBCeQogCiAKIGRlZiB0ZXN0U2hvdWxkUmV0dXJuTnVsbFdoZW5HZXR0aW5nVGhlVmFsdWVP
ZkFuQXR0cmlidXRlVGhhdElzTm90TGlzdGVkKGRyaXZlciwgcGFnZXMpOgogICAgIHBhZ2VzLmxv
YWQoInNpbXBsZVRlc3QuaHRtbCIpCi0gICAgaGVhZCA9IGRyaXZlci5maW5kX2VsZW1lbnRfYnlf
eHBhdGgoIi9odG1sIikKKyAgICBoZWFkID0gZHJpdmVyLmZpbmRfZWxlbWVudChCeS5YUEFUSCwg
Ii9odG1sIikKICAgICBhdHRyaWJ1dGUgPSBoZWFkLmdldF9hdHRyaWJ1dGUoImNoZWVzZSIpCiAg
ICAgYXNzZXJ0IGF0dHJpYnV0ZSBpcyBOb25lCiAKIAogZGVmIHRlc3RTaG91bGRSZXR1cm5OdWxs
V2hlbkdldHRpbmdTcmNBdHRyaWJ1dGVPZkludmFsaWRJbWdUYWcoZHJpdmVyLCBwYWdlcyk6CiAg
ICAgcGFnZXMubG9hZCgic2ltcGxlVGVzdC5odG1sIikKLSAgICBpbWcgPSBkcml2ZXIuZmluZF9l
bGVtZW50X2J5X2lkKCJpbnZhbGlkSW1nVGFnIikKKyAgICBpbWcgPSBkcml2ZXIuZmluZF9lbGVt
ZW50KEJ5LklELCAiaW52YWxpZEltZ1RhZyIpCiAgICAgaW1nX2F0dHIgPSBpbWcuZ2V0X2F0dHJp
YnV0ZSgic3JjIikKICAgICBhc3NlcnQgaW1nX2F0dHIgaXMgTm9uZQogCiAKIGRlZiB0ZXN0U2hv
dWxkUmV0dXJuQW5BYnNvbHV0ZVVybFdoZW5HZXR0aW5nU3JjQXR0cmlidXRlT2ZBVmFsaWRJbWdU
YWcoZHJpdmVyLCBwYWdlcyk6CiAgICAgcGFnZXMubG9hZCgic2ltcGxlVGVzdC5odG1sIikKLSAg
ICBpbWcgPSBkcml2ZXIuZmluZF9lbGVtZW50X2J5X2lkKCJ2YWxpZEltZ1RhZyIpCisgICAgaW1n
ID0gZHJpdmVyLmZpbmRfZWxlbWVudChCeS5JRCwgInZhbGlkSW1nVGFnIikKICAgICBpbWdfYXR0
ciA9IGltZy5nZXRfYXR0cmlidXRlKCJzcmMiKQogICAgIGFzc2VydCAiaWNvbi5naWYiIGluIGlt
Z19hdHRyCiAKIAogZGVmIHRlc3RTaG91bGRSZXR1cm5BbkFic29sdXRlVXJsV2hlbkdldHRpbmdI
cmVmQXR0cmlidXRlT2ZBVmFsaWRBbmNob3JUYWcoZHJpdmVyLCBwYWdlcyk6CiAgICAgcGFnZXMu
bG9hZCgic2ltcGxlVGVzdC5odG1sIikKLSAgICBpbWcgPSBkcml2ZXIuZmluZF9lbGVtZW50X2J5
X2lkKCJ2YWxpZEFuY2hvclRhZyIpCisgICAgaW1nID0gZHJpdmVyLmZpbmRfZWxlbWVudChCeS5J
RCwgInZhbGlkQW5jaG9yVGFnIikKICAgICBpbWdfYXR0ciA9IGltZy5nZXRfYXR0cmlidXRlKCJo
cmVmIikKICAgICBhc3NlcnQgImljb24uZ2lmIiBpbiBpbWdfYXR0cgogCiAKIGRlZiB0ZXN0U2hv
dWxkUmV0dXJuRW1wdHlBdHRyaWJ1dGVWYWx1ZXNXaGVuUHJlc2VudEFuZFRoZVZhbHVlSXNBY3R1
YWxseUVtcHR5KGRyaXZlciwgcGFnZXMpOgogICAgIHBhZ2VzLmxvYWQoInNpbXBsZVRlc3QuaHRt
bCIpCi0gICAgYm9keSA9IGRyaXZlci5maW5kX2VsZW1lbnRfYnlfeHBhdGgoIi8vYm9keSIpCisg
ICAgYm9keSA9IGRyaXZlci5maW5kX2VsZW1lbnQoQnkuWFBBVEgsICIvL2JvZHkiKQogICAgIGFz
c2VydCAiIiA9PSBib2R5LmdldF9hdHRyaWJ1dGUoInN0eWxlIikKIAogCiBkZWYgdGVzdFNob3Vs
ZFJldHVyblRoZVZhbHVlT2ZUaGVEaXNhYmxlZEF0dHJpYnV0ZUFzRmFsc2VJZk5vdFNldChkcml2
ZXIsIHBhZ2VzKToKICAgICBwYWdlcy5sb2FkKCJmb3JtUGFnZS5odG1sIikKLSAgICBpbnB1dEVs
ZW1lbnQgPSBkcml2ZXIuZmluZF9lbGVtZW50X2J5X3hwYXRoKCIvL2lucHV0W0BpZD0nd29ya2lu
ZyddIikKKyAgICBpbnB1dEVsZW1lbnQgPSBkcml2ZXIuZmluZF9lbGVtZW50KEJ5LlhQQVRILCAi
Ly9pbnB1dFtAaWQ9J3dvcmtpbmcnXSIpCiAgICAgYXNzZXJ0IGlucHV0RWxlbWVudC5nZXRfYXR0
cmlidXRlKCJkaXNhYmxlZCIpIGlzIE5vbmUKICAgICBhc3NlcnQgaW5wdXRFbGVtZW50LmlzX2Vu
YWJsZWQoKQogCi0gICAgcEVsZW1lbnQgPSBkcml2ZXIuZmluZF9lbGVtZW50X2J5X2lkKCJwZWFz
IikKKyAgICBwRWxlbWVudCA9IGRyaXZlci5maW5kX2VsZW1lbnQoQnkuSUQsICJwZWFzIikKICAg
ICBhc3NlcnQgcEVsZW1lbnQuZ2V0X2F0dHJpYnV0ZSgiZGlzYWJsZWQiKSBpcyBOb25lCiAgICAg
YXNzZXJ0IHBFbGVtZW50LmlzX2VuYWJsZWQoKQogCiAKIGRlZiB0ZXN0U2hvdWxkUmV0dXJuVGhl
VmFsdWVPZlRoZUluZGV4QXR0cmlidXRlRXZlbklmSXRJc01pc3NpbmcoZHJpdmVyLCBwYWdlcyk6
CiAgICAgcGFnZXMubG9hZCgiZm9ybVBhZ2UuaHRtbCIpCi0gICAgbXVsdGlTZWxlY3QgPSBkcml2
ZXIuZmluZF9lbGVtZW50X2J5X2lkKCJtdWx0aSIpCi0gICAgb3B0aW9ucyA9IG11bHRpU2VsZWN0
LmZpbmRfZWxlbWVudHNfYnlfdGFnX25hbWUoIm9wdGlvbiIpCisgICAgbXVsdGlTZWxlY3QgPSBk
cml2ZXIuZmluZF9lbGVtZW50KEJ5LklELCAibXVsdGkiKQorICAgIG9wdGlvbnMgPSBtdWx0aVNl
bGVjdC5maW5kX2VsZW1lbnRzKEJ5LlRBR19OQU1FLCAib3B0aW9uIikKICAgICBhc3NlcnQgIjEi
ID09IG9wdGlvbnNbMV0uZ2V0X2F0dHJpYnV0ZSgiaW5kZXgiKQogCiAKIGRlZiB0ZXN0U2hvdWxk
SW5kaWNhdGVUaGVFbGVtZW50c1RoYXRBcmVEaXNhYmxlZEFyZU5vdElzX2VuYWJsZWQoZHJpdmVy
LCBwYWdlcyk6CiAgICAgcGFnZXMubG9hZCgiZm9ybVBhZ2UuaHRtbCIpCi0gICAgaW5wdXRFbGVt
ZW50ID0gZHJpdmVyLmZpbmRfZWxlbWVudF9ieV94cGF0aCgiLy9pbnB1dFtAaWQ9J25vdFdvcmtp
bmcnXSIpCisgICAgaW5wdXRFbGVtZW50ID0gZHJpdmVyLmZpbmRfZWxlbWVudChCeS5YUEFUSCwg
Ii8vaW5wdXRbQGlkPSdub3RXb3JraW5nJ10iKQogICAgIGFzc2VydCBub3QgaW5wdXRFbGVtZW50
LmlzX2VuYWJsZWQoKQogCi0gICAgaW5wdXRFbGVtZW50ID0gZHJpdmVyLmZpbmRfZWxlbWVudF9i
eV94cGF0aCgiLy9pbnB1dFtAaWQ9J3dvcmtpbmcnXSIpCisgICAgaW5wdXRFbGVtZW50ID0gZHJp
dmVyLmZpbmRfZWxlbWVudChCeS5YUEFUSCwgIi8vaW5wdXRbQGlkPSd3b3JraW5nJ10iKQogICAg
IGFzc2VydCBpbnB1dEVsZW1lbnQuaXNfZW5hYmxlZCgpCiAKIAogZGVmIHRlc3RFbGVtZW50c1No
b3VsZEJlRGlzYWJsZWRJZlRoZXlBcmVEaXNhYmxlZFVzaW5nUmFuZG9tRGlzYWJsZWRTdHJpbmdz
KGRyaXZlciwgcGFnZXMpOgogICAgIHBhZ2VzLmxvYWQoImZvcm1QYWdlLmh0bWwiKQotICAgIGRp
c2FibGVkVGV4dEVsZW1lbnQxID0gZHJpdmVyLmZpbmRfZWxlbWVudF9ieV9pZCgiZGlzYWJsZWRU
ZXh0RWxlbWVudDEiKQorICAgIGRpc2FibGVkVGV4dEVsZW1lbnQxID0gZHJpdmVyLmZpbmRfZWxl
bWVudChCeS5JRCwgImRpc2FibGVkVGV4dEVsZW1lbnQxIikKICAgICBhc3NlcnQgbm90IGRpc2Fi
bGVkVGV4dEVsZW1lbnQxLmlzX2VuYWJsZWQoKQogCi0gICAgZGlzYWJsZWRUZXh0RWxlbWVudDIg
PSBkcml2ZXIuZmluZF9lbGVtZW50X2J5X2lkKCJkaXNhYmxlZFRleHRFbGVtZW50MiIpCisgICAg
ZGlzYWJsZWRUZXh0RWxlbWVudDIgPSBkcml2ZXIuZmluZF9lbGVtZW50KEJ5LklELCAiZGlzYWJs
ZWRUZXh0RWxlbWVudDIiKQogICAgIGFzc2VydCBub3QgZGlzYWJsZWRUZXh0RWxlbWVudDIuaXNf
ZW5hYmxlZCgpCiAKLSAgICBkaXNhYmxlZFN1Ym1pdEVsZW1lbnQgPSBkcml2ZXIuZmluZF9lbGVt
ZW50X2J5X2lkKCJkaXNhYmxlZFN1Ym1pdEVsZW1lbnQiKQorICAgIGRpc2FibGVkU3VibWl0RWxl
bWVudCA9IGRyaXZlci5maW5kX2VsZW1lbnQoQnkuSUQsICJkaXNhYmxlZFN1Ym1pdEVsZW1lbnQi
KQogICAgIGFzc2VydCBub3QgZGlzYWJsZWRTdWJtaXRFbGVtZW50LmlzX2VuYWJsZWQoKQogCiAK
IGRlZiB0ZXN0U2hvdWxkSW5kaWNhdGVXaGVuQVRleHRBcmVhSXNEaXNhYmxlZChkcml2ZXIsIHBh
Z2VzKToKICAgICBwYWdlcy5sb2FkKCJmb3JtUGFnZS5odG1sIikKLSAgICB0ZXh0QXJlYSA9IGRy
aXZlci5maW5kX2VsZW1lbnRfYnlfeHBhdGgoIi8vdGV4dGFyZWFbQGlkPSdub3RXb3JraW5nQXJl
YSddIikKKyAgICB0ZXh0QXJlYSA9IGRyaXZlci5maW5kX2VsZW1lbnQoQnkuWFBBVEgsICIvL3Rl
eHRhcmVhW0BpZD0nbm90V29ya2luZ0FyZWEnXSIpCiAgICAgYXNzZXJ0IG5vdCB0ZXh0QXJlYS5p
c19lbmFibGVkKCkKIAogCitAcHl0ZXN0Lm1hcmsueGZhaWxfc2FmYXJpCiBkZWYgdGVzdFNob3Vs
ZFRocm93RXhjZXB0aW9uSWZTZW5kaW5nS2V5c1RvRWxlbWVudERpc2FibGVkVXNpbmdSYW5kb21E
aXNhYmxlZFN0cmluZ3MoZHJpdmVyLCBwYWdlcyk6CiAgICAgcGFnZXMubG9hZCgiZm9ybVBhZ2Uu
aHRtbCIpCi0gICAgZGlzYWJsZWRUZXh0RWxlbWVudDEgPSBkcml2ZXIuZmluZF9lbGVtZW50X2J5
X2lkKCJkaXNhYmxlZFRleHRFbGVtZW50MSIpCisgICAgZGlzYWJsZWRUZXh0RWxlbWVudDEgPSBk
cml2ZXIuZmluZF9lbGVtZW50KEJ5LklELCAiZGlzYWJsZWRUZXh0RWxlbWVudDEiKQogICAgIHdp
dGggcHl0ZXN0LnJhaXNlcyhXZWJEcml2ZXJFeGNlcHRpb24pOgogICAgICAgICBkaXNhYmxlZFRl
eHRFbGVtZW50MS5zZW5kX2tleXMoImZvbyIpCiAgICAgYXNzZXJ0ICIiID09IGRpc2FibGVkVGV4
dEVsZW1lbnQxLnRleHQKIAotICAgIGRpc2FibGVkVGV4dEVsZW1lbnQyID0gZHJpdmVyLmZpbmRf
ZWxlbWVudF9ieV9pZCgiZGlzYWJsZWRUZXh0RWxlbWVudDIiKQorICAgIGRpc2FibGVkVGV4dEVs
ZW1lbnQyID0gZHJpdmVyLmZpbmRfZWxlbWVudChCeS5JRCwgImRpc2FibGVkVGV4dEVsZW1lbnQy
IikKICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoV2ViRHJpdmVyRXhjZXB0aW9uKToKICAgICAgICAg
ZGlzYWJsZWRUZXh0RWxlbWVudDIuc2VuZF9rZXlzKCJiYXIiKQogICAgIGFzc2VydCAiIiA9PSBk
aXNhYmxlZFRleHRFbGVtZW50Mi50ZXh0CkBAIC0xMTQsOCArMTE2LDggQEAgZGVmIHRlc3RTaG91
bGRUaHJvd0V4Y2VwdGlvbklmU2VuZGluZ0tleXNUb0VsZW1lbnREaXNhYmxlZFVzaW5nUmFuZG9t
RGlzYWJsZWRTdHIKIAogZGVmIHRlc3RTaG91bGRJbmRpY2F0ZVdoZW5BU2VsZWN0SXNEaXNhYmxl
ZChkcml2ZXIsIHBhZ2VzKToKICAgICBwYWdlcy5sb2FkKCJmb3JtUGFnZS5odG1sIikKLSAgICBl
bmFibGVkID0gZHJpdmVyLmZpbmRfZWxlbWVudF9ieV9uYW1lKCJzZWxlY3RvbWF0aWMiKQotICAg
IGRpc2FibGVkID0gZHJpdmVyLmZpbmRfZWxlbWVudF9ieV9uYW1lKCJuby1zZWxlY3QiKQorICAg
IGVuYWJsZWQgPSBkcml2ZXIuZmluZF9lbGVtZW50KEJ5Lk5BTUUsICJzZWxlY3RvbWF0aWMiKQor
ICAgIGRpc2FibGVkID0gZHJpdmVyLmZpbmRfZWxlbWVudChCeS5OQU1FLCAibm8tc2VsZWN0IikK
IAogICAgIGFzc2VydCBlbmFibGVkLmlzX2VuYWJsZWQoKQogICAgIGFzc2VydCBub3QgZGlzYWJs
ZWQuaXNfZW5hYmxlZCgpCkBAIC0xMjMsNyArMTI1LDcgQEAgZGVmIHRlc3RTaG91bGRJbmRpY2F0
ZVdoZW5BU2VsZWN0SXNEaXNhYmxlZChkcml2ZXIsIHBhZ2VzKToKIAogZGVmIHRlc3RTaG91bGRS
ZXR1cm5UaGVWYWx1ZU9mQ2hlY2tlZEZvckFDaGVja2JveEV2ZW5JZkl0TGFja3NUaGF0QXR0cmli
dXRlKGRyaXZlciwgcGFnZXMpOgogICAgIHBhZ2VzLmxvYWQoImZvcm1QYWdlLmh0bWwiKQotICAg
IGNoZWNrYm94ID0gZHJpdmVyLmZpbmRfZWxlbWVudF9ieV94cGF0aCgiLy9pbnB1dFtAaWQ9J2No
ZWNreSddIikKKyAgICBjaGVja2JveCA9IGRyaXZlci5maW5kX2VsZW1lbnQoQnkuWFBBVEgsICIv
L2lucHV0W0BpZD0nY2hlY2t5J10iKQogICAgIGFzc2VydCBjaGVja2JveC5nZXRfYXR0cmlidXRl
KCJjaGVja2VkIikgaXMgTm9uZQogICAgIGNoZWNrYm94LmNsaWNrKCkKICAgICBhc3NlcnQgInRy
dWUiID09IGNoZWNrYm94LmdldF9hdHRyaWJ1dGUoImNoZWNrZWQiKQpAQCAtMTMxLDkgKzEzMyw5
IEBAIGRlZiB0ZXN0U2hvdWxkUmV0dXJuVGhlVmFsdWVPZkNoZWNrZWRGb3JBQ2hlY2tib3hFdmVu
SWZJdExhY2tzVGhhdEF0dHJpYnV0ZShkcml2CiAKIGRlZiB0ZXN0U2hvdWxkUmV0dXJuVGhlVmFs
dWVPZlNlbGVjdGVkRm9yUmFkaW9CdXR0b25zRXZlbklmVGhleUxhY2tUaGF0QXR0cmlidXRlKGRy
aXZlciwgcGFnZXMpOgogICAgIHBhZ2VzLmxvYWQoImZvcm1QYWdlLmh0bWwiKQotICAgIG5ldmVy
U2VsZWN0ZWQgPSBkcml2ZXIuZmluZF9lbGVtZW50X2J5X2lkKCJjaGVlc2UiKQotICAgIGluaXRp
YWxseU5vdFNlbGVjdGVkID0gZHJpdmVyLmZpbmRfZWxlbWVudF9ieV9pZCgicGVhcyIpCi0gICAg
aW5pdGlhbGx5U2VsZWN0ZWQgPSBkcml2ZXIuZmluZF9lbGVtZW50X2J5X2lkKCJjaGVlc2VfYW5k
X3BlYXMiKQorICAgIG5ldmVyU2VsZWN0ZWQgPSBkcml2ZXIuZmluZF9lbGVtZW50KEJ5LklELCAi
Y2hlZXNlIikKKyAgICBpbml0aWFsbHlOb3RTZWxlY3RlZCA9IGRyaXZlci5maW5kX2VsZW1lbnQo
QnkuSUQsICJwZWFzIikKKyAgICBpbml0aWFsbHlTZWxlY3RlZCA9IGRyaXZlci5maW5kX2VsZW1l
bnQoQnkuSUQsICJjaGVlc2VfYW5kX3BlYXMiKQogCiAgICAgYXNzZXJ0IG5ldmVyU2VsZWN0ZWQu
Z2V0X2F0dHJpYnV0ZSgiY2hlY2tlZCIpIGlzIE5vbmUKICAgICBhc3NlcnQgaW5pdGlhbGx5Tm90
U2VsZWN0ZWQuZ2V0X2F0dHJpYnV0ZSgiY2hlY2tlZCIpIGlzIE5vbmUKQEAgLTE0Nyw4ICsxNDks
OCBAQCBkZWYgdGVzdFNob3VsZFJldHVyblRoZVZhbHVlT2ZTZWxlY3RlZEZvclJhZGlvQnV0dG9u
c0V2ZW5JZlRoZXlMYWNrVGhhdEF0dHJpYnV0ZQogCiBkZWYgdGVzdFNob3VsZFJldHVyblRoZVZh
bHVlT2ZTZWxlY3RlZEZvck9wdGlvbnNJblNlbGVjdHNFdmVuSWZUaGV5TGFja1RoYXRBdHRyaWJ1
dGUoZHJpdmVyLCBwYWdlcyk6CiAgICAgcGFnZXMubG9hZCgiZm9ybVBhZ2UuaHRtbCIpCi0gICAg
c2VsZWN0Qm94ID0gZHJpdmVyLmZpbmRfZWxlbWVudF9ieV94cGF0aCgiLy9zZWxlY3RbQG5hbWU9
J3NlbGVjdG9tYXRpYyddIikKLSAgICBvcHRpb25zID0gc2VsZWN0Qm94LmZpbmRfZWxlbWVudHNf
YnlfdGFnX25hbWUoIm9wdGlvbiIpCisgICAgc2VsZWN0Qm94ID0gZHJpdmVyLmZpbmRfZWxlbWVu
dChCeS5YUEFUSCwgIi8vc2VsZWN0W0BuYW1lPSdzZWxlY3RvbWF0aWMnXSIpCisgICAgb3B0aW9u
cyA9IHNlbGVjdEJveC5maW5kX2VsZW1lbnRzKEJ5LlRBR19OQU1FLCAib3B0aW9uIikKICAgICBv
bmUgPSBvcHRpb25zWzBdCiAgICAgdHdvID0gb3B0aW9uc1sxXQogICAgIGFzc2VydCBvbmUuaXNf
c2VsZWN0ZWQoKQpAQCAtMTU5LDcgKzE2MSw3IEBAIGRlZiB0ZXN0U2hvdWxkUmV0dXJuVGhlVmFs
dWVPZlNlbGVjdGVkRm9yT3B0aW9uc0luU2VsZWN0c0V2ZW5JZlRoZXlMYWNrVGhhdEF0dHJpCiAK
IGRlZiB0ZXN0U2hvdWxkUmV0dXJuVmFsdWVPZkNsYXNzQXR0cmlidXRlT2ZBbkVsZW1lbnQoZHJp
dmVyLCBwYWdlcyk6CiAgICAgcGFnZXMubG9hZCgieGh0bWxUZXN0Lmh0bWwiKQotICAgIGhlYWRp
bmcgPSBkcml2ZXIuZmluZF9lbGVtZW50X2J5X3hwYXRoKCIvL2gxIikKKyAgICBoZWFkaW5nID0g
ZHJpdmVyLmZpbmRfZWxlbWVudChCeS5YUEFUSCwgIi8vaDEiKQogICAgIGNsYXNzbmFtZSA9IGhl
YWRpbmcuZ2V0X2F0dHJpYnV0ZSgiY2xhc3MiKQogICAgIGFzc2VydCAiaGVhZGVyIiA9PSBjbGFz
c25hbWUKIApAQCAtMTY4LDIwICsxNzAsMjAgQEAgZGVmIHRlc3RTaG91bGRSZXR1cm5WYWx1ZU9m
Q2xhc3NBdHRyaWJ1dGVPZkFuRWxlbWVudChkcml2ZXIsIHBhZ2VzKToKICMgICAgcGFnZXMubG9h
ZCgiaWZyYW1lcy5odG1sIikKICMgICAgZHJpdmVyLnN3aXRjaF90by5mcmFtZSgiaWZyYW1lMSIp
CiAjCi0jICAgIHdhbGxhY2UgPSBkcml2ZXIuZmluZF9lbGVtZW50X2J5X3hwYXRoKCIvL2RpdltA
aWQ9J3dhbGxhY2UnXSIpCisjICAgIHdhbGxhY2UgPSBkcml2ZXIuZmluZF9lbGVtZW50KEJ5LlhQ
QVRILCAiLy9kaXZbQGlkPSd3YWxsYWNlJ10iKQogIyAgICBjbGFzc25hbWUgPSB3YWxsYWNlLmdl
dF9hdHRyaWJ1dGUoImNsYXNzIikKICMgICAgYXNzZXJ0ICJncm9taXQiID09IGNsYXNzbmFtZQog
CiAKIGRlZiB0ZXN0U2hvdWxkUmV0dXJuVGhlQ29udGVudHNPZkFUZXh0QXJlYUFzSXRzVmFsdWUo
ZHJpdmVyLCBwYWdlcyk6CiAgICAgcGFnZXMubG9hZCgiZm9ybVBhZ2UuaHRtbCIpCi0gICAgdmFs
dWUgPSBkcml2ZXIuZmluZF9lbGVtZW50X2J5X2lkKCJ3aXRoVGV4dCIpLmdldF9hdHRyaWJ1dGUo
InZhbHVlIikKKyAgICB2YWx1ZSA9IGRyaXZlci5maW5kX2VsZW1lbnQoQnkuSUQsICJ3aXRoVGV4
dCIpLmdldF9hdHRyaWJ1dGUoInZhbHVlIikKICAgICBhc3NlcnQgIkV4YW1wbGUgdGV4dCIgPT0g
dmFsdWUKIAogCiBkZWYgdGVzdFNob3VsZFJldHVyblRoZUNvbnRlbnRzT2ZBVGV4dEFyZWFBc0l0
c1ZhbHVlV2hlblNldFRvTm9uTm9ybWluYWxUcnVlKGRyaXZlciwgcGFnZXMpOgogICAgIHBhZ2Vz
LmxvYWQoImZvcm1QYWdlLmh0bWwiKQotICAgIGUgPSBkcml2ZXIuZmluZF9lbGVtZW50X2J5X2lk
KCJ3aXRoVGV4dCIpCisgICAgZSA9IGRyaXZlci5maW5kX2VsZW1lbnQoQnkuSUQsICJ3aXRoVGV4
dCIpCiAgICAgZHJpdmVyLmV4ZWN1dGVfc2NyaXB0KCJhcmd1bWVudHNbMF0udmFsdWUgPSAndFJ1
RSciLCBlKQogICAgIHZhbHVlID0gZS5nZXRfYXR0cmlidXRlKCJ2YWx1ZSIpCiAgICAgYXNzZXJ0
ICJ0UnVFIiA9PSB2YWx1ZQpAQCAtMTg5LDEwICsxOTEsMTAgQEAgZGVmIHRlc3RTaG91bGRSZXR1
cm5UaGVDb250ZW50c09mQVRleHRBcmVhQXNJdHNWYWx1ZVdoZW5TZXRUb05vbk5vcm1pbmFsVHJ1
ZShkcmkKIAogZGVmIHRlc3RTaG91bGRUcmVhdFJlYWRvbmx5QXNBVmFsdWUoZHJpdmVyLCBwYWdl
cyk6CiAgICAgcGFnZXMubG9hZCgiZm9ybVBhZ2UuaHRtbCIpCi0gICAgZWxlbWVudCA9IGRyaXZl
ci5maW5kX2VsZW1lbnRfYnlfbmFtZSgicmVhZG9ubHkiKQorICAgIGVsZW1lbnQgPSBkcml2ZXIu
ZmluZF9lbGVtZW50KEJ5Lk5BTUUsICJyZWFkb25seSIpCiAgICAgcmVhZE9ubHlBdHRyaWJ1dGUg
PSBlbGVtZW50LmdldF9hdHRyaWJ1dGUoInJlYWRvbmx5IikKIAotICAgIHRleHRJbnB1dCA9IGRy
aXZlci5maW5kX2VsZW1lbnRfYnlfbmFtZSgieCIpCisgICAgdGV4dElucHV0ID0gZHJpdmVyLmZp
bmRfZWxlbWVudChCeS5OQU1FLCAieCIpCiAgICAgbm90UmVhZE9ubHkgPSB0ZXh0SW5wdXQuZ2V0
X2F0dHJpYnV0ZSgicmVhZG9ubHkiKQogCiAgICAgYXNzZXJ0IHJlYWRPbmx5QXR0cmlidXRlICE9
IG5vdFJlYWRPbmx5CkBAIC0yMDAsMjEgKzIwMiwyMSBAQCBkZWYgdGVzdFNob3VsZFRyZWF0UmVh
ZG9ubHlBc0FWYWx1ZShkcml2ZXIsIHBhZ2VzKToKIAogZGVmIHRlc3RTaG91bGRHZXROdW1lcmlj
QXRyaWJ1dGUoZHJpdmVyLCBwYWdlcyk6CiAgICAgcGFnZXMubG9hZCgiZm9ybVBhZ2UuaHRtbCIp
Ci0gICAgZWxlbWVudCA9IGRyaXZlci5maW5kX2VsZW1lbnRfYnlfaWQoIndpdGhUZXh0IikKKyAg
ICBlbGVtZW50ID0gZHJpdmVyLmZpbmRfZWxlbWVudChCeS5JRCwgIndpdGhUZXh0IikKICAgICBh
c3NlcnQgIjUiID09IGVsZW1lbnQuZ2V0X2F0dHJpYnV0ZSgicm93cyIpCiAKIAogZGVmIHRlc3RD
YW5SZXR1cm5BVGV4dEFwcHJveGltYXRpb25PZlRoZVN0eWxlQXR0cmlidXRlKGRyaXZlciwgcGFn
ZXMpOgogICAgIHBhZ2VzLmxvYWQoImphdmFzY3JpcHRQYWdlLmh0bWwiKQotICAgIHN0eWxlID0g
ZHJpdmVyLmZpbmRfZWxlbWVudF9ieV9pZCgicmVkLWl0ZW0iKS5nZXRfYXR0cmlidXRlKCJzdHls
ZSIpCisgICAgc3R5bGUgPSBkcml2ZXIuZmluZF9lbGVtZW50KEJ5LklELCAicmVkLWl0ZW0iKS5n
ZXRfYXR0cmlidXRlKCJzdHlsZSIpCiAgICAgYXNzZXJ0ICJiYWNrZ3JvdW5kLWNvbG9yIiBpbiBz
dHlsZS5sb3dlcigpCiAKIAogZGVmIHRlc3RTaG91bGRDb3JyZWN0bHlSZXBvcnRWYWx1ZU9mQ29s
c3Bhbihkcml2ZXIsIHBhZ2VzKToKICAgICBwYWdlcy5sb2FkKCJ0YWJsZXMuaHRtbCIpCiAKLSAg
ICB0aDEgPSBkcml2ZXIuZmluZF9lbGVtZW50X2J5X2lkKCJ0aDEiKQotICAgIHRkMiA9IGRyaXZl
ci5maW5kX2VsZW1lbnRfYnlfaWQoInRkMiIpCisgICAgdGgxID0gZHJpdmVyLmZpbmRfZWxlbWVu
dChCeS5JRCwgInRoMSIpCisgICAgdGQyID0gZHJpdmVyLmZpbmRfZWxlbWVudChCeS5JRCwgInRk
MiIpCiAKICAgICBhc3NlcnQgInRoMSIgPT0gdGgxLmdldF9hdHRyaWJ1dGUoImlkIikKICAgICBh
c3NlcnQgIjMiID09IHRoMS5nZXRfYXR0cmlidXRlKCJjb2xzcGFuIikKQEAgLTIyNSw3ICsyMjcs
NyBAQCBkZWYgdGVzdFNob3VsZENvcnJlY3RseVJlcG9ydFZhbHVlT2ZDb2xzcGFuKGRyaXZlciwg
cGFnZXMpOgogCiBkZWYgdGVzdENhblJldHJpZXZlVGhlQ3VycmVudFZhbHVlT2ZBVGV4dEZvcm1G
aWVsZF90ZXh0SW5wdXQoZHJpdmVyLCBwYWdlcyk6CiAgICAgcGFnZXMubG9hZCgiZm9ybVBhZ2Uu
aHRtbCIpCi0gICAgZWxlbWVudCA9IGRyaXZlci5maW5kX2VsZW1lbnRfYnlfaWQoIndvcmtpbmci
KQorICAgIGVsZW1lbnQgPSBkcml2ZXIuZmluZF9lbGVtZW50KEJ5LklELCAid29ya2luZyIpCiAg
ICAgYXNzZXJ0ICIiID09IGVsZW1lbnQuZ2V0X2F0dHJpYnV0ZSgidmFsdWUiKQogICAgIGVsZW1l
bnQuc2VuZF9rZXlzKCJoZWxsbyB3b3JsZCIpCiAgICAgYXNzZXJ0ICJoZWxsbyB3b3JsZCIgPT0g
ZWxlbWVudC5nZXRfYXR0cmlidXRlKCJ2YWx1ZSIpCkBAIC0yMzMsNyArMjM1LDcgQEAgZGVmIHRl
c3RDYW5SZXRyaWV2ZVRoZUN1cnJlbnRWYWx1ZU9mQVRleHRGb3JtRmllbGRfdGV4dElucHV0KGRy
aXZlciwgcGFnZXMpOgogCiBkZWYgdGVzdENhblJldHJpZXZlVGhlQ3VycmVudFZhbHVlT2ZBVGV4
dEZvcm1GaWVsZF9lbWFpbElucHV0KGRyaXZlciwgcGFnZXMpOgogICAgIHBhZ2VzLmxvYWQoImZv
cm1QYWdlLmh0bWwiKQotICAgIGVsZW1lbnQgPSBkcml2ZXIuZmluZF9lbGVtZW50X2J5X2lkKCJl
bWFpbCIpCisgICAgZWxlbWVudCA9IGRyaXZlci5maW5kX2VsZW1lbnQoQnkuSUQsICJlbWFpbCIp
CiAgICAgYXNzZXJ0ICIiID09IGVsZW1lbnQuZ2V0X2F0dHJpYnV0ZSgidmFsdWUiKQogICAgIGVs
ZW1lbnQuc2VuZF9rZXlzKCJoZWxsb0BleGFtcGxlLmNvbSIpCiAgICAgYXNzZXJ0ICJoZWxsb0Bl
eGFtcGxlLmNvbSIgPT0gZWxlbWVudC5nZXRfYXR0cmlidXRlKCJ2YWx1ZSIpCkBAIC0yNDEsNyAr
MjQzLDcgQEAgZGVmIHRlc3RDYW5SZXRyaWV2ZVRoZUN1cnJlbnRWYWx1ZU9mQVRleHRGb3JtRmll
bGRfZW1haWxJbnB1dChkcml2ZXIsIHBhZ2VzKToKIAogZGVmIHRlc3RDYW5SZXRyaWV2ZVRoZUN1
cnJlbnRWYWx1ZU9mQVRleHRGb3JtRmllbGRfdGV4dEFyZWEoZHJpdmVyLCBwYWdlcyk6CiAgICAg
cGFnZXMubG9hZCgiZm9ybVBhZ2UuaHRtbCIpCi0gICAgZWxlbWVudCA9IGRyaXZlci5maW5kX2Vs
ZW1lbnRfYnlfaWQoImVtcHR5VGV4dEFyZWEiKQorICAgIGVsZW1lbnQgPSBkcml2ZXIuZmluZF9l
bGVtZW50KEJ5LklELCAiZW1wdHlUZXh0QXJlYSIpCiAgICAgYXNzZXJ0ICIiID09IGVsZW1lbnQu
Z2V0X2F0dHJpYnV0ZSgidmFsdWUiKQogICAgIGVsZW1lbnQuc2VuZF9rZXlzKCJoZWxsbyB3b3Js
ZCIpCiAgICAgYXNzZXJ0ICJoZWxsbyB3b3JsZCIgPT0gZWxlbWVudC5nZXRfYXR0cmlidXRlKCJ2
YWx1ZSIpCkBAIC0yNDksMjQgKzI1MSwyNCBAQCBkZWYgdGVzdENhblJldHJpZXZlVGhlQ3VycmVu
dFZhbHVlT2ZBVGV4dEZvcm1GaWVsZF90ZXh0QXJlYShkcml2ZXIsIHBhZ2VzKToKIAogZGVmIHRl
c3RTaG91bGRSZXR1cm5OdWxsRm9yTm9uUHJlc2VudEJvb2xlYW5BdHRyaWJ1dGVzKGRyaXZlciwg
cGFnZXMpOgogICAgIHBhZ2VzLmxvYWQoImJvb2xlYW5BdHRyaWJ1dGVzLmh0bWwiKQotICAgIGVs
ZW1lbnQxID0gZHJpdmVyLmZpbmRfZWxlbWVudF9ieV9pZCgid29ya2luZyIpCisgICAgZWxlbWVu
dDEgPSBkcml2ZXIuZmluZF9lbGVtZW50KEJ5LklELCAid29ya2luZyIpCiAgICAgYXNzZXJ0IGVs
ZW1lbnQxLmdldF9hdHRyaWJ1dGUoInJlcXVpcmVkIikgaXMgTm9uZQogCiAKIEBweXRlc3QubWFy
ay54ZmFpbF9pZQogZGVmIHRlc3RTaG91bGRSZXR1cm5UcnVlRm9yUHJlc2VudEJvb2xlYW5BdHRy
aWJ1dGVzKGRyaXZlciwgcGFnZXMpOgogICAgIHBhZ2VzLmxvYWQoImJvb2xlYW5BdHRyaWJ1dGVz
Lmh0bWwiKQotICAgIGVsZW1lbnQxID0gZHJpdmVyLmZpbmRfZWxlbWVudF9ieV9pZCgiZW1haWxS
ZXF1aXJlZCIpCisgICAgZWxlbWVudDEgPSBkcml2ZXIuZmluZF9lbGVtZW50KEJ5LklELCAiZW1h
aWxSZXF1aXJlZCIpCiAgICAgYXNzZXJ0ICJ0cnVlIiA9PSBlbGVtZW50MS5nZXRfYXR0cmlidXRl
KCJyZXF1aXJlZCIpCi0gICAgZWxlbWVudDIgPSBkcml2ZXIuZmluZF9lbGVtZW50X2J5X2lkKCJl
bXB0eVRleHRBcmVhUmVxdWlyZWQiKQorICAgIGVsZW1lbnQyID0gZHJpdmVyLmZpbmRfZWxlbWVu
dChCeS5JRCwgImVtcHR5VGV4dEFyZWFSZXF1aXJlZCIpCiAgICAgYXNzZXJ0ICJ0cnVlIiA9PSBl
bGVtZW50Mi5nZXRfYXR0cmlidXRlKCJyZXF1aXJlZCIpCi0gICAgZWxlbWVudDMgPSBkcml2ZXIu
ZmluZF9lbGVtZW50X2J5X2lkKCJpbnB1dFJlcXVpcmVkIikKKyAgICBlbGVtZW50MyA9IGRyaXZl
ci5maW5kX2VsZW1lbnQoQnkuSUQsICJpbnB1dFJlcXVpcmVkIikKICAgICBhc3NlcnQgInRydWUi
ID09IGVsZW1lbnQzLmdldF9hdHRyaWJ1dGUoInJlcXVpcmVkIikKLSAgICBlbGVtZW50NCA9IGRy
aXZlci5maW5kX2VsZW1lbnRfYnlfaWQoInRleHRBcmVhUmVxdWlyZWQiKQorICAgIGVsZW1lbnQ0
ID0gZHJpdmVyLmZpbmRfZWxlbWVudChCeS5JRCwgInRleHRBcmVhUmVxdWlyZWQiKQogICAgIGFz
c2VydCAidHJ1ZSIgPT0gZWxlbWVudDQuZ2V0X2F0dHJpYnV0ZSgicmVxdWlyZWQiKQogCiAKIGRl
ZiB0ZXNTaG91bGRHZXRVbmljb2RlQ2hhcnNGcm9tQXR0cmlidXRlKGRyaXZlciwgcGFnZXMpOgog
ICAgIHBhZ2VzLmxvYWQoImZvcm1QYWdlLmh0bWwiKQotICAgIHRpdGxlID0gZHJpdmVyLmZpbmRf
ZWxlbWVudF9ieV9pZCgidnNlYXJjaEdhZGdldCIpLmdldF9hdHRyaWJ1dGUoInRpdGxlIikKKyAg
ICB0aXRsZSA9IGRyaXZlci5maW5kX2VsZW1lbnQoQnkuSUQsICJ2c2VhcmNoR2FkZ2V0IikuZ2V0
X2F0dHJpYnV0ZSgidGl0bGUiKQogICAgIGFzc2VydCAnSHZhZCBzXHhmOGdlciBkdT8nID09IHRp
dGxlCmRpZmYgLS1naXQgYS9XZWJEcml2ZXJUZXN0cy9pbXBvcnRlZC9zZWxlbml1bS9weS90ZXN0
L3NlbGVuaXVtL3dlYmRyaXZlci9jb21tb24vZXhlY3V0aW5nX2FzeW5jX2phdmFzY3JpcHRfdGVz
dHMucHkgYi9XZWJEcml2ZXJUZXN0cy9pbXBvcnRlZC9zZWxlbml1bS9weS90ZXN0L3NlbGVuaXVt
L3dlYmRyaXZlci9jb21tb24vZXhlY3V0aW5nX2FzeW5jX2phdmFzY3JpcHRfdGVzdHMucHkKaW5k
ZXggNjFkMmUxZjVlMWFiODI5NGQ4Njc2YzQ3MTRjNDYyY2UzMWUxMjI2Yi4uNDZmYjI3MGUzMGQ4
YTA4Yjk4NjkwOGFhNGRmNDZjODk3NGE0ZjQwYyAxMDA2NDQKLS0tIGEvV2ViRHJpdmVyVGVzdHMv
aW1wb3J0ZWQvc2VsZW5pdW0vcHkvdGVzdC9zZWxlbml1bS93ZWJkcml2ZXIvY29tbW9uL2V4ZWN1
dGluZ19hc3luY19qYXZhc2NyaXB0X3Rlc3RzLnB5CisrKyBiL1dlYkRyaXZlclRlc3RzL2ltcG9y
dGVkL3NlbGVuaXVtL3B5L3Rlc3Qvc2VsZW5pdW0vd2ViZHJpdmVyL2NvbW1vbi9leGVjdXRpbmdf
YXN5bmNfamF2YXNjcmlwdF90ZXN0cy5weQpAQCAtOTEsNiArOTEsNyBAQCBkZWYgdGVzdFNob3Vs
ZEJlQWJsZVRvUmV0dXJuV2ViRWxlbWVudHNGcm9tQXN5bmNTY3JpcHRzKGRyaXZlciwgcGFnZXMp
OgogICAgIGFzc2VydCAiYm9keSIgPT0gcmVzdWx0LnRhZ19uYW1lLmxvd2VyKCkKIAogCitAcHl0
ZXN0Lm1hcmsueGZhaWxfc2FmYXJpCiBkZWYgdGVzdFNob3VsZEJlQWJsZVRvUmV0dXJuQXJyYXlz
T2ZXZWJFbGVtZW50c0Zyb21Bc3luY1NjcmlwdHMoZHJpdmVyLCBwYWdlcyk6CiAgICAgcGFnZXMu
bG9hZCgiYWpheHlfcGFnZS5odG1sIikKIApkaWZmIC0tZ2l0IGEvV2ViRHJpdmVyVGVzdHMvaW1w
b3J0ZWQvc2VsZW5pdW0vcHkvdGVzdC9zZWxlbml1bS93ZWJkcml2ZXIvY29tbW9uL2V4ZWN1dGlu
Z19qYXZhc2NyaXB0X3Rlc3RzLnB5IGIvV2ViRHJpdmVyVGVzdHMvaW1wb3J0ZWQvc2VsZW5pdW0v
cHkvdGVzdC9zZWxlbml1bS93ZWJkcml2ZXIvY29tbW9uL2V4ZWN1dGluZ19qYXZhc2NyaXB0X3Rl
c3RzLnB5CmluZGV4IGFhMTkxODNkNjRhN2M4YzNiMjdhNzRlOTk5OTUyMjhiYTc4ZDRjN2IuLjBm
ZGNjYzJlMTM3ZWJmNjY3NmJjNDIzODRiYTkyYWFjZDIzMWQyNWUgMTAwNjQ0Ci0tLSBhL1dlYkRy
aXZlclRlc3RzL2ltcG9ydGVkL3NlbGVuaXVtL3B5L3Rlc3Qvc2VsZW5pdW0vd2ViZHJpdmVyL2Nv
bW1vbi9leGVjdXRpbmdfamF2YXNjcmlwdF90ZXN0cy5weQorKysgYi9XZWJEcml2ZXJUZXN0cy9p
bXBvcnRlZC9zZWxlbml1bS9weS90ZXN0L3NlbGVuaXVtL3dlYmRyaXZlci9jb21tb24vZXhlY3V0
aW5nX2phdmFzY3JpcHRfdGVzdHMucHkKQEAgLTE4LDYgKzE4LDcgQEAKIGltcG9ydCBweXRlc3QK
IAogZnJvbSBzZWxlbml1bS5jb21tb24uZXhjZXB0aW9ucyBpbXBvcnQgV2ViRHJpdmVyRXhjZXB0
aW9uCitmcm9tIHNlbGVuaXVtLndlYmRyaXZlci5jb21tb24uYnkgaW1wb3J0IEJ5CiBmcm9tIHNl
bGVuaXVtLndlYmRyaXZlci5yZW1vdGUud2ViZWxlbWVudCBpbXBvcnQgV2ViRWxlbWVudAogCiB0
cnk6CkBAIC0xNzksNyArMTgwLDcgQEAgZGVmIHRlc3RTaG91bGRUaHJvd0FuRXhjZXB0aW9uV2hl
blRoZUphdmFzY3JpcHRJc0JhZChkcml2ZXIsIHBhZ2VzKToKIGRlZiB0ZXN0U2hvdWxkQmVBYmxl
VG9DYWxsRnVuY3Rpb25zRGVmaW5lZE9uVGhlUGFnZShkcml2ZXIsIHBhZ2VzKToKICAgICBwYWdl
cy5sb2FkKCJqYXZhc2NyaXB0UGFnZS5odG1sIikKICAgICBkcml2ZXIuZXhlY3V0ZV9zY3JpcHQo
ImRpc3BsYXlNZXNzYWdlKCdJIGxpa2UgY2hlZXNlJykiKQotICAgIHRleHQgPSBkcml2ZXIuZmlu
ZF9lbGVtZW50X2J5X2lkKCJyZXN1bHQiKS50ZXh0CisgICAgdGV4dCA9IGRyaXZlci5maW5kX2Vs
ZW1lbnQoQnkuSUQsICJyZXN1bHQiKS50ZXh0CiAgICAgYXNzZXJ0ICJJIGxpa2UgY2hlZXNlIiA9
PSB0ZXh0LnN0cmlwKCkKIAogCkBAIC0yMDQsNyArMjA1LDcgQEAgZGVmIHRlc3RTaG91bGRCZUFi
bGVUb1Bhc3NBTnVtYmVyQW5Bc0FyZ3VtZW50KGRyaXZlciwgcGFnZXMpOgogCiBkZWYgdGVzdFNo
b3VsZEJlQWJsZVRvUGFzc0FXZWJFbGVtZW50QXNBcmd1bWVudChkcml2ZXIsIHBhZ2VzKToKICAg
ICBwYWdlcy5sb2FkKCJqYXZhc2NyaXB0UGFnZS5odG1sIikKLSAgICBidXR0b24gPSBkcml2ZXIu
ZmluZF9lbGVtZW50X2J5X2lkKCJwbGFpbkJ1dHRvbiIpCisgICAgYnV0dG9uID0gZHJpdmVyLmZp
bmRfZWxlbWVudChCeS5JRCwgInBsYWluQnV0dG9uIikKICAgICB2YWx1ZSA9IGRyaXZlci5leGVj
dXRlX3NjcmlwdCgKICAgICAgICAgImFyZ3VtZW50c1swXVsnZmxpYmJsZSddID0gYXJndW1lbnRz
WzBdLmdldEF0dHJpYnV0ZSgnaWQnKTsgcmV0dXJuIGFyZ3VtZW50c1swXVsnZmxpYmJsZSddIiwK
ICAgICAgICAgYnV0dG9uKQpkaWZmIC0tZ2l0IGEvV2ViRHJpdmVyVGVzdHMvaW1wb3J0ZWQvc2Vs
ZW5pdW0vcHkvdGVzdC9zZWxlbml1bS93ZWJkcml2ZXIvY29tbW9uL2Zvcm1faGFuZGxpbmdfdGVz
dHMucHkgYi9XZWJEcml2ZXJUZXN0cy9pbXBvcnRlZC9zZWxlbml1bS9weS90ZXN0L3NlbGVuaXVt
L3dlYmRyaXZlci9jb21tb24vZm9ybV9oYW5kbGluZ190ZXN0cy5weQppbmRleCAwZjU3MDljNDM5
Yjg5NjI5MWRhZTRmYmJiNWJiYjBlZWVjOGRkZDk2Li40NWI3MGFjZTk5MDkyM2NjZGFjMDUyMGNk
MjEzMGZlOWYyYWI4N2FiIDEwMDY0NAotLS0gYS9XZWJEcml2ZXJUZXN0cy9pbXBvcnRlZC9zZWxl
bml1bS9weS90ZXN0L3NlbGVuaXVtL3dlYmRyaXZlci9jb21tb24vZm9ybV9oYW5kbGluZ190ZXN0
cy5weQorKysgYi9XZWJEcml2ZXJUZXN0cy9pbXBvcnRlZC9zZWxlbml1bS9weS90ZXN0L3NlbGVu
aXVtL3dlYmRyaXZlci9jb21tb24vZm9ybV9oYW5kbGluZ190ZXN0cy5weQpAQCAtMTksNTQgKzE5
LDU1IEBAIGltcG9ydCBweXRlc3QKIAogZnJvbSBzZWxlbml1bS5jb21tb24uZXhjZXB0aW9ucyBp
bXBvcnQgTm9TdWNoRWxlbWVudEV4Y2VwdGlvbgogZnJvbSBzZWxlbml1bS5jb21tb24uZXhjZXB0
aW9ucyBpbXBvcnQgV2ViRHJpdmVyRXhjZXB0aW9uCitmcm9tIHNlbGVuaXVtLndlYmRyaXZlci5j
b21tb24uYnkgaW1wb3J0IEJ5CiBmcm9tIHNlbGVuaXVtLndlYmRyaXZlci5zdXBwb3J0IGltcG9y
dCBleHBlY3RlZF9jb25kaXRpb25zIGFzIEVDCiBmcm9tIHNlbGVuaXVtLndlYmRyaXZlci5zdXBw
b3J0LnVpIGltcG9ydCBXZWJEcml2ZXJXYWl0CiAKIAogZGVmIHRlc3RTaG91bGRDbGlja09uU3Vi
bWl0SW5wdXRFbGVtZW50cyhkcml2ZXIsIHBhZ2VzKToKICAgICBwYWdlcy5sb2FkKCJmb3JtUGFn
ZS5odG1sIikKLSAgICBkcml2ZXIuZmluZF9lbGVtZW50X2J5X2lkKCJzdWJtaXRCdXR0b24iKS5j
bGljaygpCisgICAgZHJpdmVyLmZpbmRfZWxlbWVudChCeS5JRCwgInN1Ym1pdEJ1dHRvbiIpLmNs
aWNrKCkKICAgICBXZWJEcml2ZXJXYWl0KGRyaXZlciwgMykudW50aWwoRUMudGl0bGVfaXMoIldl
IEFycml2ZSBIZXJlIikpCiAKIAogZGVmIHRlc3RDbGlja2luZ09uVW5jbGlja2FibGVFbGVtZW50
c0RvZXNOb3RoaW5nKGRyaXZlciwgcGFnZXMpOgogICAgIHBhZ2VzLmxvYWQoImZvcm1QYWdlLmh0
bWwiKQotICAgIGRyaXZlci5maW5kX2VsZW1lbnRfYnlfeHBhdGgoIi8vYm9keSIpLmNsaWNrKCkK
KyAgICBkcml2ZXIuZmluZF9lbGVtZW50KEJ5LlhQQVRILCAiLy9ib2R5IikuY2xpY2soKQogCiAK
IGRlZiB0ZXN0U2hvdWxkQmVBYmxlVG9DbGlja0ltYWdlQnV0dG9ucyhkcml2ZXIsIHBhZ2VzKToK
ICAgICBwYWdlcy5sb2FkKCJmb3JtUGFnZS5odG1sIikKLSAgICBkcml2ZXIuZmluZF9lbGVtZW50
X2J5X2lkKCJpbWFnZUJ1dHRvbiIpLmNsaWNrKCkKKyAgICBkcml2ZXIuZmluZF9lbGVtZW50KEJ5
LklELCAiaW1hZ2VCdXR0b24iKS5jbGljaygpCiAgICAgV2ViRHJpdmVyV2FpdChkcml2ZXIsIDMp
LnVudGlsKEVDLnRpdGxlX2lzKCJXZSBBcnJpdmUgSGVyZSIpKQogCiAKIGRlZiB0ZXN0U2hvdWxk
QmVBYmxlVG9TdWJtaXRGb3Jtcyhkcml2ZXIsIHBhZ2VzKToKICAgICBwYWdlcy5sb2FkKCJmb3Jt
UGFnZS5odG1sIikKLSAgICBkcml2ZXIuZmluZF9lbGVtZW50X2J5X25hbWUoImxvZ2luIikuc3Vi
bWl0KCkKKyAgICBkcml2ZXIuZmluZF9lbGVtZW50KEJ5Lk5BTUUsICJsb2dpbiIpLnN1Ym1pdCgp
CiAgICAgV2ViRHJpdmVyV2FpdChkcml2ZXIsIDMpLnVudGlsKEVDLnRpdGxlX2lzKCJXZSBBcnJp
dmUgSGVyZSIpKQogCiAKIGRlZiB0ZXN0U2hvdWxkU3VibWl0QUZvcm1XaGVuQW55SW5wdXRFbGVt
ZW50V2l0aGluVGhhdEZvcm1Jc1N1Ym1pdHRlZChkcml2ZXIsIHBhZ2VzKToKICAgICBwYWdlcy5s
b2FkKCJmb3JtUGFnZS5odG1sIikKLSAgICBkcml2ZXIuZmluZF9lbGVtZW50X2J5X2lkKCJjaGVj
a3kiKS5zdWJtaXQoKQorICAgIGRyaXZlci5maW5kX2VsZW1lbnQoQnkuSUQsICJjaGVja3kiKS5z
dWJtaXQoKQogICAgIFdlYkRyaXZlcldhaXQoZHJpdmVyLCAzKS51bnRpbChFQy50aXRsZV9pcygi
V2UgQXJyaXZlIEhlcmUiKSkKIAogCiBkZWYgdGVzdFNob3VsZFN1Ym1pdEFGb3JtV2hlbkFueUVs
ZW1lbnRXaXRoaW5UaGF0Rm9ybUlzU3VibWl0dGVkKGRyaXZlciwgcGFnZXMpOgogICAgIHBhZ2Vz
LmxvYWQoImZvcm1QYWdlLmh0bWwiKQotICAgIGRyaXZlci5maW5kX2VsZW1lbnRfYnlfeHBhdGgo
Ii8vZm9ybS9wIikuc3VibWl0KCkKKyAgICBkcml2ZXIuZmluZF9lbGVtZW50KEJ5LlhQQVRILCAi
Ly9mb3JtL3AiKS5zdWJtaXQoKQogICAgIFdlYkRyaXZlcldhaXQoZHJpdmVyLCA1KS51bnRpbChF
Qy50aXRsZV9pcygiV2UgQXJyaXZlIEhlcmUiKSkKIAogCiBkZWYgdGVzdFNob3VsZE5vdEJlQWJs
ZVRvU3VibWl0QUZvcm1UaGF0RG9lc05vdEV4aXN0KGRyaXZlciwgcGFnZXMpOgogICAgIHBhZ2Vz
LmxvYWQoImZvcm1QYWdlLmh0bWwiKQogICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhOb1N1Y2hFbGVt
ZW50RXhjZXB0aW9uKToKLSAgICAgICAgZHJpdmVyLmZpbmRfZWxlbWVudF9ieV9uYW1lKCJ0aGVy
ZSBpcyBubyBzcG9vbiIpLnN1Ym1pdCgpCisgICAgICAgIGRyaXZlci5maW5kX2VsZW1lbnQoQnku
TkFNRSwgInRoZXJlIGlzIG5vIHNwb29uIikuc3VibWl0KCkKIAogCiBkZWYgdGVzdFNob3VsZEJl
QWJsZVRvRW50ZXJUZXh0SW50b0FUZXh0QXJlYUJ5U2V0dGluZ0l0c1ZhbHVlKGRyaXZlciwgcGFn
ZXMpOgogICAgIHBhZ2VzLmxvYWQoImphdmFzY3JpcHRQYWdlLmh0bWwiKQotICAgIHRleHRhcmVh
ID0gZHJpdmVyLmZpbmRfZWxlbWVudF9ieV9pZCgia2V5VXBBcmVhIikKKyAgICB0ZXh0YXJlYSA9
IGRyaXZlci5maW5kX2VsZW1lbnQoQnkuSUQsICJrZXlVcEFyZWEiKQogICAgIGNoZWVzZXkgPSAi
QnJpZSBhbmQgY2hlZGRhciIKICAgICB0ZXh0YXJlYS5zZW5kX2tleXMoY2hlZXNleSkKICAgICBh
c3NlcnQgdGV4dGFyZWEuZ2V0X2F0dHJpYnV0ZSgidmFsdWUiKSA9PSBjaGVlc2V5CkBAIC03NCwy
MSArNzUsMjEgQEAgZGVmIHRlc3RTaG91bGRCZUFibGVUb0VudGVyVGV4dEludG9BVGV4dEFyZWFC
eVNldHRpbmdJdHNWYWx1ZShkcml2ZXIsIHBhZ2VzKToKIAogZGVmIHRlc3RTaG91bGRFbnRlckRh
dGFJbnRvRm9ybUZpZWxkcyhkcml2ZXIsIHBhZ2VzKToKICAgICBwYWdlcy5sb2FkKCJ4aHRtbFRl
c3QuaHRtbCIpCi0gICAgZWxlbWVudCA9IGRyaXZlci5maW5kX2VsZW1lbnRfYnlfeHBhdGgoIi8v
Zm9ybVtAbmFtZT0nc29tZUZvcm0nXS9pbnB1dFtAaWQ9J3VzZXJuYW1lJ10iKQorICAgIGVsZW1l
bnQgPSBkcml2ZXIuZmluZF9lbGVtZW50KEJ5LlhQQVRILCAiLy9mb3JtW0BuYW1lPSdzb21lRm9y
bSddL2lucHV0W0BpZD0ndXNlcm5hbWUnXSIpCiAgICAgb3JpZ2luYWxWYWx1ZSA9IGVsZW1lbnQu
Z2V0X2F0dHJpYnV0ZSgidmFsdWUiKQogICAgIGFzc2VydCBvcmlnaW5hbFZhbHVlID09ICJjaGFu
Z2UiCiAKICAgICBlbGVtZW50LmNsZWFyKCkKICAgICBlbGVtZW50LnNlbmRfa2V5cygic29tZSB0
ZXh0IikKIAotICAgIGVsZW1lbnQgPSBkcml2ZXIuZmluZF9lbGVtZW50X2J5X3hwYXRoKCIvL2Zv
cm1bQG5hbWU9J3NvbWVGb3JtJ10vaW5wdXRbQGlkPSd1c2VybmFtZSddIikKKyAgICBlbGVtZW50
ID0gZHJpdmVyLmZpbmRfZWxlbWVudChCeS5YUEFUSCwgIi8vZm9ybVtAbmFtZT0nc29tZUZvcm0n
XS9pbnB1dFtAaWQ9J3VzZXJuYW1lJ10iKQogICAgIG5ld0Zvcm1WYWx1ZSA9IGVsZW1lbnQuZ2V0
X2F0dHJpYnV0ZSgidmFsdWUiKQogICAgIGFzc2VydCBuZXdGb3JtVmFsdWUgPT0gInNvbWUgdGV4
dCIKIAogCiBkZWYgdGVzdFNob3VsZEJlQWJsZVRvU2VsZWN0QUNoZWNrQm94KGRyaXZlciwgcGFn
ZXMpOgogICAgIHBhZ2VzLmxvYWQoImZvcm1QYWdlLmh0bWwiKQotICAgIGNoZWNrYm94ID0gZHJp
dmVyLmZpbmRfZWxlbWVudF9ieV9pZCgiY2hlY2t5IikKKyAgICBjaGVja2JveCA9IGRyaXZlci5m
aW5kX2VsZW1lbnQoQnkuSUQsICJjaGVja3kiKQogICAgIGFzc2VydCBjaGVja2JveC5pc19zZWxl
Y3RlZCgpIGlzIEZhbHNlCiAgICAgY2hlY2tib3guY2xpY2soKQogICAgIGFzc2VydCBjaGVja2Jv
eC5pc19zZWxlY3RlZCgpIGlzIFRydWUKQEAgLTk4LDcgKzk5LDcgQEAgZGVmIHRlc3RTaG91bGRC
ZUFibGVUb1NlbGVjdEFDaGVja0JveChkcml2ZXIsIHBhZ2VzKToKIAogZGVmIHRlc3RTaG91bGRU
b2dnbGVUaGVDaGVja2VkU3RhdGVPZkFDaGVja2JveChkcml2ZXIsIHBhZ2VzKToKICAgICBwYWdl
cy5sb2FkKCJmb3JtUGFnZS5odG1sIikKLSAgICBjaGVja2JveCA9IGRyaXZlci5maW5kX2VsZW1l
bnRfYnlfaWQoImNoZWNreSIpCisgICAgY2hlY2tib3ggPSBkcml2ZXIuZmluZF9lbGVtZW50KEJ5
LklELCAiY2hlY2t5IikKICAgICBhc3NlcnQgY2hlY2tib3guaXNfc2VsZWN0ZWQoKSBpcyBGYWxz
ZQogICAgIGNoZWNrYm94LmNsaWNrKCkKICAgICBhc3NlcnQgY2hlY2tib3guaXNfc2VsZWN0ZWQo
KSBpcyBUcnVlCkBAIC0xMDgsNyArMTA5LDcgQEAgZGVmIHRlc3RTaG91bGRUb2dnbGVUaGVDaGVj
a2VkU3RhdGVPZkFDaGVja2JveChkcml2ZXIsIHBhZ2VzKToKIAogZGVmIHRlc3RUb2dnbGluZ0FD
aGVja2JveFNob3VsZFJldHVybkl0c0N1cnJlbnRTdGF0ZShkcml2ZXIsIHBhZ2VzKToKICAgICBw
YWdlcy5sb2FkKCJmb3JtUGFnZS5odG1sIikKLSAgICBjaGVja2JveCA9IGRyaXZlci5maW5kX2Vs
ZW1lbnRfYnlfaWQoImNoZWNreSIpCisgICAgY2hlY2tib3ggPSBkcml2ZXIuZmluZF9lbGVtZW50
KEJ5LklELCAiY2hlY2t5IikKICAgICBhc3NlcnQgY2hlY2tib3guaXNfc2VsZWN0ZWQoKSBpcyBG
YWxzZQogICAgIGNoZWNrYm94LmNsaWNrKCkKICAgICBhc3NlcnQgY2hlY2tib3guaXNfc2VsZWN0
ZWQoKSBpcyBUcnVlCkBAIC0xMTgsNyArMTE5LDcgQEAgZGVmIHRlc3RUb2dnbGluZ0FDaGVja2Jv
eFNob3VsZFJldHVybkl0c0N1cnJlbnRTdGF0ZShkcml2ZXIsIHBhZ2VzKToKIAogZGVmIHRlc3RT
aG91bGRCZUFibGVUb1NlbGVjdEFSYWRpb0J1dHRvbihkcml2ZXIsIHBhZ2VzKToKICAgICBwYWdl
cy5sb2FkKCJmb3JtUGFnZS5odG1sIikKLSAgICByYWRpb0J1dHRvbiA9IGRyaXZlci5maW5kX2Vs
ZW1lbnRfYnlfaWQoInBlYXMiKQorICAgIHJhZGlvQnV0dG9uID0gZHJpdmVyLmZpbmRfZWxlbWVu
dChCeS5JRCwgInBlYXMiKQogICAgIGFzc2VydCByYWRpb0J1dHRvbi5pc19zZWxlY3RlZCgpIGlz
IEZhbHNlCiAgICAgcmFkaW9CdXR0b24uY2xpY2soKQogICAgIGFzc2VydCByYWRpb0J1dHRvbi5p
c19zZWxlY3RlZCgpIGlzIFRydWUKQEAgLTEyNiw3ICsxMjcsNyBAQCBkZWYgdGVzdFNob3VsZEJl
QWJsZVRvU2VsZWN0QVJhZGlvQnV0dG9uKGRyaXZlciwgcGFnZXMpOgogCiBkZWYgdGVzdFNob3Vs
ZEJlQWJsZVRvU2VsZWN0QVJhZGlvQnV0dG9uQnlDbGlja2luZ09uSXQoZHJpdmVyLCBwYWdlcyk6
CiAgICAgcGFnZXMubG9hZCgiZm9ybVBhZ2UuaHRtbCIpCi0gICAgcmFkaW9CdXR0b24gPSBkcml2
ZXIuZmluZF9lbGVtZW50X2J5X2lkKCJwZWFzIikKKyAgICByYWRpb0J1dHRvbiA9IGRyaXZlci5m
aW5kX2VsZW1lbnQoQnkuSUQsICJwZWFzIikKICAgICBhc3NlcnQgcmFkaW9CdXR0b24uaXNfc2Vs
ZWN0ZWQoKSBpcyBGYWxzZQogICAgIHJhZGlvQnV0dG9uLmNsaWNrKCkKICAgICBhc3NlcnQgcmFk
aW9CdXR0b24uaXNfc2VsZWN0ZWQoKSBpcyBUcnVlCkBAIC0xMzQsMzIgKzEzNSwxOCBAQCBkZWYg
dGVzdFNob3VsZEJlQWJsZVRvU2VsZWN0QVJhZGlvQnV0dG9uQnlDbGlja2luZ09uSXQoZHJpdmVy
LCBwYWdlcyk6CiAKIGRlZiB0ZXN0U2hvdWxkUmV0dXJuU3RhdGVPZlJhZGlvQnV0dG9uc0JlZm9y
ZUludGVyYXRpb24oZHJpdmVyLCBwYWdlcyk6CiAgICAgcGFnZXMubG9hZCgiZm9ybVBhZ2UuaHRt
bCIpCi0gICAgcmFkaW9CdXR0b24gPSBkcml2ZXIuZmluZF9lbGVtZW50X2J5X2lkKCJjaGVlc2Vf
YW5kX3BlYXMiKQorICAgIHJhZGlvQnV0dG9uID0gZHJpdmVyLmZpbmRfZWxlbWVudChCeS5JRCwg
ImNoZWVzZV9hbmRfcGVhcyIpCiAgICAgYXNzZXJ0IHJhZGlvQnV0dG9uLmlzX3NlbGVjdGVkKCkg
aXMgVHJ1ZQogCi0gICAgcmFkaW9CdXR0b24gPSBkcml2ZXIuZmluZF9lbGVtZW50X2J5X2lkKCJj
aGVlc2UiKQorICAgIHJhZGlvQnV0dG9uID0gZHJpdmVyLmZpbmRfZWxlbWVudChCeS5JRCwgImNo
ZWVzZSIpCiAgICAgYXNzZXJ0IHJhZGlvQnV0dG9uLmlzX3NlbGVjdGVkKCkgaXMgRmFsc2UKIAot
IyBbRXhwZWN0ZWRFeGNlcHRpb24odHlwZW9mKE5vdEltcGxlbWVudGVkRXhjZXB0aW9uKSldCi0j
IGRlZiB0ZXN0U2hvdWxkVGhyb3dBbkV4Y2VwdGlvbldoZW5Ub2dnbGluZ1RoZVN0YXRlT2ZBUmFk
aW9CdXR0b24oZHJpdmVyLCBwYWdlcyk6Ci0jICAgIHBhZ2VzLmxvYWQoImZvcm1QYWdlLmh0bWwi
KQotIyAgICByYWRpb0J1dHRvbiA9IGRyaXZlci5maW5kX2VsZW1lbnRfYnlfaWQoImNoZWVzZSIp
KQotIyAgICByYWRpb0J1dHRvbi5jbGljaygpCi0KLSMgW0lnbm9yZUJyb3dzZXIoQnJvd3Nlci5J
RSwgIklFIGFsbG93cyB0b2dnbGluZyBvZiBhbiBvcHRpb24gbm90IGluIGEgbXVsdGlzZWxlY3Qi
KV0KLSMgW0V4cGVjdGVkRXhjZXB0aW9uKHR5cGVvZihOb3RJbXBsZW1lbnRlZEV4Y2VwdGlvbikp
XQotIyBkZWYgdGVzdFRvZ2dsaW5nQW5PcHRpb25TaG91bGRUaHJvd0FuRXhjZXB0aW9uSWZUaGVP
cHRpb25Jc05vdEluQU11bHRpU2VsZWN0KGRyaXZlciwgcGFnZXMpOgotIyAgICBwYWdlcy5sb2Fk
KCJmb3JtUGFnZS5odG1sIikKLSMgICAgc2VsZWN0ID0gZHJpdmVyLmZpbmRfZWxlbWVudF9ieV9u
YW1lKCJzZWxlY3RvbWF0aWMiKSkKLSMgICAgb3B0aW9uID0gc2VsZWN0LmZpbmRfZWxlbWVudHNf
YnlfdGFnX25hbWUoIm9wdGlvbiIpKVswXQotIyAgICBvcHRpb24uY2xpY2soKQotCiAKIGRlZiB0
ZXN0VG9nZ2xpbmdBbk9wdGlvblNob3VsZFRvZ2dsZU9wdGlvbnNJbkFNdWx0aVNlbGVjdChkcml2
ZXIsIHBhZ2VzKToKICAgICBwYWdlcy5sb2FkKCJmb3JtUGFnZS5odG1sIikKIAotICAgIHNlbGVj
dCA9IGRyaXZlci5maW5kX2VsZW1lbnRfYnlfbmFtZSgibXVsdGkiKQotICAgIG9wdGlvbiA9IHNl
bGVjdC5maW5kX2VsZW1lbnRzX2J5X3RhZ19uYW1lKCJvcHRpb24iKVswXQorICAgIHNlbGVjdCA9
IGRyaXZlci5maW5kX2VsZW1lbnQoQnkuTkFNRSwgIm11bHRpIikKKyAgICBvcHRpb24gPSBzZWxl
Y3QuZmluZF9lbGVtZW50cyhCeS5UQUdfTkFNRSwgIm9wdGlvbiIpWzBdCiAKICAgICBzZWxlY3Rl
ZCA9IG9wdGlvbi5pc19zZWxlY3RlZCgpCiAgICAgb3B0aW9uLmNsaWNrKCkKQEAgLTE3MSwxNCAr
MTU4LDE0IEBAIGRlZiB0ZXN0VG9nZ2xpbmdBbk9wdGlvblNob3VsZFRvZ2dsZU9wdGlvbnNJbkFN
dWx0aVNlbGVjdChkcml2ZXIsIHBhZ2VzKToKIAogZGVmIHRlc3RTaG91bGRUaHJvd0FuRXhjZXB0
aW9uV2hlblNlbGVjdGluZ0FuVW5zZWxlY3RhYmxlRWxlbWVudChkcml2ZXIsIHBhZ2VzKToKICAg
ICBwYWdlcy5sb2FkKCJmb3JtUGFnZS5odG1sIikKLSAgICBlbGVtZW50ID0gZHJpdmVyLmZpbmRf
ZWxlbWVudF9ieV94cGF0aCgiLy90aXRsZSIpCisgICAgZWxlbWVudCA9IGRyaXZlci5maW5kX2Vs
ZW1lbnQoQnkuWFBBVEgsICIvL3RpdGxlIikKICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoV2ViRHJp
dmVyRXhjZXB0aW9uKToKICAgICAgICAgZWxlbWVudC5jbGljaygpCiAKIAogZGVmIHRlc3RTZW5k
aW5nS2V5Ym9hcmRFdmVudHNTaG91bGRBcHBlbmRUZXh0SW5JbnB1dHMoZHJpdmVyLCBwYWdlcyk6
CiAgICAgcGFnZXMubG9hZCgiZm9ybVBhZ2UuaHRtbCIpCi0gICAgZWxlbWVudCA9IGRyaXZlci5m
aW5kX2VsZW1lbnRfYnlfaWQoIndvcmtpbmciKQorICAgIGVsZW1lbnQgPSBkcml2ZXIuZmluZF9l
bGVtZW50KEJ5LklELCAid29ya2luZyIpCiAgICAgZWxlbWVudC5zZW5kX2tleXMoIlNvbWUiKQog
ICAgIHZhbHVlID0gZWxlbWVudC5nZXRfYXR0cmlidXRlKCJ2YWx1ZSIpCiAgICAgYXNzZXJ0IHZh
bHVlID09ICJTb21lIgpAQCAtMTkwLDcgKzE3Nyw3IEBAIGRlZiB0ZXN0U2VuZGluZ0tleWJvYXJk
RXZlbnRzU2hvdWxkQXBwZW5kVGV4dEluSW5wdXRzKGRyaXZlciwgcGFnZXMpOgogCiBkZWYgdGVz
dFNob3VsZEJlQWJsZVRvQ2xlYXJUZXh0RnJvbUlucHV0RWxlbWVudHMoZHJpdmVyLCBwYWdlcyk6
CiAgICAgcGFnZXMubG9hZCgiZm9ybVBhZ2UuaHRtbCIpCi0gICAgZWxlbWVudCA9IGRyaXZlci5m
aW5kX2VsZW1lbnRfYnlfaWQoIndvcmtpbmciKQorICAgIGVsZW1lbnQgPSBkcml2ZXIuZmluZF9l
bGVtZW50KEJ5LklELCAid29ya2luZyIpCiAgICAgZWxlbWVudC5zZW5kX2tleXMoIlNvbWUgdGV4
dCIpCiAgICAgdmFsdWUgPSBlbGVtZW50LmdldF9hdHRyaWJ1dGUoInZhbHVlIikKICAgICBhc3Nl
cnQgbGVuKHZhbHVlKSA+IDAKQEAgLTIwMiwxNiArMTg5LDE2IEBAIGRlZiB0ZXN0U2hvdWxkQmVB
YmxlVG9DbGVhclRleHRGcm9tSW5wdXRFbGVtZW50cyhkcml2ZXIsIHBhZ2VzKToKIAogZGVmIHRl
c3RFbXB0eVRleHRCb3hlc1Nob3VsZFJldHVybkFuRW1wdHlTdHJpbmdOb3ROdWxsKGRyaXZlciwg
cGFnZXMpOgogICAgIHBhZ2VzLmxvYWQoImZvcm1QYWdlLmh0bWwiKQotICAgIGVtcHR5VGV4dEJv
eCA9IGRyaXZlci5maW5kX2VsZW1lbnRfYnlfaWQoIndvcmtpbmciKQorICAgIGVtcHR5VGV4dEJv
eCA9IGRyaXZlci5maW5kX2VsZW1lbnQoQnkuSUQsICJ3b3JraW5nIikKICAgICBhc3NlcnQgZW1w
dHlUZXh0Qm94LmdldF9hdHRyaWJ1dGUoInZhbHVlIikgPT0gIiIKIAotICAgIGVtcHR5VGV4dEFy
ZWEgPSBkcml2ZXIuZmluZF9lbGVtZW50X2J5X2lkKCJlbXB0eVRleHRBcmVhIikKKyAgICBlbXB0
eVRleHRBcmVhID0gZHJpdmVyLmZpbmRfZWxlbWVudChCeS5JRCwgImVtcHR5VGV4dEFyZWEiKQog
ICAgIGFzc2VydCBlbXB0eVRleHRBcmVhLmdldF9hdHRyaWJ1dGUoInZhbHVlIikgPT0gIiIKIAog
CiBkZWYgdGVzdFNob3VsZEJlQWJsZVRvQ2xlYXJUZXh0RnJvbVRleHRBcmVhcyhkcml2ZXIsIHBh
Z2VzKToKICAgICBwYWdlcy5sb2FkKCJmb3JtUGFnZS5odG1sIikKLSAgICBlbGVtZW50ID0gZHJp
dmVyLmZpbmRfZWxlbWVudF9ieV9pZCgid2l0aFRleHQiKQorICAgIGVsZW1lbnQgPSBkcml2ZXIu
ZmluZF9lbGVtZW50KEJ5LklELCAid2l0aFRleHQiKQogICAgIGVsZW1lbnQuc2VuZF9rZXlzKCJT
b21lIHRleHQiKQogICAgIHZhbHVlID0gZWxlbWVudC5nZXRfYXR0cmlidXRlKCJ2YWx1ZSIpCiAg
ICAgYXNzZXJ0IGxlbih2YWx1ZSkgPiAwCkBAIC0yMjMsOCArMjEwLDggQEAgZGVmIHRlc3RTaG91
bGRCZUFibGVUb0NsZWFyVGV4dEZyb21UZXh0QXJlYXMoZHJpdmVyLCBwYWdlcyk6CiAKIGRlZiB0
ZXN0UmFkaW9TaG91bGROb3RCZVNlbGVjdGVkQWZ0ZXJTZWxlY3RpbmdTaWJsaW5nKGRyaXZlciwg
cGFnZXMpOgogICAgIHBhZ2VzLmxvYWQoImZvcm1QYWdlLmh0bWwiKQotICAgIGNoZWVzZSA9IGRy
aXZlci5maW5kX2VsZW1lbnRfYnlfaWQoImNoZWVzZSIpCi0gICAgcGVhcyA9IGRyaXZlci5maW5k
X2VsZW1lbnRfYnlfaWQoInBlYXMiKQorICAgIGNoZWVzZSA9IGRyaXZlci5maW5kX2VsZW1lbnQo
QnkuSUQsICJjaGVlc2UiKQorICAgIHBlYXMgPSBkcml2ZXIuZmluZF9lbGVtZW50KEJ5LklELCAi
cGVhcyIpCiAKICAgICBjaGVlc2UuY2xpY2soKQogICAgIGFzc2VydCBjaGVlc2UuaXNfc2VsZWN0
ZWQoKSBpcyBUcnVlCmRpZmYgLS1naXQgYS9XZWJEcml2ZXJUZXN0cy9pbXBvcnRlZC9zZWxlbml1
bS9weS90ZXN0L3NlbGVuaXVtL3dlYmRyaXZlci9jb21tb24vZnJhbWVfc3dpdGNoaW5nX3Rlc3Rz
LnB5IGIvV2ViRHJpdmVyVGVzdHMvaW1wb3J0ZWQvc2VsZW5pdW0vcHkvdGVzdC9zZWxlbml1bS93
ZWJkcml2ZXIvY29tbW9uL2ZyYW1lX3N3aXRjaGluZ190ZXN0cy5weQppbmRleCBiN2VlNWE4Nzcw
NDRhYWMwZTRkYmJjOGQ0MTMwZWNkY2U1ZTE4MTFjLi44YTc1OWI2MDBiOTgxNjExNmZhYTc1ZGI1
MGUyMTY2MjhjZjAzMDc3IDEwMDY0NAotLS0gYS9XZWJEcml2ZXJUZXN0cy9pbXBvcnRlZC9zZWxl
bml1bS9weS90ZXN0L3NlbGVuaXVtL3dlYmRyaXZlci9jb21tb24vZnJhbWVfc3dpdGNoaW5nX3Rl
c3RzLnB5CisrKyBiL1dlYkRyaXZlclRlc3RzL2ltcG9ydGVkL3NlbGVuaXVtL3B5L3Rlc3Qvc2Vs
ZW5pdW0vd2ViZHJpdmVyL2NvbW1vbi9mcmFtZV9zd2l0Y2hpbmdfdGVzdHMucHkKQEAgLTEzNywz
NyArMTM3LDM3IEBAIGRlZiB0ZXN0RnJhbWVTZWFyY2hlc1Nob3VsZEJlUmVsYXRpdmVUb1RoZUN1
cnJlbnRseVNlbGVjdGVkRnJhbWUoZHJpdmVyLCBwYWdlcyk6CiAgICAgYXNzZXJ0IGRyaXZlci5m
aW5kX2VsZW1lbnQoQnkuSUQsICJwYWdlTnVtYmVyIikudGV4dCA9PSAiMiIKIAogICAgIHdpdGgg
cHl0ZXN0LnJhaXNlcyhOb1N1Y2hFbGVtZW50RXhjZXB0aW9uKToKLSAgICAgICAgZHJpdmVyLnN3
aXRjaF90by5mcmFtZShkcml2ZXIuZmluZF9lbGVtZW50X2J5X25hbWUoInRoaXJkIikpCisgICAg
ICAgIGRyaXZlci5zd2l0Y2hfdG8uZnJhbWUoZHJpdmVyLmZpbmRfZWxlbWVudChCeS5OQU1FLCAi
dGhpcmQiKSkKIAogICAgIGRyaXZlci5zd2l0Y2hfdG8uZGVmYXVsdF9jb250ZW50KCkKLSAgICBk
cml2ZXIuc3dpdGNoX3RvLmZyYW1lKGRyaXZlci5maW5kX2VsZW1lbnRfYnlfbmFtZSgidGhpcmQi
KSkKKyAgICBkcml2ZXIuc3dpdGNoX3RvLmZyYW1lKGRyaXZlci5maW5kX2VsZW1lbnQoQnkuTkFN
RSwgInRoaXJkIikpCiAKICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoTm9TdWNoRnJhbWVFeGNlcHRp
b24pOgogICAgICAgICBkcml2ZXIuc3dpdGNoX3RvLmZyYW1lKCJzZWNvbmQiKQogCiAgICAgZHJp
dmVyLnN3aXRjaF90by5kZWZhdWx0X2NvbnRlbnQoKQotICAgIGRyaXZlci5zd2l0Y2hfdG8uZnJh
bWUoZHJpdmVyLmZpbmRfZWxlbWVudF9ieV9uYW1lKCJzZWNvbmQiKSkKKyAgICBkcml2ZXIuc3dp
dGNoX3RvLmZyYW1lKGRyaXZlci5maW5kX2VsZW1lbnQoQnkuTkFNRSwgInNlY29uZCIpKQogICAg
IGFzc2VydCBkcml2ZXIuZmluZF9lbGVtZW50KEJ5LklELCAicGFnZU51bWJlciIpLnRleHQgPT0g
IjIiCiAKIAogZGVmIHRlc3RTaG91bGRTZWxlY3RDaGlsZEZyYW1lc0J5Q2hhaW5lZENhbGxzKGRy
aXZlciwgcGFnZXMpOgogICAgIHBhZ2VzLmxvYWQoImZyYW1lc2V0Lmh0bWwiKQotICAgIGRyaXZl
ci5zd2l0Y2hfdG8uZnJhbWUoZHJpdmVyLmZpbmRfZWxlbWVudF9ieV9uYW1lKCJmb3VydGgiKSkK
LSAgICBkcml2ZXIuc3dpdGNoX3RvLmZyYW1lKGRyaXZlci5maW5kX2VsZW1lbnRfYnlfbmFtZSgi
Y2hpbGQyIikpCisgICAgZHJpdmVyLnN3aXRjaF90by5mcmFtZShkcml2ZXIuZmluZF9lbGVtZW50
KEJ5Lk5BTUUsICJmb3VydGgiKSkKKyAgICBkcml2ZXIuc3dpdGNoX3RvLmZyYW1lKGRyaXZlci5m
aW5kX2VsZW1lbnQoQnkuTkFNRSwgImNoaWxkMiIpKQogICAgIGFzc2VydCBkcml2ZXIuZmluZF9l
bGVtZW50KEJ5LklELCAicGFnZU51bWJlciIpLnRleHQgPT0gIjExIgogCiAKIGRlZiB0ZXN0U2hv
dWxkVGhyb3dGcmFtZU5vdEZvdW5kRXhjZXB0aW9uTG9va2luZ1VwU3ViRnJhbWVzV2l0aFN1cGVy
RnJhbWVOYW1lcyhkcml2ZXIsIHBhZ2VzKToKICAgICBwYWdlcy5sb2FkKCJmcmFtZXNldC5odG1s
IikKLSAgICBkcml2ZXIuc3dpdGNoX3RvLmZyYW1lKGRyaXZlci5maW5kX2VsZW1lbnRfYnlfbmFt
ZSgiZm91cnRoIikpCisgICAgZHJpdmVyLnN3aXRjaF90by5mcmFtZShkcml2ZXIuZmluZF9lbGVt
ZW50KEJ5Lk5BTUUsICJmb3VydGgiKSkKICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoTm9TdWNoRWxl
bWVudEV4Y2VwdGlvbik6Ci0gICAgICAgIGRyaXZlci5zd2l0Y2hfdG8uZnJhbWUoZHJpdmVyLmZp
bmRfZWxlbWVudF9ieV9uYW1lKCJzZWNvbmQiKSkKKyAgICAgICAgZHJpdmVyLnN3aXRjaF90by5m
cmFtZShkcml2ZXIuZmluZF9lbGVtZW50KEJ5Lk5BTUUsICJzZWNvbmQiKSkKIAogCiBkZWYgdGVz
dFNob3VsZFRocm93QW5FeGNlcHRpb25XaGVuQUZyYW1lQ2Fubm90QmVGb3VuZChkcml2ZXIsIHBh
Z2VzKToKICAgICBwYWdlcy5sb2FkKCJ4aHRtbFRlc3QuaHRtbCIpCiAgICAgd2l0aCBweXRlc3Qu
cmFpc2VzKE5vU3VjaEVsZW1lbnRFeGNlcHRpb24pOgotICAgICAgICBkcml2ZXIuc3dpdGNoX3Rv
LmZyYW1lKGRyaXZlci5maW5kX2VsZW1lbnRfYnlfbmFtZSgiTm90aGluZyBoZXJlIikpCisgICAg
ICAgIGRyaXZlci5zd2l0Y2hfdG8uZnJhbWUoZHJpdmVyLmZpbmRfZWxlbWVudChCeS5OQU1FLCAi
Tm90aGluZyBoZXJlIikpCiAKIAogZGVmIHRlc3RTaG91bGRUaHJvd0FuRXhjZXB0aW9uV2hlbkFG
cmFtZUNhbm5vdEJlRm91bmRCeUluZGV4KGRyaXZlciwgcGFnZXMpOgpAQCAtMTc4LDE4ICsxNzgs
MTkgQEAgZGVmIHRlc3RTaG91bGRUaHJvd0FuRXhjZXB0aW9uV2hlbkFGcmFtZUNhbm5vdEJlRm91
bmRCeUluZGV4KGRyaXZlciwgcGFnZXMpOgogCiBkZWYgdGVzdFNob3VsZEJlQWJsZVRvU3dpdGNo
VG9QYXJlbnRGcmFtZShkcml2ZXIsIHBhZ2VzKToKICAgICBwYWdlcy5sb2FkKCJmcmFtZXNldC5o
dG1sIikKLSAgICBkcml2ZXIuc3dpdGNoX3RvLmZyYW1lKGRyaXZlci5maW5kX2VsZW1lbnRfYnlf
bmFtZSgiZm91cnRoIikpCisgICAgZHJpdmVyLnN3aXRjaF90by5mcmFtZShkcml2ZXIuZmluZF9l
bGVtZW50KEJ5Lk5BTUUsICJmb3VydGgiKSkKICAgICBkcml2ZXIuc3dpdGNoX3RvLnBhcmVudF9m
cmFtZSgpCi0gICAgZHJpdmVyLnN3aXRjaF90by5mcmFtZShkcml2ZXIuZmluZF9lbGVtZW50X2J5
X25hbWUoImZpcnN0IikpCisgICAgZHJpdmVyLnN3aXRjaF90by5mcmFtZShkcml2ZXIuZmluZF9l
bGVtZW50KEJ5Lk5BTUUsICJmaXJzdCIpKQogICAgIGFzc2VydCBkcml2ZXIuZmluZF9lbGVtZW50
KEJ5LklELCAicGFnZU51bWJlciIpLnRleHQgPT0gIjEiCiAKIAorQHB5dGVzdC5tYXJrLnhmYWls
X3NhZmFyaQogZGVmIHRlc3RTaG91bGRCZUFibGVUb1N3aXRjaFRvUGFyZW50RnJhbWVGcm9tQVNl
Y29uZExldmVsRnJhbWUoZHJpdmVyLCBwYWdlcyk6CiAgICAgcGFnZXMubG9hZCgiZnJhbWVzZXQu
aHRtbCIpCi0gICAgZHJpdmVyLnN3aXRjaF90by5mcmFtZShkcml2ZXIuZmluZF9lbGVtZW50X2J5
X25hbWUoImZvdXJ0aCIpKQotICAgIGRyaXZlci5zd2l0Y2hfdG8uZnJhbWUoZHJpdmVyLmZpbmRf
ZWxlbWVudF9ieV9uYW1lKCJjaGlsZDEiKSkKKyAgICBkcml2ZXIuc3dpdGNoX3RvLmZyYW1lKGRy
aXZlci5maW5kX2VsZW1lbnQoQnkuTkFNRSwgImZvdXJ0aCIpKQorICAgIGRyaXZlci5zd2l0Y2hf
dG8uZnJhbWUoZHJpdmVyLmZpbmRfZWxlbWVudChCeS5OQU1FLCAiY2hpbGQxIikpCiAgICAgZHJp
dmVyLnN3aXRjaF90by5wYXJlbnRfZnJhbWUoKQotICAgIGRyaXZlci5zd2l0Y2hfdG8uZnJhbWUo
ZHJpdmVyLmZpbmRfZWxlbWVudF9ieV9uYW1lKCJjaGlsZDIiKSkKKyAgICBkcml2ZXIuc3dpdGNo
X3RvLmZyYW1lKGRyaXZlci5maW5kX2VsZW1lbnQoQnkuTkFNRSwgImNoaWxkMiIpKQogICAgIGFz
c2VydCBkcml2ZXIuZmluZF9lbGVtZW50KEJ5LklELCAicGFnZU51bWJlciIpLnRleHQgPT0gIjEx
IgogCiAKQEAgLTIyNSwxMCArMjI2LDExIEBAIGRlZiB0ZXN0U2hvdWxkQ29udGludWVUb1JlZmVy
VG9UaGVTYW1lRnJhbWVPbmNlSXRIYXNCZWVuU2VsZWN0ZWQoZHJpdmVyLCBwYWdlcyk6CiAgICAg
V2ViRHJpdmVyV2FpdChkcml2ZXIsIDMpLnVudGlsKEVDLnRleHRfdG9fYmVfcHJlc2VudF9pbl9l
bGVtZW50KChCeS5YUEFUSCwgJy8vcCcpLCAnU3VjY2VzcyEnKSkKIAogCi1AcHl0ZXN0Lm1hcmsu
eGZhaWxfbWFyaW9uZXR0ZShyYWlzZXM9V2ViRHJpdmVyRXhjZXB0aW9uLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVhc29uPSdodHRwczovL2dpdGh1Yi5jb20vbW96aWxsYS9nZWNr
b2RyaXZlci9pc3N1ZXMvNjEwJykKK0BweXRlc3QubWFyay54ZmFpbF9maXJlZm94KHJhaXNlcz1X
ZWJEcml2ZXJFeGNlcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFzb249J2h0
dHBzOi8vZ2l0aHViLmNvbS9tb3ppbGxhL2dlY2tvZHJpdmVyL2lzc3Vlcy82MTAnKQogQHB5dGVz
dC5tYXJrLnhmYWlsX3JlbW90ZShyYWlzZXM9V2ViRHJpdmVyRXhjZXB0aW9uLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICByZWFzb249J2h0dHBzOi8vZ2l0aHViLmNvbS9tb3ppbGxhL2dlY2tv
ZHJpdmVyL2lzc3Vlcy82MTAnKQorQHB5dGVzdC5tYXJrLnhmYWlsX3NhZmFyaQogZGVmIHRlc3RT
aG91bGRGb2N1c09uVGhlUmVwbGFjZW1lbnRXaGVuQUZyYW1lRm9sbG93c0FMaW5rVG9BX1RvcFRh
cmdldGVkUGFnZShkcml2ZXIsIHBhZ2VzKToKICAgICBwYWdlcy5sb2FkKCJmcmFtZXNldC5odG1s
IikKICAgICBkcml2ZXIuc3dpdGNoX3RvLmZyYW1lKDApCkBAIC0yNzQsNyArMjc2LDcgQEAgZGVm
IHRlc3RTaG91bGRCZUFibGVUb0NsaWNrSW5BRnJhbWUoZHJpdmVyLCBwYWdlcyk6CiAKIGRlZiB0
ZXN0U2hvdWxkQmVBYmxlVG9DbGlja0luQUZyYW1lVGhhdFJld3JpdGVzVG9wV2luZG93TG9jYXRp
b24oZHJpdmVyLCBwYWdlcyk6CiAgICAgcGFnZXMubG9hZCgiY2xpY2tfdGVzdHMvaXNzdWU1MjM3
Lmh0bWwiKQotICAgIGRyaXZlci5zd2l0Y2hfdG8uZnJhbWUoZHJpdmVyLmZpbmRfZWxlbWVudF9i
eV9pZCgic2VhcmNoIikpCisgICAgZHJpdmVyLnN3aXRjaF90by5mcmFtZShkcml2ZXIuZmluZF9l
bGVtZW50KEJ5LklELCAic2VhcmNoIikpCiAgICAgZHJpdmVyLmZpbmRfZWxlbWVudChCeS5JRCwg
InN1Ym1pdCIpLmNsaWNrKCkKICAgICBkcml2ZXIuc3dpdGNoX3RvLmRlZmF1bHRfY29udGVudCgp
CiAgICAgV2ViRHJpdmVyV2FpdChkcml2ZXIsIDMpLnVudGlsKEVDLnRpdGxlX2lzKCJUYXJnZXQg
cGFnZSBmb3IgaXNzdWUgNTIzNyIpKQpAQCAtMjgyLDggKzI4NCw4IEBAIGRlZiB0ZXN0U2hvdWxk
QmVBYmxlVG9DbGlja0luQUZyYW1lVGhhdFJld3JpdGVzVG9wV2luZG93TG9jYXRpb24oZHJpdmVy
LCBwYWdlcyk6CiAKIGRlZiB0ZXN0U2hvdWxkQmVBYmxlVG9DbGlja0luQVN1YkZyYW1lKGRyaXZl
ciwgcGFnZXMpOgogICAgIHBhZ2VzLmxvYWQoImZyYW1lc2V0Lmh0bWwiKQotICAgIGRyaXZlci5z
d2l0Y2hfdG8uZnJhbWUoZHJpdmVyLmZpbmRfZWxlbWVudF9ieV9pZCgic2l4dGgiKSkKLSAgICBk
cml2ZXIuc3dpdGNoX3RvLmZyYW1lKGRyaXZlci5maW5kX2VsZW1lbnRfYnlfaWQoImlmcmFtZTEi
KSkKKyAgICBkcml2ZXIuc3dpdGNoX3RvLmZyYW1lKGRyaXZlci5maW5kX2VsZW1lbnQoQnkuSUQs
ICJzaXh0aCIpKQorICAgIGRyaXZlci5zd2l0Y2hfdG8uZnJhbWUoZHJpdmVyLmZpbmRfZWxlbWVu
dChCeS5JRCwgImlmcmFtZTEiKSkKIAogICAgICMgVGhpcyBzaG91bGQgcmVwbGFjZSBmcmFtZSAi
aWZyYW1lMSIgaW5zaWRlIGZyYW1lICJzaXh0aCIgLi4uCiAgICAgZHJpdmVyLmZpbmRfZWxlbWVu
dChCeS5JRCwgInN1Ym1pdEJ1dHRvbiIpLmNsaWNrKCkKQEAgLTI5MSwxNCArMjkzLDE0IEBAIGRl
ZiB0ZXN0U2hvdWxkQmVBYmxlVG9DbGlja0luQVN1YkZyYW1lKGRyaXZlciwgcGFnZXMpOgogICAg
IGFzc2VydCBnZXRUZXh0T2ZHcmVldGluZ0VsZW1lbnQoZHJpdmVyKSwgIlN1Y2Nlc3MhIgogICAg
ICMgTWFrZSBzdXJlIGl0IHdhcyByZWFsbHkgZnJhbWUgImlmcmFtZTEiIGluc2lkZSBmcmFtZSAi
c2l4dGgiIHdoaWNoIHdhcyByZXBsYWNlZCAuLi4KICAgICBkcml2ZXIuc3dpdGNoX3RvLmRlZmF1
bHRfY29udGVudCgpCi0gICAgZHJpdmVyLnN3aXRjaF90by5mcmFtZShkcml2ZXIuZmluZF9lbGVt
ZW50X2J5X2lkKCJzaXh0aCIpKQotICAgIGRyaXZlci5zd2l0Y2hfdG8uZnJhbWUoZHJpdmVyLmZp
bmRfZWxlbWVudF9ieV9pZCgiaWZyYW1lMSIpKQorICAgIGRyaXZlci5zd2l0Y2hfdG8uZnJhbWUo
ZHJpdmVyLmZpbmRfZWxlbWVudChCeS5JRCwgInNpeHRoIikpCisgICAgZHJpdmVyLnN3aXRjaF90
by5mcmFtZShkcml2ZXIuZmluZF9lbGVtZW50KEJ5LklELCAiaWZyYW1lMSIpKQogICAgIGFzc2Vy
dCBkcml2ZXIuZmluZF9lbGVtZW50KEJ5LklELCAiZ3JlZXRpbmciKS50ZXh0ID09ICJTdWNjZXNz
ISIKIAogCiBkZWYgdGVzdFNob3VsZEJlQWJsZVRvRmluZEVsZW1lbnRzSW5JZnJhbWVzQnlYUGF0
aChkcml2ZXIsIHBhZ2VzKToKICAgICBwYWdlcy5sb2FkKCJpZnJhbWVzLmh0bWwiKQotICAgIGRy
aXZlci5zd2l0Y2hfdG8uZnJhbWUoZHJpdmVyLmZpbmRfZWxlbWVudF9ieV9pZCgiaWZyYW1lMSIp
KQorICAgIGRyaXZlci5zd2l0Y2hfdG8uZnJhbWUoZHJpdmVyLmZpbmRfZWxlbWVudChCeS5JRCwg
ImlmcmFtZTEiKSkKICAgICBlbGVtZW50ID0gZHJpdmVyLmZpbmRfZWxlbWVudChCeS5YUEFUSCwg
Ii8vKltAaWQgPSAnY2hhbmdlbWUnXSIpCiAgICAgYXNzZXJ0IGVsZW1lbnQgaXMgbm90IE5vbmUK
IApAQCAtMzA2LDIwICszMDgsMjAgQEAgZGVmIHRlc3RTaG91bGRCZUFibGVUb0ZpbmRFbGVtZW50
c0luSWZyYW1lc0J5WFBhdGgoZHJpdmVyLCBwYWdlcyk6CiBkZWYgdGVzdEdldEN1cnJlbnRVcmxS
ZXR1cm5zVG9wTGV2ZWxCcm93c2luZ0NvbnRleHRVcmwoZHJpdmVyLCBwYWdlcyk6CiAgICAgcGFn
ZXMubG9hZCgiZnJhbWVzZXQuaHRtbCIpCiAgICAgYXNzZXJ0ICJmcmFtZXNldC5odG1sIiBpbiBk
cml2ZXIuY3VycmVudF91cmwKLSAgICBkcml2ZXIuc3dpdGNoX3RvLmZyYW1lKGRyaXZlci5maW5k
X2VsZW1lbnRfYnlfbmFtZSgic2Vjb25kIikpCisgICAgZHJpdmVyLnN3aXRjaF90by5mcmFtZShk
cml2ZXIuZmluZF9lbGVtZW50KEJ5Lk5BTUUsICJzZWNvbmQiKSkKICAgICBhc3NlcnQgImZyYW1l
c2V0Lmh0bWwiIGluIGRyaXZlci5jdXJyZW50X3VybAogCiAKIGRlZiB0ZXN0R2V0Q3VycmVudFVy
bFJldHVybnNUb3BMZXZlbEJyb3dzaW5nQ29udGV4dFVybEZvcklmcmFtZXMoZHJpdmVyLCBwYWdl
cyk6CiAgICAgcGFnZXMubG9hZCgiaWZyYW1lcy5odG1sIikKICAgICBhc3NlcnQgImlmcmFtZXMu
aHRtbCIgaW4gZHJpdmVyLmN1cnJlbnRfdXJsCi0gICAgZHJpdmVyLnN3aXRjaF90by5mcmFtZShk
cml2ZXIuZmluZF9lbGVtZW50X2J5X2lkKCJpZnJhbWUxIikpCisgICAgZHJpdmVyLnN3aXRjaF90
by5mcmFtZShkcml2ZXIuZmluZF9lbGVtZW50KEJ5LklELCAiaWZyYW1lMSIpKQogICAgIGFzc2Vy
dCAiaWZyYW1lcy5odG1sIiBpbiBkcml2ZXIuY3VycmVudF91cmwKIAogCiBkZWYgdGVzdFNob3Vs
ZEJlQWJsZVRvU3dpdGNoVG9UaGVUb3BJZlRoZUZyYW1lSXNEZWxldGVkRnJvbVVuZGVyVXMoZHJp
dmVyLCBwYWdlcyk6CiAgICAgcGFnZXMubG9hZCgiZnJhbWVfc3dpdGNoaW5nX3Rlc3RzL2RlbGV0
aW5nRnJhbWUuaHRtbCIpCi0gICAgZHJpdmVyLnN3aXRjaF90by5mcmFtZShkcml2ZXIuZmluZF9l
bGVtZW50X2J5X2lkKCJpZnJhbWUxIikpCisgICAgZHJpdmVyLnN3aXRjaF90by5mcmFtZShkcml2
ZXIuZmluZF9lbGVtZW50KEJ5LklELCAiaWZyYW1lMSIpKQogCiAgICAga2lsbElmcmFtZSA9IGRy
aXZlci5maW5kX2VsZW1lbnQoQnkuSUQsICJraWxsSWZyYW1lIikKICAgICBraWxsSWZyYW1lLmNs
aWNrKCkKQEAgLTMzMCw3ICszMzIsNyBAQCBkZWYgdGVzdFNob3VsZEJlQWJsZVRvU3dpdGNoVG9U
aGVUb3BJZlRoZUZyYW1lSXNEZWxldGVkRnJvbVVuZGVyVXMoZHJpdmVyLCBwYWdlcwogICAgIGFk
ZElGcmFtZSA9IGRyaXZlci5maW5kX2VsZW1lbnQoQnkuSUQsICJhZGRCYWNrRnJhbWUiKQogICAg
IGFkZElGcmFtZS5jbGljaygpCiAgICAgV2ViRHJpdmVyV2FpdChkcml2ZXIsIDMpLnVudGlsKEVD
LnByZXNlbmNlX29mX2VsZW1lbnRfbG9jYXRlZCgoQnkuSUQsICJpZnJhbWUxIikpKQotICAgIGRy
aXZlci5zd2l0Y2hfdG8uZnJhbWUoZHJpdmVyLmZpbmRfZWxlbWVudF9ieV9pZCgiaWZyYW1lMSIp
KQorICAgIGRyaXZlci5zd2l0Y2hfdG8uZnJhbWUoZHJpdmVyLmZpbmRfZWxlbWVudChCeS5JRCwg
ImlmcmFtZTEiKSkKICAgICBXZWJEcml2ZXJXYWl0KGRyaXZlciwgMykudW50aWwoRUMucHJlc2Vu
Y2Vfb2ZfZWxlbWVudF9sb2NhdGVkKChCeS5JRCwgInN1Y2Nlc3MiKSkpCiAKIApAQCAtMzY4LDE0
ICszNzAsMTUgQEAgZGVmIHRlc3RTaG91bGRCZUFibGVUb1N3aXRjaFRvVGhlVG9wSWZUaGVGcmFt
ZUlzRGVsZXRlZEZyb21VbmRlclVzV2l0aFdlYmVsZW1lbnQKIAogQHB5dGVzdC5tYXJrLnhmYWls
X2Nocm9tZShyYWlzZXM9Tm9TdWNoRWxlbWVudEV4Y2VwdGlvbikKIEBweXRlc3QubWFyay54ZmFp
bF9jaHJvbWl1bWVkZ2UocmFpc2VzPU5vU3VjaEVsZW1lbnRFeGNlcHRpb24pCi1AcHl0ZXN0Lm1h
cmsueGZhaWxfbWFyaW9uZXR0ZShyYWlzZXM9V2ViRHJpdmVyRXhjZXB0aW9uLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmVhc29uPSdodHRwczovL2dpdGh1Yi5jb20vbW96aWxsYS9n
ZWNrb2RyaXZlci9pc3N1ZXMvNjE0JykKK0BweXRlc3QubWFyay54ZmFpbF9maXJlZm94KHJhaXNl
cz1XZWJEcml2ZXJFeGNlcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFzb249
J2h0dHBzOi8vZ2l0aHViLmNvbS9tb3ppbGxhL2dlY2tvZHJpdmVyL2lzc3Vlcy82MTQnKQogQHB5
dGVzdC5tYXJrLnhmYWlsX3JlbW90ZShyYWlzZXM9V2ViRHJpdmVyRXhjZXB0aW9uLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICByZWFzb249J2h0dHBzOi8vZ2l0aHViLmNvbS9tb3ppbGxhL2dl
Y2tvZHJpdmVyL2lzc3Vlcy82MTQnKQogQHB5dGVzdC5tYXJrLnhmYWlsX3dlYmtpdGd0ayhyYWlz
ZXM9Tm9TdWNoRWxlbWVudEV4Y2VwdGlvbikKK0BweXRlc3QubWFyay54ZmFpbF9zYWZhcmkKIGRl
ZiB0ZXN0U2hvdWxkTm90QmVBYmxlVG9Eb0FueXRoaW5nVGhlRnJhbWVJc0RlbGV0ZWRGcm9tVW5k
ZXJVcyhkcml2ZXIsIHBhZ2VzKToKICAgICBwYWdlcy5sb2FkKCJmcmFtZV9zd2l0Y2hpbmdfdGVz
dHMvZGVsZXRpbmdGcmFtZS5odG1sIikKLSAgICBkcml2ZXIuc3dpdGNoX3RvLmZyYW1lKGRyaXZl
ci5maW5kX2VsZW1lbnRfYnlfaWQoImlmcmFtZTEiKSkKKyAgICBkcml2ZXIuc3dpdGNoX3RvLmZy
YW1lKGRyaXZlci5maW5kX2VsZW1lbnQoQnkuSUQsICJpZnJhbWUxIikpCiAKICAgICBraWxsSWZy
YW1lID0gZHJpdmVyLmZpbmRfZWxlbWVudChCeS5JRCwgImtpbGxJZnJhbWUiKQogICAgIGtpbGxJ
ZnJhbWUuY2xpY2soKQpAQCAtMzg2LDcgKzM4OSw3IEBAIGRlZiB0ZXN0U2hvdWxkTm90QmVBYmxl
VG9Eb0FueXRoaW5nVGhlRnJhbWVJc0RlbGV0ZWRGcm9tVW5kZXJVcyhkcml2ZXIsIHBhZ2VzKToK
IAogZGVmIHRlc3RTaG91bGRSZXR1cm5XaW5kb3dUaXRsZUluQUZyYW1lc2V0KGRyaXZlciwgcGFn
ZXMpOgogICAgIHBhZ2VzLmxvYWQoImZyYW1lc2V0Lmh0bWwiKQotICAgIGRyaXZlci5zd2l0Y2hf
dG8uZnJhbWUoZHJpdmVyLmZpbmRfZWxlbWVudF9ieV9uYW1lKCJ0aGlyZCIpKQorICAgIGRyaXZl
ci5zd2l0Y2hfdG8uZnJhbWUoZHJpdmVyLmZpbmRfZWxlbWVudChCeS5OQU1FLCAidGhpcmQiKSkK
ICAgICBhc3NlcnQgIlVuaXF1ZSB0aXRsZSIgPT0gZHJpdmVyLnRpdGxlCiAKIApAQCAtMzk4LDYg
KzQwMSw3IEBAIGRlZiB0ZXN0SmF2YVNjcmlwdFNob3VsZEV4ZWN1dGVJblRoZUNvbnRleHRPZlRo
ZUN1cnJlbnRGcmFtZShkcml2ZXIsIHBhZ2VzKToKIAogCiBAcHl0ZXN0Lm1hcmsueGZhaWxfY2hy
b21lKHJlYXNvbj0iRmFpbHMgb24gVHJhdmlzIikKK0BweXRlc3QubWFyay54ZmFpbF9zYWZhcmkK
IGRlZiB0ZXN0U2hvdWxkTm90U3dpdGNoTWFnaWNhbGx5VG9UaGVUb3BXaW5kb3coZHJpdmVyLCBw
YWdlcyk6CiAgICAgcGFnZXMubG9hZCgiZnJhbWVfc3dpdGNoaW5nX3Rlc3RzL2J1ZzQ4NzYuaHRt
bCIpCiAgICAgZHJpdmVyLnN3aXRjaF90by5mcmFtZSgwKQpkaWZmIC0tZ2l0IGEvV2ViRHJpdmVy
VGVzdHMvaW1wb3J0ZWQvc2VsZW5pdW0vcHkvdGVzdC9zZWxlbml1bS93ZWJkcml2ZXIvY29tbW9u
L2dvb2dsZV9vbmVfYm94LnB5IGIvV2ViRHJpdmVyVGVzdHMvaW1wb3J0ZWQvc2VsZW5pdW0vcHkv
dGVzdC9zZWxlbml1bS93ZWJkcml2ZXIvY29tbW9uL2dvb2dsZV9vbmVfYm94LnB5CmluZGV4IGZl
NTdhMTg0YzA2MDMzNDEwY2ZiNmU1OGM3OGJiNDgxNDc1ZmU0ZmIuLmZkYWRkZTgyZDMzNmYzNTc5
NjFmMjcyYjBjMDNhZjNkM2RjNzcyZmUgMTAwNjQ0Ci0tLSBhL1dlYkRyaXZlclRlc3RzL2ltcG9y
dGVkL3NlbGVuaXVtL3B5L3Rlc3Qvc2VsZW5pdW0vd2ViZHJpdmVyL2NvbW1vbi9nb29nbGVfb25l
X2JveC5weQorKysgYi9XZWJEcml2ZXJUZXN0cy9pbXBvcnRlZC9zZWxlbml1bS9weS90ZXN0L3Nl
bGVuaXVtL3dlYmRyaXZlci9jb21tb24vZ29vZ2xlX29uZV9ib3gucHkKQEAgLTE2LDYgKzE2LDcg
QEAKICMgdW5kZXIgdGhlIExpY2Vuc2UuCiAKIGZyb20gc2VsZW5pdW0uY29tbW9uLmV4Y2VwdGlv
bnMgaW1wb3J0IE5vU3VjaEVsZW1lbnRFeGNlcHRpb24KK2Zyb20gc2VsZW5pdW0ud2ViZHJpdmVy
LmNvbW1vbi5ieSBpbXBvcnQgQnkKIGZyb20gcmVzdWx0c19wYWdlIGltcG9ydCBSZXN1bHRzUGFn
ZQogZnJvbSBwYWdlX2xvYWRlciBpbXBvcnQgcmVxdWlyZV9sb2FkZWQKIApAQCAtMjksNyArMzAs
NyBAQCBjbGFzcyBHb29nbGVPbmVCb3gob2JqZWN0KToKIAogICAgIGRlZiBpc19sb2FkZWQoc2Vs
Zik6CiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuX2RyaXZlci5maW5kX2VsZW1lbnRf
YnlfbmFtZSgicSIpCisgICAgICAgICAgICBzZWxmLl9kcml2ZXIuZmluZF9lbGVtZW4oQnkuTkFN
RSwgInEiKQogICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAgICAgZXhjZXB0IE5vU3VjaEVs
ZW1lbnRFeGNlcHRpb246CiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKQEAgLTM5LDcgKzQwLDcg
QEAgY2xhc3MgR29vZ2xlT25lQm94KG9iamVjdCk6CiAKICAgICBAcmVxdWlyZV9sb2FkZWQKICAg
ICBkZWYgc2VhcmNoX2ZvcihzZWxmLCBzZWFyY2hfdGVybSk6Ci0gICAgICAgIGVsZW1lbnQgPSBz
ZWxmLl9kcml2ZXIuZmluZF9lbGVtZW50X2J5X25hbWUoInEiKQorICAgICAgICBlbGVtZW50ID0g
c2VsZi5fZHJpdmVyLmZpbmRfZWxlbWVudChCeS5OQU1FLCAicSIpCiAgICAgICAgIGVsZW1lbnQu
c2VuZF9rZXlzKHNlYXJjaF90ZXJtKQogICAgICAgICBlbGVtZW50LnN1Ym1pdCgpCiAgICAgICAg
IHJldHVybiBSZXN1bHRzUGFnZShzZWxmLl9kcml2ZXIpCmRpZmYgLS1naXQgYS9XZWJEcml2ZXJU
ZXN0cy9pbXBvcnRlZC9zZWxlbml1bS9weS90ZXN0L3NlbGVuaXVtL3dlYmRyaXZlci9jb21tb24v
aW1wbGljaXRfd2FpdHNfdGVzdHMucHkgYi9XZWJEcml2ZXJUZXN0cy9pbXBvcnRlZC9zZWxlbml1
bS9weS90ZXN0L3NlbGVuaXVtL3dlYmRyaXZlci9jb21tb24vaW1wbGljaXRfd2FpdHNfdGVzdHMu
cHkKaW5kZXggMmUzMDUyNTI1MTQwYjEwMjA1NmFjZGRmZDcxNGJlMGYwYzE5N2EzNi4uYzZlNTAx
NjNiY2M4NGE2Y2Q5YzdkZGEzMjY4MzI2NWE1NTc4OWI1NSAxMDA2NDQKLS0tIGEvV2ViRHJpdmVy
VGVzdHMvaW1wb3J0ZWQvc2VsZW5pdW0vcHkvdGVzdC9zZWxlbml1bS93ZWJkcml2ZXIvY29tbW9u
L2ltcGxpY2l0X3dhaXRzX3Rlc3RzLnB5CisrKyBiL1dlYkRyaXZlclRlc3RzL2ltcG9ydGVkL3Nl
bGVuaXVtL3B5L3Rlc3Qvc2VsZW5pdW0vd2ViZHJpdmVyL2NvbW1vbi9pbXBsaWNpdF93YWl0c190
ZXN0cy5weQpAQCAtMTgsMjEgKzE4LDIyIEBACiBpbXBvcnQgcHl0ZXN0CiAKIGZyb20gc2VsZW5p
dW0uY29tbW9uLmV4Y2VwdGlvbnMgaW1wb3J0IE5vU3VjaEVsZW1lbnRFeGNlcHRpb24KK2Zyb20g
c2VsZW5pdW0ud2ViZHJpdmVyLmNvbW1vbi5ieSBpbXBvcnQgQnkKIAogCiBkZWYgdGVzdFNob3Vs
ZEltcGxpY2l0bHlXYWl0Rm9yQVNpbmdsZUVsZW1lbnQoZHJpdmVyLCBwYWdlcyk6CiAgICAgcGFn
ZXMubG9hZCgiZHluYW1pYy5odG1sIikKLSAgICBhZGQgPSBkcml2ZXIuZmluZF9lbGVtZW50X2J5
X2lkKCJhZGRlciIpCisgICAgYWRkID0gZHJpdmVyLmZpbmRfZWxlbWVudChCeS5JRCwgImFkZGVy
IikKICAgICBkcml2ZXIuaW1wbGljaXRseV93YWl0KDMpCiAgICAgYWRkLmNsaWNrKCkKLSAgICBk
cml2ZXIuZmluZF9lbGVtZW50X2J5X2lkKCJib3gwIikgICMgQWxsIGlzIHdlbGwgaWYgdGhpcyBk
b2Vzbid0IHRocm93LgorICAgIGRyaXZlci5maW5kX2VsZW1lbnQoQnkuSUQsICJib3gwIikgICMg
QWxsIGlzIHdlbGwgaWYgdGhpcyBkb2Vzbid0IHRocm93LgogCiAKIGRlZiB0ZXN0U2hvdWxkU3Rp
bGxGYWlsVG9GaW5kQW5FbGVtZW50V2hlbkltcGxpY2l0V2FpdHNBcmVFbmFibGVkKGRyaXZlciwg
cGFnZXMpOgogICAgIHBhZ2VzLmxvYWQoImR5bmFtaWMuaHRtbCIpCiAgICAgZHJpdmVyLmltcGxp
Y2l0bHlfd2FpdCgwLjUpCiAgICAgd2l0aCBweXRlc3QucmFpc2VzKE5vU3VjaEVsZW1lbnRFeGNl
cHRpb24pOgotICAgICAgICBkcml2ZXIuZmluZF9lbGVtZW50X2J5X2lkKCJib3gwIikKKyAgICAg
ICAgZHJpdmVyLmZpbmRfZWxlbWVudChCeS5JRCwgImJveDAiKQogCiAKIGRlZiB0ZXN0U2hvdWxk
UmV0dXJuQWZ0ZXJGaXJzdEF0dGVtcHRUb0ZpbmRPbmVBZnRlckRpc2FibGluZ0ltcGxpY2l0V2Fp
dHMoZHJpdmVyLCBwYWdlcyk6CkBAIC00MCwxOCArNDEsMTggQEAgZGVmIHRlc3RTaG91bGRSZXR1
cm5BZnRlckZpcnN0QXR0ZW1wdFRvRmluZE9uZUFmdGVyRGlzYWJsaW5nSW1wbGljaXRXYWl0cyhk
cml2ZXIKICAgICBkcml2ZXIuaW1wbGljaXRseV93YWl0KDMpCiAgICAgZHJpdmVyLmltcGxpY2l0
bHlfd2FpdCgwKQogICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhOb1N1Y2hFbGVtZW50RXhjZXB0aW9u
KToKLSAgICAgICAgZHJpdmVyLmZpbmRfZWxlbWVudF9ieV9pZCgiYm94MCIpCisgICAgICAgIGRy
aXZlci5maW5kX2VsZW1lbnQoQnkuSUQsICJib3gwIikKIAogCiBkZWYgdGVzdFNob3VsZEltcGxp
Y2l0bHlXYWl0VW50aWxBdExlYXN0T25lRWxlbWVudElzRm91bmRXaGVuU2VhcmNoaW5nRm9yTWFu
eShkcml2ZXIsIHBhZ2VzKToKICAgICBwYWdlcy5sb2FkKCJkeW5hbWljLmh0bWwiKQotICAgIGFk
ZCA9IGRyaXZlci5maW5kX2VsZW1lbnRfYnlfaWQoImFkZGVyIikKKyAgICBhZGQgPSBkcml2ZXIu
ZmluZF9lbGVtZW50KEJ5LklELCAiYWRkZXIiKQogCiAgICAgZHJpdmVyLmltcGxpY2l0bHlfd2Fp
dCgyKQogICAgIGFkZC5jbGljaygpCiAgICAgYWRkLmNsaWNrKCkKIAotICAgIGVsZW1lbnRzID0g
ZHJpdmVyLmZpbmRfZWxlbWVudHNfYnlfY2xhc3NfbmFtZSgicmVkYm94IikKKyAgICBlbGVtZW50
cyA9IGRyaXZlci5maW5kX2VsZW1lbnRzKEJ5LkNMQVNTX05BTUUsICJyZWRib3giKQogICAgIGFz
c2VydCBsZW4oZWxlbWVudHMpID49IDEKIAogCkBAIC01OSwxNSArNjAsMTUgQEAgZGVmIHRlc3RT
aG91bGRTdGlsbEZhaWxUb0ZpbmRBbkVsZW1lbnN0V2hlbkltcGxpY2l0V2FpdHNBcmVFbmFibGVk
KGRyaXZlciwgcGFnZXMKICAgICBwYWdlcy5sb2FkKCJkeW5hbWljLmh0bWwiKQogCiAgICAgZHJp
dmVyLmltcGxpY2l0bHlfd2FpdCgwLjUpCi0gICAgZWxlbWVudHMgPSBkcml2ZXIuZmluZF9lbGVt
ZW50c19ieV9jbGFzc19uYW1lKCJyZWRib3giKQorICAgIGVsZW1lbnRzID0gZHJpdmVyLmZpbmRf
ZWxlbWVudHMoQnkuQ0xBU1NfTkFNRSwgInJlZGJveCIpCiAgICAgYXNzZXJ0IDAgPT0gbGVuKGVs
ZW1lbnRzKQogCiAKIGRlZiB0ZXN0U2hvdWxkUmV0dXJuQWZ0ZXJGaXJzdEF0dGVtcHRUb0ZpbmRN
YW55QWZ0ZXJEaXNhYmxpbmdJbXBsaWNpdFdhaXRzKGRyaXZlciwgcGFnZXMpOgogICAgIHBhZ2Vz
LmxvYWQoImR5bmFtaWMuaHRtbCIpCi0gICAgYWRkID0gZHJpdmVyLmZpbmRfZWxlbWVudF9ieV9p
ZCgiYWRkZXIiKQorICAgIGFkZCA9IGRyaXZlci5maW5kX2VsZW1lbnQoQnkuSUQsICJhZGRlciIp
CiAgICAgZHJpdmVyLmltcGxpY2l0bHlfd2FpdCgxLjEpCiAgICAgZHJpdmVyLmltcGxpY2l0bHlf
d2FpdCgwKQogICAgIGFkZC5jbGljaygpCi0gICAgZWxlbWVudHMgPSBkcml2ZXIuZmluZF9lbGVt
ZW50c19ieV9jbGFzc19uYW1lKCJyZWRib3giKQorICAgIGVsZW1lbnRzID0gZHJpdmVyLmZpbmRf
ZWxlbWVudHMoQnkuQ0xBU1NfTkFNRSwgInJlZGJveCIpCiAgICAgYXNzZXJ0IDAgPT0gbGVuKGVs
ZW1lbnRzKQpkaWZmIC0tZ2l0IGEvV2ViRHJpdmVyVGVzdHMvaW1wb3J0ZWQvc2VsZW5pdW0vcHkv
dGVzdC9zZWxlbml1bS93ZWJkcml2ZXIvY29tbW9uL2ludGVyYWN0aW9uc190ZXN0cy5weSBiL1dl
YkRyaXZlclRlc3RzL2ltcG9ydGVkL3NlbGVuaXVtL3B5L3Rlc3Qvc2VsZW5pdW0vd2ViZHJpdmVy
L2NvbW1vbi9pbnRlcmFjdGlvbnNfdGVzdHMucHkKaW5kZXggZTBkMzFkNTMzZWY4NjMyMGI1MTEy
OTc2MDE4M2FkNDBkMDhiMWU4OC4uODM4NDUxMTlhZTE5NWI0NDQwOGQ2OWI0ZTY1M2JkODgwM2Q5
OGY5MCAxMDA2NDQKLS0tIGEvV2ViRHJpdmVyVGVzdHMvaW1wb3J0ZWQvc2VsZW5pdW0vcHkvdGVz
dC9zZWxlbml1bS93ZWJkcml2ZXIvY29tbW9uL2ludGVyYWN0aW9uc190ZXN0cy5weQorKysgYi9X
ZWJEcml2ZXJUZXN0cy9pbXBvcnRlZC9zZWxlbml1bS9weS90ZXN0L3NlbGVuaXVtL3dlYmRyaXZl
ci9jb21tb24vaW50ZXJhY3Rpb25zX3Rlc3RzLnB5CkBAIC0xOCw2ICsxOCw3IEBACiAiIiJUZXN0
cyBmb3IgYWR2YW5jZWQgdXNlciBpbnRlcmFjdGlvbnMuIiIiCiBpbXBvcnQgcHl0ZXN0CiAKK2Zy
b20gc2VsZW5pdW0ud2ViZHJpdmVyLmNvbW1vbi5ieSBpbXBvcnQgQnkKIGZyb20gc2VsZW5pdW0u
d2ViZHJpdmVyLmNvbW1vbi5rZXlzIGltcG9ydCBLZXlzCiBmcm9tIHNlbGVuaXVtLndlYmRyaXZl
ci5jb21tb24uYWN0aW9uX2NoYWlucyBpbXBvcnQgQWN0aW9uQ2hhaW5zCiBmcm9tIHNlbGVuaXVt
LndlYmRyaXZlci5zdXBwb3J0LnVpIGltcG9ydCBXZWJEcml2ZXJXYWl0CkBAIC0yNiwxMyArMjcs
MTMgQEAgZnJvbSBzZWxlbml1bS53ZWJkcml2ZXIuc3VwcG9ydC51aSBpbXBvcnQgV2ViRHJpdmVy
V2FpdAogZGVmIHBlcmZvcm1EcmFnQW5kRHJvcFdpdGhNb3VzZShkcml2ZXIsIHBhZ2VzKToKICAg
ICAiIiJDb3BpZWQgZnJvbSBvcmcub3BlbnFhLnNlbGVuaXVtLmludGVyYWN0aW9ucy5UZXN0QmFz
aWNNb3VzZUludGVyZmFjZS4iIiIKICAgICBwYWdlcy5sb2FkKCJkcmFnZ2FibGVMaXN0cy5odG1s
IikKLSAgICBkcmFnUmVwb3J0ZXIgPSBkcml2ZXIuZmluZF9lbGVtZW50X2J5X2lkKCJkcmFnZ2lu
Z19yZXBvcnRzIikKLSAgICB0b0RyYWcgPSBkcml2ZXIuZmluZF9lbGVtZW50X2J5X2lkKCJyaWdo
dGl0ZW0tMyIpCi0gICAgZHJhZ0ludG8gPSBkcml2ZXIuZmluZF9lbGVtZW50X2J5X2lkKCJzb3J0
YWJsZTEiKQorICAgIGRyYWdSZXBvcnRlciA9IGRyaXZlci5maW5kX2VsZW1lbnQoQnkuSUQsICJk
cmFnZ2luZ19yZXBvcnRzIikKKyAgICB0b0RyYWcgPSBkcml2ZXIuZmluZF9lbGVtZW50KEJ5LklE
LCAicmlnaHRpdGVtLTMiKQorICAgIGRyYWdJbnRvID0gZHJpdmVyLmZpbmRfZWxlbWVudChCeS5J
RCwgInNvcnRhYmxlMSIpCiAKICAgICBob2xkSXRlbSA9IEFjdGlvbkNoYWlucyhkcml2ZXIpLmNs
aWNrX2FuZF9ob2xkKHRvRHJhZykKICAgICBtb3ZlVG9TcGVjaWZpY0l0ZW0gPSBBY3Rpb25DaGFp
bnMoZHJpdmVyKSBcCi0gICAgICAgIC5tb3ZlX3RvX2VsZW1lbnQoZHJpdmVyLmZpbmRfZWxlbWVu
dF9ieV9pZCgibGVmdGl0ZW0tNCIpKQorICAgICAgICAubW92ZV90b19lbGVtZW50KGRyaXZlci5m
aW5kX2VsZW1lbnQoQnkuSUQsICJsZWZ0aXRlbS00IikpCiAgICAgbW92ZVRvT3RoZXJMaXN0ID0g
QWN0aW9uQ2hhaW5zKGRyaXZlcikubW92ZV90b19lbGVtZW50KGRyYWdJbnRvKQogICAgIGRyb3Ag
PSBBY3Rpb25DaGFpbnMoZHJpdmVyKS5yZWxlYXNlKGRyYWdJbnRvKQogICAgIGFzc2VydCAiTm90
aGluZyBoYXBwZW5lZC4iID09IGRyYWdSZXBvcnRlci50ZXh0CkBAIC00NSwyOSArNDYsMzIgQEAg
ZGVmIHBlcmZvcm1EcmFnQW5kRHJvcFdpdGhNb3VzZShkcml2ZXIsIHBhZ2VzKToKICAgICBkcm9w
LnBlcmZvcm0oKQogCiAKK0BweXRlc3QubWFyay54ZmFpbF9zYWZhcmkKIGRlZiB0ZXN0RHJhZ2dp
bmdFbGVtZW50V2l0aE1vdXNlTW92ZXNJdFRvQW5vdGhlckxpc3QoZHJpdmVyLCBwYWdlcyk6CiAg
ICAgIiIiQ29waWVkIGZyb20gb3JnLm9wZW5xYS5zZWxlbml1bS5pbnRlcmFjdGlvbnMuVGVzdEJh
c2ljTW91c2VJbnRlcmZhY2UuIiIiCiAgICAgcGVyZm9ybURyYWdBbmREcm9wV2l0aE1vdXNlKGRy
aXZlciwgcGFnZXMpCi0gICAgZHJhZ0ludG8gPSBkcml2ZXIuZmluZF9lbGVtZW50X2J5X2lkKCJz
b3J0YWJsZTEiKQotICAgIGFzc2VydCA2ID09IGxlbihkcmFnSW50by5maW5kX2VsZW1lbnRzX2J5
X3RhZ19uYW1lKCJsaSIpKQorICAgIGRyYWdJbnRvID0gZHJpdmVyLmZpbmRfZWxlbWVudChCeS5J
RCwgInNvcnRhYmxlMSIpCisgICAgYXNzZXJ0IDYgPT0gbGVuKGRyYWdJbnRvLmZpbmRfZWxlbWVu
dHMoQnkuVEFHX05BTUUsICJsaSIpKQogCiAKK0BweXRlc3QubWFyay54ZmFpbF9zYWZhcmkKIGRl
ZiB0ZXN0RHJhZ2dpbmdFbGVtZW50V2l0aE1vdXNlRmlyZXNFdmVudHMoZHJpdmVyLCBwYWdlcyk6
CiAgICAgIiIiQ29waWVkIGZyb20gb3JnLm9wZW5xYS5zZWxlbml1bS5pbnRlcmFjdGlvbnMuVGVz
dEJhc2ljTW91c2VJbnRlcmZhY2UuIiIiCiAgICAgcGVyZm9ybURyYWdBbmREcm9wV2l0aE1vdXNl
KGRyaXZlciwgcGFnZXMpCi0gICAgZHJhZ1JlcG9ydGVyID0gZHJpdmVyLmZpbmRfZWxlbWVudF9i
eV9pZCgiZHJhZ2dpbmdfcmVwb3J0cyIpCisgICAgZHJhZ1JlcG9ydGVyID0gZHJpdmVyLmZpbmRf
ZWxlbWVudChCeS5JRCwgImRyYWdnaW5nX3JlcG9ydHMiKQogICAgIGFzc2VydCAiTm90aGluZyBo
YXBwZW5lZC4gRHJhZ091dCBEcm9wSW4gUmlnaHRJdGVtIDMiID09IGRyYWdSZXBvcnRlci50ZXh0
CiAKIAogZGVmIF9pc0VsZW1lbnRBdmFpbGFibGUoZHJpdmVyLCBpZCk6CiAgICAgIiIiQ29waWVk
IGZyb20gb3JnLm9wZW5xYS5zZWxlbml1bS5pbnRlcmFjdGlvbnMuVGVzdEJhc2ljTW91c2VJbnRl
cmZhY2UuIiIiCiAgICAgdHJ5OgotICAgICAgICBkcml2ZXIuZmluZF9lbGVtZW50X2J5X2lkKGlk
KQorICAgICAgICBkcml2ZXIuZmluZF9lbGVtZW50KEJ5LklELCBpZCkKICAgICAgICAgcmV0dXJu
IFRydWUKICAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICByZXR1cm4gRmFsc2UKIAogCitA
cHl0ZXN0Lm1hcmsueGZhaWxfc2FmYXJpCiBkZWYgdGVzdERyYWdBbmREcm9wKGRyaXZlciwgcGFn
ZXMpOgogICAgICIiIkNvcGllZCBmcm9tIG9yZy5vcGVucWEuc2VsZW5pdW0uaW50ZXJhY3Rpb25z
LlRlc3RCYXNpY01vdXNlSW50ZXJmYWNlLiIiIgogICAgIGVsZW1lbnRfYXZhaWxhYmxlX3RpbWVv
dXQgPSAxNQpAQCAtNzgsOCArODIsOCBAQCBkZWYgdGVzdERyYWdBbmREcm9wKGRyaXZlciwgcGFn
ZXMpOgogICAgIGlmIG5vdCBfaXNFbGVtZW50QXZhaWxhYmxlKGRyaXZlciwgImRyYWdnYWJsZSIp
OgogICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcigiQ291bGQgbm90IGZpbmQgZHJhZ2dhYmxl
IGVsZW1lbnQgYWZ0ZXIgMTUgc2Vjb25kcy4iKQogCi0gICAgdG9EcmFnID0gZHJpdmVyLmZpbmRf
ZWxlbWVudF9ieV9pZCgiZHJhZ2dhYmxlIikKLSAgICBkcm9wSW50byA9IGRyaXZlci5maW5kX2Vs
ZW1lbnRfYnlfaWQoImRyb3BwYWJsZSIpCisgICAgdG9EcmFnID0gZHJpdmVyLmZpbmRfZWxlbWVu
dChCeS5JRCwgImRyYWdnYWJsZSIpCisgICAgZHJvcEludG8gPSBkcml2ZXIuZmluZF9lbGVtZW50
KEJ5LklELCAiZHJvcHBhYmxlIikKIAogICAgIGhvbGREcmFnID0gQWN0aW9uQ2hhaW5zKGRyaXZl
cikgXAogICAgICAgICAuY2xpY2tfYW5kX2hvbGQodG9EcmFnKQpAQCAtOTEsMTUgKzk1LDE2IEBA
IGRlZiB0ZXN0RHJhZ0FuZERyb3AoZHJpdmVyLCBwYWdlcyk6CiAgICAgbW92ZS5wZXJmb3JtKCkK
ICAgICBkcm9wLnBlcmZvcm0oKQogCi0gICAgZHJvcEludG8gPSBkcml2ZXIuZmluZF9lbGVtZW50
X2J5X2lkKCJkcm9wcGFibGUiKQotICAgIHRleHQgPSBkcm9wSW50by5maW5kX2VsZW1lbnRfYnlf
dGFnX25hbWUoInAiKS50ZXh0CisgICAgZHJvcEludG8gPSBkcml2ZXIuZmluZF9lbGVtZW50KEJ5
LklELCAiZHJvcHBhYmxlIikKKyAgICB0ZXh0ID0gZHJvcEludG8uZmluZF9lbGVtZW50KEJ5LlRB
R19OQU1FLCAicCIpLnRleHQKICAgICBhc3NlcnQgIkRyb3BwZWQhIiA9PSB0ZXh0CiAKIAorQHB5
dGVzdC5tYXJrLnhmYWlsX3NhZmFyaQogZGVmIHRlc3REb3VibGVDbGljayhkcml2ZXIsIHBhZ2Vz
KToKICAgICAiIiJDb3BpZWQgZnJvbSBvcmcub3BlbnFhLnNlbGVuaXVtLmludGVyYWN0aW9ucy5U
ZXN0QmFzaWNNb3VzZUludGVyZmFjZS4iIiIKICAgICBwYWdlcy5sb2FkKCJqYXZhc2NyaXB0UGFn
ZS5odG1sIikKLSAgICB0b0RvdWJsZUNsaWNrID0gZHJpdmVyLmZpbmRfZWxlbWVudF9ieV9pZCgi
ZG91YmxlQ2xpY2tGaWVsZCIpCisgICAgdG9Eb3VibGVDbGljayA9IGRyaXZlci5maW5kX2VsZW1l
bnQoQnkuSUQsICJkb3VibGVDbGlja0ZpZWxkIikKIAogICAgIGRibENsaWNrID0gQWN0aW9uQ2hh
aW5zKGRyaXZlcikgXAogICAgICAgICAuZG91YmxlX2NsaWNrKHRvRG91YmxlQ2xpY2spCkBAIC0x
MTEsNyArMTE2LDcgQEAgZGVmIHRlc3REb3VibGVDbGljayhkcml2ZXIsIHBhZ2VzKToKIGRlZiB0
ZXN0Q29udGV4dENsaWNrKGRyaXZlciwgcGFnZXMpOgogICAgICIiIkNvcGllZCBmcm9tIG9yZy5v
cGVucWEuc2VsZW5pdW0uaW50ZXJhY3Rpb25zLlRlc3RCYXNpY01vdXNlSW50ZXJmYWNlLiIiIgog
ICAgIHBhZ2VzLmxvYWQoImphdmFzY3JpcHRQYWdlLmh0bWwiKQotICAgIHRvQ29udGV4dENsaWNr
ID0gZHJpdmVyLmZpbmRfZWxlbWVudF9ieV9pZCgiZG91YmxlQ2xpY2tGaWVsZCIpCisgICAgdG9D
b250ZXh0Q2xpY2sgPSBkcml2ZXIuZmluZF9lbGVtZW50KEJ5LklELCAiZG91YmxlQ2xpY2tGaWVs
ZCIpCiAKICAgICBjb250ZXh0Q2xpY2sgPSBBY3Rpb25DaGFpbnMoZHJpdmVyKSBcCiAgICAgICAg
IC5jb250ZXh0X2NsaWNrKHRvQ29udGV4dENsaWNrKQpAQCAtMTIzLDcgKzEyOCw3IEBAIGRlZiB0
ZXN0Q29udGV4dENsaWNrKGRyaXZlciwgcGFnZXMpOgogZGVmIHRlc3RNb3ZlQW5kQ2xpY2soZHJp
dmVyLCBwYWdlcyk6CiAgICAgIiIiQ29waWVkIGZyb20gb3JnLm9wZW5xYS5zZWxlbml1bS5pbnRl
cmFjdGlvbnMuVGVzdEJhc2ljTW91c2VJbnRlcmZhY2UuIiIiCiAgICAgcGFnZXMubG9hZCgiamF2
YXNjcmlwdFBhZ2UuaHRtbCIpCi0gICAgdG9DbGljayA9IGRyaXZlci5maW5kX2VsZW1lbnRfYnlf
aWQoImNsaWNrRmllbGQiKQorICAgIHRvQ2xpY2sgPSBkcml2ZXIuZmluZF9lbGVtZW50KEJ5LklE
LCAiY2xpY2tGaWVsZCIpCiAKICAgICBjbGljayA9IEFjdGlvbkNoYWlucyhkcml2ZXIpIFwKICAg
ICAgICAgLm1vdmVfdG9fZWxlbWVudCh0b0NsaWNrKSBcCkBAIC0xNDMsMTEgKzE0OCwxMSBAQCBk
ZWYgdGVzdENhbm5vdE1vdmVUb0FOdWxsTG9jYXRvcihkcml2ZXIsIHBhZ2VzKToKICAgICAgICAg
bW92ZS5wZXJmb3JtKCkKIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWxfZmlyZWZveAorQHB5dGVzdC5t
YXJrLnhmYWlsX3NhZmFyaQogZGVmIHRlc3RDbGlja2luZ09uRm9ybUVsZW1lbnRzKGRyaXZlciwg
cGFnZXMpOgogICAgICIiIkNvcGllZCBmcm9tIG9yZy5vcGVucWEuc2VsZW5pdW0uaW50ZXJhY3Rp
b25zLkNvbWJpbmVkSW5wdXRBY3Rpb25zVGVzdC4iIiIKICAgICBwYWdlcy5sb2FkKCJmb3JtU2Vs
ZWN0aW9uUGFnZS5odG1sIikKLSAgICBvcHRpb25zID0gZHJpdmVyLmZpbmRfZWxlbWVudHNfYnlf
dGFnX25hbWUoIm9wdGlvbiIpCisgICAgb3B0aW9ucyA9IGRyaXZlci5maW5kX2VsZW1lbnRzKEJ5
LlRBR19OQU1FLCAib3B0aW9uIikKICAgICBzZWxlY3RUaHJlZU9wdGlvbnMgPSBBY3Rpb25DaGFp
bnMoZHJpdmVyKSBcCiAgICAgICAgIC5jbGljayhvcHRpb25zWzFdKSBcCiAgICAgICAgIC5rZXlf
ZG93bihLZXlzLlNISUZUKSBcCkBAIC0xNTUsMjAgKzE2MCwyMiBAQCBkZWYgdGVzdENsaWNraW5n
T25Gb3JtRWxlbWVudHMoZHJpdmVyLCBwYWdlcyk6CiAgICAgICAgIC5rZXlfdXAoS2V5cy5TSElG
VCkKICAgICBzZWxlY3RUaHJlZU9wdGlvbnMucGVyZm9ybSgpCiAKLSAgICBzaG93QnV0dG9uID0g
ZHJpdmVyLmZpbmRfZWxlbWVudF9ieV9uYW1lKCJzaG93c2VsZWN0ZWQiKQorICAgIHNob3dCdXR0
b24gPSBkcml2ZXIuZmluZF9lbGVtZW50KEJ5Lk5BTUUsICJzaG93c2VsZWN0ZWQiKQogICAgIHNo
b3dCdXR0b24uY2xpY2soKQogCi0gICAgcmVzdWx0RWxlbWVudCA9IGRyaXZlci5maW5kX2VsZW1l
bnRfYnlfaWQoInJlc3VsdCIpCisgICAgcmVzdWx0RWxlbWVudCA9IGRyaXZlci5maW5kX2VsZW1l
bnQoQnkuSUQsICJyZXN1bHQiKQogICAgIGFzc2VydCAicm9xdWVmb3J0IHBhcm1pZ2lhbm8gY2hl
ZGRhciIgPT0gcmVzdWx0RWxlbWVudC50ZXh0CiAKIAorQHB5dGVzdC5tYXJrLnhmYWlsX2ZpcmVm
b3gKK0BweXRlc3QubWFyay54ZmFpbF9zYWZhcmkKIGRlZiB0ZXN0U2VsZWN0aW5nTXVsdGlwbGVJ
dGVtcyhkcml2ZXIsIHBhZ2VzKToKICAgICAiIiJDb3BpZWQgZnJvbSBvcmcub3BlbnFhLnNlbGVu
aXVtLmludGVyYWN0aW9ucy5Db21iaW5lZElucHV0QWN0aW9uc1Rlc3QuIiIiCiAgICAgcGFnZXMu
bG9hZCgic2VsZWN0YWJsZUl0ZW1zLmh0bWwiKQotICAgIHJlcG9ydGluZ0VsZW1lbnQgPSBkcml2
ZXIuZmluZF9lbGVtZW50X2J5X2lkKCJpbmZvZGl2IikKKyAgICByZXBvcnRpbmdFbGVtZW50ID0g
ZHJpdmVyLmZpbmRfZWxlbWVudChCeS5JRCwgImluZm9kaXYiKQogICAgIGFzc2VydCAibm8gaW5m
byIgPT0gcmVwb3J0aW5nRWxlbWVudC50ZXh0CiAKLSAgICBsaXN0SXRlbXMgPSBkcml2ZXIuZmlu
ZF9lbGVtZW50c19ieV90YWdfbmFtZSgibGkiKQorICAgIGxpc3RJdGVtcyA9IGRyaXZlci5maW5k
X2VsZW1lbnRzKEJ5LlRBR19OQU1FLCAibGkiKQogICAgIHNlbGVjdFRocmVlSXRlbXMgPSBBY3Rp
b25DaGFpbnMoZHJpdmVyKSBcCiAgICAgICAgIC5rZXlfZG93bihLZXlzLkNPTlRST0wpIFwKICAg
ICAgICAgLmNsaWNrKGxpc3RJdGVtc1sxXSkgXApAQCAtMTg1LDkgKzE5MiwxMCBAQCBkZWYgdGVz
dFNlbGVjdGluZ011bHRpcGxlSXRlbXMoZHJpdmVyLCBwYWdlcyk6CiAgICAgYXNzZXJ0ICIjaXRl
bTciID09IHJlcG9ydGluZ0VsZW1lbnQudGV4dAogCiAKK0BweXRlc3QubWFyay54ZmFpbF9zYWZh
cmkKIGRlZiB0ZXN0U2VuZGluZ0tleXNUb0FjdGl2ZUVsZW1lbnRXaXRoTW9kaWZpZXIoZHJpdmVy
LCBwYWdlcyk6CiAgICAgcGFnZXMubG9hZCgiZm9ybVBhZ2UuaHRtbCIpCi0gICAgZSA9IGRyaXZl
ci5maW5kX2VsZW1lbnRfYnlfaWQoIndvcmtpbmciKQorICAgIGUgPSBkcml2ZXIuZmluZF9lbGVt
ZW50KEJ5LklELCAid29ya2luZyIpCiAgICAgZS5jbGljaygpCiAKICAgICBBY3Rpb25DaGFpbnMo
ZHJpdmVyKSBcCkBAIC0yMDEsNyArMjA5LDcgQEAgZGVmIHRlc3RTZW5kaW5nS2V5c1RvQWN0aXZl
RWxlbWVudFdpdGhNb2RpZmllcihkcml2ZXIsIHBhZ2VzKToKIAogZGVmIHRlc3RTZW5kaW5nS2V5
c1RvRWxlbWVudChkcml2ZXIsIHBhZ2VzKToKICAgICBwYWdlcy5sb2FkKCJmb3JtUGFnZS5odG1s
IikKLSAgICBlID0gZHJpdmVyLmZpbmRfZWxlbWVudF9ieV9pZCgid29ya2luZyIpCisgICAgZSA9
IGRyaXZlci5maW5kX2VsZW1lbnQoQnkuSUQsICJ3b3JraW5nIikKIAogICAgIEFjdGlvbkNoYWlu
cyhkcml2ZXIpLnNlbmRfa2V5c190b19lbGVtZW50KGUsICdhYmMnKS5wZXJmb3JtKCkKIApAQCAt
MjE0LDggKzIyMiw4IEBAIGRlZiB0ZXN0Q2FuU2VuZEtleXNCZXR3ZWVuQ2xpY2tzKGRyaXZlciwg
cGFnZXMpOgogICAgIGlucHV0IGRldmljZS4KICAgICAiIiIKICAgICBwYWdlcy5sb2FkKCdqYXZh
c2NyaXB0UGFnZS5odG1sJykKLSAgICBrZXl1cCA9IGRyaXZlci5maW5kX2VsZW1lbnRfYnlfaWQo
ImtleVVwIikKLSAgICBrZXlkb3duID0gZHJpdmVyLmZpbmRfZWxlbWVudF9ieV9pZCgia2V5RG93
biIpCisgICAga2V5dXAgPSBkcml2ZXIuZmluZF9lbGVtZW50KEJ5LklELCAia2V5VXAiKQorICAg
IGtleWRvd24gPSBkcml2ZXIuZmluZF9lbGVtZW50KEJ5LklELCAia2V5RG93biIpCiAgICAgQWN0
aW9uQ2hhaW5zKGRyaXZlcikuY2xpY2soa2V5dXApLnNlbmRfa2V5cygnZm9vYmFyJykuY2xpY2so
a2V5ZG93bikucGVyZm9ybSgpCiAKICAgICBhc3NlcnQgJ2Zvb2JhcicgPT0ga2V5dXAuZ2V0X2F0
dHJpYnV0ZSgndmFsdWUnKQpAQCAtMjQzLDggKzI1MSw4IEBAIGRlZiB0ZXN0X2Nhbl9wYXVzZShk
cml2ZXIsIHBhZ2VzKToKICAgICBwYWdlcy5sb2FkKCJqYXZhc2NyaXB0UGFnZS5odG1sIikKIAog
ICAgIHBhdXNlX3RpbWUgPSAyCi0gICAgdG9DbGljayA9IGRyaXZlci5maW5kX2VsZW1lbnRfYnlf
aWQoImNsaWNrRmllbGQiKQotICAgIHRvRG91YmxlQ2xpY2sgPSBkcml2ZXIuZmluZF9lbGVtZW50
X2J5X2lkKCJkb3VibGVDbGlja0ZpZWxkIikKKyAgICB0b0NsaWNrID0gZHJpdmVyLmZpbmRfZWxl
bWVudChCeS5JRCwgImNsaWNrRmllbGQiKQorICAgIHRvRG91YmxlQ2xpY2sgPSBkcml2ZXIuZmlu
ZF9lbGVtZW50KEJ5LklELCAiZG91YmxlQ2xpY2tGaWVsZCIpCiAKICAgICBwYXVzZSA9IEFjdGlv
bkNoYWlucyhkcml2ZXIpLmNsaWNrKHRvQ2xpY2spLnBhdXNlKHBhdXNlX3RpbWUpLmNsaWNrKHRv
RG91YmxlQ2xpY2spCiAKZGlmZiAtLWdpdCBhL1dlYkRyaXZlclRlc3RzL2ltcG9ydGVkL3NlbGVu
aXVtL3B5L3Rlc3Qvc2VsZW5pdW0vd2ViZHJpdmVyL2NvbW1vbi9wYWdlX2xvYWRfdGltZW91dF90
ZXN0cy5weSBiL1dlYkRyaXZlclRlc3RzL2ltcG9ydGVkL3NlbGVuaXVtL3B5L3Rlc3Qvc2VsZW5p
dW0vd2ViZHJpdmVyL2NvbW1vbi9wYWdlX2xvYWRfdGltZW91dF90ZXN0cy5weQppbmRleCA0NzNh
NmU2NDA1MmFiZWU3MjRkYmIyYzRkODQyNWJhY2Q1YzY3MDBhLi42ZWI5MzVlMmI4ZjQyODI3MTlh
OWUwMGNkMDljZWUzYzY0ZGI4MzQ2IDEwMDY0NAotLS0gYS9XZWJEcml2ZXJUZXN0cy9pbXBvcnRl
ZC9zZWxlbml1bS9weS90ZXN0L3NlbGVuaXVtL3dlYmRyaXZlci9jb21tb24vcGFnZV9sb2FkX3Rp
bWVvdXRfdGVzdHMucHkKKysrIGIvV2ViRHJpdmVyVGVzdHMvaW1wb3J0ZWQvc2VsZW5pdW0vcHkv
dGVzdC9zZWxlbml1bS93ZWJkcml2ZXIvY29tbW9uL3BhZ2VfbG9hZF90aW1lb3V0X3Rlc3RzLnB5
CkBAIC0xOCw2ICsxOCw3IEBACiBpbXBvcnQgcHl0ZXN0CiAKIGZyb20gc2VsZW5pdW0uY29tbW9u
LmV4Y2VwdGlvbnMgaW1wb3J0IFRpbWVvdXRFeGNlcHRpb24KK2Zyb20gc2VsZW5pdW0ud2ViZHJp
dmVyLmNvbW1vbi5ieSBpbXBvcnQgQnkKIAogCiBAcHl0ZXN0LmZpeHR1cmUoYXV0b3VzZT1UcnVl
KQpAQCAtMzIsOCArMzMsOSBAQCBkZWYgdGVzdFNob3VsZFRpbWVvdXRPblBhZ2VMb2FkVGFraW5n
VG9vTG9uZyhkcml2ZXIsIHBhZ2VzKToKICAgICAgICAgcGFnZXMubG9hZCgic2ltcGxlVGVzdC5o
dG1sIikKIAogCitAcHl0ZXN0Lm1hcmsueGZhaWxfc2FmYXJpCiBkZWYgdGVzdENsaWNrU2hvdWxk
VGltZW91dChkcml2ZXIsIHBhZ2VzKToKICAgICBwYWdlcy5sb2FkKCJzaW1wbGVUZXN0Lmh0bWwi
KQogICAgIGRyaXZlci5zZXRfcGFnZV9sb2FkX3RpbWVvdXQoMC4wMSkKICAgICB3aXRoIHB5dGVz
dC5yYWlzZXMoVGltZW91dEV4Y2VwdGlvbik6Ci0gICAgICAgIGRyaXZlci5maW5kX2VsZW1lbnRf
YnlfaWQoIm11bHRpbGluZWxpbmsiKS5jbGljaygpCisgICAgICAgIGRyaXZlci5maW5kX2VsZW1l
bnQoQnkuSUQsICJtdWx0aWxpbmVsaW5rIikuY2xpY2soKQpkaWZmIC0tZ2l0IGEvV2ViRHJpdmVy
VGVzdHMvaW1wb3J0ZWQvc2VsZW5pdW0vcHkvdGVzdC9zZWxlbml1bS93ZWJkcml2ZXIvY29tbW9u
L3BhZ2VfbG9hZGluZ190ZXN0cy5weSBiL1dlYkRyaXZlclRlc3RzL2ltcG9ydGVkL3NlbGVuaXVt
L3B5L3Rlc3Qvc2VsZW5pdW0vd2ViZHJpdmVyL2NvbW1vbi9wYWdlX2xvYWRpbmdfdGVzdHMucHkK
aW5kZXggOGNiMzIxYTA3ZWJhZjVmNGNkZTE2Nzg2MDM0MGFkYzU1YmU4MWNjNS4uMTQxMWVlNTlk
YTFiNDM4MzQ4NTA4ZTY4ZThmM2Y1NDM2OTIwOWRlNCAxMDA2NDQKLS0tIGEvV2ViRHJpdmVyVGVz
dHMvaW1wb3J0ZWQvc2VsZW5pdW0vcHkvdGVzdC9zZWxlbml1bS93ZWJkcml2ZXIvY29tbW9uL3Bh
Z2VfbG9hZGluZ190ZXN0cy5weQorKysgYi9XZWJEcml2ZXJUZXN0cy9pbXBvcnRlZC9zZWxlbml1
bS9weS90ZXN0L3NlbGVuaXVtL3dlYmRyaXZlci9jb21tb24vcGFnZV9sb2FkaW5nX3Rlc3RzLnB5
CkBAIC00NywxNCArNDcsMTQgQEAgZGVmIHRlc3RTaG91bGRCZUFibGVUb0dldEFGcmFnbWVudE9u
VGhlQ3VycmVudFBhZ2UoZHJpdmVyLCBwYWdlcyk6CiAgICAgZHJpdmVyLmZpbmRfZWxlbWVudChi
eT1CeS5JRCwgdmFsdWU9ImlkMSIpCiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsX21hcmlvbmV0dGUo
cmFpc2VzPVdlYkRyaXZlckV4Y2VwdGlvbikKK0BweXRlc3QubWFyay54ZmFpbF9maXJlZm94KHJh
aXNlcz1XZWJEcml2ZXJFeGNlcHRpb24pCiBAcHl0ZXN0Lm1hcmsueGZhaWxfcmVtb3RlKHJhaXNl
cz1XZWJEcml2ZXJFeGNlcHRpb24pCiBkZWYgdGVzdFNob3VsZFJldHVybldoZW5HZXR0aW5nQVVy
bFRoYXREb2VzTm90UmVzb2x2ZShkcml2ZXIpOgogICAgICMgIE9mIGNvdXJzZSwgd2UncmUgdXAg
dGhlIGNyZWVrIGlmIHRoaXMgZXZlciBkb2VzIGdldCByZWdpc3RlcmVkCiAgICAgZHJpdmVyLmdl
dCgiaHR0cDovL3d3dy50aGlzdXJsZG9lc25vdGV4aXN0LmNvbXgvIikKIAogCi1AcHl0ZXN0Lm1h
cmsueGZhaWxfbWFyaW9uZXR0ZShyYWlzZXM9V2ViRHJpdmVyRXhjZXB0aW9uKQorQHB5dGVzdC5t
YXJrLnhmYWlsX2ZpcmVmb3gocmFpc2VzPVdlYkRyaXZlckV4Y2VwdGlvbikKIEBweXRlc3QubWFy
ay54ZmFpbF9yZW1vdGUocmFpc2VzPVdlYkRyaXZlckV4Y2VwdGlvbikKIGRlZiB0ZXN0U2hvdWxk
UmV0dXJuV2hlbkdldHRpbmdBVXJsVGhhdERvZXNOb3RDb25uZWN0KGRyaXZlcik6CiAgICAgIyAg
SGVyZSdzIGhvcGluZyB0aGF0IHRoZXJlJ3Mgbm90aGluZyBoZXJlLiBUaGVyZSBzaG91bGRuJ3Qg
YmUKQEAgLTgxLDYgKzgxLDcgQEAgZGVmIHRlc3RTaG91bGRSZXR1cm5XaGVuR2V0dGluZ0FVcmxU
aGF0RG9lc05vdENvbm5lY3QoZHJpdmVyKToKICMgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHJpdmVy
LnRpdGxlLCBhbnlPZihlcXVhbFRvKG9yaWdpbmFsVGl0bGUpLCBlcXVhbFRvKCJXZSBMZWF2ZSBG
cm9tIEhlcmUiKSkpOwogCiAKK0BweXRlc3QubWFyay54ZmFpbF9zYWZhcmkKIGRlZiB0ZXN0U2hv
dWxkQmVBYmxlVG9OYXZpZ2F0ZUJhY2tJblRoZUJyb3dzZXJIaXN0b3J5KGRyaXZlciwgcGFnZXMp
OgogICAgIHBhZ2VzLmxvYWQoImZvcm1QYWdlLmh0bWwiKQogCkBAIC05MSw2ICs5Miw3IEBAIGRl
ZiB0ZXN0U2hvdWxkQmVBYmxlVG9OYXZpZ2F0ZUJhY2tJblRoZUJyb3dzZXJIaXN0b3J5KGRyaXZl
ciwgcGFnZXMpOgogICAgIGFzc2VydCBkcml2ZXIudGl0bGUgPT0gIldlIExlYXZlIEZyb20gSGVy
ZSIKIAogCitAcHl0ZXN0Lm1hcmsueGZhaWxfc2FmYXJpCiBkZWYgdGVzdFNob3VsZEJlQWJsZVRv
TmF2aWdhdGVCYWNrSW5UaGVCcm93c2VySGlzdG9yeUluUHJlc2VuY2VPZklmcmFtZXMoZHJpdmVy
LCBwYWdlcyk6CiAgICAgcGFnZXMubG9hZCgieGh0bWxUZXN0Lmh0bWwiKQogCkBAIC0xMTYsNyAr
MTE4LDcgQEAgZGVmIHRlc3RTaG91bGRCZUFibGVUb05hdmlnYXRlRm9yd2FyZHNJblRoZUJyb3dz
ZXJIaXN0b3J5KGRyaXZlciwgcGFnZXMpOgogCiAKIEBweXRlc3QubWFyay54ZmFpbF9pZQotQHB5
dGVzdC5tYXJrLnhmYWlsX21hcmlvbmV0dGUocnVuPUZhbHNlKQorQHB5dGVzdC5tYXJrLnhmYWls
X2ZpcmVmb3gocnVuPUZhbHNlKQogQHB5dGVzdC5tYXJrLnhmYWlsX3JlbW90ZShydW49RmFsc2Up
CiBAcHl0ZXN0Lm1hcmsueGZhaWxfY2hyb21lKHJ1bj1GYWxzZSkKIEBweXRlc3QubWFyay54ZmFp
bF9jaHJvbWl1bWVkZ2UocnVuPUZhbHNlKQpkaWZmIC0tZ2l0IGEvV2ViRHJpdmVyVGVzdHMvaW1w
b3J0ZWQvc2VsZW5pdW0vcHkvdGVzdC9zZWxlbml1bS93ZWJkcml2ZXIvY29tbW9uL3Bvc2l0aW9u
X2FuZF9zaXplX3Rlc3RzLnB5IGIvV2ViRHJpdmVyVGVzdHMvaW1wb3J0ZWQvc2VsZW5pdW0vcHkv
dGVzdC9zZWxlbml1bS93ZWJkcml2ZXIvY29tbW9uL3Bvc2l0aW9uX2FuZF9zaXplX3Rlc3RzLnB5
CmluZGV4IDIyODU4ODA2OTIxZDk2MmFiM2RlZTdhZDY4OGNmMDZlZTYzODQwNjMuLmE2MjQwZjg0
OTg5ZGVjMDgzMTNiY2MxNWUzMDUwNmJlNTBlYjY2ZDMgMTAwNjQ0Ci0tLSBhL1dlYkRyaXZlclRl
c3RzL2ltcG9ydGVkL3NlbGVuaXVtL3B5L3Rlc3Qvc2VsZW5pdW0vd2ViZHJpdmVyL2NvbW1vbi9w
b3NpdGlvbl9hbmRfc2l6ZV90ZXN0cy5weQorKysgYi9XZWJEcml2ZXJUZXN0cy9pbXBvcnRlZC9z
ZWxlbml1bS9weS90ZXN0L3NlbGVuaXVtL3dlYmRyaXZlci9jb21tb24vcG9zaXRpb25fYW5kX3Np
emVfdGVzdHMucHkKQEAgLTMzLDYgKzMzLDcgQEAgZGVmIHRlc3RTaG91bGRCZUFibGVUb0RldGVy
bWluZVRoZUxvY2F0aW9uT2ZBbkVsZW1lbnQoZHJpdmVyLCBwYWdlcyk6CiAgICAgJ2Nvb3JkaW5h
dGVzX3Rlc3RzL3BhZ2Vfd2l0aF90cmFuc3BhcmVudF9lbGVtZW50Lmh0bWwnLAogICAgICdjb29y
ZGluYXRlc190ZXN0cy9wYWdlX3dpdGhfaGlkZGVuX2VsZW1lbnQuaHRtbCcpLAogICAgIGlkcz0o
J2Jhc2ljJywgJ2VtcHR5JywgJ3RyYW5zcGFyZW50JywgJ2hpZGRlbicpKQorQHB5dGVzdC5tYXJr
LnhmYWlsX3NhZmFyaQogZGVmIHRlc3RTaG91bGRHZXRDb29yZGluYXRlc09mQW5FbGVtZW50KHBh
Z2UsIGRyaXZlciwgcGFnZXMpOgogICAgIHBhZ2VzLmxvYWQocGFnZSkKICAgICBlbGVtZW50ID0g
ZHJpdmVyLmZpbmRfZWxlbWVudChCeS5JRCwgImJveCIpCkBAIC00MCw2ICs0MSw3IEBAIGRlZiB0
ZXN0U2hvdWxkR2V0Q29vcmRpbmF0ZXNPZkFuRWxlbWVudChwYWdlLCBkcml2ZXIsIHBhZ2VzKToK
ICAgICBfY2hlY2tfbG9jYXRpb24oZWxlbWVudC5sb2NhdGlvbiwgeD0xMCwgeT0xMCkKIAogCitA
cHl0ZXN0Lm1hcmsueGZhaWxfc2FmYXJpCiBkZWYgdGVzdFNob3VsZEdldENvb3JkaW5hdGVzT2ZB
bkludmlzaWJsZUVsZW1lbnQoZHJpdmVyLCBwYWdlcyk6CiAgICAgcGFnZXMubG9hZCgiY29vcmRp
bmF0ZXNfdGVzdHMvcGFnZV93aXRoX2ludmlzaWJsZV9lbGVtZW50Lmh0bWwiKQogICAgIGVsZW1l
bnQgPSBkcml2ZXIuZmluZF9lbGVtZW50KEJ5LklELCAiYm94IikKQEAgLTU4LDggKzYwLDkgQEAg
ZGVmIHRlc3RTaG91bGRTY3JvbGxQYWdlQW5kR2V0Q29vcmRpbmF0ZXNPZkFuRWxlbWVudFRoYXRJ
c091dE9mVmlld1BvcnQoZHJpdmVyLAogCiBAcHl0ZXN0Lm1hcmsueGZhaWxfY2hyb21lCiBAcHl0
ZXN0Lm1hcmsueGZhaWxfY2hyb21pdW1lZGdlCi1AcHl0ZXN0Lm1hcmsueGZhaWxfbWFyaW9uZXR0
ZQorQHB5dGVzdC5tYXJrLnhmYWlsX2ZpcmVmb3gKIEBweXRlc3QubWFyay54ZmFpbF9yZW1vdGUK
K0BweXRlc3QubWFyay54ZmFpbF9zYWZhcmkKIGRlZiB0ZXN0U2hvdWxkR2V0Q29vcmRpbmF0ZXNP
ZkFuRWxlbWVudEluQUZyYW1lKGRyaXZlciwgcGFnZXMpOgogICAgIHBhZ2VzLmxvYWQoImNvb3Jk
aW5hdGVzX3Rlc3RzL2VsZW1lbnRfaW5fZnJhbWUuaHRtbCIpCiAgICAgZHJpdmVyLnN3aXRjaF90
by5mcmFtZShkcml2ZXIuZmluZF9lbGVtZW50KEJ5Lk5BTUUsICJpZnIiKSkKQEAgLTcwLDggKzcz
LDkgQEAgZGVmIHRlc3RTaG91bGRHZXRDb29yZGluYXRlc09mQW5FbGVtZW50SW5BRnJhbWUoZHJp
dmVyLCBwYWdlcyk6CiAKIEBweXRlc3QubWFyay54ZmFpbF9jaHJvbWUKIEBweXRlc3QubWFyay54
ZmFpbF9jaHJvbWl1bWVkZ2UKLUBweXRlc3QubWFyay54ZmFpbF9tYXJpb25ldHRlCitAcHl0ZXN0
Lm1hcmsueGZhaWxfZmlyZWZveAogQHB5dGVzdC5tYXJrLnhmYWlsX3JlbW90ZQorQHB5dGVzdC5t
YXJrLnhmYWlsX3NhZmFyaQogZGVmIHRlc3RTaG91bGRHZXRDb29yZGluYXRlc09mQW5FbGVtZW50
SW5BTmVzdGVkRnJhbWUoZHJpdmVyLCBwYWdlcyk6CiAgICAgcGFnZXMubG9hZCgiY29vcmRpbmF0
ZXNfdGVzdHMvZWxlbWVudF9pbl9uZXN0ZWRfZnJhbWUuaHRtbCIpCiAgICAgZHJpdmVyLnN3aXRj
aF90by5mcmFtZShkcml2ZXIuZmluZF9lbGVtZW50KEJ5Lk5BTUUsICJpZnIiKSkKZGlmZiAtLWdp
dCBhL1dlYkRyaXZlclRlc3RzL2ltcG9ydGVkL3NlbGVuaXVtL3B5L3Rlc3Qvc2VsZW5pdW0vd2Vi
ZHJpdmVyL2NvbW1vbi9yZXByX3Rlc3RzLnB5IGIvV2ViRHJpdmVyVGVzdHMvaW1wb3J0ZWQvc2Vs
ZW5pdW0vcHkvdGVzdC9zZWxlbml1bS93ZWJkcml2ZXIvY29tbW9uL3JlcHJfdGVzdHMucHkKaW5k
ZXggN2M4MzBhODY5MjFmNDk4NzhlNmMzZGIzZTZhZmQxYWQ0ODY2OTg4MS4uMDA3ODE0OWIzYzBh
NjA1ZWE4ZGI1ZTRlYjQ0NzBkNTFmZDk0YmVkOSAxMDA2NDQKLS0tIGEvV2ViRHJpdmVyVGVzdHMv
aW1wb3J0ZWQvc2VsZW5pdW0vcHkvdGVzdC9zZWxlbml1bS93ZWJkcml2ZXIvY29tbW9uL3JlcHJf
dGVzdHMucHkKKysrIGIvV2ViRHJpdmVyVGVzdHMvaW1wb3J0ZWQvc2VsZW5pdW0vcHkvdGVzdC9z
ZWxlbml1bS93ZWJkcml2ZXIvY29tbW9uL3JlcHJfdGVzdHMucHkKQEAgLTE1LDYgKzE1LDggQEAK
ICMgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9u
cwogIyB1bmRlciB0aGUgTGljZW5zZS4KIAorCitmcm9tIHNlbGVuaXVtLndlYmRyaXZlci5jb21t
b24uYnkgaW1wb3J0IEJ5CiBmcm9tIHNlbGVuaXVtLndlYmRyaXZlci5zdXBwb3J0LndhaXQgaW1w
b3J0IFdlYkRyaXZlcldhaXQKIAogCkBAIC0yNiw3ICsyOCw3IEBAIGRlZiB0ZXN0U2hvdWxkSW1w
bGVtZW50UmVwckZvcldlYkRyaXZlcihkcml2ZXIpOgogCiBkZWYgdGVzdFNob3VsZEltcGxlbWVu
dFJlcHJGb3JXZWJFbGVtZW50KGRyaXZlciwgcGFnZXMpOgogICAgIHBhZ2VzLmxvYWQoJ3NpbXBs
ZVRlc3QuaHRtbCcpCi0gICAgZWxlbSA9IGRyaXZlci5maW5kX2VsZW1lbnRfYnlfaWQoInZhbGlk
SW1nVGFnIikKKyAgICBlbGVtID0gZHJpdmVyLmZpbmRfZWxlbWVudChCeS5JRCwgInZhbGlkSW1n
VGFnIikKICAgICBlbGVtX3JlcHIgPSByZXByKGVsZW0pCiAgICAgYXNzZXJ0IHR5cGUoZWxlbSku
X19uYW1lX18gaW4gZWxlbV9yZXByCiAgICAgYXNzZXJ0IGRyaXZlci5zZXNzaW9uX2lkIGluIGVs
ZW1fcmVwcgpkaWZmIC0tZ2l0IGEvV2ViRHJpdmVyVGVzdHMvaW1wb3J0ZWQvc2VsZW5pdW0vcHkv
dGVzdC9zZWxlbml1bS93ZWJkcml2ZXIvY29tbW9uL3Jlc3VsdHNfcGFnZS5weSBiL1dlYkRyaXZl
clRlc3RzL2ltcG9ydGVkL3NlbGVuaXVtL3B5L3Rlc3Qvc2VsZW5pdW0vd2ViZHJpdmVyL2NvbW1v
bi9yZXN1bHRzX3BhZ2UucHkKaW5kZXggNGM0ZGQwYzg2NzA1NzY5ZmM0ZDlmNjdiODIxYzg5NDM2
YmRhMjQ1NS4uZGU2MjRlNjhiMWQyOWQ5MGMzOWVjYzUwZjA4NWY5NDFlODcwYTE0NiAxMDA2NDQK
LS0tIGEvV2ViRHJpdmVyVGVzdHMvaW1wb3J0ZWQvc2VsZW5pdW0vcHkvdGVzdC9zZWxlbml1bS93
ZWJkcml2ZXIvY29tbW9uL3Jlc3VsdHNfcGFnZS5weQorKysgYi9XZWJEcml2ZXJUZXN0cy9pbXBv
cnRlZC9zZWxlbml1bS9weS90ZXN0L3NlbGVuaXVtL3dlYmRyaXZlci9jb21tb24vcmVzdWx0c19w
YWdlLnB5CkBAIC0xNiw2ICsxNiw5IEBACiAjIHVuZGVyIHRoZSBMaWNlbnNlLgogCiAKK2Zyb20g
c2VsZW5pdW0ud2ViZHJpdmVyLmNvbW1vbi5ieSBpbXBvcnQgQnkKKworCiBjbGFzcyBSZXN1bHRz
UGFnZShvYmplY3QpOgogICAgICIiIlRoaXMgY2xhc3MgbW9kZWxzIGEgZ29vZ2xlIHNlYXJjaCBy
ZXN1bHQgcGFnZS4iIiIKIApAQCAtMjksOCArMzIsOCBAQCBjbGFzcyBSZXN1bHRzUGFnZShvYmpl
Y3QpOgogICAgICAgICByYWlzZSBFeGNlcHRpb24oIlRoaXMgcGFnZSBzaG91bGRuJ3QgYmUgbG9h
ZGVkIGRpcmVjdGx5IikKIAogICAgIGRlZiBsaW5rX2NvbnRhaW5zX21hdGNoX2ZvcihzZWxmLCB0
ZXJtKToKLSAgICAgICAgcmVzdWx0X3NlY3Rpb24gPSBzZWxmLl9kcml2ZXIuZmluZF9lbGVtZW50
X2J5X2lkKCJyZXMiKQotICAgICAgICBlbGVtZW50cyA9IHJlc3VsdF9zZWN0aW9uLmZpbmRfZWxl
bWVudHNfYnlfeHBhdGgoIi4vLypbQGNsYXNzPSdsJ10iKQorICAgICAgICByZXN1bHRfc2VjdGlv
biA9IHNlbGYuX2RyaXZlci5maW5kX2VsZW1lbnQoQnkuSUQsICJyZXMiKQorICAgICAgICBlbGVt
ZW50cyA9IHJlc3VsdF9zZWN0aW9uLmZpbmRfZWxlbWVudHMoQnkuWFBBVEgsICIuLy8qW0BjbGFz
cz0nbCddIikKICAgICAgICAgZm9yIGUgaW4gZWxlbWVudHM6CiAgICAgICAgICAgICBpZiB0ZXJt
IGluIGUuZ2V0X3RleHQoKToKICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQpkaWZmIC0tZ2l0
IGEvV2ViRHJpdmVyVGVzdHMvaW1wb3J0ZWQvc2VsZW5pdW0vcHkvdGVzdC9zZWxlbml1bS93ZWJk
cml2ZXIvY29tbW9uL3NlbGVjdF9jbGFzc190ZXN0cy5weSBiL1dlYkRyaXZlclRlc3RzL2ltcG9y
dGVkL3NlbGVuaXVtL3B5L3Rlc3Qvc2VsZW5pdW0vd2ViZHJpdmVyL2NvbW1vbi9zZWxlY3RfY2xh
c3NfdGVzdHMucHkKaW5kZXggOTdlZTAyOGNmODA1YTcyZjU1M2UyN2U2ZTIyNGNiMjQ4MjYwMTBj
NS4uNTJiN2Q5Yjk4ZTFjZTYxM2VjODU0YzkyZjUwZWIzNWY4NTY5NjJiNCAxMDA2NDQKLS0tIGEv
V2ViRHJpdmVyVGVzdHMvaW1wb3J0ZWQvc2VsZW5pdW0vcHkvdGVzdC9zZWxlbml1bS93ZWJkcml2
ZXIvY29tbW9uL3NlbGVjdF9jbGFzc190ZXN0cy5weQorKysgYi9XZWJEcml2ZXJUZXN0cy9pbXBv
cnRlZC9zZWxlbml1bS9weS90ZXN0L3NlbGVuaXVtL3dlYmRyaXZlci9jb21tb24vc2VsZWN0X2Ns
YXNzX3Rlc3RzLnB5CkBAIC00Miw5ICs0Miw4IEBAIGRlZiB0ZXN0U2VsZWN0QnlJbmRleFNpbmds
ZShkcml2ZXIsIHBhZ2VzKToKICAgICAgICAgICAgIGFzc2VydCBzZWwuZmlyc3Rfc2VsZWN0ZWRf
b3B0aW9uLnRleHQgPT0gc2VsZWN0Wyd2YWx1ZXMnXVt4XQogCiAKLUBweXRlc3QubWFyay54ZmFp
bF9maXJlZm94CitAcHl0ZXN0Lm1hcmsueGZhaWxfZmlyZWZveChyZWFzb249J2h0dHBzOi8vYnVn
emlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTE0Mjk0MDMnKQogQHB5dGVzdC5tYXJr
LnhmYWlsX3JlbW90ZQotQHB5dGVzdC5tYXJrLnhmYWlsX21hcmlvbmV0dGUocmVhc29uPSdodHRw
czovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDI5NDAzJykKIGRlZiB0
ZXN0U2VsZWN0RGlzYWJsZWRCeUluZGV4KGRyaXZlciwgcGFnZXMpOgogICAgIHBhZ2VzLmxvYWQo
ImZvcm1QYWdlLmh0bWwiKQogICAgIHNlbCA9IFNlbGVjdChkcml2ZXIuZmluZF9lbGVtZW50KEJ5
Lk5BTUUsIGRpc2FibGVkU2VsZWN0WyduYW1lJ10pKQpAQCAtNjcsOSArNjYsOCBAQCBkZWYgdGVz
dFNlbGVjdEJ5VmFsdWVTaW5nbGUoZHJpdmVyLCBwYWdlcyk6CiAgICAgICAgICAgICBhc3NlcnQg
c2VsLmZpcnN0X3NlbGVjdGVkX29wdGlvbi50ZXh0ID09IHNlbGVjdFsndmFsdWVzJ11beF0KIAog
Ci1AcHl0ZXN0Lm1hcmsueGZhaWxfZmlyZWZveAorQHB5dGVzdC5tYXJrLnhmYWlsX2ZpcmVmb3go
cmVhc29uPSdodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDI5
NDAzJykKIEBweXRlc3QubWFyay54ZmFpbF9yZW1vdGUKLUBweXRlc3QubWFyay54ZmFpbF9tYXJp
b25ldHRlKHJlYXNvbj0naHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQyOTQwMycpCiBkZWYgdGVzdFNlbGVjdERpc2FibGVkQnlWYWx1ZShkcml2ZXIsIHBhZ2Vz
KToKICAgICBwYWdlcy5sb2FkKCJmb3JtUGFnZS5odG1sIikKICAgICBzZWwgPSBTZWxlY3QoZHJp
dmVyLmZpbmRfZWxlbWVudChCeS5OQU1FLCBkaXNhYmxlZFNlbGVjdFsnbmFtZSddKSkKQEAgLTk3
LDYgKzk1LDcgQEAgZGVmIHRlc3RTZWxlY3RCeVZpc2libGVUZXh0U2luZ2xlKGRyaXZlciwgcGFn
ZXMpOgogICAgIHJlYXNvbj0naHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9tZWRyaXZl
ci9pc3N1ZXMvZGV0YWlsP2lkPTgyMicpCiBAcHl0ZXN0Lm1hcmsueGZhaWxfY2hyb21pdW1lZGdl
KAogICAgIHJlYXNvbj0naHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9tZWRyaXZlci9p
c3N1ZXMvZGV0YWlsP2lkPTgyMicpCitAcHl0ZXN0Lm1hcmsueGZhaWxfc2FmYXJpCiBkZWYgdGVz
dFNlbGVjdEJ5VmlzaWJsZVRleHRTaG91bGROb3JtYWxpemVTcGFjZXMoZHJpdmVyLCBwYWdlcyk6
CiAgICAgcGFnZXMubG9hZCgiZm9ybVBhZ2UuaHRtbCIpCiAKQEAgLTEwOCw5ICsxMDcsOCBAQCBk
ZWYgdGVzdFNlbGVjdEJ5VmlzaWJsZVRleHRTaG91bGROb3JtYWxpemVTcGFjZXMoZHJpdmVyLCBw
YWdlcyk6CiAgICAgICAgICAgICBhc3NlcnQgc2VsLmZpcnN0X3NlbGVjdGVkX29wdGlvbi50ZXh0
ID09IHNlbGVjdFsndmFsdWVzJ11beF0KIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWxfZmlyZWZveAor
QHB5dGVzdC5tYXJrLnhmYWlsX2ZpcmVmb3gocmVhc29uPSdodHRwczovL2J1Z3ppbGxhLm1vemls
bGEub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDI5NDAzJykKIEBweXRlc3QubWFyay54ZmFpbF9yZW1v
dGUKLUBweXRlc3QubWFyay54ZmFpbF9tYXJpb25ldHRlKHJlYXNvbj0naHR0cHM6Ly9idWd6aWxs
YS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQyOTQwMycpCiBkZWYgdGVzdFNlbGVjdERp
c2FibGVkQnlWaXNpYmxlVGV4dChkcml2ZXIsIHBhZ2VzKToKICAgICBwYWdlcy5sb2FkKCJmb3Jt
UGFnZS5odG1sIikKICAgICBzZWwgPSBTZWxlY3QoZHJpdmVyLmZpbmRfZWxlbWVudChCeS5OQU1F
LCBkaXNhYmxlZFNlbGVjdFsnbmFtZSddKSkKZGlmZiAtLWdpdCBhL1dlYkRyaXZlclRlc3RzL2lt
cG9ydGVkL3NlbGVuaXVtL3B5L3Rlc3Qvc2VsZW5pdW0vd2ViZHJpdmVyL2NvbW1vbi9zdGFsZV9y
ZWZlcmVuY2VfdGVzdHMucHkgYi9XZWJEcml2ZXJUZXN0cy9pbXBvcnRlZC9zZWxlbml1bS9weS90
ZXN0L3NlbGVuaXVtL3dlYmRyaXZlci9jb21tb24vc3RhbGVfcmVmZXJlbmNlX3Rlc3RzLnB5Cmlu
ZGV4IGJjODFiMjU2ZjI1NmJlNWQ5YTRlYmI2MmU2N2FiOTZlZTExZDc4MWIuLjMwMWRiZjE5NTNh
MDM3OGM0NTRlNmE1OWRlZDMwMjRkNDk3MjI5NDUgMTAwNjQ0Ci0tLSBhL1dlYkRyaXZlclRlc3Rz
L2ltcG9ydGVkL3NlbGVuaXVtL3B5L3Rlc3Qvc2VsZW5pdW0vd2ViZHJpdmVyL2NvbW1vbi9zdGFs
ZV9yZWZlcmVuY2VfdGVzdHMucHkKKysrIGIvV2ViRHJpdmVyVGVzdHMvaW1wb3J0ZWQvc2VsZW5p
dW0vcHkvdGVzdC9zZWxlbml1bS93ZWJkcml2ZXIvY29tbW9uL3N0YWxlX3JlZmVyZW5jZV90ZXN0
cy5weQpAQCAtMjksNiArMjksNyBAQCBkZWYgdGVzdE9sZFBhZ2UoZHJpdmVyLCBwYWdlcyk6CiAg
ICAgICAgIGVsZW0uY2xpY2soKQogCiAKK0BweXRlc3QubWFyay54ZmFpbF9zYWZhcmkKIGRlZiB0
ZXN0U2hvdWxkTm90Q3Jhc2hXaGVuQ2FsbGluZ0dldFNpemVPbkFuT2Jzb2xldGVFbGVtZW50KGRy
aXZlciwgcGFnZXMpOgogICAgIHBhZ2VzLmxvYWQoInNpbXBsZVRlc3QuaHRtbCIpCiAgICAgZWxl
bSA9IGRyaXZlci5maW5kX2VsZW1lbnQoYnk9QnkuSUQsIHZhbHVlPSJsaW5rcyIpCkBAIC0zNyw2
ICszOCw3IEBAIGRlZiB0ZXN0U2hvdWxkTm90Q3Jhc2hXaGVuQ2FsbGluZ0dldFNpemVPbkFuT2Jz
b2xldGVFbGVtZW50KGRyaXZlciwgcGFnZXMpOgogICAgICAgICBlbGVtLnNpemUKIAogCitAcHl0
ZXN0Lm1hcmsueGZhaWxfc2FmYXJpCiBkZWYgdGVzdFNob3VsZE5vdENyYXNoV2hlblF1ZXJ5aW5n
VGhlQXR0cmlidXRlT2ZBU3RhbGVFbGVtZW50KGRyaXZlciwgcGFnZXMpOgogICAgIHBhZ2VzLmxv
YWQoInhodG1sVGVzdC5odG1sIikKICAgICBoZWFkaW5nID0gZHJpdmVyLmZpbmRfZWxlbWVudChi
eT1CeS5YUEFUSCwgdmFsdWU9Ii8vaDEiKQpkaWZmIC0tZ2l0IGEvV2ViRHJpdmVyVGVzdHMvaW1w
b3J0ZWQvc2VsZW5pdW0vcHkvdGVzdC9zZWxlbml1bS93ZWJkcml2ZXIvY29tbW9uL3Rha2VzX3Nj
cmVlbnNob3RzX3Rlc3RzLnB5IGIvV2ViRHJpdmVyVGVzdHMvaW1wb3J0ZWQvc2VsZW5pdW0vcHkv
dGVzdC9zZWxlbml1bS93ZWJkcml2ZXIvY29tbW9uL3Rha2VzX3NjcmVlbnNob3RzX3Rlc3RzLnB5
CmluZGV4IDBjMDQ5Y2VjZWQyNzgxZGViNzJmMmZkNTUyMzA5YTBkZTFjOTc5ZGUuLmVmMjI0YzY0
OTZlOGY4NDAxOTNhMmViN2UwYTM1YmUyZmNhZDA2MWQgMTAwNjQ0Ci0tLSBhL1dlYkRyaXZlclRl
c3RzL2ltcG9ydGVkL3NlbGVuaXVtL3B5L3Rlc3Qvc2VsZW5pdW0vd2ViZHJpdmVyL2NvbW1vbi90
YWtlc19zY3JlZW5zaG90c190ZXN0cy5weQorKysgYi9XZWJEcml2ZXJUZXN0cy9pbXBvcnRlZC9z
ZWxlbml1bS9weS90ZXN0L3NlbGVuaXVtL3dlYmRyaXZlci9jb21tb24vdGFrZXNfc2NyZWVuc2hv
dHNfdGVzdHMucHkKQEAgLTIwLDYgKzIwLDggQEAgaW1wb3J0IGltZ2hkcgogCiBpbXBvcnQgcHl0
ZXN0CiAKK2Zyb20gc2VsZW5pdW0ud2ViZHJpdmVyLmNvbW1vbi5ieSBpbXBvcnQgQnkKKwogCiBk
ZWYgdGVzdF9nZXRfc2NyZWVuc2hvdF9hc19iYXNlNjQoZHJpdmVyLCBwYWdlcyk6CiAgICAgcGFn
ZXMubG9hZCgic2ltcGxlVGVzdC5odG1sIikKQEAgLTM2LDYgKzM4LDYgQEAgZGVmIHRlc3RfZ2V0
X3NjcmVlbnNob3RfYXNfcG5nKGRyaXZlciwgcGFnZXMpOgogQHB5dGVzdC5tYXJrLnhmYWlsX2Zp
cmVmb3gKIGRlZiB0ZXN0X2dldF9lbGVtZW50X3NjcmVlbnNob3QoZHJpdmVyLCBwYWdlcyk6CiAg
ICAgcGFnZXMubG9hZCgic2ltcGxlVGVzdC5odG1sIikKLSAgICBlbGVtZW50ID0gZHJpdmVyLmZp
bmRfZWxlbWVudF9ieV9pZCgibXVsdGlsaW5lIikKKyAgICBlbGVtZW50ID0gZHJpdmVyLmZpbmRf
ZWxlbWVudChCeS5JRCwgIm11bHRpbGluZSIpCiAgICAgcmVzdWx0ID0gYmFzZTY0LmI2NGRlY29k
ZShlbGVtZW50LnNjcmVlbnNob3RfYXNfYmFzZTY0KQogICAgIGFzc2VydCBpbWdoZHIud2hhdCgn
JywgcmVzdWx0KSA9PSAncG5nJwpkaWZmIC0tZ2l0IGEvV2ViRHJpdmVyVGVzdHMvaW1wb3J0ZWQv
c2VsZW5pdW0vcHkvdGVzdC9zZWxlbml1bS93ZWJkcml2ZXIvY29tbW9uL3RleHRfaGFuZGxpbmdf
dGVzdHMucHkgYi9XZWJEcml2ZXJUZXN0cy9pbXBvcnRlZC9zZWxlbml1bS9weS90ZXN0L3NlbGVu
aXVtL3dlYmRyaXZlci9jb21tb24vdGV4dF9oYW5kbGluZ190ZXN0cy5weQppbmRleCA5Yzk3MGNl
ZjYyNWZlNmRiMmI1YjQzMDRmOTdmZTMyZjg5MWQwYTU1Li43NzdiMzU0NTQ0ZWY4NGM4Mzg3ZDQx
ZjE4NjI4ODQ1YzkyZTU1NGI3IDEwMDY0NAotLS0gYS9XZWJEcml2ZXJUZXN0cy9pbXBvcnRlZC9z
ZWxlbml1bS9weS90ZXN0L3NlbGVuaXVtL3dlYmRyaXZlci9jb21tb24vdGV4dF9oYW5kbGluZ190
ZXN0cy5weQorKysgYi9XZWJEcml2ZXJUZXN0cy9pbXBvcnRlZC9zZWxlbml1bS9weS90ZXN0L3Nl
bGVuaXVtL3dlYmRyaXZlci9jb21tb24vdGV4dF9oYW5kbGluZ190ZXN0cy5weQpAQCAtNDEsNiAr
NDEsNyBAQCBkZWYgdGVzdFNob3VsZFJldHVyblRoZUVudGlyZVRleHRDb250ZW50T2ZDaGlsZEVs
ZW1lbnRzKGRyaXZlciwgcGFnZXMpOgogICAgIGFzc2VydCAiYW5kIGJsb2NrIGxldmVsIGVsZW1l
bnRzIiBpbiB0ZXh0CiAKIAorQHB5dGVzdC5tYXJrLnhmYWlsX3NhZmFyaQogZGVmIHRlc3RTaG91
bGRJZ25vcmVTY3JpcHRFbGVtZW50cyhkcml2ZXIsIHBhZ2VzKToKICAgICBwYWdlcy5sb2FkKCJq
YXZhc2NyaXB0RW5oYW5jZWRGb3JtLmh0bWwiKQogICAgIGxhYmVsRm9yVXNlcm5hbWUgPSBkcml2
ZXIuZmluZF9lbGVtZW50KGJ5PUJ5LklELCB2YWx1ZT0ibGFiZWxmb3J1c2VybmFtZSIpCkBAIC01
MSw2ICs1Miw3IEBAIGRlZiB0ZXN0U2hvdWxkSWdub3JlU2NyaXB0RWxlbWVudHMoZHJpdmVyLCBw
YWdlcyk6CiAgICAgYXNzZXJ0IHRleHQgPT0gIlVzZXJuYW1lOiIKIAogCitAcHl0ZXN0Lm1hcmsu
eGZhaWxfc2FmYXJpCiBkZWYgdGVzdFNob3VsZFJlcHJlc2VudEFCbG9ja0xldmVsRWxlbWVudEFz
QU5ld2xpbmUoZHJpdmVyLCBwYWdlcyk6CiAgICAgcGFnZXMubG9hZCgic2ltcGxlVGVzdC5odG1s
IikKICAgICB0ZXh0ID0gZHJpdmVyLmZpbmRfZWxlbWVudChieT1CeS5JRCwgdmFsdWU9Im11bHRp
bGluZSIpLnRleHQKQEAgLTYwLDYgKzYyLDcgQEAgZGVmIHRlc3RTaG91bGRSZXByZXNlbnRBQmxv
Y2tMZXZlbEVsZW1lbnRBc0FOZXdsaW5lKGRyaXZlciwgcGFnZXMpOgogICAgIGFzc2VydCB0ZXh0
LmVuZHN3aXRoKCJhbmQgYmxvY2sgbGV2ZWwgZWxlbWVudHMiKQogCiAKK0BweXRlc3QubWFyay54
ZmFpbF9zYWZhcmkKIGRlZiB0ZXN0U2hvdWxkQ29sbGFwc2VNdWx0aXBsZVdoaXRlc3BhY2VDaGFy
YWN0ZXJzSW50b0FTaW5nbGVTcGFjZShkcml2ZXIsIHBhZ2VzKToKICAgICBwYWdlcy5sb2FkKCJz
aW1wbGVUZXN0Lmh0bWwiKQogICAgIHRleHQgPSBkcml2ZXIuZmluZF9lbGVtZW50KGJ5PUJ5LklE
LCB2YWx1ZT0ibG90c29mc3BhY2VzIikudGV4dApAQCAtNjcsNiArNzAsNyBAQCBkZWYgdGVzdFNo
b3VsZENvbGxhcHNlTXVsdGlwbGVXaGl0ZXNwYWNlQ2hhcmFjdGVyc0ludG9BU2luZ2xlU3BhY2Uo
ZHJpdmVyLCBwYWdlcwogICAgIGFzc2VydCB0ZXh0ID09ICJUaGlzIGxpbmUgaGFzIGxvdHMgb2Yg
c3BhY2VzLiIKIAogCitAcHl0ZXN0Lm1hcmsueGZhaWxfc2FmYXJpCiBkZWYgdGVzdFNob3VsZFRy
aW1UZXh0KGRyaXZlciwgcGFnZXMpOgogICAgIHBhZ2VzLmxvYWQoInNpbXBsZVRlc3QuaHRtbCIp
CiAgICAgdGV4dCA9IGRyaXZlci5maW5kX2VsZW1lbnQoYnk9QnkuSUQsIHZhbHVlPSJtdWx0aWxp
bmUiKS50ZXh0CkBAIC03NSw2ICs3OSw3IEBAIGRlZiB0ZXN0U2hvdWxkVHJpbVRleHQoZHJpdmVy
LCBwYWdlcyk6CiAgICAgYXNzZXJ0IHRleHQuZW5kc3dpdGgoImJsb2NrIGxldmVsIGVsZW1lbnRz
IikKIAogCitAcHl0ZXN0Lm1hcmsueGZhaWxfc2FmYXJpCiBkZWYgdGVzdFNob3VsZENvbnZlcnRB
Tm9uQnJlYWtpbmdTcGFjZUludG9BTm9ybWFsU3BhY2VDaGFyYWN0ZXIoZHJpdmVyLCBwYWdlcyk6
CiAgICAgcGFnZXMubG9hZCgic2ltcGxlVGVzdC5odG1sIikKICAgICB0ZXh0ID0gZHJpdmVyLmZp
bmRfZWxlbWVudChieT1CeS5JRCwgdmFsdWU9Im5ic3AiKS50ZXh0CkBAIC04Miw2ICs4Nyw3IEBA
IGRlZiB0ZXN0U2hvdWxkQ29udmVydEFOb25CcmVha2luZ1NwYWNlSW50b0FOb3JtYWxTcGFjZUNo
YXJhY3Rlcihkcml2ZXIsIHBhZ2VzKToKICAgICBhc3NlcnQgdGV4dCA9PSAiVGhpcyBsaW5lIGhh
cyBhIG5vbi1icmVha2luZyBzcGFjZSIKIAogCitAcHl0ZXN0Lm1hcmsueGZhaWxfc2FmYXJpCiBk
ZWYgdGVzdFNob3VsZFRyZWF0QU5vbkJyZWFraW5nU3BhY2VBc0FueU90aGVyV2hpdGVzcGFjZUNo
YXJhY3RlcldoZW5Db2xsYXBzaW5nV2hpdGVzcGFjZShkcml2ZXIsIHBhZ2VzKToKICAgICBwYWdl
cy5sb2FkKCJzaW1wbGVUZXN0Lmh0bWwiKQogICAgIGVsZW1lbnQgPSBkcml2ZXIuZmluZF9lbGVt
ZW50KGJ5PUJ5LklELCB2YWx1ZT0ibmJzcGFuZHNwYWNlcyIpCkBAIC05MCw2ICs5Niw3IEBAIGRl
ZiB0ZXN0U2hvdWxkVHJlYXRBTm9uQnJlYWtpbmdTcGFjZUFzQW55T3RoZXJXaGl0ZXNwYWNlQ2hh
cmFjdGVyV2hlbkNvbGxhcHNpbmdXCiAgICAgYXNzZXJ0IHRleHQgPT0gIlRoaXMgbGluZSBoYXMg
YSAgIG5vbi1icmVha2luZyBzcGFjZSBhbmQgc3BhY2VzIgogCiAKK0BweXRlc3QubWFyay54ZmFp
bF9zYWZhcmkKIGRlZiB0ZXN0SGF2aW5nSW5saW5lRWxlbWVudHNTaG91bGROb3RBZmZlY3RIb3dU
ZXh0SXNSZXR1cm5lZChkcml2ZXIsIHBhZ2VzKToKICAgICBwYWdlcy5sb2FkKCJzaW1wbGVUZXN0
Lmh0bWwiKQogICAgIHRleHQgPSBkcml2ZXIuZmluZF9lbGVtZW50KGJ5PUJ5LklELCB2YWx1ZT0i
aW5saW5lIikudGV4dApAQCAtOTcsNiArMTA0LDcgQEAgZGVmIHRlc3RIYXZpbmdJbmxpbmVFbGVt
ZW50c1Nob3VsZE5vdEFmZmVjdEhvd1RleHRJc1JldHVybmVkKGRyaXZlciwgcGFnZXMpOgogICAg
IGFzc2VydCB0ZXh0ID09ICJUaGlzIGxpbmUgaGFzIHRleHQgd2l0aGluIGVsZW1lbnRzIHRoYXQg
YXJlIG1lYW50IHRvIGJlIGRpc3BsYXllZCBpbmxpbmUiCiAKIAorQHB5dGVzdC5tYXJrLnhmYWls
X3NhZmFyaQogZGVmIHRlc3RTaG91bGRSZXR1cm5UaGVFbnRpcmVUZXh0T2ZJbmxpbmVFbGVtZW50
cyhkcml2ZXIsIHBhZ2VzKToKICAgICBwYWdlcy5sb2FkKCJzaW1wbGVUZXN0Lmh0bWwiKQogICAg
IHRleHQgPSBkcml2ZXIuZmluZF9lbGVtZW50KGJ5PUJ5LklELCB2YWx1ZT0ic3BhbiIpLnRleHQK
QEAgLTEyNyw2ICsxMzUsNyBAQCBkZWYgdGVzdFNob3VsZEJlQWJsZVRvRW50ZXJEYXRlc0FmdGVy
RmlsbGluZ0luT3RoZXJWYWx1ZXNGaXJzdChkcml2ZXIsIHBhZ2VzKToKICAgICBhc3NlcnQgc2Vl
blZhbHVlID09IGV4cGVjdGVkVmFsdWUKIAogCitAcHl0ZXN0Lm1hcmsueGZhaWxfc2FmYXJpCiBk
ZWYgdGVzdFNob3VsZFJldHVybkVtcHR5U3RyaW5nV2hlblRleHRJc09ubHlTcGFjZXMoZHJpdmVy
LCBwYWdlcyk6CiAgICAgcGFnZXMubG9hZCgieGh0bWxUZXN0Lmh0bWwiKQogCkBAIC0xNDksNiAr
MTU4LDcgQEAgZGVmIHRlc3RTaG91bGRSZXR1cm5FbXB0eVN0cmluZ1doZW5UYWdJc1NlbGZDbG9z
aW5nKGRyaXZlciwgcGFnZXMpOgogICAgIGFzc2VydCB0ZXh0ID09ICIiCiAKIAorQHB5dGVzdC5t
YXJrLnhmYWlsX3NhZmFyaQogZGVmIHRlc3RTaG91bGRIYW5kbGVTaWJsaW5nQmxvY2tMZXZlbEVs
ZW1lbnRzKGRyaXZlciwgcGFnZXMpOgogICAgIHBhZ2VzLmxvYWQoInNpbXBsZVRlc3QuaHRtbCIp
CiAKQEAgLTE1Niw2ICsxNjYsNyBAQCBkZWYgdGVzdFNob3VsZEhhbmRsZVNpYmxpbmdCbG9ja0xl
dmVsRWxlbWVudHMoZHJpdmVyLCBwYWdlcyk6CiAgICAgYXNzZXJ0IHRleHQgPT0gIlNvbWUgdGV4
dCIgKyBuZXdMaW5lICsgIlNvbWUgbW9yZSB0ZXh0IgogCiAKK0BweXRlc3QubWFyay54ZmFpbF9z
YWZhcmkKIGRlZiB0ZXN0U2hvdWxkSGFuZGxlV2hpdGVzcGFjZUluSW5saW5lRWxlbWVudHMoZHJp
dmVyLCBwYWdlcyk6CiAgICAgcGFnZXMubG9hZCgic2ltcGxlVGVzdC5odG1sIikKIApAQCAtMTcw
LDYgKzE4MSw3IEBAIGRlZiB0ZXN0UmVhZEFMYXJnZUFtb3VudE9mRGF0YShkcml2ZXIsIHBhZ2Vz
KToKICAgICBhc3NlcnQgc291cmNlLmVuZHN3aXRoKCI8L2h0bWw+IikKIAogCitAcHl0ZXN0Lm1h
cmsueGZhaWxfc2FmYXJpCiBkZWYgdGVzdFNob3VsZE9ubHlJbmNsdWRlVmlzaWJsZVRleHQoZHJp
dmVyLCBwYWdlcyk6CiAgICAgcGFnZXMubG9hZCgiamF2YXNjcmlwdFBhZ2UuaHRtbCIpCiAKQEAg
LTE4MCw2ICsxOTIsNyBAQCBkZWYgdGVzdFNob3VsZE9ubHlJbmNsdWRlVmlzaWJsZVRleHQoZHJp
dmVyLCBwYWdlcyk6CiAgICAgYXNzZXJ0ICJzdWItZWxlbWVudCB0aGF0IGlzIGV4cGxpY2l0bHkg
dmlzaWJsZSIgPT0gZXhwbGljaXQKIAogCitAcHl0ZXN0Lm1hcmsueGZhaWxfc2FmYXJpCiBkZWYg
dGVzdFNob3VsZEdldFRleHRGcm9tVGFibGVDZWxscyhkcml2ZXIsIHBhZ2VzKToKICAgICBwYWdl
cy5sb2FkKCJ0YWJsZXMuaHRtbCIpCiAKZGlmZiAtLWdpdCBhL1dlYkRyaXZlclRlc3RzL2ltcG9y
dGVkL3NlbGVuaXVtL3B5L3Rlc3Qvc2VsZW5pdW0vd2ViZHJpdmVyL2NvbW1vbi90aW1lb3V0X3Rl
c3RzLnB5IGIvV2ViRHJpdmVyVGVzdHMvaW1wb3J0ZWQvc2VsZW5pdW0vcHkvdGVzdC9zZWxlbml1
bS93ZWJkcml2ZXIvY29tbW9uL3RpbWVvdXRfdGVzdHMucHkKaW5kZXggYTdjZjAxYmI4ZmVkYjVh
NDIzY2RhNWJhOTliNmNkMDQ5MjViYzA3My4uNmNmMjJkNWUwMTBjMWU0MWMzMzcxOWZhOGJhNmVh
OGRlMjU1YWVhZCAxMDA2NDQKLS0tIGEvV2ViRHJpdmVyVGVzdHMvaW1wb3J0ZWQvc2VsZW5pdW0v
cHkvdGVzdC9zZWxlbml1bS93ZWJkcml2ZXIvY29tbW9uL3RpbWVvdXRfdGVzdHMucHkKKysrIGIv
V2ViRHJpdmVyVGVzdHMvaW1wb3J0ZWQvc2VsZW5pdW0vcHkvdGVzdC9zZWxlbml1bS93ZWJkcml2
ZXIvY29tbW9uL3RpbWVvdXRfdGVzdHMucHkKQEAgLTIwLDI5ICsyMCwzMSBAQCBpbXBvcnQgcHl0
ZXN0CiAKIGZyb20gc2VsZW5pdW0ud2ViZHJpdmVyLmNvbW1vbi50aW1lb3V0cyBpbXBvcnQgVGlt
ZW91dHMKIAorCiBkZWYgdGVzdF9zaG91bGRfY3JlYXRlX3RpbWVvdXRzX29iamVjdCgpOgogICAg
IGltcGxpY2l0X3dhaXQgPSAxMAogICAgIHBhZ2VfbG9hZCA9IDEwCiAgICAgc2NyaXB0ID0gMTAK
LSAgICB0aW1lb3V0cyA9IFRpbWVvdXRzKGltcGxpY2l0X3dhaXQ9aW1wbGljaXRfd2FpdCxwYWdl
X2xvYWQ9cGFnZV9sb2FkLHNjcmlwdD1zY3JpcHQpCisgICAgdGltZW91dHMgPSBUaW1lb3V0cyhp
bXBsaWNpdF93YWl0PWltcGxpY2l0X3dhaXQsIHBhZ2VfbG9hZD1wYWdlX2xvYWQsIHNjcmlwdD1z
Y3JpcHQpCiAKICAgICBhc3NlcnQgaW1wbGljaXRfd2FpdCA9PSB0aW1lb3V0cy5pbXBsaWNpdF93
YWl0CiAgICAgYXNzZXJ0IHBhZ2VfbG9hZCA9PSB0aW1lb3V0cy5wYWdlX2xvYWQKICAgICBhc3Nl
cnQgc2NyaXB0ID09IHRpbWVvdXRzLnNjcmlwdAogCisKIGRlZiB0ZXN0X3Nob3VsZF9lcnJvcl9p
Zl9pbXBsaWNpdF93YWl0X2lzbnRfYV9udW1iZXIoKToKICAgICB3aXRoIHB5dGVzdC5yYWlzZXMo
VHlwZUVycm9yKToKICAgICAgICAgVGltZW91dHMoaW1wbGljaXRfd2FpdD0iYWJjIikKIAogICAg
IHRpbWVvdXQgPSBUaW1lb3V0cyhpbXBsaWNpdF93YWl0PTApCiAgICAgd2l0aCBweXRlc3QucmFp
c2VzKFR5cGVFcnJvcik6Ci0gICAgICAgIHRpbWVvdXQuaW1wbGljaXRfd2FpdD0iYWJjIgorICAg
ICAgICB0aW1lb3V0LmltcGxpY2l0X3dhaXQgPSAiYWJjIgogCiAKIGRlZiB0ZXN0X3Nob3VsZF9l
cnJvcl9pZl9wYWdlX2xvYWRfaXNudF9hX251bWJlcigpOgogICAgIHdpdGggcHl0ZXN0LnJhaXNl
cyhUeXBlRXJyb3IpOgogICAgICAgICBUaW1lb3V0cyhwYWdlX2xvYWQ9ImFiYyIpCi0gICAgCisK
ICAgICB0aW1lb3V0ID0gVGltZW91dHMocGFnZV9sb2FkPTApCiAgICAgd2l0aCBweXRlc3QucmFp
c2VzKFR5cGVFcnJvcik6CiAgICAgICAgIHRpbWVvdXQucGFnZV9sb2FkID0gImFiYyIKQEAgLTYz
LDggKzY1LDkgQEAgZGVmIHRlc3Rfc2hvdWxkX2dldF90aW1lb3V0c193aXRob3V0X3NldHRpbmdf
dGhlbShkcml2ZXIpOgogICAgIGFzc2VydCByZXN1bHRzLnBhZ2VfbG9hZCA9PSAzMDAKICAgICBh
c3NlcnQgcmVzdWx0cy5zY3JpcHQgPT0gMzAKIAorCiBkZWYgdGVzdF9zaG91bGRfc2V0X2FuZF9n
ZXRfdGltZW91dHNfb25fcmVtb3RlX2VuZChkcml2ZXIpOgogICAgIHRpbWVvdXQgPSBUaW1lb3V0
cyhpbXBsaWNpdF93YWl0PTEwKQogICAgIGRyaXZlci50aW1lb3V0cyA9IHRpbWVvdXQKICAgICBy
ZXN1bHQgPSBkcml2ZXIudGltZW91dHMKLSAgICBhc3NlcnQgcmVzdWx0LmltcGxpY2l0X3dhaXQg
PT0gdGltZW91dC5pbXBsaWNpdF93YWl0ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorICAg
IGFzc2VydCByZXN1bHQuaW1wbGljaXRfd2FpdCA9PSB0aW1lb3V0LmltcGxpY2l0X3dhaXQKZGlm
ZiAtLWdpdCBhL1dlYkRyaXZlclRlc3RzL2ltcG9ydGVkL3NlbGVuaXVtL3B5L3Rlc3Qvc2VsZW5p
dW0vd2ViZHJpdmVyL2NvbW1vbi90eXBpbmdfdGVzdHMucHkgYi9XZWJEcml2ZXJUZXN0cy9pbXBv
cnRlZC9zZWxlbml1bS9weS90ZXN0L3NlbGVuaXVtL3dlYmRyaXZlci9jb21tb24vdHlwaW5nX3Rl
c3RzLnB5CmluZGV4IDcxMjMwZjM3MDllYWUxOTIzZDFhOTc3ODg4MTA3MWUwZTEyODE3NmQuLjhi
ZDM1OTBiNTFhYWI3YjU5NjQ0ZTE4YzZlYTVmZjFkNGJjZDFlMzcgMTAwNjQ0Ci0tLSBhL1dlYkRy
aXZlclRlc3RzL2ltcG9ydGVkL3NlbGVuaXVtL3B5L3Rlc3Qvc2VsZW5pdW0vd2ViZHJpdmVyL2Nv
bW1vbi90eXBpbmdfdGVzdHMucHkKKysrIGIvV2ViRHJpdmVyVGVzdHMvaW1wb3J0ZWQvc2VsZW5p
dW0vcHkvdGVzdC9zZWxlbml1bS93ZWJkcml2ZXIvY29tbW9uL3R5cGluZ190ZXN0cy5weQpAQCAt
MTAxLDYgKzEwMSw3IEBAIGRlZiB0ZXN0U2hvdWxkQmVBYmxlVG9Vc2VBcnJvd0tleXMoZHJpdmVy
LCBwYWdlcyk6CiAgICAgYXNzZXJ0IGtleVJlcG9ydGVyLmdldF9hdHRyaWJ1dGUoInZhbHVlIikg
PT0gIlRlc3QiCiAKIAorQHB5dGVzdC5tYXJrLnhmYWlsX3NhZmFyaQogZGVmIHRlc3RXaWxsU2lt
dWxhdGVBS2V5VXBXaGVuRW50ZXJpbmdUZXh0SW50b0lucHV0RWxlbWVudHMoZHJpdmVyLCBwYWdl
cyk6CiAgICAgcGFnZXMubG9hZCgiamF2YXNjcmlwdFBhZ2UuaHRtbCIpCiAgICAgZWxlbWVudCA9
IGRyaXZlci5maW5kX2VsZW1lbnQoYnk9QnkuSUQsIHZhbHVlPSJrZXlVcCIpCkBAIC0xMDksNiAr
MTEwLDcgQEAgZGVmIHRlc3RXaWxsU2ltdWxhdGVBS2V5VXBXaGVuRW50ZXJpbmdUZXh0SW50b0lu
cHV0RWxlbWVudHMoZHJpdmVyLCBwYWdlcyk6CiAgICAgYXNzZXJ0IHJlc3VsdC50ZXh0ID09ICJJ
IGxpa2UgY2hlZXNlIgogCiAKK0BweXRlc3QubWFyay54ZmFpbF9zYWZhcmkKIGRlZiB0ZXN0V2ls
bFNpbXVsYXRlQUtleURvd25XaGVuRW50ZXJpbmdUZXh0SW50b0lucHV0RWxlbWVudHMoZHJpdmVy
LCBwYWdlcyk6CiAgICAgcGFnZXMubG9hZCgiamF2YXNjcmlwdFBhZ2UuaHRtbCIpCiAgICAgZWxl
bWVudCA9IGRyaXZlci5maW5kX2VsZW1lbnQoYnk9QnkuSUQsIHZhbHVlPSJrZXlEb3duIikKQEAg
LTExOSw2ICsxMjEsNyBAQCBkZWYgdGVzdFdpbGxTaW11bGF0ZUFLZXlEb3duV2hlbkVudGVyaW5n
VGV4dEludG9JbnB1dEVsZW1lbnRzKGRyaXZlciwgcGFnZXMpOgogICAgIGFzc2VydCByZXN1bHQu
dGV4dCA9PSAiSSBsaWtlIGNoZWVzIgogCiAKK0BweXRlc3QubWFyay54ZmFpbF9zYWZhcmkKIGRl
ZiB0ZXN0V2lsbFNpbXVsYXRlQUtleVByZXNzV2hlbkVudGVyaW5nVGV4dEludG9JbnB1dEVsZW1l
bnRzKGRyaXZlciwgcGFnZXMpOgogICAgIHBhZ2VzLmxvYWQoImphdmFzY3JpcHRQYWdlLmh0bWwi
KQogICAgIGVsZW1lbnQgPSBkcml2ZXIuZmluZF9lbGVtZW50KGJ5PUJ5LklELCB2YWx1ZT0ia2V5
UHJlc3MiKQpAQCAtMTI5LDYgKzEzMiw3IEBAIGRlZiB0ZXN0V2lsbFNpbXVsYXRlQUtleVByZXNz
V2hlbkVudGVyaW5nVGV4dEludG9JbnB1dEVsZW1lbnRzKGRyaXZlciwgcGFnZXMpOgogICAgIGFz
c2VydCByZXN1bHQudGV4dCA9PSAiSSBsaWtlIGNoZWVzIgogCiAKK0BweXRlc3QubWFyay54ZmFp
bF9zYWZhcmkKIGRlZiB0ZXN0V2lsbFNpbXVsYXRlQUtleVVwV2hlbkVudGVyaW5nVGV4dEludG9U
ZXh0QXJlYXMoZHJpdmVyLCBwYWdlcyk6CiAgICAgcGFnZXMubG9hZCgiamF2YXNjcmlwdFBhZ2Uu
aHRtbCIpCiAgICAgZWxlbWVudCA9IGRyaXZlci5maW5kX2VsZW1lbnQoYnk9QnkuSUQsIHZhbHVl
PSJrZXlVcEFyZWEiKQpAQCAtMTM3LDYgKzE0MSw3IEBAIGRlZiB0ZXN0V2lsbFNpbXVsYXRlQUtl
eVVwV2hlbkVudGVyaW5nVGV4dEludG9UZXh0QXJlYXMoZHJpdmVyLCBwYWdlcyk6CiAgICAgYXNz
ZXJ0IHJlc3VsdC50ZXh0ID09ICJJIGxpa2UgY2hlZXNlIgogCiAKK0BweXRlc3QubWFyay54ZmFp
bF9zYWZhcmkKIGRlZiB0ZXN0V2lsbFNpbXVsYXRlQUtleURvd25XaGVuRW50ZXJpbmdUZXh0SW50
b1RleHRBcmVhcyhkcml2ZXIsIHBhZ2VzKToKICAgICBwYWdlcy5sb2FkKCJqYXZhc2NyaXB0UGFn
ZS5odG1sIikKICAgICBlbGVtZW50ID0gZHJpdmVyLmZpbmRfZWxlbWVudChieT1CeS5JRCwgdmFs
dWU9ImtleURvd25BcmVhIikKQEAgLTE0Nyw2ICsxNTIsNyBAQCBkZWYgdGVzdFdpbGxTaW11bGF0
ZUFLZXlEb3duV2hlbkVudGVyaW5nVGV4dEludG9UZXh0QXJlYXMoZHJpdmVyLCBwYWdlcyk6CiAg
ICAgYXNzZXJ0IHJlc3VsdC50ZXh0ID09ICJJIGxpa2UgY2hlZXMiCiAKIAorQHB5dGVzdC5tYXJr
LnhmYWlsX3NhZmFyaQogZGVmIHRlc3RXaWxsU2ltdWxhdGVBS2V5UHJlc3NXaGVuRW50ZXJpbmdU
ZXh0SW50b1RleHRBcmVhcyhkcml2ZXIsIHBhZ2VzKToKICAgICBwYWdlcy5sb2FkKCJqYXZhc2Ny
aXB0UGFnZS5odG1sIikKICAgICBlbGVtZW50ID0gZHJpdmVyLmZpbmRfZWxlbWVudChieT1CeS5J
RCwgdmFsdWU9ImtleVByZXNzQXJlYSIpCkBAIC0xODksNyArMTk1LDcgQEAgZGVmIHRlc3ROdW1l
cmljTm9uU2hpZnRLZXlzKGRyaXZlciwgcGFnZXMpOgogICAgIGFzc2VydCBlbGVtZW50LmdldF9h
dHRyaWJ1dGUoInZhbHVlIikgPT0gbnVtZXJpY0xpbmVDaGFyc05vblNoaWZ0ZWQKIAogCi1AcHl0
ZXN0Lm1hcmsueGZhaWxfbWFyaW9uZXR0ZSgKK0BweXRlc3QubWFyay54ZmFpbF9maXJlZm94KAog
ICAgIHJlYXNvbj0naHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTI1NTI1OCcpCiBAcHl0ZXN0Lm1hcmsueGZhaWxfcmVtb3RlKAogICAgIHJlYXNvbj0naHR0cHM6
Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI1NTI1OCcpCkBAIC0yMTEs
NyArMjE3LDcgQEAgZGVmIHRlc3RMb3dlckNhc2VBbHBoYUtleXMoZHJpdmVyLCBwYWdlcyk6CiAg
ICAgYXNzZXJ0IGVsZW1lbnQuZ2V0X2F0dHJpYnV0ZSgidmFsdWUiKSA9PSBsb3dlckFscGhhcwog
CiAKLUBweXRlc3QubWFyay54ZmFpbF9tYXJpb25ldHRlKAorQHB5dGVzdC5tYXJrLnhmYWlsX2Zp
cmVmb3goCiAgICAgcmVhc29uPSdodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMjU1MjU4JykKIEBweXRlc3QubWFyay54ZmFpbF9yZW1vdGUoCiAgICAgcmVhc29u
PSdodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjU1MjU4JykK
QEAgLTIyNSw3ICsyMzEsNyBAQCBkZWYgdGVzdFVwcGVyY2FzZUFscGhhS2V5cyhkcml2ZXIsIHBh
Z2VzKToKICAgICBhc3NlcnQgInVwOiAxNiIgaW4gcmVzdWx0LnRleHQuc3RyaXAoKQogCiAKLUBw
eXRlc3QubWFyay54ZmFpbF9tYXJpb25ldHRlKAorQHB5dGVzdC5tYXJrLnhmYWlsX2ZpcmVmb3go
CiAgICAgcmVhc29uPSdodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMjU1MjU4JykKIEBweXRlc3QubWFyay54ZmFpbF9yZW1vdGUoCiAgICAgcmVhc29uPSdodHRw
czovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjU1MjU4JykKQEAgLTI0
NCw4ICsyNTAsOSBAQCBkZWYgdGVzdEFycm93S2V5c0FuZFBhZ2VVcEFuZERvd24oZHJpdmVyLCBw
YWdlcyk6CiAgICAgcGFnZXMubG9hZCgiamF2YXNjcmlwdFBhZ2UuaHRtbCIpCiAgICAgZWxlbWVu
dCA9IGRyaXZlci5maW5kX2VsZW1lbnQoYnk9QnkuSUQsIHZhbHVlPSJrZXlSZXBvcnRlciIpCiAg
ICAgZWxlbWVudC5zZW5kX2tleXMoCi0gICAgICAgICJhIiArIEtleXMuTEVGVCArICJiIiArIEtl
eXMuUklHSFQgKwotICAgICAgICBLZXlzLlVQICsgS2V5cy5ET1dOICsgS2V5cy5QQUdFX1VQICsg
S2V5cy5QQUdFX0RPV04gKyAiMSIpCisgICAgICAgICJhe31ie317fXt9e317fTEiCisgICAgICAg
IC5mb3JtYXQoS2V5cy5MRUZULCBLZXlzLlJJR0hULCBLZXlzLlVQLCBLZXlzLkRPV04sIEtleXMu
UEFHRV9VUCwgS2V5cy5QQUdFX0RPV04pCisgICAgKQogICAgIGFzc2VydCBlbGVtZW50LmdldF9h
dHRyaWJ1dGUoInZhbHVlIikgPT0gImJhMSIKIAogCkBAIC0yNzgsNyArMjg1LDcgQEAgZGVmIHRl
c3REZWxldGVBbmRCYWNrc3BhY2VLZXlzKGRyaXZlciwgcGFnZXMpOgogICAgIGFzc2VydCBlbGVt
ZW50LmdldF9hdHRyaWJ1dGUoInZhbHVlIikgPT0gImFiY2RmZ2kiCiAKIAotQHB5dGVzdC5tYXJr
LnhmYWlsX21hcmlvbmV0dGUoCitAcHl0ZXN0Lm1hcmsueGZhaWxfZmlyZWZveCgKICAgICByZWFz
b249J2h0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTEyNTUyNTgn
KQogQHB5dGVzdC5tYXJrLnhmYWlsX3JlbW90ZSgKICAgICByZWFzb249J2h0dHBzOi8vYnVnemls
bGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTEyNTUyNTgnKQpAQCAtMjg5LDE4ICsyOTYs
MjIgQEAgZGVmIHRlc3RTcGVjaWFsU3BhY2VLZXlzKGRyaXZlciwgcGFnZXMpOgogICAgIGFzc2Vy
dCBlbGVtZW50LmdldF9hdHRyaWJ1dGUoInZhbHVlIikgPT0gImFiY2QgZmdoIGlqIgogCiAKLUBw
eXRlc3QubWFyay54ZmFpbF9tYXJpb25ldHRlKAorQHB5dGVzdC5tYXJrLnhmYWlsX2ZpcmVmb3go
CiAgICAgcmVhc29uPSdodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMjU1MjU4JykKIEBweXRlc3QubWFyay54ZmFpbF9yZW1vdGUoCiAgICAgcmVhc29uPSdodHRw
czovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjU1MjU4JykKK0BweXRl
c3QubWFyay54ZmFpbF9zYWZhcmkKIGRlZiB0ZXN0TnVtYmVycGFkQW5kRnVuY3Rpb25LZXlzKGRy
aXZlciwgcGFnZXMpOgogICAgIHBhZ2VzLmxvYWQoImphdmFzY3JpcHRQYWdlLmh0bWwiKQogICAg
IGVsZW1lbnQgPSBkcml2ZXIuZmluZF9lbGVtZW50KGJ5PUJ5LklELCB2YWx1ZT0ia2V5UmVwb3J0
ZXIiKQogICAgIGVsZW1lbnQuc2VuZF9rZXlzKAotICAgICAgICAiYWJjZCIgKyBLZXlzLk1VTFRJ
UExZICsgS2V5cy5TVUJUUkFDVCArIEtleXMuQUREICsKLSAgICAgICAgS2V5cy5ERUNJTUFMICsg
S2V5cy5TRVBBUkFUT1IgKyBLZXlzLk5VTVBBRDAgKyBLZXlzLk5VTVBBRDkgKwotICAgICAgICBL
ZXlzLkFERCArIEtleXMuU0VNSUNPTE9OICsgS2V5cy5FUVVBTFMgKyBLZXlzLkRJVklERSArCi0g
ICAgICAgIEtleXMuTlVNUEFEMyArICJhYmNkIikKKyAgICAgICAgImFiY2R7fXt9e317fXt9e317
fXt9e317fXt9e31hYmNkIgorICAgICAgICAuZm9ybWF0KAorICAgICAgICAgICAgS2V5cy5NVUxU
SVBMWSwgS2V5cy5TVUJUUkFDVCwgS2V5cy5BREQsIEtleXMuREVDSU1BTCwgS2V5cy5TRVBBUkFU
T1IsCisgICAgICAgICAgICBLZXlzLk5VTVBBRDAsIEtleXMuTlVNUEFEOSwgS2V5cy5BREQsIEtl
eXMuU0VNSUNPTE9OLCBLZXlzLkVRVUFMUywgS2V5cy5ESVZJREUsCisgICAgICAgICAgICBLZXlz
Lk5VTVBBRDMKKyAgICAgICAgKQorICAgICkKICAgICBhc3NlcnQgZWxlbWVudC5nZXRfYXR0cmli
dXRlKCJ2YWx1ZSIpID09ICJhYmNkKi0rLiwwOSs7PS8zYWJjZCIKIAogICAgIGVsZW1lbnQuY2xl
YXIoKQpAQCAtMzA5LDYgKzMyMCw3IEBAIGRlZiB0ZXN0TnVtYmVycGFkQW5kRnVuY3Rpb25LZXlz
KGRyaXZlciwgcGFnZXMpOgogICAgIGFzc2VydCBlbGVtZW50LmdldF9hdHRyaWJ1dGUoInZhbHVl
IikgPT0gIkZVTkNUSU9OLUtFWVMtVE9PIgogCiAKK0BweXRlc3QubWFyay54ZmFpbF9zYWZhcmkK
IGRlZiB0ZXN0U2hpZnRTZWxlY3Rpb25EZWxldGVzKGRyaXZlciwgcGFnZXMpOgogICAgIHBhZ2Vz
LmxvYWQoImphdmFzY3JpcHRQYWdlLmh0bWwiKQogICAgIGVsZW1lbnQgPSBkcml2ZXIuZmluZF9l
bGVtZW50KGJ5PUJ5LklELCB2YWx1ZT0ia2V5UmVwb3J0ZXIiKQpkaWZmIC0tZ2l0IGEvV2ViRHJp
dmVyVGVzdHMvaW1wb3J0ZWQvc2VsZW5pdW0vcHkvdGVzdC9zZWxlbml1bS93ZWJkcml2ZXIvY29t
bW9uL3Zpc2liaWxpdHlfdGVzdHMucHkgYi9XZWJEcml2ZXJUZXN0cy9pbXBvcnRlZC9zZWxlbml1
bS9weS90ZXN0L3NlbGVuaXVtL3dlYmRyaXZlci9jb21tb24vdmlzaWJpbGl0eV90ZXN0cy5weQpp
bmRleCA3ODZiYTg1ODU4ZDNmNjVlNWExNjE3MjZjNWE5OGU5OGNhMjdmY2I1Li41Y2RiM2ZiMWRm
ZWZiN2VjNGUwMGU2ZjA2NTI3ZGFlMzM1N2EzNWIwIDEwMDY0NAotLS0gYS9XZWJEcml2ZXJUZXN0
cy9pbXBvcnRlZC9zZWxlbml1bS9weS90ZXN0L3NlbGVuaXVtL3dlYmRyaXZlci9jb21tb24vdmlz
aWJpbGl0eV90ZXN0cy5weQorKysgYi9XZWJEcml2ZXJUZXN0cy9pbXBvcnRlZC9zZWxlbml1bS9w
eS90ZXN0L3NlbGVuaXVtL3dlYmRyaXZlci9jb21tb24vdmlzaWJpbGl0eV90ZXN0cy5weQpAQCAt
MTUsNiArMTUsOSBAQAogIyBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMg
YW5kIGxpbWl0YXRpb25zCiAjIHVuZGVyIHRoZSBMaWNlbnNlLgogCitpbXBvcnQgcHl0ZXN0CisK
KwogZnJvbSBzZWxlbml1bS5jb21tb24uZXhjZXB0aW9ucyBpbXBvcnQgKAogICAgIEVsZW1lbnRO
b3RWaXNpYmxlRXhjZXB0aW9uLAogICAgIEVsZW1lbnROb3RJbnRlcmFjdGFibGVFeGNlcHRpb24p
CkBAIC00Niw2ICs0OSw3IEBAIGRlZiB0ZXN0U2hvdWxkQ291bnRFbGVtZW50c0FzVmlzaWJsZUlm
U3R5bGVQcm9wZXJ0eUhhc0JlZW5TZXQoZHJpdmVyLCBwYWdlcyk6CiAgICAgYXNzZXJ0IHNob3du
LmlzX2Rpc3BsYXllZCgpIGlzIFRydWUKIAogCitAcHl0ZXN0Lm1hcmsueGZhaWxfc2FmYXJpCiBk
ZWYgdGVzdFNob3VsZE1vZGlmeVRoZVZpc2liaWxpdHlPZkFuRWxlbWVudER5bmFtaWNhbGx5KGRy
aXZlciwgcGFnZXMpOgogICAgIHBhZ2VzLmxvYWQoImphdmFzY3JpcHRQYWdlLmh0bWwiKQogICAg
IGVsZW1lbnQgPSBkcml2ZXIuZmluZF9lbGVtZW50KGJ5PUJ5LklELCB2YWx1ZT0iaGlkZU1lIikK
ZGlmZiAtLWdpdCBhL1dlYkRyaXZlclRlc3RzL2ltcG9ydGVkL3NlbGVuaXVtL3B5L3Rlc3Qvc2Vs
ZW5pdW0vd2ViZHJpdmVyL2NvbW1vbi93M2NfaW50ZXJhY3Rpb25fdGVzdHMucHkgYi9XZWJEcml2
ZXJUZXN0cy9pbXBvcnRlZC9zZWxlbml1bS9weS90ZXN0L3NlbGVuaXVtL3dlYmRyaXZlci9jb21t
b24vdzNjX2ludGVyYWN0aW9uX3Rlc3RzLnB5CmluZGV4IGJjMGVhZWYwY2Y2YjlkMDc0MTJlODUx
Y2RiODljNDEyNmI5ZTYwYTEuLjlkMDI1NzZjNzIzOTQ2MTU5YzY2YzRiOTg0MDM1MzQ0Y2NkMDky
YzIgMTAwNjQ0Ci0tLSBhL1dlYkRyaXZlclRlc3RzL2ltcG9ydGVkL3NlbGVuaXVtL3B5L3Rlc3Qv
c2VsZW5pdW0vd2ViZHJpdmVyL2NvbW1vbi93M2NfaW50ZXJhY3Rpb25fdGVzdHMucHkKKysrIGIv
V2ViRHJpdmVyVGVzdHMvaW1wb3J0ZWQvc2VsZW5pdW0vcHkvdGVzdC9zZWxlbml1bS93ZWJkcml2
ZXIvY29tbW9uL3czY19pbnRlcmFjdGlvbl90ZXN0cy5weQpAQCAtMTksNiArMTksNyBAQCBpbXBv
cnQgcHl0ZXN0CiAKIGZyb20gc2VsZW5pdW0ud2ViZHJpdmVyLmNvbW1vbi5rZXlzIGltcG9ydCBL
ZXlzCiBmcm9tIHNlbGVuaXVtLndlYmRyaXZlci5jb21tb24uYWN0aW9ucy5hY3Rpb25fYnVpbGRl
ciBpbXBvcnQgQWN0aW9uQnVpbGRlcgorZnJvbSBzZWxlbml1bS53ZWJkcml2ZXIuY29tbW9uLmJ5
IGltcG9ydCBCeQogZnJvbSBzZWxlbml1bS53ZWJkcml2ZXIuc3VwcG9ydC51aSBpbXBvcnQgV2Vi
RHJpdmVyV2FpdAogCiAKQEAgLTMyLDkgKzMzLDEwIEBAIGRlZiB0ZXN0X3Nob3VsZF9iZV9hYmxl
X3RvX2dldF9wb2ludGVyX2FuZF9rZXlib2FyZF9pbnB1dHMoZHJpdmVyLCBwYWdlcyk6CiAKIAog
QHB5dGVzdC5tYXJrLnhmYWlsX2ZpcmVmb3gKK0BweXRlc3QubWFyay54ZmFpbF9zYWZhcmkKIGRl
ZiB0ZXN0U2VuZGluZ0tleXNUb0FjdGl2ZUVsZW1lbnRXaXRoTW9kaWZpZXIoZHJpdmVyLCBwYWdl
cyk6CiAgICAgcGFnZXMubG9hZCgiZm9ybVBhZ2UuaHRtbCIpCi0gICAgZSA9IGRyaXZlci5maW5k
X2VsZW1lbnRfYnlfaWQoIndvcmtpbmciKQorICAgIGUgPSBkcml2ZXIuZmluZF9lbGVtZW50KEJ5
LklELCAid29ya2luZyIpCiAgICAgZS5jbGljaygpCiAKICAgICBhY3Rpb25zID0gQWN0aW9uQnVp
bGRlcihkcml2ZXIpCkBAIC05NSw3ICs5Nyw3IEBAIGRlZiB0ZXN0X2Nhbl9jbGVhcl9hY3Rpb25z
KGRyaXZlciwgcGFnZXMpOgogQHB5dGVzdC5tYXJrLnhmYWlsX2ZpcmVmb3gKIGRlZiB0ZXN0X21v
dmVfYW5kX2NsaWNrKGRyaXZlciwgcGFnZXMpOgogICAgIHBhZ2VzLmxvYWQoImphdmFzY3JpcHRQ
YWdlLmh0bWwiKQotICAgIHRvQ2xpY2sgPSBkcml2ZXIuZmluZF9lbGVtZW50X2J5X2lkKCJjbGlj
a0ZpZWxkIikKKyAgICB0b0NsaWNrID0gZHJpdmVyLmZpbmRfZWxlbWVudChCeS5JRCwgImNsaWNr
RmllbGQiKQogCiAgICAgYWN0aW9ucyA9IEFjdGlvbkJ1aWxkZXIoZHJpdmVyKQogICAgIHBvaW50
ZXIgPSBhY3Rpb25zLnBvaW50ZXJfYWN0aW9uCkBAIC0xMTgsOCArMTIwLDggQEAgZGVmIHRlc3RE
cmFnQW5kRHJvcChkcml2ZXIsIHBhZ2VzKToKICAgICBpZiBub3QgX2lzRWxlbWVudEF2YWlsYWJs
ZShkcml2ZXIsICJkcmFnZ2FibGUiKToKICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoIkNv
dWxkIG5vdCBmaW5kIGRyYWdnYWJsZSBlbGVtZW50IGFmdGVyIDE1IHNlY29uZHMuIikKIAotICAg
IHRvRHJhZyA9IGRyaXZlci5maW5kX2VsZW1lbnRfYnlfaWQoImRyYWdnYWJsZSIpCi0gICAgZHJv
cEludG8gPSBkcml2ZXIuZmluZF9lbGVtZW50X2J5X2lkKCJkcm9wcGFibGUiKQorICAgIHRvRHJh
ZyA9IGRyaXZlci5maW5kX2VsZW1lbnQoQnkuSUQsICJkcmFnZ2FibGUiKQorICAgIGRyb3BJbnRv
ID0gZHJpdmVyLmZpbmRfZWxlbWVudChCeS5JRCwgImRyb3BwYWJsZSIpCiAgICAgYWN0aW9ucyA9
IEFjdGlvbkJ1aWxkZXIoZHJpdmVyKQogICAgIHBvaW50ZXIgPSBhY3Rpb25zLnBvaW50ZXJfYWN0
aW9uCiAgICAgcG9pbnRlci5jbGlja19hbmRfaG9sZCh0b0RyYWcpIFwKQEAgLTEyOCw4ICsxMzAs
OCBAQCBkZWYgdGVzdERyYWdBbmREcm9wKGRyaXZlciwgcGFnZXMpOgogCiAgICAgYWN0aW9ucy5w
ZXJmb3JtKCkKIAotICAgIGRyb3BJbnRvID0gZHJpdmVyLmZpbmRfZWxlbWVudF9ieV9pZCgiZHJv
cHBhYmxlIikKLSAgICB0ZXh0ID0gZHJvcEludG8uZmluZF9lbGVtZW50X2J5X3RhZ19uYW1lKCJw
IikudGV4dAorICAgIGRyb3BJbnRvID0gZHJpdmVyLmZpbmRfZWxlbWVudChCeS5JRCwgImRyb3Bw
YWJsZSIpCisgICAgdGV4dCA9IGRyb3BJbnRvLmZpbmRfZWxlbWVudChCeS5UQUdfTkFNRSwgInAi
KS50ZXh0CiAgICAgYXNzZXJ0ICJEcm9wcGVkISIgPT0gdGV4dAogCiAKQEAgLTEzNyw3ICsxMzks
NyBAQCBkZWYgdGVzdERyYWdBbmREcm9wKGRyaXZlciwgcGFnZXMpOgogZGVmIHRlc3RfY29udGV4
dF9jbGljayhkcml2ZXIsIHBhZ2VzKToKIAogICAgIHBhZ2VzLmxvYWQoImphdmFzY3JpcHRQYWdl
Lmh0bWwiKQotICAgIHRvQ29udGV4dENsaWNrID0gZHJpdmVyLmZpbmRfZWxlbWVudF9ieV9pZCgi
ZG91YmxlQ2xpY2tGaWVsZCIpCisgICAgdG9Db250ZXh0Q2xpY2sgPSBkcml2ZXIuZmluZF9lbGVt
ZW50KEJ5LklELCAiZG91YmxlQ2xpY2tGaWVsZCIpCiAKICAgICBhY3Rpb25zID0gQWN0aW9uQnVp
bGRlcihkcml2ZXIpCiAgICAgcG9pbnRlciA9IGFjdGlvbnMucG9pbnRlcl9hY3Rpb24KQEAgLTE0
OCwxMiArMTUwLDEyIEBAIGRlZiB0ZXN0X2NvbnRleHRfY2xpY2soZHJpdmVyLCBwYWdlcyk6CiAK
IAogQHB5dGVzdC5tYXJrLnhmYWlsX2ZpcmVmb3gKLUBweXRlc3QubWFyay54ZmFpbF9tYXJpb25l
dHRlKHJlYXNvbj0iRmFpbHMgb24gVHJhdmlzIikKK0BweXRlc3QubWFyay54ZmFpbF9zYWZhcmkK
IEBweXRlc3QubWFyay54ZmFpbF9yZW1vdGUocmVhc29uPSJGYWlscyBvbiBUcmF2aXMiKQogZGVm
IHRlc3RfZG91YmxlX2NsaWNrKGRyaXZlciwgcGFnZXMpOgogICAgICIiIkNvcGllZCBmcm9tIG9y
Zy5vcGVucWEuc2VsZW5pdW0uaW50ZXJhY3Rpb25zLlRlc3RCYXNpY01vdXNlSW50ZXJmYWNlLiIi
IgogICAgIHBhZ2VzLmxvYWQoImphdmFzY3JpcHRQYWdlLmh0bWwiKQotICAgIHRvRG91YmxlQ2xp
Y2sgPSBkcml2ZXIuZmluZF9lbGVtZW50X2J5X2lkKCJkb3VibGVDbGlja0ZpZWxkIikKKyAgICB0
b0RvdWJsZUNsaWNrID0gZHJpdmVyLmZpbmRfZWxlbWVudChCeS5JRCwgImRvdWJsZUNsaWNrRmll
bGQiKQogCiAgICAgYWN0aW9ucyA9IEFjdGlvbkJ1aWxkZXIoZHJpdmVyKQogICAgIHBvaW50ZXIg
PSBhY3Rpb25zLnBvaW50ZXJfYWN0aW9uCkBAIC0xNjcsMjggKzE2OSwyOCBAQCBkZWYgdGVzdF9k
b3VibGVfY2xpY2soZHJpdmVyLCBwYWdlcyk6CiBAcHl0ZXN0Lm1hcmsueGZhaWxfZmlyZWZveAog
ZGVmIHRlc3RfZHJhZ2dpbmdfZWxlbWVudF93aXRoX21vdXNlX21vdmVzX2l0X3RvX2Fub3RoZXJf
bGlzdChkcml2ZXIsIHBhZ2VzKToKICAgICBfcGVyZm9ybURyYWdBbmREcm9wV2l0aE1vdXNlKGRy
aXZlciwgcGFnZXMpCi0gICAgZHJhZ0ludG8gPSBkcml2ZXIuZmluZF9lbGVtZW50X2J5X2lkKCJz
b3J0YWJsZTEiKQotICAgIGFzc2VydCA2ID09IGxlbihkcmFnSW50by5maW5kX2VsZW1lbnRzX2J5
X3RhZ19uYW1lKCJsaSIpKQorICAgIGRyYWdJbnRvID0gZHJpdmVyLmZpbmRfZWxlbWVudChCeS5J
RCwgInNvcnRhYmxlMSIpCisgICAgYXNzZXJ0IDYgPT0gbGVuKGRyYWdJbnRvLmZpbmRfZWxlbWVu
dHMoQnkuVEFHX05BTUUsICJsaSIpKQogCiAKIEBweXRlc3QubWFyay54ZmFpbF9maXJlZm94CiBk
ZWYgdGVzdF9kcmFnZ2luZ19lbGVtZW50X3dpdGhfbW91c2VfZmlyZXNfZXZlbnRzKGRyaXZlciwg
cGFnZXMpOgogICAgIF9wZXJmb3JtRHJhZ0FuZERyb3BXaXRoTW91c2UoZHJpdmVyLCBwYWdlcykK
LSAgICBkcmFnUmVwb3J0ZXIgPSBkcml2ZXIuZmluZF9lbGVtZW50X2J5X2lkKCJkcmFnZ2luZ19y
ZXBvcnRzIikKKyAgICBkcmFnUmVwb3J0ZXIgPSBkcml2ZXIuZmluZF9lbGVtZW50KEJ5LklELCAi
ZHJhZ2dpbmdfcmVwb3J0cyIpCiAgICAgYXNzZXJ0ICJOb3RoaW5nIGhhcHBlbmVkLiBEcmFnT3V0
IERyb3BJbiBSaWdodEl0ZW0gMyIgPT0gZHJhZ1JlcG9ydGVyLnRleHQKIAogCiBkZWYgX3BlcmZv
cm1EcmFnQW5kRHJvcFdpdGhNb3VzZShkcml2ZXIsIHBhZ2VzKToKICAgICAiIiJDb3BpZWQgZnJv
bSBvcmcub3BlbnFhLnNlbGVuaXVtLmludGVyYWN0aW9ucy5UZXN0QmFzaWNNb3VzZUludGVyZmFj
ZS4iIiIKICAgICBwYWdlcy5sb2FkKCJkcmFnZ2FibGVMaXN0cy5odG1sIikKLSAgICBkcmFnUmVw
b3J0ZXIgPSBkcml2ZXIuZmluZF9lbGVtZW50X2J5X2lkKCJkcmFnZ2luZ19yZXBvcnRzIikKLSAg
ICB0b0RyYWcgPSBkcml2ZXIuZmluZF9lbGVtZW50X2J5X2lkKCJyaWdodGl0ZW0tMyIpCi0gICAg
ZHJhZ0ludG8gPSBkcml2ZXIuZmluZF9lbGVtZW50X2J5X2lkKCJzb3J0YWJsZTEiKQorICAgIGRy
YWdSZXBvcnRlciA9IGRyaXZlci5maW5kX2VsZW1lbnQoQnkuSUQsICJkcmFnZ2luZ19yZXBvcnRz
IikKKyAgICB0b0RyYWcgPSBkcml2ZXIuZmluZF9lbGVtZW50KEJ5LklELCAicmlnaHRpdGVtLTMi
KQorICAgIGRyYWdJbnRvID0gZHJpdmVyLmZpbmRfZWxlbWVudChCeS5JRCwgInNvcnRhYmxlMSIp
CiAKICAgICBhY3Rpb25zID0gQWN0aW9uQnVpbGRlcihkcml2ZXIpCiAgICAgcG9pbnRlciA9IGFj
dGlvbnMucG9pbnRlcl9hY3Rpb24KICAgICBwb2ludGVyLmNsaWNrX2FuZF9ob2xkKHRvRHJhZykg
XAotICAgICAgICAgICAubW92ZV90byhkcml2ZXIuZmluZF9lbGVtZW50X2J5X2lkKCJsZWZ0aXRl
bS00IikpIFwKKyAgICAgICAgICAgLm1vdmVfdG8oZHJpdmVyLmZpbmRfZWxlbWVudChCeS5JRCwg
ImxlZnRpdGVtLTQiKSkgXAogICAgICAgICAgICAubW92ZV90byhkcmFnSW50bykgXAogICAgICAg
ICAgICAucmVsZWFzZSgpCiAKQEAgLTIwMSw3ICsyMDMsNyBAQCBkZWYgX3BlcmZvcm1EcmFnQW5k
RHJvcFdpdGhNb3VzZShkcml2ZXIsIHBhZ2VzKToKIGRlZiBfaXNFbGVtZW50QXZhaWxhYmxlKGRy
aXZlciwgaWQpOgogICAgICIiIkNvcGllZCBmcm9tIG9yZy5vcGVucWEuc2VsZW5pdW0uaW50ZXJh
Y3Rpb25zLlRlc3RCYXNpY01vdXNlSW50ZXJmYWNlLiIiIgogICAgIHRyeToKLSAgICAgICAgZHJp
dmVyLmZpbmRfZWxlbWVudF9ieV9pZChpZCkKKyAgICAgICAgZHJpdmVyLmZpbmRfZWxlbWVudChC
eS5JRCwgaWQpCiAgICAgICAgIHJldHVybiBUcnVlCiAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAg
ICAgICAgcmV0dXJuIEZhbHNlCmRpZmYgLS1naXQgYS9XZWJEcml2ZXJUZXN0cy9pbXBvcnRlZC9z
ZWxlbml1bS9weS90ZXN0L3NlbGVuaXVtL3dlYmRyaXZlci9jb21tb24vd2ViZHJpdmVyd2FpdF90
ZXN0cy5weSBiL1dlYkRyaXZlclRlc3RzL2ltcG9ydGVkL3NlbGVuaXVtL3B5L3Rlc3Qvc2VsZW5p
dW0vd2ViZHJpdmVyL2NvbW1vbi93ZWJkcml2ZXJ3YWl0X3Rlc3RzLnB5CmluZGV4IGFhYjgzMzcw
ZDg5MjE3ZTkxNmI5ZDQxYWExMmNmNzc4ODlmZDA2Y2MuLmIyNTczZjFkMTc1ZTU0MjA5MDY5NWJi
ZDg2YjczZGViNzAzYTcxZjIgMTAwNjQ0Ci0tLSBhL1dlYkRyaXZlclRlc3RzL2ltcG9ydGVkL3Nl
bGVuaXVtL3B5L3Rlc3Qvc2VsZW5pdW0vd2ViZHJpdmVyL2NvbW1vbi93ZWJkcml2ZXJ3YWl0X3Rl
c3RzLnB5CisrKyBiL1dlYkRyaXZlclRlc3RzL2ltcG9ydGVkL3NlbGVuaXVtL3B5L3Rlc3Qvc2Vs
ZW5pdW0vd2ViZHJpdmVyL2NvbW1vbi93ZWJkcml2ZXJ3YWl0X3Rlc3RzLnB5CkBAIC0zNCw3ICsz
NCw3IEBAIGRlZiB0aHJvd1NFUkUoZHJpdmVyKToKIAogZGVmIHRlc3RTaG91bGRFeHBsaWNpdGx5
V2FpdEZvckFTaW5nbGVFbGVtZW50KGRyaXZlciwgcGFnZXMpOgogICAgIHBhZ2VzLmxvYWQoImR5
bmFtaWMuaHRtbCIpCi0gICAgYWRkID0gZHJpdmVyLmZpbmRfZWxlbWVudF9ieV9pZCgiYWRkZXIi
KQorICAgIGFkZCA9IGRyaXZlci5maW5kX2VsZW1lbnQoQnkuSUQsICJhZGRlciIpCiAgICAgYWRk
LmNsaWNrKCkKICAgICBXZWJEcml2ZXJXYWl0KGRyaXZlciwgMykudW50aWwoRUMucHJlc2VuY2Vf
b2ZfZWxlbWVudF9sb2NhdGVkKChCeS5JRCwgImJveDAiKSkpICAjIEFsbCBpcyB3ZWxsIGlmIHRo
aXMgZG9lc24ndCB0aHJvdy4KIApAQCAtNDcsNyArNDcsNyBAQCBkZWYgdGVzdFNob3VsZFN0aWxs
RmFpbFRvRmluZEFuRWxlbWVudFdpdGhFeHBsaWNpdFdhaXQoZHJpdmVyLCBwYWdlcyk6CiAKIGRl
ZiB0ZXN0U2hvdWxkRXhwbGljaXRseVdhaXR1bnRpbEF0TGVhc3RPbmVFbGVtZW50SXNGb3VuZFdo
ZW5TZWFyY2hpbmdGb3JNYW55KGRyaXZlciwgcGFnZXMpOgogICAgIHBhZ2VzLmxvYWQoImR5bmFt
aWMuaHRtbCIpCi0gICAgYWRkID0gZHJpdmVyLmZpbmRfZWxlbWVudF9ieV9pZCgiYWRkZXIiKQor
ICAgIGFkZCA9IGRyaXZlci5maW5kX2VsZW1lbnQoQnkuSUQsICJhZGRlciIpCiAKICAgICBhZGQu
Y2xpY2soKQogICAgIGFkZC5jbGljaygpCkBAIC02NCw4ICs2NCw4IEBAIGRlZiB0ZXN0U2hvdWxk
RmFpbFRvRmluZEVsZW1lbnRzV2hlbkV4cGxpY2l0V2FpdGluZyhkcml2ZXIsIHBhZ2VzKToKIAog
ZGVmIHRlc3RTaG91bGRXYWl0VW50aWxBdExlYXN0T25lVmlzaWJsZUVsZW1lbnRzSXNGb3VuZFdo
ZW5TZWFyY2hpbmdGb3JNYW55KGRyaXZlciwgcGFnZXMpOgogICAgIHBhZ2VzLmxvYWQoImhpZGRl
bl9wYXJ0aWFsbHkuaHRtbCIpCi0gICAgYWRkX3Zpc2libGUgPSBkcml2ZXIuZmluZF9lbGVtZW50
X2J5X2lkKCJhZGRWaXNpYmxlIikKLSAgICBhZGRfaGlkZGVuID0gZHJpdmVyLmZpbmRfZWxlbWVu
dF9ieV9pZCgiYWRkSGlkZGVuIikKKyAgICBhZGRfdmlzaWJsZSA9IGRyaXZlci5maW5kX2VsZW1l
bnQoQnkuSUQsICJhZGRWaXNpYmxlIikKKyAgICBhZGRfaGlkZGVuID0gZHJpdmVyLmZpbmRfZWxl
bWVudChCeS5JRCwgImFkZEhpZGRlbiIpCiAKICAgICBhZGRfdmlzaWJsZS5jbGljaygpCiAgICAg
YWRkX3Zpc2libGUuY2xpY2soKQpAQCAtNzcsNyArNzcsNyBAQCBkZWYgdGVzdFNob3VsZFdhaXRV
bnRpbEF0TGVhc3RPbmVWaXNpYmxlRWxlbWVudHNJc0ZvdW5kV2hlblNlYXJjaGluZ0Zvck1hbnko
ZHJpdgogICAgICAgICAgICAgc2VsZi5sb2NhdG9yID0gbG9jYXRvcgogCiAgICAgICAgIGRlZiBf
X2NhbGxfXyhzZWxmLCBkcml2ZXIpOgotICAgICAgICAgICAgZWxlbWVudHMgPSBbZWxlbWVudCBm
b3IgZWxlbWVudCBpbiBFQy5fZmluZF9lbGVtZW50cyhkcml2ZXIsIHNlbGYubG9jYXRvcikgaWYg
RUMuX2VsZW1lbnRfaWZfdmlzaWJsZShlbGVtZW50KV0KKyAgICAgICAgICAgIGVsZW1lbnRzID0g
W2VsZW1lbnQgZm9yIGVsZW1lbnQgaW4gZHJpdmVyLmZpbmRfZWxlbWVudHMoKnNlbGYubG9jYXRv
cikgaWYgRUMuX2VsZW1lbnRfaWZfdmlzaWJsZShlbGVtZW50KV0KICAgICAgICAgICAgIHJldHVy
biBlbGVtZW50cyBpZiBsZW4oZWxlbWVudHMpID09IDIgZWxzZSBGYWxzZQogCiAgICAgZWxlbWVu
dHMgPSBXZWJEcml2ZXJXYWl0KGRyaXZlciwgMikudW50aWwod2FpdF9mb3JfdHdvX2VsZW1lbnRz
KChCeS5DTEFTU19OQU1FLCAicmVkYm94IikpKQpAQCAtOTIsNyArOTIsNyBAQCBkZWYgdGVzdFNo
b3VsZEZhaWxUb0ZpbmRWaXNpYmxlRWxlbWVudHNXaGVuRXhwbGljaXRXYWl0aW5nKGRyaXZlciwg
cGFnZXMpOgogCiBkZWYgdGVzdFNob3VsZFdhaXRVbnRpbEFsbFZpc2libGVFbGVtZW50c0FyZUZv
dW5kV2hlblNlYXJjaGluZ0Zvck1hbnkoZHJpdmVyLCBwYWdlcyk6CiAgICAgcGFnZXMubG9hZCgi
aGlkZGVuX3BhcnRpYWxseS5odG1sIikKLSAgICBhZGRfdmlzaWJsZSA9IGRyaXZlci5maW5kX2Vs
ZW1lbnRfYnlfaWQoImFkZFZpc2libGUiKQorICAgIGFkZF92aXNpYmxlID0gZHJpdmVyLmZpbmRf
ZWxlbWVudChCeS5JRCwgImFkZFZpc2libGUiKQogCiAgICAgYWRkX3Zpc2libGUuY2xpY2soKQog
ICAgIGFkZF92aXNpYmxlLmNsaWNrKCkKQEAgLTEwMyw4ICsxMDMsOCBAQCBkZWYgdGVzdFNob3Vs
ZFdhaXRVbnRpbEFsbFZpc2libGVFbGVtZW50c0FyZUZvdW5kV2hlblNlYXJjaGluZ0Zvck1hbnko
ZHJpdmVyLCBwYQogCiBkZWYgdGVzdFNob3VsZEZhaWxJZk5vdEFsbEVsZW1lbnRzQXJlVmlzaWJs
ZShkcml2ZXIsIHBhZ2VzKToKICAgICBwYWdlcy5sb2FkKCJoaWRkZW5fcGFydGlhbGx5Lmh0bWwi
KQotICAgIGFkZF92aXNpYmxlID0gZHJpdmVyLmZpbmRfZWxlbWVudF9ieV9pZCgiYWRkVmlzaWJs
ZSIpCi0gICAgYWRkX2hpZGRlbiA9IGRyaXZlci5maW5kX2VsZW1lbnRfYnlfaWQoImFkZEhpZGRl
biIpCisgICAgYWRkX3Zpc2libGUgPSBkcml2ZXIuZmluZF9lbGVtZW50KEJ5LklELCAiYWRkVmlz
aWJsZSIpCisgICAgYWRkX2hpZGRlbiA9IGRyaXZlci5maW5kX2VsZW1lbnQoQnkuSUQsICJhZGRI
aWRkZW4iKQogCiAgICAgYWRkX3Zpc2libGUuY2xpY2soKQogICAgIGFkZF9oaWRkZW4uY2xpY2so
KQpAQCAtMTIzLDcgKzEyMyw3IEBAIGRlZiB0ZXN0U2hvdWxkV2FpdE9ubHlBc0xvbmdBc1RpbWVv
dXRTcGVjaWZpZWRXaGVuSW1wbGljaXRXYWl0c0FyZVNldChkcml2ZXIsIHBhCiAKIGRlZiB0ZXN0
U2hvdWxkV2FpdEF0TGVhc3RPbmNlKGRyaXZlciwgcGFnZXMpOgogICAgIHBhZ2VzLmxvYWQoInNp
bXBsZVRlc3QuaHRtbCIpCi0gICAgZWxlbWVudHMgPSBXZWJEcml2ZXJXYWl0KGRyaXZlciwgMCku
dW50aWwobGFtYmRhIGQ6IGQuZmluZF9lbGVtZW50c19ieV90YWdfbmFtZSgnaDEnKSkKKyAgICBl
bGVtZW50cyA9IFdlYkRyaXZlcldhaXQoZHJpdmVyLCAwKS51bnRpbChsYW1iZGEgZDogZC5maW5k
X2VsZW1lbnRzKEJ5LlRBR19OQU1FLCAnaDEnKSkKICAgICBhc3NlcnQgbGVuKGVsZW1lbnRzKSA+
PSAxCiAKIApAQCAtMTY3LDIxICsxNjcsMjMgQEAgZGVmIHRlc3RFeHBlY3RlZENvbmRpdGlvblRp
dGxlQ29udGFpbnMoZHJpdmVyLCBwYWdlcyk6CiAgICAgICAgIFdlYkRyaXZlcldhaXQoZHJpdmVy
LCAwLjcpLnVudGlsKEVDLnRpdGxlX2NvbnRhaW5zKCJibGFua2V0IikpCiAKIAorQHB5dGVzdC5t
YXJrLnhmYWlsX3NhZmFyaQogZGVmIHRlc3RFeHBlY3RlZENvbmRpdGlvblZpc2liaWxpdHlPZkVs
ZW1lbnRMb2NhdGVkKGRyaXZlciwgcGFnZXMpOgogICAgIHBhZ2VzLmxvYWQoImphdmFzY3JpcHRQ
YWdlLmh0bWwiKQogICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhUaW1lb3V0RXhjZXB0aW9uKToKICAg
ICAgICAgV2ViRHJpdmVyV2FpdChkcml2ZXIsIDAuNykudW50aWwoRUMudmlzaWJpbGl0eV9vZl9l
bGVtZW50X2xvY2F0ZWQoKEJ5LklELCAnY2xpY2tUb0hpZGUnKSkpCi0gICAgZHJpdmVyLmZpbmRf
ZWxlbWVudF9ieV9pZCgnY2xpY2tUb1Nob3cnKS5jbGljaygpCisgICAgZHJpdmVyLmZpbmRfZWxl
bWVudChCeS5JRCwgJ2NsaWNrVG9TaG93JykuY2xpY2soKQogICAgIGVsZW1lbnQgPSBXZWJEcml2
ZXJXYWl0KGRyaXZlciwgNSkudW50aWwoRUMudmlzaWJpbGl0eV9vZl9lbGVtZW50X2xvY2F0ZWQo
KEJ5LklELCAnY2xpY2tUb0hpZGUnKSkpCiAgICAgYXNzZXJ0IGVsZW1lbnQuaXNfZGlzcGxheWVk
KCkgaXMgVHJ1ZQogCiAKK0BweXRlc3QubWFyay54ZmFpbF9zYWZhcmkKIGRlZiB0ZXN0RXhwZWN0
ZWRDb25kaXRpb25WaXNpYmlsaXR5T2YoZHJpdmVyLCBwYWdlcyk6CiAgICAgcGFnZXMubG9hZCgi
amF2YXNjcmlwdFBhZ2UuaHRtbCIpCi0gICAgaGlkZGVuID0gZHJpdmVyLmZpbmRfZWxlbWVudF9i
eV9pZCgnY2xpY2tUb0hpZGUnKQorICAgIGhpZGRlbiA9IGRyaXZlci5maW5kX2VsZW1lbnQoQnku
SUQsICdjbGlja1RvSGlkZScpCiAgICAgd2l0aCBweXRlc3QucmFpc2VzKFRpbWVvdXRFeGNlcHRp
b24pOgogICAgICAgICBXZWJEcml2ZXJXYWl0KGRyaXZlciwgMC43KS51bnRpbChFQy52aXNpYmls
aXR5X29mKGhpZGRlbikpCi0gICAgZHJpdmVyLmZpbmRfZWxlbWVudF9ieV9pZCgnY2xpY2tUb1No
b3cnKS5jbGljaygpCisgICAgZHJpdmVyLmZpbmRfZWxlbWVudChCeS5JRCwgJ2NsaWNrVG9TaG93
JykuY2xpY2soKQogICAgIGVsZW1lbnQgPSBXZWJEcml2ZXJXYWl0KGRyaXZlciwgNSkudW50aWwo
RUMudmlzaWJpbGl0eV9vZihoaWRkZW4pKQogICAgIGFzc2VydCBlbGVtZW50LmlzX2Rpc3BsYXll
ZCgpIGlzIFRydWUKIApAQCAtMTkyLDcgKzE5NCw3IEBAIGRlZiB0ZXN0RXhwZWN0ZWRDb25kaXRp
b25UZXh0VG9CZVByZXNlbnRJbkVsZW1lbnQoZHJpdmVyLCBwYWdlcyk6CiAgICAgICAgIFdlYkRy
aXZlcldhaXQoZHJpdmVyLCAwLjcpLnVudGlsKEVDLnRleHRfdG9fYmVfcHJlc2VudF9pbl9lbGVt
ZW50KChCeS5JRCwgJ3Vud3JhcHBhYmxlJyksICdFeHBlY3RlZCcpKQogICAgIGRyaXZlci5leGVj
dXRlX3NjcmlwdCgic2V0VGltZW91dChmdW5jdGlvbigpe3ZhciBlbCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCd1bndyYXBwYWJsZScpOyBlbC50ZXh0Q29udGVudCA9IGVsLmlubmVyVGV4dCA9
ICdVbndyYXBwYWJsZSBFeHBlY3RlZCB0ZXh0J30sIDIwMCkiKQogICAgIFdlYkRyaXZlcldhaXQo
ZHJpdmVyLCAxKS51bnRpbChFQy50ZXh0X3RvX2JlX3ByZXNlbnRfaW5fZWxlbWVudCgoQnkuSUQs
ICd1bndyYXBwYWJsZScpLCAnRXhwZWN0ZWQnKSkKLSAgICBhc3NlcnQgJ1Vud3JhcHBhYmxlIEV4
cGVjdGVkIHRleHQnID09IGRyaXZlci5maW5kX2VsZW1lbnRfYnlfaWQoJ3Vud3JhcHBhYmxlJyku
dGV4dAorICAgIGFzc2VydCAnVW53cmFwcGFibGUgRXhwZWN0ZWQgdGV4dCcgPT0gZHJpdmVyLmZp
bmRfZWxlbWVudChCeS5JRCwgJ3Vud3JhcHBhYmxlJykudGV4dAogCiAKIGRlZiB0ZXN0RXhwZWN0
ZWRDb25kaXRpb25UZXh0VG9CZVByZXNlbnRJbkVsZW1lbnRWYWx1ZShkcml2ZXIsIHBhZ2VzKToK
QEAgLTIwMSwxNiArMjAzLDcgQEAgZGVmIHRlc3RFeHBlY3RlZENvbmRpdGlvblRleHRUb0JlUHJl
c2VudEluRWxlbWVudFZhbHVlKGRyaXZlciwgcGFnZXMpOgogICAgICAgICBXZWJEcml2ZXJXYWl0
KGRyaXZlciwgMSkudW50aWwoRUMudGV4dF90b19iZV9wcmVzZW50X2luX2VsZW1lbnRfdmFsdWUo
KEJ5LklELCAnaW5wdXRSZXF1aXJlZCcpLCAnRXhwZWN0ZWQnKSkKICAgICBkcml2ZXIuZXhlY3V0
ZV9zY3JpcHQoInNldFRpbWVvdXQoZnVuY3Rpb24oKXtkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
aW5wdXRSZXF1aXJlZCcpLnZhbHVlID0gJ0V4YW1wbGUgRXhwZWN0ZWQgdGV4dCd9LCAyMDApIikK
ICAgICBXZWJEcml2ZXJXYWl0KGRyaXZlciwgMSkudW50aWwoRUMudGV4dF90b19iZV9wcmVzZW50
X2luX2VsZW1lbnRfdmFsdWUoKEJ5LklELCAnaW5wdXRSZXF1aXJlZCcpLCAnRXhwZWN0ZWQnKSkK
LSAgICBhc3NlcnQgJ0V4YW1wbGUgRXhwZWN0ZWQgdGV4dCcgPT0gZHJpdmVyLmZpbmRfZWxlbWVu
dF9ieV9pZCgnaW5wdXRSZXF1aXJlZCcpLmdldF9hdHRyaWJ1dGUoJ3ZhbHVlJykKLQotCi1kZWYg
dGVzdEV4cGVjdGVkQ29uZGl0aW9uRnJhbWVUb0JlQXZhaWxhYmxlQW5kU3dpdGNoVG9JdEJ5TmFt
ZShkcml2ZXIsIHBhZ2VzKToKLSAgICBwYWdlcy5sb2FkKCJibGFuay5odG1sIikKLSAgICB3aXRo
IHB5dGVzdC5yYWlzZXMoVGltZW91dEV4Y2VwdGlvbik6Ci0gICAgICAgIFdlYkRyaXZlcldhaXQo
ZHJpdmVyLCAxKS51bnRpbChFQy5mcmFtZV90b19iZV9hdmFpbGFibGVfYW5kX3N3aXRjaF90b19p
dCgnbXlGcmFtZScpKQotICAgIGRyaXZlci5leGVjdXRlX3NjcmlwdCgic2V0VGltZW91dChmdW5j
dGlvbigpe3ZhciBmID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaWZyYW1lJyk7IGYuaWQ9J215
RnJhbWUnOyBmLnNyYyA9ICciICsgcGFnZXMudXJsKCdpZnJhbWVXaXRoQWxlcnQuaHRtbCcpICsg
Iic7IGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZil9LCAyMDApIikKLSAgICBXZWJEcml2ZXJX
YWl0KGRyaXZlciwgMSkudW50aWwoRUMuZnJhbWVfdG9fYmVfYXZhaWxhYmxlX2FuZF9zd2l0Y2hf
dG9faXQoJ215RnJhbWUnKSkKLSAgICBhc3NlcnQgJ2NsaWNrIG1lJyA9PSBkcml2ZXIuZmluZF9l
bGVtZW50X2J5X2lkKCdhbGVydEluRnJhbWUnKS50ZXh0CisgICAgYXNzZXJ0ICdFeGFtcGxlIEV4
cGVjdGVkIHRleHQnID09IGRyaXZlci5maW5kX2VsZW1lbnQoQnkuSUQsICdpbnB1dFJlcXVpcmVk
JykuZ2V0X2F0dHJpYnV0ZSgndmFsdWUnKQogCiAKIGRlZiB0ZXN0RXhwZWN0ZWRDb25kaXRpb25G
cmFtZVRvQmVBdmFpbGFibGVBbmRTd2l0Y2hUb0l0QnlMb2NhdG9yKGRyaXZlciwgcGFnZXMpOgpA
QCAtMjE5LDEyICsyMTIsMTIgQEAgZGVmIHRlc3RFeHBlY3RlZENvbmRpdGlvbkZyYW1lVG9CZUF2
YWlsYWJsZUFuZFN3aXRjaFRvSXRCeUxvY2F0b3IoZHJpdmVyLCBwYWdlcykKICAgICAgICAgV2Vi
RHJpdmVyV2FpdChkcml2ZXIsIDEpLnVudGlsKEVDLmZyYW1lX3RvX2JlX2F2YWlsYWJsZV9hbmRf
c3dpdGNoX3RvX2l0KChCeS5JRCwgJ215RnJhbWUnKSkpCiAgICAgZHJpdmVyLmV4ZWN1dGVfc2Ny
aXB0KCJzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dmFyIGYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdpZnJhbWUnKTsgZi5pZD0nbXlGcmFtZSc7IGYuc3JjID0gJyIgKyBwYWdlcy51cmwoJ2lmcmFt
ZVdpdGhBbGVydC5odG1sJykgKyAiJzsgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChmKX0sIDIw
MCkiKQogICAgIFdlYkRyaXZlcldhaXQoZHJpdmVyLCAxKS51bnRpbChFQy5mcmFtZV90b19iZV9h
dmFpbGFibGVfYW5kX3N3aXRjaF90b19pdCgoQnkuSUQsICdteUZyYW1lJykpKQotICAgIGFzc2Vy
dCAnY2xpY2sgbWUnID09IGRyaXZlci5maW5kX2VsZW1lbnRfYnlfaWQoJ2FsZXJ0SW5GcmFtZScp
LnRleHQKKyAgICBhc3NlcnQgJ2NsaWNrIG1lJyA9PSBkcml2ZXIuZmluZF9lbGVtZW50KEJ5LklE
LCAnYWxlcnRJbkZyYW1lJykudGV4dAogCiAKIGRlZiB0ZXN0RXhwZWN0ZWRDb25kaXRpb25JbnZp
c2libGl0eU9mRWxlbWVudChkcml2ZXIsIHBhZ2VzKToKICAgICBwYWdlcy5sb2FkKCJqYXZhc2Ny
aXB0UGFnZS5odG1sIikKLSAgICB0YXJnZXQgPSBkcml2ZXIuZmluZF9lbGVtZW50X2J5X2lkKCdj
bGlja1RvSGlkZScpCisgICAgdGFyZ2V0ID0gZHJpdmVyLmZpbmRfZWxlbWVudChCeS5JRCwgJ2Ns
aWNrVG9IaWRlJykKICAgICBkcml2ZXIuZXhlY3V0ZV9zY3JpcHQoImRlbGF5ZWRTaG93SGlkZSgw
LCB0cnVlKSIpCiAgICAgd2l0aCBweXRlc3QucmFpc2VzKFRpbWVvdXRFeGNlcHRpb24pOgogICAg
ICAgICBXZWJEcml2ZXJXYWl0KGRyaXZlciwgMC43KS51bnRpbChFQy5pbnZpc2liaWxpdHlfb2Zf
ZWxlbWVudCh0YXJnZXQpKQpAQCAtMjQ0LDEzICsyMzcsMTQgQEAgZGVmIHRlc3RFeHBlY3RlZENv
bmRpdGlvbkludmlzaWJsaXR5T2ZFbGVtZW50TG9jYXRlZChkcml2ZXIsIHBhZ2VzKToKICAgICBh
c3NlcnQgZWxlbWVudC5pc19kaXNwbGF5ZWQoKSBpcyBGYWxzZQogCiAKK0BweXRlc3QubWFyay54
ZmFpbF9zYWZhcmkKIGRlZiB0ZXN0RXhwZWN0ZWRDb25kaXRpb25FbGVtZW50VG9CZUNsaWNrYWJs
ZShkcml2ZXIsIHBhZ2VzKToKICAgICBwYWdlcy5sb2FkKCJqYXZhc2NyaXB0UGFnZS5odG1sIikK
ICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoVGltZW91dEV4Y2VwdGlvbik6CiAgICAgICAgIFdlYkRy
aXZlcldhaXQoZHJpdmVyLCAwLjcpLnVudGlsKEVDLmVsZW1lbnRfdG9fYmVfY2xpY2thYmxlKChC
eS5JRCwgJ2NsaWNrVG9IaWRlJykpKQogICAgIGRyaXZlci5leGVjdXRlX3NjcmlwdCgiZGVsYXll
ZFNob3dIaWRlKDIwMCwgdHJ1ZSkiKQogICAgIFdlYkRyaXZlcldhaXQoZHJpdmVyLCAwLjcpLnVu
dGlsKEVDLmVsZW1lbnRfdG9fYmVfY2xpY2thYmxlKChCeS5JRCwgJ2NsaWNrVG9IaWRlJykpKQot
ICAgIGVsZW1lbnQgPSBkcml2ZXIuZmluZF9lbGVtZW50X2J5X2lkKCdjbGlja1RvSGlkZScpCisg
ICAgZWxlbWVudCA9IGRyaXZlci5maW5kX2VsZW1lbnQoQnkuSUQsICdjbGlja1RvSGlkZScpCiAg
ICAgZWxlbWVudC5jbGljaygpCiAgICAgV2ViRHJpdmVyV2FpdChkcml2ZXIsIDMuNSkudW50aWwo
RUMuaW52aXNpYmlsaXR5X29mX2VsZW1lbnRfbG9jYXRlZCgoQnkuSUQsICdjbGlja1RvSGlkZScp
KSkKICAgICBhc3NlcnQgZWxlbWVudC5pc19kaXNwbGF5ZWQoKSBpcyBGYWxzZQpAQCAtMjU4LDEw
ICsyNTIsMTAgQEAgZGVmIHRlc3RFeHBlY3RlZENvbmRpdGlvbkVsZW1lbnRUb0JlQ2xpY2thYmxl
KGRyaXZlciwgcGFnZXMpOgogCiBkZWYgdGVzdEV4cGVjdGVkQ29uZGl0aW9uU3RhbGVuZXNzT2Yo
ZHJpdmVyLCBwYWdlcyk6CiAgICAgcGFnZXMubG9hZCgnZHluYW1pY2FsbHlNb2RpZmllZFBhZ2Uu
aHRtbCcpCi0gICAgZWxlbWVudCA9IGRyaXZlci5maW5kX2VsZW1lbnRfYnlfaWQoJ2VsZW1lbnQt
dG8tcmVtb3ZlJykKKyAgICBlbGVtZW50ID0gZHJpdmVyLmZpbmRfZWxlbWVudChCeS5JRCwgJ2Vs
ZW1lbnQtdG8tcmVtb3ZlJykKICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoVGltZW91dEV4Y2VwdGlv
bik6CiAgICAgICAgIFdlYkRyaXZlcldhaXQoZHJpdmVyLCAwLjcpLnVudGlsKEVDLnN0YWxlbmVz
c19vZihlbGVtZW50KSkKLSAgICBkcml2ZXIuZmluZF9lbGVtZW50X2J5X2lkKCdidXR0b25EZWxl
dGUnKS5jbGljaygpCisgICAgZHJpdmVyLmZpbmRfZWxlbWVudChCeS5JRCwgJ2J1dHRvbkRlbGV0
ZScpLmNsaWNrKCkKICAgICBhc3NlcnQgJ2VsZW1lbnQnID09IGVsZW1lbnQudGV4dAogICAgIFdl
YkRyaXZlcldhaXQoZHJpdmVyLCAwLjcpLnVudGlsKEVDLnN0YWxlbmVzc19vZihlbGVtZW50KSkK
ICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoU3RhbGVFbGVtZW50UmVmZXJlbmNlRXhjZXB0aW9uKToK
QEAgLTI3MCw3ICsyNjQsNyBAQCBkZWYgdGVzdEV4cGVjdGVkQ29uZGl0aW9uU3RhbGVuZXNzT2Yo
ZHJpdmVyLCBwYWdlcyk6CiAKIGRlZiB0ZXN0RXhwZWN0ZWRDb25kaXRpb25FbGVtZW50VG9CZVNl
bGVjdGVkKGRyaXZlciwgcGFnZXMpOgogICAgIHBhZ2VzLmxvYWQoImZvcm1QYWdlLmh0bWwiKQot
ICAgIGVsZW1lbnQgPSBkcml2ZXIuZmluZF9lbGVtZW50X2J5X2lkKCdjaGVja3knKQorICAgIGVs
ZW1lbnQgPSBkcml2ZXIuZmluZF9lbGVtZW50KEJ5LklELCAnY2hlY2t5JykKICAgICB3aXRoIHB5
dGVzdC5yYWlzZXMoVGltZW91dEV4Y2VwdGlvbik6CiAgICAgICAgIFdlYkRyaXZlcldhaXQoZHJp
dmVyLCAwLjcpLnVudGlsKEVDLmVsZW1lbnRfdG9fYmVfc2VsZWN0ZWQoZWxlbWVudCkpCiAgICAg
ZHJpdmVyLmV4ZWN1dGVfc2NyaXB0KCJzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2NoZWNreScpLmNoZWNrZWQgPSB0cnVlfSwgMjAwKSIpCkBAIC0yODAsNyAr
Mjc0LDcgQEAgZGVmIHRlc3RFeHBlY3RlZENvbmRpdGlvbkVsZW1lbnRUb0JlU2VsZWN0ZWQoZHJp
dmVyLCBwYWdlcyk6CiAKIGRlZiB0ZXN0RXhwZWN0ZWRDb25kaXRpb25FbGVtZW50TG9jYXRlZFRv
QmVTZWxlY3RlZChkcml2ZXIsIHBhZ2VzKToKICAgICBwYWdlcy5sb2FkKCJmb3JtUGFnZS5odG1s
IikKLSAgICBlbGVtZW50ID0gZHJpdmVyLmZpbmRfZWxlbWVudF9ieV9pZCgnY2hlY2t5JykKKyAg
ICBlbGVtZW50ID0gZHJpdmVyLmZpbmRfZWxlbWVudChCeS5JRCwgJ2NoZWNreScpCiAgICAgd2l0
aCBweXRlc3QucmFpc2VzKFRpbWVvdXRFeGNlcHRpb24pOgogICAgICAgICBXZWJEcml2ZXJXYWl0
KGRyaXZlciwgMC43KS51bnRpbChFQy5lbGVtZW50X2xvY2F0ZWRfdG9fYmVfc2VsZWN0ZWQoKEJ5
LklELCAnY2hlY2t5JykpKQogICAgIGRyaXZlci5leGVjdXRlX3NjcmlwdCgic2V0VGltZW91dChm
dW5jdGlvbigpe2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjaGVja3knKS5jaGVja2VkID0gdHJ1
ZX0sIDIwMCkiKQpAQCAtMjkwLDcgKzI4NCw3IEBAIGRlZiB0ZXN0RXhwZWN0ZWRDb25kaXRpb25F
bGVtZW50TG9jYXRlZFRvQmVTZWxlY3RlZChkcml2ZXIsIHBhZ2VzKToKIAogZGVmIHRlc3RFeHBl
Y3RlZENvbmRpdGlvbkVsZW1lbnRTZWxlY3Rpb25TdGF0ZVRvQmUoZHJpdmVyLCBwYWdlcyk6CiAg
ICAgcGFnZXMubG9hZCgiZm9ybVBhZ2UuaHRtbCIpCi0gICAgZWxlbWVudCA9IGRyaXZlci5maW5k
X2VsZW1lbnRfYnlfaWQoJ2NoZWNreScpCisgICAgZWxlbWVudCA9IGRyaXZlci5maW5kX2VsZW1l
bnQoQnkuSUQsICdjaGVja3knKQogICAgIFdlYkRyaXZlcldhaXQoZHJpdmVyLCAwLjcpLnVudGls
KEVDLmVsZW1lbnRfc2VsZWN0aW9uX3N0YXRlX3RvX2JlKGVsZW1lbnQsIEZhbHNlKSkKICAgICBh
c3NlcnQgZWxlbWVudC5pc19zZWxlY3RlZCgpIGlzIEZhbHNlCiAgICAgd2l0aCBweXRlc3QucmFp
c2VzKFRpbWVvdXRFeGNlcHRpb24pOgpAQCAtMzAyLDcgKzI5Niw3IEBAIGRlZiB0ZXN0RXhwZWN0
ZWRDb25kaXRpb25FbGVtZW50U2VsZWN0aW9uU3RhdGVUb0JlKGRyaXZlciwgcGFnZXMpOgogCiBk
ZWYgdGVzdEV4cGVjdGVkQ29uZGl0aW9uRWxlbWVudExvY2F0ZWRTZWxlY3Rpb25TdGF0ZVRvQmUo
ZHJpdmVyLCBwYWdlcyk6CiAgICAgcGFnZXMubG9hZCgiZm9ybVBhZ2UuaHRtbCIpCi0gICAgZWxl
bWVudCA9IGRyaXZlci5maW5kX2VsZW1lbnRfYnlfaWQoJ2NoZWNreScpCisgICAgZWxlbWVudCA9
IGRyaXZlci5maW5kX2VsZW1lbnQoQnkuSUQsICdjaGVja3knKQogICAgIFdlYkRyaXZlcldhaXQo
ZHJpdmVyLCAwLjcpLnVudGlsKEVDLmVsZW1lbnRfbG9jYXRlZF9zZWxlY3Rpb25fc3RhdGVfdG9f
YmUoKEJ5LklELCAnY2hlY2t5JyksIEZhbHNlKSkKICAgICBhc3NlcnQgZWxlbWVudC5pc19zZWxl
Y3RlZCgpIGlzIEZhbHNlCiAgICAgd2l0aCBweXRlc3QucmFpc2VzKFRpbWVvdXRFeGNlcHRpb24p
OgpkaWZmIC0tZ2l0IGEvV2ViRHJpdmVyVGVzdHMvaW1wb3J0ZWQvc2VsZW5pdW0vcHkvdGVzdC9z
ZWxlbml1bS93ZWJkcml2ZXIvY29tbW9uL3dpbmRvd19zd2l0Y2hpbmdfdGVzdHMucHkgYi9XZWJE
cml2ZXJUZXN0cy9pbXBvcnRlZC9zZWxlbml1bS9weS90ZXN0L3NlbGVuaXVtL3dlYmRyaXZlci9j
b21tb24vd2luZG93X3N3aXRjaGluZ190ZXN0cy5weQppbmRleCBkODkyNjNiMmQ0OTc5Y2FiNjlk
ZjQ5ZGNlODk1MmZmYWI1NzM2ODE0Li5iMTFkMmUzZTBjYjI1Nzk2ZjA3M2Y2MjYwM2E5M2FhYjNm
ZjAxYTNlIDEwMDY0NAotLS0gYS9XZWJEcml2ZXJUZXN0cy9pbXBvcnRlZC9zZWxlbml1bS9weS90
ZXN0L3NlbGVuaXVtL3dlYmRyaXZlci9jb21tb24vd2luZG93X3N3aXRjaGluZ190ZXN0cy5weQor
KysgYi9XZWJEcml2ZXJUZXN0cy9pbXBvcnRlZC9zZWxlbml1bS9weS90ZXN0L3NlbGVuaXVtL3dl
YmRyaXZlci9jb21tb24vd2luZG93X3N3aXRjaGluZ190ZXN0cy5weQpAQCAtNTAsNyArNTAsNyBA
QCBkZWYgdGVzdFNob3VsZFN3aXRjaEZvY3VzVG9BTmV3V2luZG93V2hlbkl0SXNPcGVuZWRBbmRO
b3RTdG9wRnV0dXJlT3BlcmF0aW9ucyhkcgogICAgIHBhZ2VzLmxvYWQoInhodG1sVGVzdC5odG1s
IikKICAgICBjdXJyZW50ID0gZHJpdmVyLmN1cnJlbnRfd2luZG93X2hhbmRsZQogCi0gICAgZHJp
dmVyLmZpbmRfZWxlbWVudF9ieV9saW5rX3RleHQoIk9wZW4gbmV3IHdpbmRvdyIpLmNsaWNrKCkK
KyAgICBkcml2ZXIuZmluZF9lbGVtZW50KEJ5LkxJTktfVEVYVCwgIk9wZW4gbmV3IHdpbmRvdyIp
LmNsaWNrKCkKICAgICBhc3NlcnQgZHJpdmVyLnRpdGxlID09ICJYSFRNTCBUZXN0IFBhZ2UiCiAg
ICAgaGFuZGxlcyA9IGRyaXZlci53aW5kb3dfaGFuZGxlcwogICAgIGhhbmRsZXMucmVtb3ZlKGN1
cnJlbnQpCkBAIC01OSw3ICs1OSw3IEBAIGRlZiB0ZXN0U2hvdWxkU3dpdGNoRm9jdXNUb0FOZXdX
aW5kb3dXaGVuSXRJc09wZW5lZEFuZE5vdFN0b3BGdXR1cmVPcGVyYXRpb25zKGRyCiAKICAgICBw
YWdlcy5sb2FkKCJpZnJhbWVzLmh0bWwiKQogICAgIGhhbmRsZSA9IGRyaXZlci5jdXJyZW50X3dp
bmRvd19oYW5kbGUKLSAgICBkcml2ZXIuZmluZF9lbGVtZW50X2J5X2lkKCJpZnJhbWVfcGFnZV9o
ZWFkaW5nIikKKyAgICBkcml2ZXIuZmluZF9lbGVtZW50KEJ5LklELCAiaWZyYW1lX3BhZ2VfaGVh
ZGluZyIpCiAgICAgZHJpdmVyLnN3aXRjaF90by5mcmFtZShkcml2ZXIuZmluZF9lbGVtZW50KEJ5
LklELCAiaWZyYW1lMSIpKQogICAgIGFzc2VydCBkcml2ZXIuY3VycmVudF93aW5kb3dfaGFuZGxl
ID09IGhhbmRsZQogCkBAIC03OSw2ICs3OSw3IEBAIGRlZiB0ZXN0U2hvdWxkVGhyb3dOb1N1Y2hX
aW5kb3dFeGNlcHRpb24oZHJpdmVyLCBwYWdlcyk6CiAgICAgICAgIGRyaXZlci5zd2l0Y2hfdG8u
d2luZG93KCJpbnZhbGlkIG5hbWUiKQogCiAKK0BweXRlc3QubWFyay54ZmFpbF9zYWZhcmkKIGRl
ZiB0ZXN0U2hvdWxkVGhyb3dOb1N1Y2hXaW5kb3dFeGNlcHRpb25PbkFuQXR0ZW1wdFRvR2V0SXRz
SGFuZGxlKGRyaXZlciwgcGFnZXMpOgogICAgIHBhZ2VzLmxvYWQoInhodG1sVGVzdC5odG1sIikK
ICAgICBjdXJyZW50ID0gZHJpdmVyLmN1cnJlbnRfd2luZG93X2hhbmRsZQpAQCAtMTEwLDEwICsx
MTEsMTEgQEAgZGVmIHRlc3RTaG91bGRUaHJvd05vU3VjaFdpbmRvd0V4Y2VwdGlvbk9uQW55T3Bl
cmF0aW9uSWZBV2luZG93SXNDbG9zZWQoZHJpdmVyLAogICAgICAgICBkcml2ZXIudGl0bGUKIAog
ICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhOb1N1Y2hXaW5kb3dFeGNlcHRpb24pOgotICAgICAgICBk
cml2ZXIuZmluZF9lbGVtZW50X2J5X3RhZ19uYW1lKCJib2R5IikKKyAgICAgICAgZHJpdmVyLmZp
bmRfZWxlbWVudChCeS5UQUdfTkFNRSwgImJvZHkiKQogCiAKIEBweXRlc3QubWFyay54ZmFpbF9p
ZQorQHB5dGVzdC5tYXJrLnhmYWlsX3NhZmFyaQogZGVmIHRlc3RTaG91bGRUaHJvd05vU3VjaFdp
bmRvd0V4Y2VwdGlvbk9uQW55RWxlbWVudE9wZXJhdGlvbklmQVdpbmRvd0lzQ2xvc2VkKGRyaXZl
ciwgcGFnZXMpOgogICAgIHBhZ2VzLmxvYWQoInhodG1sVGVzdC5odG1sIikKICAgICBjdXJyZW50
ID0gZHJpdmVyLmN1cnJlbnRfd2luZG93X2hhbmRsZQpAQCAtMTIzLDcgKzEyNSw3IEBAIGRlZiB0
ZXN0U2hvdWxkVGhyb3dOb1N1Y2hXaW5kb3dFeGNlcHRpb25PbkFueUVsZW1lbnRPcGVyYXRpb25J
ZkFXaW5kb3dJc0Nsb3NlZChkCiAgICAgaGFuZGxlcyA9IGRyaXZlci53aW5kb3dfaGFuZGxlcwog
ICAgIGhhbmRsZXMucmVtb3ZlKGN1cnJlbnQpCiAgICAgZHJpdmVyLnN3aXRjaF90by53aW5kb3co
aGFuZGxlc1swXSkKLSAgICBlbGVtZW50ID0gZHJpdmVyLmZpbmRfZWxlbWVudF9ieV90YWdfbmFt
ZSgiYm9keSIpCisgICAgZWxlbWVudCA9IGRyaXZlci5maW5kX2VsZW1lbnQoQnkuVEFHX05BTUUs
ICJib2R5IikKICAgICBkcml2ZXIuY2xvc2UoKQogCiAgICAgd2l0aCBweXRlc3QucmFpc2VzKE5v
U3VjaFdpbmRvd0V4Y2VwdGlvbik6CkBAIC0xMzQsMjcgKzEzNiwyOCBAQCBkZWYgdGVzdENsaWNr
aW5nT25BQnV0dG9uVGhhdENsb3Nlc0FuT3BlbldpbmRvd0RvZXNOb3RDYXVzZVRoZUJyb3dzZXJU
b0hhbmcoZHJpdgogICAgIHBhZ2VzLmxvYWQoInhodG1sVGVzdC5odG1sIikKICAgICBjdXJyZW50
ID0gZHJpdmVyLmN1cnJlbnRfd2luZG93X2hhbmRsZQogICAgIGhhbmRsZXMgPSBkcml2ZXIud2lu
ZG93X2hhbmRsZXMKLSAgICBkcml2ZXIuZmluZF9lbGVtZW50X2J5X25hbWUoIndpbmRvd1RocmVl
IikuY2xpY2soKQorICAgIGRyaXZlci5maW5kX2VsZW1lbnQoQnkuTkFNRSwgIndpbmRvd1RocmVl
IikuY2xpY2soKQogICAgIFdlYkRyaXZlcldhaXQoZHJpdmVyLCAzKS51bnRpbChFQy5uZXdfd2lu
ZG93X2lzX29wZW5lZChoYW5kbGVzKSkKICAgICBoYW5kbGVzID0gZHJpdmVyLndpbmRvd19oYW5k
bGVzCiAgICAgaGFuZGxlcy5yZW1vdmUoY3VycmVudCkKICAgICBkcml2ZXIuc3dpdGNoX3RvLndp
bmRvdyhoYW5kbGVzWzBdKQotICAgIGRyaXZlci5maW5kX2VsZW1lbnRfYnlfaWQoImNsb3NlIiku
Y2xpY2soKQorICAgIGRyaXZlci5maW5kX2VsZW1lbnQoQnkuSUQsICJjbG9zZSIpLmNsaWNrKCkK
ICAgICBkcml2ZXIuc3dpdGNoX3RvLndpbmRvdyhjdXJyZW50KQotICAgIGRyaXZlci5maW5kX2Vs
ZW1lbnRfYnlfaWQoImxpbmtJZCIpCisgICAgZHJpdmVyLmZpbmRfZWxlbWVudChCeS5JRCwgImxp
bmtJZCIpCiAKIAorQHB5dGVzdC5tYXJrLnhmYWlsX3NhZmFyaQogZGVmIHRlc3RDYW5DYWxsR2V0
V2luZG93SGFuZGxlc0FmdGVyQ2xvc2luZ0FXaW5kb3coZHJpdmVyLCBwYWdlcyk6CiAgICAgcGFn
ZXMubG9hZCgieGh0bWxUZXN0Lmh0bWwiKQogICAgIGN1cnJlbnQgPSBkcml2ZXIuY3VycmVudF93
aW5kb3dfaGFuZGxlCiAgICAgaGFuZGxlcyA9IGRyaXZlci53aW5kb3dfaGFuZGxlcwotICAgIGRy
aXZlci5maW5kX2VsZW1lbnRfYnlfbmFtZSgid2luZG93VGhyZWUiKS5jbGljaygpCisgICAgZHJp
dmVyLmZpbmRfZWxlbWVudChCeS5OQU1FLCAid2luZG93VGhyZWUiKS5jbGljaygpCiAgICAgV2Vi
RHJpdmVyV2FpdChkcml2ZXIsIDMpLnVudGlsKEVDLm5ld193aW5kb3dfaXNfb3BlbmVkKGhhbmRs
ZXMpKQogICAgIGhhbmRsZXMgPSBkcml2ZXIud2luZG93X2hhbmRsZXMKICAgICBoYW5kbGVzLnJl
bW92ZShjdXJyZW50KQogICAgIGRyaXZlci5zd2l0Y2hfdG8ud2luZG93KGhhbmRsZXNbMF0pCiAK
LSAgICBkcml2ZXIuZmluZF9lbGVtZW50X2J5X2lkKCJjbG9zZSIpLmNsaWNrKCkKKyAgICBkcml2
ZXIuZmluZF9lbGVtZW50KEJ5LklELCAiY2xvc2UiKS5jbGljaygpCiAgICAgV2ViRHJpdmVyV2Fp
dChkcml2ZXIsIDMpLnVudGlsKEVDLm51bWJlcl9vZl93aW5kb3dzX3RvX2JlKDEpKQogCiAKQEAg
LTE3MywyMSArMTc2LDIyIEBAIGRlZiB0ZXN0RmFpbGluZ1RvU3dpdGNoVG9BV2luZG93TGVhdmVz
VGhlQ3VycmVudFdpbmRvd0FzSXMoZHJpdmVyLCBwYWdlcyk6CiAgICAgYXNzZXJ0IGN1cnJlbnQg
PT0gbmV3X2hhbmRsZQogCiAKK0BweXRlc3QubWFyay54ZmFpbF9zYWZhcmkKIGRlZiB0ZXN0VGhh
dEFjY2Vzc2luZ0ZpbmRpbmdBbkVsZW1lbnRBZnRlcldpbmRvd0lzQ2xvc2VkQW5kSGF2ZW50c3dp
dGNoZWREb2VzbnRDcmFzaChkcml2ZXIsIHBhZ2VzKToKICAgICBwYWdlcy5sb2FkKCJ4aHRtbFRl
c3QuaHRtbCIpCiAgICAgY3VycmVudCA9IGRyaXZlci5jdXJyZW50X3dpbmRvd19oYW5kbGUKICAg
ICBoYW5kbGVzID0gZHJpdmVyLndpbmRvd19oYW5kbGVzCi0gICAgZHJpdmVyLmZpbmRfZWxlbWVu
dF9ieV9uYW1lKCJ3aW5kb3dUaHJlZSIpLmNsaWNrKCkKKyAgICBkcml2ZXIuZmluZF9lbGVtZW50
KEJ5Lk5BTUUsICJ3aW5kb3dUaHJlZSIpLmNsaWNrKCkKICAgICBXZWJEcml2ZXJXYWl0KGRyaXZl
ciwgMykudW50aWwoRUMubmV3X3dpbmRvd19pc19vcGVuZWQoaGFuZGxlcykpCiAgICAgaGFuZGxl
cyA9IGRyaXZlci53aW5kb3dfaGFuZGxlcwogICAgIGhhbmRsZXMucmVtb3ZlKGN1cnJlbnQpCiAg
ICAgZHJpdmVyLnN3aXRjaF90by53aW5kb3coaGFuZGxlc1swXSkKIAogICAgIHdpdGggcHl0ZXN0
LnJhaXNlcyhXZWJEcml2ZXJFeGNlcHRpb24pOgotICAgICAgICBkcml2ZXIuZmluZF9lbGVtZW50
X2J5X2lkKCJjbG9zZSIpLmNsaWNrKCkKKyAgICAgICAgZHJpdmVyLmZpbmRfZWxlbWVudChCeS5J
RCwgImNsb3NlIikuY2xpY2soKQogICAgICAgICBhbGxfaGFuZGxlcyA9IGRyaXZlci53aW5kb3df
aGFuZGxlcwogICAgICAgICBhc3NlcnQgMSA9PSBsZW4oYWxsX2hhbmRsZXMpCi0gICAgICAgIGRy
aXZlci5maW5kX2VsZW1lbnRfYnlfaWQoImNsb3NlIikKKyAgICAgICAgZHJpdmVyLmZpbmRfZWxl
bWVudChCeS5JRCwgImNsb3NlIikKICAgICBkcml2ZXIuc3dpdGNoX3RvLndpbmRvdyhjdXJyZW50
KQogCiAKZGlmZiAtLWdpdCBhL1dlYkRyaXZlclRlc3RzL2ltcG9ydGVkL3NlbGVuaXVtL3B5L3Rl
c3Qvc2VsZW5pdW0vd2ViZHJpdmVyL2NvbW1vbi93aW5kb3dfdGVzdHMucHkgYi9XZWJEcml2ZXJU
ZXN0cy9pbXBvcnRlZC9zZWxlbml1bS9weS90ZXN0L3NlbGVuaXVtL3dlYmRyaXZlci9jb21tb24v
d2luZG93X3Rlc3RzLnB5CmluZGV4IDlmMTA4ZjI5YThkNTRhMzMxZTU3ZTI0YmRkZTg3OGZmMjc3
MjM5OWEuLjg1ZWIyNDdiMjk4NjNjZTIzN2RlYTlkODEyNzAxZmRiMDBmOTNhNmMgMTAwNjQ0Ci0t
LSBhL1dlYkRyaXZlclRlc3RzL2ltcG9ydGVkL3NlbGVuaXVtL3B5L3Rlc3Qvc2VsZW5pdW0vd2Vi
ZHJpdmVyL2NvbW1vbi93aW5kb3dfdGVzdHMucHkKKysrIGIvV2ViRHJpdmVyVGVzdHMvaW1wb3J0
ZWQvc2VsZW5pdW0vcHkvdGVzdC9zZWxlbml1bS93ZWJkcml2ZXIvY29tbW9uL3dpbmRvd190ZXN0
cy5weQpAQCAtMjMsNyArMjMsNiBAQCBmcm9tIHNlbGVuaXVtLndlYmRyaXZlci5zdXBwb3J0Lndh
aXQgaW1wb3J0IFdlYkRyaXZlcldhaXQKIAogQHB5dGVzdC5tYXJrLnhmYWlsX2llCiBAcHl0ZXN0
Lm1hcmsueGZhaWxfY2hyb21pdW1lZGdlKHJlYXNvbj0iRmFpbHMgb24gVHJhdmlzIikKLUBweXRl
c3QubWFyay54ZmFpbF9tYXJpb25ldHRlKHJlYXNvbj0iRmFpbHMgb24gVHJhdmlzIikKIEBweXRl
c3QubWFyay54ZmFpbF9maXJlZm94KHJlYXNvbj0iRmFpbHMgb24gVHJhdmlzIikKIEBweXRlc3Qu
bWFyay54ZmFpbF9yZW1vdGUocmVhc29uPSJGYWlscyBvbiBUcmF2aXMiKQogZGVmIHRlc3RTaG91
bGRNYXhpbWl6ZVRoZVdpbmRvdyhkcml2ZXIpOgpAQCAtNzIsMTYgKzcxLDE0IEBAIGRlZiB0ZXN0
X3Nob3VsZF9zZXRfdGhlX3Bvc2l0aW9uX29mX3RoZV9jdXJyZW50X3dpbmRvdyhkcml2ZXIpOgog
ICAgIHRhcmdldF95ID0gcG9zaXRpb24uZ2V0KCd5JykgKyAxMAogICAgIGRyaXZlci5zZXRfd2lu
ZG93X3Bvc2l0aW9uKHg9dGFyZ2V0X3gsIHk9dGFyZ2V0X3kpCiAKLSAgICBXZWJEcml2ZXJXYWl0
KGRyaXZlciwgMikudW50aWwobGFtYmRhIGQ6IGQuZ2V0X3dpbmRvd19wb3NpdGlvbigpWyd4J10g
IT0gcG9zaXRpb25bJ3gnXSBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZC5nZXRfd2luZG93X3Bvc2l0aW9uKClbJ3knXSAhPSBwb3NpdGlvblsneSddKQorICAgIFdlYkRy
aXZlcldhaXQoZHJpdmVyLCAyKVwKKyAgICAgICAgLnVudGlsKGxhbWJkYSBkOiBkLmdldF93aW5k
b3dfcG9zaXRpb24oKVsneCddICE9IHBvc2l0aW9uWyd4J10gYW5kIGQuZ2V0X3dpbmRvd19wb3Np
dGlvbigpWyd5J10gIT0gcG9zaXRpb25bJ3knXSkKIAogICAgIG5ld19wb3NpdGlvbiA9IGRyaXZl
ci5nZXRfd2luZG93X3Bvc2l0aW9uKCkKICAgICBhc3NlcnQgbmV3X3Bvc2l0aW9uLmdldCgneCcp
ID09IHRhcmdldF94CiAgICAgYXNzZXJ0IG5ld19wb3NpdGlvbi5nZXQoJ3knKSA9PSB0YXJnZXRf
eQogCiAKLUBweXRlc3QubWFyay54ZmFpbF9maXJlZm94KHJhaXNlcz1XZWJEcml2ZXJFeGNlcHRp
b24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICByZWFzb249J0dldCBXaW5kb3cgUmVjdCBj
b21tYW5kIG5vdCBpbXBsZW1lbnRlZCcpCiBAcHl0ZXN0Lm1hcmsueGZhaWxfc2FmYXJpKHJhaXNl
cz1XZWJEcml2ZXJFeGNlcHRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYXNvbj0n
R2V0IFdpbmRvdyBSZWN0IGNvbW1hbmQgbm90IGltcGxlbWVudGVkJykKIGRlZiB0ZXN0X3Nob3Vs
ZF9nZXRfdGhlX3JlY3Rfb2ZfdGhlX2N1cnJlbnRfd2luZG93KGRyaXZlcik6CkBAIC05Miw4ICs4
OSw2IEBAIGRlZiB0ZXN0X3Nob3VsZF9nZXRfdGhlX3JlY3Rfb2ZfdGhlX2N1cnJlbnRfd2luZG93
KGRyaXZlcik6CiAgICAgYXNzZXJ0IHJlY3QuZ2V0KCdoZWlnaHQnKSA+PSAwCiAKIAotQHB5dGVz
dC5tYXJrLnhmYWlsX2ZpcmVmb3gocmFpc2VzPVdlYkRyaXZlckV4Y2VwdGlvbiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlYXNvbj0nR2V0IFdpbmRvdyBSZWN0IGNvbW1hbmQgbm90IGlt
cGxlbWVudGVkJykKIEBweXRlc3QubWFyay54ZmFpbF9zYWZhcmkocmFpc2VzPVdlYkRyaXZlckV4
Y2VwdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhc29uPSdHZXQgV2luZG93IFJl
Y3QgY29tbWFuZCBub3QgaW1wbGVtZW50ZWQnKQogZGVmIHRlc3Rfc2hvdWxkX3NldF90aGVfcmVj
dF9vZl90aGVfY3VycmVudF93aW5kb3coZHJpdmVyKToKQEAgLTEwNiw4ICsxMDEsOCBAQCBkZWYg
dGVzdF9zaG91bGRfc2V0X3RoZV9yZWN0X29mX3RoZV9jdXJyZW50X3dpbmRvdyhkcml2ZXIpOgog
CiAgICAgZHJpdmVyLnNldF93aW5kb3dfcmVjdCh4PXRhcmdldF94LCB5PXRhcmdldF95LCB3aWR0
aD10YXJnZXRfd2lkdGgsIGhlaWdodD10YXJnZXRfaGVpZ2h0KQogCi0gICAgV2ViRHJpdmVyV2Fp
dChkcml2ZXIsIDIpLnVudGlsKGxhbWJkYSBkOiBkLmdldF93aW5kb3dfcG9zaXRpb24oKVsneCdd
ICE9IHJlY3RbJ3gnXSBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5n
ZXRfd2luZG93X3Bvc2l0aW9uKClbJ3knXSAhPSByZWN0Wyd5J10pCisgICAgV2ViRHJpdmVyV2Fp
dChkcml2ZXIsIDIpXAorICAgICAgICAudW50aWwobGFtYmRhIGQ6IGQuZ2V0X3dpbmRvd19wb3Np
dGlvbigpWyd4J10gIT0gcmVjdFsneCddIGFuZCBkLmdldF93aW5kb3dfcG9zaXRpb24oKVsneSdd
ICE9IHJlY3RbJ3knXSkKIAogICAgIG5ld19yZWN0ID0gZHJpdmVyLmdldF93aW5kb3dfcmVjdCgp
CiAKQEAgLTExNyw0MyArMTEyLDMyIEBAIGRlZiB0ZXN0X3Nob3VsZF9zZXRfdGhlX3JlY3Rfb2Zf
dGhlX2N1cnJlbnRfd2luZG93KGRyaXZlcik6CiAgICAgYXNzZXJ0IG5ld19yZWN0LmdldCgnaGVp
Z2h0JykgPT0gdGFyZ2V0X2hlaWdodAogCiAKLUBweXRlc3QubWFyay54ZmFpbF9jaHJvbWUocmFp
c2VzPVdlYkRyaXZlckV4Y2VwdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhc29u
PSdGdWxsc2NyZWVuIGNvbW1hbmQgbm90IGltcGxlbWVudGVkJykKLUBweXRlc3QubWFyay54ZmFp
bF9jaHJvbWl1bWVkZ2UocmFpc2VzPVdlYkRyaXZlckV4Y2VwdGlvbiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVhc29uPSdGdWxsc2NyZWVuIGNvbW1hbmQgbm90IGltcGxlbWVu
dGVkJykKLUBweXRlc3QubWFyay54ZmFpbF9maXJlZm94KHJhaXNlcz1XZWJEcml2ZXJFeGNlcHRp
b24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICByZWFzb249J0Z1bGxzY3JlZW4gY29tbWFu
ZCBub3QgaW1wbGVtZW50ZWQnKQogQHB5dGVzdC5tYXJrLnhmYWlsX3NhZmFyaShyYWlzZXM9V2Vi
RHJpdmVyRXhjZXB0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICByZWFzb249J0Z1bGxz
Y3JlZW4gY29tbWFuZCBub3QgaW1wbGVtZW50ZWQnKQotQHB5dGVzdC5tYXJrLnNraXBpZihvcy5l
bnZpcm9uLmdldCgnQ0knKSA9PSAndHJ1ZScsCitAcHl0ZXN0Lm1hcmsuc2tpcGlmKG9zLmVudmly
b24uZ2V0KCdUUkFWSVMnKSA9PSAndHJ1ZScsCiAgICAgICAgICAgICAgICAgICAgIHJlYXNvbj0n
RnVsbHNjcmVlbiBjb21tYW5kIGNhdXNlcyBUcmF2aXMgdG8gaGFuZycpCitAcHl0ZXN0Lm1hcmsu
bm9fZHJpdmVyX2FmdGVyX3Rlc3QKIGRlZiB0ZXN0X3Nob3VsZF9mdWxsc2NyZWVuX3RoZV9jdXJy
ZW50X3dpbmRvdyhkcml2ZXIpOgogICAgIHN0YXJ0X3dpZHRoID0gZHJpdmVyLmV4ZWN1dGVfc2Ny
aXB0KCdyZXR1cm4gd2luZG93LmlubmVyV2lkdGg7JykKICAgICBzdGFydF9oZWlnaHQgPSBkcml2
ZXIuZXhlY3V0ZV9zY3JpcHQoJ3JldHVybiB3aW5kb3cuaW5uZXJIZWlnaHQ7JykKIAogICAgIGRy
aXZlci5mdWxsc2NyZWVuX3dpbmRvdygpCiAKLSAgICBXZWJEcml2ZXJXYWl0KGRyaXZlciwgMiku
dW50aWwobGFtYmRhIGQ6IGRyaXZlci5leGVjdXRlX3NjcmlwdCgncmV0dXJuIHdpbmRvdy5pbm5l
cldpZHRoOycpID4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfd2lk
dGgpCisgICAgV2ViRHJpdmVyV2FpdChkcml2ZXIsIDIpXAorICAgICAgICAudW50aWwobGFtYmRh
IGQ6IGRyaXZlci5leGVjdXRlX3NjcmlwdCgncmV0dXJuIHdpbmRvdy5pbm5lcldpZHRoOycpID4g
c3RhcnRfd2lkdGgpCiAKICAgICBlbmRfd2lkdGggPSBkcml2ZXIuZXhlY3V0ZV9zY3JpcHQoJ3Jl
dHVybiB3aW5kb3cuaW5uZXJXaWR0aDsnKQogICAgIGVuZF9oZWlnaHQgPSBkcml2ZXIuZXhlY3V0
ZV9zY3JpcHQoJ3JldHVybiB3aW5kb3cuaW5uZXJIZWlnaHQ7JykKIAotICAgIGRyaXZlci5mdWxs
c2NyZWVuX3dpbmRvdygpICAjIFJlc3RvcmUgdG8gb3JpZ2luYWwgc2l6ZQorICAgIGRyaXZlci5x
dWl0KCkgICMgS2lsbCBkcml2ZXIgc28gd2UgYXJlbid0IHJ1bm5pbmcgZnVsbHNjcmVlbiBhZnRl
cgogCiAgICAgYXNzZXJ0IGVuZF93aWR0aCA+IHN0YXJ0X3dpZHRoCiAgICAgYXNzZXJ0IGVuZF9o
ZWlnaHQgPiBzdGFydF9oZWlnaHQKIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWxfY2hyb21lKHJhaXNl
cz1XZWJEcml2ZXJFeGNlcHRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHJlYXNvbj0n
TWluaW1pemUgY29tbWFuZCBub3QgaW1wbGVtZW50ZWQnKQotQHB5dGVzdC5tYXJrLnhmYWlsX2No
cm9taXVtZWRnZShyYWlzZXM9V2ViRHJpdmVyRXhjZXB0aW9uLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZWFzb249J01pbmltaXplIGNvbW1hbmQgbm90IGltcGxlbWVudGVkJykK
LUBweXRlc3QubWFyay54ZmFpbF9maXJlZm94KHJhaXNlcz1XZWJEcml2ZXJFeGNlcHRpb24sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICByZWFzb249J01pbmltaXplIGNvbW1hbmQgbm90IGlt
cGxlbWVudGVkJykKIEBweXRlc3QubWFyay54ZmFpbF9zYWZhcmkocmFpc2VzPVdlYkRyaXZlckV4
Y2VwdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhc29uPSdNaW5pbWl6ZSBjb21t
YW5kIG5vdCBpbXBsZW1lbnRlZCcpCi1AcHl0ZXN0Lm1hcmsuc2tpcGlmKG9zLmVudmlyb24uZ2V0
KCdDSScpID09ICd0cnVlJywKK0BweXRlc3QubWFyay5za2lwaWYob3MuZW52aXJvbi5nZXQoJ1RS
QVZJUycpID09ICd0cnVlJywKICAgICAgICAgICAgICAgICAgICAgcmVhc29uPSdNaW5pbWl6ZSBj
b21tYW5kIGNhdXNlcyBUcmF2aXMgdG8gaGFuZycpCiBAcHl0ZXN0Lm1hcmsubm9fZHJpdmVyX2Fm
dGVyX3Rlc3QKIGRlZiB0ZXN0X3Nob3VsZF9taW5pbWl6ZV90aGVfY3VycmVudF93aW5kb3coZHJp
dmVyKToKZGlmZiAtLWdpdCBhL1dlYkRyaXZlclRlc3RzL2ltcG9ydGVkL3NlbGVuaXVtL3B5L3Rl
c3Qvc2VsZW5pdW0vd2ViZHJpdmVyL3JlbW90ZS9yZW1vdGVfaHViX2Nvbm5lY3Rpb24ucHkgYi9X
ZWJEcml2ZXJUZXN0cy9pbXBvcnRlZC9zZWxlbml1bS9weS90ZXN0L3NlbGVuaXVtL3dlYmRyaXZl
ci9yZW1vdGUvcmVtb3RlX2h1Yl9jb25uZWN0aW9uLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQxNzBhMjFmM2Q0
OWFlYTg2ODQ3ODVmYzVhNzZlOTk3YjkzNDEyZDIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJEcml2
ZXJUZXN0cy9pbXBvcnRlZC9zZWxlbml1bS9weS90ZXN0L3NlbGVuaXVtL3dlYmRyaXZlci9yZW1v
dGUvcmVtb3RlX2h1Yl9jb25uZWN0aW9uLnB5CkBAIC0wLDAgKzEsMjcgQEAKKyMgTGljZW5zZWQg
dG8gdGhlIFNvZnR3YXJlIEZyZWVkb20gQ29uc2VydmFuY3kgKFNGQykgdW5kZXIgb25lCisjIG9y
IG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmls
ZQorIyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlv
bgorIyByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBTRkMgbGljZW5zZXMgdGhp
cyBmaWxlCisjIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0
aGUKKyMgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29t
cGxpYW5jZQorIyB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRo
ZSBMaWNlbnNlIGF0CisjCisjICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCisjCisjIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQg
dG8gaW4gd3JpdGluZywKKyMgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2Ug
aXMgZGlzdHJpYnV0ZWQgb24gYW4KKyMgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVT
IE9SIENPTkRJVElPTlMgT0YgQU5ZCisjIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQu
ICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorIyBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcg
cGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisjIHVuZGVyIHRoZSBMaWNlbnNlLgorCitpbXBv
cnQgcHl0ZXN0CitpbXBvcnQgdXJsbGliMworZnJvbSBzZWxlbml1bSBpbXBvcnQgd2ViZHJpdmVy
CisKKworZGVmIHRlc3RfY29tbWFuZF9leGVjdXRvcl9zc2xfY2VydGlmaWNhdGVfaXNfdmVyaWZp
ZWQoKToKKyAgICB3aXRoIHB5dGVzdC5yYWlzZXModXJsbGliMy5leGNlcHRpb25zLk1heFJldHJ5
RXJyb3IpIGFzIGV4Y2luZm86CisgICAgICAgIHdlYmRyaXZlci5SZW1vdGUoY29tbWFuZF9leGVj
dXRvcj0naHR0cHM6Ly93cm9uZy5ob3N0LmJhZHNzbC5jb20vJykKKyAgICBhc3NlcnQgaXNpbnN0
YW5jZShleGNpbmZvLnZhbHVlLnJlYXNvbiwgdXJsbGliMy5leGNlcHRpb25zLlNTTEVycm9yKQor
ICAgIGFzc2VydCAiZG9lc24ndCBtYXRjaCIgaW4gc3RyKGV4Y2luZm8udmFsdWUpCmRpZmYgLS1n
aXQgYS9XZWJEcml2ZXJUZXN0cy9pbXBvcnRlZC9zZWxlbml1bS9weS90ZXN0L3NlbGVuaXVtL3dl
YmRyaXZlci9zYWZhcmkvbGF1bmNoZXJfdGVzdHMucHkgYi9XZWJEcml2ZXJUZXN0cy9pbXBvcnRl
ZC9zZWxlbml1bS9weS90ZXN0L3NlbGVuaXVtL3dlYmRyaXZlci9zYWZhcmkvbGF1bmNoZXJfdGVz
dHMucHkKaW5kZXggMjY2MDFhNmY2YTBhZjUyY2M2OGU5ZTc5OTU2MWQ1MzAyMWQxODJhMi4uYjRm
OTYzNTgzNmQ3M2FhMWY5N2U5ZWZhYjUyNTE5NjQ0ODI5MzRlNiAxMDA2NDQKLS0tIGEvV2ViRHJp
dmVyVGVzdHMvaW1wb3J0ZWQvc2VsZW5pdW0vcHkvdGVzdC9zZWxlbml1bS93ZWJkcml2ZXIvc2Fm
YXJpL2xhdW5jaGVyX3Rlc3RzLnB5CisrKyBiL1dlYkRyaXZlclRlc3RzL2ltcG9ydGVkL3NlbGVu
aXVtL3B5L3Rlc3Qvc2VsZW5pdW0vd2ViZHJpdmVyL3NhZmFyaS9sYXVuY2hlcl90ZXN0cy5weQpA
QCAtMjEsNyArMjEsNyBAQCBpbXBvcnQgcHl0ZXN0CiAKIAogZGVmIHRlc3RfbGF1bmNoKGRyaXZl
cik6Ci0gICAgYXNzZXJ0IGRyaXZlci5jYXBhYmlsaXRpZXNbJ2Jyb3dzZXJOYW1lJ10gPT0gJ3Nh
ZmFyaScKKyAgICBhc3NlcnQgZHJpdmVyLmNhcGFiaWxpdGllc1snYnJvd3Nlck5hbWUnXSA9PSAn
U2FmYXJpJwogCiAKIGRlZiB0ZXN0X2xhdW5jaF93aXRoX2ludmFsaWRfZXhlY3V0YWJsZV9wYXRo
X3JhaXNlc19leGNlcHRpb24oZHJpdmVyX2NsYXNzKToKQEAgLTI5LDkgKzI5LDEwIEBAIGRlZiB0
ZXN0X2xhdW5jaF93aXRoX2ludmFsaWRfZXhlY3V0YWJsZV9wYXRoX3JhaXNlc19leGNlcHRpb24o
ZHJpdmVyX2NsYXNzKToKICAgICBhc3NlcnQgbm90IG9zLnBhdGguZXhpc3RzKHBhdGgpCiAgICAg
d2l0aCBweXRlc3QucmFpc2VzKEV4Y2VwdGlvbikgYXMgZToKICAgICAgICAgZHJpdmVyX2NsYXNz
KGV4ZWN1dGFibGVfcGF0aD1wYXRoKQotICAgIGFzc2VydCAnU2FmYXJpRHJpdmVyIHJlcXVpcmVz
IFNhZmFyaSAxMCBvbiBPU1ggRWwgQ2FwaXRhbicgaW4gc3RyKGUpCisgICAgYXNzZXJ0ICdhcmUg
eW91IHJ1bm5pbmcgU2FmYXJpIDEwIG9yIGxhdGVyPycgaW4gc3RyKGUpCiAKIAorQHB5dGVzdC5t
YXJrLnNraXBpZihub3Qgb3MucGF0aC5leGlzdHMoJy9BcHBsaWNhdGlvbnMvU2FmYXJpIFRlY2hu
b2xvZ3kgUHJldmlldy5hcHAvQ29udGVudHMvTWFjT1Mvc2FmYXJpZHJpdmVyJyksIHJlYXNvbj0i
UHJldmlldyBub3QgaW5zdGFsbGVkIikKIGNsYXNzIFRlc3RUZWNobm9sb2d5UHJldmlldyhvYmpl
Y3QpOgogCiAgICAgQHB5dGVzdC5maXh0dXJlCkBAIC00OSw3ICs1MCw3IEBAIGRlZiB0ZXN0X2xh
dW5jaF9zYWZhcmlfd2l0aF9sZWdhY3lfZmxhZyhtb2NrZXIsIGRyaXZlcl9jbGFzcyk6CiAgICAg
bW9ja2VyLnBhdGNoKCdzdWJwcm9jZXNzLlBvcGVuJykKICAgICB0cnk6CiAgICAgICAgIGRyaXZl
cl9jbGFzcyhzZXJ2aWNlX2FyZ3M9WyctLWxlZ2FjeSddKQotICAgIGV4Y2VwdCBFeGNlcHRpb24g
YXMgZToKKyAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICBwYXNzCiAgICAgYXJncywga3dh
cmdzID0gc3VicHJvY2Vzcy5Qb3Blbi5jYWxsX2FyZ3MKICAgICBhc3NlcnQgJy0tbGVnYWN5JyBp
biBhcmdzWzBdCkBAIC02MCw3ICs2MSw3IEBAIGRlZiB0ZXN0X2xhdW5jaF9zYWZhcmlfd2l0aG91
dF9sZWdhY3lfZmxhZyhtb2NrZXIsIGRyaXZlcl9jbGFzcyk6CiAgICAgbW9ja2VyLnBhdGNoKCdz
dWJwcm9jZXNzLlBvcGVuJykKICAgICB0cnk6CiAgICAgICAgIGRyaXZlcl9jbGFzcygpCi0gICAg
ZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAgICAgIHBh
c3MKICAgICBhcmdzLCBrd2FyZ3MgPSBzdWJwcm9jZXNzLlBvcGVuLmNhbGxfYXJncwogICAgIGFz
c2VydCAnLS1sZWdhY3knIG5vdCBpbiBhcmdzWzBdCmRpZmYgLS1naXQgYS9XZWJEcml2ZXJUZXN0
cy9pbXBvcnRlZC9zZWxlbml1bS9weS90ZXN0L3NlbGVuaXVtL3dlYmRyaXZlci9zdXBwb3J0L2V2
ZW50X2ZpcmluZ193ZWJkcml2ZXJfdGVzdHMucHkgYi9XZWJEcml2ZXJUZXN0cy9pbXBvcnRlZC9z
ZWxlbml1bS9weS90ZXN0L3NlbGVuaXVtL3dlYmRyaXZlci9zdXBwb3J0L2V2ZW50X2ZpcmluZ193
ZWJkcml2ZXJfdGVzdHMucHkKaW5kZXggZTRhZDhjMDE1NzcxOWZjNzM0NGE1NDBlNWZlNWVlYzdl
NWQzMzJhZC4uZTE3YzRmM2M0OTMyM2EzMjVjYzk2NDE4ZjQwMzA3NGY3YzZmNjU0ZCAxMDA2NDQK
LS0tIGEvV2ViRHJpdmVyVGVzdHMvaW1wb3J0ZWQvc2VsZW5pdW0vcHkvdGVzdC9zZWxlbml1bS93
ZWJkcml2ZXIvc3VwcG9ydC9ldmVudF9maXJpbmdfd2ViZHJpdmVyX3Rlc3RzLnB5CisrKyBiL1dl
YkRyaXZlclRlc3RzL2ltcG9ydGVkL3NlbGVuaXVtL3B5L3Rlc3Qvc2VsZW5pdW0vd2ViZHJpdmVy
L3N1cHBvcnQvZXZlbnRfZmlyaW5nX3dlYmRyaXZlcl90ZXN0cy5weQpAQCAtNzgsNiArNzgsNyBA
QCBkZWYgdGVzdF9zaG91bGRfZmlyZV9uYXZpZ2F0aW9uX2V2ZW50cyhkcml2ZXIsIGxvZywgcGFn
ZXMpOgogICAgICAgICAgICAgYiJhZnRlcl9uYXZpZ2F0ZV9mb3J3YXJkIikgPT0gbG9nLmdldHZh
bHVlKCkKIAogCitAcHl0ZXN0Lm1hcmsueGZhaWxfc2FmYXJpCiBkZWYgdGVzdF9zaG91bGRfZmly
ZV9jbGlja19ldmVudChkcml2ZXIsIGxvZywgcGFnZXMpOgogCiAgICAgY2xhc3MgRXZlbnRMaXN0
ZW5lcihBYnN0cmFjdEV2ZW50TGlzdGVuZXIpOgpAQCAtMTA4LDcgKzEwOSw3IEBAIGRlZiB0ZXN0
X3Nob3VsZF9maXJlX2NoYW5nZV92YWx1ZV9ldmVudChkcml2ZXIsIGxvZywgcGFnZXMpOgogCiAg
ICAgZWZfZHJpdmVyID0gRXZlbnRGaXJpbmdXZWJEcml2ZXIoZHJpdmVyLCBFdmVudExpc3RlbmVy
KCkpCiAgICAgZWZfZHJpdmVyLmdldChwYWdlcy51cmwoInJlYWRPbmx5UGFnZS5odG1sIikpCi0g
ICAgZWxlbWVudCA9IGVmX2RyaXZlci5maW5kX2VsZW1lbnRfYnlfaWQoIndyaXRhYmxlVGV4dElu
cHV0IikKKyAgICBlbGVtZW50ID0gZWZfZHJpdmVyLmZpbmRfZWxlbWVudChCeS5JRCwgIndyaXRh
YmxlVGV4dElucHV0IikKICAgICBlbGVtZW50LmNsZWFyKCkKICAgICBhc3NlcnQgIiIgPT0gZWxl
bWVudC5nZXRfYXR0cmlidXRlKCJ2YWx1ZSIpCiAKQEAgLTEzNSwxNCArMTM2LDE0IEBAIGRlZiB0
ZXN0X3Nob3VsZF9maXJlX2ZpbmRfZXZlbnQoZHJpdmVyLCBsb2csIHBhZ2VzKToKIAogICAgIGVm
X2RyaXZlciA9IEV2ZW50RmlyaW5nV2ViRHJpdmVyKGRyaXZlciwgRXZlbnRMaXN0ZW5lcigpKQog
ICAgIGVmX2RyaXZlci5nZXQocGFnZXMudXJsKCJzaW1wbGVUZXN0Lmh0bWwiKSkKLSAgICBlID0g
ZWZfZHJpdmVyLmZpbmRfZWxlbWVudF9ieV9pZCgib25lbGluZSIpCisgICAgZSA9IGVmX2RyaXZl
ci5maW5kX2VsZW1lbnQoQnkuSUQsICJvbmVsaW5lIikKICAgICBhc3NlcnQgIkEgc2luZ2xlIGxp
bmUgb2YgdGV4dCIgPT0gZS50ZXh0CiAKLSAgICBlID0gZWZfZHJpdmVyLmZpbmRfZWxlbWVudF9i
eV94cGF0aCgiL2h0bWwvYm9keS9wWzFdIikKKyAgICBlID0gZWZfZHJpdmVyLmZpbmRfZWxlbWVu
dChCeS5YUEFUSCwgIi9odG1sL2JvZHkvcFsxXSIpCiAgICAgYXNzZXJ0ICJBIHNpbmdsZSBsaW5l
IG9mIHRleHQiID09IGUudGV4dAogCiAgICAgZWZfZHJpdmVyLmdldChwYWdlcy51cmwoImZyYW1l
c2V0Lmh0bWwiKSkKLSAgICBlbGVtZW50cyA9IGVmX2RyaXZlci5maW5kX2VsZW1lbnRzX2J5X2Nz
c19zZWxlY3RvcigiZnJhbWUjc2l4dGgiKQorICAgIGVsZW1lbnRzID0gZWZfZHJpdmVyLmZpbmRf
ZWxlbWVudHMoQnkuQ1NTX1NFTEVDVE9SLCAiZnJhbWUjc2l4dGgiKQogICAgIGFzc2VydCAxID09
IGxlbihlbGVtZW50cykKICAgICBhc3NlcnQgImZyYW1lIiA9PSBlbGVtZW50c1swXS50YWdfbmFt
ZS5sb3dlcigpCiAgICAgYXNzZXJ0ICJzaXh0aCIgPT0gZWxlbWVudHNbMF0uZ2V0X2F0dHJpYnV0
ZSgiaWQiKQpAQCAtMTcyLDcgKzE3Myw3IEBAIGRlZiB0ZXN0X3Nob3VsZF9jYWxsX2xpc3RlbmVy
X3doZW5fYW5fZXhjZXB0aW9uX2lzX3Rocm93bihkcml2ZXIsIGxvZywgcGFnZXMpOgogZGVmIHRl
c3Rfc2hvdWxkX3Vud3JhcF9lbGVtZW50X2FyZ3Nfd2hlbl9jYWxsaW5nX3NjcmlwdHMoZHJpdmVy
LCBsb2csIHBhZ2VzKToKICAgICBlZl9kcml2ZXIgPSBFdmVudEZpcmluZ1dlYkRyaXZlcihkcml2
ZXIsIEFic3RyYWN0RXZlbnRMaXN0ZW5lcigpKQogICAgIGVmX2RyaXZlci5nZXQocGFnZXMudXJs
KCJqYXZhc2NyaXB0UGFnZS5odG1sIikpCi0gICAgYnV0dG9uID0gZWZfZHJpdmVyLmZpbmRfZWxl
bWVudF9ieV9pZCgicGxhaW5CdXR0b24iKQorICAgIGJ1dHRvbiA9IGVmX2RyaXZlci5maW5kX2Vs
ZW1lbnQoQnkuSUQsICJwbGFpbkJ1dHRvbiIpCiAgICAgdmFsdWUgPSBlZl9kcml2ZXIuZXhlY3V0
ZV9zY3JpcHQoCiAgICAgICAgICJhcmd1bWVudHNbMF1bJ2ZsaWJibGUnXSA9IGFyZ3VtZW50c1sw
XS5nZXRBdHRyaWJ1dGUoJ2lkJyk7IHJldHVybiBhcmd1bWVudHNbMF1bJ2ZsaWJibGUnXSIsCiAg
ICAgICAgIGJ1dHRvbikKQEAgLTE4Miw5ICsxODMsOSBAQCBkZWYgdGVzdF9zaG91bGRfdW53cmFw
X2VsZW1lbnRfYXJnc193aGVuX2NhbGxpbmdfc2NyaXB0cyhkcml2ZXIsIGxvZywgcGFnZXMpOgog
ZGVmIHRlc3Rfc2hvdWxkX3Vud3JhcF9lbGVtZW50X2FyZ3Nfd2hlbl9zd2l0Y2hpbmdfZnJhbWVz
KGRyaXZlciwgbG9nLCBwYWdlcyk6CiAgICAgZWZfZHJpdmVyID0gRXZlbnRGaXJpbmdXZWJEcml2
ZXIoZHJpdmVyLCBBYnN0cmFjdEV2ZW50TGlzdGVuZXIoKSkKICAgICBlZl9kcml2ZXIuZ2V0KHBh
Z2VzLnVybCgiaWZyYW1lcy5odG1sIikpCi0gICAgZnJhbWUgPSBlZl9kcml2ZXIuZmluZF9lbGVt
ZW50X2J5X2lkKCJpZnJhbWUxIikKKyAgICBmcmFtZSA9IGVmX2RyaXZlci5maW5kX2VsZW1lbnQo
QnkuSUQsICJpZnJhbWUxIikKICAgICBlZl9kcml2ZXIuc3dpdGNoX3RvLmZyYW1lKGZyYW1lKQot
ICAgIGFzc2VydCAiY2xpY2sgbWUhIiA9PSBlZl9kcml2ZXIuZmluZF9lbGVtZW50X2J5X2lkKCJp
bWFnZUJ1dHRvbiIpLmdldF9hdHRyaWJ1dGUoImFsdCIpCisgICAgYXNzZXJ0ICJjbGljayBtZSEi
ID09IGVmX2RyaXZlci5maW5kX2VsZW1lbnQoQnkuSUQsICJpbWFnZUJ1dHRvbiIpLmdldF9hdHRy
aWJ1dGUoImFsdCIpCiAKIAogZGVmIHRlc3Rfc2hvdWxkX2JlX2FibGVfdG9fYWNjZXNzX3dyYXBw
ZWRfaW5zdGFuY2VfZnJvbV9ldmVudF9jYWxscyhkcml2ZXIpOgpAQCAtMjAyLDcgKzIwMyw3IEBA
IGRlZiB0ZXN0X3VzaW5nX2t3YXJncyhkcml2ZXIsIHBhZ2VzKToKICAgICBlZl9kcml2ZXIgPSBF
dmVudEZpcmluZ1dlYkRyaXZlcihkcml2ZXIsIEFic3RyYWN0RXZlbnRMaXN0ZW5lcigpKQogICAg
IGVmX2RyaXZlci5nZXQocGFnZXMudXJsKCJqYXZhc2NyaXB0UGFnZS5odG1sIikpCiAgICAgZWZf
ZHJpdmVyLmdldF9jb29raWUobmFtZT0iY29va2llX25hbWUiKQotICAgIGVsZW1lbnQgPSBlZl9k
cml2ZXIuZmluZF9lbGVtZW50X2J5X2lkKCJwbGFpbkJ1dHRvbiIpCisgICAgZWxlbWVudCA9IGVm
X2RyaXZlci5maW5kX2VsZW1lbnQoQnkuSUQsICJwbGFpbkJ1dHRvbiIpCiAgICAgZWxlbWVudC5n
ZXRfYXR0cmlidXRlKG5hbWU9ImlkIikKIAogCkBAIC0yMTMsNyArMjE0LDcgQEAgZGVmIHRlc3Rf
bWlzc2luZ19hdHRyaWJ1dGVzX3JhaXNlX2Vycm9yKGRyaXZlciwgcGFnZXMpOgogICAgICAgICBl
Zl9kcml2ZXIuYXR0cmlidXRlX3Nob3VsZF9ub3RfZXhpc3QKIAogICAgIGVmX2RyaXZlci5nZXQo
cGFnZXMudXJsKCJyZWFkT25seVBhZ2UuaHRtbCIpKQotICAgIGVsZW1lbnQgPSBlZl9kcml2ZXIu
ZmluZF9lbGVtZW50X2J5X2lkKCJ3cml0YWJsZVRleHRJbnB1dCIpCisgICAgZWxlbWVudCA9IGVm
X2RyaXZlci5maW5kX2VsZW1lbnQoQnkuSUQsICJ3cml0YWJsZVRleHRJbnB1dCIpCiAKICAgICB3
aXRoIHB5dGVzdC5yYWlzZXMoQXR0cmlidXRlRXJyb3IpOgogICAgICAgICBlbGVtZW50LmF0dHJp
YnV0ZV9zaG91bGRfbm90X2V4aXN0CkBAIC0yMjIsNyArMjIzLDcgQEAgZGVmIHRlc3RfbWlzc2lu
Z19hdHRyaWJ1dGVzX3JhaXNlX2Vycm9yKGRyaXZlciwgcGFnZXMpOgogZGVmIHRlc3RfY2FuX3Vz
ZV9wb2ludGVyX2lucHV0X3dpdGhfZXZlbnRfZmlyaW5nX3dlYmRyaXZlcihkcml2ZXIsIHBhZ2Vz
KToKICAgICBlZl9kcml2ZXIgPSBFdmVudEZpcmluZ1dlYkRyaXZlcihkcml2ZXIsIEFic3RyYWN0
RXZlbnRMaXN0ZW5lcigpKQogICAgIHBhZ2VzLmxvYWQoImphdmFzY3JpcHRQYWdlLmh0bWwiKQot
ICAgIHRvX2NsaWNrID0gZWZfZHJpdmVyLmZpbmRfZWxlbWVudF9ieV9pZCgiY2xpY2tGaWVsZCIp
CisgICAgdG9fY2xpY2sgPSBlZl9kcml2ZXIuZmluZF9lbGVtZW50KEJ5LklELCAiY2xpY2tGaWVs
ZCIpCiAKICAgICBhY3Rpb25zID0gQWN0aW9uQnVpbGRlcihlZl9kcml2ZXIpCiAgICAgcG9pbnRl
ciA9IGFjdGlvbnMucG9pbnRlcl9hY3Rpb24KQEAgLTIzMiwxNSArMjMzLDE2IEBAIGRlZiB0ZXN0
X2Nhbl91c2VfcG9pbnRlcl9pbnB1dF93aXRoX2V2ZW50X2ZpcmluZ193ZWJkcml2ZXIoZHJpdmVy
LCBwYWdlcyk6CiAgICAgYXNzZXJ0IHRvX2NsaWNrLmdldF9hdHRyaWJ1dGUoJ3ZhbHVlJykgPT0g
J0NsaWNrZWQnCiAKIAorQHB5dGVzdC5tYXJrLnhmYWlsX3NhZmFyaQogZGVmIHRlc3RfY2FuX3Vz
ZV9rZXlfaW5wdXRfd2l0aF9ldmVudF9maXJpbmdfd2ViZHJpdmVyKGRyaXZlciwgcGFnZXMpOgog
ICAgIGVmX2RyaXZlciA9IEV2ZW50RmlyaW5nV2ViRHJpdmVyKGRyaXZlciwgQWJzdHJhY3RFdmVu
dExpc3RlbmVyKCkpCiAgICAgcGFnZXMubG9hZCgiamF2YXNjcmlwdFBhZ2UuaHRtbCIpCi0gICAg
ZWZfZHJpdmVyLmZpbmRfZWxlbWVudF9ieV9pZCgia2V5VXAiKS5jbGljaygpCisgICAgZWZfZHJp
dmVyLmZpbmRfZWxlbWVudChCeS5JRCwgImtleVVwIikuY2xpY2soKQogCiAgICAgYWN0aW9ucyA9
IEFjdGlvbkJ1aWxkZXIoZWZfZHJpdmVyKQogICAgIGtleSA9IGFjdGlvbnMua2V5X2FjdGlvbgog
ICAgIGtleS5zZW5kX2tleXMoJ1N1Y2Nlc3MnKQogICAgIGFjdGlvbnMucGVyZm9ybSgpCiAKLSAg
ICByZXN1bHQgPSBlZl9kcml2ZXIuZmluZF9lbGVtZW50X2J5X2lkKCJyZXN1bHQiKQorICAgIHJl
c3VsdCA9IGVmX2RyaXZlci5maW5kX2VsZW1lbnQoQnkuSUQsICJyZXN1bHQiKQogICAgIGFzc2Vy
dCByZXN1bHQudGV4dCA9PSAnU3VjY2VzcycKZGlmZiAtLWdpdCBhL1dlYkRyaXZlclRlc3RzL2lt
cG9ydGVkL3NlbGVuaXVtL3B5L3Rlc3Qvc2VsZW5pdW0vd2ViZHJpdmVyL3N1cHBvcnQvcmVsYXRp
dmVfYnlfdGVzdHMucHkgYi9XZWJEcml2ZXJUZXN0cy9pbXBvcnRlZC9zZWxlbml1bS9weS90ZXN0
L3NlbGVuaXVtL3dlYmRyaXZlci9zdXBwb3J0L3JlbGF0aXZlX2J5X3Rlc3RzLnB5CmluZGV4IGFm
MzEwOGViZjExNDcxOWZjMmRhMjFhZjRjOGYyMzRiODNlZDQyOWIuLjRiODdiMGQ0MDMyZmFjNjZi
NTM3ZWRmMzk0MTJjYWM2YTI0NzBlYTAgMTAwNjQ0Ci0tLSBhL1dlYkRyaXZlclRlc3RzL2ltcG9y
dGVkL3NlbGVuaXVtL3B5L3Rlc3Qvc2VsZW5pdW0vd2ViZHJpdmVyL3N1cHBvcnQvcmVsYXRpdmVf
YnlfdGVzdHMucHkKKysrIGIvV2ViRHJpdmVyVGVzdHMvaW1wb3J0ZWQvc2VsZW5pdW0vcHkvdGVz
dC9zZWxlbml1bS93ZWJkcml2ZXIvc3VwcG9ydC9yZWxhdGl2ZV9ieV90ZXN0cy5weQpAQCAtMTUs
MTcgKzE1LDE2IEBACiAjIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBh
bmQgbGltaXRhdGlvbnMKICMgdW5kZXIgdGhlIExpY2Vuc2UuCiAKLWltcG9ydCBweXRlc3QKLQot
ZnJvbSBzZWxlbml1bS53ZWJkcml2ZXIuY29tbW9uLmJ5IGltcG9ydCBCeSAgIAorZnJvbSBzZWxl
bml1bS53ZWJkcml2ZXIuY29tbW9uLmJ5IGltcG9ydCBCeQogZnJvbSBzZWxlbml1bS53ZWJkcml2
ZXIuc3VwcG9ydC5yZWxhdGl2ZV9sb2NhdG9yIGltcG9ydCB3aXRoX3RhZ19uYW1lCiAKKwogZGVm
IHRlc3Rfc2hvdWxkX2JlX2FibGVfdG9fZmluZF9lbGVtZW50c19hYm92ZV9hbm90aGVyKGRyaXZl
ciwgcGFnZXMpOgogICAgIHBhZ2VzLmxvYWQoInJlbGF0aXZlX2xvY2F0b3JzLmh0bWwiKQogICAg
IGxvd2VzdCA9IGRyaXZlci5maW5kX2VsZW1lbnQoQnkuSUQsICJiZWxvdyIpCi0gICAgCisKICAg
ICBlbGVtZW50cyA9IGRyaXZlci5maW5kX2VsZW1lbnRzKHdpdGhfdGFnX25hbWUoInAiKS5hYm92
ZShsb3dlc3QpKQotICAgIAorCiAgICAgaWRzID0gW2VsLmdldF9hdHRyaWJ1dGUoJ2lkJykgZm9y
IGVsIGluIGVsZW1lbnRzXQogICAgIGFzc2VydCAiYWJvdmUiIGluIGlkcwogICAgIGFzc2VydCAi
bWlkIiBpbiBpZHMKQEAgLTM1LDggKzM0LDcgQEAgZGVmIHRlc3Rfc2hvdWxkX2JlX2FibGVfdG9f
Y29tYmluZV9maWx0ZXJzKGRyaXZlciwgcGFnZXMpOgogICAgIHBhZ2VzLmxvYWQoInJlbGF0aXZl
X2xvY2F0b3JzLmh0bWwiKQogCiAgICAgZWxlbWVudHMgPSBkcml2ZXIuZmluZF9lbGVtZW50cyh3
aXRoX3RhZ19uYW1lKCJ0ZCIpLmFib3ZlKGRyaXZlci5maW5kX2VsZW1lbnQoQnkuSUQsICJjZW50
ZXIiKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAu
dG9fcmlnaHRfb2YoZHJpdmVyLmZpbmRfZWxlbWVudChCeS5JRCwgInNlY29uZCIpKSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC50b19yaWdodF9vZihkcml2ZXIuZmluZF9l
bGVtZW50KEJ5LklELCAic2Vjb25kIikpKQogCiAgICAgaWRzID0gW2VsLmdldF9hdHRyaWJ1dGUo
J2lkJykgZm9yIGVsIGluIGVsZW1lbnRzXQogICAgIGFzc2VydCAidGhpcmQiIGluIGlkcwotICAg
IAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>