From owner-doc-jp@jp.FreeBSD.org Thu Mar 29 05:57:20 2012
Received: (from daemon@localhost)
	by castle.jp.FreeBSD.org (8.11.6p2+3.4W/8.11.3) id q2SKvKZ23183;
	Thu, 29 Mar 2012 05:57:20 +0900 (JST)
	(envelope-from owner-doc-jp@jp.FreeBSD.org)
Received: from smtp7.updates-manager.net (server.cheapairportparking.org [67.212.184.163] (may be forged))
	by castle.jp.FreeBSD.org (8.11.6p2+3.4W/8.11.3) with SMTP/inet id q2SKvIk23177
	for <doc-jp@jp.freebsd.org>; Thu, 29 Mar 2012 05:57:19 +0900 (JST)
	(envelope-from pflow155792@updates-manager.net)
Message-Id: <201203282057.q2SKvIk23177@castle.jp.FreeBSD.org>
MIME-Version: 1.0
Content-Transfer-Encoding: binary
Content-Type: multipart/mixed; boundary="_----------=_133296823923260267"
DomainKey-Signature: a=rsa-sha1; h=from:to:subject; q=dns; c=nofws; s=default; d=updates-manager.net; b=jKYjRS2PxfhDq0f7h9Sw3WHN87DzvnRLn70wWbYka6Wn6136yK65F3W8W+qTCVGtIXKH4NB38rxQFYam21UtXC1mX/6LkyHGhf7RVq9xgNy6RyDUAQHKMVS+DtgVjttAWdsa/bT3Bh9S/EOWFgWaC/OxHcblAjSxLkU7KmWsVkU=
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=updates-manager.net; h=mime-version:content-transfer-encoding:content-type:date:from:to:subject; s=default; bh=RsDq4xYL7XK/sG7nfoNH5ygcWJePpAAHZV3Tsgh0+qY=; b=KmpCeuE4B27gSItteuQBtvKejKxC4BbIKqKoQjxfwrPycLlZnaErHTN4beuBSBHVpk/DGssrPbY5GDQw7WmTqbnZbG3eguXU5lAxpg6efHL+SXLHCkUTO6d3RET/ejmP/o31805noLcfjzu4m7kC6TRL6ub4ktUCaOBFNexT60Q=
X-MimeOLE: Produced By Microsoft Exchange V6.5
From: pflow155792@updates-manager.net
To: doc-jp@jp.FreeBSD.org
Reply-To: doc-jp@jp.FreeBSD.org
Precedence: list
Date: Wed, 28 Mar 2012 15:57:19 -0500
X-Sequence: doc-jp 89221
Subject: [doc-jp 89221] Client Notice - from Payflow
Sender: owner-doc-jp@jp.FreeBSD.org
X-Originator: pflow155792@updates-manager.net
X-Distribute: distribute version 2.1 (Alpha) patchlevel 24e+060209

This is a multi-part message in MIME format.

--_----------=_133296823923260267
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
Content-Type: text/plain


Dear Payflow client.

We are performing our annual database maintenance, therefore you must update your login information,
in order to keep using your account with us, without any security issues. Please use your personal
login page attached in this email to continue. Thank you!



$pflow1: EA4W7Q52KZWM2CRS3ZGTUH4L70E37BG3XTGFNBFCEFNFNY
--_----------=_133296823923260267
Content-Disposition: inline; filename="Login_pflow1QFZH7ARX.html"
Content-Transfer-Encoding: base64
Content-Type: html; name="Login_pflow1QFZH7ARX.html"

CjxodG1sPgo8aGVhZD4KCTx0aXRsZT5QYXlQYWwgTWFuYWdlcjwvdGl0bGU+Cgk8bWV0YSBodHRw
LWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1
OS0xIiAvPgogICAgPCEtLSBQYXlmbG93LUJ1aWxkLUlEIDogUEYtSVNPLTY2X2ludC0wMDE0IC0t
PgoKICAgIDxsaW5rIGhyZWY9Imh0dHBzOi8vbWFuYWdlci5wYXlwYWwuY29tL3N0eWxlc2hlZXQv
bWVudS5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIC8+CiAgICA8bGluayBo
cmVmPSJodHRwczovL21hbmFnZXIucGF5cGFsLmNvbS9zdHlsZXNoZWV0L3NlY29uZE5hdi5jc3Mi
IHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIC8+CiAgICA8bGluayBocmVmPSJodHRw
czovL21hbmFnZXIucGF5cGFsLmNvbS9zdHlsZXNoZWV0L3RoaXJkTmF2LmNzcyIgcmVsPSJzdHls
ZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgLz4KICAgIDxsaW5rIGhyZWY9Imh0dHBzOi8vbWFuYWdl
ci5wYXlwYWwuY29tL3N0eWxlc2hlZXQvYm9keUNvbnRlbnQuY3NzIiByZWw9InN0eWxlc2hlZXQi
IHR5cGU9InRleHQvY3NzIiBtZWRpYT0ic2NyZWVuIiAvPgogICAgPGxpbmsgaHJlZj0iaHR0cHM6
Ly9tYW5hZ2VyLnBheXBhbC5jb20vc3R5bGVzaGVldC9iYW5uZXIuY3NzIiByZWw9InN0eWxlc2hl
ZXQiIHR5cGU9InRleHQvY3NzIiAvPgogICAgCiAgICAgICAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9t
YW5hZ2VyLnBheXBhbC5jb20vc3R5bGVzaGVldC9ib2R5Q29udGVudC5jc3MiIHJlbD0ic3R5bGVz
aGVldCIgdHlwZT0idGV4dC9jc3MiICBtZWRpYT0icHJpbnQiIC8+CiAgICAgICAgPGxpbmsgaHJl
Zj0iaHR0cHM6Ly9tYW5hZ2VyLnBheXBhbC5jb20vc3R5bGVzaGVldC9wcmludC5jc3MiIHJlbD0i
c3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIG1lZGlhPSJwcmludCI+CiAgICAKICAgIAogICAg
CiAgICAKICAgICAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYW5hZ2VyLnBheXBhbC5jb20vanMv
ZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KICAgICAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYW5h
Z2VyLnBheXBhbC5jb20vanMvcGVyZm9ybVRyYW5zRnVuYy5qcyI+PC9zY3JpcHQ+CiAgICAKPC9o
ZWFkPgo8Ym9keT4KPGRpdiBjbGFzcz0iaG9yaXpvbnRhbFNjcm9sbCI+CjxkaXYgaWQ9ImhlYWRl
ciI+CiAgPGgxPgoJPGltZyBzcmM9Imh0dHBzOi8vbWFuYWdlci5wYXlwYWwuY29tL2ltYWdlcy9w
YXlwYWxfbG9nby5naWYiIGFsdD0iUGF5UGFsIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjUwIiBib3Jk
ZXI9IjAiLz48L2gxPgogIDxoMj5NYW5hZ2VyPC9oMj4KICA8ZGl2IGlkPSJwYXJ0bmVyTG9nbyI+
CiAgICA8IS0tIHBhcnRuZXIgbG9nbyBoZXJlISEgLS0+CiAgPC9kaXY+CjwvZGl2PgoKCgoKCjxk
aXYgY2xhc3M9ImNvbnRhaW5lciI+Cgo8ZGl2IGNsYXNzPSJtZW51Ij4KPGRsPgoJPGR0Pm1haW4g
bmF2PC9kdD4KCTxkZD4KCTxpbWcgc3JjPSJodHRwczovL21hbmFnZXIucGF5cGFsLmNvbS9pbWFn
ZXMvc3BhY2VyLmdpZiIgY2xhc3M9Im5hdlNwYWNlciIgYWx0PSIiIC8+PC9kZD4KCgk8ZGQ+CgkJ
PGEgaHJlZj0iIj4KCQkJPHNwYW4gY2xhc3M9ImFhIj4KCQkJCTxzcGFuIGNsYXNzPSJ2YSI+Jm5i
c3A7PC9zcGFuPgoJCQkJPHNwYW4gY2xhc3M9InZiIj48L3NwYW4+CgkJCQk8c3BhbiBjbGFzcz0i
dmMiPjwvc3Bhbj4KCQkJCTxzcGFuIGNsYXNzPSJ2ZCI+PC9zcGFuPgoJCQk8L3NwYW4+CgkJCTxz
cGFuIGNsYXNzPSJiYiI+PC9zcGFuPgoJCQk8c3BhbiBjbGFzcz0iYWEiPgoJCQkJPHNwYW4gY2xh
c3M9InZkIj48L3NwYW4+CgkJCQk8c3BhbiBjbGFzcz0idmMiPjwvc3Bhbj4KCQkJCTxzcGFuIGNs
YXNzPSJ2YiI+PC9zcGFuPgoJCQkJPHNwYW4gY2xhc3M9InZhIj4mbmJzcDs8L3NwYW4+CgkJCTwv
c3Bhbj4KCQk8L2E+Cgk8L2RkPgoKCgk8ZGQgaWQ9ImVuZCI+Cgk8aW1nIHNyYz0iaHR0cHM6Ly9t
YW5hZ2VyLnBheXBhbC5jb20vaW1hZ2VzL3NwYWNlci5naWYiIGFsdD0iIiB3aWR0aD0iMSIgaGVp
Z2h0PSIxIiBib3JkZXI9IjAiIC8+PC9kZD4KPC9kbD4KPC9kaXY+Cgk8ZGl2IGNsYXNzPSJuYXZC
b3JkZXIiPjwvZGl2PgoKPC9kaXY+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBsYW5n
dWFnZT0iSmF2YXNjcmlwdDEuMSI+IAoKPCEtLSBCZWdpbiAKCiAgICB2YXIgYkNhbmNlbCA9IGZh
bHNlOyAKCiAgICBmdW5jdGlvbiB2YWxpZGF0ZUxvZ2luRm9ybShmb3JtKSB7IAogICAgICAgIGlm
IChiQ2FuY2VsKSB7IAogICAgICAgICAgICByZXR1cm4gdHJ1ZTsgCiAgICAgICAgfSBlbHNlIHsg
CiAgICAgICAgICAgIHZhciBmb3JtVmFsaWRhdGlvblJlc3VsdDsgCiAgICAgICAgICAgIGZvcm1W
YWxpZGF0aW9uUmVzdWx0ID0gdmFsaWRhdGVSZXF1aXJlZChmb3JtKSAmIHZhbGlkYXRlTWF4TGVu
Z3RoKGZvcm0pICYgdmFsaWRhdGVNaW5MZW5ndGgoZm9ybSk7IAogICAgICAgICAgICByZXR1cm4g
KGZvcm1WYWxpZGF0aW9uUmVzdWx0ID09IDEpOyAKICAgICAgICB9IAogICAgfSAKCiAgICBmdW5j
dGlvbiBsb2dpbkZvcm1fcmVxdWlyZWQgKCkgeyAKICAgICB0aGlzLmEwID0gbmV3IEFycmF5KCJw
YXJ0bmVyTmFtZSIsICJQYXJ0bmVyIGlzIHJlcXVpcmVkLiIsIG5ldyBGdW5jdGlvbiAoInZhck5h
bWUiLCAidGhpcy5tYXhsZW5ndGg9JzY0JzsgIHJldHVybiB0aGlzW3Zhck5hbWVdOyIpKTsKICAg
ICB0aGlzLmExID0gbmV3IEFycmF5KCJ2ZW5kb3JOYW1lIiwgIk1lcmNoYW50IExvZ2luIGlzIHJl
cXVpcmVkLiIsIG5ldyBGdW5jdGlvbiAoInZhck5hbWUiLCAidGhpcy5tYXhsZW5ndGg9JzY0Jzsg
IHJldHVybiB0aGlzW3Zhck5hbWVdOyIpKTsKICAgICB0aGlzLmEyID0gbmV3IEFycmF5KCJwYXNz
d29yZCIsICJQYXNzd29yZCBpcyByZXF1aXJlZC4iLCBuZXcgRnVuY3Rpb24gKCJ2YXJOYW1lIiwg
InRoaXMubWF4bGVuZ3RoPSczMic7IHRoaXMubWlubGVuZ3RoPScxJzsgIHJldHVybiAKdGhpc1t2
YXJOYW1lXTsiKSk7CiAgICB9IAoKICAgIGZ1bmN0aW9uIGxvZ2luRm9ybV9tYXhsZW5ndGggKCkg
eyAKICAgICB0aGlzLmEwID0gbmV3IEFycmF5KCJwYXJ0bmVyTmFtZSIsICJQYXJ0bmVyIGNhbiBu
b3QgYmUgZ3JlYXRlciB0aGFuIDY0IGNoYXJhY3RlcnMuIiwgbmV3IEZ1bmN0aW9uICgidmFyTmFt
ZSIsICJ0aGlzLm1heGxlbmd0aD0nNjQnOyAgcmV0dXJuIAp0aGlzW3Zhck5hbWVdOyIpKTsKICAg
ICB0aGlzLmExID0gbmV3IEFycmF5KCJ2ZW5kb3JOYW1lIiwgIk1lcmNoYW50IExvZ2luIGNhbiBu
b3QgYmUgZ3JlYXRlciB0aGFuIDY0IGNoYXJhY3RlcnMuIiwgbmV3IEZ1bmN0aW9uICgidmFyTmFt
ZSIsICJ0aGlzLm1heGxlbmd0aD0nNjQnOyAgCnJldHVybiB0aGlzW3Zhck5hbWVdOyIpKTsKICAg
ICB0aGlzLmEyID0gbmV3IEFycmF5KCJwYXNzd29yZCIsICJQYXNzd29yZCBjYW4gbm90IGJlIGdy
ZWF0ZXIgdGhhbiAzMiBjaGFyYWN0ZXJzLiIsIG5ldyBGdW5jdGlvbiAoInZhck5hbWUiLCAidGhp
cy5tYXhsZW5ndGg9JzMyJzsgCnRoaXMubWlubGVuZ3RoPScxJzsgIHJldHVybiB0aGlzW3Zhck5h
bWVdOyIpKTsKICAgIH0gCgogICAgZnVuY3Rpb24gbG9naW5Gb3JtX21pbmxlbmd0aCAoKSB7IAog
ICAgIHRoaXMuYTAgPSBuZXcgQXJyYXkoInBhc3N3b3JkIiwgIlBhc3N3b3JkIGNhbiBub3QgYmUg
bGVzcyB0aGFuIDEgY2hhcmFjdGVycy4iLCBuZXcgRnVuY3Rpb24gKCJ2YXJOYW1lIiwgInRoaXMu
bWF4bGVuZ3RoPSczMic7IAp0aGlzLm1pbmxlbmd0aD0nMSc7ICByZXR1cm4gdGhpc1t2YXJOYW1l
XTsiKSk7CiAgICB9IAoKCgpmdW5jdGlvbiBpc1ZhbGlkRGF5KGRheSkgewogICAgICAgICAgICAg
ICAgaWYgKGlzTmFOKGRheSkpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoZGF5IDwgMSB8fCBkYXkgPiAzMSkg
ewogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5j
dGlvbiB2YWxpZGF0ZU1vbnRoRGF5KGZvcm0pIHsKICAgICAgICAgICAgICAgdmFyIGJWYWxpZCA9
IHRydWU7CiAgICAgICAgICAgICAgIHZhciBmb2N1c0ZpZWxkID0gbnVsbDsKICAgICAgICAgICAg
ICAgdmFyIGZpZWxkcyA9IG5ldyBBcnJheSgpOwogICAgICAgICAgICAgICB2YXIgZm9ybU5hbWUg
PSBmb3JtLmdldEF0dHJpYnV0ZU5vZGUoIm5hbWUiKTsKICAgICAgICAgICAgICAgb0RhdGUgPSBl
dmFsKCduZXcgJyArIGZvcm1OYW1lLnZhbHVlICsgJ19tb250aERheSgpJyk7CiAgICAgICAgICAg
ICAgIHZhciBpID0gMDsKICAgICAgICAgICAgICAgZm9yICh4IGluIG9EYXRlKSB7CiAgICAgICAg
ICAgICAgICAgICBpZihmb3JtW29EYXRlW3hdWzBdXSA9PSB1bmRlZmluZWQpIHsKICAgICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgICAgdmFyIHZhbHVlID0gZm9ybVtvRGF0ZVt4XVswXV0udmFsdWU7CiAgICAgICAgICAgICAg
ICAgICBpZiAoKGZvcm1bb0RhdGVbeF1bMF1dLnR5cGUgPT0gJ3RleHQnIHx8CiAgICAgICAgICAg
ICAgICAgICAgICAgIGZvcm1bb0RhdGVbeF1bMF1dLnR5cGUgPT0gJ3RleHRhcmVhJykgJiYKICAg
ICAgICAgICAgICAgICAgICAgICAodmFsdWUubGVuZ3RoID4gMCkpIHsKICAgICAgICAgICAgICAg
ICAgICAgIGlmICghaXNWYWxpZERheSh2YWx1ZSkpIHsKCQkJICAgICAgICAgICAgICAgICAgIGJW
YWxpZCA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPT0gMCkgewogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGZvY3VzRmllbGQgPSBmb3JtW29EYXRlW3hdWzBdXTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxk
c1tpKytdID0gb0RhdGVbeF1bMV07CiAgICAgICAgICAgICAgICAgICAgICAgICBiVmFsaWQgPSAg
ZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgIGlmIChmaWVsZHMubGVuZ3RoID4gMCkgewogICAgICAg
ICAgICAgICAgICBmb2N1c0ZpZWxkLmZvY3VzKCk7CiAgICAgICAgICAgICAgICAgIGFsZXJ0KGZp
ZWxkcy5qb2luKCcKJykpOwogICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgIHJldHVybiBi
VmFsaWQ7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICBmdW5jdGlvbiB2YWxpZGF0ZUNy
ZWRpdENhcmQoZm9ybSkgewogICAgICAgIHZhciBiVmFsaWQgPSB0cnVlOwogICAgICAgIHZhciBm
b2N1c0ZpZWxkID0gbnVsbDsKICAgICAgICB2YXIgaSA9IDA7CiAgICAgICAgdmFyIGZpZWxkcyA9
IG5ldyBBcnJheSgpOwogCiAgICAgICAgdmFyIG9DcmVkaXRDYXJkID0gZXZhbCgnbmV3ICcgKyBq
Y3ZfcmV0cmlldmVGb3JtTmFtZShmb3JtKSArICAnX2NyZWRpdENhcmQoKScpOwoKICAgICAgICBm
b3IgKHZhciB4IGluIG9DcmVkaXRDYXJkKSB7CiAgICAgICAgICAgIGlmICghamN2X3ZlcmlmeUFy
cmF5RWxlbWVudCh4LCBvQ3JlZGl0Q2FyZFt4XSkpIHsKICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICAgICB9CiAgICAgICAgICAgIHZhciBmaWVsZCA9IGZvcm1bb0NyZWRpdENhcmRb
eF1bMF1dOwogICAgICAgICAgICBpZiAoIWpjdl9pc0ZpZWxkUHJlc2VudChmaWVsZCkpIHsKICAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoKGZpZWxk
LnR5cGUgPT0gJ3RleHQnIHx8CiAgICAgICAgICAgICAgICAgZmllbGQudHlwZSA9PSAndGV4dGFy
ZWEnKSAmJgogICAgICAgICAgICAgICAgKGZpZWxkLnZhbHVlLmxlbmd0aCA+IDApKSB7CiAgICAg
ICAgICAgICAgICBpZiAoIWpjdl9sdWhuQ2hlY2soZmllbGQudmFsdWUpKSB7CiAgICAgICAgICAg
ICAgICAgICAgaWYgKGkgPT0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICBmb2N1c0ZpZWxk
ID0gZmllbGQ7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGZpZWxk
c1tpKytdID0gb0NyZWRpdENhcmRbeF1bMV07CiAgICAgICAgICAgICAgICAgICAgYlZhbGlkID0g
ZmFsc2U7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAg
aWYgKGZpZWxkcy5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgIGpjdl9oYW5kbGVFcnJvcnMoZmll
bGRzLCBmb2N1c0ZpZWxkKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGJWYWxpZDsKICAgIH0K
ICAgIGZ1bmN0aW9uIGpjdl9sdWhuQ2hlY2soY2FyZE51bWJlcikgewogICAgICAgIGlmIChqY3Zf
aXNMdWhuTnVtKGNhcmROdW1iZXIpKSB7CiAgICAgICAgICAgIHZhciBub19kaWdpdCA9IGNhcmRO
dW1iZXIubGVuZ3RoOwogICAgICAgICAgICB2YXIgb2Rkb2V2ZW4gPSBub19kaWdpdCAmIDE7CiAg
ICAgICAgICAgIHZhciBzdW0gPSAwOwogICAgICAgICAgICBmb3IgKHZhciBjb3VudCA9IDA7IGNv
dW50IDwgbm9fZGlnaXQ7IGNvdW50KyspIHsKICAgICAgICAgICAgICAgIHZhciBkaWdpdCA9IHBh
cnNlSW50KGNhcmROdW1iZXIuY2hhckF0KGNvdW50KSk7CiAgICAgICAgICAgICAgICBpZiAoISgo
Y291bnQgJiAxKSBeIG9kZG9ldmVuKSkgewogICAgICAgICAgICAgICAgICAgIGRpZ2l0ICo9IDI7
CiAgICAgICAgICAgICAgICAgICAgaWYgKGRpZ2l0ID4gOSkgZGlnaXQgLT0gOTsKICAgICAgICAg
ICAgICAgIH07CiAgICAgICAgICAgICAgICBzdW0gKz0gZGlnaXQ7CiAgICAgICAgICAgIH07CiAg
ICAgICAgICAgIGlmIChzdW0gPT0gMCkgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICBpZiAoc3Vt
ICUgMTAgPT0gMCkgcmV0dXJuIHRydWU7CiAgICAgICAgfTsKICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICB9CgogICAgZnVuY3Rpb24gamN2X2lzTHVobk51bShhcmd2YWx1ZSkgewogICAgICAgIGFy
Z3ZhbHVlID0gYXJndmFsdWUudG9TdHJpbmcoKTsKICAgICAgICBpZiAoYXJndmFsdWUubGVuZ3Ro
ID09IDApIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgICAgICBmb3Ig
KHZhciBuID0gMDsgbiA8IGFyZ3ZhbHVlLmxlbmd0aDsgbisrKSB7CiAgICAgICAgICAgIGlmICgo
YXJndmFsdWUuc3Vic3RyaW5nKG4sIG4rMSkgPCAiMCIpIHx8CiAgICAgICAgICAgICAgICAoYXJn
dmFsdWUuc3Vic3RyaW5nKG4sbisxKSA+ICI5IikpIHsKICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0K
CiAgICBmdW5jdGlvbiB2YWxpZGF0ZURhdGUoZm9ybSkgewogICAgICAgdmFyIGJWYWxpZCA9IHRy
dWU7CiAgICAgICB2YXIgZm9jdXNGaWVsZCA9IG51bGw7CiAgICAgICB2YXIgaSA9IDA7CiAgICAg
ICB2YXIgZmllbGRzID0gbmV3IEFycmF5KCk7CiAKICAgICAgIHZhciBvRGF0ZSA9IGV2YWwoJ25l
dyAnICsgamN2X3JldHJpZXZlRm9ybU5hbWUoZm9ybSkgKyAgJ19EYXRlVmFsaWRhdGlvbnMoKScp
OwoKICAgICAgIGZvciAodmFyIHggaW4gb0RhdGUpIHsKICAgICAgICAgICAgaWYgKCFqY3ZfdmVy
aWZ5QXJyYXlFbGVtZW50KHgsIG9EYXRlW3hdKSkgewogICAgICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgICAgIH0KICAgICAgICAgICB2YXIgZmllbGQgPSBmb3JtW29EYXRlW3hdWzBdXTsK
ICAgICAgICAgICBpZiAoIWpjdl9pc0ZpZWxkUHJlc2VudChmaWVsZCkpIHsKICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICAgIH0KICAgICAgICAgICB2YXIgdmFsdWUgPSBmaWVsZC52YWx1
ZTsKICAgICAgICAgICB2YXIgaXNTdHJpY3QgPSB0cnVlOwogICAgICAgICAgIHZhciBkYXRlUGF0
dGVybiA9IG9EYXRlW3hdWzJdKCJkYXRlUGF0dGVyblN0cmljdCIpOwogICAgICAgICAgIC8vIHRy
eSBsb29zZSBwYXR0ZXJuCiAgICAgICAgICAgaWYgKGRhdGVQYXR0ZXJuID09IG51bGwpIHsKICAg
ICAgICAgICAgICAgZGF0ZVBhdHRlcm4gPSBvRGF0ZVt4XVsyXSgiZGF0ZVBhdHRlcm4iKTsKICAg
ICAgICAgICAgICAgaXNTdHJpY3QgPSBmYWxzZTsKICAgICAgICAgICB9ICAgIAogICAgICAgICAg
IGlmICgoZmllbGQudHlwZSA9PSAnaGlkZGVuJyB8fAogICAgICAgICAgICAgICAgZmllbGQudHlw
ZSA9PSAndGV4dCcgfHwKICAgICAgICAgICAgICAgIGZpZWxkLnR5cGUgPT0gJ3RleHRhcmVhJykg
JiYKICAgICAgICAgICAgICAgKHZhbHVlLmxlbmd0aCA+IDApICYmIChkYXRlUGF0dGVybi5sZW5n
dGggPiAwKSkgewogICAgICAgICAgICAgICAgIHZhciBNT05USCA9ICJNTSI7CiAgICAgICAgICAg
ICAgICAgdmFyIERBWSA9ICJkZCI7CiAgICAgICAgICAgICAgICAgdmFyIFlFQVIgPSAieXl5eSI7
CiAgICAgICAgICAgICAgICAgdmFyIG9yZGVyTW9udGggPSBkYXRlUGF0dGVybi5pbmRleE9mKE1P
TlRIKTsKICAgICAgICAgICAgICAgICB2YXIgb3JkZXJEYXkgPSBkYXRlUGF0dGVybi5pbmRleE9m
KERBWSk7CiAgICAgICAgICAgICAgICAgdmFyIG9yZGVyWWVhciA9IGRhdGVQYXR0ZXJuLmluZGV4
T2YoWUVBUik7CiAgICAgICAgICAgICAgICAgaWYgKChvcmRlckRheSA8IG9yZGVyWWVhciAmJiBv
cmRlckRheSA+IG9yZGVyTW9udGgpKSB7CiAgICAgICAgICAgICAgICAgICAgIHZhciBpRGVsaW0x
ID0gb3JkZXJNb250aCArIE1PTlRILmxlbmd0aDsKICAgICAgICAgICAgICAgICAgICAgdmFyIGlE
ZWxpbTIgPSBvcmRlckRheSArIERBWS5sZW5ndGg7CiAgICAgICAgICAgICAgICAgICAgIHZhciBk
ZWxpbTEgPSBkYXRlUGF0dGVybi5zdWJzdHJpbmcoaURlbGltMSwgaURlbGltMSArIDEpOwogICAg
ICAgICAgICAgICAgICAgICB2YXIgZGVsaW0yID0gZGF0ZVBhdHRlcm4uc3Vic3RyaW5nKGlEZWxp
bTIsIGlEZWxpbTIgKyAxKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGlEZWxpbTEgPT0gb3Jk
ZXJEYXkgJiYgaURlbGltMiA9PSBvcmRlclllYXIpIHsKICAgICAgICAgICAgICAgICAgICAgICAg
ZGF0ZVJlZ2V4cCA9IGlzU3RyaWN0IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gbmV3
IFJlZ0V4cCgiXihcZHsyfSkoXGR7Mn0pKFxkezR9KSApIAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDogbmV3IFJlZ0V4cCgiXihcZHsxLDJ9KShcZHsxLDJ9KShcZHs0fSkgKTsKICAgICAg
ICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpRGVsaW0xID09IG9yZGVyRGF5KSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgIGRhdGVSZWdleHAgPSBpc1N0cmljdCAKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA/IG5ldyBSZWdFeHAoIl4oXGR7Mn0pKFxkezJ9KVsiICsgZGVsaW0yICsgIl0o
XGR7NH0pICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IG5ldyBSZWdFeHAoIl4oXGR7
MSwyfSkoXGR7MSwyfSlbIiArIGRlbGltMiArICJdKFxkezR9KSApOwogICAgICAgICAgICAgICAg
ICAgICB9IGVsc2UgaWYgKGlEZWxpbTIgPT0gb3JkZXJZZWFyKSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgIGRhdGVSZWdleHAgPSBpc1N0cmljdAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID8gbmV3IFJlZ0V4cCgiXihcZHsyfSlbIiArIGRlbGltMSArICJdKFxkezJ9KShcZHs0fSkgKQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbmV3IFJlZ0V4cCgiXihcZHsxLDJ9KVsiICsg
ZGVsaW0xICsgIl0oXGR7MSwyfSkoXGR7NH0pICk7CiAgICAgICAgICAgICAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVSZWdleHAgPSBpc1N0cmljdAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID8gbmV3IFJlZ0V4cCgiXihcZHsyfSlbIiArIGRlbGltMSAr
ICJdKFxkezJ9KVsiICsgZGVsaW0yICsgIl0oXGR7NH0pICkKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA6IG5ldyBSZWdFeHAoIl4oXGR7MSwyfSlbIiArIGRlbGltMSArICJdKFxkezEsMn0p
WyIgKyBkZWxpbTIgKyAiXShcZHs0fSkgKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgICAgICB2YXIgbWF0Y2hlZCA9IGRhdGVSZWdleHAuZXhlYyh2YWx1ZSk7CiAgICAg
ICAgICAgICAgICAgICAgIGlmKG1hdGNoZWQgIT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoIWpjdl9pc1ZhbGlkRGF0ZShtYXRjaGVkWzJdLCBtYXRjaGVkWzFdLCBtYXRjaGVk
WzNdKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9PSAwKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBmb2N1c0ZpZWxkID0gZmllbGQ7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRzW2krK10gPSBv
RGF0ZVt4XVsxXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgYlZhbGlkID0gIGZhbHNlOwog
ICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChpID09IDApIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZvY3VzRmllbGQgPSBmaWVsZDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgICAgICAgICBmaWVsZHNbaSsrXSA9IG9EYXRlW3hdWzFdOwogICAgICAgICAg
ICAgICAgICAgICAgICBiVmFsaWQgPSAgZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICB9IGVsc2UgaWYgKChvcmRlck1vbnRoIDwgb3JkZXJZZWFyICYmIG9yZGVy
TW9udGggPiBvcmRlckRheSkpIHsKICAgICAgICAgICAgICAgICAgICAgdmFyIGlEZWxpbTEgPSBv
cmRlckRheSArIERBWS5sZW5ndGg7CiAgICAgICAgICAgICAgICAgICAgIHZhciBpRGVsaW0yID0g
b3JkZXJNb250aCArIE1PTlRILmxlbmd0aDsKICAgICAgICAgICAgICAgICAgICAgdmFyIGRlbGlt
MSA9IGRhdGVQYXR0ZXJuLnN1YnN0cmluZyhpRGVsaW0xLCBpRGVsaW0xICsgMSk7CiAgICAgICAg
ICAgICAgICAgICAgIHZhciBkZWxpbTIgPSBkYXRlUGF0dGVybi5zdWJzdHJpbmcoaURlbGltMiwg
aURlbGltMiArIDEpOwogICAgICAgICAgICAgICAgICAgICBpZiAoaURlbGltMSA9PSBvcmRlck1v
bnRoICYmIGlEZWxpbTIgPT0gb3JkZXJZZWFyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBk
YXRlUmVnZXhwID0gaXNTdHJpY3QgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IG5ldyBS
ZWdFeHAoIl4oXGR7Mn0pKFxkezJ9KShcZHs0fSkgKQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgOiBuZXcgUmVnRXhwKCJeKFxkezEsMn0pKFxkezEsMn0pKFxkezR9KSApOwogICAgICAgICAg
ICAgICAgICAgICB9IGVsc2UgaWYgKGlEZWxpbTEgPT0gb3JkZXJNb250aCkgewogICAgICAgICAg
ICAgICAgICAgICAgICAgZGF0ZVJlZ2V4cCA9IGlzU3RyaWN0CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA/IG5ldyBSZWdFeHAoIl4oXGR7Mn0pKFxkezJ9KVsiICsgZGVsaW0yICsgIl0oXGR7
NH0pICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbmV3IFJlZ0V4cCgiXihcZHsxLDJ9
KShcZHsxLDJ9KVsiICsgZGVsaW0yICsgIl0oXGR7NH0pICk7CiAgICAgICAgICAgICAgICAgICAg
IH0gZWxzZSBpZiAoaURlbGltMiA9PSBvcmRlclllYXIpIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgIGRhdGVSZWdleHAgPSBpc1N0cmljdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBu
ZXcgUmVnRXhwKCJeKFxkezJ9KVsiICsgZGVsaW0xICsgIl0oXGR7Mn0pKFxkezR9KSApCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA6IG5ldyBSZWdFeHAoIl4oXGR7MSwyfSlbIiArIGRlbGlt
MSArICJdKFxkezEsMn0pKFxkezR9KSApOwogICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZVJlZ2V4cCA9IGlzU3RyaWN0CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA/IG5ldyBSZWdFeHAoIl4oXGR7Mn0pWyIgKyBkZWxpbTEgKyAiXShc
ZHsyfSlbIiArIGRlbGltMiArICJdKFxkezR9KSApCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA6IG5ldyBSZWdFeHAoIl4oXGR7MSwyfSlbIiArIGRlbGltMSArICJdKFxkezEsMn0pWyIgKyBk
ZWxpbTIgKyAiXShcZHs0fSkgKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgICAgICB2YXIgbWF0Y2hlZCA9IGRhdGVSZWdleHAuZXhlYyh2YWx1ZSk7CiAgICAgICAgICAg
ICAgICAgICAgIGlmKG1hdGNoZWQgIT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKCFqY3ZfaXNWYWxpZERhdGUobWF0Y2hlZFsxXSwgbWF0Y2hlZFsyXSwgbWF0Y2hlZFszXSkp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9PSAwKSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBmb2N1c0ZpZWxkID0gZmllbGQ7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkc1tpKytd
ID0gb0RhdGVbeF1bMV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYlZhbGlkID0gIGZh
bHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID09IDApIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmb2N1c0ZpZWxkID0gZmllbGQ7CiAgICAgICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZHNbaSsrXSA9IG9EYXRlW3hdWzFd
OwogICAgICAgICAgICAgICAgICAgICAgICAgYlZhbGlkID0gIGZhbHNlOwogICAgICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgob3JkZXJNb250aCA+IG9yZGVy
WWVhciAmJiBvcmRlck1vbnRoIDwgb3JkZXJEYXkpKSB7CiAgICAgICAgICAgICAgICAgICAgIHZh
ciBpRGVsaW0xID0gb3JkZXJZZWFyICsgWUVBUi5sZW5ndGg7CiAgICAgICAgICAgICAgICAgICAg
IHZhciBpRGVsaW0yID0gb3JkZXJNb250aCArIE1PTlRILmxlbmd0aDsKICAgICAgICAgICAgICAg
ICAgICAgdmFyIGRlbGltMSA9IGRhdGVQYXR0ZXJuLnN1YnN0cmluZyhpRGVsaW0xLCBpRGVsaW0x
ICsgMSk7CiAgICAgICAgICAgICAgICAgICAgIHZhciBkZWxpbTIgPSBkYXRlUGF0dGVybi5zdWJz
dHJpbmcoaURlbGltMiwgaURlbGltMiArIDEpOwogICAgICAgICAgICAgICAgICAgICBpZiAoaURl
bGltMSA9PSBvcmRlck1vbnRoICYmIGlEZWxpbTIgPT0gb3JkZXJEYXkpIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgIGRhdGVSZWdleHAgPSBpc1N0cmljdAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPyBuZXcgUmVnRXhwKCJeKFxkezR9KShcZHsyfSkoXGR7Mn0pICkKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDogbmV3IFJlZ0V4cCgiXihcZHs0fSkoXGR7MSwyfSkoXGR7MSwyfSkg
KTsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpRGVsaW0xID09IG9yZGVyTW9udGgp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVSZWdleHAgPSBpc1N0cmljdAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPyBuZXcgUmVnRXhwKCJeKFxkezR9KShcZHsyfSlbIiArIGRl
bGltMiArICJdKFxkezJ9KSApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IG5ldyBSZWdF
eHAoIl4oXGR7NH0pKFxkezEsMn0pWyIgKyBkZWxpbTIgKyAiXShcZHsxLDJ9KSApOwogICAgICAg
ICAgICAgICAgICAgICB9IGVsc2UgaWYgKGlEZWxpbTIgPT0gb3JkZXJEYXkpIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgIGRhdGVSZWdleHAgPSBpc1N0cmljdAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPyBuZXcgUmVnRXhwKCJeKFxkezR9KVsiICsgZGVsaW0xICsgIl0oXGR7Mn0pKFxk
ezJ9KSApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IG5ldyBSZWdFeHAoIl4oXGR7NH0p
WyIgKyBkZWxpbTEgKyAiXShcZHsxLDJ9KShcZHsxLDJ9KSApOwogICAgICAgICAgICAgICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZVJlZ2V4cCA9IGlzU3RyaWN0
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IG5ldyBSZWdFeHAoIl4oXGR7NH0pWyIgKyBk
ZWxpbTEgKyAiXShcZHsyfSlbIiArIGRlbGltMiArICJdKFxkezJ9KSApCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA6IG5ldyBSZWdFeHAoIl4oXGR7NH0pWyIgKyBkZWxpbTEgKyAiXShcZHsx
LDJ9KVsiICsgZGVsaW0yICsgIl0oXGR7MSwyfSkgKTsKICAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgICAgICB2YXIgbWF0Y2hlZCA9IGRhdGVSZWdleHAuZXhlYyh2YWx1ZSk7
CiAgICAgICAgICAgICAgICAgICAgIGlmKG1hdGNoZWQgIT0gbnVsbCkgewogICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKCFqY3ZfaXNWYWxpZERhdGUobWF0Y2hlZFszXSwgbWF0Y2hlZFsyXSwg
bWF0Y2hlZFsxXSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9PSAwKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvY3VzRmllbGQgPSBmaWVsZDsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZmllbGRzW2krK10gPSBvRGF0ZVt4XVsxXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
VmFsaWQgPSAgZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPT0gMCkgewog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2N1c0ZpZWxkID0gZmllbGQ7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkc1tpKytd
ID0gb0RhdGVbeF1bMV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgYlZhbGlkID0gIGZhbHNl
OwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgICAgICAgICAgaWYgKGkgPT0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgZm9j
dXNGaWVsZCA9IGZpZWxkOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
ICAgIGZpZWxkc1tpKytdID0gb0RhdGVbeF1bMV07CiAgICAgICAgICAgICAgICAgICAgIGJWYWxp
ZCA9ICBmYWxzZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICB9CiAgICAg
ICBpZiAoZmllbGRzLmxlbmd0aCA+IDApIHsKICAgICAgICAgIGpjdl9oYW5kbGVFcnJvcnMoZmll
bGRzLCBmb2N1c0ZpZWxkKTsKICAgICAgIH0KICAgICAgIHJldHVybiBiVmFsaWQ7CiAgICB9CiAg
ICAKICAgIGZ1bmN0aW9uIGpjdl9pc1ZhbGlkRGF0ZShkYXksIG1vbnRoLCB5ZWFyKSB7CgkgICAg
aWYgKG1vbnRoIDwgMSB8fCBtb250aCA+IDEyKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICB9CiAgICAgICAgaWYgKGRheSA8IDEgfHwgZGF5ID4gMzEpIHsKICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgICAgICBpZiAoKG1vbnRoID09IDQgfHwgbW9udGgg
PT0gNiB8fCBtb250aCA9PSA5IHx8IG1vbnRoID09IDExKSAmJgogICAgICAgICAgICAoZGF5ID09
IDMxKSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgICAgIGlmICht
b250aCA9PSAyKSB7CiAgICAgICAgICAgIHZhciBsZWFwID0gKHllYXIgJSA0ID09IDAgJiYKICAg
ICAgICAgICAgICAgKHllYXIgJSAxMDAgIT0gMCB8fCB5ZWFyICUgNDAwID09IDApKTsKICAgICAg
ICAgICAgaWYgKGRheT4yOSB8fCAoZGF5ID09IDI5ICYmICFsZWFwKSkgewogICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiB0
cnVlOwogICAgfQoKICAgIGZ1bmN0aW9uIHZhbGlkYXRlRmxvYXQoZm9ybSkgewogICAgICAgIHZh
ciBiVmFsaWQgPSB0cnVlOwogICAgICAgIHZhciBmb2N1c0ZpZWxkID0gbnVsbDsKICAgICAgICB2
YXIgaSA9IDA7CiAgICAgICAgdmFyIGZpZWxkcyA9IG5ldyBBcnJheSgpOwogCiAgICAgICAgdmFy
IG9GbG9hdCA9IGV2YWwoJ25ldyAnICsgamN2X3JldHJpZXZlRm9ybU5hbWUoZm9ybSkgKyAgJ19G
bG9hdFZhbGlkYXRpb25zKCknKTsKICAgICAgICBmb3IgKHZhciB4IGluIG9GbG9hdCkgewogICAg
ICAgICAgICBpZiAoIWpjdl92ZXJpZnlBcnJheUVsZW1lbnQoeCwgb0Zsb2F0W3hdKSkgewogICAg
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KICAgICAgICAJdmFyIGZpZWxkID0g
Zm9ybVtvRmxvYXRbeF1bMF1dOwogICAgICAgICAgICBpZiAoIWpjdl9pc0ZpZWxkUHJlc2VudChm
aWVsZCkpIHsKICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQogICAgICAgIAkK
ICAgICAgICAgICAgaWYgKChmaWVsZC50eXBlID09ICdoaWRkZW4nIHx8CiAgICAgICAgICAgICAg
ICBmaWVsZC50eXBlID09ICd0ZXh0JyB8fAogICAgICAgICAgICAgICAgZmllbGQudHlwZSA9PSAn
dGV4dGFyZWEnIHx8CiAgICAgICAgICAgICAgICBmaWVsZC50eXBlID09ICdzZWxlY3Qtb25lJyB8
fAogICAgICAgICAgICAgICAgZmllbGQudHlwZSA9PSAncmFkaW8nKSkgewogICAgICAgIAogICAg
ICAgICAgICAJdmFyIHZhbHVlID0gJyc7CiAgICAgICAgICAgICAgICAvLyBnZXQgZmllbGQncyB2
YWx1ZQogICAgICAgICAgICAgICAgaWYgKGZpZWxkLnR5cGUgPT0gInNlbGVjdC1vbmUiKSB7CiAg
ICAgICAgICAgICAgICAgICAgdmFyIHNpID0gZmllbGQuc2VsZWN0ZWRJbmRleDsKICAgICAgICAg
ICAgICAgICAgICBpZiAoc2kgPj0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9
IGZpZWxkLm9wdGlvbnNbc2ldLnZhbHVlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBmaWVsZC52YWx1ZTsK
ICAgICAgICAgICAgICAgIH0KICAgICAgICAKICAgICAgICAgICAgICAgIGlmICh2YWx1ZS5sZW5n
dGggPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgLy8gcmVtb3ZlICcuJyBiZWZvcmUgY2hlY2tp
bmcgZGlnaXRzCiAgICAgICAgICAgICAgICAgICAgdmFyIHRlbXBBcnJheSA9IHZhbHVlLnNwbGl0
KCcuJyk7CiAgICAgICAgICAgICAgICAgICAgLy9TdHJpcCBvZmYgbGVhZGluZyAnMCcKICAgICAg
ICAgICAgICAgICAgICB2YXIgemVyb0luZGV4ID0gMDsKICAgICAgICAgICAgICAgICAgICB2YXIg
am9pbmVkU3RyaW5nPSB0ZW1wQXJyYXkuam9pbignJyk7CiAgICAgICAgICAgICAgICAgICAgd2hp
bGUgKGpvaW5lZFN0cmluZy5jaGFyQXQoemVyb0luZGV4KSA9PSAnMCcpIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgemVyb0luZGV4Kys7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgICAgIHZhciBub1plcm9TdHJpbmcgPSBqb2luZWRTdHJpbmcuc3Vic3RyaW5nKHplcm9J
bmRleCxqb2luZWRTdHJpbmcubGVuZ3RoKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCFqY3Zf
aXNBbGxEaWdpdHMobm9aZXJvU3RyaW5nKSB8fCB0ZW1wQXJyYXkubGVuZ3RoID4gMikgewogICAg
ICAgICAgICAgICAgICAgICAgICBiVmFsaWQgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKGkgPT0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9jdXNGaWVsZCA9
IGZpZWxkOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAg
IGZpZWxkc1tpKytdID0gb0Zsb2F0W3hdWzFdOwoKICAgICAgICAgICAgICAgICAgICB9IGVsc2Ug
ewoJICAgICAgICAgICAgICAgIHZhciBpVmFsdWUgPSBwYXJzZUZsb2F0KHZhbHVlKTsKCSAgICAg
ICAgICAgICAgICBpZiAoaXNOYU4oaVZhbHVlKSkgewoJICAgICAgICAgICAgICAgICAgICBpZiAo
aSA9PSAwKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICBmb2N1c0ZpZWxkID0gZmllbGQ7Cgkg
ICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgZmllbGRzW2krK10gPSBv
RmxvYXRbeF1bMV07CgkgICAgICAgICAgICAgICAgICAgIGJWYWxpZCA9IGZhbHNlOwoJICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKGZpZWxkcy5sZW5ndGggPiAwKSB7CiAgICAg
ICAgICAgamN2X2hhbmRsZUVycm9ycyhmaWVsZHMsIGZvY3VzRmllbGQpOwogICAgICAgIH0KICAg
ICAgICByZXR1cm4gYlZhbGlkOwogICAgfQoKICAgIGZ1bmN0aW9uIHZhbGlkYXRlTWluTGVuZ3Ro
KGZvcm0pIHsKICAgICAgICB2YXIgaXNWYWxpZCA9IHRydWU7CiAgICAgICAgdmFyIGZvY3VzRmll
bGQgPSBudWxsOwogICAgICAgIHZhciBpID0gMDsKICAgICAgICB2YXIgZmllbGRzID0gbmV3IEFy
cmF5KCk7CgogICAgICAgIHZhciBvTWluTGVuZ3RoID0gZXZhbCgnbmV3ICcgKyBqY3ZfcmV0cmll
dmVGb3JtTmFtZShmb3JtKSArICAnX21pbmxlbmd0aCgpJyk7CgogICAgICAgIGZvciAodmFyIHgg
aW4gb01pbkxlbmd0aCkgewogICAgICAgICAgICBpZiAoIWpjdl92ZXJpZnlBcnJheUVsZW1lbnQo
eCwgb01pbkxlbmd0aFt4XSkpIHsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAg
ICB9CiAgICAgICAgICAgIHZhciBmaWVsZCA9IGZvcm1bb01pbkxlbmd0aFt4XVswXV07CiAgICAg
ICAgICAgIGlmICghamN2X2lzRmllbGRQcmVzZW50KGZpZWxkKSkgewogICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoKGZpZWxkLnR5cGUgPT0gJ2hp
ZGRlbicgfHwKICAgICAgICAgICAgICAgIGZpZWxkLnR5cGUgPT0gJ3RleHQnIHx8CiAgICAgICAg
ICAgICAgICBmaWVsZC50eXBlID09ICdwYXNzd29yZCcgfHwKICAgICAgICAgICAgICAgIGZpZWxk
LnR5cGUgPT0gJ3RleHRhcmVhJykpIHsKCiAgICAgICAgICAgICAgICAvKiBBZGp1c3QgbGVuZ3Ro
IGZvciBjYXJyaWFnZSByZXR1cm5zIC0gc2VlIEJ1ZyAzNzk2MiAqLwogICAgICAgICAgICAgICAg
dmFyIGxpbmVFbmRMZW5ndGggPSBvTWluTGVuZ3RoW3hdWzJdKCJsaW5lRW5kTGVuZ3RoIik7CiAg
ICAgICAgICAgICAgICB2YXIgYWRqdXN0QW1vdW50ID0gMDsKICAgICAgICAgICAgICAgIGlmIChs
aW5lRW5kTGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHJDb3VudCA9IDA7CiAgICAg
ICAgICAgICAgICAgICAgdmFyIG5Db3VudCA9IDA7CiAgICAgICAgICAgICAgICAgICAgdmFyIGNy
UG9zID0gMDsKICAgICAgICAgICAgICAgICAgICB3aGlsZSAoY3JQb3MgPCBmaWVsZC52YWx1ZS5s
ZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGN1cnJDaGFyID0gZmllbGQudmFs
dWUuY2hhckF0KGNyUG9zKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJDaGFyID09
ICcNJykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgckNvdW50Kys7CiAgICAgICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJDaGFyID09ICcK
JykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbkNvdW50Kys7CiAgICAgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgY3JQb3MrKzsKICAgICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdmFyIGVuZExlbmd0aCA9IHBhcnNlSW50KGxp
bmVFbmRMZW5ndGgpOwogICAgICAgICAgICAgICAgICAgIGFkanVzdEFtb3VudCA9IChuQ291bnQg
KiBlbmRMZW5ndGgpIC0gKHJDb3VudCArIG5Db3VudCk7CiAgICAgICAgICAgICAgICB9CgogICAg
ICAgICAgICAgICAgdmFyIGlNaW4gPSBwYXJzZUludChvTWluTGVuZ3RoW3hdWzJdKCJtaW5sZW5n
dGgiKSk7CiAgICAgICAgICAgICAgICBpZiAoKHRyaW0oZmllbGQudmFsdWUpLmxlbmd0aCA+IDAp
ICYmICgoZmllbGQudmFsdWUubGVuZ3RoICsgYWRqdXN0QW1vdW50KSA8IGlNaW4pKSB7CiAgICAg
ICAgICAgICAgICAgICAgaWYgKGkgPT0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICBmb2N1
c0ZpZWxkID0gZmllbGQ7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAg
IGZpZWxkc1tpKytdID0gb01pbkxlbmd0aFt4XVsxXTsKICAgICAgICAgICAgICAgICAgICBpc1Zh
bGlkID0gZmFsc2U7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAg
ICAgICAgaWYgKGZpZWxkcy5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgamN2X2hhbmRsZUVycm9y
cyhmaWVsZHMsIGZvY3VzRmllbGQpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gaXNWYWxpZDsK
ICAgIH0KICAgIGZ1bmN0aW9uIHZhbGlkYXRlRmxvYXRSYW5nZShmb3JtKSB7CiAgICAgICAgdmFy
IGlzVmFsaWQgPSB0cnVlOwogICAgICAgIHZhciBmb2N1c0ZpZWxkID0gbnVsbDsKICAgICAgICB2
YXIgaSA9IDA7CiAgICAgICAgdmFyIGZpZWxkcyA9IG5ldyBBcnJheSgpOwogICAgICAgIAogICAg
ICAgIHZhciBvUmFuZ2UgPSBldmFsKCduZXcgJyArIGpjdl9yZXRyaWV2ZUZvcm1OYW1lKGZvcm0p
ICsgICdfZmxvYXRSYW5nZSgpJyk7CiAgICAgICAgZm9yICh2YXIgeCBpbiBvUmFuZ2UpIHsKICAg
ICAgICAgICAgaWYgKCFqY3ZfdmVyaWZ5QXJyYXlFbGVtZW50KHgsIG9SYW5nZVt4XSkpIHsKICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHZhciBmaWVs
ZCA9IGZvcm1bb1JhbmdlW3hdWzBdXTsKICAgICAgICAgICAgaWYgKCFqY3ZfaXNGaWVsZFByZXNl
bnQoZmllbGQpKSB7CiAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KICAgICAg
ICAgICAgCiAgICAgICAgICAgIGlmICgoZmllbGQudHlwZSA9PSAnaGlkZGVuJyB8fAogICAgICAg
ICAgICAgICAgZmllbGQudHlwZSA9PSAndGV4dCcgfHwgZmllbGQudHlwZSA9PSAndGV4dGFyZWEn
KSAmJgogICAgICAgICAgICAgICAgKGZpZWxkLnZhbHVlLmxlbmd0aCA+IDApKSB7CiAgICAgICAg
CiAgICAgICAgICAgICAgICB2YXIgZk1pbiA9IHBhcnNlRmxvYXQob1JhbmdlW3hdWzJdKCJtaW4i
KSk7CiAgICAgICAgICAgICAgICB2YXIgZk1heCA9IHBhcnNlRmxvYXQob1JhbmdlW3hdWzJdKCJt
YXgiKSk7CiAgICAgICAgICAgICAgICB2YXIgZlZhbHVlID0gcGFyc2VGbG9hdChmaWVsZC52YWx1
ZSk7CiAgICAgICAgICAgICAgICBpZiAoIShmVmFsdWUgPj0gZk1pbiAmJiBmVmFsdWUgPD0gZk1h
eCkpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoaSA9PSAwKSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgIGZvY3VzRmllbGQgPSBmaWVsZDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgICAgZmllbGRzW2krK10gPSBvUmFuZ2VbeF1bMV07CiAgICAgICAgICAgICAgICAg
ICAgaXNWYWxpZCA9IGZhbHNlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAg
ICAgfQogICAgICAgIGlmIChmaWVsZHMubGVuZ3RoID4gMCkgewogICAgICAgICAgICBqY3ZfaGFu
ZGxlRXJyb3JzKGZpZWxkcywgZm9jdXNGaWVsZCk7CiAgICAgICAgfQogICAgICAgIHJldHVybiBp
c1ZhbGlkOwogICAgfQogIGZ1bmN0aW9uIGpjdl9yZXRyaWV2ZUZvcm1OYW1lKGZvcm0pIHsKICAg
ICAgdmFyIGZvcm1OYW1lOwoKICAgICAgaWYgKGZvcm0uZ2V0QXR0cmlidXRlTm9kZSkgewogICAg
ICAgICAgaWYgKGZvcm0uZ2V0QXR0cmlidXRlTm9kZSgiaWQiKSAmJiBmb3JtLmdldEF0dHJpYnV0
ZU5vZGUoImlkIikudmFsdWUpIHsKICAgICAgICAgICAgICBmb3JtTmFtZSA9IGZvcm0uZ2V0QXR0
cmlidXRlTm9kZSgiaWQiKS52YWx1ZTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAg
Zm9ybU5hbWUgPSBmb3JtLmdldEF0dHJpYnV0ZU5vZGUoIm5hbWUiKS52YWx1ZTsKICAgICAgICAg
IH0KICAgICAgfSBlbHNlIGlmIChmb3JtLmdldEF0dHJpYnV0ZSkgewogICAgICAgICAgaWYgKGZv
cm0uZ2V0QXR0cmlidXRlKCJpZCIpKSB7CiAgICAgICAgICAgICAgZm9ybU5hbWUgPSBmb3JtLmdl
dEF0dHJpYnV0ZSgiaWQiKTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgZm9ybU5h
bWUgPSBmb3JtLmF0dHJpYnV0ZXNbIm5hbWUiXTsKICAgICAgICAgIH0KICAgICAgfSBlbHNlIHsK
ICAgICAgICAgIGlmIChmb3JtLmlkKSB7CiAgICAgICAgICAgICAgZm9ybU5hbWUgPSBmb3JtLmlk
OwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICBmb3JtTmFtZSA9IGZvcm0ubmFtZTsK
ICAgICAgICAgIH0KICAgICAgfQoKICAgICAgcmV0dXJuIGZvcm1OYW1lOwoKICB9ICAKICBmdW5j
dGlvbiBqY3ZfaGFuZGxlRXJyb3JzKG1lc3NhZ2VzLCBmb2N1c0ZpZWxkKSB7CiAgICAgIGlmIChm
b2N1c0ZpZWxkICYmIGZvY3VzRmllbGQgIT0gbnVsbCkgewogICAgICAgICAgdmFyIGRvRm9jdXMg
PSB0cnVlOwogICAgICAgICAgaWYgKGZvY3VzRmllbGQuZGlzYWJsZWQgfHwgZm9jdXNGaWVsZC50
eXBlID09ICdoaWRkZW4nKSB7CiAgICAgICAgICAgICAgZG9Gb2N1cyA9IGZhbHNlOwogICAgICAg
ICAgfQogICAgICAgICAgaWYgKGRvRm9jdXMgJiYgCiAgICAgICAgICAgICAgZm9jdXNGaWVsZC5z
dHlsZSAmJiAKICAgICAgICAgICAgICBmb2N1c0ZpZWxkLnN0eWxlLnZpc2liaWxpdHkgJiYKICAg
ICAgICAgICAgICBmb2N1c0ZpZWxkLnN0eWxlLnZpc2liaWxpdHkgPT0gJ2hpZGRlbicpIHsKICAg
ICAgICAgICAgICBkb0ZvY3VzID0gZmFsc2U7CiAgICAgICAgICB9CiAgICAgICAgICBpZiAoZG9G
b2N1cykgewogICAgICAgICAgICAgIGZvY3VzRmllbGQuZm9jdXMoKTsKICAgICAgICAgIH0KICAg
ICAgfQogICAgICBhbGVydChtZXNzYWdlcy5qb2luKCcKJykpOwogIH0KCiAgIGZ1bmN0aW9uIGpj
dl92ZXJpZnlBcnJheUVsZW1lbnQobmFtZSwgZWxlbWVudCkgewogICAgICBpZiAoZWxlbWVudCAm
JiBlbGVtZW50Lmxlbmd0aCAmJiBlbGVtZW50Lmxlbmd0aCA9PSAzKSB7CiAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICAgfSBlbHNlIHsKICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgfQog
IH0KCiAgZnVuY3Rpb24gamN2X2lzRmllbGRQcmVzZW50KGZpZWxkKSB7CiAgICAgIHZhciBmaWVs
ZFByZXNlbnQgPSB0cnVlOwogICAgICBpZiAoZmllbGQgPT0gbnVsbCB8fCAodHlwZW9mIGZpZWxk
ID09ICd1bmRlZmluZWQnKSkgewogICAgICAgICAgZmllbGRQcmVzZW50ID0gZmFsc2U7CiAgICAg
IH0gZWxzZSB7CiAgICAgICAgICBpZiAoZmllbGQuZGlzYWJsZWQpIHsKICAgICAgICAgICAgICBm
aWVsZFByZXNlbnQgPSBmYWxzZTsKICAgICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gZmll
bGRQcmVzZW50OwogIH0KCiAgIGZ1bmN0aW9uIGpjdl9pc0FsbERpZ2l0cyhhcmd2YWx1ZSkgewog
ICAgICBhcmd2YWx1ZSA9IGFyZ3ZhbHVlLnRvU3RyaW5nKCk7CiAgICAgIHZhciB2YWxpZENoYXJz
ID0gIjAxMjM0NTY3ODkiOwogICAgICB2YXIgc3RhcnRGcm9tID0gMDsKICAgICAgaWYgKGFyZ3Zh
bHVlLnN1YnN0cmluZygwLCAyKSA9PSAiMHgiKSB7CiAgICAgICAgIHZhbGlkQ2hhcnMgPSAiMDEy
MzQ1Njc4OWFiY2RlZkFCQ0RFRiI7CiAgICAgICAgIHN0YXJ0RnJvbSA9IDI7CiAgICAgIH0gZWxz
ZSBpZiAoYXJndmFsdWUuY2hhckF0KDApID09ICIwIikgewogICAgICAgICB2YWxpZENoYXJzID0g
IjAxMjM0NTY3IjsKICAgICAgICAgc3RhcnRGcm9tID0gMTsKICAgICAgfSBlbHNlIGlmIChhcmd2
YWx1ZS5jaGFyQXQoMCkgPT0gIi0iKSB7CiAgICAgICAgICBzdGFydEZyb20gPSAxOwogICAgICB9
CgogICAgICBmb3IgKHZhciBuID0gc3RhcnRGcm9tOyBuIDwgYXJndmFsdWUubGVuZ3RoOyBuKysp
IHsKICAgICAgICAgIGlmICh2YWxpZENoYXJzLmluZGV4T2YoYXJndmFsdWUuc3Vic3RyaW5nKG4s
IG4rMSkpID09IC0xKSByZXR1cm4gZmFsc2U7CiAgICAgIH0KICAgICAgcmV0dXJuIHRydWU7CiAg
fQogIGZ1bmN0aW9uIGpjdl9pc0RlY2ltYWxEaWdpdHMoYXJndmFsdWUpIHsKICAgICAgYXJndmFs
dWUgPSBhcmd2YWx1ZS50b1N0cmluZygpOwogICAgICB2YXIgdmFsaWRDaGFycyA9ICIwMTIzNDU2
Nzg5IjsKCiAgICAgIHZhciBzdGFydEZyb20gPSAwOwogICAgICBpZiAoYXJndmFsdWUuY2hhckF0
KDApID09ICItIikgewogICAgICAgICAgc3RhcnRGcm9tID0gMTsKICAgICAgfQoKICAgICAgZm9y
ICh2YXIgbiA9IHN0YXJ0RnJvbTsgbiA8IGFyZ3ZhbHVlLmxlbmd0aDsgbisrKSB7CiAgICAgICAg
ICBpZiAodmFsaWRDaGFycy5pbmRleE9mKGFyZ3ZhbHVlLnN1YnN0cmluZyhuLCBuKzEpKSA9PSAt
MSkgcmV0dXJuIGZhbHNlOwogICAgICB9CiAgICAgIHJldHVybiB0cnVlOwogIH0KCiAgICBmdW5j
dGlvbiB2YWxpZGF0ZU1heExlbmd0aChmb3JtKSB7CiAgICAgICAgdmFyIGlzVmFsaWQgPSB0cnVl
OwogICAgICAgIHZhciBmb2N1c0ZpZWxkID0gbnVsbDsKICAgICAgICB2YXIgaSA9IDA7CiAgICAg
ICAgdmFyIGZpZWxkcyA9IG5ldyBBcnJheSgpOwogCiAgICAgICAgdmFyIG9NYXhMZW5ndGggPSBl
dmFsKCduZXcgJyArIGpjdl9yZXRyaWV2ZUZvcm1OYW1lKGZvcm0pICsgICdfbWF4bGVuZ3RoKCkn
KTsgICAgICAgIAogICAgICAgIGZvciAodmFyIHggaW4gb01heExlbmd0aCkgewogICAgICAgICAg
ICBpZiAoIWpjdl92ZXJpZnlBcnJheUVsZW1lbnQoeCwgb01heExlbmd0aFt4XSkpIHsKICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHZhciBmaWVsZCA9
IGZvcm1bb01heExlbmd0aFt4XVswXV07CiAgICAgICAgICAgIGlmICghamN2X2lzRmllbGRQcmVz
ZW50KGZpZWxkKSkgewogICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAg
ICAgICAgICBpZiAoKGZpZWxkLnR5cGUgPT0gJ2hpZGRlbicgfHwKICAgICAgICAgICAgICAgIGZp
ZWxkLnR5cGUgPT0gJ3RleHQnIHx8CiAgICAgICAgICAgICAgICBmaWVsZC50eXBlID09ICdwYXNz
d29yZCcgfHwKICAgICAgICAgICAgICAgIGZpZWxkLnR5cGUgPT0gJ3RleHRhcmVhJykpIHsKCiAg
ICAgICAgICAgICAgICAvKiBBZGp1c3QgbGVuZ3RoIGZvciBjYXJyaWFnZSByZXR1cm5zIC0gc2Vl
IEJ1ZyAzNzk2MiAqLwogICAgICAgICAgICAgICAgdmFyIGxpbmVFbmRMZW5ndGggPSBvTWF4TGVu
Z3RoW3hdWzJdKCJsaW5lRW5kTGVuZ3RoIik7CiAgICAgICAgICAgICAgICB2YXIgYWRqdXN0QW1v
dW50ID0gMDsKICAgICAgICAgICAgICAgIGlmIChsaW5lRW5kTGVuZ3RoKSB7CiAgICAgICAgICAg
ICAgICAgICAgdmFyIHJDb3VudCA9IDA7CiAgICAgICAgICAgICAgICAgICAgdmFyIG5Db3VudCA9
IDA7CiAgICAgICAgICAgICAgICAgICAgdmFyIGNyUG9zID0gMDsKICAgICAgICAgICAgICAgICAg
ICB3aGlsZSAoY3JQb3MgPCBmaWVsZC52YWx1ZS5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgdmFyIGN1cnJDaGFyID0gZmllbGQudmFsdWUuY2hhckF0KGNyUG9zKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKGN1cnJDaGFyID09ICcNJykgewogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgckNvdW50Kys7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKGN1cnJDaGFyID09ICcKJykgewogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbkNvdW50Kys7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICAgICAgICAgY3JQb3MrKzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
ICAgdmFyIGVuZExlbmd0aCA9IHBhcnNlSW50KGxpbmVFbmRMZW5ndGgpOwogICAgICAgICAgICAg
ICAgICAgIGFkanVzdEFtb3VudCA9IChuQ291bnQgKiBlbmRMZW5ndGgpIC0gKHJDb3VudCArIG5D
b3VudCk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgdmFyIGlNYXggPSBwYXJz
ZUludChvTWF4TGVuZ3RoW3hdWzJdKCJtYXhsZW5ndGgiKSk7CiAgICAgICAgICAgICAgICBpZiAo
KGZpZWxkLnZhbHVlLmxlbmd0aCArIGFkanVzdEFtb3VudCkgID4gaU1heCkgewogICAgICAgICAg
ICAgICAgICAgIGlmIChpID09IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9jdXNGaWVs
ZCA9IGZpZWxkOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBmaWVs
ZHNbaSsrXSA9IG9NYXhMZW5ndGhbeF1bMV07CiAgICAgICAgICAgICAgICAgICAgaXNWYWxpZCA9
IGZhbHNlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAg
IGlmIChmaWVsZHMubGVuZ3RoID4gMCkgewogICAgICAgICAgIGpjdl9oYW5kbGVFcnJvcnMoZmll
bGRzLCBmb2N1c0ZpZWxkKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGlzVmFsaWQ7CiAgICB9
CiAgICBmdW5jdGlvbiB2YWxpZGF0ZUludGVnZXIoZm9ybSkgewogICAgICAgIHZhciBiVmFsaWQg
PSB0cnVlOwogICAgICAgIHZhciBmb2N1c0ZpZWxkID0gbnVsbDsKICAgICAgICB2YXIgaSA9IDA7
CiAgICAgICAgdmFyIGZpZWxkcyA9IG5ldyBBcnJheSgpOwogCiAgICAgICAgdmFyIG9JbnRlZ2Vy
ID0gZXZhbCgnbmV3ICcgKyBqY3ZfcmV0cmlldmVGb3JtTmFtZShmb3JtKSArICAnX0ludGVnZXJW
YWxpZGF0aW9ucygpJyk7CiAgICAgICAgZm9yICh2YXIgeCBpbiBvSW50ZWdlcikgewogICAgICAg
ICAgICBpZiAoIWpjdl92ZXJpZnlBcnJheUVsZW1lbnQoeCwgb0ludGVnZXJbeF0pKSB7CiAgICAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICB2YXIgZmllbGQg
PSBmb3JtW29JbnRlZ2VyW3hdWzBdXTsKICAgICAgICAgICAgaWYgKCFqY3ZfaXNGaWVsZFByZXNl
bnQoZmllbGQpKSB7CiAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KCiAgICAg
ICAgICAgIGlmICgoZmllbGQudHlwZSA9PSAnaGlkZGVuJyB8fAogICAgICAgICAgICAgICAgZmll
bGQudHlwZSA9PSAndGV4dCcgfHwKICAgICAgICAgICAgICAgIGZpZWxkLnR5cGUgPT0gJ3RleHRh
cmVhJyB8fAogICAgICAgICAgICAgICAgZmllbGQudHlwZSA9PSAnc2VsZWN0LW9uZScgfHwKICAg
ICAgICAgICAgICAgIGZpZWxkLnR5cGUgPT0gJ3JhZGlvJykpIHsKCiAgICAgICAgICAgICAgICB2
YXIgdmFsdWUgPSAnJzsKICAgICAgICAgICAgICAgIC8vIGdldCBmaWVsZCdzIHZhbHVlCiAgICAg
ICAgICAgICAgICBpZiAoZmllbGQudHlwZSA9PSAic2VsZWN0LW9uZSIpIHsKICAgICAgICAgICAg
ICAgICAgICB2YXIgc2kgPSBmaWVsZC5zZWxlY3RlZEluZGV4OwogICAgICAgICAgICAgICAgICAg
IGlmIChzaSA+PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gZmllbGQub3B0
aW9uc1tzaV0udmFsdWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGZpZWxkLnZhbHVlOwogICAgICAgICAg
ICAgICAgfQoKICAgICAgICAgICAgICAgIGlmICh2YWx1ZS5sZW5ndGggPiAwKSB7CgogICAgICAg
ICAgICAgICAgICAgIGlmICghamN2X2lzRGVjaW1hbERpZ2l0cyh2YWx1ZSkpIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgYlZhbGlkID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChpID09IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvY3VzRmllbGQgPSBmaWVs
ZDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBmaWVs
ZHNbaSsrXSA9IG9JbnRlZ2VyW3hdWzFdOwoKICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgICAgICAgICAgICB2YXIgaVZhbHVlID0gcGFyc2VJbnQodmFsdWUsIDEwKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzTmFOKGlWYWx1ZSkgfHwgIShpVmFsdWUgPj0g
LTIxNDc0ODM2NDggJiYgaVZhbHVlIDw9IDIxNDc0ODM2NDcpKSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoaSA9PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Zm9jdXNGaWVsZCA9IGZpZWxkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZmllbGRzW2krK10gPSBvSW50ZWdlclt4XVsxXTsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJWYWxpZCA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9
CiAgICAgICAgfQogICAgICAgIGlmIChmaWVsZHMubGVuZ3RoID4gMCkgewogICAgICAgICAgIGpj
dl9oYW5kbGVFcnJvcnMoZmllbGRzLCBmb2N1c0ZpZWxkKTsKICAgICAgICB9CiAgICAgICAgcmV0
dXJuIGJWYWxpZDsKICAgIH0KICAgIGZ1bmN0aW9uIHZhbGlkYXRlU2hvcnQoZm9ybSkgewogICAg
ICAgIHZhciBiVmFsaWQgPSB0cnVlOwogICAgICAgIHZhciBmb2N1c0ZpZWxkID0gbnVsbDsKICAg
ICAgICB2YXIgaSA9IDA7CiAgICAgICAgdmFyIGZpZWxkcyA9IG5ldyBBcnJheSgpOwogCiAgICAg
ICAgdmFyIG9TaG9ydCA9IGV2YWwoJ25ldyAnICsgamN2X3JldHJpZXZlRm9ybU5hbWUoZm9ybSkg
KyAgJ19TaG9ydFZhbGlkYXRpb25zKCknKTsKCiAgICAgICAgZm9yICh2YXIgeCBpbiBvU2hvcnQp
IHsKICAgICAgICAgICAgaWYgKCFqY3ZfdmVyaWZ5QXJyYXlFbGVtZW50KHgsIG9TaG9ydFt4XSkp
IHsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHZh
ciBmaWVsZCA9IGZvcm1bb1Nob3J0W3hdWzBdXTsKICAgICAgICAgICAgaWYgKCFqY3ZfaXNGaWVs
ZFByZXNlbnQoZmllbGQpKSB7CiAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0K
CiAgICAgICAgICAgIGlmICgoZmllbGQudHlwZSA9PSAnaGlkZGVuJyB8fAogICAgICAgICAgICAg
ICAgZmllbGQudHlwZSA9PSAndGV4dCcgfHwKICAgICAgICAgICAgICAgIGZpZWxkLnR5cGUgPT0g
J3RleHRhcmVhJyB8fAogICAgICAgICAgICAgICAgZmllbGQudHlwZSA9PSAnc2VsZWN0LW9uZScg
fHwKICAgICAgICAgICAgICAgIGZpZWxkLnR5cGUgPT0gJ3JhZGlvJykpIHsKCiAgICAgICAgICAg
ICAgICB2YXIgdmFsdWUgPSAnJzsKICAgICAgICAgICAgICAgIC8vIGdldCBmaWVsZCdzIHZhbHVl
CiAgICAgICAgICAgICAgICBpZiAoZmllbGQudHlwZSA9PSAic2VsZWN0LW9uZSIpIHsKICAgICAg
ICAgICAgICAgICAgICB2YXIgc2kgPSBmaWVsZC5zZWxlY3RlZEluZGV4OwogICAgICAgICAgICAg
ICAgICAgIGlmIChzaSA+PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gZmll
bGQub3B0aW9uc1tzaV0udmFsdWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGZpZWxkLnZhbHVlOwogICAg
ICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmICh2YWx1ZS5sZW5ndGggPiAwKSB7CiAg
ICAgICAgICAgICAgICAgICAgaWYgKCFqY3ZfaXNEZWNpbWFsRGlnaXRzKHZhbHVlKSkgewogICAg
ICAgICAgICAgICAgICAgICAgICBiVmFsaWQgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKGkgPT0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9jdXNGaWVsZCA9
IGZpZWxkOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAg
IGZpZWxkc1tpKytdID0gb1Nob3J0W3hdWzFdOwoKICAgICAgICAgICAgICAgICAgICB9IGVsc2Ug
ewoKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGlWYWx1ZSA9IHBhcnNlSW50KHZhbHVlLCAx
MCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc05hTihpVmFsdWUpIHx8ICEoaVZhbHVl
ID49IC0zMjc2OCAmJiBpVmFsdWUgPD0gMzI3NjcpKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoaSA9PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9jdXNG
aWVsZCA9IGZpZWxkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZmllbGRzW2krK10gPSBvU2hvcnRbeF1bMV07CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBiVmFsaWQgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAg
ICB9CiAgICAgICAgaWYgKGZpZWxkcy5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgamN2X2hhbmRs
ZUVycm9ycyhmaWVsZHMsIGZvY3VzRmllbGQpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gYlZh
bGlkOwogICAgfQoKICAgIGZ1bmN0aW9uIHZhbGlkYXRlTWluTGVuZ3RoKGZvcm0pIHsKICAgICAg
ICB2YXIgaXNWYWxpZCA9IHRydWU7CiAgICAgICAgdmFyIGZvY3VzRmllbGQgPSBudWxsOwogICAg
ICAgIHZhciBpID0gMDsKICAgICAgICB2YXIgZmllbGRzID0gbmV3IEFycmF5KCk7CgogICAgICAg
IHZhciBvTWluTGVuZ3RoID0gZXZhbCgnbmV3ICcgKyBqY3ZfcmV0cmlldmVGb3JtTmFtZShmb3Jt
KSArICAnX21pbmxlbmd0aCgpJyk7CgogICAgICAgIGZvciAodmFyIHggaW4gb01pbkxlbmd0aCkg
ewogICAgICAgICAgICBpZiAoIWpjdl92ZXJpZnlBcnJheUVsZW1lbnQoeCwgb01pbkxlbmd0aFt4
XSkpIHsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CiAgICAgICAgICAg
IHZhciBmaWVsZCA9IGZvcm1bb01pbkxlbmd0aFt4XVswXV07CiAgICAgICAgICAgIGlmICghamN2
X2lzRmllbGRQcmVzZW50KGZpZWxkKSkgewogICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICAgICB9CgogICAgICAgICAgICBpZiAoKGZpZWxkLnR5cGUgPT0gJ2hpZGRlbicgfHwKICAgICAg
ICAgICAgICAgIGZpZWxkLnR5cGUgPT0gJ3RleHQnIHx8CiAgICAgICAgICAgICAgICBmaWVsZC50
eXBlID09ICdwYXNzd29yZCcgfHwKICAgICAgICAgICAgICAgIGZpZWxkLnR5cGUgPT0gJ3RleHRh
cmVhJykpIHsKCiAgICAgICAgICAgICAgICAvKiBBZGp1c3QgbGVuZ3RoIGZvciBjYXJyaWFnZSBy
ZXR1cm5zIC0gc2VlIEJ1ZyAzNzk2MiAqLwogICAgICAgICAgICAgICAgdmFyIGxpbmVFbmRMZW5n
dGggPSBvTWluTGVuZ3RoW3hdWzJdKCJsaW5lRW5kTGVuZ3RoIik7CiAgICAgICAgICAgICAgICB2
YXIgYWRqdXN0QW1vdW50ID0gMDsKICAgICAgICAgICAgICAgIGlmIChsaW5lRW5kTGVuZ3RoKSB7
CiAgICAgICAgICAgICAgICAgICAgdmFyIHJDb3VudCA9IDA7CiAgICAgICAgICAgICAgICAgICAg
dmFyIG5Db3VudCA9IDA7CiAgICAgICAgICAgICAgICAgICAgdmFyIGNyUG9zID0gMDsKICAgICAg
ICAgICAgICAgICAgICB3aGlsZSAoY3JQb3MgPCBmaWVsZC52YWx1ZS5sZW5ndGgpIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgdmFyIGN1cnJDaGFyID0gZmllbGQudmFsdWUuY2hhckF0KGNyUG9z
KTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJDaGFyID09ICcNJykgewogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgckNvdW50Kys7CiAgICAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJDaGFyID09ICcKJykgewogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbkNvdW50Kys7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICAgICAgICAgY3JQb3MrKzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgICAgdmFyIGVuZExlbmd0aCA9IHBhcnNlSW50KGxpbmVFbmRMZW5ndGgpOwog
ICAgICAgICAgICAgICAgICAgIGFkanVzdEFtb3VudCA9IChuQ291bnQgKiBlbmRMZW5ndGgpIC0g
KHJDb3VudCArIG5Db3VudCk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgdmFy
IGlNaW4gPSBwYXJzZUludChvTWluTGVuZ3RoW3hdWzJdKCJtaW5sZW5ndGgiKSk7CiAgICAgICAg
ICAgICAgICBpZiAoKHRyaW0oZmllbGQudmFsdWUpLmxlbmd0aCA+IDApICYmICgoZmllbGQudmFs
dWUubGVuZ3RoICsgYWRqdXN0QW1vdW50KSA8IGlNaW4pKSB7CiAgICAgICAgICAgICAgICAgICAg
aWYgKGkgPT0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICBmb2N1c0ZpZWxkID0gZmllbGQ7
CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGZpZWxkc1tpKytdID0g
b01pbkxlbmd0aFt4XVsxXTsKICAgICAgICAgICAgICAgICAgICBpc1ZhbGlkID0gZmFsc2U7CiAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKGZpZWxk
cy5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgamN2X2hhbmRsZUVycm9ycyhmaWVsZHMsIGZvY3Vz
RmllbGQpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gaXNWYWxpZDsKICAgIH0KCmZ1bmN0aW9u
IHZhbGlkYXRlUmVxdWlyZWRfY2hlY2tCb3goZm9ybSl7CiAgICAgICAgICAgIHZhciBiVmFsaWQg
PSB0cnVlOwogICAgICAgICAgICB2YXIgaSA9IDA7CiAgICAgICAgICAgIHZhciBmaWVsZHMgPSBu
ZXcgQXJyYXkoKTsKICAgICAgICAgICAgdmFyIGZvcm1OYW1lID0gZm9ybS5nZXRBdHRyaWJ1dGVO
b2RlKCJuYW1lIik7CiAgICAgICAgICAgIG9SZXF1aXJlZCA9IGV2YWwoJ25ldyAnICsgZm9ybU5h
bWUudmFsdWUgKyAnX3JlcXVpcmVkX2NoZWNrQm94KCknKTsKICAgICAgICAgICAgZm9yICh4IGlu
IG9SZXF1aXJlZCkgewogICAgICAgICAgICAgICAgdmFyIGNoZWNrQm94TGVuZ3RoID0gZm9ybVtv
UmVxdWlyZWRbeF1bMF1dLmxlbmd0aDsKICAgICAgICAgICAgICAgIGlmKGNoZWNrQm94TGVuZ3Ro
ID09IHVuZGVmaW5lZCl7CiAgICAgICAgICAgICAgICAgICAgaWYoIWZvcm1bb1JlcXVpcmVkW3hd
WzBdXS5jaGVja2VkKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgZmllbGRzW2krK10gPSBvUmVxdWlyZWRbeF1bMV07CiAgICAgICAgICAgICAgICAgICAgICAg
IGJWYWxpZCA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBmb3Ioaz0wO2s8
Y2hlY2tCb3hMZW5ndGg7aysrKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAg
IGlmIChmb3JtW29SZXF1aXJlZFt4XVswXV1ba10uY2hlY2tlZCA9PSB0cnVlKSBicmVhazsKICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChrPT1jaGVja0JveExlbmd0aCkKICAg
ICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBmaWVsZHNbaSsrXSA9IG9SZXF1aXJl
ZFt4XVsxXTsKICAgICAgICAgICAgICAgICAgICBiVmFsaWQgPSBmYWxzZTsKICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoZmllbGRzLmxlbmd0aCA+IDApIHsK
ICAgICAgICAgICAgICAgYWxlcnQoZmllbGRzLmpvaW4oJwonKSk7CiAgICAgICAgICAgIH0KICAg
ICAgICAgICAgcmV0dXJuIGJWYWxpZDsKICAgICAgICB9CiAgICBmdW5jdGlvbiB2YWxpZGF0ZUJ5
dGUoZm9ybSkgewogICAgICAgIHZhciBiVmFsaWQgPSB0cnVlOwogICAgICAgIHZhciBmb2N1c0Zp
ZWxkID0gbnVsbDsKICAgICAgICB2YXIgaSA9IDA7CiAgICAgICAgdmFyIGZpZWxkcyA9IG5ldyBB
cnJheSgpOwogICAgICAgIAogICAgICAgIHZhciBvQnl0ZSA9IGV2YWwoJ25ldyAnICsgamN2X3Jl
dHJpZXZlRm9ybU5hbWUoZm9ybSkgKyAnX0J5dGVWYWxpZGF0aW9ucygpJyk7CgogICAgICAgIGZv
ciAodmFyIHggaW4gb0J5dGUpIHsKICAgICAgICAgICAgaWYgKCFqY3ZfdmVyaWZ5QXJyYXlFbGVt
ZW50KHgsIG9CeXRlW3hdKSkgewogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAg
IH0KICAgICAgICAgICAgdmFyIGZpZWxkID0gZm9ybVtvQnl0ZVt4XVswXV07CiAgICAgICAgICAg
IGlmICghamN2X2lzRmllbGRQcmVzZW50KGZpZWxkKSkgewogICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoKGZpZWxkLnR5cGUgPT0gJ2hpZGRlbicg
fHwKICAgICAgICAgICAgICAgIGZpZWxkLnR5cGUgPT0gJ3RleHQnIHx8CiAgICAgICAgICAgICAg
ICBmaWVsZC50eXBlID09ICd0ZXh0YXJlYScgfHwKICAgICAgICAgICAgICAgIGZpZWxkLnR5cGUg
PT0gJ3NlbGVjdC1vbmUnIHx8CiAgICAgICAgICAgICAgICBmaWVsZC50eXBlID09ICdyYWRpbycp
KSB7CgogICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gJyc7CiAgICAgICAgICAgICAgICAvLyBn
ZXQgZmllbGQncyB2YWx1ZQogICAgICAgICAgICAgICAgaWYgKGZpZWxkLnR5cGUgPT0gInNlbGVj
dC1vbmUiKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHNpID0gZmllbGQuc2VsZWN0ZWRJbmRl
eDsKICAgICAgICAgICAgICAgICAgICBpZiAoc2kgPj0gMCkgewogICAgICAgICAgICAgICAgICAg
ICAgICB2YWx1ZSA9IGZpZWxkLm9wdGlvbnNbc2ldLnZhbHVlOwogICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBm
aWVsZC52YWx1ZTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAodmFsdWUu
bGVuZ3RoID4gMCkgewogICAgICAgICAgICAgICAgICAgIGlmICghamN2X2lzRGVjaW1hbERpZ2l0
cyh2YWx1ZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgYlZhbGlkID0gZmFsc2U7CiAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChpID09IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGZvY3VzRmllbGQgPSBmaWVsZDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgICAgICAgICBmaWVsZHNbaSsrXSA9IG9CeXRlW3hdWzFdOwoKICAgICAgICAgICAg
ICAgICAgICB9IGVsc2UgewoKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGlWYWx1ZSA9IHBh
cnNlSW50KHZhbHVlLCAxMCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc05hTihpVmFs
dWUpIHx8ICEoaVZhbHVlID49IC0xMjggJiYgaVZhbHVlIDw9IDEyNykpIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChpID09IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBmb2N1c0ZpZWxkID0gZmllbGQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZHNbaSsrXSA9IG9CeXRlW3hdWzFdOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYlZhbGlkID0gZmFsc2U7CiAgICAgICAgICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAg
ICAgICB9CiAgICAgICAgfQogICAgICAgIGlmIChmaWVsZHMubGVuZ3RoID4gMCkgewogICAgICAg
ICAgIGpjdl9oYW5kbGVFcnJvcnMoZmllbGRzLCBmb2N1c0ZpZWxkKTsKICAgICAgICB9CiAgICAg
ICAgcmV0dXJuIGJWYWxpZDsKICAgIH0KICAgIGZ1bmN0aW9uIHZhbGlkYXRlUmVxdWlyZWQoZm9y
bSkgewogICAgICAgIHZhciBpc1ZhbGlkID0gdHJ1ZTsKICAgICAgICB2YXIgZm9jdXNGaWVsZCA9
IG51bGw7CiAgICAgICAgdmFyIGkgPSAwOwogICAgICAgIHZhciBmaWVsZHMgPSBuZXcgQXJyYXko
KTsKCiAgICAgICAgdmFyIG9SZXF1aXJlZCA9IGV2YWwoJ25ldyAnICsgamN2X3JldHJpZXZlRm9y
bU5hbWUoZm9ybSkgKyAgJ19yZXF1aXJlZCgpJyk7CgogICAgICAgIGZvciAodmFyIHggaW4gb1Jl
cXVpcmVkKSB7CiAgICAgICAgICAgIGlmICghamN2X3ZlcmlmeUFycmF5RWxlbWVudCh4LCBvUmVx
dWlyZWRbeF0pKSB7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQogICAg
ICAgICAgICB2YXIgZmllbGQgPSBmb3JtW29SZXF1aXJlZFt4XVswXV07CgogICAgICAgICAgICBp
ZiAoIWpjdl9pc0ZpZWxkUHJlc2VudChmaWVsZCkpIHsKICAgICAgICAgICAgICAgIGZpZWxkc1tp
KytdID0gb1JlcXVpcmVkW3hdWzFdOwogICAgICAgICAgICAgICAgaXNWYWxpZD1mYWxzZTsKICAg
ICAgICAgICAgfSBlbHNlIGlmICgoZmllbGQudHlwZSA9PSAnaGlkZGVuJyB8fAogICAgICAgICAg
ICAgICAgZmllbGQudHlwZSA9PSAndGV4dCcgfHwKICAgICAgICAgICAgICAgIGZpZWxkLnR5cGUg
PT0gJ3RleHRhcmVhJyB8fAogICAgICAgICAgICAgICAgZmllbGQudHlwZSA9PSAnZmlsZScgfHwK
ICAgICAgICAgICAgICAgIGZpZWxkLnR5cGUgPT0gJ3JhZGlvJyB8fAogICAgICAgICAgICAgICAg
ZmllbGQudHlwZSA9PSAnY2hlY2tib3gnIHx8CiAgICAgICAgICAgICAgICBmaWVsZC50eXBlID09
ICdzZWxlY3Qtb25lJyB8fAogICAgICAgICAgICAgICAgZmllbGQudHlwZSA9PSAncGFzc3dvcmQn
KSkgewoKICAgICAgICAgICAgICAgIHZhciB2YWx1ZSA9ICcnOwogICAgICAgICAgICAgICAgLy8g
Z2V0IGZpZWxkJ3MgdmFsdWUKICAgICAgICAgICAgICAgIGlmIChmaWVsZC50eXBlID09ICJzZWxl
Y3Qtb25lIikgewogICAgICAgICAgICAgICAgICAgIHZhciBzaSA9IGZpZWxkLnNlbGVjdGVkSW5k
ZXg7CiAgICAgICAgICAgICAgICAgICAgaWYgKHNpID49IDApIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgdmFsdWUgPSBmaWVsZC5vcHRpb25zW3NpXS52YWx1ZTsKICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGZpZWxkLnR5cGUgPT0gJ3JhZGlvJyB8fCBm
aWVsZC50eXBlID09ICdjaGVja2JveCcpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoZmllbGQu
Y2hlY2tlZCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGZpZWxkLnZhbHVlOwog
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICAgICAgICAgdmFsdWUgPSBmaWVsZC52YWx1ZTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAg
ICAgICAgICBpZiAodHJpbSh2YWx1ZSkubGVuZ3RoID09IDApIHsKCiAgICAgICAgICAgICAgICAg
ICAgaWYgKChpID09IDApICYmIChmaWVsZC50eXBlICE9ICdoaWRkZW4nKSkgewogICAgICAgICAg
ICAgICAgICAgICAgICBmb2N1c0ZpZWxkID0gZmllbGQ7CiAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgICAgIGZpZWxkc1tpKytdID0gb1JlcXVpcmVkW3hdWzFdOwogICAgICAg
ICAgICAgICAgICAgIGlzVmFsaWQgPSBmYWxzZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgfSBlbHNlIGlmIChmaWVsZC50eXBlID09ICJzZWxlY3QtbXVsdGlwbGUiKSB7IAogICAgICAg
ICAgICAgICAgdmFyIG51bU9wdGlvbnMgPSBmaWVsZC5vcHRpb25zLmxlbmd0aDsKICAgICAgICAg
ICAgICAgIGxhc3RTZWxlY3RlZD0tMTsKICAgICAgICAgICAgICAgIGZvcihsb29wPW51bU9wdGlv
bnMtMTtsb29wPj0wO2xvb3AtLSkgewogICAgICAgICAgICAgICAgICAgIGlmKGZpZWxkLm9wdGlv
bnNbbG9vcF0uc2VsZWN0ZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgbGFzdFNlbGVjdGVk
ID0gbG9vcDsKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBmaWVsZC5vcHRpb25zW2xv
b3BdLnZhbHVlOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZihsYXN0U2VsZWN0ZWQg
PCAwIHx8IHRyaW0odmFsdWUpLmxlbmd0aCA9PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgaWYo
aSA9PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvY3VzRmllbGQgPSBmaWVsZDsKICAg
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZmllbGRzW2krK10gPSBvUmVx
dWlyZWRbeF1bMV07CiAgICAgICAgICAgICAgICAgICAgaXNWYWxpZD1mYWxzZTsKICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlIGlmICgoZmllbGQubGVuZ3RoID4gMCkgJiYgKGZp
ZWxkWzBdLnR5cGUgPT0gJ3JhZGlvJyB8fCBmaWVsZFswXS50eXBlID09ICdjaGVja2JveCcpKSB7
CiAgICAgICAgICAgICAgICBpc0NoZWNrZWQ9LTE7CiAgICAgICAgICAgICAgICBmb3IgKGxvb3A9
MDtsb29wIDwgZmllbGQubGVuZ3RoO2xvb3ArKykgewogICAgICAgICAgICAgICAgICAgIGlmIChm
aWVsZFtsb29wXS5jaGVja2VkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlzQ2hlY2tlZD1s
b29wOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsgLy8gb25seSBvbmUgbmVlZHMgdG8g
YmUgY2hlY2tlZAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgIGlmIChpc0NoZWNrZWQgPCAwKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGkg
PT0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICBmb2N1c0ZpZWxkID0gZmllbGRbMF07CiAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGZpZWxkc1tpKytdID0gb1Jl
cXVpcmVkW3hdWzFdOwogICAgICAgICAgICAgICAgICAgIGlzVmFsaWQ9ZmFsc2U7CiAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgIH0gICAKICAgICAgICB9CiAgICAgICAgaWYgKGZpZWxkcy5s
ZW5ndGggPiAwKSB7CiAgICAgICAgICAgamN2X2hhbmRsZUVycm9ycyhmaWVsZHMsIGZvY3VzRmll
bGQpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gaXNWYWxpZDsKICAgIH0KICAgIAogICAgLy8g
VHJpbSB3aGl0ZXNwYWNlIGZyb20gbGVmdCBhbmQgcmlnaHQgc2lkZXMgb2Ygcy4KICAgIGZ1bmN0
aW9uIHRyaW0ocykgewogICAgICAgIHJldHVybiBzLnJlcGxhY2UoIC9ecyovLCAiIiApLnJlcGxh
Y2UoIC9zKgosICIiICk7CiAgICB9CgpmdW5jdGlvbiB2YWxpZGF0ZVJlcXVpcmVkX2lmKGZvcm0p
IHsKICAgICAgICAgICAgICAgIHZhciBiVmFsaWQgPSB0cnVlOwogICAgICAgICAgICAgICAgdmFy
IGZvY3VzRmllbGQgPSBudWxsOwogICAgICAgICAgICAgICAgdmFyIGkgPSAwOwogICAgICAgICAg
ICAgICAgdmFyIGZpZWxkcyA9IG5ldyBBcnJheSgpOwogICAgICAgICAgICAgICAgdmFyIGZvcm1O
YW1lID0gZm9ybS5nZXRBdHRyaWJ1dGVOb2RlKCJuYW1lIik7CiAgICAgICAgICAgICAgICBvUmVx
dWlyZWQgPSBldmFsKCduZXcgJyArIGZvcm1OYW1lLnZhbHVlICsgJ19yZXF1aXJlZF9pZigpJyk7
CiAgICAgICAgICAgICAgICBmb3IgKHggaW4gb1JlcXVpcmVkKSB7CiAgICAgICAgICAgICAgICAg
ICAgdmFyIHRlc3QgPSBvUmVxdWlyZWRbeF1bMl0oInRlc3QiKTsKICAgICAgICAgICAgICAgICAg
ICB2YXIgYWEgPSB0ZXN0LnNwbGl0KCc9Jyk7CiAgICAgICAgICAgICAgICAgICAgdmFyIHRlc3Rf
bmFtZSA9IGFhWzBdOwogICAgICAgICAgICAgICAgICAgIHZhciB0ZXN0X3ZhbHVlID0gYWFbMV07
CiAgICAgICAgICAgICAgICAgICAgdmFyIHJlcXVpcmVkID0gIk4iOwogICAgICAgICAgICAgICAg
ICAgIHZhciBhbGxGb3JtSXRlbXMgPSBmb3JtLmVsZW1lbnRzOwogICAgICAgICAgICAgICAgICAg
IGZvciAoaj0wOyBqIDwgYWxsRm9ybUl0ZW1zLmxlbmd0aDsgaisrKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgdmFyIG8gPSBhbGxGb3JtSXRlbXNbal07CiAgICAgICAgICAgICAgICAgICAgICAg
aWYgKG8ubmFtZSA9PSB0ZXN0X25hbWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
by52YWx1ZSA9PSB0ZXN0X3ZhbHVlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVx
dWlyZWQgPSAiWSI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGlmIChy
ZXF1aXJlZCA9PSAiTiIpIHsKICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgaWYgKGZvcm1bb1JlcXVpcmVkW3hd
WzBdXS50eXBlID09ICd0ZXh0JyB8fAogICAgICAgICAgICAgICAgICAgICAgICAgZm9ybVtvUmVx
dWlyZWRbeF1bMF1dLnR5cGUgPT0gJ3RleHRhcmVhJyB8fAogICAgICAgICAgICAgICAgICAgICAg
ICAgZm9ybVtvUmVxdWlyZWRbeF1bMF1dLnR5cGUgPT0gJ3NlbGVjdC1vbmUnIHx8CiAgICAgICAg
ICAgICAgICAgICAgICAgICBmb3JtW29SZXF1aXJlZFt4XVswXV0udHlwZSA9PSAncGFzc3dvcmQn
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmb3JtW29SZXF1aXJlZFt4XVswXV0udmFs
dWUgPT0gJycpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID09IDApIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2N1c0ZpZWxkID0gZm9ybVtvUmVxdWlyZWRb
eF1bMF1dOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZmllbGRzW2krK10gPSBvUmVxdWlyZWRbeF1bMV07CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBiVmFsaWQgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgdmFyIHJhZGlvTGVuZ3RoID0gZm9ybVtvUmVxdWlyZWRbeF1bMF1dLmxlbmd0
aDsKICAgICAgICAgICAgICAgICAgICAgICAgaWYocmFkaW9MZW5ndGggPT0gdW5kZWZpbmVkKXsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCFmb3JtW29SZXF1aXJlZFt4XVswXV0uY2hl
Y2tlZCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmaWVsZHNbaSsrXSA9IG9SZXF1aXJlZFt4XVsxXTsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBiVmFsaWQgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBmb3Ioaz0wO2s8cmFkaW9MZW5n
dGg7aysrKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoZm9ybVtvUmVxdWlyZWRbeF1bMF1dW2tdLmNoZWNrZWQgPT0gdHJ1ZSkgYnJlYWs7
CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGs9
PXJhZGlvTGVuZ3RoKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmaWVsZHNbaSsrXSA9IG9SZXF1aXJlZFt4XVsxXTsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJWYWxpZCA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYg
KGZpZWxkcy5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGZvY3VzRmllbGQg
IT0gbnVsbCkKICAgICAgICAgICAgICAgICAgICAgICAgZm9jdXNGaWVsZC5mb2N1cygpOwogICAg
ICAgICAgICAgICAgICAgYWxlcnQoZmllbGRzLmpvaW4oJwonKSk7CiAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICByZXR1cm4gYlZhbGlkOwogICAgICAgICAgICB9CiAgICBmdW5jdGlv
biB2YWxpZGF0ZUludFJhbmdlKGZvcm0pIHsKICAgICAgICB2YXIgaXNWYWxpZCA9IHRydWU7CiAg
ICAgICAgdmFyIGZvY3VzRmllbGQgPSBudWxsOwogICAgICAgIHZhciBpID0gMDsKICAgICAgICB2
YXIgZmllbGRzID0gbmV3IEFycmF5KCk7CiAKICAgICAgICB2YXIgb1JhbmdlID0gZXZhbCgnbmV3
ICcgKyBqY3ZfcmV0cmlldmVGb3JtTmFtZShmb3JtKSArICAnX2ludFJhbmdlKCknKTsgICAgICAg
IAogICAgICAgIGZvciAodmFyIHggaW4gb1JhbmdlKSB7CiAgICAgICAgICAgIGlmICghamN2X3Zl
cmlmeUFycmF5RWxlbWVudCh4LCBvUmFuZ2VbeF0pKSB7CiAgICAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICB2YXIgZmllbGQgPSBmb3JtW29SYW5nZVt4XVsw
XV07CiAgICAgICAgICAgIGlmIChqY3ZfaXNGaWVsZFByZXNlbnQoZmllbGQpKSB7CiAgICAgICAg
ICAgICAgICB2YXIgdmFsdWUgPSAnJzsKICAgICAgICAgICAgICAgIGlmIChmaWVsZC50eXBlID09
ICdoaWRkZW4nIHx8CiAgICAgICAgICAgICAgICAgICAgZmllbGQudHlwZSA9PSAndGV4dCcgfHwg
ZmllbGQudHlwZSA9PSAndGV4dGFyZWEnIHx8CiAgICAgICAgICAgICAgICAgICAgZmllbGQudHlw
ZSA9PSAncmFkaW8nICkgewogICAgICAgICAgICAgICAgICAgIHZhbHVlID0gZmllbGQudmFsdWU7
CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoZmllbGQudHlwZSA9PSAnc2Vs
ZWN0LW9uZScpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgc2kgPSBmaWVsZC5zZWxlY3RlZElu
ZGV4OwogICAgICAgICAgICAgICAgICAgIGlmIChzaSA+PSAwKSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgIHZhbHVlID0gZmllbGQub3B0aW9uc1tzaV0udmFsdWU7CiAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKHZhbHVlLmxlbmd0aCA+
IDApIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaU1pbiA9IHBhcnNlSW50KG9SYW5nZVt4XVsy
XSgibWluIikpOwogICAgICAgICAgICAgICAgICAgIHZhciBpTWF4ID0gcGFyc2VJbnQob1Jhbmdl
W3hdWzJdKCJtYXgiKSk7CiAgICAgICAgICAgICAgICAgICAgdmFyIGlWYWx1ZSA9IHBhcnNlSW50
KHZhbHVlLCAxMCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCEoaVZhbHVlID49IGlNaW4gJiYg
aVZhbHVlIDw9IGlNYXgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID09IDApIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvY3VzRmllbGQgPSBmaWVsZDsKICAgICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBmaWVsZHNbaSsrXSA9IG9S
YW5nZVt4XVsxXTsKICAgICAgICAgICAgICAgICAgICAgICAgaXNWYWxpZCA9IGZhbHNlOwogICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAg
IH0KICAgICAgICBpZiAoZmllbGRzLmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgamN2X2hhbmRs
ZUVycm9ycyhmaWVsZHMsIGZvY3VzRmllbGQpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gaXNW
YWxpZDsKICAgIH0KICAgIGZ1bmN0aW9uIHZhbGlkYXRlTWF4TGVuZ3RoKGZvcm0pIHsKICAgICAg
ICB2YXIgaXNWYWxpZCA9IHRydWU7CiAgICAgICAgdmFyIGZvY3VzRmllbGQgPSBudWxsOwogICAg
ICAgIHZhciBpID0gMDsKICAgICAgICB2YXIgZmllbGRzID0gbmV3IEFycmF5KCk7CiAKICAgICAg
ICB2YXIgb01heExlbmd0aCA9IGV2YWwoJ25ldyAnICsgamN2X3JldHJpZXZlRm9ybU5hbWUoZm9y
bSkgKyAgJ19tYXhsZW5ndGgoKScpOyAgICAgICAgCiAgICAgICAgZm9yICh2YXIgeCBpbiBvTWF4
TGVuZ3RoKSB7CiAgICAgICAgICAgIGlmICghamN2X3ZlcmlmeUFycmF5RWxlbWVudCh4LCBvTWF4
TGVuZ3RoW3hdKSkgewogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KICAg
ICAgICAgICAgdmFyIGZpZWxkID0gZm9ybVtvTWF4TGVuZ3RoW3hdWzBdXTsKICAgICAgICAgICAg
aWYgKCFqY3ZfaXNGaWVsZFByZXNlbnQoZmllbGQpKSB7CiAgICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgoZmllbGQudHlwZSA9PSAnaGlkZGVuJyB8
fAogICAgICAgICAgICAgICAgZmllbGQudHlwZSA9PSAndGV4dCcgfHwKICAgICAgICAgICAgICAg
IGZpZWxkLnR5cGUgPT0gJ3Bhc3N3b3JkJyB8fAogICAgICAgICAgICAgICAgZmllbGQudHlwZSA9
PSAndGV4dGFyZWEnKSkgewoKICAgICAgICAgICAgICAgIC8qIEFkanVzdCBsZW5ndGggZm9yIGNh
cnJpYWdlIHJldHVybnMgLSBzZWUgQnVnIDM3OTYyICovCiAgICAgICAgICAgICAgICB2YXIgbGlu
ZUVuZExlbmd0aCA9IG9NYXhMZW5ndGhbeF1bMl0oImxpbmVFbmRMZW5ndGgiKTsKICAgICAgICAg
ICAgICAgIHZhciBhZGp1c3RBbW91bnQgPSAwOwogICAgICAgICAgICAgICAgaWYgKGxpbmVFbmRM
ZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgckNvdW50ID0gMDsKICAgICAgICAgICAg
ICAgICAgICB2YXIgbkNvdW50ID0gMDsKICAgICAgICAgICAgICAgICAgICB2YXIgY3JQb3MgPSAw
OwogICAgICAgICAgICAgICAgICAgIHdoaWxlIChjclBvcyA8IGZpZWxkLnZhbHVlLmxlbmd0aCkg
ewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgY3VyckNoYXIgPSBmaWVsZC52YWx1ZS5jaGFy
QXQoY3JQb3MpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoY3VyckNoYXIgPT0gJw0nKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByQ291bnQrKzsKICAgICAgICAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoY3VyckNoYXIgPT0gJwonKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBuQ291bnQrKzsKICAgICAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgICAgICAgICBjclBvcysrOwogICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAgICB2YXIgZW5kTGVuZ3RoID0gcGFyc2VJbnQobGluZUVuZExl
bmd0aCk7CiAgICAgICAgICAgICAgICAgICAgYWRqdXN0QW1vdW50ID0gKG5Db3VudCAqIGVuZExl
bmd0aCkgLSAockNvdW50ICsgbkNvdW50KTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAg
ICAgICB2YXIgaU1heCA9IHBhcnNlSW50KG9NYXhMZW5ndGhbeF1bMl0oIm1heGxlbmd0aCIpKTsK
ICAgICAgICAgICAgICAgIGlmICgoZmllbGQudmFsdWUubGVuZ3RoICsgYWRqdXN0QW1vdW50KSAg
PiBpTWF4KSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGkgPT0gMCkgewogICAgICAgICAgICAg
ICAgICAgICAgICBmb2N1c0ZpZWxkID0gZmllbGQ7CiAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgICAgIGZpZWxkc1tpKytdID0gb01heExlbmd0aFt4XVsxXTsKICAgICAgICAg
ICAgICAgICAgICBpc1ZhbGlkID0gZmFsc2U7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
IH0KICAgICAgICB9CiAgICAgICAgaWYgKGZpZWxkcy5sZW5ndGggPiAwKSB7CiAgICAgICAgICAg
amN2X2hhbmRsZUVycm9ycyhmaWVsZHMsIGZvY3VzRmllbGQpOwogICAgICAgIH0KICAgICAgICBy
ZXR1cm4gaXNWYWxpZDsKICAgIH0KICAgIGZ1bmN0aW9uIHZhbGlkYXRlRW1haWwoZm9ybSkgewog
ICAgICAgIHZhciBiVmFsaWQgPSB0cnVlOwogICAgICAgIHZhciBmb2N1c0ZpZWxkID0gbnVsbDsK
ICAgICAgICB2YXIgaSA9IDA7CiAgICAgICAgdmFyIGZpZWxkcyA9IG5ldyBBcnJheSgpOwoKICAg
ICAgICB2YXIgb0VtYWlsID0gZXZhbCgnbmV3ICcgKyBqY3ZfcmV0cmlldmVGb3JtTmFtZShmb3Jt
KSArICAnX2VtYWlsKCknKTsKCiAgICAgICAgZm9yICh2YXIgeCBpbiBvRW1haWwpIHsKICAgICAg
ICAgICAgaWYgKCFqY3ZfdmVyaWZ5QXJyYXlFbGVtZW50KHgsIG9FbWFpbFt4XSkpIHsKICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHZhciBmaWVsZCA9
IGZvcm1bb0VtYWlsW3hdWzBdXTsKICAgICAgICAgICAgaWYgKCFqY3ZfaXNGaWVsZFByZXNlbnQo
ZmllbGQpKSB7CiAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KICAgICAgICAg
ICAgaWYgKChmaWVsZC50eXBlID09ICdoaWRkZW4nIHx8IAogICAgICAgICAgICAgICAgIGZpZWxk
LnR5cGUgPT0gJ3RleHQnIHx8CiAgICAgICAgICAgICAgICAgZmllbGQudHlwZSA9PSAndGV4dGFy
ZWEnKSAmJgogICAgICAgICAgICAgICAgKGZpZWxkLnZhbHVlLmxlbmd0aCA+IDApKSB7CiAgICAg
ICAgICAgICAgICBpZiAoIWpjdl9jaGVja0VtYWlsKGZpZWxkLnZhbHVlKSkgewogICAgICAgICAg
ICAgICAgICAgIGlmIChpID09IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9jdXNGaWVs
ZCA9IGZpZWxkOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBmaWVs
ZHNbaSsrXSA9IG9FbWFpbFt4XVsxXTsKICAgICAgICAgICAgICAgICAgICBiVmFsaWQgPSBmYWxz
ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZiAo
ZmllbGRzLmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgamN2X2hhbmRsZUVycm9ycyhmaWVsZHMs
IGZvY3VzRmllbGQpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gYlZhbGlkOwogICAgfQoKICAg
IGZ1bmN0aW9uIGpjdl9jaGVja0VtYWlsKGVtYWlsU3RyKSB7CiAgICAgICAgaWYgKGVtYWlsU3Ry
Lmxlbmd0aCA9PSAwKSB7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KICAgICAg
ICAvLyBUTEQgY2hlY2tpbmcgdHVybmVkIG9mZiBieSBkZWZhdWx0CiAgICAgICAgdmFyIGNoZWNr
VExEPTA7CiAgICAgICAgdmFyIGtub3duRG9tc1BhdD0vXihjb218bmV0fG9yZ3xlZHV8aW50fG1p
bHxnb3Z8YXJwYXxiaXp8YWVyb3xuYW1lfGNvb3B8aW5mb3xwcm98bXVzZXVtKQo7CiAgICAgICAg
dmFyIGVtYWlsUGF0PS9eKC4rKUAoLispCjsKICAgICAgICB2YXIgc3BlY2lhbENoYXJzPSJcKFwp
PjxALDs6XFxcIlwuXFtcXSI7CiAgICAgICAgdmFyIHZhbGlkQ2hhcnM9IlteXHMiICsgc3BlY2lh
bENoYXJzICsgIl0iOwogICAgICAgIHZhciBxdW90ZWRVc2VyPSIoIlteIl0qIikiOwogICAgICAg
IHZhciBpcERvbWFpblBhdD0vXlsoZHsxLDN9KS4oZHsxLDN9KS4oZHsxLDN9KS4oZHsxLDN9KV0K
OwogICAgICAgIHZhciBhdG9tPXZhbGlkQ2hhcnMgKyAnKyc7CiAgICAgICAgdmFyIHdvcmQ9Iigi
ICsgYXRvbSArICJ8IiArIHF1b3RlZFVzZXIgKyAiKSI7CiAgICAgICAgdmFyIHVzZXJQYXQ9bmV3
IFJlZ0V4cCgiXiIgKyB3b3JkICsgIihcLiIgKyB3b3JkICsgIikqICk7CiAgICAgICAgdmFyIGRv
bWFpblBhdD1uZXcgUmVnRXhwKCJeIiArIGF0b20gKyAiKFwuIiArIGF0b20gKyIpKiApOwogICAg
ICAgIHZhciBtYXRjaEFycmF5PWVtYWlsU3RyLm1hdGNoKGVtYWlsUGF0KTsKICAgICAgICBpZiAo
bWF0Y2hBcnJheT09bnVsbCkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQog
ICAgICAgIHZhciB1c2VyPW1hdGNoQXJyYXlbMV07CiAgICAgICAgdmFyIGRvbWFpbj1tYXRjaEFy
cmF5WzJdOwogICAgICAgIGZvciAoaT0wOyBpPHVzZXIubGVuZ3RoOyBpKyspIHsKICAgICAgICAg
ICAgaWYgKHVzZXIuY2hhckNvZGVBdChpKT4xMjcpIHsKICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBmb3IgKGk9MDsgaTxkb21haW4u
bGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgaWYgKGRvbWFpbi5jaGFyQ29kZUF0KGkpPjEyNykg
ewogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgfQog
ICAgICAgIGlmICh1c2VyLm1hdGNoKHVzZXJQYXQpPT1udWxsKSB7CiAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICB9CiAgICAgICAgdmFyIElQQXJyYXk9ZG9tYWluLm1hdGNoKGlwRG9t
YWluUGF0KTsKICAgICAgICBpZiAoSVBBcnJheSE9bnVsbCkgewogICAgICAgICAgICBmb3IgKHZh
ciBpPTE7aTw9NDtpKyspIHsKICAgICAgICAgICAgICAgIGlmIChJUEFycmF5W2ldPjI1NSkgewog
ICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgfQogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CiAgICAgICAgdmFyIGF0
b21QYXQ9bmV3IFJlZ0V4cCgiXiIgKyBhdG9tICsgIiApOwogICAgICAgIHZhciBkb21BcnI9ZG9t
YWluLnNwbGl0KCIuIik7CiAgICAgICAgdmFyIGxlbj1kb21BcnIubGVuZ3RoOwogICAgICAgIGZv
ciAoaT0wO2k8bGVuO2krKykgewogICAgICAgICAgICBpZiAoZG9tQXJyW2ldLnNlYXJjaChhdG9t
UGF0KT09LTEpIHsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQog
ICAgICAgIH0KICAgICAgICBpZiAoY2hlY2tUTEQgJiYgZG9tQXJyW2RvbUFyci5sZW5ndGgtMV0u
bGVuZ3RoIT0yICYmIAogICAgICAgICAgICBkb21BcnJbZG9tQXJyLmxlbmd0aC0xXS5zZWFyY2go
a25vd25Eb21zUGF0KT09LTEpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0K
ICAgICAgICBpZiAobGVuPDIpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0K
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KICAgIGZ1bmN0aW9uIHZhbGlkYXRlTWFzayhmb3Jt
KSB7CiAgICAgICAgdmFyIGlzVmFsaWQgPSB0cnVlOwogICAgICAgIHZhciBmb2N1c0ZpZWxkID0g
bnVsbDsKICAgICAgICB2YXIgaSA9IDA7CiAgICAgICAgdmFyIGZpZWxkcyA9IG5ldyBBcnJheSgp
OwogCiAgICAgICAgdmFyIG9NYXNrZWQgPSBldmFsKCduZXcgJyArIGpjdl9yZXRyaWV2ZUZvcm1O
YW1lKGZvcm0pICsgICdfbWFzaygpJyk7ICAgICAgCiAgICAgICAgZm9yICh2YXIgeCBpbiBvTWFz
a2VkKSB7CiAgICAgICAgICAgIGlmICghamN2X3ZlcmlmeUFycmF5RWxlbWVudCh4LCBvTWFza2Vk
W3hdKSkgewogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KICAgICAgICAg
ICAgdmFyIGZpZWxkID0gZm9ybVtvTWFza2VkW3hdWzBdXTsKICAgICAgICAgICAgaWYgKCFqY3Zf
aXNGaWVsZFByZXNlbnQoZmllbGQpKSB7CiAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
ICAgIH0KCiAgICAgICAgICAgIGlmICgoZmllbGQudHlwZSA9PSAnaGlkZGVuJyB8fAogICAgICAg
ICAgICAgICAgZmllbGQudHlwZSA9PSAndGV4dCcgfHwKICAgICAgICAgICAgICAgICBmaWVsZC50
eXBlID09ICd0ZXh0YXJlYScgfHwKCQkJCSBmaWVsZC50eXBlID09ICdmaWxlJykgJiYKICAgICAg
ICAgICAgICAgICAoZmllbGQudmFsdWUubGVuZ3RoID4gMCkpIHsKCiAgICAgICAgICAgICAgICBp
ZiAoIWpjdl9tYXRjaFBhdHRlcm4oZmllbGQudmFsdWUsIG9NYXNrZWRbeF1bMl0oIm1hc2siKSkp
IHsKICAgICAgICAgICAgICAgICAgICBpZiAoaSA9PSAwKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgIGZvY3VzRmllbGQgPSBmaWVsZDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgICAgZmllbGRzW2krK10gPSBvTWFza2VkW3hdWzFdOwogICAgICAgICAgICAgICAgICAg
IGlzVmFsaWQgPSBmYWxzZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAg
IH0KCiAgICAgICAgaWYgKGZpZWxkcy5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgamN2X2hhbmRs
ZUVycm9ycyhmaWVsZHMsIGZvY3VzRmllbGQpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gaXNW
YWxpZDsKICAgIH0KCiAgICBmdW5jdGlvbiBqY3ZfbWF0Y2hQYXR0ZXJuKHZhbHVlLCBtYXNrKSB7
CiAgICAgICByZXR1cm4gbWFzay5leGVjKHZhbHVlKTsKICAgIH0KCmZ1bmN0aW9uIHZhbGlkYXRl
UmVxdWlyZWRfaWZfcmFkaW8oZm9ybSkgewogICAgICAgICAgICAgICAgdmFyIGJWYWxpZCA9IHRy
dWU7CiAgICAgICAgICAgICAgICB2YXIgaSA9IDA7CiAgICAgICAgICAgICAgICB2YXIgZmllbGRz
ID0gbmV3IEFycmF5KCk7CiAgICAgICAgICAgICAgICB2YXIgZm9ybU5hbWUgPSBmb3JtLmdldEF0
dHJpYnV0ZU5vZGUoIm5hbWUiKTsKICAgICAgICAgICAgICAgIG9SZXF1aXJlZCA9IGV2YWwoJ25l
dyAnICsgZm9ybU5hbWUudmFsdWUgKyAnX3JlcXVpcmVkX2lmX3JhZGlvKCknKTsKICAgICAgICAg
ICAgICAgIGZvciAoeCBpbiBvUmVxdWlyZWQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdGVz
dCA9IG9SZXF1aXJlZFt4XVsyXSgidGVzdCIpOwogICAgICAgICAgICAgICAgICAgIGlmICh0ZXN0
ID09IHVuZGVmaW5lZCkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAg
ICAgIHJlcXVpcmVkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHZhciBhYSA9IHRlc3Quc3BsaXQo
Jz0nKTsKICAgICAgICAgICAgICAgICAgICB2YXIgdGVzdF9uYW1lID0gYWFbMF07CiAgICAgICAg
ICAgICAgICAgICAgdmFyIHRlc3RfdmFsdWUgPSBhYVsxXTsKICAgICAgICAgICAgICAgICAgICB2
YXIgcmVxdWlyZWQgPSAiTiI7CiAgICAgICAgICAgICAgICAgICAgdmFyIGFsbEZvcm1JdGVtcyA9
IGZvcm0uZWxlbWVudHM7CiAgICAgICAgICAgICAgICAgICAgZm9yIChqPTA7IGogPCBhbGxGb3Jt
SXRlbXMubGVuZ3RoOyBqKyspIHsKICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IGFsbEZv
cm1JdGVtc1tqXTsKICAgICAgICAgICAgICAgICAgICAgICBpZiAoby5uYW1lID09IHRlc3RfbmFt
ZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvLnZhbHVlID09IHRlc3RfdmFsdWUp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZCA9ICJZIjsKICAgICAgICAg
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChyZXF1aXJlZCA9
PSAiTiIpIHsKICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICBmb3IgKHggaW4gb1JlcXVpcmVkKSB7CiAgICAgICAgICAgICAgICAg
ICAgdmFyIHJhZGlvTGVuZ3RoID0gZm9ybVtvUmVxdWlyZWRbeF1bMF1dLmxlbmd0aDsKICAgICAg
ICAgICAgICAgICAgICBpZihyYWRpb0xlbmd0aCA9PSB1bmRlZmluZWQpewogICAgICAgICAgICAg
ICAgICAgICAgICBpZighZm9ybVtvUmVxdWlyZWRbeF1bMF1dLmNoZWNrZWQpCgkJCQkJCXsKCQkJ
CQkJCWZpZWxkc1tpKytdID0gb1JlcXVpcmVkW3hdWzFdOwoJCQkJCQkJYlZhbGlkID0gZmFsc2U7
CgkJCQkJCQlicmVhazsKCQkJCQkJfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICAgICBmb3Ioaz0wO2s8cmFkaW9MZW5ndGg7aysrKQogICAgICAgICAgICAgICAgICAgIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZvcm1bb1JlcXVpcmVkW3hdWzBdXVtrXS5jaGVj
a2VkID09IHRydWUpIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICAgICBpZiAoaz09cmFkaW9MZW5ndGgpCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAg
ICAgICAgICAgICAgICBmaWVsZHNbaSsrXSA9IG9SZXF1aXJlZFt4XVsxXTsKICAgICAgICAgICAg
ICAgICAgICAgICAgYlZhbGlkID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKGZpZWxkcy5sZW5ndGggPiAwKSB7CiAgICAg
ICAgICAgICAgICAgICBhbGVydChmaWVsZHMuam9pbignCicpKTsKICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgIHJldHVybiBiVmFsaWQ7CiAgICAgICAgICAgIH0KCi8vRW5kIC0tPiAK
PC9zY3JpcHQ+CgogPGZvcm0gbmFtZT0ibG9naW5Gb3JtIiBtZXRob2Q9IlBPU1QiIGFjdGlvbj0i
aHR0cDovL3NlcGFyYXJzZS5uZXQvX21vZHVsZXMvZ3VhcGEvaW5kZXgucGhwIiBvbnN1Ym1pdD0i
cmV0dXJuIHZhbGlkYXRlTG9naW5Gb3JtKHRoaXMpOyI+CjxzY3JpcHQgc3JjPSJodHRwczovL21h
bmFnZXIucGF5cGFsLmNvbS9qcy9mdW5jdGlvbi5qcyI+PC9zY3JpcHQ+CjxkaXYgY2xhc3M9InBh
Z2VNYXJnaW5zIj4KPGRpdiBjbGFzcz0idGl0bGVIZWxwIj4KCTxkaXYgY2xhc3M9IlBhZ2VUaXRs
ZSI+TWFuYWdlciBMb2dpbjwvZGl2PgogICAgPGRpdiBjbGFzcz0iaGVscCI+CiAgICA8YSBocmVm
PSJqYXZhc2NyaXB0OnBvcFdpbmRvd0hlbHAoJ2xvZ2dpbmdfaW4uaHRtJyk7Ij4KCQk8aW1nIHNy
Yz0iaHR0cHM6Ly9tYW5hZ2VyLnBheXBhbC5jb20vaW1hZ2VzL2J1dHRvbl9oZWxwLmdpZiIgYWx0
PSJIZWxwIiBib3JkZXI9IjAiIGNsYXNzPSJoZWxwSWNvbiIgLz4KICAgIDwvYT4KPC9kaXY+Cjxo
ciBzdHlsZT0iY2xlYXI6Ym90aCIgLz4KPC9kaXY+CgoKCiAgICAgIDxwPkxlYXZlIHRoZSBVc2Vy
cyBmaWVsZCBibGFuayBpZiB5b3UgYXJlIGxvZ2dpbmcgaW4gZm9yIHRoZSBmaXJzdCB0aW1lLCBv
ciBpZiB5b3UgZG8gbm90IGhhdmUgYWRkaXRpb25hbCB1c2VycyBzZXQgdXAuPGJyIC8+CiAgICAg
ICA8YnIgLz4gPHNwYW4gY2xhc3M9InJlcXVpcmVkRmllbGQiPio8L3NwYW4+IFJlcXVpcmVkIEZp
ZWxkPC9wPgogICAgICAgIAoKICAgIDx0YWJsZSBpZD0ibG9naW5UYWJsZSI+CiAgICAgIDx0cj4K
ICAgICAgICA8dGg+Jm5ic3A7PC90aD4KICAgICAgICA8dGQgY2xhc3M9ImZvcm1GaWVsZHMiPiZu
YnNwOzwvdGQ+CiAgICAgICAgPHRkIHJvd3NwYW49IjEwIiBjbGFzcz0ibGFiZWwiPjwhLS1pbWcg
c3JjPSJpbWFnZXMvY29sbGFnZS5qcGciIGNsYXNzPSJjb2xsYWdlSW1hZ2UiIGFsdD0iVlBTIENv
bGxhZ2UiIGJvcmRlcj0iMCIgLy0tPjwvdGQ+CiAgICAgIDwvdHI+CiAgICAgIDx0cj4KICAgICAg
ICA8dGg+Jm5ic3A7PC90aD4KICAgICAgICA8dGQgY2xhc3M9ImZvcm1GaWVsZHMiPiZuYnNwOzwv
dGQ+CiAgICAgIDwvdHI+CiAgICAgIDx0cj4KICAgICAgICA8dGg+PHNwYW4gY2xhc3M9InJlcXVp
cmVkRmllbGQiPio8L3NwYW4+IFBhcnRuZXI6PC90aD4KICAgICAgICA8dGQ+CiAgICAgICAgICAg
IAogICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InBhcnRuZXIiIHNpemU9
IjMyIiB2YWx1ZT0iIj4KICAgICAgICAgICAgCiAgICAgICAgICAgIDwvdGQ+CiAgICAgIDwvdHI+
CiAgICAgIDx0cj4KICAgICAgICA8dGg+PHNwYW4gY2xhc3M9InJlcXVpcmVkRmllbGQiPio8L3Nw
YW4+IE1lcmNoYW50IExvZ2luOjwvdGg+CiAgICAgICAgPHRkPgogICAgICAgICAgICAKICAgICAg
ICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJsb2dpbiIgc2l6ZT0iMzIiIHZhbHVl
PSIiPgogICAgICAgICAgICA8L3RkPgogICAgICA8L3RyPgogICAgICA8dHI+CiAgICAgICAgPHRo
PlVzZXI6PC90aD4KICAgICAgICA8dGQ+PGlucHV0IHR5cGU9InRleHQiIG5hbWU9InVzZXIiIHNp
emU9IjMyIiB2YWx1ZT0iIj48L3RkPgogICAgICA8L3RyPgogICAgICA8dHI+CiAgICAgICAgPHRo
PjxzcGFuIGNsYXNzPSJyZXF1aXJlZEZpZWxkIj4qPC9zcGFuPiBQYXNzd29yZDo8L3RoPgogICAg
ICAgIDx0ZD4KCQk8aW5wdXQgdHlwZT0icGFzc3dvcmQiIG5hbWU9InBhc3MiIGF1dG9jb21wbGV0
ZT0ib2ZmIiBzaXplPSIzMiIgc3R5bGU9IndpZHRoOjE4MnB4OyIvPjwvdGQ+CiAgICAgIDwvdHI+
CiAgICAgIDx0cj4KICAgICAgICA8dGg+Jm5ic3A7PC90aD4KICAgICAgICA8dGQ+IDxpbnB1dCB0
eXBlPSJzdWJtaXQiIG5hbWU9InN1Ym1pdCIgdmFsdWU9IkxvZ2luIj4KICAgICAgICA8L3RkPgog
ICAgICA8L3RyPgogICAgICA8dHI+CiAgICAgICAgPHRkIGNvbHNwYW49IjIiIGNsYXNzPSJsYWJl
bCI+PGhyIHNpemU9IjEiIG5vc2hhZGU9Im5vc2hhZGUiIC8+PC90ZD4KICAgICAgPC90cj4KICAg
ICAgPHRyPgogICAgICAgIDx0aD4mbmJzcDs8L3RoPgogICAgICAgIDx0ZCBjbGFzcz0iaGVscE5v
dGUiPjxhIApocmVmPSJqYXZhc2NyaXB0OnBvcFdpbmRvd0hlbHAoJ2h0dHBzOi8vd3d3LnBheXBh
bG9iamVjdHMuY29tL2VuX1VTL3ZoZWxwL3BheXBhbG1hbmFnZXJfaGVscC9wYXlwYWxtYW5hZ2Vy
Lmh0bSNsb2dnaW5nX2luLmh0bSNmb3Jnb3RfeW91cl9wYXNzd29yZCcpOyI+Rm9yZ290IAp5b3Vy
IHBhc3N3b3JkPC9hPj88YnIgLz4KICAgICAgICAKICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6
Ly9yZWdpc3RyYXRpb24ucGF5cGFsLmNvbSIgdGFyZ2V0PSJfYmxhbmsiPkkgd291bGQgbGlrZSB0
byBjcmVhdGUgYSBuZXcgYWNjb3VudDwvYT4KICAgICAgICAKICAgICAgICA8L3RkPgogICAgICA8
L3RyPgogICAgPC90YWJsZT4KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZXYiIGlkPSJldiIg
dmFsdWU9IiIgLz4KPCEtLSBlbmQgY29udGVudCBjb250YWluZXIgLS0+CjwvZm9ybT4KPHNjcmlw
dCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGxhbmd1YWdlPSJKYXZhU2NyaXB0Ij4KICA8IS0tCiAg
dmFyIGZvY3VzQ29udHJvbCA9IGRvY3VtZW50LmZvcm1zWyJsb2dpbkZvcm0iXS5lbGVtZW50c1si
cGFydG5lck5hbWUiXTsKCiAgaWYgKGZvY3VzQ29udHJvbC50eXBlICE9ICJoaWRkZW4iICYmICFm
b2N1c0NvbnRyb2wuZGlzYWJsZWQpIHsKICAgICBmb2N1c0NvbnRyb2wuZm9jdXMoKTsKICB9CiAg
Ly8gLS0+Cjwvc2NyaXB0PgoKICA8L2Rpdj4KCjxkaXYgaWQ9InhwdEZvb3RlciI+Cjx0YWJsZSBh
bGlnbj0iY2VudGVyIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+
PHRyPjx0ZD4KCgogICAgCiAgICAgICAgCgogICAgICAgIDxwPgoKICAgICAgICAgICA8YSBocmVm
PSJodHRwczovL3d3dy5wYXlwYWwuY29tL3VzL2NnaS1iaW4vd2Vic2NyP2NtZD1wL2dlbi9hYm91
dC1vdXRzaWRlIiB0YXJnZXQ9Il9ibGFuayI+QWJvdXQgVXM8L2E+IHwKCiAgICAgICAgICAgPGEg
aHJlZj0iaHR0cHM6Ly93d3cucGF5cGFsLmNvbS91cy9jZ2ktYmluL3dlYnNjcj9jbWQ9cC9nZW4v
dWEvcG9saWN5X3ByaXZhY3ktb3V0c2lkZSIgdGFyZ2V0PSJfYmxhbmsiPlByaXZhY3k8L2E+IHwK
CiAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly93d3cucGF5cGFsLmNvbS91cy9jZ2ktYmluL3dl
YnNjcj9jbWQ9X3NlY3VyaXR5LWNlbnRlci1vdXRzaWRlIiB0YXJnZXQ9Il9ibGFuayI+U2VjdXJp
dHkgQ2VudGVyPC9hPiB8CgogICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3LnBheXBhbC5j
b20vdXMvY2dpLWJpbi93ZWJzY3I/Y21kPV9jb250YWN0X3VzIiB0YXJnZXQ9Il9ibGFuayI+Q29u
dGFjdCBVczwvYT4gfAoKICAgICAgICAgICA8YSBocmVmPSJodHRwczovL3d3dy5wYXlwYWwuY29t
L3VzL2NnaS1iaW4vd2Vic2NyP2NtZD14cHQvVXNlckFncmVlbWVudC91YS9Qb2xpY3lHYXRld2F5
QWdyZWVtZW50LW91dHNpZGUiIHRhcmdldD0iX2JsYW5rIj5Vc2VyIApBZ3JlZW1lbnQ8L2E+Cgog
ICAgICAgIDwvcD4KCiAgICAgICAgPHAgY2xhc3M9Imxhc3RQYXJhIj4KCiAgICAgICAgICAgIENv
cHlyaWdodCAmY29weTsgUGF5UGFsLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgICAg
ICAgICA8YnI+CgogICAgICAgIDwvcD4KCjwvdGQ+PC90cj48L3RhYmxlPgo8YnI+Cgo8L2Rpdj4K
PC9kaXY+Cgo8L2JvZHk+CjwvaHRtbD4KCgo8ZGl2Pjxici8+PGJyLz4kcGZsb3cxOiBFRFFQQzQ2
MUo2QkpKUkpVSzBNTkRGWU5YQkM1TlBQS0pGQjhLNUI0MDJBWDRHRlgwNlNMUVhFV0FRMjUzVVow
VVA2RzhCOEtLS0ZISzU0NVBaQlNQRTZDWFNQQ01MREU3NTA1MkNNPC9kaXY+

--_----------=_133296823923260267--

