Content-Type: multipart/related; start=; boundary=----------JxuqZ6nLgOmBPtWaPDKENk
Content-Location: http://community.livejournal.com/bad_rpers_suck/6680158.html?view=120649054
Subject: =?utf-8?Q?bad=5Frpers=5Fsuck:=20You=20plagiarising=20bitches?=
MIME-Version: 1.0
------------JxuqZ6nLgOmBPtWaPDKENk
Content-Disposition: inline; filename=6680158.html
Content-Type: text/html; charset=utf-8; name=6680158.html
Content-Id:
Content-Location: http://community.livejournal.com/bad_rpers_suck/6680158.html?view=120649054
Content-Transfer-Encoding: Base64
PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJh
bnNpdGlvbmFsLy9FTiIKImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQv
eGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPgo8aHRtbCB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94aHRtbCIgbGFuZz0iZW4iIHhtbDpsYW5nPSJlbiI+CiAg
ICA8IS0tIExpdmVKb3VybmFsIEV4cHJlc3NMYW5lOiBZb3UgcmVjZWl2ZWQgdGhp
cyBwYWdlIGJlZm9yZSA2MCBmcmVlIHVzZXJzLCBzYXZpbmcgYXBwcm94aW1hdGVs
eSAxIHNlY29uZHMhIC0tPgoKICAgIDxoZWFkPgogICAgPG1ldGEgaHR0cC1lcXVp
dj0iWC1VQS1Db21wYXRpYmxlIiBjb250ZW50PSJJRT03Ii8+CiAgICA8bWV0YSBo
dHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hh
cnNldD11dGYtOCIgLz4KICAgIDx0aXRsZT5iYWRfcnBlcnNfc3VjazogWW91IHBs
YWdpYXJpc2luZyBiaXRjaGVzPC90aXRsZT4KICAgIAogICAgICAgIAoKICAgIDxz
Y3JpcHQ+CiAgICAKICAgIDwvc2NyaXB0PgogICAgCiAgICAgICAgPHNjcmlwdCB0
eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogICAgICAgICAgICB2YXIgU2l0ZTsKICAg
ICAgICAgICAgaWYgKCFTaXRlKQogICAgICAgICAgICAgICAgU2l0ZSA9IHt9OwoK
ICAgICAgICAgICAgdmFyIHNpdGVfcCA9IHsibWVkaWFfZW1iZWRfZW5hYmxlZCI6
IDEsCiJpbmJveF91cGRhdGVfcG9sbCI6IDAsCiJoYXNfcmVtb3RlIjogMSwKInN0
YXRwcmVmaXgiOiAiaHR0cDovL2wtc3RhdC5saXZlam91cm5hbC5jb20iLAoiY3R4
X3BvcHVwIjogMSwKImltZ3ByZWZpeCI6ICJodHRwOi8vbC1zdGF0LmxpdmVqb3Vy
bmFsLmNvbS9pbWciLAoiZXNuX2FzeW5jIjogMSwKImN1cnJlbnRKb3VybmFsIjog
ImJhZF9ycGVyc19zdWNrIiwKInNpdGVyb290IjogImh0dHA6Ly93d3cubGl2ZWpv
dXJuYWwuY29tIiwKImN1cnJlbnRKb3VybmFsQmFzZSI6ICJodHRwOi8vY29tbXVu
aXR5LmxpdmVqb3VybmFsLmNvbS9iYWRfcnBlcnNfc3VjayJ9OwogICAgICAgICAg
ICB2YXIgc2l0ZV9rID0gWyJtZWRpYV9lbWJlZF9lbmFibGVkIiwgImluYm94X3Vw
ZGF0ZV9wb2xsIiwgImhhc19yZW1vdGUiLCAic3RhdHByZWZpeCIsICJjdHhfcG9w
dXAiLCAiaW1ncHJlZml4IiwgImVzbl9hc3luYyIsICJjdXJyZW50Sm91cm5hbCIs
ICJzaXRlcm9vdCIsICJjdXJyZW50Sm91cm5hbEJhc2UiXTsKICAgICAgICAgICAg
Zm9yICh2YXIgaSA9IDA7IHNpdGVfay5sZW5ndGggPiBpOyBpKyspIHsKICAgICAg
ICAgICAgICAgIFNpdGVbc2l0ZV9rW2ldXSA9IHNpdGVfcFtzaXRlX2tbaV1dOwog
ICAgICAgICAgICB9CiAgICAgICA8L3NjcmlwdD4KICAgIDxzY3JpcHQgdHlwZT0i
dGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHA6Ly9sLXN0YXQubGl2ZWpvdXJuYWwu
Y29tL2pzLz8/Y29yZS5qcyxkb20uanMsaHR0cHJlcS5qcyxsaXZlam91cm5hbC5q
cyxjb21tb24vQWRFbmdpbmUuanMsZXNuLmpzLGlwcHUuanMsbGpfaXBwdS5qcyxo
b3VyZ2xhc3MuanMsY29udGV4dHVhbGhvdmVyLmpzLHRocmVhZF9leHBhbmRlci5q
cyxqc29uLmpzLHRlbXBsYXRlLmpzLHVzZXJwaWNzZWxlY3QuanMsaW5wdXRjb21w
bGV0ZS5qcyxkYXRhc291cmNlLmpzLHNlbGVjdGFibGVfdGFibGUuanMseF9jb3Jl
LmpzLHF1aWNrcmVwbHkuanMsY29tbWVudG1hbmFnZS5qcyxob3Jpem9uLmpzLGxp
dmVqb3VybmFsLWxvY2FsLmpzP3Y9MTIzNzg0OTU4OCI+PC9zY3JpcHQ+CjxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Imh0dHA6Ly9s
LXN0YXQubGl2ZWpvdXJuYWwuY29tLz8/bGpfYmFzZS5jc3MsZXNuLmNzcyxjb250
ZXh0dWFsaG92ZXIuY3NzLHVwcy5jc3MsbGpfYmFzZS1hcHAuY3NzLGFkX2Jhc2Uu
Y3NzLGhvcml6b24vc2NyZWVuLmNzcyxob3Jpem9uL2xheW91dC5jc3Msd2lkZ2V0
LmNzcyxob3Jpem9uL2hvcml6b250YWwuY3NzP3Y9MTIzNjgxMDk0MCIgLz4KCiAg
ICA8bGluayByZWw9ImhvbWUiIHRpdGxlPSJIb21lIiBocmVmPSJodHRwOi8vd3d3
LmxpdmVqb3VybmFsLmNvbS8iIC8+CiAgICA8bGluayByZWw9ImNvbnRlbnRzIiB0
aXRsZT0iU2l0ZSBNYXAiIGhyZWY9Imh0dHA6Ly93d3cubGl2ZWpvdXJuYWwuY29t
L3NpdGUvIiAvPgogICAgPGxpbmsgcmVsPSJoZWxwIiB0aXRsZT0iVGVjaG5pY2Fs
IFN1cHBvcnQiIGhyZWY9Imh0dHA6Ly93d3cubGl2ZWpvdXJuYWwuY29tL3N1cHBv
cnQvIiAvPgogICAgPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uIiBocmVmPSJo
dHRwOi8vbC1zdGF0LmxpdmVqb3VybmFsLmNvbS9pbWcvYXBwbGUtdG91Y2gtaWNv
bi5wbmciIC8+CiAgICA8bWV0YSBuYW1lPSJyb2JvdHMiIGNvbnRlbnQ9Im5vaW5k
ZXgsIG5vZm9sbG93LCBub2FyY2hpdmUiIC8+CjxtZXRhIG5hbWU9Imdvb2dsZWJv
dCIgY29udGVudD0ibm9pbmRleCwgbm9mb2xsb3csIG5vYXJjaGl2ZSwgbm9zbmlw
cGV0IiAvPgo8bGluayBocmVmPSdodHRwOi8vd3d3LmxpdmVqb3VybmFsLmNvbS9n
by5ibWw/am91cm5hbD1iYWRfcnBlcnNfc3VjayZhbXA7aXRlbWlkPTY2ODAxNTgm
YW1wO2Rpcj1wcmV2JyByZWw9J1ByZXZpb3VzJyAvPgo8bGluayBocmVmPSdodHRw
Oi8vd3d3LmxpdmVqb3VybmFsLmNvbS9nby5ibWw/am91cm5hbD1iYWRfcnBlcnNf
c3VjayZhbXA7aXRlbWlkPTY2ODAxNTgmYW1wO2Rpcj1uZXh0JyByZWw9J05leHQn
IC8+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij52YXIgTEpfY210aW5m
byA9IHsiMTIwNjQ4Nzk4IjogeyJ1IjogInRoZXNvdXJncm92ZSIsCiJyYyI6IFtd
LAoiZnVsbCI6IDF9LAoiMTIwNjQ4Mjg2IjogeyJ1IjogInRoZXNvdXJncm92ZSIs
CiJyYyI6IFtdLAoiZnVsbCI6IDF9LAoiMTIwNjQ3MDA2IjogeyJ1IjogInRoZXNv
dXJncm92ZSIsCiJyYyI6IFsxMjA2NDc3NzQsIDEyMDY0ODAzMF0sCiJmdWxsIjog
MX0sCiIxMjA2NDkwNTQiOiB7InUiOiAiYmVhcmRlZHRyb2xsIiwKInJjIjogW10s
CiJmdWxsIjogMX0sCiIxMjA2NDY0OTQiOiB7InUiOiAiY2VsZXN0aW5lYW5nZWwi
LAoicmMiOiBbMTIwNjQ3MDA2XSwKImZ1bGwiOiAxfSwKIjEyMDY0NzI2MiI6IHsi
dSI6ICJ0aGVzb3VyZ3JvdmUiLAoicmMiOiBbXSwKImZ1bGwiOiAxfSwKInJlbW90
ZSI6ICJiZWFyZGVkdHJvbGwiLAoiMTIwNjQ4MDMwIjogeyJ1IjogInRlbnNoaW5v
ZnVzaGlnaSIsCiJyYyI6IFsxMjA2NDg1NDJdLAoiZnVsbCI6IDF9LAoiMTIwNjQ0
OTU4IjogeyJ1IjogInRoZXNvdXJncm92ZSIsCiJyYyI6IFsxMjA2NDUyMTRdLAoi
ZnVsbCI6IDF9LAoiMTIwNjQ2NzUwIjogeyJ1IjogInRlbnNoaW5vZnVzaGlnaSIs
CiJyYyI6IFsxMjA2NDcyNjJdLAoiZnVsbCI6IDF9LAoiam91cm5hbCI6ICJiYWRf
cnBlcnNfc3VjayIsCiJjYW5BZG1pbiI6IDAsCiJmb3JtX2F1dGgiOiAiYzA6MTIz
ODQ0MzIwMDoxODA2Ojg2NDAwOjF2Wm8zZlFXSlctMzU4MTM1NC00MzI6NjIyMjhh
OTU2N2RhMGJmNDhkYmM1ZGI2NmZlYTM1YzIiLAoiMTIwNjQ3Nzc0IjogeyJ1Ijog
InRlbnNoaW5vZnVzaGlnaSIsCiJyYyI6IFsxMjA2NDgyODZdLAoiZnVsbCI6IDF9
LAoiMTIwNjQ1NzI2IjogeyJ1IjogInRoZXNvdXJncm92ZSIsCiJyYyI6IFsxMjA2
NDY0OTQsIDEyMDY0Njc1MF0sCiJmdWxsIjogMX0sCiIxMjA2NDc1MTgiOiB7InUi
OiAiYmVhcmRlZHRyb2xsIiwKInJjIjogWzEyMDY0ODc5OF0sCiJmdWxsIjogMX0s
CiIxMjA2NDg1NDIiOiB7InUiOiAidGhlc291cmdyb3ZlIiwKInJjIjogW10sCiJm
dWxsIjogMX0sCiIxMjA2NDUyMTQiOiB7InUiOiAidGVuc2hpbm9mdXNoaWdpIiwK
InJjIjogWzEyMDY0NTcyNiwgMTIwNjQ5MDU0XSwKImZ1bGwiOiAxfX07CmZ1bmN0
aW9uIHVzZXJob29rX3NjcmVlbl9jb21tZW50X0FSRyAoZElpZCkgeyBzZXRTdHls
ZSgnY210YmFyJytkSWlkLCAnYmFja2dyb3VuZCcsICIjY2NjY2NjIik7IH0KZnVu
Y3Rpb24gdXNlcmhvb2tfdW5zY3JlZW5fY29tbWVudF9BUkcgKGRJaWQpIHsgc2V0
U3R5bGUoJ2NtdGJhcicrZElpZCwgJ2JhY2tncm91bmQnLCAiI2JiZGRmZiIpOyB9
Cjwvc2NyaXB0PgoKICAgIDwhLS1baWYgbHQgSUUgN10+CiAgICAgICAgPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iaHR0cDovL2wt
c3RhdC5saXZlam91cm5hbC5jb20vbGpfYmFzZS1pZS5jc3MiIC8+CiAgICAgICAg
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iaHR0
cDovL2wtc3RhdC5saXZlam91cm5hbC5jb20vaG9yaXpvbi9pZS5jc3MiIC8+CiAg
ICA8IVtlbmRpZl0tLT4KICA8L2hlYWQ+CgoKICAgIDxib2R5IGNsYXNzPSdsb2dn
ZWQtaW4nID4KICAgIDxkaXYgaWQ9ImJpZy1jb250ZW50LXdyYXBwZXIiPgogICAg
PGRpdiBpZD0iY29udGVudCI+CiAgICAKICAgIDxkaXYgaWQ9ImNvbnRlbnQtaW5u
ZXIiPgogICAgICAKICAgICAgCgogICAgICAKICAgICAgCgogICAgICAKCiAgICAg
IAogICAgICA8aDEgY2xhc3M9J2xvZ2dlZC1pbic+PC9oMT4KCiAgICAgIDxkaXYg
aWQ9J2NvbnRlbnQtd3JhcHBlcicgY2xhc3M9Jycgc3R5bGU9J21hcmdpbi1yaWdo
dDogOyBoZWlnaHQ6IDElJz4KICAgICAgICAKCiAgICAgICAgCgogICAgICAgIDwh
LS0gQ29udGVudCAtLT4KICAgICAgICA8cD48dGFibGU+PHRyIHZhbGlnbj0nbWlk
ZGxlJz48dGQ+PGltZyBzcmM9J2h0dHA6Ly9sLXVzZXJwaWMubGl2ZWpvdXJuYWwu
Y29tLzc4NzA2ODAxLzYyNjgyNTgnIHdpZHRoPScxMDAnIGhlaWdodD0nMTAwJyBh
bGlnbj0nYWJzbWlkZGxlJyBoc3BhY2U9JzMnIHRpdGxlPSdUaGUgcXVlZW4gb2Yg
dGhlIGltcHM6IGpva2VyIGNsYXAnIGFsdD0nJz48L3RkPjx0ZD5UaGUgcXVlZW4g
b2YgdGhlIGltcHMgKDxzcGFuIGNsYXNzPSdsanVzZXInIGxqOnVzZXI9J3RlbnNo
aW5vZnVzaGlnaScgc3R5bGU9J3doaXRlLXNwYWNlOiBub3dyYXA7Jz48YSBocmVm
PSdodHRwOi8vdGVuc2hpbm9mdXNoaWdpLmxpdmVqb3VybmFsLmNvbS9wcm9maWxl
Jz48aW1nIHNyYz0naHR0cDovL2wtc3RhdC5saXZlam91cm5hbC5jb20vaW1nL3Vz
ZXJpbmZvLmdpZicgYWx0PSdbaW5mb10nIHdpZHRoPScxNycgaGVpZ2h0PScxNycg
c3R5bGU9J3ZlcnRpY2FsLWFsaWduOiBib3R0b207IGJvcmRlcjogMDsgcGFkZGlu
Zy1yaWdodDogMXB4OycgLz48L2E+PGEgaHJlZj0naHR0cDovL3RlbnNoaW5vZnVz
aGlnaS5saXZlam91cm5hbC5jb20vJz48Yj50ZW5zaGlub2Z1c2hpZ2k8L2I+PC9h
Pjwvc3Bhbj4pIHNrcmVpdiBpIDxzcGFuIGNsYXNzPSdsanVzZXInIGxqOnVzZXI9
J2JhZF9ycGVyc19zdWNrJyBzdHlsZT0nd2hpdGUtc3BhY2U6IG5vd3JhcDsnPjxh
IGhyZWY9J2h0dHA6Ly9jb21tdW5pdHkubGl2ZWpvdXJuYWwuY29tL2JhZF9ycGVy
c19zdWNrL3Byb2ZpbGUnPjxpbWcgc3JjPSdodHRwOi8vbC1zdGF0LmxpdmVqb3Vy
bmFsLmNvbS9pbWcvY29tbXVuaXR5LmdpZicgYWx0PSdbaW5mb10nIHdpZHRoPScx
NicgaGVpZ2h0PScxNicgc3R5bGU9J3ZlcnRpY2FsLWFsaWduOiBib3R0b207IGJv
cmRlcjogMDsgcGFkZGluZy1yaWdodDogMXB4OycgLz48L2E+PGEgaHJlZj0naHR0
cDovL2NvbW11bml0eS5saXZlam91cm5hbC5jb20vYmFkX3JwZXJzX3N1Y2svJz48
Yj5iYWRfcnBlcnNfc3VjazwvYj48L2E+PC9zcGFuPiw8YnIgLz48Zm9udCBzaXpl
PSctMSc+QCA8YSBocmVmPSJodHRwOi8vY29tbXVuaXR5LmxpdmVqb3VybmFsLmNv
bS9iYWRfcnBlcnNfc3Vjay8yMDA5LyI+MjAwOTwvYT4tPGEgaHJlZj0iaHR0cDov
L2NvbW11bml0eS5saXZlam91cm5hbC5jb20vYmFkX3JwZXJzX3N1Y2svMjAwOS8w
My8iPjAzPC9hPi08YSBocmVmPSJodHRwOi8vY29tbXVuaXR5LmxpdmVqb3VybmFs
LmNvbS9iYWRfcnBlcnNfc3Vjay8yMDA5LzAzLzMwLyI+MzA8L2E+IDE2OjAzOjAw
PC9mb250PjwvdGQ+PC90cj48L3RhYmxlPjxkaXYgY2xhc3M9InN0YW5kb3V0Ij48
dGFibGUgY2xhc3M9ImNvbnRhaW5lciI+PHRyPjx0ZD4KPHRhYmxlPjx0cj48dGQg
dmFsaWduPSdtaWRkbGUnPjxhIGhyZWY9Imh0dHA6Ly93d3cubGl2ZWpvdXJuYWwu
Y29tL2dvLmJtbD9qb3VybmFsPWJhZF9ycGVyc19zdWNrJmFtcDtpdGVtaWQ9NjY4
MDE1OCZhbXA7ZGlyPXByZXYiPjxpbWcgc3JjPSJodHRwOi8vbC1zdGF0LmxpdmVq
b3VybmFsLmNvbS9pbWcvYnRuX3ByZXYuZ2lmIiB3aWR0aD0iMjIiIGhlaWdodD0i
MjAiIGFsdD0iUHJldmlvdXMgRW50cnkiIHRpdGxlPSJQcmV2aW91cyBFbnRyeSIg
Ym9yZGVyPScwJyBhbGlnbj0iYWJzbWlkZGxlIiAvPjwvYT4mbmJzcDsmbmJzcDs8
YSBocmVmPSJodHRwOi8vd3d3LmxpdmVqb3VybmFsLmNvbS90b29scy9tZW1hZGQu
Ym1sP2pvdXJuYWw9YmFkX3JwZXJzX3N1Y2smYW1wO2l0ZW1pZD02NjgwMTU4Ij48
aW1nIHNyYz0iaHR0cDovL2wtc3RhdC5saXZlam91cm5hbC5jb20vaW1nL21lbWFk
ZC5naWYiIHdpZHRoPSIyMiIgaGVpZ2h0PSIyMCIgYWx0PSJBZGQgdG8gbWVtb3Jp
ZXMhIiB0aXRsZT0iQWRkIHRvIG1lbW9yaWVzISIgYm9yZGVyPScwJyBhbGlnbj0i
YWJzbWlkZGxlIiAvPjwvYT4mbmJzcDsmbmJzcDs8YSBocmVmPSJodHRwOi8vd3d3
LmxpdmVqb3VybmFsLmNvbS90b29scy90ZWxsYWZyaWVuZC5ibWw/am91cm5hbD1i
YWRfcnBlcnNfc3VjayZhbXA7aXRlbWlkPTY2ODAxNTgiPjxpbWcgc3JjPSJodHRw
Oi8vbC1zdGF0LmxpdmVqb3VybmFsLmNvbS9pbWcvYnRuX3RlbGxmcmllbmQuZ2lm
IiB3aWR0aD0iMjIiIGhlaWdodD0iMjAiIGFsdD0iVGVsbCBhIEZyaWVuZCEiIHRp
dGxlPSJUZWxsIGEgRnJpZW5kISIgYm9yZGVyPScwJyBhbGlnbj0iYWJzbWlkZGxl
IiAvPjwvYT4mbmJzcDsmbmJzcDs8YSBocmVmPSJodHRwOi8vd3d3LmxpdmVqb3Vy
bmFsLmNvbS9tYW5hZ2Uvc3Vic2NyaXB0aW9ucy9lbnRyeS5ibWw/am91cm5hbD1i
YWRfcnBlcnNfc3VjayZhbXA7aXRlbWlkPTY2ODAxNTgiPjxpbWcgc3JjPSJodHRw
Oi8vbC1zdGF0LmxpdmVqb3VybmFsLmNvbS9pbWcvYnRuX3RyYWNrLmdpZiIgd2lk
dGg9IjIyIiBoZWlnaHQ9IjIwIiBhbHQ9IlRyYWNrIFRoaXMiIHRpdGxlPSJUcmFj
ayBUaGlzIiBib3JkZXI9JzAnIGFsaWduPSJhYnNtaWRkbGUiIC8+PC9hPiZuYnNw
OyZuYnNwOzxhIGhyZWY9Imh0dHA6Ly93d3cubGl2ZWpvdXJuYWwuY29tL3Rvb2xz
L2NvbnRlbnRfZmxhZy5ibWw/dXNlcj1iYWRfcnBlcnNfc3VjayZpdGVtaWQ9NjY4
MDE1OCI+PGltZyBzcmM9Imh0dHA6Ly9sLXN0YXQubGl2ZWpvdXJuYWwuY29tL2lt
Zy9idXR0b24tZmxhZy5naWYiIHdpZHRoPSIyMiIgaGVpZ2h0PSIyMCIgYWx0PSJG
bGFnIiB0aXRsZT0iRmxhZyIgYm9yZGVyPScwJyBhbGlnbj0iYWJzbWlkZGxlIiAv
PjwvYT4mbmJzcDsmbmJzcDs8YSBocmVmPSJodHRwOi8vd3d3LmxpdmVqb3VybmFs
LmNvbS9nby5ibWw/am91cm5hbD1iYWRfcnBlcnNfc3VjayZhbXA7aXRlbWlkPTY2
ODAxNTgmYW1wO2Rpcj1uZXh0Ij48aW1nIHNyYz0iaHR0cDovL2wtc3RhdC5saXZl
am91cm5hbC5jb20vaW1nL2J0bl9uZXh0LmdpZiIgd2lkdGg9IjIyIiBoZWlnaHQ9
IjIwIiBhbHQ9Ik5leHQgRW50cnkiIHRpdGxlPSJOZXh0IEVudHJ5IiBib3JkZXI9
JzAnIGFsaWduPSJhYnNtaWRkbGUiIC8+PC9hPjwvdGQ+PC90cj48L3RhYmxlPgo8
L3RkPjwvdHI+PC90YWJsZT48L2Rpdj4KPGRpdiBzdHlsZT0nbWFyZ2luLWxlZnQ6
IDMwcHgnPjxmb250IGZhY2U9J0FyaWFsLEhlbHZldGljYScgc2l6ZT0nKzEnPjxp
PjxiPllvdSBwbGFnaWFyaXNpbmcgYml0Y2hlczwvYj48L2k+PC9mb250PjxiciAv
PgpTby4gIEluIFNlcHRlbWJlciwgbXkgZnJpZW5kIGFuZCBJIGZvcm1lZCBhIEhh
cnJ5IFBvdHRlciBnYW1lIHRoYXQgcmV2b2x2ZWQgYXJvdW5kIGFuIGFsdGVybmF0
ZSBmdXR1cmUgd2hlcmUgVm9sZGVtb3J0IHRvb2sgb3ZlciB3aGVuIHRoZSBldmVu
dHMgYXQgR29kcmljJ3MgSG9sbG93IHdlbnQgZGlmZmVyZW50bHkgYmVjYXVzZSBI
YXJyeSBkaWVkIGFuZCBKYW1lcyBkaWRuJ3QsIHNldCBpbiAxOTk4LTE5OTkuICBJ
dCdzIGNhbGxlZCA8c3BhbiBjbGFzcz0nbGp1c2VyJyBsajp1c2VyPSdpZl93ZV9s
b3N0JyBzdHlsZT0nd2hpdGUtc3BhY2U6IG5vd3JhcDsnPjxhIGhyZWY9J2h0dHA6
Ly9jb21tdW5pdHkubGl2ZWpvdXJuYWwuY29tL2lmX3dlX2xvc3QvcHJvZmlsZSc+
PGltZyBzcmM9J2h0dHA6Ly9sLXN0YXQubGl2ZWpvdXJuYWwuY29tL2ltZy9jb21t
dW5pdHkuZ2lmJyBhbHQ9J1tpbmZvXScgd2lkdGg9JzE2JyBoZWlnaHQ9JzE2JyBz
dHlsZT0ndmVydGljYWwtYWxpZ246IGJvdHRvbTsgYm9yZGVyOiAwOyBwYWRkaW5n
LXJpZ2h0OiAxcHg7JyAvPjwvYT48YSBocmVmPSdodHRwOi8vY29tbXVuaXR5Lmxp
dmVqb3VybmFsLmNvbS9pZl93ZV9sb3N0Lyc+PGI+aWZfd2VfbG9zdDwvYj48L2E+
PC9zcGFuPi4gIEl0J3MgYmVlbiBydW5uaW5nIGV2ZXIgc2luY2UuPGJyIC8+PGJy
IC8+UmVjZW50bHksIHR3byBwbGF5ZXJzIGhhdmUgZHJvcHBlZCBvdXQsIGNsYWlt
aW5nIHRoYXQgUkwgaGFkIGVhdGVuIHVwIGFsbCB0aGVpciB0aW1lIGFuZCBSUCBq
dXN0IGNvdWxkbid0IGZpdCBpbiBhbnltb3JlLiAgQSB0aGlyZCBwbGF5ZXIgaGFz
IHNwb2tlbiBvZiBob3cgc2hlJ3MgY29uc2lkZXJpbmcgaXQuICBBbGwgdGhyZWUg
d2VyZSBpbiBhIGNsb3NlIGxpdHRsZSBjbGlxdWUuPGJyIC8+PGJyIC8+Tm93LCBv
biB0aGUgUlBHIGFkIGNpcmN1aXQsIGlzIGFuIElKIGdhbWUgaW4gd2hpY2ggVm9s
ZGVtb3J0IHRvb2sgb3ZlciBiZWNhdXNlIEdvZHJpYydzIEhvbGxvdyB3ZW50IGRp
ZmZlcmVudGx5IGJlY2F1c2UgSGFycnkgZGllZCBhbmQgSmFtZXMgZGlkbid0LCBz
ZXQgaW4gMTk5OS4gIERvZXNuJ3QgbmVjZXNzYXJpbHkgbWVhbiB0aGV5IHJpcHBl
ZCB1cyBvZmYsIGNvdWxkIGhhdmUganVzdCBiZWVuIGEgY29pbmNpZGVuY2UuPGJy
IC8+PGJyIC8+RXhjZXB0IHRoaXM6IGEgbG90IG9mIHRoZSB3b3JkcyBmcm9tIHRo
ZSBnYW1lIGRlc2NyaXB0aW9uIG1hdGNoIHVwIGV4YWN0bHkuICBUaGUgd29yZHMg
dGhlbXNlbHZlcyB3ZXJlIHdyaXR0ZW4gYnkgdGhlIHRoaXJkIHBsYXllciwgdGhl
IG9uZSB3aG8gaGFzbid0IHF1aXRlIHF1aXQgeWV0LCBidXQgbWFueSBvZiB0aGUg
aWRlYXMgd2VyZSBvdXJzIHRvIGJlZ2luIHdpdGgsIGxpa2UgbWFya2luZyBibG9v
ZCB0cmFpdG9ycyB3aXRoIG1hcmtzIG9uIHRoZWlyIGhhbmRzLjxiciAvPjxiciAv
PlNvLjxiciAvPjxiciAvPlRvIHRob3NlIHRocmVlIHBsYXllcnM6ICBuaWNlIHRv
IHNlZSB0aGF0IHJlYWwgbGlmZSB3YXNuJ3QgZWF0aW5nIHVwIHNvIG11Y2ggb2Yg
eW91ciB0aW1lIHRoYXQgeW91IGNvdWxkbid0IGZvcm0gYSBuZXcgZ2FtZSEgIFdp
dGggYSBwcmVtaXNlIHlvdSBSSVBQRUQgT0ZGIEZST00gVVMuPGJyIC8+PGJyIC8+
QW5kIGhleSwgbWF5YmUgdGhpcyBvbmUgd29uJ3QgdGFuayBpbiB0d28gbW9udGhz
IGxpa2UgeW91ciBsYXN0IG9uZSE8L2Rpdj48YnIgc3R5bGU9J2NsZWFyOiBib3Ro
JyAvPjxociB3aWR0aD0nMTAwJScgc2l6ZT0nMicgYWxpZ249J2NlbnRlcicgLz48
ZGl2IGlkPSdDb21tZW50cyc+PGEgbmFtZT0nY29tbWVudHMnPjwvYT48c2NyaXB0
IGxhbmd1YWdlPSdKYXZhU2NyaXB0Jz4KCiAgICAgICAgICAgICAgIHZhciBkZTsK
ICAgICAgICAgICAgICAgaWYgKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgJiYgZG9j
dW1lbnQuYm9keS5pbnNlcnRCZWZvcmUgJiYgISh4TWFjICYmIHhJRTRVcCkpIHsK
ICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LndyaXRlKCI8aW5wdXQgdHlwZT1c
J2hpZGRlblwnIG5hbWU9XCJzYXZlZF9zdWJqZWN0XCIgaWQ9XCJzYXZlZF9zdWJq
ZWN0XCIgLz48aW5wdXQgdHlwZT1cJ2hpZGRlblwnIG5hbWU9XCJzYXZlZF9ib2R5
XCIgaWQ9XCJzYXZlZF9ib2R5XCIgLz48aW5wdXQgdHlwZT1cJ2hpZGRlblwnIG5h
bWU9XCJzYXZlZF9zcGVsbFwiIGlkPVwic2F2ZWRfc3BlbGxcIiAvPjxpbnB1dCB0
eXBlPVwnaGlkZGVuXCcgbmFtZT1cInNhdmVkX3VwaWNcIiBpZD1cInNhdmVkX3Vw
aWNcIiAvPjxpbnB1dCB0eXBlPVwnaGlkZGVuXCcgbmFtZT1cInNhdmVkX2R0aWRc
IiBpZD1cInNhdmVkX2R0aWRcIiAvPjxpbnB1dCB0eXBlPVwnaGlkZGVuXCcgbmFt
ZT1cInNhdmVkX3B0aWRcIiBpZD1cInNhdmVkX3B0aWRcIiAvPiIpOwogICAgICAg
ICAgICAgICAgICAgZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsK
CiAgICAgICAgICAgICAgICAgICBpZiAoZGUpIHsKICAgICAgICAgICAgICAgICAg
ICAgICBkZS5pZCA9ICJxcmRpdiI7CiAgICAgICAgICAgICAgICAgICAgICAgZGUu
aW5uZXJIVE1MID0gIjxkaXYgaWQ9XCdxcmZvcm1kaXZcJz48Zm9ybSBpZD1cJ3Fy
Zm9ybVwnIG5hbWU9XCdxcmZvcm1cJyBtZXRob2Q9XCdQT1NUXCcgYWN0aW9uPVwn
aHR0cDovL3d3dy5saXZlam91cm5hbC5jb20vdGFsa3Bvc3RfZG8uYm1sXCc+PGlu
cHV0IHR5cGU9XCdoaWRkZW5cJyBuYW1lPVwibGpfZm9ybV9hdXRoXCIgdmFsdWU9
XCJjMDoxMjM4NDQzMjAwOjE4MDY6ODY0MDA6MXZabzNmUVdKVy0zNTgxMzU0LTQz
Mjo2MjIyOGE5NTY3ZGEwYmY0OGRiYzVkYjY2ZmVhMzVjMlwiIC8+PGlucHV0IHR5
cGU9XCdoaWRkZW5cJyBuYW1lPVwicmVwbHl0b1wiIHZhbHVlPVwiXCIgaWQ9XCJy
ZXBseXRvXCIgLz48aW5wdXQgdHlwZT1cJ2hpZGRlblwnIG5hbWU9XCJwYXJlbnR0
YWxraWRcIiB2YWx1ZT1cIlwiIGlkPVwicGFyZW50dGFsa2lkXCIgLz48aW5wdXQg
dHlwZT1cJ2hpZGRlblwnIG5hbWU9XCJqb3VybmFsXCIgdmFsdWU9XCJiYWRfcnBl
cnNfc3Vja1wiIGlkPVwiam91cm5hbFwiIC8+PGlucHV0IHR5cGU9XCdoaWRkZW5c
JyBuYW1lPVwiaXRlbWlkXCIgdmFsdWU9XCI2NjgwMTU4XCIgaWQ9XCJpdGVtaWRc
IiAvPjxpbnB1dCB0eXBlPVwnaGlkZGVuXCcgbmFtZT1cInVzZXJ0eXBlXCIgdmFs
dWU9XCJjb29raWV1c2VyXCIgaWQ9XCJ1c2VydHlwZVwiIC8+PGlucHV0IHR5cGU9
XCdoaWRkZW5cJyBuYW1lPVwicXJcIiB2YWx1ZT1cIjFcIiBpZD1cInFyXCIgLz48
aW5wdXQgdHlwZT1cJ2hpZGRlblwnIG5hbWU9XCJjb29raWV1c2VyXCIgdmFsdWU9
XCJiZWFyZGVkdHJvbGxcIiBpZD1cImNvb2tpZXVzZXJcIiAvPjxpbnB1dCB0eXBl
PVwnaGlkZGVuXCcgbmFtZT1cImR0aWRcIiB2YWx1ZT1cIlwiIGlkPVwiZHRpZFwi
IC8+PGlucHV0IHR5cGU9XCdoaWRkZW5cJyBuYW1lPVwiYmFzZXBhdGhcIiB2YWx1
ZT1cImh0dHA6Ly9jb21tdW5pdHkubGl2ZWpvdXJuYWwuY29tL2JhZF9ycGVyc19z
dWNrLzY2ODAxNTguaHRtbD9cIiBpZD1cImJhc2VwYXRoXCIgLz48aW5wdXQgdHlw
ZT1cJ2hpZGRlblwnIG5hbWU9XCJzdHlsZW1pbmVcIiB2YWx1ZT1cIjBcIiBpZD1c
InN0eWxlbWluZVwiIC8+PGlucHV0IHR5cGU9XCdoaWRkZW5cJyBuYW1lPVwidmll
d2luZ190aHJlYWRcIiBpZD1cInZpZXdpbmdfdGhyZWFkXCIgLz48aW5wdXQgdHlw
ZT1cJ2hpZGRlblwnIG5hbWU9XCJjaHJwMVwiIHZhbHVlPVwiNjY4MDE1OC02OTA5
OTMtMTIzODQ0MzIwMC02UVZvYmJYa0NlYXZGeTlwWmxITC0zZTM1NGExNTc1ZDgz
YjZlYzFmMjNiMmY3YzY5ZDQzYVwiIC8+PHRhYmxlIHN0eWxlPVwnYm9yZGVyOiAx
cHggc29saWQgYmxhY2tcJz48dHIgdmFsaWduPVwnY2VudGVyXCc+PHRkIGFsaWdu
PVwncmlnaHRcJz48Yj5Gcm9tOjwvYj48L3RkPjx0ZCBhbGlnbj1cJ2xlZnRcJz48
c3BhbiBjbGFzcz1cJ2xqdXNlclwnIGxqOnVzZXI9XCdiZWFyZGVkdHJvbGxcJyBz
dHlsZT1cJ3doaXRlLXNwYWNlOiBub3dyYXA7XCc+PGEgaHJlZj1cJ2h0dHA6Ly9i
ZWFyZGVkdHJvbGwubGl2ZWpvdXJuYWwuY29tL3Byb2ZpbGVcJz48aW1nIHNyYz1c
J2h0dHA6Ly9sLXN0YXQubGl2ZWpvdXJuYWwuY29tL2ltZy91c2VyaW5mby5naWZc
JyBhbHQ9XCdbaW5mb11cJyB3aWR0aD1cJzE3XCcgaGVpZ2h0PVwnMTdcJyBzdHls
ZT1cJ3ZlcnRpY2FsLWFsaWduOiBib3R0b207IGJvcmRlcjogMDsgcGFkZGluZy1y
aWdodDogMXB4O1wnIC8+PC9hPjxhIGhyZWY9XCdodHRwOi8vYmVhcmRlZHRyb2xs
LmxpdmVqb3VybmFsLmNvbS9cJz48Yj5iZWFyZGVkdHJvbGw8L2I+PC9hPjwvc3Bh
bj48L3RkPjx0ZCBhbGlnbj1cJ2NlbnRlclwnPjxhIGhyZWY9XCdodHRwOi8vd3d3
LmxpdmVqb3VybmFsLmNvbS9hbGxwaWNzLmJtbD91c2VyPWJlYXJkZWR0cm9sbFwn
PkJpbGV0ZTwvYT4gdGlsIMOlIGJydWtlOjxzZWxlY3QgbmFtZT1cInByb3BfcGlj
dHVyZV9rZXl3b3JkXCIgaWQ9XCJwcm9wX3BpY3R1cmVfa2V5d29yZFwiPlxuPG9w
dGlvbiB2YWx1ZT1cIlwiIHNlbGVjdGVkPVwnc2VsZWN0ZWRcJz4oZGVmYXVsdCk8
L29wdGlvbj5cbjxvcHRpb24gdmFsdWU9XCJhZ2FpbnN0IHRoZSB3YWxsXCI+YWdh
aW5zdCB0aGUgd2FsbDwvb3B0aW9uPlxuPG9wdGlvbiB2YWx1ZT1cIkJvdGhhblwi
PkJvdGhhbjwvb3B0aW9uPlxuPG9wdGlvbiB2YWx1ZT1cImNoZWVyIHVwXCI+Y2hl
ZXIgdXA8L29wdGlvbj5cbjxvcHRpb24gdmFsdWU9XCJjaWdhclwiPmNpZ2FyPC9v
cHRpb24+XG48b3B0aW9uIHZhbHVlPVwiY29mZmVlXCI+Y29mZmVlPC9vcHRpb24+
XG48b3B0aW9uIHZhbHVlPVwiRGVpcmRyZVwiPkRlaXJkcmU8L29wdGlvbj5cbjxv
cHRpb24gdmFsdWU9XCJFeWVzXCI+RXllczwvb3B0aW9uPlxuPG9wdGlvbiB2YWx1
ZT1cIkZyZXVkXCI+RnJldWQ8L29wdGlvbj5cbjxvcHRpb24gdmFsdWU9XCJHYWJi
bGVkdWNrXCI+R2FiYmxlZHVjazwvb3B0aW9uPlxuPG9wdGlvbiB2YWx1ZT1cIkdy
ZW1saW5zXCI+R3JlbWxpbnM8L29wdGlvbj5cbjxvcHRpb24gdmFsdWU9XCJIYXJy
eS9DaGVcIj5IYXJyeS9DaGU8L29wdGlvbj5cbjxvcHRpb24gdmFsdWU9XCJIYXog
bmV0d29yayBub2RlXCI+SGF6IG5ldHdvcmsgbm9kZTwvb3B0aW9uPlxuPG9wdGlv
biB2YWx1ZT1cIkh1enphaFwiPkh1enphaDwvb3B0aW9uPlxuPG9wdGlvbiB2YWx1
ZT1cImxhd3llclwiPmxhd3llcjwvb3B0aW9uPlxuPG9wdGlvbiB2YWx1ZT1cIkxp
bnV4XCI+TGludXg8L29wdGlvbj5cbjxvcHRpb24gdmFsdWU9XCJsaXZlIGxvbmdc
Ij5saXZlIGxvbmc8L29wdGlvbj5cbjxvcHRpb24gdmFsdWU9XCJMb3cgd3JpdFwi
PkxvdyB3cml0PC9vcHRpb24+XG48b3B0aW9uIHZhbHVlPVwibmV0d29yayBub2Rl
XCI+bmV0d29yayBub2RlPC9vcHRpb24+XG48b3B0aW9uIHZhbHVlPVwicGF5cGFs
IGRvbmF0ZVwiPnBheXBhbCBkb25hdGU8L29wdGlvbj5cbjxvcHRpb24gdmFsdWU9
XCJwaXJhdGVzXCI+cGlyYXRlczwvb3B0aW9uPlxuPG9wdGlvbiB2YWx1ZT1cInBs
aWdodFwiPnBsaWdodDwvb3B0aW9uPlxuPG9wdGlvbiB2YWx1ZT1cIlJlYWwgUHJv
Z3JhbW1lcnNcIj5SZWFsIFByb2dyYW1tZXJzPC9vcHRpb24+XG48b3B0aW9uIHZh
bHVlPVwicmV2b2x1dGlvblwiPnJldm9sdXRpb248L29wdGlvbj5cbjxvcHRpb24g
dmFsdWU9XCJzbXVnXCI+c211Zzwvb3B0aW9uPlxuPG9wdGlvbiB2YWx1ZT1cIlNw
aXJhbFwiPlNwaXJhbDwvb3B0aW9uPlxuPG9wdGlvbiB2YWx1ZT1cInN0aW5raW4m
IzM5OyBpY29uc1wiPnN0aW5raW4mIzM5OyBpY29uczwvb3B0aW9uPlxuPG9wdGlv
biB2YWx1ZT1cIlRha2Ugb3ZlciB0aGUgd29ybGRcIj5UYWtlIG92ZXIgdGhlIHdv
cmxkPC9vcHRpb24+XG48b3B0aW9uIHZhbHVlPVwiVGhleSBmaWdodCBjcmltZVwi
PlRoZXkgZmlnaHQgY3JpbWU8L29wdGlvbj5cbjxvcHRpb24gdmFsdWU9XCJUaW1l
IFRlYW0gQmFkIFBsYW5cIj5UaW1lIFRlYW0gQmFkIFBsYW48L29wdGlvbj5cbjxv
cHRpb24gdmFsdWU9XCJUcm9sbFwiPlRyb2xsPC9vcHRpb24+XG48b3B0aW9uIHZh
bHVlPVwiVXJcIj5Vcjwvb3B0aW9uPlxuPG9wdGlvbiB2YWx1ZT1cInZhbiBnb2do
XCI+dmFuIGdvZ2g8L29wdGlvbj5cbjwvc2VsZWN0PlxuICAgICAgICAgICAgICAg
IDxpbnB1dCB0eXBlPVwiYnV0dG9uXCIgaWQ9XCJsal91c2VycGljc2VsZWN0XCIg
dmFsdWU9XCJCcm93c2VcIiAvPlxuICAgICAgICAgICAgICAgICA8YSBocmVmPVwi
aHR0cDovL3d3dy5saXZlam91cm5hbC5jb20vc3VwcG9ydC9mYXFicm93c2UuYm1s
P2ZhcWlkPTQ2XCIgY2xhc3M9XCJoZWxwbGlua1wiIHRhcmdldD1cIl9ibGFua1wi
PjxpbWcgc3JjPVwiaHR0cDovL2wtc3RhdC5saXZlam91cm5hbC5jb20vaW1nL2hl
bHAuZ2lmXCIgYWx0PVwiSGVscFwiIHRpdGxlPVwiSGVscFwiIHdpZHRoPVwnMTRc
JyBoZWlnaHQ9XCcxNFwnIGJvcmRlcj1cJzBcJyAvPjwvYT48L3RkPjwvdHI+PHRy
Pjx0ZCBhbGlnbj1cJ3JpZ2h0XCc+PGI+RW1uZTo8L2I+PC90ZD48dGQgY29sc3Bh
bj1cJzJcJyBhbGlnbj1cJ2xlZnRcJz48aW5wdXQgY2xhc3M9XCd0ZXh0Ym94XCcg
dHlwZT1cJ3RleHRcJyBzaXplPVwnNTBcJyBtYXhsZW5ndGg9XCcxMDBcJyBuYW1l
PVwnc3ViamVjdFwnIGlkPVwnc3ViamVjdFwnIHZhbHVlPVwnXCcgLz48L3RkPjwv
dHI+PHRyIHZhbGlnbj1cJ3RvcFwnPjx0ZCBhbGlnbj1cJ3JpZ2h0XCc+PGI+TWVs
ZGluZzo8L2I+PC90ZD48dGQgY29sc3Bhbj1cJzNcJyBzdHlsZT1cJ3dpZHRoOiA5
MCVcJz48dGV4dGFyZWEgY2xhc3M9XCd0ZXh0Ym94XCcgcm93cz1cJzEwXCcgY29s
cz1cJzUwXCcgd3JhcD1cJ3NvZnRcJyBuYW1lPVwnYm9keVwnIGlkPVwnYm9keVwn
IHN0eWxlPVwnd2lkdGg6IDk5JVwnPjwvdGV4dGFyZWE+PC90ZD48L3RyPjx0cj48
dGQ+Jm5ic3A7PC90ZD48dGQgY29sc3Bhbj1cJzNcJyBhbGlnbj1cJ2xlZnRcJz48
aW5wdXQgdHlwZT1cJ3N1Ym1pdFwnIG5hbWU9XCJzdWJtaXRwb3N0XCIgdmFsdWU9
XCJQb3N0IENvbW1lbnRcIiBpZD1cInN1Ym1pdHBvc3RcIiBvbmNsaWNrPVwiaWYg
KGNoZWNrTGVuZ3RoKCkpIHtzdWJtaXRmb3JtKCk7fVwiIC8+Jm5ic3A7PGlucHV0
IHR5cGU9XCdzdWJtaXRcJyBuYW1lPVwic3VibWl0bW9yZW9wdHNcIiB2YWx1ZT1c
Ik1vcmUgT3B0aW9ucy4uLlwiIGlkPVwic3VibWl0bW9yZW9wdHNcIiBvbmNsaWNr
PVwiaWYgKG1vcmVvcHRzKCkpIHtzdWJtaXRmb3JtKCk7fVwiIC8+Jm5ic3A7PGlu
cHV0IHR5cGU9XCdjaGVja2JveFwnIG5hbWU9XCdkb19zcGVsbGNoZWNrXCcgdmFs
dWU9XCcxXCcgaWQ9XCdkb19zcGVsbGNoZWNrXCcgLz4gPGxhYmVsIGZvcj1cJ2Rv
X3NwZWxsY2hlY2tcJz5DaGVjayBzcGVsbGluZyBhbmQgcHJldmlldzwvbGFiZWw+
PC90ZD48L3RyPjwvdGFibGU+PC9mb3JtPjwvZGl2PiI7CiAgICAgICAgICAgICAg
ICAgICAgICAgdmFyIGJvZHllID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoImJvZHkiKTsKICAgICAgICAgICAgICAgICAgICAgICBpZiAoYm9keWVbMF0p
CiAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvZHllWzBdLmluc2VydEJlZm9y
ZShkZSwgYm9keWVbMF0uZmlyc3RDaGlsZCk7CiAgICAgICAgICAgICAgICAgICAg
ICAgZGUuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgfQogICAgICAgICAgIAo8L3NjcmlwdD4KICAgICAg
ICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgbGFuZ3VhZ2U9IkphdmFT
Y3JpcHQiPgogICAgICAgICAgICBET00uYWRkRXZlbnRMaXN0ZW5lcih3aW5kb3cs
ICJsb2FkIiwgZnVuY3Rpb24gKGV2dCkgewogICAgICAgICAgICAgICAgLy8gYXR0
YWNoIHVzZXJwaWNzZWxlY3QgY29kZSB0byB1c2VycGljYnJvd3NlIGJ1dHRvbgog
ICAgICAgICAgICAgICAgdmFyIHVwc19idG4gPSAkKCJsal91c2VycGljc2VsZWN0
Iik7CiAgICAgICAgICAgICAgICBpZiAodXBzX2J0bikgewogICAgICAgICAgICAg
ICAgICAgIERPTS5hZGRFdmVudExpc3RlbmVyKHVwc19idG4sICJjbGljayIsIGZ1
bmN0aW9uIChldnQpIHsKICAgICAgICAgICAgICAgICAgICAgdmFyIHVwcyA9IG5l
dyBVc2VycGljU2VsZWN0KCk7CiAgICAgICAgICAgICAgICAgICAgIHVwcy5pbml0
KCk7CiAgICAgICAgICAgICAgICAgICAgIHVwcy5zZXRQaWNTZWxlY3RlZENhbGxi
YWNrKGZ1bmN0aW9uIChwaWNpZCwga2V5d29yZHMpIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgIHZhciBrd3NfZHJvcGRvd24gPSAkKCJwcm9wX3BpY3R1cmVfa2V5
d29yZCIpOwoKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrd3NfZHJvcGRv
d24pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaXRlbXMgPSBr
d3NfZHJvcGRvd24ub3B0aW9uczsKCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gc2VsZWN0IHRoZSBrZXl3b3JkIGluIHRoZSBkcm9wZG93bgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGtleXdvcmRzLmZvckVhY2goZnVuY3Rpb24g
KGt3KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgaXRlbXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHZhciBpdGVtID0gaXRlbXNbaV07CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbS52YWx1ZSA9
PSBrdykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGt3c19kcm9wZG93bi5zZWxlY3RlZEluZGV4ID0gaTsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgfSk7
CiAgICAgICAgICAgICAgICAgICAgIHVwcy5zaG93KCk7CiAgICAgICAgICAgICAg
ICAgfSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAg
IDwvc2NyaXB0PgogICAgICAgIDxmb3JtIHN0eWxlPSdkaXNwbGF5OiBpbmxpbmUn
IG1ldGhvZD0ncG9zdCcgYWN0aW9uPSdodHRwOi8vd3d3LmxpdmVqb3VybmFsLmNv
bS90YWxrbXVsdGkuYm1sJyBuYW1lPSdtdWx0aWZvcm0nIG9uc3VibWl0PSdyZXR1
cm4gbXVsdGlmb3JtU3VibWl0KHRoaXMsIHtub19hY3Rpb246ICJZb3UgaGF2ZSBu
b3Qgc2VsZWN0ZWQgb25lIG9mIHRoZSBhY3Rpb25zIixub19jb21tZW50czogIllv
dSBoYXZlIG5vdCBzZWxlY3RlZCBhbnkgY29tbWVudHMiLGNvbmZfZGVsZXRlOiAi
QXJlIHlvdSBzdXJlIHlvdSB3aXNoIHRvIGRlbGV0ZSB0aGUgc2VsZWN0ZWQgY29t
bWVudHM/In0pJz48cCBjbGFzcz0nbGVzc3RvcCcgYWxpZ249J2NlbnRlcic+PGI+
KDxhIG9uY2xpY2s9J3JldHVybiBxdWlja3JlcGx5KCJ0b3AiLCAwLCAiIiknIGhy
ZWY9J2h0dHA6Ly9jb21tdW5pdHkubGl2ZWpvdXJuYWwuY29tL2JhZF9ycGVyc19z
dWNrLzY2ODAxNTguaHRtbD9tb2RlPXJlcGx5JyA+UG9zdCBhIG5ldyBjb21tZW50
PC9hPjwvYT4pPC9iPjwvcD48ZGl2IGFsaWduPSdjZW50ZXInPjxkaXYgaWQ9J2xq
cXJ0dG9wJyBuYW1lPSdsanFydHRvcCc+PC9kaXY+PC9kaXY+PGlucHV0IHR5cGU9
J2hpZGRlbicgbmFtZT0iZGl0ZW1pZCIgdmFsdWU9IjY2ODAxNTgiIC8+PGlucHV0
IHR5cGU9J2hpZGRlbicgbmFtZT0iam91cm5hbCIgdmFsdWU9ImJhZF9ycGVyc19z
dWNrIiAvPjxhIG5hbWU9J3QxMjA2NDQ5NTgnPjwvYT48c3BhbiBpZD0nbGpjbXQx
MjA2NDQ5NTgnPjx0YWJsZSB3aWR0aD0nMTAwJScgY2xhc3M9J3RhbGstY29tbWVu
dCc+PHRib2R5Pjx0cj48dGQgcm93c3Bhbj0nMic+PGltZyBzcmM9J2h0dHA6Ly9s
LXN0YXQubGl2ZWpvdXJuYWwuY29tL2ltZy9kb3QuZ2lmJyBoZWlnaHQ9JzEnIHdp
ZHRoPScwJz48L3RkPjx0ZCBpZD0nY210YmFyMTIwNjQ0OTU4JyBiZ2NvbG9yPScj
YmJkZGZmJyB3aWR0aD0nMTAwJSc+PGZvbnQgc2l6ZT0nKzEnIGZhY2U9J0FyaWFs
LEhlbHZldGljYSc+PGI+PC9iPjwvZm9udD4gPGJyIC8+PHNwYW4gY2xhc3M9J2xq
dXNlcicgbGo6dXNlcj0ndGhlc291cmdyb3ZlJyBzdHlsZT0nd2hpdGUtc3BhY2U6
IG5vd3JhcDsnPjxhIGhyZWY9J2h0dHA6Ly90aGVzb3VyZ3JvdmUubGl2ZWpvdXJu
YWwuY29tL3Byb2ZpbGUnPjxpbWcgc3JjPSdodHRwOi8vbC1zdGF0LmxpdmVqb3Vy
bmFsLmNvbS9pbWcvdXNlcmluZm8uZ2lmJyBhbHQ9J1tpbmZvXScgd2lkdGg9JzE3
JyBoZWlnaHQ9JzE3JyBzdHlsZT0ndmVydGljYWwtYWxpZ246IGJvdHRvbTsgYm9y
ZGVyOiAwOyBwYWRkaW5nLXJpZ2h0OiAxcHg7JyAvPjwvYT48YSBocmVmPSdodHRw
Oi8vdGhlc291cmdyb3ZlLmxpdmVqb3VybmFsLmNvbS8nPjxiPnRoZXNvdXJncm92
ZTwvYj48L2E+PC9zcGFuPgo8YnIgLz48Zm9udCBzaXplPSctMSc+MjAwOS0wMy0z
MCAxMDoxOSBwbSAobG9jYWwpPC9mb250PgogPGZvbnQgc2l6ZT0nLTEnPig8YSBo
cmVmPSdodHRwOi8vY29tbXVuaXR5LmxpdmVqb3VybmFsLmNvbS9iYWRfcnBlcnNf
c3Vjay82NjgwMTU4Lmh0bWw/dGhyZWFkPTEyMDY0NDk1OCN0MTIwNjQ0OTU4Jz5s
aW5rPC9hPik8L2ZvbnQ+IDxhIGhyZWY9J2h0dHA6Ly93d3cubGl2ZWpvdXJuYWwu
Y29tL21hbmFnZS9zdWJzY3JpcHRpb25zL2NvbW1lbnRzLmJtbD9qb3VybmFsPWJh
ZF9ycGVyc19zdWNrJmFtcDt0YWxraWQ9MTIwNjQ0OTU4Jz48aW1nIHNyYz0iaHR0
cDovL2wtc3RhdC5saXZlam91cm5hbC5jb20vaW1nL2J0bl90cmFjay5naWYiIHdp
ZHRoPSIyMiIgaGVpZ2h0PSIyMCIgYWx0PSJUcmFjayBUaGlzIiB0aXRsZT0iVHJh
Y2sgVGhpcyIgYm9yZGVyPScwJyBhbGlnbj0iYWJzbWlkZGxlIiAvPjwvYT48L3Rk
PjwvdHI+PHRyPjx0ZD5TbyBhIGxpdHRsZSB3aGl0ZSBsaWUgb2YgIldlJ3JlIGxl
YXZpbmcgZHVlIHRvIFJMIiByYXRoZXIgdGhhbiBhcHBhcmVudGx5ICJXZSdyZSBs
ZWF2aW5nIGJlY2F1c2UgeW91IGd1eXMgYXJlIHNvIHRlcnJpYmxlIHdlIGNhbid0
IHN0YW5kIHRvIHBsYXkgd2l0aCB5b3UgYW55bW9yZSIgbWFrZXMgdGhlbSBiYWQg
cnBlcnM/PGJyIC8+PGJyIC8+QW5kIHdoYXQncyB3cm9uZyB3aXRoIHRoZW0gdXNp
bmcgZGVzY3JpcHRpb25zIGFuZCBydWxlcyB0aGF0IHRoZXkgd3JvdGU/PHAgc3R5
bGU9J21hcmdpbjogMC43ZW0gMCAwLjJlbSAwJz48Zm9udCBzaXplPSctMic+KDxh
IG9uY2xpY2s9J3JldHVybiBxdWlja3JlcGx5KCIxMjA2NDQ5NTgiLCA0NzEyNjks
ICIiKScgaHJlZj0naHR0cDovL2NvbW11bml0eS5saXZlam91cm5hbC5jb20vYmFk
X3JwZXJzX3N1Y2svNjY4MDE1OC5odG1sP3JlcGx5dG89MTIwNjQ0OTU4JyA+U3Zh
ciBww6UgZGV0dGU8L2E+KSAoPGEgaHJlZj0naHR0cDovL2NvbW11bml0eS5saXZl
am91cm5hbC5jb20vYmFkX3JwZXJzX3N1Y2svNjY4MDE1OC5odG1sP3RocmVhZD0x
MjA2NDQ5NTgjdDEyMDY0NDk1OCc+VHLDpWQ8L2E+KTwvZm9udD48L3A+PGRpdiBp
ZD0nbGpxcnQxMjA2NDQ5NTgnIG5hbWU9J2xqcXJ0MTIwNjQ0OTU4Jz48L2Rpdj48
L3RkPjwvdHI+PC90Ym9keT48L3RhYmxlPjwvc3Bhbj4KPGEgbmFtZT0ndDEyMDY0
NTIxNCc+PC9hPjxzcGFuIGlkPSdsamNtdDEyMDY0NTIxNCc+PHRhYmxlIHdpZHRo
PScxMDAlJyBjbGFzcz0ndGFsay1jb21tZW50Jz48dGJvZHk+PHRyPjx0ZCByb3dz
cGFuPScyJz48aW1nIHNyYz0naHR0cDovL2wtc3RhdC5saXZlam91cm5hbC5jb20v
aW1nL2RvdC5naWYnIGhlaWdodD0nMScgd2lkdGg9JzI1Jz48L3RkPjx0ZCBpZD0n
Y210YmFyMTIwNjQ1MjE0JyBiZ2NvbG9yPScjYWFjY2VlJyB3aWR0aD0nMTAwJSc+
PGltZyBhbGlnbj0nbGVmdCcgaHNwYWNlPSczJyBzcmM9J2h0dHA6Ly9sLXVzZXJw
aWMubGl2ZWpvdXJuYWwuY29tLzc4NzA2ODAxLzYyNjgyNTgnIHdpZHRoPScxMDAn
IHRpdGxlPSdUaGUgcXVlZW4gb2YgdGhlIGltcHM6IGpva2VyIGNsYXAnIGFsdD0n
JyBoZWlnaHQ9JzEwMCcgLz48Zm9udCBzaXplPScrMScgZmFjZT0nQXJpYWwsSGVs
dmV0aWNhJz48Yj48L2I+PC9mb250PiA8YnIgLz48c3BhbiBjbGFzcz0nbGp1c2Vy
JyBsajp1c2VyPSd0ZW5zaGlub2Z1c2hpZ2knIHN0eWxlPSd3aGl0ZS1zcGFjZTog
bm93cmFwOyc+PGEgaHJlZj0naHR0cDovL3RlbnNoaW5vZnVzaGlnaS5saXZlam91
cm5hbC5jb20vcHJvZmlsZSc+PGltZyBzcmM9J2h0dHA6Ly9sLXN0YXQubGl2ZWpv
dXJuYWwuY29tL2ltZy91c2VyaW5mby5naWYnIGFsdD0nW2luZm9dJyB3aWR0aD0n
MTcnIGhlaWdodD0nMTcnIHN0eWxlPSd2ZXJ0aWNhbC1hbGlnbjogYm90dG9tOyBi
b3JkZXI6IDA7IHBhZGRpbmctcmlnaHQ6IDFweDsnIC8+PC9hPjxhIGhyZWY9J2h0
dHA6Ly90ZW5zaGlub2Z1c2hpZ2kubGl2ZWpvdXJuYWwuY29tLyc+PGI+dGVuc2hp
bm9mdXNoaWdpPC9iPjwvYT48L3NwYW4+CjxiciAvPjxmb250IHNpemU9Jy0xJz4y
MDA5LTAzLTMwIDEwOjIxIHBtIChsb2NhbCk8L2ZvbnQ+CiA8Zm9udCBzaXplPSct
MSc+KDxhIGhyZWY9J2h0dHA6Ly9jb21tdW5pdHkubGl2ZWpvdXJuYWwuY29tL2Jh
ZF9ycGVyc19zdWNrLzY2ODAxNTguaHRtbD90aHJlYWQ9MTIwNjQ1MjE0I3QxMjA2
NDUyMTQnPmxpbms8L2E+KTwvZm9udD4gPGEgaHJlZj0naHR0cDovL3d3dy5saXZl
am91cm5hbC5jb20vbWFuYWdlL3N1YnNjcmlwdGlvbnMvY29tbWVudHMuYm1sP2pv
dXJuYWw9YmFkX3JwZXJzX3N1Y2smYW1wO3RhbGtpZD0xMjA2NDUyMTQnPjxpbWcg
c3JjPSJodHRwOi8vbC1zdGF0LmxpdmVqb3VybmFsLmNvbS9pbWcvYnRuX3RyYWNr
LmdpZiIgd2lkdGg9IjIyIiBoZWlnaHQ9IjIwIiBhbHQ9IlRyYWNrIFRoaXMiIHRp
dGxlPSJUcmFjayBUaGlzIiBib3JkZXI9JzAnIGFsaWduPSJhYnNtaWRkbGUiIC8+
PC9hPjwvdGQ+PC90cj48dHI+PHRkPlRoZXkgdG9vayBvdXIgcHJlbWlzZSwgaW5j
bHVkaW5nIHNwZWNpZmljIGRldGFpbHMuICBUaGV5IGhhZCBubyBoYW5kIGluIHRo
ZSBvcmlnaW5hbCBpZGVhLCBvbmUgb2YgdGhlbSBqdXN0IGFkZGVkIHRvIGl0IGFm
dGVyIHNoZSBqb2luZWQuPHAgc3R5bGU9J21hcmdpbjogMC43ZW0gMCAwLjJlbSAw
Jz48Zm9udCBzaXplPSctMic+KDxhIG9uY2xpY2s9J3JldHVybiBxdWlja3JlcGx5
KCIxMjA2NDUyMTQiLCA0NzEyNzAsICIiKScgaHJlZj0naHR0cDovL2NvbW11bml0
eS5saXZlam91cm5hbC5jb20vYmFkX3JwZXJzX3N1Y2svNjY4MDE1OC5odG1sP3Jl
cGx5dG89MTIwNjQ1MjE0JyA+U3ZhciBww6UgZGV0dGU8L2E+KSAoPGEgaHJlZj0n
aHR0cDovL2NvbW11bml0eS5saXZlam91cm5hbC5jb20vYmFkX3JwZXJzX3N1Y2sv
NjY4MDE1OC5odG1sP3RocmVhZD0xMjA2NDQ5NTgjdDEyMDY0NDk1OCc+UGFyZW50
PC9hPikoPGEgaHJlZj0naHR0cDovL2NvbW11bml0eS5saXZlam91cm5hbC5jb20v
YmFkX3JwZXJzX3N1Y2svNjY4MDE1OC5odG1sP3RocmVhZD0xMjA2NDUyMTQjdDEy
MDY0NTIxNCc+VHLDpWQ8L2E+KTwvZm9udD48L3A+PGRpdiBpZD0nbGpxcnQxMjA2
NDUyMTQnIG5hbWU9J2xqcXJ0MTIwNjQ1MjE0Jz48L2Rpdj48L3RkPjwvdHI+PC90
Ym9keT48L3RhYmxlPjwvc3Bhbj4KPGEgbmFtZT0ndDEyMDY0NTcyNic+PC9hPjxz
cGFuIGlkPSdsamNtdDEyMDY0NTcyNic+PHRhYmxlIHdpZHRoPScxMDAlJyBjbGFz
cz0ndGFsay1jb21tZW50Jz48dGJvZHk+PHRyPjx0ZCByb3dzcGFuPScyJz48aW1n
IHNyYz0naHR0cDovL2wtc3RhdC5saXZlam91cm5hbC5jb20vaW1nL2RvdC5naWYn
IGhlaWdodD0nMScgd2lkdGg9JzUwJz48L3RkPjx0ZCBpZD0nY210YmFyMTIwNjQ1
NzI2JyBiZ2NvbG9yPScjYmJkZGZmJyB3aWR0aD0nMTAwJSc+PGZvbnQgc2l6ZT0n
KzEnIGZhY2U9J0FyaWFsLEhlbHZldGljYSc+PGI+PC9iPjwvZm9udD4gPGJyIC8+
PHNwYW4gY2xhc3M9J2xqdXNlcicgbGo6dXNlcj0ndGhlc291cmdyb3ZlJyBzdHls
ZT0nd2hpdGUtc3BhY2U6IG5vd3JhcDsnPjxhIGhyZWY9J2h0dHA6Ly90aGVzb3Vy
Z3JvdmUubGl2ZWpvdXJuYWwuY29tL3Byb2ZpbGUnPjxpbWcgc3JjPSdodHRwOi8v
bC1zdGF0LmxpdmVqb3VybmFsLmNvbS9pbWcvdXNlcmluZm8uZ2lmJyBhbHQ9J1tp
bmZvXScgd2lkdGg9JzE3JyBoZWlnaHQ9JzE3JyBzdHlsZT0ndmVydGljYWwtYWxp
Z246IGJvdHRvbTsgYm9yZGVyOiAwOyBwYWRkaW5nLXJpZ2h0OiAxcHg7JyAvPjwv
YT48YSBocmVmPSdodHRwOi8vdGhlc291cmdyb3ZlLmxpdmVqb3VybmFsLmNvbS8n
PjxiPnRoZXNvdXJncm92ZTwvYj48L2E+PC9zcGFuPgo8YnIgLz48Zm9udCBzaXpl
PSctMSc+MjAwOS0wMy0zMCAxMDoyNCBwbSAobG9jYWwpPC9mb250PgogPGZvbnQg
c2l6ZT0nLTEnPig8YSBocmVmPSdodHRwOi8vY29tbXVuaXR5LmxpdmVqb3VybmFs
LmNvbS9iYWRfcnBlcnNfc3Vjay82NjgwMTU4Lmh0bWw/dGhyZWFkPTEyMDY0NTcy
NiN0MTIwNjQ1NzI2Jz5saW5rPC9hPik8L2ZvbnQ+IDxhIGhyZWY9J2h0dHA6Ly93
d3cubGl2ZWpvdXJuYWwuY29tL21hbmFnZS9zdWJzY3JpcHRpb25zL2NvbW1lbnRz
LmJtbD9qb3VybmFsPWJhZF9ycGVyc19zdWNrJmFtcDt0YWxraWQ9MTIwNjQ1NzI2
Jz48aW1nIHNyYz0iaHR0cDovL2wtc3RhdC5saXZlam91cm5hbC5jb20vaW1nL2J0
bl90cmFjay5naWYiIHdpZHRoPSIyMiIgaGVpZ2h0PSIyMCIgYWx0PSJUcmFjayBU
aGlzIiB0aXRsZT0iVHJhY2sgVGhpcyIgYm9yZGVyPScwJyBhbGlnbj0iYWJzbWlk
ZGxlIiAvPjwvYT48L3RkPjwvdHI+PHRyPjx0ZD5CZWNhdXNlICJJdCdzIGp1c3Qg
bGlrZSBIYXJyeSBQb3R0ZXIgZXhjZXB0IFgiIGlzIHRoZSBraW5nIG9mIG9yaWdp
bmFsIGlkZWFzLCB5b3UgaW5jcmVkaWJsZSBoYWNrLjxwIHN0eWxlPSdtYXJnaW46
IDAuN2VtIDAgMC4yZW0gMCc+PGZvbnQgc2l6ZT0nLTInPig8YSBvbmNsaWNrPSdy
ZXR1cm4gcXVpY2tyZXBseSgiMTIwNjQ1NzI2IiwgNDcxMjcyLCAiIiknIGhyZWY9
J2h0dHA6Ly9jb21tdW5pdHkubGl2ZWpvdXJuYWwuY29tL2JhZF9ycGVyc19zdWNr
LzY2ODAxNTguaHRtbD9yZXBseXRvPTEyMDY0NTcyNicgPlN2YXIgcMOlIGRldHRl
PC9hPikgKDxhIGhyZWY9J2h0dHA6Ly9jb21tdW5pdHkubGl2ZWpvdXJuYWwuY29t
L2JhZF9ycGVyc19zdWNrLzY2ODAxNTguaHRtbD90aHJlYWQ9MTIwNjQ1MjE0I3Qx
MjA2NDUyMTQnPlBhcmVudDwvYT4pKDxhIGhyZWY9J2h0dHA6Ly9jb21tdW5pdHku
bGl2ZWpvdXJuYWwuY29tL2JhZF9ycGVyc19zdWNrLzY2ODAxNTguaHRtbD90aHJl
YWQ9MTIwNjQ1NzI2I3QxMjA2NDU3MjYnPlRyw6VkPC9hPik8L2ZvbnQ+PC9wPjxk
aXYgaWQ9J2xqcXJ0MTIwNjQ1NzI2JyBuYW1lPSdsanFydDEyMDY0NTcyNic+PC9k
aXY+PC90ZD48L3RyPjwvdGJvZHk+PC90YWJsZT48L3NwYW4+CjxhIG5hbWU9J3Qx
MjA2NDY0OTQnPjwvYT48c3BhbiBpZD0nbGpjbXQxMjA2NDY0OTQnPjx0YWJsZSB3
aWR0aD0nMTAwJScgY2xhc3M9J3RhbGstY29tbWVudCc+PHRib2R5Pjx0cj48dGQg
cm93c3Bhbj0nMic+PGltZyBzcmM9J2h0dHA6Ly9sLXN0YXQubGl2ZWpvdXJuYWwu
Y29tL2ltZy9kb3QuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPSc3NSc+PC90ZD48dGQg
aWQ9J2NtdGJhcjEyMDY0NjQ5NCcgYmdjb2xvcj0nI2FhY2NlZScgd2lkdGg9JzEw
MCUnPjxpbWcgYWxpZ249J2xlZnQnIGhzcGFjZT0nMycgc3JjPSdodHRwOi8vbC11
c2VycGljLmxpdmVqb3VybmFsLmNvbS83OTc0MDY3Ny8xNDk0ODcyMicgd2lkdGg9
JzEwMCcgdGl0bGU9J2NlbGVzdGluZWFuZ2VsJyBhbHQ9JycgaGVpZ2h0PScxMDAn
IC8+PGZvbnQgc2l6ZT0nKzEnIGZhY2U9J0FyaWFsLEhlbHZldGljYSc+PGI+PC9i
PjwvZm9udD4gPGJyIC8+PHNwYW4gY2xhc3M9J2xqdXNlcicgbGo6dXNlcj0nY2Vs
ZXN0aW5lYW5nZWwnIHN0eWxlPSd3aGl0ZS1zcGFjZTogbm93cmFwOyc+PGEgaHJl
Zj0naHR0cDovL2NlbGVzdGluZWFuZ2VsLmxpdmVqb3VybmFsLmNvbS9wcm9maWxl
Jz48aW1nIHNyYz0naHR0cDovL2wtc3RhdC5saXZlam91cm5hbC5jb20vaW1nL3Vz
ZXJpbmZvLmdpZicgYWx0PSdbaW5mb10nIHdpZHRoPScxNycgaGVpZ2h0PScxNycg
c3R5bGU9J3ZlcnRpY2FsLWFsaWduOiBib3R0b207IGJvcmRlcjogMDsgcGFkZGlu
Zy1yaWdodDogMXB4OycgLz48L2E+PGEgaHJlZj0naHR0cDovL2NlbGVzdGluZWFu
Z2VsLmxpdmVqb3VybmFsLmNvbS8nPjxiPmNlbGVzdGluZWFuZ2VsPC9iPjwvYT48
L3NwYW4+CjxiciAvPjxmb250IHNpemU9Jy0xJz4yMDA5LTAzLTMwIDEwOjI2IHBt
IChsb2NhbCk8L2ZvbnQ+CiA8Zm9udCBzaXplPSctMSc+KDxhIGhyZWY9J2h0dHA6
Ly9jb21tdW5pdHkubGl2ZWpvdXJuYWwuY29tL2JhZF9ycGVyc19zdWNrLzY2ODAx
NTguaHRtbD90aHJlYWQ9MTIwNjQ2NDk0I3QxMjA2NDY0OTQnPmxpbms8L2E+KTwv
Zm9udD4gPGEgaHJlZj0naHR0cDovL3d3dy5saXZlam91cm5hbC5jb20vbWFuYWdl
L3N1YnNjcmlwdGlvbnMvY29tbWVudHMuYm1sP2pvdXJuYWw9YmFkX3JwZXJzX3N1
Y2smYW1wO3RhbGtpZD0xMjA2NDY0OTQnPjxpbWcgc3JjPSJodHRwOi8vbC1zdGF0
LmxpdmVqb3VybmFsLmNvbS9pbWcvYnRuX3RyYWNrLmdpZiIgd2lkdGg9IjIyIiBo
ZWlnaHQ9IjIwIiBhbHQ9IlRyYWNrIFRoaXMiIHRpdGxlPSJUcmFjayBUaGlzIiBi
b3JkZXI9JzAnIGFsaWduPSJhYnNtaWRkbGUiIC8+PC9hPjwvdGQ+PC90cj48dHI+
PHRkPllvdSBtaWdodCBhcyB3ZWxsIHN0b3AgaGlkaW5nIHVuZGVyIGEgc29jay48
cCBzdHlsZT0nbWFyZ2luOiAwLjdlbSAwIDAuMmVtIDAnPjxmb250IHNpemU9Jy0y
Jz4oPGEgb25jbGljaz0ncmV0dXJuIHF1aWNrcmVwbHkoIjEyMDY0NjQ5NCIsIDQ3
MTI3NSwgIiIpJyBocmVmPSdodHRwOi8vY29tbXVuaXR5LmxpdmVqb3VybmFsLmNv
bS9iYWRfcnBlcnNfc3Vjay82NjgwMTU4Lmh0bWw/cmVwbHl0bz0xMjA2NDY0OTQn
ID5TdmFyIHDDpSBkZXR0ZTwvYT4pICg8YSBocmVmPSdodHRwOi8vY29tbXVuaXR5
LmxpdmVqb3VybmFsLmNvbS9iYWRfcnBlcnNfc3Vjay82NjgwMTU4Lmh0bWw/dGhy
ZWFkPTEyMDY0NTcyNiN0MTIwNjQ1NzI2Jz5QYXJlbnQ8L2E+KSg8YSBocmVmPSdo
dHRwOi8vY29tbXVuaXR5LmxpdmVqb3VybmFsLmNvbS9iYWRfcnBlcnNfc3Vjay82
NjgwMTU4Lmh0bWw/dGhyZWFkPTEyMDY0NjQ5NCN0MTIwNjQ2NDk0Jz5UcsOlZDwv
YT4pPC9mb250PjwvcD48ZGl2IGlkPSdsanFydDEyMDY0NjQ5NCcgbmFtZT0nbGpx
cnQxMjA2NDY0OTQnPjwvZGl2PjwvdGQ+PC90cj48L3Rib2R5PjwvdGFibGU+PC9z
cGFuPgo8YSBuYW1lPSd0MTIwNjQ3MDA2Jz48L2E+PHNwYW4gaWQ9J2xqY210MTIw
NjQ3MDA2Jz48dGFibGUgd2lkdGg9JzEwMCUnIGNsYXNzPSd0YWxrLWNvbW1lbnQn
Pjx0Ym9keT48dHI+PHRkIHJvd3NwYW49JzInPjxpbWcgc3JjPSdodHRwOi8vbC1z
dGF0LmxpdmVqb3VybmFsLmNvbS9pbWcvZG90LmdpZicgaGVpZ2h0PScxJyB3aWR0
aD0nMTAwJz48L3RkPjx0ZCBpZD0nY210YmFyMTIwNjQ3MDA2JyBiZ2NvbG9yPScj
YmJkZGZmJyB3aWR0aD0nMTAwJSc+PGZvbnQgc2l6ZT0nKzEnIGZhY2U9J0FyaWFs
LEhlbHZldGljYSc+PGI+PC9iPjwvZm9udD4gPGJyIC8+PHNwYW4gY2xhc3M9J2xq
dXNlcicgbGo6dXNlcj0ndGhlc291cmdyb3ZlJyBzdHlsZT0nd2hpdGUtc3BhY2U6
IG5vd3JhcDsnPjxhIGhyZWY9J2h0dHA6Ly90aGVzb3VyZ3JvdmUubGl2ZWpvdXJu
YWwuY29tL3Byb2ZpbGUnPjxpbWcgc3JjPSdodHRwOi8vbC1zdGF0LmxpdmVqb3Vy
bmFsLmNvbS9pbWcvdXNlcmluZm8uZ2lmJyBhbHQ9J1tpbmZvXScgd2lkdGg9JzE3
JyBoZWlnaHQ9JzE3JyBzdHlsZT0ndmVydGljYWwtYWxpZ246IGJvdHRvbTsgYm9y
ZGVyOiAwOyBwYWRkaW5nLXJpZ2h0OiAxcHg7JyAvPjwvYT48YSBocmVmPSdodHRw
Oi8vdGhlc291cmdyb3ZlLmxpdmVqb3VybmFsLmNvbS8nPjxiPnRoZXNvdXJncm92
ZTwvYj48L2E+PC9zcGFuPgo8YnIgLz48Zm9udCBzaXplPSctMSc+MjAwOS0wMy0z
MCAxMDoyNiBwbSAobG9jYWwpPC9mb250PgogPGZvbnQgc2l6ZT0nLTEnPig8YSBo
cmVmPSdodHRwOi8vY29tbXVuaXR5LmxpdmVqb3VybmFsLmNvbS9iYWRfcnBlcnNf
c3Vjay82NjgwMTU4Lmh0bWw/dGhyZWFkPTEyMDY0NzAwNiN0MTIwNjQ3MDA2Jz5s
aW5rPC9hPik8L2ZvbnQ+IDxhIGhyZWY9J2h0dHA6Ly93d3cubGl2ZWpvdXJuYWwu
Y29tL21hbmFnZS9zdWJzY3JpcHRpb25zL2NvbW1lbnRzLmJtbD9qb3VybmFsPWJh
ZF9ycGVyc19zdWNrJmFtcDt0YWxraWQ9MTIwNjQ3MDA2Jz48aW1nIHNyYz0iaHR0
cDovL2wtc3RhdC5saXZlam91cm5hbC5jb20vaW1nL2J0bl90cmFjay5naWYiIHdp
ZHRoPSIyMiIgaGVpZ2h0PSIyMCIgYWx0PSJUcmFjayBUaGlzIiB0aXRsZT0iVHJh
Y2sgVGhpcyIgYm9yZGVyPScwJyBhbGlnbj0iYWJzbWlkZGxlIiAvPjwvYT48L3Rk
PjwvdHI+PHRyPjx0ZD5CZWNhdXNlIHlvdSBrbm93IHdobyBJIGFtLCByaWdodD8g
IFlvdSBwZW9wbGUgYXJlIHNvIHByZWRpY3RhYmxlLjxwIHN0eWxlPSdtYXJnaW46
IDAuN2VtIDAgMC4yZW0gMCc+PGZvbnQgc2l6ZT0nLTInPig8YSBvbmNsaWNrPSdy
ZXR1cm4gcXVpY2tyZXBseSgiMTIwNjQ3MDA2IiwgNDcxMjc3LCAiIiknIGhyZWY9
J2h0dHA6Ly9jb21tdW5pdHkubGl2ZWpvdXJuYWwuY29tL2JhZF9ycGVyc19zdWNr
LzY2ODAxNTguaHRtbD9yZXBseXRvPTEyMDY0NzAwNicgPlN2YXIgcMOlIGRldHRl
PC9hPikgKDxhIGhyZWY9J2h0dHA6Ly9jb21tdW5pdHkubGl2ZWpvdXJuYWwuY29t
L2JhZF9ycGVyc19zdWNrLzY2ODAxNTguaHRtbD90aHJlYWQ9MTIwNjQ2NDk0I3Qx
MjA2NDY0OTQnPlBhcmVudDwvYT4pKDxhIGhyZWY9J2h0dHA6Ly9jb21tdW5pdHku
bGl2ZWpvdXJuYWwuY29tL2JhZF9ycGVyc19zdWNrLzY2ODAxNTguaHRtbD90aHJl
YWQ9MTIwNjQ3MDA2I3QxMjA2NDcwMDYnPlRyw6VkPC9hPik8L2ZvbnQ+PC9wPjxk
aXYgaWQ9J2xqcXJ0MTIwNjQ3MDA2JyBuYW1lPSdsanFydDEyMDY0NzAwNic+PC9k
aXY+PC90ZD48L3RyPjwvdGJvZHk+PC90YWJsZT48L3NwYW4+CjxhIG5hbWU9J3Qx
MjA2NDc3NzQnPjwvYT48c3BhbiBpZD0nbGpjbXQxMjA2NDc3NzQnPjx0YWJsZSB3
aWR0aD0nMTAwJScgY2xhc3M9J3RhbGstY29tbWVudCc+PHRib2R5Pjx0cj48dGQg
cm93c3Bhbj0nMic+PGltZyBzcmM9J2h0dHA6Ly9sLXN0YXQubGl2ZWpvdXJuYWwu
Y29tL2ltZy9kb3QuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxMjUnPjwvdGQ+PHRk
IGlkPSdjbXRiYXIxMjA2NDc3NzQnIGJnY29sb3I9JyNhYWNjZWUnIHdpZHRoPScx
MDAlJz48aW1nIGFsaWduPSdsZWZ0JyBoc3BhY2U9JzMnIHNyYz0naHR0cDovL2wt
dXNlcnBpYy5saXZlam91cm5hbC5jb20vNzg3MDY5NzcvNjI2ODI1OCcgd2lkdGg9
Jzk5JyB0aXRsZT0nVGhlIHF1ZWVuIG9mIHRoZSBpbXBzJyBhbHQ9JycgaGVpZ2h0
PScxMDAnIC8+PGZvbnQgc2l6ZT0nKzEnIGZhY2U9J0FyaWFsLEhlbHZldGljYSc+
PGI+PC9iPjwvZm9udD4gPGJyIC8+PHNwYW4gY2xhc3M9J2xqdXNlcicgbGo6dXNl
cj0ndGVuc2hpbm9mdXNoaWdpJyBzdHlsZT0nd2hpdGUtc3BhY2U6IG5vd3JhcDsn
PjxhIGhyZWY9J2h0dHA6Ly90ZW5zaGlub2Z1c2hpZ2kubGl2ZWpvdXJuYWwuY29t
L3Byb2ZpbGUnPjxpbWcgc3JjPSdodHRwOi8vbC1zdGF0LmxpdmVqb3VybmFsLmNv
bS9pbWcvdXNlcmluZm8uZ2lmJyBhbHQ9J1tpbmZvXScgd2lkdGg9JzE3JyBoZWln
aHQ9JzE3JyBzdHlsZT0ndmVydGljYWwtYWxpZ246IGJvdHRvbTsgYm9yZGVyOiAw
OyBwYWRkaW5nLXJpZ2h0OiAxcHg7JyAvPjwvYT48YSBocmVmPSdodHRwOi8vdGVu
c2hpbm9mdXNoaWdpLmxpdmVqb3VybmFsLmNvbS8nPjxiPnRlbnNoaW5vZnVzaGln
aTwvYj48L2E+PC9zcGFuPgo8YnIgLz48Zm9udCBzaXplPSctMSc+MjAwOS0wMy0z
MCAxMDoyNyBwbSAobG9jYWwpPC9mb250PgogPGZvbnQgc2l6ZT0nLTEnPig8YSBo
cmVmPSdodHRwOi8vY29tbXVuaXR5LmxpdmVqb3VybmFsLmNvbS9iYWRfcnBlcnNf
c3Vjay82NjgwMTU4Lmh0bWw/dGhyZWFkPTEyMDY0Nzc3NCN0MTIwNjQ3Nzc0Jz5s
aW5rPC9hPik8L2ZvbnQ+IDxhIGhyZWY9J2h0dHA6Ly93d3cubGl2ZWpvdXJuYWwu
Y29tL21hbmFnZS9zdWJzY3JpcHRpb25zL2NvbW1lbnRzLmJtbD9qb3VybmFsPWJh
ZF9ycGVyc19zdWNrJmFtcDt0YWxraWQ9MTIwNjQ3Nzc0Jz48aW1nIHNyYz0iaHR0
cDovL2wtc3RhdC5saXZlam91cm5hbC5jb20vaW1nL2J0bl90cmFjay5naWYiIHdp
ZHRoPSIyMiIgaGVpZ2h0PSIyMCIgYWx0PSJUcmFjayBUaGlzIiB0aXRsZT0iVHJh
Y2sgVGhpcyIgYm9yZGVyPScwJyBhbGlnbj0iYWJzbWlkZGxlIiAvPjwvYT48L3Rk
PjwvdHI+PHRyPjx0ZD4iWW91IHBlb3BsZSI/ICBTbyB5b3UgZG8ga25vdyB1cy48
cCBzdHlsZT0nbWFyZ2luOiAwLjdlbSAwIDAuMmVtIDAnPjxmb250IHNpemU9Jy0y
Jz4oPGEgb25jbGljaz0ncmV0dXJuIHF1aWNrcmVwbHkoIjEyMDY0Nzc3NCIsIDQ3
MTI4MCwgIiIpJyBocmVmPSdodHRwOi8vY29tbXVuaXR5LmxpdmVqb3VybmFsLmNv
bS9iYWRfcnBlcnNfc3Vjay82NjgwMTU4Lmh0bWw/cmVwbHl0bz0xMjA2NDc3NzQn
ID5TdmFyIHDDpSBkZXR0ZTwvYT4pICg8YSBocmVmPSdodHRwOi8vY29tbXVuaXR5
LmxpdmVqb3VybmFsLmNvbS9iYWRfcnBlcnNfc3Vjay82NjgwMTU4Lmh0bWw/dGhy
ZWFkPTEyMDY0NzAwNiN0MTIwNjQ3MDA2Jz5QYXJlbnQ8L2E+KSg8YSBocmVmPSdo
dHRwOi8vY29tbXVuaXR5LmxpdmVqb3VybmFsLmNvbS9iYWRfcnBlcnNfc3Vjay82
NjgwMTU4Lmh0bWw/dGhyZWFkPTEyMDY0Nzc3NCN0MTIwNjQ3Nzc0Jz5UcsOlZDwv
YT4pPC9mb250PjwvcD48ZGl2IGlkPSdsanFydDEyMDY0Nzc3NCcgbmFtZT0nbGpx
cnQxMjA2NDc3NzQnPjwvZGl2PjwvdGQ+PC90cj48L3Rib2R5PjwvdGFibGU+PC9z
cGFuPgo8YSBuYW1lPSd0MTIwNjQ4Mjg2Jz48L2E+PHNwYW4gaWQ9J2xqY210MTIw
NjQ4Mjg2Jz48dGFibGUgd2lkdGg9JzEwMCUnIGNsYXNzPSd0YWxrLWNvbW1lbnQn
Pjx0Ym9keT48dHI+PHRkIHJvd3NwYW49JzInPjxpbWcgc3JjPSdodHRwOi8vbC1z
dGF0LmxpdmVqb3VybmFsLmNvbS9pbWcvZG90LmdpZicgaGVpZ2h0PScxJyB3aWR0
aD0nMTUwJz48L3RkPjx0ZCBpZD0nY210YmFyMTIwNjQ4Mjg2JyBiZ2NvbG9yPScj
YmJkZGZmJyB3aWR0aD0nMTAwJSc+PGZvbnQgc2l6ZT0nKzEnIGZhY2U9J0FyaWFs
LEhlbHZldGljYSc+PGI+PC9iPjwvZm9udD4gPGJyIC8+PHNwYW4gY2xhc3M9J2xq
dXNlcicgbGo6dXNlcj0ndGhlc291cmdyb3ZlJyBzdHlsZT0nd2hpdGUtc3BhY2U6
IG5vd3JhcDsnPjxhIGhyZWY9J2h0dHA6Ly90aGVzb3VyZ3JvdmUubGl2ZWpvdXJu
YWwuY29tL3Byb2ZpbGUnPjxpbWcgc3JjPSdodHRwOi8vbC1zdGF0LmxpdmVqb3Vy
bmFsLmNvbS9pbWcvdXNlcmluZm8uZ2lmJyBhbHQ9J1tpbmZvXScgd2lkdGg9JzE3
JyBoZWlnaHQ9JzE3JyBzdHlsZT0ndmVydGljYWwtYWxpZ246IGJvdHRvbTsgYm9y
ZGVyOiAwOyBwYWRkaW5nLXJpZ2h0OiAxcHg7JyAvPjwvYT48YSBocmVmPSdodHRw
Oi8vdGhlc291cmdyb3ZlLmxpdmVqb3VybmFsLmNvbS8nPjxiPnRoZXNvdXJncm92
ZTwvYj48L2E+PC9zcGFuPgo8YnIgLz48Zm9udCBzaXplPSctMSc+MjAwOS0wMy0z
MCAxMDoyOSBwbSAobG9jYWwpPC9mb250PgogPGZvbnQgc2l6ZT0nLTEnPig8YSBo
cmVmPSdodHRwOi8vY29tbXVuaXR5LmxpdmVqb3VybmFsLmNvbS9iYWRfcnBlcnNf
c3Vjay82NjgwMTU4Lmh0bWw/dGhyZWFkPTEyMDY0ODI4NiN0MTIwNjQ4Mjg2Jz5s
aW5rPC9hPik8L2ZvbnQ+IDxhIGhyZWY9J2h0dHA6Ly93d3cubGl2ZWpvdXJuYWwu
Y29tL21hbmFnZS9zdWJzY3JpcHRpb25zL2NvbW1lbnRzLmJtbD9qb3VybmFsPWJh
ZF9ycGVyc19zdWNrJmFtcDt0YWxraWQ9MTIwNjQ4Mjg2Jz48aW1nIHNyYz0iaHR0
cDovL2wtc3RhdC5saXZlam91cm5hbC5jb20vaW1nL2J0bl90cmFjay5naWYiIHdp
ZHRoPSIyMiIgaGVpZ2h0PSIyMCIgYWx0PSJUcmFjayBUaGlzIiB0aXRsZT0iVHJh
Y2sgVGhpcyIgYm9yZGVyPScwJyBhbGlnbj0iYWJzbWlkZGxlIiAvPjwvYT48L3Rk
PjwvdHI+PHRyPjx0ZD5EaWQgYW55b25lIGV2ZXIgdGVsbCB5b3UgdGhhdCB5b3Un
cmUga2luZCBvZiBkdW1iPzxwIHN0eWxlPSdtYXJnaW46IDAuN2VtIDAgMC4yZW0g
MCc+PGZvbnQgc2l6ZT0nLTInPig8YSBvbmNsaWNrPSdyZXR1cm4gcXVpY2tyZXBs
eSgiMTIwNjQ4Mjg2IiwgNDcxMjgyLCAiIiknIGhyZWY9J2h0dHA6Ly9jb21tdW5p
dHkubGl2ZWpvdXJuYWwuY29tL2JhZF9ycGVyc19zdWNrLzY2ODAxNTguaHRtbD9y
ZXBseXRvPTEyMDY0ODI4NicgPlN2YXIgcMOlIGRldHRlPC9hPikgKDxhIGhyZWY9
J2h0dHA6Ly9jb21tdW5pdHkubGl2ZWpvdXJuYWwuY29tL2JhZF9ycGVyc19zdWNr
LzY2ODAxNTguaHRtbD90aHJlYWQ9MTIwNjQ3Nzc0I3QxMjA2NDc3NzQnPlBhcmVu
dDwvYT4pPC9mb250PjwvcD48ZGl2IGlkPSdsanFydDEyMDY0ODI4NicgbmFtZT0n
bGpxcnQxMjA2NDgyODYnPjwvZGl2PjwvdGQ+PC90cj48L3Rib2R5PjwvdGFibGU+
PC9zcGFuPgo8YSBuYW1lPSd0MTIwNjQ4MDMwJz48L2E+PHNwYW4gaWQ9J2xqY210
MTIwNjQ4MDMwJz48dGFibGUgd2lkdGg9JzEwMCUnIGNsYXNzPSd0YWxrLWNvbW1l
bnQnPjx0Ym9keT48dHI+PHRkIHJvd3NwYW49JzInPjxpbWcgc3JjPSdodHRwOi8v
bC1zdGF0LmxpdmVqb3VybmFsLmNvbS9pbWcvZG90LmdpZicgaGVpZ2h0PScxJyB3
aWR0aD0nMTI1Jz48L3RkPjx0ZCBpZD0nY210YmFyMTIwNjQ4MDMwJyBiZ2NvbG9y
PScjYWFjY2VlJyB3aWR0aD0nMTAwJSc+PGltZyBhbGlnbj0nbGVmdCcgaHNwYWNl
PSczJyBzcmM9J2h0dHA6Ly9sLXVzZXJwaWMubGl2ZWpvdXJuYWwuY29tLzc4NzA2
OTc3LzYyNjgyNTgnIHdpZHRoPSc5OScgdGl0bGU9J1RoZSBxdWVlbiBvZiB0aGUg
aW1wcycgYWx0PScnIGhlaWdodD0nMTAwJyAvPjxmb250IHNpemU9JysxJyBmYWNl
PSdBcmlhbCxIZWx2ZXRpY2EnPjxiPjwvYj48L2ZvbnQ+IDxiciAvPjxzcGFuIGNs
YXNzPSdsanVzZXInIGxqOnVzZXI9J3RlbnNoaW5vZnVzaGlnaScgc3R5bGU9J3do
aXRlLXNwYWNlOiBub3dyYXA7Jz48YSBocmVmPSdodHRwOi8vdGVuc2hpbm9mdXNo
aWdpLmxpdmVqb3VybmFsLmNvbS9wcm9maWxlJz48aW1nIHNyYz0naHR0cDovL2wt
c3RhdC5saXZlam91cm5hbC5jb20vaW1nL3VzZXJpbmZvLmdpZicgYWx0PSdbaW5m
b10nIHdpZHRoPScxNycgaGVpZ2h0PScxNycgc3R5bGU9J3ZlcnRpY2FsLWFsaWdu
OiBib3R0b207IGJvcmRlcjogMDsgcGFkZGluZy1yaWdodDogMXB4OycgLz48L2E+
PGEgaHJlZj0naHR0cDovL3RlbnNoaW5vZnVzaGlnaS5saXZlam91cm5hbC5jb20v
Jz48Yj50ZW5zaGlub2Z1c2hpZ2k8L2I+PC9hPjwvc3Bhbj4KPGJyIC8+PGZvbnQg
c2l6ZT0nLTEnPjIwMDktMDMtMzAgMTA6MjkgcG0gKGxvY2FsKTwvZm9udD4KIDxm
b250IHNpemU9Jy0xJz4oPGEgaHJlZj0naHR0cDovL2NvbW11bml0eS5saXZlam91
cm5hbC5jb20vYmFkX3JwZXJzX3N1Y2svNjY4MDE1OC5odG1sP3RocmVhZD0xMjA2
NDgwMzAjdDEyMDY0ODAzMCc+bGluazwvYT4pPC9mb250PiA8YSBocmVmPSdodHRw
Oi8vd3d3LmxpdmVqb3VybmFsLmNvbS9tYW5hZ2Uvc3Vic2NyaXB0aW9ucy9jb21t
ZW50cy5ibWw/am91cm5hbD1iYWRfcnBlcnNfc3VjayZhbXA7dGFsa2lkPTEyMDY0
ODAzMCc+PGltZyBzcmM9Imh0dHA6Ly9sLXN0YXQubGl2ZWpvdXJuYWwuY29tL2lt
Zy9idG5fdHJhY2suZ2lmIiB3aWR0aD0iMjIiIGhlaWdodD0iMjAiIGFsdD0iVHJh
Y2sgVGhpcyIgdGl0bGU9IlRyYWNrIFRoaXMiIGJvcmRlcj0nMCcgYWxpZ249ImFi
c21pZGRsZSIgLz48L2E+PC90ZD48L3RyPjx0cj48dGQ+SSdtYSBndWVzcy4uLlN0
YWNleS48cCBzdHlsZT0nbWFyZ2luOiAwLjdlbSAwIDAuMmVtIDAnPjxmb250IHNp
emU9Jy0yJz4oPGEgb25jbGljaz0ncmV0dXJuIHF1aWNrcmVwbHkoIjEyMDY0ODAz
MCIsIDQ3MTI4MSwgIiIpJyBocmVmPSdodHRwOi8vY29tbXVuaXR5LmxpdmVqb3Vy
bmFsLmNvbS9iYWRfcnBlcnNfc3Vjay82NjgwMTU4Lmh0bWw/cmVwbHl0bz0xMjA2
NDgwMzAnID5TdmFyIHDDpSBkZXR0ZTwvYT4pICg8YSBocmVmPSdodHRwOi8vY29t
bXVuaXR5LmxpdmVqb3VybmFsLmNvbS9iYWRfcnBlcnNfc3Vjay82NjgwMTU4Lmh0
bWw/dGhyZWFkPTEyMDY0NzAwNiN0MTIwNjQ3MDA2Jz5QYXJlbnQ8L2E+KSg8YSBo
cmVmPSdodHRwOi8vY29tbXVuaXR5LmxpdmVqb3VybmFsLmNvbS9iYWRfcnBlcnNf
c3Vjay82NjgwMTU4Lmh0bWw/dGhyZWFkPTEyMDY0ODAzMCN0MTIwNjQ4MDMwJz5U
csOlZDwvYT4pPC9mb250PjwvcD48ZGl2IGlkPSdsanFydDEyMDY0ODAzMCcgbmFt
ZT0nbGpxcnQxMjA2NDgwMzAnPjwvZGl2PjwvdGQ+PC90cj48L3Rib2R5PjwvdGFi
bGU+PC9zcGFuPgo8YSBuYW1lPSd0MTIwNjQ4NTQyJz48L2E+PHNwYW4gaWQ9J2xq
Y210MTIwNjQ4NTQyJz48dGFibGUgd2lkdGg9JzEwMCUnIGNsYXNzPSd0YWxrLWNv
bW1lbnQnPjx0Ym9keT48dHI+PHRkIHJvd3NwYW49JzInPjxpbWcgc3JjPSdodHRw
Oi8vbC1zdGF0LmxpdmVqb3VybmFsLmNvbS9pbWcvZG90LmdpZicgaGVpZ2h0PScx
JyB3aWR0aD0nMTUwJz48L3RkPjx0ZCBpZD0nY210YmFyMTIwNjQ4NTQyJyBiZ2Nv
bG9yPScjYmJkZGZmJyB3aWR0aD0nMTAwJSc+PGZvbnQgc2l6ZT0nKzEnIGZhY2U9
J0FyaWFsLEhlbHZldGljYSc+PGI+PC9iPjwvZm9udD4gPGJyIC8+PHNwYW4gY2xh
c3M9J2xqdXNlcicgbGo6dXNlcj0ndGhlc291cmdyb3ZlJyBzdHlsZT0nd2hpdGUt
c3BhY2U6IG5vd3JhcDsnPjxhIGhyZWY9J2h0dHA6Ly90aGVzb3VyZ3JvdmUubGl2
ZWpvdXJuYWwuY29tL3Byb2ZpbGUnPjxpbWcgc3JjPSdodHRwOi8vbC1zdGF0Lmxp
dmVqb3VybmFsLmNvbS9pbWcvdXNlcmluZm8uZ2lmJyBhbHQ9J1tpbmZvXScgd2lk
dGg9JzE3JyBoZWlnaHQ9JzE3JyBzdHlsZT0ndmVydGljYWwtYWxpZ246IGJvdHRv
bTsgYm9yZGVyOiAwOyBwYWRkaW5nLXJpZ2h0OiAxcHg7JyAvPjwvYT48YSBocmVm
PSdodHRwOi8vdGhlc291cmdyb3ZlLmxpdmVqb3VybmFsLmNvbS8nPjxiPnRoZXNv
dXJncm92ZTwvYj48L2E+PC9zcGFuPgo8YnIgLz48Zm9udCBzaXplPSctMSc+MjAw
OS0wMy0zMCAxMDoyOSBwbSAobG9jYWwpPC9mb250PgogPGZvbnQgc2l6ZT0nLTEn
Pig8YSBocmVmPSdodHRwOi8vY29tbXVuaXR5LmxpdmVqb3VybmFsLmNvbS9iYWRf
cnBlcnNfc3Vjay82NjgwMTU4Lmh0bWw/dGhyZWFkPTEyMDY0ODU0MiN0MTIwNjQ4
NTQyJz5saW5rPC9hPik8L2ZvbnQ+IDxhIGhyZWY9J2h0dHA6Ly93d3cubGl2ZWpv
dXJuYWwuY29tL21hbmFnZS9zdWJzY3JpcHRpb25zL2NvbW1lbnRzLmJtbD9qb3Vy
bmFsPWJhZF9ycGVyc19zdWNrJmFtcDt0YWxraWQ9MTIwNjQ4NTQyJz48aW1nIHNy
Yz0iaHR0cDovL2wtc3RhdC5saXZlam91cm5hbC5jb20vaW1nL2J0bl90cmFjay5n
aWYiIHdpZHRoPSIyMiIgaGVpZ2h0PSIyMCIgYWx0PSJUcmFjayBUaGlzIiB0aXRs
ZT0iVHJhY2sgVGhpcyIgYm9yZGVyPScwJyBhbGlnbj0iYWJzbWlkZGxlIiAvPjwv
YT48L3RkPjwvdHI+PHRyPjx0ZD5Oby48cCBzdHlsZT0nbWFyZ2luOiAwLjdlbSAw
IDAuMmVtIDAnPjxmb250IHNpemU9Jy0yJz4oPGEgb25jbGljaz0ncmV0dXJuIHF1
aWNrcmVwbHkoIjEyMDY0ODU0MiIsIDQ3MTI4MywgIiIpJyBocmVmPSdodHRwOi8v
Y29tbXVuaXR5LmxpdmVqb3VybmFsLmNvbS9iYWRfcnBlcnNfc3Vjay82NjgwMTU4
Lmh0bWw/cmVwbHl0bz0xMjA2NDg1NDInID5TdmFyIHDDpSBkZXR0ZTwvYT4pICg8
YSBocmVmPSdodHRwOi8vY29tbXVuaXR5LmxpdmVqb3VybmFsLmNvbS9iYWRfcnBl
cnNfc3Vjay82NjgwMTU4Lmh0bWw/dGhyZWFkPTEyMDY0ODAzMCN0MTIwNjQ4MDMw
Jz5QYXJlbnQ8L2E+KTwvZm9udD48L3A+PGRpdiBpZD0nbGpxcnQxMjA2NDg1NDIn
IG5hbWU9J2xqcXJ0MTIwNjQ4NTQyJz48L2Rpdj48L3RkPjwvdHI+PC90Ym9keT48
L3RhYmxlPjwvc3Bhbj4KPGEgbmFtZT0ndDEyMDY0Njc1MCc+PC9hPjxzcGFuIGlk
PSdsamNtdDEyMDY0Njc1MCc+PHRhYmxlIHdpZHRoPScxMDAlJyBjbGFzcz0ndGFs
ay1jb21tZW50Jz48dGJvZHk+PHRyPjx0ZCByb3dzcGFuPScyJz48aW1nIHNyYz0n
aHR0cDovL2wtc3RhdC5saXZlam91cm5hbC5jb20vaW1nL2RvdC5naWYnIGhlaWdo
dD0nMScgd2lkdGg9Jzc1Jz48L3RkPjx0ZCBpZD0nY210YmFyMTIwNjQ2NzUwJyBi
Z2NvbG9yPScjYWFjY2VlJyB3aWR0aD0nMTAwJSc+PGltZyBhbGlnbj0nbGVmdCcg
aHNwYWNlPSczJyBzcmM9J2h0dHA6Ly9sLXVzZXJwaWMubGl2ZWpvdXJuYWwuY29t
Lzc4NzA2ODAxLzYyNjgyNTgnIHdpZHRoPScxMDAnIHRpdGxlPSdUaGUgcXVlZW4g
b2YgdGhlIGltcHM6IGpva2VyIGNsYXAnIGFsdD0nJyBoZWlnaHQ9JzEwMCcgLz48
Zm9udCBzaXplPScrMScgZmFjZT0nQXJpYWwsSGVsdmV0aWNhJz48Yj48L2I+PC9m
b250PiA8YnIgLz48c3BhbiBjbGFzcz0nbGp1c2VyJyBsajp1c2VyPSd0ZW5zaGlu
b2Z1c2hpZ2knIHN0eWxlPSd3aGl0ZS1zcGFjZTogbm93cmFwOyc+PGEgaHJlZj0n
aHR0cDovL3RlbnNoaW5vZnVzaGlnaS5saXZlam91cm5hbC5jb20vcHJvZmlsZSc+
PGltZyBzcmM9J2h0dHA6Ly9sLXN0YXQubGl2ZWpvdXJuYWwuY29tL2ltZy91c2Vy
aW5mby5naWYnIGFsdD0nW2luZm9dJyB3aWR0aD0nMTcnIGhlaWdodD0nMTcnIHN0
eWxlPSd2ZXJ0aWNhbC1hbGlnbjogYm90dG9tOyBib3JkZXI6IDA7IHBhZGRpbmct
cmlnaHQ6IDFweDsnIC8+PC9hPjxhIGhyZWY9J2h0dHA6Ly90ZW5zaGlub2Z1c2hp
Z2kubGl2ZWpvdXJuYWwuY29tLyc+PGI+dGVuc2hpbm9mdXNoaWdpPC9iPjwvYT48
L3NwYW4+CjxiciAvPjxmb250IHNpemU9Jy0xJz4yMDA5LTAzLTMwIDEwOjI2IHBt
IChsb2NhbCk8L2ZvbnQ+CiA8Zm9udCBzaXplPSctMSc+KDxhIGhyZWY9J2h0dHA6
Ly9jb21tdW5pdHkubGl2ZWpvdXJuYWwuY29tL2JhZF9ycGVyc19zdWNrLzY2ODAx
NTguaHRtbD90aHJlYWQ9MTIwNjQ2NzUwI3QxMjA2NDY3NTAnPmxpbms8L2E+KTwv
Zm9udD4gPGEgaHJlZj0naHR0cDovL3d3dy5saXZlam91cm5hbC5jb20vbWFuYWdl
L3N1YnNjcmlwdGlvbnMvY29tbWVudHMuYm1sP2pvdXJuYWw9YmFkX3JwZXJzX3N1
Y2smYW1wO3RhbGtpZD0xMjA2NDY3NTAnPjxpbWcgc3JjPSJodHRwOi8vbC1zdGF0
LmxpdmVqb3VybmFsLmNvbS9pbWcvYnRuX3RyYWNrLmdpZiIgd2lkdGg9IjIyIiBo
ZWlnaHQ9IjIwIiBhbHQ9IlRyYWNrIFRoaXMiIHRpdGxlPSJUcmFjayBUaGlzIiBi
b3JkZXI9JzAnIGFsaWduPSJhYnNtaWRkbGUiIC8+PC9hPjwvdGQ+PC90cj48dHI+
PHRkPllvdSBoYXZlIHNvbWUgcGVyc29uYWwgc3Rha2UgaW4gdGhpcyBvciBkbyB5
b3UganVzdCBnZXQgbWFkIGVhc2lseT88YnIgLz48YnIgLz5JJ20gdGFsa2luZyBk
b3duIHRvIHNwZWNpZmljIHNoaXQgbGlrZSAiaWYgdGhleSdyZSBhIGJsb29kIHRy
YWl0b3JzLCB0aGV5IHdlYXIgYSBtYXJrIG9uIHRoZWlyIGhhbmQsIGFuZCB0aGlz
IGlzIHdoYXQgaXQgbG9va3MgbGlrZSIuPHAgc3R5bGU9J21hcmdpbjogMC43ZW0g
MCAwLjJlbSAwJz48Zm9udCBzaXplPSctMic+KDxhIG9uY2xpY2s9J3JldHVybiBx
dWlja3JlcGx5KCIxMjA2NDY3NTAiLCA0NzEyNzYsICIiKScgaHJlZj0naHR0cDov
L2NvbW11bml0eS5saXZlam91cm5hbC5jb20vYmFkX3JwZXJzX3N1Y2svNjY4MDE1
OC5odG1sP3JlcGx5dG89MTIwNjQ2NzUwJyA+U3ZhciBww6UgZGV0dGU8L2E+KSAo
PGEgaHJlZj0naHR0cDovL2NvbW11bml0eS5saXZlam91cm5hbC5jb20vYmFkX3Jw
ZXJzX3N1Y2svNjY4MDE1OC5odG1sP3RocmVhZD0xMjA2NDU3MjYjdDEyMDY0NTcy
Nic+UGFyZW50PC9hPikoPGEgaHJlZj0naHR0cDovL2NvbW11bml0eS5saXZlam91
cm5hbC5jb20vYmFkX3JwZXJzX3N1Y2svNjY4MDE1OC5odG1sP3RocmVhZD0xMjA2
NDY3NTAjdDEyMDY0Njc1MCc+VHLDpWQ8L2E+KTwvZm9udD48L3A+PGRpdiBpZD0n
bGpxcnQxMjA2NDY3NTAnIG5hbWU9J2xqcXJ0MTIwNjQ2NzUwJz48L2Rpdj48L3Rk
PjwvdHI+PC90Ym9keT48L3RhYmxlPjwvc3Bhbj4KPGEgbmFtZT0ndDEyMDY0NzI2
Mic+PC9hPjxzcGFuIGlkPSdsamNtdDEyMDY0NzI2Mic+PHRhYmxlIHdpZHRoPScx
MDAlJyBjbGFzcz0ndGFsay1jb21tZW50Jz48dGJvZHk+PHRyPjx0ZCByb3dzcGFu
PScyJz48aW1nIHNyYz0naHR0cDovL2wtc3RhdC5saXZlam91cm5hbC5jb20vaW1n
L2RvdC5naWYnIGhlaWdodD0nMScgd2lkdGg9JzEwMCc+PC90ZD48dGQgaWQ9J2Nt
dGJhcjEyMDY0NzI2MicgYmdjb2xvcj0nI2JiZGRmZicgd2lkdGg9JzEwMCUnPjxm
b250IHNpemU9JysxJyBmYWNlPSdBcmlhbCxIZWx2ZXRpY2EnPjxiPjwvYj48L2Zv
bnQ+IDxiciAvPjxzcGFuIGNsYXNzPSdsanVzZXInIGxqOnVzZXI9J3RoZXNvdXJn
cm92ZScgc3R5bGU9J3doaXRlLXNwYWNlOiBub3dyYXA7Jz48YSBocmVmPSdodHRw
Oi8vdGhlc291cmdyb3ZlLmxpdmVqb3VybmFsLmNvbS9wcm9maWxlJz48aW1nIHNy
Yz0naHR0cDovL2wtc3RhdC5saXZlam91cm5hbC5jb20vaW1nL3VzZXJpbmZvLmdp
ZicgYWx0PSdbaW5mb10nIHdpZHRoPScxNycgaGVpZ2h0PScxNycgc3R5bGU9J3Zl
cnRpY2FsLWFsaWduOiBib3R0b207IGJvcmRlcjogMDsgcGFkZGluZy1yaWdodDog
MXB4OycgLz48L2E+PGEgaHJlZj0naHR0cDovL3RoZXNvdXJncm92ZS5saXZlam91
cm5hbC5jb20vJz48Yj50aGVzb3VyZ3JvdmU8L2I+PC9hPjwvc3Bhbj4KPGJyIC8+
PGZvbnQgc2l6ZT0nLTEnPjIwMDktMDMtMzAgMTA6MjcgcG0gKGxvY2FsKTwvZm9u
dD4KIDxmb250IHNpemU9Jy0xJz4oPGEgaHJlZj0naHR0cDovL2NvbW11bml0eS5s
aXZlam91cm5hbC5jb20vYmFkX3JwZXJzX3N1Y2svNjY4MDE1OC5odG1sP3RocmVh
ZD0xMjA2NDcyNjIjdDEyMDY0NzI2Mic+bGluazwvYT4pPC9mb250PiA8YSBocmVm
PSdodHRwOi8vd3d3LmxpdmVqb3VybmFsLmNvbS9tYW5hZ2Uvc3Vic2NyaXB0aW9u
cy9jb21tZW50cy5ibWw/am91cm5hbD1iYWRfcnBlcnNfc3VjayZhbXA7dGFsa2lk
PTEyMDY0NzI2Mic+PGltZyBzcmM9Imh0dHA6Ly9sLXN0YXQubGl2ZWpvdXJuYWwu
Y29tL2ltZy9idG5fdHJhY2suZ2lmIiB3aWR0aD0iMjIiIGhlaWdodD0iMjAiIGFs
dD0iVHJhY2sgVGhpcyIgdGl0bGU9IlRyYWNrIFRoaXMiIGJvcmRlcj0nMCcgYWxp
Z249ImFic21pZGRsZSIgLz48L2E+PC90ZD48L3RyPjx0cj48dGQ+UmlnaHQsIHJp
Z2h0LCBpZGVudGlmeWluZyBtYXJrcyBvbiB0aGUgYXBwZW5kYWdlcyBpbiBIYXJy
eSBQb3R0ZXIgaXMgeW91ciBvd24gdW5pcXVlIGlkZWEuPHAgc3R5bGU9J21hcmdp
bjogMC43ZW0gMCAwLjJlbSAwJz48Zm9udCBzaXplPSctMic+KDxhIG9uY2xpY2s9
J3JldHVybiBxdWlja3JlcGx5KCIxMjA2NDcyNjIiLCA0NzEyNzgsICIiKScgaHJl
Zj0naHR0cDovL2NvbW11bml0eS5saXZlam91cm5hbC5jb20vYmFkX3JwZXJzX3N1
Y2svNjY4MDE1OC5odG1sP3JlcGx5dG89MTIwNjQ3MjYyJyA+U3ZhciBww6UgZGV0
dGU8L2E+KSAoPGEgaHJlZj0naHR0cDovL2NvbW11bml0eS5saXZlam91cm5hbC5j
b20vYmFkX3JwZXJzX3N1Y2svNjY4MDE1OC5odG1sP3RocmVhZD0xMjA2NDY3NTAj
dDEyMDY0Njc1MCc+UGFyZW50PC9hPik8L2ZvbnQ+PC9wPjxkaXYgaWQ9J2xqcXJ0
MTIwNjQ3MjYyJyBuYW1lPSdsanFydDEyMDY0NzI2Mic+PC9kaXY+PC90ZD48L3Ry
PjwvdGJvZHk+PC90YWJsZT48L3NwYW4+CjxhIG5hbWU9J3QxMjA2NDkwNTQnPjwv
YT48c3BhbiBpZD0nbGpjbXQxMjA2NDkwNTQnPjx0YWJsZSB3aWR0aD0nMTAwJScg
Y2xhc3M9J3RhbGstY29tbWVudCc+PHRib2R5Pjx0cj48dGQgcm93c3Bhbj0nMic+
PGltZyBzcmM9J2h0dHA6Ly9sLXN0YXQubGl2ZWpvdXJuYWwuY29tL2ltZy9kb3Qu
Z2lmJyBoZWlnaHQ9JzEnIHdpZHRoPSc1MCc+PC90ZD48dGQgaWQ9J2NtdGJhcjEy
MDY0OTA1NCcgYmdjb2xvcj0nIzk5Y2NmZicgd2lkdGg9JzEwMCUnPjxpbWcgYWxp
Z249J2xlZnQnIGhzcGFjZT0nMycgc3JjPSdodHRwOi8vbC11c2VycGljLmxpdmVq
b3VybmFsLmNvbS8zOTY0NzQ0Ni8zNTgxMzU0JyB3aWR0aD0nMTAwJyB0aXRsZT0n
YmVhcmRlZHRyb2xsJyBhbHQ9JycgaGVpZ2h0PScxMDAnIC8+PGZvbnQgc2l6ZT0n
KzEnIGZhY2U9J0FyaWFsLEhlbHZldGljYSc+PGI+PC9iPjwvZm9udD4gPGJyIC8+
PHNwYW4gY2xhc3M9J2xqdXNlcicgbGo6dXNlcj0nYmVhcmRlZHRyb2xsJyBzdHls
ZT0nd2hpdGUtc3BhY2U6IG5vd3JhcDsnPjxhIGhyZWY9J2h0dHA6Ly9iZWFyZGVk
dHJvbGwubGl2ZWpvdXJuYWwuY29tL3Byb2ZpbGUnPjxpbWcgc3JjPSdodHRwOi8v
bC1zdGF0LmxpdmVqb3VybmFsLmNvbS9pbWcvdXNlcmluZm8uZ2lmJyBhbHQ9J1tp
bmZvXScgd2lkdGg9JzE3JyBoZWlnaHQ9JzE3JyBzdHlsZT0ndmVydGljYWwtYWxp
Z246IGJvdHRvbTsgYm9yZGVyOiAwOyBwYWRkaW5nLXJpZ2h0OiAxcHg7JyAvPjwv
YT48YSBocmVmPSdodHRwOi8vYmVhcmRlZHRyb2xsLmxpdmVqb3VybmFsLmNvbS8n
PjxiPmJlYXJkZWR0cm9sbDwvYj48L2E+PC9zcGFuPgo8YnIgLz48Zm9udCBzaXpl
PSctMSc+MjAwOS0wMy0zMCAxMDozMCBwbSAobG9jYWwpPC9mb250PgogPGZvbnQg
c2l6ZT0nLTEnPig8YSBocmVmPSdodHRwOi8vY29tbXVuaXR5LmxpdmVqb3VybmFs
LmNvbS9iYWRfcnBlcnNfc3Vjay82NjgwMTU4Lmh0bWw/dGhyZWFkPTEyMDY0OTA1
NCN0MTIwNjQ5MDU0Jz5saW5rPC9hPik8L2ZvbnQ+IDxhIGhyZWY9J2h0dHA6Ly9j
b21tdW5pdHkubGl2ZWpvdXJuYWwuY29tL2JhZF9ycGVyc19zdWNrLzY2ODAxNTgu
aHRtbD9lZGl0PTEyMDY0OTA1NCc+PGltZyBzcmM9Imh0dHA6Ly9sLXN0YXQubGl2
ZWpvdXJuYWwuY29tL2ltZy9idG5fZWRpdC5naWYiIHdpZHRoPSIyMiIgaGVpZ2h0
PSIyMCIgYWx0PSJFZGl0IiB0aXRsZT0iRWRpdCIgYm9yZGVyPScwJyB2c3BhY2U9
IiIgaHNwYWNlPSIyIiBhbGlnbj0iYWJzbWlkZGxlIiAvPjwvYT48YSBocmVmPSdo
dHRwOi8vd3d3LmxpdmVqb3VybmFsLmNvbS9kZWxjb21tZW50LmJtbD9qb3VybmFs
PWJhZF9ycGVyc19zdWNrJmFtcDtpZD0xMjA2NDkwNTQnPjxpbWcgc3JjPSJodHRw
Oi8vbC1zdGF0LmxpdmVqb3VybmFsLmNvbS9pbWcvYnRuX2RlbC5naWYiIHdpZHRo
PSIyMiIgaGVpZ2h0PSIyMCIgYWx0PSJEZWxldGUiIHRpdGxlPSJEZWxldGUiIGJv
cmRlcj0nMCcgdnNwYWNlPSIiIGhzcGFjZT0iMiIgYWxpZ249ImFic21pZGRsZSIg
Lz48L2E+PGEgaHJlZj0naHR0cDovL3d3dy5saXZlam91cm5hbC5jb20vbWFuYWdl
L3N1YnNjcmlwdGlvbnMvY29tbWVudHMuYm1sP2pvdXJuYWw9YmFkX3JwZXJzX3N1
Y2smYW1wO3RhbGtpZD0xMjA2NDkwNTQnPjxpbWcgc3JjPSJodHRwOi8vbC1zdGF0
LmxpdmVqb3VybmFsLmNvbS9pbWcvYnRuX3RyYWNrLmdpZiIgd2lkdGg9IjIyIiBo
ZWlnaHQ9IjIwIiBhbHQ9IlRyYWNrIFRoaXMiIHRpdGxlPSJUcmFjayBUaGlzIiBi
b3JkZXI9JzAnIGFsaWduPSJhYnNtaWRkbGUiIC8+PC9hPjxiciAvPjxiPkNvbW1l
bnQgUG9zdGVkIFN1Y2Nlc3NmdWxseTwvYj48L3RkPjwvdHI+PHRyPjx0ZD48aT5U
aGV5IGhhZCBubyBoYW5kIGluIHRoZSBvcmlnaW5hbCBpZGVhLDwvaT48YnIgLz48
YnIgLz5Zb3Uga25vdyBzb21ldGhpbmcgYWJvdXQgaWRlYXM/IFRoZXkncmUgY2hl
YXAuIDxpPlJlYWw8L2k+IGNoZWFwLiBUaGV5IGFsc28gaGF2ZSBubyBsZWdhbCBv
ciBtb3JhbCBwcm90ZWN0aW9uIHdoYXRzb2V2ZXIuIEV2ZXJ5IGF1dGhvciwgcGFp
bnRlciwgc29uZ3dyaXRlciBhbmQgb3RoZXIgYXJ0aXN0IHN0ZWFscyBkb3plbnMg
b2YgaWRlYXMgZXZlcnkgd2Vlay4gU28gd2hlbiBwZW9wbGUgInN0ZWFsIiBhbiBp
ZGVhIHlvdSBjYW1lIHVwIHdpdGg/IEp1c3QgZnVja2luZyBncmluIGFuZCBiZWFy
IGl0LjxwIHN0eWxlPSdtYXJnaW46IDAuN2VtIDAgMC4yZW0gMCc+PGZvbnQgc2l6
ZT0nLTInPig8YSBvbmNsaWNrPSdyZXR1cm4gcXVpY2tyZXBseSgiMTIwNjQ5MDU0
IiwgNDcxMjg1LCAiIiknIGhyZWY9J2h0dHA6Ly9jb21tdW5pdHkubGl2ZWpvdXJu
YWwuY29tL2JhZF9ycGVyc19zdWNrLzY2ODAxNTguaHRtbD9yZXBseXRvPTEyMDY0
OTA1NCcgPlN2YXIgcMOlIGRldHRlPC9hPikgKDxhIGhyZWY9J2h0dHA6Ly9jb21t
dW5pdHkubGl2ZWpvdXJuYWwuY29tL2JhZF9ycGVyc19zdWNrLzY2ODAxNTguaHRt
bD90aHJlYWQ9MTIwNjQ1MjE0I3QxMjA2NDUyMTQnPlBhcmVudDwvYT4pPC9mb250
PjwvcD48ZGl2IGlkPSdsanFydDEyMDY0OTA1NCcgbmFtZT0nbGpxcnQxMjA2NDkw
NTQnPjwvZGl2PjwvdGQ+PC90cj48L3Rib2R5PjwvdGFibGU+PC9zcGFuPgo8YSBu
YW1lPSd0MTIwNjQ3NTE4Jz48L2E+PHNwYW4gaWQ9J2xqY210MTIwNjQ3NTE4Jz48
dGFibGUgd2lkdGg9JzEwMCUnIGNsYXNzPSd0YWxrLWNvbW1lbnQnPjx0Ym9keT48
dHI+PHRkIHJvd3NwYW49JzInPjxpbWcgc3JjPSdodHRwOi8vbC1zdGF0LmxpdmVq
b3VybmFsLmNvbS9pbWcvZG90LmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMCc+PC90
ZD48dGQgaWQ9J2NtdGJhcjEyMDY0NzUxOCcgYmdjb2xvcj0nI2JiZGRmZicgd2lk
dGg9JzEwMCUnPjxpbWcgYWxpZ249J2xlZnQnIGhzcGFjZT0nMycgc3JjPSdodHRw
Oi8vbC11c2VycGljLmxpdmVqb3VybmFsLmNvbS8zOTY0NzQ0Ni8zNTgxMzU0JyB3
aWR0aD0nMTAwJyB0aXRsZT0nYmVhcmRlZHRyb2xsJyBhbHQ9JycgaGVpZ2h0PScx
MDAnIC8+PGZvbnQgc2l6ZT0nKzEnIGZhY2U9J0FyaWFsLEhlbHZldGljYSc+PGI+
PC9iPjwvZm9udD4gPGJyIC8+PHNwYW4gY2xhc3M9J2xqdXNlcicgbGo6dXNlcj0n
YmVhcmRlZHRyb2xsJyBzdHlsZT0nd2hpdGUtc3BhY2U6IG5vd3JhcDsnPjxhIGhy
ZWY9J2h0dHA6Ly9iZWFyZGVkdHJvbGwubGl2ZWpvdXJuYWwuY29tL3Byb2ZpbGUn
PjxpbWcgc3JjPSdodHRwOi8vbC1zdGF0LmxpdmVqb3VybmFsLmNvbS9pbWcvdXNl
cmluZm8uZ2lmJyBhbHQ9J1tpbmZvXScgd2lkdGg9JzE3JyBoZWlnaHQ9JzE3JyBz
dHlsZT0ndmVydGljYWwtYWxpZ246IGJvdHRvbTsgYm9yZGVyOiAwOyBwYWRkaW5n
LXJpZ2h0OiAxcHg7JyAvPjwvYT48YSBocmVmPSdodHRwOi8vYmVhcmRlZHRyb2xs
LmxpdmVqb3VybmFsLmNvbS8nPjxiPmJlYXJkZWR0cm9sbDwvYj48L2E+PC9zcGFu
Pgo8YnIgLz48Zm9udCBzaXplPSctMSc+MjAwOS0wMy0zMCAxMDoyNyBwbSAobG9j
YWwpPC9mb250PgogPGZvbnQgc2l6ZT0nLTEnPig8YSBocmVmPSdodHRwOi8vY29t
bXVuaXR5LmxpdmVqb3VybmFsLmNvbS9iYWRfcnBlcnNfc3Vjay82NjgwMTU4Lmh0
bWw/dGhyZWFkPTEyMDY0NzUxOCN0MTIwNjQ3NTE4Jz5saW5rPC9hPik8L2ZvbnQ+
IDxhIGhyZWY9J2h0dHA6Ly93d3cubGl2ZWpvdXJuYWwuY29tL2RlbGNvbW1lbnQu
Ym1sP2pvdXJuYWw9YmFkX3JwZXJzX3N1Y2smYW1wO2lkPTEyMDY0NzUxOCc+PGlt
ZyBzcmM9Imh0dHA6Ly9sLXN0YXQubGl2ZWpvdXJuYWwuY29tL2ltZy9idG5fZGVs
LmdpZiIgd2lkdGg9IjIyIiBoZWlnaHQ9IjIwIiBhbHQ9IkRlbGV0ZSIgdGl0bGU9
IkRlbGV0ZSIgYm9yZGVyPScwJyB2c3BhY2U9IiIgaHNwYWNlPSIyIiBhbGlnbj0i
YWJzbWlkZGxlIiAvPjwvYT48YSBocmVmPSdodHRwOi8vd3d3LmxpdmVqb3VybmFs
LmNvbS9tYW5hZ2Uvc3Vic2NyaXB0aW9ucy9jb21tZW50cy5ibWw/am91cm5hbD1i
YWRfcnBlcnNfc3VjayZhbXA7dGFsa2lkPTEyMDY0NzUxOCc+PGltZyBzcmM9Imh0
dHA6Ly9sLXN0YXQubGl2ZWpvdXJuYWwuY29tL2ltZy9idG5fdHJhY2suZ2lmIiB3
aWR0aD0iMjIiIGhlaWdodD0iMjAiIGFsdD0iVHJhY2sgVGhpcyIgdGl0bGU9IlRy
YWNrIFRoaXMiIGJvcmRlcj0nMCcgYWxpZ249ImFic21pZGRsZSIgLz48L2E+PC90
ZD48L3RyPjx0cj48dGQ+PGk+IFdpdGggYSBwcmVtaXNlIHlvdSBSSVBQRUQgT0ZG
IEZST00gVVMuPC9pPjxiciAvPjxiciAvPldobywgaW4gdHVybiwgcmlwcGVkIGl0
IGZyb20gUm93bGluZy4gWW91ciBwb2ludD88cCBzdHlsZT0nbWFyZ2luOiAwLjdl
bSAwIDAuMmVtIDAnPjxmb250IHNpemU9Jy0yJz4oPGEgb25jbGljaz0ncmV0dXJu
IHF1aWNrcmVwbHkoIjEyMDY0NzUxOCIsIDQ3MTI3OSwgIiIpJyBocmVmPSdodHRw
Oi8vY29tbXVuaXR5LmxpdmVqb3VybmFsLmNvbS9iYWRfcnBlcnNfc3Vjay82Njgw
MTU4Lmh0bWw/cmVwbHl0bz0xMjA2NDc1MTgnID5TdmFyIHDDpSBkZXR0ZTwvYT4p
ICg8YSBocmVmPSdodHRwOi8vY29tbXVuaXR5LmxpdmVqb3VybmFsLmNvbS9iYWRf
cnBlcnNfc3Vjay82NjgwMTU4Lmh0bWw/dGhyZWFkPTEyMDY0NzUxOCN0MTIwNjQ3
NTE4Jz5UcsOlZDwvYT4pPC9mb250PjwvcD48ZGl2IGlkPSdsanFydDEyMDY0NzUx
OCcgbmFtZT0nbGpxcnQxMjA2NDc1MTgnPjwvZGl2PjwvdGQ+PC90cj48L3Rib2R5
PjwvdGFibGU+PC9zcGFuPgo8YSBuYW1lPSd0MTIwNjQ4Nzk4Jz48L2E+PHNwYW4g
aWQ9J2xqY210MTIwNjQ4Nzk4Jz48dGFibGUgd2lkdGg9JzEwMCUnIGNsYXNzPSd0
YWxrLWNvbW1lbnQnPjx0Ym9keT48dHI+PHRkIHJvd3NwYW49JzInPjxpbWcgc3Jj
PSdodHRwOi8vbC1zdGF0LmxpdmVqb3VybmFsLmNvbS9pbWcvZG90LmdpZicgaGVp
Z2h0PScxJyB3aWR0aD0nMjUnPjwvdGQ+PHRkIGlkPSdjbXRiYXIxMjA2NDg3OTgn
IGJnY29sb3I9JyNhYWNjZWUnIHdpZHRoPScxMDAlJz48Zm9udCBzaXplPScrMScg
ZmFjZT0nQXJpYWwsSGVsdmV0aWNhJz48Yj48L2I+PC9mb250PiA8YnIgLz48c3Bh
biBjbGFzcz0nbGp1c2VyJyBsajp1c2VyPSd0aGVzb3VyZ3JvdmUnIHN0eWxlPSd3
aGl0ZS1zcGFjZTogbm93cmFwOyc+PGEgaHJlZj0naHR0cDovL3RoZXNvdXJncm92
ZS5saXZlam91cm5hbC5jb20vcHJvZmlsZSc+PGltZyBzcmM9J2h0dHA6Ly9sLXN0
YXQubGl2ZWpvdXJuYWwuY29tL2ltZy91c2VyaW5mby5naWYnIGFsdD0nW2luZm9d
JyB3aWR0aD0nMTcnIGhlaWdodD0nMTcnIHN0eWxlPSd2ZXJ0aWNhbC1hbGlnbjog
Ym90dG9tOyBib3JkZXI6IDA7IHBhZGRpbmctcmlnaHQ6IDFweDsnIC8+PC9hPjxh
IGhyZWY9J2h0dHA6Ly90aGVzb3VyZ3JvdmUubGl2ZWpvdXJuYWwuY29tLyc+PGI+
dGhlc291cmdyb3ZlPC9iPjwvYT48L3NwYW4+CjxiciAvPjxmb250IHNpemU9Jy0x
Jz4yMDA5LTAzLTMwIDEwOjMwIHBtIChsb2NhbCk8L2ZvbnQ+CiA8Zm9udCBzaXpl
PSctMSc+KDxhIGhyZWY9J2h0dHA6Ly9jb21tdW5pdHkubGl2ZWpvdXJuYWwuY29t
L2JhZF9ycGVyc19zdWNrLzY2ODAxNTguaHRtbD90aHJlYWQ9MTIwNjQ4Nzk4I3Qx
MjA2NDg3OTgnPmxpbms8L2E+KTwvZm9udD4gPGEgaHJlZj0naHR0cDovL3d3dy5s
aXZlam91cm5hbC5jb20vbWFuYWdlL3N1YnNjcmlwdGlvbnMvY29tbWVudHMuYm1s
P2pvdXJuYWw9YmFkX3JwZXJzX3N1Y2smYW1wO3RhbGtpZD0xMjA2NDg3OTgnPjxp
bWcgc3JjPSJodHRwOi8vbC1zdGF0LmxpdmVqb3VybmFsLmNvbS9pbWcvYnRuX3Ry
YWNrLmdpZiIgd2lkdGg9IjIyIiBoZWlnaHQ9IjIwIiBhbHQ9IlRyYWNrIFRoaXMi
IHRpdGxlPSJUcmFjayBUaGlzIiBib3JkZXI9JzAnIGFsaWduPSJhYnNtaWRkbGUi
IC8+PC9hPjwvdGQ+PC90cj48dHI+PHRkPlRoZSBwb2ludCBpcyBvYnZpb3VzbHkg
QkFXV1dXV1dXV1dXV1dXV1dXV1dXVy48cCBzdHlsZT0nbWFyZ2luOiAwLjdlbSAw
IDAuMmVtIDAnPjxmb250IHNpemU9Jy0yJz4oPGEgb25jbGljaz0ncmV0dXJuIHF1
aWNrcmVwbHkoIjEyMDY0ODc5OCIsIDQ3MTI4NCwgIiIpJyBocmVmPSdodHRwOi8v
Y29tbXVuaXR5LmxpdmVqb3VybmFsLmNvbS9iYWRfcnBlcnNfc3Vjay82NjgwMTU4
Lmh0bWw/cmVwbHl0bz0xMjA2NDg3OTgnID5TdmFyIHDDpSBkZXR0ZTwvYT4pICg8
YSBocmVmPSdodHRwOi8vY29tbXVuaXR5LmxpdmVqb3VybmFsLmNvbS9iYWRfcnBl
cnNfc3Vjay82NjgwMTU4Lmh0bWw/dGhyZWFkPTEyMDY0NzUxOCN0MTIwNjQ3NTE4
Jz5QYXJlbnQ8L2E+KTwvZm9udD48L3A+PGRpdiBpZD0nbGpxcnQxMjA2NDg3OTgn
IG5hbWU9J2xqcXJ0MTIwNjQ4Nzk4Jz48L2Rpdj48L3RkPjwvdHI+PC90Ym9keT48
L3RhYmxlPjwvc3Bhbj4KPGhyIC8+PHAgY2xhc3M9J2xlc3N0b3AnIGFsaWduPSdj
ZW50ZXInPjxiPig8YSBvbmNsaWNrPSdyZXR1cm4gcXVpY2tyZXBseSgiYm90dG9t
IiwgMCwgIiIpJyBocmVmPSdodHRwOi8vY29tbXVuaXR5LmxpdmVqb3VybmFsLmNv
bS9iYWRfcnBlcnNfc3Vjay82NjgwMTU4Lmh0bWw/bW9kZT1yZXBseScgPlBvc3Qg
YSBuZXcgY29tbWVudDwvYT48L2E+KTwvYj48L3A+PGRpdiBhbGlnbj0nY2VudGVy
Jz48ZGl2IGlkPSdsanFydGJvdHRvbScgbmFtZT0nbGpxcnRib3R0b20nPjwvZGl2
PjwvZGl2PjwvZm9ybT48L2Rpdj4KCiAgICAgICAgPGRpdiBjbGFzcz0nY2xlYXIn
PjwvZGl2PgogICAgICAKICAgICAgPC9kaXY+CgogICAgICAKCiAgICA8L2Rpdj4K
ICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0icHVzaCI+PC9kaXY+CiAgICA8L2Rp
dj4KICAgIDwhLS0gRW5kIFwjY29udGVudCAtLT4KCiAgICAKICAgICAgICA8ZGl2
IGlkPSJmb290ZXIiPgogICAgICAgICAgICA8ZGl2IGlkPSJmb290ZXItbGlua3Mi
PgogICAgICAgICAgICAgICAgPHRhYmxlPjx0cj4KICAgICAgICAgICAgICAgICAg
ICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDxoMz5BYm91dDwvaDM+CiAg
ICAgICAgICAgICAgICAgICAgICAgIDx1bCBpZD0iZm9vdGVyLWxpbmtzLWNvbDEi
PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHA6
Ly93d3cubGl2ZWpvdXJuYWwuY29tL2NvbnRhY3QvIj5Db250YWN0PC9hPjwvbGk+
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cDov
L2xpdmVqb3VybmFsaW5jLmNvbS9zYWxlcy5waHAiPkFkdmVydGlzZTwvYT48L2xp
PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHA6
Ly93d3cubGl2ZWpvdXJuYWxpbmMuY29tL2pvYnMvIj5Kb2JzPC9hPjwvbGk+CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cDovL3d3
dy5saXZlam91cm5hbC5jb20vbmV3cy5ibWwiPlNpdGUgTmV3czwvYT48L2xpPgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHA6Ly93
d3cubGl2ZWpvdXJuYWxpbmMuY29tLyI+TW9yZS4uLjwvYT48L2xpPgogICAgICAg
ICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgIDwvdGQ+
CiAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAg
ICA8aDM+SGVscDwvaDM+CiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBpZD0i
Zm9vdGVyLWxpbmtzLWNvbDIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
PGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cubGl2ZWpvdXJuYWwuY29tL3N1cHBvcnQv
Ij5TdXBwb3J0PC9hPiAvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBo
cmVmPSJodHRwOi8vd3d3LmxpdmVqb3VybmFsLmNvbS9zdXBwb3J0L2ZhcS5ibWwi
PkZBUXM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48
YSBocmVmPSJodHRwOi8vd3d3LmxpdmVqb3VybmFsLmNvbS9zaXRlL3NhZmV0eXRp
cHMuYm1sIj5TYWZldHkgVGlwczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAg
ICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICA8aDMgaWQ9ImZvb3Rl
ci1saW5rcy1nZXRpbnZvbHZlZCI+R2V0IEludm9sdmVkPC9oMz4KICAgICAgICAg
ICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
PGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cubGl2ZWpvdXJuYWwuY29tL3N1cHBvcnQv
ZmFxYnJvd3NlLmJtbD9mYXFpZD01NyI+Vm9sdW50ZWVyPC9hPjwvbGk+CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cDovL2NvbW11
bml0eS5saXZlam91cm5hbC5jb20vbGpfZGV2LyI+RGV2ZWxvcGVyczwvYT48L2xp
PgogICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAg
ICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAg
ICAgICAgICAgICA8aDM+TGVnYWw8L2gzPgogICAgICAgICAgICAgICAgICAgICAg
ICA8dWwgaWQ9ImZvb3Rlci1saW5rcy1jb2wzIj4KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwOi8vd3d3LmxpdmVqb3VybmFsLmNv
bS9sZWdhbC90b3MuYm1sIj5UZXJtcyBvZiBTZXJ2aWNlPC9hPjwvbGk+CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cDovL3d3dy5s
aXZlam91cm5hbC5jb20vbGVnYWwvcHJpdmFjeS5ibWwiPlByaXZhY3kgUG9saWN5
PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJl
Zj0iaHR0cDovL3d3dy5saXZlam91cm5hbC5jb20vbGVnYWwvZG1jYS5ibWwiPkNv
cHlyaWdodDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxp
PjxhIGhyZWY9Imh0dHA6Ly93d3cubGl2ZWpvdXJuYWwuY29tL2FidXNlL3BvbGlj
eS5ibWwiPkFidXNlIFBvbGljeTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAg
ICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAg
ICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICA8aDM+U3RvcmU8
L2gzPgogICAgICAgICAgICAgICAgICAgICAgICA8dWwgaWQ9ImZvb3Rlci1saW5r
cy1jb2w0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVm
PSJodHRwOi8vd3d3LmxpdmVqb3VybmFsLmNvbS9tYW5hZ2UvYWNjb3VudC8iPlVw
Z3JhZGUgQWNjb3VudDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cubGl2ZWpvdXJuYWwuY29tL3Nob3Av
dmdpZnQuYm1sIj5WaXJ0dWFsIEdpZnRzPC9hPjwvbGk+CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cHM6Ly93d3cuc3ByZWFkc2hp
cnQuY29tL3Nob3AucGhwP3NpZD0xMjEzODAmb3A9YXJ0aWNsZXMmcD0xIj5NZXJj
aGFuZGlzZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxp
PjxhIGhyZWY9Imh0dHA6Ly93d3cubGl2ZWpvdXJuYWwuY29tL3Nob3Avdmlldy5i
bWw/aXRlbT1naWZ0Y2VydGlmaWNhdGUiPkdpZnQgQ2VydGlmaWNhdGVzPC9hPjwv
bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0
cDovL3d3dy5saXZlam91cm5hbC5jb20vc2hvcC8iPk1vcmUuLi48L2E+PC9saT4K
ICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAg
ICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAg
ICAgICAgICAgPGgzPkxKIExhYnM8L2gzPgogICAgICAgICAgICAgICAgICAgICAg
ICA8dWwgY2xhc3M9ImZvb3Rlci1saW5rcy1jb2wiIGlkPSJmb290ZXItbGlua3Mt
Y29sNSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0i
aHR0cDovL2Rhc2hib2FyZC5saXZlam91cm5hbC5jb20vIj5MSiBEYXNoYm9hcmQ8
L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVm
PSJodHRwOi8vYXF1YS5saXZlam91cm5hbC5ydS8iPkxKIEFxdWE8L2E+PC9saT4K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwOi8v
d3d3LmxpdmVqb3VybmFsLmNvbS9sYWJzLmJtbCI+TW9yZS4uLjwvYT48L2xpPgog
ICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAg
IDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJsYXN0Ij4KICAg
ICAgICAgICAgICAgICAgICAgICAgPHVsIGlkPSJmb290ZXItbGlua3MtY29sNiI+
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+Q2hhbmdlIGxhbmd1YWdl
OjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PHNlbGVjdCBu
YW1lPSJsYW5nIiBpZD0iZm9vdGVyX2xhbmdfbGlzdCI+CjxvcHRpb24gdmFsdWU9
ImVuX0xKIj5FbmdsaXNoPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9ImVuX0dCIj5F
bmdsaXNoIChVSyk8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iZGUiPkRldXRzY2g8
L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iZGEiPkRhbnNrPC9vcHRpb24+CjxvcHRp
b24gdmFsdWU9ImVzIj5lc3Bhw7FvbDwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSJm
ciI+RnJhbsOnYWlzPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9Iml0Ij5JdGFsaWFu
bzwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSJydSI+0KDRg9GB0YHQutC40Lk8L29w
dGlvbj4KPG9wdGlvbiB2YWx1ZT0idWsiPtCj0LrRgNCw0ZfQvdGB0YzQutCwPC9v
cHRpb24+CjxvcHRpb24gdmFsdWU9ImJlIj7QkdC10LvQsNGA0YPRgdC60LDRjzwv
b3B0aW9uPgo8b3B0aW9uIHZhbHVlPSJqYSI+5pel5pys6KqePC9vcHRpb24+Cjxv
cHRpb24gdmFsdWU9InB0Ij5Qb3J0dWd1w6pzPC9vcHRpb24+CjxvcHRpb24gdmFs
dWU9ImVvIj5Fc3BlcmFudG88L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iaGUiPtei
15HXqNeZ16o8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0ibmwiPk5lZGVybGFuZHM8
L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iaHUiPk1hZ3lhcjwvb3B0aW9uPgo8b3B0
aW9uIHZhbHVlPSJnYSI+R2FlaWxnZTwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSJp
cyI+w61zbGVuc2thPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9ImZpIj5zdW9taTwv
b3B0aW9uPgo8b3B0aW9uIHZhbHVlPSJnciI+zpXOu867zrfOvc65zrrOrDwvb3B0
aW9uPgo8b3B0aW9uIHZhbHVlPSJuYiI+Tm9yc2sgYm9rbcOlbDwvb3B0aW9uPgo8
b3B0aW9uIHZhbHVlPSJzdiI+U3ZlbnNrYTwvb3B0aW9uPgo8b3B0aW9uIHZhbHVl
PSJwbCI+cG9sc2tpPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9InpoIj7nroDkvZPk
uK3mloc8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0ibHYiPkxhdHZpZcWhdTwvb3B0
aW9uPgo8b3B0aW9uIHZhbHVlPSJ0ciI+VMO8cmvDp2U8L29wdGlvbj4KPG9wdGlv
biB2YWx1ZT0ibXMiPkJhaGFzYSBNZWxheXU8L29wdGlvbj4KPG9wdGlvbiB2YWx1
ZT0iaGkiPuCkueCkv+CkqOCljeCkpuClgDwvb3B0aW9uPgo8b3B0aW9uIHZhbHVl
PSJwdF9CUiI+UG9ydHVndcOqcyBCcmFzaWxlaXJvPC9vcHRpb24+CjxvcHRpb24g
dmFsdWU9InpoX1RSIj7nuYHpq5TkuK3mloc8L29wdGlvbj4KPG9wdGlvbiB2YWx1
ZT0ibHQiPkxpZXR1dmnFszwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSJubiIgc2Vs
ZWN0ZWQ9J3NlbGVjdGVkJz5Ob3JzayBueW5vcnNrPC9vcHRpb24+Cjwvc2VsZWN0
PjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CgkJCQkJCTxkbCBj
bGFzcz0iY3VycmVudC12ZXJzaW9uIj48ZHQ+PGEgaHJlZj0iaHR0cDovL25ld3Mu
bGl2ZWpvdXJuYWwuY29tLyI+Q3VycmVudCB2ZXJzaW9uPC9hPjo8L2R0PjxkZD52
LiA0Ny41PC9kZD48L2RsPgogICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAg
ICAgICAgICAgICA8L3RyPjx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgY29s
c3Bhbj0iNiI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJtb3Jl
X2xqIj48YSBocmVmPSJodHRwOi8vd3d3LmxpdmVqb3VybmFsLmNvbS9zaXRlLyI+
JnJhcXVvOyBWaWV3IEZ1bGwgU2l0ZW1hcDwvYT48L3A+CiAgICAgICAgICAgICAg
ICAgICAgPC90ZD4KICAgICAgICAgICAgICAgIDwvdHI+PC90YWJsZT4KICAgICAg
ICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgaWQ9ImZvb3Rlci1jb3B5cmln
aHQiPkNvcHlyaWdodCAmY29weTsgMTk5OS0yMDA5IExpdmVKb3VybmFsLCBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLjwvZGl2PgogICAgICAgIDwvZGl2PgogICAg
ICAgIDwhLS0gZW5kIGZvb3RlciAtLT4KICAgIAoKCiAgICA8ZGl2IGlkPSJuYXZp
Z2F0aW9uIj4KICAgIDxkaXYgaWQ9J1VzZXJwaWMnPjxhIGhyZWY9J2h0dHA6Ly93
d3cubGl2ZWpvdXJuYWwuY29tL2FsbHBpY3MuYm1sJz48ZGl2IGlkPSdkZWZhdWx0
cGljJyBzdHlsZT0nYmFja2dyb3VuZC1pbWFnZTogdXJsKGh0dHA6Ly9sLXVzZXJw
aWMubGl2ZWpvdXJuYWwuY29tLzM5NjQ3NDQ2LzM1ODEzNTQpJz48L2Rpdj48L2E+
PC9kaXY+PCEtLSBlbmQgI1VzZXJwaWMgLS0+CiAgICAgIDxkaXYgaWQ9Ik5hdmln
YXRpb25XZWxjb21lTG9nbyI+CiAgICAgICAgICAgICAgICA8ZGl2IGlkPSJ3ZWxj
b21lIj4KICAgICAgICAgICAgPGgyPjxzcGFuIGNsYXNzPSdsanVzZXInIGxqOnVz
ZXI9J2JlYXJkZWR0cm9sbCcgc3R5bGU9J3doaXRlLXNwYWNlOiBub3dyYXA7Jz48
YSBocmVmPSdodHRwOi8vYmVhcmRlZHRyb2xsLmxpdmVqb3VybmFsLmNvbS9wcm9m
aWxlJz48aW1nIHNyYz0naHR0cDovL2wtc3RhdC5saXZlam91cm5hbC5jb20vaW1n
L3VzZXJpbmZvLmdpZicgYWx0PSdbaW5mb10nIHdpZHRoPScxNycgaGVpZ2h0PScx
Nycgc3R5bGU9J3ZlcnRpY2FsLWFsaWduOiBib3R0b207IGJvcmRlcjogMDsgcGFk
ZGluZy1yaWdodDogMXB4OycgLz48L2E+PGEgaHJlZj0naHR0cDovL2JlYXJkZWR0
cm9sbC5saXZlam91cm5hbC5jb20vJz48Yj5iZWFyZGVkdHJvbGw8L2I+PC9hPjwv
c3Bhbj48L2gyPgogICAgICAgICAgICA8ZGl2IGlkPSJXZWxjb21lTGlua3MiPgog
ICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly93d3cubGl2ZWpvdXJuYWwuY29t
L21hbmFnZS9zZXR0aW5ncy8iPkFjY291bnQ8L2E+CiAgICAgICAgICAgICAgPGEg
aHJlZj0iaHR0cDovL3d3dy5saXZlam91cm5hbC5jb20vbWFuYWdlL2FjY291bnQv
Ij48aW1nIHNyYz0naHR0cDovL2wtc3RhdC5saXZlam91cm5hbC5jb20vaW1nL3Bh
aWQuZ2lmJyBhbHQ9JycgYm9yZGVyPScwJyAvPjwvYT4gfAogICAgICAgICAgICAg
IDxhIGhyZWY9Imh0dHA6Ly93d3cubGl2ZWpvdXJuYWwuY29tL3N1cHBvcnQvIj5I
ZWxwPC9hPiB8CiAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3d3dy5saXZl
am91cm5hbC5jb20vbG9nb3V0LmJtbD91c2VyPWJlYXJkZWR0cm9sbCZhbXA7c2Vz
c2lkPTQzMiI+TG9nb3V0PC9hPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAg
ICAgPGRpdiBpZD0iV2VsY29tZVZpZXdMaW5rcyI+CiAgICAgICAgICAgICAgPHVs
IGNsYXNzPSJ2aWV3Ij4KICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSdodHRw
Oi8vd3d3LmxpdmVqb3VybmFsLmNvbS91cGRhdGUuYm1sJz5Qb3N0PC9hPiB8PC9s
aT4KICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSdodHRwOi8vd3d3LmxpdmVq
b3VybmFsLmNvbS9pbmJveC8nPk1lc3NhZ2VzPHNwYW4gaWQ9IkxKX0luYm94X1Vu
cmVhZF9Db3VudCI+PC9zcGFuPjwvYT4gfDwvbGk+CiAgICAgICAgICAgICAgICA8
bGk+PGEgaHJlZj0iaHR0cDovL2JlYXJkZWR0cm9sbC5saXZlam91cm5hbC5jb20v
ZnJpZW5kcy8iPkZyaWVuZHMgUGFnZTwvYT4gfDwvbGk+CiAgICAgICAgICAgICAg
ICA8bGk+PGEgaHJlZj0iaHR0cDovL3d3dy5saXZlam91cm5hbC5jb20vZnJpZW5k
cy9pbnZpdGUuYm1sIj5JbnZpdGU8L2E+CiAgICAgICAgICAgICAgICAgfCA8L2xp
PjxsaT48YSBocmVmPSJodHRwOi8vd3d3LmxpdmVqb3VybmFsLmNvbS9tYW5hZ2Uv
c2V0dGluZ3MvP2NhdD1tb2JpbGUiPk1vYmlsZTwvYT48L2xpPiAKICAgICAgICAg
ICAgICAgIAogICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgIDwvZGl2Pgog
ICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8IS0tIEVuZCBXZWxjb21lIC0tPgoK
ICAgICAgPC9kaXY+CiAgICAgIDwhLS0gRW5kIE5hdmlnYXRpb24gYW5kIFdlbGNv
bWUgLS0+CgogICAgICAgICAgICA8ZGl2IGlkPSdOYXZCYXInPgogICAgICA8dWwg
aWQ9J05hdk1lbnUnPgogICAgICA8bGkgY2xhc3M9J05hdk1lbnVJdGVtJyBpZD0n
TmF2TWVudUl0ZW0xJz48YSBocmVmPSdodHRwOi8vd3d3LmxpdmVqb3VybmFsLmNv
bS8nPkhvbWU8L2E+PC9saT4KPGxpIGNsYXNzPSdOYXZNZW51SXRlbScgaWQ9J05h
dk1lbnVJdGVtMic+PGEgaHJlZj0naHR0cDovL2JlYXJkZWR0cm9sbC5saXZlam91
cm5hbC5jb20vJz5Kb3VybmFsPC9hPjx1bCBjbGFzcz0nTmF2TWVudVN1Yk5hdicg
aWQ9J05hdk1lbnUyJz4KPGxpIGNsYXNzPSdOYXZNZW51U3ViTmF2QmFjayc+PGlm
cmFtZSBzcmM9J2Fib3V0OmJsYW5rJyBmcmFtZWJvcmRlcj0nMCcgY2xhc3M9J05h
dk1lbnVTdWJOYXZCYWNrJz48L2lmcmFtZT48L2xpPjxsaSBjbGFzcz0nJz48YSBo
cmVmPSdodHRwOi8vd3d3LmxpdmVqb3VybmFsLmNvbS91cGRhdGUuYm1sJz5Qb3N0
IGFuIEVudHJ5PC9hPjwvbGk+CjxsaSBjbGFzcz0nJz48YSBocmVmPSdodHRwOi8v
d3d3LmxpdmVqb3VybmFsLmNvbS9lZGl0am91cm5hbC5ibWwnPkVkaXQgRW50cmll
czwvYT48L2xpPgo8bGkgY2xhc3M9Jyc+PGEgaHJlZj0naHR0cDovL3d3dy5saXZl
am91cm5hbC5jb20vY3VzdG9taXplLyc+U2VsZWN0IEpvdXJuYWwgU3R5bGU8L2E+
PC9saT4KPGxpIGNsYXNzPScnPjxhIGhyZWY9J2h0dHA6Ly93d3cubGl2ZWpvdXJu
YWwuY29tL2N1c3RvbWl6ZS9vcHRpb25zLmJtbCc+Q3VzdG9taXplIEpvdXJuYWwg
U3R5bGU8L2E+PC9saT4KPGxpIGNsYXNzPScnPjxhIGhyZWY9J2h0dHA6Ly93d3cu
bGl2ZWpvdXJuYWwuY29tL3Rvb2xzL3JlY2VudF9jb21tZW50cy5ibWwnPk1hbmFn
ZSBDb21tZW50czwvYT48L2xpPgo8bGkgY2xhc3M9Jyc+PGEgaHJlZj0naHR0cDov
L3d3dy5saXZlam91cm5hbC5jb20vbWFuYWdlL3RhZ3MuYm1sJz5NYW5hZ2UgVGFn
czwvYT48L2xpPgo8bGkgY2xhc3M9Jyc+PGEgaHJlZj0naHR0cDovL3d3dy5saXZl
am91cm5hbC5jb20vbWFuYWdlL3NldHRpbmdzLz9jYXQ9ZGlzcGxheSc+Vmlld2lu
ZyBPcHRpb25zPC9hPjwvbGk+CjwvdWw+CjwvbGk+CjxsaSBjbGFzcz0nTmF2TWVu
dUl0ZW0nIGlkPSdOYXZNZW51SXRlbTMnPjxhIGhyZWY9J2h0dHA6Ly9iZWFyZGVk
dHJvbGwubGl2ZWpvdXJuYWwuY29tL3Byb2ZpbGUnPlByb2ZpbGU8L2E+PHVsIGNs
YXNzPSdOYXZNZW51U3ViTmF2JyBpZD0nTmF2TWVudTMnPgo8bGkgY2xhc3M9J05h
dk1lbnVTdWJOYXZCYWNrJz48aWZyYW1lIHNyYz0nYWJvdXQ6YmxhbmsnIGZyYW1l
Ym9yZGVyPScwJyBjbGFzcz0nTmF2TWVudVN1Yk5hdkJhY2snPjwvaWZyYW1lPjwv
bGk+PGxpIGNsYXNzPScnPjxhIGhyZWY9J2h0dHA6Ly93d3cubGl2ZWpvdXJuYWwu
Y29tL21hbmFnZS9wcm9maWxlLyc+RWRpdCBQcm9maWxlPC9hPjwvbGk+CjxsaSBj
bGFzcz0nJz48YSBocmVmPSdodHRwOi8vd3d3LmxpdmVqb3VybmFsLmNvbS9lZGl0
cGljcy5ibWwnPk1hbmFnZSBVc2VycGljcyA8c3BhbiBjbGFzcz0ncGljLWNvdW50
Jz4oMjQgb2YgNDApPC9zcGFuPjwvYT48L2xpPgo8bGkgY2xhc3M9Jyc+PGEgaHJl
Zj0naHR0cDovL3d3dy5saXZlam91cm5hbC5jb20vc2Nob29scy9tYW5hZ2UuYm1s
Jz5NYW5hZ2UgU2Nob29sczwvYT48L2xpPgo8bGkgY2xhc3M9Jyc+PGEgaHJlZj0n
aHR0cDovL3d3dy5saXZlam91cm5hbC5jb20vdG9vbHMvbWVtb3JpZXMuYm1sJz5N
ZW1vcmllczwvYT48L2xpPgo8L3VsPgo8L2xpPgo8bGkgY2xhc3M9J05hdk1lbnVJ
dGVtJyBpZD0nTmF2TWVudUl0ZW00Jz48YSBocmVmPSdodHRwOi8vYmVhcmRlZHRy
b2xsLmxpdmVqb3VybmFsLmNvbS9mcmllbmRzLyc+RnJpZW5kczwvYT48dWwgY2xh
c3M9J05hdk1lbnVTdWJOYXYnIGlkPSdOYXZNZW51NCc+CjxsaSBjbGFzcz0nTmF2
TWVudVN1Yk5hdkJhY2snPjxpZnJhbWUgc3JjPSdhYm91dDpibGFuaycgZnJhbWVi
b3JkZXI9JzAnIGNsYXNzPSdOYXZNZW51U3ViTmF2QmFjayc+PC9pZnJhbWU+PC9s
aT48bGkgY2xhc3M9Jyc+PGEgaHJlZj0naHR0cDovL3d3dy5saXZlam91cm5hbC5j
b20vZnJpZW5kcy9maW5kLmJtbCc+RmluZCBZb3VyIEZyaWVuZHM8L2E+PC9saT4K
PGxpIGNsYXNzPScnPjxhIGhyZWY9J2h0dHA6Ly93d3cubGl2ZWpvdXJuYWwuY29t
L2ZyaWVuZHMvZWRpdC5ibWwnPkFkZCBvciBSZW1vdmUgRnJpZW5kczwvYT48L2xp
Pgo8bGkgY2xhc3M9Jyc+PGEgaHJlZj0naHR0cDovL3d3dy5saXZlam91cm5hbC5j
b20vZnJpZW5kcy9lZGl0Z3JvdXBzLmJtbCc+TWFuYWdlIEN1c3RvbSBHcm91cHM8
L2E+PC9saT4KPGxpIGNsYXNzPScnPjxhIGhyZWY9J2h0dHA6Ly93d3cubGl2ZWpv
dXJuYWwuY29tL2ZyaWVuZHMvZmlsdGVyLmJtbCc+RmlsdGVyIEZyaWVuZHMgUGFn
ZTwvYT48L2xpPgo8bGkgY2xhc3M9Jyc+PGEgaHJlZj0naHR0cDovL3d3dy5saXZl
am91cm5hbC5jb20vZnJpZW5kcy9pbnZpdGUuYm1sJz5JbnZpdGUgTmV3IEZyaWVu
ZHM8L2E+PC9saT4KPGxpIGNsYXNzPScnPjxhIGhyZWY9J2h0dHA6Ly93d3cubGl2
ZWpvdXJuYWwuY29tL2ZyaWVuZHMvJz5PdGhlciBGcmllbmRzIFRvb2xzPC9hPjwv
bGk+CjwvdWw+CjwvbGk+CjxsaSBjbGFzcz0nTmF2TWVudUl0ZW0nIGlkPSdOYXZN
ZW51SXRlbTUnPjxhIGhyZWY9J2h0dHA6Ly93d3cubGl2ZWpvdXJuYWwuY29tL2Nv
bW11bml0eS9tYW5hZ2UuYm1sJz5Db21tdW5pdGllczwvYT48dWwgY2xhc3M9J05h
dk1lbnVTdWJOYXYnIGlkPSdOYXZNZW51NSc+CjxsaSBjbGFzcz0nTmF2TWVudVN1
Yk5hdkJhY2snPjxpZnJhbWUgc3JjPSdhYm91dDpibGFuaycgZnJhbWVib3JkZXI9
JzAnIGNsYXNzPSdOYXZNZW51U3ViTmF2QmFjayc+PC9pZnJhbWU+PC9saT48bGkg
Y2xhc3M9Jyc+PGEgaHJlZj0naHR0cDovL3d3dy5saXZlam91cm5hbC5jb20vdXBk
YXRlLmJtbCc+UG9zdCBhbiBFbnRyeTwvYT48L2xpPgo8bGkgY2xhc3M9Jyc+PGEg
aHJlZj0naHR0cDovL3d3dy5saXZlam91cm5hbC5jb20vbWFuYWdlL2ludml0ZXMu
Ym1sJz5NYW5hZ2UgWW91ciBJbnZpdGVzPC9hPjwvbGk+CjxsaSBjbGFzcz0nJz48
YSBocmVmPSdodHRwOi8vd3d3LmxpdmVqb3VybmFsLmNvbS9jb21tdW5pdHkvY3Jl
YXRlLmJtbCc+Q3JlYXRlIE5ldzwvYT48L2xpPgo8L3VsPgo8L2xpPgo8bGkgY2xh
c3M9J05hdk1lbnVJdGVtJyBpZD0nTmF2TWVudUl0ZW02Jz48YSBocmVmPSdodHRw
Oi8vcGljcy5saXZlam91cm5hbC5jb20vYmVhcmRlZHRyb2xsLyc+U2NyYXBCb29r
PC9hPjx1bCBjbGFzcz0nTmF2TWVudVN1Yk5hdicgaWQ9J05hdk1lbnU2Jz4KPGxp
IGNsYXNzPSdOYXZNZW51U3ViTmF2QmFjayc+PGlmcmFtZSBzcmM9J2Fib3V0OmJs
YW5rJyBmcmFtZWJvcmRlcj0nMCcgY2xhc3M9J05hdk1lbnVTdWJOYXZCYWNrJz48
L2lmcmFtZT48L2xpPjxsaSBjbGFzcz0nJz48YSBocmVmPSdodHRwOi8vcGljcy5s
aXZlam91cm5hbC5jb20vbWFuYWdlL3VwbG9hZCc+VXBsb2FkIFBpY3R1cmVzPC9h
PjwvbGk+CjxsaSBjbGFzcz0nJz48YSBocmVmPSdodHRwOi8vcGljcy5saXZlam91
cm5hbC5jb20vbWFuYWdlL2dhbHMnPk1hbmFnZSBHYWxsZXJpZXM8L2E+PC9saT4K
PGxpIGNsYXNzPScnPjxhIGhyZWY9J2h0dHA6Ly9waWNzLmxpdmVqb3VybmFsLmNv
bS9tYW5hZ2UvZ2Fscz9zaG93PXRhZ3MnPk1hbmFnZSBUYWcgR2FsbGVyaWVzPC9h
PjwvbGk+CjxsaSBjbGFzcz0nJz48YSBocmVmPSdodHRwOi8vcGljcy5saXZlam91
cm5hbC5jb20vbWFuYWdlL3N0eWxlcy8nPkN1c3RvbWl6ZSBTY3JhcEJvb2s8L2E+
PC9saT4KPC91bD4KPC9saT4KPGxpIGNsYXNzPSdOYXZNZW51SXRlbScgaWQ9J05h
dk1lbnVJdGVtNyc+PGEgaHJlZj0naHR0cDovL3d3dy5saXZlam91cm5hbC5jb20v
ZXhwbG9yZS8nPkV4cGxvcmUgTEo8L2E+PHVsIGNsYXNzPSdOYXZNZW51U3ViTmF2
JyBpZD0nTmF2TWVudTcnPgo8bGkgY2xhc3M9J05hdk1lbnVTdWJOYXZCYWNrJz48
aWZyYW1lIHNyYz0nYWJvdXQ6YmxhbmsnIGZyYW1lYm9yZGVyPScwJyBjbGFzcz0n
TmF2TWVudVN1Yk5hdkJhY2snPjwvaWZyYW1lPjwvbGk+PGxpIGNsYXNzPScnPjxh
IGhyZWY9J2h0dHA6Ly93d3cubGl2ZWpvdXJuYWwuY29tL2xpZmUvJz5MaWZlPC9h
PjwvbGk+CjxsaSBjbGFzcz0nJz48YSBocmVmPSdodHRwOi8vd3d3LmxpdmVqb3Vy
bmFsLmNvbS9lbnRlcnRhaW5tZW50Lyc+RW50ZXJ0YWlubWVudDwvYT48L2xpPgo8
bGkgY2xhc3M9Jyc+PGEgaHJlZj0naHR0cDovL3d3dy5saXZlam91cm5hbC5jb20v
bXVzaWMvJz5NdXNpYzwvYT48L2xpPgo8bGkgY2xhc3M9Jyc+PGEgaHJlZj0naHR0
cDovL3d3dy5saXZlam91cm5hbC5jb20vY3VsdHVyZS8nPkN1bHR1cmU8L2E+PC9s
aT4KPGxpIGNsYXNzPScnPjxhIGhyZWY9J2h0dHA6Ly93d3cubGl2ZWpvdXJuYWwu
Y29tL25ld3MtYW5kLXBvbGl0aWNzLyc+TmV3cyAmIFBvbGl0aWNzPC9hPjwvbGk+
CjxsaSBjbGFzcz0nJz48YSBocmVmPSdodHRwOi8vd3d3LmxpdmVqb3VybmFsLmNv
bS90ZWNobm9sb2d5Lyc+VGVjaG5vbG9neTwvYT48L2xpPgo8bGkgY2xhc3M9Jyc+
PGEgaHJlZj0naHR0cDovL3d3dy5saXZlam91cm5hbC5jb20vZGlyZWN0b3J5c2Vh
cmNoLmJtbCc+RGlyZWN0b3J5IFNlYXJjaDwvYT48L2xpPgo8L3VsPgo8L2xpPgoK
ICAgICAgICA8bGkgaWQ9Ik5hdk1lbnVTZWFyY2giPgogICAgICAgICAgPGZvcm0g
YWN0aW9uPSJodHRwOi8vd3d3LmxpdmVqb3VybmFsLmNvbS9tdWx0aXNlYXJjaC5i
bWwiIG1ldGhvZD0icG9zdCI+CiAgICAgICAgICAKICAgICAgICAgICAgPGlucHV0
IHR5cGU9InRleHQiIHZhbHVlPSJGaW5kIiBzaXplPSIxMiIgbmFtZT0icSIgaWQ9
J1NlYXJjaFRleHQnIG9uZm9jdXM9ImlmKHRoaXMudmFsdWU9PSdGaW5kJyl0aGlz
LnZhbHVlPScnOyIgb25ibHVyPSJpZih0aGlzLnZhbHVlPT0nJyl0aGlzLnZhbHVl
PSdGaW5kJzsiIC8+CiAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8c2Vs
ZWN0IG5hbWU9InR5cGUiPgogICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFs
dWU9J2ludCc+SW50ZXJlc3NlPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAg
PG9wdGlvbiB2YWx1ZT0ncmVnaW9uJz5PbXLDpWRlPC9vcHRpb24+CiAgICAgICAg
ICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0nbmF2X2FuZF91c2VyJz5TaXRlICZh
bXA7IFVzZXI8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZh
bHVlPSdmYXEnPkZBUTwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgIDxvcHRp
b24gdmFsdWU9J2VtYWlsJz5FbWFpbDwvb3B0aW9uPgogICAgICAgICAgICAgICAg
ICAgIDxvcHRpb24gdmFsdWU9J2ltJz5JTSBJbmZvPC9vcHRpb24+CiAgICAgICAg
ICAgICAgICAgICAgPC9zZWxlY3Q+CiAgICAgICAgICAgICAgICAKICAgICAgICAg
ICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IkdvIiAvPgogICAgICAgICAg
PC9mb3JtPgogICAgICAgIDwvbGk+CiAgICAgIDwvdWw+CiAgICAgIDwvZGl2Pgog
ICAgICA8IS0tIEVuZCBuYXZiYXIgLS0+CgoKICAgIDwvZGl2PgogICAgPCEtLSBF
bmQgI25hdmlnYXRpb24gLS0+CgogICAgPCEtLSBMb2dpbiAtLT4KICAgIAogICAg
PCEtLSBFbmQgTG9naW4gLS0+CgogICAgPCEtLSBMb2dvIC0tPgogICAgPGRpdiBp
ZD0iTG9nbyI+CiAgICA8YSBocmVmPSdodHRwOi8vd3d3LmxpdmVqb3VybmFsLmNv
bScgc3R5bGU9J2JvcmRlcjogMCc+PGltZyBzcmM9Imh0dHA6Ly9sLXN0YXQubGl2
ZWpvdXJuYWwuY29tL2hvcml6b24vbG9nby5naWYiIHdpZHRoPSIyMjUiIGhlaWdo
dD0iNzAiIGFsdD0iTGl2ZUpvdXJuYWwiIC8+PC9hPgogICAgPC9kaXY+CiAgICA8
IS0tIEVuZCBMb2dvIC0tPgoKCiAgICA8IS0tIEV4dHJhIGJsb2NrIHRvIHJlYWQg
c3R5bGUgZnJvbSBhbmQgY2FsbCB0byBpbml0aWFsaXplIEhvcml6b24gd2hpY2gg
cmVhZHMgc3R5bGUgLS0+CiAgICA8ZGl2IGlkPSdBbHBoYScgc3R5bGU9J2Rpc3Bs
YXk6IG5vbmUgIWltcG9ydGFudCc+Jm5ic3A7PC9kaXY+CiAgICA8IS0tW2lmIGx0
IElFIDddPjxzY3JpcHQ+SG9yaXpvbi5zY2hlbWVfaW5pdCgpOzwvc2NyaXB0Pjwh
W2VuZGlmXS0tPgoKICAgIDxkaXYgaWQ9J2hlbGxvLXdvcmxkJyBzdHlsZT0ndGV4
dC1hbGlnbjogbGVmdDsgZm9udC1zaXplOjA7IGxpbmUtaGVpZ2h0OjA7IGhlaWdo
dDowOyBvdmVyZmxvdzpoaWRkZW47Jz48L2Rpdj4KICAgIAogIDwvYm9keT4KPC9o
dG1sPgoK
------------JxuqZ6nLgOmBPtWaPDKENk
Content-Disposition: inline; filename=default.js
Content-Type: application/x-javascript; name=default.js
Content-Location: http://l-stat.livejournal.com/js/??core.js,dom.js,httpreq.js,livejournal.js,common/AdEngine.js,esn.js,ippu.js,lj_ippu.js,hourglass.js,contextualhover.js,thread_expander.js,json.js,template.js,userpicselect.js,inputcomplete.js,datasource.js,selectable_table.js,x_core.js,quickreply.js,commentmanage.js,horizon.js,livejournal-local.js?v=1237849588
Content-Transfer-Encoding: Base64
LyoKQ29yZSBKYXZhU2NyaXB0IExpYnJhcnkKJElkOiBjb3JlLmpzIDI3MSAyMDA5
LTAzLTIzIDEyOjA1OjE3WiBwa29ybmlsb3YgJAoKQ29weXJpZ2h0IChjKSAyMDA1
LCBTaXggQXBhcnQsIEx0ZC4KQWxsIHJpZ2h0cyByZXNlcnZlZC4KClJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAptb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCm1ldDoKCiAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Cm5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KCiAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgppbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCmRpc3RyaWJ1dGlvbi4KCiAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgIlNpeCBBcGFydCIgbm9yIHRoZSBuYW1l
cyBvZiBpdHMKY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KClRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCkEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCk9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLApT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCkxJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLApEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAooSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KCiovCgovKiBzdHVicyAqLwoKbG9n
ID0gZnVuY3Rpb24oKSB7fTsKbG9nLmVycm9yID0gbG9nLndhcm4gPSBsb2cuZGVi
dWcgPSBsb2c7CgoKLyogdXRpbGl0eSBmdW5jdGlvbnMgKi8KCmRlZmluZWQgPSBm
dW5jdGlvbiggeCApIHsKICAgIHJldHVybiB4ID09PSB1bmRlZmluZWQgPyBmYWxz
ZSA6IHRydWU7Cn0KCgovKioKICogVXRpbGl0eSBtZXRob2QuCiAqIEBwYXJhbSB4
IDxjb2RlPmFueTwvY29kZT4gQW55IEphdmFTY3JpcHQgdmFsdWUsIGluY2x1ZGlu
ZyA8Y29kZT51bmRlZmluZWQ8L2NvZGU+LgogKiBAcmV0dXJuIGJvb2xlYW4gPGNv
ZGU+dHJ1ZTwvY29kZT4gaWYgdGhlIHZhbHVlIGlzIG5vdCA8Y29kZT5udWxsPC9j
b2RlPiBhbmQgaXMgbm90IDxjb2RlPnVuZGVmaW5lZDwvY29kZT4uCiAqLwpleGlz
dHMgPSBmdW5jdGlvbiggeCApIHsKICAgcmV0dXJuICh4ID09PSB1bmRlZmluZWQg
fHwgeCA9PT0gbnVsbCkgPyBmYWxzZSA6IHRydWU7Cn0KCgpmaW5pdGUgPSBmdW5j
dGlvbiggeCApIHsKICAgIHJldHVybiBpc0Zpbml0ZSggeCApID8geCA6IDA7Cn0K
CgpmaW5pdGVJbnQgPSBmdW5jdGlvbiggeCwgYmFzZSApIHsKICAgIHJldHVybiBm
aW5pdGUoIHBhcnNlSW50KCB4LCBiYXNlICkgKTsKfQoKCmZpbml0ZUZsb2F0ID0g
ZnVuY3Rpb24oIHggKSB7CiAgICByZXR1cm4gZmluaXRlKCBwYXJzZUZsb2F0KCB4
ICkgKTsKfQoKCm1heCA9IGZ1bmN0aW9uKCkgewogICAgdmFyIGEgPSBhcmd1bWVu
dHM7CiAgICB2YXIgbiA9IGFbIDAgXTsKICAgIGZvciggdmFyIGkgPSAxOyBpIDwg
YS5sZW5ndGg7IGkrKyApCiAgICAgICAgaWYoIGFbIGkgXSA+IG4gKQogICAgICAg
ICAgICBuID0gYVsgaSBdOwogICAgcmV0dXJuIG47Cn0KCgptaW4gPSBmdW5jdGlv
bigpIHsKICAgIHZhciBhID0gYXJndW1lbnRzOwogICAgdmFyIG4gPSBhWyAwIF07
CiAgICBmb3IoIHZhciBpID0gMTsgaSA8IGEubGVuZ3RoOyBpKysgKQogICAgICAg
IGlmKCBhWyBpIF0gPCBuICkKICAgICAgICAgICAgbiA9IGFbIGkgXTsKICAgIHJl
dHVybiBuOwp9CgoKLyogdHJ5IGJsb2NrICovICAKIApUcnkgPSB7CiAgICB0aGVz
ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgZm9yKCB2YXIgaSA9IDA7IGkgPCBhcmd1
bWVudHMubGVuZ3RoOyBpKysgKSB7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAg
ICAgICAgICByZXR1cm4gYXJndW1lbnRzWyBpIF0oKTsKICAgICAgICAgICAgfSBj
YXRjaCggZSApIHt9CiAgICAgICAgfQogICAgICAgIHJldHVybiB1bmRlZmluZWQ7
CiAgICB9Cn0KCgovKiB1bmlxdWUgaWQgZ2VuZXJhdG9yICovCgpVbmlxdWUgPSB7
CiAgICBsZW5ndGg6IDAsCiAgICAKICAgIGlkOiBmdW5jdGlvbigpIHsKICAgICAg
ICByZXR1cm4gKyt0aGlzLmxlbmd0aDsKICAgIH0KfQoKCi8qIGV2ZW50IG1ldGhv
ZHMgKi8KCmlmKCAhZGVmaW5lZCggd2luZG93LkV2ZW50ICkgKQogICAgRXZlbnQg
PSB7fTsKCgpFdmVudC5zdG9wID0gZnVuY3Rpb24oIGUgKSB7CiAgICBlID0gZSB8
fCB3aW5kb3cuZXZlbnQ7CiAgICB0aGlzLnN0b3BQcm9wYWdhdGlvbiggZSApOwog
ICAgdGhpcy5wcmV2ZW50RGVmYXVsdCggZSApOwogICAgcmV0dXJuIGZhbHNlOwp9
CgoKRXZlbnQuc3RvcFByb3BhZ2F0aW9uID0gZnVuY3Rpb24oIGUgKSB7CiAgICBp
ZiAoIHdpbmRvdy5ldmVudCApCiAgICAgICAgd2luZG93LmV2ZW50LmNhbmNlbEJ1
YmJsZSA9IHRydWUKICAgIGVsc2UKICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigp
Cn0KCgpFdmVudC5wcmV2ZW50RGVmYXVsdCA9IGZ1bmN0aW9uKCBlICkgewogICAg
ZSA9IGUgfHwgd2luZG93LmV2ZW50OwogICAgaWYgKCBlLnByZXZlbnREZWZhdWx0
ICkKICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICBlLnJldHVyblZhbHVl
ID0gZmFsc2U7Cn0KCgpFdmVudC5wcmVwID0gZnVuY3Rpb24oIGV2ZW50ICkgewog
ICAgZXZlbnQgPSBldmVudCB8fCB3aW5kb3cuZXZlbnQ7CiAgICBpZiggIWRlZmlu
ZWQoIGV2ZW50LnN0b3AgKSApCiAgICAgICAgZXZlbnQuc3RvcCA9IHRoaXMuc3Rv
cDsKICAgIGlmKCAhZGVmaW5lZCggZXZlbnQudGFyZ2V0ICkgKQogICAgICAgIGV2
ZW50LnRhcmdldCA9IGV2ZW50LnNyY0VsZW1lbnQ7CiAgICBpZiggIWRlZmluZWQo
IGV2ZW50LnJlbGF0ZWRUYXJnZXQgKSApIAogICAgICAgIGV2ZW50LnJlbGF0ZWRU
YXJnZXQgPSBldmVudC50b0VsZW1lbnQ7CiAgICByZXR1cm4gZXZlbnQ7Cn0KCgov
KiBvYmplY3QgZXh0ZW5zaW9ucyAqLwoKRnVuY3Rpb24uc3R1YiA9IGZ1bmN0aW9u
KCkge307CgppZiAoIU9iamVjdC5leHRlbmQpCglPYmplY3QuZXh0ZW5kID0gZnVu
Y3Rpb24gKGQsIHMpIHsgaWYgKGQpIGZvciAodmFyIHAgaW4gcykgaWYgKCFkW3Bd
KSBkW3BdID0gc1twXTsgcmV0dXJuIGQgfQoKaWYgKCFPYmplY3Qub3ZlcnJpZGUp
CglPYmplY3Qub3ZlcnJpZGUgPSBmdW5jdGlvbiAoZCwgcykgeyBpZiAoZCkgZm9y
ICh2YXIgcCBpbiBzKSBkW3BdID0gc1twXTsgcmV0dXJuIGQgfQoKLyogZnVuY3Rp
b24gZXh0ZW5zaW9ucyAqLwoKT2JqZWN0LmV4dGVuZChGdW5jdGlvbi5wcm90b3R5
cGUsIHsKICAgIGJpbmQ6IGZ1bmN0aW9uKCBvYmplY3QgKSB7CiAgICAgICAgdmFy
IG1ldGhvZCA9IHRoaXM7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkgewogICAg
ICAgICAgICByZXR1cm4gbWV0aG9kLmFwcGx5KCBvYmplY3QsIGFyZ3VtZW50cyAp
OwogICAgICAgIH07CiAgICB9LAogICAgCiAgICAKICAgIGJpbmRFdmVudExpc3Rl
bmVyOiBmdW5jdGlvbiggb2JqZWN0ICkgewogICAgICAgIHZhciBtZXRob2QgPSB0
aGlzOyAvLyBVc2UgZG91YmxlIGNsb3N1cmUgdG8gd29yayBhcm91bmQgSUUgNiBt
ZW1vcnkgbGVhay4KICAgICAgICByZXR1cm4gZnVuY3Rpb24oIGV2ZW50ICkgewog
ICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgZXZlbnQgPSBFdmVudC5w
cmVwKCBldmVudCApOwogICAgICAgICAgICB9IGNhdGNoKCBlICkge30KICAgICAg
ICAgICAgcmV0dXJuIG1ldGhvZC5jYWxsKCBvYmplY3QsIGV2ZW50ICk7CiAgICAg
ICAgfTsKICAgIH0KfSApOwoKCi8qIGNsYXNzIGhlbHBlcnMgKi8KCmluZGlyZWN0
T2JqZWN0cyA9IFtdOwoKCkNsYXNzID0gZnVuY3Rpb24oIHN1cGVyQ2xhc3MgKSB7
CgogICAgLy8gU2V0IHRoZSBjb25zdHJ1Y3RvcjoKICAgIHZhciBjb25zdHJ1Y3Rv
ciA9IGZ1bmN0aW9uKCkgewogICAgICAgIGlmKCBhcmd1bWVudHMubGVuZ3RoICkK
ICAgICAgICAgICAgdGhpcy5pbml0LmFwcGx5KCB0aGlzLCBhcmd1bWVudHMgKTsK
ICAgIH07ICAgIAogICAgLy8gICAtLSBBY2NvbXBsaXNoIHN0YXRpYy1pbmhlcml0
YW5jZToKICAgIE9iamVjdC5vdmVycmlkZShjb25zdHJ1Y3RvciwgQ2xhc3MpOyAg
Ly8gaW5oZXJpdCBzdGF0aWMgbWV0aG9kcyBmcm9tIENsYXNzCiAgICAKICAgIHN1
cGVyQ2xhc3MgPSBzdXBlckNsYXNzIHx8IGZ1bmN0aW9uKCl7fTsKICAgIHN1cGVy
Q2xhc3NGdW5jID0gZnVuY3Rpb24oKXt9CiAgICBPYmplY3QuZXh0ZW5kKHN1cGVy
Q2xhc3NGdW5jLnByb3RvdHlwZSwgc3VwZXJDbGFzcy5wcm90b3R5cGUpCiAgICBP
YmplY3QuZXh0ZW5kKHN1cGVyQ2xhc3NGdW5jLnByb3RvdHlwZSwgewogICAgICAg
IGluaXQ6IGZ1bmN0aW9uKCl7fSwKICAgICAgICBkZXN0cm95OiBmdW5jdGlvbigp
e30KICAgIH0pCiAgICBPYmplY3Qub3ZlcnJpZGUoY29uc3RydWN0b3IsIHN1cGVy
Q2xhc3MpOyAvLyBpbmhlcml0IHN0YXRpYyBtZXRob2RzIGZyb20gdGhlIHN1cGVy
Q2xhc3MKICAgIGNvbnN0cnVjdG9yLnN1cGVyQ2xhc3MgPSBzdXBlckNsYXNzRnVu
Yy5wcm90b3R5cGU7CiAgICAKICAgIC8vIFNldCB0aGUgY29uc3RydWN0b3IncyBw
cm90b3R5cGUgKGFjY29tcGxpc2ggb2JqZWN0LWluaGVyaXRhbmNlKToKICAgIGNv
bnN0cnVjdG9yLnByb3RvdHlwZSA9IG5ldyBzdXBlckNsYXNzKCk7CiAgICBjb25z
dHJ1Y3Rvci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvcjsgLy8g
cmV2LiAwLjcgICAgCiAgICAvLyAgIC0tIGV4dGVuZCBwcm90b3R5cGUgd2l0aCBD
bGFzcyBpbnN0YW5jZSBtZXRob2RzCiAgICBPYmplY3QuZXh0ZW5kKGNvbnN0cnVj
dG9yLnByb3RvdHlwZSwgQ2xhc3MucHJvdG90eXBlKTsKICAgIC8vICAgLS0gb3Zl
cnJpZGUgcHJvdG90eXBlIHdpdGggaW50ZXJmYWNlIG1ldGhvZHMKICAgIGZvcigg
dmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrICkKICAgICAgICBP
YmplY3Qub3ZlcnJpZGUoY29uc3RydWN0b3IucHJvdG90eXBlLCBhcmd1bWVudHNb
aV0pOwogICAgCiAgICByZXR1cm4gY29uc3RydWN0b3I7Cn0KCgpPYmplY3QuZXh0
ZW5kKENsYXNzLCB7CiAgICBpbml0U2luZ2xldG9uOiBmdW5jdGlvbigpIHsKICAg
ICAgICBpZiggdGhpcy5zaW5nbGV0b24gKQogICAgICAgICAgICByZXR1cm4gdGhp
cy5zaW5nbGV0b247CiAgICAgICAgdGhpcy5zaW5nbGV0b24gPSB0aGlzLnNpbmds
ZXRvbkNvbnN0cnVjdG9yCiAgICAgICAgICAgID8gbmV3IHRoaXMuc2luZ2xldG9u
Q29uc3RydWN0b3IoKQogICAgICAgICAgICA6IG5ldyB0aGlzKCk7CiAgICAgICAg
dGhpcy5zaW5nbGV0b24uaW5pdC5hcHBseSggdGhpcy5zaW5nbGV0b24sIGFyZ3Vt
ZW50cyApOwogICAgICAgIHJldHVybiB0aGlzLnNpbmdsZXRvbjsKICAgIH0KfSAp
OwoKCkNsYXNzLnByb3RvdHlwZSA9IHsKICAgIGRlc3Ryb3k6IGZ1bmN0aW9uKCkg
ewogICAgICAgIHRyeSB7CiAgICAgICAgICAgIGlmKCB0aGlzLmluZGlyZWN0SW5k
ZXggKQogICAgICAgICAgICAgICAgaW5kaXJlY3RPYmplY3RzWyB0aGlzLmluZGly
ZWN0SW5kZXggXSA9IHVuZGVmaW5lZDsKICAgICAgICAgICAgZGVsZXRlIHRoaXMu
aW5kaXJlY3RJbmRleDsKICAgICAgICB9IGNhdGNoKCBlICkge30KICAgICAgICAK
ICAgICAgICBmb3IoIHZhciBwcm9wZXJ0eSBpbiB0aGlzICkgewogICAgICAgICAg
ICB0cnkgewogICAgICAgICAgICAgICAgZGVsZXRlIHRoaXNbIHByb3BlcnR5IF07
CiAgICAgICAgICAgIH0gY2F0Y2goIGUgKSB7fQogICAgICAgIH0KICAgIH0sCiAg
ICAKICAgIAogICAgZ2V0Qm91bmRNZXRob2Q6IGZ1bmN0aW9uKCBtZXRob2ROYW1l
ICkgewogICAgICAgIHJldHVybiB0aGlzWyBuYW1lIF0uYmluZCggdGhpcyApOwog
ICAgfSwKICAgIAogICAgCiAgICBnZXRFdmVudExpc3RlbmVyOiBmdW5jdGlvbigg
bWV0aG9kTmFtZSApIHsKICAgICAgICByZXR1cm4gdGhpc1sgbWV0aG9kTmFtZSBd
LmJpbmRFdmVudExpc3RlbmVyKCB0aGlzICk7CiAgICB9LAogICAgCiAgICAKICAg
IGdldEluZGlyZWN0SW5kZXg6IGZ1bmN0aW9uKCkgewogICAgICAgIGlmKCAhZGVm
aW5lZCggdGhpcy5pbmRpcmVjdEluZGV4ICkgKSB7CiAgICAgICAgICAgIHRoaXMu
aW5kaXJlY3RJbmRleCA9IGluZGlyZWN0T2JqZWN0cy5sZW5ndGg7CiAgICAgICAg
ICAgIGluZGlyZWN0T2JqZWN0cy5wdXNoKCB0aGlzICk7CiAgICAgICAgfQogICAg
ICAgIHJldHVybiB0aGlzLmluZGlyZWN0SW5kZXg7CiAgICB9LAogICAgCiAgICAK
ICAgIGdldEluZGlyZWN0TWV0aG9kOiBmdW5jdGlvbiggbWV0aG9kTmFtZSApIHsK
ICAgICAgICBpZiggIXRoaXMuaW5kaXJlY3RNZXRob2RzICkKICAgICAgICAgICAg
dGhpcy5pbmRpcmVjdE1ldGhvZHMgPSB7fTsKICAgICAgICB2YXIgbWV0aG9kID0g
dGhpc1sgbWV0aG9kTmFtZSBdOwogICAgICAgIGlmKCB0eXBlb2YgbWV0aG9kICE9
ICJmdW5jdGlvbiIgKQogICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkOwogICAg
ICAgIHZhciBpbmRpcmVjdEluZGV4ID0gdGhpcy5nZXRJbmRpcmVjdEluZGV4KCk7
CiAgICAgICAgaWYoICF0aGlzLmluZGlyZWN0TWV0aG9kc1sgbWV0aG9kTmFtZSBd
ICkgewogICAgICAgICAgICB0aGlzLmluZGlyZWN0TWV0aG9kc1sgbWV0aG9kTmFt
ZSBdID0gbmV3IEZ1bmN0aW9uKAogICAgICAgICAgICAgICAgInZhciBvID0gaW5k
aXJlY3RPYmplY3RzWyIgKyBpbmRpcmVjdEluZGV4ICsgIl07IiArCiAgICAgICAg
ICAgICAgICAicmV0dXJuIG8uIiArIG1ldGhvZE5hbWUgKyAiLmFwcGx5KCBvLCBh
cmd1bWVudHMgKTsiCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIHJl
dHVybiB0aGlzLmluZGlyZWN0TWV0aG9kc1sgbWV0aG9kTmFtZSBdOwogICAgfSwK
ICAgIAogICAgCiAgICBnZXRJbmRpcmVjdEV2ZW50TGlzdGVuZXI6IGZ1bmN0aW9u
KCBtZXRob2ROYW1lICkgewogICAgICAgIGlmKCAhdGhpcy5pbmRpcmVjdEV2ZW50
TGlzdGVuZXJzICkKICAgICAgICAgICAgdGhpcy5pbmRpcmVjdEV2ZW50TGlzdGVu
ZXJzID0ge307CiAgICAgICAgdmFyIG1ldGhvZCA9IHRoaXNbIG1ldGhvZE5hbWUg
XTsKICAgICAgICBpZiggdHlwZW9mIG1ldGhvZCAhPSAiZnVuY3Rpb24iICkKICAg
ICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKICAgICAgICB2YXIgaW5kaXJlY3RJ
bmRleCA9IHRoaXMuZ2V0SW5kaXJlY3RJbmRleCgpOwogICAgICAgIGlmKCAhdGhp
cy5pbmRpcmVjdEV2ZW50TGlzdGVuZXJzWyBtZXRob2ROYW1lIF0gKSB7CiAgICAg
ICAgICAgIHRoaXMuaW5kaXJlY3RFdmVudExpc3RlbmVyc1sgbWV0aG9kTmFtZSBd
ID0gbmV3IEZ1bmN0aW9uKCAiZXZlbnQiLAogICAgICAgICAgICAgICAgInRyeSB7
IGV2ZW50ID0gRXZlbnQucHJlcCggZXZlbnQgKTsgfSBjYXRjaCggZSApIHt9IiAr
CiAgICAgICAgICAgICAgICAidmFyIG8gPSBpbmRpcmVjdE9iamVjdHNbIiArIGlu
ZGlyZWN0SW5kZXggKyAiXTsiICsKICAgICAgICAgICAgICAgICJyZXR1cm4gby4i
ICsgbWV0aG9kTmFtZSArICIuY2FsbCggbywgZXZlbnQgKTsiCiAgICAgICAgICAg
ICk7CiAgICAgICAgfQogICAgICAgIHJldHVybiB0aGlzLmluZGlyZWN0RXZlbnRM
aXN0ZW5lcnNbIG1ldGhvZE5hbWUgXTsKICAgIH0KfQoKCi8qIHN0cmluZyBleHRl
bnNpb25zICovCgpPYmplY3QuZXh0ZW5kKFN0cmluZywgewogICAgZXNjYXBlSlND
aGFyOiBmdW5jdGlvbiggYyApIHsKICAgICAgICAvLyB0cnkgc2ltcGxlIGVzY2Fw
aW5nCiAgICAgICAgc3dpdGNoKCBjICkgewogICAgICAgICAgICBjYXNlICJcXCI6
IHJldHVybiAiXFxcXCI7CiAgICAgICAgICAgIGNhc2UgIlwiIjogcmV0dXJuICJc
XFwiIjsKICAgICAgICAgICAgY2FzZSAiJyI6ICByZXR1cm4gIlxcJyI7CiAgICAg
ICAgICAgIGNhc2UgIlxiIjogcmV0dXJuICJcXGIiOwogICAgICAgICAgICBjYXNl
ICJcZiI6IHJldHVybiAiXFxmIjsKICAgICAgICAgICAgY2FzZSAiXG4iOiByZXR1
cm4gIlxcbiI7CiAgICAgICAgICAgIGNhc2UgIlxyIjogcmV0dXJuICJcXHIiOwog
ICAgICAgICAgICBjYXNlICJcdCI6IHJldHVybiAiXFx0IjsKICAgICAgICB9CiAg
ICAgICAgCiAgICAgICAgLy8gcmV0dXJuIHJhdyBieXRlcyBub3cgLi4uIHNob3Vs
ZCBiZSBVVEYtOAogICAgICAgIGlmKCBjID49ICIgIiApCiAgICAgICAgICAgIHJl
dHVybiBjOwogICAgICAgIAogICAgICAgIC8vIHRyeSBcdVhYWFggZXNjYXBpbmcs
IGJ1dCBzaG91bGRuJ3QgbWFrZSBpdCBmb3IgY2FzZSAxLCAyCiAgICAgICAgYyA9
IGMuY2hhckNvZGVBdCggMCApLnRvU3RyaW5nKCAxNiApOwogICAgICAgIHN3aXRj
aCggYy5sZW5ndGggKSB7CiAgICAgICAgICAgIGNhc2UgMTogcmV0dXJuICJcXHUw
MDAiICsgYzsKICAgICAgICAgICAgY2FzZSAyOiByZXR1cm4gIlxcdTAwIiArIGM7
CiAgICAgICAgICAgIGNhc2UgMzogcmV0dXJuICJcXHUwIiArIGM7CiAgICAgICAg
ICAgIGNhc2UgNDogcmV0dXJuICJcXHUiICsgYzsKICAgICAgICB9CiAgICAgICAg
CiAgICAgICAgLy8gc2hvdWxkIG5ldmVyIG1ha2UgaXQgaGVyZQogICAgICAgIHJl
dHVybiAiIjsKICAgIH0sCiAgICAKICAgIAogICAgZW5jb2RlRW50aXR5OiBmdW5j
dGlvbiggYyApIHsKICAgICAgICBzd2l0Y2goIGMgKSB7CiAgICAgICAgICAgIGNh
c2UgIjwiOiByZXR1cm4gIiZsdDsiOwogICAgICAgICAgICBjYXNlICI+IjogcmV0
dXJuICImZ3Q7IjsKICAgICAgICAgICAgY2FzZSAiJiI6IHJldHVybiAiJmFtcDsi
OwogICAgICAgICAgICBjYXNlICciJzogcmV0dXJuICImcXVvdDsiOwogICAgICAg
ICAgICBjYXNlICInIjogcmV0dXJuICImYXBvczsiOwogICAgICAgIH0KICAgICAg
ICByZXR1cm4gYzsKICAgIH0sCgoKICAgIGRlY29kZUVudGl0eTogZnVuY3Rpb24o
IGMgKSB7CiAgICAgICAgc3dpdGNoKCBjICkgewogICAgICAgICAgICBjYXNlICJh
bXAiOiByZXR1cm4gIiYiOwogICAgICAgICAgICBjYXNlICJxdW90IjogcmV0dXJu
ICciJzsKICAgICAgICAgICAgY2FzZSAiZ3QiOiByZXR1cm4gIj4iOwogICAgICAg
ICAgICBjYXNlICJsdCI6IHJldHVybiAiPCI7CiAgICAgICAgfQogICAgICAgIHZh
ciBtID0gYy5tYXRjaCggL14jKFxkKykkLyApOwogICAgICAgIGlmKCBtICYmIGRl
ZmluZWQoIG1bIDEgXSApICkKICAgICAgICAgICAgcmV0dXJuIFN0cmluZy5mcm9t
Q2hhckNvZGUoIG1bIDEgXSApOwogICAgICAgIG0gPSBjLm1hdGNoKCAvXiN4KFsw
LTlhLWZdKykkL2kgKTsKICAgICAgICBpZiggIG0gJiYgZGVmaW5lZCggbVsgMSBd
ICkgKQogICAgICAgICAgICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZSggcGFy
c2VJbnQoIGhleCwgbVsgMSBdICkgKTsKICAgICAgICByZXR1cm4gYzsKICAgIH0K
fSApOwoKCk9iamVjdC5leHRlbmQoU3RyaW5nLnByb3RvdHlwZSwgewogICAgZXNj
YXBlSlM6IGZ1bmN0aW9uKCkgewogICAgICAgIHJldHVybiB0aGlzLnJlcGxhY2Uo
IC8oW14gLSEjLVxbXF0tfl0pL2csIGZ1bmN0aW9uKCBtLCBjICkgeyByZXR1cm4g
U3RyaW5nLmVzY2FwZUpTQ2hhciggYyApOyB9ICkKICAgIH0sCiAgICAKICAgIAog
ICAgZXNjYXBlSlMyOiBmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gdGhpcy5y
ZXBsYWNlKCAvKFtcdTAwMDAtXHUwMDMxJyJcXF0pL2csIGZ1bmN0aW9uKCBtLCBj
ICkgeyByZXR1cm4gU3RyaW5nLmVzY2FwZUpTQ2hhciggYyApOyB9ICkKICAgIH0s
CiAgICAKICAgIAogICAgZXNjYXBlSlMzOiBmdW5jdGlvbigpIHsKICAgICAgICBy
ZXR1cm4gdGhpcy5yZXBsYWNlKCAvW1x1MDAwMC1cdTAwMzEnIlxcXS9nLCBmdW5j
dGlvbiggbSApIHsgcmV0dXJuIFN0cmluZy5lc2NhcGVKU0NoYXIoIG0gKTsgfSAp
CiAgICB9LAogICAgCiAgICAKICAgIGVzY2FwZUpTNDogZnVuY3Rpb24oKSB7CiAg
ICAgICAgcmV0dXJuIHRoaXMucmVwbGFjZSggLy4vZywgZnVuY3Rpb24oIG0gKSB7
IHJldHVybiBTdHJpbmcuZXNjYXBlSlNDaGFyKCBtICk7IH0gKQogICAgfSwKICAg
IAogICAgCiAgICBlbmNvZGVIVE1MOiBmdW5jdGlvbigpIHsKICAgICAgICByZXR1
cm4gdGhpcy5yZXBsYWNlKCAvKFs8PiYiXSkvZywgZnVuY3Rpb24oIG0sIGMgKSB7
IHJldHVybiBTdHJpbmcuZW5jb2RlRW50aXR5KCBjICkgfSApOwogICAgfSwKCgog
ICAgZGVjb2RlSFRNTDogZnVuY3Rpb24oKSB7CiAgICAgICAgcmV0dXJuIHRoaXMu
cmVwbGFjZSggLyYoLio/KTsvZywgZnVuY3Rpb24oIG0sIGMgKSB7IHJldHVybiBT
dHJpbmcuZGVjb2RlRW50aXR5KCBjICkgfSApOwogICAgfSwKICAgIAogICAgCiAg
ICBjc3NUb0pTOiBmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gdGhpcy5yZXBs
YWNlKCAvLShbYS16XSkvZywgZnVuY3Rpb24oIG0sIGMgKSB7IHJldHVybiBjLnRv
VXBwZXJDYXNlKCkgfSApOwogICAgfSwKICAgIAogICAgCiAgICBqc1RvQ1NTOiBm
dW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gdGhpcy5yZXBsYWNlKCAvKFtBLVpd
KS9nLCBmdW5jdGlvbiggbSwgYyApIHsgcmV0dXJuICItIiArIGMudG9Mb3dlckNh
c2UoKSB9ICk7CiAgICB9LAogICAgCiAgICAKICAgIGZpcnN0VG9Mb3dlckNhc2U6
IGZ1bmN0aW9uKCkgewogICAgICAgIHJldHVybiB0aGlzLnJlcGxhY2UoIC9eKC4p
LywgZnVuY3Rpb24oIG0sIGMgKSB7IHJldHVybiBjLnRvTG93ZXJDYXNlKCkgfSAp
OwogICAgfSwKICAgIAogICAgICAgIAogICAgcmdiVG9IZXg6IGZ1bmN0aW9uKCkg
ewogICAgICAgIHZhciBjID0gdGhpcy5tYXRjaCggLyhcZCspXEQrKFxkKylcRCso
XGQrKS8gKTsKICAgICAgICBpZiggIWMgKQogICAgICAgICAgICByZXR1cm4gdW5k
ZWZpbmVkOwogICAgICAgIHJldHVybiAiIyIgKwogICAgICAgICAgICBmaW5pdGVJ
bnQoIGNbIDEgXSApLnRvU3RyaW5nKCAxNiApLnBhZCggMiwgIjAiICkgKwogICAg
ICAgICAgICBmaW5pdGVJbnQoIGNbIDIgXSApLnRvU3RyaW5nKCAxNiApLnBhZCgg
MiwgIjAiICkgKwogICAgICAgICAgICBmaW5pdGVJbnQoIGNbIDMgXSApLnRvU3Ry
aW5nKCAxNiApLnBhZCggMiwgIjAiICk7CiAgICB9LAogICAgCiAgICAKICAgIHBh
ZDogZnVuY3Rpb24oIGxlbmd0aCwgcGFkQ2hhciApIHsKICAgICAgICB2YXIgcGFk
ZGluZyA9IGxlbmd0aCAtIHRoaXMubGVuZ3RoOwogICAgICAgIGlmKCBwYWRkaW5n
IDw9IDAgKQogICAgICAgICAgICByZXR1cm4gdGhpczsKICAgICAgICBpZiggIWRl
ZmluZWQoIHBhZENoYXIgKSApCiAgICAgICAgICAgIHBhZENoYXIgPSAiICI7CiAg
ICAgICAgdmFyIG91dCA9IFtdOwogICAgICAgIGZvciggdmFyIGkgPSAwOyBpIDwg
cGFkZGluZzsgaSsrICkKICAgICAgICAgICAgb3V0LnB1c2goIHBhZENoYXIgKTsK
ICAgICAgICBvdXQucHVzaCggdGhpcyApOwogICAgICAgIHJldHVybiBvdXQuam9p
biggIiIgKTsKICAgIH0sCgoKICAgIHRyaW06IGZ1bmN0aW9uKCkgewogICAgICAg
IHJldHVybiB0aGlzLnJlcGxhY2UoIC9eXHMrfFxzKyQvZywgIiIgKTsKICAgIH0K
Cn0gKTsKCgovKiBleHRlbmQgYXJyYXkgb2JqZWN0ICovCgpPYmplY3QuZXh0ZW5k
KEFycmF5LCB7IAogICAgZnJvbVBzZXVkbzogZnVuY3Rpb24gKCBhcmdzICkgewog
ICAgICAgIHZhciBvdXQgPSBbXTsKICAgICAgICBmb3IgKCB2YXIgaSA9IDA7IGkg
PCBhcmdzLmxlbmd0aDsgaSsrICkKICAgICAgICAgICAgb3V0LnB1c2goIGFyZ3Nb
IGkgXSApOwogICAgICAgIHJldHVybiBvdXQ7CiAgICB9Cn0pOwoKCi8qIGV4dGVu
ZCBhcnJheSBvYmplY3QgKi8KCk9iamVjdC5leHRlbmQoQXJyYXkucHJvdG90eXBl
LCB7CiAgICBjb3B5OiBmdW5jdGlvbigpIHsKICAgICAgICB2YXIgb3V0ID0gW107
CiAgICAgICAgZm9yKCB2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrICkK
ICAgICAgICAgICAgb3V0WyBpIF0gPSB0aGlzWyBpIF07CiAgICAgICAgcmV0dXJu
IG91dDsKICAgIH0sCgoKICAgIGZpcnN0OiBmdW5jdGlvbiggY2FsbGJhY2ssIG9i
amVjdCApIHsKICAgICAgICB2YXIgbGVuZ3RoID0gdGhpcy5sZW5ndGg7CiAgICAg
ICAgZm9yKCB2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKyApIHsKICAgICAgICAg
ICAgdmFyIHJlc3VsdCA9IG9iamVjdAogICAgICAgICAgICAgICAgPyBjYWxsYmFj
ay5jYWxsKCBvYmplY3QsIHRoaXNbIGkgXSwgaSwgdGhpcyApCiAgICAgICAgICAg
ICAgICA6IGNhbGxiYWNrKCB0aGlzWyBpIF0sIGksIHRoaXMgKTsKICAgICAgICAg
ICAgaWYoIHJlc3VsdCApCiAgICAgICAgICAgICAgICByZXR1cm4gdGhpc1sgaSBd
OwogICAgICAgIH0KICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0sCgoKICAgIGZp
dEluZGV4OiBmdW5jdGlvbiggZnJvbUluZGV4LCBkZWZhdWx0SW5kZXggKSB7CiAg
ICAgICAgaWYoICFkZWZpbmVkKCBmcm9tSW5kZXggKSB8fCBmcm9tSW5kZXggPT0g
bnVsbCApCiAgICAgICAgICAgIGZyb21JbmRleCA9IGRlZmF1bHRJbmRleDsKICAg
ICAgICBlbHNlIGlmKCBmcm9tSW5kZXggPCAwICkgewogICAgICAgICAgICBmcm9t
SW5kZXggPSB0aGlzLmxlbmd0aCArIGZyb21JbmRleDsKICAgICAgICAgICAgaWYo
IGZyb21JbmRleCA8IDAgKQogICAgICAgICAgICAgICAgZnJvbUluZGV4ID0gMDsK
ICAgICAgICB9IGVsc2UgaWYoIGZyb21JbmRleCA+PSB0aGlzLmxlbmd0aCApCiAg
ICAgICAgICAgIGZyb21JbmRleCA9IHRoaXMubGVuZ3RoIC0gMTsKICAgICAgICBy
ZXR1cm4gZnJvbUluZGV4OwogICAgfSwKCgogICAgc2NyYW1ibGU6IGZ1bmN0aW9u
KCkgewogICAgICAgIGZvciggdmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkr
KyApIHsKICAgICAgICAgICAgdmFyIGogPSBNYXRoLmZsb29yKCBNYXRoLnJhbmRv
bSgpICogdGhpcy5sZW5ndGggKTsKICAgICAgICAgICAgdmFyIHRlbXAgPSB0aGlz
WyBpIF07CiAgICAgICAgICAgIHRoaXNbIGkgXSA9IHRoaXNbIGogXTsKICAgICAg
ICAgICAgdGhpc1sgaiBdID0gdGVtcDsKICAgICAgICB9CiAgICB9LAogICAgCiAg
ICAKICAgIGFkZDogZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIGEgPSBhcmd1bWVu
dHM7CiAgICAgICAgZm9yKCB2YXIgaSA9IDA7IGkgPCBhLmxlbmd0aDsgaSsrICkg
ewogICAgICAgICAgICB2YXIgaW5kZXggPSB0aGlzLmluZGV4T2YoIGFbIGkgXSAp
OwogICAgICAgICAgICBpZiggaW5kZXggPCAwICkgCiAgICAgICAgICAgICAgICB0
aGlzLnB1c2goIGFyZ3VtZW50c1sgaSBdICk7CiAgICAgICAgfQogICAgICAgIHJl
dHVybiB0aGlzLmxlbmd0aDsKICAgIH0sCiAgICAgICAgCiAgICAKICAgIHJlbW92
ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIGEgPSBhcmd1bWVudHM7CiAgICAg
ICAgZm9yKCB2YXIgaSA9IDA7IGkgPCBhLmxlbmd0aDsgaSsrICkgewogICAgICAg
ICAgICB2YXIgaiA9IHRoaXMuaW5kZXhPZiggYVsgaSBdICk7CiAgICAgICAgICAg
IGlmKCBqID49IDAgKQogICAgICAgICAgICAgICAgdGhpcy5zcGxpY2UoIGosIDEg
KTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHRoaXMubGVuZ3RoOwogICAgfSwK
CgogICAgLyogamF2YXNjcmlwdCAxLjUgYXJyYXkgbWV0aG9kcyAqLwogICAgLyog
aHR0cDovL2RldmVsb3Blci10ZXN0Lm1vemlsbGEub3JnL2VuL2RvY3MvQ29yZV9K
YXZhU2NyaXB0XzEuNV9SZWZlcmVuY2U6T2JqZWN0czpBcnJheSNNZXRob2RzICov
CgogICAgZXZlcnk6IGZ1bmN0aW9uKCBjYWxsYmFjaywgb2JqZWN0ICkgewogICAg
ICAgIHZhciBsZW5ndGggPSB0aGlzLmxlbmd0aDsKICAgICAgICBmb3IoIHZhciBp
ID0gMDsgaSA8IGxlbmd0aDsgaSsrICkgewogICAgICAgICAgICB2YXIgcmVzdWx0
ID0gb2JqZWN0CiAgICAgICAgICAgICAgICA/IGNhbGxiYWNrLmNhbGwoIG9iamVj
dCwgdGhpc1sgaSBdLCBpLCB0aGlzICkKICAgICAgICAgICAgICAgIDogY2FsbGJh
Y2soIHRoaXNbIGkgXSwgaSwgdGhpcyApOwogICAgICAgICAgICBpZiggIXJlc3Vs
dCApCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAg
ICAgIHJldHVybiB0cnVlOwogICAgfSwKCgogICAgZmlsdGVyOiBmdW5jdGlvbigg
Y2FsbGJhY2ssIG9iamVjdCApIHsKICAgICAgICB2YXIgb3V0ID0gW107CiAgICAg
ICAgdmFyIGxlbmd0aCA9IHRoaXMubGVuZ3RoOwogICAgICAgIGZvciggdmFyIGkg
PSAwOyBpIDwgbGVuZ3RoOyBpKysgKSB7CiAgICAgICAgICAgIHZhciByZXN1bHQg
PSBvYmplY3QKICAgICAgICAgICAgICAgID8gY2FsbGJhY2suY2FsbCggb2JqZWN0
LCB0aGlzWyBpIF0sIGksIHRoaXMgKQogICAgICAgICAgICAgICAgOiBjYWxsYmFj
ayggdGhpc1sgaSBdLCBpLCB0aGlzICk7CiAgICAgICAgICAgIGlmKCByZXN1bHQg
KQogICAgICAgICAgICAgICAgb3V0LnB1c2goIHRoaXNbIGkgXSApOwogICAgICAg
IH0KICAgICAgICByZXR1cm4gb3V0OwogICAgfSwKICAgIAogICAgCiAgICBmb3JF
YWNoOiBmdW5jdGlvbiggY2FsbGJhY2ssIG9iamVjdCApIHsKICAgICAgICB2YXIg
bGVuZ3RoID0gdGhpcy5sZW5ndGg7CiAgICAgICAgZm9yKCB2YXIgaSA9IDA7IGkg
PCBsZW5ndGg7IGkrKyApIHsKICAgICAgICAgICAgb2JqZWN0CiAgICAgICAgICAg
ICAgICA/IGNhbGxiYWNrLmNhbGwoIG9iamVjdCwgdGhpc1sgaSBdLCBpLCB0aGlz
ICkKICAgICAgICAgICAgICAgIDogY2FsbGJhY2soIHRoaXNbIGkgXSwgaSwgdGhp
cyApOwogICAgICAgIH0KICAgIH0sCiAgICAKICAgIAogICAgaW5kZXhPZjogZnVu
Y3Rpb24oIHZhbHVlLCBmcm9tSW5kZXggKSB7CiAgICAgICAgZnJvbUluZGV4ID0g
dGhpcy5maXRJbmRleCggZnJvbUluZGV4LCAwICk7CiAgICAgICAgZm9yKCB2YXIg
aSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrICkgewogICAgICAgICAgICBpZigg
dGhpc1sgaSBdID09PSB2YWx1ZSApCiAgICAgICAgICAgICAgICByZXR1cm4gaTsg
CiAgICAgICAgfQogICAgICAgIHJldHVybiAtMTsKICAgIH0sCgoKICAgIGxhc3RJ
bmRleE9mOiBmdW5jdGlvbiggdmFsdWUsIGZyb21JbmRleCApIHsKICAgICAgICBm
cm9tSW5kZXggPSB0aGlzLmZpdEluZGV4KCBmcm9tSW5kZXgsIHRoaXMubGVuZ3Ro
IC0gMSApOwogICAgICAgIGZvciggdmFyIGkgPSBmcm9tSW5kZXg7IGkgPj0gMDsg
aS0tICkgewogICAgICAgICAgICBpZiggdGhpc1sgaSBdID09IHZhbHVlICkKICAg
ICAgICAgICAgICAgIHJldHVybiBpOwogICAgICAgIH0KICAgICAgICByZXR1cm4g
LTE7CiAgICB9LAoKCiAgICBzb21lOiBmdW5jdGlvbiggY2FsbGJhY2ssIG9iamVj
dCApIHsKICAgICAgICB2YXIgbGVuZ3RoID0gdGhpcy5sZW5ndGg7CiAgICAgICAg
Zm9yKCB2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKyApIHsKICAgICAgICAgICAg
dmFyIHJlc3VsdCA9IG9iamVjdAogICAgICAgICAgICAgICAgPyBjYWxsYmFjay5j
YWxsKCBvYmplY3QsIHRoaXNbIGkgXSwgaSwgdGhpcyApCiAgICAgICAgICAgICAg
ICA6IGNhbGxiYWNrKCB0aGlzWyBpIF0sIGksIHRoaXMgKTsKICAgICAgICAgICAg
aWYoIHJlc3VsdCApCiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAg
ICB9CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfSwKCgogICAgLyogamF2YXNj
cmlwdCAxLjIgYXJyYXkgbWV0aG9kcyAqLwoKICAgIGNvbmNhdDogZnVuY3Rpb24o
KSB7CiAgICAgICAgdmFyIGEgPSBhcmd1bWVudHM7CiAgICAgICAgdmFyIG91dCA9
IHRoaXMuY29weSgpOwogICAgICAgIGZvciggaSA9IDA7IGkgPCBhLmxlbmd0aDsg
aSsrICkgewogICAgICAgICAgICB2YXIgYiA9IGFbIGkgXTsKICAgICAgICAgICAg
Zm9yKCBqID0gMDsgaiA8IGIubGVuZ3RoOyBqKysgKQogICAgICAgICAgICAgICAg
b3V0LnB1c2goIGJbIGogXSApOwogICAgICAgIH0KICAgICAgICByZXR1cm4gb3V0
OwogICAgfSwKICAgIAoKICAgIHB1c2g6IGZ1bmN0aW9uKCkgewogICAgICAgIHZh
ciBhID0gYXJndW1lbnRzOwogICAgICAgIGZvciggdmFyIGkgPSAwOyBpIDwgYS5s
ZW5ndGg7IGkrKyApCiAgICAgICAgICAgIHRoaXNbIHRoaXMubGVuZ3RoIF0gPSBh
WyBpIF07CiAgICAgICAgcmV0dXJuIHRoaXMubGVuZ3RoOyAgICAgCiAgICB9LAoK
CiAgICBwb3A6IGZ1bmN0aW9uKCkgewogICAgICAgIGlmKCB0aGlzLmxlbmd0aCA9
PSAwICkKICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKICAgICAgICB2YXIg
b3V0ID0gdGhpc1sgdGhpcy5sZW5ndGggLSAxIF07CiAgICAgICAgdGhpcy5sZW5n
dGgtLTsKICAgICAgICByZXR1cm4gb3V0OwogICAgfSwKICAgIAogICAgCiAgICB1
bnNoaWZ0OiBmdW5jdGlvbigpIHsKICAgICAgICB2YXIgYSA9IGFyZ3VtZW50czsK
ICAgICAgICBmb3IoIHZhciBpID0gMDsgaSA8IGEubGVuZ3RoOyBpKysgKSB7CiAg
ICAgICAgICAgIHRoaXNbIGkgKyBhLmxlbmd0aCBdID0gdGhpc1sgaSBdOwogICAg
ICAgICAgICB0aGlzWyBpIF0gPSBhWyBpIF07CiAgICAgICAgfQogICAgICAgIHJl
dHVybiB0aGlzLmxlbmd0aDsgICAgIAogICAgfSwKICAgIAogICAgCiAgICBzaGlm
dDogZnVuY3Rpb24oKSB7CiAgICAgICAgaWYoIHRoaXMubGVuZ3RoID09IDAgKQog
ICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkOwogICAgICAgIHZhciBvdXQgPSB0
aGlzWyAwIF07CiAgICAgICAgZm9yKCB2YXIgaSA9IDE7IGkgPCB0aGlzLmxlbmd0
aDsgaSsrICkKICAgICAgICAgICAgdGhpc1sgaSAtIDEgXSA9IHRoaXNbIGkgXTsK
ICAgICAgICB0aGlzLmxlbmd0aC0tOwogICAgICAgIHJldHVybiBvdXQ7CiAgICB9
Cn0gKTsKCgovKiBkYXRlIGV4dGVuc2lvbnMgKi8KCk9iamVjdC5leHRlbmQoRGF0
ZSwgewogICAgLyogIGlzbyA4NjAxIGRhdGUgZm9ybWF0IHBhcnNlcgogICAgICAg
IHRoaXMgd2FzIGZ1biB0byB3cml0ZS4uLgogICAgICAgIHRoYW5rcyB0bzogaHR0
cDovL3d3dy5jbC5jYW0uYWMudWsvfm1nazI1L2lzby10aW1lLmh0bWwgKi8KCiAg
ICBtYXRjaElTT1N0cmluZzogbmV3IFJlZ0V4cCgKICAgICAgICAiXihbMC05XXs0
fSkiICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIHllYXIKICAgICAgICAiKD86LSg/PTBbMS05XXwxWzAtMl0p
fCQpKC4uKT8iICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IG1vbnRoCiAgICAgICAgIig/Oi0oPz0wWzEtOV18WzEyXVswLTldfDNbMDFdKXwk
KShbMC05XXsyfSk/IiArICAgICAgICAgICAgICAgICAgICAvLyBkYXkgb2YgdGhl
IG1vbnRoCiAgICAgICAgIig/OlQoPz1bMDFdWzAtOV18MlswLTRdKXwkKVQ/KFsw
LTldezJ9KT8iICsgICAgICAgICAgICAgICAgICAgICAgICAvLyBob3VycwogICAg
ICAgICIoPzo6KD89WzAtNV1bMC05XSl8XFwrfC18WnwkKShbMC05XXsyfSk/IiAr
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gbWludXRlcwogICAgICAgICIoPzo6
KD89WzAtNV1bMC05XXw2MCR8NjBbK3wtfFpdfDYwLjArKXxcXCt8LXxafCQpOj8o
WzAtOV17Mn0pPyIgKyAgLy8gc2Vjb25kcwogICAgICAgICIoXC5bMC05XSspPyIg
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gZnJhY3Rpb25hbCBzZWNvbmRzCiAgICAgICAgIihafFxcK1swMV1b
MC05XXxcXCsyWzAtNF18LVswMV1bMC05XXwtMlswLTRdKT8iICsgICAgICAgICAg
ICAgICAgICAvLyB0aW1lem9uZSBob3VycwogICAgICAgICI6PyhbMC01XVswLTld
fDYwKT8kIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gdGltZXpvbmUgbWludXRlcwogICAgKSwKICAgIAogICAgCiAgICBm
cm9tSVNPU3RyaW5nOiBmdW5jdGlvbiggc3RyaW5nICkgewogICAgICAgIHZhciB0
ID0gdGhpcy5tYXRjaElTT1N0cmluZy5leGVjKCBzdHJpbmcgKTsKICAgICAgICBp
ZiggIXQgKQogICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkOwoKICAgICAgICB2
YXIgeWVhciA9IGZpbml0ZUludCggdFsgMSBdLCAxMCApOwogICAgICAgIHZhciBt
b250aCA9IGZpbml0ZUludCggdFsgMiBdLCAxMCApIC0gMTsKICAgICAgICB2YXIg
ZGF5ID0gZmluaXRlSW50KCB0WyAzIF0sIDEwICk7CiAgICAgICAgdmFyIGhvdXJz
ID0gZmluaXRlSW50KCB0WyA0IF0sIDEwICk7CiAgICAgICAgdmFyIG1pbnV0ZXMg
PSBmaW5pdGVJbnQoIHRbIDUgXSwgMTAgKTsKICAgICAgICB2YXIgc2Vjb25kcyA9
IGZpbml0ZUludCggdFsgNiBdLCAxMCApOwogICAgICAgIHZhciBtaWxsaXNlY29u
ZHMgPSBmaW5pdGVJbnQoIE1hdGgucm91bmQoIHBhcnNlRmxvYXQoIHRbIDcgXSAp
ICogMTAwMCApICk7CiAgICAgICAgdmFyIHR6SG91cnMgPSBmaW5pdGVJbnQoIHRb
IDggXSwgMTAgKTsKICAgICAgICB2YXIgdHpNaW51dGVzID0gZmluaXRlSW50KCB0
WyA5IF0sIDEwICk7CgogICAgICAgIHZhciBkYXRlID0gbmV3IHRoaXMoIDAgKTsK
ICAgICAgICBpZiggZGVmaW5lZCggdFsgOCBdICkgKSB7CiAgICAgICAgICAgIGRh
dGUuc2V0VVRDRnVsbFllYXIoIHllYXIsIG1vbnRoLCBkYXkgKTsKICAgICAgICAg
ICAgZGF0ZS5zZXRVVENIb3VycyggaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMsIG1p
bGxpc2Vjb25kcyApOwogICAgICAgICAgICB2YXIgb2Zmc2V0ID0gKHR6SG91cnMg
KiA2MCArIHR6TWludXRlcykgKiA2MDAwMDsKICAgICAgICAgICAgaWYoIG9mZnNl
dCApCiAgICAgICAgICAgICAgICBkYXRlID0gbmV3IHRoaXMoIGRhdGUgLSBvZmZz
ZXQgKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBkYXRlLnNldEZ1bGxZ
ZWFyKCB5ZWFyLCBtb250aCwgZGF5ICk7CiAgICAgICAgICAgIGRhdGUuc2V0SG91
cnMoIGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzLCBtaWxsaXNlY29uZHMgKTsKICAg
ICAgICB9CgogICAgICAgIHJldHVybiBkYXRlOwogICAgfQp9ICk7CgoKT2JqZWN0
LmV4dGVuZChEYXRlLnByb3RvdHlwZSwgewogICAgZ2V0SVNPVGltZXpvbmVPZmZz
ZXQ6IGZ1bmN0aW9uKCkgewogICAgICAgIHZhciBvZmZzZXQgPSAtdGhpcy5nZXRU
aW1lem9uZU9mZnNldCgpOwogICAgICAgIHZhciBuZWdhdGl2ZSA9IGZhbHNlOwog
ICAgICAgIGlmKCBvZmZzZXQgPCAwICkgewogICAgICAgICAgICBuZWdhdGl2ZSA9
IHRydWU7CiAgICAgICAgICAgIG9mZnNldCAqPSAtMTsKICAgICAgICB9CiAgICAg
ICAgdmFyIG9mZnNldEhvdXJzID0gTWF0aC5mbG9vciggb2Zmc2V0IC8gNjAgKS50
b1N0cmluZygpLnBhZCggMiwgIjAiICk7CiAgICAgICAgdmFyIG9mZnNldE1pbnV0
ZXMgPSBNYXRoLmZsb29yKCBvZmZzZXQgJSA2MCApLnRvU3RyaW5nKCkucGFkKCAy
LCAiMCIgKTsKICAgICAgICByZXR1cm4gKG5lZ2F0aXZlID8gIi0iIDogIisiKSAr
IG9mZnNldEhvdXJzICsgIjoiICsgb2Zmc2V0TWludXRlczsKICAgIH0sCgoKICAg
IHRvSVNPRGF0ZVN0cmluZzogZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIHllYXIg
PSB0aGlzLmdldEZ1bGxZZWFyKCk7CiAgICAgICAgdmFyIG1vbnRoID0gKHRoaXMu
Z2V0TW9udGgoKSArIDEpLnRvU3RyaW5nKCkucGFkKCAyLCAiMCIgKTsKICAgICAg
ICB2YXIgZGF5ID0gdGhpcy5nZXREYXRlKCkudG9TdHJpbmcoKS5wYWQoIDIsICIw
IiApOwogICAgICAgIHJldHVybiB5ZWFyICsgIi0iICsgbW9udGggKyAiLSIgKyBk
YXk7CiAgICB9LAoKCiAgICB0b1VUQ0lTT0RhdGVTdHJpbmc6IGZ1bmN0aW9uKCkg
ewogICAgICAgIHZhciB5ZWFyID0gdGhpcy5nZXRVVENGdWxsWWVhcigpOwogICAg
ICAgIHZhciBtb250aCA9ICh0aGlzLmdldFVUQ01vbnRoKCkgKyAxKS50b1N0cmlu
ZygpLnBhZCggMiwgIjAiICk7CiAgICAgICAgdmFyIGRheSA9IHRoaXMuZ2V0VVRD
RGF0ZSgpLnRvU3RyaW5nKCkucGFkKCAyLCAiMCIgKTsKICAgICAgICByZXR1cm4g
eWVhciArICItIiArIG1vbnRoICsgIi0iICsgZGF5OwogICAgfSwKCgogICAgdG9J
U09UaW1lU3RyaW5nOiBmdW5jdGlvbigpIHsKICAgICAgICB2YXIgaG91cnMgPSB0
aGlzLmdldEhvdXJzKCkudG9TdHJpbmcoKS5wYWQoIDIsICIwIiApOwogICAgICAg
IHZhciBtaW51dGVzID0gdGhpcy5nZXRNaW51dGVzKCkudG9TdHJpbmcoKS5wYWQo
IDIsICIwIiApOwogICAgICAgIHZhciBzZWNvbmRzID0gdGhpcy5nZXRTZWNvbmRz
KCkudG9TdHJpbmcoKS5wYWQoIDIsICIwIiApOwogICAgICAgIHZhciBtaWxsaXNl
Y29uZHMgPSB0aGlzLmdldE1pbGxpc2Vjb25kcygpLnRvU3RyaW5nKCkucGFkKCAz
LCAiMCIgKTsKICAgICAgICB2YXIgdGltZXpvbmUgPSB0aGlzLmdldElTT1RpbWV6
b25lT2Zmc2V0KCk7CiAgICAgICAgcmV0dXJuIGhvdXJzICsgIjoiICsgbWludXRl
cyArICI6IiArIHNlY29uZHMgKyAiLiIgKyBtaWxsaXNlY29uZHMgKyB0aW1lem9u
ZTsKICAgIH0sCgoKICAgIHRvVVRDSVNPVGltZVN0cmluZzogZnVuY3Rpb24oKSB7
CiAgICAgICAgdmFyIGhvdXJzID0gdGhpcy5nZXRVVENIb3VycygpLnRvU3RyaW5n
KCkucGFkKCAyLCAiMCIgKTsKICAgICAgICB2YXIgbWludXRlcyA9IHRoaXMuZ2V0
VVRDTWludXRlcygpLnRvU3RyaW5nKCkucGFkKCAyLCAiMCIgKTsKICAgICAgICB2
YXIgc2Vjb25kcyA9IHRoaXMuZ2V0VVRDU2Vjb25kcygpLnRvU3RyaW5nKCkucGFk
KCAyLCAiMCIgKTsKICAgICAgICB2YXIgbWlsbGlzZWNvbmRzID0gdGhpcy5nZXRV
VENNaWxsaXNlY29uZHMoKS50b1N0cmluZygpLnBhZCggMywgIjAiICk7CiAgICAg
ICAgcmV0dXJuIGhvdXJzICsgIjoiICsgbWludXRlcyArICI6IiArIHNlY29uZHMg
KyAiLiIgKyBtaWxsaXNlY29uZHMgKyAiWiI7CiAgICB9LAoKCiAgICB0b0lTT1N0
cmluZzogZnVuY3Rpb24oKSB7CiAgICAgICAgcmV0dXJuIHRoaXMudG9JU09EYXRl
U3RyaW5nKCkgKyAiVCIgKyB0aGlzLnRvSVNPVGltZVN0cmluZygpOwogICAgfSwK
CgogICAgdG9VVENJU09TdHJpbmc6IGZ1bmN0aW9uKCkgewogICAgICAgIHJldHVy
biB0aGlzLnRvVVRDSVNPRGF0ZVN0cmluZygpICsgIlQiICsgdGhpcy50b1VUQ0lT
T1RpbWVTdHJpbmcoKTsKICAgIH0KfSApOwoKCi8qIGFqYXggKi8KCmlmKCAhZGVm
aW5lZCggd2luZG93LlhNTEh0dHBSZXF1ZXN0ICkgKSB7CiAgICB3aW5kb3cuWE1M
SHR0cFJlcXVlc3QgPSBmdW5jdGlvbigpIHsKICAgICAgICB2YXIgdHlwZXMgPSBb
CiAgICAgICAgICAgICJNaWNyb3NvZnQuWE1MSFRUUCIsCiAgICAgICAgICAgICJN
U1hNTDIuWE1MSFRUUC41LjAiLAogICAgICAgICAgICAiTVNYTUwyLlhNTEhUVFAu
NC4wIiwKICAgICAgICAgICAgIk1TWE1MMi5YTUxIVFRQLjMuMCIsCiAgICAgICAg
ICAgICJNU1hNTDIuWE1MSFRUUCIKICAgICAgICBdOwogICAgICAgIAogICAgICAg
IGZvciggdmFyIGkgPSAwOyBpIDwgdHlwZXMubGVuZ3RoOyBpKysgKSB7CiAgICAg
ICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEFjdGl2ZVhP
YmplY3QoIHR5cGVzWyBpIF0gKTsKICAgICAgICAgICAgfSBjYXRjaCggZSApIHt9
CiAgICAgICAgfQogICAgICAgIAogICAgICAgIHJldHVybiB1bmRlZmluZWQ7CiAg
ICB9Cn0KLyoKRE9NIExpYnJhcnkgLSBDb3B5cmlnaHQgMjAwNSBTaXggQXBhcnQK
JElkOiBkb20uanMgMjcxIDIwMDktMDMtMjMgMTI6MDU6MTdaIHBrb3JuaWxvdiAk
CgpDb3B5cmlnaHQgKGMpIDIwMDUsIFNpeCBBcGFydCwgTHRkLgpBbGwgcmlnaHRz
IHJlc2VydmVkLgoKUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cm1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKbWV0OgoKICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgoK
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQpjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCmluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKZGlzdHJpYnV0aW9uLgoKICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiAiU2l4
IEFwYXJ0IiBub3IgdGhlIG5hbWVzIG9mIGl0cwpjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQp0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgoKVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwoiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VApMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsClNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCkRBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQpUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCihJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQpPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgoK
Ki8KCgovKiBOb2RlIGNsYXNzICovCgppZighd2luZG93Lk5vZGUpCiAgICBOb2Rl
ID0ge307Cgp0cnkgewogICAgT2JqZWN0LmV4dGVuZChOb2RlLCB7CiAgICAgICAg
RUxFTUVOVF9OT0RFOiAxLAogICAgICAgIEFUVFJJQlVURV9OT0RFOiAyLAogICAg
ICAgIFRFWFRfTk9ERTogMywKICAgICAgICBDREFUQV9TRUNUSU9OX05PREU6IDQs
CiAgICAgICAgQ09NTUVOVF9OT0RFOiA4LAogICAgICAgIERPQ1VNRU5UX05PREU6
IDksCiAgICAgICAgRE9DVU1FTlRfRlJBR01FTlRfTk9ERTogMTEKICAgIH0gKTsK
fSBjYXRjaCggZSApIHt9CgoKLyogRE9NIGNsYXNzICovCgppZighd2luZG93LkRP
TSkKICAgIERPTSA9IHt9OwoKCk9iamVjdC5leHRlbmQoRE9NLCB7CiAgICBnZXRF
bGVtZW50OiBmdW5jdGlvbiggZSApIHsKICAgICAgICByZXR1cm4gKHR5cGVvZiBl
ID09ICJzdHJpbmciIHx8IHR5cGVvZiBlID09ICJudW1iZXIiKSA/IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCBlICkgOiBlOwogICAgfSwKCgogICAgYWRkRXZlbnRM
aXN0ZW5lcjogZnVuY3Rpb24oIGUsIGV2ZW50TmFtZSwgZnVuYywgdXNlQ2FwdHVy
ZSApIHsKICAgICAgICB0cnkgewogICAgICAgICAgICBpZiggZS5hZGRFdmVudExp
c3RlbmVyICkKICAgICAgICAgICAgICAgIGUuYWRkRXZlbnRMaXN0ZW5lciggZXZl
bnROYW1lLCBmdW5jLCB1c2VDYXB0dXJlICk7CiAgICAgICAgICAgIGVsc2UgaWYo
IGUuYXR0YWNoRXZlbnQgKQogICAgICAgICAgICAgICAgZS5hdHRhY2hFdmVudCgg
Im9uIiArIGV2ZW50TmFtZSwgZnVuYyApOwogICAgICAgICAgICBlbHNlCiAgICAg
ICAgICAgICAgICBlWyAib24iICsgZXZlbnROYW1lIF0gPSBmdW5jOwogICAgICAg
IH0gY2F0Y2goIGUgKSB7fQogICAgfSwKCgogICAgcmVtb3ZlRXZlbnRMaXN0ZW5l
cjogZnVuY3Rpb24oIGUsIGV2ZW50TmFtZSwgZnVuYywgdXNlQ2FwdHVyZSApIHsK
ICAgICAgICB0cnkgewogICAgICAgICAgICBpZiggZS5yZW1vdmVFdmVudExpc3Rl
bmVyICkKICAgICAgICAgICAgICAgIGUucmVtb3ZlRXZlbnRMaXN0ZW5lciggZXZl
bnROYW1lLCBmdW5jLCB1c2VDYXB0dXJlICk7CiAgICAgICAgICAgIGVsc2UgaWYo
IGUuZGV0YWNoRXZlbnQgKQogICAgICAgICAgICAgICAgZS5kZXRhY2hFdmVudCgg
Im9uIiArIGV2ZW50TmFtZSwgZnVuYyApOwogICAgICAgICAgICBlbHNlCiAgICAg
ICAgICAgICAgICBlWyAib24iICsgZXZlbnROYW1lIF0gPSB1bmRlZmluZWQ7CiAg
ICAgICAgfSBjYXRjaCggZSApIHt9CiAgICB9LAoKCiAgICByZWFkeTogZnVuY3Rp
b24oZiwgZnJhbWUpIHsKICAgICAgICBpZiAoZnJhbWUpIHsKICAgICAgICAgICAg
d2luID0gZnJhbWUuY29udGVudFdpbmRvdzsKICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICB3aW4gPSB3aW5kb3c7CiAgICAgICAgfQogICAgICAgIGlmICgvKD8h
Lio/Y29tcGF0aWJsZXwuKj93ZWJraXQpXm1vemlsbGF8b3BlcmEvaS50ZXN0KG5h
dmlnYXRvci51c2VyQWdlbnQpICYmICFmcmFtZSkgewogICAgICAgICAgICBkb2N1
bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJywgZiwgZmFs
c2UpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHZhciBnbyA9IGZ1bmN0
aW9uKCkgeyB3aW4uZG9jdW1lbnQuYm9keSA/IGYoKSA6IHdpbi5zZXRUaW1lb3V0
KGdvLCAxKTsgfQogICAgICAgICAgICBnbygpOwogICAgICAgIH0KICAgIH0sCgoK
ICAgIGZvY3VzOiBmdW5jdGlvbiggZSApIHsKICAgICAgICB0cnkgewogICAgICAg
ICAgICBlID0gRE9NLmdldEVsZW1lbnQoIGUgKTsKICAgICAgICAgICAgZS5mb2N1
cygpOwogICAgICAgIH0gY2F0Y2goIGUgKSB7fQogICAgfSwKCgogICAgYmx1cjog
ZnVuY3Rpb24oIGUgKSB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgZSA9IERP
TS5nZXRFbGVtZW50KCBlICk7CiAgICAgICAgICAgIGUuYmx1cigpOwogICAgICAg
IH0gY2F0Y2goIGUgKSB7fQogICAgfSwKICAgIAoKICAgIC8qIHN0eWxlICovCiAg
ICAKICAgIGdldENvbXB1dGVkU3R5bGU6IGZ1bmN0aW9uKCBlICkgewogICAgICAg
IGlmKCBlLmN1cnJlbnRTdHlsZSApCiAgICAgICAgICAgIHJldHVybiBlLmN1cnJl
bnRTdHlsZTsKICAgICAgICB2YXIgc3R5bGUgPSB7fTsKICAgICAgICB2YXIgb3du
ZXIgPSBET00uZ2V0T3duZXJEb2N1bWVudCggZSApOwogICAgICAgIGlmKCBvd25l
ciAmJiBvd25lci5kZWZhdWx0VmlldyAmJiBvd25lci5kZWZhdWx0Vmlldy5nZXRD
b21wdXRlZFN0eWxlICkgeyAgICAgICAgICAgIAogICAgICAgICAgICB0cnkgewog
ICAgICAgICAgICAgICAgc3R5bGUgPSBvd25lci5kZWZhdWx0Vmlldy5nZXRDb21w
dXRlZFN0eWxlKCBlLCBudWxsICk7CiAgICAgICAgICAgIH0gY2F0Y2goIGUgKSB7
fQogICAgICAgIH0KICAgICAgICByZXR1cm4gc3R5bGU7CiAgICB9LAoKCiAgICBn
ZXRTdHlsZTogZnVuY3Rpb24oIGUsIHAgKSB7CiAgICAgICAgdmFyIHMgPSBET00u
Z2V0Q29tcHV0ZWRTdHlsZSggZSApOwogICAgICAgIHJldHVybiBzWyBwIF07CiAg
ICB9LAoKCiAgICAvLyBnaXZlbiBhIHdpbmRvdyAob3IgZGVmYXVsdGluZyB0byBj
dXJyZW50IHdpbmRvdyksIHJldHVybnMKICAgIC8vIG9iamVjdCB3aXRoIC54IGFu
ZCAueSBvZiBjbGllbnQncyB1c2FibGUgYXJlYQogICAgZ2V0Q2xpZW50RGltZW5z
aW9uczogZnVuY3Rpb24oIHcgKSB7CiAgICAgICAgaWYoICF3ICkKICAgICAgICAg
ICAgdyA9IHdpbmRvdzsKCiAgICAgICAgdmFyIGQgPSB7fTsKCiAgICAgICAgLy8g
bW9zdCBicm93c2VycwogICAgICAgIGlmKCB3LmlubmVySGVpZ2h0ICkgewogICAg
ICAgICAgICBkLnggPSB3LmlubmVyV2lkdGg7CiAgICAgICAgICAgIGQueSA9IHcu
aW5uZXJIZWlnaHQ7CiAgICAgICAgICAgIHJldHVybiBkOwogICAgICAgIH0KCiAg
ICAgICAgLy8gSUU2LCBzdHJpY3QKICAgICAgICB2YXIgZGUgPSB3LmRvY3VtZW50
LmRvY3VtZW50RWxlbWVudDsKICAgICAgICBpZiggZGUgJiYgZGUuY2xpZW50SGVp
Z2h0ICkgewogICAgICAgICAgICBkLnggPSBkZS5jbGllbnRXaWR0aDsKICAgICAg
ICAgICAgZC55ID0gZGUuY2xpZW50SGVpZ2h0OwogICAgICAgICAgICByZXR1cm4g
ZDsKICAgICAgICB9CgogICAgICAgIC8vIElFLCBtaXNjCiAgICAgICAgaWYoIGRv
Y3VtZW50LmJvZHkgKSB7CiAgICAgICAgICAgIGQueCA9IGRvY3VtZW50LmJvZHku
Y2xpZW50V2lkdGg7CiAgICAgICAgICAgIGQueSA9IGRvY3VtZW50LmJvZHkuY2xp
ZW50SGVpZ2h0OwogICAgICAgICAgICByZXR1cm4gZDsKICAgICAgICB9CiAgICAg
ICAgCiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKICAgIH0sCgoKICAgIGdldERp
bWVuc2lvbnM6IGZ1bmN0aW9uKCBlICkgewogICAgICAgIGlmKCAhZSApCiAgICAg
ICAgICAgIHJldHVybiB1bmRlZmluZWQ7CgogICAgICAgIHZhciBzdHlsZSA9IERP
TS5nZXRDb21wdXRlZFN0eWxlKCBlICk7CgogICAgICAgIHJldHVybiB7CiAgICAg
ICAgICAgIG9mZnNldExlZnQ6IGUub2Zmc2V0TGVmdCwKICAgICAgICAgICAgb2Zm
c2V0VG9wOiBlLm9mZnNldFRvcCwKICAgICAgICAgICAgb2Zmc2V0V2lkdGg6IGUu
b2Zmc2V0V2lkdGgsCiAgICAgICAgICAgIG9mZnNldEhlaWdodDogZS5vZmZzZXRI
ZWlnaHQsCiAgICAgICAgICAgIGNsaWVudFdpZHRoOiBlLmNsaWVudFdpZHRoLAog
ICAgICAgICAgICBjbGllbnRIZWlnaHQ6IGUuY2xpZW50SGVpZ2h0LAogICAgICAg
ICAgICAKICAgICAgICAgICAgb2Zmc2V0UmlnaHQ6IGUub2Zmc2V0TGVmdCArIGUu
b2Zmc2V0V2lkdGgsCiAgICAgICAgICAgIG9mZnNldEJvdHRvbTogZS5vZmZzZXRU
b3AgKyBlLm9mZnNldEhlaWdodCwKICAgICAgICAgICAgY2xpZW50TGVmdDogZmlu
aXRlSW50KCBzdHlsZS5ib3JkZXJMZWZ0V2lkdGggKSArIGZpbml0ZUludCggc3R5
bGUucGFkZGluZ0xlZnQgKSwKICAgICAgICAgICAgY2xpZW50VG9wOiBmaW5pdGVJ
bnQoIHN0eWxlLmJvcmRlclRvcFdpZHRoICkgKyBmaW5pdGVJbnQoIHN0eWxlLnBh
ZGRpbmdUb3AgKSwKICAgICAgICAgICAgY2xpZW50UmlnaHQ6IGUuY2xpZW50TGVm
dCArIGUuY2xpZW50V2lkdGgsCiAgICAgICAgICAgIGNsaWVudEJvdHRvbTogZS5j
bGllbnRUb3AgKyBlLmNsaWVudEhlaWdodAogICAgICAgIH07CiAgICB9LAoKCiAg
ICBnZXRBYnNvbHV0ZURpbWVuc2lvbnM6IGZ1bmN0aW9uKCBlICkgewogICAgICAg
IHZhciBkID0gRE9NLmdldERpbWVuc2lvbnMoIGUgKTsKICAgICAgICBpZiggIWQg
KQogICAgICAgICAgICByZXR1cm4gZDsKICAgICAgICBkLmFic29sdXRlTGVmdCA9
IGQub2Zmc2V0TGVmdDsKICAgICAgICBkLmFic29sdXRlVG9wID0gZC5vZmZzZXRU
b3A7CiAgICAgICAgZC5hYnNvbHV0ZVJpZ2h0ID0gZC5vZmZzZXRSaWdodDsKICAg
ICAgICBkLmFic29sdXRlQm90dG9tID0gZC5vZmZzZXRCb3R0b207CiAgICAgICAg
dmFyIGJvcmsgPSAwOwogICAgICAgIHdoaWxlKCBlICkgewogICAgICAgICAgICB0
cnkgeyAvLyBJRSA2IHNvbWV0aW1lcyBnaXZlcyBhbiB1bndhcnJhbnRlZCBlcnJv
ciAoImh0bWxmaWxlOiBVbnNwZWNpZmllZCBlcnJvciIpLgogICAgICAgICAgICAg
ICAgZSA9IGUub2Zmc2V0UGFyZW50OwogICAgICAgICAgICB9IGNhdGNoICggZXJy
ICkgewogICAgICAgICAgICAgICAgbG9nKCAiSW4gRE9NLmdldEFic29sdXRlRGlt
ZW5zaW9uczogIiArIGVyci5tZXNzYWdlICk7IAogICAgICAgICAgICAgICAgaWYg
KCArK2JvcmsgPiAyNSApCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7
CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYoICFlICkKICAgICAgICAgICAg
ICAgIHJldHVybiBkOwogICAgICAgICAgICBkLmFic29sdXRlTGVmdCArPSBlLm9m
ZnNldExlZnQ7CiAgICAgICAgICAgIGQuYWJzb2x1dGVUb3AgKz0gZS5vZmZzZXRU
b3A7CiAgICAgICAgICAgIGQuYWJzb2x1dGVSaWdodCArPSBlLm9mZnNldExlZnQ7
CiAgICAgICAgICAgIGQuYWJzb2x1dGVCb3R0b20gKz0gZS5vZmZzZXRUb3A7CiAg
ICAgICAgfQogICAgICAgIHJldHVybiBkOwogICAgfSwKICAgIAogICAgCiAgICBn
ZXRJZnJhbWVBYnNvbHV0ZURpbWVuc2lvbnM6IGZ1bmN0aW9uKCBlICkgewogICAg
ICAgIHZhciBkID0gRE9NLmdldEFic29sdXRlRGltZW5zaW9ucyggZSApOwogICAg
ICAgIGlmKCAhZCApCiAgICAgICAgICAgIHJldHVybiBkOwogICAgICAgIHZhciBp
ZnJhbWUgPSBET00uZ2V0T3duZXJJZnJhbWUoIGUgKTsKICAgICAgICBpZiggIWRl
ZmluZWQoIGlmcmFtZSApICkKICAgICAgICAgICAgcmV0dXJuIGQ7CiAgICAgICAg
CiAgICAgICAgdmFyIGQyID0gRE9NLmdldElmcmFtZUFic29sdXRlRGltZW5zaW9u
cyggaWZyYW1lICk7CiAgICAgICAgdmFyIHNjcm9sbCA9IERPTS5nZXRXaW5kb3dT
Y3JvbGwoIGlmcmFtZS5jb250ZW50V2luZG93ICk7CiAgICAgICAgdmFyIGxlZnQg
PSBkMi5hYnNvbHV0ZUxlZnQgLSBzY3JvbGwubGVmdDsKICAgICAgICB2YXIgdG9w
ID0gZDIuYWJzb2x1dGVUb3AgLSBzY3JvbGwudG9wOwogICAgICAgIAogICAgICAg
IGQuYWJzb2x1dGVMZWZ0ICs9IGxlZnQ7CiAgICAgICAgZC5hYnNvbHV0ZVRvcCAr
PSB0b3A7CiAgICAgICAgZC5hYnNvbHV0ZVJpZ2h0ICs9IGxlZnQ7CiAgICAgICAg
ZC5hYnNvbHV0ZUJvdHRvbSArPSB0b3A7CiAgICAgICAgCiAgICAgICAgcmV0dXJu
IGQ7CiAgICB9LAogICAgCiAgICAKICAgIHNldExlZnQ6IGZ1bmN0aW9uKCBlLCB2
ICkgeyBlLnN0eWxlLmxlZnQgPSBmaW5pdGVJbnQoIHYgKSArICJweCI7IH0sCiAg
ICBzZXRUb3A6IGZ1bmN0aW9uKCBlLCB2ICkgeyBlLnN0eWxlLnRvcCA9IGZpbml0
ZUludCggdiApICsgInB4IjsgfSwKICAgIHNldFJpZ2h0OiBmdW5jdGlvbiggZSwg
diApIHsgZS5zdHlsZS5yaWdodCA9IGZpbml0ZUludCggdiApICsgInB4IjsgfSwK
ICAgIHNldEJvdHRvbTogZnVuY3Rpb24oIGUsIHYgKSB7IGUuc3R5bGUuYm90dG9t
ID0gZmluaXRlSW50KCB2ICkgKyAicHgiOyB9LAogICAgc2V0V2lkdGg6IGZ1bmN0
aW9uKCBlLCB2ICkgeyBlLnN0eWxlLndpZHRoID0gbWF4KCAwLCBmaW5pdGVJbnQo
IHYgKSApICsgInB4IjsgfSwKICAgIHNldEhlaWdodDogZnVuY3Rpb24oIGUsIHYg
KSB7IGUuc3R5bGUuaGVpZ2h0ID0gbWF4KCAwLCBmaW5pdGVJbnQoIHYgKSApICsg
InB4IjsgfSwKICAgIHNldFpJbmRleDogZnVuY3Rpb24oIGUsIHYgKSB7IGUuc3R5
bGUuekluZGV4ID0gZmluaXRlSW50KCB2ICk7IH0sCgoKICAgIGdldFdpbmRvd1Nj
cm9sbDogZnVuY3Rpb24oIHcgKSB7CiAgICAgICAgdmFyIHMgPSB7CiAgICAgICAg
ICAgIGxlZnQ6IDAsCiAgICAgICAgICAgIHRvcDogMAogICAgICAgIH07CgogICAg
ICAgIGlmICghdykgdyA9IHdpbmRvdzsKICAgICAgICB2YXIgZCA9IHcuZG9jdW1l
bnQ7CiAgICAgICAgdmFyIGRlID0gZC5kb2N1bWVudEVsZW1lbnQ7CgogICAgICAg
IC8vIG1vc3QgYnJvd3NlcnMKICAgICAgICBpZiAoIGRlZmluZWQoIHcucGFnZVhP
ZmZzZXQgKSApIHsKICAgICAgICAgICAgcy5sZWZ0ID0gdy5wYWdlWE9mZnNldDsK
ICAgICAgICAgICAgcy50b3AgPSB3LnBhZ2VZT2Zmc2V0OwogICAgICAgIH0KCiAg
ICAgICAgLy8gaWUKICAgICAgICBlbHNlIGlmKCBkZSAmJiBkZWZpbmVkKCBkZS5z
Y3JvbGxMZWZ0ICkgKSB7CiAgICAgICAgICAgIHMubGVmdCA9IGRlLnNjcm9sbExl
ZnQ7CiAgICAgICAgICAgIHMudG9wID0gZGUuc2Nyb2xsVG9wOwogICAgICAgIH0K
CiAgICAgICAgLy8gc2FmYXJpCiAgICAgICAgZWxzZSBpZiggZGVmaW5lZCggdy5z
Y3JvbGxYICkgKSB7CiAgICAgICAgICAgIHMubGVmdCA9IHcuc2Nyb2xsWDsKICAg
ICAgICAgICAgcy50b3AgPSB3LnNjcm9sbFk7CiAgICAgICAgfQoKICAgICAgICAv
LyBvcGVyYQogICAgICAgIGVsc2UgaWYoIGQuYm9keSAmJiBkZWZpbmVkKCBkLmJv
ZHkuc2Nyb2xsTGVmdCApICkgewogICAgICAgICAgICBzLmxlZnQgPSBkLmJvZHku
c2Nyb2xsTGVmdDsKICAgICAgICAgICAgcy50b3AgPSBkLmJvZHkuc2Nyb2xsVG9w
OwogICAgICAgIH0KCgogICAgICAgIHJldHVybiBzOwogICAgfSwKCgogICAgZ2V0
QWJzb2x1dGVDdXJzb3JQb3NpdGlvbjogZnVuY3Rpb24oIGV2ZW50ICkgewogICAg
ICAgIGV2ZW50ID0gZXZlbnQgfHwgd2luZG93LmV2ZW50OwogICAgICAgIHZhciBz
ID0gRE9NLmdldFdpbmRvd1Njcm9sbCggd2luZG93ICk7CiAgICAgICAgcmV0dXJu
IHsKICAgICAgICAgICAgeDogcy5sZWZ0ICsgZXZlbnQuY2xpZW50WCwKICAgICAg
ICAgICAgeTogcy50b3AgKyBldmVudC5jbGllbnRZCiAgICAgICAgfTsKICAgIH0s
CiAgICAKICAgIAogICAgaW52aXNpYmxlU3R5bGU6IHsKICAgICAgICBkaXNwbGF5
OiAiYmxvY2siLAogICAgICAgIHBvc2l0aW9uOiAiYWJzb2x1dGUiLAogICAgICAg
IGxlZnQ6IDAsCiAgICAgICAgdG9wOiAwLAogICAgICAgIHdpZHRoOiAwLAogICAg
ICAgIGhlaWdodDogMCwKICAgICAgICBtYXJnaW46IDAsCiAgICAgICAgYm9yZGVy
OiAwLAogICAgICAgIHBhZGRpbmc6IDAsCiAgICAgICAgZm9udFNpemU6ICIwLjFw
eCIsCiAgICAgICAgbGluZUhlaWdodDogMCwKICAgICAgICBvcGFjaXR5OiAwLAog
ICAgICAgIE1vek9wYWNpdHk6IDAsCiAgICAgICAgZmlsdGVyOiAiYWxwaGEob3Bh
Y2l0eT0wKSIKICAgIH0sCiAgICAKICAgIAogICAgbWFrZUludmlzaWJsZTogZnVu
Y3Rpb24oIGUgKSB7CiAgICAgICAgZm9yKCB2YXIgcCBpbiB0aGlzLmludmlzaWJs
ZVN0eWxlICkgewogICAgICAgICAgICBlLnN0eWxlWyBwIF0gPSB0aGlzLmludmlz
aWJsZVN0eWxlWyBwIF07CiAgICAgICAgfQogICAgfSwKCgogICAgLyogdGV4dCBh
bmQgc2VsZWN0aW9uIHJlbGF0ZWQgbWV0aG9kcyAqLwoKICAgIG1lcmdlVGV4dE5v
ZGVzOiBmdW5jdGlvbiggbiApIHsKICAgICAgICB2YXIgYyA9IDA7CiAgICAgICAg
d2hpbGUoIG4gKSB7CiAgICAgICAgICAgIGlmKCBuLm5vZGVUeXBlID09IE5vZGUu
VEVYVF9OT0RFICYmIG4ubmV4dFNpYmxpbmcgJiYgbi5uZXh0U2libGluZy5ub2Rl
VHlwZSA9PSBOb2RlLlRFWFRfTk9ERSApIHsKICAgICAgICAgICAgICAgIG4ubm9k
ZVZhbHVlICs9IG4ubmV4dFNpYmxpbmcubm9kZVZhbHVlOwogICAgICAgICAgICAg
ICAgbi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKCBuLm5leHRTaWJsaW5nICk7CiAg
ICAgICAgICAgICAgICBjKys7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICAgICBpZiggbi5maXJzdENoaWxkICkKICAgICAgICAgICAgICAgICAgICBj
ICs9IERPTS5tZXJnZVRleHROb2Rlcyggbi5maXJzdENoaWxkICk7CiAgICAgICAg
ICAgICAgICBuID0gbi5uZXh0U2libGluZzsKICAgICAgICAgICAgfQogICAgICAg
IH0KICAgICAgICByZXR1cm4gYzsKICAgIH0sCiAgICAKICAgIAogICAgc2VsZWN0
RWxlbWVudDogZnVuY3Rpb24oIGUgKSB7ICAKICAgICAgICB2YXIgZCA9IGUub3du
ZXJEb2N1bWVudDsgIAogICAgICAgIAogICAgICAgIC8vIGludGVybmV0IGV4cGxv
cmVyICAKICAgICAgICBpZiggZC5ib2R5LmNyZWF0ZUNvbnRyb2xSYW5nZSApIHsg
IAogICAgICAgICAgICB2YXIgciA9IGQuYm9keS5jcmVhdGVDb250cm9sUmFuZ2Uo
KTsgIAogICAgICAgICAgICByLmFkZEVsZW1lbnQoIGUgKTsgIAogICAgICAgICAg
ICByLnNlbGVjdCgpOyAgCiAgICAgICAgfSAgCiAgICB9LCAKICAgIAogICAgCiAg
ICAvKiBkb20gbWV0aG9kcyAqLwogICAgCiAgICBpc0ltbXV0YWJsZTogZnVuY3Rp
b24oIG4gKSB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgaWYoIG4uZ2V0QXR0
cmlidXRlKCAiY29udGVudGVkaXRhYmxlIiApID09ICJmYWxzZSIgKQogICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfSBjYXRjaCggZSApIHt9CiAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgfSwKICAgIAogICAgCiAgICBnZXRJbW11
dGFibGU6IGZ1bmN0aW9uKCBuICkgewogICAgICAgIHZhciBpbW11dGFibGUgPSBu
dWxsOwogICAgICAgIHdoaWxlKCBuICkgewogICAgICAgICAgICBpZiggRE9NLmlz
SW1tdXRhYmxlKCBuICkgKQogICAgICAgICAgICAgICAgaW1tdXRhYmxlID0gbjsK
ICAgICAgICAgICAgbiA9IG4ucGFyZW50Tm9kZTsKICAgICAgICB9CiAgICAgICAg
cmV0dXJuIGltbXV0YWJsZTsKICAgIH0sCgoKICAgIGdldE93bmVyRG9jdW1lbnQ6
IGZ1bmN0aW9uKCBuICkgewogICAgICAgIGlmKCAhbiApCiAgICAgICAgICAgIHJl
dHVybiBkb2N1bWVudDsKICAgICAgICBpZiggbi5vd25lckRvY3VtZW50ICkKICAg
ICAgICAgICAgcmV0dXJuIG4ub3duZXJEb2N1bWVudDsKICAgICAgICBpZiggbi5n
ZXRFbGVtZW50QnlJZCApCiAgICAgICAgICAgIHJldHVybiBuOwogICAgICAgIHJl
dHVybiBkb2N1bWVudDsKICAgIH0sCgoKICAgIGdldE93bmVyV2luZG93OiBmdW5j
dGlvbiggbiApIHsKICAgICAgICBpZiggIW4gKQogICAgICAgICAgICByZXR1cm4g
d2luZG93OwogICAgICAgIGlmKCBuLnBhcmVudFdpbmRvdyApCiAgICAgICAgICAg
IHJldHVybiBuLnBhcmVudFdpbmRvdzsKICAgICAgICB2YXIgZG9jID0gRE9NLmdl
dE93bmVyRG9jdW1lbnQoIG4gKTsKICAgICAgICBpZiggZG9jICYmIGRvYy5kZWZh
dWx0VmlldyApCiAgICAgICAgICAgIHJldHVybiBkb2MuZGVmYXVsdFZpZXc7CiAg
ICAgICAgcmV0dXJuIHdpbmRvdzsKICAgIH0sCiAgICAKICAgIAogICAgZ2V0T3du
ZXJJZnJhbWU6IGZ1bmN0aW9uKCBuICkgewogICAgICAgIGlmKCAhbiApCiAgICAg
ICAgICAgIHJldHVybiB1bmRlZmluZWQ7CiAgICAgICAgdmFyIG53ID0gRE9NLmdl
dE93bmVyV2luZG93KCBuICk7CiAgICAgICAgdmFyIG5kID0gRE9NLmdldE93bmVy
RG9jdW1lbnQoIG4gKTsKICAgICAgICB2YXIgcHcgPSBudy5wYXJlbnQgfHwgbncu
cGFyZW50V2luZG93OwogICAgICAgIGlmKCAhcHcgKQogICAgICAgICAgICByZXR1
cm4gdW5kZWZpbmVkOwogICAgICAgIHZhciBwYXJlbnREb2N1bWVudCA9IHB3LmRv
Y3VtZW50OwogICAgICAgIHZhciBlcyA9IHBhcmVudERvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCAiaWZyYW1lIiApOwogICAgICAgIGZvciggdmFyIGkgPSAw
OyBpIDwgZXMubGVuZ3RoOyBpKysgKSB7CiAgICAgICAgICAgIHZhciBlID0gZXNb
IGkgXTsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgIHZhciBkID0g
ZS5jb250ZW50RG9jdW1lbnQgfHwgZS5jb250ZW50V2luZG93LmRvY3VtZW50Owog
ICAgICAgICAgICAgICAgaWYoIGQgPT09IG5kICkKICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZTsKICAgICAgICAgICAgfWNhdGNoKGVycikge307CiAgICAgICAg
fQogICAgICAgIHJldHVybiB1bmRlZmluZWQ7CiAgICB9LAoKCiAgICBmaWx0ZXJF
bGVtZW50c0J5Q2xhc3NOYW1lOiBmdW5jdGlvbiggZXMsIGNsYXNzTmFtZSApIHsK
ICAgICAgICB2YXIgZmlsdGVyZWQgPSBbXTsKICAgICAgICBmb3IoIHZhciBpID0g
MDsgaSA8IGVzLmxlbmd0aDsgaSsrICkgewogICAgICAgICAgICB2YXIgZSA9IGVz
WyBpIF07CiAgICAgICAgICAgIGlmKCBET00uaGFzQ2xhc3NOYW1lKCBlLCBjbGFz
c05hbWUgKSApCiAgICAgICAgICAgICAgICBmaWx0ZXJlZFsgZmlsdGVyZWQubGVu
Z3RoIF0gPSBlOwogICAgICAgIH0KICAgICAgICByZXR1cm4gZmlsdGVyZWQ7CiAg
ICB9LAogICAgCiAgICAKICAgIGZpbHRlckVsZW1lbnRzQnlBdHRyaWJ1dGU6IGZ1
bmN0aW9uKCBlcywgYXR0ciApIHsKICAgICAgICBpZiggIWVzICkKICAgICAgICAg
ICAgcmV0dXJuIFtdOwogICAgICAgIGlmKCAhZGVmaW5lZCggYXR0ciApIHx8IGF0
dHIgPT0gbnVsbCB8fCBhdHRyID09ICIiICkKICAgICAgICAgICAgcmV0dXJuIGVz
OwogICAgICAgIHZhciBmaWx0ZXJlZCA9IFtdOwogICAgICAgIGZvciggdmFyIGkg
PSAwOyBpIDwgZXMubGVuZ3RoOyBpKysgKSB7CiAgICAgICAgICAgIHZhciBlbGVt
ZW50ID0gZXNbIGkgXTsKICAgICAgICAgICAgaWYoICFlbGVtZW50ICkKICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICBpZiggZWxlbWVudC5nZXRB
dHRyaWJ1dGUgJiYgKCBlbGVtZW50LmdldEF0dHJpYnV0ZSggYXR0ciApICkgKQog
ICAgICAgICAgICAgICAgZmlsdGVyZWRbIGZpbHRlcmVkLmxlbmd0aCBdID0gZWxl
bWVudDsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGZpbHRlcmVkOwogICAgfSwK
CgogICAgZmlsdGVyRWxlbWVudHNCeVRhZ05hbWU6IGZ1bmN0aW9uKCBlcywgdGFn
TmFtZSApIHsKICAgICAgICBpZiggdGFnTmFtZSA9PSAiKiIgKQogICAgICAgICAg
ICByZXR1cm4gZXM7CiAgICAgICAgdmFyIGZpbHRlcmVkID0gW107CiAgICAgICAg
dGFnTmFtZSA9IHRhZ05hbWUudG9Mb3dlckNhc2UoKTsKICAgICAgICBmb3IoIHZh
ciBpID0gMDsgaSA8IGVzLmxlbmd0aDsgaSsrICkgewogICAgICAgICAgICB2YXIg
ZSA9IGVzWyBpIF07CiAgICAgICAgICAgIGlmKCBlLnRhZ05hbWUgJiYgZS50YWdO
YW1lLnRvTG93ZXJDYXNlKCkgPT0gdGFnTmFtZSApCiAgICAgICAgICAgICAgICBm
aWx0ZXJlZFsgZmlsdGVyZWQubGVuZ3RoIF0gPSBlOwogICAgICAgIH0KICAgICAg
ICByZXR1cm4gZmlsdGVyZWQ7CiAgICB9LAoKCiAgICBnZXRFbGVtZW50c0J5VGFn
QW5kQXR0cmlidXRlOiBmdW5jdGlvbiggcm9vdCwgdGFnTmFtZSwgYXR0ciApIHsK
ICAgICAgICBpZiggIXJvb3QgKQogICAgICAgICAgICByb290ID0gZG9jdW1lbnQ7
CiAgICAgICAgdmFyIGVzID0gcm9vdC5nZXRFbGVtZW50c0J5VGFnTmFtZSggdGFn
TmFtZSApOwogICAgICAgIHJldHVybiBET00uZmlsdGVyRWxlbWVudHNCeUF0dHJp
YnV0ZSggZXMsIGF0dHIgKTsKICAgIH0sCiAgICAKICAgIAogICAgZ2V0RWxlbWVu
dHNCeUF0dHJpYnV0ZTogZnVuY3Rpb24oIHJvb3QsIGF0dHIgKSB7CiAgICAgICAg
cmV0dXJuIERPTS5nZXRFbGVtZW50c0J5VGFnQW5kQXR0cmlidXRlKCByb290LCAi
KiIsIGF0dHIgKTsKICAgIH0sCgoKICAgIGdldEVsZW1lbnRzQnlBdHRyaWJ1dGVB
bmRWYWx1ZTogZnVuY3Rpb24oIHJvb3QsIGF0dHIsIHZhbHVlICkgewogICAgICAg
IHZhciBlcyA9IERPTS5nZXRFbGVtZW50c0J5VGFnQW5kQXR0cmlidXRlKCByb290
LCAiKiIsIGF0dHIgKTsKICAgICAgICB2YXIgZmlsdGVyZWQgPSBbXTsKICAgICAg
ICBmb3IgKCB2YXIgaSA9IDA7IGkgPCBlcy5sZW5ndGg7IGkrKyApCiAgICAgICAg
ICAgIGlmICggZXNbIGkgXS5nZXRBdHRyaWJ1dGUoIGF0dHIgKSA9PSB2YWx1ZSAp
CiAgICAgICAgICAgICAgICBmaWx0ZXJlZC5wdXNoKCBlc1sgaSBdICk7CiAgICAg
ICAgcmV0dXJuIGZpbHRlcmVkOwogICAgfSwKICAgIAoKICAgIGdldEVsZW1lbnRz
QnlUYWdBbmRDbGFzc05hbWU6IGZ1bmN0aW9uKCByb290LCB0YWdOYW1lLCBjbGFz
c05hbWUgKSB7CiAgICAgICAgaWYoICFyb290ICkKICAgICAgICAgICAgcm9vdCA9
IGRvY3VtZW50OwogICAgICAgIHZhciBlbGVtZW50cyA9IHJvb3QuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoIHRhZ05hbWUgKTsKICAgICAgICByZXR1cm4gRE9NLmZpbHRl
ckVsZW1lbnRzQnlDbGFzc05hbWUoIGVsZW1lbnRzLCBjbGFzc05hbWUgKTsKICAg
IH0sCgoKICAgIGdldEVsZW1lbnRzQnlDbGFzc05hbWU6IGZ1bmN0aW9uKCByb290
LCBjbGFzc05hbWUgKSB7CiAgICAgICAgcmV0dXJuIERPTS5nZXRFbGVtZW50c0J5
VGFnQW5kQ2xhc3NOYW1lKCByb290LCAiKiIsIGNsYXNzTmFtZSApOwogICAgfSwK
CgogICAgZ2V0QW5jZXN0b3JzOiBmdW5jdGlvbiggbiwgaW5jbHVkZVNlbGYgKSB7
CiAgICAgICAgaWYoICFuICkKICAgICAgICAgICAgcmV0dXJuIFtdOwogICAgICAg
IHZhciBhcyA9IGluY2x1ZGVTZWxmID8gWyBuIF0gOiBbXTsKICAgICAgICBuID0g
bi5wYXJlbnROb2RlOwogICAgICAgIHdoaWxlKCBuICkgewogICAgICAgICAgICBh
cy5wdXNoKCBuICk7CiAgICAgICAgICAgIG4gPSBuLnBhcmVudE5vZGU7CiAgICAg
ICAgfQogICAgICAgIHJldHVybiBhczsKICAgIH0sCiAgICAKICAgIAogICAgZ2V0
QW5jZXN0b3JzQnlUYWdOYW1lOiBmdW5jdGlvbiggbiwgdGFnTmFtZSwgaW5jbHVk
ZVNlbGYgKSB7CiAgICAgICAgdmFyIGVzID0gRE9NLmdldEFuY2VzdG9ycyggbiwg
aW5jbHVkZVNlbGYgKTsKICAgICAgICByZXR1cm4gRE9NLmZpbHRlckVsZW1lbnRz
QnlUYWdOYW1lKCBlcywgdGFnTmFtZSApOwogICAgfSwKICAgIAogICAgCiAgICBn
ZXRGaXJzdEFuY2VzdG9yQnlUYWdOYW1lOiBmdW5jdGlvbiggbiwgdGFnTmFtZSwg
aW5jbHVkZVNlbGYgKSB7CiAgICAgICAgcmV0dXJuIERPTS5nZXRBbmNlc3RvcnNC
eVRhZ05hbWUoIG4sIHRhZ05hbWUsIGluY2x1ZGVTZWxmIClbIDAgXTsKICAgIH0s
CgoKICAgIGdldEFuY2VzdG9yc0J5Q2xhc3NOYW1lOiBmdW5jdGlvbiggbiwgY2xh
c3NOYW1lLCBpbmNsdWRlU2VsZiApIHsKICAgICAgICB2YXIgZXMgPSBET00uZ2V0
QW5jZXN0b3JzKCBuLCBpbmNsdWRlU2VsZiApOwogICAgICAgIHJldHVybiBET00u
ZmlsdGVyRWxlbWVudHNCeUNsYXNzTmFtZSggZXMsIGNsYXNzTmFtZSApOwogICAg
fSwKCgogICAgZ2V0Rmlyc3RBbmNlc3RvckJ5Q2xhc3NOYW1lOiBmdW5jdGlvbigg
biwgY2xhc3NOYW1lLCBpbmNsdWRlU2VsZiApIHsKICAgICAgICByZXR1cm4gRE9N
LmdldEFuY2VzdG9yc0J5Q2xhc3NOYW1lKCBuLCBjbGFzc05hbWUsIGluY2x1ZGVT
ZWxmIClbIDAgXTsKICAgIH0sCgoKICAgIGdldEFuY2VzdG9yc0J5VGFnQW5kQ2xh
c3NOYW1lOiBmdW5jdGlvbiggbiwgdGFnTmFtZSwgY2xhc3NOYW1lLCBpbmNsdWRl
U2VsZiApIHsKICAgICAgICB2YXIgZXMgPSBET00uZ2V0QW5jZXN0b3JzQnlUYWdO
YW1lKCBuLCB0YWdOYW1lLCBpbmNsdWRlU2VsZiApOwogICAgICAgIHJldHVybiBE
T00uZmlsdGVyRWxlbWVudHNCeUNsYXNzTmFtZSggZXMsIGNsYXNzTmFtZSApOwog
ICAgfSwKCgogICAgZ2V0Rmlyc3RBbmNlc3RvckJ5VGFnQW5kQ2xhc3NOYW1lOiBm
dW5jdGlvbiggbiwgdGFnTmFtZSwgY2xhc3NOYW1lLCBpbmNsdWRlU2VsZiApIHsK
ICAgICAgICByZXR1cm4gRE9NLmdldEFuY2VzdG9yc0J5VGFnQW5kQ2xhc3NOYW1l
KCBuLCB0YWdOYW1lLCBjbGFzc05hbWUsIGluY2x1ZGVTZWxmIClbIDAgXTsKICAg
IH0sCgoKICAgIGdldFByZXZpb3VzRWxlbWVudDogZnVuY3Rpb24oIG4gKSB7CiAg
ICAgICAgbiA9IG4ucHJldmlvdXNTaWJsaW5nOwogICAgICAgIHdoaWxlKCBuICkg
ewogICAgICAgICAgICBpZiggbi5ub2RlVHlwZSA9PSBOb2RlLkVMRU1FTlRfTk9E
RSApCiAgICAgICAgICAgICAgICByZXR1cm4gbjsKICAgICAgICAgICAgbiA9IG4u
cHJldmlvdXNTaWJsaW5nOwogICAgICAgIH0KICAgICAgICByZXR1cm4gbnVsbDsK
ICAgIH0sCgoKICAgIGdldE5leHRFbGVtZW50OiBmdW5jdGlvbiggbiApIHsKICAg
ICAgICBuID0gbi5uZXh0U2libGluZzsKICAgICAgICB3aGlsZSggbiApIHsKICAg
ICAgICAgICAgaWYoIG4ubm9kZVR5cGUgPT0gTm9kZS5FTEVNRU5UX05PREUgKQog
ICAgICAgICAgICAgICAgcmV0dXJuIG47CiAgICAgICAgICAgIG4gPSBuLm5leHRT
aWJsaW5nOwogICAgICAgIH0KICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0sCgoK
ICAgIGlzSW5saW5lTm9kZTogZnVuY3Rpb24oIG4gKSB7CiAgICAgICAgLy8gdGV4
dCBub2RlcyBhcmUgaW5saW5lCiAgICAgICAgaWYoIG4ubm9kZVR5cGUgPT0gTm9k
ZS5URVhUX05PREUgKQogICAgICAgICAgICByZXR1cm4gbjsKCiAgICAgICAgLy8g
ZG9jdW1lbnQgbm9kZXMgYXJlIG5vbi1pbmxpbmUKICAgICAgICBpZiggbi5ub2Rl
VHlwZSA9PSBOb2RlLkRPQ1VNRU5UX05PREUgKQogICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CgogICAgICAgIC8vIGFsbCBub25lbGVtZW50IG5vZGVzIGFyZSBpbmxp
bmUKICAgICAgICBpZiggbi5ub2RlVHlwZSAhPSBOb2RlLkVMRU1FTlRfTk9ERSAp
CiAgICAgICAgICAgIHJldHVybiBuOwoKICAgICAgICAvLyBiciBlbGVtZW50cyBh
cmUgbm90IGlubGluZQogICAgICAgIGlmKCBuLnRhZ05hbWUgJiYgbi50YWdOYW1l
LnRvTG93ZXJDYXNlKCkgPT0gImJyIiApCiAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKCiAgICAgICAgLy8gZXhhbWluZSB0aGUgc3R5bGUgcHJvcGVydHkgb2YgdGhl
IGlubGluZSBuCiAgICAgICAgdmFyIGRpc3BsYXkgPSBET00uZ2V0U3R5bGUoIG4s
ICJkaXNwbGF5IiApOyAKICAgICAgICBpZiggZGlzcGxheSAmJiBkaXNwbGF5Lmlu
ZGV4T2YoICJpbmxpbmUiICkgPj0gMCApIAogICAgICAgICAgICByZXR1cm4gbjsK
ICAgIH0sCiAgICAKICAgIAogICAgaXNUZXh0Tm9kZTogZnVuY3Rpb24oIG4gKSB7
CiAgICAgICAgaWYoIG4ubm9kZVR5cGUgPT0gTm9kZS5URVhUX05PREUgKQogICAg
ICAgICAgICByZXR1cm4gbjsKICAgIH0sCiAgICAKICAgIAogICAgaXNJbmxpbmVU
ZXh0Tm9kZTogZnVuY3Rpb24oIG4gKSB7CiAgICAgICAgaWYoIG4ubm9kZVR5cGUg
PT0gTm9kZS5URVhUX05PREUgKQogICAgICAgICAgICByZXR1cm4gbjsKICAgICAg
ICBpZiggIURPTS5pc0lubGluZU5vZGUoIG4gKSApCiAgICAgICAgICAgIHJldHVy
biBudWxsOwogICAgfSwKCgogICAgLyogdGhpcyBhbmQgdGhlIGZvbGxvd2luZyBj
bGFzc25hbWUgZnVuY3Rpb25zIGhvbm9yIHczYyBjYXNlLXNlbnNpdGl2ZSBjbGFz
c25hbWVzICovCgogICAgZ2V0Q2xhc3NOYW1lczogZnVuY3Rpb24oIGUgKSB7CiAg
ICAgICAgaWYoICFlIHx8ICFlLmNsYXNzTmFtZSApCiAgICAgICAgICAgIHJldHVy
biBbXTsKICAgICAgICByZXR1cm4gZS5jbGFzc05hbWUuc3BsaXQoIC9ccysvZyAp
OwogICAgfSwKCgogICAgaGFzQ2xhc3NOYW1lOiBmdW5jdGlvbiggZSwgY2xhc3NO
YW1lICkgewogICAgICAgIGlmKCAhZSB8fCAhZS5jbGFzc05hbWUgKQogICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgdmFyIGNzID0gRE9NLmdldENsYXNz
TmFtZXMoIGUgKTsKICAgICAgICBmb3IoIHZhciBpID0gMDsgaSA8IGNzLmxlbmd0
aDsgaSsrICkgewogICAgICAgICAgICBpZiggY3NbIGkgXSA9PSBjbGFzc05hbWUg
KQogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQogICAgICAg
IHJldHVybiBmYWxzZTsKICAgIH0sCgoKICAgIGFkZENsYXNzTmFtZTogZnVuY3Rp
b24oIGUsIGNsYXNzTmFtZSApIHsKICAgICAgICBpZiggIWUgfHwgIWNsYXNzTmFt
ZSApCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB2YXIgY3MgPSBE
T00uZ2V0Q2xhc3NOYW1lcyggZSApOwogICAgICAgIGZvciggdmFyIGkgPSAwOyBp
IDwgY3MubGVuZ3RoOyBpKysgKSB7CiAgICAgICAgICAgIGlmKCBjc1sgaSBdID09
IGNsYXNzTmFtZSApCiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAg
ICB9CiAgICAgICAgY3MucHVzaCggY2xhc3NOYW1lICk7CiAgICAgICAgZS5jbGFz
c05hbWUgPSBjcy5qb2luKCAiICIgKTsKICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICB9LAoKCiAgICByZW1vdmVDbGFzc05hbWU6IGZ1bmN0aW9uKCBlLCBjbGFzc05h
bWUgKSB7CiAgICAgICAgdmFyIHIgPSBmYWxzZTsKICAgICAgICBpZiggIWUgfHwg
IWUuY2xhc3NOYW1lIHx8ICFjbGFzc05hbWUgKQogICAgICAgICAgICByZXR1cm4g
cjsKICAgICAgICB2YXIgY3MgPSAoZS5jbGFzc05hbWUgJiYgZS5jbGFzc05hbWUu
bGVuZ3RoKQogICAgICAgICAgICA/IGUuY2xhc3NOYW1lLnNwbGl0KCAvXHMrL2cg
KQogICAgICAgICAgICA6IFtdOwogICAgICAgIHZhciBuY3MgPSBbXTsKICAgICAg
ICBmb3IoIHZhciBpID0gMDsgaSA8IGNzLmxlbmd0aDsgaSsrICkgewogICAgICAg
ICAgICBpZiggY3NbIGkgXSA9PSBjbGFzc05hbWUgKSB7CiAgICAgICAgICAgICAg
ICByID0gdHJ1ZTsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAg
ICB9CiAgICAgICAgICAgIG5jcy5wdXNoKCBjc1sgaSBdICk7CiAgICAgICAgfQog
ICAgICAgIGlmKCByICkKICAgICAgICAgICAgZS5jbGFzc05hbWUgPSBuY3Muam9p
biggIiAiICk7CiAgICAgICAgcmV0dXJuIHI7CiAgICB9LAogICAgCiAgICAKICAg
IC8qIHRyZWUgbWFuaXB1bGF0aW9uIG1ldGhvZHMgKi8KICAgIAogICAgcmVwbGFj
ZVdpdGhDaGlsZE5vZGVzOiBmdW5jdGlvbiggbiApIHsKICAgICAgICB2YXIgZmly
c3RDaGlsZCA9IG4uZmlyc3RDaGlsZDsKICAgICAgICB2YXIgcGFyZW50Tm9kZSA9
IG4ucGFyZW50Tm9kZTsKICAgICAgICB3aGlsZSggbi5maXJzdENoaWxkICkKICAg
ICAgICAgICAgcGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoIG4ucmVtb3ZlQ2hpbGQo
IG4uZmlyc3RDaGlsZCApLCBuICk7CiAgICAgICAgcGFyZW50Tm9kZS5yZW1vdmVD
aGlsZCggbiApOwogICAgICAgIHJldHVybiBmaXJzdENoaWxkOwogICAgfSwKICAg
IAogICAgCiAgICAvKiBmYWN0b3J5IG1ldGhvZHMgKi8KICAgIAogICAgY3JlYXRl
SW52aXNpYmxlSW5wdXQ6IGZ1bmN0aW9uKCBkICkgewogICAgICAgIGlmKCAhZCAp
CiAgICAgICAgICAgIGQgPSB3aW5kb3cuZG9jdW1lbnQ7CiAgICAgICAgdmFyIGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCAiaW5wdXQiICk7CiAgICAgICAgZS5z
ZXRBdHRyaWJ1dGUoICJhdXRvY29tcGxldGUiLCAib2ZmIiApOwogICAgICAgIGUu
YXV0b2NvbXBsZXRlID0gIm9mZiI7CiAgICAgICAgRE9NLm1ha2VJbnZpc2libGUo
IGUgKTsKICAgICAgICByZXR1cm4gZTsKICAgIH0sCgoKICAgIGdldE1vdXNlRXZl
bnRBdHRyaWJ1dGU6IGZ1bmN0aW9uKCBldmVudCwgYSApIHsKICAgICAgICBpZigg
IWEgKQogICAgICAgICAgICByZXR1cm47CiAgICAgICAgdmFyIGVzID0gRE9NLmdl
dEFuY2VzdG9ycyggZXZlbnQudGFyZ2V0LCB0cnVlICk7CiAgICAgICAgZm9yKCB2
YXIgaSA9IDA7IGkgPCBlcy5sZW5ndGg7IGkrKyApIHsKICAgICAgICAgICAgdHJ5
IHsKICAgICAgICAgICAgICAgIHZhciBlID0gZXNbIGkgXQogICAgICAgICAgICAg
ICAgdmFyIHYgPSBlLmdldEF0dHJpYnV0ZSA/IGUuZ2V0QXR0cmlidXRlKCBhICkg
OiBudWxsOwogICAgICAgICAgICAgICAgaWYoIHYgKSB7CiAgICAgICAgICAgICAg
ICAgICAgZXZlbnQuYXR0cmlidXRlRWxlbWVudCA9IGU7CiAgICAgICAgICAgICAg
ICAgICAgZXZlbnQuYXR0cmlidXRlID0gdjsKICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gdjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBjYXRjaCgg
ZSApIHt9CiAgICAgICAgfQogICAgfSwKICAgIAoKICAgIHNldEVsZW1lbnRBdHRy
aWJ1dGU6IGZ1bmN0aW9uKCBlLCBhLCB2ICkgewogICAgICAgIC8qIHNhZmFyaSB3
b3JrYXJvdW5kCiAgICAgICAgICogc2FmYXJpJ3Mgc2V0QXR0cmlidXRlIGFzc3Vt
ZXMgeW91IHdhbnQgdG8gdXNlIGEgbmFtZXNwYWNlCiAgICAgICAgICogd2hlbiB5
b3UgaGF2ZSBhIGNvbG9uIGluIHlvdXIgYXR0cmlidXRlCiAgICAgICAgICovCiAg
ICAgICAgaWYgKCBuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkubWF0
Y2goL3dlYmtpdC8pICkgewogICAgICAgICAgICB2YXIgYXQgPSBlLmF0dHJpYnV0
ZXM7CiAgICAgICAgICAgIGZvciAoIHZhciBpID0gMDsgaSA8IGF0Lmxlbmd0aDsg
aSsrICkKICAgICAgICAgICAgICAgIGlmICggYXRbIGkgXS5uYW1lID09IGEgKQog
ICAgICAgICAgICAgICAgICAgIHJldHVybiBhdFsgaSBdLm5vZGVWYWx1ZSA9IHY7
CiAgICAgICAgfSBlbHNlCiAgICAgICAgICAgIGUuc2V0QXR0cmlidXRlKCBhLCB2
ICk7CiAgICB9LAoKCiAgICBzd2FwQXR0cmlidXRlczogZnVuY3Rpb24oIGUsIHRn
LCBhdCApIHsKICAgICAgICB2YXIgYXIgPSBlLmdldEF0dHJpYnV0ZSggdGcgKTsK
ICAgICAgICBpZiggIWFyICkKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgIAogICAgICAgIC8qIGNsb25lIHRoZSBub2RlIHdpdGggYWxsIGNoaWxkcmVu
ICovCiAgICAgICAgaWYgKCBlLnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PSAnc2Ny
aXB0JyApIHsKICAgICAgICAgICAgLyogb25seSBjbG9uZSBhbmQgcmVwbGFjZSBz
Y3JpcHQgdGFncyAqLwogICAgICAgICAgICB2YXIgY2wgPSBlLmNsb25lTm9kZSgg
dHJ1ZSApOwogICAgICAgICAgICBpZiAoICFjbCApCiAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CgogICAgICAgICAgICBET00uc2V0RWxlbWVudEF0dHJpYnV0
ZSggY2wsIGF0LCBhciApOwogICAgICAgICAgICBjbC5yZW1vdmVBdHRyaWJ1dGUo
IHRnICk7CiAgICAgICAgCiAgICAgICAgICAgIC8qIHJlcGxhY2UgbmV3LCBvbGQg
Ki8KICAgICAgICAgICAgcmV0dXJuIGUucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQo
IGNsLCBlICk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgRE9NLnNldEVs
ZW1lbnRBdHRyaWJ1dGUoIGUsIGF0LCBhciApOwogICAgICAgICAgICBlLnJlbW92
ZUF0dHJpYnV0ZSggdGcgKTsKICAgICAgICB9CiAgICB9LAoKCiAgICBmaW5kUG9z
WDogZnVuY3Rpb24oIGUgKSB7CiAgICAgICAgdmFyIGN1cmxlZnQgPSAwOwoKICAg
ICAgICBpZiAoZS5vZmZzZXRQYXJlbnQpIHsKICAgICAgICAgICAgd2hpbGUgKDEp
IHsKICAgICAgICAgICAgICAgIGN1cmxlZnQgKz0gZS5vZmZzZXRMZWZ0OwogICAg
ICAgICAgICAgICAgaWYgKCFlLm9mZnNldFBhcmVudCkgewogICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
ZSA9IGUub2Zmc2V0UGFyZW50OwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNl
IGlmIChlLngpIHsKICAgICAgICAgICAgY3VybGVmdCArPSBlLng7CiAgICAgICAg
fQoKICAgICAgICByZXR1cm4gY3VybGVmdDsKICAgIH0sCgoKICAgIGZpbmRQb3NZ
OiBmdW5jdGlvbiggZSApIHsKICAgICAgICB2YXIgY3VydG9wID0gMDsKCiAgICAg
ICAgaWYgKGUub2Zmc2V0UGFyZW50KSB7CiAgICAgICAgICAgIHdoaWxlICgxKSB7
CiAgICAgICAgICAgICAgICBjdXJ0b3AgKz0gZS5vZmZzZXRUb3A7CiAgICAgICAg
ICAgICAgICBpZiAoIWUub2Zmc2V0UGFyZW50KSB7CiAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlID0g
ZS5vZmZzZXRQYXJlbnQ7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgaWYg
KGUueSkgewogICAgICAgICAgICBjdXJ0b3AgKz0gZS55OwogICAgICAgIH0KCiAg
ICAgICAgcmV0dXJuIGN1cnRvcDsKICAgIH0KICAgIAogICAgCn0gKTsKCgokID0g
RE9NLmdldEVsZW1lbnQ7CnZhciBIVFRQUmVxID0gbmV3IE9iamVjdDsKCkhUVFBS
ZXEuY3JlYXRlID0gZnVuY3Rpb24gKCkgewogICAgdmFyIHh0cjsKICAgIHZhciBl
eDsKCiAgICBpZiAodHlwZW9mKFhNTEh0dHBSZXF1ZXN0KSAhPSAidW5kZWZpbmVk
IikgewogICAgICAgIHh0ciA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOwogICAgfSBl
bHNlIHsKICAgICAgICB0cnkgewogICAgICAgICAgICB4dHIgPSBuZXcgQWN0aXZl
WE9iamVjdCgiTXN4bWwyLlhNTEhUVFAuNC4wIik7CiAgICAgICAgfSBjYXRjaCAo
ZXgpIHsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgIHh0ciA9IG5l
dyBBY3RpdmVYT2JqZWN0KCJNc3htbDIuWE1MSFRUUCIpOwogICAgICAgICAgICB9
IGNhdGNoIChleCkgewogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAg
IC8vIGxldCBtZSBleHBsYWluIHRoaXMuICBPcGVyYSA4IGRvZXMgWE1MSHR0cFJl
cXVlc3QsIGJ1dCBub3Qgc2V0UmVxdWVzdEhlYWRlci4KICAgIC8vIG5vIHByb2Js
ZW0sIHdlIHRob3VnaHQ6ICB3ZSdsbCB0ZXN0IGZvciBzZXRSZXF1ZXN0SGVhZGVy
IGFuZCBpZiBpdCdzIG5vdCBwcmVzZW50CiAgICAvLyB0aGVuIGZhbGwgYmFjayB0
byB0aGUgb2xkIGJlaGF2aW9yICh0cmVhdCBpdCBhcyBub3Qgd29ya2luZykuICBC
VVQgLS0tIElFNiB3b24ndAogICAgLy8gbGV0IHlvdSBldmVuIHRlc3QgZm9yIHNl
dFJlcXVlc3RIZWFkZXIgd2l0aG91dCB0aHJvd2luZyBhbiBleGNlcHRpb24gKHlv
dSBuZWVkCiAgICAvLyB0byBjYWxsIC5vcGVuIG9uIHRoZSAueHRyIGZpcnN0IG9y
IHNvbWV0aGluZykKICAgIHRyeSB7CiAgICAgICAgaWYgKHh0ciAmJiAhIHh0ci5z
ZXRSZXF1ZXN0SGVhZGVyKQogICAgICAgICAgICB4dHIgPSBudWxsOwogICAgfSBj
YXRjaCAoZXgpIHsgfQoKICAgIHJldHVybiB4dHI7Cn07CgovLyBvcHRzOgovLyB1
cmwsIG9uRXJyb3IsIG9uRGF0YSwgbWV0aG9kIChHRVQgb3IgUE9TVCksIGRhdGEK
Ly8gdXJsOiB3aGVyZSB0byBnZXQvcG9zdCB0bwovLyBvbkVycm9yOiBjYWxsYmFj
ayBvbiBlcnJvcgovLyBvbkRhdGE6IGNhbGxiYWNrIG9uIGRhdGEgcmVjZWl2ZWQK
Ly8gbWV0aG9kOiBIVFRQIG1ldGhvZCwgR0VUIGJ5IGRlZmF1bHQKLy8gZGF0YTog
d2hhdCB0byBzZW5kIHRvIHRoZSBzZXJ2ZXIgKHVybGVuY29kZWQpCkhUVFBSZXEu
Z2V0SlNPTiA9IGZ1bmN0aW9uIChvcHRzKSB7CiAgICB2YXIgcmVxID0gSFRUUFJl
cS5jcmVhdGUoKTsKICAgIGlmICghIHJlcSkgewogICAgICAgIGlmIChvcHRzLm9u
RXJyb3IpIG9wdHMub25FcnJvcigibm94bWxodHRwcmVxdWVzdCIpOwogICAgICAg
IHJldHVybjsKICAgIH0KCiAgICB2YXIgc3RhdGVfY2FsbGJhY2sgPSBmdW5jdGlv
biAoKSB7CiAgICAgICAgaWYgKHJlcS5yZWFkeVN0YXRlICE9IDQpIHJldHVybjsK
CiAgICAgICAgaWYgKHJlcS5zdGF0dXMgIT0gMjAwKSB7CiAgICAgICAgICAgIGlm
IChvcHRzLm9uRXJyb3IpIG9wdHMub25FcnJvcihyZXEuc3RhdHVzID8gInN0YXR1
czogIiArIHJlcS5zdGF0dXMgOiAibm8gZGF0YSIpOwogICAgICAgICAgICByZXR1
cm47CiAgICAgICAgfQoKICAgICAgICB2YXIgcmVzT2JqOwogICAgICAgIHZhciBl
OwogICAgICAgIHRyeSB7CiAgICAgICAgICAgIGV2YWwoInJlc09iaiA9ICIgKyBy
ZXEucmVzcG9uc2VUZXh0ICsgIjsiKTsKICAgICAgICB9IGNhdGNoIChlKSB7CiAg
ICAgICAgfQoKICAgICAgICBpZiAoZSB8fCAhIHJlc09iaikgewogICAgICAgICAg
ICBpZiAob3B0cy5vbkVycm9yKQogICAgICAgICAgICAgICAgb3B0cy5vbkVycm9y
KCJFcnJvciBwYXJzaW5nIHJlc3BvbnNlOiBcIiIgKyByZXEucmVzcG9uc2VUZXh0
ICsgIlwiIik7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAg
ICBpZiAob3B0cy5vbkRhdGEpCiAgICAgICAgICAgIG9wdHMub25EYXRhKHJlc09i
aik7CiAgICB9OwoKICAgIHJlcS5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBzdGF0ZV9j
YWxsYmFjazsKCiAgICB2YXIgbWV0aG9kID0gb3B0cy5tZXRob2QgfHwgIkdFVCI7
CiAgICB2YXIgZGF0YSA9IG9wdHMuZGF0YSB8fCBudWxsOwoKICAgIHZhciB1cmwg
PSBvcHRzLnVybDsKICAgIGlmIChvcHRzLm1ldGhvZCA9PSAiR0VUIiAmJiBvcHRz
LmRhdGEpIHsKICAgICAgICB1cmwgKz0gdXJsLm1hdGNoKC9cPy8pID8gIiYiIDog
Ij8iOwogICAgICAgIHVybCArPSBvcHRzLmRhdGEKICAgIH0KCiAgICB1cmwgKz0g
dXJsLm1hdGNoKC9cPy8pID8gIiYiIDogIj8iOwogICAgdXJsICs9ICJfcmFuZD0i
ICsgTWF0aC5yYW5kb20oKTsKCiAgICByZXEub3BlbihtZXRob2QsIHVybCwgdHJ1
ZSk7CgogICAgLy8gd2Ugc2hvdWxkIHNlbmQgbnVsbCB1bmxlc3Mgd2UncmUgaW4g
YSBQT1NUCiAgICB2YXIgdG9fc2VuZCA9IG51bGw7CgogICAgaWYgKG1ldGhvZC50
b1VwcGVyQ2FzZSgpID09ICJQT1NUIikgewogICAgICAgIHJlcS5zZXRSZXF1ZXN0
SGVhZGVyKCJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24veC13d3ctZm9ybS11
cmxlbmNvZGVkIik7CiAgICAgICAgdG9fc2VuZCA9IGRhdGE7CiAgICB9CgogICAg
cmVxLnNlbmQodG9fc2VuZCk7Cn07CgpIVFRQUmVxLmZvcm1FbmNvZGVkID0gZnVu
Y3Rpb24gKHZhcnMpIHsKICAgIHZhciBlbmMgPSBbXTsKICAgIHZhciBlOwogICAg
Zm9yICh2YXIga2V5IGluIHZhcnMpIHsKICAgICAgICB0cnkgewogICAgICAgICAg
ICBlbmMucHVzaChlbmNvZGVVUklDb21wb25lbnQoa2V5KSArICI9IiArIGVuY29k
ZVVSSUNvbXBvbmVudCh2YXJzW2tleV0pKTsKICAgICAgICB9IGNhdGNoKCBlICkg
e30KICAgIH0KICAgIHJldHVybiBlbmMuam9pbigiJiIpOwoKfTsKCi8vIFRoaXMg
ZmlsZSBjb250YWlucyBnZW5lcmFsLXB1cnBvc2UgTEogY29kZQoKdmFyIExpdmVK
b3VybmFsID0gbmV3IE9iamVjdDsKCi8vIFRoZSBob29rIG1hcHBpbmdzCkxpdmVK
b3VybmFsLmhvb2tzID0ge307CgpMaXZlSm91cm5hbC5yZWdpc3Rlcl9ob29rID0g
ZnVuY3Rpb24gKGhvb2ssIGZ1bmMpIHsKICAgIGlmICghIExpdmVKb3VybmFsLmhv
b2tzW2hvb2tdKQogICAgICAgIExpdmVKb3VybmFsLmhvb2tzW2hvb2tdID0gW107
CgogICAgTGl2ZUpvdXJuYWwuaG9va3NbaG9va10ucHVzaChmdW5jKTsKfTsKCi8v
IGFyZ3M6IGhvb2ssIHBhcmFtcyB0byBwYXNzIHRvIGhvb2sKTGl2ZUpvdXJuYWwu
cnVuX2hvb2sgPSBmdW5jdGlvbiAoKSB7CiAgICB2YXIgYSA9IGFyZ3VtZW50czsK
CiAgICB2YXIgaG9va2Z1bmNzID0gTGl2ZUpvdXJuYWwuaG9va3NbYVswXV07CiAg
ICBpZiAoIWhvb2tmdW5jcyB8fCAhaG9va2Z1bmNzLmxlbmd0aCkgcmV0dXJuOwoK
ICAgIHZhciBob29rYXJncyA9IFtdOwoKICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
YS5sZW5ndGg7IGkrKykgewogICAgICAgIGhvb2thcmdzLnB1c2goYVtpXSk7CiAg
ICB9CgogICAgdmFyIHJ2ID0gbnVsbDsKCiAgICBob29rZnVuY3MuZm9yRWFjaChm
dW5jdGlvbiAoaG9va2Z1bmMpIHsKICAgICAgICBydiA9IGhvb2tmdW5jLmFwcGx5
KG51bGwsIGhvb2thcmdzKTsKICAgIH0pOwoKICAgIHJldHVybiBydjsKfTsKCkxp
dmVKb3VybmFsLnBhZ2VMb2FkZWQgPSBmYWxzZTsKCkxpdmVKb3VybmFsLmluaXRQ
YWdlID0gZnVuY3Rpb24gKCkgewogICAgLy8gb25seSBydW4gb25jZQogICAgaWYg
KExpdmVKb3VybmFsLnBhZ2VMb2FkZWQpCiAgICAgICAgcmV0dXJuOwogICAgTGl2
ZUpvdXJuYWwucGFnZUxvYWRlZCA9IDE7CgogICAgLy8gc2V0IHVwIHZhcmlvdXMg
aGFuZGxlcnMgZm9yIGV2ZXJ5IHBhZ2UKICAgIExpdmVKb3VybmFsLmluaXRQbGFj
ZWhvbGRlcnMoKTsKICAgIExpdmVKb3VybmFsLmluaXRMYWJlbHMoKTsKICAgIExp
dmVKb3VybmFsLmluaXRJbmJveFVwZGF0ZSgpOwogICAgTGl2ZUpvdXJuYWwuaW5p
dEFkcygpOwogICAgTGl2ZUpvdXJuYWwuaW5pdFBvbGxzKCk7CgogICAgLy8gcnVu
IG90aGVyIGhvb2tzCiAgICBMaXZlSm91cm5hbC5ydW5faG9vaygicGFnZV9sb2Fk
Iik7Cn07CgovLyBTZXQgdXAgdHdvIGRpZmZlcmVudCB3YXlzIHRvIHRlc3QgaWYg
dGhlIHBhZ2UgaXMgbG9hZGVkIHlldC4KLy8gVGhlIHByb3BlciB3YXkgaXMgdXNp
bmcgRE9NQ29udGVudExvYWRlZCwgYnV0IG9ubHkgTW96aWxsYSBzdXBwb3J0cyBp
dC4KewogICAgLy8gT3RoZXJzCiAgICBET00uYWRkRXZlbnRMaXN0ZW5lcih3aW5k
b3csICJsb2FkIiwgTGl2ZUpvdXJuYWwuaW5pdFBhZ2UpOwoKICAgIC8vIE1vemls
bGEKICAgIERPTS5hZGRFdmVudExpc3RlbmVyKHdpbmRvdywgIkRPTUNvbnRlbnRM
b2FkZWQiLCBMaXZlSm91cm5hbC5pbml0UGFnZSk7Cn0KCi8vIFNldCB1cCBhIHRp
bWVyIHRvIGtlZXAgdGhlIGluYm94IGNvdW50IHVwZGF0ZWQKTGl2ZUpvdXJuYWwu
aW5pdEluYm94VXBkYXRlID0gZnVuY3Rpb24gKCkgewogICAgLy8gRG9uJ3QgcnVu
IGlmIG5vdCBsb2dnZWQgaW4gb3IgdGhpcyBpcyBkaXNhYmxlZAogICAgaWYgKCEg
U2l0ZSB8fCAhIFNpdGUuaGFzX3JlbW90ZSB8fCAhIFNpdGUuaW5ib3hfdXBkYXRl
X3BvbGwpIHJldHVybjsKCiAgICAvLyBEb24ndCBydW4gaWYgbm8gaW5ib3ggY291
bnQKICAgIHZhciB1bnJlYWQgPSAkKCJMSl9JbmJveF9VbnJlYWRfQ291bnQiKTsK
ICAgIGlmICghIHVucmVhZCkgcmV0dXJuOwoKICAgIC8vIFVwZGF0ZSBldmVyeSBm
aXZlIG1pbnV0ZXMKICAgIHdpbmRvdy5zZXRJbnRlcnZhbChMaXZlSm91cm5hbC51
cGRhdGVJbmJveCwgMTAwMCAqIDYwICogNSk7Cn07CgovLyBEbyBBSkFYIHJlcXVl
c3QgdG8gZmluZCB0aGUgbnVtYmVyIG9mIHVucmVhZCBpdGVtcyBpbiB0aGUgaW5i
b3gKTGl2ZUpvdXJuYWwudXBkYXRlSW5ib3ggPSBmdW5jdGlvbiAoKSB7CiAgICB2
YXIgcG9zdERhdGEgPSB7CiAgICAgICAgImFjdGlvbiI6ICJnZXRfdW5yZWFkX2l0
ZW1zIgogICAgfTsKCiAgICB2YXIgb3B0cyA9IHsKICAgICAgICAiZGF0YSI6IEhU
VFBSZXEuZm9ybUVuY29kZWQocG9zdERhdGEpLAogICAgICAgICJtZXRob2QiOiAi
UE9TVCIsCiAgICAgICAgIm9uRGF0YSI6IExpdmVKb3VybmFsLmdvdEluYm94VXBk
YXRlCiAgICB9OwoKICAgIG9wdHMudXJsID0gU2l0ZS5jdXJyZW50Sm91cm5hbCA/
ICIvIiArIFNpdGUuY3VycmVudEpvdXJuYWwgKyAiL19fcnBjX2Vzbl9pbmJveCIg
OiAiL19fcnBjX2Vzbl9pbmJveCI7CgogICAgSFRUUFJlcS5nZXRKU09OKG9wdHMp
Owp9OwoKLy8gV2UgcmVjZWl2ZWQgdGhlIG51bWJlciBvZiB1bnJlYWQgaW5ib3gg
aXRlbXMgZnJvbSB0aGUgc2VydmVyCkxpdmVKb3VybmFsLmdvdEluYm94VXBkYXRl
ID0gZnVuY3Rpb24gKHJlc3ApIHsKICAgIGlmICghIHJlc3AgfHwgcmVzcC5lcnJv
cikgcmV0dXJuOwoKICAgIHZhciB1bnJlYWQgPSAkKCJMSl9JbmJveF9VbnJlYWRf
Q291bnQiKTsKICAgIGlmICghIHVucmVhZCkgcmV0dXJuOwoKICAgIHVucmVhZC5p
bm5lckhUTUwgPSByZXNwLnVucmVhZF9jb3VudCA/ICIgICgiICsgcmVzcC51bnJl
YWRfY291bnQgKyAiKSIgOiAiIjsKfTsKCi8vIFNlYXJjaCBmb3IgcGxhY2Vob2xk
ZXJzIGFuZCBpbml0aWFsaXplIHRoZW0KTGl2ZUpvdXJuYWwuaW5pdFBsYWNlaG9s
ZGVycyA9IGZ1bmN0aW9uICgpIHsKICAgIHZhciBwbGFjZWhvbGRlcnMgPSBET00u
Z2V0RWxlbWVudHNCeVRhZ0FuZENsYXNzTmFtZShkb2N1bWVudCwgImltZyIsICJM
Sl9QbGFjZWhvbGRlciIpIHx8IFtdOwoKICAgIEFycmF5LnByb3RvdHlwZS5mb3JF
YWNoLmNhbGwocGxhY2Vob2xkZXJzLCBmdW5jdGlvbiAocGxhY2Vob2xkZXIpIHsK
ICAgICAgICB2YXIgcGFyZW50ID0gRE9NLmdldEZpcnN0QW5jZXN0b3JCeUNsYXNz
TmFtZShwbGFjZWhvbGRlciwgIkxKX1BsYWNlaG9sZGVyX0NvbnRhaW5lciIsIGZh
bHNlKTsKICAgICAgICBpZiAoIXBhcmVudCkgcmV0dXJuOwoKICAgICAgICB2YXIg
Y29udGFpbmVyID0gRE9NLmZpbHRlckVsZW1lbnRzQnlDbGFzc05hbWUocGFyZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJkaXYiKSwgIkxKX0NvbnRhaW5lciIpWzBd
OwogICAgICAgIGlmICghY29udGFpbmVyKSByZXR1cm47CgogICAgICAgIHZhciBo
dG1sID0gRE9NLmZpbHRlckVsZW1lbnRzQnlDbGFzc05hbWUocGFyZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJkaXYiKSwgIkxKX1BsYWNlaG9sZGVyX0hUTUwiKVsw
XTsKICAgICAgICBpZiAoIWh0bWwpIHJldHVybjsKCiAgICAgICAgdmFyIHBsYWNl
aG9sZGVyX2h0bWwgPSB1bmVzY2FwZShodG1sLmlubmVySFRNTCk7CgogICAgICAg
IHZhciBwbGFjZWhvbGRlckNsaWNrSGFuZGxlciA9IGZ1bmN0aW9uIChlKSB7CiAg
ICAgICAgICAgIEV2ZW50LnN0b3AoZSk7CiAgICAgICAgICAgIC8vIGhhdmUgdG8g
d3JhcCBwbGFjZWhvbGRlcl9odG1sIGluIGFub3RoZXIgYmxvY2ssIElFIGlzIHdl
aXJkCiAgICAgICAgICAgIGNvbnRhaW5lci5pbm5lckhUTUwgPSAiPHNwYW4+IiAr
IHBsYWNlaG9sZGVyX2h0bWwgKyAiPC9zcGFuPiI7CiAgICAgICAgICAgIERPTS5t
YWtlSW52aXNpYmxlKHBsYWNlaG9sZGVyKTsKICAgICAgICB9OwoKICAgICAgICBE
T00uYWRkRXZlbnRMaXN0ZW5lcihwbGFjZWhvbGRlciwgImNsaWNrIiwgcGxhY2Vo
b2xkZXJDbGlja0hhbmRsZXIpOwoKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9
KTsKfTsKCi8vIHNldCB1cCBsYWJlbHMgZm9yIFNhZmFyaQpMaXZlSm91cm5hbC5p
bml0TGFiZWxzID0gZnVuY3Rpb24gKCkgewogICAgLy8gZGlzYWJsZWQgYmVjYXVz
ZSBuZXcgd2Via2l0IGhhcyBsYWJlbHMgdGhhdCB3b3JrCiAgICByZXR1cm47Cgog
ICAgLy8gc2FmYXJpIGRvZXNuJ3Qga25vdyB3aGF0IDxsYWJlbD4gdGFncyBhcmUs
IGxldHMgZml4IHRoZW0KICAgIGlmIChuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4
T2YoJ1NhZmFyaScpID09IC0xKSByZXR1cm47CgogICAgLy8gZ2V0IGFsbCBsYWJl
bHMKICAgIHZhciBsYWJlbHMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgibGFiZWwiKTsKCiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxhYmVscy5sZW5n
dGg7IGkrKykgewogICAgICAgIERPTS5hZGRFdmVudExpc3RlbmVyKGxhYmVsc1tp
XSwgImNsaWNrIiwgTGl2ZUpvdXJuYWwubGFiZWxDbGlja0hhbmRsZXIpOwogICAg
fQp9OwoKTGl2ZUpvdXJuYWwubGFiZWxDbGlja0hhbmRsZXIgPSBmdW5jdGlvbiAo
ZXZ0KSB7CiAgICBFdmVudC5wcmVwKGV2dCk7CgogICAgdmFyIGxhYmVsID0gRE9N
LmdldEFuY2VzdG9yc0J5VGFnTmFtZShldnQudGFyZ2V0LCAibGFiZWwiLCB0cnVl
KVswXTsKICAgIGlmICghIGxhYmVsKSByZXR1cm47CgogICAgdmFyIHRhcmdldElk
ID0gbGFiZWwuZ2V0QXR0cmlidXRlKCJmb3IiKTsKICAgIGlmICghIHRhcmdldElk
KSByZXR1cm47CgogICAgdmFyIHRhcmdldCA9ICQodGFyZ2V0SWQpOwogICAgaWYg
KCEgdGFyZ2V0KSByZXR1cm47CgogICAgdGFyZ2V0LmNsaWNrKCk7CgogICAgcmV0
dXJuIGZhbHNlOwp9OwoKLy8gY2hhbmdlIGRyc2MgdG8gc3JjIGZvciBhZHMKTGl2
ZUpvdXJuYWwuaW5pdEFkcyA9IGZ1bmN0aW9uICgpIHsKICAgIEFkRW5naW5lLmlu
aXQoKTsKfTsKCi8vIGhhbmR5IHV0aWxpdGllcyB0byBjcmVhdGUgZWxlbWVudHMg
d2l0aCBqdXN0IHRleHQgaW4gdGhlbQpmdW5jdGlvbiBfdGV4dFNwYW4gKCkgeyBy
ZXR1cm4gX3RleHRFbGVtZW50cygic3BhbiIsIGFyZ3VtZW50cyk7IH0KZnVuY3Rp
b24gX3RleHREaXYgICgpIHsgcmV0dXJuIF90ZXh0RWxlbWVudHMoImRpdiIsIGFy
Z3VtZW50cyk7ICB9CgpmdW5jdGlvbiBfdGV4dEVsZW1lbnRzIChlbGVUeXBlLCB0
eHRzKSB7CiAgICB2YXIgZWxlID0gW107CiAgICBmb3IgKHZhciBpID0gMDsgaSA8
IHR4dHMubGVuZ3RoOyBpKyspIHsKICAgICAgICB2YXIgbm9kZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoZWxlVHlwZSk7CiAgICAgICAgbm9kZS5pbm5lckhUTUwg
PSB0eHRzW2ldOwogICAgICAgIGVsZS5wdXNoKG5vZGUpOwogICAgfQoKICAgIHJl
dHVybiBlbGUubGVuZ3RoID09IDEgPyBlbGVbMF0gOiBlbGU7Cn07Cgp2YXIgUG9s
bFBhZ2VzID0gewogICAgImhvdXJnbGFzcyI6IG51bGwKfTsKCkxpdmVKb3VybmFs
LmluaXRQb2xscyA9IGZ1bmN0aW9uICgpIHsKICAgIHZhciBwb2xsTGlua3MgPSBE
T00uZ2V0RWxlbWVudHNCeVRhZ0FuZENsYXNzTmFtZShkb2N1bWVudCwgJ2EnLCAi
TEpfUG9sbEFuc3dlckxpbmsiKSB8fCBbXTsgIAoKICAgIC8vIGF0dGFjaCBjbGlj
ayBoYW5kbGVycyB0byBlYWNoIGFuc3dlciBsaW5rCiAgICBBcnJheS5wcm90b3R5
cGUuZm9yRWFjaC5jYWxsKHBvbGxMaW5rcywgZnVuY3Rpb24gKHBvbGxMaW5rKSB7
CiAgICAgICAgRE9NLmFkZEV2ZW50TGlzdGVuZXIocG9sbExpbmssICJjbGljayIs
IExpdmVKb3VybmFsLnBvbGxBbnN3ZXJMaW5rQ2xpY2tlZC5iaW5kRXZlbnRMaXN0
ZW5lcihwb2xsTGluaykpOwogICAgfSk7Cn07CgovLyBpbnZvY2FudCBpcyB0aGUg
cG9sbExpbmsgZnJvbSBhYm92ZQpMaXZlSm91cm5hbC5wb2xsQW5zd2VyTGlua0Ns
aWNrZWQgPSBmdW5jdGlvbiAoZSkgewogICAgRXZlbnQuc3RvcChlKTsKCiAgICBp
ZiAoISB0aGlzIHx8ICEgdGhpcy50YWdOYW1lIHx8IHRoaXMudGFnTmFtZS50b0xv
d2VyQ2FzZSgpICE9ICJhIikKICAgIHJldHVybiB0cnVlOwoKICAgIHZhciBwb2xs
aWQgPSB0aGlzLmdldEF0dHJpYnV0ZSgibGpfcG9sbGlkIik7CiAgICBpZiAoISBw
b2xsaWQpIHJldHVybiB0cnVlOwoKICAgIHZhciBwb2xscWlkID0gdGhpcy5nZXRB
dHRyaWJ1dGUoImxqX3FpZCIpOwogICAgaWYgKCEgcG9sbHFpZCkgcmV0dXJuIHRy
dWU7CgogICAgdmFyIHBhZ2UgICAgID0gdGhpcy5nZXRBdHRyaWJ1dGUoImxqX3Bh
Z2UiKTsKICAgIHZhciBwYWdlc2l6ZSA9IHRoaXMuZ2V0QXR0cmlidXRlKCJsal9w
YWdlc2l6ZSIpOwoKICAgIHZhciBhY3Rpb24gPSAiZ2V0X2Fuc3dlcnMiOwoKICAg
IC8vIERvIGFqYXggcmVxdWVzdCB0byByZXBsYWNlIHRoZSBsaW5rIHdpdGggdGhl
IGFuc3dlcnMKICAgIHZhciBwYXJhbXMgPSB7CiAgICAgICAgInBvbGxpZCIgICA6
IHBvbGxpZCwKICAgICAgICAicG9sbHFpZCIgIDogcG9sbHFpZCwKICAgICAgICAi
cGFnZSIgICAgIDogcGFnZSwKICAgICAgICAicGFnZXNpemUiIDogcGFnZXNpemUs
CiAgICAgICAgImFjdGlvbiIgICA6IGFjdGlvbgogICAgfTsKCiAgICB2YXIgb3B0
cyA9IHsKICAgICAgICAidXJsIiAgICA6IExpdmVKb3VybmFsLmdldEFqYXhVcmwo
InBvbGwiKSwKICAgICAgICAibWV0aG9kIiA6ICJQT1NUIiwKICAgICAgICAiZGF0
YSIgICA6IEhUVFBSZXEuZm9ybUVuY29kZWQocGFyYW1zKSwKICAgICAgICAib25E
YXRhIiA6IExpdmVKb3VybmFsLnBvbGxBbnN3ZXJzUmVjZWl2ZWQsCiAgICAgICAg
Im9uRXJyb3IiOiBMaXZlSm91cm5hbC5hamF4RXJyb3IKICAgIH07CgogICAgSFRU
UFJlcS5nZXRKU09OKG9wdHMpOwoKICAgIGlmICghUG9sbFBhZ2VzLmhvdXJnbGFz
cykgewogICAgICAgIHZhciBjb29yZHMgPSBET00uZ2V0QWJzb2x1dGVDdXJzb3JQ
b3NpdGlvbihlKTsKICAgICAgICBQb2xsUGFnZXMuaG91cmdsYXNzID0gbmV3IEhv
dXJnbGFzcygpOwogICAgICAgIFBvbGxQYWdlcy5ob3VyZ2xhc3MuaW5pdCgpOwog
ICAgICAgIFBvbGxQYWdlcy5ob3VyZ2xhc3MuaG91cmdsYXNzX2F0KGNvb3Jkcy54
LCBjb29yZHMueSk7CiAgICAgICAgUG9sbFBhZ2VzLmUgPSBlOwogICAgfQoKICAg
IHJldHVybiBmYWxzZTsKfTsKCkxpdmVKb3VybmFsLnBvbGxBbnN3ZXJzUmVjZWl2
ZWQgPSBmdW5jdGlvbiAoYW5zd2VycykgewogICAgaWYgKCEgYW5zd2VycykgcmV0
dXJuIGZhbHNlOwoKICAgIGlmIChQb2xsUGFnZXMuaG91cmdsYXNzKSB7CiAgICAg
ICAgUG9sbFBhZ2VzLmhvdXJnbGFzcy5oaWRlKCk7CiAgICAgICAgUG9sbFBhZ2Vz
LmhvdXJnbGFzcyA9IG51bGw7CiAgICB9CgogICAgaWYgKGFuc3dlcnMuZXJyb3Ip
IHJldHVybiBMaXZlSm91cm5hbC5hamF4RXJyb3IoYW5zd2Vycy5lcnJvcik7Cgog
ICAgdmFyIHBvbGxpZCA9IGFuc3dlcnMucG9sbGlkOwogICAgdmFyIHBvbGxxaWQg
PSBhbnN3ZXJzLnBvbGxxaWQ7CiAgICBpZiAoISBwb2xsaWQgfHwgISBwb2xscWlk
KSByZXR1cm4gZmFsc2U7CiAgICB2YXIgcGFnZSAgICAgPSBhbnN3ZXJzLnBhZ2U7
CgogICAgdmFyIGFuc3dlclBhZ0VsZTsKICAgIHZhciBhbnN3ZXJFbGU7CiAgICBp
ZiAocGFnZSkgewogICAgICAgIGFuc3dlclBhZ0VsZSA9IERPTS5nZXRFbGVtZW50
c0J5VGFnQW5kQ2xhc3NOYW1lKGRvY3VtZW50LCAnZGl2JywgImxqX3BvbGxhbnN3
ZXJfcGFnaW5nIilbMF07CiAgICAgICAgYW5zd2VyRWxlICAgID0gRE9NLmdldEVs
ZW1lbnRzQnlUYWdBbmRDbGFzc05hbWUoZG9jdW1lbnQsICdkaXYnLCAibGpfcG9s
bGFuc3dlciIpWzBdOwogICAgfSBlbHNlIHsKICAgICAgICB2YXIgbGlua0VsZSA9
ICQoIkxKX1BvbGxBbnN3ZXJMaW5rXyIgKyBwb2xsaWQgKyAiXyIgKyBwb2xscWlk
KTsKICAgICAgICBpZiAoISBsaW5rRWxlKSByZXR1cm4gZmFsc2U7CgogICAgICAg
IGFuc3dlclBhZ0VsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwog
ICAgICAgIERPTS5hZGRDbGFzc05hbWUoYW5zd2VyUGFnRWxlLCAibGpfcG9sbGFu
c3dlcl9wYWdpbmciKTsKCiAgICAgICAgYW5zd2VyRWxlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiZGl2Iik7CiAgICAgICAgRE9NLmFkZENsYXNzTmFtZShhbnN3
ZXJFbGUsICJsal9wb2xsYW5zd2VyIik7CgogICAgICAgIGxpbmtFbGUucGFyZW50
Tm9kZS5pbnNlcnRCZWZvcmUoYW5zd2VyRWxlLCAgICBsaW5rRWxlKTsKICAgICAg
ICBsaW5rRWxlLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGFuc3dlclBhZ0VsZSwg
bGlua0VsZSk7CgogICAgICAgIGxpbmtFbGUucGFyZW50Tm9kZS5yZW1vdmVDaGls
ZChsaW5rRWxlKTsKICAgIH0KCiAgICBhbnN3ZXJQYWdFbGUuaW5uZXJIVE1MICA9
IGFuc3dlcnMucGFnaW5nX2h0bWwgPyBhbnN3ZXJzLnBhZ2luZ19odG1sIDogIiI7
CiAgICBhbnN3ZXJFbGUuaW5uZXJIVE1MICAgICA9IGFuc3dlcnMuYW5zd2VyX2h0
bWwgPyBhbnN3ZXJzLmFuc3dlcl9odG1sIDogIihObyBhbnN3ZXJzKSI7CgogICAg
TGl2ZUpvdXJuYWwuaW5pdFBvbGxzKCk7Cn07CgovLyBnZXRzIGEgdXJsIGZvciBk
b2luZyBhamF4IHJlcXVlc3RzCkxpdmVKb3VybmFsLmdldEFqYXhVcmwgPSBmdW5j
dGlvbiAoYWN0aW9uKSB7CiAgICAvLyBpZiB3ZSBhcmUgb24gYSBqb3VybmFsIHN1
YmRvbWFpbiB0aGVuIG91ciB1cmwgd2lsbCBiZQogICAgLy8gL2pvdXJuYWxuYW1l
L19fcnBjX2FjdGlvbiBpbnN0ZWFkIG9mIC9fX3JwY19hY3Rpb24KICAgIHJldHVy
biBTaXRlLmN1cnJlbnRKb3VybmFsCiAgICAgICAgPyAiLyIgKyBTaXRlLmN1cnJl
bnRKb3VybmFsICsgIi9fX3JwY18iICsgYWN0aW9uCiAgICAgICAgOiAiL19fcnBj
XyIgKyBhY3Rpb247Cn07CgovLyBnZW5lcmljIGhhbmRsZXIgZm9yIGFqYXggZXJy
b3JzCkxpdmVKb3VybmFsLmFqYXhFcnJvciA9IGZ1bmN0aW9uIChlcnIpIHsKICAg
IGlmIChMSl9JUFBVKSB7CiAgICAgICAgTEpfSVBQVS5zaG93Tm90ZSgiRXJyb3I6
ICIgKyBlcnIpOwogICAgfSBlbHNlIHsKICAgICAgICBhbGVydCgiRXJyb3I6ICIg
KyBlcnIpOwogICAgfQp9OwoKLy8gdXRpbGl0eSBtZXRob2QgdG8gZ2V0IGFsbCBp
dGVtcyBvbiB0aGUgcGFnZSB3aXRoIGEgY2VydGFpbiBjbGFzcyBuYW1lCkxpdmVK
b3VybmFsLmdldERvY3VtZW50RWxlbWVudHNCeUNsYXNzTmFtZSA9IGZ1bmN0aW9u
IChjbGFzc05hbWUpIHsKICB2YXIgZG9tT2JqZWN0cyA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCIqIik7CiAgdmFyIGl0ZW1zID0gRE9NLmZpbHRlckVs
ZW1lbnRzQnlDbGFzc05hbWUoZG9tT2JqZWN0cywgY2xhc3NOYW1lKSB8fCBbXTsK
CiAgcmV0dXJuIGl0ZW1zOwp9OwoKLy8gdXRpbGl0eSBtZXRob2QgdG8gYWRkIGFu
IG9uY2xpY2sgY2FsbGJhY2sgb24gYWxsIGl0ZW1zIHdpdGggYSBjbGFzc25hbWUK
TGl2ZUpvdXJuYWwuYWRkQ2xpY2tIYW5kbGVyVG9FbGVtZW50c1dpdGhDbGFzc05h
bWUgPSBmdW5jdGlvbiAoY2FsbGJhY2ssIGNsYXNzTmFtZSkgewogIHZhciBpdGVt
cyA9IExpdmVKb3VybmFsLmdldERvY3VtZW50RWxlbWVudHNCeUNsYXNzTmFtZShj
bGFzc05hbWUpOwoKICBpdGVtcy5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7CiAg
ICBET00uYWRkRXZlbnRMaXN0ZW5lcihpdGVtLCAiY2xpY2siLCBjYWxsYmFjayk7
CiAgfSkKfTsKCkxpdmVKb3VybmFsLmluc2VydEFkc011bHRpID0gZnVuY3Rpb24g
KHBhcmFtcykgewogIHZhciBpID0gMDsKICB2YXIgY29udGFpbmVycyA9IFtdOwoK
ICBmb3IgKGkgPSAwOyBpIDwgcGFyYW1zLmxlbmd0aDsgaSsrKSB7CiAgICBpZiAo
ISBwYXJhbXNbaV0uaHRtbCB8fCBwYXJhbXNbaV0uaHRtbCA9PSAiPHVsPlxuPC91
bD4iKSBjb250aW51ZTsKICAgIEFkRW5naW5lLmluc2VydEFkUmVzcG9uc2UoIHBh
cmFtc1tpXSApOwogICAgY29udGFpbmVycy5wdXNoKGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKHBhcmFtc1tpXS5pZCkpOwogIH0KCiAgICAvLyBhZGQgdGhlIGFkIGJv
eCBzdHlsZSB0byB0aGUgY29udGFpbmVycwogICAgY29udGFpbmVycy5mb3JFYWNo
KGZ1bmN0aW9uIChjb250YWluZXIpIHsKICAgICAgaWYgKCEgY29udGFpbmVyKSBy
ZXR1cm47CgogICAgICBET00uYWRkQ2xhc3NOYW1lKGNvbnRhaW5lci5wYXJlbnRO
b2RlLCAibGpfY29udGVudF9hZCIpOwogICAgICBET00ucmVtb3ZlQ2xhc3NOYW1l
KGNvbnRhaW5lci5wYXJlbnROb2RlLCAibGpfaW5hY3RpdmVfYWQiKTsKICAgIH0p
Owp9OwoKLy8gZ2l2ZW4gYSBVUkwsIHBhcnNlIG91dCB0aGUgR0VUIGFyZ3MgYW5k
IHJldHVybiB0aGVtIGluIGEgaGFzaApMaXZlSm91cm5hbC5wYXJzZUdldEFyZ3Mg
PSBmdW5jdGlvbiAodXJsKSB7CiAgICB2YXIgZ2V0QXJnc0hhc2ggPSB7fTsKCiAg
ICB2YXIgdXJsUGFydHMgPSB1cmwuc3BsaXQoIj8iKTsKICAgIGlmICghdXJsUGFy
dHNbMV0pIHJldHVybiBnZXRBcmdzSGFzaDsKICAgIHZhciBnZXRBcmdzID0gdXJs
UGFydHNbMV0uc3BsaXQoIiYiKTsKICAgIGZvciAodmFyIGFyZyBpbiBnZXRBcmdz
KSB7CiAgICAgICAgdmFyIHBhaXIgPSBnZXRBcmdzW2FyZ10uc3BsaXQoIj0iKTsK
ICAgICAgICBnZXRBcmdzSGFzaFtwYWlyWzBdXSA9IHBhaXJbMV07CiAgICB9Cgog
ICAgcmV0dXJuIGdldEFyZ3NIYXNoOwp9OwovKiAKQWRFbmdpbmUKJElkOiBBZEVu
Z2luZS5qcyAyMjYgMjAwNy0wOS0xOCAxODoyMDo1N1ogamFuaW5lICQKCkNvcHly
aWdodCAoYykgMjAwNiwgU2l4IEFwYXJ0LCBMdGQuCkFsbCByaWdodHMgcmVzZXJ2
ZWQuCgpSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpt
ZXQ6CgogICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodApub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCgogICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCmNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQpkaXN0
cmlidXRpb24uCgogICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mICJTaXggQXBhcnQi
IG5vciB0aGUgbmFtZXMgb2YgaXRzCmNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCnRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCgpUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCiJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCkxJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgpBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVApPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVApMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZClRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCk9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiovCgpBZEVu
Z2luZSA9IHsKCiAgICAvKiBjYWxsZWQgZnJvbSB3aW5kb3cub25sb2FkIE9OTFkg
b24gdGhlIGxvZ2dlZCBvdXQgYmxvZyBzaWRlICh2aWV3KSAqLwogICAgaW5pdDog
ZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIGVzID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoICJzY3JpcHQiICk7CiAgICAgICAgZm9yICggdmFyIGkgPSAw
OyBpIDwgZXMubGVuZ3RoOyBpKysgKSB7CiAgICAgICAgICAgIHZhciBhciA9IGVz
WyBpIF0uZ2V0QXR0cmlidXRlKCAiZGVmZXJzcmMiICk7CiAgICAgICAgICAgIGlm
KCAhYXIgKQogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgCiAgICAg
ICAgICAgIHZhciBjbCA9IGVzWyBpIF0uY2xvbmVOb2RlKCB0cnVlICk7CiAgICAg
ICAgICAgIGlmICggIWNsICkKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwoKICAg
ICAgICAgICAgY2wuc2V0QXR0cmlidXRlKCAic3JjIiwgYXIgKTsKICAgICAgICAg
ICAgY2wucmVtb3ZlQXR0cmlidXRlKCAiZGVmZXJzcmMiICk7CiAgICAgICAgCiAg
ICAgICAgICAgIC8qIHJlcGxhY2UgbmV3LCBvbGQgKi8KICAgICAgICAgICAgdHJ5
IHsKICAgICAgICAgICAgICAgIGVzWyBpIF0ucGFyZW50Tm9kZS5yZXBsYWNlQ2hp
bGQoIGNsLCBlc1sgaSBdICk7CiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9CiAg
ICAgICAgfQogICAgfSwKICAgIAogICAgCiAgICBpbnNlcnRBZFJlc3BvbnNlOiBm
dW5jdGlvbiggcGFyYW1zICkgewogICAgICAgIHZhciBlID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoIHBhcmFtcy5pZCApOwogICAgICAgIGlmKCAhZSApCiAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICBpZiggcGFyYW1zLmh0bWwgKSB7CiAgICAg
ICAgICAgIHZhciBlMiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoICJkaXYiICk7
CiAgICAgICAgICAgIGUyLmlubmVySFRNTCA9IHBhcmFtcy5odG1sOwogICAgICAg
ICAgICBlLmlubmVySFRNTCA9ICIiOyAvLyBjbGVhciBvbGQgY29udGVudAogICAg
ICAgICAgICBlLmFwcGVuZENoaWxkKCBlMiApOwogICAgICAgIH0KICAgICAgICBp
ZiggcGFyYW1zLmpzICkKICAgICAgICAgICAgcmV0dXJuIGV2YWwoICIoIiArIHBh
cmFtcy5qcyArICIpIiApOwogICAgfSwKCiAgICBpbnNlcnRBZHNNdWx0aTogZnVu
Y3Rpb24oIHBhcmFtcyApIHsKICAgICAgICB2YXIgaSA9IDA7CiAgICAgICAgZm9y
IChpID0gMDsgaSA8IHBhcmFtcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICBB
ZEVuZ2luZS5pbnNlcnRBZFJlc3BvbnNlKCBwYXJhbXNbaV0gKTsKICAgICAgICB9
CiAgICB9Cgp9Owp2YXIgRVNOID0gbmV3IE9iamVjdCgpOwoKTGl2ZUpvdXJuYWwu
cmVnaXN0ZXJfaG9vaygicGFnZV9sb2FkIiwgZnVuY3Rpb24gKCkgewogIEVTTi5p
bml0Q2hlY2tBbGxCdG5zKCk7CiAgRVNOLmluaXRFdmVudENoZWNrQnRucygpOwog
IEVTTi5pbml0VHJhY2tCdG5zKCk7Cn0pOwoKLy8gV2hlbiBwYWdlIGxvYWRzLCBz
ZXQgdXAgImNoZWNrIGFsbCIgY2hlY2tib3hlcwpFU04uaW5pdENoZWNrQWxsQnRu
cyA9IGZ1bmN0aW9uICgpIHsKICB2YXIgbnRpZHMgID0gJCgibnR5cGVpZHMiKTsK
ICB2YXIgY2F0aWRzID0gJCgiY2F0aWRzIik7CgogIGlmICghbnRpZHMgfHwgIWNh
dGlkcykKICAgIHJldHVybjsKCiAgbnRpZExpc3QgID0gbnRpZHMudmFsdWU7CiAg
Y2F0aWRMaXN0ID0gY2F0aWRzLnZhbHVlOwoKICBpZiAoIW50aWRMaXN0IHx8ICFj
YXRpZExpc3QpCiAgICByZXR1cm47CgogIG50aWRzICA9IG50aWRMaXN0LnNwbGl0
KCIsIik7CiAgY2F0aWRzID0gY2F0aWRMaXN0LnNwbGl0KCIsIik7CgogIGNhdGlk
cy5mb3JFYWNoKCBmdW5jdGlvbiAoY2F0aWQpIHsKICAgIG50aWRzLmZvckVhY2go
IGZ1bmN0aW9uIChudHlwZWlkKSB7CiAgICAgIHZhciBjbGFzc05hbWUgPSAiU3Vi
c2NyaWJlQ2hlY2tib3gtIiArIGNhdGlkICsgIi0iICsgbnR5cGVpZDsKCiAgICAg
IHZhciBjYWIgPSBuZXcgQ2hlY2thbGxCdXR0b24oKTsKICAgICAgY2FiLmluaXQo
ewogICAgICAgICJjbGFzcyI6IGNsYXNzTmFtZSwKICAgICAgICAgICJidXR0b24i
OiAkKCJDaGVja0FsbC0iICsgY2F0aWQgKyAiLSIgKyBudHlwZWlkKSwKICAgICAg
ICAgICJwYXJlbnQiOiAkKCJDYXRlZ29yeVJvdy0iICsgY2F0aWQpCiAgICAgICAg
ICB9KTsKICAgIH0pOwogIH0pOwp9CgovLyBzZXQgdXAgYXV0byBzaG93L2hpZGlu
ZyBvZiBub3RpZmljYXRpb24gbWV0aG9kcwpFU04uaW5pdEV2ZW50Q2hlY2tCdG5z
ID0gZnVuY3Rpb24gKCkgewogIHZhciB2aWV3T2JqZWN0cyA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCIqIik7CiAgdmFyIGJveGVzID0gRE9NLmZpbHRl
ckVsZW1lbnRzQnlDbGFzc05hbWUodmlld09iamVjdHMsICJTdWJzY3JpcHRpb25J
bmJveENoZWNrIikgfHwgW107CgogIGJveGVzLmZvckVhY2goIGZ1bmN0aW9uIChi
b3gpIHsKICAgIERPTS5hZGRFdmVudExpc3RlbmVyKGJveCwgImNsaWNrIiwgRVNO
LmV2ZW50Q2hlY2tlZC5iaW5kRXZlbnRMaXN0ZW5lcigpKTsKICB9KTsKfQoKRVNO
LmV2ZW50Q2hlY2tlZCA9IGZ1bmN0aW9uIChldnQpIHsKICB2YXIgdGFyZ2V0ID0g
ZXZ0LnRhcmdldDsKICBpZiAoIXRhcmdldCkKICAgIHJldHVybjsKCiAgdmFyIHBh
cmVudFJvdyA9IERPTS5nZXRGaXJzdEFuY2VzdG9yQnlUYWdOYW1lKHRhcmdldCwg
InRyIiwgZmFsc2UpOwoKICB2YXIgdmlld09iamVjdHMgPSBwYXJlbnRSb3cuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoIioiKTsKICB2YXIgYm94ZXMgPSBET00uZmlsdGVy
RWxlbWVudHNCeUNsYXNzTmFtZSh2aWV3T2JqZWN0cywgIk5vdGlmaWNhdGlvbk9w
dGlvbnMiKSB8fCBbXTsKCiAgYm94ZXMuZm9yRWFjaCggZnVuY3Rpb24gKGJveCkg
ewogICAgYm94LnN0eWxlLnZpc2liaWxpdHkgPSB0YXJnZXQuY2hlY2tlZCA/ICJ2
aXNpYmxlIiA6ICJoaWRkZW4iOwogIH0pOwp9CgovLyBhdHRhY2ggZXZlbnQgaGFu
ZGxlcnMgdG8gYWxsIHRyYWNrIGJ1dHRvbnMKRVNOLmluaXRUcmFja0J0bnMgPSBm
dW5jdGlvbiAobm9kZSkgewogICAgLy8gZG9uJ3QgZG8gYW55dGhpbmcgaWYgbm8g
cmVtb3RlCiAgICBpZiAoIVNpdGUuaGFzX3JlbW90ZSkgcmV0dXJuOwoKICAgIG5v
ZGUgPSBub2RlIHx8IGRvY3VtZW50OwogICAgdmFyIHRyYWNrQnRucyA9IERPTS5n
ZXRFbGVtZW50c0J5VGFnQW5kQ2xhc3NOYW1lKG5vZGUsICdpbWcnLCAnVHJhY2tC
dXR0b24nKTsKCiAgICB0cmFja0J0bnMuZm9yRWFjaChmdW5jdGlvbiAodHJhY2tC
dG4pIHsKICAgICAgICBpZiAoIXRyYWNrQnRuIHx8ICF0cmFja0J0bi5nZXRBdHRy
aWJ1dGUpIHJldHVybjsKCiAgICAgICAgaWYgKCF0cmFja0J0bi5nZXRBdHRyaWJ1
dGUoImxqX3N1YmlkIikgJiYgIXRyYWNrQnRuLmdldEF0dHJpYnV0ZSgibGpfam91
cm5hbGlkIikpIHJldHVybjsKCiAgICAgICAgRE9NLmFkZEV2ZW50TGlzdGVuZXIo
dHJhY2tCdG4sICdjbGljaycsIEVTTi50cmFja0J0bkNsaWNrSGFuZGxlci5iaW5k
RXZlbnRMaXN0ZW5lcih0cmFja0J0bikpOwogICAgfSk7Cn07CgpFU04udHJhY2tC
dG5DbGlja0hhbmRsZXIgPSBmdW5jdGlvbiAoZXZ0KSB7CiAgICB2YXIgdHJhY2tC
dG4gPSBldnQudGFyZ2V0OwogICAgaWYgKCEgdHJhY2tCdG4gfHwgdHJhY2tCdG4u
dGFnTmFtZS50b0xvd2VyQ2FzZSgpICE9ICJpbWciKSByZXR1cm4gdHJ1ZTsKCiAg
ICBFdmVudC5zdG9wKGV2dCk7CgogICAgdmFyIGJ0bkluZm8gPSB7fTsKCiAgICBb
J2FyZzEnLCAnYXJnMicsICdldHlwZWlkJywgJ25ld2VudHJ5X2V0eXBlaWQnLCAn
bmV3ZW50cnlfdG9rZW4nLCAnbmV3ZW50cnlfc3ViaWQnLAogICAgICdqb3VybmFs
aWQnLCAnc3ViaWQnLCAnYXV0aF90b2tlbiddLmZvckVhY2goZnVuY3Rpb24gKGFy
ZykgewogICAgICAgIGJ0bkluZm9bYXJnXSA9IHRyYWNrQnRuLmdldEF0dHJpYnV0
ZSgibGpfIiArIGFyZyk7CiAgICB9KTsKCiAgICAvLyBwb3AgdXAgbGl0dGxlIGRp
YWxvZyB0byBlaXRoZXIgdHJhY2sgYnkgaW5ib3gvZW1haWwgb3IgZ28gdG8gbW9y
ZSBvcHRpb25zCiAgICB2YXIgZGxnID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
ZGl2Iik7CiAgICB2YXIgdGl0bGUgPSBfdGV4dERpdigiRW1haWwgbWUgd2hlbiIp
OwogICAgRE9NLmFkZENsYXNzTmFtZSh0aXRsZSwgInRyYWNrX3RpdGxlIik7CiAg
ICBkbGcuYXBwZW5kQ2hpbGQodGl0bGUpOwoKICAgIHZhciBUcmFja0NoZWNrYm94
ID0gZnVuY3Rpb24gKHRpdGxlLCBjaGVja2VkKSB7CiAgICAgICAgdmFyIGNoZWNr
Q29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CgogICAg
ICAgIHZhciBuZXdDaGVja2JveCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlu
cHV0Iik7CiAgICAgICAgbmV3Q2hlY2tib3gudHlwZSA9ICJjaGVja2JveCI7CiAg
ICAgICAgbmV3Q2hlY2tib3guaWQgPSAibmV3ZW50cnl0cmFjayIgKyBVbmlxdWUu
aWQoKTsKICAgICAgICB2YXIgbmV3Q2hlY2tib3hMYWJlbCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImxhYmVsIik7CiAgICAgICAgbmV3Q2hlY2tib3hMYWJlbC5z
ZXRBdHRyaWJ1dGUoImZvciIsIG5ld0NoZWNrYm94LmlkKTsKICAgICAgICBuZXdD
aGVja2JveExhYmVsLmlubmVySFRNTCA9IHRpdGxlOwoKICAgICAgICBjaGVja0Nv
bnRhaW5lci5hcHBlbmRDaGlsZChuZXdDaGVja2JveCk7CiAgICAgICAgY2hlY2tD
b250YWluZXIuYXBwZW5kQ2hpbGQobmV3Q2hlY2tib3hMYWJlbCk7CiAgICAgICAg
ZGxnLmFwcGVuZENoaWxkKGNoZWNrQ29udGFpbmVyKTsKCiAgICAgICAgbmV3Q2hl
Y2tib3guY2hlY2tlZCA9IGNoZWNrZWQgPyB0cnVlIDogZmFsc2U7CgogICAgICAg
IHJldHVybiBuZXdDaGVja2JveDsKICAgIH07CgogICAgLy8gZ2xvYmFsIHRyYWNr
UG9wdXAgc28gd2UgY2FuIG9ubHkgaGF2ZSBvbmUKICAgIGlmIChFU04udHJhY2tQ
b3B1cCkgewogICAgICAgIEVTTi50cmFja1BvcHVwLmhpZGUoKTsKICAgICAgICBF
U04udHJhY2tQb3B1cCA9IG51bGw7CiAgICB9CgogICAgdmFyIHNhdmVDaGFuZ2Vz
QnRuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKICAgIHNhdmVD
aGFuZ2VzQnRuLnR5cGUgPSAiYnV0dG9uIjsKICAgIHNhdmVDaGFuZ2VzQnRuLnZh
bHVlID0gIlNhdmUgQ2hhbmdlcyI7CiAgICBET00uYWRkQ2xhc3NOYW1lKHNhdmVD
aGFuZ2VzQnRuLCAidHJhY2tfc2F2ZWNoYW5nZXMiKTsKCiAgICB2YXIgdHJhY2tp
bmdOZXdFbnRyaWVzICA9IE51bWJlcihidG5JbmZvWyduZXdlbnRyeV9zdWJpZCdd
KSA/IDEgOiAwOwogICAgdmFyIHRyYWNraW5nTmV3Q29tbWVudHMgPSBOdW1iZXIo
YnRuSW5mb1snc3ViaWQnXSkgPyAxIDogMDsKCiAgICB2YXIgbmV3RW50cnlUcmFj
a0J0bjsKICAgIHZhciBjb21tZW50c1RyYWNrQnRuOwoKICAgIGlmIChOdW1iZXIo
dHJhY2tCdG4uZ2V0QXR0cmlidXRlKCJsal9kdGFsa2lkIikpKSB7CiAgICAgICAg
Ly8gdGhpcyBpcyBhIHRocmVhZCB0cmFja2luZyBidXR0b24KICAgICAgICAvLyBh
bHdheXMgY2hlY2tlZDogZWl0aGVyIGJlY2F1c2UgdGhleSdyZSBzdWJzY3JpYmVk
LCBvciBiZWNhdXNlCiAgICAgICAgLy8gdGhleSdyZSBnb2luZyB0byBzdWJzY3Jp
YmUuCiAgICAgICAgY29tbWVudHNUcmFja0J0biA9IFRyYWNrQ2hlY2tib3goInNv
bWVvbmUgcmVwbGllcyBpbiB0aGlzIGNvbW1lbnQgdGhyZWFkIiwgMSk7CiAgICB9
IGVsc2UgewogICAgICAgIC8vIGVudHJ5IHRyYWNraW5nIGJ1dHRvbgogICAgICAg
IG5ld0VudHJ5VHJhY2tCdG4gPSBUcmFja0NoZWNrYm94KExKX2NtdGluZm9bImpv
dXJuYWwiXSArICIgcG9zdHMgYSBuZXcgZW50cnkiLCB0cmFja2luZ05ld0VudHJp
ZXMpOwogICAgICAgIGNvbW1lbnRzVHJhY2tCdG4gPSBUcmFja0NoZWNrYm94KCJz
b21lb25lIGNvbW1lbnRzIG9uIHRoaXMgcG9zdCIsIHRyYWNraW5nTmV3Q29tbWVu
dHMpOwogICAgfQoKICAgIERPTS5hZGRFdmVudExpc3RlbmVyKHNhdmVDaGFuZ2Vz
QnRuLCAiY2xpY2siLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgRVNOLnRvZ2dsZVN1
YnNjcmlwdGlvbnMoYnRuSW5mbywgZXZ0LCB0cmFja0J0biwgewogICAgICAgICAg
ICBuZXdFbnRyeTogbmV3RW50cnlUcmFja0J0biA/IG5ld0VudHJ5VHJhY2tCdG4u
Y2hlY2tlZCA6IGZhbHNlLAogICAgICAgICAgICBuZXdDb21tZW50czogY29tbWVu
dHNUcmFja0J0bi5jaGVja2VkCiAgICAgICAgfSk7CiAgICAgICAgaWYgKEVTTi50
cmFja1BvcHVwKSBFU04udHJhY2tQb3B1cC5oaWRlKCk7CiAgICB9KTsKCiAgICB2
YXIgYnRuc0NvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIp
OwogICAgRE9NLmFkZENsYXNzTmFtZShidG5zQ29udGFpbmVyLCAidHJhY2tfYnRu
Y29udGFpbmVyIik7CiAgICBkbGcuYXBwZW5kQ2hpbGQoYnRuc0NvbnRhaW5lcik7
CgogICAgYnRuc0NvbnRhaW5lci5hcHBlbmRDaGlsZChzYXZlQ2hhbmdlc0J0bik7
CgogICAgdmFyIGN1c3RUcmFja0xpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJhIik7CiAgICBjdXN0VHJhY2tMaW5rLmhyZWYgPSB0cmFja0J0bi5wYXJlbnRO
b2RlLmhyZWY7CiAgICBidG5zQ29udGFpbmVyLmFwcGVuZENoaWxkKGN1c3RUcmFj
a0xpbmspOwogICAgY3VzdFRyYWNrTGluay5pbm5lckhUTUwgPSAiTW9yZSBPcHRp
b25zIjsKICAgIERPTS5hZGRDbGFzc05hbWUoY3VzdFRyYWNrTGluaywgInRyYWNr
X21vcmVvcHRzIik7CgogICAgRVNOLnRyYWNrUG9wdXAgPSBuZXcgTEpfSVBQVS5z
aG93Tm90ZUVsZW1lbnQoZGxnLCB0cmFja0J0biwgMCk7CgogICAgRE9NLmFkZEV2
ZW50TGlzdGVuZXIoY3VzdFRyYWNrTGluaywgImNsaWNrIiwgZnVuY3Rpb24gKGV2
dCkgewogICAgICAgIEV2ZW50LnN0b3AoZXZ0KTsKICAgICAgICBkb2N1bWVudC5s
b2NhdGlvbi5ocmVmID0gdHJhY2tCdG4ucGFyZW50Tm9kZS5ocmVmOwogICAgICAg
IGlmIChFU04udHJhY2tQb3B1cCkgRVNOLnRyYWNrUG9wdXAuaGlkZSgpOwogICAg
ICAgIHJldHVybiBmYWxzZTsKICAgIH0pOwoKICAgIHJldHVybiBmYWxzZTsKfQoK
Ly8gdG9nZ2xlcyBzdWJzY3JpcHRpb25zCkVTTi50b2dnbGVTdWJzY3JpcHRpb25z
ID0gZnVuY3Rpb24gKHN1YkluZm8sIGV2dCwgYnRuLCBzdWJzKSB7CiAgICBzdWJJ
bmZvWyJzdWJpZCJdID0gTnVtYmVyKHN1YkluZm9bInN1YmlkIl0pOwogICAgaWYg
KChzdWJJbmZvWyJzdWJpZCJdICYmICEgc3Vic1sibmV3Q29tbWVudHMiXSkKICAg
ICAgICB8fCAoISBzdWJJbmZvWyJzdWJpZCJdICYmIHN1YnNbIm5ld0NvbW1lbnRz
Il0pKSB7CiAgICAgICAgRVNOLnRvZ2dsZVN1YnNjcmlwdGlvbihzdWJJbmZvLCBl
dnQsIGJ0biwgIm5ld0NvbW1lbnRzIik7CiAgICB9CgogICAgc3ViSW5mb1sibmV3
ZW50cnlfc3ViaWQiXSA9IE51bWJlcihzdWJJbmZvWyJuZXdlbnRyeV9zdWJpZCJd
KTsKICAgIGlmICgoc3ViSW5mb1sibmV3ZW50cnlfc3ViaWQiXSAmJiAhIHN1YnNb
Im5ld0VudHJ5Il0pCiAgICAgICAgfHwgKCEgc3ViSW5mb1sibmV3ZW50cnlfc3Vi
aWQiXSAmJiBzdWJzWyJuZXdFbnRyeSJdKSkgewogICAgICAgICAgICB2YXIgbmV3
ZW50cnlTdWJJbmZvID0gbmV3IE9iamVjdChzdWJJbmZvKTsKICAgICAgICAgICAg
bmV3ZW50cnlTdWJJbmZvWyJzdWJpZCJdID0gTnVtYmVyKGJ0bi5nZXRBdHRyaWJ1
dGUoImxqX25ld2VudHJ5X3N1YmlkIikpOwogICAgICAgICAgICBFU04udG9nZ2xl
U3Vic2NyaXB0aW9uKG5ld2VudHJ5U3ViSW5mbywgZXZ0LCBidG4sICJuZXdFbnRy
eSIpOwogICAgfQp9OwoKLy8gKFVuKXN1YnNjcmliZXMgdG8gYW4gZXZlbnQKRVNO
LnRvZ2dsZVN1YnNjcmlwdGlvbiA9IGZ1bmN0aW9uIChzdWJJbmZvLCBldnQsIGJ0
biwgc3ViKSB7CiAgICB2YXIgYWN0aW9uID0gIiI7CiAgICB2YXIgcGFyYW1zID0g
ewogICAgICAgIGF1dGhfdG9rZW46IHN1YiA9PSAibmV3RW50cnkiID8gc3ViSW5m
by5uZXdlbnRyeV90b2tlbiA6IHN1YkluZm8uYXV0aF90b2tlbgogICAgfTsKCiAg
ICBpZiAoTnVtYmVyKHN1YkluZm8uc3ViaWQpKSB7CiAgICAgICAgLy8gc3Vic2Ny
aXB0aW9uIGV4aXN0cwogICAgICAgIGFjdGlvbiA9ICJkZWxzdWIiOwogICAgICAg
IHBhcmFtcy5zdWJpZCA9IHN1YkluZm8uc3ViaWQ7CiAgICB9IGVsc2UgewogICAg
ICAgIC8vIGNyZWF0ZSBhIG5ldyBzdWJzY3JpcHRpb24KICAgICAgICBhY3Rpb24g
PSAiYWRkc3ViIjsKCiAgICAgICAgdmFyIHBhcmFtX2tleXM7CiAgICAgICAgaWYg
KHN1YiA9PSAibmV3RW50cnkiKSB7CiAgICAgICAgICAgIHBhcmFtcy5ldHlwZWlk
ID0gc3ViSW5mby5uZXdlbnRyeV9ldHlwZWlkOwogICAgICAgICAgICBwYXJhbV9r
ZXlzID0gWyJqb3VybmFsaWQiXTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICBwYXJhbV9rZXlzID0gWyJqb3VybmFsaWQiLCAiYXJnMSIsICJhcmcyIiwgImV0
eXBlaWQiXTsKICAgICAgICB9CgogICAgICAgIHBhcmFtX2tleXMuZm9yRWFjaChm
dW5jdGlvbiAocGFyYW0pIHsKICAgICAgICAgICAgaWYgKE51bWJlcihzdWJJbmZv
W3BhcmFtXSkpCiAgICAgICAgICAgICAgICBwYXJhbXNbcGFyYW1dID0gcGFyc2VJ
bnQoc3ViSW5mb1twYXJhbV0pOwogICAgICAgIH0pOwogICAgfQoKICAgIHBhcmFt
cy5hY3Rpb24gPSBhY3Rpb247CgogICAgdmFyIHJlcUluZm8gPSB7CiAgICAgICAg
Im1ldGhvZCI6ICJQT1NUIiwKICAgICAgICAidXJsIjogICAgTGl2ZUpvdXJuYWwu
Z2V0QWpheFVybCgnZXNuX3N1YnMnKSwKICAgICAgICAiZGF0YSI6ICAgSFRUUFJl
cS5mb3JtRW5jb2RlZChwYXJhbXMpCiAgICB9OwoKICAgIHZhciBnb3RJbmZvQ2Fs
bGJhY2sgPSBmdW5jdGlvbiAoaW5mbykgewogICAgICAgIGlmICghIGluZm8pIHJl
dHVybiBMSl9JUFBVLnNob3dOb3RlKCJFcnJvciBjaGFuZ2luZyBzdWJzY3JpcHRp
b24iLCBidG4pOwoKICAgICAgICBpZiAoaW5mby5lcnJvcikgcmV0dXJuIExKX0lQ
UFUuc2hvd05vdGUoaW5mby5lcnJvciwgYnRuKTsKCiAgICAgICAgaWYgKGluZm8u
c3VjY2VzcykgewogICAgICAgICAgICBpZiAoaW5mby5tc2cpCiAgICAgICAgICAg
ICAgICBMSl9JUFBVLnNob3dOb3RlKGluZm8ubXNnLCBidG4pOwoKICAgICAgICAg
ICAgaWYgKGluZm8uc3Vic2NyaWJlZCkgewogICAgICAgICAgICAgICAgaWYgKGlu
Zm8uc3ViaWQpCiAgICAgICAgICAgICAgICAgICAgRE9NLnNldEVsZW1lbnRBdHRy
aWJ1dGUoYnRuLCAibGpfc3ViaWQiLCBpbmZvLnN1YmlkKTsKICAgICAgICAgICAg
ICAgIGlmIChpbmZvLm5ld2VudHJ5X3N1YmlkKQogICAgICAgICAgICAgICAgICAg
IERPTS5zZXRFbGVtZW50QXR0cmlidXRlKGJ0biwgImxqX25ld2VudHJ5X3N1Ymlk
IiwgaW5mby5uZXdlbnRyeV9zdWJpZCk7CgogICAgICAgICAgICAgICAgWyJqb3Vy
bmFsaWQiLCAiYXJnMSIsICJhcmcyIiwgImV0eXBlaWQiXS5mb3JFYWNoKGZ1bmN0
aW9uIChwYXJhbSkgewogICAgICAgICAgICAgICAgICAgIERPTS5zZXRFbGVtZW50
QXR0cmlidXRlKGJ0biwgImxqXyIgKyBwYXJhbSwgMCk7CiAgICAgICAgICAgICAg
ICB9KTsKCiAgICAgICAgICAgICAgICBET00uc2V0RWxlbWVudEF0dHJpYnV0ZShi
dG4sICJ0aXRsZSIsICdVbnRyYWNrIFRoaXMnKTsKCiAgICAgICAgICAgICAgICAv
LyB1cGRhdGUgc3VidGhyZWFkIHRyYWNraW5nIGljb25zCiAgICAgICAgICAgICAg
ICB2YXIgZHRhbGtpZCA9IGJ0bi5nZXRBdHRyaWJ1dGUoImxqX2R0YWxraWQiKTsK
ICAgICAgICAgICAgICAgIGlmIChkdGFsa2lkKQogICAgICAgICAgICAgICAgICAg
IEVTTi51cGRhdGVUaHJlYWRJY29ucyhkdGFsa2lkLCAib24iKTsKICAgICAgICAg
ICAgICAgIGVsc2UgLy8gbm90IHRocmVhZCB0cmFja2luZyBidXR0b24KICAgICAg
ICAgICAgICAgICAgICBidG4uc3JjID0gU2l0ZS5pbWdwcmVmaXggKyAiL2J0bl90
cmFja2luZy5naWYiOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
ICAgaWYgKGluZm9bImV2ZW50X2NsYXNzIl0gPT0gIkxKOjpFdmVudDo6Sm91cm5h
bE5ld0NvbW1lbnQiKQogICAgICAgICAgICAgICAgICAgIERPTS5zZXRFbGVtZW50
QXR0cmlidXRlKGJ0biwgImxqX3N1YmlkIiwgMCk7CiAgICAgICAgICAgICAgICBl
bHNlIGlmIChpbmZvWyJldmVudF9jbGFzcyJdID09ICJMSjo6RXZlbnQ6OkpvdXJu
YWxOZXdFbnRyeSIpCiAgICAgICAgICAgICAgICAgICAgRE9NLnNldEVsZW1lbnRB
dHRyaWJ1dGUoYnRuLCAibGpfbmV3ZW50cnlfc3ViaWQiLCAwKTsKCiAgICAgICAg
ICAgICAgICBbImpvdXJuYWxpZCIsICJhcmcxIiwgImFyZzIiLCAiZXR5cGVpZCJd
LmZvckVhY2goZnVuY3Rpb24gKHBhcmFtKSB7CiAgICAgICAgICAgICAgICAgICAg
RE9NLnNldEVsZW1lbnRBdHRyaWJ1dGUoYnRuLCAibGpfIiArIHBhcmFtLCBpbmZv
W3BhcmFtXSk7CiAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICBE
T00uc2V0RWxlbWVudEF0dHJpYnV0ZShidG4sICJ0aXRsZSIsICdUcmFjayBUaGlz
Jyk7CgogICAgICAgICAgICAgICAgLy8gdXBkYXRlIHN1YnRocmVhZCB0cmFja2lu
ZyBpY29ucwogICAgICAgICAgICAgICAgdmFyIGR0YWxraWQgPSBidG4uZ2V0QXR0
cmlidXRlKCJsal9kdGFsa2lkIik7CiAgICAgICAgICAgICAgICBpZiAoZHRhbGtp
ZCkgewogICAgICAgICAgICAgICAgICAgIC8vIHNldCBzdGF0ZSB0byAib2ZmIiBp
ZiBubyBwYXJlbnRzIHRyYWNraW5nIHRoaXMsCiAgICAgICAgICAgICAgICAgICAg
Ly8gb3RoZXJ3aXNlIHNldCBzdGF0ZSB0byAicGFyZW50IgogICAgICAgICAgICAg
ICAgICAgIHZhciBzdGF0ZSA9ICJvZmYiOwogICAgICAgICAgICAgICAgICAgIHZh
ciBwYXJlbnRCdG47CiAgICAgICAgICAgICAgICAgICAgdmFyIHBhcmVudF9kdGFs
a2lkID0gZHRhbGtpZDsKICAgICAgICAgICAgICAgICAgICB3aGlsZSAocGFyZW50
QnRuID0gRVNOLmdldFRocmVhZFBhcmVudEJ0bihwYXJlbnRfZHRhbGtpZCkpIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50X2R0YWxraWQgPSBwYXJlbnRC
dG4uZ2V0QXR0cmlidXRlKCJsal9kdGFsa2lkIik7CiAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICghIHBhcmVudF9kdGFsa2lkKSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBsb2coImNvdWxkIG5vdCBmaW5kIHBhcmVudF9kdGFsa2lkIik7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEgTnVt
YmVyKHBhcmVudEJ0bi5nZXRBdHRyaWJ1dGUoImxqX3N1YmlkIikpKQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAg
ICAgICAgIHN0YXRlID0gInBhcmVudCI7CiAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAg
ICAgRVNOLnVwZGF0ZVRocmVhZEljb25zKGR0YWxraWQsIHN0YXRlKTsKICAgICAg
ICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgLy8gbm90IHRo
cmVhZCB0cmFja2luZyBidXR0b24KICAgICAgICAgICAgICAgICAgICBidG4uc3Jj
ID0gU2l0ZS5pbWdwcmVmaXggKyAiL2J0bl90cmFjay5naWYiOwogICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoaW5mby5hdXRo
X3Rva2VuKQogICAgICAgICAgICAgICAgRE9NLnNldEVsZW1lbnRBdHRyaWJ1dGUo
YnRuLCAibGpfYXV0aF90b2tlbiIsIGluZm8uYXV0aF90b2tlbik7CiAgICAgICAg
ICAgIGlmIChpbmZvLm5ld2VudHJ5X3Rva2VuKQogICAgICAgICAgICAgICAgRE9N
LnNldEVsZW1lbnRBdHRyaWJ1dGUoYnRuLCAibGpfbmV3ZW50cnlfdG9rZW4iLCBp
bmZvLm5ld2VudHJ5X3Rva2VuKTsKICAgICAgICB9CiAgICB9OwoKICAgIHJlcUlu
Zm8ub25EYXRhID0gZ290SW5mb0NhbGxiYWNrOwogICAgcmVxSW5mby5vbkVycm9y
ID0gZnVuY3Rpb24gKGVycikgeyBMSl9JUFBVLnNob3dOb3RlKCJFcnJvcjogIiAr
IGVycikgfTsKCiAgICBIVFRQUmVxLmdldEpTT04ocmVxSW5mbyk7Cn07CgovLyBn
aXZlbiBhIGR0YWxraWQsIGZpbmQgdGhlIHRyYWNrIGJ1dHRvbiBmb3IgaXRzIHBh
cmVudCBjb21tZW50IChpZiBhbnkpCkVTTi5nZXRUaHJlYWRQYXJlbnRCdG4gPSBm
dW5jdGlvbiAoZHRhbGtpZCkgewogICAgdmFyIGNtdEluZm8gPSBMSl9jbXRpbmZv
W2R0YWxraWQgKyAiIl07CiAgICBpZiAoISBjbXRJbmZvKSB7CiAgICAgICAgbG9n
KCJubyBjb21tZW50IGluZm8iKTsKICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0K
CiAgICB2YXIgcGFyZW50X2R0YWxraWQgPSBjbXRJbmZvLnBhcmVudDsKICAgIGlm
ICghIHBhcmVudF9kdGFsa2lkKQogICAgICAgIHJldHVybiBudWxsOwoKICAgIHJl
dHVybiAkKCJsal90cmFja19idG5fIiArIHBhcmVudF9kdGFsa2lkKTsKfTsKCi8v
IHVwZGF0ZSBhbGwgdGhlIHRyYWNraW5nIGljb25zIHVuZGVyIGEgcGFyZW50IGNv
bW1lbnQKRVNOLnVwZGF0ZVRocmVhZEljb25zID0gZnVuY3Rpb24gKGR0YWxraWQs
IHRyYWNraW5nKSB7CiAgICB2YXIgYnRuID0gJCgibGpfdHJhY2tfYnRuXyIgKyBk
dGFsa2lkKTsKICAgIGlmICghIGJ0bikgewogICAgICAgIGxvZygibm8gYnV0dG9u
Iik7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIHZhciBjbXRJbmZvID0gTEpf
Y210aW5mb1tkdGFsa2lkICsgIiJdOwogICAgaWYgKCEgY210SW5mbykgewogICAg
ICAgIGxvZygibm8gY29tbWVudCBpbmZvIik7CiAgICAgICAgcmV0dXJuOwogICAg
fQoKICAgIGlmIChOdW1iZXIoYnRuLmdldEF0dHJpYnV0ZSgibGpfc3ViaWQiKSkg
JiYgdHJhY2tpbmcgIT0gIm9uIikgewogICAgICAgIC8vIHN1YnNjcmlwdGlvbiBh
bHJlYWR5IGV4aXN0cyBvbiB0aGlzIGJ1dHRvbiwgZG9uJ3QgbWVzcyB3aXRoIGl0
CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIGlmIChjbXRJbmZvLnJjICYmIGNt
dEluZm8ucmMubGVuZ3RoKSB7CiAgICAgICAgLy8gdXBkYXRlIGNoaWxkcmVuCiAg
ICAgICAgY210SW5mby5yYy5mb3JFYWNoKGZ1bmN0aW9uIChjaGlsZF9kdGFsa2lk
KSB7CiAgICAgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsK
ICAgICAgICAgICAgICAgIHZhciBzdGF0ZTsKICAgICAgICAgICAgICAgIHN3aXRj
aCAodHJhY2tpbmcpIHsKICAgICAgICAgICAgICAgIGNhc2UgIm9uIjoKICAgICAg
ICAgICAgICAgICAgICBzdGF0ZSA9ICJwYXJlbnQiOwogICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAib2ZmIjoKICAgICAgICAg
ICAgICAgICAgICBzdGF0ZSA9ICJvZmYiOwogICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgICAgY2FzZSAicGFyZW50IjoKICAgICAgICAgICAg
ICAgICAgICBzdGF0ZSA9ICJwYXJlbnQiOwogICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAg
ICBhbGVydCgiVW5rbm93biB0cmFja2luZyBzdGF0ZSAiICsgdHJhY2tpbmcpOwog
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgRVNOLnVwZGF0ZVRocmVhZEljb25zKGNoaWxkX2R0YWxraWQs
IHN0YXRlKTsKICAgICAgICAgICAgfSwgMzAwKTsKICAgICAgICB9KTsKICAgIH0K
CiAgICAvLyB1cGRhdGUgaWNvbgogICAgdmFyIHVyaTsKICAgIHN3aXRjaCAodHJh
Y2tpbmcpIHsKICAgICAgICBjYXNlICJvbiI6CiAgICAgICAgICAgIHVyaSA9ICIv
YnRuX3RyYWNraW5nLmdpZiI7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNh
c2UgIm9mZiI6CiAgICAgICAgICAgIHVyaSA9ICIvYnRuX3RyYWNrLmdpZiI7CiAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgInBhcmVudCI6CiAgICAgICAg
ICAgIHVyaSA9ICIvYnRuX3RyYWNraW5nX3RocmVhZC5naWYiOwogICAgICAgICAg
ICBicmVhazsKICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICBhbGVydCgiVW5r
bm93biB0cmFja2luZyBzdGF0ZSAiICsgdHJhY2tpbmcpOwogICAgICAgICAgICBi
cmVhazsKICAgIH0KCiAgICBidG4uc3JjID0gU2l0ZS5pbWdwcmVmaXggKyB1cmk7
Cn07Ci8qCiAgSVBQVSBtZXRob2RzOgogICAgIGluaXQoW2lubmVySFRNTF0pIC0t
IHRha2VzIGlubmVySFRNTCBhcyBvcHRpb25hbCBhcmd1bWVudAogICAgIHNob3co
KSAtLSBzaG93cyB0aGUgcG9wdXAKICAgICBoaWRlKCkgLS0gaGlkZXMgcG9wdXAK
ICAgICBjYW5jZWwoKSAtLSBoaWRlcyBhbmQgY2FsbHMgY2FuY2VsIGNhbGxiYWNr
CgogIENvbnRlbnQgc2V0dGVyczoKICAgICBzZXRDb250ZW50KGlubmVySFRNTCkg
LS0gc2V0IGlubmVySFRNTAogICAgIHNldENvbnRlbnRFbGVtZW50KGVsZW1lbnQp
IC0tIGFkZHMgZWxlbWVudCBhcyBhIGNoaWxkIG9mIHRoZSBwb3B1cAoKICAgQWNj
ZXNzb3JzOgogICAgIGdldEVsZW1lbnQoKSAtLSByZXR1cm5zIHBvcHVwIERJViBl
bGVtZW50CiAgICAgdmlzaWJsZSgpIC0tIHJldHVybnMgd2hldGhlciB0aGUgcG9w
dXAgaXMgdmlzaWJsZSBvciBub3QKCiAgIFRpdGxlYmFyOgogICAgIHNldFRpdGxl
YmFyKHNob3cpIC0tIHRydWU6IHNob3cgdGl0bGViYXIgLyBmYWxzZTogbm8gdGl0
bGViYXIKICAgICBzZXRUaXRsZSh0aXRsZSkgLS0gc2V0cyB0aGUgdGl0bGViYXIg
dGV4dAogICAgIGdldFRpdGxlYmFyRWxlbWVudCgpIC0tIHJldHVybnMgdGhlIHRp
dGxlYmFyIGVsZW1lbnQKICAgICBzZXRUaXRsZWJhckNsYXNzKGNsYXNzTmFtZSkg
LS0gc2V0IHRoZSBjbGFzcyBvZiB0aGUgdGl0bGViYXIKCiAgIFN0eWxpbmc6CiAg
ICAgc2V0T3ZlcmZsb3cob3ZlcmZsb3cpIC0tIHNldHMgZWxlLnN0eWxlLm92ZXJm
bG93IHRvIG92ZXJmbG93CiAgICAgYWRkQ2xhc3MoY2xhc3NOYW1lKSAtLSBhZGRz
IGNsYXNzIHRvIHBvcHVwCiAgICAgcmVtb3ZlQ2xhc3MoY2xhc3NOYW1lKSAtLSBy
ZW1vdmVzIGNsYXNzIHRvIHBvcHVwCgogICBCcm93c2VyIEhhY2tzOgogICAgIHNl
dEF1dG9IaWRlU2VsZWN0cyhhdXRvaGlkZSkgLS0gd2hlbiB0aGUgcG9wdXAgaXMg
c2hvd24gc2hvdWxkIGl0IGZpbmQgYWxsIHRoZSBzZWxlY3RzCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgb24gdGhlIHBhZ2UgYW5kIGhpZGUgdGhlbSAo
YW5kIHNob3cgdGhlbSBhZ2FpbikgKGZvciBJRSkKCiAgIFBvc2l0aW9uaW5nL1Np
emluZzoKICAgICBzZXRMb2NhdGlvbihsZWZ0LCB0b3ApIC0tIHNldCBwb3B1cCBs
b2NhdGlvbjogd2lsbCBiZSBwaXhlbHMgaWYgdW5pdHMgbm90IHNwZWNpZmllZAog
ICAgIHNldExlZnQobGVmdCkgLS0gc2V0IGxlZnQgbG9jYXRpb24KICAgICBzZXRU
b3AodG9wKSAgIC0tIHNldCB0b3AgbG9jYXRpb24KICAgICBzZXREaW1lbnNpb25z
KHdpZHRoLCBoZWlnaHQpIC0tIHNldCBwb3B1cCBkaW1lbnNpb25zOiB3aWxsIGJl
IHBpeGVscyBpZiB1bml0cyBub3Qgc3BlY2lmaWVkCiAgICAgc2V0QXV0b0NlbnRl
cih4LCB5KSAtLSB3aGF0IGRpbWVuc2lvbnMgdG8gYXV0by1jZW50ZXIKICAgICBj
ZW50ZXIoKSAtLSBjZW50ZXJzIHBvcHVwIG9uIHNjcmVlbgogICAgIGNlbnRlclgo
KSAtLSBjZW50ZXJzIHBvcHVwIGhvcml6b250YWxseQogICAgIGNlbnRlclkoKSAt
LSBjZW50ZXJzIHBvcHVwIHZlcnRpY2FsbHkKICAgICBzZXRGaXhlZFBvc2l0aW9u
KGZpeGVkKSAtLSBzaG91bGQgdGhlIHBvcHVwIHN0YXkgZml4ZWQgb24gdGhlIHBh
Z2Ugd2hlbiBpdCBzY3JvbGxzPwogICAgIGNlbnRlck9uV2lkZ2V0KHdpZGdldCkg
LS0gY2VudGVyIHBvcHVwIG9uIHRoaXMgd2lkZ2V0CiAgICAgc2V0QXV0b0NlbnRl
ckNhbGxiYWNrKGNhbGxiYWNrKSAtLSBjYWxscyBjYWxsYmFjayB3aXRoIHRoaXMg
SVBQVSBpbnN0YW5jZSBhcyBhIHBhcmFtZXRlcgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZm9yIGF1dG8tY2VudGVyaW5nLiBTb21lIGNv
bW1vbiBidWlsdC1pbiBjbGFzcyBtZXRob2RzCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB5b3UgY2FuIHVzZSBhcyBjYWxsYmFja3MgYXJl
OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBQVS5j
ZW50ZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQ
UFUuY2VudGVyWAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgSVBQVS5jZW50ZXJZCgogICAgIG1vdmVGb3J3YXJkKGFtb3VudCkgLS0gaW5j
cmVhc2VzIHRoZSB6SW5kZXggYnkgb25lIG9yIGFtb3VudCBpZiBzcGVjaWZpZWQK
ICAgICBtb3ZlQmFja3dhcmQoYW1vdW50KSAtLSBkZWNyZWFzZXMgdGhlIHpJbmRl
eCBieSBvbmUgb3IgYW1vdW50IGlmIHNwZWNpZmllZAoKICAgTW9kYWxpdHk6CiAg
ICAgc2V0Q2xpY2tUb0Nsb3NlKGNsaWNrVG9DbG9zZSkgLS0gaWYgY2xpY2tUb0Ns
b3NlIGlzIHRydWUsIGNsaWNraW5nIG91dHNpZGUgb2YgdGhlIHBvcHVwCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lsbCBjbG9zZSBpdAog
ICAgIHNldE1vZGFsKG1vZGFsaXR5KSAtLSBJZiBtb2RhbGl0eSBpcyB0cnVlLCB0
aGVuIHBvcHVwIHdpbGwgY2FwdHVyZSBhbGwgbW91c2UgZXZlbnRzCiAgICAgICAg
ICAgICAgICAgICAgIGFuZCBvcHRpb25hbGx5IGdyYXkgb3V0IHRoZSByZXN0IG9m
IHRoZSBwYWdlLiAob3ZlcnJpZGVzIGNsaWNrVG9DbG9zZSkKICAgICBzZXRPdmVy
bGF5VmlzaWJsZSh2aXNpYmxlKSAtLSBJZiB2aXNpYmxlIGlzIHRydWUsIHdoZW4g
dGhpcyBwb3B1cCBpcyBvbiB0aGUgcGFnZSBpdAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHdpbGwgZ3JheSBvdXQgdGhlIHJlc3Qgb2YgdGhlIHBh
Z2UgaWYgdGhpcyBpcyBtb2RhbAoKICAgQ2FsbGJhY2tzOgogICAgIHNldENhbmNl
bGxlZENhbGxiYWNrKGNhbGxiYWNrKSAtLSBjYWxsIHRoaXMgd2hlbiB0aGUgZGlh
bG9nIGlzIGNsb3NlZCB0aHJvdWdoIGNsaWNraW5nCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG91dHNpZGUsIHRpdGxlYmFyIGNsb3NlIGJ1
dHRvbiwgZXRjLi4uCiAgICAgc2V0SGlkZGVuQ2FsbGJhY2soY2FsbGJhY2spIC0t
IGNhbGxlZCB3aGVuIHRoZSBkaWFsb2cgaXMgY2xvc2VkIGluIGFueSBmYXNoaW9u
CgogICBGYWRpbmc6CiAgICAgc2V0RmFkZUluKGZhZGVJbikgLS0gc2V0IHdoZXRo
ZXIgb3Igbm90IHRvIGF1dG9tYXRpY2FsbHkgZmFkZSB0aGUgaXBwdSBpbgogICAg
IHNldEZhZGVPdXQoZmFkZU91dCkgLS0gc2V0IHdoZXRoZXIgb3Igbm90IHRvIGF1
dG9tYXRpY2FsbHkgZmFkZSB0aGUgaXBwdSBvdXQKICAgICBzZXRGYWRlU3BlZWQo
c2VjcykgLS0gc2V0cyBmYWRlIHNwZWVkCgogIENsYXNzIE1ldGhvZHM6CiAgIEhh
bmR5IGNhbGxiYWNrczoKICAgICBJUFBVLmNlbnRlcgogICAgIElQUFUuY2VudGVy
WAogICAgIElQUFUuY2VudGVyWQogICBCcm93c2VyIHRlc3Rpbmc6CiAgICAgSVBQ
VS5pc0lFKCkgLS0gaXMgdGhlIGJyb3dzZXIgaW50ZXJuZXQgZXhwbG9kZXI/CiAg
ICAgSVBQVS5pZVNhZmFyaSgpIC0tIGlzIHRoaXMgc2FmYXJpPwoKLy8vLy8vLy8v
Ly8vLy8vLy8vLy8KCgppcHB1LnNldE1vZGFsRGVuaWFsQ2FsbGJhY2soSVBQVS5j
c3NCb3JkZXJGbGFzaCk7CgoKICAgcHJpdmF0ZToKICAgIFByb3BlcnRpZXM6CiAg
ICAgZWxlIC0tIERPTSBub2RlIG9mIGRpdgogICAgIHNob3duIC0tIGJvb2xlYW47
IGlmIGVsZW1lbnQgaXMgaW4gRE9NCiAgICAgYXV0b0NlbnRlclggLS0gYm9vbGVh
bjsgYXV0by1jZW50ZXIgaG9yaXoKICAgICBhdXRvQ2VudGVyWSAtLSBib29sZWFu
OyBhdXRvLWNlbnRlciB2ZXJ0aWNhbAogICAgIGZpeGVkUG9zaXRpb24gLS0gYm9v
bGVhbjsgc3RheSBpbiBmaXhlZCBwb3NpdGlvbiB3aGVuIGJyb3dzZXIgc2Nyb2xs
cz8KICAgICB0aXRsZWJhciAtLSB0aXRsZWJhciBlbGVtZW50CiAgICAgdGl0bGUg
LS0gc3RyaW5nOyB0ZXh0IHRvIGdvIGluIHRpdGxlYmFyCiAgICAgc2hvd1RpdGxl
YmFyIC0tIGJvb2xlYW47IHdoZXRoZXIgb3Igbm90IHRvIHNob3cgdGl0bGViYXIK
ICAgICBjb250ZW50IC0tIERJViBjb250YWluaW5nIHVzZXIncyBzcGVjaWZpZWQg
Y29udGVudAogICAgIGNsaWNrVG9DbG9zZSAtLSBib29sZWFuOyBjbGlja2luZyBv
dXRzaWRlIHBvcHVwIHdpbGwgY2xvc2UgaXQKICAgICBjbGlja0hhbmRsZXJTZXR1
cCAtLSBib29sZWFuOyBoYXZlIHdlIHNldCB1cCB0aGUgY2xpY2sgaGFuZGxlcnM/
CiAgICAgZG9jT3ZlcmxheSAtLSBESVYgdGhhdCBvdmVybGF5cyB0aGUgZG9jdW1l
bnQgZm9yIGNhcHR1cmluZyBjbGlja3MKICAgICBtb2RhbCAtLSBib29sZWFuOyBj
YXB0dXJlIGFsbCBldmVudHMgYW5kIHByZXZlbnQgdXNlciBmcm9tIGRvaW5nIGFu
eXRoaW5nCiAgICAgICAgICAgICAgICAgICAgICAgdW50aWwgZGlhbG9nIGlzIGRp
c21pc3NlZAogICAgIHZpc2libGVPdmVybGF5IC0tIGJvb2xlYW47IG1ha2Ugb3Zl
cmxheSBzbGlnaHRseSBvcGFxdWUKICAgICBjbGlja0hhbmRsZXJGdW5jIC0tIGZ1
bmN0aW9uOyBmdW5jdGlvbiB0byBoYW5kbGUgZG9jdW1lbnQgY2xpY2tzCiAgICAg
cmVzaXplSGFuZGxlckZ1bmMgLS0gZnVuY3Rpb247IGZ1bmN0aW9uIHRvIGhhbmRs
ZSBkb2N1bWVudCByZXNpemluZwogICAgIGF1dG9DZW50ZXJDYWxsYmFjayAtLSBm
dW5jdGlvbjsgd2hhdCBjYWxsYmFjayB0byBjYWxsIGZvciBhdXRvLWNlbnRlcmlu
ZwogICAgIGNhbmNlbGxlZENhbGxiYWNrIC0tIGZ1bmN0aW9uOyBjYWxsZWQgd2hl
biBkaWFsb2cgaXMgY2FuY2VsbGVkCiAgICAgc2V0QXV0b0hpZGVTZWxlY3RzIC0t
IGJvb2xlYW47IGF1dG9oaWRlIGFsbCBTRUxFQ1QgZWxlbWVudHMgb24gdGhlIHBh
Z2Ugd2hlbiBwb3B1cCBpcyB2aXNpYmxlCiAgICAgaGlkZGVuU2VsZWN0cyAtLSBh
cnJheTsgU0VMRUNUIGVsZW1lbnRzIHRoYXQgaGF2ZSBiZWVuIGhpZGRlbgogICAg
IGhpZGRlbkNhbGxiYWNrIC0tIGZ1bmNpdG9uOyBjYWxsZWQgd2hlbiBkaWFsb2cg
aXMgaGlkZGVuCiAgICAgZmFkZUluLCBmYWRlT3V0LCBmYWRlU3BlZWQgLS0gZmFk
aW5nIHNldHRpbmdzCiAgICAgZmFkZU1vZGUgLS0gY3VycmVudCBmYWRpbmcgbW9k
ZSAoaW4sIG91dCkgaWYgdGhlcmUgaXMgZmFkaW5nIGdvaW5nIG9uCgogICAgTWV0
aG9kczoKICAgICB1cGRhdGVUaXRsZWJhcigpIC0tIGNyZWF0ZSB0aXRsZWJhciBp
ZiBpdCBkb2Vzbid0IGV4aXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgaGlk
ZSBpdCBpZiB0aXRsZWJhciA9PSBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgIHVwZGF0ZSB0aXRsZWJhciB0ZXh0CiAgICAgdXBkYXRlQ29udGVudCgpIC0t
IG1ha2VzIHN1cmUgYWxsIGN1cnJlbnRseSBzcGVjaWZpZWQgcHJvcGVydGllcyBh
cmUgYXBwbGllZAogICAgIHNldHVwQ2xpY2tDYXB0dXJlKCkgLS0gaWYgbW9kYWws
IGNyZWF0ZSBkb2N1bWVudC1zaXplZCBkaXYgb3ZlcmxheSB0byBjYXB0dXJlIGNs
aWNrIGV2ZW50cwogICAgICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXJ3aXNl
IGluc3RhbGwgZG9jdW1lbnQgb25jbGljayBoYW5kbGVyCiAgICAgcmVtb3ZlQ2xp
Y2tIYW5kbGVycygpIC0tIHJlbW92ZSBvdmVybGF5LCBldmVudCBoYW5kbGVycwog
ICAgIGNsaWNrSGFuZGxlcigpIC0tIGV2ZW50IGhhbmRsZXIgZm9yIGNsaWNrcwog
ICAgIHVwZGF0ZU92ZXJsYXkoKSAtLSBpZiB3ZSBoYXZlIGFuIG92ZXJsYXksIG1h
a2Ugc3VyZSBpdCdzIHdoZXJlIGl0IHNob3VsZCBiZSBhbmQgKGluKXZpc2libGUK
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgaXQgc2hvdWxkIGJlCiAgICAgYXV0
b0NlbnRlcigpIC0tIGNlbnRlcnMgcG9wdXAgb24gc2NyZWVuIGFjY29yZGluZyB0
byBhdXRvQ2VudGVyWCBhbmQgYXV0b0NlbnRlclkKICAgICBoaWRlU2VsZWN0cygp
IC0tIGhpZGUgYWxsIHNlbGVjdCBlbGVtZW50IG9uIHBhZ2UKICAgICBzaG93U2Vs
ZWN0cygpIC0tIHNob3cgYWxsIHNlbGVjdHMKICAgICBfaGlkZSAoKSAtLSBhY3R1
YWxseSBoaWRlcyBldmVyeXRoaW5nLCBjYWxsZWQgYnkgaGlkZSgpLCB3aGljaCBk
b2VzIGZhZGluZyBpZiBuZWNlc3NhcnkKKi8KCi8vIHRoaXMgYmVsb25ncyBzb21l
d2hlcmUgZWxzZToKZnVuY3Rpb24gY2hhbmdlT3BhYyhpZCwgb3BhY2l0eSkgewog
ICAgdmFyIGUgPSAgJChpZCk7CiAgICBpZiAoZSAmJiBlLnN0eWxlKSB7CiAgICAg
ICAgdmFyIG9iamVjdCA9IGUuc3R5bGU7CiAgICAgICAgaWYgKG9iamVjdCkgewog
ICAgICAgICAgICAvL3JlZHVjZSBmbGlja2VyCiAgICAgICAgICAgIGlmIChJUFBV
LmlzU2FmYXJpKCkgJiYgb3BhY2l0eSA+PSAxMDApCiAgICAgICAgICAgICAgICBv
cGFjaXR5ID0gOTkuOTk7CgogICAgICAgICAgICAvLyBJRQogICAgICAgICAgICBp
ZiAob2JqZWN0LmZpbHRlcnMpCiAgICAgICAgICAgICAgICBvYmplY3QuZmlsdGVy
cy5hbHBoYS5vcGFjaXR5ID0gb3BhY2l0eSAqIDEwMDsKCiAgICAgICAgICAgIG9i
amVjdC5vcGFjaXR5ID0gb3BhY2l0eTsKICAgICAgICB9CiAgICB9Cn0KCklQUFUg
PSBuZXcgQ2xhc3MoIE9iamVjdCwgewogIHNldEZpeGVkUG9zaXRpb246IGZ1bmN0
aW9uIChmaXhlZCkgewogICAgLy8gbm8gZml4ZWQgcG9zaXRpb24gZm9yIElFCiAg
ICBpZiAoSVBQVS5pc0lFKCkpCiAgICAgIHJldHVybjsKCiAgICB0aGlzLmZpeGVk
UG9zaXRpb24gPSBmaXhlZDsKICAgIHRoaXMudXBkYXRlQ29udGVudCgpOwogIH0s
CgogIGNsaWNrSGFuZGxlciA6IGZ1bmN0aW9uIChldnQpIHsKICAgIGlmICghdGhp
cy5jbGlja1RvQ2xvc2UpIHJldHVybjsKICAgIGlmICghdGhpcy52aXNpYmxlKCkp
IHJldHVybjsKCiAgICBldnQgPSBFdmVudC5wcmVwKGV2dCk7CiAgICB2YXIgdGFy
Z2V0ID0gZXZ0LnRhcmdldDsKICAgIC8vIGRvbid0IGRvIGFueXRoaW5nIGlmIGlu
c2lkZSB0aGUgcG9wdXAKICAgIGlmIChET00uZ2V0QW5jZXN0b3JzQnlDbGFzc05h
bWUodGFyZ2V0LCAiaXBwdSIsIHRydWUpLmxlbmd0aCA+IDApIHJldHVybjsKICAg
IHRoaXMuY2FuY2VsKCk7CiAgfSwKCiAgc2V0Q2FuY2VsbGVkQ2FsbGJhY2sgOiBm
dW5jdGlvbiAoY2FsbGJhY2spIHsKICAgIHRoaXMuY2FuY2VsbGVkQ2FsbGJhY2sg
PSBjYWxsYmFjazsKICB9LAoKICBjYW5jZWwgOiBmdW5jdGlvbiAoKSB7CiAgICBp
ZiAodGhpcy5jYW5jZWxsZWRDYWxsYmFjaykKICAgICAgdGhpcy5jYW5jZWxsZWRD
YWxsYmFjaygpOwogICAgdGhpcy5oaWRlKCk7CiAgfSwKCiAgc2V0SGlkZGVuQ2Fs
bGJhY2s6IGZ1bmN0aW9uIChjYWxsYmFjaykgewogICAgdGhpcy5oaWRkZW5DYWxs
YmFjayA9IGNhbGxiYWNrOwogIH0sCgogIHNldHVwQ2xpY2tDYXB0dXJlIDogZnVu
Y3Rpb24gKCkgewogICAgaWYgKCF0aGlzLnZpc2libGUoKSB8fCB0aGlzLmNsaWNr
SGFuZGxlclNldHVwKXtyZXR1cm47fQogICAgaWYgKCF0aGlzLmNsaWNrVG9DbG9z
ZSAmJiAhdGhpcy5tb2RhbCkge3JldHVybjt9CgogICAgdGhpcy5jbGlja0hhbmRs
ZXJGdW5jID0gdGhpcy5jbGlja0hhbmRsZXIuYmluZEV2ZW50TGlzdGVuZXIodGhp
cyk7CgogICAgaWYgKHRoaXMubW9kYWwpIHsKICAgICAgLy8gY3JlYXRlIGRvY3Vt
ZW50LXNpemVkIGRpdiB0byBjYXB0dXJlIGV2ZW50cwogICAgICBpZiAodGhpcy5v
dmVybGF5KSByZXR1cm47IC8vIHd0Zj8gc2hvdWxkbid0IGV4aXN0IHlldAogICAg
ICB0aGlzLm92ZXJsYXkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsK
ICAgICAgdGhpcy5vdmVybGF5LnN0eWxlLmxlZnQgPSAiMHB4IjsKICAgICAgdGhp
cy5vdmVybGF5LnN0eWxlLnRvcCA9ICIwcHgiOwogICAgICB0aGlzLm92ZXJsYXku
c3R5bGUubWFyZ2luID0gIjBweCI7CiAgICAgIHRoaXMub3ZlcmxheS5zdHlsZS5w
YWRkaW5nID0gIjBweCI7CiAgICAgIAogICAgICB0aGlzLm92ZXJsYXkuc3R5bGUu
YmFja2dyb3VuZENvbG9yID0gIiMwMDAwMDAiOwogICAgICB0aGlzLm92ZXJsYXku
c3R5bGUuekluZGV4PSI5MDAiOwogICAgICBpZiAoSVBQVS5pc0lFKCkpewogICAg
ICAJCXRoaXMub3ZlcmxheS5zdHlsZS5maWx0ZXI9InByb2dpZDpEWEltYWdlVHJh
bnNmb3JtLk1pY3Jvc29mdC5BbHBoYShvcGFjaXR5PTUwKSI7CgkJdGhpcy5vdmVy
bGF5LnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSI7CgkJdGhpcy5vdmVybGF5LnN0
eWxlLndpZHRoPWRvY3VtZW50LmJvZHkuc2Nyb2xsV2lkdGg7CgkJdGhpcy5vdmVy
bGF5LnN0eWxlLmhlaWdodD1kb2N1bWVudC5ib2R5LnNjcm9sbEhlaWdodDsKICAg
ICAgfQogICAgICBlbHNlewogICAgICAJdGhpcy5vdmVybGF5LnN0eWxlLnBvc2l0
aW9uID0gImZpeGVkIjsKICAgICAgfQoKICAgICAgdGhpcy5lbGUucGFyZW50Tm9k
ZS5pbnNlcnRCZWZvcmUodGhpcy5vdmVybGF5LCB0aGlzLmVsZSk7CiAgICAgIHRo
aXMudXBkYXRlT3ZlcmxheSgpOwoKICAgICAgRE9NLmFkZEV2ZW50TGlzdGVuZXIo
dGhpcy5vdmVybGF5LCAiY2xpY2siLCB0aGlzLmNsaWNrSGFuZGxlckZ1bmMpOwog
ICAgfSBlbHNlIHsKICAgICAgLy8gc2ltcGxlIGRvY3VtZW50IG9uY2xpY2sgaGFu
ZGxlcgogICAgICBET00uYWRkRXZlbnRMaXN0ZW5lcihkb2N1bWVudCwgImNsaWNr
IiwgdGhpcy5jbGlja0hhbmRsZXJGdW5jKTsKICAgIH0KCiAgICB0aGlzLmNsaWNr
SGFuZGxlclNldHVwID0gdHJ1ZTsKICB9LAoKICB1cGRhdGVPdmVybGF5IDogZnVu
Y3Rpb24gKCkgewogICAgaWYgKHRoaXMub3ZlcmxheSkgewogICAgICB2YXIgY2Qg
PSBET00uZ2V0Q2xpZW50RGltZW5zaW9ucygpOwogICAgICB0aGlzLm92ZXJsYXku
c3R5bGUud2lkdGggPSAoY2QueCAtIDEpICsgInB4IjsKICAgICAgaWYoIUlQUFUu
aXNJRSgpKXsKICAgICAgCXRoaXMub3ZlcmxheS5zdHlsZS5oZWlnaHQgPSAoY2Qu
eSAtIDEpICsgInB4IjsKICAgICAgfQkKICAgICAgaWYgKHRoaXMudmlzaWJsZU92
ZXJsYXkpIHsKICAgICAgICB0aGlzLm92ZXJsYXkuYmFja2dyb3VuZENvbG9yID0g
IiMwMDAwMDAiOwogICAgICAgIGNoYW5nZU9wYWModGhpcy5vdmVybGF5LCAwLjUw
KTsKICAgICAgfSBlbHNlIHsKICAgICAgICB0aGlzLm92ZXJsYXkuYmFja2dyb3Vu
ZENvbG9yID0gIiNGRkZGRkYiOwogICAgICAgIGNoYW5nZU9wYWModGhpcy5vdmVy
bGF5LCAwLjApOwogICAgICB9CiAgICB9CiAgfSwKCiAgcmVzaXplSGFuZGxlciA6
IGZ1bmN0aW9uIChldnQpIHsKICAgIHRoaXMudXBkYXRlQ29udGVudCgpOwogIH0s
CgogIHJlbW92ZUNsaWNrSGFuZGxlcnMgOiBmdW5jdGlvbiAoKSB7CiAgICBpZiAo
IXRoaXMuY2xpY2tIYW5kbGVyU2V0dXApIHJldHVybjsKCiAgICB2YXIgbXlzZWxm
ID0gdGhpczsKICAgIHZhciBoYW5kbGVyRnVuYyA9IGZ1bmN0aW9uIChldnQpIHsK
ICAgICAgbXlzZWxmLmNsaWNrSGFuZGxlcihldnQpOwogICAgfTsKCiAgICBET00u
cmVtb3ZlRXZlbnRMaXN0ZW5lcihkb2N1bWVudCwgImNsaWNrIiwgdGhpcy5jbGlj
a0hhbmRsZXJGdW5jLCBmYWxzZSk7CgogICAgaWYgKHRoaXMub3ZlcmxheSkgewog
ICAgICBET00ucmVtb3ZlRXZlbnRMaXN0ZW5lcih0aGlzLm92ZXJsYXksICJjbGlj
ayIsIHRoaXMuY2xpY2tIYW5kbGVyRnVuYywgdHJ1ZSk7CiAgICAgIHRoaXMub3Zl
cmxheS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMub3ZlcmxheSk7CiAgICAg
IHRoaXMub3ZlcmxheSA9IHVuZGVmaW5lZDsKICAgIH0KCiAgICB0aGlzLmNsaWNr
SGFuZGxlckZ1bmMgPSB1bmRlZmluZWQ7CiAgICB0aGlzLmNsaWNrSGFuZGxlclNl
dHVwID0gZmFsc2U7CiAgfSwKCiAgc2V0Q2xpY2tUb0Nsb3NlIDogZnVuY3Rpb24g
KGNsaWNrVG9DbG9zZSkgewogICAgdGhpcy5jbGlja1RvQ2xvc2UgPSBjbGlja1Rv
Q2xvc2U7CgogICAgaWYgKCF0aGlzLmNsaWNrSGFuZGxlclNldHVwICYmIGNsaWNr
VG9DbG9zZSAmJiB0aGlzLnZpc2libGUoKSkgewogICAgICAvLyBwb3B1cCBpcyBh
bHJlYWR5IHZpc2libGUsIG5lZWQgdG8gc2V0IHVwIGNsaWNrIGhhbmRsZXIKICAg
ICAgdmFyIHNldHVwQ2xpY2tDYXB0dXJlQ2FsbGJhY2sgPSB0aGlzLnNldHVwQ2xp
Y2tDYXB0dXJlLmJpbmQodGhpcyk7CiAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KHNl
dHVwQ2xpY2tDYXB0dXJlQ2FsbGJhY2ssIDEwMCk7CiAgICB9IGVsc2UgaWYgKCFj
bGlja1RvQ2xvc2UgJiYgdGhpcy5jbGlja0hhbmRsZXJTZXR1cCkgewogICAgICB0
aGlzLnJlbW92ZUNsaWNrSGFuZGxlcnMoKTsKICAgIH0KCiAgICB0aGlzLnVwZGF0
ZUNvbnRlbnQoKTsKICB9LAoKICBzZXRNb2RhbCA6IGZ1bmN0aW9uIChtb2RhbCkg
ewogICAgdmFyIGNoYW5nZWQgPSAodGhpcy5tb2RhbCA9PSBtb2RhbCk7CgogICAg
Ly8gaWYgaXQncyBtb2RhbCwgd2UgZG9uJ3Qgd2FudCBjbGljay10by1jbG9zZQog
ICAgaWYgKG1vZGFsKQogICAgICB0aGlzLnNldENsaWNrVG9DbG9zZShmYWxzZSk7
CgogICAgdGhpcy5tb2RhbCA9IG1vZGFsOwogICAgaWYgKGNoYW5nZWQpIHsKICAg
ICAgdGhpcy5yZW1vdmVDbGlja0hhbmRsZXJzKCk7CiAgICAgIHRoaXMudXBkYXRl
Q29udGVudCgpOwogICAgfQogIH0sCgogIHNldE92ZXJsYXlWaXNpYmxlIDogZnVu
Y3Rpb24gKHZpcykgewogICAgdGhpcy52aXNpYmxlT3ZlcmxheSA9IHZpczsKICAg
IHRoaXMudXBkYXRlQ29udGVudCgpOwogIH0sCgogIHVwZGF0ZUNvbnRlbnQgOiBm
dW5jdGlvbiAoKSB7CiAgICB0aGlzLmF1dG9DZW50ZXIoKTsKICAgIHRoaXMudXBk
YXRlVGl0bGViYXIoKTsKICAgIHRoaXMudXBkYXRlT3ZlcmxheSgpOwogICAgaWYg
KHRoaXMudGl0bGViYXIpCiAgICAgIHRoaXMuc2V0VGl0bGViYXJDbGFzcyh0aGlz
LnRpdGxlYmFyLmNsYXNzTmFtZSk7CgogICAgdmFyIHNldHVwQ2xpY2tDYXB0dXJl
Q2FsbGJhY2sgPSB0aGlzLnNldHVwQ2xpY2tDYXB0dXJlLmJpbmQodGhpcyk7CiAg
ICB3aW5kb3cuc2V0VGltZW91dChzZXR1cENsaWNrQ2FwdHVyZUNhbGxiYWNrLCAx
MDApOwoKICAgIGlmICh0aGlzLmZpeGVkUG9zaXRpb24gJiYgdGhpcy5lbGUuc3R5
bGUucG9zaXRpb24gIT0gImZpeGVkIikKICAgICAgdGhpcy5lbGUuc3R5bGUucG9z
aXRpb24gPSAiZml4ZWQiOwogICAgZWxzZSBpZiAoIXRoaXMuZml4ZWRQb3NpdGlv
biAmJiB0aGlzLmVsZS5zdHlsZS5wb3NpdGlvbiA9PSAiZml4ZWQiKQogICAgICB0
aGlzLmVsZS5zdHlsZS5wb3NpdGlvbiA9ICJhYnNvbHV0ZSI7CiAgfSwKCiAgZ2V0
VGl0bGViYXJFbGVtZW50IDogZnVuY3Rpb24gKCkgewogICAgcmV0dXJuIHRoaXMu
dGl0bGViYXI7CiAgfSwKCiAgc2V0VGl0bGViYXJDbGFzcyA6IGZ1bmN0aW9uIChj
bGFzc05hbWUpIHsKICAgIGlmICh0aGlzLnRpdGxlYmFyKQogICAgICB0aGlzLnRp
dGxlYmFyLmNsYXNzTmFtZSA9IGNsYXNzTmFtZTsKICB9LAoKICBzZXRPdmVyZmxv
dyA6IGZ1bmN0aW9uIChvdmVyZmxvdykgewogICAgaWYgKHRoaXMuZWxlKQogICAg
ICB0aGlzLmVsZS5zdHlsZS5vdmVyZmxvdyA9IG92ZXJmbG93OwogIH0sCgogIHZp
c2libGUgOiBmdW5jdGlvbiAoKSB7CiAgICByZXR1cm4gdGhpcy5zaG93bjsKICB9
LAoKICBzZXRUaXRsZWJhciA6IGZ1bmN0aW9uIChzaG93KSB7CiAgICB0aGlzLnNo
b3dUaXRsZWJhciA9IHNob3c7CgogICAgaWYgKHNob3cpIHsKICAgICAgaWYgKCF0
aGlzLnRpdGxlYmFyKSB7CiAgICAgICAgLy8gdGl0bGViYXIgaGFzbid0IGJlZW4g
Y3JlYXRlZC4gQ3JlYXRlIGl0LgogICAgICAgIHZhciB0YmFyID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgICAgaWYgKCF0YmFyKSByZXR1cm47
CiAgICAgICAgdGJhci5zdHlsZS53aWR0aCA9ICIxMDAlIjsKCiAgICAgICAgaWYg
KHRoaXMudGl0bGUpIHRiYXIuaW5uZXJIVE1MID0gdGhpcy50aXRsZTsKICAgICAg
ICB0aGlzLmVsZS5pbnNlcnRCZWZvcmUodGJhciwgdGhpcy5jb250ZW50KTsKICAg
ICAgICB0aGlzLnRpdGxlYmFyID0gdGJhcjsKCiAgICAgIH0KICAgIH0gZWxzZSBp
ZiAodGhpcy50aXRsZWJhcikgewogICAgICB0aGlzLmVsZS5yZW1vdmVDaGlsZCh0
aGlzLnRpdGxlYmFyKTsKICAgICAgdGhpcy50aXRsZWJhciA9IGZhbHNlOwogICAg
fQogIH0sCgogIHNldFRpdGxlIDogZnVuY3Rpb24gKHRpdGxlKSB7CiAgICB0aGlz
LnRpdGxlID0gdGl0bGU7CiAgICB0aGlzLnVwZGF0ZVRpdGxlYmFyKCk7CiAgfSwK
CiAgdXBkYXRlVGl0bGViYXIgOiBmdW5jdGlvbigpIHsKICAgIGlmICh0aGlzLnNo
b3dUaXRsZWJhciAmJiB0aGlzLnRpdGxlYmFyICYmIHRoaXMudGl0bGUgIT0gdGhp
cy50aXRsZWJhci5pbm5lckhUTUwpIHsKICAgICAgdGhpcy50aXRsZWJhci5pbm5l
ckhUTUwgPSB0aGlzLnRpdGxlOwogICAgfQogIH0sCgogIGFkZENsYXNzIDogZnVu
Y3Rpb24gKGNsYXNzTmFtZSkgewogICAgRE9NLmFkZENsYXNzTmFtZSh0aGlzLmVs
ZSwgY2xhc3NOYW1lKTsKICB9LAoKICByZW1vdmVDbGFzcyA6IGZ1bmN0aW9uIChj
bGFzc05hbWUpIHsKICAgIERPTS5yZW1vdmVDbGFzc05hbWUodGhpcy5lbGUsIGNs
YXNzTmFtZSk7CiAgfSwKCiAgc2V0QXV0b0NlbnRlckNhbGxiYWNrIDogZnVuY3Rp
b24gKGNhbGxiYWNrKSB7CiAgICB0aGlzLmF1dG9DZW50ZXJDYWxsYmFjayA9IGNh
bGxiYWNrOwogIH0sCgogIGF1dG9DZW50ZXIgOiBmdW5jdGlvbiAoKSB7CiAgICBp
ZiAoIXRoaXMudmlzaWJsZSB8fCAhdGhpcy52aXNpYmxlKCkpIHJldHVybjsKCiAg
ICBpZiAodGhpcy5hdXRvQ2VudGVyQ2FsbGJhY2spIHsKICAgICAgdGhpcy5hdXRv
Q2VudGVyQ2FsbGJhY2sodGhpcyk7CiAgICAgIHJldHVybjsKICAgIH0KCiAgICBp
ZiAodGhpcy5hdXRvQ2VudGVyWCkKICAgICAgdGhpcy5jZW50ZXJYKCk7CgogICAg
aWYgKHRoaXMuYXV0b0NlbnRlclkpCiAgICAgIHRoaXMuY2VudGVyWSgpOwogIH0s
CgogIGNlbnRlciA6IGZ1bmN0aW9uICgpIHsKICAgIHRoaXMuY2VudGVyWCgpOwog
ICAgdGhpcy5jZW50ZXJZKCk7CiAgfSwKCiAgY2VudGVyT25XaWRnZXQgOiBmdW5j
dGlvbiAod2lkZ2V0LCBvZmZzZXRUb3AsIG9mZnNldExlZnQpIHsKICAgICAgICBv
ZmZzZXRUb3AgPSBvZmZzZXRUb3AgfHwgMDsKICAgICAgICBvZmZzZXRMZWZ0ID0g
b2Zmc2V0TGVmdCB8fCAwOwogICAgICAgIHRoaXMuc2V0QXV0b0NlbnRlcihmYWxz
ZSwgZmFsc2UpOwogICAgICAgIHRoaXMuc2V0QXV0b0NlbnRlckNhbGxiYWNrKG51
bGwpOwogIHZhciB3ZCA9IERPTS5nZXRBYnNvbHV0ZURpbWVuc2lvbnMod2lkZ2V0
KTsKICAgIHZhciBlZCA9IERPTS5nZXRBYnNvbHV0ZURpbWVuc2lvbnModGhpcy5l
bGUpOwogICAgdmFyIG5ld2xlZnQgPSAod2QuYWJzb2x1dGVSaWdodCAtIHdkLm9m
ZnNldFdpZHRoIC8gMiAtIGVkLm9mZnNldFdpZHRoIC8gMikgKyBvZmZzZXRMZWZ0
OwogICAgdmFyIG5ld3RvcCA9ICh3ZC5hYnNvbHV0ZUJvdHRvbSAtIHdkLm9mZnNl
dEhlaWdodCAvIDIgLSBlZC5vZmZzZXRIZWlnaHQgLyAyKSArIG9mZnNldFRvcDsK
CiAgICAgICAgbmV3bGVmdCA9IG5ld2xlZnQgPCAwID8gMCA6IG5ld2xlZnQ7CiAg
ICAgICAgbmV3dG9wICA9IG5ld3RvcCAgPCAwID8gMCA6IG5ld3RvcDsKICAgIERP
TS5zZXRMZWZ0KHRoaXMuZWxlLCBuZXdsZWZ0KTsKICAgIERPTS5zZXRUb3AodGhp
cy5lbGUsIG5ld3RvcCk7CiAgfSwKCiAgY2VudGVyWCA6IGZ1bmN0aW9uICgpIHsK
ICAgIGlmICghdGhpcy52aXNpYmxlIHx8ICF0aGlzLnZpc2libGUoKSkgcmV0dXJu
OwoKICAgIHZhciBjZCA9IERPTS5nZXRDbGllbnREaW1lbnNpb25zKCk7CiAgICB2
YXIgbmV3bGVmdCA9IGNkLnggLyAyIC0gRE9NLmdldERpbWVuc2lvbnModGhpcy5l
bGUpLm9mZnNldFdpZHRoIC8gMjsKCiAgICAvLyBJZiBub3QgZml4ZWQgcG9zaXRp
b24sIGNlbnRlciByZWxhdGl2ZSB0byB0aGUgbGVmdCBvZiB0aGUgcGFnZQogICAg
aWYgKCF0aGlzLmZpeGVkUG9zaXRpb24pIHsKICAgICAgICB2YXIgd2QgPSBET00u
Z2V0V2luZG93U2Nyb2xsKCk7CiAgICAgICAgbmV3bGVmdCArPSB3ZC5sZWZ0Owog
ICAgfQoKICAgRE9NLnNldExlZnQodGhpcy5lbGUsIG5ld2xlZnQpOwogIH0sCgog
IGNlbnRlclkgOiBmdW5jdGlvbiAoKSB7CiAgICBpZiAoIXRoaXMudmlzaWJsZSB8
fCAhdGhpcy52aXNpYmxlKCkpIHJldHVybjsKCiAgICB2YXIgY2QgPSBET00uZ2V0
Q2xpZW50RGltZW5zaW9ucygpOwogICAgdmFyIG5ld3RvcCA9IGNkLnkgLyAyIC0g
RE9NLmdldERpbWVuc2lvbnModGhpcy5lbGUpLm9mZnNldEhlaWdodCAvIDI7Cgog
ICAgLy8gSWYgbm90IGZpeGVkIHBvc2l0aW9uLCBjZW50ZXIgcmVsYXRpdmUgdG8g
dGhlIHRvcCBvZiB0aGUgcGFnZQogICAgaWYgKCF0aGlzLmZpeGVkUG9zaXRpb24p
IHsKICAgICAgICB2YXIgd2QgPSBET00uZ2V0V2luZG93U2Nyb2xsKCk7CiAgICAg
ICAgbmV3dG9wICs9IHdkLnRvcDsKICAgIH0KCiAgICBET00uc2V0VG9wKHRoaXMu
ZWxlLCBuZXd0b3ApOwogIH0sCgogIHNldEF1dG9DZW50ZXIgOiBmdW5jdGlvbiAo
YXV0b0NlbnRlclgsIGF1dG9DZW50ZXJZKSB7CiAgICB0aGlzLmF1dG9DZW50ZXJY
ID0gYXV0b0NlbnRlclggfHwgZmFsc2U7CiAgICB0aGlzLmF1dG9DZW50ZXJZID0g
YXV0b0NlbnRlclkgfHwgZmFsc2U7CgogICAgaWYgKCFhdXRvQ2VudGVyWCAmJiAh
YXV0b0NlbnRlclkpIHsKICAgICAgICB0aGlzLnNldEF1dG9DZW50ZXJDYWxsYmFj
ayhudWxsKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgdGhpcy5hdXRvQ2Vu
dGVyKCk7CiAgfSwKCiAgc2V0RGltZW5zaW9ucyA6IGZ1bmN0aW9uICh3aWR0aCwg
aGVpZ2h0KSB7CiAgICB3aWR0aCA9IHdpZHRoICsgIiI7CiAgICBoZWlnaHQgPSBo
ZWlnaHQgKyAiIjsKICAgIGlmICh3aWR0aC5tYXRjaCgvXlxkKyQvKSkgd2lkdGgg
Kz0gInB4IjsKICAgIGlmIChoZWlnaHQubWF0Y2goL15cZCskLykpIGhlaWdodCAr
PSAicHgiOwoKICAgIHRoaXMuZWxlLnN0eWxlLndpZHRoICA9IHdpZHRoOwogICAg
dGhpcy5lbGUuc3R5bGUuaGVpZ2h0ID0gaGVpZ2h0OwogIH0sCgogIG1vdmVGb3J3
YXJkIDogZnVuY3Rpb24gKGhvd011Y2gpIHsKICAgICAgaWYgKCFob3dNdWNoKSBo
b3dNdWNoID0gMTsKICAgICAgaWYgKCEgdGhpcy5lbGUpIHJldHVybjsKCiAgICAg
IHRoaXMuZWxlLnN0eWxlLnpJbmRleCArPSBob3dNdWNoOwogIH0sCgogIG1vdmVC
YWNrd2FyZCA6IGZ1bmN0aW9uIChob3dNdWNoKSB7CiAgICAgIGlmICghaG93TXVj
aCkgaG93TXVjaCA9IDE7CiAgICAgIGlmICghIHRoaXMuZWxlKSByZXR1cm47Cgog
ICAgICB0aGlzLmVsZS5zdHlsZS56SW5kZXggLT0gaG93TXVjaDsKICB9LAoKICBz
ZXRMb2NhdGlvbiA6IGZ1bmN0aW9uIChsZWZ0LCB0b3ApIHsKICAgICAgdGhpcy5z
ZXRMZWZ0KGxlZnQpOwogICAgICB0aGlzLnNldFRvcCh0b3ApOwogIH0sCgogIHNl
dFRvcCA6IGZ1bmN0aW9uICh0b3ApIHsKICAgIHRvcCA9IHRvcCArICIiOwogICAg
aWYgKHRvcC5tYXRjaCgvXlxkKyQvKSkgdG9wICs9ICJweCI7CiAgICB0aGlzLmVs
ZS5zdHlsZS50b3AgPSB0b3A7CiAgfSwKCiAgc2V0TGVmdCA6IGZ1bmN0aW9uIChs
ZWZ0KSB7CiAgICBsZWZ0ID0gbGVmdCArICIiOwogICAgaWYgKGxlZnQubWF0Y2go
L15cZCskLykpIGxlZnQgKz0gInB4IjsKICAgIHRoaXMuZWxlLnN0eWxlLmxlZnQg
PSBsZWZ0OwogIH0sCgogIGdldEVsZW1lbnQgOiBmdW5jdGlvbiAoKSB7CiAgICBy
ZXR1cm4gdGhpcy5lbGU7CiAgfSwKCiAgc2V0Q29udGVudCA6IGZ1bmN0aW9uICho
dG1sKSB7CiAgICB0aGlzLmNvbnRlbnQuaW5uZXJIVE1MID0gaHRtbDsKICB9LAoK
ICBzZXRDb250ZW50RWxlbWVudCA6IGZ1bmN0aW9uIChlbGVtZW50KSB7CiAgICAg
IC8vIHJlbW92ZSBjaGlsZCBub2RlcwogICAgICB3aGlsZSAodGhpcy5jb250ZW50
LmZpcnN0Q2hpbGQpIHsKICAgICAgICAgIHRoaXMuY29udGVudC5yZW1vdmVDaGls
ZCh0aGlzLmNvbnRlbnQuZmlyc3RDaGlsZCk7CiAgICAgIH07CgogICAgdGhpcy5j
b250ZW50LmFwcGVuZENoaWxkKGVsZW1lbnQpOwogIH0sCgogIHNldEZhZGVJbiA6
IGZ1bmN0aW9uIChmYWRlSW4pIHsKICAgICAgdGhpcy5mYWRlSW4gPSBmYWRlSW47
CiAgfSwKCiAgc2V0RmFkZU91dCA6IGZ1bmN0aW9uIChmYWRlT3V0KSB7CiAgICAg
IHRoaXMuZmFkZU91dCA9IGZhZGVPdXQ7CiAgfSwKCiAgc2V0RmFkZVNwZWVkIDog
ZnVuY3Rpb24gKGZhZGVTcGVlZCkgewogICAgICB0aGlzLmZhZGVTcGVlZCA9IGZh
ZGVTcGVlZDsKICB9LAoKICBzaG93IDogZnVuY3Rpb24gKCkgewogICAgdGhpcy5z
aG93biA9IHRydWU7CgogICAgaWYgKHRoaXMuZmFkZUluKSB7CiAgICAgICAgdmFy
IG9wcCA9IDAuMDE7CgogICAgICAgIGNoYW5nZU9wYWModGhpcy5lbGUsIG9wcCk7
CiAgICB9CgogICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0aGlzLmVsZSk7
CiAgICB0aGlzLmVsZS5zdHlsZS5wb3NpdGlvbiA9ICJhYnNvbHV0ZSI7CiAgICBp
ZiAodGhpcy5hdXRvQ2VudGVyWCB8fCB0aGlzLmF1dG9DZW50ZXJZKSB0aGlzLmNl
bnRlcigpOwoKICAgIHRoaXMudXBkYXRlQ29udGVudCgpOwoKICAgIGlmICghdGhp
cy5yZXNpemVIYW5kbGVyRnVuYykgewogICAgICB0aGlzLnJlc2l6ZUhhbmRsZXJG
dW5jID0gdGhpcy5yZXNpemVIYW5kbGVyLmJpbmRFdmVudExpc3RlbmVyKHRoaXMp
OwogICAgICBET00uYWRkRXZlbnRMaXN0ZW5lcih3aW5kb3csICJyZXNpemUiLCB0
aGlzLnJlc2l6ZUhhbmRsZXJGdW5jLCBmYWxzZSk7CiAgICB9CgogICAgaWYgKHRo
aXMuZmFkZUluKQogICAgICAgIHRoaXMuZmFkZSgiaW4iKTsKCiAgICB0aGlzLmhp
ZGVTZWxlY3RzKCk7CiAgfSwKCiAgZmFkZSA6IGZ1bmN0aW9uIChtb2RlLCBjYWxs
YmFjaykgewogICAgICB2YXIgb3BwOwogICAgICB2YXIgZGVsdGE7CgogICAgICB2
YXIgc3RlcHMgPSAxMC4wOwoKICAgICAgaWYgKG1vZGUgPT0gImluIikgewogICAg
ICAgICAgZGVsdGEgPSAxIC8gc3RlcHM7CiAgICAgICAgICBvcHAgPSAwLjE7CiAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICBpZiAodGhpcy5lbGUuc3R5bGUub3BhY2l0
eSkKICAgICAgICAgIG9wcCA9IGZpbml0ZUZsb2F0KHRoaXMuZWxlLnN0eWxlLm9w
YWNpdHkpOwogICAgICAgICAgZWxzZQogICAgICAgICAgb3BwID0gMC45OTsKCiAg
ICAgICAgICBkZWx0YSA9IC0xIC8gc3RlcHM7CiAgICAgIH0KCiAgICAgIHZhciBm
YWRlU3BlZWQgPSB0aGlzLmZhZGVTcGVlZDsKICAgICAgaWYgKCFmYWRlU3BlZWQp
IGZhZGVTcGVlZCA9IDE7CgogICAgICB2YXIgZmFkZUludGVydmFsID0gc3RlcHMg
LyBmYWRlU3BlZWQgKiA1OwoKICAgICAgdGhpcy5mYWRlTW9kZSA9IG1vZGU7Cgog
ICAgICB2YXIgc2VsZiA9IHRoaXM7CiAgICAgIHZhciBmYWRlID0gZnVuY3Rpb24g
KCkgewogICAgICAgICAgb3BwICs9IGRlbHRhOwoKICAgICAgICAgIC8vIGRpZCBz
b21lb25lIHN0YXJ0IGEgZmFkZSBpbiB0aGUgb3RoZXIgZGlyZWN0aW9uPyBpZiBz
bywKICAgICAgICAgIC8vIGNhbmNlbCB0aGlzIGZhZGUKICAgICAgICAgIGlmIChz
ZWxmLmZhZGVNb2RlICYmIHNlbGYuZmFkZU1vZGUgIT0gbW9kZSkgewogICAgICAg
ICAgICAgIGlmIChjYWxsYmFjaykKICAgICAgICAgICAgICAgICAgY2FsbGJhY2su
Y2FsbChzZWxmLCBbXSk7CgogICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
IH0KCiAgICAgICAgICBpZiAob3BwIDw9IDAuMSkgewogICAgICAgICAgICAgIGlm
IChjYWxsYmFjaykKICAgICAgICAgICAgICAgICAgY2FsbGJhY2suY2FsbChzZWxm
LCBbXSk7CgogICAgICAgICAgICAgIHNlbGYuZmFkZU1vZGUgPSBudWxsOwoKICAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgICB9IGVsc2UgaWYgKG9wcCA+PSAx
LjApIHsKICAgICAgICAgICAgICBpZiAoY2FsbGJhY2spCiAgICAgICAgICAgICAg
ICAgIGNhbGxiYWNrLmNhbGwoc2VsZiwgW10pOwoKICAgICAgICAgICAgICBzZWxm
LmZhZGVNb2RlID0gbnVsbDsKCiAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgICBjaGFuZ2VPcGFjKHNlbGYuZWxlLCBv
cHApOwogICAgICAgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZhZGUsIGZhZGVJ
bnRlcnZhbCk7CiAgICAgICAgICB9CiAgICAgIH07CgogICAgICBmYWRlKCk7CiAg
fSwKCiAgaGlkZSA6IGZ1bmN0aW9uICgpIHsKICAgIGlmICghIHRoaXMudmlzaWJs
ZSgpKSByZXR1cm47CgogICAgaWYgKHRoaXMuZmFkZU91dCAmJiB0aGlzLmVsZSkg
ewogICAgICAgIHRoaXMuZmFkZSgib3V0IiwgdGhpcy5faGlkZS5iaW5kKHRoaXMp
KTsKICAgIH0gZWxzZSB7CiAgICAgICAgdGhpcy5faGlkZSgpOwogICAgfQogIH0s
CgogIF9oaWRlIDogZnVuY3Rpb24gKCkgewogICAgaWYgKHRoaXMuaGlkZGVuQ2Fs
bGJhY2spCiAgICAgIHRoaXMuaGlkZGVuQ2FsbGJhY2soKTsKCiAgICB0aGlzLnNo
b3duID0gZmFsc2U7CiAgICB0aGlzLnJlbW92ZUNsaWNrSGFuZGxlcnMoKTsKCiAg
ICBpZiAodGhpcy5lbGUpCiAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHRo
aXMuZWxlKTsKCiAgICBpZiAodGhpcy5yZXNpemVIYW5kbGVyRnVuYykKICAgICAg
RE9NLnJlbW92ZUV2ZW50TGlzdGVuZXIod2luZG93LCAicmVzaXplIiwgdGhpcy5y
ZXNpemVIYW5kbGVyRnVuYyk7CgogICAgdGhpcy5zaG93U2VsZWN0cygpOwogIH0s
CgogIC8vIHlvdSBwcm9iYWJseSB3YW50IHRoaXMgZm9yIElFIGJlaW5nIGR1bWIK
ICAvLyAoSUUgdGhpbmtzIHNlbGVjdCBlbGVtZW50cyBhcmUgY29vbCBhbmQgcHV0
cyB0aGVtIGluIGZyb250IG9mIGV2ZXJ5IGVsZW1lbnQgb24gdGhlIHBhZ2UpCiAg
c2V0QXV0b0hpZGVTZWxlY3RzIDogZnVuY3Rpb24gKGF1dG9oaWRlKSB7CiAgICB0
aGlzLmF1dG9IaWRlU2VsZWN0cyA9IGF1dG9oaWRlOwogICAgdGhpcy51cGRhdGVD
b250ZW50KCk7CiAgfSwKCiAgaGlkZVNlbGVjdHMgOiBmdW5jdGlvbiAoKSB7CiAg
ICBpZiAoIXRoaXMuYXV0b0hpZGVTZWxlY3RzIHx8ICFJUFBVLmlzSUUoKSkgcmV0
dXJuOwogICAgdmFyIHNlbHMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgic2VsZWN0Iik7CiAgICB2YXIgZWxlOwogICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBzZWxzLmxlbmd0aDsgaSsrKSB7CiAgICAgIGVsZSA9IHNlbHNbaV07CiAgICAg
IGlmICghZWxlKSBjb250aW51ZTsKCiAgICAgIC8vIGlmIHRoaXMgZWxlbWVudCBp
cyBpbnNpZGUgdGhlIGlwcHUsIHNraXAgaXQKICAgICAgaWYgKERPTS5nZXRBbmNl
c3RvcnNCeUNsYXNzTmFtZShlbGUsICJpcHB1IiwgdHJ1ZSkubGVuZ3RoID4gMCkg
Y29udGludWU7CgogICAgICBpZiAoZWxlLnN0eWxlLnZpc2liaWxpdHkgIT0gJ2hp
ZGRlbicpIHsKICAgICAgICBlbGUuc3R5bGUudmlzaWJpbGl0eSA9ICdoaWRkZW4n
OwogICAgICAgIHRoaXMuaGlkZGVuU2VsZWN0cy5wdXNoKGVsZSk7CiAgICAgIH0K
ICAgIH0KICB9LAoKICBzaG93U2VsZWN0cyA6IGZ1bmN0aW9uICgpIHsKICAgIGlm
ICghIHRoaXMuYXV0b0hpZGVTZWxlY3RzKSByZXR1cm47CiAgICB2YXIgZWxlOwog
ICAgd2hpbGUgKGVsZSA9IHRoaXMuaGlkZGVuU2VsZWN0cy5wb3AoKSkKICAgICAg
ZWxlLnN0eWxlLnZpc2liaWxpdHkgPSAnJzsKICB9LAoKICBpbml0OiBmdW5jdGlv
biAoaHRtbCkgewogICAgdmFyIGVsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImRpdiIpOwogICAgdGhpcy5lbGUgPSBlbGU7CiAgICB0aGlzLnNob3duID0gZmFs
c2U7CiAgICB0aGlzLmF1dG9DZW50ZXJYID0gZmFsc2U7CiAgICB0aGlzLmF1dG9D
ZW50ZXJZID0gZmFsc2U7CiAgICB0aGlzLnRpdGxlYmFyID0gbnVsbDsKICAgIHRo
aXMudGl0bGUgPSAiIjsKICAgIHRoaXMuc2hvd1RpdGxlYmFyID0gZmFsc2U7CiAg
ICB0aGlzLmNsaWNrVG9DbG9zZSA9IGZhbHNlOwogICAgdGhpcy5tb2RhbCA9IGZh
bHNlOwogICAgdGhpcy5jbGlja0hhbmRsZXJTZXR1cCA9IGZhbHNlOwogICAgdGhp
cy5kb2NPdmVybGF5ID0gZmFsc2U7CiAgICB0aGlzLnZpc2libGVPdmVybGF5ID0g
ZmFsc2U7CiAgICB0aGlzLmNsaWNrSGFuZGxlckZ1bmMgPSBmYWxzZTsKICAgIHRo
aXMucmVzaXplSGFuZGxlckZ1bmMgPSBmYWxzZTsKICAgIHRoaXMuZml4ZWRQb3Np
dGlvbiA9IGZhbHNlOwogICAgdGhpcy5hdXRvQ2VudGVyQ2FsbGJhY2sgPSBudWxs
OwogICAgdGhpcy5jYW5jZWxsZWRDYWxsYmFjayA9IG51bGw7CiAgICB0aGlzLmF1
dG9IaWRlU2VsZWN0cyA9IGZhbHNlOwogICAgdGhpcy5oaWRkZW5DYWxsYmFjayA9
IG51bGw7CiAgICB0aGlzLmZhZGVPdXQgPSBmYWxzZTsKICAgIHRoaXMuZmFkZUlu
ID0gZmFsc2U7CiAgICB0aGlzLmhpZGRlblNlbGVjdHMgPSBbXTsKICAgIHRoaXMu
ZmFkZU1vZGUgPSBudWxsOwoKICAgIGVsZS5zdHlsZS5wb3NpdGlvbiA9ICJhYnNv
bHV0ZSI7CiAgICBlbGUuc3R5bGUuekluZGV4ICAgPSAiMTAwMCI7CgogICAgLy8g
cGx6IGRvbid0IHJlbW92ZSB0aHgKICAgIERPTS5hZGRDbGFzc05hbWUoZWxlLCAi
aXBwdSIpOwoKICAgIC8vIGNyZWF0ZSBESVYgdG8gaG9sZCB1c2VyJ3MgY29udGVu
dAogICAgdGhpcy5jb250ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2
Iik7CgogICAgdGhpcy5jb250ZW50LmlubmVySFRNTCA9IGh0bWw7CgogICAgdGhp
cy5lbGUuYXBwZW5kQ2hpbGQodGhpcy5jb250ZW50KTsKICB9Cn0pOwoKLy8gY2xh
c3MgbWV0aG9kcwpJUFBVLmNlbnRlciA9IGZ1bmN0aW9uIChvYmopIHsKICBvYmou
Y2VudGVyWCgpOwogIG9iai5jZW50ZXJZKCk7Cn07CgpJUFBVLmNlbnRlclggPSBm
dW5jdGlvbiAob2JqKSB7CiAgb2JqLmNlbnRlclgoKTsKfTsKCklQUFUuY2VudGVy
WSA9IGZ1bmN0aW9uIChvYmopIHsKICBvYmouY2VudGVyWSgpOwp9OwoKSVBQVS5p
c0lFID0gZnVuY3Rpb24gKCkgewogICAgdmFyIFVBID0gbmF2aWdhdG9yLnVzZXJB
Z2VudC50b0xvd2VyQ2FzZSgpOwogICAgaWYgKFVBLmluZGV4T2YoJ21zaWUnKSAh
PSAtMSkgcmV0dXJuIHRydWU7CiAgICByZXR1cm4gZmFsc2U7Cn07CgpJUFBVLmlz
U2FmYXJpID0gZnVuY3Rpb24gKCkgewogICAgdmFyIFVBID0gbmF2aWdhdG9yLnVz
ZXJBZ2VudC50b0xvd2VyQ2FzZSgpOwogICAgaWYgKFVBLmluZGV4T2YoJ3NhZmFy
aScpICE9IC0xKSByZXR1cm4gdHJ1ZTsKICAgIHJldHVybiBmYWxzZTsKfTsKTEpf
SVBQVSA9IG5ldyBDbGFzcyAoIElQUFUsIHsKICBpbml0OiBmdW5jdGlvbih0aXRs
ZSkgewogICAgaWYgKCF0aXRsZSkKICAgICAgdGl0bGUgPSAiIjsKCiAgICBMSl9J
UFBVLnN1cGVyQ2xhc3MuaW5pdC5hcHBseSh0aGlzLCBbXSk7CgogICAgdGhpcy51
bmlxSWQgPSB0aGlzLmdlbmVyYXRlVW5pcUlkKCk7CiAgICB0aGlzLmNhbmNlbFRo
aXNGdW5jID0gdGhpcy5jYW5jZWwuYmluZCh0aGlzKTsKCiAgICB0aGlzLnNldFRp
dGxlKHRpdGxlKTsKICAgIHRoaXMuc2V0VGl0bGViYXIodHJ1ZSk7CiAgICB0aGlz
LnNldFRpdGxlYmFyQ2xhc3MoImxqX2lwcHVfdGl0bGViYXIiKTsKCiAgICB0aGlz
LmFkZENsYXNzKCJsal9pcHB1Iik7CiAgICB0aGlzLnNldEF1dG9DZW50ZXJDYWxs
YmFjayhJUFBVLmNlbnRlcik7CiAgICB0aGlzLnNldERpbWVuc2lvbnMoNDAwLCAi
YXV0byIpOwogICAgLy90aGlzLnNldE92ZXJmbG93KCJoaWRkZW4iKTsKCiAgICB0
aGlzLnNldEZpeGVkUG9zaXRpb24odHJ1ZSk7CiAgICB0aGlzLnNldENsaWNrVG9D
bG9zZSh0cnVlKTsKICAgIHRoaXMuc2V0QXV0b0hpZGVTZWxlY3RzKHRydWUpOwog
fSwKCiAgc2V0VGl0bGU6IGZ1bmN0aW9uICh0aXRsZSkgewogICAgdmFyIHRpdGxl
YmFyQ29udGVudCA9ICJcCiAgICAgIDxkaXYgc3R5bGU9J2Zsb2F0OnJpZ2h0OyBw
YWRkaW5nLXJpZ2h0OiA4cHgnPiIgKwogICAgICAiPGltZyBzcmM9JyIgKyBTaXRl
LmltZ3ByZWZpeCArICIvQ2xvc2VCdXR0b24uZ2lmJyB3aWR0aD0nMTUnIGhlaWdo
dD0nMTUnIGlkPSciICsgdGhpcy51bmlxSWQgKyAiX2NhbmNlbCcgLz48L2Rpdj4i
ICsgdGl0bGU7CgogICAgTEpfSVBQVS5zdXBlckNsYXNzLnNldFRpdGxlLmFwcGx5
KHRoaXMsIFt0aXRsZWJhckNvbnRlbnRdKTsKICAgIAogICAgICAKICB9LAoKICBn
ZW5lcmF0ZVVuaXFJZDogZnVuY3Rpb24oKSB7CiAgICB2YXIgdGhlRGF0ZSA9IG5l
dyBEYXRlKCk7CiAgICByZXR1cm4gImxqX2lwcHVfIiArIHRoZURhdGUuZ2V0SG91
cnMoKSArIHRoZURhdGUuZ2V0TWludXRlcygpICsgdGhlRGF0ZS5nZXRNaWxsaXNl
Y29uZHMoKTsKICB9LAoKICBzaG93OiBmdW5jdGlvbigpIHsKICAgIExKX0lQUFUu
c3VwZXJDbGFzcy5zaG93LmFwcGx5KHRoaXMpOwogICAgdmFyIHNldHVwQ2FsbGJh
Y2sgPSB0aGlzLnNldHVwX2xqX2lwcHUuYmluZCh0aGlzKTsKICAgIHRoaXMudGlt
ZXJTZXR1cCA9IHdpbmRvdy5zZXRUaW1lb3V0KHNldHVwQ2FsbGJhY2ssIDMwMCk7
CiAgfSwKCiAgc2V0dXBfbGpfaXBwdTogZnVuY3Rpb24gKGV2dCkgewogICAgdmFy
IGNhbmNlbENhbGxiYWNrID0gdGhpcy5jYW5jZWxUaGlzRnVuYzsKICAgLy9ET00u
YWRkRXZlbnRMaXN0ZW5lcigkKHRoaXMudW5pcUlkICsgIl9jYW5jZWwiKSwgImNs
aWNrIiwgY2FuY2VsQ2FsbGJhY2ssIHRydWUpOwogICAkKHRoaXMudW5pcUlkICsg
Il9jYW5jZWwiKS5vbmNsaWNrID0gZnVuY3Rpb24oKXsKCSAgICBjYW5jZWxDYWxs
YmFjaygpOwogICAgfTsKICB9LAoKICBoaWRlOiBmdW5jdGlvbigpIHsKICAgIGNs
ZWFySW50ZXJ2YWwodGhpcy50aW1lclNldHVwKTsKICAgIExKX0lQUFUuc3VwZXJD
bGFzcy5oaWRlLmFwcGx5KHRoaXMpOwogIH0KfSApOwoKLy8gQ2xhc3MgbWV0aG9k
IHRvIHNob3cgYSBwb3B1cCB0byBzaG93IGEgbm90ZSB0byB0aGUgdXNlcgovLyBu
b3RlID0gbWVzc2FnZSB0byBzaG93Ci8vIHVuZGVyZWxlID0gZWxlbWVudCB0byBk
aXNwbGF5IHRoZSBub3RlIHVuZGVybmVhdGgKTEpfSVBQVS5zaG93Tm90ZSA9IGZ1
bmN0aW9uIChub3RlLCB1bmRlcmVsZSwgdGltZW91dCwgc3R5bGUpIHsKICAgIHZh
ciBub3RlRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwog
ICAgbm90ZUVsZW1lbnQuaW5uZXJIVE1MID0gbm90ZTsKCiAgICByZXR1cm4gTEpf
SVBQVS5zaG93Tm90ZUVsZW1lbnQobm90ZUVsZW1lbnQsIHVuZGVyZWxlLCB0aW1l
b3V0LCBzdHlsZSk7Cn07CgpMSl9JUFBVLnNob3dFcnJvck5vdGUgPSBmdW5jdGlv
biAobm90ZSwgdW5kZXJlbGUsIHRpbWVvdXQpIHsKICAgIHJldHVybiBMSl9JUFBV
LnNob3dOb3RlKG5vdGUsIHVuZGVyZWxlLCB0aW1lb3V0LCAiRXJyb3JOb3RlIik7
Cn07CgpMSl9JUFBVLnNob3dOb3RlRWxlbWVudCA9IGZ1bmN0aW9uIChub3RlRWxl
LCB1bmRlcmVsZSwgdGltZW91dCwgc3R5bGUpIHsKICAgIHZhciBub3RlUG9wdXAg
PSBuZXcgSVBQVSgpOwogICAgbm90ZVBvcHVwLmluaXQoKTsKCiAgICB2YXIgaW5u
ZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgIERPTS5hZGRD
bGFzc05hbWUoaW5uZXIsICJJbm5lciIpOwogICAgaW5uZXIuYXBwZW5kQ2hpbGQo
bm90ZUVsZSk7CiAgICBub3RlUG9wdXAuc2V0Q29udGVudEVsZW1lbnQoaW5uZXIp
OwoKICAgIG5vdGVQb3B1cC5zZXRUaXRsZWJhcihmYWxzZSk7CiAgICBub3RlUG9w
dXAuc2V0RmFkZUluKHRydWUpOwogICAgbm90ZVBvcHVwLnNldEZhZGVPdXQodHJ1
ZSk7CiAgICBub3RlUG9wdXAuc2V0RmFkZVNwZWVkKDQpOwogICAgbm90ZVBvcHVw
LnNldERpbWVuc2lvbnMoImF1dG8iLCAiYXV0byIpOwogICAgaWYgKCFzdHlsZSkg
c3R5bGUgPSAiTm90ZSI7CiAgICBub3RlUG9wdXAuYWRkQ2xhc3Moc3R5bGUpOwoK
ICAgIHZhciBkaW07CiAgICBpZiAodW5kZXJlbGUpIHsKICAgICAgICAvLyBwb3Ag
dXAgdGhlIGJveCByaWdodCB1bmRlciB0aGUgZWxlbWVudAogICAgICAgIGRpbSA9
IERPTS5nZXRBYnNvbHV0ZURpbWVuc2lvbnModW5kZXJlbGUpOwogICAgICAgIGlm
ICghZGltKSByZXR1cm47CiAgICB9CgogICAgdmFyIGJvdW5kcyA9IERPTS5nZXRD
bGllbnREaW1lbnNpb25zKCk7CiAgICBpZiAoIWJvdW5kcykgcmV0dXJuOwoKICAg
IGlmICghZGltKSB7CiAgICAgICAgLy8gbm8gZWxlbWVudCBzcGVjaWZpZWQgdG8g
cG9wIHVwIG9uLCBzaG93IGluIHRoZSBtaWRkbGUKICAgICAgICAvLyBub3RlUG9w
dXAuc2V0TW9kYWwodHJ1ZSk7CiAgICAgICAgLy8gbm90ZVBvcHVwLnNldE92ZXJs
YXlWaXNpYmxlKHRydWUpOwogICAgICAgIG5vdGVQb3B1cC5zZXRBdXRvQ2VudGVy
KHRydWUsIHRydWUpOwogICAgICAgIG5vdGVQb3B1cC5zaG93KCk7CiAgICB9IGVs
c2UgewogICAgICAgIC8vIGRlZmF1bHQgaXMgdG8gYXV0by1jZW50ZXIsIGRvbid0
IHdhbnQgdGhhdAogICAgICAgIG5vdGVQb3B1cC5zZXRBdXRvQ2VudGVyKGZhbHNl
LCBmYWxzZSk7CiAgICAgICAgbm90ZVBvcHVwLnNldExvY2F0aW9uKGRpbS5hYnNv
bHV0ZUxlZnQsIGRpbS5hYnNvbHV0ZUJvdHRvbSArIDQpOwogICAgICAgIG5vdGVQ
b3B1cC5zaG93KCk7CgogICAgICAgIHZhciBwb3B1cEJvdW5kcyA9IERPTS5nZXRB
YnNvbHV0ZURpbWVuc2lvbnMobm90ZVBvcHVwLmdldEVsZW1lbnQoKSk7CiAgICAg
ICAgaWYgKHBvcHVwQm91bmRzLmFic29sdXRlUmlnaHQgPiBib3VuZHMueCkgewog
ICAgICAgICAgICBub3RlUG9wdXAuc2V0TG9jYXRpb24oYm91bmRzLnggLSBwb3B1
cEJvdW5kcy5vZmZzZXRXaWR0aCAtIDMwLCBkaW0uYWJzb2x1dGVCb3R0b20gKyA0
KTsKICAgICAgICB9CiAgICB9CgogICAgbm90ZVBvcHVwLnNldENsaWNrVG9DbG9z
ZSh0cnVlKTsKICAgIG5vdGVQb3B1cC5tb3ZlRm9yd2FyZCgpOwoKICAgIGlmICgh
IGRlZmluZWQodGltZW91dCkpIHsKICAgICAgICB0aW1lb3V0ID0gNTAwMDsKICAg
IH0KCiAgICBpZiAodGltZW91dCkgewogICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0
KGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgaWYgKG5vdGVQb3B1cCkKICAgICAg
ICAgICAgICAgIG5vdGVQb3B1cC5oaWRlKCk7CiAgICAgICAgfSwgdGltZW91dCk7
CiAgICB9CgogICAgcmV0dXJuIG5vdGVQb3B1cDsKfTsKCkxKX0lQUFUudGV4dFBy
b21wdCA9IGZ1bmN0aW9uICh0aXRsZSwgcHJvbXB0LCBjYWxsYmFjaykgewogICAg
dGl0bGUgKz0gJyc7CiAgICB2YXIgbm90ZVBvcHVwID0gbmV3IExKX0lQUFUodGl0
bGUpOwoKICAgIHZhciBpbm5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRp
diIpOwogICAgRE9NLmFkZENsYXNzTmFtZShpbm5lciwgImxqaXBwdV90ZXh0cHJv
bXB0Iik7CgogICAgLy8gbGFiZWwKICAgIGlmIChwcm9tcHQpCiAgICAgICAgaW5u
ZXIuYXBwZW5kQ2hpbGQoX3RleHREaXYocHJvbXB0KSk7CgogICAgLy8gdGV4dCBm
aWVsZAogICAgdmFyIGZpZWxkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGV4
dGFyZWEiKTsKICAgIERPTS5hZGRDbGFzc05hbWUoZmllbGQsICJodG1sZmllbGQi
KTsKICAgIGZpZWxkLmNvbHMgPSA0MDsKICAgIGZpZWxkLnJvd3MgPSA1OwogICAg
aW5uZXIuYXBwZW5kQ2hpbGQoZmllbGQpOwoKICAgIC8vIHN1Ym1pdCBidG4KICAg
IHZhciBidG5jb250ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAg
ICBET00uYWRkQ2xhc3NOYW1lKGJ0bmNvbnQsICJzdWJtaXRidG5jb250YWluZXIi
KTsKICAgIHZhciBidG4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIp
OwogICAgRE9NLmFkZENsYXNzTmFtZShidG4sICJzdWJtaXRidG4iKTsKICAgIGJ0
bi50eXBlID0gImJ1dHRvbiI7CiAgICBidG4udmFsdWUgPSAiSW5zZXJ0IjsKICAg
IGJ0bmNvbnQuYXBwZW5kQ2hpbGQoYnRuKTsKICAgIGlubmVyLmFwcGVuZENoaWxk
KGJ0bmNvbnQpOwoKICAgIG5vdGVQb3B1cC5zZXRDb250ZW50RWxlbWVudChpbm5l
cik7CgogICAgbm90ZVBvcHVwLnNldEF1dG9DZW50ZXIodHJ1ZSwgdHJ1ZSk7CiAg
ICBub3RlUG9wdXAuc2V0RGltZW5zaW9ucygiNjAlIiwgImF1dG8iKTsKICAgIG5v
dGVQb3B1cC5zaG93KCk7CiAgICBmaWVsZC5mb2N1cygpOwoKICAgIERPTS5hZGRF
dmVudExpc3RlbmVyKGJ0biwgImNsaWNrIiwgZnVuY3Rpb24gKGUpIHsKICAgICAg
ICBub3RlUG9wdXAuaGlkZSgpOwogICAgICAgIGlmIChjYWxsYmFjaykKICAgICAg
ICAgICAgY2FsbGJhY2suYXBwbHkobnVsbCwgW2ZpZWxkLnZhbHVlXSk7CiAgICB9
KTsKfQovLyBMaXZlSm91cm5hbCBqYXZhc2NyaXB0IHN0YW5kYXJkIGludGVyZmFj
ZSByb3V0aW5lcwoKLy8gY3JlYXRlIGEgbGl0dGxlIGFuaW1hdGVkIGhvdXJnbGFz
cyBhdCAoeCx5KSB3aXRoIGEgdW5pcXVlLWlzaCBJRAovLyByZXR1cm5zIHRoZSBl
bGVtZW50IGNyZWF0ZWQKSG91cmdsYXNzID0gbmV3IENsYXNzKCBPYmplY3QsIHsK
ICBpbml0OiBmdW5jdGlvbih3aWRnZXQsIGNsYXNzbmFtZSkgewogICAgdGhpcy5l
bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKTsKICAgIGlmICghdGhp
cy5lbGUpIHJldHVybjsKCiAgICB2YXIgaW1ncHJlZml4ID0gU2l0ZSA/IFNpdGUu
aW1ncHJlZml4IDogJyc7CgogICAgdGhpcy5lbGUuc3JjID0gaW1ncHJlZml4ID8g
aW1ncHJlZml4ICsgIi9ob3VyZ2xhc3MuZ2lmIiA6ICIvaW1nL2hvdXJnbGFzcy5n
aWYiOwogICAgdGhpcy5lbGUuc3R5bGUucG9zaXRpb24gPSAiYWJzb2x1dGUiOwoK
ICAgIERPTS5hZGRDbGFzc05hbWUodGhpcy5lbGUsIGNsYXNzbmFtZSk7CgogICAg
aWYgKHdpZGdldCkKICAgICAgdGhpcy5ob3VyZ2xhc3NfYXRfd2lkZ2V0KHdpZGdl
dCk7CiAgfSwKCiAgaG91cmdsYXNzX2F0OiBmdW5jdGlvbiAoeCwgeSkgewogICAg
dGhpcy5lbGUud2lkdGggPSAxNzsKICAgIHRoaXMuZWxlLmhlaWdodCA9IDE3Owog
ICAgdGhpcy5lbGUuc3R5bGUudG9wID0gKHkgLSA4KSArICJweCI7CiAgICB0aGlz
LmVsZS5zdHlsZS5sZWZ0ID0gKHggLSA4KSArICJweCI7CgogICAgLy8gdW5pcXVl
IElECiAgICB0aGlzLmVsZS5pZCA9ICJsal9ob3VyZ2xhc3MiICsgeCArICIuIiAr
IHk7CgogICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0aGlzLmVsZSk7CiAg
fSwKCiAgYWRkX2NsYXNzX25hbWU6IGZ1bmN0aW9uIChjbGFzc25hbWUpIHsKICAg
ICAgaWYgKHRoaXMuZWxlKQogICAgICBET00uYWRkQ2xhc3NOYW1lKHRoaXMuZWxl
LCBjbGFzc25hbWUpOwogIH0sCgogIGhvdXJnbGFzc19hdF93aWRnZXQ6IGZ1bmN0
aW9uICh3aWRnZXQpIHsKICAgIHZhciBkaW0gPSBET00uZ2V0QWJzb2x1dGVEaW1l
bnNpb25zKHdpZGdldCk7CiAgICB2YXIgeCA9IGRpbS5hYnNvbHV0ZUxlZnQ7CiAg
ICB2YXIgeSA9IGRpbS5hYnNvbHV0ZVRvcDsKICAgIHZhciB3ID0gZGltLmFic29s
dXRlUmlnaHQgLSB4OwogICAgdmFyIGggPSBkaW0uYWJzb2x1dGVCb3R0b20gLSB5
OwogICAgaWYgKHcgJiYgaCkgewogICAgICB4ICs9IHcvMjsKICAgICAgeSArPSBo
LzI7CiAgICB9CiAgICB0aGlzLmhvdXJnbGFzc19hdCh4LCB5KTsKICB9LAoKICBo
aWRlOiBmdW5jdGlvbiAoKSB7CiAgICBpZiAodGhpcy5lbGUpIHsKICAgICAgdHJ5
IHsKICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHRoaXMuZWxlKTsK
ICAgICAgfSBjYXRjaCAoZSkge30KICAgIH0KICB9Cgp9ICk7CnZhciBDb250ZXh0
dWFsUG9wdXAgPSBuZXcgT2JqZWN0OwoKQ29udGV4dHVhbFBvcHVwLnBvcHVwRGVs
YXkgID0gNTAwOwpDb250ZXh0dWFsUG9wdXAuaGlkZURlbGF5ICAgPSAyNTA7CkNv
bnRleHR1YWxQb3B1cC5kaXNhYmxlQUpBWCA9IGZhbHNlOwoKQ29udGV4dHVhbFBv
cHVwLmNhY2hlZFJlc3VsdHMgICA9IHt9OwpDb250ZXh0dWFsUG9wdXAuY3VycmVu
dFJlcXVlc3RzID0ge307CkNvbnRleHR1YWxQb3B1cC5tb3VzZUluVGltZXIgICAg
PSBudWxsOwpDb250ZXh0dWFsUG9wdXAubW91c2VPdXRUaW1lciAgID0gbnVsbDsK
Q29udGV4dHVhbFBvcHVwLmN1cnJlbnRJZCAgICAgICA9IG51bGw7CkNvbnRleHR1
YWxQb3B1cC5ob3VyZ2xhc3MgICAgICAgPSBudWxsOwoKQ29udGV4dHVhbFBvcHVw
LnNldHVwID0gZnVuY3Rpb24gKCkgewogICAgLy8gZG9uJ3QgZG8gYW55dGhpbmcg
aWYgbm8gcmVtb3RlCiAgICBpZiAoIVNpdGUgfHwgIVNpdGUuY3R4X3BvcHVwKSBy
ZXR1cm47CgogICAgQ29udGV4dHVhbFBvcHVwLnNlYXJjaEFuZEFkZChkb2N1bWVu
dCkKCiAgICBET00uYWRkRXZlbnRMaXN0ZW5lcihkb2N1bWVudC5ib2R5LCAibW91
c2Vtb3ZlIiwgQ29udGV4dHVhbFBvcHVwLm1vdXNlT3Zlci5iaW5kRXZlbnRMaXN0
ZW5lcigpKTsKfQoKQ29udGV4dHVhbFBvcHVwLnNlYXJjaEFuZEFkZCA9IGZ1bmN0
aW9uIChub2RlKSB7CiAgICBpZiAoIVNpdGUgfHwgIVNpdGUuY3R4X3BvcHVwKSBy
ZXR1cm47CgogICAgLy8gYXR0YWNoIHRvIGFsbCBsanVzZXIgaGVhZCBpY29ucwog
ICAgdmFyIGxqdXNlcnMgPSBET00uZ2V0RWxlbWVudHNCeVRhZ0FuZENsYXNzTmFt
ZShub2RlLCAnc3BhbicsICdsanVzZXInKSwKICAgICAgICByZXhfdXNlcmlkID0g
L1w/dXNlcmlkPShcZCspL2ksCiAgICAgICAgcmV4X3VzZXJwaWMgPSAvKHVzZXJw
aWNcLi4rXC9cZCtcL1xkKyl8KFwvdXNlcnBpY1wvXGQrXC9cZCspLzsKCiAgICBs
anVzZXJzLmZvckVhY2goZnVuY3Rpb24gKGxqdXNlcikgewogICAgICAgIHZhciBu
b2RlcyA9IGxqdXNlci5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW1nJyksIGkgPSAt
MSwgbm9kZTsKICAgICAgICB3aGlsZSAobm9kZSA9IG5vZGVzWysraV0pIHsKICAg
ICAgICAgICAgLy8gaWYgdGhlIHBhcmVudCAoYSB0YWcgd2l0aCBsaW5rIHRvIHVz
ZXJpbmZvKSBoYXMgdXNlcmlkIGluIGl0cyBVUkwsIHRoZW4KICAgICAgICAgICAg
Ly8gdGhpcyBpcyBhbiBvcGVuaWQgdXNlciBpY29uIGFuZCB3ZSBzaG91bGQgdXNl
IHRoZSB1c2VyaWQKICAgICAgICAgICAgdmFyIHBhcmVudCA9IG5vZGUucGFyZW50
Tm9kZSwgdXNlcmlkOwogICAgICAgICAgICBpZiAocGFyZW50ICYmIHBhcmVudC5o
cmVmICYmICh1c2VyaWQgPSBwYXJlbnQuaHJlZi5tYXRjaChyZXhfdXNlcmlkKSkp
CiAgICAgICAgICAgICAgICBub2RlLnVzZXJpZCA9IHVzZXJpZFsxXTsKICAgICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgICAgbm9kZS51c2VybmFtZSA9IGxqdXNl
ci5nZXRBdHRyaWJ1dGUoJ2xqOnVzZXInKTsKCiAgICAgICAgICAgIGlmICghbm9k
ZS51c2VybmFtZSAmJiAhbm9kZS51c2VyaWQpIGNvbnRpbnVlOwoKICAgICAgICAg
ICAgRE9NLmFkZENsYXNzTmFtZShub2RlLCAnQ29udGV4dHVhbFBvcHVwJyk7CiAg
ICAgICAgfQogICAgfSk7CgogICAgLy8gYXR0YWNoIHRvIGFsbCB1c2VycGljcwog
ICAgdmFyIGltYWdlcyA9IG5vZGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2ltZycp
IHx8IFtdOwogICAgQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChpbWFnZXMs
IGZ1bmN0aW9uIChpbWFnZSkgewogICAgICAgIC8vIGlmIHRoZSBpbWFnZSB1cmwg
bWF0Y2hlcyBhIHJlZ2V4IGZvciB1c2VycGljIHVybHMgdGhlbiBhdHRhY2ggdG8g
aXQKICAgICAgICBpZiAoaW1hZ2Uuc3JjLm1hdGNoKHJleF91c2VycGljKSkgewog
ICAgICAgICAgICBpbWFnZS51cF91cmwgPSBpbWFnZS5zcmM7CiAgICAgICAgICAg
IERPTS5hZGRDbGFzc05hbWUoaW1hZ2UsICdDb250ZXh0dWFsUG9wdXAnKTsKICAg
ICAgICB9CiAgICB9KTsKfQoKQ29udGV4dHVhbFBvcHVwLmlzQ3R4UG9wRWxlbWVu
dCA9IGZ1bmN0aW9uIChlbGUpIHsKICAgIHJldHVybiAoZWxlICYmIERPTS5nZXRB
bmNlc3RvcnNCeUNsYXNzTmFtZShlbGUsICJDb250ZXh0dWFsUG9wdXAiLCB0cnVl
KS5sZW5ndGgpOwp9CgpDb250ZXh0dWFsUG9wdXAubW91c2VPdmVyID0gZnVuY3Rp
b24gKGUpIHsKICAgIHZhciB0YXJnZXQgPSBlLnRhcmdldDsKICAgIHZhciBjdHhQ
b3B1cElkID0gdGFyZ2V0LnVzZXJuYW1lIHx8IHRhcmdldC51c2VyaWQgfHwgdGFy
Z2V0LnVwX3VybDsKCiAgICAvLyBkaWQgdGhlIG1vdXNlIG1vdmUgb3V0PwogICAg
aWYgKCFDb250ZXh0dWFsUG9wdXAuaXNDdHhQb3BFbGVtZW50KHRhcmdldCkpIHsK
ICAgICAgICBpZiAoQ29udGV4dHVhbFBvcHVwLm1vdXNlSW5UaW1lcikgewogICAg
ICAgICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KENvbnRleHR1YWxQb3B1cC5tb3Vz
ZUluVGltZXIpOwogICAgICAgICAgICBDb250ZXh0dWFsUG9wdXAubW91c2VJblRp
bWVyID0gbnVsbDsKICAgICAgICB9OwoKICAgICAgICBpZiAoQ29udGV4dHVhbFBv
cHVwLmlwcHUpIHsKICAgICAgICAgICAgaWYgKENvbnRleHR1YWxQb3B1cC5tb3Vz
ZUluVGltZXIgfHwgQ29udGV4dHVhbFBvcHVwLm1vdXNlT3V0VGltZXIpIHJldHVy
bjsKCiAgICAgICAgICAgIENvbnRleHR1YWxQb3B1cC5tb3VzZU91dFRpbWVyID0g
d2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAg
Q29udGV4dHVhbFBvcHVwLm1vdXNlT3V0KGUpOwogICAgICAgICAgICB9LCBDb250
ZXh0dWFsUG9wdXAuaGlkZURlbGF5KTsKICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgIH0KICAgIH0KCiAgICAvLyB3ZSdyZSBpbnNpZGUgYSBjdHhQb3BFbGVtZW50
LCBjYW5jZWwgdGhlIG1vdXNlb3V0IHRpbWVyCiAgICBpZiAoQ29udGV4dHVhbFBv
cHVwLm1vdXNlT3V0VGltZXIpIHsKICAgICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0
KENvbnRleHR1YWxQb3B1cC5tb3VzZU91dFRpbWVyKTsKICAgICAgICBDb250ZXh0
dWFsUG9wdXAubW91c2VPdXRUaW1lciA9IG51bGw7CiAgICB9CgogICAgaWYgKCFj
dHhQb3B1cElkKQogICAgcmV0dXJuOwoKICAgIHZhciBjYWNoZWQgPSBDb250ZXh0
dWFsUG9wdXAuY2FjaGVkUmVzdWx0c1tjdHhQb3B1cElkXTsKCiAgICAvLyBpZiB3
ZSBkb24ndCBoYXZlIGNhY2hlZCBkYXRhIGJhY2tncm91bmQgcmVxdWVzdCBpdAog
ICAgaWYgKCFjYWNoZWQpIHsKICAgICAgICBDb250ZXh0dWFsUG9wdXAuZ2V0SW5m
byh0YXJnZXQsIGN0eFBvcHVwSWQpOwogICAgfQoKICAgIC8vIHN0YXJ0IHRpbWVy
IGlmIGl0J3Mgbm90IHJ1bm5pbmcKICAgIGlmICghIENvbnRleHR1YWxQb3B1cC5t
b3VzZUluVGltZXIgJiYgKCEgQ29udGV4dHVhbFBvcHVwLmlwcHUgfHwgKAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQ29udGV4dHVhbFBvcHVwLmN1cnJlbnRJZCAmJgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQ29udGV4dHVhbFBvcHVwLmN1cnJlbnRJZCAh
PSBjdHhQb3B1cElkKSkpIHsKICAgICAgICBDb250ZXh0dWFsUG9wdXAubW91c2VJ
blRpbWVyID0gd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewogICAgICAg
ICAgICBDb250ZXh0dWFsUG9wdXAuc2hvd1BvcHVwKGN0eFBvcHVwSWQsIHRhcmdl
dCk7CiAgICAgICAgfSwgQ29udGV4dHVhbFBvcHVwLnBvcHVwRGVsYXkpOwogICAg
fQp9CgovLyBpZiB0aGUgcG9wdXAgd2FzIG5vdCBjbG9zZWQgYnkgdXMgY2F0Y2gg
aXQgYW5kIGhhbmRsZSBpdApDb250ZXh0dWFsUG9wdXAucG9wdXBDbG9zZWQgPSBm
dW5jdGlvbiAoKSB7CiAgICBDb250ZXh0dWFsUG9wdXAubW91c2VPdXQoKTsKfQoK
Q29udGV4dHVhbFBvcHVwLm1vdXNlT3V0ID0gZnVuY3Rpb24gKGUpIHsKICAgIGlm
IChDb250ZXh0dWFsUG9wdXAubW91c2VJblRpbWVyKQogICAgICAgIHdpbmRvdy5j
bGVhclRpbWVvdXQoQ29udGV4dHVhbFBvcHVwLm1vdXNlSW5UaW1lcik7CiAgICBp
ZiAoQ29udGV4dHVhbFBvcHVwLm1vdXNlT3V0VGltZXIpCiAgICAgICAgd2luZG93
LmNsZWFyVGltZW91dChDb250ZXh0dWFsUG9wdXAubW91c2VPdXRUaW1lcik7Cgog
ICAgQ29udGV4dHVhbFBvcHVwLm1vdXNlSW5UaW1lciA9IG51bGw7CiAgICBDb250
ZXh0dWFsUG9wdXAubW91c2VPdXRUaW1lciA9IG51bGw7CiAgICBDb250ZXh0dWFs
UG9wdXAuY3VycmVudElkID0gbnVsbDsKCiAgICBDb250ZXh0dWFsUG9wdXAuaGlk
ZVBvcHVwKCk7Cn0KCkNvbnRleHR1YWxQb3B1cC5zaG93UG9wdXAgPSBmdW5jdGlv
biAoY3R4UG9wdXBJZCwgZWxlKSB7CiAgICBpZiAoQ29udGV4dHVhbFBvcHVwLm1v
dXNlSW5UaW1lcikgewogICAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQoQ29udGV4
dHVhbFBvcHVwLm1vdXNlSW5UaW1lcik7CiAgICB9CiAgICBDb250ZXh0dWFsUG9w
dXAubW91c2VJblRpbWVyID0gbnVsbDsKCiAgICBpZiAoQ29udGV4dHVhbFBvcHVw
LmlwcHUgJiYgKENvbnRleHR1YWxQb3B1cC5jdXJyZW50SWQgJiYgQ29udGV4dHVh
bFBvcHVwLmN1cnJlbnRJZCA9PSBjdHhQb3B1cElkKSkgewogICAgICAgIHJldHVy
bjsKICAgIH0KCiAgICBDb250ZXh0dWFsUG9wdXAuY3VycmVudElkID0gY3R4UG9w
dXBJZDsKCiAgICBDb250ZXh0dWFsUG9wdXAuY29uc3RydWN0SVBQVShjdHhQb3B1
cElkKTsKCiAgICB2YXIgZGF0YSA9IENvbnRleHR1YWxQb3B1cC5jYWNoZWRSZXN1
bHRzW2N0eFBvcHVwSWRdOwoKICAgIGlmICghIGVsZSB8fCAoZGF0YSAmJiBkYXRh
Lm5vc2hvdykpIHsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgaWYgKENvbnRl
eHR1YWxQb3B1cC5pcHB1KSB7CiAgICAgICAgdmFyIGlwcHUgPSBDb250ZXh0dWFs
UG9wdXAuaXBwdTsKICAgICAgICAvLyBkZWZhdWx0IGlzIHRvIGF1dG8tY2VudGVy
LCBkb24ndCB3YW50IHRoYXQKICAgICAgICBpcHB1LnNldEF1dG9DZW50ZXIoZmFs
c2UsIGZhbHNlKTsKCiAgICAgICAgLy8gcG9wIHVwIHRoZSBib3ggcmlnaHQgdW5k
ZXIgdGhlIGVsZW1lbnQKICAgICAgICB2YXIgZGltID0gRE9NLmdldEFic29sdXRl
RGltZW5zaW9ucyhlbGUpOwogICAgICAgIGlmICghZGltKSByZXR1cm47CgogICAg
ICAgIHZhciBib3VuZHMgPSBET00uZ2V0Q2xpZW50RGltZW5zaW9ucygpOwogICAg
ICAgIGlmICghYm91bmRzKSByZXR1cm47CgogICAgICAgIC8vIGhpZGUgdGhlIGlw
cHUgY29udGVudCBlbGVtZW50LCBwdXQgaXQgb24gdGhlIHBhZ2UsCiAgICAgICAg
Ly8gZ2V0IGl0cyBib3VuZHMgYW5kIG1ha2Ugc3VyZSBpdCdzIG5vdCBnb2luZyBi
ZXlvbmQgdGhlIGNsaWVudAogICAgICAgIC8vIHZpZXdwb3J0LiBpZiB0aGUgZWxl
bWVudCBpcyBiZXlvbmQgdGhlIHJpZ2h0IGJvdW5kcyBzY29vdCBpdCB0byB0aGUg
bGVmdC4KCiAgICAgICAgdmFyIHBvcEVsZSA9IGlwcHUuZ2V0RWxlbWVudCgpOwog
ICAgICAgIHBvcEVsZS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7CiAgICAg
ICAgQ29udGV4dHVhbFBvcHVwLmlwcHUuc2V0TG9jYXRpb24oZGltLmFic29sdXRl
TGVmdCwgZGltLmFic29sdXRlQm90dG9tKTsKCiAgICAgICAgLy8gcHV0IHRoZSBj
b250ZW50IGVsZW1lbnQgb24gdGhlIHBhZ2Ugc28gaXRzIGRpbWVuc2lvbnMgY2Fu
IGJlIGZvdW5kCiAgICAgICAgQ29udGV4dHVhbFBvcHVwLmlwcHUuc2hvdygpOwoK
ICAgICAgICB2YXIgaXBwdUJvdW5kcyA9IERPTS5nZXRBYnNvbHV0ZURpbWVuc2lv
bnMocG9wRWxlKTsKICAgICAgICBpZiAoaXBwdUJvdW5kcy5hYnNvbHV0ZVJpZ2h0
ID4gYm91bmRzLngpIHsKICAgICAgICAgICAgQ29udGV4dHVhbFBvcHVwLmlwcHUu
c2V0TG9jYXRpb24oYm91bmRzLnggLSBpcHB1Qm91bmRzLm9mZnNldFdpZHRoIC0g
MzAsIGRpbS5hYnNvbHV0ZUJvdHRvbSk7CiAgICAgICAgfQoKICAgICAgICAvLyBm
aW5hbGx5IG1ha2UgdGhlIGNvbnRlbnQgdmlzaWJsZQogICAgICAgIHBvcEVsZS5z
dHlsZS52aXNpYmlsaXR5ID0gInZpc2libGUiOwogICAgfQp9CgpDb250ZXh0dWFs
UG9wdXAuY29uc3RydWN0SVBQVSA9IGZ1bmN0aW9uIChjdHhQb3B1cElkKSB7CiAg
ICBpZiAoQ29udGV4dHVhbFBvcHVwLmlwcHUpIHsKICAgICAgICBDb250ZXh0dWFs
UG9wdXAuaXBwdS5oaWRlKCk7CiAgICAgICAgQ29udGV4dHVhbFBvcHVwLmlwcHUg
PSBudWxsOwogICAgfQoKICAgIHZhciBpcHB1ID0gbmV3IElQUFUoKTsKICAgIGlw
cHUuaW5pdCgpOwogICAgaXBwdS5zZXRUaXRsZWJhcihmYWxzZSk7CiAgICBpcHB1
LnNldEZhZGVPdXQodHJ1ZSk7CiAgICBpcHB1LnNldEZhZGVJbih0cnVlKTsKICAg
IGlwcHUuc2V0RmFkZVNwZWVkKDE1KTsKICAgIGlwcHUuc2V0RGltZW5zaW9ucygi
YXV0byIsICJhdXRvIik7CiAgICBpcHB1LmFkZENsYXNzKCJDb250ZXh0dWFsUG9w
dXAiKTsKICAgIGlwcHUuc2V0Q2FuY2VsbGVkQ2FsbGJhY2soQ29udGV4dHVhbFBv
cHVwLnBvcHVwQ2xvc2VkKTsKICAgIENvbnRleHR1YWxQb3B1cC5pcHB1ID0gaXBw
dTsKCiAgICBDb250ZXh0dWFsUG9wdXAucmVuZGVyUG9wdXAoY3R4UG9wdXBJZCk7
Cn0KCkNvbnRleHR1YWxQb3B1cC5yZW5kZXJQb3B1cCA9IGZ1bmN0aW9uIChjdHhQ
b3B1cElkKSB7CiAgICB2YXIgaXBwdSA9IENvbnRleHR1YWxQb3B1cC5pcHB1OwoK
ICAgIGlmICghaXBwdSkKICAgIHJldHVybjsKCiAgICBpZiAoY3R4UG9wdXBJZCkg
ewogICAgICAgIHZhciBkYXRhID0gQ29udGV4dHVhbFBvcHVwLmNhY2hlZFJlc3Vs
dHNbY3R4UG9wdXBJZF07CgogICAgICAgIGlmICghZGF0YSkgewogICAgICAgICAg
ICBpcHB1LnNldENvbnRlbnQoIjxkaXYgY2xhc3M9J0lubmVyJz5Mb2FkaW5nLi4u
PC9kaXY+Iik7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9IGVsc2UgaWYg
KCFkYXRhLnVzZXJuYW1lIHx8ICFkYXRhLnN1Y2Nlc3MgfHwgZGF0YS5ub3Nob3cp
IHsKICAgICAgICAgICAgaXBwdS5oaWRlKCk7CiAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICB9CgogICAgICAgIHZhciB1c2VybmFtZSA9IGRhdGEuZGlzcGxheV91
c2VybmFtZTsKCiAgICAgICAgdmFyIGlubmVyID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiZGl2Iik7CiAgICAgICAgRE9NLmFkZENsYXNzTmFtZShpbm5lciwgIklu
bmVyIik7CgogICAgICAgIHZhciBjb250ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiZGl2Iik7CiAgICAgICAgRE9NLmFkZENsYXNzTmFtZShjb250ZW50LCAi
Q29udGVudCIpOwoKICAgICAgICB2YXIgYmFyID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgic3BhbiIpOwogICAgICAgIGJhci5pbm5lckhUTUwgPSAiJm5ic3A7fCAi
OwoKICAgICAgICAvLyB1c2VycGljCiAgICAgICAgaWYgKGRhdGEudXJsX3VzZXJw
aWMgJiYgZGF0YS51cmxfdXNlcnBpYyAhPSBjdHhQb3B1cElkKSB7CiAgICAgICAg
ICAgIHZhciB1c2VycGljQ29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiZGl2Iik7CiAgICAgICAgICAgIHZhciB1c2VycGljTGluayA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImEiKTsKICAgICAgICAgICAgdXNlcnBpY0xpbmsuaHJl
ZiA9IGRhdGEudXJsX2FsbHBpY3M7CiAgICAgICAgICAgIHZhciB1c2VycGljID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW1nIik7CiAgICAgICAgICAgIHVzZXJw
aWMuc3JjID0gZGF0YS51cmxfdXNlcnBpYzsKICAgICAgICAgICAgdXNlcnBpYy53
aWR0aCA9IGRhdGEudXNlcnBpY193OwogICAgICAgICAgICB1c2VycGljLmhlaWdo
dCA9IGRhdGEudXNlcnBpY19oOwoKICAgICAgICAgICAgdXNlcnBpY0NvbnRhaW5l
ci5hcHBlbmRDaGlsZCh1c2VycGljTGluayk7CiAgICAgICAgICAgIHVzZXJwaWNM
aW5rLmFwcGVuZENoaWxkKHVzZXJwaWMpOwogICAgICAgICAgICBET00uYWRkQ2xh
c3NOYW1lKHVzZXJwaWNDb250YWluZXIsICJVc2VycGljIik7CgogICAgICAgICAg
ICBpbm5lci5hcHBlbmRDaGlsZCh1c2VycGljQ29udGFpbmVyKTsKICAgICAgICB9
CgogICAgICAgIGlubmVyLmFwcGVuZENoaWxkKGNvbnRlbnQpOwoKICAgICAgICAv
LyByZWxhdGlvbgogICAgICAgIHZhciByZWxhdGlvbiA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImRpdiIpOwogICAgICAgIGlmIChkYXRhLmlzX2NvbW0pIHsKICAg
ICAgICAgICAgaWYgKGRhdGEuaXNfbWVtYmVyKQogICAgICAgICAgICAgICAgcmVs
YXRpb24uaW5uZXJIVE1MID0gIllvdSBhcmUgYSBtZW1iZXIgb2YgIiArIHVzZXJu
YW1lOwogICAgICAgICAgICBlbHNlIGlmIChkYXRhLmlzX2ZyaWVuZCkKICAgICAg
ICAgICAgICAgIHJlbGF0aW9uLmlubmVySFRNTCA9ICJZb3UgYXJlIHdhdGNoaW5n
ICIgKyB1c2VybmFtZTsKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAg
cmVsYXRpb24uaW5uZXJIVE1MID0gdXNlcm5hbWU7CiAgICAgICAgfSBlbHNlIGlm
IChkYXRhLmlzX3N5bmRpY2F0ZWQpIHsKICAgICAgICAgICAgaWYgKGRhdGEuaXNf
ZnJpZW5kKQogICAgICAgICAgICAgICAgcmVsYXRpb24uaW5uZXJIVE1MID0gIllv
dSBhcmUgc3Vic2NyaWJlZCB0byAiICsgdXNlcm5hbWU7CiAgICAgICAgICAgIGVs
c2UKICAgICAgICAgICAgICAgIHJlbGF0aW9uLmlubmVySFRNTCA9IHVzZXJuYW1l
OwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGlmIChkYXRhLmlzX3JlcXVl
c3RlcikgewogICAgICAgICAgICAgICAgcmVsYXRpb24uaW5uZXJIVE1MID0gIlRo
aXMgaXMgeW91IjsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAg
IHZhciBsYWJlbCA9IHVzZXJuYW1lICsgIiAiOwoKICAgICAgICAgICAgICAgIGlm
IChkYXRhLmlzX2ZyaWVuZF9vZikgewogICAgICAgICAgICAgICAgICAgIGlmIChk
YXRhLmlzX2ZyaWVuZCkKICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgKz0g
ImlzIHlvdXIgbXV0dWFsIGZyaWVuZCI7CiAgICAgICAgICAgICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCArPSAibGlzdHMgeW91IGFz
IGEgZnJpZW5kIjsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICAgICAgICAgaWYgKGRhdGEuaXNfZnJpZW5kKQogICAgICAgICAgICAgICAgICAg
ICAgICBsYWJlbCArPSAiaXMgeW91ciBmcmllbmQiOwogICAgICAgICAgICAgICAg
fQoKICAgICAgICAgICAgICAgIHJlbGF0aW9uLmlubmVySFRNTCA9IGxhYmVsOwog
ICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIERPTS5hZGRDbGFzc05hbWUo
cmVsYXRpb24sICJSZWxhdGlvbiIpOwogICAgICAgIGNvbnRlbnQuYXBwZW5kQ2hp
bGQocmVsYXRpb24pOwoKICAgICAgICAvLyBhZGQgc2l0ZS1zcGVjaWZpYyBjb250
ZW50IGhlcmUKICAgICAgICB2YXIgZXh0cmFDb250ZW50ID0gTGl2ZUpvdXJuYWwu
cnVuX2hvb2soImN0eHBvcHVwX2V4dHJhaW5mbyIsIGRhdGEpOwogICAgICAgIGlm
IChleHRyYUNvbnRlbnQpIHsKICAgICAgICAgICAgY29udGVudC5hcHBlbmRDaGls
ZChleHRyYUNvbnRlbnQpOwogICAgICAgIH0KCiAgICAgICAgLy8gbWVtYmVyIG9m
IGNvbW11bml0eQogICAgICAgIGlmIChkYXRhLmlzX2xvZ2dlZF9pbiAmJiBkYXRh
LmlzX2NvbW0pIHsKICAgICAgICAgICAgdmFyIG1lbWJlcnNoaXAgICAgID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwogICAgICAgICAgICB2YXIgbWVt
YmVyc2hpcExpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIik7CgogICAg
ICAgICAgICB2YXIgbWVtYmVyc2hpcF9hY3Rpb24gPSBkYXRhLmlzX21lbWJlciA/
ICJsZWF2ZSIgOiAiam9pbiI7CgogICAgICAgICAgICBpZiAoZGF0YS5pc19tZW1i
ZXIpIHsKICAgICAgICAgICAgICAgIG1lbWJlcnNoaXBMaW5rLmhyZWYgPSBkYXRh
LnVybF9sZWF2ZWNvbW07CiAgICAgICAgICAgICAgICBtZW1iZXJzaGlwTGluay5p
bm5lckhUTUwgPSAiTGVhdmUiOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgICAgbWVtYmVyc2hpcExpbmsuaHJlZiA9IGRhdGEudXJsX2pvaW5jb21t
OwogICAgICAgICAgICAgICAgbWVtYmVyc2hpcExpbmsuaW5uZXJIVE1MID0gIkpv
aW4gY29tbXVuaXR5IjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCFD
b250ZXh0dWFsUG9wdXAuZGlzYWJsZUFKQVgpIHsKICAgICAgICAgICAgICAgIERP
TS5hZGRFdmVudExpc3RlbmVyKG1lbWJlcnNoaXBMaW5rLCAiY2xpY2siLCBmdW5j
dGlvbiAoZSkgewogICAgICAgICAgICAgICAgICAgIEV2ZW50LnByZXAoZSk7CiAg
ICAgICAgICAgICAgICAgICAgRXZlbnQuc3RvcChlKTsKICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gQ29udGV4dHVhbFBvcHVwLmNoYW5nZVJlbGF0aW9uKGRhdGEs
IGN0eFBvcHVwSWQsIG1lbWJlcnNoaXBfYWN0aW9uLCBlKTsgfSk7CiAgICAgICAg
ICAgIH0KCiAgICAgICAgICAgIG1lbWJlcnNoaXAuYXBwZW5kQ2hpbGQobWVtYmVy
c2hpcExpbmspOwogICAgICAgICAgICBjb250ZW50LmFwcGVuZENoaWxkKG1lbWJl
cnNoaXApOwogICAgICAgIH0KCiAgICAgICAgLy8gc2VuZCBtZXNzYWdlCiAgICAg
ICAgdmFyIG1lc3NhZ2U7CiAgICAgICAgaWYgKGRhdGEuaXNfbG9nZ2VkX2luICYm
IGRhdGEuaXNfcGVyc29uICYmICEgZGF0YS5pc19yZXF1ZXN0ZXIgJiYgZGF0YS51
cmxfbWVzc2FnZSkgewogICAgICAgICAgICBtZXNzYWdlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgic3BhbiIpOwoKICAgICAgICAgICAgdmFyIHNlbmRtZXNzYWdl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpOwogICAgICAgICAgICBzZW5k
bWVzc2FnZS5ocmVmID0gZGF0YS51cmxfbWVzc2FnZTsKICAgICAgICAgICAgc2Vu
ZG1lc3NhZ2UuaW5uZXJIVE1MID0gIlNlbmQgbWVzc2FnZSI7CgogICAgICAgICAg
ICBtZXNzYWdlLmFwcGVuZENoaWxkKHNlbmRtZXNzYWdlKTsKICAgICAgICAgICAg
Y29udGVudC5hcHBlbmRDaGlsZChtZXNzYWdlKTsKICAgICAgICB9CgogICAgICAg
IC8vIGZyaWVuZAogICAgICAgIHZhciBmcmllbmQ7CiAgICAgICAgaWYgKGRhdGEu
aXNfbG9nZ2VkX2luICYmICEgZGF0YS5pc19yZXF1ZXN0ZXIpIHsKICAgICAgICAg
ICAgZnJpZW5kID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwoKICAg
ICAgICAgICAgaWYgKCEgZGF0YS5pc19mcmllbmQpIHsKICAgICAgICAgICAgICAg
IC8vIGFkZCBmcmllbmQgbGluawogICAgICAgICAgICAgICAgdmFyIGFkZEZyaWVu
ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKICAgICAgICAgICAg
ICAgIHZhciBhZGRGcmllbmRMaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
YSIpOwogICAgICAgICAgICAgICAgYWRkRnJpZW5kTGluay5ocmVmID0gZGF0YS51
cmxfYWRkZnJpZW5kOwoKICAgICAgICAgICAgICAgIGlmIChkYXRhLmlzX2NvbW0p
CiAgICAgICAgICAgICAgICAgICAgYWRkRnJpZW5kTGluay5pbm5lckhUTUwgPSAi
V2F0Y2ggY29tbXVuaXR5IjsKICAgICAgICAgICAgICAgIGVsc2UgaWYgKGRhdGEu
aXNfc3luZGljYXRlZCkKICAgICAgICAgICAgICAgICAgICBhZGRGcmllbmRMaW5r
LmlubmVySFRNTCA9ICJTdWJzY3JpYmUgdG8gZmVlZCI7CiAgICAgICAgICAgICAg
ICBlbHNlCiAgICAgICAgICAgICAgICAgICAgYWRkRnJpZW5kTGluay5pbm5lckhU
TUwgPSAiQWRkIGZyaWVuZCI7CgogICAgICAgICAgICAgICAgYWRkRnJpZW5kLmFw
cGVuZENoaWxkKGFkZEZyaWVuZExpbmspOwogICAgICAgICAgICAgICAgRE9NLmFk
ZENsYXNzTmFtZShhZGRGcmllbmQsICJBZGRGcmllbmQiKTsKCiAgICAgICAgICAg
ICAgICBpZiAoIUNvbnRleHR1YWxQb3B1cC5kaXNhYmxlQUpBWCkgewogICAgICAg
ICAgICAgICAgICAgIERPTS5hZGRFdmVudExpc3RlbmVyKGFkZEZyaWVuZExpbmss
ICJjbGljayIsIGZ1bmN0aW9uIChlKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
IEV2ZW50LnByZXAoZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIEV2ZW50LnN0
b3AoZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBDb250ZXh0dWFs
UG9wdXAuY2hhbmdlUmVsYXRpb24oZGF0YSwgY3R4UG9wdXBJZCwgImFkZEZyaWVu
ZCIsIGUpOyB9KTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBm
cmllbmQuYXBwZW5kQ2hpbGQoYWRkRnJpZW5kKTsKICAgICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgICAgIC8vIHJlbW92ZSBmcmllbmQgbGluayAob21nISkK
ICAgICAgICAgICAgICAgIHZhciByZW1vdmVGcmllbmQgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJzcGFuIik7CiAgICAgICAgICAgICAgICB2YXIgcmVtb3ZlRnJp
ZW5kTGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKTsKICAgICAgICAg
ICAgICAgIHJlbW92ZUZyaWVuZExpbmsuaHJlZiA9IGRhdGEudXJsX2FkZGZyaWVu
ZDsKCiAgICAgICAgICAgICAgICBpZiAoZGF0YS5pc19jb21tKQogICAgICAgICAg
ICAgICAgICAgIHJlbW92ZUZyaWVuZExpbmsuaW5uZXJIVE1MID0gIlN0b3Agd2F0
Y2hpbmciOwogICAgICAgICAgICAgICAgZWxzZSBpZiAoZGF0YS5pc19zeW5kaWNh
dGVkKQogICAgICAgICAgICAgICAgICAgIHJlbW92ZUZyaWVuZExpbmsuaW5uZXJI
VE1MID0gIlVuc3Vic2NyaWJlIjsKICAgICAgICAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgICAgICAgICByZW1vdmVGcmllbmRMaW5rLmlubmVySFRNTCA9ICJSZW1v
dmUgZnJpZW5kIjsKCiAgICAgICAgICAgICAgICByZW1vdmVGcmllbmQuYXBwZW5k
Q2hpbGQocmVtb3ZlRnJpZW5kTGluayk7CiAgICAgICAgICAgICAgICBET00uYWRk
Q2xhc3NOYW1lKHJlbW92ZUZyaWVuZCwgIlJlbW92ZUZyaWVuZCIpOwoKICAgICAg
ICAgICAgICAgIGlmICghQ29udGV4dHVhbFBvcHVwLmRpc2FibGVBSkFYKSB7CiAg
ICAgICAgICAgICAgICAgICAgRE9NLmFkZEV2ZW50TGlzdGVuZXIocmVtb3ZlRnJp
ZW5kTGluaywgImNsaWNrIiwgZnVuY3Rpb24gKGUpIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgRXZlbnQuc3RvcChlKTsKICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIENvbnRleHR1YWxQb3B1cC5jaGFuZ2VSZWxhdGlvbihkYXRhLCBjdHhQ
b3B1cElkLCAicmVtb3ZlRnJpZW5kIiwgZSk7IH0pOwogICAgICAgICAgICAgICAg
fQoKICAgICAgICAgICAgICAgIGZyaWVuZC5hcHBlbmRDaGlsZChyZW1vdmVGcmll
bmQpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBET00uYWRkQ2xhc3NOYW1l
KHJlbGF0aW9uLCAiRnJpZW5kU3RhdHVzIik7CiAgICAgICAgfQoKICAgICAgICAv
LyBhZGQgYSBiYXIgYmV0d2VlbiBzdHVmZiBpZiB3ZSBoYXZlIGNvbW11bml0eSBh
Y3Rpb25zCiAgICAgICAgaWYgKChkYXRhLmlzX2xvZ2dlZF9pbiAmJiBkYXRhLmlz
X2NvbW0pIHx8IChtZXNzYWdlICYmIGZyaWVuZCkpCiAgICAgICAgICAgIGNvbnRl
bnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnIiKSk7Cgog
ICAgICAgIGlmIChmcmllbmQpCiAgICAgICAgICAgIGNvbnRlbnQuYXBwZW5kQ2hp
bGQoZnJpZW5kKTsKCiAgICAgICAgaWYgKChkYXRhLmlzX3BlcnNvbiB8fCBkYXRh
LmlzX2NvbW0pICYmICFkYXRhLmlzX3JlcXVlc3RlciAmJiBkYXRhLmNhbl9yZWNl
aXZlX3ZnaWZ0cykgewogICAgICAgICAgICB2YXIgdmdpZnQgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJzcGFuIik7CgogICAgICAgICAgICB2YXIgc2VuZHZnaWZ0
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpOwogICAgICAgICAgICBzZW5k
dmdpZnQuaHJlZiA9IHdpbmRvdy5TaXRlLnNpdGVyb290ICsgIi9zaG9wL3ZnaWZ0
LmJtbD90bz0iICsgZGF0YS51c2VybmFtZTsKICAgICAgICAgICAgc2VuZHZnaWZ0
LmlubmVySFRNTCA9ICJTZW5kIGEgdmlydHVhbCBnaWZ0IjsKCiAgICAgICAgICAg
IHZnaWZ0LmFwcGVuZENoaWxkKHNlbmR2Z2lmdCk7CgogICAgICAgICAgICBpZiAo
ZnJpZW5kKQogICAgICAgICAgICAgICAgY29udGVudC5hcHBlbmRDaGlsZChkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJiciIpKTsKCiAgICAgICAgICAgIGNvbnRlbnQu
YXBwZW5kQ2hpbGQodmdpZnQpOwogICAgICAgIH0KCiAgICAgICAgLy8gYmFuIC8g
dW5iYW4KICAgICAgICB2YXIgYmFuOwogICAgICAgIGlmIChkYXRhLmlzX2xvZ2dl
ZF9pbiAmJiAhIGRhdGEuaXNfcmVxdWVzdGVyKSB7CiAgICAgICAgICAgIGJhbiA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKCiAgICAgICAgICAgIGlm
KCFkYXRhLmlzX2Jhbm5lZCkgewogICAgICAgICAgICAgICAgLy8gaWYgdXNlciBu
byBiYW5uZWQgLSBzaG93IGJhbiBsaW5rCiAgICAgICAgICAgICAgICB2YXIgc2V0
QmFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwogICAgICAgICAg
ICAgICAgdmFyIHNldEJhbkxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJh
Iik7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIHNldEJhbkxpbmsu
aHJlZiA9IHdpbmRvdy5TaXRlLnNpdGVyb290ICsgJy9tYW5hZ2UvYmFudXNlcnMu
Ym1sJzsKICAgICAgICAgICAgICAgIHNldEJhbkxpbmsuaW5uZXJIVE1MID0gJ0Jh
biB1c2VyJzsKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgc2V0QmFu
LmFwcGVuZENoaWxkKHNldEJhbkxpbmspOwoKICAgICAgICAgICAgICAgIERPTS5h
ZGRDbGFzc05hbWUoc2V0QmFuLCAiU2V0QmFuIik7CgogICAgICAgICAgICAgICAg
aWYgKCFDb250ZXh0dWFsUG9wdXAuZGlzYWJsZUFKQVgpIHsKICAgICAgICAgICAg
ICAgICAgICBET00uYWRkRXZlbnRMaXN0ZW5lcihzZXRCYW5MaW5rLCAiY2xpY2si
LCBmdW5jdGlvbiAoZSkgewogICAgICAgICAgICAgICAgICAgICAgICBFdmVudC5w
cmVwKGUpOwogICAgICAgICAgICAgICAgICAgICAgICBFdmVudC5zdG9wKGUpOwog
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ29udGV4dHVhbFBvcHVwLmNo
YW5nZVJlbGF0aW9uKGRhdGEsIGN0eFBvcHVwSWQsICJzZXRCYW4iLCBlKTsgfSk7
CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgYmFuLmFwcGVuZENo
aWxkKHNldEJhbik7CgoKCiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICAgICAvLyBpZiB1c2UgYmFubmVkIC0gc2hvdyB1bmJhbiBsaW5rCiAgICAgICAg
ICAgICAgICB2YXIgc2V0VW5iYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJz
cGFuIik7CiAgICAgICAgICAgICAgICB2YXIgc2V0VW5iYW5MaW5rID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiYSIpOwogICAgICAgICAgICAgICAgc2V0VW5iYW5M
aW5rLmhyZWYgPSB3aW5kb3cuU2l0ZS5zaXRlcm9vdCArICcvbWFuYWdlL2JhbnVz
ZXJzLmJtbCc7CiAgICAgICAgICAgICAgICBzZXRVbmJhbkxpbmsuaW5uZXJIVE1M
ID0gJ1VuYmFuIHVzZXInOwogICAgICAgICAgICAgICAgc2V0VW5iYW4uYXBwZW5k
Q2hpbGQoc2V0VW5iYW5MaW5rKTsKCiAgICAgICAgICAgICAgICBET00uYWRkQ2xh
c3NOYW1lKHNldFVuYmFuLCAiU2V0VW5iYW4iKTsKCiAgICAgICAgICAgICAgICBp
ZiAoIUNvbnRleHR1YWxQb3B1cC5kaXNhYmxlQUpBWCkgewogICAgICAgICAgICAg
ICAgICAgIERPTS5hZGRFdmVudExpc3RlbmVyKHNldFVuYmFuTGluaywgImNsaWNr
IiwgZnVuY3Rpb24gKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgRXZlbnQu
cHJlcChlKTsKICAgICAgICAgICAgICAgICAgICAgICAgRXZlbnQuc3RvcChlKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENvbnRleHR1YWxQb3B1cC5j
aGFuZ2VSZWxhdGlvbihkYXRhLCBjdHhQb3B1cElkLCAic2V0VW5iYW4iLCBlKTsg
fSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgYmFuLmFwcGVu
ZENoaWxkKHNldFVuYmFuKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAg
ICAgaWYoYmFuKSB7CiAgICAgICAgICAgIGNvbnRlbnQuYXBwZW5kQ2hpbGQoZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiYnIiKSk7CiAgICAgICAgICAgIGNvbnRlbnQu
YXBwZW5kQ2hpbGQoYmFuKTsKICAgICAgICB9CgoKICAgICAgICAvLyBicmVhawog
ICAgICAgIGlmICgoZGF0YS5pc19sb2dnZWRfaW4gJiYgIWRhdGEuaXNfcmVxdWVz
dGVyKSB8fCB2Z2lmdCkgY29udGVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJiciIpKTsKCiAgICAgICAgLy8gdmlldyBsYWJlbAogICAgICAg
IHZhciB2aWV3TGFiZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7
CiAgICAgICAgdmlld0xhYmVsLmlubmVySFRNTCA9ICJWaWV3OiAiOwogICAgICAg
IGNvbnRlbnQuYXBwZW5kQ2hpbGQodmlld0xhYmVsKTsKCiAgICAgICAgLy8gam91
cm5hbAogICAgICAgIGlmIChkYXRhLmlzX3BlcnNvbiB8fCBkYXRhLmlzX2NvbW0g
fHwgZGF0YS5pc19zeW5kaWNhdGVkKSB7CiAgICAgICAgICAgIHZhciBqb3VybmFs
TGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKTsKICAgICAgICAgICAg
am91cm5hbExpbmsuaHJlZiA9IGRhdGEudXJsX2pvdXJuYWw7CgogICAgICAgICAg
ICBpZiAoZGF0YS5pc19wZXJzb24pCiAgICAgICAgICAgICAgICBqb3VybmFsTGlu
ay5pbm5lckhUTUwgPSAiSm91cm5hbCI7CiAgICAgICAgICAgIGVsc2UgaWYgKGRh
dGEuaXNfY29tbSkKICAgICAgICAgICAgICAgIGpvdXJuYWxMaW5rLmlubmVySFRN
TCA9ICJDb21tdW5pdHkiOwogICAgICAgICAgICBlbHNlIGlmIChkYXRhLmlzX3N5
bmRpY2F0ZWQpCiAgICAgICAgICAgICAgICBqb3VybmFsTGluay5pbm5lckhUTUwg
PSAiRmVlZCI7CgogICAgICAgICAgICBjb250ZW50LmFwcGVuZENoaWxkKGpvdXJu
YWxMaW5rKTsKICAgICAgICAgICAgY29udGVudC5hcHBlbmRDaGlsZChiYXIuY2xv
bmVOb2RlKHRydWUpKTsKICAgICAgICB9CgogICAgICAgIC8vIHByb2ZpbGUKICAg
ICAgICB2YXIgcHJvZmlsZUxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJh
Iik7CiAgICAgICAgcHJvZmlsZUxpbmsuaHJlZiA9IGRhdGEudXJsX3Byb2ZpbGU7
CiAgICAgICAgcHJvZmlsZUxpbmsuaW5uZXJIVE1MID0gIlByb2ZpbGUiOwogICAg
ICAgIGNvbnRlbnQuYXBwZW5kQ2hpbGQocHJvZmlsZUxpbmspOwoKCgogICAgICAg
IC8vIGNsZWFyaW5nIGRpdgogICAgICAgIHZhciBjbGVhcmluZ0RpdiA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICAgIERPTS5hZGRDbGFzc05h
bWUoY2xlYXJpbmdEaXYsICJsamNsZWFyIik7CiAgICAgICAgY2xlYXJpbmdEaXYu
aW5uZXJIVE1MID0gIiZuYnNwOyI7CiAgICAgICAgY29udGVudC5hcHBlbmRDaGls
ZChjbGVhcmluZ0Rpdik7CgogICAgICAgIGlwcHUuc2V0Q29udGVudEVsZW1lbnQo
aW5uZXIpOwogICAgfQp9CgovLyBhamF4IHJlcXVlc3QgdG8gY2hhbmdlIHJlbGF0
aW9uCkNvbnRleHR1YWxQb3B1cC5jaGFuZ2VSZWxhdGlvbiA9IGZ1bmN0aW9uIChp
bmZvLCBjdHhQb3B1cElkLCBhY3Rpb24sIGV2dCkgewogICAgaWYgKCFpbmZvKSBy
ZXR1cm4gdHJ1ZTsKCiAgICB2YXIgcG9zdERhdGEgPSB7CiAgICAgICAgInRhcmdl
dCI6IGluZm8udXNlcm5hbWUsCiAgICAgICAgImFjdGlvbiI6IGFjdGlvbgogICAg
fTsKCiAgICAvLyBnZXQgdGhlIGF1dGh0b2tlbgogICAgdmFyIGF1dGh0b2tlbiA9
IGluZm9bYWN0aW9uICsgIl9hdXRodG9rZW4iXTsKICAgIGlmICghYXV0aHRva2Vu
KSBsb2coIm5vIGF1dGggdG9rZW4gZm9yIGFjdGlvbiIgKyBhY3Rpb24pOwogICAg
cG9zdERhdGEuYXV0aF90b2tlbiA9IGF1dGh0b2tlbjsKCiAgICAvLyBuZWVkZWQg
b24gam91cm5hbCBzdWJkb21haW5zCiAgICB2YXIgdXJsID0gTGl2ZUpvdXJuYWwu
Z2V0QWpheFVybCgiY2hhbmdlcmVsYXRpb24iKTsKCiAgICAvLyBjYWxsYmFjayBm
cm9tIGNoYW5naW5nIHJlbGF0aW9uIHJlcXVlc3QKICAgIHZhciBjaGFuZ2VkUmVs
YXRpb24gPSBmdW5jdGlvbiAoZGF0YSkgewogICAgICAgIGlmIChDb250ZXh0dWFs
UG9wdXAuaG91cmdsYXNzKSBDb250ZXh0dWFsUG9wdXAuaGlkZUhvdXJnbGFzcygp
OwoKICAgICAgICBpZiAoZGF0YS5lcnJvcikgewogICAgICAgICAgICBDb250ZXh0
dWFsUG9wdXAuc2hvd05vdGUoZGF0YS5lcnJvciwgY3R4UG9wdXBJZCk7CiAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIGlmIChkYXRhLm5vdGUp
CiAgICAgICAgQ29udGV4dHVhbFBvcHVwLnNob3dOb3RlKGRhdGEubm90ZSwgY3R4
UG9wdXBJZCk7CgogICAgICAgIGlmICghZGF0YS5zdWNjZXNzKSByZXR1cm47Cgog
ICAgICAgIGlmIChDb250ZXh0dWFsUG9wdXAuY2FjaGVkUmVzdWx0c1tjdHhQb3B1
cElkXSkgewogICAgICAgICAgICB2YXIgdXBkYXRlZFByb3BzID0gWyJpc19mcmll
bmQiLCAiaXNfbWVtYmVyIiwgJ2lzX2Jhbm5lZCddOwogICAgICAgICAgICB1cGRh
dGVkUHJvcHMuZm9yRWFjaChmdW5jdGlvbiAocHJvcCkgewogICAgICAgICAgICAg
ICAgQ29udGV4dHVhbFBvcHVwLmNhY2hlZFJlc3VsdHNbY3R4UG9wdXBJZF1bcHJv
cF0gPSBkYXRhW3Byb3BdOwogICAgICAgICAgICB9KTsKICAgICAgICB9CgogICAg
ICAgIC8vIGlmIHRoZSBwb3B1cCBpcyB1cCwgcmVsb2FkIGl0CiAgICAgICAgQ29u
dGV4dHVhbFBvcHVwLnJlbmRlclBvcHVwKGN0eFBvcHVwSWQpOwogICAgfTsKCiAg
ICB2YXIgb3B0cyA9IHsKICAgICAgICAiZGF0YSI6IEhUVFBSZXEuZm9ybUVuY29k
ZWQocG9zdERhdGEpLAogICAgICAgICJtZXRob2QiOiAiUE9TVCIsCiAgICAgICAg
InVybCI6IHVybCwKICAgICAgICAib25FcnJvciI6IENvbnRleHR1YWxQb3B1cC5n
b3RFcnJvciwKICAgICAgICAib25EYXRhIjogY2hhbmdlZFJlbGF0aW9uCiAgICB9
OwoKICAgIC8vIGRvIGhvdXJnbGFzcyBhdCBtb3VzZSBjb29yZHMKICAgIHZhciBt
b3VzZUNvb3JkcyA9IERPTS5nZXRBYnNvbHV0ZUN1cnNvclBvc2l0aW9uKGV2dCk7
CiAgICBpZiAoIUNvbnRleHR1YWxQb3B1cC5ob3VyZ2xhc3MgJiYgbW91c2VDb29y
ZHMpIHsKICAgICAgICBDb250ZXh0dWFsUG9wdXAuaG91cmdsYXNzID0gbmV3IEhv
dXJnbGFzcygpOwogICAgICAgIENvbnRleHR1YWxQb3B1cC5ob3VyZ2xhc3MuaW5p
dChudWxsLCAibGpfaG91cmdsYXNzIik7CiAgICAgICAgQ29udGV4dHVhbFBvcHVw
LmhvdXJnbGFzcy5hZGRfY2xhc3NfbmFtZSgiQ29udGV4dHVhbFBvcHVwIik7IC8v
IHNvIG1vdXNpbmcgb3ZlciBob3VyZ2xhc3MgZG9lc24ndCBtYWtlIGN0eHBvcHVw
IHRoaW5rIG1vdXNlIGlzIG91dHNpZGUKICAgICAgICBDb250ZXh0dWFsUG9wdXAu
aG91cmdsYXNzLmhvdXJnbGFzc19hdChtb3VzZUNvb3Jkcy54LCBtb3VzZUNvb3Jk
cy55KTsKICAgIH0KCiAgICBIVFRQUmVxLmdldEpTT04ob3B0cyk7CgogICAgcmV0
dXJuIGZhbHNlOwp9CgovLyBjcmVhdGUgYSBsaXR0bGUgcG9wdXAgdG8gbm90aWZ5
IHRoZSB1c2VyIG9mIHNvbWV0aGluZwpDb250ZXh0dWFsUG9wdXAuc2hvd05vdGUg
PSBmdW5jdGlvbiAobm90ZSwgY3R4UG9wdXBJZCwgZWxlKSB7CiAgICBpZiAoQ29u
dGV4dHVhbFBvcHVwLmlwcHUpIHsKICAgICAgICAvLyBwb3AgdXAgdGhlIGJveCBy
aWdodCB1bmRlciB0aGUgZWxlbWVudAogICAgICAgIGVsZSA9IENvbnRleHR1YWxQ
b3B1cC5pcHB1LmdldEVsZW1lbnQoKTsKICAgIH0KCiAgICBMSl9JUFBVLnNob3dO
b3RlKG5vdGUsIGVsZSk7Cn0KCkNvbnRleHR1YWxQb3B1cC5oaWRlUG9wdXAgPSBm
dW5jdGlvbiAoY3R4UG9wdXBJZCkgewogICAgaWYgKENvbnRleHR1YWxQb3B1cC5o
b3VyZ2xhc3MpIENvbnRleHR1YWxQb3B1cC5oaWRlSG91cmdsYXNzKCk7CgogICAg
Ly8gZGVzdHJveSBwb3B1cCBmb3Igbm93CiAgICBpZiAoQ29udGV4dHVhbFBvcHVw
LmlwcHUpIHsKICAgICAgICBDb250ZXh0dWFsUG9wdXAuaXBwdS5oaWRlKCk7CiAg
ICAgICAgQ29udGV4dHVhbFBvcHVwLmlwcHUgPSBudWxsOwogICAgfQp9CgovLyBk
byBhamF4IHJlcXVlc3Qgb2YgdXNlciBpbmZvCkNvbnRleHR1YWxQb3B1cC5nZXRJ
bmZvID0gZnVuY3Rpb24gKHRhcmdldCwgY3R4UG9wdXBJZCkgewogICAgdmFyIHVz
ZXJuYW1lID0gdGFyZ2V0LnVzZXJuYW1lIHx8ICcnLAogICAgICAgIHVzZXJpZCA9
IHRhcmdldC51c2VyaWQgfHwgMCwKICAgICAgICB1cF91cmwgPSB0YXJnZXQudXBf
dXJsIHx8ICcnOwoKICAgIGlmIChDb250ZXh0dWFsUG9wdXAuY3VycmVudFJlcXVl
c3RzW2N0eFBvcHVwSWRdKSB7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIENv
bnRleHR1YWxQb3B1cC5jdXJyZW50UmVxdWVzdHNbY3R4UG9wdXBJZF0gPSAxOwoK
ICAgIHZhciBwYXJhbXMgPSBIVFRQUmVxLmZvcm1FbmNvZGVkICh7CiAgICAgICAg
InVzZXIiOiB1c2VybmFtZSwKICAgICAgICAidXNlcmlkIjogdXNlcmlkLAogICAg
ICAgICJ1c2VycGljX3VybCI6IHVwX3VybCwKICAgICAgICAibW9kZSI6ICJnZXRp
bmZvIgogICAgfSk7CgogICAgdmFyIHVybCA9IExpdmVKb3VybmFsLmdldEFqYXhV
cmwoImN0eHBvcHVwIik7CgogICAgLy8gZ290IGRhdGEgY2FsbGJhY2sKICAgIHZh
ciBnb3RJbmZvID0gZnVuY3Rpb24gKGRhdGEpIHsKICAgICAgICBpZiAoQ29udGV4
dHVhbFBvcHVwICYmIENvbnRleHR1YWxQb3B1cC5ob3VyZ2xhc3MpIENvbnRleHR1
YWxQb3B1cC5oaWRlSG91cmdsYXNzKCk7CgogICAgICAgIENvbnRleHR1YWxQb3B1
cC5jYWNoZWRSZXN1bHRzW1N0cmluZyhkYXRhLnVzZXJpZCldID0KICAgICAgICBD
b250ZXh0dWFsUG9wdXAuY2FjaGVkUmVzdWx0c1tkYXRhLnVzZXJuYW1lXSA9CiAg
ICAgICAgQ29udGV4dHVhbFBvcHVwLmNhY2hlZFJlc3VsdHNbZGF0YS51cmxfdXNl
cnBpY10gPSBkYXRhOwoKICAgICAgICBpZiAodXBfdXJsKSAvLyBub24gZGVmYXVs
dCB1c2VycGljCiAgICAgICAgICAgIENvbnRleHR1YWxQb3B1cC5jYWNoZWRSZXN1
bHRzW3VwX3VybF0gPSBkYXRhOwoKICAgICAgICBpZiAoZGF0YS5lcnJvcikgewog
ICAgICAgICAgICBpZiAoZGF0YS5ub3Nob3cpIHJldHVybjsKCiAgICAgICAgICAg
IENvbnRleHR1YWxQb3B1cC5zaG93Tm90ZShkYXRhLmVycm9yLCBjdHhQb3B1cElk
LCB0YXJnZXQpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAg
ICBpZiAoZGF0YS5ub3RlKQogICAgICAgIENvbnRleHR1YWxQb3B1cC5zaG93Tm90
ZShkYXRhLm5vdGUsIGRhdGEuY3R4UG9wdXBJZCwgdGFyZ2V0KTsKCiAgICAgICAg
Q29udGV4dHVhbFBvcHVwLmN1cnJlbnRSZXF1ZXN0c1tjdHhQb3B1cElkXSA9IG51
bGw7CgogICAgICAgIENvbnRleHR1YWxQb3B1cC5yZW5kZXJQb3B1cChjdHhQb3B1
cElkKTsKCiAgICAgICAgLy8gZXhwaXJlIGNhY2hlIGFmdGVyIDUgbWludXRlcwog
ICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewogICAgICAgICAgICBDb250
ZXh0dWFsUG9wdXAuY2FjaGVkUmVzdWx0c1tjdHhQb3B1cElkXSA9IG51bGw7CiAg
ICAgICAgfSwgNjAgKiAxMDAwKTsKICAgIH07CgogICAgSFRUUFJlcS5nZXRKU09O
KHsKICAgICAgICAidXJsIjogdXJsLAogICAgICAgICJtZXRob2QiOiAiR0VUIiwK
ICAgICAgICAiZGF0YSI6IHBhcmFtcywKICAgICAgICAib25EYXRhIjogZ290SW5m
bywKICAgICAgICAib25FcnJvciI6IENvbnRleHR1YWxQb3B1cC5nb3RFcnJvcgog
ICAgfSk7Cn0KCkNvbnRleHR1YWxQb3B1cC5oaWRlSG91cmdsYXNzID0gZnVuY3Rp
b24gKCkgewogICAgaWYgKENvbnRleHR1YWxQb3B1cC5ob3VyZ2xhc3MpIHsKICAg
ICAgICBDb250ZXh0dWFsUG9wdXAuaG91cmdsYXNzLmhpZGUoKTsKICAgICAgICBD
b250ZXh0dWFsUG9wdXAuaG91cmdsYXNzID0gbnVsbDsKICAgIH0KfQoKQ29udGV4
dHVhbFBvcHVwLmdvdEVycm9yID0gZnVuY3Rpb24gKGVycikgewogICAgaWYgKENv
bnRleHR1YWxQb3B1cC5ob3VyZ2xhc3MpIENvbnRleHR1YWxQb3B1cC5oaWRlSG91
cmdsYXNzKCk7Cn0KCi8vIHdoZW4gcGFnZSBsb2Fkcywgc2V0IHVwIGNvbnRleHR1
YWwgcG9wdXBzCkxpdmVKb3VybmFsLnJlZ2lzdGVyX2hvb2soInBhZ2VfbG9hZCIs
IENvbnRleHR1YWxQb3B1cC5zZXR1cCk7CkV4cGFuZGVyID0gZnVuY3Rpb24oKXsK
ICAgIHRoaXMuX19jYWxsZXJfXzsgICAgLy8gPGE+IEhUTUwgZWxlbWVudCBmcm9t
IHdoZXJlIEV4cGFuZGVyIHdhcyBjYWxsZWQKICAgIHRoaXMudXJsOyAgICAgICAg
ICAgLy8gZnVsbCB1cmwgb2YgdGhyZWFkIHRvIGJlIGV4cGFuZGVkCiAgICB0aGlz
LmlkOyAgICAgICAgICAgIC8vIGlkIG9mIHRoZSB0aHJlYWQKICAgIHRoaXMub25j
bGljazsKICAgIHRoaXMuc3RvcmVkX2NhbGxlcjsKICAgIHRoaXMuaWZyYW1lOyAg
ICAgICAgLy8gaWZyYW1lLCB3aGVyZSB0aGUgdGhyZWFkIHdpbGwgYmUgbG9hZGVk
CiAgICB0aGlzLmlzX1MxOyAgICAgICAgIC8vIGJvb2wgZmxhZywgdHJ1ZSA9PSBq
b3VybmFsIGlzIGluIFMxLCBmYWxzZSA9PSBpbiBTMgp9CkV4cGFuZGVyLkNvbGxl
Y3Rpb249e307CkV4cGFuZGVyLm1ha2UgPSBmdW5jdGlvbihlbCx1cmwsaWQsaXNf
UzEpewogICAgdmFyIGxvY2FsID0gKG5ldyBFeHBhbmRlcikuc2V0KHtfX2NhbGxl
cl9fOmVsLHVybDp1cmwucmVwbGFjZSgvIy4qJC8sJycpLGlkOmlkLGlzX1MxOiEh
aXNfUzF9KTsKICAgIGxvY2FsLmdldCgpOwp9CgpFeHBhbmRlci5wcm90b3R5cGUu
c2V0ID0gZnVuY3Rpb24ob3B0aW9ucyl7CiAgICBmb3IodmFyIG9wdCBpbiBvcHRp
b25zKXsKICAgICAgICB0aGlzW29wdF0gPSBvcHRpb25zW29wdF07CiAgICB9CiAg
ICByZXR1cm4gdGhpczsKfQoKRXhwYW5kZXIucHJvdG90eXBlLmdldENhbnZhcyA9
IGZ1bmN0aW9uKGlkLGNvbnRleHQpewogICAgcmV0dXJuIGNvbnRleHQuZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2xqY210JytpZCk7Cn0KCkV4cGFuZGVyLnByb3Rv
dHlwZS5wYXJzZUxKX2NtdGluZm8gPSBmdW5jdGlvbihjb250ZXh0LGNhbGxiYWNr
KXsKICAgIHZhciBtYXA9e30sIG5vZGUsIGo7CiAgICB2YXIgTEogPSBjb250ZXh0
LkxKX2NtdGluZm87CiAgICBpZighTEopcmV0dXJuIGZhbHNlOwogICAgZm9yKGog
aW4gTEopewogICAgICAgIGlmKC9eXGQqJC8udGVzdChqKSAmJiAobm9kZSA9IHRo
aXMuZ2V0Q2FudmFzKGosY29udGV4dCkpKXsKICAgICAgICAgICAgbWFwW2pdID0g
e2luZm86TEpbal0sY2FudmFzOm5vZGV9OwogICAgICAgICAgICBpZih0eXBlb2Yg
Y2FsbGJhY2sgPT0gJ2Z1bmN0aW9uJyl7CiAgICAgICAgICAgICAgICBjYWxsYmFj
ayhqLG1hcFtqXSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBy
ZXR1cm4gbWFwOwp9CgpFeHBhbmRlci5wcm90b3R5cGUubG9hZGluZ1N0YXRlT24g
PSBmdW5jdGlvbigpewogICAgdGhpcy5zdG9yZWRfY2FsbGVyID0gdGhpcy5fX2Nh
bGxlcl9fLmNsb25lTm9kZSh0cnVlKTsKICAgIHRoaXMuX19jYWxsZXJfXy5zZXRB
dHRyaWJ1dGUoJ2FscmVhZHlfY2xpY2tlZCcsJ2FscmVhZHlfY2xpY2tlZCcpOwog
ICAgdGhpcy5vbmNsaWNrID0gdGhpcy5fX2NhbGxlcl9fLm9uY2xpY2s7CiAgICB0
aGlzLl9fY2FsbGVyX18ub25jbGljayA9IGZ1bmN0aW9uKCl7cmV0dXJuIGZhbHNl
O30KICAgIHRoaXMuX19jYWxsZXJfXy5zdHlsZS5jb2xvciA9ICcjY2NjJzsKfQoK
RXhwYW5kZXIucHJvdG90eXBlLmxvYWRpbmdTdGF0ZU9mZiA9IGZ1bmN0aW9uKCl7
CiAgICBpZih0aGlzLl9fY2FsbGVyX18pewogICAgICAgIC8vIGFjdHVhbGx5LCB0
aGUgPGE+IGVsZW1lbnQgaXMgcmVtb3ZlZCBmcm9tIG1haW4gd2luZG93IGJ5CiAg
ICAgICAgLy8gY29weWluZyBjb21tZW50IGZyb20gaWZhbWUsIHNvIHRoaXMgY29k
ZSBpcyBub3QgZXhlY3V0ZWQgKD8pCiAgICAgICAgdGhpcy5fX2NhbGxlcl9fLnJl
bW92ZUF0dHJpYnV0ZSgnYWxyZWFkeV9jbGlja2VkJywnYWxyZWFkeV9jbGlja2Vk
Jyk7CiAgICAgICAgaWYodGhpcy5fX2NhbGxlcl9fLnBhcmVudE5vZGUpIHRoaXMu
X19jYWxsZXJfXy5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZCh0aGlzLnN0b3JlZF9j
YWxsZXIsdGhpcy5fX2NhbGxlcl9fKTsKICAgIH0KICAgIHZhciBvYmogPSB0aGlz
OwogICAgLy8gV2hlbiBmcmFtZSBpcyByZW1vdmVkIGltbWVkaWF0ZWx5LCBJRSBy
YWlzZXMgYW4gZXJyb3Igc29tZXRpbWVzCiAgICB3aW5kb3cuc2V0VGltZW91dChm
dW5jdGlvbigpe29iai5raWxsRnJhbWUoKX0sMTAwKTsKfQoKRXhwYW5kZXIucHJv
dG90eXBlLmtpbGxGcmFtZSA9IGZ1bmN0aW9uKCl7CiAgICBkb2N1bWVudC5ib2R5
LnJlbW92ZUNoaWxkKHRoaXMuaWZyYW1lKTsKfQoKRXhwYW5kZXIucHJvdG90eXBl
LmlzRnVsbENvbW1lbnQgPSBmdW5jdGlvbihjb21tZW50KXsKICAgIHJldHVybiAh
IU51bWJlcihjb21tZW50LmluZm8uZnVsbCk7Cn0KCkV4cGFuZGVyLnByb3RvdHlw
ZS5raWxsRHVwbGljYXRlID0gZnVuY3Rpb24oY29tbWVudHMpewogICAgdmFyIGNv
bW1lbnQ7CiAgICB2YXIgaWQsaWRfLGVsLGVsXzsKICAgIGZvcih2YXIgaiBpbiBj
b21tZW50cyl7CiAgICAgICAgaWYoIS9eXGQqJC8udGVzdChqKSljb250aW51ZTsK
ICAgICAgICBlbF8gPSBjb21tZW50c1tqXS5jYW52YXM7CiAgICAgICAgaWRfID0g
ZWxfLmlkOwogICAgICAgIGlkID0gaWRfLnJlcGxhY2UoL18kLywnJyk7CiAgICAg
ICAgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7CiAgICAgICAgaWYo
ZWwhPW51bGwpewogICAgICAgICAgICAvL2luIGNhc2Ugd2UgaGF2ZSBhIGR1cGxp
Y2F0ZTsKICAgICAgICAgICAgZWxfLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZWxf
KTsKICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgZWxfLmlkID0gaWQ7CiAgICAg
ICAgICAgIHdpbmRvdy5Db250ZXh0dWFsUG9wdXAgJiYgQ29udGV4dHVhbFBvcHVw
LnNlYXJjaEFuZEFkZChlbF8pOwogICAgICAgICAgICB3aW5kb3cuc2V0dXBBamF4
ICYmIHNldHVwQWpheChlbF8pOwogICAgICAgICAgICB3aW5kb3cuRVNOICYmIEVT
Ti5pbml0VHJhY2tCdG5zKGVsXyk7CiAgICAgICAgfQogICAgfQp9CgpFeHBhbmRl
ci5wcm90b3R5cGUuZ2V0UzF3aWR0aCA9IGZ1bmN0aW9uKGNhbnZhcyl7CiAgLy9U
T0RPOiAgbWF5IGJlIHdlIHNob3VsZCBzaG91bGQgYWRkIHNvbWllIElEIHRvIHRo
ZSBzcGFjZXIgaW1nIGluc3RlYWQgb2Ygc2VhcmNoaW5nIGl0CiAgLy95ZXQsIHRo
aXMgd29ya3MgdW50aWwgd2UgaGF2ZSBub3QgY2hhbmdlZCB0aGUgc3BhY2VycyB1
cmwgPSAnZG90LmdpZicpOwogIHZhciBpbWcsIGltZ3MsIGZvdW5kOwogIGltZ3Mg
PSBjYW52YXMuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2ltZycpOwogIGlmKCFpbWdz
KXJldHVybiBmYWxzZTsKICBmb3IodmFyIGo9MDtqPGltZ3MubGVuZ3RoO2orKyl7
CiAgICBpbWc9aW1nc1tqXTsKICAgIGlmKC9kb3RcLmdpZiQvLnRlc3QoaW1nLnNy
YykpewogICAgICAgIGZvdW5kID0gdHJ1ZTsKICAgICAgICBicmVhazsKICAgIH0K
ICB9CiAgaWYoZm91bmQmJmltZy53aWR0aClyZXR1cm4gTnVtYmVyKGltZy53aWR0
aCk7CiAgZWxzZSByZXR1cm4gZmFsc2U7Cn0KCkV4cGFuZGVyLnByb3RvdHlwZS5z
ZXRTMXdpZHRoID0gZnVuY3Rpb24oY2FudmFzLHcpewogIHZhciBpbWcsIGltZ3Ms
IGZvdW5kOwogIGltZ3MgPSBjYW52YXMuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2lt
ZycpOwogIGlmKCFpbWdzKXJldHVybiBmYWxzZTsKICBmb3IodmFyIGo9MDtqPGlt
Z3MubGVuZ3RoO2orKyl7CiAgICBpbWc9aW1nc1tqXTsKICAgIGlmKC9kb3RcLmdp
ZiQvLnRlc3QoaW1nLnNyYykpewogICAgICAgIGZvdW5kID0gdHJ1ZTsKICAgICAg
ICBicmVhazsKICAgIH0KICB9CiAgaWYoZm91bmQpaW1nLnNldEF0dHJpYnV0ZSgn
d2lkdGgnLHcpOwp9CgpFeHBhbmRlci5wcm90b3R5cGUub25Mb2FkSGFuZGxlciA9
IGZ1bmN0aW9uKGlmcmFtZSl7CiAgICAgICAgdmFyIGRvYyA9IGlmcmFtZS5jb250
ZW50RG9jdW1lbnQgfHwgaWZyYW1lLmNvbnRlbnRXaW5kb3c7CiAgICAgICAgZG9j
ID0gZG9jLmRvY3VtZW50fHxkb2M7CiAgICAgICAgdmFyIG9iaiA9IHRoaXM7CiAg
ICAgICAgdmFyIHdpbiA9IGRvYy5kZWZhdWx0Vmlld3x8ZG9jLnBhcmVudFdpbmRv
dzsKICAgICAgICB2YXIgY29tbWVudHNfaW50ZXJzZWN0aW9uPXt9OwogICAgICAg
IHZhciBjb21tZW50c19wYWdlID0gdGhpcy5wYXJzZUxKX2NtdGluZm8od2luZG93
KTsKICAgICAgICB2YXIgY29tbWVudHNfaWZyYW1lID0gdGhpcy5wYXJzZUxKX2Nt
dGluZm8od2luLGZ1bmN0aW9uKGlkLG5ld19jb21tZW50KXsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYoaWQgaW4gY29tbWVudHNfcGFnZSl7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tZW50
c19wYWdlW2lkXS5jYW52YXMuaWQgPSBjb21tZW50c19wYWdlW2lkXS5jYW52YXMu
aWQrJ18nOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29tbWVudHNfaW50ZXJzZWN0aW9uW2lkXSA9IGNvbW1lbnRzX3BhZ2VbaWRdOwog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29weSBj
b21tZW50IGZyb20gaWZyYW1lIHRvIG1haW4gd2luZG93IGlmCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAxKSB0aGUgY29tbWVudCBp
cyBjb2xsYXBzZWQgaW4gbWFpbiB3aW5kb3cgYW5kIGlzIGZ1bGwgaW4gaWZyYW1l
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAyKSBv
ciB0aGlzIGlzIHRoZSByb290IGNvbW1lbnQgb2YgdGhpcyB0aHJlYWQgKGl0IG1h
eSBiZSBmdWxsIGluCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyAgICAgbWFpbiB3aW5kb3cgdG9vLCBpdCdzIGNvcGllZCBzbyB0aGF0
IHRvIHJlbW92ZSAiZXhwYW5kIiBsaW5rIGZyb20gaXQpCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZigoIW9iai5pc0Z1bGxDb21tZW50
KGNvbW1lbnRzX3BhZ2VbaWRdKSAmJiBvYmouaXNGdWxsQ29tbWVudChuZXdfY29t
bWVudCkpIHx8IChpZD09PW9iai5pZCkpewogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHZhciB3OwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmKG9iai5pc19TMSl7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHcgPW9iai5n
ZXRTMXdpZHRoKGNvbW1lbnRzX3BhZ2VbaWRdLmNhbnZhcyk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1lbnRzX3BhZ2VbaWRd
LmNhbnZhcy5pbm5lckhUTUwgPSBuZXdfY29tbWVudC5jYW52YXMuaW5uZXJIVE1M
OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm
KG9iai5pc19TMSAmJiB3IT09bnVsbCl7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmouc2V0UzF3aWR0aChjb21t
ZW50c19wYWdlW2lkXS5jYW52YXMsdyk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vVE9ETzogbWF5IGJlIHRoaXMgc2hvdWxkIGJl
IHVuY29tbWVudGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy9jb21tZW50c19wYWdlW2lkXS5jYW52YXMuY2xhc3NOYW1lID0g
bmV3X2NvbW1lbnQuY2FudmFzLmNsYXNzTmFtZTsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBMSl9jbXRpbmZvW2lkXS5mdWxsPTE7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0vL2lmKGlkIGluIGNvbW1l
bnRzX3BhZ2UpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwog
ICAgICAgdGhpcy5raWxsRHVwbGljYXRlKGNvbW1lbnRzX2ludGVyc2VjdGlvbik7
CiAgICAgICB0aGlzLmxvYWRpbmdTdGF0ZU9mZigpOwogICAgICAgcmV0dXJuIHRy
dWU7Cn0KCgovL2p1c3QgZm9yIGRlYnVnZ2luZwpFeHBhbmRlci5wcm90b3R5cGUu
dG9TdHJpbmcgPSBmdW5jdGlvbigpewogICAgcmV0dXJuICdfXycrdGhpcy5pZCsn
X18nOwp9CgoKRXhwYW5kZXIucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uKCl7CiAg
ICBpZih0aGlzLl9fY2FsbGVyX18uZ2V0QXR0cmlidXRlKCdhbHJlYWR5X2NsaWNr
ZWQnKSl7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQogICAgdGhpcy5sb2Fk
aW5nU3RhdGVPbigpOwoKICAgIHZhciBpZnJhbWU7CiAgICBpZigvKkBjY19vbiAh
QCovMCl7CiAgICAgICAgLy8gYnJhbmNoIGZvciBJRQogICAgICAgIEV4cGFuZGVy
LkNvbGxlY3Rpb25bdGhpcy5pZF0gPSB0aGlzOwogICAgICAgIGlmcmFtZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJzxpZnJhbWUgb25sb2FkPSJFeHBhbmRlci5D
b2xsZWN0aW9uWycrdGhpcy5pZCsnXS5vbkxvYWRIYW5kbGVyKHRoaXMpIj4nKTsK
ICAgIH1lbHNlewogICAgICAgIC8vIGJyYW5jaCBmb3IgYWxsIG90aGVyIGJyb3dz
ZXJzCiAgICAgICAgaWZyYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaWZy
YW1lJyk7CiAgICAgICAgaWZyYW1lLm9ubG9hZCA9IGZ1bmN0aW9uKG9iail7cmV0
dXJuIGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmou
b25Mb2FkSGFuZGxlcihpZnJhbWUpOwogICAgICAgICAgICAgICAgICAgICAgICB9
fSh0aGlzKTsKICAgIH0KICAgIGlmcmFtZS5zdHlsZS5oZWlnaHQ9JzFweCc7CiAg
ICBpZnJhbWUuc3R5bGUud2lkdGg9JzFweCc7CiAgICBpZnJhbWUuc3R5bGUuZGlz
cGxheSA9ICdub25lJzsKICAgIGlmcmFtZS5zcmMgPSB0aGlzLnVybDsKICAgIGRv
Y3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaWZyYW1lKTsKICAgIHRoaXMuaWZyYW1l
PWlmcmFtZTsKICAgIHJldHVybiB0cnVlOwp9Ci8qCkphdmFTcmlwdCBPYmplY3Qg
Tm90YXRpb24gKEpTT04pCiRJZCQKCkNvcHlyaWdodCAoYykgMjAwNS0yMDA2LCBT
aXggQXBhcnQsIEx0ZC4KQWxsIHJpZ2h0cyByZXNlcnZlZC4KClJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAptb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCm1ldDoKCiAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Cm5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KCiAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgppbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCmRpc3RyaWJ1dGlvbi4KCiAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgIlNpeCBBcGFydCIgbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KClRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CkEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCk9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLApTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCkxJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLApEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAooSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KCiovCgoKSlNPTiA9IHsKICAgIHBhcnNl
OiBmdW5jdGlvbiggc3RyaW5nICkgewogICAgICAgIHN0cmluZyA9IHN0cmluZy5y
ZXBsYWNlKCAvPS9nLCAiXFx1M0QiICk7CiAgICAgICAgc3RyaW5nID0gc3RyaW5n
LnJlcGxhY2UoIC9cKC9nLCAiXFx1MjgiICk7CiAgICAgICAgdHJ5IHsKICAgICAg
ICAgICAgcmV0dXJuIGV2YWwoICIoIiArIHN0cmluZyArICIpIiApOwogICAgICAg
IH0gY2F0Y2goIGUgKSB7fQogICAgICAgIHJldHVybiB1bmRlZmluZWQ7CiAgICB9
Cn0KCgpCb29sZWFuLnByb3RvdHlwZS50b0pTT04gPSBmdW5jdGlvbigpIHsKICAg
IHJldHVybiB0aGlzLnRvU3RyaW5nKCk7Cn0KCgpOdW1iZXIucHJvdG90eXBlLnRv
SlNPTiA9IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuIGlzRmluaXRlKCB0aGlzICkg
PyB0aGlzLnRvU3RyaW5nKCkgOiAiMCI7Cn0KCgpEYXRlLnByb3RvdHlwZS50b0pT
T04gPSBmdW5jdGlvbigpIHsKICAgIHJldHVybiB0aGlzLnRvVVRDSVNPU3RyaW5n
CiAgICAgICAgPyB0aGlzLnRvVVRDSVNPU3RyaW5nKCkudG9KU09OKCkKICAgICAg
ICA6IHRoaXMudG9TdHJpbmcoKS50b0pTT04oKTsKfQoKClN0cmluZy5wcm90b3R5
cGUudG9KU09OID0gZnVuY3Rpb24oKSB7CiAgICByZXR1cm4gJyInICsgdGhpcy5l
c2NhcGVKUygpICsgJyInOwp9CgoKUmVnRXhwLnByb3RvdHlwZS50b0pTT04gPSBm
dW5jdGlvbigpIHsKICAgIHJldHVybiB0aGlzLnRvU3RyaW5nKCkudG9KU09OKCk7
Cn0KCgpGdW5jdGlvbi5wcm90b3R5cGUudG9KU09OID0gZnVuY3Rpb24oKSB7CiAg
ICByZXR1cm4gdGhpcy50b1N0cmluZygpLnRvSlNPTigpOwp9CgoKQXJyYXkucHJv
dG90eXBlLnRvSlNPTiA9IGZ1bmN0aW9uKCByb290ICkgewogICAgLy8gY3J1ZGUg
cmVjdXJzaW9uIGRldGVjdGlvbgogICAgaWYoICFyb290ICkKICAgICAgICByb290
ID0gdGhpczsKICAgIGVsc2UgaWYoIHJvb3QgPT0gdGhpcyApCiAgICAgICAgcmV0
dXJuICJbXSI7CiAgICAKICAgIHZhciBvdXQgPSBbICJbIiBdOwogICAgZm9yKCB2
YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrICkgewogICAgICAgIGlmKCBv
dXQubGVuZ3RoID4gMSApCiAgICAgICAgICAgIG91dC5wdXNoKCAiLCIgKTsKICAg
ICAgICBpZiggdHlwZW9mIHRoaXNbIGkgXSA9PSAidW5kZWZpbmVkIiB8fCB0aGlz
WyBpIF0gPT0gbnVsbCApCiAgICAgICAgICAgIG91dC5wdXNoKCAibnVsbCIgKTsK
ICAgICAgICBlbHNlIGlmKCAhdGhpc1sgaSBdLnRvSlNPTiApCiAgICAgICAgICAg
IG91dC5wdXNoKCAie30iICk7CiAgICAgICAgZWxzZQogICAgICAgICAgICBvdXQu
cHVzaCggdGhpc1sgaSBdLnRvSlNPTiggcm9vdCApICk7CiAgICB9CiAgICBvdXQu
cHVzaCggIl0iICk7CiAgICByZXR1cm4gb3V0LmpvaW4oICIiICk7Cn0KCgpPYmpl
Y3QucHJvdG90eXBlLnRvSlNPTiA9IGZ1bmN0aW9uKCByb290ICkgewogICAgLy8g
Y3J1ZGUgcmVjdXJzaW9uIGRldGVjdGlvbgogICAgaWYoICFyb290ICkKICAgICAg
ICByb290ID0gdGhpczsKICAgIGVsc2UgaWYoIHJvb3QgPT0gdGhpcyApCiAgICAg
ICAgcmV0dXJuICJ7fSI7CiAgICAKICAgIHZhciBvdXQgPSBbICJ7IiBdOwogICAg
Zm9yKCB2YXIgaSBpbiB0aGlzICkgewogICAgICAgIGlmKCB0eXBlb2YgdGhpc1sg
aSBdID09ICJ1bmRlZmluZWQiICkKICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgaWYoIG91dC5sZW5ndGggPiAxICkKICAgICAgICAgICAgb3V0LnB1c2goICIs
IiApOwogICAgICAgIG91dC5wdXNoKCBpLnRvSlNPTigpICk7CiAgICAgICAgaWYo
IHRoaXNbIGkgXSA9PSBudWxsICkKICAgICAgICAgICAgb3V0LnB1c2goICI6bnVs
bCIgKTsKICAgICAgICBlbHNlIGlmKCB0eXBlb2YgdGhpc1sgaSBdID09ICJmdW5j
dGlvbiIgKQogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICBlbHNlIGlmKCAh
dGhpc1sgaSBdLnRvSlNPTiApCiAgICAgICAgICAgIG91dC5wdXNoKCAiOnt9IiAp
OwogICAgICAgIGVsc2UKICAgICAgICAgICAgb3V0LnB1c2goICI6IiwgdGhpc1sg
aSBdLnRvSlNPTiggcm9vdCApICk7CiAgICB9CiAgICBvdXQucHVzaCggIn0iICk7
CiAgICByZXR1cm4gb3V0LmpvaW4oICIiICk7Cn0KLyoKVGVtcGxhdGUgLSBDb3B5
cmlnaHQgMjAwNSBTaXggQXBhcnQKJElkOiB0ZW1wbGF0ZS5qcyAzNSAyMDA2LTAy
LTE4IDAwOjQ2OjU1WiBtaXNjaGEgJAoKQ29weXJpZ2h0IChjKSAyMDA1LCBTaXgg
QXBhcnQsIEx0ZC4KQWxsIHJpZ2h0cyByZXNlcnZlZC4KClJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAptb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCm1ldDoKCiAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Cm5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KCiAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgppbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCmRpc3RyaWJ1dGlvbi4KCiAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgIlNpeCBBcGFydCIgbm9yIHRoZSBuYW1lcyBvZiBp
dHMKY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KClRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCkEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCk9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLApTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCkxJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLApEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAooSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KCiovCgoKLyogY29yZSB0ZW1wbGF0ZSBvYmpl
Y3QgKi8KClRlbXBsYXRlID0gbmV3IENsYXNzKCBPYmplY3QsIHsKICAgIGJlZ2lu
VG9rZW46ICJbIyIsCiAgICBlbmRUb2tlbjogIiNdIiwKICAgIAogICAgCiAgICBp
bml0OiBmdW5jdGlvbiggc291cmNlICkgewogICAgICAgIGlmKCBzb3VyY2UgKQog
ICAgICAgICAgICB0aGlzLmNvbXBpbGUoIHNvdXJjZSApOwogICAgfSwKICAgIAog
ICAgCiAgICBjb21waWxlOiBmdW5jdGlvbiggc291cmNlICkgewogICAgICAgIHZh
ciBzdGF0ZW1lbnRzID0gWwogICAgICAgICAgICAiY29udGV4dC5vcGVuKCk7IiwK
ICAgICAgICAgICAgIndpdGgoIGNvbnRleHQudmFycyApIHsiCiAgICAgICAgXTsK
ICAgICAgICAKICAgICAgICB2YXIgc3RhcnQgPSAwLCBlbmQgPSAtdGhpcy5lbmRU
b2tlbi5sZW5ndGg7CiAgICAgICAgd2hpbGUoIHN0YXJ0IDwgc291cmNlLmxlbmd0
aCApIHsKICAgICAgICAgICAgZW5kICs9IHRoaXMuZW5kVG9rZW4ubGVuZ3RoOwog
ICAgICAgICAgICAKICAgICAgICAgICAgLy8gcGxhaW50ZXh0CiAgICAgICAgICAg
IHN0YXJ0ID0gc291cmNlLmluZGV4T2YoIHRoaXMuYmVnaW5Ub2tlbiwgZW5kICk7
CiAgICAgICAgICAgIGlmKCBzdGFydCA8IDAgKQogICAgICAgICAgICAgICAgc3Rh
cnQgPSBzb3VyY2UubGVuZ3RoOwogICAgICAgICAgICBpZiggc3RhcnQgPiBlbmQg
KQogICAgICAgICAgICAgICAgc3RhdGVtZW50cy5wdXNoKCAiY29udGV4dC53cml0
ZSggIiwgc291cmNlLnN1YnN0cmluZyggZW5kLCBzdGFydCApLnRvSlNPTigpLCAi
ICk7IiApOwogICAgICAgICAgICBzdGFydCArPSB0aGlzLmJlZ2luVG9rZW4ubGVu
Z3RoOwogICAgICAgICAgICAKICAgICAgICAgICAgLy8gY29kZQogICAgICAgICAg
ICBpZiggc3RhcnQgPj0gc291cmNlLmxlbmd0aCApCiAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgZW5kID0gc291cmNlLmluZGV4T2YoIHRoaXMuZW5k
VG9rZW4sIHN0YXJ0ICk7CiAgICAgICAgICAgIGlmKCBlbmQgPCAwICkKICAgICAg
ICAgICAgICAgIHRocm93ICJUZW1wbGF0ZSBwYXJzaW5nIGVycm9yOiBVbmFibGUg
dG8gZmluZCBtYXRjaGluZyBlbmQgdG9rZW4gKCIgKyB0aGlzLmVuZFRva2VuICsg
IikuIjsKICAgICAgICAgICAgdmFyIGxlbmd0aCA9IChlbmQgLSBzdGFydCk7CiAg
ICAgICAgICAgIAogICAgICAgICAgICAvLyBlbXB0eSB0YWcKICAgICAgICAgICAg
aWYoIGxlbmd0aCA8PSAwICkKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICAgICAKICAgICAgICAgICAgLy8gY29tbWVudAogICAgICAgICAgICBlbHNl
IGlmKCBsZW5ndGggPj0gNCAmJgogICAgICAgICAgICAgICAgc291cmNlLmNoYXJB
dCggc3RhcnQgKSA9PSAiLSIgJiYgc291cmNlLmNoYXJBdCggc3RhcnQgKyAxICkg
PT0gIi0iICYmCiAgICAgICAgICAgICAgICBzb3VyY2UuY2hhckF0KCBlbmQgLSAx
ICkgPT0gIi0iICYmIHNvdXJjZS5jaGFyQXQoIGVuZCAtIDIgKSA9PSAiLSIgKQog
ICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIAogICAgICAgICAg
ICAvLyB3cml0ZQogICAgICAgICAgICBlbHNlIGlmKCBzb3VyY2UuY2hhckF0KCBz
dGFydCApID09ICI9IiApCiAgICAgICAgICAgICAgICBzdGF0ZW1lbnRzLnB1c2go
ICJjb250ZXh0LndyaXRlKCAiLCBzb3VyY2Uuc3Vic3RyaW5nKCBzdGFydCArIDEs
IGVuZCApLCAiICk7IiApOwogICAgICAgICAgICAKICAgICAgICAgICAgLy8gZmls
dGVycwogICAgICAgICAgICBlbHNlIGlmKCBzb3VyY2UuY2hhckF0KCBzdGFydCAp
ID09ICJ8IiApIHsKICAgICAgICAgICAgICAgIHN0YXJ0ICs9IDE7CgogICAgICAg
ICAgICAgICAgLy8gZmluZCB0aGUgZmlyc3Qgd2hpdGVzcGFjZQogICAgICAgICAg
ICAgICAgdmFyIGFmdGVyZmlsdGVycyA9IHNvdXJjZS5zdWJzdHJpbmcoc3RhcnQs
ZW5kKS5zZWFyY2goL1xzLyk7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAg
ICAgIHZhciBmaWx0ZXJzOwogICAgICAgICAgICAgICAgaWYgKGFmdGVyZmlsdGVy
cyA+IDApIHsKICAgICAgICAgICAgICAgICAgICAvLyBhbGxvdyBwaXBlcyBvciBj
b21tYXMgdG8gc2VwZXJhdGUgZmlsdGVycwogICAgICAgICAgICAgICAgICAgIC8v
IHNwbGl0IHRoZSBzdHJpbmcsIHJldmVyc2UgYW5kIHJlam9pbiB0byByZXZlcnNl
IGl0CiAgICAgICAgICAgICAgICAgICAgZmlsdGVycyA9IHNvdXJjZS5zdWJzdHJp
bmcoc3RhcnQsc3RhcnQgKyBhZnRlcmZpbHRlcnMpLnJlcGxhY2UoLyx8XHwvZywi
Iikuc3BsaXQoJycpOwogICAgICAgICAgICAgICAgICAgIGFmdGVyZmlsdGVycyAr
PSAxOyAvLyBkYXRhIHN0YXJ0cyBhZnRlciB3aGl0ZXNwYWNlIGFuZCBmaWx0ZXIg
bGlzdAogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAg
ICAvLyBkZWZhdWx0IHRvIGVzY2FwZUhUTUwKICAgICAgICAgICAgICAgICAgICBm
aWx0ZXJzID0gWyJoIl07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAvLyB3ZSBoYXZlIHRvIGRvIHRoZW0gaW4gcmV2ZXJzZSBvcmRlcgogICAgICAg
ICAgICAgICAgZmlsdGVycyA9IGZpbHRlcnMucmV2ZXJzZSgpOwogICAgICAgICAg
ICAgICAKICAgICAgICAgICAgICAgIC8vIHN0YXJ0IHdpdGggb3VyIG9yaWdpbmFs
IGZpbHRlciBudW1iZXIKICAgICAgICAgICAgICAgIHZhciBudW1maWx0ZXJzID0g
ZmlsdGVycy5sZW5ndGg7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg
IC8vIGFkZCB0aGUgdGV4dCBiZXR3ZWVuIFsjfCAgI10KICAgICAgICAgICAgICAg
IGZpbHRlcnMucHVzaChzb3VyY2Uuc3Vic3RyaW5nKCBzdGFydCArIGFmdGVyZmls
dGVycywgZW5kICkpOwogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAv
LyBhZGp1c3QgZWFjaCBmaWx0ZXIgaW50byBhIGZ1bmN0aW9uIGNhbGwKICAgICAg
ICAgICAgICAgIC8vIGVnLiB1ICggaCAoIEggKCBibGFoICkgKSApCiAgICAgICAg
ICAgICAgICBmb3IgKGk9MDsgaTxudW1maWx0ZXJzOyBpKyspIHsKICAgICAgICAg
ICAgICAgICAgICBmaWx0ZXJzW2ldID0gImNvbnRleHQuZi4iK2ZpbHRlcnNbaV0r
IiggIjsKICAgICAgICAgICAgICAgICAgICBmaWx0ZXJzLnB1c2goIiApIik7CiAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg
IHN0YXRlbWVudHMucHVzaCggImNvbnRleHQud3JpdGUoICIgKyBmaWx0ZXJzLmpv
aW4oJycpICsgIiApOyIpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAg
ICAgICAgICAvLyBldmFsdWF0ZQogICAgICAgICAgICBlbHNlCiAgICAgICAgICAg
ICAgICBzdGF0ZW1lbnRzLnB1c2goIHNvdXJjZS5zdWJzdHJpbmcoIHN0YXJ0LCBl
bmQgKSApOwogICAgICAgIH0KICAgICAgICAKICAgICAgICBzdGF0ZW1lbnRzLnB1
c2goICJ9IHJldHVybiBjb250ZXh0LmNsb3NlKCk7IiApOwoKICAgICAgICB0aGlz
LmV4ZWMgPSBuZXcgRnVuY3Rpb24oICJjb250ZXh0Iiwgc3RhdGVtZW50cy5qb2lu
KCAiXG4iICkgKTsKICAgIH0sCiAgICAKICAgIAogICAgZXhlYzogZnVuY3Rpb24o
IGNvbnRleHQgKSB7CiAgICAgICAgcmV0dXJuICIiOwogICAgfQp9ICk7CgoKLyog
c3RhdGljIG1lbWJlcnMgKi8KClRlbXBsYXRlLnRlbXBsYXRlcyA9IHt9OwoKCi8q
IGNvbnRleHQgb2JqZWN0ICovCgpUZW1wbGF0ZS5Db250ZXh0ID0gbmV3IENsYXNz
KCBPYmplY3QsIHsKICAgIGluaXQ6IGZ1bmN0aW9uKCB2YXJzLCB0ZW1wbGF0ZXMg
KSB7CiAgICAgICAgdGhpcy52YXJzID0gdmFycyB8fCB7fTsKICAgICAgICB0aGlz
LnRlbXBsYXRlcyA9IHRlbXBsYXRlcyB8fCBUZW1wbGF0ZS50ZW1wbGF0ZXM7CiAg
ICAgICAgdGhpcy5zdGFjayA9IFtdOwogICAgICAgIHRoaXMub3V0ID0gW107CiAg
ICAgICAgdGhpcy5mID0gVGVtcGxhdGUuRmlsdGVyOwogICAgfSwKICAgIAogICAg
CiAgICBpbmNsdWRlOiBmdW5jdGlvbiggbmFtZSApIHsKICAgICAgICByZXR1cm4g
dGhpcy50ZW1wbGF0ZXNbIG5hbWUgXS5leGVjKCB0aGlzICk7CiAgICB9LAoKCiAg
ICB3cml0ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgdGhpcy5vdXQucHVzaC5hcHBs
eSggdGhpcy5vdXQsIGFyZ3VtZW50cyApOwogICAgfSwKCgogICAgd3JpdGVsbjog
ZnVuY3Rpb24oKSB7CiAgICAgICAgdGhpcy53cml0ZS5hcHBseSggdGhpcywgYXJn
dW1lbnRzICk7CiAgICAgICAgdGhpcy53cml0ZSggIlxuIiApOwogICAgfSwKCiAg
ICAKICAgIGNsZWFyOiBmdW5jdGlvbigpIHsKICAgICAgICB0aGlzLm91dC5sZW5n
dGggPSAwOwogICAgfSwKCgogICAgZ2V0T3V0cHV0OiBmdW5jdGlvbigpIHsKICAg
ICAgICByZXR1cm4gdGhpcy5vdXQuam9pbiggIiIgKTsKICAgIH0sCiAgICAKICAg
IAogICAgb3BlbjogZnVuY3Rpb24oKSB7CiAgICAgICAgdGhpcy5zdGFjay5wdXNo
KCB0aGlzLm91dCApOwogICAgICAgIHRoaXMub3V0ID0gW107CiAgICB9LAogICAg
CiAgICAKICAgIGNsb3NlOiBmdW5jdGlvbigpIHsKICAgICAgICB2YXIgcmVzdWx0
ID0gdGhpcy5nZXRPdXRwdXQoKTsKICAgICAgICB0aGlzLm91dCA9IHRoaXMuc3Rh
Y2sucG9wKCkgfHwgW107CiAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgIH0KICAg
Cn0gKTsKCi8qIGZpbHRlcnMgKi8KClRlbXBsYXRlLkZpbHRlciA9IHsKCiAgICAv
LyBlc2NhcGVIVE1MCiAgICBoOiBmdW5jdGlvbihvYmopIHsKICAgICAgICB2YXIg
ZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICAgICAgdmFy
IHRleHROb2RlID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUob2JqKTsKICAgICAg
ICBkaXYuYXBwZW5kQ2hpbGQodGV4dE5vZGUpOwogICAgICAgIHJldHVybiAoZGl2
LmlubmVySFRNTCk7CiAgICB9LAoKICAgIC8vIHVuZXNjYXBlSFRNTAogICAgSDog
ZnVuY3Rpb24ob2JqKSB7CiAgICAgICAgcmV0dXJuICh1bmVzY2FwZShvYmopKTsK
ICAgIH0sCgogICAgLy8gZW5jb2RlVVJMCiAgICB1OiBmdW5jdGlvbihvYmopIHsK
ICAgICAgICByZXR1cm4gKGVzY2FwZShvYmopLnJlcGxhY2UoL1wvL2csIiUyRiIp
KTsKICAgIH0KCn07CgpVc2VycGljU2VsZWN0ID0gbmV3IENsYXNzIChMSl9JUFBV
LCB7CiAgaW5pdDogZnVuY3Rpb24gKCkgewogICAgVXNlcnBpY1NlbGVjdC5zdXBl
ckNsYXNzLmluaXQuYXBwbHkodGhpcywgWyJDaG9vc2UgVXNlcnBpYyJdKTsKCiAg
ICB0aGlzLnNldERpbWVuc2lvbnMoIjU1MHB4IiwgIjQ0MXB4Iik7CgogICAgdGhp
cy5zZWxlY3RlZFBpY2lkID0gbnVsbDsKICAgIHRoaXMuZGlzcGxheVBpY3MgPSBu
dWxsOwogICAgdGhpcy5kYXRhTG9hZGVkID0gZmFsc2U7CiAgICB0aGlzLmltZ1Nj
YWxlID0gMTsKCiAgICB0aGlzLnBpY1NlbGVjdGVkQ2FsbGJhY2sgPSBudWxsOwoK
ICAgIHZhciB0ZW1wbGF0ZSA9IG5ldyBUZW1wbGF0ZSggVXNlcnBpY1NlbGVjdC50
b3AgKTsKICAgIHZhciB0ZW1wbGF0ZXMgPSB7IGJvZHk6IHRlbXBsYXRlIH07CiAg
ICB0aGlzLnNldENvbnRlbnQodGVtcGxhdGUuZXhlYyggbmV3IFRlbXBsYXRlLkNv
bnRleHQoIHt9LCB0ZW1wbGF0ZXMgKSApKTsKICAgIHRoaXMuc2V0SGlkZGVuQ2Fs
bGJhY2sodGhpcy5oaWRkZW4uYmluZCh0aGlzKSk7CiAgfSwKCiAgc2hvdzogZnVu
Y3Rpb24oKSB7CiAgICBVc2VycGljU2VsZWN0LnN1cGVyQ2xhc3Muc2hvdy5hcHBs
eSh0aGlzLCBbXSk7CgogICAgaWYgKCF0aGlzLmRhdGFMb2FkZWQpIHsKICAgICAg
dGhpcy5zZXRTdGF0dXMoIkxvYWRpbmcuLi4iKTsKICAgICAgdGhpcy5sb2FkUGlj
cygpOwogICAgICB0aGlzLmRhdGFMb2FkZWQgPSB0cnVlOwogICAgfSBlbHNlIHsK
ICAgICAgdGhpcy5yZWRyYXcoKTsKICAgIH0KICB9LAoKICAvLyBoaWRlIHRoZSBo
b3VyZ2xhc3Mgd2hlbiB3aW5kb3cgaXMgY2xvc2VkCiAgaGlkZGVuOiBmdW5jdGlv
biAoKSB7CiAgICBpZiAodGhpcy5ob3VyZ2xhc3MpCiAgICAgIHRoaXMuaG91cmds
YXNzLmhpZGUoKTsKICB9LAoKICAvLyBzZXQgYSBjYWxsYmFjayB0byBiZSBjYWxs
ZWQgd2hlbiB0aGUgInNlbGVjdCIgYnV0dG9uIGlzIGNsaWNrZWQKICBzZXRQaWNT
ZWxlY3RlZENhbGxiYWNrOiBmdW5jdGlvbiAoY2FsbGJhY2spIHsKICAgIHRoaXMu
cGljU2VsZWN0ZWRDYWxsYmFjayA9IGNhbGxiYWNrOwogIH0sCgogIC8vIGNhbGxl
ZCB3aGVuIHRoZSAic2VsZWN0IiBidXR0b24gaXMgY2xpY2tlZAogIGNsb3NlQnV0
dG9uQ2xpY2tlZDogZnVuY3Rpb24gKGV2dCkgewogICAgICBpZiAodGhpcy5waWNT
ZWxlY3RlZENhbGxiYWNrKSB7CiAgICAgICAgICB2YXIgc2VsZWN0ZWRLd3MgPSBb
XTsKICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkUGljaWQpIHsKICAgICAgICAg
ICAgICB2YXIga3dzID0gdGhpcy5waWNzLnBpY3NbdGhpcy5zZWxlY3RlZFBpY2lk
KyIiXS5rZXl3b3JkczsKICAgICAgICAgICAgICBpZiAoa3dzICYmIGt3cy5sZW5n
dGgpIHNlbGVjdGVkS3dzID0ga3dzOwogICAgICAgICAgfQoKICAgICAgICAgIHRo
aXMucGljU2VsZWN0ZWRDYWxsYmFjayh0aGlzLnNlbGVjdGVkUGljaWQsIHNlbGVj
dGVkS3dzKTsKICAgICAgfQoKICAgIHRoaXMuaGlkZSgpOwogIH0sCgogIHNldFN0
YXR1czogZnVuY3Rpb24oc3RhdHVzKSB7CiAgICAgIHRoaXMuc2V0RmllbGQoeydz
dGF0dXMnOiBzdGF0dXN9KTsKICB9LAoKICBzZXRGaWVsZDogZnVuY3Rpb24odmFy
cykgewogICAgdmFyIHRlbXBsYXRlID0gbmV3IFRlbXBsYXRlKCBVc2VycGljU2Vs
ZWN0LmR5bmFtaWMgKTsKICAgIHZhciB1c2VycGljc190ZW1wbGF0ZSA9IG5ldyBU
ZW1wbGF0ZSggVXNlcnBpY1NlbGVjdC51c2VycGljcyApOwoKICAgIHZhciB0ZW1w
bGF0ZXMgPSB7CiAgICAgIGJvZHk6IHRlbXBsYXRlLAogICAgICB1c2VycGljczog
dXNlcnBpY3NfdGVtcGxhdGUKICAgIH07CgogICAgaWYgKCF2YXJzLnBpY3MpCiAg
ICAgIHZhcnMucGljcyA9IHRoaXMucGljcyB8fCB7fTsKCiAgICBpZiAoIXZhcnMu
c3RhdHVzKQogICAgICB2YXJzLnN0YXR1cyA9ICIiOwoKICAgIHZhcnMuaW1nU2Nh
bGUgPSB0aGlzLmltZ1NjYWxlOwoKICAgICQoInVwc19keW5hbWljIikuaW5uZXJI
VE1MID0gKHRlbXBsYXRlLmV4ZWMoIG5ldyBUZW1wbGF0ZS5Db250ZXh0KCB2YXJz
LCB0ZW1wbGF0ZXMgKSApKTsKCiAgICBpZiAoIXZhcnMucGljcy5pZHMpCiAgICAg
IHJldHVybjsKCiAgICAvLyB3ZSByZWRyZXcgdGhlIHdpbmRvdyBzbyByZXNlbGVj
dCB0aGUgY3VycmVudCBzZWxlY3Rpb24sIGlmIGFueQogICAgaWYgKHRoaXMuc2Vs
ZWN0ZWRQaWNpZCkKICAgICAgdGhpcy5zZWxlY3RQaWModGhpcy5zZWxlY3RlZFBp
Y2lkKTsKCiAgICB2YXIgU1QgPSBuZXcgU2VsZWN0YWJsZVRhYmxlKCk7CiAgICBT
VC5pbml0KHsKICAgICAgICAidGFibGUiOiAkKCJ1cHNfdXNlcnBpY3NfdCIpLAog
ICAgICAgICAgICAic2VsZWN0ZWRDbGFzcyI6ICJ1cHNfc2VsZWN0ZWRfY2VsbCIs
CiAgICAgICAgICAgICJzZWxlY3RhYmxlQ2xhc3MiOiAidXBzX2NlbGwiLAogICAg
ICAgICAgICAibXVsdGlwbGUiOiBmYWxzZSwKICAgICAgICAgICAgInNlbGVjdGFi
bGVJdGVtIjogImNlbGwiCiAgICAgICAgICAgIH0pOwoKICAgIHZhciBzZWxmID0g
dGhpczsKCiAgICBTVC5hZGRXYXRjaGVyKGZ1bmN0aW9uIChkYXRhKSB7CiAgICAg
ICAgdmFyIHNlbGVjdGVkQ2VsbCA9IGRhdGFbMF07CgogICAgICAgIGlmICghc2Vs
ZWN0ZWRDZWxsKSB7CiAgICAgICAgICAgIC8vIGNsZWFyIHNlbGVjdGlvbgogICAg
ICAgICAgICBzZWxmLnNlbGVjdFBpYyhudWxsKTsKICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAvLyBmaW5kIHBpY2lkIGFuZCBzZWxlY3QgaXQKICAgICAgICAg
ICAgdmFyIHBhcmVudENlbGwgPSBET00uZ2V0Rmlyc3RBbmNlc3RvckJ5Q2xhc3NO
YW1lKHNlbGVjdGVkQ2VsbCwgInVwc19jZWxsIiwgdHJ1ZSk7CiAgICAgICAgICAg
IGlmICghcGFyZW50Q2VsbCkgcmV0dXJuOwoKICAgICAgICAgICAgdmFyIHBpY2lk
ID0gcGFyZW50Q2VsbC5nZXRBdHRyaWJ1dGUoImxqX3VwczpwaWNpZCIpOwogICAg
ICAgICAgICBpZiAoIXBpY2lkKSByZXR1cm47CgogICAgICAgICAgICBzZWxmLnNl
bGVjdFBpYyhwaWNpZCk7CiAgICAgICAgfQogICAgfSk7CgogICAgRE9NLmFkZEV2
ZW50TGlzdGVuZXIoJCgidXBzX2Nsb3NlYnV0dG9uIiksICJjbGljayIsIHRoaXMu
Y2xvc2VCdXR0b25DbGlja2VkLmJpbmRFdmVudExpc3RlbmVyKHRoaXMpKTsKCiAg
ICAvLyBzZXQgdXAgaW1hZ2Ugc2NhbGluZyBidXR0b25zCiAgICB2YXIgc2NhbGlu
Z1NpemVzID0gWzMsMiwxXTsKICAgIHZhciBiYXNlU2l6ZSA9IDI1OwogICAgdmFy
IHNjYWxpbmdCdG5zID0gJCgidXBzX3NjYWxpbmdfYnV0dG9ucyIpOwogICAgdGhp
cy5zY2FsaW5nQnRucyA9IFtdOwoKICAgIGlmIChzY2FsaW5nQnRucykgewogICAg
ICAgIHNjYWxpbmdTaXplcy5mb3JFYWNoKGZ1bmN0aW9uIChzY2FsZVNpemUpIHsK
ICAgICAgICAgICAgdmFyIHNjYWxlQnRuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiaW1nIik7CgogICAgICAgICAgICBzY2FsZUJ0bi5zdHlsZS53aWR0aCA9IHNj
YWxlQnRuLndpZHRoID0gc2NhbGVCdG4uc3R5bGUuaGVpZ2h0ID0gc2NhbGVCdG4u
aGVpZ2h0ID0gYmFzZVNpemUgLSBzY2FsZVNpemUgKiA1OwoKICAgICAgICAgICAg
c2NhbGVCdG4uc3JjID0gU2l0ZS5pbWdwcmVmaXggKyAiL2ltZ3NjYWxlLnBuZyI7
CiAgICAgICAgICAgIERPTS5hZGRDbGFzc05hbWUoc2NhbGVCdG4sICJ1cHNfc2Nh
bGVidG4iKTsKCiAgICAgICAgICAgIHNlbGYuc2NhbGluZ0J0bnMucHVzaChzY2Fs
ZUJ0bik7CgogICAgICAgICAgICBET00uYWRkRXZlbnRMaXN0ZW5lcihzY2FsZUJ0
biwgImNsaWNrIiwgZnVuY3Rpb24gKGV2dCkgewogICAgICAgICAgICAgICAgRXZl
bnQuc3RvcChldnQpOwoKICAgICAgICAgICAgICAgIHNlbGYuaW1nU2NhbGUgPSBz
Y2FsZVNpemU7CiAgICAgICAgICAgICAgICBzZWxmLnNjYWxpbmdCdG5zLmZvckVh
Y2goZnVuY3Rpb24gKG90aGVyQnRuKSB7CiAgICAgICAgICAgICAgICAgICAgRE9N
LnJlbW92ZUNsYXNzTmFtZShvdGhlckJ0biwgInVwc19zY2FsZWJ0bl9zZWxlY3Rl
ZCIpOwogICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgRE9NLmFk
ZENsYXNzTmFtZShzY2FsZUJ0biwgInVwc19zY2FsZWJ0bl9zZWxlY3RlZCIpOwoK
ICAgICAgICAgICAgICAgIHNlbGYucmVkcmF3KCk7CiAgICAgICAgICAgIH0pOwoK
ICAgICAgICAgICAgc2NhbGluZ0J0bnMuYXBwZW5kQ2hpbGQoc2NhbGVCdG4pOwoK
ICAgICAgICAgICAgaWYgKHNlbGYuaW1nU2NhbGUgPT0gc2NhbGVTaXplKQogICAg
ICAgICAgICAgICAgRE9NLmFkZENsYXNzTmFtZShzY2FsZUJ0biwgInVwc19zY2Fs
ZWJ0bl9zZWxlY3RlZCIpOwogICAgICAgIH0pOwogICAgfQogIH0sCgogIGt3bWVu
dUNoYW5nZTogZnVuY3Rpb24oZXZ0KSB7CiAgICB0aGlzLnNlbGVjdFBpYygkKCJ1
cHNfa3dtZW51IikudmFsdWUpOwogIH0sCgogIHNlbGVjdFBpYzogZnVuY3Rpb24o
cGljaWQpIHsKICAgIGlmICh0aGlzLnNlbGVjdGVkUGljaWQpIHsKICAgICAgICBE
T00ucmVtb3ZlQ2xhc3NOYW1lKCQoInVwc191cGljaW1nIiArIHRoaXMuc2VsZWN0
ZWRQaWNpZCksICJ1cHNfc2VsZWN0ZWQiKTsKICAgICAgICBET00ucmVtb3ZlQ2xh
c3NOYW1lKCQoInVwc19jZWxsIiArIHRoaXMuc2VsZWN0ZWRQaWNpZCksICJ1cHNf
c2VsZWN0ZWRfY2VsbCIpOwogICAgfQoKICAgIHRoaXMuc2VsZWN0ZWRQaWNpZCA9
IHBpY2lkOwoKICAgIGlmIChwaWNpZCkgewogICAgICAgIC8vIGZpbmQgdGhlIGN1
cnJlbnQgcGljIGFuZCBjZWxsCiAgICAgICAgdmFyIHBpY2ltZyA9ICAkKCJ1cHNf
dXBpY2ltZyIgKyBwaWNpZCk7CiAgICAgICAgdmFyIGNlbGwgICA9ICAkKCJ1cHNf
Y2VsbCIgKyBwaWNpZCk7CgogICAgICAgIGlmICghcGljaW1nIHx8ICFjZWxsKQog
ICAgICAgICAgICByZXR1cm47CgogICAgICAgIC8vIGhpbGlnaHQgdGhlIHVzZXJw
aWMKICAgICAgICBET00uYWRkQ2xhc3NOYW1lKHBpY2ltZywgInVwc19zZWxlY3Rl
ZCIpOwoKICAgICAgICAvLyBoaWxpZ2h0IHRoZSBjZWxsCiAgICAgICAgRE9NLmFk
ZENsYXNzTmFtZShjZWxsLCAidXBzX3NlbGVjdGVkX2NlbGwiKTsKCiAgICAgICAg
Ly8gZW5hYmxlIHRoZSBzZWxlY3QgYnV0dG9uCiAgICAgICAgJCgidXBzX2Nsb3Nl
YnV0dG9uIikuZGlzYWJsZWQgPSBmYWxzZTsKCiAgICAgICAgLy8gc2VsZWN0IHRo
ZSBjdXJyZW50IHNlbGVjdGVkUGljaWQgaW4gdGhlIGRyb3Bkb3duCiAgICAgICAg
dGhpcy5zZXREcm9wZG93bigpOwogICAgfSBlbHNlIHsKICAgICAgICAkKCJ1cHNf
Y2xvc2VidXR0b24iKS5kaXNhYmxlZCA9IHRydWU7CiAgICB9CiAgfSwKCiAgLy8g
ZmlsdGVyIGJ5IGtleXdvcmQvY29tbWVudAogIGZpbHRlclBpY3M6IGZ1bmN0aW9u
KGV2dCkgewogICAgdmFyIHNlYXJjaGJveCA9ICQoInVwc19zZWFyY2giKTsKCiAg
ICBpZiAoIXNlYXJjaGJveCkKICAgICAgcmV0dXJuOwoKICAgIHZhciBmaWx0ZXIg
PSBzZWFyY2hib3gudmFsdWUudG9Mb2NhbGVVcHBlckNhc2UoKTsKICAgIHZhciBw
aWNzID0gdGhpcy5waWNzOwoKICAgIGlmICghZmlsdGVyKSB7CiAgICAgIHRoaXMu
c2V0UGljcyhwaWNzKTsKICAgICAgcmV0dXJuOwogICAgfQoKICAgIC8vIGlmIHRo
ZXJlIGlzIGEgZmlsdGVyIGFuZCB0aGVyZSBpcyBzZWxlY3RlZCB0ZXh0IGluIHRo
ZSBmaWVsZCBhc3N1bWUgdGhhdCBpdCdzCiAgICAvLyBpbnB1dGNvbXBsZXRlIHRl
eHQgYW5kIGlnbm9yZSB0aGUgcmVzdCBvZiB0aGUgc2VsZWN0aW9uLgogICAgaWYg
KHNlYXJjaGJveC5zZWxlY3Rpb25TdGFydCAmJiBzZWFyY2hib3guc2VsZWN0aW9u
U3RhcnQgPiAwKQogICAgICBmaWx0ZXIgPSBzZWFyY2hib3gudmFsdWUuc3Vic3Ry
KDAsIHNlYXJjaGJveC5zZWxlY3Rpb25TdGFydCkudG9Mb2NhbGVVcHBlckNhc2Uo
KTsKCiAgICB2YXIgbmV3cGljcyA9IHsKICAgICAgInBpY3MiOiBbXSwKICAgICAg
ImlkcyI6IFtdCiAgICB9OwoKICAgIGZvciAodmFyIGk9MDsgaTxwaWNzLmlkcy5s
ZW5ndGg7IGkrKykgewogICAgICB2YXIgcGljaWQgPSBwaWNzLmlkc1tpXTsKICAg
ICAgdmFyIHBpYyA9IHBpY3MucGljc1twaWNpZF07CgogICAgICBpZiAoIXBpYykK
ICAgICAgICBjb250aW51ZTsKCiAgICAgIGZvciAodmFyIGo9MDsgaiA8IHBpYy5r
ZXl3b3Jkcy5sZW5ndGg7IGorKykgewogICAgICAgIHZhciBrdyA9IHBpYy5rZXl3
b3Jkc1tqXTsKCiAgICAgICAgdmFyIHBpY2NvbW1lbnQgPSAiIjsKICAgICAgICBp
ZiAocGljLmNvbW1lbnQpCiAgICAgICAgICBwaWNjb21tZW50ID0gcGljLmNvbW1l
bnQudG9Mb2NhbGVVcHBlckNhc2UoKTsKCiAgICAgICAgaWYoa3cudG9Mb2NhbGVV
cHBlckNhc2UoKS5pbmRleE9mKGZpbHRlcikgIT0gLTEgfHwgLy8gbWF0Y2hlcyBh
IGtleXdvcmQKICAgICAgICAgICAocGljY29tbWVudCAmJiBwaWNjb21tZW50Lmlu
ZGV4T2YoZmlsdGVyKSAhPSAtMSkgfHwgLy8gbWF0Y2hlcyBjb21tZW50CiAgICAg
ICAgICAgKHBpYy5rZXl3b3Jkcy5qb2luKCIsICIpLnRvTG9jYWxlVXBwZXJDYXNl
KCkuaW5kZXhPZihmaWx0ZXIpICE9IC0xKSkgeyAvLyBtYXRjaGVzIGNvbW1hLXNl
cGVyYXRlZCBsaXN0IG9mIGtleXdvcmRzCgogICAgICAgICAgbmV3cGljcy5waWNz
W3BpY2lkXSA9IHBpYzsKICAgICAgICAgIG5ld3BpY3MuaWRzLnB1c2gocGljaWQp
OwogICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICB9CiAgICB9CgogICAg
aWYgKHRoaXMucGljcyAhPSBuZXdwaWNzKQogICAgICB0aGlzLnNldFBpY3MobmV3
cGljcyk7CgogICAgLy8gaWYgd2UndmUgZmlsdGVyZWQgZG93biB0byBvbmUgcGlj
IGFuZCB3ZSBkb24ndCBjdXJyZW50bHkgaGF2ZSBhIHNlbGVjdGVkIHBpYywgc2Vs
ZWN0IGl0CiAgICBpZiAobmV3cGljcy5pZHMubGVuZ3RoID09IDEgJiYgIXRoaXMu
c2VsZWN0ZWRQaWNpZCkKICAgICAgdGhpcy5zZWxlY3RQaWMobmV3cGljcy5pZHNb
MF0pOwogIH0sCgogIHNldERyb3Bkb3duOiBmdW5jdGlvbihwaWNzKSB7CiAgICB2
YXIgbWVudSA9ICQoInVwc19rd21lbnUiKTsKCiAgICBmb3IgKHZhciBpPTA7IGkg
PCBtZW51Lmxlbmd0aDsgaSsrKQogICAgICBtZW51LnJlbW92ZShpKTsKCiAgICBt
ZW51Lmxlbmd0aCA9IDA7CgogICAgaWYgKCFwaWNzKQogICAgICBwaWNzID0gdGhp
cy5waWNzOwoKICAgIGlmICghcGljcyB8fCAhcGljcy5pZHMpCiAgICAgIHJldHVy
bjsKCiAgICBmb3IgKHZhciBpPTA7IGkgPCBwaWNzLmlkcy5sZW5ndGg7IGkrKykg
ewogICAgICB2YXIgcGljaWQgPSBwaWNzLmlkc1tpXTsKICAgICAgdmFyIHBpYyA9
IHBpY3MucGljc1twaWNpZF07CgogICAgICBpZiAoIXBpYykKICAgICAgICBjb250
aW51ZTsKCiAgICAgIHZhciBzZWwgPSBmYWxzZTsKICAgICAgdmFyIHNlbGYgPSB0
aGlzOwoKICAgICAgcGljLmtleXdvcmRzLmZvckVhY2goZnVuY3Rpb24gKGt3KSB7
CiAgICAgICAgICAvLyBhZGQgdG8gZHJvcGRvd24KICAgICAgICAgIHZhciBwaWNv
cHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvcHRpb24iKTsKICAgICAgICAg
IHBpY29wdC50ZXh0ID0ga3c7CiAgICAgICAgICBwaWNvcHQudmFsdWUgPSBwaWNp
ZDsKCiAgICAgICAgICBpZiAoISBzZWwpIHsKICAgICAgICAgICAgICBwaWNvcHQu
c2VsZWN0ZWQgPSBzZWxmLnNlbGVjdGVkUGljaWQgPyBzZWxmLnNlbGVjdGVkUGlj
aWQgPT0gcGljaWQgOiBmYWxzZTsKICAgICAgICAgICAgICBzZWwgPSBwaWNvcHQu
c2VsZWN0ZWQ7CiAgICAgICAgICB9CgogICAgICAgICAgVHJ5LnRoZXNlKAogICAg
ICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsgbWVudS5hZGQocGljb3B0LCAw
KTsgfSwgICAgLy8gZXZlcnl0aGluZyBlbHNlCiAgICAgICAgICAgICAgICAgICAg
ZnVuY3Rpb24gKCkgeyBtZW51LmFkZChwaWNvcHQsIG51bGwpOyB9ICAvLyBJRQog
ICAgICAgICAgICAgICAgICAgICk7CiAgICAgIH0pOwogICAgfQogIH0sCgogIHBp
Y3NSZWNlaXZlZDogZnVuY3Rpb24ocGljaW5mbykgewogICAgaWYgKHBpY2luZm8g
JiYgcGljaW5mby5hbGVydCkgeyAvLyBnb3QgYW4gZXJyb3IKICAgICAgdGhpcy5o
YW5kbGVFcnJvcihwaWNpbmZvLmFsZXJ0KTsKICAgICAgcmV0dXJuOwogICAgfQoK
ICAgIGlmICghcGljaW5mbyB8fCAhcGljaW5mby5pZHMgfHwgIXBpY2luZm8ucGlj
cyB8fCAhcGljaW5mby5pZHMubGVuZ3RoKQogICAgICByZXR1cm47CgogICAgdmFy
IHBpY2NvdW50ID0gcGljaW5mby5pZHMubGVuZ3RoOwoKICAgIC8vIGZvcmNlIGNv
bnZlcnQgaW50ZWdlcnMgdG8gc3RyaW5ncwogICAgZm9yICh2YXIgaT0wOyBpIDwg
cGljY291bnQ7IGkrKykgewogICAgICB2YXIgcGljaWQgPSBwaWNpbmZvLmlkc1tp
XTsKCiAgICAgIHZhciBwaWMgPSBwaWNpbmZvLnBpY3NbcGljaWRdOwoKICAgICAg
aWYgKCFwaWMpCiAgICAgICAgY29udGludWU7CgogICAgICBpZiAocGljLmNvbW1l
bnQpCiAgICAgICAgcGljLmNvbW1lbnQgKz0gIiI7CgogICAgICBmb3IgKHZhciBq
PTA7IGogPCBwaWMua2V5d29yZHMubGVuZ3RoOyBqKyspCiAgICAgICAgcGljLmtl
eXdvcmRzW2pdICs9ICIiOwogICAgfQoKICAgIC8vIHNldCBkZWZhdWx0IHNjYWxp
bmcgc2l6ZSBiYXNlZCBvbiBob3cgbWFueSBwaWNzIHRoZXJlIGFyZQogICAgaWYg
KHBpY2NvdW50IDwgMzApIHsKICAgICAgICB0aGlzLmltZ1NjYWxlID0gMTsKICAg
IH0gZWxzZSBpZiAocGljY291bnQgPCA2MCkgewogICAgICAgIHRoaXMuaW1nU2Nh
bGUgPSAyOwogICAgfSBlbHNlIHsKICAgICAgICB0aGlzLmltZ1NjYWxlID0gMzsK
ICAgIH0KCiAgICB0aGlzLnBpY3MgPSBwaWNpbmZvOwoKICAgIHRoaXMuc2V0UGlj
cyhwaWNpbmZvKTsKICAgIHRoaXMucmVkcmF3KCk7CgogICAgaWYgKHRoaXMuaG91
cmdsYXNzKQogICAgICB0aGlzLmhvdXJnbGFzcy5oaWRlKCk7CiAgfSwKCiAgcmVk
cmF3OiBmdW5jdGlvbiAoKSB7CiAgICB0aGlzLnNldFN0YXR1cygpOwoKICAgIGlm
ICghdGhpcy5waWNzKQogICAgICByZXR1cm47CgogICAgdGhpcy5zZXRQaWNzKHRo
aXMucGljcyk7CgogICAgaWYgKHRoaXMuaG91cmdsYXNzKQogICAgICB0aGlzLmhv
dXJnbGFzcy5oaWRlKCk7CgogICAgdmFyIGtleXdvcmRzID0gW10sIGNvbW1lbnRz
ID0gW107CiAgICBmb3IgKHZhciBpPTA7IGkgPCB0aGlzLnBpY3MuaWRzLmxlbmd0
aDsgaSsrKSB7CiAgICAgIHZhciBwaWNpZCA9IHRoaXMucGljcy5pZHNbaV07CiAg
ICAgIHZhciBwaWMgPSB0aGlzLnBpY3MucGljc1twaWNpZF07CgogICAgICBmb3Ig
KHZhciBqPTA7IGogPCBwaWMua2V5d29yZHMubGVuZ3RoOyBqKyspCiAgICAgICAg
a2V5d29yZHMucHVzaChwaWMua2V5d29yZHNbal0pOwoKICAgICAgY29tbWVudHMu
cHVzaChwaWMuY29tbWVudCk7CiAgICB9CgogICAgdmFyIHNlYXJjaGJveCA9ICQo
InVwc19zZWFyY2giKTsKICAgIHZhciBjb21wZGF0YSA9IG5ldyBJbnB1dENvbXBs
ZXRlRGF0YShrZXl3b3Jkcy5jb25jYXQoY29tbWVudHMpKTsKICAgIHZhciB3aHV0
ID0gbmV3IElucHV0Q29tcGxldGUoc2VhcmNoYm94LCBjb21wZGF0YSk7CgogICAg
RE9NLmFkZEV2ZW50TGlzdGVuZXIoc2VhcmNoYm94LCAia2V5ZG93biIsICB0aGlz
LmZpbHRlclBpY3MuYmluZCh0aGlzKSk7CiAgICBET00uYWRkRXZlbnRMaXN0ZW5l
cihzZWFyY2hib3gsICJrZXl1cCIsICAgIHRoaXMuZmlsdGVyUGljcy5iaW5kKHRo
aXMpKTsKICAgIERPTS5hZGRFdmVudExpc3RlbmVyKHNlYXJjaGJveCwgImZvY3Vz
IiwgICAgdGhpcy5maWx0ZXJQaWNzLmJpbmQodGhpcykpOwoKICAgIHRyeSB7CiAg
ICAgIHNlYXJjaGJveC5mb2N1cygpOwogICAgfSBjYXRjaChlKSB7fQoKICAgIERP
TS5hZGRFdmVudExpc3RlbmVyKCQoInVwc19rd21lbnUiKSwgImNoYW5nZSIsIHRo
aXMua3dtZW51Q2hhbmdlLmJpbmRFdmVudExpc3RlbmVyKHRoaXMpKTsKICB9LAoK
ICBzZXRQaWNzOiBmdW5jdGlvbihwaWNzKSB7CiAgICBpZiAodGhpcy5kaXNwbGF5
UGljcyA9PSBwaWNzKQogICAgICByZXR1cm47CgogICAgdGhpcy5kaXNwbGF5UGlj
cyA9IHBpY3M7CgogICAgdGhpcy5zZXRGaWVsZCh7J3BpY3MnOiBwaWNzfSk7CiAg
ICB0aGlzLnNldERyb3Bkb3duKHBpY3MpOwogIH0sCgogIGhhbmRsZUVycm9yOiBm
dW5jdGlvbihlcnIpIHsKICAgIGxvZygiRXJyb3I6ICIgKyBlcnIpOwogICAgdGhp
cy5ob3VyZ2xhc3MuaGlkZSgpOwogIH0sCgogIGxvYWRQaWNzOiBmdW5jdGlvbigp
IHsKICAgIHRoaXMuaG91cmdsYXNzID0gbmV3IEhvdXJnbGFzcygkKCJ1cHNfdXNl
cnBpY3MiKSk7CiAgICB2YXIgcmVxT3B0cyA9IHt9OwogICAgcmVxT3B0cy51cmwg
PSBTaXRlLmN1cnJlbnRKb3VybmFsID8gIi8iICsgU2l0ZS5jdXJyZW50Sm91cm5h
bCArICIvX19ycGNfdXNlcnBpY3NlbGVjdCIgOiAiL19fcnBjX3VzZXJwaWNzZWxl
Y3QiOwogICAgcmVxT3B0cy5vbkRhdGEgPSB0aGlzLnBpY3NSZWNlaXZlZC5iaW5k
KHRoaXMpOwogICAgcmVxT3B0cy5vbkVycm9yID0gdGhpcy5oYW5kbGVFcnJvci5i
aW5kKHRoaXMpOwogICAgSFRUUFJlcS5nZXRKU09OKHJlcU9wdHMpOwogIH0KfSk7
CgovLyBUZW1wbGF0ZXMKVXNlcnBpY1NlbGVjdC50b3AgPSAiXAogICAgICA8ZGl2
IGNsYXNzPSd1cHNfc2VhcmNoJz5cCiAgICAgICA8c3BhbiBjbGFzcz0ndXBzX3Nl
YXJjaGJveCc+XAogICAgICAgICBTZWFyY2g6IDxpbnB1dCB0eXBlPSd0ZXh0JyBp
ZD0ndXBzX3NlYXJjaCc+XAogICAgICAgICBTZWxlY3Q6IDxzZWxlY3QgaWQ9J3Vw
c19rd21lbnUnPjxvcHRpb24gdmFsdWU9Jyc+PC9vcHRpb24+PC9zZWxlY3Q+XAog
ICAgICAgICA8L3NwYW4+XAogICAgICA8L2Rpdj5cCiAgICAgIDxkaXYgaWQ9J3Vw
c19keW5hbWljJz48L2Rpdj4iOwoKVXNlcnBpY1NlbGVjdC5keW5hbWljID0gIlwK
ICAgICAgIFsjIGlmIChzdGF0dXMpIHsgI10gPGRpdiBjbGFzcz0ndXBzX3N0YXR1
cyc+WyN8IHN0YXR1cyAjXTwvZGl2PiBbIyB9ICNdXAogICAgICAgICA8ZGl2IGNs
YXNzPSd1cHNfdXNlcnBpY3MnIGlkPSd1cHNfdXNlcnBpY3MnPlwKICAgICAgICAg
ICBbIz0gY29udGV4dC5pbmNsdWRlKCAndXNlcnBpY3MnICkgI11cCiAgICAgICAg
ICAgJm5ic3A7XAogICAgICAgICA8L2Rpdj5cCiAgICAgIDxkaXYgY2xhc3M9J3Vw
c19jbG9zZWJ1dHRvbmFyZWEnPlwKICAgICAgIDxpbnB1dCB0eXBlPSdidXR0b24n
IGlkPSd1cHNfY2xvc2VidXR0b24nIHZhbHVlPSdTZWxlY3QnIGRpc2FibGVkPSd0
cnVlJyAgLz5cCiAgICAgICA8c3BhbiBpZD0ndXBzX3NjYWxpbmdfYnV0dG9ucyc+
XAogICAgICAgPC9zcGFuPlwKICAgICAgPC9kaXY+IjsKClVzZXJwaWNTZWxlY3Qu
dXNlcnBpY3MgPSAiXApbIyBpZihwaWNzICYmIHBpY3MuaWRzKSB7ICNdIFwKICAg
ICA8dGFibGUgY2xhc3M9J3Vwc190YWJsZScgY2VsbHBhZGRpbmc9JzAnIGNlbGxz
cGFjaW5nPScwJyBpZD0ndXBzX3VzZXJwaWNzX3QnPiBbIyBcCiAgICAgICB2YXIg
cm93bnVtID0gMDsgXAogICAgICAgZm9yICh2YXIgaT0wOyBpPHBpY3MuaWRzLmxl
bmd0aDsgaSsrKSB7IFwKICAgICAgICAgIHZhciBwaWNpZCA9IHBpY3MuaWRzW2ld
OyBcCiAgICAgICAgICB2YXIgcGljID0gcGljcy5waWNzW3BpY2lkXTsgXApcCiAg
ICAgICAgICBpZiAoIXBpYykgXAogICAgICAgICAgICBjb250aW51ZTsgXApcCiAg
ICAgICAgICB2YXIgcGlja3dzID0gcGljLmtleXdvcmRzOyBcCiAgICAgICAgICBp
ZiAoaSUyID09IDApIHsgI10gXAogICAgICAgICAgICA8dHIgY2xhc3M9J3Vwc19y
b3cgdXBzX3Jvd1sjPSByb3dudW0rKyAlIDIgKyAxICNdJz4gWyMgfSAjXSBcClwK
ICAgICAgICAgICAgPHRkIGNsYXNzPSd1cHNfY2VsbCcgIFwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbGpfdXBzOnBpY2lkPSdbIz0gcGljaWQgI10nIGlkPSd1
cHNfY2VsbFsjPSBwaWNpZCAjXSc+IFwKICAgICAgICAgICAgICA8ZGl2IGNsYXNz
PSd1cHNfY29udGFpbmVyJz4gXAogICAgICAgICAgICAgIDxpbWcgc3JjPSdbIz0g
cGljLnVybCAjXScgd2lkdGg9J1sjPSBmaW5pdGVJbnQocGljLndpZHRoL2ltZ1Nj
YWxlKSAjXScgXAogICAgICAgICAgICAgICAgIGhlaWdodD0nWyM9IGZpbml0ZUlu
dChwaWMuaGVpZ2h0L2ltZ1NjYWxlKSAjXScgaWQ9J3Vwc191cGljaW1nWyM9IHBp
Y2lkICNdJyBjbGFzcz0ndXBzX3VwaWMnIC8+IFwKICAgICAgICAgICAgICAgPC9k
aXY+IFwKXAogICAgICAgICAgICAgIDxiPlsjfCBwaWNrd3Muam9pbignLCAnKSAj
XTwvYj4gXAogICAgICAgICAgICAgWyMgaWYocGljLmNvbW1lbnQpIHsgI108YnIv
PlsjPSBwaWMuY29tbWVudCAjXVsjIH0gI10gXAogICAgICAgICAgICAgIDxkaXYg
Y2xhc3M9J2xqY2xlYXInPiZuYnNwOzwvZGl2PlwKICAgICAgICAgICAgPC90ZD4g
XApcCiAgICAgICAgICAgIFsjIGlmIChpJTIgPT0gMSB8fCBpID09IHBpY3MuaWRz
Lmxlbmd0aCAtIDEpIHsgI10gPC90cj4gWyMgfSBcCiAgICAgICAgfSAjXSBcCiAg
ICAgPC90YWJsZT4gXAogIFsjIH0gI10gXAoiOwoKLy8gQ29waWVkIGhlcmUgZnJv
bSBlbnRyeS5qcwpmdW5jdGlvbiBpbnNlcnRWaWV3VGh1bWJzKCkgewogICAgdmFy
IGxqX3VzZXJwaWNzZWxlY3QgPSAkKCdsal91c2VycGljc2VsZWN0Jyk7CiAgICBs
al91c2VycGljc2VsZWN0LmlubmVySFRNTCA9ICdWaWV3IFRodW1ibmFpbHMnOwp9
CgovKiBpbnB1dCBjb21wbGV0aW9uIGxpYnJhcnkgKi8KCi8qIFRPRE86CiAgICAt
LSB0ZXN0IG9uIG5vbi1VUyBrZXlib2FyZCBsYXlvdXRzICh0b28gbXVjaCB1c2Ug
b2YgS2V5Q29kZSkKICAgIC0tIGxhenkgZGF0YSBtb2RlbCAoeG1saHR0cHJlcXVl
c3QsIG9yIGdlbmVyaWMgY2FsbGJhY2tzKQogICAgLS0gZHJvcC1kb3duIG1lbnU/
CiAgICAtLSBvcHRpb24gdG8gZGlzYWJsZSBjb21tYS1zZXBhcmF0ZWQgbW9kZSAo
b3IgZXhwbGljaXRseSBhc2sgZm9yIGl0KQoqLwoKLyoKICBDb3B5cmlnaHQgKGMp
IDIwMDUsIFNpeCBBcGFydCwgTHRkLgogIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgog
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKICBt
ZXQ6CgogICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCgogICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQogIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKICBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCiAg
ZGlzdHJpYnV0aW9uLgoKICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgIlNpeCBBcGFy
dCIgbm9yIHRoZSBuYW1lcyBvZiBpdHMKICBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQog
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCgogIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKICAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAogIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgogIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCiAgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCiAgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAog
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAogIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQog
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKICAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgoKKi8KCgovKiAqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioKCiAgQ2xhc3M6IElucHV0Q29tcGxldGVEYXRhCgogIEFib3V0OiBB
biBJbnB1dENvbXBsZXRlIG9iamVjdCBuZWVkcyBhIGRhdGEgc291cmNlIHRvIGF1
dG8tY29tcGxldGUKICAgICAgICAgIGZyb20uICBUaGlzIGlzIHRoYXQgbW9kZWwu
ICBZb3UgY2FuIGNyZWF0ZSBvbmUgZnJvbSBhbgogICAgICAgICAgYXJyYXksIG9y
IGNyZWF0ZSBhIGxhenkgdmVyc2lvbiB0aGF0IGdldHMgaXRzIGRhdGEgb3ZlciB0
aGUKICAgICAgICAgIG5ldHdvcmssIG9uIGRlbWFuZC4gIFlvdSB3aWxsIHByb2Jh
Ymx5IG5vdCB1c2UgdGhpcyBjbGFzcycKICAgICAgICAgIG1ldGhvZHMgZGlyZWN0
bHksIGFzIHRoZXkncmUgY2FsbGVkIGJ5IHRoZSBJbnB1dENvbXBsZXRlCiAgICAg
ICAgICBvYmplY3QuCgogICAgICAgICAgVGhlIGNsb3NlciBhIHdvcmQgaXMgdG8g
dGhlIGJlZ2lubmluZyBvZiB0aGUgYXJyYXksIHRoZSBtb3JlCiAgICAgICAgICBs
aWtlbHkgaXQgd2lsbCBiZSByZWNvbW1lbmRlZCBhcyB0aGUgd29yZCB0aGUgdXNl
ciBpcyB0eXBpbmcuCgogICAgICAgICAgSWYgeW91IHBhc3MgdGhlIHN0cmluZyAi
aWdub3JlY2FzZSIgYXMgdGhlIHNlY29uZCBhcmd1bWVudCBpbgogICAgICAgICAg
dGhlIGNvbnN0cnVjdG9yLCB0aGVuIHRoZSBjYXNlIG9mIGJvdGggdGhlIHVzZXIn
cyBpbnB1dCBhbmQKICAgICAgICAgIHRoZSBkYXRhIGluIHRoZSBhcnJheSB3aWxs
IGJlIGlnbm9yZWQgd2hlbiBsb29raW5nIGZvciBhIG1hdGNoLgoKICBDb25zdHJ1
Y3RvcjoKCiAgICB2YXIgbW9kZWwgPSBuZXcgSW5wdXRDb21wbGV0ZURhdGEgKFsg
ImZvbyIsICJiYXIiLCAiYWxwaGEiIF0pOwoKKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqICovCgp2YXIgSW5wdXRDb21wbGV0ZURhdGEgPSBuZXcgQ2xhc3MgKCBP
YmplY3QsIHsKICAgIGluaXQ6IGZ1bmN0aW9uICgpIHsKICAgICAgICBpZiAoYXJn
dW1lbnRzWzBdIGluc3RhbmNlb2YgQXJyYXkpIHsKICAgICAgICAgICAgdGhpcy5z
b3VyY2UgPSBbXTsKCiAgICAgICAgICAgIC8vIGNvcHkgdGhlIHVzZXItcHJvdmlk
ZWQgYXJyYXkgKHdoaWNoIGlzIHNvcnRlZCBtb3N0CiAgICAgICAgICAgIC8vIGxp
a2VseSB0byBsZWFzdCBsaWtlbHkpIGludG8gb3VyIGludGVybmFsIGZvcm0sIHdo
aWNoCiAgICAgICAgICAgIC8vIGlzIG9wcG9zaXRlLCB3aXRoIG1vc3QgbGlrZWx5
IGF0IHRoZSBlbmQuCiAgICAgICAgICAgIHZhciBhcmcgPSBhcmd1bWVudHNbMF07
CiAgICAgICAgICAgIGZvciAodmFyIGk9YXJnLmxlbmd0aC0xOyBpPj0wOyBpLS0p
IHsKICAgICAgICAgICAgICAgIHRoaXMuc291cmNlLmxlbmd0aCsrOwogICAgICAg
ICAgICAgICAgdGhpcy5zb3VyY2VbdGhpcy5zb3VyY2UubGVuZ3RoLTFdID0gYXJn
W2ldOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICB0aGlzLmlnbm9y
ZUNhc2UgPSAwOwogICAgICAgIGlmIChhcmd1bWVudHNbMV0gPT0gImlnbm9yZWNh
c2UiKSB7CiAgICAgICAgICAgIHRoaXMuaWdub3JlQ2FzZSA9IDE7CiAgICAgICAg
fQogICAgfSwKCiAgICAvLyBtZXRob2Q6IGdpdmVuIHByZWZpeCwgcmV0dXJucyBi
ZXN0IHN1ZmZpeCwgb3IgbnVsbCBpZiBubyBhbnN3ZXIKICAgIGJlc3RGaW5pc2g6
IGZ1bmN0aW9uIChwcmUpIHsKICAgICAgICBpZiAoISBwcmUgfHwgcHJlLmxlbmd0
aCA9PSAwKQogICAgICAgICAgICByZXR1cm4gbnVsbDsKCiAgICAgICAgaWYgKCEg
dGhpcy5zb3VyY2UpCiAgICAgICAgICAgIHJldHVybiBudWxsOwoKICAgICAgICB2
YXIgaTsKICAgICAgICBmb3IgKGk9dGhpcy5zb3VyY2UubGVuZ3RoLTE7IGk+PTA7
IGktLSkgewogICAgICAgICAgICB2YXIgaXRlbSA9IHRoaXMuc291cmNlW2ldOwoK
ICAgICAgICAgICAgdmFyIGl0ZW1Ub0NvbXBhcmUgPSBpdGVtOwogICAgICAgICAg
ICB2YXIgcHJlVG9Db21wYXJlID0gcHJlOwogICAgICAgICAgICBpZiAodGhpcy5p
Z25vcmVDYXNlKSB7CiAgICAgICAgICAgICAgICBpdGVtICs9ICcnOwogICAgICAg
ICAgICAgICAgcHJlICs9ICcnOwogICAgICAgICAgICAgICAgaXRlbVRvQ29tcGFy
ZSA9IGl0ZW0udG9Mb3dlckNhc2UoKTsKICAgICAgICAgICAgICAgIHByZVRvQ29t
cGFyZSA9IHByZS50b0xvd2VyQ2FzZSgpOwogICAgICAgICAgICB9CgogICAgICAg
ICAgICBpZiAoaXRlbVRvQ29tcGFyZS5zdWJzdHJpbmcoMCwgcHJlLmxlbmd0aCkg
PT0gcHJlVG9Db21wYXJlKSB7CiAgICAgICAgICAgICAgICB2YXIgc3VmZiA9IGl0
ZW0uc3Vic3RyaW5nKHByZS5sZW5ndGgsIGl0ZW0ubGVuZ3RoKTsKICAgICAgICAg
ICAgICAgIHJldHVybiBzdWZmOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAg
ICAgICByZXR1cm4gbnVsbDsKICAgIH0sCgogICAgLy8gbWV0aG9kOiBnaXZlbiBh
IHBpZWNlIG9mIGRhdGEsIGxlYXJuIGl0LCBhbmQgcHJpb3JpdGl6ZSBpdCBmb3Ig
ZnV0dXJlIGNvbXBsZXRpb25zCiAgICBsZWFybjogZnVuY3Rpb24gKHdvcmQpIHsK
ICAgICAgICBpZiAoIXdvcmQpIHJldHVybiBmYWxzZTsKICAgICAgICBpZiAoIXRo
aXMuc291cmNlKSByZXR1cm4gZmFsc2U7CiAgICAgICAgdGhpcy5zb3VyY2VbdGhp
cy5zb3VyY2UubGVuZ3RoKytdID0gd29yZDsKCiAgICAgICAgaWYgKHRoaXMub25N
b2RlbENoYW5nZSkKICAgICAgICAgICAgdGhpcy5vbk1vZGVsQ2hhbmdlKCk7CiAg
ICB9LAoKICAgIGdldEl0ZW1zOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgaWYgKCF0
aGlzLnNvdXJjZSkgcmV0dXJuIFtdOwoKICAgICAgICAvLyByZXR1cm4gb25seSB1
bmlxdWUgaXRlbXMgdG8gY2FsbGVyCiAgICAgICAgdmFyIHVuaXEgPSBbXTsKICAg
ICAgICB2YXIgc2VlbiA9IHt9OwogICAgICAgIGZvciAoaT10aGlzLnNvdXJjZS5s
ZW5ndGgtMTsgaT49MDsgaS0tKSB7CiAgICAgICAgICAgIHZhciBpdGVtID0gdGhp
cy5zb3VyY2VbaV07CiAgICAgICAgICAgIGlmICghIHNlZW5baXRlbV0pIHsKICAg
ICAgICAgICAgICAgIHNlZW5baXRlbV0gPSAxOwogICAgICAgICAgICAgICAgdW5p
cS5sZW5ndGgrKzsKICAgICAgICAgICAgICAgIHVuaXFbdW5pcS5sZW5ndGggLSAx
XSA9IGl0ZW07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVy
biB1bmlxOwogICAgfSwKCiAgICBkdW1teTogMQp9KTsKCi8qICoqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKgoKICBDbGFzczogSW5wdXRDb21wbGV0ZQoKICBBYm91
dDoKCiAgQ29uc3RydWN0b3I6CgoqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiog
Ki8KCnZhciBJbnB1dENvbXBsZXRlID0gbmV3IENsYXNzKCBPYmplY3QsIHsKICAg
IGluaXQ6IGZ1bmN0aW9uICgpIHsKICAgICAgICB2YXIgb3B0cyA9IGFyZ3VtZW50
c1swXTsKICAgICAgICB2YXIgZWxlOwogICAgICAgIHZhciBtb2RlbDsKICAgICAg
ICB2YXIgZGVidWc7CgogICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09IDEp
IHsKICAgICAgICAgICAgZWxlID0gb3B0c1sidGFyZ2V0Il07CiAgICAgICAgICAg
IG1vZGVsID0gb3B0c1sibW9kZWwiXTsKICAgICAgICAgICAgZGVidWcgPSBvcHRz
WyJkZWJ1ZyJdOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGVsZSA9IGFy
Z3VtZW50c1swXTsKICAgICAgICAgICAgbW9kZWwgPSBhcmd1bWVudHNbMV07CiAg
ICAgICAgICAgIGRlYnVnID0gYXJndW1lbnRzWzJdOwogICAgICAgIH0KCiAgICAg
ICAgdGhpcy5lbGUgICA9IGVsZTsKICAgICAgICB0aGlzLm1vZGVsID0gbW9kZWw7
CiAgICAgICAgdGhpcy5kZWJ1ZyA9IGRlYnVnOwoKICAgICAgICAvLyBubyBtb2Rl
bD8gIGRvbid0IHNldHVwIG9iamVjdC4KICAgICAgICBpZiAoISBlbGUpIHsKICAg
ICAgICAgICAgdGhpcy5kaXNhYmxlZCA9IHRydWU7CiAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICB9CgogICAgICAgIC8vIHJldHVybiBmYWxzZSBpZiBhdXRvLWNv
bXBsZXRlIHdvbid0IHdvcmsgYW55d2F5CiAgICAgICAgaWYgKCEgKCgic2VsZWN0
aW9uU3RhcnQiIGluIGVsZSkgfHwgKGRvY3VtZW50LnNlbGVjdGlvbiAmJiBkb2N1
bWVudC5zZWxlY3Rpb24uY3JlYXRlUmFuZ2UpKSApIHsKICAgICAgICAgICAgdGhp
cy5kaXNhYmxlZCA9IHRydWU7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICB9CgogICAgICAgIERPTS5hZGRFdmVudExpc3RlbmVyKGVsZSwgImZvY3Vz
IiwgICBJbnB1dENvbXBsZXRlLm9uRm9jdXMuYmluZEV2ZW50TGlzdGVuZXIodGhp
cykpOwogICAgICAgIERPTS5hZGRFdmVudExpc3RlbmVyKGVsZSwgImtleWRvd24i
LCBJbnB1dENvbXBsZXRlLm9uS2V5RG93bi5iaW5kRXZlbnRMaXN0ZW5lcih0aGlz
KSk7CiAgICAgICAgRE9NLmFkZEV2ZW50TGlzdGVuZXIoZWxlLCAia2V5dXAiLCAg
IElucHV0Q29tcGxldGUub25LZXlVcC5iaW5kRXZlbnRMaXN0ZW5lcih0aGlzKSk7
CiAgICAgICAgRE9NLmFkZEV2ZW50TGlzdGVuZXIoZWxlLCAiYmx1ciIsICAgIElu
cHV0Q29tcGxldGUub25CbHVyLmJpbmRFdmVudExpc3RlbmVyKHRoaXMpKTsKICAg
IH0sCgogICAgZGJnOiBmdW5jdGlvbiAobXNnKSB7CiAgICAgICAgaWYgKHRoaXMu
ZGVidWcpIHsKICAgICAgICAgICAgdGhpcy5kZWJ1Zyhtc2cpOwogICAgICAgIH0K
ICAgIH0sCgogICAgLy8gcmV0dXJucyB0aGUgd29yZCBjdXJyZW50bHkgYmVpbmcg
dHlwZWQsIG9yIG51bGwKICAgIHdvcmRJblByb2dyZXNzOiBmdW5jdGlvbiAoKSB7
CiAgICAgICAgdmFyIHNlbCA9IHRoaXMuZ2V0U2VsZWN0ZWRSYW5nZSgpOwogICAg
ICAgIGlmICghc2VsKSByZXR1cm4gbnVsbDsKCiAgICAgICAgdmFyIGNpZHggPSBz
ZWwuc2VsZWN0aW9uU3RhcnQ7IC8vIGN1cnJlbnQgaW5keAogICAgICAgIHZhciBz
aWR4ID0gY2lkeDsgIC8vIHN0YXJ0IG9mIHdvcmQgaW5kZXgKICAgICAgICB3aGls
ZSAoc2lkeCA+IDAgJiYgdGhpcy5lbGUudmFsdWUuY2hhckF0KHNpZHgpICE9ICcs
JykgewogICAgICAgICAgICBzaWR4LS07CiAgICAgICAgfQogICAgICAgIHZhciBz
a2lwU3RhcnRGb3J3YXJkID0gZnVuY3Rpb24gKGNocikgeyByZXR1cm4gKGNociA9
PSAiLCIgfHwgY2hyID09ICIgIik7IH0KCiAgICAgICAgd2hpbGUgKHNraXBTdGFy
dEZvcndhcmQodGhpcy5lbGUudmFsdWUuY2hhckF0KHNpZHgpKSkgewogICAgICAg
ICAgICBzaWR4Kys7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdGhpcy5lbGUu
dmFsdWUuc3Vic3RyaW5nKHNpZHgsIHRoaXMuZWxlLnZhbHVlLmxlbmd0aCk7CiAg
ICB9LAoKICAgIC8vIGFwcGVuZHMgc29tZSBzZWxlY3RlZCB0ZXh0IGFmdGVyIHRo
ZSBjYXJlCiAgICBhZGRTZWxlY3RlZFRleHQ6IGZ1bmN0aW9uIChjaGFycykgewog
ICAgICAgIHZhciBzZWwgPSB0aGlzLmdldFNlbGVjdGVkUmFuZ2UoKTsKICAgICAg
ICB0aGlzLmVsZS52YWx1ZSA9IHRoaXMuZWxlLnZhbHVlICsgY2hhcnM7CiAgICAg
ICAgdGhpcy5zZXRTZWxlY3RlZFJhbmdlKHNlbC5zZWxlY3Rpb25TdGFydCwgdGhp
cy5lbGUudmFsdWUubGVuZ3RoKTsKICAgIH0sCgogICAgbW92ZUNhcmV0VG9FbmQ6
IGZ1bmN0aW9uICgpIHsKICAgICAgICB2YXIgbGVuID0gdGhpcy5lbGUudmFsdWUu
bGVuZ3RoOwogICAgICAgIHRoaXMuc2V0U2VsZWN0ZWRSYW5nZShsZW4sIGxlbik7
CiAgICB9LAoKICAgIGdldFNlbGVjdGVkUmFuZ2U6IGZ1bmN0aW9uICgpIHsKICAg
ICAgICB2YXIgcmV0ID0ge307CiAgICAgICAgdmFyIGVsZSA9IHRoaXMuZWxlOwoK
ICAgICAgICBpZiAoInNlbGVjdGlvblN0YXJ0IiBpbiBlbGUpIHsKICAgICAgICAg
ICAgcmV0LnNlbGVjdGlvblN0YXJ0ID0gZWxlLnNlbGVjdGlvblN0YXJ0OwogICAg
ICAgICAgICByZXQuc2VsZWN0aW9uRW5kICAgPSBlbGUuc2VsZWN0aW9uRW5kOwog
ICAgICAgICAgICByZXR1cm4gcmV0OwogICAgICAgIH0KCiAgICAgICAgaWYgKGRv
Y3VtZW50LnNlbGVjdGlvbiAmJiBkb2N1bWVudC5zZWxlY3Rpb24uY3JlYXRlUmFu
Z2UpIHsKICAgICAgICAgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuc2VsZWN0aW9u
LmNyZWF0ZVJhbmdlKCk7CiAgICAgICAgICAgIHJldC5zZWxlY3Rpb25TdGFydCA9
IElucHV0Q29tcGxldGUuSUVPZmZzZXQocmFuZ2UsICJTdGFydFRvU3RhcnQiKTsK
ICAgICAgICAgICAgcmV0LnNlbGVjdGlvbkVuZCAgID0gSW5wdXRDb21wbGV0ZS5J
RU9mZnNldChyYW5nZSwgIkVuZFRvRW5kIik7CiAgICAgICAgICAgIHJldHVybiBy
ZXQ7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0sCgogICAg
c2V0U2VsZWN0ZWRSYW5nZTogZnVuY3Rpb24gKHNpZHgsIGVpZHgpIHsKICAgICAg
ICB2YXIgZWxlID0gdGhpcy5lbGU7CgogICAgICAgIC8vIHByZWZlcnJlZCB0byBz
ZXR0aW5nIHNlbGVjdGlvblN0YXJ0IGFuZCBlbmQKICAgICAgICBpZiAoZWxlLnNl
dFNlbGVjdGlvblJhbmdlKSB7CiAgICAgICAgICAgIGVsZS5mb2N1cygpOwogICAg
ICAgICAgICBlbGUuc2V0U2VsZWN0aW9uUmFuZ2Uoc2lkeCwgZWlkeCk7CiAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KCiAgICAgICAgLy8gSUUKICAg
ICAgICBpZiAoZG9jdW1lbnQuc2VsZWN0aW9uICYmIGRvY3VtZW50LnNlbGVjdGlv
bi5jcmVhdGVSYW5nZSkgewogICAgICAgICAgICBlbGUuZm9jdXMoKTsKICAgICAg
ICAgICAgdmFyIHNlbCA9IGRvY3VtZW50LnNlbGVjdGlvbi5jcmVhdGVSYW5nZSAo
KTsKICAgICAgICAgICAgc2VsLm1vdmVTdGFydCgnY2hhcmFjdGVyJywgLWVsZS52
YWx1ZS5sZW5ndGgpOwogICAgICAgICAgICBzZWwubW92ZVN0YXJ0KCdjaGFyYWN0
ZXInLCBzaWR4KTsKICAgICAgICAgICAgc2VsLm1vdmVFbmQoJ2NoYXJhY3Rlcics
IGVpZHggLSBzaWR4KTsKICAgICAgICAgICAgc2VsLnNlbGVjdCgpOwogICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CgogICAgICAgIC8vIG1vemlsbGEK
ICAgICAgICBpZiAoInNlbGVjdGlvblN0YXJ0IiBpbiBlbGUpIHsKICAgICAgICAg
ICAgZWxlLnNlbGVjdGlvblN0YXJ0ID0gc2lkeDsKICAgICAgICAgICAgZWxlLnNl
bGVjdGlvbkVuZCAgID0gZWlkeDsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgICAgfQoKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9LAoKICAgIC8vIHJl
dHVybnMgdHJ1ZSBpZiBjYXJldCBpcyBhdCBlbmQgb2YgbGluZSwgb3IgZXZlcnl0
aGluZyB0byB0aGUgcmlnaHQKICAgIC8vIG9mIHVzIGlzIHNlbGVjdGVkCiAgICBj
YXJldEF0RW5kT2ZOb3RTZWxlY3RlZDogZnVuY3Rpb24gKHNlbCkgewogICAgICAg
IHNlbCA9IHNlbCB8fCB0aGlzLmdldFNlbGVjdGVkUmFuZ2UoKTsKICAgICAgICB2
YXIgbGVuID0gdGhpcy5lbGUudmFsdWUubGVuZ3RoOwogICAgICAgIHJldHVybiBz
ZWwuc2VsZWN0aW9uRW5kID09IGxlbjsKICAgIH0sCgogICAgZGlzYWJsZTogZnVu
Y3Rpb24gKCkgewogICAgICAgIHRoaXMuZGlzYWJsZWQgPSB0cnVlOwogICAgfSwK
CiAgICBkdW1teTogMQp9KTsKCklucHV0Q29tcGxldGUub25LZXlEb3duID0gZnVu
Y3Rpb24gKGUpIHsKICAgIGlmICh0aGlzLmRpc2FibGVkKSByZXR1cm47CgogICAg
dmFyIGNvZGUgPSBlLmtleUNvZGUgfHwgZS53aGljaDsKCiAgICB0aGlzLmRiZygi
b25LZXlEb3duLCBjb2RlPSIrY29kZSsiLCBzaGlmdD0iK2Uuc2hpZnRLZXkpOwog
ICAgCiAgICAvLyBpZiBjb21tYSwgYnV0IG5vdCB3aXRoIGEgc2hpZnQgd2hpY2gg
d291bGQgYmUgIjwiLiAgKEZJWE1FOiB3aGF0IGFib3V0IG90aGVyIGtleWJvYXJk
cyBsYXlvdXRzPykKICAgIC8vRklYTUU6IG1heSBiZSB0aGVyZSBpcyBhIHN0YWJs
ZSBjcm9zcy1icm93c2VyIHdheSB0byBkZXRlY3Qgc28tY2FsbGVkIG90aGVyIGtl
eWJvYXJkIGxheW91dHMgLSBidXQgaSBkb24ndCBrbm93IGFueXRoaW5nIGVhc2ll
ciB0aGFuIC4uLiAoc2VlIG9uS2V5VXAgY2hhbmdlcyBpbiB0aXMgcmV2aXNpb24p
CiAgICAvKmlmICgoY29kZSA9PSAxODggfHwgY29kZSA9PSA0NCkgJiYgISBlLnNo
aWZ0S2V5ICYmIHRoaXMuY2FyZXRBdEVuZE9mTm90U2VsZWN0ZWQoKSkgewogICAg
ICAgIHRoaXMubW92ZUNhcmV0VG9FbmQoKTsKICAgICAgICByZXR1cm4gRXZlbnQu
c3RvcChlKTsKICAgIH0qLwoKICAgIHJldHVybiB0cnVlOwp9OwoKSW5wdXRDb21w
bGV0ZS5vbktleVVwID0gZnVuY3Rpb24gKGUpIHsKICAgIGlmICh0aGlzLmRpc2Fi
bGVkKSByZXR1cm47CgogICAgdmFyIHZhbCA9IHRoaXMuZWxlLnZhbHVlOwoKICAg
IHZhciBjb2RlID0gZS5rZXlDb2RlIHx8IGUud2hpY2g7CiAgICB0aGlzLmRiZygi
a2V5VXAgPSAiICsgY29kZSk7CiAgICAKICAgIAogICAgLy8gaWdub3JlIHRhYiwg
YmFja3NwYWNlLCBsZWZ0LCByaWdodCwgZGVsZXRlLCBhbmQgZW50ZXIKICAgIGlm
IChjb2RlID09IDkgfHwgY29kZSA9PSA4IHx8IGNvZGUgPT0gMzcgfHwgY29kZSA9
PSAzOSB8fCBjb2RlID09IDQ2IHx8IGNvZGUgPT0gMTMpCiAgICAgICByZXR1cm4g
ZmFsc2U7CgogICAgdmFyIHNlbCA9IHRoaXMuZ2V0U2VsZWN0ZWRSYW5nZSgpOwoK
ICAgIHZhciBzcyA9IHNlbC5zZWxlY3Rpb25TdGFydDsKICAgIHZhciBzZSA9IHNl
bC5zZWxlY3Rpb25FbmQ7CgogICAgdGhpcy5kYmcoImtleVVwLCBnb3Qgc3M9Iitz
cyArICAiLCBzZT0iK3NlKyIsIHZhbC5sZW5ndGg9Iit2YWwubGVuZ3RoKTsKCiAg
ICAvLyBvbmx5IGF1dG8tY29tcGxldGUgaWYgd2UncmUgYXQgdGhlIGVuZCBvZiB0
aGUgbGluZQogICAgaWYgKHNlICE9IHZhbC5sZW5ndGgpIHJldHVybiBmYWxzZTsK
CiAgICB2YXIgY2hyID0gU3RyaW5nLmZyb21DaGFyQ29kZShjb2RlKTsKCiAgICB0
aGlzLmRiZygia2V5VXAsIGdvdCBjaHI9IitjaHIpOwogICAgLy9pZiAoY29kZSA9
PSAxODggfHwgY2hyID09ICIsIikgewogICAgaWYoLywkLy50ZXN0KHZhbCkpewkK
ICAgICAgICBpZiAoISB0aGlzLmNhcmV0QXRFbmRPZk5vdFNlbGVjdGVkKHNlbCkp
IHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAg
dGhpcy5kYmcoImhpdCBjb21tYSEgLi4gdmFsdWUgPSAiICsgdGhpcy5lbGUudmFs
dWUpOwoKICAgICAgICB0aGlzLmVsZS52YWx1ZSA9IHRoaXMuZWxlLnZhbHVlLnJl
cGxhY2UoL1tccyxdKyQvLCAiIikgKyAiLCAiOwogICAgICAgIHRoaXMubW92ZUNh
cmV0VG9FbmQoKTsKCiAgICAgICAgcmV0dXJuIEV2ZW50LnN0b3AoZSk7CiAgICB9
CgoKICAgIHZhciBpblByb2cgPSB0aGlzLndvcmRJblByb2dyZXNzKCk7CiAgICBp
ZiAoIWluUHJvZykgcmV0dXJuIHRydWU7CgogICAgdmFyIHJlc3QgPSB0aGlzLm1v
ZGVsLmJlc3RGaW5pc2goaW5Qcm9nKTsKCiAgICBpZiAocmVzdCAmJiByZXN0Lmxl
bmd0aCA+IDApIHsKICAgICAgICB0aGlzLmFkZFNlbGVjdGVkVGV4dChyZXN0KTsK
ICAgIH0KfTsKCklucHV0Q29tcGxldGUub25CbHVyID0gZnVuY3Rpb24gKGUpIHsK
ICAgIGlmICh0aGlzLmRpc2FibGVkKSByZXR1cm47CgogICAgdmFyIHRnID0gZS50
YXJnZXQ7CiAgICB2YXIgbGlzdCA9IHRnLnZhbHVlOwoKICAgIHZhciBub2VuZGp1
bmsgPSBsaXN0LnJlcGxhY2UoL1tccyxdKyQvLCAiIik7CiAgICBpZiAobm9lbmRq
dW5rICE9IGxpc3QpIHsKICAgICAgICB0Zy52YWx1ZSA9IGxpc3QgPSBub2VuZGp1
bms7CiAgICB9CgogICAgdmFyIHRhZ3MgPSBsaXN0LnNwbGl0KCIsIik7CiAgICBm
b3IgKHZhciBpID0wOyBpPHRhZ3MubGVuZ3RoOyBpKyspIHsKICAgICAgICB2YXIg
dGFnID0gdGFnc1tpXS5yZXBsYWNlKC9eXHMrLywiIikucmVwbGFjZSgvXHMrJC8s
IiIpOwogICAgICAgIGlmICh0YWcubGVuZ3RoKSB7CiAgICAgICAgICAgIHRoaXMu
bW9kZWwubGVhcm4odGFnKTsKICAgICAgICB9CiAgICB9Cn07CgpJbnB1dENvbXBs
ZXRlLm9uRm9jdXMgPSBmdW5jdGlvbiAoZSkgewogICAgaWYgKHRoaXMuZGlzYWJs
ZWQpIHJldHVybjsKfTsKCgpJbnB1dENvbXBsZXRlLklFT2Zmc2V0ID0gZnVuY3Rp
b24gKCByYW5nZSwgY29tcGFyZVR5cGUgKSB7CiAgICBpZiAodGhpcy5kaXNhYmxl
ZCkgcmV0dXJuOwoKICAgIHZhciByYW5nZTIgPSByYW5nZS5kdXBsaWNhdGUoKTsK
ICAgIHJhbmdlMi5jb2xsYXBzZSggdHJ1ZSApOwogICAgdmFyIHBhcmVudCA9IHJh
bmdlMi5wYXJlbnRFbGVtZW50KCk7CiAgICB2YXIgbGVuZ3RoID0gcmFuZ2UyLnRl
eHQubGVuZ3RoOwogICAgcmFuZ2UyLm1vdmUoImNoYXJhY3RlciIsIC1wYXJlbnQu
dmFsdWUubGVuZ3RoKTsKCiAgICB2YXIgZGVsdGEgPSBtYXgoIDEsIGZpbml0ZUlu
dCggbGVuZ3RoICogMC41ICkgKTsKICAgIHJhbmdlMi5jb2xsYXBzZSggdHJ1ZSAp
OwogICAgdmFyIG9mZnNldCA9IDA7CiAgICB2YXIgc3RlcHMgPSAwOwoKICAgIC8v
IGJhaWwgYWZ0ZXIgMTBrIGl0ZXJhdGlvbnMgaW4gY2FzZSBvZiBib3JrYWdlCiAg
ICB3aGlsZSggKHRlc3QgPSByYW5nZTIuY29tcGFyZUVuZFBvaW50cyggY29tcGFy
ZVR5cGUsIHJhbmdlICkpICE9IDAgKSB7CiAgICAgICAgaWYoIHRlc3QgPCAwICkg
ewogICAgICAgICAgICByYW5nZTIubW92ZSggImNoYXJhY3RlciIsIGRlbHRhICk7
CiAgICAgICAgICAgIG9mZnNldCArPSBkZWx0YTsKICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICByYW5nZTIubW92ZSggImNoYXJhY3RlciIsIC1kZWx0YSApOwog
ICAgICAgICAgICBvZmZzZXQgLT0gZGVsdGE7CiAgICAgICAgfQogICAgICAgIGRl
bHRhID0gbWF4KCAxLCBmaW5pdGVJbnQoIGRlbHRhICogMC41ICkgKTsKICAgICAg
ICBzdGVwcysrOwogICAgICAgIGlmKCBzdGVwcyA+IDEwMDAgKQogICAgICAgICAg
ICB0aHJvdyAidW5hYmxlIHRvIGZpbmQgdGV4dHJhbmdlIGVuZHBvaW50IGluICIg
KyBzdGVwcyArICIgc3RlcHMiOwogICAgfQoKICAgIHJldHVybiBvZmZzZXQ7Cn07
Ci8vIGRhdGFzb3VyY2UgYmFzZSBjbGFzcywgdGhlICJNIiBpbiBNVkMKLy8gc3Vi
Y2xhc3MgdGhpcyBhbmQgb3ZlcnJpZGUgdGhlRGF0YSB0byBwcm92aWRlIHlvdXIg
ZGF0YQoKRGF0YVNvdXJjZSA9IG5ldyBDbGFzcyhPYmplY3QsIHsKCiAgaW5pdDog
ZnVuY3Rpb24gKGluaXRpYWxEYXRhKSB7CiAgICBEYXRhU291cmNlLnN1cGVyQ2xh
c3MuaW5pdC5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwogICAgdGhpcy53YXRjaGVy
cyA9IFtdOwogICAgdGhpcy50aGVEYXRhID0gZGVmaW5lZChpbml0aWFsRGF0YSkg
PyBpbml0aWFsRGF0YSA6IFtdOwogICAgdGhpcy5zb3J0RmllbGQgPSAiIjsKICAg
IHRoaXMuc29ydFR5cGUgPSAiIjsKICAgIHRoaXMuc29ydERlc2MgPSBmYWxzZTsK
ICB9LAoKICBhZGRXYXRjaGVyOiBmdW5jdGlvbiAoY2FsbGJhY2spIHsKICAgIHRo
aXMud2F0Y2hlcnMuYWRkKGNhbGxiYWNrKTsKICB9LAoKICByZW1vdmVXYXRjaGVy
OiBmdW5jdGlvbiAoY2FsbGJhY2spIHsKICAgIHRoaXMud2F0Y2hlcnMucmVtb3Zl
KGNhbGxiYWNrKTsKICB9LAoKICAvLyBjYWxsIHRoaXMgaWYgdXBkYXRpbmcgZGF0
YSBhbmQgbm90IHVzaW5nIF9zZXREYXRhCiAgX3VwZGF0ZWQ6IGZ1bmN0aW9uICgp
IHsKICAgIHRoaXMuY2FsbFdhdGNoZXJzKCk7CiAgfSwKCiAgY2FsbFdhdGNoZXJz
OiBmdW5jdGlvbiAoKSB7CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMud2F0
Y2hlcnMubGVuZ3RoOyBpKyspCiAgICAgIHRoaXMud2F0Y2hlcnNbaV0uYXBwbHko
dGhpcywgW3RoaXMuZGF0YSgpXSk7CiAgfSwKCiAgc2V0RGF0YTogZnVuY3Rpb24g
KHRoZURhdGEpIHsKICAgIHRoaXMudGhlRGF0YSA9IHRoZURhdGE7CgogICAgaWYg
KHRoaXMuc29ydEZpZWxkKQogICAgICB0aGlzLnNvcnREYXRhQnkodGhpcy5zb3J0
RmllbGQsIHRoaXMuc29ydFR5cGUsIHRoaXMuc29ydERlc2MpOwoKICAgIHRoaXMu
X3NldERhdGEodGhlRGF0YSk7CiAgfSwKCiAgX3NldERhdGE6IGZ1bmN0aW9uICh0
aGVEYXRhKSB7CiAgICB0aGlzLnRoZURhdGEgPSB0aGVEYXRhOwogICAgdGhpcy5j
YWxsV2F0Y2hlcnMoKTsKICAgIHJldHVybiB0aGVEYXRhOwogIH0sCgogIGRhdGE6
IGZ1bmN0aW9uICgpIHsKICAgIHJldHVybiB0aGlzLnRoZURhdGE7CiAgfSwKCiAg
c29ydEJ5OiBmdW5jdGlvbiAoKSB7CiAgICByZXR1cm4gdGhpcy5zb3J0RmllbGQ7
CiAgfSwKCiAgc29ydEludmVydGVkOiBmdW5jdGlvbiAoKSB7CiAgICByZXR1cm4g
dGhpcy5zb3J0RGVzYzsKICB9LAoKICAvLyBtaW1pYyBzb21lIGFycmF5IGZ1bmN0
aW9uYWxpdHkKICBwdXNoOiBmdW5jdGlvbiAoZGF0YSkgewogICAgdGhpcy50aGVE
YXRhLnB1c2goZGF0YSk7CiAgICB0aGlzLmNhbGxXYXRjaGVycygpOwogIH0sCgog
IHBvcDogZnVuY3Rpb24gKCkgewogICAgdmFyIHZhbCA9IHRoaXMudGhlRGF0YS5w
b3AoKTsKICAgIHRoaXMuY2FsbFdhdGNoZXJzKCk7CiAgICByZXR1cm4gdmFsOwog
IH0sCgogIGluZGV4T2Y6IGZ1bmN0aW9uICh2YWx1ZSkgewogICAgcmV0dXJuIHRo
aXMudGhlRGF0YS5pbmRleE9mKHZhbHVlKTsKICB9LAoKICByZW1vdmU6IGZ1bmN0
aW9uICh2YWx1ZSkgewogICAgdGhpcy50aGVEYXRhLnJlbW92ZSh2YWx1ZSk7CiAg
ICB0aGlzLmNhbGxXYXRjaGVycygpOwogIH0sCgogIGVtcHR5OiBmdW5jdGlvbiAo
KSB7CiAgICB0aGlzLnRoZURhdGEgPSBbXTsKICAgIHRoaXMuY2FsbFdhdGNoZXJz
KCk7CiAgfSwKCiAgbGVuZ3RoOiBmdW5jdGlvbiAoKSB7CiAgICByZXR1cm4gdGhp
cy50aGVEYXRhLmxlbmd0aDsKICB9LAoKICB0b3RhbExlbmd0aDogZnVuY3Rpb24g
KCkgewogICAgcmV0dXJuIHRoaXMuYWxsRGF0YSgpLmxlbmd0aDsKICB9LAoKICBh
bGxEYXRhOiBmdW5jdGlvbiAoKSB7CiAgICB2YXIgdGhlRGF0YSA9IHRoaXMudGhl
RGF0YTsKCiAgICBpZiAodGhpcy5kYXRhRmllbGQgJiYgdGhlRGF0YSkKICAgICAg
dGhlRGF0YSA9IHRoZURhdGFbdGhpcy5kYXRhRmllbGRdOwoKICAgIHJldHVybiB0
aGVEYXRhOwogIH0sCgogIHNvcnREYXRhQnk6IGZ1bmN0aW9uIChmaWVsZCwgdHlw
ZSwgaW52ZXJ0KSB7CiAgICB0aGlzLnNvcnRGaWVsZCA9IGZpZWxkOwogICAgdGhp
cy5zb3J0RGVzYyA9IGludmVydDsKICAgIHRoaXMuc29ydFR5cGUgPSB0eXBlOwoK
ICAgIGlmICghZmllbGQgfHwgIXRoaXMudGhlRGF0YSB8fCAhdGhpcy50aGVEYXRh
LnNvcnQpCiAgICAgIHJldHVybjsKCiAgICB2YXIgc29ydGVkID0gdGhpcy50aGVE
YXRhLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHsKICAgICAgdmFyIGFkID0gYVsiIitm
aWVsZF0sIGJkID0gYlsiIitmaWVsZF07CiAgICAgIGFkID0gYWQgPyBhZCA6ICIi
OwogICAgICBiZCA9IGJkID8gYmQgOiAiIjsKCiAgICAgIHN3aXRjaCh0eXBlKSB7
CgogICAgICBjYXNlICJzdHJpbmciOgogICAgICAgIHZhciBhbmFtZSA9IGFkLnRv
VXBwZXJDYXNlKCksIGJuYW1lID0gYmQudG9VcHBlckNhc2UoKTsKCiAgICAgICAg
aWYgKGFuYW1lIDwgYm5hbWUpCiAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAg
ZWxzZSBpZiAoYW5hbWUgPiBibmFtZSkKICAgICAgICAgIHJldHVybiAxOwogICAg
ICAgIGVsc2UKICAgICAgICAgIHJldHVybiAwOwoKICAgICAgY2FzZSAiaXNvZGF0
ZSI6CiAgICAgICAgdmFyIGRhdEEgPSBEYXRlLmZyb21JU09TdHJpbmcoYWQpIHx8
IG5ldyBEYXRlKDApOwogICAgICAgIHZhciBkYXRCID0gRGF0ZS5mcm9tSVNPU3Ry
aW5nKGJkKSB8fCBuZXcgRGF0ZSgwKTsKCiAgICAgICAgcmV0dXJuICgoZGF0QSAt
IGRhdEIpIHx8IDApOwoKICAgICAgZGVmYXVsdDoKICAgICAgY2FzZSAibnVtZXJp
YyI6CiAgICAgICAgcmV0dXJuIGFkIC0gYmQ7CgogICAgICB9CiAgICB9KTsKCiAg
ICBpZiAoaW52ZXJ0KQogICAgICBzb3J0ZWQucmV2ZXJzZSgpOwoKICAgIHRoaXMu
X3NldERhdGEoc29ydGVkKTsKICB9Cgp9KTsKLyoKICBUaGlzIGlzIGEgZGF0YXNv
dXJjZSB5b3UgY2FuIGF0dGFjaCB0byBhIHRhYmxlLiBJdCB3aWxsIGVuYWJsZQog
IHRoZSBzZWxlY3Rpb24gb2Ygcm93cyBvciBjZWxscyBpbiB0aGUgdGFibGUuCgog
IFRoZSBkYXRhIGluIHRoZSBkYXRhc291cmNlIGlzIGVsZW1lbnRzIHRoYXQgYXJl
IHNlbGVjdGVkLgoKICAkaWQ6JAoqLwoKU2VsZWN0YWJsZVRhYmxlID0gbmV3IENs
YXNzKERhdGFTb3VyY2UsIHsKCiAgICAvLyBvcHRpb25zOgogICAgLy8gICB0YWJs
ZTogd2hhdCB0YWJsZSBlbGVtZW50IHRvIGF0dGFjaCB0bwogICAgLy8gICBzZWxl
Y3RhYmxlQ2xhc3M6IGlmIHlvdSBvbmx5IHdhbnQgZWxlbWVudHMgd2l0aCBhIGNl
cnRhaW4gY2xhc3MgdG8gYmUgc2VsZWN0YWJsZSwKICAgIC8vICAgICAgIHNwZWNp
Zml5IHRoaXMgY2xhc3Mgd2l0aCBzZWxlY3RhYmxlQ2xhc3MKICAgIC8vICAgbXVs
dGlwbGU6IGNhbiBtb3JlIHRoYW4gb25lIHRoaW5nIGJlIHNlbGVjdGVkIGF0IG9u
Y2U/IGRlZmF1bHQgaXMgdHJ1ZQogICAgLy8gICBzZWxlY3RlZENsYXNzOiBjbGFz
cyB0byBhcHBseSB0byBzZWxlY3RlZCBlbGVtZW50cwogICAgLy8gICBjaGVja2Jv
eENsYXNzOiBzaW5jZSB0aGVyZSBhcmUgZnJlcXVlbnRseSBjaGVja2JveGVzIGFz
c29jaWF0ZWQgd2l0aCBzZWxlY3RhYmxlIGVsZW1lbnRzLAogICAgLy8gICAgICAg
eW91IGNhbiBzcGVjaWZ5IHRoZSBjbGFzcyBvZiB5b3VyIGNoZWNrYm94ZXMgdG8g
bWFrZSB0aGVtIHN0YXkgaW4gc3luYwogICAgLy8gICBzZWxlY3RhYmxlSXRlbTog
V2hhdCB0eXBlIG9mIGVsZW1lbnRzIGNhbiBiZSBzZWxlY3RlZC4gVmFsdWVzIGFy
ZSAiY2VsbCIgb3IgInJvdyIKICAgIGluaXQ6IGZ1bmN0aW9uIChvcHRzKSB7CiAg
ICAgICAgU2VsZWN0YWJsZVRhYmxlLnN1cGVyQ2xhc3MuaW5pdC5hcHBseSh0aGlz
LCBbXSk7CgogICAgICAgIHZhciB0YWJsZSA9IG9wdHMudGFibGU7CiAgICAgICAg
dmFyIHNlbGVjdGFibGVDbGFzcyA9IG9wdHMuc2VsZWN0YWJsZUNsYXNzOwogICAg
ICAgIHZhciBtdWx0aXBsZSA9IG9wdHMubXVsdGlwbGU7CiAgICAgICAgdmFyIHNl
bGVjdGVkQ2xhc3MgPSBvcHRzLnNlbGVjdGVkQ2xhc3MKICAgICAgICB2YXIgY2hl
Y2tib3hDbGFzcyA9IG9wdHMuY2hlY2tib3hDbGFzcwogICAgICAgIHZhciBzZWxl
Y3RhYmxlSXRlbSA9IG9wdHMuc2VsZWN0YWJsZUl0ZW07CgogICAgICAgIHNlbGVj
dGFibGVJdGVtID0gc2VsZWN0YWJsZUl0ZW0gPT0gImNlbGwiID8gImNlbGwiIDog
InJvdyI7CgogICAgICAgIGlmICghZGVmaW5lZChtdWx0aXBsZSkpIG11bHRpcGxl
ID0gdHJ1ZTsKCiAgICAgICAgdGhpcy50YWJsZSA9IHRhYmxlOwogICAgICAgIHRo
aXMuc2VsZWN0YWJsZUNsYXNzID0gc2VsZWN0YWJsZUNsYXNzOwogICAgICAgIHRo
aXMubXVsdGlwbGUgPSBtdWx0aXBsZTsKICAgICAgICB0aGlzLnNlbGVjdGVkQ2xh
c3MgPSBvcHRzLnNlbGVjdGVkQ2xhc3M7CiAgICAgICAgdGhpcy5jaGVja2JveENs
YXNzID0gb3B0cy5jaGVja2JveENsYXNzOwoKICAgICAgICB0aGlzLnNlbGVjdGVk
RWxlbWVudHMgPSBbXTsKCiAgICAgICAgLy8gaWYgaXQncyBub3QgYSB0YWJsZSwg
ZGllCiAgICAgICAgaWYgKCF0YWJsZSB8fCAhdGFibGUudGFnTmFtZSB8fCB0YWJs
ZS50YWdOYW1lLnRvTG93ZXJDYXNlKCkgIT0gInRhYmxlIikgcmV0dXJuIG51bGw7
CgogICAgICAgIC8vIGdldCBzZWxlY3RhYmxlIGl0ZW1zCiAgICAgICAgdmFyIHRh
YmxlRWxlbWVudHMgPSB0YWJsZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpOwoK
ICAgICAgICB2YXIgc2VsZWN0YWJsZUVsZW1lbnRzOwoKICAgICAgICBpZiAoc2Vs
ZWN0YWJsZUl0ZW0gPT0gImNlbGwiKSB7CiAgICAgICAgICAgIHNlbGVjdGFibGVF
bGVtZW50cyA9IERPTS5maWx0ZXJFbGVtZW50c0J5VGFnTmFtZSh0YWJsZUVsZW1l
bnRzLCAidGQiKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBzZWxlY3Rh
YmxlRWxlbWVudHMgPSBET00uZmlsdGVyRWxlbWVudHNCeVRhZ05hbWUodGFibGVF
bGVtZW50cywgInRyIik7CiAgICAgICAgfQoKICAgICAgICB2YXIgc2VsZiA9IHRo
aXM7CiAgICAgICAgc2VsZWN0YWJsZUVsZW1lbnRzLmZvckVhY2goZnVuY3Rpb24o
ZWxlKSB7CiAgICAgICAgICAgIC8vIGlmIHNlbGVjdGFibGVDbGFzcyBpcyBkZWZp
bmVkIGFuZCB0aGlzIGVsZW1lbnQgZG9lc24ndCBoYXZlIHRoZSBjbGFzcywgc2tp
cCBpdAogICAgICAgICAgICBpZiAoc2VsZWN0YWJsZUNsYXNzICYmICFET00uaGFz
Q2xhc3NOYW1lKGVsZSwgc2VsZWN0YWJsZUNsYXNzKSkgcmV0dXJuOwoKICAgICAg
ICAgICAgLy8gYXR0YWNoIGNsaWNrIGhhbmRsZXIgdG8gZXZlcnkgZWxlbWVudCBp
bnNpZGUgdGhlIGVsZW1lbnQKICAgICAgICAgICAgdmFyIGl0ZW1FbGVtZW50cyA9
IGVsZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpOwogICAgICAgICAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IGl0ZW1FbGVtZW50cy5sZW5ndGg7IGkrKykgewogICAg
ICAgICAgICAgICAgc2VsZi5hdHRhY2hDbGlja0hhbmRsZXIoaXRlbUVsZW1lbnRz
W2ldLCBlbGUpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBhdHRhY2gg
Y2xpY2sgaGFuZGxlciB0byB0aGUgZWxlbWVudCBpdHNlbGYKICAgICAgICAgICAg
c2VsZi5hdHRhY2hDbGlja0hhbmRsZXIoZWxlLCBlbGUpOwogICAgICAgIH0pOwog
ICAgfSwKCiAgICAvLyBzdG9wIG91ciBoYW5kbGluZyBvZiB0aGlzIGV2ZW50CiAg
ICBzdG9wSGFuZGxpbmdFdmVudDogZnVuY3Rpb24gKGV2dCkgewogICAgICAgIGlm
ICghZXZ0KSByZXR1cm47CgogICAgICAgIC8vIHczYwogICAgICAgIGlmIChldnQu
c3RvcFByb3BhZ2F0aW9uKQogICAgICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKTsK
CiAgICAgICAgLy8gaWUKICAgICAgICB0cnkgewogICAgICAgICAgICBldmVudC5j
YW5jZWxCdWJibGUgPSB0cnVlOwogICAgICAgIH0gY2F0Y2goZSkge30KICAgIH0s
CgogICAgLy8gYXR0YWNoIGEgY2xpY2sgaGFuZGxlciB0byB0aGlzIGVsZW1lbnQK
ICAgIGF0dGFjaENsaWNrSGFuZGxlcjogZnVuY3Rpb24gKGVsZSwgcGFyZW50KSB7
CiAgICAgICAgaWYgKCFlbGUpIHJldHVybjsKCiAgICAgICAgdmFyIHNlbGYgPSB0
aGlzOwoKICAgICAgICB2YXIgcm93Q2xpY2tlZCA9IGZ1bmN0aW9uIChldnQpIHsK
ICAgICAgICAgICAgLy8gaWYgaXQgd2FzIGEgY29udHJvbC1jbGljaywgdGhleSdy
ZSBwcm9iYWJseSB0cnlpbmcgdG8gb3BlbiBhIG5ldyB0YWIgb3Igc29tZXRoaW5n
LgogICAgICAgICAgICAvLyBsZXQncyBub3QgaGFuZGxlIGl0CiAgICAgICAgICAg
IGlmIChldnQgJiYgZXZ0LmN0cmxLZXkpIHJldHVybiBmYWxzZTsKCiAgICAgICAg
ICAgIHZhciB0YWdOYW1lID0gZWxlLnRhZ05hbWUudG9Mb3dlckNhc2UoKTsKCiAg
ICAgICAgICAgIC8vIGlmIHRoaXMgaXMgYSBsaW5rIG9yIGhhcyBhbiBvbmNsaWNr
IGhhbmRsZXIsCiAgICAgICAgICAgIC8vIHJldHVybiB0cnVlIGFuZCB0ZWxsIG90
aGVyIGV2ZW50cyB0byByZXR1cm4gdHJ1ZQogICAgICAgICAgICBpZiAoKGVsZS5o
cmVmICYmIHRhZ05hbWUgIT0gImltZyIpIHx8IGVsZS5vbmNsaWNrKSB7CiAgICAg
ICAgICAgICAgICBzZWxmLnN0b3BIYW5kbGluZ0V2ZW50KGV2dCk7CiAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAg
Ly8gaWYgdGhpcyBpcyB0aGUgY2hpbGQgb2YgYSBsaW5rLCBwcm9wYWdhdGUgdGhl
IGV2ZW50IHVwCiAgICAgICAgICAgIHZhciBhbmNlc3RvcnMgPSBET00uZ2V0QW5j
ZXN0b3JzKGVsZSwgdHJ1ZSk7CiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgYW5jZXN0b3JzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICB2YXIg
YW5jZXN0b3IgPSBhbmNlc3RvcnNbaV07CiAgICAgICAgICAgICAgICBpZiAoYW5j
ZXN0b3IuaHJlZiAmJiBhbmNlc3Rvci50YWdOYW1lLnRvTG93ZXJDYXNlKCkgIT0g
ImltZyIpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gaWYgdGhp
cyBpcyBhbiBpbnB1dCBvciBzZWxlY3QgZWxlbWVudCwgc2tpcCBpdAogICAgICAg
ICAgICBpZiAoKHRhZ05hbWUgPT0gInNlbGVjdCIgfHwgdGFnTmFtZSA9PSAiaW5w
dXQiKSAmJiBwYXJlbnQuY2hlY2tib3ggIT0gZWxlKSB7CiAgICAgICAgICAgICAg
ICBzZWxmLnN0b3BIYW5kbGluZ0V2ZW50KGV2dCk7CiAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gdG9nZ2xl
IHNlbGVjdGlvbiBvZiB0aGlzIHBhcmVudCBlbGVtZW50CiAgICAgICAgICAgIGlm
IChzZWxmLnNlbGVjdGVkRWxlbWVudHMuaW5kZXhPZihwYXJlbnQpICE9IC0xKSB7
CiAgICAgICAgICAgICAgICBpZiAoc2VsZi5zZWxlY3RlZENsYXNzKSBET00ucmVt
b3ZlQ2xhc3NOYW1lKHBhcmVudCwgc2VsZi5zZWxlY3RlZENsYXNzKTsKCiAgICAg
ICAgICAgICAgICBzZWxmLnNlbGVjdGVkRWxlbWVudHMucmVtb3ZlKHBhcmVudCk7
CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBpZiAoc2VsZi5z
ZWxlY3RlZENsYXNzKSBET00uYWRkQ2xhc3NOYW1lKHBhcmVudCwgc2VsZi5zZWxl
Y3RlZENsYXNzKTsKCiAgICAgICAgICAgICAgICBpZiAoc2VsZi5tdWx0aXBsZSkg
ewogICAgICAgICAgICAgICAgICAgIHNlbGYuc2VsZWN0ZWRFbGVtZW50cy5wdXNo
KHBhcmVudCk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
ICAgICAgIGlmIChzZWxmLnNlbGVjdGVkQ2xhc3MgJiYgc2VsZi5zZWxlY3RlZEVs
ZW1lbnRzLmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFy
IG9sZFBhcmVudCA9IHNlbGYuc2VsZWN0ZWRFbGVtZW50c1swXTsKICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKG9sZFBhcmVudCkgewogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRE9NLnJlbW92ZUNsYXNzTmFtZShvbGRQYXJlbnQsIHNlbGYu
c2VsZWN0ZWRDbGFzcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
b2xkUGFyZW50LmNoZWNrYm94KSBvbGRQYXJlbnQuY2hlY2tib3guY2hlY2tlZCA9
ICIiOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
ICAgfQoKICAgICAgICAgICAgICAgICAgICBzZWxmLnNlbGVjdGVkRWxlbWVudHMg
PSBbcGFyZW50XTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAg
ICAgICAgICAgLy8gdXBkYXRlIG91ciBkYXRhCiAgICAgICAgICAgIHNlbGYuc2V0
RGF0YShzZWxmLnNlbGVjdGVkRWxlbWVudHMpOwoKICAgICAgICAgICAgLy8gaWYg
dGhlcmUncyBhIGNoZWNrYm94IGFzc29jaWF0ZWQgd2l0aCB0aGlzIHBhcmVudCwg
c2V0IGl0J3MgdmFsdWUKICAgICAgICAgICAgLy8gdG8gdGhlIHBhcmVudCBzZWxl
Y3RlZCB2YWx1ZQogICAgICAgICAgICBpZiAocGFyZW50LmNoZWNrYm94KSBwYXJl
bnQuY2hlY2tib3guY2hlY2tlZCA9IChzZWxmLnNlbGVjdGVkRWxlbWVudHMuaW5k
ZXhPZihwYXJlbnQpICE9IC0xKSA/ICJvbiIgOiAnJzsKICAgICAgICAgICAgaWYg
KHBhcmVudC5jaGVja2JveCA9PSBlbGUpIHsgc2VsZi5zdG9wSGFuZGxpbmdFdmVu
dChldnQpOyByZXR1cm4gdHJ1ZTsgfQoKICAgICAgICAgICAgLy8gYWx3YXlzPyBu
b3Qgc3VyZQogICAgICAgICAgICBpZiAoZXZ0KQogICAgICAgICAgICAgICAgRXZl
bnQuc3RvcChldnQpOwogICAgICAgIH0KCiAgICAgICAgLy8gaWYgdGhpcyBpcyBh
IGNoZWNrYm94IHdlIG5lZWQgdG8ga2VlcCBpbiBzeW5jLCBzZXQgdXAgaXRzIGV2
ZW50IGhhbmRsZXIKICAgICAgICBpZiAodGhpcy5jaGVja2JveENsYXNzICYmIGVs
ZS50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT0gImlucHV0IgogICAgICAgICAgICAm
JiBlbGUudHlwZSA9PSAiY2hlY2tib3giICYmIERPTS5oYXNDbGFzc05hbWUoZWxl
LCB0aGlzLmNoZWNrYm94Q2xhc3MpKSB7CgogICAgICAgICAgICBwYXJlbnQuY2hl
Y2tib3ggPSBlbGU7CgogICAgICAgICAgICAvLyBvdmVycmlkZSBkZWZhdWx0IGV2
ZW50IGhhbmRsZXIgZm9yIHRoZSBjaGVja2JveAogICAgICAgICAgICBET00uYWRk
RXZlbnRMaXN0ZW5lcihlbGUsICJjbGljayIsIGZ1bmN0aW9uIChldnQpIHsKICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICB9KTsKICAgICAg
ICB9CgogICAgICAgIC8vIGF0dGFjaCBhIG1ldGhvZCB0byB0aGUgcm93IHNvIG90
aGVyIHBlb3BsZSBjYW4gcHJvZ3JhbWF0aWNhbGx5CiAgICAgICAgLy8gc2VsZWN0
IGl0LgogICAgICAgIGVsZS5yb3dDbGlja2VkID0gcm93Q2xpY2tlZDsKCiAgICAg
ICAgRE9NLmFkZEV2ZW50TGlzdGVuZXIoZWxlLCAiY2xpY2siLCByb3dDbGlja2Vk
KTsKICAgIH0KCn0pOwovLyB4X2NvcmUuanMsIFggdjMuMTUuMiwgQ3Jvc3MtQnJv
d3Nlci5jb20gREhUTUwgTGlicmFyeQovLyBDb3B5cmlnaHQgKGMpIDIwMDQgTWlj
aGFlbCBGb3N0ZXIsIExpY2Vuc2VkIExHUEwgKGdudS5vcmcpCgovLyBnbG9iYWwg
dmFycyBzdGlsbCBkdXBsaWNhdGVkIGluIHhsaWIuanMgLSBJIHN0aWxsIGRvbid0
IGtub3cgd2hhdCBJJ20gZ29pbmcgdG8gZG8gYWJvdXQgdGhpcwp2YXIgeFZlcnNp
b249JzMuMTUuMicseE5ONCx4T3A3LHhPcDVvcjYseElFNFVwLHhJRTQseElFNSx4
TWFjLHhVQT1uYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCk7CmlmICh3
aW5kb3cub3BlcmEpewogIHhPcDc9KHhVQS5pbmRleE9mKCdvcGVyYSA3JykhPS0x
IHx8IHhVQS5pbmRleE9mKCdvcGVyYS83JykhPS0xKTsKICBpZiAoIXhPcDcpIHhP
cDVvcjY9KHhVQS5pbmRleE9mKCdvcGVyYSA1JykhPS0xIHx8IHhVQS5pbmRleE9m
KCdvcGVyYS81JykhPS0xIHx8IHhVQS5pbmRleE9mKCdvcGVyYSA2JykhPS0xIHx8
IHhVQS5pbmRleE9mKCdvcGVyYS82JykhPS0xKTsKfQplbHNlIGlmIChkb2N1bWVu
dC5hbGwgJiYgeFVBLmluZGV4T2YoJ21zaWUnKSE9LTEpIHsKICB4SUU0VXA9cGFy
c2VJbnQobmF2aWdhdG9yLmFwcFZlcnNpb24pPj00OwogIHhJRTQ9eFVBLmluZGV4
T2YoJ21zaWUgNCcpIT0tMTsKICB4SUU1PXhVQS5pbmRleE9mKCdtc2llIDUnKSE9
LTE7Cn0KZWxzZSBpZiAoZG9jdW1lbnQubGF5ZXJzKSB7eE5OND10cnVlO30KeE1h
Yz14VUEuaW5kZXhPZignbWFjJykhPS0xOwoKZnVuY3Rpb24geEdldEVsZW1lbnRC
eUlkKGUpIHsKICBpZih0eXBlb2YoZSkhPSdzdHJpbmcnKSByZXR1cm4gZTsKICBp
Zihkb2N1bWVudC5nZXRFbGVtZW50QnlJZCkgZT1kb2N1bWVudC5nZXRFbGVtZW50
QnlJZChlKTsKICBlbHNlIGlmKGRvY3VtZW50LmFsbCkgZT1kb2N1bWVudC5hbGxb
ZV07CiAgZWxzZSBlPW51bGw7CiAgcmV0dXJuIGU7Cn0KZnVuY3Rpb24geFBhcmVu
dChlLGJOb2RlKXsKICBpZiAoIShlPXhHZXRFbGVtZW50QnlJZChlKSkpIHJldHVy
biBudWxsOwogIHZhciBwPW51bGw7CiAgaWYgKCFiTm9kZSAmJiB4RGVmKGUub2Zm
c2V0UGFyZW50KSkgcD1lLm9mZnNldFBhcmVudDsKICBlbHNlIGlmICh4RGVmKGUu
cGFyZW50Tm9kZSkpIHA9ZS5wYXJlbnROb2RlOwogIGVsc2UgaWYgKHhEZWYoZS5w
YXJlbnRFbGVtZW50KSkgcD1lLnBhcmVudEVsZW1lbnQ7CiAgcmV0dXJuIHA7Cn0K
ZnVuY3Rpb24geERlZigpIHsKICBmb3IodmFyIGk9MDsgaTxhcmd1bWVudHMubGVu
Z3RoOyArK2kpe2lmKHR5cGVvZihhcmd1bWVudHNbaV0pPT0ndW5kZWZpbmVkJykg
cmV0dXJuIGZhbHNlO30KICByZXR1cm4gdHJ1ZTsKfQpmdW5jdGlvbiB4U3RyKHMp
IHsKICBmb3IodmFyIGk9MDsgaTxhcmd1bWVudHMubGVuZ3RoOyArK2kpe2lmKHR5
cGVvZihhcmd1bWVudHNbaV0pIT0nc3RyaW5nJykgcmV0dXJuIGZhbHNlO30KICBy
ZXR1cm4gdHJ1ZTsKfQpmdW5jdGlvbiB4TnVtKG4pIHsKICBmb3IodmFyIGk9MDsg
aTxhcmd1bWVudHMubGVuZ3RoOyArK2kpe2lmKHR5cGVvZihhcmd1bWVudHNbaV0p
IT0nbnVtYmVyJykgcmV0dXJuIGZhbHNlO30KICByZXR1cm4gdHJ1ZTsKfQpmdW5j
dGlvbiB4U2hvdyhlKSB7CiAgaWYoIShlPXhHZXRFbGVtZW50QnlJZChlKSkpIHJl
dHVybjsKICBpZihlLnN0eWxlICYmIHhEZWYoZS5zdHlsZS52aXNpYmlsaXR5KSkg
ZS5zdHlsZS52aXNpYmlsaXR5PSd2aXNpYmxlJzsKfQpmdW5jdGlvbiB4SGlkZShl
KSB7CiAgaWYoIShlPXhHZXRFbGVtZW50QnlJZChlKSkpIHJldHVybjsKICBpZihl
LnN0eWxlICYmIHhEZWYoZS5zdHlsZS52aXNpYmlsaXR5KSkgZS5zdHlsZS52aXNp
YmlsaXR5PSdoaWRkZW4nOwp9CmZ1bmN0aW9uIHhaSW5kZXgoZSx1WikgewogIGlm
KCEoZT14R2V0RWxlbWVudEJ5SWQoZSkpKSByZXR1cm4gMDsKICBpZihlLnN0eWxl
ICYmIHhEZWYoZS5zdHlsZS56SW5kZXgpKSB7CiAgICBpZih4TnVtKHVaKSkgZS5z
dHlsZS56SW5kZXg9dVo7CiAgICB1Wj1wYXJzZUludChlLnN0eWxlLnpJbmRleCk7
CiAgfQogIHJldHVybiB1WjsKfQpmdW5jdGlvbiB4Q29sb3IoZSxzQ29sb3IpIHsK
ICBpZighKGU9eEdldEVsZW1lbnRCeUlkKGUpKSkgcmV0dXJuICcnOwogIHZhciBj
PScnOwogIGlmKGUuc3R5bGUgJiYgeERlZihlLnN0eWxlLmNvbG9yKSkgewogICAg
aWYoeFN0cihzQ29sb3IpKSBlLnN0eWxlLmNvbG9yPXNDb2xvcjsKICAgIGM9ZS5z
dHlsZS5jb2xvcjsKICB9CiAgcmV0dXJuIGM7Cn0KZnVuY3Rpb24geEJhY2tncm91
bmQoZSxzQ29sb3Isc0ltYWdlKSB7CiAgaWYoIShlPXhHZXRFbGVtZW50QnlJZChl
KSkpIHJldHVybiAnJzsKICB2YXIgYmc9Jyc7CiAgaWYoZS5zdHlsZSkgewogICAg
aWYoeFN0cihzQ29sb3IpKSB7CiAgICAgIGlmKCF4T3A1b3I2KSBlLnN0eWxlLmJh
Y2tncm91bmRDb2xvcj1zQ29sb3I7CiAgICAgIGVsc2UgZS5zdHlsZS5iYWNrZ3Jv
dW5kPXNDb2xvcjsKICAgIH0KICAgIGlmKHhTdHIoc0ltYWdlKSkgZS5zdHlsZS5i
YWNrZ3JvdW5kSW1hZ2U9KHNJbWFnZSE9JycpPyAndXJsKCcrc0ltYWdlKycpJyA6
IG51bGw7CiAgICBpZigheE9wNW9yNikgYmc9ZS5zdHlsZS5iYWNrZ3JvdW5kQ29s
b3I7CiAgICBlbHNlIGJnPWUuc3R5bGUuYmFja2dyb3VuZDsKICB9CiAgcmV0dXJu
IGJnOwp9CmZ1bmN0aW9uIHhNb3ZlVG8oZSxpWCxpWSkgewogIHhMZWZ0KGUsaVgp
OwogIHhUb3AoZSxpWSk7Cn0KZnVuY3Rpb24geExlZnQoZSxpWCkgewogIGlmKCEo
ZT14R2V0RWxlbWVudEJ5SWQoZSkpKSByZXR1cm4gMDsKICB2YXIgY3NzPXhEZWYo
ZS5zdHlsZSk7CiAgaWYgKGNzcyAmJiB4U3RyKGUuc3R5bGUubGVmdCkpIHsKICAg
IGlmKHhOdW0oaVgpKSBlLnN0eWxlLmxlZnQ9aVgrJ3B4JzsKICAgIGVsc2Ugewog
ICAgICBpWD1wYXJzZUludChlLnN0eWxlLmxlZnQpOwogICAgICBpZihpc05hTihp
WCkpIGlYPTA7CiAgICB9CiAgfQogIGVsc2UgaWYoY3NzICYmIHhEZWYoZS5zdHls
ZS5waXhlbExlZnQpKSB7CiAgICBpZih4TnVtKGlYKSkgZS5zdHlsZS5waXhlbExl
ZnQ9aVg7CiAgICBlbHNlIGlYPWUuc3R5bGUucGl4ZWxMZWZ0OwogIH0KICByZXR1
cm4gaVg7Cn0KZnVuY3Rpb24geFRvcChlLGlZKSB7CiAgaWYoIShlPXhHZXRFbGVt
ZW50QnlJZChlKSkpIHJldHVybiAwOwogIHZhciBjc3M9eERlZihlLnN0eWxlKTsK
ICBpZihjc3MgJiYgeFN0cihlLnN0eWxlLnRvcCkpIHsKICAgIGlmKHhOdW0oaVkp
KSBlLnN0eWxlLnRvcD1pWSsncHgnOwogICAgZWxzZSB7CiAgICAgIGlZPXBhcnNl
SW50KGUuc3R5bGUudG9wKTsKICAgICAgaWYoaXNOYU4oaVkpKSBpWT0wOwogICAg
fQogIH0KICBlbHNlIGlmKGNzcyAmJiB4RGVmKGUuc3R5bGUucGl4ZWxUb3ApKSB7
CiAgICBpZih4TnVtKGlZKSkgZS5zdHlsZS5waXhlbFRvcD1pWTsKICAgIGVsc2Ug
aVk9ZS5zdHlsZS5waXhlbFRvcDsKICB9CiAgcmV0dXJuIGlZOwp9CmZ1bmN0aW9u
IHhQYWdlWChlKSB7CiAgaWYgKCEoZT14R2V0RWxlbWVudEJ5SWQoZSkpKSByZXR1
cm4gMDsKICB2YXIgeCA9IDA7CiAgd2hpbGUgKGUpIHsKICAgIGlmICh4RGVmKGUu
b2Zmc2V0TGVmdCkpIHggKz0gZS5vZmZzZXRMZWZ0OwogICAgZSA9IHhEZWYoZS5v
ZmZzZXRQYXJlbnQpID8gZS5vZmZzZXRQYXJlbnQgOiBudWxsOwogIH0KICByZXR1
cm4geDsKfQpmdW5jdGlvbiB4UGFnZVkoZSkgewogIGlmICghKGU9eEdldEVsZW1l
bnRCeUlkKGUpKSkgcmV0dXJuIDA7CiAgdmFyIHkgPSAwOwogIHdoaWxlIChlKSB7
CiAgICBpZiAoeERlZihlLm9mZnNldFRvcCkpIHkgKz0gZS5vZmZzZXRUb3A7CiAg
ICBlID0geERlZihlLm9mZnNldFBhcmVudCkgPyBlLm9mZnNldFBhcmVudCA6IG51
bGw7CiAgfQovLyAgaWYgKHhPcDcpIHJldHVybiB5IC0gZG9jdW1lbnQuYm9keS5v
ZmZzZXRUb3A7IC8vIHYzLjE0LCB0ZW1wb3JhcnkgaGFjayBmb3Igb3BlcmEgYnVn
IDEzMDMyNAogIHJldHVybiB5Owp9CmZ1bmN0aW9uIHhPZmZzZXRMZWZ0KGUpIHsK
ICBpZiAoIShlPXhHZXRFbGVtZW50QnlJZChlKSkpIHJldHVybiAwOwogIGlmICh4
RGVmKGUub2Zmc2V0TGVmdCkpIHJldHVybiBlLm9mZnNldExlZnQ7CiAgZWxzZSBy
ZXR1cm4gMDsKfQpmdW5jdGlvbiB4T2Zmc2V0VG9wKGUpIHsKICBpZiAoIShlPXhH
ZXRFbGVtZW50QnlJZChlKSkpIHJldHVybiAwOwogIGlmICh4RGVmKGUub2Zmc2V0
VG9wKSkgcmV0dXJuIGUub2Zmc2V0VG9wOwogIGVsc2UgcmV0dXJuIDA7Cn0KZnVu
Y3Rpb24geFNjcm9sbExlZnQoZSkgewogIHZhciBvZmZzZXQ9MDsKICBpZiAoIShl
PXhHZXRFbGVtZW50QnlJZChlKSkpIHsKICAgIGlmKGRvY3VtZW50LmRvY3VtZW50
RWxlbWVudCAmJiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsTGVmdCkg
b2Zmc2V0PWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxMZWZ0OwogICAg
ZWxzZSBpZihkb2N1bWVudC5ib2R5ICYmIHhEZWYoZG9jdW1lbnQuYm9keS5zY3Jv
bGxMZWZ0KSkgb2Zmc2V0PWRvY3VtZW50LmJvZHkuc2Nyb2xsTGVmdDsKICB9CiAg
ZWxzZSB7IGlmICh4TnVtKGUuc2Nyb2xsTGVmdCkpIG9mZnNldCA9IGUuc2Nyb2xs
TGVmdDsgfQogIHJldHVybiBvZmZzZXQ7Cn0KZnVuY3Rpb24geFNjcm9sbFRvcChl
KSB7CiAgdmFyIG9mZnNldD0wOwogIGlmICghKGU9eEdldEVsZW1lbnRCeUlkKGUp
KSkgewogICAgaWYoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50ICYmIGRvY3VtZW50
LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3ApIG9mZnNldD1kb2N1bWVudC5kb2N1
bWVudEVsZW1lbnQuc2Nyb2xsVG9wOwogICAgZWxzZSBpZihkb2N1bWVudC5ib2R5
ICYmIHhEZWYoZG9jdW1lbnQuYm9keS5zY3JvbGxUb3ApKSBvZmZzZXQ9ZG9jdW1l
bnQuYm9keS5zY3JvbGxUb3A7CiAgfQogIGVsc2UgeyBpZiAoeE51bShlLnNjcm9s
bFRvcCkpIG9mZnNldCA9IGUuc2Nyb2xsVG9wOyB9CiAgcmV0dXJuIG9mZnNldDsK
fQpmdW5jdGlvbiB4SGFzUG9pbnQoZWxlLCBpTGVmdCwgaVRvcCwgaUNscFQsIGlD
bHBSLCBpQ2xwQiwgaUNscEwpIHsKICBpZiAoIXhOdW0oaUNscFQpKXtpQ2xwVD1p
Q2xwUj1pQ2xwQj1pQ2xwTD0wO30KICBlbHNlIGlmICgheE51bShpQ2xwUikpe2lD
bHBSPWlDbHBCPWlDbHBMPWlDbHBUO30KICBlbHNlIGlmICgheE51bShpQ2xwQikp
e2lDbHBMPWlDbHBSOyBpQ2xwQj1pQ2xwVDt9CiAgdmFyIHRoaXNYID0geFBhZ2VY
KGVsZSksIHRoaXNZID0geFBhZ2VZKGVsZSk7CiAgcmV0dXJuIChpTGVmdCA+PSB0
aGlzWCArIGlDbHBMICYmIGlMZWZ0IDw9IHRoaXNYICsgeFdpZHRoKGVsZSkgLSBp
Q2xwUiAmJgogICAgICAgICAgaVRvcCA+PXRoaXNZICsgaUNscFQgJiYgaVRvcCA8
PSB0aGlzWSArIHhIZWlnaHQoZWxlKSAtIGlDbHBCICk7Cn0KZnVuY3Rpb24geFJl
c2l6ZVRvKGUsdVcsdUgpIHsKICB4V2lkdGgoZSx1Vyk7CiAgeEhlaWdodChlLHVI
KTsKfQpmdW5jdGlvbiB4V2lkdGgoZSx1VykgewogIGlmKCEoZT14R2V0RWxlbWVu
dEJ5SWQoZSkpKSByZXR1cm4gMDsKICBpZiAoeE51bSh1VykpIHsKICAgIGlmICh1
VzwwKSB1VyA9IDA7CiAgICBlbHNlIHVXPU1hdGgucm91bmQodVcpOwogIH0KICBl
bHNlIHVXPS0xOwogIHZhciBjc3M9eERlZihlLnN0eWxlKTsKICBpZihjc3MgJiYg
eERlZihlLm9mZnNldFdpZHRoKSAmJiB4U3RyKGUuc3R5bGUud2lkdGgpKSB7CiAg
ICBpZih1Vz49MCkgeFNldENXKGUsIHVXKTsKICAgIHVXPWUub2Zmc2V0V2lkdGg7
CiAgfQogIGVsc2UgaWYoY3NzICYmIHhEZWYoZS5zdHlsZS5waXhlbFdpZHRoKSkg
ewogICAgaWYodVc+PTApIGUuc3R5bGUucGl4ZWxXaWR0aD11VzsKICAgIHVXPWUu
c3R5bGUucGl4ZWxXaWR0aDsKICB9CiAgcmV0dXJuIHVXOwp9CmZ1bmN0aW9uIHhI
ZWlnaHQoZSx1SCkgewogIGlmKCEoZT14R2V0RWxlbWVudEJ5SWQoZSkpKSByZXR1
cm4gMDsKICBpZiAoeE51bSh1SCkpIHsKICAgIGlmICh1SDwwKSB1SCA9IDA7CiAg
ICBlbHNlIHVIPU1hdGgucm91bmQodUgpOwogIH0KICBlbHNlIHVIPS0xOwogIHZh
ciBjc3M9eERlZihlLnN0eWxlKTsKICBpZihjc3MgJiYgeERlZihlLm9mZnNldEhl
aWdodCkgJiYgeFN0cihlLnN0eWxlLmhlaWdodCkpIHsKICAgIGlmKHVIPj0wKSB4
U2V0Q0goZSwgdUgpOwogICAgdUg9ZS5vZmZzZXRIZWlnaHQ7CiAgfQogIGVsc2Ug
aWYoY3NzICYmIHhEZWYoZS5zdHlsZS5waXhlbEhlaWdodCkpIHsKICAgIGlmKHVI
Pj0wKSBlLnN0eWxlLnBpeGVsSGVpZ2h0PXVIOwogICAgdUg9ZS5zdHlsZS5waXhl
bEhlaWdodDsKICB9CiAgcmV0dXJuIHVIOwp9CmZ1bmN0aW9uIHhHZXRDUyhlbGUs
c1Ape3JldHVybiBwYXJzZUludChkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21w
dXRlZFN0eWxlKGVsZSwnJykuZ2V0UHJvcGVydHlWYWx1ZShzUCkpO30KZnVuY3Rp
b24geFNldENXKGVsZSx1Vyl7CiAgdmFyIHBsPTAscHI9MCxibD0wLGJyPTA7CiAg
aWYoeERlZihkb2N1bWVudC5kZWZhdWx0VmlldykgJiYgeERlZihkb2N1bWVudC5k
ZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKSl7CiAgICBwbD14R2V0Q1MoZWxl
LCdwYWRkaW5nLWxlZnQnKTsKICAgIHByPXhHZXRDUyhlbGUsJ3BhZGRpbmctcmln
aHQnKTsKICAgIGJsPXhHZXRDUyhlbGUsJ2JvcmRlci1sZWZ0LXdpZHRoJyk7CiAg
ICBicj14R2V0Q1MoZWxlLCdib3JkZXItcmlnaHQtd2lkdGgnKTsKICB9CiAgZWxz
ZSBpZih4RGVmKGVsZS5jdXJyZW50U3R5bGUsZG9jdW1lbnQuY29tcGF0TW9kZSkp
ewogICAgaWYoZG9jdW1lbnQuY29tcGF0TW9kZT09J0NTUzFDb21wYXQnKXsKICAg
ICAgcGw9cGFyc2VJbnQoZWxlLmN1cnJlbnRTdHlsZS5wYWRkaW5nTGVmdCk7CiAg
ICAgIHByPXBhcnNlSW50KGVsZS5jdXJyZW50U3R5bGUucGFkZGluZ1JpZ2h0KTsK
ICAgICAgYmw9cGFyc2VJbnQoZWxlLmN1cnJlbnRTdHlsZS5ib3JkZXJMZWZ0V2lk
dGgpOwogICAgICBicj1wYXJzZUludChlbGUuY3VycmVudFN0eWxlLmJvcmRlclJp
Z2h0V2lkdGgpOwogICAgfQogIH0KICBlbHNlIGlmKHhEZWYoZWxlLm9mZnNldFdp
ZHRoLGVsZS5zdHlsZS53aWR0aCkpeyAvLyA/CiAgICBlbGUuc3R5bGUud2lkdGg9
dVcrJ3B4JzsKICAgIHBsPWVsZS5vZmZzZXRXaWR0aC11VzsKICB9CiAgaWYoaXNO
YU4ocGwpKSBwbD0wOyBpZihpc05hTihwcikpIHByPTA7IGlmKGlzTmFOKGJsKSkg
Ymw9MDsgaWYoaXNOYU4oYnIpKSBicj0wOwogIHZhciBjc3NXPXVXLShwbCtwciti
bCticik7CiAgaWYoaXNOYU4oY3NzVyl8fGNzc1c8MCkgcmV0dXJuOwogIGVsc2Ug
ZWxlLnN0eWxlLndpZHRoPWNzc1crJ3B4JzsKfQpmdW5jdGlvbiB4U2V0Q0goZWxl
LHVIKXsKICB2YXIgcHQ9MCxwYj0wLGJ0PTAsYmI9MDsKICBpZih4RGVmKGRvY3Vt
ZW50LmRlZmF1bHRWaWV3KSAmJiB4RGVmKGRvY3VtZW50LmRlZmF1bHRWaWV3Lmdl
dENvbXB1dGVkU3R5bGUpKXsKICAgIHB0PXhHZXRDUyhlbGUsJ3BhZGRpbmctdG9w
Jyk7CiAgICBwYj14R2V0Q1MoZWxlLCdwYWRkaW5nLWJvdHRvbScpOwogICAgYnQ9
eEdldENTKGVsZSwnYm9yZGVyLXRvcC13aWR0aCcpOwogICAgYmI9eEdldENTKGVs
ZSwnYm9yZGVyLWJvdHRvbS13aWR0aCcpOwogIH0KICBlbHNlIGlmKHhEZWYoZWxl
LmN1cnJlbnRTdHlsZSxkb2N1bWVudC5jb21wYXRNb2RlKSl7CiAgICBpZihkb2N1
bWVudC5jb21wYXRNb2RlPT0nQ1NTMUNvbXBhdCcpewogICAgICBwdD1wYXJzZUlu
dChlbGUuY3VycmVudFN0eWxlLnBhZGRpbmdUb3ApOwogICAgICBwYj1wYXJzZUlu
dChlbGUuY3VycmVudFN0eWxlLnBhZGRpbmdCb3R0b20pOwogICAgICBidD1wYXJz
ZUludChlbGUuY3VycmVudFN0eWxlLmJvcmRlclRvcFdpZHRoKTsKICAgICAgYmI9
cGFyc2VJbnQoZWxlLmN1cnJlbnRTdHlsZS5ib3JkZXJCb3R0b21XaWR0aCk7CiAg
ICB9CiAgfQogIGVsc2UgaWYoeERlZihlbGUub2Zmc2V0SGVpZ2h0LGVsZS5zdHls
ZS5oZWlnaHQpKXsgLy8gPwogICAgZWxlLnN0eWxlLmhlaWdodD11SCsncHgnOwog
ICAgcHQ9ZWxlLm9mZnNldEhlaWdodC11SDsKICB9CiAgaWYoaXNOYU4ocHQpKSBw
dD0wOyBpZihpc05hTihwYikpIHBiPTA7IGlmKGlzTmFOKGJ0KSkgYnQ9MDsgaWYo
aXNOYU4oYmIpKSBiYj0wOwogIHZhciBjc3NIPXVILShwdCtwYitidCtiYik7CiAg
aWYoaXNOYU4oY3NzSCl8fGNzc0g8MCkgcmV0dXJuOwogIGVsc2UgZWxlLnN0eWxl
LmhlaWdodD1jc3NIKydweCc7Cn0KZnVuY3Rpb24geENsaXAoZSxpVG9wLGlSaWdo
dCxpQm90dG9tLGlMZWZ0KSB7CiAgaWYoIShlPXhHZXRFbGVtZW50QnlJZChlKSkp
IHJldHVybjsKICBpZihlLnN0eWxlKSB7CiAgICBpZiAoeE51bShpTGVmdCkpIGUu
c3R5bGUuY2xpcD0ncmVjdCgnK2lUb3ArJ3B4ICcraVJpZ2h0KydweCAnK2lCb3R0
b20rJ3B4ICcraUxlZnQrJ3B4KSc7CiAgICBlbHNlIGUuc3R5bGUuY2xpcD0ncmVj
dCgwICcrcGFyc2VJbnQoZS5zdHlsZS53aWR0aCkrJ3B4ICcrcGFyc2VJbnQoZS5z
dHlsZS5oZWlnaHQpKydweCAwKSc7CiAgfQp9CmZ1bmN0aW9uIHhDbGllbnRXaWR0
aCgpIHsKICB2YXIgdz0wOwogIGlmKHhPcDVvcjYpIHc9d2luZG93LmlubmVyV2lk
dGg7CiAgZWxzZSBpZighd2luZG93Lm9wZXJhICYmIGRvY3VtZW50LmRvY3VtZW50
RWxlbWVudCAmJiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGgp
CiAgICB3PWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aDsKICBl
bHNlIGlmKGRvY3VtZW50LmJvZHkgJiYgZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0
aCkKICAgIHc9ZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aDsKICBlbHNlIGlmKHhE
ZWYod2luZG93LmlubmVyV2lkdGgsd2luZG93LmlubmVySGVpZ2h0LGRvY3VtZW50
LmhlaWdodCkpIHsKICAgIHc9d2luZG93LmlubmVyV2lkdGg7CiAgICBpZihkb2N1
bWVudC5oZWlnaHQ+d2luZG93LmlubmVySGVpZ2h0KSB3LT0xNjsKICB9CiAgcmV0
dXJuIHc7Cn0KZnVuY3Rpb24geENsaWVudEhlaWdodCgpIHsKICB2YXIgaD0wOwog
IGlmKHhPcDVvcjYpIGg9d2luZG93LmlubmVySGVpZ2h0OwogIGVsc2UgaWYoIXdp
bmRvdy5vcGVyYSAmJiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQgJiYgZG9jdW1l
bnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCkKICAgIGg9ZG9jdW1lbnQu
ZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodDsKICBlbHNlIGlmKGRvY3VtZW50
LmJvZHkgJiYgZG9jdW1lbnQuYm9keS5jbGllbnRIZWlnaHQpCiAgICBoPWRvY3Vt
ZW50LmJvZHkuY2xpZW50SGVpZ2h0OwogIGVsc2UgaWYoeERlZih3aW5kb3cuaW5u
ZXJXaWR0aCx3aW5kb3cuaW5uZXJIZWlnaHQsZG9jdW1lbnQud2lkdGgpKSB7CiAg
ICBoPXdpbmRvdy5pbm5lckhlaWdodDsKICAgIGlmKGRvY3VtZW50LndpZHRoPndp
bmRvdy5pbm5lcldpZHRoKSBoLT0xNjsKICB9CiAgcmV0dXJuIGg7Cn0KZnVuY3Rp
b24geElubmVySHRtbChlLCBzSHRtbCkgewogIGlmKCEoZT14R2V0RWxlbWVudEJ5
SWQoZSkpKSByZXR1cm4gJyc7CiAgaWYgKHhTdHIoZS5pbm5lckhUTUwpKSB7CiAg
ICBpZiAoeFN0cihzSHRtbCkpIGUuaW5uZXJIVE1MID0gc0h0bWw7CiAgICBlbHNl
IHJldHVybiBlLmlubmVySFRNTDsKICB9Cn0KICAgIHZhciBsYXN0RGl2OwogICAg
bGFzdERpdiA9ICdxcmRpdic7CgogICAgdmFyIFNpdGU7CiAgICBpZiAoISBTaXRl
KSBTaXRlID0gbmV3IE9iamVjdCgpCgogICAgZnVuY3Rpb24gcXVpY2tyZXBseShk
dGlkLCBwaWQsIG5ld3N1YmplY3QpIHsKICAgICAgICAvLyBNYWMgSUUgNS54IGRv
ZXMgbm90IGxpa2UgZGVhbGluZyB3aXRoCiAgICAgICAgLy8gbmV4dFNpYmxpbmcg
c2luY2UgaXQgZG9lcyBub3Qgc3VwcG9ydCBpdAogICAgICAgIGlmICh4SUU0VXAg
JiYgeE1hYykgeyByZXR1cm4gdHJ1ZTsgfQoKICAgICAgICAvLyBvbiBJRSwgY2Fu
Y2VsIHRoZSBidWJibGUgb2YgdGhlIGV2ZW50IHVwIHRvIHRoZSBwYWdlLiBvdGhl
cgogICAgICAgIC8vIGJyb3dzZXJzIGRvbid0IHNlZW0gdG8gYnViYmxlIGV2ZW50
cyB1cCByZWdpc3RlcmVkIHRoaXMgd2F5LgogICAgICAgIHZhciBldiA9IHdpbmRv
dy5ldmVudDsKICAgICAgICBpZiAoZXYpIHsKICAgICAgICAgICAgaWYgKGV2LnN0
b3BQcm9wYWdhdGlvbikKICAgICAgICAgICAgICAgZXYuc3RvcFByb3BhZ2F0aW9u
KCk7CiAgICAgICAgICAgIGlmIChldi5jYW5jZWxCdWJibGUgIT0gInVuZGVmaW5l
ZCIpCiAgICAgICAgICAgICAgICBldi5jYW5jZWxCdWJibGUgPSB0cnVlOwogICAg
ICAgIH0KCiAgICAgICAgdmFyIHRhcmdldG5hbWUgPSAibGpxcnQiICsgZHRpZDsK
CiAgICAgICAgdmFyIHB0YWxraWQgPSB4R2V0RWxlbWVudEJ5SWQoJ3BhcmVudHRh
bGtpZCcpOwogICAgICAgIHZhciBydG8gPSB4R2V0RWxlbWVudEJ5SWQoJ3JlcGx5
dG8nKTsKICAgICAgICB2YXIgZHRpZF9maWVsZCA9IHhHZXRFbGVtZW50QnlJZCgn
ZHRpZCcpOwogICAgICAgIHZhciBxcl9kaXYgPSB4R2V0RWxlbWVudEJ5SWQoJ3Fy
ZGl2Jyk7CiAgICAgICAgdmFyIGN1cl9kaXYgPSB4R2V0RWxlbWVudEJ5SWQodGFy
Z2V0bmFtZSk7CiAgICAgICAgdmFyIHFyX2Zvcm1fZGl2ICA9IHhHZXRFbGVtZW50
QnlJZCgncXJmb3JtZGl2Jyk7CiAgICAgICAgdmFyIHFyX2Zvcm0gPSB4R2V0RWxl
bWVudEJ5SWQoJ3FyZm9ybScpOwogICAgICAgIHZhciBzdWJqZWN0ID0geEdldEVs
ZW1lbnRCeUlkKCdzdWJqZWN0Jyk7CgogICAgICAgIC8vIElzIHRoaXMgYSBkdW1i
IGJyb3dzZXI/CiAgICAgICAgaWYoICFwdGFsa2lkIHx8ICFydG8gfHwgIWR0aWRf
ZmllbGQgfHwgIXFyX2RpdiB8fCAhY3VyX2RpdiB8fCAhcXJfZm9ybSB8fCAKICAg
ICAgICAgICAgIXFyX2Zvcm1fZGl2IHx8ICFzdWJqZWN0KSB7CiAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgIH0KCiAgICAgICAgcHRhbGtpZC52YWx1ZSA9
IHBpZDsKICAgICAgICBkdGlkX2ZpZWxkLnZhbHVlID0gZHRpZDsKICAgICAgICBy
dG8udmFsdWUgPSBwaWQ7CgogICAgICAgIGlmIChsYXN0RGl2ID09ICdxcmRpdicp
IHsKICAgICAgICAgICAgaWYgKCEgc2hvd1FSZGl2KHFyX2RpdikpIHsKICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAg
IC8vIE9ubHkgb25lIHN3YXAKICAgICAgICAgICAgaWYgKCEgc3dhcG5vZGVzKHFy
X2RpdiwgY3VyX2RpdikpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIGlmIChsYXN0RGl2ICE9IGR0aWQp
IHsKICAgICAgICAgICAgdmFyIGxhc3RfZGl2ID0geEdldEVsZW1lbnRCeUlkKGxh
c3REaXYpOwogICAgICAgICAgICAvLyBUd28gc3dhcHMKICAgICAgICAgICAgaWYg
KChsYXN0X2RpdiAhPSBjdXJfZGl2KSAmJiAhIChzd2Fwbm9kZXMobGFzdF9kaXYs
IGN1cl9kaXYpICYmIHN3YXBub2Rlcyhxcl9kaXYsIGxhc3RfZGl2KSkpIHsKICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICB9CiAgICAgICAg
fQoKICAgICAgICBsYXN0RGl2ID0gdGFyZ2V0bmFtZTsKCiAgICAgICAgaWYoIXN1
YmplY3QudmFsdWUgfHwgc3ViamVjdC52YWx1ZSA9PSBzdWJqZWN0LmRlZmF1bHRW
YWx1ZSB8fCBzdWJqZWN0LnZhbHVlLnN1YnN0cigwLCA0KSA9PSAnUmU6ICcpIHsK
ICAgICAgICAgIHN1YmplY3QudmFsdWUgPSBuZXdzdWJqZWN0OwogICAgICAgICAg
c3ViamVjdC5kZWZhdWx0VmFsdWUgPSBuZXdzdWJqZWN0OwogICAgICAgIH0KCiAg
ICAgICAgaWYoY3VyX2Rpdi5jbGFzc05hbWUpIHsKICAgICAgICAgIHFyX2Zvcm1f
ZGl2LmNsYXNzTmFtZSA9IGN1cl9kaXYuY2xhc3NOYW1lOwogICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICBxcl9mb3JtX2Rpdi5jbGFzc05hbWUgPSAiIjsKICAgICAg
ICB9CgogICAgICAgIHZhciBxcl9ib2R5ID0gcXJfZm9ybS5ib2R5OyAgLy8gdGhl
IHRleHRhcmVhIG9mIHRoZSBxcl9mb3JtCiAgICAgICAgaWYgKHFyX2JvZHkpIHsK
ICAgICAgICAgICAgLy8gaGF2ZSB0byBzZXQgYSB0aW1lb3V0IGJlY2F1c2UgbW9z
dCBicm93c2VycyB3b24ndCBsZXQgeW91IGZvY3VzCiAgICAgICAgICAgIC8vIG9u
IGFuIGVsZW1lbnQgdGhhdCdzIHN0aWxsIGluIHRoZSBwcm9jZXNzIG9mIGJlaW5n
IGNyZWF0ZWQuCiAgICAgICAgICAgIC8vIHNvIGxhbWUuCiAgICAgICAgICAgIHdp
bmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgcXJfYm9keS5mb2N1cygpIH0s
IDI1MCk7CiAgICAgICAgfQoKICAgICAgICAvLyBTbyBpdCBkb2VzIG5vdCBmb2xs
b3cgdGhlIGxpbmsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgZnVu
Y3Rpb24gcmVnRXZlbnQgKHRhcmdldCwgZXZ0LCBmdW5jKSB7CiAgICAgIGlmICgh
IHRhcmdldCkgeyByZXR1cm47IH0KICAgICAgaWYgKHRhcmdldC5hdHRhY2hFdmVu
dCkKICAgICAgICB0YXJnZXQuYXR0YWNoRXZlbnQoIm9uIitldnQsIGZ1bmMpOwog
ICAgICBpZiAodGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIpCiAgICAgICAgdGFyZ2V0
LmFkZEV2ZW50TGlzdGVuZXIoZXZ0LCBmdW5jLCBmYWxzZSk7CiAgICB9CgogICAg
ZnVuY3Rpb24gbW9yZW9wdHMoKQogICAgewogICAgICAgIHZhciBxcl9mb3JtID0g
eEdldEVsZW1lbnRCeUlkKCdxcmZvcm0nKTsKICAgICAgICB2YXIgYmFzZXBhdGgg
PSB4R2V0RWxlbWVudEJ5SWQoJ2Jhc2VwYXRoJyk7CiAgICAgICAgdmFyIGR0aWQg
PSB4R2V0RWxlbWVudEJ5SWQoJ2R0aWQnKTsKICAgICAgICB2YXIgcGlkZm9ybSA9
IHhHZXRFbGVtZW50QnlJZCgncGFyZW50dGFsa2lkJyk7CgogICAgICAgIC8vIGRv
IG5vdCBkbyB0aGUgZGVmYXVsdCBmb3JtIGFjdGlvbiAocG9zdCBjb21tZW50KSBp
ZiBzb21ldGhpbmcgaXMgYnJva2UKICAgICAgICBpZiAoIXFyX2Zvcm0gfHwgIWJh
c2VwYXRoIHx8ICFkdGlkIHx8ICFwaWRmb3JtKSByZXR1cm4gZmFsc2U7CgogICAg
ICAgIHZhciByZXBseXRvID0gTnVtYmVyKGR0aWQudmFsdWUpOwogICAgICAgIHZh
ciBwaWQgPSBOdW1iZXIocGlkZm9ybS52YWx1ZSk7CgogICAgICAgIGlmKHJlcGx5
dG8gPiAwICYmIHBpZCA+IDApIHsKICAgICAgICAgIC8vYSByZXBseSB0byBhIGNv
bW1lbnQKICAgICAgICAgIHFyX2Zvcm0uYWN0aW9uID0gYmFzZXBhdGgudmFsdWUg
KyAicmVwbHl0bz0iICsgcmVwbHl0bzsKICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgcXJfZm9ybS5hY3Rpb24gPSBiYXNlcGF0aC52YWx1ZSArICJtb2RlPXJlcGx5
IjsKICAgICAgICB9CgogICAgICAgIC8vIHdlIGNoYW5nZWQgdGhlIGZvcm0gYWN0
aW9uIHNvIHN1Ym1pdCBvdXJzZWx2ZXMKICAgICAgICAvLyBhbmQgZG9uJ3QgdXNl
IHRoZSBkZWZhdWx0IGZvcm0gYWN0aW9uCiAgICAgICAgcXJfZm9ybS5zdWJtaXQo
KTsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICBmdW5jdGlvbiBzdWJt
aXRmb3JtKCkKICAgewogICAgICAgIHZhciBzdWJtaXRtb3JlID0geEdldEVsZW1l
bnRCeUlkKCdzdWJtaXRtb3Jlb3B0cycpOwogICAgICAgIHZhciBzdWJtaXQgPSB4
R2V0RWxlbWVudEJ5SWQoJ3N1Ym1pdHBvc3QnKTsKICAgICAgICBpZiAoIXN1Ym1p
dG1vcmUgfHwgIXN1Ym1pdCkgcmV0dXJuIGZhbHNlOwoKICAgICAgICBzdWJtaXQu
ZGlzYWJsZWQgPSB0cnVlOwogICAgICAgIHN1Ym1pdG1vcmUuZGlzYWJsZWQgPSB0
cnVlOwoKICAgICAgICAvLyBOZXcgdG9wLWxldmVsIGNvbW1lbnRzCiAgICAgICAg
dmFyIGR0aWQgPSB4R2V0RWxlbWVudEJ5SWQoJ2R0aWQnKTsKICAgICAgICBpZiAo
IU51bWJlcihkdGlkLnZhbHVlKSkgewogICAgICAgICAgICBkdGlkLnZhbHVlID0r
IDA7CiAgICAgICAgfQoKICAgICAgICB2YXIgcXJfZm9ybSA9IHhHZXRFbGVtZW50
QnlJZCgncXJmb3JtJyk7CiAgICAgICAgcXJfZm9ybS5hY3Rpb24gPSBTaXRlLnNp
dGVyb290ICsgJy90YWxrcG9zdF9kby5ibWwnOwogICAgICAgIHFyX2Zvcm0uc3Vi
bWl0KCk7CgogICAgICAgIC8vIGRvbid0IGRvIGRlZmF1bHQgZm9ybSBhY3Rpb24K
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgIH0KCiAgIGZ1bmN0aW9uIHN3YXBub2Rl
cyAob3JpZywgdG9fc3dhcCkgewogICAgICAgIHZhciBvcmlnX3BuID0geFBhcmVu
dChvcmlnLCB0cnVlKTsKICAgICAgICB2YXIgbmV4dF9zaWJsaW5nID0gb3JpZy5u
ZXh0U2libGluZzsKICAgICAgICB2YXIgdG9fc3dhcF9wbiA9IHhQYXJlbnQodG9f
c3dhcCwgdHJ1ZSk7CiAgICAgICAgaWYgKCEgdG9fc3dhcF9wbikgewogICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICB0b19zd2FwX3Bu
LnJlcGxhY2VDaGlsZChvcmlnLCB0b19zd2FwKTsKICAgICAgICBvcmlnX3BuLmlu
c2VydEJlZm9yZSh0b19zd2FwLCBuZXh0X3NpYmxpbmcpOwogICAgICAgIHJldHVy
biB0cnVlOwogICB9CgogICBmdW5jdGlvbiBjaGVja0xlbmd0aCgpIHsKICAgICAg
ICB2YXIgcXJfZm9ybSA9IHhHZXRFbGVtZW50QnlJZCgncXJmb3JtJyk7CiAgICAg
ICAgaWYgKCFxcl9mb3JtKSByZXR1cm4gdHJ1ZTsKICAgICAgICB2YXIgdGV4dGJv
eCA9IHFyX2Zvcm0uYm9keTsKICAgICAgICBpZiAodGV4dGJveC52YWx1ZS5sZW5n
dGggPiA0MzAwKSB7CiAgICAgICAgICAgICBhbGVydCgnU29ycnksIGJ1dCB5b3Vy
IGNvbW1lbnQgb2YgJyArIHRleHRib3gudmFsdWUubGVuZ3RoICsgJyBjaGFyYWN0
ZXJzIGV4Y2VlZHMgdGhlIG1heGltdW0gY2hhcmFjdGVyIGxlbmd0aCBvZiA0MzAw
LiAgUGxlYXNlIHRyeSBzaG9ydGVuaW5nIGl0IGFuZCB0aGVuIHBvc3QgYWdhaW4u
Jyk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgICAg
IHJldHVybiB0cnVlOwogICB9CgogICAgLy8gTWFpbnRhaW4gZW50cnkgdGhyb3Vn
aCBicm93c2VyIG5hdmlnYXRpb25zLgogICAgZnVuY3Rpb24gc2F2ZV9lbnRyeSgp
IHsKICAgICAgICB2YXIgcXJfZm9ybSA9IHhHZXRFbGVtZW50QnlJZCgncXJmb3Jt
Jyk7CiAgICAgICAgaWYgKCFxcl9mb3JtKSByZXR1cm4gZmFsc2U7CiAgICAgICAg
dmFyIHFyX2JvZHkgPSBxcl9mb3JtLmJvZHk7CiAgICAgICAgdmFyIHFyX3N1Ympl
Y3QgPSB4R2V0RWxlbWVudEJ5SWQoJ3N1YmplY3QnKTsKICAgICAgICB2YXIgZG9f
c3BlbGxjaGVjayA9IHhHZXRFbGVtZW50QnlJZCgnZG9fc3BlbGxjaGVjaycpOwog
ICAgICAgIHZhciBxcl9kdGlkID0geEdldEVsZW1lbnRCeUlkKCdkdGlkJyk7CiAg
ICAgICAgdmFyIHFyX3B0aWQgPSB4R2V0RWxlbWVudEJ5SWQoJ3BhcmVudHRhbGtp
ZCcpOwogICAgICAgIHZhciBxcl91cGljID0geEdldEVsZW1lbnRCeUlkKCdwcm9w
X3BpY3R1cmVfa2V5d29yZCcpOwoKICAgICAgICB2YXIgcXJfc2F2ZWRfYm9keSA9
IHhHZXRFbGVtZW50QnlJZCgnc2F2ZWRfYm9keScpOwogICAgICAgIHZhciBxcl9z
YXZlZF9zdWJqZWN0ID0geEdldEVsZW1lbnRCeUlkKCdzYXZlZF9zdWJqZWN0Jyk7
CiAgICAgICAgdmFyIHNhdmVkX2RvX3NwZWxsY2hlY2sgPSB4R2V0RWxlbWVudEJ5
SWQoJ3NhdmVkX3NwZWxsJyk7CiAgICAgICAgdmFyIHFyX3NhdmVkX2R0aWQgPSB4
R2V0RWxlbWVudEJ5SWQoJ3NhdmVkX2R0aWQnKTsKICAgICAgICB2YXIgcXJfc2F2
ZWRfcHRpZCA9IHhHZXRFbGVtZW50QnlJZCgnc2F2ZWRfcHRpZCcpOwogICAgICAg
IHZhciBxcl9zYXZlZF91cGljID0geEdldEVsZW1lbnRCeUlkKCdzYXZlZF91cGlj
Jyk7CgogICAgICAgIHFyX3NhdmVkX2JvZHkudmFsdWUgPSBxcl9ib2R5LnZhbHVl
OwogICAgICAgIHFyX3NhdmVkX3N1YmplY3QudmFsdWUgPSBxcl9zdWJqZWN0LnZh
bHVlOwogICAgICAgIGlmKGRvX3NwZWxsY2hlY2spIHsKICAgICAgICAgIHNhdmVk
X2RvX3NwZWxsY2hlY2sudmFsdWUgPSBkb19zcGVsbGNoZWNrLmNoZWNrZWQ7CiAg
ICAgICAgfQoKICAgICAgICBxcl9zYXZlZF9kdGlkLnZhbHVlID0gcXJfZHRpZC52
YWx1ZTsKICAgICAgICBxcl9zYXZlZF9wdGlkLnZhbHVlID0gcXJfcHRpZC52YWx1
ZTsKCiAgICAgICAgaWYgKHFyX3VwaWMpIHsgLy8gaWYgaXQgd2FzIGluIHRoZSBm
b3JtCiAgICAgICAgICAgIHFyX3NhdmVkX3VwaWMudmFsdWUgPSBxcl91cGljLnNl
bGVjdGVkSW5kZXg7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICB9CgogICAgLy8gUmVzdG9yZSBzYXZlZF9lbnRyeSB0ZXh0IGFjcm9zcyBwbGF0
Zm9ybXMuCiAgICBmdW5jdGlvbiByZXN0b3JlX2VudHJ5KCkgewogICAgICAgIHNl
dFRpbWVvdXQoCiAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKCiAgICAgICAgICAg
ICAgICB2YXIgc2F2ZWRfYm9keSA9IHhHZXRFbGVtZW50QnlJZCgnc2F2ZWRfYm9k
eScpOwogICAgICAgICAgICAgICAgaWYgKCFzYXZlZF9ib2R5IHx8IHNhdmVkX2Jv
ZHkudmFsdWUgPT0gIiIpIHJldHVybiBmYWxzZTsKCiAgICAgICAgICAgICAgICB2
YXIgZHRpZCA9IHhHZXRFbGVtZW50QnlJZCgnc2F2ZWRfZHRpZCcpOwogICAgICAg
ICAgICAgICAgaWYgKCEgZHRpZCkgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAg
ICAgdmFyIHB0aWQgPSB4R2V0RWxlbWVudEJ5SWQoJ3NhdmVkX3B0aWQnKTsKICAg
ICAgICAgICAgICAgIHB0aWQudmFsdWUgPSBwYXJzZUludCggcHRpZC52YWx1ZSAp
OwoKICAgICAgICAgICAgICAgIHF1aWNrcmVwbHkoZHRpZC52YWx1ZSwgcHRpZC52
YWx1ZSwgc2F2ZWRfYm9keS52YWx1ZSk7CgogICAgICAgICAgICAgICAgdmFyIHFy
X2Zvcm0gPSB4R2V0RWxlbWVudEJ5SWQoJ3FyZm9ybScpOwogICAgICAgICAgICAg
ICAgaWYgKCFxcl9mb3JtKSByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICB2
YXIgYm9keSA9IHFyX2Zvcm0uYm9keQogICAgICAgICAgICAgICAgYm9keS52YWx1
ZSA9IHNhdmVkX2JvZHkudmFsdWU7CgogICAgICAgICAgICAgICAgLy8gU29tZSBi
cm93c2VycyByZXF1aXJlIHdlIGV4cGxpY2l0bHkgc2V0IHRoaXMgYWZ0ZXIgdGhl
IGRpdiBoYXMgbW92ZWQKICAgICAgICAgICAgICAgIC8vIGFuZCBpcyBub3cgbm8g
bG9uZ2VyIGhpZGRlbgogICAgICAgICAgICAgICAgdmFyIHFyX3NhdmVkX3N1Ympl
Y3QgPSB4R2V0RWxlbWVudEJ5SWQoJ3NhdmVkX3N1YmplY3QnKTsKICAgICAgICAg
ICAgICAgIHZhciBxcl9zYXZlZF9zcGVsbCA9IHhHZXRFbGVtZW50QnlJZCgnc2F2
ZWRfc3BlbGwnKTsKICAgICAgICAgICAgICAgIHZhciBxcl9zYXZlZF9kdGlkID0g
eEdldEVsZW1lbnRCeUlkKCdzYXZlZF9kdGlkJyk7CiAgICAgICAgICAgICAgICB2
YXIgcXJfc2F2ZWRfcHRpZCA9IHhHZXRFbGVtZW50QnlJZCgnc2F2ZWRfcHRpZCcp
OwogICAgICAgICAgICAgICAgdmFyIHFyX3NhdmVkX3VwaWMgPSB4R2V0RWxlbWVu
dEJ5SWQoJ3NhdmVkX3VwaWMnKTsKCiAgICAgICAgICAgICAgICB2YXIgc3ViamVj
dCA9IHhHZXRFbGVtZW50QnlJZCgnc3ViamVjdCcpOwogICAgICAgICAgICAgICAg
aWYgKCEgc3ViamVjdCkgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgc3Vi
amVjdC52YWx1ZSA9IHFyX3NhdmVkX3N1YmplY3QudmFsdWUKCiAgICAgICAgICAg
ICAgICB2YXIgcHJvcF9waWN0dXJlX2tleXdvcmQgPSB4R2V0RWxlbWVudEJ5SWQo
J3Byb3BfcGljdHVyZV9rZXl3b3JkJyk7CiAgICAgICAgICAgICAgICBpZiAocHJv
cF9waWN0dXJlX2tleXdvcmQpIHsgLy8gaWYgaXQgd2FzIGluIHRoZSBmb3JtCiAg
ICAgICAgICAgICAgICAgICAgcHJvcF9waWN0dXJlX2tleXdvcmQuc2VsZWN0ZWRJ
bmRleCA9IHFyX3NhdmVkX3VwaWMudmFsdWU7CiAgICAgICAgICAgICAgICB9Cgog
ICAgICAgICAgICAgICAgdmFyIHNwZWxsX2NoZWNrID0geEdldEVsZW1lbnRCeUlk
KCdkb19zcGVsbGNoZWNrJyk7CiAgICAgICAgICAgICAgICBpZiAoISBzcGVsbF9j
aGVjaykgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgaWYgKHFyX3NhdmVk
X3NwZWxsLnZhbHVlID09ICd0cnVlJykgewogICAgICAgICAgICAgICAgICAgIHNw
ZWxsX2NoZWNrLmNoZWNrZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgICAgICAgICBzcGVsbF9jaGVjay5jaGVja2VkID0gZmFs
c2U7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICB9LCAxMDApOwogICAg
ICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICBmdW5jdGlvbiBzaG93UVJkaXYo
cXJfZGl2KSB7CiAgICAgICAgaWYgKCEgcXJfZGl2KSB7CiAgICAgICAgICAgIHFy
X2RpdiA9IHhHZXRFbGVtZW50QnlJZCgncXJkaXYnKTsKICAgICAgICAgICAgaWYg
KCEgcXJfZGl2KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgICAgIH0KICAgICAgICB9IGVsc2UgaWYgKHFyX2Rpdi5zdHlsZSAmJiB4RGVm
KHFyX2Rpdi5zdHlsZS5kaXNwbGF5KSkgewogICAgICAgICAgICBxcl9kaXYuc3R5
bGUuZGlzcGxheT0naW5saW5lJzsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
IH0KICAgIH0KCiAgICAvL2FmdGVyIHRoZSBmdW5jdGlvbnMgaGF2ZSBiZWVuIGRl
ZmluZWQsIHJlZ2lzdGVyIHRoZW0KICAgIExpdmVKb3VybmFsLnJlZ2lzdGVyX2hv
b2soJ3BhZ2VfbG9hZCcsIHJlc3RvcmVfZW50cnkpOwogICAgcmVnRXZlbnQod2lu
ZG93LCAndW5sb2FkJywgc2F2ZV9lbnRyeSk7Ci8vIGNhbGxlZCBieSBTMjoKZnVu
Y3Rpb24gc2V0U3R5bGUgKGRpZCwgYXR0ciwgdmFsKSB7CiAgICBpZiAoISBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCkgcmV0dXJuOwogICAgdmFyIGRlID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoZGlkKTsKICAgIGlmICghIGRlKSByZXR1cm47CiAg
ICBpZiAoZGUuc3R5bGUpCiAgICAgICAgZGUuc3R5bGVbYXR0cl0gPSB2YWwKfQoK
Ly8gY2FsbGVkIGJ5IFMyOgpmdW5jdGlvbiBzZXRJbm5lciAoZGlkLCB2YWwpIHsK
ICAgIGlmICghIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKSByZXR1cm47CiAgICB2
YXIgZGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChkaWQpOwogICAgaWYgKCEg
ZGUpIHJldHVybjsKICAgIGRlLmlubmVySFRNTCA9IHZhbDsKfQoKLy8gY2FsbGVk
IGJ5IFMyOgpmdW5jdGlvbiBoaWRlRWxlbWVudCAoZGlkKSB7CiAgICBpZiAoISBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCkgcmV0dXJuOwogICAgdmFyIGRlID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoZGlkKTsKICAgIGlmICghIGRlKSByZXR1cm47
CiAgICBkZS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwp9CgovLyBjYWxsZWQgYnkg
UzI6CmZ1bmN0aW9uIHNldEF0dHIgKGRpZCwgYXR0ciwgY2xhc3NuYW1lKSB7CiAg
ICBpZiAoISBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCkgcmV0dXJuOwogICAgdmFy
IGRlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZGlkKTsKICAgIGlmICghIGRl
KSByZXR1cm47CiAgICBkZS5zZXRBdHRyaWJ1dGUoYXR0ciwgY2xhc3NuYW1lKTsK
fQoKLy8gY2FsbGVkIGZyb20gUGFnZToKZnVuY3Rpb24gbXVsdGlmb3JtU3VibWl0
IChmb3JtLCB0eHQpIHsKICAgIHZhciBzZWxfdmFsID0gZm9ybS5tb2RlLnZhbHVl
OwogICAgaWYgKCFzZWxfdmFsKSB7CiAgICAgICAgYWxlcnQodHh0Lm5vX2FjdGlv
bik7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIGlmIChzZWxfdmFs
LnN1YnN0cmluZygwLCA0KSA9PSAnYWxsOicpIHsgLy8gbWFzcyBhY3Rpb24KICAg
ICAgICByZXR1cm47CiAgICB9CgogICAgdmFyIGkgPSAtMSwgaGFzX3NlbGVjdGVk
ID0gZmFsc2U7IC8vIGF0IGxlYXN0IG9uZSBjaGVja2JveAogICAgd2hpbGUgKGZv
cm1bKytpXSkgewogICAgICAgIGlmIChmb3JtW2ldLm5hbWUuc3Vic3RyaW5nKDAs
IDkpID09ICdzZWxlY3RlZF8nICYmIGZvcm1baV0uY2hlY2tlZCkgewogICAgICAg
ICAgICBoYXNfc2VsZWN0ZWQgPSB0cnVlOwogICAgICAgICAgICBicmVhazsKICAg
ICAgICB9CiAgICB9CiAgICBpZiAoIWhhc19zZWxlY3RlZCkgewogICAgICAgIGFs
ZXJ0KHR4dC5ub19jb21tZW50cyk7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
fQoKICAgIGlmIChzZWxfdmFsID09ICdkZWxldGUnIHx8IHNlbF92YWwgPT0gJ2Rl
bGV0ZXNwYW0nKSB7CiAgICAgICAgcmV0dXJuIGNvbmZpcm0odHh0LmNvbmZfZGVs
ZXRlKTsKICAgIH0KfQoKCmZ1bmN0aW9uIGdldFhUUiAoKSB7CiAgICB2YXIgeHRy
OwogICAgdmFyIGV4OwoKICAgIGlmICh0eXBlb2YoWE1MSHR0cFJlcXVlc3QpICE9
ICJ1bmRlZmluZWQiKSB7CiAgICAgICAgeHRyID0gbmV3IFhNTEh0dHBSZXF1ZXN0
KCk7CiAgICB9IGVsc2UgewogICAgICAgIHRyeSB7CiAgICAgICAgICAgIHh0ciA9
IG5ldyBBY3RpdmVYT2JqZWN0KCJNc3htbDIuWE1MSFRUUC40LjAiKTsKICAgICAg
ICB9IGNhdGNoIChleCkgewogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAg
ICAgeHRyID0gbmV3IEFjdGl2ZVhPYmplY3QoIk1zeG1sMi5YTUxIVFRQIik7CiAg
ICAgICAgICAgIH0gY2F0Y2ggKGV4KSB7CiAgICAgICAgICAgIH0KICAgICAgICB9
CiAgICB9CgogICAgLy8gbGV0IG1lIGV4cGxhaW4gdGhpcy4gIE9wZXJhIDggZG9l
cyBYTUxIdHRwUmVxdWVzdCwgYnV0IG5vdCBzZXRSZXF1ZXN0SGVhZGVyLgogICAg
Ly8gbm8gcHJvYmxlbSwgd2UgdGhvdWdodDogIHdlJ2xsIHRlc3QgZm9yIHNldFJl
cXVlc3RIZWFkZXIgYW5kIGlmIGl0J3Mgbm90IHByZXNlbnQKICAgIC8vIHRoZW4g
ZmFsbCBiYWNrIHRvIHRoZSBvbGQgYmVoYXZpb3IgKHRyZWF0IGl0IGFzIG5vdCB3
b3JraW5nKS4gIEJVVCAtLS0gSUU2IHdvbid0CiAgICAvLyBsZXQgeW91IGV2ZW4g
dGVzdCBmb3Igc2V0UmVxdWVzdEhlYWRlciB3aXRob3V0IHRocm93aW5nIGFuIGV4
Y2VwdGlvbiAoeW91IG5lZWQKICAgIC8vIHRvIGNhbGwgLm9wZW4gb24gdGhlIC54
dHIgZmlyc3Qgb3Igc29tZXRoaW5nKQogICAgdHJ5IHsKICAgICAgICBpZiAoeHRy
ICYmICEgeHRyLnNldFJlcXVlc3RIZWFkZXIpCiAgICAgICAgICAgIHh0ciA9IG51
bGw7CiAgICB9IGNhdGNoIChleCkgeyB9CgogICAgcmV0dXJuIHh0cjsKfQoKZnVu
Y3Rpb24gcG9zaXRpb25lZE9mZnNldChlbGVtZW50KSB7CiAgdmFyIHZhbHVlVCA9
IDAsIHZhbHVlTCA9IDA7CiAgZG8gewogICAgdmFsdWVUICs9IGVsZW1lbnQub2Zm
c2V0VG9wICB8fCAwOwogICAgdmFsdWVMICs9IGVsZW1lbnQub2Zmc2V0TGVmdCB8
fCAwOwogICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OwogICAgaWYg
KGVsZW1lbnQpIHsKICAgICAgaWYgKGVsZW1lbnQudGFnTmFtZS50b1VwcGVyQ2Fz
ZSgpID09ICdCT0RZJykgYnJlYWs7CiAgICAgIHZhciBwID0gRE9NLmdldFN0eWxl
KGVsZW1lbnQsICdwb3NpdGlvbicpOwogICAgICBpZiAocCAhPT0gJ3N0YXRpYycp
IGJyZWFrOwogICAgfQogIH0gd2hpbGUgKGVsZW1lbnQpOwogIHJldHVybiB7eDog
dmFsdWVMLCB5OnZhbHVlVH07Cn0KCi8vIHB1c2ggbmV3IGVsZW1lbnQgJ25lJyBh
ZnRlciBzaWJsaW5nICdvZScgb2xkIGVsZW1lbnQKZnVuY3Rpb24gYWRkQWZ0ZXIg
KG9lLCBuZSkgewogICAgaWYgKG9lLm5leHRTaWJsaW5nKSB7CiAgICAgICAgb2Uu
cGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUobmUsIG9lLm5leHRTaWJsaW5nKTsKICAg
IH0gZWxzZSB7CiAgICAgICAgb2UucGFyZW50Tm9kZS5hcHBlbmRDaGlsZChuZSk7
CiAgICB9Cn0KCi8vIGhzdiB0byByZ2IKLy8gaCwgcywgdiA9IFswLCAxKSwgWzAs
IDFdLCBbMCwgMV0KLy8gciwgZywgYiA9IFswLCAyNTVdLCBbMCwgMjU1XSwgWzAs
IDI1NV0KZnVuY3Rpb24gaHN2X3RvX3JnYiAoaCwgcywgdikKewogICAgaWYgKHMg
PT0gMCkgewoJdiAqPSAyNTU7CglyZXR1cm4gW3Ysdix2XTsKICAgIH0KCiAgICBo
ICo9IDY7CiAgICB2YXIgaSA9IE1hdGguZmxvb3IoaCk7CiAgICB2YXIgZiA9IGgg
LSBpOwogICAgdmFyIHAgPSB2ICogKDEgLSBzKTsKICAgIHZhciBxID0gdiAqICgx
IC0gcyAqIGYpOwogICAgdmFyIHQgPSB2ICogKDEgLSBzICogKDEgLSBmKSk7Cgog
ICAgdiA9IE1hdGguZmxvb3IodiAqIDI1NSArIDAuNSk7CiAgICB0ID0gTWF0aC5m
bG9vcih0ICogMjU1ICsgMC41KTsKICAgIHAgPSBNYXRoLmZsb29yKHAgKiAyNTUg
KyAwLjUpOwogICAgcSA9IE1hdGguZmxvb3IocSAqIDI1NSArIDAuNSk7CgogICAg
aWYgKGkgPT0gMCkgcmV0dXJuIFt2LHQscF07CiAgICBpZiAoaSA9PSAxKSByZXR1
cm4gW3EsdixwXTsKICAgIGlmIChpID09IDIpIHJldHVybiBbcCx2LHRdOwogICAg
aWYgKGkgPT0gMykgcmV0dXJuIFtwLHEsdl07CiAgICBpZiAoaSA9PSA0KSByZXR1
cm4gW3QscCx2XTsKICAgIHJldHVybiBbdixwLHFdOwp9CgoKZnVuY3Rpb24gc2Ny
b2xsVG9wICgpIHsKICAgIGlmICh3aW5kb3cuaW5uZXJIZWlnaHQpCiAgICAgICAg
cmV0dXJuIHdpbmRvdy5wYWdlWU9mZnNldDsKICAgIGlmIChkb2N1bWVudC5kb2N1
bWVudEVsZW1lbnQgJiYgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRv
cCkKICAgICAgICByZXR1cm4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9s
bFRvcDsKICAgIGlmIChkb2N1bWVudC5ib2R5KQogICAgICAgIHJldHVybiBkb2N1
bWVudC5ib2R5LnNjcm9sbFRvcDsKfQoKZnVuY3Rpb24gc2Nyb2xsTGVmdCAoKSB7
CiAgICBpZiAod2luZG93LmlubmVyV2lkdGgpCiAgICAgICAgcmV0dXJuIHdpbmRv
dy5wYWdlWE9mZnNldDsKICAgIGlmIChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQg
JiYgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbExlZnQpCiAgICAgICAg
cmV0dXJuIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxMZWZ0OwogICAg
aWYgKGRvY3VtZW50LmJvZHkpCiAgICAgICAgcmV0dXJuIGRvY3VtZW50LmJvZHku
c2Nyb2xsTGVmdDsKfQoKZnVuY3Rpb24gZ2V0RWxlbWVudFBvcyAob2JqKQp7CiAg
ICB2YXIgcG9zID0gbmV3IE9iamVjdCgpOwogICAgaWYgKCFvYmopCiAgICAgICAg
cmV0dXJuIG51bGw7CgogICAgdmFyIGl0OwoKICAgIGl0ID0gb2JqOwogICAgcG9z
LnggPSAwOwogICAgaWYgKGl0Lm9mZnNldFBhcmVudCkgewoJd2hpbGUgKGl0Lm9m
ZnNldFBhcmVudCkgewoJICAgIHBvcy54ICs9IGl0Lm9mZnNldExlZnQ7CgkgICAg
aXQgPSBpdC5vZmZzZXRQYXJlbnQ7Cgl9CiAgICB9CiAgICBlbHNlIGlmIChpdC54
KQoJcG9zLnggKz0gaXQueDsKCiAgICBpdCA9IG9iajsKICAgIHBvcy55ID0gMDsK
ICAgIGlmIChpdC5vZmZzZXRQYXJlbnQpIHsKCXdoaWxlIChpdC5vZmZzZXRQYXJl
bnQpIHsKCSAgICBwb3MueSArPSBpdC5vZmZzZXRUb3A7CgkgICAgaXQgPSBpdC5v
ZmZzZXRQYXJlbnQ7Cgl9CiAgICB9CiAgICBlbHNlIGlmIChpdC55KQoJcG9zLnkg
Kz0gaXQueTsKCiAgICByZXR1cm4gcG9zOwp9CgovLyByZXR1cm5zIHRoZSBtb3Vz
ZSBwb3NpdGlvbiBvZiB0aGUgZXZlbnQsIG9yIGZhaWxpbmcgdGhhdCwgdGhlIHRv
cC1sZWZ0Ci8vIG9mIHRoZSBldmVudCdzIHRhcmdldCBlbGVtZW50LiAgKG9yIHRo
ZSBmYWxsQmFjayBlbGVtZW50LCB3aGljaCB0YWtlcwovLyBwcmVjZW5kZW5jZSBv
dmVyIHRoZSBldmVudCdzIHRhcmdldCBlbGVtZW50IGlmIHNwZWNpZmllZCkKZnVu
Y3Rpb24gZ2V0RXZlbnRQb3MgKGUsIGZhbGxCYWNrKQp7CiAgICB2YXIgcG9zID0g
eyB4OjAsIHk6MCB9OwoKICAgIGlmICghZSkgdmFyIGUgPSB3aW5kb3cuZXZlbnQ7
CiAgICBpZiAoZS5wYWdlWCAmJiBlLnBhZ2VZKSB7CiAgICAgICAgLy8gdXNlZnVs
IGNhc2UgKHJlbGF0aXZlIHRvIGRvY3VtZW50KQogICAgICAgIHBvcy54ID0gZS5w
YWdlWDsKICAgICAgICBwb3MueSA9IGUucGFnZVk7CiAgICB9CiAgICBlbHNlIGlm
IChlLmNsaWVudFggJiYgZS5jbGllbnRZKSB7CiAgICAgICAgLy8gSUUgY2FzZSAo
cmVsYXRpdmUgdG8gdmlld3BvcnQsIHNvIG5lZWQgc2Nyb2xsIGluZm8pCiAgICAg
ICAgcG9zLnggPSBlLmNsaWVudFggKyBzY3JvbGxMZWZ0KCk7CiAgICAgICAgcG9z
LnkgPSBlLmNsaWVudFkgKyBzY3JvbGxUb3AoKTsKICAgIH0gZWxzZSB7CiAgICAg
ICAgdmFyIHRhcmcgPSBmYWxsQmFjayB8fCBnZXRUYXJnZXQoZSk7CiAgICAgICAg
dmFyIHBvcyA9IGdldEVsZW1lbnRQb3ModGFyZyk7CiAgICB9CiAgICByZXR1cm4g
cG9zOwp9Cgp2YXIgY3VyUG9wdXAgPSBudWxsOwp2YXIgY3VyUG9wdXBfaWQgPSAw
OwoKZnVuY3Rpb24ga2lsbFBvcHVwICgpIHsKICAgIGlmICghY3VyUG9wdXApCiAg
ICAgICAgcmV0dXJuIHRydWU7CgogICAgdmFyIHBvcHVwID0gY3VyUG9wdXA7CiAg
ICBjdXJQb3B1cCA9IG51bGw7CgogICAgdmFyIG9wcCA9IDEuMDsKCiAgICB2YXIg
ZmFkZSA9IGZ1bmN0aW9uICgpIHsKICAgICAgICBvcHAgLT0gMC4xNTsKCiAgICAg
ICAgaWYgKG9wcCA8PSAwLjEpIHsKICAgICAgICAgICAgcG9wdXAucGFyZW50Tm9k
ZS5yZW1vdmVDaGlsZChwb3B1cCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgcG9wdXAuc3R5bGUuZmlsdGVyID0gImFscGhhKG9wYWNpdHk9IiArIE1hdGgu
Zmxvb3Iob3BwICogMTAwKSArICIpIjsKICAgICAgICAgICAgcG9wdXAuc3R5bGUu
b3BhY2l0eSA9IG9wcDsKICAgICAgICAgICAgd2luZG93LnNldFRpbWVvdXQoZmFk
ZSwgMjApOwogICAgICAgIH0KICAgIH07CiAgICBmYWRlKCk7CgogICAgcmV0dXJu
IHRydWU7Cn0KCnZhciBwZW5kaW5nUmVxcyA9IG5ldyBPYmplY3QgKCk7CgpmdW5j
dGlvbiBkZWxldGVDb21tZW50IChkaXRlbWlkKSB7CgogICAgdmFyIGhhc29wdCA9
IGZ1bmN0aW9uIChvcHQpIHsKICAgICAgICB2YXIgZWwgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgibGpwb3BkZWwiICsgZGl0ZW1pZCArIG9wdCk7CiAgICAgICAg
aWYgKCFlbCkgcmV0dXJuIGZhbHNlOwogICAgICAgIGlmIChlbC5jaGVja2VkKSBy
ZXR1cm4gdHJ1ZTsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9OwogICAgdmFy
IG9wdF9kZWx0aHJlYWQgPSBoYXNvcHQoInRocmVhZCIpOwogICAgdmFyIG9wdF9i
YW4gPSBoYXNvcHQoImJhbiIpOwogICAgdmFyIG9wdF9zcGFtID0gaGFzb3B0KCJz
cGFtIik7CgogICAga2lsbFBvcHVwKCk7CgogICAgdmFyIHRvZGVsID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImxqY210IiArIGRpdGVtaWQpOwoKICAgIHZhciBj
b2wgPSAwOwogICAgdmFyIHB1bHNlID0gMDsKICAgIHZhciBpc19kZWxldGVkID0g
MDsKICAgIHZhciBpc19lcnJvciA9IDA7CgogICAgdmFyIHh0ciA9IGdldFhUUigp
OwogICAgaWYgKCEgeHRyKSB7CiAgICAgICAgYWxlcnQoIkpTX0FTU0VSVDogbm8g
eHRyIG5vdywgYnV0IGVhcmxpZXI/Iik7CiAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgfQogICAgcGVuZGluZ1JlcXNbZGl0ZW1pZF0gPSB4dHI7CgogICAgdmFyIHN0
YXRlX2NhbGxiYWNrID0gZnVuY3Rpb24gKCkgewogICAgICAgIGlmICh4dHIucmVh
ZHlTdGF0ZSAhPSA0KQogICAgICAgICAgICAgcmV0dXJuOwoKICAgICAgICBpZiAo
eHRyLnN0YXR1cyA9PSAyMDApIHsKICAgICAgICAgICAgdmFyIHZhbCA9IGV2YWwo
eHRyLnJlc3BvbnNlVGV4dCk7CiAgICAgICAgICAgIGlzX2RlbGV0ZWQgPSB2YWw7
CiAgICAgICAgICAgIGlmICghIGlzX2RlbGV0ZWQpIGlzX2Vycm9yID0gMTsKICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICBhbGVydCgiRXJyb3IgY29udGFjdGlu
ZyBzZXJ2ZXIgdG8gZGVsZXRlIGNvbW1lbnQuIik7CiAgICAgICAgICAgIGlzX2Vy
cm9yID0gMTsKICAgICAgICB9CiAgICB9OwoKICAgIHZhciBlcnJvcl9jYWxsYmFj
ayA9IGZ1bmN0aW9uICgpIHsKICAgICAgICBhbGVydCgiRXJyb3IgZGVsZXRpbmcg
IiArIGRpdGVtaWQpOwogICAgICAgIGlzX2Vycm9yID0gMTsKICAgIH07CgogICAg
eHRyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IHN0YXRlX2NhbGxiYWNrOwogICAgeHRy
Lm9wZW4oIlBPU1QiLCAiLyIgKyBMSl9jbXRpbmZvLmpvdXJuYWwgKyAiL19fcnBj
X2RlbGNvbW1lbnQ/bW9kZT1qcyZqb3VybmFsPSIgKyBMSl9jbXRpbmZvLmpvdXJu
YWwgKyAiJmlkPSIgKyBkaXRlbWlkLCB0cnVlKTsKICAgIHZhciBwb3N0ZGF0YSA9
ICJjb25maXJtPTEiOwogICAgaWYgKG9wdF9iYW4pIHBvc3RkYXRhICs9ICImYmFu
PTEiOwogICAgaWYgKG9wdF9zcGFtKSBwb3N0ZGF0YSArPSAiJnNwYW09MSI7CiAg
ICBpZiAob3B0X2RlbHRocmVhZCkgcG9zdGRhdGEgKz0gIiZkZWx0aHJlYWQ9MSI7
CiAgICBpZiAoTEpfY210aW5mby5mb3JtX2F1dGgpIHBvc3RkYXRhICs9ICImbGpf
Zm9ybV9hdXRoPSIgKyBMSl9jbXRpbmZvLmZvcm1fYXV0aDsKCiAgICB4dHIuc2V0
UmVxdWVzdEhlYWRlcigiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL3gtd3d3
LWZvcm0tdXJsZW5jb2RlZCIpOwogICAgeHRyLnNlbmQocG9zdGRhdGEpOwoKICAg
IHZhciBmbGFzaCA9IGZ1bmN0aW9uICgpIHsKICAgICAgICB2YXIgcmdiID0gaHN2
X3RvX3JnYigwLCBNYXRoLmNvcygocHVsc2UgKyAxKSAvIDIpLCAxKTsKICAgICAg
ICBwdWxzZSArPSAzLjE0MTU5IC8gNTsKICAgICAgICB2YXIgY29sb3IgPSAicmdi
KCIgKyByZ2JbMF0gKyAiLCIgKyByZ2JbMV0gKyAiLCIgKyByZ2JbMl0gKyAiKSI7
CgogICAgICAgIHRvZGVsLnN0eWxlLmJvcmRlciA9ICIycHggc29saWQgIiArIGNv
bG9yOwogICAgICAgIGlmIChpc19lcnJvcikgewogICAgICAgICAgICB0b2RlbC5z
dHlsZS5ib3JkZXIgPSAiIjsKICAgICAgICAgICAgLy8gYW5kIGxldCB0aW1lciBl
eHBpcmUKICAgICAgICB9IGVsc2UgaWYgKGlzX2RlbGV0ZWQpIHsKICAgICAgICAg
ICAgcmVtb3ZlQ29tbWVudChkaXRlbWlkLCBvcHRfZGVsdGhyZWFkKTsKICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICB3aW5kb3cuc2V0VGltZW91dChmbGFzaCwg
NTApOwogICAgICAgIH0KICAgIH07CgogICAgd2luZG93LnNldFRpbWVvdXQoZmxh
c2gsIDUpOwp9CgpmdW5jdGlvbiByZW1vdmVDb21tZW50IChkaXRlbWlkLCBraWxs
Q2hpbGRyZW4pIHsKICAgIHZhciB0b2RlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJsamNtdCIgKyBkaXRlbWlkKTsKICAgIGlmICh0b2RlbCkgewogICAgICAg
IHRvZGVsLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CgogICAgICAgIHZhciB1c2Vy
aG9vayA9IHdpbmRvd1sidXNlcmhvb2tfZGVsZXRlX2NvbW1lbnRfQVJHIl07CiAg
ICAgICAgaWYgKHVzZXJob29rKQogICAgICAgICAgICB1c2VyaG9vayhkaXRlbWlk
KTsKICAgIH0KICAgIGlmIChraWxsQ2hpbGRyZW4pIHsKICAgICAgICB2YXIgY29t
ID0gTEpfY210aW5mbyA/IExKX2NtdGluZm9bZGl0ZW1pZF0gOiBudWxsOwogICAg
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY29tLnJjLmxlbmd0aDsgaSsrKSB7CiAg
ICAgICAgICAgIHJlbW92ZUNvbW1lbnQoY29tLnJjW2ldLCB0cnVlKTsKICAgICAg
ICB9CiAgICB9Cn0KCmZ1bmN0aW9uIGRvY0NsaWNrZWQgKCkgewogICAga2lsbFBv
cHVwKCk7CgogIC8vIHdlIGRpZG4ndCBoYW5kbGUgYW55dGhpbmcsIHdobyBhcmUg
d2Uga2lkZGluZwp9CgpmdW5jdGlvbiBjcmVhdGVEZWxldGVGdW5jdGlvbiAoYWUs
IGRJdGVtaWQpIHsKICAgIHJldHVybiBmdW5jdGlvbiAoZSkgewogICAgICAgIGlm
ICghZSkgZSA9IHdpbmRvdy5ldmVudDsKICAgICAgICB2YXIgRlMgPSBhcmd1bWVu
dHMuY2FsbGVlOwoKICAgICAgICB2YXIgZmluYWxIZWlnaHQgPSAxMDA7CgogICAg
ICAgIGlmIChlLnNoaWZ0S2V5IHx8IChjdXJQb3B1cCAmJiBjdXJQb3B1cF9pZCAh
PSBkSXRlbWlkKSkgewogICAgICAgICAgICBraWxsUG9wdXAoKTsKICAgICAgICB9
CgogICAgICAgIHZhciBkb0lUID0gMDsKICAgICAgICAvLyBpbW1lZGlhdGVseSBk
ZWxldGUgb24gc2hpZnQga2V5CiAgICAgICAgaWYgKGUuc2hpZnRLZXkpIHsKICAg
ICAgICAgICAgZG9JVCA9IDE7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
aWYgKCEgTEpfY210aW5mbykKICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwoK
ICAgICAgICAgICAgdmFyIGNvbSA9IExKX2NtdGluZm9bZEl0ZW1pZF07CiAgICAg
ICAgICAgIHZhciByZW1vdGVVc2VyID0gTEpfY210aW5mb1sicmVtb3RlIl07CiAg
ICAgICAgICAgIGlmICghY29tIHx8ICFyZW1vdGVVc2VyKQogICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgIHZhciBjYW5BZG1pbiA9IExKX2Nt
dGluZm9bImNhbkFkbWluIl07CgogICAgICAgICAgICB2YXIgY2xpY2tUYXJnZXQg
PSBnZXRUYXJnZXQoZSk7CgogICAgICAgICAgICB2YXIgcG9zID0gZ2V0RXZlbnRQ
b3MoZSk7CiAgICAgICAgICAgIHZhciBwb3Nfb2Zmc2V0ID0gcG9zaXRpb25lZE9m
ZnNldChhZSkKICAgICAgICAgICAgdmFyIGRpZmZfeCA9IERPTS5maW5kUG9zWChh
ZSkgLSBwb3Nfb2Zmc2V0LngKICAgICAgICAgICAgdmFyIGRpZmZfeSA9IERPTS5m
aW5kUG9zWShhZSkgLSBwb3Nfb2Zmc2V0LnkKCiAgICAgICAgICAgIHZhciBseCA9
IHBvcy54IC0gZGlmZl94ICsgNSAtIDI1MDsKICAgICAgICAgICAgaWYgKGx4IDwg
NSkgbHggPSA1OwogICAgICAgICAgICB2YXIgZGU7CgogICAgICAgICAgICBpZiAo
Y3VyUG9wdXAgJiYgY3VyUG9wdXBfaWQgPT0gZEl0ZW1pZCkgewogICAgICAgICAg
ICAgICAgZGUgPSBjdXJQb3B1cDsKICAgICAgICAgICAgICAgIGRlLnN0eWxlLmxl
ZnQgPSBseCArICJweCI7CiAgICAgICAgICAgICAgICBkZS5zdHlsZS50b3AgPSAo
cG9zLnkgLSBkaWZmX3kgKyA1KSArICJweCI7CiAgICAgICAgICAgICAgICByZXR1
cm4gRXZlbnQuc3RvcChlKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICAgICAgICAgZGUu
c3R5bGUudGV4dEFsaWduID0gImxlZnQiOwogICAgICAgICAgICBkZS5jbGFzc05h
bWUgPSAnbGpjbXRtYW5hZ2UnOwogICAgICAgICAgICBkZS5zdHlsZS5oZWlnaHQg
PSAiMTBweCI7CiAgICAgICAgICAgIGRlLnN0eWxlLm92ZXJmbG93ID0gImhpZGRl
biI7CiAgICAgICAgICAgIGRlLnN0eWxlLnBvc2l0aW9uID0gImFic29sdXRlIjsK
ICAgICAgICAgICAgZGUuc3R5bGUubGVmdCA9IGx4ICsgInB4IjsKICAgICAgICAg
ICAgZGUuc3R5bGUudG9wID0gKHBvcy55IC0gZGlmZl95ICsgNSkgKyAicHgiOwog
ICAgICAgICAgICBkZS5zdHlsZS53aWR0aCA9ICIyNTBweCI7CiAgICAgICAgICAg
IGRlLnN0eWxlLnpJbmRleCA9IDM7CiAgICAgICAgICAgIERPTS5hZGRFdmVudExp
c3RlbmVyKGRlLCAnY2xpY2snLCBmdW5jdGlvbiAoZSkgewogICAgICAgICAgICAg
ICAgRXZlbnQuc3RvcFByb3BhZ2F0aW9uKGUpOwogICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgdmFyIGluSFRN
TCA9ICI8Zm9ybSBzdHlsZT0nZGlzcGxheTogaW5saW5lJyBpZD0nbGpkZWxvcHRz
IiArIGRJdGVtaWQgKyAiJz48c3BhbiBzdHlsZT0nZm9udC1mYWNlOiBBcmlhbDsg
Zm9udC1zaXplOiA4cHQnPjxiPkRlbGV0ZSBjb21tZW50PzwvYj48YnIgLz4iOwog
ICAgICAgICAgICB2YXIgbGJsOwogICAgICAgICAgICBpZiAocmVtb3RlVXNlciAh
PSAiIiAmJiBjb20udSAhPSAiIiAmJiBjb20udSAhPSByZW1vdGVVc2VyICYmIGNh
bkFkbWluKSB7CiAgICAgICAgICAgICAgICBsYmwgPSAibGpwb3BkZWwiICsgZEl0
ZW1pZCArICJiYW4iOwogICAgICAgICAgICAgICAgaW5IVE1MICs9ICI8aW5wdXQg
dHlwZT0nY2hlY2tib3gnIHZhbHVlPSdiYW4nIGlkPSciICsgbGJsICsgIic+IDxs
YWJlbCBmb3I9JyIgKyBsYmwgKyAiJz5CYW4gPGI+IiArIGNvbS51ICsgIjwvYj4g
ZnJvbSBjb21tZW50aW5nPC9sYWJlbD48YnIgLz4iOwogICAgICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgICAgZmluYWxIZWlnaHQgLT0gMTU7CiAgICAgICAg
ICAgIH0KCiAgICAgICAgICAgIGlmIChyZW1vdGVVc2VyICE9IGNvbS51ICYmIGNh
bkFkbWluKSB7CiAgICAgICAgICAgICAgICBsYmwgPSAibGpwb3BkZWwiICsgZEl0
ZW1pZCArICJzcGFtIjsKICAgICAgICAgICAgICAgIGluSFRNTCArPSAiPGlucHV0
IHR5cGU9J2NoZWNrYm94JyB2YWx1ZT0nc3BhbScgaWQ9JyIgKyBsYmwgKyAiJz4g
PGxhYmVsIGZvcj0nIiArIGxibCArICInPk1hcmsgdGhpcyBjb21tZW50IGFzIHNw
YW08L2xhYmVsPjxiciAvPiI7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICAgICBmaW5hbEhlaWdodCAtPSAxNTsKICAgICAgICAgICAgfQoKICAgICAg
ICAgICAgaWYgKGNvbS5yYyAmJiBjb20ucmMubGVuZ3RoICYmIGNhbkFkbWluKSB7
CiAgICAgICAgICAgICAgICBsYmwgPSAibGpwb3BkZWwiICsgZEl0ZW1pZCArICJ0
aHJlYWQiOwogICAgICAgICAgICAgICAgaW5IVE1MICs9ICI8aW5wdXQgdHlwZT0n
Y2hlY2tib3gnIHZhbHVlPSd0aHJlYWQnIGlkPSciICsgbGJsICsgIic+IDxsYWJl
bCBmb3I9JyIgKyBsYmwgKyAiJz5EZWxldGUgdGhyZWFkIChhbGwgc3ViY29tbWVu
dHMpPC9sYWJlbD48YnIgLz4iOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgICAgZmluYWxIZWlnaHQgLT0gMTU7CiAgICAgICAgICAgIH0KICAgICAg
ICAgICAgaW5IVE1MICs9ICI8aW5wdXQgdHlwZT0nYnV0dG9uJyB2YWx1ZT0nRGVs
ZXRlJyBvbmNsaWNrPSdkZWxldGVDb21tZW50KCIgKyBkSXRlbWlkICsgIik7JyAv
PiA8aW5wdXQgdHlwZT0nYnV0dG9uJyB2YWx1ZT0nQ2FuY2VsJyBvbmNsaWNrPSdr
aWxsUG9wdXAoKScgLz48L3NwYW4+PGJyIC8+PHNwYW4gc3R5bGU9J2ZvbnQtZmFj
ZTogQXJpYWw7IGZvbnQtc2l6ZTogOHB0Jz48aT5zaGlmdC1jbGljayB0byBkZWxl
dGUgd2l0aG91dCBvcHRpb25zPC9pPjwvc3Bhbj48L2Zvcm0+IjsKICAgICAgICAg
ICAgZGUuaW5uZXJIVE1MID0gaW5IVE1MOwoKICAgICAgICAgICAgLy8gd2UgZG8g
dGhpcyBzbyBrZXlib2FyZCB0YWIgb3JkZXIgaXMgY29ycmVjdDoKICAgICAgICAg
ICAgYWRkQWZ0ZXIoYWUsIGRlKTsKCiAgICAgICAgICAgIGN1clBvcHVwID0gZGU7
CiAgICAgICAgICAgIGN1clBvcHVwX2lkID0gZEl0ZW1pZDsKCiAgICAgICAgICAg
IHZhciBoZWlnaHQgPSAxMDsKICAgICAgICAgICAgdmFyIGdyb3cgPSBmdW5jdGlv
biAoKSB7CiAgICAgICAgICAgICAgICBoZWlnaHQgKz0gNzsKICAgICAgICAgICAg
ICAgIGlmIChoZWlnaHQgPiBmaW5hbEhlaWdodCkgewogICAgICAgICAgICAgICAg
ICAgIGRlLnN0eWxlLmhlaWdodCA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAg
ZGUuc3R5bGUuZmlsdGVyID0gIiI7CiAgICAgICAgICAgICAgICAgICAgZGUuc3R5
bGUub3BhY2l0eSA9IDEuMDsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICAgICAgICAgZGUuc3R5bGUuaGVpZ2h0ID0gaGVpZ2h0ICsgInB4IjsK
ICAgICAgICAgICAgICAgICAgICB3aW5kb3cuc2V0VGltZW91dChncm93LCAyMCk7
CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH07CiAgICAgICAgICAgIGdy
b3coKTsKCiAgICAgICAgfQoKICAgICAgICBpZiAoZG9JVCkgewogICAgICAgICAg
ICBkZWxldGVDb21tZW50KGRJdGVtaWQpOwogICAgICAgIH0KCiAgICAgICAgRXZl
bnQuc3RvcChlKTsKICAgIH0KfQoKZnVuY3Rpb24gcG9vZkF0IChwb3MpIHsKICAg
IHZhciBkZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgZGUu
c3R5bGUucG9zaXRpb24gPSAiYWJzb2x1dGUiOwogICAgZGUuc3R5bGUuYmFja2dy
b3VuZCA9ICIjRkZGIjsKICAgIGRlLnN0eWxlLm92ZXJmbG93ID0gImhpZGRlbiI7
CiAgICB2YXIgb3BwID0gMS4wOwoKICAgIHZhciB0b3AgPSBwb3MueTsKICAgIHZh
ciBsZWZ0ID0gcG9zLng7CiAgICB2YXIgd2lkdGggPSA1OwogICAgdmFyIGhlaWdo
dCA9IDU7CiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRlKTsKCiAgICB2
YXIgZmFkZSA9IGZ1bmN0aW9uICgpIHsKICAgICAgICBvcHAgLT0gMC4xNTsKICAg
ICAgICB3aWR0aCArPSAxMDsKICAgICAgICBoZWlnaHQgKz0gMTA7CiAgICAgICAg
dG9wIC09IDU7CiAgICAgICAgbGVmdCAtPSA1OwoKICAgICAgICBpZiAob3BwIDw9
IDAuMSkgewogICAgICAgICAgICBkZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGRl
KTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBkZS5zdHlsZS5sZWZ0ID0g
bGVmdCArICJweCI7CiAgICAgICAgICAgIGRlLnN0eWxlLnRvcCA9IHRvcCArICJw
eCI7CiAgICAgICAgICAgIGRlLnN0eWxlLmhlaWdodCA9IGhlaWdodCArICJweCI7
CiAgICAgICAgICAgIGRlLnN0eWxlLndpZHRoID0gd2lkdGggKyAicHgiOwogICAg
ICAgICAgICBkZS5zdHlsZS5maWx0ZXIgPSAiYWxwaGEob3BhY2l0eT0iICsgTWF0
aC5mbG9vcihvcHAgKiAxMDApICsgIikiOwogICAgICAgICAgICBkZS5zdHlsZS5v
cGFjaXR5ID0gb3BwOwogICAgICAgICAgICB3aW5kb3cuc2V0VGltZW91dChmYWRl
LCAyMCk7CiAgICAgICAgfQogICAgfTsKICAgIGZhZGUoKTsKfQoKZnVuY3Rpb24g
Z2V0VGFyZ2V0IChldikgewogICAgdmFyIHRhcmdldDsKICAgIGlmIChldi50YXJn
ZXQpCiAgICAgICAgdGFyZ2V0ID0gZXYudGFyZ2V0OwogICAgZWxzZSBpZiAoZXYu
c3JjRWxlbWVudCkKICAgICAgICB0YXJnZXQgPSBldi5zcmNFbGVtZW50OwoKICAg
IC8vIFNhZmFyaSBidWc6CiAgICBpZiAodGFyZ2V0ICYmIHRhcmdldC5ub2RlVHlw
ZSA9PSAzKQogICAgICAgIHRhcmdldCA9IHRhcmdldC5wYXJlbnROb2RlOwoKICAg
IHJldHVybiB0YXJnZXQ7Cn0KCmZ1bmN0aW9uIHVwZGF0ZUxpbmsgKGFlLCByZXNP
YmosIGNsaWNrVGFyZ2V0KSB7CiAgICBhZS5ocmVmID0gcmVzT2JqLm5ld3VybDsK
ICAgIHZhciB1c2VyaG9vayA9IHdpbmRvd1sidXNlcmhvb2tfIiArIHJlc09iai5t
b2RlICsgIl9jb21tZW50X0FSRyJdOwogICAgdmFyIGRpZF9zb21ldGhpbmcgPSAw
OwoKICAgIGlmIChjbGlja1RhcmdldCAmJiBjbGlja1RhcmdldC5zcmMgJiYgY2xp
Y2tUYXJnZXQuc3JjID09IHJlc09iai5vbGRpbWFnZSkgewogICAgICAgIGNsaWNr
VGFyZ2V0LnNyYyA9IHJlc09iai5uZXdpbWFnZTsKICAgICAgICBkaWRfc29tZXRo
aW5nID0gMTsKICAgIH0KCiAgICBpZiAodXNlcmhvb2spIHsKICAgICAgICB1c2Vy
aG9vayhyZXNPYmouaWQpOwogICAgICAgIGRpZF9zb21ldGhpbmcgPSAxOwogICAg
fQoKICAgIC8vIGlmIGFsbCBlbHNlIGZhaWxzLCBhdCBsZWFzdCByZW1vdmUgdGhl
IGxpbmsgc28gdGhleSdyZSBub3QgYXMgY29uZnVzZWQKICAgIGlmICghIGRpZF9z
b21ldGhpbmcpIHsKICAgICAgICBpZiAoYWUgJiYgYWUuc3R5bGUpCiAgICAgICAg
ICAgIGFlLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICAgICAgaWYgKGNsaWNr
VGFyZ2V0ICYmIGNsaWNrVGFyZ2V0LnN0eWxlKQogICAgICAgICAgICBjbGlja1Rh
cmdldC5zdHlsZS5kaXNwYXkgPSAnbm9uZSc7CiAgICB9Cgp9Cgp2YXIgdHNJblBy
b2cgPSBuZXcgT2JqZWN0KCk7ICAvLyBkaWN0IG9mIHsgZGl0ZW1pZCA9PiAxIH0K
ZnVuY3Rpb24gY3JlYXRlTW9kZXJhdGlvbkZ1bmN0aW9uIChhZSwgZEl0ZW1pZCkg
ewogICAgcmV0dXJuIGZ1bmN0aW9uIChlKSB7CiAgICAgICAgaWYgKCFlKSBlID0g
d2luZG93LmV2ZW50OwoKICAgICAgICBpZiAodHNJblByb2dbZEl0ZW1pZF0pCiAg
ICAgICAgICAgIHJldHVybiBFdmVudC5wcmV2ZW50RGVmYXVsdChlKTsKICAgICAg
ICB0c0luUHJvZ1tkSXRlbWlkXSA9IDE7CgogICAgICAgIHZhciBjbGlja1Rhcmdl
dCA9IGdldFRhcmdldChlKTsKCiAgICAgICAgdmFyIGltZ1RhcmdldDsKICAgICAg
ICB2YXIgaW1ncyA9IGFlLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpbWciKTsKICAg
ICAgICBpZiAoaW1ncy5sZW5ndGgpCiAgICAgICAgICAgIGltZ1RhcmdldCA9IGlt
Z3NbMF0KCiAgICAgICAgaWYgKCEgY2xpY2tUYXJnZXQgfHwgdHlwZW9mKGNsaWNr
VGFyZ2V0KSAhPSAib2JqZWN0IikKICAgICAgICAgICAgcmV0dXJuIHRydWU7Cgog
ICAgICAgIHZhciBjbGlja1BvcyA9IGdldEV2ZW50UG9zKGUpOwoKICAgICAgICB2
YXIgZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKTsKICAgICAgICBk
ZS5zdHlsZS5wb3NpdGlvbiA9ICJhYnNvbHV0ZSI7CiAgICAgICAgZGUud2lkdGgg
PSAxNzsKICAgICAgICBkZS5oZWlnaHQgPSAxNzsKICAgICAgICBkZS5zcmMgPSBT
aXRlLmltZ3ByZWZpeCArICIvaG91cmdsYXNzLmdpZiI7CiAgICAgICAgZGUuc3R5
bGUudG9wID0gKGNsaWNrUG9zLnkgLSA4KSArICJweCI7CiAgICAgICAgZGUuc3R5
bGUubGVmdCA9IChjbGlja1Bvcy54IC0gOCkgKyAicHgiOwogICAgICAgIGRvY3Vt
ZW50LmJvZHkuYXBwZW5kQ2hpbGQoZGUpOwoKICAgICAgICB2YXIgeHRyID0gZ2V0
WFRSKCk7CiAgICAgICAgdmFyIHN0YXRlX2NhbGxiYWNrID0gZnVuY3Rpb24gKCkg
ewogICAgICAgICAgICBpZiAoeHRyLnJlYWR5U3RhdGUgIT0gNCkgcmV0dXJuOwoK
ICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChkZSk7CiAgICAg
ICAgICAgIHZhciBycGNSZXM7CgogICAgICAgICAgICBpZiAoeHRyLnN0YXR1cyA9
PSAyMDApIHsKICAgICAgICAgICAgICAgIHZhciByZXNPYmogPSBldmFsKHh0ci5y
ZXNwb25zZVRleHQpOwogICAgICAgICAgICAgICAgaWYgKHJlc09iaikgewogICAg
ICAgICAgICAgICAgICAgIHBvb2ZBdChjbGlja1Bvcyk7CiAgICAgICAgICAgICAg
ICAgICAgdXBkYXRlTGluayhhZSwgcmVzT2JqLCBpbWdUYXJnZXQpOwogICAgICAg
ICAgICAgICAgICAgIHRzSW5Qcm9nW2RJdGVtaWRdID0gMDsKICAgICAgICAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgdHNJblByb2dbZEl0ZW1p
ZF0gPSAwOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgICAgIGFsZXJ0KCJFcnJvciBjb250YWN0aW5nIHNlcnZlci4i
KTsKICAgICAgICAgICAgICAgIHRzSW5Qcm9nW2RJdGVtaWRdID0gMDsKICAgICAg
ICAgICAgfQogICAgICAgIH07CgogICAgICAgIHh0ci5vbnJlYWR5c3RhdGVjaGFu
Z2UgPSBzdGF0ZV9jYWxsYmFjazsKCiAgICAgICAgdmFyIHBvc3RVcmwgPSBhZS5o
cmVmLnJlcGxhY2UoLy4rdGFsa3NjcmVlblwuYm1sLywgIi8iICsgTEpfY210aW5m
by5qb3VybmFsICsgIi9fX3JwY190YWxrc2NyZWVuIik7CgogICAgICAgIC8vdmFy
IHBvc3RVcmwgPSBhZS5ocmVmOwogICAgICAgIHh0ci5vcGVuKCJQT1NUIiwgcG9z
dFVybCArICImanNtb2RlPTEiLCB0cnVlKTsKCiAgICAgICAgdmFyIHBvc3RkYXRh
ID0gImNvbmZpcm09WSZsal9mb3JtX2F1dGg9IiArIExKX2NtdGluZm8uZm9ybV9h
dXRoOwoKICAgICAgICB4dHIuc2V0UmVxdWVzdEhlYWRlcigiQ29udGVudC1UeXBl
IiwgImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIpOwogICAgICAg
IHh0ci5zZW5kKHBvc3RkYXRhKTsKCiAgICAgICAgRXZlbnQucHJldmVudERlZmF1
bHQoZSk7CiAgICB9Owp9CgpmdW5jdGlvbiBzZXR1cEFqYXggKG5vZGUpIHsKICAg
IHZhciBsaW5rcyA9IG5vZGUgPyBub2RlLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdh
JykgOiBkb2N1bWVudC5saW5rcywKICAgICAgICByZXhfaWQgPSAvaWQ9KFxkKykv
LAogICAgICAgIGkgPSAtMSwgYWU7CgogICAgd2hpbGUgKGxpbmtzWysraV0pIHsK
ICAgICAgICBhZSA9IGxpbmtzW2ldOwogICAgICAgIGlmIChhZS5ocmVmLmluZGV4
T2YoJ3RhbGtzY3JlZW4uYm1sJykgIT0gLTEpIHsKICAgICAgICAgICAgdmFyIHJl
TWF0Y2ggPSByZXhfaWQuZXhlYyhhZS5ocmVmKTsKICAgICAgICAgICAgaWYgKCFy
ZU1hdGNoKSBjb250aW51ZTsKCiAgICAgICAgICAgIHZhciBpZCA9IHJlTWF0Y2hb
MV07CiAgICAgICAgICAgIGlmICghZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xq
Y210JyArIGlkKSkgY29udGludWU7CgogICAgICAgICAgICBhZS5vbmNsaWNrID0g
Y3JlYXRlTW9kZXJhdGlvbkZ1bmN0aW9uKGFlLCBpZCk7CiAgICAgICAgfSBlbHNl
IGlmIChhZS5ocmVmLmluZGV4T2YoJ2RlbGNvbW1lbnQuYm1sJykgIT0gLTEpIHsK
ICAgICAgICAgICAgaWYgKExKX2NtdGluZm8gJiYgTEpfY210aW5mby5kaXNhYmxl
SW5saW5lRGVsZXRlKSBjb250aW51ZTsKCiAgICAgICAgICAgIHZhciByZU1hdGNo
ID0gcmV4X2lkLmV4ZWMoYWUuaHJlZik7CiAgICAgICAgICAgIGlmICghcmVNYXRj
aCkgY29udGludWU7CgogICAgICAgICAgICB2YXIgaWQgPSByZU1hdGNoWzFdOwog
ICAgICAgICAgICBpZiAoIWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsamNtdCcg
KyBpZCkpIGNvbnRpbnVlOwoKICAgICAgICAgICAgYWUub25jbGljayA9IGNyZWF0
ZURlbGV0ZUZ1bmN0aW9uKGFlLCBpZCk7CiAgICAgICAgfQogICAgfQp9CgoKCkxp
dmVKb3VybmFsLnJlZ2lzdGVyX2hvb2soJ3BhZ2VfbG9hZCcsIGZ1bmN0aW9uICgp
IHsKICAgIHNldHVwQWpheCgpCn0pOwpET00uYWRkRXZlbnRMaXN0ZW5lcihkb2N1
bWVudCwgJ2NsaWNrJywgZG9jQ2xpY2tlZCk7CmRvY3VtZW50LndyaXRlKCI8c3R5
bGU+IGRpdi5samNtdG1hbmFnZSB7IGNvbG9yOiAjMDAwOyBiYWNrZ3JvdW5kOiAj
ZTBlMGUwOyBib3JkZXI6IDJweCBzb2xpZCAjMDAwOyBwYWRkaW5nOiAzcHg7IH08
L3N0eWxlPiIpOwpIb3Jpem9uID0gbmV3IE9iamVjdDsKCi8vIEhvbGRzIHN0eWxl
IGluZm8gZm9yIHRoZSB0b3AgbGV2ZWwgbWVudQpIb3Jpem9uLnRvcGxldmVsX2hv
dmVyX3N0eWxlID0gbnVsbDsKLy8gSG9sZHMgdGhlIGxhc3QgbWVudSBvcGVuZWQK
SG9yaXpvbi5vcGVuZWRfbWVudSA9IG51bGw7Ci8vIEhvbGRzIFNlbGVjdCBlbGVt
ZW50cyB0aHQgaGF2ZSBiZWVuIGhpZGRlbgpIb3Jpem9uLmhpZGRlblNlbGVjdHMg
PSBbXTsKLy8gSXMgSUUgdmVyc2lvbiA2IG9yIGxvd2VyIGZsYWcKSG9yaXpvbi5p
c0lFNmRvd24gPSBmYWxzZTsKCkhvcml6b24uc2NoZW1lX2luaXQgPSBmdW5jdGlv
biAoKSB7CiAgICBIb3Jpem9uLnRvcGxldmVsX2hvdmVyX3N0eWxlID0gRE9NLmdl
dENvbXB1dGVkU3R5bGUoJCgiQWxwaGEiKSk7CiAgICBIb3Jpem9uLnNldElzSUU2
ZG93bigpOwogICAgRE9NLmFkZEV2ZW50TGlzdGVuZXIoJCgnZm9vdGVyX2xhbmdf
bGlzdCcpLCAiY2hhbmdlIiwgZnVuY3Rpb24gKGV2dCkgeyBIb3Jpem9uLmNoYW5n
ZUxhbmcoZXZ0LCAkKCdmb290ZXJfbGFuZ19saXN0JykudmFsdWUpIH0pOwp9CgpI
b3Jpem9uLm9wZW5fbWVudSA9IGZ1bmN0aW9uIChtKSB7CiAgICAvKiBOZWVkZWQg
dG8gbmljZWx5IHR1cm4gb24gdG9wIGxldmVsIG1lbnUgaXRlbXMgZm9yIElFICov
CiAgICBpZiAoSG9yaXpvbi50b3BsZXZlbF9ob3Zlcl9zdHlsZSkgewogICAgICAg
IG0uc3R5bGUuYmFja2dyb3VuZEltYWdlID0gSG9yaXpvbi50b3BsZXZlbF9ob3Zl
cl9zdHlsZS5iYWNrZ3JvdW5kSW1hZ2U7CiAgICAgICAgbS5zdHlsZS5ib3JkZXJD
b2xvciA9IEhvcml6b24udG9wbGV2ZWxfaG92ZXJfc3R5bGUuYm9yZGVyQ29sb3I7
CiAgICAgICAgbS5zdHlsZS5ib3JkZXJXaWR0aCA9IEhvcml6b24udG9wbGV2ZWxf
aG92ZXJfc3R5bGUuYm9yZGVyV2lkdGg7CiAgICAgICAgbS5zdHlsZS5ib3JkZXJT
dHlsZSA9IEhvcml6b24udG9wbGV2ZWxfaG92ZXJfc3R5bGUuYm9yZGVyU3R5bGU7
CiAgICAgICAgdmFyIGxpbmtzID0gbS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYScp
OwogICAgICAgIGxpbmtzWzBdLnN0eWxlLmNvbG9yID0gSG9yaXpvbi50b3BsZXZl
bF9ob3Zlcl9zdHlsZS5jb2xvcjsKICAgIH0KCiAgICBIb3Jpem9uLmhpZGVTZWxl
Y3RzKCk7CiAgICB2YXIgbWVudXMgPSBtLmdldEVsZW1lbnRzQnlUYWdOYW1lKCd1
bCcpOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPD0gbWVudXMubGVuZ3RoOyBpKysp
IHsKICAgICAgICBpZiAoIW1lbnVzW2ldKSByZXR1cm47CiAgICAgICAgbWVudXNb
aV0uc3R5bGUuZGlzcGxheSA9ICJibG9jayI7CiAgICB9CgogICAgRXZlbnQuc3Rv
cChlKTsKICAgIHJldHVybiBmYWxzZTsKfQoKSG9yaXpvbi5jbG9zZV9tZW51ID0g
ZnVuY3Rpb24gKG0pIHsKICAgIGlmIChIb3Jpem9uLnRvcGxldmVsX2hvdmVyX3N0
eWxlKSB7CiAgICAgICAgbS5zdHlsZS5iYWNrZ3JvdW5kSW1hZ2UgPSAnJzsKICAg
ICAgICBtLnN0eWxlLmJvcmRlckNvbG9yID0gJyc7CiAgICAgICAgbS5zdHlsZS5i
b3JkZXJXaWR0aCA9ICcnOwogICAgICAgIG0uc3R5bGUuYm9yZGVyU3R5bGUgPSAn
JzsKICAgICAgICB2YXIgbGlua3MgPSBtLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdh
Jyk7CiAgICAgICAgbGlua3NbMF0uc3R5bGUuY29sb3IgPSAnJzsKICAgIH0KCiAg
ICBIb3Jpem9uLnNob3dTZWxlY3RzKCk7CiAgICB2YXIgbWVudXMgPSBtLmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCd1bCcpOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPD0g
bWVudXMubGVuZ3RoOyBpKyspIHsKICAgICAgICBpZiAoIW1lbnVzW2ldKSByZXR1
cm47CiAgICAgICAgbWVudXNbaV0uc3R5bGUuZGlzcGxheSA9ICJub25lIjsKICAg
IH0KCiAgICBFdmVudC5zdG9wKGUpOwogICAgcmV0dXJuIGZhbHNlOwp9CgpIb3Jp
em9uLm1vdXNlTW92ZSA9IGZ1bmN0aW9uIChldnQpIHsKICAgIEV2ZW50LnByZXAo
ZXZ0KTsKICAgIGlmICghZXZ0LnRhcmdldCkgcmV0dXJuOwoKICAgIHZhciBhbmNl
c3RvcnMgPSBET00uZ2V0QW5jZXN0b3JzQnlDbGFzc05hbWUoZXZ0LnRhcmdldCwg
Ik5hdk1lbnVJdGVtIiwgdHJ1ZSk7CiAgICBpZiAoYW5jZXN0b3JzLmxlbmd0aCkg
ewogICAgICAgIGlmICghSG9yaXpvbi5vcGVuZWRfbWVudSB8fCBIb3Jpem9uLm9w
ZW5lZF9tZW51ICE9IGFuY2VzdG9yc1swXSkKICAgICAgICAgICAgSG9yaXpvbi5v
cGVuX21lbnUoYW5jZXN0b3JzWzBdKTsKICAgICAgICBpZiAoSG9yaXpvbi5vcGVu
ZWRfbWVudSAmJiBIb3Jpem9uLm9wZW5lZF9tZW51ICE9IGFuY2VzdG9yc1swXSkK
ICAgICAgICAgICAgSG9yaXpvbi5jbG9zZV9tZW51KEhvcml6b24ub3BlbmVkX21l
bnUpOwogICAgICAgIEhvcml6b24ub3BlbmVkX21lbnUgPSBhbmNlc3RvcnNbMF07
CiAgICB9IGVsc2UgewogICAgICAgIGlmIChIb3Jpem9uLm9wZW5lZF9tZW51KSBI
b3Jpem9uLmNsb3NlX21lbnUoSG9yaXpvbi5vcGVuZWRfbWVudSk7CiAgICAgICAg
SG9yaXpvbi5vcGVuZWRfbWVudSA9IG51bGw7CiAgICB9Cn0KCkhvcml6b24uaGlk
ZVNlbGVjdHMgPSBmdW5jdGlvbiAoKSB7CiAgICBpZiAoIUhvcml6b24uaXNJRTZk
b3duKSByZXR1cm47CiAgICB2YXIgc2VscyA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJzZWxlY3QiKTsKICAgIHZhciBlbGU7CiAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IHNlbHMubGVuZ3RoOyBpKyspIHsKICAgICAgICBlbGUgPSBzZWxz
W2ldOwogICAgICAgIGlmICghZWxlKSBjb250aW51ZTsKCiAgICAgICAgaWYgKGVs
ZS5zdHlsZS52aXNpYmlsaXR5ICE9ICdoaWRkZW4nICYmIGVsZS5jbGFzc05hbWUg
PT0gJ2hpZGVhYmxlJykgewogICAgICAgICAgICBlbGUuc3R5bGUudmlzaWJpbGl0
eSA9ICdoaWRkZW4nOwogICAgICAgICAgICBIb3Jpem9uLmhpZGRlblNlbGVjdHMu
cHVzaChlbGUpOwogICAgICAgIH0KICAgIH0KfQoKSG9yaXpvbi5zaG93U2VsZWN0
cyA9IGZ1bmN0aW9uICgpIHsKICAgIHZhciBlbGU7CiAgICB3aGlsZSAoZWxlID0g
SG9yaXpvbi5oaWRkZW5TZWxlY3RzLnBvcCgpKQogICAgICAgIGVsZS5zdHlsZS52
aXNpYmlsaXR5ID0gJyc7Cn0KCkhvcml6b24uc2V0SXNJRTZkb3duID0gZnVuY3Rp
b24gKCkgewogICAgdmFyIFVBID0gbmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2Vy
Q2FzZSgpOwogICAgaWYgKChVQS5pbmRleE9mKCdtc2llIDUnKSAhPSAtMSkgfHwg
KFVBLmluZGV4T2YoJ21zaWUgNicpICE9IC0xKSkKICAgICAgICBIb3Jpem9uLmlz
SUU2ZG93biA9IHRydWU7Cn0KCkhvcml6b24uY2hhbmdlTGFuZyA9IGZ1bmN0aW9u
KGV2dCwgbGFuZykgewogICAgaWYgKGxhbmcpIHsKICAgICAgICB3aW5kb3cubG9j
YXRpb24gPSBTaXRlLnNpdGVyb290ICsgIi90b29scy9zZXRsYW5nLmJtbD9sYW5n
PSIgKyBsYW5nICsgIiZyZXR1cm50bz0iICsgZXNjYXBlKHdpbmRvdy5sb2NhdGlv
bik7CiAgICB9Cn0KCi8qIFRyeSB0byBzcGVlZCB1cCBwYWdlIGxvYWQgaW4gTW96
aWxsYSAqLwppZiAod2luZG93LmNvbnRyb2xsZXJzKSB7CiAgICBkb2N1bWVudC5h
ZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIiwgSG9yaXpvbi5zY2hl
bWVfaW5pdCwgbnVsbCk7CiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJt
b3VzZW1vdmUiLCBIb3Jpem9uLm1vdXNlTW92ZSwgZG9jdW1lbnQpOwp9IGVsc2Ug
ewogICAgRE9NLmFkZEV2ZW50TGlzdGVuZXIod2luZG93LCAibG9hZCIsIEhvcml6
b24uc2NoZW1lX2luaXQpOwogICAgRE9NLmFkZEV2ZW50TGlzdGVuZXIoZG9jdW1l
bnQsICJtb3VzZW1vdmUiLCBIb3Jpem9uLm1vdXNlTW92ZSk7Cn0KCi8vIGxqdGFs
ayBmb3IgY3R4cG9wdXAKTGl2ZUpvdXJuYWwucmVnaXN0ZXJfaG9vaygiY3R4cG9w
dXBfZXh0cmFpbmZvIiwgZnVuY3Rpb24gKHVzZXJkYXRhKSB7CiAgICB2YXIgY29u
dGVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwoKICAgIGlmICh1
c2VyZGF0YS5pc19wZXJzb24pIHsKICAgICAgICBpZiAodXNlcmRhdGEuaXNfb25s
aW5lICE9PSAnJykgewogICAgICAgICAgICAvLyBvbmxpbmUgc3RhdHVzCiAgICAg
ICAgICAgIHZhciBvbmxpbmVTdGF0dXNMYWJlbCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoInNwYW4iKTsKICAgICAgICAgICAgdmFyIGphYmJlclRpdGxlID0gdXNl
cmRhdGEuamFiYmVyX3RpdGxlOwogICAgICAgICAgICBvbmxpbmVTdGF0dXNMYWJl
bC5pbm5lckhUTUwgPSBqYWJiZXJUaXRsZSArICI6ICI7CiAgICAgICAgICAgIERP
TS5hZGRDbGFzc05hbWUob25saW5lU3RhdHVzTGFiZWwsICJPbmxpbmVTdGF0dXMi
KTsKICAgICAgICAgICAgY29udGVudC5hcHBlbmRDaGlsZChvbmxpbmVTdGF0dXNM
YWJlbCk7CgogICAgICAgICAgICAvLyBidWlsZCBzdGF0dXMKICAgICAgICAgICAg
dmFyIG9ubGluZVN0YXR1cyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4i
KTsKCgogICAgICAgICAgICB2YXIgb25saW5lU3RhdHVzVGV4dCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKICAgICAgICAgICAgb25saW5lU3RhdHVz
LmFwcGVuZENoaWxkKG9ubGluZVN0YXR1c1RleHQpOwoKICAgICAgICAgICAgY29u
dGVudC5hcHBlbmRDaGlsZChvbmxpbmVTdGF0dXMpOwoKICAgICAgICAgICAgaWYg
KHVzZXJkYXRhLmlzX29ubGluZSkgewogICAgICAgICAgICAgICAgb25saW5lU3Rh
dHVzVGV4dC5pbm5lckhUTUwgPSAiT25saW5lIjsKICAgICAgICAgICAgfSBlbHNl
IGlmICh1c2VyZGF0YS5pc19vbmxpbmUgPT0gJzAnKSB7CiAgICAgICAgICAgICAg
ICBvbmxpbmVTdGF0dXNUZXh0LmlubmVySFRNTCA9ICJPZmZsaW5lIjsKICAgICAg
ICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gY29udGVudDsKfSk7
CgovLyBmb3IgdXBkYXRpbmcgbGpjb20gd2lkZ2V0cyBmcm9tIGxpdmVqb3VybmFs
IG9uZXMKTGl2ZUpvdXJuYWwucmVnaXN0ZXJfaG9vaygidXBkYXRlX290aGVyX3dp
ZGdldHMiLCBmdW5jdGlvbiAoZnJvbV93aWRnZXQpIHsKICAgIGlmIChmcm9tX3dp
ZGdldCA9PSAiTGF5b3V0Q2hvb3NlciIgJiYgQ3VzdG9taXplLkFkTGF5b3V0KSB7
CiAgICAgICAgQ3VzdG9taXplLkFkTGF5b3V0LnVwZGF0ZUNvbnRlbnQoKTsKICAg
IH0KfSk7Cg==
------------JxuqZ6nLgOmBPtWaPDKENk
Content-Disposition: inline; filename=topbar-bg.png
Content-Type: image/png; name=topbar-bg.png
Content-Location: http://l-stat.livejournal.com/stc/horizon/topbar-bg.png
Content-Transfer-Encoding: Base64
iVBORw0KGgoAAAANSUhEUgAAAAEAAABkCAIAAADITs03AAAACXBIWXMAAAsTAAAL
EwEAmpwYAAAAB3RJTUUH1gYPEyIsVJqHjgAAAZtJREFUGBkBkAFv/gCBq9QCAQEA
AgAAAAIBAAACAQEBAgAAAQIBAQECAAEAAgEAAAIBAQECAQEAAgEAAQIBAQACAQEA
AgEAAQIAAQECAgEAAgEAAQIBAQECAQEAAgEBAAIBAgECAQABAgIBAAIBAQECAQEB
AgEBAQICAQACAQEBAgEBAAIBAQECAQABAgICAAICAQICAAEAAgEBAAICAQECAgAB
AgEBAQIBAQECAQIBAgEAAAIBAgACAgABAgECAQIBAAECAQIBAgEAAQIDAgACAAAA
AgEBAQICAQACAQACAgEBAAIBAQACAQEBAgEBAQICAQACAAABAgECAAIBAAECAQEA
AgEAAQIAAQACAQEBAgEBAAIBAAECAQEAAgAAAQICAQACAAAAAgEBAAIAAAECAAAA
AgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAA
AgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAA
AgAAAAIAAABhggNzIXwvkAAAAABJRU5ErkJggg==
------------JxuqZ6nLgOmBPtWaPDKENk
Content-Disposition: inline; filename=toplevel-bg.gif
Content-Type: image/gif; name=toplevel-bg.gif
Content-Location: http://l-stat.livejournal.com/stc/horizon/toplevel-bg.gif
Content-Transfer-Encoding: Base64
R0lGODlhAQABAIAAAMvk/QAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==
------------JxuqZ6nLgOmBPtWaPDKENk
Content-Disposition: inline; filename=default.css
Content-Type: text/css; name=default.css
Content-Location: http://l-stat.livejournal.com/??lj_base.css,esn.css,contextualhover.css,ups.css,lj_base-app.css,ad_base.css,horizon/screen.css,horizon/layout.css,widget.css,horizon/horizontal.css?v=1236810940
Content-Transfer-Encoding: 8bit
iframe.lj_embedcontent {
border: 0;
}
form {
margin: 0px;
padding: 0px;
}
.ljclear {
clear: both;
margin: 0 -1px -1px 0;
border: 0;
padding: 0;
width: 1px;
height: 1px;
font-size: 0;
line-height: 0;
}
.nowrap {
white-space: nowrap;
}
.lj_progresscontainer {
height: 25px;
width: 400px;
margin: 1em;
background: url(/img/progress/inactive.gif) repeat;
}
.lj_progressoverlay {
background: url(/img/progress/active.gif) repeat;
}
.lj_progressindefinite {
background-image: url(/img/progress/barber.gif);
}
.lj_hourglass {
z-index: 20000;
}
.ErrorNote .Inner {
background-color: #FFEEEE;
background-repeat: repeat-x;
border: 1px solid #FF9999;
padding: 8px;
}
.Note .Inner {
background: #FFFFDD;
border: 1px solid #FFCC33;
padding: 8px;
}
div.lj_ippu {
background-color: #fff;
border: 2px solid #444;
padding: 2px;
}
div.lj_ippu_titlebar {
background-color: #444;
height: 20px;
font-weight: bold;
color: #fff;
width: auto !important;
padding: 5px 0 0 5px;
}
div.lj_ippu_titlebar div {
}
.lj_ippu_titlebar img {
opacity: .25;
}
.lj_ippu_titlebar img:hover {
opacity: 1;
}
.LJ_Placeholder_Container { /* see also lj_base-ie.css */
display: table-cell;
vertical-align: middle;
border: 1px dashed #ccc;
_position: relative;
overflow: hidden;
}
.LJ_Placeholder_Container img { /* see also lj_base-ie.css */
cursor: pointer;
display: block;
margin: 0 auto;
_position: absolute;
_top: 45%;
_left: 45%;
}
.ljhidden {
display: block;
position: absolute;
left: 0;
top: 0;
width: 0;
height: 0;
margin: 0;
border: 0;
padding: 0;
font-size: 0.1px;
line-height: 0;
opacity: 0;
filter: alpha(opacity=0);
}
.lj_pollanswer {
}
.lj_pollanswer_loading {
color: #CCC;
border: 1px solid #EEE;
}
.super {
vertical-align: super;
font-size: .7em;
}
.notice {
color: #f00;
}
.ljedittime {
font-size: smaller;
}
.warning-background {
background-image: url('/img/message-warning.gif');
}
.lj_invisible {
display:-moz-inline-box;
display:inline-block;
line-height:0;
width:0;
height:0;
padding:0;
border:0 none transparent;
margin:0;
overflow:hidden;
text-decoration:none;
}
/* Link to current LJ.com version
------------------------------------ */
DL.current-version {
margin: 10px 0;
padding: 0;
border: 0;
text-align: left;
}
DL.current-version DT,
DL.current-version DD {
display: inline;
margin: 0;
padding: 0 3px 0 0;
text-align: left;
white-space: nowrap;
font-size: 11px !important;
font-weight: normal;
}
/*---------- Manage Settings ----------*/
/*-------------------------------------*/
#manageSettings {
}
.Subscribe {
width: 100%;
padding: 0;
margin: .5em 0 0 0;
clear: both;
}
.Subscribe tr.Inactive {
color: #aaa;
}
.Subscribe tr.Disabled {
background-color: #eee;
}
.Subscribe tr.altrow {
background-color: #f1f1f1;
}
.Subscribe tr.Inactive a {
color: #aaa;
}
.Subscribe td {
padding: .3em;
}
.Subscribe td img {
border: 0;
}
.Subscribe td label {
cursor: pointer !important;
}
.Subscribe td p {
color: #666;
background: #fff;
cursor: default !important;
}
.CategoryRow .Caption {
text-align: right;
vertical-align: bottom;
}
.CategoryRow {
width: 100%;
}
.CategoryRow td {
vertical-align: middle;
border-bottom: 1px solid #ddd;
padding: 2em .4em .2em .4em;
}
.CategoryRowFirst td {
padding-top: .2em;
}
.CategoryRow .caption {
text-align: right;
}
.CategoryRow label {
}
.CategoryHeading {
font-weight: bold;
}
.CategoryHeadingNote {
}
#Subscriptions {
width: 100%;
}
#Subscriptions th {
text-align: left;
}
#Subscriptions td, #Subscriptions th {
padding-left: .5em;
padding-right: .5em;
}
#Subscriptions tr.lighter {
background-color: #cff;
}
#Subscriptions tr.darker {
background-color: #9cc;
}
div.argOptsContainer {
display: none;
}
#SubscribeSaveButtons {
text-align: center;
border: 1px solid #333;
width: 150px;
margin-left: auto;
margin-right: auto;
}
#SubscribeSaveButtons input {
margin: 5px;
}
#SubscriptionInfo {
width: 95%;
text-align: center;
margin: 1em auto;
}
#SubscriptionInfo p, #SubscriptionInfo div {
font-size: 1em;
margin: 0;
padding: .2em;
}
/*----------- Message Center ----------*/
/*-------------------------------------*/
.NotificationTable {
width: 100%;
}
.NotificationTable tr.Selected {
background-color: #cee0fb;
}
.NotificationTable tr.Selected td {
border-top: 1px solid #ccc;
}
.NotificationTable td {
border-top: 1px solid #ddd;
}
#NotificationSidebar {
}
#NotificationSidebar p {
margin: 0;
padding: 0;
}
#NotificationSidebar .Blurb {
margin: 0 0 1em 0;
padding: 0;
}
#NotificationSidebar .BlurbTitle {
font-weight: bold;
margin: 0 0 .4em 0;
}
#NotificationSidebar .ljad {
float: left;
margin-right: 1em;
}
.esnlinks {
float: right;
display: block;
margin: 0 0 0 0;
font-weight: normal;
}
.NotificationTable .inbox {
padding: 0;
margin: 0em 0 0em 0;
border-top: 1px solid #ddd;
}
.inbox .header {
width: 100%;
margin: 0;
background: #ddd;
vertical-align: middle;
border: 0;
padding: 3px;
}
.actions {
font-size: 0.9em;
}
span.Pages {
float: right;
}
span.Pages input {
}
.inbox tr {
cursor: pointer;
}
.inbox_newitems {
font-weight: bold;
overflow: hidden;
}
.InboxItem_Controls {
float: left;
width: 40px;
}
.InboxItem_Unread {
font-weight: bold;
}
.InboxItem_Read {
color: #888;
}
span.InboxItem_Read:hover {
color: #000;
}
span.InboxItem_Read a {
color: #999 !important;
}
span.InboxItem_Read:hover a {
color: inherit !important;
}
.InboxItem_Meta {
}
.InboxItem_Meta td {
padding: 0 0 0 0;
}
.inbox .alt {
background: #f6f6f6;
}
.inbox .alt td {
}
.inbox .checkbox {
width: 1%;
padding: .1em;
vertical-align: top;
}
.inbox td.NoItems {
font-size: 3em;
text-align: center;
padding: 1em;
color: #ddd;
cursor: default !important;
}
.inbox td.item {
padding: .3em 0 .2em .4em !important;
vertical-align: middle;
}
.InboxItem_Content {
padding: .5em 0 .2em 0;
width: 95%;
}
.inbox td.time {
width: 8.5em;
font-size: .8em;
color: #555;
vertical-align: top;
padding-top: .4em;
}
.inbox .JournalNewComment {
}
.inbox .Subject {
font-weight: bold;
}
.inbox .ManageButtons {
float: right;
width: 104px;
position: relative;
top: 4px;
margin: 0 0 .5em 0;
}
.inbox .Body {
}
.NotificationTable tr.Selected .Body {
}
/* folder links */
.folders a {
white-space: nowrap;
text-decoration: none;
color: #000;
display: block;
margin: 0px;
padding: 0px 0px 1px 2px;
border: 1px solid #fff;
}
.folders a.subs {
padding-left: 1em;
}
.folders .subs {
padding-left: 1em;
}
.folders a.subsubs {
padding-left: 2em;
}
.folders a:visited, .folders a:link {
color: #000;
}
.folders a:hover {
border: 1px solid #bbb;
background-color: #eee;
}
/**** ESN AJAX ****/
.ippu {
color: #000000
}
.ippu .track_title {
font-weight: bold;
color: #CC6644;
margin: 4px;
}
.ippu .track_btncontainer {
margin-top: 5px;
padding: 1px;
width: 250px;
}
.ippu .track_moreopts {
margin: auto auto auto 1em;
width: 49%;
}
.ippu .track_savechanges {
margin: auto auto auto auto;
width: 49%;
}
#compose label {
font-weight: bold;
}
div.ContextualPopup {
position: relative;
margin: 5px 0 0 20px;
font: normal 11px "Arial", "Verdana", sans-serif !important;
text-align: left;
}
* html div.ContextualPopup {
background: none !important;
}
div.ContextualPopup img {
border: 0;
}
div.ContextualPopup div.Inner {
position: relative;
top: -2px;
left: -2px;
background-color: #fff !important;
color: #000 !important;
border: 1px solid #036;
padding: 0px;
width: 20em;
}
* html div.ContextualPopup div.Inner {
top: 0px;
left: 0px;
}
div.ContextualPopup .Content {
padding: 2px 4px 6px 4px;
margin-right: 50px;
line-height: 1.4;
}
div.ContextualPopup .Relation {
font-weight: bold !important;
}
div.ContextualPopup .Content .OnlineStatus {
font-weight: bold;
}
div.ContextualPopup .Content .GizmoBlurb {
font-size: smaller;
}
div.ContextualPopup .Userpic {
float: right;
top: 0;
right: 0px;
padding: 4px 4px 0 0;
}
* html div.ContextualPopup .Userpic {
top: 2px;
}
div.ContextualPopup .Userpic img {
margin: 0 auto;
max-width: 50px;
width:expression(this.width > 50 ? "50px" : this.width); /*IE Max-width */
height: auto;
vertical-align: middle;
}
div.ContextualPopup div.Inner a, div.ContextualPopup div.Inner a:visited {
text-decoration: underline !important;
font-weight: bold;
color: #00C !important;
}
div.ups_status {
color: #333;
font-size: larger;
font-weight: bold;
text-align: center;
}
.ups_table {
display: table;
width: 100%;
_width: 97%;
padding: 0;
margin: 0;
}
td.ups_cell {
padding: 5px;
border: 1px solid #fff;
cursor: pointer !important;
color: #000;
}
.ups_row1 { background-color: #fff; }
.ups_row2 { background-color: #efefef; }
.ups_selected_cell {
background-color: #999 !important;
color: #000;
border: 1px solid #454545 !important;
}
div.ups_search {
padding: 5px;
background: #ccc;
color: #000;
border-top: 1px solid #fff;
border-bottom: 1px solid #fff;
height: 20px;
vertical-align: top;
}
.ups_selected {
border-top: 1px solid #777 !important;
border-left: 1px solid #777 !important;
border-right: 1px solid #444 !important;
border-bottom: 1px solid #444 !important;
}
img.ups_upic {
display: block;
padding: 3px;
border-top: 1px solid #eee;
border-left: 1px solid #eee;
border-right: 1px solid #aaa;
border-bottom: 1px solid #aaa;
background: #fff;
color: #000;
}
div.ups_userpics {
overflow: auto;
height: 353px;
margin: 0;
padding: 0;
}
div.ups_container {
float: left;
margin: 0 5px 0 0;
}
div.ups_closebuttonarea {
background: #ccc;
color: #000;
padding: 5px;
border-top: 1px solid #fff;
height: 20px;
position: relative;
}
div.ups_closebuttonarea input {
vertical-align: top;
}
span#ups_scaling_buttons {
display: block;
position: absolute;
right: 5px;
top: 2px;
}
#ups_scaling_buttons img {
margin: 0 0 0 2px;
padding: 2px;
border: 1px solid #ccc;
}
img.ups_scalebtn_selected {
border: 1px solid #666 !important;
}
/*
This is utility css that can be used anywhere in the app
It should be included on all app pages in all schemes
*/
/* .pkg class wraps enclosing block element around inner floated elements */
.pkg:after {
content: " ";
display: block;
visibility: hidden;
clear: both;
height: 0.1px;
font-size: 0.1em;
line-height: 0;
}
.pkg { display: inline-block; }
/* no ie mac \*/
* html .pkg { height: 1%; }
.pkg[class] { height: auto; }
.pkg { display: block; }
/* */
/* form styles */
label.left {
display: block;
float: left;
}
input.text,
textarea.text,
select.select {
margin: 0px 3px 0px 0px;
padding: 2px 2px;
background: #fff url(/img/input-bg.gif) repeat-x 0 -1px;
border: 1px solid #bbb;
border-top: 1px solid #999;
border-left: 1px solid #999;
}
select.select {
padding: 1px;
}
fieldset.nostyle {
border: none;
margin: 0;
padding: 0;
}
input.create-account {
font-size: 110%;
color: #fff;
margin: 0;
background: #559A40;
border: 2px solid #76AE65;
border-bottom: 2px solid #447C33;
border-right: 2px solid #447C33;
}
.detail {
font-size: 90%;
color: #444;
}
p.detail {
margin: 0 0 10px 0;
padding: 0;
}
h2.widget-header {
margin: 0 0 6px 0;
padding: 0 0 6px 0;
border-bottom: 1px solid #ccc;
}
ul.detail li {
font-size: 90%;
}
hr.hr {
border: 0;
width: 100%;
color: #8FC3F7; background-color: #8FC3F7;
height: 1px;
}
/* generic class for removing styling from ul */
ul.nostyle {
list-style: none;
margin: 0;
padding: 0;
}
/* tables where rows alternate colors */
table.alternating-rows th {
text-align: left;
border-top: 1px solid #8FC3F7;
border-bottom: 1px solid #8FC3F7;
background-color: #C5DFF9;
padding: 6px 4px;
}
table.alternating-rows tr.altrow1 {
background-color: #fff;
}
table.alternating-rows tr.altrow2 {
background-color: #eee;
}
table.alternating-rows td {
padding: 6px 4px;
border-bottom: 1px solid #ccc;
text-align: left;
}
/* columns for content layouts */
div.columns-2 .columns-2-left {
float: left;
width: 49%;
}
div.columns-2 .columns-2-right {
float: right;
width: 49%;
}
div.columns-2-r300 {
width: 720px;
}
div.columns-2-r300 .columns-2-left {
float: left;
width: 405px;
margin-right: 15px;
}
div.columns-2-r300 .columns-2-right {
float: left;
width: 300px;
}
/* default margin for widgets */
.appwidget {
margin-bottom: 15px;
position: relative;
}
.appwidget .more-link {
position: absolute;
right: 7px;
top: 6px;
font-size: 11px;
text-decoration: none;
padding-left: 10px;
text-transform: lowercase;
color: #114577 !important;
background: url('/img/arrow-double-blue.gif') no-repeat 0 60%;
}
*HTML .appwidget .more-link {
right: 27px;
}
.appwidget .more-link:hover {
text-decoration: underline;
}
/* add this class to anything to make upgrade icon appear next to it */
.upgrade-account {
padding-right: 18px;
background: url('/horizon/upgrade-paid-icon.gif') no-repeat right 50%;
}
.arrow-link,
.more-link {
padding-left: 12px;
background: url('/img/arrow-double-black.gif') no-repeat 0 50%;
}
/* Used to encapsualte message forms like Invite and Tell a Friend */
.message {
border: 5px solid #eee;
margin-bottom: 15px;
}
.message blockquote {
margin: 0;
border: 1px solid #aaa;
padding: 15px;
}
.standout-border {
border: 1px solid #8fc3f7;
padding: 6px;
}
.standout-background {
background-color: #c5dff9;
}
/* Sidebars floated to the right */
div.right-sidebar {
float: right;
width: 300px;
color: #000000;
background-color: #c5dff9;
border: 1px solid #8fc3f7;
margin: 10px;
padding: 10px;
}
div.ad-sidebar {
width: 300px;
float: right;
}
.textbutton {
color: #0000CC;
cursor: pointer;
}
/* Solid background headings */
h2.solid-neutral {
font-size: 14px;
font-family: Arial;
font-weight: bold;
background: #ededed url(/img/corner.gif) no-repeat 0 0;
margin: 0 0 8px 0;
padding: 5px 8px;
color: #222;
}
h2.solid-blue {
position: relative;
font-size: 14px;
font-family: Arial;
font-weight: bold;
background: #d7e7f7 url(/img/corner.gif) no-repeat 0 0;
margin: 0 0 8px 0;
padding: 5px 8px;
color: #222;
}
.solid-neutral {
background: #ededed;
}
input.bright {
background: url(/img/yellow_gradient.gif) repeat;
border: 1px solid #b48101;
color: #1f3368;
font-weight: bold;
}
.helper {
font-size: 0.8em;
color: #666;
}
.rounded-box {
background: no-repeat;
zoom: 1;
}
.rounded-box .rounded-box-tr {
background: 100% 0 no-repeat;
}
.rounded-box .rounded-box-bl {
background: 0 100% no-repeat;
}
.rounded-box .rounded-box-br {
background: 100% 100% no-repeat;
padding: 2px; /* border width */
}
.rounded-box .rounded-box-content {
padding: 10px;
}
.ljad h4
{
text-align: left;
font-size: 10px;
font-weight: normal;
text-transform: uppercase;
color: #444;
margin: 0;
}
.ljad a
{
font-size: 10px;
border: 0;
}
.ljad img { border: 0; }
.ljadskyscraper
{
width: 160px;
}
.ljadleaderboard, .ljadleaderboard-top, .ljadleaderboard-bottom
{
width: 728px;
margin-left: auto;
margin-right: auto;
}
.ljadsmrect
{
width: 185px;
}
.ljadmedrect
{
width: 300px;
}
.ljad5linkunit
{
width: 728px;
margin-left: auto;
margin-right: auto;
}
.ljadbadge
{
width: 160px;
margin-bottom: 15px;
}
.ljadentrybox
{
width: 468px;
}
/* Styling for search ads */
.lj_inactive_ad {
display: none;
}
.lj_content_ad {
border: 1px solid #FFD63F;
width: 580px;
overflow: hidden;
text-decoration: none;
font-size: 12px;
padding: 5px;
padding-bottom: 0;
}
.lj_content_ad .ad_header {
font-weight: bold;
}
.lj_content_ad .ad_text,
.lj_content_ad .ad_url {
font-size: 11px;
}
/* Avertising for sup's user
----------------------------- */
.adv {
position: relative;
overflow: hidden;
zoom:1;
min-width: 400px;
clear: both;
background: #fff;
border: 1px solid #808080;
padding: 12px;
text-align: left !important;
}
.adv-box {
overflow: hidden;
height: 250px;
width: 100%;
min-width: 400px;
}
* HTML .adv-box {
width:expression(parentNode.clientWidth < 530 ? "400px" : "100%");}
/* HTML .adv-box {
width:expression(document.documentElement.clientWidth < 793 ? "400px" : "100%");}
* HTML #adv_digitalmult .adv-box {
width:expression(document.documentElement.clientWidth < 944 ? "300px" : "100%");}
*/
/* Banner */
.adv-box-banner {
float: left;
width: 313px;
height: 250px;
text-align: left;
}
/*text banner*/
.adv-box-text {
float: left;
overflow: visible;
width: 100%;
min-width: 530px;
margin-right: -313px;
padding-top: 30px;
}
.adv-box-text-in {
margin-right: 313px;
}
.body-adv-box {
zoom:1;
}
/* min-width for ie6 */
* HTML .mw {
overflow:hidden;
width:530px;
height:0;
font-size: 0;
line-height: 0;
}
/* Advertising header
------------------------------*/
H3.h-adv-box {
padding: 3px 7px 5px 7px !important;
margin: 0 !important;
border: 0 !important;
background: #a92242 !important;
text-transform: uppercase;
font: 10px/1 Verdana, Arial, sans-serif;
color: #FFF;
}
H3.h-adv-box A {
border: 0 !important;
text-decoration: none !important;
font: 10px/1 Verdana, Arial, sans-serif !important;
color: #FFF !important;
background: none !important;
}
H3.h-adv-box A:hover {
border: 0 !important;
text-decoration: underline !important;
color: #FFF !important;
}
.adv H3.h-adv-box {
position: absolute;
right: -1px;
top: 12px;
float: right;
z-index: 100;
border: 0 !important;
}/* Define text color and typography */
html, body {
height: 100%;
}
body {
color: #000000;
background-color: #fff;
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
margin: 0;
padding: 0;
min-width: 840px;
width: 100%;
}
a:link {
color: #00C; background-color: transparent;
}
a:visited {
color: #306; background-color: transparent;
}
a:active {
color: #F60; background-color: transparent;
}
h1 {
font-family: Arial, Verdana, Helvetica, sans-serif;
font-weight: bold;
color: #036; background-color: transparent;
margin: 0 0 0.4em 0; padding: 0;
}
h1 a {
font-weight: normal;
}
h2 {
font-weight: normal;
color: #036;
margin: 0.3em 0 0.1em 0; padding: 0;
}
h3 {
color: #024; background-color: transparent;
font-style: italic;
margin: 0.2em 0 0.2em 0; padding: 0;
}
p {
margin: 0.75em 0;
}
body, dd, dt, th, td, p, div, li, pre, code, kbd { font-size: small; }
h3 { font-size: medium; }
h2 { font-size: large; }
h1 { font-size: x-large; }
li { margin-left: 0px; }
h1.title {
font-family: Arial, Verdana, Helvetica, sans-serif;
}
#NavigationWelcomeLogo {
position: relative;
top: 0;
left: 0;
font-size: 0.8em;
color: #444;
height: 6.11em;
margin: 0;
padding: 0;
}
#NavigationWelcomeLogo a {
color: #444;
font-weight: 700;
}
#Content pre {
line-height: 1em;
}
/* Utility CSS */
.clear {
clear: both;
margin: 0 -1px -1px 0;
border: 0;
padding: 0;
width: 1px;
height: 1px;
font-size: 0;
line-height: 0%;
}
.hide {
display: none;
}
hr {
border: 0;
width: 100%;
color: #369; background-color: #369;
height: 2px;
}
table.edged {
border: 2px solid #c5dff9;
}
table.edged td {
border: 1px solid #8fc3f7;;
}
.standout {
text-align: center;
}
.standout .container {
color: #000; background-color: #c5dff9 !important;
border: 1px solid #8fc3f7;
padding: 3px;
/* margin shorthand isn't recognized by IE5/Mac */
margin-top: auto; margin-bottom: auto;
margin-left: auto; margin-right: auto;
width: auto;
text-align: left;
}
.standout span.container {
padding: 8px 7px !important;
display: inline-block;
}
.errorbar {
color: #000;
font: 12px Verdana, Arial, Sans-Serif;
background-color: #FFEEEE;
background-repeat: repeat-x;
border: 1px solid #FF9999;
padding: 8px;
margin-top: auto; margin-bottom: 5px;
margin-left: auto; margin-right: auto;
width: auto;
text-align: left;
}
.warningbar {
color: #000;
font: 12px Verdana, Arial, Sans-Serif;
background-color: #FFFFDD;
background-repeat: repeat-x;
border: 1px solid #FFCC33;
padding: 8px;
margin-top: auto; margin-bottom: 5px;
margin-left: auto; margin-right: auto;
width: auto;
text-align: left;
}
.de {
color: #909090; background-color: #ffffff;
}
/* layout */
.talk-comment {
margin-top: 1em;
margin-bottom: 0px;
}
#commenttext { width: 100%; }
/* Form Items */
.formitem {
color: #343434;
font-size: 1em;
}
.formnumber {
font-weight: bold;
margin-top: 1.8em;
font-size: .9em;
}
.formitemName {
font-weight: bold;
font-size: .9em;
margin-top: 1.8em;
}
.formitemDesc {
margin-top: .4em;
margin-bottom: .4em;
color: #505050;
}
.formitemNote {
color: #da6320;
font-size: .9em;
margin-top: .4em;
margin-bottom: .4em;
}
.formitemFlag {
color: #CE0000;
font-size: .9em;
margin-top: .4em;
margin-bottom: .4em;
}
.borderedtable {
border: solid 1px black;
}
/* the top of the borderedtable, use th tags for header columns */
.borderedtable th {
background-color: #dddddd;
border-bottom: solid 1px black;
padding-left: 10px;
padding-right: 10px;
white-space: nowrap;
}
.userslist-table {
border: 1px solid #ddd;
}
.userslist-table TH {
background: #ddd;
padding: 2px 10px;
white-space: nowrap;
text-align:left;
}
.userslist-table TD {
padding: 3px 10px;
}
/* Extended.css */
.hide {
display: none;
}
div.centered {
text-align: center;
width: 100%;
}
.lesstop {
margin-top: 2px;
}
.de {
color: #909090; background-color: #ffffff;
}
#ljbreadcrumbs {
text-align: left;
white-space: nowrap;
font: 11px Arial, Geneva, Helvetica, sans-serif;
margin-left: 0;
margin-bottom: 1em;
}
/* layout */
#content pre {
line-height: 1.1em;
font-size: 1.1em;
}
#Comments q {
font-style: italic;
}
div.transparentpng { display: none; margin: 0; padding: 0; }
img.transparentpng { border: 0; }
/* Ad wrapper styles (for ads printed in BML directly) */
.ljadwrapper-app-full-width
{
margin-bottom: 1em;
text-align: center;
width: 100%;
}
.ljadwrapper-app-info-1column,
.ljadwrapper-app-func-1column,
.ljadwrapper-app-confirm,
.ljadwrapper-app-home-login,
.ljadwrapper-app-schools,
.ljadwrapper-search,
.ljadwrapper-journal-indiv-entry,
.ljadwrapper-journal-skyscraper,
.ljadwrapper-app-search-skyscraper
{
float: right;
margin-left: 2em;
margin-bottom: 1em;
display: table-cell;
}
.ljadwrapper-app-func-2column,
.ljadwrapper-app-info-2column,
.ljadwrapper-journal-userinfo
{
margin-top: 2em;
text-align: center;
width: 100%;
}
div.copyrighted {
font-size: smaller;
padding-bottom: 10px;
}
/* define general layout styles shared by Horizon and Vertigo */
#content {
position: relative;
top: 110px;
margin: 0;
margin-bottom: 120px;
padding: 0 25px 20px 25px;
text-align: left;
}
* html #content {
width: 92%;
}
#big-content-wrapper {
min-height: 100%;
height: auto !important;
height: 100%;
margin: 0 auto -165px; /* the bottom margin is the negative value of the footer's height */
}
#Userpic {
position: absolute;
top: 0;
left: 0;
z-index: 101;
width: 100px;
height: 100px;
background: url("/stc/horizon/topbar-bg.png") repeat-x #cbe4fd; /* gradient */
}
#defaultpic {
width: 100px;
height: 100px;
background-color: transparent;
background-position: center center;
background-repeat: no-repeat;
}
#Userpic img {
display: block;
vertical-align: middle;
border: 0;
}
#NoUserpic {
background-image: url("/stc/horizon/nouserpic-bg.png");
background-repeat: repeat-y;
height: 100%;
margin: 0;
padding: 0;
vertical-align: baseline;
}
#NoUserpic a span {
position: absolute;
top: 80px;
left: 0px;
font-size: .8em;
text-decoration: none;
color: #036;
cursor: pointer;
display: block;
width: 100px;
text-align: center;
margin: 0;
padding: 0;
}
#welcome {
color: #369;
}
#WelcomeLinks, #WelcomeLinks a {
line-height: 1em;
display: inline;
font-size: 11px;
}
#WelcomeLinks a, #WelcomeViewLinks a {
text-decoration: none;
}
#WelcomeLinks a:hover, #WelcomeViewLinks a:hover {
text-decoration: underline;
}
#WelcomeLinks img {
position: relative;
top: 3px;
}
#WelcomeViewLinks {
padding-top: 3px;
width: 500px;
}
#WelcomeViewLinks li {
font-size: 11px;
}
#WelcomeViewLinks li a {
padding: 5px 0;
line-height: 17px;
}
#Feedback {
position: absolute;
top: 0;
right: 26em;
margin: 0;
padding: 0;
}
#Feedback img {
margin: 0;
padding: 0;
border: 0;
}
.view {
display: inline;
list-style: none;
margin: 5px 0 0 0;
padding: 0;
}
.view li {
display: inline;
}
#Logo {
position: absolute;
top: 0px;
right: 5px;
padding: 0;
z-index: 200;
font-size: 1.1em !important;
}
#Logo img {
border: 0px;
}
#Logo .transparentpng { margin-bottom: .5em; border: 0; }
#LogoActions {
padding: 0;
margin: 0;
text-align: right;
width: 99%;
height: 1.4em;
background-color: #dfedfa;
color: #336699;
border: 1px solid #69c;
-moz-border-radius: .3em; /* Mozilla users get the cool rounded border */
border-radius: .3em; /* Any other compliant browser is free to show it to */
}
.Actions {
list-style-type: none;
margin: 0;
padding: 0;
}
.Actions li {
float: left;
display: inline;
width: 22%;
text-align: center;
white-space: nowrap;
}
.Actions a {
text-decoration: none;
margin: 0;
width: 100%;
text-transform: uppercase;
font-weight: bolder;
color: #369 !important;
}
#navigation {
position: absolute;
top: 0;
left: 0;
width: 100%;
min-width: 760px;
min-height: 100px;
height: 100px;
background: #cbe4fd url("/stc/horizon/topbar-bg.png") repeat-x 0 0;
font-family: Arial, Verdana, Helvetica, sans-serif;
margin: 0;
padding: 0;
z-index: 10;
}
#NavBar {
position: absolute;
bottom: 0;
left: 0;
width: 100%;
background: #3e5a8b;
}
#NavMenu {
display: block;
position: relative;
margin: 0 0 0 100px;
padding: 0;
border: 0;
/* font-size: 0.8em; */
list-style-type: none;
color: #fff;
width: auto;
}
* html #NavMenu {
width: 100%;
margin: 0;
left: 100px;
}
/* Needed for Safari to keep hover color correct */
#NavMenu li:hover > a {
color: #114577;
background: #CBE4FD;
}
.NavMenuSubNav ul {
list-style-type: none;
margin: 0;
padding: 0;
}
/* Hack to display elements above windowed controls like Flash objects */
.NavMenuSubNavBack {
position: absolute;
background: transparent;
z-index: -1;
width: 100%;
height: 100%;
height: expression(this.parentNode.clientHeight);
}
.NavMenuItem {
color: #fff;
cursor: pointer;
margin: 0;
padding: 0;
white-space: nowrap;
width: auto;
float: left;
display: inline;
z-index: 95;
padding: .5em .6em;
}
.NavMenuItem a, .NavMenuItem a:visited {
color: #fff;
font-weight: bold;
text-decoration: none;
display: block;
}
* html .NavMenuItem li a { display: inline-block; } /* Stupid IE6 hack to fix nav menu padding */
* html .NavMenuItem li a { display: block; } /* End stupid IE6 hack */
.NavMenuItem:hover {
color: #114577;
background-color: #CBE4FD;
background-image: url("/stc/horizon/toplevel-bg.gif");
}
.NavMenuItem a:hover, #Alpha {
background-color: #CBE4FD !important;
background-image: url("/stc/horizon/toplevel-bg.gif");
color: #114577;
}
#Alpha {
color: #114577;
}
/* Opera hack to hide anything using this class */
@media all and (min-width: 0px){
.NavMenuSubNavBack{ display: none;
}}
#welcome {
position: absolute;
top: 0;
left: 100px;
width: 30em;
margin: 0;
padding: 12px 0 0 10px;
}
#welcome a {
text-decoration: none;
color: #114577 !important;
}
#welcome h2 {
display: inline;
font-size: 1.75em;
margin: 0 5px 0 0;
padding: 0;
}
#welcome .ljuser img {
vertical-align: baseline !important;
margin-bottom: -1px;
}
#welcome .ljuser b {
font-weight: normal !important;
}
#NavMenuSearch {
display: block;
right: 0;
top: 0;
position: absolute;
margin: 2px 15px 0 0;
/* width: 40%;
text-align: right; */
}
* html #NavMenuSearch {
right: 100px;
}
#NavMenuSearch form {
padding: 3px 0px 0px 2px;
line-height: 17px;
}
#NavMenuSearch input,
#NavMenuSearch select {
margin-right: 0px;
font: normal 11px arial, helvetica, sans-serif;
}
/* #NavMenuSearch input#SearchText {
width: 70%;
} */
#footer, .push {
height: 165px;
}
#footer {
background-color: #fff;
border-top: 1px solid #CBE4FD;
padding-top: 2px;
margin: 0 15px;
}
#footer-links {
border-top: 1px solid #CBE4FD;
border-bottom: 1px solid #CBE4FD;
text-align: center;
padding: 0px 10px 15px 10px;
}
/*#footer-links-inner {
width: 760px;
margin-right: auto;
margin-left: auto;
}*/
#footer-links ul {
list-style: none;
margin: 0;
padding: 0;
/*width: 100px;*/
}
#footer-links table {
margin:0 auto;
border-collapse: collapse;
border: 0;
}
#footer-links table TD {
padding:10px 50px 0px 0;
text-align: left;
vertical-align: top;
}
#footer-links table TD.last {
padding-right: 0px;
}
/*#footer-links-inner ul#footer-links-col5 {
width: 150px;
} */
#footer-links ul li {
font-size: 11px;
text-align: left;
padding: 0;
white-space:nowrap;
}
#footer-links table td H3 {
font-size: 12px;
color: #333;
font-weight: bold;
padding: 3px 0;
font-style: normal;
margin-top: 0;
white-space:nowrap;
}
#footer-links table td H3#footer-links-getinvolved {
padding-top: 8px;
}
#footer-links ul li#footer-links-getinvolved {
padding-top: 8px;
}
#footer-links ul#footer-links-col6 li {
font-size: 10px;
white-space: nowrap;
}
#footer-links ul#footer-links-col6 select {
font-size: 11px;
}
#footer-links a {
color: #036;
text-decoration: none;
}
#footer-links a:hover {
text-decoration: underline;
}
#footer-links P.more_lj {
font-size: 11px;
font-weight: bold;
text-align: left;
padding:1px 0px 0px 0px;
margin: 0;
}
#footer-copyright {
font-size: 11px;
text-align: center;
margin-top: 5px;
padding-bottom: 5px;
}
/* Search Form Style Goes Here
-------------------------------------- */
/* Search Results
-------------------------------------- */
.search-result-wrap {
font-family: Arial, sans-serif;
}
.search-result {
float:left;
width:100%;
margin-right:-100%;
}
.search-result-in {
color: #333;
}
.search-result-in A {
color: #3333D6;
}
.search-result-aside {
float: right;
width: 250px;
margin-top: 90px;
}
.pages-list {
margin-bottom: 15px;
border-bottom: 3px solid #3E5A8B;
}
.pages-list:after {
content: ".";
display: block;
height: 0;
clear: both;
visibility: hidden;
}
.pages-list LI {
float: left;
line-height: 1.2em;
width: 18% !important;
margin-bottom: -3px;
padding: 0;
background: #69c;
text-align: center;
color: #fff;
border-bottom: 3px solid #3E5A8B;
white-space: nowrap;
overflow: hidden;
}
.pages-list LI.profiles {
width: 28% !important;
}
.pages-list LI A {
display: block;
padding: 5px;
color: #fff;
border-right: 2px solid #fff;
}
.pages-list LI A:visited {
color: #fff;
}
.pages-list LI STRONG {
display: block;
padding: 5px;
border-right: 2px solid #fff;
}
.pages-list .cur,
.pages-list .cur-last {
padding: 0;
background: #3e5a8b;
border-bottom: 3px solid #3E5A8B;
}
.pages-list .last,
.pages-list .cur-pre {
margin-right: 0;
background: #69c;
}
.pages-list .last A,
.pages-list .last STRONG,
.pages-list .cur-last STRONG {
border-right: none;
white-space: nowrap;
}
.search-result H1 {
margin: 0 0 0.4em 0;
padding: 0;
font: bold normal x-large Arial, sans-serif !important;
color: #036;
}
/* Paging
-------------------------------------- */
.paging DD UL UL A,
.paging DD UL UL SPAN,
.paging DD UL UL STRONG {
float:left;
padding:.1em .4em .1em;
text-decoration: none;
}
.paging DD UL UL A,
.paging DD UL UL STRONG {
border:solid 1px #CCC;
line-height:1;
color:#404040;
}
.paging DD UL UL A:hover {
background:#CCC;
}
.paging DD UL UL STRONG {
background:#829DBF;
border-color:#829DBF;
color:#FFF;
}
.tagged-list {
margin-left:40px;
position:relative;
padding-bottom:2em;
}
.tagged-list DT .ljuser .userpic {
position:absolute;
top:0;
right:100%;
margin-right:12px;
width:25px;
height:25px;
overflow:hidden;
}
.tagged-list DT .search-meta {
font-size: 0.846em;
}
.tagged-list DT .search-meta A {
font-size: 1em;
}
.tagged-list .loading .to-open,
.tagged-list .open .to-open,
.tagged-list .close .to-close {
display:none;
}
.tagged-list .load {
display:none;
}
.tagged-list .loading .load {
display:block;
}
.tagged-list .search-full {
display:none;
}
.tagged-list .open .search-full {
display:block;
}
.tagged-list .search-excerpt {
display:none;
}
.tagged-list .close .search-excerpt {
display:block;
}
.tagged-list BLOCKQUOTE {
line-height:1.3;
font-size: 1.077em;
}
.tagged-list BLOCKQUOTE P {
margin-bottom:1em;
}
.tagged-list BLOCKQUOTE B {
color:#000;
}
.tagged-list .details {
position:absolute;
top:0;
left:-29px;
width:16px;
height:16px;
cursor:pointer;
overflow:hidden;
text-indent:-9999px;
}
.tagged-list .to-close {
background:#AAA url(/lanzelot/img/ico/minus.gif) 50% 50% no-repeat;
}
.tagged-list .to-open {
background:#AAA url(/lanzelot/img/ico/plus.gif) 50% 50% no-repeat;
}
.tagged-list .open .search-full {
border-left:3px double #88B9D8;
padding-left:4px;
margin-right:-7px;
left:-7px;
position:relative;
}
.search-result-extra .ico IMG,
.tagged-list .ico IMG {
border:none;
vertical-align: text-bottom;
}
.search-result-extra .ljuser,
.tagged-list .ljuser {
white-space:nowrap;
word-spacing:-.1em;
margin-right:.1em;
}
.search-result-extra .header {
background: none;
padding: 0;
margin: 0;
font-size:0.769em;
border-bottom: 1px solid #959595;
color:#959595;
text-transform: uppercase;
font-style:normal;
font-weight:normal;
}
.search-result-extra A {
color: #3333D6;
}
.search-result-extra .content {
background: none;
padding: 0;
}
.search-result-extra .content:after {
content: ".";
display: block;
height: 0;
clear: both;
visibility: hidden;
}
.search-result-extra .content .user-list {
margin: 0;
}
.search-result-extra .user-list .vcard {
padding: 0;
}
.search-result-extra P A {
font-size: 0.923em;
}
/* FAQ Search */
.faq-list {
margin-left:0;
}
.faq-list P BIG {
font-weight:normal;
}
.faq-list P BIG B {
font-style:italic;
}
.faq-list P SMALL A:link,
.faq-list P SMALL A:visited {
font-size: 1.073em;
}
/* FOR IE7 */
.search-type,
.pages-list,
.search-precise,
.paging {
zoom: 1;
}
/* Fix jumping floats in tabs */
*+html .pages-list .last,
*+html .pages-list .cur-last {
margin-right: -2px;
}
*+html .pages-list LI A {
overflow: hidden;
}
*+html .tagged-list LI {
zoom:1;
}
.basic .search-submit BUTTON {
top:0;
}
.indent_sm {
margin-left: 8px;
}
.friendsfinder {
font-family: Verdana, arial, sans-serif !important;
}
.friendsfinder .rounded-box-content{
padding: 30px 25px 40px 25px;
}
.scheme-feedback {
position: absolute;
top: 9px;
right: 25px;
}
.scheme-feedback a {
padding-left: 35px;
background: url(/img/beta.gif) no-repeat 0 50%;
}
.Actions a {
font-size: .9em;
}
.NavMenuSubNav {
position: absolute;
display: none;
list-style: none;
padding: 0;
margin: 6.5px 0 0 -7px;
background: #CBE4FD;
color: #114577;
width: 15em;
z-index: 200;
}
html>body .NavMenuSubNav {
border-top: none;
}
.NavMenuSubNav li {
margin: 0;
background: #CBE4FD;
}
.NavMenuSubNav li.disabled {
background-color: #CBE4FD;
}
.NavMenuSubNav li.disabled, .NavMenuSubNav li.disabled a:hover {
background-image: url(/stc/horizon/upgrade-paid-icon.gif);
background-position: 95% 50%;
background-repeat: no-repeat;
}
.NavMenuSubNav li a, .NavMenuSubNav li a:visited {
color: #036;
font-weight: bold;
font-size: .95em;
text-decoration: none;
padding: 5px 0 5px 5px;
}
.NavMenuSubNav li.disabled a {
color: #999;
}
.NavMenuSubNav li a:hover {
color: #fff !important;
background-image: none;
font-weight: bold !important;
background: #3e5a8b !important;
}
.NavMenuSubNav li.disabled a:hover {
color: #000;
}
.NavMenuSubNav a, .NavMenuSubNav a:visited {
color: #036;
font-weight: normal !important;
text-decoration: underline;
}
------------JxuqZ6nLgOmBPtWaPDKENk
Content-Disposition: inline; filename=6268258.gif
Content-Type: image/gif; name=6268258.gif
Content-Location: http://l-userpic.livejournal.com/78706801/6268258
Content-Transfer-Encoding: Base64
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
------------JxuqZ6nLgOmBPtWaPDKENk
Content-Disposition: inline; filename=userinfo.gif
Content-Type: image/gif; name=userinfo.gif
Content-Location: http://l-stat.livejournal.com/img/userinfo.gif
Content-Transfer-Encoding: Base64
R0lGODlhEQARAMQbAAAAAAAAawAIlAAI3ggIYwgI7wgI/wgQxhAQEBAY9xgYUiEh
ISkpKTExMTExrTk5zkJCQlJSjFpapXt7e4SEhKWcnM7GvdbOxufezvfv3v+EGAAA
AAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQFCgAbACwAAAAAEQAR
AAAFbOAmjmRpikzKnCVjXVm2shtTWXE8nzae76ZeTkYT/oq3IbCVjF2WJQgsc4HQ
UBMMZgItARAUCgIAOC0AAcOAPDAYBIDFaCFwFNzrgWY/OMg3dA9uCRIAERKIEhFl
gAwKAQEEDQANlZaMVyYhAAA7
------------JxuqZ6nLgOmBPtWaPDKENk
Content-Disposition: inline; filename=community.gif
Content-Type: image/gif; name=community.gif
Content-Location: http://l-stat.livejournal.com/img/community.gif
Content-Transfer-Encoding: Base64
R0lGODlhEAAQALMAACcdGFM/N39gUoyGgu4pIf88J+t9M9KHaf/SFP/xBv/KU//N
rv/m3//38///7////yH5BAEAAA8ALAAAAAAQABAAAARQ8Mn5jKV4ijEEyNjWfdlR
SBwyBNIpEYUxIQkyGQXxwORD26jcQ1DocQSTQYG1oRwpANZjgKFCM5bsBTQteL1I
bodABoS5G4KH6+ywq++4JAIAOw==
------------JxuqZ6nLgOmBPtWaPDKENk
Content-Disposition: inline; filename=btn_prev.gif
Content-Type: image/gif; name=btn_prev.gif
Content-Location: http://l-stat.livejournal.com/img/btn_prev.gif
Content-Transfer-Encoding: Base64
R0lGODlhFgAUAOYAAMzMzISEhP///7Ozs7Kysrm5uRgnAK+vrzMzM5mZmVaPAA0X
ALGxsXZ6cPH36BwuAChDAVGGADNmACdCAGZmZk6BAFhZV+Tv1IiIiHh4eBUkAMbc
pomKhg8ZALW1tXd/ajJUAEJEQA4XAFOKADMzAGaZM0Z0ALCwsOXv1tnqwIeHhxYl
AJa8XtbgxjBQAAwUARkqAEh3ABstAHl5eVVWVImJib29vfP47Ly8vJK8VG58V2ac
Fri4uB4yAE1OTLfUjKqqqkNMNtTmuEx+AM/lrH5/exkdEpnMZoCOax0iFmaZAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAAWABQAAAe1gAKCg4SFhgECAIqLjI2N
iI6RkZCSlYqUlgcJA4+JlQQqFDofBYyYjQMYFEUtO0EEpp6MCRk0HDcoRy4IsIuY
OAkUFgAOFxssQzIInL6yJ0hEKUI/OSVKEjDLsYsFDRASJhEKCiMSBtrNjB41CAYk
EjEVEivol7KLQBQvBhMSIBr1AJziliDEggc9OvDaJonBDCMLRCBgwFCSjQQ+klDg
UbHSgAQHOlmyNHCkqQAoU6pcyTJAIAA7
------------JxuqZ6nLgOmBPtWaPDKENk
Content-Disposition: inline; filename=memadd.gif
Content-Type: image/gif; name=memadd.gif
Content-Location: http://l-stat.livejournal.com/img/memadd.gif
Content-Transfer-Encoding: Base64
R0lGODlhFgAUANUAAMzMzP///4SEhAAAAEZGRru7u0RERH19fbq6ure3t2ZmZhwA
ABoAAKwAAJkAAEJCQmYAAHx8fLW1tRcAAP/m5v/MzE4AABgAABkAAElJSe+3tzMA
AMchIdpQUOydnbcHB8hFRU8AAKmpqYcAAMxmZqkAAJmZmbgHB95tbcBJSbUtLYoA
ALULC+Genu93d+91daEREdFDQ64SEq4AAN93d68tLR4AAFIAAEwAAMwzMwAAAAAA
AAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAAWABQAAAbHwIBwSCwaBQEAYDBQOp9Q
JVLJjFqdSKa2eYVmt9wuNrkMJyKKAwKAOCgiCSm5yjYEKK+MKHOnGdZTTwl2AR4x
HQNCLSkOBgCBTgcVFSQfLCAalA4wIxAHkEoKLignDQ0yKjUOqxAbCqAACjkcMw2r
t6sWE69kkbcluKwYE5+9SoMQEMEOEBcMBgmwAAUEN8q3zQwEBY/GTtQWECvMGAvb
clfUOBAhDObc6OkEGzbvT9JPCA8LD2v33lEkmJAQRYDBgwgTKjQYBAA7
------------JxuqZ6nLgOmBPtWaPDKENk
Content-Disposition: inline; filename=btn_tellfriend.gif
Content-Type: image/gif; name=btn_tellfriend.gif
Content-Location: http://l-stat.livejournal.com/img/btn_tellfriend.gif
Content-Transfer-Encoding: Base64
R0lGODlhFgAUAMIAAP///4SEhMzMzAAAAP8AAMvLywAAAAAAACwAAAAAFgAUAAAD
Vwi63B5AyElrhTZnrLvkngaGFjScwqmu7CCAweDMLqfOC0EAdfTJi4AQAtDxXqsY
rtGbKIMAIfMVWS0ZzV9rm30Nv2Dhx0cSFCgjzblELqPb7k94Tg8kAAA7
------------JxuqZ6nLgOmBPtWaPDKENk
Content-Disposition: inline; filename=btn_track.gif
Content-Type: image/gif; name=btn_track.gif
Content-Location: http://l-stat.livejournal.com/img/btn_track.gif
Content-Transfer-Encoding: Base64
R0lGODlhFgAUAOYAAKChoWtra6+vr8vKyzY2NsnIyaytrFZWVv7+/rOzso6OjnZ2
dmRkZMrKynh4eDs7O2VmZkVFRpiYmFFRUY+PkM3NzX5+fVxdXV9gYGlpaUNCQlVU
VJ6fnlNTU1xbW3p5elBRUGxsbYyNjHt7e0tLSkxNTIiHh6ampqOjpKysrG9vbzg4
Nzg3OMfHxzg4OMnJyVFSUkFBQV9eXkRFRGJiYlJTUmxtbLa1touLi4mJiXNyc1lZ
WVVUVVdXV4SEhGZmZv///8zMzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAAWABQAAAe0gECCg4IIhIeDPkBBjI1B
DQ0VjpNBipRBPxAQDAyXlYuOPz8DBaUFMheUlo0/Ei8tA7EKOCYbk6uNNBgUIgoK
OQc1qqCOHjsHyB0glz4IlD03CdIWJMzOkxMC2gYOEdaTPNkG490aw44wAikfC+06
ACEPt8RBJSMnKAD6HAEZK/OTZsRQYSOAQRYEzlF64IKAQ0+4Jv0AEMDTJ08TK0Kk
F4qixYiTJFi8OPKjj5MoU6pc6SMQADs=
------------JxuqZ6nLgOmBPtWaPDKENk
Content-Disposition: inline; filename=button-flag.gif
Content-Type: image/gif; name=button-flag.gif
Content-Location: http://l-stat.livejournal.com/img/button-flag.gif
Content-Transfer-Encoding: Base64
R0lGODlhFgAUALMAAM7OzoWFhf///+dVBPaODf3IA5GRkdPT0/mvfnl5eQAAAAAA
AAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAAWABQAAARaUMhJqw0C6M17x14Ygppx
iGO2mQQxvAOScslRFK0Lyxu52rgWLNZTbWq3oO7F862SuWHTeLRFd8WQAZX11LgA
J2fLFVfL1A5ZZD6iUesZmJ2e9wL4vH7PD0QAADs=
------------JxuqZ6nLgOmBPtWaPDKENk
Content-Disposition: inline; filename=btn_next.gif
Content-Type: image/gif; name=btn_next.gif
Content-Location: http://l-stat.livejournal.com/img/btn_next.gif
Content-Transfer-Encoding: Base64
R0lGODlhFgAUAOYAAMzMzISEhP///7Ozs7Kysrm5uRUjALGxsRQiAFJbRZmZma+v
r2mjEJnMZoK5LmZmM4y4S5C8UBIdAGaZAJC/SpXET4eHh4iIiE1bOEJDQFFbQmZm
ZrW1ta3Mfnl5eVVbTJG+Tqqqqg8YADNmAH6tOG6gJLy8vMzMmVFaQzJTAEtUPImJ
ib/ekE2AAAwSAXh4eHWqJoi9OFWOAJLATVdsODMzALnbhIyRhLi4uJmZZlFZRLCw
sAwTARYlABYkAL29vYK2NkFKNOn12DRWAImMhRofEk5PTE1RR0+EAB0wADMzM5XG
SiQuFkpZM2FnVhMgAIe6OilFAFNcRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAAWABQAAAe5gAKCg4SFhgECAIqLjI2N
iI6RkZCSlYqUiwMKC5aXiYsFRDdOFgSWmAAEG0InNB8XA5KoBCg2LA0ND0cvCo6o
AxoVSw4UDR05QRsKJou/UjMxExMwJCVIIxg7zZ+KAwkgUNItKQYILhsF24zeEUAy
I0kGEkorHIy/OhATUT0IPBshfHFLpYJBDR8iMihIJ5DRgSZDnhTxcKASKhwbmBhR
8OPUQAALFMTqhKrTo48mmwVYybKly5cBAgEAOw==
------------JxuqZ6nLgOmBPtWaPDKENk
Content-Disposition: inline; filename=dot.gif
Content-Type: image/gif; name=dot.gif
Content-Location: http://l-stat.livejournal.com/img/dot.gif
Content-Transfer-Encoding: Base64
R0lGODlhAQABAPcAAP+EAP+MCP+MEP+UGP+cIf+cKf+lMf+tQv+tSv+1Uv+1Wv+9
Y//Ga//Ge//OhP/WjP/WlP/enP/npf/nrf/vvf/3xv/3zv//3v//////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
/////////////////yH5BAEAABcALAAAAAABAAEAAAgEAC8EBAA7
------------JxuqZ6nLgOmBPtWaPDKENk
Content-Disposition: inline; filename=14948722.jpeg
Content-Type: image/jpeg; name=14948722.jpeg
Content-Location: http://l-userpic.livejournal.com/79740677/14948722
Content-Transfer-Encoding: Base64
/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoH
BwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQME
BAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU
FBQUFBQUFBQUFBQUFBT/wAARCABkAGQDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEA
AAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIh
MUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6
Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZ
mqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx
8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREA
AgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAV
YnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hp
anN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPE
xcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD9
QKKKK/OjtCs7xD4j0zwlo13q2s39vpml2kZluLy7lWOKJB1LMxAArhfib8Y4fCGs
WfhfQbF/Evj3UIDc2egwlk2wbxGbm4kwRBArsAXbk4IRWORXJX3wEuvEOu+GtY+I
PjC58T6zBq4vYLLyvI0q3ZBLIkdvagkBlVVHmzNK/wAjEMpbjRQsrsa13NoftKaV
4ktlb4f+HPEHxEecypbXWlWLW+mySJuB/wBOuPLgKbkZS8bScjABOAbdh4u+LWpT
O6fDfw5p8QA41LxdIruec4EVjKMDjqQeeldZomraxd+MvEFjdaYIdFtBCLK83ZMz
FA0gIJ5wWAHAxg9c8dKrKw+XBHtTbS0sSebXPiP4r2iPM3gPwpOqDJhs/F1w0jey
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
------------JxuqZ6nLgOmBPtWaPDKENk
Content-Disposition: inline; filename=6268258.jpeg
Content-Type: image/jpeg; name=6268258.jpeg
Content-Location: http://l-userpic.livejournal.com/78706977/6268258
Content-Transfer-Encoding: Base64
/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB
AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/2wBDAQEB
AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB
AQEBAQEBAQEBAQEBAQH/wAARCABkAGMDASIAAhEBAxEB/8QAHgAAAQQCAwEAAAAA
AAAAAAAACAAGBwkEBQIDCgH/xAA3EAACAQMEAgIBAwMCBQMFAAABAgMEBREGBxIh
AAgTMSIJFEEVIzJRYRcYM0JxFjWBOENSkdH/xAAdAQABBQEAAwAAAAAAAAAAAAAG
BAUHCAkDAQIK/8QAPBEAAgEDAwMCBAMFBAsAAAAAAQIDBAURBhIhABMxByIUQVFh
IyQyFRZCcZFSgbHRCDQ1U1VygrLB8PH/2gAMAwEAAhEDEQA/AGX7fe5Xtlpz2z9o
7Bp/2d3+sNg0/wCxO9lksdks+7uvbdarRZ7XuVqahttqtVuo9QRUdDb7fSQQ0lFQ
08UFPS0sMcEMcaRhCNz+8vuYzcv+bH2RVBjAO9e468mweIAGpMnshmAOB+Ib8R3q
/duqEXuP7bPI6Kg9md+VY5ChF/4qaqLMT95CgKx7IP8As2SGNy1E7Ew0AZlV2JlH
HA45YunI8WJjHRyrcnxgk+Z+3CrvM14uaw3G4hVuNYpPx1UkcaiqkwBiQAEDACj5
Y+XX0faXsWhKbR2kparS2l5JZNM2JyHsFqlnqJWtlGSWLUjs7OSzM5JOfLZJPRpy
++vuLDmOX219jlkGCwXevclyASOzx1GzKACSQx6GAckZOFUe/XuXHhofbD2RkLdd
73bjKo7AJHPUoH1g4AUgn67yAYlq/wBuJauqmAHHmxk7C4HKQgvmVfy4r+PJR/uP
NWNUWurhIhnpqkZcIC/BpXj6PE5aN/zYLgoBno/RAURi8N7luV2lVcBytZVlQSBw
SJfPn+IHyckdKqmn0HHiKbS2iqOaRWanhmslkSpeNGC5VWomD+5gDtiJG5V5PR8D
9QP3MjDGT2s9klK4yDvbuM+CDhskak5D7H8Efx/53lF76e5NZGJaf2z9i5iMBlXe
rcU8WP2SP/UWD/tkBSfoH78rduN/prbTRTVUWKCpdaeYZx8DyHgjZXMiqZD/ANSF
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
------------JxuqZ6nLgOmBPtWaPDKENk
Content-Disposition: inline; filename=3581354.png
Content-Type: image/png; name=3581354.png
Content-Location: http://l-userpic.livejournal.com/39647446/3581354
Content-Transfer-Encoding: Base64
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
AEisAoBlEv2fL699H9ZvfOZZImPII0xZImG9tuVbjio1CVkIIJIJB6A9cO0wjiTw
QshTyuVPPmm1av5hZ2Px4EhqPHIaB8AhMQChdBEojVZijIdGChlTT6VzXSeybK/f
tRbvLJ8ZX0gj0e3t5vOaNpmJBjCbGZLZtKQc9e1wYAd5VM2OHdzYaNR2C4VSiLXd
llXz/YhqCoZBIAnVu3Y3lVI++ZEzuVzl3IWnfvonfyaKRUrToyCMIY+kzGAylJJn
F6ZkTLjifOiTn3jl9bUvf/mrKZ2ZFGVVyhDGSIooIDBWCNQVjRIFMYRVwhFXGFWo
4idSCJkxtZ//8p0/F7MuzGGCmcIAwW4Yh70uhogShglllEkeKgrRdFVVCBSR5IT7
/s7q3tjYSGZ0zAdBfXsjbaAaYLWAPXzxzMMffPjJ554oFc1U3lDTlOnELGYfe+rx
maNHjh5fuLX8wB30SuW8MTM5cex4aagiAeyEbif2FTOlZzOZaraxUW9tdEZGJ1at
znbb2gv9tKZNAWhGgymdFRHUVc0XotfuTha1nue9emsVCJlJwtO51KnxcQSTrKKo
SSwisbZTH5kaub+y/fIr1wyCcxpTRMSQoFhgKCDgjFAAEeAAcBknSSwTCQGEKEkE
pIypzNDZq/cOv586xHFCKJRcDlzX8UPBDUShhIDHEY9DpCpYVQxCdIxy5XzfQe1O
28yl9u+vpsvlhx95dFnVd2/f90T2Z3/+H09OGW9+5WvfefWdpa0Db+D3Bz2hkiCW
heI7+ZRxbH78qRfOqVLABISIXfnaFdxu93rufixDylKYjefomcfm1Qi0E75Zq3tC
4SS+QLVTMhyd0+rKkVEZBgeH232wmijX6+7OwcFsJjWS0YkkJ8qa4/przUMfehMj
I8xNSSmqI6ofuqXi0I/+0Ed2NtZqa+vZdIoQBEBMCJKS6Zrp+4E/cIVIeMxVxBAE
AnKsqUJIACFA3y13igB4ACiEKAQhEfEgpEJywFzPVVSq6XoSh4IoQFESICWCimEY
WAQy/UM/9gPXrly/88r1t3b6J59+PJ8Z/ZFP/9TN1e987he+unlndy+MHIB6IMlk
c+mIMAmidlDbtzYWl888PD1/empp+X5rsenY0Ww176tJgmVpeLK2X7es3jzkicAe
ofU4SMXyQjbzg2eO+4O78lTyhZf2fuzcyMXh3FPZs33z2D/7V7+5t9U9dVxktWT1
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
------------JxuqZ6nLgOmBPtWaPDKENk
Content-Disposition: inline; filename=btn_edit.gif
Content-Type: image/gif; name=btn_edit.gif
Content-Location: http://l-stat.livejournal.com/img/btn_edit.gif
Content-Transfer-Encoding: Base64
R0lGODdhFgAUAKUAAP///4SEhMbGxgAxY3tac4xjezlSe4Rje1JzlAgxY0JjhEpr
jDlrnBhKhDFSexA5a1qMxqXe/5zO/yFShClalFqUxpzW/6XW/yFCa3Ol3kp7tUqE
tSlSjBhKe2uc1mul1lKEtSFSjHu153u17wAhWmucznOl1kJ7tUpje4yMhLWljIyE
exBCe1qUznOEjP/WnP/enN69lEqMxoyMjP/OnHt7e+fGlPfOnP//////////////
/////////////////ywAAAAAFgAUAAAGoUCAcEgsGgMAgXLJbDaRzIF04HRClQNC
wSCtMq/ZAyKZoHoF4INCuGA0zFWwQ/mARCQT+DMp6DooFRYXeHpLV30YFBkaGxKD
HIVofFgdHh8aII4SIYWHWA2WjBIRFhR6np+WGxoiIxUkcKiUJSYnKCkqK7GTTQMs
Hi0uLzAxu2e+MjMvNC/GxwM1Ni83XZJnWFNTSrLPZtzXhgHi4+Tl5gFBADs=
------------JxuqZ6nLgOmBPtWaPDKENk
Content-Disposition: inline; filename=btn_del.gif
Content-Type: image/gif; name=btn_del.gif
Content-Location: http://l-stat.livejournal.com/img/btn_del.gif
Content-Transfer-Encoding: Base64
R0lGODlhFgAUAPcAAIQAAISEhMbGxv//////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
/////////////////ywAAAAAFgAUAAAIcAAHCBxIsKDBAAMEKFzIsGFDhA4jRoQo
saJCigIAAEgYUSNHARg1emw4ciHGjCI/ljT5cWHKjC1ZdhS5cWJMlysf3kT50uFJ
hS9zXozZE2XMk0WBHm2ZVCnDnzU7fvxpUWfVilSvXgzAtavXr2ADBAQAOw==
------------JxuqZ6nLgOmBPtWaPDKENk
Content-Disposition: inline; filename=paid.gif
Content-Type: image/gif; name=paid.gif
Content-Location: http://l-stat.livejournal.com/img/paid.gif
Content-Transfer-Encoding: Base64
R0lGODlhEAAQANUAAP/MAP7LAPvIAPrHAPPAAO67AOy5AOazAOGuAOCtAN2qANuo
ANmmANWiAM6bAM2aAMuYAMqXAMeUAMOQAMGOAMCNAL+MAL6LAL2KALyJALuIALqH
ALeEALWCALOAALJ/ALF+ALB9AK57AK16AKt4AKl2AKd0AKZzAKVyAKNwAKFuAJto
AP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAACH5BAEAACwALAAAAAAQABAAAAZqQJZwyLIQj8hUCMncODzM
5MBQig4/CgBAgjlONKCUKqvdrkye7uaRIJTfgMKCM2FxGvB3QEMZehZ5WhQVRyEI
eREZSBoQeR9MHQx5F31HIwcCDSeGABAaSCgOKhxCISQMHUgqG0gdIlawQQA7
------------JxuqZ6nLgOmBPtWaPDKENk
Content-Disposition: inline; filename=logo.gif
Content-Type: image/gif; name=logo.gif
Content-Location: http://l-stat.livejournal.com/horizon/logo.gif
Content-Transfer-Encoding: Base64
R0lGODlh4QBGAOYAABgrYnyawcfY6pS02kJZievz+lp3pCM3azlRgrfS66i606HC
5GmJtXSiyo2t1HeUvTJJe/X4/PvQnpW53mmawixCdktllcXb8G6exoGs0klMcLHN
5KXC2qzM64y02ePs9f3+/9Tk8//XofD2/NSwlMyWkOPu+WSUvZJ3gtnm867K4X6q
0aaIhndpfIinzZzB43ekzIqy1maCr9/p8yc8cHGNuLbF28zf8t3r+WJ8qFNtmxEn
YPr8/aXF55Ssy1dxnvf6/X6YupO74Jq+4l9adV+GsZO21oSw2dPf7ebw+Z6+4p61
0UNhkqjF3WN2nenx+Nrj7nunzuju9Uxrmpe83YyrzqzI36fJ6Y+33b+ijIFifd65
loGexoew1YGu126gx//fo0dfjjpkmDZAbb/X7r/N4anH4gcgXHGgyG6awmmWwGaX
v2ycxIOiypm64E9ol2iYwGubw2ucw2ybxICl0I+Bg5uzzoqfvtXm932Qsnyhxxww
ZcLN34WhxB8zaP///yH5BAEAAH8ALAAAAADhAEYAAAf/gH+Cg4SFhoeIiYqLjI2O
j5CRkpOUlZaXmJmam5ydnp+goaKjpKWmp6ipqqusra6vsLGys7S1tre4glUBDDV6
ucDBrS5MCBAQCHfCy8yhegQHADsAAHs0zdjZlwY0O3tjLS0afgAVS5FHXupe2u25
P3s7GiwlKER+03sIjlFoaGwUAsbB0CDKCncIYeWQRqQECw1nzhBwgmAPgCmJVjTA
QGENBTYYQsahAKckhS9dEqpU1a2hlnhhFEiREgDCnj15DGXgKKeglyOEsHjpFxAO
hQYrk5IKI6+ElmphBICYCuVHNBpVBkVhwwaGIywN4hjFoLTsp24otOzwY0HGnQgj
/xQ4OZAPwZEVcb5MmsCRAhqzgDMVATBGywE/bxgozqNjx5kKOsLcZOJV0bpEaAIi
Dcx5UhFrYwAQ6MVA8pkxDOxY4UBgLQNEG8WWHFjQUN8JnXNDokGtQpEaRQjEI2Bn
w2oVPirsgDDoRT8MaAwemZ5BY8A5GQhREbtZt3dFOW5CqMGAyZ4DyOyo4MBexQOY
XTKggYGFUcC/g2BQiPO9fyILABwwhQHRTJEGAgRw0AR7Cv5ADRMpPYIBHN1h0dFB
/mU4iBEQlFOBaBh8cUIFBqzH3mqt+fFAJBMaMQgacESh4Yx/PODHTTScMCEGRdAQ
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
FwgAOw==
------------JxuqZ6nLgOmBPtWaPDKENk
Content-Disposition: inline; filename=default.htm
Content-Type: text/html; charset=utf-16; name=default.htm
Content-Location: about:blank
Content-Transfer-Encoding: Base64
//48ACEARABPAEMAVABZAFAARQAgAEgAVABNAEwAIABQAFUAQgBMAEkAQwAgACIA
LQAvAC8AVwAzAEMALwAvAEQAVABEACAASABUAE0ATAAgADQALgAwADEALwAvAEUA
TgAiAD4ACgA8AGgAdABtAGwAIABkAGkAcgA9ACIAbAB0AHIAIgA+AAoAPABoAGUA
YQBkAD4ACgAgADwAdABpAHQAbABlAD4AQgBsAGEAbgBrACAAcABhAGcAZQA8AC8A
dABpAHQAbABlAD4ACgA8AC8AaABlAGEAZAA+AAoAPABiAG8AZAB5AD4APAAvAGIA
bwBkAHkAPgA8AC8AaAB0AG0AbAA+AA==
------------JxuqZ6nLgOmBPtWaPDKENk--