Files
StatusQuo_Updates/DRIVE/sync-bundle-02.txt
T

10624 lines
799 KiB
Plaintext
Raw Normal View History

2026-06-20 13:38:05 +00:00
### SYNC-TRANSFER 2/2 -- mit sync-entpacken.bat entpacken
### Base64
### FILE: index.html | 553864
PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImRlIj4KPGhlYWQ+CiAgICA8bWV0YSBjaGFyc2V0
PSJVVEYtOCI+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNl
LXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCI+CiAgICA8dGl0bGU+RC5SLkkuVi5FLiAtIFZJMyBD
bHVzdGVyPC90aXRsZT4KICAgIDxzdHlsZT4KLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgRC5S
LkkuVi5FLiBQb3J0YWwgdjEuMCAtIFN0eWxlc2hlZXQKICAgT3B0aW1pZXJ0IGZ1ZXIgMTkyMHgx
MDgwIChGdWxsIEhEKQogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKKiB7IG1hcmdpbjogMDsg
cGFkZGluZzogMDsgYm94LXNpemluZzogYm9yZGVyLWJveDsgfQoKLyogLS0tIFRoZW1lIFZhcmlh
YmxlcyAtLS0gKi8KOnJvb3QgewogICAgLS1iZy1wcmltYXJ5OiAjMWEyMzMyOwogICAgLS1iZy1w
cmltYXJ5LWRhcms6ICMxMTFkMmE7CiAgICAtLWJnLWJvZHk6ICNmNWY1ZjU7CiAgICAtLWJnLWNh
cmQ6ICNmZmZmZmY7CiAgICAtLWJnLWNhcmQtYWx0OiAjZThlY2YwOwogICAgLS1iZy10b29sYmFy
OiAjZjBmMGYwOwogICAgLS1iZy1ob3ZlcjogI2YwZjhmZjsKICAgIC0tYmctYWN0aXZlOiAjZThm
MWY3OwogICAgLS1iZy1pbnB1dDogI2ZmZmZmZjsKICAgIC0tdGV4dC1wcmltYXJ5OiAjMzMzOwog
ICAgLS10ZXh0LXNlY29uZGFyeTogIzY2NjsKICAgIC0tdGV4dC1tdXRlZDogIzk5OTsKICAgIC0t
dGV4dC1oZWFkaW5nOiAjMkU0QTYyOwogICAgLS1ib3JkZXItY29sb3I6ICNkZGQ7CiAgICAtLWJv
cmRlci1saWdodDogI2UwZTBlMDsKICAgIC0tYm9yZGVyLXN0cm9uZzogI2MwYzBjMDsKICAgIC0t
c2hhZG93LWxpZ2h0OiByZ2JhKDAsMCwwLDAuMSk7CiAgICAtLXNoYWRvdy1tZWRpdW06IHJnYmEo
MCwwLDAsMC4xNSk7CiAgICAtLXNoYWRvdy1tb2RhbDogMCAxMHB4IDQwcHggcmdiYSgwLDAsMCww
LjMpOwogICAgLS10cmFuc2l0aW9uLXN0ZDogYWxsIDAuM3M7CiAgICAtLXJhZGl1cy1zbTogNHB4
OwogICAgLS1yYWRpdXMtbW9kYWw6IDhweDsKfQoKW2RhdGEtdGhlbWU9Im5pZ2h0Il0gewogICAg
LS1iZy1wcmltYXJ5OiAjMWEyMzMyOwogICAgLS1iZy1wcmltYXJ5LWRhcms6ICMxMTE4Mjc7CiAg
ICAtLWJnLWJvZHk6ICMwZjE0MTk7CiAgICAtLWJnLWNhcmQ6ICMxYzIzMzM7CiAgICAtLWJnLWNh
cmQtYWx0OiAjMjMyYjNhOwogICAgLS1iZy10b29sYmFyOiAjMjMyYjNhOwogICAgLS1iZy1ob3Zl
cjogIzI1MzA0NTsKICAgIC0tYmctYWN0aXZlOiAjMmEzNjUwOwogICAgLS1iZy1pbnB1dDogIzFj
MjMzMzsKICAgIC0tdGV4dC1wcmltYXJ5OiAjZTBlNmVkOwogICAgLS10ZXh0LXNlY29uZGFyeTog
I2EwYWVjMDsKICAgIC0tdGV4dC1tdXRlZDogIzcxODA5NjsKICAgIC0tdGV4dC1oZWFkaW5nOiAj
N2ViOGRhOwogICAgLS1ib3JkZXItY29sb3I6ICMyZDM3NDg7CiAgICAtLWJvcmRlci1saWdodDog
IzJkMzc0ODsKICAgIC0tYm9yZGVyLXN0cm9uZzogIzRhNTU2ODsKICAgIC0tc2hhZG93LWxpZ2h0
OiByZ2JhKDAsMCwwLDAuMyk7CiAgICAtLXNoYWRvdy1tZWRpdW06IHJnYmEoMCwwLDAsMC40KTsK
ICAgIC0tc2hhZG93LW1vZGFsOiAwIDEwcHggNDBweCByZ2JhKDAsMCwwLDAuNSk7CiAgICAtLXRy
YW5zaXRpb24tc3RkOiBhbGwgMC4zczsKICAgIC0tcmFkaXVzLXNtOiA0cHg7CiAgICAtLXJhZGl1
cy1tb2RhbDogOHB4Owp9Cgpib2R5IHsKICAgIGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBC
bGlua01hY1N5c3RlbUZvbnQsICJTZWdvZSBVSSIsIFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwg
QXJpYWwsIHNhbnMtc2VyaWY7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1iZy1ib2R5KTsK
ICAgIGNvbG9yOiB2YXIoLS10ZXh0LXByaW1hcnkpOwogICAgZGlzcGxheTogZmxleDsKICAgIGZs
ZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICBoZWlnaHQ6IDEwMHZoOwogICAgb3ZlcmZsb3c6IGhp
ZGRlbjsKICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4zcywgY29sb3IgMC4zczsK
fQoKLyogLS0tIEhlYWRlciAtLS0gKi8KaGVhZGVyIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZh
cigtLWJnLXByaW1hcnkpOwogICAgY29sb3I6IHdoaXRlOwogICAgYm94LXNoYWRvdzogMCAycHgg
NHB4IHZhcigtLXNoYWRvdy1saWdodCk7CiAgICBmbGV4LXNocmluazogMDsKICAgIHotaW5kZXg6
IDEwMDsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAganVz
dGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgcGFkZGluZzogMTZweCAzMnB4OwogICAg
dHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjNzOwp9CgouZHJpdmUtbG9nbyB7IHdpZHRo
OiAyMDBweDsgbWF4LXdpZHRoOiAxMDAlOyBoZWlnaHQ6IGF1dG87IH0KCi5kcml2ZS1oZWFkZXIt
Y2VudGVyIHsKICAgIGZsZXg6IDE7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICB3aGl0ZS1z
cGFjZTogbm93cmFwOwp9CgouZHJpdmUtaGVhZGVyLWNlbnRlciBwIHsgZm9udC1zaXplOiAyMHB4
OyBmb250LXdlaWdodDogNTAwOyBsZXR0ZXItc3BhY2luZzogMC41cHg7IG9wYWNpdHk6IDAuOTU7
IG1hcmdpbjogMDsgfQoKLyogLS0tIFRoZW1lIFRvZ2dsZSAtLS0gKi8KLnRoZW1lLXRvZ2dsZSB7
CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwyNTUsMjU1LDAuMTUpOwogICAgYm9yZGVyOiAxcHgg
c29saWQgcmdiYSgyNTUsMjU1LDI1NSwwLjMpOwogICAgY29sb3I6IHdoaXRlOwogICAgd2lkdGg6
IDQ0cHg7CiAgICBoZWlnaHQ6IDQ0cHg7CiAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICBjdXJz
b3I6IHBvaW50ZXI7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsK
ICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgdHJhbnNpdGlvbjogdmFyKC0tdHJhbnNp
dGlvbi1zdGQpOwogICAgZmxleC1zaHJpbms6IDA7Cn0KCi50aGVtZS10b2dnbGU6aG92ZXIgeyBi
YWNrZ3JvdW5kOiByZ2JhKDI1NSwyNTUsMjU1LDAuMjUpOyB0cmFuc2Zvcm06IHNjYWxlKDEuMSk7
IH0KCi50aGVtZS10b2dnbGUgLmljb24tZGF5LCAudGhlbWUtdG9nZ2xlIC5pY29uLW5pZ2h0IHsK
ICAgIGZvbnQtc2l6ZTogMjJweDsgY29sb3I6IHdoaXRlOyB3aWR0aDogNDRweDsgaGVpZ2h0OiA0
NHB4OwogICAgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250
ZW50OiBjZW50ZXI7CiAgICBtYXJnaW4tdG9wOiAtMnB4Owp9Ci50aGVtZS10b2dnbGUgLmljb24t
ZGF5IHsgfQoudGhlbWUtdG9nZ2xlIC5pY29uLW5pZ2h0IHsgZGlzcGxheTogbm9uZTsgfQpbZGF0
YS10aGVtZT0ibmlnaHQiXSAudGhlbWUtdG9nZ2xlIC5pY29uLWRheSB7IGRpc3BsYXk6IG5vbmU7
IH0KW2RhdGEtdGhlbWU9Im5pZ2h0Il0gLnRoZW1lLXRvZ2dsZSAuaWNvbi1uaWdodCB7IGRpc3Bs
YXk6IGZsZXg7IH0KCi8qIC0tLSBDb25uZWN0aW9uIEJhciAtLS0gKi8KLmNvbm5lY3Rpb24tYmFy
IHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJnLXByaW1hcnktZGFyayk7CiAgICBjb2xv
cjogd2hpdGU7CiAgICBwYWRkaW5nOiA2cHggMzJweDsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBh
bGlnbi1pdGVtczogY2VudGVyOwogICAgZ2FwOiAxMnB4OwogICAgZm9udC1zaXplOiAxM3B4Owog
ICAgZmxleC1zaHJpbms6IDA7CiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuM3M7
Cn0KCi5jb25uZWN0aW9uLWJhciAuc3RhdHVzLWRvdCB7CiAgICB3aWR0aDogOHB4OyBoZWlnaHQ6
IDhweDsgYm9yZGVyLXJhZGl1czogNTAlOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNDQ0NDsK
ICAgIGZsZXgtc2hyaW5rOiAwOwp9CgouY29ubmVjdGlvbi1iYXIgLnN0YXR1cy1kb3QuY29ubmVj
dGVkIHsgYmFja2dyb3VuZC1jb2xvcjogIzRDQUY1MDsgfQouY29ubmVjdGlvbi1iYXIgLnN0YXR1
cy1kb3QucmVhZG9ubHkgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjZTY3ZTIyOyB9CgouY29ubmVjdGlv
bi1iYXIgYnV0dG9uIHsKICAgIHBhZGRpbmc6IDRweCAxMnB4OwogICAgYmFja2dyb3VuZDogdHJh
bnNwYXJlbnQ7CiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LDAuNCk7CiAg
ICBjb2xvcjogd2hpdGU7CiAgICBib3JkZXItcmFkaXVzOiAzcHg7CiAgICBjdXJzb3I6IHBvaW50
ZXI7CiAgICBmb250LXNpemU6IDEycHg7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4yczsKfQoKLmNv
bm5lY3Rpb24tYmFyIGJ1dHRvbjpob3ZlciB7IGJhY2tncm91bmQ6IHJnYmEoMjU1LDI1NSwyNTUs
MC4xNSk7IH0KCi5jb25uZWN0aW9uLWJhciAuc3BhY2VyIHsgZmxleDogMTsgfQoKLmNvbm5lY3Rp
b24tYmFyIC5zeW5jLWluZm8geyBvcGFjaXR5OiAwLjc7IGZvbnQtc2l6ZTogMTJweDsgfQoKLyog
LS0tIE1haW4gQ29udGFpbmVyIC0tLSAqLwptYWluIHsKICAgIHdpZHRoOiAxMDAlOwogICAgbWF4
LXdpZHRoOiAxODAwcHg7CiAgICBtYXJnaW46IDAgYXV0bzsKICAgIHBhZGRpbmc6IDE1cHggMzBw
eDsKICAgIGZsZXg6IDE7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgZmxleC1kaXJlY3Rpb246IGNv
bHVtbjsKICAgIG92ZXJmbG93OiBoaWRkZW47Cn0KCi8qIC0tLSBDb250cm9scyAtLS0gKi8KLmNv
bnRyb2xzIHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwog
ICAgZ2FwOiA4cHg7CiAgICBtYXJnaW4tYm90dG9tOiAxMnB4OwogICAgZmxleC1zaHJpbms6IDA7
Cn0KCi5jb250cm9scy1yb3ctdG9wIHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBnYXA6IDEwcHg7
CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwp9CgouY29udHJvbHMtcm93LWNhdGVnb3JpZXMgewog
ICAgZGlzcGxheTogZmxleDsKICAgIGdhcDogOHB4OwogICAgZmxleC13cmFwOiB3cmFwOwogICAg
YWxpZ24taXRlbXM6IGNlbnRlcjsKfQoKLnNlYXJjaC1ib3ggeyBmbGV4OiAxOyBtaW4td2lkdGg6
IDI1MHB4OyB9Cgouc2VhcmNoLWJveCBpbnB1dCB7CiAgICB3aWR0aDogMTAwJTsKICAgIHBhZGRp
bmc6IDhweCAxNXB4OwogICAgYm9yZGVyOiAycHggc29saWQgdmFyKC0tYm9yZGVyLWNvbG9yKTsK
ICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgIGZvbnQtc2l6ZTogMTRweDsKICAgIHRyYW5zaXRp
b246IGJvcmRlci1jb2xvciAwLjNzLCBiYWNrZ3JvdW5kLWNvbG9yIDAuM3MsIGNvbG9yIDAuM3M7
CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1iZy1pbnB1dCk7CiAgICBjb2xvcjogdmFyKC0t
dGV4dC1wcmltYXJ5KTsKfQoKLnNlYXJjaC1ib3ggaW5wdXQ6Zm9jdXMgewogICAgb3V0bGluZTog
bm9uZTsKICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGV4dC1oZWFkaW5nKTsKICAgIGJveC1zaGFk
b3c6IDAgMCA1cHggcmdiYSg0NiwgNzQsIDk4LCAwLjIpOwp9CgouZmlsdGVyLWJ1dHRvbnMsIC5z
dGF0dXMtZmlsdGVycyB7IGRpc3BsYXk6IGZsZXg7IGdhcDogOHB4OyBmbGV4LXdyYXA6IHdyYXA7
IH0KCi5maWx0ZXItYnRuIHsKICAgIHBhZGRpbmc6IDhweCAxNXB4OwogICAgYmFja2dyb3VuZC1j
b2xvcjogdmFyKC0tYmctY2FyZCk7CiAgICBib3JkZXI6IDJweCBzb2xpZCB2YXIoLS10ZXh0LWhl
YWRpbmcpOwogICAgY29sb3I6IHZhcigtLXRleHQtaGVhZGluZyk7CiAgICBib3JkZXItcmFkaXVz
OiA0cHg7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICBmb250LXdlaWdodDogNTAwOwogICAgZm9u
dC1zaXplOiAxNHB4OwogICAgdHJhbnNpdGlvbjogdmFyKC0tdHJhbnNpdGlvbi1zdGQpOwp9Cgou
ZmlsdGVyLWJ0bjpob3ZlciwgLmZpbHRlci1idG4uYWN0aXZlIHsgYmFja2dyb3VuZC1jb2xvcjog
dmFyKC0tdGV4dC1oZWFkaW5nKTsgY29sb3I6IHdoaXRlOyB9Cgouc3RhdHVzLWZpbHRlci1idG4g
ewogICAgcGFkZGluZzogOHB4IDEycHg7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1iZy1j
YXJkKTsKICAgIGJvcmRlcjogMnB4IHNvbGlkIHZhcigtLWJvcmRlci1jb2xvcik7CiAgICBib3Jk
ZXItcmFkaXVzOiA0cHg7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICBmb250LXdlaWdodDogNTAw
OwogICAgZm9udC1zaXplOiAxM3B4OwogICAgdHJhbnNpdGlvbjogdmFyKC0tdHJhbnNpdGlvbi1z
dGQpOwogICAgZGlzcGxheTogZmxleDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBnYXA6
IDVweDsKICAgIGNvbG9yOiB2YXIoLS10ZXh0LXByaW1hcnkpOwp9Cgouc3RhdHVzLWZpbHRlci1i
dG46aG92ZXIgeyBib3JkZXItY29sb3I6IHZhcigtLXRleHQtaGVhZGluZyk7IH0KLnN0YXR1cy1m
aWx0ZXItYnRuLmFjdGl2ZSB7IGJvcmRlci1jb2xvcjogdmFyKC0tdGV4dC1oZWFkaW5nKTsgYmFj
a2dyb3VuZC1jb2xvcjogdmFyKC0tdGV4dC1oZWFkaW5nKTsgY29sb3I6IHdoaXRlOyB9CgovKiAt
LS0gVHdvLUNvbHVtbiBMYXlvdXQgLS0tICovCi5jb250YWluZXIgewogICAgZGlzcGxheTogZ3Jp
ZDsKICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMzUwcHggMWZyOwogICAgZ2FwOiAyMHB4Owog
ICAgZmxleDogMTsKICAgIG92ZXJmbG93OiBoaWRkZW47Cn0KCi8qIC0tLSBMaXN0ZSAtLS0gKi8K
LmRvY3VtZW50LWxpc3QgewogICAgYmFja2dyb3VuZDogdmFyKC0tYmctY2FyZCk7CiAgICBib3Jk
ZXItcmFkaXVzOiA0cHg7CiAgICBib3gtc2hhZG93OiAwIDFweCAzcHggdmFyKC0tc2hhZG93LWxp
Z2h0KTsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICBkaXNwbGF5OiBmbGV4OwogICAgZmxleC1k
aXJlY3Rpb246IGNvbHVtbjsKICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4zczsK
fQoKLmxpc3QtaGVhZGVyIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJnLWNhcmQtYWx0
KTsKICAgIHBhZGRpbmc6IDE1cHg7CiAgICBib3JkZXItYm90dG9tOiAycHggc29saWQgdmFyKC0t
dGV4dC1oZWFkaW5nKTsKICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICBjb2xvcjogdmFyKC0tdGV4
dC1oZWFkaW5nKTsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNl
LWJldHdlZW47CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgdHJhbnNpdGlvbjogYmFja2dy
b3VuZC1jb2xvciAwLjNzOwp9CgoubGlzdC1oZWFkZXIgLmRvYy1jb3VudCB7IGZvbnQtc2l6ZTog
MTJweDsgZm9udC13ZWlnaHQ6IDQwMDsgb3BhY2l0eTogMC43OyB9CgoubGlzdC1pdGVtcyB7IG92
ZXJmbG93LXk6IGF1dG87IGZsZXg6IDE7IH0KCi5kb2N1bWVudC1pdGVtIHsKICAgIHBhZGRpbmc6
IDE2cHg7CiAgICBwYWRkaW5nLWxlZnQ6IDE2cHg7CiAgICBib3JkZXItYm90dG9tOiAxcHggc29s
aWQgdmFyKC0tYm9yZGVyLWxpZ2h0KTsKICAgIGJvcmRlci1sZWZ0OiA0cHggc29saWQgdHJhbnNw
YXJlbnQ7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICB0cmFuc2l0aW9uOiB2YXIoLS10cmFuc2l0
aW9uLXN0ZCk7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KCi5kb2N1bWVudC1pdGVtOmhvdmVy
IHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJnLWhvdmVyKTsKICAgIGJvcmRlci1sZWZ0
LWNvbG9yOiB2YXIoLS10ZXh0LWhlYWRpbmcpOwp9CgouZG9jdW1lbnQtaXRlbS5hY3RpdmUgewog
ICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYmctYWN0aXZlKTsKICAgIGJvcmRlci1sZWZ0LWNv
bG9yOiB2YXIoLS10ZXh0LWhlYWRpbmcpOwp9CgouZG9jdW1lbnQtaXRlbS5kcmFmdCB7IG9wYWNp
dHk6IDAuNzsgfQoKLmRvYy1pdGVtLXRpdGxlIHsgZm9udC13ZWlnaHQ6IDYwMDsgZm9udC1zaXpl
OiAxNXB4OyBjb2xvcjogdmFyKC0tdGV4dC1oZWFkaW5nKTsgbWFyZ2luLWJvdHRvbTogNXB4OyB9
CgouZG9jLWl0ZW0tbWV0YSB7IGRpc3BsYXk6IGZsZXg7IGdhcDogMTBweDsgZmxleC13cmFwOiB3
cmFwOyBtYXJnaW4tYm90dG9tOiA1cHg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IH0KCi5kb2MtaXRl
bS1jYXRlZ29yeSB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBiYWNrZ3JvdW5kLWNv
bG9yOiB2YXIoLS1ib3JkZXItbGlnaHQpOwogICAgcGFkZGluZzogMnB4IDhweDsKICAgIGJvcmRl
ci1yYWRpdXM6IDNweDsKICAgIGZvbnQtc2l6ZTogMTJweDsKICAgIGNvbG9yOiB2YXIoLS10ZXh0
LXNlY29uZGFyeSk7Cn0KCi5zdGF0dXMtYmFkZ2Utc21hbGwgewogICAgZGlzcGxheTogaW5saW5l
LWJsb2NrOwogICAgcGFkZGluZzogMnB4IDZweDsKICAgIGJvcmRlci1yYWRpdXM6IDNweDsKICAg
IGZvbnQtc2l6ZTogMTFweDsKICAgIGZvbnQtd2VpZ2h0OiA2MDA7Cn0KCi5kb2MtaXRlbS1kYXRl
IHsgZm9udC1zaXplOiAxMnB4OyBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7IH0KCi8qIC0tLSBE
ZXRhaWwgVmlldyAtLS0gKi8KLmRvY3VtZW50LWRldGFpbCB7CiAgICBiYWNrZ3JvdW5kOiB2YXIo
LS1iZy1jYXJkKTsKICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgIGJveC1zaGFkb3c6IDAgMXB4
IDNweCB2YXIoLS1zaGFkb3ctbGlnaHQpOwogICAgcGFkZGluZzogMzBweDsKICAgIG92ZXJmbG93
LXk6IGF1dG87CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBhbmltYXRpb246IGZhZGVJbiAwLjNzIGVh
c2UtaW47CiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuM3M7Cn0KCi5kZXRhaWwt
ZW1wdHkgewogICAgZGlzcGxheTogZmxleDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBq
dXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIGhlaWdodDogMTAwJTsKICAgIGNvbG9yOiB2YXIo
LS10ZXh0LW11dGVkKTsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKfQoKLmRldGFpbC1oZWFkZXIg
ewogICAgbWFyZ2luLWJvdHRvbTogMjBweDsKICAgIHBhZGRpbmctYm90dG9tOiAxNXB4OwogICAg
Ym9yZGVyLWJvdHRvbTogMnB4IHNvbGlkIHZhcigtLXRleHQtaGVhZGluZyk7Cn0KCi5kZXRhaWwt
dGl0bGUgeyBmb250LXNpemU6IDI4cHg7IGNvbG9yOiB2YXIoLS10ZXh0LWhlYWRpbmcpOyBtYXJn
aW4tYm90dG9tOiAxMHB4OyBmb250LXdlaWdodDogNjAwOyB9CgouZGV0YWlsLW1ldGEgeyBkaXNw
bGF5OiBmbGV4OyBnYXA6IDI1cHg7IGZsZXgtd3JhcDogd3JhcDsgZm9udC1zaXplOiAxNXB4OyBj
b2xvcjogdmFyKC0tdGV4dC1zZWNvbmRhcnkpOyB9CgoubWV0YS1pdGVtIHsgZGlzcGxheTogZmxl
eDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgfQoubWV0YS1sYWJlbCB7IGZvbnQtd2VpZ2h0OiA2
MDA7IGNvbG9yOiB2YXIoLS10ZXh0LWhlYWRpbmcpOyBtYXJnaW4tYm90dG9tOiAzcHg7IH0KCi5z
dGF0dXMtYmFkZ2UgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgcGFkZGluZzogM3B4
IDEwcHg7CiAgICBib3JkZXItcmFkaXVzOiAzcHg7CiAgICBmb250LXNpemU6IDEycHg7CiAgICBm
b250LXdlaWdodDogNjAwOwogICAgd2lkdGg6IGZpdC1jb250ZW50OwogICAgbGluZS1oZWlnaHQ6
IDEuNDsKfQoKLmRldGFpbC1jb250ZW50IHsKICAgIGZvbnQtc2l6ZTogMTVweDsKICAgIGxpbmUt
aGVpZ2h0OiAxLjY7CiAgICBjb2xvcjogdmFyKC0tdGV4dC1wcmltYXJ5KTsKICAgIG1hcmdpbjog
MTVweCAwIDI1cHggMDsKICAgIHdvcmQtd3JhcDogYnJlYWstd29yZDsKICAgIG92ZXJmbG93LXdy
YXA6IGJyZWFrLXdvcmQ7CiAgICBvdmVyZmxvdy14OiBoaWRkZW47Cn0KCi5kZXRhaWwtY29udGVu
dCBoMSB7CiAgICBmb250LXNpemU6IDI0cHg7IGNvbG9yOiB2YXIoLS10ZXh0LWhlYWRpbmcpOyBm
b250LXdlaWdodDogNzAwOwogICAgbWFyZ2luOiAyNHB4IDAgMTJweCAwOyBwYWRkaW5nOiAxMnB4
IDA7IGJvcmRlci1ib3R0b206IDNweCBzb2xpZCB2YXIoLS10ZXh0LWhlYWRpbmcpOwp9Ci5kZXRh
aWwtY29udGVudCBoMiB7CiAgICBmb250LXNpemU6IDIwcHg7IGNvbG9yOiB2YXIoLS10ZXh0LWhl
YWRpbmcpOyBmb250LXdlaWdodDogNzAwOwogICAgbWFyZ2luOiAyMHB4IDAgMTBweCAwOyBwYWRk
aW5nOiAxMHB4IDA7IGJvcmRlci1ib3R0b206IDJweCBzb2xpZCB2YXIoLS1ib3JkZXItbGlnaHQp
Owp9Ci5kZXRhaWwtY29udGVudCBoMyB7CiAgICBmb250LXNpemU6IDE3cHg7IGNvbG9yOiB2YXIo
LS10ZXh0LWhlYWRpbmcpOyBmb250LXdlaWdodDogNzAwOwogICAgbWFyZ2luOiAxNnB4IDAgOHB4
IDA7IHBhZGRpbmc6IDZweCAwOwp9Ci5kZXRhaWwtY29udGVudCBoNCB7CiAgICBmb250LXNpemU6
IDE1cHg7IGNvbG9yOiB2YXIoLS10ZXh0LWhlYWRpbmcpOyBmb250LXdlaWdodDogNjAwOwogICAg
bWFyZ2luOiAxMnB4IDAgNnB4IDA7Cn0KCi5kZXRhaWwtY29udGVudCBwIHsgbWFyZ2luOiAwIDAg
MC40ZW0gMDsgfQouZGV0YWlsLWNvbnRlbnQgKiB7IG1heC13aWR0aDogMTAwJSAhaW1wb3J0YW50
OyBvdmVyZmxvdy13cmFwOiBicmVhay13b3JkICFpbXBvcnRhbnQ7IHdvcmQtYnJlYWs6IGJyZWFr
LXdvcmQgIWltcG9ydGFudDsgfQouZGV0YWlsLWNvbnRlbnQgc3BhbiB7IHdoaXRlLXNwYWNlOiBp
bmhlcml0ICFpbXBvcnRhbnQ7IH0KLmRldGFpbC1jb250ZW50OjphZnRlciB7IGNvbnRlbnQ6ICIi
OyBkaXNwbGF5OiB0YWJsZTsgY2xlYXI6IGJvdGg7IH0KCi8qIC0tLSBBY2NvcmRpb24gKEF1Zmts
YXBwYmFyZSBUZXh0YmVyZWljaGUpIC0tLSAqLwouZHJpdmUtYWNjb3JkaW9uIHsKICAgIGJvcmRl
cjogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1saWdodCk7IGJvcmRlci1yYWRpdXM6IDhweDsKICAg
IG1hcmdpbjogNnB4IDA7IG92ZXJmbG93OiBoaWRkZW47CiAgICBiYWNrZ3JvdW5kOiAjZjBmNWZh
Owp9Ci5kcml2ZS1hY2NvcmRpb24gKyAuZHJpdmUtYWNjb3JkaW9uIHsgbWFyZ2luLXRvcDogMDsg
Ym9yZGVyLXRvcDogbm9uZTsgYm9yZGVyLXJhZGl1czogMDsgfQouZHJpdmUtYWNjb3JkaW9uOmZp
cnN0LWNoaWxkLCAuZHJpdmUtYWNjb3JkaW9uOm5vdCguZHJpdmUtYWNjb3JkaW9uICsgLmRyaXZl
LWFjY29yZGlvbikgeyBib3JkZXItcmFkaXVzOiA4cHggOHB4IDAgMDsgfQouZHJpdmUtYWNjb3Jk
aW9uOmxhc3Qtb2YtdHlwZSB7IGJvcmRlci1yYWRpdXM6IDAgMCA4cHggOHB4OyB9Ci5kcml2ZS1h
Y2NvcmRpb246b25seS1vZi10eXBlIHsgYm9yZGVyLXJhZGl1czogOHB4OyB9CltkYXRhLXRoZW1l
PSJuaWdodCJdIC5kcml2ZS1hY2NvcmRpb24geyBiYWNrZ3JvdW5kOiAjMWMyYTNhOyB9CgouZHJp
dmUtYWNjb3JkaW9uLWhlYWRlciB7CiAgICBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2Vu
dGVyOyBnYXA6IDEwcHg7CiAgICBwYWRkaW5nOiAxMXB4IDE2cHg7IGN1cnNvcjogcG9pbnRlcjsg
dXNlci1zZWxlY3Q6IG5vbmU7CiAgICBmb250LXdlaWdodDogNjAwOyBmb250LXNpemU6IDE0cHg7
IGNvbG9yOiB2YXIoLS10ZXh0LWhlYWRpbmcpOwogICAgYmFja2dyb3VuZDogI2U0ZWNmNDsgdHJh
bnNpdGlvbjogYmFja2dyb3VuZCAwLjE1czsKfQpbZGF0YS10aGVtZT0ibmlnaHQiXSAuZHJpdmUt
YWNjb3JkaW9uLWhlYWRlciB7IGJhY2tncm91bmQ6ICMyNDMwNDA7IH0KLmRyaXZlLWFjY29yZGlv
bi1oZWFkZXI6aG92ZXIgeyBiYWNrZ3JvdW5kOiAjZDhlNGYwOyB9CltkYXRhLXRoZW1lPSJuaWdo
dCJdIC5kcml2ZS1hY2NvcmRpb24taGVhZGVyOmhvdmVyIHsgYmFja2dyb3VuZDogIzJhM2E0ZTsg
fQoKLmRyaXZlLWFjY29yZGlvbi1hcnJvdyB7CiAgICBmbGV4LXNocmluazogMDsgd2lkdGg6IDE2
cHg7IGhlaWdodDogMTZweDsKICAgIGJhY2tncm91bmQ6IHVybCgnY3NzL2ljb25zL0NoZXZyb25f
YXJ0aWNsZV9jbG9zZWQucG5nJykgY2VudGVyL2NvbnRhaW4gbm8tcmVwZWF0OwogICAgdHJhbnNp
dGlvbjogdHJhbnNmb3JtIDAuMnM7Cn0KLmRyaXZlLWFjY29yZGlvbi1hcnJvdyBpbWcgeyBkaXNw
bGF5OiBub25lOyB9Ci5kcml2ZS1hY2NvcmRpb24ub3BlbiAuZHJpdmUtYWNjb3JkaW9uLWFycm93
IHsgdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpOyB9CltkYXRhLXRoZW1lPSJuaWdodCJdIC5kcml2
ZS1hY2NvcmRpb24tYXJyb3cgeyBmaWx0ZXI6IGludmVydCgxKSBicmlnaHRuZXNzKDEuNSk7IH0K
Ci5kcml2ZS1hY2NvcmRpb24tYm9keSB7CiAgICBkaXNwbGF5OiBub25lOyBwYWRkaW5nOiAxNHB4
IDE4cHg7CiAgICBmb250LXNpemU6IDE0cHg7IGxpbmUtaGVpZ2h0OiAxLjc7IGNvbG9yOiB2YXIo
LS10ZXh0LXByaW1hcnkpOwp9Ci5kcml2ZS1hY2NvcmRpb24ub3BlbiAuZHJpdmUtYWNjb3JkaW9u
LWJvZHkgeyBkaXNwbGF5OiBibG9jazsgfQouZHJpdmUtYWNjb3JkaW9uLWJvZHkgdWwsIC5kcml2
ZS1hY2NvcmRpb24tYm9keSBvbCB7IHBhZGRpbmctbGVmdDogMjBweDsgbWFyZ2luOiA2cHggMDsg
fQouZHJpdmUtYWNjb3JkaW9uLWJvZHkgbGkgeyBtYXJnaW4tYm90dG9tOiAycHg7IH0KCi8qIFN1
Yi1IZWFkZXIgaW5uZXJoYWxiIGVpbmVzIEFjY29yZGlvbnMgKEZBUS1TdGlsKSAqLwouZHJpdmUt
YWNjb3JkaW9uLXN1YiB7CiAgICBtYXJnaW46IDEwcHggMCA2cHggMDsgcGFkZGluZzogOHB4IDEy
cHg7CiAgICBiYWNrZ3JvdW5kOiAjZGNlNmYwOyBib3JkZXItcmFkaXVzOiA1cHg7IGJvcmRlci1s
ZWZ0OiAzcHggc29saWQgdmFyKC0tdGV4dC1oZWFkaW5nKTsKICAgIGZvbnQtd2VpZ2h0OiA2MDA7
IGZvbnQtc2l6ZTogMTNweDsgY29sb3I6IHZhcigtLXRleHQtaGVhZGluZyk7Cn0KW2RhdGEtdGhl
bWU9Im5pZ2h0Il0gLmRyaXZlLWFjY29yZGlvbi1zdWIgeyBiYWNrZ3JvdW5kOiAjMWUyZTQwOyB9
CgovKiAtLS0gRkFRLUJlcmVpY2ggLS0tICovCi5kcml2ZS1mYXEgewogICAgYm9yZGVyOiAxcHgg
c29saWQgdmFyKC0tYm9yZGVyLWxpZ2h0KTsgYm9yZGVyLXJhZGl1czogOHB4OwogICAgbWFyZ2lu
OiAxNnB4IDA7IG92ZXJmbG93OiBoaWRkZW47Cn0KLmRyaXZlLWZhcS1oZWFkZXIgewogICAgZGlz
cGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgZ2FwOiAxMHB4OwogICAgcGFkZGluZzog
MTJweCAxNnB4OyBmb250LXdlaWdodDogNzAwOyBmb250LXNpemU6IDE1cHg7CiAgICBjb2xvcjog
d2hpdGU7IGJhY2tncm91bmQ6IHZhcigtLXRleHQtaGVhZGluZyk7Cn0KLmRyaXZlLWZhcS1ib2R5
IHsgcGFkZGluZzogMDsgfQouZHJpdmUtZmFxLWl0ZW0geyBib3JkZXItYm90dG9tOiAxcHggc29s
aWQgdmFyKC0tYm9yZGVyLWxpZ2h0KTsgfQouZHJpdmUtZmFxLWl0ZW06bGFzdC1jaGlsZCB7IGJv
cmRlci1ib3R0b206IG5vbmU7IH0KLmRyaXZlLWZhcS1xdWVzdGlvbiB7CiAgICBkaXNwbGF5OiBm
bGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBnYXA6IDEwcHg7CiAgICBwYWRkaW5nOiAxMHB4IDE2
cHg7IGN1cnNvcjogcG9pbnRlcjsgdXNlci1zZWxlY3Q6IG5vbmU7CiAgICBmb250LXdlaWdodDog
NjAwOyBmb250LXNpemU6IDE0cHg7IGNvbG9yOiB2YXIoLS10ZXh0LWhlYWRpbmcpOwogICAgYmFj
a2dyb3VuZDogI2VkZjJmODsgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjE1czsKfQpbZGF0YS10
aGVtZT0ibmlnaHQiXSAuZHJpdmUtZmFxLXF1ZXN0aW9uIHsgYmFja2dyb3VuZDogIzFlMmEzODsg
fQouZHJpdmUtZmFxLXF1ZXN0aW9uOmhvdmVyIHsgYmFja2dyb3VuZDogI2UwZWFmNDsgfQpbZGF0
YS10aGVtZT0ibmlnaHQiXSAuZHJpdmUtZmFxLXF1ZXN0aW9uOmhvdmVyIHsgYmFja2dyb3VuZDog
IzI1MzQ0NDsgfQouZHJpdmUtZmFxLWFycm93IHsKICAgIGZsZXgtc2hyaW5rOiAwOyB3aWR0aDog
MTRweDsgaGVpZ2h0OiAxNHB4OwogICAgYmFja2dyb3VuZDogdXJsKCdjc3MvaWNvbnMvQ2hldnJv
bl9hcnRpY2xlX2Nsb3NlZC5wbmcnKSBjZW50ZXIvY29udGFpbiBuby1yZXBlYXQ7CiAgICB0cmFu
c2l0aW9uOiB0cmFuc2Zvcm0gMC4yczsKfQouZHJpdmUtZmFxLWFycm93IGltZyB7IGRpc3BsYXk6
IG5vbmU7IH0KLmRyaXZlLWZhcS1pdGVtLm9wZW4gLmRyaXZlLWZhcS1hcnJvdyB7IHRyYW5zZm9y
bTogcm90YXRlKDkwZGVnKTsgfQpbZGF0YS10aGVtZT0ibmlnaHQiXSAuZHJpdmUtZmFxLWFycm93
IHsgZmlsdGVyOiBpbnZlcnQoMSkgYnJpZ2h0bmVzcygxLjUpOyB9Ci5kcml2ZS1mYXEtYW5zd2Vy
IHsKICAgIGRpc3BsYXk6IG5vbmU7IHBhZGRpbmc6IDEwcHggMTZweCAxNHB4IDE2cHg7CiAgICBm
b250LXNpemU6IDE0cHg7IGxpbmUtaGVpZ2h0OiAxLjc7IGNvbG9yOiB2YXIoLS10ZXh0LXByaW1h
cnkpOwogICAgYmFja2dyb3VuZDogI2Y2ZjlmYzsKfQpbZGF0YS10aGVtZT0ibmlnaHQiXSAuZHJp
dmUtZmFxLWFuc3dlciB7IGJhY2tncm91bmQ6ICMxYTI0MzA7IH0KLmRyaXZlLWZhcS1pdGVtLm9w
ZW4gLmRyaXZlLWZhcS1hbnN3ZXIgeyBkaXNwbGF5OiBibG9jazsgfQouZHJpdmUtZmFxLWFuc3dl
ciB1bCwgLmRyaXZlLWZhcS1hbnN3ZXIgb2wgeyBwYWRkaW5nLWxlZnQ6IDIwcHg7IG1hcmdpbjog
NnB4IDA7IH0KCi8qIC0tLSBJbmZvYm94IChoZXJ2b3JnZWhvYmVuZXIgQmxvY2ssIHdpZSBpbmZv
LXNlY3Rpb24gYXVmIGRlciBTdGFydHNlaXRlKSAtLS0gKi8KLmRyaXZlLWluZm9ib3ggewogICAg
YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYmctY2FyZC1hbHQpOyBib3JkZXItbGVmdDogNHB4IHNv
bGlkIHZhcigtLXRleHQtaGVhZGluZyk7CiAgICBwYWRkaW5nOiAxOHB4IDIwcHg7IG1hcmdpbjog
MTRweCAwOyBib3JkZXItcmFkaXVzOiA2cHg7CiAgICBmb250LXNpemU6IDE0cHg7IGxpbmUtaGVp
Z2h0OiAxLjc7IGNvbG9yOiB2YXIoLS10ZXh0LXByaW1hcnkpOwp9Ci5kcml2ZS1pbmZvYm94IGgy
IHsgY29sb3I6IHZhcigtLXRleHQtaGVhZGluZyk7IGZvbnQtc2l6ZTogMThweDsgZm9udC13ZWln
aHQ6IDcwMDsgbWFyZ2luOiAwIDAgOHB4IDA7IH0KLmRyaXZlLWluZm9ib3ggaDMgeyBjb2xvcjog
dmFyKC0tdGV4dC1oZWFkaW5nKTsgZm9udC1zaXplOiAxNnB4OyBmb250LXdlaWdodDogNzAwOyBt
YXJnaW46IDAgMCA2cHggMDsgfQouZHJpdmUtaW5mb2JveCB1bCwgLmRyaXZlLWluZm9ib3ggb2wg
eyBtYXJnaW4tbGVmdDogMjBweDsgY29sb3I6IHZhcigtLXRleHQtc2Vjb25kYXJ5KTsgfQouZHJp
dmUtaW5mb2JveCBsaSB7IG1hcmdpbi1ib3R0b206IDZweDsgbGluZS1oZWlnaHQ6IDEuNTsgfQou
ZHJpdmUtaW5mb2JveCBzdHJvbmcgeyBjb2xvcjogdmFyKC0tdGV4dC1oZWFkaW5nKTsgfQoKLyog
LS0tIFdpY2h0aWctQmxvY2sgKGF1ZmZhZWxsaWdlIEhlcnZvcmhlYnVuZyBmdWVyIHdpY2h0aWdl
IEhpbndlaXNlKSAtLS0gKi8KLmRyaXZlLWltcG9ydGFudCB7CiAgICBib3JkZXI6IDFweCBzb2xp
ZCAjM2E3YWEzOyBib3JkZXItbGVmdDogNHB4IHNvbGlkICMxYTIzMzI7CiAgICBib3JkZXItcmFk
aXVzOiA4cHg7IG1hcmdpbjogMTRweCAwOyBvdmVyZmxvdzogaGlkZGVuOwp9Ci5kcml2ZS1pbXBv
cnRhbnQtaGVhZGVyIHsKICAgIGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGdh
cDogMTBweDsKICAgIHBhZGRpbmc6IDExcHggMTZweDsgZm9udC13ZWlnaHQ6IDcwMDsgZm9udC1z
aXplOiAxNHB4OwogICAgY29sb3I6ICNmZmY7IGJhY2tncm91bmQ6ICMxYTIzMzI7Cn0KW2RhdGEt
dGhlbWU9Im5pZ2h0Il0gLmRyaXZlLWltcG9ydGFudCB7IGJvcmRlci1jb2xvcjogIzNhN2FhMzsg
fQpbZGF0YS10aGVtZT0ibmlnaHQiXSAuZHJpdmUtaW1wb3J0YW50LWhlYWRlciB7IGNvbG9yOiAj
ZmZmOyBiYWNrZ3JvdW5kOiAjMWUzYTVmOyB9Ci5kcml2ZS1pbXBvcnRhbnQtaGVhZGVyIGltZyB7
IHdpZHRoOiAxOHB4OyBoZWlnaHQ6IDE4cHg7IGZpbHRlcjogaW52ZXJ0KDEpIGJyaWdodG5lc3Mo
Mik7IH0KW2RhdGEtdGhlbWU9Im5pZ2h0Il0gLmRyaXZlLWltcG9ydGFudC1oZWFkZXIgaW1nIHsg
ZmlsdGVyOiBpbnZlcnQoMSkgYnJpZ2h0bmVzcygyKTsgfQouZHJpdmUtaW1wb3J0YW50LWJvZHkg
ewogICAgcGFkZGluZzogMTRweCAxOHB4OyBmb250LXNpemU6IDE0cHg7IGxpbmUtaGVpZ2h0OiAx
Ljc7CiAgICBjb2xvcjogdmFyKC0tdGV4dC1wcmltYXJ5KTsgYmFja2dyb3VuZDogI2VkZjRmYjsK
fQpbZGF0YS10aGVtZT0ibmlnaHQiXSAuZHJpdmUtaW1wb3J0YW50LWJvZHkgeyBiYWNrZ3JvdW5k
OiAjMTYyYTNlOyB9Ci5kcml2ZS1pbXBvcnRhbnQtYm9keSB1bCwgLmRyaXZlLWltcG9ydGFudC1i
b2R5IG9sIHsgcGFkZGluZy1sZWZ0OiAyMHB4OyBtYXJnaW46IDZweCAwOyB9Ci5kcml2ZS1pbXBv
cnRhbnQtYm9keSBsaSB7IG1hcmdpbi1ib3R0b206IDJweDsgfQoKLyogLS0tIFRyZW5ubGluaWUg
LS0tICovCi5kcml2ZS1kaXZpZGVyIHsKICAgIGJvcmRlcjogbm9uZTsgYm9yZGVyLXRvcDogMnB4
IHNvbGlkIHZhcigtLWJvcmRlci1saWdodCk7CiAgICBtYXJnaW46IDIwcHggMDsKfQpbZGF0YS10
aGVtZT0ibmlnaHQiXSAuZHJpdmUtZGl2aWRlciB7IGJvcmRlci10b3AtY29sb3I6IHZhcigtLWJv
cmRlci1zdHJvbmcpOyB9CgovKiAtLS0gQXJ0aWtlbC1UYWJlbGxlbiAoZHJpdmUtdGFibGUpIC0t
LSAqLwouZHJpdmUtdGFibGUtd3JhcCB7IG1hcmdpbjogMTRweCAwOyBvdmVyZmxvdy14OiBhdXRv
OyB9Ci5kcml2ZS10YWJsZSB7CiAgICB3aWR0aDogMTAwJTsgYm9yZGVyLWNvbGxhcHNlOiBjb2xs
YXBzZTsgZm9udC1zaXplOiAxM3B4OwogICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYm9yZGVy
LWxpZ2h0KTsgYm9yZGVyLXJhZGl1czogNnB4Owp9Ci5kcml2ZS10YWJsZSB0aCwgLmRyaXZlLXRh
YmxlIHRkIHsKICAgIHBhZGRpbmc6IDhweCAxMnB4OyBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1i
b3JkZXItbGlnaHQpOwogICAgdGV4dC1hbGlnbjogbGVmdDsgdmVydGljYWwtYWxpZ246IHRvcDsK
fQouZHJpdmUtdGFibGUgdGggewogICAgYmFja2dyb3VuZDogI2U0ZWNmNDsgZm9udC13ZWlnaHQ6
IDYwMDsgY29sb3I6IHZhcigtLXRleHQtaGVhZGluZyk7CiAgICBmb250LXNpemU6IDEycHg7IHRl
eHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IGxldHRlci1zcGFjaW5nOiAwLjNweDsKfQpbZGF0YS10
aGVtZT0ibmlnaHQiXSAuZHJpdmUtdGFibGUgdGggeyBiYWNrZ3JvdW5kOiAjMjQzMDQwOyB9Ci5k
cml2ZS10YWJsZSB0aC5zb3J0YWJsZSB7IGN1cnNvcjogcG9pbnRlcjsgdXNlci1zZWxlY3Q6IG5v
bmU7IH0KLmRyaXZlLXRhYmxlIHRoLnNvcnRhYmxlOmhvdmVyIHsgYmFja2dyb3VuZDogI2Q4ZTRm
MDsgfQpbZGF0YS10aGVtZT0ibmlnaHQiXSAuZHJpdmUtdGFibGUgdGguc29ydGFibGU6aG92ZXIg
eyBiYWNrZ3JvdW5kOiAjMmEzYTRlOyB9Ci5kcml2ZS10YWJsZSB0aC5zb3J0LWFzYzo6YWZ0ZXIg
eyBjb250ZW50OiAnIOKWsic7IGZvbnQtc2l6ZTogMTBweDsgY29sb3I6IHZhcigtLXRleHQtbXV0
ZWQpOyB9Ci5kcml2ZS10YWJsZSB0aC5zb3J0LWRlc2M6OmFmdGVyIHsgY29udGVudDogJyDilrwn
OyBmb250LXNpemU6IDEwcHg7IGNvbG9yOiB2YXIoLS10ZXh0LW11dGVkKTsgfQouZHJpdmUtdGFi
bGUgdGQgeyBjb2xvcjogdmFyKC0tdGV4dC1wcmltYXJ5KTsgfQouZHJpdmUtdGFibGUgdGJvZHkg
dHI6bnRoLWNoaWxkKGV2ZW4pIHsgYmFja2dyb3VuZDogI2Y4ZmFmYzsgfQpbZGF0YS10aGVtZT0i
bmlnaHQiXSAuZHJpdmUtdGFibGUgdGJvZHkgdHI6bnRoLWNoaWxkKGV2ZW4pIHsgYmFja2dyb3Vu
ZDogIzFjMjgzNjsgfQouZHJpdmUtdGFibGUgdGJvZHkgdHI6aG92ZXIgeyBiYWNrZ3JvdW5kOiB2
YXIoLS1iZy1ob3Zlcik7IH0KLmRyaXZlLXRhYmxlIC5yb3ctaGVhZGVyIHsKICAgIGJhY2tncm91
bmQ6ICNlZGYyZjg7IGZvbnQtd2VpZ2h0OiA2MDA7IGNvbG9yOiB2YXIoLS10ZXh0LWhlYWRpbmcp
Owp9CltkYXRhLXRoZW1lPSJuaWdodCJdIC5kcml2ZS10YWJsZSAucm93LWhlYWRlciB7IGJhY2tn
cm91bmQ6ICMxZTJhMzg7IH0KCi8qIEFjY29yZGlvbiBpbSBFZGl0b3I6IGJlYXJiZWl0YmFyICov
Ci5kcml2ZS1hY2NvcmRpb25bY29udGVudGVkaXRhYmxlPSJmYWxzZSJdIHsgY3Vyc29yOiBkZWZh
dWx0OyB9Ci5kcml2ZS1hY2NvcmRpb24gLmRyaXZlLWFjY29yZGlvbi1ib2R5IGEgeyBjb2xvcjog
IzI1NjNlYjsgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IH0KW2RhdGEtdGhlbWU9Im5pZ2h0
Il0gLmRyaXZlLWFjY29yZGlvbiAuZHJpdmUtYWNjb3JkaW9uLWJvZHkgYSB7IGNvbG9yOiAjNjBh
NWZhOyB9CgouZGV0YWlsLWNvbnRlbnQgYSB7IGNvbG9yOiAjMjU2M2ViOyB0ZXh0LWRlY29yYXRp
b246IHVuZGVybGluZTsgdGV4dC11bmRlcmxpbmUtb2Zmc2V0OiAycHg7IH0KLmRldGFpbC1jb250
ZW50IGE6aG92ZXIgeyBjb2xvcjogIzFkNGVkODsgfQpbZGF0YS10aGVtZT0ibmlnaHQiXSAuZGV0
YWlsLWNvbnRlbnQgYSB7IGNvbG9yOiAjNjBhNWZhOyB9CltkYXRhLXRoZW1lPSJuaWdodCJdIC5k
ZXRhaWwtY29udGVudCBhOmhvdmVyIHsgY29sb3I6ICM5M2JiZmM7IH0KCi8qIC0tLSBDcm9zc2xp
bmstRXJrZW5udW5nIC0tLSAqLwouY3Jvc3NsaW5rIHsKICAgIGJvcmRlci1ib3R0b206IDEuNXB4
IGRhc2hlZCB2YXIoLS10ZXh0LWhlYWRpbmcpOwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgcG9z
aXRpb246IHJlbGF0aXZlOwogICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjE1czsKfQouY3Jv
c3NsaW5rOmhvdmVyIHsgYmFja2dyb3VuZDogdmFyKC0tYmctYWN0aXZlKTsgfQouY3Jvc3NsaW5r
LXBvcG92ZXIgewogICAgZGlzcGxheTogbm9uZTsKICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgIHot
aW5kZXg6IDkwMDA7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1jYXJkKTsKICAgIGJvcmRlcjog
MXB4IHNvbGlkIHZhcigtLWJvcmRlci1jb2xvcik7CiAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAg
ICBib3gtc2hhZG93OiAwIDZweCAyNHB4IHZhcigtLXNoYWRvdy1tZWRpdW0pOwogICAgcGFkZGlu
ZzogMTJweCAxNHB4OwogICAgd2lkdGg6IDMyMHB4OwogICAgbWF4LXdpZHRoOiA5MHZ3OwogICAg
Zm9udC1zaXplOiAxM3B4OwogICAgbGluZS1oZWlnaHQ6IDEuNTsKICAgIGNvbG9yOiB2YXIoLS10
ZXh0LXByaW1hcnkpOwogICAgcG9pbnRlci1ldmVudHM6IG5vbmU7Cn0KLmNyb3NzbGluay1wb3Bv
dmVyLnZpc2libGUgeyBkaXNwbGF5OiBibG9jazsgfQouY3Jvc3NsaW5rLXBvcG92ZXIgLnhsaW5r
LWhlYWRlciB7CiAgICBmb250LXdlaWdodDogNzAwOyBmb250LXNpemU6IDE0cHg7IGNvbG9yOiB2
YXIoLS10ZXh0LWhlYWRpbmcpOwogICAgbWFyZ2luLWJvdHRvbTogNnB4OyBkaXNwbGF5OiBmbGV4
OyBhbGlnbi1pdGVtczogY2VudGVyOyBnYXA6IDZweDsKfQouY3Jvc3NsaW5rLXBvcG92ZXIgLnhs
aW5rLWhlYWRlciAueGxpbmstaWNvbiB7IGZvbnQtc2l6ZTogMTJweDsgb3BhY2l0eTogMC42OyB9
Ci5jcm9zc2xpbmstcG9wb3ZlciAueGxpbmstbWV0YSB7CiAgICBmb250LXNpemU6IDExcHg7IGNv
bG9yOiB2YXIoLS10ZXh0LW11dGVkKTsgbWFyZ2luLWJvdHRvbTogNnB4OwogICAgZGlzcGxheTog
ZmxleDsgZ2FwOiA4cHg7IGZsZXgtd3JhcDogd3JhcDsKfQouY3Jvc3NsaW5rLXBvcG92ZXIgLnhs
aW5rLWV4Y2VycHQgewogICAgZm9udC1zaXplOiAxMnB4OyBjb2xvcjogdmFyKC0tdGV4dC1zZWNv
bmRhcnkpOyBsaW5lLWhlaWdodDogMS41OwogICAgbWF4LWhlaWdodDogNjBweDsgb3ZlcmZsb3c6
IGhpZGRlbjsKfQouY3Jvc3NsaW5rLXBvcG92ZXIgLnhsaW5rLXRhZ3MgeyBtYXJnaW4tdG9wOiA2
cHg7IGRpc3BsYXk6IGZsZXg7IGdhcDogNHB4OyBmbGV4LXdyYXA6IHdyYXA7IH0KLmNyb3NzbGlu
ay1wb3BvdmVyIC54bGluay10YWdzIHNwYW4gewogICAgZm9udC1zaXplOiAxMHB4OyBwYWRkaW5n
OiAxcHggNnB4OyBib3JkZXItcmFkaXVzOiA4cHg7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1h
Y3RpdmUpOyBjb2xvcjogdmFyKC0tdGV4dC1oZWFkaW5nKTsKfQouY3Jvc3NsaW5rLXBvcG92ZXIg
LnhsaW5rLWFjdGlvbiB7CiAgICBtYXJnaW4tdG9wOiA4cHg7IHBhZGRpbmctdG9wOiA2cHg7IGJv
cmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItbGlnaHQpOwogICAgZm9udC1zaXplOiAx
MXB4OyBjb2xvcjogdmFyKC0tdGV4dC1oZWFkaW5nKTsgcG9pbnRlci1ldmVudHM6IGF1dG87IGN1
cnNvcjogcG9pbnRlcjsKfQouY3Jvc3NsaW5rLXBvcG92ZXIgLnhsaW5rLWFjdGlvbjpob3ZlciB7
IHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyB9CgovKiAtLS0gRGlmZi1BbnNpY2h0IGZ1ZXIg
UmV2aWV3IC0tLSAqLwouZGlmZi1hZGRlZCB7IGJhY2tncm91bmQtY29sb3I6ICNkNGVkZGE7IGNv
bG9yOiAjMTU1NzI0OyBwYWRkaW5nOiAxcHggMnB4OyBib3JkZXItcmFkaXVzOiAycHg7IH0KLmRp
ZmYtcmVtb3ZlZCB7IGJhY2tncm91bmQtY29sb3I6ICNmOGQ3ZGE7IGNvbG9yOiAjNzIxYzI0OyBw
YWRkaW5nOiAxcHggMnB4OyBib3JkZXItcmFkaXVzOiAycHg7IHRleHQtZGVjb3JhdGlvbjogbGlu
ZS10aHJvdWdoOyB9CltkYXRhLXRoZW1lPSJuaWdodCJdIC5kaWZmLWFkZGVkIHsgYmFja2dyb3Vu
ZC1jb2xvcjogIzFhNDAyODsgY29sb3I6ICNhM2U0Yjg7IH0KW2RhdGEtdGhlbWU9Im5pZ2h0Il0g
LmRpZmYtcmVtb3ZlZCB7IGJhY2tncm91bmQtY29sb3I6ICM0NTFhMjA7IGNvbG9yOiAjZjBiMGI4
OyB9Ci5kaWZmLWxlZ2VuZCB7CiAgICBkaXNwbGF5OiBmbGV4OyBnYXA6IDE2cHg7IHBhZGRpbmc6
IDhweCAxNHB4OyBtYXJnaW4tYm90dG9tOiAxMnB4OwogICAgYmFja2dyb3VuZDogdmFyKC0tYmct
Y2FyZC1hbHQpOyBib3JkZXItcmFkaXVzOiA2cHg7IGZvbnQtc2l6ZTogMTJweDsgY29sb3I6IHZh
cigtLXRleHQtc2Vjb25kYXJ5KTsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1s
aWdodCk7Cn0KLmRpZmYtbGVnZW5kIHNwYW4geyBkaXNwbGF5OiBpbmxpbmUtZmxleDsgYWxpZ24t
aXRlbXM6IGNlbnRlcjsgZ2FwOiA0cHg7IH0KCi8qIC0tLSBSZXZpc2lvbnNoaXN0b3JpZSAtLS0g
Ki8KLnJldmlzaW9uLW1vZGFsIHsKICAgIGRpc3BsYXk6IG5vbmU7IHBvc2l0aW9uOiBmaXhlZDsg
dG9wOiAwOyBsZWZ0OiAwOyB3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlOwogICAgYmFja2dyb3Vu
ZDogcmdiYSgwLDAsMCwwLjYpOyB6LWluZGV4OiAxMDAwMDsganVzdGlmeS1jb250ZW50OiBjZW50
ZXI7IGFsaWduLWl0ZW1zOiBjZW50ZXI7Cn0KLnJldmlzaW9uLW1vZGFsLm9wZW4geyBkaXNwbGF5
OiBmbGV4OyB9Ci5yZXZpc2lvbi1jb250YWluZXIgewogICAgYmFja2dyb3VuZDogdmFyKC0tYmct
cHJpbWFyeSk7IGJvcmRlci1yYWRpdXM6IDhweDsgd2lkdGg6IDk1JTsgbWF4LXdpZHRoOiAxMjAw
cHg7IGhlaWdodDogODV2aDsKICAgIGRpc3BsYXk6IGdyaWQ7IGdyaWQtdGVtcGxhdGUtY29sdW1u
czogMjgwcHggMWZyOyBvdmVyZmxvdzogaGlkZGVuOwogICAgYm9yZGVyOiAxcHggc29saWQgdmFy
KC0tYm9yZGVyLWNvbG9yKTsgYm94LXNoYWRvdzogMCA4cHggMzJweCByZ2JhKDAsMCwwLDAuNCk7
Cn0KLnJldmlzaW9uLXNpZGViYXIgewogICAgYmFja2dyb3VuZDogdmFyKC0tYmctY2FyZCk7IGJv
cmRlci1yaWdodDogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1jb2xvcik7CiAgICBkaXNwbGF5OiBm
bGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBvdmVyZmxvdzogaGlkZGVuOwp9Ci5yZXZpc2lv
bi1zaWRlYmFyLWhlYWRlciB7CiAgICBwYWRkaW5nOiAxNnB4OyBib3JkZXItYm90dG9tOiAxcHgg
c29saWQgdmFyKC0tYm9yZGVyLWNvbG9yKTsKICAgIGZvbnQtd2VpZ2h0OiA3MDA7IGZvbnQtc2l6
ZTogMTRweDsgY29sb3I6IHZhcigtLXRleHQtaGVhZGluZyk7CiAgICBkaXNwbGF5OiBmbGV4OyBq
dXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47IGFsaWduLWl0ZW1zOiBjZW50ZXI7Cn0KLnJl
dmlzaW9uLXNpZGViYXItaGVhZGVyIGJ1dHRvbiB7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1j
YXJkLWFsdCk7IGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1jb2xvcik7IGNvbG9yOiB2
YXIoLS10ZXh0LXNlY29uZGFyeSk7IGN1cnNvcjogcG9pbnRlcjsKICAgIGZvbnQtc2l6ZTogMTFw
eDsgcGFkZGluZzogNHB4IDEycHg7IGJvcmRlci1yYWRpdXM6IDRweDsKfQoucmV2aXNpb24tc2lk
ZWJhci1oZWFkZXIgYnV0dG9uOmhvdmVyIHsgY29sb3I6IHZhcigtLXRleHQtaGVhZGluZyk7IGJh
Y2tncm91bmQ6IHZhcigtLWJnLWhvdmVyKTsgfQoucmV2aXNpb24tbGlzdCB7IGZsZXg6IDE7IG92
ZXJmbG93LXk6IGF1dG87IHBhZGRpbmc6IDhweDsgfQoucmV2aXNpb24taXRlbSB7CiAgICBwYWRk
aW5nOiAxMHB4IDEycHg7IGJvcmRlci1yYWRpdXM6IDZweDsgY3Vyc29yOiBwb2ludGVyOyBtYXJn
aW4tYm90dG9tOiA0cHg7CiAgICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDsgdHJhbnNp
dGlvbjogYmFja2dyb3VuZCAwLjE1cywgYm9yZGVyLWNvbG9yIDAuMTVzOwp9Ci5yZXZpc2lvbi1p
dGVtOmhvdmVyIHsgYmFja2dyb3VuZDogdmFyKC0tYmctY2FyZC1hbHQpOyB9Ci5yZXZpc2lvbi1p
dGVtLmFjdGl2ZSB7IGJhY2tncm91bmQ6IHZhcigtLWJnLWNhcmQtYWx0KTsgYm9yZGVyLWNvbG9y
OiB2YXIoLS10ZXh0LWhlYWRpbmcpOyB9Ci5yZXZpc2lvbi1pdGVtIC5yZXYtbGFiZWwgewogICAg
Zm9udC13ZWlnaHQ6IDYwMDsgZm9udC1zaXplOiAxM3B4OyBjb2xvcjogdmFyKC0tdGV4dC1oZWFk
aW5nKTsKICAgIGRpc3BsYXk6IGZsZXg7IGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjsg
YWxpZ24taXRlbXM6IGNlbnRlcjsKfQoucmV2aXNpb24taXRlbSAucmV2LWxhYmVsIC5yZXYtYmFk
Z2UgewogICAgZm9udC1zaXplOiAxMHB4OyBmb250LXdlaWdodDogNTAwOyBwYWRkaW5nOiAxcHgg
NnB4OyBib3JkZXItcmFkaXVzOiAzcHg7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS10ZXh0LWhlYWRp
bmcpOyBjb2xvcjogdmFyKC0tYmctcHJpbWFyeSk7Cn0KLnJldmlzaW9uLWl0ZW0gLnJldi1kYXRl
IHsgZm9udC1zaXplOiAxMXB4OyBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7IG1hcmdpbi10b3A6
IDJweDsgfQoucmV2aXNpb24taXRlbSAucmV2LXVzZXIgeyBmb250LXNpemU6IDExcHg7IGNvbG9y
OiB2YXIoLS10ZXh0LXNlY29uZGFyeSk7IG1hcmdpbi10b3A6IDFweDsgfQoucmV2aXNpb24tbWFp
biB7CiAgICBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBvdmVyZmxvdzog
aGlkZGVuOwp9Ci5yZXZpc2lvbi10b29sYmFyIHsKICAgIHBhZGRpbmc6IDEycHggMTZweDsgYm9y
ZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1jb2xvcik7CiAgICBkaXNwbGF5OiBm
bGV4OyBnYXA6IDhweDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgZmxleC1zaHJpbms6IDA7Cn0KLnJl
dmlzaW9uLXRvb2xiYXIgYnV0dG9uIHsKICAgIHBhZGRpbmc6IDZweCAxNHB4OyBib3JkZXI6IDFw
eCBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3IpOyBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1jYXJkKTsK
ICAgIGNvbG9yOiB2YXIoLS10ZXh0LXNlY29uZGFyeSk7IGJvcmRlci1yYWRpdXM6IDRweDsgY3Vy
c29yOiBwb2ludGVyOyBmb250LXNpemU6IDEycHg7CiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5k
IDAuMTVzLCBjb2xvciAwLjE1czsKfQoucmV2aXNpb24tdG9vbGJhciBidXR0b246aG92ZXIgeyBi
YWNrZ3JvdW5kOiB2YXIoLS1iZy1jYXJkLWFsdCk7IGNvbG9yOiB2YXIoLS10ZXh0LWhlYWRpbmcp
OyB9Ci5yZXZpc2lvbi10b29sYmFyIGJ1dHRvbi5hY3RpdmUgeyBiYWNrZ3JvdW5kOiB2YXIoLS10
ZXh0LWhlYWRpbmcpOyBjb2xvcjogdmFyKC0tYmctcHJpbWFyeSk7IGJvcmRlci1jb2xvcjogdmFy
KC0tdGV4dC1oZWFkaW5nKTsgfQoucmV2aXNpb24tdG9vbGJhciAucmV2LWluZm8geyBtYXJnaW4t
bGVmdDogYXV0bzsgZm9udC1zaXplOiAxMXB4OyBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7IH0K
LnJldmlzaW9uLWNvbnRlbnQgewogICAgZmxleDogMTsgb3ZlcmZsb3cteTogYXV0bzsgcGFkZGlu
ZzogMjBweCAyNHB4OyBmb250LXNpemU6IDE0cHg7CiAgICBsaW5lLWhlaWdodDogMS43OyBjb2xv
cjogdmFyKC0tdGV4dC1wcmltYXJ5KTsKfQoucmV2aXNpb24tY29udGVudCBhIHsgY29sb3I6IHZh
cigtLXRleHQtaGVhZGluZyk7IH0KLnJldmlzaW9uLWNvbnRlbnQgaDEsIC5yZXZpc2lvbi1jb250
ZW50IGgyLCAucmV2aXNpb24tY29udGVudCBoMywgLnJldmlzaW9uLWNvbnRlbnQgaDQgewogICAg
Y29sb3I6IHZhcigtLXRleHQtaGVhZGluZyk7Cn0KCi8qIFJldmlzaW9uLU1vZGFsOiBEYXktVGhl
bWUgT3ZlcnJpZGVzICgtLWJnLXByaW1hcnkgaXN0IGR1bmtlbCBpbiBiZWlkZW4gVGhlbWVzLCBk
YWhlciBleHBsaXppdCkgKi8KOnJvb3Q6bm90KFtkYXRhLXRoZW1lPSJuaWdodCJdKSAucmV2aXNp
b24tY29udGFpbmVyIHsgYmFja2dyb3VuZDogI2ZmZmZmZjsgfQo6cm9vdDpub3QoW2RhdGEtdGhl
bWU9Im5pZ2h0Il0pIC5yZXZpc2lvbi1zaWRlYmFyIHsgYmFja2dyb3VuZDogI2Y4ZjlmYTsgfQo6
cm9vdDpub3QoW2RhdGEtdGhlbWU9Im5pZ2h0Il0pIC5yZXZpc2lvbi1pdGVtOmhvdmVyIHsgYmFj
a2dyb3VuZDogI2U4ZWNmMDsgfQo6cm9vdDpub3QoW2RhdGEtdGhlbWU9Im5pZ2h0Il0pIC5yZXZp
c2lvbi1pdGVtLmFjdGl2ZSB7IGJhY2tncm91bmQ6ICNlOGVjZjA7IGJvcmRlci1jb2xvcjogIzJF
NEE2MjsgfQo6cm9vdDpub3QoW2RhdGEtdGhlbWU9Im5pZ2h0Il0pIC5yZXZpc2lvbi10b29sYmFy
IGJ1dHRvbiB7IGJhY2tncm91bmQ6ICNmZmZmZmY7IGJvcmRlci1jb2xvcjogI2RkZDsgY29sb3I6
ICM2NjY7IH0KOnJvb3Q6bm90KFtkYXRhLXRoZW1lPSJuaWdodCJdKSAucmV2aXNpb24tdG9vbGJh
ciBidXR0b246aG92ZXIgeyBiYWNrZ3JvdW5kOiAjZThlY2YwOyBjb2xvcjogIzMzMzsgfQo6cm9v
dDpub3QoW2RhdGEtdGhlbWU9Im5pZ2h0Il0pIC5yZXZpc2lvbi10b29sYmFyIGJ1dHRvbi5hY3Rp
dmUgeyBiYWNrZ3JvdW5kOiAjMkU0QTYyOyBjb2xvcjogI2ZmZmZmZjsgYm9yZGVyLWNvbG9yOiAj
MkU0QTYyOyB9Cjpyb290Om5vdChbZGF0YS10aGVtZT0ibmlnaHQiXSkgLnJldmlzaW9uLWl0ZW0g
LnJldi1sYWJlbCAucmV2LWJhZGdlIHsgYmFja2dyb3VuZDogIzJFNEE2MjsgY29sb3I6ICNmZmZm
ZmY7IH0KCi8qIC0tLSBBY3Rpb24gQnV0dG9ucyBpbSBEZXRhaWwgLS0tICovCi5kZXRhaWwtYWN0
aW9ucyB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgZ2FwOiA4cHg7CiAgICBmbGV4LXNocmluazog
MDsKfQoKLmRldGFpbC1hY3Rpb25zIGJ1dHRvbiB7CiAgICBwYWRkaW5nOiA4cHggMTZweDsKICAg
IGJvcmRlcjogMnB4IHNvbGlkIHZhcigtLXRleHQtaGVhZGluZyk7CiAgICBiYWNrZ3JvdW5kOiB2
YXIoLS1iZy1jYXJkKTsKICAgIGNvbG9yOiB2YXIoLS10ZXh0LWhlYWRpbmcpOwogICAgYm9yZGVy
LXJhZGl1czogNHB4OwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgZm9udC13ZWlnaHQ6IDUwMDsK
ICAgIGZvbnQtc2l6ZTogMTNweDsKICAgIHRyYW5zaXRpb246IHZhcigtLXRyYW5zaXRpb24tc3Rk
KTsKICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7Cn0KCi5kZXRhaWwtYWN0aW9ucyBidXR0b246aG92
ZXIgeyBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10ZXh0LWhlYWRpbmcpOyBjb2xvcjogd2hpdGUg
IWltcG9ydGFudDsgfQoKLmRldGFpbC1hY3Rpb25zIGJ1dHRvbi5idG4tZGFuZ2VyIHsgYm9yZGVy
LWNvbG9yOiAjZGMzNTQ1OyBjb2xvcjogI2RjMzU0NTsgfQouZGV0YWlsLWFjdGlvbnMgYnV0dG9u
LmJ0bi1kYW5nZXI6aG92ZXIgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjZGMzNTQ1OyBjb2xvcjogd2hp
dGUgIWltcG9ydGFudDsgfQoKLmRldGFpbC1hY3Rpb25zIGJ1dHRvbltzdHlsZSo9ImJvcmRlci1j
b2xvcjojM2I4MmY2Il06aG92ZXIgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjM2I4MmY2OyB9Ci5kZXRh
aWwtYWN0aW9ucyBidXR0b25bc3R5bGUqPSJib3JkZXItY29sb3I6IzI4YTc0NSJdOmhvdmVyIHsg
YmFja2dyb3VuZC1jb2xvcjogIzI4YTc0NTsgfQouZGV0YWlsLWFjdGlvbnMgYnV0dG9uW3N0eWxl
Kj0iYm9yZGVyLWNvbG9yOiNkYzM1NDUiXTpob3ZlciB7IGJhY2tncm91bmQtY29sb3I6ICNkYzM1
NDU7IH0KCi8qIC0tLSBNZWRpYSBTZWN0aW9uIC0tLSAqLwoubWVkaWEtc2VjdGlvbiB7CiAgICBt
YXJnaW4tdG9wOiAzMHB4OwogICAgcGFkZGluZy10b3A6IDIwcHg7CiAgICBib3JkZXItdG9wOiAx
cHggc29saWQgdmFyKC0tYm9yZGVyLWxpZ2h0KTsKfQoKLm1lZGlhcy1jb250YWluZXIgewogICAg
ZGlzcGxheTogZ3JpZDsKICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZmls
bCwgbWlubWF4KDI4MHB4LCAxZnIpKTsKICAgIGdhcDogMTVweDsKfQoKLm1lZGlhLWl0ZW0gewog
ICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYmctY2FyZC1hbHQpOwogICAgYm9yZGVyOiAxcHgg
c29saWQgdmFyKC0tYm9yZGVyLWxpZ2h0KTsKICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgIG92
ZXJmbG93OiBoaWRkZW47CiAgICB0cmFuc2l0aW9uOiB2YXIoLS10cmFuc2l0aW9uLXN0ZCk7Cn0K
Ci5tZWRpYS1pdGVtOmhvdmVyIHsgYm94LXNoYWRvdzogMCA0cHggOHB4IHZhcigtLXNoYWRvdy1t
ZWRpdW0pOyB9CgoubWVkaWEtaW1hZ2UgewogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDIw
MHB4OwogICAgb2JqZWN0LWZpdDogY292ZXI7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1i
b3JkZXItbGlnaHQpOwogICAgY3Vyc29yOiBwb2ludGVyOwp9CgoubWVkaWEtY29udGVudCB7IHBh
ZGRpbmc6IDEycHg7IH0KCi5tZWRpYS10eXBlLWJhZGdlIHsKICAgIGRpc3BsYXk6IGlubGluZS1i
bG9jazsKICAgIGZvbnQtc2l6ZTogMTFweDsKICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICBwYWRk
aW5nOiAzcHggOHB4OwogICAgYm9yZGVyLXJhZGl1czogMnB4OwogICAgbWFyZ2luLWJvdHRvbTog
OHB4Owp9CgoubWVkaWEtdHlwZS1iYWRnZS5pbWFnZSB7IGJhY2tncm91bmQtY29sb3I6ICNkNGVk
ZGE7IGNvbG9yOiAjMTU1NzI0OyB9Ci5tZWRpYS10eXBlLWJhZGdlLnBkZiB7IGJhY2tncm91bmQt
Y29sb3I6ICNmZmYzY2Q7IGNvbG9yOiAjODU2NDA0OyB9Ci5tZWRpYS10eXBlLWJhZGdlLnZpZGVv
IHsgYmFja2dyb3VuZC1jb2xvcjogI2NmZTJmZjsgY29sb3I6ICMwODQyOTg7IH0KW2RhdGEtdGhl
bWU9Im5pZ2h0Il0gLm1lZGlhLXR5cGUtYmFkZ2UuaW1hZ2UgeyBiYWNrZ3JvdW5kLWNvbG9yOiAj
MWE0MDI4OyBjb2xvcjogI2EzZTRiODsgfQpbZGF0YS10aGVtZT0ibmlnaHQiXSAubWVkaWEtdHlw
ZS1iYWRnZS5wZGYgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjNGEzYTFhOyBjb2xvcjogI2YwZDA4MDsg
fQpbZGF0YS10aGVtZT0ibmlnaHQiXSAubWVkaWEtdHlwZS1iYWRnZS52aWRlbyB7IGJhY2tncm91
bmQtY29sb3I6ICMxYTJhNGE7IGNvbG9yOiAjODBiMGYwOyB9CgoubWVkaWEtdGl0bGUgeyBmb250
LXdlaWdodDogNjAwOyBjb2xvcjogdmFyKC0tdGV4dC1oZWFkaW5nKTsgbWFyZ2luLWJvdHRvbTog
NXB4OyBmb250LXNpemU6IDE0cHg7IH0KLm1lZGlhLWRlc2NyaXB0aW9uIHsgZm9udC1zaXplOiAx
M3B4OyBjb2xvcjogdmFyKC0tdGV4dC1zZWNvbmRhcnkpOyBsaW5lLWhlaWdodDogMS40OyB9Cgov
KiAtLS0gRWRpdG9yIE1vZGFsIC0tLSAqLwouZWRpdG9yLW1vZGFsIHsKICAgIGRpc3BsYXk6IG5v
bmU7CiAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICB0b3A6IDA7IGxlZnQ6IDA7CiAgICB3aWR0aDog
MTAwJTsgaGVpZ2h0OiAxMDAlOwogICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLDAsMCwwLjQp
OwogICAgei1pbmRleDogMTAwMDsKICAgIG92ZXJmbG93OiBhdXRvOwogICAgcGFkZGluZzogMzBw
eCAyMHB4Owp9CgouZWRpdG9yLW1vZGFsLmFjdGl2ZSB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAg
YWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwp9CgouZWRp
dG9yLW1vZGFsLWNvbnRlbnQgewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYmctY2FyZCk7
CiAgICB3aWR0aDogOTAlOwogICAgbWF4LXdpZHRoOiAxNDAwcHg7CiAgICBoZWlnaHQ6IDkyJTsK
ICAgIGRpc3BsYXk6IGZsZXg7CiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgYm9yZGVy
LXJhZGl1czogOHB4OwogICAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LW1vZGFsKTsKfQoKLmVk
aXRvci1tb2RhbC1oZWFkZXIgewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYmctcHJpbWFy
eSk7CiAgICBjb2xvcjogd2hpdGU7CiAgICBwYWRkaW5nOiAxNXB4IDMwcHg7CiAgICBkaXNwbGF5
OiBmbGV4OwogICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgYWxpZ24taXRl
bXM6IGNlbnRlcjsKICAgIGJvcmRlci1yYWRpdXM6IDhweCA4cHggMCAwOwp9CgouZWRpdG9yLW1v
ZGFsLWhlYWRlciBoMiB7IG1hcmdpbjogMDsgZm9udC1zaXplOiAyMHB4OyB9CgouZWRpdG9yLW1v
ZGFsLWhlYWRlciBidXR0b24gewogICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAg
ICBjb2xvcjogd2hpdGU7CiAgICBib3JkZXI6IDFweCBzb2xpZCB3aGl0ZTsKICAgIHBhZGRpbmc6
IDhweCAxNXB4OwogICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgY3Vyc29yOiBwb2ludGVyOwog
ICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgIHRyYW5zaXRpb246IHZhcigtLXRyYW5zaXRpb24tc3Rk
KTsKfQoKLmVkaXRvci1tb2RhbC1oZWFkZXIgYnV0dG9uOmhvdmVyIHsgYmFja2dyb3VuZC1jb2xv
cjogd2hpdGU7IGNvbG9yOiAjMkU0QTYyOyB9CgouZWRpdG9yLW1ldGEtcm93IHsKICAgIGJhY2tn
cm91bmQtY29sb3I6IHZhcigtLWJnLWNhcmQtYWx0KTsKICAgIHBhZGRpbmc6IDEwcHggMzBweDsK
ICAgIGRpc3BsYXk6IGZsZXg7CiAgICBnYXA6IDEycHg7CiAgICBhbGlnbi1pdGVtczogY2VudGVy
OwogICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1saWdodCk7CiAgICBm
bGV4LXdyYXA6IG5vd3JhcDsKICAgIG92ZXJmbG93LXg6IGF1dG87Cn0KCi5lZGl0b3ItbWV0YS1y
b3cgbGFiZWwgeyBmb250LXdlaWdodDogNjAwOyBjb2xvcjogdmFyKC0tdGV4dC1oZWFkaW5nKTsg
Zm9udC1zaXplOiAxM3B4OyB3aGl0ZS1zcGFjZTogbm93cmFwOyB9CgouZWRpdG9yLW1ldGEtcm93
IGlucHV0LAouZWRpdG9yLW1ldGEtcm93IHNlbGVjdCB7CiAgICBwYWRkaW5nOiA2cHggMTBweDsK
ICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1zdHJvbmcpOwogICAgYm9yZGVyLXJh
ZGl1czogNHB4OwogICAgZm9udC1zaXplOiAxM3B4OwogICAgYmFja2dyb3VuZC1jb2xvcjogdmFy
KC0tYmctaW5wdXQpOwogICAgY29sb3I6IHZhcigtLXRleHQtcHJpbWFyeSk7Cn0KCi5lZGl0b3It
bWV0YS1yb3cgaW5wdXQjZWRpdG9yVGl0ZWwgeyBmbGV4OiAxOyBtaW4td2lkdGg6IDE2MHB4OyB9
Ci5lZGl0b3ItbWV0YS1yb3cgc2VsZWN0I2VkaXRvclBhcmVudCB7IG1heC13aWR0aDogMTYwcHg7
IH0KCi5lZGl0b3ItbW9kYWwtYm9keSB7CiAgICBmbGV4OiAxOwogICAgb3ZlcmZsb3cteTogYXV0
bzsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwp9CgouZWRp
dG9yLXRvb2xiYXIgewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYmctdG9vbGJhcik7CiAg
ICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLXN0cm9uZyk7CiAgICBwYWRk
aW5nOiAwOwogICAgZGlzcGxheTogZmxleDsKICAgIGZsZXgtd3JhcDogd3JhcDsKfQoKLmVkaXRv
ci10b29sYmFyIGJ1dHRvbiB7CiAgICBwYWRkaW5nOiA2cHggMTBweDsKICAgIGJvcmRlcjogbm9u
ZTsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLXRvb2xiYXIpOwogICAgY29sb3I6IHZhcigtLXRl
eHQtcHJpbWFyeSk7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICBmb250LXdlaWdodDogNDAwOwog
ICAgZm9udC1zaXplOiAxM3B4OwogICAgdHJhbnNpdGlvbjogYWxsIDAuMTVzOwogICAgYm9yZGVy
LXJpZ2h0OiAxcHggc29saWQgdmFyKC0tYm9yZGVyLXN0cm9uZyk7CiAgICBsaW5lLWhlaWdodDog
MTsKICAgIG1pbi1oZWlnaHQ6IDMycHg7Cn0KCi5lZGl0b3ItdG9vbGJhciBidXR0b246aG92ZXIg
eyBiYWNrZ3JvdW5kOiB2YXIoLS1ib3JkZXItbGlnaHQpOyB9CltkYXRhLXRoZW1lPSJuaWdodCJd
IC5lZGl0b3ItdG9vbGJhciBidXR0b24gaW1nIHsgZmlsdGVyOiBpbnZlcnQoMSkgYnJpZ2h0bmVz
cygxLjUpOyB9CgouZWRpdG9yLXRvb2xiYXIgc2VsZWN0IHsKICAgIHBhZGRpbmc6IDZweCA4cHg7
CiAgICBib3JkZXI6IG5vbmU7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy10b29sYmFyKTsKICAg
IGNvbG9yOiB2YXIoLS10ZXh0LXByaW1hcnkpOwogICAgbWFyZ2luOiAwIDRweDsKICAgIGhlaWdo
dDogMzJweDsKICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICNjMGMwYzA7Cn0KCi50b29sYmFy
LXNlcGFyYXRvciB7CiAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjYzBjMGMwOwogICAgbWFy
Z2luOiAwIDRweDsKICAgIGhlaWdodDogMzJweDsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsK
fQoKLmNvbG9yLXN3YXRjaCB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICB3aWR0aDog
MTZweDsgaGVpZ2h0OiAxNnB4OwogICAgYm9yZGVyOiAxcHggc29saWQgIzk5OTsKICAgIGJvcmRl
ci1yYWRpdXM6IDJweDsKICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7Cn0KCi5lZGl0b3ItYXJl
YSB7IGZsZXg6IDE7IHBhZGRpbmc6IDIwcHg7IG92ZXJmbG93LXk6IGF1dG87IH0KCi5lZGl0b3It
aW5wdXQgewogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBtaW4taGVpZ2h0
OiA0MDBweDsKICAgIHBhZGRpbmc6IDIwcHg7CiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1i
b3JkZXItY29sb3IpOwogICAgZm9udC1mYW1pbHk6IEFyaWFsLCBzYW5zLXNlcmlmOwogICAgZm9u
dC1zaXplOiAxNXB4OwogICAgbGluZS1oZWlnaHQ6IDEuNzsKICAgIGJvcmRlci1yYWRpdXM6IDRw
eDsKICAgIG91dGxpbmU6IG5vbmU7CiAgICByZXNpemU6IG5vbmU7CiAgICB3aGl0ZS1zcGFjZTog
bm9ybWFsOwogICAgd29yZC13cmFwOiBicmVhay13b3JkOwogICAgb3ZlcmZsb3cteTogYXV0bzsK
ICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJnLWlucHV0KTsKICAgIGNvbG9yOiB2YXIoLS10
ZXh0LXByaW1hcnkpOwp9CgouZWRpdG9yLWlucHV0OmZvY3VzIHsgYm9yZGVyLWNvbG9yOiB2YXIo
LS10ZXh0LWhlYWRpbmcpOyBib3gtc2hhZG93OiAwIDAgNXB4IHJnYmEoNDYsIDc0LCA5OCwgMC4y
KTsgfQoKLmVkaXRvci1pbnB1dCBoMSB7CiAgICBmb250LXNpemU6IDI0cHg7IGNvbG9yOiB2YXIo
LS10ZXh0LWhlYWRpbmcpOyBmb250LXdlaWdodDogNzAwOwogICAgbWFyZ2luOiAyNHB4IDAgMTJw
eCAwOyBwYWRkaW5nOiAxMnB4IDA7IGJvcmRlci1ib3R0b206IDNweCBzb2xpZCB2YXIoLS10ZXh0
LWhlYWRpbmcpOyBkaXNwbGF5OiBibG9jazsKfQouZWRpdG9yLWlucHV0IGgyIHsKICAgIGZvbnQt
c2l6ZTogMjBweDsgY29sb3I6IHZhcigtLXRleHQtaGVhZGluZyk7IGZvbnQtd2VpZ2h0OiA3MDA7
CiAgICBtYXJnaW46IDIwcHggMCAxMHB4IDA7IHBhZGRpbmc6IDEwcHggMDsgYm9yZGVyLWJvdHRv
bTogMnB4IHNvbGlkIHZhcigtLWJvcmRlci1saWdodCk7IGRpc3BsYXk6IGJsb2NrOwp9Ci5lZGl0
b3ItaW5wdXQgaDMgewogICAgZm9udC1zaXplOiAxN3B4OyBjb2xvcjogdmFyKC0tdGV4dC1oZWFk
aW5nKTsgZm9udC13ZWlnaHQ6IDcwMDsKICAgIG1hcmdpbjogMTZweCAwIDhweCAwOyBwYWRkaW5n
OiA2cHggMDsgZGlzcGxheTogYmxvY2s7Cn0KLmVkaXRvci1pbnB1dCBoNCB7CiAgICBmb250LXNp
emU6IDE1cHg7IGNvbG9yOiB2YXIoLS10ZXh0LWhlYWRpbmcpOyBmb250LXdlaWdodDogNjAwOwog
ICAgbWFyZ2luOiAxMnB4IDAgNnB4IDA7IGRpc3BsYXk6IGJsb2NrOwp9CgouZWRpdG9yLWlucHV0
IHAgeyBtYXJnaW46IDAgMCAwLjRlbSAwOyB9Ci5lZGl0b3ItaW5wdXQgKiB7IGZvbnQtZmFtaWx5
OiBBcmlhbCwgc2Fucy1zZXJpZjsgbGluZS1oZWlnaHQ6IDEuNjsgYm94LXNpemluZzogYm9yZGVy
LWJveDsgfQoKLmVkaXRvci1mb290ZXIgewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYmct
Y2FyZC1hbHQpOwogICAgcGFkZGluZzogMTVweCAzMHB4OwogICAgZGlzcGxheTogZmxleDsKICAg
IGdhcDogMTBweDsKICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7CiAgICBib3JkZXItdG9w
OiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWNvbG9yKTsKICAgIGJvcmRlci1yYWRpdXM6IDAgMCA4
cHggOHB4Owp9CgouZWRpdG9yLWZvb3RlciBidXR0b24gewogICAgcGFkZGluZzogMTBweCAyMHB4
OwogICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tdGV4dC1oZWFkaW5nKTsKICAgIGJhY2tncm91
bmQtY29sb3I6IHZhcigtLWJnLWNhcmQpOwogICAgY29sb3I6IHZhcigtLXRleHQtaGVhZGluZyk7
CiAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICBmb250LXdl
aWdodDogNjAwOwogICAgdHJhbnNpdGlvbjogdmFyKC0tdHJhbnNpdGlvbi1zdGQpOwp9CgouZWRp
dG9yLWZvb3RlciBidXR0b246aG92ZXIgeyBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10ZXh0LWhl
YWRpbmcpOyBjb2xvcjogd2hpdGU7IH0KCi5lZGl0b3ItZm9vdGVyIGJ1dHRvbi5zYXZlLWJ0biB7
IGJhY2tncm91bmQtY29sb3I6ICMyZDlkNzg7IGNvbG9yOiB3aGl0ZTsgYm9yZGVyLWNvbG9yOiAj
MmQ5ZDc4OyB9Ci5lZGl0b3ItZm9vdGVyIGJ1dHRvbi5zYXZlLWJ0bjpob3ZlciB7IGJhY2tncm91
bmQtY29sb3I6ICMxZTdhNWY7IGJvcmRlci1jb2xvcjogIzFlN2E1ZjsgfQoKLyogLS0tIE1lZGlh
IFVwbG9hZCBpbSBFZGl0b3IgLS0tICovCi5tZWRpYS11cGxvYWQtem9uZSB7CiAgICBib3JkZXI6
IDJweCBkYXNoZWQgdmFyKC0tYm9yZGVyLXN0cm9uZyk7CiAgICBib3JkZXItcmFkaXVzOiA4cHg7
CiAgICBwYWRkaW5nOiAyMHB4OwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgbWFyZ2luOiAx
MHB4IDA7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICB0cmFuc2l0aW9uOiB2YXIoLS10cmFuc2l0
aW9uLXN0ZCk7CiAgICBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7Cn0KCi5tZWRpYS11cGxvYWQt
em9uZTpob3ZlciwgLm1lZGlhLXVwbG9hZC16b25lLmRyYWdvdmVyIHsKICAgIGJvcmRlci1jb2xv
cjogdmFyKC0tdGV4dC1oZWFkaW5nKTsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJnLWhv
dmVyKTsKICAgIGNvbG9yOiB2YXIoLS10ZXh0LWhlYWRpbmcpOwp9CgovKiAtLS0gTWVkaWEgTW9k
YWwgKHplbnRyaWVydCwgbmljaHQgVm9sbGJpbGQpIC0tLSAqLwoubWVkaWEtbW9kYWwgewogICAg
ZGlzcGxheTogbm9uZTsKICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgIHotaW5kZXg6IDEwMDAwOwog
ICAgbGVmdDogMDsgdG9wOiAwOwogICAgd2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJTsKICAgIGJh
Y2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC41KTsKfQoKLm1lZGlhLW1vZGFsLWNvbnRl
bnQgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiA1MCU7IGxlZnQ6IDUwJTsKICAg
IHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpOwogICAgYmFja2dyb3VuZDogdmFyKC0t
YmctY2FyZCwgI2ZmZik7CiAgICBib3JkZXItcmFkaXVzOiAxMHB4OwogICAgYm94LXNoYWRvdzog
dmFyKC0tc2hhZG93LW1vZGFsKTsKICAgIHBhZGRpbmc6IDIwcHg7CiAgICBtYXgtd2lkdGg6IDkw
MHB4OwogICAgd2lkdGg6IDkwJTsKICAgIG1heC1oZWlnaHQ6IDg1dmg7CiAgICBvdmVyZmxvdzog
aGlkZGVuOwogICAgZGlzcGxheTogZmxleDsKICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAg
ICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgZ2FwOiAxMnB4Owp9CgoubWVkaWEtbW9kYWwtY2xv
c2UgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiAxMHB4OyByaWdodDogMTBweDsK
ICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLWNhcmQtYWx0LCAjZWVlKTsKICAgIGNvbG9yOiB2YXIo
LS10ZXh0LXNlY29uZGFyeSwgIzY2Nik7CiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ib3Jk
ZXItY29sb3IsICNkZGQpOwogICAgZm9udC1zaXplOiAxMnB4OyBmb250LXdlaWdodDogNjAwOwog
ICAgY3Vyc29yOiBwb2ludGVyOwogICAgcGFkZGluZzogNXB4IDE0cHg7CiAgICBib3JkZXItcmFk
aXVzOiA0cHg7CiAgICB0cmFuc2l0aW9uOiB2YXIoLS10cmFuc2l0aW9uLXN0ZCk7CiAgICB6LWlu
ZGV4OiAxMDAwMTsKfQoKLm1lZGlhLW1vZGFsLWNsb3NlOmhvdmVyIHsgYmFja2dyb3VuZDogdmFy
KC0tdGV4dC1oZWFkaW5nKTsgY29sb3I6IHdoaXRlOyBib3JkZXItY29sb3I6IHZhcigtLXRleHQt
aGVhZGluZyk7IH0KCiNtZWRpYU1vZGFsQ29udGFpbmVyIHsKICAgIG1heC13aWR0aDogMTAwJTsg
d2lkdGg6IDEwMCU7CiAgICBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBh
bGlnbi1pdGVtczogY2VudGVyOyBnYXA6IDEwcHg7CiAgICBmbGV4OiAxOyBtaW4taGVpZ2h0OiAw
Owp9CiNtZWRpYU1vZGFsQ29udGFpbmVyIGltZyB7IG1heC13aWR0aDogMTAwJTsgbWF4LWhlaWdo
dDogNTV2aDsgb2JqZWN0LWZpdDogY29udGFpbjsgYm9yZGVyLXJhZGl1czogNnB4OyBjdXJzb3I6
IHpvb20taW47IH0KI21lZGlhTW9kYWxDb250YWluZXIgaW1nLnpvb21lZCB7IG1heC1oZWlnaHQ6
IG5vbmU7IG1heC13aWR0aDogbm9uZTsgY3Vyc29yOiB6b29tLW91dDsgfQoubWVkaWEtbW9kYWwt
dG9vbGJhciB7CiAgICBkaXNwbGF5OiBmbGV4OyBnYXA6IDhweDsgYWxpZ24taXRlbXM6IGNlbnRl
cjsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IGZsZXgtd3JhcDogd3JhcDsKICAgIHBhZGRpbmct
dG9wOiA4cHg7IGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItbGlnaHQsICNlMGUw
ZTApOwogICAgd2lkdGg6IDEwMCU7Cn0KLm1lZGlhLW1vZGFsLXRvb2xiYXIgYnV0dG9uLCAubWVk
aWEtbW9kYWwtdG9vbGJhciBhIHsKICAgIHBhZGRpbmc6IDZweCAxNHB4OyBib3JkZXItcmFkaXVz
OiA0cHg7IGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1zdHJvbmcsICNjMGMwYzApOwog
ICAgYmFja2dyb3VuZDogdmFyKC0tYmctY2FyZC1hbHQsICNmMGYwZjApOyBjb2xvcjogdmFyKC0t
dGV4dC1wcmltYXJ5LCAjMzMzKTsgY3Vyc29yOiBwb2ludGVyOyBmb250LXNpemU6IDEycHg7CiAg
ICB0ZXh0LWRlY29yYXRpb246IG5vbmU7IHRyYW5zaXRpb246IHZhcigtLXRyYW5zaXRpb24tc3Rk
KTsKfQoubWVkaWEtbW9kYWwtdG9vbGJhciBidXR0b246aG92ZXIsIC5tZWRpYS1tb2RhbC10b29s
YmFyIGE6aG92ZXIgeyBiYWNrZ3JvdW5kOiB2YXIoLS10ZXh0LWhlYWRpbmcpOyBjb2xvcjogd2hp
dGU7IGJvcmRlci1jb2xvcjogdmFyKC0tdGV4dC1oZWFkaW5nKTsgfQoubWVkaWEtbW9kYWwtdGl0
bGUgewogICAgY29sb3I6IHZhcigtLXRleHQtaGVhZGluZywgIzJFNEE2Mik7IGZvbnQtc2l6ZTog
MTRweDsgZm9udC13ZWlnaHQ6IDYwMDsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsgd2lkdGg6IDEw
MCU7IHBhZGRpbmctYm90dG9tOiA4cHg7CiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFy
KC0tYm9yZGVyLWxpZ2h0LCAjZTBlMGUwKTsKICAgIG92ZXJmbG93OiBoaWRkZW47IHRleHQtb3Zl
cmZsb3c6IGVsbGlwc2lzOyB3aGl0ZS1zcGFjZTogbm93cmFwOwp9CgovKiAtLS0gTm90aWZpY2F0
aW9uIFRvYXN0IC0tLSAqLwoudG9hc3QgewogICAgcG9zaXRpb246IGZpeGVkOwogICAgYm90dG9t
OiA4MHB4OwogICAgcmlnaHQ6IDMwcHg7CiAgICBwYWRkaW5nOiAxMnB4IDIwcHg7CiAgICBib3Jk
ZXItcmFkaXVzOiA2cHg7CiAgICBjb2xvcjogd2hpdGU7CiAgICBmb250LXNpemU6IDE0cHg7CiAg
ICB6LWluZGV4OiA5OTk5OwogICAgb3BhY2l0eTogMDsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRl
WSgyMHB4KTsKICAgIHRyYW5zaXRpb246IHZhcigtLXRyYW5zaXRpb24tc3RkKTsKICAgIG1heC13
aWR0aDogNDAwcHg7CiAgICBib3gtc2hhZG93OiAwIDRweCAxMnB4IHJnYmEoMCwwLDAsMC4zKTsK
fQoKLnRvYXN0LnNob3cgeyBvcGFjaXR5OiAxOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7IH0K
LnRvYXN0LnN1Y2Nlc3MgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjMmQ5ZDc4OyB9Ci50b2FzdC5lcnJv
ciB7IGJhY2tncm91bmQtY29sb3I6ICNkYzM1NDU7IH0KLnRvYXN0LmluZm8geyBiYWNrZ3JvdW5k
LWNvbG9yOiAjMkU0QTYyOyB9Ci50b2FzdC53YXJuaW5nIHsgYmFja2dyb3VuZC1jb2xvcjogI2U2
N2UyMjsgfQoKLyogLS0tIFNhdmUtSGlnaGxpZ2h0IEFuaW1hdGlvbiAtLS0gKi8KQGtleWZyYW1l
cyBoaWdobGlnaHRGYWRlIHsKICAgIDAlICAgeyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDQ1LCAx
NTcsIDEyMCwgMC4zNSk7IH0KICAgIDEwMCUgeyBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVu
dDsgfQp9Ci5kb2N1bWVudC1pdGVtLmhpZ2hsaWdodC1zYXZlZCB7CiAgICBhbmltYXRpb246IGhp
Z2hsaWdodEZhZGUgMS44cyBlYXNlLW91dDsKfQoKLyogLS0tIEZvb3RlciAtLS0gKi8KZm9vdGVy
IHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJnLXByaW1hcnkpOwogICAgYm9yZGVyLXRv
cDogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1jb2xvcik7CiAgICBwYWRkaW5nOiAxMnB4IDMwcHg7
CiAgICBkaXNwbGF5OiBmbGV4OwogICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwog
ICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGZvbnQtc2l6ZTogMTJweDsKICAgIGNvbG9yOiB3
aGl0ZTsKICAgIGZsZXgtc2hyaW5rOiAwOwogICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xv
ciAwLjNzOwp9Cgpmb290ZXIgYSB7IGNvbG9yOiByZ2JhKDI1NSwyNTUsMjU1LDAuOCk7IHRleHQt
ZGVjb3JhdGlvbjogbm9uZTsgY3Vyc29yOiBwb2ludGVyOyB9CmZvb3RlciBhOmhvdmVyIHsgY29s
b3I6IHdoaXRlOyB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsgfQouZm9vdGVyLXJpZ2h0IHsg
ZGlzcGxheTogZmxleDsgZ2FwOiAxNnB4OyBhbGlnbi1pdGVtczogY2VudGVyOyB9Ci5mb290ZXIt
c3luYy1zdGF0dXMgeyBmb250LXNpemU6IDExcHg7IG9wYWNpdHk6IDA7IHRyYW5zaXRpb246IG9w
YWNpdHkgMS4ycyBlYXNlLWluLW91dDsgbWluLXdpZHRoOiAxMjBweDsgdGV4dC1hbGlnbjogcmln
aHQ7IGNvbG9yOiByZ2JhKDI1NSwyNTUsMjU1LDAuNyk7IH0KLmZvb3Rlci1zeW5jLXN0YXR1cy52
aXNpYmxlIHsgb3BhY2l0eTogMTsgfQoKLmZvb3Rlci12ZXJzaW9uIHsgY3Vyc29yOiBwb2ludGVy
OyBvcGFjaXR5OiAwLjg7IHRyYW5zaXRpb246IG9wYWNpdHkgMC4yczsgfQouZm9vdGVyLXZlcnNp
b246aG92ZXIgeyBvcGFjaXR5OiAxOyB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsgfQoKLyog
LS0tIFZlcnNpb25zaGlzdG9yaWUgTW9kYWwgLS0tICovCi52ZXJzaW9uLW1vZGFsIHsKICAgIGRp
c3BsYXk6IG5vbmU7CiAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICB0b3A6IDA7IGxlZnQ6IDA7CiAg
ICB3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlOwogICAgYmFja2dyb3VuZDogcmdiYSgwLDAsMCww
LjUpOwogICAgei1pbmRleDogMjAwMDsKfQoKLnZlcnNpb24tbW9kYWwuYWN0aXZlIHsgZGlzcGxh
eTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IH0K
Ci52ZXJzaW9uLW1vZGFsLWNvbnRlbnQgewogICAgYmFja2dyb3VuZDogdmFyKC0tYmctY2FyZCk7
CiAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICB3aWR0aDogNTIwcHg7CiAgICBtYXgtd2lkdGg6
IDk1JTsKICAgIG1heC1oZWlnaHQ6IDgwdmg7CiAgICBvdmVyZmxvdy15OiBhdXRvOwogICAgYm94
LXNoYWRvdzogdmFyKC0tc2hhZG93LW1vZGFsKTsKfQoKLnZlcnNpb24tbW9kYWwtaGVhZGVyIHsK
ICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLXByaW1hcnkpOwogICAgY29sb3I6IHdoaXRlOwogICAg
cGFkZGluZzogMTVweCAyMHB4OwogICAgYm9yZGVyLXJhZGl1czogOHB4IDhweCAwIDA7CiAgICBk
aXNwbGF5OiBmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47IGFsaWduLWl0ZW1z
OiBjZW50ZXI7CiAgICBmb250LXdlaWdodDogNjAwOyBmb250LXNpemU6IDE2cHg7Cn0KCi52ZXJz
aW9uLW1vZGFsLWhlYWRlciBidXR0b24gewogICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7IGJv
cmRlcjogMXB4IHNvbGlkIHdoaXRlOyBjb2xvcjogd2hpdGU7CiAgICBwYWRkaW5nOiA0cHggMTJw
eDsgYm9yZGVyLXJhZGl1czogNHB4OyBjdXJzb3I6IHBvaW50ZXI7Cn0KCi52ZXJzaW9uLW1vZGFs
LWJvZHkgeyBwYWRkaW5nOiAyMHB4OyB9CgoudmVyc2lvbi1pdGVtIHsKICAgIGRpc3BsYXk6IGZs
ZXg7CiAgICBnYXA6IDEycHg7CiAgICBwYWRkaW5nOiAxMHB4IDA7CiAgICBib3JkZXItYm90dG9t
OiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWNvbG9yKTsKICAgIGZvbnQtc2l6ZTogMTNweDsKICAg
IGNvbG9yOiB2YXIoLS10ZXh0LXByaW1hcnkpOwp9CgoudmVyc2lvbi1pdGVtOmxhc3QtY2hpbGQg
eyBib3JkZXItYm90dG9tOiBub25lOyB9CgoudmVyc2lvbi1iYWRnZSB7CiAgICBmbGV4LXNocmlu
azogMDsKICAgIHBhZGRpbmc6IDNweCAxMHB4OwogICAgYmFja2dyb3VuZDogdmFyKC0tYmctYWN0
aXZlKTsKICAgIGNvbG9yOiB2YXIoLS10ZXh0LWhlYWRpbmcpOwogICAgYm9yZGVyLXJhZGl1czog
NHB4OwogICAgZm9udC13ZWlnaHQ6IDcwMDsKICAgIGZvbnQtc2l6ZTogMTJweDsKICAgIG1pbi13
aWR0aDogNDhweDsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKfQoKLnZlcnNpb24tYmFkZ2UuY3Vy
cmVudCB7IGJhY2tncm91bmQ6ICMyZDlkNzg7IGNvbG9yOiB3aGl0ZTsgfQoKLnZlcnNpb24taW5m
byB7IGZsZXg6IDE7IH0KLnZlcnNpb24tZGF0ZSB7IGZvbnQtc2l6ZTogMTFweDsgY29sb3I6IHZh
cigtLXRleHQtbXV0ZWQpOyBtYXJnaW4tdG9wOiAycHg7IH0KCi8qIC0tLSBGcmVpZ2FiZS1VZWJl
cnNpY2h0IE1vZGFsIC0tLSAqLwouaW1wcmludC1tb2RhbCB7CiAgICBkaXNwbGF5OiBub25lOwog
ICAgcG9zaXRpb246IGZpeGVkOwogICAgdG9wOiAwOyBsZWZ0OiAwOwogICAgd2lkdGg6IDEwMCU7
IGhlaWdodDogMTAwJTsKICAgIGJhY2tncm91bmQ6IHJnYmEoMCwwLDAsMC41KTsKICAgIHotaW5k
ZXg6IDIwMDA7Cn0KCi5pbXByaW50LW1vZGFsLmFjdGl2ZSB7IGRpc3BsYXk6IGZsZXg7IGFsaWdu
LWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVudDogY2VudGVyOyB9CgouaW1wcmludC1jb250
ZW50IHsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLWNhcmQpOwogICAgYm9yZGVyLXJhZGl1czog
OHB4OwogICAgd2lkdGg6IDcwMHB4OwogICAgbWF4LXdpZHRoOiA5NSU7CiAgICBtYXgtaGVpZ2h0
OiA4NXZoOwogICAgb3ZlcmZsb3cteTogYXV0bzsKICAgIGJveC1zaGFkb3c6IHZhcigtLXNoYWRv
dy1tb2RhbCk7Cn0KCi5pbXByaW50LWhlYWRlciB7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1w
cmltYXJ5KTsKICAgIGNvbG9yOiB3aGl0ZTsKICAgIHBhZGRpbmc6IDE1cHggMjBweDsKICAgIGJv
cmRlci1yYWRpdXM6IDhweCA4cHggMCAwOwogICAgZGlzcGxheTogZmxleDsganVzdGlmeS1jb250
ZW50OiBzcGFjZS1iZXR3ZWVuOyBhbGlnbi1pdGVtczogY2VudGVyOwogICAgZm9udC13ZWlnaHQ6
IDYwMDsgZm9udC1zaXplOiAxNnB4Owp9CgouaW1wcmludC1oZWFkZXIgYnV0dG9uIHsKICAgIGJh
Y2tncm91bmQ6IHRyYW5zcGFyZW50OyBib3JkZXI6IDFweCBzb2xpZCB3aGl0ZTsgY29sb3I6IHdo
aXRlOwogICAgcGFkZGluZzogNHB4IDEycHg7IGJvcmRlci1yYWRpdXM6IDRweDsgY3Vyc29yOiBw
b2ludGVyOwp9CgouaW1wcmludC1ib2R5IHsgcGFkZGluZzogMjBweDsgfQoKLmltcHJpbnQtdGFi
bGUgewogICAgd2lkdGg6IDEwMCU7CiAgICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwogICAg
Zm9udC1zaXplOiAxM3B4OwogICAgY29sb3I6IHZhcigtLXRleHQtcHJpbWFyeSk7Cn0KCi5pbXBy
aW50LXRhYmxlIHRoIHsKICAgIHRleHQtYWxpZ246IGxlZnQ7CiAgICBwYWRkaW5nOiA4cHggMTBw
eDsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLXRvb2xiYXIpOwogICAgY29sb3I6IHZhcigtLXRl
eHQtaGVhZGluZyk7CiAgICBmb250LXdlaWdodDogNjAwOwogICAgYm9yZGVyLWJvdHRvbTogMnB4
IHNvbGlkIHZhcigtLXRleHQtaGVhZGluZyk7Cn0KCi5pbXByaW50LXRhYmxlIHRkIHsKICAgIHBh
ZGRpbmc6IDhweCAxMHB4OwogICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLWJvcmRl
ci1jb2xvcik7Cn0KCi5pbXByaW50LXRhYmxlIC5rYXQtYmFkZ2UgewogICAgZGlzcGxheTogaW5s
aW5lLWJsb2NrOwogICAgcGFkZGluZzogMnB4IDhweDsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJn
LWFjdGl2ZSk7CiAgICBjb2xvcjogdmFyKC0tdGV4dC1oZWFkaW5nKTsKICAgIGJvcmRlci1yYWRp
dXM6IDNweDsKICAgIGZvbnQtc2l6ZTogMTFweDsKICAgIG1hcmdpbjogMXB4IDJweDsKfQoKLyog
LS0tIENvbnRyaWJ1dG9ycyAoTWl0d2lya2VuZGUpIC0tLSAqLwouY29udHJpYnV0b3JzLXNlY3Rp
b24gewogICAgbWFyZ2luLXRvcDogMTVweDsKICAgIHBhZGRpbmctdG9wOiAxNXB4OwogICAgYm9y
ZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1saWdodCk7Cn0KCi5jb250cmlidXRvcnMt
c2VjdGlvbiBoMyB7IGZvbnQtc2l6ZTogMTVweDsgY29sb3I6IHZhcigtLXRleHQtaGVhZGluZyk7
IG1hcmdpbi1ib3R0b206IDEwcHg7IH0KCi5jb250cmlidXRvci1yb3cgewogICAgZGlzcGxheTog
ZmxleDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBnYXA6IDEwcHg7CiAgICBwYWRkaW5n
OiA2cHggMDsKICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItbGlnaHQp
OwogICAgZm9udC1zaXplOiAxM3B4Owp9CgouY29udHJpYnV0b3ItbmFtZSB7IGZvbnQtd2VpZ2h0
OiA2MDA7IGNvbG9yOiB2YXIoLS10ZXh0LWhlYWRpbmcpOyB3aWR0aDogMTAwcHg7IGZsZXgtc2hy
aW5rOiAwOyB9CgouY29udHJpYnV0b3Itcm9sZSB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7
CiAgICBwYWRkaW5nOiAycHggOHB4OwogICAgYm9yZGVyLXJhZGl1czogM3B4OwogICAgZm9udC1z
aXplOiAxMXB4OwogICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgIHdpZHRoOiA3NXB4OwogICAgdGV4
dC1hbGlnbjogY2VudGVyOwogICAgZmxleC1zaHJpbms6IDA7Cn0KCi5jb250cmlidXRvci1yb2xl
LmF1dG9yIHsgYmFja2dyb3VuZDogI0Q0RUREQTsgY29sb3I6ICMxNTU3MjQ7IH0KLmNvbnRyaWJ1
dG9yLXJvbGUucmVkYWt0aW9uIHsgYmFja2dyb3VuZDogdmFyKC0tYmctYWN0aXZlKTsgY29sb3I6
IHZhcigtLXRleHQtaGVhZGluZyk7IH0KLmNvbnRyaWJ1dG9yLXJvbGUucmV2aWV3IHsgYmFja2dy
b3VuZDogI0ZGRTVCNDsgY29sb3I6ICM3QTQ0MTk7IH0KCi5jb250cmlidXRvci1iYXIgewogICAg
ZmxleDogMTsKICAgIGhlaWdodDogOHB4OwogICAgYmFja2dyb3VuZDogdmFyKC0tYm9yZGVyLWxp
Z2h0KTsKICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgIG92ZXJmbG93OiBoaWRkZW47Cn0KCi5j
b250cmlidXRvci1iYXItZmlsbCB7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBib3JkZXItcmFkaXVz
OiA0cHg7CiAgICB0cmFuc2l0aW9uOiB3aWR0aCAwLjNzOwp9CgouY29udHJpYnV0b3ItYmFyLWZp
bGwuYXV0b3IgeyBiYWNrZ3JvdW5kOiAjMjhhNzQ1OyB9Ci5jb250cmlidXRvci1iYXItZmlsbC5y
ZWRha3Rpb24geyBiYWNrZ3JvdW5kOiAjMkU0QTYyOyB9Ci5jb250cmlidXRvci1iYXItZmlsbC5y
ZXZpZXcgeyBiYWNrZ3JvdW5kOiAjZTY3ZTIyOyB9CgouY29udHJpYnV0b3ItcGN0IHsgZm9udC1z
aXplOiAxMnB4OyBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7IG1pbi13aWR0aDogNDBweDsgdGV4
dC1hbGlnbjogcmlnaHQ7IH0KCi8qIC0tLSBDb250cmlidXRpb24gVHlwZSBEaWFsb2cgLS0tICov
Ci5jb250cmliLWRpYWxvZyB7CiAgICBkaXNwbGF5OiBub25lOwogICAgcG9zaXRpb246IGZpeGVk
OwogICAgdG9wOiAwOyBsZWZ0OiAwOwogICAgd2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJTsKICAg
IGJhY2tncm91bmQ6IHJnYmEoMCwwLDAsMC41KTsKICAgIHotaW5kZXg6IDMwMDA7Cn0KCi5jb250
cmliLWRpYWxvZy5hY3RpdmUgeyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBq
dXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgfQoKLmNvbnRyaWItZGlhbG9nLWNvbnRlbnQgewogICAg
YmFja2dyb3VuZDogdmFyKC0tYmctY2FyZCk7CiAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICB3
aWR0aDogNDIwcHg7CiAgICBtYXgtd2lkdGg6IDk1JTsKICAgIGJveC1zaGFkb3c6IHZhcigtLXNo
YWRvdy1tb2RhbCk7Cn0KCi5jb250cmliLWRpYWxvZy1oZWFkZXIgewogICAgYmFja2dyb3VuZDog
dmFyKC0tYmctcHJpbWFyeSk7CiAgICBjb2xvcjogd2hpdGU7CiAgICBwYWRkaW5nOiAxNXB4IDIw
cHg7CiAgICBib3JkZXItcmFkaXVzOiA4cHggOHB4IDAgMDsKICAgIGZvbnQtd2VpZ2h0OiA2MDA7
Cn0KCi5jb250cmliLWRpYWxvZy1ib2R5IHsgcGFkZGluZzogMjBweDsgfQoKLmNvbnRyaWItdHlw
ZS1idG4gewogICAgZGlzcGxheTogYmxvY2s7CiAgICB3aWR0aDogMTAwJTsKICAgIHBhZGRpbmc6
IDEycHggMTVweDsKICAgIG1hcmdpbi1ib3R0b206IDhweDsKICAgIGJvcmRlcjogMnB4IHNvbGlk
IHZhcigtLWJvcmRlci1jb2xvcik7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1jYXJkKTsKICAg
IGJvcmRlci1yYWRpdXM6IDZweDsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIHRleHQtYWxpZ246
IGxlZnQ7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4yczsKfQoKLmNvbnRyaWItdHlwZS1idG46aG92
ZXIgeyBib3JkZXItY29sb3I6IHZhcigtLXRleHQtaGVhZGluZyk7IGJhY2tncm91bmQ6IHZhcigt
LWJnLWhvdmVyKTsgfQouY29udHJpYi10eXBlLWJ0bi5zZWxlY3RlZCB7IGJvcmRlci1jb2xvcjog
dmFyKC0tdGV4dC1oZWFkaW5nKTsgYmFja2dyb3VuZDogdmFyKC0tYmctYWN0aXZlKTsgfQoKLmNv
bnRyaWItdHlwZS1idG4gLmxhYmVsIHsgZm9udC13ZWlnaHQ6IDYwMDsgY29sb3I6IHZhcigtLXRl
eHQtaGVhZGluZyk7IGZvbnQtc2l6ZTogMTRweDsgfQouY29udHJpYi10eXBlLWJ0biAuZGVzYyB7
IGZvbnQtc2l6ZTogMTJweDsgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpOyBtYXJnaW4tdG9wOiAz
cHg7IH0KCi8qIC0tLSBFbXB0eSBTdGF0ZSAtLS0gKi8KLmVtcHR5LXN0YXRlIHsgdGV4dC1hbGln
bjogY2VudGVyOyBwYWRkaW5nOiA0MHB4OyBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7IH0KCi8q
IC0tLSBXZWxjb21lIC0tLSAqLwoud2VsY29tZS1jb250ZW50IHsgcGFkZGluZzogMzBweDsgbWF4
LXdpZHRoOiA4MDBweDsgfQoud2VsY29tZS1jb250ZW50IGgxIHsgY29sb3I6IHZhcigtLXRleHQt
aGVhZGluZyk7IGZvbnQtc2l6ZTogMjhweDsgbWFyZ2luLWJvdHRvbTogMTVweDsgYm9yZGVyLWJv
dHRvbTogM3B4IHNvbGlkIHZhcigtLXRleHQtaGVhZGluZyk7IHBhZGRpbmctYm90dG9tOiAxMHB4
OyB9Ci53ZWxjb21lLWNvbnRlbnQgcCB7IGZvbnQtc2l6ZTogMTVweDsgbGluZS1oZWlnaHQ6IDEu
NjsgY29sb3I6IHZhcigtLXRleHQtc2Vjb25kYXJ5KTsgbWFyZ2luLWJvdHRvbTogMTJweDsgfQou
d2VsY29tZS1jb250ZW50IC5pbmZvLXNlY3Rpb24geyBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1i
Zy1jYXJkLWFsdCk7IGJvcmRlci1sZWZ0OiA0cHggc29saWQgdmFyKC0tdGV4dC1oZWFkaW5nKTsg
cGFkZGluZzogMTVweDsgbWFyZ2luOiAxNXB4IDA7IGJvcmRlci1yYWRpdXM6IDRweDsgfQoud2Vs
Y29tZS1jb250ZW50IC5pbmZvLXNlY3Rpb24gaDIgeyBjb2xvcjogdmFyKC0tdGV4dC1oZWFkaW5n
KTsgZm9udC1zaXplOiAxOHB4OyBtYXJnaW4tYm90dG9tOiA4cHg7IH0KLndlbGNvbWUtY29udGVu
dCAuaW5mby1zZWN0aW9uIHVsIHsgbWFyZ2luLWxlZnQ6IDIwcHg7IGNvbG9yOiB2YXIoLS10ZXh0
LXNlY29uZGFyeSk7IH0KLndlbGNvbWUtY29udGVudCAuaW5mby1zZWN0aW9uIGxpIHsgbWFyZ2lu
LWJvdHRvbTogNnB4OyBsaW5lLWhlaWdodDogMS41OyB9CgovKiAtLS0gU2Nyb2xsYmFyIC0tLSAq
LwoubGlzdC1pdGVtczo6LXdlYmtpdC1zY3JvbGxiYXIsCi5kb2N1bWVudC1kZXRhaWw6Oi13ZWJr
aXQtc2Nyb2xsYmFyLAouZWRpdG9yLWFyZWE6Oi13ZWJraXQtc2Nyb2xsYmFyLAouZWRpdG9yLWlu
cHV0Ojotd2Via2l0LXNjcm9sbGJhciwKLnJldmlzaW9uLWNvbnRlbnQ6Oi13ZWJraXQtc2Nyb2xs
YmFyIHsgd2lkdGg6IDhweDsgfQoKLmxpc3QtaXRlbXM6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNr
LAouZG9jdW1lbnQtZGV0YWlsOjotd2Via2l0LXNjcm9sbGJhci10cmFjaywKLmVkaXRvci1hcmVh
Ojotd2Via2l0LXNjcm9sbGJhci10cmFjaywKLmVkaXRvci1pbnB1dDo6LXdlYmtpdC1zY3JvbGxi
YXItdHJhY2ssCi5yZXZpc2lvbi1jb250ZW50Ojotd2Via2l0LXNjcm9sbGJhci10cmFjayB7IGJh
Y2tncm91bmQ6IHZhcigtLWJnLWNhcmQtYWx0KTsgYm9yZGVyLXJhZGl1czogNHB4OyB9CgoubGlz
dC1pdGVtczo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIsCi5kb2N1bWVudC1kZXRhaWw6Oi13ZWJr
aXQtc2Nyb2xsYmFyLXRodW1iLAouZWRpdG9yLWFyZWE6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1i
LAouZWRpdG9yLWlucHV0Ojotd2Via2l0LXNjcm9sbGJhci10aHVtYiwKLnJldmlzaW9uLWNvbnRl
bnQ6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHsgYmFja2dyb3VuZDogdmFyKC0tdGV4dC1oZWFk
aW5nKTsgYm9yZGVyLXJhZGl1czogNHB4OyB9CgoubGlzdC1pdGVtczo6LXdlYmtpdC1zY3JvbGxi
YXItdGh1bWI6aG92ZXIsCi5kb2N1bWVudC1kZXRhaWw6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1i
OmhvdmVyLAouZWRpdG9yLWFyZWE6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmhvdmVyLAouZWRp
dG9yLWlucHV0Ojotd2Via2l0LXNjcm9sbGJhci10aHVtYjpob3ZlciwKLnJldmlzaW9uLWNvbnRl
bnQ6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmhvdmVyIHsgYmFja2dyb3VuZDogdmFyKC0tYmct
cHJpbWFyeS1kYXJrKTsgfQoKLyogLS0tIEZvY3VzIFN0YXRlcyAoQWNjZXNzaWJpbGl0eSkgLS0t
ICovCmJ1dHRvbjpmb2N1cy12aXNpYmxlLApzZWxlY3Q6Zm9jdXMtdmlzaWJsZSwKaW5wdXQ6Zm9j
dXMtdmlzaWJsZSwKLmZpbHRlci1idG46Zm9jdXMtdmlzaWJsZSwKLnN0YXR1cy1maWx0ZXItYnRu
OmZvY3VzLXZpc2libGUsCi5kb2N1bWVudC1pdGVtOmZvY3VzLXZpc2libGUgewogICAgb3V0bGlu
ZTogMnB4IHNvbGlkIHZhcigtLXRleHQtaGVhZGluZyk7CiAgICBvdXRsaW5lLW9mZnNldDogMnB4
Owp9CgouZGV0YWlsLWFjdGlvbnMgYnV0dG9uOmZvY3VzLXZpc2libGUsCi5lZGl0b3ItdG9vbGJh
ciBidXR0b246Zm9jdXMtdmlzaWJsZSwKLmVkaXRvci1mb290ZXIgYnV0dG9uOmZvY3VzLXZpc2li
bGUgewogICAgb3V0bGluZTogMnB4IHNvbGlkIHZhcigtLXRleHQtaGVhZGluZyk7CiAgICBvdXRs
aW5lLW9mZnNldDogMXB4Owp9CgovKiAtLS0gQW5pbWF0aW9ucyAtLS0gKi8KQGtleWZyYW1lcyBm
YWRlSW4geyBmcm9tIHsgb3BhY2l0eTogMDsgfSB0byB7IG9wYWNpdHk6IDE7IH0gfQpAa2V5ZnJh
bWVzIHNsaWRlRG93biB7IGZyb20geyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEwMCUpOyBvcGFj
aXR5OiAwOyB9IHRvIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOyBvcGFjaXR5OiAxOyB9IH0K
Ci8qIC0tLSBSZXNwb25zaXZlIC0tLSAqLwpAbWVkaWEgKG1heC13aWR0aDogMTEwMHB4KSB7CiAg
ICAuY29udGFpbmVyIHsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAyODBweCAxZnI7IH0KfQpAbWVk
aWEgKG1heC13aWR0aDogOTAwcHgpIHsKICAgIC5jb250YWluZXIgeyBncmlkLXRlbXBsYXRlLWNv
bHVtbnM6IDFmcjsgfQogICAgbWFpbiB7IHBhZGRpbmc6IDEwcHg7IH0KfQoKLyogLS0tIElubGlu
ZSBNZWRpYSAoQXJ0aWtlbC1JbmhhbHRlKSAtLS0gKi8KLmRyaXZlLW1lZGlhIHsKICAgIGRpc3Bs
YXk6IGJsb2NrOwogICAgbWFyZ2luOiAxNXB4IDA7CiAgICBwYWdlLWJyZWFrLWluc2lkZTogYXZv
aWQ7CiAgICBtYXgtd2lkdGg6IDEwMCU7Cn0KCi5kcml2ZS1tZWRpYVtjb250ZW50ZWRpdGFibGU9
ImZhbHNlIl0geyB1c2VyLXNlbGVjdDogbm9uZTsgfQoKLmRyaXZlLWFsaWduLWNlbnRlciB7IGRp
c3BsYXk6IGJsb2NrOyBtYXJnaW46IDE2cHggYXV0bzsgdGV4dC1hbGlnbjogY2VudGVyOyBjbGVh
cjogYm90aDsgfQouZHJpdmUtYWxpZ24tbGVmdCB7IGZsb2F0OiBsZWZ0OyBtYXJnaW46IDhweCAy
MHB4IDEwcHggMDsgbWF4LXdpZHRoOiA1MCU7IH0KLmRyaXZlLWFsaWduLXJpZ2h0IHsgZmxvYXQ6
IHJpZ2h0OyBtYXJnaW46IDhweCAwIDEwcHggMjBweDsgbWF4LXdpZHRoOiA1MCU7IH0KCi5kcml2
ZS1tZWRpYS10aHVtYm5haWwgaW1nIHsgbWF4LXdpZHRoOiAyMDBweDsgbWF4LWhlaWdodDogMjAw
cHg7IGN1cnNvcjogcG9pbnRlcjsgYm9yZGVyLXJhZGl1czogNHB4OyB0cmFuc2l0aW9uOiBvcGFj
aXR5IDAuMnM7IH0KLmRyaXZlLW1lZGlhLXRodW1ibmFpbCBpbWc6aG92ZXIgeyBvcGFjaXR5OiAw
Ljg1OyB9Ci5kcml2ZS1tZWRpYS1sYXJnZSBpbWcgeyBtYXgtd2lkdGg6IDY0MHB4OyBtYXgtaGVp
Z2h0OiA0ODBweDsgd2lkdGg6IDEwMCU7IGhlaWdodDogYXV0bzsgYm9yZGVyLXJhZGl1czogNHB4
OyB9CgouZHJpdmUtbWVkaWEgZmlnY2FwdGlvbiwgLmRyaXZlLW1lZGlhLWNhcHRpb24gewogICAg
Zm9udC1zaXplOiAxMnB4OwogICAgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpOwogICAgZm9udC1z
dHlsZTogaXRhbGljOwogICAgbWFyZ2luLXRvcDogNnB4OwogICAgbGluZS1oZWlnaHQ6IDEuNDsK
fQoKLmRyaXZlLW1lZGlhLXBkZi1saW5rIHsKICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OwogICAg
YWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGdhcDogOHB4OwogICAgcGFkZGluZzogOHB4IDE0cHg7
CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1jYXJkLWFsdCk7CiAgICBib3JkZXI6IDFweCBzb2xp
ZCB2YXIoLS1ib3JkZXItbGlnaHQpOwogICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgbWFyZ2lu
OiA4cHggMDsKfQoKLmRyaXZlLXBkZi1pY29uIHsKICAgIGRpc3BsYXk6IGlubGluZS1mbGV4Owog
ICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAg
d2lkdGg6IDM2cHg7IGhlaWdodDogMzZweDsKICAgIGJhY2tncm91bmQ6ICNkYzM1NDU7CiAgICBj
b2xvcjogd2hpdGU7CiAgICBmb250LXNpemU6IDExcHg7CiAgICBmb250LXdlaWdodDogNzAwOwog
ICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgZmxleC1zaHJpbms6IDA7Cn0KCi5kcml2ZS1tZWRp
YS1wZGYtbGluayB7IGN1cnNvcjogcG9pbnRlcjsgfQouZHJpdmUtbWVkaWEtcGRmLWxpbmsgc3Bh
bi5wZGYtdGl0bGUgeyBjb2xvcjogdmFyKC0tdGV4dC1oZWFkaW5nKTsgZm9udC13ZWlnaHQ6IDUw
MDsgZm9udC1zaXplOiAxNHB4OyB9Ci5kcml2ZS1tZWRpYS1wZGYtbGluazpob3ZlciB7IGJhY2tn
cm91bmQ6IHZhcigtLWJnLWhvdmVyKTsgYm9yZGVyLWNvbG9yOiB2YXIoLS10ZXh0LWhlYWRpbmcp
OyB9CgouZHJpdmUtbWVkaWEtcGRmLWlmcmFtZSB7IGN1cnNvcjogcG9pbnRlcjsgcG9zaXRpb246
IHJlbGF0aXZlOyB9Ci5kcml2ZS1tZWRpYS1wZGYtaWZyYW1lIGlmcmFtZSB7CiAgICB3aWR0aDog
MTAwJTsKICAgIGhlaWdodDogMzAwcHg7CiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ib3Jk
ZXItbGlnaHQpOwogICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgYmFja2dyb3VuZDogdmFyKC0t
YmctY2FyZCk7CiAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKfQouZHJpdmUtbWVkaWEtcGRmLWlm
cmFtZTpob3ZlciB7IG91dGxpbmU6IDJweCBzb2xpZCB2YXIoLS10ZXh0LWhlYWRpbmcpOyBvdXRs
aW5lLW9mZnNldDogMnB4OyB9Ci5kcml2ZS1tZWRpYS1wZGYtaWZyYW1lOjphZnRlciB7CiAgICBj
b250ZW50OiAnS2xpY2tlbiB6dW0gVmVyZ3JvZXNzZXJuJzsKICAgIHBvc2l0aW9uOiBhYnNvbHV0
ZTsgYm90dG9tOiA4cHg7IHJpZ2h0OiA4cHg7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsMCwwLDAu
Nyk7IGNvbG9yOiB3aGl0ZTsgcGFkZGluZzogM3B4IDEwcHg7CiAgICBib3JkZXItcmFkaXVzOiAz
cHg7IGZvbnQtc2l6ZTogMTFweDsgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICBvcGFjaXR5OiAw
OyB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMnM7Cn0KLmRyaXZlLW1lZGlhLXBkZi1pZnJhbWU6aG92
ZXI6OmFmdGVyIHsgb3BhY2l0eTogMTsgfQoKLyogLS0tIElubGluZS1NZWRpZW4tRW1iZWRzIChW
aWRlbywgQXVkaW8sIE9mZmljZSkgLS0tICovCi5kcml2ZS1tZWRpYS1lbWJlZCB7CiAgICBkaXNw
bGF5OiBpbmxpbmUtZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgZ2FwOiAxMHB4OwogICAgcGFk
ZGluZzogMTBweCAxNnB4OyBtYXJnaW46IDhweCAwOwogICAgYmFja2dyb3VuZDogdmFyKC0tYmct
Y2FyZC1hbHQpOyBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3IpOwogICAgYm9y
ZGVyLXJhZGl1czogNnB4OyBjdXJzb3I6IHBvaW50ZXI7IHRyYW5zaXRpb246IHZhcigtLXRyYW5z
aXRpb24tc3RkKTsKICAgIG1heC13aWR0aDogNDAwcHg7Cn0KLmRyaXZlLW1lZGlhLWVtYmVkLmRy
aXZlLWFsaWduLWxlZnQsCi5kcml2ZS1tZWRpYS1lbWJlZC5kcml2ZS1hbGlnbi1yaWdodCB7IGRp
c3BsYXk6IGZsZXg7IG1heC13aWR0aDogNTAlOyB9Ci5kcml2ZS1tZWRpYS1lbWJlZC5kcml2ZS1h
bGlnbi1jZW50ZXIgeyBkaXNwbGF5OiBmbGV4OyBtYXJnaW46IDE2cHggYXV0bzsgY2xlYXI6IGJv
dGg7IH0KLmRyaXZlLW1lZGlhLWVtYmVkOmhvdmVyIHsgYm9yZGVyLWNvbG9yOiB2YXIoLS10ZXh0
LWhlYWRpbmcpOyBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1ob3Zlcik7IH0KLmRyaXZlLWVtYmVkLWlj
b24gewogICAgd2lkdGg6IDMycHg7IGhlaWdodDogMzJweDsgZmxleC1zaHJpbms6IDA7CiAgICBi
YWNrZ3JvdW5kLXNpemU6IGNvbnRhaW47IGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7IGJh
Y2tncm91bmQtcG9zaXRpb246IGNlbnRlcjsKfQouZHJpdmUtZW1iZWQtaWNvbi5pY29uLWF1ZGlv
IHsgYmFja2dyb3VuZC1pbWFnZTogdXJsKCdjc3MvaWNvbnMvYXVkaW8ucG5nJyk7IH0KLmRyaXZl
LWVtYmVkLWljb24uaWNvbi12aWRlbyB7IGJhY2tncm91bmQtaW1hZ2U6IHVybCgnY3NzL2ljb25z
L3ZpZGVvLnBuZycpOyB9Ci5kcml2ZS1lbWJlZC1pY29uLmljb24tcGRmIHsgYmFja2dyb3VuZC1p
bWFnZTogdXJsKCdjc3MvaWNvbnMvcGRmLnBuZycpOyB9Ci5kcml2ZS1lbWJlZC1pY29uLmljb24t
ZG9jeCwgLmRyaXZlLWVtYmVkLWljb24uaWNvbi1kb2MgeyBiYWNrZ3JvdW5kLWltYWdlOiB1cmwo
J2Nzcy9pY29ucy93b3JkLnBuZycpOyB9Ci5kcml2ZS1lbWJlZC1pY29uLmljb24teGxzeCwgLmRy
aXZlLWVtYmVkLWljb24uaWNvbi14bHMgeyBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJ2Nzcy9pY29u
cy9leGNlbC5wbmcnKTsgfQouZHJpdmUtZW1iZWQtaWNvbi5pY29uLXBwdHgsIC5kcml2ZS1lbWJl
ZC1pY29uLmljb24tcHB0IHsgYmFja2dyb3VuZC1pbWFnZTogdXJsKCdjc3MvaWNvbnMvcG93ZXJw
b2ludC5wbmcnKTsgfQouZHJpdmUtZW1iZWQtbGFiZWwgewogICAgZm9udC1zaXplOiAxM3B4OyBm
b250LXdlaWdodDogNTAwOyBjb2xvcjogdmFyKC0tdGV4dC1oZWFkaW5nKTsKICAgIG92ZXJmbG93
OiBoaWRkZW47IHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOyB3aGl0ZS1zcGFjZTogbm93cmFwOwp9
CgovKiAtLS0gRmlsZSBUeXBlIEljb25zIChjc3MvaWNvbnMvKSAtLS0gKi8KLmRyaXZlLWZpbGUt
aWNvbiB7CiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7
CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIHdpZHRoOiAzNnB4OyBoZWlnaHQ6IDM2
cHg7CiAgICBmbGV4LXNocmluazogMDsKICAgIGJhY2tncm91bmQtc2l6ZTogY29udGFpbjsKICAg
IGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7CiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBj
ZW50ZXI7CiAgICBmb250LXNpemU6IDA7IC8qIFRleHQgYXVzYmxlbmRlbiwgSWNvbiBwZXIgQmFj
a2dyb3VuZCAqLwp9CgouZHJpdmUtZmlsZS1pY29uLmltYWdlIHsgYmFja2dyb3VuZC1pbWFnZTog
dXJsKCdjc3MvaWNvbnMvaW1hZ2UucG5nJyk7IH0KLmRyaXZlLWZpbGUtaWNvbi5wZGYgICB7IGJh
Y2tncm91bmQtaW1hZ2U6IHVybCgnY3NzL2ljb25zL3BkZi5wbmcnKTsgfQouZHJpdmUtZmlsZS1p
Y29uLmF1ZGlvIHsgYmFja2dyb3VuZC1pbWFnZTogdXJsKCdjc3MvaWNvbnMvYXVkaW8ucG5nJyk7
IH0KLmRyaXZlLWZpbGUtaWNvbi52aWRlbyB7IGJhY2tncm91bmQtaW1hZ2U6IHVybCgnY3NzL2lj
b25zL3ZpZGVvLnBuZycpOyB9Ci5kcml2ZS1maWxlLWljb24uZG9jeCAgeyBiYWNrZ3JvdW5kLWlt
YWdlOiB1cmwoJ2Nzcy9pY29ucy93b3JkLnBuZycpOyB9Ci5kcml2ZS1maWxlLWljb24ueGxzeCAg
eyBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJ2Nzcy9pY29ucy9leGNlbC5wbmcnKTsgfQouZHJpdmUt
ZmlsZS1pY29uLnBwdHggIHsgYmFja2dyb3VuZC1pbWFnZTogdXJsKCdjc3MvaWNvbnMvcG93ZXJw
b2ludC5wbmcnKTsgfQouZHJpdmUtZmlsZS1pY29uLmZpbGUgIHsgYmFja2dyb3VuZC1jb2xvcjog
IzZjNzU3ZDsgYm9yZGVyLXJhZGl1czogNHB4OyBjb2xvcjogd2hpdGU7IGZvbnQtc2l6ZTogMTFw
eDsgZm9udC13ZWlnaHQ6IDcwMDsgfQpbZGF0YS10aGVtZT0ibmlnaHQiXSAuZHJpdmUtZmlsZS1p
Y29uIHsgZmlsdGVyOiBpbnZlcnQoMSkgYnJpZ2h0bmVzcygyKTsgfQpbZGF0YS10aGVtZT0ibmln
aHQiXSAuZHJpdmUtZmlsZS1pY29uLmZpbGUgeyBmaWx0ZXI6IG5vbmU7IH0KW2RhdGEtdGhlbWU9
Im5pZ2h0Il0gLmRyaXZlLWVtYmVkLWljb24geyBmaWx0ZXI6IGludmVydCgxKSBicmlnaHRuZXNz
KDIpOyB9CgovKiAtLS0gQXR0YWNobWVudCBHcmlkIChEZXRhaWwgVmlldykgLS0tICovCi5hdHRh
Y2htZW50LWl0ZW0gewogICAgZGlzcGxheTogZmxleDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7
CiAgICBnYXA6IDEycHg7CiAgICBwYWRkaW5nOiAxMHB4IDE0cHg7CiAgICBiYWNrZ3JvdW5kOiB2
YXIoLS1iZy1jYXJkLWFsdCk7CiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItbGln
aHQpOwogICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgdHJh
bnNpdGlvbjogYWxsIDAuMnM7Cn0KCi5hdHRhY2htZW50LWl0ZW06aG92ZXIgeyBiYWNrZ3JvdW5k
OiB2YXIoLS1iZy1ob3Zlcik7IGJvcmRlci1jb2xvcjogdmFyKC0tdGV4dC1oZWFkaW5nKTsgfQoK
LmF0dGFjaG1lbnQtaW5mbyB7IGZsZXg6IDE7IG1pbi13aWR0aDogMDsgfQouYXR0YWNobWVudC10
aXRsZSB7IGZvbnQtd2VpZ2h0OiA2MDA7IGZvbnQtc2l6ZTogMTRweDsgY29sb3I6IHZhcigtLXRl
eHQtaGVhZGluZyk7IHdoaXRlLXNwYWNlOiBub3dyYXA7IG92ZXJmbG93OiBoaWRkZW47IHRleHQt
b3ZlcmZsb3c6IGVsbGlwc2lzOyB9Ci5hdHRhY2htZW50LW1ldGEgeyBmb250LXNpemU6IDEycHg7
IGNvbG9yOiB2YXIoLS10ZXh0LW11dGVkKTsgbWFyZ2luLXRvcDogMnB4OyB9Ci5hdHRhY2htZW50
LWFjdGlvbnMgeyBkaXNwbGF5OiBmbGV4OyBnYXA6IDZweDsgfQoKLmF0dGFjaG1lbnQtYWN0aW9u
cyBidXR0b24gewogICAgcGFkZGluZzogNHB4IDEwcHg7CiAgICBib3JkZXI6IDFweCBzb2xpZCB2
YXIoLS1ib3JkZXItY29sb3IpOwogICAgYmFja2dyb3VuZDogdmFyKC0tYmctY2FyZCk7CiAgICBj
b2xvcjogdmFyKC0tdGV4dC1wcmltYXJ5KTsKICAgIGJvcmRlci1yYWRpdXM6IDNweDsKICAgIGZv
bnQtc2l6ZTogMTJweDsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIHRyYW5zaXRpb246IGFsbCAw
LjJzOwp9CgouYXR0YWNobWVudC1hY3Rpb25zIGJ1dHRvbjpob3ZlciB7IGJvcmRlci1jb2xvcjog
dmFyKC0tdGV4dC1oZWFkaW5nKTsgY29sb3I6IHZhcigtLXRleHQtaGVhZGluZyk7IH0KCi8qIC0t
LSBNZWRpYSBVcGxvYWQgRGlhbG9nIC0tLSAqLwoubWVkaWEtdXBsb2FkLWRpYWxvZyB7CiAgICBk
aXNwbGF5OiBub25lOwogICAgcG9zaXRpb246IGZpeGVkOwogICAgdG9wOiAwOyBsZWZ0OiAwOwog
ICAgd2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJTsKICAgIGJhY2tncm91bmQ6IHJnYmEoMCwwLDAs
MC41KTsKICAgIHotaW5kZXg6IDIwMDA7Cn0KCi5tZWRpYS11cGxvYWQtZGlhbG9nLmFjdGl2ZSB7
IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVudDogY2Vu
dGVyOyB9CgoubWVkaWEtdXBsb2FkLWRpYWxvZy1jb250ZW50IHsKICAgIGJhY2tncm91bmQ6IHZh
cigtLWJnLWNhcmQpOwogICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgd2lkdGg6IDU1MHB4Owog
ICAgbWF4LXdpZHRoOiA5NSU7CiAgICBtYXgtaGVpZ2h0OiA5MHZoOwogICAgb3ZlcmZsb3cteTog
YXV0bzsKICAgIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1tb2RhbCk7Cn0KCi5tZWRpYS11cGxv
YWQtZGlhbG9nLWhlYWRlciB7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1wcmltYXJ5KTsKICAg
IGNvbG9yOiB3aGl0ZTsKICAgIHBhZGRpbmc6IDE1cHggMjBweDsKICAgIGJvcmRlci1yYWRpdXM6
IDhweCA4cHggMCAwOwogICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgIGZvbnQtc2l6ZTogMTZweDsK
ICAgIGRpc3BsYXk6IGZsZXg7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAg
ICBhbGlnbi1pdGVtczogY2VudGVyOwp9CgoubWVkaWEtdXBsb2FkLWRpYWxvZy1oZWFkZXIgYnV0
dG9uIHsKICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OyBib3JkZXI6IDFweCBzb2xpZCB3aGl0
ZTsgY29sb3I6IHdoaXRlOwogICAgcGFkZGluZzogNHB4IDEycHg7IGJvcmRlci1yYWRpdXM6IDRw
eDsgY3Vyc29yOiBwb2ludGVyOyBmb250LXNpemU6IDEzcHg7Cn0KCi5tZWRpYS11cGxvYWQtZGlh
bG9nLWJvZHkgeyBwYWRkaW5nOiAyMHB4OyB9CgoudXBsb2FkLXByZXZpZXcgewogICAgdGV4dC1h
bGlnbjogY2VudGVyOwogICAgcGFkZGluZzogMTVweDsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJn
LWNhcmQtYWx0KTsKICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgIG1hcmdpbi1ib3R0b206IDE1
cHg7Cn0KCi51cGxvYWQtcHJldmlldyBpbWcgeyBtYXgtd2lkdGg6IDEwMCU7IG1heC1oZWlnaHQ6
IDIwMHB4OyBib3JkZXItcmFkaXVzOiA0cHg7IH0KCi51cGxvYWQtZm9ybS1ncm91cCB7IG1hcmdp
bi1ib3R0b206IDEycHg7IH0KLnVwbG9hZC1mb3JtLWdyb3VwIGxhYmVsIHsgZGlzcGxheTogYmxv
Y2s7IGZvbnQtd2VpZ2h0OiA2MDA7IGZvbnQtc2l6ZTogMTNweDsgY29sb3I6IHZhcigtLXRleHQt
aGVhZGluZyk7IG1hcmdpbi1ib3R0b206IDRweDsgfQoudXBsb2FkLWZvcm0tZ3JvdXAgaW5wdXQs
IC51cGxvYWQtZm9ybS1ncm91cCB0ZXh0YXJlYSB7CiAgICB3aWR0aDogMTAwJTsgcGFkZGluZzog
OHB4IDEwcHg7IGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1zdHJvbmcpOyBib3JkZXIt
cmFkaXVzOiA0cHg7IGZvbnQtc2l6ZTogMTNweDsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLWlu
cHV0KTsgY29sb3I6IHZhcigtLXRleHQtcHJpbWFyeSk7Cn0KLnVwbG9hZC1mb3JtLWdyb3VwIHRl
eHRhcmVhIHsgcmVzaXplOiB2ZXJ0aWNhbDsgbWluLWhlaWdodDogNTBweDsgfQoKLnVwbG9hZC1v
cHRpb24tZ3JvdXAgeyBkaXNwbGF5OiBmbGV4OyBnYXA6IDhweDsgZmxleC13cmFwOiB3cmFwOyB9
CgoudXBsb2FkLW9wdGlvbi1idG4gewogICAgcGFkZGluZzogNnB4IDEycHg7CiAgICBib3JkZXI6
IDJweCBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3IpOwogICAgYmFja2dyb3VuZDogdmFyKC0tYmct
Y2FyZCk7CiAgICBjb2xvcjogdmFyKC0tdGV4dC1wcmltYXJ5KTsKICAgIGJvcmRlci1yYWRpdXM6
IDRweDsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIGZvbnQtc2l6ZTogMTJweDsKICAgIGZvbnQt
d2VpZ2h0OiA1MDA7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4yczsKICAgIHRleHQtYWxpZ246IGNl
bnRlcjsKfQoKLnVwbG9hZC1vcHRpb24tYnRuOmhvdmVyIHsgYm9yZGVyLWNvbG9yOiB2YXIoLS10
ZXh0LWhlYWRpbmcpOyB9Ci51cGxvYWQtb3B0aW9uLWJ0bi5hY3RpdmUgeyBib3JkZXItY29sb3I6
IHZhcigtLXRleHQtaGVhZGluZyk7IGJhY2tncm91bmQ6IHZhcigtLXRleHQtaGVhZGluZyk7IGNv
bG9yOiB3aGl0ZTsgfQoKLnVwbG9hZC1kaWFsb2ctZm9vdGVyIHsKICAgIHBhZGRpbmc6IDE1cHgg
MjBweDsKICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItbGlnaHQpOwogICAg
ZGlzcGxheTogZmxleDsKICAgIGdhcDogMTBweDsKICAgIGp1c3RpZnktY29udGVudDogZmxleC1l
bmQ7Cn0KCi51cGxvYWQtZGlhbG9nLWZvb3RlciBidXR0b24gewogICAgcGFkZGluZzogOHB4IDIw
cHg7CiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS10ZXh0LWhlYWRpbmcpOwogICAgYmFja2dy
b3VuZDogdmFyKC0tYmctY2FyZCk7CiAgICBjb2xvcjogdmFyKC0tdGV4dC1oZWFkaW5nKTsKICAg
IGJvcmRlci1yYWRpdXM6IDRweDsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIGZvbnQtd2VpZ2h0
OiA2MDA7CiAgICB0cmFuc2l0aW9uOiB2YXIoLS10cmFuc2l0aW9uLXN0ZCk7Cn0KCi51cGxvYWQt
ZGlhbG9nLWZvb3RlciBidXR0b24ucHJpbWFyeSB7IGJhY2tncm91bmQ6ICMyZDlkNzg7IGNvbG9y
OiB3aGl0ZTsgYm9yZGVyLWNvbG9yOiAjMmQ5ZDc4OyB9Ci51cGxvYWQtZGlhbG9nLWZvb3RlciBi
dXR0b24ucHJpbWFyeTpob3ZlciB7IGJhY2tncm91bmQ6ICMxZTdhNWY7IH0KCi51cGxvYWQtZHJv
cC16b25lIHsKICAgIGJvcmRlcjogMnB4IGRhc2hlZCB2YXIoLS1ib3JkZXItY29sb3IsICNjY2Mp
OwogICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgcGFkZGluZzogMzJweCAyMHB4OwogICAgdGV4
dC1hbGlnbjogY2VudGVyOwogICAgdHJhbnNpdGlvbjogYWxsIDAuMnM7CiAgICBjdXJzb3I6IHBv
aW50ZXI7Cn0KLnVwbG9hZC1kcm9wLXpvbmU6aG92ZXIsIC51cGxvYWQtZHJvcC16b25lLmRyYWct
b3ZlciB7CiAgICBib3JkZXItY29sb3I6ICMyZDlkNzg7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDQ1
LCAxNTcsIDEyMCwgMC4wNik7Cn0KLnVwbG9hZC1kcm9wLXpvbmUuZHJhZy1vdmVyIHsKICAgIGJv
cmRlci1zdHlsZTogc29saWQ7CiAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMDEpOwp9Ci51cGxvYWQt
c3RhcnQtYnRuIHsKICAgIHBhZGRpbmc6IDEwcHggMjhweDsKICAgIGJhY2tncm91bmQ6ICMyZDlk
Nzg7CiAgICBjb2xvcjogd2hpdGU7CiAgICBib3JkZXI6IG5vbmU7CiAgICBib3JkZXItcmFkaXVz
OiA2cHg7CiAgICBmb250LXNpemU6IDE0cHg7CiAgICBmb250LXdlaWdodDogNjAwOwogICAgY3Vy
c29yOiBwb2ludGVyOwogICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjJzOwp9Ci51cGxvYWQt
c3RhcnQtYnRuOmhvdmVyIHsgYmFja2dyb3VuZDogIzFlN2E1ZjsgfQoKLyogLS0tIE1lZGlhIENv
bnRleHQgTWVudSAoRWRpdG9yKSAtLS0gKi8KLm1lZGlhLWNvbnRleHQtbWVudSB7CiAgICBkaXNw
bGF5OiBub25lOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgYmFja2dyb3VuZDogdmFyKC0t
YmctY2FyZCk7CiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3IpOwogICAg
Ym9yZGVyLXJhZGl1czogNnB4OwogICAgYm94LXNoYWRvdzogMCA0cHggMTZweCB2YXIoLS1zaGFk
b3ctbWVkaXVtKTsKICAgIHotaW5kZXg6IDMwMDA7CiAgICBwYWRkaW5nOiA4cHg7CiAgICBtaW4t
d2lkdGg6IDE4MHB4Owp9CgoubWVkaWEtY29udGV4dC1tZW51LmFjdGl2ZSB7IGRpc3BsYXk6IGJs
b2NrOyB9CgoubWVkaWEtY29udGV4dC1tZW51IGJ1dHRvbiB7CiAgICBkaXNwbGF5OiBibG9jazsK
ICAgIHdpZHRoOiAxMDAlOwogICAgcGFkZGluZzogNnB4IDEwcHg7CiAgICBib3JkZXI6IG5vbmU7
CiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgIHRleHQtYWxpZ246IGxlZnQ7CiAgICBj
dXJzb3I6IHBvaW50ZXI7CiAgICBmb250LXNpemU6IDEzcHg7CiAgICBib3JkZXItcmFkaXVzOiAz
cHg7CiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDAuMTVzOwp9CgoubWVkaWEtY29udGV4dC1t
ZW51IGJ1dHRvbiB7IGNvbG9yOiB2YXIoLS10ZXh0LXByaW1hcnkpOyB9Ci5tZWRpYS1jb250ZXh0
LW1lbnUgYnV0dG9uOmhvdmVyIHsgYmFja2dyb3VuZDogdmFyKC0tYmctaG92ZXIpOyB9CgoubWVk
aWEtY29udGV4dC1zZXAgeyBoZWlnaHQ6IDFweDsgYmFja2dyb3VuZDogdmFyKC0tYm9yZGVyLWxp
Z2h0KTsgbWFyZ2luOiA0cHggMDsgfQoKLm1lZGlhLWNvbnRleHQtZ3JvdXAgeyBkaXNwbGF5OiBm
bGV4OyBnYXA6IDRweDsgcGFkZGluZzogNHB4IDZweDsgfQoKLm1lZGlhLWNvbnRleHQtZ3JvdXAg
YnV0dG9uIHsKICAgIGZsZXg6IDE7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICBwYWRkaW5n
OiA1cHggOHB4OwogICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWNvbG9yKSAhaW1w
b3J0YW50OwogICAgYm9yZGVyLXJhZGl1czogM3B4OwogICAgZm9udC1zaXplOiAxMnB4OwogICAg
Y29sb3I6IHZhcigtLXRleHQtcHJpbWFyeSk7Cn0KCi5tZWRpYS1jb250ZXh0LWdyb3VwIGJ1dHRv
bi5hY3RpdmUgeyBiYWNrZ3JvdW5kOiB2YXIoLS10ZXh0LWhlYWRpbmcpOyBjb2xvcjogd2hpdGU7
IGJvcmRlci1jb2xvcjogdmFyKC0tdGV4dC1oZWFkaW5nKSAhaW1wb3J0YW50OyB9CgovKiAtLS0g
VW5pdmVyc2FsIE1lZGlhIE1vZGFsIEV4dHJhcyAtLS0gKi8KLmF1ZGlvLW1vZGFsLWNvbnRlbnQs
IC5vZmZpY2UtbW9kYWwtY29udGVudCwgLmZpbGUtbW9kYWwtY29udGVudCB7CiAgICB0ZXh0LWFs
aWduOiBjZW50ZXI7CiAgICBwYWRkaW5nOiA0MHB4OwogICAgY29sb3I6IHdoaXRlOwp9CgouYXVk
aW8tbW9kYWwtY29udGVudCAuYXVkaW8taWNvbiwgLm9mZmljZS1tb2RhbC1jb250ZW50IC5vZmZp
Y2UtaWNvbiB7CiAgICBmb250LXNpemU6IDY0cHg7CiAgICBtYXJnaW4tYm90dG9tOiAxNXB4Owp9
CgouYXVkaW8tbW9kYWwtY29udGVudCBwLCAub2ZmaWNlLW1vZGFsLWNvbnRlbnQgcCB7IGZvbnQt
c2l6ZTogMThweDsgbWFyZ2luLWJvdHRvbTogMTVweDsgfQoub2ZmaWNlLW1vZGFsLWNvbnRlbnQg
Lm9mZmljZS1oaW50IHsgZm9udC1zaXplOiAxNHB4OyBvcGFjaXR5OiAwLjc7IG1hcmdpbi1ib3R0
b206IDIwcHg7IH0KCi5vZmZpY2UtZG93bmxvYWQtYnRuIHsKICAgIGRpc3BsYXk6IGlubGluZS1i
bG9jazsKICAgIHBhZGRpbmc6IDEycHggMzBweDsKICAgIGJhY2tncm91bmQ6ICMyRTRBNjI7CiAg
ICBjb2xvcjogd2hpdGU7CiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgICBib3JkZXItcmFk
aXVzOiA0cHg7CiAgICBmb250LXdlaWdodDogNjAwOwogICAgdHJhbnNpdGlvbjogYmFja2dyb3Vu
ZCAwLjJzOwp9Cgoub2ZmaWNlLWRvd25sb2FkLWJ0bjpob3ZlciB7IGJhY2tncm91bmQ6ICMxZTM0
NDc7IH0KCi8qIC0tLSBHb3Zlcm5hbmNlOiBSZXZpZXcgQmFkZ2UgLS0tICovCi5yZXZpZXctYmFk
Z2UgewogICAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwog
ICAgZ2FwOiA2cHg7CiAgICBwYWRkaW5nOiAzcHggMTBweDsKICAgIGJhY2tncm91bmQ6ICNkYzM1
NDU7CiAgICBjb2xvcjogd2hpdGU7CiAgICBib3JkZXItcmFkaXVzOiAxMnB4OwogICAgZm9udC1z
aXplOiAxMnB4OwogICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAg
IGFuaW1hdGlvbjogcmV2aWV3UHVsc2UgMnMgZWFzZS1pbi1vdXQgaW5maW5pdGU7CiAgICB0cmFu
c2l0aW9uOiBhbGwgMC4yczsKfQoKLnJldmlldy1iYWRnZTpob3ZlciB7IGJhY2tncm91bmQ6ICNj
ODIzMzM7IHRyYW5zZm9ybTogc2NhbGUoMS4wNSk7IH0KCkBrZXlmcmFtZXMgcmV2aWV3UHVsc2Ug
ewogICAgMCUsIDEwMCUgeyBib3gtc2hhZG93OiAwIDAgMCAwIHJnYmEoMjIwLDUzLDY5LDAuNCk7
IH0KICAgIDUwJSB7IGJveC1zaGFkb3c6IDAgMCAwIDZweCByZ2JhKDIyMCw1Myw2OSwwKTsgfQp9
CgovKiAtLS0gR292ZXJuYW5jZTogUmV2aWV3IFBhbmVsIC0tLSAqLwoucmV2aWV3LXBhbmVsLW92
ZXJsYXkgewogICAgZGlzcGxheTogbm9uZTsKICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgIHRvcDog
MDsgbGVmdDogMDsgd2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJTsKICAgIGJhY2tncm91bmQ6IHJn
YmEoMCwwLDAsMC4zKTsKICAgIHotaW5kZXg6IDE0OTk7Cn0KLnJldmlldy1wYW5lbC1vdmVybGF5
LmFjdGl2ZSB7IGRpc3BsYXk6IGJsb2NrOyB9CgoucmV2aWV3LXBhbmVsIHsKICAgIGRpc3BsYXk6
IG5vbmU7CiAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICB0b3A6IDA7IHJpZ2h0OiAwOwogICAgd2lk
dGg6IDM0MHB4OwogICAgbWF4LXdpZHRoOiA5NXZ3OwogICAgaGVpZ2h0OiAxMDAlOwogICAgYmFj
a2dyb3VuZDogdmFyKC0tYmctY2FyZCk7CiAgICBib3gtc2hhZG93OiAtNHB4IDAgMjBweCB2YXIo
LS1zaGFkb3ctbWVkaXVtKTsKICAgIHotaW5kZXg6IDE1MDA7CiAgICBmbGV4LWRpcmVjdGlvbjog
Y29sdW1uOwp9CgoucmV2aWV3LXBhbmVsLmFjdGl2ZSB7IGRpc3BsYXk6IGZsZXg7IH0KCi5yZXZp
ZXctcGFuZWwtaGVhZGVyIHsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLXByaW1hcnkpOwogICAg
Y29sb3I6IHdoaXRlOwogICAgcGFkZGluZzogMTVweCAyMHB4OwogICAgZGlzcGxheTogZmxleDsK
ICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgIGFsaWduLWl0ZW1zOiBjZW50
ZXI7CiAgICBmb250LXdlaWdodDogNjAwOwogICAgZm9udC1zaXplOiAxNnB4Owp9CgoucmV2aWV3
LXBhbmVsLWhlYWRlciBidXR0b24gewogICAgYmFja2dyb3VuZDogcmdiYSgyNTUsMjU1LDI1NSww
LjE1KTsgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwwLjQpOyBjb2xvcjogd2hp
dGU7CiAgICBwYWRkaW5nOiA1cHggMTRweDsgYm9yZGVyLXJhZGl1czogNHB4OyBjdXJzb3I6IHBv
aW50ZXI7IGZvbnQtc2l6ZTogMTJweDsKfQoucmV2aWV3LXBhbmVsLWhlYWRlciBidXR0b246aG92
ZXIgeyBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwyNTUsMjU1LDAuMjUpOyB9CgoucmV2aWV3LXBhbmVs
LWJvZHkgeyBmbGV4OiAxOyBvdmVyZmxvdy15OiBhdXRvOyBwYWRkaW5nOiAxNXB4OyB9CgoucmV2
aWV3LWl0ZW0gewogICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWxpZ2h0KTsKICAg
IGJvcmRlci1yYWRpdXM6IDZweDsKICAgIHBhZGRpbmc6IDEycHg7CiAgICBtYXJnaW4tYm90dG9t
OiAxMHB4OwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgdHJhbnNpdGlvbjogYWxsIDAuMnM7Cn0K
Ci5yZXZpZXctaXRlbTpob3ZlciB7IGJvcmRlci1jb2xvcjogdmFyKC0tdGV4dC1oZWFkaW5nKTsg
YmFja2dyb3VuZDogdmFyKC0tYmctaG92ZXIpOyB9CgoucmV2aWV3LWl0ZW0tdGl0bGUgeyBmb250
LXdlaWdodDogNjAwOyBjb2xvcjogdmFyKC0tdGV4dC1oZWFkaW5nKTsgbWFyZ2luLWJvdHRvbTog
NHB4OyB9Ci5yZXZpZXctaXRlbS1tZXRhIHsgZm9udC1zaXplOiAxMnB4OyBjb2xvcjogdmFyKC0t
dGV4dC1tdXRlZCk7IGRpc3BsYXk6IGZsZXg7IGdhcDogMTBweDsgZmxleC13cmFwOiB3cmFwOyB9
CgoucmV2aWV3LWl0ZW0tYWN0aW9ucyB7IGRpc3BsYXk6IGZsZXg7IGdhcDogNnB4OyBtYXJnaW4t
dG9wOiA4cHg7IH0KCi5yZXZpZXctaXRlbS1hY3Rpb25zIGJ1dHRvbiB7CiAgICBwYWRkaW5nOiA1
cHggMTJweDsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1jb2xvcik7CiAgICBi
YWNrZ3JvdW5kOiB2YXIoLS1iZy1jYXJkKTsKICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgIGN1
cnNvcjogcG9pbnRlcjsKICAgIGZvbnQtc2l6ZTogMTJweDsKICAgIGZvbnQtd2VpZ2h0OiA1MDA7
CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4yczsKfQoKLnJldmlldy1pdGVtLWFjdGlvbnMgLmJ0bi1h
cHByb3ZlIHsgYm9yZGVyLWNvbG9yOiAjMjhhNzQ1OyBjb2xvcjogIzI4YTc0NTsgfQoucmV2aWV3
LWl0ZW0tYWN0aW9ucyAuYnRuLWFwcHJvdmU6aG92ZXIgeyBiYWNrZ3JvdW5kOiAjMjhhNzQ1OyBj
b2xvcjogd2hpdGU7IH0KLnJldmlldy1pdGVtLWFjdGlvbnMgLmJ0bi1yZWplY3QgeyBib3JkZXIt
Y29sb3I6ICNkYzM1NDU7IGNvbG9yOiAjZGMzNTQ1OyB9Ci5yZXZpZXctaXRlbS1hY3Rpb25zIC5i
dG4tcmVqZWN0OmhvdmVyIHsgYmFja2dyb3VuZDogI2RjMzU0NTsgY29sb3I6IHdoaXRlOyB9Cgov
KiAtLS0gR292ZXJuYW5jZTogUmV2aWV3IERpYWxvZyAtLS0gKi8KLnJldmlldy1kaWFsb2cgewog
ICAgZGlzcGxheTogbm9uZTsKICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgIHRvcDogMDsgbGVmdDog
MDsKICAgIHdpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDAs
MCwwLDAuNSk7CiAgICB6LWluZGV4OiAyNTAwOwp9CgoucmV2aWV3LWRpYWxvZy5hY3RpdmUgeyBk
aXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRl
cjsgfQoKLnJldmlldy1kaWFsb2ctY29udGVudCB7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1j
YXJkKTsKICAgIGJvcmRlci1yYWRpdXM6IDhweDsKICAgIHdpZHRoOiA5MDBweDsKICAgIG1heC13
aWR0aDogOTUlOwogICAgbWF4LWhlaWdodDogODV2aDsKICAgIGRpc3BsYXk6IGZsZXg7IGZsZXgt
ZGlyZWN0aW9uOiBjb2x1bW47CiAgICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctbW9kYWwpOwog
ICAgb3ZlcmZsb3c6IGhpZGRlbjsKfQoKLnJldmlldy1kaWFsb2ctaGVhZGVyIHsKICAgIHBhZGRp
bmc6IDE0cHggMjBweDsKICAgIGJvcmRlci1yYWRpdXM6IDhweCA4cHggMCAwOwogICAgZm9udC13
ZWlnaHQ6IDYwMDsKICAgIGZvbnQtc2l6ZTogMTVweDsKICAgIGNvbG9yOiB3aGl0ZTsKICAgIGZs
ZXgtc2hyaW5rOiAwOwogICAgZGlzcGxheTogZmxleDsganVzdGlmeS1jb250ZW50OiBzcGFjZS1i
ZXR3ZWVuOyBhbGlnbi1pdGVtczogY2VudGVyOwp9CgoucmV2aWV3LWRpYWxvZy1oZWFkZXIuYXBw
cm92ZSB7IGJhY2tncm91bmQ6ICMyOGE3NDU7IH0KLnJldmlldy1kaWFsb2ctaGVhZGVyLnJlamVj
dCB7IGJhY2tncm91bmQ6ICNkYzM1NDU7IH0KCi5yZXZpZXctZGlhbG9nLWJvZHkgewogICAgcGFk
ZGluZzogMDsgY29sb3I6IHZhcigtLXRleHQtcHJpbWFyeSk7CiAgICBmbGV4OiAxOyBtaW4taGVp
Z2h0OiAwOyBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBvdmVyZmxvdzog
aGlkZGVuOwp9CgoucmV2aWV3LXNwbGl0IHsKICAgIGRpc3BsYXk6IGdyaWQ7IGdyaWQtdGVtcGxh
dGUtY29sdW1uczogMWZyIDFmcjsgZmxleDogMTsgbWluLWhlaWdodDogMDsgb3ZlcmZsb3c6IGhp
ZGRlbjsKfQoucmV2aWV3LXNwbGl0LWxlZnQgewogICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQg
dmFyKC0tYm9yZGVyLWxpZ2h0KTsgb3ZlcmZsb3cteTogYXV0bzsgcGFkZGluZzogMTZweDsKICAg
IGZvbnQtc2l6ZTogMTRweDsgbGluZS1oZWlnaHQ6IDEuNzsgY29sb3I6IHZhcigtLXRleHQtcHJp
bWFyeSk7Cn0KLnJldmlldy1zcGxpdC1sZWZ0IGgzIHsgY29sb3I6IHZhcigtLXRleHQtaGVhZGlu
Zyk7IGZvbnQtc2l6ZTogMTRweDsgbWFyZ2luLWJvdHRvbTogOHB4OyB9Ci5yZXZpZXctc3BsaXQt
cmlnaHQgewogICAgb3ZlcmZsb3cteTogYXV0bzsgcGFkZGluZzogMTZweDsgZGlzcGxheTogZmxl
eDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgZ2FwOiAxMHB4Owp9Ci5yZXZpZXctc3BsaXQtcmln
aHQgaDMgeyBjb2xvcjogdmFyKC0tdGV4dC1oZWFkaW5nKTsgZm9udC1zaXplOiAxNHB4OyBtYXJn
aW4tYm90dG9tOiA0cHg7IH0KCi5yZXZpZXctcHJldi1jb21tZW50cyB7IGRpc3BsYXk6IGZsZXg7
IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IGdhcDogNnB4OyBtYXJnaW4tYm90dG9tOiAxMHB4OyB9
Ci5yZXZpZXctY29tbWVudC1idWJibGUgewogICAgcGFkZGluZzogOHB4IDEwcHg7IGJvcmRlci1y
YWRpdXM6IDZweDsgZm9udC1zaXplOiAxMnB4OyBsaW5lLWhlaWdodDogMS41OwogICAgYm9yZGVy
LWxlZnQ6IDNweCBzb2xpZDsgcG9zaXRpb246IHJlbGF0aXZlOwp9Ci5yZXZpZXctY29tbWVudC1i
dWJibGUgLnJjLWF1dGhvciB7IGZvbnQtd2VpZ2h0OiA2MDA7IGZvbnQtc2l6ZTogMTFweDsgfQou
cmV2aWV3LWNvbW1lbnQtYnViYmxlIC5yYy10ZXh0IHsgbWFyZ2luLXRvcDogM3B4OyBjb2xvcjog
dmFyKC0tdGV4dC1wcmltYXJ5KTsgfQoucmV2aWV3LWNvbW1lbnQtYnViYmxlIC5yYy1kYXRlIHsK
ICAgIGZvbnQtc2l6ZTogMTBweDsgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpOyBwb3NpdGlvbjog
YWJzb2x1dGU7IHRvcDogNHB4OyByaWdodDogOHB4Owp9CgoucmV2aWV3LWRpYWxvZy1ib2R5IHRl
eHRhcmVhIHsKICAgIHdpZHRoOiAxMDAlOyBtaW4taGVpZ2h0OiAxMDBweDsgcGFkZGluZzogMTBw
eDsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1jb2xvcik7IGJvcmRlci1yYWRp
dXM6IDRweDsgZm9udC1zaXplOiAxM3B4OyByZXNpemU6IHZlcnRpY2FsOwogICAgYmFja2dyb3Vu
ZDogdmFyKC0tYmctaW5wdXQpOyBjb2xvcjogdmFyKC0tdGV4dC1wcmltYXJ5KTsgZmxleC1zaHJp
bms6IDA7Cn0KCi5yZXZpZXctZGlhbG9nLWZvb3RlciB7CiAgICBwYWRkaW5nOiAxMnB4IDIwcHg7
CiAgICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWxpZ2h0KTsKICAgIGRpc3Bs
YXk6IGZsZXg7IGdhcDogMTBweDsganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsgZmxleC1zaHJp
bms6IDA7Cn0KCi5yZXZpZXctZGlhbG9nLWZvb3RlciBidXR0b24gewogICAgcGFkZGluZzogOHB4
IDIwcHg7CiAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICBm
b250LXdlaWdodDogNjAwOwogICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWNvbG9y
KTsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLWNhcmQpOwogICAgY29sb3I6IHZhcigtLXRleHQt
cHJpbWFyeSk7Cn0KCi5yZXZpZXctZGlhbG9nLWZvb3RlciAuYnRuLWNvbmZpcm0geyBjb2xvcjog
d2hpdGU7IGJvcmRlcjogbm9uZTsgfQoucmV2aWV3LWRpYWxvZy1mb290ZXIgLmJ0bi1jb25maXJt
LmFwcHJvdmUgeyBiYWNrZ3JvdW5kOiAjMjhhNzQ1OyB9Ci5yZXZpZXctZGlhbG9nLWZvb3RlciAu
YnRuLWNvbmZpcm0ucmVqZWN0IHsgYmFja2dyb3VuZDogI2RjMzU0NTsgfQoKI3Jldmlld0RpYWxv
Z0NvbW1lbnQ6ZW1wdHk6OmJlZm9yZSB7CiAgICBjb250ZW50OiBhdHRyKGRhdGEtcGxhY2Vob2xk
ZXIpOyBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7IHBvaW50ZXItZXZlbnRzOiBub25lOwp9CiNy
ZXZpZXdEaWFsb2dDb21tZW50IHVsLCAjcmV2aWV3RGlhbG9nQ29tbWVudCBvbCB7IHBhZGRpbmct
bGVmdDogMThweDsgbWFyZ2luOiA0cHggMDsgfQoKLyogLS0tIEdvdmVybmFuY2U6IEFkbWluIFBh
bmVsIC0tLSAqLwouZ292LWFkbWluLXBhbmVsIHsKICAgIGRpc3BsYXk6IG5vbmU7CiAgICBwb3Np
dGlvbjogZml4ZWQ7CiAgICB0b3A6IDA7IGxlZnQ6IDA7CiAgICB3aWR0aDogMTAwJTsgaGVpZ2h0
OiAxMDAlOwogICAgYmFja2dyb3VuZDogcmdiYSgwLDAsMCwwLjUpOwogICAgei1pbmRleDogMjAw
MDsKfQoKLmdvdi1hZG1pbi1wYW5lbC5hY3RpdmUgeyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVt
czogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgfQoKLmdvdi1hZG1pbi1jb250ZW50
IHsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLWNhcmQtYWx0KTsKICAgIGJvcmRlci1yYWRpdXM6
IDEwcHg7CiAgICB3aWR0aDogOTIwcHg7CiAgICBtYXgtd2lkdGg6IDk1JTsKICAgIG1heC1oZWln
aHQ6IDg1dmg7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgZGlzcGxheTogZmxleDsKICAgIGZs
ZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICBib3gtc2hhZG93OiAwIDEycHggNDhweCByZ2JhKDAs
MCwwLDAuMjUpOwp9CgouZ292LWFkbWluLWhlYWRlciB7CiAgICBiYWNrZ3JvdW5kOiAjMWEyMzMy
OwogICAgY29sb3I6IHdoaXRlOwogICAgcGFkZGluZzogMTZweCAyNHB4OwogICAgYm9yZGVyLXJh
ZGl1czogMTBweCAxMHB4IDAgMDsKICAgIGRpc3BsYXk6IGZsZXg7IGp1c3RpZnktY29udGVudDog
c3BhY2UtYmV0d2VlbjsgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGZvbnQtd2VpZ2h0OiA2MDA7
IGZvbnQtc2l6ZTogMTZweDsKfQoKLmdvdi1hZG1pbi1oZWFkZXIgYnV0dG9uIHsKICAgIGJhY2tn
cm91bmQ6IHJnYmEoMjU1LDI1NSwyNTUsMC4xNSk7IGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1
LDI1NSwyNTUsMC40KTsgY29sb3I6IHdoaXRlOwogICAgcGFkZGluZzogNXB4IDE0cHg7IGJvcmRl
ci1yYWRpdXM6IDRweDsgY3Vyc29yOiBwb2ludGVyOyBmb250LXNpemU6IDEzcHg7IHRyYW5zaXRp
b246IGJhY2tncm91bmQgMC4yczsKfQoKLmdvdi1hZG1pbi1oZWFkZXIgYnV0dG9uOmhvdmVyIHsg
YmFja2dyb3VuZDogcmdiYSgyNTUsMjU1LDI1NSwwLjI1KTsgfQoKLmdvdi1hZG1pbi10b29sYmFy
IHsKICAgIHBhZGRpbmc6IDEwcHggMjBweDsKICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2
YXIoLS1ib3JkZXItbGlnaHQpOwogICAgZGlzcGxheTogZmxleDsgZ2FwOiA4cHg7IGZsZXgtd3Jh
cDogd3JhcDsgZmxleC1zaHJpbms6IDA7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1jYXJkLWFs
dCk7Cn0KCi5nb3YtYWRtaW4tYm9keSB7IHBhZGRpbmc6IDIwcHg7IG92ZXJmbG93LXk6IGF1dG87
IGZsZXg6IDE7IG1pbi1oZWlnaHQ6IDA7IH0KCi5nb3Ytc2VjdGlvbiB7CiAgICBiYWNrZ3JvdW5k
OiB2YXIoLS1iZy1jYXJkKTsKICAgIGJvcmRlci1yYWRpdXM6IDhweDsKICAgIHBhZGRpbmc6IDE2
cHggMThweDsKICAgIG1hcmdpbi1ib3R0b206IDE0cHg7CiAgICBib3gtc2hhZG93OiAwIDFweCAz
cHggdmFyKC0tc2hhZG93LWxpZ2h0KTsKfQoKLmdvdi1zZWN0aW9uLXRpdGxlIHsKICAgIGZvbnQt
c2l6ZTogMTNweDsKICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICBjb2xvcjogdmFyKC0tdGV4dC1o
ZWFkaW5nKTsKICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICBsZXR0ZXItc3BhY2lu
ZzogMC41cHg7CiAgICBtYXJnaW4tYm90dG9tOiAxMHB4OwogICAgcGFkZGluZy1ib3R0b206IDhw
eDsKICAgIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCB2YXIoLS1ib3JkZXItbGlnaHQpOwp9Cgou
Z292LXVzZXItcm93IHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBhbGlnbi1pdGVtczogY2VudGVy
OwogICAgZ2FwOiAxMHB4OwogICAgcGFkZGluZzogOHB4IDEycHg7CiAgICBib3JkZXI6IDFweCBz
b2xpZCB2YXIoLS1ib3JkZXItbGlnaHQpOwogICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgbWFy
Z2luLWJvdHRvbTogNnB4OwogICAgYmFja2dyb3VuZDogdmFyKC0tYmctY2FyZCk7CiAgICB0cmFu
c2l0aW9uOiBib3JkZXItY29sb3IgMC4xNXM7Cn0KCi5nb3YtdXNlci1yb3c6aG92ZXIgeyBib3Jk
ZXItY29sb3I6IHZhcigtLWJvcmRlci1zdHJvbmcpOyB9CgouZ292LXVzZXItcm93IC5nb3Ytcm9s
ZS1pY29uIHsKICAgIHdpZHRoOiAyOHB4OyBoZWlnaHQ6IDI4cHg7IGJvcmRlci1yYWRpdXM6IDUw
JTsKICAgIGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVu
dDogY2VudGVyOwogICAgZm9udC1zaXplOiAxM3B4OyBmbGV4LXNocmluazogMDsKfQoKLmdvdi11
c2VyLXJvdyAuZ292LXJvbGUtaWNvbi5zdSB7IGJhY2tncm91bmQ6ICNlOGYwZmU7IGNvbG9yOiAj
MWE1NmRiOyB9Ci5nb3YtdXNlci1yb3cgLmdvdi1yb2xlLWljb24ucmV2IHsgYmFja2dyb3VuZDog
I2ZlZjNlMjsgY29sb3I6ICNiNDUzMDk7IH0KCi5nb3YtdXNlci1yb3cgLmdvdi11c2VyLWluZm8g
eyBmbGV4OiAxOyBtaW4td2lkdGg6IDA7IH0KLmdvdi11c2VyLXJvdyAuZ292LXVzZXItaW5mbyAu
Z292LXVzZXItbmFtZSB7IGZvbnQtd2VpZ2h0OiA2MDA7IGZvbnQtc2l6ZTogMTNweDsgY29sb3I6
IHZhcigtLXRleHQtcHJpbWFyeSk7IH0KLmdvdi11c2VyLXJvdyAuZ292LXVzZXItaW5mbyAuZ292
LXVzZXItZGV0YWlsIHsgZm9udC1zaXplOiAxMXB4OyBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7
IG1hcmdpbi10b3A6IDFweDsgfQoKLmdvdi11c2VyLXJvdyAuZ292LWNhdC10YWdzIHsgZGlzcGxh
eTogZmxleDsgZ2FwOiA0cHg7IGZsZXgtd3JhcDogd3JhcDsgZmxleDogMTsgfQoKLmdvdi1jYXQt
dGFnIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsgcGFkZGluZzogMnB4IDhweDsgYm9yZGVy
LXJhZGl1czogMTBweDsKICAgIGZvbnQtc2l6ZTogMTFweDsgZm9udC13ZWlnaHQ6IDUwMDsgYmFj
a2dyb3VuZDogdmFyKC0tYmctYWN0aXZlKTsgY29sb3I6IHZhcigtLXRleHQtaGVhZGluZyk7Cn0K
Ci5nb3YtdXNlci1yb3cgYnV0dG9uIHsKICAgIHBhZGRpbmc6IDRweCAxMHB4OyBib3JkZXI6IDFw
eCBzb2xpZCB2YXIoLS1ib3JkZXItbGlnaHQpOyBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1jYXJkLWFs
dCk7CiAgICBib3JkZXItcmFkaXVzOiA0cHg7IGN1cnNvcjogcG9pbnRlcjsgZm9udC1zaXplOiAx
MXB4OyBjb2xvcjogdmFyKC0tdGV4dC1zZWNvbmRhcnkpOyB0cmFuc2l0aW9uOiBhbGwgMC4xNXM7
Cn0KCi5nb3YtdXNlci1yb3cgYnV0dG9uLnJlbW92ZSB7IGNvbG9yOiAjZGMzNTQ1OyBib3JkZXIt
Y29sb3I6ICNmNWM2Y2I7IH0KLmdvdi11c2VyLXJvdyBidXR0b24ucmVtb3ZlOmhvdmVyIHsgYmFj
a2dyb3VuZDogI2RjMzU0NTsgY29sb3I6IHdoaXRlOyB9Ci5nb3YtY2F0LWl0ZW0gYnV0dG9uIHsg
YmFja2dyb3VuZDogdmFyKC0tYmctcHJpbWFyeSk7IGNvbG9yOiB3aGl0ZTsgYm9yZGVyOiAxcHgg
c29saWQgdmFyKC0tYmctcHJpbWFyeSk7IHBhZGRpbmc6IDVweCAxNHB4OyBmb250LXNpemU6IDEy
cHg7IGJvcmRlci1yYWRpdXM6IDRweDsgY3Vyc29yOiBwb2ludGVyOyB9Ci5nb3YtY2F0LWl0ZW0g
YnV0dG9uOmhvdmVyIHsgb3BhY2l0eTogMC44NTsgfQouZ292LWNhdC1pdGVtLmhpZGRlbi1jYXQg
eyBvcGFjaXR5OiAwLjQ1OyB9Ci5nb3YtY2F0LWl0ZW0uaGlkZGVuLWNhdCAuZ292LWNhdC1uYW1l
IHsgdGV4dC1kZWNvcmF0aW9uOiBsaW5lLXRocm91Z2g7IH0KCi5nb3YtYWRkLWdyaWQgewogICAg
ZGlzcGxheTogZ3JpZDsKICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMC42ZnIgMWZyOwogICAg
Z2FwOiAxMHB4OwogICAgbWFyZ2luLXRvcDogMTBweDsKfQoKLmdvdi1maWVsZCB7IGRpc3BsYXk6
IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IGdhcDogM3B4OyB9CgouZ292LWZpZWxkLmZ1
bGwtd2lkdGggeyBncmlkLWNvbHVtbjogMSAvIC0xOyB9CgouZ292LWZpZWxkIGxhYmVsIHsgZm9u
dC1zaXplOiAxMXB4OyBjb2xvcjogdmFyKC0tdGV4dC1zZWNvbmRhcnkpOyBmb250LXdlaWdodDog
NjAwOyB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOyBsZXR0ZXItc3BhY2luZzogMC4zcHg7IH0K
Ci5nb3YtZmllbGQgaW5wdXQsIC5nb3YtZmllbGQgc2VsZWN0IHsKICAgIHBhZGRpbmc6IDZweCAx
MHB4OyBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItc3Ryb25nKTsgYm9yZGVyLXJhZGl1
czogNXB4OwogICAgZm9udC1zaXplOiAxM3B4OyBoZWlnaHQ6IDMycHg7IGJhY2tncm91bmQ6IHZh
cigtLWJnLWlucHV0KTsgY29sb3I6IHZhcigtLXRleHQtcHJpbWFyeSk7IHRyYW5zaXRpb246IGJv
cmRlci1jb2xvciAwLjE1czsKfQoKLmdvdi1maWVsZCBpbnB1dDpmb2N1cywgLmdvdi1maWVsZCBz
ZWxlY3Q6Zm9jdXMgeyBib3JkZXItY29sb3I6IHZhcigtLXRleHQtaGVhZGluZyk7IG91dGxpbmU6
IG5vbmU7IGJveC1zaGFkb3c6IDAgMCAwIDJweCByZ2JhKDQ2LDc0LDk4LDAuMSk7IH0KCi5nb3Yt
ZmllbGQgc2VsZWN0W211bHRpcGxlXSB7IGhlaWdodDogYXV0bzsgbWluLWhlaWdodDogNDhweDsg
fQoKLmdvdi1maWVsZCAuZ292LWhpbnQgeyBmb250LXNpemU6IDEwcHg7IGNvbG9yOiAjOTk5OyBm
b250LXN0eWxlOiBpdGFsaWM7IH0KCi5nb3YtYWRkLWFjdGlvbnMgeyBncmlkLWNvbHVtbjogMSAv
IC0xOyBkaXNwbGF5OiBmbGV4OyBnYXA6IDhweDsgbWFyZ2luLXRvcDogNHB4OyB9CgouZ292LWFk
ZC1idG4gewogICAgcGFkZGluZzogOHB4IDIwcHg7IGJhY2tncm91bmQ6IHZhcigtLXRleHQtaGVh
ZGluZyk7IGNvbG9yOiB3aGl0ZTsKICAgIGJvcmRlcjogbm9uZTsgYm9yZGVyLXJhZGl1czogNnB4
OyBjdXJzb3I6IHBvaW50ZXI7IGZvbnQtd2VpZ2h0OiA2MDA7IGZvbnQtc2l6ZTogMTNweDsKICAg
IHRyYW5zaXRpb246IGFsbCAwLjE1czsKfQoKLmdvdi1hZGQtYnRuOmhvdmVyIHsgb3BhY2l0eTog
MC44NTsgfQouZ292LWJ0bi1kYW5nZXIgeyBiYWNrZ3JvdW5kOiAjOGIxYTFhICFpbXBvcnRhbnQ7
IH0KW2RhdGEtdGhlbWU9Im5pZ2h0Il0gLmdvdi1idG4tZGFuZ2VyIHsgYmFja2dyb3VuZDogI2E4
MzIzMiAhaW1wb3J0YW50OyB9CgouZ292LWNhbmNlbC1idG4gewogICAgcGFkZGluZzogOHB4IDIw
cHg7IGJhY2tncm91bmQ6IHZhcigtLWJvcmRlci1zdHJvbmcpOyBjb2xvcjogdmFyKC0tdGV4dC1w
cmltYXJ5KTsKICAgIGJvcmRlcjogbm9uZTsgYm9yZGVyLXJhZGl1czogNnB4OyBjdXJzb3I6IHBv
aW50ZXI7IGZvbnQtd2VpZ2h0OiA2MDA7IGZvbnQtc2l6ZTogMTNweDsKICAgIHRyYW5zaXRpb246
IGFsbCAwLjE1czsKfQoKLmdvdi1jYW5jZWwtYnRuOmhvdmVyIHsgb3BhY2l0eTogMC44NTsgfQoK
Lmdvdi11c2VyLXJvdyBidXR0b24uZWRpdCB7CiAgICBwYWRkaW5nOiAzcHggMTBweDsgYmFja2dy
b3VuZDogdmFyKC0tYmctY2FyZCk7IGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXRleHQtaGVhZGlu
Zyk7IGNvbG9yOiB2YXIoLS10ZXh0LWhlYWRpbmcpOwogICAgYm9yZGVyLXJhZGl1czogNHB4OyBj
dXJzb3I6IHBvaW50ZXI7IGZvbnQtc2l6ZTogMTFweDsgdHJhbnNpdGlvbjogYWxsIDAuMTVzOwp9
CgouZ292LXVzZXItcm93IGJ1dHRvbi5lZGl0OmhvdmVyIHsgYmFja2dyb3VuZDogdmFyKC0tdGV4
dC1oZWFkaW5nKTsgY29sb3I6IHdoaXRlOyB9CgouZ292LXNldHRpbmctcm93IHsKICAgIGRpc3Bs
YXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGdhcDogMTBweDsKICAgIHBhZGRpbmc6IDhw
eCAwOyBmb250LXNpemU6IDEzcHg7IGNvbG9yOiB2YXIoLS10ZXh0LXByaW1hcnkpOwp9CgouZ292
LXNldHRpbmctcm93ICsgLmdvdi1zZXR0aW5nLXJvdyB7IGJvcmRlci10b3A6IDFweCBzb2xpZCB2
YXIoLS1ib3JkZXItbGlnaHQpOyB9CgouZ292LXNldHRpbmctcm93IGlucHV0W3R5cGU9ImNoZWNr
Ym94Il0gewogICAgd2lkdGg6IDE2cHg7IGhlaWdodDogMTZweDsgYWNjZW50LWNvbG9yOiAjMkU0
QTYyOyBjdXJzb3I6IHBvaW50ZXI7Cn0KCi5nb3YtZW1wdHkgeyBjb2xvcjogdmFyKC0tdGV4dC1t
dXRlZCk7IGZvbnQtc2l6ZTogMTNweDsgdGV4dC1hbGlnbjogY2VudGVyOyBwYWRkaW5nOiAxMnB4
OyBmb250LXN0eWxlOiBpdGFsaWM7IH0KCi8qIC0tLSBSZXZpZXcgSGlzdG9yeSBpbiBEZXRhaWwg
LS0tICovCi5yZXZpZXctaGlzdG9yeSB7CiAgICBtYXJnaW4tdG9wOiAyMHB4OwogICAgcGFkZGlu
Zy10b3A6IDE1cHg7CiAgICBib3JkZXItdG9wOiAxcHggc29saWQgI2UwZTBlMDsKfQoKLnJldmll
dy1oaXN0b3J5IGgzIHsgZm9udC1zaXplOiAxNXB4OyBjb2xvcjogdmFyKC0tdGV4dC1oZWFkaW5n
KTsgbWFyZ2luLWJvdHRvbTogMTBweDsgfQoKLnJldmlldy1oaXN0b3J5LWl0ZW0gewogICAgZGlz
cGxheTogZmxleDsKICAgIGdhcDogMTBweDsKICAgIHBhZGRpbmc6IDhweCAwOwogICAgYm9yZGVy
LWJvdHRvbTogMXB4IHNvbGlkICNmMGYwZjA7CiAgICBmb250LXNpemU6IDEzcHg7Cn0KCi5yZXZp
ZXctaGlzdG9yeS1pdGVtIC5hY3Rpb24tYmFkZ2UgewogICAgcGFkZGluZzogMnB4IDhweDsKICAg
IGJvcmRlci1yYWRpdXM6IDNweDsKICAgIGZvbnQtc2l6ZTogMTFweDsKICAgIGZvbnQtd2VpZ2h0
OiA2MDA7CiAgICBmbGV4LXNocmluazogMDsKfQoKLnJldmlldy1oaXN0b3J5LWl0ZW0gLmFjdGlv
bi1iYWRnZS5hcHByb3ZlZCB7IGJhY2tncm91bmQ6ICNENEVEREE7IGNvbG9yOiAjMTU1NzI0OyB9
Ci5yZXZpZXctaGlzdG9yeS1pdGVtIC5hY3Rpb24tYmFkZ2UucmVqZWN0ZWQgeyBiYWNrZ3JvdW5k
OiAjRjhEN0RBOyBjb2xvcjogIzcyMUMyNDsgfQoucmV2aWV3LWhpc3RvcnktaXRlbSAuYWN0aW9u
LWJhZGdlLnN1Ym1pdHRlZCB7IGJhY2tncm91bmQ6ICNGRkU1QjQ7IGNvbG9yOiAjN0E0NDE5OyB9
CgovKiAtLS0gQ29uZmxpY3QgV2FybmluZyAtLS0gKi8KLmNvbmZsaWN0LXdhcm5pbmcgewogICAg
YmFja2dyb3VuZC1jb2xvcjogI2ZmZjNjZDsKICAgIGJvcmRlcjogMXB4IHNvbGlkICNmZmMxMDc7
CiAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICBwYWRkaW5nOiAxMHB4IDE1cHg7CiAgICBtYXJn
aW4tYm90dG9tOiAxMHB4OwogICAgZm9udC1zaXplOiAxM3B4OwogICAgY29sb3I6ICM4NTY0MDQ7
CiAgICBkaXNwbGF5OiBmbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGdhcDogOHB4
Owp9CgovKiAtLS0gU2NobGFnd8O2cnRlciAvIEtleXdvcmRzIC0tLSAqLwoua2V5d29yZC10YWcg
eyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHBhZGRpbmc6IDJweCA4cHg7IGJvcmRlci1yYWRpdXM6
IDEwcHg7IGZvbnQtc2l6ZTogMTFweDsgYmFja2dyb3VuZDogdmFyKC0tYmctYWN0aXZlKTsgY29s
b3I6IHZhcigtLXRleHQtaGVhZGluZyk7IG1hcmdpbjogMXB4OyB9Ci5rZXl3b3JkLWlucHV0LXdy
YXAgeyBwb3NpdGlvbjogcmVsYXRpdmU7IGZsZXg6IDE7IG1pbi13aWR0aDogMjAwcHg7IH0KLmtl
eXdvcmQtaW5wdXQtY29udGFpbmVyIHsKICAgIGRpc3BsYXk6IGZsZXg7IGZsZXgtd3JhcDogd3Jh
cDsgZ2FwOiA0cHg7IHBhZGRpbmc6IDRweCA4cHg7CiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIo
LS1ib3JkZXItc3Ryb25nKTsgYm9yZGVyLXJhZGl1czogNHB4OwogICAgbWluLWhlaWdodDogMzJw
eDsgYmFja2dyb3VuZDogdmFyKC0tYmctaW5wdXQpOyBhbGlnbi1pdGVtczogY2VudGVyOyBjdXJz
b3I6IHRleHQ7Cn0KLmtleXdvcmQtaW5wdXQtY29udGFpbmVyIGlucHV0IHsgYm9yZGVyOiBub25l
OyBvdXRsaW5lOiBub25lOyBmb250LXNpemU6IDEzcHg7IGJhY2tncm91bmQ6IHRyYW5zcGFyZW50
OyBjb2xvcjogdmFyKC0tdGV4dC1wcmltYXJ5KTsgbWluLXdpZHRoOiA4MHB4OyBmbGV4OiAxOyBw
YWRkaW5nOiAycHggMDsgfQoua2V5d29yZC1waWxsIHsgZGlzcGxheTogaW5saW5lLWZsZXg7IGFs
aWduLWl0ZW1zOiBjZW50ZXI7IGdhcDogNHB4OyBwYWRkaW5nOiAycHggOHB4OyBiYWNrZ3JvdW5k
OiB2YXIoLS10ZXh0LWhlYWRpbmcpOyBjb2xvcjogd2hpdGU7IGJvcmRlci1yYWRpdXM6IDEwcHg7
IGZvbnQtc2l6ZTogMTJweDsgfQoua2V5d29yZC1waWxsIC5rdy1yZW1vdmUgeyBjdXJzb3I6IHBv
aW50ZXI7IGZvbnQtd2VpZ2h0OiBib2xkOyBvcGFjaXR5OiAwLjc7IH0KLmtleXdvcmQtcGlsbCAu
a3ctcmVtb3ZlOmhvdmVyIHsgb3BhY2l0eTogMTsgfQoua2V5d29yZC1hdXRvY29tcGxldGUgewog
ICAgcG9zaXRpb246IGFic29sdXRlOyB0b3A6IDEwMCU7IGxlZnQ6IDA7IHJpZ2h0OiAwOyBiYWNr
Z3JvdW5kOiB2YXIoLS1iZy1jYXJkKTsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRl
ci1jb2xvcik7IGJvcmRlci1yYWRpdXM6IDRweDsgbWF4LWhlaWdodDogMTUwcHg7CiAgICBvdmVy
Zmxvdy15OiBhdXRvOyB6LWluZGV4OiAxMDsgYm94LXNoYWRvdzogMCA0cHggMTJweCB2YXIoLS1z
aGFkb3ctbGlnaHQpOyBkaXNwbGF5OiBub25lOwp9Ci5rZXl3b3JkLWF1dG9jb21wbGV0ZS5hY3Rp
dmUgeyBkaXNwbGF5OiBibG9jazsgfQoua2V5d29yZC1hdXRvY29tcGxldGUtaXRlbSB7IHBhZGRp
bmc6IDZweCAxMnB4OyBjdXJzb3I6IHBvaW50ZXI7IGZvbnQtc2l6ZTogMTNweDsgY29sb3I6IHZh
cigtLXRleHQtcHJpbWFyeSk7IH0KLmtleXdvcmQtYXV0b2NvbXBsZXRlLWl0ZW06aG92ZXIgeyBi
YWNrZ3JvdW5kOiB2YXIoLS1iZy1ob3Zlcik7IH0KLmtleXdvcmQtc3VnZ2VzdGlvbiB7CiAgICBk
aXNwbGF5OmlubGluZS1ibG9jazsgcGFkZGluZzozcHggMTBweDsgYm9yZGVyLXJhZGl1czoxMnB4
OyBmb250LXNpemU6MTFweDsKICAgIGJhY2tncm91bmQ6dmFyKC0tYmctY2FyZC1hbHQpOyBjb2xv
cjp2YXIoLS10ZXh0LXNlY29uZGFyeSk7IGJvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyLWxp
Z2h0KTsKICAgIGN1cnNvcjpwb2ludGVyOyB0cmFuc2l0aW9uOmFsbCAwLjE1czsgdXNlci1zZWxl
Y3Q6bm9uZTsKfQoua2V5d29yZC1zdWdnZXN0aW9uOmhvdmVyIHsgYmFja2dyb3VuZDp2YXIoLS1i
Zy1hY3RpdmUpOyBjb2xvcjp2YXIoLS10ZXh0LWhlYWRpbmcpOyBib3JkZXItY29sb3I6dmFyKC0t
dGV4dC1oZWFkaW5nKTsgfQoKLyogLS0tIFNjaGxhZ3dvcnQtVmVyd2FsdHVuZyAoR292ZXJuYW5j
ZSkgLS0tICovCi5nb3Yta3ctbGlzdCB7IGRpc3BsYXk6IGZsZXg7IGZsZXgtd3JhcDogd3JhcDsg
Z2FwOiA2cHg7IG1hcmdpbi10b3A6IDhweDsgbWF4LWhlaWdodDogMjAwcHg7IG92ZXJmbG93LXk6
IGF1dG87IH0KLmdvdi1rdy1waWxsIHsKICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OyBhbGlnbi1p
dGVtczogY2VudGVyOyBnYXA6IDRweDsKICAgIHBhZGRpbmc6IDRweCAxMHB4OyBib3JkZXItcmFk
aXVzOiAxMnB4OyBmb250LXNpemU6IDEycHg7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1hY3Rp
dmUpOyBjb2xvcjogdmFyKC0tdGV4dC1oZWFkaW5nKTsgYm9yZGVyOiAxcHggc29saWQgdmFyKC0t
Ym9yZGVyLWxpZ2h0KTsKICAgIGN1cnNvcjogcG9pbnRlcjsgdHJhbnNpdGlvbjogYWxsIDAuMTVz
Owp9Ci5nb3Yta3ctcGlsbDpob3ZlciB7IGJvcmRlci1jb2xvcjogdmFyKC0tdGV4dC1oZWFkaW5n
KTsgYmFja2dyb3VuZDogdmFyKC0tYmctaG92ZXIpOyB9Ci5nb3Yta3ctcGlsbCAua3ctY291bnQg
eyBmb250LXNpemU6IDEwcHg7IGNvbG9yOiB2YXIoLS10ZXh0LW11dGVkKTsgbWFyZ2luLWxlZnQ6
IDJweDsgfQoKLmt3LW1hbmFnZS1tb2RhbCB7CiAgICBkaXNwbGF5OiBub25lOyBwb3NpdGlvbjog
Zml4ZWQ7IHRvcDogMDsgbGVmdDogMDsgd2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJTsKICAgIGJh
Y2tncm91bmQ6IHJnYmEoMCwwLDAsMC41KTsgei1pbmRleDogMTA1MDA7IGp1c3RpZnktY29udGVu
dDogY2VudGVyOyBhbGlnbi1pdGVtczogY2VudGVyOwp9Ci5rdy1tYW5hZ2UtbW9kYWwub3BlbiB7
IGRpc3BsYXk6IGZsZXg7IH0KLmt3LW1hbmFnZS1jb250ZW50IHsKICAgIGJhY2tncm91bmQ6IHZh
cigtLWJnLWNhcmQpOyBib3JkZXItcmFkaXVzOiA4cHg7IHdpZHRoOiA1MjBweDsgbWF4LXdpZHRo
OiA5NSU7CiAgICBtYXgtaGVpZ2h0OiA4MHZoOyBvdmVyZmxvdzogaGlkZGVuOyBkaXNwbGF5OiBm
bGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgYm94LXNoYWRvdzogMCA4cHggMzJweCBy
Z2JhKDAsMCwwLDAuMyk7Cn0KLmt3LW1hbmFnZS1oZWFkZXIgewogICAgcGFkZGluZzogMTRweCAy
MHB4OyBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1wcmltYXJ5KTsgY29sb3I6IHdoaXRlOwogICAgZm9u
dC13ZWlnaHQ6IDYwMDsgZm9udC1zaXplOiAxNXB4OyBib3JkZXItcmFkaXVzOiA4cHggOHB4IDAg
MDsKICAgIGRpc3BsYXk6IGZsZXg7IGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsgYWxp
Z24taXRlbXM6IGNlbnRlcjsKfQoua3ctbWFuYWdlLWJvZHkgeyBwYWRkaW5nOiAxNnB4IDIwcHg7
IG92ZXJmbG93LXk6IGF1dG87IGZsZXg6IDE7IH0KLmt3LW1hbmFnZS1mb290ZXIgewogICAgcGFk
ZGluZzogMTJweCAyMHB4OyBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWxpZ2h0
KTsKICAgIGRpc3BsYXk6IGZsZXg7IGdhcDogOHB4OyBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5k
Owp9Ci5rdy1tYW5hZ2UtZm9vdGVyIGJ1dHRvbiB7CiAgICBwYWRkaW5nOiA2cHggMTZweDsgYm9y
ZGVyLXJhZGl1czogNHB4OyBjdXJzb3I6IHBvaW50ZXI7IGZvbnQtd2VpZ2h0OiA2MDA7IGZvbnQt
c2l6ZTogMTNweDsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1jb2xvcik7IGJh
Y2tncm91bmQ6IHZhcigtLWJnLWNhcmQpOyBjb2xvcjogdmFyKC0tdGV4dC1wcmltYXJ5KTsKfQou
a3ctbWFuYWdlLWZvb3RlciBidXR0b246aG92ZXIgeyBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1jYXJk
LWFsdCk7IH0KLmt3LW1hbmFnZS1mb290ZXIgYnV0dG9uLmRhbmdlciB7IGJhY2tncm91bmQ6ICNk
YzM1NDU7IGNvbG9yOiB3aGl0ZTsgYm9yZGVyOiBub25lOyB9Ci5rdy1tYW5hZ2UtZm9vdGVyIGJ1
dHRvbi5kYW5nZXI6aG92ZXIgeyBiYWNrZ3JvdW5kOiAjYzgyMzMzOyB9Ci5rdy1tYW5hZ2UtZm9v
dGVyIGJ1dHRvbi5wcmltYXJ5IHsgYmFja2dyb3VuZDogdmFyKC0tdGV4dC1oZWFkaW5nKTsgY29s
b3I6IHdoaXRlOyBib3JkZXI6IG5vbmU7IH0KLmt3LW1hbmFnZS1mb290ZXIgYnV0dG9uLnByaW1h
cnk6aG92ZXIgeyBvcGFjaXR5OiAwLjg1OyB9Ci5rdy1kb2MtbGlzdCB7IG1hcmdpbjogMTBweCAw
OyB9Ci5rdy1kb2MtaXRlbSB7CiAgICBwYWRkaW5nOiA4cHggMTBweDsgYm9yZGVyOiAxcHggc29s
aWQgdmFyKC0tYm9yZGVyLWxpZ2h0KTsgYm9yZGVyLXJhZGl1czogNHB4OwogICAgbWFyZ2luLWJv
dHRvbTogNHB4OyBmb250LXNpemU6IDEzcHg7IGRpc3BsYXk6IGZsZXg7IGp1c3RpZnktY29udGVu
dDogc3BhY2UtYmV0d2VlbjsgYWxpZ24taXRlbXM6IGNlbnRlcjsKfQoua3ctZG9jLWl0ZW0gLmt3
LWRvYy10aXRsZSB7IGZvbnQtd2VpZ2h0OiA1MDA7IGNvbG9yOiB2YXIoLS10ZXh0LWhlYWRpbmcp
OyB9Ci5rdy1kb2MtaXRlbSAua3ctZG9jLWthdCB7IGZvbnQtc2l6ZTogMTFweDsgY29sb3I6IHZh
cigtLXRleHQtbXV0ZWQpOyB9CgovKiAtLS0gQXJ0aWtlbC1SZWZlcmVueiAoIy1BdXRvY29tcGxl
dGUgaW0gRWRpdG9yKSAtLS0gKi8KLnhyZWYtZHJvcGRvd24gewogICAgZGlzcGxheTogbm9uZTsg
cG9zaXRpb246IGZpeGVkOyB6LWluZGV4OiAxMDEwMDsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJn
LWNhcmQpOyBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3IpOyBib3JkZXItcmFk
aXVzOiA4cHg7CiAgICBib3gtc2hhZG93OiAwIDhweCAyOHB4IHZhcigtLXNoYWRvdy1tZWRpdW0p
OyB3aWR0aDogMzgwcHg7IG1heC1oZWlnaHQ6IDM2MHB4OwogICAgb3ZlcmZsb3c6IGhpZGRlbjsg
ZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKfQoueHJlZi1kcm9wZG93bi52aXNpYmxlIHsgZGlzcGxh
eTogZmxleDsgfQoueHJlZi1zZWFyY2ggewogICAgcGFkZGluZzogOHB4IDEycHg7IGJvcmRlci1i
b3R0b206IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItbGlnaHQpOwp9Ci54cmVmLXNlYXJjaCBpbnB1
dCB7CiAgICB3aWR0aDogMTAwJTsgcGFkZGluZzogNnB4IDEwcHg7IGJvcmRlcjogMXB4IHNvbGlk
IHZhcigtLWJvcmRlci1jb2xvcik7CiAgICBib3JkZXItcmFkaXVzOiA0cHg7IGZvbnQtc2l6ZTog
MTNweDsgYmFja2dyb3VuZDogdmFyKC0tYmctaW5wdXQpOyBjb2xvcjogdmFyKC0tdGV4dC1wcmlt
YXJ5KTsKICAgIG91dGxpbmU6IG5vbmU7Cn0KLnhyZWYtc2VhcmNoIGlucHV0OmZvY3VzIHsgYm9y
ZGVyLWNvbG9yOiB2YXIoLS10ZXh0LWhlYWRpbmcpOyB9Ci54cmVmLWxpc3QgeyBmbGV4OiAxOyBv
dmVyZmxvdy15OiBhdXRvOyBtYXgtaGVpZ2h0OiAzMDBweDsgfQoueHJlZi1pdGVtIHsKICAgIHBh
ZGRpbmc6IDhweCAxMnB4OyBjdXJzb3I6IHBvaW50ZXI7IGJvcmRlci1ib3R0b206IDFweCBzb2xp
ZCB2YXIoLS1ib3JkZXItbGlnaHQpOwogICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjFzOwp9
Ci54cmVmLWl0ZW06aG92ZXIgeyBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1ob3Zlcik7IH0KLnhyZWYt
aXRlbTpsYXN0LWNoaWxkIHsgYm9yZGVyLWJvdHRvbTogbm9uZTsgfQoueHJlZi1pdGVtIC54cmVm
LXRpdGxlIHsgZm9udC13ZWlnaHQ6IDYwMDsgZm9udC1zaXplOiAxM3B4OyBjb2xvcjogdmFyKC0t
dGV4dC1oZWFkaW5nKTsgfQoueHJlZi1pdGVtIC54cmVmLWNhdCB7IGZvbnQtc2l6ZTogMTFweDsg
Y29sb3I6IHZhcigtLXRleHQtbXV0ZWQpOyB9Ci54cmVmLWl0ZW0uaGVhZGluZyB7IHBhZGRpbmct
bGVmdDogMjhweDsgfQoueHJlZi1pdGVtLmhlYWRpbmcgLnhyZWYtdGl0bGUgeyBmb250LXdlaWdo
dDogNTAwOyBmb250LXNpemU6IDEycHg7IGNvbG9yOiB2YXIoLS10ZXh0LXNlY29uZGFyeSk7IH0K
LnhyZWYtaXRlbS5oZWFkaW5nIC54cmVmLXRpdGxlOjpiZWZvcmUgeyBjb250ZW50OiAnwqcgJzsg
Y29sb3I6IHZhcigtLXRleHQtbXV0ZWQpOyB9Ci54cmVmLWJhY2sgewogICAgcGFkZGluZzogNnB4
IDEycHg7IGZvbnQtc2l6ZTogMTFweDsgY29sb3I6IHZhcigtLXRleHQtaGVhZGluZyk7IGN1cnNv
cjogcG9pbnRlcjsKICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItbGln
aHQpOyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBnYXA6IDRweDsKfQoueHJl
Zi1iYWNrOmhvdmVyIHsgYmFja2dyb3VuZDogdmFyKC0tYmctaG92ZXIpOyB9CgovKiBDcm9zc2xp
bmstUmVmZXJlbnogaW0gVGV4dCAobWFudWVsbCBlaW5nZWbDvGd0IHZpYSAjKSAqLwouZHJpdmUt
eHJlZiB7CiAgICBjb2xvcjogdmFyKC0tdGV4dC1oZWFkaW5nKTsgZm9udC13ZWlnaHQ6IDUwMDsg
Y3Vyc29yOiBwb2ludGVyOwogICAgYm9yZGVyLWJvdHRvbTogMS41cHggc29saWQgdmFyKC0tdGV4
dC1oZWFkaW5nKTsKICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsgdHJhbnNpdGlvbjogYmFja2dy
b3VuZCAwLjE1czsKfQouZHJpdmUteHJlZjpob3ZlciB7IGJhY2tncm91bmQ6IHZhcigtLWJnLWFj
dGl2ZSk7IH0KCi8qIC0tLSBVbnRlcmFydGlrZWwgLS0tICovCi5kb2N1bWVudC1pdGVtLmNoaWxk
LWFydGljbGUgeyBwYWRkaW5nLWxlZnQ6IDM2cHg7IGJvcmRlci1sZWZ0OiAzcHggc29saWQgdmFy
KC0tYm9yZGVyLWxpZ2h0KTsgfQouZG9jLXBhcmVudC1yZWYgeyBmb250LXNpemU6IDEwcHg7IGNv
bG9yOiB2YXIoLS10ZXh0LW11dGVkKTsgZm9udC1zdHlsZTogaXRhbGljOyB9CgovKiAtLS0gVGFi
ZWxsZW5hbnNpY2h0IC0tLSAqLwoudGFibGUtdmlldy1jb250YWluZXIgeyBmbGV4OiAxOyBvdmVy
ZmxvdzogYXV0bzsgZGlzcGxheTogbm9uZTsgfQoudGFibGUtdmlldy1jb250YWluZXIuYWN0aXZl
IHsgZGlzcGxheTogYmxvY2s7IH0KLmRyaXZlLXRhYmxlIHsgd2lkdGg6IDEwMCU7IGJvcmRlci1j
b2xsYXBzZTogY29sbGFwc2U7IGZvbnQtc2l6ZTogMTNweDsgfQouZHJpdmUtdGFibGUgdGggewog
ICAgY3Vyc29yOiBwb2ludGVyOyBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1jYXJkLWFsdCk7IGNvbG9y
OiB2YXIoLS10ZXh0LWhlYWRpbmcpOwogICAgcGFkZGluZzogMTBweCAxMnB4OyB0ZXh0LWFsaWdu
OiBsZWZ0OyBmb250LXdlaWdodDogNjAwOyBib3JkZXItYm90dG9tOiAycHggc29saWQgdmFyKC0t
dGV4dC1oZWFkaW5nKTsKICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7IHVzZXItc2VsZWN0OiBub25l
OyB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDAuMnM7Cn0KLmRyaXZlLXRhYmxlIHRoOmhvdmVyIHsg
YmFja2dyb3VuZDogdmFyKC0tYmctYWN0aXZlKTsgfQouZHJpdmUtdGFibGUgdGguc29ydGVkLWFz
Yzo6YWZ0ZXIgeyBjb250ZW50OiAiIFwyNUIyIjsgZm9udC1zaXplOiAxMHB4OyB9Ci5kcml2ZS10
YWJsZSB0aC5zb3J0ZWQtZGVzYzo6YWZ0ZXIgeyBjb250ZW50OiAiIFwyNUJDIjsgZm9udC1zaXpl
OiAxMHB4OyB9Ci5kcml2ZS10YWJsZSB0ZCB7IHBhZGRpbmc6IDhweCAxMnB4OyBib3JkZXItYm90
dG9tOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWxpZ2h0KTsgY29sb3I6IHZhcigtLXRleHQtcHJp
bWFyeSk7IH0KLmRyaXZlLXRhYmxlIHRyIHsgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjE1czsg
Y3Vyc29yOiBwb2ludGVyOyB9Ci5kcml2ZS10YWJsZSB0cjpob3ZlciB7IGJhY2tncm91bmQ6IHZh
cigtLWJnLWhvdmVyKTsgfQouZHJpdmUtdGFibGUgdGQgLmtleXdvcmQtdGFnIHsgZm9udC1zaXpl
OiAxMHB4OyBwYWRkaW5nOiAxcHggNnB4OyB9CgovKiAtLS0gS2F0ZWdvcmllLVZlcndhbHR1bmcg
LS0tICovCi5nb3YtY2F0LWl0ZW0gewogICAgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNl
bnRlcjsgZ2FwOiA4cHg7IHBhZGRpbmc6IDZweCAxMnB4OwogICAgYm9yZGVyOiAxcHggc29saWQg
dmFyKC0tYm9yZGVyLWxpZ2h0KTsgYm9yZGVyLXJhZGl1czogNnB4OyBtYXJnaW4tYm90dG9tOiA0
cHg7IGJhY2tncm91bmQ6IHZhcigtLWJnLWNhcmQpOwp9Ci5nb3YtY2F0LWl0ZW0gLmdvdi1jYXQt
bmFtZSB7IGZsZXg6IDE7IGZvbnQtd2VpZ2h0OiA1MDA7IGZvbnQtc2l6ZTogMTNweDsgY29sb3I6
IHZhcigtLXRleHQtcHJpbWFyeSk7IH0KLmdvdi1jYXQtbGlzdCB7IG1heC1oZWlnaHQ6IDI0MHB4
OyBvdmVyZmxvdy15OiBhdXRvOyBwYWRkaW5nLXJpZ2h0OiA0cHg7IH0KLmdvdi1jYXQtYWRkLXJv
dyB7IGRpc3BsYXk6IGZsZXg7IGdhcDogOHB4OyBtYXJnaW4tdG9wOiA4cHg7IH0KLmdvdi1jYXQt
YWRkLXJvdyBpbnB1dCB7IGZsZXg6IDE7IHBhZGRpbmc6IDZweCAxMHB4OyBib3JkZXI6IDFweCBz
b2xpZCB2YXIoLS1ib3JkZXItc3Ryb25nKTsgYm9yZGVyLXJhZGl1czogNXB4OyBmb250LXNpemU6
IDEzcHg7IGJhY2tncm91bmQ6IHZhcigtLWJnLWlucHV0KTsgY29sb3I6IHZhcigtLXRleHQtcHJp
bWFyeSk7IH0KLmdvdi10d28tY29sIHsgZGlzcGxheTogZ3JpZDsgZ3JpZC10ZW1wbGF0ZS1jb2x1
bW5zOiAxZnIgMWZyOyBnYXA6IDE0cHg7IH0KLmdvdi10d28tY29sLmNhdC1zZXR0aW5ncyB7IGdy
aWQtdGVtcGxhdGUtY29sdW1uczogM2ZyIDJmcjsgfQouZ292LWhlbHAtZWRpdG9yIHsgd2lkdGg6
MTAwJTsgbWluLWhlaWdodDoyMDBweDsgcGFkZGluZzoxMnB4OyBib3JkZXI6MXB4IHNvbGlkIHZh
cigtLWJvcmRlci1jb2xvcik7IGJvcmRlci1yYWRpdXM6NHB4OyBmb250LXNpemU6MTNweDsgbGlu
ZS1oZWlnaHQ6MS42OyBiYWNrZ3JvdW5kOnZhcigtLWJnLWlucHV0KTsgY29sb3I6dmFyKC0tdGV4
dC1wcmltYXJ5KTsgb3ZlcmZsb3cteTphdXRvOyB9Ci5nb3YtaGVscC1lZGl0b3I6Zm9jdXMgeyBi
b3JkZXItY29sb3I6dmFyKC0tdGV4dC1oZWFkaW5nKTsgb3V0bGluZTpub25lOyB9Ci5nb3YtYWN0
aW9uLWJhciB7IGRpc3BsYXk6ZmxleDsgZ2FwOjEwcHg7IG1hcmdpbi10b3A6OHB4OyBmbGV4LXdy
YXA6d3JhcDsgfQouZ292LXVzZXItcm93IC5nb3Ytcm9sZS1pY29uLmZhIHsgYmFja2dyb3VuZDog
I2ZjZTRlYzsgY29sb3I6ICNjNjI4Mjg7IH0KCi8qIC0tLSBMw7ZzY2gtQmVzdMOkdGlndW5nIE1v
ZGFsIC0tLSAqLwouZGVsZXRlLWNvbmZpcm0tbW9kYWwgeyBkaXNwbGF5Om5vbmU7IHBvc2l0aW9u
OmZpeGVkOyB0b3A6MDsgbGVmdDowOyB3aWR0aDoxMDAlOyBoZWlnaHQ6MTAwJTsgYmFja2dyb3Vu
ZDpyZ2JhKDAsMCwwLDAuNSk7IHotaW5kZXg6MzAwMDsgfQouZGVsZXRlLWNvbmZpcm0tbW9kYWwu
YWN0aXZlIHsgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGp1c3RpZnktY29udGVu
dDpjZW50ZXI7IH0KLmRlbGV0ZS1jb25maXJtLWNvbnRlbnQgeyBiYWNrZ3JvdW5kOnZhcigtLWJn
LWNhcmQpOyBib3JkZXItcmFkaXVzOjhweDsgd2lkdGg6NDQwcHg7IG1heC13aWR0aDo5NSU7IGJv
eC1zaGFkb3c6MCAxMHB4IDQwcHggcmdiYSgwLDAsMCwwLjMpOyB9Ci5kZWxldGUtY29uZmlybS1o
ZWFkZXIgeyBiYWNrZ3JvdW5kOiNkYzM1NDU7IGNvbG9yOndoaXRlOyBwYWRkaW5nOjE1cHggMjBw
eDsgYm9yZGVyLXJhZGl1czo4cHggOHB4IDAgMDsgZm9udC13ZWlnaHQ6NjAwOyBmb250LXNpemU6
MTZweDsgfQouZGVsZXRlLWNvbmZpcm0tYm9keSB7IHBhZGRpbmc6MjBweDsgfQouZGVsZXRlLWNv
bmZpcm0tYm9keSBpbnB1dCB7IHdpZHRoOjEwMCU7IHBhZGRpbmc6OHB4IDEwcHg7IGJvcmRlcjox
cHggc29saWQgdmFyKC0tYm9yZGVyLXN0cm9uZyk7IGJvcmRlci1yYWRpdXM6NHB4OyBmb250LXNp
emU6MTRweDsgbWFyZ2luLXRvcDo4cHg7IGJhY2tncm91bmQ6dmFyKC0tYmctaW5wdXQpOyBjb2xv
cjp2YXIoLS10ZXh0LXByaW1hcnkpOyB9Ci5kZWxldGUtY29uZmlybS1mb290ZXIgeyBwYWRkaW5n
OjE1cHggMjBweDsgYm9yZGVyLXRvcDoxcHggc29saWQgdmFyKC0tYm9yZGVyLWNvbG9yKTsgZGlz
cGxheTpmbGV4OyBnYXA6MTBweDsganVzdGlmeS1jb250ZW50OmZsZXgtZW5kOyB9Ci5kZWxldGUt
Y29uZmlybS1mb290ZXIgYnV0dG9uIHsgcGFkZGluZzo4cHggMjBweDsgYm9yZGVyLXJhZGl1czo0
cHg7IGN1cnNvcjpwb2ludGVyOyBmb250LXdlaWdodDo2MDA7IGJvcmRlcjoxcHggc29saWQgI2Rk
ZDsgYmFja2dyb3VuZDp3aGl0ZTsgfQouZGVsZXRlLWNvbmZpcm0tZm9vdGVyIC5idG4tZGVsZXRl
IHsgYmFja2dyb3VuZDojZGMzNTQ1OyBjb2xvcjp3aGl0ZTsgYm9yZGVyOm5vbmU7IH0KLmRlbGV0
ZS1jb25maXJtLWZvb3RlciAuYnRuLWRlbGV0ZTpkaXNhYmxlZCB7IG9wYWNpdHk6MC41OyBjdXJz
b3I6bm90LWFsbG93ZWQ7IH0KCi8qIC0tLSBQYXBpZXJrb3JiIC8gR2Vsw7ZzY2h0ZSBBcnRpa2Vs
IC0tLSAqLwoudHJhc2gtYmFkZ2UgeyBmb250LXNpemU6MTFweDsgcGFkZGluZzoycHggOHB4OyBi
YWNrZ3JvdW5kOiNGOEQ3REE7IGNvbG9yOiM3MjFDMjQ7IGJvcmRlci1yYWRpdXM6M3B4OyBjdXJz
b3I6cG9pbnRlcjsgfQoudHJhc2gtaXRlbSB7IHBhZGRpbmc6MTBweCAxMnB4OyBib3JkZXI6MXB4
IHNvbGlkICNmNWM2Y2I7IGJvcmRlci1yYWRpdXM6NnB4OyBtYXJnaW4tYm90dG9tOjhweDsgYmFj
a2dyb3VuZDojZmZmNWY1OyB9Ci50cmFzaC1pdGVtLXRpdGxlIHsgZm9udC13ZWlnaHQ6NjAwOyBm
b250LXNpemU6MTNweDsgY29sb3I6IzcyMUMyNDsgfQoudHJhc2gtaXRlbS1tZXRhIHsgZm9udC1z
aXplOjExcHg7IGNvbG9yOnZhcigtLXRleHQtbXV0ZWQpOyBtYXJnaW4tdG9wOjNweDsgfQoudHJh
c2gtaXRlbS1hY3Rpb25zIHsgZGlzcGxheTpmbGV4OyBnYXA6NnB4OyBtYXJnaW4tdG9wOjZweDsg
fQoudHJhc2gtaXRlbS1hY3Rpb25zIGJ1dHRvbiB7IHBhZGRpbmc6NHB4IDEwcHg7IGJvcmRlcjox
cHggc29saWQgI2RkZDsgYmFja2dyb3VuZDp3aGl0ZTsgYm9yZGVyLXJhZGl1czo0cHg7IGZvbnQt
c2l6ZToxMnB4OyBjdXJzb3I6cG9pbnRlcjsgfQoudHJhc2gtaXRlbS1hY3Rpb25zIC5idG4tcmVz
dG9yZSB7IGJvcmRlci1jb2xvcjojMjhhNzQ1OyBjb2xvcjojMjhhNzQ1OyB9Ci50cmFzaC1pdGVt
LWFjdGlvbnMgLmJ0bi1yZXN0b3JlOmhvdmVyIHsgYmFja2dyb3VuZDojMjhhNzQ1OyBjb2xvcjp3
aGl0ZTsgfQoKLyogLS0tIEVuZ2FnZW1lbnQtU3RhdGlzdGlrIC0tLSAqLwouc3RhdC1ncmlkIHsg
ZGlzcGxheTpncmlkOyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6cmVwZWF0KGF1dG8tZmlsbCxtaW5t
YXgoMTgwcHgsMWZyKSk7IGdhcDoxMnB4OyBtYXJnaW4tYm90dG9tOjE2cHg7IH0KLnN0YXQtY2Fy
ZCB7IGJhY2tncm91bmQ6dmFyKC0tYmctY2FyZC1hbHQpOyBib3JkZXItcmFkaXVzOjhweDsgcGFk
ZGluZzoxNnB4OyB0ZXh0LWFsaWduOmNlbnRlcjsgfQouc3RhdC1jYXJkIC5zdGF0LXZhbHVlIHsg
Zm9udC1zaXplOjI4cHg7IGZvbnQtd2VpZ2h0OjcwMDsgY29sb3I6dmFyKC0tdGV4dC1oZWFkaW5n
KTsgfQouc3RhdC1jYXJkIC5zdGF0LWxhYmVsIHsgZm9udC1zaXplOjEycHg7IGNvbG9yOnZhcigt
LXRleHQtbXV0ZWQpOyBtYXJnaW4tdG9wOjRweDsgfQouc3RhdC1iYXItcm93IHsgZGlzcGxheTpm
bGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGdhcDoxMHB4OyBwYWRkaW5nOjZweCAwOyBmb250LXNp
emU6MTNweDsgfQouc3RhdC1iYXItcm93IC5zdGF0LWJhci1sYWJlbCB7IG1pbi13aWR0aDoxMDBw
eDsgZm9udC13ZWlnaHQ6NTAwOyBjb2xvcjp2YXIoLS10ZXh0LXByaW1hcnkpOyB9Ci5zdGF0LWJh
ci1yb3cgLnN0YXQtYmFyIHsgZmxleDoxOyBoZWlnaHQ6MjBweDsgYmFja2dyb3VuZDp2YXIoLS1i
b3JkZXItbGlnaHQpOyBib3JkZXItcmFkaXVzOjRweDsgb3ZlcmZsb3c6aGlkZGVuOyB9Ci5zdGF0
LWJhci1yb3cgLnN0YXQtYmFyLWZpbGwgeyBoZWlnaHQ6MTAwJTsgYm9yZGVyLXJhZGl1czo0cHg7
IHRyYW5zaXRpb246d2lkdGggMC4zczsgfQouc3RhdC1iYXItcm93IC5zdGF0LWJhci12YWwgeyBt
aW4td2lkdGg6NDBweDsgdGV4dC1hbGlnbjpyaWdodDsgZm9udC1zaXplOjEycHg7IGNvbG9yOnZh
cigtLXRleHQtbXV0ZWQpOyB9CgovKiAtLS0gSGlsZmUtTW9kYWwgLS0tICovCi5oZWxwLW1vZGFs
IHsgZGlzcGxheTpub25lOyBwb3NpdGlvbjpmaXhlZDsgdG9wOjA7IGxlZnQ6MDsgd2lkdGg6MTAw
JTsgaGVpZ2h0OjEwMCU7IGJhY2tncm91bmQ6cmdiYSgwLDAsMCwwLjUpOyB6LWluZGV4OjIwMDA7
IH0KLmhlbHAtbW9kYWwuYWN0aXZlIHsgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7
IGp1c3RpZnktY29udGVudDpjZW50ZXI7IH0KLmhlbHAtbW9kYWwtY29udGVudCB7CiAgICBiYWNr
Z3JvdW5kOnZhcigtLWJnLWNhcmQpOyBib3JkZXItcmFkaXVzOjEwcHg7IHdpZHRoOjk2MHB4OyBt
YXgtd2lkdGg6OTUlOyBoZWlnaHQ6ODV2aDsKICAgIGRpc3BsYXk6ZmxleDsgb3ZlcmZsb3c6aGlk
ZGVuOyBib3gtc2hhZG93OjAgMTJweCA0OHB4IHJnYmEoMCwwLDAsMC4zKTsKfQouaGVscC10b2Mg
ewogICAgd2lkdGg6MjQwcHg7IG1pbi13aWR0aDoyMDBweDsgYmFja2dyb3VuZDp2YXIoLS1iZy1w
cmltYXJ5KTsgY29sb3I6d2hpdGU7CiAgICBvdmVyZmxvdy15OmF1dG87IHBhZGRpbmc6MjBweCAw
OyBmbGV4LXNocmluazowOwp9Ci5oZWxwLXRvYy10aXRsZSB7IHBhZGRpbmc6MCAyMHB4IDE1cHg7
IGZvbnQtc2l6ZToxNnB4OyBmb250LXdlaWdodDo3MDA7IGJvcmRlci1ib3R0b206MXB4IHNvbGlk
IHJnYmEoMjU1LDI1NSwyNTUsMC4xNSk7IG1hcmdpbi1ib3R0b206MTBweDsgfQouaGVscC10b2Mg
YSB7CiAgICBkaXNwbGF5OmJsb2NrOyBwYWRkaW5nOjdweCAyMHB4OyBmb250LXNpemU6MTNweDsg
Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwwLjcpOwogICAgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGJv
cmRlci1sZWZ0OjNweCBzb2xpZCB0cmFuc3BhcmVudDsgdHJhbnNpdGlvbjphbGwgMC4xNXM7IGN1
cnNvcjpwb2ludGVyOwp9Ci5oZWxwLXRvYyBhOmhvdmVyIHsgY29sb3I6d2hpdGU7IGJhY2tncm91
bmQ6cmdiYSgyNTUsMjU1LDI1NSwwLjA4KTsgfQouaGVscC10b2MgYS5hY3RpdmUgeyBjb2xvcjp3
aGl0ZTsgYmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LDAuMTIpOyBib3JkZXItbGVmdC1jb2xv
cjojMmQ5ZDc4OyBmb250LXdlaWdodDo2MDA7IH0KLmhlbHAtdG9jIGEuc3ViIHsgcGFkZGluZy1s
ZWZ0OjM0cHg7IGZvbnQtc2l6ZToxMnB4OyB9Ci5oZWxwLWJvZHkgewogICAgZmxleDoxOyBvdmVy
Zmxvdy15OmF1dG87IHBhZGRpbmc6MzBweCAzNXB4OyBjb2xvcjp2YXIoLS10ZXh0LXByaW1hcnkp
OyBzY3JvbGwtYmVoYXZpb3I6c21vb3RoOwp9Ci5oZWxwLWJvZHkgaDIgeyBjb2xvcjp2YXIoLS10
ZXh0LWhlYWRpbmcpOyBmb250LXNpemU6MjBweDsgbWFyZ2luOjMwcHggMCAxMnB4OyBwYWRkaW5n
LWJvdHRvbTo4cHg7IGJvcmRlci1ib3R0b206MnB4IHNvbGlkIHZhcigtLWJvcmRlci1saWdodCk7
IH0KLmhlbHAtYm9keSBoMjpmaXJzdC1jaGlsZCB7IG1hcmdpbi10b3A6MDsgfQouaGVscC1ib2R5
IGgzIHsgY29sb3I6dmFyKC0tdGV4dC1oZWFkaW5nKTsgZm9udC1zaXplOjE1cHg7IG1hcmdpbjoy
MHB4IDAgOHB4OyB9Ci5oZWxwLWJvZHkgcCB7IGZvbnQtc2l6ZToxNHB4OyBsaW5lLWhlaWdodDox
Ljc7IG1hcmdpbi1ib3R0b206MTBweDsgY29sb3I6dmFyKC0tdGV4dC1zZWNvbmRhcnkpOyB9Ci5o
ZWxwLWJvZHkgdWwgeyBtYXJnaW46MCAwIDEycHggMjBweDsgY29sb3I6dmFyKC0tdGV4dC1zZWNv
bmRhcnkpOyB9Ci5oZWxwLWJvZHkgbGkgeyBmb250LXNpemU6MTRweDsgbGluZS1oZWlnaHQ6MS42
OyBtYXJnaW4tYm90dG9tOjRweDsgfQouaGVscC1ib2R5IGtiZCB7CiAgICBkaXNwbGF5OmlubGlu
ZS1ibG9jazsgcGFkZGluZzoxcHggNnB4OyBiYWNrZ3JvdW5kOnZhcigtLWJnLWNhcmQtYWx0KTsg
Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3IpOwogICAgYm9yZGVyLXJhZGl1czoz
cHg7IGZvbnQtc2l6ZToxMnB4OyBmb250LWZhbWlseTptb25vc3BhY2U7IGNvbG9yOnZhcigtLXRl
eHQtcHJpbWFyeSk7Cn0KLmhlbHAtYm9keSAuaGVscC1iYWRnZSB7CiAgICBkaXNwbGF5OmlubGlu
ZS1ibG9jazsgcGFkZGluZzoycHggOHB4OyBib3JkZXItcmFkaXVzOjNweDsgZm9udC1zaXplOjEx
cHg7IGZvbnQtd2VpZ2h0OjYwMDsgbWFyZ2luLXJpZ2h0OjRweDsKfQouaGVscC1ib2R5IC5oZWxw
LWJhZGdlLnN1IHsgYmFja2dyb3VuZDojZThmMGZlOyBjb2xvcjojMWE1NmRiOyB9Ci5oZWxwLWJv
ZHkgLmhlbHAtYmFkZ2UucmV2IHsgYmFja2dyb3VuZDojZmVmM2UyOyBjb2xvcjojYjQ1MzA5OyB9
Ci5oZWxwLWJvZHkgLmhlbHAtYmFkZ2UuYWxsIHsgYmFja2dyb3VuZDojRDRFRERBOyBjb2xvcjoj
MTU1NzI0OyB9Ci5oZWxwLWVkaXQtYnRuIHsKICAgIGRpc3BsYXk6bm9uZTsgbWFyZ2luOjEwcHgg
MjBweDsgcGFkZGluZzo4cHggMTRweDsgYmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LDAuMTIp
OyBib3JkZXI6MXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsMC4zKTsKICAgIGNvbG9yOndoaXRl
OyBib3JkZXItcmFkaXVzOjRweDsgY3Vyc29yOnBvaW50ZXI7IGZvbnQtc2l6ZToxMnB4OyBmb250
LXdlaWdodDo2MDA7CiAgICB0cmFuc2l0aW9uOmFsbCAwLjJzOyB0ZXh0LWFsaWduOmNlbnRlcjsg
d2lkdGg6Y2FsYygxMDAlIC0gNDBweCk7Cn0KLmhlbHAtZWRpdC1idG46aG92ZXIgeyBiYWNrZ3Jv
dW5kOnJnYmEoMjU1LDI1NSwyNTUsMC4yNSk7IH0KLmhlbHAtZWRpdC1iYXIgewogICAgZGlzcGxh
eTpub25lOyBwYWRkaW5nOjhweCAxNnB4OyBiYWNrZ3JvdW5kOnZhcigtLWJnLWNhcmQtYWx0KTsg
Ym9yZGVyLWJvdHRvbToxcHggc29saWQgdmFyKC0tYm9yZGVyLWNvbG9yKTsKICAgIGdhcDo2cHg7
IGFsaWduLWl0ZW1zOmNlbnRlcjsgZmxleC1zaHJpbms6MDsKfQouaGVscC1lZGl0LWJhci5hY3Rp
dmUgeyBkaXNwbGF5OmZsZXg7IH0KLmhlbHAtZWRpdC1iYXIgYnV0dG9uIHsKICAgIHBhZGRpbmc6
NXB4IDEwcHg7IGJvcmRlcjpub25lOyBiYWNrZ3JvdW5kOnZhcigtLWJnLXRvb2xiYXIpOyBjb2xv
cjp2YXIoLS10ZXh0LXByaW1hcnkpOwogICAgY3Vyc29yOnBvaW50ZXI7IGZvbnQtc2l6ZToxM3B4
OyBib3JkZXItcmlnaHQ6MXB4IHNvbGlkIHZhcigtLWJvcmRlci1zdHJvbmcpOyBtaW4taGVpZ2h0
OjI4cHg7Cn0KLmhlbHAtZWRpdC1iYXIgYnV0dG9uOmhvdmVyIHsgYmFja2dyb3VuZDp2YXIoLS1i
b3JkZXItbGlnaHQpOyB9Ci5oZWxwLWVkaXQtYmFyIC5oZWxwLXNhdmUtYnRuIHsgYmFja2dyb3Vu
ZDp2YXIoLS10ZXh0LWhlYWRpbmcpOyBjb2xvcjp3aGl0ZTsgYm9yZGVyOm5vbmU7IGJvcmRlci1y
YWRpdXM6NHB4OyBwYWRkaW5nOjVweCAxNnB4OyBtYXJnaW4tbGVmdDphdXRvOyB9Ci5oZWxwLWVk
aXQtYmFyIC5oZWxwLXNhdmUtYnRuOmhvdmVyIHsgb3BhY2l0eTowLjg1OyB9Ci5oZWxwLWVkaXQt
YmFyIC5oZWxwLWNhbmNlbC1idG4geyBiYWNrZ3JvdW5kOnRyYW5zcGFyZW50OyBib3JkZXI6MXB4
IHNvbGlkIHZhcigtLWJvcmRlci1zdHJvbmcpOyBib3JkZXItcmFkaXVzOjRweDsgcGFkZGluZzo1
cHggMTJweDsgfQouaGVscC1ib2R5W2NvbnRlbnRlZGl0YWJsZT0idHJ1ZSJdIHsgYm9yZGVyOjJw
eCBzb2xpZCB2YXIoLS10ZXh0LWhlYWRpbmcpOyBib3JkZXItcmFkaXVzOjRweDsgbWFyZ2luOjRw
eDsgfQogICAgPC9zdHlsZT4KPC9oZWFkPgo8Ym9keT4KCiAgICA8IS0tIEhlYWRlciAtLT4KICAg
IDxoZWFkZXI+CiAgICAgICAgPGltZyBzcmM9ImNzcy9pbWFnZXMvZHJpdmVfbG9nb19uaWdodC5w
bmciCiAgICAgICAgICAgICBhbHQ9IkQuUi5JLlYuRS4iCiAgICAgICAgICAgICBjbGFzcz0iZHJp
dmUtbG9nbyIKICAgICAgICAgICAgIHN0eWxlPSJjdXJzb3I6cG9pbnRlcjsiCiAgICAgICAgICAg
ICBvbmNsaWNrPSJEcml2ZVBvcnRhbC5zaG93SG9tZSgpIgogICAgICAgICAgICAgb25lcnJvcj0i
dGhpcy5zdHlsZS5kaXNwbGF5PSdub25lJyI+CiAgICAgICAgPGRpdiBjbGFzcz0iZHJpdmUtaGVh
ZGVyLWNlbnRlciI+CiAgICAgICAgICAgIDxwPkRpZ2l0YWxlcyBSZXNzb3VyY2VuLSB1bmQgSW5m
b3JtYXRpb25zcG9ydGFsIFZlcmtlaHI8L3A+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGJ1dHRv
biBjbGFzcz0idGhlbWUtdG9nZ2xlIiBpZD0idGhlbWVUb2dnbGUiIG9uY2xpY2s9InRvZ2dsZVRo
ZW1lKCkiIHRpdGxlPSJUYWcvTmFjaHQtTW9kdXMgdW1zY2hhbHRlbiI+CiAgICAgICAgICAgIDxz
cGFuIGNsYXNzPSJpY29uLWRheSI+JiM5Nzg5Ozwvc3Bhbj4KICAgICAgICAgICAgPHNwYW4gY2xh
c3M9Imljb24tbmlnaHQiPiYjOTc4ODs8L3NwYW4+CiAgICAgICAgPC9idXR0b24+CiAgICA8L2hl
YWRlcj4KCiAgICA8IS0tIENvbm5lY3Rpb24gQmFyIChudXIgc2ljaHRiYXIgd2VubiB2ZXJidW5k
ZW4pIC0tPgogICAgPGRpdiBjbGFzcz0iY29ubmVjdGlvbi1iYXIiIGlkPSJjb25uZWN0aW9uQmFy
IiBzdHlsZT0iZGlzcGxheTpub25lOyI+CiAgICAgICAgPHNwYW4gY2xhc3M9InN0YXR1cy1kb3Qi
IGlkPSJzdGF0dXNEb3QiPjwvc3Bhbj4KICAgICAgICA8c3BhbiBpZD0iY29ubmVjdGlvblRleHQi
Pjwvc3Bhbj4KICAgICAgICA8YnV0dG9uIG9uY2xpY2s9IkRyaXZlRlMucmVjb25uZWN0KCkiIGlk
PSJidG5SZWNvbm5lY3QiIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij5PcmRuZXIgd2VjaHNlbG48L2J1
dHRvbj4KICAgICAgICA8YnV0dG9uIG9uY2xpY2s9IkRyaXZlRlMuYWN0aXZhdGVTZXJ2ZXIoKSIg
aWQ9ImJ0bkFjdGl2YXRlU2VydmVyIiBzdHlsZT0iZGlzcGxheTpub25lOyI+U2VydmVyIHN0YXJ0
ZW4gZsO8ciBCZWFyYmVpdHVuZzwvYnV0dG9uPgogICAgICAgIDxzcGFuIGNsYXNzPSJzcGFjZXIi
Pjwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0icmV2aWV3LWJhZGdlIiBpZD0icmV2aWV3QmFk
Z2UiIHN0eWxlPSJkaXNwbGF5Om5vbmU7IiBvbmNsaWNrPSJEcml2ZUdvdmVybmFuY2Uuc2hvd1F1
ZXVlKCkiIHRpdGxlPSJBcnRpa2VsLCBkaWUgYXVmIGRlaW5lIEZyZWlnYWJlIG9kZXIgQWJsZWhu
dW5nIHdhcnRlbiI+UHLDvGZ1bmdlbjogPHNwYW4gaWQ9InJldmlld0NvdW50Ij4wPC9zcGFuPjwv
c3Bhbj4KICAgICAgICA8YnV0dG9uIG9uY2xpY2s9IkRyaXZlR292ZXJuYW5jZS5zaG93QWRtaW4o
KSIgaWQ9ImJ0bkdvdkFkbWluIiBzdHlsZT0iZGlzcGxheTpub25lOyBwYWRkaW5nOjRweCAxMHB4
OyBiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsMC4xNSk7IGJvcmRlcjoxcHggc29saWQgcmdi
YSgyNTUsMjU1LDI1NSwwLjQpOyBjb2xvcjp3aGl0ZTsgYm9yZGVyLXJhZGl1czozcHg7IGN1cnNv
cjpwb2ludGVyOyBmb250LXNpemU6MTJweDsiIHRpdGxlPSJWZXJ3YWx0dW5nc2JlcmVpY2g6IFJv
bGxlbiwgS2F0ZWdvcmllbiwgRWluc3RlbGx1bmdlbiB1bmQgbWVociI+R292ZXJuYW5jZTwvYnV0
dG9uPgogICAgICAgIDxzcGFuIGNsYXNzPSJzeW5jLWluZm8iIGlkPSJzeW5jSW5mbyI+PC9zcGFu
PgogICAgPC9kaXY+CgogICAgPCEtLSBNYWluIENvbnRlbnQgLS0+CiAgICA8bWFpbj4KICAgICAg
ICA8ZGl2IGNsYXNzPSJjb250cm9scyI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRyb2xz
LXJvdy10b3AiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2VhcmNoLWJveCI+CiAgICAg
ICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGlkPSJzZWFyY2hJbnB1dCIgcGxhY2Vo
b2xkZXI9IkRva3VtZW50IHN1Y2hlbi4uLiIgZGlzYWJsZWQ+CiAgICAgICAgICAgICAgICA8L2Rp
dj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InN0YXR1cy1maWx0ZXJzIiBpZD0ic3RhdHVz
RmlsdGVycyI+PC9kaXY+CiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJmaWx0ZXItYnRu
IiBpZD0iYnRuTmV3RG9jIiBvbmNsaWNrPSJEcml2ZUVkaXRvci5jcmVhdGVOZXcoKSIgZGlzYWJs
ZWQKICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICMyZDlk
Nzg7IGNvbG9yOiB3aGl0ZTsgYm9yZGVyLWNvbG9yOiAjMmQ5ZDc4OyIgdGl0bGU9IkVpbmVuIG5l
dWVuIEFydGlrZWwgZXJzdGVsbGVuIj4rIE5ldTwvYnV0dG9uPgogICAgICAgICAgICAgICAgPGJ1
dHRvbiBjbGFzcz0iZmlsdGVyLWJ0biIgaWQ9ImJ0blRhYmxlVmlldyIgb25jbGljaz0iRHJpdmVQ
b3J0YWwudG9nZ2xlVGFibGVWaWV3KCkiIHRpdGxlPSJad2lzY2hlbiBMaXN0ZW5hbnNpY2h0IHVu
ZCBUYWJlbGxlbmFuc2ljaHQgd2VjaHNlbG4iPiYjOTc3NjsgVGFiZWxsZTwvYnV0dG9uPgogICAg
ICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udHJvbHMtcm93LWNhdGVn
b3JpZXMiIGlkPSJjYXRlZ29yeUZpbHRlcnMiPjwvZGl2PgogICAgICAgIDwvZGl2PgoKICAgICAg
ICA8ZGl2IGNsYXNzPSJ0YWJsZS12aWV3LWNvbnRhaW5lciIgaWQ9InRhYmxlVmlld0NvbnRhaW5l
ciI+PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iY29udGFpbmVyIiBpZD0iY29udGFpbmVyIj4K
ICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG9jdW1lbnQtbGlzdCI+CiAgICAgICAgICAgICAgICA8
ZGl2IGNsYXNzPSJsaXN0LWhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgRG9rdW1lbnRlCiAg
ICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImRvYy1jb3VudCIgaWQ9ImRvY0NvdW50Ij48
L3NwYW4+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9
Imxpc3QtaXRlbXMiIGlkPSJkb2N1bWVudExpc3QiPgogICAgICAgICAgICAgICAgICAgIDxkaXYg
Y2xhc3M9ImVtcHR5LXN0YXRlIj48cD5WZXJiaW5kdW5nIHdpcmQgaGVyZ2VzdGVsbHQuLi48L3A+
PC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAg
ICAgIDxkaXYgY2xhc3M9ImRvY3VtZW50LWRldGFpbCIgaWQ9ImRvY3VtZW50RGV0YWlsIj4KICAg
ICAgICAgICAgICAgIDxkaXYgY2xhc3M9IndlbGNvbWUtY29udGVudCI+CiAgICAgICAgICAgICAg
ICAgICAgPGgxPldpbGxrb21tZW4gYmVpIEQuUi5JLlYuRS48L2gxPgogICAgICAgICAgICAgICAg
ICAgIDxwIHN0eWxlPSJmb250LXNpemU6MTZweDtsaW5lLWhlaWdodDoxLjg7bWFyZ2luLWJvdHRv
bToxNnB4OyI+CiAgICAgICAgICAgICAgICAgICAgICAgIERhcyA8c3Ryb25nPkRpZ2l0YWxlIFJl
c3NvdXJjZW4tIHVuZCBJbmZvcm1hdGlvbnNwb3J0YWwgVmVya2Vocjwvc3Ryb25nPiBpc3QgdW5z
ZXJlIGdlbWVpbnNhbWUgV2lzc2Vuc3BsYXR0Zm9ybS4KICAgICAgICAgICAgICAgICAgICA8L3A+
CiAgICAgICAgICAgICAgICAgICAgPHAgc3R5bGU9ImZvbnQtc2l6ZToxNXB4O2xpbmUtaGVpZ2h0
OjEuODttYXJnaW4tYm90dG9tOjE2cHg7Ij4KICAgICAgICAgICAgICAgICAgICAgICAgSGllciBz
YW1tZWxuIHdpciBGYWNod2lzc2VuLCBFcmZhaHJ1bmdlbiB1bmQgQXJiZWl0c2hpbGZlbiBhdXMg
YWxsZW4gQmVyZWljaGVuLCBkaWUgdW5zIGltIEFyYmVpdHNhbGx0YWcgYmVnZWduZW4g4oCTCiAg
ICAgICAgICAgICAgICAgICAgICAgIHZvbiBWZXJrZWhyc3JlY2h0IMO8YmVyIExhZHVuZ3NzaWNo
ZXJ1bmcgYmlzIGhpbiB6dSB0ZWNobmlzY2hlbiBLb250cm9sbGVuIHVuZCB6dSBIaWxmZXN0ZWxs
dW5nZW4gYmVpIGRlciBhYnNjaGxpZcOfZW5kZW4gQW56ZWlnZW5mZXJ0aWd1bmcuCiAgICAgICAg
ICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgIDxwIHN0eWxlPSJmb250LXNpemU6
MTZweDtsaW5lLWhlaWdodDoxLjg7bWFyZ2luLWJvdHRvbToxNnB4OyI+CiAgICAgICAgICAgICAg
ICAgICAgICAgIEQuUi5JLlYuRS4gbGVidCBkYXZvbiwgZGFzcyA8c3Ryb25nPmFsbGUgbWl0bWFj
aGVuPC9zdHJvbmc+Li4uIHZvbSBLQSBiaXMgenVtIFZLIQogICAgICAgICAgICAgICAgICAgIDwv
cD4KICAgICAgICAgICAgICAgICAgICA8cCBzdHlsZT0iZm9udC1zaXplOjE1cHg7bGluZS1oZWln
aHQ6MS44O21hcmdpbi1ib3R0b206MjBweDsiPgogICAgICAgICAgICAgICAgICAgICAgICBKZWRl
IEtvbGxlZ2luIHVuZCBqZWRlciBLb2xsZWdlIGlzdCBoZXJ6bGljaCBlaW5nZWxhZGVuLAogICAg
ICAgICAgICAgICAgICAgICAgICBlaWdlbmVzIFdpc3NlbiBlaW56dWJyaW5nZW4sIGJlc3RlaGVu
ZGUgQXJ0aWtlbCB6dSBlcmfDpG56ZW4gb2RlciBuZXVlIFRoZW1lbiBhbnp1bGVnZW4uCiAgICAg
ICAgICAgICAgICAgICAgICAgIE51ciBnZW1laW5zYW0gc2NoYWZmZW4gd2lyIGVpbmUgV2lzc2Vu
c2Jhc2lzLCBkaWUgYWt0dWVsbCwgZnVuZGllcnQgdW5kIGltIEVpbnNhdHogc293aWUgZGVyIEJl
YXJiZWl0dW5nIHdpcmtsaWNoIGhpbGZ0LgogICAgICAgICAgICAgICAgICAgIDwvcD4KCiAgICAg
ICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaW5mby1zZWN0aW9uIj4KICAgICAgICAgICAgICAg
ICAgICAgICAgPGgyPk1pdG1hY2hlbiDigJMgc28gZWluZmFjaCBnZWh0J3M8L2gyPgogICAgICAg
ICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PHN0
cm9uZz5MZXNlbjo8L3N0cm9uZz4gw5ZmZm5lIGVpbmZhY2ggZGllc2UgRGF0ZWkgaW0gQnJvd3Nl
ciDigJMgYWxsZSBmcmVpZ2VnZWJlbmVuIEFydGlrZWwgd2VyZGVuIGF1dG9tYXRpc2NoIGdlbGFk
ZW48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxzdHJvbmc+TWl0YXJiZWl0
ZW46PC9zdHJvbmc+IFN0YXJ0ZSA8Y29kZT5EUklWRV9TdGFydC5iYXQ8L2NvZGU+IHBlciBEb3Bw
ZWxrbGljayDigJMgZGFtaXQga2FubnN0IGR1IEFydGlrZWwgZXJzdGVsbGVuLCBiZWFyYmVpdGVu
IHVuZCBNZWRpZW4gaG9jaGxhZGVuPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxs
aT48c3Ryb25nPkZyZWlnYWJlOjwvc3Ryb25nPiBOZXVlIHVuZCDDvGJlcmFyYmVpdGV0ZSBBcnRp
a2VsIGR1cmNobGF1ZmVuIGVpbmVuIGt1cnplbiBQcsO8ZnByb3plc3MsIGRhbWl0IGRpZSBRdWFs
aXTDpHQgc3RpbW10PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAg
ICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaW5mby1z
ZWN0aW9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGgyPldhcnVtIEQuUi5JLlYuRS4/PC9o
Mj4KICAgICAgICAgICAgICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBJbSBBcmJlaXRzYWxsdGFnIHN0b8OfZW4gd2lyIHJlZ2VsbcOkw59pZyBhdWYgRnJhZ2VuLCBk
ZXJlbiBBbnR3b3J0ZW4gaXJnZW5kd28gaW4gT3JkbmVybiwgRS1NYWlscyBvZGVyIEvDtnBmZW4g
dmVydGVpbHQgc2luZC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIEQuUi5JLlYuRS4gYnJp
bmd0IGRpZXNlcyBXaXNzZW4gYW4gZWluZW0gT3J0IHp1c2FtbWVuLiBTbyBwcm9maXRpZXJlbiBh
bGxlIHZvbiBkZXIgaW5ow6RyZW50ZW4gRXJmYWhydW5nIGRlciBNaXRhcmJlaXRlciBkZXIgRGly
ZWt0aW9uIFZlcmtlaHIgZGVzIFBQIERvcnRtdW5kIQogICAgICAgICAgICAgICAgICAgICAgICA8
L3A+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgIDxkaXYg
Y2xhc3M9ImluZm8tc2VjdGlvbiIgaWQ9IndlbGNvbWVDb25uZWN0SGludCIgc3R5bGU9ImRpc3Bs
YXk6bm9uZTsiPgogICAgICAgICAgICAgICAgICAgICAgICA8cD5adW0gTGVzZW46IMOWZmZuZSBk
aWUgaW5kZXguaHRtbCBkaXJla3Qg4oCTIGRpZSBBcnRpa2VsIHdlcmRlbiBhdXRvbWF0aXNjaCBn
ZWxhZGVuLjxicj5adW0gQmVhcmJlaXRlbjogU3RhcnRlIDxzdHJvbmc+RFJJVkVfU3RhcnQuYmF0
PC9zdHJvbmc+IHBlciBEb3BwZWxrbGljay48L3A+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+
CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+
CiAgICA8L21haW4+CgogICAgPCEtLSBFZGl0b3IgTW9kYWwgLS0+CiAgICA8ZGl2IGNsYXNzPSJl
ZGl0b3ItbW9kYWwiIGlkPSJlZGl0b3JNb2RhbCI+CiAgICAgICAgPGRpdiBjbGFzcz0iZWRpdG9y
LW1vZGFsLWNvbnRlbnQiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJlZGl0b3ItbW9kYWwtaGVh
ZGVyIj4KICAgICAgICAgICAgICAgIDxoMiBpZD0iZWRpdG9yTW9kYWxUaXRsZSI+RWRpdG9yPC9o
Mj4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICA8IS0tIE1ldGFkYXRlbi1aZWlsZSAx
IC0tPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJlZGl0b3ItbWV0YS1yb3ciPgogICAgICAgICAg
ICAgICAgPGxhYmVsPlRpdGVsOjwvbGFiZWw+CiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0i
dGV4dCIgaWQ9ImVkaXRvclRpdGVsIiBwbGFjZWhvbGRlcj0iRG9rdW1lbnR0aXRlbCBlaW5nZWJl
bi4uLiI+CiAgICAgICAgICAgICAgICA8bGFiZWw+S2F0ZWdvcmllOjwvbGFiZWw+CiAgICAgICAg
ICAgICAgICA8c2VsZWN0IGlkPSJlZGl0b3JLYXRlZ29yaWUiPjwvc2VsZWN0PgogICAgICAgICAg
ICAgICAgPGxhYmVsPlN0YXR1czo8L2xhYmVsPgogICAgICAgICAgICAgICAgPHNlbGVjdCBpZD0i
ZWRpdG9yU3RhdHVzIj48L3NlbGVjdD4KICAgICAgICAgICAgICAgIDxsYWJlbD7DnGJlcmFydGlr
ZWw6PC9sYWJlbD4KICAgICAgICAgICAgICAgIDxzZWxlY3QgaWQ9ImVkaXRvclBhcmVudCI+PG9w
dGlvbiB2YWx1ZT0iIj4tLSBLZWluIMOcYmVyYXJ0aWtlbCAtLTwvb3B0aW9uPjwvc2VsZWN0Pgog
ICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPCEtLSBUb29sYmFyIC0tPgogICAgICAgICAg
ICA8ZGl2IGNsYXNzPSJlZGl0b3ItdG9vbGJhciI+CiAgICAgICAgICAgICAgICA8YnV0dG9uIG9u
Y2xpY2s9IkRyaXZlRWRpdG9yLnVuZG8oKSIgdGl0bGU9IlLDvGNrZ8OkbmdpZyAoU3RyZytaKSI+
PGltZyBzcmM9ImNzcy9pY29ucy91bmRvLnBuZyIgc3R5bGU9IndpZHRoOjE2cHg7aGVpZ2h0OjE2
cHg7dmVydGljYWwtYWxpZ246bWlkZGxlOyI+PC9idXR0b24+CiAgICAgICAgICAgICAgICA8YnV0
dG9uIG9uY2xpY2s9IkRyaXZlRWRpdG9yLnJlZG8oKSIgdGl0bGU9IldpZWRlcmhvbGVuIChTdHJn
K1kpIj48aW1nIHNyYz0iY3NzL2ljb25zL3JlZG8ucG5nIiBzdHlsZT0id2lkdGg6MTZweDtoZWln
aHQ6MTZweDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7Ij48L2J1dHRvbj4KICAgICAgICAgICAgICAg
IDxzcGFuIGNsYXNzPSJ0b29sYmFyLXNlcGFyYXRvciI+PC9zcGFuPgogICAgICAgICAgICAgICAg
PHNlbGVjdCBvbmNoYW5nZT0iRHJpdmVFZGl0b3IuaGVhZGluZyh0aGlzLnZhbHVlKTt0aGlzLnZh
bHVlPScnIiBzdHlsZT0iZm9udC1zaXplOjEycHg7cGFkZGluZzoycHggNHB4OyI+CiAgICAgICAg
ICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iIj5BYnNhdHo8L29wdGlvbj4KICAgICAgICAgICAg
ICAgICAgICA8b3B0aW9uIHZhbHVlPSJoMSIgc3R5bGU9ImZvbnQtc2l6ZToxOHB4O2ZvbnQtd2Vp
Z2h0OmJvbGQ7Ij5IMSDDnGJlcnNjaHJpZnQ8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICA8
b3B0aW9uIHZhbHVlPSJoMiIgc3R5bGU9ImZvbnQtc2l6ZToxNnB4O2ZvbnQtd2VpZ2h0OmJvbGQ7
Ij5IMiDDnGJlcnNjaHJpZnQ8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZh
bHVlPSJoMyIgc3R5bGU9ImZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OmJvbGQ7Ij5IMyDDnGJl
cnNjaHJpZnQ8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJoNCIg
c3R5bGU9ImZvbnQtc2l6ZToxM3B4O2ZvbnQtd2VpZ2h0OmJvbGQ7Ij5INCDDnGJlcnNjaHJpZnQ8
L29wdGlvbj4KICAgICAgICAgICAgICAgIDwvc2VsZWN0PgogICAgICAgICAgICAgICAgPGJ1dHRv
biBvbmNsaWNrPSJEcml2ZUVkaXRvci5jb21tYW5kKCdib2xkJykiIHRpdGxlPSJGZXR0Ij48Yj5C
PC9iPjwvYnV0dG9uPgogICAgICAgICAgICAgICAgPGJ1dHRvbiBvbmNsaWNrPSJEcml2ZUVkaXRv
ci5jb21tYW5kKCdpdGFsaWMnKSIgdGl0bGU9Ikt1cnNpdiI+PGk+STwvaT48L2J1dHRvbj4KICAg
ICAgICAgICAgICAgIDxidXR0b24gb25jbGljaz0iRHJpdmVFZGl0b3IuY29tbWFuZCgndW5kZXJs
aW5lJykiIHRpdGxlPSJVbnRlcnN0cmljaGVuIj48dT5VPC91PjwvYnV0dG9uPgogICAgICAgICAg
ICAgICAgPGJ1dHRvbiBvbmNsaWNrPSJEcml2ZUVkaXRvci5jb21tYW5kKCdpbnNlcnRVbm9yZGVy
ZWRMaXN0JykiIHRpdGxlPSJBdWZ6w6RobHVuZyI+PGltZyBzcmM9ImNzcy9pY29ucy9idWxsZXRf
bGlzdC5naWYiIHN0eWxlPSJ3aWR0aDoxNnB4O2hlaWdodDoxNnB4O3ZlcnRpY2FsLWFsaWduOm1p
ZGRsZTsiPjwvYnV0dG9uPgogICAgICAgICAgICAgICAgPGJ1dHRvbiBvbmNsaWNrPSJEcml2ZUVk
aXRvci5jb21tYW5kKCdpbnNlcnRPcmRlcmVkTGlzdCcpIiB0aXRsZT0iTnVtbWVyaWVydGUgTGlz
dGUiPjxpbWcgc3JjPSJjc3MvaWNvbnMvbnVtYmVyZWRfbGlzdC5wbmciIHN0eWxlPSJ3aWR0aDox
NnB4O2hlaWdodDoxNnB4O3ZlcnRpY2FsLWFsaWduOm1pZGRsZTsiPjwvYnV0dG9uPgoKICAgICAg
ICAgICAgICAgIDxzZWxlY3QgaWQ9ImZvbnRTaXplU2VsZWN0IiBvbmNoYW5nZT0iRHJpdmVFZGl0
b3IuZm9udFNpemUodGhpcy52YWx1ZSkiPgogICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFs
dWU9IiI+R3LDtsOfZTwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9
IjEyIj4xMjwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjE0Ij4x
NDwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjE2Ij4xNjwvb3B0
aW9uPgogICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjE4Ij4xODwvb3B0aW9uPgog
ICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjIwIj4yMDwvb3B0aW9uPgogICAgICAg
ICAgICAgICAgPC9zZWxlY3Q+CgogICAgICAgICAgICAgICAgPGJ1dHRvbiBvbmNsaWNrPSJEcml2
ZUVkaXRvci5jb2xvcignIzAwMDAwMCcpIiB0aXRsZT0iU2Nod2FyeiI+PHNwYW4gY2xhc3M9ImNv
bG9yLXN3YXRjaCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IzAwMDAwMCI+PC9zcGFuPjwvYnV0
dG9uPgogICAgICAgICAgICAgICAgPGJ1dHRvbiBvbmNsaWNrPSJEcml2ZUVkaXRvci5jb2xvcign
IzJFNEE2MicpIiB0aXRsZT0iUG9saXplaS1CbGF1Ij48c3BhbiBjbGFzcz0iY29sb3Itc3dhdGNo
IiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjojMkU0QTYyIj48L3NwYW4+PC9idXR0b24+CiAgICAg
ICAgICAgICAgICA8YnV0dG9uIG9uY2xpY2s9IkRyaXZlRWRpdG9yLmNvbG9yKCcjM2E3YWEzJyki
IHRpdGxlPSJCbGF1Ij48c3BhbiBjbGFzcz0iY29sb3Itc3dhdGNoIiBzdHlsZT0iYmFja2dyb3Vu
ZC1jb2xvcjojM2E3YWEzIj48L3NwYW4+PC9idXR0b24+CiAgICAgICAgICAgICAgICA8YnV0dG9u
IG9uY2xpY2s9IkRyaXZlRWRpdG9yLmNvbG9yKCcjNmI5YmMzJykiIHRpdGxlPSJIZWxsYmxhdSI+
PHNwYW4gY2xhc3M9ImNvbG9yLXN3YXRjaCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IzZiOWJj
MyI+PC9zcGFuPjwvYnV0dG9uPgogICAgICAgICAgICAgICAgPGJ1dHRvbiBvbmNsaWNrPSJEcml2
ZUVkaXRvci5jb2xvcignIzhiM2E2MicpIiB0aXRsZT0iQm9yZGVhdXgiPjxzcGFuIGNsYXNzPSJj
b2xvci1zd2F0Y2giIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiM4YjNhNjIiPjwvc3Bhbj48L2J1
dHRvbj4KICAgICAgICAgICAgICAgIDxidXR0b24gb25jbGljaz0iRHJpdmVFZGl0b3IuY29sb3Io
JyNmZjAwMDAnKSIgdGl0bGU9IlJvdCI+PHNwYW4gY2xhc3M9ImNvbG9yLXN3YXRjaCIgc3R5bGU9
ImJhY2tncm91bmQtY29sb3I6I2ZmMDAwMCI+PC9zcGFuPjwvYnV0dG9uPgoKICAgICAgICAgICAg
ICAgIDxzcGFuIGNsYXNzPSJ0b29sYmFyLXNlcGFyYXRvciI+PC9zcGFuPgogICAgICAgICAgICAg
ICAgPGJ1dHRvbiBvbmNsaWNrPSJEcml2ZUVkaXRvci5pbnNlcnRBY2NvcmRpb24oKSIgdGl0bGU9
IkF1ZmtsYXBwYmFyZW4gVGV4dGJlcmVpY2ggZWluZsO8Z2VuIj48aW1nIHNyYz0iY3NzL2ljb25z
L0NoZXZyb24ucG5nIiBzdHlsZT0id2lkdGg6MTZweDtoZWlnaHQ6MTZweDt2ZXJ0aWNhbC1hbGln
bjptaWRkbGU7Ij48L2J1dHRvbj4KICAgICAgICAgICAgICAgIDxidXR0b24gb25jbGljaz0iRHJp
dmVFZGl0b3IuaW5zZXJ0RkFRKCkiIHRpdGxlPSJGQVEtQmVyZWljaCBtaXQgRnJhZ2UtQW50d29y
dC1QYWFyZW4gZWluZsO8Z2VuIj48aW1nIHNyYz0iY3NzL2ljb25zL2ZhcS5wbmciIHN0eWxlPSJ3
aWR0aDoxNnB4O2hlaWdodDoxNnB4O3ZlcnRpY2FsLWFsaWduOm1pZGRsZTsiPjwvYnV0dG9uPgog
ICAgICAgICAgICAgICAgPGJ1dHRvbiBvbmNsaWNrPSJEcml2ZUVkaXRvci5pbnNlcnRUYWJsZSgp
IiB0aXRsZT0iVGFiZWxsZSBlaW5mw7xnZW4iPjxpbWcgc3JjPSJjc3MvaWNvbnMvdGFibGUucG5n
IiBzdHlsZT0id2lkdGg6MTZweDtoZWlnaHQ6MTZweDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7Ij48
L2J1dHRvbj4KICAgICAgICAgICAgICAgIDxidXR0b24gb25jbGljaz0iRHJpdmVFZGl0b3IuaW5z
ZXJ0RGl2aWRlcigpIiB0aXRsZT0iSG9yaXpvbnRhbGUgVHJlbm5saW5pZSBlaW5mw7xnZW4iIHN0
eWxlPSJmb250LXNpemU6MTRweDtsZXR0ZXItc3BhY2luZzotMXB4OyI+4oCVPC9idXR0b24+CiAg
ICAgICAgICAgICAgICA8YnV0dG9uIG9uY2xpY2s9IkRyaXZlRWRpdG9yLmluc2VydEluZm9ib3go
KSIgdGl0bGU9IkhlcnZvcmdlaG9iZW5lciBJbmZvYmxvY2sgbWl0IEFremVudGxpbmllIiBzdHls
ZT0iZm9udC1zaXplOjExcHg7Ij7ilpAgSW5mbzwvYnV0dG9uPgogICAgICAgICAgICAgICAgPGJ1
dHRvbiBvbmNsaWNrPSJEcml2ZUVkaXRvci5pbnNlcnRJbXBvcnRhbnQoKSIgdGl0bGU9IldpY2h0
aWdlbiBIaW53ZWlzIGVpbmbDvGdlbiI+PGltZyBzcmM9ImNzcy9pY29ucy9pbXBvcnRhbnQucG5n
IiBzdHlsZT0id2lkdGg6MTZweDtoZWlnaHQ6MTZweDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7Ij48
L2J1dHRvbj4KICAgICAgICAgICAgICAgIDxidXR0b24gb25jbGljaz0iRHJpdmVFZGl0b3Iuc2hv
d1VwbG9hZE1vZGFsKCkiIHRpdGxlPSJEYXRlaWVuIGhvY2hsYWRlbiIgc3R5bGU9ImZvbnQtd2Vp
Z2h0OjYwMDsiPlVwbG9hZDwvYnV0dG9uPgogICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9ImZs
ZXg6MTsiPjwvc3Bhbj4KICAgICAgICAgICAgICAgIDxidXR0b24gb25jbGljaz0iRHJpdmVFZGl0
b3IudG9nZ2xlUmF3KCkiIGlkPSJidG5SYXdNb2RlIiB0aXRsZT0iSFRNTC1RdWVsbHRleHQgYW56
ZWlnZW4vYmVhcmJlaXRlbiIgc3R5bGU9ImZvbnQtc2l6ZToxMXB4O2ZvbnQtZmFtaWx5Om1vbm9z
cGFjZTtvcGFjaXR5OjAuNjsiPiZsdDsvJmd0OzwvYnV0dG9uPgogICAgICAgICAgICA8L2Rpdj4K
CiAgICAgICAgICAgIDwhLS0gRWRpdG9yIEFyZWEgLS0+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9
ImVkaXRvci1hcmVhIj4KICAgICAgICAgICAgICAgIDxkaXYgaWQ9ImVkaXRvcklucHV0IiBjbGFz
cz0iZWRpdG9yLWlucHV0IiBjb250ZW50ZWRpdGFibGU9InRydWUiIHNwZWxsY2hlY2s9InRydWUi
PjwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgIDwhLS0gTWVkaWVuLVZlcndh
bHR1bmcgKG51ciBBbnplaWdlL0JlYXJiZWl0dW5nLCBVcGxvYWQgdWViZXIgVG9vbGJhcikgLS0+
CiAgICAgICAgICAgIDxkaXYgaWQ9ImVkaXRvck1lZGlhUGFuZWwiIHN0eWxlPSJkaXNwbGF5Om5v
bmU7IGJvcmRlci10b3A6MXB4IHNvbGlkIHZhcigtLWJvcmRlci1jb2xvcik7IHBhZGRpbmc6OHB4
IDE2cHg7IGJhY2tncm91bmQ6dmFyKC0tYmctY2FyZC1hbHQpOyBtYXgtaGVpZ2h0OjIyMHB4OyBv
dmVyZmxvdy15OmF1dG87Ij4KICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9ImRpc3BsYXk6Zmxl
eDsganVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47IGFsaWduLWl0ZW1zOmNlbnRlcjsgbWFy
Z2luLWJvdHRvbTo2cHg7Ij4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT0iZm9udC1z
aXplOjEycHg7IGZvbnQtd2VpZ2h0OjYwMDsgY29sb3I6dmFyKC0tdGV4dC1oZWFkaW5nKTsiPkhv
Y2hnZWxhZGVuZSBEYXRlaWVuPC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9
ImRpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjhweDsiPgogICAgICAgICAgICAg
ICAgICAgICAgICA8YnV0dG9uIG9uY2xpY2s9IkRyaXZlRWRpdG9yLnNob3dVcGxvYWRNb2RhbCgp
IiBzdHlsZT0iYmFja2dyb3VuZDpub25lOyBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlci1j
b2xvcik7IGJvcmRlci1yYWRpdXM6M3B4OyBwYWRkaW5nOjJweCA4cHg7IGN1cnNvcjpwb2ludGVy
OyBmb250LXNpemU6MTFweDsgY29sb3I6dmFyKC0tdGV4dC1oZWFkaW5nKTsiPisgSGluenVmw7xn
ZW48L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBvbmNsaWNrPSJEcml2
ZUVkaXRvci50b2dnbGVNZWRpYVBhbmVsKCkiIHN0eWxlPSJiYWNrZ3JvdW5kOm5vbmU7IGJvcmRl
cjpub25lOyBjdXJzb3I6cG9pbnRlcjsgZm9udC1zaXplOjE0cHg7IGNvbG9yOnZhcigtLXRleHQt
bXV0ZWQpOyI+JnRpbWVzOzwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAg
ICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGlkPSJlZGl0b3JNZWRpYUxp
c3QiPjwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgIDwhLS0gU2NobGFnd8O2
cnRlciAodW50ZXJoYWxiIGRlcyBFZGl0b3JzKSAtLT4KICAgICAgICAgICAgPGRpdiBjbGFzcz0i
ZWRpdG9yLW1ldGEtcm93IiBpZD0iZWRpdG9yS2V5d29yZFJvdyIgc3R5bGU9ImZsZXgtd3JhcDp3
cmFwO2JvcmRlci10b3A6MXB4IHNvbGlkIHZhcigtLWJvcmRlci1jb2xvcik7cGFkZGluZzo4cHgg
MTZweDttYXJnaW46MDsiPgogICAgICAgICAgICAgICAgPGxhYmVsIHN0eWxlPSJmb250LXNpemU6
MTJweDsiPlNjaGxhZ3fDtnJ0ZXI6PC9sYWJlbD4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9
ImtleXdvcmQtaW5wdXQtd3JhcCI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ia2V5
d29yZC1pbnB1dC1jb250YWluZXIiIGlkPSJlZGl0b3JLZXl3b3JkcyIgb25jbGljaz0iZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2VkaXRvcktleXdvcmRJbnB1dCcpLmZvY3VzKCkiPgogICAgICAg
ICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImVkaXRvcktleXdvcmRJbnB1
dCIgcGxhY2Vob2xkZXI9InouQi4gVmVya2VocnNmw7xocnVuZywgQmF1c3RlbGxlLCBBdXRvYmFo
biwgSW5uZW5zdGFkdC4uLiI+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAg
ICAgICAgICAgPGRpdiBjbGFzcz0ia2V5d29yZC1hdXRvY29tcGxldGUiIGlkPSJrZXl3b3JkQXV0
b2NvbXBsZXRlIj48L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAg
PGRpdiBpZD0ia2V5d29yZFN1Z2dlc3Rpb25zIiBzdHlsZT0id2lkdGg6MTAwJTttYXJnaW4tdG9w
OjRweDtkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7Z2FwOjRweDsiPjwvZGl2PgogICAgICAg
ICAgICA8L2Rpdj4KCiAgICAgICAgICAgIDwhLS0gRm9vdGVyIC0tPgogICAgICAgICAgICA8ZGl2
IGNsYXNzPSJlZGl0b3ItZm9vdGVyIj4KICAgICAgICAgICAgICAgIDxidXR0b24gb25jbGljaz0i
RHJpdmVFZGl0b3IuY2FuY2VsV2l0aFByb21wdCgpIj5BYmJyZWNoZW48L2J1dHRvbj4KICAgICAg
ICAgICAgICAgIDxidXR0b24gb25jbGljaz0iRHJpdmVFZGl0b3IudG9nZ2xlTWVkaWFQYW5lbCgp
IiBzdHlsZT0iZm9udC1zaXplOjEycHg7IiB0aXRsZT0iSG9jaGdlbGFkZW5lIERhdGVpZW4gYW56
ZWlnZW4sIGJlYXJiZWl0ZW4gb2RlciBsw7ZzY2hlbi4gTmV1ZSBEYXRlaWVuIGhvY2hsYWRlbjog
VXBsb2FkLUJ1dHRvbiBpbiBkZXIgV2Vya3pldWdsZWlzdGUgb2Jlbi4iPkFuaMOkbmdlIHZlcndh
bHRlbjwvYnV0dG9uPgogICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0ic2F2ZS1idG4iIG9u
Y2xpY2s9IkRyaXZlRWRpdG9yLnNhdmUoKSI+U3BlaWNoZXJuPC9idXR0b24+CiAgICAgICAgICAg
ICAgICA8YnV0dG9uIGNsYXNzPSJzYXZlLWJ0biIgb25jbGljaz0iRHJpdmVFZGl0b3Iuc2F2ZUFu
ZENsb3NlKCkiPlNwZWljaGVybiAmYW1wOyBTY2hsaWXDn2VuPC9idXR0b24+CiAgICAgICAgICAg
IDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgPCEtLSBNZWRpYSBGdWxsc2Ny
ZWVuIE1vZGFsIC0tPgogICAgPGRpdiBjbGFzcz0ibWVkaWEtbW9kYWwiIGlkPSJtZWRpYU1vZGFs
IiBvbmNsaWNrPSJjbG9zZU1lZGlhTW9kYWwoKSI+CiAgICAgICAgPGRpdiBjbGFzcz0ibWVkaWEt
bW9kYWwtY29udGVudCIgb25jbGljaz0iZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCkiPgogICAgICAg
ICAgICA8YnV0dG9uIGNsYXNzPSJtZWRpYS1tb2RhbC1jbG9zZSIgb25jbGljaz0iY2xvc2VNZWRp
YU1vZGFsKCkiPlNjaGxpZcOfZW48L2J1dHRvbj4KICAgICAgICAgICAgPGRpdiBpZD0ibWVkaWFN
b2RhbENvbnRhaW5lciI+PC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8IS0t
IE1lZGlhIFVwbG9hZCBFaW5zdGllZ3MtTW9kYWwgKERhdGVpYXVzd2FobCArIEVya2xhZXJ1bmcp
IC0tPgogICAgPGRpdiBjbGFzcz0ibWVkaWEtdXBsb2FkLWRpYWxvZyIgaWQ9Im1lZGlhVXBsb2Fk
U3RhcnRNb2RhbCI+CiAgICAgICAgPGRpdiBjbGFzcz0ibWVkaWEtdXBsb2FkLWRpYWxvZy1jb250
ZW50IiBzdHlsZT0id2lkdGg6NTIwcHg7Ij4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWVkaWEt
dXBsb2FkLWRpYWxvZy1oZWFkZXIiPgogICAgICAgICAgICAgICAgPHNwYW4+RGF0ZWllbiBob2No
bGFkZW48L3NwYW4+CiAgICAgICAgICAgICAgICA8YnV0dG9uIG9uY2xpY2s9IkRyaXZlRWRpdG9y
LmNsb3NlVXBsb2FkU3RhcnRNb2RhbCgpIj5TY2hsaWXDn2VuPC9idXR0b24+CiAgICAgICAgICAg
IDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJtZWRpYS11cGxvYWQtZGlhbG9nLWJvZHki
IHN0eWxlPSJwYWRkaW5nOjI0cHg7Ij4KICAgICAgICAgICAgICAgIDwhLS0gRHJhZyAmIERyb3Ag
Wm9uZSAtLT4KICAgICAgICAgICAgICAgIDxkaXYgaWQ9InVwbG9hZERyb3Bab25lIiBjbGFzcz0i
dXBsb2FkLWRyb3Atem9uZSI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT0iZm9udC1z
aXplOjI4cHg7bWFyZ2luLWJvdHRvbTo4cHg7b3BhY2l0eTowLjU7Ij4rPC9kaXY+CiAgICAgICAg
ICAgICAgICAgICAgPGRpdiBzdHlsZT0iZm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NjAwO2Nv
bG9yOnZhcigtLXRleHQtaGVhZGluZyk7bWFyZ2luLWJvdHRvbTo0cHg7Ij5EYXRlaWVuIGhpZXJo
ZXIgemllaGVuPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT0iZm9udC1zaXpl
OjEzcHg7Y29sb3I6dmFyKC0tdGV4dC1zZWNvbmRhcnkpO21hcmdpbi1ib3R0b206MTRweDsiPm9k
ZXIga2xpY2tlIGF1ZiBkZW4gQnV0dG9uPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGJ1dHRv
biBvbmNsaWNrPSJEcml2ZUVkaXRvci51cGxvYWRNZWRpYSgpIiBjbGFzcz0idXBsb2FkLXN0YXJ0
LWJ0biI+RGF0ZWllbiBhdXN3w6RobGVuPC9idXR0b24+CiAgICAgICAgICAgICAgICA8L2Rpdj4K
ICAgICAgICAgICAgICAgIDwhLS0gSW5mby1CZXJlaWNoIC0tPgogICAgICAgICAgICAgICAgPGRp
diBzdHlsZT0ibWFyZ2luLXRvcDoxOHB4O3BhZGRpbmc6MTRweCAxNnB4O2JhY2tncm91bmQ6dmFy
KC0tYmctY2FyZC1hbHQsI2Y2ZjhmYSk7Ym9yZGVyLXJhZGl1czo2cHg7Ym9yZGVyOjFweCBzb2xp
ZCB2YXIoLS1ib3JkZXItY29sb3IsI2UwZTBlMCk7Ij4KICAgICAgICAgICAgICAgICAgICA8ZGl2
IHN0eWxlPSJmb250LXNpemU6MTJweDtmb250LXdlaWdodDo2MDA7Y29sb3I6dmFyKC0tdGV4dC1o
ZWFkaW5nKTttYXJnaW4tYm90dG9tOjhweDsiPkhpbndlaXNlIHp1bSBVcGxvYWQ8L2Rpdj4KICAg
ICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbjowO3BhZGRpbmctbGVmdDoxOHB4O2Zv
bnQtc2l6ZToxMnB4O2NvbG9yOnZhcigtLXRleHQtc2Vjb25kYXJ5KTtsaW5lLWhlaWdodDoxLjg7
Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxzdHJvbmc+TWVocmZhY2hhdXN3YWhsPC9z
dHJvbmc+IG3DtmdsaWNoIChTdHJnL1NoaWZ0IGdlZHLDvGNrdCBoYWx0ZW4pPC9saT4KICAgICAg
ICAgICAgICAgICAgICAgICAgPGxpPjxzdHJvbmc+QmlsZGVyOjwvc3Ryb25nPiBKUEcsIFBORywg
R0lGLCBTVkcsIFdlYlA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8bGk+PHN0cm9uZz5E
b2t1bWVudGU6PC9zdHJvbmc+IFBERiwgV29yZCwgRXhjZWwsIFBvd2VyUG9pbnQ8L2xpPgogICAg
ICAgICAgICAgICAgICAgICAgICA8bGk+PHN0cm9uZz5NZWRpZW46PC9zdHJvbmc+IE1QNCwgV2Vi
TSwgTVAzLCBXQVYsIE9HRzwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsaT5Gw7xyIGpl
ZGUgRGF0ZWkga2FubnN0IGR1IDxzdHJvbmc+VGl0ZWwsIFVudGVydGl0ZWwsIERhcnN0ZWxsdW5n
PC9zdHJvbmc+IHVuZCA8c3Ryb25nPlBsYXR6aWVydW5nPC9zdHJvbmc+IGVpbnplbG4gZmVzdGxl
Z2VuPC9saT4KICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgPC9kaXY+
CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgPCEtLSBN
ZWRpYSBVcGxvYWQgRm9ybWF0aWVydW5ncy1EaWFsb2cgKHBybyBEYXRlaTogVGl0ZWwsIERhcnN0
ZWxsdW5nLCBldGMuKSAtLT4KICAgIDxkaXYgY2xhc3M9Im1lZGlhLXVwbG9hZC1kaWFsb2ciIGlk
PSJtZWRpYVVwbG9hZERpYWxvZyI+CiAgICAgICAgPGRpdiBjbGFzcz0ibWVkaWEtdXBsb2FkLWRp
YWxvZy1jb250ZW50Ij4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWVkaWEtdXBsb2FkLWRpYWxv
Zy1oZWFkZXIiPgogICAgICAgICAgICAgICAgPHNwYW4gaWQ9InVwbG9hZERpYWxvZ1RpdGxlIj5N
ZWRpZW4gZWluZsO8Z2VuPC9zcGFuPgogICAgICAgICAgICAgICAgPGJ1dHRvbiBvbmNsaWNrPSJE
cml2ZUVkaXRvci5jbG9zZVVwbG9hZERpYWxvZygpIj5BYmJyZWNoZW48L2J1dHRvbj4KICAgICAg
ICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1lZGlhLXVwbG9hZC1kaWFsb2ct
Ym9keSI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ1cGxvYWQtcHJldmlldyIgaWQ9InVw
bG9hZFByZXZpZXciPjwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idXBsb2FkLWZv
cm0tZ3JvdXAiPgogICAgICAgICAgICAgICAgICAgIDxsYWJlbD5UaXRlbDwvbGFiZWw+CiAgICAg
ICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGlkPSJ1cGxvYWRUaXRsZSIgcGxhY2Vo
b2xkZXI9IlRpdGVsIGRlciBEYXRlaS4uLiI+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAg
ICAgICAgICAgIDxkaXYgY2xhc3M9InVwbG9hZC1mb3JtLWdyb3VwIj4KICAgICAgICAgICAgICAg
ICAgICA8bGFiZWw+VW50ZXJ0aXRlbCAvIEJlc2NocmVpYnVuZzwvbGFiZWw+CiAgICAgICAgICAg
ICAgICAgICAgPHRleHRhcmVhIGlkPSJ1cGxvYWRDYXB0aW9uIiBwbGFjZWhvbGRlcj0iT3B0aW9u
YWxlciBVbnRlcnRpdGVsLi4uIj48L3RleHRhcmVhPgogICAgICAgICAgICAgICAgPC9kaXY+CiAg
ICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ1cGxvYWQtZm9ybS1ncm91cCIgaWQ9InVwbG9hZERp
c3BsYXlHcm91cCI+CiAgICAgICAgICAgICAgICAgICAgPGxhYmVsPkRhcnN0ZWxsdW5nPC9sYWJl
bD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ1cGxvYWQtb3B0aW9uLWdyb3VwIiBp
ZD0idXBsb2FkRGlzcGxheU9wdGlvbnMiPjwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAg
ICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ1cGxvYWQtZm9ybS1ncm91cCIgaWQ9InVwbG9hZEFs
aWduR3JvdXAiIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij4KICAgICAgICAgICAgICAgICAgICA8bGFi
ZWw+QXVzcmljaHR1bmc8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InVw
bG9hZC1vcHRpb24tZ3JvdXAiIGlkPSJ1cGxvYWRBbGlnbk9wdGlvbnMiPgogICAgICAgICAgICAg
ICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJ1cGxvYWQtb3B0aW9uLWJ0biIgZGF0YS1hbGlnbj0i
bGVmdCIgb25jbGljaz0iRHJpdmVFZGl0b3Iuc2V0VXBsb2FkT3B0aW9uKCdhbGlnbicsdGhpcyki
PkxpbmtzPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9InVw
bG9hZC1vcHRpb24tYnRuIGFjdGl2ZSIgZGF0YS1hbGlnbj0iY2VudGVyIiBvbmNsaWNrPSJEcml2
ZUVkaXRvci5zZXRVcGxvYWRPcHRpb24oJ2FsaWduJyx0aGlzKSI+TWl0dGlnPC9idXR0b24+CiAg
ICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9InVwbG9hZC1vcHRpb24tYnRuIiBk
YXRhLWFsaWduPSJyaWdodCIgb25jbGljaz0iRHJpdmVFZGl0b3Iuc2V0VXBsb2FkT3B0aW9uKCdh
bGlnbicsdGhpcykiPlJlY2h0czwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgIDwvZGl2Pgog
ICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ1cGxvYWQt
Zm9ybS1ncm91cCIgaWQ9InVwbG9hZFNpemVHcm91cCIgc3R5bGU9ImRpc3BsYXk6bm9uZTsiPgog
ICAgICAgICAgICAgICAgICAgIDxsYWJlbD5CaWxkZ3LDtsOfZTwvbGFiZWw+CiAgICAgICAgICAg
ICAgICAgICAgPGRpdiBjbGFzcz0idXBsb2FkLW9wdGlvbi1ncm91cCIgaWQ9InVwbG9hZFNpemVP
cHRpb25zIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0idXBsb2FkLW9w
dGlvbi1idG4gYWN0aXZlIiBkYXRhLXNpemU9InRodW1ibmFpbCIgb25jbGljaz0iRHJpdmVFZGl0
b3Iuc2V0VXBsb2FkT3B0aW9uKCdzaXplJyx0aGlzKSI+Vm9yc2NoYXViaWxkPC9idXR0b24+CiAg
ICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9InVwbG9hZC1vcHRpb24tYnRuIiBk
YXRhLXNpemU9ImxhcmdlIiBvbmNsaWNrPSJEcml2ZUVkaXRvci5zZXRVcGxvYWRPcHRpb24oJ3Np
emUnLHRoaXMpIj5Hcm/DnyAobWF4IDY0MHg0ODApPC9idXR0b24+CiAgICAgICAgICAgICAgICAg
ICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAg
ICAgICAgIDxkaXYgaWQ9InVwbG9hZFByb2dyZXNzQ29udGFpbmVyIiBzdHlsZT0iZGlzcGxheTpu
b25lO3BhZGRpbmc6MCAyMHB4IDEycHg7Ij4KICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9ImRp
c3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjttYXJnaW4tYm90dG9tOjRw
eDsiPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGlkPSJ1cGxvYWRQcm9ncmVzc0xhYmVsIiBz
dHlsZT0iZm9udC1zaXplOjEycHg7Y29sb3I6dmFyKC0tdGV4dC1zZWNvbmRhcnkpOyI+V2lyZCBo
b2NoZ2VsYWRlbi4uLjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBpZD0idXBsb2Fk
UHJvZ3Jlc3NQY3QiIHN0eWxlPSJmb250LXNpemU6MTJweDtmb250LXdlaWdodDo2MDA7Y29sb3I6
dmFyKC0tdGV4dC1oZWFkaW5nKTsiPjAlPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kaXY+CiAg
ICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSJ3aWR0aDoxMDAlO2hlaWdodDo2cHg7YmFja2dyb3Vu
ZDp2YXIoLS1iZy1tYWluLCNlZWUpO2JvcmRlci1yYWRpdXM6M3B4O292ZXJmbG93OmhpZGRlbjsi
PgogICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9InVwbG9hZFByb2dyZXNzQmFyIiBzdHlsZT0i
d2lkdGg6MCU7aGVpZ2h0OjEwMCU7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoOTBkZWcsIzM0
OThkYiwjMmVjYzcxKTtib3JkZXItcmFkaXVzOjNweDt0cmFuc2l0aW9uOndpZHRoIDAuMTVzIGVh
c2U7Ij48L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBp
ZD0idXBsb2FkUHJvZ3Jlc3NTaXplIiBzdHlsZT0iZm9udC1zaXplOjExcHg7Y29sb3I6dmFyKC0t
dGV4dC1zZWNvbmRhcnkpO21hcmdpbi10b3A6M3B4O3RleHQtYWxpZ246cmlnaHQ7Ij48L2Rpdj4K
ICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InVwbG9hZC1kaWFsb2ct
Zm9vdGVyIj4KICAgICAgICAgICAgICAgIDxidXR0b24gb25jbGljaz0iRHJpdmVFZGl0b3IuY2xv
c2VVcGxvYWREaWFsb2coKSI+QWJicmVjaGVuPC9idXR0b24+CiAgICAgICAgICAgICAgICA8YnV0
dG9uIGNsYXNzPSJwcmltYXJ5IiBpZD0idXBsb2FkQ29uZmlybUJ0biIgb25jbGljaz0iRHJpdmVF
ZGl0b3IuY29uZmlybVVwbG9hZCgpIj5FaW5mw7xnZW48L2J1dHRvbj4KICAgICAgICAgICAgPC9k
aXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8IS0tIE1lZGlhIENvbnRleHQgTWVu
dSAoRWRpdG9yKSAtLT4KICAgIDxkaXYgY2xhc3M9Im1lZGlhLWNvbnRleHQtbWVudSIgaWQ9Im1l
ZGlhQ29udGV4dE1lbnUiPgogICAgICAgIDxkaXYgc3R5bGU9InBhZGRpbmc6NHB4IDEwcHg7IGZv
bnQtc2l6ZToxMXB4OyBjb2xvcjp2YXIoLS10ZXh0LW11dGVkKTsgZm9udC13ZWlnaHQ6NjAwOyI+
QVVTUklDSFRVTkc8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJtZWRpYS1jb250ZXh0LWdyb3Vw
Ij4KICAgICAgICAgICAgPGJ1dHRvbiBkYXRhLWFsaWduPSJsZWZ0IiBvbmNsaWNrPSJEcml2ZUVk
aXRvci5jb250ZXh0QWxpZ24oJ2xlZnQnKSI+TGlua3M8L2J1dHRvbj4KICAgICAgICAgICAgPGJ1
dHRvbiBkYXRhLWFsaWduPSJjZW50ZXIiIG9uY2xpY2s9IkRyaXZlRWRpdG9yLmNvbnRleHRBbGln
bignY2VudGVyJykiPk1pdHRpZzwvYnV0dG9uPgogICAgICAgICAgICA8YnV0dG9uIGRhdGEtYWxp
Z249InJpZ2h0IiBvbmNsaWNrPSJEcml2ZUVkaXRvci5jb250ZXh0QWxpZ24oJ3JpZ2h0JykiPlJl
Y2h0czwvYnV0dG9uPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9Im1lZGlhLWNv
bnRleHQtc2VwIj48L2Rpdj4KICAgICAgICA8YnV0dG9uIG9uY2xpY2s9IkRyaXZlRWRpdG9yLmNv
bnRleHRFZGl0Q2FwdGlvbigpIj5VbnRlcnRpdGVsIGJlYXJiZWl0ZW48L2J1dHRvbj4KICAgICAg
ICA8YnV0dG9uIG9uY2xpY2s9IkRyaXZlRWRpdG9yLmNvbnRleHRSZW1vdmUoKSIgc3R5bGU9ImNv
bG9yOiNkYzM1NDU7Ij5FbnRmZXJuZW48L2J1dHRvbj4KICAgIDwvZGl2PgoKICAgIDwhLS0gUmV2
aWV3IFNpZGUgUGFuZWwgLS0+CiAgICA8ZGl2IGNsYXNzPSJyZXZpZXctcGFuZWwtb3ZlcmxheSIg
aWQ9InJldmlld1BhbmVsT3ZlcmxheSIgb25jbGljaz0iRHJpdmVHb3Zlcm5hbmNlLmNsb3NlUXVl
dWUoKSI+PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJyZXZpZXctcGFuZWwiIGlkPSJyZXZpZXdQYW5l
bCI+CiAgICAgICAgPGRpdiBjbGFzcz0icmV2aWV3LXBhbmVsLWhlYWRlciI+CiAgICAgICAgICAg
IFByw7xmdW5nZW4KICAgICAgICAgICAgPGJ1dHRvbiBvbmNsaWNrPSJEcml2ZUdvdmVybmFuY2Uu
Y2xvc2VRdWV1ZSgpIj5TY2hsaWXDn2VuPC9idXR0b24+CiAgICAgICAgPC9kaXY+CiAgICAgICAg
PGRpdiBjbGFzcz0icmV2aWV3LXBhbmVsLWJvZHkiIGlkPSJyZXZpZXdQYW5lbEJvZHkiPjwvZGl2
PgogICAgPC9kaXY+CgogICAgPCEtLSBSZXZpZXcgQ29tbWVudCBEaWFsb2cgLS0+CiAgICA8ZGl2
IGNsYXNzPSJyZXZpZXctZGlhbG9nIiBpZD0icmV2aWV3RGlhbG9nIiBvbmNsaWNrPSJpZihldmVu
dC50YXJnZXQ9PT10aGlzKURyaXZlR292ZXJuYW5jZS5jbG9zZVJldmlld0RpYWxvZygpIj4KICAg
ICAgICA8ZGl2IGNsYXNzPSJyZXZpZXctZGlhbG9nLWNvbnRlbnQiPgogICAgICAgICAgICA8ZGl2
IGNsYXNzPSJyZXZpZXctZGlhbG9nLWhlYWRlciIgaWQ9InJldmlld0RpYWxvZ0hlYWRlciI+CiAg
ICAgICAgICAgICAgICA8c3Bhbj5Eb2t1bWVudCBwcsO8ZmVuPC9zcGFuPgogICAgICAgICAgICAg
ICAgPHNwYW4gaWQ9InJldmlld0RpYWxvZ0luZm8iIHN0eWxlPSJmb250LXNpemU6MTJweDtmb250
LXdlaWdodDo0MDA7b3BhY2l0eTowLjk7Ij48L3NwYW4+CiAgICAgICAgICAgIDwvZGl2PgogICAg
ICAgICAgICA8ZGl2IGNsYXNzPSJyZXZpZXctZGlhbG9nLWJvZHkiPgogICAgICAgICAgICAgICAg
PGRpdiBjbGFzcz0icmV2aWV3LXNwbGl0Ij4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNz
PSJyZXZpZXctc3BsaXQtbGVmdCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxoMz5BcnRpa2Vs
aW5oYWx0PC9oMz4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0icmV2aWV3QXJ0aWNs
ZUNvbnRlbnQiIHN0eWxlPSJmb250LXNpemU6MTNweDtsaW5lLWhlaWdodDoxLjc7Ij48L2Rpdj4K
ICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNz
PSJyZXZpZXctc3BsaXQtcmlnaHQiPgogICAgICAgICAgICAgICAgICAgICAgICA8aDM+QmlzaGVy
aWdlIEtvbW1lbnRhcmU8L2gzPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJy
ZXZpZXctcHJldi1jb21tZW50cyIgaWQ9InJldmlld1ByZXZDb21tZW50cyI+PC9kaXY+CiAgICAg
ICAgICAgICAgICAgICAgICAgIDxoMz5EZWluIEtvbW1lbnRhcjwvaDM+CiAgICAgICAgICAgICAg
ICAgICAgICAgIDxwIGlkPSJyZXZpZXdEaWFsb2dIaW50IiBzdHlsZT0iZm9udC1zaXplOjExcHg7
Y29sb3I6dmFyKC0tdGV4dC1tdXRlZCk7bGluZS1oZWlnaHQ6MS41O21hcmdpbi1ib3R0b206NHB4
OyI+PC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSJkaXNwbGF5OmZsZXg7
Z2FwOjNweDttYXJnaW4tYm90dG9tOjRweDtmbGV4LXdyYXA6d3JhcDsiPgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPGJ1dHRvbiBvbmNsaWNrPSJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
cmV2aWV3RGlhbG9nQ29tbWVudCcpLmZvY3VzKCk7ZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ2JvbGQn
KSIgc3R5bGU9InBhZGRpbmc6MnB4IDhweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlci1j
b2xvcik7YmFja2dyb3VuZDp2YXIoLS1iZy1jYXJkLWFsdCk7Ym9yZGVyLXJhZGl1czozcHg7Y3Vy
c29yOnBvaW50ZXI7Zm9udC13ZWlnaHQ6NzAwO2ZvbnQtc2l6ZToxMnB4O2NvbG9yOnZhcigtLXRl
eHQtcHJpbWFyeSk7Ij5GPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0
dG9uIG9uY2xpY2s9ImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXZpZXdEaWFsb2dDb21tZW50
JykuZm9jdXMoKTtkb2N1bWVudC5leGVjQ29tbWFuZCgnaXRhbGljJykiIHN0eWxlPSJwYWRkaW5n
OjJweCA4cHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3IpO2JhY2tncm91bmQ6
dmFyKC0tYmctY2FyZC1hbHQpO2JvcmRlci1yYWRpdXM6M3B4O2N1cnNvcjpwb2ludGVyO2ZvbnQt
c3R5bGU6aXRhbGljO2ZvbnQtc2l6ZToxMnB4O2NvbG9yOnZhcigtLXRleHQtcHJpbWFyeSk7Ij5L
PC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG9uY2xpY2s9ImRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXZpZXdEaWFsb2dDb21tZW50JykuZm9jdXMoKTtkb2N1
bWVudC5leGVjQ29tbWFuZCgndW5kZXJsaW5lJykiIHN0eWxlPSJwYWRkaW5nOjJweCA4cHg7Ym9y
ZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3IpO2JhY2tncm91bmQ6dmFyKC0tYmctY2Fy
ZC1hbHQpO2JvcmRlci1yYWRpdXM6M3B4O2N1cnNvcjpwb2ludGVyO3RleHQtZGVjb3JhdGlvbjp1
bmRlcmxpbmU7Zm9udC1zaXplOjEycHg7Y29sb3I6dmFyKC0tdGV4dC1wcmltYXJ5KTsiPlU8L2J1
dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gb25jbGljaz0iZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ3Jldmlld0RpYWxvZ0NvbW1lbnQnKS5mb2N1cygpO2RvY3VtZW50
LmV4ZWNDb21tYW5kKCdpbnNlcnRVbm9yZGVyZWRMaXN0JykiIHN0eWxlPSJwYWRkaW5nOjJweCA4
cHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3IpO2JhY2tncm91bmQ6dmFyKC0t
YmctY2FyZC1hbHQpO2JvcmRlci1yYWRpdXM6M3B4O2N1cnNvcjpwb2ludGVyO2ZvbnQtc2l6ZTox
MnB4O2NvbG9yOnZhcigtLXRleHQtcHJpbWFyeSk7Ij4mYnVsbDs8L2J1dHRvbj4KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDxidXR0b24gb25jbGljaz0iZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ3Jldmlld0RpYWxvZ0NvbW1lbnQnKS5mb2N1cygpO2RvY3VtZW50LmV4ZWNDb21tYW5kKCdm
b3JlQ29sb3InLGZhbHNlLCcjZGMzNTQ1JykiIHN0eWxlPSJwYWRkaW5nOjJweCA4cHg7Ym9yZGVy
OjFweCBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3IpO2JhY2tncm91bmQ6dmFyKC0tYmctY2FyZC1h
bHQpO2JvcmRlci1yYWRpdXM6M3B4O2N1cnNvcjpwb2ludGVyO2ZvbnQtc2l6ZToxMnB4O2NvbG9y
OiNkYzM1NDU7Zm9udC13ZWlnaHQ6NzAwOyI+Um90PC9idXR0b24+CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA8YnV0dG9uIG9uY2xpY2s9ImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXZp
ZXdEaWFsb2dDb21tZW50JykuZm9jdXMoKTtkb2N1bWVudC5leGVjQ29tbWFuZCgncmVtb3ZlRm9y
bWF0JykiIHN0eWxlPSJwYWRkaW5nOjJweCA4cHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3Jk
ZXItY29sb3IpO2JhY2tncm91bmQ6dmFyKC0tYmctY2FyZC1hbHQpO2JvcmRlci1yYWRpdXM6M3B4
O2N1cnNvcjpwb2ludGVyO2ZvbnQtc2l6ZToxMnB4O2NvbG9yOnZhcigtLXRleHQtcHJpbWFyeSk7
Ij5TdGFuZGFyZDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAg
ICAgICAgICAgICAgICAgICAgPGRpdiBpZD0icmV2aWV3RGlhbG9nQ29tbWVudCIgY29udGVudGVk
aXRhYmxlPSJ0cnVlIiBzdHlsZT0ibWluLWhlaWdodDoxMDBweDtmbGV4OjE7cGFkZGluZzoxMHB4
O2JvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyLWNvbG9yKTtib3JkZXItcmFkaXVzOjRweDtm
b250LXNpemU6MTNweDtiYWNrZ3JvdW5kOnZhcigtLWJnLWlucHV0KTtjb2xvcjp2YXIoLS10ZXh0
LXByaW1hcnkpO2xpbmUtaGVpZ2h0OjEuNjtvdmVyZmxvdy15OmF1dG87IiBkYXRhLXBsYWNlaG9s
ZGVyPSJCZWdyw7xuZHVuZyBlaW5nZWJlbi4uLiI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAg
PC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAg
ICAgIDxkaXYgY2xhc3M9InJldmlldy1kaWFsb2ctZm9vdGVyIj4KICAgICAgICAgICAgICAgIDxi
dXR0b24gb25jbGljaz0iRHJpdmVHb3Zlcm5hbmNlLmNsb3NlUmV2aWV3RGlhbG9nKCkiPlNjaGxp
ZcOfZW48L2J1dHRvbj4KICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImJ0bi1jb25maXJt
IiBpZD0icmV2aWV3RGlhbG9nQ29uZmlybSI+QmVzdMOkdGlnZW48L2J1dHRvbj4KICAgICAgICAg
ICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8IS0tIEdvdmVybmFuY2Ug
QWRtaW4gUGFuZWwgLS0+CiAgICA8ZGl2IGNsYXNzPSJnb3YtYWRtaW4tcGFuZWwiIGlkPSJnb3ZB
ZG1pblBhbmVsIiBvbmNsaWNrPSJpZihldmVudC50YXJnZXQ9PT10aGlzKURyaXZlR292ZXJuYW5j
ZS5jbG9zZUFkbWluKCkiPgogICAgICAgIDxkaXYgY2xhc3M9Imdvdi1hZG1pbi1jb250ZW50Ij4K
ICAgICAgICAgICAgPGRpdiBjbGFzcz0iZ292LWFkbWluLWhlYWRlciI+CiAgICAgICAgICAgICAg
ICBHb3Zlcm5hbmNlLVZlcndhbHR1bmcKICAgICAgICAgICAgICAgIDxidXR0b24gb25jbGljaz0i
RHJpdmVHb3Zlcm5hbmNlLmNsb3NlQWRtaW4oKSI+U2NobGllw59lbjwvYnV0dG9uPgogICAgICAg
ICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iZ292LWFkbWluLXRvb2xiYXIiIGlk
PSJnb3ZBZG1pblRvb2xiYXIiIHN0eWxlPSJqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2Vlbjsi
PgogICAgICAgICAgICAgICAgPGRpdiBzdHlsZT0iZGlzcGxheTpmbGV4O2dhcDo4cHg7ZmxleC13
cmFwOndyYXA7Ij4KICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJnb3YtYWRkLWJ0
biIgc3R5bGU9InBhZGRpbmc6NnB4IDE0cHg7IiBvbmNsaWNrPSJEcml2ZUdvdmVybmFuY2UuZWRp
dFN0YXJ0c2VpdGUoKTsiIHRpdGxlPSJEZW4gQmVncsO8w591bmdzdGV4dCBhdWYgZGVyIFN0YXJ0
c2VpdGUgYmVhcmJlaXRlbiI+U3RhcnRzZWl0ZTwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAg
IDxidXR0b24gY2xhc3M9Imdvdi1hZGQtYnRuIiBzdHlsZT0icGFkZGluZzo2cHggMTRweDsiIG9u
Y2xpY2s9IkRyaXZlR292ZXJuYW5jZS5zaG93RW5nYWdlbWVudFN0YXRzKCk7IiB0aXRsZT0iU3Rh
dGlzdGlrOiBXZXIgaGF0IHdpZSB2aWVsZSBBcnRpa2VsIGVyc3RlbGx0LCBiZWFyYmVpdGV0IG9k
ZXIgZ2VwcsO8ZnQ/Ij5Vc2VyLUVuZ2FnZW1lbnQ8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAg
ICA8YnV0dG9uIGNsYXNzPSJnb3YtYWRkLWJ0biIgc3R5bGU9InBhZGRpbmc6NnB4IDE0cHg7IiBv
bmNsaWNrPSJEcml2ZUdvdmVybmFuY2Uuc2hvd0FkbWluR3VpZGUoKTsiIHRpdGxlPSJBbmxlaXR1
bmcgZsO8ciBFaW5zdGVpZ2VyOiBGYXJiZW4gw6RuZGVybiwgVGV4dGUgYW5wYXNzZW4sIERhdGVp
ZW4gdmVyc3RlaGVuIj5BZG1pbi1BbmxlaXR1bmc8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAg
ICA8YnV0dG9uIGNsYXNzPSJnb3YtYWRkLWJ0biBnb3YtYnRuLWRhbmdlciIgc3R5bGU9InBhZGRp
bmc6NnB4IDE0cHg7IiBvbmNsaWNrPSJEcml2ZUdvdmVybmFuY2UuY2xvc2VBZG1pbigpO0RyaXZl
UG9ydGFsLnNob3dUcmFzaCgpOyIgdGl0bGU9IkdlbMO2c2NodGUgQXJ0aWtlbCBhbnplaWdlbiB1
bmQgZ2dmLiB3aWVkZXJoZXJzdGVsbGVuICgyOCBUYWdlIEF1ZmJld2FocnVuZykiPlBhcGllcmtv
cmI8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJnb3YtYWRkLWJ0
biIgc3R5bGU9InBhZGRpbmc6NnB4IDE0cHg7IiBvbmNsaWNrPSJEcml2ZUdvdmVybmFuY2Uuc2hv
d0ltcG9ydEV4cG9ydCgpOyIgdGl0bGU9IkFydGlrZWwgdW5kIE1lZGllbiBleHBvcnRpZXJlbiBv
ZGVyIGltcG9ydGllcmVuIj5JbXBvcnQgLyBFeHBvcnQ8L2J1dHRvbj4KICAgICAgICAgICAgICAg
IDwvZGl2PgogICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iZ292LWFkZC1idG4iIHN0eWxl
PSJwYWRkaW5nOjZweCAxNHB4OyIgb25jbGljaz0ic2hvd0NvbnRhY3RGb3JtKCk7IiB0aXRsZT0i
VGVjaG5pc2NoZSBIaWxmZSB2b20gRW50d2lja2xlciBhbmZvcmRlcm4iPlRlY2huaXNjaGVyIFN1
cHBvcnQ8L2J1dHRvbj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9
Imdvdi1hZG1pbi1ib2R5IiBpZD0iZ292QWRtaW5Cb2R5Ij48L2Rpdj4KICAgICAgICA8L2Rpdj4K
ICAgIDwvZGl2PgoKICAgIDwhLS0gUmV2aXNpb25zaGlzdG9yaWUgTW9kYWwgLS0+CiAgICA8ZGl2
IGNsYXNzPSJyZXZpc2lvbi1tb2RhbCIgaWQ9InJldmlzaW9uTW9kYWwiIG9uY2xpY2s9ImlmKGV2
ZW50LnRhcmdldD09PXRoaXMpRHJpdmVQb3J0YWwuY2xvc2VSZXZpc2lvbnMoKSI+CiAgICAgICAg
PGRpdiBjbGFzcz0icmV2aXNpb24tY29udGFpbmVyIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0i
cmV2aXNpb24tc2lkZWJhciI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyZXZpc2lvbi1z
aWRlYmFyLWhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgVmVyc2lvbmVuCiAgICAgICAgICAg
ICAgICAgICAgPGJ1dHRvbiBvbmNsaWNrPSJEcml2ZVBvcnRhbC5jbG9zZVJldmlzaW9ucygpIj5T
Y2hsaWXDn2VuPC9idXR0b24+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAg
IDxkaXYgY2xhc3M9InJldmlzaW9uLWxpc3QiIGlkPSJyZXZpc2lvbkxpc3QiPjwvZGl2PgogICAg
ICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0icmV2aXNpb24tbWFpbiI+CiAg
ICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyZXZpc2lvbi10b29sYmFyIiBpZD0icmV2aXNpb25U
b29sYmFyIj48L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJldmlzaW9uLWNvbnRl
bnQiIGlkPSJyZXZpc2lvbkNvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9
InRleHQtYWxpZ246Y2VudGVyO2NvbG9yOnZhcigtLXRleHQtbXV0ZWQpO21hcmdpbi10b3A6NjBw
eDsiPgogICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uIGF1c3dhZWhsZW4sIHVtIGRlbiBJ
bmhhbHQgYW56dXplaWdlbgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAg
ICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+Cgog
ICAgPCEtLSBDcm9zc2xpbmsgUG9wb3ZlciAtLT4KICAgIDxkaXYgY2xhc3M9ImNyb3NzbGluay1w
b3BvdmVyIiBpZD0iY3Jvc3NsaW5rUG9wb3ZlciI+PC9kaXY+CgogICAgPCEtLSBBcnRpa2VsLVJl
ZmVyZW56IERyb3Bkb3duICgjLUF1dG9jb21wbGV0ZSkgLS0+CiAgICA8ZGl2IGNsYXNzPSJ4cmVm
LWRyb3Bkb3duIiBpZD0ieHJlZkRyb3Bkb3duIj4KICAgICAgICA8ZGl2IGNsYXNzPSJ4cmVmLXNl
YXJjaCI+PGlucHV0IHR5cGU9InRleHQiIGlkPSJ4cmVmU2VhcmNoSW5wdXQiIHBsYWNlaG9sZGVy
PSJBcnRpa2VsIHN1Y2hlbi4uLiIgYXV0b2NvbXBsZXRlPSJvZmYiPjwvZGl2PgogICAgICAgIDxk
aXYgY2xhc3M9InhyZWYtbGlzdCIgaWQ9InhyZWZMaXN0Ij48L2Rpdj4KICAgIDwvZGl2PgoKICAg
IDwhLS0gU2NobGFnd29ydC1WZXJ3YWx0dW5nIE1vZGFsIC0tPgogICAgPGRpdiBjbGFzcz0ia3ct
bWFuYWdlLW1vZGFsIiBpZD0ia3dNYW5hZ2VNb2RhbCIgb25jbGljaz0iaWYoZXZlbnQudGFyZ2V0
PT09dGhpcylEcml2ZUdvdmVybmFuY2UuY2xvc2VLd01hbmFnZSgpIj4KICAgICAgICA8ZGl2IGNs
YXNzPSJrdy1tYW5hZ2UtY29udGVudCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9Imt3LW1hbmFn
ZS1oZWFkZXIiPgogICAgICAgICAgICAgICAgPHNwYW4gaWQ9Imt3TWFuYWdlVGl0bGUiPlNjaGxh
Z3dvcnQgYmVhcmJlaXRlbjwvc3Bhbj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxk
aXYgY2xhc3M9Imt3LW1hbmFnZS1ib2R5IiBpZD0ia3dNYW5hZ2VCb2R5Ij48L2Rpdj4KICAgICAg
ICAgICAgPGRpdiBjbGFzcz0ia3ctbWFuYWdlLWZvb3RlciIgaWQ9Imt3TWFuYWdlRm9vdGVyIj48
L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgIDwhLS0gVG9hc3QgLS0+CiAgICA8
ZGl2IGNsYXNzPSJ0b2FzdCIgaWQ9InRvYXN0Ij48L2Rpdj4KCiAgICA8IS0tIEZvb3RlciAtLT4K
ICAgIDxmb290ZXI+CiAgICAgICAgPHA+RC5SLkkuVi5FLiAtIFBvbGl6ZWkgTlJXIHwgUFAgRG9y
dG11bmQgfCA8Yj48dT5WSTMtSW50ZXJuZXM8L3U+PC9iPiBJbmZvcm1hdGlvbiBDbHVzdGVyPC9w
PgogICAgICAgIDxzcGFuIGlkPSJmb290ZXJSZWFkTW9kZSIgc3R5bGU9ImRpc3BsYXk6bm9uZTtj
b2xvcjojN2ViOGRhO2ZvbnQtc2l6ZToxMnB4O2N1cnNvcjpwb2ludGVyO29wYWNpdHk6MC44OyIg
b25jbGljaz0ic2hvd1JlYWRNb2RlSW5mbygpIiB0aXRsZT0iRHUgYmVmaW5kZXN0IGRpY2ggaW0g
TGVzZW1vZHVzLiBLbGlja2UgaGllciBmw7xyIG1laHIgSW5mb3MuIj5MZXNlbW9kdXM8L3NwYW4+
CiAgICAgICAgPGRpdiBjbGFzcz0iZm9vdGVyLXJpZ2h0Ij4KICAgICAgICAgICAgPGEgb25jbGlj
az0ic2hvd0hlbHAoKSIgc3R5bGU9ImZvbnQtd2VpZ2h0OjcwMDsiPkhpbGZlPC9hPgogICAgICAg
ICAgICA8YSBvbmNsaWNrPSJEcml2ZUdvdmVybmFuY2Uuc2hvd0ltcHJpbnQoKSI+RnJlaWdhYmV2
ZXJhbnR3b3J0bGljaGU8L2E+CiAgICAgICAgICAgIDxhIGNsYXNzPSJmb290ZXItdmVyc2lvbiIg
b25jbGljaz0ic2hvd1ZlcnNpb25IaXN0b3J5KCkiPnYxLjA8L2E+CiAgICAgICAgICAgIDxzcGFu
IGlkPSJmb290ZXJTeW5jU3RhdHVzIiBjbGFzcz0iZm9vdGVyLXN5bmMtc3RhdHVzIj48L3NwYW4+
CiAgICAgICAgPC9kaXY+CiAgICA8L2Zvb3Rlcj4KCiAgICA8IS0tIFZlcnNpb25zaGlzdG9yaWUg
LS0+CiAgICA8ZGl2IGNsYXNzPSJ2ZXJzaW9uLW1vZGFsIiBpZD0idmVyc2lvbk1vZGFsIiBvbmNs
aWNrPSJpZihldmVudC50YXJnZXQ9PT10aGlzKWNsb3NlVmVyc2lvbkhpc3RvcnkoKSI+CiAgICAg
ICAgPGRpdiBjbGFzcz0idmVyc2lvbi1tb2RhbC1jb250ZW50Ij4KICAgICAgICAgICAgPGRpdiBj
bGFzcz0idmVyc2lvbi1tb2RhbC1oZWFkZXIiPgogICAgICAgICAgICAgICAgVmVyc2lvbnNoaXN0
b3JpZQogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idmVyc2lvbi1t
b2RhbC1ib2R5Ij4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InZlcnNpb24taXRlbSI+CiAg
ICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InZlcnNpb24tYmFkZ2UgY3VycmVudCI+djEu
MDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ2ZXJzaW9uLWluZm8iPgog
ICAgICAgICAgICAgICAgICAgICAgICBPZmZpemllbGxlIMOcYmVyZ2FiZSDigJMgTGVzZW1vZHVz
IChpbmRleC5odG1sIGRpcmVrdCDDtmZmbmVuKSwgQWNjb3JkaW9uLSwgRkFRLSB1bmQgVGFiZWxs
ZW4tS29tcG9uZW50ZW4gaW0gRWRpdG9yLCBhdXRvbWF0aXNjaGUgQXJ0aWtlbHZlcnNpb25pZXJ1
bmcsIEFkbWluLUFubGVpdHVuZywgdGVjaG5pc2NoZXIgU3VwcG9ydC1Lb250YWt0CiAgICAgICAg
ICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InZlcnNpb24tZGF0ZSI+TcOkcnogMjAyNjwvZGl2
PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAg
ICAgICAgICAgICA8ZGl2IGNsYXNzPSJ2ZXJzaW9uLWl0ZW0iPgogICAgICAgICAgICAgICAgICAg
IDxzcGFuIGNsYXNzPSJ2ZXJzaW9uLWJhZGdlIj52MC45NTwvc3Bhbj4KICAgICAgICAgICAgICAg
ICAgICA8ZGl2IGNsYXNzPSJ2ZXJzaW9uLWluZm8iPgogICAgICAgICAgICAgICAgICAgICAgICBT
ZWN1cml0eS1BdWRpdCDigJMgUHLDvGZ1bmcgYWxsZXIgU2ljaGVyaGVpdHNtZWNoYW5pc21lbjog
WFNTLVNjaHV0eiwgUGF0aC1UcmF2ZXJzYWwsIFNTUkYtQmxvY2tpZXJ1bmcsIEFFUy0yNTYtVmVy
c2NobMO8c3NlbHVuZywgU2NocmVpYnNjaHV0eiwgTmV0endlcmstSXNvbGF0aW9uCiAgICAgICAg
ICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InZlcnNpb24tZGF0ZSI+TcOkcnogMjAyNjwvZGl2
PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAg
ICAgICAgICAgICA8ZGl2IGNsYXNzPSJ2ZXJzaW9uLWl0ZW0iPgogICAgICAgICAgICAgICAgICAg
IDxzcGFuIGNsYXNzPSJ2ZXJzaW9uLWJhZGdlIj52MC45PC9zcGFuPgogICAgICAgICAgICAgICAg
ICAgIDxkaXYgY2xhc3M9InZlcnNpb24taW5mbyI+CiAgICAgICAgICAgICAgICAgICAgICAgIEF1
dG9tYXRpc2NoZSBDcm9zc2xpbmstRXJrZW5udW5nIChBcnRpa2VsdGl0ZWwgdW5kIFNjaGxhZ3fD
tnJ0ZXIgaW0gVGV4dCksIG1hbnVlbGxlIEFydGlrZWxyZWZlcmVuemVuIHZpYSAjLVRhc3RlIG1p
dCDDnGJlcnNjaHJpZnRlbi1BbmtlciwgUmV2aXNpb25zaGlzdG9yaWUgbWl0IERpZmYtQW5zaWNo
dCwgU2NobGFnd29ydC1WZXJ3YWx0dW5nCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xh
c3M9InZlcnNpb24tZGF0ZSI+TcOkcnogMjAyNjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwv
ZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ2
ZXJzaW9uLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ2ZXJzaW9uLWJh
ZGdlIj52MC44PC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InZlcnNpb24t
aW5mbyI+CiAgICAgICAgICAgICAgICAgICAgICAgIEFibGVobnVuZ3MtV29ya2Zsb3cgbWl0IGtv
bmZpZ3VyaWVyYmFyZXIgQmVncsO8bmR1bmdzcGZsaWNodCwgw7xiZXJhcmJlaXRldGVzIFJldmll
dy1QYW5lbCwgZHVyY2hnw6RuZ2lnZXIgVGFnLS9OYWNodC1Nb2R1cyBmw7xyIGFsbGUgVUktRWxl
bWVudGUKICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idmVyc2lvbi1kYXRlIj5N
w6RyeiAyMDI2PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAg
ICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InZlcnNpb24taXRlbSI+CiAgICAg
ICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InZlcnNpb24tYmFkZ2UiPnYwLjc8L3NwYW4+CiAg
ICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idmVyc2lvbi1pbmZvIj4KICAgICAgICAgICAg
ICAgICAgICAgICAgR292ZXJuYW5jZS1TeXN0ZW0gbWl0IFJvbGxlbiwgRG9rdW1lbnQtU3BlcnJl
IChMb2NraW5nKSwgQUVTLTI1Ni1WZXJzY2hsw7xzc2VsdW5nLCBTY2hsYWd3w7ZydGVyIG1pdCBB
dXRvY29tcGxldGUsIFRhYmVsbGVuYW5zaWNodCwgRW5nYWdlbWVudC1TdGF0aXN0aWssIEzDtnNj
aC1BdWRpdCBtaXQgMjgtVGFnZS1QYXBpZXJrb3JiCiAgICAgICAgICAgICAgICAgICAgICAgIDxk
aXYgY2xhc3M9InZlcnNpb24tZGF0ZSI+RmVicnVhciAyMDI2PC9kaXY+CiAgICAgICAgICAgICAg
ICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYg
Y2xhc3M9InZlcnNpb24taXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InZl
cnNpb24tYmFkZ2UiPnYwLjY8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0i
dmVyc2lvbi1pbmZvIj4KICAgICAgICAgICAgICAgICAgICAgICAgRnJlaWdhYmUtV29ya2Zsb3cg
KFN1cGVyVXNlciwgUmV2aWV3ZXIsIEthdGVnb3JpZW4tWnVvcmRudW5nKSwgTWVkaWVuLVVwbG9h
ZCBtaXQgTW9kYWwtVm9yc2NoYXUsIE1pdHdpcmtlbmRlbi1UcmFja2luZyBtaXQgQmVpdHJhZ3Nh
cnRlbgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ2ZXJzaW9uLWRhdGUiPkZl
YnJ1YXIgMjAyNjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAg
ICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ2ZXJzaW9uLWl0ZW0iPgogICAg
ICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ2ZXJzaW9uLWJhZGdlIj52MC41PC9zcGFuPgog
ICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InZlcnNpb24taW5mbyI+CiAgICAgICAgICAg
ICAgICAgICAgICAgIFdZU0lXWUctRWRpdG9yIG1pdCBGb3JtYXRpZXJ1bmcgdW5kIFVuZG8vUmVk
bywgUGFzdGUtQmVyZWluaWd1bmcsIFVudGVyYXJ0aWtlbC1TeXN0ZW0sIFN0YXJ0c2VpdGVuLUVk
aXRvciwgSGlsZmUtTW9kYWwKICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idmVy
c2lvbi1kYXRlIj5KYW51YXIgMjAyNjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2Pgog
ICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ2ZXJzaW9u
LWl0ZW0iPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ2ZXJzaW9uLWJhZGdlIj52
MC40PC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InZlcnNpb24taW5mbyI+
CiAgICAgICAgICAgICAgICAgICAgICAgIFVtYmF1IHp1ciBTaW5nbGUtRmlsZS1BcHAgKGluZGV4
Lmh0bWwpLCBQb3dlclNoZWxsIEhUVFAtU2VydmVyIG1pdCBSRVNULUFQSSwgYXV0b21hdGlzY2hl
ciBCcm93c2VyLVN0YXJ0LCBUYWcvTmFjaHQtTW9kdXMKICAgICAgICAgICAgICAgICAgICAgICAg
PGRpdiBjbGFzcz0idmVyc2lvbi1kYXRlIj5EZXplbWJlciAyMDI1PC9kaXY+CiAgICAgICAgICAg
ICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxk
aXYgY2xhc3M9InZlcnNpb24taXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9
InZlcnNpb24tYmFkZ2UiPnYwLjM8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFz
cz0idmVyc2lvbi1pbmZvIj4KICAgICAgICAgICAgICAgICAgICAgICAgSlNPTi1Eb2t1bWVudGVu
c3RydWt0dXIgaW4gS2F0ZWdvcmllLU9yZG5lcm4sIDI3IEZhY2hiZXJlaWNoZSwgU3RhdHVzLVN5
c3RlbSAoRW50d3VyZi9QcsO8ZnVuZy9GcmVpZ2VnZWJlbi9BYmdlbGVobnQpCiAgICAgICAgICAg
ICAgICAgICAgICAgIDxkaXYgY2xhc3M9InZlcnNpb24tZGF0ZSI+Tm92ZW1iZXIgMjAyNTwvZGl2
PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAg
ICAgICAgICAgICA8ZGl2IGNsYXNzPSJ2ZXJzaW9uLWl0ZW0iPgogICAgICAgICAgICAgICAgICAg
IDxzcGFuIGNsYXNzPSJ2ZXJzaW9uLWJhZGdlIj52MC4yPC9zcGFuPgogICAgICAgICAgICAgICAg
ICAgIDxkaXYgY2xhc3M9InZlcnNpb24taW5mbyI+CiAgICAgICAgICAgICAgICAgICAgICAgIEtv
bnplcHR2YWxpZGllcnVuZyBhdWYgYmVow7ZyZGxpY2hlbiBXaW5kb3dzLVJlY2huZXJuLCBUZXN0
IGRlciBOZXR6bGF1ZndlcmstS29tcGF0aWJpbGl0w6R0LCBCZW51dHplcmlkZW50aWZpa2F0aW9u
IHZpYSBXaW5kb3dzLVNlc3Npb24KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0i
dmVyc2lvbi1kYXRlIj5Ob3ZlbWJlciAyMDI1PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9k
aXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InZl
cnNpb24taXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InZlcnNpb24tYmFk
Z2UiPnYwLjE8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idmVyc2lvbi1p
bmZvIj4KICAgICAgICAgICAgICAgICAgICAgICAgRXJzdGVyIFByb3RvdHlwIOKAkyBQcm9vZi1v
Zi1Db25jZXB0IGbDvHIgT2ZmbGluZS1Eb2t1bWVudGVudmVyd2FsdHVuZyBvaG5lIERhdGVuYmFu
ayB1bmQgSW50ZXJuZXQKICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idmVyc2lv
bi1kYXRlIj5Pa3RvYmVyIDIwMjU8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAg
ICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAg
IDwvZGl2PgoKICAgIDwhLS0gRnJlaWdhYmXDvGJlcnNpY2h0IChJbXByZXNzdW0pIC0tPgogICAg
PGRpdiBjbGFzcz0iaW1wcmludC1tb2RhbCIgaWQ9ImltcHJpbnRNb2RhbCIgb25jbGljaz0iaWYo
ZXZlbnQudGFyZ2V0PT09dGhpcylEcml2ZUdvdmVybmFuY2UuY2xvc2VJbXByaW50KCkiPgogICAg
ICAgIDxkaXYgY2xhc3M9ImltcHJpbnQtY29udGVudCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9
ImltcHJpbnQtaGVhZGVyIj4KICAgICAgICAgICAgICAgIEZyZWlnYWJldmVyYW50d29ydGxpY2hl
CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbXByaW50LWJvZHki
IGlkPSJpbXByaW50Qm9keSI+PC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8
IS0tIENvbnRyaWJ1dGlvbiBUeXBlIERpYWxvZyAtLT4KICAgIDxkaXYgY2xhc3M9ImNvbnRyaWIt
ZGlhbG9nIiBpZD0iY29udHJpYkRpYWxvZyI+CiAgICAgICAgPGRpdiBjbGFzcz0iY29udHJpYi1k
aWFsb2ctY29udGVudCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRyaWItZGlhbG9nLWhl
YWRlciI+QXJ0IGRlciBCZWFyYmVpdHVuZzwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJj
b250cmliLWRpYWxvZy1ib2R5Ij4KICAgICAgICAgICAgICAgIDxwIHN0eWxlPSJtYXJnaW4tYm90
dG9tOjEycHg7IGZvbnQtc2l6ZToxM3B4OyBjb2xvcjp2YXIoLS10ZXh0LXNlY29uZGFyeSk7Ij5C
aXR0ZSB3w6RobGUgZGllIEFydCBkZWluZXMgQmVpdHJhZ3M6PC9wPgogICAgICAgICAgICAgICAg
PGJ1dHRvbiBjbGFzcz0iY29udHJpYi10eXBlLWJ0biIgb25jbGljaz0iRHJpdmVFZGl0b3Iuc2V0
Q29udHJpYlR5cGUoJ2F1dG9yJykiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Imxh
YmVsIj5BdXRvciAvIEluaGFsdGxpY2hlIEVyc3RlbGx1bmc8L2Rpdj4KICAgICAgICAgICAgICAg
ICAgICA8ZGl2IGNsYXNzPSJkZXNjIj5TaWduaWZpa2FudGUgbmV1ZSBJbmhhbHRlIHZlcmZhc3N0
LCBBYnNjaG5pdHRlIGdlc2NocmllYmVuIG9kZXIgd2VzZW50bGljaGUgRXJnw6RuenVuZ2VuPC9k
aXY+CiAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgIDxidXR0b24gY2xh
c3M9ImNvbnRyaWItdHlwZS1idG4iIG9uY2xpY2s9IkRyaXZlRWRpdG9yLnNldENvbnRyaWJUeXBl
KCdyZWRha3Rpb24nKSI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGFiZWwiPlJl
ZGFrdGlvbmVsbGUgw5xiZXJhcmJlaXR1bmc8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2
IGNsYXNzPSJkZXNjIj5SZWNodHNjaHJlaWJ1bmcsIEdyYW1tYXRpaywgRm9ybWF0aWVydW5nIG9k
ZXIga2xlaW5lcmUgS29ycmVrdHVyZW48L2Rpdj4KICAgICAgICAgICAgICAgIDwvYnV0dG9uPgog
ICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iY29udHJpYi10eXBlLWJ0biIgb25jbGljaz0i
RHJpdmVFZGl0b3Iuc2V0Q29udHJpYlR5cGUoJ3JldmlldycpIj4KICAgICAgICAgICAgICAgICAg
ICA8ZGl2IGNsYXNzPSJsYWJlbCI+RmFjaGxpY2hlIFByw7xmdW5nIC8gUmV2aWV3PC9kaXY+CiAg
ICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZGVzYyI+SW5oYWx0bGljaGUgUHLDvGZ1bmcs
IGZhY2hsaWNoZSBBbm1lcmt1bmdlbiBvZGVyIFF1YWxpdMOkdHNzaWNoZXJ1bmc8L2Rpdj4KICAg
ICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4K
ICAgIDwvZGl2PgoKICAgIDwhLS0gTMO2c2NoLUJlc3TDpHRpZ3VuZyAtLT4KICAgIDxkaXYgY2xh
c3M9ImRlbGV0ZS1jb25maXJtLW1vZGFsIiBpZD0iZGVsZXRlQ29uZmlybU1vZGFsIj4KICAgICAg
ICA8ZGl2IGNsYXNzPSJkZWxldGUtY29uZmlybS1jb250ZW50Ij4KICAgICAgICAgICAgPGRpdiBj
bGFzcz0iZGVsZXRlLWNvbmZpcm0taGVhZGVyIj5Eb2t1bWVudCBlbmRnw7xsdGlnIGzDtnNjaGVu
PC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRlbGV0ZS1jb25maXJtLWJvZHkiPgogICAg
ICAgICAgICAgICAgPHAgc3R5bGU9ImZvbnQtc2l6ZToxNHB4O2NvbG9yOnZhcigtLXRleHQtc2Vj
b25kYXJ5KTttYXJnaW4tYm90dG9tOjhweDsiIGlkPSJkZWxldGVDb25maXJtVGV4dCI+PC9wPgog
ICAgICAgICAgICAgICAgPHAgc3R5bGU9ImZvbnQtc2l6ZToxM3B4O2NvbG9yOnZhcigtLXRleHQt
c2Vjb25kYXJ5KTttYXJnaW4tYm90dG9tOjEycHg7Ij5HaWIgenVyIEJlc3TDpHRpZ3VuZyBkZWlu
ZSBOVy1LZW5udW5nIGVpbjo8L3A+CiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIg
aWQ9ImRlbGV0ZUNvbmZpcm1JbnB1dCIgcGxhY2Vob2xkZXI9Ik5XLUtlbm51bmcgZWluZ2ViZW4u
Li4iIGF1dG9jb21wbGV0ZT0ib2ZmIj4KICAgICAgICAgICAgICAgIDxwIHN0eWxlPSJmb250LXNp
emU6MTFweDtjb2xvcjp2YXIoLS10ZXh0LW11dGVkKTttYXJnaW4tdG9wOjZweDsiPkRhcyBEb2t1
bWVudCB3aXJkIGluIGRlbiBQYXBpZXJrb3JiIHZlcnNjaG9iZW4gdW5kIGlzdCAyOCBUYWdlIHdp
ZWRlcmhlcnN0ZWxsYmFyLjwvcD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYg
Y2xhc3M9ImRlbGV0ZS1jb25maXJtLWZvb3RlciI+CiAgICAgICAgICAgICAgICA8YnV0dG9uIG9u
Y2xpY2s9IkRyaXZlUG9ydGFsLmNhbmNlbERlbGV0ZSgpIj5BYmJyZWNoZW48L2J1dHRvbj4KICAg
ICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImJ0bi1kZWxldGUiIGlkPSJkZWxldGVDb25maXJt
QnRuIiBvbmNsaWNrPSJEcml2ZVBvcnRhbC5jb25maXJtRGVsZXRlKCkiIGRpc2FibGVkPkVuZGfD
vGx0aWcgbMO2c2NoZW48L2J1dHRvbj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+
CiAgICA8L2Rpdj4KCiAgICA8IS0tIEhpbGZlLU1vZGFsIC0tPgogICAgPGRpdiBjbGFzcz0iaGVs
cC1tb2RhbCIgaWQ9ImhlbHBNb2RhbCIgb25jbGljaz0iaWYoZXZlbnQudGFyZ2V0PT09dGhpcyYm
IWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdoZWxwQm9keScpLmlzQ29udGVudEVkaXRhYmxlKWNs
b3NlSGVscCgpIj4KICAgICAgICA8ZGl2IGNsYXNzPSJoZWxwLW1vZGFsLWNvbnRlbnQiIHN0eWxl
PSJwb3NpdGlvbjpyZWxhdGl2ZTsiPgogICAgICAgICAgICA8bmF2IGNsYXNzPSJoZWxwLXRvYyIg
aWQ9ImhlbHBUb2MiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaGVscC10b2MtdGl0bGUi
PkhpbGZlICZhbXA7IEFubGVpdHVuZzwvZGl2PgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI2hl
bHAtc3RhcnQiIGNsYXNzPSJhY3RpdmUiIGRhdGEtc2VjdGlvbj0iaGVscC1zdGFydCI+RXJzdGUg
U2Nocml0dGU8L2E+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjaGVscC1jb25uZWN0IiBkYXRh
LXNlY3Rpb249ImhlbHAtY29ubmVjdCI+VmVyYmluZHVuZ3Ntb2RpPC9hPgogICAgICAgICAgICAg
ICAgPGEgaHJlZj0iI2hlbHAtc2VhcmNoIiBkYXRhLXNlY3Rpb249ImhlbHAtc2VhcmNoIj5TdWNo
ZSAmYW1wOyBGaWx0ZXI8L2E+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjaGVscC1kb2NzIiBk
YXRhLXNlY3Rpb249ImhlbHAtZG9jcyI+RG9rdW1lbnRlbmxpc3RlPC9hPgogICAgICAgICAgICAg
ICAgPGEgaHJlZj0iI2hlbHAtZGV0YWlsIiBkYXRhLXNlY3Rpb249ImhlbHAtZGV0YWlsIj5EZXRh
aWxhbnNpY2h0PC9hPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI2hlbHAtdGFibGUiIGRhdGEt
c2VjdGlvbj0iaGVscC10YWJsZSI+VGFiZWxsZW5hbnNpY2h0PC9hPgogICAgICAgICAgICAgICAg
PGEgaHJlZj0iI2hlbHAtZWRpdG9yIiBkYXRhLXNlY3Rpb249ImhlbHAtZWRpdG9yIj5FZGl0b3I8
L2E+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjaGVscC1rZXl3b3JkcyIgY2xhc3M9InN1YiIg
ZGF0YS1zZWN0aW9uPSJoZWxwLWtleXdvcmRzIj5TY2hsYWd3w7ZydGVyPC9hPgogICAgICAgICAg
ICAgICAgPGEgaHJlZj0iI2hlbHAtcGFyZW50IiBjbGFzcz0ic3ViIiBkYXRhLXNlY3Rpb249Imhl
bHAtcGFyZW50Ij5VbnRlcmFydGlrZWw8L2E+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjaGVs
cC1tZWRpYSIgY2xhc3M9InN1YiIgZGF0YS1zZWN0aW9uPSJoZWxwLW1lZGlhIj5NZWRpZW4gZWlu
ZsO8Z2VuPC9hPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI2hlbHAtZGVsZXRlIiBkYXRhLXNl
Y3Rpb249ImhlbHAtZGVsZXRlIj5Mw7ZzY2hlbiAmYW1wOyBQYXBpZXJrb3JiPC9hPgogICAgICAg
ICAgICAgICAgPGEgaHJlZj0iI2hlbHAtdGhlbWUiIGRhdGEtc2VjdGlvbj0iaGVscC10aGVtZSI+
VGFnL05hY2h0LU1vZHVzPC9hPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI2hlbHAtc2hvcnRj
dXRzIiBkYXRhLXNlY3Rpb249ImhlbHAtc2hvcnRjdXRzIj5UYXN0ZW5rw7xyemVsPC9hPgogICAg
ICAgICAgICAgICAgPGEgaHJlZj0iI2hlbHAtdmVyc2lvbiIgZGF0YS1zZWN0aW9uPSJoZWxwLXZl
cnNpb24iPlZlcnNpb25zaGlzdG9yaWU8L2E+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjaGVs
cC1jb250YWN0IiBkYXRhLXNlY3Rpb249ImhlbHAtY29udGFjdCI+RnJhZ2VuICZhbXA7IFVudGVy
c3TDvHR6dW5nPC9hPgogICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iaGVscC1lZGl0LWJ0
biIgaWQ9ImhlbHBFZGl0QnRuIiBvbmNsaWNrPSJzdGFydEVkaXRIZWxwKCkiPkJlYXJiZWl0ZW48
L2J1dHRvbj4KICAgICAgICAgICAgPC9uYXY+CiAgICAgICAgICAgIDxkaXYgc3R5bGU9ImZsZXg6
MTtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO292ZXJmbG93OmhpZGRlbjsiPgog
ICAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWxwLWVkaXQtYmFyIiBpZD0iaGVscEVkaXRCYXIiPgog
ICAgICAgICAgICAgICAgPGJ1dHRvbiBvbmNsaWNrPSJkb2N1bWVudC5leGVjQ29tbWFuZCgnYm9s
ZCcpIiB0aXRsZT0iRmV0dCI+PGI+QjwvYj48L2J1dHRvbj4KICAgICAgICAgICAgICAgIDxidXR0
b24gb25jbGljaz0iZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ2l0YWxpYycpIiB0aXRsZT0iS3Vyc2l2
Ij48aT5JPC9pPjwvYnV0dG9uPgogICAgICAgICAgICAgICAgPGJ1dHRvbiBvbmNsaWNrPSJkb2N1
bWVudC5leGVjQ29tbWFuZCgndW5kZXJsaW5lJykiIHRpdGxlPSJVbnRlcnN0cmljaGVuIj48dT5V
PC91PjwvYnV0dG9uPgogICAgICAgICAgICAgICAgPGJ1dHRvbiBvbmNsaWNrPSJkb2N1bWVudC5l
eGVjQ29tbWFuZCgnaW5zZXJ0VW5vcmRlcmVkTGlzdCcpIj4mYnVsbDs8L2J1dHRvbj4KICAgICAg
ICAgICAgICAgIDxidXR0b24gb25jbGljaz0iZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ2luc2VydE9y
ZGVyZWRMaXN0JykiPjEuPC9idXR0b24+CiAgICAgICAgICAgICAgICA8YnV0dG9uIG9uY2xpY2s9
InZhciBoPXByb21wdCgnw5xiZXJzY2hyaWZ0LVRleHQ6Jyk7aWYoaCl7ZG9jdW1lbnQuZXhlY0Nv
bW1hbmQoJ2luc2VydEhUTUwnLCc8aDIgaWQ9JnF1b3Q7aGVscC0nK2gudG9Mb3dlckNhc2UoKS5y
ZXBsYWNlKC9bXmEtejAtOV0vZywnLScpKycmcXVvdDs+JytoKyc8L2gyPicpO30iPkgyPC9idXR0
b24+CiAgICAgICAgICAgICAgICA8YnV0dG9uIG9uY2xpY2s9InZhciBoPXByb21wdCgnVW50ZXLD
vGJlcnNjaHJpZnQtVGV4dDonKTtpZihoKXtkb2N1bWVudC5leGVjQ29tbWFuZCgnaW5zZXJ0SFRN
TCcsJzxoMyBpZD0mcXVvdDtoZWxwLScraC50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1teYS16MC05
XS9nLCctJykrJyZxdW90Oz4nK2grJzwvaDM+Jyk7fSI+SDM8L2J1dHRvbj4KICAgICAgICAgICAg
ICAgIDxidXR0b24gY2xhc3M9ImhlbHAtY2FuY2VsLWJ0biIgb25jbGljaz0iY2FuY2VsRWRpdEhl
bHAoKSI+QWJicmVjaGVuPC9idXR0b24+CiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJo
ZWxwLXNhdmUtYnRuIiBvbmNsaWNrPSJzYXZlRWRpdEhlbHAoKSI+U3BlaWNoZXJuPC9idXR0b24+
CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWxwLWJvZHkiIGlk
PSJoZWxwQm9keSI+CgogICAgICAgICAgICAgICAgPGgyIGlkPSJoZWxwLXN0YXJ0Ij5FcnN0ZSBT
Y2hyaXR0ZTwvaDI+CiAgICAgICAgICAgICAgICA8cD5XaWxsa29tbWVuIGJlaW0gPHN0cm9uZz5E
LlIuSS5WLkUuPC9zdHJvbmc+IFBvcnRhbCDigJMgZGVtIERpZ2l0YWxlbiBSZXNzb3VyY2VuLSB1
bmQgSW5mb3JtYXRpb25zcG9ydGFsIFZlcmtlaHIgZGVzIFBQIERvcnRtdW5kIChWSTMpLjwvcD4K
ICAgICAgICAgICAgICAgIDxwPkRhcyBQb3J0YWwgdmVyd2FsdGV0IERva3VtZW50ZSBvZmZsaW5l
LWbDpGhpZyBpbiBlaW5lbSBsb2thbGVuIE9yZG5lci4gQWxsZSBBcnRpa2VsLCBNZWRpZW4gdW5k
IEtvbmZpZ3VyYXRpb25lbiBsaWVnZW4gYWxzIERhdGVpZW4gdm9yIOKAkyBrZWluIEludGVybmV0
IHVuZCBrZWluZSBEYXRlbmJhbmsgZXJmb3JkZXJsaWNoLjwvcD4KICAgICAgICAgICAgICAgIDxo
Mz5TY2huZWxsc3RhcnQ8L2gzPgogICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAg
ICAgIDxsaT48c3Ryb25nPk51ciBsZXNlbjo8L3N0cm9uZz4gw5ZmZm5lIGRpZSA8Y29kZT5pbmRl
eC5odG1sPC9jb2RlPiBkaXJla3QgaW0gQnJvd3Nlci4gRG9rdW1lbnRlIHdlcmRlbiBhdXRvbWF0
aXNjaCBhdXMgZGVtIDxjb2RlPmRhdGEvPC9jb2RlPi1PcmRuZXIgZ2VsYWRlbi48L2xpPgogICAg
ICAgICAgICAgICAgICAgIDxsaT48c3Ryb25nPkJlYXJiZWl0ZW4gKFdpbmRvd3MpOjwvc3Ryb25n
PiBTdGFydGUgPGNvZGU+RFJJVkVfU3RhcnQuYmF0PC9jb2RlPiBwZXIgRG9wcGVsa2xpY2suIERl
ciBTZXJ2ZXIgw7ZmZm5ldCBkYXMgUG9ydGFsIGltIEJyb3dzZXIgbWl0IFZvbGx6dWdyaWZmLjwv
bGk+CiAgICAgICAgICAgICAgICA8L3VsPgoKICAgICAgICAgICAgICAgIDxoMiBpZD0iaGVscC1j
b25uZWN0Ij5WZXJiaW5kdW5nc21vZGk8L2gyPgogICAgICAgICAgICAgICAgPHA+RGFzIFBvcnRh
bCBlcmtlbm50IGF1dG9tYXRpc2NoIGRlbiBiZXN0ZW4gdmVyZsO8Z2JhcmVuIE1vZHVzOjwvcD4K
ICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICA8bGk+PHN0cm9uZz5TZXJ2
ZXItTW9kdXM8L3N0cm9uZz4gKGdyw7xuZXIgUHVua3QpOiBWb2xsZXIgTGVzZS0gdW5kIFNjaHJl
aWJ6dWdyaWZmIMO8YmVyIDxjb2RlPkRSSVZFX1N0YXJ0LmJhdDwvY29kZT4uIFVudGVyc3TDvHR6
dCBMb2NraW5nIGJlaSBtZWhyZXJlbiBCZW51dHplcm4uPC9saT4KICAgICAgICAgICAgICAgICAg
ICA8bGk+PHN0cm9uZz5MZXNlbW9kdXM8L3N0cm9uZz4gKG9yYW5nZXIgUHVua3QpOiDDlmZmbmUg
ZWluZmFjaCBkaWUgPGNvZGU+aW5kZXguaHRtbDwvY29kZT4gaW0gQnJvd3Nlci4gQWxsZSBmcmVp
Z2VnZWJlbmVuIERva3VtZW50ZSB3ZXJkZW4gYXV0b21hdGlzY2ggYW5nZXplaWd0LjwvbGk+CiAg
ICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgPHA+RGVyIGFrdHVlbGxlIFN0YXR1
cyB3aXJkIGluIGRlciBWZXJiaW5kdW5nc2xlaXN0ZSB1bnRlciBkZW0gSGVhZGVyIGFuZ2V6ZWln
dC48L3A+CgogICAgICAgICAgICAgICAgPGgyIGlkPSJoZWxwLXNlYXJjaCI+U3VjaGUgJmFtcDsg
RmlsdGVyPC9oMj4KICAgICAgICAgICAgICAgIDxwPkRpZSBTdGV1ZXJ1bmdzbGVpc3RlIGJpZXRl
dCBtZWhyZXJlIE3DtmdsaWNoa2VpdGVuLCBEb2t1bWVudGUgenUgZmluZGVuOjwvcD4KICAgICAg
ICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICA8bGk+PHN0cm9uZz5TdWNoZmVsZDo8
L3N0cm9uZz4gRHVyY2hzdWNodCBUaXRlbCwgSW5oYWx0LCBLYXRlZ29yaWUgdW5kIFNjaGxhZ3fD
tnJ0ZXIgaW4gRWNodHplaXQuPC9saT4KICAgICAgICAgICAgICAgICAgICA8bGk+PHN0cm9uZz5L
YXRlZ29yaWUtRmlsdGVyPC9zdHJvbmc+ICh6d2VpdGUgWmVpbGUpOiBLbGlja2UgYXVmIGVpbmUg
S2F0ZWdvcmllLCB1bSBudXIgZGVyZW4gRG9rdW1lbnRlIGFuenV6ZWlnZW4uIOKAnkFsbGUiIHpl
aWd0IGFsbGVzLjwvbGk+CiAgICAgICAgICAgICAgICAgICAgPGxpPjxzdHJvbmc+U3RhdHVzLUZp
bHRlcjo8L3N0cm9uZz4gRmlsdGVydCBuYWNoIERva3VtZW50ZW5zdGF0dXMgKEVudHd1cmYsIFp1
ciBQcsO8ZnVuZywgRnJlaWdlZ2ViZW4pLjwvbGk+CiAgICAgICAgICAgICAgICA8L3VsPgogICAg
ICAgICAgICAgICAgPHA+QWxsZSBGaWx0ZXIgbGFzc2VuIHNpY2gga29tYmluaWVyZW4uIERpZSBB
bnplaWdlIOKAnlggLyBZIiB6ZWlndCBnZWZpbHRlcnRlIC8gZ2VzYW10ZSBEb2t1bWVudGUuPC9w
PgoKICAgICAgICAgICAgICAgIDxoMiBpZD0iaGVscC1kb2NzIj5Eb2t1bWVudGVubGlzdGU8L2gy
PgogICAgICAgICAgICAgICAgPHA+RGllIGxpbmtlIFNwYWx0ZSB6ZWlndCBhbGxlIERva3VtZW50
ZSwgZGllIGRlbiBha3R1ZWxsZW4gRmlsdGVybiBlbnRzcHJlY2hlbi48L3A+CiAgICAgICAgICAg
ICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgPGxpPjxzdHJvbmc+VGl0ZWw6PC9zdHJvbmc+
IEZldHQgZGFyZ2VzdGVsbHQuIERlciBIaW53ZWlzIOKAnltnZXNwZXJydF0iIHplaWd0IGFuLCBk
YXNzIGVpbiBhbmRlcmVyIEJlbnV0emVyIGRhcyBEb2t1bWVudCBnZXJhZGUgYmVhcmJlaXRldC48
L2xpPgogICAgICAgICAgICAgICAgICAgIDxsaT48c3Ryb25nPk1ldGFkYXRlbjo8L3N0cm9uZz4g
S2F0ZWdvcmllLUJhZGdlLCBTdGF0dXMtQmFkZ2UgKGZhcmJpZyksIG9wdGlvbmFsIOKAnitNZWRp
ZW4iLjwvbGk+CiAgICAgICAgICAgICAgICAgICAgPGxpPjxzdHJvbmc+U2NobGFnd8O2cnRlcjo8
L3N0cm9uZz4gQmlzIHp1IDQgVGFncyB3ZXJkZW4gdW50ZXIgZGVuIE1ldGFkYXRlbiBhbmdlemVp
Z3QuPC9saT4KICAgICAgICAgICAgICAgICAgICA8bGk+PHN0cm9uZz5VbnRlcmFydGlrZWw6PC9z
dHJvbmc+IFdlcmRlbiBlaW5nZXLDvGNrdCB1bnRlciBpaHJlbSDDnGJlcmFydGlrZWwgZGFyZ2Vz
dGVsbHQgdW5kIG1pdCDigJ7ihrMiIG1hcmtpZXJ0LjwvbGk+CiAgICAgICAgICAgICAgICA8L3Vs
PgoKICAgICAgICAgICAgICAgIDxoMiBpZD0iaGVscC1kZXRhaWwiPkRldGFpbGFuc2ljaHQ8L2gy
PgogICAgICAgICAgICAgICAgPHA+RGllIHJlY2h0ZSBTcGFsdGUgemVpZ3QgZGVuIGF1c2dld8Ok
aGx0ZW4gQXJ0aWtlbCBtaXQgYWxsZW4gRGV0YWlsczo8L3A+CiAgICAgICAgICAgICAgICA8dWw+
CiAgICAgICAgICAgICAgICAgICAgPGxpPjxzdHJvbmc+S29wZmJlcmVpY2g6PC9zdHJvbmc+IFRp
dGVsLCBLYXRlZ29yaWUsIFN0YXR1cyAoZmFyYmlnKSwgVmVyc2lvbiwgRXJzdGVsbHVuZ3MtIHVu
ZCDDhG5kZXJ1bmdzZGF0dW0sIEVyc3RlbGxlci9CZWFyYmVpdGVyLjwvbGk+CiAgICAgICAgICAg
ICAgICAgICAgPGxpPjxzdHJvbmc+U2NobGFnd8O2cnRlcjo8L3N0cm9uZz4gQWxsZSBTY2hsYWd3
w7ZydGVyIGFscyBUYWdzLjwvbGk+CiAgICAgICAgICAgICAgICAgICAgPGxpPjxzdHJvbmc+w5xi
ZXJhcnRpa2VsIC8gVW50ZXJhcnRpa2VsOjwvc3Ryb25nPiBLbGlja2JhcmUgTGlua3MgenUgdmVy
d2FuZHRlbiBBcnRpa2Vsbi48L2xpPgogICAgICAgICAgICAgICAgICAgIDxsaT48c3Ryb25nPklu
aGFsdDo8L3N0cm9uZz4gRGVyIGZvcm1hdGllcnRlIEFydGlrZWx0ZXh0LjwvbGk+CiAgICAgICAg
ICAgICAgICAgICAgPGxpPjxzdHJvbmc+TWl0d2lya2VuZGU6PC9zdHJvbmc+IEF1Zmxpc3R1bmcg
YWxsZXIgQmVpdHJhZ2VuZGVuIG1pdCBSb2xsZSB1bmQgcHJvemVudHVhbGVtIEFudGVpbC48L2xp
PgogICAgICAgICAgICAgICAgICAgIDxsaT48c3Ryb25nPlByw7xmdW5nc3ZlcmxhdWY6PC9zdHJv
bmc+IENocm9ub2xvZ2llIGFsbGVyIEZyZWlnYWJlLS9BYmxlaG51bmdzYWt0aW9uZW4uPC9saT4K
ICAgICAgICAgICAgICAgICAgICA8bGk+PHN0cm9uZz5BbmjDpG5nZTo8L3N0cm9uZz4gTWVkaWVu
IHVuZCBEYXRlaWVuIG1pdCBWb3JzY2hhdS0vRG93bmxvYWQtTcO2Z2xpY2hrZWl0LjwvbGk+CiAg
ICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgPGgzPkFrdGlvbnNzY2hhbHRmbMOk
Y2hlbjwvaDM+CiAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgPGxpPjxz
dHJvbmc+QmVhcmJlaXRlbjo8L3N0cm9uZz4gw5ZmZm5ldCBkZW4gRWRpdG9yIChTY2hyZWlienVn
cmlmZiBlcmZvcmRlcmxpY2gpLjwvbGk+CiAgICAgICAgICAgICAgICAgICAgPGxpPjxzdHJvbmc+
TMO2c2NoZW46PC9zdHJvbmc+IEVudGZlcm50IGRhcyBEb2t1bWVudCBuYWNoIEJlc3TDpHRpZ3Vu
ZyBtaXQgTlctS2VubnVuZy4gR2Vsw7ZzY2h0ZSBEb2t1bWVudGUgc2luZCAyOCBUYWdlIHdpZWRl
cmhlcnN0ZWxsYmFyLjwvbGk+CiAgICAgICAgICAgICAgICAgICAgPGxpPjxzdHJvbmc+RnJlaWdl
YmVuIC8gQWJsZWhuZW46PC9zdHJvbmc+IE51ciBiZWkgU3RhdHVzIOKAnlp1ciBQcsO8ZnVuZyIg
dW5kIG1pdCBlbnRzcHJlY2hlbmRlciBCZXJlY2h0aWd1bmcgc2ljaHRiYXIuPC9saT4KICAgICAg
ICAgICAgICAgIDwvdWw+CgogICAgICAgICAgICAgICAgPGgyIGlkPSJoZWxwLXRhYmxlIj5UYWJl
bGxlbmFuc2ljaHQ8L2gyPgogICAgICAgICAgICAgICAgPHA+S2xpY2tlIGF1ZiA8c3Ryb25nPuKA
nlRhYmVsbGUiPC9zdHJvbmc+IGluIGRlciBTdGV1ZXJ1bmdzbGVpc3RlLCB1bSBhbGxlIERva3Vt
ZW50ZSBpbiBlaW5lciBzb3J0aWVyYmFyZW4gR2VzYW10w7xiZXJzaWNodCBhbnp1emVpZ2VuLjwv
cD4KICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICA8bGk+PHN0cm9uZz5T
cGFsdGVuOjwvc3Ryb25nPiBUaXRlbCwgS2F0ZWdvcmllLCBTdGF0dXMsIEVyc3RlbGxlciwgRXJz
dGVsbHQsIEdlw6RuZGVydCwgU2NobGFnd8O2cnRlciwgVmVyc2lvbi48L2xpPgogICAgICAgICAg
ICAgICAgICAgIDxsaT48c3Ryb25nPlNvcnRpZXJ1bmc6PC9zdHJvbmc+IEtsaWNrIGF1ZiBlaW5l
IFNwYWx0ZW7DvGJlcnNjaHJpZnQgc29ydGllcnQgYXVmc3RlaWdlbmQgKOKWsikgYnp3LiBhYnN0
ZWlnZW5kICjilrwpLjwvbGk+CiAgICAgICAgICAgICAgICAgICAgPGxpPjxzdHJvbmc+S2xpY2sg
YXVmIGVpbmUgWmVpbGU6PC9zdHJvbmc+IFdlY2hzZWx0IHp1csO8Y2sgenVyIERldGFpbGFuc2lj
aHQgdW5kIHplaWd0IGRhcyBnZXfDpGhsdGUgRG9rdW1lbnQuPC9saT4KICAgICAgICAgICAgICAg
IDwvdWw+CiAgICAgICAgICAgICAgICA8cD5EaWUgVGFiZWxsZSByZXNwZWt0aWVydCBhbGxlIGFr
dGl2ZW4gRmlsdGVyIChLYXRlZ29yaWUsIFN0YXR1cywgU3VjaGUpLjwvcD4KCiAgICAgICAgICAg
ICAgICA8aDIgaWQ9ImhlbHAtZWRpdG9yIj5FZGl0b3I8L2gyPgogICAgICAgICAgICAgICAgPHA+
RGVyIEVkaXRvciDDtmZmbmV0IHNpY2ggYWxzIFZvbGxiaWxkLU92ZXJsYXkgYmVpbSBFcnN0ZWxs
ZW4gb2RlciBCZWFyYmVpdGVuIGVpbmVzIERva3VtZW50cy48L3A+CiAgICAgICAgICAgICAgICA8
aDM+TWV0YWRhdGVuIChvYmVyZSBaZWlsZW4pPC9oMz4KICAgICAgICAgICAgICAgIDx1bD4KICAg
ICAgICAgICAgICAgICAgICA8bGk+PHN0cm9uZz5UaXRlbDo8L3N0cm9uZz4gUGZsaWNodGZlbGQg
4oCTIGRlciBEb2t1bWVudG5hbWUuPC9saT4KICAgICAgICAgICAgICAgICAgICA8bGk+PHN0cm9u
Zz5LYXRlZ29yaWU6PC9zdHJvbmc+IEF1c3dhaGwgZGVyIE9iZXJrYXRlZ29yaWUuPC9saT4KICAg
ICAgICAgICAgICAgICAgICA8bGk+PHN0cm9uZz5TdGF0dXM6PC9zdHJvbmc+IEVudHd1cmYsIFp1
ciBQcsO8ZnVuZywgRnJlaWdlZ2ViZW4gKGplIG5hY2ggQmVyZWNodGlndW5nKS48L2xpPgogICAg
ICAgICAgICAgICAgICAgIDxsaT48c3Ryb25nPlZlcnNpb246PC9zdHJvbmc+IFdpcmQgYXV0b21h
dGlzY2ggYmVyZWNobmV0LiBLbGlja2UgaW4gZGVyIERldGFpbGFuc2ljaHQgYXVmIGRpZSBWZXJz
aW9uc251bW1lciBmw7xyIGVpbmUgRXJrbMOkcnVuZy48L2xpPgogICAgICAgICAgICAgICAgICAg
IDxsaT48c3Ryb25nPsOcYmVyYXJ0aWtlbDo8L3N0cm9uZz4gT3B0aW9uYWwg4oCTIG9yZG5ldCBk
YXMgRG9rdW1lbnQgYWxzIFVudGVyYXJ0aWtlbCBlaW5lbSBiZXN0ZWhlbmRlbiBEb2t1bWVudCB6
dS48L2xpPgogICAgICAgICAgICAgICAgPC91bD4KCiAgICAgICAgICAgICAgICA8aDM+VmVyc2lv
bmllcnVuZzwvaDM+CiAgICAgICAgICAgICAgICA8cD5EaWUgQXJ0aWtlbHZlcnNpb24gd2lyZCBh
dXRvbWF0aXNjaCBiZWltIFNwZWljaGVybiBiZXJlY2huZXQuIERpZSBaYWhsIDxzdHJvbmc+dm9y
PC9zdHJvbmc+IGRlbSBQdW5rdCB6ZWlndCwgd2llIG9mdCBkZXIgQXJ0aWtlbCBmcmVpZ2VnZWJl
biB3dXJkZS4gRGllIFphaGwgPHN0cm9uZz5uYWNoPC9zdHJvbmc+IGRlbSBQdW5rdCB6ZWlndCBk
aWUgQmVhcmJlaXR1bmdlbiBzZWl0IGRlciBsZXR6dGVuIEZyZWlnYWJlLjwvcD4KICAgICAgICAg
ICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICA8bGk+PHN0cm9uZz52MC4xLCB2MC4yLCB2
MC4zLCAuLi46PC9zdHJvbmc+IEVudHd1cmZzcGhhc2Ug4oCTIGplZGUgQmVhcmJlaXR1bmcgesOk
aGx0ICswLjE8L2xpPgogICAgICAgICAgICAgICAgICAgIDxsaT48c3Ryb25nPnYxLjA6PC9zdHJv
bmc+IEVyc3RlIEZyZWlnYWJlPC9saT4KICAgICAgICAgICAgICAgICAgICA8bGk+PHN0cm9uZz52
MS4xLCB2MS4yLCAuLi46PC9zdHJvbmc+IMOcYmVyYXJiZWl0dW5nZW4gbmFjaCBGcmVpZ2FiZTwv
bGk+CiAgICAgICAgICAgICAgICAgICAgPGxpPjxzdHJvbmc+djIuMCwgdjMuMCwgLi4uOjwvc3Ry
b25nPiBKZWRlIHdlaXRlcmUgRnJlaWdhYmU8L2xpPgogICAgICAgICAgICAgICAgPC91bD4KICAg
ICAgICAgICAgICAgIDxwPkJlaXNwaWVsOiA8c3Ryb25nPnYyLjU8L3N0cm9uZz4gYmVkZXV0ZXQ6
IHp3ZWltYWwgZnJlaWdlZ2ViZW4sIGRhbmFjaCA1IEJlYXJiZWl0dW5nZW4uIEtsaWNrZSBpbiBk
ZXIgRGV0YWlsYW5zaWNodCBhdWYgZGllIFZlcnNpb25zbnVtbWVyIGbDvHIgZWluZSBhdXNmw7xo
cmxpY2hlIEVya2zDpHJ1bmcuPC9wPgoKICAgICAgICAgICAgICAgIDxoMyBpZD0iaGVscC1rZXl3
b3JkcyI+U2NobGFnd8O2cnRlcjwvaDM+CiAgICAgICAgICAgICAgICA8cD5TY2hsYWd3w7ZydGVy
IGhlbGZlbiBkYWJlaSwgQXJ0aWtlbCBzY2huZWxsZXIgenUgZmluZGVuIHVuZCB0aGVtYXRpc2No
IHp1IHZlcmtuw7xwZmVuLjwvcD4KICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAg
ICAgICA8bGk+R2liIGVpbiBTY2hsYWd3b3J0IGVpbiB1bmQgZHLDvGNrZSA8a2JkPkVudGVyPC9r
YmQ+IG9kZXIgPGtiZD4sPC9rYmQ+IHp1bSBIaW56dWbDvGdlbi48L2xpPgogICAgICAgICAgICAg
ICAgICAgIDxsaT48c3Ryb25nPkF1dG9jb21wbGV0ZTo8L3N0cm9uZz4gQmVpbSBUaXBwZW4gd2Vy
ZGVuIHBhc3NlbmRlIFNjaGxhZ3fDtnJ0ZXIgYXVzIGFsbGVuIERva3VtZW50ZW4gdm9yZ2VzY2hs
YWdlbi48L2xpPgogICAgICAgICAgICAgICAgICAgIDxsaT48c3Ryb25nPlZvcnNjaGzDpGdlOjwv
c3Ryb25nPiBVbnRlcmhhbGIgZGVzIEVpbmdhYmVmZWxkcyB3ZXJkZW4gdGhlbWVudmVyd2FuZHRl
IFNjaGxhZ3fDtnJ0ZXIgYWxzIGtsaWNrYmFyZSBDaGlwcyBhbmdlemVpZ3Qg4oCTIGJhc2llcmVu
ZCBhdWYgS2F0ZWdvcmllLCB2ZXJ3YW5kdGVuIEFydGlrZWxuIHVuZCBiZXJlaXRzIGdlc2V0enRl
biBUYWdzLjwvbGk+CiAgICAgICAgICAgICAgICAgICAgPGxpPktsaWNrZSBhdWYgPHN0cm9uZz7D
lzwvc3Ryb25nPiBhbiBlaW5lbSBUYWcgenVtIEVudGZlcm5lbiwgb2RlciBkcsO8Y2tlIDxrYmQ+
QmFja3NwYWNlPC9rYmQ+IGJlaSBsZWVyZW0gRWluZ2FiZWZlbGQuPC9saT4KICAgICAgICAgICAg
ICAgIDwvdWw+CgogICAgICAgICAgICAgICAgPGgzIGlkPSJoZWxwLXBhcmVudCI+VW50ZXJhcnRp
a2VsPC9oMz4KICAgICAgICAgICAgICAgIDxwPsOcYmVyIGRhcyBEcm9wZG93biDigJ7DnGJlcmFy
dGlrZWwiIGthbm5zdCBkdSBlaW4gRG9rdW1lbnQgYWxzIEVyZ8Okbnp1bmcgZWluZXMgYmVzdGVo
ZW5kZW4gQXJ0aWtlbHMgYW5sZWdlbi48L3A+CiAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAg
ICAgICAgICAgICAgPGxpPlVudGVyYXJ0aWtlbCB3ZXJkZW4gaW4gZGVyIERva3VtZW50ZW5saXN0
ZSBlaW5nZXLDvGNrdCB1bnRlciBpaHJlbSDDnGJlcmFydGlrZWwgYW5nZXplaWd0LjwvbGk+CiAg
ICAgICAgICAgICAgICAgICAgPGxpPkluIGRlciBEZXRhaWxhbnNpY2h0IHdlcmRlbiDDnGJlci0g
dW5kIFVudGVyYXJ0aWtlbCBhbHMga2xpY2tiYXJlIExpbmtzIGRhcmdlc3RlbGx0LjwvbGk+CiAg
ICAgICAgICAgICAgICAgICAgPGxpPlppcmtlbHZlcndlaXNlIHdlcmRlbiBhdXRvbWF0aXNjaCB2
ZXJoaW5kZXJ0LjwvbGk+CiAgICAgICAgICAgICAgICA8L3VsPgoKICAgICAgICAgICAgICAgIDxo
MyBpZD0iaGVscC1tZWRpYSI+TWVkaWVuIGVpbmbDvGdlbjwvaDM+CiAgICAgICAgICAgICAgICA8
cD7DnGJlciBkZW4gPHN0cm9uZz5EYXRlaS1CdXR0b248L3N0cm9uZz4gaW4gZGVyIFdlcmt6ZXVn
bGVpc3RlIGthbm5zdCBkdSBEYXRlaWVuIGhvY2hsYWRlbi4gTWVocmZhY2hhdXN3YWhsIGlzdCBt
w7ZnbGljaCDigJMgaGFsdGUgZGF6dSA8a2JkPlN0cmc8L2tiZD4gZ2VkcsO8Y2t0LjwvcD4KCiAg
ICAgICAgICAgICAgICA8aDQ+VW50ZXJzdMO8dHp0ZSBEYXRlaXR5cGVuPC9oND4KICAgICAgICAg
ICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICA8bGk+PHN0cm9uZz5CaWxkZXI6PC9zdHJv
bmc+IFBORywgSlBHLCBKUEVHLCBHSUYsIFNWRywgV2ViUDwvbGk+CiAgICAgICAgICAgICAgICAg
ICAgPGxpPjxzdHJvbmc+UERGLURva3VtZW50ZTo8L3N0cm9uZz4gQWxzIERvd25sb2FkLUxpbmss
IGVpbmdlYmV0dGV0ZSBWb3JzY2hhdSBvZGVyIEFuaGFuZzwvbGk+CiAgICAgICAgICAgICAgICAg
ICAgPGxpPjxzdHJvbmc+VmlkZW9zOjwvc3Ryb25nPiBNUDQsIFdlYk08L2xpPgogICAgICAgICAg
ICAgICAgICAgIDxsaT48c3Ryb25nPkF1ZGlvOjwvc3Ryb25nPiBNUDMsIFdBViwgT0dHPC9saT4K
ICAgICAgICAgICAgICAgICAgICA8bGk+PHN0cm9uZz5PZmZpY2UtRG9rdW1lbnRlOjwvc3Ryb25n
PiBXb3JkIChET0NYKSwgRXhjZWwgKFhMU1gpLCBQb3dlclBvaW50IChQUFRYKTwvbGk+CiAgICAg
ICAgICAgICAgICA8L3VsPgoKICAgICAgICAgICAgICAgIDxoND5XaWUgd2VyZGVuIE1lZGllbiBl
aW5nZWbDvGd0PzwvaDQ+CiAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAg
PGxpPjxzdHJvbmc+RGF0ZWktQnV0dG9uOjwvc3Ryb25nPiDDlmZmbmV0IGRlbiBEYXRlaWRpYWxv
ZyDigJMgZHUga2FubnN0IGVpbmUgb2RlciBtZWhyZXJlIERhdGVpZW4gZ2xlaWNoemVpdGlnIGF1
c3fDpGhsZW48L2xpPgogICAgICAgICAgICAgICAgICAgIDxsaT48c3Ryb25nPkVpbmbDvGdlbiBh
dXMgWndpc2NoZW5hYmxhZ2U6PC9zdHJvbmc+IEJpbGRlciBhdXMgU2NyZWVuc2hvdHMgb2RlciBr
b3BpZXJ0ZW4gV2Vic2VpdGVuIHdlcmRlbiBhdXRvbWF0aXNjaCBoZXJ1bnRlcmdlbGFkZW4gdW5k
IGxva2FsIGdlc3BlaWNoZXJ0PC9saT4KICAgICAgICAgICAgICAgICAgICA8bGk+PHN0cm9uZz5E
cmFnICZhbXA7IERyb3A6PC9zdHJvbmc+IERhdGVpZW4ga8O2bm5lbiBkaXJla3QgaW4gZGVuIEVk
aXRvciBnZXpvZ2VuIHdlcmRlbjwvbGk+CiAgICAgICAgICAgICAgICA8L3VsPgoKICAgICAgICAg
ICAgICAgIDxoND5EYXJzdGVsbHVuZ3Ntb2RpPC9oND4KICAgICAgICAgICAgICAgIDx1bD4KICAg
ICAgICAgICAgICAgICAgICA8bGk+PHN0cm9uZz5Bbmhhbmc6PC9zdHJvbmc+IERhdGVpIHdpcmQg
dW50ZXJoYWxiIGRlcyBBcnRpa2VscyBhbHMgRG93bmxvYWQtTGluayBhbmdlemVpZ3Q8L2xpPgog
ICAgICAgICAgICAgICAgICAgIDxsaT48c3Ryb25nPklubGluZSAoQmlsZCk6PC9zdHJvbmc+IEJp
bGQgd2lyZCBkaXJla3QgaW0gVGV4dCBhbmdlemVpZ3Qg4oCTIGFscyBWb3JzY2hhdWJpbGQgb2Rl
ciBpbiBPcmlnaW5hbGdyw7bDn2UgKG1heC4gNjQww5c0ODAgcHgpPC9saT4KICAgICAgICAgICAg
ICAgICAgICA8bGk+PHN0cm9uZz5QREYtTGluazo8L3N0cm9uZz4gS2xpY2tiYXJlciBMaW5rLCBk
ZXIgZGFzIFBERiBpbiBlaW5lbSBWb3JzY2hhdS1GZW5zdGVyIMO2ZmZuZXQ8L2xpPgogICAgICAg
ICAgICAgICAgICAgIDxsaT48c3Ryb25nPlBERiBlaW5nZWJldHRldDo8L3N0cm9uZz4gUERGIHdp
cmQgYWxzIHNjcm9sbGJhcmVyIFJhaG1lbiBkaXJla3QgaW0gQXJ0aWtlbCBhbmdlemVpZ3Q8L2xp
PgogICAgICAgICAgICAgICAgICAgIDxsaT48c3Ryb25nPlZpZGVvL0F1ZGlvL09mZmljZTo8L3N0
cm9uZz4gSWNvbi1FbGVtZW50IGltIFRleHQg4oCTIEtsaWNrIMO2ZmZuZXQgZGllIFZvcnNjaGF1
PC9saT4KICAgICAgICAgICAgICAgIDwvdWw+CgogICAgICAgICAgICAgICAgPGg0Pk1lZGllbiBi
ZWFyYmVpdGVuPC9oND4KICAgICAgICAgICAgICAgIDxwPktsaWNrZSBpbSBFZGl0b3IgYXVmIGVp
biBlaW5nZWbDvGd0ZXMgTWVkaXVtLCB1bSBlcyB6dSBiZWFyYmVpdGVuOjwvcD4KICAgICAgICAg
ICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICA8bGk+PHN0cm9uZz5BdXNyaWNodHVuZzo8
L3N0cm9uZz4gTGlua3MsIE1pdHRpZyBvZGVyIFJlY2h0czwvbGk+CiAgICAgICAgICAgICAgICAg
ICAgPGxpPjxzdHJvbmc+VW50ZXJ0aXRlbDo8L3N0cm9uZz4gT3B0aW9uYWxlIEJlc2NocmlmdHVu
ZyB1bnRlciBkZW0gTWVkaXVtPC9saT4KICAgICAgICAgICAgICAgICAgICA8bGk+PHN0cm9uZz5F
bnRmZXJuZW46PC9zdHJvbmc+IE1lZGl1bSBhdXMgZGVtIEFydGlrZWwgbMO2c2NoZW4gKGRpZSBE
YXRlaSBibGVpYnQgaW0gTWVkaWVuLU9yZG5lcik8L2xpPgogICAgICAgICAgICAgICAgPC91bD4K
CiAgICAgICAgICAgICAgICA8aDM+V2Vya3pldWdsZWlzdGU8L2gzPgogICAgICAgICAgICAgICAg
PHVsPgogICAgICAgICAgICAgICAgICAgIDxsaT48c3Ryb25nPlLDvGNrZ8OkbmdpZyAvIFdpZWRl
cmhvbGVuOjwvc3Ryb25nPiDihrYgLyDihrc8L2xpPgogICAgICAgICAgICAgICAgICAgIDxsaT48
c3Ryb25nPlRleHRmb3JtYXRpZXJ1bmc6PC9zdHJvbmc+IEZldHQgKEIpLCBLdXJzaXYgKEkpLCBV
bnRlcnN0cmljaGVuIChVKTwvbGk+CiAgICAgICAgICAgICAgICAgICAgPGxpPjxzdHJvbmc+TGlz
dGVuOjwvc3Ryb25nPiBBdWZ6w6RobHVuZyAo4oCiKSwgTnVtbWVyaWVydGUgTGlzdGUgKDEuKTwv
bGk+CiAgICAgICAgICAgICAgICAgICAgPGxpPjxzdHJvbmc+U2NocmlmdGdyw7bDn2U6PC9zdHJv
bmc+IDEy4oCTMjAgcHg8L2xpPgogICAgICAgICAgICAgICAgICAgIDxsaT48c3Ryb25nPlRleHRm
YXJiZTo8L3N0cm9uZz4gNiB2b3JkZWZpbmllcnRlIEZhcmJlbjwvbGk+CiAgICAgICAgICAgICAg
ICAgICAgPGxpPjxzdHJvbmc+QWtrb3JkZW9uOjwvc3Ryb25nPiBBdWZrbGFwcGJhcmUgVGV4dGJl
cmVpY2hlIOKAkyBpZGVhbCBmw7xyIGVyZ8OkbnplbmRlIEluZm9ybWF0aW9uZW4sIGRpZSBuaWNo
dCBzb2ZvcnQgc2ljaHRiYXIgc2VpbiBtw7xzc2VuPC9saT4KICAgICAgICAgICAgICAgICAgICA8
bGk+PHN0cm9uZz5GQVE6PC9zdHJvbmc+IEZyYWdlLUFudHdvcnQtQmVyZWljaGUg4oCTIG1laHJl
cmUgRnJhZ2VuIG1pdCBhdXNrbGFwcGJhcmVuIEFudHdvcnRlbiBpbiBlaW5lbSBCbG9jazwvbGk+
CiAgICAgICAgICAgICAgICAgICAgPGxpPjxzdHJvbmc+VGFiZWxsZTo8L3N0cm9uZz4gU29ydGll
cmJhcmUgVGFiZWxsZW4gbWl0IG9wdGlvbmFsZW4gU3BhbHRlbi0gdW5kIFplaWxlbsO8YmVyc2No
cmlmdGVuPC9saT4KICAgICAgICAgICAgICAgICAgICA8bGk+PHN0cm9uZz5BcnRpa2VscmVmZXJl
bnogKCMpOjwvc3Ryb25nPiBUaXBwZSA8a2JkPiM8L2tiZD4gaW0gVGV4dCwgdW0gYXVmIGVpbmVu
IGFuZGVyZW4gQXJ0aWtlbCB6dSB2ZXJsaW5rZW4g4oCTIG1pdCDDnGJlcnNjaHJpZnRlbi1BdXN3
YWhsIGFscyBTcHJ1bmd6aWVsPC9saT4KICAgICAgICAgICAgICAgICAgICA8bGk+PHN0cm9uZz5E
YXRlaTo8L3N0cm9uZz4gQmlsZGVyLCBQREZzLCBWaWRlb3MsIEF1ZGlvIHVuZCBPZmZpY2UtRGF0
ZWllbiBob2NobGFkZW4gdW5kIGltIEFydGlrZWwgZWluYmV0dGVuPC9saT4KICAgICAgICAgICAg
ICAgIDwvdWw+CgogICAgICAgICAgICAgICAgPGgzPkJlaXRyYWdzYXJ0PC9oMz4KICAgICAgICAg
ICAgICAgIDxwPkJlaW0gU3BlaWNoZXJuIGVpbmVzIGJlc3RlaGVuZGVuIERva3VtZW50cyB3aXJz
dCBkdSBuYWNoIGRlciBBcnQgZGVpbmVzIEJlaXRyYWdzIGdlZnJhZ3Q6PC9wPgogICAgICAgICAg
ICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgIDxsaT48c3Ryb25nPkF1dG9yOjwvc3Ryb25n
PiBTaWduaWZpa2FudGUgaW5oYWx0bGljaGUgRXJzdGVsbHVuZy48L2xpPgogICAgICAgICAgICAg
ICAgICAgIDxsaT48c3Ryb25nPlJlZGFrdGlvbjo8L3N0cm9uZz4gUmVjaHRzY2hyZWlidW5nLCBG
b3JtYXRpZXJ1bmcsIGtsZWluZXJlIEtvcnJla3R1cmVuLjwvbGk+CiAgICAgICAgICAgICAgICAg
ICAgPGxpPjxzdHJvbmc+UmV2aWV3Ojwvc3Ryb25nPiBGYWNobGljaGUgUHLDvGZ1bmcgdW5kIEFu
bWVya3VuZ2VuLjwvbGk+CiAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgPHA+
RGllc2UgQW5nYWJlbiBmbGllw59lbiBpbiBkaWUgTWl0d2lya2VuZGVuLUFuemVpZ2UgaW0gRG9r
dW1lbnQgZWluLjwvcD4KCiAgICAgICAgICAgICAgICA8aDIgaWQ9ImhlbHAtZGVsZXRlIj5Mw7Zz
Y2hlbiAmYW1wOyBQYXBpZXJrb3JiPC9oMj4KICAgICAgICAgICAgICAgIDxwPkJlaW0gTMO2c2No
ZW4gZWluZXMgRG9rdW1lbnRzIHdpcmQgZWluIEJlc3TDpHRpZ3VuZ3NkaWFsb2cgYW5nZXplaWd0
OjwvcD4KICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICA8bGk+RHUgbXVz
c3QgZGVpbmUgPHN0cm9uZz5OVy1LZW5udW5nPC9zdHJvbmc+IHp1ciBJZGVudGlmaWthdGlvbiBl
aW5nZWJlbi48L2xpPgogICAgICAgICAgICAgICAgICAgIDxsaT5EYXMgTMO2c2NoZXJlaWduaXMg
d2lyZCBwcm90b2tvbGxpZXJ0IChXZXIsIFdhbm4sIFdlbGNoZXMgRG9rdW1lbnQpLjwvbGk+CiAg
ICAgICAgICAgICAgICAgICAgPGxpPkdlbMO2c2NodGUgRG9rdW1lbnRlIHdlcmRlbiBpbiBkZW4g
PHN0cm9uZz5QYXBpZXJrb3JiPC9zdHJvbmc+IHZlcnNjaG9iZW4gdW5kIHNpbmQgPHN0cm9uZz4y
OCBUYWdlPC9zdHJvbmc+IGxhbmcgd2llZGVyaGVyc3RlbGxiYXIuPC9saT4KICAgICAgICAgICAg
ICAgIDwvdWw+CiAgICAgICAgICAgICAgICA8cD5HZWzDtnNjaHRlIERva3VtZW50ZSB3ZXJkZW4g
MjggVGFnZSBpbSBQYXBpZXJrb3JiIGF1ZmJld2FocnQgdW5kIGvDtm5uZW4gaW4gZGllc2VtIFpl
aXRyYXVtIHdpZWRlcmhlcmdlc3RlbGx0IHdlcmRlbi48L3A+CgogICAgICAgICAgICAgICAgPGgy
IGlkPSJoZWxwLXRoZW1lIj5UYWcvTmFjaHQtTW9kdXM8L2gyPgogICAgICAgICAgICAgICAgPHA+
S2xpY2tlIGF1ZiBkZW4gQnV0dG9uIG9iZW4gcmVjaHRzIGltIEhlYWRlciwgdW0gendpc2NoZW4g
aGVsbGVtIHVuZCBkdW5rbGVtIERlc2lnbiB6dSB3ZWNoc2Vsbi48L3A+CiAgICAgICAgICAgICAg
ICA8cD5EZWluZSBBdXN3YWhsIHdpcmQgaW0gQnJvd3NlciBnZXNwZWljaGVydCB1bmQgYmVpbSBu
w6RjaHN0ZW4gQmVzdWNoIGF1dG9tYXRpc2NoIHdpZWRlcmhlcmdlc3RlbGx0LjwvcD4KCiAgICAg
ICAgICAgICAgICA8aDM+RGlhbG9nZmVuc3RlciBzY2hsaWXDn2VuPC9oMz4KICAgICAgICAgICAg
ICAgIDxwPkRpZSBtZWlzdGVuIERpYWxvZ2ZlbnN0ZXIgKEhpbGZlLCBWZXJzaW9uc2hpc3Rvcmll
LCBGcmVpZ2FiZXZlcmFudHdvcnRsaWNoZSkga8O2bm5lbiBkdXJjaCBlaW5lbiBLbGljayBhdWYg
ZGVuIEJlcmVpY2ggYXXDn2VyaGFsYiBkZXMgRGlhbG9ncyBnZXNjaGxvc3NlbiB3ZXJkZW4uIERp
YWxvZ2UgbWl0IEVpbmdhYmVmZWxkZXJuIChFZGl0b3IsIEzDtnNjaGJlc3TDpHRpZ3VuZykgZXJm
b3JkZXJuIGV4cGxpeml0ZXMgU3BlaWNoZXJuIG9kZXIgQWJicmVjaGVuLjwvcD4KCiAgICAgICAg
ICAgICAgICA8aDIgaWQ9ImhlbHAtc2hvcnRjdXRzIj5UYXN0ZW5rw7xyemVsPC9oMj4KICAgICAg
ICAgICAgICAgIDxoMz5JbSBFZGl0b3I8L2gzPgogICAgICAgICAgICAgICAgPHVsPgogICAgICAg
ICAgICAgICAgICAgIDxsaT48a2JkPlN0cmc8L2tiZD4rPGtiZD5aPC9rYmQ+IOKAkyBSw7xja2fD
pG5naWc8L2xpPgogICAgICAgICAgICAgICAgICAgIDxsaT48a2JkPlN0cmc8L2tiZD4rPGtiZD5Z
PC9rYmQ+IC8gPGtiZD5TdHJnPC9rYmQ+KzxrYmQ+U2hpZnQ8L2tiZD4rPGtiZD5aPC9rYmQ+IOKA
kyBXaWVkZXJob2xlbjwvbGk+CiAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAg
PGgzPlNjaGxhZ3fDtnJ0ZXItRWluZ2FiZTwvaDM+CiAgICAgICAgICAgICAgICA8dWw+CiAgICAg
ICAgICAgICAgICAgICAgPGxpPjxrYmQ+RW50ZXI8L2tiZD4gb2RlciA8a2JkPiw8L2tiZD4g4oCT
IFNjaGxhZ3dvcnQgaGluenVmw7xnZW48L2xpPgogICAgICAgICAgICAgICAgICAgIDxsaT48a2Jk
PkJhY2tzcGFjZTwva2JkPiAoYmVpIGxlZXJlbSBGZWxkKSDigJMgTGV0enRlcyBTY2hsYWd3b3J0
IGVudGZlcm5lbjwvbGk+CiAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgPGgz
PkFsbGdlbWVpbjwvaDM+CiAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAg
PGxpPjxrYmQ+RXNjPC9rYmQ+IOKAkyBNZWRpZW4tVm9sbGFuc2ljaHQgc2NobGllw59lbjwvbGk+
CiAgICAgICAgICAgICAgICA8L3VsPgoKICAgICAgICAgICAgICAgIDxoMiBpZD0iaGVscC12ZXJz
aW9uIj5WZXJzaW9uc2hpc3RvcmllPC9oMj4KICAgICAgICAgICAgICAgIDxwPktsaWNrZSBhdWYg
ZGllIFZlcnNpb25zbnVtbWVyICh6LiBCLiA8c3Ryb25nPnYxLjA8L3N0cm9uZz4pIGltIEZvb3Rl
ciwgdW0gZGllIHZvbGxzdMOkbmRpZ2UgVmVyc2lvbnNoaXN0b3JpZSBhbnp1emVpZ2VuLjwvcD4K
ICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICA8bGk+PHN0cm9uZz52MS4w
PC9zdHJvbmc+IOKAkyBPZmZpemllbGxlIMOcYmVyZ2FiZTogTGVzZW1vZHVzLCBFZGl0b3ItS29t
cG9uZW50ZW4sIFZlcnNpb25pZXJ1bmcsIEFkbWluLUFubGVpdHVuZzwvbGk+CiAgICAgICAgICAg
ICAgICAgICAgPGxpPjxzdHJvbmc+djAuOTwvc3Ryb25nPiDigJMgQ3Jvc3NsaW5rcywgUmV2aXNp
b25zaGlzdG9yaWUsIFNjaGxhZ3dvcnQtVmVyd2FsdHVuZzwvbGk+CiAgICAgICAgICAgICAgICAg
ICAgPGxpPjxzdHJvbmc+djAuODwvc3Ryb25nPiDigJMgUmV2aWV3LVdvcmtmbG93LCBUYWctL05h
Y2h0LU1vZHVzPC9saT4KICAgICAgICAgICAgICAgICAgICA8bGk+PHN0cm9uZz52MC43PC9zdHJv
bmc+IOKAkyBHb3Zlcm5hbmNlLCBMb2NraW5nLCBWZXJzY2hsw7xzc2VsdW5nLCBTdGF0aXN0aWs8
L2xpPgogICAgICAgICAgICAgICAgICAgIDxsaT48c3Ryb25nPnYwLjY8L3N0cm9uZz4g4oCTIEZy
ZWlnYWJlLVdvcmtmbG93LCBNZWRpZW4tVXBsb2FkPC9saT4KICAgICAgICAgICAgICAgICAgICA8
bGk+PHN0cm9uZz52MC41PC9zdHJvbmc+IOKAkyBXWVNJV1lHLUVkaXRvciwgVW50ZXJhcnRpa2Vs
PC9saT4KICAgICAgICAgICAgICAgICAgICA8bGk+PHN0cm9uZz52MC40PC9zdHJvbmc+IOKAkyBT
aW5nbGUtRmlsZS1BcHAsIFBvd2VyU2hlbGwtU2VydmVyPC9saT4KICAgICAgICAgICAgICAgICAg
ICA8bGk+PHN0cm9uZz52MC4xPC9zdHJvbmc+IOKAkyBFcnN0ZXIgUHJvdG90eXA8L2xpPgogICAg
ICAgICAgICAgICAgPC91bD4KCiAgICAgICAgICAgICAgICA8aDIgaWQ9ImhlbHAtY29udGFjdCI+
RnJhZ2VuIHVuZCBVbnRlcnN0w7x0enVuZzwvaDI+CiAgICAgICAgICAgICAgICA8cD5CZWkgPHN0
cm9uZz50ZWNobmlzY2hlbiBQcm9ibGVtZW48L3N0cm9uZz4gKEZlaGxlcm1lbGR1bmdlbiwgRGFy
c3RlbGx1bmdzZmVobGVyLCBBYnN0w7xyemUpIHN0ZWh0IGRlciB0ZWNobmlzY2hlIFN1cHBvcnQg
w7xiZXIgZGFzIFZlcndhbHR1bmdzcGFuZWwgenVyIFZlcmbDvGd1bmcuPC9wPgogICAgICAgICAg
ICAgICAgPHAgc3R5bGU9Im1hcmdpbi10b3A6OHB4OyI+QmVpIEZyYWdlbiBydW5kIHVtIGRlbiA8
c3Ryb25nPkVyc3RlbGx1bmdzcHJvemVzcywgRnJlaWdhYmUtV29ya2Zsb3cgb2RlciBpbmhhbHRs
aWNoZSBUaGVtZW48L3N0cm9uZz4gd2VuZGUgZGljaCBiaXR0ZSBhbiBkaWUgZsO8ciBkZWluZSBL
YXRlZ29yaWUgenVzdMOkbmRpZ2VuIDxzdHJvbmc+RnJlaWdhYmV2ZXJhbnR3b3J0bGljaGVuPC9z
dHJvbmc+IG9kZXIgZGllIDxzdHJvbmc+RmFjaGF1ZnNpY2h0PC9zdHJvbmc+LiBEdSBmaW5kZXN0
IGRpZSBadXN0w6RuZGlna2VpdGVuIMO8YmVyIGRlbiBMaW5rIOKAnkZyZWlnYWJldmVyYW50d29y
dGxpY2hlIiBpbSBGb290ZXIuPC9wPgoKICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwv
ZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+Cgo8IS0tIFN0YXRpc2NoZXIgSW5kZXggZnVl
ciBmaWxlOi8vIExlc2Vtb2R1cyAod2lyZCB2b20gU2VydmVyIGF1dG9tYXRpc2NoIGFrdHVhbGlz
aWVydCkgLS0+CjxzY3JpcHQgc3JjPSJkYXRhL2luZGV4LmpzIiBvbmVycm9yPSIiPjwvc2NyaXB0
PgoKPHNjcmlwdD4KLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLy8gRC5SLkkuVi5FLiBQb3J0YWwg
djEuMCAtIEtvbXBsZXR0ZSBBcHAtTG9naWsKLy8gRmlsZSBTeXN0ZW0gQWNjZXNzIEFQSSArIEpT
T04tYmFzaWVydGUgRG9rdW1lbnRlbnZlcndhbHR1bmcKLy8gPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
Ci8vID09PT09PT09PT09PT09PT09PT09PSBUSEVNRSBUT0dHTEUgPT09PT09PT09PT09PT09PT09
PT09CgpmdW5jdGlvbiB0b2dnbGVUaGVtZSgpIHsKICAgIGNvbnN0IGN1cnJlbnQgPSBkb2N1bWVu
dC5kb2N1bWVudEVsZW1lbnQuZ2V0QXR0cmlidXRlKCdkYXRhLXRoZW1lJyk7CiAgICBjb25zdCBu
ZXh0ID0gY3VycmVudCA9PT0gJ25pZ2h0JyA/ICdkYXknIDogJ25pZ2h0JzsKICAgIGRvY3VtZW50
LmRvY3VtZW50RWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2RhdGEtdGhlbWUnLCBuZXh0KTsKICAgIHRy
eSB7IGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdkcml2ZS10aGVtZScsIG5leHQpOyB9IGNhdGNoKGUp
IHt9Cn0KCihmdW5jdGlvbiBpbml0VGhlbWUoKSB7CiAgICB2YXIgc2F2ZWQgPSBudWxsOwogICAg
dHJ5IHsgc2F2ZWQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZHJpdmUtdGhlbWUnKTsgfSBjYXRj
aChlKSB7fQogICAgaWYgKHNhdmVkID09PSAnbmlnaHQnKSB7CiAgICAgICAgZG9jdW1lbnQuZG9j
dW1lbnRFbGVtZW50LnNldEF0dHJpYnV0ZSgnZGF0YS10aGVtZScsICduaWdodCcpOwogICAgfQp9
KSgpOwoKLy8gPT09PT09PT09PT09PT09PT09PT09IEhJTEZFLU1PREFMID09PT09PT09PT09PT09
PT09PT09PQoKdmFyIF9oZWxwT3JpZ2luYWxDb250ZW50ID0gJyc7CgpmdW5jdGlvbiBzaG93SGVs
cCgpIHsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdoZWxwTW9kYWwnKS5jbGFzc0xpc3Qu
YWRkKCdhY3RpdmUnKTsKICAgIHZhciBib2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2hl
bHBCb2R5Jyk7CiAgICBib2R5LnNjcm9sbFRvcCA9IDA7CiAgICBib2R5LmNvbnRlbnRFZGl0YWJs
ZSA9ICdmYWxzZSc7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaGVscEVkaXRCYXInKS5j
bGFzc0xpc3QucmVtb3ZlKCdhY3RpdmUnKTsKICAgIC8vIEVkaXQtQnV0dG9uIG51ciBmdWVyIFN1
cGVyVXNlciBpbSBTZXJ2ZXItTW9kdXMgYW56ZWlnZW4KICAgIHZhciBlZGl0QnRuID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2hlbHBFZGl0QnRuJyk7CiAgICB2YXIgY2FuRWRpdCA9IGZhbHNl
OwogICAgdHJ5IHsgY2FuRWRpdCA9IERyaXZlRlMubW9kZSA9PT0gJ3NlcnZlcicgJiYgRHJpdmVH
b3Zlcm5hbmNlLmlzU3VwZXJVc2VyKCk7IH0gY2F0Y2goZSkge30KICAgIGVkaXRCdG4uc3R5bGUu
ZGlzcGxheSA9IGNhbkVkaXQgPyAnYmxvY2snIDogJ25vbmUnOwogICAgX3VwZGF0ZUhlbHBUb2NB
Y3RpdmUoKTsKICAgIGJvZHkub25zY3JvbGwgPSBfdXBkYXRlSGVscFRvY0FjdGl2ZTsKfQoKZnVu
Y3Rpb24gY2xvc2VIZWxwKCkgewogICAgdmFyIGJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnaGVscEJvZHknKTsKICAgIGJvZHkuY29udGVudEVkaXRhYmxlID0gJ2ZhbHNlJzsKICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdoZWxwRWRpdEJhcicpLmNsYXNzTGlzdC5yZW1vdmUoJ2Fj
dGl2ZScpOwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2hlbHBNb2RhbCcpLmNsYXNzTGlz
dC5yZW1vdmUoJ2FjdGl2ZScpOwp9CgpmdW5jdGlvbiBzdGFydEVkaXRIZWxwKCkgewogICAgdmFy
IGJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaGVscEJvZHknKTsKICAgIF9oZWxwT3Jp
Z2luYWxDb250ZW50ID0gYm9keS5pbm5lckhUTUw7CiAgICBib2R5LmNvbnRlbnRFZGl0YWJsZSA9
ICd0cnVlJzsKICAgIGJvZHkuZm9jdXMoKTsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdo
ZWxwRWRpdEJhcicpLmNsYXNzTGlzdC5hZGQoJ2FjdGl2ZScpOwogICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2hlbHBFZGl0QnRuJykuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKfQoKZnVuY3Rp
b24gY2FuY2VsRWRpdEhlbHAoKSB7CiAgICB2YXIgYm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdoZWxwQm9keScpOwogICAgYm9keS5pbm5lckhUTUwgPSBfaGVscE9yaWdpbmFsQ29udGVu
dDsKICAgIGJvZHkuY29udGVudEVkaXRhYmxlID0gJ2ZhbHNlJzsKICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdoZWxwRWRpdEJhcicpLmNsYXNzTGlzdC5yZW1vdmUoJ2FjdGl2ZScpOwogICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2hlbHBFZGl0QnRuJykuc3R5bGUuZGlzcGxheSA9ICcn
OwogICAgc2hvd1RvYXN0KCdCZWFyYmVpdHVuZyBhYmdlYnJvY2hlbicsICdpbmZvJyk7Cn0KCmZ1
bmN0aW9uIHNhdmVFZGl0SGVscCgpIHsKICAgIHZhciBib2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2hlbHBCb2R5Jyk7CiAgICB2YXIgY29udGVudCA9IGJvZHkuaW5uZXJIVE1MOwogICAg
Ym9keS5jb250ZW50RWRpdGFibGUgPSAnZmFsc2UnOwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2hlbHBFZGl0QmFyJykuY2xhc3NMaXN0LnJlbW92ZSgnYWN0aXZlJyk7CiAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnaGVscEVkaXRCdG4nKS5zdHlsZS5kaXNwbGF5ID0gJyc7CiAgICAv
LyBQZXJzaXN0aWVyZW4KICAgIERyaXZlR292ZXJuYW5jZS5zYXZlSGVscENvbnRlbnQoKTsKICAg
IC8vIFRPQyBha3R1YWxpc2llcmVuIGJhc2llcmVuZCBhdWYgZGVuIGgyL2gzIElEcwogICAgX3Jl
YnVpbGRIZWxwVG9jKCk7CiAgICBzaG93VG9hc3QoJ0hpbGZlLUluaGFsdCBnZXNwZWljaGVydCcs
ICdzdWNjZXNzJyk7Cn0KCmZ1bmN0aW9uIF9yZWJ1aWxkSGVscFRvYygpIHsKICAgIHZhciBib2R5
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2hlbHBCb2R5Jyk7CiAgICB2YXIgdG9jID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2hlbHBUb2MnKTsKICAgIHZhciBoZWFkaW5ncyA9IGJvZHku
cXVlcnlTZWxlY3RvckFsbCgnaDJbaWRdLCBoM1tpZF0nKTsKICAgIHZhciBodG1sID0gJzxkaXYg
Y2xhc3M9ImhlbHAtdG9jLXRpdGxlIj5IaWxmZSAmYW1wOyBBbmxlaXR1bmc8L2Rpdj4nOwogICAg
aGVhZGluZ3MuZm9yRWFjaChmdW5jdGlvbihoKSB7CiAgICAgICAgdmFyIGlzU3ViID0gaC50YWdO
YW1lID09PSAnSDMnOwogICAgICAgIHZhciBzYWZlSWQgPSBoLmlkLnJlcGxhY2UoL1teYS16QS1a
MC05XC1fXS9nLCAnJyk7CiAgICAgICAgaHRtbCArPSAnPGEgaHJlZj0iIycgKyBzYWZlSWQgKyAn
IiBkYXRhLXNlY3Rpb249IicgKyBzYWZlSWQgKyAnIicgKyAoaXNTdWIgPyAnIGNsYXNzPSJzdWIi
JyA6ICcnKSArICc+JyArIGgudGV4dENvbnRlbnQgKyAnPC9hPic7CiAgICB9KTsKICAgIHRvYy5p
bm5lckhUTUwgPSBodG1sOwp9CgpmdW5jdGlvbiBfdXBkYXRlSGVscFRvY0FjdGl2ZSgpIHsKICAg
IHZhciBib2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2hlbHBCb2R5Jyk7CiAgICB2YXIg
c2VjdGlvbnMgPSBib2R5LnF1ZXJ5U2VsZWN0b3JBbGwoJ2gyW2lkXSwgaDNbaWRdJyk7CiAgICB2
YXIgc2Nyb2xsVG9wID0gYm9keS5zY3JvbGxUb3AgKyA0MDsKICAgIHZhciBhY3RpdmVJZCA9ICcn
OwogICAgc2VjdGlvbnMuZm9yRWFjaChmdW5jdGlvbihzKSB7CiAgICAgICAgaWYgKHMub2Zmc2V0
VG9wIDw9IHNjcm9sbFRvcCkgYWN0aXZlSWQgPSBzLmlkOwogICAgfSk7CiAgICBkb2N1bWVudC5x
dWVyeVNlbGVjdG9yQWxsKCcjaGVscFRvYyBhJykuZm9yRWFjaChmdW5jdGlvbihhKSB7CiAgICAg
ICAgYS5jbGFzc0xpc3QudG9nZ2xlKCdhY3RpdmUnLCBhLmdldEF0dHJpYnV0ZSgnZGF0YS1zZWN0
aW9uJykgPT09IGFjdGl2ZUlkKTsKICAgIH0pOwp9CgovLyBUT0MtS2xpY2tzOiBzbW9vdGggc2Ny
b2xsIGltIGhlbHAtYm9keQpkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0
aW9uKGUpIHsKICAgIHZhciBsaW5rID0gZS50YXJnZXQuY2xvc2VzdCgnI2hlbHBUb2MgYScpOwog
ICAgaWYgKCFsaW5rKSByZXR1cm47CiAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICB2YXIgdGFy
Z2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQobGluay5nZXRBdHRyaWJ1dGUoJ2RhdGEtc2Vj
dGlvbicpKTsKICAgIGlmICh0YXJnZXQpIHsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnaGVscEJvZHknKS5zY3JvbGxUbyh7IHRvcDogdGFyZ2V0Lm9mZnNldFRvcCAtIDIwLCBiZWhh
dmlvcjogJ3Ntb290aCcgfSk7CiAgICB9Cn0pOwoKLy8gPT09PT09PT09PT09PT09PT09PT09IFZF
UlNJT04gSElTVE9SWSA9PT09PT09PT09PT09PT09PT09PT0KCmZ1bmN0aW9uIHNob3dWZXJzaW9u
SGlzdG9yeSgpIHsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd2ZXJzaW9uTW9kYWwnKS5j
bGFzc0xpc3QuYWRkKCdhY3RpdmUnKTsKfQoKZnVuY3Rpb24gY2xvc2VWZXJzaW9uSGlzdG9yeSgp
IHsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd2ZXJzaW9uTW9kYWwnKS5jbGFzc0xpc3Qu
cmVtb3ZlKCdhY3RpdmUnKTsKfQoKLy8gPT09PT09PT09PT09PT09PT09PT09IFRPQVNUIE5PVElG
SUNBVElPTlMgPT09PT09PT09PT09PT09PT09PT09CgovLyBEYXR1bS9aZWl0LUZvcm1hdGllcnVu
ZzogSVNPIC0+IGRldXRzY2hlcyBGb3JtYXQKZnVuY3Rpb24gZm9ybWF0RGF0ZShpc29TdHIpIHsK
ICAgIGlmICghaXNvU3RyIHx8IGlzb1N0ciA9PT0gJy0nKSByZXR1cm4gJy0nOwogICAgLy8gIjIw
MjYtMDMtMjYiIG9kZXIgIjIwMjYtMDMtMjZUMTk6MjY6NTIuMDAwWiIKICAgIHZhciBwYXJ0cyA9
IGlzb1N0ci5zcGxpdCgnVCcpWzBdLnNwbGl0KCctJyk7CiAgICBpZiAocGFydHMubGVuZ3RoICE9
PSAzKSByZXR1cm4gaXNvU3RyOwogICAgcmV0dXJuIHBhcnRzWzJdICsgJy4nICsgcGFydHNbMV0g
KyAnLicgKyBwYXJ0c1swXTsKfQpmdW5jdGlvbiBmb3JtYXREYXRlVGltZShpc29TdHIpIHsKICAg
IGlmICghaXNvU3RyIHx8IGlzb1N0ciA9PT0gJy0nKSByZXR1cm4gJy0nOwogICAgdmFyIGQgPSBu
ZXcgRGF0ZShpc29TdHIpOwogICAgaWYgKGlzTmFOKGQuZ2V0VGltZSgpKSkgcmV0dXJuIGlzb1N0
cjsKICAgIHJldHVybiBkLnRvTG9jYWxlRGF0ZVN0cmluZygnZGUtREUnLCB7ZGF5OicyLWRpZ2l0
Jyxtb250aDonMi1kaWdpdCcseWVhcjonbnVtZXJpYyd9KSArCiAgICAgICAgJyAnICsgZC50b0xv
Y2FsZVRpbWVTdHJpbmcoJ2RlLURFJywge2hvdXI6JzItZGlnaXQnLG1pbnV0ZTonMi1kaWdpdCd9
KTsKfQoKLy8gQXV0b21hdGlzY2hlIEFydGlrZWx2ZXJzaW9uaWVydW5nIChTZW1hbnRpYyBWZXJz
aW9uaW5nKQovLyBNYWpvciA9IEZyZWlnYWJlenlrbGVuICh2MC54ID0gbmllIGZyZWlnZWdlYmVu
LCB2MS54ID0gZWlubWFsLCB2Mi54ID0gendlaW1hbCwgLi4uKQovLyBNaW5vciA9IEJlYXJiZWl0
dW5nZW4gaW5uZXJoYWxiIGVpbmVzIFp5a2x1cyAoKzAuMSBwcm8gU3BlaWNoZXJ1bmcpCi8vIEZy
ZWlnYWJlID0gbmFlY2hzdGUgdm9sbGUgVmVyc2lvbiAodjEuMCwgdjIuMCwgLi4uKQpmdW5jdGlv
biBjYWxjdWxhdGVWZXJzaW9uKGRvYywgb2xkSW5oYWx0LCBuZXdJbmhhbHQsIG5ld1N0YXR1cykg
ewogICAgdmFyIGN1cnJlbnQgPSBwYXJzZVZlcnNpb24oZG9jLnZlcnNpb24pOwoKICAgIC8vIEZy
ZWlnYWJlOiBTcHJ1bmcgYXVmIG5hZWNoc3RlIHZvbGxlIFZlcnNpb24gKG1pbmQuIHYxLjApCiAg
ICAvLyBHaWx0IGF1Y2ggZnVlciBuZXVlIEFydGlrZWwgZGllIGRpcmVrdCBmcmVpZ2VnZWJlbiB3
ZXJkZW4gKHYwLjEgLT4gdjEuMCkKICAgIGlmIChuZXdTdGF0dXMgPT09ICdGcmVpZ2VnZWJlbicg
JiYgZG9jLnN0YXR1cyAhPT0gJ0ZyZWlnZWdlYmVuJykgewogICAgICAgIHJldHVybiAndicgKyBN
YXRoLm1heCgxLCBjdXJyZW50Lm1ham9yICsgMSkgKyAnLjAnOwogICAgfQoKICAgIC8vIE5ldWVz
IERva3VtZW50IChFbnR3dXJmKTogYmxlaWJ0IHYwLjEKICAgIGlmICghZG9jLnZlcnNpb24gfHwg
ZG9jLnZlcnNpb24gPT09ICd2MC4xJykgcmV0dXJuICd2MC4xJzsKCiAgICAvLyBBYmxlaG51bmc6
IFZlcnNpb24gYmxlaWJ0CiAgICBpZiAobmV3U3RhdHVzID09PSAnQWJnZWxlaG50JykgcmV0dXJu
IGRvYy52ZXJzaW9uOwoKICAgIC8vIEluaGFsdCBnZWFlbmRlcnQ6ICswLjEKICAgIGlmIChvbGRJ
bmhhbHQgJiYgbmV3SW5oYWx0ICYmIG9sZEluaGFsdCAhPT0gbmV3SW5oYWx0KSB7CiAgICAgICAg
cmV0dXJuICd2JyArIGN1cnJlbnQubWFqb3IgKyAnLicgKyAoY3VycmVudC5taW5vciArIDEpOwog
ICAgfQoKICAgIHJldHVybiBkb2MudmVyc2lvbjsKfQoKZnVuY3Rpb24gcGFyc2VWZXJzaW9uKHYp
IHsKICAgIGlmICghdikgcmV0dXJuIHsgbWFqb3I6IDAsIG1pbm9yOiAxIH07CiAgICB2YXIgbSA9
IHYucmVwbGFjZSgndicsICcnKS5zcGxpdCgnLicpOwogICAgcmV0dXJuIHsgbWFqb3I6IHBhcnNl
SW50KG1bMF0pIHx8IDAsIG1pbm9yOiBwYXJzZUludChtWzFdKSB8fCAwIH07Cn0KCi8vIFZlcnNp
b25zaW50ZWdyaXRhZXRzcHJ1ZWZ1bmc6IFN0ZWxsdCBzaWNoZXIsIGRhc3MgZGllIFZlcnNpb24g
enVtIFN0YXR1cyBwYXNzdC4KLy8gV2lyZCBiZWltIExhZGVuIGplZGVzIERva3VtZW50cyBhdWZn
ZXJ1ZmVuIHVuZCBrb3JyaWdpZXJ0IElua29uc2lzdGVuemVuLgovLyBSZWdlbG46Ci8vICAgRW50
d3VyZi9QcnVlZnVuZzogdjAueCAobWluZC4gdjAuMSkKLy8gICBGcmVpZ2VnZWJlbjogICAgICB2
MS4wKyAoTWFqb3IgPj0gMSkKLy8gICBBYmdlbGVobnQ6ICAgICAgICB1bnZlcmFlbmRlcnQKLy8g
R2lidCB0cnVlIHp1cnVlY2sgd2VubiBkaWUgVmVyc2lvbiBrb3JyaWdpZXJ0IHd1cmRlLgpmdW5j
dGlvbiBlbnN1cmVDb3JyZWN0VmVyc2lvbihkb2MpIHsKICAgIGlmICghZG9jIHx8ICFkb2Muc3Rh
dHVzKSByZXR1cm4gZmFsc2U7CiAgICB2YXIgdiA9IHBhcnNlVmVyc2lvbihkb2MudmVyc2lvbik7
CiAgICB2YXIgc3RhdHVzID0gZG9jLnN0YXR1czsKICAgIHZhciBjaGFuZ2VkID0gZmFsc2U7Cgog
ICAgaWYgKHN0YXR1cyA9PT0gJ0ZyZWlnZWdlYmVuJyAmJiB2Lm1ham9yIDwgMSkgewogICAgICAg
IC8vIEZyZWlnZWdlYmVuZXIgQXJ0aWtlbCBtdXNzIG1pbmRlc3RlbnMgdjEuMCBzZWluCiAgICAg
ICAgZG9jLnZlcnNpb24gPSAndjEuMCc7CiAgICAgICAgY2hhbmdlZCA9IHRydWU7CiAgICB9IGVs
c2UgaWYgKChzdGF0dXMgPT09ICdFbnR3dXJmJyB8fCBzdGF0dXMgPT09ICdQcsO8ZnVuZycpICYm
ICFkb2MudmVyc2lvbikgewogICAgICAgIC8vIEVudHd1cmYvUHJ1ZWZ1bmcgb2huZSBWZXJzaW9u
OiB2MC4xCiAgICAgICAgZG9jLnZlcnNpb24gPSAndjAuMSc7CiAgICAgICAgY2hhbmdlZCA9IHRy
dWU7CiAgICB9CgogICAgcmV0dXJuIGNoYW5nZWQ7Cn0KCmZ1bmN0aW9uIHNob3dWZXJzaW9uTG9n
aWMoKSB7CiAgICB2YXIgbW9kYWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAg
IG1vZGFsLnN0eWxlLmNzc1RleHQgPSAncG9zaXRpb246Zml4ZWQ7dG9wOjA7bGVmdDowO3dpZHRo
OjEwMCU7aGVpZ2h0OjEwMCU7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLDAuNSk7ei1pbmRleDoxMDAw
MDtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7
JzsKICAgIG1vZGFsLm9uY2xpY2sgPSBmdW5jdGlvbihlKSB7IGlmIChlLnRhcmdldCA9PT0gbW9k
YWwpIG1vZGFsLnJlbW92ZSgpOyB9OwogICAgbW9kYWwuaW5uZXJIVE1MID0KICAgICAgICAnPGRp
diBzdHlsZT0iYmFja2dyb3VuZDp2YXIoLS1iZy1jYXJkKTtib3JkZXItcmFkaXVzOjEwcHg7cGFk
ZGluZzoyNHB4IDI4cHg7bWF4LXdpZHRoOjQ4MHB4O3dpZHRoOjkwJTtib3gtc2hhZG93OjAgOHB4
IDMycHggcmdiYSgwLDAsMCwwLjMpOyI+JyArCiAgICAgICAgICAgICc8aDIgc3R5bGU9ImNvbG9y
OnZhcigtLXRleHQtaGVhZGluZyk7bWFyZ2luLWJvdHRvbToxNHB4O2ZvbnQtc2l6ZToxN3B4OyI+
QXV0b21hdGlzY2hlIFZlcnNpb25pZXJ1bmc8L2gyPicgKwogICAgICAgICAgICAnPHAgc3R5bGU9
ImNvbG9yOnZhcigtLXRleHQtcHJpbWFyeSk7Zm9udC1zaXplOjEzcHg7bGluZS1oZWlnaHQ6MS43
O21hcmdpbi1ib3R0b206MTRweDsiPicgKwogICAgICAgICAgICAgICAgJ0RpZSBWZXJzaW9uIHpl
aWd0IGRpciBhdWYgZWluZW4gQmxpY2ssIHdpZSBvZnQgZWluIEFydGlrZWwgYmVhcmJlaXRldCB1
bmQgZnJlaWdlZ2ViZW4gd3VyZGUuJyArCiAgICAgICAgICAgICc8L3A+JyArCiAgICAgICAgICAg
ICc8dGFibGUgc3R5bGU9IndpZHRoOjEwMCU7Ym9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlO2ZvbnQt
c2l6ZToxM3B4O21hcmdpbi1ib3R0b206MTRweDsiPicgKwogICAgICAgICAgICAgICAgJzx0ciBz
dHlsZT0iYm9yZGVyLWJvdHRvbToycHggc29saWQgdmFyKC0tYm9yZGVyLWxpZ2h0KTsiPicgKwog
ICAgICAgICAgICAgICAgICAgICc8dGggc3R5bGU9InRleHQtYWxpZ246bGVmdDtwYWRkaW5nOjhw
eDtjb2xvcjp2YXIoLS10ZXh0LWhlYWRpbmcpOyI+VmVyc2lvbjwvdGg+JyArCiAgICAgICAgICAg
ICAgICAgICAgJzx0aCBzdHlsZT0idGV4dC1hbGlnbjpsZWZ0O3BhZGRpbmc6OHB4O2NvbG9yOnZh
cigtLXRleHQtaGVhZGluZyk7Ij5CZWRldXR1bmc8L3RoPicgKwogICAgICAgICAgICAgICAgJzwv
dHI+JyArCiAgICAgICAgICAgICAgICAnPHRyIHN0eWxlPSJib3JkZXItYm90dG9tOjFweCBzb2xp
ZCB2YXIoLS1ib3JkZXItbGlnaHQpOyI+JyArCiAgICAgICAgICAgICAgICAgICAgJzx0ZCBzdHls
ZT0icGFkZGluZzo4cHg7Zm9udC13ZWlnaHQ6NjAwOyI+djAuMTwvdGQ+JyArCiAgICAgICAgICAg
ICAgICAgICAgJzx0ZCBzdHlsZT0icGFkZGluZzo4cHg7Y29sb3I6dmFyKC0tdGV4dC1wcmltYXJ5
KTsiPkVyc3RlciBFbnR3dXJmPC90ZD4nICsKICAgICAgICAgICAgICAgICc8L3RyPicgKwogICAg
ICAgICAgICAgICAgJzx0ciBzdHlsZT0iYm9yZGVyLWJvdHRvbToxcHggc29saWQgdmFyKC0tYm9y
ZGVyLWxpZ2h0KTsiPicgKwogICAgICAgICAgICAgICAgICAgICc8dGQgc3R5bGU9InBhZGRpbmc6
OHB4O2ZvbnQtd2VpZ2h0OjYwMDsiPnYwLjIsIHYwLjMsIC4uLjwvdGQ+JyArCiAgICAgICAgICAg
ICAgICAgICAgJzx0ZCBzdHlsZT0icGFkZGluZzo4cHg7Y29sb3I6dmFyKC0tdGV4dC1wcmltYXJ5
KTsiPkplZGUgQmVhcmJlaXR1bmcgaW0gRW50d3VyZjwvdGQ+JyArCiAgICAgICAgICAgICAgICAn
PC90cj4nICsKICAgICAgICAgICAgICAgICc8dHIgc3R5bGU9ImJvcmRlci1ib3R0b206MXB4IHNv
bGlkIHZhcigtLWJvcmRlci1saWdodCk7YmFja2dyb3VuZDp2YXIoLS1iZy1hY3RpdmUpOyI+JyAr
CiAgICAgICAgICAgICAgICAgICAgJzx0ZCBzdHlsZT0icGFkZGluZzo4cHg7Zm9udC13ZWlnaHQ6
NzAwO2NvbG9yOnZhcigtLXRleHQtaGVhZGluZyk7Ij52MS4wPC90ZD4nICsKICAgICAgICAgICAg
ICAgICAgICAnPHRkIHN0eWxlPSJwYWRkaW5nOjhweDtjb2xvcjp2YXIoLS10ZXh0LXByaW1hcnkp
O2ZvbnQtd2VpZ2h0OjYwMDsiPkVyc3RlIEZyZWlnYWJlPC90ZD4nICsKICAgICAgICAgICAgICAg
ICc8L3RyPicgKwogICAgICAgICAgICAgICAgJzx0ciBzdHlsZT0iYm9yZGVyLWJvdHRvbToxcHgg
c29saWQgdmFyKC0tYm9yZGVyLWxpZ2h0KTsiPicgKwogICAgICAgICAgICAgICAgICAgICc8dGQg
c3R5bGU9InBhZGRpbmc6OHB4O2ZvbnQtd2VpZ2h0OjYwMDsiPnYxLjEsIHYxLjIsIC4uLjwvdGQ+
JyArCiAgICAgICAgICAgICAgICAgICAgJzx0ZCBzdHlsZT0icGFkZGluZzo4cHg7Y29sb3I6dmFy
KC0tdGV4dC1wcmltYXJ5KTsiPsOcYmVyYXJiZWl0dW5nZW4gbmFjaCBGcmVpZ2FiZTwvdGQ+JyAr
CiAgICAgICAgICAgICAgICAnPC90cj4nICsKICAgICAgICAgICAgICAgICc8dHIgc3R5bGU9ImJh
Y2tncm91bmQ6dmFyKC0tYmctYWN0aXZlKTsiPicgKwogICAgICAgICAgICAgICAgICAgICc8dGQg
c3R5bGU9InBhZGRpbmc6OHB4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjp2YXIoLS10ZXh0LWhlYWRp
bmcpOyI+djIuMCwgdjMuMCwgLi4uPC90ZD4nICsKICAgICAgICAgICAgICAgICAgICAnPHRkIHN0
eWxlPSJwYWRkaW5nOjhweDtjb2xvcjp2YXIoLS10ZXh0LXByaW1hcnkpO2ZvbnQtd2VpZ2h0OjYw
MDsiPkplZGUgd2VpdGVyZSBGcmVpZ2FiZTwvdGQ+JyArCiAgICAgICAgICAgICAgICAnPC90cj4n
ICsKICAgICAgICAgICAgJzwvdGFibGU+JyArCiAgICAgICAgICAgICc8cCBzdHlsZT0iZm9udC1z
aXplOjEzcHg7Y29sb3I6dmFyKC0tdGV4dC1zZWNvbmRhcnkpO2xpbmUtaGVpZ2h0OjEuNzttYXJn
aW4tYm90dG9tOjZweDsiPicgKwogICAgICAgICAgICAgICAgJzxzdHJvbmc+U28gbGllc3QgZHUg
ZGllIFZlcnNpb246PC9zdHJvbmc+IERpZSBaYWhsIHZvciBkZW0gUHVua3QgemVpZ3QsIHdpZSBv
ZnQgZGVyIEFydGlrZWwgZnJlaWdlZ2ViZW4gd3VyZGUuIERpZSBaYWhsIG5hY2ggZGVtIFB1bmt0
IHplaWd0LCB3aWUgdmllbGUgQmVhcmJlaXR1bmdlbiBzZWl0IGRlciBsZXR6dGVuIEZyZWlnYWJl
IHN0YXR0ZmFuZGVuLicgKwogICAgICAgICAgICAnPC9wPicgKwogICAgICAgICAgICAnPHAgc3R5
bGU9ImZvbnQtc2l6ZToxMnB4O2NvbG9yOnZhcigtLXRleHQtbXV0ZWQpO2xpbmUtaGVpZ2h0OjEu
NjttYXJnaW4tdG9wOjhweDsiPicgKwogICAgICAgICAgICAgICAgJ0JlaXNwaWVsOiA8c3Ryb25n
PnYyLjU8L3N0cm9uZz4gPSB6d2VpbWFsIGZyZWlnZWdlYmVuLCBkYW5hY2ggNSB3ZWl0ZXJlIEJl
YXJiZWl0dW5nZW4uJyArCiAgICAgICAgICAgICc8L3A+JyArCiAgICAgICAgICAgICc8ZGl2IHN0
eWxlPSJ0ZXh0LWFsaWduOnJpZ2h0O21hcmdpbi10b3A6MTRweDsiPicgKwogICAgICAgICAgICAg
ICAgJzxidXR0b24gb25jbGljaz0idmFyIG09dGhpczt3aGlsZShtLnBhcmVudEVsZW1lbnQhPT1k
b2N1bWVudC5ib2R5KW09bS5wYXJlbnRFbGVtZW50O20ucmVtb3ZlKCk7IiBzdHlsZT0icGFkZGlu
Zzo4cHggMjBweDtib3JkZXItcmFkaXVzOjRweDtib3JkZXI6bm9uZTtiYWNrZ3JvdW5kOnZhcigt
LXRleHQtaGVhZGluZyk7Y29sb3I6d2hpdGU7Y3Vyc29yOnBvaW50ZXI7Zm9udC13ZWlnaHQ6NjAw
OyI+VmVyc3RhbmRlbjwvYnV0dG9uPicgKwogICAgICAgICAgICAnPC9kaXY+JyArCiAgICAgICAg
JzwvZGl2Pic7CiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKG1vZGFsKTsKfQoKZnVuY3Rp
b24gc2hvd1RvYXN0KG1lc3NhZ2UsIHR5cGUgPSAnaW5mbycsIGR1cmF0aW9uID0gMzAwMCkgewog
ICAgY29uc3QgdG9hc3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9hc3QnKTsKICAgIHRv
YXN0LnRleHRDb250ZW50ID0gbWVzc2FnZTsKICAgIHRvYXN0LmNsYXNzTmFtZSA9ICd0b2FzdCAn
ICsgdHlwZTsKICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB0b2FzdC5jbGFzc0xpc3Qu
YWRkKCdzaG93JykpOwogICAgY2xlYXJUaW1lb3V0KHRvYXN0Ll90aW1lb3V0KTsKICAgIHRvYXN0
Ll90aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB0b2FzdC5jbGFzc0xpc3QucmVtb3ZlKCdzaG93
JyksIGR1cmF0aW9uKTsKfQoKZnVuY3Rpb24gc2hvd0NvbnRhY3RGb3JtKCkgewogICAgdmFyIGlu
cHV0U3R5bGUgPSAnd2lkdGg6MTAwJTtwYWRkaW5nOjhweCAxMHB4O2JvcmRlcjoxcHggc29saWQg
dmFyKC0tYm9yZGVyLWNvbG9yKTtib3JkZXItcmFkaXVzOjRweDtmb250LXNpemU6MTRweDtiYWNr
Z3JvdW5kOnZhcigtLWJnLWlucHV0KTtjb2xvcjp2YXIoLS10ZXh0LXByaW1hcnkpOyc7CiAgICB2
YXIgdXNlcm5hbWUgPSAoRHJpdmVGUy5lbnZpcm9uICYmIERyaXZlRlMuZW52aXJvbi51c2VybmFt
ZSkgPyBEcml2ZUZTLmVudmlyb24udXNlcm5hbWUgOiAnJzsKICAgIHZhciBtb2RhbCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgbW9kYWwuc3R5bGUuY3NzVGV4dCA9ICdwb3Np
dGlvbjpmaXhlZDt0b3A6MDtsZWZ0OjA7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtiYWNrZ3JvdW5k
OnJnYmEoMCwwLDAsMC41KTt6LWluZGV4OjEwMDAwO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpj
ZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjsnOwogICAgbW9kYWwub25jbGljayA9IGZ1bmN0
aW9uKGUpIHsgaWYgKGUudGFyZ2V0ID09PSBtb2RhbCkgbW9kYWwucmVtb3ZlKCk7IH07CiAgICBt
b2RhbC5pbm5lckhUTUwgPQogICAgICAgICc8ZGl2IHN0eWxlPSJiYWNrZ3JvdW5kOnZhcigtLWJn
LWNhcmQpO2JvcmRlci1yYWRpdXM6MTBweDtwYWRkaW5nOjI0cHggMjhweDttYXgtd2lkdGg6NTIw
cHg7d2lkdGg6OTAlO2JveC1zaGFkb3c6MCA4cHggMzJweCByZ2JhKDAsMCwwLDAuMyk7Ij4nICsK
ICAgICAgICAgICAgJzxoMiBzdHlsZT0iY29sb3I6dmFyKC0tdGV4dC1oZWFkaW5nKTttYXJnaW4t
Ym90dG9tOjRweDtmb250LXNpemU6MTdweDsiPlRlY2huaXNjaGVyIFN1cHBvcnQ8L2gyPicgKwog
ICAgICAgICAgICAnPHAgc3R5bGU9ImNvbG9yOnZhcigtLXRleHQtbXV0ZWQpO2ZvbnQtc2l6ZTox
MnB4O21hcmdpbi1ib3R0b206MTRweDsiPkJlaSB0ZWNobmlzY2hlbiBQcm9ibGVtZW4gbWl0IGRl
bSBTeXN0ZW0gKEZlaGxlciwgQWJzdMO8cnplLCBEYXJzdGVsbHVuZ3Nwcm9ibGVtZSkga2FubnN0
IGR1IGhpZXIgZGVuIEVudHdpY2tsZXIga29udGFrdGllcmVuLiBEaWUgTmFjaHJpY2h0IHdpcmQg
w7xiZXIgZGVpbiBFLU1haWwtUHJvZ3JhbW0gZ2VzZW5kZXQuPC9wPicgKwogICAgICAgICAgICAn
PGRpdiBzdHlsZT0ibWFyZ2luLWJvdHRvbToxMHB4OyI+JyArCiAgICAgICAgICAgICAgICAnPGxh
YmVsIHN0eWxlPSJmb250LXNpemU6MTJweDtmb250LXdlaWdodDo2MDA7Y29sb3I6dmFyKC0tdGV4
dC1zZWNvbmRhcnkpO2Rpc3BsYXk6YmxvY2s7bWFyZ2luLWJvdHRvbTozcHg7Ij5CZXRyZWZmPC9s
YWJlbD4nICsKICAgICAgICAgICAgICAgICc8aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImNvbnRhY3RT
dWJqZWN0IiBwbGFjZWhvbGRlcj0iV29ydW0gZ2VodCBlcz8iIHN0eWxlPSInICsgaW5wdXRTdHls
ZSArICciIHZhbHVlPSJELlIuSS5WLkUuIOKAkyAiPicgKwogICAgICAgICAgICAnPC9kaXY+JyAr
CiAgICAgICAgICAgICc8ZGl2IHN0eWxlPSJtYXJnaW4tYm90dG9tOjE0cHg7Ij4nICsKICAgICAg
ICAgICAgICAgICc8bGFiZWwgc3R5bGU9ImZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjYwMDtj
b2xvcjp2YXIoLS10ZXh0LXNlY29uZGFyeSk7ZGlzcGxheTpibG9jazttYXJnaW4tYm90dG9tOjNw
eDsiPk5hY2hyaWNodDwvbGFiZWw+JyArCiAgICAgICAgICAgICAgICAnPHRleHRhcmVhIGlkPSJj
b250YWN0Qm9keSIgcm93cz0iNiIgcGxhY2Vob2xkZXI9IkJlc2NocmVpYmUgZGVpbiBBbmxpZWdl
bi4uLiIgc3R5bGU9IicgKyBpbnB1dFN0eWxlICsgJ3Jlc2l6ZTp2ZXJ0aWNhbDtsaW5lLWhlaWdo
dDoxLjY7Ij48L3RleHRhcmVhPicgKwogICAgICAgICAgICAnPC9kaXY+JyArCiAgICAgICAgICAg
ICc8ZGl2IHN0eWxlPSJkaXNwbGF5OmZsZXg7Z2FwOjhweDtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1l
bmQ7Ij4nICsKICAgICAgICAgICAgICAgICc8YnV0dG9uIG9uY2xpY2s9InRoaXMuY2xvc2VzdChc
J2RpdltzdHlsZV1cJykucGFyZW50RWxlbWVudC5yZW1vdmUoKSIgc3R5bGU9InBhZGRpbmc6OHB4
IDE2cHg7Ym9yZGVyLXJhZGl1czo0cHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXItY29s
b3IpO2JhY2tncm91bmQ6dmFyKC0tYmctY2FyZCk7Y29sb3I6dmFyKC0tdGV4dC1wcmltYXJ5KTtj
dXJzb3I6cG9pbnRlcjsiPkFiYnJlY2hlbjwvYnV0dG9uPicgKwogICAgICAgICAgICAgICAgJzxi
dXR0b24gb25jbGljaz0ic2VuZENvbnRhY3RNYWlsKCkiIHN0eWxlPSJwYWRkaW5nOjhweCAxNnB4
O2JvcmRlci1yYWRpdXM6NHB4O2JvcmRlcjpub25lO2JhY2tncm91bmQ6dmFyKC0tdGV4dC1oZWFk
aW5nKTtjb2xvcjp3aGl0ZTtjdXJzb3I6cG9pbnRlcjtmb250LXdlaWdodDo2MDA7Ij5BYnNlbmRl
bjwvYnV0dG9uPicgKwogICAgICAgICAgICAnPC9kaXY+JyArCiAgICAgICAgJzwvZGl2Pic7CiAg
ICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKG1vZGFsKTsKICAgIHNldFRpbWVvdXQoZnVuY3Rp
b24oKSB7IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250YWN0U3ViamVjdCcpLmZvY3VzKCk7
IH0sIDUwKTsKfQoKZnVuY3Rpb24gc2VuZENvbnRhY3RNYWlsKCkgewogICAgdmFyIHN1YmplY3Qg
PSAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRhY3RTdWJqZWN0JykudmFsdWUgfHwgJycp
LnRyaW0oKTsKICAgIHZhciBib2R5ID0gKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250YWN0
Qm9keScpLnZhbHVlIHx8ICcnKS50cmltKCk7CiAgICBpZiAoIXN1YmplY3QpIHsgc2hvd1RvYXN0
KCdCaXR0ZSBlaW5lbiBCZXRyZWZmIGVpbmdlYmVuJywgJ3dhcm5pbmcnKTsgcmV0dXJuOyB9CiAg
ICBpZiAoIWJvZHkpIHsgc2hvd1RvYXN0KCdCaXR0ZSBlaW5lIE5hY2hyaWNodCBlaW5nZWJlbics
ICd3YXJuaW5nJyk7IHJldHVybjsgfQogICAgdmFyIHVzZXJuYW1lID0gKERyaXZlRlMuZW52aXJv
biAmJiBEcml2ZUZTLmVudmlyb24udXNlcm5hbWUpID8gRHJpdmVGUy5lbnZpcm9uLnVzZXJuYW1l
IDogJ1VuYmVrYW5udCc7CiAgICB2YXIgZnVsbEJvZHkgPSBib2R5ICsgJ1xuXG4tLS1cbkdlc2Vu
ZGV0IGF1cyBELlIuSS5WLkUuIHYxLjBcbkJlbnV0emVyOiAnICsgdXNlcm5hbWU7CiAgICB2YXIg
bWFpbHRvID0gJ21haWx0bzpwaGlsaXBwLnJvZXNnZW5AcG9saXplaS5ucncuZGU/c3ViamVjdD0n
ICsgZW5jb2RlVVJJQ29tcG9uZW50KHN1YmplY3QpICsgJyZib2R5PScgKyBlbmNvZGVVUklDb21w
b25lbnQoZnVsbEJvZHkpOwogICAgLy8gTW9kYWwgKyBPdmVybGF5IHNvZm9ydCBzY2hsaWVzc2Vu
LCBkYW5uIE1haWwtUHJvZ3JhbW0gb2VmZm5lbgogICAgdmFyIGNvbnRhY3RNb2RhbCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdjb250YWN0U3ViamVjdCcpOwogICAgaWYgKGNvbnRhY3RNb2Rh
bCkgewogICAgICAgIHZhciBvdmVybGF5ID0gY29udGFjdE1vZGFsLmNsb3Nlc3QoJ2RpdltzdHls
ZSo9InBvc2l0aW9uOmZpeGVkIl0nKTsKICAgICAgICBpZiAob3ZlcmxheSkgb3ZlcmxheS5yZW1v
dmUoKTsKICAgIH0KICAgIHNob3dUb2FzdCgnRS1NYWlsLVByb2dyYW1tIHdpcmQgZ2XDtmZmbmV0
Li4uJywgJ3N1Y2Nlc3MnKTsKICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gbWFpbHRvOwp9Cgpm
dW5jdGlvbiBzaG93UmVhZE1vZGVJbmZvKCkgewogICAgdmFyIG1vZGFsID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnZGl2Jyk7CiAgICBtb2RhbC5zdHlsZS5jc3NUZXh0ID0gJ3Bvc2l0aW9uOmZp
eGVkO3RvcDowO2xlZnQ6MDt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO2JhY2tncm91bmQ6cmdiYSgw
LDAsMCwwLjUpO3otaW5kZXg6MTAwMDA7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtq
dXN0aWZ5LWNvbnRlbnQ6Y2VudGVyOyc7CiAgICBtb2RhbC5vbmNsaWNrID0gZnVuY3Rpb24oZSkg
eyBpZiAoZS50YXJnZXQgPT09IG1vZGFsKSBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKG1vZGFs
KTsgfTsKICAgIG1vZGFsLmlubmVySFRNTCA9CiAgICAgICAgJzxkaXYgc3R5bGU9ImJhY2tncm91
bmQ6dmFyKC0tYmctY2FyZCk7Ym9yZGVyLXJhZGl1czoxMHB4O3BhZGRpbmc6MjRweCAyOHB4O21h
eC13aWR0aDo0ODBweDt3aWR0aDo5MCU7Ym94LXNoYWRvdzowIDhweCAzMnB4IHJnYmEoMCwwLDAs
MC4zKTsiPicgKwogICAgICAgICAgICAnPGgyIHN0eWxlPSJjb2xvcjp2YXIoLS10ZXh0LWhlYWRp
bmcpO21hcmdpbi1ib3R0b206MTJweDtmb250LXNpemU6MThweDsiPkxlc2Vtb2R1czwvaDI+JyAr
CiAgICAgICAgICAgICc8cCBzdHlsZT0iY29sb3I6dmFyKC0tdGV4dC1wcmltYXJ5KTtmb250LXNp
emU6MTRweDtsaW5lLWhlaWdodDoxLjc7bWFyZ2luLWJvdHRvbToxMnB4OyI+JyArCiAgICAgICAg
ICAgICAgICAnRHUgYmVmaW5kZXN0IGRpY2ggZ2VyYWRlIGltIDxzdHJvbmc+TGVzZW1vZHVzPC9z
dHJvbmc+LiBIaWVyIGthbm5zdCBkdSBhbGxlIEFydGlrZWwgbGVzZW4sIGR1cmNoc3VjaGVuIHVu
ZCBmaWx0ZXJuIOKAkyBhYmVyIG5pY2h0cyB2ZXLDpG5kZXJuLicgKwogICAgICAgICAgICAnPC9w
PicgKwogICAgICAgICAgICAnPHAgc3R5bGU9ImNvbG9yOnZhcigtLXRleHQtcHJpbWFyeSk7Zm9u
dC1zaXplOjE0cHg7bGluZS1oZWlnaHQ6MS43O21hcmdpbi1ib3R0b206MTZweDsiPicgKwogICAg
ICAgICAgICAgICAgJzxzdHJvbmc+V2VubiBkdSBtaXRhcmJlaXRlbiBtw7ZjaHRlc3QsIGJpc3Qg
ZHUgaGVyemxpY2ggZWluZ2VsYWRlbiE8L3N0cm9uZz4nICsKICAgICAgICAgICAgJzwvcD4nICsK
ICAgICAgICAgICAgJzxwIHN0eWxlPSJjb2xvcjp2YXIoLS10ZXh0LXByaW1hcnkpO2ZvbnQtc2l6
ZToxNHB4O2xpbmUtaGVpZ2h0OjEuNzttYXJnaW4tYm90dG9tOjE2cHg7Ij4nICsKICAgICAgICAg
ICAgICAgICdTdGFydGUgZGF6dSBlaW5mYWNoIGRhcyBTeXN0ZW0gw7xiZXIgPHN0cm9uZz5EUklW
RV9TdGFydC5iYXQ8L3N0cm9uZz4uPC9icj4nICsKICAgICAgICAgICAgICAgICcoRGllIERhdGVp
IGxpZWd0IGltIFN0YW1tdmVyemVpY2huaXMgdm9uIEQuUi5JLlYuRS4pLicgKwogICAgICAgICAg
ICAnPC9wPicgKwogICAgICAgICAgICAnPHAgc3R5bGU9ImNvbG9yOnZhcigtLXRleHQtcHJpbWFy
eSk7Zm9udC1zaXplOjE0cHg7bGluZS1oZWlnaHQ6MS43O21hcmdpbi1ib3R0b206MTZweDsiPicg
KwogICAgICAgICAgICAgICAgJ0RhbWl0IMO2ZmZuZXQgc2ljaCBkZXIgdm9sbHN0w6RuZGlnZSBC
ZWFyYmVpdHVuZ3Ntb2R1cywgaW4gZGVtIGR1IEFydGlrZWwgZXJzdGVsbGVuLCBiZWFyYmVpdGVu
IHVuZCBNZWRpZW4gaG9jaGxhZGVuIGthbm5zdC4nICsKICAgICAgICAgICAgJzwvcD4nICsKICAg
ICAgICAgICAgJzxkaXYgc3R5bGU9InRleHQtYWxpZ246cmlnaHQ7Ij4nICsKICAgICAgICAgICAg
ICAgICc8YnV0dG9uIG9uY2xpY2s9InZhciBtPXRoaXM7d2hpbGUobS5wYXJlbnRFbGVtZW50IT09
ZG9jdW1lbnQuYm9keSltPW0ucGFyZW50RWxlbWVudDttLnJlbW92ZSgpOyIgc3R5bGU9InBhZGRp
bmc6OHB4IDIwcHg7Ym9yZGVyLXJhZGl1czo0cHg7Ym9yZGVyOm5vbmU7YmFja2dyb3VuZDp2YXIo
LS10ZXh0LWhlYWRpbmcpO2NvbG9yOndoaXRlO2N1cnNvcjpwb2ludGVyO2ZvbnQtd2VpZ2h0OjYw
MDsiPlZlcnN0YW5kZW48L2J1dHRvbj4nICsKICAgICAgICAgICAgJzwvZGl2PicgKwogICAgICAg
ICc8L2Rpdj4nOwogICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChtb2RhbCk7Cn0KCi8vID09
PT09PT09PT09PT09PT09PT09PSBGSUxFIFNZU1RFTSBBQ0NFU1MgQVBJID09PT09PT09PT09PT09
PT09PT09PQoKLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLy8gTW9kdWw6IERyaXZlRlMgLSBEYXRl
aXN5c3RlbS1BYnN0cmFrdGlvbnNzY2hpY2h0Ci8vIFp1c3RhZW5kaWcgZnVlcjogTGFkZW4vU3Bl
aWNoZXJuIHZvbiBEb2t1bWVudGVuLCBNZWRpZW4sIEtvbmZpZ3VyYXRpb24KLy8gRGF0ZW5xdWVs
bGVuOiBTZXJ2ZXItQVBJIChwcmltYWVyKSwgc3RhdGlzY2hlIERhdGVpZW4gKEZhbGxiYWNrKSwg
RmlsZSBTeXN0ZW0gQWNjZXNzIEFQSQovLyBTaWNoZXJoZWl0OiBQZmFkdmFsaWRpZXJ1bmcgdmlh
IHNhbml0aXplRmlsZW5hbWUoKSArIHNlcnZlcnNlaXRpZ2UgUmVzb2x2ZS1TYWZlUGF0aCgpCi8v
ICAgICAgICAgICAgIENsaWVudC1zZWl0aWdlIFZhbGlkaWVydW5nIGlzdCBFcmdhZW56dW5nLCBu
aWNodCBFcnNhdHogZnVlciBzZXJ2ZXJzZWl0aWdlIFBydWVmdW5nLgovLyA9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQpjb25zdCBEcml2ZUZTID0gewogICAgbW9kZTogbnVsbCwgICAgICAgICAgICAgLy8g
J3NlcnZlcicgb2RlciAnZmlsZXN5c3RlbScKICAgIGNvbm5lY3RlZDogZmFsc2UsCiAgICByZWFk
T25seTogdHJ1ZSwgICAgICAgICAvLyBTdGFydGV0IGltbWVyIGltIE51ci1MZXNlbi1Nb2R1cwog
ICAgY29uZmlnOiBudWxsLAogICAgX2lkYk5hbWU6ICdEcml2ZVBvcnRhbCcsCiAgICBfaWRiU3Rv
cmU6ICdoYW5kbGVzJywKICAgIGRvY3VtZW50czogW10sCiAgICBpbmRleDogbnVsbCwKICAgIGZp
bGVUaW1lc3RhbXBzOiB7fSwgICAgIC8vIGRvY0lkIC0+IHsgbW9kaWZpZWQsIGthdGVnb3JpZSwg
ZmlsZW5hbWUsIHBhdGggfQogICAgc3luY0ludGVydmFsOiBudWxsLAogICAgZW52aXJvbjogbnVs
bCwKCiAgICAvLyAtLS0gSW5kZXhlZERCOiBPcmRuZXItSGFuZGxlIHNwZWljaGVybi9sYWRlbiAt
LS0KICAgIF9vcGVuSURCKCkgewogICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwg
cmVqZWN0KSA9PiB7CiAgICAgICAgICAgIGNvbnN0IHJlcSA9IGluZGV4ZWREQi5vcGVuKHRoaXMu
X2lkYk5hbWUsIDEpOwogICAgICAgICAgICByZXEub251cGdyYWRlbmVlZGVkID0gKCkgPT4gcmVx
LnJlc3VsdC5jcmVhdGVPYmplY3RTdG9yZSh0aGlzLl9pZGJTdG9yZSk7CiAgICAgICAgICAgIHJl
cS5vbnN1Y2Nlc3MgPSAoKSA9PiByZXNvbHZlKHJlcS5yZXN1bHQpOwogICAgICAgICAgICByZXEu
b25lcnJvciA9ICgpID0+IHJlamVjdChyZXEuZXJyb3IpOwogICAgICAgIH0pOwogICAgfSwKCiAg
ICBhc3luYyBfc2F2ZUhhbmRsZShkaXJIYW5kbGUpIHsKICAgICAgICB0cnkgewogICAgICAgICAg
ICBjb25zdCBkYiA9IGF3YWl0IHRoaXMuX29wZW5JREIoKTsKICAgICAgICAgICAgY29uc3QgdHgg
PSBkYi50cmFuc2FjdGlvbih0aGlzLl9pZGJTdG9yZSwgJ3JlYWR3cml0ZScpOwogICAgICAgICAg
ICB0eC5vYmplY3RTdG9yZSh0aGlzLl9pZGJTdG9yZSkucHV0KGRpckhhbmRsZSwgJ3Jvb3REaXIn
KTsKICAgICAgICAgICAgYXdhaXQgbmV3IFByb21pc2UoKHJlcywgcmVqKSA9PiB7IHR4Lm9uY29t
cGxldGUgPSByZXM7IHR4Lm9uZXJyb3IgPSByZWo7IH0pOwogICAgICAgICAgICBkYi5jbG9zZSgp
OwogICAgICAgIH0gY2F0Y2gge30KICAgIH0sCgogICAgYXN5bmMgX2xvYWRIYW5kbGUoKSB7CiAg
ICAgICAgdHJ5IHsKICAgICAgICAgICAgY29uc3QgZGIgPSBhd2FpdCB0aGlzLl9vcGVuSURCKCk7
CiAgICAgICAgICAgIGNvbnN0IHR4ID0gZGIudHJhbnNhY3Rpb24odGhpcy5faWRiU3RvcmUsICdy
ZWFkb25seScpOwogICAgICAgICAgICBjb25zdCByZXEgPSB0eC5vYmplY3RTdG9yZSh0aGlzLl9p
ZGJTdG9yZSkuZ2V0KCdyb290RGlyJyk7CiAgICAgICAgICAgIGNvbnN0IGhhbmRsZSA9IGF3YWl0
IG5ldyBQcm9taXNlKChyZXMsIHJlaikgPT4geyByZXEub25zdWNjZXNzID0gKCkgPT4gcmVzKHJl
cS5yZXN1bHQpOyByZXEub25lcnJvciA9IHJlajsgfSk7CiAgICAgICAgICAgIGRiLmNsb3NlKCk7
CiAgICAgICAgICAgIHJldHVybiBoYW5kbGUgfHwgbnVsbDsKICAgICAgICB9IGNhdGNoIHsgcmV0
dXJuIG51bGw7IH0KICAgIH0sCgogICAgLy8gLS0tIEhpbGZzZnVua3Rpb25lbiAtLS0KICAgICAg
ICAvLyBEYXRlaW5hbWVuLUJlcmVpbmlndW5nOiBFbnRmZXJudCBTb25kZXJ6ZWljaGVuLCBlcnNl
dHp0IFVtbGF1dGUsIG5vcm1hbGlzaWVydCBMZWVyemVpY2hlbi4KICAgICAgICAvLyBWZXJoaW5k
ZXJ0IGNsaWVudC1zZWl0aWcgUGF0aC1UcmF2ZXJzYWwgKC4uLykgdW5kIHVuZ3VlbHRpZ2UgRGF0
ZWluYW1lbi4KICAgICAgICAvLyBTZXJ2ZXJzZWl0aWcgd2lyZCB6dXNhZXR6bGljaCBSZXNvbHZl
LVNhZmVQYXRoKCkgLyByZXNvbHZlX3NhZmVfcGF0aCgpIGF1ZmdlcnVmZW4uCiAgICBzYW5pdGl6
ZUZpbGVuYW1lKHRpdGVsKSB7CiAgICAgICAgcmV0dXJuIHRpdGVsCiAgICAgICAgICAgIC5yZXBs
YWNlKC9cdTAwZTQvZywgJ2FlJykucmVwbGFjZSgvXHUwMGY2L2csICdvZScpLnJlcGxhY2UoL1x1
MDBmYy9nLCAndWUnKQogICAgICAgICAgICAucmVwbGFjZSgvXHUwMGM0L2csICdBZScpLnJlcGxh
Y2UoL1x1MDBkNi9nLCAnT2UnKS5yZXBsYWNlKC9cdTAwZGMvZywgJ1VlJykKICAgICAgICAgICAg
LnJlcGxhY2UoL1x1MDBkZi9nLCAnc3MnKQogICAgICAgICAgICAucmVwbGFjZSgvW1xzXSsvZywg
J18nKQogICAgICAgICAgICAucmVwbGFjZSgvW15hLXpBLVowLTlfXC1dL2csICcnKQogICAgICAg
ICAgICAucmVwbGFjZSgvXysvZywgJ18nKQogICAgICAgICAgICAucmVwbGFjZSgvXl98XyQvZywg
JycpOwogICAgfSwKCiAgICBkb2NGaWxlbmFtZShkb2MpIHsKICAgICAgICByZXR1cm4gZG9jLmlk
ICsgJ18nICsgdGhpcy5zYW5pdGl6ZUZpbGVuYW1lKGRvYy50aXRlbCkgKyAnLmpzb24nOwogICAg
fSwKCiAgICBkb2NQYXRoKGRvYykgewogICAgICAgIHJldHVybiAnZGF0YS8nICsgZG9jLmthdGVn
b3JpZSArICcvJyArIHRoaXMuZG9jRmlsZW5hbWUoZG9jKTsKICAgIH0sCgogICAgZ2VuZXJhdGVJ
ZCgpIHsKICAgICAgICBsZXQgbWF4TnVtID0gMDsKICAgICAgICB0aGlzLmRvY3VtZW50cy5mb3JF
YWNoKGRvYyA9PiB7CiAgICAgICAgICAgIGNvbnN0IG51bSA9IHBhcnNlSW50KGRvYy5pZC5yZXBs
YWNlKCdEJywgJycpLCAxMCk7CiAgICAgICAgICAgIGlmIChudW0gPiBtYXhOdW0pIG1heE51bSA9
IG51bTsKICAgICAgICB9KTsKICAgICAgICByZXR1cm4gJ0QnICsgU3RyaW5nKG1heE51bSArIDEp
LnBhZFN0YXJ0KDMsICcwJyk7CiAgICB9LAoKICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAvLyBDT05ORUNU
IC0gU3R1ZmVuOiAxLiBTZXJ2ZXIgKHZvbGwpLCAyLiBGaWxlc3lzdGVtIGxlc2VuZCwgMy4gSGlu
d2VpcwogICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KCiAgICBhc3luYyBjb25uZWN0KHVzZXJJbml0aWF0ZWQpIHsK
ICAgICAgICAvLyAxLiBWZXJzdWNoZSBTZXJ2ZXItTW9kdXMgKERSSVZFX1N0YXJ0LmJhdCAvIHNl
cnZlci5wczEpCiAgICAgICAgaWYgKGF3YWl0IHRoaXMudHJ5U2VydmVyQ29ubmVjdCgpKSByZXR1
cm47CgogICAgICAgIC8vIDIuIFZlcnN1Y2hlIHN0YXRpc2NoZW4gTW9kdXMgKGRhdGEvIE9yZG5l
ciByZWxhdGl2IHp1ciBIVE1MLURhdGVpKQogICAgICAgIGlmIChhd2FpdCB0aGlzLnRyeVN0YXRp
Y0Nvbm5lY3QoKSkgcmV0dXJuOwoKICAgICAgICAvLyAzLiBWZXJzdWNoZSBnZXNwZWljaGVydGVu
IE9yZG5lci1IYW5kbGUgKGF1dG8tcmVjb25uZWN0KQogICAgICAgIGlmICh3aW5kb3cuc2hvd0Rp
cmVjdG9yeVBpY2tlcikgewogICAgICAgICAgICBpZiAoYXdhaXQgdGhpcy50cnlBdXRvUmVjb25u
ZWN0KHVzZXJJbml0aWF0ZWQpKSByZXR1cm47CiAgICAgICAgICAgIGlmICh1c2VySW5pdGlhdGVk
KSB7CiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmNvbm5lY3RGaWxlc3lzdGVtKCdyZWFkJyk7
CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAg
IC8vIDQuIEtlaW4gTW9kdXMgdmVyZnVlZ2JhciDigJMgV2lsbGtvbW1lbnNzZWl0ZSBtaXQgSGlu
d2VpcyBhbnplaWdlbgogICAgICAgIGNvbnN0IGhpbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnd2VsY29tZUNvbm5lY3RIaW50Jyk7CiAgICAgICAgaWYgKGhpbnQpIGhpbnQuc3R5bGUuZGlz
cGxheSA9ICcnOwogICAgICAgIHRoaXMudXBkYXRlQ29ubmVjdGlvblVJKCk7CiAgICB9LAoKICAg
IGFzeW5jIHRyeVN0YXRpY0Nvbm5lY3QoKSB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgLy8g
RFJJVkVfU1RBVElDX0lOREVYIHdpcmQgdmlhIDxzY3JpcHQgc3JjPSJkYXRhL2luZGV4LmpzIj4g
Z2VsYWRlbgogICAgICAgICAgICAvLyB1bmQgZW50aGFlbHQgQUxMRSBEb2t1bWVudGUgKyBDb25m
aWcgKGZ1bmt0aW9uaWVydCBiZWkgZmlsZTovLykKICAgICAgICAgICAgaWYgKHR5cGVvZiBEUklW
RV9TVEFUSUNfSU5ERVggPT09ICd1bmRlZmluZWQnIHx8ICFEUklWRV9TVEFUSUNfSU5ERVgpIHJl
dHVybiBmYWxzZTsKICAgICAgICAgICAgdmFyIGRhdGEgPSBEUklWRV9TVEFUSUNfSU5ERVg7CiAg
ICAgICAgICAgIGlmICghZGF0YS5kb2N1bWVudHMgfHwgZGF0YS5kb2N1bWVudHMubGVuZ3RoID09
PSAwKSByZXR1cm4gZmFsc2U7CgogICAgICAgICAgICB0aGlzLm1vZGUgPSAnc3RhdGljJzsKICAg
ICAgICAgICAgdGhpcy5yZWFkT25seSA9IHRydWU7CiAgICAgICAgICAgIHRoaXMuaW5kZXggPSBk
YXRhOwoKICAgICAgICAgICAgLy8gQ29uZmlnIGF1cyBlaW5nZWJldHRldGVuIERhdGVuIG9kZXIg
RmFsbGJhY2sKICAgICAgICAgICAgaWYgKGRhdGEuY29uZmlnKSB7CiAgICAgICAgICAgICAgICB0
aGlzLmNvbmZpZyA9IGRhdGEuY29uZmlnOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgICAgdmFyIGNhdHMgPSBuZXcgU2V0KCk7CiAgICAgICAgICAgICAgICBkYXRhLmRvY3VtZW50
cy5mb3JFYWNoKGZ1bmN0aW9uKGQpIHsgaWYgKGQua2F0ZWdvcmllKSBjYXRzLmFkZChkLmthdGVn
b3JpZSk7IH0pOwogICAgICAgICAgICAgICAgdGhpcy5jb25maWcgPSB7IGthdGVnb3JpZW46IFsu
Li5jYXRzXS5zb3J0KGZ1bmN0aW9uKGEsYikgeyByZXR1cm4gYS5sb2NhbGVDb21wYXJlKGIsICdk
ZScpOyB9KSB9OwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBEb2t1bWVudGUgZGlyZWt0
IGF1cyBkZW4gZWluZ2ViZXR0ZXRlbiBEYXRlbiBsYWRlbgogICAgICAgICAgICAvLyBJbSBMZXNl
bW9kdXM6IE5VUiBmcmVpZ2VnZWJlbmUgRG9rdW1lbnRlIGFuemVpZ2VuCiAgICAgICAgICAgIHRo
aXMuZG9jdW1lbnRzID0gW107CiAgICAgICAgICAgIHRoaXMuZmlsZVRpbWVzdGFtcHMgPSB7fTsK
ICAgICAgICAgICAgZGF0YS5kb2N1bWVudHMuZm9yRWFjaChmdW5jdGlvbihkb2MpIHsKICAgICAg
ICAgICAgICAgIGlmIChkb2Muc3RhdHVzICE9PSAnRnJlaWdlZ2ViZW4nKSByZXR1cm47CiAgICAg
ICAgICAgICAgICBlbnN1cmVDb3JyZWN0VmVyc2lvbihkb2MpOwogICAgICAgICAgICAgICAgRHJp
dmVGUy5kb2N1bWVudHMucHVzaChkb2MpOwogICAgICAgICAgICAgICAgRHJpdmVGUy5maWxlVGlt
ZXN0YW1wc1tkb2MuaWRdID0gewogICAgICAgICAgICAgICAgICAgIG1vZGlmaWVkOiBkb2MuZ2Vh
ZW5kZXJ0IHx8IGRvYy5lcnN0ZWxsdCwKICAgICAgICAgICAgICAgICAgICBrYXRlZ29yaWU6IGRv
Yy5rYXRlZ29yaWUsCiAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWU6IGRvYy5pZCArICcuanNv
bicsCiAgICAgICAgICAgICAgICAgICAgcGF0aDogJ2RhdGEvJyArIGRvYy5rYXRlZ29yaWUgKyAn
LycgKyBkb2MuaWQgKyAnLmpzb24nCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9KTsK
ICAgICAgICAgICAgdGhpcy5kb2N1bWVudHMuc29ydChmdW5jdGlvbihhLCBiKSB7IHJldHVybiAo
Yi5lcnN0ZWxsdCB8fCAnJykubG9jYWxlQ29tcGFyZShhLmVyc3RlbGx0IHx8ICcnKTsgfSk7Cgog
ICAgICAgICAgICB0aGlzLmNvbm5lY3RlZCA9IHRydWU7CiAgICAgICAgICAgIHRoaXMuZW52aXJv
biA9IHsgdXNlcm5hbWU6ICdMZXNlcicsIGNvbXB1dGVybmFtZTogJy0nIH07CiAgICAgICAgICAg
IHRoaXMudXBkYXRlQ29ubmVjdGlvblVJKCk7CiAgICAgICAgICAgIGF3YWl0IERyaXZlR292ZXJu
YW5jZS5sb2FkKCk7CgogICAgICAgICAgICAvLyBTdGFydHNlaXRlIGF1cyBlaW5nZWJldHRldGVu
IERhdGVuIGxhZGVuCiAgICAgICAgICAgIGlmIChkYXRhLnN0YXJ0c2VpdGUpIHsKICAgICAgICAg
ICAgICAgIHZhciB3ZWxjb21lRWwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcud2VsY29tZS1j
b250ZW50Jyk7CiAgICAgICAgICAgICAgICBpZiAod2VsY29tZUVsKSB3ZWxjb21lRWwuaW5uZXJI
VE1MID0gRHJpdmVQb3J0YWwuc2FuaXRpemVIVE1MKGRhdGEuc3RhcnRzZWl0ZSk7CiAgICAgICAg
ICAgIH0KCiAgICAgICAgICAgIERyaXZlUG9ydGFsLmluaXQoKTsKICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgfSBjYXRjaChlKSB7IGNvbnNvbGUud2FybignU3RhdGljIGNvbm5lY3Q6
JywgZSk7IHJldHVybiBmYWxzZTsgfQogICAgfSwKCiAgICBhc3luYyB0cnlBdXRvUmVjb25uZWN0
KHVzZXJJbml0aWF0ZWQpIHsKICAgICAgICB0cnkgewogICAgICAgICAgICBjb25zdCBzdG9yZWQg
PSBhd2FpdCB0aGlzLl9sb2FkSGFuZGxlKCk7CiAgICAgICAgICAgIGlmICghc3RvcmVkKSByZXR1
cm4gZmFsc2U7CgogICAgICAgICAgICAvLyBQcnVlZmVuIG9iIEJlcmVjaHRpZ3VuZyBub2NoIGFr
dGl2CiAgICAgICAgICAgIGxldCBwZXJtID0gYXdhaXQgc3RvcmVkLnF1ZXJ5UGVybWlzc2lvbih7
IG1vZGU6ICdyZWFkJyB9KTsKICAgICAgICAgICAgaWYgKHBlcm0gPT09ICdwcm9tcHQnICYmIHVz
ZXJJbml0aWF0ZWQpIHsKICAgICAgICAgICAgICAgIC8vIEJlaSBVc2VyLUtsaWNrOiBlaW5mYWNo
ZW4gRXJsYXViZW4tRGlhbG9nIHplaWdlbiAoa2VpbiBQaWNrZXIpCiAgICAgICAgICAgICAgICBw
ZXJtID0gYXdhaXQgc3RvcmVkLnJlcXVlc3RQZXJtaXNzaW9uKHsgbW9kZTogJ3JlYWQnIH0pOwog
ICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChwZXJtICE9PSAnZ3JhbnRlZCcpIHJldHVybiBm
YWxzZTsKCiAgICAgICAgICAgIC8vIGRhdGEtVW50ZXJvcmRuZXIgYmVzdGltbWVuIChnZXNwZWlj
aGVydGVyIEhhbmRsZSBrYW5uIFJvb3Qgb2RlciBkYXRhIHNlaW4pCiAgICAgICAgICAgIGxldCBk
YXRhSGFuZGxlLCBtZWRpYUhhbmRsZSA9IG51bGwsIHJvb3RIYW5kbGUgPSBzdG9yZWQ7CiAgICAg
ICAgICAgIGlmIChzdG9yZWQubmFtZSA9PT0gJ2RhdGEnKSB7CiAgICAgICAgICAgICAgICAvLyBV
c2VyIGhhdHRlICJkYXRhIiBkaXJla3QgZ2V3YWVobHQKICAgICAgICAgICAgICAgIGRhdGFIYW5k
bGUgPSBzdG9yZWQ7CiAgICAgICAgICAgICAgICAvLyBNZWRpYSBsaWVndCBlaW5lIEViZW5lIGhv
ZWhlciAtIG5pY2h0IHZlcmZ1ZWdiYXIKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
ICAgIGRhdGFIYW5kbGUgPSBhd2FpdCBzdG9yZWQuZ2V0RGlyZWN0b3J5SGFuZGxlKCdkYXRhJyk7
CiAgICAgICAgICAgICAgICB0cnkgeyBtZWRpYUhhbmRsZSA9IGF3YWl0IHN0b3JlZC5nZXREaXJl
Y3RvcnlIYW5kbGUoJ21lZGlhJyk7IH0gY2F0Y2gge30KICAgICAgICAgICAgfQoKICAgICAgICAg
ICAgLy8gQWxsZXMgb2sgLSB2ZXJiaW5kZW4KICAgICAgICAgICAgdGhpcy5tb2RlID0gJ2ZpbGVz
eXN0ZW0nOwogICAgICAgICAgICB0aGlzLnJlYWRPbmx5ID0gdHJ1ZTsKICAgICAgICAgICAgdGhp
cy5fZGlySGFuZGxlID0gcm9vdEhhbmRsZTsKICAgICAgICAgICAgdGhpcy5fZGF0YUhhbmRsZSA9
IGRhdGFIYW5kbGU7CiAgICAgICAgICAgIHRoaXMuX21lZGlhSGFuZGxlID0gbWVkaWFIYW5kbGU7
CiAgICAgICAgICAgIGF3YWl0IHRoaXMubG9hZEVudmlyb24oKTsKICAgICAgICAgICAgYXdhaXQg
dGhpcy5sb2FkQ29uZmlnKCk7CiAgICAgICAgICAgIGF3YWl0IHRoaXMubG9hZEFsbERvY3VtZW50
cygpOwogICAgICAgICAgICB0aGlzLmNvbm5lY3RlZCA9IHRydWU7CiAgICAgICAgICAgIHRoaXMu
dXBkYXRlQ29ubmVjdGlvblVJKCk7CiAgICAgICAgICAgIGF3YWl0IERyaXZlR292ZXJuYW5jZS5s
b2FkKCk7CiAgICAgICAgICAgIERyaXZlUG9ydGFsLmluaXQoKTsKICAgICAgICAgICAgc2hvd1Rv
YXN0KCdPcmRuZXIgYXV0b21hdGlzY2ggdmVyYnVuZGVuIChOdXItTGVzZW4pJywgJ3N1Y2Nlc3Mn
KTsKICAgICAgICAgICAgdGhpcy5zdGFydFN5bmMoKTsKICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgICAgfSBjYXRjaCB7IHJldHVybiBmYWxzZTsgfQogICAgfSwKCiAgICBhc3luYyB0cnlT
ZXJ2ZXJDb25uZWN0KCkgewogICAgICAgIHRyeSB7CiAgICAgICAgICAgIGNvbnN0IHNjYW5SZXMg
PSBhd2FpdCBmZXRjaCgnL2FwaS9zY2FuJyk7CiAgICAgICAgICAgIGlmIChzY2FuUmVzLm9rKSB7
CiAgICAgICAgICAgICAgICB0aGlzLm1vZGUgPSAnc2VydmVyJzsKICAgICAgICAgICAgICAgIHRo
aXMucmVhZE9ubHkgPSBmYWxzZTsKICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMubG9hZEVudmly
b24oKTsKICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMubG9hZENvbmZpZygpOwogICAgICAgICAg
ICAgICAgYXdhaXQgdGhpcy5sb2FkQWxsRG9jdW1lbnRzKCk7CiAgICAgICAgICAgICAgICB0aGlz
LmNvbm5lY3RlZCA9IHRydWU7CiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUNvbm5lY3Rpb25V
SSgpOwogICAgICAgICAgICAgICAgYXdhaXQgRHJpdmVHb3Zlcm5hbmNlLmxvYWQoKTsKICAgICAg
ICAgICAgICAgIERyaXZlUG9ydGFsLmluaXQoKTsKICAgICAgICAgICAgICAgIGNvbnN0IHVzZXJJ
bmZvID0gdGhpcy5lbnZpcm9uID8gJyAoQmVudXR6ZXI6ICcgKyB0aGlzLmVudmlyb24udXNlcm5h
bWUgKyAnKScgOiAnJzsKICAgICAgICAgICAgICAgIHNob3dUb2FzdCgnVm9sbHp1Z3JpZmYgYWt0
aXYnICsgdXNlckluZm8sICdzdWNjZXNzJyk7CiAgICAgICAgICAgICAgICB0aGlzLnN0YXJ0U3lu
YygpOwogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICB9
IGNhdGNoIHt9CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfSwKCiAgICBhc3luYyBjb25uZWN0
RmlsZXN5c3RlbShhY2Nlc3NNb2RlKSB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgY29uc3Qg
aXNSZWFkT25seSA9IChhY2Nlc3NNb2RlID09PSAncmVhZCcpOwogICAgICAgICAgICBjb25zdCBk
aXJIYW5kbGUgPSBhd2FpdCB3aW5kb3cuc2hvd0RpcmVjdG9yeVBpY2tlcih7CiAgICAgICAgICAg
ICAgICBtb2RlOiBpc1JlYWRPbmx5ID8gJ3JlYWQnIDogJ3JlYWR3cml0ZScsCiAgICAgICAgICAg
ICAgICBpZDogJ2RyaXZlLWRhdGEnCiAgICAgICAgICAgIH0pOwogICAgICAgICAgICB0aGlzLm1v
ZGUgPSAnZmlsZXN5c3RlbSc7CiAgICAgICAgICAgIHRoaXMucmVhZE9ubHkgPSBpc1JlYWRPbmx5
OwogICAgICAgICAgICB0aGlzLl9kaXJIYW5kbGUgPSBkaXJIYW5kbGU7CgogICAgICAgICAgICAv
LyBFcmtlbm51bmc6IFVzZXIgaGF0ICJkYXRhIiBkaXJla3Qgb2RlciBkZW4gSGF1cHRvcmRuZXIg
Z2V3YWVobHQKICAgICAgICAgICAgbGV0IGhhc0RhdGFTdWIgPSBmYWxzZTsKICAgICAgICAgICAg
dHJ5IHsgYXdhaXQgZGlySGFuZGxlLmdldERpcmVjdG9yeUhhbmRsZSgnZGF0YScpOyBoYXNEYXRh
U3ViID0gdHJ1ZTsgfSBjYXRjaCB7fQoKICAgICAgICAgICAgaWYgKGhhc0RhdGFTdWIpIHsKICAg
ICAgICAgICAgICAgIC8vIEhhdXB0b3JkbmVyIGdld2FlaGx0IChlbnRoYWVsdCBkYXRhLykKICAg
ICAgICAgICAgICAgIHRoaXMuX2RhdGFIYW5kbGUgPSBhd2FpdCBkaXJIYW5kbGUuZ2V0RGlyZWN0
b3J5SGFuZGxlKCdkYXRhJywgeyBjcmVhdGU6ICFpc1JlYWRPbmx5IH0pOwogICAgICAgICAgICAg
ICAgaWYgKCFpc1JlYWRPbmx5KSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbWVkaWFIYW5k
bGUgPSBhd2FpdCBkaXJIYW5kbGUuZ2V0RGlyZWN0b3J5SGFuZGxlKCdtZWRpYScsIHsgY3JlYXRl
OiB0cnVlIH0pOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICB0
cnkgeyB0aGlzLl9tZWRpYUhhbmRsZSA9IGF3YWl0IGRpckhhbmRsZS5nZXREaXJlY3RvcnlIYW5k
bGUoJ21lZGlhJyk7IH0gY2F0Y2ggeyB0aGlzLl9tZWRpYUhhbmRsZSA9IG51bGw7IH0KICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIC8vICJkYXRh
IiBPcmRuZXIgZGlyZWt0IGdld2FlaGx0IChvZGVyIGFuZGVyZXIgT3JkbmVyIG1pdCBjb25maWcu
anNvbikKICAgICAgICAgICAgICAgIHRoaXMuX2RhdGFIYW5kbGUgPSBkaXJIYW5kbGU7CiAgICAg
ICAgICAgICAgICB0aGlzLl9tZWRpYUhhbmRsZSA9IG51bGw7CiAgICAgICAgICAgIH0KICAgICAg
ICAgICAgYXdhaXQgdGhpcy5sb2FkRW52aXJvbigpOwogICAgICAgICAgICBhd2FpdCB0aGlzLmxv
YWRDb25maWcoKTsKICAgICAgICAgICAgaWYgKCFpc1JlYWRPbmx5KSB7CiAgICAgICAgICAgICAg
ICBmb3IgKGNvbnN0IGthdCBvZiAodGhpcy5jb25maWcua2F0ZWdvcmllbiB8fCBbXSkpIHsKICAg
ICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLl9kYXRhSGFuZGxlLmdldERpcmVjdG9yeUhhbmRs
ZShrYXQsIHsgY3JlYXRlOiB0cnVlIH0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9
CiAgICAgICAgICAgIGF3YWl0IHRoaXMubG9hZEFsbERvY3VtZW50cygpOwogICAgICAgICAgICB0
aGlzLmNvbm5lY3RlZCA9IHRydWU7CiAgICAgICAgICAgIHRoaXMudXBkYXRlQ29ubmVjdGlvblVJ
KCk7CiAgICAgICAgICAgIGF3YWl0IERyaXZlR292ZXJuYW5jZS5sb2FkKCk7CiAgICAgICAgICAg
IERyaXZlUG9ydGFsLmluaXQoKTsKICAgICAgICAgICAgY29uc3QgbW9kZVRleHQgPSBpc1JlYWRP
bmx5ID8gJ051ci1MZXNlbi1Nb2R1cycgOiAnVm9sbHp1Z3JpZmYnOwogICAgICAgICAgICBzaG93
VG9hc3QobW9kZVRleHQgKyAnOiAnICsgZGlySGFuZGxlLm5hbWUsICdzdWNjZXNzJyk7CiAgICAg
ICAgICAgIHRoaXMuc3RhcnRTeW5jKCk7CgogICAgICAgICAgICAvLyBIYW5kbGUgc3BlaWNoZXJu
IGZ1ZXIgYXV0b21hdGlzY2hlIFdpZWRlcnZlcmJpbmR1bmcKICAgICAgICAgICAgYXdhaXQgdGhp
cy5fc2F2ZUhhbmRsZShkaXJIYW5kbGUpOwogICAgICAgIH0gY2F0Y2ggKGVycikgewogICAgICAg
ICAgICBpZiAoZXJyLm5hbWUgIT09ICdBYm9ydEVycm9yJykgewogICAgICAgICAgICAgICAgc2hv
d1RvYXN0KCdGZWhsZXI6ICcgKyBlcnIubWVzc2FnZSwgJ2Vycm9yJyk7CiAgICAgICAgICAgIH0K
ICAgICAgICB9CiAgICB9LAoKICAgIC8vIFdpcmQgYXVmZ2VydWZlbiB3ZW5uIFVzZXIgQmVhcmJl
aXR1bmcgYWt0aXZpZXJlbiB3aWxsCiAgICBhc3luYyBhY3RpdmF0ZVNlcnZlcigpIHsKICAgICAg
ICAvLyBQcnVlZmVuIG9iIFNlcnZlciBpbnp3aXNjaGVuIGxhZXVmdAogICAgICAgIGlmIChhd2Fp
dCB0aGlzLnRyeVNlcnZlckNvbm5lY3QoKSkgewogICAgICAgICAgICBzaG93VG9hc3QoJ1NlcnZl
ciBlcmthbm50IC0gVm9sbHp1Z3JpZmYgYWt0aXZpZXJ0IScsICdzdWNjZXNzJyk7CiAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIC8vIFNlcnZlciBuaWNodCBlcnJlaWNoYmFy
IC0gSGlud2VpcyBhbnplaWdlbgogICAgICAgIHNob3dUb2FzdCgnU2VydmVyIG5pY2h0IGVycmVp
Y2hiYXIuIEJpdHRlIHN0YXJ0ZSBEUklWRV9TdGFydC5iYXQgcGVyIERvcHBlbGtsaWNrIHVuZCB2
ZXJzdWNoZSBlcyBlcm5ldXQuJywgJ3dhcm5pbmcnLCA1MDAwKTsKICAgIH0sCgogICAgLy8gVXBn
cmFkZSB2b24gTnVyLUxlc2VuIGF1ZiBTY2hyZWliZW4gKEZpbGVzeXN0ZW0tTW9kdXMpCiAgICBh
c3luYyB1cGdyYWRlVG9SZWFkV3JpdGUoKSB7CiAgICAgICAgLy8gRXJzdCBTZXJ2ZXIgcHJ1ZWZl
bgogICAgICAgIGlmIChhd2FpdCB0aGlzLnRyeVNlcnZlckNvbm5lY3QoKSkgcmV0dXJuIHRydWU7
CgogICAgICAgIC8vIEZpbGVzeXN0ZW06IFNjaHJlaWJyZWNodGUgYW5mb3JkZXJuCiAgICAgICAg
aWYgKHRoaXMubW9kZSA9PT0gJ2ZpbGVzeXN0ZW0nICYmIHRoaXMuX2RpckhhbmRsZSkgewogICAg
ICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgY29uc3QgcGVybSA9IGF3YWl0IHRoaXMuX2Rp
ckhhbmRsZS5yZXF1ZXN0UGVybWlzc2lvbih7IG1vZGU6ICdyZWFkd3JpdGUnIH0pOwogICAgICAg
ICAgICAgICAgaWYgKHBlcm0gPT09ICdncmFudGVkJykgewogICAgICAgICAgICAgICAgICAgIHRo
aXMucmVhZE9ubHkgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICB0aGlzLl9tZWRpYUhhbmRs
ZSA9IGF3YWl0IHRoaXMuX2RpckhhbmRsZS5nZXREaXJlY3RvcnlIYW5kbGUoJ21lZGlhJywgeyBj
cmVhdGU6IHRydWUgfSk7CiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBrYXQgb2YgKHRo
aXMuY29uZmlnLmthdGVnb3JpZW4gfHwgW10pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGF3
YWl0IHRoaXMuX2RhdGFIYW5kbGUuZ2V0RGlyZWN0b3J5SGFuZGxlKGthdCwgeyBjcmVhdGU6IHRy
dWUgfSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHRoaXMudXBk
YXRlQ29ubmVjdGlvblVJKCk7CiAgICAgICAgICAgICAgICAgICAgc2hvd1RvYXN0KCdTY2hyZWli
enVncmlmZiBha3RpdmllcnQnLCAnc3VjY2VzcycpOwogICAgICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGNhdGNoIHt9CiAgICAgICAg
fQoKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9LAoKICAgIC8vIFBydWVmZW4gb2IgU2NocmVp
Ynp1Z3JpZmYgdm9yaGFuZGVuLCBzb25zdCBVcGdyYWRlIHZlcnN1Y2hlbgogICAgYXN5bmMgZW5z
dXJlV3JpdGVBY2Nlc3MoKSB7CiAgICAgICAgaWYgKCF0aGlzLnJlYWRPbmx5KSByZXR1cm4gdHJ1
ZTsKCiAgICAgICAgY29uc3QgY2hvaWNlID0gY29uZmlybSgKICAgICAgICAgICAgJ1p1bSBCZWFy
YmVpdGVuIHdpcmQgU2NocmVpYnp1Z3JpZmYgYmVuw7Z0aWd0LlxuXG4nICsKICAgICAgICAgICAg
J09wdGlvbiAxOiBTdGFydGUgRFJJVkVfU3RhcnQuYmF0IHVuZCBrbGlja2UgT0suXG4nICsKICAg
ICAgICAgICAgJ09wdGlvbiAyOiBLbGlja2UgT0ssIHVtIFNjaHJlaWJyZWNodGUgaW0gQnJvd3Nl
ciB6dSBlcnRlaWxlbi4nCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCFjaG9pY2UpIHJldHVybiBm
YWxzZTsKICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy51cGdyYWRlVG9SZWFkV3JpdGUoKTsKICAg
IH0sCgogICAgcmVjb25uZWN0KCkgewogICAgICAgIGlmICh3aW5kb3cuc2hvd0RpcmVjdG9yeVBp
Y2tlcikgewogICAgICAgICAgICB0aGlzLmNvbm5lY3RGaWxlc3lzdGVtKCdyZWFkJyk7CiAgICAg
ICAgfQogICAgfSwKCiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgLy8gRU5WSVJPTgogICAgLy8gPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KCiAgICBhc3luYyBsb2FkRW52aXJvbigpIHsKICAgICAgICB0cnkgewogICAgICAgICAgICBj
b25zdCByZXMgPSBhd2FpdCBmZXRjaCgnL2FwaS9lbnZpcm9uJyk7CiAgICAgICAgICAgIGlmIChy
ZXMub2spIHsKICAgICAgICAgICAgICAgIHRoaXMuZW52aXJvbiA9IGF3YWl0IHJlcy5qc29uKCk7
CiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnQmVudXR6ZXI6JywgdGhpcy5lbnZpcm9uLnVz
ZXJuYW1lLCAnQCcsIHRoaXMuZW52aXJvbi5jb21wdXRlcm5hbWUpOwogICAgICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgfSBjYXRjaCB7fQogICAgICAgIC8vIEZhbGxi
YWNrOiBJbSBOdXItTGVzZW4tTW9kdXMga2VpbmVuIE5hbWVuIGFiZnJhZ2VuCiAgICAgICAgaWYg
KHRoaXMucmVhZE9ubHkpIHsKICAgICAgICAgICAgY29uc3Qgc3RvcmVkID0gbG9jYWxTdG9yYWdl
LmdldEl0ZW0oJ2RyaXZlX3VzZXJuYW1lJyk7CiAgICAgICAgICAgIGlmIChzdG9yZWQpIHsKICAg
ICAgICAgICAgICAgIHRoaXMuZW52aXJvbiA9IHsgdXNlcm5hbWU6IHN0b3JlZCwgY29tcHV0ZXJu
YW1lOiAnLScgfTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHRoaXMuZW52
aXJvbiA9IHsgdXNlcm5hbWU6ICdMZXNlcicsIGNvbXB1dGVybmFtZTogJy0nIH07CiAgICAgICAg
ICAgIH0KICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICAvLyBTY2hyZWlibW9k
dXM6IE5hbWVuIGFiZnJhZ2VuCiAgICAgICAgY29uc3Qgc3RvcmVkID0gbG9jYWxTdG9yYWdlLmdl
dEl0ZW0oJ2RyaXZlX3VzZXJuYW1lJyk7CiAgICAgICAgaWYgKHN0b3JlZCkgewogICAgICAgICAg
ICB0aGlzLmVudmlyb24gPSB7IHVzZXJuYW1lOiBzdG9yZWQsIGNvbXB1dGVybmFtZTogJy0nIH07
CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgY29uc3QgbmFtZSA9IHByb21wdCgnQml0dGUg
Z2liIGRlaW5lbiBCZW51dHplcm5hbWVuIGVpbjonKTsKICAgICAgICAgICAgaWYgKG5hbWUpIHsK
ICAgICAgICAgICAgICAgIHRoaXMuZW52aXJvbiA9IHsgdXNlcm5hbWU6IG5hbWUudHJpbSgpLCBj
b21wdXRlcm5hbWU6ICctJyB9OwogICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0o
J2RyaXZlX3VzZXJuYW1lJywgbmFtZS50cmltKCkpOwogICAgICAgICAgICB9CiAgICAgICAgfQog
ICAgfSwKCiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQogICAgLy8gQ09ORklHCiAgICAvLyA9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKICAg
IGFzeW5jIGxvYWRDb25maWcoKSB7CiAgICAgICAgY29uc3QgZGVmYXVsdENvbmZpZyA9IHsKICAg
ICAgICAgICAgdmVyc2lvbjogJzMuMCcsCiAgICAgICAgICAgIGthdGVnb3JpZW46IFsnVmVya2Vo
cicsICdTaWNoZXJoZWl0JywgJ1BsYW51bmcnLCAnT3JnYW5pc2F0aW9uJ10sCiAgICAgICAgICAg
IHN0YXR1czogewogICAgICAgICAgICAgICAgJ0VudHd1cmYnOiB7IGxhYmVsOiAnRW50d3VyZics
IGNvbG9yOiAnI0ZGRjNDRCcsIHRleHRDb2xvcjogJyM4NTY0MDQnLCBpY29uOiAnXHVkODNkXHVk
Y2RkJywgYmVzY2hyZWlidW5nOiAnRG9rdW1lbnQgaW4gQmVhcmJlaXR1bmcnIH0sCiAgICAgICAg
ICAgICAgICAnUHLDvGZ1bmcnOiB7IGxhYmVsOiAnWnVyIFByw7xmdW5nJywgY29sb3I6ICcjRkZF
NUI0JywgdGV4dENvbG9yOiAnIzdBNDQxOScsIGljb246ICfwn5GB77iPJywgYmVzY2hyZWlidW5n
OiAnV2FydGV0IGF1ZiBGcmVpZ2FiZScgfSwKICAgICAgICAgICAgICAgICdGcmVpZ2VnZWJlbic6
IHsgbGFiZWw6ICdGcmVpZ2VnZWJlbicsIGNvbG9yOiAnI0Q0RUREQScsIHRleHRDb2xvcjogJyMx
NTU3MjQnLCBpY29uOiAn4pyFJywgYmVzY2hyZWlidW5nOiAnVmVyZsO8Z2JhciB1bmQgZWluc2F0
emJlcmVpdCcgfQogICAgICAgICAgICB9CiAgICAgICAgfTsKCiAgICAgICAgLy8gU2VydmVyLU1v
ZHVzOiBjb25maWcgdmlhIEhUVFAgbGFkZW4gKGFic29sdXRlciBQZmFkKQogICAgICAgIGlmICh0
aGlzLm1vZGUgPT09ICdzZXJ2ZXInKSB7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAg
ICBjb25zdCByZXMgPSBhd2FpdCBmZXRjaCgnL2RhdGEvY29uZmlnLmpzb24nKTsKICAgICAgICAg
ICAgICAgIGlmIChyZXMub2spIHsgdGhpcy5jb25maWcgPSBhd2FpdCByZXMuanNvbigpOyB0aGlz
LnNvcnRLYXRlZ29yaWVuKCk7IHJldHVybjsgfQogICAgICAgICAgICB9IGNhdGNoIHt9CiAgICAg
ICAgfQoKICAgICAgICAvLyBTdGF0aXNjaGVyIE1vZHVzOiBjb25maWcgdmlhIHJlbGF0aXZlbSBQ
ZmFkIGxhZGVuCiAgICAgICAgaWYgKHRoaXMubW9kZSA9PT0gJ3N0YXRpYycpIHsKICAgICAgICAg
ICAgdHJ5IHsKICAgICAgICAgICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoKCdkYXRhL2Nv
bmZpZy5qc29uJyk7CiAgICAgICAgICAgICAgICBpZiAocmVzLm9rKSB7IHRoaXMuY29uZmlnID0g
YXdhaXQgcmVzLmpzb24oKTsgdGhpcy5zb3J0S2F0ZWdvcmllbigpOyByZXR1cm47IH0KICAgICAg
ICAgICAgfSBjYXRjaCB7fQogICAgICAgIH0KCiAgICAgICAgLy8gRmlsZXN5c3RlbS1Nb2R1czog
Y29uZmlnLmpzb24gYXVzIGRhdGEtSGFuZGxlIGxhZGVuCiAgICAgICAgaWYgKHRoaXMuX2RhdGFI
YW5kbGUpIHsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgIGNvbnN0IGZoID0gYXdh
aXQgdGhpcy5fZGF0YUhhbmRsZS5nZXRGaWxlSGFuZGxlKCdjb25maWcuanNvbicpOwogICAgICAg
ICAgICAgICAgY29uc3QgZmlsZSA9IGF3YWl0IGZoLmdldEZpbGUoKTsKICAgICAgICAgICAgICAg
IHRoaXMuY29uZmlnID0gSlNPTi5wYXJzZShhd2FpdCBmaWxlLnRleHQoKSk7CiAgICAgICAgICAg
ICAgICB0aGlzLnNvcnRLYXRlZ29yaWVuKCk7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgICAgIH0gY2F0Y2gge30KICAgICAgICB9CgogICAgICAgIHRoaXMuY29uZmlnID0gZGVmYXVs
dENvbmZpZzsKICAgICAgICB0aGlzLnNvcnRLYXRlZ29yaWVuKCk7CiAgICB9LAoKICAgIC8vIEth
dGVnb3JpZW4gYWxwaGFiZXRpc2NoIHNvcnRpZXJ0IGhhbHRlbiAobmFjaCBqZWRlbSBMYWRlbi9B
ZW5kZXJuIGF1ZnJ1ZmVuKQogICAgc29ydEthdGVnb3JpZW4oKSB7CiAgICAgICAgaWYgKHRoaXMu
Y29uZmlnICYmIHRoaXMuY29uZmlnLmthdGVnb3JpZW4pIHsKICAgICAgICAgICAgdGhpcy5jb25m
aWcua2F0ZWdvcmllbi5zb3J0KGZ1bmN0aW9uKGEsIGIpIHsgcmV0dXJuIGEubG9jYWxlQ29tcGFy
ZShiLCAnZGUnKTsgfSk7CiAgICAgICAgfQogICAgfSwKCiAgICAvLyA9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgLy8g
TE9BRCBBTEwgRE9DVU1FTlRTCiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKICAgIGFzeW5jIGxvYWRBbGxEb2N1
bWVudHMoKSB7CiAgICAgICAgdGhpcy5kb2N1bWVudHMgPSBbXTsKICAgICAgICB0aGlzLmZpbGVU
aW1lc3RhbXBzID0ge307CgogICAgICAgIGlmICh0aGlzLm1vZGUgPT09ICdzdGF0aWMnKSB7CiAg
ICAgICAgICAgIC8vIFN0YXRpc2NoZXIgTW9kdXM6IERva3VtZW50ZSB3dXJkZW4gYmVyZWl0cyBp
biB0cnlTdGF0aWNDb25uZWN0KCkgZ2VsYWRlbgogICAgICAgICAgICByZXR1cm47CiAgICAgICAg
fSBlbHNlIGlmICh0aGlzLm1vZGUgPT09ICdzZXJ2ZXInKSB7CiAgICAgICAgICAgIC8vIFNlcnZl
ciBzY2FubnQgZGllIE9yZG5lciBmdWVyIHVucwogICAgICAgICAgICBjb25zdCByZXMgPSBhd2Fp
dCBmZXRjaCgnL2FwaS9zY2FuJyk7CiAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXMu
anNvbigpOwoKICAgICAgICAgICAgZm9yIChjb25zdCBlbnRyeSBvZiAoZGF0YS5maWxlcyB8fCBb
XSkpIHsKICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZG9j
UmVzID0gYXdhaXQgZmV0Y2goJy8nICsgZW50cnkucGF0aCk7CiAgICAgICAgICAgICAgICAgICAg
aWYgKGRvY1Jlcy5vaykgewogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkb2MgPSBhd2Fp
dCBkb2NSZXMuanNvbigpOwogICAgICAgICAgICAgICAgICAgICAgICAvLyBWZXJzaW9uc2ludGVn
cml0YWV0IHBydWVmZW4gdW5kIGdnZi4ga29ycmlnaWVyZW4KICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKGVuc3VyZUNvcnJlY3RWZXJzaW9uKGRvYykpIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIEtvcnJpZ2llcnRlIFZlcnNpb24genVydWVja3NjaHJlaWJlbgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZmV0Y2goJy9hcGkvd3JpdGUnLCB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaGVhZGVyczogeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nIH0sCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoeyBwYXRo
OiBlbnRyeS5wYXRoLCBkYXRhOiBkb2MgfSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0p
LmNhdGNoKGZ1bmN0aW9uKCkge30pOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRzLnB1c2goZG9jKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgdGhpcy5maWxlVGltZXN0YW1wc1tkb2MuaWRdID0gewogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbW9kaWZpZWQ6IGVudHJ5Lm1vZGlmaWVkLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAga2F0ZWdvcmllOiBlbnRyeS5rYXRlZ29yaWUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmaWxlbmFtZTogZW50cnkuZmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwYXRoOiBlbnRyeS5wYXRoCiAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7CiAgICAgICAgICAg
ICAgICAgICAgY29uc29sZS53YXJuKCdGZWhsZXIgYmVpbSBMYWRlbjogJyArIGVudHJ5LnBhdGgs
IGVycik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAvLyBGaWxlc3lzdGVtLU1vZHVzOiBLYXRlZ29yaWUtT3JkbmVyIGR1cmNobGF1
ZmVuCiAgICAgICAgICAgIGZvciAoY29uc3Qga2F0IG9mICh0aGlzLmNvbmZpZy5rYXRlZ29yaWVu
IHx8IFtdKSkgewogICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICBjb25z
dCBrYXREaXIgPSBhd2FpdCB0aGlzLl9kYXRhSGFuZGxlLmdldERpcmVjdG9yeUhhbmRsZShrYXQp
OwogICAgICAgICAgICAgICAgICAgIGZvciBhd2FpdCAoY29uc3QgW25hbWUsIGhhbmRsZV0gb2Yg
a2F0RGlyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoYW5kbGUua2luZCA9PT0gJ2Zp
bGUnICYmIG5hbWUuZW5kc1dpdGgoJy5qc29uJykpIHsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZmlsZSA9IGF3
YWl0IGhhbmRsZS5nZXRGaWxlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgZG9jID0gSlNPTi5wYXJzZShhd2FpdCBmaWxlLnRleHQoKSk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZW5zdXJlQ29ycmVjdFZlcnNpb24oZG9jKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0aGlzLmRvY3VtZW50cy5wdXNoKGRvYyk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdGhpcy5maWxlVGltZXN0YW1wc1tkb2MuaWRdID0gewogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllZDogZmlsZS5sYXN0TW9kaWZpZWQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGthdGVnb3JpZToga2F0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZTogbmFtZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aDogJ2RhdGEvJyArIGthdCArICcvJyArIG5h
bWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfSBjYXRjaCAoZXJyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc29sZS53YXJuKCdGZWhsZXI6ICcgKyBrYXQgKyAnLycgKyBuYW1lLCBlcnIpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSBjYXRjaCB7fQogICAgICAgICAgICB9CiAg
ICAgICAgfQoKICAgICAgICB0aGlzLmRvY3VtZW50cy5zb3J0KChhLCBiKSA9PiAoYi5lcnN0ZWxs
dCB8fCAnJykubG9jYWxlQ29tcGFyZShhLmVyc3RlbGx0IHx8ICcnKSk7CiAgICAgICAgYXdhaXQg
dGhpcy51cGRhdGVJbmRleCgpOwogICAgfSwKCiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgLy8gTE9BRCBT
SU5HTEUgRE9DVU1FTlQgKGZyaXNjaCB2b24gRGlzaykKICAgIC8vID09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgogICAgYXN5
bmMgbG9hZERvY3VtZW50KGRvY0lkKSB7CiAgICAgICAgY29uc3QgbWV0YSA9IHRoaXMuZmlsZVRp
bWVzdGFtcHNbZG9jSWRdOwogICAgICAgIGlmICghbWV0YSkgewogICAgICAgICAgICAvLyBLZWlu
IERhdGVpcGZhZCBiZWthbm50IC0gSW4tTWVtb3J5LUZhbGxiYWNrCiAgICAgICAgICAgIHJldHVy
biB0aGlzLmRvY3VtZW50cy5maW5kKGQgPT4gZC5pZCA9PT0gZG9jSWQpIHx8IG51bGw7CiAgICAg
ICAgfQoKICAgICAgICB0cnkgewogICAgICAgICAgICBpZiAodGhpcy5tb2RlID09PSAnc2VydmVy
JykgewogICAgICAgICAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2goJy8nICsgbWV0YS5w
YXRoICsgJz90PScgKyBEYXRlLm5vdygpKTsKICAgICAgICAgICAgICAgIGlmICghcmVzLm9rKSB0
aHJvdyBuZXcgRXJyb3IoJ0hUVFAgJyArIHJlcy5zdGF0dXMpOwogICAgICAgICAgICAgICAgcmV0
dXJuIGF3YWl0IHJlcy5qc29uKCk7CiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5tb2RlID09
PSAnc3RhdGljJykgewogICAgICAgICAgICAgICAgLy8gU3RhdGlzY2g6IEluLU1lbW9yeSB2ZXJ3
ZW5kZW4gKGJlcmVpdHMga29tcGxldHQgZ2VsYWRlbikKICAgICAgICAgICAgICAgIHJldHVybiB0
aGlzLmRvY3VtZW50cy5maW5kKGQgPT4gZC5pZCA9PT0gZG9jSWQpIHx8IG51bGw7CiAgICAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBjb25zdCBrYXREaXIgPSBhd2FpdCB0aGlzLl9k
YXRhSGFuZGxlLmdldERpcmVjdG9yeUhhbmRsZShtZXRhLmthdGVnb3JpZSk7CiAgICAgICAgICAg
ICAgICBjb25zdCBmaCA9IGF3YWl0IGthdERpci5nZXRGaWxlSGFuZGxlKG1ldGEuZmlsZW5hbWUp
OwogICAgICAgICAgICAgICAgY29uc3QgZmlsZSA9IGF3YWl0IGZoLmdldEZpbGUoKTsKICAgICAg
ICAgICAgICAgIHJldHVybiBKU09OLnBhcnNlKGF3YWl0IGZpbGUudGV4dCgpKTsKICAgICAgICAg
ICAgfQogICAgICAgIH0gY2F0Y2ggKGVycikgewogICAgICAgICAgICBjb25zb2xlLndhcm4oJ2xv
YWREb2N1bWVudCBGZWhsZXIgZnVlciAnICsgZG9jSWQgKyAnOicsIGVycik7CiAgICAgICAgICAg
IC8vIEZhbGxiYWNrOiBJbi1NZW1vcnktVmVyc2lvbiB2ZXJ3ZW5kZW4gKGJlcmVpdHMgYmVpbSBT
dGFydCBnZWxhZGVuKQogICAgICAgICAgICBjb25zdCBtZW1Eb2MgPSB0aGlzLmRvY3VtZW50cy5m
aW5kKGQgPT4gZC5pZCA9PT0gZG9jSWQpOwogICAgICAgICAgICBpZiAobWVtRG9jKSByZXR1cm4g
bWVtRG9jOwogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CiAgICB9LAoKICAgIC8v
ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09CiAgICAvLyBTQVZFIERPQ1VNRU5UCiAgICAvLyA9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKICAgIGFzeW5j
IHNhdmVEb2N1bWVudChkb2MpIHsKICAgICAgICBjb25zdCBkb2NJZCA9IGRvYy5pZDsKICAgICAg
ICBjb25zdCBtZXRhID0gdGhpcy5maWxlVGltZXN0YW1wc1tkb2NJZF07CiAgICAgICAgY29uc3Qg
bmV3UGF0aCA9IHRoaXMuZG9jUGF0aChkb2MpOwoKICAgICAgICAvLyBBbHRlIERhdGVpIGxvZXNj
aGVuIGZhbGxzIFBmYWQgc2ljaCBnZWFlbmRlcnQgaGF0CiAgICAgICAgaWYgKG1ldGEgJiYgbWV0
YS5wYXRoICE9PSBuZXdQYXRoKSB7CiAgICAgICAgICAgIGF3YWl0IHRoaXMuZGVsZXRlRmlsZSht
ZXRhLnBhdGgpOwogICAgICAgIH0KCiAgICAgICAgLy8gR2VhZW5kZXJ0LVRpbWVzdGFtcCB1bmQg
QmVhcmJlaXRlciBzZXR6ZW4KICAgICAgICBkb2MuZ2VhZW5kZXJ0ID0gbmV3IERhdGUoKS50b0lT
T1N0cmluZygpLnNwbGl0KCdUJylbMF07CiAgICAgICAgaWYgKHRoaXMuZW52aXJvbiAmJiB0aGlz
LmVudmlyb24udXNlcm5hbWUpIHsKICAgICAgICAgICAgZG9jLmJlYXJiZWl0ZXRWb24gPSB0aGlz
LmVudmlyb24udXNlcm5hbWU7CiAgICAgICAgfQoKICAgICAgICAvLyBUZW1wb3JhZXJlIFByb3Bl
cnRpZXMgZW50ZmVybmVuIChtaXQgXyBQcmVmaXgsIG5pY2h0IHBlcnNpc3RpZXJlbikKICAgICAg
ICBkZWxldGUgZG9jLl9wcmV2aW91c0luaGFsdDsKICAgICAgICBkZWxldGUgZG9jLl9wcmV2aW91
c1RpdGVsOwoKICAgICAgICAvLyBTcGVpY2hlcm4KICAgICAgICBpZiAodGhpcy5tb2RlID09PSAn
c2VydmVyJykgewogICAgICAgICAgICBjb25zdCByZXMgPSBhd2FpdCBmZXRjaCgnL2FwaS93cml0
ZScsIHsKICAgICAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLAogICAgICAgICAgICAgICAgaGVh
ZGVyczogeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9dXRmLTgn
IH0sCiAgICAgICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7IHBhdGg6IG5ld1BhdGgs
IGRhdGE6IGRvYyB9KQogICAgICAgICAgICB9KTsKICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0g
YXdhaXQgcmVzLmpzb24oKTsKICAgICAgICAgICAgaWYgKCFyZXN1bHQub2spIHsKICAgICAgICAg
ICAgICAgIHJldHVybiByZXN1bHQuZXJyb3IgfHwgJ1VuYmVrYW5udGVyIEZlaGxlcic7CiAgICAg
ICAgICAgIH0KICAgICAgICAgICAgdGhpcy5maWxlVGltZXN0YW1wc1tkb2NJZF0gPSB7CiAgICAg
ICAgICAgICAgICBtb2RpZmllZDogcmVzdWx0Lm1vZGlmaWVkLAogICAgICAgICAgICAgICAga2F0
ZWdvcmllOiBkb2Mua2F0ZWdvcmllLAogICAgICAgICAgICAgICAgZmlsZW5hbWU6IHRoaXMuZG9j
RmlsZW5hbWUoZG9jKSwKICAgICAgICAgICAgICAgIHBhdGg6IG5ld1BhdGgKICAgICAgICAgICAg
fTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBjb25zdCBrYXREaXIgPSBhd2FpdCB0aGlz
Ll9kYXRhSGFuZGxlLmdldERpcmVjdG9yeUhhbmRsZShkb2Mua2F0ZWdvcmllLCB7IGNyZWF0ZTog
dHJ1ZSB9KTsKICAgICAgICAgICAgY29uc3QgZmlsZW5hbWUgPSB0aGlzLmRvY0ZpbGVuYW1lKGRv
Yyk7CiAgICAgICAgICAgIGNvbnN0IGZoID0gYXdhaXQga2F0RGlyLmdldEZpbGVIYW5kbGUoZmls
ZW5hbWUsIHsgY3JlYXRlOiB0cnVlIH0pOwogICAgICAgICAgICBjb25zdCB3cml0YWJsZSA9IGF3
YWl0IGZoLmNyZWF0ZVdyaXRhYmxlKCk7CiAgICAgICAgICAgIGF3YWl0IHdyaXRhYmxlLndyaXRl
KEpTT04uc3RyaW5naWZ5KGRvYywgbnVsbCwgMikpOwogICAgICAgICAgICBhd2FpdCB3cml0YWJs
ZS5jbG9zZSgpOwogICAgICAgICAgICBjb25zdCBzYXZlZEZpbGUgPSBhd2FpdCAoYXdhaXQga2F0
RGlyLmdldEZpbGVIYW5kbGUoZmlsZW5hbWUpKS5nZXRGaWxlKCk7CiAgICAgICAgICAgIHRoaXMu
ZmlsZVRpbWVzdGFtcHNbZG9jSWRdID0gewogICAgICAgICAgICAgICAgbW9kaWZpZWQ6IHNhdmVk
RmlsZS5sYXN0TW9kaWZpZWQsCiAgICAgICAgICAgICAgICBrYXRlZ29yaWU6IGRvYy5rYXRlZ29y
aWUsCiAgICAgICAgICAgICAgICBmaWxlbmFtZTogZmlsZW5hbWUsCiAgICAgICAgICAgICAgICBw
YXRoOiBuZXdQYXRoCiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICAvLyBJbi1NZW1v
cnkgYWt0dWFsaXNpZXJlbgogICAgICAgIGNvbnN0IGlkeCA9IHRoaXMuZG9jdW1lbnRzLmZpbmRJ
bmRleChkID0+IGQuaWQgPT09IGRvY0lkKTsKICAgICAgICBpZiAoaWR4ID49IDApIHsgdGhpcy5k
b2N1bWVudHNbaWR4XSA9IGRvYzsgfSBlbHNlIHsgdGhpcy5kb2N1bWVudHMucHVzaChkb2MpOyB9
CgogICAgICAgIGF3YWl0IHRoaXMudXBkYXRlSW5kZXgoKTsKICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgIH0sCgogICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KICAgIC8vIERFTEVURQogICAgLy8gPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCiAg
ICBhc3luYyBkZWxldGVGaWxlKHBhdGgpIHsKICAgICAgICBpZiAodGhpcy5tb2RlID09PSAnc2Vy
dmVyJykgewogICAgICAgICAgICB2YXIgcmVzID0gYXdhaXQgZmV0Y2goJy9hcGkvZGVsZXRlJywg
ewogICAgICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCcsCiAgICAgICAgICAgICAgICBoZWFkZXJz
OiB7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbjsgY2hhcnNldD11dGYtOCcgfSwK
ICAgICAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHsgcGF0aDogcGF0aCB9KQogICAg
ICAgICAgICB9KTsKICAgICAgICAgICAgaWYgKCFyZXMub2spIHsKICAgICAgICAgICAgICAgIHZh
ciBlcnIgPSBhd2FpdCByZXMuanNvbigpLmNhdGNoKGZ1bmN0aW9uKCkgeyByZXR1cm4ge307IH0p
OwogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVyci5lcnJvciB8fCAnTMO2c2NoZW4g
ZmVobGdlc2NobGFnZW4gKEhUVFAgJyArIHJlcy5zdGF0dXMgKyAnKScpOwogICAgICAgICAgICB9
CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgLy8gRmlsZXN5c3RlbTogRGF0ZWkgYXVzIEth
dGVnb3JpZS1PcmRuZXIgbG9lc2NoZW4KICAgICAgICAgICAgY29uc3QgcGFydHMgPSBwYXRoLnNw
bGl0KCcvJyk7CiAgICAgICAgICAgIGNvbnN0IGthdCA9IHBhcnRzWzFdOwogICAgICAgICAgICBj
b25zdCBmaWxlbmFtZSA9IHBhcnRzWzJdOwogICAgICAgICAgICBjb25zdCBrYXREaXIgPSBhd2Fp
dCB0aGlzLl9kYXRhSGFuZGxlLmdldERpcmVjdG9yeUhhbmRsZShrYXQpOwogICAgICAgICAgICBh
d2FpdCBrYXREaXIucmVtb3ZlRW50cnkoZmlsZW5hbWUpOwogICAgICAgIH0KICAgIH0sCgogICAg
YXN5bmMgZGVsZXRlRG9jdW1lbnQoZG9jSWQpIHsKICAgICAgICBjb25zdCBtZXRhID0gdGhpcy5m
aWxlVGltZXN0YW1wc1tkb2NJZF07CiAgICAgICAgaWYgKCFtZXRhKSByZXR1cm4gZmFsc2U7Cgog
ICAgICAgIHRyeSB7CiAgICAgICAgICAgIGF3YWl0IHRoaXMuZGVsZXRlRmlsZShtZXRhLnBhdGgp
OwogICAgICAgICAgICB0aGlzLmRvY3VtZW50cyA9IHRoaXMuZG9jdW1lbnRzLmZpbHRlcihkID0+
IGQuaWQgIT09IGRvY0lkKTsKICAgICAgICAgICAgZGVsZXRlIHRoaXMuZmlsZVRpbWVzdGFtcHNb
ZG9jSWRdOwoKICAgICAgICAgICAgLy8gTWVkaWEtT3JkbmVyIGxvZXNjaGVuCiAgICAgICAgICAg
IHRyeSB7CiAgICAgICAgICAgICAgICBpZiAodGhpcy5tb2RlID09PSAnc2VydmVyJykgewogICAg
ICAgICAgICAgICAgICAgIGF3YWl0IGZldGNoKCcvYXBpL2RlbGV0ZScsIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCcsCiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRl
cnM6IHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uOyBjaGFyc2V0PXV0Zi04JyB9
LAogICAgICAgICAgICAgICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7IHBhdGg6ICdt
ZWRpYS8nICsgZG9jSWQgfSkKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5fbWVkaWFIYW5kbGUucmVt
b3ZlRW50cnkoZG9jSWQsIHsgcmVjdXJzaXZlOiB0cnVlIH0pOwogICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICB9IGNhdGNoIHt9CgogICAgICAgICAgICBhd2FpdCB0aGlzLnVwZGF0ZUluZGV4
KCk7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0gY2F0Y2ggKGVycikgewogICAg
ICAgICAgICBjb25zb2xlLmVycm9yKCdMb2VzY2hmZWhsZXI6JywgZXJyKTsKICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgIH0sCgogICAgLy8gPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgIC8vIElO
REVYCiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQoKICAgIGFzeW5jIHVwZGF0ZUluZGV4KCkgewogICAgICAgIC8v
IFN0YXRpc2NoZXIgTW9kdXM6IEluZGV4IG5pY2h0IHNjaHJlaWJlbiAoa2VpbiBTY2hyZWlienVn
cmlmZikKICAgICAgICBpZiAodGhpcy5tb2RlID09PSAnc3RhdGljJykgcmV0dXJuOwoKICAgICAg
ICBjb25zdCBpbmRleERhdGEgPSB7CiAgICAgICAgICAgIHZlcnNpb246ICczLjAnLAogICAgICAg
ICAgICBsYXN0VXBkYXRlZDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLAogICAgICAgICAgICBk
b2N1bWVudHM6IHRoaXMuZG9jdW1lbnRzLm1hcChkb2MgPT4gKHsKICAgICAgICAgICAgICAgIGlk
OiBkb2MuaWQsCiAgICAgICAgICAgICAgICB0aXRlbDogZG9jLnRpdGVsLAogICAgICAgICAgICAg
ICAga2F0ZWdvcmllOiBkb2Mua2F0ZWdvcmllLAogICAgICAgICAgICAgICAgc3RhdHVzOiBkb2Mu
c3RhdHVzLAogICAgICAgICAgICAgICAgZXJzdGVsbHQ6IGRvYy5lcnN0ZWxsdCwKICAgICAgICAg
ICAgICAgIGdlYWVuZGVydDogZG9jLmdlYWVuZGVydCB8fCBkb2MuZXJzdGVsbHQsCiAgICAgICAg
ICAgICAgICB2ZXJzaW9uOiBkb2MudmVyc2lvbiwKICAgICAgICAgICAgICAgIGhhc01lZGlhOiAo
ZG9jLm1lZGlhcyAmJiBkb2MubWVkaWFzLmxlbmd0aCA+IDApIHx8IGZhbHNlLAogICAgICAgICAg
ICAgICAgZXJzdGVsbHRWb246IGRvYy5lcnN0ZWxsdFZvbiB8fCBudWxsLAogICAgICAgICAgICAg
ICAgYmVhcmJlaXRldFZvbjogZG9jLmJlYXJiZWl0ZXRWb24gfHwgbnVsbCwKICAgICAgICAgICAg
ICAgIHNjaGxhZ3dvZXJ0ZXI6IGRvYy5zY2hsYWd3b2VydGVyIHx8IFtdLAogICAgICAgICAgICAg
ICAgcGFyZW50SWQ6IGRvYy5wYXJlbnRJZCB8fCBudWxsCiAgICAgICAgICAgIH0pKQogICAgICAg
IH07CgogICAgICAgIC8vIEtvbXBsZXR0ZSBEYXRlbiBmdWVyIGZpbGU6Ly8tTGVzZW1vZHVzIChh
bGxlIERva3VtZW50ZSArIENvbmZpZyArIEdvdmVybmFuY2UtU2V0dGluZ3MpCiAgICAgICAgdmFy
IGdvdlB1YmxpYyA9IG51bGw7CiAgICAgICAgaWYgKERyaXZlR292ZXJuYW5jZS5kYXRhKSB7CiAg
ICAgICAgICAgIC8vIE51ciBsZXNiYXJlIEdvdmVybmFuY2UtRGF0ZW46IFNldHRpbmdzLCBLYXRl
Z29yaWVuLVNpY2h0YmFya2VpdCwgUmV2aWV3ZXItS2F0ZWdvcmllbiAoa2VpbmUgQ3JlZGVudGlh
bHMpCiAgICAgICAgICAgIGdvdlB1YmxpYyA9IHsKICAgICAgICAgICAgICAgIHNldHRpbmdzOiBE
cml2ZUdvdmVybmFuY2UuZGF0YS5zZXR0aW5ncyB8fCB7fSwKICAgICAgICAgICAgICAgIHJldmll
d2VyczogKERyaXZlR292ZXJuYW5jZS5kYXRhLnJldmlld2VycyB8fCBbXSkubWFwKGZ1bmN0aW9u
KHIpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBkaXNwbGF5TmFtZTogci5kaXNwbGF5
TmFtZSB8fCByLnVzZXJuYW1lLCBrYXRlZ29yaWVuOiByLmthdGVnb3JpZW4gfHwgW10gfTsKICAg
ICAgICAgICAgICAgIH0pLAogICAgICAgICAgICAgICAgaGlkZGVuS2F0ZWdvcmllbjogdGhpcy5j
b25maWcuaGlkZGVuS2F0ZWdvcmllbiB8fCBbXQogICAgICAgICAgICB9OwogICAgICAgIH0KICAg
ICAgICAvLyBTdGFydHNlaXRlIGZ1ZXIgTGVzZW1vZHVzIGVpbmJldHRlbgogICAgICAgIHZhciBz
dGFydHNlaXRlSHRtbCA9IG51bGw7CiAgICAgICAgdmFyIHdlbGNvbWVFbCA9IGRvY3VtZW50LnF1
ZXJ5U2VsZWN0b3IoJy53ZWxjb21lLWNvbnRlbnQnKTsKICAgICAgICBpZiAod2VsY29tZUVsKSBz
dGFydHNlaXRlSHRtbCA9IHdlbGNvbWVFbC5pbm5lckhUTUw7CgogICAgICAgIHZhciBzdGF0aWNE
YXRhID0gewogICAgICAgICAgICB2ZXJzaW9uOiBpbmRleERhdGEudmVyc2lvbiwKICAgICAgICAg
ICAgbGFzdFVwZGF0ZWQ6IGluZGV4RGF0YS5sYXN0VXBkYXRlZCwKICAgICAgICAgICAgY29uZmln
OiB0aGlzLmNvbmZpZyB8fCBudWxsLAogICAgICAgICAgICBnb3Zlcm5hbmNlOiBnb3ZQdWJsaWMs
CiAgICAgICAgICAgIHN0YXJ0c2VpdGU6IHN0YXJ0c2VpdGVIdG1sLAogICAgICAgICAgICBkb2N1
bWVudHM6IHRoaXMuZG9jdW1lbnRzLm1hcChmdW5jdGlvbihkb2MpIHsKICAgICAgICAgICAgICAg
IC8vIEtvbXBsZXR0ZXMgRG9rdW1lbnQga29waWVyZW4sIGFiZXIgX3ByaXZhdGUgUHJvcGVydGll
cyBlbnRmZXJuZW4KICAgICAgICAgICAgICAgIHZhciBjb3B5ID0ge307CiAgICAgICAgICAgICAg
ICBmb3IgKHZhciBrIGluIGRvYykgewogICAgICAgICAgICAgICAgICAgIGlmIChrLmNoYXJBdCgw
KSAhPT0gJ18nKSBjb3B5W2tdID0gZG9jW2tdOwogICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgcmV0dXJuIGNvcHk7CiAgICAgICAgICAgIH0pCiAgICAgICAgfTsKICAgICAgICB2YXIg
anNDb250ZW50ID0gJ3ZhciBEUklWRV9TVEFUSUNfSU5ERVggPSAnICsgSlNPTi5zdHJpbmdpZnko
c3RhdGljRGF0YSkgKyAnOyc7CgogICAgICAgIGlmICh0aGlzLm1vZGUgPT09ICdzZXJ2ZXInKSB7
CiAgICAgICAgICAgIGF3YWl0IGZldGNoKCcvYXBpL3dyaXRlJywgewogICAgICAgICAgICAgICAg
bWV0aG9kOiAnUE9TVCcsCiAgICAgICAgICAgICAgICBoZWFkZXJzOiB7ICdDb250ZW50LVR5cGUn
OiAnYXBwbGljYXRpb24vanNvbjsgY2hhcnNldD11dGYtOCcgfSwKICAgICAgICAgICAgICAgIGJv
ZHk6IEpTT04uc3RyaW5naWZ5KHsgcGF0aDogJ2RhdGEvaW5kZXguanNvbicsIGRhdGE6IGluZGV4
RGF0YSB9KQogICAgICAgICAgICB9KTsKICAgICAgICAgICAgYXdhaXQgZmV0Y2goJy9hcGkvd3Jp
dGUnLCB7CiAgICAgICAgICAgICAgICBtZXRob2Q6ICdQT1NUJywKICAgICAgICAgICAgICAgIGhl
YWRlcnM6IHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uOyBjaGFyc2V0PXV0Zi04
JyB9LAogICAgICAgICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoeyBwYXRoOiAnZGF0YS9p
bmRleC5qcycsIGRhdGE6IGpzQ29udGVudCB9KQogICAgICAgICAgICB9KTsKICAgICAgICB9IGVs
c2UgaWYgKHRoaXMuX2RhdGFIYW5kbGUpIHsKICAgICAgICAgICAgY29uc3QgZmggPSBhd2FpdCB0
aGlzLl9kYXRhSGFuZGxlLmdldEZpbGVIYW5kbGUoJ2luZGV4Lmpzb24nLCB7IGNyZWF0ZTogdHJ1
ZSB9KTsKICAgICAgICAgICAgY29uc3Qgd3JpdGFibGUgPSBhd2FpdCBmaC5jcmVhdGVXcml0YWJs
ZSgpOwogICAgICAgICAgICBhd2FpdCB3cml0YWJsZS53cml0ZShKU09OLnN0cmluZ2lmeShpbmRl
eERhdGEsIG51bGwsIDIpKTsKICAgICAgICAgICAgYXdhaXQgd3JpdGFibGUuY2xvc2UoKTsKICAg
ICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgIGNvbnN0IGZoSnMgPSBhd2FpdCB0aGlzLl9k
YXRhSGFuZGxlLmdldEZpbGVIYW5kbGUoJ2luZGV4LmpzJywgeyBjcmVhdGU6IHRydWUgfSk7CiAg
ICAgICAgICAgICAgICBjb25zdCB3SnMgPSBhd2FpdCBmaEpzLmNyZWF0ZVdyaXRhYmxlKCk7CiAg
ICAgICAgICAgICAgICBhd2FpdCB3SnMud3JpdGUoanNDb250ZW50KTsKICAgICAgICAgICAgICAg
IGF3YWl0IHdKcy5jbG9zZSgpOwogICAgICAgICAgICB9IGNhdGNoIHt9CiAgICAgICAgfQoKICAg
ICAgICB0aGlzLmluZGV4ID0gaW5kZXhEYXRhOwogICAgfSwKCiAgICAvLyA9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAg
Ly8gTUVESUEgVVBMT0FECiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKICAgIC8vIERhdGVpbmFtZW4gYmVyZWlu
aWdlbjogVW1sYXV0ZSB1bmQgU29uZGVyemVpY2hlbiBkdXJjaCBBU0NJSSBlcnNldHplbgogICAg
c2FuaXRpemVGaWxlbmFtZShuYW1lKSB7CiAgICAgICAgcmV0dXJuIG5hbWUKICAgICAgICAgICAg
LnJlcGxhY2UoL8OkL2csICdhZScpLnJlcGxhY2UoL8OEL2csICdBZScpCiAgICAgICAgICAgIC5y
ZXBsYWNlKC/Dti9nLCAnb2UnKS5yZXBsYWNlKC/Dli9nLCAnT2UnKQogICAgICAgICAgICAucmVw
bGFjZSgvw7wvZywgJ3VlJykucmVwbGFjZSgvw5wvZywgJ1VlJykKICAgICAgICAgICAgLnJlcGxh
Y2UoL8OfL2csICdzcycpCiAgICAgICAgICAgIC5yZXBsYWNlKC9bXlx3LlwtXS9nLCAnXycpCiAg
ICAgICAgICAgIC5yZXBsYWNlKC9fKy9nLCAnXycpOwogICAgfSwKCiAgICBhc3luYyB1cGxvYWRN
ZWRpYShkb2NJZCwgZmlsZSwgb25Qcm9ncmVzcykgewogICAgICAgIGNvbnN0IHNhZmVOYW1lID0g
dGhpcy5zYW5pdGl6ZUZpbGVuYW1lKGZpbGUubmFtZSk7CiAgICAgICAgY29uc3QgcmVsUGF0aCA9
ICdtZWRpYS8nICsgZG9jSWQgKyAnLycgKyBzYWZlTmFtZTsKCiAgICAgICAgaWYgKHRoaXMubW9k
ZSA9PT0gJ3NlcnZlcicpIHsKICAgICAgICAgICAgLy8gWE1MSHR0cFJlcXVlc3Qgc3RhdHQgZmV0
Y2g6IEVybW9lZ2xpY2h0IFVwbG9hZC1Gb3J0c2Nocml0dHNhbnplaWdlCiAgICAgICAgICAgIC8v
IHZpYSB4aHIudXBsb2FkLm9ucHJvZ3Jlc3MgKGZldGNoIHVudGVyc3R1ZXR6dCBrZWluIFVwbG9h
ZC1Qcm9ncmVzcykKICAgICAgICAgICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTsK
ICAgICAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdmaWxlJywgZmlsZSk7CiAgICAgICAgICAgIGNv
bnN0IHVybCA9ICcvYXBpL3VwbG9hZD9wYXRoPScgKyBlbmNvZGVVUklDb21wb25lbnQocmVsUGF0
aCk7CgogICAgICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWpl
Y3QpIHsKICAgICAgICAgICAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKICAg
ICAgICAgICAgICAgIHhoci5vcGVuKCdQT1NUJywgdXJsKTsKICAgICAgICAgICAgICAgIGlmIChv
blByb2dyZXNzKSB7CiAgICAgICAgICAgICAgICAgICAgeGhyLnVwbG9hZC5vbnByb2dyZXNzID0g
ZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZS5sZW5ndGhDb21wdXRh
YmxlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblByb2dyZXNzKE1hdGgucm91bmQo
KGUubG9hZGVkIC8gZS50b3RhbCkgKiAxMDApLCBlLmxvYWRlZCwgZS50b3RhbCk7CiAgICAgICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgeGhyLm9ubG9hZCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAg
ICAgICAgIGlmICh4aHIuc3RhdHVzID49IDIwMCAmJiB4aHIuc3RhdHVzIDwgMzAwKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChvblByb2dyZXNzKSBvblByb2dyZXNzKDEwMCwgZmlsZS5z
aXplLCBmaWxlLnNpemUpOwogICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7CiAgICAg
ICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGVyciA9
IHt9OwogICAgICAgICAgICAgICAgICAgICAgICB0cnkgeyBlcnIgPSBKU09OLnBhcnNlKHhoci5y
ZXNwb25zZVRleHQpOyB9IGNhdGNoKGV4KSB7fQogICAgICAgICAgICAgICAgICAgICAgICByZWpl
Y3QobmV3IEVycm9yKGVyci5lcnJvciB8fCAnVXBsb2FkIGZlaGxnZXNjaGxhZ2VuIChIVFRQICcg
KyB4aHIuc3RhdHVzICsgJyknKSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgfTsKICAgICAgICAgICAgICAgIHhoci5vbmVycm9yID0gZnVuY3Rpb24oKSB7CiAgICAgICAg
ICAgICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcignU2VydmVyIG5pY2h0IGVycmVpY2hiYXIuIExh
ZXVmdCBkZXIgU2VydmVyIG5vY2g/JykpOwogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAg
ICAgIHhoci5zZW5kKGZvcm1EYXRhKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgY29uc3QgZG9jTWVkaWFEaXIgPSBhd2FpdCB0aGlzLl9tZWRpYUhhbmRsZS5n
ZXREaXJlY3RvcnlIYW5kbGUoZG9jSWQsIHsgY3JlYXRlOiB0cnVlIH0pOwogICAgICAgICAgICBj
b25zdCBmaCA9IGF3YWl0IGRvY01lZGlhRGlyLmdldEZpbGVIYW5kbGUoc2FmZU5hbWUsIHsgY3Jl
YXRlOiB0cnVlIH0pOwogICAgICAgICAgICBjb25zdCB3cml0YWJsZSA9IGF3YWl0IGZoLmNyZWF0
ZVdyaXRhYmxlKCk7CiAgICAgICAgICAgIGF3YWl0IHdyaXRhYmxlLndyaXRlKGZpbGUpOwogICAg
ICAgICAgICBhd2FpdCB3cml0YWJsZS5jbG9zZSgpOwogICAgICAgICAgICBpZiAob25Qcm9ncmVz
cykgb25Qcm9ncmVzcygxMDAsIGZpbGUuc2l6ZSwgZmlsZS5zaXplKTsKICAgICAgICB9CgogICAg
ICAgIHJldHVybiByZWxQYXRoOwogICAgfSwKCiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgLy8gVUkKICAg
IC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09CgogICAgdXBkYXRlQ29ubmVjdGlvblVJKCkgewogICAgICAgIGNvbnN0IGJh
ciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25uZWN0aW9uQmFyJyk7CiAgICAgICAgY29u
c3QgZG90ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N0YXR1c0RvdCcpOwogICAgICAgIGNv
bnN0IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29ubmVjdGlvblRleHQnKTsKICAg
ICAgICBjb25zdCBzZWFyY2ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2VhcmNoSW5wdXQn
KTsKICAgICAgICBjb25zdCBidG5OZXcgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYnRuTmV3
RG9jJyk7CiAgICAgICAgY29uc3QgYnRuUmVjb25uZWN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2J0blJlY29ubmVjdCcpOwogICAgICAgIGNvbnN0IGJ0blNlcnZlciA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdidG5BY3RpdmF0ZVNlcnZlcicpOwoKICAgICAgICBpZiAodGhpcy5jb25u
ZWN0ZWQpIHsKICAgICAgICAgICAgYmFyLnN0eWxlLmRpc3BsYXkgPSAnJzsKICAgICAgICAgICAg
ZG90LmNsYXNzTGlzdC5yZW1vdmUoJ2Nvbm5lY3RlZCcsICdyZWFkb25seScpOwogICAgICAgICAg
ICBpZiAodGhpcy5yZWFkT25seSkgewogICAgICAgICAgICAgICAgZG90LmNsYXNzTGlzdC5hZGQo
J3JlYWRvbmx5Jyk7CiAgICAgICAgICAgICAgICBjb25zdCBtb2RlUHJlZml4ID0gdGhpcy5tb2Rl
ID09PSAnc3RhdGljJyA/ICdMZXNlbW9kdXMnIDogJ051ciBMZXNlbic7CiAgICAgICAgICAgICAg
ICBjb25zdCB1c2VyU3RyID0gKHRoaXMuZW52aXJvbiAmJiB0aGlzLm1vZGUgIT09ICdzdGF0aWMn
KSA/ICcgfCAnICsgdGhpcy5lbnZpcm9uLnVzZXJuYW1lIDogJyc7CiAgICAgICAgICAgICAgICB0
ZXh0LnRleHRDb250ZW50ID0gbW9kZVByZWZpeCArICcgKCcgKyB0aGlzLmRvY3VtZW50cy5sZW5n
dGggKyAnIERva3VtZW50ZSknICsgdXNlclN0cjsKICAgICAgICAgICAgICAgIGJ0bk5ldy5kaXNh
YmxlZCA9IHRydWU7CiAgICAgICAgICAgICAgICBidG5OZXcuc3R5bGUuZGlzcGxheSA9ICh0aGlz
Lm1vZGUgPT09ICdzdGF0aWMnKSA/ICdub25lJyA6ICcnOwogICAgICAgICAgICAgICAgYnRuTmV3
LnRpdGxlID0gJ1NlcnZlciBzdGFydGVuIGbDvHIgQmVhcmJlaXR1bmcnOwogICAgICAgICAgICAg
ICAgYnRuU2VydmVyLnN0eWxlLmRpc3BsYXkgPSAodGhpcy5tb2RlID09PSAnc3RhdGljJykgPyAn
bm9uZScgOiAnJzsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGRvdC5jbGFz
c0xpc3QuYWRkKCdjb25uZWN0ZWQnKTsKICAgICAgICAgICAgICAgIGNvbnN0IHVzZXJTdHIgPSB0
aGlzLmVudmlyb24gPyAnIHwgQmVudXR6ZXI6ICcgKyB0aGlzLmVudmlyb24udXNlcm5hbWUgOiAn
JzsKICAgICAgICAgICAgICAgIGNvbnN0IG1vZGVTdHIgPSB0aGlzLm1vZGUgPT09ICdzZXJ2ZXIn
ID8gJ1NlcnZlcicgOiAnTG9rYWwgKFZvbGx6dWdyaWZmKSc7CiAgICAgICAgICAgICAgICB0ZXh0
LnRleHRDb250ZW50ID0gbW9kZVN0ciArICcgKCcgKyB0aGlzLmRvY3VtZW50cy5sZW5ndGggKyAn
IERva3VtZW50ZSknICsgdXNlclN0cjsKICAgICAgICAgICAgICAgIGJ0bk5ldy5kaXNhYmxlZCA9
IGZhbHNlOwogICAgICAgICAgICAgICAgYnRuTmV3LnN0eWxlLmRpc3BsYXkgPSAnJzsKICAgICAg
ICAgICAgICAgIGJ0bk5ldy50aXRsZSA9ICcnOwogICAgICAgICAgICAgICAgYnRuU2VydmVyLnN0
eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgc2VhcmNoLmRp
c2FibGVkID0gZmFsc2U7CiAgICAgICAgICAgIGJ0blJlY29ubmVjdC5zdHlsZS5kaXNwbGF5ID0g
KHRoaXMubW9kZSA9PT0gJ2ZpbGVzeXN0ZW0nKSA/ICcnIDogJ25vbmUnOwogICAgICAgICAgICAv
LyBMZXNlbW9kdXMtQmFkZ2UgaW0gRm9vdGVyCiAgICAgICAgICAgIHZhciByZWFkQmFkZ2UgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZm9vdGVyUmVhZE1vZGUnKTsKICAgICAgICAgICAgaWYg
KHJlYWRCYWRnZSkgcmVhZEJhZGdlLnN0eWxlLmRpc3BsYXkgPSB0aGlzLnJlYWRPbmx5ID8gJycg
OiAnbm9uZSc7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgYmFyLnN0eWxlLmRpc3BsYXkg
PSAnbm9uZSc7CiAgICAgICAgICAgIGRvdC5jbGFzc0xpc3QucmVtb3ZlKCdjb25uZWN0ZWQnLCAn
cmVhZG9ubHknKTsKICAgICAgICAgICAgc2VhcmNoLmRpc2FibGVkID0gdHJ1ZTsKICAgICAgICAg
ICAgYnRuTmV3LmRpc2FibGVkID0gdHJ1ZTsKICAgICAgICAgICAgYnRuTmV3LnN0eWxlLmRpc3Bs
YXkgPSAnbm9uZSc7CiAgICAgICAgICAgIGJ0blJlY29ubmVjdC5zdHlsZS5kaXNwbGF5ID0gJ25v
bmUnOwogICAgICAgICAgICBidG5TZXJ2ZXIuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgICAg
ICB9CiAgICB9LAoKICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAvLyBTWU5DIChwZXJpb2Rpc2NoIHBydWVm
ZW4gb2IgYW5kZXJlIFVzZXIgZXR3YXMgZ2VhZW5kZXJ0IGhhYmVuKQogICAgLy8gPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
CiAgICBzdGFydFN5bmMoKSB7CiAgICAgICAgaWYgKHRoaXMuc3luY0ludGVydmFsKSBjbGVhcklu
dGVydmFsKHRoaXMuc3luY0ludGVydmFsKTsKICAgICAgICB0aGlzLl9sYXN0VmlzdWFsU3luYyA9
IDA7CgogICAgICAgIHRoaXMuc3luY0ludGVydmFsID0gc2V0SW50ZXJ2YWwoYXN5bmMgKCkgPT4g
ewogICAgICAgICAgICBpZiAoIXRoaXMuY29ubmVjdGVkKSByZXR1cm47CgogICAgICAgICAgICB0
cnkgewogICAgICAgICAgICAgICAgbGV0IGNoYW5nZWQgPSBmYWxzZTsKCiAgICAgICAgICAgICAg
ICBpZiAodGhpcy5tb2RlID09PSAnc2VydmVyJykgewogICAgICAgICAgICAgICAgICAgIGNvbnN0
IHJlcyA9IGF3YWl0IGZldGNoKCcvYXBpL3NjYW4nKTsKICAgICAgICAgICAgICAgICAgICBjb25z
dCBkYXRhID0gYXdhaXQgcmVzLmpzb24oKTsKICAgICAgICAgICAgICAgICAgICBjb25zdCBzZXJ2
ZXJGaWxlcyA9IGRhdGEuZmlsZXMgfHwgW107CgogICAgICAgICAgICAgICAgICAgIC8vIEFuemFo
bCBnZWFlbmRlcnQ/CiAgICAgICAgICAgICAgICAgICAgaWYgKHNlcnZlckZpbGVzLmxlbmd0aCAh
PT0gdGhpcy5kb2N1bWVudHMubGVuZ3RoKSB7IGNoYW5nZWQgPSB0cnVlOyB9CgogICAgICAgICAg
ICAgICAgICAgIC8vIFRpbWVzdGFtcHMgZ2VhZW5kZXJ0PwogICAgICAgICAgICAgICAgICAgIGlm
ICghY2hhbmdlZCkgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGVudHJ5IG9m
IHNlcnZlckZpbGVzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkb2NJZCA9
IGVudHJ5LmZpbGVuYW1lLnNwbGl0KCdfJylbMF07CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBtZXRhID0gdGhpcy5maWxlVGltZXN0YW1wc1tkb2NJZF07CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoIW1ldGEgfHwgZW50cnkubW9kaWZpZWQgIT09IG1ldGEubW9kaWZp
ZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgLy8gRmlsZXN5c3Rl
bS1Nb2R1czogRGF0ZWllbiBwcnVlZmVuCiAgICAgICAgICAgICAgICAgICAgbGV0IHRvdGFsRmls
ZXMgPSAwOwogICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3Qga2F0IG9mICh0aGlzLmNvbmZp
Zy5rYXRlZ29yaWVuIHx8IFtdKSkgewogICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qga2F0RGlyID0gYXdhaXQgdGhpcy5fZGF0YUhh
bmRsZS5nZXREaXJlY3RvcnlIYW5kbGUoa2F0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZvciBhd2FpdCAoY29uc3QgW25hbWUsIGhhbmRsZV0gb2Yga2F0RGlyKSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKG5hbWUuZW5kc1dpdGgoJy5qc29uJykpIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxGaWxlcysrOwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWxlID0gYXdhaXQgaGFuZGxlLmdldEZpbGUo
KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZG9jSWQgPSBuYW1l
LnNwbGl0KCdfJylbMF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IG1ldGEgPSB0aGlzLmZpbGVUaW1lc3RhbXBzW2RvY0lkXTsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKCFtZXRhIHx8IGZpbGUubGFzdE1vZGlmaWVkID4gbWV0YS5tb2Rp
ZmllZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9
IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgICAgICAgIH0gY2F0Y2gge30KICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgICAgaWYgKHRvdGFsRmlsZXMgIT09IHRoaXMuZG9jdW1lbnRzLmxlbmd0aCkg
Y2hhbmdlZCA9IHRydWU7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy8gTG9j
a3MgaW1tZXIgYWt0dWFsaXNpZXJlbiAodW5hYmhhZW5naWcgdm9uIERva3VtZW50ZW5hZW5kZXJ1
bmdlbikKICAgICAgICAgICAgICAgIGF3YWl0IERyaXZlUG9ydGFsLmxvYWRMb2NrcygpOwoKICAg
ICAgICAgICAgICAgIGlmIChjaGFuZ2VkKSB7CiAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhp
cy5sb2FkQWxsRG9jdW1lbnRzKCk7CiAgICAgICAgICAgICAgICAgICAgYXdhaXQgRHJpdmVHb3Zl
cm5hbmNlLmxvYWQoKTsKICAgICAgICAgICAgICAgICAgICBEcml2ZVBvcnRhbC5yZW5kZXIoKTsK
ICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3luY0luZm8nKS50
ZXh0Q29udGVudCA9ICdBa3R1YWxpc2llcnQ6ICcgKyBuZXcgRGF0ZSgpLnRvTG9jYWxlVGltZVN0
cmluZygpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAvLyBB
dWNoIG9obmUgRG9rdW1lbnRlbmFlbmRlcnVuZ2VuIGRpZSBMaXN0ZSBuZXUgcmVuZGVybiAoTG9j
ay1TdGF0dXMpCiAgICAgICAgICAgICAgICAgICAgRHJpdmVQb3J0YWwucmVuZGVyTGlzdCgpOwog
ICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIC8vIFZpc3VlbGxlIEFuemVpZ2UgaW0g
Rm9vdGVyIG51ciBhbGxlIDIwIE1pbnV0ZW4KICAgICAgICAgICAgICAgIGNvbnN0IG5vdyA9IERh
dGUubm93KCk7CiAgICAgICAgICAgICAgICBpZiAobm93IC0gdGhpcy5fbGFzdFZpc3VhbFN5bmMg
Pj0gMTIwMDAwMCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuX2xhc3RWaXN1YWxTeW5jID0g
bm93OwogICAgICAgICAgICAgICAgICAgIGNvbnN0IGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2Zvb3RlclN5bmNTdGF0dXMnKTsKICAgICAgICAgICAgICAgICAgICBpZiAoZWwpIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgZWwudGV4dENvbnRlbnQgPSAnRC5SLkkuVi5FLiBha3R1YWxp
c2llcnQnOwogICAgICAgICAgICAgICAgICAgICAgICBlbC5jbGFzc0xpc3QuYWRkKCd2aXNpYmxl
Jyk7CiAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gZWwuY2xhc3NMaXN0
LnJlbW92ZSgndmlzaWJsZScpLCA0MDAwKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgIH0gY2F0Y2ggKGVycikgewogICAgICAgICAgICAgICAgY29u
c29sZS53YXJuKCdTeW5jLUZlaGxlcjonLCBlcnIpOwogICAgICAgICAgICB9CiAgICAgICAgfSwg
MzAwMDAwKTsKICAgIH0KfTsKCi8vID09PT09PT09PT09PT09PT09PT09PSBQT1JUQUwgVUkgPT09
PT09PT09PT09PT09PT09PT09CgovLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQovLyBNb2R1bDogRHJp
dmVQb3J0YWwgLSBEb2t1bWVudGVubGlzdGUsIEZpbHRlciwgRGV0YWlsYW5zaWNodAovLyBadXN0
YWVuZGlnIGZ1ZXI6IFJlbmRlcm4gZGVyIERva3VtZW50ZW5saXN0ZSwgU3VjaGVyZ2Vibmlzc2Us
IERldGFpbC1WaWV3LCBUYWJlbGxlbmFuc2ljaHQKLy8gU2ljaGVyaGVpdDogQWxsZSBCZW51dHpl
cmRhdGVuIHdlcmRlbiB2b3IgZGVyIERhcnN0ZWxsdW5nIHVlYmVyIGVzY2FwZUhUTUwoKSAvIGVz
Y2FwZUF0dHIoKQovLyAgICAgICAgICAgICBiZXJlaW5pZ3QgKFhTUy1TY2h1dHopLiBTaWNodGJh
cmtlaXRzZmlsdGVyIChjYW5TZWVEb2N1bWVudCkgaXN0IHJlaW4gY2xpZW50c2VpdGlnCi8vICAg
ICAgICAgICAgIHVuZCBkaWVudCBkZXIgQmVudXR6ZXJmdWVocnVuZyAtIGRpZSBzZXJ2ZXJzZWl0
aWdlIEF1dG9yaXNpZXJ1bmcgYmxlaWJ0IG1hc3NnZWJsaWNoLgovLyA9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQpjb25zdCBEcml2ZVBvcnRhbCA9IHsKICAgIGZpbHRlcmVkRG9jdW1lbnRzOiBbXSwKICAg
IHNlbGVjdGVkRG9jSWQ6IG51bGwsCiAgICBjdXJyZW50Q2F0ZWdvcnlGaWx0ZXI6ICdhbGwnLAog
ICAgY3VycmVudFN0YXR1c0ZpbHRlcjogJ2FsbCcsCiAgICB0YWJsZVZpZXdBY3RpdmU6IGZhbHNl
LAogICAgX3RhYmxlU29ydENvbDogJ2Vyc3RlbGx0JywKICAgIF90YWJsZVNvcnREaXI6ICdkZXNj
JywKCiAgICBhc3luYyBpbml0KCkgewogICAgICAgIC8vIFN0YXJ0c2VpdGVuLUhUTUw6IHdpcmQg
aW5pdGlhbCBhdXMgZGVtIERPTSBnZWxlc2VuLCBzcGFldGVyIHZvbgogICAgICAgIC8vIGxvYWRT
dGFydHNlaXRlKCkvc2F2ZVN0YXJ0c2VpdGUoKSBtaXQgZGVtIGdlc3BlaWNoZXJ0ZW4gSW5oYWx0
IHVlYmVyc2NocmllYmVuLgogICAgICAgIHRoaXMuX3dlbGNvbWVIVE1MID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2RvY3VtZW50RGV0YWlsJykuaW5uZXJIVE1MOwogICAgICAgIHRoaXMuc2V0
dXBGaWx0ZXJzKCk7CiAgICAgICAgdGhpcy5zZXR1cEV2ZW50TGlzdGVuZXJzKCk7CiAgICAgICAg
YXdhaXQgdGhpcy5sb2FkTG9ja3MoKTsKICAgICAgICB0aGlzLnJlbmRlcigpOwogICAgfSwKCiAg
ICBzZXR1cEZpbHRlcnMoKSB7CiAgICAgICAgY29uc3QgY2F0Q29udGFpbmVyID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2NhdGVnb3J5RmlsdGVycycpOwogICAgICAgIGNhdENvbnRhaW5lci5p
bm5lckhUTUwgPSAnJzsKCiAgICAgICAgLy8gIkFsbGUiIEJ1dHRvbgogICAgICAgIGNvbnN0IGFs
bEJ0biA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicpOwogICAgICAgIGFsbEJ0bi5j
bGFzc05hbWUgPSAnZmlsdGVyLWJ0biBhY3RpdmUnOwogICAgICAgIGFsbEJ0bi5zZXRBdHRyaWJ1
dGUoJ2RhdGEtZmlsdGVyJywgJ2FsbCcpOwogICAgICAgIGFsbEJ0bi50ZXh0Q29udGVudCA9ICdB
bGxlJzsKICAgICAgICBhbGxCdG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB0aGlz
LnNldENhdGVnb3J5KCdhbGwnKSk7CiAgICAgICAgY2F0Q29udGFpbmVyLmFwcGVuZENoaWxkKGFs
bEJ0bik7CgogICAgICAgIC8vIEthdGVnb3JpZS1CdXR0b25zIChhbHBoYWJldGlzY2ggc29ydGll
cnQsIGF1c2dlYmxlbmRldGUgdWViZXJzcHJpbmdlbikKICAgICAgICB2YXIgaGlkZGVuS2F0cyA9
IERyaXZlRlMuY29uZmlnLmhpZGRlbkthdGVnb3JpZW4gfHwgW107CiAgICAgICAgKERyaXZlRlMu
Y29uZmlnLmthdGVnb3JpZW4gfHwgW10pLnNsaWNlKCkuc29ydChmdW5jdGlvbihhLGIpeyByZXR1
cm4gYS5sb2NhbGVDb21wYXJlKGIsICdkZScpOyB9KS5mb3JFYWNoKGthdCA9PiB7CiAgICAgICAg
ICAgIGlmIChoaWRkZW5LYXRzLmluY2x1ZGVzKGthdCkpIHJldHVybjsKICAgICAgICAgICAgY29u
c3QgYnRuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJyk7CiAgICAgICAgICAgIGJ0
bi5jbGFzc05hbWUgPSAnZmlsdGVyLWJ0bic7CiAgICAgICAgICAgIGJ0bi5zZXRBdHRyaWJ1dGUo
J2RhdGEtZmlsdGVyJywga2F0KTsKICAgICAgICAgICAgYnRuLnRleHRDb250ZW50ID0ga2F0Owog
ICAgICAgICAgICBidG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB0aGlzLnNldENh
dGVnb3J5KGthdCkpOwogICAgICAgICAgICBjYXRDb250YWluZXIuYXBwZW5kQ2hpbGQoYnRuKTsK
ICAgICAgICB9KTsKCiAgICAgICAgLy8gU3RhdHVzLUZpbHRlciAoaW0gTGVzZW1vZHVzIGF1c2Js
ZW5kZW4g4oCTIGVzIGdpYnQgbnVyIGZyZWlnZWdlYmVuZSBEb2t1bWVudGUpCiAgICAgICAgY29u
c3Qgc3RhdHVzQ29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N0YXR1c0ZpbHRl
cnMnKTsKICAgICAgICBzdGF0dXNDb250YWluZXIuaW5uZXJIVE1MID0gJyc7CgogICAgICAgIGlm
IChEcml2ZUZTLm1vZGUgPT09ICdzdGF0aWMnKSB7CiAgICAgICAgICAgIC8vIExlc2Vtb2R1czog
S2VpbmUgU3RhdHVzLUZpbHRlciBub2V0aWcKICAgICAgICAgICAgc3RhdHVzQ29udGFpbmVyLnN0
eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgc3RhdHVz
Q29udGFpbmVyLnN0eWxlLmRpc3BsYXkgPSAnJzsKICAgICAgICAgICAgY29uc3QgYWxsU3RhdHVz
QnRuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJyk7CiAgICAgICAgICAgIGFsbFN0
YXR1c0J0bi5jbGFzc05hbWUgPSAnc3RhdHVzLWZpbHRlci1idG4gYWN0aXZlJzsKICAgICAgICAg
ICAgYWxsU3RhdHVzQnRuLnNldEF0dHJpYnV0ZSgnZGF0YS1zdGF0dXMnLCAnYWxsJyk7CiAgICAg
ICAgICAgIGFsbFN0YXR1c0J0bi50ZXh0Q29udGVudCA9ICdBbGxlIFN0YXR1cyc7CiAgICAgICAg
ICAgIGFsbFN0YXR1c0J0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHRoaXMuc2V0
U3RhdHVzKCdhbGwnKSk7CiAgICAgICAgICAgIHN0YXR1c0NvbnRhaW5lci5hcHBlbmRDaGlsZChh
bGxTdGF0dXNCdG4pOwoKICAgICAgICAgICAgY29uc3QgaXNTVSA9IERyaXZlR292ZXJuYW5jZS5p
c1N1cGVyVXNlcigpOwogICAgICAgICAgICBjb25zdCBpc0ZBID0gRHJpdmVHb3Zlcm5hbmNlLmlz
RmFjaGF1ZnNpY2h0KCk7CiAgICAgICAgICAgIGNvbnN0IHN0YXR1c0NvbmZpZyA9IERyaXZlRlMu
Y29uZmlnLnN0YXR1cyB8fCB7fTsKICAgICAgICAgICAgT2JqZWN0LmtleXMoc3RhdHVzQ29uZmln
KS5mb3JFYWNoKHN0YXR1cyA9PiB7CiAgICAgICAgICAgICAgICAvLyAiQWJnZWxlaG50IiBudXIg
ZnVlciBTdXBlclVzZXIgdW5kIEZhY2hhdWZzaWNodAogICAgICAgICAgICAgICAgaWYgKHN0YXR1
cyA9PT0gJ0FiZ2VsZWhudCcgJiYgIWlzU1UgJiYgIWlzRkEpIHJldHVybjsKICAgICAgICAgICAg
ICAgIGNvbnN0IGNmZyA9IHN0YXR1c0NvbmZpZ1tzdGF0dXNdOwogICAgICAgICAgICAgICAgY29u
c3QgYnRuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJyk7CiAgICAgICAgICAgICAg
ICBidG4uY2xhc3NOYW1lID0gJ3N0YXR1cy1maWx0ZXItYnRuJzsKICAgICAgICAgICAgICAgIGJ0
bi5zZXRBdHRyaWJ1dGUoJ2RhdGEtc3RhdHVzJywgc3RhdHVzKTsKICAgICAgICAgICAgICAgIGJ0
bi5pbm5lckhUTUwgPSBjZmcubGFiZWw7CiAgICAgICAgICAgICAgICBidG4uc3R5bGUuYm9yZGVy
Q29sb3IgPSBjZmcuY29sb3I7CiAgICAgICAgICAgICAgICBidG4uYWRkRXZlbnRMaXN0ZW5lcign
Y2xpY2snLCAoKSA9PiB0aGlzLnNldFN0YXR1cyhzdGF0dXMpKTsKICAgICAgICAgICAgICAgIHN0
YXR1c0NvbnRhaW5lci5hcHBlbmRDaGlsZChidG4pOwogICAgICAgICAgICB9KTsKICAgICAgICB9
CiAgICB9LAoKICAgIHNldHVwRXZlbnRMaXN0ZW5lcnMoKSB7CiAgICAgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ3NlYXJjaElucHV0JykuYWRkRXZlbnRMaXN0ZW5lcigna2V5dXAnLCAoKSA9
PiB0aGlzLnJlbmRlcigpKTsKICAgIH0sCgogICAgc2V0Q2F0ZWdvcnkoY2F0KSB7CiAgICAgICAg
dGhpcy5jdXJyZW50Q2F0ZWdvcnlGaWx0ZXIgPSBjYXQ7CiAgICAgICAgZG9jdW1lbnQucXVlcnlT
ZWxlY3RvckFsbCgnI2NhdGVnb3J5RmlsdGVycyAuZmlsdGVyLWJ0bicpLmZvckVhY2goYnRuID0+
IHsKICAgICAgICAgICAgYnRuLmNsYXNzTGlzdC50b2dnbGUoJ2FjdGl2ZScsIGJ0bi5nZXRBdHRy
aWJ1dGUoJ2RhdGEtZmlsdGVyJykgPT09IGNhdCk7CiAgICAgICAgfSk7CiAgICAgICAgdGhpcy5y
ZW5kZXIoKTsKICAgIH0sCgogICAgc2V0U3RhdHVzKHN0YXR1cykgewogICAgICAgIHRoaXMuY3Vy
cmVudFN0YXR1c0ZpbHRlciA9IHN0YXR1czsKICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9y
QWxsKCcjc3RhdHVzRmlsdGVycyAuc3RhdHVzLWZpbHRlci1idG4nKS5mb3JFYWNoKGJ0biA9PiB7
CiAgICAgICAgICAgIGJ0bi5jbGFzc0xpc3QudG9nZ2xlKCdhY3RpdmUnLCBidG4uZ2V0QXR0cmli
dXRlKCdkYXRhLXN0YXR1cycpID09PSBzdGF0dXMpOwogICAgICAgIH0pOwogICAgICAgIHRoaXMu
cmVuZGVyKCk7CiAgICB9LAoKICAgIHJlbmRlcigpIHsKICAgICAgICBjb25zdCBzZWFyY2ggPSAo
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NlYXJjaElucHV0JykudmFsdWUgfHwgJycpLnRvTG93
ZXJDYXNlKCk7CgogICAgICAgIHRoaXMuZmlsdGVyZWREb2N1bWVudHMgPSBEcml2ZUZTLmRvY3Vt
ZW50cy5maWx0ZXIoZG9jID0+IHsKICAgICAgICAgICAgLy8gR292ZXJuYW5jZTogU2ljaHRiYXJr
ZWl0c3BydWVmdW5nCiAgICAgICAgICAgIGlmICghRHJpdmVHb3Zlcm5hbmNlLmNhblNlZURvY3Vt
ZW50KGRvYykpIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgaWYgKHRoaXMuY3VycmVudENhdGVn
b3J5RmlsdGVyICE9PSAnYWxsJyAmJiBkb2Mua2F0ZWdvcmllICE9PSB0aGlzLmN1cnJlbnRDYXRl
Z29yeUZpbHRlcikgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICBpZiAodGhpcy5jdXJyZW50U3Rh
dHVzRmlsdGVyICE9PSAnYWxsJyAmJiBkb2Muc3RhdHVzICE9PSB0aGlzLmN1cnJlbnRTdGF0dXNG
aWx0ZXIpIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgaWYgKHNlYXJjaCkgewogICAgICAgICAg
ICAgICAgY29uc3QgbWF0Y2ggPSAoZG9jLnRpdGVsIHx8ICcnKS50b0xvd2VyQ2FzZSgpLmluY2x1
ZGVzKHNlYXJjaCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRvYy5pbmhhbHQg
fHwgJycpLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoKSB8fAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAoZG9jLmthdGVnb3JpZSB8fCAnJykudG9Mb3dlckNhc2UoKS5pbmNsdWRl
cyhzZWFyY2gpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkb2Muc2NobGFnd29l
cnRlciB8fCBbXSkuc29tZShrID0+IGsudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2gpKTsK
ICAgICAgICAgICAgICAgIGlmICghbWF0Y2gpIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQog
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9KTsKCiAgICAgICAgdGhpcy5yZW5kZXJM
aXN0KCk7CiAgICAgICAgaWYgKHRoaXMudGFibGVWaWV3QWN0aXZlKSB0aGlzLnJlbmRlclRhYmxl
VmlldygpOwogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkb2NDb3VudCcpLnRleHRD
b250ZW50ID0gdGhpcy5maWx0ZXJlZERvY3VtZW50cy5sZW5ndGggKyAnIC8gJyArIERyaXZlRlMu
ZG9jdW1lbnRzLmxlbmd0aDsKCiAgICAgICAgLy8gVXBkYXRlIGNvbm5lY3Rpb24gdGV4dAogICAg
ICAgIERyaXZlRlMudXBkYXRlQ29ubmVjdGlvblVJKHRydWUpOwogICAgfSwKCiAgICBhY3RpdmVM
b2Nrczoge30sICAvLyBkb2NJZCAtPiB7IHVzZXJuYW1lLCBtaW51dGVzIH0KCiAgICBhc3luYyBs
b2FkTG9ja3MoKSB7CiAgICAgICAgaWYgKERyaXZlRlMubW9kZSAhPT0gJ3NlcnZlcicpIHJldHVy
bjsKICAgICAgICB0cnkgewogICAgICAgICAgICBjb25zdCByZXMgPSBhd2FpdCBmZXRjaCgnL2Fw
aS9sb2NrcycpOwogICAgICAgICAgICBpZiAocmVzLm9rKSB7CiAgICAgICAgICAgICAgICBjb25z
dCBkYXRhID0gYXdhaXQgcmVzLmpzb24oKTsKICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlTG9j
a3MgPSB7fTsKICAgICAgICAgICAgICAgIChkYXRhLmxvY2tzIHx8IFtdKS5mb3JFYWNoKGwgPT4g
ewogICAgICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlTG9ja3NbbC5kb2NJZF0gPSB7IHVzZXJu
YW1lOiBsLnVzZXJuYW1lLCBtaW51dGVzOiBsLm1pbnV0ZXMgfTsKICAgICAgICAgICAgICAgIH0p
OwogICAgICAgICAgICB9CiAgICAgICAgfSBjYXRjaCB7fQogICAgfSwKCiAgICBfc29ydFdpdGhD
aGlsZHJlbihkb2NzKSB7CiAgICAgICAgLy8gU29ydGllcmU6IEVsdGVybmFydGlrZWwgenVlcnN0
LCBLaW5kZXIgZGlyZWt0IGRhaGludGVyCiAgICAgICAgY29uc3QgdG9wTGV2ZWwgPSBkb2NzLmZp
bHRlcihmdW5jdGlvbihkKXsgcmV0dXJuICFkLnBhcmVudElkOyB9KTsKICAgICAgICBjb25zdCBj
aGlsZE1hcCA9IHt9OwogICAgICAgIGRvY3MuZmlsdGVyKGZ1bmN0aW9uKGQpeyByZXR1cm4gZC5w
YXJlbnRJZDsgfSkuZm9yRWFjaChmdW5jdGlvbihkKXsKICAgICAgICAgICAgaWYgKCFjaGlsZE1h
cFtkLnBhcmVudElkXSkgY2hpbGRNYXBbZC5wYXJlbnRJZF0gPSBbXTsKICAgICAgICAgICAgY2hp
bGRNYXBbZC5wYXJlbnRJZF0ucHVzaChkKTsKICAgICAgICB9KTsKICAgICAgICB2YXIgcmVzdWx0
ID0gW107CiAgICAgICAgdG9wTGV2ZWwuZm9yRWFjaChmdW5jdGlvbihwKXsKICAgICAgICAgICAg
cmVzdWx0LnB1c2gocCk7CiAgICAgICAgICAgIGlmIChjaGlsZE1hcFtwLmlkXSkgY2hpbGRNYXBb
cC5pZF0uZm9yRWFjaChmdW5jdGlvbihjKXsgcmVzdWx0LnB1c2goYyk7IH0pOwogICAgICAgIH0p
OwogICAgICAgIC8vIFdhaXNlbi1LaW5kZXIgKEVsdGVybiBuaWNodCBpbiBkZXIgZ2VmaWx0ZXJ0
ZW4gTGlzdGUpCiAgICAgICAgZG9jcy5maWx0ZXIoZnVuY3Rpb24oZCl7IHJldHVybiBkLnBhcmVu
dElkICYmICF0b3BMZXZlbC5maW5kKGZ1bmN0aW9uKHQpe3JldHVybiB0LmlkPT09ZC5wYXJlbnRJ
ZDt9KTsgfSkuZm9yRWFjaChmdW5jdGlvbihkKXsKICAgICAgICAgICAgaWYgKHJlc3VsdC5pbmRl
eE9mKGQpID09PSAtMSkgcmVzdWx0LnB1c2goZCk7CiAgICAgICAgfSk7CiAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgIH0sCgogICAgcmVuZGVyTGlzdCgpIHsKICAgICAgICBjb25zdCBsaXN0Q29u
dGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RvY3VtZW50TGlzdCcpOwogICAgICAg
IGNvbnN0IHN0YXR1c0NvbmZpZyA9IERyaXZlRlMuY29uZmlnLnN0YXR1cyB8fCB7fTsKCiAgICAg
ICAgaWYgKHRoaXMuZmlsdGVyZWREb2N1bWVudHMubGVuZ3RoID09PSAwKSB7CiAgICAgICAgICAg
IGxpc3RDb250YWluZXIuaW5uZXJIVE1MID0gJzxkaXYgY2xhc3M9ImVtcHR5LXN0YXRlIj48cD5L
ZWluZSBEb2t1bWVudGUgZ2VmdW5kZW4uPC9wPjwvZGl2Pic7CiAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICB9CgogICAgICAgIGNvbnN0IHNvcnRlZCA9IHRoaXMuX3NvcnRXaXRoQ2hpbGRyZW4o
dGhpcy5maWx0ZXJlZERvY3VtZW50cyk7CiAgICAgICAgbGlzdENvbnRhaW5lci5pbm5lckhUTUwg
PSBzb3J0ZWQubWFwKGRvYyA9PiB7CiAgICAgICAgICAgIGNvbnN0IGNmZyA9IHN0YXR1c0NvbmZp
Z1tkb2Muc3RhdHVzXSB8fCB7IGNvbG9yOiAnI2VlZScsIHRleHRDb2xvcjogJyMzMzMnLCBpY29u
OiAnJyB9OwogICAgICAgICAgICBjb25zdCBpc0FjdGl2ZSA9IHRoaXMuc2VsZWN0ZWREb2NJZCA9
PT0gZG9jLmlkOwogICAgICAgICAgICBjb25zdCBpc0RyYWZ0ID0gZG9jLnN0YXR1cyA9PT0gJ0Vu
dHd1cmYnOwogICAgICAgICAgICBjb25zdCBoYXNNZWRpYSA9IGRvYy5tZWRpYXMgJiYgZG9jLm1l
ZGlhcy5sZW5ndGggPiAwOwogICAgICAgICAgICBjb25zdCBsb2NrID0gdGhpcy5hY3RpdmVMb2Nr
c1tkb2MuaWRdOwogICAgICAgICAgICBjb25zdCBpc0xvY2tlZCA9IGxvY2sgJiYgbG9jay51c2Vy
bmFtZSAhPT0gKERyaXZlRlMuZW52aXJvbiA/IERyaXZlRlMuZW52aXJvbi51c2VybmFtZSA6ICcn
KTsKCiAgICAgICAgICAgIC8vIFN0YXR1cy1CYWRnZTogIkZyZWlnZWdlYmVuIiBuaWNodCBhbnpl
aWdlbiAoaXN0IGRlciBOb3JtYWx6dXN0YW5kKQogICAgICAgICAgICB2YXIgc2hvd1N0YXR1cyA9
IGRvYy5zdGF0dXMgIT09ICdGcmVpZ2VnZWJlbic7CgogICAgICAgICAgICByZXR1cm4gJzxkaXYg
Y2xhc3M9ImRvY3VtZW50LWl0ZW0nICsgKGlzQWN0aXZlID8gJyBhY3RpdmUnIDogJycpICsgKGlz
RHJhZnQgPyAnIGRyYWZ0JyA6ICcnKSArIChkb2MucGFyZW50SWQgPyAnIGNoaWxkLWFydGljbGUn
IDogJycpICsgJyIgb25jbGljaz0iRHJpdmVQb3J0YWwuc2VsZWN0RG9jdW1lbnQoXCcnICsgRHJp
dmVQb3J0YWwuZXNjYXBlQXR0cihkb2MuaWQpICsgJ1wnKSI+JyArCiAgICAgICAgICAgICAgICAn
PGRpdiBzdHlsZT0iZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO2Fs
aWduLWl0ZW1zOmZsZXgtc3RhcnQ7Ij4nICsKICAgICAgICAgICAgICAgICAgICAnPGRpdiBzdHls
ZT0iZmxleDoxO21pbi13aWR0aDowOyI+JyArCiAgICAgICAgICAgICAgICAgICAgICAgICc8ZGl2
IGNsYXNzPSJkb2MtaXRlbS10aXRsZSI+JyArIHRoaXMuZXNjYXBlSFRNTChkb2MudGl0ZWwpICsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpc0xvY2tlZCA/ICcgPHNwYW4gc3R5bGU9ImZv
bnQtc2l6ZToxMXB4OyBjb2xvcjojZGMzNTQ1OyBmb250LXdlaWdodDo0MDA7IiB0aXRsZT0iV2ly
ZCBiZWFyYmVpdGV0IHZvbiAnICsgdGhpcy5lc2NhcGVBdHRyKGxvY2sudXNlcm5hbWUpICsgJyI+
W2dlc3BlcnJ0OiAnICsgdGhpcy5lc2NhcGVIVE1MKGxvY2sudXNlcm5hbWUpICsgJ108L3NwYW4+
JyA6ICcnKSArCiAgICAgICAgICAgICAgICAgICAgICAgICc8L2Rpdj4nICsKICAgICAgICAgICAg
ICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImRvYy1pdGVtLW1ldGEiPicgKwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImRvYy1pdGVtLWNhdGVnb3J5Ij4nICsgdGhpcy5l
c2NhcGVIVE1MKGRvYy5rYXRlZ29yaWUpICsgJzwvZGl2PicgKwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKGhhc01lZGlhID8gJzxzcGFuIHN0eWxlPSJmb250LXNpemU6MTFweDsgY29sb3I6
dmFyKC0tdGV4dC1tdXRlZCk7Ij4rTWVkaWVuPC9zcGFuPicgOiAnJykgKwogICAgICAgICAgICAg
ICAgICAgICAgICAnPC9kaXY+JyArCiAgICAgICAgICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNz
PSJkb2MtaXRlbS1kYXRlIj4nICsgZm9ybWF0RGF0ZShkb2MuZXJzdGVsbHQpICsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIChkb2MuYmVhcmJlaXRldFZvbiA/ICcgfCAnICsgdGhpcy5lc2Nh
cGVIVE1MKGRvYy5iZWFyYmVpdGV0Vm9uKSA6ICcnKSArCiAgICAgICAgICAgICAgICAgICAgICAg
ICc8L2Rpdj4nICsKICAgICAgICAgICAgICAgICAgICAgICAgKGRvYy5wYXJlbnRJZCA/ICc8ZGl2
IGNsYXNzPSJkb2MtcGFyZW50LXJlZiI+4oazIFVudGVyYXJ0aWtlbDwvZGl2PicgOiAnJykgKwog
ICAgICAgICAgICAgICAgICAgICc8L2Rpdj4nICsKICAgICAgICAgICAgICAgICAgICAoc2hvd1N0
YXR1cyA/ICc8ZGl2IGNsYXNzPSJzdGF0dXMtYmFkZ2Utc21hbGwiIHN0eWxlPSJiYWNrZ3JvdW5k
LWNvbG9yOicgKyBjZmcuY29sb3IgKyAnOyBjb2xvcjonICsgY2ZnLnRleHRDb2xvciArICc7Zmxl
eC1zaHJpbms6MDttYXJnaW4tbGVmdDo4cHg7bWFyZ2luLXRvcDoycHg7Ij4nICsgZG9jLnN0YXR1
cyArICc8L2Rpdj4nIDogJycpICsKICAgICAgICAgICAgICAgICc8L2Rpdj4nICsKICAgICAgICAg
ICAgJzwvZGl2Pic7CiAgICAgICAgfSkuam9pbignJyk7CiAgICB9LAoKICAgIHRvZ2dsZVRhYmxl
VmlldygpIHsKICAgICAgICB0aGlzLnRhYmxlVmlld0FjdGl2ZSA9ICF0aGlzLnRhYmxlVmlld0Fj
dGl2ZTsKICAgICAgICBjb25zdCBjb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
Y29udGFpbmVyJyk7CiAgICAgICAgY29uc3QgdGFibGVDb250YWluZXIgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgndGFibGVWaWV3Q29udGFpbmVyJyk7CiAgICAgICAgY29uc3QgYnRuID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2J0blRhYmxlVmlldycpOwogICAgICAgIGlmICh0aGlzLnRh
YmxlVmlld0FjdGl2ZSkgewogICAgICAgICAgICBjb250YWluZXIuc3R5bGUuZGlzcGxheSA9ICdu
b25lJzsKICAgICAgICAgICAgdGFibGVDb250YWluZXIuY2xhc3NMaXN0LmFkZCgnYWN0aXZlJyk7
CiAgICAgICAgICAgIGJ0bi5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAndmFyKC0tdGV4dC1oZWFk
aW5nKSc7IGJ0bi5zdHlsZS5jb2xvciA9ICd3aGl0ZSc7CiAgICAgICAgICAgIHRoaXMucmVuZGVy
VGFibGVWaWV3KCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgY29udGFpbmVyLnN0eWxl
LmRpc3BsYXkgPSAnJzsKICAgICAgICAgICAgdGFibGVDb250YWluZXIuY2xhc3NMaXN0LnJlbW92
ZSgnYWN0aXZlJyk7CiAgICAgICAgICAgIGJ0bi5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAnJzsg
YnRuLnN0eWxlLmNvbG9yID0gJyc7CiAgICAgICAgfQogICAgfSwKCiAgICBzb3J0VGFibGUoY29s
KSB7CiAgICAgICAgaWYgKHRoaXMuX3RhYmxlU29ydENvbCA9PT0gY29sKSB7CiAgICAgICAgICAg
IHRoaXMuX3RhYmxlU29ydERpciA9IHRoaXMuX3RhYmxlU29ydERpciA9PT0gJ2FzYycgPyAnZGVz
YycgOiAnYXNjJzsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB0aGlzLl90YWJsZVNvcnRD
b2wgPSBjb2w7CiAgICAgICAgICAgIHRoaXMuX3RhYmxlU29ydERpciA9ICdhc2MnOwogICAgICAg
IH0KICAgICAgICB0aGlzLnJlbmRlclRhYmxlVmlldygpOwogICAgfSwKCiAgICBfdGFibGVTZWxl
Y3RlZDogW10sCgogICAgcmVuZGVyVGFibGVWaWV3KCkgewogICAgICAgIGNvbnN0IGRvY3MgPSB0
aGlzLmZpbHRlcmVkRG9jdW1lbnRzOwogICAgICAgIGNvbnN0IGNvbCA9IHRoaXMuX3RhYmxlU29y
dENvbDsKICAgICAgICBjb25zdCBkaXIgPSB0aGlzLl90YWJsZVNvcnREaXIgPT09ICdhc2MnID8g
MSA6IC0xOwogICAgICAgIGNvbnN0IHNvcnRlZCA9IFsuLi5kb2NzXS5zb3J0KGZ1bmN0aW9uKGEs
IGIpIHsKICAgICAgICAgICAgdmFyIHZhLCB2YjsKICAgICAgICAgICAgaWYgKGNvbCA9PT0gJ3Nj
aGxhZ3dvZXJ0ZXInKSB7CiAgICAgICAgICAgICAgICB2YSA9IChhLnNjaGxhZ3dvZXJ0ZXIgfHwg
W10pLmpvaW4oJywnKTsgdmIgPSAoYi5zY2hsYWd3b2VydGVyIHx8IFtdKS5qb2luKCcsJyk7CiAg
ICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICB2YSA9IChhW2NvbF0gfHwgJycpOyB2
YiA9IChiW2NvbF0gfHwgJycpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICh0eXBlb2Yg
dmEgPT09ICdzdHJpbmcnKSByZXR1cm4gdmEubG9jYWxlQ29tcGFyZSh2YiwgJ2RlJykgKiBkaXI7
CiAgICAgICAgICAgIHJldHVybiAodmEgLSB2YikgKiBkaXI7CiAgICAgICAgfSk7CgogICAgICAg
IGNvbnN0IHNjID0gdGhpcy5fdGFibGVTb3J0Q29sOwogICAgICAgIGNvbnN0IHNkID0gdGhpcy5f
dGFibGVTb3J0RGlyOwogICAgICAgIHZhciBjbHMgPSBmdW5jdGlvbihjKSB7IHJldHVybiBjID09
PSBzYyA/ICcgY2xhc3M9InNvcnRlZC0nICsgc2QgKyAnIicgOiAnJzsgfTsKICAgICAgICBjb25z
dCBzdGF0dXNDb25maWcgPSBEcml2ZUZTLmNvbmZpZy5zdGF0dXMgfHwge307CiAgICAgICAgLy8g
QWRtaW4tRnVua3Rpb25lbiAoQ2hlY2tib3hlbiwgU3RpZnQpIG51ciB3ZW5uOgogICAgICAgIC8v
IDEuIFNlcnZlci1Nb2R1cyBha3RpdiAoc2VydmVyc2VpdGlnZXIgU2NodXR6IHZvcmhhbmRlbikK
ICAgICAgICAvLyAyLiBHb3Zlcm5hbmNlLURhdGVuIGdlbGFkZW4gVU5EIFVzZXIgaXN0IFNVL0ZB
CiAgICAgICAgdmFyIGhhc0dvdmVybmFuY2UgPSBEcml2ZUdvdmVybmFuY2UuZGF0YSAmJiBEcml2
ZUdvdmVybmFuY2UuZGF0YS5zdXBlclVzZXJzOwogICAgICAgIHZhciBpc0FkbWluID0gRHJpdmVG
Uy5tb2RlID09PSAnc2VydmVyJyAmJiBoYXNHb3Zlcm5hbmNlICYmIChEcml2ZUdvdmVybmFuY2Uu
aXNTdXBlclVzZXIoKSB8fCBEcml2ZUdvdmVybmFuY2UuaXNGYWNoYXVmc2ljaHQoKSk7CiAgICAg
ICAgdGhpcy5fdGFibGVTZWxlY3RlZCA9IFtdOwoKICAgICAgICAvLyBCdWxrLUFrdGlvbnNsZWlz
dGUgKG51ciBTVS9GQSkKICAgICAgICB2YXIgaHRtbCA9ICcnOwogICAgICAgIGlmIChpc0FkbWlu
KSB7CiAgICAgICAgICAgIGh0bWwgKz0gJzxkaXYgaWQ9InRhYmxlQnVsa0JhciIgc3R5bGU9ImRp
c3BsYXk6bm9uZTtwYWRkaW5nOjhweCAxNHB4O2JhY2tncm91bmQ6dmFyKC0tdGV4dC1oZWFkaW5n
KTtjb2xvcjp3aGl0ZTtib3JkZXItcmFkaXVzOjZweDttYXJnaW4tYm90dG9tOjhweDtkaXNwbGF5
Om5vbmU7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDoxMHB4O2ZvbnQtc2l6ZToxM3B4OyI+JyArCiAg
ICAgICAgICAgICAgICAnPHNwYW4gaWQ9InRhYmxlQnVsa0NvdW50Ij4wIGF1c2dld8OkaGx0PC9z
cGFuPicgKwogICAgICAgICAgICAgICAgJzxidXR0b24gb25jbGljaz0iRHJpdmVQb3J0YWwuYnVs
a1F1aWNrRWRpdCgpIiBzdHlsZT0icGFkZGluZzo0cHggMTJweDtib3JkZXI6MXB4IHNvbGlkIHdo
aXRlO2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Y29sb3I6d2hpdGU7Ym9yZGVyLXJhZGl1czo0cHg7
Y3Vyc29yOnBvaW50ZXI7Zm9udC1zaXplOjEycHg7Ij5TY2huZWxsYmVhcmJlaXR1bmc8L2J1dHRv
bj4nICsKICAgICAgICAgICAgICAgICc8YnV0dG9uIG9uY2xpY2s9IkRyaXZlUG9ydGFsLmJ1bGtE
ZWxldGUoKSIgc3R5bGU9InBhZGRpbmc6NHB4IDEycHg7Ym9yZGVyOjFweCBzb2xpZCAjZjg4O2Jh
Y2tncm91bmQ6dHJhbnNwYXJlbnQ7Y29sb3I6I2ZhYTtib3JkZXItcmFkaXVzOjRweDtjdXJzb3I6
cG9pbnRlcjtmb250LXNpemU6MTJweDsiPkzDtnNjaGVuPC9idXR0b24+JyArCiAgICAgICAgICAg
ICc8L2Rpdj4nOwogICAgICAgIH0KCiAgICAgICAgaHRtbCArPSAnPHRhYmxlIGNsYXNzPSJkcml2
ZS10YWJsZSI+PHRoZWFkPjx0cj4nICsKICAgICAgICAgICAgKGlzQWRtaW4gPyAnPHRoIHN0eWxl
PSJ3aWR0aDozMHB4OyI+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0idGFibGVTZWxlY3RBbGwi
IG9uY2hhbmdlPSJEcml2ZVBvcnRhbC50YWJsZVRvZ2dsZUFsbCh0aGlzLmNoZWNrZWQpIiB0aXRs
ZT0iQWxsZSBhdXN3w6RobGVuIj48L3RoPicgOiAnJykgKwogICAgICAgICAgICAnPHRoJyArIGNs
cygndGl0ZWwnKSArICcgb25jbGljaz0iRHJpdmVQb3J0YWwuc29ydFRhYmxlKFwndGl0ZWxcJyki
PlRpdGVsPC90aD4nICsKICAgICAgICAgICAgJzx0aCcgKyBjbHMoJ2thdGVnb3JpZScpICsgJyBv
bmNsaWNrPSJEcml2ZVBvcnRhbC5zb3J0VGFibGUoXCdrYXRlZ29yaWVcJykiPkthdGVnb3JpZTwv
dGg+JyArCiAgICAgICAgICAgICc8dGgnICsgY2xzKCdzdGF0dXMnKSArICcgb25jbGljaz0iRHJp
dmVQb3J0YWwuc29ydFRhYmxlKFwnc3RhdHVzXCcpIj5TdGF0dXM8L3RoPicgKwogICAgICAgICAg
ICAnPHRoJyArIGNscygnZXJzdGVsbHRWb24nKSArICcgb25jbGljaz0iRHJpdmVQb3J0YWwuc29y
dFRhYmxlKFwnZXJzdGVsbHRWb25cJykiPkVyc3RlbGxlcjwvdGg+JyArCiAgICAgICAgICAgICc8
dGgnICsgY2xzKCdlcnN0ZWxsdCcpICsgJyBvbmNsaWNrPSJEcml2ZVBvcnRhbC5zb3J0VGFibGUo
XCdlcnN0ZWxsdFwnKSI+RXJzdGVsbHQ8L3RoPicgKwogICAgICAgICAgICAnPHRoJyArIGNscygn
Z2VhZW5kZXJ0JykgKyAnIG9uY2xpY2s9IkRyaXZlUG9ydGFsLnNvcnRUYWJsZShcJ2dlYWVuZGVy
dFwnKSI+R2XDpG5kZXJ0PC90aD4nICsKICAgICAgICAgICAgJzx0aCcgKyBjbHMoJ3ZlcnNpb24n
KSArICcgb25jbGljaz0iRHJpdmVQb3J0YWwuc29ydFRhYmxlKFwndmVyc2lvblwnKSI+VmVyc2lv
bjwvdGg+JyArCiAgICAgICAgICAgIChpc0FkbWluID8gJzx0aCBzdHlsZT0id2lkdGg6NDBweDsi
PjwvdGg+JyA6ICcnKSArCiAgICAgICAgJzwvdHI+PC90aGVhZD48dGJvZHk+JzsKCiAgICAgICAg
c29ydGVkLmZvckVhY2goZnVuY3Rpb24oZG9jKSB7CiAgICAgICAgICAgIHZhciBjZmcgPSBzdGF0
dXNDb25maWdbZG9jLnN0YXR1c10gfHwgeyBjb2xvcjogJyNlZWUnLCB0ZXh0Q29sb3I6ICcjMzMz
JywgaWNvbjogJycgfTsKICAgICAgICAgICAgaHRtbCArPSAnPHRyPicgKwogICAgICAgICAgICAg
ICAgKGlzQWRtaW4gPyAnPHRkIG9uY2xpY2s9ImV2ZW50LnN0b3BQcm9wYWdhdGlvbigpIj48aW5w
dXQgdHlwZT0iY2hlY2tib3giIGNsYXNzPSJ0YWJsZS1yb3ctY2IiIHZhbHVlPSInICsgRHJpdmVQ
b3J0YWwuZXNjYXBlQXR0cihkb2MuaWQpICsgJyIgb25jaGFuZ2U9IkRyaXZlUG9ydGFsLnRhYmxl
U2VsZWN0aW9uQ2hhbmdlZCgpIj48L3RkPicgOiAnJykgKwogICAgICAgICAgICAgICAgJzx0ZCBv
bmNsaWNrPSJEcml2ZVBvcnRhbC5fdGFibGVPcGVuRG9jKFwnJyArIERyaXZlUG9ydGFsLmVzY2Fw
ZUF0dHIoZG9jLmlkKSArICdcJyk7IiBzdHlsZT0iY3Vyc29yOnBvaW50ZXI7Ij48c3Ryb25nPicg
KyBEcml2ZVBvcnRhbC5lc2NhcGVIVE1MKGRvYy50aXRlbCkgKyAnPC9zdHJvbmc+PC90ZD4nICsK
ICAgICAgICAgICAgICAgICc8dGQ+JyArIERyaXZlUG9ydGFsLmVzY2FwZUhUTUwoZG9jLmthdGVn
b3JpZSkgKyAnPC90ZD4nICsKICAgICAgICAgICAgICAgICc8dGQ+PHNwYW4gY2xhc3M9InN0YXR1
cy1iYWRnZS1zbWFsbCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6JyArIGNmZy5jb2xvciArICc7
Y29sb3I6JyArIGNmZy50ZXh0Q29sb3IgKyAnOyI+JyArIGRvYy5zdGF0dXMgKyAnPC9zcGFuPjwv
dGQ+JyArCiAgICAgICAgICAgICAgICAnPHRkPicgKyBEcml2ZVBvcnRhbC5lc2NhcGVIVE1MKGRv
Yy5lcnN0ZWxsdFZvbiB8fCAnLScpICsgJzwvdGQ+JyArCiAgICAgICAgICAgICAgICAnPHRkPicg
KyBmb3JtYXREYXRlKGRvYy5lcnN0ZWxsdCkgKyAnPC90ZD4nICsKICAgICAgICAgICAgICAgICc8
dGQ+JyArIGZvcm1hdERhdGUoZG9jLmdlYWVuZGVydCkgKyAnPC90ZD4nICsKICAgICAgICAgICAg
ICAgICc8dGQ+JyArIERyaXZlUG9ydGFsLmVzY2FwZUhUTUwoZG9jLnZlcnNpb24gfHwgJy0nKSAr
ICc8L3RkPicgKwogICAgICAgICAgICAgICAgKGlzQWRtaW4gPyAnPHRkIG9uY2xpY2s9ImV2ZW50
LnN0b3BQcm9wYWdhdGlvbigpIj48YnV0dG9uIG9uY2xpY2s9IkRyaXZlUG9ydGFsLnF1aWNrRWRp
dFNpbmdsZShcJycgKyBEcml2ZVBvcnRhbC5lc2NhcGVBdHRyKGRvYy5pZCkgKyAnXCcpIiBzdHls
ZT0icGFkZGluZzoycHggOHB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyLWNvbG9yKTti
YWNrZ3JvdW5kOnZhcigtLWJnLWNhcmQtYWx0KTtib3JkZXItcmFkaXVzOjNweDtjdXJzb3I6cG9p
bnRlcjtmb250LXNpemU6MTFweDtjb2xvcjp2YXIoLS10ZXh0LXNlY29uZGFyeSk7IiB0aXRsZT0i
U2NobmVsbGJlYXJiZWl0dW5nIj7inI48L2J1dHRvbj48L3RkPicgOiAnJykgKwogICAgICAgICAg
ICAnPC90cj4nOwogICAgICAgIH0pOwogICAgICAgIGh0bWwgKz0gJzwvdGJvZHk+PC90YWJsZT4n
OwogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0YWJsZVZpZXdDb250YWluZXInKS5p
bm5lckhUTUwgPSBodG1sOwogICAgfSwKCiAgICBfdGFibGVPcGVuRG9jKGRvY0lkKSB7CiAgICAg
ICAgdGhpcy50YWJsZVZpZXdBY3RpdmUgPSBmYWxzZTsKICAgICAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnY29udGFpbmVyJykuc3R5bGUuZGlzcGxheSA9ICcnOwogICAgICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCd0YWJsZVZpZXdDb250YWluZXInKS5jbGFzc0xpc3QucmVtb3ZlKCdh
Y3RpdmUnKTsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYnRuVGFibGVWaWV3Jyku
c3R5bGUuYmFja2dyb3VuZENvbG9yID0gJyc7CiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2J0blRhYmxlVmlldycpLnN0eWxlLmNvbG9yID0gJyc7CiAgICAgICAgdGhpcy5zZWxlY3RE
b2N1bWVudChkb2NJZCk7CiAgICB9LAoKICAgIHRhYmxlVG9nZ2xlQWxsKGNoZWNrZWQpIHsKICAg
ICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcudGFibGUtcm93LWNiJykuZm9yRWFjaChm
dW5jdGlvbihjYikgeyBjYi5jaGVja2VkID0gY2hlY2tlZDsgfSk7CiAgICAgICAgdGhpcy50YWJs
ZVNlbGVjdGlvbkNoYW5nZWQoKTsKICAgIH0sCgogICAgdGFibGVTZWxlY3Rpb25DaGFuZ2VkKCkg
ewogICAgICAgIHZhciBzZWxlY3RlZCA9IFtdOwogICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0
b3JBbGwoJy50YWJsZS1yb3ctY2I6Y2hlY2tlZCcpLmZvckVhY2goZnVuY3Rpb24oY2IpIHsgc2Vs
ZWN0ZWQucHVzaChjYi52YWx1ZSk7IH0pOwogICAgICAgIHRoaXMuX3RhYmxlU2VsZWN0ZWQgPSBz
ZWxlY3RlZDsKICAgICAgICB2YXIgYmFyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RhYmxl
QnVsa0JhcicpOwogICAgICAgIGlmIChiYXIpIHsKICAgICAgICAgICAgYmFyLnN0eWxlLmRpc3Bs
YXkgPSBzZWxlY3RlZC5sZW5ndGggPiAwID8gJ2ZsZXgnIDogJ25vbmUnOwogICAgICAgICAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGFibGVCdWxrQ291bnQnKS50ZXh0Q29udGVudCA9IHNl
bGVjdGVkLmxlbmd0aCArICcgYXVzZ2V3w6RobHQnOwogICAgICAgIH0KICAgIH0sCgogICAgYnVs
a1F1aWNrRWRpdCgpIHsKICAgICAgICBpZiAodGhpcy5fdGFibGVTZWxlY3RlZC5sZW5ndGggPT09
IDApIHJldHVybjsKICAgICAgICB2YXIgZG9jcyA9IHRoaXMuX3RhYmxlU2VsZWN0ZWQubWFwKGZ1
bmN0aW9uKGlkKSB7IHJldHVybiBEcml2ZUZTLmRvY3VtZW50cy5maW5kKGZ1bmN0aW9uKGQpIHsg
cmV0dXJuIGQuaWQgPT09IGlkOyB9KTsgfSkuZmlsdGVyKEJvb2xlYW4pOwogICAgICAgIHZhciBr
YXRlZ29yaWVuID0gRHJpdmVGUy5jb25maWcua2F0ZWdvcmllbiB8fCBbXTsKICAgICAgICB2YXIg
c3RhdHVzTGlzdCA9IE9iamVjdC5rZXlzKERyaXZlRlMuY29uZmlnLnN0YXR1cyB8fCB7fSk7Cgog
ICAgICAgIHZhciBtb2RhbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgICAg
IG1vZGFsLnN0eWxlLmNzc1RleHQgPSAncG9zaXRpb246Zml4ZWQ7dG9wOjA7bGVmdDowO3dpZHRo
OjEwMCU7aGVpZ2h0OjEwMCU7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLDAuNSk7ei1pbmRleDoxMDUw
MDtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7
JzsKICAgICAgICBtb2RhbC5vbmNsaWNrID0gZnVuY3Rpb24oZSkgeyBpZiAoZS50YXJnZXQgPT09
IG1vZGFsKSBtb2RhbC5yZW1vdmUoKTsgfTsKCiAgICAgICAgdmFyIGlucHV0U3R5bGUgPSAnd2lk
dGg6MTAwJTtwYWRkaW5nOjZweCAxMHB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyLWNv
bG9yKTtib3JkZXItcmFkaXVzOjRweDtmb250LXNpemU6MTNweDtiYWNrZ3JvdW5kOnZhcigtLWJn
LWlucHV0KTtjb2xvcjp2YXIoLS10ZXh0LXByaW1hcnkpOyc7CgogICAgICAgIHZhciBodG1sID0g
JzxkaXYgc3R5bGU9ImJhY2tncm91bmQ6dmFyKC0tYmctY2FyZCk7Ym9yZGVyLXJhZGl1czoxMHB4
O3BhZGRpbmc6MjBweCAyNHB4O21heC13aWR0aDo1MDBweDt3aWR0aDo5MCU7Ym94LXNoYWRvdzow
IDhweCAzMnB4IHJnYmEoMCwwLDAsMC4zKTttYXgtaGVpZ2h0Ojg1dmg7b3ZlcmZsb3cteTphdXRv
OyI+JyArCiAgICAgICAgICAgICc8aDMgc3R5bGU9ImNvbG9yOnZhcigtLXRleHQtaGVhZGluZyk7
bWFyZ2luLWJvdHRvbTo2cHg7Ij5TY2huZWxsYmVhcmJlaXR1bmc8L2gzPicgKwogICAgICAgICAg
ICAnPHAgc3R5bGU9ImZvbnQtc2l6ZToxMnB4O2NvbG9yOnZhcigtLXRleHQtbXV0ZWQpO21hcmdp
bi1ib3R0b206MTRweDsiPicgKyBkb2NzLmxlbmd0aCArICcgQXJ0aWtlbCBhdXNnZXfDpGhsdC4g
TnVyIGF1c2dlZsO8bGx0ZSBGZWxkZXIgd2VyZGVuIGdlw6RuZGVydC48L3A+JyArCgogICAgICAg
ICAgICAnPGRpdiBzdHlsZT0ibWFyZ2luLWJvdHRvbToxMHB4OyI+PGxhYmVsIHN0eWxlPSJmb250
LXNpemU6MTJweDtmb250LXdlaWdodDo2MDA7Y29sb3I6dmFyKC0tdGV4dC1zZWNvbmRhcnkpO2Rp
c3BsYXk6YmxvY2s7bWFyZ2luLWJvdHRvbTozcHg7Ij5LYXRlZ29yaWUgw6RuZGVybjwvbGFiZWw+
JyArCiAgICAgICAgICAgICc8c2VsZWN0IGlkPSJidWxrS2F0ZWdvcmllIiBzdHlsZT0iJyArIGlu
cHV0U3R5bGUgKyAnIj48b3B0aW9uIHZhbHVlPSIiPuKAlCBOaWNodCDDpG5kZXJuIOKAlDwvb3B0
aW9uPic7CiAgICAgICAga2F0ZWdvcmllbi5mb3JFYWNoKGZ1bmN0aW9uKGspIHsgaHRtbCArPSAn
PG9wdGlvbiB2YWx1ZT0iJyArIERyaXZlUG9ydGFsLmVzY2FwZUF0dHIoaykgKyAnIj4nICsgRHJp
dmVQb3J0YWwuZXNjYXBlSFRNTChrKSArICc8L29wdGlvbj4nOyB9KTsKICAgICAgICBodG1sICs9
ICc8L3NlbGVjdD48L2Rpdj4nICsKCiAgICAgICAgICAgICc8ZGl2IHN0eWxlPSJtYXJnaW4tYm90
dG9tOjEwcHg7Ij48bGFiZWwgc3R5bGU9ImZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjYwMDtj
b2xvcjp2YXIoLS10ZXh0LXNlY29uZGFyeSk7ZGlzcGxheTpibG9jazttYXJnaW4tYm90dG9tOjNw
eDsiPlN0YXR1cyDDpG5kZXJuPC9sYWJlbD4nICsKICAgICAgICAgICAgJzxzZWxlY3QgaWQ9ImJ1
bGtTdGF0dXMiIHN0eWxlPSInICsgaW5wdXRTdHlsZSArICciPjxvcHRpb24gdmFsdWU9IiI+4oCU
IE5pY2h0IMOkbmRlcm4g4oCUPC9vcHRpb24+JzsKICAgICAgICBzdGF0dXNMaXN0LmZvckVhY2go
ZnVuY3Rpb24ocykgeyBodG1sICs9ICc8b3B0aW9uIHZhbHVlPSInICsgRHJpdmVQb3J0YWwuZXNj
YXBlQXR0cihzKSArICciPicgKyBEcml2ZVBvcnRhbC5lc2NhcGVIVE1MKHMpICsgJzwvb3B0aW9u
Pic7IH0pOwogICAgICAgIGh0bWwgKz0gJzwvc2VsZWN0PjwvZGl2PicgKwoKICAgICAgICAgICAg
JzxkaXYgc3R5bGU9Im1hcmdpbi1ib3R0b206MTBweDsiPjxsYWJlbCBzdHlsZT0iZm9udC1zaXpl
OjEycHg7Zm9udC13ZWlnaHQ6NjAwO2NvbG9yOnZhcigtLXRleHQtc2Vjb25kYXJ5KTtkaXNwbGF5
OmJsb2NrO21hcmdpbi1ib3R0b206M3B4OyI+U2NobGFnd29ydCBoaW56dWbDvGdlbjwvbGFiZWw+
JyArCiAgICAgICAgICAgICc8aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImJ1bGtBZGRUYWciIHBsYWNl
aG9sZGVyPSJOZXVlcyBTY2hsYWd3b3J0Li4uIiBzdHlsZT0iJyArIGlucHV0U3R5bGUgKyAnIj48
L2Rpdj4nICsKCiAgICAgICAgICAgICc8ZGl2IHN0eWxlPSJtYXJnaW4tYm90dG9tOjEwcHg7Ij48
bGFiZWwgc3R5bGU9ImZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjYwMDtjb2xvcjp2YXIoLS10
ZXh0LXNlY29uZGFyeSk7ZGlzcGxheTpibG9jazttYXJnaW4tYm90dG9tOjNweDsiPlNjaGxhZ3dv
cnQgZW50ZmVybmVuPC9sYWJlbD4nICsKICAgICAgICAgICAgJzxpbnB1dCB0eXBlPSJ0ZXh0IiBp
ZD0iYnVsa1JlbW92ZVRhZyIgcGxhY2Vob2xkZXI9Ilp1IGVudGZlcm5lbmRlcyBTY2hsYWd3b3J0
Li4uIiBzdHlsZT0iJyArIGlucHV0U3R5bGUgKyAnIj48L2Rpdj4nICsKCiAgICAgICAgICAgICc8
ZGl2IHN0eWxlPSJkaXNwbGF5OmZsZXg7Z2FwOjhweDtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmQ7
bWFyZ2luLXRvcDoxNHB4OyI+JyArCiAgICAgICAgICAgICAgICAnPGJ1dHRvbiBvbmNsaWNrPSJ0
aGlzLmNsb3Nlc3QoXCdkaXZbc3R5bGVdXCcpLnBhcmVudEVsZW1lbnQucmVtb3ZlKCkiIHN0eWxl
PSJwYWRkaW5nOjhweCAxNnB4O2JvcmRlci1yYWRpdXM6NHB4O2JvcmRlcjoxcHggc29saWQgdmFy
KC0tYm9yZGVyLWNvbG9yKTtiYWNrZ3JvdW5kOnZhcigtLWJnLWNhcmQpO2NvbG9yOnZhcigtLXRl
eHQtcHJpbWFyeSk7Y3Vyc29yOnBvaW50ZXI7Ij5BYmJyZWNoZW48L2J1dHRvbj4nICsKICAgICAg
ICAgICAgICAgICc8YnV0dG9uIG9uY2xpY2s9IkRyaXZlUG9ydGFsLl9jb25maXJtQnVsa0VkaXQo
KSIgc3R5bGU9InBhZGRpbmc6OHB4IDE2cHg7Ym9yZGVyLXJhZGl1czo0cHg7Ym9yZGVyOm5vbmU7
YmFja2dyb3VuZDp2YXIoLS10ZXh0LWhlYWRpbmcpO2NvbG9yOndoaXRlO2N1cnNvcjpwb2ludGVy
O2ZvbnQtd2VpZ2h0OjYwMDsiPsOEbmRlcnVuZ2VuIGFud2VuZGVuPC9idXR0b24+JyArCiAgICAg
ICAgICAgICc8L2Rpdj48L2Rpdj4nOwoKICAgICAgICBtb2RhbC5pbm5lckhUTUwgPSBodG1sOwog
ICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobW9kYWwpOwogICAgfSwKCiAgICBhc3lu
YyBfY29uZmlybUJ1bGtFZGl0KCkgewogICAgICAgIHZhciBuZXdLYXQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnYnVsa0thdGVnb3JpZScpLnZhbHVlOwogICAgICAgIHZhciBuZXdTdGF0dXMg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYnVsa1N0YXR1cycpLnZhbHVlOwogICAgICAgIHZh
ciBhZGRUYWcgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYnVsa0FkZFRhZycpLnZhbHVlLnRy
aW0oKTsKICAgICAgICB2YXIgcmVtb3ZlVGFnID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2J1
bGtSZW1vdmVUYWcnKS52YWx1ZS50cmltKCk7CgogICAgICAgIGlmICghbmV3S2F0ICYmICFuZXdT
dGF0dXMgJiYgIWFkZFRhZyAmJiAhcmVtb3ZlVGFnKSB7CiAgICAgICAgICAgIHNob3dUb2FzdCgn
Qml0dGUgbWluZGVzdGVucyBlaW4gRmVsZCBhdXNmw7xsbGVuJywgJ3dhcm5pbmcnKTsKICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgLy8gTW9kYWwgc2NobGllc3NlbgogICAg
ICAgIHZhciBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdidWxrS2F0ZWdvcmllJyk7CiAg
ICAgICAgaWYgKGVsKSB7IHZhciBtID0gZWw7IHdoaWxlIChtLnBhcmVudEVsZW1lbnQgIT09IGRv
Y3VtZW50LmJvZHkpIG0gPSBtLnBhcmVudEVsZW1lbnQ7IG0ucmVtb3ZlKCk7IH0KCiAgICAgICAg
dmFyIGNvdW50ID0gMDsKICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX3RhYmxlU2Vs
ZWN0ZWQubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgdmFyIGRvYyA9IERyaXZlRlMuZG9jdW1l
bnRzLmZpbmQoZnVuY3Rpb24oZCkgeyByZXR1cm4gZC5pZCA9PT0gRHJpdmVQb3J0YWwuX3RhYmxl
U2VsZWN0ZWRbaV07IH0pOwogICAgICAgICAgICBpZiAoIWRvYykgY29udGludWU7CiAgICAgICAg
ICAgIGlmIChuZXdLYXQpIGRvYy5rYXRlZ29yaWUgPSBuZXdLYXQ7CiAgICAgICAgICAgIGlmIChu
ZXdTdGF0dXMpIHsKICAgICAgICAgICAgICAgIGRvYy52ZXJzaW9uID0gY2FsY3VsYXRlVmVyc2lv
bihkb2MsIGRvYy5pbmhhbHQsIGRvYy5pbmhhbHQsIG5ld1N0YXR1cyk7CiAgICAgICAgICAgICAg
ICBkb2Muc3RhdHVzID0gbmV3U3RhdHVzOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChh
ZGRUYWcpIHsKICAgICAgICAgICAgICAgIGlmICghZG9jLnNjaGxhZ3dvZXJ0ZXIpIGRvYy5zY2hs
YWd3b2VydGVyID0gW107CiAgICAgICAgICAgICAgICBpZiAoIWRvYy5zY2hsYWd3b2VydGVyLmlu
Y2x1ZGVzKGFkZFRhZykpIGRvYy5zY2hsYWd3b2VydGVyLnB1c2goYWRkVGFnKTsKICAgICAgICAg
ICAgfQogICAgICAgICAgICBpZiAocmVtb3ZlVGFnICYmIGRvYy5zY2hsYWd3b2VydGVyKSB7CiAg
ICAgICAgICAgICAgICBkb2Muc2NobGFnd29lcnRlciA9IGRvYy5zY2hsYWd3b2VydGVyLmZpbHRl
cihmdW5jdGlvbihrKSB7IHJldHVybiBrICE9PSByZW1vdmVUYWc7IH0pOwogICAgICAgICAgICB9
CiAgICAgICAgICAgIGF3YWl0IERyaXZlRlMuc2F2ZURvY3VtZW50KGRvYyk7CiAgICAgICAgICAg
IGNvdW50Kys7CiAgICAgICAgfQogICAgICAgIHNob3dUb2FzdChjb3VudCArICcgQXJ0aWtlbCBh
a3R1YWxpc2llcnQnLCAnc3VjY2VzcycpOwogICAgICAgIHRoaXMucmVuZGVyKCk7CiAgICAgICAg
dGhpcy5yZW5kZXJUYWJsZVZpZXcoKTsKICAgIH0sCgogICAgYnVsa0RlbGV0ZSgpIHsKICAgICAg
ICB2YXIgY291bnQgPSB0aGlzLl90YWJsZVNlbGVjdGVkLmxlbmd0aDsKICAgICAgICBpZiAoY291
bnQgPT09IDApIHJldHVybjsKCiAgICAgICAgdmFyIG1vZGFsID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnZGl2Jyk7CiAgICAgICAgbW9kYWwuc3R5bGUuY3NzVGV4dCA9ICdwb3NpdGlvbjpmaXhl
ZDt0b3A6MDtsZWZ0OjA7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtiYWNrZ3JvdW5kOnJnYmEoMCww
LDAsMC41KTt6LWluZGV4OjEwNTAwO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVz
dGlmeS1jb250ZW50OmNlbnRlcjsnOwogICAgICAgIG1vZGFsLm9uY2xpY2sgPSBmdW5jdGlvbihl
KSB7IGlmIChlLnRhcmdldCA9PT0gbW9kYWwpIG1vZGFsLnJlbW92ZSgpOyB9OwogICAgICAgIG1v
ZGFsLmlubmVySFRNTCA9CiAgICAgICAgICAgICc8ZGl2IHN0eWxlPSJiYWNrZ3JvdW5kOnZhcigt
LWJnLWNhcmQpO2JvcmRlci1yYWRpdXM6MTBweDtwYWRkaW5nOjI0cHggMjhweDttYXgtd2lkdGg6
NDIwcHg7d2lkdGg6OTAlO2JveC1zaGFkb3c6MCA4cHggMzJweCByZ2JhKDAsMCwwLDAuMyk7Ij4n
ICsKICAgICAgICAgICAgICAgICc8aDMgc3R5bGU9ImNvbG9yOiNkYzM1NDU7bWFyZ2luLWJvdHRv
bToxMHB4OyI+JyArIGNvdW50ICsgJyBBcnRpa2VsIGzDtnNjaGVuPzwvaDM+JyArCiAgICAgICAg
ICAgICAgICAnPHAgc3R5bGU9ImNvbG9yOnZhcigtLXRleHQtcHJpbWFyeSk7Zm9udC1zaXplOjE0
cHg7bGluZS1oZWlnaHQ6MS43O21hcmdpbi1ib3R0b206MTRweDsiPicgKwogICAgICAgICAgICAg
ICAgICAgICdEaWUgYXVzZ2V3w6RobHRlbiBBcnRpa2VsIHdlcmRlbiBpbiBkZW4gUGFwaWVya29y
YiB2ZXJzY2hvYmVuIHVuZCBrw7ZubmVuIDI4IFRhZ2UgbGFuZyB3aWVkZXJoZXJnZXN0ZWxsdCB3
ZXJkZW4uJyArCiAgICAgICAgICAgICAgICAnPC9wPicgKwogICAgICAgICAgICAgICAgJzxsYWJl
bCBzdHlsZT0iZm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NjAwO2NvbG9yOnZhcigtLXRleHQt
c2Vjb25kYXJ5KTtkaXNwbGF5OmJsb2NrO21hcmdpbi1ib3R0b206NHB4OyI+TlctS2VubnVuZyB6
dXIgQmVzdMOkdGlndW5nPC9sYWJlbD4nICsKICAgICAgICAgICAgICAgICc8aW5wdXQgdHlwZT0i
dGV4dCIgaWQ9ImJ1bGtEZWxldGVOVyIgcGxhY2Vob2xkZXI9Ik5XLUtlbm51bmcgZWluZ2ViZW4u
Li4iIHN0eWxlPSJ3aWR0aDoxMDAlO3BhZGRpbmc6OHB4IDEwcHg7Ym9yZGVyOjFweCBzb2xpZCB2
YXIoLS1ib3JkZXItY29sb3IpO2JvcmRlci1yYWRpdXM6NHB4O2ZvbnQtc2l6ZToxNHB4O2JhY2tn
cm91bmQ6dmFyKC0tYmctaW5wdXQpO2NvbG9yOnZhcigtLXRleHQtcHJpbWFyeSk7bWFyZ2luLWJv
dHRvbToxNHB4OyI+JyArCiAgICAgICAgICAgICAgICAnPGRpdiBzdHlsZT0iZGlzcGxheTpmbGV4
O2dhcDo4cHg7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kOyI+JyArCiAgICAgICAgICAgICAgICAg
ICAgJzxidXR0b24gb25jbGljaz0idGhpcy5jbG9zZXN0KFwnZGl2W3N0eWxlXVwnKS5wYXJlbnRF
bGVtZW50LnJlbW92ZSgpIiBzdHlsZT0icGFkZGluZzo4cHggMTZweDtib3JkZXItcmFkaXVzOjRw
eDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlci1jb2xvcik7YmFja2dyb3VuZDp2YXIoLS1i
Zy1jYXJkKTtjb2xvcjp2YXIoLS10ZXh0LXByaW1hcnkpO2N1cnNvcjpwb2ludGVyOyI+QWJicmVj
aGVuPC9idXR0b24+JyArCiAgICAgICAgICAgICAgICAgICAgJzxidXR0b24gb25jbGljaz0iRHJp
dmVQb3J0YWwuX2NvbmZpcm1CdWxrRGVsZXRlKCkiIHN0eWxlPSJwYWRkaW5nOjhweCAxNnB4O2Jv
cmRlci1yYWRpdXM6NHB4O2JvcmRlcjpub25lO2JhY2tncm91bmQ6I2RjMzU0NTtjb2xvcjp3aGl0
ZTtjdXJzb3I6cG9pbnRlcjtmb250LXdlaWdodDo2MDA7Ij5Mw7ZzY2hlbjwvYnV0dG9uPicgKwog
ICAgICAgICAgICAgICAgJzwvZGl2PicgKwogICAgICAgICAgICAnPC9kaXY+JzsKICAgICAgICBk
b2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKG1vZGFsKTsKICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uKCkgeyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYnVsa0RlbGV0ZU5XJykuZm9jdXMoKTsg
fSwgNTApOwogICAgfSwKCiAgICBxdWlja0VkaXRTaW5nbGUoZG9jSWQpIHsKICAgICAgICB2YXIg
ZG9jID0gRHJpdmVGUy5kb2N1bWVudHMuZmluZChmdW5jdGlvbihkKSB7IHJldHVybiBkLmlkID09
PSBkb2NJZDsgfSk7CiAgICAgICAgaWYgKCFkb2MpIHJldHVybjsKICAgICAgICB2YXIga2F0ZWdv
cmllbiA9IERyaXZlRlMuY29uZmlnLmthdGVnb3JpZW4gfHwgW107CiAgICAgICAgdmFyIHN0YXR1
c0xpc3QgPSBPYmplY3Qua2V5cyhEcml2ZUZTLmNvbmZpZy5zdGF0dXMgfHwge30pOwogICAgICAg
IHZhciBpbnB1dFN0eWxlID0gJ3dpZHRoOjEwMCU7cGFkZGluZzo2cHggMTBweDtib3JkZXI6MXB4
IHNvbGlkIHZhcigtLWJvcmRlci1jb2xvcik7Ym9yZGVyLXJhZGl1czo0cHg7Zm9udC1zaXplOjEz
cHg7YmFja2dyb3VuZDp2YXIoLS1iZy1pbnB1dCk7Y29sb3I6dmFyKC0tdGV4dC1wcmltYXJ5KTsn
OwoKICAgICAgICB2YXIgbW9kYWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAg
ICAgICBtb2RhbC5zdHlsZS5jc3NUZXh0ID0gJ3Bvc2l0aW9uOmZpeGVkO3RvcDowO2xlZnQ6MDt3
aWR0aDoxMDAlO2hlaWdodDoxMDAlO2JhY2tncm91bmQ6cmdiYSgwLDAsMCwwLjUpO3otaW5kZXg6
MTA1MDA7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2Vu
dGVyOyc7CiAgICAgICAgbW9kYWwub25jbGljayA9IGZ1bmN0aW9uKGUpIHsgaWYgKGUudGFyZ2V0
ID09PSBtb2RhbCkgbW9kYWwucmVtb3ZlKCk7IH07CgogICAgICAgIHZhciBodG1sID0gJzxkaXYg
c3R5bGU9ImJhY2tncm91bmQ6dmFyKC0tYmctY2FyZCk7Ym9yZGVyLXJhZGl1czoxMHB4O3BhZGRp
bmc6MjBweCAyNHB4O21heC13aWR0aDo0ODBweDt3aWR0aDo5MCU7Ym94LXNoYWRvdzowIDhweCAz
MnB4IHJnYmEoMCwwLDAsMC4zKTsiPicgKwogICAgICAgICAgICAnPGgzIHN0eWxlPSJjb2xvcjp2
YXIoLS10ZXh0LWhlYWRpbmcpO21hcmdpbi1ib3R0b206MTRweDsiPlNjaG5lbGxiZWFyYmVpdHVu
ZzwvaDM+JyArCgogICAgICAgICAgICAnPGRpdiBzdHlsZT0ibWFyZ2luLWJvdHRvbTo4cHg7Ij48
bGFiZWwgc3R5bGU9ImZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjYwMDtjb2xvcjp2YXIoLS10
ZXh0LXNlY29uZGFyeSk7ZGlzcGxheTpibG9jazttYXJnaW4tYm90dG9tOjNweDsiPlRpdGVsPC9s
YWJlbD4nICsKICAgICAgICAgICAgJzxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0ic3FlVGl0ZWwiIHZh
bHVlPSInICsgRHJpdmVQb3J0YWwuZXNjYXBlQXR0cihkb2MudGl0ZWwpICsgJyIgc3R5bGU9Iicg
KyBpbnB1dFN0eWxlICsgJyI+PC9kaXY+JyArCgogICAgICAgICAgICAnPGRpdiBzdHlsZT0iZGlz
cGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnIgMWZyO2dhcDo4cHg7bWFyZ2luLWJv
dHRvbTo4cHg7Ij4nICsKICAgICAgICAgICAgICAgICc8ZGl2PjxsYWJlbCBzdHlsZT0iZm9udC1z
aXplOjEycHg7Zm9udC13ZWlnaHQ6NjAwO2NvbG9yOnZhcigtLXRleHQtc2Vjb25kYXJ5KTtkaXNw
bGF5OmJsb2NrO21hcmdpbi1ib3R0b206M3B4OyI+S2F0ZWdvcmllPC9sYWJlbD4nICsKICAgICAg
ICAgICAgICAgICc8c2VsZWN0IGlkPSJzcWVLYXRlZ29yaWUiIHN0eWxlPSInICsgaW5wdXRTdHls
ZSArICciPic7CiAgICAgICAga2F0ZWdvcmllbi5mb3JFYWNoKGZ1bmN0aW9uKGspIHsgaHRtbCAr
PSAnPG9wdGlvbiB2YWx1ZT0iJyArIERyaXZlUG9ydGFsLmVzY2FwZUF0dHIoaykgKyAnIicgKyAo
ayA9PT0gZG9jLmthdGVnb3JpZSA/ICcgc2VsZWN0ZWQnIDogJycpICsgJz4nICsgRHJpdmVQb3J0
YWwuZXNjYXBlSFRNTChrKSArICc8L29wdGlvbj4nOyB9KTsKICAgICAgICBodG1sICs9ICc8L3Nl
bGVjdD48L2Rpdj4nICsKICAgICAgICAgICAgICAgICc8ZGl2PjxsYWJlbCBzdHlsZT0iZm9udC1z
aXplOjEycHg7Zm9udC13ZWlnaHQ6NjAwO2NvbG9yOnZhcigtLXRleHQtc2Vjb25kYXJ5KTtkaXNw
bGF5OmJsb2NrO21hcmdpbi1ib3R0b206M3B4OyI+U3RhdHVzPC9sYWJlbD4nICsKICAgICAgICAg
ICAgICAgICc8c2VsZWN0IGlkPSJzcWVTdGF0dXMiIHN0eWxlPSInICsgaW5wdXRTdHlsZSArICci
Pic7CiAgICAgICAgc3RhdHVzTGlzdC5mb3JFYWNoKGZ1bmN0aW9uKHMpIHsgaHRtbCArPSAnPG9w
dGlvbiB2YWx1ZT0iJyArIERyaXZlUG9ydGFsLmVzY2FwZUF0dHIocykgKyAnIicgKyAocyA9PT0g
ZG9jLnN0YXR1cyA/ICcgc2VsZWN0ZWQnIDogJycpICsgJz4nICsgRHJpdmVQb3J0YWwuZXNjYXBl
SFRNTChzKSArICc8L29wdGlvbj4nOyB9KTsKICAgICAgICBodG1sICs9ICc8L3NlbGVjdD48L2Rp
dj48L2Rpdj4nICsKCiAgICAgICAgICAgICc8ZGl2IHN0eWxlPSJkaXNwbGF5OmdyaWQ7Z3JpZC10
ZW1wbGF0ZS1jb2x1bW5zOjFmciAxZnI7Z2FwOjhweDttYXJnaW4tYm90dG9tOjhweDsiPicgKwog
ICAgICAgICAgICAgICAgJzxkaXY+PGxhYmVsIHN0eWxlPSJmb250LXNpemU6MTJweDtmb250LXdl
aWdodDo2MDA7Y29sb3I6dmFyKC0tdGV4dC1zZWNvbmRhcnkpO2Rpc3BsYXk6YmxvY2s7bWFyZ2lu
LWJvdHRvbTozcHg7Ij5FcnN0ZWxsdCB2b248L2xhYmVsPicgKwogICAgICAgICAgICAgICAgJzxp
bnB1dCB0eXBlPSJ0ZXh0IiBpZD0ic3FlRXJzdGVsbGVyIiB2YWx1ZT0iJyArIERyaXZlUG9ydGFs
LmVzY2FwZUF0dHIoZG9jLmVyc3RlbGx0Vm9uIHx8ICcnKSArICciIHN0eWxlPSInICsgaW5wdXRT
dHlsZSArICciPjwvZGl2PicgKwogICAgICAgICAgICAgICAgJzxkaXY+PGxhYmVsIHN0eWxlPSJm
b250LXNpemU6MTJweDtmb250LXdlaWdodDo2MDA7Y29sb3I6dmFyKC0tdGV4dC1zZWNvbmRhcnkp
O2Rpc3BsYXk6YmxvY2s7bWFyZ2luLWJvdHRvbTozcHg7Ij5WZXJzaW9uPC9sYWJlbD4nICsKICAg
ICAgICAgICAgICAgICc8aW5wdXQgdHlwZT0idGV4dCIgaWQ9InNxZVZlcnNpb24iIHZhbHVlPSIn
ICsgRHJpdmVQb3J0YWwuZXNjYXBlQXR0cihkb2MudmVyc2lvbiB8fCAnJykgKyAnIiBzdHlsZT0i
JyArIGlucHV0U3R5bGUgKyAnIj48L2Rpdj4nICsKICAgICAgICAgICAgJzwvZGl2PicgKwoKICAg
ICAgICAgICAgJzxkaXYgc3R5bGU9ImRpc3BsYXk6ZmxleDtnYXA6OHB4O2p1c3RpZnktY29udGVu
dDpmbGV4LWVuZDttYXJnaW4tdG9wOjE0cHg7Ij4nICsKICAgICAgICAgICAgICAgICc8YnV0dG9u
IG9uY2xpY2s9InRoaXMuY2xvc2VzdChcJ2RpdltzdHlsZV1cJykucGFyZW50RWxlbWVudC5yZW1v
dmUoKSIgc3R5bGU9InBhZGRpbmc6OHB4IDE2cHg7Ym9yZGVyLXJhZGl1czo0cHg7Ym9yZGVyOjFw
eCBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3IpO2JhY2tncm91bmQ6dmFyKC0tYmctY2FyZCk7Y29s
b3I6dmFyKC0tdGV4dC1wcmltYXJ5KTtjdXJzb3I6cG9pbnRlcjsiPkFiYnJlY2hlbjwvYnV0dG9u
PicgKwogICAgICAgICAgICAgICAgJzxidXR0b24gb25jbGljaz0iRHJpdmVQb3J0YWwuX2NvbmZp
cm1TaW5nbGVFZGl0KFwnJyArIERyaXZlUG9ydGFsLmVzY2FwZUF0dHIoZG9jSWQpICsgJ1wnKSIg
c3R5bGU9InBhZGRpbmc6OHB4IDE2cHg7Ym9yZGVyLXJhZGl1czo0cHg7Ym9yZGVyOm5vbmU7YmFj
a2dyb3VuZDp2YXIoLS10ZXh0LWhlYWRpbmcpO2NvbG9yOndoaXRlO2N1cnNvcjpwb2ludGVyO2Zv
bnQtd2VpZ2h0OjYwMDsiPlNwZWljaGVybjwvYnV0dG9uPicgKwogICAgICAgICAgICAnPC9kaXY+
PC9kaXY+JzsKCiAgICAgICAgbW9kYWwuaW5uZXJIVE1MID0gaHRtbDsKICAgICAgICBkb2N1bWVu
dC5ib2R5LmFwcGVuZENoaWxkKG1vZGFsKTsKICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
eyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3FlVGl0ZWwnKS5mb2N1cygpOyB9LCA1MCk7CiAg
ICB9LAoKICAgIGFzeW5jIF9jb25maXJtU2luZ2xlRWRpdChkb2NJZCkgewogICAgICAgIHZhciBk
b2MgPSBEcml2ZUZTLmRvY3VtZW50cy5maW5kKGZ1bmN0aW9uKGQpIHsgcmV0dXJuIGQuaWQgPT09
IGRvY0lkOyB9KTsKICAgICAgICBpZiAoIWRvYykgcmV0dXJuOwoKICAgICAgICBkb2MudGl0ZWwg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3FlVGl0ZWwnKS52YWx1ZS50cmltKCkgfHwgZG9j
LnRpdGVsOwogICAgICAgIGRvYy5rYXRlZ29yaWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
c3FlS2F0ZWdvcmllJykudmFsdWU7CiAgICAgICAgdmFyIG5ld1N0YXR1cyA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdzcWVTdGF0dXMnKS52YWx1ZTsKICAgICAgICBpZiAobmV3U3RhdHVzICE9
PSBkb2Muc3RhdHVzKSB7CiAgICAgICAgICAgIGRvYy52ZXJzaW9uID0gY2FsY3VsYXRlVmVyc2lv
bihkb2MsIGRvYy5pbmhhbHQsIGRvYy5pbmhhbHQsIG5ld1N0YXR1cyk7CiAgICAgICAgICAgIGRv
Yy5zdGF0dXMgPSBuZXdTdGF0dXM7CiAgICAgICAgfQogICAgICAgIGRvYy5lcnN0ZWxsdFZvbiA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzcWVFcnN0ZWxsZXInKS52YWx1ZS50cmltKCkgfHwg
ZG9jLmVyc3RlbGx0Vm9uOwogICAgICAgIGRvYy52ZXJzaW9uID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3NxZVZlcnNpb24nKS52YWx1ZS50cmltKCkgfHwgZG9jLnZlcnNpb247CgogICAgICAg
IC8vIE1vZGFsIHNjaGxpZXNzZW4KICAgICAgICB2YXIgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnc3FlVGl0ZWwnKTsKICAgICAgICBpZiAoZWwpIHsgdmFyIG0gPSBlbDsgd2hpbGUgKG0u
cGFyZW50RWxlbWVudCAhPT0gZG9jdW1lbnQuYm9keSkgbSA9IG0ucGFyZW50RWxlbWVudDsgbS5y
ZW1vdmUoKTsgfQoKICAgICAgICBhd2FpdCBEcml2ZUZTLnNhdmVEb2N1bWVudChkb2MpOwogICAg
ICAgIHNob3dUb2FzdCgnQXJ0aWtlbCBha3R1YWxpc2llcnQ6ICcgKyBkb2MudGl0ZWwsICdzdWNj
ZXNzJyk7CiAgICAgICAgdGhpcy5yZW5kZXIoKTsKICAgICAgICB0aGlzLnJlbmRlclRhYmxlVmll
dygpOwogICAgfSwKCiAgICBhc3luYyBfY29uZmlybUJ1bGtEZWxldGUoKSB7CiAgICAgICAgdmFy
IG53SW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYnVsa0RlbGV0ZU5XJyk7CiAgICAg
ICAgdmFyIG53S2VubnVuZyA9IG53SW5wdXQgPyBud0lucHV0LnZhbHVlLnRyaW0oKSA6ICcnOwog
ICAgICAgIGlmICghbndLZW5udW5nKSB7IHNob3dUb2FzdCgnQml0dGUgTlctS2VubnVuZyBlaW5n
ZWJlbicsICd3YXJuaW5nJyk7IG53SW5wdXQuZm9jdXMoKTsgcmV0dXJuOyB9CgogICAgICAgIC8v
IE1vZGFsIHNjaGxpZXNzZW4KICAgICAgICB2YXIgbSA9IG53SW5wdXQ7IHdoaWxlIChtLnBhcmVu
dEVsZW1lbnQgIT09IGRvY3VtZW50LmJvZHkpIG0gPSBtLnBhcmVudEVsZW1lbnQ7IG0ucmVtb3Zl
KCk7CgogICAgICAgIHZhciBkZWxldGVkID0gMDsKICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IHRoaXMuX3RhYmxlU2VsZWN0ZWQubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgdmFyIGRvY0lk
ID0gdGhpcy5fdGFibGVTZWxlY3RlZFtpXTsKICAgICAgICAgICAgdmFyIGRvYyA9IERyaXZlRlMu
ZG9jdW1lbnRzLmZpbmQoZnVuY3Rpb24oZCkgeyByZXR1cm4gZC5pZCA9PT0gZG9jSWQ7IH0pOwog
ICAgICAgICAgICBpZiAoIWRvYykgY29udGludWU7CgogICAgICAgICAgICAvLyBJbiBQYXBpZXJr
b3JiIHZlcnNjaGllYmVuCiAgICAgICAgICAgIHZhciB0cmFzaCA9IGF3YWl0IHRoaXMuX2xvYWRU
cmFzaCgpOwogICAgICAgICAgICB0cmFzaC5wdXNoKHsKICAgICAgICAgICAgICAgIGRvYzogZG9j
LAogICAgICAgICAgICAgICAgZGVsZXRlZEJ5OiBud0tlbm51bmcudHJpbSgpLAogICAgICAgICAg
ICAgICAgZGVsZXRlZEF0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksCiAgICAgICAgICAgICAg
ICBleHBpcmVzQXQ6IG5ldyBEYXRlKERhdGUubm93KCkgKyAyOCAqIDI0ICogNjAgKiA2MCAqIDEw
MDApLnRvSVNPU3RyaW5nKCkKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIGF3YWl0IHRoaXMu
X3NhdmVUcmFzaCh0cmFzaCk7CgogICAgICAgICAgICAvLyBBdWRpdC1Mb2cKICAgICAgICAgICAg
YXdhaXQgdGhpcy5fYXBwZW5kRGVsZXRlTG9nKHsKICAgICAgICAgICAgICAgIGRvY0lkOiBkb2Mu
aWQsCiAgICAgICAgICAgICAgICB0aXRlbDogZG9jLnRpdGVsLAogICAgICAgICAgICAgICAga2F0
ZWdvcmllOiBkb2Mua2F0ZWdvcmllLAogICAgICAgICAgICAgICAgZGVsZXRlZEJ5OiBud0tlbm51
bmcudHJpbSgpLAogICAgICAgICAgICAgICAgZGVsZXRlZEF0OiBuZXcgRGF0ZSgpLnRvSVNPU3Ry
aW5nKCkKICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAvLyBEYXRlaSBsb2VzY2hlbiArIE1l
ZGllbi1PcmRuZXIKICAgICAgICAgICAgdmFyIHBhdGggPSBEcml2ZUZTLmZpbGVUaW1lc3RhbXBz
W2RvY0lkXSA/IERyaXZlRlMuZmlsZVRpbWVzdGFtcHNbZG9jSWRdLnBhdGggOiBudWxsOwogICAg
ICAgICAgICBpZiAocGF0aCkgYXdhaXQgRHJpdmVGUy5kZWxldGVGaWxlKHBhdGgpOwoKICAgICAg
ICAgICAgLy8gTWVkaWVuLU9yZG5lciB2ZXJzY2hpZWJlbiAoU2VydmVyLU1vZHVzKQogICAgICAg
ICAgICBpZiAoRHJpdmVGUy5tb2RlID09PSAnc2VydmVyJykgewogICAgICAgICAgICAgICAgdHJ5
IHsKICAgICAgICAgICAgICAgICAgICAvLyBNZWRpZW4gYmxlaWJlbiBpbSBtZWRpYS8tT3JkbmVy
IGVyaGFsdGVuIChQYXBpZXJrb3JiLVdpZWRlcmhlcnN0ZWxsdW5nKQogICAgICAgICAgICAgICAg
fSBjYXRjaChlKSB7fQogICAgICAgICAgICB9CgogICAgICAgICAgICBEcml2ZUZTLmRvY3VtZW50
cyA9IERyaXZlRlMuZG9jdW1lbnRzLmZpbHRlcihmdW5jdGlvbihkKSB7IHJldHVybiBkLmlkICE9
PSBkb2NJZDsgfSk7CiAgICAgICAgICAgIGRlbGV0ZWQrKzsKICAgICAgICB9CgogICAgICAgIGF3
YWl0IERyaXZlRlMudXBkYXRlSW5kZXgoKTsKICAgICAgICBzaG93VG9hc3QoZGVsZXRlZCArICcg
QXJ0aWtlbCBpbiBkZW4gUGFwaWVya29yYiB2ZXJzY2hvYmVuJywgJ3N1Y2Nlc3MnKTsKICAgICAg
ICB0aGlzLl90YWJsZVNlbGVjdGVkID0gW107CiAgICAgICAgdGhpcy5yZW5kZXIoKTsKICAgICAg
ICB0aGlzLnJlbmRlclRhYmxlVmlldygpOwogICAgfSwKCiAgICBzaG93SG9tZSgpIHsKICAgICAg
ICB0aGlzLnNlbGVjdGVkRG9jSWQgPSBudWxsOwogICAgICAgIC8vIFN0YXJ0c2VpdGUgd2llZGVy
aGVyc3RlbGxlbgogICAgICAgIGlmICh0aGlzLl93ZWxjb21lSFRNTCkgewogICAgICAgICAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZG9jdW1lbnREZXRhaWwnKS5pbm5lckhUTUwgPSB0aGlz
Ll93ZWxjb21lSFRNTDsKICAgICAgICB9CiAgICAgICAgLy8gQWt0aXZlcyBFbGVtZW50IGluIGRl
ciBMaXN0ZSBhYndhZWhsZW4KICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZG9j
dW1lbnQtaXRlbS5hY3RpdmUnKS5mb3JFYWNoKGZ1bmN0aW9uKGVsKSB7IGVsLmNsYXNzTGlzdC5y
ZW1vdmUoJ2FjdGl2ZScpOyB9KTsKICAgIH0sCgogICAgX2RpZmZWaXNpYmxlOiBmYWxzZSwKCiAg
ICB0b2dnbGVEaWZmKGRvY0lkKSB7CiAgICAgICAgdmFyIGRvYyA9IERyaXZlRlMuZG9jdW1lbnRz
LmZpbmQoZnVuY3Rpb24oZCl7IHJldHVybiBkLmlkID09PSBkb2NJZDsgfSk7CiAgICAgICAgaWYg
KCFkb2MpIHJldHVybjsKICAgICAgICAvLyBWZXJnbGVpY2hzYmFzaXM6IGxldHp0ZSBSZXZpc2lv
biAocGVyc2lzdGllcnQpIG9kZXIgX3ByZXZpb3VzSW5oYWx0IChMZWdhY3kpCiAgICAgICAgdmFy
IHByZXZJbmhhbHQgPSBkb2MuX3ByZXZpb3VzSW5oYWx0OwogICAgICAgIGlmICghcHJldkluaGFs
dCAmJiBkb2MucmV2aXNpb25zICYmIGRvYy5yZXZpc2lvbnMubGVuZ3RoID4gMCkgewogICAgICAg
ICAgICBwcmV2SW5oYWx0ID0gZG9jLnJldmlzaW9uc1tkb2MucmV2aXNpb25zLmxlbmd0aCAtIDFd
LmluaGFsdDsKICAgICAgICB9CiAgICAgICAgaWYgKCFwcmV2SW5oYWx0KSByZXR1cm47CgogICAg
ICAgIHZhciBjb250ZW50RWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGV0YWlsQ29udGVu
dCcpOwogICAgICAgIHZhciBidG4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYnRuRGlmZicp
OwogICAgICAgIGlmICghY29udGVudEVsKSByZXR1cm47CgogICAgICAgIGlmICh0aGlzLl9kaWZm
VmlzaWJsZSkgewogICAgICAgICAgICAvLyBadXJ1ZWNrIHp1ciBub3JtYWxlbiBBbnNpY2h0CiAg
ICAgICAgICAgIGNvbnRlbnRFbC5pbm5lckhUTUwgPSBEcml2ZVBvcnRhbC5zYW5pdGl6ZUhUTUwo
ZG9jLmluaGFsdCk7CiAgICAgICAgICAgIGlmIChidG4pIGJ0bi50ZXh0Q29udGVudCA9ICfDhG5k
ZXJ1bmdlbiBhbnplaWdlbic7CiAgICAgICAgICAgIHRoaXMuX2RpZmZWaXNpYmxlID0gZmFsc2U7
CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgLy8gRGlmZiBiZXJlY2huZW4gdW5kIGFuemVp
Z2VuCiAgICAgICAgICAgIHZhciBkaWZmSHRtbCA9IHRoaXMuX2NvbXB1dGVEaWZmKHByZXZJbmhh
bHQsIGRvYy5pbmhhbHQgfHwgJycpOwogICAgICAgICAgICBjb250ZW50RWwuaW5uZXJIVE1MID0K
ICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJkaWZmLWxlZ2VuZCI+JyArCiAgICAgICAgICAg
ICAgICAgICAgJzxzcGFuPjxzcGFuIGNsYXNzPSJkaWZmLWFkZGVkIj5CZWlzcGllbDwvc3Bhbj4g
SGluenVnZWbDvGd0PC9zcGFuPicgKwogICAgICAgICAgICAgICAgICAgICc8c3Bhbj48c3BhbiBj
bGFzcz0iZGlmZi1yZW1vdmVkIj5CZWlzcGllbDwvc3Bhbj4gRW50ZmVybnQ8L3NwYW4+JyArCiAg
ICAgICAgICAgICAgICAnPC9kaXY+JyArCiAgICAgICAgICAgICAgICBkaWZmSHRtbDsKICAgICAg
ICAgICAgaWYgKGJ0bikgYnRuLnRleHRDb250ZW50ID0gJ09yaWdpbmFsYW5zaWNodCc7CiAgICAg
ICAgICAgIHRoaXMuX2RpZmZWaXNpYmxlID0gdHJ1ZTsKICAgICAgICB9CiAgICB9LAoKICAgIF9j
b21wdXRlRGlmZihvbGRIdG1sLCBuZXdIdG1sKSB7CiAgICAgICAgLy8gSFRNTCBpbiBXb2VydGVy
IHplcmxlZ2VuIChUYWdzIGFscyBFaW5oZWl0IGJlaGFsdGVuKQogICAgICAgIGZ1bmN0aW9uIHRv
a2VuaXplKGh0bWwpIHsKICAgICAgICAgICAgdmFyIHRva2VucyA9IFtdOwogICAgICAgICAgICB2
YXIgcmUgPSAvPFtePl0rPnxbXlxzPF0rfFxzKy9nOwogICAgICAgICAgICB2YXIgbTsKICAgICAg
ICAgICAgd2hpbGUgKChtID0gcmUuZXhlYyhodG1sKSkgIT09IG51bGwpIHsKICAgICAgICAgICAg
ICAgIHRva2Vucy5wdXNoKG1bMF0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiB0
b2tlbnM7CiAgICAgICAgfQoKICAgICAgICB2YXIgb2xkVG9rZW5zID0gdG9rZW5pemUob2xkSHRt
bCk7CiAgICAgICAgdmFyIG5ld1Rva2VucyA9IHRva2VuaXplKG5ld0h0bWwpOwoKICAgICAgICAv
LyBMQ1MgKExvbmdlc3QgQ29tbW9uIFN1YnNlcXVlbmNlKSBiZXJlY2huZW4KICAgICAgICB2YXIg
biA9IG9sZFRva2Vucy5sZW5ndGgsIG0gPSBuZXdUb2tlbnMubGVuZ3RoOwoKICAgICAgICAvLyBG
dWVyIHNlaHIgZ3Jvc3NlIERva3VtZW50ZTogdmVyZWluZmFjaHRlciBBbnNhdHogbWl0IGJlZ3Jl
bnp0ZXIgTWF0cml4CiAgICAgICAgaWYgKG4gKiBtID4gMjAwMDAwMCkgewogICAgICAgICAgICAv
LyBGYWxsYmFjazogWmVpbGVud2Vpc2VyIFZlcmdsZWljaAogICAgICAgICAgICByZXR1cm4gdGhp
cy5fY29tcHV0ZUxpbmVEaWZmKG9sZEh0bWwsIG5ld0h0bWwpOwogICAgICAgIH0KCiAgICAgICAg
dmFyIGRwID0gW107CiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPD0gbjsgaSsrKSB7CiAgICAg
ICAgICAgIGRwW2ldID0gbmV3IFVpbnQxNkFycmF5KG0gKyAxKTsKICAgICAgICB9CgogICAgICAg
IGZvciAodmFyIGkgPSAxOyBpIDw9IG47IGkrKykgewogICAgICAgICAgICBmb3IgKHZhciBqID0g
MTsgaiA8PSBtOyBqKyspIHsKICAgICAgICAgICAgICAgIGlmIChvbGRUb2tlbnNbaS0xXSA9PT0g
bmV3VG9rZW5zW2otMV0pIHsKICAgICAgICAgICAgICAgICAgICBkcFtpXVtqXSA9IGRwW2ktMV1b
ai0xXSArIDE7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGRw
W2ldW2pdID0gTWF0aC5tYXgoZHBbaS0xXVtqXSwgZHBbaV1bai0xXSk7CiAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8vIEJhY2t0cmFjazogRGlmZi1T
ZXF1ZW56IGVyc3RlbGxlbgogICAgICAgIHZhciByZXN1bHQgPSBbXTsKICAgICAgICB2YXIgaSA9
IG4sIGogPSBtOwogICAgICAgIHdoaWxlIChpID4gMCB8fCBqID4gMCkgewogICAgICAgICAgICBp
ZiAoaSA+IDAgJiYgaiA+IDAgJiYgb2xkVG9rZW5zW2ktMV0gPT09IG5ld1Rva2Vuc1tqLTFdKSB7
CiAgICAgICAgICAgICAgICByZXN1bHQudW5zaGlmdCh7IHR5cGU6ICdzYW1lJywgdGV4dDogb2xk
VG9rZW5zW2ktMV0gfSk7CiAgICAgICAgICAgICAgICBpLS07IGotLTsKICAgICAgICAgICAgfSBl
bHNlIGlmIChqID4gMCAmJiAoaSA9PT0gMCB8fCBkcFtpXVtqLTFdID49IGRwW2ktMV1bal0pKSB7
CiAgICAgICAgICAgICAgICByZXN1bHQudW5zaGlmdCh7IHR5cGU6ICdhZGQnLCB0ZXh0OiBuZXdU
b2tlbnNbai0xXSB9KTsKICAgICAgICAgICAgICAgIGotLTsKICAgICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgICAgIHJlc3VsdC51bnNoaWZ0KHsgdHlwZTogJ2RlbCcsIHRleHQ6IG9sZFRv
a2Vuc1tpLTFdIH0pOwogICAgICAgICAgICAgICAgaS0tOwogICAgICAgICAgICB9CiAgICAgICAg
fQoKICAgICAgICAvLyBFcmdlYm5pcyBhbHMgSFRNTCByZW5kZXJuCiAgICAgICAgdmFyIGh0bWwg
PSAnJzsKICAgICAgICB2YXIgaW5BZGQgPSBmYWxzZSwgaW5EZWwgPSBmYWxzZTsKCiAgICAgICAg
Zm9yICh2YXIgayA9IDA7IGsgPCByZXN1bHQubGVuZ3RoOyBrKyspIHsKICAgICAgICAgICAgdmFy
IHIgPSByZXN1bHRba107CiAgICAgICAgICAgIHZhciBpc1RhZyA9IHIudGV4dC5jaGFyQXQoMCkg
PT09ICc8JzsKCiAgICAgICAgICAgIGlmIChyLnR5cGUgPT09ICdzYW1lJykgewogICAgICAgICAg
ICAgICAgaWYgKGluQWRkKSB7IGh0bWwgKz0gJzwvc3Bhbj4nOyBpbkFkZCA9IGZhbHNlOyB9CiAg
ICAgICAgICAgICAgICBpZiAoaW5EZWwpIHsgaHRtbCArPSAnPC9zcGFuPic7IGluRGVsID0gZmFs
c2U7IH0KICAgICAgICAgICAgICAgIGh0bWwgKz0gci50ZXh0OwogICAgICAgICAgICB9IGVsc2Ug
aWYgKHIudHlwZSA9PT0gJ2FkZCcpIHsKICAgICAgICAgICAgICAgIGlmIChpbkRlbCkgeyBodG1s
ICs9ICc8L3NwYW4+JzsgaW5EZWwgPSBmYWxzZTsgfQogICAgICAgICAgICAgICAgaWYgKGlzVGFn
KSB7IGh0bWwgKz0gci50ZXh0OyBjb250aW51ZTsgfQogICAgICAgICAgICAgICAgaWYgKCFpbkFk
ZCkgeyBodG1sICs9ICc8c3BhbiBjbGFzcz0iZGlmZi1hZGRlZCI+JzsgaW5BZGQgPSB0cnVlOyB9
CiAgICAgICAgICAgICAgICBodG1sICs9IHIudGV4dDsKICAgICAgICAgICAgfSBlbHNlIGlmIChy
LnR5cGUgPT09ICdkZWwnKSB7CiAgICAgICAgICAgICAgICBpZiAoaW5BZGQpIHsgaHRtbCArPSAn
PC9zcGFuPic7IGluQWRkID0gZmFsc2U7IH0KICAgICAgICAgICAgICAgIGlmIChpc1RhZykgY29u
dGludWU7IC8vIEVudGZlcm50ZSBUYWdzIG5pY2h0IGFuemVpZ2VuCiAgICAgICAgICAgICAgICBp
ZiAoIWluRGVsKSB7IGh0bWwgKz0gJzxzcGFuIGNsYXNzPSJkaWZmLXJlbW92ZWQiPic7IGluRGVs
ID0gdHJ1ZTsgfQogICAgICAgICAgICAgICAgaHRtbCArPSByLnRleHQ7CiAgICAgICAgICAgIH0K
ICAgICAgICB9CiAgICAgICAgaWYgKGluQWRkKSBodG1sICs9ICc8L3NwYW4+JzsKICAgICAgICBp
ZiAoaW5EZWwpIGh0bWwgKz0gJzwvc3Bhbj4nOwoKICAgICAgICByZXR1cm4gaHRtbDsKICAgIH0s
CgogICAgX2NvbXB1dGVMaW5lRGlmZihvbGRIdG1sLCBuZXdIdG1sKSB7CiAgICAgICAgLy8gRWlu
ZmFjaGVyIEZhbGxiYWNrIGZ1ZXIgc2VociBncm9zc2UgRG9rdW1lbnRlOiBBYnNhdHp3ZWlzZXIg
VmVyZ2xlaWNoCiAgICAgICAgZnVuY3Rpb24gZ2V0UGFyYXMoaHRtbCkgewogICAgICAgICAgICB2
YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICAgICAgICAgIGRpdi5p
bm5lckhUTUwgPSBodG1sOwogICAgICAgICAgICB2YXIgYmxvY2tzID0gW107CiAgICAgICAgICAg
IGRpdi5jaGlsZE5vZGVzLmZvckVhY2goZnVuY3Rpb24obikgewogICAgICAgICAgICAgICAgYmxv
Y2tzLnB1c2gobi5vdXRlckhUTUwgfHwgbi50ZXh0Q29udGVudCk7CiAgICAgICAgICAgIH0pOwog
ICAgICAgICAgICByZXR1cm4gYmxvY2tzOwogICAgICAgIH0KCiAgICAgICAgdmFyIG9sZFBhcmFz
ID0gZ2V0UGFyYXMob2xkSHRtbCk7CiAgICAgICAgdmFyIG5ld1BhcmFzID0gZ2V0UGFyYXMobmV3
SHRtbCk7CiAgICAgICAgdmFyIG9sZFNldCA9IG5ldyBTZXQob2xkUGFyYXMpOwogICAgICAgIHZh
ciBuZXdTZXQgPSBuZXcgU2V0KG5ld1BhcmFzKTsKCiAgICAgICAgdmFyIGh0bWwgPSAnJzsKICAg
ICAgICBuZXdQYXJhcy5mb3JFYWNoKGZ1bmN0aW9uKHApIHsKICAgICAgICAgICAgaWYgKG9sZFNl
dC5oYXMocCkpIHsKICAgICAgICAgICAgICAgIGh0bWwgKz0gcDsKICAgICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgICAgIGh0bWwgKz0gJzxkaXYgY2xhc3M9ImRpZmYtYWRkZWQiIHN0eWxl
PSJkaXNwbGF5OmJsb2NrO3BhZGRpbmc6NHB4IDhweDttYXJnaW46NHB4IDA7Ym9yZGVyLXJhZGl1
czo0cHg7Ij4nICsgcCArICc8L2Rpdj4nOwogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICAg
ICAgb2xkUGFyYXMuZm9yRWFjaChmdW5jdGlvbihwKSB7CiAgICAgICAgICAgIGlmICghbmV3U2V0
LmhhcyhwKSkgewogICAgICAgICAgICAgICAgaHRtbCArPSAnPGRpdiBjbGFzcz0iZGlmZi1yZW1v
dmVkIiBzdHlsZT0iZGlzcGxheTpibG9jaztwYWRkaW5nOjRweCA4cHg7bWFyZ2luOjRweCAwO2Jv
cmRlci1yYWRpdXM6NHB4OyI+JyArIHAgKyAnPC9kaXY+JzsKICAgICAgICAgICAgfQogICAgICAg
IH0pOwoKICAgICAgICByZXR1cm4gaHRtbDsKICAgIH0sCgogICAgLy8gPT09PSBSZXZpc2lvbnNo
aXN0b3JpZSA9PT09CiAgICBfcmV2RG9jSWQ6IG51bGwsCiAgICBfcmV2U2VsZWN0ZWRJZHg6IC0x
LAogICAgX3Jldk1vZGU6ICdjb250ZW50JywgLy8gJ2NvbnRlbnQnIG9kZXIgJ2RpZmYnCgogICAg
b3BlblJldmlzaW9ucyhkb2NJZCkgewogICAgICAgIHZhciBkb2MgPSBEcml2ZUZTLmRvY3VtZW50
cy5maW5kKGZ1bmN0aW9uKGQpIHsgcmV0dXJuIGQuaWQgPT09IGRvY0lkOyB9KTsKICAgICAgICBp
ZiAoIWRvYykgcmV0dXJuOwogICAgICAgIHRoaXMuX3JldkRvY0lkID0gZG9jSWQ7CiAgICAgICAg
dGhpcy5fcmV2U2VsZWN0ZWRJZHggPSAtMTsKICAgICAgICB0aGlzLl9yZXZNb2RlID0gJ2NvbnRl
bnQnOwoKICAgICAgICB2YXIgcmV2aXNpb25zID0gZG9jLnJldmlzaW9ucyB8fCBbXTsKICAgICAg
ICB2YXIgbGlzdEVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3JldmlzaW9uTGlzdCcpOwoK
ICAgICAgICBpZiAocmV2aXNpb25zLmxlbmd0aCA9PT0gMCkgewogICAgICAgICAgICBzaG93VG9h
c3QoJ0tlaW5lIGZydWVoZXJlbiBWZXJzaW9uZW4gdm9yaGFuZGVuJywgJ2luZm8nKTsKICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgLy8gTGlzdGUgYXVmYmF1ZW4gKG5ldWVz
dGUgenVlcnN0KQogICAgICAgIHZhciBodG1sID0gJyc7CiAgICAgICAgLy8gQWt0dWVsbGUgVmVy
c2lvbiBhbHMgZXJzdGVzIEVsZW1lbnQKICAgICAgICBodG1sICs9ICc8ZGl2IGNsYXNzPSJyZXZp
c2lvbi1pdGVtIiBvbmNsaWNrPSJEcml2ZVBvcnRhbC5zZWxlY3RSZXZpc2lvbigtMSkiPicgKwog
ICAgICAgICAgICAnPGRpdiBjbGFzcz0icmV2LWxhYmVsIj5Ba3R1ZWxsZSBWZXJzaW9uIDxzcGFu
IGNsYXNzPSJyZXYtYmFkZ2UiPkxpdmU8L3NwYW4+PC9kaXY+JyArCiAgICAgICAgICAgICc8ZGl2
IGNsYXNzPSJyZXYtZGF0ZSI+JyArIChkb2MudGl0ZWwgfHwgJ09obmUgVGl0ZWwnKSArICc8L2Rp
dj4nICsKICAgICAgICAgICAgJzxkaXYgY2xhc3M9InJldi11c2VyIj5TdGF0dXM6ICcgKyBEcml2
ZVBvcnRhbC5lc2NhcGVIVE1MKGRvYy5zdGF0dXMgfHwgJ0VudHd1cmYnKSArICc8L2Rpdj4nICsK
ICAgICAgICAnPC9kaXY+JzsKCiAgICAgICAgZm9yICh2YXIgaSA9IHJldmlzaW9ucy5sZW5ndGgg
LSAxOyBpID49IDA7IGktLSkgewogICAgICAgICAgICB2YXIgcmV2ID0gcmV2aXNpb25zW2ldOwog
ICAgICAgICAgICB2YXIgZCA9IG5ldyBEYXRlKHJldi5zYXZlZEF0KTsKICAgICAgICAgICAgdmFy
IGRhdGVTdHIgPSBkLnRvTG9jYWxlRGF0ZVN0cmluZygnZGUtREUnLCB7IGRheTogJzItZGlnaXQn
LCBtb250aDogJzItZGlnaXQnLCB5ZWFyOiAnbnVtZXJpYycgfSk7CiAgICAgICAgICAgIHZhciB0
aW1lU3RyID0gZC50b0xvY2FsZVRpbWVTdHJpbmcoJ2RlLURFJywgeyBob3VyOiAnMi1kaWdpdCcs
IG1pbnV0ZTogJzItZGlnaXQnIH0pOwogICAgICAgICAgICB2YXIgcmV2TnVtID0gaSArIDE7CiAg
ICAgICAgICAgIGh0bWwgKz0gJzxkaXYgY2xhc3M9InJldmlzaW9uLWl0ZW0iIG9uY2xpY2s9IkRy
aXZlUG9ydGFsLnNlbGVjdFJldmlzaW9uKCcgKyBpICsgJykiPicgKwogICAgICAgICAgICAgICAg
JzxkaXYgY2xhc3M9InJldi1sYWJlbCI+VmVyc2lvbiAnICsgcmV2TnVtICsgJyA8c3BhbiBjbGFz
cz0icmV2LWJhZGdlIj52JyArIHJldk51bSArICc8L3NwYW4+PC9kaXY+JyArCiAgICAgICAgICAg
ICAgICAnPGRpdiBjbGFzcz0icmV2LWRhdGUiPicgKyBkYXRlU3RyICsgJyB1bSAnICsgdGltZVN0
ciArICc8L2Rpdj4nICsKICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJyZXYtdXNlciI+dm9u
ICcgKyBEcml2ZVBvcnRhbC5lc2NhcGVIVE1MKHJldi5zYXZlZEJ5IHx8ICdVbmJla2FubnQnKSAr
CiAgICAgICAgICAgICAgICAgICAgKHJldi5zdGF0dXMgPyAnICZtaWRkb3Q7ICcgKyBEcml2ZVBv
cnRhbC5lc2NhcGVIVE1MKHJldi5zdGF0dXMpIDogJycpICsgJzwvZGl2PicgKwogICAgICAgICAg
ICAnPC9kaXY+JzsKICAgICAgICB9CiAgICAgICAgbGlzdEVsLmlubmVySFRNTCA9IGh0bWw7Cgog
ICAgICAgIC8vIFRvb2xiYXIgdW5kIENvbnRlbnQgenVydWVja3NldHplbgogICAgICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdyZXZpc2lvblRvb2xiYXInKS5pbm5lckhUTUwgPSAnJzsKICAg
ICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmV2aXNpb25Db250ZW50JykuaW5uZXJIVE1M
ID0KICAgICAgICAgICAgJzxkaXYgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyO2NvbG9yOnZhcigt
LXRleHQtbXV0ZWQpO21hcmdpbi10b3A6NjBweDsiPlZlcnNpb24gYXVzIGRlciBMaXN0ZSBhdXN3
YWVobGVuPC9kaXY+JzsKCiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3JldmlzaW9u
TW9kYWwnKS5jbGFzc0xpc3QuYWRkKCdvcGVuJyk7CiAgICB9LAoKICAgIGNsb3NlUmV2aXNpb25z
KCkgewogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXZpc2lvbk1vZGFsJykuY2xh
c3NMaXN0LnJlbW92ZSgnb3BlbicpOwogICAgICAgIHRoaXMuX3JldkRvY0lkID0gbnVsbDsKICAg
IH0sCgogICAgc2VsZWN0UmV2aXNpb24oaWR4KSB7CiAgICAgICAgdmFyIGRvYyA9IERyaXZlRlMu
ZG9jdW1lbnRzLmZpbmQoZnVuY3Rpb24oZCkgeyByZXR1cm4gZC5pZCA9PT0gRHJpdmVQb3J0YWwu
X3JldkRvY0lkOyB9KTsKICAgICAgICBpZiAoIWRvYykgcmV0dXJuOwogICAgICAgIHRoaXMuX3Jl
dlNlbGVjdGVkSWR4ID0gaWR4OwogICAgICAgIHRoaXMuX3Jldk1vZGUgPSAnY29udGVudCc7Cgog
ICAgICAgIC8vIEFrdGl2ZSBNYXJraWVydW5nIHNldHplbgogICAgICAgIHZhciBpdGVtcyA9IGRv
Y3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJyNyZXZpc2lvbkxpc3QgLnJldmlzaW9uLWl0ZW0nKTsK
ICAgICAgICB2YXIgcmV2aXNpb25zID0gZG9jLnJldmlzaW9ucyB8fCBbXTsKICAgICAgICAvLyBp
ZHg9LTEgaXN0ICJBa3R1ZWxsZSBWZXJzaW9uIiAoZXJzdGVyIEVpbnRyYWcpLCBzb25zdCB1bWdl
a2VocnQgd2VpbCBMaXN0ZSBpbnZlcnRpZXJ0CiAgICAgICAgdmFyIGFjdGl2ZVBvcyA9IChpZHgg
PT09IC0xKSA/IDAgOiAocmV2aXNpb25zLmxlbmd0aCAtIGlkeCk7CiAgICAgICAgaXRlbXMuZm9y
RWFjaChmdW5jdGlvbihlbCwgaSkgewogICAgICAgICAgICBlbC5jbGFzc0xpc3QudG9nZ2xlKCdh
Y3RpdmUnLCBpID09PSBhY3RpdmVQb3MpOwogICAgICAgIH0pOwoKICAgICAgICAvLyBUb29sYmFy
CiAgICAgICAgdmFyIHJldiA9IChpZHggPT09IC0xKSA/IG51bGwgOiByZXZpc2lvbnNbaWR4XTsK
ICAgICAgICB2YXIgdG9vbGJhciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXZpc2lvblRv
b2xiYXInKTsKICAgICAgICB2YXIgbGFiZWwgPSAnJzsKICAgICAgICBpZiAoaWR4ID09PSAtMSkg
ewogICAgICAgICAgICBsYWJlbCA9ICdBa3R1ZWxsZSBWZXJzaW9uJzsKICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICB2YXIgZCA9IG5ldyBEYXRlKHJldi5zYXZlZEF0KTsKICAgICAgICAgICAg
bGFiZWwgPSAnVmVyc2lvbiAnICsgKGlkeCArIDEpICsgJyAmbWlkZG90OyAnICsKICAgICAgICAg
ICAgICAgIGQudG9Mb2NhbGVEYXRlU3RyaW5nKCdkZS1ERScsIHsgZGF5OiAnMi1kaWdpdCcsIG1v
bnRoOiAnMi1kaWdpdCcsIHllYXI6ICdudW1lcmljJyB9KSArICcgJyArCiAgICAgICAgICAgICAg
ICBkLnRvTG9jYWxlVGltZVN0cmluZygnZGUtREUnLCB7IGhvdXI6ICcyLWRpZ2l0JywgbWludXRl
OiAnMi1kaWdpdCcsIHNlY29uZDogJzItZGlnaXQnIH0pICsKICAgICAgICAgICAgICAgICcgJm1p
ZGRvdDsgJyArIERyaXZlUG9ydGFsLmVzY2FwZUhUTUwocmV2LnNhdmVkQnkgfHwgJ1VuYmVrYW5u
dCcpOwogICAgICAgIH0KCiAgICAgICAgdG9vbGJhci5pbm5lckhUTUwgPQogICAgICAgICAgICAn
PGJ1dHRvbiBjbGFzcz0iYWN0aXZlIiBpZD0icmV2QnRuQ29udGVudCIgb25jbGljaz0iRHJpdmVQ
b3J0YWwuc2hvd1JldkNvbnRlbnQoKSI+SW5oYWx0PC9idXR0b24+JyArCiAgICAgICAgICAgICc8
YnV0dG9uIGlkPSJyZXZCdG5EaWZmIiBvbmNsaWNrPSJEcml2ZVBvcnRhbC5zaG93UmV2RGlmZigp
Ij5EaWZmIHp1ciBha3R1ZWxsZW4gVmVyc2lvbjwvYnV0dG9uPicgKwogICAgICAgICAgICAoaWR4
ID49IDAgPyAnPGJ1dHRvbiBpZD0icmV2QnRuUmVzdG9yZSIgb25jbGljaz0iRHJpdmVQb3J0YWwu
cmVzdG9yZVJldmlzaW9uKCkiPkRpZXNlIFZlcnNpb24gd2llZGVyaGVyc3RlbGxlbjwvYnV0dG9u
PicgOiAnJykgKwogICAgICAgICAgICAnPHNwYW4gY2xhc3M9InJldi1pbmZvIj4nICsgbGFiZWwg
KyAnPC9zcGFuPic7CgogICAgICAgIHRoaXMuc2hvd1JldkNvbnRlbnQoKTsKICAgIH0sCgogICAg
c2hvd1JldkNvbnRlbnQoKSB7CiAgICAgICAgdmFyIGRvYyA9IERyaXZlRlMuZG9jdW1lbnRzLmZp
bmQoZnVuY3Rpb24oZCkgeyByZXR1cm4gZC5pZCA9PT0gRHJpdmVQb3J0YWwuX3JldkRvY0lkOyB9
KTsKICAgICAgICBpZiAoIWRvYykgcmV0dXJuOwogICAgICAgIHRoaXMuX3Jldk1vZGUgPSAnY29u
dGVudCc7CgogICAgICAgIHZhciBjb250ZW50RWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
cmV2aXNpb25Db250ZW50Jyk7CiAgICAgICAgdmFyIHJldiA9ICh0aGlzLl9yZXZTZWxlY3RlZElk
eCA9PT0gLTEpID8gbnVsbCA6IChkb2MucmV2aXNpb25zIHx8IFtdKVt0aGlzLl9yZXZTZWxlY3Rl
ZElkeF07CiAgICAgICAgdmFyIGluaGFsdCA9IHJldiA/IHJldi5pbmhhbHQgOiBkb2MuaW5oYWx0
OwogICAgICAgIHZhciB0aXRlbCA9IHJldiA/IHJldi50aXRlbCA6IGRvYy50aXRlbDsKCiAgICAg
ICAgY29udGVudEVsLmlubmVySFRNTCA9CiAgICAgICAgICAgICc8ZGl2IHN0eWxlPSJmb250LXNp
emU6MThweDtmb250LXdlaWdodDo3MDA7Y29sb3I6dmFyKC0tdGV4dC1oZWFkaW5nKTttYXJnaW4t
Ym90dG9tOjE2cHg7cGFkZGluZy1ib3R0b206OHB4O2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHZh
cigtLWJvcmRlci1saWdodCk7Ij4nICsKICAgICAgICAgICAgICAgIERyaXZlUG9ydGFsLmVzY2Fw
ZUhUTUwodGl0ZWwgfHwgJ09obmUgVGl0ZWwnKSArCiAgICAgICAgICAgICc8L2Rpdj4nICsKICAg
ICAgICAgICAgKGluaGFsdCB8fCAnPHNwYW4gc3R5bGU9ImNvbG9yOnZhcigtLXRleHQtbXV0ZWQp
OyI+S2VpbiBJbmhhbHQ8L3NwYW4+Jyk7CgogICAgICAgIC8vIEJ1dHRvbi1TdGF0dXMKICAgICAg
ICB2YXIgYnRuQyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXZCdG5Db250ZW50Jyk7CiAg
ICAgICAgdmFyIGJ0bkQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmV2QnRuRGlmZicpOwog
ICAgICAgIGlmIChidG5DKSBidG5DLmNsYXNzTGlzdC5hZGQoJ2FjdGl2ZScpOwogICAgICAgIGlm
IChidG5EKSBidG5ELmNsYXNzTGlzdC5yZW1vdmUoJ2FjdGl2ZScpOwogICAgfSwKCiAgICBzaG93
UmV2RGlmZigpIHsKICAgICAgICB2YXIgZG9jID0gRHJpdmVGUy5kb2N1bWVudHMuZmluZChmdW5j
dGlvbihkKSB7IHJldHVybiBkLmlkID09PSBEcml2ZVBvcnRhbC5fcmV2RG9jSWQ7IH0pOwogICAg
ICAgIGlmICghZG9jKSByZXR1cm47CiAgICAgICAgdGhpcy5fcmV2TW9kZSA9ICdkaWZmJzsKCiAg
ICAgICAgdmFyIGNvbnRlbnRFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXZpc2lvbkNv
bnRlbnQnKTsKICAgICAgICB2YXIgcmV2ID0gKHRoaXMuX3JldlNlbGVjdGVkSWR4ID09PSAtMSkg
PyBudWxsIDogKGRvYy5yZXZpc2lvbnMgfHwgW10pW3RoaXMuX3JldlNlbGVjdGVkSWR4XTsKCiAg
ICAgICAgaWYgKCFyZXYgfHwgdGhpcy5fcmV2U2VsZWN0ZWRJZHggPT09IC0xKSB7CiAgICAgICAg
ICAgIGNvbnRlbnRFbC5pbm5lckhUTUwgPSAnPGRpdiBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXI7
Y29sb3I6dmFyKC0tdGV4dC1tdXRlZCk7bWFyZ2luLXRvcDo2MHB4OyI+RGlmZiBudXIgZsO8ciBm
csO8aGVyZSBWZXJzaW9uZW4gdmVyZnVlZ2JhcjwvZGl2Pic7CiAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICB9CgogICAgICAgIHZhciBvbGRJbmhhbHQgPSByZXYuaW5oYWx0IHx8ICcnOwogICAg
ICAgIHZhciBuZXdJbmhhbHQgPSBkb2MuaW5oYWx0IHx8ICcnOwogICAgICAgIHZhciBkaWZmSHRt
bCA9IHRoaXMuX2NvbXB1dGVEaWZmKG9sZEluaGFsdCwgbmV3SW5oYWx0KTsKCiAgICAgICAgdmFy
IHRpdGVsQ2hhbmdlZCA9IHJldi50aXRlbCAhPT0gZG9jLnRpdGVsOwoKICAgICAgICBjb250ZW50
RWwuaW5uZXJIVE1MID0KICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImRpZmYtbGVnZW5kIj4nICsK
ICAgICAgICAgICAgICAgICc8c3Bhbj48c3BhbiBjbGFzcz0iZGlmZi1hZGRlZCI+QmVpc3BpZWw8
L3NwYW4+IEhpbnp1Z2VmdWVndDwvc3Bhbj4nICsKICAgICAgICAgICAgICAgICc8c3Bhbj48c3Bh
biBjbGFzcz0iZGlmZi1yZW1vdmVkIj5CZWlzcGllbDwvc3Bhbj4gRW50ZmVybnQ8L3NwYW4+JyAr
CiAgICAgICAgICAgICc8L2Rpdj4nICsKICAgICAgICAgICAgKHRpdGVsQ2hhbmdlZCA/CiAgICAg
ICAgICAgICAgICAnPGRpdiBzdHlsZT0ibWFyZ2luLWJvdHRvbToxMnB4O3BhZGRpbmc6OHB4IDEy
cHg7Ym9yZGVyLXJhZGl1czo2cHg7YmFja2dyb3VuZDp2YXIoLS1iZy1jYXJkLWFsdCk7Zm9udC1z
aXplOjEzcHg7Ij4nICsKICAgICAgICAgICAgICAgICAgICAnVGl0ZWw6IDxzcGFuIGNsYXNzPSJk
aWZmLXJlbW92ZWQiPicgKyBEcml2ZVBvcnRhbC5lc2NhcGVIVE1MKHJldi50aXRlbCB8fCAnJykg
KyAnPC9zcGFuPiAmcmFycjsgJyArCiAgICAgICAgICAgICAgICAgICAgJzxzcGFuIGNsYXNzPSJk
aWZmLWFkZGVkIj4nICsgRHJpdmVQb3J0YWwuZXNjYXBlSFRNTChkb2MudGl0ZWwgfHwgJycpICsg
Jzwvc3Bhbj4nICsKICAgICAgICAgICAgICAgICc8L2Rpdj4nIDogJycpICsKICAgICAgICAgICAg
ZGlmZkh0bWw7CgogICAgICAgIC8vIEJ1dHRvbi1TdGF0dXMKICAgICAgICB2YXIgYnRuQyA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXZCdG5Db250ZW50Jyk7CiAgICAgICAgdmFyIGJ0bkQg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmV2QnRuRGlmZicpOwogICAgICAgIGlmIChidG5D
KSBidG5DLmNsYXNzTGlzdC5yZW1vdmUoJ2FjdGl2ZScpOwogICAgICAgIGlmIChidG5EKSBidG5E
LmNsYXNzTGlzdC5hZGQoJ2FjdGl2ZScpOwogICAgfSwKCiAgICBhc3luYyByZXN0b3JlUmV2aXNp
b24oKSB7CiAgICAgICAgdmFyIGRvYyA9IERyaXZlRlMuZG9jdW1lbnRzLmZpbmQoZnVuY3Rpb24o
ZCkgeyByZXR1cm4gZC5pZCA9PT0gRHJpdmVQb3J0YWwuX3JldkRvY0lkOyB9KTsKICAgICAgICBp
ZiAoIWRvYyB8fCB0aGlzLl9yZXZTZWxlY3RlZElkeCA8IDApIHJldHVybjsKICAgICAgICB2YXIg
cmV2ID0gKGRvYy5yZXZpc2lvbnMgfHwgW10pW3RoaXMuX3JldlNlbGVjdGVkSWR4XTsKICAgICAg
ICBpZiAoIXJldikgcmV0dXJuOwoKICAgICAgICBpZiAoIWNvbmZpcm0oJ1ZlcnNpb24gJyArICh0
aGlzLl9yZXZTZWxlY3RlZElkeCArIDEpICsgJyB3aWVkZXJoZXJzdGVsbGVuP1xuXG5EZXIgYWt0
dWVsbGUgSW5oYWx0IHdpcmQgYWxzIG5ldWUgUmV2aXNpb24gZ2VzaWNoZXJ0LicpKSByZXR1cm47
CgogICAgICAgIHZhciB1c2VybmFtZSA9IChEcml2ZUZTLmVudmlyb24gJiYgRHJpdmVGUy5lbnZp
cm9uLnVzZXJuYW1lKSA/IERyaXZlRlMuZW52aXJvbi51c2VybmFtZSA6ICdVbmJla2FubnQnOwoK
ICAgICAgICAvLyBBa3R1ZWxsZW4gU3RhbmQgYWxzIFJldmlzaW9uIHNpY2hlcm4KICAgICAgICBp
ZiAoIWRvYy5yZXZpc2lvbnMpIGRvYy5yZXZpc2lvbnMgPSBbXTsKICAgICAgICBkb2MucmV2aXNp
b25zLnB1c2goewogICAgICAgICAgICBpbmhhbHQ6IGRvYy5pbmhhbHQsCiAgICAgICAgICAgIHRp
dGVsOiBkb2MudGl0ZWwsCiAgICAgICAgICAgIHN0YXR1czogZG9jLnN0YXR1cywKICAgICAgICAg
ICAgc2F2ZWRBdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLAogICAgICAgICAgICBzYXZlZEJ5
OiB1c2VybmFtZQogICAgICAgIH0pOwogICAgICAgIHdoaWxlIChkb2MucmV2aXNpb25zLmxlbmd0
aCA+IDYpIHsKICAgICAgICAgICAgZG9jLnJldmlzaW9ucy5zaGlmdCgpOwogICAgICAgIH0KCiAg
ICAgICAgLy8gUmV2aXNpb24gd2llZGVyaGVyc3RlbGxlbgogICAgICAgIGRvYy5pbmhhbHQgPSBy
ZXYuaW5oYWx0OwogICAgICAgIGRvYy50aXRlbCA9IHJldi50aXRlbDsKCiAgICAgICAgdHJ5IHsK
ICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGF3YWl0IERyaXZlRlMuc2F2ZURvY3VtZW50KGRvYyk7
CiAgICAgICAgICAgIGlmIChyZXN1bHQgPT09IHRydWUpIHsKICAgICAgICAgICAgICAgIHNob3dU
b2FzdCgnVmVyc2lvbiAnICsgKHRoaXMuX3JldlNlbGVjdGVkSWR4ICsgMSkgKyAnIHdpZWRlcmhl
cmdlc3RlbGx0JywgJ3N1Y2Nlc3MnKTsKICAgICAgICAgICAgICAgIHRoaXMuY2xvc2VSZXZpc2lv
bnMoKTsKICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyKCk7CiAgICAgICAgICAgICAgICBhd2Fp
dCB0aGlzLnNlbGVjdERvY3VtZW50KGRvYy5pZCk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICAgICBzaG93VG9hc3QoJ0ZlaGxlcjogJyArIHJlc3VsdCwgJ2Vycm9yJyk7CiAgICAg
ICAgICAgIH0KICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgIHNob3dUb2FzdCgnRmVo
bGVyOiAnICsgZS5tZXNzYWdlLCAnZXJyb3InKTsKICAgICAgICB9CiAgICB9LAoKICAgIGFzeW5j
IHNlbGVjdERvY3VtZW50KGRvY0lkKSB7CiAgICAgICAgdGhpcy5zZWxlY3RlZERvY0lkID0gZG9j
SWQ7CiAgICAgICAgdGhpcy5fZGlmZlZpc2libGUgPSBmYWxzZTsKCiAgICAgICAgLy8gTGFkZSBh
a3R1ZWxsc3RlIFZlcnNpb24gdm9uIERpc2sKICAgICAgICBjb25zdCBkb2MgPSBhd2FpdCBEcml2
ZUZTLmxvYWREb2N1bWVudChkb2NJZCk7CiAgICAgICAgaWYgKCFkb2MpIHsKICAgICAgICAgICAg
c2hvd1RvYXN0KCdEb2t1bWVudCBrb25udGUgbmljaHQgZ2VsYWRlbiB3ZXJkZW4nLCAnZXJyb3In
KTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgLy8gSW4tTWVtb3J5IGFr
dHVhbGlzaWVyZW4KICAgICAgICBjb25zdCBpZHggPSBEcml2ZUZTLmRvY3VtZW50cy5maW5kSW5k
ZXgoZCA9PiBkLmlkID09PSBkb2NJZCk7CiAgICAgICAgaWYgKGlkeCA+PSAwKSBEcml2ZUZTLmRv
Y3VtZW50c1tpZHhdID0gZG9jOwoKICAgICAgICB0aGlzLnJlbmRlckxpc3QoKTsKICAgICAgICB0
aGlzLnJlbmRlckRldGFpbChkb2MpOwogICAgfSwKCiAgICByZW5kZXJEZXRhaWwoZG9jKSB7CiAg
ICAgICAgY29uc3QgZGV0YWlsQ29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Rv
Y3VtZW50RGV0YWlsJyk7CiAgICAgICAgY29uc3Qgc3RhdHVzQ29uZmlnID0gRHJpdmVGUy5jb25m
aWcuc3RhdHVzIHx8IHt9OwogICAgICAgIGNvbnN0IGNmZyA9IHN0YXR1c0NvbmZpZ1tkb2Muc3Rh
dHVzXSB8fCB7IGNvbG9yOiAnI2VlZScsIHRleHRDb2xvcjogJyMzMzMnLCBpY29uOiAnJywgbGFi
ZWw6IGRvYy5zdGF0dXMgfTsKCiAgICAgICAgbGV0IG1lZGlhSFRNTCA9ICcnOwogICAgICAgIGlm
IChkb2MubWVkaWFzICYmIGRvYy5tZWRpYXMubGVuZ3RoID4gMCkgewogICAgICAgICAgICAvLyBP
bmx5IHNob3cgYXR0YWNobWVudHMgc2VjdGlvbiAoaW5saW5lIG1lZGlhIGlzIHJlbmRlcmVkIGlu
IGRvYy5pbmhhbHQpCiAgICAgICAgICAgIGNvbnN0IGF0dGFjaG1lbnRzID0gZG9jLm1lZGlhcy5m
aWx0ZXIobSA9PiAhbS5kaXNwbGF5TW9kZSB8fCBtLmRpc3BsYXlNb2RlID09PSAnYXR0YWNobWVu
dCcpOwogICAgICAgICAgICBjb25zdCBpbmxpbmVNZWRpYSA9IGRvYy5tZWRpYXMuZmlsdGVyKG0g
PT4gbS5kaXNwbGF5TW9kZSAmJiBtLmRpc3BsYXlNb2RlICE9PSAnYXR0YWNobWVudCcpOwoKICAg
ICAgICAgICAgbGV0IHNlY3Rpb25zID0gJyc7CgogICAgICAgICAgICBpZiAoYXR0YWNobWVudHMu
bGVuZ3RoID4gMCkgewogICAgICAgICAgICAgICAgc2VjdGlvbnMgKz0gJzxoMyBzdHlsZT0iZm9u
dC1zaXplOjE2cHg7IGZvbnQtd2VpZ2h0OjYwMDsgY29sb3I6dmFyKC0tdGV4dC1oZWFkaW5nKTsg
bWFyZ2luLWJvdHRvbToxMnB4OyI+QW5ow6RuZ2UgKCcgKyBhdHRhY2htZW50cy5sZW5ndGggKyAn
KTwvaDM+JzsKICAgICAgICAgICAgICAgIHNlY3Rpb25zICs9ICc8ZGl2IHN0eWxlPSJkaXNwbGF5
OmZsZXg7IGZsZXgtZGlyZWN0aW9uOmNvbHVtbjsgZ2FwOjhweDsgbWFyZ2luLWJvdHRvbToyMHB4
OyI+JzsKICAgICAgICAgICAgICAgIGF0dGFjaG1lbnRzLmZvckVhY2gobWVkaWEgPT4gewogICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHR5cGUgPSBtZWRpYS50eXBlIHx8ICdmaWxlJzsKICAgICAg
ICAgICAgICAgICAgICBjb25zdCB0eXBlTGFiZWwgPSB0eXBlLnRvVXBwZXJDYXNlKCk7CiAgICAg
ICAgICAgICAgICAgICAgY29uc3Qgc2FmZVVybCA9IHRoaXMuZXNjYXBlQXR0cihtZWRpYS51cmwp
OwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHNhZmVUaXRsZSA9IHRoaXMuZXNjYXBlQXR0ciht
ZWRpYS50aXRsZSB8fCAnJyk7CgogICAgICAgICAgICAgICAgICAgIHNlY3Rpb25zICs9ICc8ZGl2
IGNsYXNzPSJhdHRhY2htZW50LWl0ZW0iIG9uY2xpY2s9Im9wZW5NZWRpYU1vZGFsKFwnJyArIHNh
ZmVVcmwgKyAnXCcsXCcnICsgdHlwZSArICdcJyxcJycgKyBzYWZlVGl0bGUgKyAnXCcpIj4nICsK
ICAgICAgICAgICAgICAgICAgICAgICAgJzxzcGFuIGNsYXNzPSJkcml2ZS1maWxlLWljb24gJyAr
IHR5cGUgKyAnIj4nICsgdHlwZUxhYmVsICsgJzwvc3Bhbj4nICsKICAgICAgICAgICAgICAgICAg
ICAgICAgJzxkaXYgY2xhc3M9ImF0dGFjaG1lbnQtaW5mbyI+JyArCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnPGRpdiBjbGFzcz0iYXR0YWNobWVudC10aXRsZSI+JyArIHRoaXMuZXNjYXBl
SFRNTChtZWRpYS50aXRsZSB8fCBtZWRpYS51cmwuc3BsaXQoJy8nKS5wb3AoKSkgKyAnPC9kaXY+
JyArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0iYXR0YWNobWVudC1t
ZXRhIj4nICsgdGhpcy5lc2NhcGVIVE1MKG1lZGlhLmRlc2NyaXB0aW9uIHx8ICcnKSArICc8L2Rp
dj4nICsKICAgICAgICAgICAgICAgICAgICAgICAgJzwvZGl2PicgKwogICAgICAgICAgICAgICAg
ICAgICAgICAnPGRpdiBjbGFzcz0iYXR0YWNobWVudC1hY3Rpb25zIiBvbmNsaWNrPSJldmVudC5z
dG9wUHJvcGFnYXRpb24oKSI+JzsKCiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGUgPT09ICdw
ZGYnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb25zICs9ICc8YnV0dG9uIG9uY2xp
Y2s9IndpbmRvdy5vcGVuKFwnJyArIHNhZmVVcmwgKyAnXCcsXCdfYmxhbmtcJykiPk5ldWVyIFRh
YjwvYnV0dG9uPic7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHNl
Y3Rpb25zICs9ICc8YnV0dG9uIG9uY2xpY2s9Im9wZW5NZWRpYU1vZGFsKFwnJyArIHNhZmVVcmwg
KyAnXCcsXCcnICsgdHlwZSArICdcJyxcJycgKyBzYWZlVGl0bGUgKyAnXCcpIj5BbnplaWdlbjwv
YnV0dG9uPic7CiAgICAgICAgICAgICAgICAgICAgc2VjdGlvbnMgKz0gJzwvZGl2PjwvZGl2Pic7
CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIHNlY3Rpb25zICs9ICc8L2Rpdj4n
OwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoaW5saW5lTWVkaWEubGVuZ3RoID4gMCkg
ewogICAgICAgICAgICAgICAgc2VjdGlvbnMgKz0gJzxoMyBzdHlsZT0iZm9udC1zaXplOjE2cHg7
IGZvbnQtd2VpZ2h0OjYwMDsgY29sb3I6dmFyKC0tdGV4dC1oZWFkaW5nKTsgbWFyZ2luLWJvdHRv
bToxMnB4OyI+RWluZ2ViZXR0ZXRlIE1lZGllbiAoJyArIGlubGluZU1lZGlhLmxlbmd0aCArICcp
PC9oMz4nOwogICAgICAgICAgICAgICAgc2VjdGlvbnMgKz0gJzxkaXYgc3R5bGU9ImRpc3BsYXk6
ZmxleDsgZmxleC1kaXJlY3Rpb246Y29sdW1uOyBnYXA6OHB4OyI+JzsKICAgICAgICAgICAgICAg
IGlubGluZU1lZGlhLmZvckVhY2gobWVkaWEgPT4gewogICAgICAgICAgICAgICAgICAgIGNvbnN0
IHR5cGUgPSBtZWRpYS50eXBlIHx8ICdmaWxlJzsKICAgICAgICAgICAgICAgICAgICBjb25zdCB0
eXBlTGFiZWwgPSB0eXBlLnRvVXBwZXJDYXNlKCk7CiAgICAgICAgICAgICAgICAgICAgY29uc3Qg
c2FmZVVybCA9IHRoaXMuZXNjYXBlQXR0cihtZWRpYS51cmwpOwogICAgICAgICAgICAgICAgICAg
IGNvbnN0IHNhZmVUaXRsZSA9IHRoaXMuZXNjYXBlQXR0cihtZWRpYS50aXRsZSB8fCAnJyk7CiAg
ICAgICAgICAgICAgICAgICAgY29uc3QgbW9kZUxhYmVsID0gbWVkaWEuZGlzcGxheU1vZGUgPT09
ICdpbmxpbmUnID8gJ0JpbGQnIDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtZWRpYS5kaXNwbGF5TW9kZSA9PT0gJ3BkZi1saW5rJyA/ICdQREYtTGluaycgOgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lZGlhLmRpc3BsYXlNb2RlID09PSAncGRm
LWlmcmFtZScgPyAnUERGIGVpbmdlYmV0dGV0JyA6IG1lZGlhLmRpc3BsYXlNb2RlOwoKICAgICAg
ICAgICAgICAgICAgICBzZWN0aW9ucyArPSAnPGRpdiBjbGFzcz0iYXR0YWNobWVudC1pdGVtIiBv
bmNsaWNrPSJvcGVuTWVkaWFNb2RhbChcJycgKyBzYWZlVXJsICsgJ1wnLFwnJyArIHR5cGUgKyAn
XCcsXCcnICsgc2FmZVRpdGxlICsgJ1wnKSI+JyArCiAgICAgICAgICAgICAgICAgICAgICAgICc8
c3BhbiBjbGFzcz0iZHJpdmUtZmlsZS1pY29uICcgKyB0eXBlICsgJyI+JyArIHR5cGVMYWJlbCAr
ICc8L3NwYW4+JyArCiAgICAgICAgICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJhdHRhY2ht
ZW50LWluZm8iPicgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImF0
dGFjaG1lbnQtdGl0bGUiPicgKyB0aGlzLmVzY2FwZUhUTUwobWVkaWEudGl0bGUgfHwgJycpICsg
JzwvZGl2PicgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImF0dGFj
aG1lbnQtbWV0YSI+JyArIHRoaXMuZXNjYXBlSFRNTChtb2RlTGFiZWwpICsgKG1lZGlhLmFsaWdu
bWVudCA/ICcgfCAnICsgbWVkaWEuYWxpZ25tZW50IDogJycpICsgJzwvZGl2PicgKwogICAgICAg
ICAgICAgICAgICAgICAgICAnPC9kaXY+PC9kaXY+JzsKICAgICAgICAgICAgICAgIH0pOwogICAg
ICAgICAgICAgICAgc2VjdGlvbnMgKz0gJzwvZGl2Pic7CiAgICAgICAgICAgIH0KCiAgICAgICAg
ICAgIGlmIChzZWN0aW9ucykgewogICAgICAgICAgICAgICAgbWVkaWFIVE1MID0gJzxkaXYgY2xh
c3M9Im1lZGlhLXNlY3Rpb24iPicgKyBzZWN0aW9ucyArICc8L2Rpdj4nOwogICAgICAgICAgICB9
CiAgICAgICAgfQoKICAgICAgICBkZXRhaWxDb250YWluZXIuaW5uZXJIVE1MID0KICAgICAgICAg
ICAgJzxkaXYgc3R5bGU9ImRpc3BsYXk6ZmxleDsganVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdl
ZW47IGFsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7IG1hcmdpbi1ib3R0b206MjBweDsiPicgKwogICAg
ICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImRldGFpbC1oZWFkZXIiIHN0eWxlPSJmbGV4OjE7Ij4n
ICsKICAgICAgICAgICAgICAgICAgICAnPGgxIGNsYXNzPSJkZXRhaWwtdGl0bGUiPicgKyB0aGlz
LmVzY2FwZUhUTUwoZG9jLnRpdGVsKSArICc8L2gxPicgKwogICAgICAgICAgICAgICAgICAgICc8
ZGl2IGNsYXNzPSJkZXRhaWwtbWV0YSI+JyArCiAgICAgICAgICAgICAgICAgICAgICAgICc8ZGl2
IGNsYXNzPSJtZXRhLWl0ZW0iPjxkaXYgY2xhc3M9Im1ldGEtbGFiZWwiPkthdGVnb3JpZTwvZGl2
PjxkaXY+JyArIHRoaXMuZXNjYXBlSFRNTChkb2Mua2F0ZWdvcmllKSArICc8L2Rpdj48L2Rpdj4n
ICsKICAgICAgICAgICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9Im1ldGEtaXRlbSI+PGRpdiBj
bGFzcz0ibWV0YS1sYWJlbCI+U3RhdHVzPC9kaXY+PGRpdj4nICsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICc8c3BhbiBjbGFzcz0ic3RhdHVzLWJhZGdlIiBzdHlsZT0iYmFja2dyb3VuZC1j
b2xvcjonICsgY2ZnLmNvbG9yICsgJzsgY29sb3I6JyArIGNmZy50ZXh0Q29sb3IgKyAnOyI+JyAr
IGNmZy5sYWJlbCArICc8L3NwYW4+JyArCiAgICAgICAgICAgICAgICAgICAgICAgICc8L2Rpdj48
L2Rpdj4nICsKICAgICAgICAgICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9Im1ldGEtaXRlbSI+
PGRpdiBjbGFzcz0ibWV0YS1sYWJlbCI+VmVyc2lvbjwvZGl2PjxkaXY+PHNwYW4gc3R5bGU9ImN1
cnNvcjpwb2ludGVyO2JvcmRlci1ib3R0b206MXB4IGRhc2hlZCB2YXIoLS10ZXh0LW11dGVkKTsi
IG9uY2xpY2s9InNob3dWZXJzaW9uTG9naWMoKSIgdGl0bGU9IktsaWNrZSBmw7xyIGVpbmUgRXJr
bMOkcnVuZyBkZXIgVmVyc2lvbmllcnVuZyI+JyArIHRoaXMuZXNjYXBlSFRNTChkb2MudmVyc2lv
biB8fCAnLScpICsgJzwvc3Bhbj48L2Rpdj48L2Rpdj4nICsKICAgICAgICAgICAgICAgICAgICAg
ICAgJzxkaXYgY2xhc3M9Im1ldGEtaXRlbSI+PGRpdiBjbGFzcz0ibWV0YS1sYWJlbCI+RXJzdGVs
bHQ8L2Rpdj48ZGl2PicgKyBmb3JtYXREYXRlKGRvYy5lcnN0ZWxsdCkgKyAnPC9kaXY+PC9kaXY+
JyArCiAgICAgICAgICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJtZXRhLWl0ZW0iPjxkaXYg
Y2xhc3M9Im1ldGEtbGFiZWwiPkdlw6RuZGVydDwvZGl2PjxkaXY+JyArIGZvcm1hdERhdGUoZG9j
LmdlYWVuZGVydCkgKyAnPC9kaXY+PC9kaXY+JyArCiAgICAgICAgICAgICAgICAgICAgICAgIChk
b2MuZXJzdGVsbHRWb24gPyAnPGRpdiBjbGFzcz0ibWV0YS1pdGVtIj48ZGl2IGNsYXNzPSJtZXRh
LWxhYmVsIj5FcnN0ZWxsdCB2b248L2Rpdj48ZGl2PicgKyB0aGlzLmVzY2FwZUhUTUwoZG9jLmVy
c3RlbGx0Vm9uKSArICc8L2Rpdj48L2Rpdj4nIDogJycpICsKICAgICAgICAgICAgICAgICAgICAg
ICAgKGRvYy5iZWFyYmVpdGV0Vm9uID8gJzxkaXYgY2xhc3M9Im1ldGEtaXRlbSI+PGRpdiBjbGFz
cz0ibWV0YS1sYWJlbCI+QmVhcmJlaXRldCB2b248L2Rpdj48ZGl2PicgKyB0aGlzLmVzY2FwZUhU
TUwoZG9jLmJlYXJiZWl0ZXRWb24pICsgJzwvZGl2PjwvZGl2PicgOiAnJykgKwogICAgICAgICAg
ICAgICAgICAgICAgICAoZG9jLnBhcmVudElkID8gJzxkaXYgY2xhc3M9Im1ldGEtaXRlbSI+PGRp
diBjbGFzcz0ibWV0YS1sYWJlbCI+w5xiZXJhcnRpa2VsPC9kaXY+PGRpdj48YSBzdHlsZT0iY29s
b3I6dmFyKC0tdGV4dC1oZWFkaW5nKTtjdXJzb3I6cG9pbnRlcjsiIG9uY2xpY2s9IkRyaXZlUG9y
dGFsLnNlbGVjdERvY3VtZW50KFwnJyArIERyaXZlUG9ydGFsLmVzY2FwZUF0dHIoZG9jLnBhcmVu
dElkKSArICdcJykiPicgKyB0aGlzLmVzY2FwZUhUTUwoKERyaXZlRlMuZG9jdW1lbnRzLmZpbmQo
ZnVuY3Rpb24oZCl7cmV0dXJuIGQuaWQ9PT1kb2MucGFyZW50SWR9KXx8e30pLnRpdGVsIHx8IGRv
Yy5wYXJlbnRJZCkgKyAnPC9hPjwvZGl2PjwvZGl2PicgOiAnJykgKwogICAgICAgICAgICAgICAg
ICAgICAgICAoKGRvYy5zY2hsYWd3b2VydGVyICYmIGRvYy5zY2hsYWd3b2VydGVyLmxlbmd0aCkg
PyAnPGRpdiBjbGFzcz0ibWV0YS1pdGVtIiBzdHlsZT0iZmxleC1iYXNpczoxMDAlOyI+PGRpdiBj
bGFzcz0ibWV0YS1sYWJlbCI+U2NobGFnd8O2cnRlcjwvZGl2PjxkaXY+JyArIGRvYy5zY2hsYWd3
b2VydGVyLm1hcChmdW5jdGlvbihrKXtyZXR1cm4gJzxzcGFuIGNsYXNzPSJrZXl3b3JkLXRhZyI+
JytEcml2ZVBvcnRhbC5lc2NhcGVIVE1MKGspKyc8L3NwYW4+Jzt9KS5qb2luKCcgJykgKyAnPC9k
aXY+PC9kaXY+JyA6ICcnKSArCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3JlbmRlckNo
aWxkQXJ0aWNsZXMoZG9jKSArCiAgICAgICAgICAgICAgICAgICAgJzwvZGl2PicgKwogICAgICAg
ICAgICAgICAgJzwvZGl2PicgKwogICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImRldGFpbC1h
Y3Rpb25zIj4nICsKICAgICAgICAgICAgICAgICAgICAoRHJpdmVGUy5yZWFkT25seSA/ICcnIDog
JzxidXR0b24gb25jbGljaz0iRHJpdmVFZGl0b3IuZWRpdChcJycgKyBEcml2ZVBvcnRhbC5lc2Nh
cGVBdHRyKGRvYy5pZCkgKyAnXCcpIj5CZWFyYmVpdGVuPC9idXR0b24+JykgKwogICAgICAgICAg
ICAgICAgICAgICh0aGlzLl9jYW5TZWVSZXZpc2lvbnMoZG9jKSAmJiBkb2MucmV2aXNpb25zICYm
IGRvYy5yZXZpc2lvbnMubGVuZ3RoID4gMCA/ICc8YnV0dG9uIHN0eWxlPSJib3JkZXItY29sb3I6
IzNiODJmNjtjb2xvcjojM2I4MmY2OyIgb25jbGljaz0iRHJpdmVQb3J0YWwub3BlblJldmlzaW9u
cyhcJycgKyBEcml2ZVBvcnRhbC5lc2NhcGVBdHRyKGRvYy5pZCkgKyAnXCcpIj5WZXJzaW9uZW4g
KCcgKyBkb2MucmV2aXNpb25zLmxlbmd0aCArICcpPC9idXR0b24+JyA6ICcnKSArCiAgICAgICAg
ICAgICAgICAgICAgKERyaXZlRlMucmVhZE9ubHkgPyAnJyA6ICc8YnV0dG9uIGNsYXNzPSJidG4t
ZGFuZ2VyIiBvbmNsaWNrPSJEcml2ZVBvcnRhbC5kZWxldGVEb2N1bWVudChcJycgKyBEcml2ZVBv
cnRhbC5lc2NhcGVBdHRyKGRvYy5pZCkgKyAnXCcpIj5Mw7ZzY2hlbjwvYnV0dG9uPicpICsKICAg
ICAgICAgICAgICAgICAgICAoZG9jLnN0YXR1cyA9PT0gJ1Byw7xmdW5nJyAmJiBEcml2ZUdvdmVy
bmFuY2UuY2FuQXBwcm92ZShkb2MpID8KICAgICAgICAgICAgICAgICAgICAgICAgKChkb2MucmV2
aXNpb25zICYmIGRvYy5yZXZpc2lvbnMubGVuZ3RoID4gMCkgPyAnPGJ1dHRvbiBzdHlsZT0iYm9y
ZGVyLWNvbG9yOnZhcigtLXRleHQtaGVhZGluZyk7Y29sb3I6dmFyKC0tdGV4dC1oZWFkaW5nKTsi
IG9uY2xpY2s9IkRyaXZlUG9ydGFsLnRvZ2dsZURpZmYoXCcnICsgRHJpdmVQb3J0YWwuZXNjYXBl
QXR0cihkb2MuaWQpICsgJ1wnKSIgaWQ9ImJ0bkRpZmYiPsOEbmRlcnVuZ2VuIGFuemVpZ2VuPC9i
dXR0b24+JyA6ICcnKSArCiAgICAgICAgICAgICAgICAgICAgICAgICc8YnV0dG9uIHN0eWxlPSJi
b3JkZXItY29sb3I6IzI4YTc0NTtjb2xvcjojMjhhNzQ1OyIgb25jbGljaz0iRHJpdmVHb3Zlcm5h
bmNlLm9wZW5SZXZpZXdEaWFsb2coXCcnICsgRHJpdmVQb3J0YWwuZXNjYXBlQXR0cihkb2MuaWQp
ICsgJ1wnLFwnYXBwcm92ZVwnKSI+RnJlaWdlYmVuPC9idXR0b24+JyArCiAgICAgICAgICAgICAg
ICAgICAgICAgICc8YnV0dG9uIHN0eWxlPSJib3JkZXItY29sb3I6I2RjMzU0NTtjb2xvcjojZGMz
NTQ1OyIgb25jbGljaz0iRHJpdmVHb3Zlcm5hbmNlLm9wZW5SZXZpZXdEaWFsb2coXCcnICsgRHJp
dmVQb3J0YWwuZXNjYXBlQXR0cihkb2MuaWQpICsgJ1wnLFwncmVqZWN0XCcpIj5BYmxlaG5lbjwv
YnV0dG9uPicgOiAnJykgKwogICAgICAgICAgICAgICAgJzwvZGl2PicgKwogICAgICAgICAgICAn
PC9kaXY+JyArCiAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJkZXRhaWwtY29udGVudCIgaWQ9ImRl
dGFpbENvbnRlbnQiPicgKyAoZG9jLmluaGFsdCB8fCAnJykgKyAnPC9kaXY+JyArCiAgICAgICAg
ICAgIHRoaXMucmVuZGVyQ29udHJpYnV0b3JzKGRvYykgKwogICAgICAgICAgICB0aGlzLnJlbmRl
clJldmlld0hpc3RvcnkoZG9jKSArCiAgICAgICAgICAgIG1lZGlhSFRNTDsKCiAgICAgICAgLy8g
UG9zdC1SZW5kZXI6IEFsbGUgTWVkaWVuIGltIEluaGFsdCBrbGlja2JhciBtYWNoZW4gKG9lZmZu
ZXQgTW9kYWwpCiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7CiAgICAgICAgICAgIGNvbnN0IGNv
bnRlbnQgPSBkZXRhaWxDb250YWluZXIucXVlcnlTZWxlY3RvcignLmRldGFpbC1jb250ZW50Jyk7
CiAgICAgICAgICAgIGlmICghY29udGVudCkgcmV0dXJuOwoKICAgICAgICAgICAgLy8gQmlsZGVy
OiBLbGljayBvZWZmbmV0IE1vZGFsCiAgICAgICAgICAgIGNvbnRlbnQucXVlcnlTZWxlY3RvckFs
bCgnLmRyaXZlLW1lZGlhIGltZywgLmRldGFpbC1jb250ZW50ID4gaW1nJykuZm9yRWFjaChpbWcg
PT4gewogICAgICAgICAgICAgICAgaWYgKGltZy5fbW9kYWxCb3VuZCkgcmV0dXJuOwogICAgICAg
ICAgICAgICAgaW1nLnN0eWxlLmN1cnNvciA9ICdwb2ludGVyJzsKICAgICAgICAgICAgICAgIGlt
Zy5vbmNsaWNrID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIGUuc3RvcFByb3Bh
Z2F0aW9uKCk7CiAgICAgICAgICAgICAgICAgICAgb3Blbk1lZGlhTW9kYWwoaW1nLnNyYywgJ2lt
YWdlJywgaW1nLmFsdCB8fCAnJyk7CiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAg
aW1nLl9tb2RhbEJvdW5kID0gdHJ1ZTsKICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAvLyBQ
REYtTGlua3M6IDxhIHRhcmdldD0iX2JsYW5rIj4gaW4gTW9kYWwtS2xpY2sgdW13YW5kZWxuCiAg
ICAgICAgICAgIGNvbnRlbnQucXVlcnlTZWxlY3RvckFsbCgnLmRyaXZlLW1lZGlhLXBkZi1saW5r
JykuZm9yRWFjaChlbCA9PiB7CiAgICAgICAgICAgICAgICBjb25zdCBsaW5rID0gZWwucXVlcnlT
ZWxlY3RvcignYScpOwogICAgICAgICAgICAgICAgY29uc3QgdGl0bGVTcGFuID0gZWwucXVlcnlT
ZWxlY3RvcignLnBkZi10aXRsZScpOwogICAgICAgICAgICAgICAgY29uc3QgcGRmVXJsID0gbGlu
ayA/IGxpbmsuaHJlZiA6ICcnOwogICAgICAgICAgICAgICAgY29uc3QgcGRmVGl0bGUgPSAodGl0
bGVTcGFuIHx8IGxpbmsgfHwge30pLnRleHRDb250ZW50IHx8ICdQREYnOwogICAgICAgICAgICAg
ICAgaWYgKGxpbmspIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBzcGFuID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgnc3BhbicpOwogICAgICAgICAgICAgICAgICAgIHNwYW4uY2xhc3NOYW1l
ID0gJ3BkZi10aXRsZSc7CiAgICAgICAgICAgICAgICAgICAgc3Bhbi50ZXh0Q29udGVudCA9IGxp
bmsudGV4dENvbnRlbnQ7CiAgICAgICAgICAgICAgICAgICAgbGluay5yZXBsYWNlV2l0aChzcGFu
KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsLm9uY2xpY2sgPSBmdW5jdGlv
bihlKSB7IGUucHJldmVudERlZmF1bHQoKTsgZS5zdG9wUHJvcGFnYXRpb24oKTsgb3Blbk1lZGlh
TW9kYWwocGRmVXJsLCAncGRmJywgcGRmVGl0bGUpOyB9OwogICAgICAgICAgICB9KTsKCiAgICAg
ICAgICAgIC8vIFBERi1pRnJhbWVzOiBLbGljayBvZWZmbmV0IE1vZGFsCiAgICAgICAgICAgIGNv
bnRlbnQucXVlcnlTZWxlY3RvckFsbCgnLmRyaXZlLW1lZGlhLXBkZi1pZnJhbWUnKS5mb3JFYWNo
KGVsID0+IHsKICAgICAgICAgICAgICAgIGNvbnN0IGlmcmFtZSA9IGVsLnF1ZXJ5U2VsZWN0b3Io
J2lmcmFtZScpOwogICAgICAgICAgICAgICAgaWYgKGlmcmFtZSkgewogICAgICAgICAgICAgICAg
ICAgIGVsLm9uY2xpY2sgPSBmdW5jdGlvbihlKSB7IGUucHJldmVudERlZmF1bHQoKTsgZS5zdG9w
UHJvcGFnYXRpb24oKTsgb3Blbk1lZGlhTW9kYWwoaWZyYW1lLnNyYywgJ3BkZicsICdQREYnKTsg
fTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAvLyBWaWRl
bzogS2xpY2sgYXVmIENvbnRhaW5lciBvZWZmbmV0IE1vZGFsIChmYWxscyBuaWNodCBiZXJlaXRz
IGNvbnRyb2xzLWFrdGl2KQogICAgICAgICAgICBjb250ZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3Zp
ZGVvJykuZm9yRWFjaCh2aWQgPT4gewogICAgICAgICAgICAgICAgaWYgKHZpZC5fbW9kYWxCb3Vu
ZCkgcmV0dXJuOwogICAgICAgICAgICAgICAgY29uc3Qgc3JjID0gdmlkLnF1ZXJ5U2VsZWN0b3Io
J3NvdXJjZScpID8gdmlkLnF1ZXJ5U2VsZWN0b3IoJ3NvdXJjZScpLnNyYyA6IHZpZC5zcmM7CiAg
ICAgICAgICAgICAgICBpZiAoc3JjKSB7CiAgICAgICAgICAgICAgICAgICAgdmlkLnN0eWxlLmN1
cnNvciA9ICdwb2ludGVyJzsKICAgICAgICAgICAgICAgICAgICB2aWQub25kYmxjbGljayA9IGZ1
bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgb3Blbk1lZGlhTW9kYWwoc3JjLCAndmlkZW8nLCAnJyk7
CiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
IHZpZC5fbW9kYWxCb3VuZCA9IHRydWU7CiAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgLy8g
QXVkaW86IERvcHBlbGtsaWNrIG9lZmZuZXQgTW9kYWwKICAgICAgICAgICAgY29udGVudC5xdWVy
eVNlbGVjdG9yQWxsKCdhdWRpbycpLmZvckVhY2goYXVkID0+IHsKICAgICAgICAgICAgICAgIGlm
IChhdWQuX21vZGFsQm91bmQpIHJldHVybjsKICAgICAgICAgICAgICAgIGNvbnN0IHNyYyA9IGF1
ZC5zcmMgfHwgKGF1ZC5xdWVyeVNlbGVjdG9yKCdzb3VyY2UnKSA/IGF1ZC5xdWVyeVNlbGVjdG9y
KCdzb3VyY2UnKS5zcmMgOiAnJyk7CiAgICAgICAgICAgICAgICBpZiAoc3JjKSB7CiAgICAgICAg
ICAgICAgICAgICAgYXVkLm9uZGJsY2xpY2sgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIG9w
ZW5NZWRpYU1vZGFsKHNyYywgJ2F1ZGlvJywgJycpOwogICAgICAgICAgICAgICAgICAgIH07CiAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBhdWQuX21vZGFsQm91bmQgPSB0cnVlOwog
ICAgICAgICAgICB9KTsKCiAgICAgICAgICAgIC8vIElubGluZS1FbWJlZHMgKFZpZGVvLCBBdWRp
bywgT2ZmaWNlKTogS2xpY2sgb2VmZm5ldCBNb2RhbAogICAgICAgICAgICBjb250ZW50LnF1ZXJ5
U2VsZWN0b3JBbGwoJy5kcml2ZS1tZWRpYS1lbWJlZCcpLmZvckVhY2goZWwgPT4gewogICAgICAg
ICAgICAgICAgaWYgKGVsLl9tb2RhbEJvdW5kKSByZXR1cm47CiAgICAgICAgICAgICAgICBjb25z
dCBtZWRpYVVybCA9IGVsLmdldEF0dHJpYnV0ZSgnZGF0YS1tZWRpYS11cmwnKTsKICAgICAgICAg
ICAgICAgIGNvbnN0IG1lZGlhVHlwZSA9IGVsLmdldEF0dHJpYnV0ZSgnZGF0YS1tZWRpYS10eXBl
Jyk7CiAgICAgICAgICAgICAgICBjb25zdCBsYWJlbCA9IGVsLnF1ZXJ5U2VsZWN0b3IoJy5kcml2
ZS1lbWJlZC1sYWJlbCcpOwogICAgICAgICAgICAgICAgY29uc3QgbWVkaWFUaXRsZSA9IGxhYmVs
ID8gbGFiZWwudGV4dENvbnRlbnQgOiAnJzsKICAgICAgICAgICAgICAgIGlmIChtZWRpYVVybCkg
ewogICAgICAgICAgICAgICAgICAgIGVsLm9uY2xpY2sgPSBmdW5jdGlvbihlKSB7IGUucHJldmVu
dERlZmF1bHQoKTsgZS5zdG9wUHJvcGFnYXRpb24oKTsgb3Blbk1lZGlhTW9kYWwobWVkaWFVcmws
IG1lZGlhVHlwZSwgbWVkaWFUaXRsZSk7IH07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICBlbC5fbW9kYWxCb3VuZCA9IHRydWU7CiAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAg
Ly8gPT09IEFjY29yZGlvbnMgYWt0aXZpZXJlbiAoQXVmLS9adWtsYXBwZW4sIHN0YW5kYXJkbWFl
c3NpZyBlaW5nZWtsYXBwdCkgPT09CiAgICAgICAgICAgIGNvbnRlbnQucXVlcnlTZWxlY3RvckFs
bCgnLmRyaXZlLWFjY29yZGlvbicpLmZvckVhY2goZnVuY3Rpb24oYWNjKSB7CiAgICAgICAgICAg
ICAgICBhY2Muc2V0QXR0cmlidXRlKCdjb250ZW50ZWRpdGFibGUnLCAnZmFsc2UnKTsKICAgICAg
ICAgICAgICAgIGFjYy5jbGFzc0xpc3QucmVtb3ZlKCdvcGVuJyk7CiAgICAgICAgICAgICAgICB2
YXIgaGVhZGVyID0gYWNjLnF1ZXJ5U2VsZWN0b3IoJy5kcml2ZS1hY2NvcmRpb24taGVhZGVyJyk7
CiAgICAgICAgICAgICAgICBpZiAoaGVhZGVyICYmICFoZWFkZXIuX2FjY0JvdW5kKSB7CiAgICAg
ICAgICAgICAgICAgICAgaGVhZGVyLm9uY2xpY2sgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgICAgICAgICAgICAg
ZS5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICAgICAgICAgICAgICAgICAgYWNjLmNsYXNzTGlz
dC50b2dnbGUoJ29wZW4nKTsKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAg
ICAgIGhlYWRlci5fYWNjQm91bmQgPSB0cnVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICB9KTsKCiAgICAgICAgICAgIC8vID09PSBGQVEtQmVyZWljaGUgYWt0aXZpZXJlbiAoQXVmLS9a
dWtsYXBwZW4sIHN0YW5kYXJkbWFlc3NpZyBlaW5nZWtsYXBwdCkgPT09CiAgICAgICAgICAgIGNv
bnRlbnQucXVlcnlTZWxlY3RvckFsbCgnLmRyaXZlLWZhcScpLmZvckVhY2goZnVuY3Rpb24oZmFx
KSB7CiAgICAgICAgICAgICAgICBmYXEuc2V0QXR0cmlidXRlKCdjb250ZW50ZWRpdGFibGUnLCAn
ZmFsc2UnKTsKICAgICAgICAgICAgICAgIGZhcS5xdWVyeVNlbGVjdG9yQWxsKCcuZHJpdmUtZmFx
LWl0ZW0nKS5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0pIHsgaXRlbS5jbGFzc0xpc3QucmVtb3ZlKCdv
cGVuJyk7IH0pOwogICAgICAgICAgICAgICAgZmFxLnF1ZXJ5U2VsZWN0b3JBbGwoJy5kcml2ZS1m
YXEtcXVlc3Rpb24nKS5mb3JFYWNoKGZ1bmN0aW9uKHEpIHsKICAgICAgICAgICAgICAgICAgICBp
ZiAocS5fZmFxQm91bmQpIHJldHVybjsKICAgICAgICAgICAgICAgICAgICBxLm9uY2xpY2sgPSBm
dW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgcS5jbG9zZXN0KCcuZHJpdmUtZmFxLWl0ZW0nKS5jbGFzc0xpc3QudG9nZ2xl
KCdvcGVuJyk7CiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICBxLl9m
YXFCb3VuZCA9IHRydWU7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfSk7CgogICAg
ICAgICAgICAvLyA9PT0gU29ydGllcmJhcmUgVGFiZWxsZW4gYWt0aXZpZXJlbiA9PT0KICAgICAg
ICAgICAgY29udGVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZHJpdmUtdGFibGVbZGF0YS1zb3J0YWJs
ZT0idHJ1ZSJdJykuZm9yRWFjaChmdW5jdGlvbih0YWJsZSkgewogICAgICAgICAgICAgICAgdGFi
bGUucXVlcnlTZWxlY3RvckFsbCgndGguc29ydGFibGUnKS5mb3JFYWNoKGZ1bmN0aW9uKHRoKSB7
CiAgICAgICAgICAgICAgICAgICAgaWYgKHRoLl9zb3J0Qm91bmQpIHJldHVybjsKICAgICAgICAg
ICAgICAgICAgICB0aC5zZXRBdHRyaWJ1dGUoJ2NvbnRlbnRlZGl0YWJsZScsICdmYWxzZScpOwog
ICAgICAgICAgICAgICAgICAgIHRoLm9uY2xpY2sgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgICAgICAgICAgICAg
ZS5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGlkeCA9IEFy
cmF5LmZyb20odGgucGFyZW50RWxlbWVudC5jaGlsZHJlbikuaW5kZXhPZih0aCk7CiAgICAgICAg
ICAgICAgICAgICAgICAgIHZhciB0Ym9keSA9IHRhYmxlLnF1ZXJ5U2VsZWN0b3IoJ3Rib2R5Jyk7
CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGJvZHkpIHJldHVybjsKICAgICAgICAgICAg
ICAgICAgICAgICAgdmFyIGFzYyA9ICF0aC5jbGFzc0xpc3QuY29udGFpbnMoJ3NvcnQtYXNjJyk7
CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFsbGUgU29ydC1NYXJrZXIgZW50ZmVybmVuCiAg
ICAgICAgICAgICAgICAgICAgICAgIHRhYmxlLnF1ZXJ5U2VsZWN0b3JBbGwoJ3RoJykuZm9yRWFj
aChmdW5jdGlvbihoKSB7IGguY2xhc3NMaXN0LnJlbW92ZSgnc29ydC1hc2MnLCAnc29ydC1kZXNj
Jyk7IH0pOwogICAgICAgICAgICAgICAgICAgICAgICB0aC5jbGFzc0xpc3QuYWRkKGFzYyA/ICdz
b3J0LWFzYycgOiAnc29ydC1kZXNjJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByb3dz
ID0gQXJyYXkuZnJvbSh0Ym9keS5xdWVyeVNlbGVjdG9yQWxsKCd0cicpKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgcm93cy5zb3J0KGZ1bmN0aW9uKGEsIGIpIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHZhciBhVGV4dCA9IChhLmNlbGxzW2lkeF0gPyBhLmNlbGxzW2lkeF0udGV4dENv
bnRlbnQudHJpbSgpIDogJycpLnRvTG93ZXJDYXNlKCk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB2YXIgYlRleHQgPSAoYi5jZWxsc1tpZHhdID8gYi5jZWxsc1tpZHhdLnRleHRDb250ZW50
LnRyaW0oKSA6ICcnKS50b0xvd2VyQ2FzZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gTnVtZXJpc2NoZSBTb3J0aWVydW5nIHdlbm4gbW9lZ2xpY2gKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHZhciBhTnVtID0gcGFyc2VGbG9hdChhVGV4dCksIGJOdW0gPSBwYXJzZUZsb2F0
KGJUZXh0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNOYU4oYU51bSkgJiYg
IWlzTmFOKGJOdW0pKSByZXR1cm4gYXNjID8gYU51bSAtIGJOdW0gOiBiTnVtIC0gYU51bTsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhc2MgPyBhVGV4dC5sb2NhbGVDb21wYXJl
KGJUZXh0LCAnZGUnKSA6IGJUZXh0LmxvY2FsZUNvbXBhcmUoYVRleHQsICdkZScpOwogICAgICAg
ICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgcm93cy5mb3JFYWNo
KGZ1bmN0aW9uKHJvdykgeyB0Ym9keS5hcHBlbmRDaGlsZChyb3cpOyB9KTsKICAgICAgICAgICAg
ICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIHRoLl9zb3J0Qm91bmQgPSB0cnVlOwogICAg
ICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgLy8gPT09IMOcYmVy
c2NocmlmdGVuIG1pdCBBbmNob3ItSURzIHZlcnNlaGVuID09PQogICAgICAgICAgICBjb250ZW50
LnF1ZXJ5U2VsZWN0b3JBbGwoJ2gxLCBoMiwgaDMsIGg0JykuZm9yRWFjaChmdW5jdGlvbihoKSB7
CiAgICAgICAgICAgICAgICB2YXIgdGV4dCA9IGgudGV4dENvbnRlbnQudHJpbSgpOwogICAgICAg
ICAgICAgICAgaWYgKCF0ZXh0KSByZXR1cm47CiAgICAgICAgICAgICAgICB2YXIgc2x1ZyA9IHRl
eHQudG9Mb3dlckNhc2UoKQogICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKC/DpC9nLCAnYWUn
KS5yZXBsYWNlKC/Dti9nLCAnb2UnKS5yZXBsYWNlKC/DvC9nLCAndWUnKS5yZXBsYWNlKC/Dny9n
LCAnc3MnKQogICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9bXmEtejAtOV0rL2csICctJyku
cmVwbGFjZSgvXi18LSQvZywgJycpOwogICAgICAgICAgICAgICAgaC5pZCA9IHNsdWc7CiAgICAg
ICAgICAgIH0pOwoKICAgICAgICAgICAgLy8gPT09IE1hbnVlbGxlIENyb3NzbGlua3MgKC5kcml2
ZS14cmVmKSBrbGlja2JhciBtYWNoZW4gPT09CiAgICAgICAgICAgIGNvbnRlbnQucXVlcnlTZWxl
Y3RvckFsbCgnLmRyaXZlLXhyZWYnKS5mb3JFYWNoKGZ1bmN0aW9uKGVsKSB7CiAgICAgICAgICAg
ICAgICB2YXIgdGFyZ2V0ID0gZWwuZ2V0QXR0cmlidXRlKCdkYXRhLXhyZWYtdGFyZ2V0Jyk7CiAg
ICAgICAgICAgICAgICBpZiAoIXRhcmdldCkgcmV0dXJuOwogICAgICAgICAgICAgICAgZWwub25j
bGljayA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0
KCk7CiAgICAgICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICAgICAg
ICAgICAgICB2YXIgcGFydHMgPSB0YXJnZXQuc3BsaXQoJyMnKTsKICAgICAgICAgICAgICAgICAg
ICB2YXIgZG9jSWQgPSBwYXJ0c1swXTsKICAgICAgICAgICAgICAgICAgICB2YXIgaGVhZGluZ1Ns
dWcgPSBwYXJ0c1sxXSB8fCAnJzsKICAgICAgICAgICAgICAgICAgICBEcml2ZVBvcnRhbC5zZWxl
Y3REb2N1bWVudChkb2NJZCkudGhlbihmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgRHJpdmVQb3J0YWwuaGlnaGxpZ2h0SXRlbShkb2NJZCk7CiAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChoZWFkaW5nU2x1ZykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTmFj
aCBSZW5kZXIgenVtIEhlYWRpbmcgc2Nyb2xsZW4KICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dmFyIGhlYWRpbmcgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChoZWFkaW5nU2x1Zyk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGhlYWRpbmcpIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaGVhZGluZy5zY3JvbGxJbnRvVmlldyh7IGJlaGF2aW9yOiAn
c21vb3RoJywgYmxvY2s6ICdzdGFydCcgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGhlYWRpbmcuc3R5bGUudHJhbnNpdGlvbiA9ICdiYWNrZ3JvdW5kIDAuM3MnOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkaW5nLnN0eWxlLmJhY2tncm91bmQg
PSAndmFyKC0tYmctYWN0aXZlKSc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IGhlYWRpbmcuc3R5bGUuYmFja2dyb3VuZCA9ICcnOyB9
LCAyMDAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9LCAyMDApOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgLy8gTW91
c2VvdmVyOiBQb3BvdmVyIG1pdCBaaWVsLUluZm8KICAgICAgICAgICAgICAgIGVsLmFkZEV2ZW50
TGlzdGVuZXIoJ21vdXNlZW50ZXInLCBmdW5jdGlvbihldikgewogICAgICAgICAgICAgICAgICAg
IHZhciBwYXJ0cyA9IHRhcmdldC5zcGxpdCgnIycpOwogICAgICAgICAgICAgICAgICAgIHZhciBk
b2NJZCA9IHBhcnRzWzBdOwogICAgICAgICAgICAgICAgICAgIHZhciBkb2MgPSBEcml2ZUZTLmRv
Y3VtZW50cy5maW5kKGZ1bmN0aW9uKGQpIHsgcmV0dXJuIGQuaWQgPT09IGRvY0lkOyB9KTsKICAg
ICAgICAgICAgICAgICAgICBpZiAoZG9jKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIERyaXZl
UG9ydGFsLl9zaG93Q3Jvc3NsaW5rUG9wb3ZlcihldiwgW3sgdGVybTogZG9jLnRpdGVsLCB0eXBl
OiAncmVmZXJlbnonLCBkb2M6IGRvYyB9XSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBlbC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWxl
YXZlJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgRHJpdmVQb3J0YWwuX2hpZGVD
cm9zc2xpbmtQb3BvdmVyKCk7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfSk7Cgog
ICAgICAgICAgICAvLyA9PT0gQXV0b21hdGlzY2hlIENyb3NzbGluay1Fcmtlbm51bmcgPT09CiAg
ICAgICAgICAgIHRoaXMuX2FwcGx5Q3Jvc3NsaW5rcyhjb250ZW50LCBkb2MpOwogICAgICAgIH0s
IDUwKTsKICAgIH0sCgogICAgLy8gQ3Jvc3NsaW5rLUVuZ2luZTogRXJrZW5udCBWZXJ3ZWlzZSBh
dWYgYW5kZXJlIEFydGlrZWwgaW0gSW5oYWx0CiAgICBfY3Jvc3NsaW5rUG9wb3ZlcjogbnVsbCwK
ICAgIF9jcm9zc2xpbmtUaW1lb3V0OiBudWxsLAoKICAgIF9idWlsZENyb3NzbGlua0luZGV4KGV4
Y2x1ZGVEb2NJZCkgewogICAgICAgIC8vIEluZGV4IGFsbGVyIERva3VtZW50ZSBtaXQgVGl0ZWxu
IHVuZCBTY2hsYWd3b2VydGVybgogICAgICAgIHZhciBpbmRleCA9IFtdOwogICAgICAgIERyaXZl
RlMuZG9jdW1lbnRzLmZvckVhY2goZnVuY3Rpb24oZCkgewogICAgICAgICAgICBpZiAoZC5pZCA9
PT0gZXhjbHVkZURvY0lkKSByZXR1cm47CiAgICAgICAgICAgIC8vIFRpdGVsIGFscyBTdWNoYmVn
cmlmZiAobWluIDQgWmVpY2hlbikKICAgICAgICAgICAgaWYgKGQudGl0ZWwgJiYgZC50aXRlbC5s
ZW5ndGggPj0gNCkgewogICAgICAgICAgICAgICAgaW5kZXgucHVzaCh7IHRlcm06IGQudGl0ZWws
IHR5cGU6ICd0aXRlbCcsIGRvYzogZCB9KTsKICAgICAgICAgICAgfQogICAgICAgICAgICAvLyBT
Y2hsYWd3b2VydGVyIGFscyBTdWNoYmVncmlmZmUgKG1pbiAzIFplaWNoZW4pCiAgICAgICAgICAg
IChkLnNjaGxhZ3dvZXJ0ZXIgfHwgW10pLmZvckVhY2goZnVuY3Rpb24oa3cpIHsKICAgICAgICAg
ICAgICAgIGlmIChrdyAmJiBrdy5sZW5ndGggPj0gMykgewogICAgICAgICAgICAgICAgICAgIGlu
ZGV4LnB1c2goeyB0ZXJtOiBrdywgdHlwZTogJ3NjaGxhZ3dvcnQnLCBkb2M6IGQgfSk7CiAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgIH0pOwogICAgICAgIC8vIExhZW5n
c3RlIEJlZ3JpZmZlIHp1ZXJzdCAodmVyaGluZGVydCBUZWlsbWF0Y2hlcykKICAgICAgICBpbmRl
eC5zb3J0KGZ1bmN0aW9uKGEsIGIpIHsgcmV0dXJuIGIudGVybS5sZW5ndGggLSBhLnRlcm0ubGVu
Z3RoOyB9KTsKICAgICAgICByZXR1cm4gaW5kZXg7CiAgICB9LAoKICAgIF9hcHBseUNyb3NzbGlu
a3MoY29udGVudEVsLCBjdXJyZW50RG9jKSB7CiAgICAgICAgLy8gR292ZXJuYW5jZS1FaW5zdGVs
bHVuZyBwcsO8ZmVuCiAgICAgICAgdmFyIHNldHRpbmdzID0gKERyaXZlR292ZXJuYW5jZS5kYXRh
ICYmIERyaXZlR292ZXJuYW5jZS5kYXRhLnNldHRpbmdzKSA/IERyaXZlR292ZXJuYW5jZS5kYXRh
LnNldHRpbmdzIDoge307CiAgICAgICAgaWYgKHNldHRpbmdzLmNyb3NzbGlua01vZGUgPT09ICdk
aXNhYmxlZCcpIHJldHVybjsKCiAgICAgICAgdmFyIGluZGV4ID0gdGhpcy5fYnVpbGRDcm9zc2xp
bmtJbmRleChjdXJyZW50RG9jLmlkKTsKICAgICAgICBpZiAoaW5kZXgubGVuZ3RoID09PSAwKSBy
ZXR1cm47CgogICAgICAgIC8vIEJlcmVpdHMgdmVybGlua3RlIFRlcm1lIHRyYWNrZW4gKGtlaW4g
ZG9wcGVsdGVzIE1hdGNoaW5nKQogICAgICAgIHZhciBtYXRjaGVkID0gbmV3IFNldCgpOwogICAg
ICAgIC8vIFNhbW1sZSBhbGxlIHVuaXF1ZSBEb2t1bWVudC1JRHMgZGllIGplIFRlcm0gbWF0Y2hl
bgogICAgICAgIHZhciB0ZXJtRG9jcyA9IHt9OwogICAgICAgIGluZGV4LmZvckVhY2goZnVuY3Rp
b24oZW50cnkpIHsKICAgICAgICAgICAgdmFyIGtleSA9IGVudHJ5LnRlcm0udG9Mb3dlckNhc2Uo
KTsKICAgICAgICAgICAgaWYgKCF0ZXJtRG9jc1trZXldKSB0ZXJtRG9jc1trZXldID0gW107CiAg
ICAgICAgICAgIC8vIE51ciB1bmlxdWUgRG9jcyBwcm8gVGVybQogICAgICAgICAgICBpZiAoIXRl
cm1Eb2NzW2tleV0uZmluZChmdW5jdGlvbihlKSB7IHJldHVybiBlLmRvYy5pZCA9PT0gZW50cnku
ZG9jLmlkOyB9KSkgewogICAgICAgICAgICAgICAgdGVybURvY3Nba2V5XS5wdXNoKGVudHJ5KTsK
ICAgICAgICAgICAgfQogICAgICAgIH0pOwoKICAgICAgICB2YXIgd2Fsa2VyID0gZG9jdW1lbnQu
Y3JlYXRlVHJlZVdhbGtlcihjb250ZW50RWwsIE5vZGVGaWx0ZXIuU0hPV19URVhULCBudWxsLCBm
YWxzZSk7CiAgICAgICAgdmFyIHRleHROb2RlcyA9IFtdOwogICAgICAgIHdoaWxlICh3YWxrZXIu
bmV4dE5vZGUoKSkgewogICAgICAgICAgICB2YXIgbm9kZSA9IHdhbGtlci5jdXJyZW50Tm9kZTsK
ICAgICAgICAgICAgLy8gTmljaHQgaW5uZXJoYWxiIHZvbiBMaW5rcywgQnV0dG9ucywgYmVyZWl0
cyBtYXJraWVydGVuIENyb3NzbGlua3MsIG9kZXIgZHJpdmUtbWVkaWEgRWxlbWVudGVuCiAgICAg
ICAgICAgIHZhciBwYXJlbnQgPSBub2RlLnBhcmVudEVsZW1lbnQ7CiAgICAgICAgICAgIGlmIChw
YXJlbnQgJiYgKHBhcmVudC5jbG9zZXN0KCdhJykgfHwgcGFyZW50LmNsb3Nlc3QoJ2J1dHRvbicp
IHx8IHBhcmVudC5jbG9zZXN0KCcuY3Jvc3NsaW5rJykgfHwgcGFyZW50LmNsb3Nlc3QoJy5kcml2
ZS1tZWRpYScpKSkgY29udGludWU7CiAgICAgICAgICAgIGlmIChub2RlLnRleHRDb250ZW50LnRy
aW0oKS5sZW5ndGggPiAyKSB7CiAgICAgICAgICAgICAgICB0ZXh0Tm9kZXMucHVzaChub2RlKTsK
ICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgdmFyIG1heExpbmtzID0gMzA7IC8vIFBl
cmZvcm1hbmNlLUxpbWl0CiAgICAgICAgdmFyIGxpbmtDb3VudCA9IDA7CgogICAgICAgIHRleHRO
b2Rlcy5mb3JFYWNoKGZ1bmN0aW9uKHRleHROb2RlKSB7CiAgICAgICAgICAgIGlmIChsaW5rQ291
bnQgPj0gbWF4TGlua3MpIHJldHVybjsKICAgICAgICAgICAgdmFyIHRleHQgPSB0ZXh0Tm9kZS50
ZXh0Q29udGVudDsKICAgICAgICAgICAgdmFyIHJlcGxhY2VtZW50cyA9IFtdOwoKICAgICAgICAg
ICAgaW5kZXguZm9yRWFjaChmdW5jdGlvbihlbnRyeSkgewogICAgICAgICAgICAgICAgaWYgKGxp
bmtDb3VudCA+PSBtYXhMaW5rcykgcmV0dXJuOwogICAgICAgICAgICAgICAgdmFyIHRlcm1Mb3dl
ciA9IGVudHJ5LnRlcm0udG9Mb3dlckNhc2UoKTsKICAgICAgICAgICAgICAgIGlmIChtYXRjaGVk
Lmhhcyh0ZXJtTG93ZXIpKSByZXR1cm47CgogICAgICAgICAgICAgICAgLy8gV29ydGdyZW56ZW4t
U3VjaGUgKGNhc2UtaW5zZW5zaXRpdmUpCiAgICAgICAgICAgICAgICB2YXIgZXNjYXBlZCA9IGVu
dHJ5LnRlcm0ucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyk7CiAgICAgICAg
ICAgICAgICB2YXIgcmUgPSBuZXcgUmVnRXhwKCdcXGInICsgZXNjYXBlZCArICdcXGInLCAnaScp
OwogICAgICAgICAgICAgICAgdmFyIG0gPSByZS5leGVjKHRleHQpOwogICAgICAgICAgICAgICAg
aWYgKG0pIHsKICAgICAgICAgICAgICAgICAgICByZXBsYWNlbWVudHMucHVzaCh7CiAgICAgICAg
ICAgICAgICAgICAgICAgIHN0YXJ0OiBtLmluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICBl
bmQ6IG0uaW5kZXggKyBtWzBdLmxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2lu
YWw6IG1bMF0sCiAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5OiBlbnRyeSwKICAgICAgICAg
ICAgICAgICAgICAgICAgZW50cmllczogdGVybURvY3NbdGVybUxvd2VyXSB8fCBbZW50cnldCiAg
ICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgbWF0Y2hlZC5hZGQodGVy
bUxvd2VyKTsKICAgICAgICAgICAgICAgICAgICBsaW5rQ291bnQrKzsKICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgfSk7CgogICAgICAgICAgICBpZiAocmVwbGFjZW1lbnRzLmxlbmd0aCA9
PT0gMCkgcmV0dXJuOwoKICAgICAgICAgICAgLy8gTmFjaCBQb3NpdGlvbiBzb3J0aWVyZW4gKHJ1
ZWNrd2FlcnRzIGVyc2V0emVuKQogICAgICAgICAgICByZXBsYWNlbWVudHMuc29ydChmdW5jdGlv
bihhLCBiKSB7IHJldHVybiBiLnN0YXJ0IC0gYS5zdGFydDsgfSk7CgogICAgICAgICAgICAvLyBV
ZWJlcmxhcHB1bmdlbiBlbnRmZXJuZW4KICAgICAgICAgICAgdmFyIGNsZWFuID0gW3JlcGxhY2Vt
ZW50c1swXV07CiAgICAgICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcmVwbGFjZW1lbnRzLmxl
bmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICBpZiAocmVwbGFjZW1lbnRzW2ldLmVuZCA8PSBj
bGVhbltjbGVhbi5sZW5ndGggLSAxXS5zdGFydCkgewogICAgICAgICAgICAgICAgICAgIGNsZWFu
LnB1c2gocmVwbGFjZW1lbnRzW2ldKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoK
ICAgICAgICAgICAgLy8gRnJhZ21lbnQgYmF1ZW4KICAgICAgICAgICAgdmFyIGZyYWcgPSBkb2N1
bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7CiAgICAgICAgICAgIHZhciBsYXN0SWR4ID0g
MDsKICAgICAgICAgICAgLy8gVm9yd2FlcnRzIHNvcnRpZXJlbiBmdWVyIEZyYWdtZW50LUF1ZmJh
dQogICAgICAgICAgICBjbGVhbi5zb3J0KGZ1bmN0aW9uKGEsIGIpIHsgcmV0dXJuIGEuc3RhcnQg
LSBiLnN0YXJ0OyB9KTsKCiAgICAgICAgICAgIGNsZWFuLmZvckVhY2goZnVuY3Rpb24ocikgewog
ICAgICAgICAgICAgICAgLy8gVGV4dCB2b3IgZGVtIE1hdGNoCiAgICAgICAgICAgICAgICBpZiAo
ci5zdGFydCA+IGxhc3RJZHgpIHsKICAgICAgICAgICAgICAgICAgICBmcmFnLmFwcGVuZENoaWxk
KGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRleHQuc3Vic3RyaW5nKGxhc3RJZHgsIHIuc3RhcnQp
KSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAvLyBDcm9zc2xpbmstU3Bhbgog
ICAgICAgICAgICAgICAgdmFyIHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7
CiAgICAgICAgICAgICAgICBzcGFuLmNsYXNzTmFtZSA9ICdjcm9zc2xpbmsnOwogICAgICAgICAg
ICAgICAgc3Bhbi50ZXh0Q29udGVudCA9IHIub3JpZ2luYWw7CiAgICAgICAgICAgICAgICAvLyBE
YXRlbiBmdWVyIFBvcG92ZXIKICAgICAgICAgICAgICAgIHZhciBkb2NzID0gci5lbnRyaWVzLm1h
cChmdW5jdGlvbihlKSB7IHJldHVybiBlLmRvYzsgfSk7CiAgICAgICAgICAgICAgICB2YXIgdHlw
ZXMgPSByLmVudHJpZXMubWFwKGZ1bmN0aW9uKGUpIHsgcmV0dXJuIGUudHlwZTsgfSk7CiAgICAg
ICAgICAgICAgICBzcGFuLnNldEF0dHJpYnV0ZSgnZGF0YS14bGluay1kb2NzJywgSlNPTi5zdHJp
bmdpZnkoZG9jcy5tYXAoZnVuY3Rpb24oZCkgeyByZXR1cm4gZC5pZDsgfSkpKTsKICAgICAgICAg
ICAgICAgIHNwYW4uc2V0QXR0cmlidXRlKCdkYXRhLXhsaW5rLXR5cGUnLCB0eXBlc1swXSk7Cgog
ICAgICAgICAgICAgICAgc3Bhbi5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWVudGVyJywgZnVuY3Rp
b24oZXYpIHsKICAgICAgICAgICAgICAgICAgICBEcml2ZVBvcnRhbC5fc2hvd0Nyb3NzbGlua1Bv
cG92ZXIoZXYsIHIuZW50cmllcyk7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAg
IHNwYW4uYWRkRXZlbnRMaXN0ZW5lcignbW91c2VsZWF2ZScsIGZ1bmN0aW9uKCkgewogICAgICAg
ICAgICAgICAgICAgIERyaXZlUG9ydGFsLl9oaWRlQ3Jvc3NsaW5rUG9wb3ZlcigpOwogICAgICAg
ICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBzcGFuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNr
JywgZnVuY3Rpb24oZXYpIHsKICAgICAgICAgICAgICAgICAgICBldi5wcmV2ZW50RGVmYXVsdCgp
OwogICAgICAgICAgICAgICAgICAgIGV2LnN0b3BQcm9wYWdhdGlvbigpOwogICAgICAgICAgICAg
ICAgICAgIC8vIEJlaSBudXIgZWluZW0gVHJlZmZlcjogZGlyZWt0IG9lZmZuZW4KICAgICAgICAg
ICAgICAgICAgICBpZiAoZG9jcy5sZW5ndGggPT09IDEpIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgRHJpdmVQb3J0YWwuc2VsZWN0RG9jdW1lbnQoZG9jc1swXS5pZCk7CiAgICAgICAgICAgICAg
ICAgICAgICAgIERyaXZlUG9ydGFsLmhpZ2hsaWdodEl0ZW0oZG9jc1swXS5pZCk7CiAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgZnJhZy5h
cHBlbmRDaGlsZChzcGFuKTsKICAgICAgICAgICAgICAgIGxhc3RJZHggPSByLmVuZDsKICAgICAg
ICAgICAgfSk7CgogICAgICAgICAgICAvLyBSZXN0LVRleHQKICAgICAgICAgICAgaWYgKGxhc3RJ
ZHggPCB0ZXh0Lmxlbmd0aCkgewogICAgICAgICAgICAgICAgZnJhZy5hcHBlbmRDaGlsZChkb2N1
bWVudC5jcmVhdGVUZXh0Tm9kZSh0ZXh0LnN1YnN0cmluZyhsYXN0SWR4KSkpOwogICAgICAgICAg
ICB9CgogICAgICAgICAgICB0ZXh0Tm9kZS5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZChmcmFnLCB0
ZXh0Tm9kZSk7CiAgICAgICAgfSk7CiAgICB9LAoKICAgIF9zaG93Q3Jvc3NsaW5rUG9wb3Zlcihl
diwgZW50cmllcykgewogICAgICAgIGNsZWFyVGltZW91dCh0aGlzLl9jcm9zc2xpbmtUaW1lb3V0
KTsKICAgICAgICB2YXIgcG9wb3ZlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjcm9zc2xp
bmtQb3BvdmVyJyk7CiAgICAgICAgaWYgKCFwb3BvdmVyKSByZXR1cm47CgogICAgICAgIC8vIE1l
aHJlcmUgRG9rdW1lbnRlIGtvZW5uZW4gZGVuc2VsYmVuIEJlZ3JpZmYgbWF0Y2hlbgogICAgICAg
IHZhciBzZWVuID0gbmV3IFNldCgpOwogICAgICAgIHZhciB1bmlxdWVFbnRyaWVzID0gZW50cmll
cy5maWx0ZXIoZnVuY3Rpb24oZSkgewogICAgICAgICAgICBpZiAoc2Vlbi5oYXMoZS5kb2MuaWQp
KSByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIHNlZW4uYWRkKGUuZG9jLmlkKTsKICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgICAgfSk7CgogICAgICAgIHZhciBodG1sID0gJyc7CiAgICAg
ICAgdW5pcXVlRW50cmllcy5mb3JFYWNoKGZ1bmN0aW9uKGVudHJ5LCBpZHgpIHsKICAgICAgICAg
ICAgdmFyIGRvYyA9IGVudHJ5LmRvYzsKICAgICAgICAgICAgdmFyIG1hdGNoVHlwZSA9IGVudHJ5
LnR5cGUgPT09ICd0aXRlbCcgPyAnQXJ0aWtlbHRpdGVsJyA6ICdTY2hsYWd3b3J0JzsKICAgICAg
ICAgICAgLy8gVGV4dGF1c3p1ZyAoZXJzdGUgMTIwIFplaWNoZW4gZGVzIEluaGFsdHMsIEhUTUwt
VGFncyBlbnRmZXJudCkKICAgICAgICAgICAgdmFyIGV4Y2VycHQgPSAnJzsKICAgICAgICAgICAg
aWYgKGRvYy5pbmhhbHQpIHsKICAgICAgICAgICAgICAgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdkaXYnKTsKICAgICAgICAgICAgICAgIGRpdi5pbm5lckhUTUwgPSBEcml2ZVBv
cnRhbC5zYW5pdGl6ZUhUTUwoZG9jLmluaGFsdCk7CiAgICAgICAgICAgICAgICBleGNlcnB0ID0g
ZGl2LnRleHRDb250ZW50LnN1YnN0cmluZygwLCAxMjApOwogICAgICAgICAgICAgICAgaWYgKGRp
di50ZXh0Q29udGVudC5sZW5ndGggPiAxMjApIGV4Y2VycHQgKz0gJy4uLic7CiAgICAgICAgICAg
IH0KICAgICAgICAgICAgaWYgKGlkeCA+IDApIGh0bWwgKz0gJzxkaXYgc3R5bGU9ImJvcmRlci10
b3A6MXB4IHNvbGlkIHZhcigtLWJvcmRlci1saWdodCk7bWFyZ2luOjhweCAwOyI+PC9kaXY+JzsK
ICAgICAgICAgICAgaHRtbCArPSAnPGRpdiBjbGFzcz0ieGxpbmstaGVhZGVyIj48c3BhbiBjbGFz
cz0ieGxpbmstaWNvbiI+JiN4MUY1MTc7PC9zcGFuPiAnICsgRHJpdmVQb3J0YWwuZXNjYXBlSFRN
TChkb2MudGl0ZWwpICsgJzwvZGl2Pic7CiAgICAgICAgICAgIGh0bWwgKz0gJzxkaXYgY2xhc3M9
InhsaW5rLW1ldGEiPic7CiAgICAgICAgICAgIGh0bWwgKz0gJzxzcGFuPicgKyBEcml2ZVBvcnRh
bC5lc2NhcGVIVE1MKGRvYy5rYXRlZ29yaWUpICsgJzwvc3Bhbj4nOwogICAgICAgICAgICBodG1s
ICs9ICc8c3Bhbj5UcmVmZmVyOiAnICsgbWF0Y2hUeXBlICsgJzwvc3Bhbj4nOwogICAgICAgICAg
ICBodG1sICs9ICc8c3Bhbj4nICsgRHJpdmVQb3J0YWwuZXNjYXBlSFRNTChkb2Muc3RhdHVzIHx8
ICdFbnR3dXJmJykgKyAnPC9zcGFuPic7CiAgICAgICAgICAgIGh0bWwgKz0gJzwvZGl2Pic7CiAg
ICAgICAgICAgIGlmIChleGNlcnB0KSB7CiAgICAgICAgICAgICAgICBodG1sICs9ICc8ZGl2IGNs
YXNzPSJ4bGluay1leGNlcnB0Ij4nICsgRHJpdmVQb3J0YWwuZXNjYXBlSFRNTChleGNlcnB0KSAr
ICc8L2Rpdj4nOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChkb2Muc2NobGFnd29lcnRl
ciAmJiBkb2Muc2NobGFnd29lcnRlci5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgICAgICBodG1s
ICs9ICc8ZGl2IGNsYXNzPSJ4bGluay10YWdzIj4nICsgZG9jLnNjaGxhZ3dvZXJ0ZXIuc2xpY2Uo
MCwgNSkubWFwKGZ1bmN0aW9uKGspIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJzxzcGFu
PicgKyBEcml2ZVBvcnRhbC5lc2NhcGVIVE1MKGspICsgJzwvc3Bhbj4nOwogICAgICAgICAgICAg
ICAgfSkuam9pbignJykgKyAnPC9kaXY+JzsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAo
dW5pcXVlRW50cmllcy5sZW5ndGggPT09IDEpIHsKICAgICAgICAgICAgICAgIGh0bWwgKz0gJzxk
aXYgY2xhc3M9InhsaW5rLWFjdGlvbiIgb25jbGljaz0iRHJpdmVQb3J0YWwuc2VsZWN0RG9jdW1l
bnQoXCcnICsgRHJpdmVQb3J0YWwuZXNjYXBlQXR0cihkb2MuaWQpICsgJ1wnKTtEcml2ZVBvcnRh
bC5oaWdobGlnaHRJdGVtKFwnJyArIERyaXZlUG9ydGFsLmVzY2FwZUF0dHIoZG9jLmlkKSArICdc
Jyk7Ij5BcnRpa2VsIMO2ZmZuZW4g4oaSPC9kaXY+JzsKICAgICAgICAgICAgfQogICAgICAgIH0p
OwoKICAgICAgICBpZiAodW5pcXVlRW50cmllcy5sZW5ndGggPiAxKSB7CiAgICAgICAgICAgIGh0
bWwgKz0gJzxkaXYgc3R5bGU9ImJvcmRlci10b3A6MXB4IHNvbGlkIHZhcigtLWJvcmRlci1saWdo
dCk7bWFyZ2luLXRvcDo4cHg7cGFkZGluZy10b3A6NnB4O2ZvbnQtc2l6ZToxMXB4O2NvbG9yOnZh
cigtLXRleHQtbXV0ZWQpOyI+JyArIHVuaXF1ZUVudHJpZXMubGVuZ3RoICsgJyB2ZXJ3YW5kdGUg
QXJ0aWtlbCBnZWZ1bmRlbjwvZGl2Pic7CiAgICAgICAgfQoKICAgICAgICBwb3BvdmVyLmlubmVy
SFRNTCA9IGh0bWw7CiAgICAgICAgcG9wb3Zlci5jbGFzc0xpc3QuYWRkKCd2aXNpYmxlJyk7Cgog
ICAgICAgIC8vIFBvc2l0aW9uIHJlbGF0aXYgenVtIFRyaWdnZXItRWxlbWVudAogICAgICAgIHZh
ciByZWN0ID0gZXYudGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwogICAgICAgIHZhciBw
b3BXID0gMzIwOwogICAgICAgIHZhciBwb3BIID0gcG9wb3Zlci5vZmZzZXRIZWlnaHQgfHwgMjAw
OwogICAgICAgIHZhciBsZWZ0ID0gcmVjdC5sZWZ0OwogICAgICAgIHZhciB0b3AgPSByZWN0LmJv
dHRvbSArIDY7CiAgICAgICAgLy8gUmVjaHRzIHJhdXM/IExpbmtzIHZlcnNjaGllYmVuCiAgICAg
ICAgaWYgKGxlZnQgKyBwb3BXID4gd2luZG93LmlubmVyV2lkdGggLSAxMCkgewogICAgICAgICAg
ICBsZWZ0ID0gd2luZG93LmlubmVyV2lkdGggLSBwb3BXIC0gMTA7CiAgICAgICAgfQogICAgICAg
IC8vIFVudGVuIHJhdXM/IFVlYmVyIGRlbSBFbGVtZW50IGFuemVpZ2VuCiAgICAgICAgaWYgKHRv
cCArIHBvcEggPiB3aW5kb3cuaW5uZXJIZWlnaHQgLSAxMCkgewogICAgICAgICAgICB0b3AgPSBy
ZWN0LnRvcCAtIHBvcEggLSA2OwogICAgICAgIH0KICAgICAgICBwb3BvdmVyLnN0eWxlLmxlZnQg
PSBNYXRoLm1heCgxMCwgbGVmdCkgKyAncHgnOwogICAgICAgIHBvcG92ZXIuc3R5bGUudG9wID0g
TWF0aC5tYXgoMTAsIHRvcCkgKyAncHgnOwogICAgfSwKCiAgICBfaGlkZUNyb3NzbGlua1BvcG92
ZXIoKSB7CiAgICAgICAgdGhpcy5fY3Jvc3NsaW5rVGltZW91dCA9IHNldFRpbWVvdXQoZnVuY3Rp
b24oKSB7CiAgICAgICAgICAgIHZhciBwb3BvdmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2Nyb3NzbGlua1BvcG92ZXInKTsKICAgICAgICAgICAgaWYgKHBvcG92ZXIpIHBvcG92ZXIuY2xh
c3NMaXN0LnJlbW92ZSgndmlzaWJsZScpOwogICAgICAgIH0sIDIwMCk7CiAgICB9LAoKICAgIC8v
IFBydWVmZW4gb2IgZGVyIGFrdHVlbGxlIFVzZXIgUmV2aXNpb25lbi9EaWZmIHNlaGVuIGRhcmY6
CiAgICAvLyAtIExlc2Vtb2R1czogbmllCiAgICAvLyAtIFN1cGVyVXNlciAvIEZhY2hhdWZzaWNo
dDogaW1tZXIKICAgIC8vIC0gWnVzdGFlbmRpZ2VyIFJldmlld2VyIGZ1ZXIgZGllIEthdGVnb3Jp
ZTogamEKICAgIC8vIC0gTWl0d2lya2VuZGVyIGFtIEFydGlrZWwgKENvbnRyaWJ1dG9yKTogamEK
ICAgIC8vIC0gQWxsZSBhbmRlcmVuOiBuZWluCiAgICBfY2FuU2VlUmV2aXNpb25zKGRvYykgewog
ICAgICAgIGlmIChEcml2ZUZTLm1vZGUgPT09ICdzdGF0aWMnKSByZXR1cm4gZmFsc2U7CiAgICAg
ICAgaWYgKERyaXZlR292ZXJuYW5jZS5pc1N1cGVyVXNlcigpIHx8IERyaXZlR292ZXJuYW5jZS5p
c0ZhY2hhdWZzaWNodCgpKSByZXR1cm4gdHJ1ZTsKICAgICAgICBpZiAoRHJpdmVHb3Zlcm5hbmNl
LmlzUmV2aWV3ZXIoZG9jLmthdGVnb3JpZSkpIHJldHVybiB0cnVlOwogICAgICAgIC8vIE1pdHdp
cmtlbmRlOiBVc2VybmFtZSBwcnVlZmVuCiAgICAgICAgdmFyIHVzZXJuYW1lID0gKERyaXZlRlMu
ZW52aXJvbiAmJiBEcml2ZUZTLmVudmlyb24udXNlcm5hbWUpID8gRHJpdmVGUy5lbnZpcm9uLnVz
ZXJuYW1lLnRvTG93ZXJDYXNlKCkgOiAnJzsKICAgICAgICBpZiAodXNlcm5hbWUgJiYgZG9jLmNv
bnRyaWJ1dG9ycykgewogICAgICAgICAgICBpZiAoZG9jLmNvbnRyaWJ1dG9ycy5zb21lKGZ1bmN0
aW9uKGMpIHsgcmV0dXJuIChjLnVzZXJuYW1lIHx8ICcnKS50b0xvd2VyQ2FzZSgpID09PSB1c2Vy
bmFtZTsgfSkpIHJldHVybiB0cnVlOwogICAgICAgIH0KICAgICAgICAvLyBFcnN0ZWxsZXIgb2Rl
ciBsZXR6dGVyIEJlYXJiZWl0ZXIKICAgICAgICBpZiAodXNlcm5hbWUgJiYgKChkb2MuZXJzdGVs
bHRWb24gfHwgJycpLnRvTG93ZXJDYXNlKCkgPT09IHVzZXJuYW1lIHx8IChkb2MuYmVhcmJlaXRl
dFZvbiB8fCAnJykudG9Mb3dlckNhc2UoKSA9PT0gdXNlcm5hbWUpKSByZXR1cm4gdHJ1ZTsKICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICB9LAoKICAgIF9yZW5kZXJDaGlsZEFydGljbGVzKGRvYykg
ewogICAgICAgIGNvbnN0IGNoaWxkcmVuID0gRHJpdmVGUy5kb2N1bWVudHMuZmlsdGVyKGZ1bmN0
aW9uKGQpeyByZXR1cm4gZC5wYXJlbnRJZCA9PT0gZG9jLmlkOyB9KTsKICAgICAgICBpZiAoY2hp
bGRyZW4ubGVuZ3RoID09PSAwKSByZXR1cm4gJyc7CiAgICAgICAgcmV0dXJuICc8ZGl2IGNsYXNz
PSJtZXRhLWl0ZW0iIHN0eWxlPSJmbGV4LWJhc2lzOjEwMCU7Ij48ZGl2IGNsYXNzPSJtZXRhLWxh
YmVsIj5VbnRlcmFydGlrZWw8L2Rpdj48ZGl2PicgKwogICAgICAgICAgICBjaGlsZHJlbi5tYXAo
ZnVuY3Rpb24oYyl7IHJldHVybiAnPGEgc3R5bGU9ImNvbG9yOnZhcigtLXRleHQtaGVhZGluZyk7
Y3Vyc29yOnBvaW50ZXI7bWFyZ2luLXJpZ2h0OjhweDsiIG9uY2xpY2s9IkRyaXZlUG9ydGFsLnNl
bGVjdERvY3VtZW50KFwnJyArIERyaXZlUG9ydGFsLmVzY2FwZUF0dHIoYy5pZCkgKyAnXCcpIj4n
ICsgRHJpdmVQb3J0YWwuZXNjYXBlSFRNTChjLnRpdGVsKSArICc8L2E+JzsgfSkuam9pbignJykg
KwogICAgICAgICc8L2Rpdj48L2Rpdj4nOwogICAgfSwKCiAgICByZW5kZXJDb250cmlidXRvcnMo
ZG9jKSB7CiAgICAgICAgaWYgKCFkb2MuY29udHJpYnV0b3JzIHx8IGRvYy5jb250cmlidXRvcnMu
bGVuZ3RoID09PSAwKSByZXR1cm4gJyc7CgogICAgICAgIC8vIEdld2ljaHR1bmdlbiBiZXJlY2hu
ZW4KICAgICAgICBjb25zdCByb2xlV2VpZ2h0cyA9IHsgYXV0b3I6IDMsIHJlZGFrdGlvbjogMSwg
cmV2aWV3OiAxLjUgfTsKICAgICAgICBsZXQgdG90YWxXZWlnaHQgPSAwOwogICAgICAgIGNvbnN0
IHdlaWdodGVkID0gZG9jLmNvbnRyaWJ1dG9ycy5tYXAoYyA9PiB7CiAgICAgICAgICAgIGNvbnN0
IHcgPSAoYy5lbnRyaWVzIHx8IDEpICogKHJvbGVXZWlnaHRzW2Mucm9sZV0gfHwgMSk7CiAgICAg
ICAgICAgIHRvdGFsV2VpZ2h0ICs9IHc7CiAgICAgICAgICAgIHJldHVybiB7IC4uLmMsIHdlaWdo
dDogdyB9OwogICAgICAgIH0pOwoKICAgICAgICBjb25zdCByb2xlTGFiZWxzID0geyBhdXRvcjog
J0F1dG9yJywgcmVkYWt0aW9uOiAnUmVkYWt0aW9uJywgcmV2aWV3OiAnUmV2aWV3JyB9OwoKICAg
ICAgICBsZXQgaHRtbCA9ICc8ZGl2IGNsYXNzPSJjb250cmlidXRvcnMtc2VjdGlvbiI+PGgzPk1p
dHdpcmtlbmRlPC9oMz4nOwogICAgICAgIHdlaWdodGVkCiAgICAgICAgICAgIC5zb3J0KChhLCBi
KSA9PiBiLndlaWdodCAtIGEud2VpZ2h0KQogICAgICAgICAgICAuZm9yRWFjaChjID0+IHsKICAg
ICAgICAgICAgICAgIGNvbnN0IHBjdCA9IHRvdGFsV2VpZ2h0ID4gMCA/IE1hdGgucm91bmQoKGMu
d2VpZ2h0IC8gdG90YWxXZWlnaHQpICogMTAwKSA6IDA7CiAgICAgICAgICAgICAgICBjb25zdCBy
b2xlID0gYy5yb2xlIHx8ICdhdXRvcic7CiAgICAgICAgICAgICAgICBodG1sICs9ICc8ZGl2IGNs
YXNzPSJjb250cmlidXRvci1yb3ciPicgKwogICAgICAgICAgICAgICAgICAgICc8c3BhbiBjbGFz
cz0iY29udHJpYnV0b3ItbmFtZSI+JyArIERyaXZlUG9ydGFsLmVzY2FwZUhUTUwoYy51c2VybmFt
ZSkgKyAnPC9zcGFuPicgKwogICAgICAgICAgICAgICAgICAgICc8c3BhbiBjbGFzcz0iY29udHJp
YnV0b3Itcm9sZSAnICsgcm9sZSArICciPicgKyAocm9sZUxhYmVsc1tyb2xlXSB8fCByb2xlKSAr
ICc8L3NwYW4+JyArCiAgICAgICAgICAgICAgICAgICAgJzxzcGFuIHN0eWxlPSJmb250LXNpemU6
MTFweDtjb2xvcjp2YXIoLS10ZXh0LW11dGVkKTt3aWR0aDoyNHB4O3RleHQtYWxpZ246cmlnaHQ7
ZmxleC1zaHJpbms6MDsiPicgKyAoYy5lbnRyaWVzID4gMSA/IGMuZW50cmllcyArICd4JyA6ICcn
KSArICc8L3NwYW4+JyArCiAgICAgICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImNvbnRyaWJ1
dG9yLWJhciI+PGRpdiBjbGFzcz0iY29udHJpYnV0b3ItYmFyLWZpbGwgJyArIHJvbGUgKyAnIiBz
dHlsZT0id2lkdGg6JyArIHBjdCArICclOyI+PC9kaXY+PC9kaXY+JyArCiAgICAgICAgICAgICAg
ICAgICAgJzxzcGFuIGNsYXNzPSJjb250cmlidXRvci1wY3QiPicgKyBwY3QgKyAnJTwvc3Bhbj4n
ICsKICAgICAgICAgICAgICAgICc8L2Rpdj4nOwogICAgICAgICAgICB9KTsKICAgICAgICBodG1s
ICs9ICc8L2Rpdj4nOwogICAgICAgIHJldHVybiBodG1sOwogICAgfSwKCiAgICByZW5kZXJSZXZp
ZXdIaXN0b3J5KGRvYykgewogICAgICAgIC8vIFBydWVmdW5nc3ZlcmxhdWYgbnVyIGZ1ZXIgU1Us
IEZBIHVuZCB6dXN0YWVuZGlnZSBSZXZpZXdlciBhbnplaWdlbgogICAgICAgIGlmICghRHJpdmVH
b3Zlcm5hbmNlLmlzU3VwZXJVc2VyKCkgJiYgIURyaXZlR292ZXJuYW5jZS5pc0ZhY2hhdWZzaWNo
dCgpICYmICFEcml2ZUdvdmVybmFuY2UuaXNSZXZpZXdlcihkb2Mua2F0ZWdvcmllKSkgcmV0dXJu
ICcnOwoKICAgICAgICBjb25zdCBnb3YgPSBkb2MuZ292ZXJuYW5jZTsKICAgICAgICBpZiAoIWdv
diB8fCAhZ292LnJldmlld0hpc3RvcnkgfHwgZ292LnJldmlld0hpc3RvcnkubGVuZ3RoID09PSAw
KSByZXR1cm4gJyc7CgogICAgICAgIGxldCBodG1sID0gJzxkaXYgY2xhc3M9InJldmlldy1oaXN0
b3J5Ij48aDM+UHLDvGZ1bmdzdmVybGF1ZjwvaDM+JzsKICAgICAgICBnb3YucmV2aWV3SGlzdG9y
eS5zbGljZSgpLnJldmVyc2UoKS5mb3JFYWNoKGZ1bmN0aW9uKGVudHJ5LCBpZHgpIHsKICAgICAg
ICAgICAgdmFyIGFjdGlvbkxhYmVsID0gZW50cnkuYWN0aW9uID09PSAnYXBwcm92ZWQnID8gJ0Zy
ZWlnZWdlYmVuJyA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50cnkuYWN0aW9u
ID09PSAncmVqZWN0ZWQnID8gJ0FiZ2VsZWhudCcgOgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGVudHJ5LmFjdGlvbiA9PT0gJ3N1Ym1pdHRlZCcgPyAnWnVyIFByw7xmdW5nJyA6IGVu
dHJ5LmFjdGlvbjsKICAgICAgICAgICAgdmFyIGRhdGUgPSBmb3JtYXREYXRlVGltZShlbnRyeS5h
dCk7CiAgICAgICAgICAgIHZhciBjb21tZW50SHRtbCA9ICcnOwogICAgICAgICAgICBpZiAoZW50
cnkuY29tbWVudCkgewogICAgICAgICAgICAgICAgLy8gS29tbWVudGFyIGFscyBzaWNoZXJlcyBI
VE1MIHJlbmRlcm4gKGVybGF1YnQ6IGIsIGksIHUsIHVsLCBsaSwgYnIsIGZvbnQpCiAgICAgICAg
ICAgICAgICAvLyBBbGxlcyBhbmRlcmU6IFRhZ3MgYWxzIGdlcmVuZGVydGVuIFRleHQgemVpZ2Vu
CiAgICAgICAgICAgICAgICB2YXIgc2FmZUNvbW1lbnQgPSBlbnRyeS5jb21tZW50OwogICAgICAg
ICAgICAgICAgLy8gRmFsbHMgZGVyIEtvbW1lbnRhciByYXctSFRNTC1UYWdzIGFscyBUZXh0IGVu
dGhhZWx0IChhbHRlIEVpbnRyYWVnZSksIGVzY2FwZW4KICAgICAgICAgICAgICAgIGlmIChzYWZl
Q29tbWVudC5pbmRleE9mKCc8c3BhbiBzdHlsZT0nKSA+PSAwIHx8IHNhZmVDb21tZW50LmluZGV4
T2YoJzxkaXYnKSA+PSAwIHx8IHNhZmVDb21tZW50LmluZGV4T2YoJzxhIGhyZWY9JykgPj0gMCkg
ewogICAgICAgICAgICAgICAgICAgIC8vIEFsdGVzIHVuc2FuaXRpZXJ0ZXMgSFRNTDogQWxzIEts
YXJ0ZXh0IGRhcnN0ZWxsZW4KICAgICAgICAgICAgICAgICAgICB2YXIgdG1wRGl2ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICAgICAgICAgICAgICAgICAgdG1wRGl2LmlubmVy
SFRNTCA9IHNhZmVDb21tZW50OwogICAgICAgICAgICAgICAgICAgIHNhZmVDb21tZW50ID0gRHJp
dmVQb3J0YWwuZXNjYXBlSFRNTCh0bXBEaXYudGV4dENvbnRlbnQpOwogICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgdmFyIHVpZCA9ICdyY18nICsgaWR4OwogICAgICAgICAgICAgICAg
Y29tbWVudEh0bWwgPSAnPGRpdiBzdHlsZT0iZmxleC1iYXNpczoxMDAlO21hcmdpbi10b3A6NHB4
OyI+JyArCiAgICAgICAgICAgICAgICAgICAgJzxkaXYgaWQ9IicgKyB1aWQgKyAnIiBzdHlsZT0i
YmFja2dyb3VuZDp2YXIoLS1iZy1jYXJkLWFsdCk7cGFkZGluZzowIDEwcHg7Ym9yZGVyLXJhZGl1
czo0cHg7Ym9yZGVyLWxlZnQ6M3B4IHNvbGlkICNkYzM1NDU7Zm9udC1zaXplOjEycHg7Y29sb3I6
dmFyKC0tdGV4dC1wcmltYXJ5KTtoZWlnaHQ6MjhweDtsaW5lLWhlaWdodDoyOHB4O292ZXJmbG93
OmhpZGRlbjtjdXJzb3I6cG9pbnRlcjt0cmFuc2l0aW9uOmhlaWdodCAwLjNzO3doaXRlLXNwYWNl
Om5vd3JhcDt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzOyIgb25jbGljaz0idmFyIGVsPWRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKFwnJyArIHVpZCArICdcJyk7aWYoZWwuc3R5bGUuaGVpZ2h0PT09XCdh
dXRvXCcpe2VsLnN0eWxlLmhlaWdodD1cJzI4cHhcJztlbC5zdHlsZS5saW5lSGVpZ2h0PVwnMjhw
eFwnO2VsLnN0eWxlLndoaXRlU3BhY2U9XCdub3dyYXBcJztlbC5zdHlsZS5wYWRkaW5nPVwnMCAx
MHB4XCc7fWVsc2V7ZWwuc3R5bGUuaGVpZ2h0PVwnYXV0b1wnO2VsLnN0eWxlLmxpbmVIZWlnaHQ9
XCcxLjVcJztlbC5zdHlsZS53aGl0ZVNwYWNlPVwnbm9ybWFsXCc7ZWwuc3R5bGUucGFkZGluZz1c
JzhweCAxMHB4XCc7fSIgdGl0bGU9IktsaWNrZSB6dW0gQXVmLS9adWtsYXBwZW4iPicgKwogICAg
ICAgICAgICAgICAgICAgICAgICBzYWZlQ29tbWVudCArCiAgICAgICAgICAgICAgICAgICAgJzwv
ZGl2PicgKwogICAgICAgICAgICAgICAgJzwvZGl2Pic7CiAgICAgICAgICAgIH0KICAgICAgICAg
ICAgaHRtbCArPSAnPGRpdiBjbGFzcz0icmV2aWV3LWhpc3RvcnktaXRlbSIgc3R5bGU9ImZsZXgt
d3JhcDp3cmFwOyI+JyArCiAgICAgICAgICAgICAgICAnPHNwYW4gY2xhc3M9ImFjdGlvbi1iYWRn
ZSAnICsgZW50cnkuYWN0aW9uICsgJyI+JyArIGFjdGlvbkxhYmVsICsgJzwvc3Bhbj4nICsKICAg
ICAgICAgICAgICAgICc8c3BhbiBzdHlsZT0iY29sb3I6dmFyKC0tdGV4dC1zZWNvbmRhcnkpOyI+
JyArIERyaXZlUG9ydGFsLmVzY2FwZUhUTUwoZW50cnkuYnkgfHwgJy0nKSArICc8L3NwYW4+JyAr
CiAgICAgICAgICAgICAgICAnPHNwYW4gc3R5bGU9ImNvbG9yOnZhcigtLXRleHQtbXV0ZWQpOyI+
JyArIGRhdGUgKyAnPC9zcGFuPicgKwogICAgICAgICAgICAgICAgY29tbWVudEh0bWwgKwogICAg
ICAgICAgICAnPC9kaXY+JzsKICAgICAgICB9KTsKICAgICAgICByZXR1cm4gaHRtbCArICc8L2Rp
dj4nOwogICAgfSwKCiAgICBfZGVsZXRlRG9jSWQ6IG51bGwsCgogICAgYXN5bmMgZGVsZXRlRG9j
dW1lbnQoZG9jSWQpIHsKICAgICAgICBpZiAoRHJpdmVGUy5yZWFkT25seSkgewogICAgICAgICAg
ICB2YXIgZ3JhbnRlZCA9IGF3YWl0IERyaXZlRlMuZW5zdXJlV3JpdGVBY2Nlc3MoKTsKICAgICAg
ICAgICAgaWYgKCFncmFudGVkKSByZXR1cm47CiAgICAgICAgfQogICAgICAgIHZhciBkb2MgPSBE
cml2ZUZTLmRvY3VtZW50cy5maW5kKGZ1bmN0aW9uKGQpeyByZXR1cm4gZC5pZCA9PT0gZG9jSWQ7
IH0pOwogICAgICAgIGlmICghZG9jKSByZXR1cm47CiAgICAgICAgdGhpcy5fZGVsZXRlRG9jSWQg
PSBkb2NJZDsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGVsZXRlQ29uZmlybVRl
eHQnKS50ZXh0Q29udGVudCA9ICdEb2t1bWVudDog4oCeJyArIGRvYy50aXRlbCArICciICgnICsg
ZG9jLmthdGVnb3JpZSArICcpJzsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGVs
ZXRlQ29uZmlybUlucHV0JykudmFsdWUgPSAnJzsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnZGVsZXRlQ29uZmlybUJ0bicpLmRpc2FibGVkID0gdHJ1ZTsKICAgICAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnZGVsZXRlQ29uZmlybU1vZGFsJykuY2xhc3NMaXN0LmFkZCgnYWN0
aXZlJyk7CiAgICAgICAgdmFyIGlucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RlbGV0
ZUNvbmZpcm1JbnB1dCcpOwogICAgICAgIGlucHV0LmZvY3VzKCk7CiAgICAgICAgaW5wdXQub25p
bnB1dCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
ZGVsZXRlQ29uZmlybUJ0bicpLmRpc2FibGVkID0gIWlucHV0LnZhbHVlLnRyaW0oKTsKICAgICAg
ICB9OwogICAgfSwKCiAgICBjYW5jZWxEZWxldGUoKSB7CiAgICAgICAgdGhpcy5fZGVsZXRlRG9j
SWQgPSBudWxsOwogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkZWxldGVDb25maXJt
TW9kYWwnKS5jbGFzc0xpc3QucmVtb3ZlKCdhY3RpdmUnKTsKICAgIH0sCgogICAgYXN5bmMgY29u
ZmlybURlbGV0ZSgpIHsKICAgICAgICB2YXIgZG9jSWQgPSB0aGlzLl9kZWxldGVEb2NJZDsKICAg
ICAgICBpZiAoIWRvY0lkKSByZXR1cm47CiAgICAgICAgdmFyIG53S2VubnVuZyA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdkZWxldGVDb25maXJtSW5wdXQnKS52YWx1ZS50cmltKCk7CiAgICAg
ICAgaWYgKCFud0tlbm51bmcpIHsgc2hvd1RvYXN0KCdCaXR0ZSBOVy1LZW5udW5nIGVpbmdlYmVu
JywgJ3dhcm5pbmcnKTsgcmV0dXJuOyB9CgogICAgICAgIHZhciBkb2MgPSBEcml2ZUZTLmRvY3Vt
ZW50cy5maW5kKGZ1bmN0aW9uKGQpeyByZXR1cm4gZC5pZCA9PT0gZG9jSWQ7IH0pOwogICAgICAg
IGlmICghZG9jKSByZXR1cm47CgogICAgICAgIC8vIFNvZnQtRGVsZXRlOiBJbiBQYXBpZXJrb3Ji
IHZlcnNjaGllYmVuIHN0YXR0IHBoeXNpc2NoIGzDtnNjaGVuCiAgICAgICAgdmFyIHRyYXNoRW50
cnkgPSB7CiAgICAgICAgICAgIGRvYzogSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShkb2MpKSwK
ICAgICAgICAgICAgZGVsZXRlZEJ5OiBud0tlbm51bmcsCiAgICAgICAgICAgIGRlbGV0ZWRBdDog
bmV3IERhdGUoKS50b0lTT1N0cmluZygpLAogICAgICAgICAgICBleHBpcmVzQXQ6IG5ldyBEYXRl
KERhdGUubm93KCkgKyAyOCAqIDI0ICogNjAgKiA2MCAqIDEwMDApLnRvSVNPU3RyaW5nKCkKICAg
ICAgICB9OwoKICAgICAgICAvLyBQYXBpZXJrb3JiIGxhZGVuL2Vyc3RlbGxlbgogICAgICAgIHZh
ciB0cmFzaCA9IGF3YWl0IHRoaXMuX2xvYWRUcmFzaCgpOwogICAgICAgIHRyYXNoLnB1c2godHJh
c2hFbnRyeSk7CiAgICAgICAgYXdhaXQgdGhpcy5fc2F2ZVRyYXNoKHRyYXNoKTsKCiAgICAgICAg
Ly8gTMO2c2NoLUxvZwogICAgICAgIHZhciBsb2dFbnRyeSA9IHsgYWN0aW9uOiAnZGVsZXRlJywg
ZG9jSWQ6IGRvY0lkLCB0aXRlbDogZG9jLnRpdGVsLCBrYXRlZ29yaWU6IGRvYy5rYXRlZ29yaWUs
IGRlbGV0ZWRCeTogbndLZW5udW5nLCB0aW1lc3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmco
KSB9OwogICAgICAgIGF3YWl0IHRoaXMuX2FwcGVuZERlbGV0ZUxvZyhsb2dFbnRyeSk7CgogICAg
ICAgIC8vIERva3VtZW50IHBoeXNpc2NoIGzDtnNjaGVuCiAgICAgICAgdmFyIHN1Y2Nlc3MgPSBh
d2FpdCBEcml2ZUZTLmRlbGV0ZURvY3VtZW50KGRvY0lkKTsKICAgICAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnZGVsZXRlQ29uZmlybU1vZGFsJykuY2xhc3NMaXN0LnJlbW92ZSgnYWN0aXZl
Jyk7CiAgICAgICAgdGhpcy5fZGVsZXRlRG9jSWQgPSBudWxsOwoKICAgICAgICBpZiAoc3VjY2Vz
cykgewogICAgICAgICAgICB0aGlzLnNlbGVjdGVkRG9jSWQgPSBudWxsOwogICAgICAgICAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZG9jdW1lbnREZXRhaWwnKS5pbm5lckhUTUwgPSAnPGRp
diBjbGFzcz0iZGV0YWlsLWVtcHR5Ij48cD5Eb2t1bWVudCBnZWzDtnNjaHQuIFfDpGhsZSBlaW4g
YW5kZXJlcyBEb2t1bWVudC48L3A+PC9kaXY+JzsKICAgICAgICAgICAgdGhpcy5yZW5kZXIoKTsK
ICAgICAgICAgICAgc2hvd1RvYXN0KCdEb2t1bWVudCBnZWzDtnNjaHQgKDI4IFRhZ2Ugd2llZGVy
aGVyc3RlbGxiYXIpJywgJ3N1Y2Nlc3MnKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBz
aG93VG9hc3QoJ0ZlaGxlciBiZWltIEzDtnNjaGVuJywgJ2Vycm9yJyk7CiAgICAgICAgfQogICAg
fSwKCiAgICBhc3luYyBfbG9hZFRyYXNoKCkgewogICAgICAgIHRyeSB7CiAgICAgICAgICAgIGlm
IChEcml2ZUZTLm1vZGUgPT09ICdzZXJ2ZXInKSB7CiAgICAgICAgICAgICAgICB2YXIgcmVzID0g
YXdhaXQgZmV0Y2goJy9kYXRhLy50cmFzaC5qc29uJyk7CiAgICAgICAgICAgICAgICBpZiAocmVz
Lm9rKSByZXR1cm4gYXdhaXQgcmVzLmpzb24oKTsKICAgICAgICAgICAgfSBlbHNlIGlmIChEcml2
ZUZTLm1vZGUgPT09ICdmaWxlc3lzdGVtJyAmJiBEcml2ZUZTLl9kYXRhSGFuZGxlKSB7CiAgICAg
ICAgICAgICAgICB2YXIgZmggPSBhd2FpdCBEcml2ZUZTLl9kYXRhSGFuZGxlLmdldEZpbGVIYW5k
bGUoJy50cmFzaC5qc29uJyk7CiAgICAgICAgICAgICAgICB2YXIgZmlsZSA9IGF3YWl0IGZoLmdl
dEZpbGUoKTsKICAgICAgICAgICAgICAgIHJldHVybiBKU09OLnBhcnNlKGF3YWl0IGZpbGUudGV4
dCgpKTsKICAgICAgICAgICAgfQogICAgICAgIH0gY2F0Y2goZSkge30KICAgICAgICByZXR1cm4g
W107CiAgICB9LAoKICAgIGFzeW5jIF9zYXZlVHJhc2godHJhc2gpIHsKICAgICAgICAvLyBBYmdl
bGF1ZmVuZSBlbnRmZXJuZW4gKD4yOCBUYWdlKQogICAgICAgIHZhciBub3cgPSBuZXcgRGF0ZSgp
LnRvSVNPU3RyaW5nKCk7CiAgICAgICAgdHJhc2ggPSB0cmFzaC5maWx0ZXIoZnVuY3Rpb24odCl7
IHJldHVybiB0LmV4cGlyZXNBdCA+IG5vdzsgfSk7CiAgICAgICAgaWYgKERyaXZlRlMubW9kZSA9
PT0gJ3NlcnZlcicpIHsKICAgICAgICAgICAgYXdhaXQgZmV0Y2goJy9hcGkvd3JpdGUnLCB7IG1l
dGhvZDogJ1BPU1QnLCBoZWFkZXJzOiB7J0NvbnRlbnQtVHlwZSc6J2FwcGxpY2F0aW9uL2pzb247
IGNoYXJzZXQ9dXRmLTgnfSwKICAgICAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHsg
cGF0aDogJ2RhdGEvLnRyYXNoLmpzb24nLCBkYXRhOiB0cmFzaCB9KSB9KTsKICAgICAgICB9IGVs
c2UgaWYgKERyaXZlRlMubW9kZSA9PT0gJ2ZpbGVzeXN0ZW0nICYmIERyaXZlRlMuX2RhdGFIYW5k
bGUpIHsKICAgICAgICAgICAgdmFyIGZoID0gYXdhaXQgRHJpdmVGUy5fZGF0YUhhbmRsZS5nZXRG
aWxlSGFuZGxlKCcudHJhc2guanNvbicsIHsgY3JlYXRlOiB0cnVlIH0pOwogICAgICAgICAgICB2
YXIgd3JpdGFibGUgPSBhd2FpdCBmaC5jcmVhdGVXcml0YWJsZSgpOwogICAgICAgICAgICBhd2Fp
dCB3cml0YWJsZS53cml0ZShKU09OLnN0cmluZ2lmeSh0cmFzaCwgbnVsbCwgMikpOwogICAgICAg
ICAgICBhd2FpdCB3cml0YWJsZS5jbG9zZSgpOwogICAgICAgIH0KICAgIH0sCgogICAgYXN5bmMg
X2FwcGVuZERlbGV0ZUxvZyhlbnRyeSkgewogICAgICAgIHZhciBsb2cgPSBbXTsKICAgICAgICB0
cnkgewogICAgICAgICAgICBpZiAoRHJpdmVGUy5tb2RlID09PSAnc2VydmVyJykgewogICAgICAg
ICAgICAgICAgdmFyIHJlcyA9IGF3YWl0IGZldGNoKCcvZGF0YS8uZGVsZXRlLWxvZy5qc29uJyk7
CiAgICAgICAgICAgICAgICBpZiAocmVzLm9rKSBsb2cgPSBhd2FpdCByZXMuanNvbigpOwogICAg
ICAgICAgICB9IGVsc2UgaWYgKERyaXZlRlMubW9kZSA9PT0gJ2ZpbGVzeXN0ZW0nICYmIERyaXZl
RlMuX2RhdGFIYW5kbGUpIHsKICAgICAgICAgICAgICAgIHZhciBmaCA9IGF3YWl0IERyaXZlRlMu
X2RhdGFIYW5kbGUuZ2V0RmlsZUhhbmRsZSgnLmRlbGV0ZS1sb2cuanNvbicpOwogICAgICAgICAg
ICAgICAgdmFyIGZpbGUgPSBhd2FpdCBmaC5nZXRGaWxlKCk7CiAgICAgICAgICAgICAgICBsb2cg
PSBKU09OLnBhcnNlKGF3YWl0IGZpbGUudGV4dCgpKTsKICAgICAgICAgICAgfQogICAgICAgIH0g
Y2F0Y2goZSkge30KICAgICAgICBsb2cucHVzaChlbnRyeSk7CiAgICAgICAgaWYgKERyaXZlRlMu
bW9kZSA9PT0gJ3NlcnZlcicpIHsKICAgICAgICAgICAgYXdhaXQgZmV0Y2goJy9hcGkvd3JpdGUn
LCB7IG1ldGhvZDogJ1BPU1QnLCBoZWFkZXJzOiB7J0NvbnRlbnQtVHlwZSc6J2FwcGxpY2F0aW9u
L2pzb247IGNoYXJzZXQ9dXRmLTgnfSwKICAgICAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5n
aWZ5KHsgcGF0aDogJ2RhdGEvLmRlbGV0ZS1sb2cuanNvbicsIGRhdGE6IGxvZyB9KSB9KTsKICAg
ICAgICB9IGVsc2UgaWYgKERyaXZlRlMubW9kZSA9PT0gJ2ZpbGVzeXN0ZW0nICYmIERyaXZlRlMu
X2RhdGFIYW5kbGUpIHsKICAgICAgICAgICAgdmFyIGZoMiA9IGF3YWl0IERyaXZlRlMuX2RhdGFI
YW5kbGUuZ2V0RmlsZUhhbmRsZSgnLmRlbGV0ZS1sb2cuanNvbicsIHsgY3JlYXRlOiB0cnVlIH0p
OwogICAgICAgICAgICB2YXIgd3JpdGFibGUgPSBhd2FpdCBmaDIuY3JlYXRlV3JpdGFibGUoKTsK
ICAgICAgICAgICAgYXdhaXQgd3JpdGFibGUud3JpdGUoSlNPTi5zdHJpbmdpZnkobG9nLCBudWxs
LCAyKSk7CiAgICAgICAgICAgIGF3YWl0IHdyaXRhYmxlLmNsb3NlKCk7CiAgICAgICAgfQogICAg
fSwKCiAgICBhc3luYyBzaG93VHJhc2goKSB7CiAgICAgICAgdmFyIHRyYXNoID0gYXdhaXQgdGhp
cy5fbG9hZFRyYXNoKCk7CiAgICAgICAgdmFyIG5vdyA9IG5ldyBEYXRlKCkudG9JU09TdHJpbmco
KTsKICAgICAgICB0cmFzaCA9IHRyYXNoLmZpbHRlcihmdW5jdGlvbih0KXsgcmV0dXJuIHQuZXhw
aXJlc0F0ID4gbm93OyB9KTsKICAgICAgICB2YXIgaHRtbCA9ICcnOwogICAgICAgIGlmICh0cmFz
aC5sZW5ndGggPT09IDApIHsKICAgICAgICAgICAgaHRtbCA9ICc8ZGl2IGNsYXNzPSJnb3YtZW1w
dHkiPlBhcGllcmtvcmIgaXN0IGxlZXI8L2Rpdj4nOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgIHRyYXNoLmZvckVhY2goZnVuY3Rpb24odCwgaSkgewogICAgICAgICAgICAgICAgdmFyIGRh
eXNMZWZ0ID0gTWF0aC5jZWlsKChuZXcgRGF0ZSh0LmV4cGlyZXNBdCkgLSBuZXcgRGF0ZSgpKSAv
ICgyNCo2MCo2MCoxMDAwKSk7CiAgICAgICAgICAgICAgICBodG1sICs9ICc8ZGl2IGNsYXNzPSJ0
cmFzaC1pdGVtIj4nICsKICAgICAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0idHJhc2gtaXRl
bS10aXRsZSI+JyArIERyaXZlUG9ydGFsLmVzY2FwZUhUTUwodC5kb2MudGl0ZWwpICsgJzwvZGl2
PicgKwogICAgICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJ0cmFzaC1pdGVtLW1ldGEiPkdl
bMO2c2NodCB2b24gJyArIERyaXZlUG9ydGFsLmVzY2FwZUhUTUwodC5kZWxldGVkQnkpICsgJyBh
bSAnICsgZm9ybWF0RGF0ZVRpbWUodC5kZWxldGVkQXQpICsgJyB8IE5vY2ggJyArIGRheXNMZWZ0
ICsgJyBUYWdlIHZlcmbDvGdiYXI8L2Rpdj4nICsKICAgICAgICAgICAgICAgICAgICAnPGRpdiBj
bGFzcz0idHJhc2gtaXRlbS1hY3Rpb25zIj4nICsKICAgICAgICAgICAgICAgICAgICAgICAgJzxi
dXR0b24gY2xhc3M9ImJ0bi1yZXN0b3JlIiBvbmNsaWNrPSJEcml2ZVBvcnRhbC5yZXN0b3JlRnJv
bVRyYXNoKCcgKyBpICsgJykiPldpZWRlcmhlcnN0ZWxsZW48L2J1dHRvbj4nICsKICAgICAgICAg
ICAgICAgICAgICAnPC9kaXY+JyArCiAgICAgICAgICAgICAgICAnPC9kaXY+JzsKICAgICAgICAg
ICAgfSk7CiAgICAgICAgfQogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkb2N1bWVu
dERldGFpbCcpLmlubmVySFRNTCA9CiAgICAgICAgICAgICc8ZGl2IHN0eWxlPSJwYWRkaW5nOjIw
cHg7Ij48aDIgc3R5bGU9ImNvbG9yOnZhcigtLXRleHQtaGVhZGluZyk7bWFyZ2luLWJvdHRvbTox
NXB4OyI+UGFwaWVya29yYiAoJyArIHRyYXNoLmxlbmd0aCArICcpPC9oMj4nICsgaHRtbCArICc8
L2Rpdj4nOwogICAgfSwKCiAgICBhc3luYyByZXN0b3JlRnJvbVRyYXNoKGluZGV4KSB7CiAgICAg
ICAgdmFyIHRyYXNoID0gYXdhaXQgdGhpcy5fbG9hZFRyYXNoKCk7CiAgICAgICAgaWYgKCF0cmFz
aFtpbmRleF0pIHJldHVybjsKICAgICAgICB2YXIgZW50cnkgPSB0cmFzaFtpbmRleF07CiAgICAg
ICAgdmFyIGRvYyA9IGVudHJ5LmRvYzsKICAgICAgICB2YXIgc2F2ZVJlc3VsdCA9IGF3YWl0IERy
aXZlRlMuc2F2ZURvY3VtZW50KGRvYyk7CiAgICAgICAgaWYgKHNhdmVSZXN1bHQgPT09IHRydWUp
IHsKICAgICAgICAgICAgdHJhc2guc3BsaWNlKGluZGV4LCAxKTsKICAgICAgICAgICAgYXdhaXQg
dGhpcy5fc2F2ZVRyYXNoKHRyYXNoKTsKICAgICAgICAgICAgdGhpcy5yZW5kZXIoKTsKICAgICAg
ICAgICAgdGhpcy5zZWxlY3REb2N1bWVudChkb2MuaWQpOwogICAgICAgICAgICBzaG93VG9hc3Qo
J0Rva3VtZW50IOKAnicgKyBkb2MudGl0ZWwgKyAnIiB3aWVkZXJoZXJnZXN0ZWxsdCcsICdzdWNj
ZXNzJyk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgc2hvd1RvYXN0KCdGZWhsZXIgYmVp
bSBXaWVkZXJoZXJzdGVsbGVuJywgJ2Vycm9yJyk7CiAgICAgICAgfQogICAgfSwKCiAgICAvLyBY
U1MtU2NodXR6OiBCZXJlaW5pZ3QgWmVpY2hlbmtldHRlbiBiZXZvciBzaWUgYWxzIEhUTUwgZGFy
Z2VzdGVsbHQgd2VyZGVuLgogICAgICAgIC8vIGVzY2FwZUhUTUwoKSAtIGZ1ZXIgRWxlbWVudC1J
bmhhbHRlICh0ZXh0Q29udGVudC1iYXNpZXJ0LCBicm93c2Vyc2ljaGVyKQogICAgICAgIC8vIGVz
Y2FwZUF0dHIoKSAtIGZ1ZXIgSFRNTC1BdHRyaWJ1dHdlcnRlIChtYW51ZWxsZXMgRXNjYXBpbmcg
YWxsZXIgcmVsZXZhbnRlbiBaZWljaGVuKQogICAgICAgIC8vIEJlaWRlIEZ1bmt0aW9uZW4gd2Vy
ZGVuIGluIERyaXZlUG9ydGFsIGJlaSBqZWRlciBEYXJzdGVsbHVuZyB2b24gQmVudXR6ZXJkYXRl
biBhdWZnZXJ1ZmVuLgogICAgZXNjYXBlSFRNTChzdHIpIHsKICAgICAgICBpZiAoIXN0cikgcmV0
dXJuICcnOwogICAgICAgIGNvbnN0IGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rpdicp
OwogICAgICAgIGRpdi50ZXh0Q29udGVudCA9IHN0cjsKICAgICAgICByZXR1cm4gZGl2LmlubmVy
SFRNTDsKICAgIH0sCgogICAgZXNjYXBlQXR0cihzdHIpIHsKICAgICAgICBpZiAoIXN0cikgcmV0
dXJuICcnOwogICAgICAgIHJldHVybiBzdHIucmVwbGFjZSgvJi9nLCAnJmFtcDsnKS5yZXBsYWNl
KC8iL2csICcmcXVvdDsnKS5yZXBsYWNlKC8nL2csICcmIzM5OycpLnJlcGxhY2UoLzwvZywgJyZs
dDsnKS5yZXBsYWNlKC8+L2csICcmZ3Q7JykucmVwbGFjZSgvYC9nLCAnJiM5NjsnKTsKICAgIH0s
CgogICAgLy8gU2FuaXRpemUtRnVua3Rpb24gZnVlciBSaWNoLVRleHQtSW5oYWx0ZSAoZG9jLmlu
aGFsdCkuCiAgICAvLyBFbnRmZXJudCBnZWZhZWhybGljaGUgRWxlbWVudGUgKHNjcmlwdCwgaWZy
YW1lLCBvYmplY3QsIGVtYmVkLCBmb3JtLCBldGMuKQogICAgLy8gdW5kIGFsbGUgRXZlbnQtSGFu
ZGxlciAob25jbGljaywgb25lcnJvciwgb25sb2FkLCAuLi4pIHNvd2llIGphdmFzY3JpcHQ6LVVS
THMsCiAgICAvLyBiZWhhZWx0IGFiZXIgYWxsZSBGb3JtYXRpZXJ1bmdlbiAoYiwgaSwgdSwgaDEt
aDYsIHAsIHVsLCBvbCwgdGFibGUsIGltZywgYSwgZXRjLikKICAgIHNhbml0aXplSFRNTChodG1s
KSB7CiAgICAgICAgaWYgKCFodG1sKSByZXR1cm4gJyc7CiAgICAgICAgdmFyIGRvYyA9IG5ldyBE
T01QYXJzZXIoKS5wYXJzZUZyb21TdHJpbmcoaHRtbCwgJ3RleHQvaHRtbCcpOwogICAgICAgIC8v
IEdlZmFlaHJsaWNoZSBUYWdzIGtvbXBsZXR0IGVudGZlcm5lbgogICAgICAgIC8vIGlmcmFtZXMg
d2VyZGVuIG51ciBlbnRmZXJudCB3ZW5uIHNpZSBOSUNIVCBpbiBlaW5lbSBEUklWRS1laWdlbmVu
IFBERi1Db250YWluZXIgc3RlY2tlbgogICAgICAgIC8vIChkcml2ZS1tZWRpYS1wZGYtaWZyYW1l
KSB1bmQga2VpbmUgbG9rYWxlIHNyYyBoYWJlbgogICAgICAgIHZhciBkYW5nZXJvdXNUYWdzID0g
WydzY3JpcHQnLCdvYmplY3QnLCdlbWJlZCcsJ2Zvcm0nLCdtYXRoJywnYmFzZScsJ2xpbmsnLCdt
ZXRhJywnbm9zY3JpcHQnLCdzdHlsZSddOwogICAgICAgIGRhbmdlcm91c1RhZ3MuZm9yRWFjaChm
dW5jdGlvbih0YWcpIHsKICAgICAgICAgICAgZG9jLnF1ZXJ5U2VsZWN0b3JBbGwodGFnKS5mb3JF
YWNoKGZ1bmN0aW9uKGVsKSB7IGVsLnJlbW92ZSgpOyB9KTsKICAgICAgICB9KTsKICAgICAgICAv
LyBpZnJhbWVzIHNlcGFyYXQ6IG51ciBmcmVtZGUvZ2VmYWVocmxpY2hlIGVudGZlcm5lbiwgbG9r
YWxlIFBERi1FaW5iZXR0dW5nZW4gYmVpYmVoYWx0ZW4KICAgICAgICBkb2MucXVlcnlTZWxlY3Rv
ckFsbCgnaWZyYW1lJykuZm9yRWFjaChmdW5jdGlvbihlbCkgewogICAgICAgICAgICB2YXIgc3Jj
ID0gKGVsLmdldEF0dHJpYnV0ZSgnc3JjJykgfHwgJycpLnRyaW0oKS50b0xvd2VyQ2FzZSgpOwog
ICAgICAgICAgICB2YXIgcGFyZW50ID0gZWwucGFyZW50RWxlbWVudDsKICAgICAgICAgICAgdmFy
IGlzRHJpdmVQZGYgPSBwYXJlbnQgJiYgcGFyZW50LmNsYXNzTGlzdCAmJiBwYXJlbnQuY2xhc3NM
aXN0LmNvbnRhaW5zKCdkcml2ZS1tZWRpYS1wZGYtaWZyYW1lJyk7CiAgICAgICAgICAgIHZhciBp
c0xvY2FsU3JjID0gc3JjLnN0YXJ0c1dpdGgoJ21lZGlhLycpIHx8IHNyYy5zdGFydHNXaXRoKCcv
bWVkaWEvJykgfHwgc3JjLnN0YXJ0c1dpdGgoJy4vbWVkaWEvJyk7CiAgICAgICAgICAgIGlmICgh
aXNEcml2ZVBkZiAmJiAhaXNMb2NhbFNyYykgZWwucmVtb3ZlKCk7CiAgICAgICAgfSk7CiAgICAg
ICAgLy8gQWxsZSBFdmVudC1IYW5kbGVyIHVuZCBqYXZhc2NyaXB0Oi1VUkxzIGVudGZlcm5lbgog
ICAgICAgIGRvYy5xdWVyeVNlbGVjdG9yQWxsKCcqJykuZm9yRWFjaChmdW5jdGlvbihlbCkgewog
ICAgICAgICAgICB2YXIgYXR0cnMgPSBBcnJheS5mcm9tKGVsLmF0dHJpYnV0ZXMpOwogICAgICAg
ICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGF0dHJzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAg
ICAgICB2YXIgbmFtZSA9IGF0dHJzW2ldLm5hbWUudG9Mb3dlckNhc2UoKTsKICAgICAgICAgICAg
ICAgIC8vIG9uKi1FdmVudC1IYW5kbGVyIGVudGZlcm5lbgogICAgICAgICAgICAgICAgaWYgKG5h
bWUuc3RhcnRzV2l0aCgnb24nKSkgewogICAgICAgICAgICAgICAgICAgIGVsLnJlbW92ZUF0dHJp
YnV0ZShhdHRyc1tpXS5uYW1lKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIC8v
IGphdmFzY3JpcHQ6L2RhdGE6IFVSTHMgaW4gaHJlZi9zcmMvYWN0aW9uIGVudGZlcm5lbgogICAg
ICAgICAgICAgICAgaWYgKG5hbWUgPT09ICdocmVmJyB8fCBuYW1lID09PSAnc3JjJyB8fCBuYW1l
ID09PSAnYWN0aW9uJykgewogICAgICAgICAgICAgICAgICAgIHZhciB2YWwgPSAoYXR0cnNbaV0u
dmFsdWUgfHwgJycpLnRyaW0oKS50b0xvd2VyQ2FzZSgpOwogICAgICAgICAgICAgICAgICAgIGlm
ICh2YWwuc3RhcnRzV2l0aCgnamF2YXNjcmlwdDonKSB8fCB2YWwuc3RhcnRzV2l0aCgnZGF0YTp0
ZXh0L2h0bWwnKSkgewogICAgICAgICAgICAgICAgICAgICAgICBlbC5yZW1vdmVBdHRyaWJ1dGUo
YXR0cnNbaV0ubmFtZSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICAgICAgLy8gQWxsZSBMaW5rcyBtdWVzc2VuIGlu
IG5ldWVtIFRhYiBvZWZmbmVuIChQb3J0YWwgZGFyZiBuaWNodCB2ZXJsYXNzZW4gd2VyZGVuKQog
ICAgICAgIGRvYy5xdWVyeVNlbGVjdG9yQWxsKCdhW2hyZWZdJykuZm9yRWFjaChmdW5jdGlvbihh
KSB7CiAgICAgICAgICAgIHZhciBocmVmID0gKGEuZ2V0QXR0cmlidXRlKCdocmVmJykgfHwgJycp
LnRyaW0oKTsKICAgICAgICAgICAgLy8gSW50ZXJuZSBBbmtlciAoIy4uLikgdW5kIERSSVZFLUNy
b3NzbGlua3MgKC5kcml2ZS14cmVmKSBhdXNuZWhtZW4KICAgICAgICAgICAgaWYgKGhyZWYuc3Rh
cnRzV2l0aCgnIycpIHx8IGEuY2xhc3NMaXN0LmNvbnRhaW5zKCdkcml2ZS14cmVmJykpIHJldHVy
bjsKICAgICAgICAgICAgYS5zZXRBdHRyaWJ1dGUoJ3RhcmdldCcsICdfYmxhbmsnKTsKICAgICAg
ICAgICAgYS5zZXRBdHRyaWJ1dGUoJ3JlbCcsICdub29wZW5lciBub3JlZmVycmVyJyk7CiAgICAg
ICAgfSk7CiAgICAgICAgcmV0dXJuIGRvYy5ib2R5LmlubmVySFRNTDsKICAgIH0sCgogICAgaGln
aGxpZ2h0SXRlbShkb2NJZCkgewogICAgICAgIGNvbnN0IGl0ZW1zID0gZG9jdW1lbnQucXVlcnlT
ZWxlY3RvckFsbCgnI2RvY3VtZW50TGlzdCAuZG9jdW1lbnQtaXRlbScpOwogICAgICAgIGl0ZW1z
LmZvckVhY2goaXRlbSA9PiB7CiAgICAgICAgICAgIGlmIChpdGVtLmdldEF0dHJpYnV0ZSgnb25j
bGljaycpICYmIGl0ZW0uZ2V0QXR0cmlidXRlKCdvbmNsaWNrJykuaW5jbHVkZXMoZG9jSWQpKSB7
CiAgICAgICAgICAgICAgICBpdGVtLmNsYXNzTGlzdC5hZGQoJ2hpZ2hsaWdodC1zYXZlZCcpOwog
ICAgICAgICAgICAgICAgaXRlbS5zY3JvbGxJbnRvVmlldyh7IGJlaGF2aW9yOiAnc21vb3RoJywg
YmxvY2s6ICduZWFyZXN0JyB9KTsKICAgICAgICAgICAgICAgIGl0ZW0uYWRkRXZlbnRMaXN0ZW5l
cignYW5pbWF0aW9uZW5kJywgKCkgPT4gaXRlbS5jbGFzc0xpc3QucmVtb3ZlKCdoaWdobGlnaHQt
c2F2ZWQnKSwgeyBvbmNlOiB0cnVlIH0pOwogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICB9
Cn07CgovLyA9PT09PT09PT09PT09PT09PT09PT0gRURJVE9SID09PT09PT09PT09PT09PT09PT09
PQoKLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLy8gTW9kdWw6IERyaXZlRWRpdG9yIC0gV1lTSVdZ
Ry1FZGl0b3IsIE1lZGllbi1VcGxvYWQsIERva3VtZW50ZW5iZWFyYmVpdHVuZwovLyBadXN0YWVu
ZGlnIGZ1ZXI6IEVkaXRvci1Nb2RhbCwgRm9ybWF0aWVydW5nLCBNZWRpZW4tVXBsb2FkLURpYWxv
ZywgU3BlaWNoZXJuCi8vIFNpY2hlcmhlaXQ6IEVpbmdlZnVlZ3RlIEhUTUwtSW5oYWx0ZSAoUGFz
dGUpIHdlcmRlbiB2aWEgRE9NUGFyc2VyIG5vcm1hbGlzaWVydC4KLy8gICAgICAgICAgICAgRGF0
ZWluYW1lbiB3ZXJkZW4gdWViZXIgc2FuaXRpemVGaWxlbmFtZSgpIGJlcmVpbmlndCAoa2VpbmUg
U29uZGVyemVpY2hlbi9QZmFkdHJlbm5lcikuCi8vICAgICAgICAgICAgIFNwZWljaGVybiBzZW5k
ZXQgRGF0ZW4gYW4gL2FwaS93cml0ZSwgd28gc2VydmVyc2VpdGlnZSBBdXRvcmlzaWVydW5nIGdy
ZWlmdC4KLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KY29uc3QgRHJpdmVFZGl0b3IgPSB7CiAgICBj
dXJyZW50RG9jOiBudWxsLAogICAgaXNOZXc6IGZhbHNlLAogICAgaGlzdG9yeTogW10sCiAgICBo
aXN0b3J5SW5kZXg6IC0xLAogICAgaXNSZXN0b3Jpbmc6IGZhbHNlLAoKICAgIGFzeW5jIGNyZWF0
ZU5ldygpIHsKICAgICAgICBpZiAoIURyaXZlRlMuY29ubmVjdGVkKSB7CiAgICAgICAgICAgIHNo
b3dUb2FzdCgnWnVtIEJlYXJiZWl0ZW4gYml0dGUgRFJJVkVfU3RhcnQuYmF0IHN0YXJ0ZW4nLCAn
d2FybmluZycpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIGlmIChEcml2
ZUZTLnJlYWRPbmx5KSB7CiAgICAgICAgICAgIGNvbnN0IGdyYW50ZWQgPSBhd2FpdCBEcml2ZUZT
LmVuc3VyZVdyaXRlQWNjZXNzKCk7CiAgICAgICAgICAgIGlmICghZ3JhbnRlZCkgcmV0dXJuOwog
ICAgICAgIH0KCiAgICAgICAgdGhpcy5pc05ldyA9IHRydWU7CiAgICAgICAgY29uc3QgdXNlcm5h
bWUgPSAoRHJpdmVGUy5lbnZpcm9uICYmIERyaXZlRlMuZW52aXJvbi51c2VybmFtZSkgPyBEcml2
ZUZTLmVudmlyb24udXNlcm5hbWUgOiBudWxsOwogICAgICAgIHRoaXMuY3VycmVudERvYyA9IHsK
ICAgICAgICAgICAgaWQ6IERyaXZlRlMuZ2VuZXJhdGVJZCgpLAogICAgICAgICAgICB0aXRlbDog
JycsCiAgICAgICAgICAgIGthdGVnb3JpZTogKERyaXZlRlMuY29uZmlnLmthdGVnb3JpZW4gfHwg
WydWZXJrZWhyJ10pWzBdLAogICAgICAgICAgICBpbmhhbHQ6ICcnLAogICAgICAgICAgICBzdGF0
dXM6ICdFbnR3dXJmJywKICAgICAgICAgICAgZXJzdGVsbHQ6IG5ldyBEYXRlKCkudG9JU09TdHJp
bmcoKS5zcGxpdCgnVCcpWzBdLAogICAgICAgICAgICBnZWFlbmRlcnQ6IG5ldyBEYXRlKCkudG9J
U09TdHJpbmcoKS5zcGxpdCgnVCcpWzBdLAogICAgICAgICAgICBlcnN0ZWxsdFZvbjogdXNlcm5h
bWUsCiAgICAgICAgICAgIGJlYXJiZWl0ZXRWb246IHVzZXJuYW1lLAogICAgICAgICAgICB2ZXJz
aW9uOiAndjAuMScsCiAgICAgICAgICAgIG1lZGlhczogW10sCiAgICAgICAgICAgIHNjaGxhZ3dv
ZXJ0ZXI6IFtdLAogICAgICAgICAgICBwYXJlbnRJZDogbnVsbAogICAgICAgIH07CgogICAgICAg
IHRoaXMub3Blbk1vZGFsKCdOZXVlcyBEb2t1bWVudCBlcnN0ZWxsZW4nKTsKICAgIH0sCgogICAg
X2xvY2tlZERvY0lkOiBudWxsLAoKICAgIGFzeW5jIGVkaXQoZG9jSWQpIHsKICAgICAgICBpZiAo
RHJpdmVGUy5yZWFkT25seSkgewogICAgICAgICAgICBjb25zdCBncmFudGVkID0gYXdhaXQgRHJp
dmVGUy5lbnN1cmVXcml0ZUFjY2VzcygpOwogICAgICAgICAgICBpZiAoIWdyYW50ZWQpIHJldHVy
bjsKICAgICAgICB9CgogICAgICAgIC8vIFBlc3NpbWlzdGljIExvY2tpbmc6IExvY2sgYW5mb3Jk
ZXJuIGJldm9yIEVkaXRvciBvZWZmbmV0CiAgICAgICAgY29uc3QgbG9ja1Jlc3VsdCA9IGF3YWl0
IHRoaXMuYWNxdWlyZUxvY2soZG9jSWQpOwogICAgICAgIGlmICghbG9ja1Jlc3VsdC5vaykgewog
ICAgICAgICAgICBzaG93VG9hc3QoJ0Rva3VtZW50IHdpcmQgdm9uICcgKyBsb2NrUmVzdWx0LmJ5
ICsgJyBiZWFyYmVpdGV0IChzZWl0ICcgKyBsb2NrUmVzdWx0Lm1pbnV0ZXMgKyAnIE1pbi4pJywg
J3dhcm5pbmcnLCA1MDAwKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAg
Y29uc3QgZG9jID0gYXdhaXQgRHJpdmVGUy5sb2FkRG9jdW1lbnQoZG9jSWQpOwogICAgICAgIGlm
ICghZG9jKSB7CiAgICAgICAgICAgIGF3YWl0IHRoaXMucmVsZWFzZUxvY2soZG9jSWQpOwogICAg
ICAgICAgICBzaG93VG9hc3QoJ0Rva3VtZW50IGtvbm50ZSBuaWNodCBnZWxhZGVuIHdlcmRlbics
ICdlcnJvcicpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICB0aGlzLmlz
TmV3ID0gZmFsc2U7CiAgICAgICAgdGhpcy5fbG9ja2VkRG9jSWQgPSBkb2NJZDsKICAgICAgICB0
aGlzLmN1cnJlbnREb2MgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGRvYykpOyAvLyBEZWVw
IGNvcHkKICAgICAgICB0aGlzLm9wZW5Nb2RhbCgnRG9rdW1lbnQgYmVhcmJlaXRlbjogJyArIGRv
Yy50aXRlbCk7CiAgICB9LAoKICAgIG9wZW5Nb2RhbCh0aXRsZSkgewogICAgICAgIGNvbnN0IGRv
YyA9IHRoaXMuY3VycmVudERvYzsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZWRp
dG9yTW9kYWxUaXRsZScpLnRleHRDb250ZW50ID0gdGl0bGU7CiAgICAgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2VkaXRvclRpdGVsJykudmFsdWUgPSBkb2MudGl0ZWwgfHwgJyc7CgogICAg
ICAgIC8vIEthdGVnb3JpZS1TZWxlY3QgZnVlbGxlbiAoYXVzZ2VibGVuZGV0ZSBLYXRlZ29yaWVu
IHVlYmVyc3ByaW5nZW4sIGVzIHNlaSBkZW5uIGRhcyBEb2t1bWVudCBoYXQgZGllc2UgS2F0ZWdv
cmllKQogICAgICAgIGNvbnN0IGthdFNlbGVjdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdl
ZGl0b3JLYXRlZ29yaWUnKTsKICAgICAgICBrYXRTZWxlY3QuaW5uZXJIVE1MID0gJyc7CiAgICAg
ICAgdmFyIGVkaXRvckhpZGRlbkthdHMgPSBEcml2ZUZTLmNvbmZpZy5oaWRkZW5LYXRlZ29yaWVu
IHx8IFtdOwogICAgICAgIChEcml2ZUZTLmNvbmZpZy5rYXRlZ29yaWVuIHx8IFtdKS5mb3JFYWNo
KGthdCA9PiB7CiAgICAgICAgICAgIGlmIChlZGl0b3JIaWRkZW5LYXRzLmluY2x1ZGVzKGthdCkg
JiYga2F0ICE9PSBkb2Mua2F0ZWdvcmllKSByZXR1cm47CiAgICAgICAgICAgIGNvbnN0IG9wdCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ29wdGlvbicpOwogICAgICAgICAgICBvcHQudmFsdWUg
PSBrYXQ7CiAgICAgICAgICAgIG9wdC50ZXh0Q29udGVudCA9IGthdDsKICAgICAgICAgICAgaWYg
KGthdCA9PT0gZG9jLmthdGVnb3JpZSkgb3B0LnNlbGVjdGVkID0gdHJ1ZTsKICAgICAgICAgICAg
a2F0U2VsZWN0LmFwcGVuZENoaWxkKG9wdCk7CiAgICAgICAgfSk7CgogICAgICAgIC8vIFVudGVy
a2F0ZWdvcmllbi1IaW53ZWlzIGJlaSBLYXRlZ29yaWUtV2VjaHNlbAogICAgICAgIGNvbnN0IHRp
dGVsSW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZWRpdG9yVGl0ZWwnKTsKICAgICAg
ICBjb25zdCB1cGRhdGVTdWJ0YWdIaW50ID0gKCkgPT4gewogICAgICAgICAgICBjb25zdCBzdWJz
ID0gRHJpdmVFZGl0b3IuQ0FURUdPUllfU1VCVEFHU1trYXRTZWxlY3QudmFsdWVdOwogICAgICAg
ICAgICBpZiAoc3VicykgewogICAgICAgICAgICAgICAgdGl0ZWxJbnB1dC5wbGFjZWhvbGRlciA9
ICdUaXRlbCB6LkIuICcgKyBrYXRTZWxlY3QudmFsdWUgKyAnICgnICsgc3Vicy5qb2luKCcgLyAn
KSArICcpJzsKICAgICAgICAgICAgICAgIC8vIFN1Yi1UYWdzIGF1dG9tYXRpc2NoIGFscyBLZXl3
b3JkLVZvcnNjaGxhZWdlIHByaW9yaXNpZXJlbgogICAgICAgICAgICAgICAgc3Vicy5mb3JFYWNo
KHMgPT4gewogICAgICAgICAgICAgICAgICAgIGlmICghRHJpdmVFZGl0b3IuX2N1cnJlbnRLZXl3
b3Jkcy5pbmNsdWRlcyhzKSkgewogICAgICAgICAgICAgICAgICAgICAgICBEcml2ZUVkaXRvci5f
cmVuZGVyU3VnZ2VzdGlvbnMoKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICB9KTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHRpdGVsSW5wdXQucGxh
Y2Vob2xkZXIgPSAnVGl0ZWwgZGVzIERva3VtZW50cyc7CiAgICAgICAgICAgIH0KICAgICAgICB9
OwogICAgICAgIGthdFNlbGVjdC5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCB1cGRhdGVTdWJ0
YWdIaW50KTsKICAgICAgICB1cGRhdGVTdWJ0YWdIaW50KCk7CgogICAgICAgIC8vIFN0YXR1cy1T
ZWxlY3QgZnVlbGxlbiAoZ2VmaWx0ZXJ0IG5hY2ggR292ZXJuYW5jZS1Sb2xsZSkKICAgICAgICBj
b25zdCBzdGF0dXNTZWxlY3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZWRpdG9yU3RhdHVz
Jyk7CiAgICAgICAgc3RhdHVzU2VsZWN0LmlubmVySFRNTCA9ICcnOwogICAgICAgIGNvbnN0IGlz
U1UgPSBEcml2ZUdvdmVybmFuY2UuaXNTdXBlclVzZXIoKTsKICAgICAgICBjb25zdCBpc0ZBID0g
RHJpdmVHb3Zlcm5hbmNlLmlzRmFjaGF1ZnNpY2h0KCk7CiAgICAgICAgY29uc3QgaXNSZXYgPSBE
cml2ZUdvdmVybmFuY2UuaXNSZXZpZXdlcihkb2Mua2F0ZWdvcmllKTsKICAgICAgICBPYmplY3Qu
a2V5cyhEcml2ZUZTLmNvbmZpZy5zdGF0dXMgfHwge30pLmZvckVhY2goc3RhdHVzID0+IHsKICAg
ICAgICAgICAgLy8gTm9ybWFsZSBVc2VyOiBudXIgRW50d3VyZiArIFBydWVmdW5nCiAgICAgICAg
ICAgIGlmICghaXNTVSAmJiAhaXNGQSAmJiAhaXNSZXYgJiYgKHN0YXR1cyA9PT0gJ0ZyZWlnZWdl
YmVuJyB8fCBzdGF0dXMgPT09ICdBYmdlbGVobnQnKSkgcmV0dXJuOwogICAgICAgICAgICBjb25z
dCBjZmcgPSBEcml2ZUZTLmNvbmZpZy5zdGF0dXNbc3RhdHVzXTsKICAgICAgICAgICAgY29uc3Qg
b3B0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnb3B0aW9uJyk7CiAgICAgICAgICAgIG9wdC52
YWx1ZSA9IHN0YXR1czsKICAgICAgICAgICAgb3B0LnRleHRDb250ZW50ID0gY2ZnLmxhYmVsOwog
ICAgICAgICAgICBpZiAoc3RhdHVzID09PSBkb2Muc3RhdHVzKSBvcHQuc2VsZWN0ZWQgPSB0cnVl
OwogICAgICAgICAgICBzdGF0dXNTZWxlY3QuYXBwZW5kQ2hpbGQob3B0KTsKICAgICAgICB9KTsK
CiAgICAgICAgLy8gw5xiZXJhcnRpa2VsLVNlbGVjdCBmw7xsbGVuCiAgICAgICAgY29uc3QgcGFy
ZW50U2VsZWN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VkaXRvclBhcmVudCcpOwogICAg
ICAgIHBhcmVudFNlbGVjdC5pbm5lckhUTUwgPSAnPG9wdGlvbiB2YWx1ZT0iIj4tLSBLZWluIMOc
YmVyYXJ0aWtlbCAtLTwvb3B0aW9uPic7CiAgICAgICAgRHJpdmVGUy5kb2N1bWVudHMuZm9yRWFj
aChkID0+IHsKICAgICAgICAgICAgaWYgKGQuaWQgPT09IGRvYy5pZCkgcmV0dXJuOyAvLyBzaWNo
IHNlbGJzdCBhdXNzY2hsaWXDn2VuCiAgICAgICAgICAgIGlmIChkLnBhcmVudElkID09PSBkb2Mu
aWQpIHJldHVybjsgLy8gS2luZGVyIGF1c3NjaGxpZcOfZW4gKFppcmtlbHZlcm1laWR1bmcpCiAg
ICAgICAgICAgIGNvbnN0IG9wdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ29wdGlvbicpOwog
ICAgICAgICAgICBvcHQudmFsdWUgPSBkLmlkOwogICAgICAgICAgICBvcHQudGV4dENvbnRlbnQg
PSBkLnRpdGVsOwogICAgICAgICAgICBpZiAoZC5pZCA9PT0gZG9jLnBhcmVudElkKSBvcHQuc2Vs
ZWN0ZWQgPSB0cnVlOwogICAgICAgICAgICBwYXJlbnRTZWxlY3QuYXBwZW5kQ2hpbGQob3B0KTsK
ICAgICAgICB9KTsKCiAgICAgICAgLy8gU2NobGFnd8O2cnRlciBpbml0aWFsaXNpZXJlbiAoYWJo
YWVuZ2lnIHZvbiBHb3Zlcm5hbmNlLU1vZHVzKQogICAgICAgIGNvbnN0IGt3TW9kZSA9IChEcml2
ZUdvdmVybmFuY2UuZGF0YSAmJiBEcml2ZUdvdmVybmFuY2UuZGF0YS5zZXR0aW5ncykgPyAoRHJp
dmVHb3Zlcm5hbmNlLmRhdGEuc2V0dGluZ3Mua2V5d29yZE1vZGUgfHwgJ3JlcXVpcmVkJykgOiAn
cmVxdWlyZWQnOwogICAgICAgIGNvbnN0IGt3Um93ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2VkaXRvcktleXdvcmRSb3cnKTsKICAgICAgICBpZiAoa3dSb3cpIGt3Um93LnN0eWxlLmRpc3Bs
YXkgPSAoa3dNb2RlID09PSAnZGlzYWJsZWQnKSA/ICdub25lJyA6ICcnOwogICAgICAgIHRoaXMu
X2N1cnJlbnRLZXl3b3JkcyA9IFsuLi4oZG9jLnNjaGxhZ3dvZXJ0ZXIgfHwgW10pXTsKICAgICAg
ICB0aGlzLl9yZW5kZXJLZXl3b3JkcygpOwogICAgICAgIHRoaXMuX3NldHVwS2V5d29yZElucHV0
KCk7CgogICAgICAgIC8vIEluaGFsdCBsYWRlbgogICAgICAgIGNvbnN0IGVkaXRvcklucHV0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VkaXRvcklucHV0Jyk7CiAgICAgICAgZWRpdG9ySW5w
dXQuaW5uZXJIVE1MID0gRHJpdmVQb3J0YWwuc2FuaXRpemVIVE1MKGRvYy5pbmhhbHQpOwoKICAg
ICAgICAvLyBNb2RhbCB6ZWlnZW4KICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZWRp
dG9yTW9kYWwnKS5jbGFzc0xpc3QuYWRkKCdhY3RpdmUnKTsKICAgICAgICBlZGl0b3JJbnB1dC5m
b2N1cygpOwoKICAgICAgICAvLyBIaXN0b3J5IGluaXRpYWxpc2llcmVuCiAgICAgICAgdGhpcy5p
bml0SGlzdG9yeSgpOwoKICAgICAgICAvLyBNZWRpYSBjb250ZXh0IG1lbnUgZXZlbnRzCiAgICAg
ICAgdGhpcy5zZXR1cEVkaXRvck1lZGlhRXZlbnRzKCk7CiAgICB9LAoKICAgIGFzeW5jIGNhbmNl
bFdpdGhQcm9tcHQoKSB7CiAgICAgICAgLy8gUHJ1ZWZlbiBvYiBJbmhhbHQgdm9yaGFuZGVuCiAg
ICAgICAgdmFyIGVkaXRvciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdlZGl0b3JJbnB1dCcp
OwogICAgICAgIHZhciB0aXRlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdlZGl0b3JUaXRl
bCcpOwogICAgICAgIHZhciBoYXNDb250ZW50ID0gKGVkaXRvciAmJiBlZGl0b3IudGV4dENvbnRl
bnQudHJpbSgpLmxlbmd0aCA+IDApIHx8ICh0aXRlbCAmJiB0aXRlbC52YWx1ZS50cmltKCkubGVu
Z3RoID4gMCk7CgogICAgICAgIGlmIChoYXNDb250ZW50KSB7CiAgICAgICAgICAgIHZhciBtb2Rh
bCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgICAgICAgICBtb2RhbC5zdHls
ZS5jc3NUZXh0ID0gJ3Bvc2l0aW9uOmZpeGVkO3RvcDowO2xlZnQ6MDt3aWR0aDoxMDAlO2hlaWdo
dDoxMDAlO2JhY2tncm91bmQ6cmdiYSgwLDAsMCwwLjUpO3otaW5kZXg6MTA2MDA7ZGlzcGxheTpm
bGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyOyc7CiAgICAgICAg
ICAgIG1vZGFsLmlubmVySFRNTCA9CiAgICAgICAgICAgICAgICAnPGRpdiBzdHlsZT0iYmFja2dy
b3VuZDp2YXIoLS1iZy1jYXJkKTtib3JkZXItcmFkaXVzOjEwcHg7cGFkZGluZzoyNHB4IDI4cHg7
bWF4LXdpZHRoOjQyMHB4O3dpZHRoOjkwJTtib3gtc2hhZG93OjAgOHB4IDMycHggcmdiYSgwLDAs
MCwwLjMpOyI+JyArCiAgICAgICAgICAgICAgICAgICAgJzxoMyBzdHlsZT0iY29sb3I6dmFyKC0t
dGV4dC1oZWFkaW5nKTttYXJnaW4tYm90dG9tOjEycHg7Ij5BcnRpa2VsIHNjaGxpZcOfZW4/PC9o
Mz4nICsKICAgICAgICAgICAgICAgICAgICAnPHAgc3R5bGU9ImNvbG9yOnZhcigtLXRleHQtcHJp
bWFyeSk7Zm9udC1zaXplOjE0cHg7bGluZS1oZWlnaHQ6MS43O21hcmdpbi1ib3R0b206MTZweDsi
PicgKwogICAgICAgICAgICAgICAgICAgICAgICAnTcO2Y2h0ZXN0IGR1IGRlbiBha3R1ZWxsZW4g
U3RhbmQgYWxzIEVudHd1cmYgc3BlaWNoZXJuLCBkYW1pdCBkdSBzcMOkdGVyIGRhcmFuIHdlaXRl
cmFyYmVpdGVuIGthbm5zdD8nICsKICAgICAgICAgICAgICAgICAgICAnPC9wPicgKwogICAgICAg
ICAgICAgICAgICAgICc8ZGl2IHN0eWxlPSJkaXNwbGF5OmZsZXg7Z2FwOjhweDtqdXN0aWZ5LWNv
bnRlbnQ6ZmxleC1lbmQ7Ij4nICsKICAgICAgICAgICAgICAgICAgICAgICAgJzxidXR0b24gaWQ9
ImNhbmNlbERpc2NhcmQiIHN0eWxlPSJwYWRkaW5nOjhweCAxNnB4O2JvcmRlci1yYWRpdXM6NHB4
O2JvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyLWNvbG9yKTtiYWNrZ3JvdW5kOnZhcigtLWJn
LWNhcmQpO2NvbG9yOnZhcigtLXRleHQtcHJpbWFyeSk7Y3Vyc29yOnBvaW50ZXI7Ij5WZXJ3ZXJm
ZW48L2J1dHRvbj4nICsKICAgICAgICAgICAgICAgICAgICAgICAgJzxidXR0b24gaWQ9ImNhbmNl
bFNhdmVEcmFmdCIgc3R5bGU9InBhZGRpbmc6OHB4IDE2cHg7Ym9yZGVyLXJhZGl1czo0cHg7Ym9y
ZGVyOm5vbmU7YmFja2dyb3VuZDp2YXIoLS10ZXh0LWhlYWRpbmcpO2NvbG9yOndoaXRlO2N1cnNv
cjpwb2ludGVyO2ZvbnQtd2VpZ2h0OjYwMDsiPkFscyBFbnR3dXJmIHNwZWljaGVybjwvYnV0dG9u
PicgKwogICAgICAgICAgICAgICAgICAgICc8L2Rpdj4nICsKICAgICAgICAgICAgICAgICc8L2Rp
dj4nOwogICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKG1vZGFsKTsKCiAgICAg
ICAgICAgIHZhciBzZWxmID0gdGhpczsKICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2NhbmNlbERpc2NhcmQnKS5vbmNsaWNrID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAg
ICBtb2RhbC5yZW1vdmUoKTsKICAgICAgICAgICAgICAgIHNlbGYuY2xvc2UoKTsKICAgICAgICAg
ICAgfTsKICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NhbmNlbFNhdmVEcmFm
dCcpLm9uY2xpY2sgPSBhc3luYyBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIG1vZGFsLnJl
bW92ZSgpOwogICAgICAgICAgICAgICAgLy8gU3RhdHVzIGF1ZiBFbnR3dXJmIHNldHplbiB1bmQg
c3BlaWNoZXJuCiAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZWRpdG9y
U3RhdHVzJykudmFsdWUgPSAnRW50d3VyZic7CiAgICAgICAgICAgICAgICBhd2FpdCBzZWxmLnNh
dmUodHJ1ZSk7CiAgICAgICAgICAgIH07CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgdGhp
cy5jbG9zZSgpOwogICAgICAgIH0KICAgIH0sCgogICAgY2xvc2UoKSB7CiAgICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2VkaXRvck1vZGFsJykuY2xhc3NMaXN0LnJlbW92ZSgnYWN0aXZl
Jyk7CiAgICAgICAgdGhpcy5oaWRlQ29udGV4dE1lbnUoKTsKICAgICAgICB0aGlzLmNsb3NlVXBs
b2FkRGlhbG9nKCk7CiAgICAgICAgdGhpcy5jbG9zZUNvbnRyaWJEaWFsb2coKTsKICAgICAgICAv
LyBNZXRhLVplaWxlbiB3aWVkZXIgZWluYmxlbmRlbiAoa29lbm5lbiBiZWkgU3RhcnRzZWl0ZW4t
QmVhcmJlaXR1bmcgYXVzZ2VibGVuZGV0IHNlaW4pCiAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxl
Y3RvckFsbCgnLmVkaXRvci1tZXRhLXJvdycpLmZvckVhY2goZnVuY3Rpb24ocm93KSB7IHJvdy5z
dHlsZS5kaXNwbGF5ID0gJyc7IH0pOwogICAgICAgIHRoaXMuX2lzU3RhcnRzZWl0ZSA9IGZhbHNl
OwogICAgICAgIC8vIExvY2sgZnJlaWdlYmVuCiAgICAgICAgaWYgKHRoaXMuX2xvY2tlZERvY0lk
KSB7CiAgICAgICAgICAgIHRoaXMucmVsZWFzZUxvY2sodGhpcy5fbG9ja2VkRG9jSWQpOwogICAg
ICAgICAgICB0aGlzLl9sb2NrZWREb2NJZCA9IG51bGw7CiAgICAgICAgfQogICAgICAgIHRoaXMu
Y3VycmVudERvYyA9IG51bGw7CiAgICAgICAgdGhpcy5pc05ldyA9IGZhbHNlOwogICAgICAgIHRo
aXMuX3BlbmRpbmdDb250cmliVHlwZSA9IG51bGw7CiAgICB9LAoKICAgIF9wZW5kaW5nQ29udHJp
YlR5cGU6IG51bGwsCgogICAgX2lzU3RhcnRzZWl0ZTogZmFsc2UsCgogICAgYXN5bmMgc2F2ZUFu
ZENsb3NlKCkgewogICAgICAgIGF3YWl0IHRoaXMuc2F2ZSh0cnVlKTsKICAgIH0sCgogICAgYXN5
bmMgc2F2ZShjbG9zZUFmdGVyKSB7CiAgICAgICAgaWYgKCF0aGlzLmN1cnJlbnREb2MpIHJldHVy
bjsKCiAgICAgICAgLy8gU29uZGVyZmFsbDogU3RhcnRzZWl0ZW4tQmVhcmJlaXR1bmcKICAgICAg
ICBpZiAodGhpcy5faXNTdGFydHNlaXRlKSB7CiAgICAgICAgICAgIHZhciBjb250ZW50ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VkaXRvcklucHV0JykuaW5uZXJIVE1MOwogICAgICAgICAg
ICBhd2FpdCBEcml2ZUdvdmVybmFuY2Uuc2F2ZVN0YXJ0c2VpdGUoY29udGVudCk7CiAgICAgICAg
ICAgIGlmIChjbG9zZUFmdGVyKSB7CiAgICAgICAgICAgICAgICB0aGlzLl9pc1N0YXJ0c2VpdGUg
PSBmYWxzZTsKICAgICAgICAgICAgICAgIHRoaXMuY2xvc2UoKTsKICAgICAgICAgICAgICAgIC8v
IFp1csO8Y2sgaW5zIEdvdmVybmFuY2UtTW9kYWwKICAgICAgICAgICAgICAgIERyaXZlR292ZXJu
YW5jZS5zaG93QWRtaW4oKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgfQoKICAgICAgICBjb25zdCB0aXRlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdlZGl0
b3JUaXRlbCcpLnZhbHVlLnRyaW0oKTsKICAgICAgICBpZiAoIXRpdGVsKSB7CiAgICAgICAgICAg
IHNob3dUb2FzdCgnQml0dGUgZWluZW4gVGl0ZWwgZWluZ2ViZW4nLCAnd2FybmluZycpOwogICAg
ICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZWRpdG9yVGl0ZWwnKS5mb2N1cygpOwog
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAvLyBCZWkgYmVzdGVoZW5kZW4g
RG9rdW1lbnRlbjogQmVpdHJhZ3NhcnQgYWJmcmFnZW4gZmFsbHMgbm9jaCBuaWNodCBnZXdhZWhs
dAogICAgICAgIGlmICghdGhpcy5pc05ldyAmJiAhdGhpcy5fcGVuZGluZ0NvbnRyaWJUeXBlKSB7
CiAgICAgICAgICAgIHRoaXMuX3BlbmRpbmdDbG9zZUFmdGVyID0gY2xvc2VBZnRlciB8fCBmYWxz
ZTsKICAgICAgICAgICAgdGhpcy5zaG93Q29udHJpYkRpYWxvZygpOwogICAgICAgICAgICByZXR1
cm47CiAgICAgICAgfQoKICAgICAgICAvLyBTY2hsYWd3w7ZydGVyIFBmbGljaHRmZWxkIChudXIg
d2VubiBNb2R1cyA9ICJyZXF1aXJlZCIpCiAgICAgICAgY29uc3Qga3dNb2RlID0gKERyaXZlR292
ZXJuYW5jZS5kYXRhICYmIERyaXZlR292ZXJuYW5jZS5kYXRhLnNldHRpbmdzKSA/IChEcml2ZUdv
dmVybmFuY2UuZGF0YS5zZXR0aW5ncy5rZXl3b3JkTW9kZSB8fCAncmVxdWlyZWQnKSA6ICdyZXF1
aXJlZCc7CiAgICAgICAgaWYgKGt3TW9kZSA9PT0gJ3JlcXVpcmVkJyAmJiAoIXRoaXMuX2N1cnJl
bnRLZXl3b3JkcyB8fCB0aGlzLl9jdXJyZW50S2V5d29yZHMubGVuZ3RoID09PSAwKSkgewogICAg
ICAgICAgICBzaG93VG9hc3QoJ0JpdHRlIG1pbmRlc3RlbnMgZWluIFNjaGxhZ3dvcnQgZWluZ2Vi
ZW4nLCAnd2FybmluZycpOwogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZWRp
dG9yS2V5d29yZElucHV0JykuZm9jdXMoKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0K
CiAgICAgICAgdGhpcy5jdXJyZW50RG9jLnRpdGVsID0gdGl0ZWw7CiAgICAgICAgdGhpcy5jdXJy
ZW50RG9jLmthdGVnb3JpZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdlZGl0b3JLYXRlZ29y
aWUnKS52YWx1ZTsKICAgICAgICB0aGlzLmN1cnJlbnREb2MucGFyZW50SWQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnZWRpdG9yUGFyZW50JykudmFsdWUgfHwgbnVsbDsKICAgICAgICBpZiAo
a3dNb2RlICE9PSAnZGlzYWJsZWQnKSB7CiAgICAgICAgICAgIHRoaXMuY3VycmVudERvYy5zY2hs
YWd3b2VydGVyID0gWy4uLnRoaXMuX2N1cnJlbnRLZXl3b3Jkc107CiAgICAgICAgfQogICAgICAg
IGNvbnN0IHNlbGVjdGVkU3RhdHVzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VkaXRvclN0
YXR1cycpLnZhbHVlOwogICAgICAgIGNvbnN0IG5ld0luaGFsdCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdlZGl0b3JJbnB1dCcpLmlubmVySFRNTDsKCiAgICAgICAgLy8gQ29udHJpYnV0b3It
VHJhY2tpbmc6IEJlaXRyYWdzYXJ0IGJlc3RpbW1lbgogICAgICAgIGNvbnN0IHVzZXJuYW1lID0g
KERyaXZlRlMuZW52aXJvbiAmJiBEcml2ZUZTLmVudmlyb24udXNlcm5hbWUpID8gRHJpdmVGUy5l
bnZpcm9uLnVzZXJuYW1lIDogJ1VuYmVrYW5udCc7CiAgICAgICAgaWYgKCF0aGlzLmN1cnJlbnRE
b2MuY29udHJpYnV0b3JzKSB0aGlzLmN1cnJlbnREb2MuY29udHJpYnV0b3JzID0gW107CgogICAg
ICAgIGlmICh0aGlzLmlzTmV3KSB7CiAgICAgICAgICAgIC8vIE5ldWVzIERva3VtZW50OiBFcnN0
ZWxsZXIgPSAxMDAlIEF1dG9yCiAgICAgICAgICAgIHRoaXMuY3VycmVudERvYy5jb250cmlidXRv
cnMgPSBbeyB1c2VybmFtZTogdXNlcm5hbWUsIHJvbGU6ICdhdXRvcicsIGVudHJpZXM6IDEsIGZp
cnN0Q29udHJpYjogbmV3IERhdGUoKS50b0lTT1N0cmluZygpIH1dOwogICAgICAgIH0gZWxzZSBp
ZiAodGhpcy5fcGVuZGluZ0NvbnRyaWJUeXBlKSB7CiAgICAgICAgICAgIC8vIEJlc3RlaGVuZDog
RWludHJhZyBnZW1hZXNzIGdld2FlaGx0ZXIgQmVpdHJhZ3NhcnQgaGluenVmdWVnZW4KICAgICAg
ICAgICAgY29uc3QgZXhpc3RpbmcgPSB0aGlzLmN1cnJlbnREb2MuY29udHJpYnV0b3JzLmZpbmQo
YyA9PiBjLnVzZXJuYW1lID09PSB1c2VybmFtZSAmJiBjLnJvbGUgPT09IHRoaXMuX3BlbmRpbmdD
b250cmliVHlwZSk7CiAgICAgICAgICAgIGlmIChleGlzdGluZykgewogICAgICAgICAgICAgICAg
ZXhpc3RpbmcuZW50cmllcyA9IChleGlzdGluZy5lbnRyaWVzIHx8IDEpICsgMTsKICAgICAgICAg
ICAgICAgIGV4aXN0aW5nLmxhc3RDb250cmliID0gbmV3IERhdGUoKS50b0lTT1N0cmluZygpOwog
ICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50RG9jLmNvbnRy
aWJ1dG9ycy5wdXNoKHsKICAgICAgICAgICAgICAgICAgICB1c2VybmFtZTogdXNlcm5hbWUsCiAg
ICAgICAgICAgICAgICAgICAgcm9sZTogdGhpcy5fcGVuZGluZ0NvbnRyaWJUeXBlLAogICAgICAg
ICAgICAgICAgICAgIGVudHJpZXM6IDEsCiAgICAgICAgICAgICAgICAgICAgZmlyc3RDb250cmli
OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCkKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAg
ICB9CiAgICAgICAgICAgIHRoaXMuX3BlbmRpbmdDb250cmliVHlwZSA9IG51bGw7CiAgICAgICAg
fQoKICAgICAgICAvLyBSZXZpc2lvbiBzaWNoZXJuOiBWb3JoZXJpZ2VuIFN0YW5kIHNwZWljaGVy
biAobWF4IDYgUmV2aXNpb25lbikKICAgICAgICBpZiAoIXRoaXMuaXNOZXcgJiYgdGhpcy5jdXJy
ZW50RG9jLmluaGFsdCAmJiB0aGlzLmN1cnJlbnREb2MuaW5oYWx0ICE9PSBuZXdJbmhhbHQpIHsK
ICAgICAgICAgICAgaWYgKCF0aGlzLmN1cnJlbnREb2MucmV2aXNpb25zKSB0aGlzLmN1cnJlbnRE
b2MucmV2aXNpb25zID0gW107CiAgICAgICAgICAgIHRoaXMuY3VycmVudERvYy5yZXZpc2lvbnMu
cHVzaCh7CiAgICAgICAgICAgICAgICBpbmhhbHQ6IHRoaXMuY3VycmVudERvYy5pbmhhbHQsCiAg
ICAgICAgICAgICAgICB0aXRlbDogdGhpcy5jdXJyZW50RG9jLnRpdGVsLAogICAgICAgICAgICAg
ICAgc3RhdHVzOiB0aGlzLmN1cnJlbnREb2Muc3RhdHVzLAogICAgICAgICAgICAgICAgc2F2ZWRB
dDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLAogICAgICAgICAgICAgICAgc2F2ZWRCeTogdXNl
cm5hbWUKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIC8vIE1heCA2IFJldmlzaW9uZW4gYmVo
YWx0ZW4gKGFlbHRlc3RlIGVudGZlcm5lbikKICAgICAgICAgICAgd2hpbGUgKHRoaXMuY3VycmVu
dERvYy5yZXZpc2lvbnMubGVuZ3RoID4gNikgewogICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50
RG9jLnJldmlzaW9ucy5zaGlmdCgpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAv
LyBWZXJzaW9uIGF1dG9tYXRpc2NoIGJlcmVjaG5lbgogICAgICAgIHRoaXMuY3VycmVudERvYy52
ZXJzaW9uID0gY2FsY3VsYXRlVmVyc2lvbih0aGlzLmN1cnJlbnREb2MsIHRoaXMuY3VycmVudERv
Yy5pbmhhbHQsIG5ld0luaGFsdCwgc2VsZWN0ZWRTdGF0dXMpOwoKICAgICAgICB0aGlzLmN1cnJl
bnREb2MuaW5oYWx0ID0gbmV3SW5oYWx0OwoKICAgICAgICAvLyBHb3Zlcm5hbmNlLVdvcmtmbG93
OiBTdGF0dXMtVWViZXJnYWVuZ2UgcHJ1ZWZlbgogICAgICAgIGNvbnN0IGdvdiA9IERyaXZlR292
ZXJuYW5jZS5kYXRhOwogICAgICAgIGNvbnN0IHNldHRpbmdzID0gZ292ID8gZ292LnNldHRpbmdz
IDoge307CiAgICAgICAgY29uc3QgaXNTVSA9IERyaXZlR292ZXJuYW5jZS5pc1N1cGVyVXNlcigp
OwogICAgICAgIGNvbnN0IGlzRkEgPSBEcml2ZUdvdmVybmFuY2UuaXNGYWNoYXVmc2ljaHQoKTsK
ICAgICAgICBjb25zdCBpc1JldiA9IERyaXZlR292ZXJuYW5jZS5pc1Jldmlld2VyKHRoaXMuY3Vy
cmVudERvYy5rYXRlZ29yaWUpOwoKICAgICAgICBpZiAoc2VsZWN0ZWRTdGF0dXMgPT09ICdQcsO8
ZnVuZycgJiYgIWlzU1UgJiYgIWlzRkEpIHsKICAgICAgICAgICAgLy8gWnVyIFBydWVmdW5nIGVp
bnJlaWNoZW4KICAgICAgICAgICAgYXdhaXQgRHJpdmVHb3Zlcm5hbmNlLnN1Ym1pdEZvclJldmll
dyh0aGlzLmN1cnJlbnREb2MpOwogICAgICAgICAgICBzaG93VG9hc3QoJ0Rva3VtZW50IHp1ciBQ
csO8ZnVuZyBlaW5nZXJlaWNodCcsICdpbmZvJyk7CiAgICAgICAgfSBlbHNlIGlmIChzZWxlY3Rl
ZFN0YXR1cyA9PT0gJ0ZyZWlnZWdlYmVuJyAmJiAhaXNTVSAmJiAhaXNGQSAmJiAhaXNSZXYpIHsK
ICAgICAgICAgICAgLy8gTm9ybWFsZXIgVXNlciBkYXJmIG5pY2h0IGRpcmVrdCBmcmVpZ2ViZW4K
ICAgICAgICAgICAgc2hvd1RvYXN0KCdLZWluZSBCZXJlY2h0aWd1bmcgenVyIEZyZWlnYWJlLiBC
aXR0ZSB6dXIgUHLDvGZ1bmcgZWlucmVpY2hlbi4nLCAnd2FybmluZycpOwogICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgLy8gV2VubiBTdGF0dXMgYXVmIFBy
dWVmdW5nIGdlc2V0enQgd2lyZDogdm9yaGVyaWdlbiBJbmhhbHQgc2ljaGVybiBmdWVyIERpZmYK
ICAgICAgICAgICAgaWYgKHNlbGVjdGVkU3RhdHVzID09PSAnUHLDvGZ1bmcnICYmIHRoaXMuY3Vy
cmVudERvYy5zdGF0dXMgIT09ICdQcsO8ZnVuZycpIHsKICAgICAgICAgICAgICAgIHRyeSB7CiAg
ICAgICAgICAgICAgICAgICAgdmFyIHNhdmVkRG9jID0gYXdhaXQgRHJpdmVGUy5sb2FkRG9jdW1l
bnQodGhpcy5jdXJyZW50RG9jLmlkKTsKICAgICAgICAgICAgICAgICAgICBpZiAoc2F2ZWREb2Mg
JiYgc2F2ZWREb2MuaW5oYWx0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY3VycmVu
dERvYy5fcHJldmlvdXNJbmhhbHQgPSBzYXZlZERvYy5pbmhhbHQ7CiAgICAgICAgICAgICAgICAg
ICAgICAgIHRoaXMuY3VycmVudERvYy5fcHJldmlvdXNUaXRlbCA9IHNhdmVkRG9jLnRpdGVsOwog
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gY2F0Y2goZSkge30KICAgICAg
ICAgICAgfQogICAgICAgICAgICB0aGlzLmN1cnJlbnREb2Muc3RhdHVzID0gc2VsZWN0ZWRTdGF0
dXM7CiAgICAgICAgfQoKICAgICAgICAvLyBCZWkgbmV1ZW0gRG9rdW1lbnQ6IEdvdmVybmFuY2Ug
ZXJ6d2luZ2VuCiAgICAgICAgaWYgKHRoaXMuaXNOZXcgJiYgc2V0dGluZ3MucmVxdWlyZUFwcHJv
dmFsRm9yTmV3ICYmICFpc1NVKSB7CiAgICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnREb2Muc3Rh
dHVzICE9PSAnRW50d3VyZicgJiYgdGhpcy5jdXJyZW50RG9jLnN0YXR1cyAhPT0gJ1Byw7xmdW5n
JykgewogICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50RG9jLnN0YXR1cyA9ICdFbnR3dXJmJzsK
ICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgY29uc3Qg
c2F2ZVJlc3VsdCA9IGF3YWl0IERyaXZlRlMuc2F2ZURvY3VtZW50KHRoaXMuY3VycmVudERvYyk7
CiAgICAgICAgICAgIGlmIChzYXZlUmVzdWx0ID09PSB0cnVlKSB7CiAgICAgICAgICAgICAgICBj
b25zdCBzYXZlZERvY0lkID0gdGhpcy5jdXJyZW50RG9jLmlkOwogICAgICAgICAgICAgICAgc2hv
d1RvYXN0KCdEb2t1bWVudCAiJyArIHRpdGVsICsgJyIgZ2VzcGVpY2hlcnQnLCAnc3VjY2Vzcycp
OwogICAgICAgICAgICAgICAgRHJpdmVHb3Zlcm5hbmNlLnVwZGF0ZVVJKCk7CiAgICAgICAgICAg
ICAgICBEcml2ZVBvcnRhbC5yZW5kZXIoKTsKICAgICAgICAgICAgICAgIGlmIChjbG9zZUFmdGVy
KSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5jbG9zZSgpOwogICAgICAgICAgICAgICAgICAg
IGF3YWl0IERyaXZlUG9ydGFsLnNlbGVjdERvY3VtZW50KHNhdmVkRG9jSWQpOwogICAgICAgICAg
ICAgICAgICAgIERyaXZlUG9ydGFsLmhpZ2hsaWdodEl0ZW0oc2F2ZWREb2NJZCk7CiAgICAgICAg
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIC8vIEVkaXRvciBvZmZlbiBsYXNz
ZW4sIGFiZXIgRG9rdW1lbnRlbmxpc3RlIGFrdHVhbGlzaWVyZW4KICAgICAgICAgICAgICAgICAg
ICB0aGlzLmlzTmV3ID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fcGVuZGluZ0Nv
bnRyaWJUeXBlID0gbnVsbDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgICAgIHNob3dUb2FzdCgnU3BlaWNoZXJuIGZlaGxnZXNjaGxhZ2VuOiAnICsg
c2F2ZVJlc3VsdCwgJ2Vycm9yJywgNTAwMCk7CiAgICAgICAgICAgIH0KICAgICAgICB9IGNhdGNo
IChlcnIpIHsKICAgICAgICAgICAgc2hvd1RvYXN0KCdTcGVpY2hlcm4gZmVobGdlc2NobGFnZW46
ICcgKyBlcnIubWVzc2FnZSwgJ2Vycm9yJywgNTAwMCk7CiAgICAgICAgfQogICAgfSwKCiAgICAv
LyAtLS0gSGlzdG9yeSAoVW5kby9SZWRvKSAtLS0KICAgIGluaXRIaXN0b3J5KCkgewogICAgICAg
IGNvbnN0IGVkaXRvcklucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VkaXRvcklucHV0
Jyk7CiAgICAgICAgdGhpcy5oaXN0b3J5ID0gW2VkaXRvcklucHV0LmlubmVySFRNTF07CiAgICAg
ICAgdGhpcy5oaXN0b3J5SW5kZXggPSAwOwoKICAgICAgICAvLyBQYXN0ZS1IYW5kbGVyOiBIVE1M
LUluaGFsdGUgbm9ybWFsaXNpZXJlbiArIGV4dGVybmUgQmlsZGVyIGxva2FsIHNwZWljaGVybgog
ICAgICAgIGVkaXRvcklucHV0Lm9ucGFzdGUgPSAoZSkgPT4gewogICAgICAgICAgICBlLnByZXZl
bnREZWZhdWx0KCk7CgogICAgICAgICAgICAvLyBCaWxkZXIgYXVzIENsaXBib2FyZCAoU2NyZWVu
c2hvdCAvIENvcHktSW1hZ2UpCiAgICAgICAgICAgIGNvbnN0IGl0ZW1zID0gQXJyYXkuZnJvbShl
LmNsaXBib2FyZERhdGEuaXRlbXMgfHwgW10pOwogICAgICAgICAgICBjb25zdCBpbWdJdGVtID0g
aXRlbXMuZmluZChpID0+IGkudHlwZS5zdGFydHNXaXRoKCdpbWFnZS8nKSk7CiAgICAgICAgICAg
IGlmIChpbWdJdGVtICYmIHRoaXMuY3VycmVudERvYykgewogICAgICAgICAgICAgICAgY29uc3Qg
YmxvYiA9IGltZ0l0ZW0uZ2V0QXNGaWxlKCk7CiAgICAgICAgICAgICAgICBpZiAoYmxvYikgewog
ICAgICAgICAgICAgICAgICAgIHRoaXMuX3Bhc3RlSW1hZ2VCbG9iKGJsb2IpOwogICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAg
ICAgICAgY29uc3QgY2xpcEh0bWwgPSBlLmNsaXBib2FyZERhdGEuZ2V0RGF0YSgndGV4dC9odG1s
Jyk7CiAgICAgICAgICAgIGNvbnN0IGNsaXBUZXh0ID0gZS5jbGlwYm9hcmREYXRhLmdldERhdGEo
J3RleHQvcGxhaW4nKTsKCiAgICAgICAgICAgIGlmIChjbGlwSHRtbCkgewogICAgICAgICAgICAg
ICAgY29uc3QgcGFyc2VyID0gbmV3IERPTVBhcnNlcigpOwogICAgICAgICAgICAgICAgY29uc3Qg
cGFyc2VkID0gcGFyc2VyLnBhcnNlRnJvbVN0cmluZyhjbGlwSHRtbCwgJ3RleHQvaHRtbCcpOwog
ICAgICAgICAgICAgICAgY29uc3QgaW1ncyA9IHBhcnNlZC5ib2R5LnF1ZXJ5U2VsZWN0b3JBbGwo
J2ltZycpOwogICAgICAgICAgICAgICAgY29uc3QgZXh0ZXJuYWxJbWdzID0gQXJyYXkuZnJvbShp
bWdzKS5maWx0ZXIoaW1nID0+CiAgICAgICAgICAgICAgICAgICAgaW1nLnNyYyAmJiAoaW1nLnNy
Yy5zdGFydHNXaXRoKCdodHRwOi8vJykgfHwgaW1nLnNyYy5zdGFydHNXaXRoKCdodHRwczovLycp
KQogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAvLyBJbmxpbmUtU3R5bGVzIGJl
cmVpbmlnZW46IEZhcmJlbiwgSGludGVyZ3J1ZW5kZSB1bmQgU2NocmlmdGFydGVuIGVudGZlcm5l
biwKICAgICAgICAgICAgICAgIC8vIGRhbWl0IGVpbmdlZnVlZ3RlciBUZXh0IGltIERhcmstL0xp
Z2h0LU1vZGUga29ycmVrdCBkYXJnZXN0ZWxsdCB3aXJkLgogICAgICAgICAgICAgICAgLy8gTGlz
dGVuICh1bC9vbC9saSkgdW5kIFRhYmVsbGVuICh0YWJsZS90ci90ZC90aCkgd2VyZGVuIGdlc2No
b250LAogICAgICAgICAgICAgICAgLy8gZGFtaXQgU3RydWt0dXIgdW5kIEVpbnJ1ZWNrdW5nIGVy
aGFsdGVuIGJsZWliZW4uCiAgICAgICAgICAgICAgICB2YXIgbGlzdFRhZ3MgPSBbJ1VMJywnT0wn
LCdMSSddOwogICAgICAgICAgICAgICAgdmFyIHRhYmxlVGFncyA9IFsnVEFCTEUnLCdUSEVBRCcs
J1RCT0RZJywnVFInLCdURCcsJ1RIJ107CiAgICAgICAgICAgICAgICBwYXJzZWQuYm9keS5xdWVy
eVNlbGVjdG9yQWxsKCcqJykuZm9yRWFjaChlbCA9PiB7CiAgICAgICAgICAgICAgICAgICAgdmFy
IHRhZyA9IGVsLnRhZ05hbWU7CiAgICAgICAgICAgICAgICAgICAgdmFyIGlzTGlzdCA9IGxpc3RU
YWdzLmluY2x1ZGVzKHRhZyk7CiAgICAgICAgICAgICAgICAgICAgdmFyIGlzVGFibGUgPSB0YWJs
ZVRhZ3MuaW5jbHVkZXModGFnKTsKICAgICAgICAgICAgICAgICAgICBpZiAoZWwuc3R5bGUpIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgZWwuc3R5bGUucmVtb3ZlUHJvcGVydHkoJ2NvbG9yJyk7
CiAgICAgICAgICAgICAgICAgICAgICAgIGVsLnN0eWxlLnJlbW92ZVByb3BlcnR5KCdiYWNrZ3Jv
dW5kLWNvbG9yJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIGVsLnN0eWxlLnJlbW92ZVByb3Bl
cnR5KCdiYWNrZ3JvdW5kJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIGVsLnN0eWxlLnJlbW92
ZVByb3BlcnR5KCdmb250LWZhbWlseScpOwogICAgICAgICAgICAgICAgICAgICAgICBlbC5zdHls
ZS5yZW1vdmVQcm9wZXJ0eSgnZm9udC1zaXplJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIGVs
LnN0eWxlLnJlbW92ZVByb3BlcnR5KCd3aGl0ZS1zcGFjZScpOwogICAgICAgICAgICAgICAgICAg
ICAgICBlbC5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnb3ZlcmZsb3ctd3JhcCcpOwogICAgICAgICAg
ICAgICAgICAgICAgICBlbC5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnd29yZC1icmVhaycpOwogICAg
ICAgICAgICAgICAgICAgICAgICBlbC5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgndGV4dC1kZWNvcmF0
aW9uLWxpbmUnKTsKICAgICAgICAgICAgICAgICAgICAgICAgZWwuc3R5bGUucmVtb3ZlUHJvcGVy
dHkoJ2JvcmRlci1yYWRpdXMnKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc1RhYmxl
KSBlbC5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnYm9yZGVyJyk7CiAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICghaXNMaXN0ICYmICFpc1RhYmxlKSBlbC5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnbWFy
Z2luJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNMaXN0ICYmICFpc1RhYmxlKSBl
bC5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgncGFkZGluZycpOwogICAgICAgICAgICAgICAgICAgICAg
ICBlbC5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnbGluZS1oZWlnaHQnKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKCFpc0xpc3QpIGVsLnN0eWxlLnJlbW92ZVByb3BlcnR5KCdkaXNwbGF5Jyk7
CiAgICAgICAgICAgICAgICAgICAgICAgIGVsLnN0eWxlLnJlbW92ZVByb3BlcnR5KCdtYXgtd2lk
dGgnKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc1RhYmxlKSBlbC5zdHlsZS5yZW1v
dmVQcm9wZXJ0eSgnd2lkdGgnKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgICAgLy8gY2xhc3MtIHVuZCBzdHlsZS1BdHRyaWJ1dGUgZXh0ZXJuZXIgU2VpdGVuIGVudGZl
cm5lbiB3ZW5uIHN0eWxlIGxlZXIKICAgICAgICAgICAgICAgICAgICAvLyBEUklWRS1pbnRlcm5l
IEtsYXNzZW4gKGRyaXZlLSopIGJlaWJlaGFsdGVuCiAgICAgICAgICAgICAgICAgICAgaWYgKGVs
LmdldEF0dHJpYnV0ZSgnY2xhc3MnKSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgY2xh
c3NlcyA9IGVsLmdldEF0dHJpYnV0ZSgnY2xhc3MnKS5zcGxpdCgnICcpLmZpbHRlcihmdW5jdGlv
bihjKSB7IHJldHVybiBjLnN0YXJ0c1dpdGgoJ2RyaXZlLScpOyB9KTsKICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKGNsYXNzZXMubGVuZ3RoID4gMCkgZWwuc2V0QXR0cmlidXRlKCdjbGFzcycs
IGNsYXNzZXMuam9pbignICcpKTsKICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBlbC5yZW1v
dmVBdHRyaWJ1dGUoJ2NsYXNzJyk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgICAgIGlmIChlbC5nZXRBdHRyaWJ1dGUoJ3N0eWxlJykgPT09ICcnKSBlbC5yZW1vdmVBdHRy
aWJ1dGUoJ3N0eWxlJyk7CiAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICAvLyBB
bGxlIExpbmtzIGF1ZiB0YXJnZXQ9X2JsYW5rIHNldHplbiAoUG9ydGFsIGRhcmYgbmljaHQgdmVy
bGFzc2VuIHdlcmRlbikKICAgICAgICAgICAgICAgIHBhcnNlZC5ib2R5LnF1ZXJ5U2VsZWN0b3JB
bGwoJ2FbaHJlZl0nKS5mb3JFYWNoKGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICAgICAgICB2
YXIgaHJlZiA9IChhLmdldEF0dHJpYnV0ZSgnaHJlZicpIHx8ICcnKS50cmltKCk7CiAgICAgICAg
ICAgICAgICAgICAgaWYgKGhyZWYuc3RhcnRzV2l0aCgnIycpKSByZXR1cm47CiAgICAgICAgICAg
ICAgICAgICAgYS5zZXRBdHRyaWJ1dGUoJ3RhcmdldCcsICdfYmxhbmsnKTsKICAgICAgICAgICAg
ICAgICAgICBhLnNldEF0dHJpYnV0ZSgncmVsJywgJ25vb3BlbmVyIG5vcmVmZXJyZXInKTsKICAg
ICAgICAgICAgICAgICAgICAvLyB0YXJnZXQ9X3NlbGYgZXhwbGl6aXQgZW50ZmVybmVuIGZhbGxz
IGdlc2V0enQKICAgICAgICAgICAgICAgICAgICBpZiAoYS5nZXRBdHRyaWJ1dGUoJ3RhcmdldCcp
ID09PSAnX3NlbGYnKSBhLnNldEF0dHJpYnV0ZSgndGFyZ2V0JywgJ19ibGFuaycpOwogICAgICAg
ICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgaWYgKGV4dGVybmFsSW1ncy5sZW5ndGggPiAw
ICYmIHRoaXMuY3VycmVudERvYyAmJiBEcml2ZUZTLmNvbm5lY3RlZCkgewogICAgICAgICAgICAg
ICAgICAgIC8vIEV4dGVybmUgQmlsZGVyIGhlcnVudGVybGFkZW4gdW5kIGxva2FsIHNwZWljaGVy
bgogICAgICAgICAgICAgICAgICAgIHRoaXMuX3Bhc3RlSHRtbFdpdGhFeHRlcm5hbEltYWdlcyhw
YXJzZWQuYm9keSwgZXh0ZXJuYWxJbWdzKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICAgICAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ2luc2VydEhUTUwnLCBmYWxzZSwg
cGFyc2VkLmJvZHkuaW5uZXJIVE1MKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBl
bHNlIGlmIChjbGlwVGV4dCkgewogICAgICAgICAgICAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQo
J2luc2VydFRleHQnLCBmYWxzZSwgY2xpcFRleHQpOwogICAgICAgICAgICB9CiAgICAgICAgfTsK
CiAgICAgICAgbGV0IHNhdmVUaW1lb3V0OwogICAgICAgIGVkaXRvcklucHV0Lm9uaW5wdXQgPSAo
KSA9PiB7CiAgICAgICAgICAgIGNsZWFyVGltZW91dChzYXZlVGltZW91dCk7CiAgICAgICAgICAg
IHNhdmVUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB0aGlzLnNhdmVTdGF0ZSgpLCA1MDApOwog
ICAgICAgIH07CgogICAgICAgIGVkaXRvcklucHV0Lm9ua2V5ZG93biA9IChlKSA9PiB7CiAgICAg
ICAgICAgIC8vICMtUmVmZXJlbnogRHJvcGRvd24gc2NobGllc3NlbiBiZWkgRXNjYXBlCiAgICAg
ICAgICAgIGlmIChlLmtleSA9PT0gJ0VzY2FwZScgJiYgdGhpcy5feHJlZlZpc2libGUpIHsKICAg
ICAgICAgICAgICAgIHRoaXMuY2xvc2VYcmVmRHJvcGRvd24oKTsKICAgICAgICAgICAgICAgIGUu
cHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQog
ICAgICAgICAgICBpZiAoKGUuY3RybEtleSB8fCBlLm1ldGFLZXkpICYmIGUua2V5ID09PSAneicg
JiYgIWUuc2hpZnRLZXkpIHsKICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAg
ICAgICAgICAgICAgIHRoaXMudW5kbygpOwogICAgICAgICAgICB9IGVsc2UgaWYgKChlLmN0cmxL
ZXkgfHwgZS5tZXRhS2V5KSAmJiAoZS5rZXkgPT09ICd5JyB8fCAoZS5rZXkgPT09ICd6JyAmJiBl
LnNoaWZ0S2V5KSkpIHsKICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAg
ICAgICAgICAgIHRoaXMucmVkbygpOwogICAgICAgICAgICB9IGVsc2UgaWYgKGUua2V5ID09PSAn
IycgJiYgIWUuY3RybEtleSAmJiAhZS5tZXRhS2V5KSB7CiAgICAgICAgICAgICAgICAvLyAjLVRy
aWdnZXI6IEFydGlrZWwtUmVmZXJlbnotRHJvcGRvd24gw7ZmZm5lbgogICAgICAgICAgICAgICAg
c2V0VGltZW91dCgoKSA9PiB0aGlzLm9wZW5YcmVmRHJvcGRvd24oKSwgMTApOwogICAgICAgICAg
ICB9IGVsc2UgaWYgKGUua2V5ID09PSAnRW50ZXInKSB7CiAgICAgICAgICAgICAgICBlLnByZXZl
bnREZWZhdWx0KCk7CiAgICAgICAgICAgICAgICBjb25zdCBzZWwgPSB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCk7CiAgICAgICAgICAgICAgICBpZiAoIXNlbC5yYW5nZUNvdW50KSByZXR1cm47CiAgICAg
ICAgICAgICAgICBjb25zdCByYW5nZSA9IHNlbC5nZXRSYW5nZUF0KDApOwogICAgICAgICAgICAg
ICAgcmFuZ2UuZGVsZXRlQ29udGVudHMoKTsKCiAgICAgICAgICAgICAgICAvLyBCbG9jay1Lb250
ZXh0IGVybWl0dGVsbgogICAgICAgICAgICAgICAgbGV0IGJsb2NrID0gcmFuZ2Uuc3RhcnRDb250
YWluZXI7CiAgICAgICAgICAgICAgICB3aGlsZSAoYmxvY2sgJiYgYmxvY2sgIT09IGlucHV0ICYm
ICFbJ1AnLCdESVYnLCdIMScsJ0gyJywnSDMnLCdINCcsJ0g1JywnSDYnLCdMSSddLmluY2x1ZGVz
KGJsb2NrLm5vZGVOYW1lKSkgewogICAgICAgICAgICAgICAgICAgIGJsb2NrID0gYmxvY2sucGFy
ZW50Tm9kZTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoYmxvY2sgJiYg
WydIMScsJ0gyJywnSDMnLCdINCcsJ0g1JywnSDYnXS5pbmNsdWRlcyhibG9jay5ub2RlTmFtZSkp
IHsKICAgICAgICAgICAgICAgICAgICAvLyBJbiBIZWFkaW5nOiBDdXJzb3IgYW0gRW5kZT8gLT4g
bmV1ZXIgPHA+IG5hY2ggSGVhZGluZwogICAgICAgICAgICAgICAgICAgIGNvbnN0IGFmdGVyUmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwogICAgICAgICAgICAgICAgICAgIGFmdGVyUmFu
Z2Uuc2VsZWN0Tm9kZUNvbnRlbnRzKGJsb2NrKTsKICAgICAgICAgICAgICAgICAgICBhZnRlclJh
bmdlLnNldFN0YXJ0KHJhbmdlLmVuZENvbnRhaW5lciwgcmFuZ2UuZW5kT2Zmc2V0KTsKICAgICAg
ICAgICAgICAgICAgICBjb25zdCB0cmFpbGluZyA9IGFmdGVyUmFuZ2UuY2xvbmVDb250ZW50cygp
LnRleHRDb250ZW50OwogICAgICAgICAgICAgICAgICAgIGlmICghdHJhaWxpbmcudHJpbSgpKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEN1cnNvciBhbSBFbmRlIGRlcyBIZWFkaW5ncyAt
PiBuZXVlciBBYnNhdHoKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ3AnKTsKICAgICAgICAgICAgICAgICAgICAgICAgcC5pbm5lckhUTUwg
PSAnPGJyPic7CiAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLnBhcmVudE5vZGUuaW5zZXJ0
QmVmb3JlKHAsIGJsb2NrLm5leHRTaWJsaW5nKTsKICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgbmV3UmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwogICAgICAgICAgICAgICAgICAg
ICAgICBuZXdSYW5nZS5zZXRTdGFydChwLCAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgbmV3
UmFuZ2UuY29sbGFwc2UodHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHNlbC5yZW1vdmVB
bGxSYW5nZXMoKTsKICAgICAgICAgICAgICAgICAgICAgICAgc2VsLmFkZFJhbmdlKG5ld1Jhbmdl
KTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAv
LyBDdXJzb3IgbWl0dGVuIGltIEhlYWRpbmcgLT4gSGVhZGluZyB0ZWlsZW4sIFJlc3QgaW4gPHA+
CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3RGcmFnID0gYWZ0ZXJSYW5nZS5leHRy
YWN0Q29udGVudHMoKTsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ3AnKTsKICAgICAgICAgICAgICAgICAgICAgICAgcC5hcHBlbmRDaGls
ZChyZXN0RnJhZyk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcC50ZXh0Q29udGVudC50
cmltKCkgJiYgIXAucXVlcnlTZWxlY3RvcignaW1nLGJyJykpIHAuaW5uZXJIVE1MID0gJzxicj4n
OwogICAgICAgICAgICAgICAgICAgICAgICBibG9jay5wYXJlbnROb2RlLmluc2VydEJlZm9yZShw
LCBibG9jay5uZXh0U2libGluZyk7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld1Jh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKICAgICAgICAgICAgICAgICAgICAgICAgbmV3
UmFuZ2Uuc2V0U3RhcnQocCwgMCk7CiAgICAgICAgICAgICAgICAgICAgICAgIG5ld1JhbmdlLmNv
bGxhcHNlKHRydWUpOwogICAgICAgICAgICAgICAgICAgICAgICBzZWwucmVtb3ZlQWxsUmFuZ2Vz
KCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHNlbC5hZGRSYW5nZShuZXdSYW5nZSk7CiAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSBlbHNlIGlmIChibG9jayAmJiBibG9j
ay5ub2RlTmFtZSA9PT0gJ0xJJykgewogICAgICAgICAgICAgICAgICAgIC8vIEluIExpc3RlbmVs
ZW1lbnQ6IGxlZXJlcyBMSSAtPiBMaXN0ZSB2ZXJsYXNzZW4KICAgICAgICAgICAgICAgICAgICBp
ZiAoIWJsb2NrLnRleHRDb250ZW50LnRyaW0oKSAmJiAhYmxvY2sucXVlcnlTZWxlY3RvcignaW1n
JykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGlzdCA9IGJsb2NrLnBhcmVudE5v
ZGU7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHAgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdwJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIHAuaW5uZXJIVE1MID0gJzxicj4nOwog
ICAgICAgICAgICAgICAgICAgICAgICBsaXN0LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHAsIGxp
c3QubmV4dFNpYmxpbmcpOwogICAgICAgICAgICAgICAgICAgICAgICBibG9jay5yZW1vdmUoKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxpc3QucXVlcnlTZWxlY3RvckFsbCgnbGknKS5s
ZW5ndGggPT09IDApIGxpc3QucmVtb3ZlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IG5ld1JhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgbmV3UmFuZ2Uuc2V0U3RhcnQocCwgMCk7CiAgICAgICAgICAgICAgICAgICAgICAgIG5ld1Jh
bmdlLmNvbGxhcHNlKHRydWUpOwogICAgICAgICAgICAgICAgICAgICAgICBzZWwucmVtb3ZlQWxs
UmFuZ2VzKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHNlbC5hZGRSYW5nZShuZXdSYW5nZSk7
CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy8g
TmV1ZXMgTEkgZWluZnVlZ2VuCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld0xpID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGknKTsKICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgYWZ0ZXJSYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CiAgICAgICAgICAgICAgICAg
ICAgICAgIGFmdGVyUmFuZ2Uuc2VsZWN0Tm9kZUNvbnRlbnRzKGJsb2NrKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgYWZ0ZXJSYW5nZS5zZXRTdGFydChyYW5nZS5lbmRDb250YWluZXIsIHJhbmdl
LmVuZE9mZnNldCk7CiAgICAgICAgICAgICAgICAgICAgICAgIG5ld0xpLmFwcGVuZENoaWxkKGFm
dGVyUmFuZ2UuZXh0cmFjdENvbnRlbnRzKCkpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAo
IW5ld0xpLnRleHRDb250ZW50LnRyaW0oKSAmJiAhbmV3TGkucXVlcnlTZWxlY3RvcignaW1nLGJy
JykpIG5ld0xpLmlubmVySFRNTCA9ICc8YnI+JzsKICAgICAgICAgICAgICAgICAgICAgICAgYmxv
Y2sucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUobmV3TGksIGJsb2NrLm5leHRTaWJsaW5nKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3UmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOwogICAgICAgICAgICAgICAgICAgICAgICBuZXdSYW5nZS5zZXRTdGFydChuZXdMaSwgMCk7
CiAgICAgICAgICAgICAgICAgICAgICAgIG5ld1JhbmdlLmNvbGxhcHNlKHRydWUpOwogICAgICAg
ICAgICAgICAgICAgICAgICBzZWwucmVtb3ZlQWxsUmFuZ2VzKCk7CiAgICAgICAgICAgICAgICAg
ICAgICAgIHNlbC5hZGRSYW5nZShuZXdSYW5nZSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAvLyBOb3JtYWxlciBUZXh0
OiA8YnI+IGVpbmZ1ZWdlbiAoU29mdC1CcmVhaykKICAgICAgICAgICAgICAgICAgICBjb25zdCBi
ciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2JyJyk7CiAgICAgICAgICAgICAgICAgICAgcmFu
Z2UuaW5zZXJ0Tm9kZShicik7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGV4dCA9IGRvY3Vt
ZW50LmNyZWF0ZVRleHROb2RlKCdcdTIwMEInKTsKICAgICAgICAgICAgICAgICAgICByYW5nZS5z
ZXRTdGFydEFmdGVyKGJyKTsKICAgICAgICAgICAgICAgICAgICByYW5nZS5pbnNlcnROb2RlKHRl
eHQpOwogICAgICAgICAgICAgICAgICAgIHJhbmdlLnNldFN0YXJ0QWZ0ZXIodGV4dCk7CiAgICAg
ICAgICAgICAgICAgICAgcmFuZ2UuY29sbGFwc2UodHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAg
c2VsLnJlbW92ZUFsbFJhbmdlcygpOwogICAgICAgICAgICAgICAgICAgIHNlbC5hZGRSYW5nZShy
YW5nZSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgfSwK
CiAgICBzYXZlU3RhdGUoKSB7CiAgICAgICAgaWYgKHRoaXMuaXNSZXN0b3JpbmcpIHJldHVybjsK
ICAgICAgICBjb25zdCBlZGl0b3JJbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdlZGl0
b3JJbnB1dCcpOwogICAgICAgIGlmICghZWRpdG9ySW5wdXQpIHJldHVybjsKICAgICAgICBpZiAo
dGhpcy5oaXN0b3J5SW5kZXggPCB0aGlzLmhpc3RvcnkubGVuZ3RoIC0gMSkgewogICAgICAgICAg
ICB0aGlzLmhpc3RvcnkgPSB0aGlzLmhpc3Rvcnkuc2xpY2UoMCwgdGhpcy5oaXN0b3J5SW5kZXgg
KyAxKTsKICAgICAgICB9CiAgICAgICAgdGhpcy5oaXN0b3J5LnB1c2goZWRpdG9ySW5wdXQuaW5u
ZXJIVE1MKTsKICAgICAgICB0aGlzLmhpc3RvcnlJbmRleCsrOwogICAgICAgIGlmICh0aGlzLmhp
c3RvcnkubGVuZ3RoID4gNTApIHsgdGhpcy5oaXN0b3J5LnNoaWZ0KCk7IHRoaXMuaGlzdG9yeUlu
ZGV4LS07IH0KICAgIH0sCgogICAgdW5kbygpIHsKICAgICAgICBpZiAodGhpcy5oaXN0b3J5SW5k
ZXggPiAwKSB7CiAgICAgICAgICAgIHRoaXMuaGlzdG9yeUluZGV4LS07CiAgICAgICAgICAgIHRo
aXMuaXNSZXN0b3JpbmcgPSB0cnVlOwogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnZWRpdG9ySW5wdXQnKS5pbm5lckhUTUwgPSB0aGlzLmhpc3RvcnlbdGhpcy5oaXN0b3J5SW5k
ZXhdOwogICAgICAgICAgICB0aGlzLmlzUmVzdG9yaW5nID0gZmFsc2U7CiAgICAgICAgfQogICAg
fSwKCiAgICByZWRvKCkgewogICAgICAgIGlmICh0aGlzLmhpc3RvcnlJbmRleCA8IHRoaXMuaGlz
dG9yeS5sZW5ndGggLSAxKSB7CiAgICAgICAgICAgIHRoaXMuaGlzdG9yeUluZGV4Kys7CiAgICAg
ICAgICAgIHRoaXMuaXNSZXN0b3JpbmcgPSB0cnVlOwogICAgICAgICAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnZWRpdG9ySW5wdXQnKS5pbm5lckhUTUwgPSB0aGlzLmhpc3RvcnlbdGhpcy5o
aXN0b3J5SW5kZXhdOwogICAgICAgICAgICB0aGlzLmlzUmVzdG9yaW5nID0gZmFsc2U7CiAgICAg
ICAgfQogICAgfSwKCiAgICAvLyA9PT0gQXJ0aWtlbC1SZWZlcmVueiAoIy1BdXRvY29tcGxldGUp
ID09PQogICAgX3hyZWZWaXNpYmxlOiBmYWxzZSwKICAgIF94cmVmUmFuZ2U6IG51bGwsCiAgICBf
eHJlZlNlbGVjdGVkRG9jOiBudWxsLAoKICAgIG9wZW5YcmVmRHJvcGRvd24oKSB7CiAgICAgICAg
Ly8gQ3Vyc29yLVBvc2l0aW9uIG1lcmtlbiAoZGFzICMgd3VyZGUgZ2VyYWRlIGdldGlwcHQpCiAg
ICAgICAgdmFyIHNlbCA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKICAgICAgICBpZiAoIXNlbC5y
YW5nZUNvdW50KSByZXR1cm47CiAgICAgICAgdGhpcy5feHJlZlJhbmdlID0gc2VsLmdldFJhbmdl
QXQoMCkuY2xvbmVSYW5nZSgpOwoKICAgICAgICB2YXIgZHJvcGRvd24gPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgneHJlZkRyb3Bkb3duJyk7CiAgICAgICAgdmFyIGlucHV0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ3hyZWZTZWFyY2hJbnB1dCcpOwoKICAgICAgICAvLyBQb3NpdGlvbjog
dW50ZXIgZGVtIEN1cnNvcgogICAgICAgIHZhciByZWN0ID0gdGhpcy5feHJlZlJhbmdlLmdldEJv
dW5kaW5nQ2xpZW50UmVjdCgpOwogICAgICAgIHZhciBsZWZ0ID0gcmVjdC5sZWZ0OwogICAgICAg
IHZhciB0b3AgPSByZWN0LmJvdHRvbSArIDQ7CiAgICAgICAgaWYgKGxlZnQgKyAzODAgPiB3aW5k
b3cuaW5uZXJXaWR0aCkgbGVmdCA9IHdpbmRvdy5pbm5lcldpZHRoIC0gMzkwOwogICAgICAgIGlm
ICh0b3AgKyAzNjAgPiB3aW5kb3cuaW5uZXJIZWlnaHQpIHRvcCA9IHJlY3QudG9wIC0gMzY0Owog
ICAgICAgIGRyb3Bkb3duLnN0eWxlLmxlZnQgPSBNYXRoLm1heCgxMCwgbGVmdCkgKyAncHgnOwog
ICAgICAgIGRyb3Bkb3duLnN0eWxlLnRvcCA9IE1hdGgubWF4KDEwLCB0b3ApICsgJ3B4JzsKCiAg
ICAgICAgdGhpcy5feHJlZlNlbGVjdGVkRG9jID0gbnVsbDsKICAgICAgICBpbnB1dC52YWx1ZSA9
ICcnOwogICAgICAgIHRoaXMuX3JlbmRlclhyZWZBcnRpY2xlcygnJyk7CiAgICAgICAgZHJvcGRv
d24uY2xhc3NMaXN0LmFkZCgndmlzaWJsZScpOwogICAgICAgIHRoaXMuX3hyZWZWaXNpYmxlID0g
dHJ1ZTsKICAgICAgICBzZXRUaW1lb3V0KCgpID0+IGlucHV0LmZvY3VzKCksIDMwKTsKCiAgICAg
ICAgLy8gRWluZ2FiZS1IYW5kbGVyCiAgICAgICAgaW5wdXQub25pbnB1dCA9ICgpID0+IHsKICAg
ICAgICAgICAgaWYgKHRoaXMuX3hyZWZTZWxlY3RlZERvYykgewogICAgICAgICAgICAgICAgdGhp
cy5fcmVuZGVyWHJlZkhlYWRpbmdzKHRoaXMuX3hyZWZTZWxlY3RlZERvYywgaW5wdXQudmFsdWUp
OwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgdGhpcy5fcmVuZGVyWHJlZkFy
dGljbGVzKGlucHV0LnZhbHVlKTsKICAgICAgICAgICAgfQogICAgICAgIH07CiAgICAgICAgaW5w
dXQub25rZXlkb3duID0gKGUpID0+IHsKICAgICAgICAgICAgaWYgKGUua2V5ID09PSAnRXNjYXBl
JykgeyB0aGlzLmNsb3NlWHJlZkRyb3Bkb3duKCk7IGUucHJldmVudERlZmF1bHQoKTsgfQogICAg
ICAgIH07CgogICAgICAgIC8vIENsaWNrLU91dHNpZGUgc2NobGllc3NlbgogICAgICAgIHNldFRp
bWVvdXQoKCkgPT4gewogICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3Vz
ZWRvd24nLCB0aGlzLl94cmVmT3V0c2lkZUhhbmRsZXIgPSAoZSkgPT4gewogICAgICAgICAgICAg
ICAgaWYgKCFkcm9wZG93bi5jb250YWlucyhlLnRhcmdldCkpIHRoaXMuY2xvc2VYcmVmRHJvcGRv
d24oKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfSwgNTApOwogICAgfSwKCiAgICBjbG9zZVhy
ZWZEcm9wZG93bigpIHsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgneHJlZkRyb3Bk
b3duJykuY2xhc3NMaXN0LnJlbW92ZSgndmlzaWJsZScpOwogICAgICAgIHRoaXMuX3hyZWZWaXNp
YmxlID0gZmFsc2U7CiAgICAgICAgdGhpcy5feHJlZlNlbGVjdGVkRG9jID0gbnVsbDsKICAgICAg
ICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCB0aGlzLl94cmVmT3V0
c2lkZUhhbmRsZXIpOwogICAgICAgIC8vIEZva3VzIHp1csO8Y2sgenVtIEVkaXRvcgogICAgICAg
IHZhciBlZGl0b3IgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZWRpdG9ySW5wdXQnKTsKICAg
ICAgICBpZiAoZWRpdG9yKSBlZGl0b3IuZm9jdXMoKTsKICAgIH0sCgogICAgX3JlbmRlclhyZWZB
cnRpY2xlcyhxdWVyeSkgewogICAgICAgIHZhciBsaXN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ3hyZWZMaXN0Jyk7CiAgICAgICAgdmFyIHEgPSBxdWVyeS50b0xvd2VyQ2FzZSgpLnRyaW0o
KTsKICAgICAgICB2YXIgZG9jcyA9IERyaXZlRlMuZG9jdW1lbnRzLmZpbHRlcihmdW5jdGlvbihk
KSB7CiAgICAgICAgICAgIGlmIChEcml2ZUVkaXRvci5jdXJyZW50RG9jICYmIGQuaWQgPT09IERy
aXZlRWRpdG9yLmN1cnJlbnREb2MuaWQpIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgaWYgKCFx
KSByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgcmV0dXJuIChkLnRpdGVsICYmIGQudGl0ZWwudG9M
b3dlckNhc2UoKS5pbmNsdWRlcyhxKSkgfHwKICAgICAgICAgICAgICAgICAgIChkLmthdGVnb3Jp
ZSAmJiBkLmthdGVnb3JpZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHEpKSB8fAogICAgICAgICAg
ICAgICAgICAgKGQuc2NobGFnd29lcnRlciAmJiBkLnNjaGxhZ3dvZXJ0ZXIuc29tZShmdW5jdGlv
bihrKSB7IHJldHVybiBrLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMocSk7IH0pKTsKICAgICAgICB9
KS5zbGljZSgwLCAyMCk7CgogICAgICAgIGlmIChkb2NzLmxlbmd0aCA9PT0gMCkgewogICAgICAg
ICAgICBsaXN0LmlubmVySFRNTCA9ICc8ZGl2IHN0eWxlPSJwYWRkaW5nOjE2cHg7dGV4dC1hbGln
bjpjZW50ZXI7Y29sb3I6dmFyKC0tdGV4dC1tdXRlZCk7Zm9udC1zaXplOjEzcHg7Ij5LZWluZSBB
cnRpa2VsIGdlZnVuZGVuPC9kaXY+JzsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAg
ICAgICAgbGlzdC5pbm5lckhUTUwgPSBkb2NzLm1hcChmdW5jdGlvbihkKSB7CiAgICAgICAgICAg
IHJldHVybiAnPGRpdiBjbGFzcz0ieHJlZi1pdGVtIiBvbmNsaWNrPSJEcml2ZUVkaXRvci5zZWxl
Y3RYcmVmQXJ0aWNsZShcJycgKyBEcml2ZVBvcnRhbC5lc2NhcGVBdHRyKGQuaWQpICsgJ1wnKSI+
JyArCiAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0ieHJlZi10aXRsZSI+JyArIERyaXZlUG9y
dGFsLmVzY2FwZUhUTUwoZC50aXRlbCkgKyAnPC9kaXY+JyArCiAgICAgICAgICAgICAgICAnPGRp
diBjbGFzcz0ieHJlZi1jYXQiPicgKyBEcml2ZVBvcnRhbC5lc2NhcGVIVE1MKGQua2F0ZWdvcmll
KSArCiAgICAgICAgICAgICAgICAoZC5zY2hsYWd3b2VydGVyICYmIGQuc2NobGFnd29lcnRlci5s
ZW5ndGggPyAnIMK3ICcgKyBkLnNjaGxhZ3dvZXJ0ZXIuc2xpY2UoMCwgMykuam9pbignLCAnKSA6
ICcnKSArCiAgICAgICAgICAgICAgICAnPC9kaXY+PC9kaXY+JzsKICAgICAgICB9KS5qb2luKCcn
KTsKICAgIH0sCgogICAgc2VsZWN0WHJlZkFydGljbGUoZG9jSWQpIHsKICAgICAgICB2YXIgZG9j
ID0gRHJpdmVGUy5kb2N1bWVudHMuZmluZChmdW5jdGlvbihkKSB7IHJldHVybiBkLmlkID09PSBk
b2NJZDsgfSk7CiAgICAgICAgaWYgKCFkb2MpIHJldHVybjsKICAgICAgICB0aGlzLl94cmVmU2Vs
ZWN0ZWREb2MgPSBkb2M7CgogICAgICAgIHZhciBpbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCd4cmVmU2VhcmNoSW5wdXQnKTsKICAgICAgICBpbnB1dC52YWx1ZSA9ICcnOwogICAgICAg
IGlucHV0LnBsYWNlaG9sZGVyID0gJ8OcYmVyc2NocmlmdCBzdWNoZW4gKG9kZXIgbGVlciBsYXNz
ZW4gZsO8ciBBcnRpa2VsLUxpbmspLi4uJzsKCiAgICAgICAgdGhpcy5fcmVuZGVyWHJlZkhlYWRp
bmdzKGRvYywgJycpOwogICAgICAgIGlucHV0LmZvY3VzKCk7CiAgICB9LAoKICAgIF9leHRyYWN0
SGVhZGluZ3MoaHRtbENvbnRlbnQpIHsKICAgICAgICBpZiAoIWh0bWxDb250ZW50KSByZXR1cm4g
W107CiAgICAgICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAg
ICAgIGRpdi5pbm5lckhUTUwgPSBodG1sQ29udGVudDsKICAgICAgICB2YXIgaGVhZGluZ3MgPSBb
XTsKICAgICAgICBkaXYucXVlcnlTZWxlY3RvckFsbCgnaDEsIGgyLCBoMywgaDQnKS5mb3JFYWNo
KGZ1bmN0aW9uKGgpIHsKICAgICAgICAgICAgdmFyIHRleHQgPSBoLnRleHRDb250ZW50LnRyaW0o
KTsKICAgICAgICAgICAgaWYgKHRleHQpIHsKICAgICAgICAgICAgICAgIHZhciBzbHVnID0gdGV4
dC50b0xvd2VyQ2FzZSgpCiAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoL8OkL2csICdhZScp
LnJlcGxhY2UoL8O2L2csICdvZScpLnJlcGxhY2UoL8O8L2csICd1ZScpLnJlcGxhY2UoL8OfL2cs
ICdzcycpCiAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoL1teYS16MC05XSsvZywgJy0nKS5y
ZXBsYWNlKC9eLXwtJC9nLCAnJyk7CiAgICAgICAgICAgICAgICBoZWFkaW5ncy5wdXNoKHsKICAg
ICAgICAgICAgICAgICAgICB0ZXh0OiB0ZXh0LAogICAgICAgICAgICAgICAgICAgIGxldmVsOiBw
YXJzZUludChoLnRhZ05hbWUuY2hhckF0KDEpKSwKICAgICAgICAgICAgICAgICAgICBzbHVnOiBz
bHVnCiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgICAg
IHJldHVybiBoZWFkaW5nczsKICAgIH0sCgogICAgX3JlbmRlclhyZWZIZWFkaW5ncyhkb2MsIHF1
ZXJ5KSB7CiAgICAgICAgdmFyIGxpc3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgneHJlZkxp
c3QnKTsKICAgICAgICB2YXIgaGVhZGluZ3MgPSB0aGlzLl9leHRyYWN0SGVhZGluZ3MoZG9jLmlu
aGFsdCk7CiAgICAgICAgdmFyIHEgPSBxdWVyeS50b0xvd2VyQ2FzZSgpLnRyaW0oKTsKCiAgICAg
ICAgLy8gWnVyw7xjay1CdXR0b24gKyBBcnRpa2VsLUxpbmsgKG9obmUgw5xiZXJzY2hyaWZ0KQog
ICAgICAgIHZhciBodG1sID0gJzxkaXYgY2xhc3M9InhyZWYtYmFjayIgb25jbGljaz0iRHJpdmVF
ZGl0b3IuX3hyZWZTZWxlY3RlZERvYz1udWxsO2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwneHJl
ZlNlYXJjaElucHV0XCcpLnBsYWNlaG9sZGVyPVwnQXJ0aWtlbCBzdWNoZW4uLi5cJztEcml2ZUVk
aXRvci5fcmVuZGVyWHJlZkFydGljbGVzKFwnXCcpOyI+4oaQIFp1csO8Y2sgenVyIEFydGlrZWxs
aXN0ZTwvZGl2Pic7CiAgICAgICAgaHRtbCArPSAnPGRpdiBjbGFzcz0ieHJlZi1pdGVtIiBvbmNs
aWNrPSJEcml2ZUVkaXRvci5pbnNlcnRYcmVmKFwnJyArIERyaXZlUG9ydGFsLmVzY2FwZUF0dHIo
ZG9jLmlkKSArICdcJywgXCdcJykiPicgKwogICAgICAgICAgICAnPGRpdiBjbGFzcz0ieHJlZi10
aXRsZSI+JyArIERyaXZlUG9ydGFsLmVzY2FwZUhUTUwoZG9jLnRpdGVsKSArICc8L2Rpdj4nICsK
ICAgICAgICAgICAgJzxkaXYgY2xhc3M9InhyZWYtY2F0Ij5HZXNhbXRlbiBBcnRpa2VsIHZlcmxp
bmtlbjwvZGl2PjwvZGl2Pic7CgogICAgICAgIHZhciBmaWx0ZXJlZCA9IGhlYWRpbmdzLmZpbHRl
cihmdW5jdGlvbihoKSB7CiAgICAgICAgICAgIHJldHVybiAhcSB8fCBoLnRleHQudG9Mb3dlckNh
c2UoKS5pbmNsdWRlcyhxKTsKICAgICAgICB9KTsKCiAgICAgICAgZmlsdGVyZWQuZm9yRWFjaChm
dW5jdGlvbihoKSB7CiAgICAgICAgICAgIHZhciBpbmRlbnQgPSAoaC5sZXZlbCAtIDEpICogMTI7
CiAgICAgICAgICAgIGh0bWwgKz0gJzxkaXYgY2xhc3M9InhyZWYtaXRlbSBoZWFkaW5nIiBzdHls
ZT0icGFkZGluZy1sZWZ0OicgKyAoMTYgKyBpbmRlbnQpICsgJ3B4OyIgb25jbGljaz0iRHJpdmVF
ZGl0b3IuaW5zZXJ0WHJlZihcJycgKyBEcml2ZVBvcnRhbC5lc2NhcGVBdHRyKGRvYy5pZCkgKyAn
XCcsIFwnJyArIERyaXZlUG9ydGFsLmVzY2FwZUF0dHIoaC5zbHVnKSArICdcJykiPicgKwogICAg
ICAgICAgICAgICAgJzxkaXYgY2xhc3M9InhyZWYtdGl0bGUiPicgKyBEcml2ZVBvcnRhbC5lc2Nh
cGVIVE1MKGgudGV4dCkgKyAnPC9kaXY+PC9kaXY+JzsKICAgICAgICB9KTsKCiAgICAgICAgaWYg
KGhlYWRpbmdzLmxlbmd0aCA9PT0gMCkgewogICAgICAgICAgICBodG1sICs9ICc8ZGl2IHN0eWxl
PSJwYWRkaW5nOjEycHggMTZweDtmb250LXNpemU6MTJweDtjb2xvcjp2YXIoLS10ZXh0LW11dGVk
KTsiPktlaW5lIMOcYmVyc2NocmlmdGVuIGltIEFydGlrZWwgdm9yaGFuZGVuPC9kaXY+JzsKICAg
ICAgICB9CgogICAgICAgIGxpc3QuaW5uZXJIVE1MID0gaHRtbDsKICAgIH0sCgogICAgaW5zZXJ0
WHJlZihkb2NJZCwgaGVhZGluZ1NsdWcpIHsKICAgICAgICB2YXIgZG9jID0gRHJpdmVGUy5kb2N1
bWVudHMuZmluZChmdW5jdGlvbihkKSB7IHJldHVybiBkLmlkID09PSBkb2NJZDsgfSk7CiAgICAg
ICAgaWYgKCFkb2MpIHJldHVybjsKCiAgICAgICAgdGhpcy5jbG9zZVhyZWZEcm9wZG93bigpOwoK
ICAgICAgICAvLyBEYXMgIyBlbnRmZXJuZW4gZGFzIGRlbiBEcm9wZG93biBnZXRyaWdnZXJ0IGhh
dAogICAgICAgIHZhciBlZGl0b3IgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZWRpdG9ySW5w
dXQnKTsKICAgICAgICB2YXIgc2VsID0gd2luZG93LmdldFNlbGVjdGlvbigpOwoKICAgICAgICAv
LyBDdXJzb3ItUG9zaXRpb24gd2llZGVyaGVyc3RlbGxlbgogICAgICAgIGlmICh0aGlzLl94cmVm
UmFuZ2UpIHsKICAgICAgICAgICAgc2VsLnJlbW92ZUFsbFJhbmdlcygpOwogICAgICAgICAgICBz
ZWwuYWRkUmFuZ2UodGhpcy5feHJlZlJhbmdlKTsKICAgICAgICB9CgogICAgICAgIC8vIEVpbiBa
ZWljaGVuIHp1csO8Y2sgKGRhcyAjKSBsw7ZzY2hlbgogICAgICAgIGlmIChzZWwucmFuZ2VDb3Vu
dCkgewogICAgICAgICAgICB2YXIgcmFuZ2UgPSBzZWwuZ2V0UmFuZ2VBdCgwKTsKICAgICAgICAg
ICAgcmFuZ2Uuc2V0U3RhcnQocmFuZ2Uuc3RhcnRDb250YWluZXIsIE1hdGgubWF4KDAsIHJhbmdl
LnN0YXJ0T2Zmc2V0IC0gMSkpOwogICAgICAgICAgICByYW5nZS5kZWxldGVDb250ZW50cygpOwog
ICAgICAgIH0KCiAgICAgICAgLy8gQ3Jvc3NsaW5rLUVsZW1lbnQgZWluZsO8Z2VuCiAgICAgICAg
dmFyIGFuY2hvciA9IGhlYWRpbmdTbHVnID8gZG9jSWQgKyAnIycgKyBoZWFkaW5nU2x1ZyA6IGRv
Y0lkOwogICAgICAgIHZhciBsYWJlbCA9IGRvYy50aXRlbDsKICAgICAgICBpZiAoaGVhZGluZ1Ns
dWcpIHsKICAgICAgICAgICAgdmFyIGhlYWRpbmdzID0gdGhpcy5fZXh0cmFjdEhlYWRpbmdzKGRv
Yy5pbmhhbHQpOwogICAgICAgICAgICB2YXIgbWF0Y2ggPSBoZWFkaW5ncy5maW5kKGZ1bmN0aW9u
KGgpIHsgcmV0dXJuIGguc2x1ZyA9PT0gaGVhZGluZ1NsdWc7IH0pOwogICAgICAgICAgICBpZiAo
bWF0Y2gpIGxhYmVsID0gZG9jLnRpdGVsICsgJyDihpIgJyArIG1hdGNoLnRleHQ7CiAgICAgICAg
fQoKICAgICAgICB2YXIgeHJlZkh0bWwgPSAnPHNwYW4gY2xhc3M9ImRyaXZlLXhyZWYiIGRhdGEt
eHJlZi10YXJnZXQ9IicgKyBEcml2ZVBvcnRhbC5lc2NhcGVBdHRyKGFuY2hvcikgKyAnIiBjb250
ZW50ZWRpdGFibGU9ImZhbHNlIj4nICsgRHJpdmVQb3J0YWwuZXNjYXBlSFRNTChsYWJlbCkgKyAn
PC9zcGFuPiZuYnNwOyc7CgogICAgICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCdpbnNlcnRIVE1M
JywgZmFsc2UsIHhyZWZIdG1sKTsKICAgICAgICB0aGlzLnNhdmVTdGF0ZSgpOwogICAgfSwKCiAg
ICAvLyAtLS0gQWNjb3JkaW9uIChBdWZrbGFwcGJhcmVyIFRleHRiZXJlaWNoKSAtLS0KICAgIF9h
Y2NDb3VudGVyOiAwLAoKICAgIGluc2VydEFjY29yZGlvbigpIHsKICAgICAgICB2YXIgc2VsID0g
d2luZG93LmdldFNlbGVjdGlvbigpOwogICAgICAgIHRoaXMuX2FjY1JhbmdlID0gKHNlbCAmJiBz
ZWwucmFuZ2VDb3VudCkgPyBzZWwuZ2V0UmFuZ2VBdCgwKS5jbG9uZVJhbmdlKCkgOiBudWxsOwog
ICAgICAgIHRoaXMuX2FjY0NvdW50ZXIgPSAxOwogICAgICAgIHZhciBpbnB1dFN0eWxlID0gJ3dp
ZHRoOjEwMCU7cGFkZGluZzo2cHggMTBweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlci1j
b2xvcik7Ym9yZGVyLXJhZGl1czo0cHg7Zm9udC1zaXplOjEzcHg7YmFja2dyb3VuZDp2YXIoLS1i
Zy1pbnB1dCk7Y29sb3I6dmFyKC0tdGV4dC1wcmltYXJ5KTsnOwoKICAgICAgICB2YXIgbW9kYWwg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgICAgICBtb2RhbC5zdHlsZS5jc3NU
ZXh0ID0gJ3Bvc2l0aW9uOmZpeGVkO3RvcDowO2xlZnQ6MDt3aWR0aDoxMDAlO2hlaWdodDoxMDAl
O2JhY2tncm91bmQ6cmdiYSgwLDAsMCwwLjUpO3otaW5kZXg6MTA1MDA7ZGlzcGxheTpmbGV4O2Fs
aWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyOyc7CiAgICAgICAgbW9kYWwu
b25jbGljayA9IGZ1bmN0aW9uKGUpIHsgaWYgKGUudGFyZ2V0ID09PSBtb2RhbCkgbW9kYWwucmVt
b3ZlKCk7IH07CiAgICAgICAgbW9kYWwuaW5uZXJIVE1MID0KICAgICAgICAgICAgJzxkaXYgc3R5
bGU9ImJhY2tncm91bmQ6dmFyKC0tYmctY2FyZCk7Ym9yZGVyLXJhZGl1czoxMHB4O3BhZGRpbmc6
MjBweCAyNHB4O21heC13aWR0aDo2MDBweDt3aWR0aDo5MCU7Ym94LXNoYWRvdzowIDhweCAzMnB4
IHJnYmEoMCwwLDAsMC4zKTttYXgtaGVpZ2h0Ojg1dmg7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0
aW9uOmNvbHVtbjsiPicgKwogICAgICAgICAgICAgICAgJzxoMyBzdHlsZT0iY29sb3I6dmFyKC0t
dGV4dC1oZWFkaW5nKTttYXJnaW4tYm90dG9tOjEwcHg7ZmxleC1zaHJpbms6MDsiPkF1ZmtsYXBw
YmFyZSBCZXJlaWNoZSBlaW5mw7xnZW48L2gzPicgKwogICAgICAgICAgICAgICAgJzxwIHN0eWxl
PSJmb250LXNpemU6MTJweDtjb2xvcjp2YXIoLS10ZXh0LW11dGVkKTttYXJnaW4tYm90dG9tOjEy
cHg7ZmxleC1zaHJpbms6MDsiPkplZGVyIEJlcmVpY2ggaGF0IGVpbmVuIFRpdGVsIChpbW1lciBz
aWNodGJhcikgdW5kIGVpbmVuIEluaGFsdCAod2lyZCBiZWltIEtsaWNrIGF1Zmdla2xhcHB0KS4g
RHUga2FubnN0IG1laHJlcmUgQmVyZWljaGUgYXVmIGVpbm1hbCBlaW5mw7xnZW4uPC9wPicgKwog
ICAgICAgICAgICAgICAgJzxkaXYgaWQ9ImFjY0luc2VydEl0ZW1zIiBzdHlsZT0ib3ZlcmZsb3ct
eTphdXRvO2ZsZXg6MTttaW4taGVpZ2h0OjA7cGFkZGluZy1yaWdodDo0cHg7Ij4nICsKICAgICAg
ICAgICAgICAgICAgICBEcml2ZUVkaXRvci5fYWNjSXRlbUh0bWwoMSkgKwogICAgICAgICAgICAg
ICAgJzwvZGl2PicgKwogICAgICAgICAgICAgICAgJzxkaXYgc3R5bGU9ImZsZXgtc2hyaW5rOjA7
bWFyZ2luLXRvcDoxMHB4O3BhZGRpbmctdG9wOjEwcHg7Ym9yZGVyLXRvcDoxcHggc29saWQgdmFy
KC0tYm9yZGVyLWxpZ2h0KTsiPicgKwogICAgICAgICAgICAgICAgICAgICc8YnV0dG9uIG9uY2xp
Y2s9IkRyaXZlRWRpdG9yLl9hZGRBY2NJdGVtKCkiIHN0eWxlPSJ3aWR0aDoxMDAlO3BhZGRpbmc6
OHB4O2JvcmRlcjoxcHggZGFzaGVkIHZhcigtLWJvcmRlci1jb2xvcik7YmFja2dyb3VuZDp2YXIo
LS1iZy1jYXJkLWFsdCk7Ym9yZGVyLXJhZGl1czo0cHg7Y3Vyc29yOnBvaW50ZXI7Y29sb3I6dmFy
KC0tdGV4dC1oZWFkaW5nKTtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEzcHg7Ij4rIFdlaXRl
cmVuIEJlcmVpY2ggaGluenVmw7xnZW48L2J1dHRvbj4nICsKICAgICAgICAgICAgICAgICc8L2Rp
dj4nICsKICAgICAgICAgICAgICAgICc8ZGl2IHN0eWxlPSJkaXNwbGF5OmZsZXg7Z2FwOjhweDtq
dXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmQ7bWFyZ2luLXRvcDoxMHB4O2ZsZXgtc2hyaW5rOjA7Ij4n
ICsKICAgICAgICAgICAgICAgICAgICAnPGJ1dHRvbiBvbmNsaWNrPSJ0aGlzLmNsb3Nlc3QoXCdk
aXZbc3R5bGVdXCcpLnBhcmVudEVsZW1lbnQucmVtb3ZlKCkiIHN0eWxlPSJwYWRkaW5nOjhweCAx
NnB4O2JvcmRlci1yYWRpdXM6NHB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyLWNvbG9y
KTtiYWNrZ3JvdW5kOnZhcigtLWJnLWNhcmQpO2NvbG9yOnZhcigtLXRleHQtcHJpbWFyeSk7Y3Vy
c29yOnBvaW50ZXI7Ij5BYmJyZWNoZW48L2J1dHRvbj4nICsKICAgICAgICAgICAgICAgICAgICAn
PGJ1dHRvbiBvbmNsaWNrPSJEcml2ZUVkaXRvci5fY29uZmlybUFjY29yZGlvbigpIiBzdHlsZT0i
cGFkZGluZzo4cHggMTZweDtib3JkZXItcmFkaXVzOjRweDtib3JkZXI6bm9uZTtiYWNrZ3JvdW5k
OnZhcigtLXRleHQtaGVhZGluZyk7Y29sb3I6d2hpdGU7Y3Vyc29yOnBvaW50ZXI7Zm9udC13ZWln
aHQ6NjAwOyI+RWluZsO8Z2VuPC9idXR0b24+JyArCiAgICAgICAgICAgICAgICAnPC9kaXY+JyAr
CiAgICAgICAgICAgICc8L2Rpdj4nOwogICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQo
bW9kYWwpOwogICAgICAgIHRoaXMuX2FjY01vZGFsID0gbW9kYWw7CiAgICAgICAgc2V0VGltZW91
dChmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIGZpcnN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2FjY1RfMScpOwogICAgICAgICAgICBpZiAoZmlyc3QpIGZpcnN0LmZvY3VzKCk7CiAg
ICAgICAgfSwgNTApOwogICAgfSwKCiAgICBfYWNjTW9kYWw6IG51bGwsCgogICAgX2FjY0l0ZW1I
dG1sKG51bSkgewogICAgICAgIHZhciBpbnB1dFN0eWxlID0gJ3dpZHRoOjEwMCU7cGFkZGluZzo2
cHggMTBweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlci1jb2xvcik7Ym9yZGVyLXJhZGl1
czo0cHg7Zm9udC1zaXplOjEzcHg7YmFja2dyb3VuZDp2YXIoLS1iZy1pbnB1dCk7Y29sb3I6dmFy
KC0tdGV4dC1wcmltYXJ5KTsnOwogICAgICAgIHJldHVybiAnPGRpdiBjbGFzcz0iYWNjLWluc2Vy
dC1pdGVtIiBzdHlsZT0ibWFyZ2luLWJvdHRvbToxMHB4O3BhZGRpbmc6MTBweCAxMnB4O2JhY2tn
cm91bmQ6dmFyKC0tYmctY2FyZC1hbHQpO2JvcmRlci1yYWRpdXM6NnB4O2JvcmRlcjoxcHggc29s
aWQgdmFyKC0tYm9yZGVyLWxpZ2h0KTsiPicgKwogICAgICAgICAgICAnPGRpdiBzdHlsZT0iZGlz
cGxheTpmbGV4O2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO2FsaWduLWl0ZW1zOmNlbnRl
cjttYXJnaW4tYm90dG9tOjZweDsiPicgKwogICAgICAgICAgICAgICAgJzxsYWJlbCBzdHlsZT0i
Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NjAwO2NvbG9yOnZhcigtLXRleHQtaGVhZGluZyk7
Ij5CZXJlaWNoICcgKyBudW0gKyAnPC9sYWJlbD4nICsKICAgICAgICAgICAgICAgIChudW0gPiAx
ID8gJzxidXR0b24gb25jbGljaz0idGhpcy5jbG9zZXN0KFwnLmFjYy1pbnNlcnQtaXRlbVwnKS5y
ZW1vdmUoKSIgc3R5bGU9ImJhY2tncm91bmQ6bm9uZTtib3JkZXI6bm9uZTtjb2xvcjp2YXIoLS10
ZXh0LW11dGVkKTtjdXJzb3I6cG9pbnRlcjtmb250LXNpemU6MTRweDsiIHRpdGxlPSJFbnRmZXJu
ZW4iPiZ0aW1lczs8L2J1dHRvbj4nIDogJycpICsKICAgICAgICAgICAgJzwvZGl2PicgKwogICAg
ICAgICAgICAnPGlucHV0IHR5cGU9InRleHQiIGlkPSJhY2NUXycgKyBudW0gKyAnIiBwbGFjZWhv
bGRlcj0iVGl0ZWwgKGltbWVyIHNpY2h0YmFyKS4uLiIgc3R5bGU9IicgKyBpbnB1dFN0eWxlICsg
J21hcmdpbi1ib3R0b206NnB4O2ZvbnQtd2VpZ2h0OjYwMDsiPicgKwogICAgICAgICAgICAnPHRl
eHRhcmVhIGlkPSJhY2NDXycgKyBudW0gKyAnIiBwbGFjZWhvbGRlcj0iSW5oYWx0ICh3aXJkIGF1
Zmdla2xhcHB0KS4uLiIgcm93cz0iMyIgc3R5bGU9IicgKyBpbnB1dFN0eWxlICsgJ3Jlc2l6ZTp2
ZXJ0aWNhbDtsaW5lLWhlaWdodDoxLjU7Ij48L3RleHRhcmVhPicgKwogICAgICAgICc8L2Rpdj4n
OwogICAgfSwKCiAgICBfYWRkQWNjSXRlbSgpIHsKICAgICAgICB0aGlzLl9hY2NDb3VudGVyKys7
CiAgICAgICAgdmFyIGNvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY2NJbnNl
cnRJdGVtcycpOwogICAgICAgIGlmICghY29udGFpbmVyKSByZXR1cm47CiAgICAgICAgdmFyIGRp
diA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgICAgIGRpdi5pbm5lckhUTUwg
PSB0aGlzLl9hY2NJdGVtSHRtbCh0aGlzLl9hY2NDb3VudGVyKTsKICAgICAgICBjb250YWluZXIu
YXBwZW5kQ2hpbGQoZGl2LmZpcnN0Q2hpbGQpOwogICAgICAgIHZhciBuZXdUID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2FjY1RfJyArIHRoaXMuX2FjY0NvdW50ZXIpOwogICAgICAgIGlmIChu
ZXdUKSB7IG5ld1QuZm9jdXMoKTsgbmV3VC5zY3JvbGxJbnRvVmlldyh7IGJlaGF2aW9yOiAnc21v
b3RoJywgYmxvY2s6ICduZWFyZXN0JyB9KTsgfQogICAgfSwKCiAgICBfY29uZmlybUFjY29yZGlv
bigpIHsKICAgICAgICB2YXIgaXRlbXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcjYWNj
SW5zZXJ0SXRlbXMgLmFjYy1pbnNlcnQtaXRlbScpOwogICAgICAgIHZhciBlbnRyaWVzID0gW107
CiAgICAgICAgaXRlbXMuZm9yRWFjaChmdW5jdGlvbihpdGVtKSB7CiAgICAgICAgICAgIHZhciB0
SW5wdXQgPSBpdGVtLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0W2lkXj0iYWNjVF8iXScpOwogICAgICAg
ICAgICB2YXIgY0lucHV0ID0gaXRlbS5xdWVyeVNlbGVjdG9yKCd0ZXh0YXJlYVtpZF49ImFjY0Nf
Il0nKTsKICAgICAgICAgICAgdmFyIHQgPSB0SW5wdXQgPyB0SW5wdXQudmFsdWUudHJpbSgpIDog
Jyc7CiAgICAgICAgICAgIHZhciBjID0gY0lucHV0ID8gY0lucHV0LnZhbHVlLnRyaW0oKSA6ICcn
OwogICAgICAgICAgICBpZiAodCkgZW50cmllcy5wdXNoKHsgdGl0bGU6IHQsIGNvbnRlbnQ6IGMg
fHwgJycgfSk7CiAgICAgICAgfSk7CiAgICAgICAgaWYgKGVudHJpZXMubGVuZ3RoID09PSAwKSB7
CiAgICAgICAgICAgIHNob3dUb2FzdCgnQml0dGUgbWluZGVzdGVucyBlaW5lbiBUaXRlbCBlaW5n
ZWJlbicsICd3YXJuaW5nJyk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAg
IGlmICh0aGlzLl9hY2NNb2RhbCkgeyB0aGlzLl9hY2NNb2RhbC5yZW1vdmUoKTsgdGhpcy5fYWNj
TW9kYWwgPSBudWxsOyB9CgogICAgICAgIHZhciBhY2NIdG1sID0gJyc7CiAgICAgICAgZW50cmll
cy5mb3JFYWNoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIGNvbnRlbnQgPSBEcml2ZVBv
cnRhbC5lc2NhcGVIVE1MKGUuY29udGVudCkucmVwbGFjZSgvXG4vZywgJzxicj4nKSB8fCAnPHA+
PC9wPic7CiAgICAgICAgICAgIGFjY0h0bWwgKz0KICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNz
PSJkcml2ZS1hY2NvcmRpb24iIGNvbnRlbnRlZGl0YWJsZT0iZmFsc2UiPicgKwogICAgICAgICAg
ICAgICAgICAgICc8ZGl2IGNsYXNzPSJkcml2ZS1hY2NvcmRpb24taGVhZGVyIj4nICsKICAgICAg
ICAgICAgICAgICAgICAgICAgJzxzcGFuIGNsYXNzPSJkcml2ZS1hY2NvcmRpb24tYXJyb3ciPjxp
bWcgc3JjPSJjc3MvaWNvbnMvQ2hldnJvbi5wbmciIHN0eWxlPSJ3aWR0aDoxMnB4O2hlaWdodDox
MnB4OyI+PC9zcGFuPicgKwogICAgICAgICAgICAgICAgICAgICAgICAnPHNwYW4+JyArIERyaXZl
UG9ydGFsLmVzY2FwZUhUTUwoZS50aXRsZSkgKyAnPC9zcGFuPicgKwogICAgICAgICAgICAgICAg
ICAgICc8L2Rpdj4nICsKICAgICAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0iZHJpdmUtYWNj
b3JkaW9uLWJvZHkiPicgKyBjb250ZW50ICsgJzwvZGl2PicgKwogICAgICAgICAgICAgICAgJzwv
ZGl2Pic7CiAgICAgICAgfSk7CiAgICAgICAgYWNjSHRtbCArPSAnPGJyPic7CgogICAgICAgIHZh
ciBlZGl0b3IgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZWRpdG9ySW5wdXQnKTsKICAgICAg
ICBlZGl0b3IuZm9jdXMoKTsKICAgICAgICBpZiAodGhpcy5fYWNjUmFuZ2UpIHsKICAgICAgICAg
ICAgdmFyIHNlbCA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKICAgICAgICAgICAgc2VsLnJlbW92
ZUFsbFJhbmdlcygpOwogICAgICAgICAgICBzZWwuYWRkUmFuZ2UodGhpcy5fYWNjUmFuZ2UpOwog
ICAgICAgICAgICB0aGlzLl9hY2NSYW5nZSA9IG51bGw7CiAgICAgICAgfQogICAgICAgIGRvY3Vt
ZW50LmV4ZWNDb21tYW5kKCdpbnNlcnRIVE1MJywgZmFsc2UsIGFjY0h0bWwpOwogICAgICAgIHRo
aXMuc2F2ZVN0YXRlKCk7CiAgICB9LAoKICAgIC8vIC0tLSBGQVEtQmVyZWljaCAtLS0KICAgIF9m
YXFDb3VudGVyOiAwLAoKICAgIGluc2VydEZBUSgpIHsKICAgICAgICB0aGlzLl9mYXFDb3VudGVy
ID0gMTsKICAgICAgICAvLyBDdXJzb3ItUG9zaXRpb24gbWVya2VuCiAgICAgICAgdmFyIHNlbCA9
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKICAgICAgICB0aGlzLl9mYXFSYW5nZSA9IChzZWwgJiYg
c2VsLnJhbmdlQ291bnQpID8gc2VsLmdldFJhbmdlQXQoMCkuY2xvbmVSYW5nZSgpIDogbnVsbDsK
ICAgICAgICB2YXIgaW5wdXRTdHlsZSA9ICd3aWR0aDoxMDAlO3BhZGRpbmc6NnB4IDEwcHg7Ym9y
ZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3IpO2JvcmRlci1yYWRpdXM6NHB4O2ZvbnQt
c2l6ZToxM3B4O2JhY2tncm91bmQ6dmFyKC0tYmctaW5wdXQpO2NvbG9yOnZhcigtLXRleHQtcHJp
bWFyeSk7JzsKICAgICAgICB2YXIgbW9kYWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYn
KTsKICAgICAgICBtb2RhbC5zdHlsZS5jc3NUZXh0ID0gJ3Bvc2l0aW9uOmZpeGVkO3RvcDowO2xl
ZnQ6MDt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO2JhY2tncm91bmQ6cmdiYSgwLDAsMCwwLjUpO3ot
aW5kZXg6MTA1MDA7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRl
bnQ6Y2VudGVyOyc7CiAgICAgICAgbW9kYWwub25jbGljayA9IGZ1bmN0aW9uKGUpIHsgaWYgKGUu
dGFyZ2V0ID09PSBtb2RhbCkgbW9kYWwucmVtb3ZlKCk7IH07CiAgICAgICAgbW9kYWwuaW5uZXJI
VE1MID0KICAgICAgICAgICAgJzxkaXYgc3R5bGU9ImJhY2tncm91bmQ6dmFyKC0tYmctY2FyZCk7
Ym9yZGVyLXJhZGl1czoxMHB4O3BhZGRpbmc6MjBweCAyNHB4O21heC13aWR0aDo2NDBweDt3aWR0
aDo5MCU7Ym94LXNoYWRvdzowIDhweCAzMnB4IHJnYmEoMCwwLDAsMC4zKTttYXgtaGVpZ2h0Ojg1
dmg7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjsiPicgKwogICAgICAgICAgICAg
ICAgJzxoMyBzdHlsZT0iY29sb3I6dmFyKC0tdGV4dC1oZWFkaW5nKTttYXJnaW4tYm90dG9tOjE0
cHg7ZmxleC1zaHJpbms6MDsiPkZBUS1CZXJlaWNoIGVpbmbDvGdlbjwvaDM+JyArCiAgICAgICAg
ICAgICAgICAnPGRpdiBpZD0iZmFxSW5zZXJ0SXRlbXMiIHN0eWxlPSJvdmVyZmxvdy15OmF1dG87
ZmxleDoxO21pbi1oZWlnaHQ6MDtwYWRkaW5nLXJpZ2h0OjRweDsiPicgKwogICAgICAgICAgICAg
ICAgICAgIERyaXZlRWRpdG9yLl9mYXFJdGVtSHRtbCgxKSArCiAgICAgICAgICAgICAgICAnPC9k
aXY+JyArCiAgICAgICAgICAgICAgICAnPGRpdiBzdHlsZT0iZmxleC1zaHJpbms6MDttYXJnaW4t
dG9wOjEwcHg7cGFkZGluZy10b3A6MTBweDtib3JkZXItdG9wOjFweCBzb2xpZCB2YXIoLS1ib3Jk
ZXItbGlnaHQpOyI+JyArCiAgICAgICAgICAgICAgICAgICAgJzxidXR0b24gb25jbGljaz0iRHJp
dmVFZGl0b3IuX2FkZEZhcUl0ZW0oKSIgc3R5bGU9IndpZHRoOjEwMCU7cGFkZGluZzo4cHg7Ym9y
ZGVyOjFweCBkYXNoZWQgdmFyKC0tYm9yZGVyLWNvbG9yKTtiYWNrZ3JvdW5kOnZhcigtLWJnLWNh
cmQtYWx0KTtib3JkZXItcmFkaXVzOjRweDtjdXJzb3I6cG9pbnRlcjtjb2xvcjp2YXIoLS10ZXh0
LWhlYWRpbmcpO2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTNweDsiPisgV2VpdGVyZSBGcmFn
ZSBoaW56dWbDvGdlbjwvYnV0dG9uPicgKwogICAgICAgICAgICAgICAgJzwvZGl2PicgKwogICAg
ICAgICAgICAgICAgJzxkaXYgc3R5bGU9ImRpc3BsYXk6ZmxleDtnYXA6OHB4O2p1c3RpZnktY29u
dGVudDpmbGV4LWVuZDttYXJnaW4tdG9wOjEwcHg7ZmxleC1zaHJpbms6MDsiPicgKwogICAgICAg
ICAgICAgICAgICAgICc8YnV0dG9uIG9uY2xpY2s9InRoaXMuY2xvc2VzdChcJ2RpdltzdHlsZV1c
JykucGFyZW50RWxlbWVudC5yZW1vdmUoKSIgc3R5bGU9InBhZGRpbmc6OHB4IDE2cHg7Ym9yZGVy
LXJhZGl1czo0cHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3IpO2JhY2tncm91
bmQ6dmFyKC0tYmctY2FyZCk7Y29sb3I6dmFyKC0tdGV4dC1wcmltYXJ5KTtjdXJzb3I6cG9pbnRl
cjsiPkFiYnJlY2hlbjwvYnV0dG9uPicgKwogICAgICAgICAgICAgICAgICAgICc8YnV0dG9uIG9u
Y2xpY2s9IkRyaXZlRWRpdG9yLl9jb25maXJtRkFRKCkiIHN0eWxlPSJwYWRkaW5nOjhweCAxNnB4
O2JvcmRlci1yYWRpdXM6NHB4O2JvcmRlcjpub25lO2JhY2tncm91bmQ6dmFyKC0tdGV4dC1oZWFk
aW5nKTtjb2xvcjp3aGl0ZTtjdXJzb3I6cG9pbnRlcjtmb250LXdlaWdodDo2MDA7Ij5FaW5mw7xn
ZW48L2J1dHRvbj4nICsKICAgICAgICAgICAgICAgICc8L2Rpdj4nICsKICAgICAgICAgICAgJzwv
ZGl2Pic7CiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChtb2RhbCk7CiAgICAgICAg
dGhpcy5fZmFxTW9kYWwgPSBtb2RhbDsKICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewog
ICAgICAgICAgICB2YXIgZmlyc3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZmFxUV8xJyk7
CiAgICAgICAgICAgIGlmIChmaXJzdCkgZmlyc3QuZm9jdXMoKTsKICAgICAgICB9LCA1MCk7CiAg
ICB9LAoKICAgIF9mYXFNb2RhbDogbnVsbCwKCiAgICBfZmFxSXRlbUh0bWwobnVtKSB7CiAgICAg
ICAgdmFyIGlucHV0U3R5bGUgPSAnd2lkdGg6MTAwJTtwYWRkaW5nOjZweCAxMHB4O2JvcmRlcjox
cHggc29saWQgdmFyKC0tYm9yZGVyLWNvbG9yKTtib3JkZXItcmFkaXVzOjRweDtmb250LXNpemU6
MTNweDtiYWNrZ3JvdW5kOnZhcigtLWJnLWlucHV0KTtjb2xvcjp2YXIoLS10ZXh0LXByaW1hcnkp
Oyc7CiAgICAgICAgcmV0dXJuICc8ZGl2IGNsYXNzPSJmYXEtaW5zZXJ0LWl0ZW0iIHN0eWxlPSJt
YXJnaW4tYm90dG9tOjEycHg7cGFkZGluZzoxMHB4IDEycHg7YmFja2dyb3VuZDp2YXIoLS1iZy1j
YXJkLWFsdCk7Ym9yZGVyLXJhZGl1czo2cHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXIt
bGlnaHQpOyI+JyArCiAgICAgICAgICAgICc8ZGl2IHN0eWxlPSJkaXNwbGF5OmZsZXg7anVzdGlm
eS1jb250ZW50OnNwYWNlLWJldHdlZW47YWxpZ24taXRlbXM6Y2VudGVyO21hcmdpbi1ib3R0b206
NnB4OyI+JyArCiAgICAgICAgICAgICAgICAnPGxhYmVsIHN0eWxlPSJmb250LXNpemU6MTFweDtm
b250LXdlaWdodDo2MDA7Y29sb3I6dmFyKC0tdGV4dC1oZWFkaW5nKTsiPkZyYWdlICcgKyBudW0g
KyAnPC9sYWJlbD4nICsKICAgICAgICAgICAgICAgIChudW0gPiAxID8gJzxidXR0b24gb25jbGlj
az0idGhpcy5jbG9zZXN0KFwnLmZhcS1pbnNlcnQtaXRlbVwnKS5yZW1vdmUoKSIgc3R5bGU9ImJh
Y2tncm91bmQ6bm9uZTtib3JkZXI6bm9uZTtjb2xvcjp2YXIoLS10ZXh0LW11dGVkKTtjdXJzb3I6
cG9pbnRlcjtmb250LXNpemU6MTRweDsiIHRpdGxlPSJFbnRmZXJuZW4iPiZ0aW1lczs8L2J1dHRv
bj4nIDogJycpICsKICAgICAgICAgICAgJzwvZGl2PicgKwogICAgICAgICAgICAnPGlucHV0IHR5
cGU9InRleHQiIGlkPSJmYXFRXycgKyBudW0gKyAnIiBwbGFjZWhvbGRlcj0iRnJhZ2UgZWluZ2Vi
ZW4uLi4iIHN0eWxlPSInICsgaW5wdXRTdHlsZSArICdtYXJnaW4tYm90dG9tOjZweDtmb250LXdl
aWdodDo2MDA7Ij4nICsKICAgICAgICAgICAgJzx0ZXh0YXJlYSBpZD0iZmFxQV8nICsgbnVtICsg
JyIgcGxhY2Vob2xkZXI9IkFudHdvcnQgZWluZ2ViZW4uLi4iIHJvd3M9IjMiIHN0eWxlPSInICsg
aW5wdXRTdHlsZSArICdyZXNpemU6dmVydGljYWw7bGluZS1oZWlnaHQ6MS41OyI+PC90ZXh0YXJl
YT4nICsKICAgICAgICAnPC9kaXY+JzsKICAgIH0sCgogICAgX2FkZEZhcUl0ZW0oKSB7CiAgICAg
ICAgdGhpcy5fZmFxQ291bnRlcisrOwogICAgICAgIHZhciBjb250YWluZXIgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnZmFxSW5zZXJ0SXRlbXMnKTsKICAgICAgICBpZiAoIWNvbnRhaW5lcikg
cmV0dXJuOwogICAgICAgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsK
ICAgICAgICBkaXYuaW5uZXJIVE1MID0gdGhpcy5fZmFxSXRlbUh0bWwodGhpcy5fZmFxQ291bnRl
cik7CiAgICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKGRpdi5maXJzdENoaWxkKTsKICAgICAg
ICB2YXIgbmV3USA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmYXFRXycgKyB0aGlzLl9mYXFD
b3VudGVyKTsKICAgICAgICBpZiAobmV3USkgeyBuZXdRLmZvY3VzKCk7IG5ld1Euc2Nyb2xsSW50
b1ZpZXcoeyBiZWhhdmlvcjogJ3Ntb290aCcsIGJsb2NrOiAnbmVhcmVzdCcgfSk7IH0KICAgIH0s
CgogICAgX2NvbmZpcm1GQVEoKSB7CiAgICAgICAgdmFyIGl0ZW1zID0gZG9jdW1lbnQucXVlcnlT
ZWxlY3RvckFsbCgnI2ZhcUluc2VydEl0ZW1zIC5mYXEtaW5zZXJ0LWl0ZW0nKTsKICAgICAgICB2
YXIgcGFpcnMgPSBbXTsKICAgICAgICBpdGVtcy5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0pIHsKICAg
ICAgICAgICAgdmFyIHFJbnB1dCA9IGl0ZW0ucXVlcnlTZWxlY3RvcignaW5wdXRbaWRePSJmYXFR
XyJdJyk7CiAgICAgICAgICAgIHZhciBhSW5wdXQgPSBpdGVtLnF1ZXJ5U2VsZWN0b3IoJ3RleHRh
cmVhW2lkXj0iZmFxQV8iXScpOwogICAgICAgICAgICB2YXIgcSA9IHFJbnB1dCA/IHFJbnB1dC52
YWx1ZS50cmltKCkgOiAnJzsKICAgICAgICAgICAgdmFyIGEgPSBhSW5wdXQgPyBhSW5wdXQudmFs
dWUudHJpbSgpIDogJyc7CiAgICAgICAgICAgIGlmIChxKSBwYWlycy5wdXNoKHsgcTogcSwgYTog
YSB8fCAnQW50d29ydCBhdXNzdGVoZW5kLicgfSk7CiAgICAgICAgfSk7CiAgICAgICAgaWYgKHBh
aXJzLmxlbmd0aCA9PT0gMCkgewogICAgICAgICAgICBzaG93VG9hc3QoJ0JpdHRlIG1pbmRlc3Rl
bnMgZWluZSBGcmFnZSBlaW5nZWJlbicsICd3YXJuaW5nJyk7CiAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICB9CgogICAgICAgIGlmICh0aGlzLl9mYXFNb2RhbCkgeyB0aGlzLl9mYXFNb2RhbC5y
ZW1vdmUoKTsgdGhpcy5fZmFxTW9kYWwgPSBudWxsOyB9CgogICAgICAgIC8vIFNwcnVuZ21hcmtl
OiBmYXEte2FydGlrZWx0aXRlbC1zbHVnfQogICAgICAgIHZhciBzbHVnID0gJ2ZhcSc7CiAgICAg
ICAgaWYgKHRoaXMuY3VycmVudERvYyAmJiB0aGlzLmN1cnJlbnREb2MudGl0ZWwpIHsKICAgICAg
ICAgICAgc2x1ZyA9ICdmYXEtJyArIHRoaXMuY3VycmVudERvYy50aXRlbC50b0xvd2VyQ2FzZSgp
CiAgICAgICAgICAgICAgICAucmVwbGFjZSgvw6QvZywnYWUnKS5yZXBsYWNlKC/Dti9nLCdvZScp
LnJlcGxhY2UoL8O8L2csJ3VlJykucmVwbGFjZSgvw58vZywnc3MnKQogICAgICAgICAgICAgICAg
LnJlcGxhY2UoL1teYS16MC05XSsvZywnLScpLnJlcGxhY2UoL14tfC0kL2csJycpOwogICAgICAg
IH0KCiAgICAgICAgdmFyIGZhcUh0bWwgPSAnPGRpdiBjbGFzcz0iZHJpdmUtZmFxIiBpZD0iJyAr
IERyaXZlUG9ydGFsLmVzY2FwZUF0dHIoc2x1ZykgKyAnIiBjb250ZW50ZWRpdGFibGU9ImZhbHNl
Ij4nOwogICAgICAgIGZhcUh0bWwgKz0gJzxkaXYgY2xhc3M9ImRyaXZlLWZhcS1oZWFkZXIiPjxp
bWcgc3JjPSJjc3MvaWNvbnMvZmFxLnBuZyIgc3R5bGU9IndpZHRoOjIwcHg7aGVpZ2h0OjIwcHg7
ZmlsdGVyOmludmVydCgxKSBicmlnaHRuZXNzKDIpOyI+IEZBUTwvZGl2Pic7CiAgICAgICAgZmFx
SHRtbCArPSAnPGRpdiBjbGFzcz0iZHJpdmUtZmFxLWJvZHkiPic7CiAgICAgICAgcGFpcnMuZm9y
RWFjaChmdW5jdGlvbihwKSB7CiAgICAgICAgICAgIGZhcUh0bWwgKz0gJzxkaXYgY2xhc3M9ImRy
aXZlLWZhcS1pdGVtIj4nICsKICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJkcml2ZS1mYXEt
cXVlc3Rpb24iPjxzcGFuIGNsYXNzPSJkcml2ZS1mYXEtYXJyb3ciPjxpbWcgc3JjPSJjc3MvaWNv
bnMvQ2hldnJvbi5wbmciIHN0eWxlPSJ3aWR0aDoxMHB4O2hlaWdodDoxMHB4OyI+PC9zcGFuPjxz
cGFuPicgKyBEcml2ZVBvcnRhbC5lc2NhcGVIVE1MKHAucSkgKyAnPC9zcGFuPjwvZGl2PicgKwog
ICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImRyaXZlLWZhcS1hbnN3ZXIiPicgKyBEcml2ZVBv
cnRhbC5lc2NhcGVIVE1MKHAuYSkucmVwbGFjZSgvXG4vZywgJzxicj4nKSArICc8L2Rpdj4nICsK
ICAgICAgICAgICAgJzwvZGl2Pic7CiAgICAgICAgfSk7CiAgICAgICAgZmFxSHRtbCArPSAnPC9k
aXY+PC9kaXY+PGJyPic7CgogICAgICAgIHZhciBlZGl0b3IgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnZWRpdG9ySW5wdXQnKTsKICAgICAgICBlZGl0b3IuZm9jdXMoKTsKICAgICAgICAvLyBD
dXJzb3ItUG9zaXRpb24gd2llZGVyaGVyc3RlbGxlbgogICAgICAgIGlmICh0aGlzLl9mYXFSYW5n
ZSkgewogICAgICAgICAgICB2YXIgc2VsID0gd2luZG93LmdldFNlbGVjdGlvbigpOwogICAgICAg
ICAgICBzZWwucmVtb3ZlQWxsUmFuZ2VzKCk7CiAgICAgICAgICAgIHNlbC5hZGRSYW5nZSh0aGlz
Ll9mYXFSYW5nZSk7CiAgICAgICAgICAgIHRoaXMuX2ZhcVJhbmdlID0gbnVsbDsKICAgICAgICB9
CiAgICAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ2luc2VydEhUTUwnLCBmYWxzZSwgZmFxSHRt
bCk7CiAgICAgICAgdGhpcy5zYXZlU3RhdGUoKTsKICAgIH0sCgogICAgLy8gLS0tIFRhYmVsbGUg
ZWluZsO8Z2VuIC0tLQogICAgaW5zZXJ0VGFibGUoKSB7CiAgICAgICAgdmFyIHNlbCA9IHdpbmRv
dy5nZXRTZWxlY3Rpb24oKTsKICAgICAgICB0aGlzLl90YmxSYW5nZSA9IChzZWwgJiYgc2VsLnJh
bmdlQ291bnQpID8gc2VsLmdldFJhbmdlQXQoMCkuY2xvbmVSYW5nZSgpIDogbnVsbDsKICAgICAg
ICB2YXIgbGFiZWxTdHlsZSA9ICdmb250LXNpemU6MTJweDtmb250LXdlaWdodDo2MDA7Y29sb3I6
dmFyKC0tdGV4dC1zZWNvbmRhcnkpO2Rpc3BsYXk6YmxvY2s7bWFyZ2luLWJvdHRvbTozcHg7JzsK
ICAgICAgICB2YXIgaW5wdXRTdHlsZSA9ICd3aWR0aDoxMDAlO3BhZGRpbmc6NnB4IDEwcHg7Ym9y
ZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3IpO2JvcmRlci1yYWRpdXM6NHB4O2ZvbnQt
c2l6ZToxNHB4O2JhY2tncm91bmQ6dmFyKC0tYmctaW5wdXQpO2NvbG9yOnZhcigtLXRleHQtcHJp
bWFyeSk7JzsKICAgICAgICB2YXIgY2JTdHlsZSA9ICdkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6
Y2VudGVyO2dhcDo2cHg7Zm9udC1zaXplOjEzcHg7Y29sb3I6dmFyKC0tdGV4dC1wcmltYXJ5KTtj
dXJzb3I6cG9pbnRlcjsnOwoKICAgICAgICB2YXIgbW9kYWwgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdkaXYnKTsKICAgICAgICBtb2RhbC5zdHlsZS5jc3NUZXh0ID0gJ3Bvc2l0aW9uOmZpeGVk
O3RvcDowO2xlZnQ6MDt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO2JhY2tncm91bmQ6cmdiYSgwLDAs
MCwwLjUpO3otaW5kZXg6MTA1MDA7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0
aWZ5LWNvbnRlbnQ6Y2VudGVyOyc7CiAgICAgICAgbW9kYWwub25jbGljayA9IGZ1bmN0aW9uKGUp
IHsgaWYgKGUudGFyZ2V0ID09PSBtb2RhbCkgbW9kYWwucmVtb3ZlKCk7IH07CiAgICAgICAgbW9k
YWwuaW5uZXJIVE1MID0KICAgICAgICAgICAgJzxkaXYgc3R5bGU9ImJhY2tncm91bmQ6dmFyKC0t
YmctY2FyZCk7Ym9yZGVyLXJhZGl1czoxMHB4O3BhZGRpbmc6MjBweCAyNHB4O21heC13aWR0aDo0
NDBweDt3aWR0aDo5MCU7Ym94LXNoYWRvdzowIDhweCAzMnB4IHJnYmEoMCwwLDAsMC4zKTsiPicg
KwogICAgICAgICAgICAgICAgJzxoMyBzdHlsZT0iY29sb3I6dmFyKC0tdGV4dC1oZWFkaW5nKTtt
YXJnaW4tYm90dG9tOjE2cHg7Ij5UYWJlbGxlIGVpbmbDvGdlbjwvaDM+JyArCgogICAgICAgICAg
ICAgICAgJzxkaXYgc3R5bGU9ImRpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZy
IDFmcjtnYXA6MTJweDttYXJnaW4tYm90dG9tOjE0cHg7Ij4nICsKICAgICAgICAgICAgICAgICAg
ICAnPGRpdj48bGFiZWwgc3R5bGU9IicgKyBsYWJlbFN0eWxlICsgJyI+U3BhbHRlbjwvbGFiZWw+
JyArCiAgICAgICAgICAgICAgICAgICAgICAgICc8aW5wdXQgdHlwZT0ibnVtYmVyIiBpZD0idGJs
Q29scyIgdmFsdWU9IjMiIG1pbj0iMSIgbWF4PSIyMCIgc3R5bGU9IicgKyBpbnB1dFN0eWxlICsg
JyI+PC9kaXY+JyArCiAgICAgICAgICAgICAgICAgICAgJzxkaXY+PGxhYmVsIHN0eWxlPSInICsg
bGFiZWxTdHlsZSArICciPlplaWxlbjwvbGFiZWw+JyArCiAgICAgICAgICAgICAgICAgICAgICAg
ICc8aW5wdXQgdHlwZT0ibnVtYmVyIiBpZD0idGJsUm93cyIgdmFsdWU9IjQiIG1pbj0iMSIgbWF4
PSI1MCIgc3R5bGU9IicgKyBpbnB1dFN0eWxlICsgJyI+PC9kaXY+JyArCiAgICAgICAgICAgICAg
ICAnPC9kaXY+JyArCgogICAgICAgICAgICAgICAgJzxkaXYgc3R5bGU9Im1hcmdpbi1ib3R0b206
MTRweDtwYWRkaW5nOjEycHg7YmFja2dyb3VuZDp2YXIoLS1iZy1jYXJkLWFsdCk7Ym9yZGVyLXJh
ZGl1czo2cHg7Ij4nICsKICAgICAgICAgICAgICAgICAgICAnPGRpdiBzdHlsZT0iJyArIGxhYmVs
U3R5bGUgKyAnbWFyZ2luLWJvdHRvbTo4cHg7Ij7DnGJlcnNjaHJpZnRlbjwvZGl2PicgKwogICAg
ICAgICAgICAgICAgICAgICc8bGFiZWwgc3R5bGU9IicgKyBjYlN0eWxlICsgJ21hcmdpbi1ib3R0
b206NnB4OyI+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0idGJsQ29sSGVhZGVycyIgY2hlY2tl
ZD4gU3BhbHRlbsO8YmVyc2NocmlmdGVuIChlcnN0ZSBaZWlsZSBmZXR0KTwvbGFiZWw+JyArCiAg
ICAgICAgICAgICAgICAgICAgJzxsYWJlbCBzdHlsZT0iJyArIGNiU3R5bGUgKyAnIj48aW5wdXQg
dHlwZT0iY2hlY2tib3giIGlkPSJ0YmxSb3dIZWFkZXJzIj4gWmVpbGVuw7xiZXJzY2hyaWZ0ZW4g
KGVyc3RlIFNwYWx0ZSBmZXR0KTwvbGFiZWw+JyArCiAgICAgICAgICAgICAgICAnPC9kaXY+JyAr
CgogICAgICAgICAgICAgICAgJzxkaXYgc3R5bGU9Im1hcmdpbi1ib3R0b206MTZweDtwYWRkaW5n
OjEycHg7YmFja2dyb3VuZDp2YXIoLS1iZy1jYXJkLWFsdCk7Ym9yZGVyLXJhZGl1czo2cHg7Ij4n
ICsKICAgICAgICAgICAgICAgICAgICAnPGxhYmVsIHN0eWxlPSInICsgY2JTdHlsZSArICciPjxp
bnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9InRibFNvcnRhYmxlIj4gU29ydGllcmJhciAoS2xpY2sg
YXVmIFNwYWx0ZW7DvGJlcnNjaHJpZnQgc29ydGllcnQpPC9sYWJlbD4nICsKICAgICAgICAgICAg
ICAgICc8L2Rpdj4nICsKCiAgICAgICAgICAgICAgICAnPGRpdiBzdHlsZT0iZGlzcGxheTpmbGV4
O2dhcDo4cHg7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kOyI+JyArCiAgICAgICAgICAgICAgICAg
ICAgJzxidXR0b24gb25jbGljaz0idGhpcy5jbG9zZXN0KFwnZGl2W3N0eWxlXVwnKS5wYXJlbnRF
bGVtZW50LnJlbW92ZSgpIiBzdHlsZT0icGFkZGluZzo4cHggMTZweDtib3JkZXItcmFkaXVzOjRw
eDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlci1jb2xvcik7YmFja2dyb3VuZDp2YXIoLS1i
Zy1jYXJkKTtjb2xvcjp2YXIoLS10ZXh0LXByaW1hcnkpO2N1cnNvcjpwb2ludGVyOyI+QWJicmVj
aGVuPC9idXR0b24+JyArCiAgICAgICAgICAgICAgICAgICAgJzxidXR0b24gb25jbGljaz0iRHJp
dmVFZGl0b3IuX2NvbmZpcm1UYWJsZSgpIiBzdHlsZT0icGFkZGluZzo4cHggMTZweDtib3JkZXIt
cmFkaXVzOjRweDtib3JkZXI6bm9uZTtiYWNrZ3JvdW5kOnZhcigtLXRleHQtaGVhZGluZyk7Y29s
b3I6d2hpdGU7Y3Vyc29yOnBvaW50ZXI7Zm9udC13ZWlnaHQ6NjAwOyI+RWluZsO8Z2VuPC9idXR0
b24+JyArCiAgICAgICAgICAgICAgICAnPC9kaXY+JyArCiAgICAgICAgICAgICc8L2Rpdj4nOwog
ICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobW9kYWwpOwogICAgICAgIHRoaXMuX3Ri
bE1vZGFsID0gbW9kYWw7CiAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ3RibENvbHMnKS5mb2N1cygpOyB9LCA1MCk7CiAgICB9LAoKICAgIF90
YmxNb2RhbDogbnVsbCwKCiAgICBfY29uZmlybVRhYmxlKCkgewogICAgICAgIHZhciBjb2xzID0g
cGFyc2VJbnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RibENvbHMnKS52YWx1ZSkgfHwgMzsK
ICAgICAgICB2YXIgcm93cyA9IHBhcnNlSW50KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0YmxS
b3dzJykudmFsdWUpIHx8IDQ7CiAgICAgICAgdmFyIGNvbEhlYWRlcnMgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgndGJsQ29sSGVhZGVycycpLmNoZWNrZWQ7CiAgICAgICAgdmFyIHJvd0hlYWRl
cnMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGJsUm93SGVhZGVycycpLmNoZWNrZWQ7CiAg
ICAgICAgdmFyIHNvcnRhYmxlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RibFNvcnRhYmxl
JykuY2hlY2tlZDsKCiAgICAgICAgY29scyA9IE1hdGgubWF4KDEsIE1hdGgubWluKDIwLCBjb2xz
KSk7CiAgICAgICAgcm93cyA9IE1hdGgubWF4KDEsIE1hdGgubWluKDUwLCByb3dzKSk7CgogICAg
ICAgIGlmICh0aGlzLl90YmxNb2RhbCkgeyB0aGlzLl90YmxNb2RhbC5yZW1vdmUoKTsgdGhpcy5f
dGJsTW9kYWwgPSBudWxsOyB9CgogICAgICAgIHZhciBzb3J0Q2xhc3MgPSBzb3J0YWJsZSA/ICcg
c29ydGFibGUnIDogJyc7CiAgICAgICAgdmFyIGh0bWwgPSAnPGRpdiBjbGFzcz0iZHJpdmUtdGFi
bGUtd3JhcCIgY29udGVudGVkaXRhYmxlPSJmYWxzZSI+PHRhYmxlIGNsYXNzPSJkcml2ZS10YWJs
ZSInICsgKHNvcnRhYmxlID8gJyBkYXRhLXNvcnRhYmxlPSJ0cnVlIicgOiAnJykgKyAnPic7Cgog
ICAgICAgIC8vIFNwYWx0ZW4tSGVhZGVyCiAgICAgICAgaWYgKGNvbEhlYWRlcnMpIHsKICAgICAg
ICAgICAgaHRtbCArPSAnPHRoZWFkPjx0cj4nOwogICAgICAgICAgICBmb3IgKHZhciBjID0gMDsg
YyA8IGNvbHM7IGMrKykgewogICAgICAgICAgICAgICAgaHRtbCArPSAnPHRoIGNsYXNzPSInICsg
c29ydENsYXNzICsgJyIgY29udGVudGVkaXRhYmxlPSJ0cnVlIj5TcGFsdGUgJyArIChjICsgMSkg
KyAnPC90aD4nOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGh0bWwgKz0gJzwvdHI+PC90aGVh
ZD4nOwogICAgICAgIH0KCiAgICAgICAgaHRtbCArPSAnPHRib2R5Pic7CiAgICAgICAgdmFyIGRh
dGFSb3dzID0gY29sSGVhZGVycyA/IHJvd3MgLSAxIDogcm93czsKICAgICAgICBmb3IgKHZhciBy
ID0gMDsgciA8IGRhdGFSb3dzOyByKyspIHsKICAgICAgICAgICAgaHRtbCArPSAnPHRyPic7CiAg
ICAgICAgICAgIGZvciAodmFyIGMgPSAwOyBjIDwgY29sczsgYysrKSB7CiAgICAgICAgICAgICAg
ICBpZiAoYyA9PT0gMCAmJiByb3dIZWFkZXJzKSB7CiAgICAgICAgICAgICAgICAgICAgaHRtbCAr
PSAnPHRkIGNsYXNzPSJyb3ctaGVhZGVyIiBjb250ZW50ZWRpdGFibGU9InRydWUiPlplaWxlICcg
KyAociArIDEpICsgJzwvdGQ+JzsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICAgICAgICAgaHRtbCArPSAnPHRkIGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSI+PC90ZD4nOwogICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGh0bWwgKz0gJzwvdHI+JzsK
ICAgICAgICB9CiAgICAgICAgaHRtbCArPSAnPC90Ym9keT48L3RhYmxlPjwvZGl2Pjxicj4nOwoK
ICAgICAgICB2YXIgZWRpdG9yID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VkaXRvcklucHV0
Jyk7CiAgICAgICAgZWRpdG9yLmZvY3VzKCk7CiAgICAgICAgaWYgKHRoaXMuX3RibFJhbmdlKSB7
CiAgICAgICAgICAgIHZhciBzZWwgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7CiAgICAgICAgICAg
IHNlbC5yZW1vdmVBbGxSYW5nZXMoKTsKICAgICAgICAgICAgc2VsLmFkZFJhbmdlKHRoaXMuX3Ri
bFJhbmdlKTsKICAgICAgICAgICAgdGhpcy5fdGJsUmFuZ2UgPSBudWxsOwogICAgICAgIH0KICAg
ICAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgnaW5zZXJ0SFRNTCcsIGZhbHNlLCBodG1sKTsKICAg
ICAgICB0aGlzLnNhdmVTdGF0ZSgpOwogICAgfSwKCiAgICAvLyAtLS0gVHJlbm5saW5pZSArIElu
Zm9ib3ggLS0tCiAgICAvLyAtLS0gUkFXLU1vZHVzIChIVE1MLVF1ZWxsdGV4dCkgLS0tCiAgICBf
cmF3TW9kZTogZmFsc2UsCgogICAgdG9nZ2xlUmF3KCkgewogICAgICAgIHZhciBlZGl0b3IgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZWRpdG9ySW5wdXQnKTsKICAgICAgICB2YXIgYnRuID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2J0blJhd01vZGUnKTsKICAgICAgICBpZiAoIWVkaXRv
cikgcmV0dXJuOwoKICAgICAgICBpZiAodGhpcy5fcmF3TW9kZSkgewogICAgICAgICAgICAvLyBS
QVcg4oaSIFdZU0lXWUc6IHRleHRhcmVhLUluaGFsdCB6dXJ1ZWNrIGluIGRlbiBFZGl0b3IKICAg
ICAgICAgICAgdmFyIHRleHRhcmVhID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VkaXRvclJh
d1RleHRhcmVhJyk7CiAgICAgICAgICAgIGlmICh0ZXh0YXJlYSkgewogICAgICAgICAgICAgICAg
ZWRpdG9yLmlubmVySFRNTCA9IHRleHRhcmVhLnZhbHVlOwogICAgICAgICAgICAgICAgdGV4dGFy
ZWEucmVtb3ZlKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWRpdG9yLnN0eWxlLmRpc3Bs
YXkgPSAnJzsKICAgICAgICAgICAgZWRpdG9yLmNvbnRlbnRFZGl0YWJsZSA9ICd0cnVlJzsKICAg
ICAgICAgICAgYnRuLnN0eWxlLm9wYWNpdHkgPSAnMC42JzsKICAgICAgICAgICAgYnRuLnN0eWxl
LmJhY2tncm91bmQgPSAnJzsKICAgICAgICAgICAgdGhpcy5fcmF3TW9kZSA9IGZhbHNlOwogICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgIC8vIFdZU0lXWUcg4oaSIFJBVzogRWRpdG9yLUhUTUwg
aW4gVGV4dGFyZWEgYW56ZWlnZW4KICAgICAgICAgICAgdmFyIHJhd0h0bWwgPSBlZGl0b3IuaW5u
ZXJIVE1MOwogICAgICAgICAgICBlZGl0b3Iuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgICAg
ICAgICAgdmFyIHRleHRhcmVhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGV4dGFyZWEnKTsK
ICAgICAgICAgICAgdGV4dGFyZWEuaWQgPSAnZWRpdG9yUmF3VGV4dGFyZWEnOwogICAgICAgICAg
ICB0ZXh0YXJlYS52YWx1ZSA9IHJhd0h0bWw7CiAgICAgICAgICAgIHRleHRhcmVhLnN0eWxlLmNz
c1RleHQgPSAnd2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTttaW4taGVpZ2h0OjMwMHB4O3BhZGRpbmc6
MTJweDtib3JkZXI6bm9uZTtmb250LWZhbWlseTptb25vc3BhY2U7Zm9udC1zaXplOjEycHg7bGlu
ZS1oZWlnaHQ6MS42O2JhY2tncm91bmQ6dmFyKC0tYmctaW5wdXQpO2NvbG9yOnZhcigtLXRleHQt
cHJpbWFyeSk7cmVzaXplOm5vbmU7ZmxleDoxOyc7CiAgICAgICAgICAgIGVkaXRvci5wYXJlbnRO
b2RlLmluc2VydEJlZm9yZSh0ZXh0YXJlYSwgZWRpdG9yLm5leHRTaWJsaW5nKTsKICAgICAgICAg
ICAgYnRuLnN0eWxlLm9wYWNpdHkgPSAnMSc7CiAgICAgICAgICAgIGJ0bi5zdHlsZS5iYWNrZ3Jv
dW5kID0gJ3ZhcigtLXRleHQtaGVhZGluZyknOwogICAgICAgICAgICBidG4uc3R5bGUuY29sb3Ig
PSAnd2hpdGUnOwogICAgICAgICAgICB0aGlzLl9yYXdNb2RlID0gdHJ1ZTsKICAgICAgICB9CiAg
ICB9LAoKICAgIGluc2VydERpdmlkZXIoKSB7CiAgICAgICAgdmFyIGVkaXRvciA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdlZGl0b3JJbnB1dCcpOwogICAgICAgIGVkaXRvci5mb2N1cygpOwog
ICAgICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCdpbnNlcnRIVE1MJywgZmFsc2UsICc8aHIgY2xh
c3M9ImRyaXZlLWRpdmlkZXIiPjxicj4nKTsKICAgICAgICB0aGlzLnNhdmVTdGF0ZSgpOwogICAg
fSwKCiAgICBpbnNlcnRJbmZvYm94KCkgewogICAgICAgIHZhciBzZWwgPSB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCk7CiAgICAgICAgdGhpcy5faW5mb2JveFJhbmdlID0gKHNlbCAmJiBzZWwucmFuZ2VD
b3VudCkgPyBzZWwuZ2V0UmFuZ2VBdCgwKS5jbG9uZVJhbmdlKCkgOiBudWxsOwoKICAgICAgICB2
YXIgYnRuU3R5bGUgPSAnYmFja2dyb3VuZDpub25lO2JvcmRlcjoxcHggc29saWQgdmFyKC0tYm9y
ZGVyLWNvbG9yKTtib3JkZXItcmFkaXVzOjNweDtwYWRkaW5nOjNweCA4cHg7Y3Vyc29yOnBvaW50
ZXI7Zm9udC1zaXplOjEycHg7Y29sb3I6dmFyKC0tdGV4dC1wcmltYXJ5KTttaW4td2lkdGg6Mjhw
eDsnOwogICAgICAgIHZhciBidG5TdHlsZUJvbGQgPSBidG5TdHlsZSArICdmb250LXdlaWdodDo3
MDA7JzsKICAgICAgICB2YXIgYnRuU3R5bGVJdGFsaWMgPSBidG5TdHlsZSArICdmb250LXN0eWxl
Oml0YWxpYzsnOwogICAgICAgIHZhciBidG5TdHlsZVVuZGVybGluZSA9IGJ0blN0eWxlICsgJ3Rl
eHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7JzsKICAgICAgICB2YXIgc2VsZWN0U3R5bGUgPSAnYmFj
a2dyb3VuZDp2YXIoLS1iZy1pbnB1dCk7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXItY29s
b3IpO2JvcmRlci1yYWRpdXM6M3B4O3BhZGRpbmc6M3B4IDRweDtmb250LXNpemU6MTFweDtjb2xv
cjp2YXIoLS10ZXh0LXByaW1hcnkpO2N1cnNvcjpwb2ludGVyOyc7CgogICAgICAgIHZhciBtb2Rh
bCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgICAgIG1vZGFsLnN0eWxlLmNz
c1RleHQgPSAncG9zaXRpb246Zml4ZWQ7dG9wOjA7bGVmdDowO3dpZHRoOjEwMCU7aGVpZ2h0OjEw
MCU7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLDAuNSk7ei1pbmRleDoxMDUwMDtkaXNwbGF5OmZsZXg7
YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7JzsKICAgICAgICBtb2Rh
bC5vbmNsaWNrID0gZnVuY3Rpb24oZSkgeyBpZiAoZS50YXJnZXQgPT09IG1vZGFsKSBtb2RhbC5y
ZW1vdmUoKTsgfTsKICAgICAgICBtb2RhbC5pbm5lckhUTUwgPQogICAgICAgICAgICAnPGRpdiBz
dHlsZT0iYmFja2dyb3VuZDp2YXIoLS1iZy1jYXJkKTtib3JkZXItcmFkaXVzOjEwcHg7cGFkZGlu
ZzoyMHB4IDI0cHg7bWF4LXdpZHRoOjUyMHB4O3dpZHRoOjk0JTtib3gtc2hhZG93OjAgOHB4IDMy
cHggcmdiYSgwLDAsMCwwLjMpOyI+JyArCiAgICAgICAgICAgICAgICAnPGgzIHN0eWxlPSJjb2xv
cjp2YXIoLS10ZXh0LWhlYWRpbmcpO21hcmdpbi1ib3R0b206MTRweDsiPkluZm9ibG9jayBlaW5m
w7xnZW48L2gzPicgKwoKICAgICAgICAgICAgICAgICc8bGFiZWwgc3R5bGU9ImZvbnQtc2l6ZTox
MnB4O2ZvbnQtd2VpZ2h0OjYwMDtjb2xvcjp2YXIoLS10ZXh0LXNlY29uZGFyeSk7ZGlzcGxheTpi
bG9jazttYXJnaW4tYm90dG9tOjRweDsiPsOcYmVyc2NocmlmdDwvbGFiZWw+JyArCiAgICAgICAg
ICAgICAgICAnPGlucHV0IHR5cGU9InRleHQiIGlkPSJpbmZvYm94VGl0bGUiIHZhbHVlPSJIaW53
ZWlzIiBwbGFjZWhvbGRlcj0iei5CLiBIaW53ZWlzLCBXaWNodGlnLCBUaXBwLi4uIiAnICsKICAg
ICAgICAgICAgICAgICdzdHlsZT0id2lkdGg6MTAwJTtwYWRkaW5nOjhweCAxMHB4O2JvcmRlcjox
cHggc29saWQgdmFyKC0tYm9yZGVyLWNvbG9yKTtib3JkZXItcmFkaXVzOjRweDtmb250LXNpemU6
MTRweDtiYWNrZ3JvdW5kOnZhcigtLWJnLWlucHV0KTtjb2xvcjp2YXIoLS10ZXh0LXByaW1hcnkp
O21hcmdpbi1ib3R0b206MTRweDsiPicgKwoKICAgICAgICAgICAgICAgICc8bGFiZWwgc3R5bGU9
ImZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjYwMDtjb2xvcjp2YXIoLS10ZXh0LXNlY29uZGFy
eSk7ZGlzcGxheTpibG9jazttYXJnaW4tYm90dG9tOjRweDsiPkluaGFsdDwvbGFiZWw+JyArCiAg
ICAgICAgICAgICAgICAnPGRpdiBzdHlsZT0iYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXIt
Y29sb3IpO2JvcmRlci1yYWRpdXM6NHB4O292ZXJmbG93OmhpZGRlbjttYXJnaW4tYm90dG9tOjE0
cHg7Ij4nICsKICAgICAgICAgICAgICAgICAgICAnPGRpdiBpZD0iaW5mb2JveFRvb2xiYXIiIHN0
eWxlPSJkaXNwbGF5OmZsZXg7Z2FwOjRweDtmbGV4LXdyYXA6d3JhcDthbGlnbi1pdGVtczpjZW50
ZXI7cGFkZGluZzo2cHggOHB4O2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHZhcigtLWJvcmRlci1j
b2xvcik7YmFja2dyb3VuZDp2YXIoLS1iZy1jYXJkLWFsdCwjZjZmOGZhKTsiPicgKwogICAgICAg
ICAgICAgICAgICAgICAgICAnPGJ1dHRvbiBvbmNsaWNrPSJEcml2ZUVkaXRvci5faW5mb2JveENt
ZChcJ3VuZG9cJykiIHRpdGxlPSJSw7xja2fDpG5naWciIHN0eWxlPSInICsgYnRuU3R5bGUgKyAn
Ij4mIzg2MzA7PC9idXR0b24+JyArCiAgICAgICAgICAgICAgICAgICAgICAgICc8YnV0dG9uIG9u
Y2xpY2s9IkRyaXZlRWRpdG9yLl9pbmZvYm94Q21kKFwncmVkb1wnKSIgdGl0bGU9IldpZWRlcmhv
bGVuIiBzdHlsZT0iJyArIGJ0blN0eWxlICsgJyI+JiM4NjMxOzwvYnV0dG9uPicgKwogICAgICAg
ICAgICAgICAgICAgICAgICAnPHNwYW4gc3R5bGU9IndpZHRoOjFweDtoZWlnaHQ6MThweDtiYWNr
Z3JvdW5kOnZhcigtLWJvcmRlci1jb2xvcik7bWFyZ2luOjAgMnB4OyI+PC9zcGFuPicgKwogICAg
ICAgICAgICAgICAgICAgICAgICAnPGJ1dHRvbiBvbmNsaWNrPSJEcml2ZUVkaXRvci5faW5mb2Jv
eENtZChcJ2JvbGRcJykiIHRpdGxlPSJGZXR0IiBzdHlsZT0iJyArIGJ0blN0eWxlQm9sZCArICci
PkI8L2J1dHRvbj4nICsKICAgICAgICAgICAgICAgICAgICAgICAgJzxidXR0b24gb25jbGljaz0i
RHJpdmVFZGl0b3IuX2luZm9ib3hDbWQoXCdpdGFsaWNcJykiIHRpdGxlPSJLdXJzaXYiIHN0eWxl
PSInICsgYnRuU3R5bGVJdGFsaWMgKyAnIj5JPC9idXR0b24+JyArCiAgICAgICAgICAgICAgICAg
ICAgICAgICc8YnV0dG9uIG9uY2xpY2s9IkRyaXZlRWRpdG9yLl9pbmZvYm94Q21kKFwndW5kZXJs
aW5lXCcpIiB0aXRsZT0iVW50ZXJzdHJpY2hlbiIgc3R5bGU9IicgKyBidG5TdHlsZVVuZGVybGlu
ZSArICciPlU8L2J1dHRvbj4nICsKICAgICAgICAgICAgICAgICAgICAgICAgJzxzcGFuIHN0eWxl
PSJ3aWR0aDoxcHg7aGVpZ2h0OjE4cHg7YmFja2dyb3VuZDp2YXIoLS1ib3JkZXItY29sb3IpO21h
cmdpbjowIDJweDsiPjwvc3Bhbj4nICsKICAgICAgICAgICAgICAgICAgICAgICAgJzxidXR0b24g
b25jbGljaz0iRHJpdmVFZGl0b3IuX2luZm9ib3hDbWQoXCdpbnNlcnRVbm9yZGVyZWRMaXN0XCcp
IiB0aXRsZT0iQXVmesOkaGx1bmciIHN0eWxlPSInICsgYnRuU3R5bGUgKyAnIj4mIzgyMjY7IExp
c3RlPC9idXR0b24+JyArCiAgICAgICAgICAgICAgICAgICAgICAgICc8YnV0dG9uIG9uY2xpY2s9
IkRyaXZlRWRpdG9yLl9pbmZvYm94Q21kKFwnaW5zZXJ0T3JkZXJlZExpc3RcJykiIHRpdGxlPSJO
dW1tZXJpZXJ1bmciIHN0eWxlPSInICsgYnRuU3R5bGUgKyAnIj4xLiBMaXN0ZTwvYnV0dG9uPicg
KwogICAgICAgICAgICAgICAgICAgICAgICAnPHNwYW4gc3R5bGU9IndpZHRoOjFweDtoZWlnaHQ6
MThweDtiYWNrZ3JvdW5kOnZhcigtLWJvcmRlci1jb2xvcik7bWFyZ2luOjAgMnB4OyI+PC9zcGFu
PicgKwogICAgICAgICAgICAgICAgICAgICAgICAnPHNlbGVjdCBvbmNoYW5nZT0iRHJpdmVFZGl0
b3IuX2luZm9ib3hDbWQoXCdmb250U2l6ZVwnLHRoaXMudmFsdWUpO3RoaXMuc2VsZWN0ZWRJbmRl
eD0wOyIgdGl0bGU9IlNjaHJpZnRncsO2w59lIiBzdHlsZT0iJyArIHNlbGVjdFN0eWxlICsgJyI+
JyArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPG9wdGlvbiB2YWx1ZT0iIiBkaXNhYmxl
ZCBzZWxlY3RlZD5HcsO2w59lPC9vcHRpb24+JyArCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnPG9wdGlvbiB2YWx1ZT0iMSI+S2xlaW48L29wdGlvbj4nICsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICc8b3B0aW9uIHZhbHVlPSIzIj5Ob3JtYWw8L29wdGlvbj4nICsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICc8b3B0aW9uIHZhbHVlPSI0Ij5Hcm/Dnzwvb3B0aW9uPicgKwog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJzxvcHRpb24gdmFsdWU9IjUiPlNlaHIgZ3Jvw588
L29wdGlvbj4nICsKICAgICAgICAgICAgICAgICAgICAgICAgJzwvc2VsZWN0PicgKwogICAgICAg
ICAgICAgICAgICAgICAgICAnPHNlbGVjdCBvbmNoYW5nZT0iRHJpdmVFZGl0b3IuX2luZm9ib3hD
bWQoXCdmb3JlQ29sb3JcJyx0aGlzLnZhbHVlKTt0aGlzLnNlbGVjdGVkSW5kZXg9MDsiIHRpdGxl
PSJUZXh0ZmFyYmUiIHN0eWxlPSInICsgc2VsZWN0U3R5bGUgKyAnIj4nICsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICc8b3B0aW9uIHZhbHVlPSIiIGRpc2FibGVkIHNlbGVjdGVkPkZhcmJl
PC9vcHRpb24+JyArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPG9wdGlvbiB2YWx1ZT0i
IzAwMDAwMCIgc3R5bGU9ImNvbG9yOiMwMDAwMDA7Ij5TY2h3YXJ6PC9vcHRpb24+JyArCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnPG9wdGlvbiB2YWx1ZT0iIzJFNEE2MiIgc3R5bGU9ImNv
bG9yOiMyRTRBNjI7Ij5Qb2xpemVpLUJsYXU8L29wdGlvbj4nICsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICc8b3B0aW9uIHZhbHVlPSIjM2E3YWEzIiBzdHlsZT0iY29sb3I6IzNhN2FhMzsi
PkJsYXU8L29wdGlvbj4nICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8b3B0aW9uIHZh
bHVlPSIjOGIzYTYyIiBzdHlsZT0iY29sb3I6IzhiM2E2MjsiPkJvcmRlYXV4PC9vcHRpb24+JyAr
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPG9wdGlvbiB2YWx1ZT0iI2ZmMDAwMCIgc3R5
bGU9ImNvbG9yOiNmZjAwMDA7Ij5Sb3Q8L29wdGlvbj4nICsKICAgICAgICAgICAgICAgICAgICAg
ICAgJzwvc2VsZWN0PicgKwogICAgICAgICAgICAgICAgICAgICAgICAnPHNwYW4gc3R5bGU9Indp
ZHRoOjFweDtoZWlnaHQ6MThweDtiYWNrZ3JvdW5kOnZhcigtLWJvcmRlci1jb2xvcik7bWFyZ2lu
OjAgMnB4OyI+PC9zcGFuPicgKwogICAgICAgICAgICAgICAgICAgICAgICAnPGJ1dHRvbiBvbmNs
aWNrPSJEcml2ZUVkaXRvci5faW5mb2JveENtZChcJ2luc2VydEhvcml6b250YWxSdWxlXCcpIiB0
aXRsZT0iVHJlbm5saW5pZSIgc3R5bGU9IicgKyBidG5TdHlsZSArICciPuKAlSBMaW5pZTwvYnV0
dG9uPicgKwogICAgICAgICAgICAgICAgICAgICc8L2Rpdj4nICsKICAgICAgICAgICAgICAgICAg
ICAnPGRpdiBpZD0iaW5mb2JveENvbnRlbnQiIGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSIgJyArCiAg
ICAgICAgICAgICAgICAgICAgJ3N0eWxlPSJwYWRkaW5nOjEwcHggMTJweDttaW4taGVpZ2h0OjEw
MHB4O21heC1oZWlnaHQ6MjUwcHg7b3ZlcmZsb3cteTphdXRvO2ZvbnQtc2l6ZToxNHB4O2xpbmUt
aGVpZ2h0OjEuNjtjb2xvcjp2YXIoLS10ZXh0LXByaW1hcnkpO2JhY2tncm91bmQ6dmFyKC0tYmct
aW5wdXQpO291dGxpbmU6bm9uZTsiPjwvZGl2PicgKwogICAgICAgICAgICAgICAgJzwvZGl2Picg
KwoKICAgICAgICAgICAgICAgICc8ZGl2IHN0eWxlPSJkaXNwbGF5OmZsZXg7Z2FwOjhweDtqdXN0
aWZ5LWNvbnRlbnQ6ZmxleC1lbmQ7Ij4nICsKICAgICAgICAgICAgICAgICAgICAnPGJ1dHRvbiBv
bmNsaWNrPSJ0aGlzLmNsb3Nlc3QoXCdkaXZbc3R5bGVdXCcpLnBhcmVudEVsZW1lbnQucmVtb3Zl
KCkiIHN0eWxlPSJwYWRkaW5nOjhweCAxNnB4O2JvcmRlci1yYWRpdXM6NHB4O2JvcmRlcjoxcHgg
c29saWQgdmFyKC0tYm9yZGVyLWNvbG9yKTtiYWNrZ3JvdW5kOnZhcigtLWJnLWNhcmQpO2NvbG9y
OnZhcigtLXRleHQtcHJpbWFyeSk7Y3Vyc29yOnBvaW50ZXI7Ij5BYmJyZWNoZW48L2J1dHRvbj4n
ICsKICAgICAgICAgICAgICAgICAgICAnPGJ1dHRvbiBvbmNsaWNrPSJEcml2ZUVkaXRvci5fY29u
ZmlybUluZm9ib3goKSIgc3R5bGU9InBhZGRpbmc6OHB4IDE2cHg7Ym9yZGVyLXJhZGl1czo0cHg7
Ym9yZGVyOm5vbmU7YmFja2dyb3VuZDp2YXIoLS10ZXh0LWhlYWRpbmcpO2NvbG9yOndoaXRlO2N1
cnNvcjpwb2ludGVyO2ZvbnQtd2VpZ2h0OjYwMDsiPkVpbmbDvGdlbjwvYnV0dG9uPicgKwogICAg
ICAgICAgICAgICAgJzwvZGl2PicgKwogICAgICAgICAgICAnPC9kaXY+JzsKICAgICAgICB0aGlz
Ll9pbmZvYm94TW9kYWwgPSBtb2RhbDsKICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxk
KG1vZGFsKTsKICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnaW5mb2JveFRpdGxlJykuc2VsZWN0KCk7CiAgICAgICAgICAg
IC8vIEZva3VzLUhhbmRsaW5nOiBUb29sYmFyLUJ1dHRvbnMgc29sbGVuIEZva3VzIGltIENvbnRl
bnQgbGFzc2VuCiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbmZvYm94VG9v
bGJhcicpLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIGZ1bmN0aW9uKGUpIHsKICAgICAg
ICAgICAgICAgIGlmIChlLnRhcmdldC50YWdOYW1lID09PSAnQlVUVE9OJykgZS5wcmV2ZW50RGVm
YXVsdCgpOwogICAgICAgICAgICB9KTsKICAgICAgICB9LCA1MCk7CiAgICB9LAoKICAgIF9pbmZv
Ym94TW9kYWw6IG51bGwsCgogICAgLy8gRm9ybWF0aWVydW5nc2JlZmVobCBpbSBJbmZvYm94LUNv
bnRlbnRlZGl0YWJsZSBhdXNmdWVocmVuCiAgICBfaW5mb2JveENtZChjbWQsIHZhbHVlKSB7CiAg
ICAgICAgdmFyIGNvbnRlbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW5mb2JveENvbnRl
bnQnKTsKICAgICAgICBpZiAoIWNvbnRlbnQpIHJldHVybjsKICAgICAgICBjb250ZW50LmZvY3Vz
KCk7CiAgICAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoY21kLCBmYWxzZSwgdmFsdWUgfHwgbnVs
bCk7CiAgICB9LAoKICAgIF9jb25maXJtSW5mb2JveCgpIHsKICAgICAgICB2YXIgdGl0bGVJbnB1
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbmZvYm94VGl0bGUnKTsKICAgICAgICB2YXIg
Y29udGVudEVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2luZm9ib3hDb250ZW50Jyk7CiAg
ICAgICAgdmFyIHRpdGxlID0gdGl0bGVJbnB1dCA/IHRpdGxlSW5wdXQudmFsdWUudHJpbSgpIDog
J0hpbndlaXMnOwogICAgICAgIGlmICghdGl0bGUpIHRpdGxlID0gJ0hpbndlaXMnOwogICAgICAg
IHZhciBjb250ZW50ID0gY29udGVudEVsID8gY29udGVudEVsLmlubmVySFRNTC50cmltKCkgOiAn
JzsKICAgICAgICBpZiAoIWNvbnRlbnQgfHwgY29udGVudCA9PT0gJzxicj4nKSBjb250ZW50ID0g
JzxwPlRleHQgaGllciBlaW5nZWJlbi4uLjwvcD4nOwoKICAgICAgICAvLyBNb2RhbCBzY2hsaWVz
c2VuCiAgICAgICAgaWYgKHRoaXMuX2luZm9ib3hNb2RhbCkgeyB0aGlzLl9pbmZvYm94TW9kYWwu
cmVtb3ZlKCk7IHRoaXMuX2luZm9ib3hNb2RhbCA9IG51bGw7IH0KCiAgICAgICAgdmFyIGh0bWwg
PSAnPGRpdiBjbGFzcz0iZHJpdmUtaW5mb2JveCI+PGgzPicgKyBEcml2ZVBvcnRhbC5lc2NhcGVI
VE1MKHRpdGxlKSArICc8L2gzPicgKyBjb250ZW50ICsgJzwvZGl2PjxwPjxicj48L3A+JzsKCiAg
ICAgICAgdmFyIGVkaXRvciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdlZGl0b3JJbnB1dCcp
OwogICAgICAgIGVkaXRvci5mb2N1cygpOwogICAgICAgIGlmICh0aGlzLl9pbmZvYm94UmFuZ2Up
IHsKICAgICAgICAgICAgdmFyIHNlbCA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKICAgICAgICAg
ICAgc2VsLnJlbW92ZUFsbFJhbmdlcygpOwogICAgICAgICAgICBzZWwuYWRkUmFuZ2UodGhpcy5f
aW5mb2JveFJhbmdlKTsKICAgICAgICAgICAgdGhpcy5faW5mb2JveFJhbmdlID0gbnVsbDsKICAg
ICAgICB9CiAgICAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ2luc2VydEhUTUwnLCBmYWxzZSwg
aHRtbCk7CiAgICAgICAgdGhpcy5zYXZlU3RhdGUoKTsKICAgIH0sCgogICAgLy8gLS0tIFdpY2h0
aWctQmxvY2sgZWluZnVlZ2VuIC0tLQogICAgX2ltcG9ydGFudE1vZGFsOiBudWxsLAoKICAgIGlu
c2VydEltcG9ydGFudCgpIHsKICAgICAgICB2YXIgc2VsID0gd2luZG93LmdldFNlbGVjdGlvbigp
OwogICAgICAgIHRoaXMuX2ltcG9ydGFudFJhbmdlID0gKHNlbCAmJiBzZWwucmFuZ2VDb3VudCkg
PyBzZWwuZ2V0UmFuZ2VBdCgwKS5jbG9uZVJhbmdlKCkgOiBudWxsOwoKICAgICAgICB2YXIgbW9k
YWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgICAgICBtb2RhbC5zdHlsZS5j
c3NUZXh0ID0gJ3Bvc2l0aW9uOmZpeGVkO3RvcDowO2xlZnQ6MDt3aWR0aDoxMDAlO2hlaWdodDox
MDAlO2JhY2tncm91bmQ6cmdiYSgwLDAsMCwwLjUpO3otaW5kZXg6MTA1MDA7ZGlzcGxheTpmbGV4
O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyOyc7CiAgICAgICAgbW9k
YWwub25jbGljayA9IGZ1bmN0aW9uKGUpIHsgaWYgKGUudGFyZ2V0ID09PSBtb2RhbCkgbW9kYWwu
cmVtb3ZlKCk7IH07CiAgICAgICAgbW9kYWwuaW5uZXJIVE1MID0KICAgICAgICAgICAgJzxkaXYg
c3R5bGU9ImJhY2tncm91bmQ6dmFyKC0tYmctY2FyZCk7Ym9yZGVyLXJhZGl1czoxMHB4O3BhZGRp
bmc6MjBweCAyNHB4O21heC13aWR0aDo1MjBweDt3aWR0aDo5NCU7Ym94LXNoYWRvdzowIDhweCAz
MnB4IHJnYmEoMCwwLDAsMC4zKTsiPicgKwogICAgICAgICAgICAgICAgJzxkaXYgc3R5bGU9ImRp
c3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjEwcHg7bWFyZ2luLWJvdHRvbToxNHB4
OyI+JyArCiAgICAgICAgICAgICAgICAgICAgJzxpbWcgc3JjPSJjc3MvaWNvbnMvaW1wb3J0YW50
LnBuZyIgc3R5bGU9IndpZHRoOjIycHg7aGVpZ2h0OjIycHg7Ij4nICsKICAgICAgICAgICAgICAg
ICAgICAnPGgzIHN0eWxlPSJjb2xvcjp2YXIoLS10ZXh0LWhlYWRpbmcpO21hcmdpbjowOyI+V2lj
aHRpZ2VuIEhpbndlaXMgZWluZnVlZ2VuPC9oMz4nICsKICAgICAgICAgICAgICAgICc8L2Rpdj4n
ICsKICAgICAgICAgICAgICAgICc8cCBzdHlsZT0iZm9udC1zaXplOjEycHg7Y29sb3I6dmFyKC0t
dGV4dC1tdXRlZCk7bWFyZ2luLWJvdHRvbToxMnB4OyI+RGVyIFRleHQgd2lyZCBhbHMgYXVmZmFl
bGxpZ2VyIEJsb2NrIGltIEFydGlrZWwgZGFyZ2VzdGVsbHQsIHVtIGF1ZiBiZXNvbmRlcnMgd2lj
aHRpZ2UgSW5mb3JtYXRpb25lbiBoaW56dXdlaXNlbi48L3A+JyArCiAgICAgICAgICAgICAgICAn
PGxhYmVsIHN0eWxlPSJmb250LXNpemU6MTJweDtmb250LXdlaWdodDo2MDA7Y29sb3I6dmFyKC0t
dGV4dC1zZWNvbmRhcnkpO2Rpc3BsYXk6YmxvY2s7bWFyZ2luLWJvdHRvbTo0cHg7Ij5IaW53ZWlz
dGV4dDwvbGFiZWw+JyArCiAgICAgICAgICAgICAgICAnPHRleHRhcmVhIGlkPSJpbXBvcnRhbnRU
ZXh0IiByb3dzPSI0IiBwbGFjZWhvbGRlcj0iei5CLiBCaXR0ZSBiZWFjaHRlbiBTaWUsIGRhc3Mu
Li4iICcgKwogICAgICAgICAgICAgICAgJ3N0eWxlPSJ3aWR0aDoxMDAlO3BhZGRpbmc6MTBweCAx
MnB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyLWNvbG9yKTtib3JkZXItcmFkaXVzOjRw
eDtmb250LXNpemU6MTRweDtsaW5lLWhlaWdodDoxLjY7YmFja2dyb3VuZDp2YXIoLS1iZy1pbnB1
dCk7Y29sb3I6dmFyKC0tdGV4dC1wcmltYXJ5KTtyZXNpemU6dmVydGljYWw7Ij48L3RleHRhcmVh
PicgKwogICAgICAgICAgICAgICAgJzxkaXYgc3R5bGU9ImRpc3BsYXk6ZmxleDtnYXA6OHB4O2p1
c3RpZnktY29udGVudDpmbGV4LWVuZDttYXJnaW4tdG9wOjE0cHg7Ij4nICsKICAgICAgICAgICAg
ICAgICAgICAnPGJ1dHRvbiBvbmNsaWNrPSJ0aGlzLmNsb3Nlc3QoXCdkaXZbc3R5bGVdXCcpLnBh
cmVudEVsZW1lbnQucmVtb3ZlKCkiIHN0eWxlPSJwYWRkaW5nOjhweCAxNnB4O2JvcmRlci1yYWRp
dXM6NHB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyLWNvbG9yKTtiYWNrZ3JvdW5kOnZh
cigtLWJnLWNhcmQpO2NvbG9yOnZhcigtLXRleHQtcHJpbWFyeSk7Y3Vyc29yOnBvaW50ZXI7Ij5B
YmJyZWNoZW48L2J1dHRvbj4nICsKICAgICAgICAgICAgICAgICAgICAnPGJ1dHRvbiBvbmNsaWNr
PSJEcml2ZUVkaXRvci5fY29uZmlybUltcG9ydGFudCgpIiBzdHlsZT0icGFkZGluZzo4cHggMTZw
eDtib3JkZXItcmFkaXVzOjRweDtib3JkZXI6bm9uZTtiYWNrZ3JvdW5kOiMxYTIzMzI7Y29sb3I6
d2hpdGU7Y3Vyc29yOnBvaW50ZXI7Zm9udC13ZWlnaHQ6NjAwOyI+RWluZnVlZ2VuPC9idXR0b24+
JyArCiAgICAgICAgICAgICAgICAnPC9kaXY+JyArCiAgICAgICAgICAgICc8L2Rpdj4nOwogICAg
ICAgIHRoaXMuX2ltcG9ydGFudE1vZGFsID0gbW9kYWw7CiAgICAgICAgZG9jdW1lbnQuYm9keS5h
cHBlbmRDaGlsZChtb2RhbCk7CiAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAg
ICAgICAgdmFyIHRhID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ltcG9ydGFudFRleHQnKTsK
ICAgICAgICAgICAgaWYgKHRhKSB0YS5mb2N1cygpOwogICAgICAgIH0sIDUwKTsKICAgIH0sCgog
ICAgX2NvbmZpcm1JbXBvcnRhbnQoKSB7CiAgICAgICAgdmFyIHRleHRFbCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdpbXBvcnRhbnRUZXh0Jyk7CiAgICAgICAgdmFyIHRleHQgPSB0ZXh0RWwg
PyB0ZXh0RWwudmFsdWUudHJpbSgpIDogJyc7CiAgICAgICAgaWYgKCF0ZXh0KSB7CiAgICAgICAg
ICAgIHNob3dUb2FzdCgnQml0dGUgZWluZW4gSGlud2Vpc3RleHQgZWluZ2ViZW4nLCAnd2Fybmlu
ZycpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAvLyBNb2RhbCBzY2hs
aWVzc2VuCiAgICAgICAgaWYgKHRoaXMuX2ltcG9ydGFudE1vZGFsKSB7IHRoaXMuX2ltcG9ydGFu
dE1vZGFsLnJlbW92ZSgpOyB0aGlzLl9pbXBvcnRhbnRNb2RhbCA9IG51bGw7IH0KCiAgICAgICAg
dmFyIGNvbnRlbnQgPSBEcml2ZVBvcnRhbC5lc2NhcGVIVE1MKHRleHQpLnJlcGxhY2UoL1xuL2cs
ICc8YnI+Jyk7CiAgICAgICAgdmFyIGh0bWwgPSAnPGRpdiBjbGFzcz0iZHJpdmUtaW1wb3J0YW50
IiBjb250ZW50ZWRpdGFibGU9ImZhbHNlIj4nICsKICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImRy
aXZlLWltcG9ydGFudC1oZWFkZXIiPjxpbWcgc3JjPSJjc3MvaWNvbnMvaW1wb3J0YW50LnBuZyI+
IFdpY2h0aWc8L2Rpdj4nICsKICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImRyaXZlLWltcG9ydGFu
dC1ib2R5Ij4nICsgY29udGVudCArICc8L2Rpdj4nICsKICAgICAgICAnPC9kaXY+PHA+PGJyPjwv
cD4nOwoKICAgICAgICB2YXIgZWRpdG9yID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VkaXRv
cklucHV0Jyk7CiAgICAgICAgZWRpdG9yLmZvY3VzKCk7CiAgICAgICAgaWYgKHRoaXMuX2ltcG9y
dGFudFJhbmdlKSB7CiAgICAgICAgICAgIHZhciBzZWwgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7
CiAgICAgICAgICAgIHNlbC5yZW1vdmVBbGxSYW5nZXMoKTsKICAgICAgICAgICAgc2VsLmFkZFJh
bmdlKHRoaXMuX2ltcG9ydGFudFJhbmdlKTsKICAgICAgICAgICAgdGhpcy5faW1wb3J0YW50UmFu
Z2UgPSBudWxsOwogICAgICAgIH0KICAgICAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgnaW5zZXJ0
SFRNTCcsIGZhbHNlLCBodG1sKTsKICAgICAgICB0aGlzLnNhdmVTdGF0ZSgpOwogICAgfSwKCiAg
ICAvLyAtLS0gRm9ybWF0aWVydW5nc2JlZmVobGUgLS0tCiAgICBoZWFkaW5nKHRhZykgewogICAg
ICAgIGNvbnN0IGlucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VkaXRvcklucHV0Jyk7
CiAgICAgICAgaW5wdXQuZm9jdXMoKTsKICAgICAgICBjb25zdCBzZWwgPSB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCk7CiAgICAgICAgaWYgKCFzZWwucmFuZ2VDb3VudCkgcmV0dXJuOwogICAgICAgIGNv
bnN0IHJhbmdlID0gc2VsLmdldFJhbmdlQXQoMCk7CgogICAgICAgIC8vIEFrdHVlbGxlbiBCbG9j
ayBmaW5kZW4gKFAsIERJViBvZGVyIGJlcmVpdHMgZWluIEhlYWRpbmcpCiAgICAgICAgbGV0IGJs
b2NrID0gcmFuZ2Uuc3RhcnRDb250YWluZXI7CiAgICAgICAgd2hpbGUgKGJsb2NrICYmIGJsb2Nr
ICE9PSBpbnB1dCAmJiAhWydQJywnRElWJywnSDEnLCdIMicsJ0gzJywnSDQnLCdINScsJ0g2J10u
aW5jbHVkZXMoYmxvY2subm9kZU5hbWUpKSB7CiAgICAgICAgICAgIGJsb2NrID0gYmxvY2sucGFy
ZW50Tm9kZTsKICAgICAgICB9CgogICAgICAgIGlmICghdGFnKSB7CiAgICAgICAgICAgIC8vICJB
YnNhdHoiIGdld2FlaGx0OiBIZWFkaW5nIHp1cnVlY2sgaW4gPHA+IHVtd2FuZGVsbgogICAgICAg
ICAgICBpZiAoYmxvY2sgJiYgYmxvY2sgIT09IGlucHV0ICYmIFsnSDEnLCdIMicsJ0gzJywnSDQn
LCdINScsJ0g2J10uaW5jbHVkZXMoYmxvY2subm9kZU5hbWUpKSB7CiAgICAgICAgICAgICAgICBj
b25zdCBwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgncCcpOwogICAgICAgICAgICAgICAgcC5p
bm5lckhUTUwgPSBibG9jay5pbm5lckhUTUw7CiAgICAgICAgICAgICAgICBibG9jay5wYXJlbnRO
b2RlLnJlcGxhY2VDaGlsZChwLCBibG9jayk7CiAgICAgICAgICAgICAgICBjb25zdCBuZXdSYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CiAgICAgICAgICAgICAgICBuZXdSYW5nZS5zZWxl
Y3ROb2RlQ29udGVudHMocCk7CiAgICAgICAgICAgICAgICBuZXdSYW5nZS5jb2xsYXBzZShmYWxz
ZSk7CiAgICAgICAgICAgICAgICBzZWwucmVtb3ZlQWxsUmFuZ2VzKCk7CiAgICAgICAgICAgICAg
ICBzZWwuYWRkUmFuZ2UobmV3UmFuZ2UpOwogICAgICAgICAgICAgICAgdGhpcy5zYXZlU3RhdGUo
KTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBp
ZiAoYmxvY2sgJiYgYmxvY2sgIT09IGlucHV0KSB7CiAgICAgICAgICAgIC8vIEJlc3RlaGVuZGVu
IEJsb2NrIGluIEhlYWRpbmcgdW13YW5kZWxuCiAgICAgICAgICAgIGNvbnN0IGhlYWRpbmcgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KHRhZyk7CiAgICAgICAgICAgIGhlYWRpbmcuaW5uZXJIVE1M
ID0gYmxvY2suaW5uZXJIVE1MOwogICAgICAgICAgICBibG9jay5wYXJlbnROb2RlLnJlcGxhY2VD
aGlsZChoZWFkaW5nLCBibG9jayk7CiAgICAgICAgICAgIC8vIEN1cnNvciBhbnMgRW5kZSBzZXR6
ZW4KICAgICAgICAgICAgY29uc3QgbmV3UmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwog
ICAgICAgICAgICBuZXdSYW5nZS5zZWxlY3ROb2RlQ29udGVudHMoaGVhZGluZyk7CiAgICAgICAg
ICAgIG5ld1JhbmdlLmNvbGxhcHNlKGZhbHNlKTsKICAgICAgICAgICAgc2VsLnJlbW92ZUFsbFJh
bmdlcygpOwogICAgICAgICAgICBzZWwuYWRkUmFuZ2UobmV3UmFuZ2UpOwogICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgIC8vIEtlaW4gQmxvY2s6IE5ldWVzIEhlYWRpbmcgZWluZnVlZ2VuCiAg
ICAgICAgICAgIGNvbnN0IGhlYWRpbmcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHRhZyk7CiAg
ICAgICAgICAgIGhlYWRpbmcudGV4dENvbnRlbnQgPSBzZWwudG9TdHJpbmcoKSB8fCAnw5xiZXJz
Y2hyaWZ0JzsKICAgICAgICAgICAgcmFuZ2UuZGVsZXRlQ29udGVudHMoKTsKICAgICAgICAgICAg
cmFuZ2UuaW5zZXJ0Tm9kZShoZWFkaW5nKTsKICAgICAgICAgICAgLy8gQ3Vyc29yIGFucyBFbmRl
CiAgICAgICAgICAgIGNvbnN0IG5ld1JhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKICAg
ICAgICAgICAgbmV3UmFuZ2Uuc2VsZWN0Tm9kZUNvbnRlbnRzKGhlYWRpbmcpOwogICAgICAgICAg
ICBuZXdSYW5nZS5jb2xsYXBzZShmYWxzZSk7CiAgICAgICAgICAgIHNlbC5yZW1vdmVBbGxSYW5n
ZXMoKTsKICAgICAgICAgICAgc2VsLmFkZFJhbmdlKG5ld1JhbmdlKTsKICAgICAgICB9CiAgICAg
ICAgdGhpcy5zYXZlU3RhdGUoKTsKICAgIH0sCgogICAgY29tbWFuZChjbWQpIHsKICAgICAgICBj
b25zdCBpbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdlZGl0b3JJbnB1dCcpOwogICAg
ICAgIGlucHV0LmZvY3VzKCk7CiAgICAgICAgY29uc3Qgc2VsID0gd2luZG93LmdldFNlbGVjdGlv
bigpOwogICAgICAgIGlmICghc2VsLnJhbmdlQ291bnQpIHJldHVybjsKCiAgICAgICAgc3dpdGNo
IChjbWQpIHsKICAgICAgICAgICAgY2FzZSAnYm9sZCc6IHRoaXMud3JhcFNlbGVjdGlvbignc3Ry
b25nJyk7IGJyZWFrOwogICAgICAgICAgICBjYXNlICdpdGFsaWMnOiB0aGlzLndyYXBTZWxlY3Rp
b24oJ2VtJyk7IGJyZWFrOwogICAgICAgICAgICBjYXNlICd1bmRlcmxpbmUnOiB0aGlzLndyYXBT
ZWxlY3Rpb24oJ3UnKTsgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgJ2luc2VydFVub3JkZXJlZExp
c3QnOiB0aGlzLmluc2VydExpc3QoJ3VsJyk7IGJyZWFrOwogICAgICAgICAgICBjYXNlICdpbnNl
cnRPcmRlcmVkTGlzdCc6IHRoaXMuaW5zZXJ0TGlzdCgnb2wnKTsgYnJlYWs7CiAgICAgICAgfQog
ICAgICAgIGlucHV0LmZvY3VzKCk7CiAgICB9LAoKICAgIHdyYXBTZWxlY3Rpb24odGFnTmFtZSkg
ewogICAgICAgIGNvbnN0IHNlbCA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKICAgICAgICBpZiAo
IXNlbC5yYW5nZUNvdW50KSByZXR1cm47CiAgICAgICAgY29uc3QgcmFuZ2UgPSBzZWwuZ2V0UmFu
Z2VBdCgwKTsKICAgICAgICBpZiAocmFuZ2UuY29sbGFwc2VkKSByZXR1cm47CiAgICAgICAgY29u
c3QgVEFHID0gdGFnTmFtZS50b1VwcGVyQ2FzZSgpOwoKICAgICAgICB0cnkgewogICAgICAgICAg
ICAvLyBQcnVlZmVuIG9iIGRpZSBnZXNhbXRlIFNlbGVrdGlvbiBiZXJlaXRzIGluIGRpZXNlbSBU
YWcgbGllZ3QKICAgICAgICAgICAgbGV0IG5vZGUgPSByYW5nZS5jb21tb25BbmNlc3RvckNvbnRh
aW5lcjsKICAgICAgICAgICAgbGV0IGV4aXN0aW5nID0gbnVsbDsKICAgICAgICAgICAgd2hpbGUg
KG5vZGUgJiYgbm9kZS5ub2RlVHlwZSAhPT0gTm9kZS5ET0NVTUVOVF9OT0RFKSB7CiAgICAgICAg
ICAgICAgICBpZiAobm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5FTEVNRU5UX05PREUgJiYgbm9kZS50
YWdOYW1lID09PSBUQUcpIHsKICAgICAgICAgICAgICAgICAgICBleGlzdGluZyA9IG5vZGU7CiAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICBub2RlID0gbm9kZS5wYXJlbnROb2RlOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAo
ZXhpc3RpbmcpIHsKICAgICAgICAgICAgICAgIC8vIFRvZ2dsZSBPRkY6IFRhZyBlbnRmZXJuZW4s
IEtpbmRlciBiZWliZWhhbHRlbgogICAgICAgICAgICAgICAgY29uc3QgcGFyZW50ID0gZXhpc3Rp
bmcucGFyZW50Tm9kZTsKICAgICAgICAgICAgICAgIGNvbnN0IGNoaWxkcmVuID0gQXJyYXkuZnJv
bShleGlzdGluZy5jaGlsZE5vZGVzKTsKICAgICAgICAgICAgICAgIGNvbnN0IGZpcnN0ID0gY2hp
bGRyZW5bMF0sIGxhc3QgPSBjaGlsZHJlbltjaGlsZHJlbi5sZW5ndGggLSAxXTsKICAgICAgICAg
ICAgICAgIHdoaWxlIChleGlzdGluZy5maXJzdENoaWxkKSBwYXJlbnQuaW5zZXJ0QmVmb3JlKGV4
aXN0aW5nLmZpcnN0Q2hpbGQsIGV4aXN0aW5nKTsKICAgICAgICAgICAgICAgIHBhcmVudC5yZW1v
dmVDaGlsZChleGlzdGluZyk7CiAgICAgICAgICAgICAgICBpZiAoZmlyc3QgJiYgbGFzdCkgewog
ICAgICAgICAgICAgICAgICAgIHJhbmdlLnNldFN0YXJ0QmVmb3JlKGZpcnN0KTsKICAgICAgICAg
ICAgICAgICAgICByYW5nZS5zZXRFbmRBZnRlcihsYXN0KTsKICAgICAgICAgICAgICAgICAgICBz
ZWwucmVtb3ZlQWxsUmFuZ2VzKCk7CiAgICAgICAgICAgICAgICAgICAgc2VsLmFkZFJhbmdlKHJh
bmdlKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
ICAgIGNvbnN0IGZyYWcgPSByYW5nZS5leHRyYWN0Q29udGVudHMoKTsKICAgICAgICAgICAgICAg
IC8vIEJlcmVpdHMgdm9yaGFuZGVuZSBnbGVpY2hlIFRhZ3MgaW0gRnJhZ21lbnQgYXVmbG9lc2Vu
ICh2ZXJoaW5kZXJ0IFZlcnNjaGFjaHRlbHVuZykKICAgICAgICAgICAgICAgIGZyYWcucXVlcnlT
ZWxlY3RvckFsbCh0YWdOYW1lKS5mb3JFYWNoKGZ1bmN0aW9uKGlubmVyKSB7CiAgICAgICAgICAg
ICAgICAgICAgd2hpbGUgKGlubmVyLmZpcnN0Q2hpbGQpIGlubmVyLnBhcmVudE5vZGUuaW5zZXJ0
QmVmb3JlKGlubmVyLmZpcnN0Q2hpbGQsIGlubmVyKTsKICAgICAgICAgICAgICAgICAgICBpbm5l
ci5yZW1vdmUoKTsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgY29uc3Qgd3Jh
cHBlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGFnTmFtZSk7CiAgICAgICAgICAgICAgICB3
cmFwcGVyLmFwcGVuZENoaWxkKGZyYWcpOwogICAgICAgICAgICAgICAgcmFuZ2UuaW5zZXJ0Tm9k
ZSh3cmFwcGVyKTsKICAgICAgICAgICAgICAgIHJhbmdlLnNlbGVjdE5vZGVDb250ZW50cyh3cmFw
cGVyKTsKICAgICAgICAgICAgICAgIHNlbC5yZW1vdmVBbGxSYW5nZXMoKTsKICAgICAgICAgICAg
ICAgIHNlbC5hZGRSYW5nZShyYW5nZSk7CiAgICAgICAgICAgIH0KICAgICAgICB9IGNhdGNoIChl
KSB7CiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1dyYXAgZXJyb3I6JywgZSk7CiAgICAgICAg
fQogICAgfSwKCiAgICBpbnNlcnRMaXN0KGxpc3RUeXBlKSB7CiAgICAgICAgY29uc3Qgc2VsID0g
d2luZG93LmdldFNlbGVjdGlvbigpOwogICAgICAgIGlmICghc2VsLnJhbmdlQ291bnQpIHJldHVy
bjsKICAgICAgICBjb25zdCByYW5nZSA9IHNlbC5nZXRSYW5nZUF0KDApOwogICAgICAgIGNvbnN0
IGxpc3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KGxpc3RUeXBlKTsKCiAgICAgICAgaWYgKCFy
YW5nZS5jb2xsYXBzZWQpIHsKICAgICAgICAgICAgY29uc3QgZnJhZyA9IHJhbmdlLmV4dHJhY3RD
b250ZW50cygpOwogICAgICAgICAgICAvLyBUZXh0IGF1ZiBaZWlsZW51bWJydWVjaGUgYXVmdGVp
bGVuIGZ1ZXIgc2VwYXJhdGUgTEktRWxlbWVudGUKICAgICAgICAgICAgY29uc3QgdGVtcERpdiA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgICAgICAgICB0ZW1wRGl2LmFwcGVu
ZENoaWxkKGZyYWcpOwogICAgICAgICAgICBjb25zdCB0ZXh0ID0gdGVtcERpdi5pbm5lckhUTUw7
CiAgICAgICAgICAgIC8vIFNwbGl0IGF1ZiA8YnI+LCBcbiBvZGVyIEJsb2NrLUVsZW1lbnRlCiAg
ICAgICAgICAgIGNvbnN0IGxpbmVzID0gdGV4dC5zcGxpdCgvPGJyXHMqXC8/Pi9naSkubWFwKGZ1
bmN0aW9uKGwpIHsgcmV0dXJuIGwudHJpbSgpOyB9KS5maWx0ZXIoZnVuY3Rpb24obCkgeyByZXR1
cm4gbC5sZW5ndGggPiAwOyB9KTsKICAgICAgICAgICAgaWYgKGxpbmVzLmxlbmd0aCA+IDEpIHsK
ICAgICAgICAgICAgICAgIGxpbmVzLmZvckVhY2goZnVuY3Rpb24obGluZSkgewogICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGxpID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGknKTsKICAgICAg
ICAgICAgICAgICAgICBsaS5pbm5lckhUTUwgPSBsaW5lOwogICAgICAgICAgICAgICAgICAgIGxp
c3QuYXBwZW5kQ2hpbGQobGkpOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICAgICBjb25zdCBsaSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xp
Jyk7CiAgICAgICAgICAgICAgICBsaS5hcHBlbmRDaGlsZCh0ZW1wRGl2LmZpcnN0Q2hpbGQgfHwg
ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGVtcERpdi50ZXh0Q29udGVudCkpOwogICAgICAgICAg
ICAgICAgd2hpbGUgKHRlbXBEaXYuZmlyc3RDaGlsZCkgbGkuYXBwZW5kQ2hpbGQodGVtcERpdi5m
aXJzdENoaWxkKTsKICAgICAgICAgICAgICAgIGxpc3QuYXBwZW5kQ2hpbGQobGkpOwogICAgICAg
ICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgY29uc3QgbGkgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdsaScpOwogICAgICAgICAgICBsaS5hcHBlbmRDaGlsZChkb2N1bWVudC5j
cmVhdGVUZXh0Tm9kZSgnXHUwMEEwJykpOwogICAgICAgICAgICBsaXN0LmFwcGVuZENoaWxkKGxp
KTsKICAgICAgICB9CgogICAgICAgIHJhbmdlLmRlbGV0ZUNvbnRlbnRzKCk7CiAgICAgICAgcmFu
Z2UuaW5zZXJ0Tm9kZShsaXN0KTsKICAgICAgICBjb25zdCBsYXN0TGkgPSBsaXN0LnF1ZXJ5U2Vs
ZWN0b3IoJ2xpOmxhc3QtY2hpbGQnKTsKICAgICAgICBpZiAobGFzdExpKSB7CiAgICAgICAgICAg
IHJhbmdlLnNlbGVjdE5vZGVDb250ZW50cyhsYXN0TGkpOwogICAgICAgICAgICByYW5nZS5jb2xs
YXBzZShmYWxzZSk7CiAgICAgICAgfQogICAgICAgIHNlbC5yZW1vdmVBbGxSYW5nZXMoKTsKICAg
ICAgICBzZWwuYWRkUmFuZ2UocmFuZ2UpOwogICAgfSwKCiAgICBmb250U2l6ZShzaXplKSB7CiAg
ICAgICAgaWYgKCFzaXplKSByZXR1cm47CiAgICAgICAgY29uc3QgaW5wdXQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnZWRpdG9ySW5wdXQnKTsKICAgICAgICBpbnB1dC5mb2N1cygpOwogICAg
ICAgIGNvbnN0IHNlbCA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKICAgICAgICBpZiAoIXNlbC5y
YW5nZUNvdW50KSByZXR1cm47CiAgICAgICAgY29uc3QgcmFuZ2UgPSBzZWwuZ2V0UmFuZ2VBdCgw
KTsKICAgICAgICBpZiAocmFuZ2UuY29sbGFwc2VkKSByZXR1cm47CgogICAgICAgIGNvbnN0IGZy
YWcgPSByYW5nZS5leHRyYWN0Q29udGVudHMoKTsKICAgICAgICAvLyBCZXN0ZWhlbmRlIGZvbnRT
aXplLVNwYW5zIGltIEZyYWdtZW50IGF1ZmxvZXNlbgogICAgICAgIGZyYWcucXVlcnlTZWxlY3Rv
ckFsbCgnc3BhbicpLmZvckVhY2goZnVuY3Rpb24ocykgewogICAgICAgICAgICBpZiAocy5zdHls
ZS5mb250U2l6ZSAmJiBzLnN0eWxlLmxlbmd0aCA8PSAxKSB7CiAgICAgICAgICAgICAgICAvLyBT
cGFuIGhhdCBudXIgZm9udC1zaXplIC0+IGR1cmNoIEluaGFsdCBlcnNldHplbgogICAgICAgICAg
ICAgICAgd2hpbGUgKHMuZmlyc3RDaGlsZCkgcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShzLmZp
cnN0Q2hpbGQsIHMpOwogICAgICAgICAgICAgICAgcy5yZW1vdmUoKTsKICAgICAgICAgICAgfSBl
bHNlIGlmIChzLnN0eWxlLmZvbnRTaXplKSB7CiAgICAgICAgICAgICAgICBzLnN0eWxlLnJlbW92
ZVByb3BlcnR5KCdmb250LXNpemUnKTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgICAg
IGNvbnN0IHdyYXBwZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7CiAgICAgICAg
d3JhcHBlci5zdHlsZS5mb250U2l6ZSA9IHNpemUgKyAncHgnOwogICAgICAgIHdyYXBwZXIuYXBw
ZW5kQ2hpbGQoZnJhZyk7CiAgICAgICAgcmFuZ2UuaW5zZXJ0Tm9kZSh3cmFwcGVyKTsKICAgICAg
ICByYW5nZS5zZWxlY3ROb2RlQ29udGVudHMod3JhcHBlcik7CiAgICAgICAgc2VsLnJlbW92ZUFs
bFJhbmdlcygpOwogICAgICAgIHNlbC5hZGRSYW5nZShyYW5nZSk7CgogICAgICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdmb250U2l6ZVNlbGVjdCcpLnZhbHVlID0gJyc7CiAgICAgICAgaW5w
dXQuZm9jdXMoKTsKICAgIH0sCgogICAgY29sb3IoY29sb3IpIHsKICAgICAgICBjb25zdCBpbnB1
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdlZGl0b3JJbnB1dCcpOwogICAgICAgIGNvbnN0
IHNlbCA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKICAgICAgICBsZXQgc2F2ZWRSYW5nZSA9IG51
bGw7CiAgICAgICAgaWYgKHNlbC5yYW5nZUNvdW50ID4gMCkgc2F2ZWRSYW5nZSA9IHNlbC5nZXRS
YW5nZUF0KDApLmNsb25lUmFuZ2UoKTsKCiAgICAgICAgaW5wdXQuZm9jdXMoKTsKCiAgICAgICAg
aWYgKHNhdmVkUmFuZ2UgJiYgIXNhdmVkUmFuZ2UuY29sbGFwc2VkKSB7CiAgICAgICAgICAgIHNl
bC5yZW1vdmVBbGxSYW5nZXMoKTsKICAgICAgICAgICAgc2VsLmFkZFJhbmdlKHNhdmVkUmFuZ2Up
OwogICAgICAgICAgICBjb25zdCBmcmFnID0gc2F2ZWRSYW5nZS5leHRyYWN0Q29udGVudHMoKTsK
ICAgICAgICAgICAgLy8gQmVzdGVoZW5kZSBjb2xvci1TcGFucyBpbSBGcmFnbWVudCBhdWZsb2Vz
ZW4KICAgICAgICAgICAgZnJhZy5xdWVyeVNlbGVjdG9yQWxsKCdzcGFuJykuZm9yRWFjaChmdW5j
dGlvbihzKSB7CiAgICAgICAgICAgICAgICBpZiAocy5zdHlsZS5jb2xvciAmJiBzLnN0eWxlLmxl
bmd0aCA8PSAxKSB7CiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHMuZmlyc3RDaGlsZCkgcy5w
YXJlbnROb2RlLmluc2VydEJlZm9yZShzLmZpcnN0Q2hpbGQsIHMpOwogICAgICAgICAgICAgICAg
ICAgIHMucmVtb3ZlKCk7CiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHMuc3R5bGUuY29sb3Ip
IHsKICAgICAgICAgICAgICAgICAgICBzLnN0eWxlLnJlbW92ZVByb3BlcnR5KCdjb2xvcicpOwog
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgICAgICAgICAgY29uc3Qgd3JhcHBl
ciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTsKICAgICAgICAgICAgd3JhcHBlci5z
dHlsZS5jb2xvciA9IGNvbG9yOwogICAgICAgICAgICB3cmFwcGVyLmFwcGVuZENoaWxkKGZyYWcp
OwogICAgICAgICAgICBzYXZlZFJhbmdlLmluc2VydE5vZGUod3JhcHBlcik7CiAgICAgICAgICAg
IHNhdmVkUmFuZ2Uuc2VsZWN0Tm9kZUNvbnRlbnRzKHdyYXBwZXIpOwogICAgICAgICAgICBzZWwu
cmVtb3ZlQWxsUmFuZ2VzKCk7CiAgICAgICAgICAgIHNlbC5hZGRSYW5nZShzYXZlZFJhbmdlKTsK
ICAgICAgICB9CiAgICAgICAgaW5wdXQuZm9jdXMoKTsKICAgIH0sCgogICAgLy8gLS0tIE1lZGlh
IFR5cGUgRGV0ZWN0aW9uIC0tLQogICAgLy8gLS0tIFBhc3RlOiBFeHRlcm5lIEJpbGRlciBsb2th
bCBzcGVpY2hlcm4gLS0tCgogICAgX3Bhc3RlVXBsb2FkSW5Qcm9ncmVzczogZmFsc2UsCgogICAg
YXN5bmMgX3Bhc3RlSW1hZ2VCbG9iKGJsb2IpIHsKICAgICAgICBpZiAoIXRoaXMuY3VycmVudERv
YyB8fCAhRHJpdmVGUy5jb25uZWN0ZWQpIHJldHVybjsKICAgICAgICBpZiAodGhpcy5fcGFzdGVV
cGxvYWRJblByb2dyZXNzKSByZXR1cm47IC8vIERvcHBlbC1FaW5mdWVnZW4gdmVyaGluZGVybgog
ICAgICAgIHRoaXMuX3Bhc3RlVXBsb2FkSW5Qcm9ncmVzcyA9IHRydWU7CiAgICAgICAgY29uc3Qg
ZG9jSWQgPSB0aGlzLmN1cnJlbnREb2MuaWQ7CiAgICAgICAgY29uc3QgZXh0ID0gYmxvYi50eXBl
LnNwbGl0KCcvJylbMV0gfHwgJ3BuZyc7CiAgICAgICAgY29uc3QgdHMgPSBEYXRlLm5vdygpOwog
ICAgICAgIGNvbnN0IGZpbGVuYW1lID0gJ3Bhc3RlXycgKyB0cyArICcuJyArIGV4dDsKICAgICAg
ICBjb25zdCBmaWxlID0gbmV3IEZpbGUoW2Jsb2JdLCBmaWxlbmFtZSwgeyB0eXBlOiBibG9iLnR5
cGUgfSk7CgogICAgICAgIHRyeSB7CiAgICAgICAgICAgIHNob3dUb2FzdCgnQmlsZCB3aXJkIGdl
c3BlaWNoZXJ0Li4uJywgJ2luZm8nLCAzMDAwKTsKICAgICAgICAgICAgY29uc3QgcmVsUGF0aCA9
IGF3YWl0IERyaXZlRlMudXBsb2FkTWVkaWEoZG9jSWQsIGZpbGUpOwogICAgICAgICAgICBjb25z
dCBtZWRpYUlkID0gdGhpcy5nZW5lcmF0ZU1lZGlhSWQoKTsKCiAgICAgICAgICAgIGlmICghdGhp
cy5jdXJyZW50RG9jLm1lZGlhcykgdGhpcy5jdXJyZW50RG9jLm1lZGlhcyA9IFtdOwogICAgICAg
ICAgICB0aGlzLmN1cnJlbnREb2MubWVkaWFzLnB1c2goewogICAgICAgICAgICAgICAgdHlwZTog
J2ltYWdlJywgdXJsOiByZWxQYXRoLCB0aXRsZTogZmlsZW5hbWUsCiAgICAgICAgICAgICAgICBk
ZXNjcmlwdGlvbjogJycsIGRpc3BsYXlNb2RlOiAnaW5saW5lJywKICAgICAgICAgICAgICAgIGFs
aWdubWVudDogJ2NlbnRlcicsIHNpemU6ICdsYXJnZScsIG1lZGlhSWQ6IG1lZGlhSWQKICAgICAg
ICAgICAgfSk7CgogICAgICAgICAgICBjb25zdCBmaWd1cmUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdmaWd1cmUnKTsKICAgICAgICAgICAgZmlndXJlLmNsYXNzTmFtZSA9ICdkcml2ZS1tZWRp
YSBtZWRpYS1sYXJnZSBtZWRpYS1jZW50ZXInOwogICAgICAgICAgICBmaWd1cmUuc2V0QXR0cmli
dXRlKCdkYXRhLW1lZGlhLWlkJywgbWVkaWFJZCk7CiAgICAgICAgICAgIGZpZ3VyZS5jb250ZW50
RWRpdGFibGUgPSAnZmFsc2UnOwogICAgICAgICAgICBjb25zdCBpbWcgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdpbWcnKTsKICAgICAgICAgICAgaW1nLnNyYyA9IHJlbFBhdGg7CiAgICAgICAg
ICAgIGltZy5hbHQgPSBmaWxlbmFtZTsKICAgICAgICAgICAgZmlndXJlLmFwcGVuZENoaWxkKGlt
Zyk7CiAgICAgICAgICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCdpbnNlcnRIVE1MJywgZmFsc2Us
IGZpZ3VyZS5vdXRlckhUTUwpOwogICAgICAgICAgICB0aGlzLl9yZW5kZXJNZWRpYUxpc3QoKTsK
ICAgICAgICAgICAgc2hvd1RvYXN0KCdCaWxkIGVpbmdlZsO8Z3QnLCAnc3VjY2VzcycpOwogICAg
ICAgIH0gY2F0Y2ggKGVycikgewogICAgICAgICAgICBzaG93VG9hc3QoJ0JpbGQga29ubnRlIG5p
Y2h0IGdlc3BlaWNoZXJ0IHdlcmRlbjogJyArIGVyci5tZXNzYWdlLCAnZXJyb3InKTsKICAgICAg
ICB9IGZpbmFsbHkgewogICAgICAgICAgICB0aGlzLl9wYXN0ZVVwbG9hZEluUHJvZ3Jlc3MgPSBm
YWxzZTsKICAgICAgICB9CiAgICB9LAoKICAgIGFzeW5jIF9wYXN0ZUh0bWxXaXRoRXh0ZXJuYWxJ
bWFnZXMoYm9keUVsLCBleHRlcm5hbEltZ3MpIHsKICAgICAgICBjb25zdCBkb2NJZCA9IHRoaXMu
Y3VycmVudERvYy5pZDsKICAgICAgICBpZiAoIXRoaXMuY3VycmVudERvYy5tZWRpYXMpIHRoaXMu
Y3VycmVudERvYy5tZWRpYXMgPSBbXTsKCiAgICAgICAgc2hvd1RvYXN0KCdFeHRlcm5lIEJpbGRl
ciB3ZXJkZW4gaGVydW50ZXJnZWxhZGVuICgnICsgZXh0ZXJuYWxJbWdzLmxlbmd0aCArICcpLi4u
JywgJ2luZm8nLCA0MDAwKTsKICAgICAgICBsZXQgc2F2ZWQgPSAwOwoKICAgICAgICBmb3IgKGNv
bnN0IGltZyBvZiBleHRlcm5hbEltZ3MpIHsKICAgICAgICAgICAgY29uc3Qgc3JjID0gaW1nLnNy
YzsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgIC8vIEJpbGQgaGVydW50ZXJsYWRl
bjogSW0gU2VydmVyLU1vZHVzIHVlYmVyIFByb3h5ICh1bWdlaHQgQ09SUykKICAgICAgICAgICAg
ICAgIGxldCByZXNwb25zZTsKICAgICAgICAgICAgICAgIGlmIChEcml2ZUZTLm1vZGUgPT09ICdz
ZXJ2ZXInKSB7CiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCgnL2Fw
aS9mZXRjaC1pbWFnZScsIHsKICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCcs
CiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBs
aWNhdGlvbi9qc29uJyB9LAogICAgICAgICAgICAgICAgICAgICAgICBib2R5OiBKU09OLnN0cmlu
Z2lmeSh7IHVybDogc3JjIH0pCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goc3Jj
LCB7IG1vZGU6ICdjb3JzJyB9KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlm
ICghcmVzcG9uc2Uub2spIHsgaW1nLnJlbW92ZSgpOyBjb250aW51ZTsgfQogICAgICAgICAgICAg
ICAgY29uc3QgYmxvYiA9IGF3YWl0IHJlc3BvbnNlLmJsb2IoKTsKCiAgICAgICAgICAgICAgICAv
LyBOdXIgZWNodGUgQmlsZGVyIHZlcmFyYmVpdGVuIChrZWluZSAwLUJ5dGUgdHJhY2tpbmctcGl4
ZWwgb2RlciBGZWhsZXIpCiAgICAgICAgICAgICAgICBpZiAoIWJsb2IudHlwZS5zdGFydHNXaXRo
KCdpbWFnZS8nKSB8fCBibG9iLnNpemUgPCAxMDApIHsKICAgICAgICAgICAgICAgICAgICBpbWcu
cmVtb3ZlKCk7CiAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICB9
CgogICAgICAgICAgICAgICAgY29uc3QgZXh0ID0gYmxvYi50eXBlLnNwbGl0KCcvJylbMV0gfHwg
J3BuZyc7CiAgICAgICAgICAgICAgICBjb25zdCB0cyA9IERhdGUubm93KCkgKyAnXycgKyBzYXZl
ZDsKICAgICAgICAgICAgICAgIGNvbnN0IGZpbGVuYW1lID0gJ3dlYl8nICsgdHMgKyAnLicgKyBl
eHQ7CiAgICAgICAgICAgICAgICBjb25zdCBmaWxlID0gbmV3IEZpbGUoW2Jsb2JdLCBmaWxlbmFt
ZSwgeyB0eXBlOiBibG9iLnR5cGUgfSk7CgogICAgICAgICAgICAgICAgY29uc3QgcmVsUGF0aCA9
IGF3YWl0IERyaXZlRlMudXBsb2FkTWVkaWEoZG9jSWQsIGZpbGUpOwogICAgICAgICAgICAgICAg
Y29uc3QgbWVkaWFJZCA9IHRoaXMuZ2VuZXJhdGVNZWRpYUlkKCk7CgogICAgICAgICAgICAgICAg
dGhpcy5jdXJyZW50RG9jLm1lZGlhcy5wdXNoKHsKICAgICAgICAgICAgICAgICAgICB0eXBlOiAn
aW1hZ2UnLCB1cmw6IHJlbFBhdGgsIHRpdGxlOiBmaWxlbmFtZSwKICAgICAgICAgICAgICAgICAg
ICBkZXNjcmlwdGlvbjogJycsIGRpc3BsYXlNb2RlOiAnaW5saW5lJywKICAgICAgICAgICAgICAg
ICAgICBhbGlnbm1lbnQ6ICcnLCBzaXplOiAnbGFyZ2UnLCBtZWRpYUlkOiBtZWRpYUlkCiAgICAg
ICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICAvLyBmaWd1cmUtRWxlbWVudCBlcnN0ZWxs
ZW4gZGFtaXQgZXMgb2ZmbGluZSBmdW5rdGlvbmllcnQKICAgICAgICAgICAgICAgIGNvbnN0IGZp
Z3VyZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2ZpZ3VyZScpOwogICAgICAgICAgICAgICAg
ZmlndXJlLmNsYXNzTmFtZSA9ICdkcml2ZS1tZWRpYSBtZWRpYS1sYXJnZSc7CiAgICAgICAgICAg
ICAgICBmaWd1cmUuc2V0QXR0cmlidXRlKCdkYXRhLW1lZGlhLWlkJywgbWVkaWFJZCk7CiAgICAg
ICAgICAgICAgICBmaWd1cmUuY29udGVudEVkaXRhYmxlID0gJ2ZhbHNlJzsKICAgICAgICAgICAg
ICAgIGNvbnN0IG5ld0ltZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2ltZycpOwogICAgICAg
ICAgICAgICAgbmV3SW1nLnNyYyA9IHJlbFBhdGg7CiAgICAgICAgICAgICAgICBuZXdJbWcuYWx0
ID0gaW1nLmFsdCB8fCBmaWxlbmFtZTsKICAgICAgICAgICAgICAgIGZpZ3VyZS5hcHBlbmRDaGls
ZChuZXdJbWcpOwoKICAgICAgICAgICAgICAgIC8vIE9yaWdpbmFsIGltZyBkdXJjaCBmaWd1cmUg
ZXJzZXR6ZW4KICAgICAgICAgICAgICAgIGltZy5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZChmaWd1
cmUsIGltZyk7CiAgICAgICAgICAgICAgICBzYXZlZCsrOwogICAgICAgICAgICB9IGNhdGNoIHsK
ICAgICAgICAgICAgICAgIC8vIEJpbGQga29ubnRlIG5pY2h0IGdlbGFkZW4gd2VyZGVuIC0gZW50
ZmVybmVuIHN0YXR0IGthcHV0dGUgUmVmZXJlbnoKICAgICAgICAgICAgICAgIGltZy5yZW1vdmUo
KTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8gQmVyZWluaWd0ZXMgSFRNTCBl
aW5mdWVnZW4KICAgICAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgnaW5zZXJ0SFRNTCcsIGZhbHNl
LCBib2R5RWwuaW5uZXJIVE1MKTsKICAgICAgICB0aGlzLl9yZW5kZXJNZWRpYUxpc3QoKTsKICAg
ICAgICBpZiAoc2F2ZWQgPiAwKSB7CiAgICAgICAgICAgIHNob3dUb2FzdChzYXZlZCArICcgQmls
ZCcgKyAoc2F2ZWQgPiAxID8gJ2VyJyA6ICcnKSArICcgbG9rYWwgZ2VzcGVpY2hlcnQnLCAnc3Vj
Y2VzcycpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHNob3dUb2FzdCgnS2VpbmUgQmls
ZGVyIGtvbm50ZW4gaGVydW50ZXJnZWxhZGVuIHdlcmRlbiAoZXZ0bC4gQ09SUy1TY2h1dHopJywg
J3dhcm5pbmcnKTsKICAgICAgICB9CiAgICB9LAoKICAgIGRldGVjdE1lZGlhVHlwZShmaWxlKSB7
CiAgICAgICAgaWYgKGZpbGUudHlwZS5zdGFydHNXaXRoKCdpbWFnZS8nKSkgcmV0dXJuICdpbWFn
ZSc7CiAgICAgICAgaWYgKGZpbGUudHlwZS5zdGFydHNXaXRoKCd2aWRlby8nKSkgcmV0dXJuICd2
aWRlbyc7CiAgICAgICAgaWYgKGZpbGUudHlwZS5zdGFydHNXaXRoKCdhdWRpby8nKSkgcmV0dXJu
ICdhdWRpbyc7CiAgICAgICAgaWYgKGZpbGUudHlwZSA9PT0gJ2FwcGxpY2F0aW9uL3BkZicpIHJl
dHVybiAncGRmJzsKICAgICAgICBjb25zdCBleHQgPSBmaWxlLm5hbWUuc3BsaXQoJy4nKS5wb3Ao
KS50b0xvd2VyQ2FzZSgpOwogICAgICAgIGlmIChleHQgPT09ICdkb2N4JykgcmV0dXJuICdkb2N4
JzsKICAgICAgICBpZiAoZXh0ID09PSAneGxzeCcpIHJldHVybiAneGxzeCc7CiAgICAgICAgaWYg
KGV4dCA9PT0gJ3BwdHgnKSByZXR1cm4gJ3BwdHgnOwogICAgICAgIHJldHVybiAnZmlsZSc7CiAg
ICB9LAoKICAgIGdlbmVyYXRlTWVkaWFJZCgpIHsKICAgICAgICBpZiAoIXRoaXMuY3VycmVudERv
YyB8fCAhdGhpcy5jdXJyZW50RG9jLm1lZGlhcykgcmV0dXJuICdtMDAxJzsKICAgICAgICBsZXQg
bWF4ID0gMDsKICAgICAgICB0aGlzLmN1cnJlbnREb2MubWVkaWFzLmZvckVhY2gobSA9PiB7CiAg
ICAgICAgICAgIGlmIChtLm1lZGlhSWQpIHsKICAgICAgICAgICAgICAgIGNvbnN0IG4gPSBwYXJz
ZUludChtLm1lZGlhSWQucmVwbGFjZSgnbScsICcnKSwgMTApOwogICAgICAgICAgICAgICAgaWYg
KG4gPiBtYXgpIG1heCA9IG47CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKICAgICAgICByZXR1
cm4gJ20nICsgU3RyaW5nKG1heCArIDEpLnBhZFN0YXJ0KDMsICcwJyk7CiAgICB9LAoKICAgIC8v
IC0tLSBVcGxvYWQgRGlhbG9nIC0tLQogICAgX3BlbmRpbmdGaWxlczogW10sCiAgICBfcGVuZGlu
Z0luZGV4OiAwLAogICAgX3VwbG9hZE9wdGlvbnM6IHsgZGlzcGxheU1vZGU6ICdhdHRhY2htZW50
JywgYWxpZ246ICdjZW50ZXInLCBzaXplOiAndGh1bWJuYWlsJyB9LAogICAgX3NhdmVkRWRpdG9y
UmFuZ2U6IG51bGwsCgogICAgLy8gVXBsb2FkLUVpbnN0aWVncy1Nb2RhbCBtaXQgRHJhZyZEcm9w
IHVuZCBFcmtsYWVydW5nIG9lZmZuZW4KICAgIHNob3dVcGxvYWRNb2RhbCgpIHsKICAgICAgICBp
ZiAoIXRoaXMuY3VycmVudERvYyB8fCAhRHJpdmVGUy5jb25uZWN0ZWQpIHsKICAgICAgICAgICAg
c2hvd1RvYXN0KCdCaXR0ZSB6dWVyc3QgZWluIERva3VtZW50IMO2ZmZuZW4nLCAnd2FybmluZycp
OwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIC8vIEN1cnNvci1Qb3NpdGlv
biBtZXJrZW4KICAgICAgICBjb25zdCBzZWwgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7CiAgICAg
ICAgaWYgKHNlbC5yYW5nZUNvdW50ID4gMCkgewogICAgICAgICAgICB0aGlzLl9zYXZlZEVkaXRv
clJhbmdlID0gc2VsLmdldFJhbmdlQXQoMCkuY2xvbmVSYW5nZSgpOwogICAgICAgIH0KICAgICAg
ICBjb25zdCBtb2RhbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtZWRpYVVwbG9hZFN0YXJ0
TW9kYWwnKTsKICAgICAgICBtb2RhbC5jbGFzc0xpc3QuYWRkKCdhY3RpdmUnKTsKCiAgICAgICAg
Ly8gRHJhZyAmIERyb3AgU2V0dXAgKG51ciBlaW5tYWwpCiAgICAgICAgY29uc3QgZHJvcFpvbmUg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndXBsb2FkRHJvcFpvbmUnKTsKICAgICAgICBpZiAo
IWRyb3Bab25lLl9kcmFnU2V0dXApIHsKICAgICAgICAgICAgZHJvcFpvbmUuX2RyYWdTZXR1cCA9
IHRydWU7CiAgICAgICAgICAgIGRyb3Bab25lLmFkZEV2ZW50TGlzdGVuZXIoJ2RyYWdvdmVyJywg
KGUpID0+IHsgZS5wcmV2ZW50RGVmYXVsdCgpOyBkcm9wWm9uZS5jbGFzc0xpc3QuYWRkKCdkcmFn
LW92ZXInKTsgfSk7CiAgICAgICAgICAgIGRyb3Bab25lLmFkZEV2ZW50TGlzdGVuZXIoJ2RyYWds
ZWF2ZScsICgpID0+IHsgZHJvcFpvbmUuY2xhc3NMaXN0LnJlbW92ZSgnZHJhZy1vdmVyJyk7IH0p
OwogICAgICAgICAgICBkcm9wWm9uZS5hZGRFdmVudExpc3RlbmVyKCdkcm9wJywgKGUpID0+IHsK
ICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgICAgIGRyb3Ba
b25lLmNsYXNzTGlzdC5yZW1vdmUoJ2RyYWctb3ZlcicpOwogICAgICAgICAgICAgICAgY29uc3Qg
ZmlsZXMgPSBBcnJheS5mcm9tKGUuZGF0YVRyYW5zZmVyLmZpbGVzKS5maWx0ZXIoZiA9PiB7CiAg
ICAgICAgICAgICAgICAgICAgY29uc3QgZXh0ID0gZi5uYW1lLnNwbGl0KCcuJykucG9wKCkudG9M
b3dlckNhc2UoKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZi50eXBlLnN0YXJ0c1dpdGgo
J2ltYWdlLycpIHx8IGYudHlwZS5zdGFydHNXaXRoKCd2aWRlby8nKSB8fCBmLnR5cGUuc3RhcnRz
V2l0aCgnYXVkaW8vJykgfHwKICAgICAgICAgICAgICAgICAgICAgICAgZi50eXBlID09PSAnYXBw
bGljYXRpb24vcGRmJyB8fCBbJ2RvY3gnLCd4bHN4JywncHB0eCddLmluY2x1ZGVzKGV4dCk7CiAg
ICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIGlmIChmaWxlcy5sZW5ndGggPT09IDAp
IHsKICAgICAgICAgICAgICAgICAgICBzaG93VG9hc3QoJ0RhdGVpdHlwIG5pY2h0IHVudGVyc3TD
vHR6dCcsICd3YXJuaW5nJyk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgRHJpdmVFZGl0b3IuX3N0YXJ0RmlsZXNVcGxvYWQoZmls
ZXMpOwogICAgICAgICAgICB9KTsKICAgICAgICAgICAgLy8gS2xpY2sgYXVmIFpvbmUgPSBEYXRl
aWF1c3dhaGwKICAgICAgICAgICAgZHJvcFpvbmUuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAo
ZSkgPT4gewogICAgICAgICAgICAgICAgaWYgKGUudGFyZ2V0LnRhZ05hbWUgIT09ICdCVVRUT04n
KSBEcml2ZUVkaXRvci51cGxvYWRNZWRpYSgpOwogICAgICAgICAgICB9KTsKICAgICAgICB9CiAg
ICB9LAoKICAgIGNsb3NlVXBsb2FkU3RhcnRNb2RhbCgpIHsKICAgICAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnbWVkaWFVcGxvYWRTdGFydE1vZGFsJykuY2xhc3NMaXN0LnJlbW92ZSgnYWN0
aXZlJyk7CiAgICB9LAoKICAgIC8vIERhdGVpYXVzd2FobC1EaWFsb2cgKG5hdGl2KSBvZWZmbmVu
CiAgICB1cGxvYWRNZWRpYSgpIHsKICAgICAgICBpZiAoIXRoaXMuY3VycmVudERvYyB8fCAhRHJp
dmVGUy5jb25uZWN0ZWQpIHsKICAgICAgICAgICAgc2hvd1RvYXN0KCdCaXR0ZSB6dWVyc3QgZWlu
IERva3VtZW50IMO2ZmZuZW4nLCAnd2FybmluZycpOwogICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgfQoKICAgICAgICBjb25zdCBmaWxlSW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdp
bnB1dCcpOwogICAgICAgIGZpbGVJbnB1dC50eXBlID0gJ2ZpbGUnOwogICAgICAgIGZpbGVJbnB1
dC5hY2NlcHQgPSAnaW1hZ2UvKix2aWRlby8qLGF1ZGlvLyosLnBkZiwuZG9jeCwueGxzeCwucHB0
eCc7CiAgICAgICAgZmlsZUlucHV0Lm11bHRpcGxlID0gdHJ1ZTsKCiAgICAgICAgZmlsZUlucHV0
Lm9uY2hhbmdlID0gKGUpID0+IHsKICAgICAgICAgICAgY29uc3QgZmlsZXMgPSBBcnJheS5mcm9t
KGUudGFyZ2V0LmZpbGVzKTsKICAgICAgICAgICAgaWYgKGZpbGVzLmxlbmd0aCA9PT0gMCkgcmV0
dXJuOwogICAgICAgICAgICB0aGlzLl9zdGFydEZpbGVzVXBsb2FkKGZpbGVzKTsKICAgICAgICB9
OwoKICAgICAgICBmaWxlSW5wdXQuY2xpY2soKTsKICAgIH0sCgogICAgLy8gR2VtZWluc2FtZXIg
RWluc3RpZWc6IERhdGVpZW4gaW4gRm9ybWF0aWVydW5ncy1RdWV1ZSBzdGVsbGVuCiAgICBfc3Rh
cnRGaWxlc1VwbG9hZChmaWxlcykgewogICAgICAgIC8vIEN1cnNvci1Qb3NpdGlvbiBtZXJrZW4g
ZmFsbHMgbm9jaCBuaWNodCBnZXNjaGVoZW4KICAgICAgICBpZiAoIXRoaXMuX3NhdmVkRWRpdG9y
UmFuZ2UpIHsKICAgICAgICAgICAgY29uc3Qgc2VsID0gd2luZG93LmdldFNlbGVjdGlvbigpOwog
ICAgICAgICAgICBpZiAoc2VsLnJhbmdlQ291bnQgPiAwKSB7CiAgICAgICAgICAgICAgICB0aGlz
Ll9zYXZlZEVkaXRvclJhbmdlID0gc2VsLmdldFJhbmdlQXQoMCkuY2xvbmVSYW5nZSgpOwogICAg
ICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHRoaXMuX3BlbmRpbmdGaWxlcyA9IGZpbGVzOwog
ICAgICAgIHRoaXMuX3BlbmRpbmdJbmRleCA9IDA7CiAgICAgICAgLy8gRWluc3RpZWdzLU1vZGFs
IHNjaGxpZXNzZW4sIEZvcm1hdGllcnVuZ3MtRGlhbG9nIG9lZmZuZW4KICAgICAgICB0aGlzLmNs
b3NlVXBsb2FkU3RhcnRNb2RhbCgpOwogICAgICAgIHRoaXMuc2hvd1VwbG9hZERpYWxvZygpOwog
ICAgfSwKCiAgICBzaG93VXBsb2FkRGlhbG9nKCkgewogICAgICAgIGlmICh0aGlzLl9wZW5kaW5n
SW5kZXggPj0gdGhpcy5fcGVuZGluZ0ZpbGVzLmxlbmd0aCkgewogICAgICAgICAgICB0aGlzLmNs
b3NlVXBsb2FkRGlhbG9nKCk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAg
IGNvbnN0IGZpbGUgPSB0aGlzLl9wZW5kaW5nRmlsZXNbdGhpcy5fcGVuZGluZ0luZGV4XTsKICAg
ICAgICBjb25zdCB0eXBlID0gdGhpcy5kZXRlY3RNZWRpYVR5cGUoZmlsZSk7CiAgICAgICAgY29u
c3QgcmVtYWluaW5nID0gdGhpcy5fcGVuZGluZ0ZpbGVzLmxlbmd0aCAtIHRoaXMuX3BlbmRpbmdJ
bmRleDsKCiAgICAgICAgLy8gUmVzZXQgb3B0aW9ucwogICAgICAgIHRoaXMuX3VwbG9hZE9wdGlv
bnMgPSB7IGRpc3BsYXlNb2RlOiAnYXR0YWNobWVudCcsIGFsaWduOiAnY2VudGVyJywgc2l6ZTog
J3RodW1ibmFpbCcgfTsKCiAgICAgICAgLy8gSGVhZGVyIG1pdCBGb3J0c2Nocml0dAogICAgICAg
IGNvbnN0IHRpdGxlRWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndXBsb2FkRGlhbG9nVGl0
bGUnKTsKICAgICAgICBpZiAodGhpcy5fcGVuZGluZ0ZpbGVzLmxlbmd0aCA+IDEpIHsKICAgICAg
ICAgICAgdGl0bGVFbC5pbm5lckhUTUwgPSAnRGF0ZWkga29uZmlndXJpZXJlbiA8c3BhbiBzdHls
ZT0iZm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxM3B4O29wYWNpdHk6MC44OyI+KCcgKyAodGhp
cy5fcGVuZGluZ0luZGV4ICsgMSkgKyAnIHZvbiAnICsgdGhpcy5fcGVuZGluZ0ZpbGVzLmxlbmd0
aCArICcpPC9zcGFuPic7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgdGl0bGVFbC50ZXh0
Q29udGVudCA9ICdEYXRlaSBrb25maWd1cmllcmVuJzsKICAgICAgICB9CgogICAgICAgIC8vIFBy
ZXZpZXcgbWl0IERhdGVpaW5mbwogICAgICAgIGNvbnN0IHByZXZpZXcgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgndXBsb2FkUHJldmlldycpOwogICAgICAgIGNvbnN0IGZpbGVTaXplTUIgPSAo
ZmlsZS5zaXplIC8gKDEwMjQgKiAxMDI0KSkudG9GaXhlZCgxKTsKICAgICAgICBjb25zdCBmaWxl
U2l6ZVRleHQgPSBmaWxlLnNpemUgPCAxMDI0KjEwMjQKICAgICAgICAgICAgPyBNYXRoLnJvdW5k
KGZpbGUuc2l6ZSAvIDEwMjQpICsgJyBLQicKICAgICAgICAgICAgOiBmaWxlU2l6ZU1CICsgJyBN
Qic7CiAgICAgICAgY29uc3QgZmlsZUluZm9IdG1sID0gJzxwIHN0eWxlPSJtYXJnaW4tdG9wOjhw
eDtjb2xvcjp2YXIoLS10ZXh0LW11dGVkKTtmb250LXNpemU6MTJweDsiPicgKwogICAgICAgICAg
ICBEcml2ZVBvcnRhbC5lc2NhcGVIVE1MKGZpbGUubmFtZSkgKyAnICgnICsgZmlsZVNpemVUZXh0
ICsgJyk8L3A+JzsKCiAgICAgICAgaWYgKHR5cGUgPT09ICdpbWFnZScpIHsKICAgICAgICAgICAg
Y29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTsKICAgICAgICAgICAgcmVhZGVyLm9ubG9h
ZCA9IChlKSA9PiB7IHByZXZpZXcuaW5uZXJIVE1MID0gJzxpbWcgc3JjPSInICsgZS50YXJnZXQu
cmVzdWx0ICsgJyI+JyArIGZpbGVJbmZvSHRtbDsgfTsKICAgICAgICAgICAgcmVhZGVyLnJlYWRB
c0RhdGFVUkwoZmlsZSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgY29uc3QgaWNvbkNs
YXNzID0gdHlwZTsKICAgICAgICAgICAgY29uc3QgbGFiZWwgPSB0eXBlLnRvVXBwZXJDYXNlKCk7
CiAgICAgICAgICAgIHByZXZpZXcuaW5uZXJIVE1MID0gJzxzcGFuIGNsYXNzPSJkcml2ZS1maWxl
LWljb24gJyArIGljb25DbGFzcyArICciIHN0eWxlPSJ3aWR0aDo2MHB4O2hlaWdodDo2MHB4O2Zv
bnQtc2l6ZToxOHB4O21hcmdpbjoxMHB4IGF1dG87Ij4nICsgbGFiZWwgKyAnPC9zcGFuPicgKyBm
aWxlSW5mb0h0bWw7CiAgICAgICAgfQoKICAgICAgICAvLyBUaXRsZSArIENhcHRpb24KICAgICAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndXBsb2FkVGl0bGUnKS52YWx1ZSA9IGZpbGUubmFt
ZS5yZXBsYWNlKC9cLlteLl0rJC8sICcnKTsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgndXBsb2FkQ2FwdGlvbicpLnZhbHVlID0gJyc7CgogICAgICAgIC8vIERpc3BsYXkgbW9kZSBv
cHRpb25zICh0eXBlLWRlcGVuZGVudCkKICAgICAgICBjb25zdCBkaXNwbGF5R3JvdXAgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgndXBsb2FkRGlzcGxheU9wdGlvbnMnKTsKICAgICAgICBsZXQg
b3B0aW9ucyA9ICc8YnV0dG9uIGNsYXNzPSJ1cGxvYWQtb3B0aW9uLWJ0biBhY3RpdmUiIGRhdGEt
ZGlzcGxheT0iYXR0YWNobWVudCIgb25jbGljaz0iRHJpdmVFZGl0b3Iuc2V0VXBsb2FkT3B0aW9u
KFwnZGlzcGxheVwnLHRoaXMpIj5Bbmhhbmc8L2J1dHRvbj4nOwoKICAgICAgICBpZiAodHlwZSA9
PT0gJ2ltYWdlJykgewogICAgICAgICAgICBvcHRpb25zICs9ICc8YnV0dG9uIGNsYXNzPSJ1cGxv
YWQtb3B0aW9uLWJ0biIgZGF0YS1kaXNwbGF5PSJpbmxpbmUiIG9uY2xpY2s9IkRyaXZlRWRpdG9y
LnNldFVwbG9hZE9wdGlvbihcJ2Rpc3BsYXlcJyx0aGlzKSI+SW0gQXJ0aWtlbDwvYnV0dG9uPic7
CiAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAncGRmJykgewogICAgICAgICAgICBvcHRpb25z
ICs9ICc8YnV0dG9uIGNsYXNzPSJ1cGxvYWQtb3B0aW9uLWJ0biIgZGF0YS1kaXNwbGF5PSJwZGYt
bGluayIgb25jbGljaz0iRHJpdmVFZGl0b3Iuc2V0VXBsb2FkT3B0aW9uKFwnZGlzcGxheVwnLHRo
aXMpIj5QREYtTGluayBpbSBBcnRpa2VsPC9idXR0b24+JzsKICAgICAgICAgICAgb3B0aW9ucyAr
PSAnPGJ1dHRvbiBjbGFzcz0idXBsb2FkLW9wdGlvbi1idG4iIGRhdGEtZGlzcGxheT0icGRmLWlm
cmFtZSIgb25jbGljaz0iRHJpdmVFZGl0b3Iuc2V0VXBsb2FkT3B0aW9uKFwnZGlzcGxheVwnLHRo
aXMpIj5QREYgZWluZ2ViZXR0ZXQ8L2J1dHRvbj4nOwogICAgICAgIH0gZWxzZSBpZiAodHlwZSA9
PT0gJ3ZpZGVvJyB8fCB0eXBlID09PSAnYXVkaW8nKSB7CiAgICAgICAgICAgIG9wdGlvbnMgKz0g
JzxidXR0b24gY2xhc3M9InVwbG9hZC1vcHRpb24tYnRuIiBkYXRhLWRpc3BsYXk9Im1lZGlhLWlu
bGluZSIgb25jbGljaz0iRHJpdmVFZGl0b3Iuc2V0VXBsb2FkT3B0aW9uKFwnZGlzcGxheVwnLHRo
aXMpIj5JbSBBcnRpa2VsPC9idXR0b24+JzsKICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdk
b2N4JyB8fCB0eXBlID09PSAneGxzeCcgfHwgdHlwZSA9PT0gJ3BwdHgnKSB7CiAgICAgICAgICAg
IG9wdGlvbnMgKz0gJzxidXR0b24gY2xhc3M9InVwbG9hZC1vcHRpb24tYnRuIiBkYXRhLWRpc3Bs
YXk9Im9mZmljZS1pbmxpbmUiIG9uY2xpY2s9IkRyaXZlRWRpdG9yLnNldFVwbG9hZE9wdGlvbihc
J2Rpc3BsYXlcJyx0aGlzKSI+SW0gQXJ0aWtlbDwvYnV0dG9uPic7CiAgICAgICAgfQoKICAgICAg
ICBkaXNwbGF5R3JvdXAuaW5uZXJIVE1MID0gb3B0aW9uczsKCiAgICAgICAgLy8gSGlkZSBpbWFn
ZS1zcGVjaWZpYyBvcHRpb25zIGluaXRpYWxseQogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCd1cGxvYWRBbGlnbkdyb3VwJykuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgICAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgndXBsb2FkU2l6ZUdyb3VwJykuc3R5bGUuZGlzcGxheSA9
ICdub25lJzsKCiAgICAgICAgLy8gQ29uZmlybS1CdXR0b24gQmVzY2hyaWZ0dW5nCiAgICAgICAg
Y29uc3QgY29uZmlybUJ0biA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd1cGxvYWRDb25maXJt
QnRuJyk7CiAgICAgICAgaWYgKHRoaXMuX3BlbmRpbmdJbmRleCA8IHRoaXMuX3BlbmRpbmdGaWxl
cy5sZW5ndGggLSAxKSB7CiAgICAgICAgICAgIGNvbmZpcm1CdG4udGV4dENvbnRlbnQgPSAnRWlu
ZsO8Z2VuICYgbsOkY2hzdGUgRGF0ZWknOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGNv
bmZpcm1CdG4udGV4dENvbnRlbnQgPSAnRWluZsO8Z2VuJzsKICAgICAgICB9CgogICAgICAgIC8v
IFNob3cgZGlhbG9nCiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21lZGlhVXBsb2Fk
RGlhbG9nJykuY2xhc3NMaXN0LmFkZCgnYWN0aXZlJyk7CiAgICB9LAoKICAgIHNldFVwbG9hZE9w
dGlvbihncm91cCwgYnRuKSB7CiAgICAgICAgLy8gVG9nZ2xlIGFjdGl2ZSBpbiBncm91cAogICAg
ICAgIGJ0bi5wYXJlbnRFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy51cGxvYWQtb3B0aW9uLWJ0
bicpLmZvckVhY2goYiA9PiBiLmNsYXNzTGlzdC5yZW1vdmUoJ2FjdGl2ZScpKTsKICAgICAgICBi
dG4uY2xhc3NMaXN0LmFkZCgnYWN0aXZlJyk7CgogICAgICAgIGlmIChncm91cCA9PT0gJ2Rpc3Bs
YXknKSB7CiAgICAgICAgICAgIGNvbnN0IG1vZGUgPSBidG4uZ2V0QXR0cmlidXRlKCdkYXRhLWRp
c3BsYXknKTsKICAgICAgICAgICAgdGhpcy5fdXBsb2FkT3B0aW9ucy5kaXNwbGF5TW9kZSA9IG1v
ZGU7CiAgICAgICAgICAgIGNvbnN0IGlzSW5saW5lSW1hZ2UgPSAobW9kZSA9PT0gJ2lubGluZScp
OwogICAgICAgICAgICBjb25zdCBpc0lubGluZVBkZiA9IChtb2RlID09PSAncGRmLWxpbmsnIHx8
IG1vZGUgPT09ICdwZGYtaWZyYW1lJyk7CiAgICAgICAgICAgIGNvbnN0IGlzSW5saW5lTWVkaWEg
PSAobW9kZSA9PT0gJ21lZGlhLWlubGluZScgfHwgbW9kZSA9PT0gJ29mZmljZS1pbmxpbmUnKTsK
ICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3VwbG9hZEFsaWduR3JvdXAnKS5z
dHlsZS5kaXNwbGF5ID0gKGlzSW5saW5lSW1hZ2UgfHwgaXNJbmxpbmVQZGYgfHwgaXNJbmxpbmVN
ZWRpYSkgPyAnJyA6ICdub25lJzsKICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J3VwbG9hZFNpemVHcm91cCcpLnN0eWxlLmRpc3BsYXkgPSBpc0lubGluZUltYWdlID8gJycgOiAn
bm9uZSc7CiAgICAgICAgfSBlbHNlIGlmIChncm91cCA9PT0gJ2FsaWduJykgewogICAgICAgICAg
ICB0aGlzLl91cGxvYWRPcHRpb25zLmFsaWduID0gYnRuLmdldEF0dHJpYnV0ZSgnZGF0YS1hbGln
bicpOwogICAgICAgIH0gZWxzZSBpZiAoZ3JvdXAgPT09ICdzaXplJykgewogICAgICAgICAgICB0
aGlzLl91cGxvYWRPcHRpb25zLnNpemUgPSBidG4uZ2V0QXR0cmlidXRlKCdkYXRhLXNpemUnKTsK
ICAgICAgICB9CiAgICB9LAoKICAgIGNsb3NlVXBsb2FkRGlhbG9nKCkgewogICAgICAgIGlmICh0
aGlzLl91cGxvYWRJblByb2dyZXNzKSByZXR1cm47IC8vIExhdWZlbmRlbiBVcGxvYWQgbmljaHQg
YWJicmVjaGVuCiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21lZGlhVXBsb2FkRGlh
bG9nJykuY2xhc3NMaXN0LnJlbW92ZSgnYWN0aXZlJyk7CiAgICAgICAgdGhpcy5fcGVuZGluZ0Zp
bGVzID0gW107CiAgICAgICAgdGhpcy5fcGVuZGluZ0luZGV4ID0gMDsKICAgICAgICB0aGlzLl9z
aG93VXBsb2FkUHJvZ3Jlc3MoZmFsc2UpOwogICAgfSwKCiAgICBfdXBsb2FkSW5Qcm9ncmVzczog
ZmFsc2UsCgogICAgX2Zvcm1hdEJ5dGVzKGJ5dGVzKSB7CiAgICAgICAgaWYgKGJ5dGVzIDwgMTAy
NCkgcmV0dXJuIGJ5dGVzICsgJyBCJzsKICAgICAgICBpZiAoYnl0ZXMgPCAxMDI0ICogMTAyNCkg
cmV0dXJuIChieXRlcyAvIDEwMjQpLnRvRml4ZWQoMCkgKyAnIEtCJzsKICAgICAgICByZXR1cm4g
KGJ5dGVzIC8gKDEwMjQgKiAxMDI0KSkudG9GaXhlZCgxKSArICcgTUInOwogICAgfSwKCiAgICBf
c2hvd1VwbG9hZFByb2dyZXNzKHNob3cpIHsKICAgICAgICB2YXIgY29udGFpbmVyID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ3VwbG9hZFByb2dyZXNzQ29udGFpbmVyJyk7CiAgICAgICAgdmFy
IGJ0biA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd1cGxvYWRDb25maXJtQnRuJyk7CiAgICAg
ICAgaWYgKGNvbnRhaW5lcikgY29udGFpbmVyLnN0eWxlLmRpc3BsYXkgPSBzaG93ID8gJycgOiAn
bm9uZSc7CiAgICAgICAgaWYgKGJ0bikgewogICAgICAgICAgICBidG4uZGlzYWJsZWQgPSBzaG93
OwogICAgICAgICAgICBidG4udGV4dENvbnRlbnQgPSBzaG93ID8gJ1dpcmQgaG9jaGdlbGFkZW4u
Li4nIDogJ0VpbmbDvGdlbic7CiAgICAgICAgICAgIGJ0bi5zdHlsZS5vcGFjaXR5ID0gc2hvdyA/
ICcwLjUnIDogJyc7CiAgICAgICAgICAgIGJ0bi5zdHlsZS5jdXJzb3IgPSBzaG93ID8gJ25vdC1h
bGxvd2VkJyA6ICcnOwogICAgICAgIH0KICAgICAgICBpZiAoc2hvdykgewogICAgICAgICAgICB2
YXIgYmFyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3VwbG9hZFByb2dyZXNzQmFyJyk7CiAg
ICAgICAgICAgIHZhciBwY3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndXBsb2FkUHJvZ3Jl
c3NQY3QnKTsKICAgICAgICAgICAgdmFyIHNpemVFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCd1cGxvYWRQcm9ncmVzc1NpemUnKTsKICAgICAgICAgICAgaWYgKGJhcikgYmFyLnN0eWxlLndp
ZHRoID0gJzAlJzsKICAgICAgICAgICAgaWYgKHBjdCkgcGN0LnRleHRDb250ZW50ID0gJzAlJzsK
ICAgICAgICAgICAgaWYgKHNpemVFbCkgc2l6ZUVsLnRleHRDb250ZW50ID0gJyc7CiAgICAgICAg
fQogICAgfSwKCiAgICBhc3luYyBjb25maXJtVXBsb2FkKCkgewogICAgICAgIGNvbnN0IGZpbGUg
PSB0aGlzLl9wZW5kaW5nRmlsZXNbdGhpcy5fcGVuZGluZ0luZGV4XTsKICAgICAgICBpZiAoIWZp
bGUgfHwgdGhpcy5fdXBsb2FkSW5Qcm9ncmVzcykgcmV0dXJuOwoKICAgICAgICBjb25zdCB0eXBl
ID0gdGhpcy5kZXRlY3RNZWRpYVR5cGUoZmlsZSk7CiAgICAgICAgY29uc3QgdGl0bGUgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgndXBsb2FkVGl0bGUnKS52YWx1ZS50cmltKCkgfHwgZmlsZS5u
YW1lOwogICAgICAgIGNvbnN0IGNhcHRpb24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndXBs
b2FkQ2FwdGlvbicpLnZhbHVlLnRyaW0oKTsKICAgICAgICBjb25zdCBvcHRzID0gdGhpcy5fdXBs
b2FkT3B0aW9uczsKICAgICAgICBjb25zdCBtZWRpYUlkID0gdGhpcy5nZW5lcmF0ZU1lZGlhSWQo
KTsKICAgICAgICB2YXIgc2VsZiA9IHRoaXM7CgogICAgICAgIC8vIFVwbG9hZC1VSTogQnV0dG9u
IGRlYWt0aXZpZXJlbiArIEZvcnRzY2hyaXR0c2JhbGtlbiBhbnplaWdlbgogICAgICAgIHRoaXMu
X3VwbG9hZEluUHJvZ3Jlc3MgPSB0cnVlOwogICAgICAgIHRoaXMuX3Nob3dVcGxvYWRQcm9ncmVz
cyh0cnVlKTsKCiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgLy8gVXBsb2FkIGZpbGUgbWl0IEZv
cnRzY2hyaXR0c2FuemVpZ2UKICAgICAgICAgICAgY29uc3QgcmVsUGF0aCA9IGF3YWl0IERyaXZl
RlMudXBsb2FkTWVkaWEodGhpcy5jdXJyZW50RG9jLmlkLCBmaWxlLCBmdW5jdGlvbihwY3QsIGxv
YWRlZCwgdG90YWwpIHsKICAgICAgICAgICAgICAgIHZhciBiYXIgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgndXBsb2FkUHJvZ3Jlc3NCYXInKTsKICAgICAgICAgICAgICAgIHZhciBwY3RFbCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd1cGxvYWRQcm9ncmVzc1BjdCcpOwogICAgICAgICAg
ICAgICAgdmFyIHNpemVFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd1cGxvYWRQcm9ncmVz
c1NpemUnKTsKICAgICAgICAgICAgICAgIHZhciBsYWJlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCd1cGxvYWRQcm9ncmVzc0xhYmVsJyk7CiAgICAgICAgICAgICAgICBpZiAoYmFyKSBiYXIu
c3R5bGUud2lkdGggPSBwY3QgKyAnJSc7CiAgICAgICAgICAgICAgICBpZiAocGN0RWwpIHBjdEVs
LnRleHRDb250ZW50ID0gcGN0ICsgJyUnOwogICAgICAgICAgICAgICAgaWYgKHNpemVFbCkgc2l6
ZUVsLnRleHRDb250ZW50ID0gc2VsZi5fZm9ybWF0Qnl0ZXMobG9hZGVkKSArICcgLyAnICsgc2Vs
Zi5fZm9ybWF0Qnl0ZXModG90YWwpOwogICAgICAgICAgICAgICAgaWYgKGxhYmVsICYmIHBjdCA+
PSAxMDApIGxhYmVsLnRleHRDb250ZW50ID0gJ1dpcmQgdmVyYXJiZWl0ZXQuLi4nOwogICAgICAg
ICAgICB9KTsKCiAgICAgICAgICAgIC8vIEFkZCB0byBkb2N1bWVudCBtZWRpYSBsaXN0CiAgICAg
ICAgICAgIGlmICghdGhpcy5jdXJyZW50RG9jLm1lZGlhcykgdGhpcy5jdXJyZW50RG9jLm1lZGlh
cyA9IFtdOwogICAgICAgICAgICB0aGlzLmN1cnJlbnREb2MubWVkaWFzLnB1c2goewogICAgICAg
ICAgICAgICAgdHlwZTogdHlwZSwKICAgICAgICAgICAgICAgIHVybDogcmVsUGF0aCwKICAgICAg
ICAgICAgICAgIHRpdGxlOiB0aXRsZSwKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBjYXB0
aW9uLAogICAgICAgICAgICAgICAgZGlzcGxheU1vZGU6IG9wdHMuZGlzcGxheU1vZGUsCiAgICAg
ICAgICAgICAgICBhbGlnbm1lbnQ6IG9wdHMuYWxpZ24sCiAgICAgICAgICAgICAgICBzaXplOiBv
cHRzLnNpemUsCiAgICAgICAgICAgICAgICBtZWRpYUlkOiBtZWRpYUlkCiAgICAgICAgICAgIH0p
OwoKICAgICAgICAgICAgLy8gSW5zZXJ0IGlubGluZSBIVE1MIGlmIHJlcXVlc3RlZAogICAgICAg
ICAgICBpZiAob3B0cy5kaXNwbGF5TW9kZSAhPT0gJ2F0dGFjaG1lbnQnKSB7CiAgICAgICAgICAg
ICAgICB0aGlzLmluc2VydElubGluZU1lZGlhKHJlbFBhdGgsIHR5cGUsIHRpdGxlLCBjYXB0aW9u
LCBvcHRzLCBtZWRpYUlkKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdGhpcy5fcmVuZGVy
TWVkaWFMaXN0KCk7CiAgICAgICAgICAgIHNob3dUb2FzdCh0aXRsZSArICcgaGluenVnZWbDvGd0
JywgJ3N1Y2Nlc3MnKTsKICAgICAgICB9IGNhdGNoIChlcnIpIHsKICAgICAgICAgICAgc2hvd1Rv
YXN0KCdGZWhsZXI6ICcgKyBlcnIubWVzc2FnZSwgJ2Vycm9yJyk7CiAgICAgICAgfQoKICAgICAg
ICAvLyBVcGxvYWQgYWJnZXNjaGxvc3NlbiAtIFVJIHp1cnVlY2tzZXR6ZW4KICAgICAgICB0aGlz
Ll91cGxvYWRJblByb2dyZXNzID0gZmFsc2U7CiAgICAgICAgdGhpcy5fc2hvd1VwbG9hZFByb2dy
ZXNzKGZhbHNlKTsKCiAgICAgICAgLy8gUHJvY2VzcyBuZXh0IGZpbGUgb3IgY2xvc2UKICAgICAg
ICB0aGlzLl9wZW5kaW5nSW5kZXgrKzsKICAgICAgICBpZiAodGhpcy5fcGVuZGluZ0luZGV4IDwg
dGhpcy5fcGVuZGluZ0ZpbGVzLmxlbmd0aCkgewogICAgICAgICAgICB0aGlzLnNob3dVcGxvYWRE
aWFsb2coKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB0aGlzLmNsb3NlVXBsb2FkRGlh
bG9nKCk7CiAgICAgICAgfQogICAgfSwKCiAgICBpbnNlcnRJbmxpbmVNZWRpYSh1cmwsIHR5cGUs
IHRpdGxlLCBjYXB0aW9uLCBvcHRzLCBtZWRpYUlkKSB7CiAgICAgICAgY29uc3QgZWRpdG9ySW5w
dXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZWRpdG9ySW5wdXQnKTsKICAgICAgICBsZXQg
ZWxlbWVudDsKCiAgICAgICAgaWYgKHR5cGUgPT09ICdpbWFnZScgJiYgb3B0cy5kaXNwbGF5TW9k
ZSA9PT0gJ2lubGluZScpIHsKICAgICAgICAgICAgLy8gSW1hZ2UgZmlndXJlCiAgICAgICAgICAg
IGNvbnN0IHNpemVDbGFzcyA9IG9wdHMuc2l6ZSA9PT0gJ2xhcmdlJyA/ICdkcml2ZS1tZWRpYS1s
YXJnZScgOiAnZHJpdmUtbWVkaWEtdGh1bWJuYWlsJzsKICAgICAgICAgICAgY29uc3QgYWxpZ25D
bGFzcyA9ICdkcml2ZS1hbGlnbi0nICsgb3B0cy5hbGlnbjsKCiAgICAgICAgICAgIGVsZW1lbnQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdmaWd1cmUnKTsKICAgICAgICAgICAgZWxlbWVudC5j
bGFzc05hbWUgPSAnZHJpdmUtbWVkaWEgJyArIHNpemVDbGFzcyArICcgJyArIGFsaWduQ2xhc3M7
CiAgICAgICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCdkYXRhLW1lZGlhLWlkJywgbWVkaWFJ
ZCk7CiAgICAgICAgICAgIGVsZW1lbnQuY29udGVudEVkaXRhYmxlID0gJ2ZhbHNlJzsKCiAgICAg
ICAgICAgIGNvbnN0IGltZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2ltZycpOwogICAgICAg
ICAgICBpbWcuc3JjID0gdXJsOwogICAgICAgICAgICBpbWcuYWx0ID0gdGl0bGU7CiAgICAgICAg
ICAgIGltZy5zdHlsZS5jdXJzb3IgPSAncG9pbnRlcic7CiAgICAgICAgICAgIGltZy5vbmNsaWNr
ID0gZnVuY3Rpb24oZSkgeyBlLnByZXZlbnREZWZhdWx0KCk7IGUuc3RvcFByb3BhZ2F0aW9uKCk7
IG9wZW5NZWRpYU1vZGFsKHVybCwgJ2ltYWdlJywgdGl0bGUpOyB9OwogICAgICAgICAgICBlbGVt
ZW50LmFwcGVuZENoaWxkKGltZyk7CgogICAgICAgICAgICBpZiAoY2FwdGlvbikgewogICAgICAg
ICAgICAgICAgY29uc3QgZmlnID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZmlnY2FwdGlvbicp
OwogICAgICAgICAgICAgICAgZmlnLnRleHRDb250ZW50ID0gY2FwdGlvbjsKICAgICAgICAgICAg
ICAgIGVsZW1lbnQuYXBwZW5kQ2hpbGQoZmlnKTsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxz
ZSBpZiAodHlwZSA9PT0gJ3BkZicgJiYgb3B0cy5kaXNwbGF5TW9kZSA9PT0gJ3BkZi1saW5rJykg
ewogICAgICAgICAgICBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAg
ICAgICAgICAgIGVsZW1lbnQuY2xhc3NOYW1lID0gJ2RyaXZlLW1lZGlhIGRyaXZlLW1lZGlhLXBk
Zi1saW5rIGRyaXZlLWFsaWduLScgKyBvcHRzLmFsaWduOwogICAgICAgICAgICBlbGVtZW50LnNl
dEF0dHJpYnV0ZSgnZGF0YS1tZWRpYS1pZCcsIG1lZGlhSWQpOwogICAgICAgICAgICBlbGVtZW50
LmNvbnRlbnRFZGl0YWJsZSA9ICdmYWxzZSc7CiAgICAgICAgICAgIGVsZW1lbnQuaW5uZXJIVE1M
ID0gJzxzcGFuIGNsYXNzPSJkcml2ZS1wZGYtaWNvbiI+UERGPC9zcGFuPicgKwogICAgICAgICAg
ICAgICAgJzxzcGFuIGNsYXNzPSJwZGYtdGl0bGUiPicgKyBEcml2ZVBvcnRhbC5lc2NhcGVIVE1M
KHRpdGxlKSArICc8L3NwYW4+JzsKICAgICAgICAgICAgZWxlbWVudC5vbmNsaWNrID0gZnVuY3Rp
b24oZSkgeyBlLnByZXZlbnREZWZhdWx0KCk7IGUuc3RvcFByb3BhZ2F0aW9uKCk7IG9wZW5NZWRp
YU1vZGFsKHVybCwgJ3BkZicsIHRpdGxlKTsgfTsKICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09
ICdwZGYnICYmIG9wdHMuZGlzcGxheU1vZGUgPT09ICdwZGYtaWZyYW1lJykgewogICAgICAgICAg
ICBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICAgICAgICAgIGVs
ZW1lbnQuY2xhc3NOYW1lID0gJ2RyaXZlLW1lZGlhIGRyaXZlLW1lZGlhLXBkZi1pZnJhbWUgZHJp
dmUtYWxpZ24tJyArIG9wdHMuYWxpZ247CiAgICAgICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRl
KCdkYXRhLW1lZGlhLWlkJywgbWVkaWFJZCk7CiAgICAgICAgICAgIGVsZW1lbnQuY29udGVudEVk
aXRhYmxlID0gJ2ZhbHNlJzsKICAgICAgICAgICAgZWxlbWVudC5pbm5lckhUTUwgPSAnPGlmcmFt
ZSBzcmM9IicgKyBEcml2ZVBvcnRhbC5lc2NhcGVBdHRyKHVybCkgKyAnIj48L2lmcmFtZT4nICsK
ICAgICAgICAgICAgICAgIChjYXB0aW9uID8gJzxwIGNsYXNzPSJkcml2ZS1tZWRpYS1jYXB0aW9u
Ij4nICsgRHJpdmVQb3J0YWwuZXNjYXBlSFRNTChjYXB0aW9uKSArICc8L3A+JyA6ICcnKTsKICAg
ICAgICAgICAgZWxlbWVudC5vbmNsaWNrID0gZnVuY3Rpb24oZSkgeyBlLnByZXZlbnREZWZhdWx0
KCk7IGUuc3RvcFByb3BhZ2F0aW9uKCk7IG9wZW5NZWRpYU1vZGFsKHVybCwgJ3BkZicsIHRpdGxl
KTsgfTsKICAgICAgICB9IGVsc2UgaWYgKG9wdHMuZGlzcGxheU1vZGUgPT09ICdtZWRpYS1pbmxp
bmUnICYmICh0eXBlID09PSAndmlkZW8nIHx8IHR5cGUgPT09ICdhdWRpbycpKSB7CiAgICAgICAg
ICAgIC8vIFZpZGVvL0F1ZGlvIGFscyBrbGlja2JhcmVzIEljb24tRWxlbWVudCBpbSBBcnRpa2Vs
CiAgICAgICAgICAgIHZhciBpY29uID0gdHlwZSA9PT0gJ3ZpZGVvJyA/ICcmIzEyNzkxMDsnIDog
JyYjMTI3OTI1Oyc7CiAgICAgICAgICAgIHZhciBsYWJlbCA9IHR5cGUgPT09ICd2aWRlbycgPyAn
VmlkZW8nIDogJ0F1ZGlvJzsKICAgICAgICAgICAgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ2RpdicpOwogICAgICAgICAgICBlbGVtZW50LmNsYXNzTmFtZSA9ICdkcml2ZS1tZWRp
YSBkcml2ZS1tZWRpYS1lbWJlZCBkcml2ZS1hbGlnbi0nICsgb3B0cy5hbGlnbjsKICAgICAgICAg
ICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2RhdGEtbWVkaWEtaWQnLCBtZWRpYUlkKTsKICAgICAg
ICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2RhdGEtbWVkaWEtdHlwZScsIHR5cGUpOwogICAg
ICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSgnZGF0YS1tZWRpYS11cmwnLCB1cmwpOwogICAg
ICAgICAgICBlbGVtZW50LmNvbnRlbnRFZGl0YWJsZSA9ICdmYWxzZSc7CiAgICAgICAgICAgIGVs
ZW1lbnQudGl0bGUgPSBsYWJlbCArICcgYWJzcGllbGVuOiAnICsgdGl0bGU7CiAgICAgICAgICAg
IGVsZW1lbnQuaW5uZXJIVE1MID0gJzxzcGFuIGNsYXNzPSJkcml2ZS1lbWJlZC1pY29uIGljb24t
JyArIHR5cGUgKyAnIj48L3NwYW4+JyArCiAgICAgICAgICAgICAgICAnPHNwYW4gY2xhc3M9ImRy
aXZlLWVtYmVkLWxhYmVsIj4nICsgRHJpdmVQb3J0YWwuZXNjYXBlSFRNTCh0aXRsZSkgKyAnPC9z
cGFuPic7CiAgICAgICAgICAgIGVsZW1lbnQub25jbGljayA9IGZ1bmN0aW9uKGUpIHsgZS5wcmV2
ZW50RGVmYXVsdCgpOyBlLnN0b3BQcm9wYWdhdGlvbigpOyBvcGVuTWVkaWFNb2RhbCh1cmwsIHR5
cGUsIHRpdGxlKTsgfTsKICAgICAgICB9IGVsc2UgaWYgKG9wdHMuZGlzcGxheU1vZGUgPT09ICdv
ZmZpY2UtaW5saW5lJyAmJiAodHlwZSA9PT0gJ2RvY3gnIHx8IHR5cGUgPT09ICd4bHN4JyB8fCB0
eXBlID09PSAncHB0eCcpKSB7CiAgICAgICAgICAgIC8vIE9mZmljZS1EYXRlaWVuIGFscyBrbGlj
a2JhcmVzIEljb24tRWxlbWVudCBpbSBBcnRpa2VsCiAgICAgICAgICAgIGVsZW1lbnQgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgICAgICAgICAgZWxlbWVudC5jbGFzc05hbWUg
PSAnZHJpdmUtbWVkaWEgZHJpdmUtbWVkaWEtZW1iZWQgZHJpdmUtYWxpZ24tJyArIG9wdHMuYWxp
Z247CiAgICAgICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCdkYXRhLW1lZGlhLWlkJywgbWVk
aWFJZCk7CiAgICAgICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCdkYXRhLW1lZGlhLXR5cGUn
LCB0eXBlKTsKICAgICAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2RhdGEtbWVkaWEtdXJs
JywgdXJsKTsKICAgICAgICAgICAgZWxlbWVudC5jb250ZW50RWRpdGFibGUgPSAnZmFsc2UnOwog
ICAgICAgICAgICBlbGVtZW50LnRpdGxlID0gdHlwZS50b1VwcGVyQ2FzZSgpICsgJyBoZXJ1bnRl
cmxhZGVuOiAnICsgdGl0bGU7CiAgICAgICAgICAgIGVsZW1lbnQuaW5uZXJIVE1MID0gJzxzcGFu
IGNsYXNzPSJkcml2ZS1lbWJlZC1pY29uIGljb24tJyArIHR5cGUgKyAnIj48L3NwYW4+JyArCiAg
ICAgICAgICAgICAgICAnPHNwYW4gY2xhc3M9ImRyaXZlLWVtYmVkLWxhYmVsIj4nICsgRHJpdmVQ
b3J0YWwuZXNjYXBlSFRNTCh0aXRsZSkgKyAnPC9zcGFuPic7CiAgICAgICAgICAgIGVsZW1lbnQu
b25jbGljayA9IGZ1bmN0aW9uKGUpIHsgZS5wcmV2ZW50RGVmYXVsdCgpOyBlLnN0b3BQcm9wYWdh
dGlvbigpOyBvcGVuTWVkaWFNb2RhbCh1cmwsIHR5cGUsIHRpdGxlKTsgfTsKICAgICAgICB9Cgog
ICAgICAgIGlmICghZWxlbWVudCkgcmV0dXJuOwoKICAgICAgICAvLyBJbnNlcnQgYXQgY3Vyc29y
IHBvc2l0aW9uIG9yIGFwcGVuZAogICAgICAgIGNvbnN0IHNlbCA9IHdpbmRvdy5nZXRTZWxlY3Rp
b24oKTsKICAgICAgICBpZiAodGhpcy5fc2F2ZWRFZGl0b3JSYW5nZSAmJiBlZGl0b3JJbnB1dC5j
b250YWlucyh0aGlzLl9zYXZlZEVkaXRvclJhbmdlLmNvbW1vbkFuY2VzdG9yQ29udGFpbmVyKSkg
ewogICAgICAgICAgICBzZWwucmVtb3ZlQWxsUmFuZ2VzKCk7CiAgICAgICAgICAgIHNlbC5hZGRS
YW5nZSh0aGlzLl9zYXZlZEVkaXRvclJhbmdlKTsKICAgICAgICAgICAgY29uc3QgcmFuZ2UgPSBz
ZWwuZ2V0UmFuZ2VBdCgwKTsKICAgICAgICAgICAgcmFuZ2UuZGVsZXRlQ29udGVudHMoKTsKICAg
ICAgICAgICAgcmFuZ2UuaW5zZXJ0Tm9kZShlbGVtZW50KTsKICAgICAgICAgICAgLy8gUGxhY2Ug
Y3Vyc29yIGFmdGVyIGVsZW1lbnQKICAgICAgICAgICAgcmFuZ2Uuc2V0U3RhcnRBZnRlcihlbGVt
ZW50KTsKICAgICAgICAgICAgcmFuZ2UuY29sbGFwc2UodHJ1ZSk7CiAgICAgICAgICAgIHNlbC5y
ZW1vdmVBbGxSYW5nZXMoKTsKICAgICAgICAgICAgc2VsLmFkZFJhbmdlKHJhbmdlKTsKICAgICAg
ICAgICAgdGhpcy5fc2F2ZWRFZGl0b3JSYW5nZSA9IHJhbmdlLmNsb25lUmFuZ2UoKTsKICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICBlZGl0b3JJbnB1dC5hcHBlbmRDaGlsZChlbGVtZW50KTsK
ICAgICAgICB9CiAgICB9LAoKICAgIC8vIC0tLSBNZWRpYSBDb250ZXh0IE1lbnUgKGluIEVkaXRv
cikgLS0tCiAgICBfY29udGV4dFRhcmdldDogbnVsbCwKCiAgICAvLyAtLS0gU2NobGFnd8O2cnRl
ciAtLS0KICAgIFBSRURFRklORURfS0VZV09SRFM6IFsKICAgICAgICAnU296aWFsdm9yc2Nocmlm
dGVuJywgJ0xhZHVuZ3NzaWNoZXJ1bmcnLCAnw5xiZXJsYWR1bmcnLCAnS09NJywgJ0dHVlMnLAog
ICAgICAgICdGYWhyemV1Z3RlY2huaWsnLCAnVGVjaEtvbnRyb2xsVk8nLCAnS2Fib3RhZ2UnLCAn
RG9rdW1lbnRlbmbDpGxzY2h1bmcnLAogICAgICAgICdadWxhc3N1bmdlbicsICdadWxhc3N1bmdl
biBuYXRpb25hbCcsICdadWxhc3N1bmdlbiBpbnRlcm5hdGlvbmFsJywKICAgICAgICAnQWxrb2hv
bCcsICdCVE0nLCAnR2VzY2h3aW5kaWdrZWl0JywgJ0Fic3RhbmQnLCAnRmFsc2NoZmFocmVyJywK
ICAgICAgICAnVmVyZm9sZ3VuZ3NmYWhydCcsICdUdW5uZWwnLCAnU3TDtnJmYWxsJywgJ0ZvdG9n
cmFmaWUnLAogICAgICAgICdGb3RvZ3JhZmllIEJyw7xja2UnLCAnRm90b2dyYWZpZSBCYXVzdGVs
bGUnLCAnRm90b2dyYWZpZSBBYnN0YW5kJywKICAgICAgICAnVHVuaW5nJywgJ1ZLUicsICdTY2hs
ZXBwZW4nLCAnU2Nocm90dHNhbW1sZXInCiAgICBdLAogICAgLy8gVW50ZXJrYXRlZ29yaWVuOiBL
YXRlZ29yaWUgLT4gU3ViLVRhZ3MgKGZ1ZXIgS2xhbW1lcnZlcm1lcmsgaW0gVGl0ZWwgKyBBdXRv
LVRhZykKICAgIENBVEVHT1JZX1NVQlRBR1M6IHsKICAgICAgICAnWnVsYXNzdW5nZW4nOiBbJ25h
dGlvbmFsJywgJ2ludGVybmF0aW9uYWwnXSwKICAgICAgICAnRm90b2dyYWZpZSc6ICBbJ0Jyw7xj
a2UnLCAnQmF1c3RlbGxlJywgJ0Fic3RhbmQnXQogICAgfSwKICAgIF9jdXJyZW50S2V5d29yZHM6
IFtdLAoKICAgIF9nZXRBbGxLbm93bktleXdvcmRzKCkgewogICAgICAgIGNvbnN0IHNldCA9IG5l
dyBTZXQodGhpcy5QUkVERUZJTkVEX0tFWVdPUkRTKTsKICAgICAgICBEcml2ZUZTLmRvY3VtZW50
cy5mb3JFYWNoKGQgPT4gKGQuc2NobGFnd29lcnRlciB8fCBbXSkuZm9yRWFjaChrID0+IHNldC5h
ZGQoaykpKTsKICAgICAgICByZXR1cm4gWy4uLnNldF0uc29ydCgoYSwgYikgPT4gYS5sb2NhbGVD
b21wYXJlKGIsICdkZScpKTsKICAgIH0sCgogICAgX3JlbmRlcktleXdvcmRzKCkgewogICAgICAg
IGNvbnN0IGNvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdlZGl0b3JLZXl3b3Jk
cycpOwogICAgICAgIGNvbnN0IGlucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VkaXRv
cktleXdvcmRJbnB1dCcpOwogICAgICAgIGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsKCcua2V5
d29yZC1waWxsJykuZm9yRWFjaChwID0+IHAucmVtb3ZlKCkpOwogICAgICAgIHRoaXMuX2N1cnJl
bnRLZXl3b3Jkcy5mb3JFYWNoKChrdywgaSkgPT4gewogICAgICAgICAgICBjb25zdCBwaWxsID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpOwogICAgICAgICAgICBwaWxsLmNsYXNzTmFt
ZSA9ICdrZXl3b3JkLXBpbGwnOwogICAgICAgICAgICBwaWxsLmlubmVySFRNTCA9IERyaXZlUG9y
dGFsLmVzY2FwZUhUTUwoa3cpICsgJyA8c3BhbiBjbGFzcz0ia3ctcmVtb3ZlIiBvbmNsaWNrPSJE
cml2ZUVkaXRvci5yZW1vdmVLZXl3b3JkKCcgKyBpICsgJykiPiZ0aW1lczs8L3NwYW4+JzsKICAg
ICAgICAgICAgY29udGFpbmVyLmluc2VydEJlZm9yZShwaWxsLCBpbnB1dCk7CiAgICAgICAgfSk7
CiAgICAgICAgdGhpcy5fcmVuZGVyU3VnZ2VzdGlvbnMoKTsKICAgIH0sCgogICAgX3JlbmRlclN1
Z2dlc3Rpb25zKCkgewogICAgICAgIGNvbnN0IHBhbmVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2tleXdvcmRTdWdnZXN0aW9ucycpOwogICAgICAgIGlmICghcGFuZWwpIHJldHVybjsKICAg
ICAgICBjb25zdCBjdXJyZW50ID0gdGhpcy5fY3VycmVudEtleXdvcmRzOwogICAgICAgIGNvbnN0
IGRvYyA9IHRoaXMuY3VycmVudERvYzsKICAgICAgICBjb25zdCBrYXRlZ29yaWUgPSBkb2MgPyBk
b2Mua2F0ZWdvcmllIDogJyc7CgogICAgICAgIC8vIEFsbGUgYmVrYW5udGVuIFNjaGxhZ3fDtnJ0
ZXIgc2FtbWVsbiBtaXQgR2V3aWNodHVuZwogICAgICAgIHZhciBrd1Njb3JlcyA9IHt9OwogICAg
ICAgIERyaXZlRlMuZG9jdW1lbnRzLmZvckVhY2goZnVuY3Rpb24oZCkgewogICAgICAgICAgICB2
YXIgcmVsZXZhbmNlID0gMTsKICAgICAgICAgICAgaWYgKGQua2F0ZWdvcmllID09PSBrYXRlZ29y
aWUpIHJlbGV2YW5jZSA9IDM7IC8vIGdsZWljaGUgS2F0ZWdvcmllID0gaMO2aGVyZSBSZWxldmFu
egogICAgICAgICAgICBpZiAoZC5wYXJlbnRJZCA9PT0gKGRvYyAmJiBkb2MuaWQpKSByZWxldmFu
Y2UgPSA0OyAvLyBVbnRlcmFydGlrZWwKICAgICAgICAgICAgaWYgKGRvYyAmJiBkb2MucGFyZW50
SWQgJiYgZC5pZCA9PT0gZG9jLnBhcmVudElkKSByZWxldmFuY2UgPSA0OyAvLyDDnGJlcmFydGlr
ZWwKICAgICAgICAgICAgLy8gVGhlbWVuw6RobmxpY2hrZWl0OiBnZW1laW5zYW1lIFNjaGxhZ3fD
tnJ0ZXIKICAgICAgICAgICAgdmFyIG92ZXJsYXAgPSAoZC5zY2hsYWd3b2VydGVyIHx8IFtdKS5m
aWx0ZXIoZnVuY3Rpb24oaykgeyByZXR1cm4gY3VycmVudC5pbmNsdWRlcyhrKTsgfSkubGVuZ3Ro
OwogICAgICAgICAgICBpZiAob3ZlcmxhcCA+IDApIHJlbGV2YW5jZSArPSBvdmVybGFwICogMjsK
ICAgICAgICAgICAgKGQuc2NobGFnd29lcnRlciB8fCBbXSkuZm9yRWFjaChmdW5jdGlvbihrKSB7
CiAgICAgICAgICAgICAgICBpZiAoIWN1cnJlbnQuaW5jbHVkZXMoaykpIHsKICAgICAgICAgICAg
ICAgICAgICBrd1Njb3Jlc1trXSA9IChrd1Njb3Jlc1trXSB8fCAwKSArIHJlbGV2YW5jZTsKICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgfSk7CgogICAgICAgIC8vIFZv
cmRlZmluaWVydGUgS2V5d29yZHMgYWxzIEJhc2lzLVZvcnNjaGzDpGdlIG1pdCBuaWVkcmlnZXIg
R2V3aWNodHVuZwogICAgICAgIHRoaXMuUFJFREVGSU5FRF9LRVlXT1JEUy5mb3JFYWNoKGZ1bmN0
aW9uKGspIHsKICAgICAgICAgICAgaWYgKCFjdXJyZW50LmluY2x1ZGVzKGspICYmICFrd1Njb3Jl
c1trXSkga3dTY29yZXNba10gPSAwLjU7CiAgICAgICAgfSk7CiAgICAgICAgLy8gVW50ZXJrYXRl
Z29yaWUtU3ViLVRhZ3MgZGVyIGFrdHVlbGxlbiBLYXRlZ29yaWUgaG9jaCBwcmlvcmlzaWVyZW4K
ICAgICAgICB2YXIgY2F0U3VicyA9IHRoaXMuQ0FURUdPUllfU1VCVEFHU1trYXRlZ29yaWVdIHx8
IFtdOwogICAgICAgIGNhdFN1YnMuZm9yRWFjaChmdW5jdGlvbihzKSB7CiAgICAgICAgICAgIGlm
ICghY3VycmVudC5pbmNsdWRlcyhzKSkga3dTY29yZXNbc10gPSAoa3dTY29yZXNbc10gfHwgMCkg
KyA1OwogICAgICAgIH0pOwogICAgICAgIHZhciBzb3J0ZWQgPSBPYmplY3QuZW50cmllcyhrd1Nj
b3Jlcykuc29ydChmdW5jdGlvbihhLGIpeyByZXR1cm4gYlsxXSAtIGFbMV07IH0pLnNsaWNlKDAs
IDE1KTsKCiAgICAgICAgaWYgKHNvcnRlZC5sZW5ndGggPT09IDApIHsKICAgICAgICAgICAgcGFu
ZWwuaW5uZXJIVE1MID0gJyc7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAg
IHBhbmVsLmlubmVySFRNTCA9ICc8c3BhbiBzdHlsZT0iZm9udC1zaXplOjEwcHg7Y29sb3I6dmFy
KC0tdGV4dC1tdXRlZCk7bWFyZ2luLXJpZ2h0OjRweDsiPlZvcnNjaGzDpGdlOjwvc3Bhbj4nICsK
ICAgICAgICAgICAgc29ydGVkLm1hcChmdW5jdGlvbihrdikgewogICAgICAgICAgICAgICAgcmV0
dXJuICc8c3BhbiBjbGFzcz0ia2V5d29yZC1zdWdnZXN0aW9uIiBvbmNsaWNrPSJEcml2ZUVkaXRv
ci5hZGRLZXl3b3JkKFwnJyArIERyaXZlUG9ydGFsLmVzY2FwZUF0dHIoa3ZbMF0pICsgJ1wnKSI+
JyArIERyaXZlUG9ydGFsLmVzY2FwZUhUTUwoa3ZbMF0pICsgJzwvc3Bhbj4nOwogICAgICAgICAg
ICB9KS5qb2luKCcnKTsKICAgIH0sCgogICAgYWRkS2V5d29yZCh3b3JkKSB7CiAgICAgICAgd29y
ZCA9IHdvcmQudHJpbSgpOwogICAgICAgIGlmICghd29yZCB8fCB0aGlzLl9jdXJyZW50S2V5d29y
ZHMuaW5jbHVkZXMod29yZCkpIHJldHVybjsKICAgICAgICB0aGlzLl9jdXJyZW50S2V5d29yZHMu
cHVzaCh3b3JkKTsKICAgICAgICB0aGlzLl9yZW5kZXJLZXl3b3JkcygpOwogICAgICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdlZGl0b3JLZXl3b3JkSW5wdXQnKS52YWx1ZSA9ICcnOwogICAg
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdrZXl3b3JkQXV0b2NvbXBsZXRlJykuY2xhc3NM
aXN0LnJlbW92ZSgnYWN0aXZlJyk7CiAgICB9LAoKICAgIHJlbW92ZUtleXdvcmQoaW5kZXgpIHsK
ICAgICAgICB0aGlzLl9jdXJyZW50S2V5d29yZHMuc3BsaWNlKGluZGV4LCAxKTsKICAgICAgICB0
aGlzLl9yZW5kZXJLZXl3b3JkcygpOwogICAgfSwKCiAgICBfc2V0dXBLZXl3b3JkSW5wdXQoKSB7
CiAgICAgICAgY29uc3QgaW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZWRpdG9yS2V5
d29yZElucHV0Jyk7CiAgICAgICAgY29uc3QgYWMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
a2V5d29yZEF1dG9jb21wbGV0ZScpOwogICAgICAgIGlucHV0Lm9ua2V5ZG93biA9IChlKSA9PiB7
CiAgICAgICAgICAgIGlmIChlLmtleSA9PT0gJ0VudGVyJyB8fCBlLmtleSA9PT0gJywnKSB7CiAg
ICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgICAgICB0aGlzLmFk
ZEtleXdvcmQoaW5wdXQudmFsdWUucmVwbGFjZSgnLCcsICcnKSk7CiAgICAgICAgICAgIH0gZWxz
ZSBpZiAoZS5rZXkgPT09ICdCYWNrc3BhY2UnICYmICFpbnB1dC52YWx1ZSAmJiB0aGlzLl9jdXJy
ZW50S2V5d29yZHMubGVuZ3RoID4gMCkgewogICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVLZXl3
b3JkKHRoaXMuX2N1cnJlbnRLZXl3b3Jkcy5sZW5ndGggLSAxKTsKICAgICAgICAgICAgfQogICAg
ICAgIH07CiAgICAgICAgaW5wdXQub25pbnB1dCA9ICgpID0+IHsKICAgICAgICAgICAgY29uc3Qg
cSA9IGlucHV0LnZhbHVlLnRvTG93ZXJDYXNlKCkudHJpbSgpOwogICAgICAgICAgICBpZiAocS5s
ZW5ndGggPCAxKSB7IGFjLmNsYXNzTGlzdC5yZW1vdmUoJ2FjdGl2ZScpOyByZXR1cm47IH0KICAg
ICAgICAgICAgY29uc3Qga25vd24gPSB0aGlzLl9nZXRBbGxLbm93bktleXdvcmRzKCkuZmlsdGVy
KGsgPT4KICAgICAgICAgICAgICAgIGsudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhxKSAmJiAhdGhp
cy5fY3VycmVudEtleXdvcmRzLmluY2x1ZGVzKGspCiAgICAgICAgICAgICkuc2xpY2UoMCwgOCk7
CiAgICAgICAgICAgIGlmIChrbm93bi5sZW5ndGggPT09IDApIHsgYWMuY2xhc3NMaXN0LnJlbW92
ZSgnYWN0aXZlJyk7IHJldHVybjsgfQogICAgICAgICAgICBhYy5pbm5lckhUTUwgPSBrbm93bi5t
YXAoayA9PgogICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImtleXdvcmQtYXV0b2NvbXBsZXRl
LWl0ZW0iIG9ubW91c2Vkb3duPSJEcml2ZUVkaXRvci5hZGRLZXl3b3JkKFwnJyArIERyaXZlUG9y
dGFsLmVzY2FwZUF0dHIoaykgKyAnXCcpIj4nICsgRHJpdmVQb3J0YWwuZXNjYXBlSFRNTChrKSAr
ICc8L2Rpdj4nCiAgICAgICAgICAgICkuam9pbignJyk7CiAgICAgICAgICAgIGFjLmNsYXNzTGlz
dC5hZGQoJ2FjdGl2ZScpOwogICAgICAgIH07CiAgICAgICAgaW5wdXQub25ibHVyID0gKCkgPT4g
c2V0VGltZW91dCgoKSA9PiBhYy5jbGFzc0xpc3QucmVtb3ZlKCdhY3RpdmUnKSwgMjAwKTsKICAg
IH0sCgogICAgX3NlbGVjdGVkQmxvY2s6IG51bGwsCgogICAgX3NlbGVjdEJsb2NrKGJsb2NrKSB7
CiAgICAgICAgdGhpcy5fZGVzZWxlY3RCbG9jaygpOwogICAgICAgIHRoaXMuX3NlbGVjdGVkQmxv
Y2sgPSBibG9jazsKICAgICAgICBibG9jay5zdHlsZS5vdXRsaW5lID0gJzJweCBzb2xpZCB2YXIo
LS10ZXh0LWhlYWRpbmcpJzsKICAgICAgICBibG9jay5zdHlsZS5vdXRsaW5lT2Zmc2V0ID0gJzJw
eCc7CiAgICB9LAoKICAgIF9kZXNlbGVjdEJsb2NrKCkgewogICAgICAgIGlmICh0aGlzLl9zZWxl
Y3RlZEJsb2NrKSB7CiAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkQmxvY2suc3R5bGUub3V0bGlu
ZSA9ICcnOwogICAgICAgICAgICB0aGlzLl9zZWxlY3RlZEJsb2NrLnN0eWxlLm91dGxpbmVPZmZz
ZXQgPSAnJzsKICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRCbG9jayA9IG51bGw7CiAgICAgICAg
fQogICAgfSwKCiAgICBzZXR1cEVkaXRvck1lZGlhRXZlbnRzKCkgewogICAgICAgIGNvbnN0IGVk
aXRvcklucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VkaXRvcklucHV0Jyk7CiAgICAg
ICAgY29uc3Qgc2VsZiA9IHRoaXM7CgogICAgICAgIGVkaXRvcklucHV0LmFkZEV2ZW50TGlzdGVu
ZXIoJ2NsaWNrJywgKGUpID0+IHsKICAgICAgICAgICAgY29uc3QgbWVkaWEgPSBlLnRhcmdldC5j
bG9zZXN0KCcuZHJpdmUtbWVkaWEnKTsKICAgICAgICAgICAgaWYgKG1lZGlhICYmIGVkaXRvcklu
cHV0LmNvbnRhaW5zKG1lZGlhKSkgewogICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgp
OwogICAgICAgICAgICAgICAgdGhpcy5zaG93Q29udGV4dE1lbnUobWVkaWEsIGUpOwogICAgICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBLbGljayBhdWYg
QWNjb3JkaW9uLCBGQVEsIFRhYmVsbGU6IG1hcmtpZXJlbgogICAgICAgICAgICB2YXIgYmxvY2sg
PSBlLnRhcmdldC5jbG9zZXN0KCcuZHJpdmUtYWNjb3JkaW9uLCAuZHJpdmUtZmFxLCAuZHJpdmUt
dGFibGUtd3JhcCwgLmRyaXZlLWluZm9ib3gsIGhyLmRyaXZlLWRpdmlkZXInKTsKICAgICAgICAg
ICAgaWYgKGJsb2NrICYmIGVkaXRvcklucHV0LmNvbnRhaW5zKGJsb2NrKSkgewogICAgICAgICAg
ICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0Qmxv
Y2soYmxvY2spOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgdGhpcy5fZGVz
ZWxlY3RCbG9jaygpOwogICAgICAgICAgICAgICAgdGhpcy5oaWRlQ29udGV4dE1lbnUoKTsKICAg
ICAgICAgICAgfQogICAgICAgIH0pOwoKICAgICAgICAvLyBCYWNrc3BhY2UvRGVsZXRlIGxvZXNj
aHQgbWFya2llcnRlbiBCbG9jawogICAgICAgIGVkaXRvcklucHV0LmFkZEV2ZW50TGlzdGVuZXIo
J2tleWRvd24nLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIGlmIChzZWxmLl9zZWxlY3RlZEJs
b2NrICYmIChlLmtleSA9PT0gJ0JhY2tzcGFjZScgfHwgZS5rZXkgPT09ICdEZWxldGUnKSkgewog
ICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICAgICAgc2VsZi5f
c2VsZWN0ZWRCbG9jay5yZW1vdmUoKTsKICAgICAgICAgICAgICAgIHNlbGYuX3NlbGVjdGVkQmxv
Y2sgPSBudWxsOwogICAgICAgICAgICAgICAgc2VsZi5zYXZlU3RhdGUoKTsKICAgICAgICAgICAg
fQogICAgICAgIH0pOwogICAgfSwKCiAgICBzaG93Q29udGV4dE1lbnUoZWxlbWVudCwgZXZlbnQp
IHsKICAgICAgICB0aGlzLl9jb250ZXh0VGFyZ2V0ID0gZWxlbWVudDsKICAgICAgICBjb25zdCBt
ZW51ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21lZGlhQ29udGV4dE1lbnUnKTsKICAgICAg
ICBjb25zdCByZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKCiAgICAgICAg
bWVudS5zdHlsZS50b3AgPSAocmVjdC5ib3R0b20gKyB3aW5kb3cuc2Nyb2xsWSArIDUpICsgJ3B4
JzsKICAgICAgICBtZW51LnN0eWxlLmxlZnQgPSBNYXRoLm1pbihyZWN0LmxlZnQgKyB3aW5kb3cu
c2Nyb2xsWCwgd2luZG93LmlubmVyV2lkdGggLSAyMDApICsgJ3B4JzsKICAgICAgICBtZW51LmNs
YXNzTGlzdC5hZGQoJ2FjdGl2ZScpOwoKICAgICAgICAvLyBIaWdobGlnaHQgY3VycmVudCBhbGln
bm1lbnQKICAgICAgICBjb25zdCBjdXJyZW50QWxpZ24gPSBlbGVtZW50LmNsYXNzTGlzdC5jb250
YWlucygnZHJpdmUtYWxpZ24tbGVmdCcpID8gJ2xlZnQnCiAgICAgICAgICAgIDogZWxlbWVudC5j
bGFzc0xpc3QuY29udGFpbnMoJ2RyaXZlLWFsaWduLXJpZ2h0JykgPyAncmlnaHQnIDogJ2NlbnRl
cic7CiAgICAgICAgbWVudS5xdWVyeVNlbGVjdG9yQWxsKCcubWVkaWEtY29udGV4dC1ncm91cCBi
dXR0b24nKS5mb3JFYWNoKGJ0biA9PiB7CiAgICAgICAgICAgIGJ0bi5jbGFzc0xpc3QudG9nZ2xl
KCdhY3RpdmUnLCBidG4uZ2V0QXR0cmlidXRlKCdkYXRhLWFsaWduJykgPT09IGN1cnJlbnRBbGln
bik7CiAgICAgICAgfSk7CiAgICB9LAoKICAgIGhpZGVDb250ZXh0TWVudSgpIHsKICAgICAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWVkaWFDb250ZXh0TWVudScpLmNsYXNzTGlzdC5yZW1v
dmUoJ2FjdGl2ZScpOwogICAgICAgIHRoaXMuX2NvbnRleHRUYXJnZXQgPSBudWxsOwogICAgfSwK
CiAgICBjb250ZXh0QWxpZ24oYWxpZ24pIHsKICAgICAgICBpZiAoIXRoaXMuX2NvbnRleHRUYXJn
ZXQpIHJldHVybjsKICAgICAgICB0aGlzLl9jb250ZXh0VGFyZ2V0LmNsYXNzTGlzdC5yZW1vdmUo
J2RyaXZlLWFsaWduLWxlZnQnLCAnZHJpdmUtYWxpZ24tY2VudGVyJywgJ2RyaXZlLWFsaWduLXJp
Z2h0Jyk7CiAgICAgICAgdGhpcy5fY29udGV4dFRhcmdldC5jbGFzc0xpc3QuYWRkKCdkcml2ZS1h
bGlnbi0nICsgYWxpZ24pOwoKICAgICAgICAvLyBVcGRhdGUgbWVkaWEgbWV0YWRhdGEKICAgICAg
ICBjb25zdCBtZWRpYUlkID0gdGhpcy5fY29udGV4dFRhcmdldC5nZXRBdHRyaWJ1dGUoJ2RhdGEt
bWVkaWEtaWQnKTsKICAgICAgICBpZiAobWVkaWFJZCAmJiB0aGlzLmN1cnJlbnREb2MpIHsKICAg
ICAgICAgICAgY29uc3QgbWVkaWEgPSAodGhpcy5jdXJyZW50RG9jLm1lZGlhcyB8fCBbXSkuZmlu
ZChtID0+IG0ubWVkaWFJZCA9PT0gbWVkaWFJZCk7CiAgICAgICAgICAgIGlmIChtZWRpYSkgbWVk
aWEuYWxpZ25tZW50ID0gYWxpZ247CiAgICAgICAgfQoKICAgICAgICB0aGlzLmhpZGVDb250ZXh0
TWVudSgpOwogICAgfSwKCiAgICBjb250ZXh0RWRpdENhcHRpb24oKSB7CiAgICAgICAgaWYgKCF0
aGlzLl9jb250ZXh0VGFyZ2V0KSByZXR1cm47CiAgICAgICAgY29uc3QgZmlnY2FwdGlvbiA9IHRo
aXMuX2NvbnRleHRUYXJnZXQucXVlcnlTZWxlY3RvcignZmlnY2FwdGlvbiwgLmRyaXZlLW1lZGlh
LWNhcHRpb24nKTsKICAgICAgICBjb25zdCBjdXJyZW50ID0gZmlnY2FwdGlvbiA/IGZpZ2NhcHRp
b24udGV4dENvbnRlbnQgOiAnJzsKICAgICAgICBjb25zdCBuZXdDYXB0aW9uID0gcHJvbXB0KCdV
bnRlcnRpdGVsIGJlYXJiZWl0ZW46JywgY3VycmVudCk7CiAgICAgICAgaWYgKG5ld0NhcHRpb24g
PT09IG51bGwpIHJldHVybjsKCiAgICAgICAgaWYgKGZpZ2NhcHRpb24pIHsKICAgICAgICAgICAg
aWYgKG5ld0NhcHRpb24pIHsgZmlnY2FwdGlvbi50ZXh0Q29udGVudCA9IG5ld0NhcHRpb247IH0K
ICAgICAgICAgICAgZWxzZSB7IGZpZ2NhcHRpb24ucmVtb3ZlKCk7IH0KICAgICAgICB9IGVsc2Ug
aWYgKG5ld0NhcHRpb24pIHsKICAgICAgICAgICAgY29uc3QgY2FwID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnZmlnY2FwdGlvbicpOwogICAgICAgICAgICBjYXAudGV4dENvbnRlbnQgPSBuZXdD
YXB0aW9uOwogICAgICAgICAgICB0aGlzLl9jb250ZXh0VGFyZ2V0LmFwcGVuZENoaWxkKGNhcCk7
CiAgICAgICAgfQoKICAgICAgICAvLyBVcGRhdGUgbWV0YWRhdGEKICAgICAgICBjb25zdCBtZWRp
YUlkID0gdGhpcy5fY29udGV4dFRhcmdldC5nZXRBdHRyaWJ1dGUoJ2RhdGEtbWVkaWEtaWQnKTsK
ICAgICAgICBpZiAobWVkaWFJZCAmJiB0aGlzLmN1cnJlbnREb2MpIHsKICAgICAgICAgICAgY29u
c3QgbWVkaWEgPSAodGhpcy5jdXJyZW50RG9jLm1lZGlhcyB8fCBbXSkuZmluZChtID0+IG0ubWVk
aWFJZCA9PT0gbWVkaWFJZCk7CiAgICAgICAgICAgIGlmIChtZWRpYSkgbWVkaWEuZGVzY3JpcHRp
b24gPSBuZXdDYXB0aW9uOwogICAgICAgIH0KCiAgICAgICAgdGhpcy5oaWRlQ29udGV4dE1lbnUo
KTsKICAgIH0sCgogICAgY29udGV4dFJlbW92ZSgpIHsKICAgICAgICBpZiAoIXRoaXMuX2NvbnRl
eHRUYXJnZXQpIHJldHVybjsKICAgICAgICBjb25zdCBtZWRpYUlkID0gdGhpcy5fY29udGV4dFRh
cmdldC5nZXRBdHRyaWJ1dGUoJ2RhdGEtbWVkaWEtaWQnKTsKICAgICAgICBpZiAobWVkaWFJZCAm
JiB0aGlzLmN1cnJlbnREb2MgJiYgdGhpcy5jdXJyZW50RG9jLm1lZGlhcykgewogICAgICAgICAg
ICBjb25zdCBpZHggPSB0aGlzLmN1cnJlbnREb2MubWVkaWFzLmZpbmRJbmRleChtID0+IG0ubWVk
aWFJZCA9PT0gbWVkaWFJZCk7CiAgICAgICAgICAgIGlmIChpZHggPj0gMCkgewogICAgICAgICAg
ICAgICAgY29uc3QgbWVkaWEgPSB0aGlzLmN1cnJlbnREb2MubWVkaWFzW2lkeF07CiAgICAgICAg
ICAgICAgICAvLyBEYXRlaSBhdWYgZGVtIFNlcnZlciBsb2VzY2hlbgogICAgICAgICAgICAgICAg
aWYgKG1lZGlhLnVybCAmJiBEcml2ZUZTLm1vZGUgPT09ICdzZXJ2ZXInKSB7CiAgICAgICAgICAg
ICAgICAgICAgZmV0Y2goJy9hcGkvZGVsZXRlJywgewogICAgICAgICAgICAgICAgICAgICAgICBt
ZXRob2Q6ICdQT1NUJywKICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczogeyAnQ29udGVu
dC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9dXRmLTgnIH0sCiAgICAgICAgICAg
ICAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHsgcGF0aDogbWVkaWEudXJsIH0pCiAg
ICAgICAgICAgICAgICAgICAgfSkuY2F0Y2goKCkgPT4ge30pOwogICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50RG9jLm1lZGlhcy5zcGxpY2UoaWR4LCAxKTsKICAg
ICAgICAgICAgfQogICAgICAgIH0KICAgICAgICB0aGlzLl9jb250ZXh0VGFyZ2V0LnJlbW92ZSgp
OwogICAgICAgIHRoaXMuX3JlbmRlck1lZGlhTGlzdCgpOwogICAgICAgIHRoaXMuaGlkZUNvbnRl
eHRNZW51KCk7CiAgICAgICAgc2hvd1RvYXN0KCdNZWRpdW0gZW50ZmVybnQnLCAnc3VjY2Vzcycp
OwogICAgfSwKCiAgICAvLyAtLS0gTWVkaWVuLVZlcndhbHR1bmcgaW0gRWRpdG9yIC0tLQogICAg
dG9nZ2xlTWVkaWFQYW5lbCgpIHsKICAgICAgICBjb25zdCBwYW5lbCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdlZGl0b3JNZWRpYVBhbmVsJyk7CiAgICAgICAgaWYgKHBhbmVsLnN0eWxlLmRp
c3BsYXkgPT09ICdub25lJykgewogICAgICAgICAgICB0aGlzLl9yZW5kZXJNZWRpYUxpc3QoKTsK
ICAgICAgICAgICAgcGFuZWwuc3R5bGUuZGlzcGxheSA9ICcnOwogICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgIHBhbmVsLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICAgICAgfQogICAgfSwK
CiAgICBfcmVuZGVyTWVkaWFMaXN0KCkgewogICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdlZGl0b3JNZWRpYUxpc3QnKTsKICAgICAgICBjb25zdCBwYW5l
bCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdlZGl0b3JNZWRpYVBhbmVsJyk7CiAgICAgICAg
aWYgKCFjb250YWluZXIgfHwgIXRoaXMuY3VycmVudERvYykgcmV0dXJuOwogICAgICAgIGNvbnN0
IG1lZGlhcyA9IHRoaXMuY3VycmVudERvYy5tZWRpYXMgfHwgW107CgogICAgICAgIGlmIChtZWRp
YXMubGVuZ3RoID09PSAwKSB7CiAgICAgICAgICAgIGNvbnRhaW5lci5pbm5lckhUTUwgPSAnPGRp
diBzdHlsZT0iZm9udC1zaXplOjEycHg7IGNvbG9yOnZhcigtLXRleHQtbXV0ZWQpOyBwYWRkaW5n
OjhweCAwOyB0ZXh0LWFsaWduOmNlbnRlcjsgbGluZS1oZWlnaHQ6MS44OyI+JyArCiAgICAgICAg
ICAgICAgICAnTm9jaCBrZWluZSBEYXRlaWVuIGhvY2hnZWxhZGVuLjxicj4nICsKICAgICAgICAg
ICAgICAgICc8YnV0dG9uIG9uY2xpY2s9IkRyaXZlRWRpdG9yLnNob3dVcGxvYWRNb2RhbCgpIiBz
dHlsZT0ibWFyZ2luLXRvcDo0cHg7cGFkZGluZzo0cHggMTRweDtib3JkZXI6MXB4IGRhc2hlZCB2
YXIoLS1ib3JkZXItY29sb3IpO2JvcmRlci1yYWRpdXM6NHB4O2JhY2tncm91bmQ6bm9uZTtjdXJz
b3I6cG9pbnRlcjtmb250LXNpemU6MTJweDtjb2xvcjp2YXIoLS10ZXh0LWhlYWRpbmcpOyI+RGF0
ZWllbiBob2NobGFkZW48L2J1dHRvbj4nICsKICAgICAgICAgICAgJzwvZGl2Pic7CiAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIGNvbnRhaW5lci5pbm5lckhUTUwgPSBtZWRp
YXMubWFwKChtLCBpKSA9PiB7CiAgICAgICAgICAgIGNvbnN0IHR5cGUgPSAobS50eXBlIHx8ICdm
aWxlJykudG9VcHBlckNhc2UoKTsKICAgICAgICAgICAgY29uc3QgdGl0bGUgPSBEcml2ZVBvcnRh
bC5lc2NhcGVIVE1MKG0udGl0bGUgfHwgbS51cmwuc3BsaXQoJy8nKS5wb3AoKSk7CiAgICAgICAg
ICAgIGNvbnN0IGRlc2MgPSBtLmRlc2NyaXB0aW9uID8gRHJpdmVQb3J0YWwuZXNjYXBlSFRNTCht
LmRlc2NyaXB0aW9uKSA6ICcnOwogICAgICAgICAgICBjb25zdCBtb2RlID0gbS5kaXNwbGF5TW9k
ZSA9PT0gJ2lubGluZScgPyAnSW5saW5lJyA6IG0uZGlzcGxheU1vZGUgPT09ICdwZGYtaWZyYW1l
JyA/ICdFaW5nZWJldHRldCcgOiAnQW5oYW5nJzsKICAgICAgICAgICAgcmV0dXJuICc8ZGl2IHN0
eWxlPSJkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsgZ2FwOjhweDsgcGFkZGluZzo0
cHggMDsgYm9yZGVyLWJvdHRvbToxcHggc29saWQgdmFyKC0tYm9yZGVyLWxpZ2h0KTsgZm9udC1z
aXplOjEycHg7Ij4nICsKICAgICAgICAgICAgICAgICc8c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6
NjAwOyBjb2xvcjp2YXIoLS10ZXh0LWhlYWRpbmcpOyBtaW4td2lkdGg6NDBweDsiPicgKyB0eXBl
ICsgJzwvc3Bhbj4nICsKICAgICAgICAgICAgICAgICc8c3BhbiBzdHlsZT0iZmxleDoxOyBvdmVy
ZmxvdzpoaWRkZW47IHRleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7IHdoaXRlLXNwYWNlOm5vd3JhcDsi
IHRpdGxlPSInICsgRHJpdmVQb3J0YWwuZXNjYXBlQXR0cihtLnVybCkgKyAnIj4nICsgdGl0bGUg
KyAnPC9zcGFuPicgKwogICAgICAgICAgICAgICAgJzxzcGFuIHN0eWxlPSJjb2xvcjp2YXIoLS10
ZXh0LW11dGVkKTsgZm9udC1zaXplOjEwcHg7Ij4nICsgbW9kZSArICc8L3NwYW4+JyArCiAgICAg
ICAgICAgICAgICAnPGJ1dHRvbiBvbmNsaWNrPSJEcml2ZUVkaXRvci5lZGl0TWVkaWEoJyArIGkg
KyAnKSIgc3R5bGU9ImJhY2tncm91bmQ6bm9uZTsgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3Jk
ZXItY29sb3IpOyBib3JkZXItcmFkaXVzOjNweDsgcGFkZGluZzoxcHggNnB4OyBmb250LXNpemU6
MTFweDsgY3Vyc29yOnBvaW50ZXI7IGNvbG9yOnZhcigtLXRleHQtcHJpbWFyeSk7Ij5CZWFyYmVp
dGVuPC9idXR0b24+JyArCiAgICAgICAgICAgICAgICAnPGJ1dHRvbiBvbmNsaWNrPSJEcml2ZUVk
aXRvci5yZW1vdmVNZWRpYSgnICsgaSArICcpIiBzdHlsZT0iYmFja2dyb3VuZDpub25lOyBib3Jk
ZXI6MXB4IHNvbGlkICNkYzM1NDU7IGJvcmRlci1yYWRpdXM6M3B4OyBwYWRkaW5nOjFweCA2cHg7
IGZvbnQtc2l6ZToxMXB4OyBjdXJzb3I6cG9pbnRlcjsgY29sb3I6I2RjMzU0NTsiPkzDtnNjaGVu
PC9idXR0b24+JyArCiAgICAgICAgICAgICc8L2Rpdj4nOwogICAgICAgIH0pLmpvaW4oJycpOwog
ICAgfSwKCiAgICBlZGl0TWVkaWEoaW5kZXgpIHsKICAgICAgICBpZiAoIXRoaXMuY3VycmVudERv
YyB8fCAhdGhpcy5jdXJyZW50RG9jLm1lZGlhcyB8fCAhdGhpcy5jdXJyZW50RG9jLm1lZGlhc1tp
bmRleF0pIHJldHVybjsKICAgICAgICBjb25zdCBtZWRpYSA9IHRoaXMuY3VycmVudERvYy5tZWRp
YXNbaW5kZXhdOwoKICAgICAgICBjb25zdCBuZXdUaXRsZSA9IHByb21wdCgnVGl0ZWw6JywgbWVk
aWEudGl0bGUgfHwgJycpOwogICAgICAgIGlmIChuZXdUaXRsZSA9PT0gbnVsbCkgcmV0dXJuOwog
ICAgICAgIG1lZGlhLnRpdGxlID0gbmV3VGl0bGU7CgogICAgICAgIGNvbnN0IG5ld0Rlc2MgPSBw
cm9tcHQoJ0Jlc2NocmVpYnVuZzonLCBtZWRpYS5kZXNjcmlwdGlvbiB8fCAnJyk7CiAgICAgICAg
aWYgKG5ld0Rlc2MgPT09IG51bGwpIHJldHVybjsKICAgICAgICBtZWRpYS5kZXNjcmlwdGlvbiA9
IG5ld0Rlc2M7CgogICAgICAgIC8vIElubGluZS1NZWRpZW4gaW0gRWRpdG9yIGFrdHVhbGlzaWVy
ZW4gKGZpZ2NhcHRpb24pCiAgICAgICAgaWYgKG1lZGlhLm1lZGlhSWQpIHsKICAgICAgICAgICAg
Y29uc3QgZmlndXJlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2VkaXRvcklucHV0IFtkYXRh
LW1lZGlhLWlkPSInICsgbWVkaWEubWVkaWFJZCArICciXScpOwogICAgICAgICAgICBpZiAoZmln
dXJlKSB7CiAgICAgICAgICAgICAgICBsZXQgY2FwID0gZmlndXJlLnF1ZXJ5U2VsZWN0b3IoJ2Zp
Z2NhcHRpb24nKTsKICAgICAgICAgICAgICAgIGlmIChuZXdEZXNjKSB7CiAgICAgICAgICAgICAg
ICAgICAgaWYgKCFjYXApIHsgY2FwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZmlnY2FwdGlv
bicpOyBmaWd1cmUuYXBwZW5kQ2hpbGQoY2FwKTsgfQogICAgICAgICAgICAgICAgICAgIGNhcC50
ZXh0Q29udGVudCA9IG5ld0Rlc2M7CiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNhcCkgewog
ICAgICAgICAgICAgICAgICAgIGNhcC5yZW1vdmUoKTsKICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgfQogICAgICAgIH0KCiAgICAgICAgdGhpcy5fcmVuZGVyTWVkaWFMaXN0KCk7CiAgICAg
ICAgc2hvd1RvYXN0KCdBbmhhbmcgYWt0dWFsaXNpZXJ0JywgJ3N1Y2Nlc3MnKTsKICAgIH0sCgog
ICAgcmVtb3ZlTWVkaWEoaW5kZXgpIHsKICAgICAgICBpZiAoIXRoaXMuY3VycmVudERvYyB8fCAh
dGhpcy5jdXJyZW50RG9jLm1lZGlhcyB8fCAhdGhpcy5jdXJyZW50RG9jLm1lZGlhc1tpbmRleF0p
IHJldHVybjsKICAgICAgICBjb25zdCBtZWRpYSA9IHRoaXMuY3VycmVudERvYy5tZWRpYXNbaW5k
ZXhdOwogICAgICAgIGNvbnN0IG5hbWUgPSBtZWRpYS50aXRsZSB8fCBtZWRpYS51cmwuc3BsaXQo
Jy8nKS5wb3AoKTsKCiAgICAgICAgLy8gQmVzdGFldGlndW5nc2RpYWxvZyBhbHMgTW9kYWwgKHN0
YXR0IGJyb3dzZXItbmF0aXZlbSBjb25maXJtKQogICAgICAgIHZhciBvdmVybGF5ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICAgICAgb3ZlcmxheS5zdHlsZS5jc3NUZXh0ID0g
J3Bvc2l0aW9uOmZpeGVkO2luc2V0OjA7ei1pbmRleDoxMTAwMDtiYWNrZ3JvdW5kOnJnYmEoMCww
LDAsMC41KTtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpj
ZW50ZXI7JzsKICAgICAgICB2YXIgbW9kYWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYn
KTsKICAgICAgICBtb2RhbC5zdHlsZS5jc3NUZXh0ID0gJ2JhY2tncm91bmQ6dmFyKC0tYmctY2Fy
ZCwjZmZmKTtib3JkZXItcmFkaXVzOjEwcHg7cGFkZGluZzoyNHB4O21heC13aWR0aDo0MDBweDt3
aWR0aDo5MCU7Ym94LXNoYWRvdzowIDhweCAzMnB4IHJnYmEoMCwwLDAsMC4yNSk7dGV4dC1hbGln
bjpjZW50ZXI7JzsKICAgICAgICBtb2RhbC5pbm5lckhUTUwgPQogICAgICAgICAgICAnPGRpdiBz
dHlsZT0iZm9udC1zaXplOjMycHg7bWFyZ2luLWJvdHRvbTo4cHg7Ij4mIzEyODQ2NTs8L2Rpdj4n
ICsKICAgICAgICAgICAgJzxkaXYgc3R5bGU9ImNvbG9yOnZhcigtLXRleHQtaGVhZGluZyk7Zm9u
dC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NjAwO21hcmdpbi1ib3R0b206OHB4OyI+QW5oYW5nIGVu
dGZlcm5lbj88L2Rpdj4nICsKICAgICAgICAgICAgJzxkaXYgc3R5bGU9ImNvbG9yOnZhcigtLXRl
eHQtcHJpbWFyeSk7Zm9udC1zaXplOjEzcHg7bWFyZ2luLWJvdHRvbToxOHB4OyI+PHN0cm9uZz4n
ICsgRHJpdmVQb3J0YWwuZXNjYXBlSFRNTChuYW1lKSArICc8L3N0cm9uZz4gd2lyZCBhdXMgZGVt
IEFydGlrZWwgdW5kIHZvbSBTZXJ2ZXIgZ2Vsb2VzY2h0LjwvZGl2PicgKwogICAgICAgICAgICAn
PGRpdiBzdHlsZT0iZGlzcGxheTpmbGV4O2dhcDo4cHg7anVzdGlmeS1jb250ZW50OmNlbnRlcjsi
PicgKwogICAgICAgICAgICAgICAgJzxidXR0b24gaWQ9InJtTWVkaWFDYW5jZWwiIHN0eWxlPSJw
YWRkaW5nOjhweCAyMHB4O2JvcmRlci1yYWRpdXM6NnB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0t
Ym9yZGVyLWNvbG9yKTtiYWNrZ3JvdW5kOnZhcigtLWJnLWNhcmQpO2NvbG9yOnZhcigtLXRleHQt
cHJpbWFyeSk7Y3Vyc29yOnBvaW50ZXI7Zm9udC1zaXplOjEzcHg7Ij5BYmJyZWNoZW48L2J1dHRv
bj4nICsKICAgICAgICAgICAgICAgICc8YnV0dG9uIGlkPSJybU1lZGlhQ29uZmlybSIgc3R5bGU9
InBhZGRpbmc6OHB4IDIwcHg7Ym9yZGVyLXJhZGl1czo2cHg7Ym9yZGVyOm5vbmU7YmFja2dyb3Vu
ZDojZGMzNTQ1O2NvbG9yOiNmZmY7Y3Vyc29yOnBvaW50ZXI7Zm9udC13ZWlnaHQ6NjAwO2ZvbnQt
c2l6ZToxM3B4OyI+RW50ZmVybmVuPC9idXR0b24+JyArCiAgICAgICAgICAgICc8L2Rpdj4nOwog
ICAgICAgIG92ZXJsYXkuYXBwZW5kQ2hpbGQobW9kYWwpOwogICAgICAgIGRvY3VtZW50LmJvZHku
YXBwZW5kQ2hpbGQob3ZlcmxheSk7CgogICAgICAgIHZhciBzZWxmID0gdGhpczsKICAgICAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgncm1NZWRpYUNhbmNlbCcpLm9uY2xpY2sgPSBmdW5jdGlv
bigpIHsgb3ZlcmxheS5yZW1vdmUoKTsgfTsKICAgICAgICBvdmVybGF5Lm9uY2xpY2sgPSBmdW5j
dGlvbihlKSB7IGlmIChlLnRhcmdldCA9PT0gb3ZlcmxheSkgb3ZlcmxheS5yZW1vdmUoKTsgfTsK
ICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncm1NZWRpYUNvbmZpcm0nKS5vbmNsaWNr
ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIG92ZXJsYXkucmVtb3ZlKCk7CgogICAgICAgICAg
ICAvLyBJbmxpbmUtRWxlbWVudCBhdXMgRWRpdG9yIGVudGZlcm5lbgogICAgICAgICAgICBpZiAo
bWVkaWEubWVkaWFJZCkgewogICAgICAgICAgICAgICAgdmFyIGZpZ3VyZSA9IGRvY3VtZW50LnF1
ZXJ5U2VsZWN0b3IoJyNlZGl0b3JJbnB1dCBbZGF0YS1tZWRpYS1pZD0iJyArIG1lZGlhLm1lZGlh
SWQgKyAnIl0nKTsKICAgICAgICAgICAgICAgIGlmIChmaWd1cmUpIGZpZ3VyZS5yZW1vdmUoKTsK
ICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gRGF0ZWkgYXVmIGRlbSBTZXJ2ZXIgbG9lc2No
ZW4KICAgICAgICAgICAgaWYgKG1lZGlhLnVybCAmJiBEcml2ZUZTLm1vZGUgPT09ICdzZXJ2ZXIn
KSB7CiAgICAgICAgICAgICAgICBmZXRjaCgnL2FwaS9kZWxldGUnLCB7CiAgICAgICAgICAgICAg
ICAgICAgbWV0aG9kOiAnUE9TVCcsCiAgICAgICAgICAgICAgICAgICAgaGVhZGVyczogeyAnQ29u
dGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9dXRmLTgnIH0sCiAgICAgICAg
ICAgICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoeyBwYXRoOiBtZWRpYS51cmwgfSkKICAg
ICAgICAgICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uKCkge30pOwogICAgICAgICAgICB9CgogICAg
ICAgICAgICBzZWxmLmN1cnJlbnREb2MubWVkaWFzLnNwbGljZShpbmRleCwgMSk7CiAgICAgICAg
ICAgIHNlbGYuX3JlbmRlck1lZGlhTGlzdCgpOwogICAgICAgICAgICBzaG93VG9hc3QoJyInICsg
bmFtZSArICciIGVudGZlcm50JywgJ3N1Y2Nlc3MnKTsKICAgICAgICB9OwogICAgfSwKCiAgICAv
LyAtLS0gUGVzc2ltaXN0aWMgTG9ja2luZyAtLS0KICAgIGFzeW5jIGFjcXVpcmVMb2NrKGRvY0lk
KSB7CiAgICAgICAgaWYgKERyaXZlRlMubW9kZSA9PT0gJ3NlcnZlcicpIHsKICAgICAgICAgICAg
dHJ5IHsKICAgICAgICAgICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoKCcvYXBpL2xvY2sn
LCB7CiAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCcsCiAgICAgICAgICAgICAgICAg
ICAgaGVhZGVyczogeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9
dXRmLTgnIH0sCiAgICAgICAgICAgICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoeyBkb2NJ
ZDogZG9jSWQgfSkKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgaWYgKHJlcy5v
aykgcmV0dXJuIHsgb2s6IHRydWUgfTsKICAgICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBhd2Fp
dCByZXMuanNvbigpOwogICAgICAgICAgICAgICAgcmV0dXJuIHsgb2s6IGZhbHNlLCBieTogZGF0
YS5ieSB8fCAnVW5iZWthbm50JywgbWludXRlczogZGF0YS5taW51dGVzIHx8ICc/JyB9OwogICAg
ICAgICAgICB9IGNhdGNoIHsKICAgICAgICAgICAgICAgIC8vIEtlaW4gU2VydmVyIG9kZXIgRmVo
bGVyOiBMb2NrIHVlYmVyc3ByaW5nZW4KICAgICAgICAgICAgICAgIHJldHVybiB7IG9rOiB0cnVl
IH07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgLy8gRmlsZXN5c3RlbS1Nb2R1czog
S2VpbiBMb2NraW5nIChTaW5nbGUtVXNlci1TemVuYXJpbykKICAgICAgICByZXR1cm4geyBvazog
dHJ1ZSB9OwogICAgfSwKCiAgICBhc3luYyByZWxlYXNlTG9jayhkb2NJZCkgewogICAgICAgIGlm
IChEcml2ZUZTLm1vZGUgPT09ICdzZXJ2ZXInKSB7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAg
ICAgICAgICBhd2FpdCBmZXRjaCgnL2FwaS91bmxvY2snLCB7CiAgICAgICAgICAgICAgICAgICAg
bWV0aG9kOiAnUE9TVCcsCiAgICAgICAgICAgICAgICAgICAgaGVhZGVyczogeyAnQ29udGVudC1U
eXBlJzogJ2FwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9dXRmLTgnIH0sCiAgICAgICAgICAgICAg
ICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoeyBkb2NJZDogZG9jSWQgfSkKICAgICAgICAgICAg
ICAgIH0pOwogICAgICAgICAgICB9IGNhdGNoIHt9CiAgICAgICAgfQogICAgfSwKCiAgICAvLyAt
LS0gQ29udHJpYnV0aW9uIFR5cGUgRGlhbG9nIC0tLQogICAgc2hvd0NvbnRyaWJEaWFsb2coKSB7
CiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRyaWJEaWFsb2cnKS5jbGFzc0xp
c3QuYWRkKCdhY3RpdmUnKTsKICAgIH0sCgogICAgY2xvc2VDb250cmliRGlhbG9nKCkgewogICAg
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250cmliRGlhbG9nJykuY2xhc3NMaXN0LnJl
bW92ZSgnYWN0aXZlJyk7CiAgICB9LAoKICAgIHNldENvbnRyaWJUeXBlKHR5cGUpIHsKICAgICAg
ICB0aGlzLl9wZW5kaW5nQ29udHJpYlR5cGUgPSB0eXBlOwogICAgICAgIHRoaXMuY2xvc2VDb250
cmliRGlhbG9nKCk7CiAgICAgICAgLy8gU2F2ZS1Qcm96ZXNzIGZvcnRzZXR6ZW4gKGNsb3NlQWZ0
ZXIgYXVzIHZvcmhlcmlnZW0gQXVmcnVmIHVlYmVybmVobWVuKQogICAgICAgIHRoaXMuc2F2ZSh0
aGlzLl9wZW5kaW5nQ2xvc2VBZnRlcik7CiAgICAgICAgdGhpcy5fcGVuZGluZ0Nsb3NlQWZ0ZXIg
PSBmYWxzZTsKICAgIH0KfTsKCi8vID09PT09PT09PT09PT09PT09PT09PSBNRURJQSBNT0RBTCA9
PT09PT09PT09PT09PT09PT09PT0KCi8vID09PT09PT09PT09PT09PT09PT09PSBVTklWRVJTQUwg
TUVESUEgTU9EQUwgPT09PT09PT09PT09PT09PT09PT09CgpmdW5jdGlvbiBvcGVuTWVkaWFNb2Rh
bCh1cmwsIHR5cGUsIHRpdGxlKSB7CiAgICBjb25zdCBtb2RhbCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdtZWRpYU1vZGFsJyk7CiAgICBjb25zdCBjb250YWluZXIgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnbWVkaWFNb2RhbENvbnRhaW5lcicpOwogICAgY29uc3Qgc2FmZVVybCA9IERy
aXZlUG9ydGFsLmVzY2FwZUF0dHIodXJsKTsKICAgIGNvbnN0IHNhZmVUaXRsZSA9IERyaXZlUG9y
dGFsLmVzY2FwZUhUTUwodGl0bGUgfHwgdXJsLnNwbGl0KCcvJykucG9wKCkpOwogICAgbGV0IGNv
bnRlbnQgPSAnJzsKICAgIGxldCB0b29sYmFyID0gJyc7CgogICAgc3dpdGNoICh0eXBlKSB7CiAg
ICAgICAgY2FzZSAnaW1hZ2UnOgogICAgICAgICAgICBjb250ZW50ID0gJzxpbWcgc3JjPSInICsg
c2FmZVVybCArICciIGFsdD0iJyArIERyaXZlUG9ydGFsLmVzY2FwZUF0dHIodGl0bGUgfHwgJycp
ICsgJyIgb25jbGljaz0idGhpcy5jbGFzc0xpc3QudG9nZ2xlKFwnem9vbWVkXCcpIj4nOwogICAg
ICAgICAgICB0b29sYmFyID0gJzxidXR0b24gb25jbGljaz0iZG9jdW1lbnQucXVlcnlTZWxlY3Rv
cihcJyNtZWRpYU1vZGFsQ29udGFpbmVyIGltZ1wnKS5jbGFzc0xpc3QudG9nZ2xlKFwnem9vbWVk
XCcpIj5ab29tPC9idXR0b24+JyArCiAgICAgICAgICAgICAgICAgICAgICAgJzxhIGhyZWY9Iicg
KyBzYWZlVXJsICsgJyIgZG93bmxvYWQ+SGVydW50ZXJsYWRlbjwvYT4nICsKICAgICAgICAgICAg
ICAgICAgICAgICAnPGJ1dHRvbiBvbmNsaWNrPSJ3aW5kb3cub3BlbihcJycgKyBzYWZlVXJsICsg
J1wnLFwnX2JsYW5rXCcpIj5JbiBuZXVlbSBUYWI8L2J1dHRvbj4nOwogICAgICAgICAgICBicmVh
azsKICAgICAgICBjYXNlICdwZGYnOgogICAgICAgICAgICAvLyBQREY6IE1heGltYWxlIEJyZWl0
ZSB1bmQgSG9laGUgZnVlciBndXRlIExlc2JhcmtlaXQKICAgICAgICAgICAgdmFyIG1jID0gZG9j
dW1lbnQucXVlcnlTZWxlY3RvcignLm1lZGlhLW1vZGFsLWNvbnRlbnQnKTsKICAgICAgICAgICAg
bWMuc3R5bGUubWF4V2lkdGggPSAnOTV2dyc7CiAgICAgICAgICAgIG1jLnN0eWxlLndpZHRoID0g
JzEyMDBweCc7CiAgICAgICAgICAgIG1jLnN0eWxlLm1heEhlaWdodCA9ICc5NXZoJzsKICAgICAg
ICAgICAgbWMuc3R5bGUucGFkZGluZyA9ICcxMnB4JzsKICAgICAgICAgICAgY29udGVudCA9ICc8
aWZyYW1lIHNyYz0iJyArIHNhZmVVcmwgKyAnIiBzdHlsZT0id2lkdGg6MTAwJTtoZWlnaHQ6ODJ2
aDtib3JkZXI6bm9uZTtib3JkZXItcmFkaXVzOjRweDtiYWNrZ3JvdW5kOndoaXRlOyI+PC9pZnJh
bWU+JzsKICAgICAgICAgICAgdG9vbGJhciA9ICc8YSBocmVmPSInICsgc2FmZVVybCArICciIGRv
d25sb2FkPkhlcnVudGVybGFkZW48L2E+JyArCiAgICAgICAgICAgICAgICAgICAgICAgJzxidXR0
b24gb25jbGljaz0id2luZG93Lm9wZW4oXCcnICsgc2FmZVVybCArICdcJyxcJ19ibGFua1wnKSI+
SW4gbmV1ZW0gVGFiPC9idXR0b24+JzsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAn
dmlkZW8nOgogICAgICAgICAgICBjb250ZW50ID0gJzx2aWRlbyBjb250cm9scyBhdXRvcGxheSBz
dHlsZT0ibWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDo3MHZoO2JvcmRlci1yYWRpdXM6OHB4OyI+
JyArCiAgICAgICAgICAgICAgICAgICAgICAgJzxzb3VyY2Ugc3JjPSInICsgc2FmZVVybCArICci
PjwvdmlkZW8+JzsKICAgICAgICAgICAgdG9vbGJhciA9ICc8YSBocmVmPSInICsgc2FmZVVybCAr
ICciIGRvd25sb2FkPkhlcnVudGVybGFkZW48L2E+JzsKICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgY2FzZSAnYXVkaW8nOgogICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcubWVk
aWEtbW9kYWwtY29udGVudCcpLnN0eWxlLm1heFdpZHRoID0gJzYwMHB4JzsKICAgICAgICAgICAg
Y29udGVudCA9ICc8ZGl2IHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlcjtwYWRkaW5nOjE2cHggMDsi
PicgKwogICAgICAgICAgICAgICAgICAgICAgICc8ZGl2IHN0eWxlPSJmb250LXNpemU6NDhweDtt
YXJnaW4tYm90dG9tOjEycHg7Ij4mIzEyNzkyNTs8L2Rpdj48L2Rpdj4nICsKICAgICAgICAgICAg
ICAgICAgICAgICAnPGRpdiBzdHlsZT0iYmFja2dyb3VuZDojZmZmO2JvcmRlci1yYWRpdXM6MzBw
eDtwYWRkaW5nOjZweCAxMHB4O3dpZHRoOjEwMCU7Ij4nICsKICAgICAgICAgICAgICAgICAgICAg
ICAnPGF1ZGlvIGNvbnRyb2xzIGF1dG9wbGF5IHNyYz0iJyArIHNhZmVVcmwgKyAnIiBzdHlsZT0i
ZGlzcGxheTpibG9jazt3aWR0aDoxMDAlO2hlaWdodDo0MHB4O2ZpbHRlcjpub25lOyI+PC9hdWRp
bz48L2Rpdj4nOwogICAgICAgICAgICB0b29sYmFyID0gJzxhIGhyZWY9IicgKyBzYWZlVXJsICsg
JyIgZG93bmxvYWQ+SGVydW50ZXJsYWRlbjwvYT4nOwogICAgICAgICAgICBicmVhazsKICAgICAg
ICBjYXNlICdkb2N4JzogY2FzZSAneGxzeCc6IGNhc2UgJ3BwdHgnOgogICAgICAgICAgICB2YXIg
dHlwZUxhYmVsID0gdHlwZS50b1VwcGVyQ2FzZSgpOwogICAgICAgICAgICBjb250ZW50ID0gJzxk
aXYgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyO3BhZGRpbmc6MzBweCAwOyI+JyArCiAgICAgICAg
ICAgICAgICAgICAgICAgJzxzcGFuIGNsYXNzPSJkcml2ZS1maWxlLWljb24gJyArIHR5cGUgKyAn
IiBzdHlsZT0id2lkdGg6ODBweDtoZWlnaHQ6ODBweDtmb250LXNpemU6MjRweDttYXJnaW46MCBh
dXRvIDE1cHg7Ij4nICsgdHlwZUxhYmVsICsgJzwvc3Bhbj4nICsKICAgICAgICAgICAgICAgICAg
ICAgICAnPHAgc3R5bGU9ImNvbG9yOnZhcigtLXRleHQtc2Vjb25kYXJ5KTttYXJnaW4tdG9wOjEw
cHg7Ij5EaWVzZXMgRG9rdW1lbnQga2FubiBudXIgbG9rYWwgZ2VvZWZmbmV0IHdlcmRlbi48L3A+
PC9kaXY+JzsKICAgICAgICAgICAgdG9vbGJhciA9ICc8YSBocmVmPSInICsgc2FmZVVybCArICci
IGRvd25sb2FkPkhlcnVudGVybGFkZW48L2E+JzsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ZGVmYXVsdDoKICAgICAgICAgICAgY29udGVudCA9ICc8ZGl2IHN0eWxlPSJ0ZXh0LWFsaWduOmNl
bnRlcjtwYWRkaW5nOjMwcHggMDtmb250LXNpemU6NjRweDsiPiYjMTI4MTk2OzwvZGl2Pic7CiAg
ICAgICAgICAgIHRvb2xiYXIgPSAnPGEgaHJlZj0iJyArIHNhZmVVcmwgKyAnIiBkb3dubG9hZD5I
ZXJ1bnRlcmxhZGVuPC9hPic7CiAgICB9CgogICAgY29udGFpbmVyLmlubmVySFRNTCA9CiAgICAg
ICAgJzxkaXYgY2xhc3M9Im1lZGlhLW1vZGFsLXRpdGxlIj4nICsgc2FmZVRpdGxlICsgJzwvZGl2
PicgKwogICAgICAgIGNvbnRlbnQgKwogICAgICAgICc8ZGl2IGNsYXNzPSJtZWRpYS1tb2RhbC10
b29sYmFyIj4nICsgdG9vbGJhciArICc8L2Rpdj4nOwoKICAgIG1vZGFsLnN0eWxlLmRpc3BsYXkg
PSAnYmxvY2snOwogICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIG1lZGlh
TW9kYWxLZXlIYW5kbGVyKTsKfQoKZnVuY3Rpb24gY2xvc2VNZWRpYU1vZGFsKCkgewogICAgY29u
c3QgbW9kYWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWVkaWFNb2RhbCcpOwogICAgbW9k
YWwuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgIC8vIE1vZGFsLVN0eWxlcyB6dXJ1ZWNrc2V0
emVuIChQREYvQXVkaW8gc2V0emVuIGVpZ2VuZSBHcm9lc3NlbikKICAgIHZhciBtYyA9IG1vZGFs
LnF1ZXJ5U2VsZWN0b3IoJy5tZWRpYS1tb2RhbC1jb250ZW50Jyk7CiAgICBpZiAobWMpIHsgbWMu
c3R5bGUubWF4V2lkdGggPSAnJzsgbWMuc3R5bGUud2lkdGggPSAnJzsgbWMuc3R5bGUubWF4SGVp
Z2h0ID0gJyc7IG1jLnN0eWxlLnBhZGRpbmcgPSAnJzsgfQogICAgLy8gQXVkaW8vVmlkZW8gc3Rv
cHBlbgogICAgbW9kYWwucXVlcnlTZWxlY3RvckFsbCgndmlkZW8sIGF1ZGlvJykuZm9yRWFjaChl
bCA9PiB7IGVsLnBhdXNlKCk7IGVsLnNyYyA9ICcnOyB9KTsKICAgIGRvY3VtZW50LnJlbW92ZUV2
ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBtZWRpYU1vZGFsS2V5SGFuZGxlcik7Cn0KCmZ1bmN0aW9u
IG1lZGlhTW9kYWxLZXlIYW5kbGVyKGUpIHsKICAgIGlmIChlLmtleSA9PT0gJ0VzY2FwZScpIGNs
b3NlTWVkaWFNb2RhbCgpOwp9CgovLyA9PT09PT09PT09PT09PT09PT09PT0gR09WRVJOQU5DRSA9
PT09PT09PT09PT09PT09PT09PT0KCi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci8vIE1vZHVsOiBE
cml2ZUdvdmVybmFuY2UgLSBSb2xsZW4sIEZyZWlnYWJlLVdvcmtmbG93LCBBZG1pbi1QYW5lbAov
LyBadXN0YWVuZGlnIGZ1ZXI6IExhZGVuIGRlciBHb3Zlcm5hbmNlLURhdGVuLCBCZXJlY2h0aWd1
bmdzcHJ1ZWZ1bmcsIFJldmlldy1VSSwgQXVkaXQtVHJhaWwKLy8gU2ljaGVyaGVpdDogQ2xpZW50
LXNlaXRpZ2UgQmVyZWNodGlndW5nc3BydWVmdW5nZW4gKGNhbkFwcHJvdmUsIGNhblNlZURvY3Vt
ZW50LCBpc1N1cGVyVXNlcikKLy8gICAgICAgICAgICAgc3RldWVybiBudXIgZGllIFVJLURhcnN0
ZWxsdW5nLiBEaWUgdGF0c2FlY2hsaWNoZSBBdXRvcmlzaWVydW5nIGVyZm9sZ3Qgc2VydmVyc2Vp
dGlnCi8vICAgICAgICAgICAgIGluIHNlcnZlci5wczEgLyBzZXJ2ZXIucHkgKFRlc3QtU3VwZXJV
c2VyLCBUZXN0LVJldmlld2VyKSBiZWkgamVkZW0gU2NocmVpYnp1Z3JpZmYuCi8vICAgICAgICAg
ICAgIGdvdmVybmFuY2UuanNvbiBpc3QgaW0gU2VydmVyLU1vZHVzIEFFUy0yNTYtdmVyc2NobHVl
c3NlbHQgKHNpZWhlIHNlcnZlci5wczEpLgovLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpjb25zdCBE
cml2ZUdvdmVybmFuY2UgPSB7CiAgICBkYXRhOiBudWxsLAogICAgY3VycmVudFVzZXI6IG51bGws
CiAgICBjdXJyZW50RG9tYWluOiBudWxsLAogICAgX2lzU3VwZXJVc2VyOiBmYWxzZSwKICAgIF9y
ZXZpZXdEaWFsb2dDYWxsYmFjazogbnVsbCwKICAgIF9yZXZpZXdEaWFsb2dBY3Rpb246IG51bGws
CiAgICBfZWRpdGluZ1Jldmlld2VySW5kZXg6IC0xLAoKICAgIGFzeW5jIGxvYWQoKSB7CiAgICAg
ICAgdHJ5IHsKICAgICAgICAgICAgaWYgKERyaXZlRlMubW9kZSA9PT0gJ3NlcnZlcicpIHsKICAg
ICAgICAgICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoKCcvYXBpL2dvdmVybmFuY2UnKTsK
ICAgICAgICAgICAgICAgIGlmIChyZXMub2spIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBy
ZXN1bHQgPSBhd2FpdCByZXMuanNvbigpOwogICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YSA9
IHJlc3VsdC5nb3Zlcm5hbmNlOwogICAgICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudFVzZXIg
PSByZXN1bHQuY3VycmVudFVzZXI7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50RG9t
YWluID0gcmVzdWx0LmN1cnJlbnREb21haW47CiAgICAgICAgICAgICAgICAgICAgdGhpcy5faXNT
dXBlclVzZXIgPSByZXN1bHQuaXNTdXBlclVzZXI7CiAgICAgICAgICAgICAgICAgICAgdGhpcy51
cGRhdGVVSSgpOwogICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZEhlbHBDb250ZW50KCk7CiAg
ICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5sb2FkU3RhcnRzZWl0ZSgpOwogICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAg
IH0gY2F0Y2gge30KCiAgICAgICAgLy8gU3RhdGlzY2hlciBNb2R1czogR292ZXJuYW5jZSBhdXMg
ZWluZ2ViZXR0ZXRlbiBEYXRlbiBsYWRlbgogICAgICAgIGlmIChEcml2ZUZTLm1vZGUgPT09ICdz
dGF0aWMnKSB7CiAgICAgICAgICAgIGlmICh0eXBlb2YgRFJJVkVfU1RBVElDX0lOREVYICE9PSAn
dW5kZWZpbmVkJyAmJiBEUklWRV9TVEFUSUNfSU5ERVggJiYgRFJJVkVfU1RBVElDX0lOREVYLmdv
dmVybmFuY2UpIHsKICAgICAgICAgICAgICAgIC8vIExlc2JhcmUgR292ZXJuYW5jZS1EYXRlbiBh
dXMgaW5kZXguanMgKFNldHRpbmdzICsgUmV2aWV3ZXItSW5mbykKICAgICAgICAgICAgICAgIHRo
aXMuZGF0YSA9IERSSVZFX1NUQVRJQ19JTkRFWC5nb3Zlcm5hbmNlOwogICAgICAgICAgICB9CiAg
ICAgICAgfQoKICAgICAgICAvLyBGaWxlc3lzdGVtLU1vZHVzOiBnb3Zlcm5hbmNlLmpzb24gYXVz
IEhhbmRsZSBsYWRlbgogICAgICAgIGlmIChEcml2ZUZTLm1vZGUgPT09ICdmaWxlc3lzdGVtJyAm
JiBEcml2ZUZTLl9kYXRhSGFuZGxlKSB7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAg
ICBjb25zdCBmaCA9IGF3YWl0IERyaXZlRlMuX2RhdGFIYW5kbGUuZ2V0RmlsZUhhbmRsZSgnZ292
ZXJuYW5jZS5qc29uJyk7CiAgICAgICAgICAgICAgICBjb25zdCBmaWxlID0gYXdhaXQgZmguZ2V0
RmlsZSgpOwogICAgICAgICAgICAgICAgdGhpcy5kYXRhID0gSlNPTi5wYXJzZShhd2FpdCBmaWxl
LnRleHQoKSk7CiAgICAgICAgICAgIH0gY2F0Y2gge30KICAgICAgICB9CgogICAgICAgIHRoaXMu
Y3VycmVudFVzZXIgPSBEcml2ZUZTLmVudmlyb24gPyBEcml2ZUZTLmVudmlyb24udXNlcm5hbWUg
OiBudWxsOwogICAgICAgIHRoaXMuY3VycmVudERvbWFpbiA9IERyaXZlRlMuZW52aXJvbiA/IChE
cml2ZUZTLmVudmlyb24udXNlcmRvbWFpbiB8fCAnKicpIDogJyonOwogICAgICAgIHRoaXMuX2lz
U3VwZXJVc2VyID0gdGhpcy5fY2hlY2tTdXBlclVzZXIoKTsKICAgICAgICB0aGlzLnVwZGF0ZVVJ
KCk7CiAgICAgICAgdGhpcy5sb2FkSGVscENvbnRlbnQoKTsKICAgICAgICBhd2FpdCB0aGlzLmxv
YWRTdGFydHNlaXRlKCk7CiAgICB9LAoKICAgIF9jaGVja1N1cGVyVXNlcigpIHsKICAgICAgICBp
ZiAoIXRoaXMuZGF0YSB8fCAhdGhpcy5kYXRhLnN1cGVyVXNlcnMpIHJldHVybiB0cnVlOyAvLyBL
ZWluIEdvdmVybmFuY2UgPSBhbGxlcyBlcmxhdWJ0CiAgICAgICAgY29uc3QgdXNlciA9ICh0aGlz
LmN1cnJlbnRVc2VyIHx8ICcnKS50b0xvd2VyQ2FzZSgpOwogICAgICAgIGNvbnN0IGRvbWFpbiA9
ICh0aGlzLmN1cnJlbnREb21haW4gfHwgJycpLnRvTG93ZXJDYXNlKCk7CiAgICAgICAgcmV0dXJu
IHRoaXMuZGF0YS5zdXBlclVzZXJzLnNvbWUoc3UgPT4KICAgICAgICAgICAgc3UudXNlcm5hbWUu
dG9Mb3dlckNhc2UoKSA9PT0gdXNlciAmJiAoc3UuZG9tYWluID09PSAnKicgfHwgc3UuZG9tYWlu
LnRvTG93ZXJDYXNlKCkgPT09IGRvbWFpbikKICAgICAgICApOwogICAgfSwKCiAgICBpc1N1cGVy
VXNlcigpIHsgcmV0dXJuIHRoaXMuX2lzU3VwZXJVc2VyOyB9LAoKICAgIGlzRmFjaGF1ZnNpY2h0
KCkgewogICAgICAgIGlmICghdGhpcy5kYXRhIHx8ICF0aGlzLmRhdGEuZmFjaGF1ZnNpY2h0KSBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgdmFyIHVzZXIgPSAodGhpcy5jdXJyZW50VXNlciB8fCAnJyku
dG9Mb3dlckNhc2UoKTsKICAgICAgICB2YXIgZG9tYWluID0gKHRoaXMuY3VycmVudERvbWFpbiB8
fCAnJykudG9Mb3dlckNhc2UoKTsKICAgICAgICByZXR1cm4gdGhpcy5kYXRhLmZhY2hhdWZzaWNo
dC5zb21lKGZ1bmN0aW9uKGZhKSB7CiAgICAgICAgICAgIHJldHVybiBmYS51c2VybmFtZS50b0xv
d2VyQ2FzZSgpID09PSB1c2VyICYmIChmYS5kb21haW4gPT09ICcqJyB8fCBmYS5kb21haW4udG9M
b3dlckNhc2UoKSA9PT0gZG9tYWluKTsKICAgICAgICB9KTsKICAgIH0sCgogICAgaXNSZXZpZXdl
cihrYXRlZ29yaWUpIHsKICAgICAgICBpZiAoIXRoaXMuZGF0YSB8fCAhdGhpcy5kYXRhLnJldmll
d2VycykgcmV0dXJuIGZhbHNlOwogICAgICAgIGNvbnN0IHVzZXIgPSAodGhpcy5jdXJyZW50VXNl
ciB8fCAnJykudG9Mb3dlckNhc2UoKTsKICAgICAgICBjb25zdCBkb21haW4gPSAodGhpcy5jdXJy
ZW50RG9tYWluIHx8ICcnKS50b0xvd2VyQ2FzZSgpOwogICAgICAgIHJldHVybiB0aGlzLmRhdGEu
cmV2aWV3ZXJzLnNvbWUociA9PgogICAgICAgICAgICByLnVzZXJuYW1lLnRvTG93ZXJDYXNlKCkg
PT09IHVzZXIgJiYKICAgICAgICAgICAgKHIuZG9tYWluID09PSAnKicgfHwgci5kb21haW4udG9M
b3dlckNhc2UoKSA9PT0gZG9tYWluKSAmJgogICAgICAgICAgICByLmthdGVnb3JpZW4gJiYgci5r
YXRlZ29yaWVuLmluY2x1ZGVzKGthdGVnb3JpZSkKICAgICAgICApOwogICAgfSwKCiAgICBnZXRS
ZXZpZXdhYmxlQ2F0ZWdvcmllcygpIHsKICAgICAgICBpZiAoIXRoaXMuZGF0YSB8fCAhdGhpcy5k
YXRhLnJldmlld2VycykgcmV0dXJuIFtdOwogICAgICAgIGNvbnN0IGNhdHMgPSBbXTsKICAgICAg
ICBjb25zdCB1c2VyID0gKHRoaXMuY3VycmVudFVzZXIgfHwgJycpLnRvTG93ZXJDYXNlKCk7CiAg
ICAgICAgY29uc3QgZG9tYWluID0gKHRoaXMuY3VycmVudERvbWFpbiB8fCAnJykudG9Mb3dlckNh
c2UoKTsKICAgICAgICB0aGlzLmRhdGEucmV2aWV3ZXJzLmZvckVhY2gociA9PiB7CiAgICAgICAg
ICAgIGlmIChyLnVzZXJuYW1lLnRvTG93ZXJDYXNlKCkgPT09IHVzZXIgJiYgKHIuZG9tYWluID09
PSAnKicgfHwgci5kb21haW4udG9Mb3dlckNhc2UoKSA9PT0gZG9tYWluKSkgewogICAgICAgICAg
ICAgICAgKHIua2F0ZWdvcmllbiB8fCBbXSkuZm9yRWFjaChrID0+IHsgaWYgKCFjYXRzLmluY2x1
ZGVzKGspKSBjYXRzLnB1c2goayk7IH0pOwogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICAg
ICAgcmV0dXJuIGNhdHM7CiAgICB9LAoKICAgIC8vIFNpY2h0YmFya2VpdHNmaWx0ZXIgKHJlaW4g
Y2xpZW50LXNlaXRpZywgc3RldWVydCBVSS1EYXJzdGVsbHVuZyk6CiAgICAgICAgLy8gLSBGcmVp
Z2VnZWJlbmUgRG9rdW1lbnRlOiBmdWVyIGFsbGUgc2ljaHRiYXIKICAgICAgICAvLyAtIEVudHd1
ZXJmZS9BYmdlbGVobnRlOiBudXIgZnVlciBBdXRvciwgenVzdGFlbmRpZ2UgUmV2aWV3ZXIgdW5k
IFN1cGVyVXNlcgogICAgICAgIC8vIEhpbndlaXM6IERpZXMgaXN0IGtlaW5lIFp1Z3JpZmZza29u
dHJvbGxlIC0gZGllIERva3VtZW50ZSBsaWVnZW4gYWxzIERhdGVpZW4gaW0gZGF0YS8tT3JkbmVy
LgogICAgICAgIC8vIERlciBGaWx0ZXIgdmVyaGluZGVydCwgZGFzcyBCZW51dHplciBpbiBkZXIg
T2JlcmZsYWVjaGUgRG9rdW1lbnRlIHNlaGVuLCBkaWUgc2llIG5pY2h0IGJlYXJiZWl0ZW4gc29s
bGVuLgogICAgY2FuU2VlRG9jdW1lbnQoZG9jKSB7CiAgICAgICAgaWYgKCF0aGlzLmRhdGEpIHJl
dHVybiB0cnVlOyAvLyBLZWluIEdvdmVybmFuY2UgPSBhbGxlcyBzaWNodGJhcgogICAgICAgIC8v
IEZyZWlnZWdlYmVuZSBEb2t1bWVudGU6IGFsbGUgc2VoZW4KICAgICAgICBpZiAoZG9jLnN0YXR1
cyA9PT0gJ0ZyZWlnZWdlYmVuJykgcmV0dXJuIHRydWU7CiAgICAgICAgLy8gRWlnZW5lIERva3Vt
ZW50ZTogQXV0b3Igc2llaHQgaW1tZXIKICAgICAgICBjb25zdCB1c2VyID0gKHRoaXMuY3VycmVu
dFVzZXIgfHwgJycpLnRvTG93ZXJDYXNlKCk7CiAgICAgICAgaWYgKChkb2MuZXJzdGVsbHRWb24g
fHwgJycpLnRvTG93ZXJDYXNlKCkgPT09IHVzZXIgfHwgKGRvYy5iZWFyYmVpdGV0Vm9uIHx8ICcn
KS50b0xvd2VyQ2FzZSgpID09PSB1c2VyKSByZXR1cm4gdHJ1ZTsKICAgICAgICAvLyBTdXBlclVz
ZXIvRmFjaGF1ZnNpY2h0IHNpZWh0IGFsbGVzCiAgICAgICAgaWYgKHRoaXMuaXNTdXBlclVzZXIo
KSB8fCB0aGlzLmlzRmFjaGF1ZnNpY2h0KCkpIHJldHVybiB0cnVlOwogICAgICAgIC8vIFJldmll
d2VyIHNpZWh0IERva3VtZW50ZSBpbiBzZWluZW4gS2F0ZWdvcmllbgogICAgICAgIGlmICh0aGlz
LmlzUmV2aWV3ZXIoZG9jLmthdGVnb3JpZSkpIHJldHVybiB0cnVlOwogICAgICAgIHJldHVybiBm
YWxzZTsKICAgIH0sCgogICAgY2FuQXBwcm92ZShkb2MpIHsKICAgICAgICBpZiAodGhpcy5pc1N1
cGVyVXNlcigpIHx8IHRoaXMuaXNGYWNoYXVmc2ljaHQoKSkgcmV0dXJuIHRydWU7CiAgICAgICAg
cmV0dXJuIHRoaXMuaXNSZXZpZXdlcihkb2Mua2F0ZWdvcmllKTsKICAgIH0sCgogICAgY2FuU2V0
U3RhdHVzKHN0YXR1cykgewogICAgICAgIGlmICh0aGlzLmlzU3VwZXJVc2VyKCkgfHwgdGhpcy5p
c0ZhY2hhdWZzaWNodCgpKSByZXR1cm4gdHJ1ZTsKICAgICAgICBpZiAoc3RhdHVzID09PSAnRW50
d3VyZicgfHwgc3RhdHVzID09PSAnUHLDvGZ1bmcnKSByZXR1cm4gdHJ1ZTsKICAgICAgICByZXR1
cm4gZmFsc2U7IC8vIEZyZWlnZWdlYmVuL0FiZ2VsZWhudCBudXIgZnVlciBSZXZpZXdlci9TdXBl
clVzZXIKICAgIH0sCgogICAgLy8gLS0tIFVJIFVwZGF0ZXMgLS0tCiAgICB1cGRhdGVVSSgpIHsK
ICAgICAgICAvLyBSZXZpZXcgQmFkZ2UKICAgICAgICBjb25zdCBiYWRnZSA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdyZXZpZXdCYWRnZScpOwogICAgICAgIGNvbnN0IHBlbmRpbmcgPSB0aGlz
LmdldFBlbmRpbmdSZXZpZXdzKCk7CiAgICAgICAgaWYgKHBlbmRpbmcubGVuZ3RoID4gMCAmJiAo
dGhpcy5pc1N1cGVyVXNlcigpIHx8IHRoaXMuaXNGYWNoYXVmc2ljaHQoKSB8fCB0aGlzLmdldFJl
dmlld2FibGVDYXRlZ29yaWVzKCkubGVuZ3RoID4gMCkpIHsKICAgICAgICAgICAgYmFkZ2Uuc3R5
bGUuZGlzcGxheSA9ICcnOwogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmV2
aWV3Q291bnQnKS50ZXh0Q29udGVudCA9IHBlbmRpbmcubGVuZ3RoOwogICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgIGJhZGdlLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICAgICAgfQoKICAg
ICAgICAvLyBHb3Zlcm5hbmNlIEFkbWluIEJ1dHRvbiAobnVyIFN1cGVyVXNlci9GYWNoYXVmc2lj
aHQgaW0gU2VydmVyLU1vZHVzKQogICAgICAgIGNvbnN0IGFkbWluQnRuID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2J0bkdvdkFkbWluJyk7CiAgICAgICAgYWRtaW5CdG4uc3R5bGUuZGlzcGxh
eSA9IChEcml2ZUZTLm1vZGUgPT09ICdzZXJ2ZXInICYmICh0aGlzLmlzU3VwZXJVc2VyKCkgfHwg
dGhpcy5pc0ZhY2hhdWZzaWNodCgpKSkgPyAnJyA6ICdub25lJzsKICAgIH0sCgogICAgZ2V0UGVu
ZGluZ1Jldmlld3MoKSB7CiAgICAgICAgaWYgKCFEcml2ZUZTLmRvY3VtZW50cykgcmV0dXJuIFtd
OwogICAgICAgIGNvbnN0IGNhdHMgPSAodGhpcy5pc1N1cGVyVXNlcigpIHx8IHRoaXMuaXNGYWNo
YXVmc2ljaHQoKSkKICAgICAgICAgICAgPyAoRHJpdmVGUy5jb25maWcua2F0ZWdvcmllbiB8fCBb
XSkKICAgICAgICAgICAgOiB0aGlzLmdldFJldmlld2FibGVDYXRlZ29yaWVzKCk7CiAgICAgICAg
cmV0dXJuIERyaXZlRlMuZG9jdW1lbnRzLmZpbHRlcihkb2MgPT4KICAgICAgICAgICAgZG9jLnN0
YXR1cyA9PT0gJ1Byw7xmdW5nJyAmJiBjYXRzLmluY2x1ZGVzKGRvYy5rYXRlZ29yaWUpCiAgICAg
ICAgKTsKICAgIH0sCgogICAgLy8gLS0tIFJldmlldyBRdWV1ZSBQYW5lbCAtLS0KICAgIHNob3dR
dWV1ZSgpIHsKICAgICAgICBjb25zdCBwYW5lbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdy
ZXZpZXdQYW5lbCcpOwogICAgICAgIGNvbnN0IGJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgncmV2aWV3UGFuZWxCb2R5Jyk7CiAgICAgICAgY29uc3QgcGVuZGluZyA9IHRoaXMuZ2V0UGVu
ZGluZ1Jldmlld3MoKTsKCiAgICAgICAgaWYgKHBlbmRpbmcubGVuZ3RoID09PSAwKSB7CiAgICAg
ICAgICAgIGJvZHkuaW5uZXJIVE1MID0gJzxkaXYgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyOyBw
YWRkaW5nOjQwcHg7IGNvbG9yOnZhcigtLXRleHQtbXV0ZWQpOyI+S2VpbmUgb2ZmZW5lbiBQcsO8
ZnVuZ2VuLjwvZGl2Pic7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgYm9keS5pbm5lckhU
TUwgPSBwZW5kaW5nLm1hcChkb2MgPT4gewogICAgICAgICAgICAgICAgY29uc3QgZ292ID0gZG9j
LmdvdmVybmFuY2UgfHwge307CiAgICAgICAgICAgICAgICBjb25zdCBzdWJtaXR0ZWQgPSBnb3Yu
c3VibWl0dGVkRm9yUmV2aWV3IHx8IGRvYy5nZWFlbmRlcnQgfHwgJyc7CiAgICAgICAgICAgICAg
ICByZXR1cm4gJzxkaXYgY2xhc3M9InJldmlldy1pdGVtIj4nICsKICAgICAgICAgICAgICAgICAg
ICAnPGRpdiBjbGFzcz0icmV2aWV3LWl0ZW0tdGl0bGUiPicgKyBEcml2ZVBvcnRhbC5lc2NhcGVI
VE1MKGRvYy50aXRlbCkgKyAnPC9kaXY+JyArCiAgICAgICAgICAgICAgICAgICAgJzxkaXYgY2xh
c3M9InJldmlldy1pdGVtLW1ldGEiPicgKwogICAgICAgICAgICAgICAgICAgICAgICAnPHNwYW4+
JyArIERyaXZlUG9ydGFsLmVzY2FwZUhUTUwoZG9jLmthdGVnb3JpZSkgKyAnPC9zcGFuPicgKwog
ICAgICAgICAgICAgICAgICAgICAgICAnPHNwYW4+dm9uICcgKyBEcml2ZVBvcnRhbC5lc2NhcGVI
VE1MKGRvYy5lcnN0ZWxsdFZvbiB8fCBkb2MuYmVhcmJlaXRldFZvbiB8fCAnLScpICsgJzwvc3Bh
bj4nICsKICAgICAgICAgICAgICAgICAgICAgICAgJzxzcGFuPicgKyBmb3JtYXREYXRlKHN1Ym1p
dHRlZCkgKyAnPC9zcGFuPicgKwogICAgICAgICAgICAgICAgICAgICc8L2Rpdj4nICsKICAgICAg
ICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0icmV2aWV3LWl0ZW0tYWN0aW9ucyI+JyArCiAgICAg
ICAgICAgICAgICAgICAgICAgICc8YnV0dG9uIGNsYXNzPSJidG4tYXBwcm92ZSIgb25jbGljaz0i
ZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IERyaXZlR292ZXJuYW5jZS5yZXZpZXdBbmRPcGVuKFwn
JyArIERyaXZlUG9ydGFsLmVzY2FwZUF0dHIoZG9jLmlkKSArICdcJykiPlByw7xmZW48L2J1dHRv
bj4nICsKICAgICAgICAgICAgICAgICAgICAgICAgJzxidXR0b24gY2xhc3M9ImJ0bi1yZWplY3Qi
IG9uY2xpY2s9ImV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyBEcml2ZUdvdmVybmFuY2Uub3BlblJl
dmlld0RpYWxvZyhcJycgKyBEcml2ZVBvcnRhbC5lc2NhcGVBdHRyKGRvYy5pZCkgKyAnXCcsIFwn
cmVqZWN0XCcpIj5BYmxlaG5lbiB1bmQgQmVncsO8bmRlbjwvYnV0dG9uPicgKwogICAgICAgICAg
ICAgICAgICAgICc8L2Rpdj4nICsKICAgICAgICAgICAgICAgICc8L2Rpdj4nOwogICAgICAgICAg
ICB9KS5qb2luKCcnKTsKICAgICAgICB9CgogICAgICAgIHBhbmVsLmNsYXNzTGlzdC5hZGQoJ2Fj
dGl2ZScpOwogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXZpZXdQYW5lbE92ZXJs
YXknKS5jbGFzc0xpc3QuYWRkKCdhY3RpdmUnKTsKICAgIH0sCgogICAgY2xvc2VRdWV1ZSgpIHsK
ICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmV2aWV3UGFuZWwnKS5jbGFzc0xpc3Qu
cmVtb3ZlKCdhY3RpdmUnKTsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmV2aWV3
UGFuZWxPdmVybGF5JykuY2xhc3NMaXN0LnJlbW92ZSgnYWN0aXZlJyk7CiAgICB9LAoKICAgIC8v
IEFydGlrZWwgb2VmZm5lbiB1bmQgUGFuZWwgc2NobGllc3NlbgogICAgYXN5bmMgcmV2aWV3QW5k
T3Blbihkb2NJZCkgewogICAgICAgIHRoaXMuY2xvc2VRdWV1ZSgpOwogICAgICAgIGF3YWl0IERy
aXZlUG9ydGFsLnNlbGVjdERvY3VtZW50KGRvY0lkKTsKICAgICAgICBEcml2ZVBvcnRhbC5oaWdo
bGlnaHRJdGVtKGRvY0lkKTsKICAgIH0sCgogICAgLy8gLS0tIFJldmlldyBEaWFsb2cgLS0tCiAg
ICAvLyBSZXZpZXdlci1GYXJicGFsZXR0ZSAoYmlzIHp1IDggdW50ZXJzY2hpZWRsaWNoZSBSZXZp
ZXdlcikKICAgIF9yZXZpZXdlckNvbG9yczogWwogICAgICAgIHsgYmc6ICcjZThmNWU5JywgYm9y
ZGVyOiAnIzJlN2QzMicsIHRleHQ6ICcjMWI1ZTIwJyB9LAogICAgICAgIHsgYmc6ICcjZTNmMmZk
JywgYm9yZGVyOiAnIzE1NjVjMCcsIHRleHQ6ICcjMGQ0N2ExJyB9LAogICAgICAgIHsgYmc6ICcj
ZmZmM2UwJywgYm9yZGVyOiAnI2U2NTEwMCcsIHRleHQ6ICcjYmYzNjBjJyB9LAogICAgICAgIHsg
Ymc6ICcjZjNlNWY1JywgYm9yZGVyOiAnIzdiMWZhMicsIHRleHQ6ICcjNGExNDhjJyB9LAogICAg
ICAgIHsgYmc6ICcjZTBmN2ZhJywgYm9yZGVyOiAnIzAwODM4ZicsIHRleHQ6ICcjMDA2MDY0JyB9
LAogICAgICAgIHsgYmc6ICcjZmNlNGVjJywgYm9yZGVyOiAnI2M2MjgyOCcsIHRleHQ6ICcjYjcx
YzFjJyB9LAogICAgICAgIHsgYmc6ICcjZjFmOGU5JywgYm9yZGVyOiAnIzU1OGIyZicsIHRleHQ6
ICcjMzM2OTFlJyB9LAogICAgICAgIHsgYmc6ICcjZWRlN2Y2JywgYm9yZGVyOiAnIzQ1MjdhMCcs
IHRleHQ6ICcjMzExYjkyJyB9CiAgICBdLAoKICAgIF9nZXRSZXZpZXdlckNvbG9yKHJldmlld2Vy
TmFtZSkgewogICAgICAgIGlmICghdGhpcy5fcmV2aWV3ZXJDb2xvck1hcCkgdGhpcy5fcmV2aWV3
ZXJDb2xvck1hcCA9IHt9OwogICAgICAgIGlmICh0aGlzLl9yZXZpZXdlckNvbG9yTWFwW3Jldmll
d2VyTmFtZV0pIHJldHVybiB0aGlzLl9yZXZpZXdlckNvbG9yTWFwW3Jldmlld2VyTmFtZV07CiAg
ICAgICAgdmFyIGlkeCA9IE9iamVjdC5rZXlzKHRoaXMuX3Jldmlld2VyQ29sb3JNYXApLmxlbmd0
aCAlIHRoaXMuX3Jldmlld2VyQ29sb3JzLmxlbmd0aDsKICAgICAgICB0aGlzLl9yZXZpZXdlckNv
bG9yTWFwW3Jldmlld2VyTmFtZV0gPSB0aGlzLl9yZXZpZXdlckNvbG9yc1tpZHhdOwogICAgICAg
IHJldHVybiB0aGlzLl9yZXZpZXdlckNvbG9yTWFwW3Jldmlld2VyTmFtZV07CiAgICB9LAoKICAg
IG9wZW5SZXZpZXdEaWFsb2coZG9jSWQsIGFjdGlvbikgewogICAgICAgIGNvbnN0IGRvYyA9IERy
aXZlRlMuZG9jdW1lbnRzLmZpbmQoZCA9PiBkLmlkID09PSBkb2NJZCk7CiAgICAgICAgaWYgKCFk
b2MpIHJldHVybjsKCiAgICAgICAgdmFyIGhlYWRlckVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ3Jldmlld0RpYWxvZ0hlYWRlcicpOwogICAgICAgIHZhciBpbmZvID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ3Jldmlld0RpYWxvZ0luZm8nKTsKICAgICAgICB2YXIgaGludCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdyZXZpZXdEaWFsb2dIaW50Jyk7CiAgICAgICAgdmFyIHRleHRh
cmVhID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jldmlld0RpYWxvZ0NvbW1lbnQnKTsKICAg
ICAgICB2YXIgY29uZmlybUJ0biA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXZpZXdEaWFs
b2dDb25maXJtJyk7CiAgICAgICAgdmFyIGFydGljbGVDb250ZW50ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ3Jldmlld0FydGljbGVDb250ZW50Jyk7CiAgICAgICAgdmFyIHByZXZDb21tZW50
cyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXZpZXdQcmV2Q29tbWVudHMnKTsKCiAgICAg
ICAgLy8gSGVhZGVyCiAgICAgICAgdmFyIGhlYWRlclNwYW4gPSBoZWFkZXJFbC5xdWVyeVNlbGVj
dG9yKCdzcGFuOmZpcnN0LWNoaWxkJyk7CiAgICAgICAgaWYgKGFjdGlvbiA9PT0gJ2FwcHJvdmUn
KSB7CiAgICAgICAgICAgIGlmIChoZWFkZXJTcGFuKSBoZWFkZXJTcGFuLnRleHRDb250ZW50ID0g
J0Rva3VtZW50IGZyZWlnZWJlbic7CiAgICAgICAgICAgIGhlYWRlckVsLmNsYXNzTmFtZSA9ICdy
ZXZpZXctZGlhbG9nLWhlYWRlciBhcHByb3ZlJzsKICAgICAgICAgICAgY29uZmlybUJ0bi50ZXh0
Q29udGVudCA9ICdGcmVpZ2ViZW4nOwogICAgICAgICAgICBjb25maXJtQnRuLmNsYXNzTmFtZSA9
ICdidG4tY29uZmlybSBhcHByb3ZlJzsKICAgICAgICAgICAgaGludC50ZXh0Q29udGVudCA9ICcn
OwogICAgICAgICAgICBoaW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICAgICAgICAgIHRl
eHRhcmVhLnNldEF0dHJpYnV0ZSgnZGF0YS1wbGFjZWhvbGRlcicsICdLb21tZW50YXIgKG9wdGlv
bmFsKS4uLicpOwogICAgICAgICAgICB0aGlzLl9yZXZpZXdDb21tZW50UmVxdWlyZWQgPSBmYWxz
ZTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBpZiAoaGVhZGVyU3BhbikgaGVhZGVyU3Bh
bi50ZXh0Q29udGVudCA9ICdEb2t1bWVudCBhYmxlaG5lbiB1bmQgYmVncsO8bmRlbic7CiAgICAg
ICAgICAgIGhlYWRlckVsLmNsYXNzTmFtZSA9ICdyZXZpZXctZGlhbG9nLWhlYWRlciByZWplY3Qn
OwogICAgICAgICAgICBjb25maXJtQnRuLnRleHRDb250ZW50ID0gJ0FibGVobmVuJzsKICAgICAg
ICAgICAgY29uZmlybUJ0bi5jbGFzc05hbWUgPSAnYnRuLWNvbmZpcm0gcmVqZWN0JzsKICAgICAg
ICAgICAgdmFyIHJlak1vZGUgPSAodGhpcy5kYXRhICYmIHRoaXMuZGF0YS5zZXR0aW5ncykgPyAo
dGhpcy5kYXRhLnNldHRpbmdzLnJlamVjdGlvblJlYXNvbk1vZGUgfHwgJ3JlcXVpcmVkJykgOiAn
cmVxdWlyZWQnOwogICAgICAgICAgICBoaW50LnN0eWxlLmRpc3BsYXkgPSAnJzsKICAgICAgICAg
ICAgaWYgKHJlak1vZGUgPT09ICdyZXF1aXJlZCcpIHsKICAgICAgICAgICAgICAgIGhpbnQudGV4
dENvbnRlbnQgPSAnRWluZSBhdXNmw7xocmxpY2hlIEJlZ3LDvG5kdW5nIGlzdCBlcmZvcmRlcmxp
Y2guIEJlc2NocmVpYmUsIHdhcnVtIGRlciBBcnRpa2VsIGFiZ2VsZWhudCB3aXJkIHVuZCB3ZWxj
aGUgw4RuZGVydW5nZW4gbm90d2VuZGlnIHNpbmQuJzsKICAgICAgICAgICAgICAgIHRleHRhcmVh
LnNldEF0dHJpYnV0ZSgnZGF0YS1wbGFjZWhvbGRlcicsICdCZWdyw7xuZHVuZyAoUGZsaWNodGZl
bGQpLi4uJyk7CiAgICAgICAgICAgICAgICB0aGlzLl9yZXZpZXdDb21tZW50UmVxdWlyZWQgPSB0
cnVlOwogICAgICAgICAgICB9IGVsc2UgaWYgKHJlak1vZGUgPT09ICdvcHRpb25hbCcpIHsKICAg
ICAgICAgICAgICAgIGhpbnQudGV4dENvbnRlbnQgPSAnRWluZSBCZWdyw7xuZHVuZyBpc3Qgb3B0
aW9uYWwsIHdpcmQgYWJlciBlbXBmb2hsZW4uJzsKICAgICAgICAgICAgICAgIHRleHRhcmVhLnNl
dEF0dHJpYnV0ZSgnZGF0YS1wbGFjZWhvbGRlcicsICdCZWdyw7xuZHVuZyAob3B0aW9uYWwpLi4u
Jyk7CiAgICAgICAgICAgICAgICB0aGlzLl9yZXZpZXdDb21tZW50UmVxdWlyZWQgPSBmYWxzZTsK
ICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGhpbnQudGV4dENvbnRlbnQgPSAn
JzsgaGludC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgICAgICAgICAgICAgdGV4dGFyZWEu
c2V0QXR0cmlidXRlKCdkYXRhLXBsYWNlaG9sZGVyJywgJ0tvbW1lbnRhciAob3B0aW9uYWwpLi4u
Jyk7CiAgICAgICAgICAgICAgICB0aGlzLl9yZXZpZXdDb21tZW50UmVxdWlyZWQgPSBmYWxzZTsK
ICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaW5mby50ZXh0Q29udGVudCA9IGRvYy50
aXRlbCArICcgKCcgKyBkb2Mua2F0ZWdvcmllICsgJyknOwogICAgICAgIHRleHRhcmVhLmlubmVy
SFRNTCA9ICcnOwoKICAgICAgICAvLyBBcnRpa2VsaW5oYWx0IGxpbmtzIGFuemVpZ2VuCiAgICAg
ICAgdmFyIGluaGFsdCA9IGRvYy5pbmhhbHQgfHwgJzxlbSBzdHlsZT0iY29sb3I6dmFyKC0tdGV4
dC1tdXRlZCk7Ij5LZWluIEluaGFsdDwvZW0+JzsKICAgICAgICBhcnRpY2xlQ29udGVudC5pbm5l
ckhUTUwgPSAnPGRpdiBzdHlsZT0ibWFyZ2luLWJvdHRvbTo4cHg7Zm9udC13ZWlnaHQ6NjAwO2Nv
bG9yOnZhcigtLXRleHQtaGVhZGluZyk7Zm9udC1zaXplOjE1cHg7Ij4nICsKICAgICAgICAgICAg
RHJpdmVQb3J0YWwuZXNjYXBlSFRNTChkb2MudGl0ZWwpICsgJzwvZGl2PicgKyBpbmhhbHQ7Cgog
ICAgICAgIC8vIEJpc2hlcmlnZSBLb21tZW50YXJlIG1pdCBSZXZpZXdlci1GYXJiZW4gYW56ZWln
ZW4KICAgICAgICB0aGlzLl9yZXZpZXdlckNvbG9yTWFwID0ge307CiAgICAgICAgdmFyIGhpc3Rv
cnkgPSAoZG9jLmdvdmVybmFuY2UgJiYgZG9jLmdvdmVybmFuY2UucmV2aWV3SGlzdG9yeSkgPyBk
b2MuZ292ZXJuYW5jZS5yZXZpZXdIaXN0b3J5IDogW107CiAgICAgICAgdmFyIGNvbW1lbnRzSHRt
bCA9ICcnOwogICAgICAgIGhpc3RvcnkuZm9yRWFjaChmdW5jdGlvbihlbnRyeSkgewogICAgICAg
ICAgICBpZiAoIWVudHJ5LmNvbW1lbnQpIHJldHVybjsKICAgICAgICAgICAgdmFyIGNvbG9yID0g
RHJpdmVHb3Zlcm5hbmNlLl9nZXRSZXZpZXdlckNvbG9yKGVudHJ5LmJ5IHx8ICdVbmJla2FubnQn
KTsKICAgICAgICAgICAgdmFyIGFjdGlvbkxhYmVsID0gZW50cnkuYWN0aW9uID09PSAnYXBwcm92
ZWQnID8gJ0ZyZWlnZWdlYmVuJyA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5
LmFjdGlvbiA9PT0gJ3JlamVjdGVkJyA/ICdBYmdlbGVobnQnIDogJ0VpbmdlcmVpY2h0JzsKICAg
ICAgICAgICAgdmFyIG5pZ2h0QmcgPSBjb2xvci5iZzsKICAgICAgICAgICAgY29tbWVudHNIdG1s
ICs9ICc8ZGl2IGNsYXNzPSJyZXZpZXctY29tbWVudC1idWJibGUiIHN0eWxlPSJiYWNrZ3JvdW5k
OicgKyBjb2xvci5iZyArICc7Ym9yZGVyLWxlZnQtY29sb3I6JyArIGNvbG9yLmJvcmRlciArICc7
IiB0aXRsZT0iJyArIGZvcm1hdERhdGVUaW1lKGVudHJ5LmF0KSArICciPicgKwogICAgICAgICAg
ICAgICAgJzxzcGFuIGNsYXNzPSJyYy1hdXRob3IiIHN0eWxlPSJjb2xvcjonICsgY29sb3IudGV4
dCArICc7Ij4nICsgRHJpdmVQb3J0YWwuZXNjYXBlSFRNTChlbnRyeS5ieSB8fCAnVW5iZWthbm50
JykgKyAnIOKAkyAnICsgYWN0aW9uTGFiZWwgKyAnPC9zcGFuPicgKwogICAgICAgICAgICAgICAg
JzxzcGFuIGNsYXNzPSJyYy1kYXRlIj4nICsgZm9ybWF0RGF0ZVRpbWUoZW50cnkuYXQpICsgJzwv
c3Bhbj4nICsKICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJyYy10ZXh0Ij4nICsgZW50cnku
Y29tbWVudCArICc8L2Rpdj4nICsKICAgICAgICAgICAgJzwvZGl2Pic7CiAgICAgICAgfSk7CiAg
ICAgICAgaWYgKCFjb21tZW50c0h0bWwpIHsKICAgICAgICAgICAgY29tbWVudHNIdG1sID0gJzxk
aXYgc3R5bGU9ImZvbnQtc2l6ZToxMnB4O2NvbG9yOnZhcigtLXRleHQtbXV0ZWQpO3BhZGRpbmc6
OHB4IDA7Ij5Ob2NoIGtlaW5lIEtvbW1lbnRhcmUgdm9yaGFuZGVuLjwvZGl2Pic7CiAgICAgICAg
fQogICAgICAgIHByZXZDb21tZW50cy5pbm5lckhUTUwgPSBjb21tZW50c0h0bWw7CgogICAgICAg
IHRoaXMuX3Jldmlld0RpYWxvZ0FjdGlvbiA9IGFjdGlvbjsKICAgICAgICB0aGlzLl9yZXZpZXdE
aWFsb2dDYWxsYmFjayA9IGRvY0lkOwogICAgICAgIGNvbmZpcm1CdG4ub25jbGljayA9ICgpID0+
IHRoaXMuY29uZmlybVJldmlldygpOwoKICAgICAgICAvLyBQYXN0ZS1IYW5kbGVyOiBOdXIgS2xh
cnRleHQgZWluZnVlZ2VuCiAgICAgICAgdGV4dGFyZWEub25wYXN0ZSA9IGZ1bmN0aW9uKGUpIHsK
ICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICB2YXIgdGV4dCA9IChl
LmNsaXBib2FyZERhdGEgfHwgd2luZG93LmNsaXBib2FyZERhdGEpLmdldERhdGEoJ3RleHQvcGxh
aW4nKTsKICAgICAgICAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ2luc2VydFRleHQnLCBmYWxz
ZSwgdGV4dCk7CiAgICAgICAgfTsKCiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jl
dmlld0RpYWxvZycpLmNsYXNzTGlzdC5hZGQoJ2FjdGl2ZScpOwogICAgfSwKCiAgICBjbG9zZVJl
dmlld0RpYWxvZygpIHsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmV2aWV3RGlh
bG9nJykuY2xhc3NMaXN0LnJlbW92ZSgnYWN0aXZlJyk7CiAgICAgICAgdGhpcy5fcmV2aWV3RGlh
bG9nQ2FsbGJhY2sgPSBudWxsOwogICAgfSwKCiAgICBhc3luYyBjb25maXJtUmV2aWV3KCkgewog
ICAgICAgIGNvbnN0IGRvY0lkID0gdGhpcy5fcmV2aWV3RGlhbG9nQ2FsbGJhY2s7CiAgICAgICAg
Y29uc3QgYWN0aW9uID0gdGhpcy5fcmV2aWV3RGlhbG9nQWN0aW9uOwogICAgICAgIGNvbnN0IGNv
bW1lbnRFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXZpZXdEaWFsb2dDb21tZW50Jyk7
CiAgICAgICAgLy8gS29tbWVudGFyLUhUTUwgc2FuaXRpemVuOiBudXIgZXJsYXVidGUgVGFncyBi
ZWhhbHRlbgogICAgICAgIHZhciByYXdIdG1sID0gY29tbWVudEVsLmlubmVySFRNTC50cmltKCku
cmVwbGFjZSgvXjxicj4kLywgJycpOwogICAgICAgIHZhciBzYW5pdGl6ZURpdiA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgICAgIHNhbml0aXplRGl2LmlubmVySFRNTCA9IHJh
d0h0bWw7CiAgICAgICAgLy8gQWxsZSB1bmVybGF1YnRlbiBUYWdzIGR1cmNoIGlocmVuIFRleHRp
bmhhbHQgZXJzZXR6ZW4KICAgICAgICBzYW5pdGl6ZURpdi5xdWVyeVNlbGVjdG9yQWxsKCdhLCBp
bWcsIHNjcmlwdCwgc3R5bGUsIGlmcmFtZSwgZGl2LCBzcGFuW3N0eWxlKj0iZm9udC1zaXplIl0s
IHNwYW5bc3R5bGUqPSJ3aGl0ZS1zcGFjZSJdJykuZm9yRWFjaChmdW5jdGlvbihlbCkgewogICAg
ICAgICAgICBpZiAoZWwudGFnTmFtZSA9PT0gJ0RJVicpIHsKICAgICAgICAgICAgICAgIC8vIERp
dnMgZHVyY2ggaWhyZW4gSW5oYWx0ICsgWmVpbGVudW1icnVjaCBlcnNldHplbgogICAgICAgICAg
ICAgICAgZWwuaW5zZXJ0QWRqYWNlbnRIVE1MKCdhZnRlcmVuZCcsICc8YnI+Jyk7CiAgICAgICAg
ICAgICAgICBlbC5yZXBsYWNlV2l0aChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShlbC50ZXh0Q29u
dGVudCkpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgZWwucmVwbGFjZVdp
dGgoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoZWwudGV4dENvbnRlbnQpKTsKICAgICAgICAgICAg
fQogICAgICAgIH0pOwogICAgICAgIGNvbnN0IGNvbW1lbnQgPSBzYW5pdGl6ZURpdi5pbm5lckhU
TUwudHJpbSgpLnJlcGxhY2UoL148YnI+JC8sICcnKTsKCiAgICAgICAgaWYgKCFkb2NJZCkgcmV0
dXJuOwoKICAgICAgICAvLyBQZmxpY2h0ZmVsZC1QcnVlZnVuZyBmdWVyIEFibGVobnVuZ3NiZWdy
dWVuZHVuZwogICAgICAgIHZhciBjb21tZW50VGV4dCA9IGNvbW1lbnRFbC50ZXh0Q29udGVudC50
cmltKCk7CiAgICAgICAgaWYgKGFjdGlvbiA9PT0gJ3JlamVjdCcpIHsKICAgICAgICAgICAgaWYg
KHRoaXMuX3Jldmlld0NvbW1lbnRSZXF1aXJlZCAmJiAhY29tbWVudFRleHQpIHsKICAgICAgICAg
ICAgICAgIHNob3dUb2FzdCgnQml0dGUgZWluZSBCZWdyw7xuZHVuZyBlaW5nZWJlbiAoUGZsaWNo
dGZlbGQpJywgJ3dhcm5pbmcnKTsKICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdyZXZpZXdEaWFsb2dDb21tZW50JykuZm9jdXMoKTsKICAgICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8gU2NocmVpYnp1Z3JpZmYgc2lj
aGVyc3RlbGxlbiAoZmlsZTovLyBNb2R1cyBpc3Qgc3RhbmRhcmRtYWVzc2lnIHJlYWQtb25seSkK
ICAgICAgICBpZiAoRHJpdmVGUy5yZWFkT25seSkgewogICAgICAgICAgICBjb25zdCBncmFudGVk
ID0gYXdhaXQgRHJpdmVGUy5lbnN1cmVXcml0ZUFjY2VzcygpOwogICAgICAgICAgICBpZiAoIWdy
YW50ZWQpIHsKICAgICAgICAgICAgICAgIHNob3dUb2FzdCgnU2NocmVpYnp1Z3JpZmYgZXJmb3Jk
ZXJsaWNoIGbDvHIgRnJlaWdhYmUtQWt0aW9uZW4nLCAnd2FybmluZycpOwogICAgICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBjb25zdCBkb2MgPSBE
cml2ZUZTLmRvY3VtZW50cy5maW5kKGQgPT4gZC5pZCA9PT0gZG9jSWQpOwogICAgICAgIGlmICgh
ZG9jKSByZXR1cm47CgogICAgICAgIC8vIEdvdmVybmFuY2UtRGF0ZW4genVtIERva3VtZW50IGhp
bnp1ZnVlZ2VuCiAgICAgICAgaWYgKCFkb2MuZ292ZXJuYW5jZSkgZG9jLmdvdmVybmFuY2UgPSB7
IHJldmlld0hpc3Rvcnk6IFtdIH07CiAgICAgICAgaWYgKCFkb2MuZ292ZXJuYW5jZS5yZXZpZXdI
aXN0b3J5KSBkb2MuZ292ZXJuYW5jZS5yZXZpZXdIaXN0b3J5ID0gW107CgogICAgICAgIGRvYy5n
b3Zlcm5hbmNlLnJldmlld0hpc3RvcnkucHVzaCh7CiAgICAgICAgICAgIGFjdGlvbjogYWN0aW9u
ID09PSAnYXBwcm92ZScgPyAnYXBwcm92ZWQnIDogJ3JlamVjdGVkJywKICAgICAgICAgICAgYnk6
IHRoaXMuY3VycmVudFVzZXIsCiAgICAgICAgICAgIGF0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5n
KCksCiAgICAgICAgICAgIGNvbW1lbnQ6IGNvbW1lbnQKICAgICAgICB9KTsKCiAgICAgICAgdmFy
IG5ld1N0YXR1cyA9IGFjdGlvbiA9PT0gJ2FwcHJvdmUnID8gJ0ZyZWlnZWdlYmVuJyA6ICdBYmdl
bGVobnQnOwogICAgICAgIGRvYy52ZXJzaW9uID0gY2FsY3VsYXRlVmVyc2lvbihkb2MsIGRvYy5p
bmhhbHQsIGRvYy5pbmhhbHQsIG5ld1N0YXR1cyk7CiAgICAgICAgaWYgKGFjdGlvbiA9PT0gJ2Fw
cHJvdmUnKSB7CiAgICAgICAgICAgIGRvYy5zdGF0dXMgPSAnRnJlaWdlZ2ViZW4nOwogICAgICAg
ICAgICBkb2MuZ292ZXJuYW5jZS5hcHByb3ZlZEJ5ID0gdGhpcy5jdXJyZW50VXNlcjsKICAgICAg
ICAgICAgZG9jLmdvdmVybmFuY2UuYXBwcm92ZWRBdCA9IG5ldyBEYXRlKCkudG9JU09TdHJpbmco
KTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBkb2Muc3RhdHVzID0gJ0FiZ2VsZWhudCc7
CiAgICAgICAgfQogICAgICAgIC8vIERpZmYtRGF0ZW4gYmVyZWluaWdlbiAobmFjaCBGcmVpZ2Fi
ZS9BYmxlaG51bmcgbmljaHQgbWVociBub2V0aWcpCiAgICAgICAgZGVsZXRlIGRvYy5fcHJldmlv
dXNJbmhhbHQ7CiAgICAgICAgZGVsZXRlIGRvYy5fcHJldmlvdXNUaXRlbDsKCiAgICAgICAgdHJ5
IHsKICAgICAgICAgICAgY29uc3Qgc2F2ZVJlc3VsdCA9IGF3YWl0IERyaXZlRlMuc2F2ZURvY3Vt
ZW50KGRvYyk7CiAgICAgICAgICAgIGlmIChzYXZlUmVzdWx0ID09PSB0cnVlKSB7CiAgICAgICAg
ICAgICAgICBjb25zdCBtc2cgPSBhY3Rpb24gPT09ICdhcHByb3ZlJyA/ICdEb2t1bWVudCBmcmVp
Z2VnZWJlbicgOiAnRG9rdW1lbnQgYWJnZWxlaG50JzsKICAgICAgICAgICAgICAgIHNob3dUb2Fz
dChtc2cgKyAnOiAnICsgZG9jLnRpdGVsLCBhY3Rpb24gPT09ICdhcHByb3ZlJyA/ICdzdWNjZXNz
JyA6ICd3YXJuaW5nJyk7CiAgICAgICAgICAgICAgICB0aGlzLmNsb3NlUmV2aWV3RGlhbG9nKCk7
CiAgICAgICAgICAgICAgICB0aGlzLmNsb3NlUXVldWUoKTsKICAgICAgICAgICAgICAgIERyaXZl
UG9ydGFsLnJlbmRlcigpOwogICAgICAgICAgICAgICAgdGhpcy51cGRhdGVVSSgpOwogICAgICAg
ICAgICAgICAgYXdhaXQgRHJpdmVQb3J0YWwuc2VsZWN0RG9jdW1lbnQoZG9jSWQpOwogICAgICAg
ICAgICAgICAgRHJpdmVQb3J0YWwuaGlnaGxpZ2h0SXRlbShkb2NJZCk7CiAgICAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICAgICBzaG93VG9hc3QoJ0ZlaGxlciBiZWltIFNwZWljaGVybjog
JyArIHNhdmVSZXN1bHQsICdlcnJvcicsIDUwMDApOwogICAgICAgICAgICB9CiAgICAgICAgfSBj
YXRjaCAoZXJyKSB7CiAgICAgICAgICAgIHNob3dUb2FzdCgnU3BlaWNoZXJuIGZlaGxnZXNjaGxh
Z2VuOiAnICsgZXJyLm1lc3NhZ2UsICdlcnJvcicsIDUwMDApOwogICAgICAgIH0KICAgIH0sCgog
ICAgLy8gLS0tIFN1Ym1pdCBmb3IgUmV2aWV3IC0tLQogICAgYXN5bmMgc3VibWl0Rm9yUmV2aWV3
KGRvYykgewogICAgICAgIGlmICghZG9jLmdvdmVybmFuY2UpIGRvYy5nb3Zlcm5hbmNlID0geyBy
ZXZpZXdIaXN0b3J5OiBbXSB9OwogICAgICAgIGlmICghZG9jLmdvdmVybmFuY2UucmV2aWV3SGlz
dG9yeSkgZG9jLmdvdmVybmFuY2UucmV2aWV3SGlzdG9yeSA9IFtdOwoKICAgICAgICAvLyBWb3Jo
ZXJpZ2VuIEluaGFsdCBzaWNoZXJuIGZ1ZXIgRGlmZi1BbnplaWdlIGJlaW0gUmV2aWV3CiAgICAg
ICAgLy8gTGVzZSBkaWUgenVsZXR6dCBnZXNwZWljaGVydGUgVmVyc2lvbiB2b24gRGlzayAobmlj
aHQgZGllIGdlcmFkZSBiZWFyYmVpdGV0ZSkKICAgICAgICB0cnkgewogICAgICAgICAgICB2YXIg
c2F2ZWREb2MgPSBhd2FpdCBEcml2ZUZTLmxvYWREb2N1bWVudChkb2MuaWQpOwogICAgICAgICAg
ICBpZiAoc2F2ZWREb2MgJiYgc2F2ZWREb2MuaW5oYWx0KSB7CiAgICAgICAgICAgICAgICBkb2Mu
X3ByZXZpb3VzSW5oYWx0ID0gc2F2ZWREb2MuaW5oYWx0OwogICAgICAgICAgICAgICAgZG9jLl9w
cmV2aW91c1RpdGVsID0gc2F2ZWREb2MudGl0ZWw7CiAgICAgICAgICAgIH0KICAgICAgICB9IGNh
dGNoKGUpIHt9CgogICAgICAgIGRvYy5zdGF0dXMgPSAnUHLDvGZ1bmcnOwogICAgICAgIGRvYy5n
b3Zlcm5hbmNlLnN1Ym1pdHRlZEZvclJldmlldyA9IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKTsK
ICAgICAgICBkb2MuZ292ZXJuYW5jZS5yZXZpZXdIaXN0b3J5LnB1c2goewogICAgICAgICAgICBh
Y3Rpb246ICdzdWJtaXR0ZWQnLAogICAgICAgICAgICBieTogdGhpcy5jdXJyZW50VXNlciwKICAg
ICAgICAgICAgYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSwKICAgICAgICAgICAgY29tbWVu
dDogJycKICAgICAgICB9KTsKICAgIH0sCgogICAgLy8gLS0tIEdvdmVybmFuY2UgQWRtaW4gUGFu
ZWwgLS0tCiAgICBzaG93QWRtaW4oKSB7CiAgICAgICAgaWYgKCF0aGlzLmlzU3VwZXJVc2VyKCkg
JiYgIXRoaXMuaXNGYWNoYXVmc2ljaHQoKSkgcmV0dXJuOwogICAgICAgIHRoaXMucmVuZGVyQWRt
aW4oKTsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZ292QWRtaW5QYW5lbCcpLmNs
YXNzTGlzdC5hZGQoJ2FjdGl2ZScpOwogICAgfSwKCiAgICBjbG9zZUFkbWluKCkgewogICAgICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdnb3ZBZG1pblBhbmVsJykuY2xhc3NMaXN0LnJlbW92
ZSgnYWN0aXZlJyk7CiAgICB9LAoKICAgIHJlbmRlckFkbWluKCkgewogICAgICAgIGNvbnN0IGJv
ZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZ292QWRtaW5Cb2R5Jyk7CiAgICAgICAgY29u
c3QgZ292ID0gdGhpcy5kYXRhIHx8IHsgc3VwZXJVc2VyczogW10sIHJldmlld2VyczogW10sIGZh
Y2hhdWZzaWNodDogW10sIHNldHRpbmdzOiB7fSB9OwogICAgICAgIGlmICghZ292LmZhY2hhdWZz
aWNodCkgZ292LmZhY2hhdWZzaWNodCA9IFtdOwogICAgICAgIGlmICghZ292LnNldHRpbmdzKSBn
b3Yuc2V0dGluZ3MgPSB7fTsKICAgICAgICBjb25zdCBrYXRlZ29yaWVuID0gRHJpdmVGUy5jb25m
aWcua2F0ZWdvcmllbiB8fCBbXTsKICAgICAgICBjb25zdCBpc1NVID0gdGhpcy5pc1N1cGVyVXNl
cigpOwoKICAgICAgICAvLyAtLS0gU3VwZXJVc2VyIC0tLQogICAgICAgIGxldCBodG1sID0gJzxk
aXYgY2xhc3M9Imdvdi1zZWN0aW9uIj4nICsKICAgICAgICAgICAgJzxkaXYgY2xhc3M9Imdvdi1z
ZWN0aW9uLXRpdGxlIiB0aXRsZT0iU3VwZXJVc2VyIGhhYmVuIFZvbGx6dWdyaWZmIGF1ZiBhbGxl
IEZ1bmt0aW9uZW46IFJvbGxlbiB2ZXJnZWJlbiwgRWluc3RlbGx1bmdlbiDDpG5kZXJuLCBhbGxl
IEFydGlrZWwgZnJlaWdlYmVuIG9kZXIgYWJsZWhuZW4uIj5BZG1pbmlzdHJhdG9yZW4gKFN1cGVy
VXNlcik8L2Rpdj4nOwogICAgICAgIGdvdi5zdXBlclVzZXJzLmZvckVhY2goZnVuY3Rpb24oc3Us
IGkpIHsKICAgICAgICAgICAgdmFyIG9lID0gc3Uub3JnYW5pc2F0aW9uc2VpbmhlaXQgPyAnIMK3
ICcgKyBEcml2ZVBvcnRhbC5lc2NhcGVIVE1MKHN1Lm9yZ2FuaXNhdGlvbnNlaW5oZWl0KSA6ICcn
OwogICAgICAgICAgICBodG1sICs9ICc8ZGl2IGNsYXNzPSJnb3YtdXNlci1yb3ciPicgKwogICAg
ICAgICAgICAgICAgJzxzcGFuIGNsYXNzPSJnb3Ytcm9sZS1pY29uIHN1Ij5TVTwvc3Bhbj4nICsK
ICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJnb3YtdXNlci1pbmZvIj48ZGl2IGNsYXNzPSJn
b3YtdXNlci1uYW1lIj4nICsgRHJpdmVQb3J0YWwuZXNjYXBlSFRNTChzdS5kaXNwbGF5TmFtZSB8
fCBzdS51c2VybmFtZSkgKyAnPC9kaXY+JyArCiAgICAgICAgICAgICAgICAgICAgJzxkaXYgY2xh
c3M9Imdvdi11c2VyLWRldGFpbCI+JyArIERyaXZlUG9ydGFsLmVzY2FwZUhUTUwoc3UudXNlcm5h
bWUpICsgb2UgKyAnPC9kaXY+PC9kaXY+JyArCiAgICAgICAgICAgICAgICAoaXNTVSAmJiBnb3Yu
c3VwZXJVc2Vycy5sZW5ndGggPiAxID8gJzxidXR0b24gY2xhc3M9InJlbW92ZSIgb25jbGljaz0i
RHJpdmVHb3Zlcm5hbmNlLnJlbW92ZVN1cGVyVXNlcignICsgaSArICcpIj5FbnRmZXJuZW48L2J1
dHRvbj4nIDogJycpICsKICAgICAgICAgICAgJzwvZGl2Pic7CiAgICAgICAgfSk7CiAgICAgICAg
aWYgKGlzU1UpIHsKICAgICAgICAgICAgaHRtbCArPSAnPGRpdiBjbGFzcz0iZ292LWNhdC1hZGQt
cm93IiBzdHlsZT0iZ2FwOjZweDsiPicgKwogICAgICAgICAgICAgICAgJzxpbnB1dCB0eXBlPSJ0
ZXh0IiBpZD0iZ292U1VVc2VyIiBwbGFjZWhvbGRlcj0iTlctS2VubnVuZyIgc3R5bGU9Im1heC13
aWR0aDoxMjBweDsiPicgKwogICAgICAgICAgICAgICAgJzxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0i
Z292U1VOYW1lIiBwbGFjZWhvbGRlcj0iQW56ZWlnZW5hbWUiIHN0eWxlPSJmbGV4OjI7Ij4nICsK
ICAgICAgICAgICAgICAgICc8aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImdvdlNVT0UiIHBsYWNlaG9s
ZGVyPSJPcmdhbmlzYXRpb25zZWluaGVpdCIgc3R5bGU9ImZsZXg6MjsiPicgKwogICAgICAgICAg
ICAgICAgJzxidXR0b24gY2xhc3M9Imdvdi1hZGQtYnRuIiBzdHlsZT0icGFkZGluZzo2cHggMTRw
eDsiIG9uY2xpY2s9IkRyaXZlR292ZXJuYW5jZS5hZGRTdXBlclVzZXIoKSI+SGluenVmw7xnZW48
L2J1dHRvbj4nICsKICAgICAgICAgICAgJzwvZGl2Pic7CiAgICAgICAgfQogICAgICAgIGh0bWwg
Kz0gJzwvZGl2Pic7CgogICAgICAgIC8vIC0tLSBGYWNoYXVmc2ljaHQgLS0tCiAgICAgICAgaHRt
bCArPSAnPGRpdiBjbGFzcz0iZ292LXNlY3Rpb24iPicgKwogICAgICAgICAgICAnPGRpdiBjbGFz
cz0iZ292LXNlY3Rpb24tdGl0bGUiIHRpdGxlPSJEaWUgRmFjaGF1ZnNpY2h0IGhhdCBkaWUgZ2xl
aWNoZW4gUmVjaHRlIHdpZSBlaW4gU3VwZXJVc2VyLCBrYW5uIGFiZXIga2VpbmUgUm9sbGVuIHZl
cmdlYmVuLiBHZWRhY2h0IGbDvHIgVm9yZ2VzZXR6dGUsIGRpZSBJbmhhbHRlIHByw7xmZW4gc29s
bGVuLiI+RmFjaGF1ZnNpY2h0ICgnICsgZ292LmZhY2hhdWZzaWNodC5sZW5ndGggKyAnKTwvZGl2
Pic7CiAgICAgICAgaWYgKGdvdi5mYWNoYXVmc2ljaHQubGVuZ3RoID09PSAwKSB7CiAgICAgICAg
ICAgIGh0bWwgKz0gJzxkaXYgY2xhc3M9Imdvdi1lbXB0eSI+Tm9jaCBrZWluZSBGYWNoYXVmc2lj
aHQga29uZmlndXJpZXJ0PC9kaXY+JzsKICAgICAgICB9CiAgICAgICAgZ292LmZhY2hhdWZzaWNo
dC5mb3JFYWNoKGZ1bmN0aW9uKGZhLCBpKSB7CiAgICAgICAgICAgIHZhciBvZSA9IGZhLm9yZ2Fu
aXNhdGlvbnNlaW5oZWl0ID8gJyDCtyAnICsgRHJpdmVQb3J0YWwuZXNjYXBlSFRNTChmYS5vcmdh
bmlzYXRpb25zZWluaGVpdCkgOiAnJzsKICAgICAgICAgICAgaHRtbCArPSAnPGRpdiBjbGFzcz0i
Z292LXVzZXItcm93Ij4nICsKICAgICAgICAgICAgICAgICc8c3BhbiBjbGFzcz0iZ292LXJvbGUt
aWNvbiBmYSI+RkE8L3NwYW4+JyArCiAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0iZ292LXVz
ZXItaW5mbyI+PGRpdiBjbGFzcz0iZ292LXVzZXItbmFtZSI+JyArIERyaXZlUG9ydGFsLmVzY2Fw
ZUhUTUwoZmEuZGlzcGxheU5hbWUgfHwgZmEudXNlcm5hbWUpICsgJzwvZGl2PicgKwogICAgICAg
ICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJnb3YtdXNlci1kZXRhaWwiPicgKyBEcml2ZVBvcnRh
bC5lc2NhcGVIVE1MKGZhLnVzZXJuYW1lKSArIG9lICsgJzwvZGl2PjwvZGl2PicgKwogICAgICAg
ICAgICAgICAgJzxzcGFuIHN0eWxlPSJmb250LXNpemU6MTFweDtjb2xvcjojYzYyODI4OyI+QWxs
ZSBLYXRlZ29yaWVuPC9zcGFuPicgKwogICAgICAgICAgICAgICAgKGlzU1UgPyAnPGJ1dHRvbiBj
bGFzcz0icmVtb3ZlIiBvbmNsaWNrPSJEcml2ZUdvdmVybmFuY2UucmVtb3ZlRmFjaGF1ZnNpY2h0
KCcgKyBpICsgJykiPkVudGZlcm5lbjwvYnV0dG9uPicgOiAnJykgKwogICAgICAgICAgICAnPC9k
aXY+JzsKICAgICAgICB9KTsKICAgICAgICBpZiAoaXNTVSkgewogICAgICAgICAgICBodG1sICs9
ICc8ZGl2IGNsYXNzPSJnb3YtY2F0LWFkZC1yb3ciIHN0eWxlPSJnYXA6NnB4OyI+JyArCiAgICAg
ICAgICAgICAgICAnPGlucHV0IHR5cGU9InRleHQiIGlkPSJnb3ZGQVVzZXIiIHBsYWNlaG9sZGVy
PSJOVy1LZW5udW5nIiBzdHlsZT0ibWF4LXdpZHRoOjEyMHB4OyI+JyArCiAgICAgICAgICAgICAg
ICAnPGlucHV0IHR5cGU9InRleHQiIGlkPSJnb3ZGQU5hbWUiIHBsYWNlaG9sZGVyPSJBbnplaWdl
bmFtZSIgc3R5bGU9ImZsZXg6MjsiPicgKwogICAgICAgICAgICAgICAgJzxpbnB1dCB0eXBlPSJ0
ZXh0IiBpZD0iZ292RkFPRSIgcGxhY2Vob2xkZXI9Ik9yZ2FuaXNhdGlvbnNlaW5oZWl0IiBzdHls
ZT0iZmxleDoyOyI+JyArCiAgICAgICAgICAgICAgICAnPGJ1dHRvbiBjbGFzcz0iZ292LWFkZC1i
dG4iIHN0eWxlPSJwYWRkaW5nOjZweCAxNHB4OyIgb25jbGljaz0iRHJpdmVHb3Zlcm5hbmNlLmFk
ZEZhY2hhdWZzaWNodCgpIj5IaW56dWbDvGdlbjwvYnV0dG9uPicgKwogICAgICAgICAgICAnPC9k
aXY+JzsKICAgICAgICB9CiAgICAgICAgaHRtbCArPSAnPC9kaXY+JzsKCiAgICAgICAgLy8gLS0t
IFJldmlld2VyIC0tLQogICAgICAgIGh0bWwgKz0gJzxkaXYgY2xhc3M9Imdvdi1zZWN0aW9uIj4n
ICsKICAgICAgICAgICAgJzxkaXYgY2xhc3M9Imdvdi1zZWN0aW9uLXRpdGxlIiB0aXRsZT0iUmV2
aWV3ZXIgZMO8cmZlbiBBcnRpa2VsIGluIGRlbiBpaG5lbiB6dWdld2llc2VuZW4gS2F0ZWdvcmll
biBmcmVpZ2ViZW4gb2RlciBhYmxlaG5lbi4gSmVkZXIgUmV2aWV3ZXIgYmVrb21tdCBiZXN0aW1t
dGUgRmFjaGJlcmVpY2hlIHp1Z2V3aWVzZW4uIj5SZXZpZXdlciAoJyArIGdvdi5yZXZpZXdlcnMu
bGVuZ3RoICsgJyk8L2Rpdj4nOwogICAgICAgIGlmIChnb3YucmV2aWV3ZXJzLmxlbmd0aCA9PT0g
MCkgewogICAgICAgICAgICBodG1sICs9ICc8ZGl2IGNsYXNzPSJnb3YtZW1wdHkiPk5vY2gga2Vp
bmUgUmV2aWV3ZXIga29uZmlndXJpZXJ0PC9kaXY+JzsKICAgICAgICB9CiAgICAgICAgZ292LnJl
dmlld2Vycy5mb3JFYWNoKGZ1bmN0aW9uKHIsIGkpIHsKICAgICAgICAgICAgdmFyIG9lID0gci5v
cmdhbmlzYXRpb25zZWluaGVpdCA/ICcgwrcgJyArIERyaXZlUG9ydGFsLmVzY2FwZUhUTUwoci5v
cmdhbmlzYXRpb25zZWluaGVpdCkgOiAnJzsKICAgICAgICAgICAgaHRtbCArPSAnPGRpdiBjbGFz
cz0iZ292LXVzZXItcm93Ij4nICsKICAgICAgICAgICAgICAgICc8c3BhbiBjbGFzcz0iZ292LXJv
bGUtaWNvbiByZXYiPlI8L3NwYW4+JyArCiAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0iZ292
LXVzZXItaW5mbyI+PGRpdiBjbGFzcz0iZ292LXVzZXItbmFtZSI+JyArIERyaXZlUG9ydGFsLmVz
Y2FwZUhUTUwoci5kaXNwbGF5TmFtZSB8fCByLnVzZXJuYW1lKSArICc8L2Rpdj4nICsKICAgICAg
ICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0iZ292LXVzZXItZGV0YWlsIj4nICsgRHJpdmVQb3J0
YWwuZXNjYXBlSFRNTChyLnVzZXJuYW1lKSArIG9lICsgJzwvZGl2PjwvZGl2PicgKwogICAgICAg
ICAgICAgICAgJzxkaXYgY2xhc3M9Imdvdi1jYXQtdGFncyI+JyArIChyLmthdGVnb3JpZW4gfHwg
W10pLm1hcChmdW5jdGlvbihrKSB7IHJldHVybiAnPHNwYW4gY2xhc3M9Imdvdi1jYXQtdGFnIj4n
ICsgRHJpdmVQb3J0YWwuZXNjYXBlSFRNTChrKSArICc8L3NwYW4+JzsgfSkuam9pbignJykgKyAn
PC9kaXY+JyArCiAgICAgICAgICAgICAgICAnPGJ1dHRvbiBjbGFzcz0iZWRpdCIgb25jbGljaz0i
RHJpdmVHb3Zlcm5hbmNlLmVkaXRSZXZpZXdlcignICsgaSArICcpIj5CZWFyYmVpdGVuPC9idXR0
b24+JyArCiAgICAgICAgICAgICAgICAnPGJ1dHRvbiBjbGFzcz0icmVtb3ZlIiBvbmNsaWNrPSJE
cml2ZUdvdmVybmFuY2UucmVtb3ZlUmV2aWV3ZXIoJyArIGkgKyAnKSI+RW50ZmVybmVuPC9idXR0
b24+JyArCiAgICAgICAgICAgICc8L2Rpdj4nOwogICAgICAgIH0pOwogICAgICAgIGh0bWwgKz0g
JzwvZGl2Pic7CgogICAgICAgIC8vIC0tLSBSZXZpZXdlci1Gb3JtdWxhcjogRmVsZGVyIGxpbmtz
LCBLYXRlZ29yaWVuIHJlY2h0cyAtLS0KICAgICAgICB2YXIgaXNFZGl0aW5nID0gdGhpcy5fZWRp
dGluZ1Jldmlld2VySW5kZXggPj0gMDsKICAgICAgICB2YXIgZWRpdERhdGEgPSBpc0VkaXRpbmcg
PyBnb3YucmV2aWV3ZXJzW3RoaXMuX2VkaXRpbmdSZXZpZXdlckluZGV4XSA6IG51bGw7CiAgICAg
ICAgdmFyIGZvcm1UaXRsZSA9IGlzRWRpdGluZyA/ICdSZXZpZXdlciBiZWFyYmVpdGVuJyA6ICdS
ZXZpZXdlciBoaW56dWbDvGdlbic7CiAgICAgICAgdmFyIGZvcm1CdG5MYWJlbCA9IGlzRWRpdGlu
ZyA/ICdTcGVpY2hlcm4nIDogJ0hpbnp1ZsO8Z2VuJzsKCiAgICAgICAgaHRtbCArPSAnPGRpdiBj
bGFzcz0iZ292LXNlY3Rpb24iIGlkPSJnb3ZBZGRTZWN0aW9uIj4nICsKICAgICAgICAgICAgJzxk
aXYgY2xhc3M9Imdvdi1zZWN0aW9uLXRpdGxlIj4nICsgZm9ybVRpdGxlICsgJzwvZGl2PicgKwog
ICAgICAgICAgICAnPGRpdiBjbGFzcz0iZ292LXR3by1jb2wiIHN0eWxlPSJnYXA6MTJweDthbGln
bi1pdGVtczpzdHJldGNoOyI+JyArCiAgICAgICAgICAgICAgICAnPGRpdiBzdHlsZT0iZGlzcGxh
eTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjsiPicgKwogICAgICAgICAgICAgICAgICAgICc8
ZGl2IHN0eWxlPSJtYXJnaW4tYm90dG9tOjZweDsiPjxsYWJlbCBzdHlsZT0iZm9udC1zaXplOjEx
cHg7Y29sb3I6dmFyKC0tdGV4dC1zZWNvbmRhcnkpO2ZvbnQtd2VpZ2h0OjYwMDsiPk5XLUtlbm51
bmc8L2xhYmVsPicgKwogICAgICAgICAgICAgICAgICAgICAgICAnPGlucHV0IHR5cGU9InRleHQi
IGlkPSJnb3ZBZGRVc2VyIiBwbGFjZWhvbGRlcj0iei5CLiBudzEyMzQ1IiB2YWx1ZT0iJyArIChl
ZGl0RGF0YSA/IERyaXZlUG9ydGFsLmVzY2FwZUF0dHIoZWRpdERhdGEudXNlcm5hbWUpIDogJycp
ICsgJyIgc3R5bGU9IndpZHRoOjEwMCU7cGFkZGluZzo1cHggOHB4O2JvcmRlcjoxcHggc29saWQg
dmFyKC0tYm9yZGVyLXN0cm9uZyk7Ym9yZGVyLXJhZGl1czo0cHg7Zm9udC1zaXplOjEzcHg7bWFy
Z2luLXRvcDoycHg7YmFja2dyb3VuZDp2YXIoLS1iZy1pbnB1dCk7Y29sb3I6dmFyKC0tdGV4dC1w
cmltYXJ5KTsiPjwvZGl2PicgKwogICAgICAgICAgICAgICAgICAgICc8ZGl2IHN0eWxlPSJtYXJn
aW4tYm90dG9tOjZweDsiPjxsYWJlbCBzdHlsZT0iZm9udC1zaXplOjExcHg7Y29sb3I6dmFyKC0t
dGV4dC1zZWNvbmRhcnkpO2ZvbnQtd2VpZ2h0OjYwMDsiPkFuemVpZ2VuYW1lPC9sYWJlbD4nICsK
ICAgICAgICAgICAgICAgICAgICAgICAgJzxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iZ292QWRkTmFt
ZSIgcGxhY2Vob2xkZXI9IlZvci0gdW5kIE5hY2huYW1lIiB2YWx1ZT0iJyArIChlZGl0RGF0YSA/
IERyaXZlUG9ydGFsLmVzY2FwZUF0dHIoZWRpdERhdGEuZGlzcGxheU5hbWUgfHwgJycpIDogJycp
ICsgJyIgc3R5bGU9IndpZHRoOjEwMCU7cGFkZGluZzo1cHggOHB4O2JvcmRlcjoxcHggc29saWQg
dmFyKC0tYm9yZGVyLXN0cm9uZyk7Ym9yZGVyLXJhZGl1czo0cHg7Zm9udC1zaXplOjEzcHg7bWFy
Z2luLXRvcDoycHg7YmFja2dyb3VuZDp2YXIoLS1iZy1pbnB1dCk7Y29sb3I6dmFyKC0tdGV4dC1w
cmltYXJ5KTsiPjwvZGl2PicgKwogICAgICAgICAgICAgICAgICAgICc8ZGl2IHN0eWxlPSJtYXJn
aW4tYm90dG9tOjZweDsiPjxsYWJlbCBzdHlsZT0iZm9udC1zaXplOjExcHg7Y29sb3I6dmFyKC0t
dGV4dC1zZWNvbmRhcnkpO2ZvbnQtd2VpZ2h0OjYwMDsiPk9yZ2FuaXNhdGlvbnNlaW5oZWl0PC9s
YWJlbD4nICsKICAgICAgICAgICAgICAgICAgICAgICAgJzxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0i
Z292QWRkT0UiIHBsYWNlaG9sZGVyPSJic3AuIEZ1ZVN0IFYsIFZELUFQLi4uIiB2YWx1ZT0iJyAr
IChlZGl0RGF0YSA/IERyaXZlUG9ydGFsLmVzY2FwZUF0dHIoZWRpdERhdGEub3JnYW5pc2F0aW9u
c2VpbmhlaXQgfHwgJycpIDogJycpICsgJyIgc3R5bGU9IndpZHRoOjEwMCU7cGFkZGluZzo1cHgg
OHB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyLXN0cm9uZyk7Ym9yZGVyLXJhZGl1czo0
cHg7Zm9udC1zaXplOjEzcHg7bWFyZ2luLXRvcDoycHg7YmFja2dyb3VuZDp2YXIoLS1iZy1pbnB1
dCk7Y29sb3I6dmFyKC0tdGV4dC1wcmltYXJ5KTsiPjwvZGl2PicgKwogICAgICAgICAgICAgICAg
ICAgICc8ZGl2IHN0eWxlPSJkaXNwbGF5OmZsZXg7Z2FwOjZweDttYXJnaW4tdG9wOjRweDtqdXN0
aWZ5LWNvbnRlbnQ6ZmxleC1lbmQ7Ij4nICsKICAgICAgICAgICAgICAgICAgICAgICAgKGlzRWRp
dGluZyA/ICc8YnV0dG9uIGNsYXNzPSJnb3YtY2FuY2VsLWJ0biIgc3R5bGU9InBhZGRpbmc6NnB4
IDEycHg7IiBvbmNsaWNrPSJEcml2ZUdvdmVybmFuY2UuY2FuY2VsRWRpdCgpIj5BYmJyZWNoZW48
L2J1dHRvbj4nIDogJycpICsKICAgICAgICAgICAgICAgICAgICAgICAgJzxidXR0b24gY2xhc3M9
Imdvdi1hZGQtYnRuIiBzdHlsZT0icGFkZGluZzo2cHggMTZweDsiIG9uY2xpY2s9IkRyaXZlR292
ZXJuYW5jZS5hZGRSZXZpZXdlcigpIj4nICsgZm9ybUJ0bkxhYmVsICsgJzwvYnV0dG9uPicgKwog
ICAgICAgICAgICAgICAgICAgICc8L2Rpdj4nICsKICAgICAgICAgICAgICAgICc8L2Rpdj4nICsK
ICAgICAgICAgICAgICAgICc8ZGl2IHN0eWxlPSJkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246
Y29sdW1uOyI+JyArCiAgICAgICAgICAgICAgICAgICAgJzxsYWJlbCBzdHlsZT0iZm9udC1zaXpl
OjExcHg7Y29sb3I6dmFyKC0tdGV4dC1zZWNvbmRhcnkpO2ZvbnQtd2VpZ2h0OjYwMDsiPkthdGVn
b3JpZW4gKE1laHJmYWNoYXVzd2FobCBtaXQgU3RyZytLbGljayk8L2xhYmVsPicgKwogICAgICAg
ICAgICAgICAgICAgICc8c2VsZWN0IGlkPSJnb3ZBZGRLYXQiIG11bHRpcGxlIHN0eWxlPSJ3aWR0
aDoxMDAlO2ZsZXg6MTttYXJnaW4tdG9wOjJweDtwYWRkaW5nOjRweDtib3JkZXI6MXB4IHNvbGlk
IHZhcigtLWJvcmRlci1zdHJvbmcpO2JvcmRlci1yYWRpdXM6NHB4O2ZvbnQtc2l6ZToxM3B4O2Jh
Y2tncm91bmQ6dmFyKC0tYmctaW5wdXQpO2NvbG9yOnZhcigtLXRleHQtcHJpbWFyeSk7Ij4nOwog
ICAgICAgIHZhciBlZGl0S2F0cyA9IGVkaXREYXRhID8gKGVkaXREYXRhLmthdGVnb3JpZW4gfHwg
W10pIDogW107CiAgICAgICAga2F0ZWdvcmllbi5mb3JFYWNoKGZ1bmN0aW9uKGspIHsKICAgICAg
ICAgICAgdmFyIHNlbCA9IGVkaXRLYXRzLmluY2x1ZGVzKGspID8gJyBzZWxlY3RlZCcgOiAnJzsK
ICAgICAgICAgICAgaHRtbCArPSAnPG9wdGlvbiB2YWx1ZT0iJyArIERyaXZlUG9ydGFsLmVzY2Fw
ZUF0dHIoaykgKyAnIicgKyBzZWwgKyAnPicgKyBEcml2ZVBvcnRhbC5lc2NhcGVIVE1MKGspICsg
Jzwvb3B0aW9uPic7CiAgICAgICAgfSk7CiAgICAgICAgaHRtbCArPSAnPC9zZWxlY3Q+PC9kaXY+
PC9kaXY+PC9kaXY+JzsKCiAgICAgICAgLy8gLS0tIEthdGVnb3JpZW4gKyBFaW5zdGVsbHVuZ2Vu
IGluIGVpbmVyIGdlbWVpbnNhbWVuIEJveCAtLS0KICAgICAgICBodG1sICs9ICc8ZGl2IGNsYXNz
PSJnb3Ytc2VjdGlvbiI+JzsKICAgICAgICBodG1sICs9ICc8ZGl2IGNsYXNzPSJnb3YtdHdvLWNv
bCBjYXQtc2V0dGluZ3MiIHN0eWxlPSJhbGlnbi1pdGVtczpzdHJldGNoOyI+JzsKCiAgICAgICAg
Ly8gS2F0ZWdvcmllbiAobGlua2UgU3BhbHRlKQogICAgICAgIHZhciBoaWRkZW5LYXRzID0gRHJp
dmVGUy5jb25maWcuaGlkZGVuS2F0ZWdvcmllbiB8fCBbXTsKICAgICAgICBodG1sICs9ICc8ZGl2
IHN0eWxlPSJkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uOyI+JyArCiAgICAgICAg
ICAgICc8ZGl2IGNsYXNzPSJnb3Ytc2VjdGlvbi10aXRsZSIgdGl0bGU9IkthdGVnb3JpZW4gc2lu
ZCBkaWUgRmFjaGJlcmVpY2hlLCBpbiBkaWUgQXJ0aWtlbCBlaW5zb3J0aWVydCB3ZXJkZW4uIER1
IGthbm5zdCBLYXRlZ29yaWVuIGF1c2JsZW5kZW4gKHVuc2ljaHRiYXIgZsO8ciBOdXR6ZXIpIG9k
ZXIgZ2FueiBlbnRmZXJuZW4uIj5LYXRlZ29yaWVuICgnICsga2F0ZWdvcmllbi5sZW5ndGggKyAo
aGlkZGVuS2F0cy5sZW5ndGggPiAwID8gJywgJyArIGhpZGRlbkthdHMubGVuZ3RoICsgJyBhdXNn
ZWJsZW5kZXQnIDogJycpICsgJyk8L2Rpdj4nICsKICAgICAgICAgICAgJzxkaXYgY2xhc3M9Imdv
di1jYXQtbGlzdCIgc3R5bGU9ImZsZXg6MTsiPic7CiAgICAgICAga2F0ZWdvcmllbi5mb3JFYWNo
KGZ1bmN0aW9uKGthdCwgaSkgewogICAgICAgICAgICB2YXIgZG9jQ291bnQgPSBEcml2ZUZTLmRv
Y3VtZW50cy5maWx0ZXIoZnVuY3Rpb24oZCl7IHJldHVybiBkLmthdGVnb3JpZSA9PT0ga2F0OyB9
KS5sZW5ndGg7CiAgICAgICAgICAgIHZhciBpc0hpZGRlbiA9IGhpZGRlbkthdHMuaW5jbHVkZXMo
a2F0KTsKICAgICAgICAgICAgaHRtbCArPSAnPGRpdiBjbGFzcz0iZ292LWNhdC1pdGVtJyArIChp
c0hpZGRlbiA/ICcgaGlkZGVuLWNhdCcgOiAnJykgKyAnIj4nICsKICAgICAgICAgICAgICAgICc8
c3BhbiBjbGFzcz0iZ292LWNhdC1uYW1lIj4nICsgRHJpdmVQb3J0YWwuZXNjYXBlSFRNTChrYXQp
ICsgJzwvc3Bhbj4nICsKICAgICAgICAgICAgICAgICc8c3BhbiBzdHlsZT0iZm9udC1zaXplOjEx
cHg7Y29sb3I6Izg4ODsiPicgKyBkb2NDb3VudCArICcgRG9rLjwvc3Bhbj4nICsKICAgICAgICAg
ICAgICAgIChpc0hpZGRlbgogICAgICAgICAgICAgICAgICAgID8gJzxidXR0b24gY2xhc3M9InNo
b3ciIG9uY2xpY2s9IkRyaXZlR292ZXJuYW5jZS5zaG93Q2F0ZWdvcnkoJyArIGkgKyAnKSI+RWlu
YmxlbmRlbjwvYnV0dG9uPicKICAgICAgICAgICAgICAgICAgICA6ICc8YnV0dG9uIGNsYXNzPSJo
aWRlIiBvbmNsaWNrPSJEcml2ZUdvdmVybmFuY2UuaGlkZUNhdGVnb3J5KCcgKyBpICsgJykiPkF1
c2JsZW5kZW48L2J1dHRvbj4nKSArCiAgICAgICAgICAgICAgICAnPGJ1dHRvbiBjbGFzcz0icmVt
b3ZlIiBvbmNsaWNrPSJEcml2ZUdvdmVybmFuY2UucmVtb3ZlQ2F0ZWdvcnkoJyArIGkgKyAnKSI+
RW50ZmVybmVuPC9idXR0b24+JyArCiAgICAgICAgICAgICc8L2Rpdj4nOwogICAgICAgIH0pOwog
ICAgICAgIGh0bWwgKz0gJzwvZGl2Pic7CiAgICAgICAgaHRtbCArPSAnPGRpdiBzdHlsZT0iYm9y
ZGVyLXRvcDoycHggc29saWQgdmFyKC0tYm9yZGVyLWxpZ2h0KTttYXJnaW4tdG9wOjhweDtwYWRk
aW5nLXRvcDoxMHB4OyI+JyArCiAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJnb3YtY2F0LWFkZC1y
b3ciPicgKwogICAgICAgICAgICAgICAgJzxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iZ292TmV3Q2F0
IiBwbGFjZWhvbGRlcj0iTmV1ZSBLYXRlZ29yaWUuLi4iPicgKwogICAgICAgICAgICAgICAgJzxi
dXR0b24gY2xhc3M9Imdvdi1hZGQtYnRuIiBzdHlsZT0icGFkZGluZzo2cHggMTRweDsiIG9uY2xp
Y2s9IkRyaXZlR292ZXJuYW5jZS5hZGRDYXRlZ29yeSgpIj5IaW56dWbDvGdlbjwvYnV0dG9uPicg
KwogICAgICAgICAgICAnPC9kaXY+PC9kaXY+PC9kaXY+JzsKCiAgICAgICAgLy8gRWluc3RlbGx1
bmdlbiAocmVjaHRlIFNwYWx0ZSkKICAgICAgICBodG1sICs9ICc8ZGl2IHN0eWxlPSJkaXNwbGF5
OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2JvcmRlci1sZWZ0OjFweCBzb2xpZCB2YXIoLS1i
b3JkZXItbGlnaHQpO3BhZGRpbmctbGVmdDoxNHB4OyI+JyArCiAgICAgICAgICAgICc8ZGl2IGNs
YXNzPSJnb3Ytc2VjdGlvbi10aXRsZSI+RWluc3RlbGx1bmdlbjwvZGl2PicgKwogICAgICAgICAg
ICAnPGxhYmVsIGNsYXNzPSJnb3Ytc2V0dGluZy1yb3ciIHRpdGxlPSJXZW5uIGFrdGl2LCBtw7xz
c2VuIG5ldWUgQXJ0aWtlbCBlcnN0IHZvbiBlaW5lbSBSZXZpZXdlciBmcmVpZ2VnZWJlbiB3ZXJk
ZW4sIGJldm9yIHNpZSBmw7xyIGFsbGUgc2ljaHRiYXIgc2luZC4iPjxpbnB1dCB0eXBlPSJjaGVj
a2JveCIgaWQ9ImdvdlJlcU5ldyIgJyArIChnb3Yuc2V0dGluZ3MucmVxdWlyZUFwcHJvdmFsRm9y
TmV3ID8gJ2NoZWNrZWQnIDogJycpICsgJyBvbmNoYW5nZT0iRHJpdmVHb3Zlcm5hbmNlLnNhdmVT
ZXR0aW5ncygpIj4gRnJlaWdhYmUgZsO8ciBuZXVlIEFydGlrZWw8L2xhYmVsPicgKwogICAgICAg
ICAgICAnPGxhYmVsIGNsYXNzPSJnb3Ytc2V0dGluZy1yb3ciIHRpdGxlPSJXZW5uIGFrdGl2LCBt
dXNzIGplZGUgQmVhcmJlaXR1bmcgZWluZXMgYmVzdGVoZW5kZW4gQXJ0aWtlbHMgZXJuZXV0IGZy
ZWlnZWdlYmVuIHdlcmRlbi4iPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9ImdvdlJlcUVkaXQi
ICcgKyAoZ292LnNldHRpbmdzLnJlcXVpcmVBcHByb3ZhbEZvckVkaXQgPyAnY2hlY2tlZCcgOiAn
JykgKyAnIG9uY2hhbmdlPSJEcml2ZUdvdmVybmFuY2Uuc2F2ZVNldHRpbmdzKCkiPiBGcmVpZ2Fi
ZSBuYWNoIEJlYXJiZWl0dW5nPC9sYWJlbD4nICsKICAgICAgICAgICAgJzxsYWJlbCBjbGFzcz0i
Z292LXNldHRpbmctcm93IiB0aXRsZT0iWmVpZ3QgdW50ZXIgamVkZW0gQXJ0aWtlbCBhbiwgd2Vy
IGRhcmFuIG1pdGdld2lya3QgaGF0IChBdXRvciwgUmVkYWt0aW9uLCBLb3JyZWt0dXIgdXN3Liku
Ij48aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSJnb3ZTaG93Q29udHJpYiIgJyArIChnb3Yuc2V0
dGluZ3Muc2hvd0NvbnRyaWJ1dG9ycyAhPT0gZmFsc2UgPyAnY2hlY2tlZCcgOiAnJykgKyAnIG9u
Y2hhbmdlPSJEcml2ZUdvdmVybmFuY2Uuc2F2ZVNldHRpbmdzKCkiPiBNaXR3aXJrZW5kZSBhbnpl
aWdlbjwvbGFiZWw+JyArCiAgICAgICAgICAgICc8bGFiZWwgY2xhc3M9Imdvdi1zZXR0aW5nLXJv
dyIgdGl0bGU9IlplaWd0IHVudGVyIGplZGVtIEFydGlrZWwgZGllIEhpc3RvcmllIGFsbGVyIEZy
ZWlnYWJlbiB1bmQgQWJsZWhudW5nZW4gYW4uIj48aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSJn
b3ZTaG93UmV2aWV3SGlzdCIgJyArIChnb3Yuc2V0dGluZ3Muc2hvd1Jldmlld0hpc3RvcnkgIT09
IGZhbHNlID8gJ2NoZWNrZWQnIDogJycpICsgJyBvbmNoYW5nZT0iRHJpdmVHb3Zlcm5hbmNlLnNh
dmVTZXR0aW5ncygpIj4gUHLDvGZ1bmdzdmVybGF1ZiBhbnplaWdlbjwvbGFiZWw+JyArCiAgICAg
ICAgICAgICc8ZGl2IGNsYXNzPSJnb3Ytc2V0dGluZy1yb3ciIHN0eWxlPSJkaXNwbGF5OmZsZXg7
YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO2dhcDo4cHg7
IiB0aXRsZT0iUGZsaWNodCA9IEplZGVyIEFydGlrZWwgYnJhdWNodCBtaW5kZXN0ZW5zIGVpbiBT
Y2hsYWd3b3J0LiBPcHRpb25hbCA9IFNjaGxhZ3fDtnJ0ZXIgd2VyZGVuIHZvcmdlc2NobGFnZW4s
IHNpbmQgYWJlciBuaWNodCBuw7Z0aWcuIERlYWt0aXZpZXJ0ID0gS2VpbmUgU2NobGFnd8O2cnRl
ci4iPicgKwogICAgICAgICAgICAgICAgJzxsYWJlbCBmb3I9ImdvdktleXdvcmRNb2RlIj5TY2hs
YWd3w7ZydGVyOjwvbGFiZWw+JyArCiAgICAgICAgICAgICAgICAnPHNlbGVjdCBpZD0iZ292S2V5
d29yZE1vZGUiIG9uY2hhbmdlPSJEcml2ZUdvdmVybmFuY2Uuc2F2ZVNldHRpbmdzKCkiIHN0eWxl
PSJwYWRkaW5nOjRweCA4cHg7Ym9yZGVyLXJhZGl1czo0cHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIo
LS1ib3JkZXItY29sb3IpO2JhY2tncm91bmQ6dmFyKC0tYmctaW5wdXQpO2NvbG9yOnZhcigtLXRl
eHQtcHJpbWFyeSk7Zm9udC1zaXplOjEzcHg7bWluLXdpZHRoOjEzMHB4OyI+JyArCiAgICAgICAg
ICAgICAgICAgICAgJzxvcHRpb24gdmFsdWU9InJlcXVpcmVkIicgKyAoKGdvdi5zZXR0aW5ncy5r
ZXl3b3JkTW9kZSB8fCAncmVxdWlyZWQnKSA9PT0gJ3JlcXVpcmVkJyA/ICcgc2VsZWN0ZWQnIDog
JycpICsgJz5QZmxpY2h0PC9vcHRpb24+JyArCiAgICAgICAgICAgICAgICAgICAgJzxvcHRpb24g
dmFsdWU9Im9wdGlvbmFsIicgKyAoZ292LnNldHRpbmdzLmtleXdvcmRNb2RlID09PSAnb3B0aW9u
YWwnID8gJyBzZWxlY3RlZCcgOiAnJykgKyAnPk9wdGlvbmFsPC9vcHRpb24+JyArCiAgICAgICAg
ICAgICAgICAgICAgJzxvcHRpb24gdmFsdWU9ImRpc2FibGVkIicgKyAoZ292LnNldHRpbmdzLmtl
eXdvcmRNb2RlID09PSAnZGlzYWJsZWQnID8gJyBzZWxlY3RlZCcgOiAnJykgKyAnPkRlYWt0aXZp
ZXJ0PC9vcHRpb24+JyArCiAgICAgICAgICAgICAgICAnPC9zZWxlY3Q+JyArCiAgICAgICAgICAg
ICc8L2Rpdj4nICsKICAgICAgICAgICAgJzxkaXYgY2xhc3M9Imdvdi1zZXR0aW5nLXJvdyIgc3R5
bGU9ImRpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OnNwYWNl
LWJldHdlZW47Z2FwOjhweDsiIHRpdGxlPSJQZmxpY2h0ID0gUmV2aWV3ZXIgbcO8c3NlbiBiZWkg
QWJsZWhudW5nIGltbWVyIGVpbmUgQmVncsO8bmR1bmcgc2NocmVpYmVuLiBPcHRpb25hbCA9IEJl
Z3LDvG5kdW5nIHdpcmQgZW1wZm9obGVuLiBOZWluID0gS2VpbmUgQmVncsO8bmR1bmcgbsO2dGln
LiI+JyArCiAgICAgICAgICAgICAgICAnPGxhYmVsIGZvcj0iZ292UmVqZWN0aW9uTW9kZSI+QWJs
ZWhudW5nc2JlZ3LDvG5kdW5nOjwvbGFiZWw+JyArCiAgICAgICAgICAgICAgICAnPHNlbGVjdCBp
ZD0iZ292UmVqZWN0aW9uTW9kZSIgb25jaGFuZ2U9IkRyaXZlR292ZXJuYW5jZS5zYXZlU2V0dGlu
Z3MoKSIgc3R5bGU9InBhZGRpbmc6NHB4IDhweDtib3JkZXItcmFkaXVzOjRweDtib3JkZXI6MXB4
IHNvbGlkIHZhcigtLWJvcmRlci1jb2xvcik7YmFja2dyb3VuZDp2YXIoLS1iZy1pbnB1dCk7Y29s
b3I6dmFyKC0tdGV4dC1wcmltYXJ5KTtmb250LXNpemU6MTNweDttaW4td2lkdGg6MTMwcHg7Ij4n
ICsKICAgICAgICAgICAgICAgICAgICAnPG9wdGlvbiB2YWx1ZT0icmVxdWlyZWQiJyArICgoZ292
LnNldHRpbmdzLnJlamVjdGlvblJlYXNvbk1vZGUgfHwgJ3JlcXVpcmVkJykgPT09ICdyZXF1aXJl
ZCcgPyAnIHNlbGVjdGVkJyA6ICcnKSArICc+UGZsaWNodDwvb3B0aW9uPicgKwogICAgICAgICAg
ICAgICAgICAgICc8b3B0aW9uIHZhbHVlPSJvcHRpb25hbCInICsgKGdvdi5zZXR0aW5ncy5yZWpl
Y3Rpb25SZWFzb25Nb2RlID09PSAnb3B0aW9uYWwnID8gJyBzZWxlY3RlZCcgOiAnJykgKyAnPk9w
dGlvbmFsPC9vcHRpb24+JyArCiAgICAgICAgICAgICAgICAgICAgJzxvcHRpb24gdmFsdWU9ImRp
c2FibGVkIicgKyAoZ292LnNldHRpbmdzLnJlamVjdGlvblJlYXNvbk1vZGUgPT09ICdkaXNhYmxl
ZCcgPyAnIHNlbGVjdGVkJyA6ICcnKSArICc+TmVpbjwvb3B0aW9uPicgKwogICAgICAgICAgICAg
ICAgJzwvc2VsZWN0PicgKwogICAgICAgICAgICAnPC9kaXY+JyArCiAgICAgICAgICAgICc8ZGl2
IGNsYXNzPSJnb3Ytc2V0dGluZy1yb3ciIHN0eWxlPSJkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6
Y2VudGVyO2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO2dhcDo4cHg7IiB0aXRsZT0iV2Vu
biBha3RpdmllcnQsIGVya2VubnQgZGFzIFBvcnRhbCBhdXRvbWF0aXNjaCBWZXJ3ZWlzZSBhdWYg
YW5kZXJlIEFydGlrZWwgaW0gVGV4dCB1bmQgemVpZ3QgYmVpIE1vdXNlb3ZlciBlaW5lIFZvcnNj
aGF1IGFuLiI+JyArCiAgICAgICAgICAgICAgICAnPGxhYmVsIGZvcj0iZ292Q3Jvc3NsaW5rTW9k
ZSI+Q3Jvc3NsaW5raW5nOjwvbGFiZWw+JyArCiAgICAgICAgICAgICAgICAnPHNlbGVjdCBpZD0i
Z292Q3Jvc3NsaW5rTW9kZSIgb25jaGFuZ2U9IkRyaXZlR292ZXJuYW5jZS5zYXZlU2V0dGluZ3Mo
KSIgc3R5bGU9InBhZGRpbmc6NHB4IDhweDtib3JkZXItcmFkaXVzOjRweDtib3JkZXI6MXB4IHNv
bGlkIHZhcigtLWJvcmRlci1jb2xvcik7YmFja2dyb3VuZDp2YXIoLS1iZy1pbnB1dCk7Y29sb3I6
dmFyKC0tdGV4dC1wcmltYXJ5KTtmb250LXNpemU6MTNweDttaW4td2lkdGg6MTMwcHg7Ij4nICsK
ICAgICAgICAgICAgICAgICAgICAnPG9wdGlvbiB2YWx1ZT0iZW5hYmxlZCInICsgKChnb3Yuc2V0
dGluZ3MuY3Jvc3NsaW5rTW9kZSB8fCAnZW5hYmxlZCcpID09PSAnZW5hYmxlZCcgPyAnIHNlbGVj
dGVkJyA6ICcnKSArICc+QWt0aXZpZXJ0PC9vcHRpb24+JyArCiAgICAgICAgICAgICAgICAgICAg
JzxvcHRpb24gdmFsdWU9ImRpc2FibGVkIicgKyAoZ292LnNldHRpbmdzLmNyb3NzbGlua01vZGUg
PT09ICdkaXNhYmxlZCcgPyAnIHNlbGVjdGVkJyA6ICcnKSArICc+RGVha3RpdmllcnQ8L29wdGlv
bj4nICsKICAgICAgICAgICAgICAgICc8L3NlbGVjdD4nICsKICAgICAgICAgICAgJzwvZGl2Picg
KwogICAgICAgICc8L2Rpdj4nOyAvLyBFbmRlIEVpbnN0ZWxsdW5nZW4tU3BhbHRlCgogICAgICAg
IGh0bWwgKz0gJzwvZGl2Pic7IC8vIEVuZGUgZ292LXR3by1jb2wKICAgICAgICBodG1sICs9ICc8
L2Rpdj4nOyAvLyBFbmRlIGdvdi1zZWN0aW9uIChLYXRlZ29yaWVuK0VpbnN0ZWxsdW5nZW4pCgog
ICAgICAgIC8vIC0tLSBTY2hsYWd3w7ZydGVyIHZlcndhbHRlbiAtLS0KICAgICAgICBodG1sICs9
ICc8ZGl2IGNsYXNzPSJnb3Ytc2VjdGlvbiI+JyArCiAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJn
b3Ytc2VjdGlvbi10aXRsZSIgdGl0bGU9IlNjaGxhZ3fDtnJ0ZXIgaGVsZmVuIGJlaW0gU3VjaGVu
IHVuZCBGaWx0ZXJuIHZvbiBBcnRpa2Vsbi4gSGllciBrYW5uc3QgZHUgYmVzdGVoZW5kZSBTY2hs
YWd3w7ZydGVyIHVtYmVuZW5uZW4sIHp1c2FtbWVuZsO8aHJlbiBvZGVyIGzDtnNjaGVuLiI+U2No
bGFnd8O2cnRlciB2ZXJ3YWx0ZW48L2Rpdj4nICsKICAgICAgICAgICAgJzxkaXYgc3R5bGU9ImZv
bnQtc2l6ZToxMnB4O2NvbG9yOnZhcigtLXRleHQtbXV0ZWQpO21hcmdpbi1ib3R0b206OHB4OyI+
S2xpY2tlIGF1ZiBlaW4gU2NobGFnd29ydCwgdW0gZXMgenUgYmVhcmJlaXRlbiBvZGVyIHp1IGzD
tnNjaGVuLiBEaWUgWmFobCB6ZWlndCwgaW4gd2llIHZpZWxlbiBBcnRpa2VsbiBlcyB2ZXJ3ZW5k
ZXQgd2lyZC48L2Rpdj4nICsKICAgICAgICAgICAgJzxkaXYgY2xhc3M9Imdvdi1rdy1saXN0IiBp
ZD0iZ292S3dMaXN0Ij4nOwogICAgICAgIHZhciBhbGxLdyA9IERyaXZlRWRpdG9yLl9nZXRBbGxL
bm93bktleXdvcmRzKCk7CiAgICAgICAgYWxsS3cuZm9yRWFjaChmdW5jdGlvbihrdykgewogICAg
ICAgICAgICB2YXIgY291bnQgPSBEcml2ZUZTLmRvY3VtZW50cy5maWx0ZXIoZnVuY3Rpb24oZCkg
ewogICAgICAgICAgICAgICAgcmV0dXJuIGQuc2NobGFnd29lcnRlciAmJiBkLnNjaGxhZ3dvZXJ0
ZXIuaW5jbHVkZXMoa3cpOwogICAgICAgICAgICB9KS5sZW5ndGg7CiAgICAgICAgICAgIGh0bWwg
Kz0gJzxzcGFuIGNsYXNzPSJnb3Yta3ctcGlsbCIgb25jbGljaz0iRHJpdmVHb3Zlcm5hbmNlLm9w
ZW5Ld01hbmFnZShcJycgKyBEcml2ZVBvcnRhbC5lc2NhcGVBdHRyKGt3KSArICdcJykiPicgKwog
ICAgICAgICAgICAgICAgRHJpdmVQb3J0YWwuZXNjYXBlSFRNTChrdykgKyAnIDxzcGFuIGNsYXNz
PSJrdy1jb3VudCI+KCcgKyBjb3VudCArICcpPC9zcGFuPjwvc3Bhbj4nOwogICAgICAgIH0pOwog
ICAgICAgIGh0bWwgKz0gJzwvZGl2PjwvZGl2Pic7CgogICAgICAgIGJvZHkuaW5uZXJIVE1MID0g
aHRtbDsKICAgIH0sCgogICAgYXN5bmMgYWRkUmV2aWV3ZXIoKSB7CiAgICAgICAgY29uc3QgdXNl
cm5hbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZ292QWRkVXNlcicpLnZhbHVlLnRyaW0o
KTsKICAgICAgICBjb25zdCBkaXNwbGF5TmFtZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdn
b3ZBZGROYW1lJykudmFsdWUudHJpbSgpIHx8IHVzZXJuYW1lOwogICAgICAgIGNvbnN0IG9yZ2Fu
aXNhdGlvbnNlaW5oZWl0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2dvdkFkZE9FJykudmFs
dWUudHJpbSgpOwogICAgICAgIGNvbnN0IGthdFNlbGVjdCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdnb3ZBZGRLYXQnKTsKICAgICAgICBjb25zdCBrYXRlZ29yaWVuID0gQXJyYXkuZnJvbShr
YXRTZWxlY3Quc2VsZWN0ZWRPcHRpb25zKS5tYXAobyA9PiBvLnZhbHVlKTsKCiAgICAgICAgaWYg
KCF1c2VybmFtZSkgeyBzaG93VG9hc3QoJ05XLUtlbm51bmcgZXJmb3JkZXJsaWNoJywgJ3dhcm5p
bmcnKTsgcmV0dXJuOyB9CiAgICAgICAgaWYgKGthdGVnb3JpZW4ubGVuZ3RoID09PSAwKSB7IHNo
b3dUb2FzdCgnTWluZGVzdGVucyBlaW5lIEthdGVnb3JpZSB3w6RobGVuJywgJ3dhcm5pbmcnKTsg
cmV0dXJuOyB9CgogICAgICAgIGlmICghdGhpcy5kYXRhKSB0aGlzLmRhdGEgPSB7IHZlcnNpb246
ICcxLjAnLCBzdXBlclVzZXJzOiBbXSwgcmV2aWV3ZXJzOiBbXSwgc2V0dGluZ3M6IHt9IH07CiAg
ICAgICAgY29uc3QgcmV2aWV3ZXIgPSB7IHVzZXJuYW1lOiB1c2VybmFtZSwgZG9tYWluOiAnKics
IGRpc3BsYXlOYW1lOiBkaXNwbGF5TmFtZSwga2F0ZWdvcmllbjoga2F0ZWdvcmllbiB9OwogICAg
ICAgIGlmIChvcmdhbmlzYXRpb25zZWluaGVpdCkgcmV2aWV3ZXIub3JnYW5pc2F0aW9uc2Vpbmhl
aXQgPSBvcmdhbmlzYXRpb25zZWluaGVpdDsKCiAgICAgICAgaWYgKHRoaXMuX2VkaXRpbmdSZXZp
ZXdlckluZGV4ID49IDApIHsKICAgICAgICAgICAgY29uc3QgZWRpdElkeCA9IHRoaXMuX2VkaXRp
bmdSZXZpZXdlckluZGV4OwogICAgICAgICAgICBjb25zdCBiYWNrdXAgPSB7IC4uLnRoaXMuZGF0
YS5yZXZpZXdlcnNbZWRpdElkeF0gfTsKICAgICAgICAgICAgdGhpcy5kYXRhLnJldmlld2Vyc1tl
ZGl0SWR4XSA9IHJldmlld2VyOwogICAgICAgICAgICB0aGlzLl9lZGl0aW5nUmV2aWV3ZXJJbmRl
eCA9IC0xOwogICAgICAgICAgICBjb25zdCBvayA9IGF3YWl0IHRoaXMuc2F2ZUdvdmVybmFuY2Uo
KTsKICAgICAgICAgICAgaWYgKG9rID09PSBmYWxzZSkgewogICAgICAgICAgICAgICAgdGhpcy5k
YXRhLnJldmlld2Vyc1tlZGl0SWR4XSA9IGJhY2t1cDsKICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgfQogICAgICAgICAgICB0aGlzLnJlbmRlckFkbWluKCk7CiAgICAgICAgICAg
IHNob3dUb2FzdChkaXNwbGF5TmFtZSArICcgYWt0dWFsaXNpZXJ0JywgJ3N1Y2Nlc3MnKTsKICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICB0aGlzLmRhdGEucmV2aWV3ZXJzLnB1c2gocmV2aWV3
ZXIpOwogICAgICAgICAgICBjb25zdCBvayA9IGF3YWl0IHRoaXMuc2F2ZUdvdmVybmFuY2UoKTsK
ICAgICAgICAgICAgaWYgKG9rID09PSBmYWxzZSkgewogICAgICAgICAgICAgICAgdGhpcy5kYXRh
LnJldmlld2Vycy5wb3AoKTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQog
ICAgICAgICAgICB0aGlzLnJlbmRlckFkbWluKCk7CiAgICAgICAgICAgIHNob3dUb2FzdChkaXNw
bGF5TmFtZSArICcgYWxzIFJldmlld2VyIGhpbnp1Z2Vmw7xndCcsICdzdWNjZXNzJyk7CiAgICAg
ICAgfQogICAgfSwKCiAgICBlZGl0UmV2aWV3ZXIoaW5kZXgpIHsKICAgICAgICBpZiAoIXRoaXMu
ZGF0YSB8fCAhdGhpcy5kYXRhLnJldmlld2Vyc1tpbmRleF0pIHJldHVybjsKICAgICAgICB0aGlz
Ll9lZGl0aW5nUmV2aWV3ZXJJbmRleCA9IGluZGV4OwogICAgICAgIHRoaXMucmVuZGVyQWRtaW4o
KTsKICAgICAgICBjb25zdCBzZWN0aW9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2dvdkFk
ZFNlY3Rpb24nKTsKICAgICAgICBpZiAoc2VjdGlvbikgc2VjdGlvbi5zY3JvbGxJbnRvVmlldyh7
IGJlaGF2aW9yOiAnc21vb3RoJyB9KTsKICAgIH0sCgogICAgY2FuY2VsRWRpdCgpIHsKICAgICAg
ICB0aGlzLl9lZGl0aW5nUmV2aWV3ZXJJbmRleCA9IC0xOwogICAgICAgIHRoaXMucmVuZGVyQWRt
aW4oKTsKICAgIH0sCgogICAgYXN5bmMgcmVtb3ZlUmV2aWV3ZXIoaW5kZXgpIHsKICAgICAgICBp
ZiAoIXRoaXMuZGF0YSB8fCAhdGhpcy5kYXRhLnJldmlld2Vyc1tpbmRleF0pIHJldHVybjsKICAg
ICAgICBjb25zdCBuYW1lID0gdGhpcy5kYXRhLnJldmlld2Vyc1tpbmRleF0uZGlzcGxheU5hbWUg
fHwgdGhpcy5kYXRhLnJldmlld2Vyc1tpbmRleF0udXNlcm5hbWU7CiAgICAgICAgaWYgKCFjb25m
aXJtKCdSZXZpZXdlciAiJyArIG5hbWUgKyAnIiBlbnRmZXJuZW4/JykpIHJldHVybjsKICAgICAg
ICBjb25zdCBiYWNrdXAgPSB0aGlzLmRhdGEucmV2aWV3ZXJzW2luZGV4XTsKICAgICAgICB0aGlz
LmRhdGEucmV2aWV3ZXJzLnNwbGljZShpbmRleCwgMSk7CiAgICAgICAgY29uc3Qgb2sgPSBhd2Fp
dCB0aGlzLnNhdmVHb3Zlcm5hbmNlKCk7CiAgICAgICAgaWYgKG9rID09PSBmYWxzZSkgewogICAg
ICAgICAgICB0aGlzLmRhdGEucmV2aWV3ZXJzLnNwbGljZShpbmRleCwgMCwgYmFja3VwKTsKICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICB0aGlzLnJlbmRlckFkbWluKCk7CiAg
ICAgICAgc2hvd1RvYXN0KG5hbWUgKyAnIGVudGZlcm50JywgJ3N1Y2Nlc3MnKTsKICAgIH0sCgog
ICAgYXN5bmMgYWRkU3VwZXJVc2VyKCkgewogICAgICAgIHZhciB1c2VybmFtZSA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdnb3ZTVVVzZXInKS52YWx1ZS50cmltKCk7CiAgICAgICAgaWYgKCF1
c2VybmFtZSkgeyBzaG93VG9hc3QoJ05XLUtlbm51bmcgZXJmb3JkZXJsaWNoJywgJ3dhcm5pbmcn
KTsgcmV0dXJuOyB9CiAgICAgICAgdmFyIGRpc3BsYXlOYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2dvdlNVTmFtZScpLnZhbHVlLnRyaW0oKSB8fCB1c2VybmFtZTsKICAgICAgICB2YXIg
b2UgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZ292U1VPRScpLnZhbHVlLnRyaW0oKTsKICAg
ICAgICBpZiAoIXRoaXMuZGF0YS5zdXBlclVzZXJzKSB0aGlzLmRhdGEuc3VwZXJVc2VycyA9IFtd
OwogICAgICAgIHRoaXMuZGF0YS5zdXBlclVzZXJzLnB1c2goeyB1c2VybmFtZTogdXNlcm5hbWUs
IGRvbWFpbjogJyonLCBkaXNwbGF5TmFtZTogZGlzcGxheU5hbWUsIG9yZ2FuaXNhdGlvbnNlaW5o
ZWl0OiBvZSB9KTsKICAgICAgICBjb25zdCBvayA9IGF3YWl0IHRoaXMuc2F2ZUdvdmVybmFuY2Uo
KTsKICAgICAgICBpZiAob2sgPT09IGZhbHNlKSB7CiAgICAgICAgICAgIHRoaXMuZGF0YS5zdXBl
clVzZXJzLnBvcCgpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIHRoaXMu
cmVuZGVyQWRtaW4oKTsKICAgICAgICBzaG93VG9hc3QoZGlzcGxheU5hbWUgKyAnIGFscyBTdXBl
clVzZXIgaGluenVnZWbDvGd0JywgJ3N1Y2Nlc3MnKTsKICAgIH0sCgogICAgYXN5bmMgcmVtb3Zl
U3VwZXJVc2VyKGluZGV4KSB7CiAgICAgICAgaWYgKHRoaXMuZGF0YS5zdXBlclVzZXJzLmxlbmd0
aCA8PSAxKSB7IHNob3dUb2FzdCgnTWluZGVzdGVucyBlaW4gU3VwZXJVc2VyIGVyZm9yZGVybGlj
aCcsICd3YXJuaW5nJyk7IHJldHVybjsgfQogICAgICAgIGlmICghY29uZmlybSgnU3VwZXJVc2Vy
IHdpcmtsaWNoIGVudGZlcm5lbj8nKSkgcmV0dXJuOwogICAgICAgIGNvbnN0IGJhY2t1cCA9IHRo
aXMuZGF0YS5zdXBlclVzZXJzW2luZGV4XTsKICAgICAgICB0aGlzLmRhdGEuc3VwZXJVc2Vycy5z
cGxpY2UoaW5kZXgsIDEpOwogICAgICAgIGNvbnN0IG9rID0gYXdhaXQgdGhpcy5zYXZlR292ZXJu
YW5jZSgpOwogICAgICAgIGlmIChvayA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgdGhpcy5kYXRh
LnN1cGVyVXNlcnMuc3BsaWNlKGluZGV4LCAwLCBiYWNrdXApOwogICAgICAgICAgICByZXR1cm47
CiAgICAgICAgfQogICAgICAgIHRoaXMucmVuZGVyQWRtaW4oKTsKICAgICAgICBzaG93VG9hc3Qo
J1N1cGVyVXNlciBlbnRmZXJudCcsICdzdWNjZXNzJyk7CiAgICB9LAoKICAgIGFzeW5jIGFkZEZh
Y2hhdWZzaWNodCgpIHsKICAgICAgICB2YXIgdXNlcm5hbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnZ292RkFVc2VyJykudmFsdWUudHJpbSgpOwogICAgICAgIGlmICghdXNlcm5hbWUpIHsg
c2hvd1RvYXN0KCdOVy1LZW5udW5nIGVyZm9yZGVybGljaCcsICd3YXJuaW5nJyk7IHJldHVybjsg
fQogICAgICAgIHZhciBkaXNwbGF5TmFtZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdnb3ZG
QU5hbWUnKS52YWx1ZS50cmltKCkgfHwgdXNlcm5hbWU7CiAgICAgICAgdmFyIG9lID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2dvdkZBT0UnKS52YWx1ZS50cmltKCk7CiAgICAgICAgaWYgKCF0
aGlzLmRhdGEuZmFjaGF1ZnNpY2h0KSB0aGlzLmRhdGEuZmFjaGF1ZnNpY2h0ID0gW107CiAgICAg
ICAgdGhpcy5kYXRhLmZhY2hhdWZzaWNodC5wdXNoKHsgdXNlcm5hbWU6IHVzZXJuYW1lLCBkb21h
aW46ICcqJywgZGlzcGxheU5hbWU6IGRpc3BsYXlOYW1lLCBvcmdhbmlzYXRpb25zZWluaGVpdDog
b2UgfSk7CiAgICAgICAgY29uc3Qgb2sgPSBhd2FpdCB0aGlzLnNhdmVHb3Zlcm5hbmNlKCk7CiAg
ICAgICAgaWYgKG9rID09PSBmYWxzZSkgewogICAgICAgICAgICB0aGlzLmRhdGEuZmFjaGF1ZnNp
Y2h0LnBvcCgpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIHRoaXMucmVu
ZGVyQWRtaW4oKTsKICAgICAgICBzaG93VG9hc3QoZGlzcGxheU5hbWUgKyAnIGFscyBGYWNoYXVm
c2ljaHQgaGluenVnZWbDvGd0JywgJ3N1Y2Nlc3MnKTsKICAgIH0sCgogICAgYXN5bmMgcmVtb3Zl
RmFjaGF1ZnNpY2h0KGluZGV4KSB7CiAgICAgICAgaWYgKCFjb25maXJtKCdGYWNoYXVmc2ljaHQg
d2lya2xpY2ggZW50ZmVybmVuPycpKSByZXR1cm47CiAgICAgICAgY29uc3QgYmFja3VwID0gdGhp
cy5kYXRhLmZhY2hhdWZzaWNodFtpbmRleF07CiAgICAgICAgdGhpcy5kYXRhLmZhY2hhdWZzaWNo
dC5zcGxpY2UoaW5kZXgsIDEpOwogICAgICAgIGNvbnN0IG9rID0gYXdhaXQgdGhpcy5zYXZlR292
ZXJuYW5jZSgpOwogICAgICAgIGlmIChvayA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgdGhpcy5k
YXRhLmZhY2hhdWZzaWNodC5zcGxpY2UoaW5kZXgsIDAsIGJhY2t1cCk7CiAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICB9CiAgICAgICAgdGhpcy5yZW5kZXJBZG1pbigpOwogICAgICAgIHNob3dU
b2FzdCgnRmFjaGF1ZnNpY2h0IGVudGZlcm50JywgJ3N1Y2Nlc3MnKTsKICAgIH0sCgogICAgYXN5
bmMgYWRkQ2F0ZWdvcnkoKSB7CiAgICAgICAgdmFyIGlucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2dvdk5ld0NhdCcpOwogICAgICAgIHZhciBuYW1lID0gaW5wdXQudmFsdWUudHJpbSgp
OwogICAgICAgIGlmICghbmFtZSkgcmV0dXJuOwogICAgICAgIGlmIChEcml2ZUZTLmNvbmZpZy5r
YXRlZ29yaWVuLmluY2x1ZGVzKG5hbWUpKSB7CiAgICAgICAgICAgIHNob3dUb2FzdCgnS2F0ZWdv
cmllIGV4aXN0aWVydCBiZXJlaXRzJywgJ3dhcm5pbmcnKTsKICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgIH0KICAgICAgICBEcml2ZUZTLmNvbmZpZy5rYXRlZ29yaWVuLnB1c2gobmFtZSk7CiAg
ICAgICAgRHJpdmVGUy5zb3J0S2F0ZWdvcmllbigpOwoKICAgICAgICAvLyAxLiBDb25maWcgc3Bl
aWNoZXJuCiAgICAgICAgY29uc3Qgb2sgPSBhd2FpdCB0aGlzLnNhdmVDb25maWcoKTsKICAgICAg
ICBpZiAob2sgPT09IGZhbHNlKSB7CiAgICAgICAgICAgIHZhciBybUlkeCA9IERyaXZlRlMuY29u
ZmlnLmthdGVnb3JpZW4uaW5kZXhPZihuYW1lKTsKICAgICAgICAgICAgaWYgKHJtSWR4ID49IDAp
IERyaXZlRlMuY29uZmlnLmthdGVnb3JpZW4uc3BsaWNlKHJtSWR4LCAxKTsKICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgLy8gMi4gT3JkbmVyIGVyc3RlbGxlbjogZGF0YS9b
S2F0ZWdvcmllXS8KICAgICAgICB0cnkgewogICAgICAgICAgICBpZiAoRHJpdmVGUy5tb2RlID09
PSAnc2VydmVyJykgewogICAgICAgICAgICAgICAgdmFyIHBsYWNlaG9sZGVyID0geyBfcGxhY2Vo
b2xkZXI6IHRydWUgfTsKICAgICAgICAgICAgICAgIGF3YWl0IGZldGNoKCcvYXBpL3dyaXRlJywg
eyBtZXRob2Q6ICdQT1NUJywgaGVhZGVyczogeydDb250ZW50LVR5cGUnOidhcHBsaWNhdGlvbi9q
c29uOyBjaGFyc2V0PXV0Zi04J30sCiAgICAgICAgICAgICAgICAgICAgYm9keTogSlNPTi5zdHJp
bmdpZnkoeyBwYXRoOiAnZGF0YS8nICsgbmFtZSArICcvX2luaXQuanNvbicsIGRhdGE6IHBsYWNl
aG9sZGVyIH0pIH0pOwogICAgICAgICAgICAgICAgYXdhaXQgZmV0Y2goJy9hcGkvZGVsZXRlJywg
eyBtZXRob2Q6ICdQT1NUJywgaGVhZGVyczogeydDb250ZW50LVR5cGUnOidhcHBsaWNhdGlvbi9q
c29uOyBjaGFyc2V0PXV0Zi04J30sCiAgICAgICAgICAgICAgICAgICAgYm9keTogSlNPTi5zdHJp
bmdpZnkoeyBwYXRoOiAnZGF0YS8nICsgbmFtZSArICcvX2luaXQuanNvbicgfSkgfSk7CiAgICAg
ICAgICAgIH0gZWxzZSBpZiAoRHJpdmVGUy5tb2RlID09PSAnZmlsZXN5c3RlbScgJiYgRHJpdmVG
Uy5fZGF0YUhhbmRsZSkgewogICAgICAgICAgICAgICAgYXdhaXQgRHJpdmVGUy5fZGF0YUhhbmRs
ZS5nZXREaXJlY3RvcnlIYW5kbGUobmFtZSwgeyBjcmVhdGU6IHRydWUgfSk7CiAgICAgICAgICAg
IH0KICAgICAgICB9IGNhdGNoKGUpIHsgY29uc29sZS53YXJuKCdPcmRuZXItRXJzdGVsbHVuZzon
LCBlKTsgfQoKICAgICAgICAvLyAzLiBVSSBrb21wbGV0dCBha3R1YWxpc2llcmVuCiAgICAgICAg
aW5wdXQudmFsdWUgPSAnJzsKICAgICAgICBEcml2ZVBvcnRhbC5zZXR1cEZpbHRlcnMoKTsKICAg
ICAgICBEcml2ZVBvcnRhbC5yZW5kZXIoKTsKICAgICAgICBpZiAodGhpcy50YWJsZVZpZXdBY3Rp
dmUpIERyaXZlUG9ydGFsLnJlbmRlclRhYmxlVmlldygpOwogICAgICAgIHRoaXMucmVuZGVyQWRt
aW4oKTsKICAgICAgICBzaG93VG9hc3QoJ0thdGVnb3JpZSAiJyArIG5hbWUgKyAnIiBoaW56dWdl
ZsO8Z3QnLCAnc3VjY2VzcycpOwogICAgfSwKCiAgICBhc3luYyByZW1vdmVDYXRlZ29yeShpbmRl
eCkgewogICAgICAgIHZhciBrYXQgPSBEcml2ZUZTLmNvbmZpZy5rYXRlZ29yaWVuW2luZGV4XTsK
ICAgICAgICB2YXIgZG9jQ291bnQgPSBEcml2ZUZTLmRvY3VtZW50cy5maWx0ZXIoZnVuY3Rpb24o
ZCl7IHJldHVybiBkLmthdGVnb3JpZSA9PT0ga2F0OyB9KS5sZW5ndGg7CiAgICAgICAgaWYgKGRv
Y0NvdW50ID4gMCkgewogICAgICAgICAgICBpZiAoIWNvbmZpcm0oJ0RpZSBLYXRlZ29yaWUgIicg
KyBrYXQgKyAnIiBlbnRow6RsdCAnICsgZG9jQ291bnQgKyAnIERva3VtZW50KGUpLlxuV2lya2xp
Y2ggZW50ZmVybmVuPyBEaWUgRG9rdW1lbnRlIGJlaGFsdGVuIGlocmUgS2F0ZWdvcmllLicpKSBy
ZXR1cm47CiAgICAgICAgfQogICAgICAgIERyaXZlRlMuY29uZmlnLmthdGVnb3JpZW4uc3BsaWNl
KGluZGV4LCAxKTsKICAgICAgICBjb25zdCBvayA9IGF3YWl0IHRoaXMuc2F2ZUNvbmZpZygpOwog
ICAgICAgIGlmIChvayA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgRHJpdmVGUy5jb25maWcua2F0
ZWdvcmllbi5zcGxpY2UoaW5kZXgsIDAsIGthdCk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICB9CiAgICAgICAgRHJpdmVQb3J0YWwuc2V0dXBGaWx0ZXJzKCk7CiAgICAgICAgRHJpdmVQb3J0
YWwucmVuZGVyKCk7CiAgICAgICAgaWYgKERyaXZlUG9ydGFsLnRhYmxlVmlld0FjdGl2ZSkgRHJp
dmVQb3J0YWwucmVuZGVyVGFibGVWaWV3KCk7CiAgICAgICAgdGhpcy5yZW5kZXJBZG1pbigpOwog
ICAgICAgIHNob3dUb2FzdCgnS2F0ZWdvcmllICInICsga2F0ICsgJyIgZW50ZmVybnQnLCAnc3Vj
Y2VzcycpOwogICAgfSwKCiAgICBhc3luYyBoaWRlQ2F0ZWdvcnkoaW5kZXgpIHsKICAgICAgICB2
YXIga2F0ID0gRHJpdmVGUy5jb25maWcua2F0ZWdvcmllbltpbmRleF07CiAgICAgICAgaWYgKCFE
cml2ZUZTLmNvbmZpZy5oaWRkZW5LYXRlZ29yaWVuKSBEcml2ZUZTLmNvbmZpZy5oaWRkZW5LYXRl
Z29yaWVuID0gW107CiAgICAgICAgaWYgKCFEcml2ZUZTLmNvbmZpZy5oaWRkZW5LYXRlZ29yaWVu
LmluY2x1ZGVzKGthdCkpIHsKICAgICAgICAgICAgRHJpdmVGUy5jb25maWcuaGlkZGVuS2F0ZWdv
cmllbi5wdXNoKGthdCk7CiAgICAgICAgfQogICAgICAgIGNvbnN0IG9rID0gYXdhaXQgdGhpcy5z
YXZlQ29uZmlnKCk7CiAgICAgICAgaWYgKG9rID09PSBmYWxzZSkgewogICAgICAgICAgICBEcml2
ZUZTLmNvbmZpZy5oaWRkZW5LYXRlZ29yaWVuID0gRHJpdmVGUy5jb25maWcuaGlkZGVuS2F0ZWdv
cmllbi5maWx0ZXIoZnVuY3Rpb24oayl7IHJldHVybiBrICE9PSBrYXQ7IH0pOwogICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgfQogICAgICAgIERyaXZlUG9ydGFsLnNldHVwRmlsdGVycygpOwog
ICAgICAgIERyaXZlUG9ydGFsLnJlbmRlcigpOwogICAgICAgIGlmIChEcml2ZVBvcnRhbC50YWJs
ZVZpZXdBY3RpdmUpIERyaXZlUG9ydGFsLnJlbmRlclRhYmxlVmlldygpOwogICAgICAgIHRoaXMu
cmVuZGVyQWRtaW4oKTsKICAgICAgICBzaG93VG9hc3QoJ0thdGVnb3JpZSAiJyArIGthdCArICci
IGF1c2dlYmxlbmRldCcsICdzdWNjZXNzJyk7CiAgICB9LAoKICAgIGFzeW5jIHNob3dDYXRlZ29y
eShpbmRleCkgewogICAgICAgIHZhciBrYXQgPSBEcml2ZUZTLmNvbmZpZy5rYXRlZ29yaWVuW2lu
ZGV4XTsKICAgICAgICBpZiAoIURyaXZlRlMuY29uZmlnLmhpZGRlbkthdGVnb3JpZW4pIHJldHVy
bjsKICAgICAgICBEcml2ZUZTLmNvbmZpZy5oaWRkZW5LYXRlZ29yaWVuID0gRHJpdmVGUy5jb25m
aWcuaGlkZGVuS2F0ZWdvcmllbi5maWx0ZXIoZnVuY3Rpb24oayl7IHJldHVybiBrICE9PSBrYXQ7
IH0pOwogICAgICAgIGNvbnN0IG9rID0gYXdhaXQgdGhpcy5zYXZlQ29uZmlnKCk7CiAgICAgICAg
aWYgKG9rID09PSBmYWxzZSkgewogICAgICAgICAgICBEcml2ZUZTLmNvbmZpZy5oaWRkZW5LYXRl
Z29yaWVuLnB1c2goa2F0KTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBE
cml2ZVBvcnRhbC5zZXR1cEZpbHRlcnMoKTsKICAgICAgICBEcml2ZVBvcnRhbC5yZW5kZXIoKTsK
ICAgICAgICBpZiAoRHJpdmVQb3J0YWwudGFibGVWaWV3QWN0aXZlKSBEcml2ZVBvcnRhbC5yZW5k
ZXJUYWJsZVZpZXcoKTsKICAgICAgICB0aGlzLnJlbmRlckFkbWluKCk7CiAgICAgICAgc2hvd1Rv
YXN0KCdLYXRlZ29yaWUgIicgKyBrYXQgKyAnIiB3aWVkZXIgZWluZ2VibGVuZGV0JywgJ3N1Y2Nl
c3MnKTsKICAgIH0sCgogICAgYXN5bmMgZWRpdFN0YXJ0c2VpdGUoKSB7CiAgICAgICAgdGhpcy5j
bG9zZUFkbWluKCk7CiAgICAgICAgLy8gQWt0dWVsbGVuIFN0YXJ0c2VpdGVuLUluaGFsdCBsYWRl
bgogICAgICAgIHZhciB3ZWxjb21lRWwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcud2VsY29t
ZS1jb250ZW50Jyk7CiAgICAgICAgdmFyIGNvbnRlbnQgPSB3ZWxjb21lRWwgPyB3ZWxjb21lRWwu
aW5uZXJIVE1MIDogJyc7CgogICAgICAgIC8vIEdlc3BlaWNoZXJ0ZW4gSW5oYWx0IGF1cyBEYXRl
aSBsYWRlbiAoZmFsbHMgdm9yaGFuZGVuKQogICAgICAgIHRyeSB7CiAgICAgICAgICAgIGlmIChE
cml2ZUZTLm1vZGUgPT09ICdzZXJ2ZXInKSB7CiAgICAgICAgICAgICAgICB2YXIgcmVzID0gYXdh
aXQgZmV0Y2goJy9kYXRhLy5zdGFydHNlaXRlLmh0bWwnKTsKICAgICAgICAgICAgICAgIGlmIChy
ZXMub2spIGNvbnRlbnQgPSBhd2FpdCByZXMudGV4dCgpOwogICAgICAgICAgICB9IGVsc2UgaWYg
KERyaXZlRlMubW9kZSA9PT0gJ3N0YXRpYycpIHsKICAgICAgICAgICAgICAgIHZhciByZXMyID0g
YXdhaXQgZmV0Y2goJ2RhdGEvLnN0YXJ0c2VpdGUuaHRtbCcpOwogICAgICAgICAgICAgICAgaWYg
KHJlczIub2spIGNvbnRlbnQgPSBhd2FpdCByZXMyLnRleHQoKTsKICAgICAgICAgICAgfSBlbHNl
IGlmIChEcml2ZUZTLm1vZGUgPT09ICdmaWxlc3lzdGVtJyAmJiBEcml2ZUZTLl9kYXRhSGFuZGxl
KSB7CiAgICAgICAgICAgICAgICB2YXIgZmggPSBhd2FpdCBEcml2ZUZTLl9kYXRhSGFuZGxlLmdl
dEZpbGVIYW5kbGUoJy5zdGFydHNlaXRlLmh0bWwnKTsKICAgICAgICAgICAgICAgIHZhciBmaWxl
ID0gYXdhaXQgZmguZ2V0RmlsZSgpOwogICAgICAgICAgICAgICAgY29udGVudCA9IGF3YWl0IGZp
bGUudGV4dCgpOwogICAgICAgICAgICB9CiAgICAgICAgfSBjYXRjaChlKSB7fQoKICAgICAgICAv
LyBFZGl0b3Igb2VmZm5lbiBtaXQgU3RhcnRzZWl0ZW4tSW5oYWx0CiAgICAgICAgRHJpdmVFZGl0
b3IuaXNOZXcgPSBmYWxzZTsKICAgICAgICBEcml2ZUVkaXRvci5faXNTdGFydHNlaXRlID0gdHJ1
ZTsKICAgICAgICBEcml2ZUVkaXRvci5jdXJyZW50RG9jID0gewogICAgICAgICAgICBpZDogJ19z
dGFydHNlaXRlJywKICAgICAgICAgICAgdGl0ZWw6ICdTdGFydHNlaXRlJywKICAgICAgICAgICAg
a2F0ZWdvcmllOiAnJywKICAgICAgICAgICAgaW5oYWx0OiBjb250ZW50LAogICAgICAgICAgICBz
dGF0dXM6ICcnLAogICAgICAgICAgICBtZWRpYXM6IFtdCiAgICAgICAgfTsKICAgICAgICBEcml2
ZUVkaXRvci5vcGVuTW9kYWwoJ1N0YXJ0c2VpdGUgYmVhcmJlaXRlbicpOwogICAgICAgIC8vIEth
dGVnb3JpZS9TdGF0dXMvTWV0YS1GZWxkZXIgYXVzYmxlbmRlbiAobmljaHQgcmVsZXZhbnQgZnVl
ciBTdGFydHNlaXRlKQogICAgICAgIHZhciBtZXRhUm93cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0
b3JBbGwoJy5lZGl0b3ItbWV0YS1yb3cnKTsKICAgICAgICBtZXRhUm93cy5mb3JFYWNoKGZ1bmN0
aW9uKHJvdykgeyByb3cuc3R5bGUuZGlzcGxheSA9ICdub25lJzsgfSk7CiAgICB9LAoKICAgIGFz
eW5jIHNhdmVTdGFydHNlaXRlKGNvbnRlbnQpIHsKICAgICAgICBpZiAoRHJpdmVGUy5tb2RlID09
PSAnc2VydmVyJykgewogICAgICAgICAgICBhd2FpdCBmZXRjaCgnL2FwaS93cml0ZScsIHsgbWV0
aG9kOiAnUE9TVCcsIGhlYWRlcnM6IHsnQ29udGVudC1UeXBlJzonYXBwbGljYXRpb24vanNvbjsg
Y2hhcnNldD11dGYtOCd9LAogICAgICAgICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoeyBw
YXRoOiAnZGF0YS8uc3RhcnRzZWl0ZS5odG1sJywgZGF0YTogY29udGVudCB9KSB9KTsKICAgICAg
ICB9IGVsc2UgaWYgKERyaXZlRlMubW9kZSA9PT0gJ2ZpbGVzeXN0ZW0nICYmIERyaXZlRlMuX2Rh
dGFIYW5kbGUpIHsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgIHZhciBmaCA9IGF3
YWl0IERyaXZlRlMuX2RhdGFIYW5kbGUuZ2V0RmlsZUhhbmRsZSgnLnN0YXJ0c2VpdGUuaHRtbCcs
IHsgY3JlYXRlOiB0cnVlIH0pOwogICAgICAgICAgICAgICAgdmFyIHdyaXRhYmxlID0gYXdhaXQg
ZmguY3JlYXRlV3JpdGFibGUoKTsKICAgICAgICAgICAgICAgIGF3YWl0IHdyaXRhYmxlLndyaXRl
KGNvbnRlbnQpOwogICAgICAgICAgICAgICAgYXdhaXQgd3JpdGFibGUuY2xvc2UoKTsKICAgICAg
ICAgICAgfSBjYXRjaChlKSB7fQogICAgICAgIH0KICAgICAgICAvLyBTdGFydHNlaXRlIGltIERP
TSBha3R1YWxpc2llcmVuICsgQ2FjaGUgZnVlciBzaG93SG9tZSgpIGVybmV1ZXJuCiAgICAgICAg
dmFyIHdlbGNvbWVFbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy53ZWxjb21lLWNvbnRlbnQn
KTsKICAgICAgICBpZiAod2VsY29tZUVsKSB7CiAgICAgICAgICAgIHdlbGNvbWVFbC5pbm5lckhU
TUwgPSB0aGlzLl9zYW5pdGl6ZUhUTUwoY29udGVudCk7CiAgICAgICAgICAgIERyaXZlUG9ydGFs
Ll93ZWxjb21lSFRNTCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkb2N1bWVudERldGFpbCcp
LmlubmVySFRNTDsKICAgICAgICB9CiAgICAgICAgc2hvd1RvYXN0KCdTdGFydHNlaXRlIGdlc3Bl
aWNoZXJ0JywgJ3N1Y2Nlc3MnKTsKICAgICAgICAvLyBpbmRleC5qcyBmdWVyIExlc2Vtb2R1cyBh
a3R1YWxpc2llcmVuIChTdGFydHNlaXRlIGlzdCBkYXJpbiBlaW5nZWJldHRldCkKICAgICAgICBh
d2FpdCBEcml2ZUZTLnVwZGF0ZUluZGV4KCk7CiAgICB9LAoKICAgIGFzeW5jIGxvYWRTdGFydHNl
aXRlKCkgewogICAgICAgIHRyeSB7CiAgICAgICAgICAgIHZhciByYXcgPSBudWxsOwogICAgICAg
ICAgICBpZiAoRHJpdmVGUy5tb2RlID09PSAnc2VydmVyJykgewogICAgICAgICAgICAgICAgdmFy
IHJlcyA9IGF3YWl0IGZldGNoKCcvZGF0YS8uc3RhcnRzZWl0ZS5odG1sJyk7CiAgICAgICAgICAg
ICAgICBpZiAocmVzLm9rKSByYXcgPSBhd2FpdCByZXMudGV4dCgpOwogICAgICAgICAgICB9IGVs
c2UgaWYgKERyaXZlRlMubW9kZSA9PT0gJ3N0YXRpYycpIHsKICAgICAgICAgICAgICAgIHZhciBy
ZXMyID0gYXdhaXQgZmV0Y2goJ2RhdGEvLnN0YXJ0c2VpdGUuaHRtbCcpOwogICAgICAgICAgICAg
ICAgaWYgKHJlczIub2spIHJhdyA9IGF3YWl0IHJlczIudGV4dCgpOwogICAgICAgICAgICB9IGVs
c2UgaWYgKERyaXZlRlMubW9kZSA9PT0gJ2ZpbGVzeXN0ZW0nICYmIERyaXZlRlMuX2RhdGFIYW5k
bGUpIHsKICAgICAgICAgICAgICAgIHZhciBmaCA9IGF3YWl0IERyaXZlRlMuX2RhdGFIYW5kbGUu
Z2V0RmlsZUhhbmRsZSgnLnN0YXJ0c2VpdGUuaHRtbCcpOwogICAgICAgICAgICAgICAgdmFyIGZp
bGUgPSBhd2FpdCBmaC5nZXRGaWxlKCk7CiAgICAgICAgICAgICAgICByYXcgPSBhd2FpdCBmaWxl
LnRleHQoKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAocmF3ICYmIHJhdy5sZW5ndGgg
PiAxMCkgewogICAgICAgICAgICAgICAgdmFyIHdlbGNvbWVFbCA9IGRvY3VtZW50LnF1ZXJ5U2Vs
ZWN0b3IoJy53ZWxjb21lLWNvbnRlbnQnKTsKICAgICAgICAgICAgICAgIGlmICh3ZWxjb21lRWwp
IHsKICAgICAgICAgICAgICAgICAgICB3ZWxjb21lRWwuaW5uZXJIVE1MID0gdGhpcy5fc2FuaXRp
emVIVE1MKHJhdyk7CiAgICAgICAgICAgICAgICAgICAgLy8gQ2FjaGUgYWt0dWFsaXNpZXJlbiwg
ZGFtaXQgc2hvd0hvbWUoKSBkZW4gZ2VzcGVpY2hlcnRlbiBJbmhhbHQgemVpZ3QKICAgICAgICAg
ICAgICAgICAgICBEcml2ZVBvcnRhbC5fd2VsY29tZUhUTUwgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnZG9jdW1lbnREZXRhaWwnKS5pbm5lckhUTUw7CiAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgIH0KICAgICAgICB9IGNhdGNoKGUpIHt9CiAgICB9LAoKICAgIGFzeW5jIHNhdmVIZWxw
Q29udGVudCgpIHsKICAgICAgICB2YXIgY29udGVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdoZWxwQm9keScpLmlubmVySFRNTDsKICAgICAgICAvLyBQZXJzaXN0aWVyZW4gYWxzIGRhdGEv
LmhlbHAtY29udGVudC5odG1sCiAgICAgICAgaWYgKERyaXZlRlMubW9kZSA9PT0gJ3NlcnZlcicp
IHsKICAgICAgICAgICAgYXdhaXQgZmV0Y2goJy9hcGkvd3JpdGUnLCB7IG1ldGhvZDogJ1BPU1Qn
LCBoZWFkZXJzOiB7J0NvbnRlbnQtVHlwZSc6J2FwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9dXRm
LTgnfSwKICAgICAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHsgcGF0aDogJ2RhdGEv
LmhlbHAtY29udGVudC5odG1sJywgZGF0YTogY29udGVudCB9KSB9KTsKICAgICAgICB9IGVsc2Ug
aWYgKERyaXZlRlMubW9kZSA9PT0gJ2ZpbGVzeXN0ZW0nICYmIERyaXZlRlMuX2RhdGFIYW5kbGUp
IHsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgIHZhciBmaCA9IGF3YWl0IERyaXZl
RlMuX2RhdGFIYW5kbGUuZ2V0RmlsZUhhbmRsZSgnLmhlbHAtY29udGVudC5odG1sJywgeyBjcmVh
dGU6IHRydWUgfSk7CiAgICAgICAgICAgICAgICB2YXIgd3JpdGFibGUgPSBhd2FpdCBmaC5jcmVh
dGVXcml0YWJsZSgpOwogICAgICAgICAgICAgICAgYXdhaXQgd3JpdGFibGUud3JpdGUoY29udGVu
dCk7CiAgICAgICAgICAgICAgICBhd2FpdCB3cml0YWJsZS5jbG9zZSgpOwogICAgICAgICAgICB9
IGNhdGNoKGUpIHt9CiAgICAgICAgfQogICAgICAgIHNob3dUb2FzdCgnSGlsZmUtSW5oYWx0IGdl
c3BlaWNoZXJ0JywgJ3N1Y2Nlc3MnKTsKICAgIH0sCgogICAgX3Nhbml0aXplSFRNTChodG1sKSB7
CiAgICAgICAgLy8gU2NyaXB0LVRhZ3MsIEV2ZW50LUhhbmRsZXIgdW5kIGdlZsOkaHJsaWNoZSBB
dHRyaWJ1dGUgZW50ZmVybmVuCiAgICAgICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ2RpdicpOwogICAgICAgIGRpdi5pbm5lckhUTUwgPSBodG1sOwogICAgICAgIGRpdi5xdWVy
eVNlbGVjdG9yQWxsKCdzY3JpcHQsaWZyYW1lLG9iamVjdCxlbWJlZCxmb3JtJykuZm9yRWFjaChm
dW5jdGlvbihlbCl7IGVsLnJlbW92ZSgpOyB9KTsKICAgICAgICBkaXYucXVlcnlTZWxlY3RvckFs
bCgnKicpLmZvckVhY2goZnVuY3Rpb24oZWwpIHsKICAgICAgICAgICAgQXJyYXkuZnJvbShlbC5h
dHRyaWJ1dGVzKS5mb3JFYWNoKGZ1bmN0aW9uKGF0dHIpIHsKICAgICAgICAgICAgICAgIGlmIChh
dHRyLm5hbWUuc3RhcnRzV2l0aCgnb24nKSB8fCBhdHRyLnZhbHVlLnRyaW0oKS50b0xvd2VyQ2Fz
ZSgpLnN0YXJ0c1dpdGgoJ2phdmFzY3JpcHQ6JykpIHsKICAgICAgICAgICAgICAgICAgICBlbC5y
ZW1vdmVBdHRyaWJ1dGUoYXR0ci5uYW1lKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
fSk7CiAgICAgICAgfSk7CiAgICAgICAgcmV0dXJuIGRpdi5pbm5lckhUTUw7CiAgICB9LAoKICAg
IGFzeW5jIGxvYWRIZWxwQ29udGVudCgpIHsKICAgICAgICB0cnkgewogICAgICAgICAgICB2YXIg
cmF3ID0gbnVsbDsKICAgICAgICAgICAgaWYgKERyaXZlRlMubW9kZSA9PT0gJ3NlcnZlcicpIHsK
ICAgICAgICAgICAgICAgIHZhciByZXMgPSBhd2FpdCBmZXRjaCgnL2RhdGEvLmhlbHAtY29udGVu
dC5odG1sJyk7CiAgICAgICAgICAgICAgICBpZiAocmVzLm9rKSByYXcgPSBhd2FpdCByZXMudGV4
dCgpOwogICAgICAgICAgICB9IGVsc2UgaWYgKERyaXZlRlMubW9kZSA9PT0gJ3N0YXRpYycpIHsK
ICAgICAgICAgICAgICAgIHZhciByZXMyID0gYXdhaXQgZmV0Y2goJ2RhdGEvLmhlbHAtY29udGVu
dC5odG1sJyk7CiAgICAgICAgICAgICAgICBpZiAocmVzMi5vaykgcmF3ID0gYXdhaXQgcmVzMi50
ZXh0KCk7CiAgICAgICAgICAgIH0gZWxzZSBpZiAoRHJpdmVGUy5tb2RlID09PSAnZmlsZXN5c3Rl
bScgJiYgRHJpdmVGUy5fZGF0YUhhbmRsZSkgewogICAgICAgICAgICAgICAgdmFyIGZoID0gYXdh
aXQgRHJpdmVGUy5fZGF0YUhhbmRsZS5nZXRGaWxlSGFuZGxlKCcuaGVscC1jb250ZW50Lmh0bWwn
KTsKICAgICAgICAgICAgICAgIHZhciBmaWxlID0gYXdhaXQgZmguZ2V0RmlsZSgpOwogICAgICAg
ICAgICAgICAgcmF3ID0gYXdhaXQgZmlsZS50ZXh0KCk7CiAgICAgICAgICAgIH0KICAgICAgICAg
ICAgaWYgKHJhdyAmJiByYXcubGVuZ3RoID4gMTApIHsKICAgICAgICAgICAgICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdoZWxwQm9keScpLmlubmVySFRNTCA9IHRoaXMuX3Nhbml0aXplSFRN
TChyYXcpOwogICAgICAgICAgICB9CiAgICAgICAgfSBjYXRjaChlKSB7fQogICAgfSwKCiAgICBh
c3luYyBzYXZlQ29uZmlnKCkgewogICAgICAgIHRyeSB7CiAgICAgICAgICAgIGlmIChEcml2ZUZT
Lm1vZGUgPT09ICdzZXJ2ZXInKSB7CiAgICAgICAgICAgICAgICBjb25zdCByZXMgPSBhd2FpdCBm
ZXRjaCgnL2FwaS93cml0ZScsIHsKICAgICAgICAgICAgICAgICAgICBtZXRob2Q6ICdQT1NUJywK
ICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRp
b24vanNvbjsgY2hhcnNldD11dGYtOCcgfSwKICAgICAgICAgICAgICAgICAgICBib2R5OiBKU09O
LnN0cmluZ2lmeSh7IHBhdGg6ICdkYXRhL2NvbmZpZy5qc29uJywgZGF0YTogRHJpdmVGUy5jb25m
aWcgfSkKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0g
YXdhaXQgcmVzLmpzb24oKTsKICAgICAgICAgICAgICAgIGlmICghcmVzdWx0Lm9rKSB7CiAgICAg
ICAgICAgICAgICAgICAgc2hvd1RvYXN0KCdLb25maWd1cmF0aW9uIHNwZWljaGVybiBmZWhsZ2Vz
Y2hsYWdlbjogJyArIChyZXN1bHQuZXJyb3IgfHwgJ1VuYmVrYW5udGVyIEZlaGxlcicpLCAnZXJy
b3InLCA1MDAwKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgIH0gZWxzZSBpZiAoRHJpdmVGUy5tb2RlID09PSAnZmlsZXN5c3Rl
bScgJiYgRHJpdmVGUy5fZGF0YUhhbmRsZSkgewogICAgICAgICAgICAgICAgdmFyIGZoID0gYXdh
aXQgRHJpdmVGUy5fZGF0YUhhbmRsZS5nZXRGaWxlSGFuZGxlKCdjb25maWcuanNvbicsIHsgY3Jl
YXRlOiB0cnVlIH0pOwogICAgICAgICAgICAgICAgdmFyIHdyaXRhYmxlID0gYXdhaXQgZmguY3Jl
YXRlV3JpdGFibGUoKTsKICAgICAgICAgICAgICAgIGF3YWl0IHdyaXRhYmxlLndyaXRlKEpTT04u
c3RyaW5naWZ5KERyaXZlRlMuY29uZmlnLCBudWxsLCAyKSk7CiAgICAgICAgICAgICAgICBhd2Fp
dCB3cml0YWJsZS5jbG9zZSgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgIH0gY2F0Y2ggKGVycikgewogICAgICAgICAgICBzaG93VG9hc3QoJ0tvbmZpZ3Vy
YXRpb24gc3BlaWNoZXJuIGZlaGxnZXNjaGxhZ2VuOiAnICsgZXJyLm1lc3NhZ2UsICdlcnJvcics
IDUwMDApOwogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgfSwKCiAgICBf
ZW5nYWdlbWVudFNvcnQ6ICd0b3RhbCcsCiAgICBfZW5nYWdlbWVudENhdDogJ2FsbCcsCgogICAg
c2hvd0VuZ2FnZW1lbnRTdGF0cyhzb3J0QnksIGZpbHRlckNhdCkgewogICAgICAgIHRoaXMuY2xv
c2VBZG1pbigpOwogICAgICAgIGlmIChzb3J0QnkpIHRoaXMuX2VuZ2FnZW1lbnRTb3J0ID0gc29y
dEJ5OwogICAgICAgIGlmIChmaWx0ZXJDYXQgIT09IHVuZGVmaW5lZCkgdGhpcy5fZW5nYWdlbWVu
dENhdCA9IGZpbHRlckNhdDsKICAgICAgICB2YXIgc29ydCA9IHRoaXMuX2VuZ2FnZW1lbnRTb3J0
OwogICAgICAgIHZhciBjYXRGaWx0ZXIgPSB0aGlzLl9lbmdhZ2VtZW50Q2F0OwogICAgICAgIHZh
ciBkb2NzID0gRHJpdmVGUy5kb2N1bWVudHM7CiAgICAgICAgdmFyIGthdGVnb3JpZW4gPSBEcml2
ZUZTLmNvbmZpZy5rYXRlZ29yaWVuIHx8IFtdOwogICAgICAgIHZhciB0b3RhbERvY3MgPSBkb2Nz
Lmxlbmd0aDsKICAgICAgICB2YXIgdG90YWxGcmVpZ2VnZWJlbiA9IGRvY3MuZmlsdGVyKGZ1bmN0
aW9uKGQpeyByZXR1cm4gZC5zdGF0dXMgPT09ICdGcmVpZ2VnZWJlbic7IH0pLmxlbmd0aDsKICAg
ICAgICB2YXIgdG90YWxQcnVlZnVuZyA9IGRvY3MuZmlsdGVyKGZ1bmN0aW9uKGQpeyByZXR1cm4g
ZC5zdGF0dXMgPT09ICdQcsO8ZnVuZyc7IH0pLmxlbmd0aDsKICAgICAgICB2YXIgdG90YWxFbnR3
dXJmID0gZG9jcy5maWx0ZXIoZnVuY3Rpb24oZCl7IHJldHVybiBkLnN0YXR1cyA9PT0gJ0VudHd1
cmYnOyB9KS5sZW5ndGg7CiAgICAgICAgdmFyIHRvdGFsV2l0aE1lZGlhID0gZG9jcy5maWx0ZXIo
ZnVuY3Rpb24oZCl7IHJldHVybiBkLm1lZGlhcyAmJiBkLm1lZGlhcy5sZW5ndGggPiAwOyB9KS5s
ZW5ndGg7CgogICAgICAgIC8vIFVzZXItQmVpdHLDpGdlIHrDpGhsZW4g4oCTIGF1Zmdlc2NobMO8
c3NlbHQgbmFjaCBLYXRlZ29yaWUKICAgICAgICB2YXIgdXNlclN0YXRzID0ge307CiAgICAgICAg
ZG9jcy5mb3JFYWNoKGZ1bmN0aW9uKGRvYykgewogICAgICAgICAgICB2YXIga2F0ID0gZG9jLmth
dGVnb3JpZSB8fCAnU29uc3RpZ2UnOwogICAgICAgICAgICBmdW5jdGlvbiBlbnN1cmUobmFtZSkg
ewogICAgICAgICAgICAgICAgaWYgKCF1c2VyU3RhdHNbbmFtZV0pIHVzZXJTdGF0c1tuYW1lXSA9
IHsgY3JlYXRlZDogMCwgZWRpdGVkOiAwLCByZXZpZXdzOiAwLCBrYXRlZ29yaWVuOiB7fSB9Owog
ICAgICAgICAgICAgICAgaWYgKCF1c2VyU3RhdHNbbmFtZV0ua2F0ZWdvcmllbltrYXRdKSB1c2Vy
U3RhdHNbbmFtZV0ua2F0ZWdvcmllbltrYXRdID0geyBjcmVhdGVkOiAwLCBlZGl0ZWQ6IDAsIHJl
dmlld3M6IDAgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoZG9jLmVyc3RlbGx0Vm9u
KSB7CiAgICAgICAgICAgICAgICBlbnN1cmUoZG9jLmVyc3RlbGx0Vm9uKTsKICAgICAgICAgICAg
ICAgIHVzZXJTdGF0c1tkb2MuZXJzdGVsbHRWb25dLmNyZWF0ZWQrKzsKICAgICAgICAgICAgICAg
IHVzZXJTdGF0c1tkb2MuZXJzdGVsbHRWb25dLmthdGVnb3JpZW5ba2F0XS5jcmVhdGVkKys7CiAg
ICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGRvYy5iZWFyYmVpdGV0Vm9uICYmIGRvYy5iZWFy
YmVpdGV0Vm9uICE9PSBkb2MuZXJzdGVsbHRWb24pIHsKICAgICAgICAgICAgICAgIGVuc3VyZShk
b2MuYmVhcmJlaXRldFZvbik7CiAgICAgICAgICAgICAgICB1c2VyU3RhdHNbZG9jLmJlYXJiZWl0
ZXRWb25dLmVkaXRlZCsrOwogICAgICAgICAgICAgICAgdXNlclN0YXRzW2RvYy5iZWFyYmVpdGV0
Vm9uXS5rYXRlZ29yaWVuW2thdF0uZWRpdGVkKys7CiAgICAgICAgICAgIH0KICAgICAgICAgICAg
KGRvYy5jb250cmlidXRvcnMgfHwgW10pLmZvckVhY2goZnVuY3Rpb24oYykgewogICAgICAgICAg
ICAgICAgZW5zdXJlKGMudXNlcm5hbWUpOwogICAgICAgICAgICAgICAgaWYgKGMucm9sZSA9PT0g
J3JldmlldycpIHsKICAgICAgICAgICAgICAgICAgICB1c2VyU3RhdHNbYy51c2VybmFtZV0ucmV2
aWV3cyArPSAoYy5lbnRyaWVzIHx8IDEpOwogICAgICAgICAgICAgICAgICAgIHVzZXJTdGF0c1tj
LnVzZXJuYW1lXS5rYXRlZ29yaWVuW2thdF0ucmV2aWV3cyArPSAoYy5lbnRyaWVzIHx8IDEpOwog
ICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjLnJvbGUgPT09ICdhdXRvcicpIHsKICAgICAgICAg
ICAgICAgICAgICB1c2VyU3RhdHNbYy51c2VybmFtZV0uY3JlYXRlZCArPSAoYy5lbnRyaWVzIHx8
IDEpIC0gMTsgLy8gLTEgd2VpbCBlcnN0ZWxsdFZvbiBzY2hvbiB6w6RobHQKICAgICAgICAgICAg
ICAgICAgICB1c2VyU3RhdHNbYy51c2VybmFtZV0ua2F0ZWdvcmllbltrYXRdLmNyZWF0ZWQgKz0g
KGMuZW50cmllcyB8fCAxKSAtIDE7CiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGMucm9sZSA9
PT0gJ3JlZGFrdGlvbicpIHsKICAgICAgICAgICAgICAgICAgICB1c2VyU3RhdHNbYy51c2VybmFt
ZV0uZWRpdGVkICs9IChjLmVudHJpZXMgfHwgMSk7CiAgICAgICAgICAgICAgICAgICAgdXNlclN0
YXRzW2MudXNlcm5hbWVdLmthdGVnb3JpZW5ba2F0XS5lZGl0ZWQgKz0gKGMuZW50cmllcyB8fCAx
KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIHZhciBnb3Yg
PSBkb2MuZ292ZXJuYW5jZSB8fCB7fTsKICAgICAgICAgICAgKGdvdi5yZXZpZXdIaXN0b3J5IHx8
IFtdKS5mb3JFYWNoKGZ1bmN0aW9uKHIpIHsKICAgICAgICAgICAgICAgIGlmIChyLnJldmlld2Vy
KSB7CiAgICAgICAgICAgICAgICAgICAgZW5zdXJlKHIucmV2aWV3ZXIpOwogICAgICAgICAgICAg
ICAgICAgIHVzZXJTdGF0c1tyLnJldmlld2VyXS5yZXZpZXdzKys7CiAgICAgICAgICAgICAgICAg
ICAgdXNlclN0YXRzW3IucmV2aWV3ZXJdLmthdGVnb3JpZW5ba2F0XS5yZXZpZXdzKys7CiAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgIH0pOwoKICAgICAgICAvLyBTb3J0
aWVydW5nCiAgICAgICAgdmFyIHNvcnRlZFVzZXJzID0gT2JqZWN0LmVudHJpZXModXNlclN0YXRz
KTsKICAgICAgICB2YXIgZ2V0VmFsID0gZnVuY3Rpb24ocykgewogICAgICAgICAgICB2YXIgZCA9
IHNbMV07CiAgICAgICAgICAgIGlmIChjYXRGaWx0ZXIgIT09ICdhbGwnKSBkID0gZC5rYXRlZ29y
aWVuW2NhdEZpbHRlcl0gfHwgeyBjcmVhdGVkOjAsIGVkaXRlZDowLCByZXZpZXdzOjAgfTsKICAg
ICAgICAgICAgaWYgKHNvcnQgPT09ICdjcmVhdGVkJykgcmV0dXJuIGQuY3JlYXRlZDsKICAgICAg
ICAgICAgaWYgKHNvcnQgPT09ICdlZGl0ZWQnKSByZXR1cm4gZC5lZGl0ZWQ7CiAgICAgICAgICAg
IGlmIChzb3J0ID09PSAncmV2aWV3cycpIHJldHVybiBkLnJldmlld3M7CiAgICAgICAgICAgIHJl
dHVybiBkLmNyZWF0ZWQgKyBkLmVkaXRlZCArIGQucmV2aWV3czsKICAgICAgICB9OwogICAgICAg
IHNvcnRlZFVzZXJzLnNvcnQoZnVuY3Rpb24oYSxiKXsgcmV0dXJuIGdldFZhbChiKSAtIGdldFZh
bChhKTsgfSk7CiAgICAgICAgc29ydGVkVXNlcnMgPSBzb3J0ZWRVc2Vycy5maWx0ZXIoZnVuY3Rp
b24odSl7IHJldHVybiBnZXRWYWwodSkgPiAwOyB9KTsKCiAgICAgICAgLy8gS2F0ZWdvcmllbi1W
ZXJ0ZWlsdW5nCiAgICAgICAgdmFyIGNhdFN0YXRzID0ge307CiAgICAgICAgZG9jcy5mb3JFYWNo
KGZ1bmN0aW9uKGQpIHsgY2F0U3RhdHNbZC5rYXRlZ29yaWVdID0gKGNhdFN0YXRzW2Qua2F0ZWdv
cmllXSB8fCAwKSArIDE7IH0pOwoKICAgICAgICAvLyBTY2hsYWd3b3J0LUjDpHVmaWdrZWl0ZW4K
ICAgICAgICB2YXIga3dTdGF0cyA9IHt9OwogICAgICAgIGRvY3MuZm9yRWFjaChmdW5jdGlvbihk
KSB7IChkLnNjaGxhZ3dvZXJ0ZXIgfHwgW10pLmZvckVhY2goZnVuY3Rpb24oaykgeyBrd1N0YXRz
W2tdID0gKGt3U3RhdHNba10gfHwgMCkgKyAxOyB9KTsgfSk7CiAgICAgICAgdmFyIHRvcEt3cyA9
IE9iamVjdC5lbnRyaWVzKGt3U3RhdHMpLnNvcnQoZnVuY3Rpb24oYSxiKXsgcmV0dXJuIGJbMV0t
YVsxXTsgfSkuc2xpY2UoMCwgMTApOwoKICAgICAgICAvLyBNb25hdGxpY2hlIEVyc3RlbGx1bmcK
ICAgICAgICB2YXIgbW9udGhTdGF0cyA9IHt9OwogICAgICAgIGRvY3MuZm9yRWFjaChmdW5jdGlv
bihkKSB7IHZhciBtID0gKGQuZXJzdGVsbHQgfHwgJycpLnN1YnN0cmluZygwLCA3KTsgaWYgKG0p
IG1vbnRoU3RhdHNbbV0gPSAobW9udGhTdGF0c1ttXSB8fCAwKSArIDE7IH0pOwogICAgICAgIHZh
ciBtb250aHMgPSBPYmplY3QuZW50cmllcyhtb250aFN0YXRzKS5zb3J0KGZ1bmN0aW9uKGEsYil7
IHJldHVybiBhWzBdLmxvY2FsZUNvbXBhcmUoYlswXSk7IH0pOwoKICAgICAgICB2YXIgbWF4Q2F0
ID0gTWF0aC5tYXguYXBwbHkobnVsbCwgT2JqZWN0LnZhbHVlcyhjYXRTdGF0cykuY29uY2F0KFsx
XSkpOwogICAgICAgIHZhciBtYXhLdyA9IHRvcEt3cy5sZW5ndGggPiAwID8gdG9wS3dzWzBdWzFd
IDogMTsKICAgICAgICB2YXIgbWF4TW9udGggPSBtb250aHMubGVuZ3RoID4gMCA/IE1hdGgubWF4
LmFwcGx5KG51bGwsIG1vbnRocy5tYXAoZnVuY3Rpb24obSl7cmV0dXJuIG1bMV07fSkpIDogMTsK
CiAgICAgICAgdmFyIGh0bWwgPSAnPGRpdiBzdHlsZT0icGFkZGluZzoyMHB4OyI+PGgyIHN0eWxl
PSJjb2xvcjp2YXIoLS10ZXh0LWhlYWRpbmcpO21hcmdpbi1ib3R0b206MjBweDsiPlVzZXItRW5n
YWdlbWVudCBTdGF0aXN0aWs8L2gyPic7CgogICAgICAgIC8vIMOcYmVyc2ljaHRza2FydGVuCiAg
ICAgICAgaHRtbCArPSAnPGRpdiBjbGFzcz0ic3RhdC1ncmlkIj4nICsKICAgICAgICAgICAgJzxk
aXYgY2xhc3M9InN0YXQtY2FyZCI+PGRpdiBjbGFzcz0ic3RhdC12YWx1ZSI+JyArIHRvdGFsRG9j
cyArICc8L2Rpdj48ZGl2IGNsYXNzPSJzdGF0LWxhYmVsIj5Eb2t1bWVudGUgZ2VzYW10PC9kaXY+
PC9kaXY+JyArCiAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJzdGF0LWNhcmQiPjxkaXYgY2xhc3M9
InN0YXQtdmFsdWUiIHN0eWxlPSJjb2xvcjojMTU1NzI0OyI+JyArIHRvdGFsRnJlaWdlZ2ViZW4g
KyAnPC9kaXY+PGRpdiBjbGFzcz0ic3RhdC1sYWJlbCI+RnJlaWdlZ2ViZW48L2Rpdj48L2Rpdj4n
ICsKICAgICAgICAgICAgJzxkaXYgY2xhc3M9InN0YXQtY2FyZCI+PGRpdiBjbGFzcz0ic3RhdC12
YWx1ZSIgc3R5bGU9ImNvbG9yOiM3QTQ0MTk7Ij4nICsgdG90YWxQcnVlZnVuZyArICc8L2Rpdj48
ZGl2IGNsYXNzPSJzdGF0LWxhYmVsIj5JbiBQcsO8ZnVuZzwvZGl2PjwvZGl2PicgKwogICAgICAg
ICAgICAnPGRpdiBjbGFzcz0ic3RhdC1jYXJkIj48ZGl2IGNsYXNzPSJzdGF0LXZhbHVlIiBzdHls
ZT0iY29sb3I6Izg1NjQwNDsiPicgKyB0b3RhbEVudHd1cmYgKyAnPC9kaXY+PGRpdiBjbGFzcz0i
c3RhdC1sYWJlbCI+RW50d8O8cmZlPC9kaXY+PC9kaXY+JyArCiAgICAgICAgICAgICc8ZGl2IGNs
YXNzPSJzdGF0LWNhcmQiPjxkaXYgY2xhc3M9InN0YXQtdmFsdWUiPicgKyB0b3RhbFdpdGhNZWRp
YSArICc8L2Rpdj48ZGl2IGNsYXNzPSJzdGF0LWxhYmVsIj5NaXQgTWVkaWVuPC9kaXY+PC9kaXY+
JyArCiAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJzdGF0LWNhcmQiPjxkaXYgY2xhc3M9InN0YXQt
dmFsdWUiPicgKyBPYmplY3Qua2V5cyh1c2VyU3RhdHMpLmxlbmd0aCArICc8L2Rpdj48ZGl2IGNs
YXNzPSJzdGF0LWxhYmVsIj5Ba3RpdmUgQmVudXR6ZXI8L2Rpdj48L2Rpdj4nICsKICAgICAgICAn
PC9kaXY+JzsKCiAgICAgICAgLy8gLS0tIEJlbnV0emVyLUFrdGl2aXTDpHQgbWl0IEZpbHRlciAr
IFNvcnRpZXJ1bmcgLS0tCiAgICAgICAgaHRtbCArPSAnPGgzIHN0eWxlPSJjb2xvcjp2YXIoLS10
ZXh0LWhlYWRpbmcpO21hcmdpbjoyMHB4IDAgOHB4OyI+QmVudXR6ZXItQWt0aXZpdMOkdCBuYWNo
IEJlcmVpY2g8L2gzPic7CgogICAgICAgIC8vIEZpbHRlci1MZWlzdGUKICAgICAgICB2YXIgYnRu
U3R5bGUgPSBmdW5jdGlvbih2YWwsIGN1cnJlbnQsIGVtcHR5KSB7CiAgICAgICAgICAgIGlmICh2
YWwgPT09IGN1cnJlbnQpIHsKICAgICAgICAgICAgICAgIHJldHVybiAncGFkZGluZzo0cHggMTJw
eDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLXRleHQtaGVhZGluZyk7YmFja2dyb3VuZDp2YXIoLS10
ZXh0LWhlYWRpbmcpO2NvbG9yOndoaXRlO2JvcmRlci1yYWRpdXM6NHB4O2N1cnNvcjpwb2ludGVy
O2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMDsnOwogICAgICAgICAgICB9CiAgICAgICAg
ICAgIGlmIChlbXB0eSkgewogICAgICAgICAgICAgICAgcmV0dXJuICdwYWRkaW5nOjRweCAxMnB4
O2JvcmRlcjoxcHggc29saWQgIzhiMWExYTtiYWNrZ3JvdW5kOiM4YjFhMWE7Y29sb3I6I2ZmZjti
b3JkZXItcmFkaXVzOjRweDtjdXJzb3I6cG9pbnRlcjtmb250LXNpemU6MTJweDtmb250LXdlaWdo
dDo1MDA7JzsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gJ3BhZGRpbmc6NHB4IDEy
cHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3IpO2JhY2tncm91bmQ6dmFyKC0t
YmctY2FyZCk7Y29sb3I6dmFyKC0tdGV4dC1wcmltYXJ5KTtib3JkZXItcmFkaXVzOjRweDtjdXJz
b3I6cG9pbnRlcjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDA7JzsKICAgICAgICB9Owog
ICAgICAgIGh0bWwgKz0gJzxkaXYgc3R5bGU9ImRpc3BsYXk6ZmxleDtnYXA6NnB4O2ZsZXgtd3Jh
cDp3cmFwO21hcmdpbi1ib3R0b206NnB4O2FsaWduLWl0ZW1zOmNlbnRlcjsiPicgKwogICAgICAg
ICAgICAnPHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMnB4O2NvbG9yOnZhcigtLXRleHQtbXV0ZWQp
O21hcmdpbi1yaWdodDo0cHg7Ij5LYXRlZ29yaWU6PC9zcGFuPicgKwogICAgICAgICAgICAnPGJ1
dHRvbiBzdHlsZT0iJyArIGJ0blN0eWxlKCdhbGwnLCBjYXRGaWx0ZXIsIGZhbHNlKSArICciIG9u
Y2xpY2s9IkRyaXZlR292ZXJuYW5jZS5zaG93RW5nYWdlbWVudFN0YXRzKG51bGwsXCdhbGxcJyki
PkFsbGU8L2J1dHRvbj4nOwogICAgICAgIGthdGVnb3JpZW4uZm9yRWFjaChmdW5jdGlvbihrKSB7
CiAgICAgICAgICAgIHZhciBoYXNOb0RvY3MgPSAhY2F0U3RhdHNba107CiAgICAgICAgICAgIGh0
bWwgKz0gJzxidXR0b24gc3R5bGU9IicgKyBidG5TdHlsZShrLCBjYXRGaWx0ZXIsIGhhc05vRG9j
cykgKyAnIiBvbmNsaWNrPSJEcml2ZUdvdmVybmFuY2Uuc2hvd0VuZ2FnZW1lbnRTdGF0cyhudWxs
LFwnJyArIERyaXZlUG9ydGFsLmVzY2FwZUF0dHIoaykgKyAnXCcpIj4nICsgRHJpdmVQb3J0YWwu
ZXNjYXBlSFRNTChrKSArICc8L2J1dHRvbj4nOwogICAgICAgIH0pOwogICAgICAgIGh0bWwgKz0g
JzwvZGl2Pic7CgogICAgICAgIGh0bWwgKz0gJzxkaXYgc3R5bGU9ImRpc3BsYXk6ZmxleDtnYXA6
NnB4O2ZsZXgtd3JhcDp3cmFwO21hcmdpbi1ib3R0b206MTBweDthbGlnbi1pdGVtczpjZW50ZXI7
Ij4nICsKICAgICAgICAgICAgJzxzcGFuIHN0eWxlPSJmb250LXNpemU6MTJweDtjb2xvcjp2YXIo
LS10ZXh0LW11dGVkKTttYXJnaW4tcmlnaHQ6NHB4OyI+U29ydGllcnVuZzo8L3NwYW4+JyArCiAg
ICAgICAgICAgICc8YnV0dG9uIHN0eWxlPSInICsgYnRuU3R5bGUoJ3RvdGFsJywgc29ydCkgKyAn
IiBvbmNsaWNrPSJEcml2ZUdvdmVybmFuY2Uuc2hvd0VuZ2FnZW1lbnRTdGF0cyhcJ3RvdGFsXCcp
Ij5HZXNhbXQ8L2J1dHRvbj4nICsKICAgICAgICAgICAgJzxidXR0b24gc3R5bGU9IicgKyBidG5T
dHlsZSgnY3JlYXRlZCcsIHNvcnQpICsgJyIgb25jbGljaz0iRHJpdmVHb3Zlcm5hbmNlLnNob3dF
bmdhZ2VtZW50U3RhdHMoXCdjcmVhdGVkXCcpIj5FcnN0ZWxsdDwvYnV0dG9uPicgKwogICAgICAg
ICAgICAnPGJ1dHRvbiBzdHlsZT0iJyArIGJ0blN0eWxlKCdlZGl0ZWQnLCBzb3J0KSArICciIG9u
Y2xpY2s9IkRyaXZlR292ZXJuYW5jZS5zaG93RW5nYWdlbWVudFN0YXRzKFwnZWRpdGVkXCcpIj5C
ZWFyYmVpdGV0PC9idXR0b24+JyArCiAgICAgICAgICAgICc8YnV0dG9uIHN0eWxlPSInICsgYnRu
U3R5bGUoJ3Jldmlld3MnLCBzb3J0KSArICciIG9uY2xpY2s9IkRyaXZlR292ZXJuYW5jZS5zaG93
RW5nYWdlbWVudFN0YXRzKFwncmV2aWV3c1wnKSI+UmV2aWV3czwvYnV0dG9uPicgKwogICAgICAg
ICc8L2Rpdj4nOwoKICAgICAgICAvLyBVc2VyLVRhYmVsbGUKICAgICAgICBpZiAoc29ydGVkVXNl
cnMubGVuZ3RoID4gMCkgewogICAgICAgICAgICBodG1sICs9ICc8dGFibGUgY2xhc3M9ImRyaXZl
LXRhYmxlIiBzdHlsZT0ibWFyZ2luLWJvdHRvbToxNnB4OyI+PHRoZWFkPjx0cj4nICsKICAgICAg
ICAgICAgICAgICc8dGg+QmVudXR6ZXI8L3RoPjx0aCBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXI7
Ij5FcnN0ZWxsdDwvdGg+PHRoIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlcjsiPkJlYXJiZWl0ZXQ8
L3RoPjx0aCBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXI7Ij5SZXZpZXdzPC90aD48dGggc3R5bGU9
InRleHQtYWxpZ246Y2VudGVyOyI+R2VzYW10PC90aD48dGg+QWt0aXZzdGUgQmVyZWljaGU8L3Ro
PicgKwogICAgICAgICAgICAnPC90cj48L3RoZWFkPjx0Ym9keT4nOwogICAgICAgICAgICBzb3J0
ZWRVc2Vycy5mb3JFYWNoKGZ1bmN0aW9uKHUpIHsKICAgICAgICAgICAgICAgIHZhciBkID0gdVsx
XTsKICAgICAgICAgICAgICAgIHZhciB2YWxzID0gKGNhdEZpbHRlciAhPT0gJ2FsbCcgJiYgZC5r
YXRlZ29yaWVuW2NhdEZpbHRlcl0pID8gZC5rYXRlZ29yaWVuW2NhdEZpbHRlcl0gOiBkOwogICAg
ICAgICAgICAgICAgdmFyIHRvdGFsID0gdmFscy5jcmVhdGVkICsgdmFscy5lZGl0ZWQgKyB2YWxz
LnJldmlld3M7CiAgICAgICAgICAgICAgICAvLyBUb3AtS2F0ZWdvcmllbiBmw7xyIGRpZXNlbiBV
c2VyCiAgICAgICAgICAgICAgICB2YXIgdG9wQ2F0cyA9IE9iamVjdC5lbnRyaWVzKGQua2F0ZWdv
cmllbikuc29ydChmdW5jdGlvbihhLGIpewogICAgICAgICAgICAgICAgICAgIHJldHVybiAoYlsx
XS5jcmVhdGVkK2JbMV0uZWRpdGVkK2JbMV0ucmV2aWV3cykgLSAoYVsxXS5jcmVhdGVkK2FbMV0u
ZWRpdGVkK2FbMV0ucmV2aWV3cyk7CiAgICAgICAgICAgICAgICB9KS5zbGljZSgwLCAzKTsKICAg
ICAgICAgICAgICAgIHZhciBjYXRUYWdzID0gdG9wQ2F0cy5tYXAoZnVuY3Rpb24oYykgewogICAg
ICAgICAgICAgICAgICAgIHZhciBjdCA9IGNbMV0uY3JlYXRlZCArIGNbMV0uZWRpdGVkICsgY1sx
XS5yZXZpZXdzOwogICAgICAgICAgICAgICAgICAgIHJldHVybiAnPHNwYW4gY2xhc3M9ImtleXdv
cmQtdGFnIj4nICsgRHJpdmVQb3J0YWwuZXNjYXBlSFRNTChjWzBdKSArICcgKCcgKyBjdCArICcp
PC9zcGFuPic7CiAgICAgICAgICAgICAgICB9KS5qb2luKCcgJyk7CgogICAgICAgICAgICAgICAg
aHRtbCArPSAnPHRyPicgKwogICAgICAgICAgICAgICAgICAgICc8dGQ+PHN0cm9uZz4nICsgRHJp
dmVQb3J0YWwuZXNjYXBlSFRNTCh1WzBdKSArICc8L3N0cm9uZz48L3RkPicgKwogICAgICAgICAg
ICAgICAgICAgICc8dGQgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyOyI+JyArIHZhbHMuY3JlYXRl
ZCArICc8L3RkPicgKwogICAgICAgICAgICAgICAgICAgICc8dGQgc3R5bGU9InRleHQtYWxpZ246
Y2VudGVyOyI+JyArIHZhbHMuZWRpdGVkICsgJzwvdGQ+JyArCiAgICAgICAgICAgICAgICAgICAg
Jzx0ZCBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXI7Ij4nICsgdmFscy5yZXZpZXdzICsgJzwvdGQ+
JyArCiAgICAgICAgICAgICAgICAgICAgJzx0ZCBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXI7Zm9u
dC13ZWlnaHQ6NjAwOyI+JyArIHRvdGFsICsgJzwvdGQ+JyArCiAgICAgICAgICAgICAgICAgICAg
Jzx0ZD4nICsgY2F0VGFncyArICc8L3RkPicgKwogICAgICAgICAgICAgICAgJzwvdHI+JzsKICAg
ICAgICAgICAgfSk7CiAgICAgICAgICAgIGh0bWwgKz0gJzwvdGJvZHk+PC90YWJsZT4nOwogICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGh0bWwgKz0gJzxkaXYgc3R5bGU9InBhZGRpbmc6MjBw
eDt0ZXh0LWFsaWduOmNlbnRlcjtjb2xvcjp2YXIoLS10ZXh0LW11dGVkKTsiPktlaW5lIERhdGVu
IGbDvHIgZGllc2UgQXVzd2FobC48L2Rpdj4nOwogICAgICAgIH0KCiAgICAgICAgLy8gQmFsa2Vu
ZGlhZ3JhbW0gKGtvbXBha3QpCiAgICAgICAgaWYgKHNvcnRlZFVzZXJzLmxlbmd0aCA+IDApIHsK
ICAgICAgICAgICAgdmFyIG1heFVzZXIgPSBnZXRWYWwoc29ydGVkVXNlcnNbMF0pIHx8IDE7CiAg
ICAgICAgICAgIHNvcnRlZFVzZXJzLmZvckVhY2goZnVuY3Rpb24odSkgewogICAgICAgICAgICAg
ICAgdmFyIGQgPSB1WzFdOwogICAgICAgICAgICAgICAgdmFyIHZhbHMgPSAoY2F0RmlsdGVyICE9
PSAnYWxsJyAmJiBkLmthdGVnb3JpZW5bY2F0RmlsdGVyXSkgPyBkLmthdGVnb3JpZW5bY2F0Rmls
dGVyXSA6IGQ7CiAgICAgICAgICAgICAgICB2YXIgdG90YWwgPSB2YWxzLmNyZWF0ZWQgKyB2YWxz
LmVkaXRlZCArIHZhbHMucmV2aWV3czsKICAgICAgICAgICAgICAgIGlmICh0b3RhbCA9PT0gMCkg
cmV0dXJuOwogICAgICAgICAgICAgICAgaHRtbCArPSAnPGRpdiBjbGFzcz0ic3RhdC1iYXItcm93
Ij48c3BhbiBjbGFzcz0ic3RhdC1iYXItbGFiZWwiPicgKyBEcml2ZVBvcnRhbC5lc2NhcGVIVE1M
KHVbMF0pICsgJzwvc3Bhbj4nICsKICAgICAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0ic3Rh
dC1iYXIiPjxkaXYgY2xhc3M9InN0YXQtYmFyLWZpbGwiIHN0eWxlPSJ3aWR0aDonICsgKHRvdGFs
L21heFVzZXIqMTAwKSArICclO2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDkwZGVnLCMyZDlk
NzggJyArICh2YWxzLmNyZWF0ZWQvdG90YWwqMTAwKSArICclLCMzYjgyZjYgJyArICh2YWxzLmNy
ZWF0ZWQvdG90YWwqMTAwKSArICclICcgKyAoKHZhbHMuY3JlYXRlZCt2YWxzLmVkaXRlZCkvdG90
YWwqMTAwKSArICclLCNlNjdlMjIgJyArICgodmFscy5jcmVhdGVkK3ZhbHMuZWRpdGVkKS90b3Rh
bCoxMDApICsgJyUgMTAwJSk7Ij48L2Rpdj48L2Rpdj4nICsKICAgICAgICAgICAgICAgICAgICAn
PHNwYW4gY2xhc3M9InN0YXQtYmFyLXZhbCI+JyArIHRvdGFsICsgJzwvc3Bhbj48L2Rpdj4nOwog
ICAgICAgICAgICB9KTsKICAgICAgICAgICAgaHRtbCArPSAnPGRpdiBzdHlsZT0iZm9udC1zaXpl
OjExcHg7Y29sb3I6dmFyKC0tdGV4dC1tdXRlZCk7bWFyZ2luLXRvcDo0cHg7Ij5MZWdlbmRlOiA8
c3BhbiBzdHlsZT0iY29sb3I6IzJkOWQ3ODsiPuKWoDwvc3Bhbj4gRXJzdGVsbHQgLyA8c3BhbiBz
dHlsZT0iY29sb3I6IzNiODJmNjsiPuKWoDwvc3Bhbj4gQmVhcmJlaXRldCAvIDxzcGFuIHN0eWxl
PSJjb2xvcjojZTY3ZTIyOyI+4pagPC9zcGFuPiBSZXZpZXdzPC9kaXY+JzsKICAgICAgICB9Cgog
ICAgICAgIC8vIC0tLSBLYXRlZ29yaWUtVmVydGVpbHVuZyArIFRvcCBTY2hsYWd3w7ZydGVyIG5l
YmVuZWluYW5kZXIgLS0tCiAgICAgICAgaHRtbCArPSAnPGRpdiBzdHlsZT0iZGlzcGxheTpncmlk
O2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnIgMWZyO2dhcDoyMHB4O21hcmdpbi10b3A6MTZweDsi
Pic7CgogICAgICAgIC8vIEthdGVnb3JpZW4KICAgICAgICBodG1sICs9ICc8ZGl2PjxoMyBzdHls
ZT0iY29sb3I6dmFyKC0tdGV4dC1oZWFkaW5nKTttYXJnaW4tYm90dG9tOjhweDsiPkRva3VtZW50
ZSBwcm8gS2F0ZWdvcmllPC9oMz4nOwogICAgICAgIHZhciBhbGxDYXRFbnRyaWVzID0ga2F0ZWdv
cmllbi5tYXAoZnVuY3Rpb24oaykgeyByZXR1cm4gW2ssIGNhdFN0YXRzW2tdIHx8IDBdOyB9KTsK
ICAgICAgICBhbGxDYXRFbnRyaWVzLnNvcnQoZnVuY3Rpb24oYSxiKSB7IHJldHVybiBiWzFdIC0g
YVsxXSB8fCBhWzBdLmxvY2FsZUNvbXBhcmUoYlswXSwgJ2RlJyk7IH0pOwogICAgICAgIGFsbENh
dEVudHJpZXMuZm9yRWFjaChmdW5jdGlvbihjKSB7CiAgICAgICAgICAgIGh0bWwgKz0gJzxkaXYg
Y2xhc3M9InN0YXQtYmFyLXJvdyI+PHNwYW4gY2xhc3M9InN0YXQtYmFyLWxhYmVsIj4nICsgRHJp
dmVQb3J0YWwuZXNjYXBlSFRNTChjWzBdKSArICc8L3NwYW4+JyArCiAgICAgICAgICAgICAgICAn
PGRpdiBjbGFzcz0ic3RhdC1iYXIiPjxkaXYgY2xhc3M9InN0YXQtYmFyLWZpbGwiIHN0eWxlPSJ3
aWR0aDonICsgKGNbMV0vbWF4Q2F0KjEwMCkgKyAnJTtiYWNrZ3JvdW5kOiMzYjgyZjY7Ij48L2Rp
dj48L2Rpdj4nICsKICAgICAgICAgICAgICAgICc8c3BhbiBjbGFzcz0ic3RhdC1iYXItdmFsIj4n
ICsgY1sxXSArICc8L3NwYW4+PC9kaXY+JzsKICAgICAgICB9KTsKICAgICAgICBodG1sICs9ICc8
L2Rpdj4nOwoKICAgICAgICAvLyBUb3AgU2NobGFnd8O2cnRlcgogICAgICAgIGh0bWwgKz0gJzxk
aXY+PGgzIHN0eWxlPSJjb2xvcjp2YXIoLS10ZXh0LWhlYWRpbmcpO21hcmdpbi1ib3R0b206OHB4
OyI+VG9wIDEwIFNjaGxhZ3fDtnJ0ZXI8L2gzPic7CiAgICAgICAgaWYgKHRvcEt3cy5sZW5ndGgg
PiAwKSB7CiAgICAgICAgICAgIHRvcEt3cy5mb3JFYWNoKGZ1bmN0aW9uKGspIHsKICAgICAgICAg
ICAgICAgIGh0bWwgKz0gJzxkaXYgY2xhc3M9InN0YXQtYmFyLXJvdyI+PHNwYW4gY2xhc3M9InN0
YXQtYmFyLWxhYmVsIj4nICsgRHJpdmVQb3J0YWwuZXNjYXBlSFRNTChrWzBdKSArICc8L3NwYW4+
JyArCiAgICAgICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9InN0YXQtYmFyIj48ZGl2IGNsYXNz
PSJzdGF0LWJhci1maWxsIiBzdHlsZT0id2lkdGg6JyArIChrWzFdL21heEt3KjEwMCkgKyAnJTti
YWNrZ3JvdW5kOiMyZDlkNzg7Ij48L2Rpdj48L2Rpdj4nICsKICAgICAgICAgICAgICAgICAgICAn
PHNwYW4gY2xhc3M9InN0YXQtYmFyLXZhbCI+JyArIGtbMV0gKyAnPC9zcGFuPjwvZGl2Pic7CiAg
ICAgICAgICAgIH0pOwogICAgICAgIH0gZWxzZSB7IGh0bWwgKz0gJzxkaXYgc3R5bGU9ImNvbG9y
OnZhcigtLXRleHQtbXV0ZWQpO2ZvbnQtc2l6ZToxM3B4OyI+S2VpbmUgU2NobGFnd8O2cnRlciB2
b3JoYW5kZW4uPC9kaXY+JzsgfQogICAgICAgIGh0bWwgKz0gJzwvZGl2PjwvZGl2Pic7CgogICAg
ICAgIC8vIE1vbmF0bGljaGUgRXJzdGVsbHVuZwogICAgICAgIGlmIChtb250aHMubGVuZ3RoID4g
MCkgewogICAgICAgICAgICBodG1sICs9ICc8aDMgc3R5bGU9ImNvbG9yOnZhcigtLXRleHQtaGVh
ZGluZyk7bWFyZ2luOjE2cHggMCA4cHg7Ij5FcnN0ZWxsdW5nIHBybyBNb25hdDwvaDM+JzsKICAg
ICAgICAgICAgbW9udGhzLmZvckVhY2goZnVuY3Rpb24obSkgewogICAgICAgICAgICAgICAgaHRt
bCArPSAnPGRpdiBjbGFzcz0ic3RhdC1iYXItcm93Ij48c3BhbiBjbGFzcz0ic3RhdC1iYXItbGFi
ZWwiPicgKyBtWzBdICsgJzwvc3Bhbj4nICsKICAgICAgICAgICAgICAgICAgICAnPGRpdiBjbGFz
cz0ic3RhdC1iYXIiPjxkaXYgY2xhc3M9InN0YXQtYmFyLWZpbGwiIHN0eWxlPSJ3aWR0aDonICsg
KG1bMV0vbWF4TW9udGgqMTAwKSArICclO2JhY2tncm91bmQ6IzNhN2FhMzsiPjwvZGl2PjwvZGl2
PicgKwogICAgICAgICAgICAgICAgICAgICc8c3BhbiBjbGFzcz0ic3RhdC1iYXItdmFsIj4nICsg
bVsxXSArICc8L3NwYW4+PC9kaXY+JzsKICAgICAgICAgICAgfSk7CiAgICAgICAgfQoKICAgICAg
ICBodG1sICs9ICc8L2Rpdj4nOwogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkb2N1
bWVudERldGFpbCcpLmlubmVySFRNTCA9IGh0bWw7CiAgICB9LAoKICAgIC8vID09PSBTY2hsYWd3
b3J0LVZlcndhbHR1bmcgPT09CiAgICBfa3dNYW5hZ2VDdXJyZW50OiBudWxsLAoKICAgIG9wZW5L
d01hbmFnZShrZXl3b3JkKSB7CiAgICAgICAgdGhpcy5fa3dNYW5hZ2VDdXJyZW50ID0ga2V5d29y
ZDsKICAgICAgICB2YXIgYWZmZWN0ZWREb2NzID0gRHJpdmVGUy5kb2N1bWVudHMuZmlsdGVyKGZ1
bmN0aW9uKGQpIHsKICAgICAgICAgICAgcmV0dXJuIGQuc2NobGFnd29lcnRlciAmJiBkLnNjaGxh
Z3dvZXJ0ZXIuaW5jbHVkZXMoa2V5d29yZCk7CiAgICAgICAgfSk7CgogICAgICAgIHZhciBib2R5
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2t3TWFuYWdlQm9keScpOwogICAgICAgIHZhciBm
b290ZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgna3dNYW5hZ2VGb290ZXInKTsKICAgICAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgna3dNYW5hZ2VUaXRsZScpLnRleHRDb250ZW50ID0g
J1NjaGxhZ3dvcnQ6ICcgKyBrZXl3b3JkOwoKICAgICAgICB2YXIgaHRtbCA9ICcnOwogICAgICAg
IC8vIEJlYXJiZWl0dW5nc2ZlbGQKICAgICAgICBodG1sICs9ICc8ZGl2IHN0eWxlPSJtYXJnaW4t
Ym90dG9tOjE0cHg7Ij4nICsKICAgICAgICAgICAgJzxsYWJlbCBzdHlsZT0iZm9udC1zaXplOjEy
cHg7Zm9udC13ZWlnaHQ6NjAwO2NvbG9yOnZhcigtLXRleHQtc2Vjb25kYXJ5KTtkaXNwbGF5OmJs
b2NrO21hcmdpbi1ib3R0b206NHB4OyI+U2NobGFnd29ydCB1bWJlbmVubmVuPC9sYWJlbD4nICsK
ICAgICAgICAgICAgJzxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0ia3dNYW5hZ2VOZXdOYW1lIiB2YWx1
ZT0iJyArIERyaXZlUG9ydGFsLmVzY2FwZUF0dHIoa2V5d29yZCkgKyAnIiAnICsKICAgICAgICAg
ICAgJ3N0eWxlPSJ3aWR0aDoxMDAlO3BhZGRpbmc6OHB4IDEwcHg7Ym9yZGVyOjFweCBzb2xpZCB2
YXIoLS1ib3JkZXItY29sb3IpO2JvcmRlci1yYWRpdXM6NHB4O2ZvbnQtc2l6ZToxNHB4O2JhY2tn
cm91bmQ6dmFyKC0tYmctaW5wdXQpO2NvbG9yOnZhcigtLXRleHQtcHJpbWFyeSk7Ij4nICsKICAg
ICAgICAnPC9kaXY+JzsKCiAgICAgICAgLy8gQmV0cm9mZmVuZSBBcnRpa2VsCiAgICAgICAgaWYg
KGFmZmVjdGVkRG9jcy5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgIGh0bWwgKz0gJzxkaXYgc3R5
bGU9ImZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjYwMDtjb2xvcjp2YXIoLS10ZXh0LXNlY29u
ZGFyeSk7bWFyZ2luLWJvdHRvbTo2cHg7Ij5WZXJ3ZW5kZXQgaW4gJyArIGFmZmVjdGVkRG9jcy5s
ZW5ndGggKyAnIEFydGlrZWwnICsgKGFmZmVjdGVkRG9jcy5sZW5ndGggPiAxID8gJ24nIDogJycp
ICsgJzo8L2Rpdj4nOwogICAgICAgICAgICBodG1sICs9ICc8ZGl2IGNsYXNzPSJrdy1kb2MtbGlz
dCI+JzsKICAgICAgICAgICAgYWZmZWN0ZWREb2NzLmZvckVhY2goZnVuY3Rpb24oZG9jKSB7CiAg
ICAgICAgICAgICAgICBodG1sICs9ICc8ZGl2IGNsYXNzPSJrdy1kb2MtaXRlbSI+JyArCiAgICAg
ICAgICAgICAgICAgICAgJzxkaXY+PHNwYW4gY2xhc3M9Imt3LWRvYy10aXRsZSI+JyArIERyaXZl
UG9ydGFsLmVzY2FwZUhUTUwoZG9jLnRpdGVsKSArICc8L3NwYW4+JyArCiAgICAgICAgICAgICAg
ICAgICAgJzxkaXYgY2xhc3M9Imt3LWRvYy1rYXQiPicgKyBEcml2ZVBvcnRhbC5lc2NhcGVIVE1M
KGRvYy5rYXRlZ29yaWUpICsKICAgICAgICAgICAgICAgICAgICAoZG9jLmVyc3RlbGx0Vm9uID8g
JyDCtyB2b24gJyArIERyaXZlUG9ydGFsLmVzY2FwZUhUTUwoZG9jLmVyc3RlbGx0Vm9uKSA6ICcn
KSArCiAgICAgICAgICAgICAgICAgICAgJzwvZGl2PjwvZGl2PicgKwogICAgICAgICAgICAgICAg
JzwvZGl2Pic7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICBodG1sICs9ICc8L2Rpdj4nOwog
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGh0bWwgKz0gJzxkaXYgc3R5bGU9ImZvbnQtc2l6
ZToxM3B4O2NvbG9yOnZhcigtLXRleHQtbXV0ZWQpO3BhZGRpbmc6MTBweCAwOyI+V2lyZCBpbiBr
ZWluZW0gQXJ0aWtlbCB2ZXJ3ZW5kZXQuPC9kaXY+JzsKICAgICAgICB9CgogICAgICAgIC8vIEVy
c2V0emVuLU9wdGlvbgogICAgICAgIHZhciBvdGhlckt3ID0gRHJpdmVFZGl0b3IuX2dldEFsbEtu
b3duS2V5d29yZHMoKS5maWx0ZXIoZnVuY3Rpb24oaykgeyByZXR1cm4gayAhPT0ga2V5d29yZDsg
fSk7CiAgICAgICAgaHRtbCArPSAnPGRpdiBzdHlsZT0ibWFyZ2luLXRvcDoxNHB4O2JvcmRlci10
b3A6MXB4IHNvbGlkIHZhcigtLWJvcmRlci1saWdodCk7cGFkZGluZy10b3A6MTJweDsiPicgKwog
ICAgICAgICAgICAnPGxhYmVsIHN0eWxlPSJmb250LXNpemU6MTJweDtmb250LXdlaWdodDo2MDA7
Y29sb3I6dmFyKC0tdGV4dC1zZWNvbmRhcnkpO2Rpc3BsYXk6YmxvY2s7bWFyZ2luLWJvdHRvbTo2
cHg7Ij5FcnNldHplbiBkdXJjaDwvbGFiZWw+JyArCiAgICAgICAgICAgICc8aW5wdXQgdHlwZT0i
aGlkZGVuIiBpZD0ia3dNYW5hZ2VSZXBsYWNlIiB2YWx1ZT0iIj4nICsKICAgICAgICAgICAgJzxk
aXYgc3R5bGU9ImZvbnQtc2l6ZToxMnB4O2NvbG9yOnZhcigtLXRleHQtbXV0ZWQpO21hcmdpbi1i
b3R0b206NnB4OyI+V8OkaGxlIGVpbiBTY2hsYWd3b3J0LCBkdXJjaCBkYXMgZGllc2VzIGJlaW0g
TMO2c2NoZW4gb2RlciBVbWJlbmVubmVuIGVyc2V0enQgd2VyZGVuIHNvbGw6PC9kaXY+JyArCiAg
ICAgICAgICAgICc8ZGl2IGlkPSJrd1JlcGxhY2VTZWxlY3RlZCIgc3R5bGU9Im1hcmdpbi1ib3R0
b206OHB4O2Rpc3BsYXk6bm9uZTtwYWRkaW5nOjZweCAxMHB4O2JvcmRlci1yYWRpdXM6NHB4O2Jh
Y2tncm91bmQ6dmFyKC0tYmctYWN0aXZlKTtib3JkZXI6MXB4IHNvbGlkIHZhcigtLXRleHQtaGVh
ZGluZyk7Zm9udC1zaXplOjEzcHg7Y29sb3I6dmFyKC0tdGV4dC1oZWFkaW5nKTtkaXNwbGF5Om5v
bmU7Ij4nICsKICAgICAgICAgICAgICAgICc8c3BhbiBpZD0ia3dSZXBsYWNlTGFiZWwiPjwvc3Bh
bj4gPHNwYW4gc3R5bGU9ImN1cnNvcjpwb2ludGVyO21hcmdpbi1sZWZ0OjZweDtjb2xvcjp2YXIo
LS10ZXh0LW11dGVkKTsiIG9uY2xpY2s9IkRyaXZlR292ZXJuYW5jZS5fY2xlYXJLd1JlcGxhY2Uo
KSI+4pyVPC9zcGFuPicgKwogICAgICAgICAgICAnPC9kaXY+JyArCiAgICAgICAgICAgICc8ZGl2
IGNsYXNzPSJnb3Yta3ctbGlzdCIgc3R5bGU9Im1heC1oZWlnaHQ6MTIwcHg7IiBpZD0ia3dSZXBs
YWNlT3B0aW9ucyI+JzsKICAgICAgICBvdGhlckt3LmZvckVhY2goZnVuY3Rpb24oa3cpIHsKICAg
ICAgICAgICAgaHRtbCArPSAnPHNwYW4gY2xhc3M9Imdvdi1rdy1waWxsIiBvbmNsaWNrPSJEcml2
ZUdvdmVybmFuY2UuX3NlbGVjdEt3UmVwbGFjZShcJycgKyBEcml2ZVBvcnRhbC5lc2NhcGVBdHRy
KGt3KSArICdcJykiPicgKwogICAgICAgICAgICAgICAgRHJpdmVQb3J0YWwuZXNjYXBlSFRNTChr
dykgKyAnPC9zcGFuPic7CiAgICAgICAgfSk7CiAgICAgICAgaWYgKG90aGVyS3cubGVuZ3RoID09
PSAwKSB7CiAgICAgICAgICAgIGh0bWwgKz0gJzxzcGFuIHN0eWxlPSJmb250LXNpemU6MTJweDtj
b2xvcjp2YXIoLS10ZXh0LW11dGVkKTsiPktlaW5lIGFuZGVyZW4gU2NobGFnd8O2cnRlciB2b3Jo
YW5kZW48L3NwYW4+JzsKICAgICAgICB9CiAgICAgICAgaHRtbCArPSAnPC9kaXY+PC9kaXY+JzsK
CiAgICAgICAgYm9keS5pbm5lckhUTUwgPSBodG1sOwoKICAgICAgICBmb290ZXIuaW5uZXJIVE1M
ID0KICAgICAgICAgICAgJzxidXR0b24gb25jbGljaz0iRHJpdmVHb3Zlcm5hbmNlLmNsb3NlS3dN
YW5hZ2UoKSI+U2NobGllw59lbjwvYnV0dG9uPicgKwogICAgICAgICAgICAnPGJ1dHRvbiBjbGFz
cz0iZGFuZ2VyIiBvbmNsaWNrPSJEcml2ZUdvdmVybmFuY2UuZGVsZXRlS2V5d29yZCgpIj5Mw7Zz
Y2hlbjwvYnV0dG9uPicgKwogICAgICAgICAgICAnPGJ1dHRvbiBjbGFzcz0icHJpbWFyeSIgb25j
bGljaz0iRHJpdmVHb3Zlcm5hbmNlLnJlbmFtZUtleXdvcmQoKSI+VW1iZW5lbm5lbjwvYnV0dG9u
Pic7CgogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdrd01hbmFnZU1vZGFsJykuY2xh
c3NMaXN0LmFkZCgnb3BlbicpOwogICAgfSwKCiAgICBjbG9zZUt3TWFuYWdlKCkgewogICAgICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdrd01hbmFnZU1vZGFsJykuY2xhc3NMaXN0LnJlbW92
ZSgnb3BlbicpOwogICAgICAgIHRoaXMuX2t3TWFuYWdlQ3VycmVudCA9IG51bGw7CiAgICB9LAoK
ICAgIF9zZWxlY3RLd1JlcGxhY2Uoa3cpIHsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgna3dNYW5hZ2VSZXBsYWNlJykudmFsdWUgPSBrdzsKICAgICAgICB2YXIgc2VsID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2t3UmVwbGFjZVNlbGVjdGVkJyk7CiAgICAgICAgc2VsLnN0eWxl
LmRpc3BsYXkgPSAnZmxleCc7CiAgICAgICAgc2VsLnN0eWxlLmFsaWduSXRlbXMgPSAnY2VudGVy
JzsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgna3dSZXBsYWNlTGFiZWwnKS50ZXh0
Q29udGVudCA9IGt3OwogICAgICAgIC8vIEF1c2dld8OkaGx0ZSBQaWxsIGhlcnZvcmhlYmVuCiAg
ICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnI2t3UmVwbGFjZU9wdGlvbnMgLmdvdi1r
dy1waWxsJykuZm9yRWFjaChmdW5jdGlvbihlbCkgewogICAgICAgICAgICBlbC5zdHlsZS5vdXRs
aW5lID0gZWwudGV4dENvbnRlbnQudHJpbSgpID09PSBrdyA/ICcycHggc29saWQgdmFyKC0tdGV4
dC1oZWFkaW5nKScgOiAnJzsKICAgICAgICB9KTsKICAgIH0sCgogICAgX2NsZWFyS3dSZXBsYWNl
KCkgewogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdrd01hbmFnZVJlcGxhY2UnKS52
YWx1ZSA9ICcnOwogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdrd1JlcGxhY2VTZWxl
Y3RlZCcpLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxl
Y3RvckFsbCgnI2t3UmVwbGFjZU9wdGlvbnMgLmdvdi1rdy1waWxsJykuZm9yRWFjaChmdW5jdGlv
bihlbCkgewogICAgICAgICAgICBlbC5zdHlsZS5vdXRsaW5lID0gJyc7CiAgICAgICAgfSk7CiAg
ICB9LAoKICAgIGFzeW5jIHJlbmFtZUtleXdvcmQoKSB7CiAgICAgICAgdmFyIG9sZE5hbWUgPSB0
aGlzLl9rd01hbmFnZUN1cnJlbnQ7CiAgICAgICAgdmFyIG5ld05hbWUgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgna3dNYW5hZ2VOZXdOYW1lJykudmFsdWUudHJpbSgpOwogICAgICAgIGlmICgh
bmV3TmFtZSB8fCBuZXdOYW1lID09PSBvbGROYW1lKSB7CiAgICAgICAgICAgIHNob3dUb2FzdCgn
Qml0dGUgZWluZW4gbmV1ZW4gTmFtZW4gZWluZ2ViZW4nLCAnd2FybmluZycpOwogICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICB2YXIgYWZmZWN0ZWQgPSBEcml2ZUZTLmRvY3Vt
ZW50cy5maWx0ZXIoZnVuY3Rpb24oZCkgewogICAgICAgICAgICByZXR1cm4gZC5zY2hsYWd3b2Vy
dGVyICYmIGQuc2NobGFnd29lcnRlci5pbmNsdWRlcyhvbGROYW1lKTsKICAgICAgICB9KTsKCiAg
ICAgICAgdmFyIGNvdW50ID0gMDsKICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFmZmVjdGVk
Lmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIHZhciBkb2MgPSBhZmZlY3RlZFtpXTsKICAgICAg
ICAgICAgdmFyIGlkeCA9IGRvYy5zY2hsYWd3b2VydGVyLmluZGV4T2Yob2xkTmFtZSk7CiAgICAg
ICAgICAgIGlmIChpZHggPj0gMCkgewogICAgICAgICAgICAgICAgZG9jLnNjaGxhZ3dvZXJ0ZXJb
aWR4XSA9IG5ld05hbWU7CiAgICAgICAgICAgICAgICAvLyBEdXBsaWthdGUgZW50ZmVybmVuCiAg
ICAgICAgICAgICAgICBkb2Muc2NobGFnd29lcnRlciA9IFsuLi5uZXcgU2V0KGRvYy5zY2hsYWd3
b2VydGVyKV07CiAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gYXdhaXQgRHJpdmVGUy5zYXZl
RG9jdW1lbnQoZG9jKTsKICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT09IHRydWUpIGNvdW50
Kys7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8vIEF1Y2ggaW4gUFJFREVGSU5F
RF9LRVlXT1JEUyBlcnNldHplbgogICAgICAgIHZhciBwcmVkSWR4ID0gRHJpdmVFZGl0b3IuUFJF
REVGSU5FRF9LRVlXT1JEUy5pbmRleE9mKG9sZE5hbWUpOwogICAgICAgIGlmIChwcmVkSWR4ID49
IDApIERyaXZlRWRpdG9yLlBSRURFRklORURfS0VZV09SRFNbcHJlZElkeF0gPSBuZXdOYW1lOwoK
ICAgICAgICBzaG93VG9hc3QoJ1NjaGxhZ3dvcnQgdW1iZW5hbm50OiAiJyArIG9sZE5hbWUgKyAn
IiDihpIgIicgKyBuZXdOYW1lICsgJyIgKCcgKyBjb3VudCArICcgQXJ0aWtlbCknLCAnc3VjY2Vz
cycpOwogICAgICAgIHRoaXMuY2xvc2VLd01hbmFnZSgpOwogICAgICAgIHRoaXMucmVuZGVyQWRt
aW4oKTsKICAgICAgICBEcml2ZVBvcnRhbC5yZW5kZXIoKTsKICAgIH0sCgogICAgYXN5bmMgZGVs
ZXRlS2V5d29yZCgpIHsKICAgICAgICB2YXIga2V5d29yZCA9IHRoaXMuX2t3TWFuYWdlQ3VycmVu
dDsKICAgICAgICB2YXIgcmVwbGFjZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgna3dN
YW5hZ2VSZXBsYWNlJykudmFsdWUudHJpbSgpOwoKICAgICAgICB2YXIgYWZmZWN0ZWQgPSBEcml2
ZUZTLmRvY3VtZW50cy5maWx0ZXIoZnVuY3Rpb24oZCkgewogICAgICAgICAgICByZXR1cm4gZC5z
Y2hsYWd3b2VydGVyICYmIGQuc2NobGFnd29lcnRlci5pbmNsdWRlcyhrZXl3b3JkKTsKICAgICAg
ICB9KTsKCiAgICAgICAgaWYgKGFmZmVjdGVkLmxlbmd0aCA+IDAgJiYgIWNvbmZpcm0oJ1NjaGxh
Z3dvcnQgIicgKyBrZXl3b3JkICsgJyIgYXVzICcgKyBhZmZlY3RlZC5sZW5ndGggKyAnIEFydGlr
ZWwnICsgKGFmZmVjdGVkLmxlbmd0aCA+IDEgPyAnbicgOiAnJykgKyAnIGVudGZlcm5lbj8nICsg
KHJlcGxhY2VtZW50ID8gJ1xuRXJzZXR6dCBkdXJjaDogIicgKyByZXBsYWNlbWVudCArICciJyA6
ICcnKSkpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgdmFyIGNvdW50
ID0gMDsKICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFmZmVjdGVkLmxlbmd0aDsgaSsrKSB7
CiAgICAgICAgICAgIHZhciBkb2MgPSBhZmZlY3RlZFtpXTsKICAgICAgICAgICAgZG9jLnNjaGxh
Z3dvZXJ0ZXIgPSBkb2Muc2NobGFnd29lcnRlci5maWx0ZXIoZnVuY3Rpb24oaykgeyByZXR1cm4g
ayAhPT0ga2V5d29yZDsgfSk7CiAgICAgICAgICAgIGlmIChyZXBsYWNlbWVudCAmJiAhZG9jLnNj
aGxhZ3dvZXJ0ZXIuaW5jbHVkZXMocmVwbGFjZW1lbnQpKSB7CiAgICAgICAgICAgICAgICBkb2Mu
c2NobGFnd29lcnRlci5wdXNoKHJlcGxhY2VtZW50KTsKICAgICAgICAgICAgfQogICAgICAgICAg
ICB2YXIgcmVzdWx0ID0gYXdhaXQgRHJpdmVGUy5zYXZlRG9jdW1lbnQoZG9jKTsKICAgICAgICAg
ICAgaWYgKHJlc3VsdCA9PT0gdHJ1ZSkgY291bnQrKzsKICAgICAgICB9CgogICAgICAgIC8vIEF1
cyBQUkVERUZJTkVEX0tFWVdPUkRTIGVudGZlcm5lbgogICAgICAgIHZhciBwcmVkSWR4ID0gRHJp
dmVFZGl0b3IuUFJFREVGSU5FRF9LRVlXT1JEUy5pbmRleE9mKGtleXdvcmQpOwogICAgICAgIGlm
IChwcmVkSWR4ID49IDApIERyaXZlRWRpdG9yLlBSRURFRklORURfS0VZV09SRFMuc3BsaWNlKHBy
ZWRJZHgsIDEpOwoKICAgICAgICBzaG93VG9hc3QoJ1NjaGxhZ3dvcnQgIicgKyBrZXl3b3JkICsg
JyIgZ2Vsw7ZzY2h0JyArIChyZXBsYWNlbWVudCA/ICcsIGVyc2V0enQgZHVyY2ggIicgKyByZXBs
YWNlbWVudCArICciJyA6ICcnKSArICcgKCcgKyBjb3VudCArICcgQXJ0aWtlbCknLCAnc3VjY2Vz
cycpOwogICAgICAgIHRoaXMuY2xvc2VLd01hbmFnZSgpOwogICAgICAgIHRoaXMucmVuZGVyQWRt
aW4oKTsKICAgICAgICBEcml2ZVBvcnRhbC5yZW5kZXIoKTsKICAgIH0sCgogICAgLy8gPT09IEFk
bWluLUFubGVpdHVuZyBmdWVyIEVpbnN0ZWlnZXIgPT09CiAgICBzaG93QWRtaW5HdWlkZSgpIHsK
ICAgICAgICB2YXIgYm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdnb3ZBZG1pbkJvZHkn
KTsKICAgICAgICBib2R5LmlubmVySFRNTCA9CiAgICAgICAgJzxkaXYgc3R5bGU9Im1heC13aWR0
aDo4MDBweDttYXJnaW46MCBhdXRvOyI+JyArCiAgICAgICAgICAgICc8ZGl2IHN0eWxlPSJkaXNw
bGF5OmZsZXg7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47YWxpZ24taXRlbXM6Y2VudGVy
O21hcmdpbi1ib3R0b206MTZweDsiPicgKwogICAgICAgICAgICAgICAgJzxoMiBzdHlsZT0iY29s
b3I6dmFyKC0tdGV4dC1oZWFkaW5nKTttYXJnaW46MDsiPkFkbWluLUFubGVpdHVuZzwvaDI+JyAr
CiAgICAgICAgICAgICAgICAnPGJ1dHRvbiBjbGFzcz0iZ292LWFkZC1idG4iIHN0eWxlPSJwYWRk
aW5nOjZweCAxNHB4OyIgb25jbGljaz0iRHJpdmVHb3Zlcm5hbmNlLnJlbmRlckFkbWluKCk7Ij5a
dXLDvGNrIHp1ciBWZXJ3YWx0dW5nPC9idXR0b24+JyArCiAgICAgICAgICAgICc8L2Rpdj4nICsK
CiAgICAgICAgICAgICc8ZGl2IHN0eWxlPSJiYWNrZ3JvdW5kOnZhcigtLWJnLWNhcmQpO2JvcmRl
cjoxcHggc29saWQgdmFyKC0tYm9yZGVyLWxpZ2h0KTtib3JkZXItcmFkaXVzOjhweDtwYWRkaW5n
OjE2cHggMjBweDttYXJnaW4tYm90dG9tOjE0cHg7Ij4nICsKICAgICAgICAgICAgICAgICc8aDMg
c3R5bGU9ImNvbG9yOnZhcigtLXRleHQtaGVhZGluZyk7Zm9udC1zaXplOjE1cHg7bWFyZ2luLWJv
dHRvbTo4cHg7Ij5XYXMgaXN0IGRpZXNlIERhdGVpPzwvaDM+JyArCiAgICAgICAgICAgICAgICAn
PHAgc3R5bGU9ImZvbnQtc2l6ZToxM3B4O2xpbmUtaGVpZ2h0OjEuNztjb2xvcjp2YXIoLS10ZXh0
LXByaW1hcnkpOyI+JyArCiAgICAgICAgICAgICAgICAgICAgJ0RhcyBnZXNhbXRlIEQuUi5JLlYu
RS4gUG9ydGFsIGJlc3RlaHQgYXVzIDxzdHJvbmc+ZWluZXIgZWluemlnZW4gRGF0ZWk8L3N0cm9u
Zz46IDxjb2RlIHN0eWxlPSJiYWNrZ3JvdW5kOnZhcigtLWJnLWNhcmQtYWx0KTtwYWRkaW5nOjJw
eCA2cHg7Ym9yZGVyLXJhZGl1czozcHg7Ij5pbmRleC5odG1sPC9jb2RlPi4gJyArCiAgICAgICAg
ICAgICAgICAgICAgJ0luIGRpZXNlciBEYXRlaSBzdGVja3QgYWxsZXM6IGRhcyBBdXNzZWhlbiAo
RmFyYmVuLCBTY2hyaWZ0Z3LDtsOfZW4sIEFic3TDpG5kZSksIGRpZSBTdHJ1a3R1ciAod2FzIHdv
IGFuZ2V6ZWlndCB3aXJkKSB1bmQgZGllIExvZ2lrICh3YXMgcGFzc2llcnQgd2VubiBtYW4ga2xp
Y2t0KS4gJyArCiAgICAgICAgICAgICAgICAgICAgJ01hbiBrYW5uIHNpZSBtaXQgamVkZW0gVGV4
dGVkaXRvciDDtmZmbmVuIOKAkyBmw7xyIHVucyBrbGFwcHQgaGllciBudXIgZGVyIG5vcm1hbGUg
V2luZG93cy1FZGl0b3IgKFdpbmRvd3MgU3VjaGU6IEVkaXRvciknICsKICAgICAgICAgICAgICAg
ICc8L3A+JyArCiAgICAgICAgICAgICc8L2Rpdj4nICsKCiAgICAgICAgICAgICc8ZGl2IHN0eWxl
PSJiYWNrZ3JvdW5kOnZhcigtLWJnLWNhcmQpO2JvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVy
LWxpZ2h0KTtib3JkZXItcmFkaXVzOjhweDtwYWRkaW5nOjE2cHggMjBweDttYXJnaW4tYm90dG9t
OjE0cHg7Ij4nICsKICAgICAgICAgICAgICAgICc8aDMgc3R5bGU9ImNvbG9yOnZhcigtLXRleHQt
aGVhZGluZyk7Zm9udC1zaXplOjE1cHg7bWFyZ2luLWJvdHRvbTo4cHg7Ij5BdWZiYXUgZGVyIERh
dGVpICgzIEJlcmVpY2hlKTwvaDM+JyArCiAgICAgICAgICAgICAgICAnPHAgc3R5bGU9ImZvbnQt
c2l6ZToxM3B4O2xpbmUtaGVpZ2h0OjEuNztjb2xvcjp2YXIoLS10ZXh0LXByaW1hcnkpO21hcmdp
bi1ib3R0b206MTBweDsiPicgKwogICAgICAgICAgICAgICAgICAgICdEaWUgRGF0ZWkgaGF0IGRy
ZWkgZ3Jvw59lIEFic2Nobml0dGUuIElociBlcmtlbm50IHNpZSBhbiBkZW4gS29tbWVudGFyZW4g
aW0gQ29kZTonICsKICAgICAgICAgICAgICAgICc8L3A+JyArCiAgICAgICAgICAgICAgICAnPHRh
YmxlIHN0eWxlPSJ3aWR0aDoxMDAlO2JvcmRlci1jb2xsYXBzZTpjb2xsYXBzZTtmb250LXNpemU6
MTNweDsiPicgKwogICAgICAgICAgICAgICAgICAgICc8dHIgc3R5bGU9ImJvcmRlci1ib3R0b206
MXB4IHNvbGlkIHZhcigtLWJvcmRlci1saWdodCk7Ij4nICsKICAgICAgICAgICAgICAgICAgICAg
ICAgJzx0ZCBzdHlsZT0icGFkZGluZzo4cHg7Zm9udC13ZWlnaHQ6NzAwO2NvbG9yOnZhcigtLXRl
eHQtaGVhZGluZyk7d2lkdGg6MTIwcHg7Ij4xLiBDU1M8L3RkPicgKwogICAgICAgICAgICAgICAg
ICAgICAgICAnPHRkIHN0eWxlPSJwYWRkaW5nOjhweDtjb2xvcjp2YXIoLS10ZXh0LXByaW1hcnkp
OyI+QWxsZXMgendpc2NoZW4gPGNvZGUgc3R5bGU9ImJhY2tncm91bmQ6dmFyKC0tYmctY2FyZC1h
bHQpO3BhZGRpbmc6MXB4IDRweDtib3JkZXItcmFkaXVzOjJweDsiPiZsdDtzdHlsZSZndDs8L2Nv
ZGU+IHVuZCA8Y29kZSBzdHlsZT0iYmFja2dyb3VuZDp2YXIoLS1iZy1jYXJkLWFsdCk7cGFkZGlu
ZzoxcHggNHB4O2JvcmRlci1yYWRpdXM6MnB4OyI+Jmx0Oy9zdHlsZSZndDs8L2NvZGU+IOKAkyBo
aWVyIHN0ZWhlbiA8c3Ryb25nPkZhcmJlbiwgU2NocmlmdGdyw7bDn2VuLCBBYnN0w6RuZGU8L3N0
cm9uZz4uIERhcyBpc3QgZGVyIEJlcmVpY2gsIGRlbiBpaHIgYW0gaMOkdWZpZ3N0ZW4gYW5wYXNz
ZW4gd2VyZGV0LjwvdGQ+JyArCiAgICAgICAgICAgICAgICAgICAgJzwvdHI+JyArCiAgICAgICAg
ICAgICAgICAgICAgJzx0ciBzdHlsZT0iYm9yZGVyLWJvdHRvbToxcHggc29saWQgdmFyKC0tYm9y
ZGVyLWxpZ2h0KTsiPicgKwogICAgICAgICAgICAgICAgICAgICAgICAnPHRkIHN0eWxlPSJwYWRk
aW5nOjhweDtmb250LXdlaWdodDo3MDA7Y29sb3I6dmFyKC0tdGV4dC1oZWFkaW5nKTsiPjIuIEhU
TUw8L3RkPicgKwogICAgICAgICAgICAgICAgICAgICAgICAnPHRkIHN0eWxlPSJwYWRkaW5nOjhw
eDtjb2xvcjp2YXIoLS10ZXh0LXByaW1hcnkpOyI+RGVyIG1pdHRsZXJlIFRlaWwg4oCTIGhpZXIg
c3RlaHQgZGllIDxzdHJvbmc+U3RydWt0dXI8L3N0cm9uZz46IEJ1dHRvbnMsIMOcYmVyc2Nocmlm
dGVuLCBFaW5nYWJlZmVsZGVyLiBUZXh0ZSB3aWUg4oCeUHLDvGZ1bmdlbiIgb2RlciDigJ5Hb3Zl
cm5hbmNlIiBmaW5kZXQgaWhyIGhpZXIuPC90ZD4nICsKICAgICAgICAgICAgICAgICAgICAnPC90
cj4nICsKICAgICAgICAgICAgICAgICAgICAnPHRyPicgKwogICAgICAgICAgICAgICAgICAgICAg
ICAnPHRkIHN0eWxlPSJwYWRkaW5nOjhweDtmb250LXdlaWdodDo3MDA7Y29sb3I6dmFyKC0tdGV4
dC1oZWFkaW5nKTsiPjMuIEphdmFTY3JpcHQ8L3RkPicgKwogICAgICAgICAgICAgICAgICAgICAg
ICAnPHRkIHN0eWxlPSJwYWRkaW5nOjhweDtjb2xvcjp2YXIoLS10ZXh0LXByaW1hcnkpOyI+QWxs
ZXMgendpc2NoZW4gPGNvZGUgc3R5bGU9ImJhY2tncm91bmQ6dmFyKC0tYmctY2FyZC1hbHQpO3Bh
ZGRpbmc6MXB4IDRweDtib3JkZXItcmFkaXVzOjJweDsiPiZsdDtzY3JpcHQmZ3Q7PC9jb2RlPiB1
bmQgPGNvZGUgc3R5bGU9ImJhY2tncm91bmQ6dmFyKC0tYmctY2FyZC1hbHQpO3BhZGRpbmc6MXB4
IDRweDtib3JkZXItcmFkaXVzOjJweDsiPiZsdDsvc2NyaXB0Jmd0OzwvY29kZT4g4oCTIGRpZSA8
c3Ryb25nPkxvZ2lrPC9zdHJvbmc+LiBIaWVyIHBhc3NpZXJ0IGFsbGVzLCB3YXMgYmVpIEtsaWNr
cywgU3BlaWNoZXJuIHVzdy4gYXVzZ2Vmw7xocnQgd2lyZC4gPHN0cm9uZyBzdHlsZT0iY29sb3I6
I2RjMzU0NTsiPlZPUlNJQ0hUOiDDhG5kZXJ1bmdlbiBoaWVyIGvDtm5uZW4gZGFzIGdlc2FtdGUg
U3lzdGVtIGthcHV0dG1hY2hlbiE8L3N0cm9uZz48L3RkPicgKwogICAgICAgICAgICAgICAgICAg
ICc8L3RyPicgKwogICAgICAgICAgICAgICAgJzwvdGFibGU+JyArCiAgICAgICAgICAgICc8L2Rp
dj4nICsKCiAgICAgICAgICAgICc8ZGl2IHN0eWxlPSJiYWNrZ3JvdW5kOnZhcigtLWJnLWNhcmQp
O2JvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyLWxpZ2h0KTtib3JkZXItcmFkaXVzOjhweDtw
YWRkaW5nOjE2cHggMjBweDttYXJnaW4tYm90dG9tOjE0cHg7Ij4nICsKICAgICAgICAgICAgICAg
ICc8aDMgc3R5bGU9ImNvbG9yOnZhcigtLXRleHQtaGVhZGluZyk7Zm9udC1zaXplOjE1cHg7bWFy
Z2luLWJvdHRvbTo4cHg7Ij5GYXJiZW4gw6RuZGVybiDigJMgc28gZ2VodFwnczwvaDM+JyArCiAg
ICAgICAgICAgICAgICAnPHAgc3R5bGU9ImZvbnQtc2l6ZToxM3B4O2xpbmUtaGVpZ2h0OjEuNztj
b2xvcjp2YXIoLS10ZXh0LXByaW1hcnkpO21hcmdpbi1ib3R0b206MTBweDsiPicgKwogICAgICAg
ICAgICAgICAgICAgICdHYW56IG9iZW4gaW4gZGVyIERhdGVpIChjYS4gWmVpbGUgMTYpIHN0ZWh0
IGVpbiBCbG9jayBtaXQgPHN0cm9uZz5DU1MtVmFyaWFibGVuPC9zdHJvbmc+LiBEYXMgc2luZCBk
aWUg4oCeR3J1bmRmYXJiZW4iIGRlcyBnZXNhbXRlbiBTeXN0ZW1zLiAnICsKICAgICAgICAgICAg
ICAgICAgICAnV2VubiBpaHIgaGllciBlaW5lIEZhcmJlIMOkbmRlcnQsIMOkbmRlcnQgc2llIHNp
Y2ggPHN0cm9uZz7DvGJlcmFsbDwvc3Ryb25nPiBhdWYgZGVyIFNlaXRlOicgKwogICAgICAgICAg
ICAgICAgJzwvcD4nICsKICAgICAgICAgICAgICAgICc8cHJlIHN0eWxlPSJiYWNrZ3JvdW5kOnZh
cigtLWJnLWNhcmQtYWx0KTtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlci1saWdodCk7Ym9y
ZGVyLXJhZGl1czo2cHg7cGFkZGluZzoxMnB4IDE2cHg7Zm9udC1zaXplOjEycHg7bGluZS1oZWln
aHQ6MS44O292ZXJmbG93LXg6YXV0bztjb2xvcjp2YXIoLS10ZXh0LXByaW1hcnkpOyI+JyArCic6
cm9vdCB7JyArICdcXG4nICsKJyAgICAtLWJnLXByaW1hcnk6ICMxYTIzMzI7ICAgICAgPHNwYW4g
c3R5bGU9ImNvbG9yOnZhcigtLXRleHQtbXV0ZWQpOyI+LyogS29wZnplaWxlIChkdW5rbGVzIEJs
YXUpICovPC9zcGFuPicgKyAnXFxuJyArCicgICAgLS1iZy1ib2R5OiAjZjVmNWY1OyAgICAgICAg
IDxzcGFuIHN0eWxlPSJjb2xvcjp2YXIoLS10ZXh0LW11dGVkKTsiPi8qIFNlaXRlbmhpbnRlcmdy
dW5kIChoZWxsZ3JhdSkgKi88L3NwYW4+JyArICdcXG4nICsKJyAgICAtLWJnLWNhcmQ6ICNmZmZm
ZmY7ICAgICAgICAgPHNwYW4gc3R5bGU9ImNvbG9yOnZhcigtLXRleHQtbXV0ZWQpOyI+LyogS2Fy
dGVuL0JveGVuICh3ZWnDnykgKi88L3NwYW4+JyArICdcXG4nICsKJyAgICAtLXRleHQtcHJpbWFy
eTogIzMzMzsgICAgICAgPHNwYW4gc3R5bGU9ImNvbG9yOnZhcigtLXRleHQtbXV0ZWQpOyI+Lyog
Tm9ybWFsZXIgVGV4dCAoZHVua2VsZ3JhdSkgKi88L3NwYW4+JyArICdcXG4nICsKJyAgICAtLXRl
eHQtaGVhZGluZzogIzJFNEE2MjsgICAgPHNwYW4gc3R5bGU9ImNvbG9yOnZhcigtLXRleHQtbXV0
ZWQpOyI+Lyogw5xiZXJzY2hyaWZ0ZW4gKFBvbGl6ZWktQmxhdSkgKi88L3NwYW4+JyArICdcXG4n
ICsKJyAgICAtLWJvcmRlci1jb2xvcjogI2RkZDsgICAgICAgPHNwYW4gc3R5bGU9ImNvbG9yOnZh
cigtLXRleHQtbXV0ZWQpOyI+LyogUmFobWVubGluaWVuIChoZWxsZ3JhdSkgKi88L3NwYW4+JyAr
ICdcXG4nICsKJ30nICsKICAgICAgICAgICAgICAgICc8L3ByZT4nICsKICAgICAgICAgICAgICAg
ICc8cCBzdHlsZT0iZm9udC1zaXplOjEzcHg7bGluZS1oZWlnaHQ6MS43O2NvbG9yOnZhcigtLXRl
eHQtcHJpbWFyeSk7bWFyZ2luLXRvcDoxMHB4OyI+JyArCiAgICAgICAgICAgICAgICAgICAgJzxz
dHJvbmc+QmVpc3BpZWw6PC9zdHJvbmc+IElociB3b2xsdCBkaWUgS29wZnplaWxlIHJvdCBtYWNo
ZW4/IMOEbmRlcnQgPGNvZGUgc3R5bGU9ImJhY2tncm91bmQ6dmFyKC0tYmctY2FyZC1hbHQpO3Bh
ZGRpbmc6MXB4IDRweDtib3JkZXItcmFkaXVzOjJweDsiPiMxYTIzMzI8L2NvZGU+ICcgKwogICAg
ICAgICAgICAgICAgICAgICdoaW50ZXIgPGNvZGUgc3R5bGU9ImJhY2tncm91bmQ6dmFyKC0tYmct
Y2FyZC1hbHQpO3BhZGRpbmc6MXB4IDRweDtib3JkZXItcmFkaXVzOjJweDsiPi0tYmctcHJpbWFy
eTwvY29kZT4genUgPGNvZGUgc3R5bGU9ImJhY2tncm91bmQ6dmFyKC0tYmctY2FyZC1hbHQpO3Bh
ZGRpbmc6MXB4IDRweDtib3JkZXItcmFkaXVzOjJweDsiPiNjYzAwMDA8L2NvZGU+LiBTcGVpY2hl
cm4sIFNlaXRlIG5ldSBsYWRlbiDigJMgZmVydGlnLicgKwogICAgICAgICAgICAgICAgJzwvcD4n
ICsKICAgICAgICAgICAgICAgICc8cCBzdHlsZT0iZm9udC1zaXplOjEzcHg7bGluZS1oZWlnaHQ6
MS43O2NvbG9yOnZhcigtLXRleHQtcHJpbWFyeSk7bWFyZ2luLXRvcDo2cHg7Ij4nICsKICAgICAg
ICAgICAgICAgICAgICAnPHN0cm9uZz5UaXBwOjwvc3Ryb25nPiBGYXJiZW4gc2luZCBhbHMg4oCe
SGV4LUNvZGVzIiBhbmdlZ2ViZW4gKHouQi4gPGNvZGUgc3R5bGU9ImJhY2tncm91bmQ6dmFyKC0t
YmctY2FyZC1hbHQpO3BhZGRpbmc6MXB4IDRweDtib3JkZXItcmFkaXVzOjJweDsiPiMyRTRBNjI8
L2NvZGU+KS4gJyArCiAgICAgICAgICAgICAgICAgICAgJ1N1Y2h0IGltIEludGVybmV0IG5hY2gg
4oCeSFRNTCBDb2xvciBQaWNrZXIiIOKAkyBkYSBrw7ZubnQgaWhyIEZhcmJlbiB2aXN1ZWxsIGF1
c3fDpGhsZW4gdW5kIGRlbiBDb2RlIGtvcGllcmVuLicgKwogICAgICAgICAgICAgICAgJzwvcD4n
ICsKICAgICAgICAgICAgJzwvZGl2PicgKwoKICAgICAgICAgICAgJzxkaXYgc3R5bGU9ImJhY2tn
cm91bmQ6dmFyKC0tYmctY2FyZCk7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXItbGlnaHQp
O2JvcmRlci1yYWRpdXM6OHB4O3BhZGRpbmc6MTZweCAyMHB4O21hcmdpbi1ib3R0b206MTRweDsi
PicgKwogICAgICAgICAgICAgICAgJzxoMyBzdHlsZT0iY29sb3I6dmFyKC0tdGV4dC1oZWFkaW5n
KTtmb250LXNpemU6MTVweDttYXJnaW4tYm90dG9tOjhweDsiPk5hY2h0LU1vZHVzIEZhcmJlbiDD
pG5kZXJuPC9oMz4nICsKICAgICAgICAgICAgICAgICc8cCBzdHlsZT0iZm9udC1zaXplOjEzcHg7
bGluZS1oZWlnaHQ6MS43O2NvbG9yOnZhcigtLXRleHQtcHJpbWFyeSk7Ij4nICsKICAgICAgICAg
ICAgICAgICAgICAnRGlyZWt0IHVudGVyIGRlbSA8Y29kZSBzdHlsZT0iYmFja2dyb3VuZDp2YXIo
LS1iZy1jYXJkLWFsdCk7cGFkZGluZzoxcHggNHB4O2JvcmRlci1yYWRpdXM6MnB4OyI+OnJvb3Q8
L2NvZGU+LUJsb2NrIChjYS4gWmVpbGUgNDEpIHN0ZWh0IGVpbiB6d2VpdGVyIEJsb2NrIG1pdCAn
ICsKICAgICAgICAgICAgICAgICAgICAnPGNvZGUgc3R5bGU9ImJhY2tncm91bmQ6dmFyKC0tYmct
Y2FyZC1hbHQpO3BhZGRpbmc6MXB4IDRweDtib3JkZXItcmFkaXVzOjJweDsiPltkYXRhLXRoZW1l
PSJuaWdodCJdPC9jb2RlPi4gRGFzIHNpbmQgZGllIEZhcmJlbiBmw7xyIGRlbiA8c3Ryb25nPkR1
bmtlbG1vZHVzPC9zdHJvbmc+LiAnICsKICAgICAgICAgICAgICAgICAgICAnR2xlaWNoZSBWYXJp
YWJsZW4tTmFtZW4sIGFuZGVyZSBXZXJ0ZS4gV2VubiBpaHIgei5CLiBkZW4gSGludGVyZ3J1bmQg
aW0gRHVua2VsbW9kdXMgaGVsbGVyIHdvbGx0LCDDpG5kZXJ0IGlociAnICsKICAgICAgICAgICAg
ICAgICAgICAnPGNvZGUgc3R5bGU9ImJhY2tncm91bmQ6dmFyKC0tYmctY2FyZC1hbHQpO3BhZGRp
bmc6MXB4IDRweDtib3JkZXItcmFkaXVzOjJweDsiPi0tYmctYm9keTwvY29kZT4gZG9ydC4nICsK
ICAgICAgICAgICAgICAgICc8L3A+JyArCiAgICAgICAgICAgICc8L2Rpdj4nICsKCiAgICAgICAg
ICAgICc8ZGl2IHN0eWxlPSJiYWNrZ3JvdW5kOnZhcigtLWJnLWNhcmQpO2JvcmRlcjoxcHggc29s
aWQgdmFyKC0tYm9yZGVyLWxpZ2h0KTtib3JkZXItcmFkaXVzOjhweDtwYWRkaW5nOjE2cHggMjBw
eDttYXJnaW4tYm90dG9tOjE0cHg7Ij4nICsKICAgICAgICAgICAgICAgICc8aDMgc3R5bGU9ImNv
bG9yOnZhcigtLXRleHQtaGVhZGluZyk7Zm9udC1zaXplOjE1cHg7bWFyZ2luLWJvdHRvbTo4cHg7
Ij5UZXh0ZSB1bmQgQmVzY2hyaWZ0dW5nZW4gw6RuZGVybjwvaDM+JyArCiAgICAgICAgICAgICAg
ICAnPHAgc3R5bGU9ImZvbnQtc2l6ZToxM3B4O2xpbmUtaGVpZ2h0OjEuNztjb2xvcjp2YXIoLS10
ZXh0LXByaW1hcnkpO21hcmdpbi1ib3R0b206MTBweDsiPicgKwogICAgICAgICAgICAgICAgICAg
ICdOdXR6dCBkaWUgPHN0cm9uZz5TdWNoZW4tRnVua3Rpb248L3N0cm9uZz4gZXVyZXMgRWRpdG9y
cyAoU3RyZytGKSB1bmQgc3VjaHQgbmFjaCBkZW0gVGV4dCwgZGVuIGlociDDpG5kZXJuIHdvbGx0
LiBCZWlzcGllbGU6JyArCiAgICAgICAgICAgICAgICAnPC9wPicgKwogICAgICAgICAgICAgICAg
Jzx1bCBzdHlsZT0iZm9udC1zaXplOjEzcHg7bGluZS1oZWlnaHQ6Mjtjb2xvcjp2YXIoLS10ZXh0
LXByaW1hcnkpO3BhZGRpbmctbGVmdDoyMHB4OyI+JyArCiAgICAgICAgICAgICAgICAgICAgJzxs
aT5Lb3BmemVpbGUg4oCeRGlnaXRhbGVzIFJlc3NvdXJjZW4tIHVuZCBJbmZvcm1hdGlvbnNwb3J0
YWwgVmVya2VociIg4oaSIHN1Y2h0IGdlbmF1IGRpZXNlbiBUZXh0PC9saT4nICsKICAgICAgICAg
ICAgICAgICAgICAnPGxpPkZvb3Rlci1UZXh0IOKAnkQuUi5JLlYuRS4gLSBQb2xpemVpIE5SVyIg
4oaSIHN1Y2h0IGRpZXNlbiBUZXh0PC9saT4nICsKICAgICAgICAgICAgICAgICAgICAnPGxpPkJ1
dHRvbi1CZXNjaHJpZnR1bmdlbiB3aWUg4oCeQmVhcmJlaXRlbiIsIOKAnkzDtnNjaGVuIiDihpIg
c3VjaHQgZGVuIEJ1dHRvbi1UZXh0PC9saT4nICsKICAgICAgICAgICAgICAgICAgICAnPGxpPkth
dGVnb3JpZW4gd2llIOKAnlZlcmtlaHIiLCDigJ5TaWNoZXJoZWl0IiDihpIgZGllc2Ugc3RlaGVu
IGluIDxjb2RlIHN0eWxlPSJiYWNrZ3JvdW5kOnZhcigtLWJnLWNhcmQtYWx0KTtwYWRkaW5nOjFw
eCA0cHg7Ym9yZGVyLXJhZGl1czoycHg7Ij5kYXRhL2NvbmZpZy5qc29uPC9jb2RlPiAobmljaHQg
aW4gaW5kZXguaHRtbCEpPC9saT4nICsKICAgICAgICAgICAgICAgICc8L3VsPicgKwogICAgICAg
ICAgICAnPC9kaXY+JyArCgogICAgICAgICAgICAnPGRpdiBzdHlsZT0iYmFja2dyb3VuZDp2YXIo
LS1iZy1jYXJkKTtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlci1saWdodCk7Ym9yZGVyLXJh
ZGl1czo4cHg7cGFkZGluZzoxNnB4IDIwcHg7bWFyZ2luLWJvdHRvbToxNHB4OyI+JyArCiAgICAg
ICAgICAgICAgICAnPGgzIHN0eWxlPSJjb2xvcjp2YXIoLS10ZXh0LWhlYWRpbmcpO2ZvbnQtc2l6
ZToxNXB4O21hcmdpbi1ib3R0b206OHB4OyI+QnJvd3Nlci1FbnR3aWNrbGVydG9vbHMgbnV0emVu
IChkZXIgYmVzdGUgVHJpY2shKTwvaDM+JyArCiAgICAgICAgICAgICAgICAnPHAgc3R5bGU9ImZv
bnQtc2l6ZToxM3B4O2xpbmUtaGVpZ2h0OjEuNztjb2xvcjp2YXIoLS10ZXh0LXByaW1hcnkpO21h
cmdpbi1ib3R0b206MTBweDsiPicgKwogICAgICAgICAgICAgICAgICAgICdEcsO8Y2t0IGltIEJy
b3dzZXIgPHN0cm9uZz5GMTI8L3N0cm9uZz4gKG9kZXIgUmVjaHRza2xpY2sg4oaSIOKAnlVudGVy
c3VjaGVuIikuIEVzIMO2ZmZuZXQgc2ljaCBlaW4gV2Vya3pldWctRmVuc3Rlci4gRGFtaXQga8O2
bm50IGlocjonICsKICAgICAgICAgICAgICAgICc8L3A+JyArCiAgICAgICAgICAgICAgICAnPG9s
IHN0eWxlPSJmb250LXNpemU6MTNweDtsaW5lLWhlaWdodDoyO2NvbG9yOnZhcigtLXRleHQtcHJp
bWFyeSk7cGFkZGluZy1sZWZ0OjIwcHg7Ij4nICsKICAgICAgICAgICAgICAgICAgICAnPGxpPk1p
dCBkZW0gPHN0cm9uZz5BdXN3YWhsLVdlcmt6ZXVnPC9zdHJvbmc+IChQZmVpbC1JY29uIG9iZW4g
bGlua3MgaW0gV2Vya3pldWcpIGF1ZiBlaW4gYmVsaWViaWdlcyBFbGVtZW50IGtsaWNrZW48L2xp
PicgKwogICAgICAgICAgICAgICAgICAgICc8bGk+SW0gcmVjaHRlbiBCZXJlaWNoIHNlaHQgaWhy
IGRpZSA8c3Ryb25nPkNTUy1FaWdlbnNjaGFmdGVuPC9zdHJvbmc+IGRpZXNlcyBFbGVtZW50czwv
bGk+JyArCiAgICAgICAgICAgICAgICAgICAgJzxsaT5JaHIga8O2bm50IEZhcmJlbiwgU2Nocmlm
dGdyw7bDn2VuIHVzdy4gPHN0cm9uZz5saXZlIMOkbmRlcm48L3N0cm9uZz4gdW5kIGRhcyBFcmdl
Ym5pcyBzb2ZvcnQgc2VoZW48L2xpPicgKwogICAgICAgICAgICAgICAgICAgICc8bGk+V2VubiBl
cyBndXQgYXVzc2llaHQ6IGRlbiBXZXJ0IG5vdGllcmVuIHVuZCBpbiBkZXIgZWNodGVuIERhdGVp
IMOkbmRlcm48L2xpPicgKwogICAgICAgICAgICAgICAgJzwvb2w+JyArCiAgICAgICAgICAgICAg
ICAnPHAgc3R5bGU9ImZvbnQtc2l6ZToxM3B4O2xpbmUtaGVpZ2h0OjEuNztjb2xvcjp2YXIoLS10
ZXh0LXByaW1hcnkpO21hcmdpbi10b3A6NnB4OyI+JyArCiAgICAgICAgICAgICAgICAgICAgJzxz
dHJvbmc+V2ljaHRpZzo8L3N0cm9uZz4gw4RuZGVydW5nZW4gaW0gQnJvd3Nlci1XZXJremV1ZyBz
aW5kIDxlbT50ZW1wb3LDpHI8L2VtPiDigJMgbmFjaCBkZW0gTmV1bGFkZW4gc2luZCBzaWUgd2Vn
LiAnICsKICAgICAgICAgICAgICAgICAgICAnWnVtIGRhdWVyaGFmdGVuIMOEbmRlcm4gbcO8c3N0
IGlociBkaWUgPGNvZGUgc3R5bGU9ImJhY2tncm91bmQ6dmFyKC0tYmctY2FyZC1hbHQpO3BhZGRp
bmc6MXB4IDRweDtib3JkZXItcmFkaXVzOjJweDsiPmluZGV4Lmh0bWw8L2NvZGU+IGJlYXJiZWl0
ZW4uJyArCiAgICAgICAgICAgICAgICAnPC9wPicgKwogICAgICAgICAgICAnPC9kaXY+JyArCgog
ICAgICAgICAgICAnPGRpdiBzdHlsZT0iYmFja2dyb3VuZDp2YXIoLS1iZy1jYXJkKTtib3JkZXI6
MXB4IHNvbGlkIHZhcigtLWJvcmRlci1saWdodCk7Ym9yZGVyLXJhZGl1czo4cHg7cGFkZGluZzox
NnB4IDIwcHg7bWFyZ2luLWJvdHRvbToxNHB4OyI+JyArCiAgICAgICAgICAgICAgICAnPGgzIHN0
eWxlPSJjb2xvcjp2YXIoLS10ZXh0LWhlYWRpbmcpO2ZvbnQtc2l6ZToxNXB4O21hcmdpbi1ib3R0
b206OHB4OyI+V2ljaHRpZ2UgRGF0ZWllbiBpbSDDnGJlcmJsaWNrPC9oMz4nICsKICAgICAgICAg
ICAgICAgICc8dGFibGUgc3R5bGU9IndpZHRoOjEwMCU7Ym9yZGVyLWNvbGxhcHNlOmNvbGxhcHNl
O2ZvbnQtc2l6ZToxM3B4OyI+JyArCiAgICAgICAgICAgICAgICAgICAgJzx0ciBzdHlsZT0iYm9y
ZGVyLWJvdHRvbToxcHggc29saWQgdmFyKC0tYm9yZGVyLWxpZ2h0KTsiPicgKwogICAgICAgICAg
ICAgICAgICAgICAgICAnPHRkIHN0eWxlPSJwYWRkaW5nOjhweDtmb250LXdlaWdodDo2MDA7Y29s
b3I6dmFyKC0tdGV4dC1oZWFkaW5nKTt3aWR0aDoyMDBweDsiPmluZGV4Lmh0bWw8L3RkPicgKwog
ICAgICAgICAgICAgICAgICAgICAgICAnPHRkIHN0eWxlPSJwYWRkaW5nOjhweDtjb2xvcjp2YXIo
LS10ZXh0LXByaW1hcnkpOyI+RGllIGtvbXBsZXR0ZSBBcHAg4oCTIEF1c3NlaGVuICsgTG9naWsu
IEhpZXIgw6RuZGVydCBpaHIgRmFyYmVuLCBUZXh0ZSwgTGF5b3V0LjwvdGQ+JyArCiAgICAgICAg
ICAgICAgICAgICAgJzwvdHI+JyArCiAgICAgICAgICAgICAgICAgICAgJzx0ciBzdHlsZT0iYm9y
ZGVyLWJvdHRvbToxcHggc29saWQgdmFyKC0tYm9yZGVyLWxpZ2h0KTsiPicgKwogICAgICAgICAg
ICAgICAgICAgICAgICAnPHRkIHN0eWxlPSJwYWRkaW5nOjhweDtmb250LXdlaWdodDo2MDA7Y29s
b3I6dmFyKC0tdGV4dC1oZWFkaW5nKTsiPmRhdGEvY29uZmlnLmpzb248L3RkPicgKwogICAgICAg
ICAgICAgICAgICAgICAgICAnPHRkIHN0eWxlPSJwYWRkaW5nOjhweDtjb2xvcjp2YXIoLS10ZXh0
LXByaW1hcnkpOyI+S2F0ZWdvcmllbiB1bmQgU3RhdHVzLURlZmluaXRpb25lbi4gSGllciBzdGVo
ZW4gZGllIDI3IEZhY2hiZXJlaWNoZS48L3RkPicgKwogICAgICAgICAgICAgICAgICAgICc8L3Ry
PicgKwogICAgICAgICAgICAgICAgICAgICc8dHIgc3R5bGU9ImJvcmRlci1ib3R0b206MXB4IHNv
bGlkIHZhcigtLWJvcmRlci1saWdodCk7Ij4nICsKICAgICAgICAgICAgICAgICAgICAgICAgJzx0
ZCBzdHlsZT0icGFkZGluZzo4cHg7Zm9udC13ZWlnaHQ6NjAwO2NvbG9yOnZhcigtLXRleHQtaGVh
ZGluZyk7Ij5kYXRhL2dvdmVybmFuY2UuanNvbjwvdGQ+JyArCiAgICAgICAgICAgICAgICAgICAg
ICAgICc8dGQgc3R5bGU9InBhZGRpbmc6OHB4O2NvbG9yOnZhcigtLXRleHQtcHJpbWFyeSk7Ij5S
b2xsZW4gKFN1cGVyVXNlciwgUmV2aWV3ZXIpLiA8c3Ryb25nPlZlcnNjaGzDvHNzZWx0PC9zdHJv
bmc+IOKAkyBudXIgw7xiZXIgZGllc2VzIFBhbmVsIGhpZXIgYmVhcmJlaXRiYXIhPC90ZD4nICsK
ICAgICAgICAgICAgICAgICAgICAnPC90cj4nICsKICAgICAgICAgICAgICAgICAgICAnPHRyIHN0
eWxlPSJib3JkZXItYm90dG9tOjFweCBzb2xpZCB2YXIoLS1ib3JkZXItbGlnaHQpOyI+JyArCiAg
ICAgICAgICAgICAgICAgICAgICAgICc8dGQgc3R5bGU9InBhZGRpbmc6OHB4O2ZvbnQtd2VpZ2h0
OjYwMDtjb2xvcjp2YXIoLS10ZXh0LWhlYWRpbmcpOyI+ZGF0YS9bS2F0ZWdvcmllXS8qLmpzb248
L3RkPicgKwogICAgICAgICAgICAgICAgICAgICAgICAnPHRkIHN0eWxlPSJwYWRkaW5nOjhweDtj
b2xvcjp2YXIoLS10ZXh0LXByaW1hcnkpOyI+RGllIGVpZ2VudGxpY2hlbiBEb2t1bWVudGUuIEpl
ZGVyIEFydGlrZWwgaXN0IGVpbmUgSlNPTi1EYXRlaSBpbSBLYXRlZ29yaWUtT3JkbmVyLjwvdGQ+
JyArCiAgICAgICAgICAgICAgICAgICAgJzwvdHI+JyArCiAgICAgICAgICAgICAgICAgICAgJzx0
ciBzdHlsZT0iYm9yZGVyLWJvdHRvbToxcHggc29saWQgdmFyKC0tYm9yZGVyLWxpZ2h0KTsiPicg
KwogICAgICAgICAgICAgICAgICAgICAgICAnPHRkIHN0eWxlPSJwYWRkaW5nOjhweDtmb250LXdl
aWdodDo2MDA7Y29sb3I6dmFyKC0tdGV4dC1oZWFkaW5nKTsiPnNlcnZlci5wczE8L3RkPicgKwog
ICAgICAgICAgICAgICAgICAgICAgICAnPHRkIHN0eWxlPSJwYWRkaW5nOjhweDtjb2xvcjp2YXIo
LS10ZXh0LXByaW1hcnkpOyI+RGVyIFNlcnZlciAoUG93ZXJTaGVsbCkuIFN0YXJ0ZXQgYXV0b21h
dGlzY2ggw7xiZXIgRFJJVkVfU3RhcnQuYmF0LjwvdGQ+JyArCiAgICAgICAgICAgICAgICAgICAg
JzwvdHI+JyArCiAgICAgICAgICAgICAgICAgICAgJzx0cj4nICsKICAgICAgICAgICAgICAgICAg
ICAgICAgJzx0ZCBzdHlsZT0icGFkZGluZzo4cHg7Zm9udC13ZWlnaHQ6NjAwO2NvbG9yOnZhcigt
LXRleHQtaGVhZGluZyk7Ij5EUklWRV9TdGFydC5iYXQ8L3RkPicgKwogICAgICAgICAgICAgICAg
ICAgICAgICAnPHRkIHN0eWxlPSJwYWRkaW5nOjhweDtjb2xvcjp2YXIoLS10ZXh0LXByaW1hcnkp
OyI+RG9wcGVsa2xpY2sgenVtIFN0YXJ0ZW4uIMOWZmZuZXQgZGVuIFNlcnZlciB1bmQgZGVuIEJy
b3dzZXIuPC90ZD4nICsKICAgICAgICAgICAgICAgICAgICAnPC90cj4nICsKICAgICAgICAgICAg
ICAgICc8L3RhYmxlPicgKwogICAgICAgICAgICAnPC9kaXY+JyArCgogICAgICAgICAgICAnPGRp
diBzdHlsZT0iYmFja2dyb3VuZDp2YXIoLS1iZy1jYXJkKTtib3JkZXI6MXB4IHNvbGlkIHZhcigt
LWJvcmRlci1saWdodCk7Ym9yZGVyLXJhZGl1czo4cHg7cGFkZGluZzoxNnB4IDIwcHg7bWFyZ2lu
LWJvdHRvbToxNHB4OyI+JyArCiAgICAgICAgICAgICAgICAnPGgzIHN0eWxlPSJjb2xvcjp2YXIo
LS10ZXh0LWhlYWRpbmcpO2ZvbnQtc2l6ZToxNXB4O21hcmdpbi1ib3R0b206OHB4OyI+SMOkdWZp
Z2UgQW5wYXNzdW5nZW4g4oCTIFNjaHJpdHQgZsO8ciBTY2hyaXR0PC9oMz4nICsKICAgICAgICAg
ICAgICAgICc8ZGl2IHN0eWxlPSJmb250LXNpemU6MTNweDtsaW5lLWhlaWdodDoxLjc7Y29sb3I6
dmFyKC0tdGV4dC1wcmltYXJ5KTsiPicgKwogICAgICAgICAgICAgICAgICAgICc8cCBzdHlsZT0i
Zm9udC13ZWlnaHQ6NzAwO21hcmdpbi10b3A6MTBweDtjb2xvcjp2YXIoLS10ZXh0LWhlYWRpbmcp
OyI+TG9nby9UaXRlbCBpbiBkZXIgS29wZnplaWxlIMOkbmRlcm46PC9wPicgKwogICAgICAgICAg
ICAgICAgICAgICc8cD5TdWNodCBuYWNoIOKAnkRpZ2l0YWxlcyBSZXNzb3VyY2VuLSB1bmQgSW5m
b3JtYXRpb25zcG9ydGFsIiBpbiBkZXIgaW5kZXguaHRtbC4gRGVyIFRleHQgc3RlaHQgaW0gSFRN
TC1CZXJlaWNoIGluIGVpbmVtIDxjb2RlIHN0eWxlPSJiYWNrZ3JvdW5kOnZhcigtLWJnLWNhcmQt
YWx0KTtwYWRkaW5nOjFweCA0cHg7Ym9yZGVyLXJhZGl1czoycHg7Ij4mbHQ7aGVhZGVyJmd0Ozwv
Y29kZT4tVGFnLjwvcD4nICsKCiAgICAgICAgICAgICAgICAgICAgJzxwIHN0eWxlPSJmb250LXdl
aWdodDo3MDA7bWFyZ2luLXRvcDoxMnB4O2NvbG9yOnZhcigtLXRleHQtaGVhZGluZyk7Ij5OZXVl
IEthdGVnb3JpZSBoaW56dWbDvGdlbjo8L3A+JyArCiAgICAgICAgICAgICAgICAgICAgJzxwPkdl
aHQgw7xiZXIgZGllc2VzIEdvdmVybmFuY2UtUGFuZWwgKEthdGVnb3JpZW4tU2VrdGlvbiB1bnRl
biBsaW5rcykuIEFsdGVybmF0aXY6IDxjb2RlIHN0eWxlPSJiYWNrZ3JvdW5kOnZhcigtLWJnLWNh
cmQtYWx0KTtwYWRkaW5nOjFweCA0cHg7Ym9yZGVyLXJhZGl1czoycHg7Ij5kYXRhL2NvbmZpZy5q
c29uPC9jb2RlPiDDtmZmbmVuIHVuZCBkZW4gS2F0ZWdvcmllbmFtZW4gaW4gZGllIExpc3RlIGVp
bmbDvGdlbi48L3A+JyArCgogICAgICAgICAgICAgICAgICAgICc8cCBzdHlsZT0iZm9udC13ZWln
aHQ6NzAwO21hcmdpbi10b3A6MTJweDtjb2xvcjp2YXIoLS10ZXh0LWhlYWRpbmcpOyI+U2Nocmlm
dGFydCDDpG5kZXJuOjwvcD4nICsKICAgICAgICAgICAgICAgICAgICAnPHA+U3VjaHQgbmFjaCA8
Y29kZSBzdHlsZT0iYmFja2dyb3VuZDp2YXIoLS1iZy1jYXJkLWFsdCk7cGFkZGluZzoxcHggNHB4
O2JvcmRlci1yYWRpdXM6MnB4OyI+Zm9udC1mYW1pbHk8L2NvZGU+IGluIGRlciBpbmRleC5odG1s
LiBEaWUgSGF1cHRzY2hyaWZ0YXJ0IHN0ZWh0IGJlaW0gPGNvZGUgc3R5bGU9ImJhY2tncm91bmQ6
dmFyKC0tYmctY2FyZC1hbHQpO3BhZGRpbmc6MXB4IDRweDtib3JkZXItcmFkaXVzOjJweDsiPmJv
ZHk8L2NvZGU+LUVsZW1lbnQuICcgKwogICAgICAgICAgICAgICAgICAgICdEYSBkYXMgU3lzdGVt
IG9mZmxpbmUgbMOkdWZ0LCBmdW5rdGlvbmllcmVuIG51ciBTY2hyaWZ0YXJ0ZW4sIGRpZSBhdWYg
ZGVtIFJlY2huZXIgaW5zdGFsbGllcnQgc2luZCAoei5CLiBBcmlhbCwgU2Vnb2UgVUksIENhbGli
cmkpLjwvcD4nICsKCiAgICAgICAgICAgICAgICAgICAgJzxwIHN0eWxlPSJmb250LXdlaWdodDo3
MDA7bWFyZ2luLXRvcDoxMnB4O2NvbG9yOnZhcigtLXRleHQtaGVhZGluZyk7Ij5TY2hyaWZ0Z3LD
tsOfZSDDpG5kZXJuOjwvcD4nICsKICAgICAgICAgICAgICAgICAgICAnPHA+U3VjaHQgbmFjaCA8
Y29kZSBzdHlsZT0iYmFja2dyb3VuZDp2YXIoLS1iZy1jYXJkLWFsdCk7cGFkZGluZzoxcHggNHB4
O2JvcmRlci1yYWRpdXM6MnB4OyI+Zm9udC1zaXplPC9jb2RlPiBpbSBDU1MtQmVyZWljaC4gV2Vy
dGUgd2llIDxjb2RlIHN0eWxlPSJiYWNrZ3JvdW5kOnZhcigtLWJnLWNhcmQtYWx0KTtwYWRkaW5n
OjFweCA0cHg7Ym9yZGVyLXJhZGl1czoycHg7Ij4xNHB4PC9jb2RlPiBvZGVyIDxjb2RlIHN0eWxl
PSJiYWNrZ3JvdW5kOnZhcigtLWJnLWNhcmQtYWx0KTtwYWRkaW5nOjFweCA0cHg7Ym9yZGVyLXJh
ZGl1czoycHg7Ij4xNnB4PC9jb2RlPiBiZXN0aW1tZW4gZGllIEdyw7bDn2UuIEdyw7bDn2VyZSBa
YWhsID0gZ3LDtsOfZXJlIFNjaHJpZnQuPC9wPicgKwoKICAgICAgICAgICAgICAgICAgICAnPHAg
c3R5bGU9ImZvbnQtd2VpZ2h0OjcwMDttYXJnaW4tdG9wOjEycHg7Y29sb3I6dmFyKC0tdGV4dC1o
ZWFkaW5nKTsiPlZvcmhhbmRlbmUgU2NobGFnd8O2cnRlciBhbnBhc3Nlbjo8L3A+JyArCiAgICAg
ICAgICAgICAgICAgICAgJzxwPlN1Y2h0IG5hY2ggPGNvZGUgc3R5bGU9ImJhY2tncm91bmQ6dmFy
KC0tYmctY2FyZC1hbHQpO3BhZGRpbmc6MXB4IDRweDtib3JkZXItcmFkaXVzOjJweDsiPlBSRURF
RklORURfS0VZV09SRFM8L2NvZGU+IGluIGRlciBpbmRleC5odG1sIChpbSBKYXZhU2NyaXB0LUJl
cmVpY2gpLiBEb3J0IHN0ZWh0IGRpZSBMaXN0ZSBkZXIgdm9yZGVmaW5pZXJ0ZW4gU2NobGFnd8O2
cnRlci4gJyArCiAgICAgICAgICAgICAgICAgICAgJ0Jlc3RlaGVuZGUgU2NobGFnd8O2cnRlciBr
w7ZubnQgaWhyIGF1Y2ggYmVxdWVtIMO8YmVyIOKAnlNjaGxhZ3fDtnJ0ZXIgdmVyd2FsdGVuIiBv
YmVuIGluIGRpZXNlbSBQYW5lbCB1bWJlbmVubmVuIG9kZXIgbMO2c2NoZW4uPC9wPicgKwogICAg
ICAgICAgICAgICAgJzwvZGl2PicgKwogICAgICAgICAgICAnPC9kaXY+JyArCgogICAgICAgICAg
ICAnPGRpdiBzdHlsZT0iYmFja2dyb3VuZDojZmZmM2NkO2JvcmRlcjoxcHggc29saWQgI2ZmYzEw
Nztib3JkZXItcmFkaXVzOjhweDtwYWRkaW5nOjE2cHggMjBweDttYXJnaW4tYm90dG9tOjE0cHg7
Y29sb3I6IzY2NGQwMzsiPicgKwogICAgICAgICAgICAgICAgJzxoMyBzdHlsZT0iZm9udC1zaXpl
OjE1cHg7bWFyZ2luLWJvdHRvbTo4cHg7Ij5XaWNodGlnZSBSZWdlbG48L2gzPicgKwogICAgICAg
ICAgICAgICAgJzx1bCBzdHlsZT0iZm9udC1zaXplOjEzcHg7bGluZS1oZWlnaHQ6MjtwYWRkaW5n
LWxlZnQ6MjBweDsiPicgKwogICAgICAgICAgICAgICAgICAgICc8bGk+PHN0cm9uZz5JbW1lciBl
aW5lIFNpY2hlcnVuZ3Nrb3BpZSBtYWNoZW48L3N0cm9uZz4gYmV2b3IgaWhyIGV0d2FzIMOkbmRl
cnQhIEtvcGllcnQgZGllIGluZGV4Lmh0bWwgdm9yaGVyIHouQi4gYWxzIGluZGV4X2JhY2t1cC5o
dG1sLjwvbGk+JyArCiAgICAgICAgICAgICAgICAgICAgJzxsaT48c3Ryb25nPk51ciBlaW5lIFNh
Y2hlIGF1ZiBlaW5tYWwgw6RuZGVybjwvc3Ryb25nPiwgZGFubiB0ZXN0ZW4uIFNvIGZpbmRldCBp
aHIgRmVobGVyIHNvZm9ydC48L2xpPicgKwogICAgICAgICAgICAgICAgICAgICc8bGk+PHN0cm9u
Zz5BbmbDvGhydW5nc3plaWNoZW4gdW5kIEtsYW1tZXJuPC9zdHJvbmc+IG3DvHNzZW4gaW1tZXIg
cGFhcndlaXNlIHZvcmtvbW1lbi4gRmVobHQgZWlucywgZ2VodCBkaWUgU2VpdGUga2FwdXR0Ljwv
bGk+JyArCiAgICAgICAgICAgICAgICAgICAgJzxsaT48c3Ryb25nPkZhcmItQ29kZXM8L3N0cm9u
Zz4gYmVnaW5uZW4gaW1tZXIgbWl0ICMgdW5kIGhhYmVuIDMgb2RlciA2IFplaWNoZW4gZGFoaW50
ZXIgKHouQi4gI2ZmZiBvZGVyICMyRTRBNjIpLjwvbGk+JyArCiAgICAgICAgICAgICAgICAgICAg
JzxsaT5JbSBad2VpZmVsOiA8c3Ryb25nPkJhY2t1cCB6dXLDvGNra29waWVyZW48L3N0cm9uZz4g
dW5kIG5vY2htYWwgdm9uIHZvcm5lLjwvbGk+JyArCiAgICAgICAgICAgICAgICAnPC91bD4nICsK
ICAgICAgICAgICAgJzwvZGl2PicgKwoKICAgICAgICAgICAgJzxkaXYgc3R5bGU9ImJhY2tncm91
bmQ6dmFyKC0tYmctY2FyZCk7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXItbGlnaHQpO2Jv
cmRlci1yYWRpdXM6OHB4O3BhZGRpbmc6MTZweCAyMHB4O21hcmdpbi1ib3R0b206MTRweDsiPicg
KwogICAgICAgICAgICAgICAgJzxoMyBzdHlsZT0iY29sb3I6dmFyKC0tdGV4dC1oZWFkaW5nKTtm
b250LXNpemU6MTVweDttYXJnaW4tYm90dG9tOjhweDsiPkZlaGxlciBnZW1hY2h0PyBLZWluIFBy
b2JsZW0hPC9oMz4nICsKICAgICAgICAgICAgICAgICc8cCBzdHlsZT0iZm9udC1zaXplOjEzcHg7
bGluZS1oZWlnaHQ6MS43O2NvbG9yOnZhcigtLXRleHQtcHJpbWFyeSk7Ij4nICsKICAgICAgICAg
ICAgICAgICAgICAnV2VubiBuYWNoIGVpbmVyIMOEbmRlcnVuZyBkaWUgU2VpdGUgbmljaHQgbWVo
ciBmdW5rdGlvbmllcnQ6JyArCiAgICAgICAgICAgICAgICAnPC9wPicgKwogICAgICAgICAgICAg
ICAgJzxvbCBzdHlsZT0iZm9udC1zaXplOjEzcHg7bGluZS1oZWlnaHQ6Mjtjb2xvcjp2YXIoLS10
ZXh0LXByaW1hcnkpO3BhZGRpbmctbGVmdDoyMHB4OyI+JyArCiAgICAgICAgICAgICAgICAgICAg
JzxsaT5Ccm93c2VyLVRhYiBzY2hsaWXDn2VuIChkZXIgU2VydmVyIGJlZW5kZXQgc2ljaCBhdXRv
bWF0aXNjaCBuYWNoIDIwIFNla3VuZGVuKTwvbGk+JyArCiAgICAgICAgICAgICAgICAgICAgJzxs
aT5FdXJlIFNpY2hlcnVuZ3Nrb3BpZSAoei5CLiBpbmRleF9iYWNrdXAuaHRtbCkgd2llZGVyIGFs
cyA8Y29kZSBzdHlsZT0iYmFja2dyb3VuZDp2YXIoLS1iZy1jYXJkLWFsdCk7cGFkZGluZzoxcHgg
NHB4O2JvcmRlci1yYWRpdXM6MnB4OyI+aW5kZXguaHRtbDwvY29kZT4gdW1iZW5lbm5lbjwvbGk+
JyArCiAgICAgICAgICAgICAgICAgICAgJzxsaT5EUklWRV9TdGFydC5iYXQgZG9wcGVsa2xpY2tl
biDigJMgZmVydGlnLCBhbGxlcyB3aWVkZXIgd2llIHZvcmhlcjwvbGk+JyArCiAgICAgICAgICAg
ICAgICAnPC9vbD4nICsKICAgICAgICAgICAgICAgICc8cCBzdHlsZT0iZm9udC1zaXplOjEzcHg7
bGluZS1oZWlnaHQ6MS43O2NvbG9yOnZhcigtLXRleHQtcHJpbWFyeSk7bWFyZ2luLXRvcDo2cHg7
Ij4nICsKICAgICAgICAgICAgICAgICAgICAnPHN0cm9uZz5FdXJlIEFydGlrZWwtRGF0ZW4gc2lu
ZCBzaWNoZXIhPC9zdHJvbmc+IERpZSBsaWVnZW4gaW0gPGNvZGUgc3R5bGU9ImJhY2tncm91bmQ6
dmFyKC0tYmctY2FyZC1hbHQpO3BhZGRpbmc6MXB4IDRweDtib3JkZXItcmFkaXVzOjJweDsiPmRh
dGEvPC9jb2RlPi1PcmRuZXIgdW5kIHdlcmRlbiBkdXJjaCDDhG5kZXJ1bmdlbiBhbiBkZXIgaW5k
ZXguaHRtbCBuaWNodCB2ZXLDpG5kZXJ0LicgKwogICAgICAgICAgICAgICAgJzwvcD4nICsKICAg
ICAgICAgICAgJzwvZGl2PicgKwoKICAgICAgICAnPC9kaXY+JzsKICAgIH0sCgogICAgLy8gPT09
IEltcG9ydCAvIEV4cG9ydCA9PT0KICAgIHNob3dJbXBvcnRFeHBvcnQoKSB7CiAgICAgICAgdmFy
IGJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZ292QWRtaW5Cb2R5Jyk7CiAgICAgICAg
dmFyIGRvY3MgPSBEcml2ZUZTLmRvY3VtZW50czsKICAgICAgICB2YXIga2F0ZWdvcmllbiA9IERy
aXZlRlMuY29uZmlnLmthdGVnb3JpZW4gfHwgW107CgogICAgICAgIHZhciBodG1sID0gJzxkaXYg
c3R5bGU9Im1heC13aWR0aDo4MDBweDttYXJnaW46MCBhdXRvOyI+JyArCiAgICAgICAgICAgICc8
aDIgc3R5bGU9ImNvbG9yOnZhcigtLXRleHQtaGVhZGluZyk7bWFyZ2luLWJvdHRvbToxNnB4OyI+
SW1wb3J0IC8gRXhwb3J0PC9oMj4nOwoKICAgICAgICAvLyA9PT0gRVhQT1JUID09PQogICAgICAg
IGh0bWwgKz0gJzxkaXYgY2xhc3M9Imdvdi1zZWN0aW9uIj4nICsKICAgICAgICAgICAgJzxkaXYg
Y2xhc3M9Imdvdi1zZWN0aW9uLXRpdGxlIj5FeHBvcnQ8L2Rpdj4nICsKICAgICAgICAgICAgJzxw
IHN0eWxlPSJmb250LXNpemU6MTJweDtjb2xvcjp2YXIoLS10ZXh0LW11dGVkKTttYXJnaW4tYm90
dG9tOjEwcHg7Ij5Xw6RobGUgS2F0ZWdvcmllbiBvZGVyIGVpbnplbG5lIEFydGlrZWwgYXVzLiBE
aWUgTWVkaWVuLVZlcmxpbmt1bmdlbiBibGVpYmVuIGluIGRlciBFeHBvcnQtRGF0ZWkgZXJoYWx0
ZW4uIERlbiA8Y29kZSBzdHlsZT0iYmFja2dyb3VuZDp2YXIoLS1iZy1jYXJkLWFsdCk7cGFkZGlu
ZzoxcHggNHB4O2JvcmRlci1yYWRpdXM6MnB4OyI+bWVkaWEvPC9jb2RlPi1PcmRuZXIgYml0dGUg
bWFudWVsbCBtaXRrb3BpZXJlbi48L3A+JyArCgogICAgICAgICAgICAvLyBLYXRlZ29yaWUtRmls
dGVyCiAgICAgICAgICAgICc8ZGl2IHN0eWxlPSJtYXJnaW4tYm90dG9tOjhweDsiPicgKwogICAg
ICAgICAgICAgICAgJzxsYWJlbCBzdHlsZT0iZm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NjAw
O2NvbG9yOnZhcigtLXRleHQtc2Vjb25kYXJ5KTtkaXNwbGF5OmJsb2NrO21hcmdpbi1ib3R0b206
NHB4OyI+S2F0ZWdvcmllbjwvbGFiZWw+JyArCiAgICAgICAgICAgICAgICAnPGRpdiBzdHlsZT0i
ZGlzcGxheTpmbGV4O2dhcDo0cHg7ZmxleC13cmFwOndyYXA7IiBpZD0iZXhwb3J0Q2F0RmlsdGVy
Ij4nOwogICAgICAgIGthdGVnb3JpZW4uZm9yRWFjaChmdW5jdGlvbihrYXQpIHsKICAgICAgICAg
ICAgdmFyIGNvdW50ID0gZG9jcy5maWx0ZXIoZnVuY3Rpb24oZCkgeyByZXR1cm4gZC5rYXRlZ29y
aWUgPT09IGthdDsgfSkubGVuZ3RoOwogICAgICAgICAgICBpZiAoY291bnQgPT09IDApIHJldHVy
bjsKICAgICAgICAgICAgaHRtbCArPSAnPGxhYmVsIGNsYXNzPSJnb3Yta3ctcGlsbCIgc3R5bGU9
ImN1cnNvcjpwb2ludGVyOyI+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBjbGFzcz0iZXhwb3J0LWNh
dC1jYiIgdmFsdWU9IicgKyBEcml2ZVBvcnRhbC5lc2NhcGVBdHRyKGthdCkgKyAnIiBjaGVja2Vk
IHN0eWxlPSJtYXJnaW4tcmlnaHQ6NHB4OyIgb25jaGFuZ2U9IkRyaXZlR292ZXJuYW5jZS5fZXhw
b3J0RmlsdGVyQnlDYXRlZ29yeSgpIj4gJyArIERyaXZlUG9ydGFsLmVzY2FwZUhUTUwoa2F0KSAr
ICcgPHNwYW4gY2xhc3M9Imt3LWNvdW50Ij4oJyArIGNvdW50ICsgJyk8L3NwYW4+PC9sYWJlbD4n
OwogICAgICAgIH0pOwogICAgICAgIGh0bWwgKz0gJzwvZGl2PjwvZGl2PicgKwoKICAgICAgICAg
ICAgLy8gQnV0dG9ucwogICAgICAgICAgICAnPGRpdiBzdHlsZT0ibWFyZ2luLWJvdHRvbTo4cHg7
ZGlzcGxheTpmbGV4O2dhcDo4cHg7Ij4nICsKICAgICAgICAgICAgICAgICc8YnV0dG9uIGNsYXNz
PSJnb3YtYWRkLWJ0biIgc3R5bGU9InBhZGRpbmc6NHB4IDEycHg7Zm9udC1zaXplOjEycHg7IiBv
bmNsaWNrPSJEcml2ZUdvdmVybmFuY2UuX2V4cG9ydFNlbGVjdEFsbCh0cnVlKSI+QWxsZSBBcnRp
a2VsPC9idXR0b24+JyArCiAgICAgICAgICAgICAgICAnPGJ1dHRvbiBjbGFzcz0iZ292LWFkZC1i
dG4iIHN0eWxlPSJwYWRkaW5nOjRweCAxMnB4O2ZvbnQtc2l6ZToxMnB4OyIgb25jbGljaz0iRHJp
dmVHb3Zlcm5hbmNlLl9leHBvcnRTZWxlY3RBbGwoZmFsc2UpIj5LZWluZSBBcnRpa2VsPC9idXR0
b24+JyArCiAgICAgICAgICAgICc8L2Rpdj4nICsKCiAgICAgICAgICAgIC8vIEFydGlrZWxsaXN0
ZQogICAgICAgICAgICAnPGRpdiBzdHlsZT0ibWF4LWhlaWdodDoyMjBweDtvdmVyZmxvdy15OmF1
dG87Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXItbGlnaHQpO2JvcmRlci1yYWRpdXM6NHB4
O3BhZGRpbmc6NHB4OyIgaWQ9ImV4cG9ydERvY0xpc3QiPic7CgogICAgICAgIGRvY3MuZm9yRWFj
aChmdW5jdGlvbihkb2MpIHsKICAgICAgICAgICAgdmFyIGhhc01lZGlhID0gZG9jLm1lZGlhcyAm
JiBkb2MubWVkaWFzLmxlbmd0aCA+IDA7CiAgICAgICAgICAgIGh0bWwgKz0gJzxsYWJlbCBjbGFz
cz0iZXhwb3J0LWRvYy1yb3ciIGRhdGEta2F0ZWdvcmllPSInICsgRHJpdmVQb3J0YWwuZXNjYXBl
QXR0cihkb2Mua2F0ZWdvcmllKSArICciIHN0eWxlPSJkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6
Y2VudGVyO2dhcDo4cHg7cGFkZGluZzo2cHggOHB4O2N1cnNvcjpwb2ludGVyO2JvcmRlci1ib3R0
b206MXB4IHNvbGlkIHZhcigtLWJvcmRlci1saWdodCk7Zm9udC1zaXplOjEzcHg7Ij4nICsKICAg
ICAgICAgICAgICAgICc8aW5wdXQgdHlwZT0iY2hlY2tib3giIGNsYXNzPSJleHBvcnQtZG9jLWNi
IiB2YWx1ZT0iJyArIERyaXZlUG9ydGFsLmVzY2FwZUF0dHIoZG9jLmlkKSArICciIGNoZWNrZWQ+
JyArCiAgICAgICAgICAgICAgICAnPHNwYW4gc3R5bGU9ImZsZXg6MTtjb2xvcjp2YXIoLS10ZXh0
LXByaW1hcnkpOyI+JyArIERyaXZlUG9ydGFsLmVzY2FwZUhUTUwoZG9jLnRpdGVsKSArICc8L3Nw
YW4+JyArCiAgICAgICAgICAgICAgICAnPHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMXB4O2NvbG9y
OnZhcigtLXRleHQtbXV0ZWQpOyI+JyArIERyaXZlUG9ydGFsLmVzY2FwZUhUTUwoZG9jLmthdGVn
b3JpZSkgKyAnPC9zcGFuPicgKwogICAgICAgICAgICAgICAgKGhhc01lZGlhID8gJzxzcGFuIHN0
eWxlPSJmb250LXNpemU6MTBweDtjb2xvcjp2YXIoLS10ZXh0LWhlYWRpbmcpOyI+JyArIGRvYy5t
ZWRpYXMubGVuZ3RoICsgJyBNZWRpZW48L3NwYW4+JyA6ICcnKSArCiAgICAgICAgICAgICc8L2xh
YmVsPic7CiAgICAgICAgfSk7CgogICAgICAgIGh0bWwgKz0gJzwvZGl2PicgKwogICAgICAgICAg
ICAnPGRpdiBzdHlsZT0ibWFyZ2luLXRvcDoxMHB4O2Rpc3BsYXk6ZmxleDtnYXA6OHB4O2FsaWdu
LWl0ZW1zOmNlbnRlcjsiPicgKwogICAgICAgICAgICAgICAgJzxsYWJlbCBzdHlsZT0iZm9udC1z
aXplOjEzcHg7Y29sb3I6dmFyKC0tdGV4dC1wcmltYXJ5KTtkaXNwbGF5OmZsZXg7YWxpZ24taXRl
bXM6Y2VudGVyO2dhcDo2cHg7Y3Vyc29yOnBvaW50ZXI7IiB0aXRsZT0iTWVkaWVuLVZlcmxpbmt1
bmdlbiBpbiBkZXIgRXhwb3J0LURhdGVpIGJlaWJlaGFsdGVuIj4nICsKICAgICAgICAgICAgICAg
ICAgICAnPGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0iZXhwb3J0SW5jbHVkZU1lZGlhIiBjaGVj
a2VkPiBNZWRpZW4tVmVybGlua3VuZ2VuIGJlaWJlaGFsdGVuJyArCiAgICAgICAgICAgICAgICAn
PC9sYWJlbD4nICsKICAgICAgICAgICAgICAgICc8c3BhbiBzdHlsZT0iZmxleDoxOyI+PC9zcGFu
PicgKwogICAgICAgICAgICAgICAgJzxidXR0b24gY2xhc3M9Imdvdi1hZGQtYnRuIiBzdHlsZT0i
cGFkZGluZzo4cHggMjBweDsiIG9uY2xpY2s9IkRyaXZlR292ZXJuYW5jZS5fZG9FeHBvcnQoKSI+
RXhwb3J0aWVyZW48L2J1dHRvbj4nICsKICAgICAgICAgICAgJzwvZGl2PicgKwogICAgICAgICc8
L2Rpdj4nOwoKICAgICAgICAvLyA9PT0gSU1QT1JUID09PQogICAgICAgIGh0bWwgKz0gJzxkaXYg
Y2xhc3M9Imdvdi1zZWN0aW9uIj4nICsKICAgICAgICAgICAgJzxkaXYgY2xhc3M9Imdvdi1zZWN0
aW9uLXRpdGxlIj5JbXBvcnQ8L2Rpdj4nICsKICAgICAgICAgICAgJzxwIHN0eWxlPSJmb250LXNp
emU6MTJweDtjb2xvcjp2YXIoLS10ZXh0LW11dGVkKTttYXJnaW4tYm90dG9tOjEwcHg7Ij5JbXBv
cnRpZXJlIGVpbmUgenV2b3IgZXhwb3J0aWVydGUgSlNPTi1EYXRlaS4gQXJ0aWtlbCB3ZXJkZW4g
YXV0b21hdGlzY2ggaW4gZGllIGVudHNwcmVjaGVuZGVuIEthdGVnb3JpZW4gZWluc29ydGllcnQu
IE5ldWUgS2F0ZWdvcmllbiB3ZXJkZW4gYmVpIEJlZGFyZiBhbmdlbGVndC48L3A+JyArCiAgICAg
ICAgICAgICc8ZGl2IHN0eWxlPSJkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2dh
cDo4cHg7Ij4nICsKICAgICAgICAgICAgICAgICc8ZGl2PicgKwogICAgICAgICAgICAgICAgICAg
ICc8bGFiZWwgc3R5bGU9ImZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjYwMDtjb2xvcjp2YXIo
LS10ZXh0LXNlY29uZGFyeSk7ZGlzcGxheTpibG9jazttYXJnaW4tYm90dG9tOjRweDsiPkV4cG9y
dC1EYXRlaSAoSlNPTik8L2xhYmVsPicgKwogICAgICAgICAgICAgICAgICAgICc8aW5wdXQgdHlw
ZT0iZmlsZSIgaWQ9ImltcG9ydEpzb25GaWxlIiBhY2NlcHQ9Ii5qc29uIiBzdHlsZT0iZm9udC1z
aXplOjEzcHg7Y29sb3I6dmFyKC0tdGV4dC1wcmltYXJ5KTsiPicgKwogICAgICAgICAgICAgICAg
JzwvZGl2PicgKwogICAgICAgICAgICAgICAgJzxwIHN0eWxlPSJmb250LXNpemU6MTFweDtjb2xv
cjp2YXIoLS10ZXh0LW11dGVkKTtsaW5lLWhlaWdodDoxLjU7bWFyZ2luLXRvcDo0cHg7Ij5GYWxs
cyBkaWUgRXhwb3J0LURhdGVpIE1lZGllbi1WZXJsaW5rdW5nZW4gZW50aMOkbHQsIGtvcGllcmUg
ZGVuIDxjb2RlIHN0eWxlPSJiYWNrZ3JvdW5kOnZhcigtLWJnLWNhcmQtYWx0KTtwYWRkaW5nOjFw
eCA0cHg7Ym9yZGVyLXJhZGl1czoycHg7Ij5tZWRpYS88L2NvZGU+LU9yZG5lciBkZXIgUXVlbGxl
IGluIGRhcyBaaWVsdmVyemVpY2huaXMsIGRhbWl0IGRpZSBBbmjDpG5nZSB2ZXJmw7xnYmFyIHNp
bmQuPC9wPicgKwogICAgICAgICAgICAgICAgJzxkaXYgc3R5bGU9Im1hcmdpbi10b3A6NnB4OyI+
JyArCiAgICAgICAgICAgICAgICAgICAgJzxidXR0b24gY2xhc3M9Imdvdi1hZGQtYnRuIiBzdHls
ZT0icGFkZGluZzo4cHggMjBweDsiIG9uY2xpY2s9IkRyaXZlR292ZXJuYW5jZS5fZG9JbXBvcnQo
KSI+SW1wb3J0aWVyZW48L2J1dHRvbj4nICsKICAgICAgICAgICAgICAgICc8L2Rpdj4nICsKICAg
ICAgICAgICAgJzwvZGl2PicgKwogICAgICAgICc8L2Rpdj4nOwoKICAgICAgICBodG1sICs9ICc8
L2Rpdj4nOwogICAgICAgIGJvZHkuaW5uZXJIVE1MID0gaHRtbDsKICAgIH0sCgogICAgX2V4cG9y
dFNlbGVjdEFsbChjaGVja2VkKSB7CiAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgn
LmV4cG9ydC1kb2MtY2I6bm90KDpkaXNhYmxlZCknKS5mb3JFYWNoKGZ1bmN0aW9uKGNiKSB7IGNi
LmNoZWNrZWQgPSBjaGVja2VkOyB9KTsKICAgIH0sCgogICAgX2V4cG9ydEZpbHRlckJ5Q2F0ZWdv
cnkoKSB7CiAgICAgICAgdmFyIHNlbGVjdGVkQ2F0cyA9IFtdOwogICAgICAgIGRvY3VtZW50LnF1
ZXJ5U2VsZWN0b3JBbGwoJy5leHBvcnQtY2F0LWNiOmNoZWNrZWQnKS5mb3JFYWNoKGZ1bmN0aW9u
KGNiKSB7IHNlbGVjdGVkQ2F0cy5wdXNoKGNiLnZhbHVlKTsgfSk7CiAgICAgICAgZG9jdW1lbnQu
cXVlcnlTZWxlY3RvckFsbCgnLmV4cG9ydC1kb2Mtcm93JykuZm9yRWFjaChmdW5jdGlvbihyb3cp
IHsKICAgICAgICAgICAgdmFyIGthdCA9IHJvdy5nZXRBdHRyaWJ1dGUoJ2RhdGEta2F0ZWdvcmll
Jyk7CiAgICAgICAgICAgIHZhciBjYiA9IHJvdy5xdWVyeVNlbGVjdG9yKCcuZXhwb3J0LWRvYy1j
YicpOwogICAgICAgICAgICBpZiAoc2VsZWN0ZWRDYXRzLmluY2x1ZGVzKGthdCkpIHsKICAgICAg
ICAgICAgICAgIHJvdy5zdHlsZS5kaXNwbGF5ID0gJyc7CiAgICAgICAgICAgICAgICBjYi5kaXNh
YmxlZCA9IGZhbHNlOwogICAgICAgICAgICAgICAgY2IuY2hlY2tlZCA9IHRydWU7CiAgICAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICByb3cuc3R5bGUuZGlzcGxheSA9ICdub25lJzsK
ICAgICAgICAgICAgICAgIGNiLmRpc2FibGVkID0gdHJ1ZTsKICAgICAgICAgICAgICAgIGNiLmNo
ZWNrZWQgPSBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgfSwKCiAgICBhc3lu
YyBfZG9FeHBvcnQoKSB7CiAgICAgICAgdmFyIHNlbGVjdGVkSWRzID0gW107CiAgICAgICAgZG9j
dW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmV4cG9ydC1kb2MtY2I6Y2hlY2tlZCcpLmZvckVhY2go
ZnVuY3Rpb24oY2IpIHsgc2VsZWN0ZWRJZHMucHVzaChjYi52YWx1ZSk7IH0pOwogICAgICAgIGlm
IChzZWxlY3RlZElkcy5sZW5ndGggPT09IDApIHsgc2hvd1RvYXN0KCdCaXR0ZSBtaW5kZXN0ZW5z
IGVpbmVuIEFydGlrZWwgYXVzd8OkaGxlbicsICd3YXJuaW5nJyk7IHJldHVybjsgfQoKICAgICAg
ICB2YXIgaW5jbHVkZU1lZGlhID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cG9ydEluY2x1
ZGVNZWRpYScpLmNoZWNrZWQ7CiAgICAgICAgdmFyIGV4cG9ydERvY3MgPSBEcml2ZUZTLmRvY3Vt
ZW50cy5maWx0ZXIoZnVuY3Rpb24oZCkgeyByZXR1cm4gc2VsZWN0ZWRJZHMuaW5jbHVkZXMoZC5p
ZCk7IH0pOwoKICAgICAgICAvLyBBcnRpa2VsIGJlcmVpbmlnZW4KICAgICAgICB2YXIgY2xlYW5E
b2NzID0gZXhwb3J0RG9jcy5tYXAoZnVuY3Rpb24oZG9jKSB7CiAgICAgICAgICAgIHZhciBjb3B5
ID0ge307CiAgICAgICAgICAgIGZvciAodmFyIGsgaW4gZG9jKSB7IGlmIChrLmNoYXJBdCgwKSAh
PT0gJ18nKSBjb3B5W2tdID0gZG9jW2tdOyB9CiAgICAgICAgICAgIHJldHVybiBjb3B5OwogICAg
ICAgIH0pOwoKICAgICAgICAvLyBNZWRpZW4tUGZhZGUgc2FtbWVsbiAoZnVlciBIaW53ZWlzKQog
ICAgICAgIHZhciBtZWRpYVBhdGhzID0gW107CiAgICAgICAgaWYgKGluY2x1ZGVNZWRpYSkgewog
ICAgICAgICAgICBjbGVhbkRvY3MuZm9yRWFjaChmdW5jdGlvbihkb2MpIHsKICAgICAgICAgICAg
ICAgIGlmIChkb2MubWVkaWFzKSBkb2MubWVkaWFzLmZvckVhY2goZnVuY3Rpb24obSkgewogICAg
ICAgICAgICAgICAgICAgIGlmIChtLnVybCkgbWVkaWFQYXRocy5wdXNoKG0udXJsKTsKICAgICAg
ICAgICAgICAgIH0pOwogICAgICAgICAgICB9KTsKICAgICAgICB9CgogICAgICAgIHZhciBleHBv
cnREYXRhID0gewogICAgICAgICAgICBleHBvcnRWZXJzaW9uOiAnMS4wJywKICAgICAgICAgICAg
ZXhwb3J0RGF0ZTogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLAogICAgICAgICAgICBleHBvcnRl
ZEJ5OiAoRHJpdmVGUy5lbnZpcm9uICYmIERyaXZlRlMuZW52aXJvbi51c2VybmFtZSkgfHwgJ1Vu
YmVrYW5udCcsCiAgICAgICAgICAgIGFydGljbGVDb3VudDogY2xlYW5Eb2NzLmxlbmd0aCwKICAg
ICAgICAgICAgYXJ0aWNsZXM6IGNsZWFuRG9jcywKICAgICAgICAgICAgbWVkaWFQYXRoczogbWVk
aWFQYXRocy5sZW5ndGggPiAwID8gbWVkaWFQYXRocyA6IHVuZGVmaW5lZAogICAgICAgIH07Cgog
ICAgICAgIC8vIEpTT04gaGVydW50ZXJsYWRlbgogICAgICAgIHZhciBqc29uU3RyID0gSlNPTi5z
dHJpbmdpZnkoZXhwb3J0RGF0YSwgbnVsbCwgMik7CiAgICAgICAgdmFyIGpzb25CbG9iID0gbmV3
IEJsb2IoW2pzb25TdHJdLCB7IHR5cGU6ICdhcHBsaWNhdGlvbi9qc29uJyB9KTsKICAgICAgICB2
YXIganNvblVybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoanNvbkJsb2IpOwogICAgICAgIHZhciBh
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpOwogICAgICAgIGEuaHJlZiA9IGpzb25Vcmw7
CiAgICAgICAgYS5kb3dubG9hZCA9ICdEUklWRV9FeHBvcnRfJyArIG5ldyBEYXRlKCkudG9JU09T
dHJpbmcoKS5zcGxpdCgnVCcpWzBdICsgJy5qc29uJzsKICAgICAgICBhLmNsaWNrKCk7CiAgICAg
ICAgVVJMLnJldm9rZU9iamVjdFVSTChqc29uVXJsKTsKCiAgICAgICAgdmFyIG1zZyA9IGNsZWFu
RG9jcy5sZW5ndGggKyAnIEFydGlrZWwgZXhwb3J0aWVydCc7CiAgICAgICAgaWYgKG1lZGlhUGF0
aHMubGVuZ3RoID4gMCkgewogICAgICAgICAgICBtc2cgKz0gJyAoJyArIG1lZGlhUGF0aHMubGVu
Z3RoICsgJyBNZWRpZW4tVmVybGlua3VuZ2VuIGVudGhhbHRlbiknOwogICAgICAgICAgICBzaG93
VG9hc3QobXNnLCAnc3VjY2VzcycsIDQwMDApOwogICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uKCkgewogICAgICAgICAgICAgICAgc2hvd1RvYXN0KCdCaXR0ZSBrb3BpZXJlIGRlbiBtZWRp
YS8tT3JkbmVyIG1hbnVlbGwgenVtIFppZWwsIGRhbWl0IGRpZSBBbmjDpG5nZSB2ZXJmw7xnYmFy
IGJsZWliZW4uJywgJ2luZm8nLCA2MDAwKTsKICAgICAgICAgICAgfSwgMTUwMCk7CiAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgc2hvd1RvYXN0KG1zZywgJ3N1Y2Nlc3MnKTsKICAgICAgICB9
CiAgICB9LAoKICAgIGFzeW5jIF9kb0ltcG9ydCgpIHsKICAgICAgICB2YXIganNvbklucHV0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ltcG9ydEpzb25GaWxlJyk7CiAgICAgICAgaWYgKCFq
c29uSW5wdXQuZmlsZXMgfHwganNvbklucHV0LmZpbGVzLmxlbmd0aCA9PT0gMCkgewogICAgICAg
ICAgICBzaG93VG9hc3QoJ0JpdHRlIGVpbmUgSlNPTi1EYXRlaSBhdXN3w6RobGVuJywgJ3dhcm5p
bmcnKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgdHJ5IHsKICAgICAg
ICAgICAgc2hvd1RvYXN0KCdJbXBvcnQgd2lyZCB2ZXJhcmJlaXRldC4uLicsICdpbmZvJywgMzAw
MCk7CiAgICAgICAgICAgIHZhciBqc29uVGV4dCA9IGF3YWl0IGpzb25JbnB1dC5maWxlc1swXS50
ZXh0KCk7CiAgICAgICAgICAgIHZhciBpbXBvcnREYXRhID0gSlNPTi5wYXJzZShqc29uVGV4dCk7
CgogICAgICAgICAgICBpZiAoIWltcG9ydERhdGEuYXJ0aWNsZXMgfHwgIUFycmF5LmlzQXJyYXko
aW1wb3J0RGF0YS5hcnRpY2xlcykpIHsKICAgICAgICAgICAgICAgIHNob3dUb2FzdCgnVW5nw7xs
dGlnZXMgRXhwb3J0Zm9ybWF0OiBLZWluIGFydGljbGVzLUFycmF5IGdlZnVuZGVuJywgJ2Vycm9y
Jyk7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHZh
ciBhcnRpY2xlcyA9IGltcG9ydERhdGEuYXJ0aWNsZXM7CiAgICAgICAgICAgIHZhciBpbXBvcnRl
ZCA9IDA7CiAgICAgICAgICAgIHZhciBza2lwcGVkID0gMDsKICAgICAgICAgICAgdmFyIGhhc01l
ZGlhID0gISEoaW1wb3J0RGF0YS5tZWRpYVBhdGhzICYmIGltcG9ydERhdGEubWVkaWFQYXRocy5s
ZW5ndGggPiAwKTsKICAgICAgICAgICAgdmFyIGthdGVnb3JpZW4gPSBEcml2ZUZTLmNvbmZpZy5r
YXRlZ29yaWVuIHx8IFtdOwoKICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnRpY2xl
cy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgdmFyIGRvYyA9IGFydGljbGVzW2ldOwog
ICAgICAgICAgICAgICAgaWYgKCFkb2MuaWQgfHwgIWRvYy50aXRlbCB8fCAhZG9jLmthdGVnb3Jp
ZSkgeyBza2lwcGVkKys7IGNvbnRpbnVlOyB9CgogICAgICAgICAgICAgICAgLy8gS2F0ZWdvcmll
IGdnZi4gYW5sZWdlbgogICAgICAgICAgICAgICAgaWYgKCFrYXRlZ29yaWVuLmluY2x1ZGVzKGRv
Yy5rYXRlZ29yaWUpKSB7CiAgICAgICAgICAgICAgICAgICAga2F0ZWdvcmllbi5wdXNoKGRvYy5r
YXRlZ29yaWUpOwogICAgICAgICAgICAgICAgICAgIERyaXZlRlMuY29uZmlnLmthdGVnb3JpZW4g
PSBrYXRlZ29yaWVuOwogICAgICAgICAgICAgICAgICAgIERyaXZlRlMuc29ydEthdGVnb3JpZW4o
KTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAvLyBEb2t1bWVudCBzcGVpY2hl
cm4gKMO8YmVyc2NocmVpYmVuIG9kZXIgbmV1KQogICAgICAgICAgICAgICAgdmFyIGV4aXN0aW5n
ID0gRHJpdmVGUy5kb2N1bWVudHMuZmluZChmdW5jdGlvbihkKSB7IHJldHVybiBkLmlkID09PSBk
b2MuaWQ7IH0pOwogICAgICAgICAgICAgICAgaWYgKGV4aXN0aW5nKSB7CiAgICAgICAgICAgICAg
ICAgICAgT2JqZWN0LmFzc2lnbihleGlzdGluZywgZG9jKTsKICAgICAgICAgICAgICAgICAgICBh
d2FpdCBEcml2ZUZTLnNhdmVEb2N1bWVudChleGlzdGluZyk7CiAgICAgICAgICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgICAgICAgIERyaXZlRlMuZG9jdW1lbnRzLnB1c2goZG9jKTsKICAg
ICAgICAgICAgICAgICAgICBhd2FpdCBEcml2ZUZTLnNhdmVEb2N1bWVudChkb2MpOwogICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgaW1wb3J0ZWQrKzsKICAgICAgICAgICAgfQoKICAg
ICAgICAgICAgLy8gQ29uZmlnIHNwZWljaGVybiAobmV1ZSBLYXRlZ29yaWVuKQogICAgICAgICAg
ICBpZiAoRHJpdmVGUy5tb2RlID09PSAnc2VydmVyJykgewogICAgICAgICAgICAgICAgYXdhaXQg
ZmV0Y2goJy9hcGkvd3JpdGUnLCB7CiAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCcs
CiAgICAgICAgICAgICAgICAgICAgaGVhZGVyczogeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0
aW9uL2pzb247IGNoYXJzZXQ9dXRmLTgnIH0sCiAgICAgICAgICAgICAgICAgICAgYm9keTogSlNP
Ti5zdHJpbmdpZnkoeyBwYXRoOiAnZGF0YS9jb25maWcuanNvbicsIGRhdGE6IERyaXZlRlMuY29u
ZmlnIH0pCiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgYXdh
aXQgRHJpdmVGUy51cGRhdGVJbmRleCgpOwogICAgICAgICAgICBEcml2ZVBvcnRhbC5yZW5kZXIo
KTsKICAgICAgICAgICAgdGhpcy51cGRhdGVVSSgpOwoKICAgICAgICAgICAgdmFyIGltcG9ydE1z
ZyA9IGltcG9ydGVkICsgJyBBcnRpa2VsIGltcG9ydGllcnQnICsgKHNraXBwZWQgPiAwID8gJywg
JyArIHNraXBwZWQgKyAnIMO8YmVyc3BydW5nZW4nIDogJycpOwogICAgICAgICAgICBzaG93VG9h
c3QoaW1wb3J0TXNnLCAnc3VjY2VzcycpOwogICAgICAgICAgICBpZiAoaGFzTWVkaWEpIHsKICAg
ICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAg
c2hvd1RvYXN0KCdEaWUgaW1wb3J0aWVydGVuIEFydGlrZWwgZW50aGFsdGVuIE1lZGllbi1WZXJs
aW5rdW5nZW4uIEJpdHRlIHN0ZWxsZSBzaWNoZXIsIGRhc3MgZGVyIG1lZGlhLy1PcmRuZXIga29w
aWVydCB3dXJkZS4nLCAnaW5mbycsIDYwMDApOwogICAgICAgICAgICAgICAgfSwgMTUwMCk7CiAg
ICAgICAgICAgIH0KICAgICAgICB9IGNhdGNoKGUpIHsKICAgICAgICAgICAgc2hvd1RvYXN0KCdJ
bXBvcnQgZmVobGdlc2NobGFnZW46ICcgKyBlLm1lc3NhZ2UsICdlcnJvcicsIDUwMDApOwogICAg
ICAgIH0KICAgIH0sCgogICAgYXN5bmMgc2F2ZVNldHRpbmdzKCkgewogICAgICAgIGlmICghdGhp
cy5kYXRhKSByZXR1cm47CiAgICAgICAgY29uc3QgcHJldlNldHRpbmdzID0geyAuLi50aGlzLmRh
dGEuc2V0dGluZ3MgfTsKICAgICAgICB0aGlzLmRhdGEuc2V0dGluZ3MucmVxdWlyZUFwcHJvdmFs
Rm9yTmV3ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2dvdlJlcU5ldycpLmNoZWNrZWQ7CiAg
ICAgICAgdGhpcy5kYXRhLnNldHRpbmdzLnJlcXVpcmVBcHByb3ZhbEZvckVkaXQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnZ292UmVxRWRpdCcpLmNoZWNrZWQ7CiAgICAgICAgdmFyIGVsOwog
ICAgICAgIGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2dvdlNob3dDb250cmliJyk7IGlm
IChlbCkgdGhpcy5kYXRhLnNldHRpbmdzLnNob3dDb250cmlidXRvcnMgPSBlbC5jaGVja2VkOwog
ICAgICAgIGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2dvdlNob3dSZXZpZXdIaXN0Jyk7
IGlmIChlbCkgdGhpcy5kYXRhLnNldHRpbmdzLnNob3dSZXZpZXdIaXN0b3J5ID0gZWwuY2hlY2tl
ZDsKICAgICAgICBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdnb3ZLZXl3b3JkTW9kZScp
OyBpZiAoZWwpIHsKICAgICAgICAgICAgdGhpcy5kYXRhLnNldHRpbmdzLmtleXdvcmRNb2RlID0g
ZWwudmFsdWU7CiAgICAgICAgICAgIHRoaXMuZGF0YS5zZXR0aW5ncy5rZXl3b3Jkc1JlcXVpcmVk
ID0gKGVsLnZhbHVlID09PSAncmVxdWlyZWQnKTsKICAgICAgICB9CiAgICAgICAgZWwgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnZ292UmVqZWN0aW9uTW9kZScpOyBpZiAoZWwpIHsKICAgICAg
ICAgICAgdGhpcy5kYXRhLnNldHRpbmdzLnJlamVjdGlvblJlYXNvbk1vZGUgPSBlbC52YWx1ZTsK
ICAgICAgICB9CiAgICAgICAgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZ292Q3Jvc3Ns
aW5rTW9kZScpOyBpZiAoZWwpIHsKICAgICAgICAgICAgdGhpcy5kYXRhLnNldHRpbmdzLmNyb3Nz
bGlua01vZGUgPSBlbC52YWx1ZTsKICAgICAgICB9CiAgICAgICAgY29uc3Qgb2sgPSBhd2FpdCB0
aGlzLnNhdmVHb3Zlcm5hbmNlKCk7CiAgICAgICAgaWYgKG9rID09PSBmYWxzZSkgewogICAgICAg
ICAgICB0aGlzLmRhdGEuc2V0dGluZ3MgPSBwcmV2U2V0dGluZ3M7CiAgICAgICAgICAgIHRoaXMu
cmVuZGVyQWRtaW4oKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICB0aGlz
LnJlbmRlckFkbWluKCk7CiAgICAgICAgc2hvd1RvYXN0KCdFaW5zdGVsbHVuZ2VuIGdlc3BlaWNo
ZXJ0JywgJ3N1Y2Nlc3MnKTsKICAgIH0sCgogICAgYXN5bmMgc2F2ZUdvdmVybmFuY2UoKSB7CiAg
ICAgICAgdHJ5IHsKICAgICAgICAgICAgaWYgKERyaXZlRlMubW9kZSA9PT0gJ3NlcnZlcicpIHsK
ICAgICAgICAgICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoKCcvYXBpL2dvdmVybmFuY2Un
LCB7CiAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCcsCiAgICAgICAgICAgICAgICAg
ICAgaGVhZGVyczogeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9
dXRmLTgnIH0sCiAgICAgICAgICAgICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkodGhpcy5k
YXRhKQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBh
d2FpdCByZXMuanNvbigpOwogICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5lcnJvcikgewogICAg
ICAgICAgICAgICAgICAgIHNob3dUb2FzdCgnRmVobGVyOiAnICsgcmVzdWx0LmVycm9yLCAnZXJy
b3InLCA1MDAwKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgIH0gZWxzZSBpZiAoRHJpdmVGUy5tb2RlID09PSAnZmlsZXN5c3Rl
bScgJiYgRHJpdmVGUy5fZGF0YUhhbmRsZSkgewogICAgICAgICAgICAgICAgY29uc3QgZmggPSBh
d2FpdCBEcml2ZUZTLl9kYXRhSGFuZGxlLmdldEZpbGVIYW5kbGUoJ2dvdmVybmFuY2UuanNvbics
IHsgY3JlYXRlOiB0cnVlIH0pOwogICAgICAgICAgICAgICAgY29uc3Qgd3JpdGFibGUgPSBhd2Fp
dCBmaC5jcmVhdGVXcml0YWJsZSgpOwogICAgICAgICAgICAgICAgYXdhaXQgd3JpdGFibGUud3Jp
dGUoSlNPTi5zdHJpbmdpZnkodGhpcy5kYXRhLCBudWxsLCAyKSk7CiAgICAgICAgICAgICAgICBh
d2FpdCB3cml0YWJsZS5jbG9zZSgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHRoaXMuX2lz
U3VwZXJVc2VyID0gdGhpcy5fY2hlY2tTdXBlclVzZXIoKTsKICAgICAgICAgICAgdGhpcy51cGRh
dGVVSSgpOwogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9IGNhdGNoIChlcnIpIHsK
ICAgICAgICAgICAgc2hvd1RvYXN0KCdHb3Zlcm5hbmNlIHNwZWljaGVybiBmZWhsZ2VzY2hsYWdl
bjogJyArIGVyci5tZXNzYWdlLCAnZXJyb3InLCA1MDAwKTsKICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgIH0KICAgIH0sCgogICAgLy8gLS0tIEZyZWlnYWJldmVyYW50d29ydGxpY2hl
IChJbXByZXNzdW0pIC0tLQogICAgc2hvd0ltcHJpbnQoKSB7CiAgICAgICAgY29uc3QgYm9keSA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbXByaW50Qm9keScpOwogICAgICAgIGNvbnN0IGdv
diA9IHRoaXMuZGF0YTsKICAgICAgICBjb25zdCBpc1N0YXRpYyA9IERyaXZlRlMubW9kZSA9PT0g
J3N0YXRpYyc7CgogICAgICAgIGxldCBodG1sID0gJzxwIHN0eWxlPSJtYXJnaW4tYm90dG9tOjRw
eDsgZm9udC1zaXplOjE0cHg7IGNvbG9yOnZhcigtLXRleHQtc2Vjb25kYXJ5KTsiPsOcYmVyc2lj
aHQgZGVyIEZyZWlnYWJldmVyYW50d29ydGxpY2hlbiBpbSBELlIuSS5WLkUuIFBvcnRhbC48L3A+
PHAgc3R5bGU9Im1hcmdpbi1ib3R0b206MTVweDsgZm9udC1zaXplOjE0cHg7IGNvbG9yOnZhcigt
LXRleHQtc2Vjb25kYXJ5KTsiPkRpZXNlIFBlcnNvbmVuIHByw7xmZW4gdW5kIGdlbmVobWlnZW4g
QXJ0aWtlbCBpbiBkZW4gamV3ZWlsaWdlbiBLYXRlZ29yaWVuLjwvcD4nOwoKICAgICAgICBpZiAo
aXNTdGF0aWMpIHsKICAgICAgICAgICAgLy8gTGVzZW1vZHVzOiBLYXRlZ29yaWVuIG1pdCBadXN0
YWVuZGlna2VpdCAob2huZSBCZW51dHplci1JRHMpCiAgICAgICAgICAgIGh0bWwgKz0gJzxoMyBz
dHlsZT0iY29sb3I6dmFyKC0tdGV4dC1oZWFkaW5nKTsgbWFyZ2luLWJvdHRvbTo4cHg7Ij5adXN0
w6RuZGlna2VpdCBuYWNoIEthdGVnb3JpZTwvaDM+JzsKICAgICAgICAgICAgdmFyIHNSZXZpZXdl
cnMgPSAoZ292ICYmIGdvdi5yZXZpZXdlcnMpID8gZ292LnJldmlld2VycyA6IFtdOwogICAgICAg
ICAgICB2YXIgc0thdHMgPSAoRHJpdmVGUy5jb25maWcgJiYgRHJpdmVGUy5jb25maWcua2F0ZWdv
cmllbikgPyBEcml2ZUZTLmNvbmZpZy5rYXRlZ29yaWVuIDogW107CiAgICAgICAgICAgIHZhciBz
SGlkZGVuID0gKERyaXZlRlMuY29uZmlnICYmIERyaXZlRlMuY29uZmlnLmhpZGRlbkthdGVnb3Jp
ZW4pID8gRHJpdmVGUy5jb25maWcuaGlkZGVuS2F0ZWdvcmllbiA6IFtdOwogICAgICAgICAgICBp
ZiAoc0thdHMubGVuZ3RoID4gMCkgewogICAgICAgICAgICAgICAgaHRtbCArPSAnPHRhYmxlIGNs
YXNzPSJpbXByaW50LXRhYmxlIiBpZD0iaW1wcmludENhdFRhYmxlIj48dGhlYWQ+PHRyPicgKwog
ICAgICAgICAgICAgICAgICAgICc8dGggc3R5bGU9ImN1cnNvcjpwb2ludGVyOyIgb25jbGljaz0i
RHJpdmVHb3Zlcm5hbmNlLl9zb3J0SW1wcmludFRhYmxlKDApIj5LYXRlZ29yaWUg4oaVPC90aD4n
ICsKICAgICAgICAgICAgICAgICAgICAnPHRoIHN0eWxlPSJjdXJzb3I6cG9pbnRlcjsiIG9uY2xp
Y2s9IkRyaXZlR292ZXJuYW5jZS5fc29ydEltcHJpbnRUYWJsZSgxKSI+WnVzdMOkbmRpZyDihpU8
L3RoPicgKwogICAgICAgICAgICAgICAgJzwvdHI+PC90aGVhZD48dGJvZHk+JzsKICAgICAgICAg
ICAgICAgIHNLYXRzLmZpbHRlcihmdW5jdGlvbihrKSB7IHJldHVybiAhc0hpZGRlbi5pbmNsdWRl
cyhrKTsgfSkuZm9yRWFjaChmdW5jdGlvbihrYXQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIg
enVzdGFlbmRpZyA9IHNSZXZpZXdlcnMuZmlsdGVyKGZ1bmN0aW9uKHIpIHsgcmV0dXJuIChyLmth
dGVnb3JpZW4gfHwgW10pLmluY2x1ZGVzKGthdCk7IH0pOwogICAgICAgICAgICAgICAgICAgIGlm
ICh6dXN0YWVuZGlnLmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgenVzdGFl
bmRpZy5mb3JFYWNoKGZ1bmN0aW9uKHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0
bWwgKz0gJzx0cj48dGQ+PHN0cm9uZz4nICsgRHJpdmVQb3J0YWwuZXNjYXBlSFRNTChrYXQpICsg
Jzwvc3Ryb25nPjwvdGQ+JyArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzx0ZD4n
ICsgRHJpdmVQb3J0YWwuZXNjYXBlSFRNTChyLmRpc3BsYXlOYW1lIHx8ICctJykgKyAnPC90ZD48
L3RyPic7CiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGh0bWwgKz0gJzx0cj48dGQ+PHN0cm9uZz4n
ICsgRHJpdmVQb3J0YWwuZXNjYXBlSFRNTChrYXQpICsgJzwvc3Ryb25nPjwvdGQ+JyArCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnPHRkPjxlbSBzdHlsZT0iY29sb3I6dmFyKC0tdGV4dC1t
dXRlZCk7Ij5LZWluIFJldmlld2VyIHp1Z2V3aWVzZW48L2VtPjwvdGQ+PC90cj4nOwogICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgaHRtbCAr
PSAnPC90Ym9keT48L3RhYmxlPic7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAg
ICBodG1sICs9ICc8cCBzdHlsZT0iY29sb3I6dmFyKC0tdGV4dC1tdXRlZCk7Ij5LZWluZSBLYXRl
Z29yaWVuIHZlcmbDvGdiYXIuPC9wPic7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAvLyBTZXJ2ZXItTW9kdXM6IFZvbGxzdMOkbmRpZ2UgQW5zaWNodCBtaXQgYWxs
ZW4gUm9sbGVuCgogICAgICAgICAgICAvLyBTdXBlclVzZXIKICAgICAgICAgICAgaHRtbCArPSAn
PGgzIHN0eWxlPSJjb2xvcjp2YXIoLS10ZXh0LWhlYWRpbmcpOyBtYXJnaW4tYm90dG9tOjhweDsi
PlN5c3RlbWFkbWluaXN0cmF0aW9uPC9oMz4nOwogICAgICAgICAgICBodG1sICs9ICc8dGFibGUg
Y2xhc3M9ImltcHJpbnQtdGFibGUiPjx0aGVhZD48dHI+PHRoPk5hbWU8L3RoPjx0aD5CZW51dHpl
ci1JRDwvdGg+PHRoPlJvbGxlPC90aD48L3RyPjwvdGhlYWQ+PHRib2R5Pic7CiAgICAgICAgICAg
IGlmIChnb3YgJiYgZ292LnN1cGVyVXNlcnMpIHsKICAgICAgICAgICAgICAgIGdvdi5zdXBlclVz
ZXJzLmZvckVhY2goc3UgPT4gewogICAgICAgICAgICAgICAgICAgIGh0bWwgKz0gJzx0cj48dGQ+
JyArIERyaXZlUG9ydGFsLmVzY2FwZUhUTUwoc3UuZGlzcGxheU5hbWUgfHwgc3UudXNlcm5hbWUp
ICsgJzwvdGQ+JyArCiAgICAgICAgICAgICAgICAgICAgICAgICc8dGQ+JyArIERyaXZlUG9ydGFs
LmVzY2FwZUhUTUwoc3UudXNlcm5hbWUpICsgJzwvdGQ+JyArCiAgICAgICAgICAgICAgICAgICAg
ICAgICc8dGQgc3R5bGU9ImZvbnQtd2VpZ2h0OjYwMDsgY29sb3I6dmFyKC0tdGV4dC1oZWFkaW5n
KTsiPlN1cGVyVXNlcjwvdGQ+PC90cj4nOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAg
IH0KICAgICAgICAgICAgaHRtbCArPSAnPC90Ym9keT48L3RhYmxlPic7CgogICAgICAgICAgICAv
LyBGYWNoYXVmc2ljaHQKICAgICAgICAgICAgaWYgKGdvdiAmJiBnb3YuZmFjaGF1ZnNpY2h0ICYm
IGdvdi5mYWNoYXVmc2ljaHQubGVuZ3RoID4gMCkgewogICAgICAgICAgICAgICAgaHRtbCArPSAn
PGgzIHN0eWxlPSJjb2xvcjp2YXIoLS10ZXh0LWhlYWRpbmcpOyBtYXJnaW46MjBweCAwIDhweDsi
PkZhY2hhdWZzaWNodDwvaDM+JzsKICAgICAgICAgICAgICAgIGh0bWwgKz0gJzx0YWJsZSBjbGFz
cz0iaW1wcmludC10YWJsZSI+PHRoZWFkPjx0cj48dGg+TmFtZTwvdGg+PHRoPkJlbnV0emVyLUlE
PC90aD48dGg+WnVzdMOkbmRpZ2tlaXQ8L3RoPjwvdHI+PC90aGVhZD48dGJvZHk+JzsKICAgICAg
ICAgICAgICAgIGdvdi5mYWNoYXVmc2ljaHQuZm9yRWFjaChmdW5jdGlvbihmYSkgewogICAgICAg
ICAgICAgICAgICAgIGh0bWwgKz0gJzx0cj48dGQ+JyArIERyaXZlUG9ydGFsLmVzY2FwZUhUTUwo
ZmEuZGlzcGxheU5hbWUgfHwgZmEudXNlcm5hbWUpICsgJzwvdGQ+JyArCiAgICAgICAgICAgICAg
ICAgICAgICAgICc8dGQ+JyArIERyaXZlUG9ydGFsLmVzY2FwZUhUTUwoZmEudXNlcm5hbWUpICsg
JzwvdGQ+JyArCiAgICAgICAgICAgICAgICAgICAgICAgICc8dGQgc3R5bGU9ImZvbnQtd2VpZ2h0
OjYwMDsgY29sb3I6I2U1NzM3MzsiPkFsbGUgS2F0ZWdvcmllbjwvdGQ+PC90cj4nOwogICAgICAg
ICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBodG1sICs9ICc8L3Rib2R5PjwvdGFibGU+JzsK
ICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gWnVzdGFlbmRpZ2tlaXQgbmFjaCBLYXRlZ29y
aWUgKHNvcnRpZXJiYXJlIFRhYmVsbGUpCiAgICAgICAgICAgIGh0bWwgKz0gJzxoMyBzdHlsZT0i
Y29sb3I6dmFyKC0tdGV4dC1oZWFkaW5nKTsgbWFyZ2luOjIwcHggMCA4cHg7Ij5adXN0w6RuZGln
a2VpdCBuYWNoIEthdGVnb3JpZTwvaDM+JzsKICAgICAgICAgICAgdmFyIGltcEhpZGRlbkthdHMg
PSBEcml2ZUZTLmNvbmZpZy5oaWRkZW5LYXRlZ29yaWVuIHx8IFtdOwogICAgICAgICAgICB2YXIg
cmV2aWV3ZXJzID0gKGdvdiAmJiBnb3YucmV2aWV3ZXJzKSA/IGdvdi5yZXZpZXdlcnMgOiBbXTsK
ICAgICAgICAgICAgaHRtbCArPSAnPHRhYmxlIGNsYXNzPSJpbXByaW50LXRhYmxlIiBpZD0iaW1w
cmludENhdFRhYmxlIj48dGhlYWQ+PHRyPicgKwogICAgICAgICAgICAgICAgJzx0aCBzdHlsZT0i
Y3Vyc29yOnBvaW50ZXI7IiBvbmNsaWNrPSJEcml2ZUdvdmVybmFuY2UuX3NvcnRJbXByaW50VGFi
bGUoMCkiPkthdGVnb3JpZSDihpU8L3RoPicgKwogICAgICAgICAgICAgICAgJzx0aCBzdHlsZT0i
Y3Vyc29yOnBvaW50ZXI7IiBvbmNsaWNrPSJEcml2ZUdvdmVybmFuY2UuX3NvcnRJbXByaW50VGFi
bGUoMSkiPlp1c3TDpG5kaWcg4oaVPC90aD4nICsKICAgICAgICAgICAgICAgICc8dGggc3R5bGU9
ImN1cnNvcjpwb2ludGVyOyIgb25jbGljaz0iRHJpdmVHb3Zlcm5hbmNlLl9zb3J0SW1wcmludFRh
YmxlKDIpIj5CZW51dHplci1JRCDihpU8L3RoPicgKwogICAgICAgICAgICAnPC90cj48L3RoZWFk
Pjx0Ym9keT4nOwogICAgICAgICAgICAoRHJpdmVGUy5jb25maWcua2F0ZWdvcmllbiB8fCBbXSku
ZmlsdGVyKGZ1bmN0aW9uKGthdCkgeyByZXR1cm4gIWltcEhpZGRlbkthdHMuaW5jbHVkZXMoa2F0
KTsgfSkuZm9yRWFjaChmdW5jdGlvbihrYXQpIHsKICAgICAgICAgICAgICAgIHZhciB6dXN0YWVu
ZGlnID0gcmV2aWV3ZXJzLmZpbHRlcihmdW5jdGlvbihyKSB7IHJldHVybiAoci5rYXRlZ29yaWVu
IHx8IFtdKS5pbmNsdWRlcyhrYXQpOyB9KTsKICAgICAgICAgICAgICAgIGlmICh6dXN0YWVuZGln
Lmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgICAgICAgICB6dXN0YWVuZGlnLmZvckVhY2goZnVu
Y3Rpb24ocikgewogICAgICAgICAgICAgICAgICAgICAgICBodG1sICs9ICc8dHI+PHRkPjxzdHJv
bmc+JyArIERyaXZlUG9ydGFsLmVzY2FwZUhUTUwoa2F0KSArICc8L3N0cm9uZz48L3RkPicgKwog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJzx0ZD4nICsgRHJpdmVQb3J0YWwuZXNjYXBlSFRN
TChyLmRpc3BsYXlOYW1lIHx8IHIudXNlcm5hbWUpICsgJzwvdGQ+JyArCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnPHRkIHN0eWxlPSJmb250LXNpemU6MTJweDtjb2xvcjp2YXIoLS10ZXh0
LXNlY29uZGFyeSk7Ij4nICsgRHJpdmVQb3J0YWwuZXNjYXBlSFRNTChyLnVzZXJuYW1lKSArICc8
L3RkPjwvdHI+JzsKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICAgICAgICAgaHRtbCArPSAnPHRyPjx0ZD48c3Ryb25nPicgKyBEcml2
ZVBvcnRhbC5lc2NhcGVIVE1MKGthdCkgKyAnPC9zdHJvbmc+PC90ZD4nICsKICAgICAgICAgICAg
ICAgICAgICAgICAgJzx0ZCBjb2xzcGFuPSIyIj48ZW0gc3R5bGU9ImNvbG9yOnZhcigtLXRleHQt
bXV0ZWQpOyI+S2VpbiBSZXZpZXdlciB6dWdld2llc2VuPC9lbT48L3RkPjwvdHI+JzsKICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIGh0bWwgKz0gJzwvdGJvZHk+
PC90YWJsZT4nOwogICAgICAgIH0KCiAgICAgICAgaHRtbCArPSAnPHAgc3R5bGU9Im1hcmdpbi10
b3A6MjBweDsgZm9udC1zaXplOjExcHg7IGNvbG9yOnZhcigtLXRleHQtbXV0ZWQpOyI+U3RhbmQ6
ICcgKyBuZXcgRGF0ZSgpLnRvTG9jYWxlRGF0ZVN0cmluZygnZGUtREUnLCB7ZGF5OicyLWRpZ2l0
Jyxtb250aDonMi1kaWdpdCcseWVhcjonbnVtZXJpYyd9KSArICc8L3A+JzsKCiAgICAgICAgYm9k
eS5pbm5lckhUTUwgPSBodG1sOwogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbXBy
aW50TW9kYWwnKS5jbGFzc0xpc3QuYWRkKCdhY3RpdmUnKTsKICAgIH0sCgogICAgX2ltcHJpbnRT
b3J0Q29sOiAtMSwKICAgIF9pbXByaW50U29ydEFzYzogdHJ1ZSwKCiAgICBfc29ydEltcHJpbnRU
YWJsZShjb2xJZHgpIHsKICAgICAgICB2YXIgdGFibGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnaW1wcmludENhdFRhYmxlJyk7CiAgICAgICAgaWYgKCF0YWJsZSkgcmV0dXJuOwogICAgICAg
IHZhciB0Ym9keSA9IHRhYmxlLnF1ZXJ5U2VsZWN0b3IoJ3Rib2R5Jyk7CiAgICAgICAgaWYgKCF0
Ym9keSkgcmV0dXJuOwoKICAgICAgICAvLyBTb3J0aWVycmljaHR1bmcgdW1zY2hhbHRlbgogICAg
ICAgIGlmICh0aGlzLl9pbXByaW50U29ydENvbCA9PT0gY29sSWR4KSB7CiAgICAgICAgICAgIHRo
aXMuX2ltcHJpbnRTb3J0QXNjID0gIXRoaXMuX2ltcHJpbnRTb3J0QXNjOwogICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgIHRoaXMuX2ltcHJpbnRTb3J0Q29sID0gY29sSWR4OwogICAgICAgICAg
ICB0aGlzLl9pbXByaW50U29ydEFzYyA9IHRydWU7CiAgICAgICAgfQogICAgICAgIHZhciBhc2Mg
PSB0aGlzLl9pbXByaW50U29ydEFzYzsKCiAgICAgICAgdmFyIHJvd3MgPSBBcnJheS5mcm9tKHRi
b2R5LnF1ZXJ5U2VsZWN0b3JBbGwoJ3RyJykpOwogICAgICAgIHJvd3Muc29ydChmdW5jdGlvbihh
LCBiKSB7CiAgICAgICAgICAgIHZhciBhVGV4dCA9IChhLmNlbGxzW2NvbElkeF0gPyBhLmNlbGxz
W2NvbElkeF0udGV4dENvbnRlbnQudHJpbSgpIDogJycpLnRvTG93ZXJDYXNlKCk7CiAgICAgICAg
ICAgIHZhciBiVGV4dCA9IChiLmNlbGxzW2NvbElkeF0gPyBiLmNlbGxzW2NvbElkeF0udGV4dENv
bnRlbnQudHJpbSgpIDogJycpLnRvTG93ZXJDYXNlKCk7CiAgICAgICAgICAgIHZhciBjbXAgPSBh
VGV4dC5sb2NhbGVDb21wYXJlKGJUZXh0LCAnZGUnKTsKICAgICAgICAgICAgcmV0dXJuIGFzYyA/
IGNtcCA6IC1jbXA7CiAgICAgICAgfSk7CiAgICAgICAgcm93cy5mb3JFYWNoKGZ1bmN0aW9uKHJv
dykgeyB0Ym9keS5hcHBlbmRDaGlsZChyb3cpOyB9KTsKICAgIH0sCgogICAgY2xvc2VJbXByaW50
KCkgewogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbXByaW50TW9kYWwnKS5jbGFz
c0xpc3QucmVtb3ZlKCdhY3RpdmUnKTsKICAgIH0KfTsKCi8vID09PT09PT09PT09PT09PT09PT09
PSBJTklUID09PT09PT09PT09PT09PT09PT09PQoKZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcign
RE9NQ29udGVudExvYWRlZCcsIGFzeW5jICgpID0+IHsKICAgIC8vIENsaWNrLUhhbmRsZXIgZnVl
ciBpbmxpbmUgTWVkaWVuIGluIGRlciBEZXRhaWwtQW5zaWNodAogICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2RvY3VtZW50RGV0YWlsJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZSkg
PT4gewogICAgICAgIC8vIEJpbGRlciBpbiAuZHJpdmUtbWVkaWEtdGh1bWJuYWlsCiAgICAgICAg
Y29uc3QgdGh1bWIgPSBlLnRhcmdldC5jbG9zZXN0KCcuZHJpdmUtbWVkaWEtdGh1bWJuYWlsJyk7
CiAgICAgICAgaWYgKHRodW1iICYmICFkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZWRpdG9yTW9k
YWwnKS5jbGFzc0xpc3QuY29udGFpbnMoJ2FjdGl2ZScpKSB7CiAgICAgICAgICAgIGNvbnN0IGlt
ZyA9IHRodW1iLnF1ZXJ5U2VsZWN0b3IoJ2ltZycpOwogICAgICAgICAgICBpZiAoaW1nKSB7CiAg
ICAgICAgICAgICAgICBvcGVuTWVkaWFNb2RhbChpbWcuc3JjLCAnaW1hZ2UnLCBpbWcuYWx0IHx8
ICcnKTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAg
ICAgICAvLyBCaWxkZXIgZGlyZWt0IGFuZ2VrbGlja3QgKGluIC5kcml2ZS1tZWRpYS1sYXJnZSBv
ZGVyIGFsdGUgQmlsZGVyKQogICAgICAgIGlmIChlLnRhcmdldC50YWdOYW1lID09PSAnSU1HJyAm
JiBlLnRhcmdldC5jbG9zZXN0KCcuZGV0YWlsLWNvbnRlbnQnKSkgewogICAgICAgICAgICBvcGVu
TWVkaWFNb2RhbChlLnRhcmdldC5zcmMsICdpbWFnZScsIGUudGFyZ2V0LmFsdCB8fCAnJyk7CiAg
ICAgICAgfQoKICAgICAgICAvLyBTaWNoZXJoZWl0c25ldHo6IEFsbGUgZXh0ZXJuZW4gTGlua3Mg
aW0gQXJ0aWtlbGluaGFsdCBpbiBuZXVlbSBUYWIgb2VmZm5lbi4KICAgICAgICAvLyBWZXJoaW5k
ZXJ0LCBkYXNzIGRhcyBQb3J0YWwgZHVyY2ggTGlua3MgYXVzIGtvcGllcnRlbi9iZXN0ZWhlbmRl
biBJbmhhbHRlbgogICAgICAgIC8vIHZlcmxhc3NlbiB3aXJkIChhdWNoIGJlaSBBbHRkYXRlbiBk
aWUgbm9jaCB0YXJnZXQ9X3NlbGYgaGFiZW4pLgogICAgICAgIHZhciBsaW5rID0gZS50YXJnZXQu
Y2xvc2VzdCgnYVtocmVmXScpOwogICAgICAgIGlmIChsaW5rICYmIGxpbmsuY2xvc2VzdCgnLmRl
dGFpbC1jb250ZW50LCAjZWRpdG9ySW5wdXQnKSkgewogICAgICAgICAgICB2YXIgaHJlZiA9IChs
aW5rLmdldEF0dHJpYnV0ZSgnaHJlZicpIHx8ICcnKS50cmltKCk7CiAgICAgICAgICAgIC8vIElu
dGVybmUgQW5rZXIgKCMuLi4pIHVuZCBEUklWRS1Dcm9zc2xpbmtzIGF1c25laG1lbgogICAgICAg
ICAgICBpZiAoIWhyZWYuc3RhcnRzV2l0aCgnIycpICYmICFsaW5rLmNsYXNzTGlzdC5jb250YWlu
cygnZHJpdmUteHJlZicpKSB7CiAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAg
ICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpOwogICAgICAgICAgICAgICAgd2luZG93
Lm9wZW4oaHJlZiwgJ19ibGFuaycsICdub29wZW5lcixub3JlZmVycmVyJyk7CiAgICAgICAgICAg
IH0KICAgICAgICB9CiAgICB9KTsKCiAgICAvLyBDb250ZXh0LU1lbnUgc2NobGllc3NlbiBiZWkg
S2xpY2sgYXVzc2VyaGFsYgogICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAo
ZSkgPT4gewogICAgICAgIGlmICghZS50YXJnZXQuY2xvc2VzdCgnLm1lZGlhLWNvbnRleHQtbWVu
dScpICYmICFlLnRhcmdldC5jbG9zZXN0KCcuZHJpdmUtbWVkaWEnKSkgewogICAgICAgICAgICBE
cml2ZUVkaXRvci5oaWRlQ29udGV4dE1lbnUoKTsKICAgICAgICB9CiAgICB9KTsKCiAgICAvLyA9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQogICAgLy8gU2Vzc2lvbi1TY2h1dHo6IEhlYXJ0YmVhdCwgQXV0by1TYXZlLCBXYXJu
dW5nLCBXaWVkZXJhdWZuYWhtZQogICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCiAgICAvLyBBa3R1ZWxsZSBFZGl0
b3ItRGF0ZW4gZnVlciBBdXRvLVNhdmUgc2FtbWVsbiAob2huZSBWYWxpZGllcnVuZy9Xb3JrZmxv
dykKICAgIGZ1bmN0aW9uIF9nYXRoZXJFZGl0b3JTbmFwc2hvdCgpIHsKICAgICAgICBpZiAoIURy
aXZlRWRpdG9yLmN1cnJlbnREb2MpIHJldHVybiBudWxsOwogICAgICAgIHZhciBlZGl0b3IgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZWRpdG9ySW5wdXQnKTsKICAgICAgICB2YXIgdGl0ZWwg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZWRpdG9yVGl0ZWwnKTsKICAgICAgICBpZiAoIWVk
aXRvciAmJiAhdGl0ZWwpIHJldHVybiBudWxsOwogICAgICAgIHZhciBzbmFwID0gSlNPTi5wYXJz
ZShKU09OLnN0cmluZ2lmeShEcml2ZUVkaXRvci5jdXJyZW50RG9jKSk7CiAgICAgICAgaWYgKHRp
dGVsKSBzbmFwLnRpdGVsID0gdGl0ZWwudmFsdWUudHJpbSgpOwogICAgICAgIGlmIChlZGl0b3Ip
IHNuYXAuaW5oYWx0ID0gZWRpdG9yLmlubmVySFRNTDsKICAgICAgICB2YXIga2F0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2VkaXRvckthdGVnb3JpZScpOwogICAgICAgIGlmIChrYXQpIHNu
YXAua2F0ZWdvcmllID0ga2F0LnZhbHVlOwogICAgICAgIHZhciBzdGF0dXMgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnZWRpdG9yU3RhdHVzJyk7CiAgICAgICAgaWYgKHN0YXR1cykgc25hcC5f
bGFzdEVkaXRvclN0YXR1cyA9IHN0YXR1cy52YWx1ZTsKICAgICAgICBzbmFwLnN0YXR1cyA9ICdF
bnR3dXJmJzsKICAgICAgICBzbmFwLnNjaGxhZ3dvZXJ0ZXIgPSBEcml2ZUVkaXRvci5fY3VycmVu
dEtleXdvcmRzID8gWy4uLkRyaXZlRWRpdG9yLl9jdXJyZW50S2V5d29yZHNdIDogKHNuYXAuc2No
bGFnd29lcnRlciB8fCBbXSk7CiAgICAgICAgcmV0dXJuIHNuYXA7CiAgICB9CgogICAgLy8gQXV0
by1TYXZlOiBFbnR3dXJmIGF1ZiBkZW0gU2VydmVyIHNwZWljaGVybiArIGxvY2FsU3RvcmFnZS1C
YWNrdXAKICAgIGFzeW5jIGZ1bmN0aW9uIF9lbWVyZ2VuY3lTYXZlRHJhZnQoKSB7CiAgICAgICAg
dmFyIHNuYXAgPSBfZ2F0aGVyRWRpdG9yU25hcHNob3QoKTsKICAgICAgICBpZiAoIXNuYXApIHJl
dHVybiBmYWxzZTsKICAgICAgICAvLyBsb2NhbFN0b3JhZ2UtQmFja3VwIChpbW1lciwgYXVjaCB3
ZW5uIFNlcnZlci1TYXZlIGZlaGxzY2hsYWVndCkKICAgICAgICB0cnkgewogICAgICAgICAgICBs
b2NhbFN0b3JhZ2Uuc2V0SXRlbSgnZHJpdmUtcmVzdW1lLWRvYycsIEpTT04uc3RyaW5naWZ5KHsK
ICAgICAgICAgICAgICAgIGRvY0lkOiBzbmFwLmlkLAogICAgICAgICAgICAgICAgdGl0ZWw6IHNu
YXAudGl0ZWwsCiAgICAgICAgICAgICAgICBrYXRlZ29yaWU6IHNuYXAua2F0ZWdvcmllLAogICAg
ICAgICAgICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksCiAgICAgICAg
ICAgICAgICBpc05ldzogRHJpdmVFZGl0b3IuaXNOZXcKICAgICAgICAgICAgfSkpOwogICAgICAg
IH0gY2F0Y2goZSkge30KICAgICAgICAvLyBTZXJ2ZXItU2F2ZSBhbHMgRW50d3VyZgogICAgICAg
IGlmIChEcml2ZUZTLm1vZGUgPT09ICdzZXJ2ZXInKSB7CiAgICAgICAgICAgIHRyeSB7CiAgICAg
ICAgICAgICAgICBzbmFwLmdlYWVuZGVydCA9IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKS5zcGxp
dCgnVCcpWzBdOwogICAgICAgICAgICAgICAgdmFyIHVzZXJuYW1lID0gKERyaXZlRlMuZW52aXJv
biAmJiBEcml2ZUZTLmVudmlyb24udXNlcm5hbWUpID8gRHJpdmVGUy5lbnZpcm9uLnVzZXJuYW1l
IDogJ1VuYmVrYW5udCc7CiAgICAgICAgICAgICAgICBzbmFwLmJlYXJiZWl0ZXRWb24gPSB1c2Vy
bmFtZTsKICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSBhd2FpdCBEcml2ZUZTLnNhdmVEb2N1
bWVudChzbmFwKTsKICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT09IHRydWUpIHsKICAgICAg
ICAgICAgICAgICAgICAvLyBjdXJyZW50RG9jIGFrdHVhbGlzaWVyZW4gZGFtaXQgY2xvc2UoKSBr
ZWluZW4gRGF0ZW52ZXJsdXN0IHZlcnVyc2FjaHQKICAgICAgICAgICAgICAgICAgICBEcml2ZUVk
aXRvci5jdXJyZW50RG9jID0gc25hcDsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBjYXRjaChlKSB7fQogICAgICAgIH0KICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLy8gVGltZW91dC1XYXJudW5nOiBJbmZvLU1v
ZGFsIDEgTWludXRlIHZvciBTZXJ2ZXItU2h1dGRvd24KICAgIHZhciBfc2VydmVyVGltZW91dE1v
ZGFsID0gbnVsbDsKICAgIHZhciBfc2VydmVyVGltZW91dENvdW50ZG93biA9IG51bGw7CiAgICBm
dW5jdGlvbiBfc2hvd1NlcnZlclRpbWVvdXRXYXJuaW5nKHJlbWFpbmluZ1NlYykgewogICAgICAg
IGlmIChfc2VydmVyVGltZW91dE1vZGFsKSByZXR1cm47IC8vIEJlcmVpdHMgc2ljaHRiYXIKICAg
ICAgICAvLyBPdmVybGF5CiAgICAgICAgdmFyIG92ZXJsYXkgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdkaXYnKTsKICAgICAgICBvdmVybGF5LmlkID0gJ3NlcnZlclRpbWVvdXRPdmVybGF5JzsK
ICAgICAgICBvdmVybGF5LnN0eWxlLmNzc1RleHQgPSAncG9zaXRpb246Zml4ZWQ7aW5zZXQ6MDt6
LWluZGV4OjExMDAwO2JhY2tncm91bmQ6cmdiYSgwLDAsMCwwLjUpO2Rpc3BsYXk6ZmxleDthbGln
bi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbmltYXRpb246ZmFkZUluIC4z
cyBlYXNlOyc7CiAgICAgICAgLy8gTW9kYWwKICAgICAgICB2YXIgbW9kYWwgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdkaXYnKTsKICAgICAgICBtb2RhbC5zdHlsZS5jc3NUZXh0ID0gJ2JhY2tn
cm91bmQ6dmFyKC0tYmctY2FyZCwjZmZmKTtib3JkZXItcmFkaXVzOjEycHg7cGFkZGluZzozMnB4
O21heC13aWR0aDo0NjBweDt3aWR0aDo5MCU7Ym94LXNoYWRvdzowIDEycHggNDhweCByZ2JhKDAs
MCwwLDAuMjUpO3RleHQtYWxpZ246Y2VudGVyOyc7CiAgICAgICAgdmFyIGNvdW50ZG93blNlYyA9
IE1hdGgubWF4KDAsIE1hdGgucm91bmQocmVtYWluaW5nU2VjKSk7CiAgICAgICAgbW9kYWwuaW5u
ZXJIVE1MID0KICAgICAgICAgICAgJzxkaXYgc3R5bGU9ImZvbnQtc2l6ZTo0MHB4O21hcmdpbi1i
b3R0b206MTJweDsiPiYjOTg4ODs8L2Rpdj4nICsKICAgICAgICAgICAgJzxkaXYgc3R5bGU9ImNv
bG9yOnZhcigtLXRleHQtaGVhZGluZywjMzMzKTtmb250LXNpemU6MThweDtmb250LXdlaWdodDo3
MDA7bWFyZ2luLWJvdHRvbTo4cHg7Ij5TZXJ2ZXIgd2lyZCBiZWVuZGV0PC9kaXY+JyArCiAgICAg
ICAgICAgICc8ZGl2IGlkPSJzZXJ2ZXJUaW1lb3V0Q291bnRkb3duIiBzdHlsZT0iY29sb3I6I2U3
NGMzYztmb250LXNpemU6MjhweDtmb250LXdlaWdodDo3MDA7bWFyZ2luLWJvdHRvbToxNnB4OyI+
JyArIF9mbXRDb3VudGRvd24oY291bnRkb3duU2VjKSArICc8L2Rpdj4nICsKICAgICAgICAgICAg
JzxkaXYgc3R5bGU9ImNvbG9yOnZhcigtLXRleHQtcHJpbWFyeSwjNTU1KTtmb250LXNpemU6MTRw
eDtsaW5lLWhlaWdodDoxLjc7bWFyZ2luLWJvdHRvbToyMHB4OyI+JyArCiAgICAgICAgICAgICAg
ICAnRGVyIERSSVZFLVNlcnZlciB3YXIgbGFlbmdlcmUgWmVpdCBpbmFrdGl2IHVuZCB3aXJkIHNp
Y2ggaW4gS3VlcnplIGF1dG9tYXRpc2NoIGJlZW5kZW4uPGJyPjxicj4nICsKICAgICAgICAgICAg
ICAgICc8c3Ryb25nIHN0eWxlPSJjb2xvcjp2YXIoLS10ZXh0LWhlYWRpbmcsIzMzMyk7Ij5LZWlu
ZSBTb3JnZTo8L3N0cm9uZz4gT2ZmZW5lIEFydGlrZWwgd3VyZGVuIGF1dG9tYXRpc2NoIGFscyA8
c3Ryb25nPkVudHd1cmY8L3N0cm9uZz4gZ2VzcGVpY2hlcnQgdW5kIGdlaGVuIG5pY2h0IHZlcmxv
cmVuLicgKwogICAgICAgICAgICAnPC9kaXY+JyArCiAgICAgICAgICAgICc8ZGl2IHN0eWxlPSJi
YWNrZ3JvdW5kOnZhcigtLWJnLW1haW4sI2Y1ZjVmNSk7Ym9yZGVyLXJhZGl1czo4cHg7cGFkZGlu
ZzoxNHB4IDE4cHg7bWFyZ2luLWJvdHRvbToyMHB4O3RleHQtYWxpZ246bGVmdDsiPicgKwogICAg
ICAgICAgICAgICAgJzxkaXYgc3R5bGU9ImNvbG9yOnZhcigtLXRleHQtc2Vjb25kYXJ5LCM3Nzcp
O2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjYwMDt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7
bWFyZ2luLWJvdHRvbTo2cHg7Ij5TbyBnZWh0cyB3ZWl0ZXI8L2Rpdj4nICsKICAgICAgICAgICAg
ICAgICc8ZGl2IHN0eWxlPSJjb2xvcjp2YXIoLS10ZXh0LXByaW1hcnksIzU1NSk7Zm9udC1zaXpl
OjEzcHg7bGluZS1oZWlnaHQ6MS42OyI+JyArCiAgICAgICAgICAgICAgICAgICAgJzEuIERpZXNl
biBUYWIgc2NobGllc3Nlbjxicj4nICsKICAgICAgICAgICAgICAgICAgICAnMi4gPHN0cm9uZz5E
UklWRV9TdGFydC5iYXQ8L3N0cm9uZz4gZXJuZXV0IGF1c2Z1ZWhyZW48YnI+JyArCiAgICAgICAg
ICAgICAgICAgICAgJzMuIERlciBnZXNwZWljaGVydGUgRW50d3VyZiBrYW5uIGRhbm4gZm9ydGdl
c2V0enQgd2VyZGVuJyArCiAgICAgICAgICAgICAgICAnPC9kaXY+JyArCiAgICAgICAgICAgICc8
L2Rpdj4nICsKICAgICAgICAgICAgJzxkaXYgc3R5bGU9ImRpc3BsYXk6ZmxleDtnYXA6MTBweDtq
dXN0aWZ5LWNvbnRlbnQ6Y2VudGVyOyI+JyArCiAgICAgICAgICAgICAgICAnPGJ1dHRvbiBpZD0i
c2VydmVyVGltZW91dFJlc3VtZSIgc3R5bGU9InBhZGRpbmc6MTBweCAyNHB4O2JvcmRlci1yYWRp
dXM6NnB4O2JvcmRlcjpub25lO2JhY2tncm91bmQ6IzI3YWU2MDtjb2xvcjojZmZmO2N1cnNvcjpw
b2ludGVyO2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTRweDsiPldlaXRlcmFyYmVpdGVuPC9i
dXR0b24+JyArCiAgICAgICAgICAgICc8L2Rpdj4nOwogICAgICAgIG92ZXJsYXkuYXBwZW5kQ2hp
bGQobW9kYWwpOwogICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQob3ZlcmxheSk7CiAg
ICAgICAgX3NlcnZlclRpbWVvdXRNb2RhbCA9IG92ZXJsYXk7CiAgICAgICAgLy8gQ291bnRkb3du
IGFrdHVhbGlzaWVyZW4KICAgICAgICBfc2VydmVyVGltZW91dENvdW50ZG93biA9IHNldEludGVy
dmFsKGZ1bmN0aW9uKCkgewogICAgICAgICAgICBjb3VudGRvd25TZWMtLTsKICAgICAgICAgICAg
dmFyIGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NlcnZlclRpbWVvdXRDb3VudGRvd24n
KTsKICAgICAgICAgICAgaWYgKGVsKSBlbC50ZXh0Q29udGVudCA9IF9mbXRDb3VudGRvd24oTWF0
aC5tYXgoMCwgY291bnRkb3duU2VjKSk7CiAgICAgICAgICAgIGlmIChjb3VudGRvd25TZWMgPD0g
MCkgewogICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChfc2VydmVyVGltZW91dENvdW50ZG93
bik7CiAgICAgICAgICAgICAgICBfc2VydmVyVGltZW91dENvdW50ZG93biA9IG51bGw7CiAgICAg
ICAgICAgICAgICAvLyBNb2RhbC1UZXh0IGFrdHVhbGlzaWVyZW46IFNlcnZlciBpc3QgamV0enQg
YmVlbmRldAogICAgICAgICAgICAgICAgaWYgKGVsKSBlbC50ZXh0Q29udGVudCA9ICdTZXJ2ZXIg
YmVlbmRldCc7CiAgICAgICAgICAgICAgICB2YXIgYnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ3NlcnZlclRpbWVvdXRSZXN1bWUnKTsKICAgICAgICAgICAgICAgIGlmIChidG4pIGJ0bi5y
ZW1vdmUoKTsKICAgICAgICAgICAgfQogICAgICAgIH0sIDEwMDApOwogICAgICAgIC8vIFdlaXRl
cmFyYmVpdGVuLUJ1dHRvbjogTW9kYWwgc2NobGllc3NlbiArIEhlYXJ0YmVhdCBzZW5kZW4KICAg
ICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2VydmVyVGltZW91dFJlc3VtZScpLm9uY2xp
Y2sgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgX2hpZGVTZXJ2ZXJUaW1lb3V0V2FybmluZygp
OwogICAgICAgICAgICBmZXRjaCgnL2FwaS9oZWFydGJlYXQnLCB7IG1ldGhvZDogJ1BPU1QnIH0p
LmNhdGNoKGZ1bmN0aW9uKCkge30pOwogICAgICAgIH07CiAgICB9CiAgICBmdW5jdGlvbiBfZm10
Q291bnRkb3duKHNlYykgewogICAgICAgIHZhciBtID0gTWF0aC5mbG9vcihzZWMgLyA2MCk7CiAg
ICAgICAgdmFyIHMgPSBzZWMgJSA2MDsKICAgICAgICByZXR1cm4gKG0gPiAwID8gbSArICcgTWlu
LiAnIDogJycpICsgcyArICcgU2VrLic7CiAgICB9CiAgICBmdW5jdGlvbiBfaGlkZVNlcnZlclRp
bWVvdXRXYXJuaW5nKCkgewogICAgICAgIGlmIChfc2VydmVyVGltZW91dENvdW50ZG93bikgewog
ICAgICAgICAgICBjbGVhckludGVydmFsKF9zZXJ2ZXJUaW1lb3V0Q291bnRkb3duKTsKICAgICAg
ICAgICAgX3NlcnZlclRpbWVvdXRDb3VudGRvd24gPSBudWxsOwogICAgICAgIH0KICAgICAgICBp
ZiAoX3NlcnZlclRpbWVvdXRNb2RhbCkgewogICAgICAgICAgICBfc2VydmVyVGltZW91dE1vZGFs
LnJlbW92ZSgpOwogICAgICAgICAgICBfc2VydmVyVGltZW91dE1vZGFsID0gbnVsbDsKICAgICAg
ICB9CiAgICB9CgogICAgLy8gVGFiLVNjaGxpZXNzZW4gZXJrZW5uZW46IGJlZm9yZXVubG9hZCAr
IHZpc2liaWxpdHljaGFuZ2Uga29tYmluaWVydC4KICAgIC8vIHZpc2liaWxpdHljaGFuZ2UoJ2hp
ZGRlbicpIGZldWVydCBiZWkgVGFiLVdlY2hzZWwgVU5EIFRhYi1TY2hsaWVzc2VuLAogICAgLy8g
YWJlciBiZWZvcmV1bmxvYWQgZmV1ZXJ0IE5VUiBiZWkgVGFiLVNjaGxpZXNzZW4gLyBOYXZpZ2F0
aW9uIHdlZy4KICAgIC8vIFN0cmF0ZWdpZTogRmxhZyBpbiBiZWZvcmV1bmxvYWQgc2V0emVuLCBk
YW5uIGluIHBhZ2VoaWRlL3VubG9hZCBkZW4gU2h1dGRvd24gc2VuZGVuLgogICAgdmFyIF90YWJJ
c0Nsb3NpbmcgPSBmYWxzZTsKCiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignYmVmb3JldW5s
b2FkJywgKCkgPT4gewogICAgICAgIF90YWJJc0Nsb3NpbmcgPSB0cnVlOwogICAgICAgIGlmIChE
cml2ZUZTLm1vZGUgPT09ICdzZXJ2ZXInKSB7CiAgICAgICAgICAgIC8vIE9mZmVuZW4gQXJ0aWtl
bCBhbHMgRW50d3VyZiBpbiBsb2NhbFN0b3JhZ2UgbWVya2VuCiAgICAgICAgICAgIHZhciBzbmFw
ID0gX2dhdGhlckVkaXRvclNuYXBzaG90KCk7CiAgICAgICAgICAgIGlmIChzbmFwKSB7CiAgICAg
ICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVt
KCdkcml2ZS1yZXN1bWUtZG9jJywgSlNPTi5zdHJpbmdpZnkoewogICAgICAgICAgICAgICAgICAg
ICAgICBkb2NJZDogc25hcC5pZCwKICAgICAgICAgICAgICAgICAgICAgICAgdGl0ZWw6IHNuYXAu
dGl0ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgIGthdGVnb3JpZTogc25hcC5rYXRlZ29yaWUs
CiAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKS50b0lTT1N0cmlu
ZygpLAogICAgICAgICAgICAgICAgICAgICAgICBpc05ldzogRHJpdmVFZGl0b3IuaXNOZXcKICAg
ICAgICAgICAgICAgICAgICB9KSk7CiAgICAgICAgICAgICAgICAgICAgLy8gRW50d3VyZiB2aWEg
c2VuZEJlYWNvbiBzcGVpY2hlcm4gKGZpcmUtYW5kLWZvcmdldCwgdWViZXJsZWJ0IFRhYi1DbG9z
ZSkKICAgICAgICAgICAgICAgICAgICB2YXIgcGF0aCA9ICdkYXRhLycgKyBzbmFwLmthdGVnb3Jp
ZSArICcvJyArIHNuYXAuaWQgKyAnLmpzb24nOwogICAgICAgICAgICAgICAgICAgIHNuYXAuZ2Vh
ZW5kZXJ0ID0gbmV3IERhdGUoKS50b0lTT1N0cmluZygpLnNwbGl0KCdUJylbMF07CiAgICAgICAg
ICAgICAgICAgICAgdmFyIHVzZXJuYW1lID0gKERyaXZlRlMuZW52aXJvbiAmJiBEcml2ZUZTLmVu
dmlyb24udXNlcm5hbWUpID8gRHJpdmVGUy5lbnZpcm9uLnVzZXJuYW1lIDogJ1VuYmVrYW5udCc7
CiAgICAgICAgICAgICAgICAgICAgc25hcC5iZWFyYmVpdGV0Vm9uID0gdXNlcm5hbWU7CiAgICAg
ICAgICAgICAgICAgICAgLy8gVGVtcG9yYWVyZSBQcm9wZXJ0aWVzIGVudGZlcm5lbgogICAgICAg
ICAgICAgICAgICAgIGRlbGV0ZSBzbmFwLl9wcmV2aW91c0luaGFsdDsKICAgICAgICAgICAgICAg
ICAgICBkZWxldGUgc25hcC5fcHJldmlvdXNUaXRlbDsKICAgICAgICAgICAgICAgICAgICBkZWxl
dGUgc25hcC5fbGFzdEVkaXRvclN0YXR1czsKICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0b3Iu
c2VuZEJlYWNvbignL2FwaS93cml0ZScsCiAgICAgICAgICAgICAgICAgICAgICAgIEpTT04uc3Ry
aW5naWZ5KHsgcGF0aDogcGF0aCwgZGF0YTogc25hcCB9KSk7CiAgICAgICAgICAgICAgICB9IGNh
dGNoKGUpIHt9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLy8gTG9jayBmcmVpZ2ViZW4gZmFs
bHMgYWt0aXYKICAgICAgICAgICAgaWYgKERyaXZlRWRpdG9yLl9sb2NrZWREb2NJZCkgewogICAg
ICAgICAgICAgICAgbmF2aWdhdG9yLnNlbmRCZWFjb24oJy9hcGkvdW5sb2NrJywKICAgICAgICAg
ICAgICAgICAgICBKU09OLnN0cmluZ2lmeSh7IGRvY0lkOiBEcml2ZUVkaXRvci5fbG9ja2VkRG9j
SWQgfSkpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIC8vIFNlcnZlciBoZXJ1bnRlcmZhaHJl
biAtIFRhYiB3aXJkIGdlc2NobG9zc2VuCiAgICAgICAgICAgIG5hdmlnYXRvci5zZW5kQmVhY29u
KCcvYXBpL3NodXRkb3duJywgJ3t9Jyk7CiAgICAgICAgfQogICAgfSk7CgogICAgLy8gSGVhcnRi
ZWF0OiBXZWIgV29ya2VyIGZ1ZXIgenV2ZXJsYWVzc2lnZSBIZWFydGJlYXRzIGF1Y2ggYmVpIEJh
Y2tncm91bmQtVGFicy4KICAgIC8vIEJyb3dzZXIgZHJvc3NlbG4gc2V0SW50ZXJ2YWwgaW0gTWFp
bi1UaHJlYWQgYXVmIH42MHMgYmVpIEJhY2tncm91bmQtVGFicywKICAgIC8vIGFiZXIgV2ViIFdv
cmtlciBzaW5kIGRhdm9uIE5JQ0hUIGJldHJvZmZlbiB1bmQgbGF1ZmVuIGltbWVyIG1pdCB2b2xs
ZXIgRnJlcXVlbnouCiAgICAvLyBTZXJ2ZXItVGltZW91dDogMzAgTWludXRlbiAoMTgwMHMpLiBI
ZWFydGJlYXQgd2lyZCBudXIgZ2VzZW5kZXQgd2VubiBkZXIgVGFiCiAgICAvLyBzaWNodGJhciBp
c3QgLSBiZWkgdW5zaWNodGJhcmVtIFRhYiBsYWV1ZnQgZGVyIFNlcnZlci1UaW1lciB3ZWl0ZXIu
CiAgICAvLyAxIE1pbnV0ZSB2b3IgQWJsYXVmOiBJbmZvLU1vZGFsIG1pdCBDb3VudGRvd24uCiAg
ICB2YXIgaGVhcnRiZWF0RmFpbENvdW50ID0gMDsKICAgIHZhciBfdGltZW91dFdhcm5pbmdTaG93
biA9IGZhbHNlOwogICAgY29uc3QgaGVhcnRiZWF0V29ya2VyQ29kZSA9IGAKICAgICAgICBzZXRJ
bnRlcnZhbCgoKSA9PiB7IHNlbGYucG9zdE1lc3NhZ2UoJ2hlYXJ0YmVhdCcpOyB9LCA1MDAwKTsK
ICAgICAgICBzZWxmLnBvc3RNZXNzYWdlKCdoZWFydGJlYXQnKTsKICAgIGA7CiAgICBjb25zdCBo
ZWFydGJlYXRCbG9iID0gbmV3IEJsb2IoW2hlYXJ0YmVhdFdvcmtlckNvZGVdLCB7IHR5cGU6ICdh
cHBsaWNhdGlvbi9qYXZhc2NyaXB0JyB9KTsKICAgIGNvbnN0IGhlYXJ0YmVhdFdvcmtlciA9IG5l
dyBXb3JrZXIoVVJMLmNyZWF0ZU9iamVjdFVSTChoZWFydGJlYXRCbG9iKSk7CiAgICBoZWFydGJl
YXRXb3JrZXIub25tZXNzYWdlID0gYXN5bmMgKCkgPT4gewogICAgICAgIC8vIEhlYXJ0YmVhdCBu
dXIgc2VuZGVuIHdlbm4gVGFiIHNpY2h0YmFyIGlzdC4KICAgICAgICAvLyBCZWkgdW5zaWNodGJh
cmVtIFRhYjogU2VydmVyLVRpbWVyIGxhZXVmdCB3ZWl0ZXIgKGdld3VlbnNjaHRlcyBWZXJoYWx0
ZW4pLgogICAgICAgIC8vIEF1c25haG1lOiBXZW5uIGRlciBUYWIgZ2VyYWRlIHNpY2h0YmFyIHdp
cmQsIHNvZm9ydCBIZWFydGJlYXQgc2VuZGVuCiAgICAgICAgLy8gdW0gU2VydmVyLVRpbWVyIHp1
cnVlY2t6dXNldHplbi4KICAgICAgICBpZiAoZG9jdW1lbnQuaGlkZGVuKSByZXR1cm47CiAgICAg
ICAgdHJ5IHsKICAgICAgICAgICAgdmFyIHJlc3AgPSBhd2FpdCBmZXRjaCgnL2FwaS9oZWFydGJl
YXQnLCB7IG1ldGhvZDogJ1BPU1QnIH0pOwogICAgICAgICAgICB2YXIgZGF0YSA9IGF3YWl0IHJl
c3AuanNvbigpOwogICAgICAgICAgICBoZWFydGJlYXRGYWlsQ291bnQgPSAwOwogICAgICAgICAg
ICAvLyBXYXJudW5nIHp1cnVlY2tzZXR6ZW4gd2VubiBUaW1lciB3aWVkZXIgZnJpc2NoCiAgICAg
ICAgICAgIGlmIChfdGltZW91dFdhcm5pbmdTaG93biAmJiAhZGF0YS53YXJuaW5nKSB7CiAgICAg
ICAgICAgICAgICBfdGltZW91dFdhcm5pbmdTaG93biA9IGZhbHNlOwogICAgICAgICAgICAgICAg
X2hpZGVTZXJ2ZXJUaW1lb3V0V2FybmluZygpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIC8v
IDEgTWludXRlIHZvciBUaW1lb3V0OiBNb2RhbCArIEF1dG8tU2F2ZQogICAgICAgICAgICBpZiAo
ZGF0YS5yZW1haW5pbmdTZWNvbmRzICE9PSB1bmRlZmluZWQgJiYgZGF0YS5yZW1haW5pbmdTZWNv
bmRzIDw9IDYwICYmICFfdGltZW91dFdhcm5pbmdTaG93bikgewogICAgICAgICAgICAgICAgX3Rp
bWVvdXRXYXJuaW5nU2hvd24gPSB0cnVlOwogICAgICAgICAgICAgICAgdmFyIHNhdmVkID0gYXdh
aXQgX2VtZXJnZW5jeVNhdmVEcmFmdCgpOwogICAgICAgICAgICAgICAgX3Nob3dTZXJ2ZXJUaW1l
b3V0V2FybmluZyhkYXRhLnJlbWFpbmluZ1NlY29uZHMpOwogICAgICAgICAgICAgICAgaWYgKHNh
dmVkKSB7CiAgICAgICAgICAgICAgICAgICAgc2hvd1RvYXN0KCdBcnRpa2VsIGF1dG9tYXRpc2No
IGFscyBFbnR3dXJmIGdlc3BlaWNoZXJ0JywgJ2luZm8nLCA1MDAwKTsKICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgfQogICAgICAgIH0gY2F0Y2goZSkgewogICAgICAgICAgICBoZWFydGJl
YXRGYWlsQ291bnQrKzsKICAgICAgICAgICAgLy8gTmFjaCA2IGZlaGxnZXNjaGxhZ2VuZW4gSGVh
cnRiZWF0cyAoMzBzKTogV2FybnVuZyArIGxvY2FsU3RvcmFnZS1CYWNrdXAKICAgICAgICAgICAg
aWYgKGhlYXJ0YmVhdEZhaWxDb3VudCA9PT0gNiAmJiBEcml2ZUVkaXRvci5jdXJyZW50RG9jKSB7
CiAgICAgICAgICAgICAgICB2YXIgc25hcCA9IF9nYXRoZXJFZGl0b3JTbmFwc2hvdCgpOwogICAg
ICAgICAgICAgICAgaWYgKHNuYXApIHsKICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAg
ICAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnZHJpdmUtcmVzdW1lLWRvYycs
IEpTT04uc3RyaW5naWZ5KHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY0lkOiBzbmFw
LmlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0ZWw6IHNuYXAudGl0ZWwsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBrYXRlZ29yaWU6IHNuYXAua2F0ZWdvcmllLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc05ldzogRHJpdmVFZGl0b3IuaXNOZXcKICAg
ICAgICAgICAgICAgICAgICAgICAgfSkpOwogICAgICAgICAgICAgICAgICAgIH0gY2F0Y2goZXgp
IHt9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBzaG93VG9hc3QoJ1NlcnZlciBu
aWNodCBlcnJlaWNoYmFyIC0gRW50d3VyZiBsb2thbCBnZXNpY2hlcnQnLCAnd2FybmluZycsIDgw
MDApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfTsKCiAgICAvLyBXZW5uIFRhYiB3aWVk
ZXIgc2ljaHRiYXIgd2lyZDogc29mb3J0IEhlYXJ0YmVhdCBzZW5kZW4gdW0gU2VydmVyLVRpbWVy
CiAgICAvLyB6dXJ1ZWNrenVzZXR6ZW4gKFVzZXIgaXN0IHp1cnVlY2sgaW0gRFJJVkUtVGFiKQog
ICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigndmlzaWJpbGl0eWNoYW5nZScsIGZ1bmN0aW9u
KCkgewogICAgICAgIGlmICghZG9jdW1lbnQuaGlkZGVuICYmIERyaXZlRlMubW9kZSA9PT0gJ3Nl
cnZlcicpIHsKICAgICAgICAgICAgX3RpbWVvdXRXYXJuaW5nU2hvd24gPSBmYWxzZTsKICAgICAg
ICAgICAgX2hpZGVTZXJ2ZXJUaW1lb3V0V2FybmluZygpOwogICAgICAgICAgICBmZXRjaCgnL2Fw
aS9oZWFydGJlYXQnLCB7IG1ldGhvZDogJ1BPU1QnIH0pLmNhdGNoKGZ1bmN0aW9uKCkge30pOwog
ICAgICAgIH0KICAgIH0pOwoKICAgIC8vIEF1dG9tYXRpc2NoIHZlcmJpbmRlbiAtIFNlcnZlci1N
b2R1cyB3aXJkIGJldm9yenVndAogICAgYXdhaXQgRHJpdmVGUy5jb25uZWN0KCk7CgogICAgLy8g
V2llZGVyYXVmbmFobWU6IFBydWVmZW4gb2IgYmVpbSBsZXR6dGVuIE1hbCBlaW4gQXJ0aWtlbCBv
ZmZlbiB3YXIKICAgIHRyeSB7CiAgICAgICAgdmFyIHJlc3VtZVJhdyA9IGxvY2FsU3RvcmFnZS5n
ZXRJdGVtKCdkcml2ZS1yZXN1bWUtZG9jJyk7CiAgICAgICAgaWYgKHJlc3VtZVJhdykgewogICAg
ICAgICAgICB2YXIgcmVzdW1lID0gSlNPTi5wYXJzZShyZXN1bWVSYXcpOwogICAgICAgICAgICAv
LyBOdXIgYW5iaWV0ZW4gd2VubiB3ZW5pZ2VyIGFscyAyNGggYWx0CiAgICAgICAgICAgIHZhciBy
ZXN1bWVBZ2UgPSBEYXRlLm5vdygpIC0gbmV3IERhdGUocmVzdW1lLnRpbWVzdGFtcCkuZ2V0VGlt
ZSgpOwogICAgICAgICAgICBpZiAocmVzdW1lQWdlIDwgMjQgKiA2MCAqIDYwICogMTAwMCAmJiBy
ZXN1bWUuZG9jSWQpIHsKICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdk
cml2ZS1yZXN1bWUtZG9jJyk7CiAgICAgICAgICAgICAgICAvLyBLdXJ6IHdhcnRlbiBiaXMgUG9y
dGFsIGdlcmVuZGVydCBpc3QKICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
CiAgICAgICAgICAgICAgICAgICAgdmFyIGJhbm5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J2RpdicpOwogICAgICAgICAgICAgICAgICAgIGJhbm5lci5zdHlsZS5jc3NUZXh0ID0gJ3Bvc2l0
aW9uOmZpeGVkO2JvdHRvbToyNHB4O3JpZ2h0OjI0cHg7ei1pbmRleDoxMDUwMDtiYWNrZ3JvdW5k
OnZhcigtLWJnLWNhcmQpO2JvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyLWNvbG9yKTtib3Jk
ZXItbGVmdDo0cHggc29saWQgIzM0OThkYjtib3JkZXItcmFkaXVzOjhweDtwYWRkaW5nOjE2cHgg
MjBweDttYXgtd2lkdGg6NDAwcHg7Ym94LXNoYWRvdzowIDhweCAzMnB4IHJnYmEoMCwwLDAsMC4x
NSk7YW5pbWF0aW9uOnNsaWRlRG93biAuM3MgZWFzZTsnOwogICAgICAgICAgICAgICAgICAgIHZh
ciB6ZWl0VGV4dCA9ICcnOwogICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgIHZhciBkID0gbmV3IERhdGUocmVzdW1lLnRpbWVzdGFtcCk7CiAgICAgICAgICAg
ICAgICAgICAgICAgIHplaXRUZXh0ID0gJyAoenVsZXR6dCAnICsgZC50b0xvY2FsZURhdGVTdHJp
bmcoJ2RlLURFJykgKyAnLCAnICsgZC50b0xvY2FsZVRpbWVTdHJpbmcoJ2RlLURFJywge2hvdXI6
JzItZGlnaXQnLG1pbnV0ZTonMi1kaWdpdCd9KSArICcpJzsKICAgICAgICAgICAgICAgICAgICB9
IGNhdGNoKGUpIHt9CiAgICAgICAgICAgICAgICAgICAgYmFubmVyLmlubmVySFRNTCA9CiAgICAg
ICAgICAgICAgICAgICAgICAgICc8ZGl2IHN0eWxlPSJjb2xvcjp2YXIoLS10ZXh0LWhlYWRpbmcp
O2ZvbnQtd2VpZ2h0OjYwMDttYXJnaW4tYm90dG9tOjZweDsiPkFydGlrZWwgZm9ydHNldHplbj88
L2Rpdj4nICsKICAgICAgICAgICAgICAgICAgICAgICAgJzxkaXYgc3R5bGU9ImNvbG9yOnZhcigt
LXRleHQtcHJpbWFyeSk7Zm9udC1zaXplOjEzcHg7bGluZS1oZWlnaHQ6MS42O21hcmdpbi1ib3R0
b206MTJweDsiPicgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0R1IGhhc3QgenVsZXR6
dCBhbiA8c3Ryb25nPicgKyAocmVzdW1lLnRpdGVsIHx8ICdlaW5lbSBBcnRpa2VsJykgKyAnPC9z
dHJvbmc+IGdlYXJiZWl0ZXQnICsgemVpdFRleHQgKyAnLicgKwogICAgICAgICAgICAgICAgICAg
ICAgICAnPC9kaXY+JyArCiAgICAgICAgICAgICAgICAgICAgICAgICc8ZGl2IHN0eWxlPSJkaXNw
bGF5OmZsZXg7Z2FwOjhweDtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmQ7Ij4nICsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICc8YnV0dG9uIGlkPSJyZXN1bWVEaXNtaXNzIiBzdHlsZT0icGFk
ZGluZzo2cHggMTRweDtib3JkZXItcmFkaXVzOjRweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJv
cmRlci1jb2xvcik7YmFja2dyb3VuZDp2YXIoLS1iZy1jYXJkKTtjb2xvcjp2YXIoLS10ZXh0LXNl
Y29uZGFyeSk7Y3Vyc29yOnBvaW50ZXI7Zm9udC1zaXplOjEzcHg7Ij5OZWluIGRhbmtlPC9idXR0
b24+JyArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPGJ1dHRvbiBpZD0icmVzdW1lT3Bl
biIgc3R5bGU9InBhZGRpbmc6NnB4IDE0cHg7Ym9yZGVyLXJhZGl1czo0cHg7Ym9yZGVyOm5vbmU7
YmFja2dyb3VuZDojMzQ5OGRiO2NvbG9yOndoaXRlO2N1cnNvcjpwb2ludGVyO2ZvbnQtd2VpZ2h0
OjYwMDtmb250LXNpemU6MTNweDsiPldlaXRlcmFyYmVpdGVuPC9idXR0b24+JyArCiAgICAgICAg
ICAgICAgICAgICAgICAgICc8L2Rpdj4nOwogICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmJv
ZHkuYXBwZW5kQ2hpbGQoYmFubmVyKTsKICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgncmVzdW1lRGlzbWlzcycpLm9uY2xpY2sgPSBmdW5jdGlvbigpIHsgYmFubmVy
LnJlbW92ZSgpOyB9OwogICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdyZXN1bWVPcGVuJykub25jbGljayA9IGFzeW5jIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAg
ICAgICAgICAgICBiYW5uZXIucmVtb3ZlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChy
ZXN1bWUuaXNOZXcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5ldWVuIEFydGlr
ZWwgd2FyIG5vY2ggbmljaHQgZ2VzcGVpY2hlcnQgLSB6dW0gRXJzdGVsbGVuIG9lZmZuZW4KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERyaXZlRWRpdG9yLmNyZWF0ZU5ldygpOwogICAgICAg
ICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
QmVzdGVoZW5kZW4gQXJ0aWtlbCBpbSBFZGl0b3Igb2VmZm5lbgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYXdhaXQgRHJpdmVQb3J0YWwuc2VsZWN0RG9jdW1lbnQocmVzdW1lLmRvY0lkKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERyaXZlUG9ydGFsLmhpZ2hsaWdodEl0ZW0ocmVz
dW1lLmRvY0lkKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERyaXZlRWRpdG9yLmVkaXQo
cmVzdW1lLmRvY0lkKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
ICAgIH07CiAgICAgICAgICAgICAgICAgICAgLy8gQXV0by1EaXNtaXNzIG5hY2ggMzAgU2VrdW5k
ZW4KICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBpZiAoYmFubmVy
LnBhcmVudE5vZGUpIGJhbm5lci5yZW1vdmUoKTsgfSwgMzAwMDApOwogICAgICAgICAgICAgICAg
fSwgMTUwMCk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBsb2NhbFN0b3Jh
Z2UucmVtb3ZlSXRlbSgnZHJpdmUtcmVzdW1lLWRvYycpOwogICAgICAgICAgICB9CiAgICAgICAg
fQogICAgfSBjYXRjaChlKSB7CiAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ2RyaXZl
LXJlc3VtZS1kb2MnKTsKICAgIH0KfSk7Cjwvc2NyaXB0PgoKPC9ib2R5Pgo8L2h0bWw+Cg==
### FILE: server.ps1 | 51378
IyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQojIEQuUi5JLlYuRS4gUG9ydGFsIHYxLjAgLSBMb2thbGVy
IEhUVFAtU2VydmVyCiMgUG93ZXJTaGVsbC1iYXNpZXJ0IC0gS2VpbmUgSW5zdGFsbGF0aW9uIG5v
ZXRpZwojIFVudGVyc3R1ZXR6dDogU3RhdGlzY2hlIERhdGVpZW4gKyBBUEkgKExlc2VuLCBTY2hy
ZWliZW4sIExvZXNjaGVuLCBVcGxvYWQpCiMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIwojIFNpY2hl
cmhlaXRzYXJjaGl0ZWt0dXI6CiMgICAtIEF1dGhlbnRpZml6aWVydW5nOiAgJGVudjpVU0VSTkFN
RSBhdXMgV2luZG93cy1TZXNzaW9uIChuaWNodCBjbGllbnRzZWl0aWcgbWFuaXB1bGllcmJhcikK
IyAgIC0gQXV0b3Jpc2llcnVuZzogICAgICBTZXJ2ZXJzZWl0aWcgdmlhIFRlc3QtU3VwZXJVc2Vy
IC8gVGVzdC1SZXZpZXdlciB2b3IgamVkZXIgQWt0aW9uCiMgICAtIFBmYWR2YWxpZGllcnVuZzog
ICAgUmVzb2x2ZS1TYWZlUGF0aCgpIGdlZ2VuIFBhdGgtVHJhdmVyc2FsIChhbGxlIEFQSS1QZmFk
ZSkKIyAgIC0gR292ZXJuYW5jZS1TY2h1dHo6ICBnb3Zlcm5hbmNlLmpzb24gQUVTLTI1Ni12ZXJz
Y2hsdWVzc2VsdCwgbnVyIHVlYmVyIC9hcGkvZ292ZXJuYW5jZSBhZW5kZXJiYXIKIyAgIC0gRGF0
ZWlzY2h1dHo6ICAgICAgICBSZWFkLU9ubHktQXR0cmlidXRlIGF1ZiBhbGxlbiBKU09OLURhdGVp
ZW4gKGF1ZmdlaG9iZW4gbnVyIHdhZWhyZW5kIFNjaHJlaWJ2b3JnYW5nKQojICAgLSBOZXR6d2Vy
azogICAgICAgICAgIE51ciBsb2NhbGhvc3Q6e1BvcnR9LCBrZWluIGV4dGVybmVyIFp1Z3JpZmYg
bW9lZ2xpY2gKIyAgIC0gTG9ja2luZzogICAgICAgICAgICBQZXNzaW1pc3RpYyBMb2NraW5nIG1p
dCAxMC1NaW4tVGltZW91dCBnZWdlbiBnbGVpY2h6ZWl0aWdlIEJlYXJiZWl0dW5nCiMKIyBBUEkt
RW5kcHVua3RlIHVuZCBCZXJlY2h0aWd1bmdlbjoKIyAgIEdFVCAgL2FwaS9lbnZpcm9uICAgICAg
LSBPZWZmZW50bGljaCAoZ2lidCBXaW5kb3dzLUJlbnV0emVyaW5mbyB6dXJ1ZWNrKQojICAgR0VU
ICAvYXBpL3NjYW4gICAgICAgICAtIE9lZmZlbnRsaWNoIChsaXN0ZXQgRG9rdW1lbnRlKQojICAg
R0VUICAvYXBpL2dvdmVybmFuY2UgICAtIE9lZmZlbnRsaWNoIChHb3Zlcm5hbmNlLURhdGVuICsg
YWt0dWVsbGUgUm9sbGUpCiMgICBHRVQgIC9hcGkvbG9ja3MgICAgICAgIC0gT2VmZmVudGxpY2gg
KGFrdGl2ZSBTcGVycmVuKQojICAgUE9TVCAvYXBpL3dyaXRlICAgICAgICAtIEF1dGhlbnRpZml6
aWVydDsgU3RhdHVzICJGcmVpZ2VnZWJlbiIvIkFiZ2VsZWhudCIgbnVyIGZ1ZXIgUmV2aWV3ZXIv
U3VwZXJVc2VyCiMgICBQT1NUIC9hcGkvZGVsZXRlICAgICAgIC0gQXV0aGVudGlmaXppZXJ0OyBl
cmZvcmRlcnQgTlctS2VubnVuZy1CZXN0YWV0aWd1bmcsIEF1ZGl0LUxvZwojICAgUE9TVCAvYXBp
L3VwbG9hZCAgICAgICAtIEF1dGhlbnRpZml6aWVydDsgUGZhZHZhbGlkaWVydW5nIHZpYSBSZXNv
bHZlLVNhZmVQYXRoCiMgICBQT1NUIC9hcGkvZ292ZXJuYW5jZSAgIC0gTnVyIFN1cGVyVXNlcgoj
ICAgUE9TVCAvYXBpL2xvY2sgICAgICAgICAtIEF1dGhlbnRpZml6aWVydDsgUGVzc2ltaXN0aWMg
TG9ja2luZwojICAgUE9TVCAvYXBpL3VubG9jayAgICAgICAtIExvY2stSW5oYWJlciBvZGVyIFN1
cGVyVXNlcgojICAgUE9TVCAvYXBpL2hlYXJ0YmVhdCAgICAtIE9lZmZlbnRsaWNoIChCcm93c2Vy
LUxlYmVuc3plaWNoZW4pCiMgICBQT1NUIC9hcGkvc2h1dGRvd24gICAgIC0gT2VmZmVudGxpY2gg
KGJlZW5kZXQgU2VydmVyIGJlaSBUYWItU2NobGllc3N1bmcpCgpwYXJhbSgKICAgIFtpbnRdJFBv
cnQgPSA4MDgwLAogICAgW3N0cmluZ10kUm9vdFBhdGggPSAnJwopCgojIFJvb3QtVmVyemVpY2hu
aXM6IEV4cGxpeml0ZXIgUGFyYW1ldGVyIGhhdCBWb3JyYW5nIChmdWVyIGxva2FsZSBLb3BpZSB2
b20gTmV0emxhdWZ3ZXJrKQokUm9vdCA9IGlmICgkUm9vdFBhdGggLWFuZCAoVGVzdC1QYXRoICRS
b290UGF0aCkpIHsgJFJvb3RQYXRoIH0gZWxzZSB7ICRQU1NjcmlwdFJvb3QgfQokc2NyaXB0OkNv
cnNPcmlnaW4gPSAiaHR0cDovL2xvY2FsaG9zdDokUG9ydCIKCiMgTUlNRS1UeXBlcwokTWltZVR5
cGVzID0gQHsKICAgICcuaHRtbCcgPSAndGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04JwogICAgJy5j
c3MnICA9ICd0ZXh0L2NzczsgY2hhcnNldD11dGYtOCcKICAgICcuanMnICAgPSAnYXBwbGljYXRp
b24vamF2YXNjcmlwdDsgY2hhcnNldD11dGYtOCcKICAgICcuanNvbicgPSAnYXBwbGljYXRpb24v
anNvbjsgY2hhcnNldD11dGYtOCcKICAgICcucG5nJyAgPSAnaW1hZ2UvcG5nJwogICAgJy5qcGcn
ICA9ICdpbWFnZS9qcGVnJwogICAgJy5qcGVnJyA9ICdpbWFnZS9qcGVnJwogICAgJy5naWYnICA9
ICdpbWFnZS9naWYnCiAgICAnLnN2ZycgID0gJ2ltYWdlL3N2Zyt4bWwnCiAgICAnLmljbycgID0g
J2ltYWdlL3gtaWNvbicKICAgICcucGRmJyAgPSAnYXBwbGljYXRpb24vcGRmJwogICAgJy5tcDQn
ICA9ICd2aWRlby9tcDQnCiAgICAnLm1wMycgID0gJ2F1ZGlvL21wZWcnCiAgICAnLndlYm0nID0g
J3ZpZGVvL3dlYm0nCiAgICAnLm9nZycgID0gJ2F1ZGlvL29nZycKICAgICcud29mZicgPSAnZm9u
dC93b2ZmJwogICAgJy53b2ZmMic9ICdmb250L3dvZmYyJwogICAgJy5kb2N4JyA9ICdhcHBsaWNh
dGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC5k
b2N1bWVudCcKICAgICcueGxzeCcgPSAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9m
ZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXQnCiAgICAnLnBwdHgnID0gJ2FwcGxpY2F0
aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC5wcmVz
ZW50YXRpb24nCiAgICAnLndhdicgID0gJ2F1ZGlvL3dhdicKICAgICcud2VicCcgPSAnaW1hZ2Uv
d2VicCcKfQoKIyBIaWxmc2Z1bmt0aW9uOiBKU09OLUFudHdvcnQgc2VuZGVuCmZ1bmN0aW9uIEFk
ZC1TZWN1cml0eUhlYWRlcnMoJFJlc3BvbnNlKSB7CiAgICAkUmVzcG9uc2UuSGVhZGVycy5BZGQo
IkFjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbiIsICRzY3JpcHQ6Q29yc09yaWdpbikKICAgICRS
ZXNwb25zZS5IZWFkZXJzLkFkZCgiWC1Db250ZW50LVR5cGUtT3B0aW9ucyIsICJub3NuaWZmIikK
ICAgICMgU0FNRU9SSUdJTiBzdGF0dCBERU5ZOiBFcmxhdWJ0IGlmcmFtZS1FaW5iZXR0dW5nIHZv
biBQREZzIGlubmVyaGFsYiBkZXIgZWlnZW5lbiBTZWl0ZQogICAgJFJlc3BvbnNlLkhlYWRlcnMu
QWRkKCJYLUZyYW1lLU9wdGlvbnMiLCAiU0FNRU9SSUdJTiIpCn0KCmZ1bmN0aW9uIFNlbmQtSnNv
bigkUmVzcG9uc2UsICREYXRhLCAkU3RhdHVzQ29kZSA9IDIwMCkgewogICAgdHJ5IHsKICAgICAg
ICAkSnNvbiA9ICREYXRhIHwgQ29udmVydFRvLUpzb24gLURlcHRoIDEwIC1Db21wcmVzcwogICAg
ICAgICRCeXRlcyA9IFtUZXh0LkVuY29kaW5nXTo6VVRGOC5HZXRCeXRlcygkSnNvbikKICAgICAg
ICAkUmVzcG9uc2UuU3RhdHVzQ29kZSA9ICRTdGF0dXNDb2RlCiAgICAgICAgJFJlc3BvbnNlLkNv
bnRlbnRUeXBlID0gJ2FwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9dXRmLTgnCiAgICAgICAgQWRk
LVNlY3VyaXR5SGVhZGVycyAkUmVzcG9uc2UKICAgICAgICAkUmVzcG9uc2UuQ29udGVudExlbmd0
aDY0ID0gJEJ5dGVzLkxlbmd0aAogICAgICAgICRSZXNwb25zZS5PdXRwdXRTdHJlYW0uV3JpdGUo
JEJ5dGVzLCAwLCAkQnl0ZXMuTGVuZ3RoKQogICAgICAgICRSZXNwb25zZS5PdXRwdXRTdHJlYW0u
Rmx1c2goKQogICAgfSBjYXRjaCB7CiAgICAgICAgV3JpdGUtSG9zdCAiICBFUlIgIFNlbmQtSnNv
bjogJCgkXy5FeGNlcHRpb24uTWVzc2FnZSkiIC1Gb3JlZ3JvdW5kQ29sb3IgUmVkCiAgICB9Cn0K
CiMgSGlsZnNmdW5rdGlvbjogUmVxdWVzdC1Cb2R5IGxlc2VuIChpbW1lciBVVEYtOCwgZGEgQnJv
d3NlciBVVEYtOCBzZW5kZXQpCiMgTGltaXQ6IDEwIE1CIGZ1ZXIgSlNPTi1SZXF1ZXN0cyAodmVy
aGluZGVydCBTcGVpY2hlcmVyc2Nob2VwZnVuZyBkdXJjaCB1ZWJlcmdyb3NzZSBQYXlsb2FkcykK
JHNjcmlwdDpNYXhCb2R5Qnl0ZXMgPSAxMCAqIDEwMjQgKiAxMDI0CgpmdW5jdGlvbiBSZWFkLUJv
ZHkoJFJlcXVlc3QpIHsKICAgIGlmICgkUmVxdWVzdC5Db250ZW50TGVuZ3RoNjQgLWd0ICRzY3Jp
cHQ6TWF4Qm9keUJ5dGVzKSB7CiAgICAgICAgdGhyb3cgIlJlcXVlc3QtQm9keSB6dSBncm9zcyAo
bWF4LiAkKFtNYXRoXTo6Um91bmQoJHNjcmlwdDpNYXhCb2R5Qnl0ZXMgLyAxMDI0IC8gMTAyNCkp
IE1CKSIKICAgIH0KICAgICRSZWFkZXIgPSBOZXctT2JqZWN0IFN5c3RlbS5JTy5TdHJlYW1SZWFk
ZXIoJFJlcXVlc3QuSW5wdXRTdHJlYW0sIFtUZXh0LkVuY29kaW5nXTo6VVRGOCkKICAgICRCb2R5
ID0gJFJlYWRlci5SZWFkVG9FbmQoKQogICAgJFJlYWRlci5DbG9zZSgpCiAgICByZXR1cm4gJEJv
ZHkKfQoKIyBQZmFkdmFsaWRpZXJ1bmc6IFZlcmhpbmRlcnQgUGF0aC1UcmF2ZXJzYWwtQW5ncmlm
ZmUgKC4uLyBvZGVyIGFic29sdXRlIFBmYWRlKS4KIyBHZXRGdWxsUGF0aCgpIGthbm9uaXNpZXJ0
IGRlbiBQZmFkIChsb2VzdCAuLi8gYXVmKSwgU3RhcnRzV2l0aCgpIHBydWVmdCBDb250YWlubWVu
dC4KIyBHaWJ0ICRudWxsIHp1cnVlY2sgYmVpIHVuZ3VlbHRpZ2VtIFBmYWQgLSBBdWZydWZlciBt
dXNzIGRhcmF1ZiBwcnVlZmVuLgojIFdpcmQgaW4gL2FwaS93cml0ZSwgL2FwaS9kZWxldGUsIC9h
cGkvdXBsb2FkIHZvciBqZWRlbSBEYXRlaXp1Z3JpZmYgYXVmZ2VydWZlbi4KZnVuY3Rpb24gUmVz
b2x2ZS1TYWZlUGF0aCgkUmVsUGF0aCkgewogICAgJEZ1bGwgPSBbSU8uUGF0aF06OkdldEZ1bGxQ
YXRoKChKb2luLVBhdGggJFJvb3QgJFJlbFBhdGgpKQogICAgaWYgKC1ub3QgJEZ1bGwuU3RhcnRz
V2l0aCgkUm9vdCkpIHsgcmV0dXJuICRudWxsIH0KICAgIHJldHVybiAkRnVsbAp9CgojIEhpbGZz
ZnVua3Rpb246IFNjaHJlaWJzY2h1dHogYXVmaGViZW4gdm9yIFNjaHJlaWJ2b3JnYW5nCmZ1bmN0
aW9uIFVucHJvdGVjdC1GaWxlKCRQYXRoKSB7CiAgICBpZiAoVGVzdC1QYXRoICRQYXRoKSB7CiAg
ICAgICAgJGl0ZW0gPSBHZXQtSXRlbSAkUGF0aCAtRm9yY2UKICAgICAgICBpZiAoJGl0ZW0uQXR0
cmlidXRlcyAtYmFuZCBbSU8uRmlsZUF0dHJpYnV0ZXNdOjpSZWFkT25seSkgewogICAgICAgICAg
ICAkaXRlbS5BdHRyaWJ1dGVzID0gJGl0ZW0uQXR0cmlidXRlcyAtYnhvciBbSU8uRmlsZUF0dHJp
YnV0ZXNdOjpSZWFkT25seQogICAgICAgIH0KICAgIH0KfQoKIyBIaWxmc2Z1bmt0aW9uOiBTY2hy
ZWlic2NodXR6IHdpZWRlciBzZXR6ZW4KZnVuY3Rpb24gUHJvdGVjdC1GaWxlKCRQYXRoKSB7CiAg
ICBpZiAoVGVzdC1QYXRoICRQYXRoKSB7CiAgICAgICAgJGl0ZW0gPSBHZXQtSXRlbSAkUGF0aCAt
Rm9yY2UKICAgICAgICAkaXRlbS5BdHRyaWJ1dGVzID0gJGl0ZW0uQXR0cmlidXRlcyAtYm9yIFtJ
Ty5GaWxlQXR0cmlidXRlc106OlJlYWRPbmx5CiAgICB9Cn0KCiMgLS0tLSBBRVMtMjU2LVZlcnNj
aGx1ZXNzZWx1bmcgZnVlciBnb3Zlcm5hbmNlLmpzb24gLS0tLQojIFNjaHV0emtvbnplcHQ6IGdv
dmVybmFuY2UuanNvbiBlbnRoYWVsdCBSb2xsZW56dXdlaXN1bmdlbiAoU3VwZXJVc2VyLCBSZXZp
ZXdlcikuCiMgRGllIERhdGVpIHdpcmQgYmVpbSBlcnN0ZW4gU2VydmVyLVN0YXJ0IGF1dG9tYXRp
c2NoIHZlcnNjaGx1ZXNzZWx0LgojIFNjaHV0enppZWw6IFZlcmhpbmRlcm4sIGRhc3MgUm9sbGVu
c3RydWt0dXJlbiBpbSBEYXRlaXN5c3RlbSBpbSBLbGFydGV4dCBlaW5zZWhiYXIgc2luZC4KIyBF
aW5zY2hyYWVua3VuZzogRGVyIFNjaGx1ZXNzZWwgbGllZ3QgaW0gUXVlbGxjb2RlIC0gZGVyIFNj
aHV0eiByaWNodGV0IHNpY2ggZ2VnZW4KIyBvcHBvcnR1bmlzdGlzY2hlcyBMZXNlbiwgbmljaHQg
Z2VnZW4gQW5ncmVpZmVyIG1pdCBadWdyaWZmIGF1ZiBkZW4gUXVlbGxjb2RlLgojIEFsZ29yaXRo
bXVzOiBBRVMtMjU2LUNCQyBtaXQgUEtDUzctUGFkZGluZywgenVmYWVsbGlnZXIgSVYgcHJvIFZl
cnNjaGx1ZXNzZWx1bmcuCiMgRm9ybWF0OiAiRFJJVkUtRU5DOiIgKyBCYXNlNjQoSVZbMTYgQnl0
ZXNdICsgQ2lwaGVydGV4dCkKIyBTY2hsdWVzc2VsICgzMiBCeXRlcyA9IEFFUy0yNTYpLiBJZGVu
dGlzY2ggaW4gc2VydmVyLnBzMSB1bmQgc2VydmVyLnB5Lgokc2NyaXB0OkdvdkFlc0tleSA9IFtD
b252ZXJ0XTo6RnJvbUJhc2U2NFN0cmluZygiUkZKSlZrVXRkak11TmkxSGIzWmxjbTVoYm1ObExV
dGxlUzB5TURJMklTRT0iKQokc2NyaXB0OkdvdkVuY1ByZWZpeCA9ICJEUklWRS1FTkM6IgoKZnVu
Y3Rpb24gUHJvdGVjdC1Hb3Zlcm5hbmNlRGF0YShbc3RyaW5nXSRKc29uVGV4dCkgewogICAgJEFl
cyA9IFtTZWN1cml0eS5DcnlwdG9ncmFwaHkuQWVzXTo6Q3JlYXRlKCkKICAgICRBZXMuS2V5ID0g
JHNjcmlwdDpHb3ZBZXNLZXkKICAgICRBZXMuR2VuZXJhdGVJVigpCiAgICAkQWVzLk1vZGUgPSBb
U2VjdXJpdHkuQ3J5cHRvZ3JhcGh5LkNpcGhlck1vZGVdOjpDQkMKICAgICRBZXMuUGFkZGluZyA9
IFtTZWN1cml0eS5DcnlwdG9ncmFwaHkuUGFkZGluZ01vZGVdOjpQS0NTNwogICAgJEVuYyA9ICRB
ZXMuQ3JlYXRlRW5jcnlwdG9yKCkKICAgICRQbGFpbiA9IFtUZXh0LkVuY29kaW5nXTo6VVRGOC5H
ZXRCeXRlcygkSnNvblRleHQpCiAgICAkQ2lwaGVyID0gJEVuYy5UcmFuc2Zvcm1GaW5hbEJsb2Nr
KCRQbGFpbiwgMCwgJFBsYWluLkxlbmd0aCkKICAgICRDb21iaW5lZCA9IE5ldy1PYmplY3QgYnl0
ZVtdICgkQWVzLklWLkxlbmd0aCArICRDaXBoZXIuTGVuZ3RoKQogICAgW0FycmF5XTo6Q29weSgk
QWVzLklWLCAwLCAkQ29tYmluZWQsIDAsICRBZXMuSVYuTGVuZ3RoKQogICAgW0FycmF5XTo6Q29w
eSgkQ2lwaGVyLCAwLCAkQ29tYmluZWQsICRBZXMuSVYuTGVuZ3RoLCAkQ2lwaGVyLkxlbmd0aCkK
ICAgICRBZXMuRGlzcG9zZSgpCiAgICByZXR1cm4gJHNjcmlwdDpHb3ZFbmNQcmVmaXggKyBbQ29u
dmVydF06OlRvQmFzZTY0U3RyaW5nKCRDb21iaW5lZCkKfQoKZnVuY3Rpb24gVW5wcm90ZWN0LUdv
dmVybmFuY2VEYXRhKFtzdHJpbmddJEVuY1RleHQpIHsKICAgICRCNjQgPSAkRW5jVGV4dC5TdWJz
dHJpbmcoJHNjcmlwdDpHb3ZFbmNQcmVmaXguTGVuZ3RoKQogICAgJENvbWJpbmVkID0gW0NvbnZl
cnRdOjpGcm9tQmFzZTY0U3RyaW5nKCRCNjQpCiAgICAkSVYgPSAkQ29tYmluZWRbMC4uMTVdCiAg
ICAkQ2lwaGVyID0gJENvbWJpbmVkWzE2Li4oJENvbWJpbmVkLkxlbmd0aCAtIDEpXQogICAgJEFl
cyA9IFtTZWN1cml0eS5DcnlwdG9ncmFwaHkuQWVzXTo6Q3JlYXRlKCkKICAgICRBZXMuS2V5ID0g
JHNjcmlwdDpHb3ZBZXNLZXkKICAgICRBZXMuSVYgPSAkSVYKICAgICRBZXMuTW9kZSA9IFtTZWN1
cml0eS5DcnlwdG9ncmFwaHkuQ2lwaGVyTW9kZV06OkNCQwogICAgJEFlcy5QYWRkaW5nID0gW1Nl
Y3VyaXR5LkNyeXB0b2dyYXBoeS5QYWRkaW5nTW9kZV06OlBLQ1M3CiAgICAkRGVjID0gJEFlcy5D
cmVhdGVEZWNyeXB0b3IoKQogICAgJFBsYWluID0gJERlYy5UcmFuc2Zvcm1GaW5hbEJsb2NrKCRD
aXBoZXIsIDAsICRDaXBoZXIuTGVuZ3RoKQogICAgJEFlcy5EaXNwb3NlKCkKICAgIHJldHVybiBb
VGV4dC5FbmNvZGluZ106OlVURjguR2V0U3RyaW5nKCRQbGFpbikKfQoKIyBIaWxmc2Z1bmt0aW9u
OiBHb3Zlcm5hbmNlLURhdGVuIGxhZGVuIChnZWNhY2h0LCBJbnZhbGlkaWVydW5nIGJlaSBEYXRl
aS1BZW5kZXJ1bmcpCiMgRXJrZW5udCBhdXRvbWF0aXNjaCBLbGFydGV4dC1KU09OIHVuZCB2ZXJz
Y2hsdWVzc2VsdCBlcyBiZWltIGVyc3RlbiBMZXNlbi4KJHNjcmlwdDpHb3ZDYWNoZSA9ICRudWxs
CiRzY3JpcHQ6R292Q2FjaGVUaW1lID0gW0RhdGVUaW1lXTo6TWluVmFsdWUKCmZ1bmN0aW9uIEdl
dC1Hb3Zlcm5hbmNlIHsKICAgICRHb3ZQYXRoID0gSm9pbi1QYXRoICRSb290ICJkYXRhL2dvdmVy
bmFuY2UuanNvbiIKICAgIGlmIChUZXN0LVBhdGggJEdvdlBhdGgpIHsKICAgICAgICAkTGFzdFdy
aXRlID0gKEdldC1JdGVtICRHb3ZQYXRoIC1Gb3JjZSkuTGFzdFdyaXRlVGltZVV0YwogICAgICAg
IGlmICgkc2NyaXB0OkdvdkNhY2hlIC1hbmQgJExhc3RXcml0ZSAtbGUgJHNjcmlwdDpHb3ZDYWNo
ZVRpbWUpIHsKICAgICAgICAgICAgcmV0dXJuICRzY3JpcHQ6R292Q2FjaGUKICAgICAgICB9CiAg
ICAgICAgJFJhdyA9IEdldC1Db250ZW50ICRHb3ZQYXRoIC1SYXcgLUVuY29kaW5nIFVURjgKICAg
ICAgICBpZiAoJFJhdy5TdGFydHNXaXRoKCRzY3JpcHQ6R292RW5jUHJlZml4KSkgewogICAgICAg
ICAgICAkSnNvblRleHQgPSBVbnByb3RlY3QtR292ZXJuYW5jZURhdGEgJFJhdwogICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICMgS2xhcnRleHQgZXJrYW5udCAtIGF1dG9tYXRpc2NoIHZlcnNj
aGx1ZXNzZWxuIChNaWdyYXRpb24pCiAgICAgICAgICAgICRKc29uVGV4dCA9ICRSYXcKICAgICAg
ICAgICAgJEVuY3J5cHRlZCA9IFByb3RlY3QtR292ZXJuYW5jZURhdGEgJEpzb25UZXh0CiAgICAg
ICAgICAgIFVucHJvdGVjdC1GaWxlICRHb3ZQYXRoCiAgICAgICAgICAgIFtJTy5GaWxlXTo6V3Jp
dGVBbGxUZXh0KCRHb3ZQYXRoLCAkRW5jcnlwdGVkLCBbVGV4dC5VVEY4RW5jb2RpbmddOjpuZXco
JGZhbHNlKSkKICAgICAgICAgICAgUHJvdGVjdC1GaWxlICRHb3ZQYXRoCiAgICAgICAgICAgIFdy
aXRlLUhvc3QgIiAgQ1JZUFQgIGdvdmVybmFuY2UuanNvbiB3dXJkZSB2ZXJzY2hsdWVzc2VsdCAo
QUVTLTI1NikiIC1Gb3JlZ3JvdW5kQ29sb3IgTWFnZW50YQogICAgICAgIH0KICAgICAgICAkc2Ny
aXB0OkdvdkNhY2hlID0gJEpzb25UZXh0IHwgQ29udmVydEZyb20tSnNvbgogICAgICAgICRzY3Jp
cHQ6R292Q2FjaGVUaW1lID0gKEdldC1JdGVtICRHb3ZQYXRoIC1Gb3JjZSkuTGFzdFdyaXRlVGlt
ZVV0YwogICAgICAgIHJldHVybiAkc2NyaXB0OkdvdkNhY2hlCiAgICB9CiAgICByZXR1cm4gJG51
bGwKfQoKZnVuY3Rpb24gQ2xlYXItR292ZXJuYW5jZUNhY2hlIHsKICAgICRzY3JpcHQ6R292Q2Fj
aGUgPSAkbnVsbAogICAgJHNjcmlwdDpHb3ZDYWNoZVRpbWUgPSBbRGF0ZVRpbWVdOjpNaW5WYWx1
ZQp9CgpmdW5jdGlvbiBTYXZlLUdvdmVybmFuY2UoJEdvdk9iamVjdCkgewogICAgJEdvdlBhdGgg
PSBKb2luLVBhdGggJFJvb3QgImRhdGEvZ292ZXJuYW5jZS5qc29uIgogICAgJEpzb25Db250ZW50
ID0gJEdvdk9iamVjdCB8IENvbnZlcnRUby1Kc29uIC1EZXB0aCAyMAogICAgJEVuY3J5cHRlZCA9
IFByb3RlY3QtR292ZXJuYW5jZURhdGEgJEpzb25Db250ZW50CiAgICBVbnByb3RlY3QtRmlsZSAk
R292UGF0aAogICAgW0lPLkZpbGVdOjpXcml0ZUFsbFRleHQoJEdvdlBhdGgsICRFbmNyeXB0ZWQs
IFtUZXh0LlVURjhFbmNvZGluZ106Om5ldygkZmFsc2UpKQogICAgUHJvdGVjdC1GaWxlICRHb3ZQ
YXRoCiAgICBDbGVhci1Hb3Zlcm5hbmNlQ2FjaGUKfQoKIyBBdXRvcmlzaWVydW5nc3BydWVmdW5n
OiBWZXJnbGVpY2h0ICRlbnY6VVNFUk5BTUUgKyAkZW52OlVTRVJET01BSU4gbWl0IGdvdmVybmFu
Y2UuanNvbi4KIyBGYWxsYmFjazogV2VubiBrZWluZSBnb3Zlcm5hbmNlLmpzb24gZXhpc3RpZXJ0
LCB3aXJkICR0cnVlIHp1cnVlY2tnZWdlYmVuIChFcnN0aW5iZXRyaWVibmFobWUpLgojIERvbWFl
bmUgIioiIGluIGdvdmVybmFuY2UuanNvbiBiZWRldXRldDogQmVudXR6ZXJuYW1lIHJlaWNodCwg
RG9tYWVuZSB3aXJkIG5pY2h0IGdlcHJ1ZWZ0LgpmdW5jdGlvbiBUZXN0LVN1cGVyVXNlcigkR292
ZXJuYW5jZSkgewogICAgaWYgKC1ub3QgJEdvdmVybmFuY2UpIHsgcmV0dXJuICR0cnVlIH0gICMg
S2VpbiBHb3Zlcm5hbmNlID0gYWxsZXMgZXJsYXVidAogICAgZm9yZWFjaCAoJHN1IGluICRHb3Zl
cm5hbmNlLnN1cGVyVXNlcnMpIHsKICAgICAgICBpZiAoJHN1LnVzZXJuYW1lIC1lcSAkZW52OlVT
RVJOQU1FKSB7CiAgICAgICAgICAgIGlmICgkc3UuZG9tYWluIC1lcSAnKicgLW9yICRzdS5kb21h
aW4gLWVxICRlbnY6VVNFUkRPTUFJTikgeyByZXR1cm4gJHRydWUgfQogICAgICAgIH0KICAgIH0K
ICAgIHJldHVybiAkZmFsc2UKfQoKIyBGYWNoYXVmc2ljaHQtUHJ1ZWZ1bmc6IFdpZSBUZXN0LVN1
cGVyVXNlciwgYWJlciBmdWVyIEZhY2hhdWZzaWNodC1Sb2xsZS4KIyBPaG5lIGdvdmVybmFuY2Uu
anNvbjogJGZhbHNlIChrZWluZSBGYWNoYXVmc2ljaHQgb2huZSBleHBsaXppdGUgWnV3ZWlzdW5n
KS4KZnVuY3Rpb24gVGVzdC1GYWNoYXVmc2ljaHQoJEdvdmVybmFuY2UpIHsKICAgIGlmICgtbm90
ICRHb3Zlcm5hbmNlKSB7IHJldHVybiAkZmFsc2UgfQogICAgZm9yZWFjaCAoJGZhIGluICRHb3Zl
cm5hbmNlLmZhY2hhdWZzaWNodCkgewogICAgICAgIGlmICgkZmEudXNlcm5hbWUgLWVxICRlbnY6
VVNFUk5BTUUpIHsKICAgICAgICAgICAgaWYgKCRmYS5kb21haW4gLWVxICcqJyAtb3IgJGZhLmRv
bWFpbiAtZXEgJGVudjpVU0VSRE9NQUlOKSB7IHJldHVybiAkdHJ1ZSB9CiAgICAgICAgfQogICAg
fQogICAgcmV0dXJuICRmYWxzZQp9CgojIFJldmlld2VyLVBydWVmdW5nOiBXaWUgVGVzdC1TdXBl
clVzZXIsIGFiZXIgenVzYWV0emxpY2ggS2F0ZWdvcmllLVp1b3JkbnVuZy4KIyBPaG5lIGdvdmVy
bmFuY2UuanNvbjogJGZhbHNlIChrZWluIFJldmlld2VyIG9obmUgZXhwbGl6aXRlIFp1d2Vpc3Vu
ZykuCiMgQXN5bW1ldHJpZSB6dSBUZXN0LVN1cGVyVXNlciBpc3QgYmVhYnNpY2h0aWd0OiBSZXZp
ZXdlci1SZWNodGUgbXVlc3NlbiBleHBsaXppdCB2ZXJnZWJlbiB3ZXJkZW4uCmZ1bmN0aW9uIFRl
c3QtUmV2aWV3ZXIoJEdvdmVybmFuY2UsICRLYXRlZ29yaWUpIHsKICAgIGlmICgtbm90ICRHb3Zl
cm5hbmNlKSB7IHJldHVybiAkZmFsc2UgfQogICAgZm9yZWFjaCAoJHIgaW4gJEdvdmVybmFuY2Uu
cmV2aWV3ZXJzKSB7CiAgICAgICAgaWYgKCRyLnVzZXJuYW1lIC1lcSAkZW52OlVTRVJOQU1FKSB7
CiAgICAgICAgICAgIGlmICgkci5kb21haW4gLWVxICcqJyAtb3IgJHIuZG9tYWluIC1lcSAkZW52
OlVTRVJET01BSU4pIHsKICAgICAgICAgICAgICAgIGlmICgkci5rYXRlZ29yaWVuIC1jb250YWlu
cyAkS2F0ZWdvcmllKSB7IHJldHVybiAkdHJ1ZSB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAg
ICB9CiAgICByZXR1cm4gJGZhbHNlCn0KCiMgUHJvemVzcyBpbSBUYXNrLU1hbmFnZXIgYWxzICJE
UklWRV9Mb2NhbGhvc3QiIHNpY2h0YmFyIG1hY2hlbgokSG9zdC5VSS5SYXdVSS5XaW5kb3dUaXRs
ZSA9ICJEUklWRV9Mb2NhbGhvc3QiCgpXcml0ZS1Ib3N0ICIiCldyaXRlLUhvc3QgIj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IiAtRm9yZWdyb3VuZENvbG9yIEN5
YW4KV3JpdGUtSG9zdCAiICBELlIuSS5WLkUuIFBvcnRhbCB2MS4wIC0gU2VydmVyIiAgICAgICAg
ICAgIC1Gb3JlZ3JvdW5kQ29sb3IgQ3lhbgpXcml0ZS1Ib3N0ICI9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PSIgLUZvcmVncm91bmRDb2xvciBDeWFuCldyaXRlLUhv
c3QgIiIKV3JpdGUtSG9zdCAiICBPcmRuZXI6ICAkUm9vdCIgLUZvcmVncm91bmRDb2xvciBHcmF5
CldyaXRlLUhvc3QgIiAgVVJMOiAgICAgaHR0cDovL2xvY2FsaG9zdDokUG9ydCIgICAgICAgICAg
ICAgIC1Gb3JlZ3JvdW5kQ29sb3IgR3JlZW4KV3JpdGUtSG9zdCAiIgpXcml0ZS1Ib3N0ICIgIFp1
bSBCZWVuZGVuOiBTdHJnK0MgZHJ1ZWNrZW4iICAgICAgICAgICAgICAgICAtRm9yZWdyb3VuZENv
bG9yIFllbGxvdwpXcml0ZS1Ib3N0ICIiCgojIFNjaHJlaWJzY2h1dHogYmVpbSBTdGFydCBhdWZo
ZWJlbiAoZnVlciBkaWUgZ2VzYW10ZSBTZXNzaW9uKQpXcml0ZS1Ib3N0ICIgIFNjaHJlaWJzY2h1
dHogd2lyZCBhdWZnZWhvYmVuLi4uIiAgICAgICAgICAgICAtRm9yZWdyb3VuZENvbG9yIEdyYXkK
R2V0LUNoaWxkSXRlbSAiJFJvb3RcZGF0YSIgLVJlY3Vyc2UgLUZpbHRlciAiKi5qc29uIiAtRXJy
b3JBY3Rpb24gU2lsZW50bHlDb250aW51ZSB8IEZvckVhY2gtT2JqZWN0IHsgVW5wcm90ZWN0LUZp
bGUgJF8uRnVsbE5hbWUgfQpVbnByb3RlY3QtRmlsZSAoSm9pbi1QYXRoICRSb290ICJpbmRleC5o
dG1sIikKCiMgTGluay1CZXJlaW5pZ3VuZzogQWxsZSA8YT4tVGFncyBpbiBiZXN0ZWhlbmRlbiBB
cnRpa2VsbiBhdWYgdGFyZ2V0PSJfYmxhbmsiIHNldHplbi4KIyBWZXJoaW5kZXJ0LCBkYXNzIGtv
cGllcnRlIExpbmtzIG1pdCB0YXJnZXQ9Il9zZWxmIiBkYXMgUG9ydGFsIHZlcmxhc3Nlbi4KV3Jp
dGUtSG9zdCAiICBMaW5rcyBpbiBBcnRpa2VsbiB3ZXJkZW4gZ2VwcnVlZnQuLi4iICAgICAgICAg
IC1Gb3JlZ3JvdW5kQ29sb3IgR3JheQokTGlua0ZpeENvdW50ID0gMApHZXQtQ2hpbGRJdGVtICIk
Um9vdFxkYXRhIiAtUmVjdXJzZSAtRmlsdGVyICIqLmpzb24iIC1FcnJvckFjdGlvbiBTaWxlbnRs
eUNvbnRpbnVlIHwgRm9yRWFjaC1PYmplY3QgewogICAgdHJ5IHsKICAgICAgICAkSnNvblRleHQg
PSBbSU8uRmlsZV06OlJlYWRBbGxUZXh0KCRfLkZ1bGxOYW1lLCBbVGV4dC5VVEY4RW5jb2Rpbmdd
OjpuZXcoJGZhbHNlKSkKICAgICAgICAjIE51ciBEYXRlaWVuIG1pdCA8YSBocmVmIGJlYXJiZWl0
ZW4gKFBlcmZvcm1hbmNlOiBKU09OIG9obmUgTGlua3MgdWViZXJzcHJpbmdlbikKICAgICAgICBp
ZiAoJEpzb25UZXh0IC1tYXRjaCAnPGFccytbXj5dKmhyZWYnKSB7CiAgICAgICAgICAgICRDaGFu
Z2VkID0gJGZhbHNlCiAgICAgICAgICAgICMgdGFyZ2V0PSJfc2VsZiIgZHVyY2ggdGFyZ2V0PSJf
YmxhbmsiIGVyc2V0emVuCiAgICAgICAgICAgIGlmICgkSnNvblRleHQgLW1hdGNoICd0YXJnZXRc
cyo9XHMqWyInJ11fc2VsZlsiJyddJykgewogICAgICAgICAgICAgICAgJEpzb25UZXh0ID0gW3Jl
Z2V4XTo6UmVwbGFjZSgkSnNvblRleHQsICd0YXJnZXRccyo9XHMqWyInJ11fc2VsZlsiJyddJywg
J3RhcmdldD0iX2JsYW5rIicpCiAgICAgICAgICAgICAgICAkQ2hhbmdlZCA9ICR0cnVlCiAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIyBMaW5rcyBvaG5lIHRhcmdldC1BdHRyaWJ1dDogdGFyZ2V0
PSJfYmxhbmsiIGhpbnp1ZnVlZ2VuCiAgICAgICAgICAgICMgUmVnZXg6IDxhIC4uLiBocmVmPSIu
Li4iIG9obmUgdGFyZ2V0PSAuLi4gPiAobnVyIGV4dGVybmUgTGlua3MsIG5pY2h0ICMtQW5rZXIp
CiAgICAgICAgICAgICRKc29uVGV4dCA9IFtyZWdleF06OlJlcGxhY2UoJEpzb25UZXh0LCAnKDxh
XHMrKD8hW14+XSp0YXJnZXRccyo9KVtePl0qaHJlZlxzKj1ccypbIicnXSkoPyEjKScsIHsKICAg
ICAgICAgICAgICAgIHBhcmFtKCRtKQogICAgICAgICAgICAgICAgJHRhZyA9ICRtLlZhbHVlCiAg
ICAgICAgICAgICAgICAjIHRhcmdldD0iX2JsYW5rIiB2b3IgaHJlZiBlaW5mdWVnZW4KICAgICAg
ICAgICAgICAgICR0YWcgLXJlcGxhY2UgJyg8YVxzKyknLCAnJDF0YXJnZXQ9Il9ibGFuayIgcmVs
PSJub29wZW5lciBub3JlZmVycmVyIiAnCiAgICAgICAgICAgIH0pCiAgICAgICAgICAgIGlmICgk
SnNvblRleHQgLW5lIFtJTy5GaWxlXTo6UmVhZEFsbFRleHQoJF8uRnVsbE5hbWUsIFtUZXh0LlVU
RjhFbmNvZGluZ106Om5ldygkZmFsc2UpKSkgewogICAgICAgICAgICAgICAgJENoYW5nZWQgPSAk
dHJ1ZQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICgkQ2hhbmdlZCkgewogICAgICAgICAg
ICAgICAgW0lPLkZpbGVdOjpXcml0ZUFsbFRleHQoJF8uRnVsbE5hbWUsICRKc29uVGV4dCwgW1Rl
eHQuVVRGOEVuY29kaW5nXTo6bmV3KCRmYWxzZSkpCiAgICAgICAgICAgICAgICAkTGlua0ZpeENv
dW50KysKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0gY2F0Y2gge30KfQppZiAoJExpbmtG
aXhDb3VudCAtZ3QgMCkgewogICAgV3JpdGUtSG9zdCAiICBbT0tdICAgICAgJExpbmtGaXhDb3Vu
dCBBcnRpa2VsIGJlcmVpbmlndCAoTGlua3MgLT4gdGFyZ2V0PV9ibGFuaykiIC1Gb3JlZ3JvdW5k
Q29sb3IgR3JlZW4KfSBlbHNlIHsKICAgIFdyaXRlLUhvc3QgIiAgW09LXSAgICAgIEFsbGUgTGlu
a3Mga29ycmVrdCIgLUZvcmVncm91bmRDb2xvciBHcmVlbgp9CgojIFZlcnNpb25zaW50ZWdyaXRh
ZXQ6IFN0ZWxsdCBzaWNoZXIsIGRhc3MgZGllIFZlcnNpb24genVtIFN0YXR1cyBwYXNzdC4KIyBG
cmVpZ2VnZWJlbiBtdXNzIG1pbmRlc3RlbnMgdjEuMCBzZWluLCBFbnR3dXJmL1BydWVmdW5nIG1p
bmRlc3RlbnMgdjAuMS4KV3JpdGUtSG9zdCAiICBWZXJzaW9uaWVydW5nIHdpcmQgZ2VwcnVlZnQu
Li4iICAgICAgICAgICAgICAgIC1Gb3JlZ3JvdW5kQ29sb3IgR3JheQokVmVyc2lvbkZpeENvdW50
ID0gMApHZXQtQ2hpbGRJdGVtICIkUm9vdFxkYXRhIiAtUmVjdXJzZSAtRmlsdGVyICIqLmpzb24i
IC1FcnJvckFjdGlvbiBTaWxlbnRseUNvbnRpbnVlIHwgRm9yRWFjaC1PYmplY3QgewogICAgIyBn
b3Zlcm5hbmNlLmpzb24sIGNvbmZpZy5qc29uLCAudHJhc2guanNvbiBldGMuIHVlYmVyc3ByaW5n
ZW4KICAgIGlmICgkXy5OYW1lIC1tYXRjaCAnXlwuJyAtb3IgJF8uTmFtZSAtZXEgJ2NvbmZpZy5q
c29uJyAtb3IgJF8uTmFtZSAtZXEgJ2dvdmVybmFuY2UuanNvbicpIHsgcmV0dXJuIH0KICAgIHRy
eSB7CiAgICAgICAgJEpzb25UZXh0ID0gW0lPLkZpbGVdOjpSZWFkQWxsVGV4dCgkXy5GdWxsTmFt
ZSwgW1RleHQuVVRGOEVuY29kaW5nXTo6bmV3KCRmYWxzZSkpCiAgICAgICAgJERvYyA9ICRKc29u
VGV4dCB8IENvbnZlcnRGcm9tLUpzb24KICAgICAgICBpZiAoLW5vdCAkRG9jLnN0YXR1cykgeyBy
ZXR1cm4gfQogICAgICAgICROZWVkc1VwZGF0ZSA9ICRmYWxzZQogICAgICAgICRWZXJzaW9uID0g
aWYgKCREb2MudmVyc2lvbikgeyAkRG9jLnZlcnNpb24gfSBlbHNlIHsgJycgfQogICAgICAgICRN
YWpvciA9IDA7ICRNaW5vciA9IDEKICAgICAgICBpZiAoJFZlcnNpb24gLW1hdGNoICdedj8oXGQr
KVwuKFxkKyknKSB7CiAgICAgICAgICAgICRNYWpvciA9IFtpbnRdJE1hdGNoZXNbMV0KICAgICAg
ICAgICAgJE1pbm9yID0gW2ludF0kTWF0Y2hlc1syXQogICAgICAgIH0KCiAgICAgICAgaWYgKCRE
b2Muc3RhdHVzIC1lcSAnRnJlaWdlZ2ViZW4nIC1hbmQgJE1ham9yIC1sdCAxKSB7CiAgICAgICAg
ICAgICREb2MudmVyc2lvbiA9ICd2MS4wJwogICAgICAgICAgICAkTmVlZHNVcGRhdGUgPSAkdHJ1
ZQogICAgICAgIH0gZWxzZWlmICgkRG9jLnN0YXR1cyAtaW4gQCgnRW50d3VyZicsICJQciQoW2No
YXJdMHhGQylmdW5nIikgLWFuZCAtbm90ICRWZXJzaW9uKSB7CiAgICAgICAgICAgICREb2MudmVy
c2lvbiA9ICd2MC4xJwogICAgICAgICAgICAkTmVlZHNVcGRhdGUgPSAkdHJ1ZQogICAgICAgIH0K
CiAgICAgICAgaWYgKCROZWVkc1VwZGF0ZSkgewogICAgICAgICAgICAkTmV3SnNvbiA9ICREb2Mg
fCBDb252ZXJ0VG8tSnNvbiAtRGVwdGggMjAKICAgICAgICAgICAgW0lPLkZpbGVdOjpXcml0ZUFs
bFRleHQoJF8uRnVsbE5hbWUsICROZXdKc29uLCBbVGV4dC5VVEY4RW5jb2RpbmddOjpuZXcoJGZh
bHNlKSkKICAgICAgICAgICAgJFZlcnNpb25GaXhDb3VudCsrCiAgICAgICAgfQogICAgfSBjYXRj
aCB7fQp9CmlmICgkVmVyc2lvbkZpeENvdW50IC1ndCAwKSB7CiAgICBXcml0ZS1Ib3N0ICIgIFtP
S10gICAgICAkVmVyc2lvbkZpeENvdW50IEFydGlrZWwtVmVyc2lvbmVuIGtvcnJpZ2llcnQiIC1G
b3JlZ3JvdW5kQ29sb3IgR3JlZW4KfSBlbHNlIHsKICAgIFdyaXRlLUhvc3QgIiAgW09LXSAgICAg
IEFsbGUgVmVyc2lvbmVuIGtvcnJla3QiIC1Gb3JlZ3JvdW5kQ29sb3IgR3JlZW4KfQoKIyBTdGF0
aWMtRmlsZS1DYWNoZSAoVGV4dGRhdGVpZW4gaW0gU3BlaWNoZXIgaGFsdGVuKQokc2NyaXB0OlN0
YXRpY0NhY2hlID0gQHt9CgojIEhUVFAgTGlzdGVuZXIgc3RhcnRlbgokTGlzdGVuZXIgPSBOZXct
T2JqZWN0IFN5c3RlbS5OZXQuSHR0cExpc3RlbmVyCiRMaXN0ZW5lci5QcmVmaXhlcy5BZGQoImh0
dHA6Ly9sb2NhbGhvc3Q6JFBvcnQvIikKCnRyeSB7CiAgICAkTGlzdGVuZXIuU3RhcnQoKQp9IGNh
dGNoIHsKICAgIFdyaXRlLUhvc3QgIkZFSExFUjogUG9ydCAkUG9ydCBpc3QgYmVyZWl0cyBiZWxl
Z3QuIiAtRm9yZWdyb3VuZENvbG9yIFJlZAogICAgV3JpdGUtSG9zdCAiVmVyc3VjaGVuIFNpZSBl
aW5lbiBhbmRlcmVuIFBvcnQ6IC5cc2VydmVyLnBzMSAtUG9ydCA4MDgxIiAtRm9yZWdyb3VuZENv
bG9yIFllbGxvdwogICAgUmVhZC1Ib3N0ICJFbnRlciBkcnVlY2tlbiB6dW0gQmVlbmRlbiIKICAg
IGV4aXQgMQp9CgojIEJyb3dzZXIgb2VmZm5lbiAoQ2hyb21lID4gRWRnZSA+IFN0YW5kYXJkLUJy
b3dzZXIpCiRCcm93c2VyVXJsID0gImh0dHA6Ly9sb2NhbGhvc3Q6JFBvcnQiCiRCcm93c2VyT3Bl
bmVkID0gJGZhbHNlCgojIENocm9tZS1QZmFkZSBwcnVlZmVuCiRDaHJvbWVQYXRocyA9IEAoCiAg
ICAiJHtlbnY6UHJvZ3JhbUZpbGVzfVxHb29nbGVcQ2hyb21lXEFwcGxpY2F0aW9uXGNocm9tZS5l
eGUiLAogICAgIiR7ZW52OlByb2dyYW1GaWxlcyh4ODYpfVxHb29nbGVcQ2hyb21lXEFwcGxpY2F0
aW9uXGNocm9tZS5leGUiLAogICAgIiRlbnY6TE9DQUxBUFBEQVRBXEdvb2dsZVxDaHJvbWVcQXBw
bGljYXRpb25cY2hyb21lLmV4ZSIKKQpmb3JlYWNoICgkY3AgaW4gJENocm9tZVBhdGhzKSB7CiAg
ICBpZiAoVGVzdC1QYXRoICRjcCkgewogICAgICAgIFN0YXJ0LVByb2Nlc3MgJGNwICRCcm93c2Vy
VXJsCiAgICAgICAgJEJyb3dzZXJPcGVuZWQgPSAkdHJ1ZQogICAgICAgIGJyZWFrCiAgICB9Cn0K
CiMgRmFsbGJhY2s6IEVkZ2UKaWYgKC1ub3QgJEJyb3dzZXJPcGVuZWQpIHsKICAgICRFZGdlUGF0
aCA9ICIke2VudjpQcm9ncmFtRmlsZXMoeDg2KX1cTWljcm9zb2Z0XEVkZ2VcQXBwbGljYXRpb25c
bXNlZGdlLmV4ZSIKICAgIGlmIChUZXN0LVBhdGggJEVkZ2VQYXRoKSB7CiAgICAgICAgU3RhcnQt
UHJvY2VzcyAkRWRnZVBhdGggJEJyb3dzZXJVcmwKICAgICAgICAkQnJvd3Nlck9wZW5lZCA9ICR0
cnVlCiAgICB9Cn0KCiMgRmFsbGJhY2s6IFN0YW5kYXJkLUJyb3dzZXIgdmlhIFN0YXJ0CmlmICgt
bm90ICRCcm93c2VyT3BlbmVkKSB7CiAgICB0cnkgeyBTdGFydC1Qcm9jZXNzICRCcm93c2VyVXJs
OyAkQnJvd3Nlck9wZW5lZCA9ICR0cnVlIH0gY2F0Y2gge30KfQoKaWYgKC1ub3QgJEJyb3dzZXJP
cGVuZWQpIHsKICAgIFdyaXRlLUhvc3QgIiAgQnJvd3NlciBrb25udGUgbmljaHQgZ2VvZWZmbmV0
IHdlcmRlbi4iIC1Gb3JlZ3JvdW5kQ29sb3IgWWVsbG93CiAgICBXcml0ZS1Ib3N0ICIgIEJpdHRl
IG1hbnVlbGwgb2VmZm5lbjogJEJyb3dzZXJVcmwiIC1Gb3JlZ3JvdW5kQ29sb3IgWWVsbG93Cn0K
CiMgSGVhcnRiZWF0LVRyYWNraW5nOiBTZXJ2ZXIgYmVlbmRldCBzaWNoIHdlbm4gMTAgTWludXRl
biBrZWluIEhlYXJ0YmVhdCBrb21tdC4KIyBDbGllbnQgbnV0enQgZWluZW4gV2ViIFdvcmtlciBm
dWVyIHp1dmVybGFlc3NpZ2UgSGVhcnRiZWF0cyBhdWNoIGJlaSBCYWNrZ3JvdW5kLVRhYnMuCiMg
MTAgTWluIFRpbWVvdXQgPSBtYXhpbWFsZSBSb2J1c3RoZWl0IGdlZ2VuIGplZGUgQXJ0IHZvbiBC
cm93c2VyLVRocm90dGxpbmcuCiRzY3JpcHQ6TGFzdEhlYXJ0YmVhdCA9IEdldC1EYXRlCiRIZWFy
dGJlYXRUaW1lb3V0U2VjID0gMTgwMCAgIyAzMCBNaW4gLSBUYWItV2VjaHNlbCBwYXVzaWVydCBI
ZWFydGJlYXQsIE5ldXN0YXJ0IHBydWVmdCBQb3J0CiRzY3JpcHQ6U2h1dGRvd25QZW5kaW5nID0g
JG51bGwgICMgR25hZGVuZnJpc3QgZnVlciBTaHV0ZG93biAoRjUvUmVmcmVzaCB2cy4gVGFiLUNs
b3NlKQokc2NyaXB0OlNodXRkb3duR3JhY2VTZWMgPSA1ICAgICAjIFNla3VuZGVuIFdhcnRlemVp
dCBiZXZvciBTZXJ2ZXIgdGF0c2FlY2hsaWNoIGJlZW5kZXQgd2lyZAoKIyBSZXF1ZXN0LUxvb3Ag
KG5pY2h0LWJsb2NraWVyZW5kIGZ1ZXIgSGVhcnRiZWF0LVRpbWVvdXQtUHJ1ZWZ1bmcpCnRyeSB7
CiAgICB3aGlsZSAoJExpc3RlbmVyLklzTGlzdGVuaW5nKSB7CiAgICAgICAgIyBBc3luY2hyb25l
biBSZXF1ZXN0IG1pdCBUaW1lb3V0IHdhcnRlbgogICAgICAgICRBc3luY1Jlc3VsdCA9ICRMaXN0
ZW5lci5CZWdpbkdldENvbnRleHQoJG51bGwsICRudWxsKQogICAgICAgIHdoaWxlICgtbm90ICRB
c3luY1Jlc3VsdC5Bc3luY1dhaXRIYW5kbGUuV2FpdE9uZSgyMDAwKSkgewogICAgICAgICAgICAj
IFBydWVmZW4gb2IgZWluIFNodXRkb3duIGFuc3RlaHQgKGJlZm9yZXVubG9hZCBnZXNlbmRldCkK
ICAgICAgICAgICAgIyBHbmFkZW5mcmlzdDogRmFsbHMgU2VpdGUgbnVyIG5ldSBnZWxhZGVuIHdp
cmQgKEY1KSwga29tbXQgaW5uZXJoYWxiCiAgICAgICAgICAgICMgdm9uIDUgU2VrdW5kZW4gZWlu
IG5ldWVyIEhlYXJ0YmVhdCB1bmQgYnJpY2h0IGRlbiBTaHV0ZG93biBhYi4KICAgICAgICAgICAg
aWYgKCRzY3JpcHQ6U2h1dGRvd25QZW5kaW5nKSB7CiAgICAgICAgICAgICAgICAkR3JhY2VFbGFw
c2VkID0gKChHZXQtRGF0ZSkgLSAkc2NyaXB0OlNodXRkb3duUGVuZGluZykuVG90YWxTZWNvbmRz
CiAgICAgICAgICAgICAgICBpZiAoJEdyYWNlRWxhcHNlZCAtZ3QgJHNjcmlwdDpTaHV0ZG93bkdy
YWNlU2VjKSB7CiAgICAgICAgICAgICAgICAgICAgV3JpdGUtSG9zdCAiIgogICAgICAgICAgICAg
ICAgICAgIFdyaXRlLUhvc3QgIiAgU2h1dGRvd24tR25hZGVuZnJpc3QgYWJnZWxhdWZlbiAoJHtH
cmFjZUVsYXBzZWR9cykgLSBrZWluIFJlbG9hZCBlcmthbm50LCBTZXJ2ZXIgd2lyZCBiZWVuZGV0
Li4uIiAtRm9yZWdyb3VuZENvbG9yIFllbGxvdwogICAgICAgICAgICAgICAgICAgICRMaXN0ZW5l
ci5TdG9wKCkKICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICB9CiAgICAgICAgICAgICMgQWxsZSAyIFNla3VuZGVuIHBydWVmZW4gb2IgSGVhcnRi
ZWF0LVRpbWVvdXQgZXJyZWljaHQKICAgICAgICAgICAgJFNlY1NpbmNlSGVhcnRiZWF0ID0gKChH
ZXQtRGF0ZSkgLSAkc2NyaXB0Okxhc3RIZWFydGJlYXQpLlRvdGFsU2Vjb25kcwogICAgICAgICAg
ICBpZiAoJFNlY1NpbmNlSGVhcnRiZWF0IC1ndCAkSGVhcnRiZWF0VGltZW91dFNlYykgewogICAg
ICAgICAgICAgICAgV3JpdGUtSG9zdCAiIgogICAgICAgICAgICAgICAgV3JpdGUtSG9zdCAiICBL
ZWluIEhlYXJ0YmVhdCBzZWl0ICQoW01hdGhdOjpSb3VuZCgkU2VjU2luY2VIZWFydGJlYXQpKXMg
LSBUYWIgd3VyZGUgZ2VzY2hsb3NzZW4sIFNlcnZlciB3aXJkIGJlZW5kZXQuLi4iIC1Gb3JlZ3Jv
dW5kQ29sb3IgWWVsbG93CiAgICAgICAgICAgICAgICAkTGlzdGVuZXIuU3RvcCgpCiAgICAgICAg
ICAgICAgICBicmVhawogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmICgtbm90ICRM
aXN0ZW5lci5Jc0xpc3RlbmluZykgeyBicmVhayB9CiAgICAgICAgJENvbnRleHQgPSAkTGlzdGVu
ZXIuRW5kR2V0Q29udGV4dCgkQXN5bmNSZXN1bHQpCiAgICAgICAgJFJlcXVlc3QgPSAkQ29udGV4
dC5SZXF1ZXN0CiAgICAgICAgJFJlc3BvbnNlID0gJENvbnRleHQuUmVzcG9uc2UKICAgICAgICAk
TWV0aG9kID0gJFJlcXVlc3QuSHR0cE1ldGhvZAogICAgICAgICRVcmxQYXRoID0gJFJlcXVlc3Qu
VXJsLkxvY2FsUGF0aAoKICAgICAgICAjIFBlbmRpbmcgU2h1dGRvd24gYmVpIGplZGVtIGVpbmdl
aGVuZGVuIFJlcXVlc3QgYWJicmVjaGVuCiAgICAgICAgIyAoU2VpdGUgd3VyZGUgbmV1IGdlbGFk
ZW4gdW5kIGZyYWd0IERhdGVpZW4vQVBJIGFuKQogICAgICAgIGlmICgkc2NyaXB0OlNodXRkb3du
UGVuZGluZyAtYW5kICRVcmxQYXRoIC1uZSAnL2FwaS9zaHV0ZG93bicpIHsKICAgICAgICAgICAg
V3JpdGUtSG9zdCAiICBIQiAgIFNodXRkb3duIGFiZ2Vicm9jaGVuIC0gbmV1ZSBBbmZyYWdlIGVy
a2FubnQgKCRNZXRob2QgJFVybFBhdGgpIiAtRm9yZWdyb3VuZENvbG9yIEdyZWVuCiAgICAgICAg
ICAgICRzY3JpcHQ6U2h1dGRvd25QZW5kaW5nID0gJG51bGwKICAgICAgICB9CgogICAgICAgICMg
UmVxdWVzdC1Mb2dnaW5nIChudXIgQVBJLUF1ZnJ1ZmUsIG5pY2h0IEhlYXJ0YmVhdC9zdGF0aXNj
aGUgRGF0ZWllbikKICAgICAgICBpZiAoJFVybFBhdGguU3RhcnRzV2l0aCgnL2FwaS8nKSAtYW5k
ICRVcmxQYXRoIC1uZSAnL2FwaS9oZWFydGJlYXQnKSB7CiAgICAgICAgICAgIFdyaXRlLUhvc3Qg
IiAgLS0+ICAkTWV0aG9kICRVcmxQYXRoIiAtRm9yZWdyb3VuZENvbG9yIERhcmtHcmF5CiAgICAg
ICAgfQoKICAgICAgICAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KICAgICAgICAjIENPUlMgUHJlZmxpZ2h0CiAgICAgICAgIyA9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09CgogICAgICAgIGlmICgkTWV0aG9kIC1lcSAnT1BUSU9OUycpIHsKICAgICAgICAgICAgJFJl
c3BvbnNlLlN0YXR1c0NvZGUgPSAyMDQKICAgICAgICAgICAgQWRkLVNlY3VyaXR5SGVhZGVycyAk
UmVzcG9uc2UKICAgICAgICAgICAgJFJlc3BvbnNlLkhlYWRlcnMuQWRkKCJBY2Nlc3MtQ29udHJv
bC1BbGxvdy1NZXRob2RzIiwgIkdFVCwgUE9TVCwgT1BUSU9OUyIpCiAgICAgICAgICAgICRSZXNw
b25zZS5IZWFkZXJzLkFkZCgiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJDb250ZW50
LVR5cGUiKQogICAgICAgICAgICAkUmVzcG9uc2UuQ2xvc2UoKQogICAgICAgICAgICBjb250aW51
ZQogICAgICAgIH0KCiAgICAgICAgIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgICAgIyBBUEktRW5kcHVua3RlCiAgICAg
ICAgIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09CgogICAgICAgICMgLS0tIFBPU1QgL2FwaS9oZWFydGJlYXQgLS0tCiAgICAgICAg
IyBCcm93c2VyIHNlbmRldCBhbGxlIDUgU2VrdW5kZW4gZWluZW4gSGVhcnRiZWF0ICh2aWEgV2Vi
IFdvcmtlciwgbmllIGdlZHJvc3NlbHQpCiAgICAgICAgIyBTZXJ2ZXIgZmFlaHJ0IGF1dG9tYXRp
c2NoIGhlcnVudGVyIHdlbm4gMTAgTWludXRlbiBrZWluIEhlYXJ0YmVhdCBrb21tdAogICAgICAg
ICMgQW50d29ydCBlbnRoYWVsdCBpZGxlLVNla3VuZGVuIHVuZCBXYXJudW5nIDYwcyB2b3IgU2h1
dGRvd24KICAgICAgICBpZiAoJFVybFBhdGggLWVxICcvYXBpL2hlYXJ0YmVhdCcgLWFuZCAkTWV0
aG9kIC1lcSAnUE9TVCcpIHsKICAgICAgICAgICAgIyBQZW5kaW5nIFNodXRkb3duIGFiYnJlY2hl
biAoU2VpdGUgd3VyZGUgbnVyIG5ldSBnZWxhZGVuLCBuaWNodCBnZXNjaGxvc3NlbikKICAgICAg
ICAgICAgaWYgKCRzY3JpcHQ6U2h1dGRvd25QZW5kaW5nKSB7CiAgICAgICAgICAgICAgICBXcml0
ZS1Ib3N0ICIgIEhCICAgU2h1dGRvd24gYWJnZWJyb2NoZW4gLSBTZWl0ZSB3dXJkZSBuZXUgZ2Vs
YWRlbiAoRjUvUmVmcmVzaCkiIC1Gb3JlZ3JvdW5kQ29sb3IgR3JlZW4KICAgICAgICAgICAgICAg
ICRzY3JpcHQ6U2h1dGRvd25QZW5kaW5nID0gJG51bGwKICAgICAgICAgICAgfQogICAgICAgICAg
ICAkSWRsZVNlYyA9IFtNYXRoXTo6Um91bmQoKChHZXQtRGF0ZSkgLSAkc2NyaXB0Okxhc3RIZWFy
dGJlYXQpLlRvdGFsU2Vjb25kcykKICAgICAgICAgICAgJFdhcm5pbmdUaHJlc2hvbGQgPSAkSGVh
cnRiZWF0VGltZW91dFNlYyAtIDYwICAjIFdhcm51bmcgNjBzIHZvciBUaW1lb3V0CiAgICAgICAg
ICAgICRSZW1haW5pbmcgPSBbTWF0aF06Ok1heCgwLCAkSGVhcnRiZWF0VGltZW91dFNlYyAtICRJ
ZGxlU2VjKQogICAgICAgICAgICAkc2NyaXB0Okxhc3RIZWFydGJlYXQgPSBHZXQtRGF0ZQogICAg
ICAgICAgICBpZiAoJElkbGVTZWMgLWd0ICRXYXJuaW5nVGhyZXNob2xkKSB7CiAgICAgICAgICAg
ICAgICBTZW5kLUpzb24gJFJlc3BvbnNlIEB7IG9rID0gJHRydWU7IGlkbGUgPSAkSWRsZVNlYzsg
d2FybmluZyA9ICR0cnVlOyByZW1haW5pbmdTZWNvbmRzID0gJFJlbWFpbmluZyB9CiAgICAgICAg
ICAgICAgICBXcml0ZS1Ib3N0ICIgIEhCICAgSGVhcnRiZWF0IG5hY2ggJHtJZGxlU2VjfXMgUGF1
c2UgLSBXYXJudW5nIGdlc2VuZGV0IChub2NoICR7UmVtYWluaW5nfXMpIiAtRm9yZWdyb3VuZENv
bG9yIFllbGxvdwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgU2VuZC1Kc29u
ICRSZXNwb25zZSBAeyBvayA9ICR0cnVlOyBpZGxlID0gJElkbGVTZWM7IHdhcm5pbmcgPSAkZmFs
c2U7IHJlbWFpbmluZ1NlY29uZHMgPSAkUmVtYWluaW5nIH0KICAgICAgICAgICAgfQogICAgICAg
ICAgICAkUmVzcG9uc2UuQ2xvc2UoKQogICAgICAgICAgICBjb250aW51ZQogICAgICAgIH0KCiAg
ICAgICAgIyAtLS0gR0VUIC9hcGkvZW52aXJvbiAtLS0KICAgICAgICBpZiAoJFVybFBhdGggLWVx
ICcvYXBpL2Vudmlyb24nIC1hbmQgJE1ldGhvZCAtZXEgJ0dFVCcpIHsKICAgICAgICAgICAgU2Vu
ZC1Kc29uICRSZXNwb25zZSBAewogICAgICAgICAgICAgICAgdXNlcm5hbWUgICAgID0gJGVudjpV
U0VSTkFNRQogICAgICAgICAgICAgICAgY29tcHV0ZXJuYW1lID0gJGVudjpDT01QVVRFUk5BTUUK
ICAgICAgICAgICAgICAgIHVzZXJkb21haW4gICA9ICRlbnY6VVNFUkRPTUFJTgogICAgICAgICAg
ICB9CiAgICAgICAgICAgICRSZXNwb25zZS5DbG9zZSgpCiAgICAgICAgICAgIFdyaXRlLUhvc3Qg
IiAgQVBJICAvYXBpL2Vudmlyb24gIChVc2VyOiAkZW52OlVTRVJOQU1FKSIgLUZvcmVncm91bmRD
b2xvciBDeWFuCiAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgfQoKICAgICAgICAjIC0tLSBH
RVQgL2FwaS9zY2FuIC0tLQogICAgICAgICMgU2Nhbm50IGFsbGUgS2F0ZWdvcmllLVVudGVyb3Jk
bmVyIHVuZCBsaWVmZXJ0IERva3VtZW50LURhdGVpZW4KICAgICAgICBpZiAoJFVybFBhdGggLWVx
ICcvYXBpL3NjYW4nIC1hbmQgJE1ldGhvZCAtZXEgJ0dFVCcpIHsKICAgICAgICAgICAgJERhdGFE
aXIgPSBKb2luLVBhdGggJFJvb3QgImRhdGEiCiAgICAgICAgICAgICRSZXN1bHQgPSBbU3lzdGVt
LkNvbGxlY3Rpb25zLkFycmF5TGlzdF06Om5ldygpCgogICAgICAgICAgICBpZiAoVGVzdC1QYXRo
ICREYXRhRGlyKSB7CiAgICAgICAgICAgICAgICBHZXQtQ2hpbGRJdGVtICREYXRhRGlyIC1EaXJl
Y3RvcnkgfCBGb3JFYWNoLU9iamVjdCB7CiAgICAgICAgICAgICAgICAgICAgJEthdE5hbWUgPSAk
Xy5OYW1lCiAgICAgICAgICAgICAgICAgICAgR2V0LUNoaWxkSXRlbSAkXy5GdWxsTmFtZSAtRmls
dGVyICIqLmpzb24iIHwgRm9yRWFjaC1PYmplY3QgewogICAgICAgICAgICAgICAgICAgICAgICBb
dm9pZF0kUmVzdWx0LkFkZChAewogICAgICAgICAgICAgICAgICAgICAgICAgICAga2F0ZWdvcmll
ID0gJEthdE5hbWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lICA9ICRfLk5h
bWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGggICAgICA9ICJkYXRhLyRLYXROYW1l
LyQoJF8uTmFtZSkiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplICAgICAgPSAkXy5M
ZW5ndGgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVkICA9ICRfLkxhc3RXcml0
ZVRpbWVVdGMuVG9TdHJpbmcoIm8iKQogICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAg
ICAgU2VuZC1Kc29uICRSZXNwb25zZSBAeyBmaWxlcyA9IEAoJFJlc3VsdCkgfQogICAgICAgICAg
ICAkUmVzcG9uc2UuQ2xvc2UoKQogICAgICAgICAgICBXcml0ZS1Ib3N0ICIgIEFQSSAgL2FwaS9z
Y2FuICAoJCgkUmVzdWx0LkNvdW50KSBEb2t1bWVudGUpIiAtRm9yZWdyb3VuZENvbG9yIEN5YW4K
ICAgICAgICAgICAgY29udGludWUKICAgICAgICB9CgogICAgICAgICMgLS0tIEdFVCAvYXBpL2dv
dmVybmFuY2UgLS0tCiAgICAgICAgaWYgKCRVcmxQYXRoIC1lcSAnL2FwaS9nb3Zlcm5hbmNlJyAt
YW5kICRNZXRob2QgLWVxICdHRVQnKSB7CiAgICAgICAgICAgICRHb3YgPSBHZXQtR292ZXJuYW5j
ZQogICAgICAgICAgICBpZiAoJEdvdikgewogICAgICAgICAgICAgICAgJElzU1UgPSBUZXN0LVN1
cGVyVXNlciAkR292CiAgICAgICAgICAgICAgICBTZW5kLUpzb24gJFJlc3BvbnNlIEB7CiAgICAg
ICAgICAgICAgICAgICAgZ292ZXJuYW5jZSA9ICRHb3YKICAgICAgICAgICAgICAgICAgICBjdXJy
ZW50VXNlciA9ICRlbnY6VVNFUk5BTUUKICAgICAgICAgICAgICAgICAgICBjdXJyZW50RG9tYWlu
ID0gJGVudjpVU0VSRE9NQUlOCiAgICAgICAgICAgICAgICAgICAgaXNTdXBlclVzZXIgPSAkSXNT
VQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAg
U2VuZC1Kc29uICRSZXNwb25zZSBAewogICAgICAgICAgICAgICAgICAgIGdvdmVybmFuY2UgPSAk
bnVsbAogICAgICAgICAgICAgICAgICAgIGN1cnJlbnRVc2VyID0gJGVudjpVU0VSTkFNRQogICAg
ICAgICAgICAgICAgICAgIGN1cnJlbnREb21haW4gPSAkZW52OlVTRVJET01BSU4KICAgICAgICAg
ICAgICAgICAgICBpc1N1cGVyVXNlciA9ICR0cnVlCiAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgIH0KICAgICAgICAgICAgJFJlc3BvbnNlLkNsb3NlKCkKICAgICAgICAgICAgV3JpdGUtSG9z
dCAiICBBUEkgIC9hcGkvZ292ZXJuYW5jZSAgKFVzZXI6ICRlbnY6VVNFUk5BTUUsIFNVOiAkKFRl
c3QtU3VwZXJVc2VyIChHZXQtR292ZXJuYW5jZSkpKSIgLUZvcmVncm91bmRDb2xvciBDeWFuCiAg
ICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgfQoKICAgICAgICAjIC0tLSBQT1NUIC9hcGkvZ292
ZXJuYW5jZSAtLS0KICAgICAgICAjIE51ciBTdXBlclVzZXIgZGFyZiBnb3Zlcm5hbmNlLmpzb24g
YWVuZGVybgogICAgICAgIGlmICgkVXJsUGF0aCAtZXEgJy9hcGkvZ292ZXJuYW5jZScgLWFuZCAk
TWV0aG9kIC1lcSAnUE9TVCcpIHsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICRH
b3YgPSBHZXQtR292ZXJuYW5jZQogICAgICAgICAgICAgICAgJElzU1UgPSBUZXN0LVN1cGVyVXNl
ciAkR292CiAgICAgICAgICAgICAgICBpZiAoLW5vdCAkSXNTVSkgewogICAgICAgICAgICAgICAg
ICAgIFNlbmQtSnNvbiAkUmVzcG9uc2UgQHsgZXJyb3IgPSAiTnVyIFN1cGVyVXNlciBkYXJmIEdv
dmVybmFuY2UtRGF0ZW4gYWVuZGVybiAoVXNlcjogJGVudjpVU0VSTkFNRSkiIH0gNDAzCiAgICAg
ICAgICAgICAgICAgICAgV3JpdGUtSG9zdCAiICBFUlIgIFBPU1QgL2FwaS9nb3Zlcm5hbmNlICBB
QkdFTEVITlQgKFVzZXI6ICRlbnY6VVNFUk5BTUUpIiAtRm9yZWdyb3VuZENvbG9yIFJlZAogICAg
ICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkQm9keSA9IFJlYWQtQm9k
eSAkUmVxdWVzdAogICAgICAgICAgICAgICAgICAgIGlmICgtbm90ICRCb2R5IC1vciAkQm9keS5M
ZW5ndGggLWx0IDIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgU2VuZC1Kc29uICRSZXNwb25z
ZSBAeyBlcnJvciA9ICJMZWVyZXIgUmVxdWVzdC1Cb2R5IiB9IDQwMAogICAgICAgICAgICAgICAg
ICAgICAgICBXcml0ZS1Ib3N0ICIgIEVSUiAgUE9TVCAvYXBpL2dvdmVybmFuY2UgIExlZXJlciBC
b2R5IiAtRm9yZWdyb3VuZENvbG9yIFJlZAogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICROZXdHb3YgPSAkQm9keSB8IENvbnZlcnRGcm9tLUpzb24K
ICAgICAgICAgICAgICAgICAgICAgICAgU2F2ZS1Hb3Zlcm5hbmNlICROZXdHb3YKICAgICAgICAg
ICAgICAgICAgICAgICAgU2VuZC1Kc29uICRSZXNwb25zZSBAeyBvayA9ICR0cnVlIH0KICAgICAg
ICAgICAgICAgICAgICAgICAgV3JpdGUtSG9zdCAiICBBUEkgIFBPU1QgL2FwaS9nb3Zlcm5hbmNl
ICBha3R1YWxpc2llcnQgdm9uICRlbnY6VVNFUk5BTUUgKCQoJEJvZHkuTGVuZ3RoKSBCeXRlcyki
IC1Gb3JlZ3JvdW5kQ29sb3IgR3JlZW4KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgIH0gY2F0Y2ggewogICAgICAgICAgICAgICAgV3JpdGUtSG9zdCAi
ICBFUlIgIFBPU1QgL2FwaS9nb3Zlcm5hbmNlICBFWENFUFRJT046ICQoJF8uRXhjZXB0aW9uLk1l
c3NhZ2UpIiAtRm9yZWdyb3VuZENvbG9yIFJlZAogICAgICAgICAgICAgICAgdHJ5IHsgU2VuZC1K
c29uICRSZXNwb25zZSBAeyBlcnJvciA9ICRfLkV4Y2VwdGlvbi5NZXNzYWdlIH0gNTAwIH0gY2F0
Y2gge30KICAgICAgICAgICAgfQogICAgICAgICAgICB0cnkgeyAkUmVzcG9uc2UuQ2xvc2UoKSB9
IGNhdGNoIHt9CiAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgfQoKICAgICAgICAjIC0tLSBQ
T1NUIC9hcGkvbG9jayAtLS0KICAgICAgICAjIFNldHp0IGVpbmVuIExvY2sgYXVmIGVpbiBEb2t1
bWVudCAoUGVzc2ltaXN0aWMgTG9ja2luZykKICAgICAgICAjIEJvZHk6IHsgImRvY0lkIjogIkQw
MDEiIH0KICAgICAgICAjIExvY2stRGF0ZWllbjogZGF0YS8ubG9ja3MvRDAwMS5sb2NrIChKU09O
IG1pdCB1c2VybmFtZSArIHRpbWVzdGFtcCkKICAgICAgICAjIExvY2tzIHZlcmZhbGxlbiBhdXRv
bWF0aXNjaCBuYWNoIDEwIE1pbnV0ZW4gKFN0YWxlLUxvY2stUHJvdGVjdGlvbikKICAgICAgICBp
ZiAoJFVybFBhdGggLWVxICcvYXBpL2xvY2snIC1hbmQgJE1ldGhvZCAtZXEgJ1BPU1QnKSB7CiAg
ICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAkQm9keSA9IFJlYWQtQm9keSAkUmVxdWVz
dAogICAgICAgICAgICAgICAgJFBhcnNlZCA9ICRCb2R5IHwgQ29udmVydEZyb20tSnNvbgogICAg
ICAgICAgICAgICAgJERvY0lkID0gJFBhcnNlZC5kb2NJZAogICAgICAgICAgICAgICAgJExvY2tE
aXIgPSBKb2luLVBhdGggJFJvb3QgImRhdGEvLmxvY2tzIgogICAgICAgICAgICAgICAgaWYgKC1u
b3QgKFRlc3QtUGF0aCAkTG9ja0RpcikpIHsgTmV3LUl0ZW0gLUl0ZW1UeXBlIERpcmVjdG9yeSAt
UGF0aCAkTG9ja0RpciAtRm9yY2UgfCBPdXQtTnVsbCB9CiAgICAgICAgICAgICAgICAkTG9ja0Zp
bGUgPSBKb2luLVBhdGggJExvY2tEaXIgIiREb2NJZC5sb2NrIgoKICAgICAgICAgICAgICAgICMg
UHJ1ZWZlbiBvYiBiZXJlaXRzIGdlbG9ja3QgKHVuZCBMb2NrIG5pY2h0IGFiZ2VsYXVmZW4pCiAg
ICAgICAgICAgICAgICBpZiAoVGVzdC1QYXRoICRMb2NrRmlsZSkgewogICAgICAgICAgICAgICAg
ICAgICRFeGlzdGluZyA9IEdldC1Db250ZW50ICRMb2NrRmlsZSAtUmF3IC1FbmNvZGluZyBVVEY4
IHwgQ29udmVydEZyb20tSnNvbgogICAgICAgICAgICAgICAgICAgICRMb2NrVGltZSA9IFtEYXRl
VGltZV06OlBhcnNlKCRFeGlzdGluZy5sb2NrZWRBdCkKICAgICAgICAgICAgICAgICAgICAkTWlu
dXRlc1NpbmNlID0gKChHZXQtRGF0ZSkgLSAkTG9ja1RpbWUpLlRvdGFsTWludXRlcwoKICAgICAg
ICAgICAgICAgICAgICBpZiAoJE1pbnV0ZXNTaW5jZSAtbHQgMTAgLWFuZCAkRXhpc3RpbmcudXNl
cm5hbWUgLW5lICRlbnY6VVNFUk5BTUUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIyBMb2Nr
IGlzdCBha3RpdiB1bmQgdm9uIGVpbmVtIGFuZGVyZW4gVXNlcgogICAgICAgICAgICAgICAgICAg
ICAgICBTZW5kLUpzb24gJFJlc3BvbnNlIEB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBs
b2NrZWQgPSAkdHJ1ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnkgPSAkRXhpc3Rpbmcu
dXNlcm5hbWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpbmNlID0gJEV4aXN0aW5nLmxv
Y2tlZEF0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW51dGVzID0gW01hdGhdOjpSb3Vu
ZCgkTWludXRlc1NpbmNlLCAxKQogICAgICAgICAgICAgICAgICAgICAgICB9IDQwOQogICAgICAg
ICAgICAgICAgICAgICAgICAkUmVzcG9uc2UuQ2xvc2UoKQogICAgICAgICAgICAgICAgICAgICAg
ICBXcml0ZS1Ib3N0ICIgIEFQSSAgUE9TVCAvYXBpL2xvY2sgICREb2NJZCBCRUxFR1Qgdm9uICQo
JEV4aXN0aW5nLnVzZXJuYW1lKSIgLUZvcmVncm91bmRDb2xvciBZZWxsb3cKICAgICAgICAgICAg
ICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgICAgIyBMb2NrIGFiZ2VsYXVmZW4gb2RlciBlaWdlbmVyIExvY2sgLT4gdWViZXJzY2hyZWli
ZW4KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIExvY2sgc2V0emVuCiAgICAg
ICAgICAgICAgICAkTG9ja0RhdGEgPSBAewogICAgICAgICAgICAgICAgICAgIGRvY0lkID0gJERv
Y0lkCiAgICAgICAgICAgICAgICAgICAgdXNlcm5hbWUgPSAkZW52OlVTRVJOQU1FCiAgICAgICAg
ICAgICAgICAgICAgbG9ja2VkQXQgPSAoR2V0LURhdGUpLlRvU3RyaW5nKCJvIikKICAgICAgICAg
ICAgICAgIH0gfCBDb252ZXJ0VG8tSnNvbiAtQ29tcHJlc3MKICAgICAgICAgICAgICAgIFVucHJv
dGVjdC1GaWxlICRMb2NrRmlsZQogICAgICAgICAgICAgICAgW0lPLkZpbGVdOjpXcml0ZUFsbFRl
eHQoJExvY2tGaWxlLCAkTG9ja0RhdGEsIFtUZXh0LlVURjhFbmNvZGluZ106Om5ldygkZmFsc2Up
KQogICAgICAgICAgICAgICAgU2VuZC1Kc29uICRSZXNwb25zZSBAeyBvayA9ICR0cnVlOyBkb2NJ
ZCA9ICREb2NJZCB9CiAgICAgICAgICAgICAgICBXcml0ZS1Ib3N0ICIgIEFQSSAgUE9TVCAvYXBp
L2xvY2sgICREb2NJZCBnZWxvY2t0IHZvbiAkZW52OlVTRVJOQU1FIiAtRm9yZWdyb3VuZENvbG9y
IEN5YW4KICAgICAgICAgICAgfSBjYXRjaCB7CiAgICAgICAgICAgICAgICBXcml0ZS1Ib3N0ICIg
IEVSUiAgUE9TVCAvYXBpL2xvY2sgICQoJF8uRXhjZXB0aW9uLk1lc3NhZ2UpIiAtRm9yZWdyb3Vu
ZENvbG9yIFJlZAogICAgICAgICAgICAgICAgdHJ5IHsgU2VuZC1Kc29uICRSZXNwb25zZSBAeyBl
cnJvciA9ICRfLkV4Y2VwdGlvbi5NZXNzYWdlIH0gNTAwIH0gY2F0Y2gge30KICAgICAgICAgICAg
fQogICAgICAgICAgICB0cnkgeyAkUmVzcG9uc2UuQ2xvc2UoKSB9IGNhdGNoIHt9CiAgICAgICAg
ICAgIGNvbnRpbnVlCiAgICAgICAgfQoKICAgICAgICAjIC0tLSBQT1NUIC9hcGkvdW5sb2NrIC0t
LQogICAgICAgICMgR2lidCBlaW5lbiBMb2NrIGZyZWkuIEJvZHk6IHsgImRvY0lkIjogIkQwMDEi
IH0KICAgICAgICAjIE51ciBkZXIgTG9jay1JbmhhYmVyIG9kZXIgU3VwZXJVc2VyIGthbm4gZnJl
aWdlYmVuCiAgICAgICAgaWYgKCRVcmxQYXRoIC1lcSAnL2FwaS91bmxvY2snIC1hbmQgJE1ldGhv
ZCAtZXEgJ1BPU1QnKSB7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAkQm9keSA9
IFJlYWQtQm9keSAkUmVxdWVzdAogICAgICAgICAgICAgICAgJFBhcnNlZCA9ICRCb2R5IHwgQ29u
dmVydEZyb20tSnNvbgogICAgICAgICAgICAgICAgJERvY0lkID0gJFBhcnNlZC5kb2NJZAogICAg
ICAgICAgICAgICAgJExvY2tGaWxlID0gSm9pbi1QYXRoICRSb290ICJkYXRhLy5sb2Nrcy8kRG9j
SWQubG9jayIKCiAgICAgICAgICAgICAgICBpZiAoVGVzdC1QYXRoICRMb2NrRmlsZSkgewogICAg
ICAgICAgICAgICAgICAgICRFeGlzdGluZyA9IEdldC1Db250ZW50ICRMb2NrRmlsZSAtUmF3IC1F
bmNvZGluZyBVVEY4IHwgQ29udmVydEZyb20tSnNvbgogICAgICAgICAgICAgICAgICAgICRHb3Yg
PSBHZXQtR292ZXJuYW5jZQogICAgICAgICAgICAgICAgICAgICRJc1NVID0gVGVzdC1TdXBlclVz
ZXIgJEdvdgoKICAgICAgICAgICAgICAgICAgICBpZiAoJEV4aXN0aW5nLnVzZXJuYW1lIC1lcSAk
ZW52OlVTRVJOQU1FIC1vciAkSXNTVSkgewogICAgICAgICAgICAgICAgICAgICAgICBSZW1vdmUt
SXRlbSAkTG9ja0ZpbGUgLUZvcmNlCiAgICAgICAgICAgICAgICAgICAgICAgIFNlbmQtSnNvbiAk
UmVzcG9uc2UgQHsgb2sgPSAkdHJ1ZTsgZG9jSWQgPSAkRG9jSWQgfQogICAgICAgICAgICAgICAg
ICAgICAgICBXcml0ZS1Ib3N0ICIgIEFQSSAgUE9TVCAvYXBpL3VubG9jayAgJERvY0lkIGZyZWln
ZWdlYmVuIiAtRm9yZWdyb3VuZENvbG9yIEdyZWVuCiAgICAgICAgICAgICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgICAgICAgICAgICAgU2VuZC1Kc29uICRSZXNwb25zZSBAeyBlcnJvciA9
ICJMb2NrIGdlaG9lcnQgJCgkRXhpc3RpbmcudXNlcm5hbWUpIiB9IDQwMwogICAgICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgU2Vu
ZC1Kc29uICRSZXNwb25zZSBAeyBvayA9ICR0cnVlOyBkb2NJZCA9ICREb2NJZCB9CiAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgIH0gY2F0Y2ggewogICAgICAgICAgICAgICAgV3JpdGUtSG9z
dCAiICBFUlIgIFBPU1QgL2FwaS91bmxvY2sgICQoJF8uRXhjZXB0aW9uLk1lc3NhZ2UpIiAtRm9y
ZWdyb3VuZENvbG9yIFJlZAogICAgICAgICAgICAgICAgdHJ5IHsgU2VuZC1Kc29uICRSZXNwb25z
ZSBAeyBlcnJvciA9ICRfLkV4Y2VwdGlvbi5NZXNzYWdlIH0gNTAwIH0gY2F0Y2gge30KICAgICAg
ICAgICAgfQogICAgICAgICAgICB0cnkgeyAkUmVzcG9uc2UuQ2xvc2UoKSB9IGNhdGNoIHt9CiAg
ICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgfQoKICAgICAgICAjIC0tLSBHRVQgL2FwaS9sb2Nr
cyAtLS0KICAgICAgICAjIExpc3RldCBhbGxlIGFrdGl2ZW4gTG9ja3MgYXVmIChmdWVyIFVJLUFu
emVpZ2UpCiAgICAgICAgaWYgKCRVcmxQYXRoIC1lcSAnL2FwaS9sb2NrcycgLWFuZCAkTWV0aG9k
IC1lcSAnR0VUJykgewogICAgICAgICAgICAkTG9ja0RpciA9IEpvaW4tUGF0aCAkUm9vdCAiZGF0
YS8ubG9ja3MiCiAgICAgICAgICAgICRMb2NrcyA9IFtTeXN0ZW0uQ29sbGVjdGlvbnMuQXJyYXlM
aXN0XTo6bmV3KCkKICAgICAgICAgICAgaWYgKFRlc3QtUGF0aCAkTG9ja0RpcikgewogICAgICAg
ICAgICAgICAgR2V0LUNoaWxkSXRlbSAkTG9ja0RpciAtRmlsdGVyICIqLmxvY2siIHwgRm9yRWFj
aC1PYmplY3QgewogICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICRMb2NrID0gR2V0LUNvbnRlbnQgJF8uRnVsbE5hbWUgLVJhdyAtRW5jb2RpbmcgVVRGOCB8
IENvbnZlcnRGcm9tLUpzb24KICAgICAgICAgICAgICAgICAgICAgICAgJExvY2tUaW1lID0gW0Rh
dGVUaW1lXTo6UGFyc2UoJExvY2subG9ja2VkQXQpCiAgICAgICAgICAgICAgICAgICAgICAgICRN
aW51dGVzU2luY2UgPSAoKEdldC1EYXRlKSAtICRMb2NrVGltZSkuVG90YWxNaW51dGVzCiAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICgkTWludXRlc1NpbmNlIC1sdCAxMCkgewogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgW3ZvaWRdJExvY2tzLkFkZChAewogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRvY0lkID0gJExvY2suZG9jSWQKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1c2VybmFtZSA9ICRMb2NrLnVzZXJuYW1lCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbG9ja2VkQXQgPSAkTG9jay5sb2NrZWRBdAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1pbnV0ZXMgPSBbTWF0aF06OlJvdW5kKCRNaW51dGVzU2luY2UsIDEpCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBBYmdlbGF1ZmVuZW4gTG9jayBhdWZyYWV1
bWVuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZW1vdmUtSXRlbSAkXy5GdWxsTmFtZSAt
Rm9yY2UKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0gY2F0
Y2gge30KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBTZW5kLUpz
b24gJFJlc3BvbnNlIEB7IGxvY2tzID0gQCgkTG9ja3MpIH0KICAgICAgICAgICAgJFJlc3BvbnNl
LkNsb3NlKCkKICAgICAgICAgICAgV3JpdGUtSG9zdCAiICBBUEkgIC9hcGkvbG9ja3MgICgkKCRM
b2Nrcy5Db3VudCkgYWt0aXZlIExvY2tzKSIgLUZvcmVncm91bmRDb2xvciBDeWFuCiAgICAgICAg
ICAgIGNvbnRpbnVlCiAgICAgICAgfQoKICAgICAgICAjIC0tLSBQT1NUIC9hcGkvd3JpdGUgLS0t
CiAgICAgICAgIyBCb2R5OiB7ICJwYXRoIjogImRhdGEvVmVya2Voci9EMDAxX3h4eC5qc29uIiwg
ImRhdGEiOiB7IC4uLiB9IH0KICAgICAgICBpZiAoJFVybFBhdGggLWVxICcvYXBpL3dyaXRlJyAt
YW5kICRNZXRob2QgLWVxICdQT1NUJykgewogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAg
ICAgJEJvZHkgPSBSZWFkLUJvZHkgJFJlcXVlc3QKICAgICAgICAgICAgICAgICRQYXJzZWQgPSAk
Qm9keSB8IENvbnZlcnRGcm9tLUpzb24KICAgICAgICAgICAgICAgICRSZWxQYXRoID0gJFBhcnNl
ZC5wYXRoCiAgICAgICAgICAgICAgICAkU2FmZVBhdGggPSBSZXNvbHZlLVNhZmVQYXRoICRSZWxQ
YXRoCgogICAgICAgICAgICAgICAgaWYgKC1ub3QgJFNhZmVQYXRoKSB7CiAgICAgICAgICAgICAg
ICAgICAgU2VuZC1Kc29uICRSZXNwb25zZSBAeyBlcnJvciA9ICJVbmd1ZWx0aWdlciBQZmFkIiB9
IDQwMAogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAjIFNjaHJl
aWJzY2h1dHo6IGdvdmVybmFuY2UuanNvbiBpc3QgdWViZXIgL2FwaS93cml0ZSBuaWNodCBiZXNj
aHJlaWJiYXIuCiAgICAgICAgICAgICAgICAgICAgaWYgKCRSZWxQYXRoIC1lcSAnZGF0YS9nb3Zl
cm5hbmNlLmpzb24nKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIFNlbmQtSnNvbiAkUmVzcG9u
c2UgQHsgZXJyb3IgPSAiZ292ZXJuYW5jZS5qc29uIGthbm4gbnVyIHVlYmVyIC9hcGkvZ292ZXJu
YW5jZSBnZWFlbmRlcnQgd2VyZGVuIiB9IDQwMwogICAgICAgICAgICAgICAgICAgICAgICAkUmVz
cG9uc2UuQ2xvc2UoKQogICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAg
ICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgIyBTY2hyZWlic2NodXR6OiBjb25maWcu
anNvbiBudXIgZHVyY2ggU3VwZXJVc2VyIGFlbmRlcmJhci4KICAgICAgICAgICAgICAgICAgICBp
ZiAoJFJlbFBhdGggLWVxICdkYXRhL2NvbmZpZy5qc29uJykgewogICAgICAgICAgICAgICAgICAg
ICAgICAkR292ID0gR2V0LUdvdmVybmFuY2UKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKC1u
b3QgKFRlc3QtU3VwZXJVc2VyICRHb3YpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBT
ZW5kLUpzb24gJFJlc3BvbnNlIEB7IGVycm9yID0gImNvbmZpZy5qc29uIGthbm4gbnVyIHZvbiBT
dXBlclVzZXJuIGdlYWVuZGVydCB3ZXJkZW4iIH0gNDAzCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBXcml0ZS1Ib3N0ICIgIEVSUiAgUE9TVCAvYXBpL3dyaXRlICBjb25maWcuanNvbiBCZXJl
Y2h0aWd1bmcgdmVyd2VpZ2VydCAoJGVudjpVU0VSTkFNRSkiIC1Gb3JlZ3JvdW5kQ29sb3IgUmVk
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkUmVzcG9uc2UuQ2xvc2UoKQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgJERvY0RhdGEgPSAkUGFyc2Vk
LmRhdGEKCiAgICAgICAgICAgICAgICAgICAgIyBVbnRlcnNjaGVpZHVuZzogSlNPTi1Eb2t1bWVu
dCAoUFNDdXN0b21PYmplY3QvSGFzaHRhYmxlL0FycmF5KSB2cy4gUm9oZGF0ZW4gKFN0cmluZywg
ei5CLiBIVE1MKQogICAgICAgICAgICAgICAgICAgIGlmICgkRG9jRGF0YSAtaXMgW1BTQ3VzdG9t
T2JqZWN0XSAtb3IgJERvY0RhdGEgLWlzIFtIYXNodGFibGVdIC1vciAkRG9jRGF0YSAtaXMgW1N5
c3RlbS5PYmplY3RbXV0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgIyBTdGF0dXNhZW5kZXJ1
bmcgYXVmICJGcmVpZ2VnZWJlbiIgb2RlciAiQWJnZWxlaG50IiBlcmZvcmRlcnQgUmV2aWV3ZXIt
CiAgICAgICAgICAgICAgICAgICAgICAgICMgb2RlciBTdXBlclVzZXItQmVyZWNodGlndW5nLiBE
ZXIgU2VydmVyIHBydWVmdCBkaWVzIHVuYWJoYWVuZ2lnIHZvbSBDbGllbnQuCiAgICAgICAgICAg
ICAgICAgICAgICAgICROZXdTdGF0dXMgPSAkbnVsbAogICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoJERvY0RhdGEuc3RhdHVzKSB7ICROZXdTdGF0dXMgPSAkRG9jRGF0YS5zdGF0dXMgfQoKICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKCROZXdTdGF0dXMgLWVxICdGcmVpZ2VnZWJlbicgLW9y
ICROZXdTdGF0dXMgLWVxICdBYmdlbGVobnQnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAkR292ID0gR2V0LUdvdmVybmFuY2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICREb2NL
YXQgPSAkbnVsbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCREb2NEYXRhLmthdGVn
b3JpZSkgeyAkRG9jS2F0ID0gJERvY0RhdGEua2F0ZWdvcmllIH0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICRJc1NVID0gVGVzdC1TdXBlclVzZXIgJEdvdgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJElzUmV2ID0gVGVzdC1SZXZpZXdlciAkR292ICREb2NLYXQKCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoLW5vdCAkSXNTVSAtYW5kIC1ub3QgJElzUmV2KSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VuZC1Kc29uICRSZXNwb25zZSBAeyBlcnJvciA9
ICJLZWluZSBCZXJlY2h0aWd1bmcgZnVlciBTdGF0dXMgJyROZXdTdGF0dXMnIGluIEthdGVnb3Jp
ZSAnJERvY0thdCciIH0gNDAzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV3JpdGUt
SG9zdCAiICBFUlIgIFBPU1QgL2FwaS93cml0ZSAgU3RhdHVzLUJlcmVjaHRpZ3VuZyB2ZXJ3ZWln
ZXJ0ICgkZW52OlVTRVJOQU1FIC0+ICROZXdTdGF0dXMpIiAtRm9yZWdyb3VuZENvbG9yIFJlZAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRSZXNwb25zZS5DbG9zZSgpCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAk
V3JpdGVDb250ZW50ID0gJERvY0RhdGEgfCBDb252ZXJ0VG8tSnNvbiAtRGVwdGggMjAKICAgICAg
ICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAjIFJvaGRhdGVu
IChIVE1MLVN0cmluZ3MgZnVlciBTdGFydHNlaXRlLCBIaWxmZS1JbmhhbHQsIGV0Yy4pCiAgICAg
ICAgICAgICAgICAgICAgICAgICRXcml0ZUNvbnRlbnQgPSBbc3RyaW5nXSREb2NEYXRhCiAgICAg
ICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIE9yZG5lciBlcnN0ZWxsZW4g
ZmFsbHMgbm9ldGlnCiAgICAgICAgICAgICAgICAgICAgJERpciA9IFtJTy5QYXRoXTo6R2V0RGly
ZWN0b3J5TmFtZSgkU2FmZVBhdGgpCiAgICAgICAgICAgICAgICAgICAgaWYgKC1ub3QgKFRlc3Qt
UGF0aCAkRGlyKSkgeyBOZXctSXRlbSAtSXRlbVR5cGUgRGlyZWN0b3J5IC1QYXRoICREaXIgLUZv
cmNlIHwgT3V0LU51bGwgfQoKICAgICAgICAgICAgICAgICAgICAjIFNjaHJlaWJzY2h1dHogYXVm
aGViZW4sIEluaGFsdCBzY2hyZWliZW4sIFNjaHJlaWJzY2h1dHogc2V0emVuCiAgICAgICAgICAg
ICAgICAgICAgVW5wcm90ZWN0LUZpbGUgJFNhZmVQYXRoCiAgICAgICAgICAgICAgICAgICAgW0lP
LkZpbGVdOjpXcml0ZUFsbFRleHQoJFNhZmVQYXRoLCAkV3JpdGVDb250ZW50LCBbVGV4dC5VVEY4
RW5jb2RpbmddOjpuZXcoJGZhbHNlKSkKICAgICAgICAgICAgICAgICAgICBQcm90ZWN0LUZpbGUg
JFNhZmVQYXRoCgogICAgICAgICAgICAgICAgICAgICRGaWxlSW5mbyA9IEdldC1JdGVtICRTYWZl
UGF0aAogICAgICAgICAgICAgICAgICAgIFNlbmQtSnNvbiAkUmVzcG9uc2UgQHsKICAgICAgICAg
ICAgICAgICAgICAgICAgb2sgICAgICAgPSAkdHJ1ZQogICAgICAgICAgICAgICAgICAgICAgICBw
YXRoICAgICA9ICRSZWxQYXRoCiAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVkID0gJEZp
bGVJbmZvLkxhc3RXcml0ZVRpbWVVdGMuVG9TdHJpbmcoIm8iKQogICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAgICBXcml0ZS1Ib3N0ICIgIEFQSSAgUE9TVCAvYXBpL3dyaXRl
ICAkUmVsUGF0aCIgLUZvcmVncm91bmRDb2xvciBHcmVlbgogICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICB9IGNhdGNoIHsKICAgICAgICAgICAgICAgIFdyaXRlLUhvc3QgIiAgRVJSICBQT1NU
IC9hcGkvd3JpdGUgICQoJF8uRXhjZXB0aW9uLk1lc3NhZ2UpIiAtRm9yZWdyb3VuZENvbG9yIFJl
ZAogICAgICAgICAgICAgICAgIyBTY2hyZWlic2NodXR6IHdpZWRlcmhlcnN0ZWxsZW4gZmFsbHMg
YXVmZ2Vob2JlbgogICAgICAgICAgICAgICAgaWYgKCRTYWZlUGF0aCkgeyB0cnkgeyBQcm90ZWN0
LUZpbGUgJFNhZmVQYXRoIH0gY2F0Y2gge30gfQogICAgICAgICAgICAgICAgdHJ5IHsgU2VuZC1K
c29uICRSZXNwb25zZSBAeyBlcnJvciA9ICRfLkV4Y2VwdGlvbi5NZXNzYWdlIH0gNTAwIH0gY2F0
Y2gge30KICAgICAgICAgICAgfQogICAgICAgICAgICB0cnkgeyAkUmVzcG9uc2UuQ2xvc2UoKSB9
IGNhdGNoIHt9CiAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgfQoKICAgICAgICAjIC0tLSBQ
T1NUIC9hcGkvZGVsZXRlIC0tLQogICAgICAgICMgQm9keTogeyAicGF0aCI6ICJkYXRhL1Zlcmtl
aHIvRDAwMV94eHguanNvbiIgfQogICAgICAgICMgQXV0b3Jpc2llcnVuZzoKICAgICAgICAjICAg
LSBBcnRpa2VsIChkYXRhL0thdC9EeHh4Lmpzb24pIHVuZCBNZWRpYSAobWVkaWEvLi4uKTogSmVk
ZXIgYXV0aGVudGlmaXppZXJ0ZSBVc2VyCiAgICAgICAgIyAgICAgKFBhcGllcmtvcmItV29ya2Zs
b3cgaW0gRnJvbnRlbmQgcHJ1ZWZ0IE5XLUtlbm51bmcgKyBTb2Z0LURlbGV0ZSkKICAgICAgICAj
ICAgLSBTeXN0ZW1kYXRlaWVuIChjb25maWcuanNvbiwgZ292ZXJuYW5jZS5qc29uLCAudHJhc2gu
anNvbiBldGMuKTogTnVyIFNVL0ZBCiAgICAgICAgaWYgKCRVcmxQYXRoIC1lcSAnL2FwaS9kZWxl
dGUnIC1hbmQgJE1ldGhvZCAtZXEgJ1BPU1QnKSB7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAg
ICAgICAgICAkQm9keSA9IFJlYWQtQm9keSAkUmVxdWVzdAogICAgICAgICAgICAgICAgJFBhcnNl
ZCA9ICRCb2R5IHwgQ29udmVydEZyb20tSnNvbgogICAgICAgICAgICAgICAgJFJlbFBhdGggPSAk
UGFyc2VkLnBhdGgKCiAgICAgICAgICAgICAgICAjIFN5c3RlbWRhdGVpZW4gc2NodWV0emVuOiBO
dXIgU3VwZXJVc2VyL0ZhY2hhdWZzaWNodAogICAgICAgICAgICAgICAgJElzU3lzdGVtRmlsZSA9
ICgkUmVsUGF0aCAtZXEgJ2RhdGEvY29uZmlnLmpzb24nIC1vcgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAkUmVsUGF0aCAtZXEgJ2RhdGEvZ292ZXJuYW5jZS5qc29uJyAtb3IKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFJlbFBhdGggLW1hdGNoICdeZGF0YVsvXFxd
XC4nKQogICAgICAgICAgICAgICAgaWYgKCRJc1N5c3RlbUZpbGUpIHsKICAgICAgICAgICAgICAg
ICAgICAkR292ID0gR2V0LUdvdmVybmFuY2UKICAgICAgICAgICAgICAgICAgICBpZiAoLW5vdCAo
VGVzdC1TdXBlclVzZXIgJEdvdikgLWFuZCAtbm90IChUZXN0LUZhY2hhdWZzaWNodCAkR292KSkg
ewogICAgICAgICAgICAgICAgICAgICAgICBTZW5kLUpzb24gJFJlc3BvbnNlIEB7IGVycm9yID0g
Ik51ciBTdXBlclVzZXIgdW5kIEZhY2hhdWZzaWNodCBkdWVyZmVuIFN5c3RlbWRhdGVpZW4gbG9l
c2NoZW4iIH0gNDAzCiAgICAgICAgICAgICAgICAgICAgICAgIFdyaXRlLUhvc3QgIiAgRVJSICBQ
T1NUIC9hcGkvZGVsZXRlICBTeXN0ZW1kYXRlaS1CZXJlY2h0aWd1bmcgdmVyd2VpZ2VydCAoJGVu
djpVU0VSTkFNRSAtPiAkUmVsUGF0aCkiIC1Gb3JlZ3JvdW5kQ29sb3IgUmVkCiAgICAgICAgICAg
ICAgICAgICAgICAgICRSZXNwb25zZS5DbG9zZSgpCiAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAg
ICAgICAgICRTYWZlUGF0aCA9IFJlc29sdmUtU2FmZVBhdGggJFJlbFBhdGgKCiAgICAgICAgICAg
ICAgICBpZiAoLW5vdCAkU2FmZVBhdGgpIHsKICAgICAgICAgICAgICAgICAgICBTZW5kLUpzb24g
JFJlc3BvbnNlIEB7IGVycm9yID0gIlVuZ3VlbHRpZ2VyIFBmYWQiIH0gNDAwCiAgICAgICAgICAg
ICAgICB9IGVsc2VpZiAoVGVzdC1QYXRoICRTYWZlUGF0aCkgewogICAgICAgICAgICAgICAgICAg
IFVucHJvdGVjdC1GaWxlICRTYWZlUGF0aAogICAgICAgICAgICAgICAgICAgIFJlbW92ZS1JdGVt
ICRTYWZlUGF0aCAtUmVjdXJzZSAtRm9yY2UKICAgICAgICAgICAgICAgICAgICBTZW5kLUpzb24g
JFJlc3BvbnNlIEB7IG9rID0gJHRydWU7IHBhdGggPSAkUmVsUGF0aCB9CiAgICAgICAgICAgICAg
ICAgICAgV3JpdGUtSG9zdCAiICBBUEkgIFBPU1QgL2FwaS9kZWxldGUgICRSZWxQYXRoICh2b24g
JGVudjpVU0VSTkFNRSkiIC1Gb3JlZ3JvdW5kQ29sb3IgWWVsbG93CiAgICAgICAgICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgICAgICAgIFNlbmQtSnNvbiAkUmVzcG9uc2UgQHsgZXJyb3Ig
PSAiRGF0ZWkgbmljaHQgZ2VmdW5kZW4iIH0gNDA0CiAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgIH0gY2F0Y2ggewogICAgICAgICAgICAgICAgV3JpdGUtSG9zdCAiICBFUlIgIFBPU1QgL2Fw
aS9kZWxldGUgICQoJF8uRXhjZXB0aW9uLk1lc3NhZ2UpIiAtRm9yZWdyb3VuZENvbG9yIFJlZAog
ICAgICAgICAgICAgICAgdHJ5IHsgU2VuZC1Kc29uICRSZXNwb25zZSBAeyBlcnJvciA9ICRfLkV4
Y2VwdGlvbi5NZXNzYWdlIH0gNTAwIH0gY2F0Y2gge30KICAgICAgICAgICAgfQogICAgICAgICAg
ICB0cnkgeyAkUmVzcG9uc2UuQ2xvc2UoKSB9IGNhdGNoIHt9CiAgICAgICAgICAgIGNvbnRpbnVl
CiAgICAgICAgfQoKICAgICAgICAjIC0tLSBQT1NUIC9hcGkvZmV0Y2gtaW1hZ2U/dXJsPWh0dHBz
Oi8vLi4uIC0tLQogICAgICAgICMgUHJveHk6IEV4dGVybmVzIEJpbGQgaGVydW50ZXJsYWRlbiAo
ZnVlciBQYXN0ZSBhdXMgV1dXLCB1bWdlaHQgQ09SUykKICAgICAgICBpZiAoJFVybFBhdGggLWVx
ICcvYXBpL2ZldGNoLWltYWdlJyAtYW5kICRNZXRob2QgLWVxICdQT1NUJykgewogICAgICAgICAg
ICB0cnkgewogICAgICAgICAgICAgICAgJEJvZHkgPSBSZWFkLUJvZHkgJFJlcXVlc3QKICAgICAg
ICAgICAgICAgICRQYXJzZWQgPSAkQm9keSB8IENvbnZlcnRGcm9tLUpzb24KICAgICAgICAgICAg
ICAgICRJbWdVcmwgPSAkUGFyc2VkLnVybAoKICAgICAgICAgICAgICAgICMgTnVyIGh0dHAvaHR0
cHMgVVJMcyBlcmxhdWJlbgogICAgICAgICAgICAgICAgaWYgKCRJbWdVcmwgLW5vdG1hdGNoICde
aHR0cHM/Oi8vJykgewogICAgICAgICAgICAgICAgICAgIFNlbmQtSnNvbiAkUmVzcG9uc2UgQHsg
ZXJyb3IgPSAiTnVyIEhUVFAvSFRUUFMgVVJMcyBlcmxhdWJ0IiB9IDQwMAogICAgICAgICAgICAg
ICAgICAgICRSZXNwb25zZS5DbG9zZSgpCiAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAg
ICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIFNTUkYtU2NodXR6OiBQcml2YXRlIElQ
cyB1bmQgbG9jYWxob3N0IGJsb2NraWVyZW4KICAgICAgICAgICAgICAgICRQYXJzZWRVcmkgPSBb
U3lzdGVtLlVyaV0kSW1nVXJsCiAgICAgICAgICAgICAgICAkSW1nSG9zdCA9ICRQYXJzZWRVcmku
SG9zdAogICAgICAgICAgICAgICAgaWYgKCRJbWdIb3N0IC1tYXRjaCAnXihsb2NhbGhvc3R8MTI3
XC58MTBcLnwxOTJcLjE2OFwufDE3MlwuKDFbNi05XXwyWzAtOV18M1swMV0pXC58MFwuMFwuMFwu
MHwxNjlcLjI1NFwuKScgLW9yICRJbWdIb3N0IC1lcSAnOjoxJykgewogICAgICAgICAgICAgICAg
ICAgIFNlbmQtSnNvbiAkUmVzcG9uc2UgQHsgZXJyb3IgPSAiWnVncmlmZiBhdWYgaW50ZXJuZSBB
ZHJlc3NlbiBuaWNodCBlcmxhdWJ0IiB9IDQwMwogICAgICAgICAgICAgICAgICAgICRSZXNwb25z
ZS5DbG9zZSgpCiAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgIH0K
CiAgICAgICAgICAgICAgICAkV2ViQ2xpZW50ID0gTmV3LU9iamVjdCBTeXN0ZW0uTmV0LldlYkNs
aWVudAogICAgICAgICAgICAgICAgJFdlYkNsaWVudC5IZWFkZXJzLkFkZCgiVXNlci1BZ2VudCIs
ICJNb3ppbGxhLzUuMCBEUklWRS1Qb3J0YWwvMy42IikKICAgICAgICAgICAgICAgICRJbWdCeXRl
cyA9ICRXZWJDbGllbnQuRG93bmxvYWREYXRhKCRJbWdVcmwpCiAgICAgICAgICAgICAgICAkQ29u
dGVudFR5cGUgPSAkV2ViQ2xpZW50LlJlc3BvbnNlSGVhZGVyc1siQ29udGVudC1UeXBlIl0KICAg
ICAgICAgICAgICAgICRXZWJDbGllbnQuRGlzcG9zZSgpCgogICAgICAgICAgICAgICAgIyBOdXIg
QmlsZGVyIGR1cmNobGFzc2VuCiAgICAgICAgICAgICAgICBpZiAoJENvbnRlbnRUeXBlIC1ub3Rs
aWtlICdpbWFnZS8qJykgewogICAgICAgICAgICAgICAgICAgIFNlbmQtSnNvbiAkUmVzcG9uc2Ug
QHsgZXJyb3IgPSAiS2VpbiBCaWxkOiAkQ29udGVudFR5cGUiIH0gNDAwCiAgICAgICAgICAgICAg
ICAgICAgJFJlc3BvbnNlLkNsb3NlKCkKICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAg
ICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRSZXNwb25zZS5TdGF0dXNDb2RlID0gMjAw
CiAgICAgICAgICAgICAgICAkUmVzcG9uc2UuQ29udGVudFR5cGUgPSAkQ29udGVudFR5cGUKICAg
ICAgICAgICAgICAgIEFkZC1TZWN1cml0eUhlYWRlcnMgJFJlc3BvbnNlCiAgICAgICAgICAgICAg
ICAkUmVzcG9uc2UuQ29udGVudExlbmd0aDY0ID0gJEltZ0J5dGVzLkxlbmd0aAogICAgICAgICAg
ICAgICAgJFJlc3BvbnNlLk91dHB1dFN0cmVhbS5Xcml0ZSgkSW1nQnl0ZXMsIDAsICRJbWdCeXRl
cy5MZW5ndGgpCiAgICAgICAgICAgICAgICBXcml0ZS1Ib3N0ICIgIEFQSSAgUE9TVCAvYXBpL2Zl
dGNoLWltYWdlICAkKCRJbWdCeXRlcy5MZW5ndGgpIEJ5dGVzIHZvbiAkSW1nVXJsIiAtRm9yZWdy
b3VuZENvbG9yIEN5YW4KICAgICAgICAgICAgfSBjYXRjaCB7CiAgICAgICAgICAgICAgICBXcml0
ZS1Ib3N0ICIgIEVSUiAgUE9TVCAvYXBpL2ZldGNoLWltYWdlICAkKCRfLkV4Y2VwdGlvbi5NZXNz
YWdlKSIgLUZvcmVncm91bmRDb2xvciBSZWQKICAgICAgICAgICAgICAgIHRyeSB7IFNlbmQtSnNv
biAkUmVzcG9uc2UgQHsgZXJyb3IgPSAiRG93bmxvYWQgZmVobGdlc2NobGFnZW46ICQoJF8uRXhj
ZXB0aW9uLk1lc3NhZ2UpIiB9IDUwMCB9IGNhdGNoIHt9CiAgICAgICAgICAgIH0KICAgICAgICAg
ICAgdHJ5IHsgJFJlc3BvbnNlLkNsb3NlKCkgfSBjYXRjaCB7fQogICAgICAgICAgICBjb250aW51
ZQogICAgICAgIH0KCiAgICAgICAgIyAtLS0gUE9TVCAvYXBpL3VwbG9hZD9wYXRoPW1lZGlhL0Qw
MDEvYmlsZC5wbmcgLS0tCiAgICAgICAgIyBBa3plcHRpZXJ0IHJvaGUgQnl0ZXMgdW5kIG11bHRp
cGFydC9mb3JtLWRhdGEgKEZvcm1EYXRhKSBVcGxvYWRzLgogICAgICAgICMgTnVyIHNpY2hlcmUg
TWVkaWVuZm9ybWF0ZSBlcmxhdWJ0IChCaWxkZXIsIFBERiwgVmlkZW8sIEF1ZGlvKS4KICAgICAg
ICBpZiAoJFVybFBhdGggLWVxICcvYXBpL3VwbG9hZCcgLWFuZCAkTWV0aG9kIC1lcSAnUE9TVCcp
IHsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICMgUGZhZCBtYW51ZWxsIGF1cyBS
YXctVVJMIGV4dHJhaGllcmVuIHVuZCBVVEYtOCBkZWtvZGllcmVuCiAgICAgICAgICAgICAgICAj
IChRdWVyeVN0cmluZyB2ZXJ3ZW5kZXQgYXVmIG1hbmNoZW4gV2luZG93cy1TeXN0ZW1lbiBkaWUg
U3lzdGVtY29kZXBhZ2Ugc3RhdHQgVVRGLTgpCiAgICAgICAgICAgICAgICAkUmF3UXVlcnkgPSAk
UmVxdWVzdC5VcmwuUXVlcnkKICAgICAgICAgICAgICAgICRQYXRoTWF0Y2ggPSBbcmVnZXhdOjpN
YXRjaCgkUmF3UXVlcnksICdwYXRoPShbXiZdKyknKQogICAgICAgICAgICAgICAgaWYgKC1ub3Qg
JFBhdGhNYXRjaC5TdWNjZXNzKSB7CiAgICAgICAgICAgICAgICAgICAgU2VuZC1Kc29uICRSZXNw
b25zZSBAeyBlcnJvciA9ICJLZWluIHBhdGgtUGFyYW1ldGVyIiB9IDQwMAogICAgICAgICAgICAg
ICAgICAgICRSZXNwb25zZS5DbG9zZSgpCiAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRSZWxQYXRoID0gW1N5c3RlbS5VcmldOjpV
bmVzY2FwZURhdGFTdHJpbmcoJFBhdGhNYXRjaC5Hcm91cHNbMV0uVmFsdWUpCgogICAgICAgICAg
ICAgICAgIyBEYXRlaXR5cC1XaGl0ZWxpc3Q6IE51ciBzaWNoZXJlIE1lZGllbmZvcm1hdGUgZXJs
YXViZW4KICAgICAgICAgICAgICAgICRVcGxvYWRFeHQgPSBbSU8uUGF0aF06OkdldEV4dGVuc2lv
bigkUmVsUGF0aCkuVG9Mb3dlcigpCiAgICAgICAgICAgICAgICAkQWxsb3dlZFVwbG9hZEV4dHMg
PSBAKCcuanBnJywnLmpwZWcnLCcucG5nJywnLmdpZicsJy53ZWJwJywnLnN2ZycsJy5pY28nLCcu
Ym1wJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy5wZGYnLCcubXA0
JywnLndlYm0nLCcubXAzJywnLm9nZycsJy53YXYnKQogICAgICAgICAgICAgICAgaWYgKCRVcGxv
YWRFeHQgLW5vdGluICRBbGxvd2VkVXBsb2FkRXh0cykgewogICAgICAgICAgICAgICAgICAgIFNl
bmQtSnNvbiAkUmVzcG9uc2UgQHsgZXJyb3IgPSAiRGF0ZWl0eXAgJyRVcGxvYWRFeHQnIGlzdCBu
aWNodCBlcmxhdWJ0LiBFcmxhdWJ0OiBCaWxkZXIsIFBERiwgVmlkZW8sIEF1ZGlvLiIgfSA0MDAK
ICAgICAgICAgICAgICAgICAgICBXcml0ZS1Ib3N0ICIgIEVSUiAgUE9TVCAvYXBpL3VwbG9hZCAg
RGF0ZWl0eXAgYWJnZWxlaG50OiAkVXBsb2FkRXh0ICgkUmVsUGF0aCkiIC1Gb3JlZ3JvdW5kQ29s
b3IgUmVkCiAgICAgICAgICAgICAgICAgICAgJFJlc3BvbnNlLkNsb3NlKCkKICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRTYWZl
UGF0aCA9IFJlc29sdmUtU2FmZVBhdGggJFJlbFBhdGgKCiAgICAgICAgICAgICAgICBpZiAoLW5v
dCAkU2FmZVBhdGgpIHsKICAgICAgICAgICAgICAgICAgICBTZW5kLUpzb24gJFJlc3BvbnNlIEB7
IGVycm9yID0gIlVuZ3VlbHRpZ2VyIFBmYWQiIH0gNDAwCiAgICAgICAgICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgICAgICAgICMgT3JkbmVyIGVyc3RlbGxlbgogICAgICAgICAgICAgICAg
ICAgICREaXIgPSBbSU8uUGF0aF06OkdldERpcmVjdG9yeU5hbWUoJFNhZmVQYXRoKQogICAgICAg
ICAgICAgICAgICAgIGlmICgtbm90IChUZXN0LVBhdGggJERpcikpIHsgTmV3LUl0ZW0gLUl0ZW1U
eXBlIERpcmVjdG9yeSAtUGF0aCAkRGlyIC1Gb3JjZSB8IE91dC1OdWxsIH0KCiAgICAgICAgICAg
ICAgICAgICAgIyBCb2R5IGxlc2VuIChtYXguIDEwMCBNQikKICAgICAgICAgICAgICAgICAgICAk
TWF4VXBsb2FkQnl0ZXMgPSAxMDAgKiAxMDI0ICogMTAyNAogICAgICAgICAgICAgICAgICAgICRN
ZW1TdHJlYW0gPSBOZXctT2JqZWN0IElPLk1lbW9yeVN0cmVhbQogICAgICAgICAgICAgICAgICAg
ICRSZXF1ZXN0LklucHV0U3RyZWFtLkNvcHlUbygkTWVtU3RyZWFtKQogICAgICAgICAgICAgICAg
ICAgICRSYXdCeXRlcyA9ICRNZW1TdHJlYW0uVG9BcnJheSgpCiAgICAgICAgICAgICAgICAgICAg
JE1lbVN0cmVhbS5EaXNwb3NlKCkKCiAgICAgICAgICAgICAgICAgICAgaWYgKCRSYXdCeXRlcy5M
ZW5ndGggLWd0ICRNYXhVcGxvYWRCeXRlcykgewogICAgICAgICAgICAgICAgICAgICAgICBTZW5k
LUpzb24gJFJlc3BvbnNlIEB7IGVycm9yID0gIkRhdGVpIHp1IGdyb3NzIChtYXguIDEwMCBNQiki
IH0gNDEzCiAgICAgICAgICAgICAgICAgICAgICAgIFdyaXRlLUhvc3QgIiAgRVJSICBQT1NUIC9h
cGkvdXBsb2FkICBadSBncm9zczogJCgkUmF3Qnl0ZXMuTGVuZ3RoKSBCeXRlcyAoJFJlbFBhdGgp
IiAtRm9yZWdyb3VuZENvbG9yIFJlZAogICAgICAgICAgICAgICAgICAgICAgICAkUmVzcG9uc2Uu
Q2xvc2UoKQogICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAg
ICAgIH0KCiAgICAgICAgICAgICAgICAgICAgIyBNdWx0aXBhcnQvZm9ybS1kYXRhOiBEYXRlaS1C
eXRlcyBhdXMgQm9keSBleHRyYWhpZXJlbgogICAgICAgICAgICAgICAgICAgICRDVCA9ICRSZXF1
ZXN0LkNvbnRlbnRUeXBlCiAgICAgICAgICAgICAgICAgICAgaWYgKCRDVCAtYW5kICRDVC5Db250
YWlucygnbXVsdGlwYXJ0L2Zvcm0tZGF0YScpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRC
b3VuZGFyeU1hdGNoID0gW3JlZ2V4XTo6TWF0Y2goJENULCAnYm91bmRhcnk9KC4rKScpCiAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICgkQm91bmRhcnlNYXRjaC5TdWNjZXNzKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAkQm91bmRhcnkgPSBbVGV4dC5FbmNvZGluZ106OlVURjguR2V0
Qnl0ZXMoJy0tJyArICRCb3VuZGFyeU1hdGNoLkdyb3Vwc1sxXS5WYWx1ZS5UcmltKCciJykpCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAjIERhdGVpLVBhcnQgZmluZGVuOiBzdWNoZSBuYWNo
ICJmaWxlbmFtZT0iIGltIEhlYWRlciwgZXh0cmFoaWVyZSBEYXRlbiBuYWNoIFxyXG5cclxuCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAkUmF3ID0gJFJhd0J5dGVzCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAkTmVlZGxlID0gW1RleHQuRW5jb2RpbmddOjpVVEY4LkdldEJ5dGVzKCdm
aWxlbmFtZT0nKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJEhlYWRlckVuZCA9IFtUZXh0
LkVuY29kaW5nXTo6VVRGOC5HZXRCeXRlcyhbY2hhcl0xMyArIFtjaGFyXTEwICsgW2NoYXJdMTMg
KyBbY2hhcl0xMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgRWluZmFjaGVyIEFuc2F0
ejogS29udmVydGllcmUgenUgU3RyaW5nLCBmaW5kZSBPZmZzZXRzCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAkUmF3U3RyID0gW1RleHQuRW5jb2RpbmddOjpHZXRFbmNvZGluZygnaXNvLTg4
NTktMScpLkdldFN0cmluZygkUmF3KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJEZuUG9z
ID0gJFJhd1N0ci5JbmRleE9mKCdmaWxlbmFtZT0nKQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKCRGblBvcyAtZ2UgMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRE
YXRhU3RhcnQgPSAkUmF3U3RyLkluZGV4T2YoKFtjaGFyXTEzKS5Ub1N0cmluZygpICsgKFtjaGFy
XTEwKS5Ub1N0cmluZygpICsgKFtjaGFyXTEzKS5Ub1N0cmluZygpICsgKFtjaGFyXTEwKS5Ub1N0
cmluZygpLCAkRm5Qb3MpICsgNAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgRW5k
ZTogbmFlY2hzdGUgQm91bmRhcnkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkQm91
bmRhcnlTdHIgPSBbVGV4dC5FbmNvZGluZ106OkdldEVuY29kaW5nKCdpc28tODg1OS0xJykuR2V0
U3RyaW5nKCRCb3VuZGFyeSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkRGF0YUVu
ZCA9ICRSYXdTdHIuSW5kZXhPZigkQm91bmRhcnlTdHIsICREYXRhU3RhcnQpCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKCREYXRhRW5kIC1ndCAkRGF0YVN0YXJ0KSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgRW50ZmVybmUgXHJcbiB2b3IgZGVyIEJv
dW5kYXJ5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkRGF0YUVuZCAt
Z2UgMiAtYW5kICRSYXdTdHIuU3Vic3RyaW5nKCREYXRhRW5kIC0gMiwgMikgLWVxIChbY2hhcl0x
MykuVG9TdHJpbmcoKSArIChbY2hhcl0xMCkuVG9TdHJpbmcoKSkgewogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJERhdGFFbmQgLT0gMgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRS
YXdCeXRlcyA9ICRSYXdbJERhdGFTdGFydC4uKCREYXRhRW5kIC0gMSldCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAg
ICAgICAjIFNjaHJlaWJzY2h1dHogYXVmaGViZW4sIERhdGVpIHNjaHJlaWJlbiwgU2NocmVpYnNj
aHV0eiBzZXR6ZW4KICAgICAgICAgICAgICAgICAgICBVbnByb3RlY3QtRmlsZSAkU2FmZVBhdGgK
ICAgICAgICAgICAgICAgICAgICBbSU8uRmlsZV06OldyaXRlQWxsQnl0ZXMoJFNhZmVQYXRoLCAk
UmF3Qnl0ZXMpCiAgICAgICAgICAgICAgICAgICAgUHJvdGVjdC1GaWxlICRTYWZlUGF0aAoKICAg
ICAgICAgICAgICAgICAgICBTZW5kLUpzb24gJFJlc3BvbnNlIEB7IG9rID0gJHRydWU7IHBhdGgg
PSAkUmVsUGF0aCB9CiAgICAgICAgICAgICAgICAgICAgV3JpdGUtSG9zdCAiICBBUEkgIFBPU1Qg
L2FwaS91cGxvYWQgICRSZWxQYXRoICgkKCRSYXdCeXRlcy5MZW5ndGgpIEJ5dGVzKSIgLUZvcmVn
cm91bmRDb2xvciBHcmVlbgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGNhdGNoIHsK
ICAgICAgICAgICAgICAgIFdyaXRlLUhvc3QgIiAgRVJSICBQT1NUIC9hcGkvdXBsb2FkICAkKCRf
LkV4Y2VwdGlvbi5NZXNzYWdlKSIgLUZvcmVncm91bmRDb2xvciBSZWQKICAgICAgICAgICAgICAg
IHRyeSB7IFNlbmQtSnNvbiAkUmVzcG9uc2UgQHsgZXJyb3IgPSAkXy5FeGNlcHRpb24uTWVzc2Fn
ZSB9IDUwMCB9IGNhdGNoIHt9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdHJ5IHsgJFJlc3Bv
bnNlLkNsb3NlKCkgfSBjYXRjaCB7fQogICAgICAgICAgICBjb250aW51ZQogICAgICAgIH0KCiAg
ICAgICAgIyAtLS0gUE9TVCAvYXBpL3NodXRkb3duIC0tLQogICAgICAgICMgV2lyZCB2b24gYmVm
b3JldW5sb2FkIGdlc2VuZGV0IChUYWItQ2xvc2UgT0RFUiBGNS1SZWZyZXNoKS4KICAgICAgICAj
IFN0YXJ0ZXQgZWluZSBHbmFkZW5mcmlzdCBzdGF0dCBzb2ZvcnRpZ2VtIFNodXRkb3duLgogICAg
ICAgICMgQmVpIEY1L1JlZnJlc2gga29tbXQgaW5uZXJoYWxiIHZvbiA1cyBlaW4gbmV1ZXIgSGVh
cnRiZWF0IHVuZCBicmljaHQgYWIuCiAgICAgICAgIyBCZWkgZWNodGVtIFRhYi1DbG9zZSBrb21t
dCBrZWluIEhlYXJ0YmVhdCAtPiBTZXJ2ZXIgYmVlbmRldCBzaWNoIG5hY2ggR25hZGVuZnJpc3Qu
CiAgICAgICAgaWYgKCRVcmxQYXRoIC1lcSAnL2FwaS9zaHV0ZG93bicgLWFuZCAkTWV0aG9kIC1l
cSAnUE9TVCcpIHsKICAgICAgICAgICAgU2VuZC1Kc29uICRSZXNwb25zZSBAeyBvayA9ICR0cnVl
IH0KICAgICAgICAgICAgdHJ5IHsgJFJlc3BvbnNlLkNsb3NlKCkgfSBjYXRjaCB7fQogICAgICAg
ICAgICAkc2NyaXB0OlNodXRkb3duUGVuZGluZyA9IEdldC1EYXRlCiAgICAgICAgICAgIFdyaXRl
LUhvc3QgIiAgUE9TVCAvYXBpL3NodXRkb3duIC0gR25hZGVuZnJpc3QgZ2VzdGFydGV0ICgkKCRz
Y3JpcHQ6U2h1dGRvd25HcmFjZVNlYylzLCB3aXJkIGJlaSBIZWFydGJlYXQgYWJnZWJyb2NoZW4p
IiAtRm9yZWdyb3VuZENvbG9yIFllbGxvdwogICAgICAgICAgICBjb250aW51ZQogICAgICAgIH0K
CiAgICAgICAgIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09CiAgICAgICAgIyBTdGF0aXNjaGUgRGF0ZWllbiAobWl0IENhY2hlIGZ1
ZXIgaGFldWZpZyBnZWxhZGVuZSBEYXRlaWVuKQogICAgICAgICMgPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKICAgICAgICBpZiAo
JFVybFBhdGggLWVxICcvJykgeyAkVXJsUGF0aCA9ICcvaW5kZXguaHRtbCcgfQogICAgICAgICRV
cmxQYXRoID0gW1N5c3RlbS5VcmldOjpVbmVzY2FwZURhdGFTdHJpbmcoJFVybFBhdGgpCiAgICAg
ICAgIyBQYXRoLVRyYXZlcnNhbC1TY2h1dHo6IFJlc29sdmUtU2FmZVBhdGggcHJ1ZWZ0IENvbnRh
aW5tZW50IGltIFJvb3QtVmVyemVpY2huaXMKICAgICAgICAkRmlsZVBhdGggPSBSZXNvbHZlLVNh
ZmVQYXRoICgkVXJsUGF0aC5UcmltU3RhcnQoJy8nKSkKCiAgICAgICAgdHJ5IHsKICAgICAgICAg
ICAgaWYgKCRGaWxlUGF0aCAtYW5kIChUZXN0LVBhdGggJEZpbGVQYXRoIC1QYXRoVHlwZSBMZWFm
KSkgewogICAgICAgICAgICAgICAgJEV4dGVuc2lvbiA9IFtJTy5QYXRoXTo6R2V0RXh0ZW5zaW9u
KCRGaWxlUGF0aCkuVG9Mb3dlcigpCiAgICAgICAgICAgICAgICAkQ29udGVudFR5cGUgPSAkTWlt
ZVR5cGVzWyRFeHRlbnNpb25dCiAgICAgICAgICAgICAgICBpZiAoLW5vdCAkQ29udGVudFR5cGUp
IHsgJENvbnRlbnRUeXBlID0gJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbScgfQoKICAgICAgICAg
ICAgICAgICRSZXNwb25zZS5Db250ZW50VHlwZSA9ICRDb250ZW50VHlwZQogICAgICAgICAgICAg
ICAgJFJlc3BvbnNlLlN0YXR1c0NvZGUgPSAyMDAKICAgICAgICAgICAgICAgIEFkZC1TZWN1cml0
eUhlYWRlcnMgJFJlc3BvbnNlCgogICAgICAgICAgICAgICAgIyBDYWNoZSBmdWVyIHN0YXRpc2No
ZSBEYXRlaWVuIChpbmRleC5odG1sLCBDU1MsIEpTLCBKU09OKQogICAgICAgICAgICAgICAgJEJ5
dGVzID0gJG51bGwKICAgICAgICAgICAgICAgICRGaWxlTGFzdFdyaXRlID0gKEdldC1JdGVtICRG
aWxlUGF0aCAtRm9yY2UpLkxhc3RXcml0ZVRpbWVVdGMKICAgICAgICAgICAgICAgIGlmICgkc2Ny
aXB0OlN0YXRpY0NhY2hlLkNvbnRhaW5zS2V5KCRGaWxlUGF0aCkpIHsKICAgICAgICAgICAgICAg
ICAgICAkY2FjaGVkID0gJHNjcmlwdDpTdGF0aWNDYWNoZVskRmlsZVBhdGhdCiAgICAgICAgICAg
ICAgICAgICAgaWYgKCRjYWNoZWQuTW9kaWZpZWQgLWdlICRGaWxlTGFzdFdyaXRlKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICRCeXRlcyA9ICRjYWNoZWQuQnl0ZXMKICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoLW5vdCAkQnl0ZXMp
IHsKICAgICAgICAgICAgICAgICAgICAkQnl0ZXMgPSBbSU8uRmlsZV06OlJlYWRBbGxCeXRlcygk
RmlsZVBhdGgpCiAgICAgICAgICAgICAgICAgICAgaWYgKCRFeHRlbnNpb24gLW1hdGNoICdeXC4o
aHRtbHxjc3N8anN8anNvbnxzdmd8aWNvKSQnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRz
Y3JpcHQ6U3RhdGljQ2FjaGVbJEZpbGVQYXRoXSA9IEB7IEJ5dGVzID0gJEJ5dGVzOyBNb2RpZmll
ZCA9ICRGaWxlTGFzdFdyaXRlIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAkUmVzcG9uc2UuQ29udGVudExlbmd0aDY0ID0gJEJ5dGVzLkxl
bmd0aAogICAgICAgICAgICAgICAgJFJlc3BvbnNlLk91dHB1dFN0cmVhbS5Xcml0ZSgkQnl0ZXMs
IDAsICRCeXRlcy5MZW5ndGgpCiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAk
UmVzcG9uc2UuU3RhdHVzQ29kZSA9IDQwNAogICAgICAgICAgICAgICAgJE5vdEZvdW5kID0gW1Rl
eHQuRW5jb2RpbmddOjpVVEY4LkdldEJ5dGVzKCI0MDQgLSBEYXRlaSBuaWNodCBnZWZ1bmRlbjog
JFVybFBhdGgiKQogICAgICAgICAgICAgICAgJFJlc3BvbnNlLkNvbnRlbnRUeXBlID0gJ3RleHQv
cGxhaW47IGNoYXJzZXQ9dXRmLTgnCiAgICAgICAgICAgICAgICAkUmVzcG9uc2UuQ29udGVudExl
bmd0aDY0ID0gJE5vdEZvdW5kLkxlbmd0aAogICAgICAgICAgICAgICAgJFJlc3BvbnNlLk91dHB1
dFN0cmVhbS5Xcml0ZSgkTm90Rm91bmQsIDAsICROb3RGb3VuZC5MZW5ndGgpCiAgICAgICAgICAg
ICAgICBXcml0ZS1Ib3N0ICIgIDQwNCAgJFVybFBhdGgiIC1Gb3JlZ3JvdW5kQ29sb3IgUmVkCiAg
ICAgICAgICAgIH0KICAgICAgICB9IGNhdGNoIHsKICAgICAgICAgICAgV3JpdGUtSG9zdCAiICBF
UlIgIERhdGVpICRVcmxQYXRoICAkKCRfLkV4Y2VwdGlvbi5NZXNzYWdlKSIgLUZvcmVncm91bmRD
b2xvciBSZWQKICAgICAgICB9CiAgICAgICAgdHJ5IHsgJFJlc3BvbnNlLkNsb3NlKCkgfSBjYXRj
aCB7fQogICAgfQp9IGNhdGNoIHsKICAgICMgU3RyZytDIG9kZXIgRmVobGVyCn0gZmluYWxseSB7
CiAgICAkTGlzdGVuZXIuU3RvcCgpCgogICAgIyBTY2hyZWlic2NodXR6IGJlaW0gQmVlbmRlbiB3
aWVkZXIgc2V0emVuCiAgICBXcml0ZS1Ib3N0ICIgIFNjaHJlaWJzY2h1dHogd2lyZCB3aWVkZXJo
ZXJnZXN0ZWxsdC4uLiIgLUZvcmVncm91bmRDb2xvciBHcmF5CiAgICBHZXQtQ2hpbGRJdGVtICIk
Um9vdFxkYXRhIiAtUmVjdXJzZSAtRmlsdGVyICIqLmpzb24iIC1FcnJvckFjdGlvbiBTaWxlbnRs
eUNvbnRpbnVlIHwgRm9yRWFjaC1PYmplY3QgeyBQcm90ZWN0LUZpbGUgJF8uRnVsbE5hbWUgfQog
ICAgUHJvdGVjdC1GaWxlIChKb2luLVBhdGggJFJvb3QgImluZGV4Lmh0bWwiKQoKICAgICMgTG9r
YWxlIFRFTVAtS29waWUgYXVmcmFldW1lbiAodmVyaGluZGVydCB2ZXJ3YWlzdGUgRGF0ZWllbikK
ICAgICRUZW1wRGlyID0gSm9pbi1QYXRoICRlbnY6VEVNUCAiRFJJVkVfU2VydmVyIgogICAgaWYg
KFRlc3QtUGF0aCAkVGVtcERpcikgewogICAgICAgIFJlbW92ZS1JdGVtICRUZW1wRGlyIC1SZWN1
cnNlIC1Gb3JjZSAtRXJyb3JBY3Rpb24gU2lsZW50bHlDb250aW51ZQogICAgICAgIFdyaXRlLUhv
c3QgIiAgVEVNUC1Lb3BpZSBiZXJlaW5pZ3QuIiAtRm9yZWdyb3VuZENvbG9yIEdyYXkKICAgIH0K
CiAgICBXcml0ZS1Ib3N0ICIiCiAgICBXcml0ZS1Ib3N0ICJTZXJ2ZXIgYmVlbmRldC4iIC1Gb3Jl
Z3JvdW5kQ29sb3IgWWVsbG93Cn0K