<?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>234400</bug_id>
          
          <creation_ts>2021-12-16 11:05:14 -0800</creation_ts>
          <short_desc>[webkitbugspy] Initial library commit</short_desc>
          <delta_ts>2022-01-20 16:38: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>Tools / Tests</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=234993</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=235371</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=235426</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jonathan Bedard">jbedard</reporter>
          <assigned_to name="Jonathan Bedard">jbedard</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1824818</commentid>
    <comment_count>0</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-12-16 11:05:14 -0800</bug_when>
    <thetext>We need a library that can interact with both Bugzilla and GitHub for the GitHub transition.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824819</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-12-16 11:05:32 -0800</bug_when>
    <thetext>&lt;rdar://problem/86585683&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824835</commentid>
    <comment_count>2</comment_count>
      <attachid>447380</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-12-16 12:02:01 -0800</bug_when>
    <thetext>Created attachment 447380
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824853</commentid>
    <comment_count>3</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-12-16 12:55:18 -0800</bug_when>
    <thetext>Pull-request: https://github.com/WebKit/WebKit/pull/57</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828623</commentid>
    <comment_count>4</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2022-01-06 08:25:01 -0800</bug_when>
    <thetext>Landed 245782@main (r287686)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447380</attachid>
            <date>2021-12-16 12:02:01 -0800</date>
            <delta_ts>2021-12-16 12:02:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234400-20211216120200.patch</filename>
            <type>text/plain</type>
            <size>91743</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3MTQ2CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMTc4MTM4NWRmNmI4MmRlOTJjM2IxM2IwMzA3YjcwYzAw
ZTdiMDllNC4uYWQ3M2U1NmNjZjJiNGQyZGM2YzlkNjZhY2UwNmU4M2E4Njc2NzYxMiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2
IEBACisyMDIxLTEyLTE2ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbd2Via2l0YnVnc3B5XSBJbml0aWFsIGxpYnJhcnkgY29tbWl0CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQ0MDAKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzg2NTg1NjgzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0YnVnc3B5L01BTklGRVNU
LmluOiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy93ZWJraXRidWdzcHkvUkVB
RE1FLm1kOiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy93ZWJraXRidWdzcHkv
c2V0dXAucHk6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGJ1Z3Nw
eS93ZWJraXRidWdzcHkvX19pbml0X18ucHk6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvbGli
cmFyaWVzL3dlYmtpdGJ1Z3NweS93ZWJraXRidWdzcHkvYnVnemlsbGEucHk6IEFkZGVkLgorICAg
ICAgICAoVHJhY2tlcik6IEJ1Z3ppbGxhIGltcGxlbWVudGF0aW9uIG9mIGdlbmVyaWMgaXNzc3Vl
IHRyYWNrZXIuCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0YnVnc3B5L3dlYmtp
dGJ1Z3NweS9naXRodWIucHk6IEFkZGVkLgorICAgICAgICAoVHJhY2tlcik6IEdpdEh1YiBpbXBs
ZW1lbnRhdGlvbiBvZiBnZW5lcmljIGlzc3N1ZSB0cmFja2VyLgorICAgICAgICAqIFNjcmlwdHMv
bGlicmFyaWVzL3dlYmtpdGJ1Z3NweS93ZWJraXRidWdzcHkvaXNzdWUucHk6IEFkZGVkLgorICAg
ICAgICAoSXNzdWUpOiBEeW5hbWljYWxseSBmZXRjaGVkIGdlbmVyaWMgSXNzdWUgb2JqZWN0IHJl
ZmVyZW5jaW5nIHBhcmVudCBUcmFja2VyLgorICAgICAgICAoSXNzdWUuQ29tbWVudCk6IElzc3Vl
IGNvbW1lbnQgaW5jbHVkaW5nIGF1dGhvciBhbmQgdGltZXN0YW1wLgorICAgICAgICAqIFNjcmlw
dHMvbGlicmFyaWVzL3dlYmtpdGJ1Z3NweS93ZWJraXRidWdzcHkvbW9ja3MvX19pbml0X18ucHk6
IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGJ1Z3NweS93ZWJraXRi
dWdzcHkvbW9ja3MvYmFzZS5weTogQWRkZWQuCisgICAgICAgIChCYXNlKTogQmFzZSBjbGFzcyBm
b3IgbW9ja2luZyBodHRwIGJhc2VkIGlzc3VlIHRyYWNrZXJzLgorICAgICAgICAqIFNjcmlwdHMv
bGlicmFyaWVzL3dlYmtpdGJ1Z3NweS93ZWJraXRidWdzcHkvbW9ja3MvYnVnemlsbGEucHk6IEFk
ZGVkLgorICAgICAgICAoQnVnemlsbGEpOiBQYXJ0aWFsIG1vY2sgb2YgQnVnemlsbGEgd2Vic2Vy
dmVyLgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGJ1Z3NweS93ZWJraXRidWdz
cHkvbW9ja3MvZGF0YS5weTogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Vi
a2l0YnVnc3B5L3dlYmtpdGJ1Z3NweS9tb2Nrcy9naXRodWIucHk6IEFkZGVkLgorICAgICAgICAo
R2l0SHViKTogUGFydGlhbCBtb2NrIG9mIEdpdEh1YiB3ZWJzZXJ2ZXIuCisgICAgICAgICogU2Ny
aXB0cy9saWJyYXJpZXMvd2Via2l0YnVnc3B5L3dlYmtpdGJ1Z3NweS90ZXN0cy9fX2luaXRfXy5w
eTogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0YnVnc3B5L3dlYmtp
dGJ1Z3NweS90ZXN0cy9idWd6aWxsYV91bml0dGVzdC5weTogQWRkZWQuCisgICAgICAgIChUZXN0
QnVnemlsbGEpOgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGJ1Z3NweS93ZWJr
aXRidWdzcHkvdGVzdHMvZ2l0aHViX3VuaXR0ZXN0LnB5OiBBZGRlZC4KKyAgICAgICAgKFRlc3RH
aXRIdWIpOgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGJ1Z3NweS93ZWJraXRi
dWdzcHkvdGVzdHMvdXNlcl91bml0dGVzdC5weTogQWRkZWQuCisgICAgICAgIChUZXN0VXNlcik6
CisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0YnVnc3B5L3dlYmtpdGJ1Z3NweS90
cmFja2VyLnB5OiBBZGRlZC4KKyAgICAgICAgKFRyYWNrZXIpOiBHZW5lcmljIGJhc2Ugb2YgYWxs
IGlzc3VlIHRyYWNrZXJzLgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGJ1Z3Nw
eS93ZWJraXRidWdzcHkvdXNlci5weTogQWRkZWQuCisgICAgICAgIChVc2VyKTogVXNlciBvYmpl
Y3QgdGllZCB0byBzcGVjaWZpYyB0cmFja2VyLgorICAgICAgICAoVXNlci5FbmNvZGVyKTogVXNl
ciBKU09OIGVuY29kZXIuCisgICAgICAgIChVc2VyLk1hcHBpbmcpOiBNYXBwaW5nIG9mIHVzZXIg
YWxpYXMgdG8gVXNlciBvYmplY3QuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90ZXN0L21h
aW4ucHk6CisgICAgICAgIChtYWluKTogQWRkIHdlYmtpdGJ1Z3NweSB0byBzdWJkaXJlY3Rvcmll
cyB0byBiZSB0ZXN0ZWQuCisKIDIwMjEtMTItMTYgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0
ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI4NzA1
Ni4KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGJ1Z3NweS9NQU5J
RkVTVC5pbiBiL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGJ1Z3NweS9NQU5JRkVTVC5p
bgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5iYjNlYzVmMGQ0YzcwZWY3MzJhYTRkMzk5MjgyYTVkZGIyYTAwOGZkCi0t
LSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0YnVnc3B5L01B
TklGRVNULmluCkBAIC0wLDAgKzEgQEAKK2luY2x1ZGUgUkVBRE1FLm1kCmRpZmYgLS1naXQgYS9U
b29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRidWdzcHkvUkVBRE1FLm1kIGIvVG9vbHMvU2Ny
aXB0cy9saWJyYXJpZXMvd2Via2l0YnVnc3B5L1JFQURNRS5tZApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZTUyYThi
YjRmOGU4MTE4ZGQzOTE0MzhhOWJhYjA1NDI5OWViNzcyCi0tLSAvZGV2L251bGwKKysrIGIvVG9v
bHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0YnVnc3B5L1JFQURNRS5tZApAQCAtMCwwICsxLDMy
IEBACisjIHdlYmtpdGJ1Z3NweQorCitQcm92aWRlcyBhIHNoYXJlZCBBUEkgZm9yIHZhcmlvdXMg
YnVnIHRyYWNrZXJzLgorCisjIyBSZXF1aXJlbWVudHMKKworLSB3ZWJraXRjb3JlcHkKKworIyMg
VXNhZ2UKKworVGhlIGB3ZWJraXRidWdzcHlgIGxpYnJhcnkgaW1wbGVtZW50cyBhIGdlbmVyaWMg
aXNzdWUgdHJhY2tlciBBUEkgY29tcGF0aWJsZSB3aXRoIG11bHRpcGxlIGJ1ZyBhbmQgaXNzdWUg
dHJhY2tlcnMuIFRvIGludGVyYWN0IHdpdGggYW4gYElzc3VlYCwgZmlyc3QgaW5zdGFudGlhdGUg
YSB0cmFja2VyOgorCitgYGAKK2Zyb20gd2Via2l0YnVnc3B5IGltcG9ydCBnaXRodWIKKwordHJh
Y2tlciA9IGdpdGh1Yi5UcmFja2VyKCdodHRwczovL2dpdGh1Yi5jb20vV2ViS2l0L1dlYktpdCcp
Citpc3N1ZSA9IHRyYWNrZXIuaXNzdWUoMSkKK2BgYAorCitZb3Ugc2hvdWxkIHJlZ2lzdGVyIGFs
bCB0cmFja2VycyB5b3VyIHByb2plY3QgaW50ZXJhY3RzIHdpdGggc28gdGhhdCBhbiBgSXNzdWVg
IGluIG9uZSB0cmFja2VyIGNhbiBjcm9zcy1yZWZlcmVuY2UgaXNzdWVzIGluIG90aGVyIHRyYWNr
ZXJzOgorCitgYGAKK2Zyb20gd2Via2l0YnVnc3B5IGltcG9ydCBidWd6aWxsYSwgZ2l0aHViCisK
K1RyYWNrZXIucmVnaXN0ZXIoYnVnemlsbGEuVHJhY2tlcignaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcnLCByZXM9WworICAgIHJlLmNvbXBpbGUocidcQWh0dHBzPzovL3dlYmtpdC5vcmcvYi8oP1A8
aWQ+XGQrKVxaJyksCisgICAgcmUuY29tcGlsZShyJ1xBd2Via2l0Lm9yZy9iLyg/UDxpZD5cZCsp
XFonKSwKK10pKQorVHJhY2tlci5yZWdpc3RlcihnaXRodWIuVHJhY2tlcignaHR0cHM6Ly9naXRo
dWIuY29tL1dlYktpdC9XZWJLaXQnKSkKKworcHJpbnQoVHJhY2tlci5mcm9tX3N0cmluZygnaHR0
cHM6Ly9naXRodWIuY29tL1dlYktpdC9XZWJLaXQvaXNzdWVzLzQ3JykucmVmZXJlbmNlcykKK2Bg
YApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0YnVnc3B5L3NldHVw
LnB5IGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0YnVnc3B5L3NldHVwLnB5Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjYyMThiYWVmMzcyZjBhOTJjZTlkNjBmYjA2ZTJiNmQzOTA5NDFjM2YKLS0tIC9kZXYv
bnVsbAorKysgYi9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRidWdzcHkvc2V0dXAucHkK
QEAgLTAsMCArMSw1OCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6Cisj
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisj
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorIyBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisjIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCisjIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyMgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OCisjIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisjIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitm
cm9tIHNldHVwdG9vbHMgaW1wb3J0IHNldHVwCisKKworZGVmIHJlYWRtZSgpOgorICAgIHdpdGgg
b3BlbignUkVBRE1FLm1kJykgYXMgZjoKKyAgICAgICAgcmV0dXJuIGYucmVhZCgpCisKKworc2V0
dXAoCisgICAgbmFtZT0nd2Via2l0YnVnc3B5JywKKyAgICB2ZXJzaW9uPScwLjAuMScsCisgICAg
ZGVzY3JpcHRpb249J0xpYnJhcnkgY29udGFpbmluZyBhIHNoYXJlZCBBUEkgZm9yIHZhcmlvdXMg
YnVnIHRyYWNrZXJzLicsCisgICAgbG9uZ19kZXNjcmlwdGlvbj1yZWFkbWUoKSwKKyAgICBjbGFz
c2lmaWVycz1bCisgICAgICAgICdEZXZlbG9wbWVudCBTdGF0dXMgOjogNSAtIFByb2R1Y3Rpb24v
U3RhYmxlJywKKyAgICAgICAgJ0ludGVuZGVkIEF1ZGllbmNlIDo6IERldmVsb3BlcnMnLAorICAg
ICAgICAnTGljZW5zZSA6OiBPdGhlci9Qcm9wcmlldGFyeSBMaWNlbnNlJywKKyAgICAgICAgJ09w
ZXJhdGluZyBTeXN0ZW0gOjogTWFjT1MnLAorICAgICAgICAnTmF0dXJhbCBMYW5ndWFnZSA6OiBF
bmdsaXNoJywKKyAgICAgICAgJ1Byb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6OiAzJywK
KyAgICAgICAgJ1RvcGljIDo6IFNvZnR3YXJlIERldmVsb3BtZW50IDo6IExpYnJhcmllcyA6OiBQ
eXRob24gTW9kdWxlcycsCisgICAgXSwKKyAgICBrZXl3b3Jkcz0ncHl0aG9uIHVuaWNvZGUnLAor
ICAgIHVybD0naHR0cHM6Ly9naXRodWIuY29tL1dlYktpdC9XZWJLaXQvdHJlZS9tYWluL1Rvb2xz
L1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGJ1Z3NweScsCisgICAgYXV0aG9yPSdKb25hdGhhbiBC
ZWRhcmQnLAorICAgIGF1dGhvcl9lbWFpbD0namJlZGFyZEBhcHBsZS5jb20nLAorICAgIGxpY2Vu
c2U9J01vZGlmaWVkIEJTRCcsCisgICAgcGFja2FnZXM9WworICAgICAgICAnd2Via2l0YnVnc3B5
JywKKyAgICBdLAorICAgIGluc3RhbGxfcmVxdWlyZXM9WworICAgICAgICAnd2Via2l0Y29yZXB5
JywKKyAgICBdLAorICAgIGluY2x1ZGVfcGFja2FnZV9kYXRhPVRydWUsCisgICAgemlwX3NhZmU9
RmFsc2UsCispCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRidWdz
cHkvd2Via2l0YnVnc3B5L19faW5pdF9fLnB5IGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Vi
a2l0YnVnc3B5L3dlYmtpdGJ1Z3NweS9fX2luaXRfXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMjIyMmIxZDFk
MDVjM2Q3ZjBhMWE1NDA1OTA3NzRjNjkxY2RmNDI1Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMv
U2NyaXB0cy9saWJyYXJpZXMvd2Via2l0YnVnc3B5L3dlYmtpdGJ1Z3NweS9fX2luaXRfXy5weQpA
QCAtMCwwICsxLDU1IEBACisjIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMg
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
IyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisjIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitp
bXBvcnQgbG9nZ2luZworaW1wb3J0IG9zCitpbXBvcnQgc3lzCisKK2xvZyA9IGxvZ2dpbmcuZ2V0
TG9nZ2VyKCd3ZWJraXRidWdzcHknKQorCisKK2RlZiBfbWF5YmVfYWRkX2xpYnJhcnlfcGF0aChw
YXRoKToKKyAgICAjIEhvcGVmdWxseSB3ZSdyZSBiZXNpZGUgdGhlIHJlcXVpcmVkIGxpYnJhcnks
IG90aGVyd2lzZSB0aGF0IGxpYnJhcnkgd2lsbCBuZWVkIHRvIGJlIGluc3RhbGxlZC4KKyAgICBs
aWJyYXJpZXNfcGF0aCA9IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5h
YnNwYXRoKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykpKSkKKyAgICBsaWJyYXJ5X3BhdGggPSBv
cy5wYXRoLmpvaW4obGlicmFyaWVzX3BhdGgsIHBhdGgpCisgICAgaWYgb3MucGF0aC5pc2Rpcihs
aWJyYXJ5X3BhdGgpIGFuZCBvcy5wYXRoLmlzZGlyKG9zLnBhdGguam9pbihsaWJyYXJ5X3BhdGgs
IHBhdGgpKSBhbmQgbGlicmFyeV9wYXRoIG5vdCBpbiBzeXMucGF0aDoKKyAgICAgICAgc3lzLnBh
dGguaW5zZXJ0KDAsIGxpYnJhcnlfcGF0aCkKKworCitfbWF5YmVfYWRkX2xpYnJhcnlfcGF0aCgn
d2Via2l0Y29yZXB5JykKKwordHJ5OgorICAgIGZyb20gd2Via2l0Y29yZXB5IGltcG9ydCBBdXRv
SW5zdGFsbCwgUGFja2FnZSwgVmVyc2lvbgorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIHJhaXNl
IEltcG9ydEVycm9yKAorICAgICAgICAiJ3dlYmtpdGNvcmVweScgY291bGQgbm90IGJlIGZvdW5k
IG9uIHlvdXIgUHl0aG9uIHBhdGguXG4iICsKKyAgICAgICAgIllvdSBhcmUgbm90IHJ1bm5pbmcg
ZnJvbSBhIFdlYktpdCBjaGVja291dC5cbiIgKworICAgICAgICAiUGxlYXNlIGluc3RhbGwgd2Vi
a2l0Y29yZXB5IHdpdGggYHBpcCBpbnN0YWxsIHdlYmtpdGNvcmVweSAtLWV4dHJhLWluZGV4LXVy
bCA8cGFja2FnZSBpbmRleCBVUkw+YCIKKyAgICApCisKK3ZlcnNpb24gPSBWZXJzaW9uKDAsIDAs
IDEpCisKK2Zyb20gLnVzZXIgaW1wb3J0IFVzZXIKK2Zyb20gLmlzc3VlIGltcG9ydCBJc3N1ZQor
ZnJvbSAudHJhY2tlciBpbXBvcnQgVHJhY2tlcgorCituYW1lID0gJ3dlYmtpdGJ1Z3NweScKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGJ1Z3NweS93ZWJraXRidWdz
cHkvYnVnemlsbGEucHkgYi9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRidWdzcHkvd2Vi
a2l0YnVnc3B5L2J1Z3ppbGxhLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQxMGI1NGZmYTQzZjlkZWMwNGFkMzZm
MmUzMGJjYzE4OTA3ZTllY2EKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL2xpYnJh
cmllcy93ZWJraXRidWdzcHkvd2Via2l0YnVnc3B5L2J1Z3ppbGxhLnB5CkBAIC0wLDAgKzEsMTcz
IEBACisjIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgY2FsZW5k
YXIKK2ltcG9ydCBvcworaW1wb3J0IHJlCitpbXBvcnQgcmVxdWVzdHMKK2ltcG9ydCBzeXMKKwor
ZnJvbSAuaXNzdWUgaW1wb3J0IElzc3VlCitmcm9tIC50cmFja2VyIGltcG9ydCBUcmFja2VyIGFz
IEdlbmVyaWNUcmFja2VyCisKK2Zyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1lCitmcm9tIHdl
YmtpdGNvcmVweSBpbXBvcnQgY3JlZGVudGlhbHMsIGRlY29yYXRvcnMsIE91dHB1dENhcHR1cmUK
KworCitjbGFzcyBUcmFja2VyKEdlbmVyaWNUcmFja2VyKToKKyAgICBST09UX1JFID0gcmUuY29t
cGlsZShyJ1xBaHR0cHM/Oi8vKD9QPGRvbWFpbj5cUyspXFonKQorCisgICAgZGVmIF9faW5pdF9f
KHNlbGYsIHVybCwgdXNlcnM9Tm9uZSwgcmVzPU5vbmUpOgorICAgICAgICBzdXBlcihUcmFja2Vy
LCBzZWxmKS5fX2luaXRfXyh1c2Vycz11c2VycykKKworICAgICAgICBtYXRjaCA9IHNlbGYuUk9P
VF9SRS5tYXRjaCh1cmwpCisgICAgICAgIGlmIG5vdCBtYXRjaDoKKyAgICAgICAgICAgIHJhaXNl
IHNlbGYuRXhjZXB0aW9uKCIne30nIGlzIG5vdCBhIHZhbGlkIGJ1Z3ppbGxhIHVybCIuZm9ybWF0
KHVybCkpCisgICAgICAgIHNlbGYudXJsID0gdXJsCisgICAgICAgIHNlbGYuX3JlcyA9IFsKKyAg
ICAgICAgICAgIHJlLmNvbXBpbGUocidcQWh0dHBzPzovL3t9L3Nob3dfYnVnLmNnaVw/aWQ9KD9Q
PGlkPlxkKylcWicuZm9ybWF0KG1hdGNoLmdyb3VwKCdkb21haW4nKSkpLAorICAgICAgICAgICAg
cmUuY29tcGlsZShyJ1xBe30vc2hvd19idWcuY2dpXD9pZD0oP1A8aWQ+XGQrKVxaJy5mb3JtYXQo
bWF0Y2guZ3JvdXAoJ2RvbWFpbicpKSksCisgICAgICAgIF0gKyAocmVzIG9yIFtdKQorCisgICAg
ZGVmIHVzZXIoc2VsZiwgbmFtZT1Ob25lLCB1c2VybmFtZT1Ob25lLCBlbWFpbD1Ob25lKToKKyAg
ICAgICAgdXNlciA9IHN1cGVyKFRyYWNrZXIsIHNlbGYpLnVzZXIobmFtZT1uYW1lLCB1c2VybmFt
ZT11c2VybmFtZSwgZW1haWw9ZW1haWwpCisgICAgICAgIGlmIHVzZXI6CisgICAgICAgICAgICBy
ZXR1cm4gdXNlcgorICAgICAgICBpZiBuYW1lIGFuZCB1c2VybmFtZSBhbmQgZW1haWw6CisgICAg
ICAgICAgICByZXR1cm4gc2VsZi51c2Vycy5jcmVhdGUoCisgICAgICAgICAgICAgICAgbmFtZT1u
YW1lLAorICAgICAgICAgICAgICAgIHVzZXJuYW1lPXVzZXJuYW1lLAorICAgICAgICAgICAgICAg
IGVtYWlscz1bZW1haWxdLAorICAgICAgICAgICAgKQorCisgICAgICAgIGlmIG5vdCB1c2VybmFt
ZSBhbmQgbm90IGVtYWlsOgorICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJGYWlsZWQg
dG8gZmluZCB1c2VybmFtZSBmb3IgJ3t9JyIuZm9ybWF0KG5hbWUpKQorICAgICAgICByZXNwb25z
ZSA9IHJlcXVlc3RzLmdldCgne30vcmVzdC91c2VyP25hbWVzPXt9Jy5mb3JtYXQoc2VsZi51cmws
IHVzZXJuYW1lIG9yIGVtYWlsIG9yIG5hbWUpKQorICAgICAgICByZXNwb25zZSA9IHJlc3BvbnNl
Lmpzb24oKS5nZXQoJ3VzZXJzJykgaWYgcmVzcG9uc2Uuc3RhdHVzX2NvZGUgLy8gMTAwID09IDIg
ZWxzZSBOb25lCisgICAgICAgIGlmIG5vdCByZXNwb25zZToKKyAgICAgICAgICAgIHJldHVybiBz
ZWxmLnVzZXJzLmNyZWF0ZSgKKyAgICAgICAgICAgICAgICBuYW1lPW5hbWUsCisgICAgICAgICAg
ICAgICAgdXNlcm5hbWU9dXNlcm5hbWUsCisgICAgICAgICAgICAgICAgZW1haWxzPVtlbWFpbF0g
aWYgZW1haWwgZWxzZSBOb25lLAorICAgICAgICAgICAgKQorCisgICAgICAgIHJldHVybiBzZWxm
LnVzZXJzLmNyZWF0ZSgKKyAgICAgICAgICAgIG5hbWU9cmVzcG9uc2VbMF1bJ3JlYWxfbmFtZSdd
LAorICAgICAgICAgICAgdXNlcm5hbWU9cmVzcG9uc2VbMF1bJ25hbWUnXSwKKyAgICAgICAgICAg
IGVtYWlscz1bcmVzcG9uc2VbMF1bJ25hbWUnXV0sCisgICAgICAgICkKKworICAgIGRlZiBmcm9t
X3N0cmluZyhzZWxmLCBzdHJpbmcpOgorICAgICAgICBmb3IgcmVnZXggaW4gc2VsZi5fcmVzOgor
ICAgICAgICAgICAgbWF0Y2ggPSByZWdleC5tYXRjaChzdHJpbmcpCisgICAgICAgICAgICBpZiBt
YXRjaDoKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5pc3N1ZShpbnQobWF0Y2guZ3JvdXAo
J2lkJykpKQorICAgICAgICByZXR1cm4gTm9uZQorCisgICAgZGVmIGNyZWRlbnRpYWxzKHNlbGYs
IHJlcXVpcmVkPVRydWUpOgorICAgICAgICByZXR1cm4gY3JlZGVudGlhbHMoCisgICAgICAgICAg
ICB1cmw9c2VsZi51cmwsCisgICAgICAgICAgICByZXF1aXJlZD1yZXF1aXJlZCwKKyAgICAgICAg
ICAgIHByb21wdD1zZWxmLnVybC5zcGxpdCgnLy8nKVstMV0sCisgICAgICAgICkKKworICAgIGRl
ZiBpc3N1ZShzZWxmLCBpZCk6CisgICAgICAgIHJldHVybiBJc3N1ZShpZD1pbnQoaWQpLCB0cmFj
a2VyPXNlbGYpCisKKyAgICBkZWYgcG9wdWxhdGUoc2VsZiwgaXNzdWUsIG1lbWJlcj1Ob25lKToK
KyAgICAgICAgaXNzdWUuX2xpbmsgPSAne30vc2hvd19idWcuY2dpP2lkPXt9Jy5mb3JtYXQoc2Vs
Zi51cmwsIGlzc3VlLmlkKQorCisgICAgICAgIGlmIG1lbWJlciBpbiBbJ3RpdGxlJywgJ3RpbWVz
dGFtcCcsICdjcmVhdG9yJywgJ29wZW5lZCcsICdhc3NpZ25lZScsICd3YXRjaGVycyddOgorICAg
ICAgICAgICAgcmVzcG9uc2UgPSByZXF1ZXN0cy5nZXQoJ3t9L3Jlc3QvYnVnL3t9Jy5mb3JtYXQo
c2VsZi51cmwsIGlzc3VlLmlkKSkKKyAgICAgICAgICAgIHJlc3BvbnNlID0gcmVzcG9uc2UuanNv
bigpLmdldCgnYnVncycsIFtdKSBpZiByZXNwb25zZS5zdGF0dXNfY29kZSA9PSAyMDAgZWxzZSBO
b25lCisgICAgICAgICAgICBpZiByZXNwb25zZToKKyAgICAgICAgICAgICAgICByZXNwb25zZSA9
IHJlc3BvbnNlWzBdCisgICAgICAgICAgICAgICAgaXNzdWUuX3RpdGxlID0gcmVzcG9uc2VbJ3N1
bW1hcnknXQorICAgICAgICAgICAgICAgIGlzc3VlLl90aW1lc3RhbXAgPSBpbnQoY2FsZW5kYXIu
dGltZWdtKGRhdGV0aW1lLnN0cnB0aW1lKHJlc3BvbnNlWydjcmVhdGlvbl90aW1lJ10sICclWS0l
bS0lZFQlSDolTTolU1onKS50aW1ldHVwbGUoKSkpCisgICAgICAgICAgICAgICAgaWYgcmVzcG9u
c2UuZ2V0KCdjcmVhdG9yX2RldGFpbCcpOgorICAgICAgICAgICAgICAgICAgICBpc3N1ZS5fY3Jl
YXRvciA9IHNlbGYudXNlcigKKyAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9cmVzcG9uc2Vb
J2NyZWF0b3JfZGV0YWlsJ10uZ2V0KCdyZWFsX25hbWUnKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHVzZXJuYW1lPXJlc3BvbnNlWydjcmVhdG9yX2RldGFpbCddLmdldCgnbmFtZScpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgZW1haWw9cmVzcG9uc2VbJ2NyZWF0b3JfZGV0YWlsJ10uZ2V0
KCdlbWFpbCcpLAorICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgZWxzZToK
KyAgICAgICAgICAgICAgICAgICAgaXNzdWUuX2NyZWF0b3IgPSBzZWxmLnVzZXIodXNlcm5hbWU9
cmVzcG9uc2VbJ2NyZWF0b3InXSkgaWYgcmVzcG9uc2UuZ2V0KCdjcmVhdG9yJykgZWxzZSBOb25l
CisgICAgICAgICAgICAgICAgaXNzdWUuX29wZW5lZCA9IHJlc3BvbnNlWydzdGF0dXMnXSAhPSAn
UkVTT0xWRUQnCisgICAgICAgICAgICAgICAgaWYgcmVzcG9uc2UuZ2V0KCdhc3NpZ25lZF90b19k
ZXRhaWwnKToKKyAgICAgICAgICAgICAgICAgICAgaXNzdWUuX2Fzc2lnbmVlID0gc2VsZi51c2Vy
KAorICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1yZXNwb25zZVsnYXNzaWduZWRfdG9fZGV0
YWlsJ10uZ2V0KCdyZWFsX25hbWUnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJuYW1l
PXJlc3BvbnNlWydhc3NpZ25lZF90b19kZXRhaWwnXS5nZXQoJ25hbWUnKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGVtYWlsPXJlc3BvbnNlWydhc3NpZ25lZF90b19kZXRhaWwnXS5nZXQoJ2Vt
YWlsJyksCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgICAgICAgICBpc3N1ZS5fYXNzaWduZWUgPSBzZWxmLnVzZXIodXNlcm5hbWU9cmVz
cG9uc2VbJ2Fzc2lnbmVkX3RvJ10pIGlmIHJlc3BvbnNlLmdldCgnYXNzaWduZWRfdG8nKSBlbHNl
IE5vbmUKKyAgICAgICAgICAgICAgICBpc3N1ZS5fd2F0Y2hlcnMgPSBbXQorICAgICAgICAgICAg
ICAgIGZvciBuYW1lIGluIHJlc3BvbnNlLmdldCgnY2MnLCBbXSk6CisgICAgICAgICAgICAgICAg
ICAgIGlzc3VlLl93YXRjaGVycy5hcHBlbmQoc2VsZi51c2VyKHVzZXJuYW1lPW5hbWUpKQorCisg
ICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoIkZhaWxl
ZCB0byBmZXRjaCAne30nXG4iLmZvcm1hdChpc3N1ZS5saW5rKSkKKworICAgICAgICBpZiBtZW1i
ZXIgaW4gWydkZXNjcmlwdGlvbicsICdjb21tZW50cyddOgorICAgICAgICAgICAgcmVzcG9uc2Ug
PSByZXF1ZXN0cy5nZXQoJ3t9L3Jlc3QvYnVnL3t9L2NvbW1lbnQnLmZvcm1hdChzZWxmLnVybCwg
aXNzdWUuaWQpKQorICAgICAgICAgICAgaWYgcmVzcG9uc2Uuc3RhdHVzX2NvZGUgPT0gMjAwOgor
ICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gcmVzcG9uc2UuanNvbigpLmdldCgnYnVncycsIHt9
KS5nZXQoc3RyKGlzc3VlLmlkKSwge30pLmdldCgnY29tbWVudHMnLCBOb25lKQorICAgICAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXNwb25zZSA9IE5vbmUKKworICAgICAgICAgICAg
aWYgcmVzcG9uc2U6CisgICAgICAgICAgICAgICAgaXNzdWUuX2Rlc2NyaXB0aW9uID0gcmVzcG9u
c2VbMF0uZ2V0KCd0ZXh0JykKKyAgICAgICAgICAgICAgICBpc3N1ZS5fY29tbWVudHMgPSBbCisg
ICAgICAgICAgICAgICAgICAgIElzc3VlLkNvbW1lbnQoCisgICAgICAgICAgICAgICAgICAgICAg
ICB1c2VyPXNlbGYudXNlcih1c2VybmFtZT1jb21tZW50WydjcmVhdG9yJ10pLAorICAgICAgICAg
ICAgICAgICAgICAgICAgdGltZXN0YW1wPWludChjYWxlbmRhci50aW1lZ20oZGF0ZXRpbWUuc3Ry
cHRpbWUoY29tbWVudFsnY3JlYXRpb25fdGltZSddLCAnJVktJW0tJWRUJUg6JU06JVNaJykudGlt
ZXR1cGxlKCkpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ9Y29tbWVudFsndGV4
dCddLAorICAgICAgICAgICAgICAgICAgICApIGZvciBjb21tZW50IGluIHJlc3BvbnNlWzE6XQor
ICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc3lz
LnN0ZGVyci53cml0ZSgiRmFpbGVkIHRvIGZldGNoIGNvbW1lbnRzIGZvciAne30nXG4iLmZvcm1h
dChpc3N1ZS5saW5rKSkKKworICAgICAgICBpZiBtZW1iZXIgPT0gJ3JlZmVyZW5jZXMnOgorICAg
ICAgICAgICAgaXNzdWUuX3JlZmVyZW5jZXMgPSBbXQorICAgICAgICAgICAgcmVmcyA9IHNldCgp
CisKKyAgICAgICAgICAgIGZvciB0ZXh0IGluIFtpc3N1ZS5kZXNjcmlwdGlvbl0gKyBbY29tbWVu
dC5jb250ZW50IGZvciBjb21tZW50IGluIGlzc3VlLmNvbW1lbnRzXToKKyAgICAgICAgICAgICAg
ICBmb3IgbWF0Y2ggaW4gc2VsZi5SRUZFUkVOQ0VfUkUuZmluZGFsbCh0ZXh0KToKKyAgICAgICAg
ICAgICAgICAgICAgY2FuZGlkYXRlID0gR2VuZXJpY1RyYWNrZXIuZnJvbV9zdHJpbmcobWF0Y2hb
MF0pIG9yIHNlbGYuZnJvbV9zdHJpbmcobWF0Y2hbMF0pCisgICAgICAgICAgICAgICAgICAgIGlm
IG5vdCBjYW5kaWRhdGUgb3IgY2FuZGlkYXRlLmxpbmsgaW4gcmVmcyBvciBjYW5kaWRhdGUuaWQg
PT0gaXNzdWUuaWQ6CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAg
ICAgICAgICAgICBpc3N1ZS5fcmVmZXJlbmNlcy5hcHBlbmQoY2FuZGlkYXRlKQorICAgICAgICAg
ICAgICAgICAgICByZWZzLmFkZChjYW5kaWRhdGUubGluaykKKworICAgICAgICAgICAgcmVzcG9u
c2UgPSByZXF1ZXN0cy5nZXQoJ3t9L3Jlc3QvYnVnL3t9P2luY2x1ZGVfZmllbGRzPXNlZV9hbHNv
Jy5mb3JtYXQoc2VsZi51cmwsIGlzc3VlLmlkKSkKKyAgICAgICAgICAgIHJlc3BvbnNlID0gcmVz
cG9uc2UuanNvbigpLmdldCgnYnVncycsIFtdKSBpZiByZXNwb25zZS5zdGF0dXNfY29kZSA9PSAy
MDAgZWxzZSBOb25lCisgICAgICAgICAgICBpZiByZXNwb25zZToKKyAgICAgICAgICAgICAgICBm
b3IgbGluayBpbiByZXNwb25zZVswXS5nZXQoJ3NlZV9hbHNvJywgW10pOgorICAgICAgICAgICAg
ICAgICAgICBjYW5kaWRhdGUgPSBHZW5lcmljVHJhY2tlci5mcm9tX3N0cmluZyhsaW5rKSBvciBz
ZWxmLmZyb21fc3RyaW5nKGxpbmspCisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBjYW5kaWRh
dGUgb3IgY2FuZGlkYXRlLmxpbmsgaW4gcmVmcyBvciBjYW5kaWRhdGUuaWQgPT0gaXNzdWUuaWQ6
CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgICAgICBp
c3N1ZS5fcmVmZXJlbmNlcy5hcHBlbmQoY2FuZGlkYXRlKQorICAgICAgICAgICAgICAgICAgICBy
ZWZzLmFkZChjYW5kaWRhdGUubGluaykKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAg
ICAgc3lzLnN0ZGVyci53cml0ZSgiRmFpbGVkIHRvIGZldGNoIHJlbGF0ZWQgaXNzdWVzIGZvciAn
e30nXG4iLmZvcm1hdChpc3N1ZS5saW5rKSkKKworICAgICAgICByZXR1cm4gaXNzdWUKZGlmZiAt
LWdpdCBhL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGJ1Z3NweS93ZWJraXRidWdzcHkv
Z2l0aHViLnB5IGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0YnVnc3B5L3dlYmtpdGJ1
Z3NweS9naXRodWIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjA5YzRjN2Q0NmFkM2QyYzc2ZTUyYjAwNmEzMDIz
MDBkMGI1N2JlMgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dl
YmtpdGJ1Z3NweS93ZWJraXRidWdzcHkvZ2l0aHViLnB5CkBAIC0wLDAgKzEsMjM0IEBACisjIENv
cHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMK
KyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgY2FsZW5kYXIKK2ltcG9y
dCByZQoraW1wb3J0IHJlcXVlc3RzCitpbXBvcnQgc3lzCisKK2Zyb20gLmlzc3VlIGltcG9ydCBJ
c3N1ZQorZnJvbSAudHJhY2tlciBpbXBvcnQgVHJhY2tlciBhcyBHZW5lcmljVHJhY2tlcgorCitm
cm9tIGRhdGV0aW1lIGltcG9ydCBkYXRldGltZQorZnJvbSByZXF1ZXN0cy5hdXRoIGltcG9ydCBI
VFRQQmFzaWNBdXRoCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgY3JlZGVudGlhbHMsIGRlY29y
YXRvcnMKKworCitjbGFzcyBUcmFja2VyKEdlbmVyaWNUcmFja2VyKToKKyAgICBST09UX1JFID0g
cmUuY29tcGlsZShyJ1xBaHR0cHM/Oi8vZ2l0aHViLig/UDxkb21haW4+XFMrKS8oP1A8b3duZXI+
XFMrKS8oP1A8cmVwb3NpdG9yeT5cUyspXFonKQorICAgIElTU1VFX0xJTktfUkUgPSByZS5jb21w
aWxlKHInIyg/UDxpZD5cZCspJykKKyAgICBVU0VSTkFNRV9SRSA9IHJlLmNvbXBpbGUocicoXnxc
c3xcJ3wiKUAoP1A8dXNlcm5hbWU+W15ccyJcJzw+XSspJykKKworICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCB1cmwsIHVzZXJzPU5vbmUsIHJlcz1Ob25lKToKKyAgICAgICAgc3VwZXIoVHJhY2tlciwg
c2VsZikuX19pbml0X18odXNlcnM9dXNlcnMpCisKKyAgICAgICAgbWF0Y2ggPSBzZWxmLlJPT1Rf
UkUubWF0Y2godXJsKQorICAgICAgICBpZiBub3QgbWF0Y2g6CisgICAgICAgICAgICByYWlzZSBz
ZWxmLkV4Y2VwdGlvbigiJ3t9JyBpcyBub3QgYSB2YWxpZCBHaXRIdWIgcHJvamVjdCIuZm9ybWF0
KHVybCkpCisKKyAgICAgICAgc2VsZi5fcmVzID0gWworICAgICAgICAgICAgcmUuY29tcGlsZShy
J1xBaHR0cHM/Oi8vZ2l0aHViLnt9L3t9L3t9L2lzc3Vlcy8oP1A8aWQ+XGQrKVxaJy5mb3JtYXQo
CisgICAgICAgICAgICAgICAgbWF0Y2guZ3JvdXAoJ2RvbWFpbicpLCBtYXRjaC5ncm91cCgnb3du
ZXInKSwgbWF0Y2guZ3JvdXAoJ3JlcG9zaXRvcnknKSwKKyAgICAgICAgICAgICkpLCByZS5jb21w
aWxlKHInXEFnaXRodWIue30ve30ve30vaXNzdWVzLyg/UDxpZD5cZCspXFonLmZvcm1hdCgKKyAg
ICAgICAgICAgICAgICBtYXRjaC5ncm91cCgnZG9tYWluJyksIG1hdGNoLmdyb3VwKCdvd25lcicp
LCBtYXRjaC5ncm91cCgncmVwb3NpdG9yeScpLAorICAgICAgICAgICAgKSksCisgICAgICAgIF0g
KyAocmVzIG9yIFtdKQorCisgICAgICAgIHNlbGYudXJsID0gdXJsCisgICAgICAgIHNlbGYuYXBp
X3VybCA9ICdodHRwczovL2FwaS5naXRodWIue30nLmZvcm1hdChtYXRjaC5ncm91cCgnZG9tYWlu
JykpCisgICAgICAgIHNlbGYub3duZXIgPSBtYXRjaC5ncm91cCgnb3duZXInKQorICAgICAgICBz
ZWxmLm5hbWUgPSBtYXRjaC5ncm91cCgncmVwb3NpdG9yeScpCisKKyAgICBkZWYgZnJvbV9zdHJp
bmcoc2VsZiwgc3RyaW5nKToKKyAgICAgICAgZm9yIHJlZ2V4IGluIHNlbGYuX3JlczoKKyAgICAg
ICAgICAgIG1hdGNoID0gcmVnZXgubWF0Y2goc3RyaW5nKQorICAgICAgICAgICAgaWYgbWF0Y2g6
CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuaXNzdWUoaW50KG1hdGNoLmdyb3VwKCdpZCcp
KSkKKyAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIGRlZiBjcmVkZW50aWFscyhzZWxmLCByZXF1
aXJlZD1UcnVlKToKKyAgICAgICAgcmV0dXJuIGNyZWRlbnRpYWxzKAorICAgICAgICAgICAgdXJs
PXNlbGYuYXBpX3VybCwKKyAgICAgICAgICAgIHJlcXVpcmVkPXJlcXVpcmVkLAorICAgICAgICAg
ICAgbmFtZT1zZWxmLnVybC5zcGxpdCgnLycpWzJdLnJlcGxhY2UoJy4nLCAnXycpLnVwcGVyKCks
CisgICAgICAgICAgICBwcm9tcHQ9IkdpdEh1YidzIEFQSVxuUGxlYXNlIGdlbmVyYXRlIGEgJ1Bl
cnNvbmFsIGFjY2VzcyB0b2tlbicgdmlhICdEZXZlbG9wZXIgc2V0dGluZ3MnIGZvciB5b3VyIHVz
ZXIiLAorICAgICAgICAgICAga2V5X25hbWU9J3Rva2VuJywKKyAgICAgICAgKQorCisgICAgZGVm
IHJlcXVlc3Qoc2VsZiwgcGF0aD1Ob25lLCBwYXJhbXM9Tm9uZSwgaGVhZGVycz1Ob25lLCBhdXRo
ZW50aWNhdGVkPU5vbmUsIHBhZ2luYXRlPVRydWUpOgorICAgICAgICBoZWFkZXJzID0ge2tleTog
dmFsdWUgZm9yIGtleSwgdmFsdWUgaW4gaGVhZGVycy5pdGVtcygpfSBpZiBoZWFkZXJzIGVsc2Ug
ZGljdCgpCisgICAgICAgIGhlYWRlcnNbJ0FjY2VwdCddID0gaGVhZGVycy5nZXQoJ0FjY2VwdCcs
ICdhcHBsaWNhdGlvbi92bmQuZ2l0aHViLnYzK2pzb24nKQorCisgICAgICAgIHVzZXJuYW1lLCBh
Y2Nlc3NfdG9rZW4gPSBzZWxmLmNyZWRlbnRpYWxzKHJlcXVpcmVkPWJvb2woYXV0aGVudGljYXRl
ZCkpCisgICAgICAgIGF1dGggPSBIVFRQQmFzaWNBdXRoKHVzZXJuYW1lLCBhY2Nlc3NfdG9rZW4p
IGlmIHVzZXJuYW1lIGFuZCBhY2Nlc3NfdG9rZW4gZWxzZSBOb25lCisgICAgICAgIGlmIGF1dGhl
bnRpY2F0ZWQgaXMgRmFsc2U6CisgICAgICAgICAgICBhdXRoID0gTm9uZQorICAgICAgICBpZiBh
dXRoZW50aWNhdGVkIGFuZCBub3QgYXV0aDoKKyAgICAgICAgICAgIHJhaXNlIHNlbGYuRXhjZXB0
aW9uKCdSZXF1ZXN0IHJlcXVpcmVzIGF1dGhlbnRpY2F0aW9uLCBub25lIHByb3ZpZGVkJykKKwor
ICAgICAgICBwYXJhbXMgPSB7a2V5OiB2YWx1ZSBmb3Iga2V5LCB2YWx1ZSBpbiBwYXJhbXMuaXRl
bXMoKX0gaWYgcGFyYW1zIGVsc2UgZGljdCgpCisgICAgICAgIHBhcmFtc1sncGVyX3BhZ2UnXSA9
IHBhcmFtcy5nZXQoJ3Blcl9wYWdlJywgMTAwKQorICAgICAgICBwYXJhbXNbJ3BhZ2UnXSA9IHBh
cmFtcy5nZXQoJ3BhZ2UnLCAxKQorCisgICAgICAgIHVybCA9ICd7YXBpX3VybH0vcmVwb3Mve293
bmVyfS97bmFtZX0vaXNzdWVze3BhdGh9Jy5mb3JtYXQoCisgICAgICAgICAgICBhcGlfdXJsPXNl
bGYuYXBpX3VybCwKKyAgICAgICAgICAgIG93bmVyPXNlbGYub3duZXIsCisgICAgICAgICAgICBu
YW1lPXNlbGYubmFtZSwKKyAgICAgICAgICAgIHBhdGg9Jy97fScuZm9ybWF0KHBhdGgpIGlmIHBh
dGggZWxzZSAnJywKKyAgICAgICAgKQorICAgICAgICByZXNwb25zZSA9IHJlcXVlc3RzLmdldCh1
cmwsIHBhcmFtcz1wYXJhbXMsIGhlYWRlcnM9aGVhZGVycywgYXV0aD1hdXRoKQorICAgICAgICBp
ZiBhdXRoZW50aWNhdGVkIGlzIE5vbmUgYW5kIG5vdCBhdXRoIGFuZCByZXNwb25zZS5zdGF0dXNf
Y29kZSAvLyAxMDAgPT0gNDoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLnJlcXVlc3QocGF0aD1w
YXRoLCBwYXJhbXM9cGFyYW1zLCBoZWFkZXJzPWhlYWRlcnMsIGF1dGhlbnRpY2F0ZWQ9VHJ1ZSwg
cGFnaW5hdGU9cGFnaW5hdGUpCisgICAgICAgIGlmIHJlc3BvbnNlLnN0YXR1c19jb2RlICE9IDIw
MDoKKyAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoIlJlcXVlc3QgdG8gJ3t9JyByZXR1cm5l
ZCBzdGF0dXMgY29kZSAne30nXG4iLmZvcm1hdCh1cmwsIHJlc3BvbnNlLnN0YXR1c19jb2RlKSkK
KyAgICAgICAgICAgIG1lc3NhZ2UgPSByZXNwb25zZS5qc29uKCkuZ2V0KCdtZXNzYWdlJykKKyAg
ICAgICAgICAgIGlmIG1lc3NhZ2U6CisgICAgICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgn
TWVzc2FnZToge31cbicuZm9ybWF0KG1lc3NhZ2UpKQorICAgICAgICAgICAgcmV0dXJuIE5vbmUK
KyAgICAgICAgcmVzdWx0ID0gcmVzcG9uc2UuanNvbigpCisKKyAgICAgICAgd2hpbGUgcGFnaW5h
dGUgYW5kIGlzaW5zdGFuY2UocmVzcG9uc2UuanNvbigpLCBsaXN0KSBhbmQgbGVuKHJlc3BvbnNl
Lmpzb24oKSkgPT0gcGFyYW1zWydwZXJfcGFnZSddOgorICAgICAgICAgICAgcGFyYW1zWydwYWdl
J10gKz0gMQorICAgICAgICAgICAgcmVzcG9uc2UgPSByZXF1ZXN0cy5nZXQodXJsLCBwYXJhbXM9
cGFyYW1zLCBoZWFkZXJzPWhlYWRlcnMsIGF1dGg9YXV0aCkKKyAgICAgICAgICAgIGlmIHJlc3Bv
bnNlLnN0YXR1c19jb2RlICE9IDIwMDoKKyAgICAgICAgICAgICAgICByYWlzZSBzZWxmLkV4Y2Vw
dGlvbigKKyAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byBhc3NlbWJsZSBwYWdpbmF0aW9u
IHJlcXVlc3RzIGZvciAne30nLCBmYWlsZWQgb24gcGFnZSB7fSIuZm9ybWF0KHVybCwgcGFyYW1z
WydwYWdlJ10pKQorICAgICAgICAgICAgcmVzdWx0ICs9IHJlc3BvbnNlLmpzb24oKQorICAgICAg
ICByZXR1cm4gcmVzdWx0CisKKyAgICBkZWYgdXNlcihzZWxmLCBuYW1lPU5vbmUsIHVzZXJuYW1l
PU5vbmUsIGVtYWlsPU5vbmUpOgorICAgICAgICB1c2VyID0gc3VwZXIoVHJhY2tlciwgc2VsZiku
dXNlcihuYW1lPW5hbWUsIHVzZXJuYW1lPXVzZXJuYW1lLCBlbWFpbD1lbWFpbCkKKyAgICAgICAg
aWYgdXNlcjoKKyAgICAgICAgICAgIHJldHVybiB1c2VyCisgICAgICAgIGlmIG5vdCB1c2VybmFt
ZToKKyAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiRmFpbGVkIHRvIGZpbmQgdXNlcm5h
bWUgZm9yICd7fSciLmZvcm1hdChuYW1lIG9yIGVtYWlsKSkKKworICAgICAgICByZXNwb25zZSA9
IHJlcXVlc3RzLmdldCgKKyAgICAgICAgICAgICd7YXBpX3VybH0vdXNlcnMve3VzZXJuYW1lfScu
Zm9ybWF0KAorICAgICAgICAgICAgICAgIGFwaV91cmw9c2VsZi5hcGlfdXJsLAorICAgICAgICAg
ICAgICAgIHVzZXJuYW1lPXVzZXJuYW1lLAorICAgICAgICAgICAgKSwgYXV0aD1IVFRQQmFzaWNB
dXRoKCpzZWxmLmNyZWRlbnRpYWxzKHJlcXVpcmVkPVRydWUpKSwKKyAgICAgICAgICAgIGhlYWRl
cnM9ZGljdChBY2NlcHQ9J2FwcGxpY2F0aW9uL3ZuZC5naXRodWIudjMranNvbicpLAorICAgICAg
ICApCisgICAgICAgIGlmIHJlc3BvbnNlLnN0YXR1c19jb2RlIC8vIDEwMCAhPSAyOgorICAgICAg
ICAgICAgcmV0dXJuIE5vbmUKKworICAgICAgICBkYXRhID0gcmVzcG9uc2UuanNvbigpCisgICAg
ICAgIHJldHVybiBzZWxmLnVzZXJzLmNyZWF0ZSgKKyAgICAgICAgICAgIG5hbWU9ZGF0YS5nZXQo
J25hbWUnLCB1c2VybmFtZSksCisgICAgICAgICAgICB1c2VybmFtZT11c2VybmFtZSwKKyAgICAg
ICAgICAgIGVtYWlscz1bZGF0YS5nZXQoJ2VtYWlsJyldLAorICAgICAgICApCisKKyAgICBkZWYg
aXNzdWUoc2VsZiwgaWQpOgorICAgICAgICByZXR1cm4gSXNzdWUoaWQ9aW50KGlkKSwgdHJhY2tl
cj1zZWxmKQorCisgICAgZGVmIHBvcHVsYXRlKHNlbGYsIGlzc3VlLCBtZW1iZXI9Tm9uZSk6Cisg
ICAgICAgIGlzc3VlLl9saW5rID0gJ3t9L2lzc3Vlcy97fScuZm9ybWF0KHNlbGYudXJsLCBpc3N1
ZS5pZCkKKworICAgICAgICBpZiBtZW1iZXIgaW4gKCd0aXRsZScsICd0aW1lc3RhbXAnLCAnY3Jl
YXRvcicsICdvcGVuZWQnLCAnYXNzaWduZWUnLCAnZGVzY3JpcHRpb24nKToKKyAgICAgICAgICAg
IHJlc3BvbnNlID0gc2VsZi5yZXF1ZXN0KHBhdGg9aXNzdWUuaWQpCisgICAgICAgICAgICBpZiBy
ZXNwb25zZToKKyAgICAgICAgICAgICAgICBpc3N1ZS5fdGl0bGUgPSByZXNwb25zZVsndGl0bGUn
XQorICAgICAgICAgICAgICAgIGlzc3VlLl90aW1lc3RhbXAgPSBpbnQoY2FsZW5kYXIudGltZWdt
KGRhdGV0aW1lLnN0cnB0aW1lKHJlc3BvbnNlWydjcmVhdGVkX2F0J10sICclWS0lbS0lZFQlSDol
TTolU1onKS50aW1ldHVwbGUoKSkpCisgICAgICAgICAgICAgICAgaXNzdWUuX2NyZWF0b3IgPSBz
ZWxmLnVzZXIodXNlcm5hbWU9cmVzcG9uc2VbJ3VzZXInXVsnbG9naW4nXSkgaWYgcmVzcG9uc2Uu
Z2V0KCd1c2VyJykgZWxzZSBOb25lCisgICAgICAgICAgICAgICAgaXNzdWUuX2Rlc2NyaXB0aW9u
ID0gcmVzcG9uc2VbJ2JvZHknXQorICAgICAgICAgICAgICAgIGlzc3VlLl9vcGVuZWQgPSByZXNw
b25zZVsnc3RhdGUnXSAhPSAnY2xvc2VkJworICAgICAgICAgICAgICAgIGlzc3VlLl9hc3NpZ25l
ZSA9IHNlbGYudXNlcih1c2VybmFtZT1yZXNwb25zZVsnYXNzaWduZWUnXVsnbG9naW4nXSkgaWYg
cmVzcG9uc2UuZ2V0KCdhc3NpZ25lZScpIGVsc2UgTm9uZQorICAgICAgICAgICAgZWxzZToKKyAg
ICAgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCJGYWlsZWQgdG8gZmV0Y2ggJ3t9J1xuIi5m
b3JtYXQoaXNzdWUubGluaykpCisKKyAgICAgICAgaWYgbWVtYmVyID09ICd3YXRjaGVycyc6Cisg
ICAgICAgICAgICBpc3N1ZS5fd2F0Y2hlcnMgPSBbXQorICAgICAgICAgICAgcmVmcyA9IHNldCgp
CisgICAgICAgICAgICByZXNwb25zZSA9IHNlbGYucmVxdWVzdChwYXRoPWlzc3VlLmlkKQorICAg
ICAgICAgICAgaWYgcmVzcG9uc2U6CisgICAgICAgICAgICAgICAgZm9yIGFzc2lnbmVlIGluIHJl
c3BvbnNlWydhc3NpZ25lZXMnXToKKyAgICAgICAgICAgICAgICAgICAgd2F0Y2hlciA9IHNlbGYu
dXNlcih1c2VybmFtZT1hc3NpZ25lZVsnbG9naW4nXSkKKyAgICAgICAgICAgICAgICAgICAgaWYg
bm90IHdhdGNoZXIgb3Igd2F0Y2hlci51c2VybmFtZSBpbiByZWZzOgorICAgICAgICAgICAgICAg
ICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICAgICAgcmVmcy5hZGQod2F0Y2hlci51
c2VybmFtZSkKKyAgICAgICAgICAgICAgICAgICAgaXNzdWUuX3dhdGNoZXJzLmFwcGVuZCh3YXRj
aGVyKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRl
KCJGYWlsZWQgdG8gZmV0Y2ggJ3t9J1xuIi5mb3JtYXQoaXNzdWUubGluaykpCisKKyAgICAgICAg
ICAgIGZvciB0ZXh0IGluIFtpc3N1ZS5kZXNjcmlwdGlvbl0gKyBbY29tbWVudC5jb250ZW50IGZv
ciBjb21tZW50IGluIGlzc3VlLmNvbW1lbnRzXToKKyAgICAgICAgICAgICAgICBmb3IgbWF0Y2gg
aW4gc2VsZi5VU0VSTkFNRV9SRS5maW5kYWxsKHRleHQpOgorICAgICAgICAgICAgICAgICAgICBp
ZiBtYXRjaFsxXSBpbiByZWZzOgorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAg
ICAgICAgICAgICAgICAgICAgdXNlciA9IHNlbGYudXNlcih1c2VybmFtZT1tYXRjaFsxXSkKKyAg
ICAgICAgICAgICAgICAgICAgaWYgbm90IHVzZXI6CisgICAgICAgICAgICAgICAgICAgICAgICBj
b250aW51ZQorICAgICAgICAgICAgICAgICAgICByZWZzLmFkZCh1c2VyLnVzZXJuYW1lKQorICAg
ICAgICAgICAgICAgICAgICBpc3N1ZS5fd2F0Y2hlcnMuYXBwZW5kKHVzZXIpCisKKyAgICAgICAg
aWYgbWVtYmVyID09ICdjb21tZW50cyc6CisgICAgICAgICAgICByZXNwb25zZSA9IHNlbGYucmVx
dWVzdChwYXRoPSd7fS9jb21tZW50cycuZm9ybWF0KGlzc3VlLmlkKSkKKyAgICAgICAgICAgIGlz
c3VlLl9jb21tZW50cyA9IFtdCisgICAgICAgICAgICBmb3Igbm9kZSBpbiByZXNwb25zZSBvciBb
XToKKyAgICAgICAgICAgICAgICB1c2VybmFtZSA9IG5vZGUuZ2V0KCd1c2VyJywge30pLmdldCgn
bG9naW4nKQorICAgICAgICAgICAgICAgIGlmIG5vdCB1c2VybmFtZToKKyAgICAgICAgICAgICAg
ICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICB0bSA9IG5vZGUuZ2V0KCd1cGRhdGVkX2F0
Jywgbm9kZS5nZXQoJ2NyZWF0ZWRfYXQnKSkKKyAgICAgICAgICAgICAgICBpZiB0bToKKyAgICAg
ICAgICAgICAgICAgICAgdG0gPSBpbnQoY2FsZW5kYXIudGltZWdtKGRhdGV0aW1lLnN0cnB0aW1l
KHRtLCAnJVktJW0tJWRUJUg6JU06JVNaJykudGltZXR1cGxlKCkpKQorCisgICAgICAgICAgICAg
ICAgaXNzdWUuX2NvbW1lbnRzLmFwcGVuZChJc3N1ZS5Db21tZW50KAorICAgICAgICAgICAgICAg
ICAgICB1c2VyPXNlbGYudXNlcih1c2VybmFtZT11c2VybmFtZSksCisgICAgICAgICAgICAgICAg
ICAgIHRpbWVzdGFtcD10bSwKKyAgICAgICAgICAgICAgICAgICAgY29udGVudD1ub2RlLmdldCgn
Ym9keScpLAorICAgICAgICAgICAgICAgICkpCisKKyAgICAgICAgaWYgbWVtYmVyID09ICdyZWZl
cmVuY2VzJzoKKyAgICAgICAgICAgIGlzc3VlLl9yZWZlcmVuY2VzID0gW10KKyAgICAgICAgICAg
IHJlZnMgPSBzZXQoKQorCisgICAgICAgICAgICBmb3IgdGV4dCBpbiBbaXNzdWUuZGVzY3JpcHRp
b25dICsgW2NvbW1lbnQuY29udGVudCBmb3IgY29tbWVudCBpbiBpc3N1ZS5jb21tZW50c106Cisg
ICAgICAgICAgICAgICAgZm9yIG1hdGNoIGluIHNlbGYuSVNTVUVfTElOS19SRS5maW5kYWxsKHRl
eHQpOgorICAgICAgICAgICAgICAgICAgICBjYW5kaWRhdGUgPSBzZWxmLmlzc3VlKGludChtYXRj
aCkpCisgICAgICAgICAgICAgICAgICAgIGlmIGNhbmRpZGF0ZS5saW5rIGluIHJlZnMgb3IgY2Fu
ZGlkYXRlLmlkID09IGlzc3VlLmlkOgorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUK
KyAgICAgICAgICAgICAgICAgICAgaXNzdWUuX3JlZmVyZW5jZXMuYXBwZW5kKGNhbmRpZGF0ZSkK
KyAgICAgICAgICAgICAgICAgICAgcmVmcy5hZGQoY2FuZGlkYXRlLmxpbmspCisKKyAgICAgICAg
ICAgICAgICBmb3IgbWF0Y2ggaW4gc2VsZi5SRUZFUkVOQ0VfUkUuZmluZGFsbCh0ZXh0KToKKyAg
ICAgICAgICAgICAgICAgICAgY2FuZGlkYXRlID0gR2VuZXJpY1RyYWNrZXIuZnJvbV9zdHJpbmco
bWF0Y2hbMF0pCisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBjYW5kaWRhdGUgb3IgY2FuZGlk
YXRlLmxpbmsgaW4gcmVmcyBvciBjYW5kaWRhdGUuaWQgPT0gaXNzdWUuaWQ6CisgICAgICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgICAgICBpc3N1ZS5fcmVmZXJl
bmNlcy5hcHBlbmQoY2FuZGlkYXRlKQorICAgICAgICAgICAgICAgICAgICByZWZzLmFkZChjYW5k
aWRhdGUubGluaykKKworICAgICAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnJlcXVlc3QocGF0aD0n
e30vdGltZWxpbmUnLmZvcm1hdChpc3N1ZS5pZCkpCisgICAgICAgICAgICBpZiByZXNwb25zZToK
KyAgICAgICAgICAgICAgICBmb3IgZXZlbnQgaW4gcmVzcG9uc2U6CisgICAgICAgICAgICAgICAg
ICAgIGlmIG5vdCBldmVudC5nZXQoJ2V2ZW50Jyk6CisgICAgICAgICAgICAgICAgICAgICAgICBj
b250aW51ZQorICAgICAgICAgICAgICAgICAgICBpZCA9IGV2ZW50LmdldCgnc291cmNlJywge30p
LmdldCgnaXNzdWUnLCB7fSkuZ2V0KCdudW1iZXInLCBOb25lKQorICAgICAgICAgICAgICAgICAg
ICBpZiBub3QgaWQ6CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAg
ICAgICAgICAgICBjYW5kaWRhdGUgPSBzZWxmLmlzc3VlKGlkKQorICAgICAgICAgICAgICAgICAg
ICBpZiBjYW5kaWRhdGUubGluayBpbiByZWZzIG9yIGNhbmRpZGF0ZS5pZCA9PSBpc3N1ZS5pZDoK
KyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgICAgIGlz
c3VlLl9yZWZlcmVuY2VzLmFwcGVuZChjYW5kaWRhdGUpCisgICAgICAgICAgICAgICAgICAgIHJl
ZnMuYWRkKGNhbmRpZGF0ZS5saW5rKQorCisgICAgICAgIHJldHVybiBpc3N1ZQpkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0YnVnc3B5L3dlYmtpdGJ1Z3NweS9pc3N1
ZS5weSBiL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGJ1Z3NweS93ZWJraXRidWdzcHkv
aXNzdWUucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYzMyNDhiZjE3NmVhNTFhNTY4ODcyYjAzOTEyMjMzOWNlNDk2
MGQ1ZAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGJ1
Z3NweS93ZWJraXRidWdzcHkvaXNzdWUucHkKQEAgLTAsMCArMSwxNjEgQEAKKyMgQ29weXJpZ2h0
IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
IkFTIElTIiBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisj
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCBzaXgKKworZnJvbSAudHJhY2tlciBp
bXBvcnQgVHJhY2tlcgorZnJvbSAudXNlciBpbXBvcnQgVXNlcgorZnJvbSBkYXRldGltZSBpbXBv
cnQgZGF0ZXRpbWUKKworCitjbGFzcyBJc3N1ZShvYmplY3QpOgorICAgIGNsYXNzIENvbW1lbnQo
b2JqZWN0KToKKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHVzZXIsIHRpbWVzdGFtcCwgY29u
dGVudCk6CisgICAgICAgICAgICBpZiB1c2VyIGFuZCBub3QgaXNpbnN0YW5jZSh1c2VyLCBVc2Vy
KToKKyAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIkV4cGVjdGVkICd1c2VyJyB0byBi
ZSBvZiB0eXBlIHt9LCBnb3QgJ3t9JyIuZm9ybWF0KFVzZXIsIHVzZXIpKQorICAgICAgICAgICAg
ZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLnVzZXIgPSB1c2VyCisKKyAgICAgICAgICAgIGlm
IGlzaW5zdGFuY2UodGltZXN0YW1wLCBzaXguc3RyaW5nX3R5cGVzKSBhbmQgdGltZXN0YW1wLmlz
ZGlnaXQoKToKKyAgICAgICAgICAgICAgICB0aW1lc3RhbXAgPSBpbnQodGltZXN0YW1wKQorICAg
ICAgICAgICAgaWYgdGltZXN0YW1wIGFuZCBub3QgaXNpbnN0YW5jZSh0aW1lc3RhbXAsIGludCk6
CisgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJFeHBlY3RlZCAndGltZXN0YW1wJyB0
byBiZSBvZiB0eXBlIGludCwgZ290ICd7fSciLmZvcm1hdCh0aW1lc3RhbXApKQorICAgICAgICAg
ICAgc2VsZi50aW1lc3RhbXAgPSB0aW1lc3RhbXAKKworICAgICAgICAgICAgaWYgY29udGVudCBh
bmQgbm90IGlzaW5zdGFuY2UoY29udGVudCwgc2l4LnN0cmluZ190eXBlcyk6CisgICAgICAgICAg
ICAgICAgcmFpc2UgVmFsdWVFcnJvcigiRXhwZWN0ZWQgJ2NvbnRlbnQnIHRvIGJlIGEgc3RyaW5n
LCBnb3QgJ3t9JyIuZm9ybWF0KGNvbnRlbnQpKQorICAgICAgICAgICAgc2VsZi5jb250ZW50ID0g
Y29udGVudAorCisgICAgICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgICAgIHJldHVy
biAnKHt9IEAge30pIHt9Jy5mb3JtYXQoCisgICAgICAgICAgICAgICAgc2VsZi51c2VyLAorICAg
ICAgICAgICAgICAgIGRhdGV0aW1lLnV0Y2Zyb210aW1lc3RhbXAoc2VsZi50aW1lc3RhbXApIGlm
IHNlbGYudGltZXN0YW1wIGVsc2UgJy0nLAorICAgICAgICAgICAgICAgIHNlbGYuY29udGVudCwK
KyAgICAgICAgICAgICkKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBpZCwgdHJhY2tlcik6Cisg
ICAgICAgIHNlbGYuaWQgPSBpbnQoaWQpCisgICAgICAgIHNlbGYudHJhY2tlciA9IHRyYWNrZXIK
KworICAgICAgICBzZWxmLl9saW5rID0gTm9uZQorICAgICAgICBzZWxmLl90aXRsZSA9IE5vbmUK
KyAgICAgICAgc2VsZi5fdGltZXN0YW1wID0gTm9uZQorICAgICAgICBzZWxmLl9jcmVhdG9yID0g
Tm9uZQorICAgICAgICBzZWxmLl9kZXNjcmlwdGlvbiA9IE5vbmUKKyAgICAgICAgc2VsZi5fb3Bl
bmVkID0gTm9uZQorICAgICAgICBzZWxmLl9hc3NpZ25lZSA9IE5vbmUKKyAgICAgICAgc2VsZi5f
d2F0Y2hlcnMgPSBOb25lCisgICAgICAgIHNlbGYuX2NvbW1lbnRzID0gTm9uZQorICAgICAgICBz
ZWxmLl9yZWZlcmVuY2VzID0gTm9uZQorCisgICAgICAgIHNlbGYudHJhY2tlci5wb3B1bGF0ZShz
ZWxmLCBOb25lKQorCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIHJldHVybiAne30g
e30nLmZvcm1hdChzZWxmLmxpbmssIHNlbGYudGl0bGUpCisKKyAgICBAcHJvcGVydHkKKyAgICBk
ZWYgbGluayhzZWxmKToKKyAgICAgICAgaWYgc2VsZi5fbGluayBpcyBOb25lOgorICAgICAgICAg
ICAgc2VsZi50cmFja2VyLnBvcHVsYXRlKHNlbGYsICdsaW5rJykKKyAgICAgICAgcmV0dXJuIHNl
bGYuX2xpbmsKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiB0aXRsZShzZWxmKToKKyAgICAgICAg
aWYgc2VsZi5fdGl0bGUgaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYudHJhY2tlci5wb3B1bGF0
ZShzZWxmLCAndGl0bGUnKQorICAgICAgICByZXR1cm4gc2VsZi5fdGl0bGUKKworICAgIEBwcm9w
ZXJ0eQorICAgIGRlZiB0aW1lc3RhbXAoc2VsZik6CisgICAgICAgIGlmIHNlbGYuX3RpbWVzdGFt
cCBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi50cmFja2VyLnBvcHVsYXRlKHNlbGYsICd0aW1l
c3RhbXAnKQorICAgICAgICByZXR1cm4gc2VsZi5fdGltZXN0YW1wCisKKyAgICBAcHJvcGVydHkK
KyAgICBkZWYgY3JlYXRvcihzZWxmKToKKyAgICAgICAgaWYgc2VsZi5fY3JlYXRvciBpcyBOb25l
OgorICAgICAgICAgICAgc2VsZi50cmFja2VyLnBvcHVsYXRlKHNlbGYsICdjcmVhdG9yJykKKyAg
ICAgICAgcmV0dXJuIHNlbGYuX2NyZWF0b3IKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBkZXNj
cmlwdGlvbihzZWxmKToKKyAgICAgICAgaWYgc2VsZi5fZGVzY3JpcHRpb24gaXMgTm9uZToKKyAg
ICAgICAgICAgIHNlbGYudHJhY2tlci5wb3B1bGF0ZShzZWxmLCAnZGVzY3JpcHRpb24nKQorICAg
ICAgICByZXR1cm4gc2VsZi5fZGVzY3JpcHRpb24KKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBv
cGVuZWQoc2VsZik6CisgICAgICAgIGlmIHNlbGYuX29wZW5lZCBpcyBOb25lOgorICAgICAgICAg
ICAgc2VsZi50cmFja2VyLnBvcHVsYXRlKHNlbGYsICdvcGVuZWQnKQorICAgICAgICByZXR1cm4g
c2VsZi5fb3BlbmVkCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgYXNzaWduZWUoc2VsZik6Cisg
ICAgICAgIGlmIHNlbGYuX2Fzc2lnbmVlIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLnRyYWNr
ZXIucG9wdWxhdGUoc2VsZiwgJ2Fzc2lnbmVlJykKKyAgICAgICAgcmV0dXJuIHNlbGYuX2Fzc2ln
bmVlCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgd2F0Y2hlcnMoc2VsZik6CisgICAgICAgIGlm
IHNlbGYuX3dhdGNoZXJzIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLnRyYWNrZXIucG9wdWxh
dGUoc2VsZiwgJ3dhdGNoZXJzJykKKyAgICAgICAgcmV0dXJuIHNlbGYuX3dhdGNoZXJzCisKKyAg
ICBAcHJvcGVydHkKKyAgICBkZWYgY29tbWVudHMoc2VsZik6CisgICAgICAgIGlmIHNlbGYuX2Nv
bW1lbnRzIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLnRyYWNrZXIucG9wdWxhdGUoc2VsZiwg
J2NvbW1lbnRzJykKKyAgICAgICAgcmV0dXJuIHNlbGYuX2NvbW1lbnRzIG9yIFtdCisKKyAgICBA
cHJvcGVydHkKKyAgICBkZWYgcmVmZXJlbmNlcyhzZWxmKToKKyAgICAgICAgaWYgc2VsZi5fcmVm
ZXJlbmNlcyBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi50cmFja2VyLnBvcHVsYXRlKHNlbGYs
ICdyZWZlcmVuY2VzJykKKyAgICAgICAgcmV0dXJuIHNlbGYuX3JlZmVyZW5jZXMgb3IgW10KKwor
ICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIGhhc2goc2VsZi5saW5rKQor
CisgICAgZGVmIF9fY21wX18oc2VsZiwgb3RoZXIpOgorICAgICAgICBpZiBub3QgaXNpbnN0YW5j
ZShvdGhlciwgSXNzdWUpOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignQ2Fubm90IGNv
bXBhcmUge30gd2l0aCB7fScuZm9ybWF0KElzc3VlLCB0eXBlKG90aGVyKSkpCisgICAgICAgIGlm
IHNlbGYubGluayA9PSBvdGhlci5saW5rOgorICAgICAgICAgICAgcmV0dXJuIDAKKyAgICAgICAg
cmV0dXJuIDEgaWYgc2VsZi5saW5rID4gb3RoZXIubGluayBlbHNlIC0xCisKKyAgICBkZWYgX19l
cV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX19jbXBfXyhvdGhlcikgPT0g
MAorCisgICAgZGVmIF9fbmVfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIHJldHVybiBzZWxmLl9f
Y21wX18ob3RoZXIpICE9IDAKKworICAgIGRlZiBfX2x0X18oc2VsZiwgb3RoZXIpOgorICAgICAg
ICByZXR1cm4gc2VsZi5fX2NtcF9fKG90aGVyKSA8IDAKKworICAgIGRlZiBfX2xlX18oc2VsZiwg
b3RoZXIpOgorICAgICAgICByZXR1cm4gc2VsZi5fX2NtcF9fKG90aGVyKSA8PSAwCisKKyAgICBk
ZWYgX19ndF9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX19jbXBfXyhvdGhl
cikgPiAwCisKKyAgICBkZWYgX19nZV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgcmV0dXJuIHNl
bGYuX19jbXBfXyhvdGhlcikgPj0gMApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9saWJyYXJp
ZXMvd2Via2l0YnVnc3B5L3dlYmtpdGJ1Z3NweS9tb2Nrcy9fX2luaXRfXy5weSBiL1Rvb2xzL1Nj
cmlwdHMvbGlicmFyaWVzL3dlYmtpdGJ1Z3NweS93ZWJraXRidWdzcHkvbW9ja3MvX19pbml0X18u
cHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYTRhZjJhOWJkODNjNzc5ZDBhZDhkNTA5ZWIwNWVjMzljNTdlOTQ4Nwot
LS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGJ1Z3NweS93
ZWJraXRidWdzcHkvbW9ja3MvX19pbml0X18ucHkKQEAgLTAsMCArMSwyNSBAQAorIyBDb3B5cmln
aHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisj
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IK
KyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworZnJvbSAuYnVnemlsbGEgaW1wb3J0IEJ1Z3pp
bGxhCitmcm9tIC5kYXRhIGltcG9ydCBJU1NVRVMsIFVTRVJTCitmcm9tIC5naXRodWIgaW1wb3J0
IEdpdEh1YgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0YnVnc3B5
L3dlYmtpdGJ1Z3NweS9tb2Nrcy9iYXNlLnB5IGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Vi
a2l0YnVnc3B5L3dlYmtpdGJ1Z3NweS9tb2Nrcy9iYXNlLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcxNGM2Y2Q0
MzE5OTM1YTZhYmY5OWFlYzFjZmFiNjgzZDQ3NDI4OTUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29s
cy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRidWdzcHkvd2Via2l0YnVnc3B5L21vY2tzL2Jhc2Uu
cHkKQEAgLTAsMCArMSw2NSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6
CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorIyBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KworZnJvbSB3ZWJraXRidWdzcHkgaW1wb3J0IFVzZXIKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9y
dCBtb2NrcworCisKK2NsYXNzIEJhc2UobW9ja3MuUmVxdWVzdHMpOgorICAgIEBjbGFzc21ldGhv
ZAorICAgIGRlZiB0cmFuc2Zvcm1fdXNlcihjbHMsIHVzZXIpOgorICAgICAgICByZXR1cm4gVXNl
cigKKyAgICAgICAgICAgIG5hbWU9dXNlci5uYW1lLAorICAgICAgICAgICAgdXNlcm5hbWU9dXNl
ci51c2VybmFtZSwKKyAgICAgICAgICAgIGVtYWlscz11c2VyLmVtYWlscywKKyAgICAgICAgKQor
CisgICAgZGVmIF9faW5pdF9fKHNlbGYsICpob3N0cywgKiprd2FyZ3MpOgorICAgICAgICBzdXBl
cihCYXNlLCBzZWxmKS5fX2luaXRfXygqaG9zdHMpCisKKyAgICAgICAgdXNlcnMgPSBrd2FyZ3Mu
Z2V0KCd1c2VycycsIE5vbmUpCisgICAgICAgIGlzc3VlcyA9IGt3YXJncy5nZXQoJ2lzc3Vlcycs
IE5vbmUpCisKKyAgICAgICAgc2VsZi51c2VycyA9IFVzZXIuTWFwcGluZygpCisgICAgICAgIGZv
ciB1c2VyIGluIHVzZXJzIG9yIFtdOgorICAgICAgICAgICAgc2VsZi51c2Vycy5hZGQodHlwZShz
ZWxmKS50cmFuc2Zvcm1fdXNlcih1c2VyKSkKKworICAgICAgICBzZWxmLmlzc3VlcyA9IHt9Cisg
ICAgICAgIGZvciBpc3N1ZSBpbiBpc3N1ZXMgb3IgW106CisgICAgICAgICAgICBzZWxmLmFkZChp
c3N1ZSkKKworICAgIGRlZiBhZGQoc2VsZiwgYnVnX2RhdGEpOgorICAgICAgICBpZiBub3QgaXNp
bnN0YW5jZShidWdfZGF0YSwgZGljdCk6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdF
eHBlY3RlZCBidWcgZGF0YSB0byBiZSBkaWN0aW9uYXJ5JykKKworICAgICAgICBpZCA9IGJ1Z19k
YXRhLmdldCgnaWQnKQorICAgICAgICBpZiBub3QgaWQ6CisgICAgICAgICAgICBpZCA9IDEKKyAg
ICAgICAgICAgIHdoaWxlIGlkIGluIHNlbGYuaXNzdWVzOgorICAgICAgICAgICAgICAgIGlkICs9
IDEKKyAgICAgICAgICAgIGJ1Z19kYXRhWydpZCddID0gaWQKKworICAgICAgICBmb3IgdXNlciBp
biBbYnVnX2RhdGEuZ2V0KCdjcmVhdG9yJyksIGJ1Z19kYXRhLmdldCgnYXNzaWduZWUnKV0gKyBi
dWdfZGF0YS5nZXQoJ3dhdGNoZXJzJywgW10pOgorICAgICAgICAgICAgaWYgdXNlcjoKKyAgICAg
ICAgICAgICAgICBzZWxmLnVzZXJzLmFkZCh0eXBlKHNlbGYpLnRyYW5zZm9ybV91c2VyKHVzZXIp
KQorCisgICAgICAgIHNlbGYuaXNzdWVzW2lkXSA9IHtrZXk6IHZhbHVlIGZvciBrZXksIHZhbHVl
IGluIGJ1Z19kYXRhLml0ZW1zKCl9CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL2xpYnJhcmll
cy93ZWJraXRidWdzcHkvd2Via2l0YnVnc3B5L21vY2tzL2J1Z3ppbGxhLnB5IGIvVG9vbHMvU2Ny
aXB0cy9saWJyYXJpZXMvd2Via2l0YnVnc3B5L3dlYmtpdGJ1Z3NweS9tb2Nrcy9idWd6aWxsYS5w
eQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yOTQ0MmI5ZGViMTM5OWQzODFlZjgxMmYyZmM1MTkxOTdlZWQ5ODM2Ci0t
LSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0YnVnc3B5L3dl
YmtpdGJ1Z3NweS9tb2Nrcy9idWd6aWxsYS5weQpAQCAtMCwwICsxLDE5MSBAQAorIyBDb3B5cmln
aHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisj
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IK
KyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IGpzb24KK2ltcG9ydCByZQorCitm
cm9tIC5iYXNlIGltcG9ydCBCYXNlCisKK2Zyb20gd2Via2l0YnVnc3B5IGltcG9ydCBVc2VyCitm
cm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgbW9ja3MKKworCitjbGFzcyBCdWd6aWxsYShCYXNlKToK
KyAgICB0b3AgPSBOb25lCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgdGltZV9zdHJpbmco
Y2xzLCB0aW1lc3RhbXApOgorICAgICAgICBmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRldGltZSwg
dGltZWRlbHRhCisgICAgICAgIHJldHVybiBkYXRldGltZS51dGNmcm9tdGltZXN0YW1wKHRpbWVz
dGFtcCAtIHRpbWVkZWx0YShob3Vycz03KS5zZWNvbmRzKS5zdHJmdGltZSgnJVktJW0tJWRUJUg6
JU06JVNaJykKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiB0cmFuc2Zvcm1fdXNlcihjbHMs
IHVzZXIpOgorICAgICAgICByZXR1cm4gVXNlcigKKyAgICAgICAgICAgIG5hbWU9dXNlci5uYW1l
LAorICAgICAgICAgICAgdXNlcm5hbWU9dXNlci5lbWFpbCwKKyAgICAgICAgICAgIGVtYWlscz11
c2VyLmVtYWlscywKKyAgICAgICAgKQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvc3RuYW1l
PSdidWdzLmV4YW1wbGUuY29tJywgdXNlcnM9Tm9uZSwgaXNzdWVzPU5vbmUpOgorICAgICAgICBz
dXBlcihCdWd6aWxsYSwgc2VsZikuX19pbml0X18oaG9zdG5hbWUsIHVzZXJzPXVzZXJzLCBpc3N1
ZXM9aXNzdWVzKQorCisgICAgZGVmIF91c2VyKHNlbGYsIHVybCwgdXNlcm5hbWUpOgorICAgICAg
ICB1c2VyID0gc2VsZi51c2Vyc1t1c2VybmFtZV0KKyAgICAgICAgaWYgbm90IHVzZXI6CisgICAg
ICAgICAgICByZXR1cm4gbW9ja3MuUmVzcG9uc2UoCisgICAgICAgICAgICAgICAgdXJsPXVybCwK
KyAgICAgICAgICAgICAgICBoZWFkZXJzPXsnQ29udGVudC1UeXBlJzogJ3RleHQvanNvbid9LAor
ICAgICAgICAgICAgICAgIHN0YXR1c19jb2RlPTQwNCwKKyAgICAgICAgICAgICAgICB0ZXh0PWpz
b24uZHVtcHMoZGljdCgKKyAgICAgICAgICAgICAgICAgICAgY29kZT01MSwKKyAgICAgICAgICAg
ICAgICAgICAgZXJyb3I9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT0iVGhlcmUg
aXMgbm8gdXNlciBuYW1lZCAne30nLiBFaXRoZXIgeW91IG1pcy10eXBlZCB0aGUgbmFtZSBvciB0
aGF0IHVzZXIgaGFzIG5vdCB5ZXQgcmVnaXN0ZXJlZCBmb3IgYSBCdWd6aWxsYSBhY2NvdW50LiIu
Zm9ybWF0KHVzZXJuYW1lKSwKKyAgICAgICAgICAgICAgICApKSwKKyAgICAgICAgICAgICkKKyAg
ICAgICAgcmV0dXJuIG1vY2tzLlJlc3BvbnNlLmZyb21Kc29uKGRpY3QoCisgICAgICAgICAgICB1
c2Vycz1bZGljdCgKKyAgICAgICAgICAgICAgICBuYW1lPXVzZXIudXNlcm5hbWUsCisgICAgICAg
ICAgICAgICAgcmVhbF9uYW1lPXVzZXIubmFtZSwKKyAgICAgICAgICAgICldLAorICAgICAgICAp
LCB1cmw9dXJsKQorCisgICAgZGVmIF9pc3N1ZShzZWxmLCB1cmwsIGlkKToKKyAgICAgICAgaWYg
aWQgbm90IGluIHNlbGYuaXNzdWVzOgorICAgICAgICAgICAgcmV0dXJuIG1vY2tzLlJlc3BvbnNl
KAorICAgICAgICAgICAgICAgIHVybD11cmwsCisgICAgICAgICAgICAgICAgaGVhZGVycz17J0Nv
bnRlbnQtVHlwZSc6ICd0ZXh0L2pzb24nfSwKKyAgICAgICAgICAgICAgICBzdGF0dXNfY29kZT00
MDQsCisgICAgICAgICAgICAgICAgdGV4dD1qc29uLmR1bXBzKGRpY3QoCisgICAgICAgICAgICAg
ICAgICAgIGNvZGU9MTAxLAorICAgICAgICAgICAgICAgICAgICBlcnJvcj1UcnVlLAorICAgICAg
ICAgICAgICAgICAgICBtZXNzYWdlPSJCdWcgI3t9IGRvZXMgbm90IGV4aXN0LiIuZm9ybWF0KGlk
KSwKKyAgICAgICAgICAgICAgICApKSwKKyAgICAgICAgICAgICkKKyAgICAgICAgaXNzdWUgPSBz
ZWxmLmlzc3Vlc1tpZF0KKyAgICAgICAgcmV0dXJuIG1vY2tzLlJlc3BvbnNlLmZyb21Kc29uKGRp
Y3QoCisgICAgICAgICAgICBidWdzPVtkaWN0KAorICAgICAgICAgICAgICAgIGlkPWlkLAorICAg
ICAgICAgICAgICAgIHN1bW1hcnk9aXNzdWVbJ3RpdGxlJ10sCisgICAgICAgICAgICAgICAgY3Jl
YXRpb25fdGltZT1zZWxmLnRpbWVfc3RyaW5nKGlzc3VlWyd0aW1lc3RhbXAnXSksCisgICAgICAg
ICAgICAgICAgc3RhdHVzPSdSRVNPTFZFRCcgaWYgaXNzdWVbJ29wZW5lZCddIGVsc2UgJ0ZJWEVE
JywKKyAgICAgICAgICAgICAgICBjcmVhdG9yPXNlbGYudXNlcnNbaXNzdWVbJ2NyZWF0b3InXS5u
YW1lXS51c2VybmFtZSwKKyAgICAgICAgICAgICAgICBjcmVhdG9yX2RldGFpbD1kaWN0KAorICAg
ICAgICAgICAgICAgICAgICBlbWFpbD1pc3N1ZVsnY3JlYXRvciddLmVtYWlsLAorICAgICAgICAg
ICAgICAgICAgICBuYW1lPXNlbGYudXNlcnNbaXNzdWVbJ2NyZWF0b3InXS5uYW1lXS51c2VybmFt
ZSwKKyAgICAgICAgICAgICAgICAgICAgcmVhbF9uYW1lPWlzc3VlWydjcmVhdG9yJ10ubmFtZSwK
KyAgICAgICAgICAgICAgICApLCBhc3NpZ25lZF90bz1zZWxmLnVzZXJzW2lzc3VlWydhc3NpZ25l
ZSddLm5hbWVdLnVzZXJuYW1lLAorICAgICAgICAgICAgICAgIGFzc2lnbmVkX3RvX2RldGFpbD1k
aWN0KAorICAgICAgICAgICAgICAgICAgICBlbWFpbD1pc3N1ZVsnYXNzaWduZWUnXS5lbWFpbCwK
KyAgICAgICAgICAgICAgICAgICAgbmFtZT1zZWxmLnVzZXJzW2lzc3VlWydhc3NpZ25lZSddLm5h
bWVdLnVzZXJuYW1lLAorICAgICAgICAgICAgICAgICAgICByZWFsX25hbWU9aXNzdWVbJ2Fzc2ln
bmVlJ10ubmFtZSwKKyAgICAgICAgICAgICAgICApLCBjYz1bc2VsZi51c2Vyc1t1c2VyLm5hbWVd
LnVzZXJuYW1lIGZvciB1c2VyIGluIGlzc3VlLmdldCgnd2F0Y2hlcnMnLCBbXSldLAorICAgICAg
ICAgICAgICAgIGNjX2RldGFpbD1bCisgICAgICAgICAgICAgICAgICAgIGRpY3QoCisgICAgICAg
ICAgICAgICAgICAgICAgICBlbWFpbD11c2VyLmVtYWlsLAorICAgICAgICAgICAgICAgICAgICAg
ICAgbmFtZT1zZWxmLnVzZXJzW3VzZXIubmFtZV0udXNlcm5hbWUsCisgICAgICAgICAgICAgICAg
ICAgICAgICByZWFsX25hbWU9dXNlci5uYW1lLAorICAgICAgICAgICAgICAgICAgICApIGZvciB1
c2VyIGluIGlzc3VlLmdldCgnd2F0Y2hlcnMnLCBbXSkKKyAgICAgICAgICAgICAgICBdLCBzZWVf
YWxzbz1bCisgICAgICAgICAgICAgICAgICAgICdodHRwczovL3t9L3Nob3dfYnVnLmNnaT9pZD17
fScuZm9ybWF0KHNlbGYuaG9zdHNbMF0sIG4pIGZvciBuIGluIGlzc3VlLmdldCgncmVmZXJlbmNl
cycsIFtdKQorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICApXSwKKyAgICAgICAgKSwg
dXJsPXVybCkKKworICAgIGRlZiBfc2VlX2Fsc28oc2VsZiwgdXJsLCBpZCk6CisgICAgICAgIGlm
IGlkIG5vdCBpbiBzZWxmLmlzc3VlczoKKyAgICAgICAgICAgIHJldHVybiBtb2Nrcy5SZXNwb25z
ZSgKKyAgICAgICAgICAgICAgICB1cmw9dXJsLAorICAgICAgICAgICAgICAgIGhlYWRlcnM9eydD
b250ZW50LVR5cGUnOiAndGV4dC9qc29uJ30sCisgICAgICAgICAgICAgICAgc3RhdHVzX2NvZGU9
NDA0LAorICAgICAgICAgICAgICAgIHRleHQ9anNvbi5kdW1wcyhkaWN0KAorICAgICAgICAgICAg
ICAgICAgICBjb2RlPTEwMSwKKyAgICAgICAgICAgICAgICAgICAgZXJyb3I9VHJ1ZSwKKyAgICAg
ICAgICAgICAgICAgICAgbWVzc2FnZT0iQnVnICN7fSBkb2VzIG5vdCBleGlzdC4iLmZvcm1hdChp
ZCksCisgICAgICAgICAgICAgICAgKSksCisgICAgICAgICAgICApCisgICAgICAgIGlzc3VlID0g
c2VsZi5pc3N1ZXNbaWRdCisgICAgICAgIHJldHVybiBtb2Nrcy5SZXNwb25zZS5mcm9tSnNvbihk
aWN0KAorICAgICAgICAgICAgYnVncz1bZGljdCgKKyAgICAgICAgICAgICAgICBpZD1pZCwKKyAg
ICAgICAgICAgICAgICBzZWVfYWxzbz1bCisgICAgICAgICAgICAgICAgICAgICdodHRwczovL3t9
L3Nob3dfYnVnLmNnaT9pZD17fScuZm9ybWF0KHNlbGYuaG9zdHNbMF0sIG4pIGZvciBuIGluIGlz
c3VlLmdldCgncmVmZXJlbmNlcycsIFtdKQorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAg
ICApXSwKKyAgICAgICAgKSwgdXJsPXVybCkKKworICAgIGRlZiBfY29tbWVudHMoc2VsZiwgdXJs
LCBpZCk6CisgICAgICAgIGlmIGlkIG5vdCBpbiBzZWxmLmlzc3VlczoKKyAgICAgICAgICAgIHJl
dHVybiBtb2Nrcy5SZXNwb25zZSgKKyAgICAgICAgICAgICAgICB1cmw9dXJsLAorICAgICAgICAg
ICAgICAgIGhlYWRlcnM9eydDb250ZW50LVR5cGUnOiAndGV4dC9qc29uJ30sCisgICAgICAgICAg
ICAgICAgc3RhdHVzX2NvZGU9NDA0LAorICAgICAgICAgICAgICAgIHRleHQ9anNvbi5kdW1wcyhk
aWN0KAorICAgICAgICAgICAgICAgICAgICBjb2RlPTEwMSwKKyAgICAgICAgICAgICAgICAgICAg
ZXJyb3I9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT0iQnVnICN7fSBkb2VzIG5v
dCBleGlzdC4iLmZvcm1hdChpZCksCisgICAgICAgICAgICAgICAgKSksCisgICAgICAgICAgICAp
CisKKyAgICAgICAgaXNzdWUgPSBzZWxmLmlzc3Vlc1tpZF0KKyAgICAgICAgcmV0dXJuIG1vY2tz
LlJlc3BvbnNlLmZyb21Kc29uKGRpY3QoCisgICAgICAgICAgICBidWdzPXtzdHIoaWQpOiBkaWN0
KGNvbW1lbnRzPVsKKyAgICAgICAgICAgICAgICBkaWN0KAorICAgICAgICAgICAgICAgICAgICBi
dWdfaWQ9aWQsCisgICAgICAgICAgICAgICAgICAgIGNyZWF0b3I9c2VsZi51c2Vyc1tpc3N1ZVsn
Y3JlYXRvciddLm5hbWVdLnVzZXJuYW1lLAorICAgICAgICAgICAgICAgICAgICBjcmVhdGlvbl90
aW1lPXNlbGYudGltZV9zdHJpbmcoaXNzdWVbJ3RpbWVzdGFtcCddKSwKKyAgICAgICAgICAgICAg
ICAgICAgdGltZT1zZWxmLnRpbWVfc3RyaW5nKGlzc3VlWyd0aW1lc3RhbXAnXSksCisgICAgICAg
ICAgICAgICAgICAgIHRleHQ9aXNzdWVbJ2Rlc2NyaXB0aW9uJ10sCisgICAgICAgICAgICAgICAg
KSwKKyAgICAgICAgICAgIF0gKyBbCisgICAgICAgICAgICAgICAgZGljdCgKKyAgICAgICAgICAg
ICAgICAgICAgYnVnX2lkPWlkLAorICAgICAgICAgICAgICAgICAgICBjcmVhdG9yPXNlbGYudXNl
cnNbY29tbWVudC51c2VyLm5hbWVdLnVzZXJuYW1lLAorICAgICAgICAgICAgICAgICAgICBjcmVh
dGlvbl90aW1lPXNlbGYudGltZV9zdHJpbmcoY29tbWVudC50aW1lc3RhbXApLAorICAgICAgICAg
ICAgICAgICAgICB0aW1lPXNlbGYudGltZV9zdHJpbmcoY29tbWVudC50aW1lc3RhbXApLAorICAg
ICAgICAgICAgICAgICAgICB0ZXh0PWNvbW1lbnQuY29udGVudCwKKyAgICAgICAgICAgICAgICAp
IGZvciBjb21tZW50IGluIGlzc3VlWydjb21tZW50cyddCisgICAgICAgICAgICBdKX0sCisgICAg
ICAgICksIHVybD11cmwpCisKKyAgICBkZWYgcmVxdWVzdChzZWxmLCBtZXRob2QsIHVybCwgZGF0
YT1Ob25lLCBwYXJhbXM9Tm9uZSwgYXV0aD1Ob25lLCBqc29uPU5vbmUsICoqa3dhcmdzKToKKyAg
ICAgICAgaWYgbm90IHVybC5zdGFydHN3aXRoKCdodHRwOi8vJykgYW5kIG5vdCB1cmwuc3RhcnRz
d2l0aCgnaHR0cHM6Ly8nKToKKyAgICAgICAgICAgIHJldHVybiBtb2Nrcy5SZXNwb25zZS5jcmVh
dGU0MDQodXJsKQorCisgICAgICAgIHN0cmlwcGVkX3VybCA9IHVybC5zcGxpdCgnOi8vJylbLTFd
CisKKyAgICAgICAgbWF0Y2ggPSByZS5tYXRjaChyJ3t9L3Jlc3QvdXNlclw/bmFtZXM9KD9QPHVz
ZXJuYW1lPlxTKykkJy5mb3JtYXQoc2VsZi5ob3N0c1swXSksIHN0cmlwcGVkX3VybCkKKyAgICAg
ICAgaWYgbWF0Y2ggYW5kIG1ldGhvZCA9PSAnR0VUJzoKKyAgICAgICAgICAgIHJldHVybiBzZWxm
Ll91c2VyKHVybCwgbWF0Y2guZ3JvdXAoJ3VzZXJuYW1lJykpCisKKyAgICAgICAgbWF0Y2ggPSBy
ZS5tYXRjaChyJ3t9L3Jlc3QvYnVnLyg/UDxpZD5cZCspJCcuZm9ybWF0KHNlbGYuaG9zdHNbMF0p
LCBzdHJpcHBlZF91cmwpCisgICAgICAgIGlmIG1hdGNoIGFuZCBtZXRob2QgPT0gJ0dFVCc6Cisg
ICAgICAgICAgICByZXR1cm4gc2VsZi5faXNzdWUodXJsLCBpbnQobWF0Y2guZ3JvdXAoJ2lkJykp
KQorCisgICAgICAgIG1hdGNoID0gcmUubWF0Y2gocid7fS9yZXN0L2J1Zy8oP1A8aWQ+XGQrKVw/
aW5jbHVkZV9maWVsZHM9c2VlX2Fsc28kJy5mb3JtYXQoc2VsZi5ob3N0c1swXSksIHN0cmlwcGVk
X3VybCkKKyAgICAgICAgaWYgbWF0Y2ggYW5kIG1ldGhvZCA9PSAnR0VUJzoKKyAgICAgICAgICAg
IHJldHVybiBzZWxmLl9zZWVfYWxzbyh1cmwsIGludChtYXRjaC5ncm91cCgnaWQnKSkpCisKKyAg
ICAgICAgbWF0Y2ggPSByZS5tYXRjaChyJ3t9L3Jlc3QvYnVnLyg/UDxpZD5cZCspL2NvbW1lbnQk
Jy5mb3JtYXQoc2VsZi5ob3N0c1swXSksIHN0cmlwcGVkX3VybCkKKyAgICAgICAgaWYgbWF0Y2gg
YW5kIG1ldGhvZCA9PSAnR0VUJzoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9jb21tZW50cyh1
cmwsIGludChtYXRjaC5ncm91cCgnaWQnKSkpCisKKyAgICAgICAgcmV0dXJuIG1vY2tzLlJlc3Bv
bnNlLmNyZWF0ZTQwNCh1cmwpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93
ZWJraXRidWdzcHkvd2Via2l0YnVnc3B5L21vY2tzL2RhdGEucHkgYi9Ub29scy9TY3JpcHRzL2xp
YnJhcmllcy93ZWJraXRidWdzcHkvd2Via2l0YnVnc3B5L21vY2tzL2RhdGEucHkKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNzkzNGE1YjUwN2Y4ZTZkOWFjYWRkNjQ5YmI2YzExNWI5ZTFmODNkYQotLS0gL2Rldi9udWxs
CisrKyBiL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGJ1Z3NweS93ZWJraXRidWdzcHkv
bW9ja3MvZGF0YS5weQpAQCAtMCwwICsxLDg5IEBACisjIENvcHlyaWdodCAoQykgMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisj
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorCitmcm9tIHdlYmtpdGJ1Z3NweSBpbXBvcnQgSXNzdWUsIFVzZXIKKworCitV
U0VSUyA9IFVzZXIuTWFwcGluZygpCitVU0VSUy5jcmVhdGUoCisgICAgbmFtZT0nVGltIENvbnRy
aWJ1dG9yJywKKyAgICBlbWFpbHM9Wyd0Y29udHJpYnV0b3JAZXhhbXBsZS5jb20nXSwKKykKK1VT
RVJTLmNyZWF0ZSgKKyAgICBuYW1lPSdGZWxpeCBGaWxlcicsCisgICAgZW1haWxzPVsnZmZpbGVy
QGV4YW1wbGUuY29tJ10sCispCitVU0VSUy5jcmVhdGUoCisgICAgbmFtZT0nV2lsbWEgV2F0Y2hl
cicsCisgICAgZW1haWxzPVsnd3dhdGNoZXJAZXhhbXBsZS5jb20nXSwKKykKKworSVNTVUVTID0g
WworICAgIGRpY3QoCisgICAgICAgIHRpdGxlPSdFeGFtcGxlIGlzc3VlIDEnLAorICAgICAgICB0
aW1lc3RhbXA9MTYzOTUzNjE2MCwKKyAgICAgICAgb3BlbmVkPVRydWUsCisgICAgICAgIGNyZWF0
b3I9VVNFUlNbJ0ZlbGl4IEZpbGVyJ10sCisgICAgICAgIGFzc2lnbmVlPVVTRVJTWydUaW0gQ29u
dHJpYnV0b3InXSwKKyAgICAgICAgZGVzY3JpcHRpb249J0FuIGV4YW1wbGUgaXNzdWUgZm9yIHRl
c3RpbmcnLAorICAgICAgICBjb21tZW50cz1bCisgICAgICAgICAgICBJc3N1ZS5Db21tZW50KAor
ICAgICAgICAgICAgICAgIHVzZXI9VVNFUlNbJ0ZlbGl4IEZpbGVyJ10sCisgICAgICAgICAgICAg
ICAgdGltZXN0YW1wPTE2Mzk1MzYyMjAsCisgICAgICAgICAgICAgICAgY29udGVudD0nV2FzIGFi
bGUgdG8gcmVwcm9kdWNlIG9uIHZlcnNpb24gMS4yLjMnLAorICAgICAgICAgICAgKSwgSXNzdWUu
Q29tbWVudCgKKyAgICAgICAgICAgICAgICB1c2VyPVVTRVJTWydUaW0gQ29udHJpYnV0b3InXSwK
KyAgICAgICAgICAgICAgICB0aW1lc3RhbXA9MTYzOTU1MDIyMCwKKyAgICAgICAgICAgICAgICBj
b250ZW50PSdUcnlpbmcgdG8gcHJlcGFyZSBhIGZpeCBmb3IgMS4yLjQnLAorICAgICAgICAgICAg
KSwKKyAgICAgICAgXSwgd2F0Y2hlcnM9W1VTRVJTWydGZWxpeCBGaWxlciddLCBVU0VSU1snVGlt
IENvbnRyaWJ1dG9yJ10sIFVTRVJTWydXaWxtYSBXYXRjaGVyJ11dLAorICAgICksIGRpY3QoCisg
ICAgICAgIHRpdGxlPSdFeGFtcGxlIGZlYXR1cmUgMScsCisgICAgICAgIHRpbWVzdGFtcD0xNjM5
NTM2MzIwLAorICAgICAgICBvcGVuZWQ9VHJ1ZSwKKyAgICAgICAgY3JlYXRvcj1VU0VSU1snVGlt
IENvbnRyaWJ1dG9yJ10sCisgICAgICAgIGFzc2lnbmVlPVVTRVJTWydUaW0gQ29udHJpYnV0b3In
XSwKKyAgICAgICAgZGVzY3JpcHRpb249J1dlIG5lZWQgdG8gc3VwcG9ydCBhIG5ldyBmZWF0dXJl
JywKKyAgICAgICAgY29tbWVudHM9WworICAgICAgICAgICAgSXNzdWUuQ29tbWVudCgKKyAgICAg
ICAgICAgICAgICB1c2VyPVVTRVJTWydUaW0gQ29udHJpYnV0b3InXSwKKyAgICAgICAgICAgICAg
ICB0aW1lc3RhbXA9MTYzOTUzOTExMCwKKyAgICAgICAgICAgICAgICBjb250ZW50PSJWZXJzaW9u
IDEuMy4wIHNob3VsZCBiZWhhdmUgZGlmZmVyZW50bHksIGxldCdzIGFkZCBhIGZlYXR1cmUhIiwK
KyAgICAgICAgICAgICksCisgICAgICAgIF0sIHdhdGNoZXJzPVtVU0VSU1snVGltIENvbnRyaWJ1
dG9yJ10sIFVTRVJTWydXaWxtYSBXYXRjaGVyJ11dLAorICAgICAgICByZWZlcmVuY2VzPVszXSwK
KyAgICApLCBkaWN0KAorICAgICAgICB0aXRsZT0nRXhhbXBsZSBpc3N1ZSAyJywKKyAgICAgICAg
dGltZXN0YW1wPTE2Mzk1NDAwMTAsCisgICAgICAgIG9wZW5lZD1GYWxzZSwKKyAgICAgICAgY3Jl
YXRvcj1VU0VSU1snRmVsaXggRmlsZXInXSwKKyAgICAgICAgYXNzaWduZWU9VVNFUlNbJ1RpbSBD
b250cmlidXRvciddLAorICAgICAgICBkZXNjcmlwdGlvbj0nQW5vdGhlciBleGFtcGxlIGlzc3Vl
IGZvciB0ZXN0aW5nLCBleGFtcGxlLmNvbSBpcyBicm9rZW4nLAorICAgICAgICBjb21tZW50cz1b
CisgICAgICAgICAgICBJc3N1ZS5Db21tZW50KAorICAgICAgICAgICAgICAgIHVzZXI9VVNFUlNb
J1RpbSBDb250cmlidXRvciddLAorICAgICAgICAgICAgICAgIHRpbWVzdGFtcD0xNjM5NTQ0MDY1
LAorICAgICAgICAgICAgICAgIGNvbnRlbnQ9IlRoaXMgaXMgcmVhbGx5IGEgZmVhdHVyZSByZXF1
ZXN0LCBJIGFscmVhZHkgZmlsZWQgYSBidWcgZm9yIHRoaXMuIiwKKyAgICAgICAgICAgICksCisg
ICAgICAgIF0sIHdhdGNoZXJzPVtVU0VSU1snRmVsaXggRmlsZXInXSwgVVNFUlNbJ1RpbSBDb250
cmlidXRvciddLCBVU0VSU1snV2lsbWEgV2F0Y2hlciddXSwgcmVmZXJlbmNlcz1bMl0sCisgICAg
KSwKK10KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGJ1Z3NweS93
ZWJraXRidWdzcHkvbW9ja3MvZ2l0aHViLnB5IGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Vi
a2l0YnVnc3B5L3dlYmtpdGJ1Z3NweS9tb2Nrcy9naXRodWIucHkKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODZkYTI1
NGNkN2Q0ZTVlZWY4NDZhMGI3NjI3NTZiNjk0MjFhMDYyYwotLS0gL2Rldi9udWxsCisrKyBiL1Rv
b2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGJ1Z3NweS93ZWJraXRidWdzcHkvbW9ja3MvZ2l0
aHViLnB5CkBAIC0wLDAgKzEsMTcwIEBACisjIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJl
IG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisjIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMg
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgor
IyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorCitpbXBvcnQganNvbgoraW1wb3J0IG9zCitpbXBvcnQgcmUKKworZnJvbSAuYmFzZSBp
bXBvcnQgQmFzZQorCitmcm9tIHdlYmtpdGJ1Z3NweSBpbXBvcnQgVXNlcgorZnJvbSB3ZWJraXRj
b3JlcHkgaW1wb3J0IG1vY2tzCisKKworY2xhc3MgR2l0SHViKEJhc2UpOgorICAgIHRvcCA9IE5v
bmUKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiB0cmFuc2Zvcm1fdXNlcihjbHMsIHVzZXIp
OgorICAgICAgICByZXR1cm4gVXNlcigKKyAgICAgICAgICAgIG5hbWU9dXNlci5uYW1lLAorICAg
ICAgICAgICAgdXNlcm5hbWU9dXNlci5lbWFpbC5zcGxpdCgnQCcpWzBdLAorICAgICAgICAgICAg
ZW1haWxzPXVzZXIuZW1haWxzLAorICAgICAgICApCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBk
ZWYgdGltZV9zdHJpbmcoY2xzLCB0aW1lc3RhbXApOgorICAgICAgICBmcm9tIGRhdGV0aW1lIGlt
cG9ydCBkYXRldGltZSwgdGltZWRlbHRhCisgICAgICAgIHJldHVybiBkYXRldGltZS51dGNmcm9t
dGltZXN0YW1wKHRpbWVzdGFtcCAtIHRpbWVkZWx0YShob3Vycz03KS5zZWNvbmRzKS5zdHJmdGlt
ZSgnJVktJW0tJWRUJUg6JU06JVNaJykKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0bmFt
ZT0nZ2l0aHViLmV4YW1wbGUuY29tL1dlYktpdC9XZWJLaXQnLCB1c2Vycz1Ob25lLCBpc3N1ZXM9
Tm9uZSk6CisgICAgICAgIGhvc3RuYW1lLCByZXBvID0gaG9zdG5hbWUuc3BsaXQoJy8nLCAxKQor
ICAgICAgICBzZWxmLmFwaV9ob3N0ID0gJ2FwaS57aG9zdG5hbWV9L3JlcG9zL3tyZXBvfScuZm9y
bWF0KGhvc3RuYW1lPWhvc3RuYW1lLCByZXBvPXJlcG8pCisKKyAgICAgICAgc3VwZXIoR2l0SHVi
LCBzZWxmKS5fX2luaXRfXyhob3N0bmFtZSwgJ2FwaS57fScuZm9ybWF0KGhvc3RuYW1lKSwgdXNl
cnM9dXNlcnMsIGlzc3Vlcz1pc3N1ZXMpCisKKyAgICAgICAgc2VsZi5fZW52aXJvbm1lbnQgPSBO
b25lCisKKyAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgorICAgICAgICBwcmVmaXggPSBzZWxmLmhv
c3RzWzBdLnJlcGxhY2UoJy4nLCAnXycpLnVwcGVyKCkKKyAgICAgICAgdXNlcm5hbWVfa2V5ID0g
J3t9X1VTRVJOQU1FJy5mb3JtYXQocHJlZml4KQorICAgICAgICB0b2tlbl9rZXkgPSAne31fVE9L
RU4nLmZvcm1hdChwcmVmaXgpCisgICAgICAgIHNlbGYuX2Vudmlyb25tZW50ID0geworICAgICAg
ICAgICAgdXNlcm5hbWVfa2V5OiBvcy5lbnZpcm9uLmdldCh1c2VybmFtZV9rZXkpLAorICAgICAg
ICAgICAgdG9rZW5fa2V5OiBvcy5lbnZpcm9uLmdldCh0b2tlbl9rZXkpLAorICAgICAgICB9Cisg
ICAgICAgIG9zLmVudmlyb25bdXNlcm5hbWVfa2V5XSA9ICd1c2VybmFtZScKKyAgICAgICAgb3Mu
ZW52aXJvblt0b2tlbl9rZXldID0gJ3Rva2VuJworCisgICAgICAgIHJldHVybiBzdXBlcihHaXRI
dWIsIHNlbGYpLl9fZW50ZXJfXygpCisKKyAgICBkZWYgX19leGl0X18oc2VsZiwgKmFyZ3MsICoq
a3dhcmdzKToKKyAgICAgICAgcmVzdWx0ID0gc3VwZXIoR2l0SHViLCBzZWxmKS5fX2V4aXRfXygq
YXJncywgKiprd2FyZ3MpCisgICAgICAgIGZvciBrZXkgaW4gc2VsZi5fZW52aXJvbm1lbnQua2V5
cygpOgorICAgICAgICAgICAgaWYgc2VsZi5fZW52aXJvbm1lbnRba2V5XToKKyAgICAgICAgICAg
ICAgICBvcy5lbnZpcm9uW2tleV0gPSBzZWxmLl9lbnZpcm9ubWVudFtrZXldCisgICAgICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgICAgIGRlbCBvcy5lbnZpcm9uW2tleV0KKyAgICAgICAgcmV0
dXJuIHJlc3VsdAorCisgICAgZGVmIF91c2VyKHNlbGYsIHVybCwgdXNlcm5hbWUpOgorICAgICAg
ICB1c2VyID0gc2VsZi51c2Vycy5nZXQodXNlcm5hbWUpCisgICAgICAgIGlmIG5vdCB1c2VyOgor
ICAgICAgICAgICAgcmV0dXJuIG1vY2tzLlJlc3BvbnNlLmNyZWF0ZTQwNCh1cmwpCisgICAgICAg
IHJldHVybiBtb2Nrcy5SZXNwb25zZS5mcm9tSnNvbihkaWN0KAorICAgICAgICAgICAgbmFtZT11
c2VyLm5hbWUsCisgICAgICAgICAgICBsb2dpbj11c2VyLnVzZXJuYW1lLAorICAgICAgICAgICAg
ZW1haWw9dXNlci5lbWFpbCwKKyAgICAgICAgKSwgdXJsPXVybCkKKworICAgIGRlZiBfaXNzdWUo
c2VsZiwgdXJsLCBpZCk6CisgICAgICAgIGlmIGlkIG5vdCBpbiBzZWxmLmlzc3VlczoKKyAgICAg
ICAgICAgIHJldHVybiBtb2Nrcy5SZXNwb25zZSgKKyAgICAgICAgICAgICAgICB1cmw9dXJsLAor
ICAgICAgICAgICAgICAgIGhlYWRlcnM9eydDb250ZW50LVR5cGUnOiAndGV4dC9qc29uJ30sCisg
ICAgICAgICAgICAgICAgc3RhdHVzX2NvZGU9NDA0LAorICAgICAgICAgICAgICAgIHRleHQ9anNv
bi5kdW1wcyhkaWN0KG1lc3NhZ2U9Ik5vdCBGb3VuZCIpKSwKKyAgICAgICAgICAgICkKKyAgICAg
ICAgaXNzdWUgPSBzZWxmLmlzc3Vlc1tpZF0KKyAgICAgICAgcmV0dXJuIG1vY2tzLlJlc3BvbnNl
LmZyb21Kc29uKGRpY3QoCisgICAgICAgICAgICB0aXRsZT1pc3N1ZVsndGl0bGUnXSwKKyAgICAg
ICAgICAgIGJvZHk9aXNzdWVbJ2Rlc2NyaXB0aW9uJ10sCisgICAgICAgICAgICB1c2VyPWRpY3Qo
bG9naW49c2VsZi51c2Vyc1tpc3N1ZVsnY3JlYXRvciddLm5hbWVdLnVzZXJuYW1lKSwKKyAgICAg
ICAgICAgIGNyZWF0ZWRfYXQ9c2VsZi50aW1lX3N0cmluZyhpc3N1ZVsndGltZXN0YW1wJ10pLAor
ICAgICAgICAgICAgc3RhdGU9J29wZW5lZCcgaWYgaXNzdWVbJ29wZW5lZCddIGVsc2UgJ2Nsb3Nl
ZCcsCisgICAgICAgICAgICBhc3NpZ25lZT1kaWN0KGxvZ2luPXNlbGYudXNlcnNbaXNzdWVbJ2Fz
c2lnbmVlJ10ubmFtZV0udXNlcm5hbWUpLAorICAgICAgICAgICAgYXNzaWduZWVzPVtkaWN0KGxv
Z2luPXNlbGYudXNlcnNbdXNlci5uYW1lXS51c2VybmFtZSkgZm9yIHVzZXIgaW4gaXNzdWVbJ3dh
dGNoZXJzJ11dLAorICAgICAgICApKQorCisgICAgZGVmIF9jb21tZW50cyhzZWxmLCB1cmwsIGlk
KToKKyAgICAgICAgaWYgaWQgbm90IGluIHNlbGYuaXNzdWVzOgorICAgICAgICAgICAgcmV0dXJu
IG1vY2tzLlJlc3BvbnNlKAorICAgICAgICAgICAgICAgIHVybD11cmwsCisgICAgICAgICAgICAg
ICAgaGVhZGVycz17J0NvbnRlbnQtVHlwZSc6ICd0ZXh0L2pzb24nfSwKKyAgICAgICAgICAgICAg
ICBzdGF0dXNfY29kZT00MDQsCisgICAgICAgICAgICAgICAgdGV4dD1qc29uLmR1bXBzKGRpY3Qo
bWVzc2FnZT0iTm90IEZvdW5kIikpLAorICAgICAgICAgICAgKQorICAgICAgICBpc3N1ZSA9IHNl
bGYuaXNzdWVzW2lkXQorICAgICAgICByZXR1cm4gbW9ja3MuUmVzcG9uc2UuZnJvbUpzb24oWwor
ICAgICAgICAgICAgZGljdCgKKyAgICAgICAgICAgICAgICBib2R5PWNvbW1lbnQuY29udGVudCwK
KyAgICAgICAgICAgICAgICBjcmVhdGVkX2F0PXNlbGYudGltZV9zdHJpbmcoY29tbWVudC50aW1l
c3RhbXApLAorICAgICAgICAgICAgICAgIHVzZXI9ZGljdChsb2dpbj1zZWxmLnVzZXJzW2NvbW1l
bnQudXNlci5uYW1lXS51c2VybmFtZSksCisKKyAgICAgICAgICAgICkgZm9yIGNvbW1lbnQgaW4g
aXNzdWVbJ2NvbW1lbnRzJ10KKyAgICAgICAgXSkKKworICAgIGRlZiBfdGltZWxpbmVzKHNlbGYs
IHVybCwgaWQpOgorICAgICAgICBpZiBpZCBub3QgaW4gc2VsZi5pc3N1ZXM6CisgICAgICAgICAg
ICByZXR1cm4gbW9ja3MuUmVzcG9uc2UoCisgICAgICAgICAgICAgICAgdXJsPXVybCwKKyAgICAg
ICAgICAgICAgICBoZWFkZXJzPXsnQ29udGVudC1UeXBlJzogJ3RleHQvanNvbid9LAorICAgICAg
ICAgICAgICAgIHN0YXR1c19jb2RlPTQwNCwKKyAgICAgICAgICAgICAgICB0ZXh0PWpzb24uZHVt
cHMoZGljdChtZXNzYWdlPSJOb3QgRm91bmQiKSksCisgICAgICAgICAgICApCisgICAgICAgIGlz
c3VlID0gc2VsZi5pc3N1ZXNbaWRdCisgICAgICAgIHJldHVybiBtb2Nrcy5SZXNwb25zZS5mcm9t
SnNvbihbCisgICAgICAgICAgICBkaWN0KAorICAgICAgICAgICAgICAgIGJvZHk9Y29tbWVudC5j
b250ZW50LAorICAgICAgICAgICAgICAgIGNyZWF0ZWRfYXQ9c2VsZi50aW1lX3N0cmluZyhjb21t
ZW50LnRpbWVzdGFtcCksCisgICAgICAgICAgICAgICAgYWN0b3I9ZGljdChsb2dpbj1zZWxmLnVz
ZXJzW2NvbW1lbnQudXNlci5uYW1lXS51c2VybmFtZSksCisgICAgICAgICAgICApIGZvciBjb21t
ZW50IGluIGlzc3VlWydjb21tZW50cyddCisgICAgICAgIF0gKyBbCisgICAgICAgICAgICBkaWN0
KAorICAgICAgICAgICAgICAgIGV2ZW50PSdjcm9zcy1yZWZlcmVuY2VkJywKKyAgICAgICAgICAg
ICAgICBzb3VyY2U9ZGljdChpc3N1ZT1kaWN0KG51bWJlcj1yZWZlcmVuY2UpKSwKKyAgICAgICAg
ICAgICkgZm9yIHJlZmVyZW5jZSBpbiBpc3N1ZS5nZXQoJ3JlZmVyZW5jZXMnLCBbXSkKKyAgICAg
ICAgXSkKKworICAgIGRlZiByZXF1ZXN0KHNlbGYsIG1ldGhvZCwgdXJsLCBkYXRhPU5vbmUsIHBh
cmFtcz1Ob25lLCBhdXRoPU5vbmUsIGpzb249Tm9uZSwgKiprd2FyZ3MpOgorICAgICAgICBpZiBu
b3QgdXJsLnN0YXJ0c3dpdGgoJ2h0dHA6Ly8nKSBhbmQgbm90IHVybC5zdGFydHN3aXRoKCdodHRw
czovLycpOgorICAgICAgICAgICAgcmV0dXJuIG1vY2tzLlJlc3BvbnNlLmNyZWF0ZTQwNCh1cmwp
CisKKyAgICAgICAgc3RyaXBwZWRfdXJsID0gdXJsLnNwbGl0KCc6Ly8nKVstMV0KKworICAgICAg
ICBtYXRjaCA9IHJlLm1hdGNoKHIne30vdXNlcnMvKD9QPHVzZXJuYW1lPlxTKykkJy5mb3JtYXQo
c2VsZi5ob3N0c1sxXSksIHN0cmlwcGVkX3VybCkKKyAgICAgICAgaWYgbWF0Y2ggYW5kIG1ldGhv
ZCA9PSAnR0VUJzoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl91c2VyKHVybCwgbWF0Y2guZ3Jv
dXAoJ3VzZXJuYW1lJykpCisKKyAgICAgICAgbWF0Y2ggPSByZS5tYXRjaChyJ3t9L2lzc3Vlcy8o
P1A8aWQ+XGQrKSQnLmZvcm1hdChzZWxmLmFwaV9ob3N0KSwgc3RyaXBwZWRfdXJsKQorICAgICAg
ICBpZiBtYXRjaCBhbmQgbWV0aG9kID09ICdHRVQnOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYu
X2lzc3VlKHVybCwgaW50KG1hdGNoLmdyb3VwKCdpZCcpKSkKKworICAgICAgICBtYXRjaCA9IHJl
Lm1hdGNoKHIne30vaXNzdWVzLyg/UDxpZD5cZCspL2NvbW1lbnRzJCcuZm9ybWF0KHNlbGYuYXBp
X2hvc3QpLCBzdHJpcHBlZF91cmwpCisgICAgICAgIGlmIG1hdGNoIGFuZCBtZXRob2QgPT0gJ0dF
VCc6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fY29tbWVudHModXJsLCBpbnQobWF0Y2guZ3Jv
dXAoJ2lkJykpKQorCisgICAgICAgIG1hdGNoID0gcmUubWF0Y2gocid7fS9pc3N1ZXMvKD9QPGlk
PlxkKykvdGltZWxpbmUkJy5mb3JtYXQoc2VsZi5hcGlfaG9zdCksIHN0cmlwcGVkX3VybCkKKyAg
ICAgICAgaWYgbWF0Y2ggYW5kIG1ldGhvZCA9PSAnR0VUJzoKKyAgICAgICAgICAgIHJldHVybiBz
ZWxmLl90aW1lbGluZXModXJsLCBpbnQobWF0Y2guZ3JvdXAoJ2lkJykpKQorCisgICAgICAgIHJl
dHVybiBtb2Nrcy5SZXNwb25zZS5jcmVhdGU0MDQodXJsKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2Ny
aXB0cy9saWJyYXJpZXMvd2Via2l0YnVnc3B5L3dlYmtpdGJ1Z3NweS90ZXN0cy9fX2luaXRfXy5w
eSBiL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGJ1Z3NweS93ZWJraXRidWdzcHkvdGVz
dHMvX19pbml0X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmJhNWE4YTc1Y2EwMmJjMjA0ZTYzNzMxMTE3OTgz
NWZlYjVmNWViNQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dl
YmtpdGJ1Z3NweS93ZWJraXRidWdzcHkvdGVzdHMvX19pbml0X18ucHkKQEAgLTAsMCArMSwyMSBA
QAorIyBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
IworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwK
KyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KZGlmZiAtLWdpdCBhL1Rvb2xz
L1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGJ1Z3NweS93ZWJraXRidWdzcHkvdGVzdHMvYnVnemls
bGFfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRidWdzcHkvd2Vi
a2l0YnVnc3B5L3Rlc3RzL2J1Z3ppbGxhX3VuaXR0ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRiNjBhMGFk
MWQyZTI4NTAwMjUwMmE5OTFkNzk4NjJjNDc5MTk1OTUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29s
cy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRidWdzcHkvd2Via2l0YnVnc3B5L3Rlc3RzL2J1Z3pp
bGxhX3VuaXR0ZXN0LnB5CkBAIC0wLDAgKzEsMTQyIEBACisjIENvcHlyaWdodCAoQykgMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
IyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5E
CisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
IyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorCitpbXBvcnQganNvbgoraW1wb3J0IHVuaXR0ZXN0CisKK2Zyb20gd2Vi
a2l0YnVnc3B5IGltcG9ydCBJc3N1ZSwgVXNlciwgYnVnemlsbGEsIG1vY2tzCisKKworY2xhc3Mg
VGVzdEJ1Z3ppbGxhKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBVUkwgPSAnaHR0cHM6Ly9idWdz
LmV4YW1wbGUuY29tJworCisgICAgZGVmIHRlc3Rfbm9fdXNlcnMoc2VsZik6CisgICAgICAgIHdp
dGggbW9ja3MuQnVnemlsbGEoc2VsZi5VUkwuc3BsaXQoJzovLycpWzFdKToKKyAgICAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgVXNlci5FbmNvZGVyKCkuZGVmYXVs
dChidWd6aWxsYS5UcmFja2VyKHNlbGYuVVJMKS51c2VyKAorICAgICAgICAgICAgICAgICAgICBu
YW1lPSdUaW0gQ29udHJpYnV0b3InLCB1c2VybmFtZT0ndGNvbnRyaWJ1dG9yQGV4YW1wbGUuY29t
JywgZW1haWw9J3Rjb250cmlidXRvckBleGFtcGxlLmNvbScsCisgICAgICAgICAgICAgICAgKSks
IGRpY3QobmFtZT0nVGltIENvbnRyaWJ1dG9yJywgdXNlcm5hbWU9J3Rjb250cmlidXRvckBleGFt
cGxlLmNvbScsIGVtYWlscz1bJ3Rjb250cmlidXRvckBleGFtcGxlLmNvbSddKSwKKyAgICAgICAg
ICAgICkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgVXNl
ci5FbmNvZGVyKCkuZGVmYXVsdChidWd6aWxsYS5UcmFja2VyKHNlbGYuVVJMKS51c2VyKHVzZXJu
YW1lPSd0Y29udHJpYnV0b3JAZXhhbXBsZS5jb20nKSksCisgICAgICAgICAgICAgICAgZGljdCh1
c2VybmFtZT0ndGNvbnRyaWJ1dG9yQGV4YW1wbGUuY29tJyksCisgICAgICAgICAgICApCisgICAg
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIFVzZXIuRW5jb2Rlcigp
LmRlZmF1bHQoYnVnemlsbGEuVHJhY2tlcihzZWxmLlVSTCkudXNlcihlbWFpbD0ndGNvbnRyaWJ1
dG9yQGV4YW1wbGUuY29tJykpLAorICAgICAgICAgICAgICAgIGRpY3QoZW1haWxzPVsndGNvbnRy
aWJ1dG9yQGV4YW1wbGUuY29tJ10pLAorICAgICAgICAgICAgKQorCisgICAgZGVmIHRlc3RfdXNl
cnMoc2VsZik6CisgICAgICAgIHdpdGggbW9ja3MuQnVnemlsbGEoc2VsZi5VUkwuc3BsaXQoJzov
LycpWzFdLCB1c2Vycz1tb2Nrcy5VU0VSUyk6CisgICAgICAgICAgICB0cmFja2VyID0gYnVnemls
bGEuVHJhY2tlcihzZWxmLlVSTCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAg
ICAgICAgICAgICAgVXNlci5FbmNvZGVyKCkuZGVmYXVsdCh0cmFja2VyLnVzZXIodXNlcm5hbWU9
J3Rjb250cmlidXRvckBleGFtcGxlLmNvbScpKSwKKyAgICAgICAgICAgICAgICBkaWN0KG5hbWU9
J1RpbSBDb250cmlidXRvcicsIHVzZXJuYW1lPSd0Y29udHJpYnV0b3JAZXhhbXBsZS5jb20nLCBl
bWFpbHM9Wyd0Y29udHJpYnV0b3JAZXhhbXBsZS5jb20nXSksCisgICAgICAgICAgICApCisgICAg
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIFVzZXIuRW5jb2Rlcigp
LmRlZmF1bHQodHJhY2tlci51c2VyKG5hbWU9J1RpbSBDb250cmlidXRvcicpKSwKKyAgICAgICAg
ICAgICAgICBkaWN0KG5hbWU9J1RpbSBDb250cmlidXRvcicsIHVzZXJuYW1lPSd0Y29udHJpYnV0
b3JAZXhhbXBsZS5jb20nLCBlbWFpbHM9Wyd0Y29udHJpYnV0b3JAZXhhbXBsZS5jb20nXSksCisg
ICAgICAgICAgICApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAg
ICAgIFVzZXIuRW5jb2RlcigpLmRlZmF1bHQodHJhY2tlci51c2VyKGVtYWlsPSdmZmlsZXJAZXhh
bXBsZS5jb20nKSksCisgICAgICAgICAgICAgICAgZGljdChuYW1lPSdGZWxpeCBGaWxlcicsIHVz
ZXJuYW1lPSdmZmlsZXJAZXhhbXBsZS5jb20nLCBlbWFpbHM9WydmZmlsZXJAZXhhbXBsZS5jb20n
XSksCisgICAgICAgICAgICApCisKKyAgICBkZWYgdGVzdF9saW5rKHNlbGYpOgorICAgICAgICB0
cmFja2VyID0gYnVnemlsbGEuVHJhY2tlcihzZWxmLlVSTCkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCh0cmFja2VyLmlzc3VlKDEyMzQpLmxpbmssICdodHRwczovL2J1Z3MuZXhhbXBsZS5jb20v
c2hvd19idWcuY2dpP2lkPTEyMzQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAg
ICAgICAgdHJhY2tlci5mcm9tX3N0cmluZygnaHR0cDovL2J1Z3MuZXhhbXBsZS5jb20vc2hvd19i
dWcuY2dpP2lkPTEyMzQnKS5saW5rLAorICAgICAgICAgICAgJ2h0dHBzOi8vYnVncy5leGFtcGxl
LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9MTIzNCcsCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCh0cmFja2VyLmZyb21fc3RyaW5nKCdodHRwOi8vYnVncy5vdGhlci5jb20vc2hvd19i
dWcuY2dpP2lkPTEyMzQnKSwgTm9uZSkKKworICAgIGRlZiB0ZXN0X3RpdGxlKHNlbGYpOgorICAg
ICAgICB3aXRoIG1vY2tzLkJ1Z3ppbGxhKHNlbGYuVVJMLnNwbGl0KCc6Ly8nKVsxXSwgaXNzdWVz
PW1vY2tzLklTU1VFUyk6CisgICAgICAgICAgICB0cmFja2VyID0gYnVnemlsbGEuVHJhY2tlcihz
ZWxmLlVSTCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2tlci5pc3N1ZSgxKS50
aXRsZSwgJ0V4YW1wbGUgaXNzdWUgMScpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0
cih0cmFja2VyLmlzc3VlKDEpKSwgJ2h0dHBzOi8vYnVncy5leGFtcGxlLmNvbS9zaG93X2J1Zy5j
Z2k/aWQ9MSBFeGFtcGxlIGlzc3VlIDEnKQorCisgICAgZGVmIHRlc3RfdGltZXN0YW1wKHNlbGYp
OgorICAgICAgICB3aXRoIG1vY2tzLkJ1Z3ppbGxhKHNlbGYuVVJMLnNwbGl0KCc6Ly8nKVsxXSwg
aXNzdWVzPW1vY2tzLklTU1VFUyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Z3pp
bGxhLlRyYWNrZXIoc2VsZi5VUkwpLmlzc3VlKDEpLnRpbWVzdGFtcCwgMTYzOTUxMDk2MCkKKwor
ICAgIGRlZiB0ZXN0X2NyZWF0b3Ioc2VsZik6CisgICAgICAgIHdpdGggbW9ja3MuQnVnemlsbGEo
c2VsZi5VUkwuc3BsaXQoJzovLycpWzFdLCBpc3N1ZXM9bW9ja3MuSVNTVUVTKToKKyAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgVXNlci5FbmNvZGVyKCkuZGVm
YXVsdChidWd6aWxsYS5UcmFja2VyKHNlbGYuVVJMKS5pc3N1ZSgxKS5jcmVhdG9yKSwKKyAgICAg
ICAgICAgICAgICBkaWN0KG5hbWU9J0ZlbGl4IEZpbGVyJywgdXNlcm5hbWU9J2ZmaWxlckBleGFt
cGxlLmNvbScsIGVtYWlscz1bJ2ZmaWxlckBleGFtcGxlLmNvbSddKSwKKyAgICAgICAgICAgICkK
KworICAgIGRlZiB0ZXN0X2Rlc2NyaXB0aW9uKHNlbGYpOgorICAgICAgICB3aXRoIG1vY2tzLkJ1
Z3ppbGxhKHNlbGYuVVJMLnNwbGl0KCc6Ly8nKVsxXSwgaXNzdWVzPW1vY2tzLklTU1VFUyk6Cisg
ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIGJ1Z3ppbGxhLlRy
YWNrZXIoc2VsZi5VUkwpLmlzc3VlKDEpLmRlc2NyaXB0aW9uLAorICAgICAgICAgICAgICAgICdB
biBleGFtcGxlIGlzc3VlIGZvciB0ZXN0aW5nJywKKyAgICAgICAgICAgICkKKworICAgIGRlZiB0
ZXN0X2Fzc2lnbmVlKHNlbGYpOgorICAgICAgICB3aXRoIG1vY2tzLkJ1Z3ppbGxhKHNlbGYuVVJM
LnNwbGl0KCc6Ly8nKVsxXSwgaXNzdWVzPW1vY2tzLklTU1VFUyk6CisgICAgICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIFVzZXIuRW5jb2RlcigpLmRlZmF1bHQoYnVn
emlsbGEuVHJhY2tlcihzZWxmLlVSTCkuaXNzdWUoMSkuYXNzaWduZWUpLAorICAgICAgICAgICAg
ICAgIGRpY3QobmFtZT0nVGltIENvbnRyaWJ1dG9yJywgdXNlcm5hbWU9J3Rjb250cmlidXRvckBl
eGFtcGxlLmNvbScsIGVtYWlscz1bJ3Rjb250cmlidXRvckBleGFtcGxlLmNvbSddKSwKKyAgICAg
ICAgICAgICkKKworICAgIGRlZiB0ZXN0X2NvbW1lbnRzKHNlbGYpOgorICAgICAgICB3aXRoIG1v
Y2tzLkJ1Z3ppbGxhKHNlbGYuVVJMLnNwbGl0KCc6Ly8nKVsxXSwgaXNzdWVzPW1vY2tzLklTU1VF
Uyk6CisgICAgICAgICAgICBjb21tZW50cyA9IGJ1Z3ppbGxhLlRyYWNrZXIoc2VsZi5VUkwpLmlz
c3VlKDEpLmNvbW1lbnRzCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihjb21tZW50
cyksIDIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1lbnRzWzBdLnRpbWVzdGFt
cCwgMTYzOTUxMTAyMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbWVudHNbMF0u
Y29udGVudCwgJ1dhcyBhYmxlIHRvIHJlcHJvZHVjZSBvbiB2ZXJzaW9uIDEuMi4zJykKKyAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgVXNlci5FbmNvZGVyKCku
ZGVmYXVsdChjb21tZW50c1swXS51c2VyKSwKKyAgICAgICAgICAgICAgICBkaWN0KG5hbWU9J0Zl
bGl4IEZpbGVyJywgdXNlcm5hbWU9J2ZmaWxlckBleGFtcGxlLmNvbScsIGVtYWlscz1bJ2ZmaWxl
ckBleGFtcGxlLmNvbSddKSwKKyAgICAgICAgICAgICkKKworICAgIGRlZiB0ZXN0X3dhdGNoZXJz
KHNlbGYpOgorICAgICAgICB3aXRoIG1vY2tzLkJ1Z3ppbGxhKHNlbGYuVVJMLnNwbGl0KCc6Ly8n
KVsxXSwgaXNzdWVzPW1vY2tzLklTU1VFUyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KAorICAgICAgICAgICAgICAgIFVzZXIuRW5jb2RlcigpLmRlZmF1bHQoYnVnemlsbGEuVHJhY2tl
cihzZWxmLlVSTCkuaXNzdWUoMSkud2F0Y2hlcnMpLCBbCisgICAgICAgICAgICAgICAgICAgIGRp
Y3QobmFtZT0nRmVsaXggRmlsZXInLCB1c2VybmFtZT0nZmZpbGVyQGV4YW1wbGUuY29tJywgZW1h
aWxzPVsnZmZpbGVyQGV4YW1wbGUuY29tJ10pLAorICAgICAgICAgICAgICAgICAgICBkaWN0KG5h
bWU9J1RpbSBDb250cmlidXRvcicsIHVzZXJuYW1lPSd0Y29udHJpYnV0b3JAZXhhbXBsZS5jb20n
LCBlbWFpbHM9Wyd0Y29udHJpYnV0b3JAZXhhbXBsZS5jb20nXSksCisgICAgICAgICAgICAgICAg
ICAgIGRpY3QobmFtZT0nV2lsbWEgV2F0Y2hlcicsIHVzZXJuYW1lPSd3d2F0Y2hlckBleGFtcGxl
LmNvbScsIGVtYWlscz1bJ3d3YXRjaGVyQGV4YW1wbGUuY29tJ10pLAorICAgICAgICAgICAgICAg
IF0sCisgICAgICAgICAgICApCisKKyAgICBkZWYgdGVzdF9yZWZlcmVuY2VzKHNlbGYpOgorICAg
ICAgICB3aXRoIG1vY2tzLkJ1Z3ppbGxhKHNlbGYuVVJMLnNwbGl0KCc6Ly8nKVsxXSwgaXNzdWVz
PW1vY2tzLklTU1VFUyk6CisgICAgICAgICAgICB0cmFja2VyID0gYnVnemlsbGEuVHJhY2tlcihz
ZWxmLlVSTCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2tlci5pc3N1ZSgxKS5y
ZWZlcmVuY2VzLCBbXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2tlci5pc3N1
ZSgyKS5yZWZlcmVuY2VzLCBbdHJhY2tlci5pc3N1ZSgzKV0pCisgICAgICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHRyYWNrZXIuaXNzdWUoMykucmVmZXJlbmNlcywgW3RyYWNrZXIuaXNzdWUoMild
KQorCisgICAgZGVmIHRlc3RfcmVmZXJlbmNlX3BhcnNlKHNlbGYpOgorICAgICAgICB3aXRoIG1v
Y2tzLkJ1Z3ppbGxhKHNlbGYuVVJMLnNwbGl0KCc6Ly8nKVsxXSwgaXNzdWVzPW1vY2tzLklTU1VF
UykgYXMgbW9jazoKKyAgICAgICAgICAgIHRyYWNrZXIgPSBidWd6aWxsYS5UcmFja2VyKHNlbGYu
VVJMKQorICAgICAgICAgICAgbW9jay5pc3N1ZXNbMV1bJ2NvbW1lbnRzJ10uYXBwZW5kKAorICAg
ICAgICAgICAgICAgIElzc3VlLkNvbW1lbnQoCisgICAgICAgICAgICAgICAgICAgIHVzZXI9bW9j
a3MuVVNFUlNbJ1dpbG1hIFdhdGNoZXInXSwKKyAgICAgICAgICAgICAgICAgICAgdGltZXN0YW1w
PTE2Mzk1Mzk2MzAsCisgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ9J0lzIHRoaXMgcmVsYXRl
ZCB0byB7fS9zaG93X2J1Zy5jZ2k/aWQ9Mj8nLmZvcm1hdChzZWxmLlVSTCksCisgICAgICAgICAg
ICAgICAgKSwKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJh
Y2tlci5pc3N1ZSgxKS5yZWZlcmVuY2VzLCBbdHJhY2tlci5pc3N1ZSgyKV0pCmRpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRidWdzcHkvd2Via2l0YnVnc3B5L3Rlc3Rz
L2dpdGh1Yl91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGJ1Z3Nw
eS93ZWJraXRidWdzcHkvdGVzdHMvZ2l0aHViX3VuaXR0ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjExZmQ3
YmUyODgxNDc2MGEzOWExZTFjNTcwMjIxZjkzNDVhYjdjYTMKLS0tIC9kZXYvbnVsbAorKysgYi9U
b29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRidWdzcHkvd2Via2l0YnVnc3B5L3Rlc3RzL2dp
dGh1Yl91bml0dGVzdC5weQpAQCAtMCwwICsxLDE0MiBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFO
RAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKworaW1wb3J0IGpzb24KK2ltcG9ydCB1bml0dGVzdAorCitmcm9tIHdl
YmtpdGJ1Z3NweSBpbXBvcnQgSXNzdWUsIFVzZXIsIGdpdGh1YiwgbW9ja3MKKworCitjbGFzcyBU
ZXN0R2l0SHViKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBVUkwgPSAnaHR0cHM6Ly9naXRodWIu
ZXhhbXBsZS5jb20vV2ViS2l0L1dlYktpdCcKKworICAgIGRlZiB0ZXN0X3VzZXJzKHNlbGYpOgor
ICAgICAgICB3aXRoIG1vY2tzLkdpdEh1YihzZWxmLlVSTC5zcGxpdCgnOi8vJylbMV0sIHVzZXJz
PW1vY2tzLlVTRVJTKToKKyAgICAgICAgICAgIHRyYWNrZXIgPSBnaXRodWIuVHJhY2tlcihzZWxm
LlVSTCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgVXNl
ci5FbmNvZGVyKCkuZGVmYXVsdCh0cmFja2VyLnVzZXIodXNlcm5hbWU9J3Rjb250cmlidXRvcicp
KSwKKyAgICAgICAgICAgICAgICBkaWN0KG5hbWU9J1RpbSBDb250cmlidXRvcicsIHVzZXJuYW1l
PSd0Y29udHJpYnV0b3InLCBlbWFpbHM9Wyd0Y29udHJpYnV0b3JAZXhhbXBsZS5jb20nXSksCisg
ICAgICAgICAgICApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAg
ICAgIFVzZXIuRW5jb2RlcigpLmRlZmF1bHQodHJhY2tlci51c2VyKG5hbWU9J1RpbSBDb250cmli
dXRvcicpKSwKKyAgICAgICAgICAgICAgICBkaWN0KG5hbWU9J1RpbSBDb250cmlidXRvcicsIHVz
ZXJuYW1lPSd0Y29udHJpYnV0b3InLCBlbWFpbHM9Wyd0Y29udHJpYnV0b3JAZXhhbXBsZS5jb20n
XSksCisgICAgICAgICAgICApCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1
bnRpbWVFcnJvcik6CisgICAgICAgICAgICAgICAgdHJhY2tlci51c2VyKGVtYWlsPSdmZmlsZXJA
ZXhhbXBsZS5jb20nKQorCisgICAgZGVmIHRlc3RfbGluayhzZWxmKToKKyAgICAgICAgdHJhY2tl
ciA9IGdpdGh1Yi5UcmFja2VyKHNlbGYuVVJMKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRy
YWNrZXIuaXNzdWUoMTIzNCkubGluaywgJ2h0dHBzOi8vZ2l0aHViLmV4YW1wbGUuY29tL1dlYktp
dC9XZWJLaXQvaXNzdWVzLzEyMzQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAg
ICAgICAgdHJhY2tlci5mcm9tX3N0cmluZygnaHR0cDovL2dpdGh1Yi5leGFtcGxlLmNvbS9XZWJL
aXQvV2ViS2l0L2lzc3Vlcy8xMjM0JykubGluaywKKyAgICAgICAgICAgICdodHRwczovL2dpdGh1
Yi5leGFtcGxlLmNvbS9XZWJLaXQvV2ViS2l0L2lzc3Vlcy8xMjM0JywKKyAgICAgICAgKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNrZXIuZnJvbV9zdHJpbmcoJ2h0dHBzOi8vZ2l0aHVi
LmV4YW1wbGUuY29tL0FwcGxlL1N3aWZ0L2lzc3Vlcy8xMjM0JyksIE5vbmUpCisKKyAgICBkZWYg
dGVzdF90aXRsZShzZWxmKToKKyAgICAgICAgd2l0aCBtb2Nrcy5HaXRIdWIoc2VsZi5VUkwuc3Bs
aXQoJzovLycpWzFdLCBpc3N1ZXM9bW9ja3MuSVNTVUVTKToKKyAgICAgICAgICAgIHRyYWNrZXIg
PSBnaXRodWIuVHJhY2tlcihzZWxmLlVSTCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
dHJhY2tlci5pc3N1ZSgxKS50aXRsZSwgJ0V4YW1wbGUgaXNzdWUgMScpCisgICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHN0cih0cmFja2VyLmlzc3VlKDEpKSwgJ2h0dHBzOi8vZ2l0aHViLmV4
YW1wbGUuY29tL1dlYktpdC9XZWJLaXQvaXNzdWVzLzEgRXhhbXBsZSBpc3N1ZSAxJykKKworICAg
IGRlZiB0ZXN0X3RpbWVzdGFtcChzZWxmKToKKyAgICAgICAgd2l0aCBtb2Nrcy5HaXRIdWIoc2Vs
Zi5VUkwuc3BsaXQoJzovLycpWzFdLCBpc3N1ZXM9bW9ja3MuSVNTVUVTKToKKyAgICAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoZ2l0aHViLlRyYWNrZXIoc2VsZi5VUkwpLmlzc3VlKDEpLnRpbWVz
dGFtcCwgMTYzOTUxMDk2MCkKKworICAgIGRlZiB0ZXN0X2NyZWF0b3Ioc2VsZik6CisgICAgICAg
IHdpdGggbW9ja3MuR2l0SHViKHNlbGYuVVJMLnNwbGl0KCc6Ly8nKVsxXSwgaXNzdWVzPW1vY2tz
LklTU1VFUyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAg
IFVzZXIuRW5jb2RlcigpLmRlZmF1bHQoZ2l0aHViLlRyYWNrZXIoc2VsZi5VUkwpLmlzc3VlKDEp
LmNyZWF0b3IpLAorICAgICAgICAgICAgICAgIGRpY3QobmFtZT0nRmVsaXggRmlsZXInLCB1c2Vy
bmFtZT0nZmZpbGVyJywgZW1haWxzPVsnZmZpbGVyQGV4YW1wbGUuY29tJ10pLAorICAgICAgICAg
ICAgKQorCisgICAgZGVmIHRlc3RfZGVzY3JpcHRpb24oc2VsZik6CisgICAgICAgIHdpdGggbW9j
a3MuR2l0SHViKHNlbGYuVVJMLnNwbGl0KCc6Ly8nKVsxXSwgaXNzdWVzPW1vY2tzLklTU1VFUyk6
CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIGdpdGh1Yi5U
cmFja2VyKHNlbGYuVVJMKS5pc3N1ZSgxKS5kZXNjcmlwdGlvbiwKKyAgICAgICAgICAgICAgICAn
QW4gZXhhbXBsZSBpc3N1ZSBmb3IgdGVzdGluZycsCisgICAgICAgICAgICApCisKKyAgICBkZWYg
dGVzdF9hc3NpZ25lZShzZWxmKToKKyAgICAgICAgd2l0aCBtb2Nrcy5HaXRIdWIoc2VsZi5VUkwu
c3BsaXQoJzovLycpWzFdLCBpc3N1ZXM9bW9ja3MuSVNTVUVTKToKKyAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgVXNlci5FbmNvZGVyKCkuZGVmYXVsdChnaXRo
dWIuVHJhY2tlcihzZWxmLlVSTCkuaXNzdWUoMSkuYXNzaWduZWUpLAorICAgICAgICAgICAgICAg
IGRpY3QobmFtZT0nVGltIENvbnRyaWJ1dG9yJywgdXNlcm5hbWU9J3Rjb250cmlidXRvcicsIGVt
YWlscz1bJ3Rjb250cmlidXRvckBleGFtcGxlLmNvbSddKSwKKyAgICAgICAgICAgICkKKworICAg
IGRlZiB0ZXN0X2NvbW1lbnRzKHNlbGYpOgorICAgICAgICB3aXRoIG1vY2tzLkdpdEh1YihzZWxm
LlVSTC5zcGxpdCgnOi8vJylbMV0sIGlzc3Vlcz1tb2Nrcy5JU1NVRVMpOgorICAgICAgICAgICAg
Y29tbWVudHMgPSBnaXRodWIuVHJhY2tlcihzZWxmLlVSTCkuaXNzdWUoMSkuY29tbWVudHMKKyAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGNvbW1lbnRzKSwgMikKKyAgICAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoY29tbWVudHNbMF0udGltZXN0YW1wLCAxNjM5NTExMDIwKQorICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21tZW50c1swXS5jb250ZW50LCAnV2FzIGFibGUg
dG8gcmVwcm9kdWNlIG9uIHZlcnNpb24gMS4yLjMnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgKKyAgICAgICAgICAgICAgICBVc2VyLkVuY29kZXIoKS5kZWZhdWx0KGNvbW1lbnRzWzBd
LnVzZXIpLAorICAgICAgICAgICAgICAgIGRpY3QobmFtZT0nRmVsaXggRmlsZXInLCB1c2VybmFt
ZT0nZmZpbGVyJywgZW1haWxzPVsnZmZpbGVyQGV4YW1wbGUuY29tJ10pLAorICAgICAgICAgICAg
KQorCisgICAgZGVmIHRlc3Rfd2F0Y2hlcnMoc2VsZik6CisgICAgICAgIHdpdGggbW9ja3MuR2l0
SHViKHNlbGYuVVJMLnNwbGl0KCc6Ly8nKVsxXSwgaXNzdWVzPW1vY2tzLklTU1VFUyk6CisgICAg
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIFVzZXIuRW5jb2Rlcigp
LmRlZmF1bHQoZ2l0aHViLlRyYWNrZXIoc2VsZi5VUkwpLmlzc3VlKDEpLndhdGNoZXJzKSwgWwor
ICAgICAgICAgICAgICAgICAgICBkaWN0KG5hbWU9J0ZlbGl4IEZpbGVyJywgdXNlcm5hbWU9J2Zm
aWxlcicsIGVtYWlscz1bJ2ZmaWxlckBleGFtcGxlLmNvbSddKSwKKyAgICAgICAgICAgICAgICAg
ICAgZGljdChuYW1lPSdUaW0gQ29udHJpYnV0b3InLCB1c2VybmFtZT0ndGNvbnRyaWJ1dG9yJywg
ZW1haWxzPVsndGNvbnRyaWJ1dG9yQGV4YW1wbGUuY29tJ10pLAorICAgICAgICAgICAgICAgICAg
ICBkaWN0KG5hbWU9J1dpbG1hIFdhdGNoZXInLCB1c2VybmFtZT0nd3dhdGNoZXInLCBlbWFpbHM9
Wyd3d2F0Y2hlckBleGFtcGxlLmNvbSddKSwKKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAg
ICAgKQorCisgICAgZGVmIHRlc3Rfd2F0Y2hlcl9wYXJzZShzZWxmKToKKyAgICAgICAgd2l0aCBt
b2Nrcy5HaXRIdWIoc2VsZi5VUkwuc3BsaXQoJzovLycpWzFdLCBpc3N1ZXM9bW9ja3MuSVNTVUVT
KSBhcyBtb2NrOgorICAgICAgICAgICAgdHJhY2tlciA9IGdpdGh1Yi5UcmFja2VyKHNlbGYuVVJM
KQorICAgICAgICAgICAgbW9jay5pc3N1ZXNbMl1bJ2NvbW1lbnRzJ10uYXBwZW5kKAorICAgICAg
ICAgICAgICAgIElzc3VlLkNvbW1lbnQoCisgICAgICAgICAgICAgICAgICAgIHVzZXI9bW9ja3Mu
VVNFUlNbJ1RpbSBDb250cmlidXRvciddLAorICAgICAgICAgICAgICAgICAgICB0aW1lc3RhbXA9
MTYzOTUzOTYzMCwKKyAgICAgICAgICAgICAgICAgICAgY29udGVudD0nTG9va3MgbGlrZSBAZmZp
bGVyIHN0dW1ibGVkIHVwb24gdGhpcyBpbiAjMycsCisgICAgICAgICAgICAgICAgKSwKKyAgICAg
ICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAg
VXNlci5FbmNvZGVyKCkuZGVmYXVsdCh0cmFja2VyLmlzc3VlKDIpLndhdGNoZXJzKSwgWworICAg
ICAgICAgICAgICAgICAgICBkaWN0KG5hbWU9J1RpbSBDb250cmlidXRvcicsIHVzZXJuYW1lPSd0
Y29udHJpYnV0b3InLCBlbWFpbHM9Wyd0Y29udHJpYnV0b3JAZXhhbXBsZS5jb20nXSksCisgICAg
ICAgICAgICAgICAgICAgIGRpY3QobmFtZT0nV2lsbWEgV2F0Y2hlcicsIHVzZXJuYW1lPSd3d2F0
Y2hlcicsIGVtYWlscz1bJ3d3YXRjaGVyQGV4YW1wbGUuY29tJ10pLAorICAgICAgICAgICAgICAg
ICAgICBkaWN0KG5hbWU9J0ZlbGl4IEZpbGVyJywgdXNlcm5hbWU9J2ZmaWxlcicsIGVtYWlscz1b
J2ZmaWxlckBleGFtcGxlLmNvbSddKSwKKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAg
KQorCisgICAgZGVmIHRlc3RfcmVmZXJlbmNlcyhzZWxmKToKKyAgICAgICAgd2l0aCBtb2Nrcy5H
aXRIdWIoc2VsZi5VUkwuc3BsaXQoJzovLycpWzFdLCBpc3N1ZXM9bW9ja3MuSVNTVUVTKToKKyAg
ICAgICAgICAgIHRyYWNrZXIgPSBnaXRodWIuVHJhY2tlcihzZWxmLlVSTCkKKyAgICAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwodHJhY2tlci5pc3N1ZSgxKS5yZWZlcmVuY2VzLCBbXSkKKyAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2tlci5pc3N1ZSgyKS5yZWZlcmVuY2VzLCBbdHJh
Y2tlci5pc3N1ZSgzKV0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNrZXIuaXNz
dWUoMykucmVmZXJlbmNlcywgW3RyYWNrZXIuaXNzdWUoMildKQorCisgICAgZGVmIHRlc3RfcmVm
ZXJlbmNlX3BhcnNlKHNlbGYpOgorICAgICAgICB3aXRoIG1vY2tzLkdpdEh1YihzZWxmLlVSTC5z
cGxpdCgnOi8vJylbMV0sIGlzc3Vlcz1tb2Nrcy5JU1NVRVMpIGFzIG1vY2s6CisgICAgICAgICAg
ICB0cmFja2VyID0gZ2l0aHViLlRyYWNrZXIoc2VsZi5VUkwpCisgICAgICAgICAgICBtb2NrLmlz
c3Vlc1sxXVsnY29tbWVudHMnXS5hcHBlbmQoCisgICAgICAgICAgICAgICAgSXNzdWUuQ29tbWVu
dCgKKyAgICAgICAgICAgICAgICAgICAgdXNlcj1tb2Nrcy5VU0VSU1snV2lsbWEgV2F0Y2hlcidd
LAorICAgICAgICAgICAgICAgICAgICB0aW1lc3RhbXA9MTYzOTUzOTYzMCwKKyAgICAgICAgICAg
ICAgICAgICAgY29udGVudD0nSXMgdGhpcyByZWxhdGVkIHRvICMyPycsCisgICAgICAgICAgICAg
ICAgKSwKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2tl
ci5pc3N1ZSgxKS5yZWZlcmVuY2VzLCBbdHJhY2tlci5pc3N1ZSgyKV0pCmRpZmYgLS1naXQgYS9U
b29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRidWdzcHkvd2Via2l0YnVnc3B5L3Rlc3RzL3Vz
ZXJfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRidWdzcHkvd2Vi
a2l0YnVnc3B5L3Rlc3RzL3VzZXJfdW5pdHRlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2I4ZGYyNmFlZmFm
NDBlMjUzNTQ3MGFlMzJhM2ExNWEwM2JlOGE4NwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Nj
cmlwdHMvbGlicmFyaWVzL3dlYmtpdGJ1Z3NweS93ZWJraXRidWdzcHkvdGVzdHMvdXNlcl91bml0
dGVzdC5weQpAQCAtMCwwICsxLDg2IEBACisjIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJl
IG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisjIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMg
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgor
IyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorCitpbXBvcnQganNvbgoraW1wb3J0IHVuaXR0ZXN0CisKK2Zyb20gd2Via2l0YnVnc3B5
IGltcG9ydCBVc2VyCisKKworY2xhc3MgVGVzdFVzZXIodW5pdHRlc3QuVGVzdENhc2UpOgorICAg
IGRlZiB0ZXN0X3N0cmluZyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAg
ICAgICAgIHN0cihVc2VyKG5hbWU9J1RpbSBDb250cmlidXRvcicsIHVzZXJuYW1lPSd0Y29udHJp
YnV0b3InLCBlbWFpbHM9Wyd0Y29udHJpYnV0b3JAd2Via2l0Lm9yZyddKSksCisgICAgICAgICAg
ICAnVGltIENvbnRyaWJ1dG9yIDx0Y29udHJpYnV0b3I+JywKKyAgICAgICAgKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgc3RyKFVzZXIodXNlcm5hbWU9J3Rjb250cmli
dXRvcicsIGVtYWlscz1bJ3Rjb250cmlidXRvckB3ZWJraXQub3JnJ10pKSwKKyAgICAgICAgICAg
ICd0Y29udHJpYnV0b3IgPHRjb250cmlidXRvckB3ZWJraXQub3JnPicsCisgICAgICAgICkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHN0cihVc2VyKG5hbWU9J1RpbSBD
b250cmlidXRvcicsIGVtYWlscz1bJ3Rjb250cmlidXRvckB3ZWJraXQub3JnJ10pKSwKKyAgICAg
ICAgICAgICdUaW0gQ29udHJpYnV0b3IgPHRjb250cmlidXRvckB3ZWJraXQub3JnPicsCisgICAg
ICAgICkKKworICAgIGRlZiB0ZXN0X2NvbnN0cnVjdG9yKHNlbGYpOgorICAgICAgICB1c3IgPSBV
c2VyKCdUaW0gQ29udHJpYnV0b3InLCAndGNvbnRyaWJ1dG9yJywgWyd0Y29udHJpYnV0b3JAd2Vi
a2l0Lm9yZyddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHVzci5uYW1lLCAnVGltIENvbnRy
aWJ1dG9yJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1c3IudXNlcm5hbWUsICd0Y29udHJp
YnV0b3InKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHVzci5lbWFpbHMsIFsndGNvbnRyaWJ1
dG9yQHdlYmtpdC5vcmcnXSkKKworICAgIGRlZiB0ZXN0X2NvbXBhcmUoc2VsZik6CisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoVXNlcignVGltIENvbnRyaWJ1dG9yJywgJ3Rjb250cmlidXRvcicp
LCBVc2VyKHVzZXJuYW1lPSd0Y29udHJpYnV0b3InKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChVc2VyKCdUaW0gQ29udHJpYnV0b3InLCBlbWFpbHM9Wyd0Y29udHJpYnV0b3JAd2Via2l0Lm9y
ZyddKSwgVXNlcignVGltIENvbnRyaWJ1dG9yJykpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1
YWwoVXNlcignVGltIENvbnRyaWJ1dG9yJywgJ3Rjb250cmlidXRvcicpLCBVc2VyKCdUaW0gQ29u
dHJpYnV0b3InKSkKKworICAgIGRlZiB0ZXN0X2pzb24oc2VsZik6CisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoCisgICAgICAgICAgICBVc2VyLkVuY29kZXIoKS5kZWZhdWx0KFVzZXIobmFtZT0n
VGltIENvbnRyaWJ1dG9yJywgdXNlcm5hbWU9J3Rjb250cmlidXRvcicsIGVtYWlscz1bJ3Rjb250
cmlidXRvckB3ZWJraXQub3JnJ10pKSwKKyAgICAgICAgICAgIGRpY3QobmFtZT0nVGltIENvbnRy
aWJ1dG9yJywgdXNlcm5hbWU9J3Rjb250cmlidXRvcicsIGVtYWlscz1bJ3Rjb250cmlidXRvckB3
ZWJraXQub3JnJ10pLAorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAg
ICAgICAgICBVc2VyLkVuY29kZXIoKS5kZWZhdWx0KFVzZXIodXNlcm5hbWU9J3Rjb250cmlidXRv
cicsIGVtYWlscz1bJ3Rjb250cmlidXRvckB3ZWJraXQub3JnJ10pKSwKKyAgICAgICAgICAgIGRp
Y3QodXNlcm5hbWU9J3Rjb250cmlidXRvcicsIGVtYWlscz1bJ3Rjb250cmlidXRvckB3ZWJraXQu
b3JnJ10pLAorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAg
ICBVc2VyLkVuY29kZXIoKS5kZWZhdWx0KFVzZXIobmFtZT0nVGltIENvbnRyaWJ1dG9yJywgZW1h
aWxzPVsndGNvbnRyaWJ1dG9yQHdlYmtpdC5vcmcnXSkpLAorICAgICAgICAgICAgZGljdChuYW1l
PSdUaW0gQ29udHJpYnV0b3InLCBlbWFpbHM9Wyd0Y29udHJpYnV0b3JAd2Via2l0Lm9yZyddKSwK
KyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgVXNlci5F
bmNvZGVyKCkuZGVmYXVsdChVc2VyKG5hbWU9J1RpbSBDb250cmlidXRvcicsIHVzZXJuYW1lPSd0
Y29udHJpYnV0b3InKSksCisgICAgICAgICAgICBkaWN0KG5hbWU9J1RpbSBDb250cmlidXRvcics
IHVzZXJuYW1lPSd0Y29udHJpYnV0b3InKSwKKyAgICAgICAgKQorCisgICAgZGVmIHRlc3RfbWFw
cGluZyhzZWxmKToKKyAgICAgICAgbWFwcGluZyA9IFVzZXIuTWFwcGluZygpCisgICAgICAgIHVz
ZXIgPSBtYXBwaW5nLmNyZWF0ZShuYW1lPSdUaW0gQ29udHJpYnV0b3InLCB1c2VybmFtZT0ndGNv
bnRyaWJ1dG9yJywgZW1haWxzPVsndGNvbnRyaWJ1dG9yQHdlYmtpdC5vcmcnXSkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCh1c2VyLCBtYXBwaW5nWydUaW0gQ29udHJpYnV0b3InXSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCh1c2VyLCBtYXBwaW5nWyd0Y29udHJpYnV0b3InXSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCh1c2VyLCBtYXBwaW5nWyd0Y29udHJpYnV0b3JAd2Via2l0Lm9y
ZyddKQorCisgICAgICAgIG1hcHBpbmcuY3JlYXRlKG5hbWU9J1RpbSBDb250cmlidXRvcicsIGVt
YWlscz1bJ3Rjb250cmlidXRvci1hbHRAd2Via2l0Lm9yZyddKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHVzZXIsIG1hcHBpbmdbJ3Rjb250cmlidXRvci1hbHRAd2Via2l0Lm9yZyddKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHVzZXIuZW1haWxzLCBbJ3Rjb250cmlidXRvckB3ZWJraXQu
b3JnJywgJ3Rjb250cmlidXRvci1hbHRAd2Via2l0Lm9yZyddKQorCisgICAgICAgIG1hcHBpbmcu
Y3JlYXRlKG5hbWU9J1JpY2t5IFJldmlld2VyJywgZW1haWxzPVsncnJldmlld2VyQHdlYmtpdC5v
cmcnXSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IpOgorICAg
ICAgICAgICAgbWFwcGluZy5jcmVhdGUobmFtZT0nVGltIENvbnRyaWJ1dG9yJywgZW1haWxzPVsn
cnJldmlld2VyQHdlYmtpdC5vcmcnXSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvbGlicmFy
aWVzL3dlYmtpdGJ1Z3NweS93ZWJraXRidWdzcHkvdHJhY2tlci5weSBiL1Rvb2xzL1NjcmlwdHMv
bGlicmFyaWVzL3dlYmtpdGJ1Z3NweS93ZWJraXRidWdzcHkvdHJhY2tlci5weQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5jN2ZjMGEyODk2NTIxNjQ4Mjc4ZjBiYWYxNzczODkxMGM1Yjc3MWZiCi0tLSAvZGV2L251bGwK
KysrIGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0YnVnc3B5L3dlYmtpdGJ1Z3NweS90
cmFja2VyLnB5CkBAIC0wLDAgKzEsNzMgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBh
cmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyMgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgor
IyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
CisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisKK2ltcG9ydCByZQorCitmcm9tIC51c2VyIGltcG9ydCBVc2VyCisKK2Zyb20gd2Vi
a2l0Y29yZXB5IGltcG9ydCBkZWNvcmF0b3JzCisKKworY2xhc3MgVHJhY2tlcihvYmplY3QpOgor
ICAgIFJFRkVSRU5DRV9SRSA9IHJlLmNvbXBpbGUocicoKGh0dHBzfGh0dHB8cmRhcnxyYWRhcik6
Ly9bXlxzPjwsXCdcIn17XF1cWykoXStbXlxzPjwsXCdcIn17XF1cWykoXC5cP10pJykKKworICAg
IF90cmFja2VycyA9IFtdCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgcmVnaXN0ZXIoY2xz
LCB0cmFja2VyKToKKyAgICAgICAgaWYgdHJhY2tlciBub3QgaW4gY2xzLl90cmFja2VyczoKKyAg
ICAgICAgICAgIHNldGF0dHIoY2xzLCBzdHIodHlwZSh0cmFja2VyKSkuc3BsaXQoJy4nKVstMl0s
IHRyYWNrZXIpCisgICAgICAgICAgICBjbHMuX3RyYWNrZXJzLmFwcGVuZCh0cmFja2VyKQorICAg
ICAgICByZXR1cm4gdHJhY2tlcgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGluc3RhbmNl
KGNscyk6CisgICAgICAgIGlmIGNscy5fdHJhY2tlcnM6CisgICAgICAgICAgICByZXR1cm4gY2xz
Ll90cmFja2Vyc1swXQorICAgICAgICByZXR1cm4gTm9uZQorCisgICAgZGVmIF9faW5pdF9fKHNl
bGYsIHVzZXJzPU5vbmUpOgorICAgICAgICBzZWxmLnVzZXJzID0gdXNlcnMgb3IgVXNlci5NYXBw
aW5nKCkKKworICAgIEBkZWNvcmF0b3JzLmh5YnJpZG1ldGhvZAorICAgIGRlZiBmcm9tX3N0cmlu
Zyhjb250ZXh0LCBzdHJpbmcpOgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShjb250ZXh0LCB0
eXBlKToKKyAgICAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoKQorICAgICAgICBm
b3IgdHJhY2tlciBpbiBjb250ZXh0Ll90cmFja2VyczoKKyAgICAgICAgICAgIGlzc3VlID0gdHJh
Y2tlci5mcm9tX3N0cmluZyhzdHJpbmcpCisgICAgICAgICAgICBpZiBpc3N1ZToKKyAgICAgICAg
ICAgICAgICByZXR1cm4gaXNzdWUKKyAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIGRlZiB1c2Vy
KHNlbGYsIG5hbWU9Tm9uZSwgdXNlcm5hbWU9Tm9uZSwgZW1haWw9Tm9uZSk6CisgICAgICAgIGlm
IG5vdCBuYW1lIGFuZCBub3QgdXNlcm5hbWUgYW5kIG5vdCBlbWFpbDoKKyAgICAgICAgICAgIHJh
aXNlIFR5cGVFcnJvcignTm8gbmFtZSwgdXNlcm5hbWUgb3IgZW1haWwgZGVmaW5lZCBmb3IgdXNl
cicpCisgICAgICAgIGZvciBrZXkgaW4gW25hbWUsIHVzZXJuYW1lLCBlbWFpbF06CisgICAgICAg
ICAgICBpZiBrZXkgYW5kIHNlbGYudXNlcnMuZ2V0KGtleSk6CisgICAgICAgICAgICAgICAgcmV0
dXJuIHNlbGYudXNlcnMuZ2V0KGtleSkKKyAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIGRlZiBp
c3N1ZShzZWxmLCBpZCk6CisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoKQorCisg
ICAgZGVmIHBvcHVsYXRlKHNlbGYsIGlzc3VlLCBtZW1iZXI9Tm9uZSk6CisgICAgICAgIHJhaXNl
IE5vdEltcGxlbWVudGVkRXJyb3IoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9saWJyYXJp
ZXMvd2Via2l0YnVnc3B5L3dlYmtpdGJ1Z3NweS91c2VyLnB5IGIvVG9vbHMvU2NyaXB0cy9saWJy
YXJpZXMvd2Via2l0YnVnc3B5L3dlYmtpdGJ1Z3NweS91c2VyLnB5Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ5ZTcy
ZDExMTU0NDI0OGNlN2M4ZDY4YmU4Y2NkNGI2NTY0YzJmNjUKLS0tIC9kZXYvbnVsbAorKysgYi9U
b29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRidWdzcHkvd2Via2l0YnVnc3B5L3VzZXIucHkK
QEAgLTAsMCArMSwxNzAgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0Ogor
IyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyMgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisK
K2ltcG9ydCBqc29uCitpbXBvcnQgc2l4CisKK2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlZmF1
bHRkaWN0Citmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgc3RyaW5nX3V0aWxzCisKKworY2xhc3Mg
VXNlcihvYmplY3QpOgorICAgIGNsYXNzIEVuY29kZXIoanNvbi5KU09ORW5jb2Rlcik6CisKKyAg
ICAgICAgZGVmIGRlZmF1bHQoc2VsZiwgb2JqKToKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uo
b2JqLCBkaWN0KToKKyAgICAgICAgICAgICAgICByZXR1cm4ge2tleTogc2VsZi5kZWZhdWx0KHZh
bHVlKSBmb3Iga2V5LCB2YWx1ZSBpbiBvYmouaXRlbXMoKX0KKyAgICAgICAgICAgIGlmIGlzaW5z
dGFuY2Uob2JqLCBsaXN0KToKKyAgICAgICAgICAgICAgICByZXR1cm4gW3NlbGYuZGVmYXVsdCh2
YWx1ZSkgZm9yIHZhbHVlIGluIG9ial0KKyAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG9i
aiwgVXNlcik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHN1cGVyKFVzZXIuRW5jb2Rlciwgc2Vs
ZikuZGVmYXVsdChvYmopCisKKyAgICAgICAgICAgIHJlc3VsdCA9IHt9CisgICAgICAgICAgICBp
ZiBvYmouX25hbWU6CisgICAgICAgICAgICAgICAgcmVzdWx0WyduYW1lJ10gPSBvYmouX25hbWUK
KyAgICAgICAgICAgIGlmIG9iai5lbWFpbHM6CisgICAgICAgICAgICAgICAgcmVzdWx0WydlbWFp
bHMnXSA9IG9iai5lbWFpbHMKKyAgICAgICAgICAgIGlmIG9iai51c2VybmFtZToKKyAgICAgICAg
ICAgICAgICByZXN1bHRbJ3VzZXJuYW1lJ10gPSBvYmoudXNlcm5hbWUKKworICAgICAgICAgICAg
cmV0dXJuIHJlc3VsdAorCisgICAgY2xhc3MgTWFwcGluZyhkZWZhdWx0ZGljdCk6CisgICAgICAg
IGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgICAgIHN1cGVyKFVzZXIuTWFwcGluZywgc2Vs
ZikuX19pbml0X18obGFtYmRhOiBOb25lKQorCisgICAgICAgIGRlZiBhZGQoc2VsZiwgdXNlcik6
CisgICAgICAgICAgICByZXR1cm4gc2VsZi5jcmVhdGUobmFtZT11c2VyLl9uYW1lLCB1c2VybmFt
ZT11c2VyLnVzZXJuYW1lLCBlbWFpbHM9dXNlci5lbWFpbHMpCisKKyAgICAgICAgZGVmIGNyZWF0
ZShzZWxmLCBuYW1lPU5vbmUsIHVzZXJuYW1lPU5vbmUsIGVtYWlscz1Ob25lKToKKyAgICAgICAg
ICAgIG1hdGNoZWRfa2V5ID0gTm9uZQorICAgICAgICAgICAgdXNlciA9IE5vbmUKKyAgICAgICAg
ICAgIGZvciBrZXkgaW4gW25hbWUsIHVzZXJuYW1lXSArIChlbWFpbHMgb3IgW10pOgorICAgICAg
ICAgICAgICAgIGlmIG5vdCBrZXk6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAg
ICAgICAgICAgICAgY2FuZGlkYXRlID0gc2VsZi5nZXQoa2V5KQorCisgICAgICAgICAgICAgICAg
aWYgbm90IGNhbmRpZGF0ZToKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAg
ICAgICAgICBpZiB1c2VyIGFuZCBoYXNoKHVzZXIpICE9IGhhc2goY2FuZGlkYXRlKToKKyAgICAg
ICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCIne30nIG1hdGNoZXMgJ3t9JywgYnV0
ICd7fScgYWxyZWFkeSBtYXRjaGVkICd7fSciLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGtleSwgY2FuZGlkYXRlLCBtYXRjaGVkX2tleSwgdXNlciwKKyAgICAgICAgICAgICAgICAg
ICAgKSkKKyAgICAgICAgICAgICAgICBtYXRjaGVkX2tleSA9IGtleQorICAgICAgICAgICAgICAg
IHVzZXIgPSBjYW5kaWRhdGUKKworICAgICAgICAgICAgaWYgdXNlcjoKKyAgICAgICAgICAgICAg
ICBpZiBuYW1lOgorICAgICAgICAgICAgICAgICAgICB1c2VyLl9uYW1lID0gbmFtZQorICAgICAg
ICAgICAgICAgIGlmIHVzZXJuYW1lOgorICAgICAgICAgICAgICAgICAgICB1c2VyLnVzZXJuYW1l
ID0gdXNlcm5hbWUKKyAgICAgICAgICAgICAgICBmb3IgZW1haWwgaW4gZW1haWxzIG9yIFtdOgor
ICAgICAgICAgICAgICAgICAgICBpZiBlbWFpbCBub3QgaW4gdXNlci5lbWFpbHM6CisgICAgICAg
ICAgICAgICAgICAgICAgICB1c2VyLmVtYWlscy5hcHBlbmQoZW1haWwpCisgICAgICAgICAgICBl
bHNlOgorICAgICAgICAgICAgICAgIHVzZXIgPSBVc2VyKG5hbWU9bmFtZSwgdXNlcm5hbWU9dXNl
cm5hbWUsIGVtYWlscz1lbWFpbHMpCisKKyAgICAgICAgICAgIGZvciBrZXkgaW4gW25hbWUsIHVz
ZXJuYW1lXSArIChlbWFpbHMgb3IgW10pOgorICAgICAgICAgICAgICAgIHNlbGZba2V5XSA9IHVz
ZXIKKworICAgICAgICAgICAgcmV0dXJuIHVzZXIKKworICAgICAgICBkZWYgX19pdGVyX18oc2Vs
Zik6CisgICAgICAgICAgICB5aWVsZGVkID0gc2V0KCkKKyAgICAgICAgICAgIGZvciB1c2VyIGlu
IHNlbGYudmFsdWVzKCk6CisgICAgICAgICAgICAgICAgaWYgaGFzaCh1c2VyKSBpbiB5aWVsZGVk
OgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIHlpZWxkZWQu
YWRkKGhhc2godXNlcikpCisgICAgICAgICAgICAgICAgeWllbGQgdXNlcgorCisgICAgZGVmIF9f
aW5pdF9fKHNlbGYsIG5hbWU9Tm9uZSwgdXNlcm5hbWU9Tm9uZSwgZW1haWxzPU5vbmUpOgorICAg
ICAgICBzZWxmLl9uYW1lID0gbmFtZQorICAgICAgICBzZWxmLmVtYWlscyA9IGxpc3QoZmlsdGVy
KHN0cmluZ191dGlscy5kZWNvZGUsIGVtYWlscyBvciBbXSkpCisgICAgICAgIHNlbGYudXNlcm5h
bWUgPSB1c2VybmFtZQorICAgICAgICBpZiBub3Qgc2VsZi5uYW1lOgorICAgICAgICAgICAgcmFp
c2UgVHlwZUVycm9yKCdOb3QgZW5vdWdoIGFyZ3VtZW50cyB0byBkZWZpbmUgdXNlcicpCisKKyAg
ICBAcHJvcGVydHkKKyAgICBkZWYgbmFtZShzZWxmKToKKyAgICAgICAgaWYgc2VsZi5fbmFtZToK
KyAgICAgICAgICAgIHJldHVybiBzZWxmLl9uYW1lCisgICAgICAgIGlmIHNlbGYudXNlcm5hbWUg
YW5kIGlzaW5zdGFuY2Uoc2VsZi51c2VybmFtZSwgc2l4LnN0cmluZ190eXBlcyk6CisgICAgICAg
ICAgICByZXR1cm4gc2VsZi51c2VybmFtZQorICAgICAgICBpZiBzZWxmLmVtYWlsOgorICAgICAg
ICAgICAgcmV0dXJuIHNlbGYuZW1haWwKKyAgICAgICAgaWYgc2VsZi51c2VybmFtZToKKyAgICAg
ICAgICAgIHJldHVybiBzdHIoc2VsZi51c2VybmFtZSkKKyAgICAgICAgcmV0dXJuIE5vbmUKKwor
ICAgIEBwcm9wZXJ0eQorICAgIGRlZiBlbWFpbChzZWxmKToKKyAgICAgICAgaWYgbm90IHNlbGYu
ZW1haWxzOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgcmV0dXJuIHNlbGYuZW1h
aWxzWzBdCisKKyAgICBkZWYgX19oYXNoX18oc2VsZik6CisgICAgICAgIGlmIHNlbGYudXNlcm5h
bWU6CisgICAgICAgICAgICByZXR1cm4gaGFzaChzZWxmLnVzZXJuYW1lKQorICAgICAgICBpZiBz
ZWxmLl9uYW1lOgorICAgICAgICAgICAgcmV0dXJuIGhhc2goc2VsZi5fbmFtZSkKKyAgICAgICAg
aWYgc2VsZi5lbWFpbDoKKyAgICAgICAgICAgIHJldHVybiBoYXNoKHNlbGYuZW1haWwpCisgICAg
ICAgIHJldHVybiAwCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIGFkZHJlc3Mg
PSBOb25lCisgICAgICAgIGZvciBjYW5kaWRhdGUgaW4gW3NlbGYudXNlcm5hbWUsIHNlbGYuZW1h
aWxdOgorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShjYW5kaWRhdGUsIHNpeC5zdHJpbmdfdHlw
ZXMpIGFuZCBjYW5kaWRhdGUgIT0gc2VsZi5uYW1lOgorICAgICAgICAgICAgICAgIGFkZHJlc3Mg
PSBjYW5kaWRhdGUKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBpZiBub3QgYWRkcmVz
czoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLm5hbWUKKyAgICAgICAgcmV0dXJuIHUne30gPHt9
PicuZm9ybWF0KHNlbGYubmFtZSwgYWRkcmVzcykKKworICAgIGRlZiBfX2NtcF9fKHNlbGYsIG90
aGVyKToKKyAgICAgICAgaWYgaXNpbnN0YW5jZShvdGhlciwgc3RyKToKKyAgICAgICAgICAgIHJl
Zl92YWx1ZSA9IG90aGVyCisgICAgICAgIGVsaWYgaXNpbnN0YW5jZShvdGhlciwgVXNlcik6Cisg
ICAgICAgICAgICByZWZfdmFsdWUgPSBvdGhlci51c2VybmFtZSBvciBzZWxmLm5hbWUKKyAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0Nhbm5vdCBjb21wYXJlIHt9
IHdpdGgge30nLmZvcm1hdChVc2VyLCB0eXBlKG90aGVyKSkpCisgICAgICAgIGlmIChzZWxmLnVz
ZXJuYW1lIG9yIHNlbGYubmFtZSkgPT0gcmVmX3ZhbHVlOgorICAgICAgICAgICAgcmV0dXJuIDAK
KyAgICAgICAgcmV0dXJuIDEgaWYgKHNlbGYudXNlcm5hbWUgb3Igc2VsZi5uYW1lKSA+IHJlZl92
YWx1ZSBlbHNlIC0xCisKKyAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgcmV0
dXJuIHNlbGYuX19jbXBfXyhvdGhlcikgPT0gMAorCisgICAgZGVmIF9fbmVfXyhzZWxmLCBvdGhl
cik6CisgICAgICAgIHJldHVybiBzZWxmLl9fY21wX18ob3RoZXIpICE9IDAKKworICAgIGRlZiBf
X2x0X18oc2VsZiwgb3RoZXIpOgorICAgICAgICByZXR1cm4gc2VsZi5fX2NtcF9fKG90aGVyKSA8
IDAKKworICAgIGRlZiBfX2xlX18oc2VsZiwgb3RoZXIpOgorICAgICAgICByZXR1cm4gc2VsZi5f
X2NtcF9fKG90aGVyKSA8PSAwCisKKyAgICBkZWYgX19ndF9fKHNlbGYsIG90aGVyKToKKyAgICAg
ICAgcmV0dXJuIHNlbGYuX19jbXBfXyhvdGhlcikgPiAwCisKKyAgICBkZWYgX19nZV9fKHNlbGYs
IG90aGVyKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX19jbXBfXyhvdGhlcikgPj0gMApkaWZmIC0t
Z2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90ZXN0L21haW4ucHkgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L3Rlc3QvbWFpbi5weQppbmRleCA1ZTZmMDM1YWYwNTFjZjFjMDgzYmExOGUyYWRi
OGI3MzA5NTlkMjNiLi5kODgzMjc3NzViODhmODMyNzlhODk5N2Q1YjBlYmI4OTg3OGRiNDNjIDEw
MDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rlc3QvbWFpbi5weQorKysgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3Rlc3QvbWFpbi5weQpAQCAtNjMsNiArNjMsNyBAQCBkZWYgbWFp
bigpOgogICAgIHRlc3RlciA9IFRlc3RlcigpCiAgICAgdGVzdGVyLmFkZF90cmVlKG9zLnBhdGgu
am9pbihfd2Via2l0X3Jvb3QsICdUb29scycsICdTY3JpcHRzJyksICd3ZWJraXRweScpCiAgICAg
dGVzdGVyLmFkZF90cmVlKG9zLnBhdGguam9pbihfd2Via2l0X3Jvb3QsICdUb29scycsICdTY3Jp
cHRzJywgJ2xpYnJhcmllcycsICd3ZWJraXRjb3JlcHknKSwgJ3dlYmtpdGNvcmVweScpCisgICAg
dGVzdGVyLmFkZF90cmVlKG9zLnBhdGguam9pbihfd2Via2l0X3Jvb3QsICdUb29scycsICdTY3Jp
cHRzJywgJ2xpYnJhcmllcycsICd3ZWJraXRidWdzcHknKSwgJ3dlYmtpdGJ1Z3NweScpCiAgICAg
dGVzdGVyLmFkZF90cmVlKG9zLnBhdGguam9pbihfd2Via2l0X3Jvb3QsICdUb29scycsICdTY3Jp
cHRzJywgJ2xpYnJhcmllcycsICd3ZWJraXRzY21weScpLCAnd2Via2l0c2NtcHknKQogICAgIHRl
c3Rlci5hZGRfdHJlZShvcy5wYXRoLmpvaW4oX3dlYmtpdF9yb290LCAnVG9vbHMnLCAnU2NyaXB0
cycsICdsaWJyYXJpZXMnLCAnd2Via2l0Zmxhc2tweScpLCAnd2Via2l0Zmxhc2tweScpCiAgICAg
aWYgc3lzLnZlcnNpb25faW5mbyA+ICgzLCAwKToK
</data>

          </attachment>
      

    </bug>

</bugzilla>