<?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>70486</bug_id>
          
          <creation_ts>2011-10-20 03:18:35 -0700</creation_ts>
          <short_desc>REGRESSION(r97954): clean build failed on chromium.mac: File &quot;../inspector/CodeGeneratorInspector.py&quot;, line 34, in &lt;module&gt; import json (Requested by loislo on #webkit).</short_desc>
          <delta_ts>2022-03-01 03:11:16 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>69295</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Review Bot">webkit.review.bot</reporter>
          <assigned_to name="WebKit Review Bot">webkit.review.bot</assigned_to>
          <cc>loislo</cc>
    
    <cc>pfeldman</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>487446</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-20 03:18:35 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/97954 broke the build:
clean build failed on chromium.mac: File &quot;../inspector/CodeGeneratorInspector.py&quot;, line 34, in &lt;module&gt; import json (Requested by loislo on #webkit).

This is an automatic bug report generated by the sheriff-bot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests case pain.

&quot;Only you can prevent forest fires.&quot; -- Smokey the Bear</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487447</commentid>
    <comment_count>1</comment_count>
      <attachid>111745</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-20 03:18:59 -0700</bug_when>
    <thetext>Created attachment 111745
ROLLOUT of r97954

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the rollout will be successful.  This process takes approximately 15 minutes.

If you would like to land the rollout faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487450</commentid>
    <comment_count>2</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2011-10-20 03:24:23 -0700</bug_when>
    <thetext>Committed r97957: &lt;http://trac.webkit.org/changeset/97957&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111745</attachid>
            <date>2011-10-20 03:18:59 -0700</date>
            <delta_ts>2022-03-01 03:11:16 -0800</delta_ts>
            <desc>ROLLOUT of r97954</desc>
            <filename>bug-70486-20111020101859.patch</filename>
            <type>text/plain</type>
            <size>122760</size>
            <attacher name="WebKit Review Bot">webkit.review.bot</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTc5NTUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwMDU3Y2YyYzQxM2Q4YzVm
NjdhMjdiYzEwNWM3YjMxMDY2YjY1NzYyLi44MTUzZDI2ZjZmNTNiYjVlNzI4YjViMGNmZTU0NWE5
YWUyYzg2NGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDYgQEAKKzIwMTEtMTAtMjAgIFNoZXJp
ZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgorCisgICAgICAgIFVucmV2aWV3
ZWQsIHJvbGxpbmcgb3V0IHI5Nzk1NC4KKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9j
aGFuZ2VzZXQvOTc5NTQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTcwNDg2CisKKyAgICAgICAgY2xlYW4gYnVpbGQgZmFpbGVkIG9uIGNocm9taXVtLm1h
YzogRmlsZQorICAgICAgICAiLi4vaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHki
LCBsaW5lIDM0LCBpbiA8bW9kdWxlPgorICAgICAgICBpbXBvcnQganNvbiAoUmVxdWVzdGVkIGJ5
IGxvaXNsbyBvbiAjd2Via2l0KS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAg
ICAqIENvZGVHZW5lcmF0b3JzLnByaToKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgor
ICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIFdlYkNvcmUuZ3lwL1dlYkNvcmUu
Z3lwOgorICAgICAgICAqIGluc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnBtOiBBZGRl
ZC4KKyAgICAgICAgKG5ldyk6CisgICAgICAgIChHZW5lcmF0ZU1vZHVsZSk6CisgICAgICAgIChH
ZW5lcmF0ZUludGVyZmFjZSk6CisgICAgICAgIChnZW5lcmF0ZUFnZW50RGVjbGFyYXRpb24pOgor
ICAgICAgICAoZ2VuZXJhdGVGcm9udGVuZENvbnN0cnVjdG9ySW1wbCk6CisgICAgICAgIChnZW5l
cmF0ZUZ1bmN0aW9ucyk6CisgICAgICAgIChnZW5lcmF0ZUZyb250ZW5kRnVuY3Rpb24pOgorICAg
ICAgICAoY2FtZWxDYXNlKToKKyAgICAgICAgKGdlbmVyYXRlQmFja2VuZEZ1bmN0aW9uKToKKyAg
ICAgICAgKGdlbmVyYXRlQmFja2VuZFNlbmRSZXNwb25zZSk6CisgICAgICAgIChnZW5lcmF0ZUJh
Y2tlbmRSZXBvcnRQcm90b2NvbEVycm9yKToKKyAgICAgICAgKGdlbmVyYXRlQXJndW1lbnRHZXR0
ZXJzKToKKyAgICAgICAgKGdlbmVyYXRlQmFja2VuZERpc3BhdGNoZXIpOgorICAgICAgICAoZ2Vu
ZXJhdGVCYWNrZW5kTWVzc2FnZVBhcnNlcik6CisgICAgICAgIChjb2xsZWN0QmFja2VuZEpTU3R1
YkZ1bmN0aW9ucyk6CisgICAgICAgIChjb2xsZWN0QmFja2VuZEpTU3R1YkV2ZW50cyk6CisgICAg
ICAgIChnZW5lcmF0ZUJhY2tlbmRTdHViSlMpOgorICAgICAgICAoZ2VuZXJhdGVIZWFkZXIpOgor
ICAgICAgICAoZ2VuZXJhdGVTb3VyY2UpOgorICAgICAgICAodHlwZVRyYWl0cyk6CisgICAgICAg
IChwYXJhbVR5cGVUcmFpdHMpOgorICAgICAgICAoZ2VuZXJhdGVCYWNrZW5kQWdlbnRGaWVsZHNB
bmRDb25zdHJ1Y3Rvcik6CisgICAgICAgIChmaW5pc2gpOgorICAgICAgICAqIGluc3BlY3Rvci9D
b2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5OiBSZW1vdmVkLgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3IuanNvbjoKKyAgICAgICAgKiBpbnNwZWN0b3IvZ2VuZXJhdGUtaW5zcGVjdG9yLWlk
bDogQWRkZWQuCisKIDIwMTEtMTAtMjAgIEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIEltcGxlbWVudCBhIE1lc3NhZ2VFdmVudCBjb25zdHJ1Y3RvciBmb3Ig
VjgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMjdhZTI2ZDA1ZTNhOTdjZTMzZjk3YzE4ZmM0MzM3
M2RkOTQ0Y2IxZC4uZDRhOTFjMjMxNWJiY2NlNjRmZGU3MGRmYTM1YzRlZjFhNDFkOTYzZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKQEAgLTIyMjAsMTAgKzIyMjAsMTcgQEAgQUREX0NVU1RPTV9DT01N
QU5EKAogTElTVChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNP
UkVfRElSfS9JbnNwZWN0b3JQcm90b2NvbFZlcnNpb24uaCkKIAogQUREX0NVU1RPTV9DT01NQU5E
KAotICAgIE9VVFBVVCAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXIuY3BwICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9JbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlci5oICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9JbnNw
ZWN0b3JGcm9udGVuZC5jcHAgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0luc3BlY3Rv
ckZyb250ZW5kLmgKKyAgICBPVVRQVVQgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0lu
c3BlY3Rvci5pZGwKICAgICBNQUlOX0RFUEVOREVOQ1kgaW5zcGVjdG9yL0luc3BlY3Rvci5qc29u
Ci0gICAgREVQRU5EUyAke1dFQkNPUkVfRElSfS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3Bl
Y3Rvci5weQotICAgIENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gJHtXRUJDT1JFX0RJUn0v
aW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkgJHtXRUJDT1JFX0RJUn0vaW5zcGVj
dG9yL0luc3BlY3Rvci5qc29uIC0tb3V0cHV0X2hfZGlyICIke0RFUklWRURfU09VUkNFU19XRUJD
T1JFX0RJUn0iIC0tb3V0cHV0X2NwcF9kaXIgIiR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElS
fSIgLS1kZWZpbmVzICIke0ZFQVRVUkVfREVGSU5FU19KQVZBU0NSSVBUfSIKKyAgICBERVBFTkRT
ICR7V0VCQ09SRV9ESVJ9L2luc3BlY3Rvci9nZW5lcmF0ZS1pbnNwZWN0b3ItaWRsICR7V0VCQ09S
RV9ESVJ9L2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgorICAgIENPTU1BTkQgJHtQWVRIT05fRVhF
Q1VUQUJMRX0gJHtXRUJDT1JFX0RJUn0vaW5zcGVjdG9yL2dlbmVyYXRlLWluc3BlY3Rvci1pZGwg
LW8gJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0luc3BlY3Rvci5pZGwgJHtXRUJDT1JF
X0RJUn0vaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCisgICAgVkVSQkFUSU0pCisKK0FERF9DVVNU
T01fQ09NTUFORCgKKyAgICBPVVRQVVQgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0lu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcCAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJ
Un0vSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaCAke0RFUklWRURfU09VUkNFU19XRUJDT1JF
X0RJUn0vSW5zcGVjdG9yRnJvbnRlbmQuY3BwICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElS
fS9JbnNwZWN0b3JGcm9udGVuZC5oCisgICAgTUFJTl9ERVBFTkRFTkNZICR7REVSSVZFRF9TT1VS
Q0VTX1dFQkNPUkVfRElSfS9JbnNwZWN0b3IuaWRsCisgICAgREVQRU5EUyAke1dFQkNPUkVfRElS
fS9iaW5kaW5ncy9zY3JpcHRzL2dlbmVyYXRlLWJpbmRpbmdzLnBsICR7U0NSSVBUU19CSU5ESU5H
U30gJHtXRUJDT1JFX0RJUn0vaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucG0gJHtE
RVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0luc3BlY3Rvci5pZGwKKyAgICBDT01NQU5EICR7
UEVSTF9FWEVDVVRBQkxFfSAtSSR7V0VCQ09SRV9ESVJ9L2JpbmRpbmdzL3NjcmlwdHMgLUkke1dF
QkNPUkVfRElSfS9pbnNwZWN0b3IgJHtXRUJDT1JFX0RJUn0vYmluZGluZ3Mvc2NyaXB0cy9nZW5l
cmF0ZS1iaW5kaW5ncy5wbCAtLWRlZmluZXMgIiR7RkVBVFVSRV9ERUZJTkVTX0pBVkFTQ1JJUFR9
IiAtLWdlbmVyYXRvciBJbnNwZWN0b3IgJHtJRExfSU5DTFVERVN9IC0tb3V0cHV0RGlyICIke0RF
UklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0iIC0tcHJlcHJvY2Vzc29yICIke0NPREVfR0VORVJB
VE9SX1BSRVBST0NFU1NPUn0iICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9JbnNwZWN0
b3IuaWRsCiAgICAgVkVSQkFUSU0pCiBMSVNUKEFQUEVORCBXZWJDb3JlX1NPVVJDRVMgJHtERVJJ
VkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcCAk
e0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vSW5zcGVjdG9yRnJvbnRlbmQuY3BwKQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Db2RlR2VuZXJhdG9ycy5wcmkgYi9Tb3VyY2UvV2Vi
Q29yZS9Db2RlR2VuZXJhdG9ycy5wcmkKaW5kZXggZmVlYmJhMGM1NTJiMzliMDQ2YjE2ZWFkNWE2
YjRjNGQwYTBmZTVmNi4uYjk3MmRjNzE1ZTM5MzhmZjgyN2ZlMDVjZjk5MzkxNGVhNDI0MTQ0MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ29kZUdlbmVyYXRvcnMucHJpCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0NvZGVHZW5lcmF0b3JzLnByaQpAQCAtNjgzLDEyICs2ODMsMjkgQEAgaW5zcGVj
dG9yVmFsaWRhdGUuZGVwZW5kcyA9ICQkUFdEL2luc3BlY3Rvci9nZW5lcmF0ZS1pbnNwZWN0b3It
cHJvdG9jb2wtdmVyc2lvbgogaW5zcGVjdG9yVmFsaWRhdGUud2tBZGRPdXRwdXRUb1NvdXJjZXMg
PSBmYWxzZQogYWRkRXh0cmFDb21waWxlcihpbnNwZWN0b3JWYWxpZGF0ZSkKIAotaW5zcGVjdG9y
SlNPTi5vdXRwdXQgPSAkJHtXQ19HRU5FUkFURURfU09VUkNFU19ESVJ9L0luc3BlY3RvckZyb250
ZW5kLmNwcCAkJHtXQ19HRU5FUkFURURfU09VUkNFU19ESVJ9L0luc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyLmNwcAoraW5zcGVjdG9ySlNPTi5vdXRwdXQgPSAkJHtXQ19HRU5FUkFURURfU09VUkNF
U19ESVJ9L0luc3BlY3Rvci5pZGwKIGluc3BlY3RvckpTT04uaW5wdXQgPSBJTlNQRUNUT1JfSlNP
TgotaW5zcGVjdG9ySlNPTi53a1NjcmlwdCA9ICQkUFdEL2luc3BlY3Rvci9Db2RlR2VuZXJhdG9y
SW5zcGVjdG9yLnB5Ci1pbnNwZWN0b3JKU09OLmNvbW1hbmRzID0gcHl0aG9uICQkaW5zcGVjdG9y
SlNPTi53a1NjcmlwdCAkJFBXRC9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24gLS1vdXRwdXRfaF9k
aXIgJCRXQ19HRU5FUkFURURfU09VUkNFU19ESVIgLS1vdXRwdXRfY3BwX2RpciAkJFdDX0dFTkVS
QVRFRF9TT1VSQ0VTX0RJUiAtLWRlZmluZXMgXCIkJHtGRUFUVVJFX0RFRklORVNfSkFWQVNDUklQ
VH1cIgotaW5zcGVjdG9ySlNPTi5kZXBlbmRzID0gJCRpbnNwZWN0b3JKU09OLndrU2NyaXB0Citp
bnNwZWN0b3JKU09OLndrU2NyaXB0ID0gJCRQV0QvaW5zcGVjdG9yL2dlbmVyYXRlLWluc3BlY3Rv
ci1pZGwKK2luc3BlY3RvckpTT04uY29tbWFuZHMgPSBweXRob24gJCRpbnNwZWN0b3JKU09OLndr
U2NyaXB0IC1vICQke1dDX0dFTkVSQVRFRF9TT1VSQ0VTX0RJUn0vSW5zcGVjdG9yLmlkbCAkJFBX
RC9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KK2luc3BlY3RvckpTT04uZGVwZW5kcyA9ICQkUFdE
L2luc3BlY3Rvci9nZW5lcmF0ZS1pbnNwZWN0b3ItaWRsCitpbnNwZWN0b3JKU09OLndrQWRkT3V0
cHV0VG9Tb3VyY2VzID0gZmFsc2UKIGFkZEV4dHJhQ29tcGlsZXIoaW5zcGVjdG9ySlNPTikKK2lu
c3BlY3RvckpTT04udmFyaWFibGVfb3V0ID0gSU5TUEVDVE9SX0pTT05fT1VUUFVUCisKK2luc3Bl
Y3RvcklETC5vdXRwdXQgPSAkJHtXQ19HRU5FUkFURURfU09VUkNFU19ESVJ9L0luc3BlY3RvckZy
b250ZW5kLmNwcCAkJHtXQ19HRU5FUkFURURfU09VUkNFU19ESVJ9L0luc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyLmNwcAoraW5zcGVjdG9ySURMLmlucHV0ID0gSU5TUEVDVE9SX0pTT05fT1VUUFVU
CitpbnNwZWN0b3JJREwud2tTY3JpcHQgPSAkJFBXRC9iaW5kaW5ncy9zY3JpcHRzL2dlbmVyYXRl
LWJpbmRpbmdzLnBsCitpbnNwZWN0b3JJREwuY29tbWFuZHMgPSBwZXJsIC1JJCRQV0QvYmluZGlu
Z3Mvc2NyaXB0cyAtSSQkUFdEL2luc3BlY3RvciAkJGluc3BlY3RvcklETC53a1NjcmlwdCAtLWRl
ZmluZXMgXCIkJHtGRUFUVVJFX0RFRklORVNfSkFWQVNDUklQVH1cIiAtLWdlbmVyYXRvciBJbnNw
ZWN0b3IgLS1vdXRwdXREaXIgJCRXQ19HRU5FUkFURURfU09VUkNFU19ESVIgLS1wcmVwcm9jZXNz
b3IgXCIkJHtRTUFLRV9NT0N9IC1FXCIgJHtRTUFLRV9GSUxFX05BTUV9CitpbnNwZWN0b3JJREwu
ZGVwZW5kcyA9ICQkUFdEL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbSBcCisgICAg
ICAgICAgICAgICQkUFdEL2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnBtIFwKKyAg
ICAgICAgICAgICAgJCRQV0QvYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG0gXAorICAgICAg
ICAgICAgICAkJFBXRC9iaW5kaW5ncy9zY3JpcHRzL0lETFN0cnVjdHVyZS5wbSBcCisgICAgICAg
ICAgICAgICQkUFdEL2JpbmRpbmdzL3NjcmlwdHMvSW5GaWxlc1BhcnNlci5wbSBcCisgICAgICAg
ICAgICAgICQkUFdEL2JpbmRpbmdzL3NjcmlwdHMvcHJlcHJvY2Vzc29yLnBtIFwKKyAgICAgICAg
ICAgICAgJCRQV0QvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uIFwKKyAgICAgICAgICAgICAgJCRQ
V0QvaW5zcGVjdG9yL2dlbmVyYXRlLWluc3BlY3Rvci1pZGwKK2luc3BlY3RvcklETC53a0V4dHJh
U291cmNlcyA9ICQkaW5zcGVjdG9ySURMLm91dHB1dAorYWRkRXh0cmFDb21waWxlcihpbnNwZWN0
b3JJREwpCiAKIGluc3BlY3RvckJhY2tlbmRTdHViLm91dHB1dCA9IGdlbmVyYXRlZC9JbnNwZWN0
b3JCYWNrZW5kU3R1Yi5xcmMKIGluc3BlY3RvckJhY2tlbmRTdHViLmlucHV0ID0gSU5TUEVDVE9S
X0JBQ0tFTkRfU1RVQl9RUkMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLm1ha2UgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDJkOTcy
ZTU3NzYzM2YzNjYyNjI3MzZmZWI3NzY1MGVjMTlmNzhkM2EuLjVhMmNjMTNmOGYxMzZjZjA4MGE0
MTFhZTBlYjFiMDA1YmZmNzdlZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRT
b3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAt
OTEyLDEyICs5MTIsMTUgQEAgYWxsIDogSW5zcGVjdG9yUHJvdG9jb2xWZXJzaW9uLmgKIEluc3Bl
Y3RvclByb3RvY29sVmVyc2lvbi5oIDogSW5zcGVjdG9yLmpzb24gaW5zcGVjdG9yL2dlbmVyYXRl
LWluc3BlY3Rvci1wcm90b2NvbC12ZXJzaW9uCiAJcHl0aG9uICQoV2ViQ29yZSkvaW5zcGVjdG9y
L2dlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC12ZXJzaW9uIC1vIEluc3BlY3RvclByb3RvY29s
VmVyc2lvbi5oICQoV2ViQ29yZSkvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCiAKK0luc3BlY3Rv
ci5pZGwgOiBJbnNwZWN0b3IuanNvbiBpbnNwZWN0b3IvZ2VuZXJhdGUtaW5zcGVjdG9yLWlkbAor
CXB5dGhvbiAkKFdlYkNvcmUpL2luc3BlY3Rvci9nZW5lcmF0ZS1pbnNwZWN0b3ItaWRsIC1vIElu
c3BlY3Rvci5pZGwgJChXZWJDb3JlKS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KKwogYWxsIDog
SW5zcGVjdG9yRnJvbnRlbmQuaAogCi1JTlNQRUNUT1JfR0VORVJBVE9SX1NDUklQVFMgPSBpbnNw
ZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weQorSU5TUEVDVE9SX0dFTkVSQVRPUl9TQ1JJ
UFRTID0gJChHRU5FUkFURV9TQ1JJUFRTKSBpbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rv
ci5wbQogCi1JbnNwZWN0b3JGcm9udGVuZC5oIDogSW5zcGVjdG9yLmpzb24gJChJTlNQRUNUT1Jf
R0VORVJBVE9SX1NDUklQVFMpCi0JcHl0aG9uICQoV2ViQ29yZSkvaW5zcGVjdG9yL0NvZGVHZW5l
cmF0b3JJbnNwZWN0b3IucHkgJChXZWJDb3JlKS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24gLS1v
dXRwdXRfaF9kaXIgLiAtLW91dHB1dF9jcHBfZGlyIC4gLS1kZWZpbmVzICIkKEZFQVRVUkVfREVG
SU5FUykgTEFOR1VBR0VfSkFWQVNDUklQVCIKK0luc3BlY3RvckZyb250ZW5kLmggOiBJbnNwZWN0
b3IuaWRsICQoSU5TUEVDVE9SX0dFTkVSQVRPUl9TQ1JJUFRTKQorCSQoY2FsbCBnZW5lcmF0b3Jf
c2NyaXB0LCAkKElOU1BFQ1RPUl9HRU5FUkFUT1JfU0NSSVBUUykpIC0tb3V0cHV0RGlyIC4gLS1k
ZWZpbmVzICIkKEZFQVRVUkVfREVGSU5FUykgTEFOR1VBR0VfSkFWQVNDUklQVCIgLS1nZW5lcmF0
b3IgSW5zcGVjdG9yICQ8CiAKIGFsbCA6IEluamVjdGVkU2NyaXB0U291cmNlLmgKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVt
YWtlZmlsZS5hbQppbmRleCA0OTVmMWRjZDM5ZWIxMzhkMzEwNTc0ZWE5NzhjMGNiODJlNGNjNGFl
Li4wNzk2YWI1NGU5YTI4ZjAxN2E2YWNmZTFmMjZkZDIzMWYzMzE0YjJhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5hbQpAQCAtNjg4LDggKzY4OCwxMSBAQCBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0V2ZW50
RmFjdG9yeS5jcHA6ICQoV2ViQ29yZSkvZG9tL21ha2VfZXZlbnRfZmFjdG9yeS5wbCAkKAogRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9JbnNwZWN0b3JQcm90b2NvbFZlcnNpb24uaCA6ICQoV2ViQ29y
ZSkvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uICQoV2ViQ29yZSkvaW5zcGVjdG9yL2dlbmVyYXRl
LWluc3BlY3Rvci1wcm90b2NvbC12ZXJzaW9uCiAJJChQWVRIT04pICQoV2ViQ29yZSkvaW5zcGVj
dG9yL2dlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC12ZXJzaW9uIC1vICQoR0VOU09VUkNFU19X
RUJDT1JFKS9JbnNwZWN0b3JQcm90b2NvbFZlcnNpb24uaCAkKFdlYkNvcmUpL2luc3BlY3Rvci9J
bnNwZWN0b3IuanNvbgogCi1EZXJpdmVkU291cmNlcy9XZWJDb3JlL0luc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyLmNwcDogJChXZWJDb3JlKS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24gJChXZWJD
b3JlKS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weQotCSQoUFlUSE9OKSAkKFdl
YkNvcmUpL2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5ICQ8IC0tb3V0cHV0X2hf
ZGlyICQoR0VOU09VUkNFU19XRUJDT1JFKSAtLW91dHB1dF9jcHBfZGlyICQoR0VOU09VUkNFU19X
RUJDT1JFKSAtLWRlZmluZXMgIkxBTkdVQUdFX0pBVkFTQ1JJUFQ9MSAkKEZFQVRVUkVfREVGSU5F
UykiCitEZXJpdmVkU291cmNlcy9XZWJDb3JlL0luc3BlY3Rvci5pZGwgOiAkKFdlYkNvcmUpL2lu
c3BlY3Rvci9JbnNwZWN0b3IuanNvbiAkKFdlYkNvcmUpL2luc3BlY3Rvci9nZW5lcmF0ZS1pbnNw
ZWN0b3ItaWRsCisJJChQWVRIT04pICQoV2ViQ29yZSkvaW5zcGVjdG9yL2dlbmVyYXRlLWluc3Bl
Y3Rvci1pZGwgLW8gJChHRU5TT1VSQ0VTX1dFQkNPUkUpL0luc3BlY3Rvci5pZGwgJChXZWJDb3Jl
KS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KKworRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9JbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHA6IERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSW5zcGVj
dG9yLmlkbCAkKFNDUklQVFNfQklORElOR1MpICQoV2ViQ29yZSkvaW5zcGVjdG9yL0NvZGVHZW5l
cmF0b3JJbnNwZWN0b3IucG0KKwkkKEFNX1ZfR0VOKSQoUEVSTCkgLUkkKFdlYkNvcmUpL2JpbmRp
bmdzL3NjcmlwdHMgLUkkKFdlYkNvcmUpL2luc3BlY3RvciAkKFdlYkNvcmUpL2JpbmRpbmdzL3Nj
cmlwdHMvZ2VuZXJhdGUtYmluZGluZ3MucGwgJChJRExfUEFUSDolPS0taW5jbHVkZSAiJSIpIC0t
b3V0cHV0RGlyICIkKEdFTlNPVVJDRVNfV0VCQ09SRSkiIC0tZGVmaW5lcyAiTEFOR1VBR0VfSkFW
QVNDUklQVD0xICQoRkVBVFVSRV9ERUZJTkVTKSIgLS1nZW5lcmF0b3IgSW5zcGVjdG9yICQ8CiBE
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0luc3BlY3RvckZyb250ZW5kLmg6IERlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSW5zcGVjdG9yRnJvbnRlbmQuY3BwCiBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0lu
c3BlY3RvckZyb250ZW5kLmNwcDogRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9JbnNwZWN0b3JCYWNr
ZW5kU3R1Yi5qcwogRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9JbnNwZWN0b3JCYWNrZW5kU3R1Yi5q
czogRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5cCBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwCmluZGV4IGUzYjViMzUwOTU5MWRiNzc1
Y2UyNjM0M2MxNzhlMGFiMjY2OGI4MmEuLmVlNGMyMjUyN2EwOTJhODNjNWRlZjMzMTBjYzZhNDQ3
ZDc5M2YzMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUu
Z3lwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwCkBAIC0zMzYs
MjYgKzMzNiwxNyBAQAogICB9LAogICAndGFyZ2V0cyc6IFsKICAgICB7Ci0gICAgICAndGFyZ2V0
X25hbWUnOiAnaW5zcGVjdG9yX3Byb3RvY29sX3NvdXJjZXMnLAorICAgICAgJ3RhcmdldF9uYW1l
JzogJ2dlbmVyYXRlX2luc3BlY3Rvcl9wcm90b2NvbF92ZXJzaW9uJywKICAgICAgICd0eXBlJzog
J25vbmUnLAotICAgICAgJ2RlcGVuZGVuY2llcyc6IFsKLSAgICAgICAgJ2dlbmVyYXRlX2luc3Bl
Y3Rvcl9wcm90b2NvbF92ZXJzaW9uJwotICAgICAgXSwKICAgICAgICdhY3Rpb25zJzogWwotICAg
ICAgICB7Ci0gICAgICAgICAgJ2FjdGlvbl9uYW1lJzogJ2dlbmVyYXRlSW5zcGVjdG9yUHJvdG9j
b2xTb3VyY2VzJywKKyAgICAgICAgIHsKKyAgICAgICAgICAnYWN0aW9uX25hbWUnOiAnZ2VuZXJh
dGVJbnNwZWN0b3JQcm90b2NvbFZlcnNpb24nLAogICAgICAgICAgICdpbnB1dHMnOiBbCi0gICAg
ICAgICAgICAjIEZpcnN0IGlucHV0LiBJdCBzdGFuZHMgZm9yIHB5dGhvbiBzY3JpcHQgaW4gYWN0
aW9uIGJlbG93LgotICAgICAgICAgICAgJy4uL2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVj
dG9yLnB5JywKLSAgICAgICAgICAgICMgT3RoZXIgaW5wdXRzLiBUaGV5IGdvIGFzIGFyZ3VtZW50
cyB0byB0aGUgcHl0aG9uIHNjcmlwdC4KKyAgICAgICAgICAgICcuLi9pbnNwZWN0b3IvZ2VuZXJh
dGUtaW5zcGVjdG9yLXByb3RvY29sLXZlcnNpb24nLAogICAgICAgICAgICAgJy4uL2luc3BlY3Rv
ci9JbnNwZWN0b3IuanNvbicsCiAgICAgICAgICAgXSwKICAgICAgICAgICAnb3V0cHV0cyc6IFsK
LSAgICAgICAgICAgICc8KFNIQVJFRF9JTlRFUk1FRElBVEVfRElSKS93ZWJjb3JlL0luc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyLmNwcCcsCi0gICAgICAgICAgICAnPChTSEFSRURfSU5URVJNRURJ
QVRFX0RJUikvd2Via2l0L0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmgnLAotICAgICAgICAg
ICAgJzwoU0hBUkVEX0lOVEVSTUVESUFURV9ESVIpL3dlYmNvcmUvSW5zcGVjdG9yRnJvbnRlbmQu
Y3BwJywKLSAgICAgICAgICAgICc8KFNIQVJFRF9JTlRFUk1FRElBVEVfRElSKS93ZWJraXQvSW5z
cGVjdG9yRnJvbnRlbmQuaCcsCi0gICAgICAgICAgICAnPChTSEFSRURfSU5URVJNRURJQVRFX0RJ
Uikvd2ViY29yZS9JbnNwZWN0b3JCYWNrZW5kU3R1Yi5qcycsCisgICAgICAgICAgICAnPChTSEFS
RURfSU5URVJNRURJQVRFX0RJUikvd2Via2l0L0luc3BlY3RvclByb3RvY29sVmVyc2lvbi5oJywK
ICAgICAgICAgICBdLAogICAgICAgICAgICd2YXJpYWJsZXMnOiB7CiAgICAgICAgICAgICAnZ2Vu
ZXJhdG9yX2luY2x1ZGVfZGlycyc6IFsKQEAgLTM2MywyNyArMzU0LDI4IEBACiAgICAgICAgICAg
fSwKICAgICAgICAgICAnYWN0aW9uJzogWwogICAgICAgICAgICAgJ3B5dGhvbicsCi0gICAgICAg
ICAgICAnPEAoX2lucHV0cyknLAotICAgICAgICAgICAgJy0tb3V0cHV0X2hfZGlyJywgJzwoU0hB
UkVEX0lOVEVSTUVESUFURV9ESVIpL3dlYmtpdCcsCi0gICAgICAgICAgICAnLS1vdXRwdXRfY3Bw
X2RpcicsICc8KFNIQVJFRF9JTlRFUk1FRElBVEVfRElSKS93ZWJjb3JlJywKLSAgICAgICAgICAg
ICctLWRlZmluZXMnLCAnPChmZWF0dXJlX2RlZmluZXMpIExBTkdVQUdFX0pBVkFTQ1JJUFQnLAor
ICAgICAgICAgICAgJy4uL2luc3BlY3Rvci9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtdmVy
c2lvbicsCisgICAgICAgICAgICAnLW8nLAorICAgICAgICAgICAgJzxAKF9vdXRwdXRzKScsCisg
ICAgICAgICAgICAnPEAoX2lucHV0cyknCiAgICAgICAgICAgXSwKLSAgICAgICAgICAnbWVzc2Fn
ZSc6ICdHZW5lcmF0aW5nIEluc3BlY3RvciBwcm90b2NvbCBzb3VyY2VzIGZyb20gSW5zcGVjdG9y
Lmpzb24nLAotICAgICAgICB9LAorICAgICAgICAgICdtZXNzYWdlJzogJ1ZhbGlkYXRlIGluc3Bl
Y3RvciBwcm90b2NvbCBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgYW5kIGdlbmVyYXRlIHZl
cnNpb24gZmlsZScsCisgICAgICAgIH0KICAgICAgIF0KICAgICB9LAogICAgIHsKLSAgICAgICd0
YXJnZXRfbmFtZSc6ICdnZW5lcmF0ZV9pbnNwZWN0b3JfcHJvdG9jb2xfdmVyc2lvbicsCisgICAg
ICAndGFyZ2V0X25hbWUnOiAnaW5zcGVjdG9yX2lkbCcsCiAgICAgICAndHlwZSc6ICdub25lJywK
ICAgICAgICdhY3Rpb25zJzogWwotICAgICAgICAgewotICAgICAgICAgICdhY3Rpb25fbmFtZSc6
ICdnZW5lcmF0ZUluc3BlY3RvclByb3RvY29sVmVyc2lvbicsCisKKyAgICAgICAgeworICAgICAg
ICAgICdhY3Rpb25fbmFtZSc6ICdnZW5lcmF0ZUluc3BlY3RvclByb3RvY29sSURMJywKICAgICAg
ICAgICAnaW5wdXRzJzogWwotICAgICAgICAgICAgJy4uL2luc3BlY3Rvci9nZW5lcmF0ZS1pbnNw
ZWN0b3ItcHJvdG9jb2wtdmVyc2lvbicsCisgICAgICAgICAgICAnLi4vaW5zcGVjdG9yL2dlbmVy
YXRlLWluc3BlY3Rvci1pZGwnLAogICAgICAgICAgICAgJy4uL2luc3BlY3Rvci9JbnNwZWN0b3Iu
anNvbicsCiAgICAgICAgICAgXSwKICAgICAgICAgICAnb3V0cHV0cyc6IFsKLSAgICAgICAgICAg
ICc8KFNIQVJFRF9JTlRFUk1FRElBVEVfRElSKS93ZWJraXQvSW5zcGVjdG9yUHJvdG9jb2xWZXJz
aW9uLmgnLAorICAgICAgICAgICAgJzwoU0hBUkVEX0lOVEVSTUVESUFURV9ESVIpL3dlYmNvcmUv
SW5zcGVjdG9yLmlkbCcsCiAgICAgICAgICAgXSwKICAgICAgICAgICAndmFyaWFibGVzJzogewog
ICAgICAgICAgICAgJ2dlbmVyYXRvcl9pbmNsdWRlX2RpcnMnOiBbCkBAIC0zOTEsMTYgKzM4Myw2
NSBAQAogICAgICAgICAgIH0sCiAgICAgICAgICAgJ2FjdGlvbic6IFsKICAgICAgICAgICAgICdw
eXRob24nLAotICAgICAgICAgICAgJy4uL2luc3BlY3Rvci9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJv
dG9jb2wtdmVyc2lvbicsCisgICAgICAgICAgICAnLi4vaW5zcGVjdG9yL2dlbmVyYXRlLWluc3Bl
Y3Rvci1pZGwnLAogICAgICAgICAgICAgJy1vJywKICAgICAgICAgICAgICc8QChfb3V0cHV0cykn
LAogICAgICAgICAgICAgJzxAKF9pbnB1dHMpJwogICAgICAgICAgIF0sCi0gICAgICAgICAgJ21l
c3NhZ2UnOiAnVmFsaWRhdGUgaW5zcGVjdG9yIHByb3RvY29sIGZvciBiYWNrd2FyZHMgY29tcGF0
aWJpbGl0eSBhbmQgZ2VuZXJhdGUgdmVyc2lvbiBmaWxlJywKKyAgICAgICAgICAnbWVzc2FnZSc6
ICdHZW5lcmF0aW5nIEluc3BlY3RvciBwcm90b2NvbCBzb3VyY2VzIGZyb20gSW5zcGVjdG9yLmlk
bCcsCiAgICAgICAgIH0KICAgICAgIF0KICAgICB9LAogICAgIHsKKyAgICAgICd0YXJnZXRfbmFt
ZSc6ICdpbnNwZWN0b3JfcHJvdG9jb2xfc291cmNlcycsCisgICAgICAndHlwZSc6ICdub25lJywK
KyAgICAgICdkZXBlbmRlbmNpZXMnOiBbCisgICAgICAgICdpbnNwZWN0b3JfaWRsJywKKyAgICAg
ICAgJ2dlbmVyYXRlX2luc3BlY3Rvcl9wcm90b2NvbF92ZXJzaW9uJworICAgICAgXSwKKyAgICAg
ICdhY3Rpb25zJzogWworICAgICAgICB7CisgICAgICAgICAgJ2FjdGlvbl9uYW1lJzogJ2dlbmVy
YXRlSW5zcGVjdG9yUHJvdG9jb2xTb3VyY2VzJywKKyAgICAgICAgICAjIFRoZSBzZWNvbmQgaW5w
dXQgaXRlbSB3aWxsIGJlIHVzZWQgYXMgaXRlbSBuYW1lIGluIHZjcHJvai4KKyAgICAgICAgICAj
IEl0IGlzIG5vdCBwb3NzaWJsZSB0byBwdXQgSW5zcGVjdG9yLmlkbCB0aGVyZSBiZWNhdXNlCisg
ICAgICAgICAgIyBhbGwgaWRsIGZpbGVzIGFyZSBtYXJraW5nIGFzIGV4Y2x1ZGVkIGJ5IGd5cCBn
ZW5lcmF0b3IuCisgICAgICAgICAgJ2lucHV0cyc6IFsKKyAgICAgICAgICAgICcuLi9iaW5kaW5n
cy9zY3JpcHRzL2dlbmVyYXRlLWJpbmRpbmdzLnBsJywKKyAgICAgICAgICAgICcuLi9pbnNwZWN0
b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5wbScsCisgICAgICAgICAgICAnLi4vYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtJywKKyAgICAgICAgICAgICcuLi9iaW5kaW5ncy9zY3Jp
cHRzL0lETFBhcnNlci5wbScsCisgICAgICAgICAgICAnLi4vYmluZGluZ3Mvc2NyaXB0cy9JRExT
dHJ1Y3R1cmUucG0nLAorICAgICAgICAgICAgJzwoU0hBUkVEX0lOVEVSTUVESUFURV9ESVIpL3dl
YmNvcmUvSW5zcGVjdG9yLmlkbCcsCisgICAgICAgICAgXSwKKyAgICAgICAgICAnb3V0cHV0cyc6
IFsKKyAgICAgICAgICAgICc8KFNIQVJFRF9JTlRFUk1FRElBVEVfRElSKS93ZWJjb3JlL0luc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcCcsCisgICAgICAgICAgICAnPChTSEFSRURfSU5URVJN
RURJQVRFX0RJUikvd2ViY29yZS9JbnNwZWN0b3JCYWNrZW5kU3R1Yi5qcycsCisgICAgICAgICAg
ICAnPChTSEFSRURfSU5URVJNRURJQVRFX0RJUikvd2Via2l0L0luc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyLmgnLAorICAgICAgICAgICAgJzwoU0hBUkVEX0lOVEVSTUVESUFURV9ESVIpL3dlYmNv
cmUvSW5zcGVjdG9yRnJvbnRlbmQuY3BwJywKKyAgICAgICAgICAgICc8KFNIQVJFRF9JTlRFUk1F
RElBVEVfRElSKS93ZWJraXQvSW5zcGVjdG9yRnJvbnRlbmQuaCcsCisgICAgICAgICAgXSwKKyAg
ICAgICAgICAndmFyaWFibGVzJzogeworICAgICAgICAgICAgJ2dlbmVyYXRvcl9pbmNsdWRlX2Rp
cnMnOiBbCisgICAgICAgICAgICBdLAorICAgICAgICAgIH0sCisgICAgICAgICAgJ2FjdGlvbic6
IFsKKyAgICAgICAgICAgICdweXRob24nLAorICAgICAgICAgICAgJ3NjcmlwdHMvcnVsZV9iaW5k
aW5nLnB5JywKKyAgICAgICAgICAgICc8KFNIQVJFRF9JTlRFUk1FRElBVEVfRElSKS93ZWJjb3Jl
L0luc3BlY3Rvci5pZGwnLAorICAgICAgICAgICAgJzwoU0hBUkVEX0lOVEVSTUVESUFURV9ESVIp
L3dlYmNvcmUnLAorICAgICAgICAgICAgJzwoU0hBUkVEX0lOVEVSTUVESUFURV9ESVIpL3dlYmtp
dCcsCisgICAgICAgICAgICAnLS0nLAorICAgICAgICAgICAgJzxAKF9pbnB1dHMpJywKKyAgICAg
ICAgICAgICctLScsCisgICAgICAgICAgICAnLS1kZWZpbmVzJywgJzwoZmVhdHVyZV9kZWZpbmVz
KSBMQU5HVUFHRV9KQVZBU0NSSVBUJywKKyAgICAgICAgICAgICctLWdlbmVyYXRvcicsICdJbnNw
ZWN0b3InLAorICAgICAgICAgICAgJzxAKGdlbmVyYXRvcl9pbmNsdWRlX2RpcnMpJworICAgICAg
ICAgIF0sCisgICAgICAgICAgJ21lc3NhZ2UnOiAnR2VuZXJhdGluZyBJbnNwZWN0b3IgcHJvdG9j
b2wgc291cmNlcyBmcm9tIEluc3BlY3Rvci5pZGwnLAorICAgICAgICB9LAorICAgICAgXQorICAg
IH0sCisgICAgewogICAgICAgJ3RhcmdldF9uYW1lJzogJ2luamVjdGVkX3NjcmlwdF9zb3VyY2Un
LAogICAgICAgJ3R5cGUnOiAnbm9uZScsCiAgICAgICAnYWN0aW9ucyc6IFsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnBtIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucG0KbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNzJlMjE4M2MxZjI5YzQ2Nzk1ODkyNjA1MGNiZDk4NGNhOTM5Y2ExOAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnBt
CkBAIC0wLDAgKzEsMTIzNSBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMTAgVGhlIENocm9taXVtIEF1
dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyMgZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZS4KKworcGFja2FnZSBDb2RlR2VuZXJhdG9ySW5zcGVjdG9yOworCit1
c2Ugc3RyaWN0OworCit1c2UgQ2xhc3M6OlN0cnVjdDsKK3VzZSBGaWxlOjpzdGF0OworCitteSAl
dHlwZVRyYW5zZm9ybTsKKyR0eXBlVHJhbnNmb3JteyJBcHBsaWNhdGlvbkNhY2hlIn0gPSB7Cisg
ICAgImZvcndhcmQiID0+ICJJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQiLAorICAgICJo
ZWFkZXIiID0+ICJJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaCIsCisgICAgImRvbWFp
bkFjY2Vzc29yIiA9PiAibV9hcHBsaWNhdGlvbkNhY2hlQWdlbnQiLAorfTsKKyR0eXBlVHJhbnNm
b3JteyJDU1MifSA9IHsKKyAgICAiZm9yd2FyZCIgPT4gIkluc3BlY3RvckNTU0FnZW50IiwKKyAg
ICAiaGVhZGVyIiA9PiAiSW5zcGVjdG9yQ1NTQWdlbnQuaCIsCisgICAgImRvbWFpbkFjY2Vzc29y
IiA9PiAibV9jc3NBZ2VudCIsCit9OworJHR5cGVUcmFuc2Zvcm17IkNvbnNvbGUifSA9IHsKKyAg
ICAiZm9yd2FyZCIgPT4gIkluc3BlY3RvckNvbnNvbGVBZ2VudCIsCisgICAgImhlYWRlciIgPT4g
Ikluc3BlY3RvckNvbnNvbGVBZ2VudC5oIiwKKyAgICAiZG9tYWluQWNjZXNzb3IiID0+ICJtX2Nv
bnNvbGVBZ2VudCIsCit9OworJHR5cGVUcmFuc2Zvcm17IlBhZ2UifSA9IHsKKyAgICAiZm9yd2Fy
ZCIgPT4gIkluc3BlY3RvclBhZ2VBZ2VudCIsCisgICAgImhlYWRlciIgPT4gIkluc3BlY3RvclBh
Z2VBZ2VudC5oIiwKKyAgICAiZG9tYWluQWNjZXNzb3IiID0+ICJtX3BhZ2VBZ2VudCIsCit9Owor
JHR5cGVUcmFuc2Zvcm17IkRlYnVnZ2VyIn0gPSB7CisgICAgImZvcndhcmQiID0+ICJJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50IiwKKyAgICAiaGVhZGVyIiA9PiAiSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dC5oIiwKKyAgICAiZG9tYWluQWNjZXNzb3IiID0+ICJtX2RlYnVnZ2VyQWdlbnQiLAorfTsKKyR0
eXBlVHJhbnNmb3JteyJET01EZWJ1Z2dlciJ9ID0geworICAgICJmb3J3YXJkIiA9PiAiSW5zcGVj
dG9yRE9NRGVidWdnZXJBZ2VudCIsCisgICAgImhlYWRlciIgPT4gIkluc3BlY3RvckRPTURlYnVn
Z2VyQWdlbnQuaCIsCisgICAgImRvbWFpbkFjY2Vzc29yIiA9PiAibV9kb21EZWJ1Z2dlckFnZW50
IiwKK307CiskdHlwZVRyYW5zZm9ybXsiRGF0YWJhc2UifSA9IHsKKyAgICAiZm9yd2FyZCIgPT4g
Ikluc3BlY3RvckRhdGFiYXNlQWdlbnQiLAorICAgICJoZWFkZXIiID0+ICJJbnNwZWN0b3JEYXRh
YmFzZUFnZW50LmgiLAorICAgICJkb21haW5BY2Nlc3NvciIgPT4gIm1fZGF0YWJhc2VBZ2VudCIs
Cit9OworJHR5cGVUcmFuc2Zvcm17IkRPTSJ9ID0geworICAgICJmb3J3YXJkIiA9PiAiSW5zcGVj
dG9yRE9NQWdlbnQiLAorICAgICJoZWFkZXIiID0+ICJJbnNwZWN0b3JET01BZ2VudC5oIiwKKyAg
ICAiZG9tYWluQWNjZXNzb3IiID0+ICJtX2RvbUFnZW50IiwKK307CiskdHlwZVRyYW5zZm9ybXsi
RE9NU3RvcmFnZSJ9ID0geworICAgICJmb3J3YXJkIiA9PiAiSW5zcGVjdG9yRE9NU3RvcmFnZUFn
ZW50IiwKKyAgICAiaGVhZGVyIiA9PiAiSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmgiLAorICAg
ICJkb21haW5BY2Nlc3NvciIgPT4gIm1fZG9tU3RvcmFnZUFnZW50IiwKK307CiskdHlwZVRyYW5z
Zm9ybXsiRmlsZVN5c3RlbSJ9ID0geworICAgICJmb3J3YXJkIiA9PiAiSW5zcGVjdG9yRmlsZVN5
c3RlbUFnZW50IiwKKyAgICAiaGVhZGVyIiA9PiAiSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50Lmgi
LAorICAgICJkb21haW5BY2Nlc3NvciIgPT4gIm1fZmlsZVN5c3RlbUFnZW50IiwKK307CiskdHlw
ZVRyYW5zZm9ybXsiSW5zcGVjdG9yIn0gPSB7CisgICAgImZvcndhcmQiID0+ICJJbnNwZWN0b3JB
Z2VudCIsCisgICAgImhlYWRlciIgPT4gIkluc3BlY3RvckFnZW50LmgiLAorICAgICJkb21haW5B
Y2Nlc3NvciIgPT4gIm1faW5zcGVjdG9yQWdlbnQiLAorfTsKKyR0eXBlVHJhbnNmb3JteyJOZXR3
b3JrIn0gPSB7CisgICAgImZvcndhcmQiID0+ICJJbnNwZWN0b3JSZXNvdXJjZUFnZW50IiwKKyAg
ICAiaGVhZGVyIiA9PiAiSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oIiwKKyAgICAiZG9tYWluQWNj
ZXNzb3IiID0+ICJtX3Jlc291cmNlQWdlbnQiLAorfTsKKyR0eXBlVHJhbnNmb3JteyJQcm9maWxl
ciJ9ID0geworICAgICJmb3J3YXJkIiA9PiAiSW5zcGVjdG9yUHJvZmlsZXJBZ2VudCIsCisgICAg
ImhlYWRlciIgPT4gIkluc3BlY3RvclByb2ZpbGVyQWdlbnQuaCIsCisgICAgImRvbWFpbkFjY2Vz
c29yIiA9PiAibV9wcm9maWxlckFnZW50IiwKK307CiskdHlwZVRyYW5zZm9ybXsiUnVudGltZSJ9
ID0geworICAgICJmb3J3YXJkIiA9PiAiSW5zcGVjdG9yUnVudGltZUFnZW50IiwKKyAgICAiaGVh
ZGVyIiA9PiAiSW5zcGVjdG9yUnVudGltZUFnZW50LmgiLAorICAgICJkb21haW5BY2Nlc3NvciIg
PT4gIm1fcnVudGltZUFnZW50IiwKK307CiskdHlwZVRyYW5zZm9ybXsiVGltZWxpbmUifSA9IHsK
KyAgICAiZm9yd2FyZCIgPT4gIkluc3BlY3RvclRpbWVsaW5lQWdlbnQiLAorICAgICJoZWFkZXIi
ID0+ICJJbnNwZWN0b3JUaW1lbGluZUFnZW50LmgiLAorICAgICJkb21haW5BY2Nlc3NvciIgPT4g
Im1fdGltZWxpbmVBZ2VudCIsCit9OworJHR5cGVUcmFuc2Zvcm17IldvcmtlciJ9ID0geworICAg
ICJmb3J3YXJkIiA9PiAiSW5zcGVjdG9yV29ya2VyQWdlbnQiLAorICAgICJoZWFkZXIiID0+ICJJ
bnNwZWN0b3JXb3JrZXJBZ2VudC5oIiwKKyAgICAiZG9tYWluQWNjZXNzb3IiID0+ICJtX3dvcmtl
ckFnZW50IiwKK307CisKKyR0eXBlVHJhbnNmb3JteyJGcm9udGVuZCJ9ID0geworICAgICJmb3J3
YXJkIiA9PiAiSW5zcGVjdG9yRnJvbnRlbmQiLAorICAgICJoZWFkZXIiID0+ICJJbnNwZWN0b3JG
cm9udGVuZC5oIiwKK307CiskdHlwZVRyYW5zZm9ybXsiUGFzc1JlZlB0ciJ9ID0geworICAgICJm
b3J3YXJkSGVhZGVyIiA9PiAid3RmL1Bhc3NSZWZQdHIuaCIsCit9OworJHR5cGVUcmFuc2Zvcm17
IlJlZkNvdW50ZWQifSA9IHsKKyAgICAiZm9yd2FyZEhlYWRlciIgPT4gInd0Zi9SZWZDb3VudGVk
LmgiLAorfTsKKyR0eXBlVHJhbnNmb3JteyJJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwifSA9IHsK
KyAgICAiZm9yd2FyZCIgPT4gIkluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCIsCisgICAgImhlYWRl
ciIgPT4gIkluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oIiwKK307CiskdHlwZVRyYW5zZm9ybXsi
T2JqZWN0In0gPSB7CisgICAgInBhcmFtIiA9PiAiUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+
IiwKKyAgICAidmFyaWFibGUiID0+ICJSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiIsCisgICAgImRl
ZmF1bHRWYWx1ZSIgPT4gIkluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCkiLAorICAgICJmb3J3YXJk
IiA9PiAiSW5zcGVjdG9yT2JqZWN0IiwKKyAgICAiaGVhZGVyIiA9PiAiSW5zcGVjdG9yVmFsdWVz
LmgiLAorICAgICJKU09OVHlwZSIgPT4gIk9iamVjdCIsCisgICAgIkpTVHlwZSIgPT4gIm9iamVj
dCIsCit9OworJHR5cGVUcmFuc2Zvcm17IkFycmF5In0gPSB7CisgICAgInBhcmFtIiA9PiAiUGFz
c1JlZlB0cjxJbnNwZWN0b3JBcnJheT4iLAorICAgICJ2YXJpYWJsZSIgPT4gIlJlZlB0cjxJbnNw
ZWN0b3JBcnJheT4iLAorICAgICJkZWZhdWx0VmFsdWUiID0+ICJJbnNwZWN0b3JBcnJheTo6Y3Jl
YXRlKCkiLAorICAgICJmb3J3YXJkIiA9PiAiSW5zcGVjdG9yQXJyYXkiLAorICAgICJoZWFkZXIi
ID0+ICJJbnNwZWN0b3JWYWx1ZXMuaCIsCisgICAgIkpTT05UeXBlIiA9PiAiQXJyYXkiLAorICAg
ICJKU1R5cGUiID0+ICJvYmplY3QiLAorfTsKKyR0eXBlVHJhbnNmb3JteyJWYWx1ZSJ9ID0gewor
ICAgICJwYXJhbSIgPT4gIlBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IiwKKyAgICAidmFyaWFi
bGUiID0+ICJSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IiwKKyAgICAiZGVmYXVsdFZhbHVlIiA9PiAi
SW5zcGVjdG9yVmFsdWU6Om51bGwoKSIsCisgICAgImZvcndhcmQiID0+ICJJbnNwZWN0b3JWYWx1
ZSIsCisgICAgImhlYWRlciIgPT4gIkluc3BlY3RvclZhbHVlcy5oIiwKKyAgICAiSlNPTlR5cGUi
ID0+ICJWYWx1ZSIsCisgICAgIkpTVHlwZSIgPT4gIiIsCit9OworJHR5cGVUcmFuc2Zvcm17IlN0
cmluZyJ9ID0geworICAgICJwYXJhbSIgPT4gImNvbnN0IFN0cmluZyYiLAorICAgICJvcHRpb25h
bF9wYXJhbSIgPT4gImNvbnN0IFN0cmluZyogY29uc3QiLAorICAgICJvcHRpb25hbF92YWx1ZUFj
Y2Vzc29yIiA9PiAiKiIsCisgICAgInZhcmlhYmxlIiA9PiAiU3RyaW5nIiwKKyAgICAicmV0dXJu
IiA9PiAiU3RyaW5nIiwKKyAgICAiZGVmYXVsdFZhbHVlIiA9PiAiXCJcIiIsCisgICAgImZvcndh
cmRIZWFkZXIiID0+ICJQbGF0Zm9ybVN0cmluZy5oIiwKKyAgICAiaGVhZGVyIiA9PiAiUGxhdGZv
cm1TdHJpbmcuaCIsCisgICAgIkpTT05UeXBlIiA9PiAiU3RyaW5nIiwKKyAgICAiSlNUeXBlIiA9
PiAic3RyaW5nIgorfTsKKyR0eXBlVHJhbnNmb3JteyJsb25nIn0gPSB7CisgICAgInBhcmFtIiA9
PiAibG9uZyIsCisgICAgIm9wdGlvbmFsX3BhcmFtIiA9PiAiY29uc3QgbG9uZyogY29uc3QiLAor
ICAgICJvcHRpb25hbF92YWx1ZUFjY2Vzc29yIiA9PiAiKiIsCisgICAgInZhcmlhYmxlIiA9PiAi
bG9uZyIsCisgICAgImRlZmF1bHRWYWx1ZSIgPT4gIjAiLAorICAgICJmb3J3YXJkIiA9PiAiIiwK
KyAgICAiaGVhZGVyIiA9PiAiIiwKKyAgICAiSlNPTlR5cGUiID0+ICJOdW1iZXIiLAorICAgICJK
U1R5cGUiID0+ICJudW1iZXIiCit9OworJHR5cGVUcmFuc2Zvcm17ImludCJ9ID0geworICAgICJw
YXJhbSIgPT4gImludCIsCisgICAgIm9wdGlvbmFsX3BhcmFtIiA9PiAiY29uc3QgaW50KiBjb25z
dCIsCisgICAgIm9wdGlvbmFsX3ZhbHVlQWNjZXNzb3IiID0+ICIqIiwKKyAgICAidmFyaWFibGUi
ID0+ICJpbnQiLAorICAgICJkZWZhdWx0VmFsdWUiID0+ICIwIiwKKyAgICAiZm9yd2FyZCIgPT4g
IiIsCisgICAgImhlYWRlciIgPT4gIiIsCisgICAgIkpTT05UeXBlIiA9PiAiTnVtYmVyIiwKKyAg
ICAiSlNUeXBlIiA9PiAibnVtYmVyIgorfTsKKyR0eXBlVHJhbnNmb3JteyJ1bnNpZ25lZCBsb25n
In0gPSB7CisgICAgInBhcmFtIiA9PiAidW5zaWduZWQgbG9uZyIsCisgICAgIm9wdGlvbmFsX3Bh
cmFtIiA9PiAiY29uc3QgdW5zaWduZWQgbG9uZyogY29uc3QiLAorICAgICJvcHRpb25hbF92YWx1
ZUFjY2Vzc29yIiA9PiAiKiIsCisgICAgInZhcmlhYmxlIiA9PiAidW5zaWduZWQgbG9uZyIsCisg
ICAgImRlZmF1bHRWYWx1ZSIgPT4gIjB1IiwKKyAgICAiZm9yd2FyZCIgPT4gIiIsCisgICAgImhl
YWRlciIgPT4gIiIsCisgICAgIkpTT05UeXBlIiA9PiAiTnVtYmVyIiwKKyAgICAiSlNUeXBlIiA9
PiAibnVtYmVyIgorfTsKKyR0eXBlVHJhbnNmb3JteyJ1bnNpZ25lZCBpbnQifSA9IHsKKyAgICAi
cGFyYW0iID0+ICJ1bnNpZ25lZCBpbnQiLAorICAgICJvcHRpb25hbF9wYXJhbSIgPT4gImNvbnN0
IHVuc2lnbmVkIGludCogY29uc3QiLAorICAgICJvcHRpb25hbF92YWx1ZUFjY2Vzc29yIiA9PiAi
KiIsCisgICAgInZhcmlhYmxlIiA9PiAidW5zaWduZWQgaW50IiwKKyAgICAiZGVmYXVsdFZhbHVl
IiA9PiAiMHUiLAorICAgICJmb3J3YXJkIiA9PiAiIiwKKyAgICAiaGVhZGVyIiA9PiAiIiwKKyAg
ICAiSlNPTlR5cGUiID0+ICJOdW1iZXIiLAorICAgICJKU1R5cGUiID0+ICJudW1iZXIiCit9Owor
JHR5cGVUcmFuc2Zvcm17ImRvdWJsZSJ9ID0geworICAgICJwYXJhbSIgPT4gImRvdWJsZSIsCisg
ICAgIm9wdGlvbmFsX3BhcmFtIiA9PiAiY29uc3QgZG91YmxlKiBjb25zdCIsCisgICAgIm9wdGlv
bmFsX3ZhbHVlQWNjZXNzb3IiID0+ICIqIiwKKyAgICAidmFyaWFibGUiID0+ICJkb3VibGUiLAor
ICAgICJkZWZhdWx0VmFsdWUiID0+ICIwLjAiLAorICAgICJmb3J3YXJkIiA9PiAiIiwKKyAgICAi
aGVhZGVyIiA9PiAiIiwKKyAgICAiSlNPTlR5cGUiID0+ICJOdW1iZXIiLAorICAgICJKU1R5cGUi
ID0+ICJudW1iZXIiCit9OworJHR5cGVUcmFuc2Zvcm17ImJvb2xlYW4ifSA9IHsKKyAgICAicGFy
YW0iID0+ICJib29sIiwKKyAgICAib3B0aW9uYWxfcGFyYW0iID0+ICJjb25zdCBib29sKiBjb25z
dCIsCisgICAgIm9wdGlvbmFsX3ZhbHVlQWNjZXNzb3IiID0+ICIqIiwKKyAgICAidmFyaWFibGUi
PT4gImJvb2wiLAorICAgICJkZWZhdWx0VmFsdWUiID0+ICJmYWxzZSIsCisgICAgImZvcndhcmQi
ID0+ICIiLAorICAgICJoZWFkZXIiID0+ICIiLAorICAgICJKU09OVHlwZSIgPT4gIkJvb2xlYW4i
LAorICAgICJKU1R5cGUiID0+ICJib29sZWFuIgorfTsKKyR0eXBlVHJhbnNmb3JteyJ2b2lkIn0g
PSB7CisgICAgImZvcndhcmQiID0+ICIiLAorICAgICJoZWFkZXIiID0+ICIiCit9OworJHR5cGVU
cmFuc2Zvcm17IlZlY3RvciJ9ID0geworICAgICJoZWFkZXIiID0+ICJ3dGYvVmVjdG9yLmgiCit9
OworCisjIERlZmF1bHQgTGljZW5zZSBUZW1wbGF0ZXMKKworbXkgJGxpY2Vuc2VUZW1wbGF0ZSA9
IDw8ICJFT0YiOworLy8gQ29weXJpZ2h0IChjKSAyMDEwIFRoZSBDaHJvbWl1bSBBdXRob3JzLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZS4KK0VPRgorCitteSAkY29kZUdlbmVyYXRvcjsKK215ICRvdXRwdXREaXI7Citt
eSAkb3V0cHV0SGVhZGVyc0RpcjsKK215ICR3cml0ZURlcGVuZGVuY2llczsKK215ICR2ZXJib3Nl
OworCitteSAkbmFtZXNwYWNlOworCitteSAkYmFja2VuZENsYXNzTmFtZTsKK215ICRiYWNrZW5k
Q2xhc3NEZWNsYXJhdGlvbjsKK215ICRiYWNrZW5kSlNTdHViTmFtZTsKK215ICViYWNrZW5kVHlw
ZXM7CitteSBAYmFja2VuZE1ldGhvZHM7CitteSBAYmFja2VuZE1ldGhvZHNJbXBsOworbXkgJWJh
Y2tlbmRNZXRob2RTaWduYXR1cmVzOworbXkgJGJhY2tlbmRDb25zdHJ1Y3RvcjsKK215IEBiYWNr
ZW5kQ29uc3RhbnREZWNsYXJhdGlvbnM7CitteSBAYmFja2VuZENvbnN0YW50RGVmaW5pdGlvbnM7
CitteSBAYmFja2VuZEZvb3RlcjsKK215IEBiYWNrZW5kSlNTdHViczsKK215IEBiYWNrZW5kSlNF
dmVudHM7CitteSAlYmFja2VuZERvbWFpbnM7CisKK215ICRmcm9udGVuZENsYXNzTmFtZTsKK215
ICVmcm9udGVuZFR5cGVzOworbXkgQGZyb250ZW5kTWV0aG9kczsKK215IEBmcm9udGVuZEFnZW50
RmllbGRzOworbXkgQGZyb250ZW5kTWV0aG9kc0ltcGw7CitteSAlZnJvbnRlbmRNZXRob2RTaWdu
YXR1cmVzOworbXkgJGZyb250ZW5kQ29uc3RydWN0b3I7CitteSBAZnJvbnRlbmRDb25zdGFudERl
Y2xhcmF0aW9uczsKK215IEBmcm9udGVuZENvbnN0YW50RGVmaW5pdGlvbnM7CitteSBAZnJvbnRl
bmRGb290ZXI7CitteSBAZnJvbnRlbmREb21haW5zOworCisjIERlZmF1bHQgY29uc3RydWN0b3IK
K3N1YiBuZXcKK3sKKyAgICBteSAkb2JqZWN0ID0gc2hpZnQ7CisgICAgbXkgJHJlZmVyZW5jZSA9
IHsgfTsKKworICAgICRjb2RlR2VuZXJhdG9yID0gc2hpZnQ7CisgICAgJG91dHB1dERpciA9IHNo
aWZ0OworICAgICRvdXRwdXRIZWFkZXJzRGlyID0gc2hpZnQ7CisgICAgc2hpZnQ7ICMgJHVzZUxh
eWVyT25Ub3AKKyAgICBzaGlmdDsgIyAkcHJlcHJvY2Vzc29yCisgICAgJHdyaXRlRGVwZW5kZW5j
aWVzID0gc2hpZnQ7CisgICAgJHZlcmJvc2UgPSBzaGlmdDsKKworICAgIGJsZXNzKCRyZWZlcmVu
Y2UsICRvYmplY3QpOworICAgIHJldHVybiAkcmVmZXJlbmNlOworfQorCisjIFBhcmFtczogJ2lk
bERvY3VtZW50JyBzdHJ1Y3QKK3N1YiBHZW5lcmF0ZU1vZHVsZQoreworICAgIG15ICRvYmplY3Qg
PSBzaGlmdDsKKyAgICBteSAkZGF0YU5vZGUgPSBzaGlmdDsKKworICAgICRuYW1lc3BhY2UgPSAk
ZGF0YU5vZGUtPm1vZHVsZTsKKyAgICAkbmFtZXNwYWNlID1+IHMvY29yZS9XZWJDb3JlLzsKKwor
ICAgICRmcm9udGVuZENsYXNzTmFtZSA9ICJJbnNwZWN0b3JGcm9udGVuZCI7CisgICAgJGZyb250
ZW5kQ29uc3RydWN0b3IgPSAiICAgICR7ZnJvbnRlbmRDbGFzc05hbWV9KEluc3BlY3RvckZyb250
ZW5kQ2hhbm5lbCopOyI7CisgICAgcHVzaChAZnJvbnRlbmRGb290ZXIsICJwcml2YXRlOiIpOwor
ICAgIHB1c2goQGZyb250ZW5kRm9vdGVyLCAiICAgIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCog
bV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWw7Iik7CisgICAgJGZyb250ZW5kVHlwZXN7IlN0cmlu
ZyJ9ID0gMTsKKyAgICAkZnJvbnRlbmRUeXBlc3siSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsIn0g
PSAxOworICAgICRmcm9udGVuZFR5cGVzeyJQYXNzUmVmUHRyIn0gPSAxOworCisgICAgJGJhY2tl
bmRDbGFzc05hbWUgPSAiSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIiOworICAgICRiYWNrZW5k
Q2xhc3NEZWNsYXJhdGlvbiA9ICJJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjogcHVibGljIFJl
ZkNvdW50ZWQ8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IjsKKyAgICAkYmFja2VuZEpTU3R1
Yk5hbWUgPSAiSW5zcGVjdG9yQmFja2VuZFN0dWIiOworICAgICRiYWNrZW5kVHlwZXN7Ikluc3Bl
Y3RvciJ9ID0gMTsKKyAgICAkYmFja2VuZFR5cGVzeyJJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwi
fSA9IDE7CisgICAgJGJhY2tlbmRUeXBlc3siUGFzc1JlZlB0ciJ9ID0gMTsKKyAgICAkYmFja2Vu
ZFR5cGVzeyJSZWZDb3VudGVkIn0gPSAxOworICAgICRiYWNrZW5kVHlwZXN7Ik9iamVjdCJ9ID0g
MTsKK30KKworIyBQYXJhbXM6ICdpZGxEb2N1bWVudCcgc3RydWN0CitzdWIgR2VuZXJhdGVJbnRl
cmZhY2UKK3sKKyAgICBteSAkb2JqZWN0ID0gc2hpZnQ7CisgICAgbXkgJGludGVyZmFjZSA9IHNo
aWZ0OworICAgIG15ICRkZWZpbmVzID0gc2hpZnQ7CisKKyAgICBteSAlYWdlbnQgPSAoCisgICAg
ICAgIG1ldGhvZERlY2xhcmF0aW9ucyA9PiBbXSwKKyAgICAgICAgbWV0aG9kU2lnbmF0dXJlcyA9
PiB7fQorICAgICk7CisgICAgZ2VuZXJhdGVGdW5jdGlvbnMoJGludGVyZmFjZSwgXCVhZ2VudCk7
CisgICAgaWYgKEB7JGFnZW50e21ldGhvZERlY2xhcmF0aW9uc319KSB7CisgICAgICAgIHB1c2go
QGZyb250ZW5kRG9tYWlucywgJGludGVyZmFjZS0+bmFtZSk7CisgICAgICAgIGdlbmVyYXRlQWdl
bnREZWNsYXJhdGlvbigkaW50ZXJmYWNlLCBcJWFnZW50KTsKKyAgICB9Cit9CisKK3N1YiBnZW5l
cmF0ZUFnZW50RGVjbGFyYXRpb24KK3sKKyAgICBteSAkaW50ZXJmYWNlID0gc2hpZnQ7CisgICAg
bXkgJGFnZW50ID0gc2hpZnQ7CisgICAgbXkgJGFnZW50TmFtZSA9ICRpbnRlcmZhY2UtPm5hbWU7
CisgICAgcHVzaChAZnJvbnRlbmRNZXRob2RzLCAiICAgIGNsYXNzICR7YWdlbnROYW1lfSB7Iik7
CisgICAgcHVzaChAZnJvbnRlbmRNZXRob2RzLCAiICAgIHB1YmxpYzoiKTsKKyAgICBwdXNoKEBm
cm9udGVuZE1ldGhvZHMsICIgICAgICAgICR7YWdlbnROYW1lfShJbnNwZWN0b3JGcm9udGVuZENo
YW5uZWwqIGluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCkgOiBtX2luc3BlY3RvckZyb250ZW5kQ2hh
bm5lbChpbnNwZWN0b3JGcm9udGVuZENoYW5uZWwpIHsgfSIpOworICAgIHB1c2goQGZyb250ZW5k
TWV0aG9kcywgQHskYWdlbnQtPnttZXRob2REZWNsYXJhdGlvbnN9fSk7CisgICAgcHVzaChAZnJv
bnRlbmRNZXRob2RzLCAiICAgICAgICB2b2lkIHNldEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbChJ
bnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCkgeyBtX2lu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbCA9IGluc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsgfSIpOwor
ICAgIHB1c2goQGZyb250ZW5kTWV0aG9kcywgIiAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsKiBnZXRJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwoKSB7IHJldHVybiBtX2luc3BlY3RvckZy
b250ZW5kQ2hhbm5lbDsgfSIpOworICAgIHB1c2goQGZyb250ZW5kTWV0aG9kcywgIiAgICBwcml2
YXRlOiIpOworICAgIHB1c2goQGZyb250ZW5kTWV0aG9kcywgIiAgICAgICAgSW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsKiBtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsiKTsKKyAgICBwdXNoKEBm
cm9udGVuZE1ldGhvZHMsICIgICAgfTsiKTsKKyAgICBwdXNoKEBmcm9udGVuZE1ldGhvZHMsICIi
KTsKKworICAgIG15ICRnZXR0ZXJOYW1lID0gbGMoJGFnZW50TmFtZSk7CisgICAgcHVzaChAZnJv
bnRlbmRNZXRob2RzLCAiICAgICR7YWdlbnROYW1lfSogJHtnZXR0ZXJOYW1lfSgpIHsgcmV0dXJu
ICZtXyR7Z2V0dGVyTmFtZX07IH0iKTsKKyAgICBwdXNoKEBmcm9udGVuZE1ldGhvZHMsICIiKTsK
KworICAgIHB1c2goQGZyb250ZW5kRm9vdGVyLCAiICAgICR7YWdlbnROYW1lfSBtXyR7Z2V0dGVy
TmFtZX07Iik7CisKKyAgICBwdXNoKEBmcm9udGVuZEFnZW50RmllbGRzLCAibV8ke2dldHRlck5h
bWV9Iik7Cit9CisKK3N1YiBnZW5lcmF0ZUZyb250ZW5kQ29uc3RydWN0b3JJbXBsCit7CisgICAg
bXkgQGZyb250ZW5kQ29uc3RydWN0b3JJbXBsOworICAgIHB1c2goQGZyb250ZW5kQ29uc3RydWN0
b3JJbXBsLCAiJHtmcm9udGVuZENsYXNzTmFtZX06OiR7ZnJvbnRlbmRDbGFzc05hbWV9KEluc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbCogaW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKSIpOworICAgIHB1
c2goQGZyb250ZW5kQ29uc3RydWN0b3JJbXBsLCAiICAgIDogbV9pbnNwZWN0b3JGcm9udGVuZENo
YW5uZWwoaW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKSIpOworICAgIGZvcmVhY2ggbXkgJGFnZW50
RmllbGQgKEBmcm9udGVuZEFnZW50RmllbGRzKSB7CisgICAgICAgIHB1c2goQGZyb250ZW5kQ29u
c3RydWN0b3JJbXBsLCAiICAgICwgJHthZ2VudEZpZWxkfShpbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwpIik7CisgICAgfQorICAgIHB1c2goQGZyb250ZW5kQ29uc3RydWN0b3JJbXBsLCAieyIpOwor
ICAgIHB1c2goQGZyb250ZW5kQ29uc3RydWN0b3JJbXBsLCAifSIpOworICAgIHJldHVybiBAZnJv
bnRlbmRDb25zdHJ1Y3RvckltcGw7Cit9CisKK3N1YiBnZW5lcmF0ZUZ1bmN0aW9ucworeworICAg
IG15ICRpbnRlcmZhY2UgPSBzaGlmdDsKKyAgICBteSAkYWdlbnQgPSBzaGlmdDsKKworICAgIGZv
cmVhY2ggbXkgJGZ1bmN0aW9uIChAeyRpbnRlcmZhY2UtPmZ1bmN0aW9uc30pIHsKKyAgICAgICAg
aWYgKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiZXZlbnQifSkg
eworICAgICAgICAgICAgZ2VuZXJhdGVGcm9udGVuZEZ1bmN0aW9uKCRpbnRlcmZhY2UsICRmdW5j
dGlvbiwgJGFnZW50KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGdlbmVyYXRlQmFj
a2VuZEZ1bmN0aW9uKCRpbnRlcmZhY2UsICRmdW5jdGlvbik7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBjb2xsZWN0QmFja2VuZEpTU3R1YkZ1bmN0aW9ucygkaW50ZXJmYWNlKTsKKyAgICBjb2xs
ZWN0QmFja2VuZEpTU3R1YkV2ZW50cygkaW50ZXJmYWNlKTsKK30KKworc3ViIGdlbmVyYXRlRnJv
bnRlbmRGdW5jdGlvbgoreworICAgIG15ICRpbnRlcmZhY2UgPSBzaGlmdDsKKyAgICBteSAkZnVu
Y3Rpb24gPSBzaGlmdDsKKyAgICBteSAkYWdlbnQgPSBzaGlmdDsKKworICAgIG15ICRmdW5jdGlv
bk5hbWUgPSAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZTsKKworICAgIG15ICRkb21haW4gPSAk
aW50ZXJmYWNlLT5uYW1lOworICAgIG15IEBhcmdzRmlsdGVyZWQgPSBncmVwKCRfLT5kaXJlY3Rp
b24gZXEgIm91dCIsIEB7JGZ1bmN0aW9uLT5wYXJhbWV0ZXJzfSk7ICMganVzdCBrZWVwIG9ubHkg
b3V0IHBhcmFtZXRlcnMgZm9yIGZyb250ZW5kIGludGVyZmFjZS4KKyAgICBtYXAoJGZyb250ZW5k
VHlwZXN7JF8tPnR5cGV9ID0gMSwgQGFyZ3NGaWx0ZXJlZCk7ICMgcmVnaXN0ZXIgcmVxdWlyZWQg
dHlwZXMuCisgICAgbXkgJGFyZ3VtZW50cyA9IGpvaW4oIiwgIiwgbWFwKHBhcmFtVHlwZVRyYWl0
cygkXywgInBhcmFtIikgLiAiICIgLiAkXy0+bmFtZSwgQGFyZ3NGaWx0ZXJlZCkpOyAjIHByZXBh
cmUgYXJndW1lbnRzIGZvciBmdW5jdGlvbiBzaWduYXR1cmUuCisKKyAgICBteSAkc2lnbmF0dXJl
ID0gIiAgICAgICAgdm9pZCAke2Z1bmN0aW9uTmFtZX0oJHthcmd1bWVudHN9KTsiOworICAgICEk
YWdlbnQtPnttZXRob2RTaWduYXR1cmVzfS0+eyRzaWduYXR1cmV9IHx8IGRpZSAiRHVwbGljYXRl
IGZyb250ZW5kIGZ1bmN0aW9uIHdhcyBkZXRlY3RlZCBmb3Igc2lnbmF0dXJlICckc2lnbmF0dXJl
Jy4iOworICAgICRhZ2VudC0+e21ldGhvZFNpZ25hdHVyZXN9LT57JHNpZ25hdHVyZX0gPSAxOwor
ICAgIHB1c2goQHskYWdlbnQtPnttZXRob2REZWNsYXJhdGlvbnN9fSwgJHNpZ25hdHVyZSk7CisK
KyAgICBteSBAZnVuY3Rpb247CisgICAgcHVzaChAZnVuY3Rpb24sICJ2b2lkICR7ZnJvbnRlbmRD
bGFzc05hbWV9Ojoke2RvbWFpbn06OiR7ZnVuY3Rpb25OYW1lfSgke2FyZ3VtZW50c30pIik7Cisg
ICAgcHVzaChAZnVuY3Rpb24sICJ7Iik7CisgICAgcHVzaChAZnVuY3Rpb24sICIgICAgUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4gJHtmdW5jdGlvbk5hbWV9TWVzc2FnZSA9IEluc3BlY3Rvck9iamVj
dDo6Y3JlYXRlKCk7Iik7CisgICAgcHVzaChAZnVuY3Rpb24sICIgICAgJHtmdW5jdGlvbk5hbWV9
TWVzc2FnZS0+c2V0U3RyaW5nKFwibWV0aG9kXCIsIFwiJGRvbWFpbi4kZnVuY3Rpb25OYW1lXCIp
OyIpOworICAgIGlmIChzY2FsYXIoQGFyZ3NGaWx0ZXJlZCkpIHsKKyAgICAgICAgcHVzaChAZnVu
Y3Rpb24sICIgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcGFyYW1zT2JqZWN0ID0gSW5zcGVj
dG9yT2JqZWN0OjpjcmVhdGUoKTsiKTsKKworICAgICAgICBmb3JlYWNoIG15ICRwYXJhbWV0ZXIg
KEBhcmdzRmlsdGVyZWQpIHsKKyAgICAgICAgICAgIG15ICRvcHRpb25hbCA9ICRwYXJhbWV0ZXIt
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJvcHRpb25hbCJ9ID8gImlmICgiIC4gJHBhcmFtZXRlci0+
bmFtZSAuICIpXG4gICAgICAgICIgOiAiIjsKKyAgICAgICAgICAgIHB1c2goQGZ1bmN0aW9uLCAi
ICAgICIgLiAkb3B0aW9uYWwgLiAicGFyYW1zT2JqZWN0LT5zZXQiIC4gcGFyYW1UeXBlVHJhaXRz
KCRwYXJhbWV0ZXIsICJKU09OVHlwZSIpIC4gIihcIiIgLiAkcGFyYW1ldGVyLT5uYW1lIC4gIlwi
LCAiIC4gcGFyYW1UeXBlVHJhaXRzKCRwYXJhbWV0ZXIsICJ2YWx1ZUFjY2Vzc29yIikgLiAkcGFy
YW1ldGVyLT5uYW1lIC4gIik7Iik7CisgICAgICAgIH0KKyAgICAgICAgcHVzaChAZnVuY3Rpb24s
ICIgICAgJHtmdW5jdGlvbk5hbWV9TWVzc2FnZS0+c2V0T2JqZWN0KFwicGFyYW1zXCIsIHBhcmFt
c09iamVjdCk7Iik7CisgICAgfQorICAgIHB1c2goQGZ1bmN0aW9uLCAiICAgIGlmIChtX2luc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbCkiKTsKKyAgICBwdXNoKEBmdW5jdGlvbiwgIiAgICAgICAgbV9p
bnNwZWN0b3JGcm9udGVuZENoYW5uZWwtPnNlbmRNZXNzYWdlVG9Gcm9udGVuZCgke2Z1bmN0aW9u
TmFtZX1NZXNzYWdlLT50b0pTT05TdHJpbmcoKSk7Iik7CisgICAgcHVzaChAZnVuY3Rpb24sICJ9
Iik7CisgICAgcHVzaChAZnVuY3Rpb24sICIiKTsKKyAgICBwdXNoKEBmcm9udGVuZE1ldGhvZHNJ
bXBsLCBAZnVuY3Rpb24pOworfQorCitzdWIgY2FtZWxDYXNlCit7CisgICAgbXkgJHZhbHVlID0g
c2hpZnQ7CisgICAgJHZhbHVlID1+IHMvXGIoXHcpL1xVJDEvZzsgIyBtYWtlIGEgY2FtZWwtY2Fz
ZSBuYW1lIGZvciB0eXBlIG5hbWUKKyAgICAkdmFsdWUgPX4gcy8gLy9nOworICAgIHJldHVybiAk
dmFsdWU7Cit9CisKK3N1YiBnZW5lcmF0ZUJhY2tlbmRGdW5jdGlvbgoreworICAgIG15ICRpbnRl
cmZhY2UgPSBzaGlmdDsKKyAgICBteSAkZnVuY3Rpb24gPSBzaGlmdDsKKworICAgIG15ICRmdW5j
dGlvbk5hbWUgPSAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZTsKKyAgICBteSAkZnVsbFF1YWxp
ZmllZEZ1bmN0aW9uTmFtZSA9ICRpbnRlcmZhY2UtPm5hbWUgLiAiXyIgLiAkZnVuY3Rpb25OYW1l
OworICAgIG15ICRmdWxsUXVhbGlmaWVkRnVuY3Rpb25OYW1lRG90ID0gJGludGVyZmFjZS0+bmFt
ZSAuICIuIiAuICRmdW5jdGlvbk5hbWU7CisKKyAgICBwdXNoKEBiYWNrZW5kQ29uc3RhbnREZWNs
YXJhdGlvbnMsICIgICAgICAgIGske2Z1bGxRdWFsaWZpZWRGdW5jdGlvbk5hbWV9Q21kLCIpOwor
ICAgIHB1c2goQGJhY2tlbmRDb25zdGFudERlZmluaXRpb25zLCAiICAgIFwiJHtmdWxsUXVhbGlm
aWVkRnVuY3Rpb25OYW1lRG90fVwiLCIpOworCisgICAgbWFwKCRiYWNrZW5kVHlwZXN7JF8tPnR5
cGV9ID0gMSwgQHskZnVuY3Rpb24tPnBhcmFtZXRlcnN9KTsgIyByZWdpc3RlciByZXF1aXJlZCB0
eXBlcworICAgIG15IEBpbkFyZ3MgPSBncmVwKCRfLT5kaXJlY3Rpb24gZXEgImluIiwgQHskZnVu
Y3Rpb24tPnBhcmFtZXRlcnN9KTsKKyAgICBteSBAb3V0QXJncyA9IGdyZXAoJF8tPmRpcmVjdGlv
biBlcSAib3V0IiwgQHskZnVuY3Rpb24tPnBhcmFtZXRlcnN9KTsKKyAgICAKKyAgICBteSAkc2ln
bmF0dXJlID0gIiAgICB2b2lkICR7ZnVsbFF1YWxpZmllZEZ1bmN0aW9uTmFtZX0obG9uZyBjYWxs
SWQsIEluc3BlY3Rvck9iamVjdCogcmVxdWVzdE1lc3NhZ2VPYmplY3QpOyI7CisgICAgISRiYWNr
ZW5kTWV0aG9kU2lnbmF0dXJlc3ske3NpZ25hdHVyZX19IHx8IGRpZSAiRHVwbGljYXRlIGZ1bmN0
aW9uIHdhcyBkZXRlY3RlZCBmb3Igc2lnbmF0dXJlICckc2lnbmF0dXJlJy4iOworICAgICRiYWNr
ZW5kTWV0aG9kU2lnbmF0dXJlc3ske3NpZ25hdHVyZX19ID0gIiRmdWxsUXVhbGlmaWVkRnVuY3Rp
b25OYW1lIjsKKyAgICBwdXNoKEBiYWNrZW5kTWV0aG9kcywgJHtzaWduYXR1cmV9KTsKKworICAg
IG15IEBmdW5jdGlvbjsKKyAgICBteSAkcmVxdWVzdE1lc3NhZ2VPYmplY3QgPSBzY2FsYXIoQGlu
QXJncykgPyAiIHJlcXVlc3RNZXNzYWdlT2JqZWN0IiA6ICIiOworICAgIHB1c2goQGZ1bmN0aW9u
LCAidm9pZCAke2JhY2tlbmRDbGFzc05hbWV9Ojoke2Z1bGxRdWFsaWZpZWRGdW5jdGlvbk5hbWV9
KGxvbmcgY2FsbElkLCBJbnNwZWN0b3JPYmplY3QqJHJlcXVlc3RNZXNzYWdlT2JqZWN0KSIpOwor
ICAgIHB1c2goQGZ1bmN0aW9uLCAieyIpOworICAgIHB1c2goQGZ1bmN0aW9uLCAiICAgIFJlZlB0
cjxJbnNwZWN0b3JBcnJheT4gcHJvdG9jb2xFcnJvcnMgPSBJbnNwZWN0b3JBcnJheTo6Y3JlYXRl
KCk7Iik7CisgICAgcHVzaChAZnVuY3Rpb24sICIiKTsKKworICAgIG15ICRkb21haW4gPSAkaW50
ZXJmYWNlLT5uYW1lOworICAgIG15ICRkb21haW5BY2Nlc3NvciA9IHR5cGVUcmFpdHMoJGRvbWFp
biwgImRvbWFpbkFjY2Vzc29yIik7CisgICAgJGJhY2tlbmRUeXBlc3skZG9tYWlufSA9IDE7Cisg
ICAgJGJhY2tlbmREb21haW5zeyRkb21haW59ID0gMTsKKyAgICBwdXNoKEBmdW5jdGlvbiwgIiAg
ICBpZiAoISRkb21haW5BY2Nlc3NvcikiKTsKKyAgICBwdXNoKEBmdW5jdGlvbiwgIiAgICAgICAg
cHJvdG9jb2xFcnJvcnMtPnB1c2hTdHJpbmcoXCIkZG9tYWluIGhhbmRsZXIgaXMgbm90IGF2YWls
YWJsZS5cIik7Iik7CisgICAgcHVzaChAZnVuY3Rpb24sICIiKTsKKworICAgICMgZGVjbGFyZSBs
b2NhbCB2YXJpYWJsZXMgZm9yIG91dCBhcmd1bWVudHMuCisgICAgaWYgKHNjYWxhcihAb3V0QXJn
cykpIHsKKyAgICAgICAgcHVzaChAZnVuY3Rpb24sIG1hcCgiICAgICIgLiB0eXBlVHJhaXRzKCRf
LT50eXBlLCAidmFyaWFibGUiKSAuICIgb3V0XyIgLiAkXy0+bmFtZSAuICIgPSAiIC4gdHlwZVRy
YWl0cygkXy0+dHlwZSwgImRlZmF1bHRWYWx1ZSIpIC4gIjsiLCBAb3V0QXJncykpOworICAgICAg
ICBwdXNoKEBmdW5jdGlvbiwgIiIpOworICAgIH0KKyAgICBwdXNoKEBmdW5jdGlvbiwgIiAgICBF
cnJvclN0cmluZyBlcnJvcjsiKTsKKyAgICBwdXNoKEBmdW5jdGlvbiwgIiIpOworCisgICAgbXkg
JGluZGVudCA9ICIiOworICAgIGlmIChzY2FsYXIoQGluQXJncykpIHsKKyAgICAgICAgcHVzaChA
ZnVuY3Rpb24sICIgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcGFyYW1zQ29udGFpbmVyID0g
cmVxdWVzdE1lc3NhZ2VPYmplY3QtPmdldE9iamVjdChcInBhcmFtc1wiKTsiKTsKKyAgICAgICAg
cHVzaChAZnVuY3Rpb24sICIgICAgSW5zcGVjdG9yT2JqZWN0KiBwYXJhbXNDb250YWluZXJQdHIg
PSBwYXJhbXNDb250YWluZXIuZ2V0KCk7Iik7CisgICAgICAgIHB1c2goQGZ1bmN0aW9uLCAiICAg
IEluc3BlY3RvckFycmF5KiBwcm90b2NvbEVycm9yc1B0ciA9IHByb3RvY29sRXJyb3JzLmdldCgp
OyIpOworCisgICAgICAgIGZvcmVhY2ggbXkgJHBhcmFtZXRlciAoQGluQXJncykgeworICAgICAg
ICAgICAgbXkgJG5hbWUgPSAkcGFyYW1ldGVyLT5uYW1lOworICAgICAgICAgICAgbXkgJHR5cGUg
PSAkcGFyYW1ldGVyLT50eXBlOworICAgICAgICAgICAgbXkgJHR5cGVTdHJpbmcgPSBjYW1lbENh
c2UoJHBhcmFtZXRlci0+dHlwZSk7CisgICAgICAgICAgICBteSAkb3B0aW9uYWxGbGFnQXJndW1l
bnQgPSAiMCI7CisgICAgICAgICAgICBpZiAoJHBhcmFtZXRlci0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57Im9wdGlvbmFsIn0pIHsKKyAgICAgICAgICAgICAgICBwdXNoKEBmdW5jdGlvbiwgIiAgICBi
b29sICR7bmFtZX1fdmFsdWVGb3VuZCA9IGZhbHNlOyIpOworICAgICAgICAgICAgICAgICRvcHRp
b25hbEZsYWdBcmd1bWVudCA9ICImJHtuYW1lfV92YWx1ZUZvdW5kIjsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIHB1c2goQGZ1bmN0aW9uLCAiICAgICIgLiB0eXBlVHJhaXRzKCR0eXBlLCAi
dmFyaWFibGUiKSAuICIgaW5fJG5hbWUgPSBnZXQkdHlwZVN0cmluZyhwYXJhbXNDb250YWluZXJQ
dHIsIFwiJG5hbWVcIiwgJG9wdGlvbmFsRmxhZ0FyZ3VtZW50LCBwcm90b2NvbEVycm9yc1B0cik7
Iik7CisgICAgICAgIH0KKyAgICAgICAgcHVzaChAZnVuY3Rpb24sICIiKTsKKyAgICAgICAgJGlu
ZGVudCA9ICIgICAgIjsKKyAgICB9CisKKyAgICBteSAkYXJncyA9IGpvaW4oIiwgIiwKKyAgICAg
ICAgICAgICAgICAgICAgKCImZXJyb3IiLAorICAgICAgICAgICAgICAgICAgICAgbWFwKCgkXy0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Im9wdGlvbmFsIn0gPworICAgICAgICAgICAgICAgICAgICAg
ICAgICAkXy0+bmFtZSAuICJfdmFsdWVGb3VuZCA/ICZpbl8iIC4gJF8tPm5hbWUgLiAiIDogMCIg
OgorICAgICAgICAgICAgICAgICAgICAgICAgICAiaW5fIiAuICRfLT5uYW1lKSwgQGluQXJncyks
CisgICAgICAgICAgICAgICAgICAgICBtYXAoIiZvdXRfIiAuICRfLT5uYW1lLCBAb3V0QXJncykp
KTsKKworICAgIHB1c2goQGZ1bmN0aW9uLCAkaW5kZW50IC4gImlmICghcHJvdG9jb2xFcnJvcnMt
Pmxlbmd0aCgpKSIpOworICAgIHB1c2goQGZ1bmN0aW9uLCAkaW5kZW50IC4gIiAgICAkZG9tYWlu
QWNjZXNzb3ItPiRmdW5jdGlvbk5hbWUoJGFyZ3MpOyIpOworICAgIHB1c2goQGZ1bmN0aW9uLCAi
Iik7CisgICAgcHVzaChAZnVuY3Rpb24sICIgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmVz
dWx0ID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsiKTsKKyAgICBpZiAoc2NhbGFyKEBvdXRB
cmdzKSkgeworICAgICAgICBwdXNoKEBmdW5jdGlvbiwgIiAgICBpZiAoIXByb3RvY29sRXJyb3Jz
LT5sZW5ndGgoKSAmJiAhZXJyb3IubGVuZ3RoKCkpIHsiKTsKKyAgICAgICAgZm9yZWFjaCBteSAk
cGFyYW1ldGVyIChAb3V0QXJncykgeworICAgICAgICAgICAgbXkgJG9mZnNldCA9ICIgICAgICAg
ICI7CisgICAgICAgICAgICAjIERvbid0IGFkZCBvcHRpb25hbCBib29sZWFuIHBhcmFtZXRlciB0
byB0aGUgcmVzdWx0IHVubGVzcyBpdCBpcyAidHJ1ZSIKKyAgICAgICAgICAgIGlmICgkcGFyYW1l
dGVyLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsib3B0aW9uYWwifSAmJiAkcGFyYW1ldGVyLT50eXBl
IGVxICJib29sZWFuIikgeworICAgICAgICAgICAgICAgIHB1c2goQGZ1bmN0aW9uLCAkb2Zmc2V0
IC4gImlmIChvdXRfIiAuICRwYXJhbWV0ZXItPm5hbWUgLiAiKSIpOworICAgICAgICAgICAgICAg
ICRvZmZzZXQgLj0gIiAgICAiOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcHVzaChAZnVu
Y3Rpb24sICRvZmZzZXQgLiAicmVzdWx0LT5zZXQiIC4gdHlwZVRyYWl0cygkcGFyYW1ldGVyLT50
eXBlLCAiSlNPTlR5cGUiKSAuICIoXCIiIC4gJHBhcmFtZXRlci0+bmFtZSAuICJcIiwgb3V0XyIg
LiAkcGFyYW1ldGVyLT5uYW1lIC4gIik7Iik7CisgICAgICAgIH0KKyAgICAgICAgcHVzaChAZnVu
Y3Rpb24sICIgICAgfSIpOworICAgIH0KKyAgICBwdXNoKEBmdW5jdGlvbiwgIiAgICBzZW5kUmVz
cG9uc2UoY2FsbElkLCByZXN1bHQsIFN0cmluZzo6Zm9ybWF0KFwiU29tZSBhcmd1bWVudHMgb2Yg
bWV0aG9kICclcycgY2FuJ3QgYmUgcHJvY2Vzc2VkXCIsIFwiJGZ1bGxRdWFsaWZpZWRGdW5jdGlv
bk5hbWVEb3RcIiksIHByb3RvY29sRXJyb3JzLCBlcnJvcik7Iik7CisgICAgcHVzaChAZnVuY3Rp
b24sICJ9Iik7CisgICAgcHVzaChAZnVuY3Rpb24sICIiKTsKKyAgICBwdXNoKEBiYWNrZW5kTWV0
aG9kc0ltcGwsIEBmdW5jdGlvbik7Cit9CisKK3N1YiBnZW5lcmF0ZUJhY2tlbmRTZW5kUmVzcG9u
c2UKK3sKKyAgICBteSAkc2VuZFJlc3BvbnNlID0gPDwgIkVPRiI7CisKK3ZvaWQgJHtiYWNrZW5k
Q2xhc3NOYW1lfTo6c2VuZFJlc3BvbnNlKGxvbmcgY2FsbElkLCBQYXNzUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4gcmVzdWx0LCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgUGFzc1JlZlB0cjxJ
bnNwZWN0b3JBcnJheT4gcHJvdG9jb2xFcnJvcnMsIEVycm9yU3RyaW5nIGludm9jYXRpb25FcnJv
cikKK3sKKyAgICBpZiAocHJvdG9jb2xFcnJvcnMtPmxlbmd0aCgpKSB7CisgICAgICAgIHJlcG9y
dFByb3RvY29sRXJyb3IoJmNhbGxJZCwgSW52YWxpZFBhcmFtcywgZXJyb3JNZXNzYWdlLCBwcm90
b2NvbEVycm9ycyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKGludm9jYXRpb25F
cnJvci5sZW5ndGgoKSkgeworICAgICAgICByZXBvcnRQcm90b2NvbEVycm9yKCZjYWxsSWQsIFNl
cnZlckVycm9yLCBpbnZvY2F0aW9uRXJyb3IpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmVzcG9uc2VNZXNzYWdlID0gSW5zcGVjdG9yT2Jq
ZWN0OjpjcmVhdGUoKTsKKyAgICByZXNwb25zZU1lc3NhZ2UtPnNldE9iamVjdCgicmVzdWx0Iiwg
cmVzdWx0KTsKKyAgICByZXNwb25zZU1lc3NhZ2UtPnNldE51bWJlcigiaWQiLCBjYWxsSWQpOwor
ICAgIGlmIChtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbCkKKyAgICAgICAgbV9pbnNwZWN0b3JG
cm9udGVuZENoYW5uZWwtPnNlbmRNZXNzYWdlVG9Gcm9udGVuZChyZXNwb25zZU1lc3NhZ2UtPnRv
SlNPTlN0cmluZygpKTsKK30gICAgCitFT0YKKyAgICByZXR1cm4gc3BsaXQoIlxuIiwgJHNlbmRS
ZXNwb25zZSk7Cit9CisKK3N1YiBnZW5lcmF0ZUJhY2tlbmRSZXBvcnRQcm90b2NvbEVycm9yCit7
CisgICAgbXkgJHJlcG9ydFByb3RvY29sRXJyb3IgPSA8PCAiRU9GIjsKKwordm9pZCAke2JhY2tl
bmRDbGFzc05hbWV9OjpyZXBvcnRQcm90b2NvbEVycm9yKGNvbnN0IGxvbmcqIGNvbnN0IGNhbGxJ
ZCwgQ29tbW9uRXJyb3JDb2RlIGNvZGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKSBjb25z
dAoreworICAgIHJlcG9ydFByb3RvY29sRXJyb3IoY2FsbElkLCBjb2RlLCBlcnJvck1lc3NhZ2Us
IDApOworfQorCit2b2lkICR7YmFja2VuZENsYXNzTmFtZX06OnJlcG9ydFByb3RvY29sRXJyb3Io
Y29uc3QgbG9uZyogY29uc3QgY2FsbElkLCBDb21tb25FcnJvckNvZGUgY29kZSwgY29uc3QgU3Ry
aW5nJiBlcnJvck1lc3NhZ2UsIFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGRhdGEpIGNvbnN0
Cit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChWZWN0b3I8aW50PixzX2NvbW1vbkVycm9ycywp
OworICAgIGlmICghc19jb21tb25FcnJvcnMuc2l6ZSgpKSB7CisgICAgICAgIHNfY29tbW9uRXJy
b3JzLmluc2VydChQYXJzZUVycm9yLCAtMzI3MDApOworICAgICAgICBzX2NvbW1vbkVycm9ycy5p
bnNlcnQoSW52YWxpZFJlcXVlc3QsIC0zMjYwMCk7CisgICAgICAgIHNfY29tbW9uRXJyb3JzLmlu
c2VydChNZXRob2ROb3RGb3VuZCwgLTMyNjAxKTsKKyAgICAgICAgc19jb21tb25FcnJvcnMuaW5z
ZXJ0KEludmFsaWRQYXJhbXMsIC0zMjYwMik7CisgICAgICAgIHNfY29tbW9uRXJyb3JzLmluc2Vy
dChJbnRlcm5hbEVycm9yLCAtMzI2MDMpOworICAgICAgICBzX2NvbW1vbkVycm9ycy5pbnNlcnQo
U2VydmVyRXJyb3IsIC0zMjAwMCk7CisgICAgfQorICAgIEFTU0VSVChjb2RlID49MCk7CisgICAg
QVNTRVJUKCh1bnNpZ25lZCljb2RlIDwgc19jb21tb25FcnJvcnMuc2l6ZSgpKTsKKyAgICBBU1NF
UlQoc19jb21tb25FcnJvcnNbY29kZV0pOworICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGVy
cm9yID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKKyAgICBlcnJvci0+c2V0TnVtYmVyKCJj
b2RlIiwgc19jb21tb25FcnJvcnNbY29kZV0pOworICAgIGVycm9yLT5zZXRTdHJpbmcoIm1lc3Nh
Z2UiLCBlcnJvck1lc3NhZ2UpOworICAgIEFTU0VSVChlcnJvcik7CisgICAgaWYgKGRhdGEpCisg
ICAgICAgIGVycm9yLT5zZXRBcnJheSgiZGF0YSIsIGRhdGEpOworICAgIFJlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+IG1lc3NhZ2UgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOworICAgIG1lc3Nh
Z2UtPnNldE9iamVjdCgiZXJyb3IiLCBlcnJvcik7CisgICAgaWYgKGNhbGxJZCkKKyAgICAgICAg
bWVzc2FnZS0+c2V0TnVtYmVyKCJpZCIsICpjYWxsSWQpOworICAgIGVsc2UKKyAgICAgICAgbWVz
c2FnZS0+c2V0VmFsdWUoImlkIiwgSW5zcGVjdG9yVmFsdWU6Om51bGwoKSk7CisgICAgaWYgKG1f
aW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKQorICAgICAgICBtX2luc3BlY3RvckZyb250ZW5kQ2hh
bm5lbC0+c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKG1lc3NhZ2UtPnRvSlNPTlN0cmluZygpKTsKK30K
K0VPRgorICAgIHJldHVybiBzcGxpdCgiXG4iLCAkcmVwb3J0UHJvdG9jb2xFcnJvcik7Cit9CisK
K3N1YiBnZW5lcmF0ZUFyZ3VtZW50R2V0dGVycworeworICAgIG15ICR0eXBlID0gc2hpZnQ7Cisg
ICAgbXkgJGpzb24gPSB0eXBlVHJhaXRzKCR0eXBlLCAiSlNPTlR5cGUiKTsKKyAgICBteSAkdmFy
aWFibGUgPSB0eXBlVHJhaXRzKCR0eXBlLCAidmFyaWFibGUiKTsKKyAgICBteSAkZGVmYXVsdFZh
bHVlID0gdHlwZVRyYWl0cygkdHlwZSwgImRlZmF1bHRWYWx1ZSIpOworICAgIG15ICRyZXR1cm4g
ID0gdHlwZVRyYWl0cygkdHlwZSwgInJldHVybiIpID8gdHlwZVRyYWl0cygkdHlwZSwgInJldHVy
biIpIDogdHlwZVRyYWl0cygkdHlwZSwgInBhcmFtIik7CisKKyAgICBteSAkdHlwZVN0cmluZyA9
IGNhbWVsQ2FzZSgkdHlwZSk7CisgICAgcHVzaChAYmFja2VuZENvbnN0YW50RGVjbGFyYXRpb25z
LCAiICAgIHN0YXRpYyAkcmV0dXJuIGdldCR0eXBlU3RyaW5nKEluc3BlY3Rvck9iamVjdCogb2Jq
ZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wqIHZhbHVlRm91bmQsIEluc3BlY3RvckFycmF5
KiBwcm90b2NvbEVycm9ycyk7Iik7CisgICAgbXkgJGdldHRlckJvZHkgPSA8PCAiRU9GIjsKKwor
JHJldHVybiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0JHR5cGVTdHJpbmcoSW5zcGVj
dG9yT2JqZWN0KiBvYmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCogdmFsdWVGb3VuZCwg
SW5zcGVjdG9yQXJyYXkqIHByb3RvY29sRXJyb3JzKQoreworICAgIEFTU0VSVChwcm90b2NvbEVy
cm9ycyk7CisKKyAgICBpZiAodmFsdWVGb3VuZCkKKyAgICAgICAgKnZhbHVlRm91bmQgPSBmYWxz
ZTsKKworICAgICR2YXJpYWJsZSB2YWx1ZSA9ICRkZWZhdWx0VmFsdWU7CisKKyAgICBpZiAoIW9i
amVjdCkgeworICAgICAgICBpZiAoIXZhbHVlRm91bmQpIHsKKyAgICAgICAgICAgIC8vIFJlcXVp
cmVkIHBhcmFtZXRlciBpbiBtaXNzaW5nIHBhcmFtcyBjb250YWluZXIuCisgICAgICAgICAgICBw
cm90b2NvbEVycm9ycy0+cHVzaFN0cmluZyhTdHJpbmc6OmZvcm1hdCgiJ3BhcmFtcycgb2JqZWN0
IG11c3QgY29udGFpbiByZXF1aXJlZCBwYXJhbWV0ZXIgJ1wlcycgd2l0aCB0eXBlICckanNvbicu
IiwgbmFtZS51dGY4KCkuZGF0YSgpKSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHZhbHVl
OworICAgIH0KKworICAgIEluc3BlY3Rvck9iamVjdDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gb2Jq
ZWN0LT5lbmQoKTsKKyAgICBJbnNwZWN0b3JPYmplY3Q6OmNvbnN0X2l0ZXJhdG9yIHZhbHVlSXRl
cmF0b3IgPSBvYmplY3QtPmZpbmQobmFtZSk7CisKKyAgICBpZiAodmFsdWVJdGVyYXRvciA9PSBl
bmQpIHsKKyAgICAgICAgaWYgKCF2YWx1ZUZvdW5kKQorICAgICAgICAgICAgcHJvdG9jb2xFcnJv
cnMtPnB1c2hTdHJpbmcoU3RyaW5nOjpmb3JtYXQoIlBhcmFtZXRlciAnXCVzJyB3aXRoIHR5cGUg
JyRqc29uJyB3YXMgbm90IGZvdW5kLiIsIG5hbWUudXRmOCgpLmRhdGEoKSkpOworICAgICAgICBy
ZXR1cm4gdmFsdWU7CisgICAgfQorCisgICAgaWYgKCF2YWx1ZUl0ZXJhdG9yLT5zZWNvbmQtPmFz
JGpzb24oJnZhbHVlKSkKKyAgICAgICAgcHJvdG9jb2xFcnJvcnMtPnB1c2hTdHJpbmcoU3RyaW5n
Ojpmb3JtYXQoIlBhcmFtZXRlciAnXCVzJyBoYXMgd3JvbmcgdHlwZS4gSXQgbXVzdCBiZSAnJGpz
b24nLiIsIG5hbWUudXRmOCgpLmRhdGEoKSkpOworICAgIGVsc2UKKyAgICAgICAgaWYgKHZhbHVl
Rm91bmQpCisgICAgICAgICAgICAqdmFsdWVGb3VuZCA9IHRydWU7CisgICAgcmV0dXJuIHZhbHVl
OworfQorRU9GCisKKyAgICByZXR1cm4gc3BsaXQoIlxuIiwgJGdldHRlckJvZHkpOworfQorCitz
dWIgZ2VuZXJhdGVCYWNrZW5kRGlzcGF0Y2hlcgoreworICAgIG15IEBib2R5OworICAgIG15IEBt
YXBFbnRyaWVzID0gbWFwKCIgICAgICAgICYke2JhY2tlbmRDbGFzc05hbWV9OjokXywiLCBtYXAg
KCRiYWNrZW5kTWV0aG9kU2lnbmF0dXJlc3skX30sIEBiYWNrZW5kTWV0aG9kcykpOworICAgIG15
ICRtYXBFbnRyaWVzID0gam9pbigiXG4iLCBAbWFwRW50cmllcyk7CisKKyAgICBteSAkYmFja2Vu
ZERpc3BhdGNoZXJCb2R5ID0gPDwgIkVPRiI7Cit2b2lkICR7YmFja2VuZENsYXNzTmFtZX06OmRp
c3BhdGNoKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBSZWZQdHI8JHtiYWNrZW5kQ2xh
c3NOYW1lfT4gcHJvdGVjdCA9IHRoaXM7CisgICAgdHlwZWRlZiB2b2lkICgke2JhY2tlbmRDbGFz
c05hbWV9OjoqQ2FsbEhhbmRsZXIpKGxvbmcgY2FsbElkLCBJbnNwZWN0b3JPYmplY3QqIG1lc3Nh
Z2VPYmplY3QpOworICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIENhbGxIYW5kbGVyPiBEaXNw
YXRjaE1hcDsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKERpc3BhdGNoTWFwLCBkaXNwYXRjaE1h
cCwgKTsKKyAgICBsb25nIGNhbGxJZCA9IDA7CisKKyAgICBpZiAoZGlzcGF0Y2hNYXAuaXNFbXB0
eSgpKSB7CisgICAgICAgIHN0YXRpYyBDYWxsSGFuZGxlciBoYW5kbGVyc1tdID0geworJG1hcEVu
dHJpZXMKKyAgICAgICAgfTsKKyAgICAgICAgc2l6ZV90IGxlbmd0aCA9IHNpemVvZihjb21tYW5k
TmFtZXMpIC8gc2l6ZW9mKGNvbW1hbmROYW1lc1swXSk7CisgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbGVuZ3RoOyArK2kpCisgICAgICAgICAgICBkaXNwYXRjaE1hcC5hZGQoY29tbWFu
ZE5hbWVzW2ldLCBoYW5kbGVyc1tpXSk7CisgICAgfQorCisgICAgUmVmUHRyPEluc3BlY3RvclZh
bHVlPiBwYXJzZWRNZXNzYWdlID0gSW5zcGVjdG9yVmFsdWU6OnBhcnNlSlNPTihtZXNzYWdlKTsK
KyAgICBpZiAoIXBhcnNlZE1lc3NhZ2UpIHsKKyAgICAgICAgcmVwb3J0UHJvdG9jb2xFcnJvcigw
LCBQYXJzZUVycm9yLCAiTWVzc2FnZSBtdXN0IGJlIGluIEpTT04gZm9ybWF0Iik7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBtZXNzYWdlT2Jq
ZWN0ID0gcGFyc2VkTWVzc2FnZS0+YXNPYmplY3QoKTsKKyAgICBpZiAoIW1lc3NhZ2VPYmplY3Qp
IHsKKyAgICAgICAgcmVwb3J0UHJvdG9jb2xFcnJvcigwLCBJbnZhbGlkUmVxdWVzdCwgIk1lc3Nh
Z2UgbXVzdCBiZSBhIEpTT05pZmllZCBvYmplY3QiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gY2FsbElkVmFsdWUgPSBtZXNzYWdlT2JqZWN0
LT5nZXQoImlkIik7CisgICAgaWYgKCFjYWxsSWRWYWx1ZSkgeworICAgICAgICByZXBvcnRQcm90
b2NvbEVycm9yKDAsIEludmFsaWRSZXF1ZXN0LCAiJ2lkJyBwcm9wZXJ0eSB3YXMgbm90IGZvdW5k
Iik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIWNhbGxJZFZhbHVlLT5hc051
bWJlcigmY2FsbElkKSkgeworICAgICAgICByZXBvcnRQcm90b2NvbEVycm9yKDAsIEludmFsaWRS
ZXF1ZXN0LCAiVGhlIHR5cGUgb2YgJ2lkJyBwcm9wZXJ0eSBtdXN0IGJlIG51bWJlciIpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiBtZXRob2RW
YWx1ZSA9IG1lc3NhZ2VPYmplY3QtPmdldCgibWV0aG9kIik7CisgICAgaWYgKCFtZXRob2RWYWx1
ZSkgeworICAgICAgICByZXBvcnRQcm90b2NvbEVycm9yKCZjYWxsSWQsIEludmFsaWRSZXF1ZXN0
LCAiJ21ldGhvZCcgcHJvcGVydHkgd2Fzbid0IGZvdW5kIik7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBTdHJpbmcgbWV0aG9kOworICAgIGlmICghbWV0aG9kVmFsdWUtPmFzU3RyaW5n
KCZtZXRob2QpKSB7CisgICAgICAgIHJlcG9ydFByb3RvY29sRXJyb3IoJmNhbGxJZCwgSW52YWxp
ZFJlcXVlc3QsICJUaGUgdHlwZSBvZiAnbWV0aG9kJyBwcm9wZXJ0eSBtdXN0IGJlIHN0cmluZyIp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgSGFzaE1hcDxTdHJpbmcsIENhbGxIYW5k
bGVyPjo6aXRlcmF0b3IgaXQgPSBkaXNwYXRjaE1hcC5maW5kKG1ldGhvZCk7CisgICAgaWYgKGl0
ID09IGRpc3BhdGNoTWFwLmVuZCgpKSB7CisgICAgICAgIHJlcG9ydFByb3RvY29sRXJyb3IoJmNh
bGxJZCwgTWV0aG9kTm90Rm91bmQsICInIiArIG1ldGhvZCArICInIHdhc24ndCBmb3VuZCIpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgKCgqdGhpcykuKml0LT5zZWNvbmQpKGNhbGxJ
ZCwgbWVzc2FnZU9iamVjdC5nZXQoKSk7Cit9CitFT0YKKyAgICByZXR1cm4gc3BsaXQoIlxuIiwg
JGJhY2tlbmREaXNwYXRjaGVyQm9keSk7Cit9CisKK3N1YiBnZW5lcmF0ZUJhY2tlbmRNZXNzYWdl
UGFyc2VyCit7CisgICAgbXkgJG1lc3NhZ2VQYXJzZXJCb2R5ID0gPDwgIkVPRiI7Citib29sICR7
YmFja2VuZENsYXNzTmFtZX06OmdldENvbW1hbmROYW1lKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwg
U3RyaW5nKiByZXN1bHQpCit7CisgICAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiB2YWx1ZSA9IElu
c3BlY3RvclZhbHVlOjpwYXJzZUpTT04obWVzc2FnZSk7CisgICAgaWYgKCF2YWx1ZSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gb2JqZWN0ID0g
dmFsdWUtPmFzT2JqZWN0KCk7CisgICAgaWYgKCFvYmplY3QpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIGlmICghb2JqZWN0LT5nZXRTdHJpbmcoIm1ldGhvZCIsIHJlc3VsdCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQorRU9GCisgICAgcmV0dXJu
IHNwbGl0KCJcbiIsICRtZXNzYWdlUGFyc2VyQm9keSk7Cit9CisKK3N1YiBjb2xsZWN0QmFja2Vu
ZEpTU3R1YkZ1bmN0aW9ucworeworICAgIG15ICRpbnRlcmZhY2UgPSBzaGlmdDsKKyAgICBteSBA
ZnVuY3Rpb25zID0gZ3JlcCghJF8tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57ImV2
ZW50In0sIEB7JGludGVyZmFjZS0+ZnVuY3Rpb25zfSk7CisgICAgbXkgJGRvbWFpbiA9ICRpbnRl
cmZhY2UtPm5hbWU7CisKKyAgICBmb3JlYWNoIG15ICRmdW5jdGlvbiAoQGZ1bmN0aW9ucykgewor
ICAgICAgICBteSAkbmFtZSA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lOworICAgICAgICBt
eSBAaW5BcmdzID0gZ3JlcCgkXy0+ZGlyZWN0aW9uIGVxICJpbiIsIEB7JGZ1bmN0aW9uLT5wYXJh
bWV0ZXJzfSk7CisgICAgICAgIG15ICRhcmd1bWVudE5hbWVzID0gam9pbigKKyAgICAgICAgICAg
ICIsIiwKKyAgICAgICAgICAgIG1hcCgiXCIiIC4gJF8tPm5hbWUgLiAiXCI6IHsiCisgICAgICAg
ICAgICAgICAgLiAiXCJvcHRpb25hbFwiOiAiIC4gKCRfLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
b3B0aW9uYWwifSA/ICJ0cnVlICIgOiAiZmFsc2UiKSAuICIsICIKKyAgICAgICAgICAgICAgICAu
ICJcInR5cGVcIjogXCIiIC4gdHlwZVRyYWl0cygkXy0+dHlwZSwgIkpTVHlwZSIpIC4gIlwiIgor
ICAgICAgICAgICAgICAgIC4gIn0iLAorICAgICAgICAgICAgICAgICBAaW5BcmdzKSk7CisgICAg
ICAgIHB1c2goQGJhY2tlbmRKU1N0dWJzLCAiICAgIHRoaXMuX3JlZ2lzdGVyRGVsZWdhdGUoJ3si
IC4KKyAgICAgICAgICAgICJcIm1ldGhvZFwiOiBcIiRkb21haW4uJG5hbWVcIiwgIiAuCisgICAg
ICAgICAgICAoc2NhbGFyKEBpbkFyZ3MpID8gIlwicGFyYW1zXCI6IHskYXJndW1lbnROYW1lc30s
ICIgOiAiIikgLgorICAgICAgICAgICAgIlwiaWRcIjogMCIgLgorICAgICAgICAifScpOyIpOwor
ICAgIH0KK30KKworc3ViIGNvbGxlY3RCYWNrZW5kSlNTdHViRXZlbnRzCit7CisgICAgbXkgJGlu
dGVyZmFjZSA9IHNoaWZ0OworICAgIG15IEBmdW5jdGlvbnMgPSBncmVwKCRfLT5zaWduYXR1cmUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJldmVudCJ9LCBAeyRpbnRlcmZhY2UtPmZ1bmN0aW9uc30p
OworICAgIG15ICRkb21haW4gPSAkaW50ZXJmYWNlLT5uYW1lOworCisgICAgZm9yZWFjaCBteSAk
ZnVuY3Rpb24gKEBmdW5jdGlvbnMpIHsKKyAgICAgICAgbXkgJG5hbWUgPSAkZG9tYWluIC4gIi4i
IC4gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWU7CisgICAgICAgIG15IEBvdXRBcmdzID0gZ3Jl
cCgkXy0+ZGlyZWN0aW9uIGVxICJvdXQiLCBAeyRmdW5jdGlvbi0+cGFyYW1ldGVyc30pOworICAg
ICAgICBteSAkYXJndW1lbnROYW1lcyA9IGpvaW4oIiwiLCBtYXAoIlwiIiAuICRfLT5uYW1lIC4g
IlwiIiAsIEBvdXRBcmdzKSk7CisgICAgICAgIHB1c2goQGJhY2tlbmRKU0V2ZW50cywgIiAgICB0
aGlzLl9ldmVudEFyZ3NbXCIiIC4gJG5hbWUgLiAiXCJdID0gWyIgLiAkYXJndW1lbnROYW1lcyAu
Il07Iik7CisgICAgfQorfQorCitzdWIgZ2VuZXJhdGVCYWNrZW5kU3R1YkpTCit7CisgICAgbXkg
JEpTUmVnaXN0ZXJEb21haW5EaXNwYXRjaGVycyA9IGpvaW4oIlxuIiwgbWFwKCIgICAgdGhpcy5y
ZWdpc3RlciIgLiAkXyAuICJEaXNwYXRjaGVyID0gdGhpcy5fcmVnaXN0ZXJEb21haW5EaXNwYXRj
aGVyLmJpbmQodGhpcywgXCIiIC4gJF8gLiJcIik7IiwgQGZyb250ZW5kRG9tYWlucykpOworICAg
IG15ICRKU1N0dWJzID0gam9pbigiXG4iLCBAYmFja2VuZEpTU3R1YnMpOworICAgIG15ICRKU0V2
ZW50cyA9IGpvaW4oIlxuIiwgQGJhY2tlbmRKU0V2ZW50cyk7CisgICAgbXkgJGluc3BlY3RvckJh
Y2tlbmRTdHViSlMgPSA8PCAiRU9GIjsKKyRsaWNlbnNlVGVtcGxhdGUKKworSW5zcGVjdG9yQmFj
a2VuZFN0dWIgPSBmdW5jdGlvbigpCit7CisgICAgdGhpcy5fbGFzdENhbGxiYWNrSWQgPSAxOwor
ICAgIHRoaXMuX3BlbmRpbmdSZXNwb25zZXNDb3VudCA9IDA7CisgICAgdGhpcy5fY2FsbGJhY2tz
ID0ge307CisgICAgdGhpcy5fZG9tYWluRGlzcGF0Y2hlcnMgPSB7fTsKKyAgICB0aGlzLl9ldmVu
dEFyZ3MgPSB7fTsKKyRKU1N0dWJzCiskSlNFdmVudHMKKyRKU1JlZ2lzdGVyRG9tYWluRGlzcGF0
Y2hlcnMKK30KKworSW5zcGVjdG9yQmFja2VuZFN0dWIucHJvdG90eXBlID0geworICAgIGR1bXBJ
bnNwZWN0b3JUaW1lU3RhdHM6IDAsCisgICAgZHVtcEluc3BlY3RvclByb3RvY29sTWVzc2FnZXM6
IDAsCisKKyAgICBfd3JhcDogZnVuY3Rpb24oY2FsbGJhY2spCisgICAgeworICAgICAgICB2YXIg
Y2FsbGJhY2tJZCA9IHRoaXMuX2xhc3RDYWxsYmFja0lkKys7CisgICAgICAgIHRoaXMuX2NhbGxi
YWNrc1tjYWxsYmFja0lkXSA9IGNhbGxiYWNrIHx8IGZ1bmN0aW9uKCkge307CisgICAgICAgIHJl
dHVybiBjYWxsYmFja0lkOworICAgIH0sCisKKyAgICBfcmVnaXN0ZXJEZWxlZ2F0ZTogZnVuY3Rp
b24ocmVxdWVzdFN0cmluZykKKyAgICB7CisgICAgICAgIHZhciBkb21haW5BbmRGdW5jdGlvbiA9
IEpTT04ucGFyc2UocmVxdWVzdFN0cmluZykubWV0aG9kLnNwbGl0KCIuIik7CisgICAgICAgIHZh
ciBhZ2VudE5hbWUgPSBkb21haW5BbmRGdW5jdGlvblswXSArICJBZ2VudCI7CisgICAgICAgIGlm
ICghd2luZG93W2FnZW50TmFtZV0pCisgICAgICAgICAgICB3aW5kb3dbYWdlbnROYW1lXSA9IHt9
OworICAgICAgICB3aW5kb3dbYWdlbnROYW1lXVtkb21haW5BbmRGdW5jdGlvblsxXV0gPSB0aGlz
Ll9zZW5kTWVzc2FnZVRvQmFja2VuZC5iaW5kKHRoaXMsIHJlcXVlc3RTdHJpbmcpOworICAgICAg
ICB3aW5kb3dbYWdlbnROYW1lXVtkb21haW5BbmRGdW5jdGlvblsxXV1bImludm9rZSJdID0gdGhp
cy5faW52b2tlLmJpbmQodGhpcywgcmVxdWVzdFN0cmluZykKKyAgICB9LAorCisgICAgX2ludm9r
ZTogZnVuY3Rpb24ocmVxdWVzdFN0cmluZywgYXJncywgY2FsbGJhY2spCisgICAgeworICAgICAg
ICB2YXIgcmVxdWVzdCA9IEpTT04ucGFyc2UocmVxdWVzdFN0cmluZyk7CisgICAgICAgIHJlcXVl
c3QucGFyYW1zID0gYXJnczsKKyAgICAgICAgdGhpcy5fd3JhcENhbGxiYWNrQW5kU2VuZE1lc3Nh
Z2VPYmplY3QocmVxdWVzdCwgY2FsbGJhY2spOworICAgIH0sCisKKyAgICBfc2VuZE1lc3NhZ2VU
b0JhY2tlbmQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciBhcmdzID0gQXJyYXkucHJv
dG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTsKKyAgICAgICAgdmFyIHJlcXVlc3QgPSBKU09O
LnBhcnNlKGFyZ3Muc2hpZnQoKSk7CisgICAgICAgIHZhciBjYWxsYmFjayA9IChhcmdzLmxlbmd0
aCAmJiB0eXBlb2YgYXJnc1thcmdzLmxlbmd0aCAtIDFdID09PSAiZnVuY3Rpb24iKSA/IGFyZ3Mu
cG9wKCkgOiAwOworICAgICAgICB2YXIgZG9tYWluQW5kTWV0aG9kID0gcmVxdWVzdC5tZXRob2Qu
c3BsaXQoIi4iKTsKKyAgICAgICAgdmFyIGFnZW50TWV0aG9kID0gZG9tYWluQW5kTWV0aG9kWzBd
ICsgIkFnZW50LiIgKyBkb21haW5BbmRNZXRob2RbMV07CisKKyAgICAgICAgdmFyIGhhc1BhcmFt
cyA9IGZhbHNlOworICAgICAgICBpZiAocmVxdWVzdC5wYXJhbXMpIHsKKyAgICAgICAgICAgIGZv
ciAodmFyIGtleSBpbiByZXF1ZXN0LnBhcmFtcykgeworICAgICAgICAgICAgICAgIHZhciB0eXBl
TmFtZSA9IHJlcXVlc3QucGFyYW1zW2tleV0udHlwZTsKKyAgICAgICAgICAgICAgICB2YXIgb3B0
aW9uYWxGbGFnID0gcmVxdWVzdC5wYXJhbXNba2V5XS5vcHRpb25hbDsKKworICAgICAgICAgICAg
ICAgIGlmIChhcmdzLmxlbmd0aCA9PT0gMCAmJiAhb3B0aW9uYWxGbGFnKSB7CisgICAgICAgICAg
ICAgICAgICAgIGNvbnNvbGUuZXJyb3IoIlByb3RvY29sIEVycm9yOiBJbnZhbGlkIG51bWJlciBv
ZiBhcmd1bWVudHMgZm9yIG1ldGhvZCAnIiArIGFnZW50TWV0aG9kICsgIicgY2FsbC4gSXQgbXVz
dCBoYXZlIHRoZSBuZXh0IGFyZ3VtZW50cyAnIiArIEpTT04uc3RyaW5naWZ5KHJlcXVlc3QucGFy
YW1zKSArICInLiIpOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gYXJncy5zaGlmdCgpOworICAgICAg
ICAgICAgICAgIGlmIChvcHRpb25hbEZsYWcgJiYgdHlwZW9mIHZhbHVlID09PSAidW5kZWZpbmVk
IikgeworICAgICAgICAgICAgICAgICAgICBkZWxldGUgcmVxdWVzdC5wYXJhbXNba2V5XTsKKyAg
ICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gdHlwZU5hbWUpIHsKKyAgICAgICAgICAgICAg
ICAgICAgY29uc29sZS5lcnJvcigiUHJvdG9jb2wgRXJyb3I6IEludmFsaWQgdHlwZSBvZiBhcmd1
bWVudCAnIiArIGtleSArICInIGZvciBtZXRob2QgJyIgKyBhZ2VudE1ldGhvZCArICInIGNhbGwu
IEl0IG11c3QgYmUgJyIgKyB0eXBlTmFtZSArICInIGJ1dCBpdCBpcyAnIiArIHR5cGVvZiB2YWx1
ZSArICInLiIpOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAgICAgcmVxdWVzdC5wYXJhbXNba2V5XSA9IHZhbHVlOworICAgICAg
ICAgICAgICAgIGhhc1BhcmFtcyA9IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBp
ZiAoIWhhc1BhcmFtcykKKyAgICAgICAgICAgICAgICBkZWxldGUgcmVxdWVzdC5wYXJhbXM7Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAoYXJncy5sZW5ndGggPT09IDEgJiYgIWNhbGxiYWNrKSB7
CisgICAgICAgICAgICBpZiAodHlwZW9mIGFyZ3NbMF0gIT09ICJ1bmRlZmluZWQiKSB7CisgICAg
ICAgICAgICAgICAgY29uc29sZS5lcnJvcigiUHJvdG9jb2wgRXJyb3I6IE9wdGlvbmFsIGNhbGxi
YWNrIGFyZ3VtZW50IGZvciBtZXRob2QgJyIgKyBhZ2VudE1ldGhvZCArICInIGNhbGwgbXVzdCBi
ZSBhIGZ1bmN0aW9uIGJ1dCBpdHMgdHlwZSBpcyAnIiArIHR5cGVvZiBhcmdzWzBdICsgIicuIik7
CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAg
ICAgICAgdGhpcy5fd3JhcENhbGxiYWNrQW5kU2VuZE1lc3NhZ2VPYmplY3QocmVxdWVzdCwgY2Fs
bGJhY2spOworICAgIH0sCisKKyAgICBfd3JhcENhbGxiYWNrQW5kU2VuZE1lc3NhZ2VPYmplY3Q6
IGZ1bmN0aW9uKG1lc3NhZ2VPYmplY3QsIGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgbWVzc2Fn
ZU9iamVjdC5pZCA9IHRoaXMuX3dyYXAoY2FsbGJhY2spOworCisgICAgICAgIGlmICh0aGlzLmR1
bXBJbnNwZWN0b3JUaW1lU3RhdHMpIHsKKyAgICAgICAgICAgIHZhciB3cmFwcGVkQ2FsbGJhY2sg
PSB0aGlzLl9jYWxsYmFja3NbbWVzc2FnZU9iamVjdC5pZF07CisgICAgICAgICAgICB3cmFwcGVk
Q2FsbGJhY2subWV0aG9kTmFtZSA9IG1lc3NhZ2VPYmplY3QubWV0aG9kOworICAgICAgICAgICAg
d3JhcHBlZENhbGxiYWNrLnNlbmRSZXF1ZXN0VGltZSA9IERhdGUubm93KCk7CisgICAgICAgIH0K
KworICAgICAgICBpZiAodGhpcy5kdW1wSW5zcGVjdG9yUHJvdG9jb2xNZXNzYWdlcykKKyAgICAg
ICAgICAgIGNvbnNvbGUubG9nKCJmcm9udGVuZDogIiArIEpTT04uc3RyaW5naWZ5KG1lc3NhZ2VP
YmplY3QpKTsKKworICAgICAgICArK3RoaXMuX3BlbmRpbmdSZXNwb25zZXNDb3VudDsKKyAgICAg
ICAgdGhpcy5zZW5kTWVzc2FnZU9iamVjdFRvQmFja2VuZChtZXNzYWdlT2JqZWN0KTsKKyAgICB9
LAorCisgICAgc2VuZE1lc3NhZ2VPYmplY3RUb0JhY2tlbmQ6IGZ1bmN0aW9uKG1lc3NhZ2VPYmpl
Y3QpCisgICAgeworICAgICAgICBjb25zb2xlLnRpbWVTdGFtcChtZXNzYWdlT2JqZWN0Lm1ldGhv
ZCk7CisgICAgICAgIHZhciBtZXNzYWdlID0gSlNPTi5zdHJpbmdpZnkobWVzc2FnZU9iamVjdCk7
CisgICAgICAgIEluc3BlY3RvckZyb250ZW5kSG9zdC5zZW5kTWVzc2FnZVRvQmFja2VuZChtZXNz
YWdlKTsKKyAgICB9LAorCisgICAgX3JlZ2lzdGVyRG9tYWluRGlzcGF0Y2hlcjogZnVuY3Rpb24o
ZG9tYWluLCBkaXNwYXRjaGVyKQorICAgIHsKKyAgICAgICAgdGhpcy5fZG9tYWluRGlzcGF0Y2hl
cnNbZG9tYWluXSA9IGRpc3BhdGNoZXI7CisgICAgfSwKKworICAgIGRpc3BhdGNoOiBmdW5jdGlv
bihtZXNzYWdlKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuZHVtcEluc3BlY3RvclByb3RvY29s
TWVzc2FnZXMpCisgICAgICAgICAgICBjb25zb2xlLmxvZygiYmFja2VuZDogIiArICgodHlwZW9m
IG1lc3NhZ2UgPT09ICJzdHJpbmciKSA/IG1lc3NhZ2UgOiBKU09OLnN0cmluZ2lmeShtZXNzYWdl
KSkpOworCisgICAgICAgIHZhciBtZXNzYWdlT2JqZWN0ID0gKHR5cGVvZiBtZXNzYWdlID09PSAi
c3RyaW5nIikgPyBKU09OLnBhcnNlKG1lc3NhZ2UpIDogbWVzc2FnZTsKKworICAgICAgICBpZiAo
ImlkIiBpbiBtZXNzYWdlT2JqZWN0KSB7IC8vIGp1c3QgYSByZXNwb25zZSBmb3Igc29tZSByZXF1
ZXN0CisgICAgICAgICAgICBpZiAobWVzc2FnZU9iamVjdC5lcnJvcikgeworICAgICAgICAgICAg
ICAgIG1lc3NhZ2VPYmplY3QuZXJyb3IuX19wcm90b19fID0geworICAgICAgICAgICAgICAgICAg
ICBnZXREZXNjcmlwdGlvbjogZnVuY3Rpb24oKQorICAgICAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBzd2l0Y2godGhpcy5jb2RlKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY2FzZSAtMzI3MDA6IHJldHVybiAiUGFyc2UgZXJyb3IiOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNhc2UgLTMyNjAwOiByZXR1cm4gIkludmFsaWQgUmVxdWVzdCI7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAtMzI2MDE6IHJldHVybiAiTWV0aG9k
IG5vdCBmb3VuZCI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAtMzI2MDI6IHJl
dHVybiAiSW52YWxpZCBwYXJhbXMiOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2Ug
LTMyNjAzOiByZXR1cm4gIkludGVybmFsIGVycm9yIjs7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY2FzZSAtMzIwMDA6IHJldHVybiAiU2VydmVyIGVycm9yIjsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfSwKKworICAgICAgICAgICAgICAgICAg
ICB0b1N0cmluZzogZnVuY3Rpb24oKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgICAgICAgICB2YXIgZGVzY3JpcHRpb24gPSJVbmtub3duIGVycm9yIGNvZGUiOworICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RGVzY3JpcHRpb24oKSArICIoIiAr
IHRoaXMuY29kZSArICIpOiAiICsgdGhpcy5tZXNzYWdlICsgIi4iICsgKHRoaXMuZGF0YSA/ICIg
IiArIHRoaXMuZGF0YS5qb2luKCIgIikgOiAiIik7CisgICAgICAgICAgICAgICAgICAgIH0sCisK
KyAgICAgICAgICAgICAgICAgICAgZ2V0TWVzc2FnZTogZnVuY3Rpb24oKQorICAgICAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5tZXNzYWdlOwor
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAg
ICAgaWYgKG1lc3NhZ2VPYmplY3QuZXJyb3IuY29kZSAhPT0gLTMyMDAwKQorICAgICAgICAgICAg
ICAgICAgICB0aGlzLnJlcG9ydFByb3RvY29sRXJyb3IobWVzc2FnZU9iamVjdCk7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIHZhciBhcmd1bWVudHMgPSBbXTsKKyAgICAgICAgICAgIGlm
IChtZXNzYWdlT2JqZWN0LnJlc3VsdCkgeworICAgICAgICAgICAgICAgIGZvciAodmFyIGtleSBp
biBtZXNzYWdlT2JqZWN0LnJlc3VsdCkKKyAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzLnB1
c2gobWVzc2FnZU9iamVjdC5yZXN1bHRba2V5XSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHZhciBjYWxsYmFjayA9IHRoaXMuX2NhbGxiYWNrc1ttZXNzYWdlT2JqZWN0LmlkXTsKKyAg
ICAgICAgICAgIGlmIChjYWxsYmFjaykgeworICAgICAgICAgICAgICAgIHZhciBwcm9jZXNzaW5n
U3RhcnRUaW1lOworICAgICAgICAgICAgICAgIGlmICh0aGlzLmR1bXBJbnNwZWN0b3JUaW1lU3Rh
dHMgJiYgY2FsbGJhY2subWV0aG9kTmFtZSkKKyAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc2lu
Z1N0YXJ0VGltZSA9IERhdGUubm93KCk7CisKKyAgICAgICAgICAgICAgICBhcmd1bWVudHMudW5z
aGlmdChtZXNzYWdlT2JqZWN0LmVycm9yKTsKKyAgICAgICAgICAgICAgICBjYWxsYmFjay5hcHBs
eShudWxsLCBhcmd1bWVudHMpOworICAgICAgICAgICAgICAgIC0tdGhpcy5fcGVuZGluZ1Jlc3Bv
bnNlc0NvdW50OworICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9jYWxsYmFja3NbbWVzc2Fn
ZU9iamVjdC5pZF07CisKKyAgICAgICAgICAgICAgICBpZiAodGhpcy5kdW1wSW5zcGVjdG9yVGlt
ZVN0YXRzICYmIGNhbGxiYWNrLm1ldGhvZE5hbWUpCisgICAgICAgICAgICAgICAgICAgIGNvbnNv
bGUubG9nKCJ0aW1lLXN0YXRzOiAiICsgY2FsbGJhY2subWV0aG9kTmFtZSArICIgPSAiICsgKHBy
b2Nlc3NpbmdTdGFydFRpbWUgLSBjYWxsYmFjay5zZW5kUmVxdWVzdFRpbWUpICsgIiArICIgKyAo
RGF0ZS5ub3coKSAtIHByb2Nlc3NpbmdTdGFydFRpbWUpKTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgaWYgKHRoaXMuX3NjcmlwdHMgJiYgIXRoaXMuX3BlbmRpbmdSZXNwb25zZXNDb3Vu
dCkKKyAgICAgICAgICAgICAgICB0aGlzLnJ1bkFmdGVyUGVuZGluZ0Rpc3BhdGNoZXMoKTsKKwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdmFyIG1l
dGhvZCA9IG1lc3NhZ2VPYmplY3QubWV0aG9kLnNwbGl0KCIuIik7CisgICAgICAgICAgICB2YXIg
ZG9tYWluTmFtZSA9IG1ldGhvZFswXTsKKyAgICAgICAgICAgIHZhciBmdW5jdGlvbk5hbWUgPSBt
ZXRob2RbMV07CisgICAgICAgICAgICBpZiAoIShkb21haW5OYW1lIGluIHRoaXMuX2RvbWFpbkRp
c3BhdGNoZXJzKSkgeworICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoIlByb3RvY29sIEVy
cm9yOiB0aGUgbWVzc2FnZSBpcyBmb3Igbm9uLWV4aXN0aW5nIGRvbWFpbiAnIiArIGRvbWFpbk5h
bWUgKyAiJyIpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIHZhciBkaXNwYXRjaGVyID0gdGhpcy5fZG9tYWluRGlzcGF0Y2hlcnNbZG9tYWluTmFt
ZV07CisgICAgICAgICAgICBpZiAoIShmdW5jdGlvbk5hbWUgaW4gZGlzcGF0Y2hlcikpIHsKKyAg
ICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCJQcm90b2NvbCBFcnJvcjogQXR0ZW1wdGVkIHRv
IGRpc3BhdGNoIGFuIHVuaW1wbGVtZW50ZWQgbWV0aG9kICciICsgbWVzc2FnZU9iamVjdC5tZXRo
b2QgKyAiJyIpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgaWYgKCF0aGlzLl9ldmVudEFyZ3NbbWVzc2FnZU9iamVjdC5tZXRob2RdKSB7Cisg
ICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcigiUHJvdG9jb2wgRXJyb3I6IEF0dGVtcHRlZCB0
byBkaXNwYXRjaCBhbiB1bnNwZWNpZmllZCBtZXRob2QgJyIgKyBtZXNzYWdlT2JqZWN0Lm1ldGhv
ZCArICInIik7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICB2YXIgcGFyYW1zID0gW107CisgICAgICAgICAgICBpZiAobWVzc2FnZU9iamVjdC5w
YXJhbXMpIHsKKyAgICAgICAgICAgICAgICB2YXIgcGFyYW1OYW1lcyA9IHRoaXMuX2V2ZW50QXJn
c1ttZXNzYWdlT2JqZWN0Lm1ldGhvZF07CisgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBwYXJhbU5hbWVzLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgICAgICAgICBwYXJhbXMu
cHVzaChtZXNzYWdlT2JqZWN0LnBhcmFtc1twYXJhbU5hbWVzW2ldXSk7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIHZhciBwcm9jZXNzaW5nU3RhcnRUaW1lOworICAgICAgICAgICAgaWYg
KHRoaXMuZHVtcEluc3BlY3RvclRpbWVTdGF0cykKKyAgICAgICAgICAgICAgICBwcm9jZXNzaW5n
U3RhcnRUaW1lID0gRGF0ZS5ub3coKTsKKworICAgICAgICAgICAgZGlzcGF0Y2hlcltmdW5jdGlv
bk5hbWVdLmFwcGx5KGRpc3BhdGNoZXIsIHBhcmFtcyk7CisKKyAgICAgICAgICAgIGlmICh0aGlz
LmR1bXBJbnNwZWN0b3JUaW1lU3RhdHMpCisgICAgICAgICAgICAgICAgY29uc29sZS5sb2coInRp
bWUtc3RhdHM6ICIgKyBtZXNzYWdlT2JqZWN0Lm1ldGhvZCArICIgPSAiICsgKERhdGUubm93KCkg
LSBwcm9jZXNzaW5nU3RhcnRUaW1lKSk7CisgICAgICAgIH0KKyAgICB9LAorCisgICAgcmVwb3J0
UHJvdG9jb2xFcnJvcjogZnVuY3Rpb24obWVzc2FnZU9iamVjdCkKKyAgICB7CisgICAgICAgIGNv
bnNvbGUuZXJyb3IoIlJlcXVlc3Qgd2l0aCBpZCA9ICIgKyBtZXNzYWdlT2JqZWN0LmlkICsgIiBm
YWlsZWQuICIgKyBtZXNzYWdlT2JqZWN0LmVycm9yKTsKKyAgICB9LAorCisgICAgcnVuQWZ0ZXJQ
ZW5kaW5nRGlzcGF0Y2hlczogZnVuY3Rpb24oc2NyaXB0KQorICAgIHsKKyAgICAgICAgaWYgKCF0
aGlzLl9zY3JpcHRzKQorICAgICAgICAgICAgdGhpcy5fc2NyaXB0cyA9IFtdOworCisgICAgICAg
IGlmIChzY3JpcHQpCisgICAgICAgICAgICB0aGlzLl9zY3JpcHRzLnB1c2goc2NyaXB0KTsKKwor
ICAgICAgICBpZiAoIXRoaXMuX3BlbmRpbmdSZXNwb25zZXNDb3VudCkgeworICAgICAgICAgICAg
dmFyIHNjcmlwdHMgPSB0aGlzLl9zY3JpcHRzOworICAgICAgICAgICAgdGhpcy5fc2NyaXB0cyA9
IFtdCisgICAgICAgICAgICBmb3IgKHZhciBpZCA9IDA7IGlkIDwgc2NyaXB0cy5sZW5ndGg7ICsr
aWQpCisgICAgICAgICAgICAgICAgIHNjcmlwdHNbaWRdLmNhbGwodGhpcyk7CisgICAgICAgIH0K
KyAgICB9Cit9CisKK0luc3BlY3RvckJhY2tlbmQgPSBuZXcgSW5zcGVjdG9yQmFja2VuZFN0dWIo
KTsKKworRU9GCisgICAgcmV0dXJuIHNwbGl0KCJcbiIsICRpbnNwZWN0b3JCYWNrZW5kU3R1YkpT
KTsKK30KKworc3ViIGdlbmVyYXRlSGVhZGVyCit7CisgICAgbXkgJGNsYXNzTmFtZSA9IHNoaWZ0
OworICAgIG15ICRjbGFzc0RlY2xhcmF0aW9uID0gc2hpZnQ7CisgICAgbXkgJHR5cGVzID0gc2hp
ZnQ7CisgICAgbXkgJGNvbnN0cnVjdG9yID0gc2hpZnQ7CisgICAgbXkgJGNvbnN0YW50cyA9IHNo
aWZ0OworICAgIG15ICRtZXRob2RzID0gc2hpZnQ7CisgICAgbXkgJGZvb3RlciA9IHNoaWZ0Owor
CisgICAgbXkgJGZvcndhcmRIZWFkZXJzID0gam9pbigiXG4iLCBzb3J0KG1hcCgiI2luY2x1ZGUg
PCIgLiB0eXBlVHJhaXRzKCRfLCAiZm9yd2FyZEhlYWRlciIpIC4gIj4iLCBncmVwKHR5cGVUcmFp
dHMoJF8sICJmb3J3YXJkSGVhZGVyIiksIGtleXMgJXskdHlwZXN9KSkpKTsKKyAgICBteSAkZm9y
d2FyZERlY2xhcmF0aW9ucyA9IGpvaW4oIlxuIiwgc29ydChtYXAoImNsYXNzICIgLiB0eXBlVHJh
aXRzKCRfLCAiZm9yd2FyZCIpIC4gIjsiLCBncmVwKHR5cGVUcmFpdHMoJF8sICJmb3J3YXJkIiks
IGtleXMgJXskdHlwZXN9KSkpKTsKKyAgICBteSAkY29uc3RhbnREZWNsYXJhdGlvbnMgPSBqb2lu
KCJcbiIsIEB7JGNvbnN0YW50c30pOworICAgIG15ICRtZXRob2RzRGVjbGFyYXRpb25zID0gam9p
bigiXG4iLCBAeyRtZXRob2RzfSk7CisKKyAgICBteSAkaGVhZGVyQm9keSA9IDw8ICJFT0YiOwor
Ly8gQ29weXJpZ2h0IChjKSAyMDEwIFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4K
KyNpZm5kZWYgJHtjbGFzc05hbWV9X2gKKyNkZWZpbmUgJHtjbGFzc05hbWV9X2gKKworJHtmb3J3
YXJkSGVhZGVyc30KKworbmFtZXNwYWNlICRuYW1lc3BhY2UgeworCiskZm9yd2FyZERlY2xhcmF0
aW9ucworCit0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKKworY2xhc3MgJGNsYXNzRGVjbGFy
YXRpb24geworcHVibGljOgorJGNvbnN0cnVjdG9yCisKKyRjb25zdGFudERlY2xhcmF0aW9ucwor
JG1ldGhvZHNEZWNsYXJhdGlvbnMKKworJGZvb3RlcgorfTsKKworfSAvLyBuYW1lc3BhY2UgJG5h
bWVzcGFjZQorI2VuZGlmIC8vICFkZWZpbmVkKCR7Y2xhc3NOYW1lfV9oKQorCitFT0YKKyAgICBy
ZXR1cm4gJGhlYWRlckJvZHk7Cit9CisKK3N1YiBnZW5lcmF0ZVNvdXJjZQoreworICAgIG15ICRj
bGFzc05hbWUgPSBzaGlmdDsKKyAgICBteSAkdHlwZXMgPSBzaGlmdDsKKyAgICBteSAkY29uc3Rh
bnRzID0gc2hpZnQ7CisgICAgbXkgJG1ldGhvZHMgPSBzaGlmdDsKKworICAgIG15IEBzb3VyY2VD
b250ZW50ID0gc3BsaXQoIlxyIiwgJGxpY2Vuc2VUZW1wbGF0ZSk7CisgICAgcHVzaChAc291cmNl
Q29udGVudCwgIlxuI2luY2x1ZGUgXCJjb25maWcuaFwiIik7CisgICAgcHVzaChAc291cmNlQ29u
dGVudCwgIiNpbmNsdWRlIFwiJGNsYXNzTmFtZS5oXCIiKTsKKyAgICBwdXNoKEBzb3VyY2VDb250
ZW50LCAiI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPiIpOworICAgIHB1c2goQHNvdXJj
ZUNvbnRlbnQsICIjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPiIpOworICAgIHB1c2goQHNv
dXJjZUNvbnRlbnQsICIiKTsKKyAgICBwdXNoKEBzb3VyY2VDb250ZW50LCAiI2lmIEVOQUJMRShJ
TlNQRUNUT1IpIik7CisgICAgcHVzaChAc291cmNlQ29udGVudCwgIiIpOworCisgICAgbXkgJWhl
YWRlcnM7CisgICAgZm9yZWFjaCBteSAkdHlwZSAoa2V5cyAleyR0eXBlc30pIHsKKyAgICAgICAg
JGhlYWRlcnN7IiNpbmNsdWRlIFwiIiAuIHR5cGVUcmFpdHMoJHR5cGUsICJoZWFkZXIiKSAuICJc
IiJ9ID0gMSBpZiAhdHlwZVRyYWl0cygkdHlwZSwgImhlYWRlciIpIGVxICAiIjsKKyAgICB9Cisg
ICAgcHVzaChAc291cmNlQ29udGVudCwgc29ydCBrZXlzICVoZWFkZXJzKTsKKyAgICBwdXNoKEBz
b3VyY2VDb250ZW50LCAiIik7CisgICAgcHVzaChAc291cmNlQ29udGVudCwgIm5hbWVzcGFjZSAk
bmFtZXNwYWNlIHsiKTsKKyAgICBwdXNoKEBzb3VyY2VDb250ZW50LCAiIik7CisgICAgcHVzaChA
c291cmNlQ29udGVudCwgam9pbigiXG4iLCBAeyRjb25zdGFudHN9KSk7CisgICAgcHVzaChAc291
cmNlQ29udGVudCwgIiIpOworICAgIHB1c2goQHNvdXJjZUNvbnRlbnQsIEB7JG1ldGhvZHN9KTsK
KyAgICBwdXNoKEBzb3VyY2VDb250ZW50LCAiIik7CisgICAgcHVzaChAc291cmNlQ29udGVudCwg
In0gLy8gbmFtZXNwYWNlICRuYW1lc3BhY2UiKTsKKyAgICBwdXNoKEBzb3VyY2VDb250ZW50LCAi
Iik7CisgICAgcHVzaChAc291cmNlQ29udGVudCwgIiNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9S
KSIpOworICAgIHB1c2goQHNvdXJjZUNvbnRlbnQsICIiKTsKKyAgICByZXR1cm4gQHNvdXJjZUNv
bnRlbnQ7Cit9CisKK3N1YiB0eXBlVHJhaXRzCit7CisgICAgbXkgJHR5cGUgPSBzaGlmdDsKKyAg
ICBteSAkdHJhaXQgPSBzaGlmdDsKKyAgICByZXR1cm4gJHR5cGVUcmFuc2Zvcm17JHR5cGV9LT57
JHRyYWl0fTsKK30KKworc3ViIHBhcmFtVHlwZVRyYWl0cworeworICAgIG15ICRwYXJhbURlc2Ny
aXB0aW9uID0gc2hpZnQ7CisgICAgbXkgJHRyYWl0ID0gc2hpZnQ7CisgICAgaWYgKCRwYXJhbURl
c2NyaXB0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsib3B0aW9uYWwifSkgeworICAgICAgICBt
eSAkb3B0aW9uYWxSZXN1bHQgPSB0eXBlVHJhaXRzKCRwYXJhbURlc2NyaXB0aW9uLT50eXBlLCAi
b3B0aW9uYWxfIiAuICR0cmFpdCk7CisgICAgICAgIHJldHVybiAkb3B0aW9uYWxSZXN1bHQgaWYg
ZGVmaW5lZCAkb3B0aW9uYWxSZXN1bHQ7CisgICAgfQorICAgIG15ICRyZXN1bHQgPSB0eXBlVHJh
aXRzKCRwYXJhbURlc2NyaXB0aW9uLT50eXBlLCAkdHJhaXQpOworICAgIHJldHVybiBkZWZpbmVk
ICRyZXN1bHQgPyAkcmVzdWx0IDogIiI7Cit9CisKK3N1YiBnZW5lcmF0ZUJhY2tlbmRBZ2VudEZp
ZWxkc0FuZENvbnN0cnVjdG9yCit7CisgICAgbXkgQGFyZ3VtZW50czsKKyAgICBteSBAZmllbGRJ
bml0aWFsaXplcnM7CisKKyAgICBwdXNoKEBhcmd1bWVudHMsICJJbnNwZWN0b3JGcm9udGVuZENo
YW5uZWwqIGluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCIpOworICAgIHB1c2goQGZpZWxkSW5pdGlh
bGl6ZXJzLCAiICAgICAgICA6IG1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKGluc3BlY3RvckZy
b250ZW5kQ2hhbm5lbCkiKTsKKyAgICBwdXNoKEBiYWNrZW5kRm9vdGVyLCAiICAgIEluc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbCogbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWw7Iik7CisKKyAgICBm
b3JlYWNoIG15ICRkb21haW4gKHNvcnQga2V5cyAlYmFja2VuZERvbWFpbnMpIHsKKyAgICAgICAg
IyBBZGQgYWdlbnQgZmllbGQgZGVjbGFyYXRpb24gdG8gdGhlIGZvb3Rlci4KKyAgICAgICAgbXkg
JGFnZW50Q2xhc3NOYW1lID0gdHlwZVRyYWl0cygkZG9tYWluLCAiZm9yd2FyZCIpOworICAgICAg
ICBteSAkZmllbGQgPSB0eXBlVHJhaXRzKCRkb21haW4sICJkb21haW5BY2Nlc3NvciIpOworICAg
ICAgICBwdXNoKEBiYWNrZW5kRm9vdGVyLCAiICAgICR7YWdlbnRDbGFzc05hbWV9KiAke2ZpZWxk
fTsiKTsKKworICAgICAgICAjIEFkZCBhZ2VudCBwYXJhbWV0ZXIgYW5kIGluaXRpYWxpemVyLgor
ICAgICAgICBteSAkYXJnID0gc3Vic3RyKCRmaWVsZCwgMik7CisgICAgICAgIHB1c2goQGZpZWxk
SW5pdGlhbGl6ZXJzLCAiICAgICAgICAsICR7ZmllbGR9KCR7YXJnfSkiKTsKKyAgICAgICAgcHVz
aChAYXJndW1lbnRzLCAiJHthZ2VudENsYXNzTmFtZX0qICR7YXJnfSIpOworICAgIH0KKworICAg
IG15ICRhcmd1bWVudFN0cmluZyA9IGpvaW4oIiwgIiwgQGFyZ3VtZW50cyk7CisKKyAgICBteSBA
YmFja2VuZEhlYWQ7CisgICAgcHVzaChAYmFja2VuZEhlYWQsICIgICAgJHtiYWNrZW5kQ2xhc3NO
YW1lfSgke2FyZ3VtZW50U3RyaW5nfSkiKTsKKyAgICBwdXNoKEBiYWNrZW5kSGVhZCwgQGZpZWxk
SW5pdGlhbGl6ZXJzKTsKKyAgICBwdXNoKEBiYWNrZW5kSGVhZCwgIiAgICB7IH0iKTsKKyAgICBw
dXNoKEBiYWNrZW5kSGVhZCwgIiIpOworICAgIHB1c2goQGJhY2tlbmRIZWFkLCAiICAgIHZvaWQg
Y2xlYXJGcm9udGVuZCgpIHsgbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwgPSAwOyB9Iik7Cisg
ICAgcHVzaChAYmFja2VuZEhlYWQsICIiKTsKKyAgICBwdXNoKEBiYWNrZW5kSGVhZCwgIiAgICBl
bnVtIENvbW1vbkVycm9yQ29kZSB7Iik7CisgICAgcHVzaChAYmFja2VuZEhlYWQsICIgICAgICAg
IFBhcnNlRXJyb3IgPSAwLCIpOworICAgIHB1c2goQGJhY2tlbmRIZWFkLCAiICAgICAgICBJbnZh
bGlkUmVxdWVzdCwiKTsKKyAgICBwdXNoKEBiYWNrZW5kSGVhZCwgIiAgICAgICAgTWV0aG9kTm90
Rm91bmQsIik7CisgICAgcHVzaChAYmFja2VuZEhlYWQsICIgICAgICAgIEludmFsaWRQYXJhbXMs
Iik7CisgICAgcHVzaChAYmFja2VuZEhlYWQsICIgICAgICAgIEludGVybmFsRXJyb3IsIik7Cisg
ICAgcHVzaChAYmFja2VuZEhlYWQsICIgICAgICAgIFNlcnZlckVycm9yLCIpOworICAgIHB1c2go
QGJhY2tlbmRIZWFkLCAiICAgICAgICBMYXN0RW50cnksIik7CisgICAgcHVzaChAYmFja2VuZEhl
YWQsICIgICAgfTsiKTsKKyAgICBwdXNoKEBiYWNrZW5kSGVhZCwgIiIpOworICAgIHB1c2goQGJh
Y2tlbmRIZWFkLCAiICAgIHZvaWQgcmVwb3J0UHJvdG9jb2xFcnJvcihjb25zdCBsb25nKiBjb25z
dCBjYWxsSWQsIENvbW1vbkVycm9yQ29kZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpIGNv
bnN0OyIpOworICAgIHB1c2goQGJhY2tlbmRIZWFkLCAiICAgIHZvaWQgcmVwb3J0UHJvdG9jb2xF
cnJvcihjb25zdCBsb25nKiBjb25zdCBjYWxsSWQsIENvbW1vbkVycm9yQ29kZSwgY29uc3QgU3Ry
aW5nJiBlcnJvck1lc3NhZ2UsIFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGRhdGEpIGNvbnN0
OyIpOworICAgIHB1c2goQGJhY2tlbmRIZWFkLCAiICAgIHZvaWQgZGlzcGF0Y2goY29uc3QgU3Ry
aW5nJiBtZXNzYWdlKTsiKTsKKyAgICBwdXNoKEBiYWNrZW5kSGVhZCwgIiAgICBzdGF0aWMgYm9v
bCBnZXRDb21tYW5kTmFtZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIFN0cmluZyogcmVzdWx0KTsi
KTsKKyAgICBwdXNoKEBiYWNrZW5kSGVhZCwgIiIpOworICAgIHB1c2goQGJhY2tlbmRIZWFkLCAi
ICAgIGVudW0gTWV0aG9kTmFtZXMgeyIpOworICAgICRiYWNrZW5kQ29uc3RydWN0b3IgPSBqb2lu
KCJcbiIsIEBiYWNrZW5kSGVhZCk7Cit9CisKK3N1YiBmaW5pc2gKK3sKKyAgICBteSAkb2JqZWN0
ID0gc2hpZnQ7CisKKyAgICBwdXNoKEBiYWNrZW5kTWV0aG9kc0ltcGwsIGdlbmVyYXRlQmFja2Vu
ZERpc3BhdGNoZXIoKSk7CisgICAgcHVzaChAYmFja2VuZE1ldGhvZHNJbXBsLCBnZW5lcmF0ZUJh
Y2tlbmRTZW5kUmVzcG9uc2UoKSk7CisgICAgcHVzaChAYmFja2VuZE1ldGhvZHNJbXBsLCBnZW5l
cmF0ZUJhY2tlbmRSZXBvcnRQcm90b2NvbEVycm9yKCkpOworICAgIHVuc2hpZnQoQGZyb250ZW5k
TWV0aG9kc0ltcGwsIGdlbmVyYXRlRnJvbnRlbmRDb25zdHJ1Y3RvckltcGwoKSwgIiIpOworCisg
ICAgb3BlbihteSAkU09VUkNFLCAiPiRvdXRwdXREaXIvJGZyb250ZW5kQ2xhc3NOYW1lLmNwcCIp
IHx8IGRpZSAiQ291bGRuJ3Qgb3BlbiBmaWxlICRvdXRwdXREaXIvJGZyb250ZW5kQ2xhc3NOYW1l
LmNwcCI7CisgICAgcHJpbnQgJFNPVVJDRSBqb2luKCJcbiIsIGdlbmVyYXRlU291cmNlKCRmcm9u
dGVuZENsYXNzTmFtZSwgXCVmcm9udGVuZFR5cGVzLCBcQGZyb250ZW5kQ29uc3RhbnREZWZpbml0
aW9ucywgXEBmcm9udGVuZE1ldGhvZHNJbXBsKSk7CisgICAgY2xvc2UoJFNPVVJDRSk7CisgICAg
dW5kZWYoJFNPVVJDRSk7CisKKyAgICBvcGVuKG15ICRIRUFERVIsICI+JG91dHB1dEhlYWRlcnNE
aXIvJGZyb250ZW5kQ2xhc3NOYW1lLmgiKSB8fCBkaWUgIkNvdWxkbid0IG9wZW4gZmlsZSAkb3V0
cHV0SGVhZGVyc0Rpci8kZnJvbnRlbmRDbGFzc05hbWUuaCI7CisgICAgcHJpbnQgJEhFQURFUiBn
ZW5lcmF0ZUhlYWRlcigkZnJvbnRlbmRDbGFzc05hbWUsICRmcm9udGVuZENsYXNzTmFtZSwgXCVm
cm9udGVuZFR5cGVzLCAkZnJvbnRlbmRDb25zdHJ1Y3RvciwgXEBmcm9udGVuZENvbnN0YW50RGVj
bGFyYXRpb25zLCBcQGZyb250ZW5kTWV0aG9kcywgam9pbigiXG4iLCBAZnJvbnRlbmRGb290ZXIp
KTsKKyAgICBjbG9zZSgkSEVBREVSKTsKKyAgICB1bmRlZigkSEVBREVSKTsKKworICAgIHVuc2hp
ZnQoQGJhY2tlbmRDb25zdGFudERlZmluaXRpb25zLCAiY29uc3QgY2hhciogSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXI6OmNvbW1hbmROYW1lc1tdID0geyIpOworICAgIHB1c2goQGJhY2tlbmRD
b25zdGFudERlZmluaXRpb25zLCAifTsiKTsKKyAgICBwdXNoKEBiYWNrZW5kQ29uc3RhbnREZWZp
bml0aW9ucywgIiIpOworCisgICAgIyBNYWtlIGRpc3BhdGNoZXIgbWV0aG9kcyBwcml2YXRlIG9u
IHRoZSBiYWNrZW5kLgorICAgIHB1c2goQGJhY2tlbmRDb25zdGFudERlY2xhcmF0aW9ucywgIn07
Iik7CisgICAgcHVzaChAYmFja2VuZENvbnN0YW50RGVjbGFyYXRpb25zLCAiIik7CisgICAgcHVz
aChAYmFja2VuZENvbnN0YW50RGVjbGFyYXRpb25zLCAiICAgIHN0YXRpYyBjb25zdCBjaGFyKiBj
b21tYW5kTmFtZXNbXTsiKTsgICAgCisgICAgcHVzaChAYmFja2VuZENvbnN0YW50RGVjbGFyYXRp
b25zLCAiIik7CisgICAgcHVzaChAYmFja2VuZENvbnN0YW50RGVjbGFyYXRpb25zLCAicHJpdmF0
ZToiKTsKKworICAgIGZvcmVhY2ggbXkgJHR5cGUgKGtleXMgJWJhY2tlbmRUeXBlcykgeworICAg
ICAgICBpZiAodHlwZVRyYWl0cygkdHlwZSwgIkpTT05UeXBlIikpIHsKKyAgICAgICAgICAgIHB1
c2goQGJhY2tlbmRNZXRob2RzSW1wbCwgZ2VuZXJhdGVBcmd1bWVudEdldHRlcnMoJHR5cGUpKTsK
KyAgICAgICAgfQorICAgIH0KKworICAgIHB1c2goQGJhY2tlbmRDb25zdGFudERlY2xhcmF0aW9u
cywgIiAgICB2b2lkIHNlbmRSZXNwb25zZShsb25nIGNhbGxJZCwgUGFzc1JlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+IHJlc3VsdCwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIFBhc3NSZWZQdHI8
SW5zcGVjdG9yQXJyYXk+IHByb3RvY29sRXJyb3JzLCBFcnJvclN0cmluZyBpbnZvY2F0aW9uRXJy
b3IpOyIpOworCisgICAgZ2VuZXJhdGVCYWNrZW5kQWdlbnRGaWVsZHNBbmRDb25zdHJ1Y3Rvcigp
OworCisgICAgcHVzaChAYmFja2VuZE1ldGhvZHNJbXBsLCBnZW5lcmF0ZUJhY2tlbmRNZXNzYWdl
UGFyc2VyKCkpOworICAgIHB1c2goQGJhY2tlbmRNZXRob2RzSW1wbCwgIiIpOworCisgICAgcHVz
aChAYmFja2VuZENvbnN0YW50RGVjbGFyYXRpb25zLCAiIik7CisKKyAgICBvcGVuKCRTT1VSQ0Us
ICI+JG91dHB1dERpci8kYmFja2VuZENsYXNzTmFtZS5jcHAiKSB8fCBkaWUgIkNvdWxkbid0IG9w
ZW4gZmlsZSAkb3V0cHV0RGlyLyRiYWNrZW5kQ2xhc3NOYW1lLmNwcCI7CisgICAgcHJpbnQgJFNP
VVJDRSBqb2luKCJcbiIsIGdlbmVyYXRlU291cmNlKCRiYWNrZW5kQ2xhc3NOYW1lLCBcJWJhY2tl
bmRUeXBlcywgXEBiYWNrZW5kQ29uc3RhbnREZWZpbml0aW9ucywgXEBiYWNrZW5kTWV0aG9kc0lt
cGwpKTsKKyAgICBjbG9zZSgkU09VUkNFKTsKKyAgICB1bmRlZigkU09VUkNFKTsKKworICAgIG9w
ZW4oJEhFQURFUiwgIj4kb3V0cHV0SGVhZGVyc0Rpci8kYmFja2VuZENsYXNzTmFtZS5oIikgfHwg
ZGllICJDb3VsZG4ndCBvcGVuIGZpbGUgJG91dHB1dEhlYWRlcnNEaXIvJGJhY2tlbmRDbGFzc05h
bWUuaCI7CisgICAgcHJpbnQgJEhFQURFUiBqb2luKCJcbiIsIGdlbmVyYXRlSGVhZGVyKCRiYWNr
ZW5kQ2xhc3NOYW1lLCAkYmFja2VuZENsYXNzRGVjbGFyYXRpb24sIFwlYmFja2VuZFR5cGVzLCAk
YmFja2VuZENvbnN0cnVjdG9yLCBcQGJhY2tlbmRDb25zdGFudERlY2xhcmF0aW9ucywgXEBiYWNr
ZW5kTWV0aG9kcywgam9pbigiXG4iLCBAYmFja2VuZEZvb3RlcikpKTsKKyAgICBjbG9zZSgkSEVB
REVSKTsKKyAgICB1bmRlZigkSEVBREVSKTsKKworICAgIG9wZW4obXkgJEpTX1NUVUIsICI+JG91
dHB1dERpci8kYmFja2VuZEpTU3R1Yk5hbWUuanMiKSB8fCBkaWUgIkNvdWxkbid0IG9wZW4gZmls
ZSAkb3V0cHV0RGlyLyRiYWNrZW5kSlNTdHViTmFtZS5qcyI7CisgICAgcHJpbnQgJEpTX1NUVUIg
am9pbigiXG4iLCBnZW5lcmF0ZUJhY2tlbmRTdHViSlMoKSk7CisgICAgY2xvc2UoJEpTX1NUVUIp
OworICAgIHVuZGVmKCRKU19TVFVCKTsKK30KKworMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5IGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGQwNjA1YTE2NzQxYjIzZDJjMWZlZmZjMWE0ZmNkMDQ0OGQyNzFkNDkuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkKKysrIC9kZXYvbnVsbApAQCAtMSwx
NDIzICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIyBDb3B5cmlnaHQgKGMpIDIwMTEg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQot
IyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLWlt
cG9ydCBvcy5wYXRoCi1pbXBvcnQgc3lzCi1pbXBvcnQgc3RyaW5nCi1pbXBvcnQgb3B0cGFyc2UK
LWltcG9ydCBqc29uCi1mcm9tIHN0cmluZyBpbXBvcnQgam9pbgotCi1jbWRsaW5lX3BhcnNlciA9
IG9wdHBhcnNlLk9wdGlvblBhcnNlcigpCi1jbWRsaW5lX3BhcnNlci5hZGRfb3B0aW9uKCItLWRl
ZmluZXMiKQotY21kbGluZV9wYXJzZXIuYWRkX29wdGlvbigiLS1vdXRwdXRfaF9kaXIiKQotY21k
bGluZV9wYXJzZXIuYWRkX29wdGlvbigiLS1vdXRwdXRfY3BwX2RpciIpCi0KLXRyeToKLSAgICBh
cmdfb3B0aW9ucywgYXJnX3ZhbHVlcyA9IGNtZGxpbmVfcGFyc2VyLnBhcnNlX2FyZ3MoKQotICAg
IGlmIChsZW4oYXJnX3ZhbHVlcykgIT0gMSk6Ci0gICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiRXhh
Y3RseSBvbmUgcGxhaW4gYXJndW1lbnQgZXhwZWN0ZWQgKGZvdW5kICVzKSIgJSBsZW4oYXJnX3Zh
bHVlcykpCi0gICAgaW5wdXRfanNvbl9maWxlbmFtZSA9IGFyZ192YWx1ZXNbMF0KLSAgICBvdXRw
dXRfaGVhZGVyX2Rpcm5hbWUgPSBhcmdfb3B0aW9ucy5vdXRwdXRfaF9kaXIKLSAgICBvdXRwdXRf
Y3BwX2Rpcm5hbWUgPSBhcmdfb3B0aW9ucy5vdXRwdXRfY3BwX2RpcgotICAgIGlmIG5vdCBvdXRw
dXRfaGVhZGVyX2Rpcm5hbWU6Ci0gICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiT3V0cHV0IC5oIGRp
cmVjdG9yeSBtdXN0IGJlIHNwZWNpZmllZCIpCi0gICAgaWYgbm90IG91dHB1dF9jcHBfZGlybmFt
ZToKLSAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJPdXRwdXQgLmNwcCBkaXJlY3RvcnkgbXVzdCBi
ZSBzcGVjaWZpZWQiKQotZXhjZXB0IEV4Y2VwdGlvbiwgZToKLSAgICBzeXMuc3RkZXJyLndyaXRl
KCJGYWlsZWQgdG8gcGFyc2UgY29tbWFuZC1saW5lIGFyZ3VtZW50czogJXNcblxuIiAlIGUpCi0g
ICAgc3lzLnN0ZGVyci53cml0ZSgiVXNhZ2U6IDxzY3JpcHQ+IEluc3BlY3Rvci5qc29uIC0tb3V0
cHV0X2hfZGlyIDxvdXRwdXRfaGVhZGVyX2Rpcj4gLS1vdXRwdXRfY3BwX2RpciA8b3V0cHV0X2Nw
cF9kaXI+IFstLWRlZmluZXMgPGRlZmluZXMgc3RyaW5nPl1cbiIpCi0gICAgZXhpdCgxKQotCi0K
LWRlZiBwYXJzZV9kZWZpbmVzKHN0cik6Ci0gICAgaWYgbm90IHN0cjoKLSAgICAgICAgcmV0dXJu
IHt9Ci0KLSAgICBpdGVtcyA9IHN0ci5zcGxpdCgpCi0gICAgcmVzdWx0ID0ge30KLSAgICBmb3Ig
aXRlbSBpbiBpdGVtczoKLSAgICAgICAgaWYgaXRlbVswXSA9PSAnIicgYW5kIGl0ZW1bLTFdID09
ICciJyBhbmQgbGVuKGl0ZW0pID49IDI6Ci0gICAgICAgICAgICBpdGVtID0gaXRlbVsxOi0xXQot
ICAgICAgICBlcV9wb3MgPSBpdGVtLmZpbmQoIj0iKQotICAgICAgICBpZiBlcV9wb3MgPT0gLTE6
Ci0gICAgICAgICAgICBrZXkgPSBpdGVtCi0gICAgICAgICAgICB2YWx1ZSA9IFRydWUKLSAgICAg
ICAgZWxzZToKLSAgICAgICAgICAgIGtleSA9IGl0ZW1bOmVxX3Bvc10KLSAgICAgICAgICAgIHZh
bHVlX3N0ciA9IGl0ZW1bZXFfcG9zICsgMTpdCi0gICAgICAgICAgICBpZiB2YWx1ZV9zdHIgPT0g
IjAiOgotICAgICAgICAgICAgICAgIHZhbHVlID0gRmFsc2UKLSAgICAgICAgICAgIGVsaWYgdmFs
dWVfc3RyID09ICIxIjoKLSAgICAgICAgICAgICAgICB2YWx1ZSA9IFRydWUKLSAgICAgICAgICAg
IGVsc2U6Ci0gICAgICAgICAgICAgICAgIyBTaG91bGQgd2Ugc3VwcG9ydCBvdGhlciB2YWx1ZXM/
Ci0gICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJVbnJlY29nbml6ZWQgZGVmaW5lIHZh
bHVlOiAnJXMnIChrZXk6ICclcycpIiAlICh2YWx1ZV9zdHIsIGtleSkpCi0gICAgICAgIHJlc3Vs
dFtrZXldID0gdmFsdWUKLSAgICByZXR1cm4gcmVzdWx0Ci0KLWRlZmluZXNfbWFwID0gcGFyc2Vf
ZGVmaW5lcyhhcmdfb3B0aW9ucy5kZWZpbmVzKQotCi0KLWNsYXNzIERvbWFpbk5hbWVGaXhlczoK
LSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgZ2V0X2ZpeGVkX2RhdGEoY2xzLCBkb21haW5fbmFt
ZSk6Ci0gICAgICAgIGlmIGRvbWFpbl9uYW1lIGluIGNscy5hZ2VudF90eXBlX21hcDoKLSAgICAg
ICAgICAgIGFnZW50X25hbWVfcmVzID0gY2xzLmFnZW50X3R5cGVfbWFwW2RvbWFpbl9uYW1lXQot
ICAgICAgICBlbHNlOgotICAgICAgICAgICAgYWdlbnRfbmFtZV9yZXMgPSAiSW5zcGVjdG9yJXNB
Z2VudCIgJSBkb21haW5fbmFtZQotCi0gICAgICAgIGlmIGRvbWFpbl9uYW1lIGluIGNscy5hZ2Vu
dF9maWVsZF9uYW1lX21hcDoKLSAgICAgICAgICAgIGZpZWxkX25hbWVfcmVzID0gY2xzLmFnZW50
X2ZpZWxkX25hbWVfbWFwW2RvbWFpbl9uYW1lXQotICAgICAgICBlbHNlOgotICAgICAgICAgICAg
ZmllbGRfbmFtZV9yZXMgPSBkb21haW5fbmFtZS5sb3dlcigpICsgIkFnZW50IgotCi0gICAgICAg
IGNsYXNzIFJlcyhvYmplY3QpOgotICAgICAgICAgICAgYWdlbnRfdHlwZV9uYW1lID0gYWdlbnRf
bmFtZV9yZXMKLSAgICAgICAgICAgIGhpZGRlbiA9IGRvbWFpbl9uYW1lIGluIGNscy5oaWRkZW5f
ZG9tYWlucwotICAgICAgICAgICAgc2tpcF9qc19iaW5kID0gZG9tYWluX25hbWUgaW4gY2xzLnNr
aXBfanNfYmluZF9kb21haW5zCi0gICAgICAgICAgICBhZ2VudF9maWVsZF9uYW1lID0gZmllbGRf
bmFtZV9yZXMKLQotICAgICAgICAgICAgQHN0YXRpY21ldGhvZAotICAgICAgICAgICAgZGVmIGlz
X2Rpc2FibGVkKGRlZmluZXMpOgotICAgICAgICAgICAgICAgIGlmIG5vdCBkb21haW5fbmFtZSBp
biBjbHMuZG9tYWluX2RlZmluZV9uYW1lX21hcDoKLSAgICAgICAgICAgICAgICAgICAgIyBIYXMg
bm90IGNvcnJlc3BvbmRpbmcgcHJlcHJvY2Vzc29yIHN5bWJvbC4KLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIEZhbHNlCi0KLSAgICAgICAgICAgICAgICBkZWZpbmVfbmFtZSA9IGNscy5kb21h
aW5fZGVmaW5lX25hbWVfbWFwW2RvbWFpbl9uYW1lXQotCi0gICAgICAgICAgICAgICAgaWYgbm90
IGRlZmluZV9uYW1lIGluIGRlZmluZXM6Ci0gICAgICAgICAgICAgICAgICAgICMgRGlzYWJsZWQg
d2hlbiBub3QgbWVudGlvbmVkCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCi0KLSAg
ICAgICAgICAgICAgICBkZWZpbmVfdmFsdWUgPSBkZWZpbmVzW2RlZmluZV9uYW1lXQotICAgICAg
ICAgICAgICAgIHJldHVybiBub3QgYm9vbChkZWZpbmVfdmFsdWUpCi0KLSAgICAgICAgcmV0dXJu
IFJlcwotCi0gICAgc2tpcF9qc19iaW5kX2RvbWFpbnMgPSBzZXQoWyJSdW50aW1lIiwgIkNTUyIs
ICJET01EZWJ1Z2dlciJdKQotICAgIGhpZGRlbl9kb21haW5zID0gc2V0KFsiSW5zcGVjdG9yIl0p
Ci0gICAgYWdlbnRfdHlwZV9tYXAgPSB7Ik5ldHdvcmsiOiAiSW5zcGVjdG9yUmVzb3VyY2VBZ2Vu
dCJ9Ci0KLSAgICAjIFRPRE86IGdldCByaWQgb2YgdGhpcywgZ2VuZXJhdGUgbmFtZXMgaW5zdGVh
ZC4KLSAgICBhZ2VudF9maWVsZF9uYW1lX21hcCA9IHsKLSAgICAgICAgIlBhZ2UiOiAicGFnZUFn
ZW50IiwKLSAgICAgICAgIlJ1bnRpbWUiOiAicnVudGltZUFnZW50IiwKLSAgICAgICAgIkNvbnNv
bGUiOiAiY29uc29sZUFnZW50IiwKLSAgICAgICAgIk5ldHdvcmsiOiAgInJlc291cmNlQWdlbnQi
LAotICAgICAgICAiRGF0YWJhc2UiOiAgImRhdGFiYXNlQWdlbnQiLAotICAgICAgICAiRE9NU3Rv
cmFnZSI6ICAiZG9tU3RvcmFnZUFnZW50IiwKLSAgICAgICAgIkFwcGxpY2F0aW9uQ2FjaGUiOiAg
ImFwcGxpY2F0aW9uQ2FjaGVBZ2VudCIsCi0gICAgICAgICJET00iOiAgImRvbUFnZW50IiwKLSAg
ICAgICAgIkNTUyI6ICAiY3NzQWdlbnQiLAotICAgICAgICAiRGVidWdnZXIiOiAiZGVidWdnZXJB
Z2VudCIsCi0gICAgICAgICJET01EZWJ1Z2dlciI6ICJkb21EZWJ1Z2dlckFnZW50IiwKLSAgICAg
ICAgIlByb2ZpbGVyIjogInByb2ZpbGVyQWdlbnQiLAotICAgICAgICAiV29ya2VyIjogIndvcmtl
ckFnZW50IiwKLSAgICB9Ci0KLSAgICBkb21haW5fZGVmaW5lX25hbWVfbWFwID0gewotICAgICAg
ICAiRGF0YWJhc2UiOiAiRU5BQkxFX1NRTF9EQVRBQkFTRSIsCi0gICAgICAgICJEZWJ1Z2dlciI6
ICJFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUiIsCi0gICAgICAgICJET01EZWJ1Z2dlciI6ICJF
TkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUiIsCi0gICAgICAgICJQcm9maWxlciI6ICJFTkFCTEVf
SkFWQVNDUklQVF9ERUJVR0dFUiIsCi0gICAgICAgICJXb3JrZXIiOiAiRU5BQkxFX1dPUktFUlMi
LAotICAgIH0KLQotCi1jbGFzcyBDUGFyYW1UeXBlKG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9f
KHNlbGYsIHR5cGUsIHNldHRlcl9mb3JtYXQ9IiVzIik6Ci0gICAgICAgIHNlbGYudHlwZSA9IHR5
cGUKLSAgICAgICAgc2VsZi5zZXR0ZXJfZm9ybWF0ID0gc2V0dGVyX2Zvcm1hdAotCi0gICAgZGVm
IGdldF90ZXh0KHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi50eXBlCi0KLSAgICBkZWYgZ2V0
X3NldHRlcl9mb3JtYXQoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLnNldHRlcl9mb3JtYXQK
LQotCi1jbGFzcyBSYXdUeXBlcyhvYmplY3QpOgotICAgIEBzdGF0aWNtZXRob2QKLSAgICBkZWYg
Z2V0KGpzb25fdHlwZSk6Ci0gICAgICAgIGlmIGpzb25fdHlwZSA9PSAiYm9vbGVhbiI6Ci0gICAg
ICAgICAgICByZXR1cm4gUmF3VHlwZXMuQm9vbAotICAgICAgICBlbGlmIGpzb25fdHlwZSA9PSAi
c3RyaW5nIjoKLSAgICAgICAgICAgIHJldHVybiBSYXdUeXBlcy5TdHJpbmcKLSAgICAgICAgZWxp
ZiBqc29uX3R5cGUgPT0gImFycmF5IjoKLSAgICAgICAgICAgIHJldHVybiBSYXdUeXBlcy5BcnJh
eQotICAgICAgICBlbGlmIGpzb25fdHlwZSA9PSAib2JqZWN0IjoKLSAgICAgICAgICAgIHJldHVy
biBSYXdUeXBlcy5PYmplY3QKLSAgICAgICAgZWxpZiBqc29uX3R5cGUgPT0gImludGVnZXIiOgot
ICAgICAgICAgICAgcmV0dXJuIFJhd1R5cGVzLkludAotICAgICAgICBlbGlmIGpzb25fdHlwZSA9
PSAibnVtYmVyIjoKLSAgICAgICAgICAgIHJldHVybiBSYXdUeXBlcy5OdW1iZXIKLSAgICAgICAg
ZWxzZToKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiVW5rbm93biB0eXBlOiAlcyIgJSBq
c29uX3R5cGUpCi0KLSAgICBjbGFzcyBCYXNlVHlwZShvYmplY3QpOgotICAgICAgICBAY2xhc3Nt
ZXRob2QKLSAgICAgICAgZGVmIGdldF9jX3BhcmFtX3R5cGUoY2xzLCBwYXJhbV90eXBlLCBvcHRp
b25hbCk6Ci0gICAgICAgICAgICByZXR1cm4gY2xzLmRlZmF1bHRfY19wYXJhbV90eXBlCi0KLSAg
ICAgICAgQHN0YXRpY21ldGhvZAotICAgICAgICBkZWYgaXNfZXZlbnRfcGFyYW1fY2hlY2tfb3B0
aW9uYWwoKToKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgY2xhc3MgU3RyaW5nKEJh
c2VUeXBlKToKLSAgICAgICAgQGNsYXNzbWV0aG9kCi0gICAgICAgIGRlZiBnZXRfY19wYXJhbV90
eXBlKGNscywgcGFyYW1fdHlwZSwgb3B0aW9uYWwpOgotICAgICAgICAgICAgaWYgcGFyYW1fdHlw
ZSA9PSBQYXJhbVR5cGUuRVZFTlQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGNscy5fcmVmX2Nf
dHlwZQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByZXR1cm4gY2xzLl9wbGFp
bl9jX3R5cGUKLQotICAgICAgICBAc3RhdGljbWV0aG9kCi0gICAgICAgIGRlZiBnZXRfZ2V0dGVy
X25hbWUoKToKLSAgICAgICAgICAgIHJldHVybiAiU3RyaW5nIgotCi0gICAgICAgIGdldF9zZXR0
ZXJfbmFtZSA9IGdldF9nZXR0ZXJfbmFtZQotCi0gICAgICAgIEBzdGF0aWNtZXRob2QKLSAgICAg
ICAgZGVmIGdldF9jX2luaXRpYWxpemVyKCk6Ci0gICAgICAgICAgICByZXR1cm4gIlwiXCIiCi0K
LSAgICAgICAgQHN0YXRpY21ldGhvZAotICAgICAgICBkZWYgZ2V0X2pzX2JpbmRfdHlwZSgpOgot
ICAgICAgICAgICAgcmV0dXJuICJzdHJpbmciCi0KLSAgICAgICAgX3BsYWluX2NfdHlwZSA9IENQ
YXJhbVR5cGUoIlN0cmluZyIpCi0gICAgICAgIF9yZWZfY190eXBlID0gQ1BhcmFtVHlwZSgiY29u
c3QgU3RyaW5nJiIpCi0KLSAgICBjbGFzcyBJbnQoQmFzZVR5cGUpOgotICAgICAgICBAc3RhdGlj
bWV0aG9kCi0gICAgICAgIGRlZiBnZXRfZ2V0dGVyX25hbWUoKToKLSAgICAgICAgICAgIHJldHVy
biAiSW50IgotCi0gICAgICAgIEBzdGF0aWNtZXRob2QKLSAgICAgICAgZGVmIGdldF9zZXR0ZXJf
bmFtZSgpOgotICAgICAgICAgICAgcmV0dXJuICJOdW1iZXIiCi0KLSAgICAgICAgQHN0YXRpY21l
dGhvZAotICAgICAgICBkZWYgZ2V0X2NfaW5pdGlhbGl6ZXIoKToKLSAgICAgICAgICAgIHJldHVy
biAiMCIKLQotICAgICAgICBAc3RhdGljbWV0aG9kCi0gICAgICAgIGRlZiBnZXRfanNfYmluZF90
eXBlKCk6Ci0gICAgICAgICAgICByZXR1cm4gIm51bWJlciIKLQotICAgICAgICBkZWZhdWx0X2Nf
cGFyYW1fdHlwZSA9IENQYXJhbVR5cGUoImludCIpCi0KLSAgICBjbGFzcyBOdW1iZXIoQmFzZVR5
cGUpOgotICAgICAgICBAc3RhdGljbWV0aG9kCi0gICAgICAgIGRlZiBnZXRfZ2V0dGVyX25hbWUo
KToKLSAgICAgICAgICAgIHJldHVybiAiT2JqZWN0IgotCi0gICAgICAgIEBzdGF0aWNtZXRob2QK
LSAgICAgICAgZGVmIGdldF9zZXR0ZXJfbmFtZSgpOgotICAgICAgICAgICAgcmV0dXJuICJOdW1i
ZXIiCi0KLSAgICAgICAgQHN0YXRpY21ldGhvZAotICAgICAgICBkZWYgZ2V0X2NfaW5pdGlhbGl6
ZXIoKToKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiVW5zdXBwb3J0ZWQiKQotCi0gICAg
ICAgIEBzdGF0aWNtZXRob2QKLSAgICAgICAgZGVmIGdldF9qc19iaW5kX3R5cGUoKToKLSAgICAg
ICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiVW5zdXBwb3J0ZWQiKQotCi0gICAgICAgIGRlZmF1bHRf
Y19wYXJhbV90eXBlID0gQ1BhcmFtVHlwZSgiZG91YmxlIikKLQotICAgIGNsYXNzIEJvb2woQmFz
ZVR5cGUpOgotICAgICAgICBAY2xhc3NtZXRob2QKLSAgICAgICAgZGVmIGdldF9jX3BhcmFtX3R5
cGUoY2xzLCBwYXJhbV90eXBlLCBvcHRpb25hbCk6Ci0gICAgICAgICAgICBpZiAocGFyYW1fdHlw
ZSA9PSBQYXJhbVR5cGUuRVZFTlQpOgotICAgICAgICAgICAgICAgIGlmIG9wdGlvbmFsOgotICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gY2xzLl9yZWZfY190eXBlCi0gICAgICAgICAgICAgICAg
ZWxzZToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNscy5fcGxhaW5fY190eXBlCi0gICAg
ICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJldHVybiBjbHMuX3BsYWluX2NfdHlwZQot
Ci0gICAgICAgIEBzdGF0aWNtZXRob2QKLSAgICAgICAgZGVmIGdldF9nZXR0ZXJfbmFtZSgpOgot
ICAgICAgICAgICAgcmV0dXJuICJCb29sZWFuIgotCi0gICAgICAgIGdldF9zZXR0ZXJfbmFtZSA9
IGdldF9nZXR0ZXJfbmFtZQotCi0gICAgICAgIEBzdGF0aWNtZXRob2QKLSAgICAgICAgZGVmIGdl
dF9jX2luaXRpYWxpemVyKCk6Ci0gICAgICAgICAgICByZXR1cm4gImZhbHNlIgotCi0gICAgICAg
IEBzdGF0aWNtZXRob2QKLSAgICAgICAgZGVmIGdldF9qc19iaW5kX3R5cGUoKToKLSAgICAgICAg
ICAgIHJldHVybiAiYm9vbGVhbiIKLQotICAgICAgICBAc3RhdGljbWV0aG9kCi0gICAgICAgIGRl
ZiBpc19ldmVudF9wYXJhbV9jaGVja19vcHRpb25hbCgpOgotICAgICAgICAgICAgcmV0dXJuIFRy
dWUKLQotICAgICAgICBfcGxhaW5fY190eXBlID0gQ1BhcmFtVHlwZSgiYm9vbCIpCi0gICAgICAg
IF9yZWZfY190eXBlID0gQ1BhcmFtVHlwZSgiY29uc3QgYm9vbCogY29uc3QiLCAiKiVzIikKLQot
ICAgIGNsYXNzIE9iamVjdChCYXNlVHlwZSk6Ci0gICAgICAgIEBjbGFzc21ldGhvZAotICAgICAg
ICBkZWYgZ2V0X2NfcGFyYW1fdHlwZShjbHMsIHBhcmFtX3R5cGUsIG9wdGlvbmFsKToKLSAgICAg
ICAgICAgIGlmIHBhcmFtX3R5cGUgPT0gUGFyYW1UeXBlLkVWRU5UOgotICAgICAgICAgICAgICAg
IHJldHVybiBjbHMuX3JlZl9jX3R5cGUKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIGNscy5fcGxhaW5fY190eXBlCi0KLSAgICAgICAgQHN0YXRpY21ldGhvZAotICAg
ICAgICBkZWYgZ2V0X2dldHRlcl9uYW1lKCk6Ci0gICAgICAgICAgICByZXR1cm4gIk9iamVjdCIK
LQotICAgICAgICBnZXRfc2V0dGVyX25hbWUgPSBnZXRfZ2V0dGVyX25hbWUKLQotICAgICAgICBA
c3RhdGljbWV0aG9kCi0gICAgICAgIGRlZiBnZXRfY19pbml0aWFsaXplcigpOgotICAgICAgICAg
ICAgcmV0dXJuICJJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpIgotCi0gICAgICAgIEBzdGF0aWNt
ZXRob2QKLSAgICAgICAgZGVmIGdldF9qc19iaW5kX3R5cGUoKToKLSAgICAgICAgICAgIHJldHVy
biAib2JqZWN0IgotCi0gICAgICAgIEBzdGF0aWNtZXRob2QKLSAgICAgICAgZGVmIGlzX2V2ZW50
X3BhcmFtX2NoZWNrX29wdGlvbmFsKCk6Ci0gICAgICAgICAgICByZXR1cm4gVHJ1ZQotCi0gICAg
ICAgIF9wbGFpbl9jX3R5cGUgPSBDUGFyYW1UeXBlKCJSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiIp
Ci0gICAgICAgIF9yZWZfY190eXBlID0gQ1BhcmFtVHlwZSgiUGFzc1JlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+IikKLQotICAgIGNsYXNzIEFycmF5KEJhc2VUeXBlKToKLSAgICAgICAgQGNsYXNzbWV0
aG9kCi0gICAgICAgIGRlZiBnZXRfY19wYXJhbV90eXBlKGNscywgcGFyYW1fdHlwZSwgb3B0aW9u
YWwpOgotICAgICAgICAgICAgaWYgcGFyYW1fdHlwZSA9PSBQYXJhbVR5cGUuT1VUUFVUOgotICAg
ICAgICAgICAgICAgIHJldHVybiBjbHMuX3BsYWluX2NfdHlwZQotICAgICAgICAgICAgZWxpZiBw
YXJhbV90eXBlID09IFBhcmFtVHlwZS5JTlBVVDoKLSAgICAgICAgICAgICAgICByZXR1cm4gY2xz
Ll9wbGFpbl9jX3R5cGUKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IGNscy5fcmVmX2NfdHlwZQotCi0gICAgICAgIEBzdGF0aWNtZXRob2QKLSAgICAgICAgZGVmIGdl
dF9nZXR0ZXJfbmFtZSgpOgotICAgICAgICAgICAgcmV0dXJuICJBcnJheSIKLQotICAgICAgICBn
ZXRfc2V0dGVyX25hbWUgPSBnZXRfZ2V0dGVyX25hbWUKLQotICAgICAgICBAc3RhdGljbWV0aG9k
Ci0gICAgICAgIGRlZiBnZXRfY19pbml0aWFsaXplcigpOgotICAgICAgICAgICAgcmV0dXJuICJJ
bnNwZWN0b3JBcnJheTo6Y3JlYXRlKCkiCi0KLSAgICAgICAgQHN0YXRpY21ldGhvZAotICAgICAg
ICBkZWYgZ2V0X2pzX2JpbmRfdHlwZSgpOgotICAgICAgICAgICAgcmV0dXJuICJvYmplY3QiCi0K
LSAgICAgICAgQHN0YXRpY21ldGhvZAotICAgICAgICBkZWYgaXNfZXZlbnRfcGFyYW1fY2hlY2tf
b3B0aW9uYWwoKToKLSAgICAgICAgICAgIHJldHVybiBUcnVlCi0KLSAgICAgICAgX3BsYWluX2Nf
dHlwZSA9IENQYXJhbVR5cGUoIlJlZlB0cjxJbnNwZWN0b3JBcnJheT4iKQotICAgICAgICBfcmVm
X2NfdHlwZSA9IENQYXJhbVR5cGUoIlBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IikKLQotCi1j
bGFzcyBQYXJhbVR5cGUob2JqZWN0KToKLSAgICBJTlBVVCA9ICJpbnB1dCIKLSAgICBPVVRQVVQg
PSAib3V0cHV0IgotICAgIEVWRU5UID0gImV2ZW50IgotCi0KLWNsYXNzIFR5cGVEYXRhKG9iamVj
dCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGpzb25fdHlwZSwganNvbl9kb21haW4pOgotICAg
ICAgICBzZWxmLmpzb25fdHlwZV8gPSBqc29uX3R5cGUKLSAgICAgICAgc2VsZi5qc29uX2RvbWFp
bl8gPSBqc29uX2RvbWFpbgotCi0gICAgICAgIGlmICJ0eXBlIiBpbiBqc29uX3R5cGU6Ci0gICAg
ICAgICAgICBqc29uX3R5cGVfbmFtZSA9IGpzb25fdHlwZVsidHlwZSJdCi0gICAgICAgICAgICBy
YXdfdHlwZSA9IFJhd1R5cGVzLmdldChqc29uX3R5cGVfbmFtZSkKLSAgICAgICAgZWxzZToKLSAg
ICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiVW5rbm93biB0eXBlIikKLSAgICAgICAgc2VsZi5y
YXdfdHlwZV8gPSByYXdfdHlwZQotCi0gICAgZGVmIGdldF9yYXdfdHlwZShzZWxmKToKLSAgICAg
ICAgcmV0dXJuIHNlbGYucmF3X3R5cGVfCi0KLQotY2xhc3MgVHlwZU1hcDoKLSAgICBkZWYgX19p
bml0X18oc2VsZiwgYXBpKToKLSAgICAgICAgc2VsZi5tYXBfID0ge30KLSAgICAgICAgZm9yIGpz
b25fZG9tYWluIGluIGFwaVsiZG9tYWlucyJdOgotICAgICAgICAgICAgZG9tYWluX25hbWUgPSBq
c29uX2RvbWFpblsiZG9tYWluIl0KLQotICAgICAgICAgICAgZG9tYWluX21hcCA9IHt9Ci0gICAg
ICAgICAgICBzZWxmLm1hcF9bZG9tYWluX25hbWVdID0gZG9tYWluX21hcAotCi0gICAgICAgICAg
ICBpZiAidHlwZXMiIGluIGpzb25fZG9tYWluOgotICAgICAgICAgICAgICAgIGZvciBqc29uX3R5
cGUgaW4ganNvbl9kb21haW5bInR5cGVzIl06Ci0gICAgICAgICAgICAgICAgICAgIHR5cGVfbmFt
ZSA9IGpzb25fdHlwZVsiaWQiXQotICAgICAgICAgICAgICAgICAgICB0eXBlX2RhdGEgPSBUeXBl
RGF0YShqc29uX3R5cGUsIGpzb25fZG9tYWluKQotICAgICAgICAgICAgICAgICAgICBkb21haW5f
bWFwW3R5cGVfbmFtZV0gPSB0eXBlX2RhdGEKLQotICAgIGRlZiBnZXQoc2VsZiwgZG9tYWluX25h
bWUsIHR5cGVfbmFtZSk6Ci0gICAgICAgIHJldHVybiBzZWxmLm1hcF9bZG9tYWluX25hbWVdW3R5
cGVfbmFtZV0KLQotCi1kZWYgcmVzb2x2ZV9wYXJhbV9yYXdfdHlwZShqc29uX3BhcmFtZXRlciwg
c2NvcGVfZG9tYWluX25hbWUpOgotICAgIGlmICIkcmVmIiBpbiBqc29uX3BhcmFtZXRlcjoKLSAg
ICAgICAganNvbl9yZWYgPSBqc29uX3BhcmFtZXRlclsiJHJlZiJdCi0gICAgICAgIHR5cGVfZGF0
YSA9IGdldF9yZWZfZGF0YShqc29uX3JlZiwgc2NvcGVfZG9tYWluX25hbWUpCi0gICAgICAgIHJl
dHVybiB0eXBlX2RhdGEuZ2V0X3Jhd190eXBlKCkKLSAgICBlbGlmICJ0eXBlIiBpbiBqc29uX3Bh
cmFtZXRlcjoKLSAgICAgICAganNvbl90eXBlID0ganNvbl9wYXJhbWV0ZXJbInR5cGUiXQotICAg
ICAgICByZXR1cm4gUmF3VHlwZXMuZ2V0KGpzb25fdHlwZSkKLSAgICBlbHNlOgotICAgICAgICBy
YWlzZSBFeGNlcHRpb24oIlVua25vd24gdHlwZSIpCi0KLQotZGVmIGdldF9yZWZfZGF0YShqc29u
X3JlZiwgc2NvcGVfZG9tYWluX25hbWUpOgotICAgIGRvdF9wb3MgPSBqc29uX3JlZi5maW5kKCIu
IikKLSAgICBpZiBkb3RfcG9zID09IC0xOgotICAgICAgICBkb21haW5fbmFtZSA9IHNjb3BlX2Rv
bWFpbl9uYW1lCi0gICAgICAgIHR5cGVfbmFtZSA9IGpzb25fcmVmCi0gICAgZWxzZToKLSAgICAg
ICAgZG9tYWluX25hbWUgPSBqc29uX3JlZls6ZG90X3Bvc10KLSAgICAgICAgdHlwZV9uYW1lID0g
anNvbl9yZWZbZG90X3BvcyArIDE6XQotCi0gICAgcmV0dXJuIHR5cGVfbWFwLmdldChkb21haW5f
bmFtZSwgdHlwZV9uYW1lKQotCi0KLWlucHV0X2ZpbGUgPSBvcGVuKGlucHV0X2pzb25fZmlsZW5h
bWUsICJyIikKLWpzb25fc3RyaW5nID0gaW5wdXRfZmlsZS5yZWFkKCkKLWpzb25fYXBpID0ganNv
bi5sb2Fkcyhqc29uX3N0cmluZykKLQotCi1jbGFzcyBUZW1wbGF0ZXM6Ci0gICAgZnJvbnRlbmRf
ZG9tYWluX2NsYXNzID0gc3RyaW5nLlRlbXBsYXRlKAotIiIiICAgIGNsYXNzICRkb21haW5DbGFz
c05hbWUgewotICAgIHB1YmxpYzoKLSAgICAgICAgJGRvbWFpbkNsYXNzTmFtZShJbnNwZWN0b3JG
cm9udGVuZENoYW5uZWwqIGluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCkgOiBtX2luc3BlY3RvckZy
b250ZW5kQ2hhbm5lbChpbnNwZWN0b3JGcm9udGVuZENoYW5uZWwpIHsgfQotJHtmcm9udGVuZERv
bWFpbk1ldGhvZERlY2xhcmF0aW9uc30gICAgICAgIHZvaWQgc2V0SW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogaW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
KSB7IG1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsID0gaW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
OyB9Ci0gICAgICAgIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZ2V0SW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsKCkgeyByZXR1cm4gbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWw7IH0KLSAgICBw
cml2YXRlOgotICAgICAgICBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIG1faW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsOwotICAgIH07Ci0KLSAgICAkZG9tYWluQ2xhc3NOYW1lKiAkZG9tYWluRmll
bGROYW1lKCkgeyByZXR1cm4gJm1fJGRvbWFpbkZpZWxkTmFtZTsgfQotCi0iIiIpCi0KLSAgICBi
YWNrZW5kX21ldGhvZCA9IHN0cmluZy5UZW1wbGF0ZSgKLSIiInZvaWQgSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXI6OiR7ZG9tYWluTmFtZX1fJG1ldGhvZE5hbWUobG9uZyBjYWxsSWQsIEluc3Bl
Y3Rvck9iamVjdCokcmVxdWVzdE1lc3NhZ2VPYmplY3QpCi17Ci0gICAgUmVmUHRyPEluc3BlY3Rv
ckFycmF5PiBwcm90b2NvbEVycm9ycyA9IEluc3BlY3RvckFycmF5OjpjcmVhdGUoKTsKLQotICAg
IGlmICghJGFnZW50RmllbGQpCi0gICAgICAgIHByb3RvY29sRXJyb3JzLT5wdXNoU3RyaW5nKCIk
e2RvbWFpbk5hbWV9IGhhbmRsZXIgaXMgbm90IGF2YWlsYWJsZS4iKTsKLSRtZXRob2RPdXRDb2Rl
Ci0gICAgRXJyb3JTdHJpbmcgZXJyb3I7Ci0kbWV0aG9kSW5Db2RlCi1pZiAoIXByb3RvY29sRXJy
b3JzLT5sZW5ndGgoKSkKLSAgICAkYWdlbnRGaWVsZC0+JG1ldGhvZE5hbWUoJmVycm9yJGFnZW50
Q2FsbFBhcmFtcyk7Ci0KLSAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiByZXN1bHQgPSBJbnNw
ZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwotJHtyZXNwb25zZUNvb2t9c2VuZFJlc3BvbnNlKGNhbGxJ
ZCwgcmVzdWx0LCBTdHJpbmc6OmZvcm1hdCgiU29tZSBhcmd1bWVudHMgb2YgbWV0aG9kICclcycg
Y2FuJ3QgYmUgcHJvY2Vzc2VkIiwgIiRkb21haW5OYW1lLiRtZXRob2ROYW1lIiksIHByb3RvY29s
RXJyb3JzLCBlcnJvcik7Ci19Ci0iIiIpCi0KLSAgICBmcm9udGVuZF9tZXRob2QgPSBzdHJpbmcu
VGVtcGxhdGUoIiIidm9pZCBJbnNwZWN0b3JGcm9udGVuZDo6JGRvbWFpbk5hbWU6OiRldmVudE5h
bWUoJHBhcmFtZXRlcnMpCi17Ci0gICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gJHtldmVudE5h
bWV9TWVzc2FnZSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgJHtldmVudE5hbWV9
TWVzc2FnZS0+c2V0U3RyaW5nKCJtZXRob2QiLCAiJGRvbWFpbk5hbWUuJGV2ZW50TmFtZSIpOwot
JGNvZGUgICAgaWYgKG1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKQotICAgICAgICBtX2luc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbC0+c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKCR7ZXZlbnROYW1lfU1l
c3NhZ2UtPnRvSlNPTlN0cmluZygpKTsKLX0KLSIiIikKLQotICAgIGZyb250ZW5kX2ggPSBzdHJp
bmcuVGVtcGxhdGUoIiIiLy8gQ29weXJpZ2h0IChjKSAyMDEwIFRoZSBDaHJvbWl1bSBBdXRob3Jz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZS4KLSNpZm5kZWYgSW5zcGVjdG9yRnJvbnRlbmRfaAotI2RlZmluZSBJbnNw
ZWN0b3JGcm9udGVuZF9oCi0KLSNpbmNsdWRlIDxQbGF0Zm9ybVN0cmluZy5oPgotI2luY2x1ZGUg
PHd0Zi9QYXNzUmVmUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgSW5zcGVj
dG9yQXJyYXk7Ci1jbGFzcyBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWw7Ci1jbGFzcyBJbnNwZWN0
b3JPYmplY3Q7Ci0KLXR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwotCi1jbGFzcyBJbnNwZWN0
b3JGcm9udGVuZCB7Ci1wdWJsaWM6Ci0gICAgSW5zcGVjdG9yRnJvbnRlbmQoSW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsKik7Ci0KLQotJGRvbWFpbkNsYXNzTGlzdAotcHJpdmF0ZToKLSAgICBJbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwqIG1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOwotJHtmaWVs
ZERlY2xhcmF0aW9uc319OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0jZW5kaWYgLy8gIWRl
ZmluZWQoSW5zcGVjdG9yRnJvbnRlbmRfaCkKLSIiIikKLQotICAgIGJhY2tlbmRfaCA9IHN0cmlu
Zy5UZW1wbGF0ZSgiIiIvLyBDb3B5cmlnaHQgKGMpIDIwMTAgVGhlIENocm9taXVtIEF1dGhvcnMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlLgotI2lmbmRlZiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcl9oCi0jZGVm
aW5lIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyX2gKLQotI2luY2x1ZGUgPFBsYXRmb3JtU3Ry
aW5nLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEluc3BlY3RvckFnZW50Owot
Y2xhc3MgSW5zcGVjdG9yT2JqZWN0OwotY2xhc3MgSW5zcGVjdG9yQXJyYXk7Ci1jbGFzcyBJbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWw7Ci0KLSRmb3J3YXJkRGVjbGFyYXRpb25zCi0KLXR5cGVkZWYg
U3RyaW5nIEVycm9yU3RyaW5nOwotCi1jbGFzcyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjog
cHVibGljIFJlZkNvdW50ZWQ8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IHsKLXB1YmxpYzoK
LSAgICBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwq
IGluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCRjb25zdHJ1Y3RvclBhcmFtcykKLSAgICAgICAgOiBt
X2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbChpbnNwZWN0b3JGcm9udGVuZENoYW5uZWwpCi0kY29u
c3RydWN0b3JJbml0Ci0gICAgeyB9Ci0KLSAgICB2b2lkIGNsZWFyRnJvbnRlbmQoKSB7IG1faW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsID0gMDsgfQotCi0gICAgZW51bSBDb21tb25FcnJvckNvZGUg
ewotICAgICAgICBQYXJzZUVycm9yID0gMCwKLSAgICAgICAgSW52YWxpZFJlcXVlc3QsCi0gICAg
ICAgIE1ldGhvZE5vdEZvdW5kLAotICAgICAgICBJbnZhbGlkUGFyYW1zLAotICAgICAgICBJbnRl
cm5hbEVycm9yLAotICAgICAgICBTZXJ2ZXJFcnJvciwKLSAgICAgICAgTGFzdEVudHJ5LAotICAg
IH07Ci0KLSAgICB2b2lkIHJlcG9ydFByb3RvY29sRXJyb3IoY29uc3QgbG9uZyogY29uc3QgY2Fs
bElkLCBDb21tb25FcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKSBjb25zdDsK
LSAgICB2b2lkIHJlcG9ydFByb3RvY29sRXJyb3IoY29uc3QgbG9uZyogY29uc3QgY2FsbElkLCBD
b21tb25FcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBQYXNzUmVmUHRyPElu
c3BlY3RvckFycmF5PiBkYXRhKSBjb25zdDsKLSAgICB2b2lkIGRpc3BhdGNoKGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSk7Ci0gICAgc3RhdGljIGJvb2wgZ2V0Q29tbWFuZE5hbWUoY29uc3QgU3RyaW5n
JiBtZXNzYWdlLCBTdHJpbmcqIHJlc3VsdCk7Ci0KLSAgICBlbnVtIE1ldGhvZE5hbWVzIHsKLQot
JG1ldGhvZE5hbWVzRW51bUNvbnRlbnQKLX07Ci0KLSAgICBzdGF0aWMgY29uc3QgY2hhciogY29t
bWFuZE5hbWVzW107Ci0KLXByaXZhdGU6Ci0gICAgc3RhdGljIGludCBnZXRJbnQoSW5zcGVjdG9y
T2JqZWN0KiBvYmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCogdmFsdWVGb3VuZCwgSW5z
cGVjdG9yQXJyYXkqIHByb3RvY29sRXJyb3JzKTsKLSAgICBzdGF0aWMgU3RyaW5nIGdldFN0cmlu
ZyhJbnNwZWN0b3JPYmplY3QqIG9iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBib29sKiB2YWx1
ZUZvdW5kLCBJbnNwZWN0b3JBcnJheSogcHJvdG9jb2xFcnJvcnMpOwotICAgIHN0YXRpYyBib29s
IGdldEJvb2xlYW4oSW5zcGVjdG9yT2JqZWN0KiBvYmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSwg
Ym9vbCogdmFsdWVGb3VuZCwgSW5zcGVjdG9yQXJyYXkqIHByb3RvY29sRXJyb3JzKTsKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGdldE9iamVjdChJbnNwZWN0b3JPYmpl
Y3QqIG9iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBib29sKiB2YWx1ZUZvdW5kLCBJbnNwZWN0
b3JBcnJheSogcHJvdG9jb2xFcnJvcnMpOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rv
ckFycmF5PiBnZXRBcnJheShJbnNwZWN0b3JPYmplY3QqIG9iamVjdCwgY29uc3QgU3RyaW5nJiBu
YW1lLCBib29sKiB2YWx1ZUZvdW5kLCBJbnNwZWN0b3JBcnJheSogcHJvdG9jb2xFcnJvcnMpOwot
ICAgIHZvaWQgc2VuZFJlc3BvbnNlKGxvbmcgY2FsbElkLCBQYXNzUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4gcmVzdWx0LCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgUGFzc1JlZlB0cjxJbnNw
ZWN0b3JBcnJheT4gcHJvdG9jb2xFcnJvcnMsIEVycm9yU3RyaW5nIGludm9jYXRpb25FcnJvcik7
Ci0KLSRtZXRob2REZWNsYXJhdGlvbnMKLQotICAgIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCog
bV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWw7Ci0kZmllbGREZWNsYXJhdGlvbnMKLX07Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKLSNlbmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlcl9oKQotCi0KLSIiIikKLQotICAgIGJhY2tlbmRfY3BwID0gc3RyaW5nLlRlbXBs
YXRlKCIiIi8vIENvcHlyaWdodCAoYykgMjAxMCBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUuCi0KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyLmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0jaW5jbHVk
ZSA8d3RmL3RleHQvQ1N0cmluZy5oPgotCi0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLQotI2luY2x1
ZGUgIkluc3BlY3RvckFnZW50LmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCi0jaW5j
bHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwuaCIKLSRpbmNsdWRlcwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNvbnN0IGNoYXIqIElu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpjb21tYW5kTmFtZXNbXSA9IHsKLSRtZXRob2ROYW1l
RGVjbGFyYXRpb25zCi19OwotCi0KLSRtZXRob2RzCi12b2lkIEluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyOjpkaXNwYXRjaChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCi17Ci0gICAgUmVmUHRyPElu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiBwcm90ZWN0ID0gdGhpczsKLSAgICB0eXBlZGVmIHZv
aWQgKEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjoqQ2FsbEhhbmRsZXIpKGxvbmcgY2FsbElk
LCBJbnNwZWN0b3JPYmplY3QqIG1lc3NhZ2VPYmplY3QpOwotICAgIHR5cGVkZWYgSGFzaE1hcDxT
dHJpbmcsIENhbGxIYW5kbGVyPiBEaXNwYXRjaE1hcDsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KERpc3BhdGNoTWFwLCBkaXNwYXRjaE1hcCwgKTsKLSAgICBsb25nIGNhbGxJZCA9IDA7Ci0KLSAg
ICBpZiAoZGlzcGF0Y2hNYXAuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHN0YXRpYyBDYWxsSGFuZGxl
ciBoYW5kbGVyc1tdID0gewotJG1lc3NhZ2VIYW5kbGVycwotICAgICAgICB9OwotICAgICAgICBz
aXplX3QgbGVuZ3RoID0gc2l6ZW9mKGNvbW1hbmROYW1lcykgLyBzaXplb2YoY29tbWFuZE5hbWVz
WzBdKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkKLSAgICAg
ICAgICAgIGRpc3BhdGNoTWFwLmFkZChjb21tYW5kTmFtZXNbaV0sIGhhbmRsZXJzW2ldKTsKLSAg
ICB9Ci0KLSAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHBhcnNlZE1lc3NhZ2UgPSBJbnNwZWN0
b3JWYWx1ZTo6cGFyc2VKU09OKG1lc3NhZ2UpOwotICAgIGlmICghcGFyc2VkTWVzc2FnZSkgewot
ICAgICAgICByZXBvcnRQcm90b2NvbEVycm9yKDAsIFBhcnNlRXJyb3IsICJNZXNzYWdlIG11c3Qg
YmUgaW4gSlNPTiBmb3JtYXQiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIFJlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+IG1lc3NhZ2VPYmplY3QgPSBwYXJzZWRNZXNzYWdlLT5hc09iamVj
dCgpOwotICAgIGlmICghbWVzc2FnZU9iamVjdCkgewotICAgICAgICByZXBvcnRQcm90b2NvbEVy
cm9yKDAsIEludmFsaWRSZXF1ZXN0LCAiTWVzc2FnZSBtdXN0IGJlIGEgSlNPTmlmaWVkIG9iamVj
dCIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgUmVmUHRyPEluc3BlY3RvclZhbHVl
PiBjYWxsSWRWYWx1ZSA9IG1lc3NhZ2VPYmplY3QtPmdldCgiaWQiKTsKLSAgICBpZiAoIWNhbGxJ
ZFZhbHVlKSB7Ci0gICAgICAgIHJlcG9ydFByb3RvY29sRXJyb3IoMCwgSW52YWxpZFJlcXVlc3Qs
ICInaWQnIHByb3BlcnR5IHdhcyBub3QgZm91bmQiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIGlmICghY2FsbElkVmFsdWUtPmFzTnVtYmVyKCZjYWxsSWQpKSB7Ci0gICAgICAgIHJl
cG9ydFByb3RvY29sRXJyb3IoMCwgSW52YWxpZFJlcXVlc3QsICJUaGUgdHlwZSBvZiAnaWQnIHBy
b3BlcnR5IG11c3QgYmUgbnVtYmVyIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBS
ZWZQdHI8SW5zcGVjdG9yVmFsdWU+IG1ldGhvZFZhbHVlID0gbWVzc2FnZU9iamVjdC0+Z2V0KCJt
ZXRob2QiKTsKLSAgICBpZiAoIW1ldGhvZFZhbHVlKSB7Ci0gICAgICAgIHJlcG9ydFByb3RvY29s
RXJyb3IoJmNhbGxJZCwgSW52YWxpZFJlcXVlc3QsICInbWV0aG9kJyBwcm9wZXJ0eSB3YXNuJ3Qg
Zm91bmQiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIFN0cmluZyBtZXRob2Q7Ci0g
ICAgaWYgKCFtZXRob2RWYWx1ZS0+YXNTdHJpbmcoJm1ldGhvZCkpIHsKLSAgICAgICAgcmVwb3J0
UHJvdG9jb2xFcnJvcigmY2FsbElkLCBJbnZhbGlkUmVxdWVzdCwgIlRoZSB0eXBlIG9mICdtZXRo
b2QnIHByb3BlcnR5IG11c3QgYmUgc3RyaW5nIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBIYXNoTWFwPFN0cmluZywgQ2FsbEhhbmRsZXI+OjppdGVyYXRvciBpdCA9IGRpc3BhdGNo
TWFwLmZpbmQobWV0aG9kKTsKLSAgICBpZiAoaXQgPT0gZGlzcGF0Y2hNYXAuZW5kKCkpIHsKLSAg
ICAgICAgcmVwb3J0UHJvdG9jb2xFcnJvcigmY2FsbElkLCBNZXRob2ROb3RGb3VuZCwgIiciICsg
bWV0aG9kICsgIicgd2Fzbid0IGZvdW5kIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICAoKCp0aGlzKS4qaXQtPnNlY29uZCkoY2FsbElkLCBtZXNzYWdlT2JqZWN0LmdldCgpKTsKLX0K
LQotdm9pZCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6c2VuZFJlc3BvbnNlKGxvbmcgY2Fs
bElkLCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmVzdWx0LCBjb25zdCBTdHJpbmcmIGVy
cm9yTWVzc2FnZSwgUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gcHJvdG9jb2xFcnJvcnMsIEVy
cm9yU3RyaW5nIGludm9jYXRpb25FcnJvcikKLXsKLSAgICBpZiAocHJvdG9jb2xFcnJvcnMtPmxl
bmd0aCgpKSB7Ci0gICAgICAgIHJlcG9ydFByb3RvY29sRXJyb3IoJmNhbGxJZCwgSW52YWxpZFBh
cmFtcywgZXJyb3JNZXNzYWdlLCBwcm90b2NvbEVycm9ycyk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0gICAgaWYgKGludm9jYXRpb25FcnJvci5sZW5ndGgoKSkgewotICAgICAgICByZXBvcnRQ
cm90b2NvbEVycm9yKCZjYWxsSWQsIFNlcnZlckVycm9yLCBpbnZvY2F0aW9uRXJyb3IpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmVzcG9u
c2VNZXNzYWdlID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKLSAgICByZXNwb25zZU1lc3Nh
Z2UtPnNldE9iamVjdCgicmVzdWx0IiwgcmVzdWx0KTsKLSAgICByZXNwb25zZU1lc3NhZ2UtPnNl
dE51bWJlcigiaWQiLCBjYWxsSWQpOwotICAgIGlmIChtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5l
bCkKLSAgICAgICAgbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwtPnNlbmRNZXNzYWdlVG9Gcm9u
dGVuZChyZXNwb25zZU1lc3NhZ2UtPnRvSlNPTlN0cmluZygpKTsKLX0KLQotdm9pZCBJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlcjo6cmVwb3J0UHJvdG9jb2xFcnJvcihjb25zdCBsb25nKiBjb25z
dCBjYWxsSWQsIENvbW1vbkVycm9yQ29kZSBjb2RlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2Fn
ZSkgY29uc3QKLXsKLSAgICByZXBvcnRQcm90b2NvbEVycm9yKGNhbGxJZCwgY29kZSwgZXJyb3JN
ZXNzYWdlLCAwKTsKLX0KLQotdm9pZCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6cmVwb3J0
UHJvdG9jb2xFcnJvcihjb25zdCBsb25nKiBjb25zdCBjYWxsSWQsIENvbW1vbkVycm9yQ29kZSBj
b2RlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJh
eT4gZGF0YSkgY29uc3QKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFZlY3RvcjxpbnQ+LHNf
Y29tbW9uRXJyb3JzLCk7Ci0gICAgaWYgKCFzX2NvbW1vbkVycm9ycy5zaXplKCkpIHsKLSAgICAg
ICAgc19jb21tb25FcnJvcnMuaW5zZXJ0KFBhcnNlRXJyb3IsIC0zMjcwMCk7Ci0gICAgICAgIHNf
Y29tbW9uRXJyb3JzLmluc2VydChJbnZhbGlkUmVxdWVzdCwgLTMyNjAwKTsKLSAgICAgICAgc19j
b21tb25FcnJvcnMuaW5zZXJ0KE1ldGhvZE5vdEZvdW5kLCAtMzI2MDEpOwotICAgICAgICBzX2Nv
bW1vbkVycm9ycy5pbnNlcnQoSW52YWxpZFBhcmFtcywgLTMyNjAyKTsKLSAgICAgICAgc19jb21t
b25FcnJvcnMuaW5zZXJ0KEludGVybmFsRXJyb3IsIC0zMjYwMyk7Ci0gICAgICAgIHNfY29tbW9u
RXJyb3JzLmluc2VydChTZXJ2ZXJFcnJvciwgLTMyMDAwKTsKLSAgICB9Ci0gICAgQVNTRVJUKGNv
ZGUgPj0wKTsKLSAgICBBU1NFUlQoKHVuc2lnbmVkKWNvZGUgPCBzX2NvbW1vbkVycm9ycy5zaXpl
KCkpOwotICAgIEFTU0VSVChzX2NvbW1vbkVycm9yc1tjb2RlXSk7Ci0gICAgUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4gZXJyb3IgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwotICAgIGVycm9y
LT5zZXROdW1iZXIoImNvZGUiLCBzX2NvbW1vbkVycm9yc1tjb2RlXSk7Ci0gICAgZXJyb3ItPnNl
dFN0cmluZygibWVzc2FnZSIsIGVycm9yTWVzc2FnZSk7Ci0gICAgQVNTRVJUKGVycm9yKTsKLSAg
ICBpZiAoZGF0YSkKLSAgICAgICAgZXJyb3ItPnNldEFycmF5KCJkYXRhIiwgZGF0YSk7Ci0gICAg
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4gbWVzc2FnZSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRl
KCk7Ci0gICAgbWVzc2FnZS0+c2V0T2JqZWN0KCJlcnJvciIsIGVycm9yKTsKLSAgICBpZiAoY2Fs
bElkKQotICAgICAgICBtZXNzYWdlLT5zZXROdW1iZXIoImlkIiwgKmNhbGxJZCk7Ci0gICAgZWxz
ZQotICAgICAgICBtZXNzYWdlLT5zZXRWYWx1ZSgiaWQiLCBJbnNwZWN0b3JWYWx1ZTo6bnVsbCgp
KTsKLSAgICBpZiAobV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwpCi0gICAgICAgIG1faW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsLT5zZW5kTWVzc2FnZVRvRnJvbnRlbmQobWVzc2FnZS0+dG9KU09O
U3RyaW5nKCkpOwotfQotCi1pbnQgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldEludChJ
bnNwZWN0b3JPYmplY3QqIG9iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBib29sKiB2YWx1ZUZv
dW5kLCBJbnNwZWN0b3JBcnJheSogcHJvdG9jb2xFcnJvcnMpCi17Ci0gICAgQVNTRVJUKHByb3Rv
Y29sRXJyb3JzKTsKLQotICAgIGlmICh2YWx1ZUZvdW5kKQotICAgICAgICAqdmFsdWVGb3VuZCA9
IGZhbHNlOwotCi0gICAgaW50IHZhbHVlID0gMDsKLQotICAgIGlmICghb2JqZWN0KSB7Ci0gICAg
ICAgIGlmICghdmFsdWVGb3VuZCkgewotICAgICAgICAgICAgLy8gUmVxdWlyZWQgcGFyYW1ldGVy
IGluIG1pc3NpbmcgcGFyYW1zIGNvbnRhaW5lci4KLSAgICAgICAgICAgIHByb3RvY29sRXJyb3Jz
LT5wdXNoU3RyaW5nKFN0cmluZzo6Zm9ybWF0KCIncGFyYW1zJyBvYmplY3QgbXVzdCBjb250YWlu
IHJlcXVpcmVkIHBhcmFtZXRlciAnJXMnIHdpdGggdHlwZSAnTnVtYmVyJy4iLCBuYW1lLnV0Zjgo
KS5kYXRhKCkpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdmFsdWU7Ci0gICAgfQotCi0g
ICAgSW5zcGVjdG9yT2JqZWN0Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBvYmplY3QtPmVuZCgpOwot
ICAgIEluc3BlY3Rvck9iamVjdDo6Y29uc3RfaXRlcmF0b3IgdmFsdWVJdGVyYXRvciA9IG9iamVj
dC0+ZmluZChuYW1lKTsKLQotICAgIGlmICh2YWx1ZUl0ZXJhdG9yID09IGVuZCkgewotICAgICAg
ICBpZiAoIXZhbHVlRm91bmQpCi0gICAgICAgICAgICBwcm90b2NvbEVycm9ycy0+cHVzaFN0cmlu
ZyhTdHJpbmc6OmZvcm1hdCgiUGFyYW1ldGVyICclcycgd2l0aCB0eXBlICdOdW1iZXInIHdhcyBu
b3QgZm91bmQuIiwgbmFtZS51dGY4KCkuZGF0YSgpKSk7Ci0gICAgICAgIHJldHVybiB2YWx1ZTsK
LSAgICB9Ci0KLSAgICBpZiAoIXZhbHVlSXRlcmF0b3ItPnNlY29uZC0+YXNOdW1iZXIoJnZhbHVl
KSkKLSAgICAgICAgcHJvdG9jb2xFcnJvcnMtPnB1c2hTdHJpbmcoU3RyaW5nOjpmb3JtYXQoIlBh
cmFtZXRlciAnJXMnIGhhcyB3cm9uZyB0eXBlLiBJdCBtdXN0IGJlICdOdW1iZXInLiIsIG5hbWUu
dXRmOCgpLmRhdGEoKSkpOwotICAgIGVsc2UKLSAgICAgICAgaWYgKHZhbHVlRm91bmQpCi0gICAg
ICAgICAgICAqdmFsdWVGb3VuZCA9IHRydWU7Ci0gICAgcmV0dXJuIHZhbHVlOwotfQotCi1TdHJp
bmcgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldFN0cmluZyhJbnNwZWN0b3JPYmplY3Qq
IG9iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBib29sKiB2YWx1ZUZvdW5kLCBJbnNwZWN0b3JB
cnJheSogcHJvdG9jb2xFcnJvcnMpCi17Ci0gICAgQVNTRVJUKHByb3RvY29sRXJyb3JzKTsKLQot
ICAgIGlmICh2YWx1ZUZvdW5kKQotICAgICAgICAqdmFsdWVGb3VuZCA9IGZhbHNlOwotCi0gICAg
U3RyaW5nIHZhbHVlID0gIiI7Ci0KLSAgICBpZiAoIW9iamVjdCkgewotICAgICAgICBpZiAoIXZh
bHVlRm91bmQpIHsKLSAgICAgICAgICAgIC8vIFJlcXVpcmVkIHBhcmFtZXRlciBpbiBtaXNzaW5n
IHBhcmFtcyBjb250YWluZXIuCi0gICAgICAgICAgICBwcm90b2NvbEVycm9ycy0+cHVzaFN0cmlu
ZyhTdHJpbmc6OmZvcm1hdCgiJ3BhcmFtcycgb2JqZWN0IG11c3QgY29udGFpbiByZXF1aXJlZCBw
YXJhbWV0ZXIgJyVzJyB3aXRoIHR5cGUgJ1N0cmluZycuIiwgbmFtZS51dGY4KCkuZGF0YSgpKSk7
Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHZhbHVlOwotICAgIH0KLQotICAgIEluc3BlY3Rv
ck9iamVjdDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gb2JqZWN0LT5lbmQoKTsKLSAgICBJbnNwZWN0
b3JPYmplY3Q6OmNvbnN0X2l0ZXJhdG9yIHZhbHVlSXRlcmF0b3IgPSBvYmplY3QtPmZpbmQobmFt
ZSk7Ci0KLSAgICBpZiAodmFsdWVJdGVyYXRvciA9PSBlbmQpIHsKLSAgICAgICAgaWYgKCF2YWx1
ZUZvdW5kKQotICAgICAgICAgICAgcHJvdG9jb2xFcnJvcnMtPnB1c2hTdHJpbmcoU3RyaW5nOjpm
b3JtYXQoIlBhcmFtZXRlciAnJXMnIHdpdGggdHlwZSAnU3RyaW5nJyB3YXMgbm90IGZvdW5kLiIs
IG5hbWUudXRmOCgpLmRhdGEoKSkpOwotICAgICAgICByZXR1cm4gdmFsdWU7Ci0gICAgfQotCi0g
ICAgaWYgKCF2YWx1ZUl0ZXJhdG9yLT5zZWNvbmQtPmFzU3RyaW5nKCZ2YWx1ZSkpCi0gICAgICAg
IHByb3RvY29sRXJyb3JzLT5wdXNoU3RyaW5nKFN0cmluZzo6Zm9ybWF0KCJQYXJhbWV0ZXIgJyVz
JyBoYXMgd3JvbmcgdHlwZS4gSXQgbXVzdCBiZSAnU3RyaW5nJy4iLCBuYW1lLnV0ZjgoKS5kYXRh
KCkpKTsKLSAgICBlbHNlCi0gICAgICAgIGlmICh2YWx1ZUZvdW5kKQotICAgICAgICAgICAgKnZh
bHVlRm91bmQgPSB0cnVlOwotICAgIHJldHVybiB2YWx1ZTsKLX0KLQotYm9vbCBJbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlcjo6Z2V0Qm9vbGVhbihJbnNwZWN0b3JPYmplY3QqIG9iamVjdCwgY29u
c3QgU3RyaW5nJiBuYW1lLCBib29sKiB2YWx1ZUZvdW5kLCBJbnNwZWN0b3JBcnJheSogcHJvdG9j
b2xFcnJvcnMpCi17Ci0gICAgQVNTRVJUKHByb3RvY29sRXJyb3JzKTsKLQotICAgIGlmICh2YWx1
ZUZvdW5kKQotICAgICAgICAqdmFsdWVGb3VuZCA9IGZhbHNlOwotCi0gICAgYm9vbCB2YWx1ZSA9
IGZhbHNlOwotCi0gICAgaWYgKCFvYmplY3QpIHsKLSAgICAgICAgaWYgKCF2YWx1ZUZvdW5kKSB7
Ci0gICAgICAgICAgICAvLyBSZXF1aXJlZCBwYXJhbWV0ZXIgaW4gbWlzc2luZyBwYXJhbXMgY29u
dGFpbmVyLgotICAgICAgICAgICAgcHJvdG9jb2xFcnJvcnMtPnB1c2hTdHJpbmcoU3RyaW5nOjpm
b3JtYXQoIidwYXJhbXMnIG9iamVjdCBtdXN0IGNvbnRhaW4gcmVxdWlyZWQgcGFyYW1ldGVyICcl
cycgd2l0aCB0eXBlICdCb29sZWFuJy4iLCBuYW1lLnV0ZjgoKS5kYXRhKCkpKTsKLSAgICAgICAg
fQotICAgICAgICByZXR1cm4gdmFsdWU7Ci0gICAgfQotCi0gICAgSW5zcGVjdG9yT2JqZWN0Ojpj
b25zdF9pdGVyYXRvciBlbmQgPSBvYmplY3QtPmVuZCgpOwotICAgIEluc3BlY3Rvck9iamVjdDo6
Y29uc3RfaXRlcmF0b3IgdmFsdWVJdGVyYXRvciA9IG9iamVjdC0+ZmluZChuYW1lKTsKLQotICAg
IGlmICh2YWx1ZUl0ZXJhdG9yID09IGVuZCkgewotICAgICAgICBpZiAoIXZhbHVlRm91bmQpCi0g
ICAgICAgICAgICBwcm90b2NvbEVycm9ycy0+cHVzaFN0cmluZyhTdHJpbmc6OmZvcm1hdCgiUGFy
YW1ldGVyICclcycgd2l0aCB0eXBlICdCb29sZWFuJyB3YXMgbm90IGZvdW5kLiIsIG5hbWUudXRm
OCgpLmRhdGEoKSkpOwotICAgICAgICByZXR1cm4gdmFsdWU7Ci0gICAgfQotCi0gICAgaWYgKCF2
YWx1ZUl0ZXJhdG9yLT5zZWNvbmQtPmFzQm9vbGVhbigmdmFsdWUpKQotICAgICAgICBwcm90b2Nv
bEVycm9ycy0+cHVzaFN0cmluZyhTdHJpbmc6OmZvcm1hdCgiUGFyYW1ldGVyICclcycgaGFzIHdy
b25nIHR5cGUuIEl0IG11c3QgYmUgJ0Jvb2xlYW4nLiIsIG5hbWUudXRmOCgpLmRhdGEoKSkpOwot
ICAgIGVsc2UKLSAgICAgICAgaWYgKHZhbHVlRm91bmQpCi0gICAgICAgICAgICAqdmFsdWVGb3Vu
ZCA9IHRydWU7Ci0gICAgcmV0dXJuIHZhbHVlOwotfQotCi1QYXNzUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldE9iamVjdChJbnNwZWN0b3JPYmpl
Y3QqIG9iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBib29sKiB2YWx1ZUZvdW5kLCBJbnNwZWN0
b3JBcnJheSogcHJvdG9jb2xFcnJvcnMpCi17Ci0gICAgQVNTRVJUKHByb3RvY29sRXJyb3JzKTsK
LQotICAgIGlmICh2YWx1ZUZvdW5kKQotICAgICAgICAqdmFsdWVGb3VuZCA9IGZhbHNlOwotCi0g
ICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gdmFsdWUgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0
ZSgpOwotCi0gICAgaWYgKCFvYmplY3QpIHsKLSAgICAgICAgaWYgKCF2YWx1ZUZvdW5kKSB7Ci0g
ICAgICAgICAgICAvLyBSZXF1aXJlZCBwYXJhbWV0ZXIgaW4gbWlzc2luZyBwYXJhbXMgY29udGFp
bmVyLgotICAgICAgICAgICAgcHJvdG9jb2xFcnJvcnMtPnB1c2hTdHJpbmcoU3RyaW5nOjpmb3Jt
YXQoIidwYXJhbXMnIG9iamVjdCBtdXN0IGNvbnRhaW4gcmVxdWlyZWQgcGFyYW1ldGVyICclcycg
d2l0aCB0eXBlICdPYmplY3QnLiIsIG5hbWUudXRmOCgpLmRhdGEoKSkpOwotICAgICAgICB9Ci0g
ICAgICAgIHJldHVybiB2YWx1ZTsKLSAgICB9Ci0KLSAgICBJbnNwZWN0b3JPYmplY3Q6OmNvbnN0
X2l0ZXJhdG9yIGVuZCA9IG9iamVjdC0+ZW5kKCk7Ci0gICAgSW5zcGVjdG9yT2JqZWN0Ojpjb25z
dF9pdGVyYXRvciB2YWx1ZUl0ZXJhdG9yID0gb2JqZWN0LT5maW5kKG5hbWUpOwotCi0gICAgaWYg
KHZhbHVlSXRlcmF0b3IgPT0gZW5kKSB7Ci0gICAgICAgIGlmICghdmFsdWVGb3VuZCkKLSAgICAg
ICAgICAgIHByb3RvY29sRXJyb3JzLT5wdXNoU3RyaW5nKFN0cmluZzo6Zm9ybWF0KCJQYXJhbWV0
ZXIgJyVzJyB3aXRoIHR5cGUgJ09iamVjdCcgd2FzIG5vdCBmb3VuZC4iLCBuYW1lLnV0ZjgoKS5k
YXRhKCkpKTsKLSAgICAgICAgcmV0dXJuIHZhbHVlOwotICAgIH0KLQotICAgIGlmICghdmFsdWVJ
dGVyYXRvci0+c2Vjb25kLT5hc09iamVjdCgmdmFsdWUpKQotICAgICAgICBwcm90b2NvbEVycm9y
cy0+cHVzaFN0cmluZyhTdHJpbmc6OmZvcm1hdCgiUGFyYW1ldGVyICclcycgaGFzIHdyb25nIHR5
cGUuIEl0IG11c3QgYmUgJ09iamVjdCcuIiwgbmFtZS51dGY4KCkuZGF0YSgpKSk7Ci0gICAgZWxz
ZQotICAgICAgICBpZiAodmFsdWVGb3VuZCkKLSAgICAgICAgICAgICp2YWx1ZUZvdW5kID0gdHJ1
ZTsKLSAgICByZXR1cm4gdmFsdWU7Ci19Ci0KLVBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IElu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXRBcnJheShJbnNwZWN0b3JPYmplY3QqIG9iamVj
dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBib29sKiB2YWx1ZUZvdW5kLCBJbnNwZWN0b3JBcnJheSog
cHJvdG9jb2xFcnJvcnMpCi17Ci0gICAgQVNTRVJUKHByb3RvY29sRXJyb3JzKTsKLQotICAgIGlm
ICh2YWx1ZUZvdW5kKQotICAgICAgICAqdmFsdWVGb3VuZCA9IGZhbHNlOwotCi0gICAgUmVmUHRy
PEluc3BlY3RvckFycmF5PiB2YWx1ZSA9IEluc3BlY3RvckFycmF5OjpjcmVhdGUoKTsKLQotICAg
IGlmICghb2JqZWN0KSB7Ci0gICAgICAgIGlmICghdmFsdWVGb3VuZCkgewotICAgICAgICAgICAg
Ly8gUmVxdWlyZWQgcGFyYW1ldGVyIGluIG1pc3NpbmcgcGFyYW1zIGNvbnRhaW5lci4KLSAgICAg
ICAgICAgIHByb3RvY29sRXJyb3JzLT5wdXNoU3RyaW5nKFN0cmluZzo6Zm9ybWF0KCIncGFyYW1z
JyBvYmplY3QgbXVzdCBjb250YWluIHJlcXVpcmVkIHBhcmFtZXRlciAnJXMnIHdpdGggdHlwZSAn
QXJyYXknLiIsIG5hbWUudXRmOCgpLmRhdGEoKSkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVy
biB2YWx1ZTsKLSAgICB9Ci0KLSAgICBJbnNwZWN0b3JPYmplY3Q6OmNvbnN0X2l0ZXJhdG9yIGVu
ZCA9IG9iamVjdC0+ZW5kKCk7Ci0gICAgSW5zcGVjdG9yT2JqZWN0Ojpjb25zdF9pdGVyYXRvciB2
YWx1ZUl0ZXJhdG9yID0gb2JqZWN0LT5maW5kKG5hbWUpOwotCi0gICAgaWYgKHZhbHVlSXRlcmF0
b3IgPT0gZW5kKSB7Ci0gICAgICAgIGlmICghdmFsdWVGb3VuZCkKLSAgICAgICAgICAgIHByb3Rv
Y29sRXJyb3JzLT5wdXNoU3RyaW5nKFN0cmluZzo6Zm9ybWF0KCJQYXJhbWV0ZXIgJyVzJyB3aXRo
IHR5cGUgJ0FycmF5JyB3YXMgbm90IGZvdW5kLiIsIG5hbWUudXRmOCgpLmRhdGEoKSkpOwotICAg
ICAgICByZXR1cm4gdmFsdWU7Ci0gICAgfQotCi0gICAgaWYgKCF2YWx1ZUl0ZXJhdG9yLT5zZWNv
bmQtPmFzQXJyYXkoJnZhbHVlKSkKLSAgICAgICAgcHJvdG9jb2xFcnJvcnMtPnB1c2hTdHJpbmco
U3RyaW5nOjpmb3JtYXQoIlBhcmFtZXRlciAnJXMnIGhhcyB3cm9uZyB0eXBlLiBJdCBtdXN0IGJl
ICdBcnJheScuIiwgbmFtZS51dGY4KCkuZGF0YSgpKSk7Ci0gICAgZWxzZQotICAgICAgICBpZiAo
dmFsdWVGb3VuZCkKLSAgICAgICAgICAgICp2YWx1ZUZvdW5kID0gdHJ1ZTsKLSAgICByZXR1cm4g
dmFsdWU7Ci19Ci1ib29sIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXRDb21tYW5kTmFt
ZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIFN0cmluZyogcmVzdWx0KQotewotICAgIFJlZlB0cjxJ
bnNwZWN0b3JWYWx1ZT4gdmFsdWUgPSBJbnNwZWN0b3JWYWx1ZTo6cGFyc2VKU09OKG1lc3NhZ2Up
OwotICAgIGlmICghdmFsdWUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIFJlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+IG9iamVjdCA9IHZhbHVlLT5hc09iamVjdCgpOwotICAgIGlmICghb2Jq
ZWN0KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoIW9iamVjdC0+Z2V0U3RyaW5n
KCJtZXRob2QiLCByZXN1bHQpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4g
dHJ1ZTsKLX0KLQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUo
SU5TUEVDVE9SKQotIiIiKQotCi0gICAgZnJvbnRlbmRfY3BwID0gc3RyaW5nLlRlbXBsYXRlKCIi
Ii8vIENvcHlyaWdodCAoYykgMjAxMCBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNE
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUu
Ci0KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgi
Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0
cmluZy5oPgotCi0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLQotI2luY2x1ZGUgIkluc3BlY3RvckZy
b250ZW5kQ2hhbm5lbC5oIgotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgotI2luY2x1ZGUg
IlBsYXRmb3JtU3RyaW5nLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotCi0KLUluc3BlY3Rv
ckZyb250ZW5kOjpJbnNwZWN0b3JGcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGlu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbCkKLSAgICA6IG1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
KGluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCkKLSRjb25zdHJ1Y3RvckluaXR7Ci19Ci0KLSRtZXRo
b2RzCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNU
T1IpCi0iIiIpCi0KLSAgICBiYWNrZW5kX2pzID0gc3RyaW5nLlRlbXBsYXRlKCIiIi8vIENvcHly
aWdodCAoYykgMjAxMCBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0KLQotSW5z
cGVjdG9yQmFja2VuZFN0dWIgPSBmdW5jdGlvbigpCi17Ci0gICAgdGhpcy5fbGFzdENhbGxiYWNr
SWQgPSAxOwotICAgIHRoaXMuX3BlbmRpbmdSZXNwb25zZXNDb3VudCA9IDA7Ci0gICAgdGhpcy5f
Y2FsbGJhY2tzID0ge307Ci0gICAgdGhpcy5fZG9tYWluRGlzcGF0Y2hlcnMgPSB7fTsKLSAgICB0
aGlzLl9ldmVudEFyZ3MgPSB7fTsKLSRkZWxlZ2F0ZXMkZXZlbnRBcmdzJGRvbWFpbkRpc3BhdGNo
ZXJzICAgIH0KLQotSW5zcGVjdG9yQmFja2VuZFN0dWIucHJvdG90eXBlID0gewotICAgIGR1bXBJ
bnNwZWN0b3JUaW1lU3RhdHM6IDAsCi0gICAgZHVtcEluc3BlY3RvclByb3RvY29sTWVzc2FnZXM6
IDAsCi0KLSAgICBfd3JhcDogZnVuY3Rpb24oY2FsbGJhY2spCi0gICAgewotICAgICAgICB2YXIg
Y2FsbGJhY2tJZCA9IHRoaXMuX2xhc3RDYWxsYmFja0lkKys7Ci0gICAgICAgIHRoaXMuX2NhbGxi
YWNrc1tjYWxsYmFja0lkXSA9IGNhbGxiYWNrIHx8IGZ1bmN0aW9uKCkge307Ci0gICAgICAgIHJl
dHVybiBjYWxsYmFja0lkOwotICAgIH0sCi0KLSAgICBfcmVnaXN0ZXJEZWxlZ2F0ZTogZnVuY3Rp
b24ocmVxdWVzdFN0cmluZykKLSAgICB7Ci0gICAgICAgIHZhciBkb21haW5BbmRGdW5jdGlvbiA9
IEpTT04ucGFyc2UocmVxdWVzdFN0cmluZykubWV0aG9kLnNwbGl0KCIuIik7Ci0gICAgICAgIHZh
ciBhZ2VudE5hbWUgPSBkb21haW5BbmRGdW5jdGlvblswXSArICJBZ2VudCI7Ci0gICAgICAgIGlm
ICghd2luZG93W2FnZW50TmFtZV0pCi0gICAgICAgICAgICB3aW5kb3dbYWdlbnROYW1lXSA9IHt9
OwotICAgICAgICB3aW5kb3dbYWdlbnROYW1lXVtkb21haW5BbmRGdW5jdGlvblsxXV0gPSB0aGlz
Ll9zZW5kTWVzc2FnZVRvQmFja2VuZC5iaW5kKHRoaXMsIHJlcXVlc3RTdHJpbmcpOwotICAgICAg
ICB3aW5kb3dbYWdlbnROYW1lXVtkb21haW5BbmRGdW5jdGlvblsxXV1bImludm9rZSJdID0gdGhp
cy5faW52b2tlLmJpbmQodGhpcywgcmVxdWVzdFN0cmluZykKLSAgICB9LAotCi0gICAgX2ludm9r
ZTogZnVuY3Rpb24ocmVxdWVzdFN0cmluZywgYXJncywgY2FsbGJhY2spCi0gICAgewotICAgICAg
ICB2YXIgcmVxdWVzdCA9IEpTT04ucGFyc2UocmVxdWVzdFN0cmluZyk7Ci0gICAgICAgIHJlcXVl
c3QucGFyYW1zID0gYXJnczsKLSAgICAgICAgdGhpcy5fd3JhcENhbGxiYWNrQW5kU2VuZE1lc3Nh
Z2VPYmplY3QocmVxdWVzdCwgY2FsbGJhY2spOwotICAgIH0sCi0KLSAgICBfc2VuZE1lc3NhZ2VU
b0JhY2tlbmQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHZhciBhcmdzID0gQXJyYXkucHJv
dG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTsKLSAgICAgICAgdmFyIHJlcXVlc3QgPSBKU09O
LnBhcnNlKGFyZ3Muc2hpZnQoKSk7Ci0gICAgICAgIHZhciBjYWxsYmFjayA9IChhcmdzLmxlbmd0
aCAmJiB0eXBlb2YgYXJnc1thcmdzLmxlbmd0aCAtIDFdID09PSAiZnVuY3Rpb24iKSA/IGFyZ3Mu
cG9wKCkgOiAwOwotICAgICAgICB2YXIgZG9tYWluQW5kTWV0aG9kID0gcmVxdWVzdC5tZXRob2Qu
c3BsaXQoIi4iKTsKLSAgICAgICAgdmFyIGFnZW50TWV0aG9kID0gZG9tYWluQW5kTWV0aG9kWzBd
ICsgIkFnZW50LiIgKyBkb21haW5BbmRNZXRob2RbMV07Ci0KLSAgICAgICAgdmFyIGhhc1BhcmFt
cyA9IGZhbHNlOwotICAgICAgICBpZiAocmVxdWVzdC5wYXJhbXMpIHsKLSAgICAgICAgICAgIGZv
ciAodmFyIGtleSBpbiByZXF1ZXN0LnBhcmFtcykgewotICAgICAgICAgICAgICAgIHZhciB0eXBl
TmFtZSA9IHJlcXVlc3QucGFyYW1zW2tleV0udHlwZTsKLSAgICAgICAgICAgICAgICB2YXIgb3B0
aW9uYWxGbGFnID0gcmVxdWVzdC5wYXJhbXNba2V5XS5vcHRpb25hbDsKLQotICAgICAgICAgICAg
ICAgIGlmIChhcmdzLmxlbmd0aCA9PT0gMCAmJiAhb3B0aW9uYWxGbGFnKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGNvbnNvbGUuZXJyb3IoIlByb3RvY29sIEVycm9yOiBJbnZhbGlkIG51bWJlciBv
ZiBhcmd1bWVudHMgZm9yIG1ldGhvZCAnIiArIGFnZW50TWV0aG9kICsgIicgY2FsbC4gSXQgbXVz
dCBoYXZlIHRoZSBuZXh0IGFyZ3VtZW50cyAnIiArIEpTT04uc3RyaW5naWZ5KHJlcXVlc3QucGFy
YW1zKSArICInLiIpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gYXJncy5zaGlmdCgpOwotICAgICAg
ICAgICAgICAgIGlmIChvcHRpb25hbEZsYWcgJiYgdHlwZW9mIHZhbHVlID09PSAidW5kZWZpbmVk
IikgewotICAgICAgICAgICAgICAgICAgICBkZWxldGUgcmVxdWVzdC5wYXJhbXNba2V5XTsKLSAg
ICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gdHlwZU5hbWUpIHsKLSAgICAgICAgICAgICAg
ICAgICAgY29uc29sZS5lcnJvcigiUHJvdG9jb2wgRXJyb3I6IEludmFsaWQgdHlwZSBvZiBhcmd1
bWVudCAnIiArIGtleSArICInIGZvciBtZXRob2QgJyIgKyBhZ2VudE1ldGhvZCArICInIGNhbGwu
IEl0IG11c3QgYmUgJyIgKyB0eXBlTmFtZSArICInIGJ1dCBpdCBpcyAnIiArIHR5cGVvZiB2YWx1
ZSArICInLiIpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAg
fQotCi0gICAgICAgICAgICAgICAgcmVxdWVzdC5wYXJhbXNba2V5XSA9IHZhbHVlOwotICAgICAg
ICAgICAgICAgIGhhc1BhcmFtcyA9IHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBp
ZiAoIWhhc1BhcmFtcykKLSAgICAgICAgICAgICAgICBkZWxldGUgcmVxdWVzdC5wYXJhbXM7Ci0g
ICAgICAgIH0KLQotICAgICAgICBpZiAoYXJncy5sZW5ndGggPT09IDEgJiYgIWNhbGxiYWNrKSB7
Ci0gICAgICAgICAgICBpZiAodHlwZW9mIGFyZ3NbMF0gIT09ICJ1bmRlZmluZWQiKSB7Ci0gICAg
ICAgICAgICAgICAgY29uc29sZS5lcnJvcigiUHJvdG9jb2wgRXJyb3I6IE9wdGlvbmFsIGNhbGxi
YWNrIGFyZ3VtZW50IGZvciBtZXRob2QgJyIgKyBhZ2VudE1ldGhvZCArICInIGNhbGwgbXVzdCBi
ZSBhIGZ1bmN0aW9uIGJ1dCBpdHMgdHlwZSBpcyAnIiArIHR5cGVvZiBhcmdzWzBdICsgIicuIik7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAg
ICAgICAgdGhpcy5fd3JhcENhbGxiYWNrQW5kU2VuZE1lc3NhZ2VPYmplY3QocmVxdWVzdCwgY2Fs
bGJhY2spOwotICAgIH0sCi0KLSAgICBfd3JhcENhbGxiYWNrQW5kU2VuZE1lc3NhZ2VPYmplY3Q6
IGZ1bmN0aW9uKG1lc3NhZ2VPYmplY3QsIGNhbGxiYWNrKQotICAgIHsKLSAgICAgICAgbWVzc2Fn
ZU9iamVjdC5pZCA9IHRoaXMuX3dyYXAoY2FsbGJhY2spOwotCi0gICAgICAgIGlmICh0aGlzLmR1
bXBJbnNwZWN0b3JUaW1lU3RhdHMpIHsKLSAgICAgICAgICAgIHZhciB3cmFwcGVkQ2FsbGJhY2sg
PSB0aGlzLl9jYWxsYmFja3NbbWVzc2FnZU9iamVjdC5pZF07Ci0gICAgICAgICAgICB3cmFwcGVk
Q2FsbGJhY2subWV0aG9kTmFtZSA9IG1lc3NhZ2VPYmplY3QubWV0aG9kOwotICAgICAgICAgICAg
d3JhcHBlZENhbGxiYWNrLnNlbmRSZXF1ZXN0VGltZSA9IERhdGUubm93KCk7Ci0gICAgICAgIH0K
LQotICAgICAgICBpZiAodGhpcy5kdW1wSW5zcGVjdG9yUHJvdG9jb2xNZXNzYWdlcykKLSAgICAg
ICAgICAgIGNvbnNvbGUubG9nKCJmcm9udGVuZDogIiArIEpTT04uc3RyaW5naWZ5KG1lc3NhZ2VP
YmplY3QpKTsKLQotICAgICAgICArK3RoaXMuX3BlbmRpbmdSZXNwb25zZXNDb3VudDsKLSAgICAg
ICAgdGhpcy5zZW5kTWVzc2FnZU9iamVjdFRvQmFja2VuZChtZXNzYWdlT2JqZWN0KTsKLSAgICB9
LAotCi0gICAgc2VuZE1lc3NhZ2VPYmplY3RUb0JhY2tlbmQ6IGZ1bmN0aW9uKG1lc3NhZ2VPYmpl
Y3QpCi0gICAgewotICAgICAgICBjb25zb2xlLnRpbWVTdGFtcChtZXNzYWdlT2JqZWN0Lm1ldGhv
ZCk7Ci0gICAgICAgIHZhciBtZXNzYWdlID0gSlNPTi5zdHJpbmdpZnkobWVzc2FnZU9iamVjdCk7
Ci0gICAgICAgIEluc3BlY3RvckZyb250ZW5kSG9zdC5zZW5kTWVzc2FnZVRvQmFja2VuZChtZXNz
YWdlKTsKLSAgICB9LAotCi0gICAgX3JlZ2lzdGVyRG9tYWluRGlzcGF0Y2hlcjogZnVuY3Rpb24o
ZG9tYWluLCBkaXNwYXRjaGVyKQotICAgIHsKLSAgICAgICAgdGhpcy5fZG9tYWluRGlzcGF0Y2hl
cnNbZG9tYWluXSA9IGRpc3BhdGNoZXI7Ci0gICAgfSwKLQotICAgIGRpc3BhdGNoOiBmdW5jdGlv
bihtZXNzYWdlKQotICAgIHsKLSAgICAgICAgaWYgKHRoaXMuZHVtcEluc3BlY3RvclByb3RvY29s
TWVzc2FnZXMpCi0gICAgICAgICAgICBjb25zb2xlLmxvZygiYmFja2VuZDogIiArICgodHlwZW9m
IG1lc3NhZ2UgPT09ICJzdHJpbmciKSA/IG1lc3NhZ2UgOiBKU09OLnN0cmluZ2lmeShtZXNzYWdl
KSkpOwotCi0gICAgICAgIHZhciBtZXNzYWdlT2JqZWN0ID0gKHR5cGVvZiBtZXNzYWdlID09PSAi
c3RyaW5nIikgPyBKU09OLnBhcnNlKG1lc3NhZ2UpIDogbWVzc2FnZTsKLQotICAgICAgICBpZiAo
ImlkIiBpbiBtZXNzYWdlT2JqZWN0KSB7IC8vIGp1c3QgYSByZXNwb25zZSBmb3Igc29tZSByZXF1
ZXN0Ci0gICAgICAgICAgICBpZiAobWVzc2FnZU9iamVjdC5lcnJvcikgewotICAgICAgICAgICAg
ICAgIG1lc3NhZ2VPYmplY3QuZXJyb3IuX19wcm90b19fID0gewotICAgICAgICAgICAgICAgICAg
ICBnZXREZXNjcmlwdGlvbjogZnVuY3Rpb24oKQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBzd2l0Y2godGhpcy5jb2RlKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY2FzZSAtMzI3MDA6IHJldHVybiAiUGFyc2UgZXJyb3IiOwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNhc2UgLTMyNjAwOiByZXR1cm4gIkludmFsaWQgUmVxdWVzdCI7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAtMzI2MDE6IHJldHVybiAiTWV0aG9k
IG5vdCBmb3VuZCI7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAtMzI2MDI6IHJl
dHVybiAiSW52YWxpZCBwYXJhbXMiOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2Ug
LTMyNjAzOiByZXR1cm4gIkludGVybmFsIGVycm9yIjs7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY2FzZSAtMzIwMDA6IHJldHVybiAiU2VydmVyIGVycm9yIjsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfSwKLQotICAgICAgICAgICAgICAgICAg
ICB0b1N0cmluZzogZnVuY3Rpb24oKQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICB2YXIgZGVzY3JpcHRpb24gPSJVbmtub3duIGVycm9yIGNvZGUiOwotICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RGVzY3JpcHRpb24oKSArICIoIiAr
IHRoaXMuY29kZSArICIpOiAiICsgdGhpcy5tZXNzYWdlICsgIi4iICsgKHRoaXMuZGF0YSA/ICIg
IiArIHRoaXMuZGF0YS5qb2luKCIgIikgOiAiIik7Ci0gICAgICAgICAgICAgICAgICAgIH0sCi0K
LSAgICAgICAgICAgICAgICAgICAgZ2V0TWVzc2FnZTogZnVuY3Rpb24oKQotICAgICAgICAgICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5tZXNzYWdlOwot
ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAg
ICAgaWYgKG1lc3NhZ2VPYmplY3QuZXJyb3IuY29kZSAhPT0gLTMyMDAwKQotICAgICAgICAgICAg
ICAgICAgICB0aGlzLnJlcG9ydFByb3RvY29sRXJyb3IobWVzc2FnZU9iamVjdCk7Ci0gICAgICAg
ICAgICB9Ci0KLSAgICAgICAgICAgIHZhciBhcmd1bWVudHMgPSBbXTsKLSAgICAgICAgICAgIGlm
IChtZXNzYWdlT2JqZWN0LnJlc3VsdCkgewotICAgICAgICAgICAgICAgIGZvciAodmFyIGtleSBp
biBtZXNzYWdlT2JqZWN0LnJlc3VsdCkKLSAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzLnB1
c2gobWVzc2FnZU9iamVjdC5yZXN1bHRba2V5XSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAg
ICAgIHZhciBjYWxsYmFjayA9IHRoaXMuX2NhbGxiYWNrc1ttZXNzYWdlT2JqZWN0LmlkXTsKLSAg
ICAgICAgICAgIGlmIChjYWxsYmFjaykgewotICAgICAgICAgICAgICAgIHZhciBwcm9jZXNzaW5n
U3RhcnRUaW1lOwotICAgICAgICAgICAgICAgIGlmICh0aGlzLmR1bXBJbnNwZWN0b3JUaW1lU3Rh
dHMgJiYgY2FsbGJhY2subWV0aG9kTmFtZSkKLSAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc2lu
Z1N0YXJ0VGltZSA9IERhdGUubm93KCk7Ci0KLSAgICAgICAgICAgICAgICBhcmd1bWVudHMudW5z
aGlmdChtZXNzYWdlT2JqZWN0LmVycm9yKTsKLSAgICAgICAgICAgICAgICBjYWxsYmFjay5hcHBs
eShudWxsLCBhcmd1bWVudHMpOwotICAgICAgICAgICAgICAgIC0tdGhpcy5fcGVuZGluZ1Jlc3Bv
bnNlc0NvdW50OwotICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9jYWxsYmFja3NbbWVzc2Fn
ZU9iamVjdC5pZF07Ci0KLSAgICAgICAgICAgICAgICBpZiAodGhpcy5kdW1wSW5zcGVjdG9yVGlt
ZVN0YXRzICYmIGNhbGxiYWNrLm1ldGhvZE5hbWUpCi0gICAgICAgICAgICAgICAgICAgIGNvbnNv
bGUubG9nKCJ0aW1lLXN0YXRzOiAiICsgY2FsbGJhY2subWV0aG9kTmFtZSArICIgPSAiICsgKHBy
b2Nlc3NpbmdTdGFydFRpbWUgLSBjYWxsYmFjay5zZW5kUmVxdWVzdFRpbWUpICsgIiArICIgKyAo
RGF0ZS5ub3coKSAtIHByb2Nlc3NpbmdTdGFydFRpbWUpKTsKLSAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgaWYgKHRoaXMuX3NjcmlwdHMgJiYgIXRoaXMuX3BlbmRpbmdSZXNwb25zZXNDb3Vu
dCkKLSAgICAgICAgICAgICAgICB0aGlzLnJ1bkFmdGVyUGVuZGluZ0Rpc3BhdGNoZXMoKTsKLQot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgdmFyIG1l
dGhvZCA9IG1lc3NhZ2VPYmplY3QubWV0aG9kLnNwbGl0KCIuIik7Ci0gICAgICAgICAgICB2YXIg
ZG9tYWluTmFtZSA9IG1ldGhvZFswXTsKLSAgICAgICAgICAgIHZhciBmdW5jdGlvbk5hbWUgPSBt
ZXRob2RbMV07Ci0gICAgICAgICAgICBpZiAoIShkb21haW5OYW1lIGluIHRoaXMuX2RvbWFpbkRp
c3BhdGNoZXJzKSkgewotICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoIlByb3RvY29sIEVy
cm9yOiB0aGUgbWVzc2FnZSBpcyBmb3Igbm9uLWV4aXN0aW5nIGRvbWFpbiAnIiArIGRvbWFpbk5h
bWUgKyAiJyIpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIHZhciBkaXNwYXRjaGVyID0gdGhpcy5fZG9tYWluRGlzcGF0Y2hlcnNbZG9tYWluTmFt
ZV07Ci0gICAgICAgICAgICBpZiAoIShmdW5jdGlvbk5hbWUgaW4gZGlzcGF0Y2hlcikpIHsKLSAg
ICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCJQcm90b2NvbCBFcnJvcjogQXR0ZW1wdGVkIHRv
IGRpc3BhdGNoIGFuIHVuaW1wbGVtZW50ZWQgbWV0aG9kICciICsgbWVzc2FnZU9iamVjdC5tZXRo
b2QgKyAiJyIpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgaWYgKCF0aGlzLl9ldmVudEFyZ3NbbWVzc2FnZU9iamVjdC5tZXRob2RdKSB7Ci0g
ICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcigiUHJvdG9jb2wgRXJyb3I6IEF0dGVtcHRlZCB0
byBkaXNwYXRjaCBhbiB1bnNwZWNpZmllZCBtZXRob2QgJyIgKyBtZXNzYWdlT2JqZWN0Lm1ldGhv
ZCArICInIik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICB2YXIgcGFyYW1zID0gW107Ci0gICAgICAgICAgICBpZiAobWVzc2FnZU9iamVjdC5w
YXJhbXMpIHsKLSAgICAgICAgICAgICAgICB2YXIgcGFyYW1OYW1lcyA9IHRoaXMuX2V2ZW50QXJn
c1ttZXNzYWdlT2JqZWN0Lm1ldGhvZF07Ci0gICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBwYXJhbU5hbWVzLmxlbmd0aDsgKytpKQotICAgICAgICAgICAgICAgICAgICBwYXJhbXMu
cHVzaChtZXNzYWdlT2JqZWN0LnBhcmFtc1twYXJhbU5hbWVzW2ldXSk7Ci0gICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgIHZhciBwcm9jZXNzaW5nU3RhcnRUaW1lOwotICAgICAgICAgICAgaWYg
KHRoaXMuZHVtcEluc3BlY3RvclRpbWVTdGF0cykKLSAgICAgICAgICAgICAgICBwcm9jZXNzaW5n
U3RhcnRUaW1lID0gRGF0ZS5ub3coKTsKLQotICAgICAgICAgICAgZGlzcGF0Y2hlcltmdW5jdGlv
bk5hbWVdLmFwcGx5KGRpc3BhdGNoZXIsIHBhcmFtcyk7Ci0KLSAgICAgICAgICAgIGlmICh0aGlz
LmR1bXBJbnNwZWN0b3JUaW1lU3RhdHMpCi0gICAgICAgICAgICAgICAgY29uc29sZS5sb2coInRp
bWUtc3RhdHM6ICIgKyBtZXNzYWdlT2JqZWN0Lm1ldGhvZCArICIgPSAiICsgKERhdGUubm93KCkg
LSBwcm9jZXNzaW5nU3RhcnRUaW1lKSk7Ci0gICAgICAgIH0KLSAgICB9LAotCi0gICAgcmVwb3J0
UHJvdG9jb2xFcnJvcjogZnVuY3Rpb24obWVzc2FnZU9iamVjdCkKLSAgICB7Ci0gICAgICAgIGNv
bnNvbGUuZXJyb3IoIlJlcXVlc3Qgd2l0aCBpZCA9ICIgKyBtZXNzYWdlT2JqZWN0LmlkICsgIiBm
YWlsZWQuICIgKyBtZXNzYWdlT2JqZWN0LmVycm9yKTsKLSAgICB9LAotCi0gICAgcnVuQWZ0ZXJQ
ZW5kaW5nRGlzcGF0Y2hlczogZnVuY3Rpb24oc2NyaXB0KQotICAgIHsKLSAgICAgICAgaWYgKCF0
aGlzLl9zY3JpcHRzKQotICAgICAgICAgICAgdGhpcy5fc2NyaXB0cyA9IFtdOwotCi0gICAgICAg
IGlmIChzY3JpcHQpCi0gICAgICAgICAgICB0aGlzLl9zY3JpcHRzLnB1c2goc2NyaXB0KTsKLQot
ICAgICAgICBpZiAoIXRoaXMuX3BlbmRpbmdSZXNwb25zZXNDb3VudCkgewotICAgICAgICAgICAg
dmFyIHNjcmlwdHMgPSB0aGlzLl9zY3JpcHRzOwotICAgICAgICAgICAgdGhpcy5fc2NyaXB0cyA9
IFtdCi0gICAgICAgICAgICBmb3IgKHZhciBpZCA9IDA7IGlkIDwgc2NyaXB0cy5sZW5ndGg7ICsr
aWQpCi0gICAgICAgICAgICAgICAgIHNjcmlwdHNbaWRdLmNhbGwodGhpcyk7Ci0gICAgICAgIH0K
LSAgICB9Ci19Ci0KLUluc3BlY3RvckJhY2tlbmQgPSBuZXcgSW5zcGVjdG9yQmFja2VuZFN0dWIo
KTsiIiIpCi0KLSAgICBwYXJhbV9jb250YWluZXJfYWNjZXNzX2NvZGUgPSAiIiIKLSAgICBSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0PiBwYXJhbXNDb250YWluZXIgPSByZXF1ZXN0TWVzc2FnZU9iamVj
dC0+Z2V0T2JqZWN0KCJwYXJhbXMiKTsKLSAgICBJbnNwZWN0b3JPYmplY3QqIHBhcmFtc0NvbnRh
aW5lclB0ciA9IHBhcmFtc0NvbnRhaW5lci5nZXQoKTsKLSAgICBJbnNwZWN0b3JBcnJheSogcHJv
dG9jb2xFcnJvcnNQdHIgPSBwcm90b2NvbEVycm9ycy5nZXQoKTsKLSIiIgotCi0KLXR5cGVfbWFw
ID0gVHlwZU1hcChqc29uX2FwaSkKLQotCi1jbGFzcyBHZW5lcmF0b3I6Ci0gICAgZnJvbnRlbmRf
Y2xhc3NfZmllbGRfbGluZXMgPSBbXQotICAgIGZyb250ZW5kX2RvbWFpbl9jbGFzc19saW5lcyA9
IFtdCi0KLSAgICBtZXRob2RfbmFtZV9lbnVtX2xpc3QgPSBbXQotICAgIGJhY2tlbmRfbWV0aG9k
X2RlY2xhcmF0aW9uX2xpc3QgPSBbXQotICAgIGJhY2tlbmRfbWV0aG9kX2ltcGxlbWVudGF0aW9u
X2xpc3QgPSBbXQotICAgIGJhY2tlbmRfbWV0aG9kX25hbWVfZGVjbGFyYXRpb25fbGlzdCA9IFtd
Ci0gICAgbWV0aG9kX2hhbmRsZXJfbGlzdCA9IFtdCi0gICAgZnJvbnRlbmRfbWV0aG9kX2xpc3Qg
PSBbXQotICAgIGJhY2tlbmRfanNfaW5pdGlhbGl6ZXJfbGlzdCA9IFtdCi0gICAgYmFja2VuZF9q
c19ldmVudF9saXN0ID0gW10KLSAgICBiYWNrZW5kX2pzX2RvbWFpbl9kaXNwYXRjaGVyX2xpc3Qg
PSBbXQotCi0gICAgYmFja2VuZF9jb25zdHJ1Y3Rvcl9wYXJhbV9saXN0ID0gW10KLSAgICBiYWNr
ZW5kX2NvbnN0cnVjdG9yX2luaXRfbGlzdCA9IFtdCi0gICAgYmFja2VuZF9maWVsZF9saXN0ID0g
W10KLSAgICBiYWNrZW5kX2ZvcndhcmRfbGlzdCA9IFtdCi0gICAgYmFja2VuZF9pbmNsdWRlX2xp
c3QgPSBbXQotICAgIGZyb250ZW5kX2NvbnN0cnVjdG9yX2luaXRfbGlzdCA9IFtdCi0KLSAgICBA
c3RhdGljbWV0aG9kCi0gICAgZGVmIGdvKCk6Ci0gICAgICAgIGZvciBqc29uX2RvbWFpbiBpbiBq
c29uX2FwaVsiZG9tYWlucyJdOgotICAgICAgICAgICAgZG9tYWluX25hbWUgPSBqc29uX2RvbWFp
blsiZG9tYWluIl0KLSAgICAgICAgICAgIGRvbWFpbl9uYW1lX2xvd2VyID0gZG9tYWluX25hbWUu
bG93ZXIoKQotCi0gICAgICAgICAgICBkb21haW5fZGF0YSA9IERvbWFpbk5hbWVGaXhlcy5nZXRf
Zml4ZWRfZGF0YShkb21haW5fbmFtZSkKLQotICAgICAgICAgICAgaWYgZG9tYWluX2RhdGEuaXNf
ZGlzYWJsZWQoZGVmaW5lc19tYXApOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAg
ICAgICAgIGFnZW50X2ZpZWxkX25hbWUgPSBkb21haW5fZGF0YS5hZ2VudF9maWVsZF9uYW1lCi0K
LSAgICAgICAgICAgIGZyb250ZW5kX21ldGhvZF9kZWNsYXJhdGlvbl9saW5lcyA9IFtdCi0gICAg
ICAgICAgICBpZiAiZXZlbnRzIiBpbiBqc29uX2RvbWFpbjoKLSAgICAgICAgICAgICAgICBmb3Ig
anNvbl9ldmVudCBpbiBqc29uX2RvbWFpblsiZXZlbnRzIl06Ci0gICAgICAgICAgICAgICAgICAg
IEdlbmVyYXRvci5wcm9jZXNzX2V2ZW50KGpzb25fZXZlbnQsIGRvbWFpbl9uYW1lLCBmcm9udGVu
ZF9tZXRob2RfZGVjbGFyYXRpb25fbGluZXMpCi0KLSAgICAgICAgICAgICAgICBHZW5lcmF0b3Iu
ZnJvbnRlbmRfY2xhc3NfZmllbGRfbGluZXMuYXBwZW5kKCIgICAgJXMgbV8lcztcbiIgJSAoZG9t
YWluX25hbWUsIGRvbWFpbl9uYW1lX2xvd2VyKSkKLSAgICAgICAgICAgICAgICBHZW5lcmF0b3Iu
ZnJvbnRlbmRfY29uc3RydWN0b3JfaW5pdF9saXN0LmFwcGVuZCgiICAgICwgbV8lcyhpbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwpXG4iICUgZG9tYWluX25hbWVfbG93ZXIpCi0gICAgICAgICAgICAg
ICAgR2VuZXJhdG9yLmZyb250ZW5kX2RvbWFpbl9jbGFzc19saW5lcy5hcHBlbmQoVGVtcGxhdGVz
LmZyb250ZW5kX2RvbWFpbl9jbGFzcy5zdWJzdGl0dXRlKE5vbmUsCi0gICAgICAgICAgICAgICAg
ICAgIGRvbWFpbkNsYXNzTmFtZT1kb21haW5fbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgZG9t
YWluRmllbGROYW1lPWRvbWFpbl9uYW1lX2xvd2VyLAotICAgICAgICAgICAgICAgICAgICBmcm9u
dGVuZERvbWFpbk1ldGhvZERlY2xhcmF0aW9ucz1qb2luKGZyb250ZW5kX21ldGhvZF9kZWNsYXJh
dGlvbl9saW5lcywgIiIpKSkKLSAgICAgICAgICAgIGlmICJjb21tYW5kcyIgaW4ganNvbl9kb21h
aW46Ci0gICAgICAgICAgICAgICAgZm9yIGpzb25fY29tbWFuZCBpbiBqc29uX2RvbWFpblsiY29t
bWFuZHMiXToKLSAgICAgICAgICAgICAgICAgICAgR2VuZXJhdG9yLnByb2Nlc3NfY29tbWFuZChq
c29uX2NvbW1hbmQsIGRvbWFpbl9uYW1lLCBhZ2VudF9maWVsZF9uYW1lKQotCi0gICAgICAgICAg
ICBpZiBub3QgZG9tYWluX2RhdGEuc2tpcF9qc19iaW5kOgotICAgICAgICAgICAgICAgIEdlbmVy
YXRvci5iYWNrZW5kX2pzX2RvbWFpbl9kaXNwYXRjaGVyX2xpc3QuYXBwZW5kKCIgICAgdGhpcy5y
ZWdpc3RlciVzRGlzcGF0Y2hlciA9IHRoaXMuX3JlZ2lzdGVyRG9tYWluRGlzcGF0Y2hlci5iaW5k
KHRoaXMsIFwiJXNcIik7XG4iICUgKGRvbWFpbl9uYW1lLCBkb21haW5fbmFtZSkpCi0KLSAgICAg
ICAgc29ydGVkX2pzb25fZG9tYWlucyA9IGxpc3QoanNvbl9hcGlbImRvbWFpbnMiXSkKLSAgICAg
ICAgc29ydGVkX2pzb25fZG9tYWlucy5zb3J0KGtleT1sYW1iZGEgbzogb1siZG9tYWluIl0pCi0K
LSAgICAgICAgZm9yIGpzb25fZG9tYWluIGluIHNvcnRlZF9qc29uX2RvbWFpbnM6Ci0gICAgICAg
ICAgICBkb21haW5fbmFtZSA9IGpzb25fZG9tYWluWyJkb21haW4iXQotCi0gICAgICAgICAgICBk
b21haW5fZGF0YSA9IERvbWFpbk5hbWVGaXhlcy5nZXRfZml4ZWRfZGF0YShkb21haW5fbmFtZSkK
LSAgICAgICAgICAgIGlmIGRvbWFpbl9kYXRhLmlzX2Rpc2FibGVkKGRlZmluZXNfbWFwKToKLSAg
ICAgICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgICAgICBpZiBkb21haW5fZGF0YS5oaWRk
ZW46Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIGFnZW50X3R5cGVfbmFt
ZSA9IGRvbWFpbl9kYXRhLmFnZW50X3R5cGVfbmFtZQotICAgICAgICAgICAgYWdlbnRfZmllbGRf
bmFtZSA9IGRvbWFpbl9kYXRhLmFnZW50X2ZpZWxkX25hbWUKLSAgICAgICAgICAgIEdlbmVyYXRv
ci5iYWNrZW5kX2NvbnN0cnVjdG9yX3BhcmFtX2xpc3QuYXBwZW5kKCIsICVzKiAlcyIgJSAoYWdl
bnRfdHlwZV9uYW1lLCBhZ2VudF9maWVsZF9uYW1lKSkKLSAgICAgICAgICAgIEdlbmVyYXRvci5i
YWNrZW5kX2NvbnN0cnVjdG9yX2luaXRfbGlzdC5hcHBlbmQoIiAgICAgICAgLCBtXyVzKCVzKSIg
JSAoYWdlbnRfZmllbGRfbmFtZSwgYWdlbnRfZmllbGRfbmFtZSkpCi0gICAgICAgICAgICBHZW5l
cmF0b3IuYmFja2VuZF9maWVsZF9saXN0LmFwcGVuZCgiICAgICVzKiBtXyVzOyIgJSAoYWdlbnRf
dHlwZV9uYW1lLCBhZ2VudF9maWVsZF9uYW1lKSkKLSAgICAgICAgICAgIEdlbmVyYXRvci5iYWNr
ZW5kX2ZvcndhcmRfbGlzdC5hcHBlbmQoImNsYXNzICVzOyIgJSBhZ2VudF90eXBlX25hbWUpCi0g
ICAgICAgICAgICBHZW5lcmF0b3IuYmFja2VuZF9pbmNsdWRlX2xpc3QuYXBwZW5kKCIjaW5jbHVk
ZSBcIiVzLmhcIiIgJSBhZ2VudF90eXBlX25hbWUpCi0KLSAgICBAc3RhdGljbWV0aG9kCi0gICAg
ZGVmIHByb2Nlc3NfZXZlbnQoanNvbl9ldmVudCwgZG9tYWluX25hbWUsIGZyb250ZW5kX21ldGhv
ZF9kZWNsYXJhdGlvbl9saW5lcyk6Ci0gICAgICAgIGV2ZW50X25hbWUgPSBqc29uX2V2ZW50WyJu
YW1lIl0KLSAgICAgICAgcGFyYW1ldGVyX2xpc3QgPSBbXQotICAgICAgICBtZXRob2RfbGluZV9s
aXN0ID0gW10KLSAgICAgICAgYmFja2VuZF9qc19ldmVudF9wYXJhbV9saXN0ID0gW10KLSAgICAg
ICAgaWYgInBhcmFtZXRlcnMiIGluIGpzb25fZXZlbnQ6Ci0gICAgICAgICAgICBtZXRob2RfbGlu
ZV9saXN0LmFwcGVuZCgiICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHBhcmFtc09iamVjdCA9
IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7XG4iKQotICAgICAgICAgICAgZm9yIGpzb25fcGFy
YW1ldGVyIGluIGpzb25fZXZlbnRbInBhcmFtZXRlcnMiXToKLSAgICAgICAgICAgICAgICBwYXJh
bWV0ZXJfbmFtZSA9IGpzb25fcGFyYW1ldGVyWyJuYW1lIl0KLQotICAgICAgICAgICAgICAgIHJh
d190eXBlID0gcmVzb2x2ZV9wYXJhbV9yYXdfdHlwZShqc29uX3BhcmFtZXRlciwgZG9tYWluX25h
bWUpCi0KLSAgICAgICAgICAgICAgICBqc29uX29wdGlvbmFsID0gIm9wdGlvbmFsIiBpbiBqc29u
X3BhcmFtZXRlciBhbmQganNvbl9wYXJhbWV0ZXJbIm9wdGlvbmFsIl0KLQotICAgICAgICAgICAg
ICAgIG9wdGlvbmFsX21hc2sgPSByYXdfdHlwZS5pc19ldmVudF9wYXJhbV9jaGVja19vcHRpb25h
bCgpCi0gICAgICAgICAgICAgICAgY190eXBlID0gcmF3X3R5cGUuZ2V0X2NfcGFyYW1fdHlwZShQ
YXJhbVR5cGUuRVZFTlQsIGpzb25fb3B0aW9uYWwpCi0KLSAgICAgICAgICAgICAgICBzZXR0ZXJf
dHlwZSA9IHJhd190eXBlLmdldF9zZXR0ZXJfbmFtZSgpCi0KLSAgICAgICAgICAgICAgICBvcHRp
b25hbCA9IG9wdGlvbmFsX21hc2sgYW5kIGpzb25fb3B0aW9uYWwKLQotICAgICAgICAgICAgICAg
IHBhcmFtZXRlcl9saXN0LmFwcGVuZCgiJXMgJXMiICUgKGNfdHlwZS5nZXRfdGV4dCgpLCBwYXJh
bWV0ZXJfbmFtZSkpCi0KLSAgICAgICAgICAgICAgICBzZXR0ZXJfYXJndW1lbnQgPSBjX3R5cGUu
Z2V0X3NldHRlcl9mb3JtYXQoKSAlIHBhcmFtZXRlcl9uYW1lCi0KLSAgICAgICAgICAgICAgICBz
ZXR0ZXJfY29kZSA9ICIgICAgcGFyYW1zT2JqZWN0LT5zZXQlcyhcIiVzXCIsICVzKTtcbiIgJSAo
c2V0dGVyX3R5cGUsIHBhcmFtZXRlcl9uYW1lLCBzZXR0ZXJfYXJndW1lbnQpCi0gICAgICAgICAg
ICAgICAgaWYgb3B0aW9uYWw6Ci0gICAgICAgICAgICAgICAgICAgIHNldHRlcl9jb2RlID0gKCIg
ICAgaWYgKCVzKVxuICAgICIgJSBwYXJhbWV0ZXJfbmFtZSkgKyBzZXR0ZXJfY29kZQotICAgICAg
ICAgICAgICAgIG1ldGhvZF9saW5lX2xpc3QuYXBwZW5kKHNldHRlcl9jb2RlKQotCi0gICAgICAg
ICAgICAgICAgYmFja2VuZF9qc19ldmVudF9wYXJhbV9saXN0LmFwcGVuZCgiXCIlc1wiIiAlIHBh
cmFtZXRlcl9uYW1lKQotICAgICAgICAgICAgbWV0aG9kX2xpbmVfbGlzdC5hcHBlbmQoIiAgICAl
c01lc3NhZ2UtPnNldE9iamVjdChcInBhcmFtc1wiLCBwYXJhbXNPYmplY3QpO1xuIiAlIGV2ZW50
X25hbWUpCi0gICAgICAgIGZyb250ZW5kX21ldGhvZF9kZWNsYXJhdGlvbl9saW5lcy5hcHBlbmQo
Ci0gICAgICAgICAgICAiICAgICAgICB2b2lkICVzKCVzKTtcbiIgJSAoZXZlbnRfbmFtZSwgam9p
bihwYXJhbWV0ZXJfbGlzdCwgIiwgIikpKQotCi0gICAgICAgIEdlbmVyYXRvci5mcm9udGVuZF9t
ZXRob2RfbGlzdC5hcHBlbmQoVGVtcGxhdGVzLmZyb250ZW5kX21ldGhvZC5zdWJzdGl0dXRlKE5v
bmUsCi0gICAgICAgICAgICBkb21haW5OYW1lPWRvbWFpbl9uYW1lLCBldmVudE5hbWU9ZXZlbnRf
bmFtZSwKLSAgICAgICAgICAgIHBhcmFtZXRlcnM9am9pbihwYXJhbWV0ZXJfbGlzdCwgIiwgIiks
Ci0gICAgICAgICAgICBjb2RlPWpvaW4obWV0aG9kX2xpbmVfbGlzdCwgIiIpKSkKLQotICAgICAg
ICBHZW5lcmF0b3IuYmFja2VuZF9qc19ldmVudF9saXN0LmFwcGVuZCgiICAgIHRoaXMuX2V2ZW50
QXJnc1tcIiVzLiVzXCJdID0gWyVzXTtcbiIgJSAoCi0gICAgICAgICAgICBkb21haW5fbmFtZSwg
ZXZlbnRfbmFtZSwgam9pbihiYWNrZW5kX2pzX2V2ZW50X3BhcmFtX2xpc3QsICIsICIpKSkKLQot
ICAgIEBzdGF0aWNtZXRob2QKLSAgICBkZWYgcHJvY2Vzc19jb21tYW5kKGpzb25fY29tbWFuZCwg
ZG9tYWluX25hbWUsIGFnZW50X2ZpZWxkX25hbWUpOgotICAgICAgICBqc29uX2NvbW1hbmRfbmFt
ZSA9IGpzb25fY29tbWFuZFsibmFtZSJdCi0gICAgICAgIEdlbmVyYXRvci5tZXRob2RfbmFtZV9l
bnVtX2xpc3QuYXBwZW5kKCIgICAgICAgIGslc18lc0NtZCwiICUgKGRvbWFpbl9uYW1lLCBqc29u
X2NvbW1hbmRbIm5hbWUiXSkpCi0gICAgICAgIEdlbmVyYXRvci5tZXRob2RfaGFuZGxlcl9saXN0
LmFwcGVuZCgiICAgICAgICAmSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OiVzXyVzLCIgJSAo
ZG9tYWluX25hbWUsIGpzb25fY29tbWFuZF9uYW1lKSkKLSAgICAgICAgR2VuZXJhdG9yLmJhY2tl
bmRfbWV0aG9kX2RlY2xhcmF0aW9uX2xpc3QuYXBwZW5kKCIgICAgdm9pZCAlc18lcyhsb25nIGNh
bGxJZCwgSW5zcGVjdG9yT2JqZWN0KiByZXF1ZXN0TWVzc2FnZU9iamVjdCk7IiAlIChkb21haW5f
bmFtZSwganNvbl9jb21tYW5kX25hbWUpKQotCi0gICAgICAgIG1ldGhvZF9pbl9jb2RlID0gIiIK
LSAgICAgICAgbWV0aG9kX291dF9jb2RlID0gIiIKLSAgICAgICAgYWdlbnRfY2FsbF9wYXJhbV9s
aXN0ID0gW10KLSAgICAgICAgcmVzcG9uc2VfY29va19saXN0ID0gW10KLSAgICAgICAgcmVxdWVz
dF9tZXNzYWdlX3BhcmFtID0gIiIKLSAgICAgICAganNfcGFyYW1ldGVyc190ZXh0ID0gIiIKLSAg
ICAgICAgaWYgInBhcmFtZXRlcnMiIGluIGpzb25fY29tbWFuZDoKLSAgICAgICAgICAgIGpzb25f
cGFyYW1zID0ganNvbl9jb21tYW5kWyJwYXJhbWV0ZXJzIl0KLSAgICAgICAgICAgIG1ldGhvZF9p
bl9jb2RlICs9IFRlbXBsYXRlcy5wYXJhbV9jb250YWluZXJfYWNjZXNzX2NvZGUKLSAgICAgICAg
ICAgIHJlcXVlc3RfbWVzc2FnZV9wYXJhbSA9ICIgcmVxdWVzdE1lc3NhZ2VPYmplY3QiCi0gICAg
ICAgICAgICBqc19wYXJhbV9saXN0ID0gW10KLQotICAgICAgICAgICAgZm9yIGpzb25fcGFyYW1l
dGVyIGluIGpzb25fcGFyYW1zOgotICAgICAgICAgICAgICAgIGpzb25fcGFyYW1fbmFtZSA9IGpz
b25fcGFyYW1ldGVyWyJuYW1lIl0KLSAgICAgICAgICAgICAgICBwYXJhbV9yYXdfdHlwZSA9IHJl
c29sdmVfcGFyYW1fcmF3X3R5cGUoanNvbl9wYXJhbWV0ZXIsIGRvbWFpbl9uYW1lKQotCi0gICAg
ICAgICAgICAgICAgdmFyX3R5cGUgPSBwYXJhbV9yYXdfdHlwZS5nZXRfY19wYXJhbV90eXBlKFBh
cmFtVHlwZS5JTlBVVCwgTm9uZSkKLSAgICAgICAgICAgICAgICBnZXR0ZXJfbmFtZSA9IHBhcmFt
X3Jhd190eXBlLmdldF9nZXR0ZXJfbmFtZSgpCi0KLSAgICAgICAgICAgICAgICBpZiAib3B0aW9u
YWwiIGluIGpzb25fcGFyYW1ldGVyIGFuZCBqc29uX3BhcmFtZXRlclsib3B0aW9uYWwiXToKLSAg
ICAgICAgICAgICAgICAgICAgY29kZSA9ICgiICAgIGJvb2wgJXNfdmFsdWVGb3VuZCA9IGZhbHNl
O1xuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgJXMgaW5fJXMgPSBnZXQlcyhw
YXJhbXNDb250YWluZXJQdHIsIFwiJXNcIiwgJiVzX3ZhbHVlRm91bmQsIHByb3RvY29sRXJyb3Jz
UHRyKTtcbiIgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgKGpzb25fcGFyYW1fbmFtZSwg
dmFyX3R5cGUuZ2V0X3RleHQoKSwganNvbl9wYXJhbV9uYW1lLCBnZXR0ZXJfbmFtZSwganNvbl9w
YXJhbV9uYW1lLCBqc29uX3BhcmFtX25hbWUpKQotICAgICAgICAgICAgICAgICAgICBwYXJhbSA9
ICIsICVzX3ZhbHVlRm91bmQgPyAmaW5fJXMgOiAwIiAlIChqc29uX3BhcmFtX25hbWUsIGpzb25f
cGFyYW1fbmFtZSkKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBj
b2RlID0gKCIgICAgJXMgaW5fJXMgPSBnZXQlcyhwYXJhbXNDb250YWluZXJQdHIsIFwiJXNcIiwg
MCwgcHJvdG9jb2xFcnJvcnNQdHIpO1xuIiAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
KHZhcl90eXBlLmdldF90ZXh0KCksIGpzb25fcGFyYW1fbmFtZSwgZ2V0dGVyX25hbWUsIGpzb25f
cGFyYW1fbmFtZSkpCi0gICAgICAgICAgICAgICAgICAgIHBhcmFtID0gIiwgaW5fJXMiICUganNv
bl9wYXJhbV9uYW1lCi0KLSAgICAgICAgICAgICAgICBtZXRob2RfaW5fY29kZSArPSBjb2RlCi0g
ICAgICAgICAgICAgICAgYWdlbnRfY2FsbF9wYXJhbV9saXN0LmFwcGVuZChwYXJhbSkKLQotICAg
ICAgICAgICAgICAgIGpzX2JpbmRfdHlwZSA9IHBhcmFtX3Jhd190eXBlLmdldF9qc19iaW5kX3R5
cGUoKQotICAgICAgICAgICAgICAgIGpzX3BhcmFtX3RleHQgPSAiXCIlc1wiOiB7XCJvcHRpb25h
bFwiOiAlcywgXCJ0eXBlXCI6IFwiJXNcIn0iICUgKAotICAgICAgICAgICAgICAgICAgICBqc29u
X3BhcmFtX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICgidHJ1ZSIgaWYgKCJvcHRpb25hbCIg
aW4ganNvbl9wYXJhbWV0ZXIgYW5kIGpzb25fcGFyYW1ldGVyWyJvcHRpb25hbCJdKSBlbHNlICJm
YWxzZSIpLAotICAgICAgICAgICAgICAgICAgICBqc19iaW5kX3R5cGUpCi0KLSAgICAgICAgICAg
ICAgICBqc19wYXJhbV9saXN0LmFwcGVuZChqc19wYXJhbV90ZXh0KQotCi0gICAgICAgICAgICBq
c19wYXJhbWV0ZXJzX3RleHQgPSAiLCBcInBhcmFtc1wiOiB7IiArIGpvaW4oanNfcGFyYW1fbGlz
dCwgIiwgIikgKyAifSIKLQotICAgICAgICByZXNwb25zZV9jb29rX3RleHQgPSAiIgotICAgICAg
ICBpZiAicmV0dXJucyIgaW4ganNvbl9jb21tYW5kOgotICAgICAgICAgICAgbWV0aG9kX291dF9j
b2RlICs9ICJcbiIKLSAgICAgICAgICAgIGZvciBqc29uX3JldHVybiBpbiBqc29uX2NvbW1hbmRb
InJldHVybnMiXToKLQotICAgICAgICAgICAgICAgIGpzb25fcmV0dXJuX25hbWUgPSBqc29uX3Jl
dHVyblsibmFtZSJdCi0gICAgICAgICAgICAgICAgcmF3X3R5cGUgPSByZXNvbHZlX3BhcmFtX3Jh
d190eXBlKGpzb25fcmV0dXJuLCBkb21haW5fbmFtZSkKLSAgICAgICAgICAgICAgICBzZXR0ZXJf
dHlwZSA9IHJhd190eXBlLmdldF9zZXR0ZXJfbmFtZSgpCi0gICAgICAgICAgICAgICAgaW5pdGlh
bGl6ZXIgPSByYXdfdHlwZS5nZXRfY19pbml0aWFsaXplcigpCi0gICAgICAgICAgICAgICAgdmFy
X3R5cGUgPSByYXdfdHlwZS5nZXRfY19wYXJhbV90eXBlKFBhcmFtVHlwZS5PVVRQVVQsIE5vbmUp
Ci0KLSAgICAgICAgICAgICAgICBjb2RlID0gIiAgICAlcyBvdXRfJXMgPSAlcztcbiIgJSAodmFy
X3R5cGUuZ2V0X3RleHQoKSwganNvbl9yZXR1cm5fbmFtZSwgaW5pdGlhbGl6ZXIpCi0gICAgICAg
ICAgICAgICAgcGFyYW0gPSAiLCAmb3V0XyVzIiAlIGpzb25fcmV0dXJuX25hbWUKLSAgICAgICAg
ICAgICAgICBjb29rID0gIiAgICAgICAgcmVzdWx0LT5zZXQlcyhcIiVzXCIsIG91dF8lcyk7XG4i
ICUgKHNldHRlcl90eXBlLCBqc29uX3JldHVybl9uYW1lLCBqc29uX3JldHVybl9uYW1lKQotICAg
ICAgICAgICAgICAgIGlmIHZhcl90eXBlLmdldF90ZXh0KCkgPT0gImJvb2wiIGFuZCAib3B0aW9u
YWwiIGluIGpzb25fcmV0dXJuIGFuZCBqc29uX3JldHVyblsib3B0aW9uYWwiXToKLSAgICAgICAg
ICAgICAgICAgICAgY29vayA9ICgiICAgICAgICBpZiAob3V0XyVzKVxuICAgICIgJSBqc29uX3Jl
dHVybl9uYW1lKSArIGNvb2sKLQotICAgICAgICAgICAgICAgIG1ldGhvZF9vdXRfY29kZSArPSBj
b2RlCi0gICAgICAgICAgICAgICAgYWdlbnRfY2FsbF9wYXJhbV9saXN0LmFwcGVuZChwYXJhbSkK
LSAgICAgICAgICAgICAgICByZXNwb25zZV9jb29rX2xpc3QuYXBwZW5kKGNvb2spCi0gICAgICAg
ICAgICByZXNwb25zZV9jb29rX3RleHQgPSAiICAgIGlmICghcHJvdG9jb2xFcnJvcnMtPmxlbmd0
aCgpICYmICFlcnJvci5sZW5ndGgoKSkge1xuJXMgICAgfVxuIiAlIGpvaW4ocmVzcG9uc2VfY29v
a19saXN0LCAiIikKLQotICAgICAgICBHZW5lcmF0b3IuYmFja2VuZF9tZXRob2RfaW1wbGVtZW50
YXRpb25fbGlzdC5hcHBlbmQoVGVtcGxhdGVzLmJhY2tlbmRfbWV0aG9kLnN1YnN0aXR1dGUoTm9u
ZSwKLSAgICAgICAgICAgIGRvbWFpbk5hbWU9ZG9tYWluX25hbWUsIG1ldGhvZE5hbWU9anNvbl9j
b21tYW5kX25hbWUsCi0gICAgICAgICAgICBhZ2VudEZpZWxkPSJtXyIgKyBhZ2VudF9maWVsZF9u
YW1lLAotICAgICAgICAgICAgbWV0aG9kSW5Db2RlPW1ldGhvZF9pbl9jb2RlLAotICAgICAgICAg
ICAgbWV0aG9kT3V0Q29kZT1tZXRob2Rfb3V0X2NvZGUsCi0gICAgICAgICAgICBhZ2VudENhbGxQ
YXJhbXM9am9pbihhZ2VudF9jYWxsX3BhcmFtX2xpc3QsICIiKSwKLSAgICAgICAgICAgIHJlcXVl
c3RNZXNzYWdlT2JqZWN0PXJlcXVlc3RfbWVzc2FnZV9wYXJhbSwKLSAgICAgICAgICAgIHJlc3Bv
bnNlQ29vaz1yZXNwb25zZV9jb29rX3RleHQpKQotICAgICAgICBHZW5lcmF0b3IuYmFja2VuZF9t
ZXRob2RfbmFtZV9kZWNsYXJhdGlvbl9saXN0LmFwcGVuZCgiICAgIFwiJXMuJXNcIiwiICUgKGRv
bWFpbl9uYW1lLCBqc29uX2NvbW1hbmRfbmFtZSkpCi0KLSAgICAgICAgR2VuZXJhdG9yLmJhY2tl
bmRfanNfaW5pdGlhbGl6ZXJfbGlzdC5hcHBlbmQoIiAgICAgICAgdGhpcy5fcmVnaXN0ZXJEZWxl
Z2F0ZSgne1wibWV0aG9kXCI6IFwiJXMuJXNcIiVzLCBcImlkXCI6IDB9Jyk7XG4iICUgKGRvbWFp
bl9uYW1lLCBqc29uX2NvbW1hbmRfbmFtZSwganNfcGFyYW1ldGVyc190ZXh0KSkKLQotCi1HZW5l
cmF0b3IuZ28oKQotCi1iYWNrZW5kX2hfZmlsZSA9IG9wZW4ob3V0cHV0X2hlYWRlcl9kaXJuYW1l
ICsgIi9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oIiwgInciKQotYmFja2VuZF9jcHBfZmls
ZSA9IG9wZW4ob3V0cHV0X2NwcF9kaXJuYW1lICsgIi9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
ci5jcHAiLCAidyIpCi0KLWZyb250ZW5kX2hfZmlsZSA9IG9wZW4ob3V0cHV0X2hlYWRlcl9kaXJu
YW1lICsgIi9JbnNwZWN0b3JGcm9udGVuZC5oIiwgInciKQotZnJvbnRlbmRfY3BwX2ZpbGUgPSBv
cGVuKG91dHB1dF9jcHBfZGlybmFtZSArICIvSW5zcGVjdG9yRnJvbnRlbmQuY3BwIiwgInciKQot
Ci1iYWNrZW5kX2pzX2ZpbGUgPSBvcGVuKG91dHB1dF9jcHBfZGlybmFtZSArICIvSW5zcGVjdG9y
QmFja2VuZFN0dWIuanMiLCAidyIpCi0KLQotZnJvbnRlbmRfaF9maWxlLndyaXRlKFRlbXBsYXRl
cy5mcm9udGVuZF9oLnN1YnN0aXR1dGUoTm9uZSwKLSAgICAgICAgIGZpZWxkRGVjbGFyYXRpb25z
PWpvaW4oR2VuZXJhdG9yLmZyb250ZW5kX2NsYXNzX2ZpZWxkX2xpbmVzLCAiIiksCi0gICAgICAg
ICBkb21haW5DbGFzc0xpc3Q9am9pbihHZW5lcmF0b3IuZnJvbnRlbmRfZG9tYWluX2NsYXNzX2xp
bmVzLCAiIikpKQotCi1iYWNrZW5kX2hfZmlsZS53cml0ZShUZW1wbGF0ZXMuYmFja2VuZF9oLnN1
YnN0aXR1dGUoTm9uZSwKLSAgICBjb25zdHJ1Y3RvckluaXQ9am9pbihHZW5lcmF0b3IuYmFja2Vu
ZF9jb25zdHJ1Y3Rvcl9pbml0X2xpc3QsICJcbiIpLAotICAgIGNvbnN0cnVjdG9yUGFyYW1zPWpv
aW4oR2VuZXJhdG9yLmJhY2tlbmRfY29uc3RydWN0b3JfcGFyYW1fbGlzdCwgIiIpLAotICAgIG1l
dGhvZE5hbWVzRW51bUNvbnRlbnQ9am9pbihHZW5lcmF0b3IubWV0aG9kX25hbWVfZW51bV9saXN0
LCAiXG4iKSwKLSAgICBtZXRob2REZWNsYXJhdGlvbnM9am9pbihHZW5lcmF0b3IuYmFja2VuZF9t
ZXRob2RfZGVjbGFyYXRpb25fbGlzdCwgIlxuIiksCi0gICAgZmllbGREZWNsYXJhdGlvbnM9am9p
bihHZW5lcmF0b3IuYmFja2VuZF9maWVsZF9saXN0LCAiXG4iKSwKLSAgICBmb3J3YXJkRGVjbGFy
YXRpb25zPWpvaW4oR2VuZXJhdG9yLmJhY2tlbmRfZm9yd2FyZF9saXN0LCAiXG4iKSkpCi0KLWZy
b250ZW5kX2NwcF9maWxlLndyaXRlKFRlbXBsYXRlcy5mcm9udGVuZF9jcHAuc3Vic3RpdHV0ZShO
b25lLAotICAgIGNvbnN0cnVjdG9ySW5pdD1qb2luKEdlbmVyYXRvci5mcm9udGVuZF9jb25zdHJ1
Y3Rvcl9pbml0X2xpc3QsICIiKSwKLSAgICBtZXRob2RzPWpvaW4oR2VuZXJhdG9yLmZyb250ZW5k
X21ldGhvZF9saXN0LCAiXG4iKSkpCi0KLWJhY2tlbmRfY3BwX2ZpbGUud3JpdGUoVGVtcGxhdGVz
LmJhY2tlbmRfY3BwLnN1YnN0aXR1dGUoTm9uZSwKLSAgICBtZXRob2ROYW1lRGVjbGFyYXRpb25z
PWpvaW4oR2VuZXJhdG9yLmJhY2tlbmRfbWV0aG9kX25hbWVfZGVjbGFyYXRpb25fbGlzdCwgIlxu
IiksCi0gICAgaW5jbHVkZXM9am9pbihHZW5lcmF0b3IuYmFja2VuZF9pbmNsdWRlX2xpc3QsICJc
biIpLAotICAgIG1ldGhvZHM9am9pbihHZW5lcmF0b3IuYmFja2VuZF9tZXRob2RfaW1wbGVtZW50
YXRpb25fbGlzdCwgIlxuIiksCi0gICAgbWVzc2FnZUhhbmRsZXJzPWpvaW4oR2VuZXJhdG9yLm1l
dGhvZF9oYW5kbGVyX2xpc3QsICJcbiIpKSkKLQotYmFja2VuZF9qc19maWxlLndyaXRlKFRlbXBs
YXRlcy5iYWNrZW5kX2pzLnN1YnN0aXR1dGUoTm9uZSwKLSAgICBkZWxlZ2F0ZXM9am9pbihHZW5l
cmF0b3IuYmFja2VuZF9qc19pbml0aWFsaXplcl9saXN0LCAiIiksCi0gICAgZXZlbnRBcmdzPWpv
aW4oR2VuZXJhdG9yLmJhY2tlbmRfanNfZXZlbnRfbGlzdCwgIiIpLAotICAgIGRvbWFpbkRpc3Bh
dGNoZXJzPWpvaW4oR2VuZXJhdG9yLmJhY2tlbmRfanNfZG9tYWluX2Rpc3BhdGNoZXJfbGlzdCwg
IiIpKSkKLQotYmFja2VuZF9oX2ZpbGUuY2xvc2UoKQotYmFja2VuZF9jcHBfZmlsZS5jbG9zZSgp
Ci0KLWZyb250ZW5kX2hfZmlsZS5jbG9zZSgpCi1mcm9udGVuZF9jcHBfZmlsZS5jbG9zZSgpCi0K
LWJhY2tlbmRfanNfZmlsZS5jbG9zZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yLmpzb24gYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Lmpzb24KaW5kZXggYzU1YmU0MGIxNWJkMjFjZTljMDE2YTU4OWI3YjIzODVmODU5NmY3Zi4uMDcw
NWY2MDFmODVhOTkxNjg1MDdhYTZkYzE0ZWQxYzVlNDQxMzFkYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3IuanNvbgpAQCAtMTQwLDcgKzE0MCw3IEBACiAgICAgICAgICAgICAg
ICAgICAgIHsgIm5hbWUiOiAic2Vzc2lvbiIsICJ0eXBlIjogImJvb2xlYW4iLCAiZGVzY3JpcHRp
b24iOiAiVHJ1ZSBpbiBjYXNlIG9mIHNlc3Npb24gY29va2llLiIgfQogICAgICAgICAgICAgICAg
IF0sCiAgICAgICAgICAgICAgICAgImhpZGRlbiI6IHRydWUKLSAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0sCiAgICAgICAgIF0sCiAgICAgICAgICJjb21tYW5kcyI6IFsKICAgICAgICAgICAg
IHsKQEAgLTg0OCw3ICs4NDgsNyBAQAogICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImlz
TG9jYWxTdG9yYWdlIiwgInR5cGUiOiAiYm9vbGVhbiIsICJkZXNjcmlwdGlvbiI6ICJUcnVlIGZv
ciBsb2NhbCBzdG9yYWdlLiIgfSwKICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJpZCIs
ICJ0eXBlIjogIm51bWJlciIsICJkZXNjcmlwdGlvbiI6ICJFbnRyeSBpZCBmb3IgZnVydGhlciBy
ZWZlcmVuY2UuIiB9CiAgICAgICAgICAgICAgICAgXQotICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfSwKICAgICAgICAgXSwKICAgICAgICAgImNvbW1hbmRzIjogWwogICAgICAgICAgICAgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2dlbmVyYXRlLWluc3BlY3Rvci1p
ZGwgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZ2VuZXJhdGUtaW5zcGVjdG9yLWlkbApuZXcg
ZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xN2FlNjYxOWZiM2RhMmZjZGFhOWMwYzhjMzA3OTM0NGZhZmQxNTUxCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2dlbmVyYXRlLWluc3BlY3Rvci1p
ZGwKQEAgLTAsMCArMSwxNjAgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIyBDb3B5cmlnaHQg
KGMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIyAKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyMgCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKworaW1wb3J0IG9zLnBhdGgKK2ltcG9ydCBzeXMKKworcHJvZ3JhbV9uYW1lID0gb3Mu
cGF0aC5iYXNlbmFtZShfX2ZpbGVfXykKK2lmIGxlbihzeXMuYXJndikgPCA0IG9yIHN5cy5hcmd2
WzFdICE9ICItbyI6CisgICAgc3lzLnN0ZGVyci53cml0ZSgiVXNhZ2U6ICVzIC1vIE9VVFBVVF9G
SUxFIElOUFVUX0ZJTEVcbiIgJSBwcm9ncmFtX25hbWUpCisgICAgZXhpdCgxKQorCitvdXRwdXRf
cGF0aCA9IHN5cy5hcmd2WzJdCitpbnB1dF9wYXRoID0gc3lzLmFyZ3ZbM10KKworaW5wdXRfZmls
ZSA9IG9wZW4oaW5wdXRfcGF0aCwgInIiKQoranNvbl9zdHJpbmcgPSBpbnB1dF9maWxlLnJlYWQo
KQoranNvbl9zdHJpbmcgPSBqc29uX3N0cmluZy5yZXBsYWNlKCI6IHRydWUiLCAiOiBUcnVlIikK
K2pzb25fc3RyaW5nID0ganNvbl9zdHJpbmcucmVwbGFjZSgiOiBmYWxzZSIsICI6IGZhbHNlIikK
K2pzb25fYXBpID0gZXZhbChqc29uX3N0cmluZylbImRvbWFpbnMiXQorCitvdXRwdXRfZmlsZSA9
IG9wZW4ob3V0cHV0X3BhdGgsICJ3IikKK291dHB1dF9maWxlLndyaXRlKCIiIi8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgR29vZ2xlLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworIAorbW9kdWxlIGNvcmUgeyIiIikK
KwordHlwZV90cmFpdHMgPSB7CisgICAgInN0cmluZyI6ICJTdHJpbmciLAorICAgICJpbnRlZ2Vy
IjogImludCIsCisgICAgIm51bWJlciI6ICJkb3VibGUiLAorICAgICJib29sZWFuIjogImJvb2xl
YW4iLAorICAgICJhcnJheSI6ICJBcnJheSIsCisgICAgIm9iamVjdCI6ICJPYmplY3QiCit9CisK
K3JlZl90eXBlcyA9IHt9CisKK21hY3JvX3RyYWl0cyA9IHsKKyAgICAiRGF0YWJhc2UiOiAiU1FM
X0RBVEFCQVNFIiwKKyAgICAiRGVidWdnZXIiOiAiSkFWQVNDUklQVF9ERUJVR0dFUiIsCisgICAg
IkRPTURlYnVnZ2VyIjogIkpBVkFTQ1JJUFRfREVCVUdHRVIiLAorICAgICJQcm9maWxlciI6ICJK
QVZBU0NSSVBUX0RFQlVHR0VSIiwKKyAgICAiV29ya2VyIjogIldPUktFUlMiCit9CisKK2RlZiBm
dWxsX3F1YWxpZmllZF90eXBlX2lkKGRvbWFpbl9uYW1lLCB0eXBlX2lkKToKKyAgICBpZiB0eXBl
X2lkLmZpbmQoIi4iKSA9PSAtMToKKyAgICAgICByZXR1cm4gIiVzLiVzIiAlIChkb21haW5fbmFt
ZSwgdHlwZV9pZCkKKyAgICByZXR1cm4gdHlwZV9pZAorICAgIAorCitkZWYgcGFyYW1fdHlwZShk
b21haW5fbmFtZSwgcGFyYW0pOgorICAgIGlmICJ0eXBlIiBpbiBwYXJhbToKKyAgICAgICAgcmV0
dXJuIHR5cGVfdHJhaXRzW3BhcmFtWyJ0eXBlIl1dCisgICAgaWYgIiRyZWYiIGluIHBhcmFtOgor
ICAgICAgICB0eXBlX2lkID0gZnVsbF9xdWFsaWZpZWRfdHlwZV9pZChkb21haW5fbmFtZSwgcGFy
YW1bIiRyZWYiXSkKKyAgICAgICAgaWYgdHlwZV9pZCBpbiByZWZfdHlwZXM6CisgICAgICAgICAg
ICByZWZfdHlwZSA9IHJlZl90eXBlc1t0eXBlX2lkXQorICAgICAgICAgICAgcmV0dXJuIHR5cGVf
dHJhaXRzW3JlZl90eXBlWyJ0eXBlIl1dCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBwcmlu
dCgiVHlwZSBub3QgZm91bmQ6ICIgKyB0eXBlX2lkKQorICAgICAgICAgICAgcmV0dXJuICIhISBU
eXBlIG5vdCBmb3VuZDogIiArIHR5cGVfaWQKKworZm9yIGRvbWFpbiBpbiBqc29uX2FwaToKKyAg
ICBkb21haW5fbmFtZSA9IGRvbWFpblsiZG9tYWluIl0KKyAgICBpZiAidHlwZXMiIGluIGRvbWFp
bjoKKyAgICAgICAgZm9yIHR5cGUgaW4gZG9tYWluWyJ0eXBlcyJdOgorICAgICAgICAgICAgdHlw
ZV9pZCA9IGZ1bGxfcXVhbGlmaWVkX3R5cGVfaWQoZG9tYWluX25hbWUsIHR5cGVbImlkIl0pCisg
ICAgICAgICAgICByZWZfdHlwZXNbdHlwZV9pZF0gPSB0eXBlOworCitmb3IgZG9tYWluIGluIGpz
b25fYXBpOgorICAgIGRvbWFpbl9uYW1lID0gZG9tYWluWyJkb21haW4iXQorICAgIGlmIGRvbWFp
bl9uYW1lIGluIG1hY3JvX3RyYWl0czoKKyAgICAgICAgb3V0cHV0X2ZpbGUud3JpdGUoIlxuI2lm
IGRlZmluZWQoRU5BQkxFXyVzKSAmJiBFTkFCTEVfJXMiICUgKG1hY3JvX3RyYWl0c1tkb21haW5f
bmFtZV0sIG1hY3JvX3RyYWl0c1tkb21haW5fbmFtZV0pKQorICAgIG91dHB1dF9maWxlLndyaXRl
KCJcbiAgICBpbnRlcmZhY2UgW0NvbmRpdGlvbmFsPUlOU1BFQ1RPUl0gJXMgeyIgJSBkb21haW5f
bmFtZSkKKworICAgIGlmICJjb21tYW5kcyIgaW4gZG9tYWluOgorICAgICAgICBmb3IgY29tbWFu
ZCBpbiBkb21haW5bImNvbW1hbmRzIl06CisgICAgICAgICAgICBwYXJhbXMgPSBbXQorICAgICAg
ICAgICAgaWYgKCJwYXJhbWV0ZXJzIiBpbiBjb21tYW5kKToKKyAgICAgICAgICAgICAgICBmb3Ig
aW5fcGFyYW0gaW4gY29tbWFuZFsicGFyYW1ldGVycyJdOgorICAgICAgICAgICAgICAgICAgICBp
ZiAoIm9wdGlvbmFsIiBpbiBpbl9wYXJhbSk6CisgICAgICAgICAgICAgICAgICAgICAgICBvcHRp
b25hbCA9ICIgW29wdGlvbmFsXSIKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgICAgICAgICAgICAgIG9wdGlvbmFsID0gIiIKKyAgICAgICAgICAgICAgICAgICAgcGFyYW1z
LmFwcGVuZCgiaW4lcyAlcyAlcyIgJSAob3B0aW9uYWwsIHBhcmFtX3R5cGUoZG9tYWluX25hbWUs
IGluX3BhcmFtKSwgaW5fcGFyYW1bIm5hbWUiXSkpCisgICAgICAgICAgICBpZiAoInJldHVybnMi
IGluIGNvbW1hbmQpOgorICAgICAgICAgICAgICAgIGZvciBvdXRfcGFyYW0gaW4gY29tbWFuZFsi
cmV0dXJucyJdOgorICAgICAgICAgICAgICAgICAgICBpZiAoIm9wdGlvbmFsIiBpbiBvdXRfcGFy
YW0pOgorICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwgPSAiIFtvcHRpb25hbF0iCisg
ICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25h
bCA9ICIiCisgICAgICAgICAgICAgICAgICAgIHBhcmFtcy5hcHBlbmQoIm91dCVzICVzICVzIiAl
IChvcHRpb25hbCwgcGFyYW1fdHlwZShkb21haW5fbmFtZSwgb3V0X3BhcmFtKSwgb3V0X3BhcmFt
WyJuYW1lIl0pKQorICAgICAgICAgICAgb3V0cHV0X2ZpbGUud3JpdGUoIlxuICAgICAgICB2b2lk
ICVzKCVzKTsiICUgKGNvbW1hbmRbIm5hbWUiXSwgIiwgIi5qb2luKHBhcmFtcykpKQorCisgICAg
aWYgImV2ZW50cyIgaW4gZG9tYWluOgorICAgICAgICBmb3IgZXZlbnQgaW4gZG9tYWluWyJldmVu
dHMiXToKKyAgICAgICAgICAgIHBhcmFtcyA9IFtdCisgICAgICAgICAgICBpZiAoInBhcmFtZXRl
cnMiIGluIGV2ZW50KToKKyAgICAgICAgICAgICAgICBmb3IgaW5fcGFyYW0gaW4gZXZlbnRbInBh
cmFtZXRlcnMiXToKKyAgICAgICAgICAgICAgICAgICAgaWYgKCJvcHRpb25hbCIgaW4gaW5fcGFy
YW0pOgorICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwgPSAiIFtvcHRpb25hbF0iCisg
ICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25h
bCA9ICIiCisgICAgICAgICAgICAgICAgICAgIHBhcmFtcy5hcHBlbmQoIm91dCVzICVzICVzIiAl
IChvcHRpb25hbCwgcGFyYW1fdHlwZShkb21haW5fbmFtZSwgaW5fcGFyYW0pLCBpbl9wYXJhbVsi
bmFtZSJdKSkKKyAgICAgICAgICAgIG91dHB1dF9maWxlLndyaXRlKCJcbiAgICAgICAgW2V2ZW50
XSB2b2lkICVzKCVzKTsiICUgKGV2ZW50WyJuYW1lIl0sICIsICIuam9pbihwYXJhbXMpKSkKKwor
ICAgIG91dHB1dF9maWxlLndyaXRlKCJcbiAgICB9OyIpCisgICAgaWYgZG9tYWluWyJkb21haW4i
XSBpbiBtYWNyb190cmFpdHM6CisgICAgICAgIG91dHB1dF9maWxlLndyaXRlKCJcbiNlbmRpZiAv
LyBFTkFCTEVfJXMiICUgbWFjcm9fdHJhaXRzW2RvbWFpblsiZG9tYWluIl1dKQorb3V0cHV0X2Zp
bGUud3JpdGUoIlxufVxuIikKK291dHB1dF9maWxlLmNsb3NlKCkK
</data>

          </attachment>
      

    </bug>

</bugzilla>