<?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>34675</bug_id>
          
          <creation_ts>2010-02-05 23:07:36 -0800</creation_ts>
          <short_desc>check-webkit-style: Move ProcessorOptions, ArgumentPrinter, and ArgumentParser classes into a separate file</short_desc>
          <delta_ts>2010-02-18 21:17:15 -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>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>
          <dependson>34674</dependson>
          <blocked>34677</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Jerdonek">cjerdonek</reporter>
          <assigned_to name="Chris Jerdonek">cjerdonek</assigned_to>
          <cc>abarth</cc>
    
    <cc>cjerdonek</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric</cc>
    
    <cc>hamaji</cc>
    
    <cc>levin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>188418</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-02-05 23:07:36 -0800</bug_when>
    <thetext>The new file can be called something like parser.py.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>188470</commentid>
    <comment_count>1</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-02-06 14:08:24 -0800</bug_when>
    <thetext>It makes more sense to split the class before moving, because then there will be less code to move, and there will be fewer dependencies to carry over in that initial move.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>191730</commentid>
    <comment_count>2</comment_count>
      <attachid>49041</attachid>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-02-18 14:12:43 -0800</bug_when>
    <thetext>Created attachment 49041
Proposed patch

The additional unit tests I added were to cover development-testing errors that occurred when running &quot;check-webkit-style&quot; but that did not occur when running &quot;test-webkitpy&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>191805</commentid>
    <comment_count>3</comment_count>
      <attachid>49041</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-02-18 18:59:58 -0800</bug_when>
    <thetext>Comment on attachment 49041
Proposed patch

Looks good. Hmm... it was a bit difficult to check code move change with bugzilla. Eventually we may want to have better diff pretty printer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>191818</commentid>
    <comment_count>4</comment_count>
      <attachid>49041</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-02-18 21:17:10 -0800</bug_when>
    <thetext>Comment on attachment 49041
Proposed patch

Clearing flags on attachment: 49041

Committed r55001: &lt;http://trac.webkit.org/changeset/55001&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>191819</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-02-18 21:17:15 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>49041</attachid>
            <date>2010-02-18 14:12:43 -0800</date>
            <delta_ts>2010-02-18 21:17:10 -0800</delta_ts>
            <desc>Proposed patch</desc>
            <filename>_patch-34675-1.diff</filename>
            <type>text/plain</type>
            <size>61503</size>
            <attacher name="Chris Jerdonek">cjerdonek</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCA1NGJlNWFiLi44MGJkYzhlIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDcgQEAKKzIwMTAtMDIt
MTggIENocmlzIEplcmRvbmVrICA8Y2plcmRvbmVrQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZWQgcGFyc2luZy1yZWxhdGVk
IGNvZGUgdG8gYSBzZXBhcmF0ZSBmaWxlLiBBbHNvIGluY3JlYXNlZAorICAgICAgICB0aGUgdW5p
dCB0ZXN0IGNvdmVyYWdlIGluIHNvbWUgYWZmZWN0ZWQgYXJlYXMuCisKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM0Njc1CisKKyAgICAgICAgVGhpcyBy
ZXZpc2lvbiBjb250YWlucyBubyBuZXcgZnVuY3Rpb25hbGl0eS4KKworICAgICAgICAqIFNjcmlw
dHMvY2hlY2std2Via2l0LXN0eWxlOgorICAgICAgICAgIC0gQWRqdXN0ZWQgdG8gY2FsbCBjaGVj
a193ZWJraXRfc3R5bGVfcGFyc2VyKCkuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0
eWxlL2NoZWNrZXIucHk6CisgICAgICAgICAgLSBBZGRlZCBjaGVja193ZWJraXRfc3R5bGVfcGFy
c2VyKCkgdG8gcGFzcyBjaGVja2VyLnB5CisgICAgICAgICAgICBjb25maWd1cmF0aW9uIHNldHRp
bmdzIHRvIG9wdHBhcnNlci5weS4KKyAgICAgICAgICAtIE1vdmVkIF9jcmVhdGVfdXNhZ2UoKSBh
bmQgdGhlIENvbW1hbmRPcHRpb25WYWx1ZXMsCisgICAgICAgICAgICBEZWZhdWx0Q29tbWFuZE9w
dGlvblZhbHVlcywgQXJndW1lbnRQcmludGVyLCBhbmQKKyAgICAgICAgICAgIEFyZ3VtZW50UGFy
c2VyIGNsYXNzZXMgdG8gb3B0cGFyc2VyLnB5LgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS9zdHlsZS9jaGVja2VyX3VuaXR0ZXN0LnB5OgorICAgICAgICAgIC0gTW92ZWQgdGhlIFByb2Nl
c3Nvck9wdGlvbnNUZXN0LCBBcmd1bWVudFByaW50ZXJUZXN0LCBhbmQKKyAgICAgICAgICAgIEFy
Z3VtZW50UGFyc2VyVGVzdCBjbGFzc2VzIHRvIG9wdHBhcnNlci5weS4KKyAgICAgICAgICAtIEFk
ZGVkIHRoZSBDaGVja1dlYktpdFN0eWxlRnVuY3Rpb25UZXN0IGNsYXNzIHRvIGNoZWNrCisgICAg
ICAgICAgICB0aGUgY2hlY2tfd2Via2l0X3N0eWxlX2NvbmZpZ3VyYXRpb24oKSBhbmQKKyAgICAg
ICAgICAgIGNoZWNrX3dlYmtpdF9zdHlsZV9wYXJzZXIoKSBjb2RlIHBhdGhzLgorCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9vcHRwYXJzZXIucHk6IEFkZGVkLgorICAgICAgICAg
IC0gRnJvbSBjaGVja2VyLnB5LCBhZGRlZCBfY3JlYXRlX3VzYWdlKCkgYW5kIHRoZQorICAgICAg
ICAgICAgQ29tbWFuZE9wdGlvblZhbHVlcywgRGVmYXVsdENvbW1hbmRPcHRpb25WYWx1ZXMsCisg
ICAgICAgICAgICBBcmd1bWVudFByaW50ZXIsIGFuZCBBcmd1bWVudFBhcnNlciBjbGFzc2VzLgor
ICAgICAgICAgIC0gSW4gdGhlIEFyZ3VtZW50UGFyc2VyIGNvbnN0cnVjdG9yLS0KKyAgICAgICAg
ICAgIC0gQWRkZWQgYWxsX2NhdGVnb3JpZXMgYXMgYSByZXF1aXJlZCBwYXJhbWV0ZXIuCisgICAg
ICAgICAgICAtIFJlbW92ZWQgdGhlIGRlZmF1bHQgdmFsdWUgZnJvbSB0aGUgZGVmYXVsdF9vcHRp
b25zIHBhcmFtZXRlci4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvb3B0cGFy
c2VyX3VuaXR0ZXN0LnB5OiBBZGRlZC4KKyAgICAgICAgICAtIEZyb20gY2hlY2tlcl91bml0dGVz
dC5weSwgYWRkZWQgdGhlIFByb2Nlc3Nvck9wdGlvbnNUZXN0LAorICAgICAgICAgICAgQXJndW1l
bnRQcmludGVyVGVzdCwgYW5kIEFyZ3VtZW50UGFyc2VyVGVzdCBjbGFzc2VzLgorICAgICAgICAg
IC0gQWRkZWQgdGhlIENyZWF0ZVVzYWdlVGVzdCBjbGFzcyB0byB0ZXN0IF9jcmVhdGVfdXNhZ2Uo
KS4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvdW5pdHRlc3RzLnB5OgorICAg
ICAgICAgIC0gQWRkZWQgb3B0cGFyc2VyX3VuaXR0ZXN0IGltcG9ydC4KKwogMjAxMC0wMi0xNiAg
Q2hyaXMgSmVyZG9uZWsgIDxjamVyZG9uZWtAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBTaGluaWNoaXJvIEhhbWFqaS4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMv
Y2hlY2std2Via2l0LXN0eWxlIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9jaGVjay13ZWJraXQtc3R5
bGUKaW5kZXggNzRkZGMwMS4uZWEyZTk0MyAxMDA3NTUKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0
cy9jaGVjay13ZWJraXQtc3R5bGUKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9jaGVjay13ZWJr
aXQtc3R5bGUKQEAgLTU3LDggKzU3LDcgQEAgZGVmIG1haW4oKToKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlY3MuZ2V0cmVhZGVyKCd1dGY4JyksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZWNzLmdldHdyaXRlcign
dXRmOCcpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZXBs
YWNlJykKLQotICAgIHBhcnNlciA9IGNoZWNrZXIuQXJndW1lbnRQYXJzZXIoKQorICAgIHBhcnNl
ciA9IGNoZWNrZXIuY2hlY2tfd2Via2l0X3N0eWxlX3BhcnNlcigpCiAgICAgKGZpbGVzLCBvcHRp
b25zKSA9IHBhcnNlci5wYXJzZShzeXMuYXJndlsxOl0pCiAKICAgICBjb25maWd1cmF0aW9uID0g
Y2hlY2tlci5jaGVja193ZWJraXRfc3R5bGVfY29uZmlndXJhdGlvbihvcHRpb25zKQpkaWZmIC0t
Z2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5IGIvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5CmluZGV4IGJkOTlkMGIu
LjliZWRhOWUgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUv
Y2hlY2tlci5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNr
ZXIucHkKQEAgLTMwLDE1ICszMCwxNSBAQAogIiIiRnJvbnQgZW5kIG9mIHNvbWUgc3R5bGUtY2hl
Y2tlciBtb2R1bGVzLiIiIgogCiBpbXBvcnQgY29kZWNzCi1pbXBvcnQgZ2V0b3B0CiBpbXBvcnQg
b3MucGF0aAogaW1wb3J0IHN5cwogCiBmcm9tIC4uIHN0eWxlX3JlZmVyZW5jZXMgaW1wb3J0IHBh
cnNlX3BhdGNoCiBmcm9tIGVycm9yX2hhbmRsZXJzIGltcG9ydCBEZWZhdWx0U3R5bGVFcnJvckhh
bmRsZXIKIGZyb20gZXJyb3JfaGFuZGxlcnMgaW1wb3J0IFBhdGNoU3R5bGVFcnJvckhhbmRsZXIK
LWZyb20gZmlsdGVyIGltcG9ydCB2YWxpZGF0ZV9maWx0ZXJfcnVsZXMKIGZyb20gZmlsdGVyIGlt
cG9ydCBGaWx0ZXJDb25maWd1cmF0aW9uCitmcm9tIG9wdHBhcnNlciBpbXBvcnQgQXJndW1lbnRQ
YXJzZXIKK2Zyb20gb3B0cGFyc2VyIGltcG9ydCBEZWZhdWx0Q29tbWFuZE9wdGlvblZhbHVlcwog
ZnJvbSBwcm9jZXNzb3JzLmNvbW1vbiBpbXBvcnQgY2hlY2tfbm9fY2FycmlhZ2VfcmV0dXJuCiBm
cm9tIHByb2Nlc3NvcnMuY29tbW9uIGltcG9ydCBjYXRlZ29yaWVzIGFzIENvbW1vbkNhdGVnb3Jp
ZXMKIGZyb20gcHJvY2Vzc29ycy5jcHAgaW1wb3J0IENwcFByb2Nlc3NvcgpAQCAtMTYzLDYgKzE2
MywxNSBAQCBkZWYgX2NoZWNrX3dlYmtpdF9zdHlsZV9kZWZhdWx0cygpOgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJib3NpdHk9X0RFRkFVTFRfVkVSQk9TSVRZKQog
CiAKKyMgVGhpcyBmdW5jdGlvbiBhc3Npc3RzIGluIG9wdHBhcnNlciBub3QgaGF2aW5nIHRvIGlt
cG9ydCBmcm9tIGNoZWNrZXIuCitkZWYgY2hlY2tfd2Via2l0X3N0eWxlX3BhcnNlcigpOgorICAg
IGFsbF9jYXRlZ29yaWVzID0gX2FsbF9jYXRlZ29yaWVzKCkKKyAgICBkZWZhdWx0X29wdGlvbnMg
PSBfY2hlY2tfd2Via2l0X3N0eWxlX2RlZmF1bHRzKCkKKyAgICByZXR1cm4gQXJndW1lbnRQYXJz
ZXIoYWxsX2NhdGVnb3JpZXM9YWxsX2NhdGVnb3JpZXMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJhc2VfZmlsdGVyX3J1bGVzPV9CQVNFX0ZJTFRFUl9SVUxFUywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGVmYXVsdF9vcHRpb25zPWRlZmF1bHRfb3B0aW9ucykKKworCiBkZWYgY2hl
Y2tfd2Via2l0X3N0eWxlX2NvbmZpZ3VyYXRpb24ob3B0aW9ucyk6CiAgICAgIiIiUmV0dXJuIGEg
U3R5bGVDaGVja2VyQ29uZmlndXJhdGlvbiBpbnN0YW5jZSBmb3IgY2hlY2std2Via2l0LXN0eWxl
LgogCkBAIC0xODIsNDAwICsxOTEsNiBAQCBkZWYgY2hlY2tfd2Via2l0X3N0eWxlX2NvbmZpZ3Vy
YXRpb24ob3B0aW9ucyk6CiAgICAgICAgICAgICAgICB2ZXJib3NpdHk9b3B0aW9ucy52ZXJib3Np
dHkpCiAKIAotZGVmIF9jcmVhdGVfdXNhZ2UoZGVmYXVsdF9vcHRpb25zKToKLSAgICAiIiJSZXR1
cm4gdGhlIHVzYWdlIHN0cmluZyB0byBkaXNwbGF5IGZvciBjb21tYW5kIGhlbHAuCi0KLSAgICBB
cmdzOgotICAgICAgZGVmYXVsdF9vcHRpb25zOiBBIERlZmF1bHRDb21tYW5kT3B0aW9uVmFsdWVz
IGluc3RhbmNlLgotCi0gICAgIiIiCi0gICAgdXNhZ2UgPSAiIiIKLVN5bnRheDogJShwcm9ncmFt
X25hbWUpcyBbLS12ZXJib3NlPSNdIFstLWdpdC1jb21taXQ9PFNpbmdsZUNvbW1pdD5dIFstLW91
dHB1dD12czddCi0gICAgICAgIFstLWZpbHRlcj0teCwreSwuLi5dIFtmaWxlXSAuLi4KLQotICBU
aGUgc3R5bGUgZ3VpZGVsaW5lcyB0aGlzIHRyaWVzIHRvIGZvbGxvdyBhcmUgaGVyZToKLSAgICBo
dHRwOi8vd2Via2l0Lm9yZy9jb2RpbmcvY29kaW5nLXN0eWxlLmh0bWwKLQotICBFdmVyeSBzdHls
ZSBlcnJvciBpcyBnaXZlbiBhIGNvbmZpZGVuY2Ugc2NvcmUgZnJvbSAxLTUsIHdpdGggNSBtZWFu
aW5nCi0gIHdlIGFyZSBjZXJ0YWluIG9mIHRoZSBwcm9ibGVtLCBhbmQgMSBtZWFuaW5nIGl0IGNv
dWxkIGJlIGEgbGVnaXRpbWF0ZQotICBjb25zdHJ1Y3QuICBUaGlzIGNhbiBtaXNzIHNvbWUgZXJy
b3JzIGFuZCBkb2VzIG5vdCBzdWJzdGl0dXRlIGZvcgotICBjb2RlIHJldmlldy4KLQotICBUbyBw
cmV2ZW50IHNwZWNpZmljIGxpbmVzIGZyb20gYmVpbmcgbGludGVkLCBhZGQgYSAnLy8gTk9MSU5U
JyBjb21tZW50IHRvIHRoZQotICBlbmQgb2YgdGhlIGxpbmUuCi0KLSAgTGludGVkIGV4dGVuc2lv
bnMgYXJlIC5jcHAsIC5jIGFuZCAuaC4gIE90aGVyIGZpbGUgdHlwZXMgYXJlIGlnbm9yZWQuCi0K
LSAgVGhlIGZpbGUgcGFyYW1ldGVyIGlzIG9wdGlvbmFsIGFuZCBhY2NlcHRzIG11bHRpcGxlIGZp
bGVzLiAgTGVhdmluZwotICBvdXQgdGhlIGZpbGUgcGFyYW1ldGVyIGFwcGxpZXMgdGhlIGNoZWNr
IHRvIGFsbCBmaWxlcyBjb25zaWRlcmVkIGNoYW5nZWQKLSAgYnkgeW91ciBzb3VyY2UgY29udHJv
bCBtYW5hZ2VtZW50IHN5c3RlbS4KLQotICBGbGFnczoKLQotICAgIHZlcmJvc2U9IwotICAgICAg
QSBudW1iZXIgMS01IHRoYXQgcmVzdHJpY3RzIG91dHB1dCB0byBlcnJvcnMgd2l0aCBhIGNvbmZp
ZGVuY2UKLSAgICAgIHNjb3JlIGF0IG9yIGFib3ZlIHRoaXMgdmFsdWUuIEluIHBhcnRpY3VsYXIs
IHRoZSB2YWx1ZSAxIGRpc3BsYXlzCi0gICAgICBhbGwgZXJyb3JzLiBUaGUgZGVmYXVsdCBpcyAl
KGRlZmF1bHRfdmVyYm9zaXR5KXMuCi0KLSAgICBnaXQtY29tbWl0PTxTaW5nbGVDb21taXQ+Ci0g
ICAgICBDaGVja3MgdGhlIHN0eWxlIG9mIGV2ZXJ5dGhpbmcgZnJvbSB0aGUgZ2l2ZW4gY29tbWl0
IHRvIHRoZSBsb2NhbCB0cmVlLgotCi0gICAgb3V0cHV0PXZzNwotICAgICAgVGhlIG91dHB1dCBm
b3JtYXQsIHdoaWNoIG1heSBiZSBvbmUgb2YKLSAgICAgICAgZW1hY3MgOiB0byBlYXNlIGVtYWNz
IHBhcnNpbmcKLSAgICAgICAgdnM3ICAgOiBjb21wYXRpYmxlIHdpdGggVmlzdWFsIFN0dWRpbwot
ICAgICAgRGVmYXVsdHMgdG8gIiUoZGVmYXVsdF9vdXRwdXRfZm9ybWF0KXMiLiBPdGhlciBmb3Jt
YXRzIGFyZSB1bnN1cHBvcnRlZC4KLQotICAgIGZpbHRlcj0teCwreSwuLi4KLSAgICAgIEEgY29t
bWEtc2VwYXJhdGVkIGxpc3Qgb2YgYm9vbGVhbiBmaWx0ZXIgcnVsZXMgdXNlZCB0byBmaWx0ZXIK
LSAgICAgIHdoaWNoIGNhdGVnb3JpZXMgb2Ygc3R5bGUgZ3VpZGVsaW5lcyB0byBjaGVjay4gIFRo
ZSBzY3JpcHQgY2hlY2tzCi0gICAgICBhIGNhdGVnb3J5IGlmIHRoZSBjYXRlZ29yeSBwYXNzZXMg
dGhlIGZpbHRlciBydWxlcywgYXMgZm9sbG93cy4KLQotICAgICAgQW55IHdlYmtpdCBjYXRlZ29y
eSBzdGFydHMgb3V0IHBhc3NpbmcuICBBbGwgZmlsdGVyIHJ1bGVzIGFyZSB0aGVuCi0gICAgICBl
dmFsdWF0ZWQgbGVmdCB0byByaWdodCwgd2l0aCBsYXRlciBydWxlcyB0YWtpbmcgcHJlY2VkZW5j
ZS4gIEZvcgotICAgICAgZXhhbXBsZSwgdGhlIHJ1bGUgIitmb28iIHBhc3NlcyBhbnkgY2F0ZWdv
cnkgdGhhdCBzdGFydHMgd2l0aCAiZm9vIiwKLSAgICAgIGFuZCAiLWZvbyIgZmFpbHMgYW55IHN1
Y2ggY2F0ZWdvcnkuICBUaGUgZmlsdGVyIGlucHV0ICItd2hpdGVzcGFjZSwKLSAgICAgICt3aGl0
ZXNwYWNlL2JyYWNlcyIgZmFpbHMgdGhlIGNhdGVnb3J5ICJ3aGl0ZXNwYWNlL3RhYiIgYW5kIHBh
c3NlcwotICAgICAgIndoaXRlc3BhY2UvYnJhY2VzIi4KLQotICAgICAgRXhhbXBsZXM6IC0tZmls
dGVyPS13aGl0ZXNwYWNlLCt3aGl0ZXNwYWNlL2JyYWNlcwotICAgICAgICAgICAgICAgIC0tZmls
dGVyPS13aGl0ZXNwYWNlLC1ydW50aW1lL3ByaW50ZiwrcnVudGltZS9wcmludGZfZm9ybWF0Ci0g
ICAgICAgICAgICAgICAgLS1maWx0ZXI9LSwrYnVpbGQvaW5jbHVkZV93aGF0X3lvdV91c2UKLQot
ICAgICAgQ2F0ZWdvcnkgbmFtZXMgYXBwZWFyIGluIGVycm9yIG1lc3NhZ2VzIGluIGJyYWNrZXRz
LCBmb3IgZXhhbXBsZQotICAgICAgW3doaXRlc3BhY2UvaW5kZW50XS4gIFRvIHNlZSBhIGxpc3Qg
b2YgYWxsIGNhdGVnb3JpZXMgYXZhaWxhYmxlIHRvCi0gICAgICAlKHByb2dyYW1fbmFtZSlzLCBh
bG9uZyB3aXRoIHdoaWNoIGFyZSBlbmFibGVkIGJ5IGRlZmF1bHQsIHBhc3MKLSAgICAgIHRoZSBl
bXB0eSBmaWx0ZXIgYXMgZm9sbG93czoKLSAgICAgICAgIC0tZmlsdGVyPQotIiIiICUgeydwcm9n
cmFtX25hbWUnOiBvcy5wYXRoLmJhc2VuYW1lKHN5cy5hcmd2WzBdKSwKLSAgICAgICAnZGVmYXVs
dF92ZXJib3NpdHknOiBkZWZhdWx0X29wdGlvbnMudmVyYm9zaXR5LAotICAgICAgICdkZWZhdWx0
X291dHB1dF9mb3JtYXQnOiBkZWZhdWx0X29wdGlvbnMub3V0cHV0X2Zvcm1hdH0KLQotICAgIHJl
dHVybiB1c2FnZQotCi0KLSMgRklYTUU6IEVsaW1pbmF0ZSBzdXBwb3J0IGZvciAiZXh0cmFfZmxh
Z192YWx1ZXMiLgotIwotIyBUaGlzIGNsYXNzIHNob3VsZCBub3QgaGF2ZSBrbm93bGVkZ2Ugb2Yg
dGhlIGZsYWcga2V5IG5hbWVzLgotY2xhc3MgQ29tbWFuZE9wdGlvblZhbHVlcyhvYmplY3QpOgot
Ci0gICAgIiIiU3RvcmVzIHRoZSBvcHRpb24gdmFsdWVzIHBhc3NlZCBieSB0aGUgdXNlciB2aWEg
dGhlIGNvbW1hbmQgbGluZS4KLQotICAgIEF0dHJpYnV0ZXM6Ci0gICAgICBleHRyYV9mbGFnX3Zh
bHVlczogQSBzdHJpbmctc3RyaW5nIGRpY3Rpb25hcnkgb2YgYWxsIGZsYWcga2V5LXZhbHVlCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgcGFpcnMgdGhhdCBhcmUgbm90IG90aGVyd2lzZSByZXBy
ZXNlbnRlZCBieSB0aGlzCi0gICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3MuICBUaGUgZGVm
YXVsdCBpcyB0aGUgZW1wdHkgZGljdGlvbmFyeS4KLQotICAgICAgZmlsdGVyX3J1bGVzOiBUaGUg
bGlzdCBvZiBmaWx0ZXIgcnVsZXMgcHJvdmlkZWQgYnkgdGhlIHVzZXIuCi0gICAgICAgICAgICAg
ICAgICAgIFRoZXNlIHJ1bGVzIGFyZSBhcHBlbmRlZCB0byB0aGUgYmFzZSBydWxlcyBhbmQKLSAg
ICAgICAgICAgICAgICAgICAgcGF0aC1zcGVjaWZpYyBydWxlcyBhbmQgc28gdGFrZSBwcmVjZWRl
bmNlIG92ZXIKLSAgICAgICAgICAgICAgICAgICAgdGhlIGJhc2UgZmlsdGVyIHJ1bGVzLCBldGMu
Ci0KLSAgICAgIGdpdF9jb21taXQ6IEEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgZ2l0IGNvbW1p
dCB0byBjaGVjay4KLSAgICAgICAgICAgICAgICAgIFRoZSBkZWZhdWx0IGlzIE5vbmUuCi0KLSAg
ICAgIG91dHB1dF9mb3JtYXQ6IEEgc3RyaW5nIHRoYXQgaXMgdGhlIG91dHB1dCBmb3JtYXQuICBU
aGUgc3VwcG9ydGVkCi0gICAgICAgICAgICAgICAgICAgICBvdXRwdXQgZm9ybWF0cyBhcmUgImVt
YWNzIiB3aGljaCBlbWFjcyBjYW4gcGFyc2UKLSAgICAgICAgICAgICAgICAgICAgIGFuZCAidnM3
IiB3aGljaCBNaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyA3IGNhbiBwYXJzZS4KLQotICAgICAgdmVy
Ym9zaXR5OiBBbiBpbnRlZ2VyIGJldHdlZW4gMS01IGluY2x1c2l2ZSB0aGF0IHJlc3RyaWN0cyBv
dXRwdXQKLSAgICAgICAgICAgICAgICAgdG8gZXJyb3JzIHdpdGggYSBjb25maWRlbmNlIHNjb3Jl
IGF0IG9yIGFib3ZlIHRoaXMgdmFsdWUuCi0gICAgICAgICAgICAgICAgIFRoZSBkZWZhdWx0IGlz
IDEsIHdoaWNoIHJlcG9ydHMgYWxsIGVycm9ycy4KLQotICAgICIiIgotICAgIGRlZiBfX2luaXRf
XyhzZWxmLAotICAgICAgICAgICAgICAgICBleHRyYV9mbGFnX3ZhbHVlcz1Ob25lLAotICAgICAg
ICAgICAgICAgICBmaWx0ZXJfcnVsZXM9Tm9uZSwKLSAgICAgICAgICAgICAgICAgZ2l0X2NvbW1p
dD1Ob25lLAotICAgICAgICAgICAgICAgICBvdXRwdXRfZm9ybWF0PSJlbWFjcyIsCi0gICAgICAg
ICAgICAgICAgIHZlcmJvc2l0eT0xKToKLSAgICAgICAgaWYgZXh0cmFfZmxhZ192YWx1ZXMgaXMg
Tm9uZToKLSAgICAgICAgICAgIGV4dHJhX2ZsYWdfdmFsdWVzID0ge30KLSAgICAgICAgaWYgZmls
dGVyX3J1bGVzIGlzIE5vbmU6Ci0gICAgICAgICAgICBmaWx0ZXJfcnVsZXMgPSBbXQotCi0gICAg
ICAgIGlmIG91dHB1dF9mb3JtYXQgbm90IGluICgiZW1hY3MiLCAidnM3Iik6Ci0gICAgICAgICAg
ICByYWlzZSBWYWx1ZUVycm9yKCdJbnZhbGlkICJvdXRwdXRfZm9ybWF0IiBwYXJhbWV0ZXI6ICcK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZhbHVlIG11c3QgYmUgImVtYWNzIiBvciAi
dnM3Ii4gJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVmFsdWUgZ2l2ZW46ICIlcyIu
JyAlIG91dHB1dF9mb3JtYXQpCi0KLSAgICAgICAgaWYgKHZlcmJvc2l0eSA8IDEpIG9yICh2ZXJi
b3NpdHkgPiA1KToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0ludmFsaWQgInZlcmJv
c2l0eSIgcGFyYW1ldGVyOiAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSBt
dXN0IGJlIGFuIGludGVnZXIgYmV0d2VlbiAxLTUgaW5jbHVzaXZlLiAiCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICdWYWx1ZSBnaXZlbjogIiVzIi4nICUgdmVyYm9zaXR5KQotCi0gICAg
ICAgIHNlbGYuZXh0cmFfZmxhZ192YWx1ZXMgPSBleHRyYV9mbGFnX3ZhbHVlcwotICAgICAgICBz
ZWxmLmZpbHRlcl9ydWxlcyA9IGZpbHRlcl9ydWxlcwotICAgICAgICBzZWxmLmdpdF9jb21taXQg
PSBnaXRfY29tbWl0Ci0gICAgICAgIHNlbGYub3V0cHV0X2Zvcm1hdCA9IG91dHB1dF9mb3JtYXQK
LSAgICAgICAgc2VsZi52ZXJib3NpdHkgPSB2ZXJib3NpdHkKLQotICAgICMgVXNlZnVsIGZvciB1
bml0IHRlc3RpbmcuCi0gICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6Ci0gICAgICAgICIiIlJl
dHVybiB3aGV0aGVyIHRoaXMgaW5zdGFuY2UgaXMgZXF1YWwgdG8gYW5vdGhlci4iIiIKLSAgICAg
ICAgaWYgc2VsZi5leHRyYV9mbGFnX3ZhbHVlcyAhPSBvdGhlci5leHRyYV9mbGFnX3ZhbHVlczoK
LSAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICBpZiBzZWxmLmZpbHRlcl9ydWxlcyAh
PSBvdGhlci5maWx0ZXJfcnVsZXM6Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAg
aWYgc2VsZi5naXRfY29tbWl0ICE9IG90aGVyLmdpdF9jb21taXQ6Ci0gICAgICAgICAgICByZXR1
cm4gRmFsc2UKLSAgICAgICAgaWYgc2VsZi5vdXRwdXRfZm9ybWF0ICE9IG90aGVyLm91dHB1dF9m
b3JtYXQ6Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgaWYgc2VsZi52ZXJib3Np
dHkgIT0gb3RoZXIudmVyYm9zaXR5OgotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICAg
ICAgcmV0dXJuIFRydWUKLQotICAgICMgVXNlZnVsIGZvciB1bml0IHRlc3RpbmcuCi0gICAgZGVm
IF9fbmVfXyhzZWxmLCBvdGhlcik6Ci0gICAgICAgICMgUHl0aG9uIGRvZXMgbm90IGF1dG9tYXRp
Y2FsbHkgZGVkdWNlIHRoaXMgZnJvbSBfX2VxX18oKS4KLSAgICAgICAgcmV0dXJuIG5vdCBzZWxm
Ll9fZXFfXyhvdGhlcikKLQotCi0jIFRoaXMgY2xhc3Mgc2hvdWxkIG5vdCBoYXZlIGtub3dsZWRn
ZSBvZiB0aGUgZmxhZyBrZXkgbmFtZXMuCi1jbGFzcyBEZWZhdWx0Q29tbWFuZE9wdGlvblZhbHVl
cyhvYmplY3QpOgotCi0gICAgIiIiU3RvcmVzIHRoZSBkZWZhdWx0IGNoZWNrLXdlYmtpdC1zdHls
ZSBjb21tYW5kLWxpbmUgb3B0aW9ucy4KLQotICAgIEF0dHJpYnV0ZXM6Ci0gICAgICBvdXRwdXRf
Zm9ybWF0OiBBIHN0cmluZyB0aGF0IGlzIHRoZSBkZWZhdWx0IG91dHB1dCBmb3JtYXQuCi0gICAg
ICB2ZXJib3NpdHk6IEFuIGludGVnZXIgdGhhdCBpcyB0aGUgZGVmYXVsdCB2ZXJib3NpdHkgbGV2
ZWwuCi0KLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvdXRwdXRfZm9ybWF0LCB2
ZXJib3NpdHkpOgotICAgICAgICBzZWxmLm91dHB1dF9mb3JtYXQgPSBvdXRwdXRfZm9ybWF0Ci0g
ICAgICAgIHNlbGYudmVyYm9zaXR5ID0gdmVyYm9zaXR5Ci0KLQotY2xhc3MgQXJndW1lbnRQcmlu
dGVyKG9iamVjdCk6Ci0KLSAgICAiIiJTdXBwb3J0cyB0aGUgcHJpbnRpbmcgb2YgY2hlY2std2Vi
a2l0LXN0eWxlIGNvbW1hbmQgYXJndW1lbnRzLiIiIgotCi0gICAgZGVmIF9mbGFnX3BhaXJfdG9f
c3RyaW5nKHNlbGYsIGZsYWdfa2V5LCBmbGFnX3ZhbHVlKToKLSAgICAgICAgcmV0dXJuICctLSUo
a2V5KXM9JSh2YWwpcycgJSB7J2tleSc6IGZsYWdfa2V5LCAndmFsJzogZmxhZ192YWx1ZSB9Ci0K
LSAgICBkZWYgdG9fZmxhZ19zdHJpbmcoc2VsZiwgb3B0aW9ucyk6Ci0gICAgICAgICIiIlJldHVy
biBhIGZsYWcgc3RyaW5nIG9mIHRoZSBnaXZlbiBDb21tYW5kT3B0aW9uVmFsdWVzIGluc3RhbmNl
LgotCi0gICAgICAgIFRoaXMgbWV0aG9kIG9yZGVycyB0aGUgZmxhZyB2YWx1ZXMgYWxwaGFiZXRp
Y2FsbHkgYnkgdGhlIGZsYWcga2V5LgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgb3B0aW9u
czogQSBDb21tYW5kT3B0aW9uVmFsdWVzIGluc3RhbmNlLgotCi0gICAgICAgICIiIgotICAgICAg
ICBmbGFncyA9IG9wdGlvbnMuZXh0cmFfZmxhZ192YWx1ZXMuY29weSgpCi0KLSAgICAgICAgZmxh
Z3NbJ291dHB1dCddID0gb3B0aW9ucy5vdXRwdXRfZm9ybWF0Ci0gICAgICAgIGZsYWdzWyd2ZXJi
b3NlJ10gPSBvcHRpb25zLnZlcmJvc2l0eQotICAgICAgICAjIE9ubHkgaW5jbHVkZSB0aGUgZmls
dGVyIGZsYWcgaWYgdXNlci1wcm92aWRlZCBydWxlcyBhcmUgcHJlc2VudC4KLSAgICAgICAgZmls
dGVyX3J1bGVzID0gb3B0aW9ucy5maWx0ZXJfcnVsZXMKLSAgICAgICAgaWYgZmlsdGVyX3J1bGVz
OgotICAgICAgICAgICAgZmxhZ3NbJ2ZpbHRlciddID0gIiwiLmpvaW4oZmlsdGVyX3J1bGVzKQot
ICAgICAgICBpZiBvcHRpb25zLmdpdF9jb21taXQ6Ci0gICAgICAgICAgICBmbGFnc1snZ2l0LWNv
bW1pdCddID0gb3B0aW9ucy5naXRfY29tbWl0Ci0KLSAgICAgICAgZmxhZ19zdHJpbmcgPSAnJwot
ICAgICAgICAjIEFscGhhYmV0aXppbmcgbGV0cyB1cyB1bml0IHRlc3QgdGhpcyBtZXRob2QuCi0g
ICAgICAgIGZvciBrZXkgaW4gc29ydGVkKGZsYWdzLmtleXMoKSk6Ci0gICAgICAgICAgICBmbGFn
X3N0cmluZyArPSBzZWxmLl9mbGFnX3BhaXJfdG9fc3RyaW5nKGtleSwgZmxhZ3Nba2V5XSkgKyAn
ICcKLQotICAgICAgICByZXR1cm4gZmxhZ19zdHJpbmcuc3RyaXAoKQotCi0KLSMgRklYTUU6IFJl
cGxhY2UgdGhlIHVzZSBvZiBnZXRvcHQuZ2V0b3B0KCkgd2l0aCBvcHRwYXJzZS5PcHRpb25QYXJz
ZXIuCi1jbGFzcyBBcmd1bWVudFBhcnNlcihvYmplY3QpOgotCi0gICAgIyBGSVhNRTogTW92ZSB0
aGUgZG9jdW1lbnRhdGlvbiBvZiB0aGUgYXR0cmlidXRlcyB0byB0aGUgX19pbml0X18KLSAgICAj
ICAgICAgICBkb2NzdHJpbmcgYWZ0ZXIgbWFraW5nIHRoZSBhdHRyaWJ1dGVzIGludGVybmFsLgot
ICAgICIiIlN1cHBvcnRzIHRoZSBwYXJzaW5nIG9mIGNoZWNrLXdlYmtpdC1zdHlsZSBjb21tYW5k
IGFyZ3VtZW50cy4KLQotICAgIEF0dHJpYnV0ZXM6Ci0gICAgICBjcmVhdGVfdXNhZ2U6IEEgZnVu
Y3Rpb24gdGhhdCBhY2NlcHRzIGEgRGVmYXVsdENvbW1hbmRPcHRpb25WYWx1ZXMKLSAgICAgICAg
ICAgICAgICAgICAgaW5zdGFuY2UgYW5kIHJldHVybnMgYSBzdHJpbmcgb2YgdXNhZ2UgaW5zdHJ1
Y3Rpb25zLgotICAgICAgICAgICAgICAgICAgICBEZWZhdWx0cyB0byB0aGUgZnVuY3Rpb24gdGhh
dCBnZW5lcmF0ZXMgdGhlIHVzYWdlCi0gICAgICAgICAgICAgICAgICAgIHN0cmluZyBmb3IgY2hl
Y2std2Via2l0LXN0eWxlLgotICAgICAgZGVmYXVsdF9vcHRpb25zOiBBIERlZmF1bHRDb21tYW5k
T3B0aW9uVmFsdWVzIGluc3RhbmNlLiAgRGVmYXVsdHMKLSAgICAgICAgICAgICAgICAgICAgICAg
dG8gdGhlIGRlZmF1bHQgY29tbWFuZCBvcHRpb24gdmFsdWVzIHVzZWQgYnkKLSAgICAgICAgICAg
ICAgICAgICAgICAgY2hlY2std2Via2l0LXN0eWxlLgotICAgICAgc3RkZXJyX3dyaXRlOiBBIGZ1
bmN0aW9uIHRoYXQgdGFrZXMgYSBzdHJpbmcgYXMgYSBwYXJhbWV0ZXIgYW5kCi0gICAgICAgICAg
ICAgICAgICAgIHNlcnZlcyBhcyBzdGRlcnIud3JpdGUuICBEZWZhdWx0cyB0byBzeXMuc3RkZXJy
LndyaXRlLgotICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBzaG91bGQgYmUgc3Bl
Y2lmaWVkIG9ubHkgZm9yIHVuaXQgdGVzdHMuCi0KLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRf
XyhzZWxmLAotICAgICAgICAgICAgICAgICBiYXNlX2ZpbHRlcl9ydWxlcz1Ob25lLAotICAgICAg
ICAgICAgICAgICBjcmVhdGVfdXNhZ2U9Tm9uZSwKLSAgICAgICAgICAgICAgICAgZGVmYXVsdF9v
cHRpb25zPU5vbmUsCi0gICAgICAgICAgICAgICAgIHN0ZGVycl93cml0ZT1Ob25lKToKLSAgICAg
ICAgIiIiQ3JlYXRlIGFuIEFyZ3VtZW50UGFyc2VyIGluc3RhbmNlLgotCi0gICAgICAgIEFyZ3M6
Ci0gICAgICAgICAgYmFzZV9maWx0ZXJfcnVsZXM6IFRoZSBsaXN0IG9mIGZpbHRlciBydWxlcyBh
dCB0aGUgYmVnaW5uaW5nIG9mCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBsaXN0
IG9mIHJ1bGVzIHVzZWQgdG8gY2hlY2sgc3R5bGUuICBUaGlzCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGxpc3QgaGFzIHRoZSBsZWFzdCBwcmVjZWRlbmNlIHdoZW4gY2hlY2tpbmcKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGUgYW5kIHByZWNlZGVzIGFueSB1c2VyLXBy
b3ZpZGVkIHJ1bGVzLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgY2xhc3MgdXNl
cyB0aGlzIHBhcmFtZXRlciBvbmx5IGZvciBkaXNwbGF5Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHB1cnBvc2VzIHRvIHRoZSB1c2VyLiAgRGVmYXVsdHMgdG8gdGhlIGJhc2UKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyIHJ1bGVzIGZvciBjaGVjay13ZWJraXQtc3R5
bGUuCi0gICAgICAgICAgY3JlYXRlX3VzYWdlOiBTZWUgdGhlIGRvY3VtZW50YXRpb24gb2YgdGhl
IGNvcnJlc3BvbmRpbmcKLSAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBpbiB0aGUg
Y2xhc3MgZG9jc3RyaW5nLgotICAgICAgICAgIGRlZmF1bHRfb3B0aW9uczogU2VlIHRoZSBkb2N1
bWVudGF0aW9uIG9mIHRoZSBjb3JyZXNwb25kaW5nCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICBhdHRyaWJ1dGUgaW4gdGhlIGNsYXNzIGRvY3N0cmluZy4KLSAgICAgICAgICBzdGRlcnJfd3Jp
dGU6IFNlZSB0aGUgZG9jdW1lbnRhdGlvbiBvZiB0aGUgY29ycmVzcG9uZGluZwotICAgICAgICAg
ICAgICAgICAgICAgICAgYXR0cmlidXRlIGluIHRoZSBjbGFzcyBkb2NzdHJpbmcuCi0KLSAgICAg
ICAgIiIiCi0gICAgICAgIGlmIGJhc2VfZmlsdGVyX3J1bGVzIGlzIE5vbmU6Ci0gICAgICAgICAg
ICBiYXNlX2ZpbHRlcl9ydWxlcyA9IF9CQVNFX0ZJTFRFUl9SVUxFUwotICAgICAgICBpZiBjcmVh
dGVfdXNhZ2UgaXMgTm9uZToKLSAgICAgICAgICAgIGNyZWF0ZV91c2FnZSA9IF9jcmVhdGVfdXNh
Z2UKLSAgICAgICAgaWYgZGVmYXVsdF9vcHRpb25zIGlzIE5vbmU6Ci0gICAgICAgICAgICBkZWZh
dWx0X29wdGlvbnMgPSBfY2hlY2tfd2Via2l0X3N0eWxlX2RlZmF1bHRzKCkKLSAgICAgICAgaWYg
c3RkZXJyX3dyaXRlIGlzIE5vbmU6Ci0gICAgICAgICAgICBzdGRlcnJfd3JpdGUgPSBzeXMuc3Rk
ZXJyLndyaXRlCi0KLSAgICAgICAgc2VsZi5fYmFzZV9maWx0ZXJfcnVsZXMgPSBiYXNlX2ZpbHRl
cl9ydWxlcwotICAgICAgICAjIEZJWE1FOiBSZW5hbWUgdGhlc2UgdG8gcmVmbGVjdCB0aGF0IHRo
ZXkgYXJlIGludGVybmFsLgotICAgICAgICBzZWxmLmNyZWF0ZV91c2FnZSA9IGNyZWF0ZV91c2Fn
ZQotICAgICAgICBzZWxmLmRlZmF1bHRfb3B0aW9ucyA9IGRlZmF1bHRfb3B0aW9ucwotICAgICAg
ICBzZWxmLnN0ZGVycl93cml0ZSA9IHN0ZGVycl93cml0ZQotCi0gICAgZGVmIF9leGl0X3dpdGhf
dXNhZ2Uoc2VsZiwgZXJyb3JfbWVzc2FnZT0nJyk6Ci0gICAgICAgICIiIkV4aXQgYW5kIHByaW50
IGEgdXNhZ2Ugc3RyaW5nIHdpdGggYW4gb3B0aW9uYWwgZXJyb3IgbWVzc2FnZS4KLQotICAgICAg
ICBBcmdzOgotICAgICAgICAgIGVycm9yX21lc3NhZ2U6IEEgc3RyaW5nIHRoYXQgaXMgYW4gZXJy
b3IgbWVzc2FnZSB0byBwcmludC4KLQotICAgICAgICAiIiIKLSAgICAgICAgdXNhZ2UgPSBzZWxm
LmNyZWF0ZV91c2FnZShzZWxmLmRlZmF1bHRfb3B0aW9ucykKLSAgICAgICAgc2VsZi5zdGRlcnJf
d3JpdGUodXNhZ2UpCi0gICAgICAgIGlmIGVycm9yX21lc3NhZ2U6Ci0gICAgICAgICAgICBzeXMu
ZXhpdCgnXG5GQVRBTCBFUlJPUjogJyArIGVycm9yX21lc3NhZ2UpCi0gICAgICAgIGVsc2U6Ci0g
ICAgICAgICAgICBzeXMuZXhpdCgxKQotCi0gICAgZGVmIF9leGl0X3dpdGhfY2F0ZWdvcmllcyhz
ZWxmKToKLSAgICAgICAgIiIiRXhpdCBhbmQgcHJpbnQgdGhlIHN0eWxlIGNhdGVnb3JpZXMgYW5k
IGRlZmF1bHQgZmlsdGVyIHJ1bGVzLiIiIgotICAgICAgICBzZWxmLnN0ZGVycl93cml0ZSgnXG5B
bGwgY2F0ZWdvcmllczpcbicpCi0gICAgICAgIGNhdGVnb3JpZXMgPSBfYWxsX2NhdGVnb3JpZXMo
KQotICAgICAgICBmb3IgY2F0ZWdvcnkgaW4gc29ydGVkKGNhdGVnb3JpZXMpOgotICAgICAgICAg
ICAgc2VsZi5zdGRlcnJfd3JpdGUoJyAgICAnICsgY2F0ZWdvcnkgKyAnXG4nKQotCi0gICAgICAg
IHNlbGYuc3RkZXJyX3dyaXRlKCdcbkRlZmF1bHQgZmlsdGVyIHJ1bGVzKio6XG4nKQotICAgICAg
ICBmb3IgZmlsdGVyX3J1bGUgaW4gc29ydGVkKHNlbGYuX2Jhc2VfZmlsdGVyX3J1bGVzKToKLSAg
ICAgICAgICAgIHNlbGYuc3RkZXJyX3dyaXRlKCcgICAgJyArIGZpbHRlcl9ydWxlICsgJ1xuJykK
LSAgICAgICAgc2VsZi5zdGRlcnJfd3JpdGUoJ1xuKipUaGUgY29tbWFuZCBhbHdheXMgZXZhbHVh
dGVzIHRoZSBhYm92ZSBydWxlcywgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAnYW5kIGJl
Zm9yZSBhbnkgLS1maWx0ZXIgZmxhZy5cblxuJykKLQotICAgICAgICBzeXMuZXhpdCgwKQotCi0g
ICAgZGVmIF9wYXJzZV9maWx0ZXJfZmxhZyhzZWxmLCBmbGFnX3ZhbHVlKToKLSAgICAgICAgIiIi
UGFyc2UgdGhlIC0tZmlsdGVyIGZsYWcsIGFuZCByZXR1cm4gYSBsaXN0IG9mIGZpbHRlciBydWxl
cy4KLQotICAgICAgICBBcmdzOgotICAgICAgICAgIGZsYWdfdmFsdWU6IEEgc3RyaW5nIG9mIGNv
bW1hLXNlcGFyYXRlZCBmaWx0ZXIgcnVsZXMsIGZvcgotICAgICAgICAgICAgICAgICAgICAgIGV4
YW1wbGUgIi13aGl0ZXNwYWNlLCt3aGl0ZXNwYWNlL2luZGVudCIuCi0KLSAgICAgICAgIiIiCi0g
ICAgICAgIGZpbHRlcnMgPSBbXQotICAgICAgICBmb3IgdW5jbGVhbmVkX2ZpbHRlciBpbiBmbGFn
X3ZhbHVlLnNwbGl0KCcsJyk6Ci0gICAgICAgICAgICBmaWx0ZXIgPSB1bmNsZWFuZWRfZmlsdGVy
LnN0cmlwKCkKLSAgICAgICAgICAgIGlmIG5vdCBmaWx0ZXI6Ci0gICAgICAgICAgICAgICAgY29u
dGludWUKLSAgICAgICAgICAgIGZpbHRlcnMuYXBwZW5kKGZpbHRlcikKLSAgICAgICAgcmV0dXJu
IGZpbHRlcnMKLQotICAgIGRlZiBwYXJzZShzZWxmLCBhcmdzLCBleHRyYV9mbGFncz1Ob25lKToK
LSAgICAgICAgIiIiUGFyc2UgdGhlIGNvbW1hbmQgbGluZSBhcmd1bWVudHMgdG8gY2hlY2std2Vi
a2l0LXN0eWxlLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgYXJnczogQSBsaXN0IG9mIGNv
bW1hbmQtbGluZSBhcmd1bWVudHMgYXMgcmV0dXJuZWQgYnkgc3lzLmFyZ3ZbMTpdLgotICAgICAg
ICAgIGV4dHJhX2ZsYWdzOiBBIGxpc3Qgb2YgZmxhZ3Mgd2hvc2UgdmFsdWVzIHdlIHdhbnQgdG8g
ZXh0cmFjdCwgYnV0Ci0gICAgICAgICAgICAgICAgICAgICAgIGFyZSBub3Qgc3VwcG9ydGVkIGJ5
IHRoZSBDb21tYW5kT3B0aW9uVmFsdWVzIGNsYXNzLgotICAgICAgICAgICAgICAgICAgICAgICBB
biBleGFtcGxlIGZsYWcgIm5ld19mbGFnPSIuIFRoaXMgZGVmYXVsdHMgdG8gdGhlCi0gICAgICAg
ICAgICAgICAgICAgICAgIGVtcHR5IGxpc3QuCi0KLSAgICAgICAgUmV0dXJuczoKLSAgICAgICAg
ICBBIHR1cGxlIG9mIChmaWxlbmFtZXMsIG9wdGlvbnMpCi0KLSAgICAgICAgICBmaWxlbmFtZXM6
IFRoZSBsaXN0IG9mIGZpbGVuYW1lcyB0byBjaGVjay4KLSAgICAgICAgICBvcHRpb25zOiBBIENv
bW1hbmRPcHRpb25WYWx1ZXMgaW5zdGFuY2UuCi0KLSAgICAgICAgIiIiCi0gICAgICAgIGlmIGV4
dHJhX2ZsYWdzIGlzIE5vbmU6Ci0gICAgICAgICAgICBleHRyYV9mbGFncyA9IFtdCi0KLSAgICAg
ICAgb3V0cHV0X2Zvcm1hdCA9IHNlbGYuZGVmYXVsdF9vcHRpb25zLm91dHB1dF9mb3JtYXQKLSAg
ICAgICAgdmVyYm9zaXR5ID0gc2VsZi5kZWZhdWx0X29wdGlvbnMudmVyYm9zaXR5Ci0KLSAgICAg
ICAgIyBUaGUgZmxhZ3MgYWxyZWFkeSBzdXBwb3J0ZWQgYnkgdGhlIENvbW1hbmRPcHRpb25WYWx1
ZXMgY2xhc3MuCi0gICAgICAgIGZsYWdzID0gWydoZWxwJywgJ291dHB1dD0nLCAndmVyYm9zZT0n
LCAnZmlsdGVyPScsICdnaXQtY29tbWl0PSddCi0KLSAgICAgICAgZm9yIGV4dHJhX2ZsYWcgaW4g
ZXh0cmFfZmxhZ3M6Ci0gICAgICAgICAgICBpZiBleHRyYV9mbGFnIGluIGZsYWdzOgotICAgICAg
ICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0ZsYWcgXCclKGV4dHJhX2ZsYWcpcyBpcyBkdXBs
aWNhdGVkICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvciBhbHJlYWR5IHN1
cHBvcnRlZC4nICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsnZXh0cmFfZmxh
Zyc6IGV4dHJhX2ZsYWd9KQotICAgICAgICAgICAgZmxhZ3MuYXBwZW5kKGV4dHJhX2ZsYWcpCi0K
LSAgICAgICAgdHJ5OgotICAgICAgICAgICAgKG9wdHMsIGZpbGVuYW1lcykgPSBnZXRvcHQuZ2V0
b3B0KGFyZ3MsICcnLCBmbGFncykKLSAgICAgICAgZXhjZXB0IGdldG9wdC5HZXRvcHRFcnJvcjoK
LSAgICAgICAgICAgICMgRklYTUU6IFNldHRsZSBvbiBhbiBlcnJvciBoYW5kbGluZyBhcHByb2Fj
aDogY29tZSB1cAotICAgICAgICAgICAgIyAgICAgICAgd2l0aCBhIGNvbnNpc3RlbnQgZ3VpZGVs
aW5lIGFzIHRvIHdoZW4gYW5kIHdoZXRoZXIKLSAgICAgICAgICAgICMgICAgICAgIGEgVmFsdWVF
cnJvciBzaG91bGQgYmUgcmFpc2VkIHZlcnN1cyBjYWxsaW5nCi0gICAgICAgICAgICAjICAgICAg
ICBzeXMuZXhpdCB3aGVuIG5lZWRpbmcgdG8gaW50ZXJydXB0IGV4ZWN1dGlvbi4KLSAgICAgICAg
ICAgIHNlbGYuX2V4aXRfd2l0aF91c2FnZSgnSW52YWxpZCBhcmd1bWVudHMuJykKLQotICAgICAg
ICBleHRyYV9mbGFnX3ZhbHVlcyA9IHt9Ci0gICAgICAgIGdpdF9jb21taXQgPSBOb25lCi0gICAg
ICAgIGZpbHRlcl9ydWxlcyA9IFtdCi0KLSAgICAgICAgZm9yIChvcHQsIHZhbCkgaW4gb3B0czoK
LSAgICAgICAgICAgIGlmIG9wdCA9PSAnLS1oZWxwJzoKLSAgICAgICAgICAgICAgICBzZWxmLl9l
eGl0X3dpdGhfdXNhZ2UoKQotICAgICAgICAgICAgZWxpZiBvcHQgPT0gJy0tb3V0cHV0JzoKLSAg
ICAgICAgICAgICAgICBvdXRwdXRfZm9ybWF0ID0gdmFsCi0gICAgICAgICAgICBlbGlmIG9wdCA9
PSAnLS12ZXJib3NlJzoKLSAgICAgICAgICAgICAgICB2ZXJib3NpdHkgPSB2YWwKLSAgICAgICAg
ICAgIGVsaWYgb3B0ID09ICctLWdpdC1jb21taXQnOgotICAgICAgICAgICAgICAgIGdpdF9jb21t
aXQgPSB2YWwKLSAgICAgICAgICAgIGVsaWYgb3B0ID09ICctLWZpbHRlcic6Ci0gICAgICAgICAg
ICAgICAgaWYgbm90IHZhbDoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fZXhpdF93aXRoX2Nh
dGVnb3JpZXMoKQotICAgICAgICAgICAgICAgIGZpbHRlcl9ydWxlcyA9IHNlbGYuX3BhcnNlX2Zp
bHRlcl9mbGFnKHZhbCkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZXh0cmFf
ZmxhZ192YWx1ZXNbb3B0XSA9IHZhbAotCi0gICAgICAgICMgQ2hlY2sgdmFsaWRpdHkgb2YgcmVz
dWx0aW5nIHZhbHVlcy4KLSAgICAgICAgaWYgZmlsZW5hbWVzIGFuZCAoZ2l0X2NvbW1pdCAhPSBO
b25lKToKLSAgICAgICAgICAgIHNlbGYuX2V4aXRfd2l0aF91c2FnZSgnSXQgaXMgbm90IHBvc3Np
YmxlIHRvIGNoZWNrIGZpbGVzIGFuZCBhICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnc3BlY2lmaWMgY29tbWl0IGF0IHRoZSBzYW1lIHRpbWUuJykKLQotICAgICAgICBpZiBv
dXRwdXRfZm9ybWF0IG5vdCBpbiAoJ2VtYWNzJywgJ3ZzNycpOgotICAgICAgICAgICAgcmFpc2Ug
VmFsdWVFcnJvcignSW52YWxpZCAtLW91dHB1dCB2YWx1ZSAiJXMiOiBUaGUgb25seSAnCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICdhbGxvd2VkIG91dHB1dCBmb3JtYXRzIGFyZSBlbWFj
cyBhbmQgdnM3LicgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRfZm9ybWF0
KQotCi0gICAgICAgIGFsbF9jYXRlZ29yaWVzID0gX2FsbF9jYXRlZ29yaWVzKCkKLSAgICAgICAg
dmFsaWRhdGVfZmlsdGVyX3J1bGVzKGZpbHRlcl9ydWxlcywgYWxsX2NhdGVnb3JpZXMpCi0KLSAg
ICAgICAgdmVyYm9zaXR5ID0gaW50KHZlcmJvc2l0eSkKLSAgICAgICAgaWYgKHZlcmJvc2l0eSA8
IDEpIG9yICh2ZXJib3NpdHkgPiA1KToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0lu
dmFsaWQgLS12ZXJib3NlIHZhbHVlICVzOiB2YWx1ZSBtdXN0ICcKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ2JlIGJldHdlZW4gMS01LicgJSB2ZXJib3NpdHkpCi0KLSAgICAgICAgb3B0
aW9ucyA9IENvbW1hbmRPcHRpb25WYWx1ZXMoZXh0cmFfZmxhZ192YWx1ZXM9ZXh0cmFfZmxhZ192
YWx1ZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJfcnVsZXM9Zmls
dGVyX3J1bGVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2l0X2NvbW1pdD1n
aXRfY29tbWl0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0X2Zvcm1h
dD1vdXRwdXRfZm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyYm9z
aXR5PXZlcmJvc2l0eSkKLQotICAgICAgICByZXR1cm4gKGZpbGVuYW1lcywgb3B0aW9ucykKLQot
CiAjIEVudW0tbGlrZSBpZGlvbQogY2xhc3MgRmlsZVR5cGU6CiAKZGlmZiAtLWdpdCBhL1dlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcl91bml0dGVzdC5weSBiL1dlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcl91bml0dGVzdC5weQppbmRleCBi
YTFiYjRkLi5mZTEyNTEyIDEwMDc1NQotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3N0eWxlL2NoZWNrZXJfdW5pdHRlc3QucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9zdHlsZS9jaGVja2VyX3VuaXR0ZXN0LnB5CkBAIC00MSw3OSArNDEsMTkgQEAgZnJvbSBj
aGVja2VyIGltcG9ydCBfQkFTRV9GSUxURVJfUlVMRVMKIGZyb20gY2hlY2tlciBpbXBvcnQgX01B
WF9SRVBPUlRTX1BFUl9DQVRFR09SWQogZnJvbSBjaGVja2VyIGltcG9ydCBfUEFUSF9SVUxFU19T
UEVDSUZJRVIgYXMgUEFUSF9SVUxFU19TUEVDSUZJRVIKIGZyb20gY2hlY2tlciBpbXBvcnQgX2Fs
bF9jYXRlZ29yaWVzCi1mcm9tIGNoZWNrZXIgaW1wb3J0IENvbW1hbmRPcHRpb25WYWx1ZXMgYXMg
UHJvY2Vzc29yT3B0aW9ucwotZnJvbSBjaGVja2VyIGltcG9ydCBEZWZhdWx0Q29tbWFuZE9wdGlv
blZhbHVlcworZnJvbSBjaGVja2VyIGltcG9ydCBjaGVja193ZWJraXRfc3R5bGVfY29uZmlndXJh
dGlvbgorZnJvbSBjaGVja2VyIGltcG9ydCBjaGVja193ZWJraXRfc3R5bGVfcGFyc2VyCiBmcm9t
IGNoZWNrZXIgaW1wb3J0IFByb2Nlc3NvckRpc3BhdGNoZXIKIGZyb20gY2hlY2tlciBpbXBvcnQg
U3R5bGVDaGVja2VyCiBmcm9tIGNoZWNrZXIgaW1wb3J0IFN0eWxlQ2hlY2tlckNvbmZpZ3VyYXRp
b24KIGZyb20gZmlsdGVyIGltcG9ydCB2YWxpZGF0ZV9maWx0ZXJfcnVsZXMKIGZyb20gZmlsdGVy
IGltcG9ydCBGaWx0ZXJDb25maWd1cmF0aW9uCitmcm9tIG9wdHBhcnNlciBpbXBvcnQgQXJndW1l
bnRQYXJzZXIKK2Zyb20gb3B0cGFyc2VyIGltcG9ydCBDb21tYW5kT3B0aW9uVmFsdWVzCiBmcm9t
IHByb2Nlc3NvcnMuY3BwIGltcG9ydCBDcHBQcm9jZXNzb3IKIGZyb20gcHJvY2Vzc29ycy50ZXh0
IGltcG9ydCBUZXh0UHJvY2Vzc29yCiAKIAotY2xhc3MgUHJvY2Vzc29yT3B0aW9uc1Rlc3QodW5p
dHRlc3QuVGVzdENhc2UpOgotCi0gICAgIiIiVGVzdHMgUHJvY2Vzc29yT3B0aW9ucyBjbGFzcy4i
IiIKLQotICAgIGRlZiB0ZXN0X2luaXQoc2VsZik6Ci0gICAgICAgICIiIlRlc3QgX19pbml0X18g
Y29uc3RydWN0b3IuIiIiCi0gICAgICAgICMgQ2hlY2sgZGVmYXVsdCBwYXJhbWV0ZXJzLgotICAg
ICAgICBvcHRpb25zID0gUHJvY2Vzc29yT3B0aW9ucygpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWxzKG9wdGlvbnMuZXh0cmFfZmxhZ192YWx1ZXMsIHt9KQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFscyhvcHRpb25zLmZpbHRlcl9ydWxlcywgW10pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxz
KG9wdGlvbnMuZ2l0X2NvbW1pdCwgTm9uZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMob3B0
aW9ucy5vdXRwdXRfZm9ybWF0LCAiZW1hY3MiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhv
cHRpb25zLnZlcmJvc2l0eSwgMSkKLQotICAgICAgICAjIENoZWNrIGFyZ3VtZW50IHZhbGlkYXRp
b24uCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIFByb2Nlc3Nvck9wdGlv
bnMsIG91dHB1dF9mb3JtYXQ9ImJhZCIpCi0gICAgICAgIFByb2Nlc3Nvck9wdGlvbnMob3V0cHV0
X2Zvcm1hdD0iZW1hY3MiKSAjIE5vIFZhbHVlRXJyb3I6IHdvcmtzCi0gICAgICAgIFByb2Nlc3Nv
ck9wdGlvbnMob3V0cHV0X2Zvcm1hdD0idnM3IikgIyB3b3JrcwotICAgICAgICBzZWxmLmFzc2Vy
dFJhaXNlcyhWYWx1ZUVycm9yLCBQcm9jZXNzb3JPcHRpb25zLCB2ZXJib3NpdHk9MCkKLSAgICAg
ICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgUHJvY2Vzc29yT3B0aW9ucywgdmVyYm9z
aXR5PTYpCi0gICAgICAgIFByb2Nlc3Nvck9wdGlvbnModmVyYm9zaXR5PTEpICMgd29ya3MKLSAg
ICAgICAgUHJvY2Vzc29yT3B0aW9ucyh2ZXJib3NpdHk9NSkgIyB3b3JrcwotCi0gICAgICAgICMg
Q2hlY2sgYXR0cmlidXRlcy4KLSAgICAgICAgb3B0aW9ucyA9IFByb2Nlc3Nvck9wdGlvbnMoZXh0
cmFfZmxhZ192YWx1ZXM9eyJleHRyYV92YWx1ZSIgOiAyfSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZmlsdGVyX3J1bGVzPVsiKyJdLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBnaXRfY29tbWl0PSJjb21taXQiLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBvdXRwdXRfZm9ybWF0PSJ2czciLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB2ZXJib3NpdHk9MykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMob3B0
aW9ucy5leHRyYV9mbGFnX3ZhbHVlcywgeyJleHRyYV92YWx1ZSIgOiAyfSkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbHMob3B0aW9ucy5maWx0ZXJfcnVsZXMsIFsiKyJdKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFscyhvcHRpb25zLmdpdF9jb21taXQsICJjb21taXQiKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFscyhvcHRpb25zLm91dHB1dF9mb3JtYXQsICJ2czciKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFscyhvcHRpb25zLnZlcmJvc2l0eSwgMykKLQotICAgIGRlZiB0ZXN0X2VxKHNl
bGYpOgotICAgICAgICAiIiJUZXN0IF9fZXFfXyBlcXVhbGl0eSBmdW5jdGlvbi4iIiIKLSAgICAg
ICAgIyA9PSBjYWxscyBfX2VxX18uCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShQcm9jZXNzb3JP
cHRpb25zKCkgPT0gUHJvY2Vzc29yT3B0aW9ucygpKQotCi0gICAgICAgICMgVmVyaWZ5IHRoYXQg
YSBkaWZmZXJlbmNlIGluIGFueSBhcmd1bWVudCBjYXVzZXMgZXF1YWxpdHkgdG8gZmFpbC4KLSAg
ICAgICAgb3B0aW9ucyA9IFByb2Nlc3Nvck9wdGlvbnMoZXh0cmFfZmxhZ192YWx1ZXM9eyJleHRy
YV92YWx1ZSIgOiAxfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVy
X3J1bGVzPVsiKyJdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnaXRfY29t
bWl0PSJjb21taXQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRf
Zm9ybWF0PSJ2czciLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJib3Np
dHk9MSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcHRpb25zID09IFByb2Nlc3Nvck9wdGlv
bnMoZXh0cmFfZmxhZ192YWx1ZXM9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHsiZXh0cmFfdmFsdWUiIDogMn0pKQotICAgICAgICBzZWxmLmFz
c2VydEZhbHNlKG9wdGlvbnMgPT0gUHJvY2Vzc29yT3B0aW9ucyhmaWx0ZXJfcnVsZXM9WyItIl0p
KQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9wdGlvbnMgPT0gUHJvY2Vzc29yT3B0aW9ucyhn
aXRfY29tbWl0PSJjb21taXQyIikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3B0aW9ucyA9
PSBQcm9jZXNzb3JPcHRpb25zKG91dHB1dF9mb3JtYXQ9ImVtYWNzIikpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RmFsc2Uob3B0aW9ucyA9PSBQcm9jZXNzb3JPcHRpb25zKHZlcmJvc2l0eT0yKSkKLQot
ICAgIGRlZiB0ZXN0X25lKHNlbGYpOgotICAgICAgICAiIiJUZXN0IF9fbmVfXyBpbmVxdWFsaXR5
IGZ1bmN0aW9uLiIiIgotICAgICAgICAjICE9IGNhbGxzIF9fbmVfXy4KLSAgICAgICAgIyBCeSBk
ZWZhdWx0LCBfX25lX18gYWx3YXlzIHJldHVybnMgdHJ1ZSBvbiBkaWZmZXJlbnQgb2JqZWN0cy4K
LSAgICAgICAgIyBUaHVzLCBqdXN0IGNoZWNrIHRoZSBkaXN0aW5ndWlzaGluZyBjYXNlIHRvIHZl
cmlmeSB0aGF0IHRoZQotICAgICAgICAjIGNvZGUgZGVmaW5lcyBfX25lX18uCi0gICAgICAgIHNl
bGYuYXNzZXJ0RmFsc2UoUHJvY2Vzc29yT3B0aW9ucygpICE9IFByb2Nlc3Nvck9wdGlvbnMoKSkK
LQotCiBjbGFzcyBHbG9iYWxWYXJpYWJsZXNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAg
ICIiIlRlc3RzIHZhbGlkaXR5IG9mIHRoZSBnbG9iYWwgdmFyaWFibGVzLiIiIgpAQCAtMTQ2LDcg
Kzg2LDkgQEAgY2xhc3MgR2xvYmFsVmFyaWFibGVzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAK
ICAgICAgICAgIyBGSVhNRTogV2Ugc2hvdWxkIG5vdCBuZWVkIHRvIGNhbGwgcGFyc2UoKSB0byBk
ZXRlcm1pbmUKICAgICAgICAgIyAgICAgICAgd2hldGhlciB0aGUgZGVmYXVsdCBhcmd1bWVudHMg
YXJlIHZhbGlkLgotICAgICAgICBwYXJzZXIgPSBzdHlsZS5Bcmd1bWVudFBhcnNlcihkZWZhdWx0
X29wdGlvbnM9ZGVmYXVsdF9vcHRpb25zKQorICAgICAgICBwYXJzZXIgPSBBcmd1bWVudFBhcnNl
cihhbGxfY2F0ZWdvcmllcz1zZWxmLl9hbGxfY2F0ZWdvcmllcygpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBiYXNlX2ZpbHRlcl9ydWxlcz1bXSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZGVmYXVsdF9vcHRpb25zPWRlZmF1bHRfb3B0aW9ucykKICAgICAgICAg
IyBObyBuZWVkIHRvIHRlc3QgdGhlIHJldHVybiB2YWx1ZSBoZXJlIHNpbmNlIHdlIHRlc3QgcGFy
c2UoKQogICAgICAgICAjIG9uIHZhbGlkIGFyZ3VtZW50cyBlbHNld2hlcmUuCiAgICAgICAgIHBh
cnNlci5wYXJzZShbXSkgIyBhcmd1bWVudHMgdmFsaWQ6IG5vIGVycm9yIG9yIFN5c3RlbUV4aXQK
QEAgLTE5MSw3ICsxMzMsNiBAQCBjbGFzcyBHbG9iYWxWYXJpYWJsZXNUZXN0KHVuaXR0ZXN0LlRl
c3RDYXNlKToKICAgICAgICAgICAgICJKYXZhU2NyaXB0Q29yZS9xdC90ZXN0cy9xc2NyaXB0ZW5n
aW5lL3RzdF9xc2NyaXB0ZW5naW5lLmNwcCIsCiAgICAgICAgICAgICAicmVhZGFiaWxpdHkvbmFt
aW5nIikKIAotCiAgICAgZGVmIHRlc3RfbWF4X3JlcG9ydHNfcGVyX2NhdGVnb3J5KHNlbGYpOgog
ICAgICAgICAiIiJDaGVjayB0aGF0IF9NQVhfUkVQT1JUU19QRVJfQ0FURUdPUlkgaXMgdmFsaWQu
IiIiCiAgICAgICAgIGFsbF9jYXRlZ29yaWVzID0gc2VsZi5fYWxsX2NhdGVnb3JpZXMoKQpAQCAt
MjAwLDE1OSArMTQxLDE4IEBAIGNsYXNzIEdsb2JhbFZhcmlhYmxlc1Rlc3QodW5pdHRlc3QuVGVz
dENhc2UpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICdLZXkgIiVzIiBpcyBub3QgYSBj
YXRlZ29yeScgJSBjYXRlZ29yeSkKIAogCi1jbGFzcyBBcmd1bWVudFByaW50ZXJUZXN0KHVuaXR0
ZXN0LlRlc3RDYXNlKToKLQotICAgICIiIlRlc3RzIHRoZSBBcmd1bWVudFByaW50ZXIgY2xhc3Mu
IiIiCi0KLSAgICBfcHJpbnRlciA9IHN0eWxlLkFyZ3VtZW50UHJpbnRlcigpCi0KLSAgICBkZWYg
X2NyZWF0ZV9vcHRpb25zKHNlbGYsCi0gICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRfZm9y
bWF0PSdlbWFjcycsCi0gICAgICAgICAgICAgICAgICAgICAgICB2ZXJib3NpdHk9MywKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGZpbHRlcl9ydWxlcz1bXSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGdpdF9jb21taXQ9Tm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhX2ZsYWdf
dmFsdWVzPXt9KToKLSAgICAgICAgcmV0dXJuIFByb2Nlc3Nvck9wdGlvbnMoZXh0cmFfZmxhZ192
YWx1ZXM9ZXh0cmFfZmxhZ192YWx1ZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZpbHRlcl9ydWxlcz1maWx0ZXJfcnVsZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGdpdF9jb21taXQ9Z2l0X2NvbW1pdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgb3V0cHV0X2Zvcm1hdD1vdXRwdXRfZm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB2ZXJib3NpdHk9dmVyYm9zaXR5KQotCi0gICAgZGVmIHRlc3RfdG9fZmxhZ19zdHJp
bmcoc2VsZik6Ci0gICAgICAgIG9wdGlvbnMgPSBzZWxmLl9jcmVhdGVfb3B0aW9ucygndnM3Jywg
NSwgWycrZm9vJywgJy1iYXInXSwgJ2dpdCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB7J2EnOiAwLCAneic6IDF9KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscygn
LS1hPTAgLS1maWx0ZXI9K2ZvbywtYmFyIC0tZ2l0LWNvbW1pdD1naXQgJwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAnLS1vdXRwdXQ9dnM3IC0tdmVyYm9zZT01IC0tej0xJywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2VsZi5fcHJpbnRlci50b19mbGFnX3N0cmluZyhvcHRpb25zKSkK
LQotICAgICAgICAjIFRoaXMgaXMgdG8gY2hlY2sgdGhhdCAtLWZpbHRlciBhbmQgLS1naXQtY29t
bWl0IGRvIG5vdAotICAgICAgICAjIHNob3cgdXAgd2hlbiBub3QgdXNlci1zcGVjaWZpZWQuCi0g
ICAgICAgIG9wdGlvbnMgPSBzZWxmLl9jcmVhdGVfb3B0aW9ucygpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWxzKCctLW91dHB1dD1lbWFjcyAtLXZlcmJvc2U9MycsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgIHNlbGYuX3ByaW50ZXIudG9fZmxhZ19zdHJpbmcob3B0aW9ucykpCi0KK2NsYXNz
IENoZWNrV2ViS2l0U3R5bGVGdW5jdGlvblRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCi1jbGFz
cyBBcmd1bWVudFBhcnNlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotCi0gICAgIiIiVGVzdCB0
aGUgQXJndW1lbnRQYXJzZXIgY2xhc3MuIiIiCisgICAgIiIiVGVzdHMgdGhlIGZ1bmN0aW9ucyB3
aXRoIG5hbWVzIG9mIHRoZSBmb3JtIGNoZWNrX3dlYmtpdF9zdHlsZV8qLiIiIgogCi0gICAgZGVm
IF9wYXJzZShzZWxmKToKLSAgICAgICAgIiIiUmV0dXJuIGEgZGVmYXVsdCBwYXJzZSgpIGZ1bmN0
aW9uIGZvciB0ZXN0aW5nLiIiIgotICAgICAgICByZXR1cm4gc2VsZi5fY3JlYXRlX3BhcnNlcigp
LnBhcnNlCi0KLSAgICBkZWYgX2NyZWF0ZV9kZWZhdWx0cyhzZWxmKToKLSAgICAgICAgIiIiUmV0
dXJuIGEgRGVmYXVsdENvbW1hbmRPcHRpb25WYWx1ZXMgaW5zdGFuY2UgZm9yIHRlc3RpbmcuIiIi
Ci0gICAgICAgIGJhc2VfZmlsdGVyX3J1bGVzID0gWyItIiwgIit3aGl0ZXNwYWNlIl0KLSAgICAg
ICAgcmV0dXJuIERlZmF1bHRDb21tYW5kT3B0aW9uVmFsdWVzKG91dHB1dF9mb3JtYXQ9InZzNyIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJib3NpdHk9MykK
LQotICAgIGRlZiBfY3JlYXRlX3BhcnNlcihzZWxmKToKLSAgICAgICAgIiIiUmV0dXJuIGFuIEFy
Z3VtZW50UGFyc2VyIGluc3RhbmNlIGZvciB0ZXN0aW5nLiIiIgotICAgICAgICBkZWYgY3JlYXRl
X3VzYWdlKF9kZWZhdWx0X29wdGlvbnMpOgotICAgICAgICAgICAgIiIiUmV0dXJuIGEgdXNhZ2Ug
c3RyaW5nIGZvciB0ZXN0aW5nLiIiIgotICAgICAgICAgICAgcmV0dXJuICJ1c2FnZSIKLQotICAg
ICAgICBkZWYgc3RkZXJyX3dyaXRlKG1lc3NhZ2UpOgotICAgICAgICAgICAgIyBXZSBkbyBub3Qg
d2FudCB0aGUgdXNhZ2Ugc3RyaW5nIG9yIHN0eWxlIGNhdGVnb3JpZXMKLSAgICAgICAgICAgICMg
dG8gcHJpbnQgZHVyaW5nIHVuaXQgdGVzdHMsIHNvIHByaW50IG5vdGhpbmcuCi0gICAgICAgICAg
ICByZXR1cm4KLQotICAgICAgICBkZWZhdWx0X29wdGlvbnMgPSBzZWxmLl9jcmVhdGVfZGVmYXVs
dHMoKQotCi0gICAgICAgIHJldHVybiBzdHlsZS5Bcmd1bWVudFBhcnNlcihjcmVhdGVfdXNhZ2U9
Y3JlYXRlX3VzYWdlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVs
dF9vcHRpb25zPWRlZmF1bHRfb3B0aW9ucywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0ZGVycl93cml0ZT1zdGRlcnJfd3JpdGUpCi0KLSAgICBkZWYgdGVzdF9wYXJzZV9k
b2N1bWVudGF0aW9uKHNlbGYpOgotICAgICAgICBwYXJzZSA9IHNlbGYuX3BhcnNlKCkKLQotICAg
ICAgICAjIEZJWE1FOiBUZXN0IGJvdGggdGhlIHByaW50aW5nIG9mIHRoZSB1c2FnZSBzdHJpbmcg
YW5kIHRoZQotICAgICAgICAjICAgICAgICBmaWx0ZXIgY2F0ZWdvcmllcyBoZWxwLgotCi0gICAg
ICAgICMgUmVxdWVzdCB0aGUgdXNhZ2Ugc3RyaW5nLgotICAgICAgICBzZWxmLmFzc2VydFJhaXNl
cyhTeXN0ZW1FeGl0LCBwYXJzZSwgWyctLWhlbHAnXSkKLSAgICAgICAgIyBSZXF1ZXN0IGRlZmF1
bHQgZmlsdGVyIHJ1bGVzIGFuZCBhdmFpbGFibGUgc3R5bGUgY2F0ZWdvcmllcy4KLSAgICAgICAg
c2VsZi5hc3NlcnRSYWlzZXMoU3lzdGVtRXhpdCwgcGFyc2UsIFsnLS1maWx0ZXI9J10pCi0KLSAg
ICBkZWYgdGVzdF9wYXJzZV9iYWRfdmFsdWVzKHNlbGYpOgotICAgICAgICBwYXJzZSA9IHNlbGYu
X3BhcnNlKCkKLQotICAgICAgICAjIFBhc3MgYW4gdW5zdXBwb3J0ZWQgYXJndW1lbnQuCi0gICAg
ICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5c3RlbUV4aXQsIHBhcnNlLCBbJy0tYmFkJ10pCi0KLSAg
ICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcGFyc2UsIFsnLS12ZXJib3NlPWJh
ZCddKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBwYXJzZSwgWyctLXZl
cmJvc2U9MCddKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBwYXJzZSwg
WyctLXZlcmJvc2U9NiddKQotICAgICAgICBwYXJzZShbJy0tdmVyYm9zZT0xJ10pICMgd29ya3MK
LSAgICAgICAgcGFyc2UoWyctLXZlcmJvc2U9NSddKSAjIHdvcmtzCi0KLSAgICAgICAgc2VsZi5h
c3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcGFyc2UsIFsnLS1vdXRwdXQ9YmFkJ10pCi0gICAgICAg
IHBhcnNlKFsnLS1vdXRwdXQ9dnM3J10pICMgd29ya3MKLQotICAgICAgICAjIFBhc3MgYSBmaWx0
ZXIgcnVsZSBub3QgYmVnaW5uaW5nIHdpdGggKyBvciAtLgotICAgICAgICBzZWxmLmFzc2VydFJh
aXNlcyhWYWx1ZUVycm9yLCBwYXJzZSwgWyctLWZpbHRlcj1idWlsZCddKQotICAgICAgICBwYXJz
ZShbJy0tZmlsdGVyPStidWlsZCddKSAjIHdvcmtzCi0gICAgICAgICMgUGFzcyBmaWxlcyBhbmQg
Z2l0LWNvbW1pdCBhdCB0aGUgc2FtZSB0aW1lLgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhT
eXN0ZW1FeGl0LCBwYXJzZSwgWyctLWdpdC1jb21taXQ9JywgJ2ZpbGUudHh0J10pCi0gICAgICAg
ICMgUGFzcyBhbiBleHRyYSBmbGFnIGFscmVhZHkgc3VwcG9ydGVkLgotICAgICAgICBzZWxmLmFz
c2VydFJhaXNlcyhWYWx1ZUVycm9yLCBwYXJzZSwgW10sIFsnZmlsdGVyPSddKQotICAgICAgICBw
YXJzZShbXSwgWydleHRyYT0nXSkgIyB3b3JrcwotICAgICAgICAjIFBhc3MgYW4gZXh0cmEgZmxh
ZyB3aXRoIHR5cG8uCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5c3RlbUV4aXQsIHBhcnNl
LCBbJy0tZXh0cmF0eXBvPSddLCBbJ2V4dHJhPSddKQotICAgICAgICBwYXJzZShbJy0tZXh0cmE9
J10sIFsnZXh0cmE9J10pICMgd29ya3MKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVF
cnJvciwgcGFyc2UsIFtdLCBbJ2V4dHJhPScsICdleHRyYT0nXSkKLQotCi0gICAgZGVmIHRlc3Rf
cGFyc2VfZGVmYXVsdF9hcmd1bWVudHMoc2VsZik6Ci0gICAgICAgIHBhcnNlID0gc2VsZi5fcGFy
c2UoKQotCi0gICAgICAgIChmaWxlcywgb3B0aW9ucykgPSBwYXJzZShbXSkKLQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFscyhmaWxlcywgW10pCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMo
b3B0aW9ucy5vdXRwdXRfZm9ybWF0LCAndnM3JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMo
b3B0aW9ucy52ZXJib3NpdHksIDMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG9wdGlvbnMu
ZmlsdGVyX3J1bGVzLCBbXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMob3B0aW9ucy5naXRf
Y29tbWl0LCBOb25lKQotCi0gICAgZGVmIHRlc3RfcGFyc2VfZXhwbGljaXRfYXJndW1lbnRzKHNl
bGYpOgotICAgICAgICBwYXJzZSA9IHNlbGYuX3BhcnNlKCkKLQotICAgICAgICAjIFBhc3Mgbm9u
LWRlZmF1bHQgZXhwbGljaXQgdmFsdWVzLgotICAgICAgICAoZmlsZXMsIG9wdGlvbnMpID0gcGFy
c2UoWyctLW91dHB1dD1lbWFjcyddKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhvcHRpb25z
Lm91dHB1dF9mb3JtYXQsICdlbWFjcycpCi0gICAgICAgIChmaWxlcywgb3B0aW9ucykgPSBwYXJz
ZShbJy0tdmVyYm9zZT00J10pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG9wdGlvbnMudmVy
Ym9zaXR5LCA0KQotICAgICAgICAoZmlsZXMsIG9wdGlvbnMpID0gcGFyc2UoWyctLWdpdC1jb21t
aXQ9Y29tbWl0J10pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG9wdGlvbnMuZ2l0X2NvbW1p
dCwgJ2NvbW1pdCcpCi0KLSAgICAgICAgIyBQYXNzIHVzZXJfcnVsZXMuCi0gICAgICAgIChmaWxl
cywgb3B0aW9ucykgPSBwYXJzZShbJy0tZmlsdGVyPStidWlsZCwtd2hpdGVzcGFjZSddKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFscyhvcHRpb25zLmZpbHRlcl9ydWxlcywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgWyIrYnVpbGQiLCAiLXdoaXRlc3BhY2UiXSkKKyAgICBkZWYgdGVzdF9j
aGVja193ZWJraXRfc3R5bGVfY29uZmlndXJhdGlvbihzZWxmKToKKyAgICAgICAgIyBFeGVyY2lz
ZSB0aGUgY29kZSBwYXRoIHRvIG1ha2Ugc3VyZSB0aGUgZnVuY3Rpb24gZG9lcyBub3QgZXJyb3Ig
b3V0LgorICAgICAgICBvcHRpb25fdmFsdWVzID0gQ29tbWFuZE9wdGlvblZhbHVlcygpCisgICAg
ICAgIGNvbmZpZ3VyYXRpb24gPSBjaGVja193ZWJraXRfc3R5bGVfY29uZmlndXJhdGlvbihvcHRp
b25fdmFsdWVzKQogCi0gICAgICAgICMgUGFzcyBzcHVyaW91cyB3aGl0ZSBzcGFjZSBpbiB1c2Vy
IHJ1bGVzLgotICAgICAgICAoZmlsZXMsIG9wdGlvbnMpID0gcGFyc2UoWyctLWZpbHRlcj0rYnVp
bGQsIC13aGl0ZXNwYWNlJ10pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG9wdGlvbnMuZmls
dGVyX3J1bGVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICBbIitidWlsZCIsICItd2hpdGVz
cGFjZSJdKQotCi0gICAgICAgICMgUGFzcyBleHRyYSBmbGFnIHZhbHVlcy4KLSAgICAgICAgKGZp
bGVzLCBvcHRpb25zKSA9IHBhcnNlKFsnLS1leHRyYSddLCBbJ2V4dHJhJ10pCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWxzKG9wdGlvbnMuZXh0cmFfZmxhZ192YWx1ZXMsIHsnLS1leHRyYSc6ICcn
fSkKLSAgICAgICAgKGZpbGVzLCBvcHRpb25zKSA9IHBhcnNlKFsnLS1leHRyYT0nXSwgWydleHRy
YT0nXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMob3B0aW9ucy5leHRyYV9mbGFnX3ZhbHVl
cywgeyctLWV4dHJhJzogJyd9KQotICAgICAgICAoZmlsZXMsIG9wdGlvbnMpID0gcGFyc2UoWyct
LWV4dHJhPXgnXSwgWydleHRyYT0nXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMob3B0aW9u
cy5leHRyYV9mbGFnX3ZhbHVlcywgeyctLWV4dHJhJzogJ3gnfSkKLQotICAgIGRlZiB0ZXN0X3Bh
cnNlX2ZpbGVzKHNlbGYpOgotICAgICAgICBwYXJzZSA9IHNlbGYuX3BhcnNlKCkKLQotICAgICAg
ICAoZmlsZXMsIG9wdGlvbnMpID0gcGFyc2UoWydmb28uY3BwJ10pCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWxzKGZpbGVzLCBbJ2Zvby5jcHAnXSkKLQotICAgICAgICAjIFBhc3MgbXVsdGlwbGUg
ZmlsZXMuCi0gICAgICAgIChmaWxlcywgb3B0aW9ucykgPSBwYXJzZShbJy0tb3V0cHV0PWVtYWNz
JywgJ2Zvby5jcHAnLCAnYmFyLmNwcCddKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhmaWxl
cywgWydmb28uY3BwJywgJ2Jhci5jcHAnXSkKKyAgICBkZWYgdGVzdF9jaGVja193ZWJraXRfc3R5
bGVfcGFyc2VyKHNlbGYpOgorICAgICAgICAjIEV4ZXJjaXNlIHRoZSBjb2RlIHBhdGggdG8gbWFr
ZSBzdXJlIHRoZSBmdW5jdGlvbiBkb2VzIG5vdCBlcnJvciBvdXQuCisgICAgICAgIHBhcnNlciA9
IGNoZWNrX3dlYmtpdF9zdHlsZV9wYXJzZXIoKQogCiAKIGNsYXNzIFByb2Nlc3NvckRpc3BhdGNo
ZXJTa2lwVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L3N0eWxlL29wdHBhcnNlci5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvc3R5bGUvb3B0cGFyc2VyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjQxMzdjOGIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3N0eWxlL29wdHBhcnNlci5weQpAQCAtMCwwICsxLDQyNCBAQAorIyBDb3B5cmlnaHQg
KEMpIDIwMTAgQ2hyaXMgSmVyZG9uZWsgKGNqZXJkb25la0B3ZWJraXQub3JnKQorIworIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
IyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisj
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycgQU5EIEFOWQorIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisjIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisjIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyMgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisjIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisjIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisiIiJTdXBwb3J0cyB0aGUgcGFyc2lu
ZyBvZiBjb21tYW5kLWxpbmUgb3B0aW9ucyBmb3IgY2hlY2std2Via2l0LXN0eWxlLiIiIgorCitp
bXBvcnQgZ2V0b3B0CitpbXBvcnQgb3MucGF0aAoraW1wb3J0IHN5cworCitmcm9tIGZpbHRlciBp
bXBvcnQgdmFsaWRhdGVfZmlsdGVyX3J1bGVzCisjIFRoaXMgbW9kdWxlIHNob3VsZCBub3QgaW1w
b3J0IGFueXRoaW5nIGZyb20gY2hlY2tlci5weS4KKworCitkZWYgX2NyZWF0ZV91c2FnZShkZWZh
dWx0X29wdGlvbnMpOgorICAgICIiIlJldHVybiB0aGUgdXNhZ2Ugc3RyaW5nIHRvIGRpc3BsYXkg
Zm9yIGNvbW1hbmQgaGVscC4KKworICAgIEFyZ3M6CisgICAgICBkZWZhdWx0X29wdGlvbnM6IEEg
RGVmYXVsdENvbW1hbmRPcHRpb25WYWx1ZXMgaW5zdGFuY2UuCisKKyAgICAiIiIKKyAgICB1c2Fn
ZSA9ICIiIgorU3ludGF4OiAlKHByb2dyYW1fbmFtZSlzIFstLXZlcmJvc2U9I10gWy0tZ2l0LWNv
bW1pdD08U2luZ2xlQ29tbWl0Pl0gWy0tb3V0cHV0PXZzN10KKyAgICAgICAgWy0tZmlsdGVyPS14
LCt5LC4uLl0gW2ZpbGVdIC4uLgorCisgIFRoZSBzdHlsZSBndWlkZWxpbmVzIHRoaXMgdHJpZXMg
dG8gZm9sbG93IGFyZSBoZXJlOgorICAgIGh0dHA6Ly93ZWJraXQub3JnL2NvZGluZy9jb2Rpbmct
c3R5bGUuaHRtbAorCisgIEV2ZXJ5IHN0eWxlIGVycm9yIGlzIGdpdmVuIGEgY29uZmlkZW5jZSBz
Y29yZSBmcm9tIDEtNSwgd2l0aCA1IG1lYW5pbmcKKyAgd2UgYXJlIGNlcnRhaW4gb2YgdGhlIHBy
b2JsZW0sIGFuZCAxIG1lYW5pbmcgaXQgY291bGQgYmUgYSBsZWdpdGltYXRlCisgIGNvbnN0cnVj
dC4gIFRoaXMgY2FuIG1pc3Mgc29tZSBlcnJvcnMgYW5kIGRvZXMgbm90IHN1YnN0aXR1dGUgZm9y
CisgIGNvZGUgcmV2aWV3LgorCisgIFRvIHByZXZlbnQgc3BlY2lmaWMgbGluZXMgZnJvbSBiZWlu
ZyBsaW50ZWQsIGFkZCBhICcvLyBOT0xJTlQnIGNvbW1lbnQgdG8gdGhlCisgIGVuZCBvZiB0aGUg
bGluZS4KKworICBMaW50ZWQgZXh0ZW5zaW9ucyBhcmUgLmNwcCwgLmMgYW5kIC5oLiAgT3RoZXIg
ZmlsZSB0eXBlcyBhcmUgaWdub3JlZC4KKworICBUaGUgZmlsZSBwYXJhbWV0ZXIgaXMgb3B0aW9u
YWwgYW5kIGFjY2VwdHMgbXVsdGlwbGUgZmlsZXMuICBMZWF2aW5nCisgIG91dCB0aGUgZmlsZSBw
YXJhbWV0ZXIgYXBwbGllcyB0aGUgY2hlY2sgdG8gYWxsIGZpbGVzIGNvbnNpZGVyZWQgY2hhbmdl
ZAorICBieSB5b3VyIHNvdXJjZSBjb250cm9sIG1hbmFnZW1lbnQgc3lzdGVtLgorCisgIEZsYWdz
OgorCisgICAgdmVyYm9zZT0jCisgICAgICBBIG51bWJlciAxLTUgdGhhdCByZXN0cmljdHMgb3V0
cHV0IHRvIGVycm9ycyB3aXRoIGEgY29uZmlkZW5jZQorICAgICAgc2NvcmUgYXQgb3IgYWJvdmUg
dGhpcyB2YWx1ZS4gSW4gcGFydGljdWxhciwgdGhlIHZhbHVlIDEgZGlzcGxheXMKKyAgICAgIGFs
bCBlcnJvcnMuIFRoZSBkZWZhdWx0IGlzICUoZGVmYXVsdF92ZXJib3NpdHkpcy4KKworICAgIGdp
dC1jb21taXQ9PFNpbmdsZUNvbW1pdD4KKyAgICAgIENoZWNrcyB0aGUgc3R5bGUgb2YgZXZlcnl0
aGluZyBmcm9tIHRoZSBnaXZlbiBjb21taXQgdG8gdGhlIGxvY2FsIHRyZWUuCisKKyAgICBvdXRw
dXQ9dnM3CisgICAgICBUaGUgb3V0cHV0IGZvcm1hdCwgd2hpY2ggbWF5IGJlIG9uZSBvZgorICAg
ICAgICBlbWFjcyA6IHRvIGVhc2UgZW1hY3MgcGFyc2luZworICAgICAgICB2czcgICA6IGNvbXBh
dGlibGUgd2l0aCBWaXN1YWwgU3R1ZGlvCisgICAgICBEZWZhdWx0cyB0byAiJShkZWZhdWx0X291
dHB1dF9mb3JtYXQpcyIuIE90aGVyIGZvcm1hdHMgYXJlIHVuc3VwcG9ydGVkLgorCisgICAgZmls
dGVyPS14LCt5LC4uLgorICAgICAgQSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBib29sZWFuIGZp
bHRlciBydWxlcyB1c2VkIHRvIGZpbHRlcgorICAgICAgd2hpY2ggY2F0ZWdvcmllcyBvZiBzdHls
ZSBndWlkZWxpbmVzIHRvIGNoZWNrLiAgVGhlIHNjcmlwdCBjaGVja3MKKyAgICAgIGEgY2F0ZWdv
cnkgaWYgdGhlIGNhdGVnb3J5IHBhc3NlcyB0aGUgZmlsdGVyIHJ1bGVzLCBhcyBmb2xsb3dzLgor
CisgICAgICBBbnkgd2Via2l0IGNhdGVnb3J5IHN0YXJ0cyBvdXQgcGFzc2luZy4gIEFsbCBmaWx0
ZXIgcnVsZXMgYXJlIHRoZW4KKyAgICAgIGV2YWx1YXRlZCBsZWZ0IHRvIHJpZ2h0LCB3aXRoIGxh
dGVyIHJ1bGVzIHRha2luZyBwcmVjZWRlbmNlLiAgRm9yCisgICAgICBleGFtcGxlLCB0aGUgcnVs
ZSAiK2ZvbyIgcGFzc2VzIGFueSBjYXRlZ29yeSB0aGF0IHN0YXJ0cyB3aXRoICJmb28iLAorICAg
ICAgYW5kICItZm9vIiBmYWlscyBhbnkgc3VjaCBjYXRlZ29yeS4gIFRoZSBmaWx0ZXIgaW5wdXQg
Ii13aGl0ZXNwYWNlLAorICAgICAgK3doaXRlc3BhY2UvYnJhY2VzIiBmYWlscyB0aGUgY2F0ZWdv
cnkgIndoaXRlc3BhY2UvdGFiIiBhbmQgcGFzc2VzCisgICAgICAid2hpdGVzcGFjZS9icmFjZXMi
LgorCisgICAgICBFeGFtcGxlczogLS1maWx0ZXI9LXdoaXRlc3BhY2UsK3doaXRlc3BhY2UvYnJh
Y2VzCisgICAgICAgICAgICAgICAgLS1maWx0ZXI9LXdoaXRlc3BhY2UsLXJ1bnRpbWUvcHJpbnRm
LCtydW50aW1lL3ByaW50Zl9mb3JtYXQKKyAgICAgICAgICAgICAgICAtLWZpbHRlcj0tLCtidWls
ZC9pbmNsdWRlX3doYXRfeW91X3VzZQorCisgICAgICBDYXRlZ29yeSBuYW1lcyBhcHBlYXIgaW4g
ZXJyb3IgbWVzc2FnZXMgaW4gYnJhY2tldHMsIGZvciBleGFtcGxlCisgICAgICBbd2hpdGVzcGFj
ZS9pbmRlbnRdLiAgVG8gc2VlIGEgbGlzdCBvZiBhbGwgY2F0ZWdvcmllcyBhdmFpbGFibGUgdG8K
KyAgICAgICUocHJvZ3JhbV9uYW1lKXMsIGFsb25nIHdpdGggd2hpY2ggYXJlIGVuYWJsZWQgYnkg
ZGVmYXVsdCwgcGFzcworICAgICAgdGhlIGVtcHR5IGZpbHRlciBhcyBmb2xsb3dzOgorICAgICAg
ICAgLS1maWx0ZXI9CisiIiIgJSB7J3Byb2dyYW1fbmFtZSc6IG9zLnBhdGguYmFzZW5hbWUoc3lz
LmFyZ3ZbMF0pLAorICAgICAgICdkZWZhdWx0X3ZlcmJvc2l0eSc6IGRlZmF1bHRfb3B0aW9ucy52
ZXJib3NpdHksCisgICAgICAgJ2RlZmF1bHRfb3V0cHV0X2Zvcm1hdCc6IGRlZmF1bHRfb3B0aW9u
cy5vdXRwdXRfZm9ybWF0fQorCisgICAgcmV0dXJuIHVzYWdlCisKKworIyBUaGlzIGNsYXNzIHNo
b3VsZCBub3QgaGF2ZSBrbm93bGVkZ2Ugb2YgdGhlIGZsYWcga2V5IG5hbWVzLgorY2xhc3MgRGVm
YXVsdENvbW1hbmRPcHRpb25WYWx1ZXMob2JqZWN0KToKKworICAgICIiIlN0b3JlcyB0aGUgZGVm
YXVsdCBjaGVjay13ZWJraXQtc3R5bGUgY29tbWFuZC1saW5lIG9wdGlvbnMuCisKKyAgICBBdHRy
aWJ1dGVzOgorICAgICAgb3V0cHV0X2Zvcm1hdDogQSBzdHJpbmcgdGhhdCBpcyB0aGUgZGVmYXVs
dCBvdXRwdXQgZm9ybWF0LgorICAgICAgdmVyYm9zaXR5OiBBbiBpbnRlZ2VyIHRoYXQgaXMgdGhl
IGRlZmF1bHQgdmVyYm9zaXR5IGxldmVsLgorCisgICAgIiIiCisKKyAgICBkZWYgX19pbml0X18o
c2VsZiwgb3V0cHV0X2Zvcm1hdCwgdmVyYm9zaXR5KToKKyAgICAgICAgc2VsZi5vdXRwdXRfZm9y
bWF0ID0gb3V0cHV0X2Zvcm1hdAorICAgICAgICBzZWxmLnZlcmJvc2l0eSA9IHZlcmJvc2l0eQor
CisKKyMgRklYTUU6IEVsaW1pbmF0ZSBzdXBwb3J0IGZvciAiZXh0cmFfZmxhZ192YWx1ZXMiLgor
IworIyBUaGlzIGNsYXNzIHNob3VsZCBub3QgaGF2ZSBrbm93bGVkZ2Ugb2YgdGhlIGZsYWcga2V5
IG5hbWVzLgorY2xhc3MgQ29tbWFuZE9wdGlvblZhbHVlcyhvYmplY3QpOgorCisgICAgIiIiU3Rv
cmVzIHRoZSBvcHRpb24gdmFsdWVzIHBhc3NlZCBieSB0aGUgdXNlciB2aWEgdGhlIGNvbW1hbmQg
bGluZS4KKworICAgIEF0dHJpYnV0ZXM6CisgICAgICBleHRyYV9mbGFnX3ZhbHVlczogQSBzdHJp
bmctc3RyaW5nIGRpY3Rpb25hcnkgb2YgYWxsIGZsYWcga2V5LXZhbHVlCisgICAgICAgICAgICAg
ICAgICAgICAgICAgcGFpcnMgdGhhdCBhcmUgbm90IG90aGVyd2lzZSByZXByZXNlbnRlZCBieSB0
aGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3MuICBUaGUgZGVmYXVsdCBpcyB0aGUg
ZW1wdHkgZGljdGlvbmFyeS4KKworICAgICAgZmlsdGVyX3J1bGVzOiBUaGUgbGlzdCBvZiBmaWx0
ZXIgcnVsZXMgcHJvdmlkZWQgYnkgdGhlIHVzZXIuCisgICAgICAgICAgICAgICAgICAgIFRoZXNl
IHJ1bGVzIGFyZSBhcHBlbmRlZCB0byB0aGUgYmFzZSBydWxlcyBhbmQKKyAgICAgICAgICAgICAg
ICAgICAgcGF0aC1zcGVjaWZpYyBydWxlcyBhbmQgc28gdGFrZSBwcmVjZWRlbmNlIG92ZXIKKyAg
ICAgICAgICAgICAgICAgICAgdGhlIGJhc2UgZmlsdGVyIHJ1bGVzLCBldGMuCisKKyAgICAgIGdp
dF9jb21taXQ6IEEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgZ2l0IGNvbW1pdCB0byBjaGVjay4K
KyAgICAgICAgICAgICAgICAgIFRoZSBkZWZhdWx0IGlzIE5vbmUuCisKKyAgICAgIG91dHB1dF9m
b3JtYXQ6IEEgc3RyaW5nIHRoYXQgaXMgdGhlIG91dHB1dCBmb3JtYXQuICBUaGUgc3VwcG9ydGVk
CisgICAgICAgICAgICAgICAgICAgICBvdXRwdXQgZm9ybWF0cyBhcmUgImVtYWNzIiB3aGljaCBl
bWFjcyBjYW4gcGFyc2UKKyAgICAgICAgICAgICAgICAgICAgIGFuZCAidnM3IiB3aGljaCBNaWNy
b3NvZnQgVmlzdWFsIFN0dWRpbyA3IGNhbiBwYXJzZS4KKworICAgICAgdmVyYm9zaXR5OiBBbiBp
bnRlZ2VyIGJldHdlZW4gMS01IGluY2x1c2l2ZSB0aGF0IHJlc3RyaWN0cyBvdXRwdXQKKyAgICAg
ICAgICAgICAgICAgdG8gZXJyb3JzIHdpdGggYSBjb25maWRlbmNlIHNjb3JlIGF0IG9yIGFib3Zl
IHRoaXMgdmFsdWUuCisgICAgICAgICAgICAgICAgIFRoZSBkZWZhdWx0IGlzIDEsIHdoaWNoIHJl
cG9ydHMgYWxsIGVycm9ycy4KKworICAgICIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLAorICAg
ICAgICAgICAgICAgICBleHRyYV9mbGFnX3ZhbHVlcz1Ob25lLAorICAgICAgICAgICAgICAgICBm
aWx0ZXJfcnVsZXM9Tm9uZSwKKyAgICAgICAgICAgICAgICAgZ2l0X2NvbW1pdD1Ob25lLAorICAg
ICAgICAgICAgICAgICBvdXRwdXRfZm9ybWF0PSJlbWFjcyIsCisgICAgICAgICAgICAgICAgIHZl
cmJvc2l0eT0xKToKKyAgICAgICAgaWYgZXh0cmFfZmxhZ192YWx1ZXMgaXMgTm9uZToKKyAgICAg
ICAgICAgIGV4dHJhX2ZsYWdfdmFsdWVzID0ge30KKyAgICAgICAgaWYgZmlsdGVyX3J1bGVzIGlz
IE5vbmU6CisgICAgICAgICAgICBmaWx0ZXJfcnVsZXMgPSBbXQorCisgICAgICAgIGlmIG91dHB1
dF9mb3JtYXQgbm90IGluICgiZW1hY3MiLCAidnM3Iik6CisgICAgICAgICAgICByYWlzZSBWYWx1
ZUVycm9yKCdJbnZhbGlkICJvdXRwdXRfZm9ybWF0IiBwYXJhbWV0ZXI6ICcKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ3ZhbHVlIG11c3QgYmUgImVtYWNzIiBvciAidnM3Ii4gJworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnVmFsdWUgZ2l2ZW46ICIlcyIuJyAlIG91dHB1dF9m
b3JtYXQpCisKKyAgICAgICAgaWYgKHZlcmJvc2l0eSA8IDEpIG9yICh2ZXJib3NpdHkgPiA1KToK
KyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0ludmFsaWQgInZlcmJvc2l0eSIgcGFyYW1l
dGVyOiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSBtdXN0IGJlIGFuIGlu
dGVnZXIgYmV0d2VlbiAxLTUgaW5jbHVzaXZlLiAiCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICdWYWx1ZSBnaXZlbjogIiVzIi4nICUgdmVyYm9zaXR5KQorCisgICAgICAgIHNlbGYuZXh0
cmFfZmxhZ192YWx1ZXMgPSBleHRyYV9mbGFnX3ZhbHVlcworICAgICAgICBzZWxmLmZpbHRlcl9y
dWxlcyA9IGZpbHRlcl9ydWxlcworICAgICAgICBzZWxmLmdpdF9jb21taXQgPSBnaXRfY29tbWl0
CisgICAgICAgIHNlbGYub3V0cHV0X2Zvcm1hdCA9IG91dHB1dF9mb3JtYXQKKyAgICAgICAgc2Vs
Zi52ZXJib3NpdHkgPSB2ZXJib3NpdHkKKworICAgICMgVXNlZnVsIGZvciB1bml0IHRlc3Rpbmcu
CisgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgICIiIlJldHVybiB3aGV0aGVy
IHRoaXMgaW5zdGFuY2UgaXMgZXF1YWwgdG8gYW5vdGhlci4iIiIKKyAgICAgICAgaWYgc2VsZi5l
eHRyYV9mbGFnX3ZhbHVlcyAhPSBvdGhlci5leHRyYV9mbGFnX3ZhbHVlczoKKyAgICAgICAgICAg
IHJldHVybiBGYWxzZQorICAgICAgICBpZiBzZWxmLmZpbHRlcl9ydWxlcyAhPSBvdGhlci5maWx0
ZXJfcnVsZXM6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgaWYgc2VsZi5naXRf
Y29tbWl0ICE9IG90aGVyLmdpdF9jb21taXQ6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAg
ICAgICAgaWYgc2VsZi5vdXRwdXRfZm9ybWF0ICE9IG90aGVyLm91dHB1dF9mb3JtYXQ6CisgICAg
ICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgaWYgc2VsZi52ZXJib3NpdHkgIT0gb3RoZXIu
dmVyYm9zaXR5OgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICAgICAgcmV0dXJuIFRy
dWUKKworICAgICMgVXNlZnVsIGZvciB1bml0IHRlc3RpbmcuCisgICAgZGVmIF9fbmVfXyhzZWxm
LCBvdGhlcik6CisgICAgICAgICMgUHl0aG9uIGRvZXMgbm90IGF1dG9tYXRpY2FsbHkgZGVkdWNl
IHRoaXMgZnJvbSBfX2VxX18oKS4KKyAgICAgICAgcmV0dXJuIG5vdCBzZWxmLl9fZXFfXyhvdGhl
cikKKworCitjbGFzcyBBcmd1bWVudFByaW50ZXIob2JqZWN0KToKKworICAgICIiIlN1cHBvcnRz
IHRoZSBwcmludGluZyBvZiBjaGVjay13ZWJraXQtc3R5bGUgY29tbWFuZCBhcmd1bWVudHMuIiIi
CisKKyAgICBkZWYgX2ZsYWdfcGFpcl90b19zdHJpbmcoc2VsZiwgZmxhZ19rZXksIGZsYWdfdmFs
dWUpOgorICAgICAgICByZXR1cm4gJy0tJShrZXkpcz0lKHZhbClzJyAlIHsna2V5JzogZmxhZ19r
ZXksICd2YWwnOiBmbGFnX3ZhbHVlIH0KKworICAgIGRlZiB0b19mbGFnX3N0cmluZyhzZWxmLCBv
cHRpb25zKToKKyAgICAgICAgIiIiUmV0dXJuIGEgZmxhZyBzdHJpbmcgb2YgdGhlIGdpdmVuIENv
bW1hbmRPcHRpb25WYWx1ZXMgaW5zdGFuY2UuCisKKyAgICAgICAgVGhpcyBtZXRob2Qgb3JkZXJz
IHRoZSBmbGFnIHZhbHVlcyBhbHBoYWJldGljYWxseSBieSB0aGUgZmxhZyBrZXkuCisKKyAgICAg
ICAgQXJnczoKKyAgICAgICAgICBvcHRpb25zOiBBIENvbW1hbmRPcHRpb25WYWx1ZXMgaW5zdGFu
Y2UuCisKKyAgICAgICAgIiIiCisgICAgICAgIGZsYWdzID0gb3B0aW9ucy5leHRyYV9mbGFnX3Zh
bHVlcy5jb3B5KCkKKworICAgICAgICBmbGFnc1snb3V0cHV0J10gPSBvcHRpb25zLm91dHB1dF9m
b3JtYXQKKyAgICAgICAgZmxhZ3NbJ3ZlcmJvc2UnXSA9IG9wdGlvbnMudmVyYm9zaXR5CisgICAg
ICAgICMgT25seSBpbmNsdWRlIHRoZSBmaWx0ZXIgZmxhZyBpZiB1c2VyLXByb3ZpZGVkIHJ1bGVz
IGFyZSBwcmVzZW50LgorICAgICAgICBmaWx0ZXJfcnVsZXMgPSBvcHRpb25zLmZpbHRlcl9ydWxl
cworICAgICAgICBpZiBmaWx0ZXJfcnVsZXM6CisgICAgICAgICAgICBmbGFnc1snZmlsdGVyJ10g
PSAiLCIuam9pbihmaWx0ZXJfcnVsZXMpCisgICAgICAgIGlmIG9wdGlvbnMuZ2l0X2NvbW1pdDoK
KyAgICAgICAgICAgIGZsYWdzWydnaXQtY29tbWl0J10gPSBvcHRpb25zLmdpdF9jb21taXQKKwor
ICAgICAgICBmbGFnX3N0cmluZyA9ICcnCisgICAgICAgICMgQWxwaGFiZXRpemluZyBsZXRzIHVz
IHVuaXQgdGVzdCB0aGlzIG1ldGhvZC4KKyAgICAgICAgZm9yIGtleSBpbiBzb3J0ZWQoZmxhZ3Mu
a2V5cygpKToKKyAgICAgICAgICAgIGZsYWdfc3RyaW5nICs9IHNlbGYuX2ZsYWdfcGFpcl90b19z
dHJpbmcoa2V5LCBmbGFnc1trZXldKSArICcgJworCisgICAgICAgIHJldHVybiBmbGFnX3N0cmlu
Zy5zdHJpcCgpCisKKworIyBGSVhNRTogUmVwbGFjZSB0aGUgdXNlIG9mIGdldG9wdC5nZXRvcHQo
KSB3aXRoIG9wdHBhcnNlLk9wdGlvblBhcnNlci4KK2NsYXNzIEFyZ3VtZW50UGFyc2VyKG9iamVj
dCk6CisKKyAgICAjIEZJWE1FOiBNb3ZlIHRoZSBkb2N1bWVudGF0aW9uIG9mIHRoZSBhdHRyaWJ1
dGVzIHRvIHRoZSBfX2luaXRfXworICAgICMgICAgICAgIGRvY3N0cmluZyBhZnRlciBtYWtpbmcg
dGhlIGF0dHJpYnV0ZXMgaW50ZXJuYWwuCisgICAgIiIiU3VwcG9ydHMgdGhlIHBhcnNpbmcgb2Yg
Y2hlY2std2Via2l0LXN0eWxlIGNvbW1hbmQgYXJndW1lbnRzLgorCisgICAgQXR0cmlidXRlczoK
KyAgICAgIGNyZWF0ZV91c2FnZTogQSBmdW5jdGlvbiB0aGF0IGFjY2VwdHMgYSBEZWZhdWx0Q29t
bWFuZE9wdGlvblZhbHVlcworICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZSBhbmQgcmV0dXJu
cyBhIHN0cmluZyBvZiB1c2FnZSBpbnN0cnVjdGlvbnMuCisgICAgICAgICAgICAgICAgICAgIERl
ZmF1bHRzIHRvIHRoZSBmdW5jdGlvbiB0aGF0IGdlbmVyYXRlcyB0aGUgdXNhZ2UKKyAgICAgICAg
ICAgICAgICAgICAgc3RyaW5nIGZvciBjaGVjay13ZWJraXQtc3R5bGUuCisgICAgICBkZWZhdWx0
X29wdGlvbnM6IEEgRGVmYXVsdENvbW1hbmRPcHRpb25WYWx1ZXMgaW5zdGFuY2UgdGhhdCBwcm92
aWRlcworICAgICAgICAgICAgICAgICAgICAgICB0aGUgZGVmYXVsdCB2YWx1ZXMgZm9yIG9wdGlv
bnMgbm90IGV4cGxpY2l0bHkKKyAgICAgICAgICAgICAgICAgICAgICAgcHJvdmlkZWQgYnkgdGhl
IHVzZXIuCisgICAgICBzdGRlcnJfd3JpdGU6IEEgZnVuY3Rpb24gdGhhdCB0YWtlcyBhIHN0cmlu
ZyBhcyBhIHBhcmFtZXRlciBhbmQKKyAgICAgICAgICAgICAgICAgICAgc2VydmVzIGFzIHN0ZGVy
ci53cml0ZS4gIERlZmF1bHRzIHRvIHN5cy5zdGRlcnIud3JpdGUuCisgICAgICAgICAgICAgICAg
ICAgIFRoaXMgcGFyYW1ldGVyIHNob3VsZCBiZSBzcGVjaWZpZWQgb25seSBmb3IgdW5pdCB0ZXN0
cy4KKworICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsCisgICAgICAgICAgICAgICAg
IGFsbF9jYXRlZ29yaWVzLAorICAgICAgICAgICAgICAgICBkZWZhdWx0X29wdGlvbnMsCisgICAg
ICAgICAgICAgICAgIGJhc2VfZmlsdGVyX3J1bGVzPU5vbmUsCisgICAgICAgICAgICAgICAgIGNy
ZWF0ZV91c2FnZT1Ob25lLAorICAgICAgICAgICAgICAgICBzdGRlcnJfd3JpdGU9Tm9uZSk6Cisg
ICAgICAgICIiIkNyZWF0ZSBhbiBBcmd1bWVudFBhcnNlciBpbnN0YW5jZS4KKworICAgICAgICBB
cmdzOgorICAgICAgICAgIGFsbF9jYXRlZ29yaWVzOiBUaGUgc2V0IG9mIGFsbCBhdmFpbGFibGUg
c3R5bGUgY2F0ZWdvcmllcy4KKyAgICAgICAgICBkZWZhdWx0X29wdGlvbnM6IFNlZSB0aGUgY29y
cmVzcG9uZGluZyBhdHRyaWJ1dGUgaW4gdGhlIGNsYXNzCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkb2NzdHJpbmcuCisgICAgICAgIEtleXdvcmQgQXJnczoKKyAgICAgICAgICBiYXNlX2Zp
bHRlcl9ydWxlczogVGhlIGxpc3Qgb2YgZmlsdGVyIHJ1bGVzIGF0IHRoZSBiZWdpbm5pbmcgb2YK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGxpc3Qgb2YgcnVsZXMgdXNlZCB0byBj
aGVjayBzdHlsZS4gIFRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdCBoYXMg
dGhlIGxlYXN0IHByZWNlZGVuY2Ugd2hlbiBjaGVja2luZworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdHlsZSBhbmQgcHJlY2VkZXMgYW55IHVzZXItcHJvdmlkZWQgcnVsZXMuCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBjbGFzcyB1c2VzIHRoaXMgcGFyYW1ldGVyIG9u
bHkgZm9yIGRpc3BsYXkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVycG9zZXMgdG8g
dGhlIHVzZXIuICBEZWZhdWx0cyB0byB0aGUgZW1wdHkgbGlzdC4KKyAgICAgICAgICBjcmVhdGVf
dXNhZ2U6IFNlZSB0aGUgZG9jdW1lbnRhdGlvbiBvZiB0aGUgY29ycmVzcG9uZGluZworICAgICAg
ICAgICAgICAgICAgICAgICAgYXR0cmlidXRlIGluIHRoZSBjbGFzcyBkb2NzdHJpbmcuCisgICAg
ICAgICAgc3RkZXJyX3dyaXRlOiBTZWUgdGhlIGRvY3VtZW50YXRpb24gb2YgdGhlIGNvcnJlc3Bv
bmRpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBpbiB0aGUgY2xhc3MgZG9j
c3RyaW5nLgorCisgICAgICAgICIiIgorICAgICAgICBpZiBiYXNlX2ZpbHRlcl9ydWxlcyBpcyBO
b25lOgorICAgICAgICAgICAgYmFzZV9maWx0ZXJfcnVsZXMgPSBbXQorICAgICAgICBpZiBjcmVh
dGVfdXNhZ2UgaXMgTm9uZToKKyAgICAgICAgICAgIGNyZWF0ZV91c2FnZSA9IF9jcmVhdGVfdXNh
Z2UKKyAgICAgICAgaWYgc3RkZXJyX3dyaXRlIGlzIE5vbmU6CisgICAgICAgICAgICBzdGRlcnJf
d3JpdGUgPSBzeXMuc3RkZXJyLndyaXRlCisKKyAgICAgICAgc2VsZi5fYWxsX2NhdGVnb3JpZXMg
PSBhbGxfY2F0ZWdvcmllcworICAgICAgICBzZWxmLl9iYXNlX2ZpbHRlcl9ydWxlcyA9IGJhc2Vf
ZmlsdGVyX3J1bGVzCisgICAgICAgICMgRklYTUU6IFJlbmFtZSB0aGVzZSB0byByZWZsZWN0IHRo
YXQgdGhleSBhcmUgaW50ZXJuYWwuCisgICAgICAgIHNlbGYuY3JlYXRlX3VzYWdlID0gY3JlYXRl
X3VzYWdlCisgICAgICAgIHNlbGYuZGVmYXVsdF9vcHRpb25zID0gZGVmYXVsdF9vcHRpb25zCisg
ICAgICAgIHNlbGYuc3RkZXJyX3dyaXRlID0gc3RkZXJyX3dyaXRlCisKKyAgICBkZWYgX2V4aXRf
d2l0aF91c2FnZShzZWxmLCBlcnJvcl9tZXNzYWdlPScnKToKKyAgICAgICAgIiIiRXhpdCBhbmQg
cHJpbnQgYSB1c2FnZSBzdHJpbmcgd2l0aCBhbiBvcHRpb25hbCBlcnJvciBtZXNzYWdlLgorCisg
ICAgICAgIEFyZ3M6CisgICAgICAgICAgZXJyb3JfbWVzc2FnZTogQSBzdHJpbmcgdGhhdCBpcyBh
biBlcnJvciBtZXNzYWdlIHRvIHByaW50LgorCisgICAgICAgICIiIgorICAgICAgICB1c2FnZSA9
IHNlbGYuY3JlYXRlX3VzYWdlKHNlbGYuZGVmYXVsdF9vcHRpb25zKQorICAgICAgICBzZWxmLnN0
ZGVycl93cml0ZSh1c2FnZSkKKyAgICAgICAgaWYgZXJyb3JfbWVzc2FnZToKKyAgICAgICAgICAg
IHN5cy5leGl0KCdcbkZBVEFMIEVSUk9SOiAnICsgZXJyb3JfbWVzc2FnZSkKKyAgICAgICAgZWxz
ZToKKyAgICAgICAgICAgIHN5cy5leGl0KDEpCisKKyAgICBkZWYgX2V4aXRfd2l0aF9jYXRlZ29y
aWVzKHNlbGYpOgorICAgICAgICAiIiJFeGl0IGFuZCBwcmludCB0aGUgc3R5bGUgY2F0ZWdvcmll
cyBhbmQgZGVmYXVsdCBmaWx0ZXIgcnVsZXMuIiIiCisgICAgICAgIHNlbGYuc3RkZXJyX3dyaXRl
KCdcbkFsbCBjYXRlZ29yaWVzOlxuJykKKyAgICAgICAgZm9yIGNhdGVnb3J5IGluIHNvcnRlZChz
ZWxmLl9hbGxfY2F0ZWdvcmllcyk6CisgICAgICAgICAgICBzZWxmLnN0ZGVycl93cml0ZSgnICAg
ICcgKyBjYXRlZ29yeSArICdcbicpCisKKyAgICAgICAgc2VsZi5zdGRlcnJfd3JpdGUoJ1xuRGVm
YXVsdCBmaWx0ZXIgcnVsZXMqKjpcbicpCisgICAgICAgIGZvciBmaWx0ZXJfcnVsZSBpbiBzb3J0
ZWQoc2VsZi5fYmFzZV9maWx0ZXJfcnVsZXMpOgorICAgICAgICAgICAgc2VsZi5zdGRlcnJfd3Jp
dGUoJyAgICAnICsgZmlsdGVyX3J1bGUgKyAnXG4nKQorICAgICAgICBzZWxmLnN0ZGVycl93cml0
ZSgnXG4qKlRoZSBjb21tYW5kIGFsd2F5cyBldmFsdWF0ZXMgdGhlIGFib3ZlIHJ1bGVzLCAnCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICdhbmQgYmVmb3JlIGFueSAtLWZpbHRlciBmbGFnLlxu
XG4nKQorCisgICAgICAgIHN5cy5leGl0KDApCisKKyAgICBkZWYgX3BhcnNlX2ZpbHRlcl9mbGFn
KHNlbGYsIGZsYWdfdmFsdWUpOgorICAgICAgICAiIiJQYXJzZSB0aGUgLS1maWx0ZXIgZmxhZywg
YW5kIHJldHVybiBhIGxpc3Qgb2YgZmlsdGVyIHJ1bGVzLgorCisgICAgICAgIEFyZ3M6CisgICAg
ICAgICAgZmxhZ192YWx1ZTogQSBzdHJpbmcgb2YgY29tbWEtc2VwYXJhdGVkIGZpbHRlciBydWxl
cywgZm9yCisgICAgICAgICAgICAgICAgICAgICAgZXhhbXBsZSAiLXdoaXRlc3BhY2UsK3doaXRl
c3BhY2UvaW5kZW50Ii4KKworICAgICAgICAiIiIKKyAgICAgICAgZmlsdGVycyA9IFtdCisgICAg
ICAgIGZvciB1bmNsZWFuZWRfZmlsdGVyIGluIGZsYWdfdmFsdWUuc3BsaXQoJywnKToKKyAgICAg
ICAgICAgIGZpbHRlciA9IHVuY2xlYW5lZF9maWx0ZXIuc3RyaXAoKQorICAgICAgICAgICAgaWYg
bm90IGZpbHRlcjoKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgZmlsdGVy
cy5hcHBlbmQoZmlsdGVyKQorICAgICAgICByZXR1cm4gZmlsdGVycworCisgICAgZGVmIHBhcnNl
KHNlbGYsIGFyZ3MsIGV4dHJhX2ZsYWdzPU5vbmUpOgorICAgICAgICAiIiJQYXJzZSB0aGUgY29t
bWFuZCBsaW5lIGFyZ3VtZW50cyB0byBjaGVjay13ZWJraXQtc3R5bGUuCisKKyAgICAgICAgQXJn
czoKKyAgICAgICAgICBhcmdzOiBBIGxpc3Qgb2YgY29tbWFuZC1saW5lIGFyZ3VtZW50cyBhcyBy
ZXR1cm5lZCBieSBzeXMuYXJndlsxOl0uCisgICAgICAgICAgZXh0cmFfZmxhZ3M6IEEgbGlzdCBv
ZiBmbGFncyB3aG9zZSB2YWx1ZXMgd2Ugd2FudCB0byBleHRyYWN0LCBidXQKKyAgICAgICAgICAg
ICAgICAgICAgICAgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIENvbW1hbmRPcHRpb25WYWx1ZXMg
Y2xhc3MuCisgICAgICAgICAgICAgICAgICAgICAgIEFuIGV4YW1wbGUgZmxhZyAibmV3X2ZsYWc9
Ii4gVGhpcyBkZWZhdWx0cyB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgZW1wdHkgbGlz
dC4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgIEEgdHVwbGUgb2YgKGZpbGVuYW1lcywg
b3B0aW9ucykKKworICAgICAgICAgIGZpbGVuYW1lczogVGhlIGxpc3Qgb2YgZmlsZW5hbWVzIHRv
IGNoZWNrLgorICAgICAgICAgIG9wdGlvbnM6IEEgQ29tbWFuZE9wdGlvblZhbHVlcyBpbnN0YW5j
ZS4KKworICAgICAgICAiIiIKKyAgICAgICAgaWYgZXh0cmFfZmxhZ3MgaXMgTm9uZToKKyAgICAg
ICAgICAgIGV4dHJhX2ZsYWdzID0gW10KKworICAgICAgICBvdXRwdXRfZm9ybWF0ID0gc2VsZi5k
ZWZhdWx0X29wdGlvbnMub3V0cHV0X2Zvcm1hdAorICAgICAgICB2ZXJib3NpdHkgPSBzZWxmLmRl
ZmF1bHRfb3B0aW9ucy52ZXJib3NpdHkKKworICAgICAgICAjIFRoZSBmbGFncyBhbHJlYWR5IHN1
cHBvcnRlZCBieSB0aGUgQ29tbWFuZE9wdGlvblZhbHVlcyBjbGFzcy4KKyAgICAgICAgZmxhZ3Mg
PSBbJ2hlbHAnLCAnb3V0cHV0PScsICd2ZXJib3NlPScsICdmaWx0ZXI9JywgJ2dpdC1jb21taXQ9
J10KKworICAgICAgICBmb3IgZXh0cmFfZmxhZyBpbiBleHRyYV9mbGFnczoKKyAgICAgICAgICAg
IGlmIGV4dHJhX2ZsYWcgaW4gZmxhZ3M6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJv
cignRmxhZyBcJyUoZXh0cmFfZmxhZylzIGlzIGR1cGxpY2F0ZWQgJworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ29yIGFscmVhZHkgc3VwcG9ydGVkLicgJQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgeydleHRyYV9mbGFnJzogZXh0cmFfZmxhZ30pCisgICAgICAg
ICAgICBmbGFncy5hcHBlbmQoZXh0cmFfZmxhZykKKworICAgICAgICB0cnk6CisgICAgICAgICAg
ICAob3B0cywgZmlsZW5hbWVzKSA9IGdldG9wdC5nZXRvcHQoYXJncywgJycsIGZsYWdzKQorICAg
ICAgICBleGNlcHQgZ2V0b3B0LkdldG9wdEVycm9yOgorICAgICAgICAgICAgIyBGSVhNRTogU2V0
dGxlIG9uIGFuIGVycm9yIGhhbmRsaW5nIGFwcHJvYWNoOiBjb21lIHVwCisgICAgICAgICAgICAj
ICAgICAgICB3aXRoIGEgY29uc2lzdGVudCBndWlkZWxpbmUgYXMgdG8gd2hlbiBhbmQgd2hldGhl
cgorICAgICAgICAgICAgIyAgICAgICAgYSBWYWx1ZUVycm9yIHNob3VsZCBiZSByYWlzZWQgdmVy
c3VzIGNhbGxpbmcKKyAgICAgICAgICAgICMgICAgICAgIHN5cy5leGl0IHdoZW4gbmVlZGluZyB0
byBpbnRlcnJ1cHQgZXhlY3V0aW9uLgorICAgICAgICAgICAgc2VsZi5fZXhpdF93aXRoX3VzYWdl
KCdJbnZhbGlkIGFyZ3VtZW50cy4nKQorCisgICAgICAgIGV4dHJhX2ZsYWdfdmFsdWVzID0ge30K
KyAgICAgICAgZ2l0X2NvbW1pdCA9IE5vbmUKKyAgICAgICAgZmlsdGVyX3J1bGVzID0gW10KKwor
ICAgICAgICBmb3IgKG9wdCwgdmFsKSBpbiBvcHRzOgorICAgICAgICAgICAgaWYgb3B0ID09ICct
LWhlbHAnOgorICAgICAgICAgICAgICAgIHNlbGYuX2V4aXRfd2l0aF91c2FnZSgpCisgICAgICAg
ICAgICBlbGlmIG9wdCA9PSAnLS1vdXRwdXQnOgorICAgICAgICAgICAgICAgIG91dHB1dF9mb3Jt
YXQgPSB2YWwKKyAgICAgICAgICAgIGVsaWYgb3B0ID09ICctLXZlcmJvc2UnOgorICAgICAgICAg
ICAgICAgIHZlcmJvc2l0eSA9IHZhbAorICAgICAgICAgICAgZWxpZiBvcHQgPT0gJy0tZ2l0LWNv
bW1pdCc6CisgICAgICAgICAgICAgICAgZ2l0X2NvbW1pdCA9IHZhbAorICAgICAgICAgICAgZWxp
ZiBvcHQgPT0gJy0tZmlsdGVyJzoKKyAgICAgICAgICAgICAgICBpZiBub3QgdmFsOgorICAgICAg
ICAgICAgICAgICAgICBzZWxmLl9leGl0X3dpdGhfY2F0ZWdvcmllcygpCisgICAgICAgICAgICAg
ICAgZmlsdGVyX3J1bGVzID0gc2VsZi5fcGFyc2VfZmlsdGVyX2ZsYWcodmFsKQorICAgICAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgICAgICBleHRyYV9mbGFnX3ZhbHVlc1tvcHRdID0gdmFsCisK
KyAgICAgICAgIyBDaGVjayB2YWxpZGl0eSBvZiByZXN1bHRpbmcgdmFsdWVzLgorICAgICAgICBp
ZiBmaWxlbmFtZXMgYW5kIChnaXRfY29tbWl0ICE9IE5vbmUpOgorICAgICAgICAgICAgc2VsZi5f
ZXhpdF93aXRoX3VzYWdlKCdJdCBpcyBub3QgcG9zc2libGUgdG8gY2hlY2sgZmlsZXMgYW5kIGEg
JworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzcGVjaWZpYyBjb21taXQgYXQg
dGhlIHNhbWUgdGltZS4nKQorCisgICAgICAgIGlmIG91dHB1dF9mb3JtYXQgbm90IGluICgnZW1h
Y3MnLCAndnM3Jyk6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdJbnZhbGlkIC0tb3V0
cHV0IHZhbHVlICIlcyI6IFRoZSBvbmx5ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
J2FsbG93ZWQgb3V0cHV0IGZvcm1hdHMgYXJlIGVtYWNzIGFuZCB2czcuJyAlCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG91dHB1dF9mb3JtYXQpCisKKyAgICAgICAgdmFsaWRhdGVfZmls
dGVyX3J1bGVzKGZpbHRlcl9ydWxlcywgc2VsZi5fYWxsX2NhdGVnb3JpZXMpCisKKyAgICAgICAg
dmVyYm9zaXR5ID0gaW50KHZlcmJvc2l0eSkKKyAgICAgICAgaWYgKHZlcmJvc2l0eSA8IDEpIG9y
ICh2ZXJib3NpdHkgPiA1KToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0ludmFsaWQg
LS12ZXJib3NlIHZhbHVlICVzOiB2YWx1ZSBtdXN0ICcKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ2JlIGJldHdlZW4gMS01LicgJSB2ZXJib3NpdHkpCisKKyAgICAgICAgb3B0aW9ucyA9
IENvbW1hbmRPcHRpb25WYWx1ZXMoZXh0cmFfZmxhZ192YWx1ZXM9ZXh0cmFfZmxhZ192YWx1ZXMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJfcnVsZXM9ZmlsdGVyX3J1
bGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2l0X2NvbW1pdD1naXRfY29t
bWl0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0X2Zvcm1hdD1vdXRw
dXRfZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyYm9zaXR5PXZl
cmJvc2l0eSkKKworICAgICAgICByZXR1cm4gKGZpbGVuYW1lcywgb3B0aW9ucykKKwpkaWZmIC0t
Z2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9vcHRwYXJzZXJfdW5pdHRl
c3QucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL29wdHBhcnNlcl91bml0
dGVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMjNjNWQxCi0tLSAv
ZGV2L251bGwKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9vcHRwYXJz
ZXJfdW5pdHRlc3QucHkKQEAgLTAsMCArMSwyNTggQEAKKyMgQ29weXJpZ2h0IChDKSAyMDEwIENo
cmlzIEplcmRvbmVrIChjamVyZG9uZWtAd2Via2l0Lm9yZykKKyMKKyMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnIEFORCBBTlkKKyMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQorIyBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworIyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisjIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorIyBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUworIyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKworIiIiVW5pdCB0ZXN0cyBmb3IgcGFyc2VyLnB5LiIiIgor
CitpbXBvcnQgdW5pdHRlc3QKKworZnJvbSBvcHRwYXJzZXIgaW1wb3J0IF9jcmVhdGVfdXNhZ2UK
K2Zyb20gb3B0cGFyc2VyIGltcG9ydCBBcmd1bWVudFBhcnNlcgorZnJvbSBvcHRwYXJzZXIgaW1w
b3J0IEFyZ3VtZW50UHJpbnRlcgorZnJvbSBvcHRwYXJzZXIgaW1wb3J0IENvbW1hbmRPcHRpb25W
YWx1ZXMgYXMgUHJvY2Vzc29yT3B0aW9ucworZnJvbSBvcHRwYXJzZXIgaW1wb3J0IERlZmF1bHRD
b21tYW5kT3B0aW9uVmFsdWVzCisKKworY2xhc3MgQ3JlYXRlVXNhZ2VUZXN0KHVuaXR0ZXN0LlRl
c3RDYXNlKToKKworICAgICIiIlRlc3RzIHRoZSBfY3JlYXRlX3VzYWdlKCkgZnVuY3Rpb24uIiIi
CisKKyAgICBkZWYgdGVzdF9jcmVhdGVfdXNhZ2Uoc2VsZik6CisgICAgICAgIGRlZmF1bHRfb3B0
aW9ucyA9IERlZmF1bHRDb21tYW5kT3B0aW9uVmFsdWVzKG91dHB1dF9mb3JtYXQ9InZzNyIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcmJv
c2l0eT0zKQorICAgICAgICAjIEV4ZXJjaXNlIHRoZSBjb2RlIHBhdGggdG8gbWFrZSBzdXJlIHRo
ZSBmdW5jdGlvbiBkb2VzIG5vdCBlcnJvciBvdXQuCisgICAgICAgIF9jcmVhdGVfdXNhZ2UoZGVm
YXVsdF9vcHRpb25zKQorCisKK2NsYXNzIEFyZ3VtZW50UHJpbnRlclRlc3QodW5pdHRlc3QuVGVz
dENhc2UpOgorCisgICAgIiIiVGVzdHMgdGhlIEFyZ3VtZW50UHJpbnRlciBjbGFzcy4iIiIKKwor
ICAgIF9wcmludGVyID0gQXJndW1lbnRQcmludGVyKCkKKworICAgIGRlZiBfY3JlYXRlX29wdGlv
bnMoc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dF9mb3JtYXQ9J2VtYWNzJywK
KyAgICAgICAgICAgICAgICAgICAgICAgIHZlcmJvc2l0eT0zLAorICAgICAgICAgICAgICAgICAg
ICAgICAgZmlsdGVyX3J1bGVzPVtdLAorICAgICAgICAgICAgICAgICAgICAgICAgZ2l0X2NvbW1p
dD1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFfZmxhZ192YWx1ZXM9e30pOgor
ICAgICAgICByZXR1cm4gUHJvY2Vzc29yT3B0aW9ucyhleHRyYV9mbGFnX3ZhbHVlcz1leHRyYV9m
bGFnX3ZhbHVlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyX3J1bGVz
PWZpbHRlcl9ydWxlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2l0X2NvbW1p
dD1naXRfY29tbWl0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRfZm9y
bWF0PW91dHB1dF9mb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcmJv
c2l0eT12ZXJib3NpdHkpCisKKyAgICBkZWYgdGVzdF90b19mbGFnX3N0cmluZyhzZWxmKToKKyAg
ICAgICAgb3B0aW9ucyA9IHNlbGYuX2NyZWF0ZV9vcHRpb25zKCd2czcnLCA1LCBbJytmb28nLCAn
LWJhciddLCAnZ2l0JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsn
YSc6IDAsICd6JzogMX0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCctLWE9MCAtLWZpbHRl
cj0rZm9vLC1iYXIgLS1naXQtY29tbWl0PWdpdCAnCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICctLW91dHB1dD12czcgLS12ZXJib3NlPTUgLS16PTEnLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZWxmLl9wcmludGVyLnRvX2ZsYWdfc3RyaW5nKG9wdGlvbnMpKQorCisgICAgICAgICMg
VGhpcyBpcyB0byBjaGVjayB0aGF0IC0tZmlsdGVyIGFuZCAtLWdpdC1jb21taXQgZG8gbm90Cisg
ICAgICAgICMgc2hvdyB1cCB3aGVuIG5vdCB1c2VyLXNwZWNpZmllZC4KKyAgICAgICAgb3B0aW9u
cyA9IHNlbGYuX2NyZWF0ZV9vcHRpb25zKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJy0t
b3V0cHV0PWVtYWNzIC0tdmVyYm9zZT0zJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vs
Zi5fcHJpbnRlci50b19mbGFnX3N0cmluZyhvcHRpb25zKSkKKworCitjbGFzcyBBcmd1bWVudFBh
cnNlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgIiIiVGVzdCB0aGUgQXJndW1lbnRQ
YXJzZXIgY2xhc3MuIiIiCisKKyAgICBkZWYgX3BhcnNlKHNlbGYpOgorICAgICAgICAiIiJSZXR1
cm4gYSBkZWZhdWx0IHBhcnNlKCkgZnVuY3Rpb24gZm9yIHRlc3RpbmcuIiIiCisgICAgICAgIHJl
dHVybiBzZWxmLl9jcmVhdGVfcGFyc2VyKCkucGFyc2UKKworICAgIGRlZiBfY3JlYXRlX2RlZmF1
bHRzKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gYSBEZWZhdWx0Q29tbWFuZE9wdGlvblZhbHVl
cyBpbnN0YW5jZSBmb3IgdGVzdGluZy4iIiIKKyAgICAgICAgYmFzZV9maWx0ZXJfcnVsZXMgPSBb
Ii0iLCAiK3doaXRlc3BhY2UiXQorICAgICAgICByZXR1cm4gRGVmYXVsdENvbW1hbmRPcHRpb25W
YWx1ZXMob3V0cHV0X2Zvcm1hdD0idnM3IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHZlcmJvc2l0eT0zKQorCisgICAgZGVmIF9jcmVhdGVfcGFyc2VyKHNlbGYp
OgorICAgICAgICAiIiJSZXR1cm4gYW4gQXJndW1lbnRQYXJzZXIgaW5zdGFuY2UgZm9yIHRlc3Rp
bmcuIiIiCisgICAgICAgIGRlZiBzdGRlcnJfd3JpdGUobWVzc2FnZSk6CisgICAgICAgICAgICAj
IFdlIGRvIG5vdCB3YW50IHRoZSB1c2FnZSBzdHJpbmcgb3Igc3R5bGUgY2F0ZWdvcmllcworICAg
ICAgICAgICAgIyB0byBwcmludCBkdXJpbmcgdW5pdCB0ZXN0cywgc28gcHJpbnQgbm90aGluZy4K
KyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIGRlZmF1bHRfb3B0aW9ucyA9IHNlbGYuX2Ny
ZWF0ZV9kZWZhdWx0cygpCisKKyAgICAgICAgYWxsX2NhdGVnb3JpZXMgPSBbImJ1aWxkIiAsIndo
aXRlc3BhY2UiXQorICAgICAgICByZXR1cm4gQXJndW1lbnRQYXJzZXIoYWxsX2NhdGVnb3JpZXM9
YWxsX2NhdGVnb3JpZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlX2ZpbHRl
cl9ydWxlcz1bXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRfb3B0aW9u
cz1kZWZhdWx0X29wdGlvbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnJf
d3JpdGU9c3RkZXJyX3dyaXRlKQorCisgICAgZGVmIHRlc3RfcGFyc2VfZG9jdW1lbnRhdGlvbihz
ZWxmKToKKyAgICAgICAgcGFyc2UgPSBzZWxmLl9wYXJzZSgpCisKKyAgICAgICAgIyBGSVhNRTog
VGVzdCBib3RoIHRoZSBwcmludGluZyBvZiB0aGUgdXNhZ2Ugc3RyaW5nIGFuZCB0aGUKKyAgICAg
ICAgIyAgICAgICAgZmlsdGVyIGNhdGVnb3JpZXMgaGVscC4KKworICAgICAgICAjIFJlcXVlc3Qg
dGhlIHVzYWdlIHN0cmluZy4KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3lzdGVtRXhpdCwg
cGFyc2UsIFsnLS1oZWxwJ10pCisgICAgICAgICMgUmVxdWVzdCBkZWZhdWx0IGZpbHRlciBydWxl
cyBhbmQgYXZhaWxhYmxlIHN0eWxlIGNhdGVnb3JpZXMuCisgICAgICAgIHNlbGYuYXNzZXJ0UmFp
c2VzKFN5c3RlbUV4aXQsIHBhcnNlLCBbJy0tZmlsdGVyPSddKQorCisgICAgZGVmIHRlc3RfcGFy
c2VfYmFkX3ZhbHVlcyhzZWxmKToKKyAgICAgICAgcGFyc2UgPSBzZWxmLl9wYXJzZSgpCisKKyAg
ICAgICAgIyBQYXNzIGFuIHVuc3VwcG9ydGVkIGFyZ3VtZW50LgorICAgICAgICBzZWxmLmFzc2Vy
dFJhaXNlcyhTeXN0ZW1FeGl0LCBwYXJzZSwgWyctLWJhZCddKQorCisgICAgICAgIHNlbGYuYXNz
ZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHBhcnNlLCBbJy0tdmVyYm9zZT1iYWQnXSkKKyAgICAgICAg
c2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcGFyc2UsIFsnLS12ZXJib3NlPTAnXSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcGFyc2UsIFsnLS12ZXJib3NlPTYn
XSkKKyAgICAgICAgcGFyc2UoWyctLXZlcmJvc2U9MSddKSAjIHdvcmtzCisgICAgICAgIHBhcnNl
KFsnLS12ZXJib3NlPTUnXSkgIyB3b3JrcworCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZh
bHVlRXJyb3IsIHBhcnNlLCBbJy0tb3V0cHV0PWJhZCddKQorICAgICAgICBwYXJzZShbJy0tb3V0
cHV0PXZzNyddKSAjIHdvcmtzCisKKyAgICAgICAgIyBQYXNzIGEgZmlsdGVyIHJ1bGUgbm90IGJl
Z2lubmluZyB3aXRoICsgb3IgLS4KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJv
ciwgcGFyc2UsIFsnLS1maWx0ZXI9YnVpbGQnXSkKKyAgICAgICAgcGFyc2UoWyctLWZpbHRlcj0r
YnVpbGQnXSkgIyB3b3JrcworICAgICAgICAjIFBhc3MgZmlsZXMgYW5kIGdpdC1jb21taXQgYXQg
dGhlIHNhbWUgdGltZS4KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3lzdGVtRXhpdCwgcGFy
c2UsIFsnLS1naXQtY29tbWl0PScsICdmaWxlLnR4dCddKQorICAgICAgICAjIFBhc3MgYW4gZXh0
cmEgZmxhZyBhbHJlYWR5IHN1cHBvcnRlZC4KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFs
dWVFcnJvciwgcGFyc2UsIFtdLCBbJ2ZpbHRlcj0nXSkKKyAgICAgICAgcGFyc2UoW10sIFsnZXh0
cmE9J10pICMgd29ya3MKKyAgICAgICAgIyBQYXNzIGFuIGV4dHJhIGZsYWcgd2l0aCB0eXBvLgor
ICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeXN0ZW1FeGl0LCBwYXJzZSwgWyctLWV4dHJhdHlw
bz0nXSwgWydleHRyYT0nXSkKKyAgICAgICAgcGFyc2UoWyctLWV4dHJhPSddLCBbJ2V4dHJhPSdd
KSAjIHdvcmtzCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHBhcnNlLCBb
XSwgWydleHRyYT0nLCAnZXh0cmE9J10pCisKKworICAgIGRlZiB0ZXN0X3BhcnNlX2RlZmF1bHRf
YXJndW1lbnRzKHNlbGYpOgorICAgICAgICBwYXJzZSA9IHNlbGYuX3BhcnNlKCkKKworICAgICAg
ICAoZmlsZXMsIG9wdGlvbnMpID0gcGFyc2UoW10pCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bHMoZmlsZXMsIFtdKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG9wdGlvbnMub3V0cHV0
X2Zvcm1hdCwgJ3ZzNycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG9wdGlvbnMudmVyYm9z
aXR5LCAzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhvcHRpb25zLmZpbHRlcl9ydWxlcywg
W10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG9wdGlvbnMuZ2l0X2NvbW1pdCwgTm9uZSkK
KworICAgIGRlZiB0ZXN0X3BhcnNlX2V4cGxpY2l0X2FyZ3VtZW50cyhzZWxmKToKKyAgICAgICAg
cGFyc2UgPSBzZWxmLl9wYXJzZSgpCisKKyAgICAgICAgIyBQYXNzIG5vbi1kZWZhdWx0IGV4cGxp
Y2l0IHZhbHVlcy4KKyAgICAgICAgKGZpbGVzLCBvcHRpb25zKSA9IHBhcnNlKFsnLS1vdXRwdXQ9
ZW1hY3MnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMob3B0aW9ucy5vdXRwdXRfZm9ybWF0
LCAnZW1hY3MnKQorICAgICAgICAoZmlsZXMsIG9wdGlvbnMpID0gcGFyc2UoWyctLXZlcmJvc2U9
NCddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhvcHRpb25zLnZlcmJvc2l0eSwgNCkKKyAg
ICAgICAgKGZpbGVzLCBvcHRpb25zKSA9IHBhcnNlKFsnLS1naXQtY29tbWl0PWNvbW1pdCddKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhvcHRpb25zLmdpdF9jb21taXQsICdjb21taXQnKQor
CisgICAgICAgICMgUGFzcyB1c2VyX3J1bGVzLgorICAgICAgICAoZmlsZXMsIG9wdGlvbnMpID0g
cGFyc2UoWyctLWZpbHRlcj0rYnVpbGQsLXdoaXRlc3BhY2UnXSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbHMob3B0aW9ucy5maWx0ZXJfcnVsZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
IFsiK2J1aWxkIiwgIi13aGl0ZXNwYWNlIl0pCisKKyAgICAgICAgIyBQYXNzIHNwdXJpb3VzIHdo
aXRlIHNwYWNlIGluIHVzZXIgcnVsZXMuCisgICAgICAgIChmaWxlcywgb3B0aW9ucykgPSBwYXJz
ZShbJy0tZmlsdGVyPStidWlsZCwgLXdoaXRlc3BhY2UnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbHMob3B0aW9ucy5maWx0ZXJfcnVsZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFsi
K2J1aWxkIiwgIi13aGl0ZXNwYWNlIl0pCisKKyAgICAgICAgIyBQYXNzIGV4dHJhIGZsYWcgdmFs
dWVzLgorICAgICAgICAoZmlsZXMsIG9wdGlvbnMpID0gcGFyc2UoWyctLWV4dHJhJ10sIFsnZXh0
cmEnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMob3B0aW9ucy5leHRyYV9mbGFnX3ZhbHVl
cywgeyctLWV4dHJhJzogJyd9KQorICAgICAgICAoZmlsZXMsIG9wdGlvbnMpID0gcGFyc2UoWyct
LWV4dHJhPSddLCBbJ2V4dHJhPSddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhvcHRpb25z
LmV4dHJhX2ZsYWdfdmFsdWVzLCB7Jy0tZXh0cmEnOiAnJ30pCisgICAgICAgIChmaWxlcywgb3B0
aW9ucykgPSBwYXJzZShbJy0tZXh0cmE9eCddLCBbJ2V4dHJhPSddKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFscyhvcHRpb25zLmV4dHJhX2ZsYWdfdmFsdWVzLCB7Jy0tZXh0cmEnOiAneCd9KQor
CisgICAgZGVmIHRlc3RfcGFyc2VfZmlsZXMoc2VsZik6CisgICAgICAgIHBhcnNlID0gc2VsZi5f
cGFyc2UoKQorCisgICAgICAgIChmaWxlcywgb3B0aW9ucykgPSBwYXJzZShbJ2Zvby5jcHAnXSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZmlsZXMsIFsnZm9vLmNwcCddKQorCisgICAgICAg
ICMgUGFzcyBtdWx0aXBsZSBmaWxlcy4KKyAgICAgICAgKGZpbGVzLCBvcHRpb25zKSA9IHBhcnNl
KFsnLS1vdXRwdXQ9ZW1hY3MnLCAnZm9vLmNwcCcsICdiYXIuY3BwJ10pCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWxzKGZpbGVzLCBbJ2Zvby5jcHAnLCAnYmFyLmNwcCddKQorCisKK2NsYXNzIENv
bW1hbmRPcHRpb25WYWx1ZXNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgICIiIlRlc3Rz
IENvbW1hbmRPcHRpb25WYWx1ZXMgY2xhc3MuIiIiCisKKyAgICBkZWYgdGVzdF9pbml0KHNlbGYp
OgorICAgICAgICAiIiJUZXN0IF9faW5pdF9fIGNvbnN0cnVjdG9yLiIiIgorICAgICAgICAjIENo
ZWNrIGRlZmF1bHQgcGFyYW1ldGVycy4KKyAgICAgICAgb3B0aW9ucyA9IFByb2Nlc3Nvck9wdGlv
bnMoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhvcHRpb25zLmV4dHJhX2ZsYWdfdmFsdWVz
LCB7fSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMob3B0aW9ucy5maWx0ZXJfcnVsZXMsIFtd
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhvcHRpb25zLmdpdF9jb21taXQsIE5vbmUpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG9wdGlvbnMub3V0cHV0X2Zvcm1hdCwgImVtYWNzIikK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMob3B0aW9ucy52ZXJib3NpdHksIDEpCisKKyAgICAg
ICAgIyBDaGVjayBhcmd1bWVudCB2YWxpZGF0aW9uLgorICAgICAgICBzZWxmLmFzc2VydFJhaXNl
cyhWYWx1ZUVycm9yLCBQcm9jZXNzb3JPcHRpb25zLCBvdXRwdXRfZm9ybWF0PSJiYWQiKQorICAg
ICAgICBQcm9jZXNzb3JPcHRpb25zKG91dHB1dF9mb3JtYXQ9ImVtYWNzIikgIyBObyBWYWx1ZUVy
cm9yOiB3b3JrcworICAgICAgICBQcm9jZXNzb3JPcHRpb25zKG91dHB1dF9mb3JtYXQ9InZzNyIp
ICMgd29ya3MKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgUHJvY2Vzc29y
T3B0aW9ucywgdmVyYm9zaXR5PTApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJy
b3IsIFByb2Nlc3Nvck9wdGlvbnMsIHZlcmJvc2l0eT02KQorICAgICAgICBQcm9jZXNzb3JPcHRp
b25zKHZlcmJvc2l0eT0xKSAjIHdvcmtzCisgICAgICAgIFByb2Nlc3Nvck9wdGlvbnModmVyYm9z
aXR5PTUpICMgd29ya3MKKworICAgICAgICAjIENoZWNrIGF0dHJpYnV0ZXMuCisgICAgICAgIG9w
dGlvbnMgPSBQcm9jZXNzb3JPcHRpb25zKGV4dHJhX2ZsYWdfdmFsdWVzPXsiZXh0cmFfdmFsdWUi
IDogMn0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcl9ydWxlcz1b
IisiXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2l0X2NvbW1pdD0iY29t
bWl0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0X2Zvcm1hdD0i
dnM3IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyYm9zaXR5PTMpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG9wdGlvbnMuZXh0cmFfZmxhZ192YWx1ZXMsIHsiZXh0
cmFfdmFsdWUiIDogMn0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG9wdGlvbnMuZmlsdGVy
X3J1bGVzLCBbIisiXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMob3B0aW9ucy5naXRfY29t
bWl0LCAiY29tbWl0IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMob3B0aW9ucy5vdXRwdXRf
Zm9ybWF0LCAidnM3IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMob3B0aW9ucy52ZXJib3Np
dHksIDMpCisKKyAgICBkZWYgdGVzdF9lcShzZWxmKToKKyAgICAgICAgIiIiVGVzdCBfX2VxX18g
ZXF1YWxpdHkgZnVuY3Rpb24uIiIiCisgICAgICAgICMgPT0gY2FsbHMgX19lcV9fLgorICAgICAg
ICBzZWxmLmFzc2VydFRydWUoUHJvY2Vzc29yT3B0aW9ucygpID09IFByb2Nlc3Nvck9wdGlvbnMo
KSkKKworICAgICAgICAjIFZlcmlmeSB0aGF0IGEgZGlmZmVyZW5jZSBpbiBhbnkgYXJndW1lbnQg
Y2F1c2VzIGVxdWFsaXR5IHRvIGZhaWwuCisgICAgICAgIG9wdGlvbnMgPSBQcm9jZXNzb3JPcHRp
b25zKGV4dHJhX2ZsYWdfdmFsdWVzPXsiZXh0cmFfdmFsdWUiIDogMX0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcl9ydWxlcz1bIisiXSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZ2l0X2NvbW1pdD0iY29tbWl0IiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgb3V0cHV0X2Zvcm1hdD0idnM3IiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdmVyYm9zaXR5PTEpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFs
c2Uob3B0aW9ucyA9PSBQcm9jZXNzb3JPcHRpb25zKGV4dHJhX2ZsYWdfdmFsdWVzPQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ImV4dHJhX3Zh
bHVlIiA6IDJ9KSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcHRpb25zID09IFByb2Nlc3Nv
ck9wdGlvbnMoZmlsdGVyX3J1bGVzPVsiLSJdKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShv
cHRpb25zID09IFByb2Nlc3Nvck9wdGlvbnMoZ2l0X2NvbW1pdD0iY29tbWl0MiIpKQorICAgICAg
ICBzZWxmLmFzc2VydEZhbHNlKG9wdGlvbnMgPT0gUHJvY2Vzc29yT3B0aW9ucyhvdXRwdXRfZm9y
bWF0PSJlbWFjcyIpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9wdGlvbnMgPT0gUHJvY2Vz
c29yT3B0aW9ucyh2ZXJib3NpdHk9MikpCisKKyAgICBkZWYgdGVzdF9uZShzZWxmKToKKyAgICAg
ICAgIiIiVGVzdCBfX25lX18gaW5lcXVhbGl0eSBmdW5jdGlvbi4iIiIKKyAgICAgICAgIyAhPSBj
YWxscyBfX25lX18uCisgICAgICAgICMgQnkgZGVmYXVsdCwgX19uZV9fIGFsd2F5cyByZXR1cm5z
IHRydWUgb24gZGlmZmVyZW50IG9iamVjdHMuCisgICAgICAgICMgVGh1cywganVzdCBjaGVjayB0
aGUgZGlzdGluZ3Vpc2hpbmcgY2FzZSB0byB2ZXJpZnkgdGhhdCB0aGUKKyAgICAgICAgIyBjb2Rl
IGRlZmluZXMgX19uZV9fLgorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKFByb2Nlc3Nvck9wdGlv
bnMoKSAhPSBQcm9jZXNzb3JPcHRpb25zKCkpCisKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvc3R5bGUvdW5pdHRlc3RzLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS9zdHlsZS91bml0dGVzdHMucHkKaW5kZXggZjhlM2Y3MS4uNjI2MTVhYiAxMDA2NDQK
LS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS91bml0dGVzdHMucHkKKysr
IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS91bml0dGVzdHMucHkKQEAgLTM4
LDYgKzM4LDcgQEAgaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIGNoZWNrZXJfdW5pdHRlc3QgaW1wb3J0
ICoKIGZyb20gZXJyb3JfaGFuZGxlcnNfdW5pdHRlc3QgaW1wb3J0ICoKIGZyb20gZmlsdGVyX3Vu
aXR0ZXN0IGltcG9ydCAqCitmcm9tIG9wdHBhcnNlcl91bml0dGVzdCBpbXBvcnQgKgogZnJvbSBw
cm9jZXNzb3JzLmNvbW1vbl91bml0dGVzdCBpbXBvcnQgKgogZnJvbSBwcm9jZXNzb3JzLmNwcF91
bml0dGVzdCBpbXBvcnQgKgogZnJvbSBwcm9jZXNzb3JzLnRleHRfdW5pdHRlc3QgaW1wb3J0ICoK
</data>

          </attachment>
      

    </bug>

</bugzilla>