public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* Re: c/5654: the "term.i" file to report #5653
@ 2002-02-11  9:29 rodrigc
  0 siblings, 0 replies; 2+ messages in thread
From: rodrigc @ 2002-02-11  9:29 UTC (permalink / raw)
  To: gcc-bugs, gcc-prs, nobody, szaszg

Synopsis: the "term.i" file to report #5653

State-Changed-From-To: open->closed
State-Changed-By: rodrigc
State-Changed-When: Mon Feb 11 09:29:20 2002
State-Changed-Why:
    Duplicate of PR 5653.

http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=5654


^ permalink raw reply	[flat|nested] 2+ messages in thread

* c/5654: the "term.i" file to report #5653
@ 2002-02-10 13:56 szaszg
  0 siblings, 0 replies; 2+ messages in thread
From: szaszg @ 2002-02-10 13:56 UTC (permalink / raw)
  To: gcc-gnats


>Number:         5654
>Category:       c
>Synopsis:       the "term.i" file to report #5653
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          ice-on-legal-code
>Submitter-Id:   net
>Arrival-Date:   Sun Feb 10 13:56:01 PST 2002
>Closed-Date:
>Last-Modified:
>Originator:     Gergely Sza'sz
>Release:        3.0.3
>Organization:
>Environment:

>Description:

>How-To-Repeat:

>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="term.i"; name="term.i"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="term.i"

IyAyICJ0ZXJtLmMiCnN0YXRpYyBjaGFyICpSQ1NpZCA9ICIkSWQ6IHRlcm0uYyx2IDEuMTkuMi4z
IDE5OTkvMTAvMDEgMTA6Mzc6MjMgbGhlY2tpbmcgRXhwICQiOwojIDc3ICJ0ZXJtLmMiCiMgMSAi
cGxvdC5oIiAxCiMgNDMgInBsb3QuaCIKIyAxICJjb25maWcuaCIgMQojIDQ0ICJwbG90LmgiIDIK
CgojIDEgImFuc2ljaGVrLmgiIDEKIyA0NyAicGxvdC5oIiAyCgojIDEgInN0ZGZuLmgiIDEKIyA0
OCAic3RkZm4uaCIKIyAxICIvdXNyL2luY2x1ZGUvY3R5cGUuaCIgMSAzCiMgMjYgIi91c3IvaW5j
bHVkZS9jdHlwZS5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDEgMwojIDI4MyAi
L3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvc3lzL2NkZWZzLmgi
IDEgMwojIDI4NCAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDIgMwojIDMxMSAiL3Vzci9pbmNs
dWRlL2ZlYXR1cmVzLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZ251L3N0dWJzLmgiIDEgMwojIDMx
MiAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDIgMwojIDI3ICIvdXNyL2luY2x1ZGUvY3R5cGUu
aCIgMiAzCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMSAzCiMgMjYgIi91c3IvaW5j
bHVkZS9iaXRzL3R5cGVzLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiMg
MjcgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDIgMwoKCiMgMSAiL3Vzci9sb2NhbC9nY2Mt
My9saWIvZ2NjLWxpYi9pNTg2LXBjLWxpbnV4LWdudS8zLjAuMy9pbmNsdWRlL3N0ZGRlZi5oIiAx
IDMKIyAxOTkgIi91c3IvbG9jYWwvZ2NjLTMvbGliL2djYy1saWIvaTU4Ni1wYy1saW51eC1nbnUv
My4wLjMvaW5jbHVkZS9zdGRkZWYuaCIgMwp0eXBlZGVmIHVuc2lnbmVkIGludCBzaXplX3Q7CiMg
MzAgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDIgMwoKCnR5cGVkZWYgdW5zaWduZWQgY2hh
ciBfX3VfY2hhcjsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBfX3Vfc2hvcnQ7CnR5cGVkZWYgdW5z
aWduZWQgaW50IF9fdV9pbnQ7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBfX3VfbG9uZzsKCl9fZXh0
ZW5zaW9uX18gdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fdV9xdWFkX3Q7Cl9fZXh0
ZW5zaW9uX18gdHlwZWRlZiBsb25nIGxvbmcgaW50IF9fcXVhZF90OwojIDQ5ICIvdXNyL2luY2x1
ZGUvYml0cy90eXBlcy5oIiAzCnR5cGVkZWYgc2lnbmVkIGNoYXIgX19pbnQ4X3Q7CnR5cGVkZWYg
dW5zaWduZWQgY2hhciBfX3VpbnQ4X3Q7CnR5cGVkZWYgc2lnbmVkIHNob3J0IGludCBfX2ludDE2
X3Q7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50IF9fdWludDE2X3Q7CnR5cGVkZWYgc2lnbmVk
IGludCBfX2ludDMyX3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9fdWludDMyX3Q7CgpfX2V4dGVu
c2lvbl9fIHR5cGVkZWYgc2lnbmVkIGxvbmcgbG9uZyBpbnQgX19pbnQ2NF90OwpfX2V4dGVuc2lv
bl9fIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIGludCBfX3VpbnQ2NF90OwoKdHlwZWRlZiBf
X3F1YWRfdCAqX19xYWRkcl90OwoKdHlwZWRlZiBfX3VfcXVhZF90IF9fZGV2X3Q7CnR5cGVkZWYg
X191X2ludCBfX3VpZF90Owp0eXBlZGVmIF9fdV9pbnQgX19naWRfdDsKdHlwZWRlZiBfX3VfbG9u
ZyBfX2lub190Owp0eXBlZGVmIF9fdV9pbnQgX19tb2RlX3Q7CnR5cGVkZWYgX191X2ludCBfX25s
aW5rX3Q7CnR5cGVkZWYgbG9uZyBpbnQgX19vZmZfdDsKdHlwZWRlZiBfX3F1YWRfdCBfX2xvZmZf
dDsKdHlwZWRlZiBpbnQgX19waWRfdDsKdHlwZWRlZiBpbnQgX19zc2l6ZV90Owp0eXBlZGVmIF9f
dV9sb25nIF9fcmxpbV90Owp0eXBlZGVmIF9fdV9xdWFkX3QgX19ybGltNjRfdDsKdHlwZWRlZiBf
X3VfaW50IF9faWRfdDsKCnR5cGVkZWYgc3RydWN0CiAgewogICAgaW50IF9fdmFsWzJdOwogIH0g
X19mc2lkX3Q7CgoKdHlwZWRlZiBpbnQgX19kYWRkcl90Owp0eXBlZGVmIGNoYXIgKl9fY2FkZHJf
dDsKdHlwZWRlZiBsb25nIGludCBfX3RpbWVfdDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX191c2Vj
b25kc190Owp0eXBlZGVmIGxvbmcgaW50IF9fc3VzZWNvbmRzX3Q7CnR5cGVkZWYgbG9uZyBpbnQg
X19zd2Jsa190OwoKdHlwZWRlZiBsb25nIGludCBfX2Nsb2NrX3Q7CgoKdHlwZWRlZiBpbnQgX19j
bG9ja2lkX3Q7CgoKdHlwZWRlZiBpbnQgX190aW1lcl90OwoKCgoKCgp0eXBlZGVmIGludCBfX2tl
eV90OwoKCnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50IF9faXBjX3BpZF90OwoKCgp0eXBlZGVm
IGxvbmcgaW50IF9fYmxrc2l6ZV90OwoKCgoKdHlwZWRlZiBsb25nIGludCBfX2Jsa2NudF90Owp0
eXBlZGVmIF9fcXVhZF90IF9fYmxrY250NjRfdDsKCgp0eXBlZGVmIF9fdV9sb25nIF9fZnNibGtj
bnRfdDsKdHlwZWRlZiBfX3VfcXVhZF90IF9fZnNibGtjbnQ2NF90OwoKCnR5cGVkZWYgX191X2xv
bmcgX19mc2ZpbGNudF90Owp0eXBlZGVmIF9fdV9xdWFkX3QgX19mc2ZpbGNudDY0X3Q7CgoKdHlw
ZWRlZiBfX3VfcXVhZF90IF9faW5vNjRfdDsKCgp0eXBlZGVmIF9fbG9mZl90IF9fb2ZmNjRfdDsK
Cgp0eXBlZGVmIGxvbmcgaW50IF9fdF9zY2FsYXJfdDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGlu
dCBfX3RfdXNjYWxhcl90OwoKCnR5cGVkZWYgaW50IF9faW50cHRyX3Q7CgoKdHlwZWRlZiB1bnNp
Z25lZCBpbnQgX19zb2NrbGVuX3Q7CgoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3B0aHJlYWR0
eXBlcy5oIiAxIDMKIyAyMyAiL3Vzci9pbmNsdWRlL2JpdHMvcHRocmVhZHR5cGVzLmgiIDMKIyAx
ICIvdXNyL2luY2x1ZGUvYml0cy9zY2hlZC5oIiAxIDMKIyA2OCAiL3Vzci9pbmNsdWRlL2JpdHMv
c2NoZWQuaCIgMwpzdHJ1Y3QgX19zY2hlZF9wYXJhbQogIHsKICAgIGludCBfX3NjaGVkX3ByaW9y
aXR5OwogIH07CiMgMjQgIi91c3IvaW5jbHVkZS9iaXRzL3B0aHJlYWR0eXBlcy5oIiAyIDMKCgpz
dHJ1Y3QgX3B0aHJlYWRfZmFzdGxvY2sKewogIGxvbmcgaW50IF9fc3RhdHVzOwogIGludCBfX3Nw
aW5sb2NrOwoKfTsKCgoKdHlwZWRlZiBzdHJ1Y3QgX3B0aHJlYWRfZGVzY3Jfc3RydWN0ICpfcHRo
cmVhZF9kZXNjcjsKCgoKCgp0eXBlZGVmIHN0cnVjdAp7CiAgaW50IF9fZGV0YWNoc3RhdGU7CiAg
aW50IF9fc2NoZWRwb2xpY3k7CiAgc3RydWN0IF9fc2NoZWRfcGFyYW0gX19zY2hlZHBhcmFtOwog
IGludCBfX2luaGVyaXRzY2hlZDsKICBpbnQgX19zY29wZTsKICBzaXplX3QgX19ndWFyZHNpemU7
CiAgaW50IF9fc3RhY2thZGRyX3NldDsKICB2b2lkICpfX3N0YWNrYWRkcjsKICBzaXplX3QgX19z
dGFja3NpemU7Cn0gcHRocmVhZF9hdHRyX3Q7CgoKCnR5cGVkZWYgc3RydWN0CnsKICBzdHJ1Y3Qg
X3B0aHJlYWRfZmFzdGxvY2sgX19jX2xvY2s7CiAgX3B0aHJlYWRfZGVzY3IgX19jX3dhaXRpbmc7
Cn0gcHRocmVhZF9jb25kX3Q7CgoKCnR5cGVkZWYgc3RydWN0CnsKICBpbnQgX19kdW1teTsKfSBw
dGhyZWFkX2NvbmRhdHRyX3Q7CgoKdHlwZWRlZiB1bnNpZ25lZCBpbnQgcHRocmVhZF9rZXlfdDsK
CgoKCgp0eXBlZGVmIHN0cnVjdAp7CiAgaW50IF9fbV9yZXNlcnZlZDsKICBpbnQgX19tX2NvdW50
OwogIF9wdGhyZWFkX2Rlc2NyIF9fbV9vd25lcjsKICBpbnQgX19tX2tpbmQ7CiAgc3RydWN0IF9w
dGhyZWFkX2Zhc3Rsb2NrIF9fbV9sb2NrOwp9IHB0aHJlYWRfbXV0ZXhfdDsKCgoKdHlwZWRlZiBz
dHJ1Y3QKewogIGludCBfX211dGV4a2luZDsKfSBwdGhyZWFkX211dGV4YXR0cl90OwoKCgp0eXBl
ZGVmIGludCBwdGhyZWFkX29uY2VfdDsKIyAxNDAgIi91c3IvaW5jbHVkZS9iaXRzL3B0aHJlYWR0
eXBlcy5oIiAzCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQgcHRocmVhZF90OwojIDE0NCAiL3Vz
ci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMiAzCiMgMjggIi91c3IvaW5jbHVkZS9jdHlwZS5oIiAy
IDMKIyA0MCAiL3Vzci9pbmNsdWRlL2N0eXBlLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZW5kaWFu
LmgiIDEgMwojIDIyICIvdXNyL2luY2x1ZGUvZW5kaWFuLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUv
ZmVhdHVyZXMuaCIgMSAzCiMgMjMgIi91c3IvaW5jbHVkZS9lbmRpYW4uaCIgMiAzCiMgMzcgIi91
c3IvaW5jbHVkZS9lbmRpYW4uaCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL2VuZGlhbi5oIiAx
IDMKIyAzOCAiL3Vzci9pbmNsdWRlL2VuZGlhbi5oIiAyIDMKIyA0MSAiL3Vzci9pbmNsdWRlL2N0
eXBlLmgiIDIgMwoKCgoKCgplbnVtCnsKICBfSVN1cHBlciA9ICgoMCkgPCA4ID8gKCgxIDw8ICgw
KSkgPDwgOCkgOiAoKDEgPDwgKDApKSA+PiA4KSksCiAgX0lTbG93ZXIgPSAoKDEpIDwgOCA/ICgo
MSA8PCAoMSkpIDw8IDgpIDogKCgxIDw8ICgxKSkgPj4gOCkpLAogIF9JU2FscGhhID0gKCgyKSA8
IDggPyAoKDEgPDwgKDIpKSA8PCA4KSA6ICgoMSA8PCAoMikpID4+IDgpKSwKICBfSVNkaWdpdCA9
ICgoMykgPCA4ID8gKCgxIDw8ICgzKSkgPDwgOCkgOiAoKDEgPDwgKDMpKSA+PiA4KSksCiAgX0lT
eGRpZ2l0ID0gKCg0KSA8IDggPyAoKDEgPDwgKDQpKSA8PCA4KSA6ICgoMSA8PCAoNCkpID4+IDgp
KSwKICBfSVNzcGFjZSA9ICgoNSkgPCA4ID8gKCgxIDw8ICg1KSkgPDwgOCkgOiAoKDEgPDwgKDUp
KSA+PiA4KSksCiAgX0lTcHJpbnQgPSAoKDYpIDwgOCA/ICgoMSA8PCAoNikpIDw8IDgpIDogKCgx
IDw8ICg2KSkgPj4gOCkpLAogIF9JU2dyYXBoID0gKCg3KSA8IDggPyAoKDEgPDwgKDcpKSA8PCA4
KSA6ICgoMSA8PCAoNykpID4+IDgpKSwKICBfSVNibGFuayA9ICgoOCkgPCA4ID8gKCgxIDw8ICg4
KSkgPDwgOCkgOiAoKDEgPDwgKDgpKSA+PiA4KSksCiAgX0lTY250cmwgPSAoKDkpIDwgOCA/ICgo
MSA8PCAoOSkpIDw8IDgpIDogKCgxIDw8ICg5KSkgPj4gOCkpLAogIF9JU3B1bmN0ID0gKCgxMCkg
PCA4ID8gKCgxIDw8ICgxMCkpIDw8IDgpIDogKCgxIDw8ICgxMCkpID4+IDgpKSwKICBfSVNhbG51
bSA9ICgoMTEpIDwgOCA/ICgoMSA8PCAoMTEpKSA8PCA4KSA6ICgoMSA8PCAoMTEpKSA+PiA4KSkK
fTsKIyA3NSAiL3Vzci9pbmNsdWRlL2N0eXBlLmgiIDMKZXh0ZXJuIF9fY29uc3QgdW5zaWduZWQg
c2hvcnQgaW50ICpfX2N0eXBlX2I7CmV4dGVybiBfX2NvbnN0IF9faW50MzJfdCAqX19jdHlwZV90
b2xvd2VyOwpleHRlcm4gX19jb25zdCBfX2ludDMyX3QgKl9fY3R5cGVfdG91cHBlcjsKIyA5MSAi
L3Vzci9pbmNsdWRlL2N0eXBlLmgiIDMKZXh0ZXJuIGludCBpc2FsbnVtIChpbnQpIDsKZXh0ZXJu
IGludCBpc2FscGhhIChpbnQpIDsKZXh0ZXJuIGludCBpc2NudHJsIChpbnQpIDsKZXh0ZXJuIGlu
dCBpc2RpZ2l0IChpbnQpIDsKZXh0ZXJuIGludCBpc2xvd2VyIChpbnQpIDsKZXh0ZXJuIGludCBp
c2dyYXBoIChpbnQpIDsKZXh0ZXJuIGludCBpc3ByaW50IChpbnQpIDsKZXh0ZXJuIGludCBpc3B1
bmN0IChpbnQpIDsKZXh0ZXJuIGludCBpc3NwYWNlIChpbnQpIDsKZXh0ZXJuIGludCBpc3VwcGVy
IChpbnQpIDsKZXh0ZXJuIGludCBpc3hkaWdpdCAoaW50KSA7CgoKCgoKCgpleHRlcm4gaW50IHRv
bG93ZXIgKGludCBfX2MpIDsKCgpleHRlcm4gaW50IHRvdXBwZXIgKGludCBfX2MpIDsKCgoKCgoK
ZXh0ZXJuIGludCBpc2FzY2lpIChpbnQgX19jKSA7CgoKCmV4dGVybiBpbnQgdG9hc2NpaSAoaW50
IF9fYykgOwoKCgpleHRlcm4gaW50IF90b3VwcGVyIChpbnQpIDsKZXh0ZXJuIGludCBfdG9sb3dl
ciAoaW50KSA7CiMgMTY4ICIvdXNyL2luY2x1ZGUvY3R5cGUuaCIgMwpleHRlcm4gX19pbmxpbmUg
aW50CnRvbG93ZXIgKGludCBfX2MpCnsKICByZXR1cm4gX19jID49IC0xMjggJiYgX19jIDwgMjU2
ID8gX19jdHlwZV90b2xvd2VyW19fY10gOiBfX2M7Cn0KCmV4dGVybiBfX2lubGluZSBpbnQKdG91
cHBlciAoaW50IF9fYykKewogIHJldHVybiBfX2MgPj0gLTEyOCAmJiBfX2MgPCAyNTYgPyBfX2N0
eXBlX3RvdXBwZXJbX19jXSA6IF9fYzsKfQojIDQ5ICJzdGRmbi5oIiAyCiMgMSAiL3Vzci9sb2Nh
bC9nY2MtMy9saWIvZ2NjLWxpYi9pNTg2LXBjLWxpbnV4LWdudS8zLjAuMy9pbmNsdWRlL3N0ZGlv
LmgiIDEgMwojIDM2ICIvdXNyL2xvY2FsL2djYy0zL2xpYi9nY2MtbGliL2k1ODYtcGMtbGludXgt
Z251LzMuMC4zL2luY2x1ZGUvc3RkaW8uaCIgMwojIDEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5o
IiAxIDMKIyAzNyAiL3Vzci9sb2NhbC9nY2MtMy9saWIvZ2NjLWxpYi9pNTg2LXBjLWxpbnV4LWdu
dS8zLjAuMy9pbmNsdWRlL3N0ZGlvLmgiIDIgMwoKCgoKCiMgMSAiL3Vzci9sb2NhbC9nY2MtMy9s
aWIvZ2NjLWxpYi9pNTg2LXBjLWxpbnV4LWdudS8zLjAuMy9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMK
IyA0MyAiL3Vzci9sb2NhbC9nY2MtMy9saWIvZ2NjLWxpYi9pNTg2LXBjLWxpbnV4LWdudS8zLjAu
My9pbmNsdWRlL3N0ZGlvLmgiIDIgMwoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAx
IDMKIyA0NSAiL3Vzci9sb2NhbC9nY2MtMy9saWIvZ2NjLWxpYi9pNTg2LXBjLWxpbnV4LWdudS8z
LjAuMy9pbmNsdWRlL3N0ZGlvLmgiIDIgMwojIDUzICIvdXNyL2xvY2FsL2djYy0zL2xpYi9nY2Mt
bGliL2k1ODYtcGMtbGludXgtZ251LzMuMC4zL2luY2x1ZGUvc3RkaW8uaCIgMwp0eXBlZGVmIHN0
cnVjdCBfSU9fRklMRSBGSUxFOwojIDYzICIvdXNyL2xvY2FsL2djYy0zL2xpYi9nY2MtbGliL2k1
ODYtcGMtbGludXgtZ251LzMuMC4zL2luY2x1ZGUvc3RkaW8uaCIgMwp0eXBlZGVmIHN0cnVjdCBf
SU9fRklMRSBfX0ZJTEU7CiMgNzMgIi91c3IvbG9jYWwvZ2NjLTMvbGliL2djYy1saWIvaTU4Ni1w
Yy1saW51eC1nbnUvMy4wLjMvaW5jbHVkZS9zdGRpby5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2xp
YmlvLmgiIDEgMwojIDMwICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwojIDEgIi91c3IvaW5jbHVk
ZS9fR19jb25maWcuaCIgMSAzCiMgOSAiL3Vzci9pbmNsdWRlL19HX2NvbmZpZy5oIiAzCiMgMSAi
L3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMSAzCiMgMTAgIi91c3IvaW5jbHVkZS9fR19jb25m
aWcuaCIgMiAzCgoKCgojIDEgIi91c3IvbG9jYWwvZ2NjLTMvbGliL2djYy1saWIvaTU4Ni1wYy1s
aW51eC1nbnUvMy4wLjMvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMjg3ICIvdXNyL2xvY2FsL2dj
Yy0zL2xpYi9nY2MtbGliL2k1ODYtcGMtbGludXgtZ251LzMuMC4zL2luY2x1ZGUvc3RkZGVmLmgi
IDMKdHlwZWRlZiBsb25nIGludCB3Y2hhcl90OwojIDMxMiAiL3Vzci9sb2NhbC9nY2MtMy9saWIv
Z2NjLWxpYi9pNTg2LXBjLWxpbnV4LWdudS8zLjAuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzCnR5cGVk
ZWYgdW5zaWduZWQgaW50IHdpbnRfdDsKIyAxNSAiL3Vzci9pbmNsdWRlL19HX2NvbmZpZy5oIiAy
IDMKIyAyNCAiL3Vzci9pbmNsdWRlL19HX2NvbmZpZy5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL3dj
aGFyLmgiIDEgMwojIDQ4ICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMwojIDEgIi91c3IvbG9jYWwv
Z2NjLTMvbGliL2djYy1saWIvaTU4Ni1wYy1saW51eC1nbnUvMy4wLjMvaW5jbHVkZS9zdGRkZWYu
aCIgMSAzCiMgNDkgIi91c3IvaW5jbHVkZS93Y2hhci5oIiAyIDMKCiMgMSAiL3Vzci9pbmNsdWRl
L2JpdHMvd2NoYXIuaCIgMSAzCiMgNTEgIi91c3IvaW5jbHVkZS93Y2hhci5oIiAyIDMKIyA2NyAi
L3Vzci9pbmNsdWRlL3djaGFyLmgiIDMKdHlwZWRlZiBzdHJ1Y3QKewogIGludCBfX2NvdW50Owog
IHVuaW9uCiAgewogICAgd2ludF90IF9fd2NoOwogICAgY2hhciBfX3djaGJbNF07CiAgfSBfX3Zh
bHVlOwp9IF9fbWJzdGF0ZV90OwojIDI1ICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgiIDIgMwoK
dHlwZWRlZiBzdHJ1Y3QKewogIF9fb2ZmX3QgX19wb3M7CiAgX19tYnN0YXRlX3QgX19zdGF0ZTsK
fSBfR19mcG9zX3Q7CnR5cGVkZWYgc3RydWN0CnsKICBfX29mZjY0X3QgX19wb3M7CiAgX19tYnN0
YXRlX3QgX19zdGF0ZTsKfSBfR19mcG9zNjRfdDsKIyA0NCAiL3Vzci9pbmNsdWRlL19HX2NvbmZp
Zy5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2djb252LmgiIDEgMwojIDI2ICIvdXNyL2luY2x1ZGUv
Z2NvbnYuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAxIDMKIyAyNyAiL3Vzci9p
bmNsdWRlL2djb252LmgiIDIgMwoKIyAxICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMSAzCiMgNDgg
Ii91c3IvaW5jbHVkZS93Y2hhci5oIiAzCiMgMSAiL3Vzci9sb2NhbC9nY2MtMy9saWIvZ2NjLWxp
Yi9pNTg2LXBjLWxpbnV4LWdudS8zLjAuMy9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyA0OSAiL3Vz
ci9pbmNsdWRlL3djaGFyLmgiIDIgMwoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy93Y2hhci5oIiAx
IDMKIyA1MSAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDIgMwojIDI5ICIvdXNyL2luY2x1ZGUvZ2Nv
bnYuaCIgMiAzCgojIDEgIi91c3IvbG9jYWwvZ2NjLTMvbGliL2djYy1saWIvaTU4Ni1wYy1saW51
eC1nbnUvMy4wLjMvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMzEgIi91c3IvaW5jbHVkZS9nY29u
di5oIiAyIDMKCgoKCgplbnVtCnsKICBfX0dDT05WX09LID0gMCwKICBfX0dDT05WX05PQ09OViwK
ICBfX0dDT05WX05PREIsCiAgX19HQ09OVl9OT01FTSwKCiAgX19HQ09OVl9FTVBUWV9JTlBVVCwK
ICBfX0dDT05WX0ZVTExfT1VUUFVULAogIF9fR0NPTlZfSUxMRUdBTF9JTlBVVCwKICBfX0dDT05W
X0lOQ09NUExFVEVfSU5QVVQsCgogIF9fR0NPTlZfSUxMRUdBTF9ERVNDUklQVE9SLAogIF9fR0NP
TlZfSU5URVJOQUxfRVJST1IKfTsKCgoKZW51bQp7CiAgX19HQ09OVl9JU19MQVNUID0gMHgwMDAx
LAogIF9fR0NPTlZfSUdOT1JFX0VSUk9SUyA9IDB4MDAwMgp9OwoKCgpzdHJ1Y3QgX19nY29udl9z
dGVwOwpzdHJ1Y3QgX19nY29udl9zdGVwX2RhdGE7CnN0cnVjdCBfX2djb252X2xvYWRlZF9vYmpl
Y3Q7CnN0cnVjdCBfX2djb252X3RyYW5zX2RhdGE7CgoKCnR5cGVkZWYgaW50ICgqX19nY29udl9m
Y3QpIChzdHJ1Y3QgX19nY29udl9zdGVwICosIHN0cnVjdCBfX2djb252X3N0ZXBfZGF0YSAqLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB1bnNpZ25lZCBjaGFyICoqLCBfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGNoYXIgKiosIHNpemVfdCAqLCBpbnQsIGludCk7CgoKdHlwZWRlZiBpbnQgKCpfX2djb252X2lu
aXRfZmN0KSAoc3RydWN0IF9fZ2NvbnZfc3RlcCAqKTsKdHlwZWRlZiB2b2lkICgqX19nY29udl9l
bmRfZmN0KSAoc3RydWN0IF9fZ2NvbnZfc3RlcCAqKTsKCgoKdHlwZWRlZiBpbnQgKCpfX2djb252
X3RyYW5zX2ZjdCkgKHN0cnVjdCBfX2djb252X3N0ZXAgKiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0cnVjdCBfX2djb252X3N0ZXBfZGF0YSAqLCB2b2lkICosCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgdW5zaWduZWQgY2hhciAqKiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgdW5zaWduZWQgY2hhciAqLCB1
bnNpZ25lZCBjaGFyICoqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
ICopOwoKCnR5cGVkZWYgaW50ICgqX19nY29udl90cmFuc19jb250ZXh0X2ZjdCkgKHZvaWQgKiwg
X19jb25zdCB1bnNpZ25lZCBjaGFyICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF9fY29uc3QgdW5zaWduZWQgY2hhciAqLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICosIHVuc2lnbmVkIGNoYXIgKik7CgoK
dHlwZWRlZiBpbnQgKCpfX2djb252X3RyYW5zX3F1ZXJ5X2ZjdCkgKF9fY29uc3QgY2hhciAqLCBf
X2NvbnN0IGNoYXIgKioqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90ICopOwoKCnR5cGVkZWYgaW50ICgqX19nY29udl90cmFuc19pbml0X2ZjdCkgKHZvaWQg
KiosIGNvbnN0IGNoYXIgKik7CnR5cGVkZWYgdm9pZCAoKl9fZ2NvbnZfdHJhbnNfZW5kX2ZjdCkg
KHZvaWQgKik7CgpzdHJ1Y3QgX19nY29udl90cmFuc19kYXRhCnsKCiAgX19nY29udl90cmFuc19m
Y3QgX190cmFuc19mY3Q7CiAgX19nY29udl90cmFuc19jb250ZXh0X2ZjdCBfX3RyYW5zX2NvbnRl
eHRfZmN0OwogIF9fZ2NvbnZfdHJhbnNfZW5kX2ZjdCBfX3RyYW5zX2VuZF9mY3Q7CiAgdm9pZCAq
X19kYXRhOwogIHN0cnVjdCBfX2djb252X3RyYW5zX2RhdGEgKl9fbmV4dDsKfTsKCgoKc3RydWN0
IF9fZ2NvbnZfc3RlcAp7CiAgc3RydWN0IF9fZ2NvbnZfbG9hZGVkX29iamVjdCAqX19zaGxpYl9o
YW5kbGU7CiAgX19jb25zdCBjaGFyICpfX21vZG5hbWU7CgogIGludCBfX2NvdW50ZXI7CgogIGNo
YXIgKl9fZnJvbV9uYW1lOwogIGNoYXIgKl9fdG9fbmFtZTsKCiAgX19nY29udl9mY3QgX19mY3Q7
CiAgX19nY29udl9pbml0X2ZjdCBfX2luaXRfZmN0OwogIF9fZ2NvbnZfZW5kX2ZjdCBfX2VuZF9m
Y3Q7CgoKCiAgaW50IF9fbWluX25lZWRlZF9mcm9tOwogIGludCBfX21heF9uZWVkZWRfZnJvbTsK
ICBpbnQgX19taW5fbmVlZGVkX3RvOwogIGludCBfX21heF9uZWVkZWRfdG87CgoKICBpbnQgX19z
dGF0ZWZ1bDsKCiAgdm9pZCAqX19kYXRhOwp9OwoKCgpzdHJ1Y3QgX19nY29udl9zdGVwX2RhdGEK
ewogIHVuc2lnbmVkIGNoYXIgKl9fb3V0YnVmOwogIHVuc2lnbmVkIGNoYXIgKl9fb3V0YnVmZW5k
OwoKCgogIGludCBfX2ZsYWdzOwoKCgogIGludCBfX2ludm9jYXRpb25fY291bnRlcjsKCgoKICBp
bnQgX19pbnRlcm5hbF91c2U7CgogIF9fbWJzdGF0ZV90ICpfX3N0YXRlcDsKICBfX21ic3RhdGVf
dCBfX3N0YXRlOwoKCgogIHN0cnVjdCBfX2djb252X3RyYW5zX2RhdGEgKl9fdHJhbnM7Cn07CgoK
CnR5cGVkZWYgc3RydWN0IF9fZ2NvbnZfaW5mbwp7CiAgc2l6ZV90IF9fbnN0ZXBzOwogIHN0cnVj
dCBfX2djb252X3N0ZXAgKl9fc3RlcHM7CiAgX19leHRlbnNpb25fXyBzdHJ1Y3QgX19nY29udl9z
dGVwX2RhdGEgX19kYXRhIFtdOwp9ICpfX2djb252X3Q7CiMgNDUgIi91c3IvaW5jbHVkZS9fR19j
b25maWcuaCIgMiAzCnR5cGVkZWYgdW5pb24KewogIHN0cnVjdCBfX2djb252X2luZm8gX19jZDsK
ICBzdHJ1Y3QKICB7CiAgICBzdHJ1Y3QgX19nY29udl9pbmZvIF9fY2Q7CiAgICBzdHJ1Y3QgX19n
Y29udl9zdGVwX2RhdGEgX19kYXRhOwogIH0gX19jb21iaW5lZDsKfSBfR19pY29udl90OwoKdHlw
ZWRlZiBpbnQgX0dfaW50MTZfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fSElfXykpKTsK
dHlwZWRlZiBpbnQgX0dfaW50MzJfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fU0lfXykp
KTsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX0dfdWludDE2X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9k
ZV9fIChfX0hJX18pKSk7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9HX3VpbnQzMl90IF9fYXR0cmli
dXRlX18gKChfX21vZGVfXyAoX19TSV9fKSkpOwojIDMxICIvdXNyL2luY2x1ZGUvbGliaW8uaCIg
MiAzCiMgNTEgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCiMgMSAiL3Vzci9sb2NhbC9nY2MtMy9s
aWIvZ2NjLWxpYi9pNTg2LXBjLWxpbnV4LWdudS8zLjAuMy9pbmNsdWRlL3N0ZGFyZy5oIiAxIDMK
IyA0MyAiL3Vzci9sb2NhbC9nY2MtMy9saWIvZ2NjLWxpYi9pNTg2LXBjLWxpbnV4LWdudS8zLjAu
My9pbmNsdWRlL3N0ZGFyZy5oIiAzCnR5cGVkZWYgX19idWlsdGluX3ZhX2xpc3QgX19nbnVjX3Zh
X2xpc3Q7CiMgNTIgIi91c3IvaW5jbHVkZS9saWJpby5oIiAyIDMKIyAxNTggIi91c3IvaW5jbHVk
ZS9saWJpby5oIiAzCnN0cnVjdCBfSU9fanVtcF90OyBzdHJ1Y3QgX0lPX0ZJTEU7CiMgMTY4ICIv
dXNyL2luY2x1ZGUvbGliaW8uaCIgMwp0eXBlZGVmIHZvaWQgX0lPX2xvY2tfdDsKCgoKCgpzdHJ1
Y3QgX0lPX21hcmtlciB7CiAgc3RydWN0IF9JT19tYXJrZXIgKl9uZXh0OwogIHN0cnVjdCBfSU9f
RklMRSAqX3NidWY7CgoKCiAgaW50IF9wb3M7CiMgMTkxICIvdXNyL2luY2x1ZGUvbGliaW8uaCIg
Mwp9OwoKCmVudW0gX19jb2RlY3Z0X3Jlc3VsdAp7CiAgX19jb2RlY3Z0X29rLAogIF9fY29kZWN2
dF9wYXJ0aWFsLAogIF9fY29kZWN2dF9lcnJvciwKICBfX2NvZGVjdnRfbm9jb252Cn07CiMgMjU5
ICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwpzdHJ1Y3QgX0lPX0ZJTEUgewogIGludCBfZmxhZ3M7
CgoKCgogIGNoYXIqIF9JT19yZWFkX3B0cjsKICBjaGFyKiBfSU9fcmVhZF9lbmQ7CiAgY2hhciog
X0lPX3JlYWRfYmFzZTsKICBjaGFyKiBfSU9fd3JpdGVfYmFzZTsKICBjaGFyKiBfSU9fd3JpdGVf
cHRyOwogIGNoYXIqIF9JT193cml0ZV9lbmQ7CiAgY2hhciogX0lPX2J1Zl9iYXNlOwogIGNoYXIq
IF9JT19idWZfZW5kOwoKICBjaGFyICpfSU9fc2F2ZV9iYXNlOwogIGNoYXIgKl9JT19iYWNrdXBf
YmFzZTsKICBjaGFyICpfSU9fc2F2ZV9lbmQ7CgogIHN0cnVjdCBfSU9fbWFya2VyICpfbWFya2Vy
czsKCiAgc3RydWN0IF9JT19GSUxFICpfY2hhaW47CgogIGludCBfZmlsZW5vOwogIGludCBfYmxr
c2l6ZTsKICBfX29mZl90IF9vbGRfb2Zmc2V0OwoKCgogIHVuc2lnbmVkIHNob3J0IF9jdXJfY29s
dW1uOwogIHNpZ25lZCBjaGFyIF92dGFibGVfb2Zmc2V0OwogIGNoYXIgX3Nob3J0YnVmWzFdOwoK
CgogIF9JT19sb2NrX3QgKl9sb2NrOwojIDMwMyAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKICBf
X29mZjY0X3QgX29mZnNldDsKCgoKCgogIHZvaWQgKl9fcGFkMTsKICB2b2lkICpfX3BhZDI7Cgog
IGludCBfbW9kZTsKCiAgY2hhciBfdW51c2VkMlsxNSAqIHNpemVvZiAoaW50KSAtIDIgKiBzaXpl
b2YgKHZvaWQgKildOwoKfTsKCgp0eXBlZGVmIHN0cnVjdCBfSU9fRklMRSBfSU9fRklMRTsKCgpz
dHJ1Y3QgX0lPX0ZJTEVfcGx1czsKCmV4dGVybiBzdHJ1Y3QgX0lPX0ZJTEVfcGx1cyBfSU9fMl8x
X3N0ZGluXzsKZXh0ZXJuIHN0cnVjdCBfSU9fRklMRV9wbHVzIF9JT18yXzFfc3Rkb3V0XzsKZXh0
ZXJuIHN0cnVjdCBfSU9fRklMRV9wbHVzIF9JT18yXzFfc3RkZXJyXzsKIyAzNDIgIi91c3IvaW5j
bHVkZS9saWJpby5oIiAzCnR5cGVkZWYgX19zc2l6ZV90IF9faW9fcmVhZF9mbiAodm9pZCAqX19j
b29raWUsIGNoYXIgKl9fYnVmLCBzaXplX3QgX19uYnl0ZXMpOwoKCgoKCgoKdHlwZWRlZiBfX3Nz
aXplX3QgX19pb193cml0ZV9mbiAodm9pZCAqX19jb29raWUsIF9fY29uc3QgY2hhciAqX19idWYs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX24pOwoKCgoKCgoKdHlw
ZWRlZiBpbnQgX19pb19zZWVrX2ZuICh2b2lkICpfX2Nvb2tpZSwgX19vZmY2NF90ICpfX3Bvcywg
aW50IF9fdyk7CgoKdHlwZWRlZiBpbnQgX19pb19jbG9zZV9mbiAodm9pZCAqX19jb29raWUpOwoj
IDM5NCAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKZXh0ZXJuIGludCBfX3VuZGVyZmxvdyAoX0lP
X0ZJTEUgKikgOwpleHRlcm4gaW50IF9fdWZsb3cgKF9JT19GSUxFICopIDsKZXh0ZXJuIGludCBf
X292ZXJmbG93IChfSU9fRklMRSAqLCBpbnQpIDsKZXh0ZXJuIHdpbnRfdCBfX3d1bmRlcmZsb3cg
KF9JT19GSUxFICopIDsKZXh0ZXJuIHdpbnRfdCBfX3d1ZmxvdyAoX0lPX0ZJTEUgKikgOwpleHRl
cm4gd2ludF90IF9fd292ZXJmbG93IChfSU9fRklMRSAqLCB3aW50X3QpIDsKIyA0MjQgIi91c3Iv
aW5jbHVkZS9saWJpby5oIiAzCmV4dGVybiBpbnQgX0lPX2dldGMgKF9JT19GSUxFICpfX2ZwKSA7
CmV4dGVybiBpbnQgX0lPX3B1dGMgKGludCBfX2MsIF9JT19GSUxFICpfX2ZwKSA7CmV4dGVybiBp
bnQgX0lPX2Zlb2YgKF9JT19GSUxFICpfX2ZwKSA7CmV4dGVybiBpbnQgX0lPX2ZlcnJvciAoX0lP
X0ZJTEUgKl9fZnApIDsKCmV4dGVybiBpbnQgX0lPX3BlZWtjX2xvY2tlZCAoX0lPX0ZJTEUgKl9f
ZnApIDsKCgoKCgpleHRlcm4gdm9pZCBfSU9fZmxvY2tmaWxlIChfSU9fRklMRSAqKSA7CmV4dGVy
biB2b2lkIF9JT19mdW5sb2NrZmlsZSAoX0lPX0ZJTEUgKikgOwpleHRlcm4gaW50IF9JT19mdHJ5
bG9ja2ZpbGUgKF9JT19GSUxFICopIDsKIyA0NTQgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCmV4
dGVybiBpbnQgX0lPX3Zmc2NhbmYgKF9JT19GSUxFICogX19yZXN0cmljdCwgY29uc3QgY2hhciAq
IF9fcmVzdHJpY3QsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fZ251Y192YV9saXN0LCBpbnQg
Kl9fcmVzdHJpY3QpIDsKZXh0ZXJuIGludCBfSU9fdmZwcmludGYgKF9JT19GSUxFICpfX3Jlc3Ry
aWN0LCBjb25zdCBjaGFyICpfX3Jlc3RyaWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgX19n
bnVjX3ZhX2xpc3QpIDsKZXh0ZXJuIF9fc3NpemVfdCBfSU9fcGFkbiAoX0lPX0ZJTEUgKiwgaW50
LCBfX3NzaXplX3QpIDsKZXh0ZXJuIHNpemVfdCBfSU9fc2dldG4gKF9JT19GSUxFICosIHZvaWQg
Kiwgc2l6ZV90KSA7CgpleHRlcm4gX19vZmY2NF90IF9JT19zZWVrb2ZmIChfSU9fRklMRSAqLCBf
X29mZjY0X3QsIGludCwgaW50KSA7CmV4dGVybiBfX29mZjY0X3QgX0lPX3NlZWtwb3MgKF9JT19G
SUxFICosIF9fb2ZmNjRfdCwgaW50KSA7CgpleHRlcm4gdm9pZCBfSU9fZnJlZV9iYWNrdXBfYXJl
YSAoX0lPX0ZJTEUgKikgOwojIDc0ICIvdXNyL2xvY2FsL2djYy0zL2xpYi9nY2MtbGliL2k1ODYt
cGMtbGludXgtZ251LzMuMC4zL2luY2x1ZGUvc3RkaW8uaCIgMiAzCiMgODggIi91c3IvbG9jYWwv
Z2NjLTMvbGliL2djYy1saWIvaTU4Ni1wYy1saW51eC1nbnUvMy4wLjMvaW5jbHVkZS9zdGRpby5o
IiAzCnR5cGVkZWYgX0dfZnBvc190IGZwb3NfdDsKIyAxMzcgIi91c3IvbG9jYWwvZ2NjLTMvbGli
L2djYy1saWIvaTU4Ni1wYy1saW51eC1nbnUvMy4wLjMvaW5jbHVkZS9zdGRpby5oIiAzCiMgMSAi
L3Vzci9pbmNsdWRlL2JpdHMvc3RkaW9fbGltLmgiIDEgMwojIDEzOCAiL3Vzci9sb2NhbC9nY2Mt
My9saWIvZ2NjLWxpYi9pNTg2LXBjLWxpbnV4LWdudS8zLjAuMy9pbmNsdWRlL3N0ZGlvLmgiIDIg
MwoKCgpleHRlcm4gRklMRSAqc3RkaW47CmV4dGVybiBGSUxFICpzdGRvdXQ7CmV4dGVybiBGSUxF
ICpzdGRlcnI7CgoKCgoKCmV4dGVybiBpbnQgcmVtb3ZlIChfX2NvbnN0IGNoYXIgKl9fZmlsZW5h
bWUpIDsKCmV4dGVybiBpbnQgcmVuYW1lIChfX2NvbnN0IGNoYXIgKl9fb2xkLCBfX2NvbnN0IGNo
YXIgKl9fbmV3KSA7CgoKCgpleHRlcm4gRklMRSAqdG1wZmlsZSAodm9pZCkgOwojIDE2OSAiL3Vz
ci9sb2NhbC9nY2MtMy9saWIvZ2NjLWxpYi9pNTg2LXBjLWxpbnV4LWdudS8zLjAuMy9pbmNsdWRl
L3N0ZGlvLmgiIDMKZXh0ZXJuIGNoYXIgKnRtcG5hbSAoY2hhciAqX19zKSA7CgoKCgpleHRlcm4g
Y2hhciAqdG1wbmFtX3IgKGNoYXIgKl9fcykgOwojIDE4NiAiL3Vzci9sb2NhbC9nY2MtMy9saWIv
Z2NjLWxpYi9pNTg2LXBjLWxpbnV4LWdudS8zLjAuMy9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJu
IGNoYXIgKnRlbXBuYW0gKF9fY29uc3QgY2hhciAqX19kaXIsIF9fY29uc3QgY2hhciAqX19wZngp
CiAgICAgICAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwoKCgoKZXh0ZXJuIGlu
dCBmY2xvc2UgKEZJTEUgKl9fc3RyZWFtKSA7CgpleHRlcm4gaW50IGZmbHVzaCAoRklMRSAqX19z
dHJlYW0pIDsKCgoKZXh0ZXJuIGludCBmZmx1c2hfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKSA7
CiMgMjA5ICIvdXNyL2xvY2FsL2djYy0zL2xpYi9nY2MtbGliL2k1ODYtcGMtbGludXgtZ251LzMu
MC4zL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gRklMRSAqZm9wZW4gKF9fY29uc3QgY2hhciAq
X19yZXN0cmljdCBfX2ZpbGVuYW1lLAogICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAq
X19yZXN0cmljdCBfX21vZGVzKSA7CgpleHRlcm4gRklMRSAqZnJlb3BlbiAoX19jb25zdCBjaGFy
ICpfX3Jlc3RyaWN0IF9fZmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNo
YXIgKl9fcmVzdHJpY3QgX19tb2RlcywKICAgICAgICAgICAgICAgICAgICAgIEZJTEUgKl9fcmVz
dHJpY3QgX19zdHJlYW0pIDsKIyAyMzkgIi91c3IvbG9jYWwvZ2NjLTMvbGliL2djYy1saWIvaTU4
Ni1wYy1saW51eC1nbnUvMy4wLjMvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiBGSUxFICpmZG9w
ZW4gKGludCBfX2ZkLCBfX2NvbnN0IGNoYXIgKl9fbW9kZXMpIDsKIyAyNjIgIi91c3IvbG9jYWwv
Z2NjLTMvbGliL2djYy1saWIvaTU4Ni1wYy1saW51eC1nbnUvMy4wLjMvaW5jbHVkZS9zdGRpby5o
IiAzCmV4dGVybiB2b2lkIHNldGJ1ZiAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwgY2hhciAq
X19yZXN0cmljdCBfX2J1ZikgOwoKCgpleHRlcm4gaW50IHNldHZidWYgKEZJTEUgKl9fcmVzdHJp
Y3QgX19zdHJlYW0sIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsCiAgICAgICAgICAgICAgICAgICAg
aW50IF9fbW9kZXMsIHNpemVfdCBfX24pIDsKCgoKCmV4dGVybiB2b2lkIHNldGJ1ZmZlciAoRklM
RSAqX19yZXN0cmljdCBfX3N0cmVhbSwgY2hhciAqX19yZXN0cmljdCBfX2J1ZiwKICAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3QgX19zaXplKSA7CgoKZXh0ZXJuIHZvaWQgc2V0bGluZWJ1ZiAo
RklMRSAqX19zdHJlYW0pIDsKCgoKCmV4dGVybiBpbnQgZnByaW50ZiAoRklMRSAqX19yZXN0cmlj
dCBfX3N0cmVhbSwKICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3Qg
X19mb3JtYXQsIC4uLikgOwoKZXh0ZXJuIGludCBwcmludGYgKF9fY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX2Zvcm1hdCwgLi4uKSA7CgpleHRlcm4gaW50IHNwcmludGYgKGNoYXIgKl9fcmVzdHJp
Y3QgX19zLAogICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zv
cm1hdCwgLi4uKSA7CgoKZXh0ZXJuIGludCB2ZnByaW50ZiAoRklMRSAqX19yZXN0cmljdCBfX3Ms
IF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwKICAgICAgICAgICAgICAgICAgICAg
X19nbnVjX3ZhX2xpc3QgX19hcmcpIDsKCmV4dGVybiBpbnQgdnByaW50ZiAoX19jb25zdCBjaGFy
ICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCBfX2dudWNfdmFfbGlzdCBfX2FyZykKICAgICAgICAgICAg
OwoKZXh0ZXJuIGludCB2c3ByaW50ZiAoY2hhciAqX19yZXN0cmljdCBfX3MsIF9fY29uc3QgY2hh
ciAqX19yZXN0cmljdCBfX2Zvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgX19nbnVjX3ZhX2xp
c3QgX19hcmcpIDsKCgoKZXh0ZXJuIGludCBzbnByaW50ZiAoY2hhciAqX19yZXN0cmljdCBfX3Ms
IHNpemVfdCBfX21heGxlbiwKICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fZm9ybWF0LCAuLi4pCiAgICAgICAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3Jt
YXRfXyAoX19wcmludGZfXywgMywgNCkpKTsKCmV4dGVybiBpbnQgdnNucHJpbnRmIChjaGFyICpf
X3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9fbWF4bGVuLAogICAgICAgICAgICAgICAgICAgICAgX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCBfX2dudWNfdmFfbGlzdCBfX2FyZykKICAg
ICAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAzLCAwKSkp
OwojIDMzMyAiL3Vzci9sb2NhbC9nY2MtMy9saWIvZ2NjLWxpYi9pNTg2LXBjLWxpbnV4LWdudS8z
LjAuMy9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIGludCBmc2NhbmYgKEZJTEUgKl9fcmVzdHJp
Y3QgX19zdHJlYW0sCiAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3Qg
X19mb3JtYXQsIC4uLikgOwoKZXh0ZXJuIGludCBzY2FuZiAoX19jb25zdCBjaGFyICpfX3Jlc3Ry
aWN0IF9fZm9ybWF0LCAuLi4pIDsKCmV4dGVybiBpbnQgc3NjYW5mIChfX2NvbnN0IGNoYXIgKl9f
cmVzdHJpY3QgX19zLAogICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0
IF9fZm9ybWF0LCAuLi4pIDsKIyAzNTkgIi91c3IvbG9jYWwvZ2NjLTMvbGliL2djYy1saWIvaTU4
Ni1wYy1saW51eC1nbnUvMy4wLjMvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiBpbnQgZmdldGMg
KEZJTEUgKl9fc3RyZWFtKSA7CmV4dGVybiBpbnQgZ2V0YyAoRklMRSAqX19zdHJlYW0pIDsKCgpl
eHRlcm4gaW50IGdldGNoYXIgKHZvaWQpIDsKCgoKCgoKCmV4dGVybiBpbnQgZ2V0Y191bmxvY2tl
ZCAoRklMRSAqX19zdHJlYW0pIDsKZXh0ZXJuIGludCBnZXRjaGFyX3VubG9ja2VkICh2b2lkKSA7
CgoKCgpleHRlcm4gaW50IGZnZXRjX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkgOwoKCgoKZXh0
ZXJuIGludCBmcHV0YyAoaW50IF9fYywgRklMRSAqX19zdHJlYW0pIDsKZXh0ZXJuIGludCBwdXRj
IChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkgOwoKCmV4dGVybiBpbnQgcHV0Y2hhciAoaW50IF9f
YykgOwoKCgoKCgoKZXh0ZXJuIGludCBmcHV0Y191bmxvY2tlZCAoaW50IF9fYywgRklMRSAqX19z
dHJlYW0pIDsKCgoKCmV4dGVybiBpbnQgcHV0Y191bmxvY2tlZCAoaW50IF9fYywgRklMRSAqX19z
dHJlYW0pIDsKZXh0ZXJuIGludCBwdXRjaGFyX3VubG9ja2VkIChpbnQgX19jKSA7CgoKCgoKZXh0
ZXJuIGludCBnZXR3IChGSUxFICpfX3N0cmVhbSkgOwoKCmV4dGVybiBpbnQgcHV0dyAoaW50IF9f
dywgRklMRSAqX19zdHJlYW0pIDsKCgoKCmV4dGVybiBjaGFyICpmZ2V0cyAoY2hhciAqX19yZXN0
cmljdCBfX3MsIGludCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pCiAgICAgICAgICAg
IDsKIyA0MjUgIi91c3IvbG9jYWwvZ2NjLTMvbGliL2djYy1saWIvaTU4Ni1wYy1saW51eC1nbnUv
My4wLjMvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiBjaGFyICpnZXRzIChjaGFyICpfX3MpIDsK
IyA0NDkgIi91c3IvbG9jYWwvZ2NjLTMvbGliL2djYy1saWIvaTU4Ni1wYy1saW51eC1nbnUvMy4w
LjMvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiBpbnQgZnB1dHMgKF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX3MsIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pCiAgICAgICAgICAgIDsKIyA0
NTkgIi91c3IvbG9jYWwvZ2NjLTMvbGliL2djYy1saWIvaTU4Ni1wYy1saW51eC1nbnUvMy4wLjMv
aW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiBpbnQgcHV0cyAoX19jb25zdCBjaGFyICpfX3MpIDsK
CgoKZXh0ZXJuIGludCB1bmdldGMgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKSA7CgoKCmV4dGVy
biBzaXplX3QgZnJlYWQgKHZvaWQgKl9fcmVzdHJpY3QgX19wdHIsIHNpemVfdCBfX3NpemUsCiAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0p
IDsKCmV4dGVybiBzaXplX3QgZndyaXRlIChfX2NvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19wdHIs
IHNpemVfdCBfX3NpemUsCiAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19uLCBGSUxFICpf
X3Jlc3RyaWN0IF9fcykgOwoKCgpleHRlcm4gc2l6ZV90IGZyZWFkX3VubG9ja2VkICh2b2lkICpf
X3Jlc3RyaWN0IF9fcHRyLCBzaXplX3QgX19zaXplLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgX19uLCBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSA7CmV4dGVybiBzaXpl
X3QgZndyaXRlX3VubG9ja2VkIChfX2NvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19wdHIsIHNpemVf
dCBfX3NpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19uLCBGSUxF
ICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSA7CgoKCgpleHRlcm4gaW50IGZzZWVrIChGSUxFICpfX3N0
cmVhbSwgbG9uZyBpbnQgX19vZmYsIGludCBfX3doZW5jZSkgOwoKZXh0ZXJuIGxvbmcgaW50IGZ0
ZWxsIChGSUxFICpfX3N0cmVhbSkgOwoKZXh0ZXJuIHZvaWQgcmV3aW5kIChGSUxFICpfX3N0cmVh
bSkgOwojIDUwMyAiL3Vzci9sb2NhbC9nY2MtMy9saWIvZ2NjLWxpYi9pNTg2LXBjLWxpbnV4LWdu
dS8zLjAuMy9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIGludCBmZ2V0cG9zIChGSUxFICpfX3Jl
c3RyaWN0IF9fc3RyZWFtLCBmcG9zX3QgKl9fcmVzdHJpY3QgX19wb3MpCiAgICAgICAgICAgIDsK
CmV4dGVybiBpbnQgZnNldHBvcyAoRklMRSAqX19zdHJlYW0sIF9fY29uc3QgZnBvc190ICpfX3Bv
cykgOwojIDUzOSAiL3Vzci9sb2NhbC9nY2MtMy9saWIvZ2NjLWxpYi9pNTg2LXBjLWxpbnV4LWdu
dS8zLjAuMy9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIHZvaWQgY2xlYXJlcnIgKEZJTEUgKl9f
c3RyZWFtKSA7CgpleHRlcm4gaW50IGZlb2YgKEZJTEUgKl9fc3RyZWFtKSA7CgpleHRlcm4gaW50
IGZlcnJvciAoRklMRSAqX19zdHJlYW0pIDsKCgoKZXh0ZXJuIHZvaWQgY2xlYXJlcnJfdW5sb2Nr
ZWQgKEZJTEUgKl9fc3RyZWFtKSA7CmV4dGVybiBpbnQgZmVvZl91bmxvY2tlZCAoRklMRSAqX19z
dHJlYW0pIDsKZXh0ZXJuIGludCBmZXJyb3JfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKSA7CgoK
CgpleHRlcm4gdm9pZCBwZXJyb3IgKF9fY29uc3QgY2hhciAqX19zKSA7CgoKCgpleHRlcm4gaW50
IHN5c19uZXJyOwpleHRlcm4gX19jb25zdCBjaGFyICpfX2NvbnN0IHN5c19lcnJsaXN0W107CiMg
NTcwICIvdXNyL2xvY2FsL2djYy0zL2xpYi9nY2MtbGliL2k1ODYtcGMtbGludXgtZ251LzMuMC4z
L2luY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gaW50IGZpbGVubyAoRklMRSAqX19zdHJlYW0pIDsK
CgoKCmV4dGVybiBpbnQgZmlsZW5vX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkgOwoKCgoKCgpl
eHRlcm4gRklMRSAqcG9wZW4gKF9fY29uc3QgY2hhciAqX19jb21tYW5kLCBfX2NvbnN0IGNoYXIg
Kl9fbW9kZXMpIDsKCgpleHRlcm4gaW50IHBjbG9zZSAoRklMRSAqX19zdHJlYW0pIDsKCgoKCgpl
eHRlcm4gY2hhciAqY3Rlcm1pZCAoY2hhciAqX19zKSA7CiMgNjE3ICIvdXNyL2xvY2FsL2djYy0z
L2xpYi9nY2MtbGliL2k1ODYtcGMtbGludXgtZ251LzMuMC4zL2luY2x1ZGUvc3RkaW8uaCIgMwpl
eHRlcm4gdm9pZCBmbG9ja2ZpbGUgKEZJTEUgKl9fc3RyZWFtKSA7CgoKCmV4dGVybiBpbnQgZnRy
eWxvY2tmaWxlIChGSUxFICpfX3N0cmVhbSkgOwoKCmV4dGVybiB2b2lkIGZ1bmxvY2tmaWxlIChG
SUxFICpfX3N0cmVhbSkgOwojIDYzOCAiL3Vzci9sb2NhbC9nY2MtMy9saWIvZ2NjLWxpYi9pNTg2
LXBjLWxpbnV4LWdudS8zLjAuMy9pbmNsdWRlL3N0ZGlvLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUv
Yml0cy9zdGRpby5oIiAxIDMKIyAzOSAiL3Vzci9pbmNsdWRlL2JpdHMvc3RkaW8uaCIgMwpleHRl
cm4gX19pbmxpbmUgaW50CnZwcmludGYgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZtdCwg
X19nbnVjX3ZhX2xpc3QgX19hcmcpCnsKICByZXR1cm4gdmZwcmludGYgKHN0ZG91dCwgX19mbXQs
IF9fYXJnKTsKfQoKCmV4dGVybiBfX2lubGluZSBpbnQKZ2V0Y2hhciAodm9pZCkKewogIHJldHVy
biBfSU9fZ2V0YyAoc3RkaW4pOwp9CgoKCgpleHRlcm4gX19pbmxpbmUgaW50CmdldGNfdW5sb2Nr
ZWQgKEZJTEUgKl9fZnApCnsKICByZXR1cm4gKChfX2ZwKS0+X0lPX3JlYWRfcHRyID49IChfX2Zw
KS0+X0lPX3JlYWRfZW5kID8gX191ZmxvdyAoX19mcCkgOiAqKHVuc2lnbmVkIGNoYXIgKikgKF9f
ZnApLT5fSU9fcmVhZF9wdHIrKyk7Cn0KCgpleHRlcm4gX19pbmxpbmUgaW50CmdldGNoYXJfdW5s
b2NrZWQgKHZvaWQpCnsKICByZXR1cm4gKChzdGRpbiktPl9JT19yZWFkX3B0ciA+PSAoc3RkaW4p
LT5fSU9fcmVhZF9lbmQgPyBfX3VmbG93IChzdGRpbikgOiAqKHVuc2lnbmVkIGNoYXIgKikgKHN0
ZGluKS0+X0lPX3JlYWRfcHRyKyspOwp9CgoKCgpleHRlcm4gX19pbmxpbmUgaW50CnB1dGNoYXIg
KGludCBfX2MpCnsKICByZXR1cm4gX0lPX3B1dGMgKF9fYywgc3Rkb3V0KTsKfQoKCgoKZXh0ZXJu
IF9faW5saW5lIGludApmcHV0Y191bmxvY2tlZCAoaW50IF9fYywgRklMRSAqX19zdHJlYW0pCnsK
ICByZXR1cm4gKCgoX19zdHJlYW0pLT5fSU9fd3JpdGVfcHRyID49IChfX3N0cmVhbSktPl9JT193
cml0ZV9lbmQpID8gX19vdmVyZmxvdyAoX19zdHJlYW0sICh1bnNpZ25lZCBjaGFyKSAoX19jKSkg
OiAodW5zaWduZWQgY2hhcikgKCooX19zdHJlYW0pLT5fSU9fd3JpdGVfcHRyKysgPSAoX19jKSkp
Owp9CgoKCgoKZXh0ZXJuIF9faW5saW5lIGludApwdXRjX3VubG9ja2VkIChpbnQgX19jLCBGSUxF
ICpfX3N0cmVhbSkKewogIHJldHVybiAoKChfX3N0cmVhbSktPl9JT193cml0ZV9wdHIgPj0gKF9f
c3RyZWFtKS0+X0lPX3dyaXRlX2VuZCkgPyBfX292ZXJmbG93IChfX3N0cmVhbSwgKHVuc2lnbmVk
IGNoYXIpIChfX2MpKSA6ICh1bnNpZ25lZCBjaGFyKSAoKihfX3N0cmVhbSktPl9JT193cml0ZV9w
dHIrKyA9IChfX2MpKSk7Cn0KCgpleHRlcm4gX19pbmxpbmUgaW50CnB1dGNoYXJfdW5sb2NrZWQg
KGludCBfX2MpCnsKICByZXR1cm4gKCgoc3Rkb3V0KS0+X0lPX3dyaXRlX3B0ciA+PSAoc3Rkb3V0
KS0+X0lPX3dyaXRlX2VuZCkgPyBfX292ZXJmbG93IChzdGRvdXQsICh1bnNpZ25lZCBjaGFyKSAo
X19jKSkgOiAodW5zaWduZWQgY2hhcikgKCooc3Rkb3V0KS0+X0lPX3dyaXRlX3B0cisrID0gKF9f
YykpKTsKfQojIDExNyAiL3Vzci9pbmNsdWRlL2JpdHMvc3RkaW8uaCIgMwpleHRlcm4gX19pbmxp
bmUgaW50CmZlb2ZfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKQp7CiAgcmV0dXJuICgoKF9fc3Ry
ZWFtKS0+X2ZsYWdzICYgMHgxMCkgIT0gMCk7Cn0KCgpleHRlcm4gX19pbmxpbmUgaW50CmZlcnJv
cl91bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pCnsKICByZXR1cm4gKCgoX19zdHJlYW0pLT5fZmxh
Z3MgJiAweDIwKSAhPSAwKTsKfQojIDYzOSAiL3Vzci9sb2NhbC9nY2MtMy9saWIvZ2NjLWxpYi9p
NTg2LXBjLWxpbnV4LWdudS8zLjAuMy9pbmNsdWRlL3N0ZGlvLmgiIDIgMwojIDUwICJzdGRmbi5o
IiAyCgojIDEgInN5c2NmZy5oIiAxCiMgNDYgInN5c2NmZy5oIgojIDEgImNvbmZpZy5oIiAxCiMg
NDcgInN5c2NmZy5oIiAyCgoKIyAxICJhbnNpY2hlay5oIiAxCiMgNTAgInN5c2NmZy5oIiAyCiMg
NTIgInN0ZGZuLmgiIDIKCgojIDEgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMSAzCiMgMjYgIi91
c3IvaW5jbHVkZS9zdHJpbmcuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAxIDMK
IyAyNyAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAyIDMKCgoKCgoKIyAxICIvdXNyL2xvY2FsL2dj
Yy0zL2xpYi9nY2MtbGliL2k1ODYtcGMtbGludXgtZ251LzMuMC4zL2luY2x1ZGUvc3RkZGVmLmgi
IDEgMwojIDM0ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDIgMwoKCgpleHRlcm4gdm9pZCAqbWVt
Y3B5ICh2b2lkICpfX3Jlc3RyaWN0IF9fZGVzdCwKICAgICAgICAgICAgICAgICAgICAgX19jb25z
dCB2b2lkICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKSA7CgoKZXh0ZXJuIHZvaWQgKm1l
bW1vdmUgKHZvaWQgKl9fZGVzdCwgX19jb25zdCB2b2lkICpfX3NyYywgc2l6ZV90IF9fbikKICAg
ICAgICAgICAgOwoKCgoKCmV4dGVybiB2b2lkICptZW1jY3B5ICh2b2lkICpfX3Jlc3RyaWN0IF9f
ZGVzdCwgX19jb25zdCB2b2lkICpfX3Jlc3RyaWN0IF9fc3JjLAogICAgICAgICAgICAgICAgICAg
ICAgaW50IF9fYywgc2l6ZV90IF9fbikKICAgICAgICAgICAgOwoKCgoKZXh0ZXJuIHZvaWQgKm1l
bXNldCAodm9pZCAqX19zLCBpbnQgX19jLCBzaXplX3QgX19uKSA7CgoKZXh0ZXJuIGludCBtZW1j
bXAgKF9fY29uc3Qgdm9pZCAqX19zMSwgX19jb25zdCB2b2lkICpfX3MyLCBzaXplX3QgX19uKQog
ICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJuIHZvaWQgKm1l
bWNociAoX19jb25zdCB2b2lkICpfX3MsIGludCBfX2MsIHNpemVfdCBfX24pCiAgICAgICAgICAg
ICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CiMgNzcgIi91c3IvaW5jbHVkZS9zdHJpbmcu
aCIgMwpleHRlcm4gY2hhciAqc3RyY3B5IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwgX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjKQogICAgICAgICAgICA7CgpleHRlcm4gY2hhciAqc3Ry
bmNweSAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsCiAgICAgICAgICAgICAgICAgICAgICBfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24pIDsKCgpleHRlcm4gY2hhciAq
c3RyY2F0IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0
IF9fc3JjKQogICAgICAgICAgICA7CgpleHRlcm4gY2hhciAqc3RybmNhdCAoY2hhciAqX19yZXN0
cmljdCBfX2Rlc3QsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYywKICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBfX24pIDsKCgpleHRlcm4gaW50IHN0cmNtcCAoX19jb25zdCBjaGFy
ICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIpCiAgICAgICAgICAgICBfX2F0dHJpYnV0ZV9fICgo
X19wdXJlX18pKTsKCmV4dGVybiBpbnQgc3RybmNtcCAoX19jb25zdCBjaGFyICpfX3MxLCBfX2Nv
bnN0IGNoYXIgKl9fczIsIHNpemVfdCBfX24pCiAgICAgICAgICAgICBfX2F0dHJpYnV0ZV9fICgo
X19wdXJlX18pKTsKCgpleHRlcm4gaW50IHN0cmNvbGwgKF9fY29uc3QgY2hhciAqX19zMSwgX19j
b25zdCBjaGFyICpfX3MyKQogICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7
CgpleHRlcm4gc2l6ZV90IHN0cnhmcm0gKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LAogICAgICAg
ICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYywgc2l6ZV90IF9f
bikgOwojIDEyMCAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzCmV4dGVybiBjaGFyICpzdHJkdXAg
KF9fY29uc3QgY2hhciAqX19zKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwojIDE1NSAi
L3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzCmV4dGVybiBjaGFyICpzdHJjaHIgKF9fY29uc3QgY2hh
ciAqX19zLCBpbnQgX19jKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCmV4dGVybiBjaGFy
ICpzdHJyY2hyIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYykgX19hdHRyaWJ1dGVfXyAoKF9f
cHVyZV9fKSk7CiMgMTY3ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMKZXh0ZXJuIHNpemVfdCBz
dHJjc3BuIChfX2NvbnN0IGNoYXIgKl9fcywgX19jb25zdCBjaGFyICpfX3JlamVjdCkKICAgICAg
ICAgICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCmV4dGVybiBzaXplX3Qgc3Ryc3Bu
IChfX2NvbnN0IGNoYXIgKl9fcywgX19jb25zdCBjaGFyICpfX2FjY2VwdCkKICAgICAgICAgICAg
IF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIGNoYXIgKnN0cnBicmsgKF9fY29u
c3QgY2hhciAqX19zLCBfX2NvbnN0IGNoYXIgKl9fYWNjZXB0KQogICAgICAgICAgICAgX19hdHRy
aWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgpleHRlcm4gY2hhciAqc3Ryc3RyIChfX2NvbnN0IGNoYXIg
Kl9faGF5c3RhY2ssIF9fY29uc3QgY2hhciAqX19uZWVkbGUpCiAgICAgICAgICAgICBfX2F0dHJp
YnV0ZV9fICgoX19wdXJlX18pKTsKIyAxODcgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMwpleHRl
cm4gY2hhciAqc3RydG9rIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fZGVsaW0pCiAgICAgICAgICAgIDsKCgoKZXh0ZXJuIGNoYXIgKl9fc3RydG9rX3Ig
KGNoYXIgKl9fcmVzdHJpY3QgX19zLAogICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBj
aGFyICpfX3Jlc3RyaWN0IF9fZGVsaW0sCiAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoq
X19yZXN0cmljdCBfX3NhdmVfcHRyKSA7CgpleHRlcm4gY2hhciAqc3RydG9rX3IgKGNoYXIgKl9f
cmVzdHJpY3QgX19zLCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19kZWxpbSwKICAgICAgICAg
ICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX3NhdmVfcHRyKSA7CiMgMjE4ICIvdXNy
L2luY2x1ZGUvc3RyaW5nLmgiIDMKZXh0ZXJuIHNpemVfdCBzdHJsZW4gKF9fY29uc3QgY2hhciAq
X19zKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKIyAyMjkgIi91c3IvaW5jbHVkZS9zdHJp
bmcuaCIgMwpleHRlcm4gY2hhciAqc3RyZXJyb3IgKGludCBfX2Vycm51bSkgOwoKCgpleHRlcm4g
Y2hhciAqc3RyZXJyb3JfciAoaW50IF9fZXJybnVtLCBjaGFyICpfX2J1Ziwgc2l6ZV90IF9fYnVm
bGVuKSA7CgoKCgpleHRlcm4gdm9pZCBfX2J6ZXJvICh2b2lkICpfX3MsIHNpemVfdCBfX24pIDsK
CgoKZXh0ZXJuIHZvaWQgYmNvcHkgKF9fY29uc3Qgdm9pZCAqX19zcmMsIHZvaWQgKl9fZGVzdCwg
c2l6ZV90IF9fbikgOwoKCmV4dGVybiB2b2lkIGJ6ZXJvICh2b2lkICpfX3MsIHNpemVfdCBfX24p
IDsKCgpleHRlcm4gaW50IGJjbXAgKF9fY29uc3Qgdm9pZCAqX19zMSwgX19jb25zdCB2b2lkICpf
X3MyLCBzaXplX3QgX19uKQogICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7
CgoKZXh0ZXJuIGNoYXIgKmluZGV4IChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYykgX19hdHRy
aWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJuIGNoYXIgKnJpbmRleCAoX19jb25zdCBjaGFy
ICpfX3MsIGludCBfX2MpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgpleHRlcm4gaW50
IGZmcyAoaW50IF9faSkgX19hdHRyaWJ1dGVfXyAoKGNvbnN0KSk7CiMgMjcyICIvdXNyL2luY2x1
ZGUvc3RyaW5nLmgiIDMKZXh0ZXJuIGludCBzdHJjYXNlY21wIChfX2NvbnN0IGNoYXIgKl9fczEs
IF9fY29uc3QgY2hhciAqX19zMikKICAgICAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVf
XykpOwoKCmV4dGVybiBpbnQgc3RybmNhc2VjbXAgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25z
dCBjaGFyICpfX3MyLCBzaXplX3QgX19uKQogICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9f
cHVyZV9fKSk7CiMgMjk0ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMKZXh0ZXJuIGNoYXIgKnN0
cnNlcCAoY2hhciAqKl9fcmVzdHJpY3QgX19zdHJpbmdwLAogICAgICAgICAgICAgICAgICAgICBf
X2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19kZWxpbSkgOwojIDM1NiAiL3Vzci9pbmNsdWRlL3N0
cmluZy5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nLmgiIDEgMwojIDM1NyAiL3Vz
ci9pbmNsdWRlL3N0cmluZy5oIiAyIDMKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIu
aCIgMSAzCiMgNTIgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwojIDEgIi91c3IvaW5j
bHVkZS9lbmRpYW4uaCIgMSAzCiMgNTMgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMiAz
CiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMSAzCiMgNTQgIi91c3IvaW5jbHVkZS9i
aXRzL3N0cmluZzIuaCIgMiAzCiMgMzcxICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMK
ZXh0ZXJuIHZvaWQgKl9fcmF3bWVtY2hyIChjb25zdCB2b2lkICpfX3MsIGludCBfX2MpOwojIDM5
NSAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCmV4dGVybiBfX2lubGluZSBjaGFyICpf
X3N0cmNweV9zbWFsbCAoY2hhciAqLCBfX3VpbnQxNl90LCBfX3VpbnQxNl90LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fdWludDMyX3QsIF9fdWludDMyX3QsIHNpemVf
dCk7CmV4dGVybiBfX2lubGluZSBjaGFyICoKX19zdHJjcHlfc21hbGwgKGNoYXIgKl9fZGVzdCwK
ICAgICAgICAgICAgICAgIF9fdWludDE2X3QgX19zcmMwXzIsIF9fdWludDE2X3QgX19zcmM0XzIs
CiAgICAgICAgICAgICAgICBfX3VpbnQzMl90IF9fc3JjMF80LCBfX3VpbnQzMl90IF9fc3JjNF80
LAogICAgICAgICAgICAgICAgc2l6ZV90IF9fc3JjbGVuKQp7CiAgdW5pb24gewogICAgX191aW50
MzJfdCBfX3VpOwogICAgX191aW50MTZfdCBfX3VzaTsKICAgIHVuc2lnbmVkIGNoYXIgX191YzsK
ICB9ICpfX3UgPSAodm9pZCAqKSBfX2Rlc3Q7CiAgc3dpdGNoICgodW5zaWduZWQgaW50KSBfX3Ny
Y2xlbikKICAgIHsKICAgIGNhc2UgMToKICAgICAgX191LT5fX3VjID0gJ1wwJzsKICAgICAgYnJl
YWs7CiAgICBjYXNlIDI6CiAgICAgIF9fdS0+X191c2kgPSBfX3NyYzBfMjsKICAgICAgYnJlYWs7
CiAgICBjYXNlIDM6CiAgICAgIF9fdS0+X191c2kgPSBfX3NyYzBfMjsKICAgICAgX191ID0gX19l
eHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgMik7CiAgICAgIF9fdS0+X191YyA9ICdcMCc7CiAg
ICAgIGJyZWFrOwogICAgY2FzZSA0OgogICAgICBfX3UtPl9fdWkgPSBfX3NyYzBfNDsKICAgICAg
YnJlYWs7CiAgICBjYXNlIDU6CiAgICAgIF9fdS0+X191aSA9IF9fc3JjMF80OwogICAgICBfX3Ug
PSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsKICAgICAgX191LT5fX3VjID0gJ1ww
JzsKICAgICAgYnJlYWs7CiAgICBjYXNlIDY6CiAgICAgIF9fdS0+X191aSA9IF9fc3JjMF80Owog
ICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsKICAgICAgX191LT5f
X3VzaSA9IF9fc3JjNF8yOwogICAgICBicmVhazsKICAgIGNhc2UgNzoKICAgICAgX191LT5fX3Vp
ID0gX19zcmMwXzQ7CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQp
OwogICAgICBfX3UtPl9fdXNpID0gX19zcmM0XzI7CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18g
KCh2b2lkICopIF9fdSArIDIpOwogICAgICBfX3UtPl9fdWMgPSAnXDAnOwogICAgICBicmVhazsK
ICAgIGNhc2UgODoKICAgICAgX191LT5fX3VpID0gX19zcmMwXzQ7CiAgICAgIF9fdSA9IF9fZXh0
ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQpOwogICAgICBfX3UtPl9fdWkgPSBfX3NyYzRfNDsK
ICAgICAgYnJlYWs7CiAgICB9CiAgcmV0dXJuIF9fZGVzdDsKfQojIDg3MyAiL3Vzci9pbmNsdWRl
L2JpdHMvc3RyaW5nMi5oIiAzCmV4dGVybiBfX2lubGluZSBzaXplX3QgX19zdHJjc3BuX2MxIChf
X2NvbnN0IGNoYXIgKl9fcywgY2hhciBfX3JlamVjdCk7CmV4dGVybiBfX2lubGluZSBzaXplX3QK
X19zdHJjc3BuX2MxIChfX2NvbnN0IGNoYXIgKl9fcywgY2hhciBfX3JlamVjdCkKewogIHJlZ2lz
dGVyIHNpemVfdCBfX3Jlc3VsdCA9IDA7CiAgd2hpbGUgKF9fc1tfX3Jlc3VsdF0gIT0gJ1wwJyAm
JiBfX3NbX19yZXN1bHRdICE9IF9fcmVqZWN0KQogICAgKytfX3Jlc3VsdDsKICByZXR1cm4gX19y
ZXN1bHQ7Cn0KCmV4dGVybiBfX2lubGluZSBzaXplX3QgX19zdHJjc3BuX2MyIChfX2NvbnN0IGNo
YXIgKl9fcywgY2hhciBfX3JlamVjdDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjaGFyIF9fcmVqZWN0Mik7CmV4dGVybiBfX2lubGluZSBzaXplX3QKX19zdHJjc3BuX2My
IChfX2NvbnN0IGNoYXIgKl9fcywgY2hhciBfX3JlamVjdDEsIGNoYXIgX19yZWplY3QyKQp7CiAg
cmVnaXN0ZXIgc2l6ZV90IF9fcmVzdWx0ID0gMDsKICB3aGlsZSAoX19zW19fcmVzdWx0XSAhPSAn
XDAnICYmIF9fc1tfX3Jlc3VsdF0gIT0gX19yZWplY3QxCiAgICAgICAgICYmIF9fc1tfX3Jlc3Vs
dF0gIT0gX19yZWplY3QyKQogICAgKytfX3Jlc3VsdDsKICByZXR1cm4gX19yZXN1bHQ7Cn0KCmV4
dGVybiBfX2lubGluZSBzaXplX3QgX19zdHJjc3BuX2MzIChfX2NvbnN0IGNoYXIgKl9fcywgY2hh
ciBfX3JlamVjdDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIF9f
cmVqZWN0MiwgY2hhciBfX3JlamVjdDMpOwpleHRlcm4gX19pbmxpbmUgc2l6ZV90Cl9fc3RyY3Nw
bl9jMyAoX19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19yZWplY3QxLCBjaGFyIF9fcmVqZWN0MiwK
ICAgICAgICAgICAgICBjaGFyIF9fcmVqZWN0MykKewogIHJlZ2lzdGVyIHNpemVfdCBfX3Jlc3Vs
dCA9IDA7CiAgd2hpbGUgKF9fc1tfX3Jlc3VsdF0gIT0gJ1wwJyAmJiBfX3NbX19yZXN1bHRdICE9
IF9fcmVqZWN0MQogICAgICAgICAmJiBfX3NbX19yZXN1bHRdICE9IF9fcmVqZWN0MiAmJiBfX3Nb
X19yZXN1bHRdICE9IF9fcmVqZWN0MykKICAgICsrX19yZXN1bHQ7CiAgcmV0dXJuIF9fcmVzdWx0
Owp9CiMgOTI4ICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMKZXh0ZXJuIF9faW5saW5l
IHNpemVfdCBfX3N0cnNwbl9jMSAoX19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19hY2NlcHQpOwpl
eHRlcm4gX19pbmxpbmUgc2l6ZV90Cl9fc3Ryc3BuX2MxIChfX2NvbnN0IGNoYXIgKl9fcywgY2hh
ciBfX2FjY2VwdCkKewogIHJlZ2lzdGVyIHNpemVfdCBfX3Jlc3VsdCA9IDA7CgogIHdoaWxlIChf
X3NbX19yZXN1bHRdID09IF9fYWNjZXB0KQogICAgKytfX3Jlc3VsdDsKICByZXR1cm4gX19yZXN1
bHQ7Cn0KCmV4dGVybiBfX2lubGluZSBzaXplX3QgX19zdHJzcG5fYzIgKF9fY29uc3QgY2hhciAq
X19zLCBjaGFyIF9fYWNjZXB0MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y2hhciBfX2FjY2VwdDIpOwpleHRlcm4gX19pbmxpbmUgc2l6ZV90Cl9fc3Ryc3BuX2MyIChfX2Nv
bnN0IGNoYXIgKl9fcywgY2hhciBfX2FjY2VwdDEsIGNoYXIgX19hY2NlcHQyKQp7CiAgcmVnaXN0
ZXIgc2l6ZV90IF9fcmVzdWx0ID0gMDsKCiAgd2hpbGUgKF9fc1tfX3Jlc3VsdF0gPT0gX19hY2Nl
cHQxIHx8IF9fc1tfX3Jlc3VsdF0gPT0gX19hY2NlcHQyKQogICAgKytfX3Jlc3VsdDsKICByZXR1
cm4gX19yZXN1bHQ7Cn0KCmV4dGVybiBfX2lubGluZSBzaXplX3QgX19zdHJzcG5fYzMgKF9fY29u
c3QgY2hhciAqX19zLCBjaGFyIF9fYWNjZXB0MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2hhciBfX2FjY2VwdDIsIGNoYXIgX19hY2NlcHQzKTsKZXh0ZXJuIF9faW5saW5l
IHNpemVfdApfX3N0cnNwbl9jMyAoX19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19hY2NlcHQxLCBj
aGFyIF9fYWNjZXB0MiwgY2hhciBfX2FjY2VwdDMpCnsKICByZWdpc3RlciBzaXplX3QgX19yZXN1
bHQgPSAwOwoKICB3aGlsZSAoX19zW19fcmVzdWx0XSA9PSBfX2FjY2VwdDEgfHwgX19zW19fcmVz
dWx0XSA9PSBfX2FjY2VwdDIKICAgICAgICAgfHwgX19zW19fcmVzdWx0XSA9PSBfX2FjY2VwdDMp
CiAgICArK19fcmVzdWx0OwogIHJldHVybiBfX3Jlc3VsdDsKfQojIDk4MyAiL3Vzci9pbmNsdWRl
L2JpdHMvc3RyaW5nMi5oIiAzCmV4dGVybiBfX2lubGluZSBjaGFyICpfX3N0cnBicmtfYzIgKF9f
Y29uc3QgY2hhciAqX19zLCBpbnQgX19hY2NlcHQxLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50IF9fYWNjZXB0Mik7CmV4dGVybiBfX2lubGluZSBjaGFyICoKX19zdHJw
YnJrX2MyIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYWNjZXB0MSwgaW50IF9fYWNjZXB0MikK
ewoKICB3aGlsZSAoKl9fcyAhPSAnXDAnICYmICpfX3MgIT0gX19hY2NlcHQxICYmICpfX3MgIT0g
X19hY2NlcHQyKQogICAgKytfX3M7CiAgcmV0dXJuICpfX3MgPT0gJ1wwJyA/ICgodm9pZCAqKTAp
IDogKGNoYXIgKikgKHNpemVfdCkgX19zOwp9CgpleHRlcm4gX19pbmxpbmUgY2hhciAqX19zdHJw
YnJrX2MzIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYWNjZXB0MSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludCBfX2FjY2VwdDIsIGludCBfX2FjY2VwdDMpOwpleHRl
cm4gX19pbmxpbmUgY2hhciAqCl9fc3RycGJya19jMyAoX19jb25zdCBjaGFyICpfX3MsIGludCBf
X2FjY2VwdDEsIGludCBfX2FjY2VwdDIsCiAgICAgICAgICAgICAgaW50IF9fYWNjZXB0MykKewoK
ICB3aGlsZSAoKl9fcyAhPSAnXDAnICYmICpfX3MgIT0gX19hY2NlcHQxICYmICpfX3MgIT0gX19h
Y2NlcHQyCiAgICAgICAgICYmICpfX3MgIT0gX19hY2NlcHQzKQogICAgKytfX3M7CiAgcmV0dXJu
ICpfX3MgPT0gJ1wwJyA/ICgodm9pZCAqKTApIDogKGNoYXIgKikgKHNpemVfdCkgX19zOwp9CiMg
MTA0NSAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCmV4dGVybiBfX2lubGluZSBjaGFy
ICpfX3N0cnRva19yXzFjIChjaGFyICpfX3MsIGNoYXIgX19zZXAsIGNoYXIgKipfX25leHRwKTsK
ZXh0ZXJuIF9faW5saW5lIGNoYXIgKgpfX3N0cnRva19yXzFjIChjaGFyICpfX3MsIGNoYXIgX19z
ZXAsIGNoYXIgKipfX25leHRwKQp7CiAgY2hhciAqX19yZXN1bHQ7CiAgaWYgKF9fcyA9PSAoKHZv
aWQgKikwKSkKICAgIF9fcyA9ICpfX25leHRwOwogIHdoaWxlICgqX19zID09IF9fc2VwKQogICAg
KytfX3M7CiAgaWYgKCpfX3MgPT0gJ1wwJykKICAgIF9fcmVzdWx0ID0gKCh2b2lkICopMCk7CiAg
ZWxzZQogICAgewogICAgICBfX3Jlc3VsdCA9IF9fczsKICAgICAgd2hpbGUgKCpfX3MgIT0gJ1ww
JyAmJiAqX19zICE9IF9fc2VwKQogICAgICAgICsrX19zOwogICAgICBpZiAoKl9fcyA9PSAnXDAn
KQogICAgICAgICpfX25leHRwID0gX19zOwogICAgICBlbHNlCiAgICAgICAgewogICAgICAgICAg
Kl9fcyA9ICdcMCc7CiAgICAgICAgICAqX19uZXh0cCA9IF9fcyArIDE7CiAgICAgICAgfQogICAg
fQogIHJldHVybiBfX3Jlc3VsdDsKfQojIDEwOTUgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIu
aCIgMwpleHRlcm4gX19pbmxpbmUgY2hhciAqX19zdHJzZXBfMWMgKGNoYXIgKipfX3MsIGNoYXIg
X19yZWplY3QpOwpleHRlcm4gX19pbmxpbmUgY2hhciAqCl9fc3Ryc2VwXzFjIChjaGFyICoqX19z
LCBjaGFyIF9fcmVqZWN0KQp7CiAgcmVnaXN0ZXIgY2hhciAqX19yZXR2YWwgPSAqX19zOwogIGlm
IChfX3JldHZhbCA9PSAoKHZvaWQgKikwKSkKICAgIHJldHVybiAqX19zID0gKCh2b2lkICopMCk7
CiAgaWYgKCpfX3JldHZhbCA9PSBfX3JlamVjdCkKICAgICooKl9fcykrKyA9ICdcMCc7CiAgZWxz
ZQogICAgaWYgKCgqX19zID0gKF9fZXh0ZW5zaW9uX18gKF9fYnVpbHRpbl9jb25zdGFudF9wIChf
X3JlamVjdCkgJiYgKF9fcmVqZWN0KSA9PSAnXDAnID8gKGNoYXIgKikgX19yYXdtZW1jaHIgKF9f
cmV0dmFsLCBfX3JlamVjdCkgOiBzdHJjaHIgKF9fcmV0dmFsLCBfX3JlamVjdCkpKSkgIT0gKCh2
b2lkICopMCkpCiAgICAgICooKl9fcykrKyA9ICdcMCc7CiAgICBlbHNlCiAgICAgICpfX3MgPSAo
KHZvaWQgKikwKTsKICByZXR1cm4gX19yZXR2YWw7Cn0KCmV4dGVybiBfX2lubGluZSBjaGFyICpf
X3N0cnNlcF8yYyAoY2hhciAqKl9fcywgY2hhciBfX3JlamVjdDEsIGNoYXIgX19yZWplY3QyKTsK
ZXh0ZXJuIF9faW5saW5lIGNoYXIgKgpfX3N0cnNlcF8yYyAoY2hhciAqKl9fcywgY2hhciBfX3Jl
amVjdDEsIGNoYXIgX19yZWplY3QyKQp7CiAgcmVnaXN0ZXIgY2hhciAqX19yZXR2YWwgPSAqX19z
OwogIGlmIChfX3JldHZhbCA9PSAoKHZvaWQgKikwKSkKICAgIHJldHVybiAqX19zID0gKCh2b2lk
ICopMCk7CiAgaWYgKCpfX3JldHZhbCA9PSBfX3JlamVjdDEgfHwgKl9fcmV0dmFsID09IF9fcmVq
ZWN0MikKICAgICooKl9fcykrKyA9ICdcMCc7CiAgZWxzZQogICAgewogICAgICByZWdpc3RlciBj
aGFyICpfX2NwID0gX19yZXR2YWw7CiAgICAgIHdoaWxlICgqX19jcCAhPSAnXDAnICYmICpfX2Nw
ICE9IF9fcmVqZWN0MSAmJiAqX19jcCAhPSBfX3JlamVjdDIpCiAgICAgICAgKytfX2NwOwogICAg
ICBpZiAoKl9fY3AgIT0gJ1wwJykKICAgICAgICB7CiAgICAgICAgICAqX19zID0gX19jcDsKICAg
ICAgICAgICooKl9fcykrKyA9ICdcMCc7CiAgICAgICAgfQogICAgICBlbHNlCiAgICAgICAgKl9f
cyA9ICgodm9pZCAqKTApOwogICAgfQogIHJldHVybiBfX3JldHZhbDsKfQoKZXh0ZXJuIF9faW5s
aW5lIGNoYXIgKl9fc3Ryc2VwXzNjIChjaGFyICoqX19zLCBjaGFyIF9fcmVqZWN0MSwgY2hhciBf
X3JlamVjdDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBfX3JlamVj
dDMpOwpleHRlcm4gX19pbmxpbmUgY2hhciAqCl9fc3Ryc2VwXzNjIChjaGFyICoqX19zLCBjaGFy
IF9fcmVqZWN0MSwgY2hhciBfX3JlamVjdDIsIGNoYXIgX19yZWplY3QzKQp7CiAgcmVnaXN0ZXIg
Y2hhciAqX19yZXR2YWwgPSAqX19zOwogIGlmIChfX3JldHZhbCA9PSAoKHZvaWQgKikwKSkKICAg
IHJldHVybiAqX19zID0gKCh2b2lkICopMCk7CiAgaWYgKCpfX3JldHZhbCA9PSBfX3JlamVjdDEg
fHwgKl9fcmV0dmFsID09IF9fcmVqZWN0MgogICAgICB8fCAqX19yZXR2YWwgPT0gX19yZWplY3Qz
KQogICAgKigqX19zKSsrID0gJ1wwJzsKICBlbHNlCiAgICB7CiAgICAgIHJlZ2lzdGVyIGNoYXIg
Kl9fY3AgPSBfX3JldHZhbDsKICAgICAgd2hpbGUgKCpfX2NwICE9ICdcMCcgJiYgKl9fY3AgIT0g
X19yZWplY3QxICYmICpfX2NwICE9IF9fcmVqZWN0MgogICAgICAgICAgICAgJiYgKl9fY3AgIT0g
X19yZWplY3QzKQogICAgICAgICsrX19jcDsKICAgICAgaWYgKCpfX2NwICE9ICdcMCcpCiAgICAg
ICAgewogICAgICAgICAgKl9fcyA9IF9fY3A7CiAgICAgICAgICAqKCpfX3MpKysgPSAnXDAnOwog
ICAgICAgIH0KICAgICAgZWxzZQogICAgICAgICpfX3MgPSAoKHZvaWQgKikwKTsKICAgIH0KICBy
ZXR1cm4gX19yZXR2YWw7Cn0KCmV4dGVybiBfX2lubGluZSBjaGFyICpfX3N0cnNlcF9nIChjaGFy
ICoqX19zLCBfX2NvbnN0IGNoYXIgKl9fcmVqZWN0KTsKZXh0ZXJuIF9faW5saW5lIGNoYXIgKgpf
X3N0cnNlcF9nIChjaGFyICoqX19zLCBfX2NvbnN0IGNoYXIgKl9fcmVqZWN0KQp7CiAgcmVnaXN0
ZXIgY2hhciAqX19yZXR2YWwgPSAqX19zOwogIGlmIChfX3JldHZhbCA9PSAoKHZvaWQgKikwKSkK
ICAgIHJldHVybiAoKHZvaWQgKikwKTsKICBpZiAoKCpfX3MgPSBfX2V4dGVuc2lvbl9fICh7IGNo
YXIgX19hMCwgX19hMSwgX19hMjsgKF9fYnVpbHRpbl9jb25zdGFudF9wIChfX3JlamVjdCkgJiYg
KChzaXplX3QpKGNvbnN0IHZvaWQgKikoKF9fcmVqZWN0KSArIDEpIC0gKHNpemVfdCkoY29uc3Qg
dm9pZCAqKShfX3JlamVjdCkgPT0gMSkgPyAoKF9fYTAgPSAoKF9fY29uc3QgY2hhciAqKSAoX19y
ZWplY3QpKVswXSwgX19hMCA9PSAnXDAnKSA/ICgodm9pZCkgKF9fcmV0dmFsKSwgKCh2b2lkICop
MCkpIDogKChfX2ExID0gKChfX2NvbnN0IGNoYXIgKikgKF9fcmVqZWN0KSlbMV0sIF9fYTEgPT0g
J1wwJykgPyAoX19leHRlbnNpb25fXyAoX19idWlsdGluX2NvbnN0YW50X3AgKF9fYTApICYmIChf
X2EwKSA9PSAnXDAnID8gKGNoYXIgKikgX19yYXdtZW1jaHIgKF9fcmV0dmFsLCBfX2EwKSA6IHN0
cmNociAoX19yZXR2YWwsIF9fYTApKSkgOiAoKF9fYTIgPSAoKF9fY29uc3QgY2hhciAqKSAoX19y
ZWplY3QpKVsyXSwgX19hMiA9PSAnXDAnKSA/IF9fc3RycGJya19jMiAoX19yZXR2YWwsIF9fYTAs
IF9fYTEpIDogKCgoX19jb25zdCBjaGFyICopIChfX3JlamVjdCkpWzNdID09ICdcMCcgPyBfX3N0
cnBicmtfYzMgKF9fcmV0dmFsLCBfX2EwLCBfX2ExLCBfX2EyKSA6IHN0cnBicmsgKF9fcmV0dmFs
LCBfX3JlamVjdCkpKSkpIDogc3RycGJyayAoX19yZXR2YWwsIF9fcmVqZWN0KSk7IH0pKSAhPSAo
KHZvaWQgKikwKSkKICAgICooKl9fcykrKyA9ICdcMCc7CiAgcmV0dXJuIF9fcmV0dmFsOwp9CiMg
MTE4OCAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL3N0
ZGxpYi5oIiAxIDMKIyAyNSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCiMgMSAiL3Vzci9pbmNs
dWRlL2ZlYXR1cmVzLmgiIDEgMwojIDI2ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDIgMwoKCgoK
CgoKIyAxICIvdXNyL2xvY2FsL2djYy0zL2xpYi9nY2MtbGliL2k1ODYtcGMtbGludXgtZ251LzMu
MC4zL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDM0ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDIg
MwojIDUyOCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVybiB2b2lkICptYWxsb2MgKHNp
emVfdCBfX3NpemUpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CgpleHRlcm4gdm9pZCAq
Y2FsbG9jIChzaXplX3QgX19ubWVtYiwgc2l6ZV90IF9fc2l6ZSkKICAgICAgICAgICAgIF9fYXR0
cmlidXRlX18gKChfX21hbGxvY19fKSk7CiMgMTE4OSAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5n
Mi5oIiAyIDMKCgoKCmV4dGVybiBjaGFyICpfX3N0cmR1cCAoX19jb25zdCBjaGFyICpfX3N0cmlu
ZykgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsKIyAxMjEyICIvdXNyL2luY2x1ZGUvYml0
cy9zdHJpbmcyLmgiIDMKZXh0ZXJuIGNoYXIgKl9fc3RybmR1cCAoX19jb25zdCBjaGFyICpfX3N0
cmluZywgc2l6ZV90IF9fbikKICAgICAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19f
KSk7CiMgMzYwICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDIgMwojIDU1ICJzdGRmbi5oIiAyCiMg
OTggInN0ZGZuLmgiCiMgMSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAxIDMKIyAyNSAiL3Vzci9p
bmNsdWRlL3N0ZGxpYi5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDEgMwojIDI2
ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDIgMwoKCgoKCgoKIyAxICIvdXNyL2xvY2FsL2djYy0z
L2xpYi9nY2MtbGliL2k1ODYtcGMtbGludXgtZ251LzMuMC4zL2luY2x1ZGUvc3RkZGVmLmgiIDEg
MwojIDM0ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDIgMwojIDk0ICIvdXNyL2luY2x1ZGUvc3Rk
bGliLmgiIDMKdHlwZWRlZiBzdHJ1Y3QKICB7CiAgICBpbnQgcXVvdDsKICAgIGludCByZW07CiAg
fSBkaXZfdDsKCgoKdHlwZWRlZiBzdHJ1Y3QKICB7CiAgICBsb25nIGludCBxdW90OwogICAgbG9u
ZyBpbnQgcmVtOwogIH0gbGRpdl90OwojIDEzMyAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCmV4
dGVybiBzaXplX3QgX19jdHlwZV9nZXRfbWJfY3VyX21heCAodm9pZCkgOwoKCgpleHRlcm4gZG91
YmxlIGF0b2YgKF9fY29uc3QgY2hhciAqX19ucHRyKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18p
KTsKCmV4dGVybiBpbnQgYXRvaSAoX19jb25zdCBjaGFyICpfX25wdHIpIF9fYXR0cmlidXRlX18g
KChfX3B1cmVfXykpOwoKZXh0ZXJuIGxvbmcgaW50IGF0b2wgKF9fY29uc3QgY2hhciAqX19ucHRy
KSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKX19leHRlbnNpb25fXyBleHRlcm4gbG9u
ZyBsb25nIGludCBhdG9sbCAoX19jb25zdCBjaGFyICpfX25wdHIpCiAgICAgICAgICAgICBfX2F0
dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKZXh0ZXJuIGRvdWJsZSBzdHJ0b2QgKF9fY29uc3Qg
Y2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19y
ZXN0cmljdCBfX2VuZHB0cikgOwojIDE2MyAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVy
biBsb25nIGludCBzdHJ0b2wgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAg
ICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19iYXNl
KSA7CgpleHRlcm4gdW5zaWduZWQgbG9uZyBpbnQgc3RydG91bCAoX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipf
X3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19iYXNlKQogICAgICAgICAgICA7CgoKCl9fZXh0ZW5z
aW9uX18KZXh0ZXJuIGxvbmcgbG9uZyBpbnQgc3RydG9xIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJp
Y3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0
IF9fZW5kcHRyLCBpbnQgX19iYXNlKSA7CgpfX2V4dGVuc2lvbl9fCmV4dGVybiB1bnNpZ25lZCBs
b25nIGxvbmcgaW50IHN0cnRvdXEgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9f
ZW5kcHRyLCBpbnQgX19iYXNlKQogICAgICAgICAgICA7CgoKCgoKCl9fZXh0ZW5zaW9uX18KZXh0
ZXJuIGxvbmcgbG9uZyBpbnQgc3RydG9sbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0
ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRw
dHIsIGludCBfX2Jhc2UpIDsKCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9u
ZyBpbnQgc3RydG91bGwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0
ciwgaW50IF9fYmFzZSkKICAgICAgICAgICAgOwojIDI1MCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5o
IiAzCmV4dGVybiBkb3VibGUgX19zdHJ0b2RfaW50ZXJuYWwgKF9fY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jl
c3RyaWN0IF9fZW5kcHRyLCBpbnQgX19ncm91cCkKICAgICAgICAgICAgOwpleHRlcm4gZmxvYXQg
X19zdHJ0b2ZfaW50ZXJuYWwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGlu
dCBfX2dyb3VwKQogICAgICAgICAgICA7CmV4dGVybiBsb25nIGRvdWJsZSBfX3N0cnRvbGRfaW50
ZXJuYWwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19ncm91cCkgOwoKZXh0ZXJuIGxv
bmcgaW50IF9fc3RydG9sX2ludGVybmFsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRy
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9f
ZW5kcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX2Jhc2UsIGlu
dCBfX2dyb3VwKSA7CgoKCmV4dGVybiB1bnNpZ25lZCBsb25nIGludCBfX3N0cnRvdWxfaW50ZXJu
YWwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19iYXNlLCBpbnQg
X19ncm91cCkgOwoKCgoKX19leHRlbnNpb25fXwpleHRlcm4gbG9uZyBsb25nIGludCBfX3N0cnRv
bGxfaW50ZXJuYWwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fYmFzZSwgaW50
IF9fZ3JvdXApIDsKCgoKX19leHRlbnNpb25fXwpleHRlcm4gdW5zaWduZWQgbG9uZyBsb25nIGlu
dCBfX3N0cnRvdWxsX2ludGVybmFsIChfX2NvbnN0IGNoYXIgKgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVz
dHJpY3QgX19lbmRwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCBfX2Jhc2UsIGludCBfX2dyb3VwKQogICAgICAgICAgICA7CiMgMjk0ICIv
dXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIF9faW5saW5lIGRvdWJsZQpzdHJ0b2QgKF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRy
KQp7CiAgcmV0dXJuIF9fc3RydG9kX2ludGVybmFsIChfX25wdHIsIF9fZW5kcHRyLCAwKTsKfQpl
eHRlcm4gX19pbmxpbmUgbG9uZyBpbnQKc3RydG9sIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3Qg
X19ucHRyLCBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICBpbnQgX19iYXNlKQp7
CiAgcmV0dXJuIF9fc3RydG9sX2ludGVybmFsIChfX25wdHIsIF9fZW5kcHRyLCBfX2Jhc2UsIDAp
Owp9CmV4dGVybiBfX2lubGluZSB1bnNpZ25lZCBsb25nIGludApzdHJ0b3VsIChfX2NvbnN0IGNo
YXIgKl9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAg
ICAgaW50IF9fYmFzZSkKewogIHJldHVybiBfX3N0cnRvdWxfaW50ZXJuYWwgKF9fbnB0ciwgX19l
bmRwdHIsIF9fYmFzZSwgMCk7Cn0KIyAzMjYgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpfX2V4
dGVuc2lvbl9fIGV4dGVybiBfX2lubGluZSBsb25nIGxvbmcgaW50CnN0cnRvcSAoX19jb25zdCBj
aGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAg
ICAgaW50IF9fYmFzZSkKewogIHJldHVybiBfX3N0cnRvbGxfaW50ZXJuYWwgKF9fbnB0ciwgX19l
bmRwdHIsIF9fYmFzZSwgMCk7Cn0KX19leHRlbnNpb25fXyBleHRlcm4gX19pbmxpbmUgdW5zaWdu
ZWQgbG9uZyBsb25nIGludApzdHJ0b3VxIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRy
LCBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgaW50IF9fYmFzZSkKewogIHJl
dHVybiBfX3N0cnRvdWxsX2ludGVybmFsIChfX25wdHIsIF9fZW5kcHRyLCBfX2Jhc2UsIDApOwp9
CgoKCl9fZXh0ZW5zaW9uX18gZXh0ZXJuIF9faW5saW5lIGxvbmcgbG9uZyBpbnQKc3RydG9sbCAo
X19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRw
dHIsCiAgICAgICAgIGludCBfX2Jhc2UpCnsKICByZXR1cm4gX19zdHJ0b2xsX2ludGVybmFsIChf
X25wdHIsIF9fZW5kcHRyLCBfX2Jhc2UsIDApOwp9Cl9fZXh0ZW5zaW9uX18gZXh0ZXJuIF9faW5s
aW5lIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQKc3RydG91bGwgKF9fY29uc3QgY2hhciAqIF9fcmVz
dHJpY3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgIGludCBf
X2Jhc2UpCnsKICByZXR1cm4gX19zdHJ0b3VsbF9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0ciwg
X19iYXNlLCAwKTsKfQoKCmV4dGVybiBfX2lubGluZSBkb3VibGUKYXRvZiAoX19jb25zdCBjaGFy
ICpfX25wdHIpCnsKICByZXR1cm4gc3RydG9kIChfX25wdHIsIChjaGFyICoqKSAoKHZvaWQgKikw
KSk7Cn0KZXh0ZXJuIF9faW5saW5lIGludAphdG9pIChfX2NvbnN0IGNoYXIgKl9fbnB0cikKewog
IHJldHVybiAoaW50KSBzdHJ0b2wgKF9fbnB0ciwgKGNoYXIgKiopICgodm9pZCAqKTApLCAxMCk7
Cn0KZXh0ZXJuIF9faW5saW5lIGxvbmcgaW50CmF0b2wgKF9fY29uc3QgY2hhciAqX19ucHRyKQp7
CiAgcmV0dXJuIHN0cnRvbCAoX19ucHRyLCAoY2hhciAqKikgKCh2b2lkICopMCksIDEwKTsKfQoK
Cl9fZXh0ZW5zaW9uX18gZXh0ZXJuIF9faW5saW5lIGxvbmcgbG9uZyBpbnQKYXRvbGwgKF9fY29u
c3QgY2hhciAqX19ucHRyKQp7CiAgcmV0dXJuIHN0cnRvbGwgKF9fbnB0ciwgKGNoYXIgKiopICgo
dm9pZCAqKTApLCAxMCk7Cn0KIyAzODUgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4g
Y2hhciAqbDY0YSAobG9uZyBpbnQgX19uKSA7CgoKZXh0ZXJuIGxvbmcgaW50IGE2NGwgKF9fY29u
c3QgY2hhciAqX19zKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgojIDEgIi91c3IvaW5j
bHVkZS9zeXMvdHlwZXMuaCIgMSAzCiMgMjYgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMwoj
IDEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAxIDMKIyAyNyAiL3Vzci9pbmNsdWRlL3N5cy90
eXBlcy5oIiAyIDMKCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAxIDMKIyAzMSAi
L3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMKCgp0eXBlZGVmIF9fdV9jaGFyIHVfY2hhcjsK
dHlwZWRlZiBfX3Vfc2hvcnQgdV9zaG9ydDsKdHlwZWRlZiBfX3VfaW50IHVfaW50Owp0eXBlZGVm
IF9fdV9sb25nIHVfbG9uZzsKdHlwZWRlZiBfX3F1YWRfdCBxdWFkX3Q7CnR5cGVkZWYgX191X3F1
YWRfdCB1X3F1YWRfdDsKdHlwZWRlZiBfX2ZzaWRfdCBmc2lkX3Q7CgoKdHlwZWRlZiBfX2xvZmZf
dCBsb2ZmX3Q7CgoKCnR5cGVkZWYgX19pbm9fdCBpbm9fdDsKIyA1OCAiL3Vzci9pbmNsdWRlL3N5
cy90eXBlcy5oIiAzCnR5cGVkZWYgX19kZXZfdCBkZXZfdDsKCgoKCnR5cGVkZWYgX19naWRfdCBn
aWRfdDsKCgoKCnR5cGVkZWYgX19tb2RlX3QgbW9kZV90OwoKCgoKdHlwZWRlZiBfX25saW5rX3Qg
bmxpbmtfdDsKCgoKCnR5cGVkZWYgX191aWRfdCB1aWRfdDsKCgoKCgp0eXBlZGVmIF9fb2ZmX3Qg
b2ZmX3Q7CiMgOTYgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMwp0eXBlZGVmIF9fcGlkX3Qg
cGlkX3Q7CgoKCgp0eXBlZGVmIF9faWRfdCBpZF90OwoKCgoKdHlwZWRlZiBfX3NzaXplX3Qgc3Np
emVfdDsKCgoKCnR5cGVkZWYgX19kYWRkcl90IGRhZGRyX3Q7CnR5cGVkZWYgX19jYWRkcl90IGNh
ZGRyX3Q7CgoKCnR5cGVkZWYgX19rZXlfdCBrZXlfdDsKIyAxMjYgIi91c3IvaW5jbHVkZS9zeXMv
dHlwZXMuaCIgMwojIDEgIi91c3IvaW5jbHVkZS90aW1lLmgiIDEgMwojIDY3ICIvdXNyL2luY2x1
ZGUvdGltZS5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMSAzCiMgNjggIi91
c3IvaW5jbHVkZS90aW1lLmgiIDIgMwoKCnR5cGVkZWYgX190aW1lX3QgdGltZV90OwojIDc5ICIv
dXNyL2luY2x1ZGUvdGltZS5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMSAz
CiMgODAgIi91c3IvaW5jbHVkZS90aW1lLmgiIDIgMwoKCnR5cGVkZWYgX19jbG9ja2lkX3QgY2xv
Y2tpZF90OwojIDkxICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2Jp
dHMvdHlwZXMuaCIgMSAzCiMgOTIgIi91c3IvaW5jbHVkZS90aW1lLmgiIDIgMwoKCnR5cGVkZWYg
X190aW1lcl90IHRpbWVyX3Q7CiMgMTI3ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMwoj
IDE0MCAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAzCiMgMSAiL3Vzci9sb2NhbC9nY2MtMy9s
aWIvZ2NjLWxpYi9pNTg2LXBjLWxpbnV4LWdudS8zLjAuMy9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMK
IyAxNDEgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzCgoKCnR5cGVkZWYgdW5zaWduZWQg
bG9uZyBpbnQgdWxvbmc7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50IHVzaG9ydDsKdHlwZWRl
ZiB1bnNpZ25lZCBpbnQgdWludDsKIyAxODQgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMwp0
eXBlZGVmIGludCBpbnQ4X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1FJX18pKSk7CnR5
cGVkZWYgaW50IGludDE2X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX0hJX18pKSk7CnR5
cGVkZWYgaW50IGludDMyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1NJX18pKSk7CnR5
cGVkZWYgaW50IGludDY0X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX0RJX18pKSk7CgoK
dHlwZWRlZiB1bnNpZ25lZCBpbnQgdV9pbnQ4X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChf
X1FJX18pKSk7CnR5cGVkZWYgdW5zaWduZWQgaW50IHVfaW50MTZfdCBfX2F0dHJpYnV0ZV9fICgo
X19tb2RlX18gKF9fSElfXykpKTsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdV9pbnQzMl90IF9fYXR0
cmlidXRlX18gKChfX21vZGVfXyAoX19TSV9fKSkpOwp0eXBlZGVmIHVuc2lnbmVkIGludCB1X2lu
dDY0X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX0RJX18pKSk7Cgp0eXBlZGVmIGludCBy
ZWdpc3Rlcl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX193b3JkX18pKSk7CiMgMjA2ICIv
dXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZW5kaWFuLmgiIDEg
MwojIDIwNyAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMKCgojIDEgIi91c3IvaW5jbHVk
ZS9zeXMvc2VsZWN0LmgiIDEgMwojIDI1ICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAzCiMg
MSAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDEgMwojIDI2ICIvdXNyL2luY2x1ZGUvc3lzL3Nl
bGVjdC5oIiAyIDMKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDEgMwojIDI5ICIv
dXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAyIDMKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3Nl
bGVjdC5oIiAxIDMKIyAzMiAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMiAzCgoKIyAxICIv
dXNyL2luY2x1ZGUvYml0cy9zaWdzZXQuaCIgMSAzCiMgMjMgIi91c3IvaW5jbHVkZS9iaXRzL3Np
Z3NldC5oIiAzCnR5cGVkZWYgaW50IF9fc2lnX2F0b21pY190OwoKCgoKdHlwZWRlZiBzdHJ1Y3QK
ICB7CiAgICB1bnNpZ25lZCBsb25nIGludCBfX3ZhbFsoMTAyNCAvICg4ICogc2l6ZW9mICh1bnNp
Z25lZCBsb25nIGludCkpKV07CiAgfSBfX3NpZ3NldF90OwojIDM1ICIvdXNyL2luY2x1ZGUvc3lz
L3NlbGVjdC5oIiAyIDMKCgoKdHlwZWRlZiBfX3NpZ3NldF90IHNpZ3NldF90OwoKCgoKIyAxICIv
dXNyL2luY2x1ZGUvdGltZS5oIiAxIDMKIyAxMDYgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKc3Ry
dWN0IHRpbWVzcGVjCiAgewogICAgbG9uZyBpbnQgdHZfc2VjOwogICAgbG9uZyBpbnQgdHZfbnNl
YzsKICB9OwojIDQ0ICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAyIDMKCiMgMSAiL3Vzci9p
bmNsdWRlL2JpdHMvdGltZS5oIiAxIDMKIyA2MyAiL3Vzci9pbmNsdWRlL2JpdHMvdGltZS5oIiAz
CiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMSAzCiMgNjQgIi91c3IvaW5jbHVkZS9i
aXRzL3RpbWUuaCIgMiAzCgoKCnN0cnVjdCB0aW1ldmFsCiAgewogICAgX190aW1lX3QgdHZfc2Vj
OwogICAgX19zdXNlY29uZHNfdCB0dl91c2VjOwogIH07CiMgNDYgIi91c3IvaW5jbHVkZS9zeXMv
c2VsZWN0LmgiIDIgMwoKCgp0eXBlZGVmIGxvbmcgaW50IF9fZmRfbWFzazsKCgoKCgoKCnR5cGVk
ZWYgc3RydWN0CiAgewoKCgoKCgogICAgX19mZF9tYXNrIF9fZmRzX2JpdHNbMTAyNCAvICg4ICog
c2l6ZW9mIChfX2ZkX21hc2spKV07CgoKICB9IGZkX3NldDsKCgoKCgoKdHlwZWRlZiBfX2ZkX21h
c2sgZmRfbWFzazsKIyA5NiAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMwpleHRlcm4gaW50
IHNlbGVjdCAoaW50IF9fbmZkcywgZmRfc2V0ICpfX3Jlc3RyaWN0IF9fcmVhZGZkcywKICAgICAg
ICAgICAgICAgICAgIGZkX3NldCAqX19yZXN0cmljdCBfX3dyaXRlZmRzLAogICAgICAgICAgICAg
ICAgICAgZmRfc2V0ICpfX3Jlc3RyaWN0IF9fZXhjZXB0ZmRzLAogICAgICAgICAgICAgICAgICAg
c3RydWN0IHRpbWV2YWwgKl9fcmVzdHJpY3QgX190aW1lb3V0KSA7CiMgMjEwICIvdXNyL2luY2x1
ZGUvc3lzL3R5cGVzLmgiIDIgMwoKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9zeXNtYWNyb3MuaCIg
MSAzCiMgMjEzICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMwojIDIyNCAiL3Vzci9pbmNs
dWRlL3N5cy90eXBlcy5oIiAzCnR5cGVkZWYgX19ibGtjbnRfdCBibGtjbnRfdDsKCgoKdHlwZWRl
ZiBfX2ZzYmxrY250X3QgZnNibGtjbnRfdDsKCgoKdHlwZWRlZiBfX2ZzZmlsY250X3QgZnNmaWxj
bnRfdDsKIyAzOTIgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAzCgoKCgoKCmV4dGVybiBsb25n
IGludCByYW5kb20gKHZvaWQpIDsKCgpleHRlcm4gdm9pZCBzcmFuZG9tICh1bnNpZ25lZCBpbnQg
X19zZWVkKSA7CgoKCgoKZXh0ZXJuIGNoYXIgKmluaXRzdGF0ZSAodW5zaWduZWQgaW50IF9fc2Vl
ZCwgY2hhciAqX19zdGF0ZWJ1ZiwKICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fc3Rh
dGVsZW4pIDsKCgoKZXh0ZXJuIGNoYXIgKnNldHN0YXRlIChjaGFyICpfX3N0YXRlYnVmKSA7CgoK
CgoKCgpzdHJ1Y3QgcmFuZG9tX2RhdGEKICB7CiAgICBpbnQzMl90ICpmcHRyOwogICAgaW50MzJf
dCAqcnB0cjsKICAgIGludDMyX3QgKnN0YXRlOwogICAgaW50IHJhbmRfdHlwZTsKICAgIGludCBy
YW5kX2RlZzsKICAgIGludCByYW5kX3NlcDsKICAgIGludDMyX3QgKmVuZF9wdHI7CiAgfTsKCmV4
dGVybiBpbnQgcmFuZG9tX3IgKHN0cnVjdCByYW5kb21fZGF0YSAqX19yZXN0cmljdCBfX2J1ZiwK
ICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCAqX19yZXN0cmljdCBfX3Jlc3VsdCkgOwoKZXh0
ZXJuIGludCBzcmFuZG9tX3IgKHVuc2lnbmVkIGludCBfX3NlZWQsIHN0cnVjdCByYW5kb21fZGF0
YSAqX19idWYpIDsKCmV4dGVybiBpbnQgaW5pdHN0YXRlX3IgKHVuc2lnbmVkIGludCBfX3NlZWQs
IGNoYXIgKl9fcmVzdHJpY3QgX19zdGF0ZWJ1ZiwKICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IF9fc3RhdGVsZW4sCiAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCByYW5kb21fZGF0
YSAqX19yZXN0cmljdCBfX2J1ZikgOwoKZXh0ZXJuIGludCBzZXRzdGF0ZV9yIChjaGFyICpfX3Jl
c3RyaWN0IF9fc3RhdGVidWYsCiAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHJhbmRvbV9k
YXRhICpfX3Jlc3RyaWN0IF9fYnVmKSA7CgoKCgoKZXh0ZXJuIGludCByYW5kICh2b2lkKSA7Cgpl
eHRlcm4gdm9pZCBzcmFuZCAodW5zaWduZWQgaW50IF9fc2VlZCkgOwoKCgpleHRlcm4gaW50IHJh
bmRfciAodW5zaWduZWQgaW50ICpfX3NlZWQpIDsKCgoKCgoKCmV4dGVybiBkb3VibGUgZHJhbmQ0
OCAodm9pZCkgOwpleHRlcm4gZG91YmxlIGVyYW5kNDggKHVuc2lnbmVkIHNob3J0IGludCBfX3hz
dWJpWzNdKSA7CgoKZXh0ZXJuIGxvbmcgaW50IGxyYW5kNDggKHZvaWQpIDsKZXh0ZXJuIGxvbmcg
aW50IG5yYW5kNDggKHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNdKSA7CgoKZXh0ZXJuIGxv
bmcgaW50IG1yYW5kNDggKHZvaWQpIDsKZXh0ZXJuIGxvbmcgaW50IGpyYW5kNDggKHVuc2lnbmVk
IHNob3J0IGludCBfX3hzdWJpWzNdKSA7CgoKZXh0ZXJuIHZvaWQgc3JhbmQ0OCAobG9uZyBpbnQg
X19zZWVkdmFsKSA7CmV4dGVybiB1bnNpZ25lZCBzaG9ydCBpbnQgKnNlZWQ0OCAodW5zaWduZWQg
c2hvcnQgaW50IF9fc2VlZDE2dlszXSkgOwpleHRlcm4gdm9pZCBsY29uZzQ4ICh1bnNpZ25lZCBz
aG9ydCBpbnQgX19wYXJhbVs3XSkgOwoKCgoKCnN0cnVjdCBkcmFuZDQ4X2RhdGEKICB7CiAgICB1
bnNpZ25lZCBzaG9ydCBpbnQgX194WzNdOwogICAgdW5zaWduZWQgc2hvcnQgaW50IF9fb2xkX3hb
M107CiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgX19jOwogICAgdW5zaWduZWQgc2hvcnQgaW50IF9f
aW5pdDsKICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX19hOwogIH07CgoKZXh0ZXJuIGludCBk
cmFuZDQ4X3IgKHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZmZXIsCiAgICAg
ICAgICAgICAgICAgICAgICBkb3VibGUgKl9fcmVzdHJpY3QgX19yZXN1bHQpIDsKZXh0ZXJuIGlu
dCBlcmFuZDQ4X3IgKHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNdLAogICAgICAgICAgICAg
ICAgICAgICAgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZlciwKICAgICAg
ICAgICAgICAgICAgICAgIGRvdWJsZSAqX19yZXN0cmljdCBfX3Jlc3VsdCkgOwoKCmV4dGVybiBp
bnQgbHJhbmQ0OF9yIChzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmZmVyLAog
ICAgICAgICAgICAgICAgICAgICAgbG9uZyBpbnQgKl9fcmVzdHJpY3QgX19yZXN1bHQpIDsKZXh0
ZXJuIGludCBucmFuZDQ4X3IgKHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNdLAogICAgICAg
ICAgICAgICAgICAgICAgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZlciwK
ICAgICAgICAgICAgICAgICAgICAgIGxvbmcgaW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSA7CgoK
ZXh0ZXJuIGludCBtcmFuZDQ4X3IgKHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19i
dWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICBsb25nIGludCAqX19yZXN0cmljdCBfX3Jlc3Vs
dCkgOwpleHRlcm4gaW50IGpyYW5kNDhfciAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10s
CiAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX3Jlc3RyaWN0IF9f
YnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgbG9uZyBpbnQgKl9fcmVzdHJpY3QgX19yZXN1
bHQpIDsKCgpleHRlcm4gaW50IHNyYW5kNDhfciAobG9uZyBpbnQgX19zZWVkdmFsLCBzdHJ1Y3Qg
ZHJhbmQ0OF9kYXRhICpfX2J1ZmZlcikKICAgICAgICAgICAgOwoKZXh0ZXJuIGludCBzZWVkNDhf
ciAodW5zaWduZWQgc2hvcnQgaW50IF9fc2VlZDE2dlszXSwKICAgICAgICAgICAgICAgICAgICAg
c3RydWN0IGRyYW5kNDhfZGF0YSAqX19idWZmZXIpIDsKCmV4dGVybiBpbnQgbGNvbmc0OF9yICh1
bnNpZ25lZCBzaG9ydCBpbnQgX19wYXJhbVs3XSwKICAgICAgICAgICAgICAgICAgICAgIHN0cnVj
dCBkcmFuZDQ4X2RhdGEgKl9fYnVmZmVyKSA7CiMgNTM3ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgi
IDMKZXh0ZXJuIHZvaWQgKnJlYWxsb2MgKHZvaWQgKl9fcHRyLCBzaXplX3QgX19zaXplKSBfX2F0
dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwoKZXh0ZXJuIHZvaWQgZnJlZSAodm9pZCAqX19wdHIp
IDsKCgoKZXh0ZXJuIHZvaWQgY2ZyZWUgKHZvaWQgKl9fcHRyKSA7CgoKCiMgMSAiL3Vzci9pbmNs
dWRlL2FsbG9jYS5oIiAxIDMKIyAyMiAiL3Vzci9pbmNsdWRlL2FsbG9jYS5oIiAzCiMgMSAiL3Vz
ci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDEgMwojIDIzICIvdXNyL2luY2x1ZGUvYWxsb2NhLmgiIDIg
MwoKCiMgMSAiL3Vzci9sb2NhbC9nY2MtMy9saWIvZ2NjLWxpYi9pNTg2LXBjLWxpbnV4LWdudS8z
LjAuMy9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAyNiAiL3Vzci9pbmNsdWRlL2FsbG9jYS5oIiAy
IDMKCgoKCgoKCmV4dGVybiB2b2lkICphbGxvY2EgKHNpemVfdCBfX3NpemUpIDsKIyA1NDggIi91
c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAzCgoKCgpleHRlcm4gdm9pZCAqdmFsbG9jIChzaXplX3Qg
X19zaXplKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwojIDU2MiAiL3Vzci9pbmNsdWRl
L3N0ZGxpYi5oIiAzCmV4dGVybiB2b2lkIGFib3J0ICh2b2lkKSBfX2F0dHJpYnV0ZV9fICgoX19u
b3JldHVybl9fKSk7CgoKCmV4dGVybiBpbnQgYXRleGl0ICh2b2lkICgqX19mdW5jKSAodm9pZCkp
IDsKCgoKCmV4dGVybiBpbnQgb25fZXhpdCAodm9pZCAoKl9fZnVuYykgKGludCBfX3N0YXR1cywg
dm9pZCAqX19hcmcpLCB2b2lkICpfX2FyZykKICAgICAgICAgICAgOwoKCgoKCmV4dGVybiB2b2lk
IGV4aXQgKGludCBfX3N0YXR1cykgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwojIDU4
OCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVybiBjaGFyICpnZXRlbnYgKF9fY29uc3Qg
Y2hhciAqX19uYW1lKSA7CgoKCmV4dGVybiBjaGFyICpfX3NlY3VyZV9nZXRlbnYgKF9fY29uc3Qg
Y2hhciAqX19uYW1lKSA7CgoKCgoKZXh0ZXJuIGludCBwdXRlbnYgKGNoYXIgKl9fc3RyaW5nKSA7
CgoKCgoKZXh0ZXJuIGludCBzZXRlbnYgKF9fY29uc3QgY2hhciAqX19uYW1lLCBfX2NvbnN0IGNo
YXIgKl9fdmFsdWUsIGludCBfX3JlcGxhY2UpCiAgICAgICAgICAgIDsKCgpleHRlcm4gaW50IHVu
c2V0ZW52IChfX2NvbnN0IGNoYXIgKl9fbmFtZSkgOwoKCgoKCgpleHRlcm4gaW50IGNsZWFyZW52
ICh2b2lkKSA7CiMgNjI0ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGNoYXIgKm1r
dGVtcCAoY2hhciAqX190ZW1wbGF0ZSkgOwoKCgoKCgoKZXh0ZXJuIGludCBta3N0ZW1wIChjaGFy
ICpfX3RlbXBsYXRlKSA7CiMgNjUxICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGNo
YXIgKm1rZHRlbXAgKGNoYXIgKl9fdGVtcGxhdGUpIDsKCgoKCmV4dGVybiBpbnQgc3lzdGVtIChf
X2NvbnN0IGNoYXIgKl9fY29tbWFuZCkgOwojIDY3MyAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAz
CmV4dGVybiBjaGFyICpyZWFscGF0aCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbmFtZSwK
ICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpfX3Jlc3RyaWN0IF9fcmVzb2x2ZWQpIDsKCgoK
CgoKdHlwZWRlZiBpbnQgKCpfX2NvbXBhcl9mbl90KSAoX19jb25zdCB2b2lkICosIF9fY29uc3Qg
dm9pZCAqKTsKIyA2OTAgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gdm9pZCAqYnNl
YXJjaCAoX19jb25zdCB2b2lkICpfX2tleSwgX19jb25zdCB2b2lkICpfX2Jhc2UsCiAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3QgX19ubWVtYiwgc2l6ZV90IF9fc2l6ZSwgX19jb21wYXJfZm5f
dCBfX2NvbXBhcik7CgoKCmV4dGVybiB2b2lkIHFzb3J0ICh2b2lkICpfX2Jhc2UsIHNpemVfdCBf
X25tZW1iLCBzaXplX3QgX19zaXplLAogICAgICAgICAgICAgICAgICAgX19jb21wYXJfZm5fdCBf
X2NvbXBhcik7CgoKCmV4dGVybiBpbnQgYWJzIChpbnQgX194KSBfX2F0dHJpYnV0ZV9fICgoX19j
b25zdF9fKSk7CmV4dGVybiBsb25nIGludCBsYWJzIChsb25nIGludCBfX3gpIF9fYXR0cmlidXRl
X18gKChfX2NvbnN0X18pKTsKIyA3MTEgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4g
ZGl2X3QgZGl2IChpbnQgX19udW1lciwgaW50IF9fZGVub20pCiAgICAgICAgICAgICBfX2F0dHJp
YnV0ZV9fICgoX19jb25zdF9fKSk7CmV4dGVybiBsZGl2X3QgbGRpdiAobG9uZyBpbnQgX19udW1l
ciwgbG9uZyBpbnQgX19kZW5vbSkKICAgICAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0
X18pKTsKIyA3MjkgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gY2hhciAqZWN2dCAo
ZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsCiAg
ICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19zaWduKSA7CgoKCgpleHRlcm4gY2hh
ciAqZmN2dCAoZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgaW50ICpfX3Jlc3RyaWN0IF9f
ZGVjcHQsCiAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19zaWduKSA7CgoKCgpl
eHRlcm4gY2hhciAqZ2N2dCAoZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgY2hhciAqX19i
dWYpIDsKCgoKCmV4dGVybiBjaGFyICpxZWN2dCAobG9uZyBkb3VibGUgX192YWx1ZSwgaW50IF9f
bmRpZ2l0LAogICAgICAgICAgICAgICAgICAgIGludCAqX19yZXN0cmljdCBfX2RlY3B0LCBpbnQg
Kl9fcmVzdHJpY3QgX19zaWduKSA7CmV4dGVybiBjaGFyICpxZmN2dCAobG9uZyBkb3VibGUgX192
YWx1ZSwgaW50IF9fbmRpZ2l0LAogICAgICAgICAgICAgICAgICAgIGludCAqX19yZXN0cmljdCBf
X2RlY3B0LCBpbnQgKl9fcmVzdHJpY3QgX19zaWduKSA7CmV4dGVybiBjaGFyICpxZ2N2dCAobG9u
ZyBkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBjaGFyICpfX2J1ZikgOwoKCgoKZXh0ZXJu
IGludCBlY3Z0X3IgKGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGludCAqX19yZXN0cmlj
dCBfX2RlY3B0LAogICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbiwgY2hh
ciAqX19yZXN0cmljdCBfX2J1ZiwKICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX2xlbikgOwpl
eHRlcm4gaW50IGZjdnRfciAoZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgaW50ICpfX3Jl
c3RyaWN0IF9fZGVjcHQsCiAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19zaWdu
LCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLAogICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbGVu
KSA7CgpleHRlcm4gaW50IHFlY3Z0X3IgKGxvbmcgZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdp
dCwKICAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwgaW50ICpfX3Jl
c3RyaWN0IF9fc2lnbiwKICAgICAgICAgICAgICAgICAgICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVm
LCBzaXplX3QgX19sZW4pIDsKZXh0ZXJuIGludCBxZmN2dF9yIChsb25nIGRvdWJsZSBfX3ZhbHVl
LCBpbnQgX19uZGlnaXQsCiAgICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fZGVj
cHQsIGludCAqX19yZXN0cmljdCBfX3NpZ24sCiAgICAgICAgICAgICAgICAgICAgY2hhciAqX19y
ZXN0cmljdCBfX2J1Ziwgc2l6ZV90IF9fbGVuKSA7CgoKCgoKCmV4dGVybiBpbnQgbWJsZW4gKF9f
Y29uc3QgY2hhciAqX19zLCBzaXplX3QgX19uKSA7CgoKZXh0ZXJuIGludCBtYnRvd2MgKHdjaGFy
X3QgKl9fcmVzdHJpY3QgX19wd2MsCiAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9f
cmVzdHJpY3QgX19zLCBzaXplX3QgX19uKSA7CgoKZXh0ZXJuIGludCB3Y3RvbWIgKGNoYXIgKl9f
cywgd2NoYXJfdCBfX3djaGFyKSA7CgoKCmV4dGVybiBzaXplX3QgbWJzdG93Y3MgKHdjaGFyX3Qg
Kl9fcmVzdHJpY3QgX19wd2NzLAogICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19zLCBzaXplX3QgX19uKSA7CgpleHRlcm4gc2l6ZV90IHdjc3RvbWJzIChj
aGFyICpfX3Jlc3RyaWN0IF9fcywKICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB3Y2hh
cl90ICpfX3Jlc3RyaWN0IF9fcHdjcywgc2l6ZV90IF9fbikKICAgICAgICAgICAgOwoKCgoKCgoK
ZXh0ZXJuIGludCBycG1hdGNoIChfX2NvbnN0IGNoYXIgKl9fcmVzcG9uc2UpIDsKIyA4NTkgIi91
c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gaW50IGdldGxvYWRhdmcgKGRvdWJsZSBfX2xv
YWRhdmdbXSwgaW50IF9fbmVsZW0pIDsKIyA5OSAic3RkZm4uaCIgMgojIDEyNSAic3RkZm4uaCIK
IyAxICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDEgMwojIDI2ICIvdXNyL2luY2x1ZGUvdW5pc3Rk
LmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMjcgIi91c3IvaW5jbHVk
ZS91bmlzdGQuaCIgMiAzCiMgMTc1ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKIyAxICIvdXNy
L2luY2x1ZGUvYml0cy9wb3NpeF9vcHQuaCIgMSAzCiMgMTc2ICIvdXNyL2luY2x1ZGUvdW5pc3Rk
LmgiIDIgMwojIDE5MCAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCiMgMSAiL3Vzci9pbmNsdWRl
L2JpdHMvdHlwZXMuaCIgMSAzCiMgMTkxICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDIgMwojIDE5
OSAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCiMgMSAiL3Vzci9sb2NhbC9nY2MtMy9saWIvZ2Nj
LWxpYi9pNTg2LXBjLWxpbnV4LWdudS8zLjAuMy9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAyMDAg
Ii91c3IvaW5jbHVkZS91bmlzdGQuaCIgMiAzCiMgMjQwICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgi
IDMKdHlwZWRlZiBfX2ludHB0cl90IGludHB0cl90OwoKCgoKCgp0eXBlZGVmIF9fc29ja2xlbl90
IHNvY2tsZW5fdDsKIyAyNjAgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4gaW50IGFj
Y2VzcyAoX19jb25zdCBjaGFyICpfX25hbWUsIGludCBfX3R5cGUpIDsKIyAyOTAgIi91c3IvaW5j
bHVkZS91bmlzdGQuaCIgMwpleHRlcm4gX19vZmZfdCBsc2VlayAoaW50IF9fZmQsIF9fb2ZmX3Qg
X19vZmZzZXQsIGludCBfX3doZW5jZSkgOwojIDMwNiAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAz
CmV4dGVybiBpbnQgY2xvc2UgKGludCBfX2ZkKSA7CgoKCmV4dGVybiBzc2l6ZV90IHJlYWQgKGlu
dCBfX2ZkLCB2b2lkICpfX2J1Ziwgc2l6ZV90IF9fbmJ5dGVzKSA7CgoKZXh0ZXJuIHNzaXplX3Qg
d3JpdGUgKGludCBfX2ZkLCBfX2NvbnN0IHZvaWQgKl9fYnVmLCBzaXplX3QgX19uKSA7CiMgMzUz
ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIGludCBwaXBlIChpbnQgX19waXBlZGVz
WzJdKSA7CiMgMzYyICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIHVuc2lnbmVkIGlu
dCBhbGFybSAodW5zaWduZWQgaW50IF9fc2Vjb25kcykgOwojIDM3MSAiL3Vzci9pbmNsdWRlL3Vu
aXN0ZC5oIiAzCmV4dGVybiB1bnNpZ25lZCBpbnQgc2xlZXAgKHVuc2lnbmVkIGludCBfX3NlY29u
ZHMpIDsKCgoKCgoKZXh0ZXJuIF9fdXNlY29uZHNfdCB1YWxhcm0gKF9fdXNlY29uZHNfdCBfX3Zh
bHVlLCBfX3VzZWNvbmRzX3QgX19pbnRlcnZhbCkKICAgICAgICAgICAgOwoKCgpleHRlcm4gaW50
IHVzbGVlcCAoX191c2Vjb25kc190IF9fdXNlY29uZHMpIDsKCgoKCgpleHRlcm4gaW50IHBhdXNl
ICh2b2lkKSA7CgoKCmV4dGVybiBpbnQgY2hvd24gKF9fY29uc3QgY2hhciAqX19maWxlLCBfX3Vp
ZF90IF9fb3duZXIsIF9fZ2lkX3QgX19ncm91cCkKICAgICAgICAgICAgOwoKCgpleHRlcm4gaW50
IGZjaG93biAoaW50IF9fZmQsIF9fdWlkX3QgX19vd25lciwgX19naWRfdCBfX2dyb3VwKSA7CgoK
CgpleHRlcm4gaW50IGxjaG93biAoX19jb25zdCBjaGFyICpfX2ZpbGUsIF9fdWlkX3QgX19vd25l
ciwgX19naWRfdCBfX2dyb3VwKQogICAgICAgICAgICA7CgoKCgpleHRlcm4gaW50IGNoZGlyIChf
X2NvbnN0IGNoYXIgKl9fcGF0aCkgOwoKCgpleHRlcm4gaW50IGZjaGRpciAoaW50IF9fZmQpIDsK
IyA0MjMgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4gY2hhciAqZ2V0Y3dkIChjaGFy
ICpfX2J1Ziwgc2l6ZV90IF9fc2l6ZSkgOwojIDQzNiAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAz
CmV4dGVybiBjaGFyICpnZXR3ZCAoY2hhciAqX19idWYpIDsKCgoKCmV4dGVybiBpbnQgZHVwIChp
bnQgX19mZCkgOwoKCmV4dGVybiBpbnQgZHVwMiAoaW50IF9fZmQsIGludCBfX2ZkMikgOwoKCmV4
dGVybiBjaGFyICoqX19lbnZpcm9uOwoKCgoKCgoKZXh0ZXJuIGludCBleGVjdmUgKF9fY29uc3Qg
Y2hhciAqX19wYXRoLCBjaGFyICpfX2NvbnN0IF9fYXJndltdLAogICAgICAgICAgICAgICAgICAg
Y2hhciAqX19jb25zdCBfX2VudnBbXSkgOwojIDQ2NyAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAz
CmV4dGVybiBpbnQgZXhlY3YgKF9fY29uc3QgY2hhciAqX19wYXRoLCBjaGFyICpfX2NvbnN0IF9f
YXJndltdKSA7CgoKCmV4dGVybiBpbnQgZXhlY2xlIChfX2NvbnN0IGNoYXIgKl9fcGF0aCwgX19j
b25zdCBjaGFyICpfX2FyZywgLi4uKSA7CgoKCmV4dGVybiBpbnQgZXhlY2wgKF9fY29uc3QgY2hh
ciAqX19wYXRoLCBfX2NvbnN0IGNoYXIgKl9fYXJnLCAuLi4pIDsKCgoKZXh0ZXJuIGludCBleGVj
dnAgKF9fY29uc3QgY2hhciAqX19maWxlLCBjaGFyICpfX2NvbnN0IF9fYXJndltdKSA7CgoKCgpl
eHRlcm4gaW50IGV4ZWNscCAoX19jb25zdCBjaGFyICpfX2ZpbGUsIF9fY29uc3QgY2hhciAqX19h
cmcsIC4uLikgOwoKCgoKZXh0ZXJuIGludCBuaWNlIChpbnQgX19pbmMpIDsKCgoKCmV4dGVybiB2
b2lkIF9leGl0IChpbnQgX19zdGF0dXMpIF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsK
CgoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL2NvbmZuYW1lLmgiIDEgMwojIDI1ICIvdXNyL2lu
Y2x1ZGUvYml0cy9jb25mbmFtZS5oIiAzCmVudW0KICB7CiAgICBfUENfTElOS19NQVgsCgogICAg
X1BDX01BWF9DQU5PTiwKCiAgICBfUENfTUFYX0lOUFVULAoKICAgIF9QQ19OQU1FX01BWCwKCiAg
ICBfUENfUEFUSF9NQVgsCgogICAgX1BDX1BJUEVfQlVGLAoKICAgIF9QQ19DSE9XTl9SRVNUUklD
VEVELAoKICAgIF9QQ19OT19UUlVOQywKCiAgICBfUENfVkRJU0FCTEUsCgogICAgX1BDX1NZTkNf
SU8sCgogICAgX1BDX0FTWU5DX0lPLAoKICAgIF9QQ19QUklPX0lPLAoKICAgIF9QQ19TT0NLX01B
WEJVRiwKCiAgICBfUENfRklMRVNJWkVCSVRTLAoKICAgIF9QQ19SRUNfSU5DUl9YRkVSX1NJWkUs
CgogICAgX1BDX1JFQ19NQVhfWEZFUl9TSVpFLAoKICAgIF9QQ19SRUNfTUlOX1hGRVJfU0laRSwK
CiAgICBfUENfUkVDX1hGRVJfQUxJR04KCiAgfTsKCgplbnVtCiAgewogICAgX1NDX0FSR19NQVgs
CgogICAgX1NDX0NISUxEX01BWCwKCiAgICBfU0NfQ0xLX1RDSywKCiAgICBfU0NfTkdST1VQU19N
QVgsCgogICAgX1NDX09QRU5fTUFYLAoKICAgIF9TQ19TVFJFQU1fTUFYLAoKICAgIF9TQ19UWk5B
TUVfTUFYLAoKICAgIF9TQ19KT0JfQ09OVFJPTCwKCiAgICBfU0NfU0FWRURfSURTLAoKICAgIF9T
Q19SRUFMVElNRV9TSUdOQUxTLAoKICAgIF9TQ19QUklPUklUWV9TQ0hFRFVMSU5HLAoKICAgIF9T
Q19USU1FUlMsCgogICAgX1NDX0FTWU5DSFJPTk9VU19JTywKCiAgICBfU0NfUFJJT1JJVElaRURf
SU8sCgogICAgX1NDX1NZTkNIUk9OSVpFRF9JTywKCiAgICBfU0NfRlNZTkMsCgogICAgX1NDX01B
UFBFRF9GSUxFUywKCiAgICBfU0NfTUVNTE9DSywKCiAgICBfU0NfTUVNTE9DS19SQU5HRSwKCiAg
ICBfU0NfTUVNT1JZX1BST1RFQ1RJT04sCgogICAgX1NDX01FU1NBR0VfUEFTU0lORywKCiAgICBf
U0NfU0VNQVBIT1JFUywKCiAgICBfU0NfU0hBUkVEX01FTU9SWV9PQkpFQ1RTLAoKICAgIF9TQ19B
SU9fTElTVElPX01BWCwKCiAgICBfU0NfQUlPX01BWCwKCiAgICBfU0NfQUlPX1BSSU9fREVMVEFf
TUFYLAoKICAgIF9TQ19ERUxBWVRJTUVSX01BWCwKCiAgICBfU0NfTVFfT1BFTl9NQVgsCgogICAg
X1NDX01RX1BSSU9fTUFYLAoKICAgIF9TQ19WRVJTSU9OLAoKICAgIF9TQ19QQUdFU0laRSwKCgog
ICAgX1NDX1JUU0lHX01BWCwKCiAgICBfU0NfU0VNX05TRU1TX01BWCwKCiAgICBfU0NfU0VNX1ZB
TFVFX01BWCwKCiAgICBfU0NfU0lHUVVFVUVfTUFYLAoKICAgIF9TQ19USU1FUl9NQVgsCgoKCgog
ICAgX1NDX0JDX0JBU0VfTUFYLAoKICAgIF9TQ19CQ19ESU1fTUFYLAoKICAgIF9TQ19CQ19TQ0FM
RV9NQVgsCgogICAgX1NDX0JDX1NUUklOR19NQVgsCgogICAgX1NDX0NPTExfV0VJR0hUU19NQVgs
CgogICAgX1NDX0VRVUlWX0NMQVNTX01BWCwKCiAgICBfU0NfRVhQUl9ORVNUX01BWCwKCiAgICBf
U0NfTElORV9NQVgsCgogICAgX1NDX1JFX0RVUF9NQVgsCgogICAgX1NDX0NIQVJDTEFTU19OQU1F
X01BWCwKCgogICAgX1NDXzJfVkVSU0lPTiwKCiAgICBfU0NfMl9DX0JJTkQsCgogICAgX1NDXzJf
Q19ERVYsCgogICAgX1NDXzJfRk9SVF9ERVYsCgogICAgX1NDXzJfRk9SVF9SVU4sCgogICAgX1ND
XzJfU1dfREVWLAoKICAgIF9TQ18yX0xPQ0FMRURFRiwKCgogICAgX1NDX1BJSSwKCiAgICBfU0Nf
UElJX1hUSSwKCiAgICBfU0NfUElJX1NPQ0tFVCwKCiAgICBfU0NfUElJX0lOVEVSTkVULAoKICAg
IF9TQ19QSUlfT1NJLAoKICAgIF9TQ19QT0xMLAoKICAgIF9TQ19TRUxFQ1QsCgogICAgX1NDX1VJ
T19NQVhJT1YsCgogICAgX1NDX0lPVl9NQVggPSBfU0NfVUlPX01BWElPViwKCiAgICBfU0NfUElJ
X0lOVEVSTkVUX1NUUkVBTSwKCiAgICBfU0NfUElJX0lOVEVSTkVUX0RHUkFNLAoKICAgIF9TQ19Q
SUlfT1NJX0NPVFMsCgogICAgX1NDX1BJSV9PU0lfQ0xUUywKCiAgICBfU0NfUElJX09TSV9NLAoK
ICAgIF9TQ19UX0lPVl9NQVgsCgoKCiAgICBfU0NfVEhSRUFEUywKCiAgICBfU0NfVEhSRUFEX1NB
RkVfRlVOQ1RJT05TLAoKICAgIF9TQ19HRVRHUl9SX1NJWkVfTUFYLAoKICAgIF9TQ19HRVRQV19S
X1NJWkVfTUFYLAoKICAgIF9TQ19MT0dJTl9OQU1FX01BWCwKCiAgICBfU0NfVFRZX05BTUVfTUFY
LAoKICAgIF9TQ19USFJFQURfREVTVFJVQ1RPUl9JVEVSQVRJT05TLAoKICAgIF9TQ19USFJFQURf
S0VZU19NQVgsCgogICAgX1NDX1RIUkVBRF9TVEFDS19NSU4sCgogICAgX1NDX1RIUkVBRF9USFJF
QURTX01BWCwKCiAgICBfU0NfVEhSRUFEX0FUVFJfU1RBQ0tBRERSLAoKICAgIF9TQ19USFJFQURf
QVRUUl9TVEFDS1NJWkUsCgogICAgX1NDX1RIUkVBRF9QUklPUklUWV9TQ0hFRFVMSU5HLAoKICAg
IF9TQ19USFJFQURfUFJJT19JTkhFUklULAoKICAgIF9TQ19USFJFQURfUFJJT19QUk9URUNULAoK
ICAgIF9TQ19USFJFQURfUFJPQ0VTU19TSEFSRUQsCgoKICAgIF9TQ19OUFJPQ0VTU09SU19DT05G
LAoKICAgIF9TQ19OUFJPQ0VTU09SU19PTkxOLAoKICAgIF9TQ19QSFlTX1BBR0VTLAoKICAgIF9T
Q19BVlBIWVNfUEFHRVMsCgogICAgX1NDX0FURVhJVF9NQVgsCgogICAgX1NDX1BBU1NfTUFYLAoK
CiAgICBfU0NfWE9QRU5fVkVSU0lPTiwKCiAgICBfU0NfWE9QRU5fWENVX1ZFUlNJT04sCgogICAg
X1NDX1hPUEVOX1VOSVgsCgogICAgX1NDX1hPUEVOX0NSWVBULAoKICAgIF9TQ19YT1BFTl9FTkhf
STE4TiwKCiAgICBfU0NfWE9QRU5fU0hNLAoKCiAgICBfU0NfMl9DSEFSX1RFUk0sCgogICAgX1ND
XzJfQ19WRVJTSU9OLAoKICAgIF9TQ18yX1VQRSwKCgogICAgX1NDX1hPUEVOX1hQRzIsCgogICAg
X1NDX1hPUEVOX1hQRzMsCgogICAgX1NDX1hPUEVOX1hQRzQsCgoKICAgIF9TQ19DSEFSX0JJVCwK
CiAgICBfU0NfQ0hBUl9NQVgsCgogICAgX1NDX0NIQVJfTUlOLAoKICAgIF9TQ19JTlRfTUFYLAoK
ICAgIF9TQ19JTlRfTUlOLAoKICAgIF9TQ19MT05HX0JJVCwKCiAgICBfU0NfV09SRF9CSVQsCgog
ICAgX1NDX01CX0xFTl9NQVgsCgogICAgX1NDX05aRVJPLAoKICAgIF9TQ19TU0laRV9NQVgsCgog
ICAgX1NDX1NDSEFSX01BWCwKCiAgICBfU0NfU0NIQVJfTUlOLAoKICAgIF9TQ19TSFJUX01BWCwK
CiAgICBfU0NfU0hSVF9NSU4sCgogICAgX1NDX1VDSEFSX01BWCwKCiAgICBfU0NfVUlOVF9NQVgs
CgogICAgX1NDX1VMT05HX01BWCwKCiAgICBfU0NfVVNIUlRfTUFYLAoKCiAgICBfU0NfTkxfQVJH
TUFYLAoKICAgIF9TQ19OTF9MQU5HTUFYLAoKICAgIF9TQ19OTF9NU0dNQVgsCgogICAgX1NDX05M
X05NQVgsCgogICAgX1NDX05MX1NFVE1BWCwKCiAgICBfU0NfTkxfVEVYVE1BWCwKCgogICAgX1ND
X1hCUzVfSUxQMzJfT0ZGMzIsCgogICAgX1NDX1hCUzVfSUxQMzJfT0ZGQklHLAoKICAgIF9TQ19Y
QlM1X0xQNjRfT0ZGNjQsCgogICAgX1NDX1hCUzVfTFBCSUdfT0ZGQklHLAoKCiAgICBfU0NfWE9Q
RU5fTEVHQUNZLAoKICAgIF9TQ19YT1BFTl9SRUFMVElNRSwKCiAgICBfU0NfWE9QRU5fUkVBTFRJ
TUVfVEhSRUFEUywKCgogICAgX1NDX0FEVklTT1JZX0lORk8sCgogICAgX1NDX0JBUlJJRVJTLAoK
ICAgIF9TQ19CQVNFLAoKICAgIF9TQ19DX0xBTkdfU1VQUE9SVCwKCiAgICBfU0NfQ19MQU5HX1NV
UFBPUlRfUiwKCiAgICBfU0NfQ0xPQ0tfU0VMRUNUSU9OLAoKICAgIF9TQ19DUFVUSU1FLAoKICAg
IF9TQ19USFJFQURfQ1BVVElNRSwKCiAgICBfU0NfREVWSUNFX0lPLAoKICAgIF9TQ19ERVZJQ0Vf
U1BFQ0lGSUMsCgogICAgX1NDX0RFVklDRV9TUEVDSUZJQ19SLAoKICAgIF9TQ19GRF9NR01ULAoK
ICAgIF9TQ19GSUZPLAoKICAgIF9TQ19QSVBFLAoKICAgIF9TQ19GSUxFX0FUVFJJQlVURVMsCgog
ICAgX1NDX0ZJTEVfTE9DS0lORywKCiAgICBfU0NfRklMRV9TWVNURU0sCgogICAgX1NDX01PTk9U
T05JQ19DTE9DSywKCiAgICBfU0NfTVVMVElQTEVfUFJPQ0VTUywKCiAgICBfU0NfU0lOR0xFX1BS
T0NFU1MsCgogICAgX1NDX05FVFdPUktJTkcsCgogICAgX1NDX1JFQURFUl9XUklURVJfTE9DS1Ms
CgogICAgX1NDX1NQSU5fTE9DS1MsCgogICAgX1NDX1JFR0VYUCwKCiAgICBfU0NfUkVHRVhfVkVS
U0lPTiwKCiAgICBfU0NfU0hFTEwsCgogICAgX1NDX1NJR05BTFMsCgogICAgX1NDX1NQQVdOLAoK
ICAgIF9TQ19TUE9SQURJQ19TRVJWRVIsCgogICAgX1NDX1RIUkVBRF9TUE9SQURJQ19TRVJWRVIs
CgogICAgX1NDX1NZU1RFTV9EQVRBQkFTRSwKCiAgICBfU0NfU1lTVEVNX0RBVEFCQVNFX1IsCgog
ICAgX1NDX1RJTUVPVVRTLAoKICAgIF9TQ19UWVBFRF9NRU1PUllfT0JKRUNUUywKCiAgICBfU0Nf
VVNFUl9HUk9VUFMsCgogICAgX1NDX1VTRVJfR1JPVVBTX1IsCgogICAgX1NDXzJfUEJTLAoKICAg
IF9TQ18yX1BCU19BQ0NPVU5USU5HLAoKICAgIF9TQ18yX1BCU19MT0NBVEUsCgogICAgX1NDXzJf
UEJTX01FU1NBR0UsCgogICAgX1NDXzJfUEJTX1RSQUNLLAoKICAgIF9TQ19TWU1MT09QLAoKICAg
IF9TQ19TVFJFQU1TLAoKICAgIF9TQ18yX1BCU19DSEVDS1BPSU5UCgogIH07CgoKCgoKZW51bQog
IHsKICAgIF9DU19QQVRICiMgNTA2ICIvdXNyL2luY2x1ZGUvYml0cy9jb25mbmFtZS5oIiAzCiAg
fTsKIyA1MDEgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMiAzCgoKZXh0ZXJuIGxvbmcgaW50IHBh
dGhjb25mIChfX2NvbnN0IGNoYXIgKl9fcGF0aCwgaW50IF9fbmFtZSkgOwoKCmV4dGVybiBsb25n
IGludCBmcGF0aGNvbmYgKGludCBfX2ZkLCBpbnQgX19uYW1lKSA7CgoKZXh0ZXJuIGxvbmcgaW50
IHN5c2NvbmYgKGludCBfX25hbWUpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKZXh0
ZXJuIHNpemVfdCBjb25mc3RyIChpbnQgX19uYW1lLCBjaGFyICpfX2J1Ziwgc2l6ZV90IF9fbGVu
KSA7CgoKCgpleHRlcm4gX19waWRfdCBnZXRwaWQgKHZvaWQpIDsKCgpleHRlcm4gX19waWRfdCBn
ZXRwcGlkICh2b2lkKSA7CgoKCgpleHRlcm4gX19waWRfdCBnZXRwZ3JwICh2b2lkKSA7CiMgNTM2
ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIF9fcGlkX3QgX19nZXRwZ2lkIChfX3Bp
ZF90IF9fcGlkKSA7CiMgNTQ1ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIGludCBz
ZXRwZ2lkIChfX3BpZF90IF9fcGlkLCBfX3BpZF90IF9fcGdpZCkgOwojIDU2MiAiL3Vzci9pbmNs
dWRlL3VuaXN0ZC5oIiAzCmV4dGVybiBpbnQgc2V0cGdycCAodm9pZCkgOwojIDU4MCAiL3Vzci9p
bmNsdWRlL3VuaXN0ZC5oIiAzCmV4dGVybiBfX3BpZF90IHNldHNpZCAodm9pZCkgOwoKCgoKCgoK
ZXh0ZXJuIF9fdWlkX3QgZ2V0dWlkICh2b2lkKSA7CgoKZXh0ZXJuIF9fdWlkX3QgZ2V0ZXVpZCAo
dm9pZCkgOwoKCmV4dGVybiBfX2dpZF90IGdldGdpZCAodm9pZCkgOwoKCmV4dGVybiBfX2dpZF90
IGdldGVnaWQgKHZvaWQpIDsKCgoKCmV4dGVybiBpbnQgZ2V0Z3JvdXBzIChpbnQgX19zaXplLCBf
X2dpZF90IF9fbGlzdFtdKSA7CiMgNjEzICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJu
IGludCBzZXR1aWQgKF9fdWlkX3QgX191aWQpIDsKCgoKCmV4dGVybiBpbnQgc2V0cmV1aWQgKF9f
dWlkX3QgX19ydWlkLCBfX3VpZF90IF9fZXVpZCkgOwoKCgoKZXh0ZXJuIGludCBzZXRldWlkIChf
X3VpZF90IF9fdWlkKSA7CgoKCgoKCmV4dGVybiBpbnQgc2V0Z2lkIChfX2dpZF90IF9fZ2lkKSA7
CgoKCgpleHRlcm4gaW50IHNldHJlZ2lkIChfX2dpZF90IF9fcmdpZCwgX19naWRfdCBfX2VnaWQp
IDsKCgoKCmV4dGVybiBpbnQgc2V0ZWdpZCAoX19naWRfdCBfX2dpZCkgOwoKCgoKCgpleHRlcm4g
X19waWRfdCBmb3JrICh2b2lkKSA7CgoKCgoKCmV4dGVybiBfX3BpZF90IHZmb3JrICh2b2lkKSA7
CgoKCgoKZXh0ZXJuIGNoYXIgKnR0eW5hbWUgKGludCBfX2ZkKSA7CgoKCmV4dGVybiBpbnQgdHR5
bmFtZV9yIChpbnQgX19mZCwgY2hhciAqX19idWYsIHNpemVfdCBfX2J1ZmxlbikgOwoKCgpleHRl
cm4gaW50IGlzYXR0eSAoaW50IF9fZmQpIDsKCgoKCgpleHRlcm4gaW50IHR0eXNsb3QgKHZvaWQp
IDsKCgoKCmV4dGVybiBpbnQgbGluayAoX19jb25zdCBjaGFyICpfX2Zyb20sIF9fY29uc3QgY2hh
ciAqX190bykgOwoKCgpleHRlcm4gaW50IHN5bWxpbmsgKF9fY29uc3QgY2hhciAqX19mcm9tLCBf
X2NvbnN0IGNoYXIgKl9fdG8pIDsKCgoKCmV4dGVybiBpbnQgcmVhZGxpbmsgKF9fY29uc3QgY2hh
ciAqX19yZXN0cmljdCBfX3BhdGgsIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsCiAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBfX2xlbikgOwoKCgpleHRlcm4gaW50IHVubGluayAoX19jb25zdCBj
aGFyICpfX25hbWUpIDsKCgpleHRlcm4gaW50IHJtZGlyIChfX2NvbnN0IGNoYXIgKl9fcGF0aCkg
OwoKCgpleHRlcm4gX19waWRfdCB0Y2dldHBncnAgKGludCBfX2ZkKSA7CgoKZXh0ZXJuIGludCB0
Y3NldHBncnAgKGludCBfX2ZkLCBfX3BpZF90IF9fcGdycF9pZCkgOwoKCgpleHRlcm4gY2hhciAq
Z2V0bG9naW4gKHZvaWQpIDsKIyA3MTcgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4g
aW50IHNldGxvZ2luIChfX2NvbnN0IGNoYXIgKl9fbmFtZSkgOwojIDcyNiAiL3Vzci9pbmNsdWRl
L3VuaXN0ZC5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2dldG9wdC5oIiAxIDMKIyA0NyAiL3Vzci9p
bmNsdWRlL2dldG9wdC5oIiAzCmV4dGVybiBjaGFyICpvcHRhcmc7CiMgNjEgIi91c3IvaW5jbHVk
ZS9nZXRvcHQuaCIgMwpleHRlcm4gaW50IG9wdGluZDsKCgoKCmV4dGVybiBpbnQgb3B0ZXJyOwoK
CgpleHRlcm4gaW50IG9wdG9wdDsKIyAxNDUgIi91c3IvaW5jbHVkZS9nZXRvcHQuaCIgMwpleHRl
cm4gaW50IGdldG9wdCAoaW50IF9fYXJnYywgY2hhciAqY29uc3QgKl9fYXJndiwgY29uc3QgY2hh
ciAqX19zaG9ydG9wdHMpOwojIDcyNyAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAyIDMKIyA3MzUg
Ii91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4gaW50IGdldGhvc3RuYW1lIChjaGFyICpf
X25hbWUsIHNvY2tsZW5fdCBfX2xlbikgOwoKCgpleHRlcm4gaW50IHNldGhvc3RuYW1lIChfX2Nv
bnN0IGNoYXIgKl9fbmFtZSwgc2l6ZV90IF9fbGVuKSA7CgoKCmV4dGVybiBpbnQgc2V0aG9zdGlk
IChsb25nIGludCBfX2lkKSA7CgoKCgoKZXh0ZXJuIGludCBnZXRkb21haW5uYW1lIChjaGFyICpf
X25hbWUsIHNpemVfdCBfX2xlbikgOwpleHRlcm4gaW50IHNldGRvbWFpbm5hbWUgKF9fY29uc3Qg
Y2hhciAqX19uYW1lLCBzaXplX3QgX19sZW4pIDsKCgoKCgpleHRlcm4gaW50IHZoYW5ndXAgKHZv
aWQpIDsKCgpleHRlcm4gaW50IHJldm9rZSAoX19jb25zdCBjaGFyICpfX2ZpbGUpIDsKCgoKCgoK
CmV4dGVybiBpbnQgcHJvZmlsICh1bnNpZ25lZCBzaG9ydCBpbnQgKl9fc2FtcGxlX2J1ZmZlciwg
c2l6ZV90IF9fc2l6ZSwKICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX29mZnNldCwgdW5zaWdu
ZWQgaW50IF9fc2NhbGUpIDsKCgoKCgpleHRlcm4gaW50IGFjY3QgKF9fY29uc3QgY2hhciAqX19u
YW1lKSA7CgoKCmV4dGVybiBjaGFyICpnZXR1c2Vyc2hlbGwgKHZvaWQpIDsKZXh0ZXJuIHZvaWQg
ZW5kdXNlcnNoZWxsICh2b2lkKSA7CmV4dGVybiB2b2lkIHNldHVzZXJzaGVsbCAodm9pZCkgOwoK
CgoKCmV4dGVybiBpbnQgZGFlbW9uIChpbnQgX19ub2NoZGlyLCBpbnQgX19ub2Nsb3NlKSA7CgoK
CgoKCgpleHRlcm4gaW50IGNocm9vdCAoX19jb25zdCBjaGFyICpfX3BhdGgpIDsKCgoKZXh0ZXJu
IGNoYXIgKmdldHBhc3MgKF9fY29uc3QgY2hhciAqX19wcm9tcHQpIDsKCgoKCgpleHRlcm4gaW50
IGZzeW5jIChpbnQgX19mZCkgOwoKCgoKCgpleHRlcm4gbG9uZyBpbnQgZ2V0aG9zdGlkICh2b2lk
KSA7CgoKZXh0ZXJuIHZvaWQgc3luYyAodm9pZCkgOwoKCgoKZXh0ZXJuIGludCBnZXRwYWdlc2l6
ZSAodm9pZCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKZXh0ZXJuIGludCB0cnVu
Y2F0ZSAoX19jb25zdCBjaGFyICpfX2ZpbGUsIF9fb2ZmX3QgX19sZW5ndGgpIDsKIyA4NDAgIi91
c3IvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4gaW50IGZ0cnVuY2F0ZSAoaW50IF9fZmQsIF9f
b2ZmX3QgX19sZW5ndGgpIDsKIyA4NTYgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4g
aW50IGdldGR0YWJsZXNpemUgKHZvaWQpIDsKIyA4NjUgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIg
MwpleHRlcm4gaW50IGJyayAodm9pZCAqX19hZGRyKSA7CgoKCgoKZXh0ZXJuIHZvaWQgKnNicmsg
KGludHB0cl90IF9fZGVsdGEpIDsKIyA4ODYgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRl
cm4gbG9uZyBpbnQgc3lzY2FsbCAobG9uZyBpbnQgX19zeXNubywgLi4uKSA7CiMgOTA2ICIvdXNy
L2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIGludCBsb2NrZiAoaW50IF9fZmQsIGludCBfX2Nt
ZCwgX19vZmZfdCBfX2xlbikgOwojIDkzNyAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4dGVy
biBpbnQgZmRhdGFzeW5jIChpbnQgX19maWxkZXMpIDsKIyA5ODIgIi91c3IvaW5jbHVkZS91bmlz
dGQuaCIgMwpleHRlcm4gaW50IHB0aHJlYWRfYXRmb3JrICh2b2lkICgqX19wcmVwYXJlKSAodm9p
ZCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKCpfX3BhcmVudCkgKHZvaWQpLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICgqX19jaGlsZCkgKHZvaWQpKSA7CiMgMTI2
ICJzdGRmbi5oIiAyCgoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9lcnJuby5oIiAxIDMKIyAyOSAi
L3Vzci9pbmNsdWRlL2Vycm5vLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAz
CiMgMzAgIi91c3IvaW5jbHVkZS9lcnJuby5oIiAyIDMKCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUv
Yml0cy9lcnJuby5oIiAxIDMKIyAyNSAiL3Vzci9pbmNsdWRlL2JpdHMvZXJybm8uaCIgMwojIDEg
Ii91c3IvaW5jbHVkZS9saW51eC9lcnJuby5oIiAxIDMKCgoKIyAxICIvdXNyL2luY2x1ZGUvYXNt
L2Vycm5vLmgiIDEgMwojIDUgIi91c3IvaW5jbHVkZS9saW51eC9lcnJuby5oIiAyIDMKIyAyNiAi
L3Vzci9pbmNsdWRlL2JpdHMvZXJybm8uaCIgMiAzCiMgMzYgIi91c3IvaW5jbHVkZS9iaXRzL2Vy
cm5vLmgiIDMKZXh0ZXJuIGludCBlcnJubzsKCgpleHRlcm4gaW50ICpfX2Vycm5vX2xvY2F0aW9u
ICh2b2lkKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CiMgMzcgIi91c3IvaW5jbHVkZS9l
cnJuby5oIiAyIDMKIyAxMzQgInN0ZGZuLmgiIDIKCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvc3lz
L3R5cGVzLmgiIDEgMwojIDE0MSAic3RkZm4uaCIgMgoKCgojIDEgIi91c3IvaW5jbHVkZS9zeXMv
c3RhdC5oIiAxIDMKIyAyNiAiL3Vzci9pbmNsdWRlL3N5cy9zdGF0LmgiIDMKIyAxICIvdXNyL2lu
Y2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMjcgIi91c3IvaW5jbHVkZS9zeXMvc3RhdC5oIiAyIDMK
CiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMSAzCiMgMjkgIi91c3IvaW5jbHVkZS9z
eXMvc3RhdC5oIiAyIDMKIyA5OCAiL3Vzci9pbmNsdWRlL3N5cy9zdGF0LmgiIDMKIyAxICIvdXNy
L2luY2x1ZGUvYml0cy9zdGF0LmgiIDEgMwojIDM2ICIvdXNyL2luY2x1ZGUvYml0cy9zdGF0Lmgi
IDMKc3RydWN0IHN0YXQKICB7CiAgICBfX2Rldl90IHN0X2RldjsKICAgIHVuc2lnbmVkIHNob3J0
IGludCBfX3BhZDE7CgogICAgX19pbm9fdCBzdF9pbm87CgoKCiAgICBfX21vZGVfdCBzdF9tb2Rl
OwogICAgX19ubGlua190IHN0X25saW5rOwogICAgX191aWRfdCBzdF91aWQ7CiAgICBfX2dpZF90
IHN0X2dpZDsKICAgIF9fZGV2X3Qgc3RfcmRldjsKICAgIHVuc2lnbmVkIHNob3J0IGludCBfX3Bh
ZDI7CgogICAgX19vZmZfdCBzdF9zaXplOwoKCgogICAgX19ibGtzaXplX3Qgc3RfYmxrc2l6ZTsK
CgogICAgX19ibGtjbnRfdCBzdF9ibG9ja3M7CgoKCiAgICBfX3RpbWVfdCBzdF9hdGltZTsKICAg
IHVuc2lnbmVkIGxvbmcgaW50IF9fdW51c2VkMTsKICAgIF9fdGltZV90IHN0X210aW1lOwogICAg
dW5zaWduZWQgbG9uZyBpbnQgX191bnVzZWQyOwogICAgX190aW1lX3Qgc3RfY3RpbWU7CiAgICB1
bnNpZ25lZCBsb25nIGludCBfX3VudXNlZDM7CgogICAgdW5zaWduZWQgbG9uZyBpbnQgX191bnVz
ZWQ0OwogICAgdW5zaWduZWQgbG9uZyBpbnQgX191bnVzZWQ1OwoKCgogIH07CiMgOTkgIi91c3Iv
aW5jbHVkZS9zeXMvc3RhdC5oIiAyIDMKIyAyMDAgIi91c3IvaW5jbHVkZS9zeXMvc3RhdC5oIiAz
CmV4dGVybiBpbnQgc3RhdCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZmlsZSwKICAgICAg
ICAgICAgICAgICBzdHJ1Y3Qgc3RhdCAqX19yZXN0cmljdCBfX2J1ZikgOwoKCgpleHRlcm4gaW50
IGZzdGF0IChpbnQgX19mZCwgc3RydWN0IHN0YXQgKl9fYnVmKSA7CiMgMjI4ICIvdXNyL2luY2x1
ZGUvc3lzL3N0YXQuaCIgMwpleHRlcm4gaW50IGxzdGF0IChfX2NvbnN0IGNoYXIgKl9fcmVzdHJp
Y3QgX19maWxlLAogICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc3RhdCAqX19yZXN0cmljdCBfX2J1
ZikgOwojIDI0OSAiL3Vzci9pbmNsdWRlL3N5cy9zdGF0LmgiIDMKZXh0ZXJuIGludCBjaG1vZCAo
X19jb25zdCBjaGFyICpfX2ZpbGUsIF9fbW9kZV90IF9fbW9kZSkgOwoKCgpleHRlcm4gaW50IGZj
aG1vZCAoaW50IF9fZmQsIF9fbW9kZV90IF9fbW9kZSkgOwoKCgoKCmV4dGVybiBfX21vZGVfdCB1
bWFzayAoX19tb2RlX3QgX19tYXNrKSA7CiMgMjY4ICIvdXNyL2luY2x1ZGUvc3lzL3N0YXQuaCIg
MwpleHRlcm4gaW50IG1rZGlyIChfX2NvbnN0IGNoYXIgKl9fcGF0aCwgX19tb2RlX3QgX19tb2Rl
KSA7CgoKCgoKZXh0ZXJuIGludCBta25vZCAoX19jb25zdCBjaGFyICpfX3BhdGgsIF9fbW9kZV90
IF9fbW9kZSwgX19kZXZfdCBfX2RldikKICAgICAgICAgICAgOwoKCgoKZXh0ZXJuIGludCBta2Zp
Zm8gKF9fY29uc3QgY2hhciAqX19wYXRoLCBfX21vZGVfdCBfX21vZGUpIDsKIyAzMDYgIi91c3Iv
aW5jbHVkZS9zeXMvc3RhdC5oIiAzCmV4dGVybiBpbnQgX19meHN0YXQgKGludCBfX3ZlciwgaW50
IF9fZmlsZGVzLCBzdHJ1Y3Qgc3RhdCAqX19zdGF0X2J1ZikgOwpleHRlcm4gaW50IF9feHN0YXQg
KGludCBfX3ZlciwgX19jb25zdCBjaGFyICpfX2ZpbGVuYW1lLAogICAgICAgICAgICAgICAgICAg
IHN0cnVjdCBzdGF0ICpfX3N0YXRfYnVmKSA7CmV4dGVybiBpbnQgX19seHN0YXQgKGludCBfX3Zl
ciwgX19jb25zdCBjaGFyICpfX2ZpbGVuYW1lLAogICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg
c3RhdCAqX19zdGF0X2J1ZikgOwojIDMzNyAiL3Vzci9pbmNsdWRlL3N5cy9zdGF0LmgiIDMKZXh0
ZXJuIGludCBfX3hta25vZCAoaW50IF9fdmVyLCBfX2NvbnN0IGNoYXIgKl9fcGF0aCwgX19tb2Rl
X3QgX19tb2RlLAogICAgICAgICAgICAgICAgICAgICBfX2Rldl90ICpfX2RldikgOwoKCgoKZXh0
ZXJuIF9faW5saW5lX18gaW50IHN0YXQgKF9fY29uc3QgY2hhciAqX19wYXRoLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3RydWN0IHN0YXQgKl9fc3RhdGJ1ZikKewogIHJldHVybiBfX3hz
dGF0ICgzLCBfX3BhdGgsIF9fc3RhdGJ1Zik7Cn0KCgpleHRlcm4gX19pbmxpbmVfXyBpbnQgbHN0
YXQgKF9fY29uc3QgY2hhciAqX19wYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
cnVjdCBzdGF0ICpfX3N0YXRidWYpCnsKICByZXR1cm4gX19seHN0YXQgKDMsIF9fcGF0aCwgX19z
dGF0YnVmKTsKfQoKCmV4dGVybiBfX2lubGluZV9fIGludCBmc3RhdCAoaW50IF9fZmQsIHN0cnVj
dCBzdGF0ICpfX3N0YXRidWYpCnsKICByZXR1cm4gX19meHN0YXQgKDMsIF9fZmQsIF9fc3RhdGJ1
Zik7Cn0KCgpleHRlcm4gX19pbmxpbmVfXyBpbnQgbWtub2QgKF9fY29uc3QgY2hhciAqX19wYXRo
LCBfX21vZGVfdCBfX21vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19kZXZfdCBf
X2RldikKewogIHJldHVybiBfX3hta25vZCAoMSwgX19wYXRoLCBfX21vZGUsICZfX2Rldik7Cn0K
IyAxNDUgInN0ZGZuLmgiIDIKIyAyMTcgInN0ZGZuLmgiCiMgMSAiL3Vzci9sb2NhbC9nY2MtMy9s
aWIvZ2NjLWxpYi9pNTg2LXBjLWxpbnV4LWdudS8zLjAuMy9pbmNsdWRlL2xpbWl0cy5oIiAxIDMK
IyAxMSAiL3Vzci9sb2NhbC9nY2MtMy9saWIvZ2NjLWxpYi9pNTg2LXBjLWxpbnV4LWdudS8zLjAu
My9pbmNsdWRlL2xpbWl0cy5oIiAzCiMgMSAiL3Vzci9sb2NhbC9nY2MtMy9saWIvZ2NjLWxpYi9p
NTg2LXBjLWxpbnV4LWdudS8zLjAuMy9pbmNsdWRlL3N5c2xpbWl0cy5oIiAxIDMKCgoKCgoKIyAx
ICIvdXNyL2xvY2FsL2djYy0zL2xpYi9nY2MtbGliL2k1ODYtcGMtbGludXgtZ251LzMuMC4zL2lu
Y2x1ZGUvbGltaXRzLmgiIDEgMwojIDEyNSAiL3Vzci9sb2NhbC9nY2MtMy9saWIvZ2NjLWxpYi9p
NTg2LXBjLWxpbnV4LWdudS8zLjAuMy9pbmNsdWRlL2xpbWl0cy5oIiAzCiMgMSAiL3Vzci9pbmNs
dWRlL2xpbWl0cy5oIiAxIDMKIyAyNiAiL3Vzci9pbmNsdWRlL2xpbWl0cy5oIiAzCiMgMSAiL3Vz
ci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDEgMwojIDI3ICIvdXNyL2luY2x1ZGUvbGltaXRzLmgiIDIg
MwojIDE0NCAiL3Vzci9pbmNsdWRlL2xpbWl0cy5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMv
cG9zaXgxX2xpbS5oIiAxIDMKIyAxMjYgIi91c3IvaW5jbHVkZS9iaXRzL3Bvc2l4MV9saW0uaCIg
MwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL2xvY2FsX2xpbS5oIiAxIDMKIyAzNiAiL3Vzci9pbmNs
dWRlL2JpdHMvbG9jYWxfbGltLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvbGludXgvbGltaXRzLmgi
IDEgMwojIDM3ICIvdXNyL2luY2x1ZGUvYml0cy9sb2NhbF9saW0uaCIgMiAzCiMgMTI3ICIvdXNy
L2luY2x1ZGUvYml0cy9wb3NpeDFfbGltLmgiIDIgMwojIDE0NSAiL3Vzci9pbmNsdWRlL2xpbWl0
cy5oIiAyIDMKCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9wb3NpeDJfbGltLmgiIDEgMwojIDE0
OSAiL3Vzci9pbmNsdWRlL2xpbWl0cy5oIiAyIDMKIyAxMjYgIi91c3IvbG9jYWwvZ2NjLTMvbGli
L2djYy1saWIvaTU4Ni1wYy1saW51eC1nbnUvMy4wLjMvaW5jbHVkZS9saW1pdHMuaCIgMiAzCiMg
OCAiL3Vzci9sb2NhbC9nY2MtMy9saWIvZ2NjLWxpYi9pNTg2LXBjLWxpbnV4LWdudS8zLjAuMy9p
bmNsdWRlL3N5c2xpbWl0cy5oIiAyIDMKIyAxMiAiL3Vzci9sb2NhbC9nY2MtMy9saWIvZ2NjLWxp
Yi9pNTg2LXBjLWxpbnV4LWdudS8zLjAuMy9pbmNsdWRlL2xpbWl0cy5oIiAyIDMKIyAyMTggInN0
ZGZuLmgiIDIKIyAyMjkgInN0ZGZuLmgiCiMgMSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMSAzCiMg
MjggIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIg
MSAzCiMgMjkgIi91c3IvaW5jbHVkZS90aW1lLmgiIDIgMwojIDM4ICIvdXNyL2luY2x1ZGUvdGlt
ZS5oIiAzCiMgMSAiL3Vzci9sb2NhbC9nY2MtMy9saWIvZ2NjLWxpYi9pNTg2LXBjLWxpbnV4LWdu
dS8zLjAuMy9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAzOSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIg
MiAzCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvdGltZS5oIiAxIDMKIyAzOSAiL3Vzci9pbmNs
dWRlL2JpdHMvdGltZS5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMSAzCiMg
NDAgIi91c3IvaW5jbHVkZS9iaXRzL3RpbWUuaCIgMiAzCmV4dGVybiBsb25nIGludCBfX3N5c2Nv
bmYgKGludCk7CiMgNDMgIi91c3IvaW5jbHVkZS90aW1lLmgiIDIgMwojIDU2ICIvdXNyL2luY2x1
ZGUvdGltZS5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMSAzCiMgNTcgIi91
c3IvaW5jbHVkZS90aW1lLmgiIDIgMwoKCnR5cGVkZWYgX19jbG9ja190IGNsb2NrX3Q7CiMgMTE4
ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCnN0cnVjdCB0bQp7CiAgaW50IHRtX3NlYzsKICBpbnQg
dG1fbWluOwogIGludCB0bV9ob3VyOwogIGludCB0bV9tZGF5OwogIGludCB0bV9tb247CiAgaW50
IHRtX3llYXI7CiAgaW50IHRtX3dkYXk7CiAgaW50IHRtX3lkYXk7CiAgaW50IHRtX2lzZHN0OwoK
CiAgbG9uZyBpbnQgdG1fZ210b2ZmOwogIF9fY29uc3QgY2hhciAqdG1fem9uZTsKCgoKCn07CgoK
CgpzdHJ1Y3QgaXRpbWVyc3BlYwogIHsKICAgIHN0cnVjdCB0aW1lc3BlYyBpdF9pbnRlcnZhbDsK
ICAgIHN0cnVjdCB0aW1lc3BlYyBpdF92YWx1ZTsKICB9OwoKCnN0cnVjdCBzaWdldmVudDsKIyAx
NjMgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKZXh0ZXJuIGNsb2NrX3QgY2xvY2sgKHZvaWQpIDsK
CgpleHRlcm4gdGltZV90IHRpbWUgKHRpbWVfdCAqX190aW1lcikgOwoKCmV4dGVybiBkb3VibGUg
ZGlmZnRpbWUgKHRpbWVfdCBfX3RpbWUxLCB0aW1lX3QgX190aW1lMCkKICAgICAgICAgICAgIF9f
YXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gdGltZV90IG1rdGltZSAoc3RydWN0
IHRtICpfX3RwKSA7CgoKCgoKZXh0ZXJuIHNpemVfdCBzdHJmdGltZSAoY2hhciAqX19yZXN0cmlj
dCBfX3MsIHNpemVfdCBfX21heHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3Qg
Y2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgX19jb25z
dCBzdHJ1Y3QgdG0gKl9fcmVzdHJpY3QgX190cCkgOwojIDE5NCAiL3Vzci9pbmNsdWRlL3RpbWUu
aCIgMwpleHRlcm4gc3RydWN0IHRtICpnbXRpbWUgKF9fY29uc3QgdGltZV90ICpfX3RpbWVyKSA7
CgoKCmV4dGVybiBzdHJ1Y3QgdG0gKmxvY2FsdGltZSAoX19jb25zdCB0aW1lX3QgKl9fdGltZXIp
IDsKCgoKCmV4dGVybiBzdHJ1Y3QgdG0gKmdtdGltZV9yIChfX2NvbnN0IHRpbWVfdCAqX19yZXN0
cmljdCBfX3RpbWVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHRtICpfX3Jl
c3RyaWN0IF9fdHApIDsKCgoKZXh0ZXJuIHN0cnVjdCB0bSAqbG9jYWx0aW1lX3IgKF9fY29uc3Qg
dGltZV90ICpfX3Jlc3RyaWN0IF9fdGltZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdHJ1Y3QgdG0gKl9fcmVzdHJpY3QgX190cCkgOwoKCgoKZXh0ZXJuIGNoYXIgKmFzY3RpbWUg
KF9fY29uc3Qgc3RydWN0IHRtICpfX3RwKSA7CgoKZXh0ZXJuIGNoYXIgKmN0aW1lIChfX2NvbnN0
IHRpbWVfdCAqX190aW1lcikgOwoKCgoKCgpleHRlcm4gY2hhciAqYXNjdGltZV9yIChfX2NvbnN0
IHN0cnVjdCB0bSAqX19yZXN0cmljdCBfX3RwLAogICAgICAgICAgICAgICAgICAgICAgICBjaGFy
ICpfX3Jlc3RyaWN0IF9fYnVmKSA7CgoKZXh0ZXJuIGNoYXIgKmN0aW1lX3IgKF9fY29uc3QgdGlt
ZV90ICpfX3Jlc3RyaWN0IF9fdGltZXIsCiAgICAgICAgICAgICAgICAgICAgICBjaGFyICpfX3Jl
c3RyaWN0IF9fYnVmKSA7CgoKCgpleHRlcm4gY2hhciAqX190em5hbWVbMl07CmV4dGVybiBpbnQg
X19kYXlsaWdodDsKZXh0ZXJuIGxvbmcgaW50IF9fdGltZXpvbmU7CgoKCgpleHRlcm4gY2hhciAq
dHpuYW1lWzJdOwoKCgpleHRlcm4gdm9pZCB0enNldCAodm9pZCkgOwoKCgpleHRlcm4gaW50IGRh
eWxpZ2h0OwpleHRlcm4gbG9uZyBpbnQgdGltZXpvbmU7CgoKCgoKZXh0ZXJuIGludCBzdGltZSAo
X19jb25zdCB0aW1lX3QgKl9fd2hlbikgOwojIDI3MSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwpl
eHRlcm4gdGltZV90IHRpbWVnbSAoc3RydWN0IHRtICpfX3RwKSA7CgoKZXh0ZXJuIHRpbWVfdCB0
aW1lbG9jYWwgKHN0cnVjdCB0bSAqX190cCkgOwoKCmV4dGVybiBpbnQgZHlzaXplIChpbnQgX195
ZWFyKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgoKZXh0ZXJuIGludCBuYW5vc2xl
ZXAgKF9fY29uc3Qgc3RydWN0IHRpbWVzcGVjICpfX3JlcXVlc3RlZF90aW1lLAogICAgICAgICAg
ICAgICAgICAgICAgc3RydWN0IHRpbWVzcGVjICpfX3JlbWFpbmluZykgOwoKCgpleHRlcm4gaW50
IGNsb2NrX2dldHJlcyAoY2xvY2tpZF90IF9fY2xvY2tfaWQsIHN0cnVjdCB0aW1lc3BlYyAqX19y
ZXMpIDsKCgpleHRlcm4gaW50IGNsb2NrX2dldHRpbWUgKGNsb2NraWRfdCBfX2Nsb2NrX2lkLCBz
dHJ1Y3QgdGltZXNwZWMgKl9fdHApIDsKCgpleHRlcm4gaW50IGNsb2NrX3NldHRpbWUgKGNsb2Nr
aWRfdCBfX2Nsb2NrX2lkLCBfX2NvbnN0IHN0cnVjdCB0aW1lc3BlYyAqX190cCkKICAgICAgICAg
ICAgOwojIDMwOSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwpleHRlcm4gaW50IHRpbWVyX2NyZWF0
ZSAoY2xvY2tpZF90IF9fY2xvY2tfaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg
c2lnZXZlbnQgKl9fcmVzdHJpY3QgX19ldnAsCiAgICAgICAgICAgICAgICAgICAgICAgICB0aW1l
cl90ICpfX3Jlc3RyaWN0IF9fdGltZXJpZCkgOwoKCmV4dGVybiBpbnQgdGltZXJfZGVsZXRlICh0
aW1lcl90IF9fdGltZXJpZCkgOwoKCmV4dGVybiBpbnQgdGltZXJfc2V0dGltZSAodGltZXJfdCBf
X3RpbWVyaWQsIGludCBfX2ZsYWdzLAogICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3Qg
c3RydWN0IGl0aW1lcnNwZWMgKl9fcmVzdHJpY3QgX192YWx1ZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdHJ1Y3QgaXRpbWVyc3BlYyAqX19yZXN0cmljdCBfX292YWx1ZSkgOwoKCmV4dGVy
biBpbnQgdGltZXJfZ2V0dGltZSAodGltZXJfdCBfX3RpbWVyaWQsIHN0cnVjdCBpdGltZXJzcGVj
ICpfX3ZhbHVlKQogICAgICAgICAgICA7CgoKZXh0ZXJuIGludCB0aW1lcl9nZXRvdmVycnVuICh0
aW1lcl90IF9fdGltZXJpZCkgOwojIDIzMCAic3RkZm4uaCIgMgojIDIzOCAic3RkZm4uaCIKIyAx
ICIvdXNyL2xvY2FsL2djYy0zL2xpYi9nY2MtbGliL2k1ODYtcGMtbGludXgtZ251LzMuMC4zL2lu
Y2x1ZGUvZmxvYXQuaCIgMSAzCiMgMjM5ICJzdGRmbi5oIiAyCgoKCiMgMSAiL3Vzci9pbmNsdWRl
L2xvY2FsZS5oIiAxIDMKIyAyNiAiL3Vzci9pbmNsdWRlL2xvY2FsZS5oIiAzCiMgMSAiL3Vzci9p
bmNsdWRlL2ZlYXR1cmVzLmgiIDEgMwojIDI3ICIvdXNyL2luY2x1ZGUvbG9jYWxlLmgiIDIgMwoK
CiMgMSAiL3Vzci9sb2NhbC9nY2MtMy9saWIvZ2NjLWxpYi9pNTg2LXBjLWxpbnV4LWdudS8zLjAu
My9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAzMCAiL3Vzci9pbmNsdWRlL2xvY2FsZS5oIiAyIDMK
IyAxICIvdXNyL2luY2x1ZGUvYml0cy9sb2NhbGUuaCIgMSAzCiMgMjcgIi91c3IvaW5jbHVkZS9i
aXRzL2xvY2FsZS5oIiAzCmVudW0KewogIF9fTENfQ1RZUEUgPSAwLAogIF9fTENfTlVNRVJJQyA9
IDEsCiAgX19MQ19USU1FID0gMiwKICBfX0xDX0NPTExBVEUgPSAzLAogIF9fTENfTU9ORVRBUlkg
PSA0LAogIF9fTENfTUVTU0FHRVMgPSA1LAogIF9fTENfQUxMID0gNiwKICBfX0xDX1BBUEVSID0g
NywKICBfX0xDX05BTUUgPSA4LAogIF9fTENfQUREUkVTUyA9IDksCiAgX19MQ19URUxFUEhPTkUg
PSAxMCwKICBfX0xDX01FQVNVUkVNRU5UID0gMTEsCiAgX19MQ19JREVOVElGSUNBVElPTiA9IDEy
Cn07CiMgMzEgIi91c3IvaW5jbHVkZS9sb2NhbGUuaCIgMiAzCiMgNTIgIi91c3IvaW5jbHVkZS9s
b2NhbGUuaCIgMwpzdHJ1Y3QgbGNvbnYKewoKCiAgY2hhciAqZGVjaW1hbF9wb2ludDsKICBjaGFy
ICp0aG91c2FuZHNfc2VwOwoKCgoKCiAgY2hhciAqZ3JvdXBpbmc7CgoKCgoKICBjaGFyICppbnRf
Y3Vycl9zeW1ib2w7CiAgY2hhciAqY3VycmVuY3lfc3ltYm9sOwogIGNoYXIgKm1vbl9kZWNpbWFs
X3BvaW50OwogIGNoYXIgKm1vbl90aG91c2FuZHNfc2VwOwogIGNoYXIgKm1vbl9ncm91cGluZzsK
ICBjaGFyICpwb3NpdGl2ZV9zaWduOwogIGNoYXIgKm5lZ2F0aXZlX3NpZ247CiAgY2hhciBpbnRf
ZnJhY19kaWdpdHM7CiAgY2hhciBmcmFjX2RpZ2l0czsKCiAgY2hhciBwX2NzX3ByZWNlZGVzOwoK
ICBjaGFyIHBfc2VwX2J5X3NwYWNlOwoKICBjaGFyIG5fY3NfcHJlY2VkZXM7CgogIGNoYXIgbl9z
ZXBfYnlfc3BhY2U7CgoKCgoKCiAgY2hhciBwX3NpZ25fcG9zbjsKICBjaGFyIG5fc2lnbl9wb3Nu
OwojIDExMiAiL3Vzci9pbmNsdWRlL2xvY2FsZS5oIiAzCiAgY2hhciBfX2ludF9wX2NzX3ByZWNl
ZGVzOwogIGNoYXIgX19pbnRfcF9zZXBfYnlfc3BhY2U7CiAgY2hhciBfX2ludF9uX2NzX3ByZWNl
ZGVzOwogIGNoYXIgX19pbnRfbl9zZXBfYnlfc3BhY2U7CiAgY2hhciBfX2ludF9wX3NpZ25fcG9z
bjsKICBjaGFyIF9faW50X25fc2lnbl9wb3NuOwoKfTsKCgoKZXh0ZXJuIGNoYXIgKnNldGxvY2Fs
ZSAoaW50IF9fY2F0ZWdvcnksIF9fY29uc3QgY2hhciAqX19sb2NhbGUpIDsKCgpleHRlcm4gc3Ry
dWN0IGxjb252ICpsb2NhbGVjb252ICh2b2lkKSA7CiMgMjQzICJzdGRmbi5oIiAyCgoKCiMgMSAi
L3Vzci9pbmNsdWRlL21hdGguaCIgMSAzCiMgMjcgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDMKIyAx
ICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMjggIi91c3IvaW5jbHVkZS9tYXRoLmgi
IDIgMwoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvaHVnZV92YWwuaCIgMSAzCiMgMjUgIi91
c3IvaW5jbHVkZS9iaXRzL2h1Z2VfdmFsLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMu
aCIgMSAzCiMgMjYgIi91c3IvaW5jbHVkZS9iaXRzL2h1Z2VfdmFsLmgiIDIgMwojIDM0ICIvdXNy
L2luY2x1ZGUvbWF0aC5oIiAyIDMKCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoZGVm
LmgiIDEgMwojIDQxICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAyIDMKIyA2MyAiL3Vzci9pbmNsdWRl
L21hdGguaCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAxIDMKIyA1NCAi
L3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgiIDMKZXh0ZXJuIGRvdWJsZSBhY29zIChkb3Vi
bGUgX194KSA7IGV4dGVybiBkb3VibGUgX19hY29zIChkb3VibGUgX194KSA7CgpleHRlcm4gZG91
YmxlIGFzaW4gKGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGRvdWJsZSBfX2FzaW4gKGRvdWJsZSBfX3gp
IDsKCmV4dGVybiBkb3VibGUgYXRhbiAoZG91YmxlIF9feCkgOyBleHRlcm4gZG91YmxlIF9fYXRh
biAoZG91YmxlIF9feCkgOwoKZXh0ZXJuIGRvdWJsZSBhdGFuMiAoZG91YmxlIF9feSwgZG91Ymxl
IF9feCkgOyBleHRlcm4gZG91YmxlIF9fYXRhbjIgKGRvdWJsZSBfX3ksIGRvdWJsZSBfX3gpIDsK
CgpleHRlcm4gZG91YmxlIGNvcyAoZG91YmxlIF9feCkgOyBleHRlcm4gZG91YmxlIF9fY29zIChk
b3VibGUgX194KSA7CgpleHRlcm4gZG91YmxlIHNpbiAoZG91YmxlIF9feCkgOyBleHRlcm4gZG91
YmxlIF9fc2luIChkb3VibGUgX194KSA7CgpleHRlcm4gZG91YmxlIHRhbiAoZG91YmxlIF9feCkg
OyBleHRlcm4gZG91YmxlIF9fdGFuIChkb3VibGUgX194KSA7CiMgNzggIi91c3IvaW5jbHVkZS9i
aXRzL21hdGhjYWxscy5oIiAzCmV4dGVybiBkb3VibGUgY29zaCAoZG91YmxlIF9feCkgOyBleHRl
cm4gZG91YmxlIF9fY29zaCAoZG91YmxlIF9feCkgOwoKZXh0ZXJuIGRvdWJsZSBzaW5oIChkb3Vi
bGUgX194KSA7IGV4dGVybiBkb3VibGUgX19zaW5oIChkb3VibGUgX194KSA7CgpleHRlcm4gZG91
YmxlIHRhbmggKGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGRvdWJsZSBfX3RhbmggKGRvdWJsZSBfX3gp
IDsKCgoKZXh0ZXJuIGRvdWJsZSBhY29zaCAoZG91YmxlIF9feCkgOyBleHRlcm4gZG91YmxlIF9f
YWNvc2ggKGRvdWJsZSBfX3gpIDsKCmV4dGVybiBkb3VibGUgYXNpbmggKGRvdWJsZSBfX3gpIDsg
ZXh0ZXJuIGRvdWJsZSBfX2FzaW5oIChkb3VibGUgX194KSA7CgpleHRlcm4gZG91YmxlIGF0YW5o
IChkb3VibGUgX194KSA7IGV4dGVybiBkb3VibGUgX19hdGFuaCAoZG91YmxlIF9feCkgOwoKCgoK
CmV4dGVybiBkb3VibGUgZXhwIChkb3VibGUgX194KSA7IGV4dGVybiBkb3VibGUgX19leHAgKGRv
dWJsZSBfX3gpIDsKIyAxMDYgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAzCmV4dGVy
biBkb3VibGUgZnJleHAgKGRvdWJsZSBfX3gsIGludCAqX19leHBvbmVudCkgOyBleHRlcm4gZG91
YmxlIF9fZnJleHAgKGRvdWJsZSBfX3gsIGludCAqX19leHBvbmVudCkgOwoKCmV4dGVybiBkb3Vi
bGUgbGRleHAgKGRvdWJsZSBfX3gsIGludCBfX2V4cG9uZW50KSA7IGV4dGVybiBkb3VibGUgX19s
ZGV4cCAoZG91YmxlIF9feCwgaW50IF9fZXhwb25lbnQpIDsKCgpleHRlcm4gZG91YmxlIGxvZyAo
ZG91YmxlIF9feCkgOyBleHRlcm4gZG91YmxlIF9fbG9nIChkb3VibGUgX194KSA7CgoKZXh0ZXJu
IGRvdWJsZSBsb2cxMCAoZG91YmxlIF9feCkgOyBleHRlcm4gZG91YmxlIF9fbG9nMTAgKGRvdWJs
ZSBfX3gpIDsKCgpleHRlcm4gZG91YmxlIG1vZGYgKGRvdWJsZSBfX3gsIGRvdWJsZSAqX19pcHRy
KSA7IGV4dGVybiBkb3VibGUgX19tb2RmIChkb3VibGUgX194LCBkb3VibGUgKl9faXB0cikgOwoK
CgpleHRlcm4gZG91YmxlIGV4cG0xIChkb3VibGUgX194KSA7IGV4dGVybiBkb3VibGUgX19leHBt
MSAoZG91YmxlIF9feCkgOwoKCmV4dGVybiBkb3VibGUgbG9nMXAgKGRvdWJsZSBfX3gpIDsgZXh0
ZXJuIGRvdWJsZSBfX2xvZzFwIChkb3VibGUgX194KSA7CgoKZXh0ZXJuIGRvdWJsZSBsb2diIChk
b3VibGUgX194KSA7IGV4dGVybiBkb3VibGUgX19sb2diIChkb3VibGUgX194KSA7CiMgMTQzICIv
dXNyL2luY2x1ZGUvYml0cy9tYXRoY2FsbHMuaCIgMwpleHRlcm4gZG91YmxlIHBvdyAoZG91Ymxl
IF9feCwgZG91YmxlIF9feSkgOyBleHRlcm4gZG91YmxlIF9fcG93IChkb3VibGUgX194LCBkb3Vi
bGUgX195KSA7CgoKZXh0ZXJuIGRvdWJsZSBzcXJ0IChkb3VibGUgX194KSA7IGV4dGVybiBkb3Vi
bGUgX19zcXJ0IChkb3VibGUgX194KSA7CgoKCmV4dGVybiBkb3VibGUgaHlwb3QgKGRvdWJsZSBf
X3gsIGRvdWJsZSBfX3kpIDsgZXh0ZXJuIGRvdWJsZSBfX2h5cG90IChkb3VibGUgX194LCBkb3Vi
bGUgX195KSA7CgoKCgpleHRlcm4gZG91YmxlIGNicnQgKGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGRv
dWJsZSBfX2NicnQgKGRvdWJsZSBfX3gpIDsKCgoKCgoKZXh0ZXJuIGRvdWJsZSBjZWlsIChkb3Vi
bGUgX194KSA7IGV4dGVybiBkb3VibGUgX19jZWlsIChkb3VibGUgX194KSA7CgoKZXh0ZXJuIGRv
dWJsZSBmYWJzIChkb3VibGUgX194KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVy
biBkb3VibGUgX19mYWJzIChkb3VibGUgX194KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7
CgoKZXh0ZXJuIGRvdWJsZSBmbG9vciAoZG91YmxlIF9feCkgOyBleHRlcm4gZG91YmxlIF9fZmxv
b3IgKGRvdWJsZSBfX3gpIDsKCgpleHRlcm4gZG91YmxlIGZtb2QgKGRvdWJsZSBfX3gsIGRvdWJs
ZSBfX3kpIDsgZXh0ZXJuIGRvdWJsZSBfX2Ztb2QgKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIDsK
CgoKCmV4dGVybiBpbnQgX19pc2luZiAoZG91YmxlIF9fdmFsdWUpIF9fYXR0cmlidXRlX18gKChf
X2NvbnN0X18pKTsKCgpleHRlcm4gaW50IF9fZmluaXRlIChkb3VibGUgX192YWx1ZSkgX19hdHRy
aWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKZXh0ZXJuIGludCBpc2luZiAoZG91YmxlIF9fdmFs
dWUpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gaW50IGZpbml0ZSAoZG91
YmxlIF9fdmFsdWUpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCgoKCmV4dGVybiBk
b3VibGUgaW5mbmFuIChpbnQgX19lcnJvcikgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBl
eHRlcm4gZG91YmxlIF9faW5mbmFuIChpbnQgX19lcnJvcikgX19hdHRyaWJ1dGVfXyAoKF9fY29u
c3RfXykpOwoKCmV4dGVybiBkb3VibGUgZHJlbSAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgOyBl
eHRlcm4gZG91YmxlIF9fZHJlbSAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgOwoKCgpleHRlcm4g
ZG91YmxlIHNpZ25pZmljYW5kIChkb3VibGUgX194KSA7IGV4dGVybiBkb3VibGUgX19zaWduaWZp
Y2FuZCAoZG91YmxlIF9feCkgOwoKCgoKZXh0ZXJuIGRvdWJsZSBjb3B5c2lnbiAoZG91YmxlIF9f
eCwgZG91YmxlIF9feSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gZG91Ymxl
IF9fY29weXNpZ24gKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIF9fYXR0cmlidXRlX18gKChfX2Nv
bnN0X18pKTsKIyAyMTcgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAzCmV4dGVybiBp
bnQgX19pc25hbiAoZG91YmxlIF9fdmFsdWUpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsK
CgoKZXh0ZXJuIGludCBpc25hbiAoZG91YmxlIF9fdmFsdWUpIF9fYXR0cmlidXRlX18gKChfX2Nv
bnN0X18pKTsKCgpleHRlcm4gZG91YmxlIGowIChkb3VibGUpIDsgZXh0ZXJuIGRvdWJsZSBfX2ow
IChkb3VibGUpIDsKZXh0ZXJuIGRvdWJsZSBqMSAoZG91YmxlKSA7IGV4dGVybiBkb3VibGUgX19q
MSAoZG91YmxlKSA7CmV4dGVybiBkb3VibGUgam4gKGludCwgZG91YmxlKSA7IGV4dGVybiBkb3Vi
bGUgX19qbiAoaW50LCBkb3VibGUpIDsKZXh0ZXJuIGRvdWJsZSB5MCAoZG91YmxlKSA7IGV4dGVy
biBkb3VibGUgX195MCAoZG91YmxlKSA7CmV4dGVybiBkb3VibGUgeTEgKGRvdWJsZSkgOyBleHRl
cm4gZG91YmxlIF9feTEgKGRvdWJsZSkgOwpleHRlcm4gZG91YmxlIHluIChpbnQsIGRvdWJsZSkg
OyBleHRlcm4gZG91YmxlIF9feW4gKGludCwgZG91YmxlKSA7CgoKCgoKZXh0ZXJuIGRvdWJsZSBl
cmYgKGRvdWJsZSkgOyBleHRlcm4gZG91YmxlIF9fZXJmIChkb3VibGUpIDsKZXh0ZXJuIGRvdWJs
ZSBlcmZjIChkb3VibGUpIDsgZXh0ZXJuIGRvdWJsZSBfX2VyZmMgKGRvdWJsZSkgOwpleHRlcm4g
ZG91YmxlIGxnYW1tYSAoZG91YmxlKSA7IGV4dGVybiBkb3VibGUgX19sZ2FtbWEgKGRvdWJsZSkg
OwojIDI0NiAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgiIDMKZXh0ZXJuIGRvdWJsZSBn
YW1tYSAoZG91YmxlKSA7IGV4dGVybiBkb3VibGUgX19nYW1tYSAoZG91YmxlKSA7CgoKCgoKCmV4
dGVybiBkb3VibGUgbGdhbW1hX3IgKGRvdWJsZSwgaW50ICpfX3NpZ25nYW1wKSA7IGV4dGVybiBk
b3VibGUgX19sZ2FtbWFfciAoZG91YmxlLCBpbnQgKl9fc2lnbmdhbXApIDsKCgoKCgoKZXh0ZXJu
IGRvdWJsZSByaW50IChkb3VibGUgX194KSA7IGV4dGVybiBkb3VibGUgX19yaW50IChkb3VibGUg
X194KSA7CgoKZXh0ZXJuIGRvdWJsZSBuZXh0YWZ0ZXIgKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kp
IF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGRvdWJsZSBfX25leHRhZnRlciAo
ZG91YmxlIF9feCwgZG91YmxlIF9feSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoK
CmV4dGVybiBkb3VibGUgcmVtYWluZGVyIChkb3VibGUgX194LCBkb3VibGUgX195KSA7IGV4dGVy
biBkb3VibGUgX19yZW1haW5kZXIgKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIDsKCgoKZXh0ZXJu
IGRvdWJsZSBzY2FsYiAoZG91YmxlIF9feCwgZG91YmxlIF9fbikgOyBleHRlcm4gZG91YmxlIF9f
c2NhbGIgKGRvdWJsZSBfX3gsIGRvdWJsZSBfX24pIDsKCgoKCmV4dGVybiBkb3VibGUgc2NhbGJu
IChkb3VibGUgX194LCBpbnQgX19uKSA7IGV4dGVybiBkb3VibGUgX19zY2FsYm4gKGRvdWJsZSBf
X3gsIGludCBfX24pIDsKCgoKZXh0ZXJuIGludCBpbG9nYiAoZG91YmxlIF9feCkgOyBleHRlcm4g
aW50IF9faWxvZ2IgKGRvdWJsZSBfX3gpIDsKIyA2NCAiL3Vzci9pbmNsdWRlL21hdGguaCIgMiAz
CiMgODIgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9tYXRo
Y2FsbHMuaCIgMSAzCiMgNTQgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAzCmV4dGVy
biBmbG9hdCBhY29zZiAoZmxvYXQgX194KSA7IGV4dGVybiBmbG9hdCBfX2Fjb3NmIChmbG9hdCBf
X3gpIDsKCmV4dGVybiBmbG9hdCBhc2luZiAoZmxvYXQgX194KSA7IGV4dGVybiBmbG9hdCBfX2Fz
aW5mIChmbG9hdCBfX3gpIDsKCmV4dGVybiBmbG9hdCBhdGFuZiAoZmxvYXQgX194KSA7IGV4dGVy
biBmbG9hdCBfX2F0YW5mIChmbG9hdCBfX3gpIDsKCmV4dGVybiBmbG9hdCBhdGFuMmYgKGZsb2F0
IF9feSwgZmxvYXQgX194KSA7IGV4dGVybiBmbG9hdCBfX2F0YW4yZiAoZmxvYXQgX195LCBmbG9h
dCBfX3gpIDsKCgpleHRlcm4gZmxvYXQgY29zZiAoZmxvYXQgX194KSA7IGV4dGVybiBmbG9hdCBf
X2Nvc2YgKGZsb2F0IF9feCkgOwoKZXh0ZXJuIGZsb2F0IHNpbmYgKGZsb2F0IF9feCkgOyBleHRl
cm4gZmxvYXQgX19zaW5mIChmbG9hdCBfX3gpIDsKCmV4dGVybiBmbG9hdCB0YW5mIChmbG9hdCBf
X3gpIDsgZXh0ZXJuIGZsb2F0IF9fdGFuZiAoZmxvYXQgX194KSA7CiMgNzggIi91c3IvaW5jbHVk
ZS9iaXRzL21hdGhjYWxscy5oIiAzCmV4dGVybiBmbG9hdCBjb3NoZiAoZmxvYXQgX194KSA7IGV4
dGVybiBmbG9hdCBfX2Nvc2hmIChmbG9hdCBfX3gpIDsKCmV4dGVybiBmbG9hdCBzaW5oZiAoZmxv
YXQgX194KSA7IGV4dGVybiBmbG9hdCBfX3NpbmhmIChmbG9hdCBfX3gpIDsKCmV4dGVybiBmbG9h
dCB0YW5oZiAoZmxvYXQgX194KSA7IGV4dGVybiBmbG9hdCBfX3RhbmhmIChmbG9hdCBfX3gpIDsK
CgoKZXh0ZXJuIGZsb2F0IGFjb3NoZiAoZmxvYXQgX194KSA7IGV4dGVybiBmbG9hdCBfX2Fjb3No
ZiAoZmxvYXQgX194KSA7CgpleHRlcm4gZmxvYXQgYXNpbmhmIChmbG9hdCBfX3gpIDsgZXh0ZXJu
IGZsb2F0IF9fYXNpbmhmIChmbG9hdCBfX3gpIDsKCmV4dGVybiBmbG9hdCBhdGFuaGYgKGZsb2F0
IF9feCkgOyBleHRlcm4gZmxvYXQgX19hdGFuaGYgKGZsb2F0IF9feCkgOwoKCgoKCmV4dGVybiBm
bG9hdCBleHBmIChmbG9hdCBfX3gpIDsgZXh0ZXJuIGZsb2F0IF9fZXhwZiAoZmxvYXQgX194KSA7
CiMgMTA2ICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoY2FsbHMuaCIgMwpleHRlcm4gZmxvYXQgZnJl
eHBmIChmbG9hdCBfX3gsIGludCAqX19leHBvbmVudCkgOyBleHRlcm4gZmxvYXQgX19mcmV4cGYg
KGZsb2F0IF9feCwgaW50ICpfX2V4cG9uZW50KSA7CgoKZXh0ZXJuIGZsb2F0IGxkZXhwZiAoZmxv
YXQgX194LCBpbnQgX19leHBvbmVudCkgOyBleHRlcm4gZmxvYXQgX19sZGV4cGYgKGZsb2F0IF9f
eCwgaW50IF9fZXhwb25lbnQpIDsKCgpleHRlcm4gZmxvYXQgbG9nZiAoZmxvYXQgX194KSA7IGV4
dGVybiBmbG9hdCBfX2xvZ2YgKGZsb2F0IF9feCkgOwoKCmV4dGVybiBmbG9hdCBsb2cxMGYgKGZs
b2F0IF9feCkgOyBleHRlcm4gZmxvYXQgX19sb2cxMGYgKGZsb2F0IF9feCkgOwoKCmV4dGVybiBm
bG9hdCBtb2RmZiAoZmxvYXQgX194LCBmbG9hdCAqX19pcHRyKSA7IGV4dGVybiBmbG9hdCBfX21v
ZGZmIChmbG9hdCBfX3gsIGZsb2F0ICpfX2lwdHIpIDsKCgoKZXh0ZXJuIGZsb2F0IGV4cG0xZiAo
ZmxvYXQgX194KSA7IGV4dGVybiBmbG9hdCBfX2V4cG0xZiAoZmxvYXQgX194KSA7CgoKZXh0ZXJu
IGZsb2F0IGxvZzFwZiAoZmxvYXQgX194KSA7IGV4dGVybiBmbG9hdCBfX2xvZzFwZiAoZmxvYXQg
X194KSA7CgoKZXh0ZXJuIGZsb2F0IGxvZ2JmIChmbG9hdCBfX3gpIDsgZXh0ZXJuIGZsb2F0IF9f
bG9nYmYgKGZsb2F0IF9feCkgOwojIDE0MyAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgi
IDMKZXh0ZXJuIGZsb2F0IHBvd2YgKGZsb2F0IF9feCwgZmxvYXQgX195KSA7IGV4dGVybiBmbG9h
dCBfX3Bvd2YgKGZsb2F0IF9feCwgZmxvYXQgX195KSA7CgoKZXh0ZXJuIGZsb2F0IHNxcnRmIChm
bG9hdCBfX3gpIDsgZXh0ZXJuIGZsb2F0IF9fc3FydGYgKGZsb2F0IF9feCkgOwoKCgpleHRlcm4g
ZmxvYXQgaHlwb3RmIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgOyBleHRlcm4gZmxvYXQgX19oeXBv
dGYgKGZsb2F0IF9feCwgZmxvYXQgX195KSA7CgoKCgpleHRlcm4gZmxvYXQgY2JydGYgKGZsb2F0
IF9feCkgOyBleHRlcm4gZmxvYXQgX19jYnJ0ZiAoZmxvYXQgX194KSA7CgoKCgoKCmV4dGVybiBm
bG9hdCBjZWlsZiAoZmxvYXQgX194KSA7IGV4dGVybiBmbG9hdCBfX2NlaWxmIChmbG9hdCBfX3gp
IDsKCgpleHRlcm4gZmxvYXQgZmFic2YgKGZsb2F0IF9feCkgX19hdHRyaWJ1dGVfXyAoKF9fY29u
c3RfXykpOyBleHRlcm4gZmxvYXQgX19mYWJzZiAoZmxvYXQgX194KSBfX2F0dHJpYnV0ZV9fICgo
X19jb25zdF9fKSk7CgoKZXh0ZXJuIGZsb2F0IGZsb29yZiAoZmxvYXQgX194KSA7IGV4dGVybiBm
bG9hdCBfX2Zsb29yZiAoZmxvYXQgX194KSA7CgoKZXh0ZXJuIGZsb2F0IGZtb2RmIChmbG9hdCBf
X3gsIGZsb2F0IF9feSkgOyBleHRlcm4gZmxvYXQgX19mbW9kZiAoZmxvYXQgX194LCBmbG9hdCBf
X3kpIDsKCgoKCmV4dGVybiBpbnQgX19pc2luZmYgKGZsb2F0IF9fdmFsdWUpIF9fYXR0cmlidXRl
X18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gaW50IF9fZmluaXRlZiAoZmxvYXQgX192YWx1ZSkg
X19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKZXh0ZXJuIGludCBpc2luZmYgKGZsb2F0
IF9fdmFsdWUpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gaW50IGZpbml0
ZWYgKGZsb2F0IF9fdmFsdWUpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCgoKCmV4
dGVybiBmbG9hdCBpbmZuYW5mIChpbnQgX19lcnJvcikgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3Rf
XykpOyBleHRlcm4gZmxvYXQgX19pbmZuYW5mIChpbnQgX19lcnJvcikgX19hdHRyaWJ1dGVfXyAo
KF9fY29uc3RfXykpOwoKCmV4dGVybiBmbG9hdCBkcmVtZiAoZmxvYXQgX194LCBmbG9hdCBfX3kp
IDsgZXh0ZXJuIGZsb2F0IF9fZHJlbWYgKGZsb2F0IF9feCwgZmxvYXQgX195KSA7CgoKCmV4dGVy
biBmbG9hdCBzaWduaWZpY2FuZGYgKGZsb2F0IF9feCkgOyBleHRlcm4gZmxvYXQgX19zaWduaWZp
Y2FuZGYgKGZsb2F0IF9feCkgOwoKCgoKZXh0ZXJuIGZsb2F0IGNvcHlzaWduZiAoZmxvYXQgX194
LCBmbG9hdCBfX3kpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGZsb2F0IF9f
Y29weXNpZ25mIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3Rf
XykpOwojIDIxNyAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgiIDMKZXh0ZXJuIGludCBf
X2lzbmFuZiAoZmxvYXQgX192YWx1ZSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgpl
eHRlcm4gaW50IGlzbmFuZiAoZmxvYXQgX192YWx1ZSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3Rf
XykpOwoKCmV4dGVybiBmbG9hdCBqMGYgKGZsb2F0KSA7IGV4dGVybiBmbG9hdCBfX2owZiAoZmxv
YXQpIDsKZXh0ZXJuIGZsb2F0IGoxZiAoZmxvYXQpIDsgZXh0ZXJuIGZsb2F0IF9fajFmIChmbG9h
dCkgOwpleHRlcm4gZmxvYXQgam5mIChpbnQsIGZsb2F0KSA7IGV4dGVybiBmbG9hdCBfX2puZiAo
aW50LCBmbG9hdCkgOwpleHRlcm4gZmxvYXQgeTBmIChmbG9hdCkgOyBleHRlcm4gZmxvYXQgX195
MGYgKGZsb2F0KSA7CmV4dGVybiBmbG9hdCB5MWYgKGZsb2F0KSA7IGV4dGVybiBmbG9hdCBfX3kx
ZiAoZmxvYXQpIDsKZXh0ZXJuIGZsb2F0IHluZiAoaW50LCBmbG9hdCkgOyBleHRlcm4gZmxvYXQg
X195bmYgKGludCwgZmxvYXQpIDsKCgoKCgpleHRlcm4gZmxvYXQgZXJmZiAoZmxvYXQpIDsgZXh0
ZXJuIGZsb2F0IF9fZXJmZiAoZmxvYXQpIDsKZXh0ZXJuIGZsb2F0IGVyZmNmIChmbG9hdCkgOyBl
eHRlcm4gZmxvYXQgX19lcmZjZiAoZmxvYXQpIDsKZXh0ZXJuIGZsb2F0IGxnYW1tYWYgKGZsb2F0
KSA7IGV4dGVybiBmbG9hdCBfX2xnYW1tYWYgKGZsb2F0KSA7CiMgMjQ2ICIvdXNyL2luY2x1ZGUv
Yml0cy9tYXRoY2FsbHMuaCIgMwpleHRlcm4gZmxvYXQgZ2FtbWFmIChmbG9hdCkgOyBleHRlcm4g
ZmxvYXQgX19nYW1tYWYgKGZsb2F0KSA7CgoKCgoKCmV4dGVybiBmbG9hdCBsZ2FtbWFmX3IgKGZs
b2F0LCBpbnQgKl9fc2lnbmdhbXApIDsgZXh0ZXJuIGZsb2F0IF9fbGdhbW1hZl9yIChmbG9hdCwg
aW50ICpfX3NpZ25nYW1wKSA7CgoKCgoKCmV4dGVybiBmbG9hdCByaW50ZiAoZmxvYXQgX194KSA7
IGV4dGVybiBmbG9hdCBfX3JpbnRmIChmbG9hdCBfX3gpIDsKCgpleHRlcm4gZmxvYXQgbmV4dGFm
dGVyZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsg
ZXh0ZXJuIGZsb2F0IF9fbmV4dGFmdGVyZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIF9fYXR0cmli
dXRlX18gKChfX2NvbnN0X18pKTsKCgoKCgpleHRlcm4gZmxvYXQgcmVtYWluZGVyZiAoZmxvYXQg
X194LCBmbG9hdCBfX3kpIDsgZXh0ZXJuIGZsb2F0IF9fcmVtYWluZGVyZiAoZmxvYXQgX194LCBm
bG9hdCBfX3kpIDsKCgoKZXh0ZXJuIGZsb2F0IHNjYWxiZiAoZmxvYXQgX194LCBmbG9hdCBfX24p
IDsgZXh0ZXJuIGZsb2F0IF9fc2NhbGJmIChmbG9hdCBfX3gsIGZsb2F0IF9fbikgOwoKCgoKZXh0
ZXJuIGZsb2F0IHNjYWxibmYgKGZsb2F0IF9feCwgaW50IF9fbikgOyBleHRlcm4gZmxvYXQgX19z
Y2FsYm5mIChmbG9hdCBfX3gsIGludCBfX24pIDsKCgoKZXh0ZXJuIGludCBpbG9nYmYgKGZsb2F0
IF9feCkgOyBleHRlcm4gaW50IF9faWxvZ2JmIChmbG9hdCBfX3gpIDsKIyA4MyAiL3Vzci9pbmNs
dWRlL21hdGguaCIgMiAzCiMgOTkgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDMKIyAxICIvdXNyL2lu
Y2x1ZGUvYml0cy9tYXRoY2FsbHMuaCIgMSAzCiMgNTQgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhj
YWxscy5oIiAzCmV4dGVybiBsb25nIGRvdWJsZSBhY29zbCAobG9uZyBkb3VibGUgX194KSA7IGV4
dGVybiBsb25nIGRvdWJsZSBfX2Fjb3NsIChsb25nIGRvdWJsZSBfX3gpIDsKCmV4dGVybiBsb25n
IGRvdWJsZSBhc2lubCAobG9uZyBkb3VibGUgX194KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2Fz
aW5sIChsb25nIGRvdWJsZSBfX3gpIDsKCmV4dGVybiBsb25nIGRvdWJsZSBhdGFubCAobG9uZyBk
b3VibGUgX194KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2F0YW5sIChsb25nIGRvdWJsZSBfX3gp
IDsKCmV4dGVybiBsb25nIGRvdWJsZSBhdGFuMmwgKGxvbmcgZG91YmxlIF9feSwgbG9uZyBkb3Vi
bGUgX194KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2F0YW4ybCAobG9uZyBkb3VibGUgX195LCBs
b25nIGRvdWJsZSBfX3gpIDsKCgpleHRlcm4gbG9uZyBkb3VibGUgY29zbCAobG9uZyBkb3VibGUg
X194KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2Nvc2wgKGxvbmcgZG91YmxlIF9feCkgOwoKZXh0
ZXJuIGxvbmcgZG91YmxlIHNpbmwgKGxvbmcgZG91YmxlIF9feCkgOyBleHRlcm4gbG9uZyBkb3Vi
bGUgX19zaW5sIChsb25nIGRvdWJsZSBfX3gpIDsKCmV4dGVybiBsb25nIGRvdWJsZSB0YW5sIChs
b25nIGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fdGFubCAobG9uZyBkb3VibGUg
X194KSA7CiMgNzggIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAzCmV4dGVybiBsb25n
IGRvdWJsZSBjb3NobCAobG9uZyBkb3VibGUgX194KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2Nv
c2hsIChsb25nIGRvdWJsZSBfX3gpIDsKCmV4dGVybiBsb25nIGRvdWJsZSBzaW5obCAobG9uZyBk
b3VibGUgX194KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX3NpbmhsIChsb25nIGRvdWJsZSBfX3gp
IDsKCmV4dGVybiBsb25nIGRvdWJsZSB0YW5obCAobG9uZyBkb3VibGUgX194KSA7IGV4dGVybiBs
b25nIGRvdWJsZSBfX3RhbmhsIChsb25nIGRvdWJsZSBfX3gpIDsKCgoKZXh0ZXJuIGxvbmcgZG91
YmxlIGFjb3NobCAobG9uZyBkb3VibGUgX194KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2Fjb3No
bCAobG9uZyBkb3VibGUgX194KSA7CgpleHRlcm4gbG9uZyBkb3VibGUgYXNpbmhsIChsb25nIGRv
dWJsZSBfX3gpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fYXNpbmhsIChsb25nIGRvdWJsZSBfX3gp
IDsKCmV4dGVybiBsb25nIGRvdWJsZSBhdGFuaGwgKGxvbmcgZG91YmxlIF9feCkgOyBleHRlcm4g
bG9uZyBkb3VibGUgX19hdGFuaGwgKGxvbmcgZG91YmxlIF9feCkgOwoKCgoKCmV4dGVybiBsb25n
IGRvdWJsZSBleHBsIChsb25nIGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fZXhw
bCAobG9uZyBkb3VibGUgX194KSA7CiMgMTA2ICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoY2FsbHMu
aCIgMwpleHRlcm4gbG9uZyBkb3VibGUgZnJleHBsIChsb25nIGRvdWJsZSBfX3gsIGludCAqX19l
eHBvbmVudCkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19mcmV4cGwgKGxvbmcgZG91YmxlIF9feCwg
aW50ICpfX2V4cG9uZW50KSA7CgoKZXh0ZXJuIGxvbmcgZG91YmxlIGxkZXhwbCAobG9uZyBkb3Vi
bGUgX194LCBpbnQgX19leHBvbmVudCkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19sZGV4cGwgKGxv
bmcgZG91YmxlIF9feCwgaW50IF9fZXhwb25lbnQpIDsKCgpleHRlcm4gbG9uZyBkb3VibGUgbG9n
bCAobG9uZyBkb3VibGUgX194KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2xvZ2wgKGxvbmcgZG91
YmxlIF9feCkgOwoKCmV4dGVybiBsb25nIGRvdWJsZSBsb2cxMGwgKGxvbmcgZG91YmxlIF9feCkg
OyBleHRlcm4gbG9uZyBkb3VibGUgX19sb2cxMGwgKGxvbmcgZG91YmxlIF9feCkgOwoKCmV4dGVy
biBsb25nIGRvdWJsZSBtb2RmbCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSAqX19pcHRy
KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX21vZGZsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91
YmxlICpfX2lwdHIpIDsKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIGV4cG0xbCAobG9uZyBkb3VibGUg
X194KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2V4cG0xbCAobG9uZyBkb3VibGUgX194KSA7CgoK
ZXh0ZXJuIGxvbmcgZG91YmxlIGxvZzFwbCAobG9uZyBkb3VibGUgX194KSA7IGV4dGVybiBsb25n
IGRvdWJsZSBfX2xvZzFwbCAobG9uZyBkb3VibGUgX194KSA7CgoKZXh0ZXJuIGxvbmcgZG91Ymxl
IGxvZ2JsIChsb25nIGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fbG9nYmwgKGxv
bmcgZG91YmxlIF9feCkgOwojIDE0MyAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgiIDMK
ZXh0ZXJuIGxvbmcgZG91YmxlIHBvd2wgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195
KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX3Bvd2wgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3Vi
bGUgX195KSA7CgoKZXh0ZXJuIGxvbmcgZG91YmxlIHNxcnRsIChsb25nIGRvdWJsZSBfX3gpIDsg
ZXh0ZXJuIGxvbmcgZG91YmxlIF9fc3FydGwgKGxvbmcgZG91YmxlIF9feCkgOwoKCgpleHRlcm4g
bG9uZyBkb3VibGUgaHlwb3RsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgOyBl
eHRlcm4gbG9uZyBkb3VibGUgX19oeXBvdGwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUg
X195KSA7CgoKCgpleHRlcm4gbG9uZyBkb3VibGUgY2JydGwgKGxvbmcgZG91YmxlIF9feCkgOyBl
eHRlcm4gbG9uZyBkb3VibGUgX19jYnJ0bCAobG9uZyBkb3VibGUgX194KSA7CgoKCgoKCmV4dGVy
biBsb25nIGRvdWJsZSBjZWlsbCAobG9uZyBkb3VibGUgX194KSA7IGV4dGVybiBsb25nIGRvdWJs
ZSBfX2NlaWxsIChsb25nIGRvdWJsZSBfX3gpIDsKCgpleHRlcm4gbG9uZyBkb3VibGUgZmFic2wg
KGxvbmcgZG91YmxlIF9feCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gbG9u
ZyBkb3VibGUgX19mYWJzbCAobG9uZyBkb3VibGUgX194KSBfX2F0dHJpYnV0ZV9fICgoX19jb25z
dF9fKSk7CgoKZXh0ZXJuIGxvbmcgZG91YmxlIGZsb29ybCAobG9uZyBkb3VibGUgX194KSA7IGV4
dGVybiBsb25nIGRvdWJsZSBfX2Zsb29ybCAobG9uZyBkb3VibGUgX194KSA7CgoKZXh0ZXJuIGxv
bmcgZG91YmxlIGZtb2RsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgOyBleHRl
cm4gbG9uZyBkb3VibGUgX19mbW9kbCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kp
IDsKCgoKCmV4dGVybiBpbnQgX19pc2luZmwgKGxvbmcgZG91YmxlIF9fdmFsdWUpIF9fYXR0cmli
dXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gaW50IF9fZmluaXRlbCAobG9uZyBkb3VibGUg
X192YWx1ZSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKZXh0ZXJuIGludCBpc2lu
ZmwgKGxvbmcgZG91YmxlIF9fdmFsdWUpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpl
eHRlcm4gaW50IGZpbml0ZWwgKGxvbmcgZG91YmxlIF9fdmFsdWUpIF9fYXR0cmlidXRlX18gKChf
X2NvbnN0X18pKTsKCgoKCgoKCmV4dGVybiBsb25nIGRvdWJsZSBpbmZuYW5sIChpbnQgX19lcnJv
cikgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gbG9uZyBkb3VibGUgX19pbmZu
YW5sIChpbnQgX19lcnJvcikgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBs
b25nIGRvdWJsZSBkcmVtbCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIDsgZXh0
ZXJuIGxvbmcgZG91YmxlIF9fZHJlbWwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195
KSA7CgoKCmV4dGVybiBsb25nIGRvdWJsZSBzaWduaWZpY2FuZGwgKGxvbmcgZG91YmxlIF9feCkg
OyBleHRlcm4gbG9uZyBkb3VibGUgX19zaWduaWZpY2FuZGwgKGxvbmcgZG91YmxlIF9feCkgOwoK
CgoKZXh0ZXJuIGxvbmcgZG91YmxlIGNvcHlzaWdubCAobG9uZyBkb3VibGUgX194LCBsb25nIGRv
dWJsZSBfX3kpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGxvbmcgZG91Ymxl
IF9fY29weXNpZ25sIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgX19hdHRyaWJ1
dGVfXyAoKF9fY29uc3RfXykpOwojIDIxNyAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgi
IDMKZXh0ZXJuIGludCBfX2lzbmFubCAobG9uZyBkb3VibGUgX192YWx1ZSkgX19hdHRyaWJ1dGVf
XyAoKF9fY29uc3RfXykpOwoKCgpleHRlcm4gaW50IGlzbmFubCAobG9uZyBkb3VibGUgX192YWx1
ZSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBsb25nIGRvdWJsZSBqMGwg
KGxvbmcgZG91YmxlKSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2owbCAobG9uZyBkb3VibGUpIDsK
ZXh0ZXJuIGxvbmcgZG91YmxlIGoxbCAobG9uZyBkb3VibGUpIDsgZXh0ZXJuIGxvbmcgZG91Ymxl
IF9fajFsIChsb25nIGRvdWJsZSkgOwpleHRlcm4gbG9uZyBkb3VibGUgam5sIChpbnQsIGxvbmcg
ZG91YmxlKSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2pubCAoaW50LCBsb25nIGRvdWJsZSkgOwpl
eHRlcm4gbG9uZyBkb3VibGUgeTBsIChsb25nIGRvdWJsZSkgOyBleHRlcm4gbG9uZyBkb3VibGUg
X195MGwgKGxvbmcgZG91YmxlKSA7CmV4dGVybiBsb25nIGRvdWJsZSB5MWwgKGxvbmcgZG91Ymxl
KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX3kxbCAobG9uZyBkb3VibGUpIDsKZXh0ZXJuIGxvbmcg
ZG91YmxlIHlubCAoaW50LCBsb25nIGRvdWJsZSkgOyBleHRlcm4gbG9uZyBkb3VibGUgX195bmwg
KGludCwgbG9uZyBkb3VibGUpIDsKCgoKCgpleHRlcm4gbG9uZyBkb3VibGUgZXJmbCAobG9uZyBk
b3VibGUpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fZXJmbCAobG9uZyBkb3VibGUpIDsKZXh0ZXJu
IGxvbmcgZG91YmxlIGVyZmNsIChsb25nIGRvdWJsZSkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19l
cmZjbCAobG9uZyBkb3VibGUpIDsKZXh0ZXJuIGxvbmcgZG91YmxlIGxnYW1tYWwgKGxvbmcgZG91
YmxlKSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2xnYW1tYWwgKGxvbmcgZG91YmxlKSA7CiMgMjQ2
ICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoY2FsbHMuaCIgMwpleHRlcm4gbG9uZyBkb3VibGUgZ2Ft
bWFsIChsb25nIGRvdWJsZSkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19nYW1tYWwgKGxvbmcgZG91
YmxlKSA7CgoKCgoKCmV4dGVybiBsb25nIGRvdWJsZSBsZ2FtbWFsX3IgKGxvbmcgZG91YmxlLCBp
bnQgKl9fc2lnbmdhbXApIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fbGdhbW1hbF9yIChsb25nIGRv
dWJsZSwgaW50ICpfX3NpZ25nYW1wKSA7CgoKCgoKCmV4dGVybiBsb25nIGRvdWJsZSByaW50bCAo
bG9uZyBkb3VibGUgX194KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX3JpbnRsIChsb25nIGRvdWJs
ZSBfX3gpIDsKCgpleHRlcm4gbG9uZyBkb3VibGUgbmV4dGFmdGVybCAobG9uZyBkb3VibGUgX194
LCBsb25nIGRvdWJsZSBfX3kpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGxv
bmcgZG91YmxlIF9fbmV4dGFmdGVybCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kp
IF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCgpleHRlcm4gbG9uZyBkb3VibGUgcmVt
YWluZGVybCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIDsgZXh0ZXJuIGxvbmcg
ZG91YmxlIF9fcmVtYWluZGVybCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIDsK
CgoKZXh0ZXJuIGxvbmcgZG91YmxlIHNjYWxibCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJs
ZSBfX24pIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fc2NhbGJsIChsb25nIGRvdWJsZSBfX3gsIGxv
bmcgZG91YmxlIF9fbikgOwoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIHNjYWxibmwgKGxvbmcgZG91
YmxlIF9feCwgaW50IF9fbikgOyBleHRlcm4gbG9uZyBkb3VibGUgX19zY2FsYm5sIChsb25nIGRv
dWJsZSBfX3gsIGludCBfX24pIDsKCgoKZXh0ZXJuIGludCBpbG9nYmwgKGxvbmcgZG91YmxlIF9f
eCkgOyBleHRlcm4gaW50IF9faWxvZ2JsIChsb25nIGRvdWJsZSBfX3gpIDsKIyAxMDAgIi91c3Iv
aW5jbHVkZS9tYXRoLmgiIDIgMwojIDExMyAiL3Vzci9pbmNsdWRlL21hdGguaCIgMwpleHRlcm4g
aW50IHNpZ25nYW07CiMgMjQwICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAzCnR5cGVkZWYgZW51bQp7
CiAgX0lFRUVfID0gLTEsCiAgX1NWSURfLAogIF9YT1BFTl8sCiAgX1BPU0lYXywKICBfSVNPQ18K
fSBfTElCX1ZFUlNJT05fVFlQRTsKCgoKCmV4dGVybiBfTElCX1ZFUlNJT05fVFlQRSBfTElCX1ZF
UlNJT047CiMgMjY1ICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAzCnN0cnVjdCBleGNlcHRpb24KCiAg
ewogICAgaW50IHR5cGU7CiAgICBjaGFyICpuYW1lOwogICAgZG91YmxlIGFyZzE7CiAgICBkb3Vi
bGUgYXJnMjsKICAgIGRvdWJsZSByZXR2YWw7CiAgfTsKCgoKCmV4dGVybiBpbnQgbWF0aGVyciAo
c3RydWN0IGV4Y2VwdGlvbiAqX19leGMpOwojIDM1MCAiL3Vzci9pbmNsdWRlL21hdGguaCIgMwoj
IDEgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUuaCIgMSAzCiMgMjkxICIvdXNyL2luY2x1
ZGUvYml0cy9tYXRoaW5saW5lLmgiIDMKZXh0ZXJuIF9faW5saW5lIGRvdWJsZSBfX3NnbiAoZG91
YmxlKSA7IGV4dGVybiBfX2lubGluZSBkb3VibGUgX19zZ24gKGRvdWJsZSBfX3gpIHsgcmV0dXJu
IF9feCA9PSAwLjAgPyAwLjAgOiAoX194ID4gMC4wID8gMS4wIDogLTEuMCk7IH0gZXh0ZXJuIF9f
aW5saW5lIGZsb2F0IF9fc2duZiAoZmxvYXQpIDsgZXh0ZXJuIF9faW5saW5lIGZsb2F0IF9fc2du
ZiAoZmxvYXQgX194KSB7IHJldHVybiBfX3ggPT0gMC4wID8gMC4wIDogKF9feCA+IDAuMCA/IDEu
MCA6IC0xLjApOyB9IGV4dGVybiBfX2lubGluZSBsb25nIGRvdWJsZSBfX3NnbmwgKGxvbmcgZG91
YmxlKSA7IGV4dGVybiBfX2lubGluZSBsb25nIGRvdWJsZSBfX3NnbmwgKGxvbmcgZG91YmxlIF9f
eCkgeyByZXR1cm4gX194ID09IDAuMCA/IDAuMCA6IChfX3ggPiAwLjAgPyAxLjAgOiAtMS4wKTsg
fQojIDQ3NSAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGlubGluZS5oIiAzCmV4dGVybiBfX2lubGlu
ZSBkb3VibGUgYXRhbjIgKGRvdWJsZSBfX3ksIGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBk
b3VibGUgX192YWx1ZTsgX19hc20gX192b2xhdGlsZV9fICgiZnBhdGFuIiA6ICI9dCIgKF9fdmFs
dWUpIDogIjAiIChfX3gpLCAidSIgKF9feSkgOiAic3QoMSkiKTsgcmV0dXJuIF9fdmFsdWU7IH0g
ZXh0ZXJuIF9faW5saW5lIGZsb2F0IGF0YW4yZiAoZmxvYXQgX195LCBmbG9hdCBfX3gpIHsgcmVn
aXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgX19hc20gX192b2xhdGlsZV9fICgiZnBhdGFuIiA6
ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpLCAidSIgKF9feSkgOiAic3QoMSkiKTsgcmV0dXJu
IF9fdmFsdWU7IH0gZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIGF0YW4ybCAobG9uZyBkb3Vi
bGUgX195LCBsb25nIGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsg
X19hc20gX192b2xhdGlsZV9fICgiZnBhdGFuIiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3gp
LCAidSIgKF9feSkgOiAic3QoMSkiKTsgcmV0dXJuIF9fdmFsdWU7IH0KZXh0ZXJuIF9faW5saW5l
IGxvbmcgZG91YmxlIF9fYXRhbjJsIChsb25nIGRvdWJsZSBfX3ksIGxvbmcgZG91YmxlIF9feCkg
eyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmcGF0
YW4iIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCksICJ1IiAoX195KSA6ICJzdCgxKSIpOyBy
ZXR1cm4gX192YWx1ZTsgfQoKCmV4dGVybiBfX2lubGluZSBkb3VibGUgZm1vZCAoZG91YmxlIF9f
eCwgZG91YmxlIF9feSkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBfX2FzbSBfX3Zv
bGF0aWxlX18gKCIxOglmcHJlbVxuXHQiICJmbnN0c3cJJSVheFxuXHQiICJzYWhmXG5cdCIgImpw
CTFiIiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpLCAidSIgKF9feSkgOiAiYXgiLCAiY2Mi
KTsgcmV0dXJuIF9fdmFsdWU7IH0gZXh0ZXJuIF9faW5saW5lIGZsb2F0IGZtb2RmIChmbG9hdCBf
X3gsIGZsb2F0IF9feSkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBfX2FzbSBfX3Zv
bGF0aWxlX18gKCIxOglmcHJlbVxuXHQiICJmbnN0c3cJJSVheFxuXHQiICJzYWhmXG5cdCIgImpw
CTFiIiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpLCAidSIgKF9feSkgOiAiYXgiLCAiY2Mi
KTsgcmV0dXJuIF9fdmFsdWU7IH0gZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIGZtb2RsIChs
b25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBf
X3ZhbHVlOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCIxOglmcHJlbVxuXHQiICJmbnN0c3cJJSVheFxu
XHQiICJzYWhmXG5cdCIgImpwCTFiIiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpLCAidSIg
KF9feSkgOiAiYXgiLCAiY2MiKTsgcmV0dXJuIF9fdmFsdWU7IH0KIyA0OTAgIi91c3IvaW5jbHVk
ZS9iaXRzL21hdGhpbmxpbmUuaCIgMwpleHRlcm4gX19pbmxpbmUgZG91YmxlIHNxcnQgKGRvdWJs
ZSBfX3gpIHsgcmVnaXN0ZXIgZG91YmxlIF9fcmVzdWx0OyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJm
c3FydCIgOiAiPXQiIChfX3Jlc3VsdCkgOiAiMCIgKF9feCkpOyByZXR1cm4gX19yZXN1bHQ7IH0g
ZXh0ZXJuIF9faW5saW5lIGZsb2F0IHNxcnRmIChmbG9hdCBfX3gpIHsgcmVnaXN0ZXIgZmxvYXQg
X19yZXN1bHQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZzcXJ0IiA6ICI9dCIgKF9fcmVzdWx0KSA6
ICIwIiAoX194KSk7IHJldHVybiBfX3Jlc3VsdDsgfSBleHRlcm4gX19pbmxpbmUgbG9uZyBkb3Vi
bGUgc3FydGwgKGxvbmcgZG91YmxlIF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3Jlc3Vs
dDsgX19hc20gX192b2xhdGlsZV9fICgiZnNxcnQiIDogIj10IiAoX19yZXN1bHQpIDogIjAiIChf
X3gpKTsgcmV0dXJuIF9fcmVzdWx0OyB9CmV4dGVybiBfX2lubGluZSBsb25nIGRvdWJsZSBfX3Nx
cnRsIChsb25nIGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19yZXN1bHQ7IF9f
YXNtIF9fdm9sYXRpbGVfXyAoImZzcXJ0IiA6ICI9dCIgKF9fcmVzdWx0KSA6ICIwIiAoX194KSk7
IHJldHVybiBfX3Jlc3VsdDsgfQoKCmV4dGVybiBfX2lubGluZSBkb3VibGUgZmFicyAoZG91Ymxl
IF9feCkgeyByZXR1cm4gX19idWlsdGluX2ZhYnMgKF9feCk7IH0KZXh0ZXJuIF9faW5saW5lIGZs
b2F0IGZhYnNmIChmbG9hdCBfX3gpIHsgcmV0dXJuIF9fYnVpbHRpbl9mYWJzZiAoX194KTsgfQpl
eHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUgZmFic2wgKGxvbmcgZG91YmxlIF9feCkgeyByZXR1
cm4gX19idWlsdGluX2ZhYnNsIChfX3gpOyB9CmV4dGVybiBfX2lubGluZSBsb25nIGRvdWJsZSBf
X2ZhYnNsIChsb25nIGRvdWJsZSBfX3gpIHsgcmV0dXJuIF9fYnVpbHRpbl9mYWJzbCAoX194KTsg
fQojIDUxNiAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGlubGluZS5oIiAzCmV4dGVybiBfX2lubGlu
ZSBkb3VibGUgYXRhbiAoZG91YmxlIF9feCkgeyByZWdpc3RlciBkb3VibGUgX19yZXN1bHQ7IF9f
YXNtIF9fdm9sYXRpbGVfXyAoImZsZDE7IGZwYXRhbiIgOiAiPXQiIChfX3Jlc3VsdCkgOiAiMCIg
KF9feCkgOiAic3QoMSkiKTsgcmV0dXJuIF9fcmVzdWx0OyB9IGV4dGVybiBfX2lubGluZSBmbG9h
dCBhdGFuZiAoZmxvYXQgX194KSB7IHJlZ2lzdGVyIGZsb2F0IF9fcmVzdWx0OyBfX2FzbSBfX3Zv
bGF0aWxlX18gKCJmbGQxOyBmcGF0YW4iIDogIj10IiAoX19yZXN1bHQpIDogIjAiIChfX3gpIDog
InN0KDEpIik7IHJldHVybiBfX3Jlc3VsdDsgfSBleHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUg
YXRhbmwgKGxvbmcgZG91YmxlIF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3Jlc3VsdDsg
X19hc20gX192b2xhdGlsZV9fICgiZmxkMTsgZnBhdGFuIiA6ICI9dCIgKF9fcmVzdWx0KSA6ICIw
IiAoX194KSA6ICJzdCgxKSIpOyByZXR1cm4gX19yZXN1bHQ7IH0KCmV4dGVybiBfX2lubGluZSBs
b25nIGRvdWJsZSBfX3NnbjFsIChsb25nIGRvdWJsZSkgOyBleHRlcm4gX19pbmxpbmUgbG9uZyBk
b3VibGUgX19zZ24xbCAobG9uZyBkb3VibGUgX194KSB7IF9fZXh0ZW5zaW9uX18gdW5pb24geyBs
b25nIGRvdWJsZSBfX3hsZDsgdW5zaWduZWQgaW50IF9feGlbM107IH0gX19uID0geyBfX3hsZDog
X194IH07IF9fbi5fX3hpWzJdID0gKF9fbi5fX3hpWzJdICYgMHg4MDAwKSB8IDB4M2ZmZjsgX19u
Ll9feGlbMV0gPSAweDgwMDAwMDAwOyBfX24uX194aVswXSA9IDA7IHJldHVybiBfX24uX194bGQ7
IH0KIyA1NDIgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUuaCIgMwpleHRlcm4gX19pbmxp
bmUgZG91YmxlIGZsb29yIChkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFs
dWU7IF9fdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgaW50IF9fY3c7IF9fdm9sYXRpbGUgdW5zaWdu
ZWQgc2hvcnQgaW50IF9fY3d0bXA7IF9fYXNtIF9fdm9sYXRpbGUgKCJmbnN0Y3cgJTAiIDogIj1t
IiAoX19jdykpOyBfX2N3dG1wID0gKF9fY3cgJiAweGYzZmYpIHwgMHgwNDAwOyBfX2FzbSBfX3Zv
bGF0aWxlICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3d0bXApKTsgX19hc20gX192b2xhdGlsZSAo
ImZybmRpbnQiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCkpOyBfX2FzbSBfX3ZvbGF0aWxl
ICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3cpKTsgcmV0dXJuIF9fdmFsdWU7IH0gZXh0ZXJuIF9f
aW5saW5lIGZsb2F0IGZsb29yZiAoZmxvYXQgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9f
dmFsdWU7IF9fdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgaW50IF9fY3c7IF9fdm9sYXRpbGUgdW5z
aWduZWQgc2hvcnQgaW50IF9fY3d0bXA7IF9fYXNtIF9fdm9sYXRpbGUgKCJmbnN0Y3cgJTAiIDog
Ij1tIiAoX19jdykpOyBfX2N3dG1wID0gKF9fY3cgJiAweGYzZmYpIHwgMHgwNDAwOyBfX2FzbSBf
X3ZvbGF0aWxlICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3d0bXApKTsgX19hc20gX192b2xhdGls
ZSAoImZybmRpbnQiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCkpOyBfX2FzbSBfX3ZvbGF0
aWxlICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3cpKTsgcmV0dXJuIF9fdmFsdWU7IH0gZXh0ZXJu
IF9faW5saW5lIGxvbmcgZG91YmxlIGZsb29ybCAobG9uZyBkb3VibGUgX194KSB7IHJlZ2lzdGVy
IGxvbmcgZG91YmxlIF9fdmFsdWU7IF9fdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgaW50IF9fY3c7
IF9fdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgaW50IF9fY3d0bXA7IF9fYXNtIF9fdm9sYXRpbGUg
KCJmbnN0Y3cgJTAiIDogIj1tIiAoX19jdykpOyBfX2N3dG1wID0gKF9fY3cgJiAweGYzZmYpIHwg
MHgwNDAwOyBfX2FzbSBfX3ZvbGF0aWxlICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3d0bXApKTsg
X19hc20gX192b2xhdGlsZSAoImZybmRpbnQiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCkp
OyBfX2FzbSBfX3ZvbGF0aWxlICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3cpKTsgcmV0dXJuIF9f
dmFsdWU7IH0KIyA1NTMgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUuaCIgMwpleHRlcm4g
X19pbmxpbmUgZG91YmxlIGNlaWwgKGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUg
X192YWx1ZTsgX192b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCBpbnQgX19jdzsgX192b2xhdGlsZSB1
bnNpZ25lZCBzaG9ydCBpbnQgX19jd3RtcDsgX19hc20gX192b2xhdGlsZSAoImZuc3RjdyAlMCIg
OiAiPW0iIChfX2N3KSk7IF9fY3d0bXAgPSAoX19jdyAmIDB4ZjNmZikgfCAweDA4MDA7IF9fYXNt
IF9fdm9sYXRpbGUgKCJmbGRjdyAlMCIgOiA6ICJtIiAoX19jd3RtcCkpOyBfX2FzbSBfX3ZvbGF0
aWxlICgiZnJuZGludCIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSk7IF9fYXNtIF9fdm9s
YXRpbGUgKCJmbGRjdyAlMCIgOiA6ICJtIiAoX19jdykpOyByZXR1cm4gX192YWx1ZTsgfSBleHRl
cm4gX19pbmxpbmUgZmxvYXQgY2VpbGYgKGZsb2F0IF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJs
ZSBfX3ZhbHVlOyBfX3ZvbGF0aWxlIHVuc2lnbmVkIHNob3J0IGludCBfX2N3OyBfX3ZvbGF0aWxl
IHVuc2lnbmVkIHNob3J0IGludCBfX2N3dG1wOyBfX2FzbSBfX3ZvbGF0aWxlICgiZm5zdGN3ICUw
IiA6ICI9bSIgKF9fY3cpKTsgX19jd3RtcCA9IChfX2N3ICYgMHhmM2ZmKSB8IDB4MDgwMDsgX19h
c20gX192b2xhdGlsZSAoImZsZGN3ICUwIiA6IDogIm0iIChfX2N3dG1wKSk7IF9fYXNtIF9fdm9s
YXRpbGUgKCJmcm5kaW50IiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpKTsgX19hc20gX192
b2xhdGlsZSAoImZsZGN3ICUwIiA6IDogIm0iIChfX2N3KSk7IHJldHVybiBfX3ZhbHVlOyB9IGV4
dGVybiBfX2lubGluZSBsb25nIGRvdWJsZSBjZWlsbCAobG9uZyBkb3VibGUgX194KSB7IHJlZ2lz
dGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IF9fdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgaW50IF9f
Y3c7IF9fdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgaW50IF9fY3d0bXA7IF9fYXNtIF9fdm9sYXRp
bGUgKCJmbnN0Y3cgJTAiIDogIj1tIiAoX19jdykpOyBfX2N3dG1wID0gKF9fY3cgJiAweGYzZmYp
IHwgMHgwODAwOyBfX2FzbSBfX3ZvbGF0aWxlICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3d0bXAp
KTsgX19hc20gX192b2xhdGlsZSAoImZybmRpbnQiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9f
eCkpOyBfX2FzbSBfX3ZvbGF0aWxlICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3cpKTsgcmV0dXJu
IF9fdmFsdWU7IH0KIyA1NzEgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUuaCIgMwpleHRl
cm4gX19pbmxpbmUgZG91YmxlCmxkZXhwIChkb3VibGUgX194LCBpbnQgX195KQp7CiAgcmVnaXN0
ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgX19hc20gX192b2xhdGlsZV9fICgiZnNjYWxlIiA6ICI9
dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpLCAidSIgKChsb25nIGRvdWJsZSkgX195KSk7IHJldHVy
biBfX3ZhbHVlOwp9CiMgNTg5ICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoaW5saW5lLmgiIDMKZXh0
ZXJuIF9faW5saW5lIGRvdWJsZSBsb2cxcCAoZG91YmxlIF9feCkgeyByZWdpc3RlciBsb25nIGRv
dWJsZSBfX3ZhbHVlOyBpZiAoX19mYWJzbCAoX194KSA+PSAxLjAgLSAwLjUgKiAxLjQxNDIxMzU2
MjM3MzA5NTA0ODgwTCkgX192YWx1ZSA9IGxvZ2wgKDEuMCArIF9feCk7IGVsc2UgX19hc20gX192
b2xhdGlsZV9fICgiZmxkbG4yXG5cdCIgImZ4Y2hcblx0IiAiZnlsMnhwMSIgOiAiPXQiIChfX3Zh
bHVlKSA6ICIwIiAoX194KSA6ICJzdCgxKSIpOyByZXR1cm4gX192YWx1ZTsgfSBleHRlcm4gX19p
bmxpbmUgZmxvYXQgbG9nMXBmIChmbG9hdCBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192
YWx1ZTsgaWYgKF9fZmFic2wgKF9feCkgPj0gMS4wIC0gMC41ICogMS40MTQyMTM1NjIzNzMwOTUw
NDg4MEwpIF9fdmFsdWUgPSBsb2dsICgxLjAgKyBfX3gpOyBlbHNlIF9fYXNtIF9fdm9sYXRpbGVf
XyAoImZsZGxuMlxuXHQiICJmeGNoXG5cdCIgImZ5bDJ4cDEiIDogIj10IiAoX192YWx1ZSkgOiAi
MCIgKF9feCkgOiAic3QoMSkiKTsgcmV0dXJuIF9fdmFsdWU7IH0gZXh0ZXJuIF9faW5saW5lIGxv
bmcgZG91YmxlIGxvZzFwbCAobG9uZyBkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91Ymxl
IF9fdmFsdWU7IGlmIChfX2ZhYnNsIChfX3gpID49IDEuMCAtIDAuNSAqIDEuNDE0MjEzNTYyMzcz
MDk1MDQ4ODBMKSBfX3ZhbHVlID0gbG9nbCAoMS4wICsgX194KTsgZWxzZSBfX2FzbSBfX3ZvbGF0
aWxlX18gKCJmbGRsbjJcblx0IiAiZnhjaFxuXHQiICJmeWwyeHAxIiA6ICI9dCIgKF9fdmFsdWUp
IDogIjAiIChfX3gpIDogInN0KDEpIik7IHJldHVybiBfX3ZhbHVlOyB9CiMgNjAzICIvdXNyL2lu
Y2x1ZGUvYml0cy9tYXRoaW5saW5lLmgiIDMKZXh0ZXJuIF9faW5saW5lIGRvdWJsZSBhc2luaCAo
ZG91YmxlIF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3kgPSBfX2ZhYnNsIChfX3gpOyBy
ZXR1cm4gKGxvZzFwbCAoX195ICogX195IC8gKF9fc3FydGwgKF9feSAqIF9feSArIDEuMCkgKyAx
LjApICsgX195KSAqIF9fc2duMWwgKF9feCkpOyB9IGV4dGVybiBfX2lubGluZSBmbG9hdCBhc2lu
aGYgKGZsb2F0IF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3kgPSBfX2ZhYnNsIChfX3gp
OyByZXR1cm4gKGxvZzFwbCAoX195ICogX195IC8gKF9fc3FydGwgKF9feSAqIF9feSArIDEuMCkg
KyAxLjApICsgX195KSAqIF9fc2duMWwgKF9feCkpOyB9IGV4dGVybiBfX2lubGluZSBsb25nIGRv
dWJsZSBhc2luaGwgKGxvbmcgZG91YmxlIF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3kg
PSBfX2ZhYnNsIChfX3gpOyByZXR1cm4gKGxvZzFwbCAoX195ICogX195IC8gKF9fc3FydGwgKF9f
eSAqIF9feSArIDEuMCkgKyAxLjApICsgX195KSAqIF9fc2duMWwgKF9feCkpOyB9CgoKCgpleHRl
cm4gX19pbmxpbmUgZG91YmxlIGFjb3NoIChkb3VibGUgX194KSB7IHJldHVybiBsb2dsIChfX3gg
KyBfX3NxcnRsIChfX3ggLSAxLjApICogX19zcXJ0bCAoX194ICsgMS4wKSk7IH0gZXh0ZXJuIF9f
aW5saW5lIGZsb2F0IGFjb3NoZiAoZmxvYXQgX194KSB7IHJldHVybiBsb2dsIChfX3ggKyBfX3Nx
cnRsIChfX3ggLSAxLjApICogX19zcXJ0bCAoX194ICsgMS4wKSk7IH0gZXh0ZXJuIF9faW5saW5l
IGxvbmcgZG91YmxlIGFjb3NobCAobG9uZyBkb3VibGUgX194KSB7IHJldHVybiBsb2dsIChfX3gg
KyBfX3NxcnRsIChfX3ggLSAxLjApICogX19zcXJ0bCAoX194ICsgMS4wKSk7IH0KCgpleHRlcm4g
X19pbmxpbmUgZG91YmxlIGF0YW5oIChkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91Ymxl
IF9feSA9IF9fZmFic2wgKF9feCk7IHJldHVybiAtMC41ICogbG9nMXBsICgtKF9feSArIF9feSkg
LyAoMS4wICsgX195KSkgKiBfX3NnbjFsIChfX3gpOyB9IGV4dGVybiBfX2lubGluZSBmbG9hdCBh
dGFuaGYgKGZsb2F0IF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3kgPSBfX2ZhYnNsIChf
X3gpOyByZXR1cm4gLTAuNSAqIGxvZzFwbCAoLShfX3kgKyBfX3kpIC8gKDEuMCArIF9feSkpICog
X19zZ24xbCAoX194KTsgfSBleHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUgYXRhbmhsIChsb25n
IGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX195ID0gX19mYWJzbCAoX194KTsg
cmV0dXJuIC0wLjUgKiBsb2cxcGwgKC0oX195ICsgX195KSAvICgxLjAgKyBfX3kpKSAqIF9fc2du
MWwgKF9feCk7IH0KCgoKCmV4dGVybiBfX2lubGluZSBkb3VibGUgaHlwb3QgKGRvdWJsZSBfX3gs
IGRvdWJsZSBfX3kpIHsgcmV0dXJuIF9fc3FydGwgKF9feCAqIF9feCArIF9feSAqIF9feSk7IH0g
ZXh0ZXJuIF9faW5saW5lIGZsb2F0IGh5cG90ZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIHsgcmV0
dXJuIF9fc3FydGwgKF9feCAqIF9feCArIF9feSAqIF9feSk7IH0gZXh0ZXJuIF9faW5saW5lIGxv
bmcgZG91YmxlIGh5cG90bCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHsgcmV0
dXJuIF9fc3FydGwgKF9feCAqIF9feCArIF9feSAqIF9feSk7IH0KCmV4dGVybiBfX2lubGluZSBk
b3VibGUgbG9nYiAoZG91YmxlIF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBy
ZWdpc3RlciBsb25nIGRvdWJsZSBfX2p1bms7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZ4dHJhY3Rc
blx0IiA6ICI9dCIgKF9fanVuayksICI9dSIgKF9fdmFsdWUpIDogIjAiIChfX3gpKTsgcmV0dXJu
IF9fdmFsdWU7IH0gZXh0ZXJuIF9faW5saW5lIGZsb2F0IGxvZ2JmIChmbG9hdCBfX3gpIHsgcmVn
aXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19qdW5rOyBf
X2FzbSBfX3ZvbGF0aWxlX18gKCJmeHRyYWN0XG5cdCIgOiAiPXQiIChfX2p1bmspLCAiPXUiIChf
X3ZhbHVlKSA6ICIwIiAoX194KSk7IHJldHVybiBfX3ZhbHVlOyB9IGV4dGVybiBfX2lubGluZSBs
b25nIGRvdWJsZSBsb2dibCAobG9uZyBkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91Ymxl
IF9fdmFsdWU7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fanVuazsgX19hc20gX192b2xhdGlsZV9f
ICgiZnh0cmFjdFxuXHQiIDogIj10IiAoX19qdW5rKSwgIj11IiAoX192YWx1ZSkgOiAiMCIgKF9f
eCkpOyByZXR1cm4gX192YWx1ZTsgfQojIDcwMiAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGlubGlu
ZS5oIiAzCmV4dGVybiBfX2lubGluZSBkb3VibGUgZHJlbSAoZG91YmxlIF9feCwgZG91YmxlIF9f
eSkgeyByZWdpc3RlciBkb3VibGUgX192YWx1ZTsgcmVnaXN0ZXIgaW50IF9fY2xvYmJlcmVkOyBf
X2FzbSBfX3ZvbGF0aWxlX18gKCIxOglmcHJlbTFcblx0IiAiZnN0c3cJJSVheFxuXHQiICJzYWhm
XG5cdCIgImpwCTFiIiA6ICI9dCIgKF9fdmFsdWUpLCAiPSZhIiAoX19jbG9iYmVyZWQpIDogIjAi
IChfX3gpLCAidSIgKF9feSkgOiAiY2MiKTsgcmV0dXJuIF9fdmFsdWU7IH0gZXh0ZXJuIF9faW5s
aW5lIGZsb2F0IGRyZW1mIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgeyByZWdpc3RlciBkb3VibGUg
X192YWx1ZTsgcmVnaXN0ZXIgaW50IF9fY2xvYmJlcmVkOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCIx
OglmcHJlbTFcblx0IiAiZnN0c3cJJSVheFxuXHQiICJzYWhmXG5cdCIgImpwCTFiIiA6ICI9dCIg
KF9fdmFsdWUpLCAiPSZhIiAoX19jbG9iYmVyZWQpIDogIjAiIChfX3gpLCAidSIgKF9feSkgOiAi
Y2MiKTsgcmV0dXJuIF9fdmFsdWU7IH0gZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIGRyZW1s
IChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgeyByZWdpc3RlciBkb3VibGUgX192
YWx1ZTsgcmVnaXN0ZXIgaW50IF9fY2xvYmJlcmVkOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCIxOglm
cHJlbTFcblx0IiAiZnN0c3cJJSVheFxuXHQiICJzYWhmXG5cdCIgImpwCTFiIiA6ICI9dCIgKF9f
dmFsdWUpLCAiPSZhIiAoX19jbG9iYmVyZWQpIDogIjAiIChfX3gpLCAidSIgKF9feSkgOiAiY2Mi
KTsgcmV0dXJuIF9fdmFsdWU7IH0KIyA3MTUgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUu
aCIgMwpleHRlcm4gX19pbmxpbmUgaW50Cl9fZmluaXRlIChkb3VibGUgX194KQp7CiAgcmV0dXJu
IChfX2V4dGVuc2lvbl9fCiAgICAgICAgICAoKCgoKHVuaW9uIHsgZG91YmxlIF9fZDsgaW50IF9f
aVsyXTsgfSkge19fZDogX194fSkuX19pWzFdCiAgICAgICAgICAgICB8IDB4ODAwZmZmZmZ1KSAr
IDEpID4+IDMxKSk7Cn0KIyAzNTEgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDIgMwojIDI0NyAic3Rk
Zm4uaCIgMgojIDI4OSAic3RkZm4uaCIKIyAxICIvdXNyL2luY2x1ZGUvYXNzZXJ0LmgiIDEgMwoj
IDM2ICIvdXNyL2luY2x1ZGUvYXNzZXJ0LmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMu
aCIgMSAzCiMgMzcgIi91c3IvaW5jbHVkZS9hc3NlcnQuaCIgMiAzCiMgNjggIi91c3IvaW5jbHVk
ZS9hc3NlcnQuaCIgMwpleHRlcm4gdm9pZCBfX2Fzc2VydF9mYWlsIChfX2NvbnN0IGNoYXIgKl9f
YXNzZXJ0aW9uLCBfX2NvbnN0IGNoYXIgKl9fZmlsZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgaW50IF9fbGluZSwgX19jb25zdCBjaGFyICpfX2Z1bmN0aW9uKQogICAgICAg
ICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwoKCmV4dGVybiB2b2lkIF9fYXNz
ZXJ0X3BlcnJvcl9mYWlsIChpbnQgX19lcnJudW0sIF9fY29uc3QgY2hhciAqX19maWxlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fbGluZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19mdW5jdGlvbikKICAg
ICAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsKCgoKCmV4dGVybiB2b2lk
IF9fYXNzZXJ0IChjb25zdCBjaGFyICpfX2Fzc2VydGlvbiwgY29uc3QgY2hhciAqX19maWxlLCBp
bnQgX19saW5lKQogICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwoj
IDI5MCAic3RkZm4uaCIgMgojIDQ5ICJwbG90LmgiIDIKIyA4MSAicGxvdC5oIgp0eXBlZGVmIGlu
dCBUQk9PTEVBTjsKIyAyMjIgInBsb3QuaCIKdHlwZWRlZiBkb3VibGUgY29vcmR2YWw7CiMgMzQz
ICJwbG90LmgiCnR5cGVkZWYgdm9pZCAoKnNpZ2Z1bmMpKGludCk7CgoKCgoKdHlwZWRlZiBpbnQg
KCpzb3J0ZnVuYykgKGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqKTsKCgoKCmVudW0gb3BlcmF0
b3JzIHsKCiAgICAgICAgUFVTSCwgUFVTSEMsIFBVU0hEMSwgUFVTSEQyLCBQVVNIRCwgQ0FMTCwg
Q0FMTE4sIExOT1QsIEJOT1QsIFVNSU5VUywKICAgICAgICBMT1IsIExBTkQsIEJPUiwgWE9SLCBC
QU5ELCBFUSwgTkUsIEdULCBMVCwgR0UsIExFLCBQTFVTLCBNSU5VUywgTVVMVCwKICAgICAgICBE
SVYsIE1PRCwgUE9XRVIsIEZBQ1RPUklBTCwgQk9PTEUsCiAgICAgICAgRE9MTEFSUywKCiAgIEpV
TVAsIEpVTVBaLCBKVU1QTlosIEpURVJOLCBTRl9TVEFSVAp9OwoKCgoKCmVudW0gREFUQV9UWVBF
UyB7CiAgICAgICAgSU5UR1IsIENNUExYCn07CgoKCmVudW0gUExPVF9UWVBFIHsKICAgICAgICBG
VU5DLCBEQVRBLCBGVU5DM0QsIERBVEEzRAp9OwoKCgoKCgoKZW51bSBQTE9UX1NUWUxFIHsKICAg
ICAgICBMSU5FUyA9IDAqOCArIDEsCiAgICAgICAgUE9JTlRTVFlMRSA9IDEqOCArIDIsCiAgICAg
ICAgSU1QVUxTRVMgPSAyKjggKyAxLAogICAgICAgIExJTkVTUE9JTlRTPSAzKjggKyAzLAogICAg
ICAgIERPVFMgPSA0KjggKyAwLAogICAgICAgIFhFUlJPUkJBUlMgPSA1KjggKyA2LAogICAgICAg
IFlFUlJPUkJBUlMgPSA2KjggKyA2LAogICAgICAgIFhZRVJST1JCQVJTPSA3KjggKyA2LAogICAg
ICAgIEJPWFhZRVJST1IgPSA4KjggKyAxLAogICAgICAgIEJPWEVTID0gOSo4ICsgMSwKICAgICAg
ICBCT1hFUlJPUiA9MTAqOCArIDEsCiAgICAgICAgU1RFUFMgPTExKjggKyAxLAogICAgICAgIEZT
VEVQUyA9MTIqOCArIDEsCiAgICAgICAgSElTVEVQUyA9MTMqOCArIDEsCiAgICAgICAgVkVDVE9S
ID0xNCo4ICsgMSwKICAgICAgICBDQU5ETEVTVElDS1M9MTUqOCArIDQsCiAgICAgICAgRklOQU5D
RUJBUlM9MTYqOCArIDEKfTsKCmVudW0gUExPVF9TTU9PVEggewogICAgICAgIE5PTkUsIFVOSVFV
RSwgQ1NQTElORVMsIEFDU1BMSU5FUywgQkVaSUVSLCBTQkVaSUVSCgp9OwoKCgoKZW51bSBKVVNU
SUZZIHsKICAgICAgICBMRUZULCBDRU5UUkUsIFJJR0hUCn07CgoKCgoKCgpzdHJ1Y3QgY21wbHgg
ewogICAgICAgIGRvdWJsZSByZWFsLCBpbWFnOwp9OwoKCgpzdHJ1Y3QgdmFsdWUgewogICAgICAg
IGVudW0gREFUQV9UWVBFUyB0eXBlOwogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIGlu
dCBpbnRfdmFsOwogICAgICAgICAgICAgICAgc3RydWN0IGNtcGx4IGNtcGx4X3ZhbDsKICAgICAg
ICB9IHY7Cn07CgoKc3RydWN0IGxleGljYWxfdW5pdCB7CiAgICAgICAgVEJPT0xFQU4gaXNfdG9r
ZW47CiAgICAgICAgc3RydWN0IHZhbHVlIGxfdmFsOwogICAgICAgIGludCBzdGFydF9pbmRleDsK
ICAgICAgICBpbnQgbGVuZ3RoOwp9OwoKCnN0cnVjdCB1ZGZ0X2VudHJ5IHsKICAgICAgICBzdHJ1
Y3QgdWRmdF9lbnRyeSAqbmV4dF91ZGY7CiAgICAgICAgY2hhciB1ZGZfbmFtZVs1MCArMV07CiAg
ICAgICAgc3RydWN0IGF0X3R5cGUgKmF0OwogICAgICAgIGNoYXIgKmRlZmluaXRpb247CiAgICAg
ICAgc3RydWN0IHZhbHVlIGR1bW15X3ZhbHVlc1s1XTsKfTsKCgpzdHJ1Y3QgdWR2dF9lbnRyeSB7
CiAgICAgICAgc3RydWN0IHVkdnRfZW50cnkgKm5leHRfdWR2OwogICAgICAgIGNoYXIgdWR2X25h
bWVbNTAgKzFdOwogICAgICAgIFRCT09MRUFOIHVkdl91bmRlZjsKICAgICAgICBzdHJ1Y3QgdmFs
dWUgdWR2X3ZhbHVlOwp9OwoKCnVuaW9uIGFyZ3VtZW50IHsKICAgICAgICBpbnQgal9hcmc7CiAg
ICAgICAgc3RydWN0IHZhbHVlIHZfYXJnOwogICAgICAgIHN0cnVjdCB1ZHZ0X2VudHJ5ICp1ZHZf
YXJnOwogICAgICAgIHN0cnVjdCB1ZGZ0X2VudHJ5ICp1ZGZfYXJnOwp9OwoKCnN0cnVjdCBhdF9l
bnRyeSB7CiAgICAgICAgZW51bSBvcGVyYXRvcnMgaW5kZXg7CiAgICAgICAgdW5pb24gYXJndW1l
bnQgYXJnOwp9OwoKCnN0cnVjdCBhdF90eXBlIHsKICAgICAgICBpbnQgYV9jb3VudDsKICAgICAg
ICBzdHJ1Y3QgYXRfZW50cnkgYWN0aW9uc1sxNTBdOwoKfTsKCgoKCgoKdHlwZWRlZiBpbnQgKCpG
VU5DX1BUUikgKHVuaW9uIGFyZ3VtZW50ICphcmcpOwoKCnN0cnVjdCBmdF9lbnRyeSB7CiAgICAg
ICAgY2hhciAqZl9uYW1lOwogICAgICAgIEZVTkNfUFRSIGZ1bmM7Cn07CgoKCgplbnVtIGNvb3Jk
X3R5cGUgewogICAgSU5SQU5HRSwKICAgIE9VVFJBTkdFLAogICAgVU5ERUZJTkVECn07CgoKc3Ry
dWN0IGNvb3JkaW5hdGUgewogICAgICAgIGVudW0gY29vcmRfdHlwZSB0eXBlOwogICAgICAgIGNv
b3JkdmFsIHgsIHksIHo7CiAgICAgICAgY29vcmR2YWwgeWxvdywgeWhpZ2g7CiAgICAgICAgY29v
cmR2YWwgeGxvdywgeGhpZ2g7CgoKCn07CgpzdHJ1Y3QgbHBfc3R5bGVfdHlwZSB7CiAgICAgICAg
aW50IHBvaW50ZmxhZzsKICAgICAgICBpbnQgbF90eXBlLAogICAgICAgICAgICAgICAgcF90eXBl
OwogICAgICAgIGRvdWJsZSBsX3dpZHRoLAogICAgICAgICAgICAgICAgcF9zaXplOwoKfTsKCgoK
CgoKc3RydWN0IGN1cnZlX3BvaW50cyB7CiAgICAgICAgc3RydWN0IGN1cnZlX3BvaW50cyAqbmV4
dF9jcDsKICAgICAgICBpbnQgdG9rZW47CiAgICAgICAgZW51bSBQTE9UX1RZUEUgcGxvdF90eXBl
OwogICAgICAgIGVudW0gUExPVF9TVFlMRSBwbG90X3N0eWxlOwogICAgICAgIGVudW0gUExPVF9T
TU9PVEggcGxvdF9zbW9vdGg7CiAgICAgICAgY2hhciAqdGl0bGU7CiAgICAgICAgc3RydWN0IGxw
X3N0eWxlX3R5cGUgbHBfcHJvcGVydGllczsKICAgICAgICBpbnQgcF9tYXg7CiAgICAgICAgaW50
IHBfY291bnQ7CiAgICAgICAgaW50IHhfYXhpczsKICAgICAgICBpbnQgeV9heGlzOwogICAgICAg
IHN0cnVjdCBjb29yZGluYXRlICpwb2ludHM7Cn07CgpzdHJ1Y3QgZ251cGxvdF9jb250b3VycyB7
CiAgICAgICAgc3RydWN0IGdudXBsb3RfY29udG91cnMgKm5leHQ7CiAgICAgICAgc3RydWN0IGNv
b3JkaW5hdGUgKmNvb3JkczsKICAgICAgICBjaGFyIGlzTmV3TGV2ZWw7CiAgICAgICAgY2hhciBs
YWJlbFszMl07CiAgICAgICAgaW50IG51bV9wdHM7Cn07CgpzdHJ1Y3QgaXNvX2N1cnZlIHsKICAg
ICAgICBzdHJ1Y3QgaXNvX2N1cnZlICpuZXh0OwogICAgICAgIGludCBwX21heDsKICAgICAgICBp
bnQgcF9jb3VudDsKICAgICAgICBzdHJ1Y3QgY29vcmRpbmF0ZSAqcG9pbnRzOwp9OwoKc3RydWN0
IHN1cmZhY2VfcG9pbnRzIHsKICAgICAgICBzdHJ1Y3Qgc3VyZmFjZV9wb2ludHMgKm5leHRfc3A7
CiAgICAgICAgaW50IHRva2VuOwogICAgICAgIGVudW0gUExPVF9UWVBFIHBsb3RfdHlwZTsKICAg
ICAgICBlbnVtIFBMT1RfU1RZTEUgcGxvdF9zdHlsZTsKICAgICAgICBjaGFyICp0aXRsZTsKICAg
ICAgICBzdHJ1Y3QgbHBfc3R5bGVfdHlwZSBscF9wcm9wZXJ0aWVzOwogICAgICAgIGludCBoYXNf
Z3JpZF90b3BvbG9neTsKICAgICAgICBpbnQgbnVtX2lzb19yZWFkOwoKICAgICAgICBzdHJ1Y3Qg
Z251cGxvdF9jb250b3VycyAqY29udG91cnM7CiAgICAgICAgc3RydWN0IGlzb19jdXJ2ZSAqaXNv
X2NydnM7Cn07CiMgNTkxICJwbG90LmgiCnN0cnVjdCBURVJNRU5UUlkgewogICAgICAgIGNoYXIg
Km5hbWU7CgoKCiAgICAgICAgY2hhciAqZGVzY3JpcHRpb247CgogICAgICAgIHVuc2lnbmVkIGlu
dCB4bWF4LHltYXgsdl9jaGFyLGhfY2hhcix2X3RpYyxoX3RpYzsKCiAgICAgICAgdm9pZCAoKm9w
dGlvbnMpICh2b2lkKTsKICAgICAgICB2b2lkICgqaW5pdCkgKHZvaWQpOwogICAgICAgIHZvaWQg
KCpyZXNldCkgKHZvaWQpOwogICAgICAgIHZvaWQgKCp0ZXh0KSAodm9pZCk7CiAgICAgICAgaW50
ICgqc2NhbGUpIChkb3VibGUsIGRvdWJsZSk7CiAgICAgICAgdm9pZCAoKmdyYXBoaWNzKSAodm9p
ZCk7CiAgICAgICAgdm9pZCAoKm1vdmUpICh1bnNpZ25lZCBpbnQsIHVuc2lnbmVkIGludCk7CiAg
ICAgICAgdm9pZCAoKnZlY3RvcikgKHVuc2lnbmVkIGludCwgdW5zaWduZWQgaW50KTsKICAgICAg
ICB2b2lkICgqbGluZXR5cGUpIChpbnQpOwogICAgICAgIHZvaWQgKCpwdXRfdGV4dCkgKHVuc2ln
bmVkIGludCwgdW5zaWduZWQgaW50LGNoYXIqKTsKCiAgICAgICAgaW50ICgqdGV4dF9hbmdsZSkg
KGludCk7CiAgICAgICAgaW50ICgqanVzdGlmeV90ZXh0KSAoZW51bSBKVVNUSUZZKTsKICAgICAg
ICB2b2lkICgqcG9pbnQpICh1bnNpZ25lZCBpbnQsIHVuc2lnbmVkIGludCxpbnQpOwogICAgICAg
IHZvaWQgKCphcnJvdykgKHVuc2lnbmVkIGludCwgdW5zaWduZWQgaW50LCB1bnNpZ25lZCBpbnQs
IHVuc2lnbmVkIGludCwgaW50KTsKICAgICAgICBpbnQgKCpzZXRfZm9udCkgKGNoYXIgKmZvbnQp
OwogICAgICAgIHZvaWQgKCpwb2ludHNpemUpIChkb3VibGUpOwogICAgICAgIGludCBmbGFnczsK
ICAgICAgICB2b2lkICgqc3VzcGVuZCkgKHZvaWQpOwogICAgICAgIHZvaWQgKCpyZXN1bWUpICh2
b2lkKTsKICAgICAgICB2b2lkICgqZmlsbGJveCkgKGludCwgdW5zaWduZWQgaW50LCB1bnNpZ25l
ZCBpbnQsIHVuc2lnbmVkIGludCwgdW5zaWduZWQgaW50KTsKICAgdm9pZCAoKmxpbmV3aWR0aCkg
KGRvdWJsZSBsaW5ld2lkdGgpOwp9OwojIDYzMyAicGxvdC5oIgplbnVtIHBvc2l0aW9uX3R5cGUg
eyBmaXJzdF9heGVzLCBzZWNvbmRfYXhlcywgZ3JhcGgsIHNjcmVlbiB9OwoKc3RydWN0IHBvc2l0
aW9uIHsKICAgICAgICBlbnVtIHBvc2l0aW9uX3R5cGUgc2NhbGV4LHNjYWxleSxzY2FsZXo7CiAg
ICAgICAgZG91YmxlIHgseSx6Owp9OwoKc3RydWN0IHRleHRfbGFiZWwgewogICAgICAgIHN0cnVj
dCB0ZXh0X2xhYmVsICpuZXh0OwogICAgICAgIGludCB0YWc7CiAgICAgICAgc3RydWN0IHBvc2l0
aW9uIHBsYWNlOwogICAgICAgIGVudW0gSlVTVElGWSBwb3M7CiAgICAgICAgaW50IHJvdGF0ZTsK
ICAgICAgICBjaGFyIHRleHRbMTAyNCArMV07CiAgICAgICAgY2hhciBmb250WzEwMjQgKzFdOwp9
OwoKc3RydWN0IGFycm93X2RlZiB7CiAgICAgICAgc3RydWN0IGFycm93X2RlZiAqbmV4dDsKICAg
ICAgICBpbnQgdGFnOwogICAgICAgIHN0cnVjdCBwb3NpdGlvbiBzdGFydDsKICAgICAgICBzdHJ1
Y3QgcG9zaXRpb24gZW5kOwogICAgICAgIFRCT09MRUFOIGhlYWQ7CiAgICAgICAgc3RydWN0IGxw
X3N0eWxlX3R5cGUgbHBfcHJvcGVydGllczsKfTsKCnN0cnVjdCBsaW5lc3R5bGVfZGVmIHsKICAg
ICAgICBzdHJ1Y3QgbGluZXN0eWxlX2RlZiAqbmV4dDsKICAgICAgICBpbnQgdGFnOwogICAgICAg
IHN0cnVjdCBscF9zdHlsZV90eXBlIGxwX3Byb3BlcnRpZXM7Cn07CgoKc3RydWN0IHRpY2RlZiB7
CiAgICBpbnQgdHlwZTsKCgoKCgogICAgdW5pb24gewogICAgICAgICAgIHN0cnVjdCB7CiAgICAg
ICAgICAgICAgICAgIGRvdWJsZSBzdGFydCwgaW5jcjsKICAgICAgICAgICAgICAgICAgZG91Ymxl
IGVuZDsKICAgICAgICAgICB9IHNlcmllczsKICAgICAgICAgICBzdHJ1Y3QgdGljbWFyayAqdXNl
cjsKICAgIH0gZGVmOwp9OwoKCgoKCgpzdHJ1Y3QgdGljbWFyayB7CiAgICBkb3VibGUgcG9zaXRp
b247CiAgICBjaGFyICpsYWJlbDsKICAgIHN0cnVjdCB0aWNtYXJrICpuZXh0Owp9OwojIDcxOCAi
cGxvdC5oIgpleHRlcm4gVEJPT0xFQU4gc2NyZWVuX29rOwpleHRlcm4gc3RydWN0IFRFUk1FTlRS
WSAqdGVybTsKZXh0ZXJuIFRCT09MRUFOIHVuZGVmaW5lZDsKZXh0ZXJuIGNoYXIgKmlucHV0X2xp
bmU7CmV4dGVybiBpbnQgaW5wdXRfbGluZV9sZW47CmV4dGVybiBjaGFyICpyZXBsb3RfbGluZTsK
ZXh0ZXJuIHN0cnVjdCBsZXhpY2FsX3VuaXQgKnRva2VuOwpleHRlcm4gaW50IHRva2VuX3RhYmxl
X3NpemU7CmV4dGVybiBpbnQgbnVtX3Rva2VucywgY190b2tlbjsKZXh0ZXJuIGludCBpbmxpbmVf
bnVtOwpleHRlcm4gY2hhciBjX2R1bW15X3Zhcls1XVs1MCArMV07CmV4dGVybiBzdHJ1Y3QgZnRf
ZW50cnkgZnRbXTsKZXh0ZXJuIHN0cnVjdCB1ZGZ0X2VudHJ5ICpmaXJzdF91ZGY7CmV4dGVybiBz
dHJ1Y3QgdWR2dF9lbnRyeSAqZmlyc3RfdWR2OwpleHRlcm4gVEJPT0xFQU4gaW50ZXJhY3RpdmU7
CmV4dGVybiBjaGFyICppbmZpbGVfbmFtZTsKZXh0ZXJuIHN0cnVjdCB1ZGZ0X2VudHJ5ICpkdW1t
eV9mdW5jOwpleHRlcm4gY2hhciBkdW1teV92YXJbNV1bNTAgKzFdOwojIDc4MiAicGxvdC5oIgoj
IDEgInByb3Rvcy5oIiAxCiMgMzggInByb3Rvcy5oIgojIDEgImFuc2ljaGVrLmgiIDEKIyAzOSAi
cHJvdG9zLmgiIDIKCgoKCgoKdm9pZCBleHRlbmRfaW5wdXRfbGluZSAodm9pZCk7CnZvaWQgZXh0
ZW5kX3Rva2VuX3RhYmxlICh2b2lkKTsKdm9pZCBpbml0X21lbW9yeSAodm9pZCk7CmludCBjb21f
bGluZSAodm9pZCk7CmludCBkb19saW5lICh2b2lkKTsKdm9pZCBkb25lIChpbnQgc3RhdHVzKTsK
dm9pZCBkZWZpbmUgKHZvaWQpOwp2b2lkIGJhaWxfdG9fY29tbWFuZF9saW5lICh2b2lkKTsKCgp0
eXBlZGVmIGRvdWJsZSB0cmlfZGlhZ1szXTsKCnN0cnVjdCBnbnVwbG90X2NvbnRvdXJzICpjb250
b3VyIChpbnQgbnVtX2lzb2xpbmVzLCBzdHJ1Y3QgaXNvX2N1cnZlICppc29fbGluZXMsIGludCBa
TGV2ZWxzLCBpbnQgYXBwcm94X3B0cywgaW50IGludF9raW5kLCBpbnQgb3JkZXIxLCBpbnQgbGV2
ZWxzX2tpbmQsIGRvdWJsZSAqbGV2ZWxzX2xpc3QpOwppbnQgc29sdmVfdHJpX2RpYWcgKHRyaV9k
aWFnIG1bXSwgZG91YmxlIHJbXSwgZG91YmxlIHhbXSwgaW50IG4pOwoKCmludCBkZl9vcGVuIChp
bnQgbWF4X3VzaW5nKTsKaW50IGRmX3JlYWRsaW5lIChkb3VibGUgdltdLCBpbnQgbWF4KTsKdm9p
ZCBkZl9jbG9zZSAodm9pZCk7CmludCBkZl8yZGJpbmFyeSAoc3RydWN0IGN1cnZlX3BvaW50cyAq
dGhpc19wbG90KTsKaW50IGRmXzNkbWF0cml4IChzdHJ1Y3Qgc3VyZmFjZV9wb2ludHMgKnRoaXNf
cGxvdCk7CgoKCnN0cnVjdCB1ZHZ0X2VudHJ5ICogYWRkX3VkdiAoaW50IHRfbnVtKTsKc3RydWN0
IHVkZnRfZW50cnkgKiBhZGRfdWRmIChpbnQgdF9udW0pOwppbnQgc3RhbmRhcmQgKGludCB0X251
bSk7CnZvaWQgZXhlY3V0ZV9hdCAoc3RydWN0IGF0X3R5cGUgKmF0X3B0cik7CgoKCgpjaGFyICpn
ZXRfbmV4dF93b3JkIChjaGFyICoqcywgY2hhciAqc3Vic3QpOwp2b2lkIGluaXRfZml0ICh2b2lk
KTsKdm9pZCBzZXR2YXIgKGNoYXIgKnZhcm5hbWUsIHN0cnVjdCB2YWx1ZSBkYXRhKTsKaW50IGdl
dGl2YXIgKGNoYXIgKnZhcm5hbWUpOwp2b2lkIHVwZGF0ZSAoY2hhciAqcGZpbGUsIGNoYXIgKm5w
ZmlsZSk7CnZvaWQgZG9fZml0ICh2b2lkKTsKc2l6ZV90IHdyaV90b19maWxfbGFzdF9maXRfY21k
IChGSUxFICpmcCk7CgoKCgp2b2lkIGdyYXBoX2Vycm9yIChjaGFyICp0ZXh0KTsKdm9pZCBmaXh1
cF9yYW5nZSAoaW50IGF4aXMsIGNoYXIgKmF4aXNfbmFtZSk7CnZvaWQgdGltZXRpY19mb3JtYXQg
KGludCBheGlzLCBkb3VibGUgYW1pbiwgZG91YmxlIGFtYXgpOwp2b2lkIGRvX3Bsb3QgKHN0cnVj
dCBjdXJ2ZV9wb2ludHMgKnBsb3RzLCBpbnQgcGNvdW50KTsKZG91YmxlIHRpbWVfdGljX2p1c3Qg
KGludCBsZXZlbCwgZG91YmxlIHRpY3BsYWNlKTsKZG91YmxlIG1ha2VfbHRpYyAoaW50IHRsZXZl
bCwgZG91YmxlIGluY3IpOwppbnQgbGFiZWxfd2lkdGggKGNoYXIgKnN0ciwgaW50ICpsaW5lcyk7
CmRvdWJsZSBzZXRfdGljIChkb3VibGUgbDEwLCBpbnQgZ3VpZGUpOwp2b2lkIHNldHVwX3RpY3Mg
KGludCBheGlzLCBzdHJ1Y3QgdGljZGVmICpkZWYsIGNoYXIgKmZvcm1hdCwgaW50IG1heCk7Cgp0
eXBlZGVmIHZvaWQgKCp0aWNfY2FsbGJhY2spIChpbnQgYXhpcywgZG91YmxlIHBsYWNlLCBjaGFy
ICp0ZXh0LCBzdHJ1Y3QgbHBfc3R5bGVfdHlwZSBncmlkKTsKdm9pZCBnZW5fdGljcyAoaW50IGF4
aXMsIHN0cnVjdCB0aWNkZWYgKmRlZiwgaW50IGdyaWQsIGludCBtaW5pdGljLCBkb3VibGUgbWlu
aWZyZXEsIHRpY19jYWxsYmFjayBjYWxsYmFjayk7CnZvaWQgd3JpdGVfbXVsdGlsaW5lICh1bnNp
Z25lZCBpbnQgeCwgdW5zaWduZWQgaW50IHksIGNoYXIgKnRleHRfd2lsbF9iZV9tYW5nbGVkLCBl
bnVtIEpVU1RJRlkgaG9yLCBpbnQgdmVydCwgaW50IGFuZ2xlLCBjaGFyICpmb250KTsKCgoKdm9p
ZCBtYXAzZF94eSAoZG91YmxlIHgsIGRvdWJsZSB5LCBkb3VibGUgeiwgdW5zaWduZWQgaW50ICp4
dCwgdW5zaWduZWQgaW50ICp5dCk7CmludCBtYXAzZF96IChkb3VibGUgeCwgZG91YmxlIHksIGRv
dWJsZSB6KTsKdm9pZCBkb18zZHBsb3QgKHN0cnVjdCBzdXJmYWNlX3BvaW50cyAqcGxvdHMsIGlu
dCBwY291bnQpOwoKCgoKaW50IGhlbHAgKGNoYXIgKmtleXdvcmQsIGNoYXIgKnBhdGgsIFRCT09M
RUFOICpzdWJ0b3BpY3MpOwp2b2lkIEZyZWVIZWxwICh2b2lkKTsKdm9pZCBTdGFydE91dHB1dCAo
dm9pZCk7CnZvaWQgT3V0TGluZSAoY2hhciAqbGluZSk7CnZvaWQgRW5kT3V0cHV0ICh2b2lkKTsK
CgoKCnZvaWQgY2xpcF9tb3ZlICh1bnNpZ25lZCBpbnQgeCwgdW5zaWduZWQgaW50IHkpOwp2b2lk
IGNsaXBfdmVjdG9yICh1bnNpZ25lZCBpbnQgeCwgdW5zaWduZWQgaW50IHkpOwoKdm9pZCBzZXRf
aGlkZGVuM2RvcHRpb25zICh2b2lkKTsKdm9pZCBzaG93X2hpZGRlbjNkb3B0aW9ucyAodm9pZCk7
Cgp2b2lkIHNhdmVfaGlkZGVuM2RvcHRpb25zIChGSUxFICpmcCk7Cgp2b2lkIGluaXRfaGlkZGVu
X2xpbmVfcmVtb3ZhbCAodm9pZCk7CnZvaWQgcmVzZXRfaGlkZGVuX2xpbmVfcmVtb3ZhbCAodm9p
ZCk7CnZvaWQgdGVybV9oaWRkZW5fbGluZV9yZW1vdmFsICh2b2lkKTsKdm9pZCBwbG90M2RfaGlk
ZGVuIChzdHJ1Y3Qgc3VyZmFjZV9wb2ludHMgKnBsb3RzLCBpbnQgcGNvdW50KTsKdm9pZCBkcmF3
X2xpbmVfaGlkZGVuICh1bnNpZ25lZCBpbnQsIHVuc2lnbmVkIGludCwgdW5zaWduZWQgaW50LCB1
bnNpZ25lZCBpbnQpOwojIDE0NSAicHJvdG9zLmgiCnZvaWQgcmVzZXRfc3RhY2sgKHZvaWQpOwp2
b2lkIGNoZWNrX3N0YWNrICh2b2lkKTsKc3RydWN0IHZhbHVlICpwb3AgKHN0cnVjdCB2YWx1ZSAq
eCk7CnZvaWQgcHVzaCAoc3RydWN0IHZhbHVlICp4KTsKCgoKCnZvaWQgZ2VuX2ludGVycCAoc3Ry
dWN0IGN1cnZlX3BvaW50cyAqcGxvdCk7CnZvaWQgc29ydF9wb2ludHMgKHN0cnVjdCBjdXJ2ZV9w
b2ludHMgKnBsb3QpOwp2b2lkIGNwX2ltcGxvZGUgKHN0cnVjdCBjdXJ2ZV9wb2ludHMgKmNwKTsK
CgoKCnN0cnVjdCBjdXJ2ZV9wb2ludHMgKiBjcF9hbGxvYyAoaW50IG51bSk7CnZvaWQgY3BfZXh0
ZW5kIChzdHJ1Y3QgY3VydmVfcG9pbnRzICpjcCwgaW50IG51bSk7CnZvaWQgY3BfZnJlZSAoc3Ry
dWN0IGN1cnZlX3BvaW50cyAqY3ApOwpzdHJ1Y3QgaXNvX2N1cnZlICogaXNvX2FsbG9jIChpbnQg
bnVtKTsKdm9pZCBpc29fZXh0ZW5kIChzdHJ1Y3QgaXNvX2N1cnZlICppcCwgaW50IG51bSk7CnZv
aWQgaXNvX2ZyZWUgKHN0cnVjdCBpc29fY3VydmUgKmlwKTsKc3RydWN0IHN1cmZhY2VfcG9pbnRz
ICogc3BfYWxsb2MgKGludCBudW1fc2FtcF8xLCBpbnQgbnVtX2lzb18xLCBpbnQgbnVtX3NhbXBf
MiwgaW50IG51bV9pc29fMik7CnZvaWQgc3BfcmVwbGFjZSAoc3RydWN0IHN1cmZhY2VfcG9pbnRz
ICpzcCwgaW50IG51bV9zYW1wXzEsIGludCBudW1faXNvXzEsIGludCBudW1fc2FtcF8yLCBpbnQg
bnVtX2lzb18yKTsKdm9pZCBzcF9mcmVlIChzdHJ1Y3Qgc3VyZmFjZV9wb2ludHMgKnNwKTsKdm9p
ZCBzYXZlX2Z1bmN0aW9ucyAoRklMRSAqZnApOwp2b2lkIHNhdmVfdmFyaWFibGVzIChGSUxFICpm
cCk7CnZvaWQgc2F2ZV9hbGwgKEZJTEUgKmZwKTsKdm9pZCBzYXZlX3NldCAoRklMRSAqZnApOwp2
b2lkIHNhdmVfc2V0X2FsbCAoRklMRSAqZnApOwp2b2lkIGxvYWRfZmlsZSAoRklMRSAqZnAsIGNo
YXIgKm5hbWUsIFRCT09MRUFOIHN1YnN0X2FyZ3MpOwpGSUxFICpsZl90b3AgKHZvaWQpOwp2b2lk
IGxvYWRfZmlsZV9lcnJvciAodm9pZCk7CmludCBpbnN0cmluZyAoY2hhciAqc3RyLCBpbnQgYyk7
CnZvaWQgc2hvd19mdW5jdGlvbnMgKHZvaWQpOwp2b2lkIHNob3dfYXQgKHZvaWQpOwp2b2lkIGRp
c3BfYXQgKHN0cnVjdCBhdF90eXBlICpjdXJyX2F0LCBpbnQgbGV2ZWwpOwppbnQgZmluZF9tYXhs
X2tleXMgKHN0cnVjdCBjdXJ2ZV9wb2ludHMgKnBsb3RzLCBpbnQgY291bnQsIGludCAqa2NudCk7
CmludCBmaW5kX21heGxfa2V5czNkIChzdHJ1Y3Qgc3VyZmFjZV9wb2ludHMgKnBsb3RzLCBpbnQg
Y291bnQsIGludCAqa2NudCk7ClRCT09MRUFOIHZhbGlkX2Zvcm1hdCAoY29uc3QgY2hhciAqZm9y
bWF0KTsKCgoKCgp2b2lkIGV2YWx1YXRlX2F0IChzdHJ1Y3QgYXRfdHlwZSAqYXRfcHRyLCBzdHJ1
Y3QgdmFsdWUgKnZhbF9wdHIpOwpzdHJ1Y3QgdmFsdWUgKiBjb25zdF9leHByZXNzIChzdHJ1Y3Qg
dmFsdWUgKnZhbHB0cik7CnN0cnVjdCBhdF90eXBlICogdGVtcF9hdCAodm9pZCk7CnN0cnVjdCBh
dF90eXBlICogcGVybV9hdCAodm9pZCk7CgoKCgp2b2lkIGludGVycnVwdF9zZXR1cCAodm9pZCk7
CgoKCgp2b2lkIHBsb3RyZXF1ZXN0ICh2b2lkKTsKCgoKCnZvaWQgcGxvdDNkcmVxdWVzdCAodm9p
ZCk7CgoKCgoKY2hhciAqcmVhZGxpbmUgKGNoYXIgKnByb21wdCk7CnZvaWQgYWRkX2hpc3Rvcnkg
KGNoYXIgKmxpbmUpOwojIDIyNyAicHJvdG9zLmgiCmludCBzY2FubmVyIChjaGFyIGV4cHJlc3Np
b25bXSk7CgoKCgpjaGFyICpzYWZlX3N0cm5jcHkgKGNoYXIgKiwgY2hhciAqLCBzaXplX3QpOwoK
CgoKCgoKdm9pZCB0ZXJtX3NldF9vdXRwdXQgKGNoYXIgKik7CnZvaWQgdGVybV9pbml0ICh2b2lk
KTsKdm9pZCB0ZXJtX3N0YXJ0X3Bsb3QgKHZvaWQpOwp2b2lkIHRlcm1fZW5kX3Bsb3QgKHZvaWQp
Owp2b2lkIHRlcm1fc3RhcnRfbXVsdGlwbG90ICh2b2lkKTsKdm9pZCB0ZXJtX2VuZF9tdWx0aXBs
b3QgKHZvaWQpOwoKdm9pZCB0ZXJtX3Jlc2V0ICh2b2lkKTsKdm9pZCB0ZXJtX2FwcGx5X2xwX3By
b3BlcnRpZXMgKHN0cnVjdCBscF9zdHlsZV90eXBlICpscCk7CnZvaWQgdGVybV9jaGVja19tdWx0
aXBsb3Rfb2theSAoVEJPT0xFQU4pOwoKX19pbmxpbmVfXyBpbnQgdGVybV9jb3VudCAodm9pZCk7
CnZvaWQgbGlzdF90ZXJtcyAodm9pZCk7CnN0cnVjdCBURVJNRU5UUlkgKnNldF90ZXJtIChpbnQp
OwpzdHJ1Y3QgVEVSTUVOVFJZICpjaGFuZ2VfdGVybSAoY2hhciAqbmFtZSwgaW50IGxlbmd0aCk7
CnZvaWQgaW5pdF90ZXJtaW5hbCAodm9pZCk7CnZvaWQgdGVzdF90ZXJtICh2b2lkKTsKdm9pZCBV
UF9yZWRpcmVjdCAoaW50IGNhbGxlZCk7CiMgMjY3ICJwcm90b3MuaCIKaW50IG51bGxfdGV4dF9h
bmdsZSAoaW50IGFuZyk7CmludCBudWxsX2p1c3RpZnlfdGV4dCAoZW51bSBKVVNUSUZZIGp1c3Qp
OwppbnQgbnVsbF9zY2FsZSAoZG91YmxlIHgsIGRvdWJsZSB5KTsKaW50IGRvX3NjYWxlIChkb3Vi
bGUgeCwgZG91YmxlIHkpOwp2b2lkIG9wdGlvbnNfbnVsbCAodm9pZCk7CnZvaWQgVU5LTk9XTl9u
dWxsICh2b2lkKTsKdm9pZCBNT1ZFX251bGwgKHVuc2lnbmVkIGludCwgdW5zaWduZWQgaW50KTsK
dm9pZCBMSU5FVFlQRV9udWxsIChpbnQpOwp2b2lkIFBVVFRFWFRfbnVsbCAodW5zaWduZWQgaW50
LCB1bnNpZ25lZCBpbnQsIGNoYXIgKik7CgoKCgpjaGFyICogZ3N0cnB0aW1lIChjaGFyICosIGNo
YXIgKiwgc3RydWN0IHRtICopOwppbnQgZ3N0cmZ0aW1lIChjaGFyICosIGludCwgY2hhciAqLCBk
b3VibGUpOwpkb3VibGUgZ3RpbWVnbSAoc3RydWN0IHRtICopOwppbnQgZ2dtdGltZSAoc3RydWN0
IHRtICosIGRvdWJsZSk7CgoKCgppbnQgY2hyX2luX3N0ciAoaW50IHRfbnVtLCBpbnQgYyk7Cmlu
dCBlcXVhbHMgKGludCB0X251bSwgY2hhciAqc3RyKTsKaW50IGFsbW9zdF9lcXVhbHMgKGludCB0
X251bSwgY2hhciAqc3RyKTsKaW50IGlzc3RyaW5nIChpbnQgdF9udW0pOwppbnQgaXNhbnVtYmVy
IChpbnQgdF9udW0pOwppbnQgaXNsZXR0ZXIgKGludCB0X251bSk7CmludCBpc19kZWZpbml0aW9u
IChpbnQgdF9udW0pOwp2b2lkIGNvcHlfc3RyIChjaGFyIHN0cltdLCBpbnQgdF9udW0sIGludCBt
YXgpOwppbnQgdG9rZW5fbGVuIChpbnQgdF9udW0pOwp2b2lkIHF1b3RlX3N0ciAoY2hhciBzdHJb
XSwgaW50IHRfbnVtLCBpbnQgbWF4KTsKdm9pZCBjYXB0dXJlIChjaGFyIHN0cltdLCBpbnQgc3Rh
cnQsIGludCBlbmQsIGludCBtYXgpOwp2b2lkIG1fY2FwdHVyZSAoY2hhciAqKnN0ciwgaW50IHN0
YXJ0LCBpbnQgZW5kKTsKdm9pZCBtX3F1b3RlX2NhcHR1cmUgKGNoYXIgKipzdHIsIGludCBzdGFy
dCwgaW50IGVuZCk7CnZvaWQgY29udmVydCAoc3RydWN0IHZhbHVlICp2YWxfcHRyLCBpbnQgdF9u
dW0pOwp2b2lkIGRpc3BfdmFsdWUgKEZJTEUgKmZwLCBzdHJ1Y3QgdmFsdWUgKnZhbCk7CmRvdWJs
ZSByZWFsIChzdHJ1Y3QgdmFsdWUgKnZhbCk7CmRvdWJsZSBpbWFnIChzdHJ1Y3QgdmFsdWUgKnZh
bCk7CmRvdWJsZSBtYWduaXR1ZGUgKHN0cnVjdCB2YWx1ZSAqdmFsKTsKZG91YmxlIGFuZ2xlIChz
dHJ1Y3QgdmFsdWUgKnZhbCk7CnN0cnVjdCB2YWx1ZSAqIEdjb21wbGV4IChzdHJ1Y3QgdmFsdWUg
KmEsIGRvdWJsZSByZWFscGFydCwgZG91YmxlIGltYWdwYXJ0KTsKc3RydWN0IHZhbHVlICogR2lu
dGVnZXIgKHN0cnVjdCB2YWx1ZSAqYSwgaW50IGkpOwp2b2lkIG9zX2Vycm9yIChjaGFyIHN0cltd
LCBpbnQgdF9udW0pOwp2b2lkIGludF9lcnJvciAoY2hhciBzdHJbXSwgaW50IHRfbnVtKTsKdm9p
ZCBpbnRfd2FybiAoY2hhciBzdHJbXSwgaW50IHRfbnVtKTsKdm9pZCBsb3dlcl9jYXNlIChjaGFy
ICpzKTsKdm9pZCBzcXVhc2hfc3BhY2VzIChjaGFyICpzKTsKCgoKCnZvaWQgZHJhd19jbGlwX2xp
bmUgKHVuc2lnbmVkIGludCwgdW5zaWduZWQgaW50LCB1bnNpZ25lZCBpbnQsIHVuc2lnbmVkIGlu
dCk7CgoKCgppbnQgY2xpcF9saW5lIChpbnQgKiwgaW50ICosIGludCAqLCBpbnQgKik7CnZvaWQg
ZWRnZTNkX2ludGVyc2VjdCAoc3RydWN0IGNvb3JkaW5hdGUgKnBvaW50cywgaW50IGksIGRvdWJs
ZSAqZXgsIGRvdWJsZSAqZXksIGRvdWJsZSAqZXopOwpUQk9PTEVBTiB0d29fZWRnZTNkX2ludGVy
c2VjdCAoc3RydWN0IGNvb3JkaW5hdGUgKnBvaW50cywgaW50IGksIGRvdWJsZSAqbHgsIGRvdWJs
ZSAqbHksIGRvdWJsZSAqbHopOwp2b2lkIG1hdF91bml0IChkb3VibGUgbWF0WzRdWzRdKTsKdm9p
ZCBtYXRfdHJhbnMgKGRvdWJsZSB0eCwgZG91YmxlIHR5LCBkb3VibGUgdHosIGRvdWJsZSBtYXRb
NF1bNF0pOwp2b2lkIG1hdF9zY2FsZSAoZG91YmxlIHN4LCBkb3VibGUgc3ksIGRvdWJsZSBzeiwg
ZG91YmxlIG1hdFs0XVs0XSk7CnZvaWQgbWF0X3JvdF94IChkb3VibGUgdGV0YSwgZG91YmxlIG1h
dFs0XVs0XSk7CnZvaWQgbWF0X3JvdF95IChkb3VibGUgdGV0YSwgZG91YmxlIG1hdFs0XVs0XSk7
CnZvaWQgbWF0X3JvdF96IChkb3VibGUgdGV0YSwgZG91YmxlIG1hdFs0XVs0XSk7CnZvaWQgbWF0
X211bHQgKGRvdWJsZSBtYXRfcmVzWzRdWzRdLCBkb3VibGUgbWF0MVs0XVs0XSwgZG91YmxlIG1h
dDJbNF1bNF0pOwppbnQgY2xpcF9wb2ludCAodW5zaWduZWQgaW50IHgsIHVuc2lnbmVkIGludCB5
KTsKdm9pZCBjbGlwX3B1dF90ZXh0ICh1bnNpZ25lZCBpbnQgeCwgdW5zaWduZWQgaW50IHksIGNo
YXIgKnN0cik7CnZvaWQgY2xpcF9wdXRfdGV4dF9qdXN0ICh1bnNpZ25lZCBpbnQgeCwgdW5zaWdu
ZWQgaW50IHksIGNoYXIgKnN0ciwgZW51bSBKVVNUSUZZIGp1c3QpOwoKIyAxICJhbGxvYy5oIiAx
CiMgMzkgImFsbG9jLmgiCmNoYXIgKmdwX2FsbG9jICh1bnNpZ25lZCBsb25nIHNpemUsIGNoYXIg
Km1lc3NhZ2UpOwp2b2lkICpncF9yZWFsbG9jICh2b2lkICpwLCB1bnNpZ25lZCBsb25nIHNpemUs
IGNoYXIgKm1lc3NhZ2UpOwojIDMzOCAicHJvdG9zLmgiIDIKIyA3ODMgInBsb3QuaCIgMgojIDc4
ICJ0ZXJtLmMiIDIKIyAxICJiaXRtYXAuaCIgMQojIDM3ICJiaXRtYXAuaCIKdHlwZWRlZiB1bnNp
Z25lZCBpbnQgY2hhcl9yb3c7CnR5cGVkZWYgY2hhcl9yb3cgKiBjaGFyX2JveDsKIyA0NyAiYml0
bWFwLmgiCmV4dGVybiBjaGFyX3JvdyBmbnQ1eDlbOTZdWzldOwoKCgoKCgpleHRlcm4gY2hhcl9y
b3cgZm50OXgxN1s5Nl1bMTddOwoKCgoKCgpleHRlcm4gY2hhcl9yb3cgZm50MTN4MjVbOTZdWzI1
XTsKCgp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgcGl4ZWxzOwp0eXBlZGVmIHBpeGVscyAqYml0bWFw
W107CgpleHRlcm4gYml0bWFwICpiX3A7CmV4dGVybiB1bnNpZ25lZCBpbnQgYl9jdXJyeCwgYl9j
dXJyeTsKZXh0ZXJuIHVuc2lnbmVkIGludCBiX3hzaXplLCBiX3lzaXplOwpleHRlcm4gdW5zaWdu
ZWQgaW50IGJfcGxhbmVzOwpleHRlcm4gdW5zaWduZWQgaW50IGJfcHNpemU7CmV4dGVybiB1bnNp
Z25lZCBpbnQgYl9yYXN0ZXJtb2RlOwpleHRlcm4gdW5zaWduZWQgaW50IGJfbGluZW1hc2s7CmV4
dGVybiB1bnNpZ25lZCBpbnQgYl92YWx1ZTsKZXh0ZXJuIHVuc2lnbmVkIGludCBiX2hjaGFyOwpl
eHRlcm4gdW5zaWduZWQgaW50IGJfaGJpdHM7CmV4dGVybiB1bnNpZ25lZCBpbnQgYl92Y2hhcjsK
ZXh0ZXJuIHVuc2lnbmVkIGludCBiX3ZiaXRzOwpleHRlcm4gdW5zaWduZWQgaW50IGJfYW5nbGU7
CmV4dGVybiBjaGFyX2JveCBiX2ZvbnRbOTZdOwpleHRlcm4gdW5zaWduZWQgaW50IGJfcGF0dGVy
bltdOwpleHRlcm4gaW50IGJfbWFza2NvdW50OwpleHRlcm4gdW5zaWduZWQgaW50IGJfbGFzdHgs
IGJfbGFzdHk7CgoKCgoKCgpzdHJ1Y3QgcmdiCnsKICAgIHVuc2lnbmVkIGNoYXIgciwgZywgYjsK
fTsKCmV4dGVybiBzdHJ1Y3QgcmdiIHdlYl9jb2xvcl9yZ2JzW107CgoKCgp2b2lkIGJfbWFrZWJp
dG1hcCAodW5zaWduZWQgaW50IHgsIHVuc2lnbmVkIGludCB5LCB1bnNpZ25lZCBpbnQgcGxhbmVz
KTsKdm9pZCBiX2ZyZWViaXRtYXAgKHZvaWQpOwp2b2lkIGJfc2V0cGl4ZWwgKHVuc2lnbmVkIGlu
dCB4LCB1bnNpZ25lZCBpbnQgeSwgdW5zaWduZWQgaW50IHZhbHVlKTsKCnZvaWQgYl9saW5lICh1
bnNpZ25lZCBpbnQgeDEsIHVuc2lnbmVkIGludCB5MSwgdW5zaWduZWQgaW50IHgyLCB1bnNpZ25l
ZCBpbnQgeTIpOwp2b2lkIGJfc2V0bWFza3BpeGVsICh1bnNpZ25lZCBpbnQgeCwgdW5zaWduZWQg
aW50IHksIHVuc2lnbmVkIGludCB2YWx1ZSk7Cgp2b2lkIGJfY2hhcnNpemUgKHVuc2lnbmVkIGlu
dCBzaXplKTsKdm9pZCBiX3NldHZhbHVlICh1bnNpZ25lZCBpbnQgdmFsdWUpOwoKdm9pZCBiX3Nl
dGxpbmV0eXBlIChpbnQgbGluZXR5cGUpOwp2b2lkIGJfbW92ZSAodW5zaWduZWQgaW50IHgsIHVu
c2lnbmVkIGludCB5KTsKdm9pZCBiX3ZlY3RvciAodW5zaWduZWQgaW50IHgsIHVuc2lnbmVkIGlu
dCB5KTsKdm9pZCBiX3B1dF90ZXh0ICh1bnNpZ25lZCBpbnQgeCwgdW5zaWduZWQgaW50IHksIGNo
YXIgKnN0cik7CmludCBiX3RleHRfYW5nbGUgKGludCBhbmcpOwojIDc5ICJ0ZXJtLmMiIDIKIyAx
ICJzZXRzaG93LmgiIDEKIyA0MSAic2V0c2hvdy5oIgojIDEgIi91c3IvaW5jbHVkZS9zeXMvdXRz
bmFtZS5oIiAxIDMKIyAyNiAiL3Vzci9pbmNsdWRlL3N5cy91dHNuYW1lLmgiIDMKIyAxICIvdXNy
L2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMjcgIi91c3IvaW5jbHVkZS9zeXMvdXRzbmFtZS5o
IiAyIDMKCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy91dHNuYW1lLmgiIDEgMwojIDMxICIvdXNy
L2luY2x1ZGUvc3lzL3V0c25hbWUuaCIgMiAzCgoKCgoKCnN0cnVjdCB1dHNuYW1lCiAgewoKICAg
IGNoYXIgc3lzbmFtZVs2NV07CgoKICAgIGNoYXIgbm9kZW5hbWVbNjVdOwoKCiAgICBjaGFyIHJl
bGVhc2VbNjVdOwoKICAgIGNoYXIgdmVyc2lvbls2NV07CgoKICAgIGNoYXIgbWFjaGluZVs2NV07
CgoKCgoKCiAgICBjaGFyIF9fZG9tYWlubmFtZVs2NV07CgoKICB9OwoKCgoKCgoKZXh0ZXJuIGlu
dCB1bmFtZSAoc3RydWN0IHV0c25hbWUgKl9fbmFtZSkgOwojIDQyICJzZXRzaG93LmgiIDIKIyA1
MyAic2V0c2hvdy5oIgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgY2hhciB0ZXh0WzEwMjQgKzFd
OwogICAgICAgIGRvdWJsZSB4b2Zmc2V0LCB5b2Zmc2V0OwogICAgICAgIGNoYXIgZm9udFsxMDI0
ICsxXTsKfSBsYWJlbF9zdHJ1Y3Q7CgoKZXh0ZXJuIFRCT09MRUFOIG11bHRpcGxvdDsKCmV4dGVy
biBUQk9PTEVBTiBhdXRvc2NhbGVfcjsKZXh0ZXJuIFRCT09MRUFOIGF1dG9zY2FsZV90OwpleHRl
cm4gVEJPT0xFQU4gYXV0b3NjYWxlX3U7CmV4dGVybiBUQk9PTEVBTiBhdXRvc2NhbGVfdjsKZXh0
ZXJuIFRCT09MRUFOIGF1dG9zY2FsZV94OwpleHRlcm4gVEJPT0xFQU4gYXV0b3NjYWxlX3k7CmV4
dGVybiBUQk9PTEVBTiBhdXRvc2NhbGVfejsKZXh0ZXJuIFRCT09MRUFOIGF1dG9zY2FsZV94MjsK
ZXh0ZXJuIFRCT09MRUFOIGF1dG9zY2FsZV95MjsKZXh0ZXJuIFRCT09MRUFOIGF1dG9zY2FsZV9s
dDsKZXh0ZXJuIFRCT09MRUFOIGF1dG9zY2FsZV9sdTsKZXh0ZXJuIFRCT09MRUFOIGF1dG9zY2Fs
ZV9sdjsKZXh0ZXJuIFRCT09MRUFOIGF1dG9zY2FsZV9seDsKZXh0ZXJuIFRCT09MRUFOIGF1dG9z
Y2FsZV9seTsKZXh0ZXJuIFRCT09MRUFOIGF1dG9zY2FsZV9sejsKZXh0ZXJuIGRvdWJsZSBib3h3
aWR0aDsKZXh0ZXJuIFRCT09MRUFOIGNsaXBfcG9pbnRzOwpleHRlcm4gVEJPT0xFQU4gY2xpcF9s
aW5lczE7CmV4dGVybiBUQk9PTEVBTiBjbGlwX2xpbmVzMjsKZXh0ZXJuIHN0cnVjdCBscF9zdHls
ZV90eXBlIGJvcmRlcl9scDsKZXh0ZXJuIGludCBkcmF3X2JvcmRlcjsKIyA5MSAic2V0c2hvdy5o
IgpleHRlcm4gVEJPT0xFQU4gZHJhd19zdXJmYWNlOwpleHRlcm4gY2hhciBkdW1teV92YXJbNV1b
NTAgKzFdOwpleHRlcm4gY2hhciBkZWZhdWx0X2ZvbnRbXTsKZXh0ZXJuIGNoYXIgeGZvcm1hdFtd
OwpleHRlcm4gY2hhciB5Zm9ybWF0W107CmV4dGVybiBjaGFyIHpmb3JtYXRbXTsKZXh0ZXJuIGNo
YXIgeDJmb3JtYXRbXTsKZXh0ZXJuIGNoYXIgeTJmb3JtYXRbXTsKCmV4dGVybiBpbnQgZm9ybWF0
X2lzX251bWVyaWNbXTsKCmV4dGVybiBjaGFyIGtleV90aXRsZVtdOwpleHRlcm4gZW51bSBQTE9U
X1NUWUxFIGRhdGFfc3R5bGUsIGZ1bmNfc3R5bGU7CmV4dGVybiBkb3VibGUgYmFyX3NpemU7CmV4
dGVybiBzdHJ1Y3QgbHBfc3R5bGVfdHlwZSB3b3JrX2dyaWQsIGdyaWRfbHAsIG1ncmlkX2xwOwpl
eHRlcm4gZG91YmxlIHBvbGFyX2dyaWRfYW5nbGU7CmV4dGVybiBpbnQga2V5OwpleHRlcm4gc3Ry
dWN0IHBvc2l0aW9uIGtleV91c2VyX3BvczsKZXh0ZXJuIGludCBrZXlfdnBvcywga2V5X2hwb3Ms
IGtleV9qdXN0OwpleHRlcm4gZG91YmxlIGtleV9zd2lkdGgsIGtleV92ZXJ0X2ZhY3RvcjsKZXh0
ZXJuIGRvdWJsZSBrZXlfd2lkdGhfZml4OwpleHRlcm4gVEJPT0xFQU4ga2V5X3JldmVyc2U7CmV4
dGVybiBzdHJ1Y3QgbHBfc3R5bGVfdHlwZSBrZXlfYm94OwpleHRlcm4gVEJPT0xFQU4gaXNfbG9n
X3gsIGlzX2xvZ195LCBpc19sb2dfejsKZXh0ZXJuIGRvdWJsZSBiYXNlX2xvZ194LCBiYXNlX2xv
Z195LCBiYXNlX2xvZ196OwoKZXh0ZXJuIGRvdWJsZSBsb2dfYmFzZV9sb2dfeCwgbG9nX2Jhc2Vf
bG9nX3ksIGxvZ19iYXNlX2xvZ196OwoKZXh0ZXJuIFRCT09MRUFOIGlzX2xvZ194MiwgaXNfbG9n
X3kyOwpleHRlcm4gZG91YmxlIGJhc2VfbG9nX3gyLCBiYXNlX2xvZ195MjsKCmV4dGVybiBkb3Vi
bGUgbG9nX2Jhc2VfbG9nX3gyLCBsb2dfYmFzZV9sb2dfeTI7CgpleHRlcm4gY2hhciAqb3V0c3Ry
OwpleHRlcm4gVEJPT0xFQU4gcGFyYW1ldHJpYzsKZXh0ZXJuIGRvdWJsZSBwb2ludHNpemU7CmV4
dGVybiBUQk9PTEVBTiBwb2xhcjsKZXh0ZXJuIFRCT09MRUFOIGhpZGRlbjNkOwpleHRlcm4gaW50
IGFuZ2xlc19mb3JtYXQ7CmV4dGVybiBkb3VibGUgYW5nMnJhZDsKZXh0ZXJuIGludCBtYXBwaW5n
M2Q7CmV4dGVybiBpbnQgc2FtcGxlczsKZXh0ZXJuIGludCBzYW1wbGVzXzE7CmV4dGVybiBpbnQg
c2FtcGxlc18yOwpleHRlcm4gaW50IGlzb19zYW1wbGVzXzE7CmV4dGVybiBpbnQgaXNvX3NhbXBs
ZXNfMjsKZXh0ZXJuIGZsb2F0IHhzaXplOwpleHRlcm4gZmxvYXQgeG9mZnNldDsKZXh0ZXJuIGZs
b2F0IHlvZmZzZXQ7CmV4dGVybiBmbG9hdCB5c2l6ZTsKZXh0ZXJuIGZsb2F0IHpzaXplOwpleHRl
cm4gZmxvYXQgYXNwZWN0X3JhdGlvOwpleHRlcm4gZmxvYXQgc3VyZmFjZV9yb3RfejsKZXh0ZXJu
IGZsb2F0IHN1cmZhY2Vfcm90X3g7CmV4dGVybiBmbG9hdCBzdXJmYWNlX3NjYWxlOwpleHRlcm4g
ZmxvYXQgc3VyZmFjZV96c2NhbGU7CmV4dGVybiBjaGFyIHRlcm1fb3B0aW9uc1tdOwoKZXh0ZXJu
IGxhYmVsX3N0cnVjdCB0aXRsZSwgdGltZWxhYmVsOwpleHRlcm4gbGFiZWxfc3RydWN0IHhsYWJl
bCwgeWxhYmVsLCB6bGFiZWw7CmV4dGVybiBsYWJlbF9zdHJ1Y3QgeDJsYWJlbCwgeTJsYWJlbDsK
CmV4dGVybiBpbnQgdGltZWxhYmVsX3JvdGF0ZTsKZXh0ZXJuIGludCB0aW1lbGFiZWxfYm90dG9t
OwpleHRlcm4gY2hhciB0aW1lZm10W107CmV4dGVybiBpbnQgZGF0YXR5cGVbXTsKZXh0ZXJuIGlu
dCByYW5nZV9mbGFnc1tdOwpleHRlcm4gZG91YmxlIHJtaW4sIHJtYXg7CmV4dGVybiBkb3VibGUg
dG1pbiwgdG1heCwgdW1pbiwgdW1heCwgdm1pbiwgdm1heDsKZXh0ZXJuIGRvdWJsZSB4bWluLCB4
bWF4LCB5bWluLCB5bWF4LCB6bWluLCB6bWF4OwpleHRlcm4gZG91YmxlIHgybWluLCB4Mm1heCwg
eTJtaW4sIHkybWF4OwpleHRlcm4gZG91YmxlIGxvZmYsIHJvZmYsIHRvZmYsIGJvZmY7CmV4dGVy
biBpbnQgZHJhd19jb250b3VyOwpleHRlcm4gVEJPT0xFQU4gbGFiZWxfY29udG91cnM7CmV4dGVy
biBjaGFyIGNvbnRvdXJfZm9ybWF0W107CmV4dGVybiBpbnQgY29udG91cl9wdHM7CmV4dGVybiBp
bnQgY29udG91cl9raW5kOwpleHRlcm4gaW50IGNvbnRvdXJfb3JkZXI7CmV4dGVybiBpbnQgY29u
dG91cl9sZXZlbHM7CmV4dGVybiBkb3VibGUgemVybzsKZXh0ZXJuIGludCBsZXZlbHNfa2luZDsK
ZXh0ZXJuIGRvdWJsZSBsZXZlbHNfbGlzdFszMF07CgpleHRlcm4gaW50IGRncmlkM2Rfcm93X2Zp
bmVuZXNzOwpleHRlcm4gaW50IGRncmlkM2RfY29sX2ZpbmVuZXNzOwpleHRlcm4gaW50IGRncmlk
M2Rfbm9ybV92YWx1ZTsKZXh0ZXJuIFRCT09MRUFOIGRncmlkM2Q7CgoKCgoKCmV4dGVybiBpbnQg
ZW5jb2Rpbmc7CmV4dGVybiBjaGFyICplbmNvZGluZ19uYW1lc1tdOwoKCmV4dGVybiBzdHJ1Y3Qg
bHBfc3R5bGVfdHlwZSB4emVyb2F4aXM7CmV4dGVybiBzdHJ1Y3QgbHBfc3R5bGVfdHlwZSB5emVy
b2F4aXM7CmV4dGVybiBzdHJ1Y3QgbHBfc3R5bGVfdHlwZSB4Mnplcm9heGlzOwpleHRlcm4gc3Ry
dWN0IGxwX3N0eWxlX3R5cGUgeTJ6ZXJvYXhpczsKCmV4dGVybiBpbnQgeHRpY3M7CmV4dGVybiBp
bnQgeXRpY3M7CmV4dGVybiBpbnQgenRpY3M7CmV4dGVybiBpbnQgbXh0aWNzOwpleHRlcm4gaW50
IG15dGljczsKZXh0ZXJuIGludCBtenRpY3M7CmV4dGVybiBpbnQgeDJ0aWNzOwpleHRlcm4gaW50
IHkydGljczsKZXh0ZXJuIGludCBteDJ0aWNzOwpleHRlcm4gaW50IG15MnRpY3M7CmV4dGVybiBk
b3VibGUgbXh0ZnJlcTsKZXh0ZXJuIGRvdWJsZSBteXRmcmVxOwpleHRlcm4gZG91YmxlIG16dGZy
ZXE7CmV4dGVybiBkb3VibGUgbXgydGZyZXE7CmV4dGVybiBkb3VibGUgbXkydGZyZXE7CmV4dGVy
biBUQk9PTEVBTiByb3RhdGVfeHRpY3M7CmV4dGVybiBUQk9PTEVBTiByb3RhdGVfeXRpY3M7CmV4
dGVybiBUQk9PTEVBTiByb3RhdGVfenRpY3M7CmV4dGVybiBUQk9PTEVBTiByb3RhdGVfeDJ0aWNz
OwpleHRlcm4gVEJPT0xFQU4gcm90YXRlX3kydGljczsKCmV4dGVybiBmbG9hdCB0aWNzbGV2ZWw7
CmV4dGVybiBkb3VibGUgdGljc2NhbGU7CmV4dGVybiBkb3VibGUgbWluaXRpY3NjYWxlOwoKZXh0
ZXJuIHN0cnVjdCB0aWNkZWYgeHRpY2RlZjsKZXh0ZXJuIHN0cnVjdCB0aWNkZWYgeXRpY2RlZjsK
ZXh0ZXJuIHN0cnVjdCB0aWNkZWYgenRpY2RlZjsKZXh0ZXJuIHN0cnVjdCB0aWNkZWYgeDJ0aWNk
ZWY7CmV4dGVybiBzdHJ1Y3QgdGljZGVmIHkydGljZGVmOwoKZXh0ZXJuIFRCT09MRUFOIHRpY19p
bjsKCmV4dGVybiBzdHJ1Y3QgdGV4dF9sYWJlbCAqZmlyc3RfbGFiZWw7CmV4dGVybiBzdHJ1Y3Qg
YXJyb3dfZGVmICpmaXJzdF9hcnJvdzsKZXh0ZXJuIHN0cnVjdCBsaW5lc3R5bGVfZGVmICpmaXJz
dF9saW5lc3R5bGU7CgpleHRlcm4gaW50IGxtYXJnaW4sIGJtYXJnaW4scm1hcmdpbix0bWFyZ2lu
OwoKZXh0ZXJuIGNoYXIgY3VyX2xvY2FsZVs1MCArMV07CgpleHRlcm4gY2hhciBmdWxsX21vbnRo
X25hbWVzWzEyXVszMl07CmV4dGVybiBjaGFyIGFiYnJldl9tb250aF9uYW1lc1sxMl1bOF07Cgpl
eHRlcm4gY2hhciBmdWxsX2RheV9uYW1lc1s3XVszMl07CmV4dGVybiBjaGFyIGFiYnJldl9kYXlf
bmFtZXNbN11bOF07CgoKdm9pZCBzZXRfY29tbWFuZCAodm9pZCk7CnZvaWQgcmVzZXRfY29tbWFu
ZCAodm9pZCk7CnZvaWQgc2hvd19jb21tYW5kICh2b2lkKTsKCmVudW0gUExPVF9TVFlMRSBnZXRf
c3R5bGUgKHZvaWQpOwpUQk9PTEVBTiBsb2FkX3JhbmdlIChpbnQgYXhpcywgZG91YmxlICphLCBk
b3VibGUgKmIsIGludCBhdXRvc2MpOwp2b2lkIHNob3dfdmVyc2lvbiAoRklMRSAqZnApOwp2b2lk
IHNob3dfdmVyc2lvbl9sb25nICh2b2lkKTsKY2hhciAqIGNvbnZfdGV4dCAoY2hhciAqcywgY2hh
ciAqdCk7CnZvaWQgbHBfdXNlX3Byb3BlcnRpZXMgKHN0cnVjdCBscF9zdHlsZV90eXBlICpscCwg
aW50IHRhZywgaW50IHBvaW50ZmxhZyApOwoKCmV4dGVybiBjaGFyICptaXNzaW5nX3ZhbDsKIyA4
MCAidGVybS5jIiAyCiMgMSAidGVybS9kcml2ZXIuaCIgMQojIDQ3ICJ0ZXJtL2RyaXZlci5oIgp2
b2lkIGRvX3BvaW50ICh1bnNpZ25lZCBpbnQgeCwgdW5zaWduZWQgaW50IHksIGludCBudW1iZXIp
Owp2b2lkIGxpbmVfYW5kX3BvaW50ICh1bnNpZ25lZCBpbnQgeCwgdW5zaWduZWQgaW50IHksIGlu
dCBudW1iZXIpOwp2b2lkIGRvX2Fycm93ICh1bnNpZ25lZCBpbnQgc3gsIHVuc2lnbmVkIGludCBz
eSwgdW5zaWduZWQgaW50IGV4LCB1bnNpZ25lZCBpbnQgZXksIGludCBoZWFkKTsKaW50IG51bGxf
dGV4dF9hbmdsZSAoaW50IGFuZyk7CmludCBudWxsX2p1c3RpZnlfdGV4dCAoZW51bSBKVVNUSUZZ
IGp1c3QpOwppbnQgbnVsbF9zY2FsZSAoZG91YmxlIHgsIGRvdWJsZSB5KTsKaW50IGRvX3NjYWxl
IChkb3VibGUgeCwgZG91YmxlIHkpOwp2b2lkIG9wdGlvbnNfbnVsbCAodm9pZCk7CnZvaWQgVU5L
Tk9XTl9udWxsICh2b2lkKTsKaW50IHNldF9mb250X251bGwgKGNoYXIgKnMpOwp2b2lkIG51bGxf
c2V0X3BvaW50c2l6ZSAoZG91YmxlIHNpemUpOwoKZXh0ZXJuIEZJTEUgKmdwb3V0ZmlsZTsKZXh0
ZXJuIHN0cnVjdCBURVJNRU5UUlkgKnRlcm07CmV4dGVybiBmbG9hdCB4c2l6ZSwgeXNpemU7CiMg
ODEgInRlcm0uYyIgMgojIDk0ICJ0ZXJtLmMiCnN0YXRpYyBUQk9PTEVBTiB0ZXJtX2luaXRpYWxp
c2VkOwoKCnN0YXRpYyBUQk9PTEVBTiB0ZXJtX2dyYXBoaWNzID0gMDsKCgpzdGF0aWMgVEJPT0xF
QU4gdGVybV9zdXNwZW5kZWQgPSAwOwoKCnN0YXRpYyBUQk9PTEVBTiBvcGVuZWRfYmluYXJ5ID0g
MDsKCgpzdGF0aWMgVEJPT0xFQU4gdGVybV9mb3JjZV9pbml0ID0gMDsKCmV4dGVybiBGSUxFICpn
cG91dGZpbGU7CmV4dGVybiBjaGFyICpvdXRzdHI7CmV4dGVybiBmbG9hdCB4c2l6ZSwgeXNpemU7
CgoKc3RhdGljIGRvdWJsZSB0ZXJtX3BvaW50c2l6ZTsKCnN0YXRpYyB2b2lkIHRlcm1fc3VzcGVu
ZCAodm9pZCk7CnN0YXRpYyB2b2lkIHRlcm1fY2xvc2Vfb3V0cHV0ICh2b2lkKTsKc3RhdGljIHZv
aWQgbnVsbF9saW5ld2lkdGggKGRvdWJsZSk7Cgp2b2lkIGRvX3BvaW50ICh1bnNpZ25lZCBpbnQg
eCwgdW5zaWduZWQgaW50IHksIGludCBudW1iZXIpOwp2b2lkIGRvX3BvaW50c2l6ZSAoZG91Ymxl
IHNpemUpOwp2b2lkIGxpbmVfYW5kX3BvaW50ICh1bnNpZ25lZCBpbnQgeCwgdW5zaWduZWQgaW50
IHksIGludCBudW1iZXIpOwp2b2lkIGRvX2Fycm93ICh1bnNpZ25lZCBpbnQgc3gsIHVuc2lnbmVk
IGludCBzeSwgdW5zaWduZWQgaW50IGV4LCB1bnNpZ25lZCBpbnQgZXksIGludCBoZWFkKTsKIyAx
NDggInRlcm0uYyIKc3RhdGljIGludCB1bml4cGxvdCA9IDA7CiMgMTY2ICJ0ZXJtLmMiCnN0YXRp
YyBUQk9PTEVBTiBwaXBlX29wZW4gPSAwOwoKCnN0YXRpYyB2b2lkIHRlcm1fY2xvc2Vfb3V0cHV0
KCkKewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKCiAgICBv
cGVuZWRfYmluYXJ5ID0gMDsKCiAgICBpZiAoIW91dHN0cikKICAgICAgICByZXR1cm47CgoKICAg
IGlmIChwaXBlX29wZW4pIHsKICAgICAgICAodm9pZCkgcGNsb3NlKGdwb3V0ZmlsZSk7CiAgICAg
ICAgcGlwZV9vcGVuID0gMDsKICAgIH0gZWxzZQoKCgoKCgogICAgICAgICh2b2lkKSBmY2xvc2Uo
Z3BvdXRmaWxlKTsKCiAgICBncG91dGZpbGUgPSBzdGRvdXQ7CiAgICBmcmVlKG91dHN0cik7CiAg
ICBvdXRzdHIgPSAoKHZvaWQgKikwKTsKfQojIDIwNSAidGVybS5jIgp2b2lkIHRlcm1fc2V0X291
dHB1dChkZXN0KQpjaGFyICpkZXN0Owp7CiAgICBGSUxFICpmOwoKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgKCh2b2lkKSAoKGRlc3QgPT0gKCh2b2lkICop
MCkgfHwgZGVzdCAhPSBvdXRzdHIpID8gMCA6IChfX2Fzc2VydF9mYWlsICgiZGVzdCA9PSAoKHZv
aWQgKikwKSB8fCBkZXN0ICE9IG91dHN0ciIsICJ0ZXJtLmMiLCAyMTEsIF9fUFJFVFRZX0ZVTkNU
SU9OX18pLCAwKSkpOwoKICAgIGlmIChtdWx0aXBsb3QpIHsKICAgICAgICBmcHV0cygiSW4gbXVs
dGlwbG90bW9kZSB5b3UgY2FuJ3QgY2hhbmdlIHRoZSBvdXRwdXRcbiIsIHN0ZGVycik7CiAgICAg
ICAgcmV0dXJuOwogICAgfQogICAgaWYgKHRlcm0gJiYgdGVybV9pbml0aWFsaXNlZCkgewogICAg
ICAgICgqdGVybS0+cmVzZXQpICgpOwogICAgICAgIHRlcm1faW5pdGlhbGlzZWQgPSAwOwogICAg
fQogICAgaWYgKGRlc3QgPT0gKCh2b2lkICopMCkpIHsKICAgICAgICBVUF9yZWRpcmVjdCg0KTsK
ICAgICAgICB0ZXJtX2Nsb3NlX291dHB1dCgpOwogICAgfSBlbHNlIHsKCgogICAgICAgIGlmICgq
ZGVzdCA9PSAnfCcpIHsKICAgICAgICAgICAgaWYgKChmID0gcG9wZW4oZGVzdCArIDEsICgidyIp
KSkgPT0gKEZJTEUgKikgKCh2b2lkICopMCkpCiAgICAgICAgICAgICAgICAgICAgb3NfZXJyb3Io
ImNhbm5vdCBjcmVhdGUgcGlwZTsgb3V0cHV0IG5vdCBjaGFuZ2VkIiwgY190b2tlbik7CiAgICAg
ICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgcGlwZV9vcGVuID0gMTsKICAgICAg
ICB9IGVsc2UKIyAyNDkgInRlcm0uYyIKICAgICAgICB7CiAgICAgICAgICAgIGlmICh0ZXJtICYm
ICh0ZXJtLT5mbGFncyAmIDQpKSB7CiAgICAgICAgICAgICAgICBmID0gZm9wZW4oZGVzdCwgIndi
Iik7CiAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgZiA9IGZvcGVuKGRlc3QsICJ3
Iik7CgogICAgICAgICAgICBpZiAoZiA9PSAoRklMRSAqKSAoKHZvaWQgKikwKSkKICAgICAgICAg
ICAgICAgIG9zX2Vycm9yKCJjYW5ub3Qgb3BlbiBmaWxlOyBvdXRwdXQgbm90IGNoYW5nZWQiLCBj
X3Rva2VuKTsKICAgICAgICB9CiAgICAgICAgdGVybV9jbG9zZV9vdXRwdXQoKTsKICAgICAgICBn
cG91dGZpbGUgPSBmOwogICAgICAgIG91dHN0ciA9IGRlc3Q7CiAgICAgICAgb3BlbmVkX2JpbmFy
eSA9ICh0ZXJtICYmICh0ZXJtLT5mbGFncyAmIDQpKTsKICAgICAgICBVUF9yZWRpcmVjdCgxKTsK
ICAgIH0KfQoKdm9pZCB0ZXJtX2luaXQoKQp7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgOwoKICAgIGlmICghdGVybSkKICAgICAgICBpbnRfZXJyb3IoIk5vIHRlcm1pbmFs
IGRlZmluZWQiLCAoLTEpKTsKCgoKCgoKCiAgICBpZiAob3V0c3RyICYmCiAgICAgICAgKCgodGVy
bS0+ZmxhZ3MgJiA0KSAmJiAhb3BlbmVkX2JpbmFyeSkgfHwKICAgICAgICAgKCghKHRlcm0tPmZs
YWdzICYgNCkgJiYgb3BlbmVkX2JpbmFyeSkpKSkgewoKCgoKCiAgICAgICAgY2hhciAqdGVtcCA9
IGdwX2FsbG9jKHN0cmxlbihvdXRzdHIpICsgMSwgInRlbXAgZmlsZSBzdHJpbmciKTsKICAgICAg
ICBpZiAodGVtcCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoKICAgICAgICAgICAgKF9fZXh0ZW5z
aW9uX18gKF9fYnVpbHRpbl9jb25zdGFudF9wIChvdXRzdHIpID8gKCgoc2l6ZV90KShjb25zdCB2
b2lkICopKChvdXRzdHIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKG91dHN0cikgPT0g
MSkgJiYgc3RybGVuIChvdXRzdHIpICsgMSA8PSA4ID8gX19zdHJjcHlfc21hbGwgKHRlbXAsIF9f
ZXh0ZW5zaW9uX18gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KG91dHN0cikpWzAgKyAxXSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29u
c3QgY2hhciAqKSAob3V0c3RyKSlbMF0pLCBfX2V4dGVuc2lvbl9fICgoKF9fY29uc3QgdW5zaWdu
ZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChvdXRzdHIpKVs0ICsgMV0gPDwgOCB8ICgoX19j
b25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG91dHN0cikpWzRdKSwgX19l
eHRlbnNpb25fXyAoKCgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop
IChvdXRzdHIpKVswICsgM10gPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikgKG91dHN0cikpWzAgKyAyXSkgPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBj
aGFyICopIChfX2NvbnN0IGNoYXIgKikgKG91dHN0cikpWzAgKyAxXSkgPDwgOCB8ICgoX19jb25z
dCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG91dHN0cikpWzBdKSwgX19leHRl
bnNpb25fXyAoKCgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChv
dXRzdHIpKVs0ICsgM10gPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0
IGNoYXIgKikgKG91dHN0cikpWzQgKyAyXSkgPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFy
ICopIChfX2NvbnN0IGNoYXIgKikgKG91dHN0cikpWzQgKyAxXSkgPDwgOCB8ICgoX19jb25zdCB1
bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG91dHN0cikpWzRdKSwgc3RybGVuIChv
dXRzdHIpICsgMSkgOiAoY2hhciAqKSBtZW1jcHkgKHRlbXAsIG91dHN0ciwgc3RybGVuIChvdXRz
dHIpICsgMSkpIDogc3RyY3B5ICh0ZW1wLCBvdXRzdHIpKSk7CiAgICAgICAgICAgIHRlcm1fc2V0
X291dHB1dCh0ZW1wKTsKICAgICAgICB9IGVsc2UKICAgICAgICAgICAgZnB1dHMoIkNhbm5vdCBy
ZW9wZW4gb3V0cHV0IGZpbGUgaW4gYmluYXJ5Iiwgc3RkZXJyKTsKCiAgICB9CiMgMzA3ICJ0ZXJt
LmMiCiAgICBpZiAoIXRlcm1faW5pdGlhbGlzZWQgfHwgdGVybV9mb3JjZV9pbml0KSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAg
ICgqdGVybS0+aW5pdCkgKCk7CiAgICAgICAgdGVybV9pbml0aWFsaXNlZCA9IDE7CiAgICB9Cn0K
Cgp2b2lkIHRlcm1fc3RhcnRfcGxvdCgpCnsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA7CgogICAgaWYgKCF0ZXJtX2luaXRpYWxpc2VkKQogICAgICAgIHRlcm1f
aW5pdCgpOwoKICAgIGlmICghdGVybV9ncmFwaGljcykgewogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgKCp0ZXJtLT5ncmFw
aGljcykgKCk7CiAgICAgICAgdGVybV9ncmFwaGljcyA9IDE7CiAgICB9IGVsc2UgaWYgKG11bHRp
cGxvdCAmJiB0ZXJtX3N1c3BlbmRlZCkgewogICAgICAgIGlmICh0ZXJtLT5yZXN1bWUpIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7
CiAgICAgICAgICAgICgqdGVybS0+cmVzdW1lKSAoKTsKICAgICAgICB9CiAgICAgICAgdGVybV9z
dXNwZW5kZWQgPSAwOwogICAgfQp9Cgp2b2lkIHRlcm1fZW5kX3Bsb3QoKQp7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKCiAgICBpZiAoIXRlcm1faW5pdGlhbGlz
ZWQpCiAgICAgICAgcmV0dXJuOwoKICAgIGlmICghbXVsdGlwbG90KSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICgqdGVybS0+
dGV4dCkgKCk7CiAgICAgICAgdGVybV9ncmFwaGljcyA9IDA7CiAgICB9CgoKCgoKCiAgICAgICAg
KHZvaWQpIGZmbHVzaChncG91dGZpbGUpOwp9Cgp2b2lkIHRlcm1fc3RhcnRfbXVsdGlwbG90KCkK
ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAg
aWYgKG11bHRpcGxvdCkKICAgICAgICB0ZXJtX2VuZF9tdWx0aXBsb3QoKTsKCiAgICBtdWx0aXBs
b3QgPSAxOwogICAgdGVybV9zdGFydF9wbG90KCk7Cn0KCnZvaWQgdGVybV9lbmRfbXVsdGlwbG90
KCkKewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAg
IGlmICghbXVsdGlwbG90KQogICAgICAgIHJldHVybjsKCiAgICBpZiAodGVybV9zdXNwZW5kZWQp
IHsKICAgICAgICBpZiAodGVybS0+cmVzdW1lKQogICAgICAgICAgICAoKnRlcm0tPnJlc3VtZSkg
KCk7CiAgICAgICAgdGVybV9zdXNwZW5kZWQgPSAwOwogICAgfQogICAgbXVsdGlwbG90ID0gMDsK
CiAgICB0ZXJtX2VuZF9wbG90KCk7Cn0KCgoKc3RhdGljIHZvaWQgdGVybV9zdXNwZW5kKCkKewog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgIGlmICh0ZXJtX2lu
aXRpYWxpc2VkICYmICF0ZXJtX3N1c3BlbmRlZCAmJiB0ZXJtLT5zdXNwZW5kKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAg
ICgqdGVybS0+c3VzcGVuZCkgKCk7CiAgICAgICAgdGVybV9zdXNwZW5kZWQgPSAxOwogICAgfQp9
Cgp2b2lkIHRlcm1fcmVzZXQoKQp7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDsKCiAgICBpZiAoIXRlcm1faW5pdGlhbGlzZWQpCiAgICAgICAgcmV0dXJuOwoKICAgIGlm
ICh0ZXJtX3N1c3BlbmRlZCkgewogICAgICAgIGlmICh0ZXJtLT5yZXN1bWUpIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAg
ICAgICAgICgqdGVybS0+cmVzdW1lKSAoKTsKICAgICAgICB9CiAgICAgICAgdGVybV9zdXNwZW5k
ZWQgPSAwOwogICAgfQogICAgaWYgKHRlcm1fZ3JhcGhpY3MpIHsKICAgICAgICAoKnRlcm0tPnRl
eHQpICgpOwogICAgICAgIHRlcm1fZ3JhcGhpY3MgPSAwOwogICAgfQogICAgaWYgKHRlcm1faW5p
dGlhbGlzZWQpIHsKICAgICAgICAoKnRlcm0tPnJlc2V0KSAoKTsKICAgICAgICB0ZXJtX2luaXRp
YWxpc2VkID0gMDsKICAgIH0KfQoKdm9pZCB0ZXJtX2FwcGx5X2xwX3Byb3BlcnRpZXMobHApCnN0
cnVjdCBscF9zdHlsZV90eXBlICpscDsKewojIDQyOSAidGVybS5jIgogICAgaWYgKGxwLT5wb2lu
dGZsYWcpIHsKCgoKCgogICAgICAgICgqdGVybS0+cG9pbnRzaXplKSAobHAtPnBfc2l6ZSk7CiAg
ICB9CgoKCgogICAgKCp0ZXJtLT5saW5ld2lkdGgpIChscC0+bF93aWR0aCk7CiAgICAoKnRlcm0t
PmxpbmV0eXBlKSAobHAtPmxfdHlwZSk7Cn0KCgoKdm9pZCB0ZXJtX2NoZWNrX211bHRpcGxvdF9v
a2F5KGZfaW50ZXJhY3RpdmUpClRCT09MRUFOIGZfaW50ZXJhY3RpdmU7CnsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7Cgog
ICAgaWYgKCF0ZXJtX2luaXRpYWxpc2VkKQogICAgICAgIHJldHVybjsKIyA0NjIgInRlcm0uYyIK
ICAgIGlmICghZl9pbnRlcmFjdGl2ZSB8fCAodGVybS0+ZmxhZ3MgJiAxKSB8fAogICAgICAgICgo
Z3BvdXRmaWxlICE9IHN0ZG91dCkgJiYgISh0ZXJtLT5mbGFncyAmIDIpKQogICAgICAgICkgewoK
ICAgICAgICB0ZXJtX3N1c3BlbmQoKTsKICAgICAgICByZXR1cm47CiAgICB9CgoKICAgIHRlcm1f
ZW5kX211bHRpcGxvdCgpOwoKCgoKCgogICAgaWYgKHRlcm0tPmZsYWdzICYgMikKICAgICAgICBp
bnRfZXJyb3IoIlRoaXMgdGVybWluYWwgZG9lcyBub3Qgc3VwcG9ydCBtdWx0aXBsb3QiLCAoLTEp
KTsKICAgIGVsc2UKICAgICAgICBpbnRfZXJyb3IoIk11c3Qgc2V0IG91dHB1dCB0byBhIGZpbGUg
b3IgcHV0IGFsbCBtdWx0aXBsb3QgY29tbWFuZHMgb24gb25lIGlucHV0IGxpbmUiLCAoLTEpKTsK
fQoKdm9pZCBkb19wb2ludCh4LCB5LCBudW1iZXIpCnVuc2lnbmVkIGludCB4LCB5OwppbnQgbnVt
YmVyOwp7CiAgICByZWdpc3RlciBpbnQgaHRpYywgdnRpYzsKICAgIHJlZ2lzdGVyIHN0cnVjdCBU
RVJNRU5UUlkgKnQgPSB0ZXJtOwoKICAgIGlmIChudW1iZXIgPCAwKSB7CiAgICAgICAgKCp0LT5t
b3ZlKSAoeCwgeSk7CiAgICAgICAgKCp0LT52ZWN0b3IpICh4LCB5KTsKICAgICAgICByZXR1cm47
CiAgICB9CiAgICBudW1iZXIgJT0gNjsKCiAgICBodGljID0gKHRlcm1fcG9pbnRzaXplICogdC0+
aF90aWMgLyAyKTsKICAgIHZ0aWMgPSAodGVybV9wb2ludHNpemUgKiB0LT52X3RpYyAvIDIpOwoK
ICAgIHN3aXRjaCAobnVtYmVyKSB7CiAgICBjYXNlIDA6CiAgICAgICAgKCp0LT5tb3ZlKSAoeCAt
IGh0aWMsIHkpOwogICAgICAgICgqdC0+dmVjdG9yKSAoeCwgeSAtIHZ0aWMpOwogICAgICAgICgq
dC0+dmVjdG9yKSAoeCArIGh0aWMsIHkpOwogICAgICAgICgqdC0+dmVjdG9yKSAoeCwgeSArIHZ0
aWMpOwogICAgICAgICgqdC0+dmVjdG9yKSAoeCAtIGh0aWMsIHkpOwogICAgICAgICgqdC0+bW92
ZSkgKHgsIHkpOwogICAgICAgICgqdC0+dmVjdG9yKSAoeCwgeSk7CiAgICAgICAgYnJlYWs7CiAg
ICBjYXNlIDE6CiAgICAgICAgKCp0LT5tb3ZlKSAoeCAtIGh0aWMsIHkpOwogICAgICAgICgqdC0+
dmVjdG9yKSAoeCAtIGh0aWMsIHkpOwogICAgICAgICgqdC0+dmVjdG9yKSAoeCArIGh0aWMsIHkp
OwogICAgICAgICgqdC0+bW92ZSkgKHgsIHkgLSB2dGljKTsKICAgICAgICAoKnQtPnZlY3Rvcikg
KHgsIHkgLSB2dGljKTsKICAgICAgICAoKnQtPnZlY3RvcikgKHgsIHkgKyB2dGljKTsKICAgICAg
ICBicmVhazsKICAgIGNhc2UgMjoKICAgICAgICAoKnQtPm1vdmUpICh4IC0gaHRpYywgeSAtIHZ0
aWMpOwogICAgICAgICgqdC0+dmVjdG9yKSAoeCAtIGh0aWMsIHkgLSB2dGljKTsKICAgICAgICAo
KnQtPnZlY3RvcikgKHggKyBodGljLCB5IC0gdnRpYyk7CiAgICAgICAgKCp0LT52ZWN0b3IpICh4
ICsgaHRpYywgeSArIHZ0aWMpOwogICAgICAgICgqdC0+dmVjdG9yKSAoeCAtIGh0aWMsIHkgKyB2
dGljKTsKICAgICAgICAoKnQtPnZlY3RvcikgKHggLSBodGljLCB5IC0gdnRpYyk7CiAgICAgICAg
KCp0LT5tb3ZlKSAoeCwgeSk7CiAgICAgICAgKCp0LT52ZWN0b3IpICh4LCB5KTsKICAgICAgICBi
cmVhazsKICAgIGNhc2UgMzoKICAgICAgICAoKnQtPm1vdmUpICh4IC0gaHRpYywgeSAtIHZ0aWMp
OwogICAgICAgICgqdC0+dmVjdG9yKSAoeCAtIGh0aWMsIHkgLSB2dGljKTsKICAgICAgICAoKnQt
PnZlY3RvcikgKHggKyBodGljLCB5ICsgdnRpYyk7CiAgICAgICAgKCp0LT5tb3ZlKSAoeCAtIGh0
aWMsIHkgKyB2dGljKTsKICAgICAgICAoKnQtPnZlY3RvcikgKHggLSBodGljLCB5ICsgdnRpYyk7
CiAgICAgICAgKCp0LT52ZWN0b3IpICh4ICsgaHRpYywgeSAtIHZ0aWMpOwogICAgICAgIGJyZWFr
OwogICAgY2FzZSA0OgogICAgICAgICgqdC0+bW92ZSkgKHgsIHkgKyAoNCAqIHZ0aWMgLyAzKSk7
CiAgICAgICAgKCp0LT52ZWN0b3IpICh4IC0gKDQgKiBodGljIC8gMyksIHkgLSAoMiAqIHZ0aWMg
LyAzKSk7CiAgICAgICAgKCp0LT52ZWN0b3IpICh4ICsgKDQgKiBodGljIC8gMyksIHkgLSAoMiAq
IHZ0aWMgLyAzKSk7CiAgICAgICAgKCp0LT52ZWN0b3IpICh4LCB5ICsgKDQgKiB2dGljIC8gMykp
OwogICAgICAgICgqdC0+bW92ZSkgKHgsIHkpOwogICAgICAgICgqdC0+dmVjdG9yKSAoeCwgeSk7
CiAgICAgICAgYnJlYWs7CiAgICBjYXNlIDU6CiAgICAgICAgKCp0LT5tb3ZlKSAoeCAtIGh0aWMs
IHkpOwogICAgICAgICgqdC0+dmVjdG9yKSAoeCAtIGh0aWMsIHkpOwogICAgICAgICgqdC0+dmVj
dG9yKSAoeCArIGh0aWMsIHkpOwogICAgICAgICgqdC0+bW92ZSkgKHgsIHkgLSB2dGljKTsKICAg
ICAgICAoKnQtPnZlY3RvcikgKHgsIHkgLSB2dGljKTsKICAgICAgICAoKnQtPnZlY3RvcikgKHgs
IHkgKyB2dGljKTsKICAgICAgICAoKnQtPm1vdmUpICh4IC0gaHRpYywgeSAtIHZ0aWMpOwogICAg
ICAgICgqdC0+dmVjdG9yKSAoeCAtIGh0aWMsIHkgLSB2dGljKTsKICAgICAgICAoKnQtPnZlY3Rv
cikgKHggKyBodGljLCB5ICsgdnRpYyk7CiAgICAgICAgKCp0LT5tb3ZlKSAoeCAtIGh0aWMsIHkg
KyB2dGljKTsKICAgICAgICAoKnQtPnZlY3RvcikgKHggLSBodGljLCB5ICsgdnRpYyk7CiAgICAg
ICAgKCp0LT52ZWN0b3IpICh4ICsgaHRpYywgeSAtIHZ0aWMpOwogICAgICAgIGJyZWFrOwogICAg
fQp9Cgp2b2lkIGRvX3BvaW50c2l6ZShzaXplKQpkb3VibGUgc2l6ZTsKewogICAgdGVybV9wb2lu
dHNpemUgPSAoc2l6ZSA+PSAwID8gc2l6ZSA6IDEpOwp9CgoKCgoKdm9pZCBsaW5lX2FuZF9wb2lu
dCh4LCB5LCBudW1iZXIpCnVuc2lnbmVkIGludCB4LCB5OwppbnQgbnVtYmVyOwp7CgoKCiAgICAo
KnRlcm0tPmxpbmV0eXBlKSAoMCk7CiAgICBkb19wb2ludCh4LCB5LCBudW1iZXIpOwp9CiMgNjA0
ICJ0ZXJtLmMiCnZvaWQgZG9fYXJyb3coc3gsIHN5LCBleCwgZXksIGhlYWQpCnVuc2lnbmVkIGlu
dCBzeCwgc3k7CnVuc2lnbmVkIGludCBleCwgZXk7ClRCT09MRUFOIGhlYWQ7CnsKICAgIHJlZ2lz
dGVyIHN0cnVjdCBURVJNRU5UUlkgKnQgPSB0ZXJtOwogICAgZmxvYXQgbGVuX3RpYyA9ICgoZG91
YmxlKSAodC0+aF90aWMgKyB0LT52X3RpYykpIC8gMi4wOwoKCiAgICBkb3VibGUgZHggPSAoZG91
YmxlKSBzeCAtIChkb3VibGUpIGV4OwogICAgZG91YmxlIGR5ID0gKGRvdWJsZSkgc3kgLSAoZG91
YmxlKSBleTsKICAgIGRvdWJsZSBsZW5fYXJyb3cgPSBzcXJ0KGR4ICogZHggKyBkeSAqIGR5KTsK
CgogICAgKCp0LT5tb3ZlKSAoc3gsIHN5KTsKICAgICgqdC0+dmVjdG9yKSAoZXgsIGV5KTsKCgoK
CgogICAgaWYgKGhlYWQgJiYgZmFicyhsZW5fYXJyb3cpID49IDIuMjIwNDQ2MDQ5MjUwMzEzMWUt
MTYpIHsKCiAgICAgICAgZG91YmxlIGNvZWZmX3Nob3J0ZXN0ID0gbGVuX3RpYyAqICgwLjMpIC8g
bGVuX2Fycm93OwogICAgICAgIGRvdWJsZSBjb2VmZl9sb25nZXN0ID0gbGVuX3RpYyAqICgyLjAp
IC8gbGVuX2Fycm93OwogICAgICAgIGRvdWJsZSBoZWFkX2NvZWZmID0gKCAoY29lZmZfc2hvcnRl
c3QpID4gKCggKCgwLjMpKSA8IChjb2VmZl9sb25nZXN0KSA/ICgoMC4zKSkgOiAoY29lZmZfbG9u
Z2VzdCkgKSkgPyAoY29lZmZfc2hvcnRlc3QpIDogKCggKCgwLjMpKSA8IChjb2VmZl9sb25nZXN0
KSA/ICgoMC4zKSkgOiAoY29lZmZfbG9uZ2VzdCkgKSkgKTsKCgoKICAgICAgICBpbnQgeCwgeTsK
CiAgICAgICAgeCA9IChpbnQpIChleCArICgoMC45NjU5MykgKiBkeCAtICgwLjI1ODgyKSAqIGR5
KSAqIGhlYWRfY29lZmYpOwogICAgICAgIHkgPSAoaW50KSAoZXkgKyAoKDAuMjU4ODIpICogZHgg
KyAoMC45NjU5MykgKiBkeSkgKiBoZWFkX2NvZWZmKTsKICAgICAgICAoKnQtPm1vdmUpICh4LCB5
KTsKICAgICAgICAoKnQtPnZlY3RvcikgKGV4LCBleSk7CgogICAgICAgIHggPSAoaW50KSAoZXgg
KyAoKDAuOTY1OTMpICogZHggKyAoMC4yNTg4MikgKiBkeSkgKiBoZWFkX2NvZWZmKTsKICAgICAg
ICB5ID0gKGludCkgKGV5ICsgKC0oMC4yNTg4MikgKiBkeCArICgwLjk2NTkzKSAqIGR5KSAqIGhl
YWRfY29lZmYpOwogICAgICAgICgqdC0+dmVjdG9yKSAoeCwgeSk7CiAgICB9Cn0KIyA2OTggInRl
cm0uYyIKIyAxICJ0ZXJtLmgiIDEKIyAyMjAgInRlcm0uaCIKIyAxICJ0ZXJtL2FlZC50cm0iIDEK
IyA1NSAidGVybS9hZWQudHJtIgojIDEgInRlcm0vZHJpdmVyLmgiIDEKIyA1NiAidGVybS9hZWQu
dHJtIiAyCgoKCgoKCgpzdGF0aWMgdm9pZCBBRURfaW5pdCAodm9pZCk7CnN0YXRpYyB2b2lkIEFF
RF9ncmFwaGljcyAodm9pZCk7CnN0YXRpYyB2b2lkIEFFRF90ZXh0ICh2b2lkKTsKc3RhdGljIHZv
aWQgQUVEX2xpbmV0eXBlIChpbnQgbGluZXR5cGUpOwpzdGF0aWMgdm9pZCBBRURfbW92ZSAodW5z
aWduZWQgaW50IHgsIHVuc2lnbmVkIGludCB5KTsKc3RhdGljIHZvaWQgQUVEX3ZlY3RvciAodW5z
aWduZWQgaW50IHgsIHVuc2lnbmVkIGludCB5KTsKc3RhdGljIHZvaWQgQUVEX3B1dF90ZXh0ICh1
bnNpZ25lZCBpbnQgeCwgdW5zaWduZWQgaW50IHksIGNoYXIgc3RyW10pOwpzdGF0aWMgdm9pZCBB
RURfcmVzZXQgKHZvaWQpOwojIDkyICJ0ZXJtL2FlZC50cm0iCnN0YXRpYyB2b2lkIEFFRF9pbml0
KCkKewogICAgZnB1dHMoIlwwMzNTRU4zRERETi5TRUMuNy5TQ1QuMC4xLjgwLjgwLjkwLlNCQy4w
LkFBVjIuTU9WLjAuOS5DSFIuMC5GRkQiLCBncG91dGZpbGUpOwojIDEwNCAidGVybS9hZWQudHJt
Igp9CgoKc3RhdGljIHZvaWQgQUVEX2dyYXBoaWNzKCkKewogICAgZnB1dHMoIlwwMzNGRkRcMDMz
IiwgZ3BvdXRmaWxlKTsKfQoKCnN0YXRpYyB2b2lkIEFFRF90ZXh0KCkKewogICAgZnB1dHMoIlww
MzNNT1YuMC45LlNFQy43LlhYWCIsIGdwb3V0ZmlsZSk7Cn0KCgoKc3RhdGljIHZvaWQgQUVEX2xp
bmV0eXBlKGxpbmV0eXBlKQppbnQgbGluZXR5cGU7CnsKICAgIHN0YXRpYyBpbnQgY29sb3JbMiAr
IDldID0geyA3LCAxLCA2LCAyLCAzLCA1LCAxLCA2LCAyLCAzLCA1IH07CiAgICBzdGF0aWMgaW50
IHR5cGVbMiArIDldID0geyA4NSwgODUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCA4NSwgODUs
IDg1LCA4NSB9OwoKICAgIGlmIChsaW5ldHlwZSA+PSAxMCkKICAgICAgICBsaW5ldHlwZSAlPSAx
MDsKCiAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgIlwwMzNTTFMlZC4yNTUuXDAzM1NFQyVkLiIsCgoK
ICAgICAgICAgICAgdHlwZVtsaW5ldHlwZSArIDJdLAogICAgICAgICAgICBjb2xvcltsaW5ldHlw
ZSArIDJdKTsKfQoKCgpzdGF0aWMgdm9pZCBBRURfbW92ZSh4LCB5KQp1bnNpZ25lZCBpbnQgeCwg
eTsKewogICAgZnByaW50ZihncG91dGZpbGUsICJcMDMzTU9WJWQuJWQuIiwgeCwgeSk7Cn0KCgpz
dGF0aWMgdm9pZCBBRURfdmVjdG9yKHgsIHkpCnVuc2lnbmVkIGludCB4LCB5Owp7CiAgICBmcHJp
bnRmKGdwb3V0ZmlsZSwgIlwwMzNEVkElZC4lZC4iLCB4LCB5KTsKfQoKCnN0YXRpYyB2b2lkIEFF
RF9wdXRfdGV4dCh4LCB5LCBzdHIpCnVuc2lnbmVkIGludCB4LCB5OwpjaGFyIHN0cltdOwp7CiAg
ICBBRURfbW92ZSh4LCB5IC0gMTMgLyAyICsgMik7CiAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgIlww
MzNYWFglc1wwMzMiLCBzdHIpOwp9CgoKCgoKc3RhdGljIHZvaWQgQUVEX3Jlc2V0KCkKewogICAg
ZnB1dHMoIlwwMzNTQ1QwLjEuMC4wLjAuU0JDLjAuRkZEIiwgZ3BvdXRmaWxlKTsKfQojIDIyMSAi
dGVybS5oIiAyCiMgMjMxICJ0ZXJtLmgiCiMgMSAidGVybS9ncGljLnRybSIgMQojIDU2ICJ0ZXJt
L2dwaWMudHJtIgojIDEgInRlcm0vZHJpdmVyLmgiIDEKIyA1NyAidGVybS9ncGljLnRybSIgMgoK
CgoKCgpzdGF0aWMgdm9pZCBHUElDX29wdGlvbnMgKHZvaWQpOwpzdGF0aWMgdm9pZCBHUElDX2lu
aXQgKHZvaWQpOwpzdGF0aWMgdm9pZCBHUElDX2dyYXBoaWNzICh2b2lkKTsKc3RhdGljIHZvaWQg
R1BJQ190ZXh0ICh2b2lkKTsKc3RhdGljIHZvaWQgR1BJQ19saW5ldHlwZSAoaW50IGxpbmV0eXBl
KTsKc3RhdGljIHZvaWQgR1BJQ19tb3ZlICh1bnNpZ25lZCBpbnQgeCwgdW5zaWduZWQgaW50IHkp
OwpzdGF0aWMgdm9pZCBHUElDX3ZlY3RvciAodW5zaWduZWQgaW50IHV4LCB1bnNpZ25lZCBpbnQg
dXkpOwpzdGF0aWMgdm9pZCBHUElDX2Fycm93ICh1bnNpZ25lZCBpbnQgc3gsIHVuc2lnbmVkIGlu
dCBzeSwgdW5zaWduZWQgaW50IGV4LCB1bnNpZ25lZCBpbnQgZXksIFRCT09MRUFOIGhlYWQpOwoK
CnN0YXRpYyB2b2lkIEdQSUNfcHV0X3RleHQgKHVuc2lnbmVkIGludCB4LCB1bnNpZ25lZCBpbnQg
eSwgY2hhciBzdHJbXSk7CgpzdGF0aWMgaW50IEdQSUNfanVzdGlmeV90ZXh0IChlbnVtIEpVU1RJ
RlkgbW9kZSk7CnN0YXRpYyBpbnQgR1BJQ190ZXh0X2FuZ2xlIChpbnQgYW5nKTsKc3RhdGljIHZv
aWQgR1BJQ19yZXNldCAodm9pZCk7CiMgOTggInRlcm0vZ3BpYy50cm0iCnZvaWQgR1BJQ19jbG9z
ZV9saW5lICh2b2lkKTsKc3RhdGljIGZsb2F0IEdQSUNfeCwgR1BJQ195OwpzdGF0aWMgdW5zaWdu
ZWQgaW50IEdQSUNfbHR5cGU7CmVudW0gSlVTVElGWSBHUElDX2p1c3RpZnkgPSBMRUZUOwoKCgpz
dGF0aWMgY2hhciAqR1BJQ19saW5lc1tdID0KewogICAgInRoaWNrbmVzcyAxLjAiLAogICAgIiIs
CiAgICAiIiwKICAgICJkb3R0ZWQiLAogICAgImRhc2hlZCAwLjA1IiwKICAgICJkYXNoZWQgMC4w
NzUiLAp9OwoKCgoKCnN0YXRpYyBpbnQgR1BJQ19saW5lY291bnQgPSAwOwoKCnN0YXRpYyB2b2lk
IEdQSUNfb3B0aW9ucygpCnsKICAgIGZsb2F0IHgsIHk7CiAgICBzdHJ1Y3QgdmFsdWUgYTsKCiAg
ICBHUElDX3ggPSAwOwogICAgR1BJQ195ID0gMDsKCiAgICBpZiAoIShjX3Rva2VuID49IG51bV90
b2tlbnMgfHwgZXF1YWxzKGNfdG9rZW4sIjsiKSkpIHsKICAgICAgICB4ID0gcmVhbChjb25zdF9l
eHByZXNzKCZhKSk7CiAgICAgICAgaWYgKCEoY190b2tlbiA+PSBudW1fdG9rZW5zIHx8IGVxdWFs
cyhjX3Rva2VuLCI7IikpKSB7CiAgICAgICAgICAgIHkgPSByZWFsKGNvbnN0X2V4cHJlc3MoJmEp
KTsKICAgICAgICAgICAgR1BJQ194ID0geDsKICAgICAgICAgICAgR1BJQ195ID0geTsKICAgICAg
ICB9CiAgICB9CiAgICBzcHJpbnRmKHRlcm1fb3B0aW9ucywgIk9yaWdpbiBpcyBhdCAoJWYsJWYp
IiwgR1BJQ194LCBHUElDX3kpOwoKfQoKc3RhdGljIHZvaWQgR1BJQ19pbml0KCkKewogICAgR1BJ
Q19saW5ldHlwZSgtMSk7CiAgICBmcHV0cygiLlxcXCJHTlVQTE9UOiBHUk9GRiBwaWN0dXJlIHVz
aW5nIHRoZSBncGljIHByZXByb2Nlc3NvclxuIiwgZ3BvdXRmaWxlKTsKfQoKCgpzdGF0aWMgdm9p
ZCBHUElDX2dyYXBoaWNzKCkKewogICAgcmVnaXN0ZXIgc3RydWN0IFRFUk1FTlRSWSAqdCA9IHRl
cm07CgogICAgZnByaW50ZihncG91dGZpbGUsICIuUFMgJWYgJWZcbiIsICgoZmxvYXQpdC0+eG1h
eCkvKChmbG9hdCkoMzAwKSksCiAgICAgICAgICAgICgoZmxvYXQpdC0+eW1heCkvKChmbG9hdCko
MzAwKSkpOwogICAgZnByaW50ZihncG91dGZpbGUsICJ4PSVmOyB5PSVmXG4iLCBHUElDX3gsIEdQ
SUNfeSk7Cn0KCgpzdGF0aWMgdm9pZCBHUElDX3RleHQoKQp7CiAgICBHUElDX2Nsb3NlX2xpbmUo
KTsKICAgIGZwdXRzKCIuUEVcbiIsIGdwb3V0ZmlsZSk7Cn0KCnN0YXRpYyB2b2lkIEdQSUNfbGlu
ZXR5cGUobGluZXR5cGUpCmludCBsaW5ldHlwZTsKewogICAgaWYgKGxpbmV0eXBlID49IChzaXpl
b2YoR1BJQ19saW5lcykvc2l6ZW9mKGNoYXIgKikpIC0gMikKICAgICAgICBsaW5ldHlwZSAlPSAo
KHNpemVvZihHUElDX2xpbmVzKS9zaXplb2YoY2hhciAqKSkgLSAyKTsKICAgIEdQSUNfbHR5cGUg
PSBsaW5ldHlwZTsKfQoKdm9pZCBHUElDX2Nsb3NlX2xpbmUoKQp7CiAgICBpZiAoR1BJQ19saW5l
Y291bnQgPiAwKSB7CiAgICAgICAgZnB1dHMoIjsgcmVzZXQgbGluZXdpZFxuIiwgZ3BvdXRmaWxl
KTsKICAgICAgICBHUElDX2xpbmVjb3VudCA9IDA7CiAgICB9Cn0KCnN0YXRpYyB2b2lkIEdQSUNf
bW92ZSh4LCB5KQp1bnNpZ25lZCBpbnQgeCwgeTsKewogICAgR1BJQ19jbG9zZV9saW5lKCk7CiAg
ICBmcHJpbnRmKGdwb3V0ZmlsZSwgIm1vdmUgdG8gKHgrJWYseSslZilcbiIsICgoZmxvYXQpeCkv
KChmbG9hdCkoMzAwKSksICgoZmxvYXQpeSkvKChmbG9hdCkoMzAwKSkpOwogICAgR1BJQ19saW5l
Y291bnQgPSAxOwp9CgoKc3RhdGljIHZvaWQgR1BJQ192ZWN0b3IodXgsIHV5KQp1bnNpZ25lZCBp
bnQgdXgsIHV5Owp7CiAgICBpZiAoR1BJQ19saW5lY291bnQgPT0gMSkgewogICAgICAgIGZwcmlu
dGYoZ3BvdXRmaWxlLCAibGluZSAlcyB0byAoeCslZix5KyVmKSIsCiAgICAgICAgICAgICAgICBH
UElDX2xpbmVzW0dQSUNfbHR5cGUgKyAyXSwKICAgICAgICAgICAgICAgICgoZmxvYXQpdXgpLygo
ZmxvYXQpKDMwMCkpLCAoKGZsb2F0KXV5KS8oKGZsb2F0KSgzMDApKSk7CiAgICB9IGVsc2Ugewog
ICAgICAgIGZwcmludGYoZ3BvdXRmaWxlLCAiIFxcXG4gICB0aGVuIHRvICh4KyVmLHkrJWYpIiwK
CgogICAgICAgICAgICAgICAgKChmbG9hdCl1eCkvKChmbG9hdCkoMzAwKSksICgoZmxvYXQpdXkp
LygoZmxvYXQpKDMwMCkpKTsKICAgIH0KICAgIEdQSUNfbGluZWNvdW50Kys7Cn0KCgpzdGF0aWMg
dm9pZCBHUElDX2Fycm93KHN4LCBzeSwgZXgsIGV5LCBoZWFkKQp1bnNpZ25lZCBpbnQgc3gsIHN5
LCBleCwgZXk7ClRCT09MRUFOIGhlYWQ7CnsKICAgIEdQSUNfY2xvc2VfbGluZSgpOwogICAgaWYg
KGhlYWQpIHsKICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgImFycm93aGVhZD03OyBhcnJvdyBm
cm9tIHgrJWYseSslZiB0byB4KyVmLHkrJWZcbiIsCiAgICAgICAgICAgICAgICAoKGZsb2F0KXN4
KS8oKGZsb2F0KSgzMDApKSwgKChmbG9hdClzeSkvKChmbG9hdCkoMzAwKSksICgoZmxvYXQpZXgp
LygoZmxvYXQpKDMwMCkpLCAoKGZsb2F0KWV5KS8oKGZsb2F0KSgzMDApKSk7CiAgICB9IGVsc2Ug
ewogICAgICAgIGZwcmludGYoZ3BvdXRmaWxlLCAibGluZSBmcm9tIHgrJWYseSslZiB0byB4KyVm
LHkrJWZcbiIsCiAgICAgICAgICAgICAgICAoKGZsb2F0KXN4KS8oKGZsb2F0KSgzMDApKSwgKChm
bG9hdClzeSkvKChmbG9hdCkoMzAwKSksICgoZmxvYXQpZXgpLygoZmxvYXQpKDMwMCkpLCAoKGZs
b2F0KWV5KS8oKGZsb2F0KSgzMDApKSk7CiAgICB9Cn0KCgpzdGF0aWMgdm9pZCBHUElDX3B1dF90
ZXh0KHgsIHksIHN0cikKdW5zaWduZWQgaW50IHgsIHk7CmNoYXIgc3RyW107CnsKICAgIEdQSUNf
Y2xvc2VfbGluZSgpOwogICAgZnByaW50ZihncG91dGZpbGUsICJcIiVzXCIgIiwgc3RyKTsKICAg
IHN3aXRjaCAoR1BJQ19qdXN0aWZ5KSB7CiAgICBjYXNlIExFRlQ6ewogICAgICAgICAgICBmcHV0
cygibGp1c3QgIiwgZ3BvdXRmaWxlKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAg
Y2FzZSBDRU5UUkU6ewogICAgICAgICAgICBmcHV0cygiICIsIGdwb3V0ZmlsZSk7CiAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgIH0KICAgIGNhc2UgUklHSFQ6ewogICAgICAgICAgICBmcHV0cygi
cmp1c3QgIiwgZ3BvdXRmaWxlKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgfQog
ICAgZnByaW50ZihncG91dGZpbGUsICJhdCB4KyVmLHkrJWZcbiIsICgoZmxvYXQpeCkvKChmbG9h
dCkoMzAwKSksICgoZmxvYXQpeSkvKChmbG9hdCkoMzAwKSkpOwp9CgoKCnN0YXRpYyBpbnQgR1BJ
Q19qdXN0aWZ5X3RleHQobW9kZSkKZW51bSBKVVNUSUZZIG1vZGU7CnsKICAgIEdQSUNfanVzdGlm
eSA9IG1vZGU7CiAgICByZXR1cm4gKDEpOwp9CgpzdGF0aWMgaW50IEdQSUNfdGV4dF9hbmdsZShh
bmcpCmludCBhbmc7CnsKICAgIEdQSUNfY2xvc2VfbGluZSgpOwogICAgcmV0dXJuICgwKTsKfQoK
c3RhdGljIHZvaWQgR1BJQ19yZXNldCgpCnsKICAgIGZmbHVzaChncG91dGZpbGUpOwp9CiMgMjMy
ICJ0ZXJtLmgiIDIKCgojIDEgInRlcm0vcmVnaXMudHJtIiAxCiMgNTEgInRlcm0vcmVnaXMudHJt
IgojIDEgInRlcm0vZHJpdmVyLmgiIDEKIyA1MiAidGVybS9yZWdpcy50cm0iIDIKCgoKCgoKCnN0
YXRpYyB2b2lkIFJFR0lTaW5pdCAodm9pZCk7CnN0YXRpYyB2b2lkIFJFR0lTZ3JhcGhpY3MgKHZv
aWQpOwpzdGF0aWMgdm9pZCBSRUdJU2luaXQgKHZvaWQpOwpzdGF0aWMgdm9pZCBSRUdJU2dyYXBo
aWNzICh2b2lkKTsKc3RhdGljIHZvaWQgUkVHSVN0ZXh0ICh2b2lkKTsKc3RhdGljIHZvaWQgUkVH
SVNsaW5ldHlwZSAoaW50IGxpbmV0eXBlKTsKc3RhdGljIHZvaWQgUkVHSVNtb3ZlICh1bnNpZ25l
ZCBpbnQgeCwgdW5zaWduZWQgaW50IHkpOwpzdGF0aWMgdm9pZCBSRUdJU3ZlY3RvciAodW5zaWdu
ZWQgaW50IHgsIHVuc2lnbmVkIGludCB5KTsKc3RhdGljIHZvaWQgUkVHSVNwdXRfdGV4dCAodW5z
aWduZWQgaW50IHgsIHVuc2lnbmVkIGludCB5LCBjaGFyICpzdHIpOwpzdGF0aWMgaW50IFJFR0lT
dGV4dF9hbmdsZSAoaW50IGFuZyk7CnN0YXRpYyB2b2lkIFJFR0lTcmVzZXQgKHZvaWQpOwpzdGF0
aWMgdm9pZCBSRUdJU29wdGlvbnMgKHZvaWQpOwojIDk0ICJ0ZXJtL3JlZ2lzLnRybSIKc3RhdGlj
IGludCBSRUdJUzE2Y29sb3IgPSAwOwoKc3RhdGljIGludCBSRUdJU2FuZyA9IDA7CgpzdGF0aWMg
dm9pZCBSRUdJU2luaXQoKQp7CiAgICBmcHV0cygiXDAzM1tyXDAzM1syNDsxSCIsIGdwb3V0Zmls
ZSk7CgoKCgp9CgoKCnN0YXRpYyB2b2lkIFJFR0lTZ3JhcGhpY3MoKQp7CiAgICBmcHV0cygiXDAz
M1sySlwwMzNQMXBTKEMwKVMoRSlUKEEwKVxuIiwgZ3BvdXRmaWxlKTsKCgoKCgoKCiAgICAodm9p
ZCkgUkVHSVN0ZXh0X2FuZ2xlKDApOwp9CgoKc3RhdGljIHZvaWQgUkVHSVN0ZXh0KCkKewogICAg
ZnB1dHMoIlwwMzNcXFwwMzNbMjQ7MUgiLCBncG91dGZpbGUpOwoKCgoKfQoKCnN0YXRpYyB2b2lk
IFJFR0lTbGluZXR5cGUobGluZXR5cGUpCmludCBsaW5ldHlwZTsKewoKCiAgICBzdGF0aWMgaW50
IGluXzE2X21hcFsxNSArIDJdID0geyA3LCA3LCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAx
MCwgMTEsIDEyLCAxMywgMTQsIDE1IH07CiAgICBzdGF0aWMgaW50IGx0XzE2X21hcFsxNSArIDJd
ID0geyAxLCA0LCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxIH07
CiAgICBzdGF0aWMgaW50IGluX21hcFs5ICsgMl0gPSB7IDIsIDIsIDMsIDIsIDEsIDMsIDIsIDEs
IDMsIDIsIDEgfTsKICAgIHN0YXRpYyBpbnQgbHRfbWFwWzkgKyAyXSA9IHsgMSwgNCwgMSwgMSwg
MSwgNCwgNCwgNCwgNiwgNiwgNiB9OwoKICAgIGlmICghUkVHSVMxNmNvbG9yKSB7CiAgICAgICAg
aWYgKGxpbmV0eXBlID49IDkpCiAgICAgICAgICAgIGxpbmV0eXBlICU9IDk7CiAgICAgICAgZnBy
aW50ZihncG91dGZpbGUsICJXKEklZClcbiIsIGluX21hcFtsaW5ldHlwZSArIDJdKTsKICAgICAg
ICBmcHJpbnRmKGdwb3V0ZmlsZSwgIlcoUCVkKVxuIiwgbHRfbWFwW2xpbmV0eXBlICsgMl0pOwog
ICAgfSBlbHNlIHsKICAgICAgICBpZiAobGluZXR5cGUgPj0gMTUpCiAgICAgICAgICAgIGxpbmV0
eXBlICU9IDE1OwogICAgICAgIGZwcmludGYoZ3BvdXRmaWxlLCAiVyhJJWQpXG4iLCBpbl8xNl9t
YXBbbGluZXR5cGUgKyAyXSk7CiAgICAgICAgZnByaW50ZihncG91dGZpbGUsICJXKFAlZClcbiIs
IGx0XzE2X21hcFtsaW5ldHlwZSArIDJdKTsKICAgIH0KfQojIDE2OCAidGVybS9yZWdpcy50cm0i
CnN0YXRpYyB2b2lkIFJFR0lTbW92ZSh4LCB5KQp1bnNpZ25lZCBpbnQgeCwgeTsKewogICAgZnBy
aW50ZihncG91dGZpbGUsICJQWyVkLCVkXVxuIiwgeCwgKDQ0MCAtIDEpIC0geSk7Cn0KCgpzdGF0
aWMgdm9pZCBSRUdJU3ZlY3Rvcih4LCB5KQp1bnNpZ25lZCBpbnQgeCwgeTsKewogICAgZnByaW50
ZihncG91dGZpbGUsICJ2W112WyVkLCVkXVxuIiwgeCwgKDQ0MCAtIDEpIC0geSk7Cgp9CgoKCnN0
YXRpYyB2b2lkIFJFR0lTcHV0X3RleHQoeCwgeSwgc3RyKQp1bnNpZ25lZCBpbnQgeCwgeTsKY2hh
ciAqc3RyOwp7CiAgICBpZiAoUkVHSVNhbmcgPT0gMSkKICAgICAgICBSRUdJU21vdmUoeCAtIDIw
IC8gMiAtIDEsIHkpOwogICAgZWxzZQogICAgICAgIFJFR0lTbW92ZSh4LCB5ICsgMjAgLyAyIC0g
MSk7CiAgICAodm9pZCkgX0lPX3B1dGMgKCdUJywgZ3BvdXRmaWxlKTsKICAgICh2b2lkKSBfSU9f
cHV0YyAoJ1wnJywgZ3BvdXRmaWxlKTsKICAgIHdoaWxlICgqc3RyKSB7CiAgICAgICAgKHZvaWQp
IF9JT19wdXRjICgqc3RyLCBncG91dGZpbGUpOwogICAgICAgIGlmICgqc3RyID09ICdcJycpCiAg
ICAgICAgICAgICh2b2lkKSBfSU9fcHV0YyAoJ1wnJywgZ3BvdXRmaWxlKTsKICAgICAgICBzdHIr
KzsKICAgIH0KICAgICh2b2lkKSBfSU9fcHV0YyAoJ1wnJywgZ3BvdXRmaWxlKTsKICAgICh2b2lk
KSBfSU9fcHV0YyAoJ1xuJywgZ3BvdXRmaWxlKTsKfQoKCnN0YXRpYyBpbnQgUkVHSVN0ZXh0X2Fu
Z2xlKGFuZykKaW50IGFuZzsKewogICAgUkVHSVNhbmcgPSBhbmc7CiAgICBpZiAoYW5nID09IDEp
CiAgICAgICAgZnB1dHMoIlQoRDkwLFMxKVxuIiwgZ3BvdXRmaWxlKTsKICAgIGVsc2UKICAgICAg
ICBmcHV0cygiVChEMCxTMSlcbiIsIGdwb3V0ZmlsZSk7CiAgICByZXR1cm4gMTsKfQoKCnN0YXRp
YyB2b2lkIFJFR0lTcmVzZXQoKQp7CiAgICBmcHV0cygiXDAzM1sySlwwMzNbMjQ7MUgiLCBncG91
dGZpbGUpOwp9CgpzdGF0aWMgdm9pZCBSRUdJU29wdGlvbnMoKQp7CiAgICBpbnQgaSA9IDA7CiAg
ICBzdHJ1Y3QgdmFsdWUgYTsKCiAgICBpZiAoIShjX3Rva2VuID49IG51bV90b2tlbnMgfHwgZXF1
YWxzKGNfdG9rZW4sIjsiKSkpIHsKICAgICAgICBpID0gKGludCkgcmVhbChjb25zdF9leHByZXNz
KCZhKSk7CiAgICB9CiAgICBSRUdJUzE2Y29sb3IgPSAoaSA9PSAxNik7CiAgICBzcHJpbnRmKHRl
cm1fb3B0aW9ucywgIiVzIiwgUkVHSVMxNmNvbG9yID8gIjE2IiA6ICI0Iik7Cn0KIyAyMzUgInRl
cm0uaCIgMgoKCiMgMSAidGVybS90NDEweC50cm0iIDEKIyA2NyAidGVybS90NDEweC50cm0iCiMg
MSAidGVybS9kcml2ZXIuaCIgMQojIDY4ICJ0ZXJtL3Q0MTB4LnRybSIgMgoKCgoKCgpzdGF0aWMg
dm9pZCBUNDEwWF9pbml0ICh2b2lkKTsKc3RhdGljIHZvaWQgVDQxMFhfcmVzZXQgKHZvaWQpOwpz
dGF0aWMgdm9pZCBUNDEwWF9ncmFwaGljcyAodm9pZCk7CnN0YXRpYyB2b2lkIFQ0MTBYX3RleHQg
KHZvaWQpOwpzdGF0aWMgdm9pZCBUNDEwWF9tb3ZlICh1bnNpZ25lZCBpbnQgeCwgdW5zaWduZWQg
aW50IHkpOwpzdGF0aWMgdm9pZCBUNDEwWF92ZWN0b3IgKHVuc2lnbmVkIGludCB4LCB1bnNpZ25l
ZCBpbnQgeSk7CnN0YXRpYyB2b2lkIFQ0MTBYX3BvaW50ICh1bnNpZ25lZCBpbnQgeCwgdW5zaWdu
ZWQgaW50IHksIGludCBudW1iZXIpOwpzdGF0aWMgdm9pZCBUNDEwWF9saW5ldHlwZSAoaW50IGxp
bmV0eXBlKTsKc3RhdGljIHZvaWQgVDQxMFhfcHV0X3RleHQgKHVuc2lnbmVkIGludCB4LCB1bnNp
Z25lZCBpbnQgeSwgY2hhciBzdHJbXSk7CnN0YXRpYyBpbnQgVDQxMFhfdGV4dF9hbmdsZSAoaW50
IGFuZyk7CiMgOTUgInRlcm0vdDQxMHgudHJtIgp2b2lkIFQ0MTBYX2VuY29kZV94X3kgKHVuc2ln
bmVkIGludCB4LCB1bnNpZ25lZCBpbnQgeSk7CnZvaWQgVDQxMFhfZW5jb2RlX2ludCAoaW50IG51
bWJlcik7CgoKc3RhdGljIGludCBUNDEwWF9hbmdsZSA9IDA7CgpzdGF0aWMgdm9pZCBUNDEwWF9p
bml0KCkKewogICAgZnB1dHMoIlwwMzMlJSEwXDAzM01OMFwwMzNNQ0I3QztcMDMzTVExXDAzM01U
MSIsIGdwb3V0ZmlsZSk7CiAgICBmcHV0cygiXDAzM01HMVwwMzNSSyFcMDMzU0shXDAzM0xaXDAz
MyUlITEiLCBncG91dGZpbGUpOwojIDExNyAidGVybS90NDEweC50cm0iCiAgICAodm9pZCkgZmZs
dXNoKGdwb3V0ZmlsZSk7Cn0KCgpzdGF0aWMgdm9pZCBUNDEwWF9yZXNldCgpCnsKICAgIGZwdXRz
KCJcMDMzJSUhMFwwMzNMWlwwMzMlJSExIiwgZ3BvdXRmaWxlKTsKCgoKCgogICAgKHZvaWQpIGZm
bHVzaChncG91dGZpbGUpOwp9CgoKc3RhdGljIHZvaWQgVDQxMFhfZ3JhcGhpY3MoKQp7CiAgICBm
cHV0cygiXDAzMyUlITBcMDMzXDAxNFwwMzNMVjAiLCBncG91dGZpbGUpOwoKCgoKCiAgICAodm9p
ZCkgZmZsdXNoKGdwb3V0ZmlsZSk7Cn0KCnN0YXRpYyB2b2lkIFQ0MTBYX3RleHQoKQp7CiAgICBm
cHV0cygiXDAzM0xWMVwwMzMlJSExIiwgZ3BvdXRmaWxlKTsKCgoKCiAgICAodm9pZCkgZmZsdXNo
KGdwb3V0ZmlsZSk7Cn0KCgpzdGF0aWMgdm9pZCBUNDEwWF9tb3ZlKHgsIHkpCnVuc2lnbmVkIGlu
dCB4LCB5Owp7CiAgICBmcHV0cygiXDAzM0xGIiwgZ3BvdXRmaWxlKTsKCiAgICAodm9pZCkgVDQx
MFhfZW5jb2RlX3hfeSh4LCB5KTsKICAgICh2b2lkKSBmZmx1c2goZ3BvdXRmaWxlKTsKfQoKCnN0
YXRpYyB2b2lkIFQ0MTBYX3ZlY3Rvcih4LCB5KQp1bnNpZ25lZCBpbnQgeCwgeTsKewogICAgZnB1
dHMoIlwwMzNMRyIsIGdwb3V0ZmlsZSk7CiAgICAodm9pZCkgVDQxMFhfZW5jb2RlX3hfeSh4LCB5
KTsKICAgICh2b2lkKSBmZmx1c2goZ3BvdXRmaWxlKTsKfQoKCnN0YXRpYyB2b2lkIFQ0MTBYX3Bv
aW50KHgsIHksIG51bWJlcikKdW5zaWduZWQgaW50IHgsIHk7CmludCBudW1iZXI7CnsKICAgIGZw
dXRzKCJcMDMzTU0iLCBncG91dGZpbGUpOwogICAgKHZvaWQpIFQ0MTBYX2VuY29kZV9pbnQoKCAo
bnVtYmVyKSA+ICgwKSA/IChudW1iZXIpIDogKDApICkgJSAxMSk7CiAgICBmcHV0cygiXDAzM0xI
IiwgZ3BvdXRmaWxlKTsKICAgICh2b2lkKSBUNDEwWF9lbmNvZGVfeF95KHgsIHkpOwogICAgKHZv
aWQpIGZmbHVzaChncG91dGZpbGUpOwp9CgoKc3RhdGljIHZvaWQgVDQxMFhfbGluZXR5cGUobGlu
ZXR5cGUpCmludCBsaW5ldHlwZTsKewogICAgc3dpdGNoIChsaW5ldHlwZSkgewogICAgY2FzZSAt
MToKICAgICAgICBmcHV0cygiXDAzM01MNSIsIGdwb3V0ZmlsZSk7CiAgICAgICAgYnJlYWs7CiAg
ICBjYXNlIC0yOgogICAgICAgIGZwdXRzKCJcMDMzTUw/IiwgZ3BvdXRmaWxlKTsKICAgICAgICBi
cmVhazsKICAgIGRlZmF1bHQ6CiAgICAgICAgZnB1dHMoIlwwMzNNTCIsIGdwb3V0ZmlsZSk7CiAg
ICAgICAgKHZvaWQpIFQ0MTBYX2VuY29kZV9pbnQobGluZXR5cGUgJSAxNCArIDIpOwogICAgICAg
IGJyZWFrOwogICAgfQogICAgZnB1dHMoIlwwMzNNViIsIGdwb3V0ZmlsZSk7CiAgICAodm9pZCkg
VDQxMFhfZW5jb2RlX2ludCgoIChsaW5ldHlwZSkgPiAoMCkgPyAobGluZXR5cGUpIDogKDApICkg
JSA4KTsKICAgICh2b2lkKSBmZmx1c2goZ3BvdXRmaWxlKTsKfQoKCnN0YXRpYyB2b2lkIFQ0MTBY
X3B1dF90ZXh0KHgsIHksIHN0cikKdW5zaWduZWQgaW50IHgsIHk7CmNoYXIgc3RyW107CnsKCiAg
ICBpZiAoVDQxMFhfYW5nbGUgPT0gMCkgewogICAgICAgICh2b2lkKSBUNDEwWF9tb3ZlKHgsIHkg
LSA3MSAvIDIgKyA2KTsKICAgICAgICBmcHV0cygiXDAzM01SMDAiLCBncG91dGZpbGUpOwogICAg
fSBlbHNlIHsKICAgICAgICAodm9pZCkgVDQxMFhfbW92ZSh4ICsgNTEgLyAyIC0gNiwgeSk7CiAg
ICAgICAgZnB1dHMoIlwwMzNNUkU6MCIsIGdwb3V0ZmlsZSk7CiAgICB9CiAgICAodm9pZCkgZnB1
dHMoIlwwMzNMVCIsIGdwb3V0ZmlsZSk7CiAgICAodm9pZCkgVDQxMFhfZW5jb2RlX2ludChzdHJs
ZW4oc3RyKSk7CiAgICAodm9pZCkgZnB1dHMoc3RyLCBncG91dGZpbGUpOwogICAgKHZvaWQpIGZm
bHVzaChncG91dGZpbGUpOwp9CgpzdGF0aWMgaW50IFQ0MTBYX3RleHRfYW5nbGUoYW5nKQppbnQg
YW5nOwp7CgogICAgVDQxMFhfYW5nbGUgPSBhbmc7CiAgICByZXR1cm4gKDEpOwp9CgoKCgoKdm9p
ZCBUNDEwWF9lbmNvZGVfeF95KHgsIHkpCnVuc2lnbmVkIGludCB4LCB5Owp7CiAgICBzdGF0aWMg
Y2hhciBjaGl4ID0gMCwgY2hpeSA9IDAsIGNsb3kgPSAwLCBjZWIgPSAwOwoKICAgIHJlZ2lzdGVy
IHVuc2lnbmVkIGludCBoaXgsIGxveCwgaGl5LCBsb3ksIGViLCBseCwgbHk7CgogICAgbHggPSAo
eCA8PSA0MDk1KSA/IHggOiA0MDk1OwogICAgbHkgPSAoeSA8PSAzMTMxKSA/IHkgOiAzMTMxOwoK
ICAgIGhpeCA9IGx4IC8gMTI4ICsgMzI7CiAgICBsb3ggPSAobHggLyA0KSAlIDMyICsgNjQ7CiAg
ICBoaXkgPSBseSAvIDEyOCArIDMyOwogICAgbG95ID0gKGx5IC8gNCkgJSAzMiArIDk2OwogICAg
ZWIgPSAobHkgJSA0KSAqIDQgKyBseCAlIDQgKyA5NjsKCiAgICBpZiAoY2hpeSAhPSBoaXkpCiAg
ICAgICAgKHZvaWQpIF9JT19wdXRjIChoaXksIGdwb3V0ZmlsZSk7CiAgICBpZiAoY2ViICE9IGVi
KQogICAgICAgICh2b2lkKSBfSU9fcHV0YyAoZWIsIGdwb3V0ZmlsZSk7CiAgICBpZiAoKGNsb3kg
IT0gbG95KSB8fCAoY2ViICE9IGViKSB8fCAoY2hpeCAhPSBoaXgpKQogICAgICAgICh2b2lkKSBf
SU9fcHV0YyAobG95LCBncG91dGZpbGUpOwogICAgaWYgKGNoaXggIT0gaGl4KQogICAgICAgICh2
b2lkKSBfSU9fcHV0YyAoaGl4LCBncG91dGZpbGUpOwogICAgKHZvaWQpIF9JT19wdXRjIChsb3gs
IGdwb3V0ZmlsZSk7CgogICAgY2hpeCA9IGhpeDsKICAgIGNoaXkgPSBoaXk7CiAgICBjbG95ID0g
bG95OwogICAgY2ViID0gZWI7Cn0KCgp2b2lkIFQ0MTBYX2VuY29kZV9pbnQobnVtYmVyKQppbnQg
bnVtYmVyOwp7CiAgICByZWdpc3RlciB1bnNpZ25lZCBpbnQgbWFnLCBoaTEsIGhpMiwgbG87Cgog
ICAgbWFnID0gKChudW1iZXIpID49IDAgPyAobnVtYmVyKSA6IC0obnVtYmVyKSk7CgogICAgaGkx
ID0gbWFnIC8gMTAyNCArIDY0OwogICAgaGkyID0gKG1hZyAvIDE2KSAlIDY0ICsgNjQ7CiAgICBs
byA9IG1hZyAlIDE2ICsgMzI7CgogICAgaWYgKG51bWJlciA+PSAwKQogICAgICAgIGxvICs9IDE2
OwoKICAgIGlmIChoaTEgIT0gNjQpCiAgICAgICAgKHZvaWQpIF9JT19wdXRjIChoaTEsIGdwb3V0
ZmlsZSk7CiAgICBpZiAoKGhpMiAhPSA2NCkgfHwgKGhpMSAhPSA2NCkpCiAgICAgICAgKHZvaWQp
IF9JT19wdXRjIChoaTIsIGdwb3V0ZmlsZSk7CiAgICAodm9pZCkgX0lPX3B1dGMgKGxvLCBncG91
dGZpbGUpOwoKfQojIDIzOCAidGVybS5oIiAyCgoKIyAxICJ0ZXJtL3Rlay50cm0iIDEKIyA2MiAi
dGVybS90ZWsudHJtIgojIDEgInRlcm0vZHJpdmVyLmgiIDEKIyA2MyAidGVybS90ZWsudHJtIiAy
CiMgODIgInRlcm0vdGVrLnRybSIKc3RhdGljIHZvaWQgVEVLNDBpbml0ICh2b2lkKTsKc3RhdGlj
IHZvaWQgVEVLNDBncmFwaGljcyAodm9pZCk7CnN0YXRpYyB2b2lkIFRFSzQwdGV4dCAodm9pZCk7
CnN0YXRpYyB2b2lkIFRFSzQwbGluZXR5cGUgKGludCBsaW5ldHlwZSk7CnN0YXRpYyB2b2lkIFRF
SzQwbW92ZSAodW5zaWduZWQgaW50IHgsIHVuc2lnbmVkIGludCB5KTsKc3RhdGljIHZvaWQgVEVL
NDB2ZWN0b3IgKHVuc2lnbmVkIGludCB4LCB1bnNpZ25lZCBpbnQgeSk7CnN0YXRpYyB2b2lkIFRF
SzQwcHV0X3RleHQgKHVuc2lnbmVkIGludCB4LCB1bnNpZ25lZCBpbnQgeSwgY2hhciBzdHJbXSk7
CnN0YXRpYyB2b2lkIFRFSzQwcmVzZXQgKHZvaWQpOwpzdGF0aWMgdm9pZCBCR190ZXh0ICh2b2lk
KTsKc3RhdGljIHZvaWQgQkdfcHV0X3RleHQgKHVuc2lnbmVkIGludCB4LCB1bnNpZ25lZCBpbnQg
eSwgY2hhciBzdHJbXSk7CnN0YXRpYyB2b2lkIEtURUs0MGdyYXBoaWNzICh2b2lkKTsKc3RhdGlj
IHZvaWQgS1RFSzQwQ3RleHQgKHZvaWQpOwpzdGF0aWMgdm9pZCBLVEVLNDBDbGluZXR5cGUgKGlu
dCBsaW5ldHlwZSk7CnN0YXRpYyB2b2lkIEtURUs0ME1saW5ldHlwZSAoaW50IGxpbmV0eXBlKTsK
c3RhdGljIHZvaWQgS1RFSzQwcmVzZXQgKHZvaWQpOwpzdGF0aWMgdm9pZCBTRUxfaW5pdCAodm9p
ZCk7CnN0YXRpYyB2b2lkIFNFTF9ncmFwaGljcyAodm9pZCk7CnN0YXRpYyB2b2lkIFNFTF90ZXh0
ICh2b2lkKTsKc3RhdGljIHZvaWQgU0VMX3Jlc2V0ICh2b2lkKTsKc3RhdGljIHZvaWQgVlRURUs0
MGluaXQgKHZvaWQpOwpzdGF0aWMgdm9pZCBWVFRFSzQwcmVzZXQgKHZvaWQpOwpzdGF0aWMgdm9p
ZCBWVFRFSzQwbGluZXR5cGUgKGludCBsaW5ldHlwZSk7CnN0YXRpYyB2b2lkIFZUVEVLNDBwdXRf
dGV4dCAodW5zaWduZWQgaW50IHgsIHVuc2lnbmVkIGludCB5LCBjaGFyIHN0cltdKTsKc3RhdGlj
IHZvaWQgQ1RFS19saW5ldHlwZSAoaW50IGxpbmV0eXBlKTsKc3RhdGljIHZvaWQgQ1RFS19tb3Zl
ICh1bnNpZ25lZCBpbnQgeCwgdW5zaWduZWQgaW50IHkpOwpzdGF0aWMgdm9pZCBDVEVLX3ZlY3Rv
ciAodW5zaWduZWQgaW50IHgsIHVuc2lnbmVkIGludCB5KTsKIyAxMzYgInRlcm0vdGVrLnRybSIK
c3RhdGljIHZvaWQgVEVLNDBpbml0KCkKewp9CgoKc3RhdGljIHZvaWQgVEVLNDBncmFwaGljcygp
CnsKCgoKICAgIGZwdXRzKCJcMDMzXDAxNCIsIGdwb3V0ZmlsZSk7CgoKCiAgICAodm9pZCkgZmZs
dXNoKGdwb3V0ZmlsZSk7CiAgICBzbGVlcCgxKTsKCgp9CgpzdGF0aWMgdm9pZCBURUs0MHRleHQo
KQp7CgoKCiAgICBURUs0MG1vdmUoMCwgMTIpOwogICAgZnB1dHMoIlwwMzciLCBncG91dGZpbGUp
OwoKCgoKCgp9CgoKc3RhdGljIHZvaWQgVEVLNDBsaW5ldHlwZShsaW5ldHlwZSkKaW50IGxpbmV0
eXBlOwp7Cn0KCnN0YXRpYyB2b2lkIFRFSzQwbW92ZSh4LCB5KQp1bnNpZ25lZCBpbnQgeCwgeTsK
ewogICAgKHZvaWQpIF9JT19wdXRjICgnXDAzNScsIGdwb3V0ZmlsZSk7CiAgICBURUs0MHZlY3Rv
cih4LCB5KTsKfQoKCnN0YXRpYyB2b2lkIFRFSzQwdmVjdG9yKHgsIHkpCnVuc2lnbmVkIGludCB4
LCB5Owp7CiAgICAodm9pZCkgX0lPX3B1dGMgKCgweDIwIHwgKHkgJiAoMzE8PDUpKSA+PiA1KSwg
Z3BvdXRmaWxlKTsKICAgICh2b2lkKSBfSU9fcHV0YyAoKDB4NjAgfCAoeSAmIDMxKSksIGdwb3V0
ZmlsZSk7CiAgICAodm9pZCkgX0lPX3B1dGMgKCgweDIwIHwgKHggJiAoMzE8PDUpKSA+PiA1KSwg
Z3BvdXRmaWxlKTsKICAgICh2b2lkKSBfSU9fcHV0YyAoKDB4NDAgfCAoeCAmIDMxKSksIGdwb3V0
ZmlsZSk7Cn0KCgpzdGF0aWMgdm9pZCBURUs0MHB1dF90ZXh0KHgsIHksIHN0cikKdW5zaWduZWQg
aW50IHgsIHk7CmNoYXIgc3RyW107CnsKICAgIFRFSzQwbW92ZSh4LCB5IC0gMTEpOwogICAgZnBy
aW50ZihncG91dGZpbGUsICJcMDM3JXNcbiIsIHN0cik7Cn0KCgpzdGF0aWMgdm9pZCBURUs0MHJl
c2V0KCkKewp9CiMgMjQxICJ0ZXJtL3Rlay50cm0iCnN0YXRpYyB2b2lkIEJHX3RleHQoKQp7CgoK
CiAgICBURUs0MG1vdmUoMCwgMTAyNCAtIDIgKiAxNik7CiAgICBmcHV0cygiXDAzNyIsIGdwb3V0
ZmlsZSk7CgoKCn0KCgpzdGF0aWMgdm9pZCBCR19wdXRfdGV4dCh4LCB5LCBzdHIpCnVuc2lnbmVk
IGludCB4LCB5OwpjaGFyIHN0cltdOwp7CiAgICBURUs0MG1vdmUoeCwgeSAtIDExKTsKICAgIGZw
cmludGYoZ3BvdXRmaWxlLCAiXDAzNyVzXG4iLCBzdHIpOwp9CiMgMjc1ICJ0ZXJtL3Rlay50cm0i
CnN0YXRpYyB2b2lkIEtURUs0MGdyYXBoaWNzKCkKewoKCgoKICAgIGZwdXRzKCJcMDMzXDAxNCIs
IGdwb3V0ZmlsZSk7CgoKCgp9CgpzdGF0aWMgdm9pZCBLVEVLNDBDdGV4dCgpCnsKICAgIFRFSzQw
dGV4dCgpOwogICAgS1RFSzQwQ2xpbmV0eXBlKDApOwoKCgp9CgoKCgoKc3RhdGljIGNoYXIgKmtl
cm1pdF9jb2xvclsxNV0gPQp7IlwwMzNbMDszN20iLCAiXDAzM1sxOzMwbSIsCiAiXDAzM1swOzMy
bSIsICJcMDMzWzA7MzZtIiwgIlwwMzNbMDszMW0iLCAiXDAzM1swOzM1bSIsCiAiXDAzM1sxOzM0
bSIsICJcMDMzWzE7MzNtIiwgIlwwMzNbMTszMW0iLCAiXDAzM1sxOzM3bSIsCiAiXDAzM1sxOzM1
bSIsICJcMDMzWzE7MzJtIiwgIlwwMzNbMTszNm0iLCAiXDAzM1swOzM0bSIsCiAiXDAzM1swOzMz
bSJ9OwoKc3RhdGljIHZvaWQgS1RFSzQwQ2xpbmV0eXBlKGxpbmV0eXBlKQppbnQgbGluZXR5cGU7
CnsKICAgIGlmIChsaW5ldHlwZSA+PSAxMykKICAgICAgICBsaW5ldHlwZSAlPSAxMzsKICAgIGZw
cmludGYoZ3BvdXRmaWxlLCAiJXMiLCBrZXJtaXRfY29sb3JbbGluZXR5cGUgKyAyXSk7Cn0KCgoK
CgpzdGF0aWMgY2hhciAqa2VybV9saW5ldHlwZSA9ICJgYWBhYmNkZSI7CgpzdGF0aWMgdm9pZCBL
VEVLNDBNbGluZXR5cGUobGluZXR5cGUpCmludCBsaW5ldHlwZTsKewogICAgaWYgKGxpbmV0eXBl
ID49IDYpCiAgICAgICAgbGluZXR5cGUgJT0gNjsKICAgIGZwcmludGYoZ3BvdXRmaWxlLCAiXDAz
MyVjIiwga2VybV9saW5ldHlwZVtsaW5ldHlwZSArIDJdKTsKfQoKc3RhdGljIHZvaWQgS1RFSzQw
cmVzZXQoKQp7CiAgICBmcHV0cygiXDAzMFxuIiwgZ3BvdXRmaWxlKTsKCgoKfQojIDM0NiAidGVy
bS90ZWsudHJtIgpzdGF0aWMgdm9pZCBTRUxfaW5pdCgpCnsKICAgIGZwdXRzKCJcMDMzXDA2MiIs
IGdwb3V0ZmlsZSk7CgoKCn0KCgpzdGF0aWMgdm9pZCBTRUxfZ3JhcGhpY3MoKQp7CiAgICBmcHV0
cygiXDAzM1tIXDAzM1tKXDAzM1wwNjFcMDMzXDAxNCIsIGdwb3V0ZmlsZSk7CiMgMzY2ICJ0ZXJt
L3Rlay50cm0iCn0KCgpzdGF0aWMgdm9pZCBTRUxfdGV4dCgpCnsKCgoKICAgIFRFSzQwbW92ZSgw
LCAxMik7CiAgICBmcHV0cygiXDAzM1wwNjIiLCBncG91dGZpbGUpOwoKCgoKCgp9CgpzdGF0aWMg
dm9pZCBTRUxfcmVzZXQoKQp7CiAgICBmcHV0cygiXDAzM1wwNjFcMDMzXDAxMlwwMzNcMDYyXDAz
M1tIXDAzM1tKIiwgZ3BvdXRmaWxlKTsKCgoKCgoKfQoKCgoKCnN0YXRpYyB2b2lkIFZUVEVLNDBp
bml0KCkKewogICAgZnB1dHMoIlwwMzNbPzM4aCIsIGdwb3V0ZmlsZSk7CiAgICBmZmx1c2goZ3Bv
dXRmaWxlKTsKICAgIHNsZWVwKDEpOwoKCgoKfQoKc3RhdGljIHZvaWQgVlRURUs0MHJlc2V0KCkK
ewogICAgZnB1dHMoIlwwMzNbPzM4bCIsIGdwb3V0ZmlsZSk7CiAgICBmZmx1c2goZ3BvdXRmaWxl
KTsKICAgIHNsZWVwKDEpOwoKCgoKfQoKCgoKCnN0YXRpYyBjaGFyICp2dF9saW5ldHlwZSA9ICJg
YWBhYmNkaGlqa2wiOwpzdGF0aWMgaW50IGxhc3RfdnRfbGluZXR5cGUgPSAwOwpzdGF0aWMgdm9p
ZCBWVFRFSzQwbGluZXR5cGUobGluZXR5cGUpCmludCBsaW5ldHlwZTsKewogICAgaWYgKGxpbmV0
eXBlID49IDEwKQogICAgICAgIGxpbmV0eXBlICU9IDEwOwogICAgZnByaW50ZihncG91dGZpbGUs
ICJcMDMzJWMiLCB2dF9saW5ldHlwZVtsaW5ldHlwZSArIDJdKTsKICAgIGxhc3RfdnRfbGluZXR5
cGUgPSBsaW5ldHlwZTsKfQoKc3RhdGljIHZvaWQgVlRURUs0MHB1dF90ZXh0KHgsIHksIHN0cikK
dW5zaWduZWQgaW50IHgsIHk7CmNoYXIgc3RyW107CnsKICAgIGludCBsaW5ldHlwZTsKICAgIGxp
bmV0eXBlID0gbGFzdF92dF9saW5ldHlwZTsKICAgIFZUVEVLNDBsaW5ldHlwZSgwKTsKICAgIFRF
SzQwcHV0X3RleHQoeCwgeSwgc3RyKTsKICAgIFZUVEVLNDBsaW5ldHlwZShsaW5ldHlwZSk7Cn0K
IyA0NzEgInRlcm0vdGVrLnRybSIKc3RhdGljIHZvaWQgQ1Rfc29saWRfdmVjdG9yIChpbnQgeCwg
aW50IHkpOwpzdGF0aWMgdm9pZCBDVF9kcmF3X3Zwb2ludCAoaW50IHgsIGludCB5LCBpbnQgbGFz
dCk7CnN0YXRpYyB2b2lkIENUX3BhdHRlcm5fdmVjdG9yIChpbnQgeDEsIGludCB5MSk7CgoKc3Rh
dGljIHVuc2lnbmVkIGxvbmcgQ1RfbGluZXNbXSA9CnsweGZmZmZmZmZmLAogMHgwMDBmZmZmZiwK
IDB4MDBmZjAwZmYsCiAweDAwZjAwZmZmLAogMHgwMGYwN2ZmZiwKIDB4MDcwNzA3MDcsCiAweDA3
ZmYwN2ZmLAogMHgwNzA3MDdmZn07CgoKc3RhdGljIHVuc2lnbmVkIGxvbmcgKkNUX3BhdHRlcm4g
PSAmQ1RfbGluZXNbMF07CgoKc3RhdGljIGludCBDVF9sYXN0X2xpbmV0eXBlID0gMCwgQ1RfbGFz
dF94LCBDVF9sYXN0X3k7CgpzdGF0aWMgdm9pZCBDVEVLX2xpbmV0eXBlKGxpbmV0eXBlKQppbnQg
bGluZXR5cGU7CnsKICAgIGlmIChsaW5ldHlwZSA8IDApCiAgICAgICAgbGluZXR5cGUgPSAwOwog
ICAgbGluZXR5cGUgJT0gKHNpemVvZihDVF9saW5lcykgLyBzaXplb2YodW5zaWduZWQgbG9uZykp
OwogICAgQ1RfcGF0dGVybiA9ICZDVF9saW5lc1tsaW5ldHlwZV07CiAgICBDVF9sYXN0X2xpbmV0
eXBlID0gbGluZXR5cGU7Cn0KCnN0YXRpYyB2b2lkIENURUtfbW92ZSh4LCB5KQp1bnNpZ25lZCBp
bnQgeDsKdW5zaWduZWQgaW50IHk7CnsKICAgIFRFSzQwbW92ZSh4LCB5KTsKICAgIENUX2xhc3Rf
eCA9IHg7CiAgICBDVF9sYXN0X3kgPSB5Owp9CgpzdGF0aWMgdm9pZCBDVF9zb2xpZF92ZWN0b3Io
eCwgeSkKaW50IHg7CmludCB5Owp7CiAgICBURUs0MHZlY3Rvcih4LCB5KTsKICAgIENUX2xhc3Rf
eCA9IHg7CiAgICBDVF9sYXN0X3kgPSB5Owp9CgoKCgoKCnN0YXRpYyBpbnQgQ1RfcGVub24gPSAw
OwoKc3RhdGljIHZvaWQgQ1RfZHJhd192cG9pbnQoeCwgeSwgbGFzdCkKaW50IHg7CmludCB5Owpp
bnQgbGFzdDsKewogICAgc3RhdGljIGludCB4eDAsIHl5MCwgeHgxLCB5eTE7CgogICAgaWYgKCgq
Q1RfcGF0dGVybikgJiAxKSB7CiAgICAgICAgaWYgKENUX3Blbm9uKSB7CiAgICAgICAgICAgIHh4
MSA9IHg7CiAgICAgICAgICAgIHl5MSA9IHk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
eHgwID0geHgxID0geDsKICAgICAgICAgICAgeXkwID0geXkxID0geTsKICAgICAgICAgICAgQ1Rf
cGVub24gPSAxOwogICAgICAgIH0KICAgICAgICAqQ1RfcGF0dGVybiA9ICgoKkNUX3BhdHRlcm4p
ID4+IDEpIHwgMHg4MDAwMDAwMDsKICAgICAgICBpZiAobGFzdCkgewogICAgICAgICAgICBURUs0
MG1vdmUoeHgwLCB5eTApOwogICAgICAgICAgICBURUs0MHZlY3Rvcih4eDEsIHl5MSk7CiAgICAg
ICAgICAgIENUX3Blbm9uID0gMDsKICAgICAgICB9CiAgICB9IGVsc2UgewogICAgICAgIGlmIChD
VF9wZW5vbikgewoKICAgICAgICAgICAgVEVLNDBtb3ZlKHh4MCwgeXkwKTsKICAgICAgICAgICAg
VEVLNDB2ZWN0b3IoeHgxLCB5eTEpOwogICAgICAgICAgICBDVF9wZW5vbiA9IDA7CiAgICAgICAg
fQogICAgICAgICpDVF9wYXR0ZXJuID0gKCpDVF9wYXR0ZXJuKSA+PiAxOwogICAgfQp9CgoKCgoK
c3RhdGljIHZvaWQgQ1RfcGF0dGVybl92ZWN0b3IoeDEsIHkxKQppbnQgeDE7CmludCB5MTsKewog
ICAgaW50IG9wOwogICAgaW50IHgwID0gQ1RfbGFzdF94OwogICAgaW50IHkwID0gQ1RfbGFzdF95
OwogICAgaW50IGR4ID0geDEgLSB4MDsKICAgIGludCBkeSA9IHkxIC0geTA7CiAgICBpbnQgYXgg
PSAoKGR4KSA+PSAwID8gKGR4KSA6IC0oZHgpKSA8PCAxOwogICAgaW50IGF5ID0gKChkeSkgPj0g
MCA/IChkeSkgOiAtKGR5KSkgPDwgMTsKICAgIGludCBzeCA9ICgoKGR4KSA+PSAwKT8gMTotMSk7
CiAgICBpbnQgc3kgPSAoKChkeSkgPj0gMCk/IDE6LTEpOwoKICAgIGlmIChheCA+PSBheSkgewog
ICAgICAgIGZvciAob3AgPSBheSAtIChheCA+PiAxKTsgeDAgIT0geDE7IHgwICs9IHN4LCBvcCAr
PSBheSkgewogICAgICAgICAgICBDVF9kcmF3X3Zwb2ludCh4MCwgeTAsIDApOwogICAgICAgICAg
ICBpZiAob3AgPiAwIHx8IChvcCA9PSAwICYmIHN4ID09IDEpKSB7CiAgICAgICAgICAgICAgICBv
cCAtPSBheDsKICAgICAgICAgICAgICAgIHkwICs9IHN5OwogICAgICAgICAgICB9CiAgICAgICAg
fQogICAgfSBlbHNlIHsKICAgICAgICBmb3IgKG9wID0gYXggLSAoYXkgPj4gMSk7IHkwICE9IHkx
OyB5MCArPSBzeSwgb3AgKz0gYXgpIHsKICAgICAgICAgICAgQ1RfZHJhd192cG9pbnQoeDAsIHkw
LCAwKTsKICAgICAgICAgICAgaWYgKG9wID4gMCB8fCAob3AgPT0gMCAmJiBzeSA9PSAxKSkgewog
ICAgICAgICAgICAgICAgb3AgLT0gYXk7CiAgICAgICAgICAgICAgICB4MCArPSBzeDsKICAgICAg
ICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIENUX2RyYXdfdnBvaW50KHgwLCB5MCwgMSk7CiAg
ICBDVF9sYXN0X3ggPSB4MTsKICAgIENUX2xhc3RfeSA9IHkxOwp9CgpzdGF0aWMgdm9pZCBDVEVL
X3ZlY3Rvcih4LCB5KQp1bnNpZ25lZCBpbnQgeDsKdW5zaWduZWQgaW50IHk7CnsKICAgIGlmIChD
VF9sYXN0X2xpbmV0eXBlIDw9IDApCiAgICAgICAgQ1Rfc29saWRfdmVjdG9yKHgsIHkpOwogICAg
ZWxzZQogICAgICAgIENUX3BhdHRlcm5fdmVjdG9yKHgsIHkpOwp9CiMgMjQxICJ0ZXJtLmgiIDIK
CgojIDEgInRlcm0veGxpYi50cm0iIDEKIyA0NyAidGVybS94bGliLnRybSIKIyAxICJ0ZXJtL2Ry
aXZlci5oIiAxCiMgNDggInRlcm0veGxpYi50cm0iIDIKCgoKCgoKc3RhdGljIHZvaWQgWGxpYl9p
bml0ICh2b2lkKTsKc3RhdGljIHZvaWQgWGxpYl9ncmFwaGljcyAodm9pZCk7CnN0YXRpYyB2b2lk
IFhsaWJfdGV4dCAodm9pZCk7CnN0YXRpYyB2b2lkIFhsaWJfcmVzZXQgKHZvaWQpOwpzdGF0aWMg
dm9pZCBYbGliX21vdmUgKHVuc2lnbmVkIGludCB4LCB1bnNpZ25lZCBpbnQgeSk7CnN0YXRpYyB2
b2lkIFhsaWJfdmVjdG9yICh1bnNpZ25lZCBpbnQgeCwgdW5zaWduZWQgaW50IHkpOwpzdGF0aWMg
dm9pZCBYbGliX2xpbmV0eXBlIChpbnQgbHQpOwpzdGF0aWMgdm9pZCBYbGliX3B1dF90ZXh0ICh1
bnNpZ25lZCBpbnQgeCwgdW5zaWduZWQgaW50IHksIGNoYXIgc3RyW10pOwpzdGF0aWMgaW50IFhs
aWJfanVzdGlmeV90ZXh0IChlbnVtIEpVU1RJRlkgbW9kZSk7CiMgNzkgInRlcm0veGxpYi50cm0i
CnN0YXRpYyB2b2lkIFhsaWJfaW5pdCgpCnsKCn0KCnN0YXRpYyB2b2lkIFhsaWJfZ3JhcGhpY3Mo
KQp7CiAgICBmcHV0cygiR1xuIiwgZ3BvdXRmaWxlKTsKfQoKc3RhdGljIHZvaWQgWGxpYl90ZXh0
KCkKewogICAgZnB1dHMoIkVcbiIsIGdwb3V0ZmlsZSk7CiAgICBmZmx1c2goZ3BvdXRmaWxlKTsK
CgoKCn0KCnN0YXRpYyB2b2lkIFhsaWJfcmVzZXQoKQp7CiAgICBmcHV0cygiUlxuIiwgZ3BvdXRm
aWxlKTsKICAgIGZmbHVzaChncG91dGZpbGUpOwp9CgpzdGF0aWMgdm9pZCBYbGliX21vdmUoeCwg
eSkKdW5zaWduZWQgaW50IHgsIHk7CnsKICAgIGZwcmludGYoZ3BvdXRmaWxlLCAiTSUwNGQlMDRk
XG4iLCB4LCB5KTsKfQoKc3RhdGljIHZvaWQgWGxpYl92ZWN0b3IoeCwgeSkKdW5zaWduZWQgaW50
IHgsIHk7CnsKICAgIGZwcmludGYoZ3BvdXRmaWxlLCAiViUwNGQlMDRkXG4iLCB4LCB5KTsKfQoK
c3RhdGljIHZvaWQgWGxpYl9saW5ldHlwZShsdCkKaW50IGx0Owp7CiAgICBmcHJpbnRmKGdwb3V0
ZmlsZSwgIkwlMDRkXG4iLCBsdCk7Cn0KCnN0YXRpYyB2b2lkIFhsaWJfcHV0X3RleHQoeCwgeSwg
c3RyKQp1bnNpZ25lZCBpbnQgeCwgeTsKY2hhciBzdHJbXTsKewogICAgZnByaW50ZihncG91dGZp
bGUsICJUJTA0ZCUwNGQlc1xuIiwgeCwgeSwgc3RyKTsKfQoKc3RhdGljIGludCBYbGliX2p1c3Rp
ZnlfdGV4dChtb2RlKQplbnVtIEpVU1RJRlkgbW9kZTsKewogICAgZnByaW50ZihncG91dGZpbGUs
ICJKJTA0ZFxuIiwgbW9kZSk7CiAgICByZXR1cm4gKDEpOwp9CiMgMjQ0ICJ0ZXJtLmgiIDIKIyAy
NTMgInRlcm0uaCIKIyAxICJ0ZXJtL3gxMS50cm0iIDEKIyA0MCAidGVybS94MTEudHJtIgojIDEg
InRlcm0vZHJpdmVyLmgiIDEKIyA0MSAidGVybS94MTEudHJtIiAyCgoKCgoKCmludCBYMTFfYXJn
cyAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSk7CnN0YXRpYyB2b2lkIFgxMV9vcHRpb25zICh2b2lk
KTsKc3RhdGljIHZvaWQgWDExX2luaXQgKHZvaWQpOwpzdGF0aWMgdm9pZCBYMTFfZ3JhcGhpY3Mg
KHZvaWQpOwpzdGF0aWMgdm9pZCBYMTFfdGV4dCAodm9pZCk7CnN0YXRpYyB2b2lkIFgxMV9yZXNl
dCAodm9pZCk7CnN0YXRpYyB2b2lkIFgxMV9tb3ZlICh1bnNpZ25lZCBpbnQgeCwgdW5zaWduZWQg
aW50IHkpOwpzdGF0aWMgdm9pZCBYMTFfdmVjdG9yICh1bnNpZ25lZCBpbnQgeCwgdW5zaWduZWQg
aW50IHkpOwpzdGF0aWMgdm9pZCBYMTFfbGluZXdpZHRoIChkb3VibGUgbHcpOwpzdGF0aWMgdm9p
ZCBYMTFfcG9pbnRzaXplIChkb3VibGUgcHMpOwpzdGF0aWMgdm9pZCBYMTFfbGluZXR5cGUgKGlu
dCBsdCk7CnN0YXRpYyB2b2lkIFgxMV9wdXRfdGV4dCAodW5zaWduZWQgaW50IHgsIHVuc2lnbmVk
IGludCB5LCBjaGFyIHN0cltdKTsKc3RhdGljIGludCBYMTFfanVzdGlmeV90ZXh0IChlbnVtIEpV
U1RJRlkgbW9kZSk7CnN0YXRpYyB2b2lkIFgxMV9wb2ludCAodW5zaWduZWQgaW50IHgsIHVuc2ln
bmVkIGludCB5LCBpbnQgbnVtYmVyKTsKc3RhdGljIHZvaWQgWDExX2ZpbGxib3ggKGludCBzdHls
ZSwgdW5zaWduZWQgaW50IHgsIHVuc2lnbmVkIHksIHVuc2lnbmVkIGludCB3aWR0aCwgdW5zaWdu
ZWQgaW50IGhlaWdodCk7CiMgNzggInRlcm0veDExLnRybSIKaW50IFgxMV9EaXNwbGF5ID0gMDsK
IyAxMDEgInRlcm0veDExLnRybSIKc3RhdGljIHZvaWQgWDExX2F0ZXhpdCAodm9pZCk7CgoKCgoK
dHlwZWRlZiBlbnVtIHsgaGFzTm9BcmcsIGhhc0FyZyB9IE9wdGlvbkFyZzsKCnN0YXRpYyBzdHJ1
Y3QgeDExb3B0IHsKICAgIGNvbnN0IGNoYXIgKm9wdGlvbjsKICAgIE9wdGlvbkFyZyBhcmc7Cn0g
WDExX29wdHNbXSA9CnsKICAgeyAiLW1vbm8iLCBoYXNOb0FyZyB9LCB7ICItZ3JheSIsIGhhc05v
QXJnIH0sIHsgIi1jbGVhciIsIGhhc05vQXJnIH0sCiAgIHsgIi10dnR3bSIsIGhhc05vQXJnIH0s
IHsgIi1wb2ludHNpemUiLCBoYXNBcmcgfSwKICAgeyAiLWljb25pYyIsIGhhc05vQXJnIH0sIHsg
Ii1ydiIsIGhhc05vQXJnIH0sCiAgIHsgIi1yZXZlcnNlIiwgaGFzTm9BcmcgfSwgeyAiK3J2Iiwg
aGFzTm9BcmcgfSwKICAgeyAiLXN5bmNocm9ub3VzIiwgaGFzTm9BcmcgfSwKICAgeyAiLWRpc3Bs
YXkiLCBoYXNBcmcgfSwgeyAiLWdlb21ldHJ5IiwgaGFzQXJnIH0sIHsgIi1iZyIsIGhhc0FyZyB9
LAogICB7ICItYmFja2dyb3VuZCIsIGhhc0FyZyB9LCB7ICItYmQiLCBoYXNBcmcgfSwKICAgeyAi
LWJvcmRlcmNvbG9yIiwgaGFzQXJnIH0sIHsgIi1idyIsIGhhc0FyZyB9LAogICB7ICItYm9yZGVy
d2lkdGgiLCBoYXNBcmcgfSwgeyAiLWZnIiwgaGFzQXJnIH0sCiAgIHsgIi1mb3JlZ3JvdW5kIiwg
aGFzQXJnIH0sIHsgIi1mbiIsIGhhc0FyZyB9LCB7ICItZm9udCIsIGhhc0FyZyB9LAogICB7ICIt
bmFtZSIsIGhhc0FyZyB9LAogICB7ICItc2VsZWN0aW9uVGltZW91dCIsIGhhc0FyZyB9LCB7ICIt
dGl0bGUiLCBoYXNBcmcgfSwKICAgeyAiLXhubGxhbmd1YWdlIiwgaGFzQXJnIH0sIHsgIi14cm0i
LCBoYXNBcmcgfSwKICAgeyAiLXJhaXNlIiwgaGFzTm9BcmcgfSwgeyAiLW5vcmFpc2UiLCBoYXNO
b0FyZyB9LAogICB7ICItcGVyc2lzdCIsIGhhc05vQXJnIH0KfTsKCgoKc3RhdGljIEZJTEUgKlgx
MV9pcGM7CgpzdGF0aWMgY2hhciAqKnhhcmd2ID0gKGNoYXIgKiopKCh2b2lkICopMCk7CnN0YXRp
YyBjaGFyICpvcHR2ZWNbMiooc2l6ZW9mKFgxMV9vcHRzKSAvIHNpemVvZihYMTFfb3B0c1swXSkp
KzFdOwoKCgpzdGF0aWMgY2hhciBYMTFfY29tbWFuZFtdID0gImdudXBsb3RfeDExIjsKCgoKCgoK
aW50ClgxMV9hcmdzKGFyZ2MsIGFyZ3YpCmludCBhcmdjOwpjaGFyICphcmd2W107CnsKICAgIGlu
dCBueDExID0gMCwgaSA9IDAsIG47CgogICAgeGFyZ3YgPSAoY2hhciAqKikgZ3BfYWxsb2MgKGFy
Z2Mqc2l6ZW9mKGNoYXIgKiksICI8eGFyZ3Y+Iik7CgogICAgaWYgKCF4YXJndikgewogICAgICAg
IGZwdXRzICgibm90IGVub3VnaCBtZW1vcnkgdG8gY29weSBhcmd2IC0gcXVpdHRpbmdcbiIsIHN0
ZGVycik7CiAgICAgICAgZXhpdCAoMSk7CiAgICB9CgoKCiAgICBtZW1jcHkgKHhhcmd2LCBhcmd2
LCBhcmdjKnNpemVvZihjaGFyICopKTsKICAgIG9wdHZlY1tpKytdID0gWDExX2NvbW1hbmQ7Cgog
ICAgd2hpbGUgKCsrYXJndiwgKyt4YXJndiwgLS1hcmdjID4gMCkgewogICAgICAgIGZvciAobiA9
IDA7IG4gPCAoc2l6ZW9mKFgxMV9vcHRzKSAvIHNpemVvZihYMTFfb3B0c1swXSkpOyBuKyspIHsK
ICAgICAgICAgICAgaWYgKF9fZXh0ZW5zaW9uX18gKHsgc2l6ZV90IF9fczFfbGVuLCBfX3MyX2xl
bjsgKF9fYnVpbHRpbl9jb25zdGFudF9wICgqYXJndikgJiYgX19idWlsdGluX2NvbnN0YW50X3Ag
KFgxMV9vcHRzW25dLm9wdGlvbikgJiYgKF9fczFfbGVuID0gc3RybGVuICgqYXJndiksIF9fczJf
bGVuID0gc3RybGVuIChYMTFfb3B0c1tuXS5vcHRpb24pLCAoISgoc2l6ZV90KShjb25zdCB2b2lk
ICopKCgqYXJndikgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoKmFyZ3YpID09IDEpIHx8
IF9fczFfbGVuID49IDQpICYmICghKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKFgxMV9vcHRzW25d
Lm9wdGlvbikgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoWDExX29wdHNbbl0ub3B0aW9u
KSA9PSAxKSB8fCBfX3MyX2xlbiA+PSA0KSkgPyBtZW1jbXAgKChfX2NvbnN0IGNoYXIgKikgKCph
cmd2KSwgKF9fY29uc3QgY2hhciAqKSAoWDExX29wdHNbbl0ub3B0aW9uKSwgKF9fczFfbGVuIDwg
X19zMl9sZW4gPyBfX3MxX2xlbiA6IF9fczJfbGVuKSArIDEpIDogKF9fYnVpbHRpbl9jb25zdGFu
dF9wICgqYXJndikgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCphcmd2KSArIDEpIC0gKHNp
emVfdCkoY29uc3Qgdm9pZCAqKSgqYXJndikgPT0gMSkgJiYgKF9fczFfbGVuID0gc3RybGVuICgq
YXJndiksIF9fczFfbGVuIDwgNCkgPyAoX19idWlsdGluX2NvbnN0YW50X3AgKFgxMV9vcHRzW25d
Lm9wdGlvbikgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKFgxMV9vcHRzW25dLm9wdGlvbikg
KyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoWDExX29wdHNbbl0ub3B0aW9uKSA9PSAxKSA/
IChfX2V4dGVuc2lvbl9fICh7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5z
aWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgqYXJndikpWzBdIC0gKChfX2NvbnN0IHVu
c2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKShYMTFfb3B0c1tuXS5vcHRpb24pKVswXSk7
IGlmIChfX3MxX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgqYXJndikpWzFdIC0gKChfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoWDExX29wdHNbbl0ub3B0aW9u
KSlbMV0pOyBpZiAoX19zMV9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAo
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoKmFyZ3YpKVsyXSAt
ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKFgxMV9vcHRzW25d
Lm9wdGlvbikpWzJdKTsgaWYgKF9fczFfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3Vs
dCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgqYXJndikp
WzNdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoWDExX29w
dHNbbl0ub3B0aW9uKSlbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSA6IChfX2V4dGVuc2lvbl9fICh7
IF9fY29uc3QgdW5zaWduZWQgY2hhciAqX19zMiA9IChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikg
KF9fY29uc3QgY2hhciAqKSAoWDExX29wdHNbbl0ub3B0aW9uKTsgcmVnaXN0ZXIgaW50IF9fcmVz
dWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCphcmd2
KSlbMF0gLSBfX3MyWzBdKTsgaWYgKF9fczFfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9f
cmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCph
cmd2KSlbMV0gLSBfX3MyWzFdKTsgaWYgKF9fczFfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7
IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KCphcmd2KSlbMl0gLSBfX3MyWzJdKTsgaWYgKF9fczFfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAw
KSBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop
ICgqYXJndikpWzNdIC0gX19zMlszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpKSA6IChfX2J1aWx0aW5f
Y29uc3RhbnRfcCAoWDExX29wdHNbbl0ub3B0aW9uKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAq
KSgoWDExX29wdHNbbl0ub3B0aW9uKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKShYMTFf
b3B0c1tuXS5vcHRpb24pID09IDEpICYmIChfX3MyX2xlbiA9IHN0cmxlbiAoWDExX29wdHNbbl0u
b3B0aW9uKSwgX19zMl9sZW4gPCA0KSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoKmFyZ3YpICYm
ICgoc2l6ZV90KShjb25zdCB2b2lkICopKCgqYXJndikgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZv
aWQgKikoKmFyZ3YpID09IDEpID8gKF9fZXh0ZW5zaW9uX18gKHsgcmVnaXN0ZXIgaW50IF9fcmVz
dWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCphcmd2
KSlbMF0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopKFgxMV9v
cHRzW25dLm9wdGlvbikpWzBdKTsgaWYgKF9fczJfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7
IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KCphcmd2KSlbMV0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop
IChYMTFfb3B0c1tuXS5vcHRpb24pKVsxXSk7IGlmIChfX3MyX2xlbiA+IDEgJiYgX19yZXN1bHQg
PT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBj
aGFyICopICgqYXJndikpWzJdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg
Y2hhciAqKSAoWDExX29wdHNbbl0ub3B0aW9uKSlbMl0pOyBpZiAoX19zMl9sZW4gPiAyICYmIF9f
cmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikgKCphcmd2KSlbM10gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19j
b25zdCBjaGFyICopIChYMTFfb3B0c1tuXS5vcHRpb24pKVszXSk7IH0gfSBfX3Jlc3VsdDsgfSkp
IDogKF9fZXh0ZW5zaW9uX18gKHsgX19jb25zdCB1bnNpZ25lZCBjaGFyICpfX3MxID0gKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgqYXJndik7IHJlZ2lzdGVyIGlu
dCBfX3Jlc3VsdCA9IF9fczFbMF0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25z
dCBjaGFyICopIChYMTFfb3B0c1tuXS5vcHRpb24pKVswXTsgaWYgKF9fczJfbGVuID4gMCAmJiBf
X3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKF9fczFbMV0gLSAoKF9fY29uc3QgdW5zaWduZWQg
Y2hhciAqKSAoX19jb25zdCBjaGFyICopIChYMTFfb3B0c1tuXS5vcHRpb24pKVsxXSk7IGlmIChf
X3MyX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9IChfX3MxWzJdIC0gKChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoWDExX29wdHNbbl0ub3B0
aW9uKSlbMl0pOyBpZiAoX19zMl9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0g
KF9fczFbM10gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChY
MTFfb3B0c1tuXS5vcHRpb24pKVszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpKSA6IHN0cmNtcCAoKmFy
Z3YsIFgxMV9vcHRzW25dLm9wdGlvbikpKSk7IH0pID09IDApIHsKICAgICAgICAgICAgICAgIG9w
dHZlY1tpKytdID0gKnhhcmd2OwogICAgICAgICAgICAgICAgaWYgKF9fZXh0ZW5zaW9uX18gKHsg
c2l6ZV90IF9fczFfbGVuLCBfX3MyX2xlbjsgKF9fYnVpbHRpbl9jb25zdGFudF9wICgqYXJndikg
JiYgX19idWlsdGluX2NvbnN0YW50X3AgKCItZGlzcGxheSIpICYmIChfX3MxX2xlbiA9IHN0cmxl
biAoKmFyZ3YpLCBfX3MyX2xlbiA9IHN0cmxlbiAoIi1kaXNwbGF5IiksICghKChzaXplX3QpKGNv
bnN0IHZvaWQgKikoKCphcmd2KSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgqYXJndikg
PT0gMSkgfHwgX19zMV9sZW4gPj0gNCkgJiYgKCEoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoIi1k
aXNwbGF5IikgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoIi1kaXNwbGF5IikgPT0gMSkg
fHwgX19zMl9sZW4gPj0gNCkpID8gbWVtY21wICgoX19jb25zdCBjaGFyICopICgqYXJndiksIChf
X2NvbnN0IGNoYXIgKikgKCItZGlzcGxheSIpLCAoX19zMV9sZW4gPCBfX3MyX2xlbiA/IF9fczFf
bGVuIDogX19zMl9sZW4pICsgMSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AgKCphcmd2KSAmJiAo
KHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoKmFyZ3YpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lk
ICopKCphcmd2KSA9PSAxKSAmJiAoX19zMV9sZW4gPSBzdHJsZW4gKCphcmd2KSwgX19zMV9sZW4g
PCA0KSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoIi1kaXNwbGF5IikgJiYgKChzaXplX3QpKGNv
bnN0IHZvaWQgKikoKCItZGlzcGxheSIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKCIt
ZGlzcGxheSIpID09IDEpID8gKF9fZXh0ZW5zaW9uX18gKHsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0
ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCphcmd2KSlb
MF0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopKCItZGlzcGxh
eSIpKVswXSk7IGlmIChfX3MxX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9
ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgqYXJndikpWzFd
IC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi1kaXNwbGF5
IikpWzFdKTsgaWYgKF9fczFfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0g
KCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCphcmd2KSlbMl0g
LSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiLWRpc3BsYXki
KSlbMl0pOyBpZiAoX19zMV9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgo
X19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCphcmd2KSlbM10gLSAo
KF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiLWRpc3BsYXkiKSlb
M10pOyB9IH0gX19yZXN1bHQ7IH0pKSA6IChfX2V4dGVuc2lvbl9fICh7IF9fY29uc3QgdW5zaWdu
ZWQgY2hhciAqX19zMiA9IChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAq
KSAoIi1kaXNwbGF5Iik7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWdu
ZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgqYXJndikpWzBdIC0gX19zMlswXSk7IGlmIChf
X3MxX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5z
aWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgqYXJndikpWzFdIC0gX19zMlsxXSk7IGlm
IChfX3MxX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3Qg
dW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgqYXJndikpWzJdIC0gX19zMlsyXSk7
IGlmIChfX3MxX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoKmFyZ3YpKVszXSAtIF9fczJbM10p
OyB9IH0gX19yZXN1bHQ7IH0pKSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AgKCItZGlzcGxheSIp
ICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKCgiLWRpc3BsYXkiKSArIDEpIC0gKHNpemVfdCko
Y29uc3Qgdm9pZCAqKSgiLWRpc3BsYXkiKSA9PSAxKSAmJiAoX19zMl9sZW4gPSBzdHJsZW4gKCIt
ZGlzcGxheSIpLCBfX3MyX2xlbiA8IDQpID8gKF9fYnVpbHRpbl9jb25zdGFudF9wICgqYXJndikg
JiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCphcmd2KSArIDEpIC0gKHNpemVfdCkoY29uc3Qg
dm9pZCAqKSgqYXJndikgPT0gMSkgPyAoX19leHRlbnNpb25fXyAoeyByZWdpc3RlciBpbnQgX19y
ZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoKmFy
Z3YpKVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikoIi1k
aXNwbGF5IikpWzBdKTsgaWYgKF9fczJfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVz
dWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCphcmd2
KSlbMV0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiLWRp
c3BsYXkiKSlbMV0pOyBpZiAoX19zMl9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1
bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoKmFyZ3Yp
KVsyXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCItZGlz
cGxheSIpKVsyXSk7IGlmIChfX3MyX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQg
PSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoKmFyZ3YpKVsz
XSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCItZGlzcGxh
eSIpKVszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpIDogKF9fZXh0ZW5zaW9uX18gKHsgX19jb25zdCB1
bnNpZ25lZCBjaGFyICpfX3MxID0gKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBj
aGFyICopICgqYXJndik7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9IF9fczFbMF0gLSAoKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiLWRpc3BsYXkiKSlbMF07IGlm
IChfX3MyX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9IChfX3MxWzFdIC0g
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi1kaXNwbGF5Iikp
WzFdKTsgaWYgKF9fczJfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKF9f
czFbMl0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiLWRp
c3BsYXkiKSlbMl0pOyBpZiAoX19zMl9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0
ID0gKF9fczFbM10gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop
ICgiLWRpc3BsYXkiKSlbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSkgOiBzdHJjbXAgKCphcmd2LCAi
LWRpc3BsYXkiKSkpKTsgfSkgPT0gMCkKICAgICAgICAgICAgICAgICAgICBYMTFfRGlzcGxheSsr
OwogICAgICAgICAgICAgICAgaWYgKFgxMV9vcHRzW25dLmFyZyA9PSBoYXNBcmcpIHsKICAgICAg
ICAgICAgICAgICAgICBpZiAoLS1hcmdjIDw9IDApCiAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBueDExOwogICAgICAgICAgICAgICAgICAgIG9wdHZlY1tpKytdID0gKisreGFyZ3YsICsr
YXJndjsKICAgICAgICAgICAgICAgICAgICBueDExKys7CiAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICBueDExKys7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQog
ICAgICAgIH0KICAgICAgICBpZiAobiA9PSAoc2l6ZW9mKFgxMV9vcHRzKSAvIHNpemVvZihYMTFf
b3B0c1swXSkpKQogICAgICAgICAgICBicmVhazsKICAgIH0KCiAgICByZXR1cm4gKG54MTEpOwp9
CgoKc3RhdGljIHVuc2lnbmVkIGludCBYMTFfcGxvdF9udW1iZXI7CgpzdGF0aWMgdm9pZApYMTFf
b3B0aW9ucygpCnsKICAgIGlmIChhbG1vc3RfZXF1YWxzKGNfdG9rZW4sICJyZXMkZXQiKSkgewog
ICAgICAgIFgxMV9hdGV4aXQgKCk7CiAgICAgICAgKytjX3Rva2VuOwogICAgfQogICAgaWYgKCEo
Y190b2tlbiA+PSBudW1fdG9rZW5zIHx8IGVxdWFscyhjX3Rva2VuLCI7IikpKSB7CiAgICAgICAg
c3RydWN0IHZhbHVlIGE7CiAgICAgICAgWDExX3Bsb3RfbnVtYmVyID0gKGludCkgcmVhbChjb25z
dF9leHByZXNzKCZhKSk7CgogICAgfQogICAgc3ByaW50Zih0ZXJtX29wdGlvbnMsICIlZCIsIFgx
MV9wbG90X251bWJlcik7Cn0KIyAyNDAgInRlcm0veDExLnRybSIKc3RhdGljIHZvaWQKWDExX2F0
ZXhpdCAoKQp7CiAgICBpZiAoWDExX2lwYykgewogICAgICAgIGZwdXRzKCJSXG4iLCBYMTFfaXBj
KTsKICAgICAgICBmY2xvc2UoWDExX2lwYyk7CgogICAgICAgIFgxMV9pcGMgPSAoKHZvaWQgKikw
KTsKICAgIH0KfQoKc3RhdGljIHZvaWQKWDExX2luaXQoKQp7CiAgICBzdGF0aWMgaW50IGJlZW5f
aGVyZSA9IDA7CgogICAgaWYgKCFYMTFfaXBjKSB7CgoKCgoKCgogICAgICAgIGludCBmZGVzWzJd
OwoKICAgICAgICBpZiAocGlwZShmZGVzKSkgcGVycm9yKCJwaXBlKCkgZmFpbGVkOiIpOwoKICAg
ICAgICBpZiAoZm9yaygpID09IDApIHsKCiAgICAgICAgICAgIGNsb3NlKGZkZXNbMV0pOwogICAg
ICAgICAgICBkdXAyKGZkZXNbMF0sIDApOwogICAgICAgICAgICBleGVjdnAoWDExX2NvbW1hbmQs
IG9wdHZlYyk7CgogICAgICAgICAgICBwZXJyb3IoImV4ZWMgZmFpbGVkIik7CiAgICAgICAgICAg
IGV4aXQoMSk7CiAgICAgICAgfQoKICAgICAgICBjbG9zZShmZGVzWzBdKTsKICAgICAgICBYMTFf
aXBjID0gZmRvcGVuKGZkZXNbMV0sICJ3Iik7CgogICAgfQoKICAgIGlmICghYmVlbl9oZXJlKSB7
CiAgICAgICAgYXRleGl0KFgxMV9hdGV4aXQpOwogICAgICAgIGJlZW5faGVyZSsrOwogICAgfQp9
CgpzdGF0aWMgdm9pZApYMTFfcmVzZXQoKQp7Cgp9CiMgNTI5ICJ0ZXJtL3gxMS50cm0iCnN0YXRp
YyB2b2lkClgxMV9ncmFwaGljcygpCnsKICAgICAgICAgICAgICAgICAgIDsKCgogICAgZnByaW50
ZihYMTFfaXBjLCAiRyVkXG4iLFgxMV9wbG90X251bWJlcik7CgoKCgoKfQoKc3RhdGljIHZvaWQK
WDExX3RleHQoKQp7CiAgICBmcHJpbnRmKFgxMV9pcGMsICJFXG4iKTsKICAgIGZmbHVzaChYMTFf
aXBjKTsKCgoKCgogICAgICAgICAgICAgIDsKfQoKCnN0YXRpYyB2b2lkClgxMV9tb3ZlKHgsIHkp
CnVuc2lnbmVkIGludCB4LCB5Owp7CiAgICBmcHJpbnRmKFgxMV9pcGMsICJNJTA0ZCUwNGRcbiIs
eCx5KTsKfQoKc3RhdGljIHZvaWQKWDExX3ZlY3Rvcih4LCB5KQp1bnNpZ25lZCBpbnQgeCwgeTsK
ewogICAgZnByaW50ZihYMTFfaXBjLCAiViUwNGQlMDRkXG4iLHgseSk7Cn0KCnN0YXRpYyB2b2lk
ClgxMV9wb2ludHNpemUocHMpCmRvdWJsZSBwczsKewogICAgZnByaW50ZihYMTFfaXBjLCAiUDcl
MDRkJTA0ZFxuIiwoaW50KSAodGVybS0+aF90aWMgKiBwcyAqIDAuNSksKGludCkgKHRlcm0tPnZf
dGljICogcHMgKiAwLjUpKTsKCn0KCnN0YXRpYyB2b2lkClgxMV9saW5ld2lkdGgobHcpCmRvdWJs
ZSBsdzsKewogICAgZnByaW50ZihYMTFfaXBjLCAiVyUwNGRcbiIsKGludCkgbHcpOwp9CgpzdGF0
aWMgdm9pZApYMTFfbGluZXR5cGUobHQpCmludCBsdDsKewogICAgZnByaW50ZihYMTFfaXBjLCAi
TCUwNGRcbiIsbHQpOwp9CgpzdGF0aWMgdm9pZApYMTFfcHV0X3RleHQoeCwgeSwgc3RyKQp1bnNp
Z25lZCBpbnQgeCwgeTsKY2hhciBzdHJbXTsKewoKICAgIGlmICh4IDwgMTAwMDAgJiYgeSA8IDEw
MDAwKSB7CiAgICAgICAgZnByaW50ZihYMTFfaXBjLCAiVCUwNGQlMDRkJXNcbiIseCx5LHN0cik7
CiAgICB9Cn0KCnN0YXRpYyBpbnQKWDExX2p1c3RpZnlfdGV4dChtb2RlKQplbnVtIEpVU1RJRlkg
bW9kZTsKewogICAgZnByaW50ZihYMTFfaXBjLCAiSiUwNGRcbiIsbW9kZSk7CiAgICByZXR1cm4g
KDEpOwp9CgpzdGF0aWMgdm9pZApYMTFfcG9pbnQoeCwgeSwgbnVtYmVyKQp1bnNpZ25lZCBpbnQg
eCwgeTsKaW50IG51bWJlcjsKewogICAgaWYgKG51bWJlciA+PSAwKQogICAgICAgIG51bWJlciAl
PSA2OwogICAgbnVtYmVyICs9IDE7CiAgICBmcHJpbnRmKFgxMV9pcGMsICJQJTAxZCUwNGQlMDRk
XG4iLG51bWJlcix4LHkpOwp9CgpzdGF0aWMgdm9pZApYMTFfZmlsbGJveChzdHlsZSwgeCwgeSwg
dywgaCkKaW50IHN0eWxlOwp1bnNpZ25lZCBpbnQgeCwgeSwgdywgaDsKewogICAgZnByaW50ZihY
MTFfaXBjLCAiRiUwNGQlMDR1JTA0dSUwNHUlMDR1XG4iLHN0eWxlLHgseSx3LGgpOwp9CiMgMjU0
ICJ0ZXJtLmgiIDIKCgoKIyAxICJ0ZXJtL2FpLnRybSIgMQojIDY0ICJ0ZXJtL2FpLnRybSIKIyAx
ICJ0ZXJtL2RyaXZlci5oIiAxCiMgNjUgInRlcm0vYWkudHJtIiAyCgoKCgoKCnN0YXRpYyB2b2lk
IEFJX2luaXQgKHZvaWQpOwpzdGF0aWMgdm9pZCBBSV9ncmFwaGljcyAodm9pZCk7CnN0YXRpYyB2
b2lkIEFJX3RleHQgKHZvaWQpOwpzdGF0aWMgdm9pZCBBSV9saW5ldHlwZSAoaW50IGxpbmV0eXBl
KTsKc3RhdGljIHZvaWQgQUlfbW92ZSAodW5zaWduZWQgaW50IHgsIHVuc2lnbmVkIGludCB5KTsK
c3RhdGljIHZvaWQgQUlfdmVjdG9yICh1bnNpZ25lZCBpbnQgeCwgdW5zaWduZWQgaW50IHkpOwpz
dGF0aWMgdm9pZCBBSV9wdXRfdGV4dCAodW5zaWduZWQgaW50IHgsIHVuc2lnbmVkIGludCB5LCBj
aGFyICpzdHIpOwpzdGF0aWMgaW50IEFJX3RleHRfYW5nbGUgKGludCBhbmcpOwpzdGF0aWMgdm9p
ZCBBSV9yZXNldCAodm9pZCk7CnN0YXRpYyB2b2lkIEFJX29wdGlvbnMgKHZvaWQpOwpzdGF0aWMg
aW50IEFJX2p1c3RpZnlfdGV4dCAoZW51bSBKVVNUSUZZIG1vZGUpOwpzdGF0aWMgdm9pZCBBSV9z
dXNwZW5kICgpOwpzdGF0aWMgdm9pZCBBSV9yZXN1bWUgKCk7CnN0YXRpYyBpbnQgQUlfc2V0X2Zv
bnQgKGNoYXIgKmZvbnQpOwojIDExMiAidGVybS9haS50cm0iCmV4dGVybiBjaGFyIHZlcnNpb25b
XTsKZXh0ZXJuIGNoYXIgcGF0Y2hsZXZlbFtdOwoKY2hhciBhaV9mb250WzUwICsgMV0gPSAiVGlt
ZXMtUm9tYW4iOwppbnQgYWlfZm9udHNpemUgPSAxNDsKY2hhciBhaV9vbGRmb250WzUwICsgMV0g
PSAiVGltZXMtUm9tYW4iOwppbnQgYWlfb2xkZm9udHNpemUgPSAxNDsKVEJPT0xFQU4gYWlfY29s
b3IgPSAwOwpUQk9PTEVBTiBhaV9zdHJva2UgPSAwOwppbnQgYWlfcGFnZSA9IDA7CmludCBhaV9w
YXRoX2NvdW50ID0gMDsKaW50IGFpX2FuZyA9IDA7CmludCBhaV9zdWJncm91cF9sZXZlbCA9IDA7
CmludCBhaV9tdWx0aXBsb3RfZ3JvdXAgPSAwOwplbnVtIEpVU1RJRlkgYWlfanVzdGlmeSA9IExF
RlQ7CgoKc3RhdGljIHZvaWQgQUlfb3B0aW9ucygpCnsKICAgIGlmICghKGNfdG9rZW4gPj0gbnVt
X3Rva2VucyB8fCBlcXVhbHMoY190b2tlbiwiOyIpKSkgewogICAgICAgIGlmIChhbG1vc3RfZXF1
YWxzKGNfdG9rZW4sICJkJGVmYXVsdCIpKSB7CiAgICAgICAgICAgIGFpX2NvbG9yID0gMDsKICAg
ICAgICAgICAgKF9fZXh0ZW5zaW9uX18gKF9fYnVpbHRpbl9jb25zdGFudF9wICgiVGltZXMtUm9t
YW4iKSA/ICgoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoIlRpbWVzLVJvbWFuIikgKyAxKSAtIChz
aXplX3QpKGNvbnN0IHZvaWQgKikoIlRpbWVzLVJvbWFuIikgPT0gMSkgJiYgc3RybGVuICgiVGlt
ZXMtUm9tYW4iKSArIDEgPD0gOCA/IF9fc3RyY3B5X3NtYWxsIChhaV9mb250LCBfX2V4dGVuc2lv
bl9fICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiVGltZXMt
Um9tYW4iKSlbMCArIDFdIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25z
dCBjaGFyICopICgiVGltZXMtUm9tYW4iKSlbMF0pLCBfX2V4dGVuc2lvbl9fICgoKF9fY29uc3Qg
dW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiVGltZXMtUm9tYW4iKSlbNCArIDFd
IDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiVGlt
ZXMtUm9tYW4iKSlbNF0pLCBfX2V4dGVuc2lvbl9fICgoKCgoX19jb25zdCB1bnNpZ25lZCBjaGFy
ICopIChfX2NvbnN0IGNoYXIgKikgKCJUaW1lcy1Sb21hbiIpKVswICsgM10gPDwgOCB8ICgoX19j
b25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJUaW1lcy1Sb21hbiIpKVsw
ICsgMl0pIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop
ICgiVGltZXMtUm9tYW4iKSlbMCArIDFdKSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIg
KikgKF9fY29uc3QgY2hhciAqKSAoIlRpbWVzLVJvbWFuIikpWzBdKSwgX19leHRlbnNpb25fXyAo
KCgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiVGltZXMtUm9t
YW4iKSlbNCArIDNdIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBj
aGFyICopICgiVGltZXMtUm9tYW4iKSlbNCArIDJdKSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIlRpbWVzLVJvbWFuIikpWzQgKyAxXSkgPDwgOCB8
ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJUaW1lcy1Sb21h
biIpKVs0XSksIHN0cmxlbiAoIlRpbWVzLVJvbWFuIikgKyAxKSA6IChjaGFyICopIG1lbWNweSAo
YWlfZm9udCwgIlRpbWVzLVJvbWFuIiwgc3RybGVuICgiVGltZXMtUm9tYW4iKSArIDEpKSA6IHN0
cmNweSAoYWlfZm9udCwgIlRpbWVzLVJvbWFuIikpKTsKICAgICAgICAgICAgYWlfZm9udHNpemUg
PSAxNDsKICAgICAgICAgICAgKF9fZXh0ZW5zaW9uX18gKF9fYnVpbHRpbl9jb25zdGFudF9wICgi
VGltZXMtUm9tYW4iKSA/ICgoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoIlRpbWVzLVJvbWFuIikg
KyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoIlRpbWVzLVJvbWFuIikgPT0gMSkgJiYgc3Ry
bGVuICgiVGltZXMtUm9tYW4iKSArIDEgPD0gOCA/IF9fc3RyY3B5X3NtYWxsIChhaV9vbGRmb250
LCBfX2V4dGVuc2lvbl9fICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFy
ICopICgiVGltZXMtUm9tYW4iKSlbMCArIDFdIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hh
ciAqKSAoX19jb25zdCBjaGFyICopICgiVGltZXMtUm9tYW4iKSlbMF0pLCBfX2V4dGVuc2lvbl9f
ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiVGltZXMtUm9t
YW4iKSlbNCArIDFdIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBj
aGFyICopICgiVGltZXMtUm9tYW4iKSlbNF0pLCBfX2V4dGVuc2lvbl9fICgoKCgoX19jb25zdCB1
bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJUaW1lcy1Sb21hbiIpKVswICsgM10g
PDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJUaW1l
cy1Sb21hbiIpKVswICsgMl0pIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19j
b25zdCBjaGFyICopICgiVGltZXMtUm9tYW4iKSlbMCArIDFdKSA8PCA4IHwgKChfX2NvbnN0IHVu
c2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIlRpbWVzLVJvbWFuIikpWzBdKSwgX19l
eHRlbnNpb25fXyAoKCgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop
ICgiVGltZXMtUm9tYW4iKSlbNCArIDNdIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAq
KSAoX19jb25zdCBjaGFyICopICgiVGltZXMtUm9tYW4iKSlbNCArIDJdKSA8PCA4IHwgKChfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIlRpbWVzLVJvbWFuIikpWzQg
KyAxXSkgPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KCJUaW1lcy1Sb21hbiIpKVs0XSksIHN0cmxlbiAoIlRpbWVzLVJvbWFuIikgKyAxKSA6IChjaGFy
ICopIG1lbWNweSAoYWlfb2xkZm9udCwgIlRpbWVzLVJvbWFuIiwgc3RybGVuICgiVGltZXMtUm9t
YW4iKSArIDEpKSA6IHN0cmNweSAoYWlfb2xkZm9udCwgIlRpbWVzLVJvbWFuIikpKTsKICAgICAg
ICAgICAgYWlfb2xkZm9udHNpemUgPSAxNDsKICAgICAgICAgICAgY190b2tlbisrOwogICAgICAg
IH0KICAgIH0KICAgIGlmICghKGNfdG9rZW4gPj0gbnVtX3Rva2VucyB8fCBlcXVhbHMoY190b2tl
biwiOyIpKSkgewogICAgICAgIGlmIChhbG1vc3RfZXF1YWxzKGNfdG9rZW4sICJtJG9ub2Nocm9t
ZSIpKSB7CiAgICAgICAgICAgIGFpX2NvbG9yID0gMDsKICAgICAgICAgICAgY190b2tlbisrOwog
ICAgICAgIH0gZWxzZSBpZiAoYWxtb3N0X2VxdWFscyhjX3Rva2VuLCAiYyRvbG9yIikKICAgICAg
ICAgICAgICAgICAgIHx8IGFsbW9zdF9lcXVhbHMoY190b2tlbiwgImMkb2xvdXIiKSkgewogICAg
ICAgICAgICBhaV9jb2xvciA9IDE7CiAgICAgICAgICAgIGNfdG9rZW4rKzsKICAgICAgICB9CiAg
ICB9CiAgICBpZiAoIShjX3Rva2VuID49IG51bV90b2tlbnMgfHwgZXF1YWxzKGNfdG9rZW4sIjsi
KSkgJiYgaXNzdHJpbmcoY190b2tlbikpIHsKICAgICAgICBxdW90ZV9zdHIoYWlfZm9udCwgY190
b2tlbiwgNTApOwogICAgICAgIChfX2V4dGVuc2lvbl9fIChfX2J1aWx0aW5fY29uc3RhbnRfcCAo
YWlfZm9udCkgPyAoKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKGFpX2ZvbnQpICsgMSkgLSAoc2l6
ZV90KShjb25zdCB2b2lkICopKGFpX2ZvbnQpID09IDEpICYmIHN0cmxlbiAoYWlfZm9udCkgKyAx
IDw9IDggPyBfX3N0cmNweV9zbWFsbCAoYWlfb2xkZm9udCwgX19leHRlbnNpb25fXyAoKChfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoYWlfZm9udCkpWzAgKyAxXSA8
PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoYWlfZm9u
dCkpWzBdKSwgX19leHRlbnNpb25fXyAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29u
c3QgY2hhciAqKSAoYWlfZm9udCkpWzQgKyAxXSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNo
YXIgKikgKF9fY29uc3QgY2hhciAqKSAoYWlfZm9udCkpWzRdKSwgX19leHRlbnNpb25fXyAoKCgo
KF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChhaV9mb250KSlbMCAr
IDNdIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChh
aV9mb250KSlbMCArIDJdKSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29u
c3QgY2hhciAqKSAoYWlfZm9udCkpWzAgKyAxXSkgPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBj
aGFyICopIChfX2NvbnN0IGNoYXIgKikgKGFpX2ZvbnQpKVswXSksIF9fZXh0ZW5zaW9uX18gKCgo
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoYWlfZm9udCkpWzQg
KyAzXSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAo
YWlfZm9udCkpWzQgKyAyXSkgPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikgKGFpX2ZvbnQpKVs0ICsgMV0pIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQg
Y2hhciAqKSAoX19jb25zdCBjaGFyICopIChhaV9mb250KSlbNF0pLCBzdHJsZW4gKGFpX2ZvbnQp
ICsgMSkgOiAoY2hhciAqKSBtZW1jcHkgKGFpX29sZGZvbnQsIGFpX2ZvbnQsIHN0cmxlbiAoYWlf
Zm9udCkgKyAxKSkgOiBzdHJjcHkgKGFpX29sZGZvbnQsIGFpX2ZvbnQpKSk7CiAgICAgICAgY190
b2tlbisrOwogICAgfQogICAgaWYgKCEoY190b2tlbiA+PSBudW1fdG9rZW5zIHx8IGVxdWFscyhj
X3Rva2VuLCI7IikpKSB7CgogICAgICAgIHN0cnVjdCB2YWx1ZSBhOwogICAgICAgIGFpX2ZvbnRz
aXplID0gKGludCkgcmVhbChjb25zdF9leHByZXNzKCZhKSk7CiAgICAgICAgYWlfb2xkZm9udHNp
emUgPSBhaV9mb250c2l6ZTsKICAgICAgICBjX3Rva2VuKys7CiAgICAgICAgdGVybS0+dl9jaGFy
ID0gKHVuc2lnbmVkIGludCkgKGFpX2ZvbnRzaXplICogKDEwLjApKTsKICAgICAgICB0ZXJtLT5o
X2NoYXIgPSAodW5zaWduZWQgaW50KSAoYWlfZm9udHNpemUgKiAoMTAuMCkgKiA2IC8gMTApOwog
ICAgfQogICAgc3ByaW50Zih0ZXJtX29wdGlvbnMsICIlcyBcIiVzXCIgJWQiLAogICAgICAgICAg
ICBhaV9jb2xvciA/ICJjb2xvciIgOiAibW9ub2Nocm9tZSIsIGFpX2ZvbnQsIGFpX2ZvbnRzaXpl
KTsKfQoKCnN0YXRpYyB2b2lkIEFJX2luaXQoKQp7CiAgICBhaV9wYWdlID0gMDsKCiAgICBmcHJp
bnRmKGdwb3V0ZmlsZSwgIiUlIVBTLUFkb2JlLTIuMCBFUFNGLTEuMlxuJSUlJUNyZWF0b3I6IEFk
b2JlIElsbHVzdHJhdG9yKFRNKSAzLjJcbiUlJSVUcnVlQ3JlYXRvcjogZ251cGxvdCAlcyBwYXRj
aGxldmVsICVzIGFpIHRlcm1pbmFsXG4lJSUlQm91bmRpbmdCb3g6ICVkICVkICVkICVkXG4lJSUl
VGVtcGxhdGU6XG4lJSUlRW5kQ29tbWVudHNcbiUlJSVFbmRQcm9sb2dcbiIsCgoKCgoKCiAgICAg
ICAgICAgIHZlcnNpb24sIHBhdGNobGV2ZWwsCiAgICAgICAgICAgIDUwLCA1MCwKICAgICAgICAg
ICAgKGludCkgKCg1MDAwKSAvICgxMC4wKSArIDAuNSArIDUwKSwKICAgICAgICAgICAgKGludCkg
KCgzNTAwKSAvICgxMC4wKSArIDAuNSArIDUwKSk7Cn0KCgpzdGF0aWMgdm9pZCBBSV9ncmFwaGlj
cygpCnsKICAgIGFpX3BhZ2UrKzsKCiAgICBmcHV0cygiMCBHXG4xIGpcbjEgSlxudVxuIiwgZ3Bv
dXRmaWxlKTsKCgoKCiAgICBhaV9wYXRoX2NvdW50ID0gMDsKICAgIGFpX3N0cm9rZSA9IDA7Cn0K
CgpzdGF0aWMgdm9pZCBBSV90ZXh0KCkKewogICAgaWYgKGFpX3N0cm9rZSkgewogICAgICAgIGZw
dXRzKCJTXG4iLCBncG91dGZpbGUpOwogICAgICAgIGFpX3N0cm9rZSA9IDA7CiAgICB9CiAgICB3
aGlsZSAoYWlfc3ViZ3JvdXBfbGV2ZWwpIHsKICAgICAgICBmcHV0cygiVVxuIiwgZ3BvdXRmaWxl
KTsKICAgICAgICBhaV9zdWJncm91cF9sZXZlbC0tOwogICAgfQogICAgZnB1dHMoIlVcbiIsIGdw
b3V0ZmlsZSk7CiAgICBhaV9wYXRoX2NvdW50ID0gMDsKICAgIGFpX211bHRpcGxvdF9ncm91cCA9
IDA7Cn0KCgpzdGF0aWMgdm9pZCBBSV9yZXNldCgpCnsKICAgIGZwdXRzKCIlJSUlVHJhaWxlclxu
IiwgZ3BvdXRmaWxlKTsKCn0KCgpzdGF0aWMgdm9pZCBBSV9saW5ldHlwZShsaW5ldHlwZSkKaW50
IGxpbmV0eXBlOwp7CiAgICBpZiAoYWlfc3Ryb2tlKSB7CiAgICAgICAgZnB1dHMoIlNcbiIsIGdw
b3V0ZmlsZSk7CiAgICAgICAgYWlfc3Ryb2tlID0gMDsKICAgIH0KICAgIGlmIChhaV9zdWJncm91
cF9sZXZlbCkgewogICAgICAgIGZwdXRzKCJVXG4iLCBncG91dGZpbGUpOwogICAgICAgIGFpX3N1
Ymdyb3VwX2xldmVsLS07CiAgICB9CiAgICBpZiAobGluZXR5cGUgPT0gLTIgJiYgbXVsdGlwbG90
KSB7CgoKCgogICAgICAgIHN3aXRjaCAoYWlfbXVsdGlwbG90X2dyb3VwKSB7CiAgICAgICAgY2Fz
ZSAwOgogICAgICAgICAgICBmcHV0cygidVxuIiwgZ3BvdXRmaWxlKTsKICAgICAgICAgICAgYWlf
c3ViZ3JvdXBfbGV2ZWwrKzsKICAgICAgICAgICAgYWlfbXVsdGlwbG90X2dyb3VwID0gMTsKICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAxOgogICAgICAgICAgICBhaV9tdWx0aXBsb3Rf
Z3JvdXAgPSAyOwogICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlIDI6CiAgICAgICAgICAg
IGFpX211bHRpcGxvdF9ncm91cCA9IDE7CiAgICAgICAgICAgIGZwdXRzKCJVXG51XG4iLCBncG91
dGZpbGUpOwogICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICB9CiAgICBpZiAobGluZXR5
cGUgPT0gLTIgJiYgIW11bHRpcGxvdCkgewogICAgICAgIGlmIChhaV9tdWx0aXBsb3RfZ3JvdXAp
IHsKICAgICAgICAgICAgZnB1dHMoIlVcbiIsIGdwb3V0ZmlsZSk7CiAgICAgICAgICAgIGFpX3N1
Ymdyb3VwX2xldmVsLS07CiAgICAgICAgICAgIGFpX211bHRpcGxvdF9ncm91cCA9IDA7CiAgICAg
ICAgfQogICAgfQogICAgZnB1dHMoInVcbiIsIGdwb3V0ZmlsZSk7CiAgICBhaV9zdWJncm91cF9s
ZXZlbCsrOwoKICAgIHN3aXRjaCAobGluZXR5cGUpIHsKICAgIGNhc2UgLTI6CiAgICAgICAgZnBy
aW50ZihncG91dGZpbGUsICIlLjJmIHdcbiIsICgwLjUqKDEwLjApKSAvICgxMC4wKSAqIDIuMCk7
CiAgICAgICAgaWYgKGFpX2NvbG9yKSB7CiAgICAgICAgICAgIGZwdXRzKCIwIDAgMCAxIEtcbiIs
IGdwb3V0ZmlsZSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgZnB1dHMoIltdIDAgZFxu
IiwgZ3BvdXRmaWxlKTsKICAgICAgICB9CiAgICAgICAgYnJlYWs7CgogICAgY2FzZSAtMToKICAg
ICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgIiUuMmYgd1xuIiwgKDAuNSooMTAuMCkpIC8gKDEwLjAp
IC8gMi4wKTsKICAgICAgICBpZiAoYWlfY29sb3IpIHsKICAgICAgICAgICAgZnB1dHMoIjAgMCAw
IDEgS1xuIiwgZ3BvdXRmaWxlKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBmcHV0cygi
WzEgMl0gMCBkXG4iLCBncG91dGZpbGUpOwogICAgICAgIH0KICAgICAgICBicmVhazsKCiAgICBj
YXNlIDA6CiAgICAgICAgZnByaW50ZihncG91dGZpbGUsICIlLjJmIHdcbiIsICgwLjUqKDEwLjAp
KSAvICgxMC4wKSk7CiAgICAgICAgaWYgKGFpX2NvbG9yKSB7CiAgICAgICAgICAgIGZwdXRzKCIx
IDAgMSAwIEtcbiIsIGdwb3V0ZmlsZSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgZnB1
dHMoIltdIDAgZFxuIiwgZ3BvdXRmaWxlKTsKICAgICAgICB9CiAgICAgICAgYnJlYWs7CgogICAg
Y2FzZSAxOgogICAgICAgIGZwcmludGYoZ3BvdXRmaWxlLCAiJS4yZiB3XG4iLCAoMC41KigxMC4w
KSkgLyAoMTAuMCkpOwogICAgICAgIGlmIChhaV9jb2xvcikgewogICAgICAgICAgICBmcHV0cygi
MSAxIDAgMCBLXG4iLCBncG91dGZpbGUpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGZw
dXRzKCJbNCAyXSAwIGRcbiIsIGdwb3V0ZmlsZSk7CiAgICAgICAgfQogICAgICAgIGJyZWFrOwoK
ICAgIGNhc2UgMjoKICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgIiUuMmYgd1xuIiwgKDAuNSoo
MTAuMCkpIC8gKDEwLjApKTsKICAgICAgICBpZiAoYWlfY29sb3IpIHsKICAgICAgICAgICAgZnB1
dHMoIjAgMSAxIDAgS1xuIiwgZ3BvdXRmaWxlKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICBmcHV0cygiWzIgM10gMCBkXG4iLCBncG91dGZpbGUpOwogICAgICAgIH0KICAgICAgICBicmVh
azsKCiAgICBjYXNlIDM6CiAgICAgICAgZnByaW50ZihncG91dGZpbGUsICIlLjJmIHdcbiIsICgw
LjUqKDEwLjApKSAvICgxMC4wKSk7CiAgICAgICAgaWYgKGFpX2NvbG9yKSB7CiAgICAgICAgICAg
IGZwdXRzKCIwIDEgMCAwIEtcbiIsIGdwb3V0ZmlsZSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgZnB1dHMoIlsxIDEuNV0gMCBkXG4iLCBncG91dGZpbGUpOwogICAgICAgIH0KICAgICAg
ICBicmVhazsKCiAgICBjYXNlIDQ6CiAgICAgICAgZnByaW50ZihncG91dGZpbGUsICIlZiB3XG4i
LCAoMC41KigxMC4wKSkgLyAoMTAuMCkpOwogICAgICAgIGlmIChhaV9jb2xvcikgewogICAgICAg
ICAgICBmcHV0cygiMSAwIDAgMCBLXG4iLCBncG91dGZpbGUpOwogICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgIGZwdXRzKCJbNSAyIDEgMl0gMCBkXG4iLCBncG91dGZpbGUpOwogICAgICAgIH0K
ICAgICAgICBicmVhazsKCiAgICBjYXNlIDU6CiAgICAgICAgZnByaW50ZihncG91dGZpbGUsICIl
LjJmIHdcbiIsICgwLjUqKDEwLjApKSAvICgxMC4wKSk7CiAgICAgICAgaWYgKGFpX2NvbG9yKSB7
CiAgICAgICAgICAgIGZwdXRzKCIwIDAgMSAwIEtcbiIsIGdwb3V0ZmlsZSk7CiAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgZnB1dHMoIls0IDMgMSAzXSAwIGRcbiIsIGdwb3V0ZmlsZSk7CiAg
ICAgICAgfQogICAgICAgIGJyZWFrOwoKICAgIGNhc2UgNjoKICAgICAgICBmcHJpbnRmKGdwb3V0
ZmlsZSwgIiUuMmYgd1xuIiwgKDAuNSooMTAuMCkpIC8gKDEwLjApKTsKICAgICAgICBpZiAoYWlf
Y29sb3IpIHsKICAgICAgICAgICAgZnB1dHMoIjAgMCAwIDEgS1xuIiwgZ3BvdXRmaWxlKTsKICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICBmcHV0cygiWzIgMiAyIDRdIDAgZFxuIiwgZ3BvdXRm
aWxlKTsKICAgICAgICB9CiAgICAgICAgYnJlYWs7CgogICAgY2FzZSA3OgogICAgICAgIGZwcmlu
dGYoZ3BvdXRmaWxlLCAiJS4yZiB3XG4iLCAoMC41KigxMC4wKSkgLyAoMTAuMCkpOwogICAgICAg
IGlmIChhaV9jb2xvcikgewogICAgICAgICAgICBmcHV0cygiMCAwLjcgMSAwIEtcbiIsIGdwb3V0
ZmlsZSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgZnB1dHMoIlsyIDIgMiAyIDIgNF0g
MCBkXG4iLCBncG91dGZpbGUpOwogICAgICAgIH0KICAgICAgICBicmVhazsKCiAgICBjYXNlIDg6
CiAgICAgICAgZnByaW50ZihncG91dGZpbGUsICIlLjJmIHdcbiIsICgwLjUqKDEwLjApKSAvICgx
MC4wKSk7CiAgICAgICAgaWYgKGFpX2NvbG9yKSB7CiAgICAgICAgICAgIGZwdXRzKCIwLjUgMC41
IDAuNSAwIEtcbiIsIGdwb3V0ZmlsZSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgZnB1
dHMoIlsyIDIgMiAyIDIgMiAyIDRdIDAgZFxuIiwgZ3BvdXRmaWxlKTsKICAgICAgICB9CiAgICAg
ICAgYnJlYWs7CiAgICB9CgogICAgYWlfcGF0aF9jb3VudCA9IDA7Cn0KCgpzdGF0aWMgdm9pZCBB
SV9tb3ZlKHgsIHkpCnVuc2lnbmVkIGludCB4LCB5Owp7CiAgICBpZiAoYWlfc3Ryb2tlKQogICAg
ICAgIGZwdXRzKCJTXG4iLCBncG91dGZpbGUpOwogICAgZnByaW50ZihncG91dGZpbGUsICIlLjJm
ICUuMmYgbVxuIiwgeCAvICgxMC4wKSwgeSAvICgxMC4wKSk7CiAgICBhaV9wYXRoX2NvdW50ICs9
IDE7CiAgICBhaV9zdHJva2UgPSAxOwp9CgoKc3RhdGljIHZvaWQgQUlfdmVjdG9yKHgsIHkpCnVu
c2lnbmVkIGludCB4LCB5Owp7CiAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgIiUuMmYgJS4yZiBsXG4i
LCB4IC8gKDEwLjApLCB5IC8gKDEwLjApKTsKICAgIGFpX3BhdGhfY291bnQgKz0gMTsKICAgIGFp
X3N0cm9rZSA9IDE7CiAgICBpZiAoYWlfcGF0aF9jb3VudCA+PSA0MDApIHsKICAgICAgICBmcHJp
bnRmKGdwb3V0ZmlsZSwgIlNcbiUuMmYgJS4yZiBtXG4iLCB4IC8gKDEwLjApLCB5IC8gKDEwLjAp
KTsKICAgICAgICBhaV9wYXRoX2NvdW50ID0gMDsKICAgIH0KfQoKCnN0YXRpYyB2b2lkIEFJX3B1
dF90ZXh0KHgsIHksIHN0cikKdW5zaWduZWQgaW50IHgsIHk7CmNoYXIgKnN0cjsKewogICAgY2hh
ciBjaDsKICAgIGlmIChhaV9zdHJva2UpIHsKICAgICAgICBmcHV0cygiU1xuIiwgZ3BvdXRmaWxl
KTsKICAgICAgICBhaV9zdHJva2UgPSAwOwogICAgfQogICAgc3dpdGNoIChhaV9qdXN0aWZ5KSB7
CiAgICBjYXNlIExFRlQ6CiAgICAgICAgZnByaW50ZihncG91dGZpbGUsICIvXyVzICVkIDAgMCAw
IHpcbiIsIGFpX2ZvbnQsIGFpX2ZvbnRzaXplKTsKICAgICAgICBicmVhazsKICAgIGNhc2UgQ0VO
VFJFOgogICAgICAgIGZwcmludGYoZ3BvdXRmaWxlLCAiL18lcyAlZCAwIDAgMSB6XG4iLCBhaV9m
b250LCBhaV9mb250c2l6ZSk7CiAgICAgICAgYnJlYWs7CiAgICBjYXNlIFJJR0hUOgogICAgICAg
IGZwcmludGYoZ3BvdXRmaWxlLCAiL18lcyAlZCAwIDAgMiB6XG4iLCBhaV9mb250LCBhaV9mb250
c2l6ZSk7CiAgICAgICAgYnJlYWs7CiAgICB9CiAgICBpZiAoYWlfYW5nID09IDApIHsKICAgICAg
ICBmcHJpbnRmKGdwb3V0ZmlsZSwgIlsgMSAwIDAgMSAlLjJmICUuMmZdIGVcbiIsCiAgICAgICAg
ICAgICAgICB4IC8gKDEwLjApLCB5IC8gKDEwLjApIC0gYWlfZm9udHNpemUgLyAzLjApOwogICAg
fSBlbHNlIHsKICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgIlsgMCAxIC0xIDAgJS4yZiAlLjJm
XSBlXG4iLAogICAgICAgICAgICAgICAgeCAvICgxMC4wKSAtIGFpX2ZvbnRzaXplIC8gMy4wLCB5
IC8gKDEwLjApKTsKICAgIH0KCiAgICBfSU9fcHV0YyAoJygnLCBncG91dGZpbGUpOwogICAgY2gg
PSAqc3RyKys7CiAgICB3aGlsZSAoY2ggIT0gJ1wwJykgewogICAgICAgIGlmICgoY2ggPT0gJygn
KSB8fCAoY2ggPT0gJyknKSB8fCAoY2ggPT0gJ1xcJykpCiAgICAgICAgICAgIF9JT19wdXRjICgn
XFwnLCBncG91dGZpbGUpOwogICAgICAgIF9JT19wdXRjIChjaCwgZ3BvdXRmaWxlKTsKICAgICAg
ICBjaCA9ICpzdHIrKzsKICAgIH0KICAgIGZwdXRzKCIpIHRcblRcbiIsIGdwb3V0ZmlsZSk7CiAg
ICBhaV9wYXRoX2NvdW50ID0gMDsKfQoKc3RhdGljIGludCBBSV90ZXh0X2FuZ2xlKGFuZykKaW50
IGFuZzsKewogICAgYWlfYW5nID0gYW5nOwogICAgcmV0dXJuIDE7Cn0KCnN0YXRpYyBpbnQgQUlf
anVzdGlmeV90ZXh0KG1vZGUpCmVudW0gSlVTVElGWSBtb2RlOwp7CiAgICBhaV9qdXN0aWZ5ID0g
bW9kZTsKICAgIHJldHVybiAxOwp9CgpzdGF0aWMgaW50IEFJX3NldF9mb250KGZvbnQpCmNoYXIg
KmZvbnQ7CnsKICAgIGNoYXIgbmFtZVszMl07CiAgICBpbnQgc2l6ZSwgc2VwOwoKICAgIGlmIChm
b250ICYmICpmb250KSB7CiAgICAgICAgc2VwID0gX19leHRlbnNpb25fXyAoeyBjaGFyIF9fcjAs
IF9fcjEsIF9fcjI7IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoIiwiKSAmJiAoKHNpemVfdCkoY29u
c3Qgdm9pZCAqKSgoIiwiKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgiLCIpID09IDEp
ID8gKChfX3IwID0gKChfX2NvbnN0IGNoYXIgKikgKCIsIikpWzBdLCBfX3IwID09ICdcMCcpID8g
c3RybGVuIChmb250KSA6ICgoX19yMSA9ICgoX19jb25zdCBjaGFyICopICgiLCIpKVsxXSwgX19y
MSA9PSAnXDAnKSA/IF9fc3RyY3Nwbl9jMSAoZm9udCwgX19yMCkgOiAoKF9fcjIgPSAoKF9fY29u
c3QgY2hhciAqKSAoIiwiKSlbMl0sIF9fcjIgPT0gJ1wwJykgPyBfX3N0cmNzcG5fYzIgKGZvbnQs
IF9fcjAsIF9fcjEpIDogKCgoX19jb25zdCBjaGFyICopICgiLCIpKVszXSA9PSAnXDAnID8gX19z
dHJjc3BuX2MzIChmb250LCBfX3IwLCBfX3IxLCBfX3IyKSA6IHN0cmNzcG4gKGZvbnQsICIsIikp
KSkpIDogc3RyY3NwbiAoZm9udCwgIiwiKSk7IH0pOwogICAgICAgIChfX2V4dGVuc2lvbl9fIChf
X2J1aWx0aW5fY29uc3RhbnRfcCAoZm9udCkgJiYgX19idWlsdGluX2NvbnN0YW50X3AgKHNlcCkg
PyAoc3RybGVuIChmb250KSArIDEgPj0gKChzaXplX3QpIChzZXApKSA/IChjaGFyICopIG1lbWNw
eSAobmFtZSwgZm9udCwgc2VwKSA6IHN0cm5jcHkgKG5hbWUsIGZvbnQsIHNlcCkpIDogc3RybmNw
eSAobmFtZSwgZm9udCwgc2VwKSkpOwogICAgICAgIG5hbWVbc2VwXSA9ICdcMCc7CiAgICAgICAg
c2l6ZSA9IGFpX2ZvbnRzaXplOwogICAgICAgIHNzY2FuZigmKGZvbnRbc2VwICsgMV0pLCAiJWQi
LCAmc2l6ZSk7CiAgICAgICAgaWYgKCpuYW1lKQogICAgICAgICAgICAoX19leHRlbnNpb25fXyAo
X19idWlsdGluX2NvbnN0YW50X3AgKG5hbWUpID8gKCgoc2l6ZV90KShjb25zdCB2b2lkICopKChu
YW1lKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKShuYW1lKSA9PSAxKSAmJiBzdHJsZW4g
KG5hbWUpICsgMSA8PSA4ID8gX19zdHJjcHlfc21hbGwgKGFpX2ZvbnQsIF9fZXh0ZW5zaW9uX18g
KCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVswICsg
MV0gPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5h
bWUpKVswXSksIF9fZXh0ZW5zaW9uX18gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikgKG5hbWUpKVs0ICsgMV0gPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFy
ICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVs0XSksIF9fZXh0ZW5zaW9uX18gKCgoKChfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzAgKyAzXSA8PCA4
IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzAg
KyAyXSkgPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KG5hbWUpKVswICsgMV0pIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25z
dCBjaGFyICopIChuYW1lKSlbMF0pLCBfX2V4dGVuc2lvbl9fICgoKCgoX19jb25zdCB1bnNpZ25l
ZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVs0ICsgM10gPDwgOCB8ICgoX19jb25z
dCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVs0ICsgMl0pIDw8IDgg
fCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1lKSlbNCAr
IDFdKSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAo
bmFtZSkpWzRdKSwgc3RybGVuIChuYW1lKSArIDEpIDogKGNoYXIgKikgbWVtY3B5IChhaV9mb250
LCBuYW1lLCBzdHJsZW4gKG5hbWUpICsgMSkpIDogc3RyY3B5IChhaV9mb250LCBuYW1lKSkpOwog
ICAgICAgIGlmIChzaXplKQogICAgICAgICAgICBhaV9mb250c2l6ZSA9IHNpemU7CiAgICB9IGVs
c2UgewogICAgICAgIGFpX2ZvbnRzaXplID0gYWlfb2xkZm9udHNpemU7CiAgICAgICAgKF9fZXh0
ZW5zaW9uX18gKF9fYnVpbHRpbl9jb25zdGFudF9wIChhaV9vbGRmb250KSA/ICgoKHNpemVfdCko
Y29uc3Qgdm9pZCAqKSgoYWlfb2xkZm9udCkgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKiko
YWlfb2xkZm9udCkgPT0gMSkgJiYgc3RybGVuIChhaV9vbGRmb250KSArIDEgPD0gOCA/IF9fc3Ry
Y3B5X3NtYWxsIChhaV9mb250LCBfX2V4dGVuc2lvbl9fICgoKF9fY29uc3QgdW5zaWduZWQgY2hh
ciAqKSAoX19jb25zdCBjaGFyICopIChhaV9vbGRmb250KSlbMCArIDFdIDw8IDggfCAoKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChhaV9vbGRmb250KSlbMF0pLCBf
X2V4dGVuc2lvbl9fICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop
IChhaV9vbGRmb250KSlbNCArIDFdIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAo
X19jb25zdCBjaGFyICopIChhaV9vbGRmb250KSlbNF0pLCBfX2V4dGVuc2lvbl9fICgoKCgoX19j
b25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGFpX29sZGZvbnQpKVswICsg
M10gPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGFp
X29sZGZvbnQpKVswICsgMl0pIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19j
b25zdCBjaGFyICopIChhaV9vbGRmb250KSlbMCArIDFdKSA8PCA4IHwgKChfX2NvbnN0IHVuc2ln
bmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoYWlfb2xkZm9udCkpWzBdKSwgX19leHRlbnNp
b25fXyAoKCgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChhaV9v
bGRmb250KSlbNCArIDNdIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25z
dCBjaGFyICopIChhaV9vbGRmb250KSlbNCArIDJdKSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoYWlfb2xkZm9udCkpWzQgKyAxXSkgPDwgOCB8ICgo
X19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGFpX29sZGZvbnQpKVs0
XSksIHN0cmxlbiAoYWlfb2xkZm9udCkgKyAxKSA6IChjaGFyICopIG1lbWNweSAoYWlfZm9udCwg
YWlfb2xkZm9udCwgc3RybGVuIChhaV9vbGRmb250KSArIDEpKSA6IHN0cmNweSAoYWlfZm9udCwg
YWlfb2xkZm9udCkpKTsKICAgIH0KICAgIHJldHVybiAxOwp9CgoKc3RhdGljIHZvaWQgQUlfc3Vz
cGVuZCgpCnsKfQoKc3RhdGljIHZvaWQgQUlfcmVzdW1lKCkKewp9CiMgMjU4ICJ0ZXJtLmgiIDIK
CgojIDEgInRlcm0vY2dtLnRybSIgMQojIDU0ICJ0ZXJtL2NnbS50cm0iCiMgMSAidGVybS9kcml2
ZXIuaCIgMQojIDU1ICJ0ZXJtL2NnbS50cm0iIDIKCgoKCgoKc3RhdGljIHZvaWQgQ0dNX29wdGlv
bnMgKHZvaWQpOwpzdGF0aWMgdm9pZCBDR01faW5pdCAodm9pZCk7CnN0YXRpYyB2b2lkIENHTV9y
ZXNldCAodm9pZCk7CnN0YXRpYyB2b2lkIENHTV90ZXh0ICh2b2lkKTsKc3RhdGljIHZvaWQgQ0dN
X2dyYXBoaWNzICh2b2lkKTsKc3RhdGljIHZvaWQgQ0dNX21vdmUgKHVuc2lnbmVkIGludCB4LCB1
bnNpZ25lZCBpbnQgeSk7CnN0YXRpYyB2b2lkIENHTV9kYXNoZWRfdmVjdG9yICh1bnNpZ25lZCBp
bnQgdXgsIHVuc2lnbmVkIGludCB1eSk7CnN0YXRpYyB2b2lkIENHTV9zb2xpZF92ZWN0b3IgKHVu
c2lnbmVkIGludCB1eCwgdW5zaWduZWQgaW50IHV5KTsKc3RhdGljIHZvaWQgQ0dNX2xpbmV0eXBl
IChpbnQgbGluZXR5cGUpOwpzdGF0aWMgdm9pZCBDR01fbGluZWNvbG9yIChpbnQgY29sb3IpOwpz
dGF0aWMgdm9pZCBDR01fZGFzaHR5cGUgKGludCBkYXNodHlwZSk7CnN0YXRpYyB2b2lkIENHTV9s
aW5ld2lkdGggKGRvdWJsZSB3aWR0aCk7CnN0YXRpYyB2b2lkIENHTV9wdXRfdGV4dCAodW5zaWdu
ZWQgaW50IHgsIHVuc2lnbmVkIGludCB5LCBjaGFyICpzdHIpOwoKc3RhdGljIGludCBDR01fdGV4
dF9hbmdsZSAoaW50IGFuZyk7CnN0YXRpYyBpbnQgQ0dNX2p1c3RpZnlfdGV4dCAoZW51bSBKVVNU
SUZZIG1vZGUpOwpzdGF0aWMgdm9pZCBDR01fcG9pbnQgKHVuc2lnbmVkIGludCB4LCB1bnNpZ25l
ZCBpbnQgeSwgaW50IG51bWJlcik7CgpzdGF0aWMgaW50IENHTV9maW5kX2ZvbnQgKGNoYXIgKmZv
bnQsIGludCBudW1jaGFyKTsKc3RhdGljIGludCBDR01fc2V0X2ZvbnQgKGNoYXIgKmZvbnQpOwpz
dGF0aWMgdm9pZCBDR01fc2V0X3BvaW50c2l6ZSAoZG91YmxlIHNpemUpOwojIDExNSAidGVybS9j
Z20udHJtIgojIDEgIi91c3IvaW5jbHVkZS9jdHlwZS5oIiAxIDMKIyAxMTYgInRlcm0vY2dtLnRy
bSIgMgojIDEyNyAidGVybS9jZ20udHJtIgojIDEgIi91c3IvaW5jbHVkZS9hc3NlcnQuaCIgMSAz
CiMgMzYgIi91c3IvaW5jbHVkZS9hc3NlcnQuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9mZWF0dXJl
cy5oIiAxIDMKIyAzNyAiL3Vzci9pbmNsdWRlL2Fzc2VydC5oIiAyIDMKIyA2OCAiL3Vzci9pbmNs
dWRlL2Fzc2VydC5oIiAzCmV4dGVybiB2b2lkIF9fYXNzZXJ0X2ZhaWwgKF9fY29uc3QgY2hhciAq
X19hc3NlcnRpb24sIF9fY29uc3QgY2hhciAqX19maWxlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBpbnQgX19saW5lLCBfX2NvbnN0IGNoYXIgKl9fZnVuY3Rpb24pCiAgICAg
ICAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9fKSk7CgoKZXh0ZXJuIHZvaWQgX19h
c3NlcnRfcGVycm9yX2ZhaWwgKGludCBfX2Vycm51bSwgX19jb25zdCBjaGFyICpfX2ZpbGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19saW5lLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX2Z1bmN0aW9uKQog
ICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwoKCgoKZXh0ZXJuIHZv
aWQgX19hc3NlcnQgKGNvbnN0IGNoYXIgKl9fYXNzZXJ0aW9uLCBjb25zdCBjaGFyICpfX2ZpbGUs
IGludCBfX2xpbmUpCiAgICAgICAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9fKSk7
CiMgMTI4ICJ0ZXJtL2NnbS50cm0iIDIKCgoKCnN0YXRpYyB1bnNpZ25lZCBpbnQgY2dtX3Bvc3g7
CnN0YXRpYyB1bnNpZ25lZCBpbnQgY2dtX3Bvc3k7CnN0YXRpYyB1bnNpZ25lZCBpbnQgY2dtX2xp
bmV0eXBlID0gMTsKc3RhdGljIHVuc2lnbmVkIGludCBjZ21fZGFzaHR5cGUgPSAwOwpzdGF0aWMg
dW5zaWduZWQgaW50IGNnbV9jb2xvciA9IDA7CnN0YXRpYyBpbnQgY2dtX3BvbHlsaW5lWzEwNF07
CnN0YXRpYyBpbnQgY2dtX2Nvb3JkcyA9IDA7CmVudW0gSlVTVElGWSBjZ21fanVzdGlmeSA9IExF
RlQ7CnN0YXRpYyBpbnQgY2dtX3ZlcnRfdGV4dCA9IDA7CnN0YXRpYyBpbnQgY2dtX3ZlcnRfdGV4
dF9yZXF1ZXN0ZWQgPSAwOwpzdGF0aWMgaW50IGNnbV9zdGVwX3NpemVzWzhdOwoKc3RhdGljIGlu
dCBjZ21fc3RlcF9pbmRleCA9IDA7CnN0YXRpYyBpbnQgY2dtX3N0ZXAgPSAwOwoKc3RhdGljIGlu
dCBjZ21fdGljLCBjZ21fdGljNzA3LCBjZ21fdGljODY2LCBjZ21fdGljNTAwLCBjZ21fdGljMTI0
MSwgY2dtX3RpYzEwNzcsIGNnbV90aWM2MjE7CgpzdGF0aWMgY2hhciBjZ21fZm9udF9kYXRhW10g
PQp7IlwwMDVBcmlhbFwwMTRBcmlhbCBJdGFsaWNcMDEyQXJpYWwgQm9sZFwwMjFBcmlhbCBCb2xk
IEl0YWxpY1wwMTNUaW1lcyBSb21hblwwMjJUaW1lcyBSb21hbiBJdGFsaWNcMDIwVGltZXMgUm9t
YW4gQm9sZFwwMjdUaW1lcyBSb21hbiBCb2xkIEl0YWxpY1wwMTFIZWx2ZXRpY2FcMDA1Um9tYW4i
fTsKIyAxNjQgInRlcm0vY2dtLnRybSIKc3RhdGljIGNoYXIgY2dtX2ZvbnRbMzJdID0gIkFyaWFs
IEJvbGQiOwpzdGF0aWMgdW5zaWduZWQgaW50IGNnbV9mb250c2l6ZSA9IDEwOwpzdGF0aWMgdW5z
aWduZWQgY2dtX2xpbmV3aWR0aDsKc3RhdGljIHVuc2lnbmVkIGNnbV9saW5ld2lkdGhfcHQgPSAx
OwpzdGF0aWMgVEJPT0xFQU4gY2dtX21vbm9jaHJvbWUgPSAwOwpzdGF0aWMgaW50IGNnbV9wbG90
d2lkdGggPSA0MzI7CnN0YXRpYyBUQk9PTEVBTiBjZ21fcG9ydHJhaXQgPSAwOwpzdGF0aWMgVEJP
T0xFQU4gY2dtX3JvdGF0ZSA9IDE7CnN0YXRpYyBUQk9PTEVBTiBjZ21fZGFzaGVkID0gMTsKc3Rh
dGljIFRCT09MRUFOIGNnbV93aW53b3JkNl9tb2RlID0gMDsKCgpzdGF0aWMgdm9pZCBDR01fZmx1
c2hfcG9seWxpbmUgKHZvaWQpOwpzdGF0aWMgdm9pZCBDR01fZmx1c2hfcG9seWdvbiAodm9pZCk7
CnN0YXRpYyB2b2lkIENHTV93cml0ZV9jaGFyX3JlY29yZCAoaW50IGNsYXNzLCBpbnQgY2dtX2lk
LCBpbnQgbGVuZ3RoLCBjaGFyICpkYXRhKTsKCnN0YXRpYyB2b2lkIENHTV93cml0ZV9jb2RlIChp
bnQgY2xhc3MsIGludCBjZ21faWQsIGludCBsZW5ndGgpOwpzdGF0aWMgdm9pZCBDR01fd3JpdGVf
aW50IChpbnQgdmFsdWUpOwpzdGF0aWMgdm9pZCBDR01fd3JpdGVfaW50X3JlY29yZCAoaW50IGNs
YXNzLCBpbnQgY2dtX2lkLCBpbnQgbGVuZ3RoLCBpbnQgKmRhdGEpOwoKc3RhdGljIHZvaWQgQ0dN
X3dyaXRlX21peGVkX3JlY29yZCAoaW50IGNsYXNzLCBpbnQgY2dtX2lkLCBpbnQgbnVtaW50LCBp
bnQgKmludF9kYXRhLCBpbnQgbnVtY2hhciwgY2hhciAqY2hhcl9kYXRhKTsKCgpzdGF0aWMgdm9p
ZCBDR01fd3JpdGVfYnl0ZV9yZWNvcmQgKGludCBjbGFzcywgaW50IGNnbV9pZCwgaW50IGxlbmd0
aCwgY2hhciAqZGF0YSk7CgoKCgpzdGF0aWMgdm9pZCBDR01faW5pdCgpCnsKICAgIGNnbV9wb3N4
ID0gY2dtX3Bvc3kgPSAwOwogICAgY2dtX2xpbmV0eXBlID0gMDsKICAgIGNnbV92ZXJ0X3RleHQg
PSAwOwp9CgpzdGF0aWMgdm9pZCBDR01fZ3JhcGhpY3MoKQp7CiAgICByZWdpc3RlciBzdHJ1Y3Qg
VEVSTUVOVFJZICp0ID0gdGVybTsKICAgIHN0YXRpYyBpbnQgdmVyc2lvbl9kYXRhW10gPSB7IDEg
fTsKICAgIHN0YXRpYyBjaGFyIGRlc2NyaXB0aW9uX2RhdGFbXSA9ICJDb21wdXRlciBHcmFwaGlj
cyBNZXRhZmlsZSB2ZXJzaW9uIG9mIEdudXBsb3QiOwogICAgc3RhdGljIGludCB2ZGNfdHlwZV9k
YXRhW10gPSB7IDAgfTsKICAgIHN0YXRpYyBpbnQgaW50ZWdlcl9wcmVjaXNpb25fZGF0YVtdID0g
eyAxNiB9OwogICAgc3RhdGljIGludCByZWFsX3ByZWNpc2lvbl9kYXRhW10gPSB7IDEsIDE2LCAx
NiB9OwogICAgc3RhdGljIGludCBpbmRleF9wcmVjaXNpb25fZGF0YVtdID0geyAxNiB9OwogICAg
c3RhdGljIGludCBjb2xvcl9wcmVjaXNpb25fZGF0YVtdID0geyAxNiB9OwogICAgc3RhdGljIGlu
dCBjb2xvcl9pbmRleF9wcmVjaXNpb25fZGF0YVtdID0geyAxNiB9OwogICAgc3RhdGljIGludCBt
YXhpbXVtX2NvbG9yX2luZGV4X2RhdGFfZGF0YVtdID0geyA3IH07CiAgICBzdGF0aWMgaW50IHNj
YWxpbmdfbW9kZV9kYXRhW10gPSB7IDAsIDAsIDAgfTsKICAgIHN0YXRpYyBpbnQgY29sb3JfdmFs
dWVfZXh0ZW50X2RhdGFbXSA9IHsgMCwgMCwgMCwgMjU1LCAyNTUsIDI1NSB9OwogICAgc3RhdGlj
IGludCBjb2xvcl90YWJsZV9kYXRhW10gPQoKCgoKCgogICAgewoKICAgICAgICAwLCAyNTUsIDI1
NSwgMjU1LAogICAgICAgIDAsIDAsIDAsIDI1NSwgMCwgMCwgMCwgMjU1LCAwLCAwLCAwLCAyNTUs
IDI1NSwgMjU1LCAwLCAyNTUsIDAsIDI1NSwgMCwgMjU1LCAyNTUKCiAgICB9OwoKICAgIHN0YXRp
YyBpbnQgY29sb3Jfc2VsZWN0aW9uX21vZGVfZGF0YVtdID0geyAwIH07CiAgICBzdGF0aWMgaW50
IGxpbmV3aWR0aF9zcGVjaWZpY2F0aW9uX21vZGVfZGF0YVtdID0geyAwIH07CiAgICBzdGF0aWMg
aW50IG1hcmtlcl9zaXplX3NwZWNpZmljYXRpb25fbW9kZV9kYXRhW10gPSB7IDAgfTsKICAgIHN0
YXRpYyBpbnQgdmRjX2V4dGVudF9kYXRhW10gPSB7IDAsIDAsIDAsIDAgfTsKICAgIHN0YXRpYyBp
bnQgdmRjX2ludGVnZXJfcHJlY2lzaW9uX2RhdGFbXSA9IHsgMTYgfTsKICAgIHN0YXRpYyBpbnQg
dHJhbnNwYXJlbmN5X2RhdGFbXSA9IHsgMSB9OwogICAgc3RhdGljIGludCBjbGlwX2luZGljYXRv
cl9kYXRhW10gPSB7IDAgfTsKCiAgICBzdGF0aWMgaW50IGxpbmVfdHlwZV9kYXRhW10gPSB7IDEg
fTsKICAgIHN0YXRpYyBpbnQgaW50ZXJpb3Jfc3R5bGVfZGF0YVtdID0geyAxIH07CgogICAgc3Rh
dGljIGludCBlbGVtZW50c19saXN0X2RhdGFbXSA9CiAgICB7CiAgICAgICAgMCwKICAgICAgICAw
LCAxLAogICAgICAgIDAsIDIsCiAgICAgICAgMCwgMywKICAgICAgICAwLCA0LAogICAgICAgIDAs
IDUsCiAgICAgICAgMSwgMSwKICAgICAgICAxLCAyLAogICAgICAgIDEsIDMsCiAgICAgICAgMSwg
NCwKICAgICAgICAxLCA1LAogICAgICAgIDEsIDYsCiAgICAgICAgMSwgNywKICAgICAgICAxLCA4
LAogICAgICAgIDEsIDksCiAgICAgICAgMiwgMSwKICAgICAgICAyLCAyLAogICAgICAgIDIsIDMs
CiAgICAgICAgMiwgNCwKICAgICAgICAyLCA2LAogICAgICAgIDMsIDEsCiAgICAgICAgMywgNCwK
ICAgICAgICAzLCA2LAogICAgICAgIDQsIDEsCiAgICAgICAgNCwgMywKICAgICAgICA0LCA0LAog
ICAgICAgIDQsIDcsCiAgICAgICAgNCwgMTEsCiAgICAgICAgNCwgMTIsCiAgICAgICAgNCwgMTUs
CiAgICAgICAgNCwgMTYsCiAgICAgICAgNCwgMTcsCiAgICAgICAgNCwgMTgsCiAgICAgICAgNCwg
MTksCiAgICAgICAgNSwgMiwKICAgICAgICA1LCAzLAogICAgICAgIDUsIDQsCiAgICAgICAgNSwg
NiwKICAgICAgICA1LCA3LAogICAgICAgIDUsIDgsCiAgICAgICAgNSwgMTAsCiAgICAgICAgNSwg
MTQsCiAgICAgICAgNSwgMTUsCiAgICAgICAgNSwgMTYsCiAgICAgICAgNSwgMTgsCiAgICAgICAg
NSwgMjIsCiAgICAgICAgNSwgMjMsCiAgICAgICAgNSwgMjQsCiAgICAgICAgNiwgMSwKICAgICAg
ICA3LCAyCiAgICB9OwoKCiAgICBpZiAoIW91dHN0cikKICAgICAgICBDR01fd3JpdGVfY2hhcl9y
ZWNvcmQoMCwgMSwgMSwgb3V0c3RyKTsKICAgIGVsc2UKICAgICAgICBDR01fd3JpdGVfY2hhcl9y
ZWNvcmQoMCwgMSwgc3RybGVuKG91dHN0cikgKyAxLCBvdXRzdHIpOwogICAgQ0dNX3dyaXRlX2lu
dF9yZWNvcmQoMSwgMSwgMiwgdmVyc2lvbl9kYXRhKTsKICAgIENHTV93cml0ZV9jaGFyX3JlY29y
ZCgxLCAyLCBzaXplb2YoZGVzY3JpcHRpb25fZGF0YSksIGRlc2NyaXB0aW9uX2RhdGEpOwogICAg
Q0dNX3dyaXRlX2ludF9yZWNvcmQoMSwgMywgMiwgdmRjX3R5cGVfZGF0YSk7CiAgICBDR01fd3Jp
dGVfaW50X3JlY29yZCgxLCA0LCAyLCBpbnRlZ2VyX3ByZWNpc2lvbl9kYXRhKTsKICAgIENHTV93
cml0ZV9pbnRfcmVjb3JkKDEsIDUsIDYsIHJlYWxfcHJlY2lzaW9uX2RhdGEpOwogICAgQ0dNX3dy
aXRlX2ludF9yZWNvcmQoMSwgNiwgMiwgaW5kZXhfcHJlY2lzaW9uX2RhdGEpOwogICAgQ0dNX3dy
aXRlX2ludF9yZWNvcmQoMSwgNywgMiwgY29sb3JfcHJlY2lzaW9uX2RhdGEpOwogICAgQ0dNX3dy
aXRlX2ludF9yZWNvcmQoMSwgOCwgMiwgY29sb3JfaW5kZXhfcHJlY2lzaW9uX2RhdGEpOwogICAg
Q0dNX3dyaXRlX2ludF9yZWNvcmQoMSwgOSwgMiwgbWF4aW11bV9jb2xvcl9pbmRleF9kYXRhX2Rh
dGEpOwogICAgQ0dNX3dyaXRlX2ludF9yZWNvcmQoMSwgMTAsIHNpemVvZihjb2xvcl92YWx1ZV9l
eHRlbnRfZGF0YSkgLyAoc2l6ZW9mKGludCkvc2l6ZW9mKHNob3J0KSksCiAgICAgICAgICAgICAg
ICAgICAgICAgICBjb2xvcl92YWx1ZV9leHRlbnRfZGF0YSk7CiAgICBlbGVtZW50c19saXN0X2Rh
dGFbMF0gPSAoc2l6ZW9mKGVsZW1lbnRzX2xpc3RfZGF0YSkgLyAoc2l6ZW9mKGludCkvc2l6ZW9m
KHNob3J0KSkgLSAyKSAvIDQ7CiAgICBDR01fd3JpdGVfaW50X3JlY29yZCgxLCAxMSwgc2l6ZW9m
KGVsZW1lbnRzX2xpc3RfZGF0YSkgLyAoc2l6ZW9mKGludCkvc2l6ZW9mKHNob3J0KSksCiAgICAg
ICAgICAgICAgICAgICAgICAgICBlbGVtZW50c19saXN0X2RhdGEpOwogICAgaWYgKGNnbV93aW53
b3JkNl9tb2RlID09IDApCiAgICAgICAgQ0dNX3dyaXRlX2J5dGVfcmVjb3JkKDEsIDEzLCBzdHJs
ZW4oY2dtX2ZvbnRfZGF0YSksIGNnbV9mb250X2RhdGEpOwoKCiAgICBDR01fd3JpdGVfY2hhcl9y
ZWNvcmQoMCwgMywgOCwgIlBJQ1RVUkUxIik7CiAgICBDR01fd3JpdGVfaW50X3JlY29yZCgyLCAx
LCA2LCBzY2FsaW5nX21vZGVfZGF0YSk7CiAgICBDR01fd3JpdGVfaW50X3JlY29yZCgyLCAyLCAy
LCBjb2xvcl9zZWxlY3Rpb25fbW9kZV9kYXRhKTsKICAgIENHTV93cml0ZV9pbnRfcmVjb3JkKDIs
IDMsIDIsIGxpbmV3aWR0aF9zcGVjaWZpY2F0aW9uX21vZGVfZGF0YSk7CiAgICBDR01fd3JpdGVf
aW50X3JlY29yZCgyLCA0LCAyLCBtYXJrZXJfc2l6ZV9zcGVjaWZpY2F0aW9uX21vZGVfZGF0YSk7
CiAgICB2ZGNfZXh0ZW50X2RhdGFbMl0gPSB0LT54bWF4ICsgKDMyNzY3LzE4MCk7CiAgICB2ZGNf
ZXh0ZW50X2RhdGFbM10gPSB0LT55bWF4ICsgKDMyNzY3LzE4MCk7CiAgICBDR01fd3JpdGVfaW50
X3JlY29yZCgyLCA2LCA4LCB2ZGNfZXh0ZW50X2RhdGEpOwogICAgQ0dNX3dyaXRlX2ludF9yZWNv
cmQoMywgMSwgMiwgdmRjX2ludGVnZXJfcHJlY2lzaW9uX2RhdGEpOwogICAgQ0dNX3dyaXRlX2lu
dF9yZWNvcmQoMywgNCwgc2l6ZW9mKHRyYW5zcGFyZW5jeV9kYXRhKSAvIChzaXplb2YoaW50KS9z
aXplb2Yoc2hvcnQpKSwKICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zcGFyZW5jeV9kYXRh
KTsKICAgIENHTV93cml0ZV9pbnRfcmVjb3JkKDMsIDYsIHNpemVvZihjbGlwX2luZGljYXRvcl9k
YXRhKSAvIChzaXplb2YoaW50KS9zaXplb2Yoc2hvcnQpKSwKICAgICAgICAgICAgICAgICAgICAg
ICAgIGNsaXBfaW5kaWNhdG9yX2RhdGEpOwoKCiAgICBDR01fd3JpdGVfaW50X3JlY29yZCgwLCA0
LCAwLCAoKHZvaWQgKikwKSk7CgoKCgogICAgaWYgKCFjZ21fd2lud29yZDZfbW9kZSkKICAgICAg
ICBDR01fd3JpdGVfaW50X3JlY29yZCg1LCAzNCwgc2l6ZW9mKGNvbG9yX3RhYmxlX2RhdGEpIC8g
KHNpemVvZihpbnQpL3NpemVvZihzaG9ydCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbG9yX3RhYmxlX2RhdGEpOwogICAgQ0dNX3dyaXRlX2ludF9yZWNvcmQoNSwgMiwgc2l6ZW9m
KGxpbmVfdHlwZV9kYXRhKSAvIChzaXplb2YoaW50KS9zaXplb2Yoc2hvcnQpKSwKICAgICAgICAg
ICAgICAgICAgICAgICAgIGxpbmVfdHlwZV9kYXRhKTsKICAgIGNnbV9saW5ld2lkdGggPSBjZ21f
bGluZXdpZHRoX3B0ICogKCh0ZXJtLT54bWF4ICsgKDMyNzY3LzE4MCkpL2NnbV9wbG90d2lkdGgp
OwogICAgQ0dNX3dyaXRlX2ludF9yZWNvcmQoNSwgMywgc2l6ZW9mKGNnbV9saW5ld2lkdGgpIC8g
KHNpemVvZihpbnQpL3NpemVvZihzaG9ydCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgKGlu
dCAqKSAmY2dtX2xpbmV3aWR0aCk7CiAgICBDR01fbGluZWNvbG9yKDApOwoKICAgIENHTV93cml0
ZV9pbnRfcmVjb3JkKDUsIDE1LCAyLCAoaW50ICopICZ0LT52X2NoYXIpOwogICAgQ0dNX3dyaXRl
X2ludF9yZWNvcmQoNSwgMjIsIDIsIGludGVyaW9yX3N0eWxlX2RhdGEpOwogICAgewogICAgICAg
IGNoYXIgYnVmWzQ1XTsKICAgICAgICBzcHJpbnRmKGJ1ZiwgIiUuMzFzLCVkIiwgY2dtX2ZvbnQs
IGNnbV9mb250c2l6ZSk7CiAgICAgICAgQ0dNX3NldF9mb250KGJ1Zik7CiAgICB9CiAgICBDR01f
c2V0X3BvaW50c2l6ZShwb2ludHNpemUpOwp9CgpzdGF0aWMgaW50IENHTV9maW5kX2ZvbnQoZm9u
dCwgbnVtY2hhcikKY2hhciAqZm9udDsKaW50IG51bWNoYXI7CnsKICAgIGludCBmb250X2luZGV4
ID0gMTsKICAgIGNoYXIgKnM7CiAgICBmb3IgKHMgPSBjZ21fZm9udF9kYXRhOyBzIDwgY2dtX2Zv
bnRfZGF0YSArIHN0cmxlbihjZ21fZm9udF9kYXRhKTsgcyArPSAoaW50KSAqcyArIDEpIHsKCiAg
ICAgICAgaWYgKG51bWNoYXIgPT0gKGludCkgKnMgJiYgc3RybmNhc2VjbXAoZm9udCwgcyArIDEs
IG51bWNoYXIgLSAxKSA9PSAwKQogICAgICAgICAgICByZXR1cm4gZm9udF9pbmRleDsKICAgICAg
ICBmb250X2luZGV4Kys7CiAgICB9CiAgICByZXR1cm4gMDsKfQoKc3RhdGljIGludCBDR01fc2V0
X2ZvbnQoZm9udCkKY2hhciAqZm9udDsKewogICAgcmVnaXN0ZXIgc3RydWN0IFRFUk1FTlRSWSAq
dCA9IHRlcm07CiAgICBpbnQgc2l6ZSwgZm9udF9pbmRleDsKICAgIGNoYXIgKmNvbW1hOwogICAg
aW50IHNlcDsKCiAgICBjb21tYSA9IChfX2V4dGVuc2lvbl9fIChfX2J1aWx0aW5fY29uc3RhbnRf
cCAoJywnKSAmJiAoJywnKSA9PSAnXDAnID8gKGNoYXIgKikgX19yYXdtZW1jaHIgKGZvbnQsICcs
JykgOiBzdHJjaHIgKGZvbnQsICcsJykpKTsKICAgIGlmIChjb21tYSA9PSAoKHZvaWQgKikwKSkK
ICAgICAgICByZXR1cm4gMDsKICAgIHNlcCA9IGNvbW1hIC0gZm9udDsKCiAgICBmb250X2luZGV4
ID0gQ0dNX2ZpbmRfZm9udChmb250LCBzZXApOwogICAgaWYgKGZvbnRfaW5kZXggPT0gMCkKICAg
ICAgICBmb250X2luZGV4ID0gMTsKICAgIENHTV93cml0ZV9pbnRfcmVjb3JkKDUsIDEwLCAyLCAm
Zm9udF9pbmRleCk7CgoKICAgIHNpemUgPSBjZ21fZm9udHNpemU7CiAgICBzc2NhbmYoY29tbWEg
KyAxLCAiJWQiLCAmc2l6ZSk7CiAgICBpZiAoc2VwID4gMzEpCiAgICAgICAgc2VwID0gMzE7CiAg
ICAoX19leHRlbnNpb25fXyAoX19idWlsdGluX2NvbnN0YW50X3AgKGZvbnQpICYmIF9fYnVpbHRp
bl9jb25zdGFudF9wIChzZXApID8gKHN0cmxlbiAoZm9udCkgKyAxID49ICgoc2l6ZV90KSAoc2Vw
KSkgPyAoY2hhciAqKSBtZW1jcHkgKGNnbV9mb250LCBmb250LCBzZXApIDogc3RybmNweSAoY2dt
X2ZvbnQsIGZvbnQsIHNlcCkpIDogc3RybmNweSAoY2dtX2ZvbnQsIGZvbnQsIHNlcCkpKTsKICAg
IGNnbV9mb250W3NlcF0gPSAoJ1wwJyk7CiAgICB0LT52X2NoYXIgPSBzaXplICogKCh0ZXJtLT54
bWF4ICsgKDMyNzY3LzE4MCkpL2NnbV9wbG90d2lkdGgpOwogICAgdC0+aF9jaGFyID0gKHQtPnZf
Y2hhciAqIDUpIC8gOTsKICAgIENHTV93cml0ZV9pbnRfcmVjb3JkKDUsIDE1LCAyLCAoaW50ICop
ICZ0LT52X2NoYXIpOwogICAgcmV0dXJuIDE7Cn0KCnN0YXRpYyB2b2lkIENHTV90ZXh0KCkKewog
ICAgQ0dNX2ZsdXNoX3BvbHlsaW5lKCk7CiAgICBDR01fd3JpdGVfaW50X3JlY29yZCgwLCA1LCAw
LCAoKHZvaWQgKikwKSk7CiAgICBDR01fd3JpdGVfaW50X3JlY29yZCgwLCAyLCAwLCAoKHZvaWQg
KikwKSk7Cn0KCnN0YXRpYyB2b2lkIENHTV9saW5ldHlwZShsaW5ldHlwZSkKaW50IGxpbmV0eXBl
Owp7CiAgICAoKHZvaWQpICgobGluZXR5cGUgPj0gLTIpID8gMCA6IChfX2Fzc2VydF9mYWlsICgi
bGluZXR5cGUgPj0gLTIiLCAidGVybS9jZ20udHJtIiwgNDExLCBfX1BSRVRUWV9GVU5DVElPTl9f
KSwgMCkpKTsKICAgIGlmIChsaW5ldHlwZSA9PSBjZ21fbGluZXR5cGUpCiAgICAgICAgcmV0dXJu
OwogICAgY2dtX2xpbmV0eXBlID0gbGluZXR5cGU7CgogICAgQ0dNX2xpbmVjb2xvcihsaW5ldHlw
ZSk7CiAgICBpZiAoY2dtX2Rhc2hlZCkgewogICAgICAgIENHTV9kYXNodHlwZShsaW5ldHlwZSk7
CiAgICB9IGVsc2UgewoKICAgICAgICBDR01fZGFzaHR5cGUobGluZXR5cGUgPT0gLTEgPyAyIDog
MCk7CiAgICB9CgoKfQoKc3RhdGljIHZvaWQgQ0dNX2xpbmVjb2xvcihsaW5lY29sb3IpCmludCBs
aW5lY29sb3I7CnsKICAgICgodm9pZCkgKChsaW5lY29sb3IgPj0gLTIpID8gMCA6IChfX2Fzc2Vy
dF9mYWlsICgibGluZWNvbG9yID49IC0yIiwgInRlcm0vY2dtLnRybSIsIDQzMCwgX19QUkVUVFlf
RlVOQ1RJT05fXyksIDApKSk7CiAgICBsaW5lY29sb3IgPSAobGluZWNvbG9yIDwgMSkgPyAxIDog
bGluZWNvbG9yICUgNyArIDE7CiAgICBpZiAoY2dtX21vbm9jaHJvbWUgfHwgbGluZWNvbG9yID09
IGNnbV9jb2xvcikKICAgICAgICByZXR1cm47CiAgICBjZ21fY29sb3IgPSBsaW5lY29sb3I7Cgog
ICAgQ0dNX2ZsdXNoX3BvbHlsaW5lKCk7CiAgICBDR01fd3JpdGVfaW50X3JlY29yZCg1LCA0LCAy
LCAoaW50ICopICZjZ21fY29sb3IpOwogICAgQ0dNX3dyaXRlX2ludF9yZWNvcmQoNSwgMjMsIDIs
IChpbnQgKikgJmNnbV9jb2xvcik7Cn0KCnN0YXRpYyB2b2lkIENHTV9saW5ld2lkdGgod2lkdGgp
CmRvdWJsZSB3aWR0aDsKewogICAgaW50IG5ld19saW5ld2lkdGg7CgogICAgKCh2b2lkKSAoKHdp
ZHRoID49IDApID8gMCA6IChfX2Fzc2VydF9mYWlsICgid2lkdGggPj0gMCIsICJ0ZXJtL2NnbS50
cm0iLCA0NDYsIF9fUFJFVFRZX0ZVTkNUSU9OX18pLCAwKSkpOwogICAgbmV3X2xpbmV3aWR0aCA9
IHdpZHRoICogY2dtX2xpbmV3aWR0aF9wdCAqICgodGVybS0+eG1heCArICgzMjc2Ny8xODApKS9j
Z21fcGxvdHdpZHRoKTsKICAgIGlmIChuZXdfbGluZXdpZHRoID09IGNnbV9saW5ld2lkdGgpCiAg
ICAgICAgcmV0dXJuOwogICAgY2dtX2xpbmV3aWR0aCA9IG5ld19saW5ld2lkdGg7CiAgICBDR01f
d3JpdGVfaW50X3JlY29yZCg1LCAzLCBzaXplb2YoY2dtX2xpbmV3aWR0aCkgLyAoc2l6ZW9mKGlu
dCkvc2l6ZW9mKHNob3J0KSksCiAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ICopICZjZ21f
bGluZXdpZHRoKTsKICAgIENHTV9kYXNodHlwZShjZ21fZGFzaHR5cGUpOwp9CgpzdGF0aWMgdm9p
ZCBDR01fZGFzaHR5cGUoZGFzaHR5cGUpCmludCBkYXNodHlwZTsKewogICAgaW50IGksIGo7CgoK
CgogICAgc3RhdGljIGludCBkb3RfbGVuZ3RoWzkgKiA4XSA9CiAgICB7CiAgICAgICAgNSwgOCwg
NSwgOCwgNSwgOCwgNSwgOCwKICAgICAgICA1LCAzLCA1LCAzLCA1LCAzLCA1LCAzLAogICAgICAg
IDQsIDEsIDQsIDEsIDQsIDEsIDQsIDEsCiAgICAgICAgNCwgOCwgNCwgMSwgNCwgOCwgNCwgMSwK
ICAgICAgICA0LCA5LCA0LCAxLCA0LCAxLCAwLCAwLAogICAgICAgIDQsIDEwLCA0LCAxLCA0LCAx
LCA0LCAxLAogICAgICAgIDQsIDEwLCA0LCAxMCwgNCwgMSwgMCwgMCwKICAgICAgICA0LCAxMCwg
NCwgMTAsIDQsIDEsIDQsIDF9OwoKCiAgICAoKHZvaWQpICgoZGFzaHR5cGUgPj0gLTIpID8gMCA6
IChfX2Fzc2VydF9mYWlsICgiZGFzaHR5cGUgPj0gLTIiLCAidGVybS9jZ20udHJtIiwgNDc2LCBf
X1BSRVRUWV9GVU5DVElPTl9fKSwgMCkpKTsKICAgIGlmIChkYXNodHlwZSA9PSBjZ21fZGFzaHR5
cGUpCiAgICAgICAgcmV0dXJuOwogICAgY2dtX2Rhc2h0eXBlID0gZGFzaHR5cGU7CgogICAgQ0dN
X2ZsdXNoX3BvbHlsaW5lKCk7CgogICAgaWYgKGRhc2h0eXBlID49IDkpCiAgICAgICAgZGFzaHR5
cGUgPSBkYXNodHlwZSAlIDk7CiAgICBpZiAoZGFzaHR5cGUgPCAxKSB7CiAgICAgICAgdGVybS0+
dmVjdG9yID0gQ0dNX3NvbGlkX3ZlY3RvcjsKICAgICAgICByZXR1cm47CiAgICB9CiAgICB0ZXJt
LT52ZWN0b3IgPSBDR01fZGFzaGVkX3ZlY3RvcjsKCgogICAgaiA9IChkYXNodHlwZSAtIDEpICog
ODsKICAgIGZvciAoaSA9IDA7IGkgPCA4OyBpKyssIGorKykgewogICAgICAgIGlmIChkb3RfbGVu
Z3RoW2pdKQogICAgICAgICAgICBjZ21fc3RlcF9zaXplc1tpXSA9IChkb3RfbGVuZ3RoW2pdICog
Y2dtX2xpbmV3aWR0aCkgKiAyIC8gMzsKICAgICAgICBlbHNlCiAgICAgICAgICAgIGNnbV9zdGVw
X3NpemVzW2ldID0gMDsKICAgIH0KCiAgICBjZ21fc3RlcCA9IGNnbV9zdGVwX3NpemVzWzFdOwog
ICAgY2dtX3N0ZXBfaW5kZXggPSAxOwp9CgpzdGF0aWMgdm9pZCBDR01fbW92ZSh4LCB5KQp1bnNp
Z25lZCBpbnQgeCwgeTsKewogICAgKCh2b2lkKSAoKHggPCB0ZXJtLT54bWF4ICYmIHkgPCB0ZXJt
LT55bWF4KSA/IDAgOiAoX19hc3NlcnRfZmFpbCAoInggPCB0ZXJtLT54bWF4ICYmIHkgPCB0ZXJt
LT55bWF4IiwgInRlcm0vY2dtLnRybSIsIDUwNywgX19QUkVUVFlfRlVOQ1RJT05fXyksIDApKSk7
CiAgICBpZiAoeCA9PSBjZ21fcG9zeCAmJiB5ID09IGNnbV9wb3N5KQogICAgICAgIHJldHVybjsK
ICAgIENHTV9mbHVzaF9wb2x5bGluZSgpOwogICAgY2dtX3Bvc3ggPSB4OwogICAgY2dtX3Bvc3kg
PSB5Owp9CgpzdGF0aWMgdm9pZCBDR01fZmx1c2hfcG9seWxpbmUoKQp7CiAgICBpZiAoY2dtX2Nv
b3JkcyA9PSAwKQogICAgICAgIHJldHVybjsKICAgIENHTV93cml0ZV9pbnRfcmVjb3JkKDQsIDEs
IGNnbV9jb29yZHMgKiAyLCBjZ21fcG9seWxpbmUpOwogICAgY2dtX2Nvb3JkcyA9IDA7Cn0KCnN0
YXRpYyB2b2lkIENHTV93cml0ZV9jaGFyX3JlY29yZChjbGFzcywgY2dtX2lkLCBudW1ieXRlcywg
ZGF0YSkKaW50IGNsYXNzLCBjZ21faWQsIG51bWJ5dGVzOwpjaGFyICpkYXRhOwp7CiAgICBpbnQg
aSwgcGFkLCBsZW5ndGg7CiAgICBzdGF0aWMgdW5zaWduZWQgY2hhciBmbGFnID0gMHhmZjsKICAg
IHN0YXRpYyB1bnNpZ25lZCBjaGFyIHBhZGRhdGEgPSAwOwogICAgY2hhciBzaG9ydF9sZW47Cgog
ICAgcGFkID0gMDsKICAgIGxlbmd0aCA9IG51bWJ5dGVzICsgMTsKICAgIGlmIChudW1ieXRlcyA+
PSAyNTUpCiAgICAgICAgbGVuZ3RoICs9IDI7CiAgICBpZiAobGVuZ3RoICYgMSkKICAgICAgICBw
YWQgPSAxOwogICAgQ0dNX3dyaXRlX2NvZGUoY2xhc3MsIGNnbV9pZCwgbGVuZ3RoKTsKICAgIGlm
IChudW1ieXRlcyA8IDI1NSkKICAgIHsKICAgICAgICBzaG9ydF9sZW4gPSAoY2hhciludW1ieXRl
czsKICAgICAgICBmd3JpdGUoJnNob3J0X2xlbiwgMSwgMSwgZ3BvdXRmaWxlKTsKICAgIH0gZWxz
ZSB7CiAgICAgICAgZndyaXRlKCZmbGFnLCAxLCAxLCBncG91dGZpbGUpOwogICAgICAgIENHTV93
cml0ZV9pbnQobnVtYnl0ZXMpOwogICAgfQoKICAgIGlmIChkYXRhKQogICAgICAgIGZ3cml0ZShk
YXRhLCAxLCBudW1ieXRlcywgZ3BvdXRmaWxlKTsKICAgIGVsc2UKICAgICAgICBmb3IgKGk9MDsg
aTxudW1ieXRlcytwYWQ7IGkrKykKICAgICAgICAgICAgZnB1dGMoJ1wwJywgZ3BvdXRmaWxlKTsK
CiAgICBpZihwYWQpCiAgICAgIGZ3cml0ZSgmcGFkZGF0YSwgMSwgMSwgZ3BvdXRmaWxlKTsKfQoK
c3RhdGljIHZvaWQgQ0dNX3dyaXRlX2J5dGVfcmVjb3JkKGNsYXNzLCBjZ21faWQsIG51bWJ5dGVz
LCBkYXRhKQppbnQgY2xhc3MsIGNnbV9pZCwgbnVtYnl0ZXM7CmNoYXIgKmRhdGE7CnsKICAgIGlu
dCBwYWQ7CiAgICBzdGF0aWMgdW5zaWduZWQgY2hhciBwYWRkYXRhID0gMDsKCiAgICBwYWQgPSBu
dW1ieXRlcyAmIDE7CiAgICBDR01fd3JpdGVfY29kZShjbGFzcywgY2dtX2lkLCBudW1ieXRlcyk7
CiAgICBmd3JpdGUoZGF0YSwgMSwgbnVtYnl0ZXMsIGdwb3V0ZmlsZSk7CiAgICBpZihwYWQpCiAg
ICAgIGZ3cml0ZSgmcGFkZGF0YSwgMSwgMSwgZ3BvdXRmaWxlKTsKfQoKc3RhdGljIHZvaWQgQ0dN
X3dyaXRlX2ludF9yZWNvcmQoY2xhc3MsIGNnbV9pZCwgbnVtYnl0ZXMsIGRhdGEpCmludCBjbGFz
cywgY2dtX2lkLCBudW1ieXRlcywgKmRhdGE7CnsKICAgIGludCBpOwogICAgKCh2b2lkKSAoKChu
dW1ieXRlcyAmIDEpID09IDApID8gMCA6IChfX2Fzc2VydF9mYWlsICgiKG51bWJ5dGVzICYgMSkg
PT0gMCIsICJ0ZXJtL2NnbS50cm0iLCA1NzYsIF9fUFJFVFRZX0ZVTkNUSU9OX18pLCAwKSkpOwog
ICAgQ0dNX3dyaXRlX2NvZGUoY2xhc3MsIGNnbV9pZCwgbnVtYnl0ZXMpOwogICAgbnVtYnl0ZXMg
Pj49IDE7CiAgICBmb3IgKGkgPSAwOyBpIDwgbnVtYnl0ZXM7IGkrKykKICAgICAgICBDR01fd3Jp
dGVfaW50KGRhdGFbaV0pOwp9CgpzdGF0aWMgdm9pZCBDR01fd3JpdGVfbWl4ZWRfcmVjb3JkKGNs
YXNzLCBjZ21faWQsIG51bWludCwgaW50X2RhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbnVtY2hhciwgY2hhcl9kYXRhKQppbnQgY2xhc3MsIGNnbV9pZCwgbnVtaW50LCAq
aW50X2RhdGEsIG51bWNoYXI7CmNoYXIgKmNoYXJfZGF0YTsKewogICAgaW50IGksIHBhZCwgbGVu
Z3RoOwogICAgc3RhdGljIHVuc2lnbmVkIGNoYXIgcGFkZGF0YSA9IDA7CiAgICBzdGF0aWMgdW5z
aWduZWQgY2hhciBmbGFnID0gMHhmZjsKICAgIGNoYXIgc2hvcnRfbGVuOwoKICAgIHBhZCA9IDA7
CiAgICBsZW5ndGggPSBudW1jaGFyICsgMTsKICAgIGlmIChudW1jaGFyID49IDI1NSkKICAgICAg
ICBsZW5ndGggKz0gMjsKICAgIGlmIChsZW5ndGggJiAxKQogICAgICAgIHBhZCA9IDE7CgogICAg
Q0dNX3dyaXRlX2NvZGUoY2xhc3MsIGNnbV9pZCwgbnVtaW50ICogMiArIGxlbmd0aCk7CgogICAg
Zm9yIChpID0gMDsgaSA8IG51bWludDsgaSsrKQogICAgICAgIENHTV93cml0ZV9pbnQoaW50X2Rh
dGFbaV0pOwoKICAgIGlmIChudW1jaGFyIDwgMjU1KSB7CiAgICAgICAgc2hvcnRfbGVuID0gKGNo
YXIpbnVtY2hhcjsKICAgICAgICBmd3JpdGUoJnNob3J0X2xlbiwgMSwgMSwgZ3BvdXRmaWxlKTsK
ICAgIH0gZWxzZSB7CiAgICAgICAgZndyaXRlKCZmbGFnLCAxLCAxLCBncG91dGZpbGUpOwogICAg
ICAgIENHTV93cml0ZV9pbnQobnVtY2hhcik7CiAgICB9CiAgICBmd3JpdGUoY2hhcl9kYXRhLCAx
LCBudW1jaGFyLCBncG91dGZpbGUpOwogICAgaWYocGFkKQogICAgICBmd3JpdGUoJnBhZGRhdGEs
IDEsIDEsIGdwb3V0ZmlsZSk7Cn0KIyA2MjcgInRlcm0vY2dtLnRybSIKc3RhdGljIHZvaWQgQ0dN
X3dyaXRlX2NvZGUoY2xhc3MsIGNnbV9pZCwgbGVuZ3RoKQppbnQgY2xhc3MsIGNnbV9pZCwgbGVu
Z3RoOwp7CiAgICB1bnNpZ25lZCBjb2RlOwoKICAgICgodm9pZCkgKCgoMCA8PSBjbGFzcykgJiYo
Y2xhc3MgPDE2KSkgPyAwIDogKF9fYXNzZXJ0X2ZhaWwgKCIoMCA8PSBjbGFzcykgJiYoY2xhc3Mg
PDE2KSIsICJ0ZXJtL2NnbS50cm0iLCA2MzIsIF9fUFJFVFRZX0ZVTkNUSU9OX18pLCAwKSkpOwog
ICAgKCh2b2lkKSAoKCgwIDw9IGNnbV9pZCkgJiYgKGNnbV9pZCA8IDEyOCkpID8gMCA6IChfX2Fz
c2VydF9mYWlsICgiKDAgPD0gY2dtX2lkKSAmJiAoY2dtX2lkIDwgMTI4KSIsICJ0ZXJtL2NnbS50
cm0iLCA2MzMsIF9fUFJFVFRZX0ZVTkNUSU9OX18pLCAwKSkpOwogICAgKCh2b2lkKSAoKDAgPD0g
bGVuZ3RoKSA/IDAgOiAoX19hc3NlcnRfZmFpbCAoIjAgPD0gbGVuZ3RoIiwgInRlcm0vY2dtLnRy
bSIsIDYzNCwgX19QUkVUVFlfRlVOQ1RJT05fXyksIDApKSk7CiAgICBpZiAobGVuZ3RoIDwgMzEp
IHsKICAgICAgICBjb2RlID0gKChjbGFzcyAmMHgwZikgPDwxMikgfAogICAgICAgICAgICAoKGNn
bV9pZCAmIDB4N2YpIDw8IDUpIHwKICAgICAgICAgICAgKChsZW5ndGggJiAweDFmKSk7CiAgICAg
ICAgQ0dNX3dyaXRlX2ludChjb2RlKTsKICAgIH0gZWxzZSB7CiAgICAgICAgY29kZSA9ICgoY2xh
c3MgJjB4MGYpIDw8MTIpIHwKICAgICAgICAgICAgKChjZ21faWQgJiAweDdmKSA8PCA1KSB8CiAg
ICAgICAgICAgIDB4MWY7CiAgICAgICAgQ0dNX3dyaXRlX2ludChjb2RlKTsKICAgICAgICBDR01f
d3JpdGVfaW50KGxlbmd0aCk7CiAgICB9Cn0KCnN0YXRpYyB2b2lkIENHTV93cml0ZV9pbnQodmFs
dWUpCmludCB2YWx1ZTsKewogICAgdW5pb24gewogICAgICAgIHNob3J0IHM7CiAgICAgICAgY2hh
ciBjWzJdOwogICAgfSB1OwoKCiAgICAoKHZvaWQpICgoLTMyNzY4IDw9IHZhbHVlICYmIHZhbHVl
IDw9IDMyNzY3KSA/IDAgOiAoX19hc3NlcnRfZmFpbCAoIi0zMjc2OCA8PSB2YWx1ZSAmJiB2YWx1
ZSA8PSAzMjc2NyIsICJ0ZXJtL2NnbS50cm0iLCA2NTgsIF9fUFJFVFRZX0ZVTkNUSU9OX18pLCAw
KSkpOwoKCiAgICB1LmNbMF0gPSAodmFsdWUgPj4gOCkgJiAyNTU7CiAgICB1LmNbMV0gPSB2YWx1
ZSAmIDI1NTsKCiAgICBmd3JpdGUoJnUucywgMSwgMiwgZ3BvdXRmaWxlKTsKfQoKCgoKCgpzdGF0
aWMgdm9pZCBDR01fZGFzaGVkX3ZlY3Rvcih1eCwgdXkpCnVuc2lnbmVkIGludCB1eCwgdXk7CnsK
ICAgIGludCB4YSwgeWE7CiAgICBpbnQgZHgsIGR5LCBhZHgsIGFkeTsKICAgIGludCBkaXN0OwoK
CiAgICBsb25nIHJlbWFpbjsKCgogICAgKCh2b2lkKSAoKHV4IDwgdGVybS0+eG1heCAmJiB1eSA8
IHRlcm0tPnltYXgpID8gMCA6IChfX2Fzc2VydF9mYWlsICgidXggPCB0ZXJtLT54bWF4ICYmIHV5
IDwgdGVybS0+eW1heCIsICJ0ZXJtL2NnbS50cm0iLCA2ODMsIF9fUFJFVFRZX0ZVTkNUSU9OX18p
LCAwKSkpOwoKICAgIGR4ID0gKHV4IC0gY2dtX3Bvc3gpOwogICAgZHkgPSAodXkgLSBjZ21fcG9z
eSk7CiAgICBhZHggPSBhYnMoZHgpOwogICAgYWR5ID0gYWJzKGR5ICogMTApOwoKCgoKCiAgICBp
ZiAoMTAgKiBhZHggPCBhZHkpCiAgICAgICAgZGlzdCA9IChhZHkgLyAyICsgMjUgKiBhZHggLyBh
ZHkgKiBhZHggLyA2ICogNSkgLyA1OwogICAgZWxzZSB7CiAgICAgICAgaWYgKGFkeCA9PSAwKQog
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgZGlzdCA9IChhZHggKiAxMCArIChhZHkgLyAyNCkg
KiAoYWR5IC8gYWR4KSkgLyAxMDsKICAgIH0KICAgIHJlbWFpbiA9IGRpc3Q7CiAgICB4YSA9IGNn
bV9wb3N4OwogICAgeWEgPSBjZ21fcG9zeTsKICAgIHdoaWxlIChyZW1haW4gPiBjZ21fc3RlcCkg
ewogICAgICAgIHJlbWFpbiAtPSBjZ21fc3RlcDsKICAgICAgICBpZiAoY2dtX3N0ZXBfaW5kZXgg
JiAxKQogICAgICAgICAgICBDR01fc29saWRfdmVjdG9yKChpbnQpICh1eCAtIChyZW1haW4gKiBk
eCkgLyBkaXN0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KSAodXkgLSAocmVt
YWluICogZHkpIC8gZGlzdCkpOwogICAgICAgIGVsc2UgewogICAgICAgICAgICB4YSA9IChpbnQp
ICh1eCAtIChyZW1haW4gKiBkeCkgLyBkaXN0KTsKICAgICAgICAgICAgeWEgPSAoaW50KSAodXkg
LSAocmVtYWluICogZHkpIC8gZGlzdCk7CiAgICAgICAgICAgIENHTV9tb3ZlKHhhLCB5YSk7CiAg
ICAgICAgfQogICAgICAgIGlmICgrK2NnbV9zdGVwX2luZGV4ID49IDgpCiAgICAgICAgICAgIGNn
bV9zdGVwX2luZGV4ID0gMDsKICAgICAgICBjZ21fc3RlcCA9IGNnbV9zdGVwX3NpemVzW2NnbV9z
dGVwX2luZGV4XTsKICAgIH0KICAgIGlmIChjZ21fc3RlcF9pbmRleCAmIDEpCiAgICAgICAgQ0dN
X3NvbGlkX3ZlY3Rvcih1eCwgdXkpOwogICAgZWxzZQogICAgICAgIENHTV9tb3ZlKHV4LCB1eSk7
CiAgICBjZ21fc3RlcCAtPSAoaW50KSByZW1haW47Cn0KCnN0YXRpYyB2b2lkIENHTV9zb2xpZF92
ZWN0b3IodXgsIHV5KQp1bnNpZ25lZCBpbnQgdXgsIHV5Owp7CiAgICAoKHZvaWQpICgodXggPCB0
ZXJtLT54bWF4ICYmIHV5IDwgdGVybS0+eW1heCkgPyAwIDogKF9fYXNzZXJ0X2ZhaWwgKCJ1eCA8
IHRlcm0tPnhtYXggJiYgdXkgPCB0ZXJtLT55bWF4IiwgInRlcm0vY2dtLnRybSIsIDcyOCwgX19Q
UkVUVFlfRlVOQ1RJT05fXyksIDApKSk7CiAgICBpZiAodXggPT0gY2dtX3Bvc3ggJiYgdXkgPT0g
Y2dtX3Bvc3kpCiAgICAgICAgcmV0dXJuOwogICAgaWYgKGNnbV9jb29yZHMgPiAxMDQgLSAyKSB7
CiAgICAgICAgQ0dNX2ZsdXNoX3BvbHlsaW5lKCk7CiAgICAgICAgY2dtX3BvbHlsaW5lW2NnbV9j
b29yZHMrK10gPSBjZ21fcG9zeDsKICAgICAgICBjZ21fcG9seWxpbmVbY2dtX2Nvb3JkcysrXSA9
IGNnbV9wb3N5ICsgKDMyNzY3LzE4MCk7CiAgICB9IGVsc2UgaWYgKGNnbV9jb29yZHMgPT0gMCkg
ewogICAgICAgIGNnbV9wb2x5bGluZVtjZ21fY29vcmRzKytdID0gY2dtX3Bvc3g7CiAgICAgICAg
Y2dtX3BvbHlsaW5lW2NnbV9jb29yZHMrK10gPSBjZ21fcG9zeSArICgzMjc2Ny8xODApOwogICAg
fQogICAgY2dtX3BvbHlsaW5lW2NnbV9jb29yZHMrK10gPSB1eDsKICAgIGNnbV9wb2x5bGluZVtj
Z21fY29vcmRzKytdID0gdXkgKyAoMzI3NjcvMTgwKTsKICAgIGNnbV9wb3N4ID0gdXg7CiAgICBj
Z21fcG9zeSA9IHV5Owp9CgpzdGF0aWMgdm9pZCBDR01fcHV0X3RleHQoeCwgeSwgc3RyKQp1bnNp
Z25lZCBpbnQgeCwgeTsKY2hhciBzdHJbXTsKewogICAgc3RhdGljIGludCB3aGVyZVszXSA9IHsg
MCwgMCwgMSB9OwogICAgaW50IGRhdGFbNF07CiAgICBjaGFyICpzID0gc3RyOwoKICAgIHdoaWxl
ICgqcykKICAgICAgICBpZiAoIShfX2N0eXBlX2JbKGludCkgKCgoaW50KSAqcysrKSldICYgKHVu
c2lnbmVkIHNob3J0IGludCkgX0lTc3BhY2UpKQogICAgICAgICAgICBnb3RvIHNob3dpdDsKICAg
IHJldHVybjsKCiAgc2hvd2l0OgogICAgaWYgKGNnbV92ZXJ0X3RleHQgIT0gY2dtX3ZlcnRfdGV4
dF9yZXF1ZXN0ZWQpIHsKICAgICAgICBjZ21fdmVydF90ZXh0ID0gY2dtX3ZlcnRfdGV4dF9yZXF1
ZXN0ZWQ7CiAgICAgICAgaWYgKGNnbV92ZXJ0X3RleHQpIHsKICAgICAgICAgICAgZGF0YVswXSA9
IC10ZXJtLT52X2NoYXI7CiAgICAgICAgICAgIGRhdGFbMV0gPSBkYXRhWzJdID0gMDsKICAgICAg
ICAgICAgZGF0YVszXSA9IHRlcm0tPnZfY2hhcjsKICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICBkYXRhWzFdID0gZGF0YVsyXSA9IHRlcm0tPnZfY2hhcjsKICAgICAgICAgICAgZGF0YVswXSA9
IGRhdGFbM10gPSAwOwogICAgICAgIH0KICAgICAgICBDR01fd3JpdGVfaW50X3JlY29yZCg1LCAx
NiwgOCwgZGF0YSk7CiAgICB9CiAgICBDR01fZmx1c2hfcG9seWxpbmUoKTsKICAgIHdoZXJlWzBd
ID0geDsKICAgIHdoZXJlWzFdID0geSArICgzMjc2Ny8xODApOwogICAgQ0dNX3dyaXRlX21peGVk
X3JlY29yZCg0LCA0LCAzLCB3aGVyZSwgc3RybGVuKHN0ciksIHN0cik7CgogICAgY2dtX3Bvc3gg
PSBjZ21fcG9zeSA9IC0yMDAwOwp9CgpzdGF0aWMgaW50IENHTV90ZXh0X2FuZ2xlKGFuZykKaW50
IGFuZzsKewogICAgaWYgKGNnbV9yb3RhdGUpIHsKICAgICAgICBjZ21fdmVydF90ZXh0X3JlcXVl
c3RlZCA9IGFuZzsKICAgICAgICByZXR1cm4gMTsKICAgIH0KICAgIHJldHVybiBhbmcgPyAwIDog
MTsKfQoKc3RhdGljIGludCBDR01fanVzdGlmeV90ZXh0KG1vZGUpCmVudW0gSlVTVElGWSBtb2Rl
Owp7CiAgICBzdGF0aWMgaW50IGRhdGFbNl0gPSB7IDEsIDMsIDAsIDAsIDAsIDAgfTsKCiAgICBz
d2l0Y2ggKG1vZGUpIHsKICAgIGNhc2UgTEVGVDoKICAgICAgICBkYXRhWzBdID0gMTsKICAgICAg
ICBicmVhazsKICAgIGNhc2UgQ0VOVFJFOgogICAgICAgIGRhdGFbMF0gPSAyOwogICAgICAgIGJy
ZWFrOwogICAgY2FzZSBSSUdIVDoKICAgICAgICBkYXRhWzBdID0gMzsKICAgICAgICBicmVhazsK
ICAgIGRlZmF1bHQ6CiAgICAgICAgKCh2b2lkKSAoKDApID8gMCA6IChfX2Fzc2VydF9mYWlsICgi
MCIsICJ0ZXJtL2NnbS50cm0iLCA4MDUsIF9fUFJFVFRZX0ZVTkNUSU9OX18pLCAwKSkpOwogICAg
fQogICAgQ0dNX3dyaXRlX2ludF9yZWNvcmQoNSwgMTgsIDEyLCBkYXRhKTsKICAgIHJldHVybiAo
MSk7Cn0KCnN0YXRpYyB2b2lkIENHTV9yZXNldCgpCnsKICAgIGNnbV9wb3N4ID0gY2dtX3Bvc3kg
PSAwOwp9CgpzdGF0aWMgdm9pZCBDR01fcG9pbnQoeCwgeSwgbnVtYmVyKQp1bnNpZ25lZCBpbnQg
eCwgeTsKaW50IG51bWJlcjsKewogICAgaW50IG9sZF9kYXNodHlwZTsKCiAgICBpZiAobnVtYmVy
IDwgMCkgewogICAgICAgIENHTV9tb3ZlKHgsIHkpOwogICAgICAgIENHTV9zb2xpZF92ZWN0b3Io
eCArIDEsIHkpOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIG51bWJlciAlPSA4OwoKICAgIENH
TV9mbHVzaF9wb2x5bGluZSgpOwogICAgb2xkX2Rhc2h0eXBlID0gY2dtX2Rhc2h0eXBlOwogICAg
Q0dNX2Rhc2h0eXBlKDApOwoKICAgIHN3aXRjaCAobnVtYmVyKSB7CiAgICBjYXNlIDA6CiAgICAg
ICAgQ0dNX21vdmUoeCAtIGNnbV90aWMsIHkpOwogICAgICAgIENHTV9zb2xpZF92ZWN0b3IoeCwg
eSAtIGNnbV90aWMpOwogICAgICAgIENHTV9zb2xpZF92ZWN0b3IoeCArIGNnbV90aWMsIHkpOwog
ICAgICAgIENHTV9zb2xpZF92ZWN0b3IoeCwgeSArIGNnbV90aWMpOwogICAgICAgIENHTV9mbHVz
aF9wb2x5Z29uKCk7CiAgICAgICAgYnJlYWs7CiAgICBjYXNlIDE6CiAgICAgICAgQ0dNX21vdmUo
eCAtIGNnbV90aWMsIHkpOwogICAgICAgIENHTV9zb2xpZF92ZWN0b3IoeCArIGNnbV90aWMsIHkp
OwogICAgICAgIENHTV9tb3ZlKHgsIHkgLSBjZ21fdGljKTsKICAgICAgICBDR01fc29saWRfdmVj
dG9yKHgsIHkgKyBjZ21fdGljKTsKICAgICAgICBicmVhazsKICAgIGNhc2UgMjoKICAgICAgICBD
R01fbW92ZSh4IC0gY2dtX3RpYzcwNywgeSAtIGNnbV90aWM3MDcpOwogICAgICAgIENHTV9zb2xp
ZF92ZWN0b3IoeCArIGNnbV90aWM3MDcsIHkgLSBjZ21fdGljNzA3KTsKICAgICAgICBDR01fc29s
aWRfdmVjdG9yKHggKyBjZ21fdGljNzA3LCB5ICsgY2dtX3RpYzcwNyk7CiAgICAgICAgQ0dNX3Nv
bGlkX3ZlY3Rvcih4IC0gY2dtX3RpYzcwNywgeSArIGNnbV90aWM3MDcpOwogICAgICAgIENHTV9m
bHVzaF9wb2x5Z29uKCk7CiAgICAgICAgYnJlYWs7CiAgICBjYXNlIDM6CiAgICAgICAgQ0dNX21v
dmUoeCAtIGNnbV90aWM3MDcsIHkgLSBjZ21fdGljNzA3KTsKICAgICAgICBDR01fc29saWRfdmVj
dG9yKHggKyBjZ21fdGljNzA3LCB5ICsgY2dtX3RpYzcwNyk7CiAgICAgICAgQ0dNX21vdmUoeCAt
IGNnbV90aWM3MDcsIHkgKyBjZ21fdGljNzA3KTsKICAgICAgICBDR01fc29saWRfdmVjdG9yKHgg
KyBjZ21fdGljNzA3LCB5IC0gY2dtX3RpYzcwNyk7CiAgICAgICAgYnJlYWs7CiAgICBjYXNlIDQ6
CiAgICAgICAgQ0dNX21vdmUoeCwgeSArIGNnbV90aWMxMjQxKTsKICAgICAgICBDR01fc29saWRf
dmVjdG9yKHggLSBjZ21fdGljMTA3NywgeSAtIGNnbV90aWM2MjEpOwogICAgICAgIENHTV9zb2xp
ZF92ZWN0b3IoeCArIGNnbV90aWMxMDc3LCB5IC0gY2dtX3RpYzYyMSk7CiAgICAgICAgQ0dNX2Zs
dXNoX3BvbHlnb24oKTsKICAgICAgICBicmVhazsKICAgIGNhc2UgNToKICAgICAgICBDR01fbW92
ZSh4LCB5IC0gY2dtX3RpYyk7CiAgICAgICAgQ0dNX3NvbGlkX3ZlY3Rvcih4LCB5ICsgY2dtX3Rp
Yyk7CiAgICAgICAgQ0dNX21vdmUoeCArIGNnbV90aWM4NjYsIHkgLSBjZ21fdGljNTAwKTsKICAg
ICAgICBDR01fc29saWRfdmVjdG9yKHggLSBjZ21fdGljODY2LCB5ICsgY2dtX3RpYzUwMCk7CiAg
ICAgICAgQ0dNX21vdmUoeCArIGNnbV90aWM4NjYsIHkgKyBjZ21fdGljNTAwKTsKICAgICAgICBD
R01fc29saWRfdmVjdG9yKHggLSBjZ21fdGljODY2LCB5IC0gY2dtX3RpYzUwMCk7CiAgICAgICAg
YnJlYWs7CiAgICBjYXNlIDY6CiAgICAgICAgQ0dNX21vdmUoeCwgeSAtIGNnbV90aWMxMjQxKTsK
ICAgICAgICBDR01fc29saWRfdmVjdG9yKHggLSBjZ21fdGljMTA3NywgeSArIGNnbV90aWM2MjEp
OwogICAgICAgIENHTV9zb2xpZF92ZWN0b3IoeCArIGNnbV90aWMxMDc3LCB5ICsgY2dtX3RpYzYy
MSk7CiAgICAgICAgQ0dNX2ZsdXNoX3BvbHlnb24oKTsKICAgICAgICBicmVhazsKICAgIGNhc2Ug
NzoKCgoKICAgICAgICBDR01fbW92ZSh4LCB5IC0gY2dtX3RpYyk7CiAgICAgICAgQ0dNX3NvbGlk
X3ZlY3Rvcih4ICsgY2dtX3RpYzUwMCwgeSAtIGNnbV90aWM4NjYpOwogICAgICAgIENHTV9zb2xp
ZF92ZWN0b3IoeCArIGNnbV90aWM4NjYsIHkgLSBjZ21fdGljNTAwKTsKICAgICAgICBDR01fc29s
aWRfdmVjdG9yKHggKyBjZ21fdGljLCB5KTsKICAgICAgICBDR01fc29saWRfdmVjdG9yKHggKyBj
Z21fdGljODY2LCB5ICsgY2dtX3RpYzUwMCk7CiAgICAgICAgQ0dNX3NvbGlkX3ZlY3Rvcih4ICsg
Y2dtX3RpYzUwMCwgeSArIGNnbV90aWM4NjYpOwogICAgICAgIENHTV9zb2xpZF92ZWN0b3IoeCwg
eSArIGNnbV90aWMpOwogICAgICAgIENHTV9zb2xpZF92ZWN0b3IoeCAtIGNnbV90aWM1MDAsIHkg
KyBjZ21fdGljODY2KTsKICAgICAgICBDR01fc29saWRfdmVjdG9yKHggLSBjZ21fdGljODY2LCB5
ICsgY2dtX3RpYzUwMCk7CiAgICAgICAgQ0dNX3NvbGlkX3ZlY3Rvcih4IC0gY2dtX3RpYywgeSk7
CiAgICAgICAgQ0dNX3NvbGlkX3ZlY3Rvcih4IC0gY2dtX3RpYzg2NiwgeSAtIGNnbV90aWM1MDAp
OwogICAgICAgIENHTV9zb2xpZF92ZWN0b3IoeCAtIGNnbV90aWM1MDAsIHkgLSBjZ21fdGljODY2
KTsKICAgICAgICBDR01fZmx1c2hfcG9seWdvbigpOwogICAgICAgIGJyZWFrOwogICAgfQogICAg
Q0dNX2Rhc2h0eXBlKG9sZF9kYXNodHlwZSk7Cn0KCgpzdGF0aWMgdm9pZCBDR01fc2V0X3BvaW50
c2l6ZShzaXplKQpkb3VibGUgc2l6ZTsKewojIDkyNCAidGVybS9jZ20udHJtIgogICAgY2dtX3Rp
YyA9IChzaXplICogdGVybS0+aF90aWMgLyAyKTsKICAgIGNnbV90aWM3MDcgPSBjZ21fdGljICog
MTIgLyAxNzsKICAgIGNnbV90aWM4NjYgPSBjZ21fdGljICogMTMgLyAxNTsKICAgIGNnbV90aWM1
MDAgPSBjZ21fdGljIC8gMjsKICAgIGNnbV90aWMxMjQxID0gY2dtX3RpYyAqIDM2IC8gMjk7CiAg
ICBjZ21fdGljMTA3NyA9IGNnbV90aWMgKiAxNCAvIDEzOwogICAgY2dtX3RpYzYyMSA9IGNnbV90
aWMgKiAxOCAvIDI5Owp9CgpzdGF0aWMgdm9pZCBDR01fZmx1c2hfcG9seWdvbigpCnsKICAgIGlm
IChjZ21fY29vcmRzID09IDApCiAgICAgICAgcmV0dXJuOwogICAgQ0dNX3dyaXRlX2ludF9yZWNv
cmQoNCwgNywgY2dtX2Nvb3JkcyAqIDIsIGNnbV9wb2x5bGluZSk7CiAgICBjZ21fY29vcmRzID0g
MDsKfQoKc3RhdGljIHZvaWQgQ0dNX29wdGlvbnMoKQp7CiAgICAoX19leHRlbnNpb25fXyAoX19i
dWlsdGluX2NvbnN0YW50X3AgKCJBcmlhbCBCb2xkIikgPyAoKChzaXplX3QpKGNvbnN0IHZvaWQg
KikoKCJBcmlhbCBCb2xkIikgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoIkFyaWFsIEJv
bGQiKSA9PSAxKSAmJiBzdHJsZW4gKCJBcmlhbCBCb2xkIikgKyAxIDw9IDggPyBfX3N0cmNweV9z
bWFsbCAoY2dtX2ZvbnQsIF9fZXh0ZW5zaW9uX18gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikgKCJBcmlhbCBCb2xkIikpWzAgKyAxXSA8PCA4IHwgKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIkFyaWFsIEJvbGQiKSlbMF0pLCBf
X2V4dGVuc2lvbl9fICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop
ICgiQXJpYWwgQm9sZCIpKVs0ICsgMV0gPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikgKCJBcmlhbCBCb2xkIikpWzRdKSwgX19leHRlbnNpb25fXyAoKCgo
KF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiQXJpYWwgQm9sZCIp
KVswICsgM10gPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIg
KikgKCJBcmlhbCBCb2xkIikpWzAgKyAyXSkgPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFy
ICopIChfX2NvbnN0IGNoYXIgKikgKCJBcmlhbCBCb2xkIikpWzAgKyAxXSkgPDwgOCB8ICgoX19j
b25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJBcmlhbCBCb2xkIikpWzBd
KSwgX19leHRlbnNpb25fXyAoKCgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBj
aGFyICopICgiQXJpYWwgQm9sZCIpKVs0ICsgM10gPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBj
aGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJBcmlhbCBCb2xkIikpWzQgKyAyXSkgPDwgOCB8ICgo
X19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJBcmlhbCBCb2xkIikp
WzQgKyAxXSkgPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIg
KikgKCJBcmlhbCBCb2xkIikpWzRdKSwgc3RybGVuICgiQXJpYWwgQm9sZCIpICsgMSkgOiAoY2hh
ciAqKSBtZW1jcHkgKGNnbV9mb250LCAiQXJpYWwgQm9sZCIsIHN0cmxlbiAoIkFyaWFsIEJvbGQi
KSArIDEpKSA6IHN0cmNweSAoY2dtX2ZvbnQsICJBcmlhbCBCb2xkIikpKTsKICAgIGNnbV9mb250
c2l6ZSA9IDEwOwogICAgdGVybS0+dl9jaGFyID0gKHVuc2lnbmVkIGludCkgKGNnbV9mb250c2l6
ZSAqICgodGVybS0+eG1heCArICgzMjc2Ny8xODApKS9jZ21fcGxvdHdpZHRoKSk7CiAgICB0ZXJt
LT5oX2NoYXIgPSAodW5zaWduZWQgaW50KSAoY2dtX2ZvbnRzaXplICogKCh0ZXJtLT54bWF4ICsg
KDMyNzY3LzE4MCkpL2NnbV9wbG90d2lkdGgpICogNSAvIDkpOwogICAgY2dtX2xpbmV3aWR0aF9w
dCA9IDE7CiAgICBjZ21fbW9ub2Nocm9tZSA9IDA7CiAgICBjZ21fcGxvdHdpZHRoID0gNiAqIDcy
OwogICAgY2dtX3BvcnRyYWl0ID0gMDsKICAgIGNnbV9yb3RhdGUgPSAxOwogICAgY2dtX2Rhc2hl
ZCA9IDE7CiAgICBjZ21fd2lud29yZDZfbW9kZSA9IDA7CiAgICB3aGlsZSAoIShjX3Rva2VuID49
IG51bV90b2tlbnMgfHwgZXF1YWxzKGNfdG9rZW4sIjsiKSkpIHsKICAgICAgICBpZiAoYWxtb3N0
X2VxdWFscyhjX3Rva2VuLCAicCRvcnRyYWl0IikpIHsKICAgICAgICAgICAgY2dtX3BvcnRyYWl0
ID0gMTsKICAgICAgICAgICAgY190b2tlbisrOwogICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICB9CiAgICAgICAgaWYgKGFsbW9zdF9lcXVhbHMoY190b2tlbiwgImxhJG5kc2NhcGUiKSkgewog
ICAgICAgICAgICBjZ21fcG9ydHJhaXQgPSAwOwogICAgICAgICAgICBjX3Rva2VuKys7CiAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgIH0KICAgICAgICBpZiAoYWxtb3N0X2VxdWFscyhjX3Rv
a2VuLCAiZGUkZmF1bHQiKSkgewogICAgICAgICAgICAoX19leHRlbnNpb25fXyAoX19idWlsdGlu
X2NvbnN0YW50X3AgKCJBcmlhbCBCb2xkIikgPyAoKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCJB
cmlhbCBCb2xkIikgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoIkFyaWFsIEJvbGQiKSA9
PSAxKSAmJiBzdHJsZW4gKCJBcmlhbCBCb2xkIikgKyAxIDw9IDggPyBfX3N0cmNweV9zbWFsbCAo
Y2dtX2ZvbnQsIF9fZXh0ZW5zaW9uX18gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikgKCJBcmlhbCBCb2xkIikpWzAgKyAxXSA8PCA4IHwgKChfX2NvbnN0IHVuc2ln
bmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIkFyaWFsIEJvbGQiKSlbMF0pLCBfX2V4dGVu
c2lvbl9fICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiQXJp
YWwgQm9sZCIpKVs0ICsgMV0gPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikgKCJBcmlhbCBCb2xkIikpWzRdKSwgX19leHRlbnNpb25fXyAoKCgoKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiQXJpYWwgQm9sZCIpKVswICsg
M10gPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJB
cmlhbCBCb2xkIikpWzAgKyAyXSkgPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf
X2NvbnN0IGNoYXIgKikgKCJBcmlhbCBCb2xkIikpWzAgKyAxXSkgPDwgOCB8ICgoX19jb25zdCB1
bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJBcmlhbCBCb2xkIikpWzBdKSwgX19l
eHRlbnNpb25fXyAoKCgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop
ICgiQXJpYWwgQm9sZCIpKVs0ICsgM10gPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikgKCJBcmlhbCBCb2xkIikpWzQgKyAyXSkgPDwgOCB8ICgoX19jb25z
dCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJBcmlhbCBCb2xkIikpWzQgKyAx
XSkgPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJB
cmlhbCBCb2xkIikpWzRdKSwgc3RybGVuICgiQXJpYWwgQm9sZCIpICsgMSkgOiAoY2hhciAqKSBt
ZW1jcHkgKGNnbV9mb250LCAiQXJpYWwgQm9sZCIsIHN0cmxlbiAoIkFyaWFsIEJvbGQiKSArIDEp
KSA6IHN0cmNweSAoY2dtX2ZvbnQsICJBcmlhbCBCb2xkIikpKTsKICAgICAgICAgICAgY2dtX2Zv
bnRzaXplID0gMTA7CiAgICAgICAgICAgIHRlcm0tPnZfY2hhciA9ICh1bnNpZ25lZCBpbnQpIChj
Z21fZm9udHNpemUgKiAoKHRlcm0tPnhtYXggKyAoMzI3NjcvMTgwKSkvY2dtX3Bsb3R3aWR0aCkp
OwogICAgICAgICAgICB0ZXJtLT5oX2NoYXIgPSAodW5zaWduZWQgaW50KSAoY2dtX2ZvbnRzaXpl
ICogKCh0ZXJtLT54bWF4ICsgKDMyNzY3LzE4MCkpL2NnbV9wbG90d2lkdGgpICogNSAvIDkpOwog
ICAgICAgICAgICBjZ21fbGluZXdpZHRoX3B0ID0gMTsKICAgICAgICAgICAgY2dtX21vbm9jaHJv
bWUgPSAwOwogICAgICAgICAgICBjZ21fcGxvdHdpZHRoID0gNiAqIDcyOwogICAgICAgICAgICBj
Z21fcG9ydHJhaXQgPSAwOwogICAgICAgICAgICBjZ21fcm90YXRlID0gMTsKICAgICAgICAgICAg
Y2dtX2Rhc2hlZCA9IDE7CiAgICAgICAgICAgIGNnbV93aW53b3JkNl9tb2RlID0gMDsKICAgICAg
ICAgICAgY190b2tlbisrOwogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CiAgICAgICAg
aWYgKGFsbW9zdF9lcXVhbHMoY190b2tlbiwgInckaW53b3JkNiIpKSB7CiAgICAgICAgICAgIGNn
bV93aW53b3JkNl9tb2RlID0gMTsKICAgICAgICAgICAgY190b2tlbisrOwogICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICB9CiAgICAgICAgaWYgKGFsbW9zdF9lcXVhbHMoY190b2tlbiwgIm0k
b25vY2hyb21lIikpIHsKICAgICAgICAgICAgY2dtX21vbm9jaHJvbWUgPSAxOwogICAgICAgICAg
ICBjX3Rva2VuKys7CiAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgIH0KICAgICAgICBpZiAo
YWxtb3N0X2VxdWFscyhjX3Rva2VuLCAiYyRvbG9yIikKICAgICAgICAgICAgfHwgYWxtb3N0X2Vx
dWFscyhjX3Rva2VuLCAiYyRvbG91ciIpKSB7CiAgICAgICAgICAgIGNnbV9tb25vY2hyb21lID0g
MDsKICAgICAgICAgICAgY190b2tlbisrOwogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9
CiAgICAgICAgaWYgKGFsbW9zdF9lcXVhbHMoY190b2tlbiwgInIkb3RhdGUiKSkgewogICAgICAg
ICAgICBjZ21fcm90YXRlID0gMTsKICAgICAgICAgICAgY190b2tlbisrOwogICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICB9CiAgICAgICAgaWYgKGFsbW9zdF9lcXVhbHMoY190b2tlbiwgIm5v
ciRvdGF0ZSIpKSB7CiAgICAgICAgICAgIGNnbV9yb3RhdGUgPSAwOwogICAgICAgICAgICBjX3Rv
a2VuKys7CiAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgIH0KICAgICAgICBpZiAoYWxtb3N0
X2VxdWFscyhjX3Rva2VuLCAiZGEkc2hlZCIpKSB7CiAgICAgICAgICAgIGNnbV9kYXNoZWQgPSAx
OwogICAgICAgICAgICBjX3Rva2VuKys7CiAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgIH0K
ICAgICAgICBpZiAoYWxtb3N0X2VxdWFscyhjX3Rva2VuLCAicyRvbGlkIikpIHsKICAgICAgICAg
ICAgY2dtX2Rhc2hlZCA9IDA7CiAgICAgICAgICAgIGNfdG9rZW4rKzsKICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgfQogICAgICAgIGlmIChhbG1vc3RfZXF1YWxzKGNfdG9rZW4sICJsaSRu
ZXdpZHRoIikpIHsKICAgICAgICAgICAgY190b2tlbisrOwogICAgICAgICAgICBpZiAoIShjX3Rv
a2VuID49IG51bV90b2tlbnMgfHwgZXF1YWxzKGNfdG9rZW4sIjsiKSkpIHsKICAgICAgICAgICAg
ICAgIHN0cnVjdCB2YWx1ZSBhOwogICAgICAgICAgICAgICAgY2dtX2xpbmV3aWR0aF9wdCA9ICh1
bnNpZ25lZCBpbnQpIHJlYWwoY29uc3RfZXhwcmVzcygmYSkpOwogICAgICAgICAgICAgICAgaWYg
KGNnbV9saW5ld2lkdGhfcHQgPiAxMDAwMCkgewogICAgICAgICAgICAgICAgICAgIGZwdXRzKCJn
bnVwbG90KGNnbS50cm0pOiBsaW5ld2lkdGggb3V0IG9mIHJhbmdlXG4iLCBzdGRlcnIpOwogICAg
ICAgICAgICAgICAgICAgIGNnbV9saW5ld2lkdGhfcHQgPSAxOwogICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICB9CiAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgIH0KICAgICAgICBpZiAo
YWxtb3N0X2VxdWFscyhjX3Rva2VuLCAid2lkJHRoIikpIHsKICAgICAgICAgICAgY190b2tlbisr
OwogICAgICAgICAgICBpZiAoIShjX3Rva2VuID49IG51bV90b2tlbnMgfHwgZXF1YWxzKGNfdG9r
ZW4sIjsiKSkpIHsKICAgICAgICAgICAgICAgIHN0cnVjdCB2YWx1ZSBhOwogICAgICAgICAgICAg
ICAgY2dtX3Bsb3R3aWR0aCA9IChpbnQpIHJlYWwoY29uc3RfZXhwcmVzcygmYSkpOwogICAgICAg
ICAgICAgICAgaWYgKGNnbV9wbG90d2lkdGggPCAwIHx8IGNnbV9wbG90d2lkdGggPiAxMDAwMCkg
ewogICAgICAgICAgICAgICAgICAgIGZwdXRzKCJnbnVwbG90KGNnbS50cm0pOiB3aWR0aCBvdXQg
b2YgcmFuZ2VcbiIsIHN0ZGVycik7CiAgICAgICAgICAgICAgICAgICAgY2dtX3Bsb3R3aWR0aCA9
IDYgKiA3MjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICB9CiAgICAgICAgYnJlYWs7CiAgICB9CgogICAgaWYgKCEoY190b2tlbiA+
PSBudW1fdG9rZW5zIHx8IGVxdWFscyhjX3Rva2VuLCI7IikpICYmIGlzc3RyaW5nKGNfdG9rZW4p
KSB7CiAgICAgICAgcXVvdGVfc3RyKGNnbV9mb250LCBjX3Rva2VuLCA1MCk7CiAgICAgICAgaWYg
KENHTV9maW5kX2ZvbnQoY2dtX2ZvbnQsIHN0cmxlbihjZ21fZm9udCkpID09IDApIHsKCiAgICAg
ICAgICAgIGludCBuOwogICAgICAgICAgICBuID0gc3RybGVuKGNnbV9mb250KTsKICAgICAgICAg
ICAgaWYgKG4gKyAxIDw9IHNpemVvZihjZ21fZm9udF9kYXRhKSAmJiBuIDw9IDI1NSkgewogICAg
ICAgICAgICAgICAgY2dtX2ZvbnRfZGF0YVswXSA9IG47CiAgICAgICAgICAgICAgICAoX19leHRl
bnNpb25fXyAoX19idWlsdGluX2NvbnN0YW50X3AgKGNnbV9mb250KSAmJiBfX2J1aWx0aW5fY29u
c3RhbnRfcCAobikgPyAoc3RybGVuIChjZ21fZm9udCkgKyAxID49ICgoc2l6ZV90KSAobikpID8g
KGNoYXIgKikgbWVtY3B5IChjZ21fZm9udF9kYXRhICsgMSwgY2dtX2ZvbnQsIG4pIDogc3RybmNw
eSAoY2dtX2ZvbnRfZGF0YSArIDEsIGNnbV9mb250LCBuKSkgOiBzdHJuY3B5IChjZ21fZm9udF9k
YXRhICsgMSwgY2dtX2ZvbnQsIG4pKSk7CiAgICAgICAgICAgICAgICBjZ21fZm9udF9kYXRhW24g
KyAxXSA9IDA7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgY190b2tlbisrOwogICAg
fQogICAgaWYgKCEoY190b2tlbiA+PSBudW1fdG9rZW5zIHx8IGVxdWFscyhjX3Rva2VuLCI7Iikp
KSB7CgogICAgICAgIHN0cnVjdCB2YWx1ZSBhOwogICAgICAgIGNnbV9mb250c2l6ZSA9IChpbnQp
IHJlYWwoY29uc3RfZXhwcmVzcygmYSkpOwogICAgICAgIHRlcm0tPnZfY2hhciA9ICh1bnNpZ25l
ZCBpbnQpIChjZ21fZm9udHNpemUgKiAoKHRlcm0tPnhtYXggKyAoMzI3NjcvMTgwKSkvY2dtX3Bs
b3R3aWR0aCkpOwogICAgICAgIHRlcm0tPmhfY2hhciA9ICh1bnNpZ25lZCBpbnQpIChjZ21fZm9u
dHNpemUgKiAoKHRlcm0tPnhtYXggKyAoMzI3NjcvMTgwKSkvY2dtX3Bsb3R3aWR0aCkgKiA1IC8g
OSk7CiAgICB9CiAgICBpZiAoY2dtX3BvcnRyYWl0KSB7CiAgICAgICAgdGVybS0+eG1heCA9IDMy
NzY3LzE4KjEzIC0gKDMyNzY3LzE4MCk7CiAgICAgICAgdGVybS0+eW1heCA9IDMyNzY3IC0gKDMy
NzY3LzE4MCk7CiAgICB9IGVsc2UgewogICAgICAgIHRlcm0tPnhtYXggPSAzMjc2NyAtICgzMjc2
Ny8xODApOwogICAgICAgIHRlcm0tPnltYXggPSAzMjc2Ny8xOCoxMyAtICgzMjc2Ny8xODApOwog
ICAgfQoKICAgIHNwcmludGYoZGVmYXVsdF9mb250LCAiJXMsJWQiLCBjZ21fZm9udCwgY2dtX2Zv
bnRzaXplKTsKCiAgICBzcHJpbnRmKHRlcm1fb3B0aW9ucywgIiVzICVzICVzICVzICVzIHdpZHRo
ICVkIGxpbmV3aWR0aCAlZCBcIiVzXCIgJWQiLAogICAgICAgICAgICBjZ21fcG9ydHJhaXQgPyAi
cG9ydHJhaXQiIDogImxhbmRzY2FwZSIsCiAgICAgICAgICAgIGNnbV9tb25vY2hyb21lID8gIm1v
bm9jaHJvbWUiIDogImNvbG9yIiwKICAgICAgICAgICAgY2dtX3JvdGF0ZSA/ICJyb3RhdGUiIDog
Im5vcm90YXRlIiwKICAgICAgICAgICAgY2dtX2Rhc2hlZCA/ICJkYXNoZWQiIDogInNvbGlkIiwK
ICAgICAgICAgICAgY2dtX3dpbndvcmQ2X21vZGUgPyAid2lud29yZDYiIDogIiIsCiAgICAgICAg
ICAgIGNnbV9wbG90d2lkdGgsCiAgICAgICAgICAgIGNnbV9saW5ld2lkdGhfcHQsCiAgICAgICAg
ICAgIGNnbV9mb250LCBjZ21fZm9udHNpemUpOwp9CiMgMjYxICJ0ZXJtLmgiIDIKCgojIDEgInRl
cm0vY29yZWwudHJtIiAxCiMgMjggInRlcm0vY29yZWwudHJtIgojIDEgInRlcm0vZHJpdmVyLmgi
IDEKIyAyOSAidGVybS9jb3JlbC50cm0iIDIKCgoKCgoKc3RhdGljIHZvaWQgQ09SRUxfb3B0aW9u
cyAodm9pZCk7CnN0YXRpYyB2b2lkIENPUkVMX2luaXQgKHZvaWQpOwpzdGF0aWMgdm9pZCBDT1JF
TF9ncmFwaGljcyAodm9pZCk7CnN0YXRpYyB2b2lkIENPUkVMX3RleHQgKHZvaWQpOwpzdGF0aWMg
dm9pZCBDT1JFTF9yZXNldCAodm9pZCk7CnN0YXRpYyB2b2lkIENPUkVMX2xpbmV0eXBlIChpbnQg
bGluZXR5cGUpOwpzdGF0aWMgdm9pZCBDT1JFTF9tb3ZlICh1bnNpZ25lZCBpbnQgeCwgdW5zaWdu
ZWQgaW50IHkpOwpzdGF0aWMgdm9pZCBDT1JFTF92ZWN0b3IgKHVuc2lnbmVkIGludCB4LCB1bnNp
Z25lZCBpbnQgeSk7CnN0YXRpYyB2b2lkIENPUkVMX3B1dF90ZXh0ICh1bnNpZ25lZCBpbnQgeCwg
dW5zaWduZWQgaW50IHksIGNoYXIgKnN0cik7CgpzdGF0aWMgaW50IENPUkVMX3RleHRfYW5nbGUg
KGludCBhbmcpOwpzdGF0aWMgaW50IENPUkVMX2p1c3RpZnlfdGV4dCAoZW51bSBKVVNUSUZZIG1v
ZGUpOwojIDU5ICJ0ZXJtL2NvcmVsLnRybSIKY2hhciBjb3JlbF9mb250WzUwICsgMV0gPSAiU3dp
dHplcmxhbmRMaWdodCI7CmludCBjb3JlbF9mb250c2l6ZSA9IDIyOwpUQk9PTEVBTiBjb3JlbF9j
b2xvciA9IDA7ClRCT09MRUFOIGNvcmVsX3N0cm9rZSA9IDA7CmludCBjb3JlbF9wYXRoX2NvdW50
ID0gMDsKaW50IGNvcmVsX2FuZyA9IDA7CmVudW0gSlVTVElGWSBjb3JlbF9qdXN0aWZ5ID0gTEVG
VDsKIyA3NCAidGVybS9jb3JlbC50cm0iCnVuc2lnbmVkIGludCBjb3JlbF94bWF4ID0gNTk2MDsK
dW5zaWduZWQgaW50IGNvcmVsX3ltYXggPSA3MjAwOwpmbG9hdCBjb3JlbF9sdyA9ICgxLjIqKDEw
LjApKTsKCnN0YXRpYyB2b2lkIENPUkVMX29wdGlvbnMoKQp7CiAgICBzdHJ1Y3QgdmFsdWUgYTsK
CiAgICBpZiAoIShjX3Rva2VuID49IG51bV90b2tlbnMgfHwgZXF1YWxzKGNfdG9rZW4sIjsiKSkg
JiYgYWxtb3N0X2VxdWFscyhjX3Rva2VuLCAiZGVmJGF1bHQiKSkgewogICAgICAgIGNvcmVsX2Nv
bG9yID0gMDsKICAgICAgICAoX19leHRlbnNpb25fXyAoX19idWlsdGluX2NvbnN0YW50X3AgKCJT
d2l0emVybGFuZExpZ2h0IikgPyAoKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCJTd2l0emVybGFu
ZExpZ2h0IikgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoIlN3aXR6ZXJsYW5kTGlnaHQi
KSA9PSAxKSAmJiBzdHJsZW4gKCJTd2l0emVybGFuZExpZ2h0IikgKyAxIDw9IDggPyBfX3N0cmNw
eV9zbWFsbCAoY29yZWxfZm9udCwgX19leHRlbnNpb25fXyAoKChfX2NvbnN0IHVuc2lnbmVkIGNo
YXIgKikgKF9fY29uc3QgY2hhciAqKSAoIlN3aXR6ZXJsYW5kTGlnaHQiKSlbMCArIDFdIDw8IDgg
fCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiU3dpdHplcmxh
bmRMaWdodCIpKVswXSksIF9fZXh0ZW5zaW9uX18gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikgKCJTd2l0emVybGFuZExpZ2h0IikpWzQgKyAxXSA8PCA4IHwgKChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIlN3aXR6ZXJsYW5kTGln
aHQiKSlbNF0pLCBfX2V4dGVuc2lvbl9fICgoKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf
X2NvbnN0IGNoYXIgKikgKCJTd2l0emVybGFuZExpZ2h0IikpWzAgKyAzXSA8PCA4IHwgKChfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIlN3aXR6ZXJsYW5kTGlnaHQi
KSlbMCArIDJdKSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh
ciAqKSAoIlN3aXR6ZXJsYW5kTGlnaHQiKSlbMCArIDFdKSA8PCA4IHwgKChfX2NvbnN0IHVuc2ln
bmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIlN3aXR6ZXJsYW5kTGlnaHQiKSlbMF0pLCBf
X2V4dGVuc2lvbl9fICgoKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIg
KikgKCJTd2l0emVybGFuZExpZ2h0IikpWzQgKyAzXSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIlN3aXR6ZXJsYW5kTGlnaHQiKSlbNCArIDJdKSA8
PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIlN3aXR6
ZXJsYW5kTGlnaHQiKSlbNCArIDFdKSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikg
KF9fY29uc3QgY2hhciAqKSAoIlN3aXR6ZXJsYW5kTGlnaHQiKSlbNF0pLCBzdHJsZW4gKCJTd2l0
emVybGFuZExpZ2h0IikgKyAxKSA6IChjaGFyICopIG1lbWNweSAoY29yZWxfZm9udCwgIlN3aXR6
ZXJsYW5kTGlnaHQiLCBzdHJsZW4gKCJTd2l0emVybGFuZExpZ2h0IikgKyAxKSkgOiBzdHJjcHkg
KGNvcmVsX2ZvbnQsICJTd2l0emVybGFuZExpZ2h0IikpKTsKICAgICAgICBjb3JlbF9mb250c2l6
ZSA9IDIyOwogICAgICAgIGNvcmVsX2x3ID0gKDEuMiooMTAuMCkpOwogICAgICAgIGNvcmVsX3ht
YXggPSA1OTYwOwogICAgICAgIGNvcmVsX3ltYXggPSA3MjAwOwogICAgICAgIGNfdG9rZW4rKzsK
ICAgIH0KICAgIGlmICghKGNfdG9rZW4gPj0gbnVtX3Rva2VucyB8fCBlcXVhbHMoY190b2tlbiwi
OyIpKSAmJiBhbG1vc3RfZXF1YWxzKGNfdG9rZW4sICJtb25vJGNocm9tZSIpKSB7CiAgICAgICAg
Y29yZWxfY29sb3IgPSAwOwogICAgICAgIGNfdG9rZW4rKzsKICAgIH0gZWxzZSBpZiAoIShjX3Rv
a2VuID49IG51bV90b2tlbnMgfHwgZXF1YWxzKGNfdG9rZW4sIjsiKSkgJiYgKGFsbW9zdF9lcXVh
bHMoY190b2tlbiwgImNvbG9yJCIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fHwgYWxtb3N0X2VxdWFscyhjX3Rva2VuLCAiY29sb3VyJCIpKSkgewogICAgICAgIGNvcmVsX2Nv
bG9yID0gMTsKICAgICAgICBjX3Rva2VuKys7CiAgICB9CiAgICBpZiAoIShjX3Rva2VuID49IG51
bV90b2tlbnMgfHwgZXF1YWxzKGNfdG9rZW4sIjsiKSkgJiYgaXNzdHJpbmcoY190b2tlbikpIHsK
ICAgICAgICBxdW90ZV9zdHIoY29yZWxfZm9udCwgY190b2tlbiwgNTApOwogICAgICAgIGNfdG9r
ZW4rKzsKICAgIH0KICAgIGlmICghKGNfdG9rZW4gPj0gbnVtX3Rva2VucyB8fCBlcXVhbHMoY190
b2tlbiwiOyIpKSkgewoKICAgICAgICBjb3JlbF9mb250c2l6ZSA9IChpbnQpIHJlYWwoY29uc3Rf
ZXhwcmVzcygmYSkpOwogICAgICAgIGNfdG9rZW4rKzsKICAgICAgICB0ZXJtLT52X2NoYXIgPSAo
dW5zaWduZWQgaW50KSAoY29yZWxfZm9udHNpemUgKiAoMTAuMCkpOwogICAgICAgIHRlcm0tPmhf
Y2hhciA9ICh1bnNpZ25lZCBpbnQpIChjb3JlbF9mb250c2l6ZSAqICgxMC4wKSAqIDYgLyAxMCk7
CiAgICB9CiAgICBpZiAoIShjX3Rva2VuID49IG51bV90b2tlbnMgfHwgZXF1YWxzKGNfdG9rZW4s
IjsiKSkpIHsKICAgICAgICBjb3JlbF94bWF4ID0gKHVuc2lnbmVkIGludCkgKHJlYWwoY29uc3Rf
ZXhwcmVzcygmYSkpICogNzIwKTsKICAgICAgICBjX3Rva2VuKys7CiAgICAgICAgaWYgKCEoY190
b2tlbiA+PSBudW1fdG9rZW5zIHx8IGVxdWFscyhjX3Rva2VuLCI7IikpKSB7CiAgICAgICAgICAg
IGNvcmVsX3ltYXggPSAodW5zaWduZWQgaW50KSAocmVhbChjb25zdF9leHByZXNzKCZhKSkgKiA3
MjApOwogICAgICAgICAgICBjX3Rva2VuKys7CiAgICAgICAgfQogICAgICAgIHRlcm0tPnhtYXgg
PSBjb3JlbF94bWF4OwogICAgICAgIHRlcm0tPnltYXggPSBjb3JlbF95bWF4OwogICAgICAgIHRl
cm0tPnZfdGljID0gY29yZWxfeW1heCAvIDgwOwogICAgICAgIHRlcm0tPmhfdGljID0gY29yZWxf
eW1heCAvIDgwOwogICAgfQogICAgaWYgKCEoY190b2tlbiA+PSBudW1fdG9rZW5zIHx8IGVxdWFs
cyhjX3Rva2VuLCI7IikpKSB7CiAgICAgICAgY29yZWxfbHcgPSByZWFsKGNvbnN0X2V4cHJlc3Mo
JmEpKSAqICgxMC4wKTsKICAgICAgICBjX3Rva2VuKys7CiAgICB9CiAgICBzcHJpbnRmKHRlcm1f
b3B0aW9ucywgIiVzIFwiJXNcIiAlZCwlMC4xZiwlMC4xZiwlMC4xZiIsCiAgICAgICAgICAgIGNv
cmVsX2NvbG9yID8gImNvbG9yIiA6ICJtb25vY2hyb21lIiwgY29yZWxfZm9udCwKICAgICAgICAg
ICAgY29yZWxfZm9udHNpemUsIGNvcmVsX3htYXggLyA3MjAuMCwgY29yZWxfeW1heCAvIDcyMC4w
LAogICAgICAgICAgICBjb3JlbF9sdyAvICgxMC4wKSk7Cn0KCnN0YXRpYyB2b2lkIENPUkVMX2lu
aXQoKQp7CiAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgIiUlIVBTLUFkb2JlLTIuMCBFUFNGLTEuMlxu
JSUlJUJvdW5kaW5nQm94OiAlZCAlZCAlZCAlZFxuJSUlJVRlbXBsYXRlQm94OiAlZCAlZCAlZCAl
ZFxuJSUlJUVuZENvbW1lbnRzXG4lJSUlRW5kUHJvbG9nXG4lJSUlQmVnaW5TZXR1cFxuJSUlJUVu
ZFNldHVwXG4iLAoKCgoKCgogICAgICAgICAgICAwLCAwLAogICAgICAgICAgICAoaW50KSAoKGNv
cmVsX3htYXgpIC8gKDEwLjApICsgMC41ICsgMCksCiAgICAgICAgICAgIChpbnQpICgoY29yZWxf
eW1heCkgLyAoMTAuMCkgKyAwLjUgKyAwKSwKICAgICAgICAgICAgMCwgMCwKICAgICAgICAgICAg
KGludCkgKChjb3JlbF94bWF4KSAvICgxMC4wKSArIDAuNSArIDApLAogICAgICAgICAgICAoaW50
KSAoKGNvcmVsX3ltYXgpIC8gKDEwLjApICsgMC41ICsgMCkpOwp9CgoKc3RhdGljIHZvaWQgQ09S
RUxfZ3JhcGhpY3MoKQp7CiAgICBjb3JlbF9wYXRoX2NvdW50ID0gMDsKICAgIGNvcmVsX3N0cm9r
ZSA9IDA7Cn0KCgpzdGF0aWMgdm9pZCBDT1JFTF90ZXh0KCkKewogICAgaWYgKGNvcmVsX3N0cm9r
ZSkgewogICAgICAgIGZwdXRzKCJTXG4iLCBncG91dGZpbGUpOwogICAgICAgIGNvcmVsX3N0cm9r
ZSA9IDA7CiAgICB9CiAgICBjb3JlbF9wYXRoX2NvdW50ID0gMDsKfQoKCnN0YXRpYyB2b2lkIENP
UkVMX3Jlc2V0KCkKewogICAgZnB1dHMoIiUlJSVUcmFpbGVyXG4iLCBncG91dGZpbGUpOwp9CgoK
c3RhdGljIHZvaWQgQ09SRUxfbGluZXR5cGUobGluZXR5cGUpCmludCBsaW5ldHlwZTsKewogICAg
aWYgKGNvcmVsX3N0cm9rZSkgewogICAgICAgIGZwdXRzKCJTXG4iLCBncG91dGZpbGUpOwogICAg
ICAgIGNvcmVsX3N0cm9rZSA9IDA7CiAgICB9CiAgICBzd2l0Y2ggKGxpbmV0eXBlKSB7CiAgICBj
YXNlIC0yOgogICAgICAgIGZwcmludGYoZ3BvdXRmaWxlLCAiJS4yZiB3XG4iLCBjb3JlbF9sdyAv
ICgxMC4wKSk7CiAgICAgICAgaWYgKGNvcmVsX2NvbG9yKSB7CiAgICAgICAgICAgIGZwdXRzKCIw
IDAgMCAxIEtcbiIsIGdwb3V0ZmlsZSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgZnB1
dHMoIltdIDAgZFxuMCBqXG4wIEdcbiIsIGdwb3V0ZmlsZSk7CgoKICAgICAgICB9CiAgICAgICAg
YnJlYWs7CgogICAgY2FzZSAtMToKICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgIiUuMmYgd1xu
IiwgY29yZWxfbHcgLyAoMTAuMCkpOwogICAgICAgIGlmIChjb3JlbF9jb2xvcikgewogICAgICAg
ICAgICBmcHV0cygiMCAwIDAgMSBLXG4iLCBncG91dGZpbGUpOwogICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgIGZwdXRzKCJbMSAyXSAwIGRcbjAgalxuMCBHXG4iLCBncG91dGZpbGUpOwoKCiAg
ICAgICAgfQogICAgICAgIGJyZWFrOwoKICAgIGNhc2UgMDoKICAgICAgICBmcHJpbnRmKGdwb3V0
ZmlsZSwgIiUuMmYgd1xuIiwgY29yZWxfbHcgLyAoMTAuMCkpOwogICAgICAgIGlmIChjb3JlbF9j
b2xvcikgewogICAgICAgICAgICBmcHV0cygiMSAwIDEgMCBLXG4iLCBncG91dGZpbGUpOwogICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGZwdXRzKCJbXSAwIGRcbjIgalxuMCBHXG4iLCBncG91
dGZpbGUpOwoKCiAgICAgICAgfQogICAgICAgIGJyZWFrOwoKICAgIGNhc2UgMToKICAgICAgICBm
cHJpbnRmKGdwb3V0ZmlsZSwgIiUuMmYgd1xuIiwgY29yZWxfbHcgLyAoMTAuMCkpOwogICAgICAg
IGlmIChjb3JlbF9jb2xvcikgewogICAgICAgICAgICBmcHV0cygiMSAxIDAgMCBLXG4iLCBncG91
dGZpbGUpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGZwdXRzKCJbNCAyXSAwIGRcbjIg
alxuMCBHXG4iLCBncG91dGZpbGUpOwoKCiAgICAgICAgfQogICAgICAgIGJyZWFrOwoKICAgIGNh
c2UgMjoKICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgIiUuMmYgd1xuIiwgY29yZWxfbHcgLyAo
MTAuMCkpOwogICAgICAgIGlmIChjb3JlbF9jb2xvcikgewogICAgICAgICAgICBmcHV0cygiMCAx
IDEgMCBLXG4iLCBncG91dGZpbGUpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGZwdXRz
KCJbMiAzXSAwIGRcbjIgalxuMCBHXG4iLCBncG91dGZpbGUpOwoKCiAgICAgICAgfQogICAgICAg
IGJyZWFrOwoKICAgIGNhc2UgMzoKICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgIiUuMmYgd1xu
IiwgY29yZWxfbHcgLyAoMTAuMCkpOwogICAgICAgIGlmIChjb3JlbF9jb2xvcikgewogICAgICAg
ICAgICBmcHV0cygiMCAxIDAgMCBLXG4iLCBncG91dGZpbGUpOwogICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgIGZwdXRzKCJbMSAxLjVdIDAgZFxuMiBqXG4wIEdcbiIsIGdwb3V0ZmlsZSk7CgoK
ICAgICAgICB9CiAgICAgICAgYnJlYWs7CgogICAgY2FzZSA0OgogICAgICAgIGZwcmludGYoZ3Bv
dXRmaWxlLCAiJWYgd1xuIiwgY29yZWxfbHcgLyAoMTAuMCkpOwogICAgICAgIGlmIChjb3JlbF9j
b2xvcikgewogICAgICAgICAgICBmcHV0cygiMSAwIDAgMCBLXG4iLCBncG91dGZpbGUpOwogICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGZwdXRzKCJbNSAyIDEgMl0gMCBkXG4yIGpcbjAgR1xu
IiwgZ3BvdXRmaWxlKTsKCgogICAgICAgIH0KICAgICAgICBicmVhazsKCiAgICBjYXNlIDU6CiAg
ICAgICAgZnByaW50ZihncG91dGZpbGUsICIlLjJmIHdcbiIsIGNvcmVsX2x3IC8gKDEwLjApKTsK
ICAgICAgICBpZiAoY29yZWxfY29sb3IpIHsKICAgICAgICAgICAgZnB1dHMoIjAgMCAxIDAgS1xu
IiwgZ3BvdXRmaWxlKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBmcHV0cygiWzQgMyAx
IDNdIDAgZFxuMiBqXG4wIEdcbiIsIGdwb3V0ZmlsZSk7CgoKICAgICAgICB9CiAgICAgICAgYnJl
YWs7CgogICAgY2FzZSA2OgogICAgICAgIGZwcmludGYoZ3BvdXRmaWxlLCAiJS4yZiB3XG4iLCBj
b3JlbF9sdyAvICgxMC4wKSk7CiAgICAgICAgaWYgKGNvcmVsX2NvbG9yKSB7CiAgICAgICAgICAg
IGZwdXRzKCIwIDAgMCAxIEtcbiIsIGdwb3V0ZmlsZSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgZnB1dHMoIlsyIDIgMiA0XSAwIGRcbjIgalxuMCBHXG4iLCBncG91dGZpbGUpOwoKCiAg
ICAgICAgfQogICAgICAgIGJyZWFrOwoKICAgIGNhc2UgNzoKICAgICAgICBmcHJpbnRmKGdwb3V0
ZmlsZSwgIiUuMmYgd1xuIiwgY29yZWxfbHcgLyAoMTAuMCkpOwogICAgICAgIGlmIChjb3JlbF9j
b2xvcikgewogICAgICAgICAgICBmcHV0cygiMCAwLjcgMSAwIEtcbiIsIGdwb3V0ZmlsZSk7CiAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgZnB1dHMoIlsyIDIgMiAyIDIgNF0gMCBkXG4yIGpc
bjAgR1xuIiwgZ3BvdXRmaWxlKTsKCgogICAgICAgIH0KICAgICAgICBicmVhazsKCiAgICBjYXNl
IDg6CiAgICAgICAgZnByaW50ZihncG91dGZpbGUsICIlLjJmIHdcbiIsIGNvcmVsX2x3IC8gKDEw
LjApKTsKICAgICAgICBpZiAoY29yZWxfY29sb3IpIHsKICAgICAgICAgICAgZnB1dHMoIjAuNSAw
LjUgMC41IDAgS1xuIiwgZ3BvdXRmaWxlKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBm
cHV0cygiWzIgMiAyIDIgMiAyIDIgNF0gMCBkXG4yIGpcbjAgR1xuIiwgZ3BvdXRmaWxlKTsKCgog
ICAgICAgIH0KICAgICAgICBicmVhazsKICAgIH0KICAgIGNvcmVsX3BhdGhfY291bnQgPSAwOwp9
CgoKc3RhdGljIHZvaWQgQ09SRUxfbW92ZSh4LCB5KQp1bnNpZ25lZCBpbnQgeCwgeTsKewogICAg
aWYgKGNvcmVsX3N0cm9rZSkKICAgICAgICBmcHV0cygiU1xuIiwgZ3BvdXRmaWxlKTsKICAgIGZw
cmludGYoZ3BvdXRmaWxlLCAiJTAuMmYgJTAuMmYgbVxuIiwgeCAvICgxMC4wKSwgeSAvICgxMC4w
KSk7CiAgICBjb3JlbF9wYXRoX2NvdW50ICs9IDE7CiAgICBjb3JlbF9zdHJva2UgPSAxOwp9CgoK
c3RhdGljIHZvaWQgQ09SRUxfdmVjdG9yKHgsIHkpCnVuc2lnbmVkIGludCB4LCB5Owp7CiAgICBm
cHJpbnRmKGdwb3V0ZmlsZSwgIiUuMmYgJS4yZiBsXG4iLCB4IC8gKDEwLjApLCB5IC8gKDEwLjAp
KTsKICAgIGNvcmVsX3BhdGhfY291bnQgKz0gMTsKICAgIGNvcmVsX3N0cm9rZSA9IDE7CiAgICBp
ZiAoY29yZWxfcGF0aF9jb3VudCA+PSA0MDApIHsKICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwg
IlNcbiUuMmYgJS4yZiBtXG4iLCB4IC8gKDEwLjApLCB5IC8gKDEwLjApKTsKICAgICAgICBjb3Jl
bF9wYXRoX2NvdW50ID0gMDsKICAgIH0KfQoKCnN0YXRpYyB2b2lkIENPUkVMX3B1dF90ZXh0KHgs
IHksIHN0cikKdW5zaWduZWQgaW50IHgsIHk7CmNoYXIgKnN0cjsKewogICAgY2hhciBjaDsKICAg
IGlmIChjb3JlbF9zdHJva2UpIHsKICAgICAgICBmcHV0cygiU1xuIiwgZ3BvdXRmaWxlKTsKICAg
ICAgICBjb3JlbF9zdHJva2UgPSAwOwogICAgfQogICAgc3dpdGNoIChjb3JlbF9qdXN0aWZ5KSB7
CiAgICBjYXNlIExFRlQ6CiAgICAgICAgZnByaW50ZihncG91dGZpbGUsICIvXyVzICVkICVkIDAg
MCB6XG4iLAogICAgICAgICAgICAgICAgY29yZWxfZm9udCwgY29yZWxfZm9udHNpemUsIGNvcmVs
X2ZvbnRzaXplKTsKICAgICAgICBicmVhazsKICAgIGNhc2UgQ0VOVFJFOgogICAgICAgIGZwcmlu
dGYoZ3BvdXRmaWxlLCAiL18lcyAlZCAlZCAwIDEgelxuIiwKICAgICAgICAgICAgICAgIGNvcmVs
X2ZvbnQsIGNvcmVsX2ZvbnRzaXplLCBjb3JlbF9mb250c2l6ZSk7CiAgICAgICAgYnJlYWs7CiAg
ICBjYXNlIFJJR0hUOgogICAgICAgIGZwcmludGYoZ3BvdXRmaWxlLCAiL18lcyAlZCAlZCAwIDIg
elxuIiwKICAgICAgICAgICAgICAgIGNvcmVsX2ZvbnQsIGNvcmVsX2ZvbnRzaXplLCBjb3JlbF9m
b250c2l6ZSk7CiAgICAgICAgYnJlYWs7CiAgICB9CiAgICBpZiAoY29yZWxfYW5nID09IDApIHsK
ICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgIlsxIDAgMCAxICUuMmYgJS4yZl1lXG4wIGdcbiIs
CiAgICAgICAgICAgICAgICB4IC8gKDEwLjApLCB5IC8gKDEwLjApIC0gY29yZWxfZm9udHNpemUg
LyAzLjApOwogICAgfSBlbHNlIHsKICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgIlswIDEgLTEg
MCAlLjJmICUuMmZdZVxuMCBnXG4iLAogICAgICAgICAgICAgICAgeCAvICgxMC4wKSAtIGNvcmVs
X2ZvbnRzaXplIC8gMy4wLCB5IC8gKDEwLjApKTsKICAgIH0KCiAgICBfSU9fcHV0YyAoJygnLCBn
cG91dGZpbGUpOwogICAgY2ggPSAqc3RyKys7CiAgICB3aGlsZSAoY2ggIT0gKCdcMCcpKSB7CiAg
ICAgICAgaWYgKChjaCA9PSAnKCcpIHx8IChjaCA9PSAnKScpIHx8IChjaCA9PSAnXFwnKSkKICAg
ICAgICAgICAgX0lPX3B1dGMgKCdcXCcsIGdwb3V0ZmlsZSk7CiAgICAgICAgX0lPX3B1dGMgKGNo
LCBncG91dGZpbGUpOwogICAgICAgIGNoID0gKnN0cisrOwogICAgfQogICAgZnB1dHMoIil0XG5U
XG4iLCBncG91dGZpbGUpOwogICAgY29yZWxfcGF0aF9jb3VudCA9IDA7Cn0KCnN0YXRpYyBpbnQg
Q09SRUxfdGV4dF9hbmdsZShhbmcpCmludCBhbmc7CnsKICAgIGNvcmVsX2FuZyA9IGFuZzsKICAg
IHJldHVybiAxOwp9CgpzdGF0aWMgaW50IENPUkVMX2p1c3RpZnlfdGV4dChtb2RlKQplbnVtIEpV
U1RJRlkgbW9kZTsKewogICAgY29yZWxfanVzdGlmeSA9IG1vZGU7CiAgICByZXR1cm4gMTsKfQoj
IDI2NCAidGVybS5oIiAyCgoKCgoKCgojIDEgInRlcm0vZHVtYi50cm0iIDEKIyA1MSAidGVybS9k
dW1iLnRybSIKIyAxICJ0ZXJtL2RyaXZlci5oIiAxCiMgNTIgInRlcm0vZHVtYi50cm0iIDIKCgoK
CgoKc3RhdGljIHZvaWQgRFVNQl9vcHRpb25zICh2b2lkKTsKc3RhdGljIHZvaWQgRFVNQl9pbml0
ICh2b2lkKTsKc3RhdGljIHZvaWQgRFVNQl9ncmFwaGljcyAodm9pZCk7CnN0YXRpYyB2b2lkIERV
TUJfdGV4dCAodm9pZCk7CnN0YXRpYyB2b2lkIERVTUJfcmVzZXQgKHZvaWQpOwpzdGF0aWMgdm9p
ZCBEVU1CX2xpbmV0eXBlIChpbnQgbGluZXR5cGUpOwpzdGF0aWMgdm9pZCBEVU1CX21vdmUgKHVu
c2lnbmVkIGludCB4LCB1bnNpZ25lZCBpbnQgeSk7CnN0YXRpYyB2b2lkIERVTUJfcG9pbnQgKHVu
c2lnbmVkIGludCB4LCB1bnNpZ25lZCBpbnQgeSwgaW50IHBvaW50KTsKCnN0YXRpYyB2b2lkIERV
TUJfdmVjdG9yICh1bnNpZ25lZCBpbnQgeCwgdW5zaWduZWQgaW50IHkpOwpzdGF0aWMgdm9pZCBE
VU1CX3B1dF90ZXh0ICh1bnNpZ25lZCBpbnQgeCwgdW5zaWduZWQgaW50IHksIGNoYXIgKnN0cik7
CgpzdGF0aWMgdm9pZCBEVU1CX2Fycm93ICh1bnNpZ25lZCBpbnQgc3gsIHVuc2lnbmVkIGludCBz
eSwgdW5zaWduZWQgaW50IGV4LCB1bnNpZ25lZCBpbnQgZXksIGludCBoZWFkKTsKIyA4NSAidGVy
bS9kdW1iLnRybSIKc3RhdGljIGNoYXIgKmR1bWJfbWF0cml4ID0gKCh2b2lkICopMCk7CgpzdGF0
aWMgY2hhciAqZHVtYl9wcmlvcml0eSA9ICgodm9pZCAqKTApOwoKc3RhdGljIGNoYXIgZHVtYl9w
ZW47CgpzdGF0aWMgaW50IGR1bWJfeDsKCnN0YXRpYyBpbnQgZHVtYl95OwpzdGF0aWMgaW50IGR1
bWJfeG1heCA9IDc5OwpzdGF0aWMgaW50IGR1bWJfeW1heCA9IDI0OwpzdGF0aWMgaW50IGR1bWJf
ZmVlZCA9IDE7CgoKCnN0YXRpYyB2b2lkIGR1bWJfc2V0X3BpeGVsIChpbnQgeCwgaW50IHksIGlu
dCB2LCBpbnQgcCk7CgoKc3RhdGljIHZvaWQgZHVtYl9zZXRfcGl4ZWwoeCwgeSwgdiwgcCkKaW50
IHgsIHksIHYsIHA7CnsKICAgIGlmICgodW5zaWduZWQpIHggPD0gZHVtYl94bWF4ICYmCiAgICAg
ICAgKHVuc2lnbmVkKSB5IDw9IGR1bWJfeW1heCAmJgogICAgICAgIHAgPiBkdW1iX3ByaW9yaXR5
W2R1bWJfeG1heCAqIHkgKyB4XSkgewogICAgICAgIGR1bWJfbWF0cml4W2R1bWJfeG1heCAqIHkg
KyB4XSA9IHY7CiAgICAgICAgZHVtYl9wcmlvcml0eVtkdW1iX3htYXggKiB5ICsgeF0gPSBwOwog
ICAgfQp9CgoKc3RhdGljIHZvaWQgRFVNQl9vcHRpb25zKCkKewogICAgaW50IHgsIHk7CiAgICBz
dHJ1Y3QgdmFsdWUgYTsKCiAgICBpZiAoYWxtb3N0X2VxdWFscyhjX3Rva2VuLCAiZiRlZWQiKSkK
ICAgICAgICArK2NfdG9rZW4sIGR1bWJfZmVlZCA9IDE7CiAgICBlbHNlIGlmIChhbG1vc3RfZXF1
YWxzKGNfdG9rZW4sICJub2YkZWVkIikpCiAgICAgICAgKytjX3Rva2VuLCBkdW1iX2ZlZWQgPSAw
OwoKICAgIGlmICghKGNfdG9rZW4gPj0gbnVtX3Rva2VucyB8fCBlcXVhbHMoY190b2tlbiwiOyIp
KSkgewogICAgICAgIHggPSAoaW50KSByZWFsKGNvbnN0X2V4cHJlc3MoJmEpKTsKICAgICAgICBp
ZiAoIShjX3Rva2VuID49IG51bV90b2tlbnMgfHwgZXF1YWxzKGNfdG9rZW4sIjsiKSkpIHsKICAg
ICAgICAgICAgeSA9IChpbnQpIHJlYWwoY29uc3RfZXhwcmVzcygmYSkpOwogICAgICAgICAgICBk
dW1iX3htYXggPSB0ZXJtLT54bWF4ID0geDsKICAgICAgICAgICAgZHVtYl95bWF4ID0gdGVybS0+
eW1heCA9IHk7CiAgICAgICAgfQogICAgfQogICAgc3ByaW50Zih0ZXJtX29wdGlvbnMsICIlc2Zl
ZWQgJWQgJWQiLAogICAgICAgICAgICBkdW1iX2ZlZWQgPyAiIiA6ICJubyIsIGR1bWJfeG1heCwg
ZHVtYl95bWF4KTsKfQoKCnN0YXRpYyB2b2lkIERVTUJfaW5pdCgpCnsKICAgIGlmIChkdW1iX21h
dHJpeCkKICAgICAgICBmcmVlKGR1bWJfbWF0cml4KTsKCiAgICBkdW1iX21hdHJpeCA9IGdwX2Fs
bG9jKCh1bnNpZ25lZCBsb25nKSBkdW1iX3htYXggKiBkdW1iX3ltYXggKiAyLCAiZHVtYiB0ZXJt
aW5hbCIpOwoKICAgIGR1bWJfcHJpb3JpdHkgPSBkdW1iX21hdHJpeCArIGR1bWJfeG1heCAqIGR1
bWJfeW1heDsKfQoKCnN0YXRpYyB2b2lkIERVTUJfZ3JhcGhpY3MoKQp7CiAgICBpbnQgaTsKICAg
IGNoYXIgKnBtID0gZHVtYl9tYXRyaXgsICpwcCA9IGR1bWJfcHJpb3JpdHk7CgogICAgZm9yIChp
ID0gZHVtYl94bWF4ICogZHVtYl95bWF4OyBpID4gMDsgaS0tKSB7CiAgICAgICAgKnBtKysgPSAn
ICc7CiAgICAgICAgKnBwKysgPSAwOwogICAgfQp9CgoKc3RhdGljIHZvaWQgRFVNQl90ZXh0KCkK
ewogICAgaW50IHgsIHksIGw7CgogICAgX0lPX3B1dGMgKCdcZicsIGdwb3V0ZmlsZSk7CiAgICBm
b3IgKHkgPSBkdW1iX3ltYXggLSAxOyB5ID49IDA7IHktLSkgewogICAgICAgIGZvciAobCA9IGR1
bWJfeG1heDsgbCA+IDAgJiYgZHVtYl9tYXRyaXhbZHVtYl94bWF4Kih5KSsobCAtIDEpXSA9PSAn
ICc7IGwtLSk7CiAgICAgICAgZm9yICh4ID0gMDsgeCA8IGw7IHgrKykKICAgICAgICAgICAgX0lP
X3B1dGMgKGR1bWJfbWF0cml4W2R1bWJfeG1heCooeSkrKHgpXSwgZ3BvdXRmaWxlKTsKICAgICAg
ICBpZiAoZHVtYl9mZWVkIHx8IHkgPiAwKQogICAgICAgICAgICBfSU9fcHV0YyAoJ1xuJywgZ3Bv
dXRmaWxlKTsKICAgIH0KICAgIGZmbHVzaChncG91dGZpbGUpOwp9CgoKc3RhdGljIHZvaWQgRFVN
Ql9yZXNldCgpCnsKICAgIGZyZWUoZHVtYl9tYXRyaXgpOwogICAgZHVtYl9tYXRyaXggPSAoKHZv
aWQgKikwKTsKfQoKCnN0YXRpYyB2b2lkIERVTUJfbGluZXR5cGUobGluZXR5cGUpCmludCBsaW5l
dHlwZTsKewogICAgc3RhdGljIGNoYXIgcGVuX3R5cGVbN10gPSB7ICcqJywgJyMnLCAnJCcsICcl
JywgJ0AnLCAnJicsICc9JyB9OwoKICAgIGlmIChsaW5ldHlwZSA9PSAtMikKICAgICAgICBkdW1i
X3BlbiA9ICdcMic7CiAgICBlbHNlIGlmIChsaW5ldHlwZSA9PSAtMSkKICAgICAgICBkdW1iX3Bl
biA9ICdcMSc7CiAgICBlbHNlIHsKICAgICAgICBsaW5ldHlwZSA9IGxpbmV0eXBlICUgNzsKICAg
ICAgICBkdW1iX3BlbiA9IHBlbl90eXBlW2xpbmV0eXBlXTsKICAgIH0KfQoKCnN0YXRpYyB2b2lk
IERVTUJfbW92ZSh4LCB5KQp1bnNpZ25lZCBpbnQgeCwgeTsKewogICAgZHVtYl94ID0geDsKICAg
IGR1bWJfeSA9IHk7Cn0KCgpzdGF0aWMgdm9pZCBEVU1CX3BvaW50KHgsIHksIHBvaW50KQp1bnNp
Z25lZCBpbnQgeCwgeTsKaW50IHBvaW50Owp7CiAgICBkdW1iX3NldF9waXhlbCh4LCB5LCBwb2lu
dCA9PSAtMSA/ICcuJyA6IHBvaW50ICUgMjYgKyAnQScsIDQpOwp9CgoKc3RhdGljIHZvaWQgRFVN
Ql92ZWN0b3IoX3gsIF95KQp1bnNpZ25lZCBpbnQgX3gsIF95Owp7CiAgICBpbnQgeCA9IF94OwoK
ICAgIGludCB5ID0gX3k7CiAgICBjaGFyIHBlbiwgcGVuMTsKICAgIGludCBwcmlvcml0eTsKICAg
IGludCBkZWx0YTsKCiAgICBpZiAoKCh5IC0gZHVtYl95KSA+PSAwID8gKHkgLSBkdW1iX3kpIDog
LSh5IC0gZHVtYl95KSkgPiAoKHggLSBkdW1iX3gpID49IDAgPyAoeCAtIGR1bWJfeCkgOiAtKHgg
LSBkdW1iX3gpKSkgewogICAgICAgIHN3aXRjaCAoZHVtYl9wZW4pIHsKICAgICAgICBjYXNlICdc
MSc6CiAgICAgICAgICAgIHBlbiA9ICc6JzsKICAgICAgICAgICAgcGVuMSA9ICcrJzsKICAgICAg
ICAgICAgcHJpb3JpdHkgPSAxOwogICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAnXDIn
OgogICAgICAgICAgICBwZW4gPSAnfCc7CiAgICAgICAgICAgIHBlbjEgPSAnKyc7CiAgICAgICAg
ICAgIHByaW9yaXR5ID0gMjsKICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGRlZmF1bHQ6CiAg
ICAgICAgICAgIHBlbiA9IGR1bWJfcGVuOwogICAgICAgICAgICBwZW4xID0gZHVtYl9wZW47CiAg
ICAgICAgICAgIHByaW9yaXR5ID0gMzsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAg
ICAgIGR1bWJfc2V0X3BpeGVsKGR1bWJfeCwgZHVtYl95LCBwZW4xLCBwcmlvcml0eSk7CiAgICAg
ICAgZm9yIChkZWx0YSA9IDE7IGRlbHRhIDwgKCh5IC0gZHVtYl95KSA+PSAwID8gKHkgLSBkdW1i
X3kpIDogLSh5IC0gZHVtYl95KSk7IGRlbHRhKyspIHsKICAgICAgICAgICAgZHVtYl9zZXRfcGl4
ZWwoZHVtYl94ICsgKGludCkgKChkb3VibGUpICh4IC0gZHVtYl94KSAqCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsdGEgLyAoKHkgLSBkdW1iX3kpID49IDAg
PyAoeSAtIGR1bWJfeSkgOiAtKHkgLSBkdW1iX3kpKSArIDAuNSksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGR1bWJfeSArIGRlbHRhICogKCh5IC0gZHVtYl95KSA+PSAwID8gMSA6IC0xKSwg
cGVuLCBwcmlvcml0eSk7CiAgICAgICAgfQogICAgICAgIGR1bWJfc2V0X3BpeGVsKHgsIHksIHBl
bjEsIHByaW9yaXR5KTsKICAgIH0gZWxzZSBpZiAoKCh4IC0gZHVtYl94KSA+PSAwID8gKHggLSBk
dW1iX3gpIDogLSh4IC0gZHVtYl94KSkgPiAoKHkgLSBkdW1iX3kpID49IDAgPyAoeSAtIGR1bWJf
eSkgOiAtKHkgLSBkdW1iX3kpKSkgewogICAgICAgIHN3aXRjaCAoZHVtYl9wZW4pIHsKICAgICAg
ICBjYXNlICdcMSc6CiAgICAgICAgICAgIHBlbiA9ICcuJzsKICAgICAgICAgICAgcGVuMSA9ICcr
JzsKICAgICAgICAgICAgcHJpb3JpdHkgPSAxOwogICAgICAgICAgICBicmVhazsKCiAgICAgICAg
Y2FzZSAnXDInOgogICAgICAgICAgICBwZW4gPSAnLSc7CiAgICAgICAgICAgIHBlbjEgPSAnKyc7
CiAgICAgICAgICAgIHByaW9yaXR5ID0gMjsKICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGRl
ZmF1bHQ6CiAgICAgICAgICAgIHBlbiA9IGR1bWJfcGVuOwogICAgICAgICAgICBwZW4xID0gZHVt
Yl9wZW47CiAgICAgICAgICAgIHByaW9yaXR5ID0gMzsKICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgfQogICAgICAgIGR1bWJfc2V0X3BpeGVsKGR1bWJfeCwgZHVtYl95LCBwZW4xLCBwcmlvcml0
eSk7CiAgICAgICAgZm9yIChkZWx0YSA9IDE7IGRlbHRhIDwgKCh4IC0gZHVtYl94KSA+PSAwID8g
KHggLSBkdW1iX3gpIDogLSh4IC0gZHVtYl94KSk7IGRlbHRhKyspCiAgICAgICAgICAgIGR1bWJf
c2V0X3BpeGVsKGR1bWJfeCArIGRlbHRhICogKCh4IC0gZHVtYl94KSA+PSAwID8gMSA6IC0xKSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZHVtYl95ICsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKGludCkgKChkb3VibGUpICh5IC0gZHVtYl95KSAqIGRlbHRhIC8gKCh4IC0gZHVtYl94
KSA+PSAwID8gKHggLSBkdW1iX3gpIDogLSh4IC0gZHVtYl94KSkKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICsgMC41KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVuLCBw
cmlvcml0eSk7CiAgICAgICAgZHVtYl9zZXRfcGl4ZWwoeCwgeSwgcGVuMSwgcHJpb3JpdHkpOwog
ICAgfSBlbHNlIHsKICAgICAgICBzd2l0Y2ggKGR1bWJfcGVuKSB7CiAgICAgICAgY2FzZSAnXDEn
OgogICAgICAgICAgICBwZW4gPSAnKyc7CiAgICAgICAgICAgIHByaW9yaXR5ID0gMTsKICAgICAg
ICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgJ1wyJzoKICAgICAgICAgICAgcGVuID0gJysnOwog
ICAgICAgICAgICBwcmlvcml0eSA9IDI7CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBkZWZh
dWx0OgogICAgICAgICAgICBwZW4gPSBkdW1iX3BlbjsKICAgICAgICAgICAgcHJpb3JpdHkgPSAz
OwogICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgZm9yIChkZWx0YSA9IDA7IGRl
bHRhIDw9ICgoeCAtIGR1bWJfeCkgPj0gMCA/ICh4IC0gZHVtYl94KSA6IC0oeCAtIGR1bWJfeCkp
OyBkZWx0YSsrKQogICAgICAgICAgICBkdW1iX3NldF9waXhlbChkdW1iX3ggKyBkZWx0YSAqICgo
eCAtIGR1bWJfeCkgPj0gMCA/IDEgOiAtMSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGR1
bWJfeSArIGRlbHRhICogKCh5IC0gZHVtYl95KSA+PSAwID8gMSA6IC0xKSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcGVuLCBwcmlvcml0eSk7CiAgICB9CiAgICBkdW1iX3ggPSB4OwogICAg
ZHVtYl95ID0geTsKfQoKCnN0YXRpYyB2b2lkIERVTUJfcHV0X3RleHQoeCwgeSwgc3RyKQp1bnNp
Z25lZCBpbnQgeCwgeTsKY2hhciAqc3RyOwp7CiAgICBpbnQgbGVuZ3RoOwoKICAgIGxlbmd0aCA9
IHN0cmxlbihzdHIpOwogICAgaWYgKHggKyBsZW5ndGggPiBkdW1iX3htYXgpCiAgICAgICAgeCA9
ICggKDApID4gKGR1bWJfeG1heCAtIGxlbmd0aCkgPyAoMCkgOiAoZHVtYl94bWF4IC0gbGVuZ3Ro
KSApOwoKICAgIGZvciAoOyB4IDwgZHVtYl94bWF4ICYmICpzdHI7IHgrKywgc3RyKyspCiAgICAg
ICAgZHVtYl9zZXRfcGl4ZWwoeCwgeSwgKnN0ciwgNSk7Cn0KCgpzdGF0aWMgdm9pZCBEVU1CX2Fy
cm93KHN4LCBzeSwgZXgsIGV5LCBoZWFkKQp1bnNpZ25lZCBpbnQgc3gsIHN5LCBleCwgZXk7Cmlu
dCBoZWFkOwp7CiAgICBjaGFyIHNhdmVkX3BlbjsKICAgIGNoYXIgc2F2ZWRfeDsKICAgIGNoYXIg
c2F2ZWRfeTsKCiAgICBzYXZlZF9wZW4gPSBkdW1iX3BlbjsKICAgIHNhdmVkX3ggPSBkdW1iX3g7
CiAgICBzYXZlZF95ID0gZHVtYl95OwoKICAgIGR1bWJfcGVuID0gJz4nOwogICAgZHVtYl94ID0g
c3g7CiAgICBkdW1iX3kgPSBzeTsKICAgIERVTUJfdmVjdG9yKGV4LCBleSk7CgogICAgZHVtYl9w
ZW4gPSBzYXZlZF9wZW47CiAgICBkdW1iX3ggPSBzYXZlZF94OwogICAgZHVtYl95ID0gc2F2ZWRf
eTsKfQojIDI3MiAidGVybS5oIiAyCgoKIyAxICJ0ZXJtL2R4Zi50cm0iIDEKIyA1NSAidGVybS9k
eGYudHJtIgojIDEgInRlcm0vZHJpdmVyLmgiIDEKIyA1NiAidGVybS9keGYudHJtIiAyCgoKCgoK
CnN0YXRpYyB2b2lkIERYRl9pbml0ICh2b2lkKTsKc3RhdGljIHZvaWQgRFhGX2dyYXBoaWNzICh2
b2lkKTsKc3RhdGljIHZvaWQgRFhGX3RleHQgKHZvaWQpOwpzdGF0aWMgdm9pZCBEWEZfbGluZXR5
cGUgKGludCBsaW5ldHlwZSk7CnN0YXRpYyB2b2lkIERYRl9tb3ZlICh1bnNpZ25lZCBpbnQgeCwg
dW5zaWduZWQgaW50IHkpOwpzdGF0aWMgdm9pZCBEWEZfdmVjdG9yICh1bnNpZ25lZCBpbnQgdXgs
IHVuc2lnbmVkIGludCB1eSk7CnN0YXRpYyB2b2lkIERYRl9wdXRfdGV4dCAodW5zaWduZWQgaW50
IHgsIHVuc2lnbmVkIGludCB5LCBjaGFyIHN0cltdKTsKCnN0YXRpYyBpbnQgRFhGX3RleHRfYW5n
bGUgKGludCBhbmcpOwpzdGF0aWMgaW50IERYRl9qdXN0aWZ5X3RleHQgKGVudW0gSlVTVElGWSBt
b2RlKTsKc3RhdGljIHZvaWQgRFhGX3Jlc2V0ICh2b2lkKTsKIyAxMDMgInRlcm0vZHhmLnRybSIK
c3RhdGljIHVuc2lnbmVkIGludCBEWEZfcG9zeDsKc3RhdGljIHVuc2lnbmVkIGludCBEWEZfcG9z
eTsKCnN0YXRpYyB1bnNpZ25lZCBpbnQgZHhmX2xpbmV0eXBlOwplbnVtIEpVU1RJRlkgZHhmX2p1
c3RpZnkgPSBMRUZUOwpzdGF0aWMgZmxvYXQgZHhmX2FuZ2xlID0gMC4wOwoKCnN0YXRpYyBjaGFy
ICp0ZXh0X3N0eWxlID0gIlNUQU5EQVJEIjsKCgoKCgoKc3RhdGljIGNoYXIgKmxheWVyX25hbWVb
XSA9eyAiMCIsICIxIiwgIjIiLCAiMyIsICI0IiwgIjUiLCAiNiIgfTsKCgoKCnN0YXRpYyBjaGFy
ICpsYXllcl9jb2xvdXJbXSA9IHsgIjciLCAiMSIsICIyIiwgIjMiLCAiNCIsICI1IiwgIjYiIH07
CgpzdGF0aWMgY2hhciAqbGF5ZXJfbGluZXNbXSA9IHsgIkNPTlRJTlVPVVMiLCAiREFTSEVEIiwg
IkhJRERFTiIsICJDRU5URVIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUEhBTlRP
TSIsICJET1QiLCAiREFTSERPVCIgfTsKCnN0YXRpYyBUQk9PTEVBTiB2ZWN0b3Jfd2FzX2xhc3Qg
PSAwOwoKc3RhdGljIHZvaWQgRFhGX2luaXQoKQp7CiAgICBEWEZfcG9zeCA9IERYRl9wb3N5ID0g
MDsKICAgIGR4Zl9saW5ldHlwZSA9IDA7CiAgICBkeGZfYW5nbGUgPSAwLjA7CiAgICB2ZWN0b3Jf
d2FzX2xhc3QgPSAwOwp9CgpzdGF0aWMgdm9pZCBEWEZfZ3JhcGhpY3MoKQp7CiAgICByZWdpc3Rl
ciBzdHJ1Y3QgVEVSTUVOVFJZICp0ID0gdGVybTsKICAgIGludCBpOwogICAgc3RhdGljIGNoYXIg
ZHhmaTFbXSA9ICI5OTlcbiUlIEdOVVBMT1Q6IGR4ZiBmaWxlIGZvciBBdXRvQ2FkXG4gIDBcblNF
Q1RJT05cbiAgMlxuSEVBREVSXG4gIDlcbiRFWFRNSU5cbiAxMFxuMC4wMDBcbiAyMFxuMC4wMDBc
biAgOVxuJEVYVE1BWFxuIDEwXG4lLTYuM2ZcbiAyMFxuJS02LjNmXG4gIDlcbiRMSU1NSU5cbiAx
MFxuMC4wMDBcbiAyMFxuMC4wMDBcbiAgOVxuJExJTU1BWFxuIDEwXG4lLTYuM2ZcbiAyMFxuJS02
LjNmXG4gIDlcbiRURVhUU1RZTEVcbiAgN1xuJXNcbiAgOVxuJFRFWFRTSVpFXG4gNDBcbiUtNi4z
ZlxuICA5XG4kUExJTkVXSURcbiA0MFxuJS02LjRmXG4gIDlcbiRMVFNDQUxFXG4gIDQwXG4lLTYu
M2ZcbiAgOVxuJENPT1JEU1xuIDcwXG4gIDFcbiAgOVxuJENFTFRZUEVcbiA2XG5CWUxBWUVSXG4g
IDlcbiRDTEFZRVJcbiAgOFxuMFxuICA5XG4kQ0VDT0xPUlxuIDYyXG4gICAlc1xuICA5XG4kTUVO
VVxuICAxXG5hY2FkXG4gIDBcbkVORFNFQ1xuICAwXG5TRUNUSU9OXG4gIDJcblRBQkxFU1xuIjsK
IyAxNjUgInRlcm0vZHhmLnRybSIKICAgIHN0YXRpYyBjaGFyIGR4ZmkyW10gPSAiMFxuVEFCTEVc
biAgMlxuTFRZUEVcbiA3MFxuICAgICVkXG4wXG5MVFlQRVxuICAyXG5DT05USU5VT1VTXG4gNzBc
biAgICA2NFxuICAzXG5Tb2xpZCBsaW5lXG4gNzJcbiAgICA2NVxuIDczXG4gICAgICAwXG4gNDBc
bjAuMFxuICAwXG5MVFlQRVxuICAyXG5EQVNIRURcbiA3MFxuICAgIDY0XG4gIDNcbl9fIF9fIF9f
IF9fIF9fIF9fIF9fIF9fIF9fIF9fIF9fIF9fIF9fIF9fIF9fXG4gNzJcbiAgICA2NVxuIDczXG4g
ICAgIDJcbiA0MFxuMC43NVxuIDQ5XG4wLjVcbiA0OVxuLTAuMjVcbiAgMFxuTFRZUEVcbiAgMlxu
SElEREVOXG4gNzBcbiAgICA2NFxuICAzXG5fIF8gXyBfIF8gXyBfIF8gXyBfIF8gXyBfIF8gXyBf
IF8gXyBfIF8gXyBfIF9cbiA3MlxuICAgIDY1XG4gNzNcbiAgICAgMlxuIDQwXG4wLjM3NVxuIDQ5
XG4wLjI1XG4gNDlcbi0wLjEyNVxuICAwXG5MVFlQRVxuICAyXG5DRU5URVJcbiA3MFxuICAgIDY0
XG4gIDNcbl9fX18gXyBfX19fIF8gX19fXyBfIF9fX18gXyBfX19fIF8gX19fXyBfIF9fX19cbiA3
MlxuICAgIDY1XG4gNzNcbiAgICAgNFxuIDQwXG4yLjBcbiA0OVxuMS4yNVxuIDQ5XG4tMC4yNVxu
IDQ5XG4wLjI1XG4gNDlcbi0wLjI1XG4gIDBcbkxUWVBFXG4gIDJcblBIQU5UT01cbiA3MFxuICAg
IDY0XG4gIDNcbl9fX19fIF8gXyBfX19fXyBfIF8gX19fX18gXyBfIF9fX19fIF8gXyBfX19fXG4g
NzJcbiAgICA2NVxuIDczXG4gICAgIDZcbiA0MFxuMi41XG4gNDlcbjEuMjVcbiA0OVxuLTAuMjVc
biA0OVxuMC4yNVxuIDQ5XG4tMC4yNVxuIDQ5XG4wLjI1XG4gNDlcbi0wLjI1XG4gIDBcbkxUWVBF
XG4gIDJcbkRPVFxuIDcwXG4gICAgNjRcbiAgM1xuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi5cbiA3MlxuICAgIDY1XG4gNzNcbiAgICAgMlxuIDQwXG4wLjI1
XG4gNDlcbjAuMFxuIDQ5XG4tMC4yNVxuICAwXG5MVFlQRVxuICAyXG5EQVNIRE9UXG4gNzBcbiAg
ICA2NFxuICAzXG5fXyAuIF9fIC4gX18gLiBfXyAuIF9fIC4gX18gLiBfXyAuIF9fIC4gX18gLiBf
X1xuIDcyXG4gICAgNjVcbiA3M1xuICAgICA0XG4gNDBcbjEuMFxuIDQ5XG4wLjVcbiA0OVxuLTAu
MjVcbiA0OVxuMC4wXG4gNDlcbi0wLjI1XG4gIDBcbkVORFRBQlxuIjsKIyAxOTIgInRlcm0vZHhm
LnRybSIKICAgIGZwcmludGYoZ3BvdXRmaWxlLCBkeGZpMSwKICAgICAgICAgICAgdC0+eG1heCAv
IDYwLjAsIHQtPnltYXggLyA2MC4wLAogICAgICAgICAgICB0LT54bWF4IC8gNjAuMCwgdC0+eW1h
eCAvIDYwLjAsCiAgICAgICAgICAgIHRleHRfc3R5bGUsCiAgICAgICAgICAgICgwLjcgKiAoMC4w
MjYgKiAoODAuMCAqIDYwLjApKSkgLyA2MC4wLAogICAgICAgICAgICAwLjAzNTEsCiAgICAgICAg
ICAgIChkb3VibGUpIDEsCiAgICAgICAgICAgIGxheWVyX2NvbG91clswXSk7CgogICAgZnByaW50
ZihncG91dGZpbGUsIGR4ZmkyLCA3KTsKCiAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgIiAgMFxuVEFC
TEVcbiAgMlxuTEFZRVJcbiA3MFxuICAgJS1kXG4iLCA3KTsKICAgIGZvciAoaSA9IDE7IGkgPD0g
NzsgaSsrKQogICAgICAgIGZwcmludGYoZ3BvdXRmaWxlLCAiICAwXG5MQVlFUlxuICAyXG4lc1xu
IDcwXG4gICA2NFxuNjJcbiAgICVzXG4gIDZcbiVzXG4iLCBsYXllcl9uYW1lW2kgLSAxXSwgbGF5
ZXJfY29sb3VyW2kgLSAxXSwgbGF5ZXJfbGluZXNbaSAtIDFdKTsKCgoKICAgIGZwdXRzKCIgIDBc
bkVORFRBQlxuMFxuRU5EU0VDXG4gIDBcblNFQ1RJT05cbiAgMlxuQkxPQ0tTXG4gIDBcbkVORFNF
Q1xuICAwXG5TRUNUSU9OXG4gIDJcbkVOVElUSUVTXG4iLAoKCgogICAgICAgICAgZ3BvdXRmaWxl
KTsKfQoKc3RhdGljIHZvaWQgRFhGX3RleHQoKQp7CiAgICBpZiAodmVjdG9yX3dhc19sYXN0KQog
ICAgICAgIGZwdXRzKCIgIDBcblNFUUVORFxuIiwgZ3BvdXRmaWxlKTsKICAgIGZwdXRzKCIgIDBc
bkVORFNFQ1xuICAwXG5FT0ZcbiIsIGdwb3V0ZmlsZSk7Cn0KCnN0YXRpYyB2b2lkIERYRl9saW5l
dHlwZShsaW5ldHlwZSkKaW50IGxpbmV0eXBlOwp7CiAgICBsaW5ldHlwZSA9ICgobGluZXR5cGUp
ID49IDAgPyAobGluZXR5cGUpIDogLShsaW5ldHlwZSkpOwogICAgbGluZXR5cGUgPSBsaW5ldHlw
ZSAlIDc7CiAgICBkeGZfbGluZXR5cGUgPSBsaW5ldHlwZTsKfQoKc3RhdGljIHZvaWQgRFhGX21v
dmUoeCwgeSkKdW5zaWduZWQgaW50IHgsIHk7CnsKICAgIERYRl9wb3N4ID0geDsKICAgIERYRl9w
b3N5ID0geTsKICAgIGlmICh2ZWN0b3Jfd2FzX2xhc3QpCiAgICAgICAgZnB1dHMoIiAgMFxuU0VR
RU5EXG4iLCBncG91dGZpbGUpOwogICAgdmVjdG9yX3dhc19sYXN0ID0gMDsKICAgIGZwcmludGYo
Z3BvdXRmaWxlLCAiICAwXG5QT0xZTElORVxuICA4XG4lc1xuIDY2XG4gICAxXG4gIDZcbiVzXG4g
IDBcblZFUlRFWFxuICA4XG4lc1xuICA2XG4lc1xuIDEwXG4lLTYuM2ZcbiAyMFxuJS02LjNmXG4g
MzBcbjAuMDAwXG4iLAoKCgoKCiAgICAgICAgICAgIGxheWVyX25hbWVbZHhmX2xpbmV0eXBlXSwK
ICAgICAgICAgICAgbGF5ZXJfbGluZXNbZHhmX2xpbmV0eXBlXSwKICAgICAgICAgICAgbGF5ZXJf
bmFtZVtkeGZfbGluZXR5cGVdLAogICAgICAgICAgICBsYXllcl9saW5lc1tkeGZfbGluZXR5cGVd
LAogICAgICAgICAgICBEWEZfcG9zeCAvIDYwLjAsIERYRl9wb3N5IC8gNjAuMCk7Cgp9CgpzdGF0
aWMgdm9pZCBEWEZfdmVjdG9yKHV4LCB1eSkKdW5zaWduZWQgaW50IHV4LCB1eTsKewogICAgRFhG
X3Bvc3ggPSB1eDsKICAgIERYRl9wb3N5ID0gdXk7CiAgICB2ZWN0b3Jfd2FzX2xhc3QgPSAxOwoK
ICAgIGZwcmludGYoZ3BvdXRmaWxlLCAiICAwXG5WRVJURVhcbiAgOFxuJXNcbiAgNlxuJXNcbiAg
MTBcbiUtNi4zZlxuICAyMFxuJS02LjNmXG4gIDMwXG4wLjAwMFxuIiwKCgoKICAgICAgICAgICAg
bGF5ZXJfbmFtZVtkeGZfbGluZXR5cGVdLAogICAgICAgICAgICBsYXllcl9saW5lc1tkeGZfbGlu
ZXR5cGVdLAogICAgICAgICAgICBEWEZfcG9zeCAvIDYwLjAsIERYRl9wb3N5IC8gNjAuMCk7Cn0K
CnN0YXRpYyB2b2lkIERYRl9wdXRfdGV4dCh4LCB5LCBzdHIpCnVuc2lnbmVkIGludCB4LCB5Owpj
aGFyIHN0cltdOwp7CiAgICBpbnQgc3RsOwogICAgZmxvYXQgeGxlZnRwb3MsIHlsZWZ0cG9zLCB4
cmlnaHRwb3MsIHlyaWdodHBvczsKCgogICAgeGxlZnRwb3MgPSB5bGVmdHBvcyA9IHhyaWdodHBv
cyA9IHlyaWdodHBvcyA9IDEuMDsKCiAgICBpZiAoc3RyWzBdID09ICgnXDAnKSkKICAgICAgICBy
ZXR1cm47CgogICAgc3RsID0gMDsKICAgIHdoaWxlIChzdHJbc3RsXSAhPSAoJ1wwJykpCiAgICAg
ICAgKytzdGw7CgogICAgaWYgKHZlY3Rvcl93YXNfbGFzdCkKICAgICAgICBmcHV0cygiICAwXG5T
RVFFTkRcbiIsIGdwb3V0ZmlsZSk7CiAgICB2ZWN0b3Jfd2FzX2xhc3QgPSAwOwogICAgZnByaW50
ZihncG91dGZpbGUsICIgIDBcblRFWFRcbiAgOFxuJXNcbiIsIGxheWVyX25hbWVbMF0pOwogICAg
aWYgKGR4Zl9hbmdsZSAhPSA5MC4wKSB7CiAgICAgICAgc3dpdGNoIChkeGZfanVzdGlmeSkgewog
ICAgICAgIGNhc2UgTEVGVDoKICAgICAgICAgICAgeGxlZnRwb3MgPSAoZmxvYXQpIHg7CiAgICAg
ICAgICAgIHlsZWZ0cG9zID0gKGZsb2F0KSAoeSAtICgwLjAyNiAqICg4MC4wICogNjAuMCkpIC8g
NC4wKTsKICAgICAgICAgICAgeHJpZ2h0cG9zID0gKGZsb2F0KSAoeCArIHN0bCAqICgwLjcgKiAo
MC4wMTQgKiAoMTIwLjAgKiA2MC4wKSkpKTsKICAgICAgICAgICAgeXJpZ2h0cG9zID0geWxlZnRw
b3M7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgUklHSFQ6CiAgICAgICAgICAgIHhs
ZWZ0cG9zID0gKGZsb2F0KSAoeCAtIHN0bCAqICgwLjcgKiAoMC4wMTQgKiAoMTIwLjAgKiA2MC4w
KSkpKTsKICAgICAgICAgICAgeWxlZnRwb3MgPSAoZmxvYXQpICh5IC0gKDAuMDI2ICogKDgwLjAg
KiA2MC4wKSkgLyA0LjApOwogICAgICAgICAgICB4cmlnaHRwb3MgPSAoZmxvYXQpIHg7CiAgICAg
ICAgICAgIHlyaWdodHBvcyA9IHlsZWZ0cG9zOwogICAgICAgICAgICBicmVhazsKICAgICAgICBj
YXNlIENFTlRSRToKICAgICAgICAgICAgeGxlZnRwb3MgPSAoZmxvYXQpICh4IC0gc3RsICogKDAu
NyAqICgwLjAxNCAqICgxMjAuMCAqIDYwLjApKSkgLyAyLjApOwogICAgICAgICAgICB5bGVmdHBv
cyA9IChmbG9hdCkgKHkgLSAoMC4wMjYgKiAoODAuMCAqIDYwLjApKSAvIDQuMCk7CiAgICAgICAg
ICAgIHhyaWdodHBvcyA9IChmbG9hdCkgeDsKICAgICAgICAgICAgeXJpZ2h0cG9zID0geWxlZnRw
b3M7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgIH0gZWxzZSB7CiAgICAgICAgc3dp
dGNoIChkeGZfanVzdGlmeSkgewogICAgICAgIGNhc2UgTEVGVDoKICAgICAgICAgICAgeGxlZnRw
b3MgPSAoZmxvYXQpICh4ICsgKDAuMDI2ICogKDgwLjAgKiA2MC4wKSkgLyA0LjApOwogICAgICAg
ICAgICB5bGVmdHBvcyA9IChmbG9hdCkgeTsKICAgICAgICAgICAgeHJpZ2h0cG9zID0geGxlZnRw
b3M7CiAgICAgICAgICAgIHlyaWdodHBvcyA9IChmbG9hdCkgKHkgKyBzdGwgKiAoMC43ICogKDAu
MDE0ICogKDEyMC4wICogNjAuMCkpKSk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2Ug
UklHSFQ6CiAgICAgICAgICAgIHhsZWZ0cG9zID0gKGZsb2F0KSAoeCArICgwLjAyNiAqICg4MC4w
ICogNjAuMCkpIC8gNC4wKTsKICAgICAgICAgICAgeWxlZnRwb3MgPSAoZmxvYXQpICh5IC0gc3Rs
ICogKDAuMDE0ICogKDEyMC4wICogNjAuMCkpKTsKICAgICAgICAgICAgeHJpZ2h0cG9zID0geGxl
ZnRwb3M7CiAgICAgICAgICAgIHlyaWdodHBvcyA9IChmbG9hdCkgeTsKICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgY2FzZSBDRU5UUkU6CiAgICAgICAgICAgIHhsZWZ0cG9zID0gKGZsb2F0KSAo
eCArICgwLjAyNiAqICg4MC4wICogNjAuMCkpIC8gNC4wKTsKICAgICAgICAgICAgeWxlZnRwb3Mg
PSAoZmxvYXQpICh5IC0gc3RsICogKDAuNyAqICgwLjAxNCAqICgxMjAuMCAqIDYwLjApKSkgLyAy
LjApOwogICAgICAgICAgICB4cmlnaHRwb3MgPSB4bGVmdHBvczsKICAgICAgICAgICAgeXJpZ2h0
cG9zID0gKGZsb2F0KSB5OwogICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICB9CgogICAg
ZnByaW50ZihncG91dGZpbGUsICIgMTBcbiUtNi4zZlxuIDIwXG4lLTYuM2ZcbiAzMFxuMC4wMDBc
biA0MFxuJS02LjNmXG4gIDFcbiVzXG4gNTBcbiUtNi4zZlxuICA3XG4lc1xuIiwKCgoKICAgICAg
ICAgICAgeGxlZnRwb3MgLyA2MC4wLCB5bGVmdHBvcyAvIDYwLjAsCiAgICAgICAgICAgICgwLjcg
KiAoMC4wMjYgKiAoODAuMCAqIDYwLjApKSkgLyA2MC4wLCBzdHIsIGR4Zl9hbmdsZSwKICAgICAg
ICAgICAgdGV4dF9zdHlsZSk7CgogICAgaWYgKGR4Zl9qdXN0aWZ5ICE9IExFRlQpIHsKICAgICAg
ICBmcHJpbnRmKGdwb3V0ZmlsZSwgIiA3MlxuJWRcbiAxMVxuJS02LjNmXG4gMjFcbiUtNi4zZlxu
IDMxXG4wLjAwMFxuIiwKCiAgICAgICAgICAgICAgICBkeGZfanVzdGlmeSwKICAgICAgICAgICAg
ICAgIHhyaWdodHBvcyAvIDYwLjAsIHlyaWdodHBvcyAvIDYwLjApOwogICAgfQp9CgpzdGF0aWMg
aW50IERYRl90ZXh0X2FuZ2xlKGFuZykKaW50IGFuZzsKewogICAgZHhmX2FuZ2xlID0gMC4wOwog
ICAgaWYgKGFuZyA9PSAxKQogICAgICAgIGR4Zl9hbmdsZSA9IDkwLjA7CiAgICByZXR1cm4gKDEp
Owp9CgpzdGF0aWMgaW50IERYRl9qdXN0aWZ5X3RleHQobW9kZSkKZW51bSBKVVNUSUZZIG1vZGU7
CnsKICAgIGR4Zl9qdXN0aWZ5ID0gbW9kZTsKICAgIHJldHVybiAoMSk7Cn0KCnN0YXRpYyB2b2lk
IERYRl9yZXNldCgpCnsKICAgIERYRl9wb3N4ID0gRFhGX3Bvc3kgPSAwOwp9CiMgMjc1ICJ0ZXJt
LmgiIDIKCgoKCgoKCiMgMSAidGVybS9maWcudHJtIiAxCiMgNjMgInRlcm0vZmlnLnRybSIKIyAx
ICJ0ZXJtL2RyaXZlci5oIiAxCiMgNjQgInRlcm0vZmlnLnRybSIgMgoKCgoKCgpzdGF0aWMgdm9p
ZCBGSUdfb3B0aW9ucyAodm9pZCk7CnN0YXRpYyB2b2lkIEZJR19pbml0ICh2b2lkKTsKc3RhdGlj
IHZvaWQgRklHX2dyYXBoaWNzICh2b2lkKTsKc3RhdGljIHZvaWQgRklHX3RleHQgKHZvaWQpOwpz
dGF0aWMgdm9pZCBGSUdfbGluZXR5cGUgKGludCBsaW5ldHlwZSk7CnN0YXRpYyB2b2lkIEZJR19t
b3ZlICh1bnNpZ25lZCBpbnQgeCwgdW5zaWduZWQgaW50IHkpOwpzdGF0aWMgdm9pZCBGSUdfdmVj
dG9yICh1bnNpZ25lZCBpbnQgdXgsIHVuc2lnbmVkIGludCB1eSk7CnN0YXRpYyB2b2lkIEZJR19h
cnJvdyAodW5zaWduZWQgaW50IHN4LCB1bnNpZ25lZCBpbnQgc3ksIHVuc2lnbmVkIGludCBleCwg
dW5zaWduZWQgaW50IGV5LCBUQk9PTEVBTiBoZWFkKTsKc3RhdGljIHZvaWQgRklHX3B1dF90ZXh0
ICh1bnNpZ25lZCBpbnQgeCwgdW5zaWduZWQgaW50IHksIGNoYXIgKnN0cik7CnN0YXRpYyBpbnQg
RklHX2p1c3RpZnlfdGV4dCAoZW51bSBKVVNUSUZZIG1vZGUpOwpzdGF0aWMgaW50IEZJR190ZXh0
X2FuZ2xlIChpbnQgYW5nKTsKc3RhdGljIHZvaWQgRklHX3BvaW50c2l6ZSAoZG91YmxlIGFyZ19w
b2ludHNpemUpOwpzdGF0aWMgdm9pZCBGSUdfbGluZXdpZHRoIChkb3VibGUgbGluZXdpZHRoKTsK
c3RhdGljIHZvaWQgRklHX3Jlc2V0ICh2b2lkKTsKc3RhdGljIHZvaWQgRklHX2xwb2ludCAodW5z
aWduZWQgaW50IHgsIHVuc2lnbmVkIGludCB5LCBpbnQgbnVtYmVyKTsKCgoKCgoKCiMgMSAidGVy
bS9vYmplY3QuaCIgMQojIDQ5ICJ0ZXJtL29iamVjdC5oIgp0eXBlZGVmIHN0cnVjdCBmX3BvaW50
IHsKICAgIGludCB4LCB5Owp9CiAgICAgICAgICAgICAgICBGX3BvaW50OwoKdHlwZWRlZiBzdHJ1
Y3QgZl9wb3MgewogICAgaW50IHgsIHk7Cn0KICAgICAgICAgICAgICAgIEZfcG9zOwoKCgoKdHlw
ZWRlZiBzdHJ1Y3QgZl9hcnJvdyB7CiAgICBpbnQgdHlwZTsKICAgIGludCBzdHlsZTsKICAgIGZs
b2F0IHRoaWNrbmVzczsKICAgIGZsb2F0IHdpZDsKICAgIGZsb2F0IGh0Owp9CiAgICAgICAgICAg
ICAgICBGX2Fycm93OwoKdHlwZWRlZiBzdHJ1Y3QgZl9lbGxpcHNlIHsKICAgIGludCB0YWdnZWQ7
CiAgICBpbnQgZGlzdHJpYjsKICAgIGludCB0eXBlOwoKCgoKICAgIGludCBzdHlsZTsKICAgIGlu
dCB0aGlja25lc3M7CiAgICBpbnQgcGVuX2NvbG9yOwogICAgaW50IGZpbGxfY29sb3I7CiAgICBp
bnQgZmlsbF9zdHlsZTsKICAgIGludCBkZXB0aDsKICAgIGZsb2F0IHN0eWxlX3ZhbDsKICAgIGlu
dCBwZW5fc3R5bGU7CiAgICBmbG9hdCBhbmdsZTsKICAgIGludCBkaXJlY3Rpb247CgogICAgc3Ry
dWN0IGZfcG9zIGNlbnRlcjsKICAgIHN0cnVjdCBmX3BvcyByYWRpdXNlczsKICAgIHN0cnVjdCBm
X3BvcyBzdGFydDsKICAgIHN0cnVjdCBmX3BvcyBlbmQ7CiAgICBzdHJ1Y3QgZl9lbGxpcHNlICpu
ZXh0Owp9CiAgICAgICAgICAgICAgICBGX2VsbGlwc2U7CgoKCnR5cGVkZWYgc3RydWN0IGZfYXJj
IHsKICAgIGludCB0YWdnZWQ7CiAgICBpbnQgZGlzdHJpYjsKICAgIGludCB0eXBlOwoKCgoKICAg
IGludCBzdHlsZTsKICAgIGludCB0aGlja25lc3M7CiAgICBpbnQgcGVuX2NvbG9yOwogICAgaW50
IGZpbGxfY29sb3I7CiAgICBpbnQgZmlsbF9zdHlsZTsKICAgIGludCBkZXB0aDsKICAgIGludCBw
ZW5fc3R5bGU7CiAgICBzdHJ1Y3QgZl9hcnJvdyAqZm9yX2Fycm93OwogICAgc3RydWN0IGZfYXJy
b3cgKmJhY2tfYXJyb3c7CgogICAgaW50IGNhcF9zdHlsZTsKICAgIGZsb2F0IHN0eWxlX3ZhbDsK
ICAgIGludCBkaXJlY3Rpb247CiAgICBzdHJ1Y3QgewogICAgICAgIGZsb2F0IHgsIHk7CiAgICB9
IGNlbnRlcjsKICAgIHN0cnVjdCBmX3BvcyBwb2ludFszXTsKICAgIHN0cnVjdCBmX2FyYyAqbmV4
dDsKfQogICAgICAgICAgICAgICAgRl9hcmM7CgoKCgoKCgp0eXBlZGVmIHN0cnVjdCBmX3BpYyB7
CgoKCiAgICBjaGFyIGZpbGVbNDA5Nl07CiAgICBpbnQgc3VidHlwZTsKCgoKCgogICAgaW50IGZs
aXBwZWQ7CiAgICB1bnNpZ25lZCBjaGFyICpiaXRtYXA7CiAgICBpbnQgbnVtY29sczsKICAgIGZs
b2F0IGh3X3JhdGlvOwogICAgaW50IHNpemVfeCwgc2l6ZV95OwogICAgc3RydWN0IGZfcG9zIGJp
dF9zaXplOwogICAgaW50IGNvbG9yOwogICAgaW50IHBpeF9yb3RhdGlvbiwgcGl4X3dpZHRoLCBw
aXhfaGVpZ2h0LCBwaXhfZmxpcHBlZDsKfQogICAgICAgICAgICAgICAgRl9waWM7CgpleHRlcm4g
Y2hhciBFTVBUWV9QSUNbXTsKCgoKdHlwZWRlZiBzdHJ1Y3QgZl9saW5lIHsKICAgIGludCB0YWdn
ZWQ7CiAgICBpbnQgZGlzdHJpYjsKICAgIGludCB0eXBlOwoKCgoKCiAgICBpbnQgc3R5bGU7CiAg
ICBpbnQgdGhpY2tuZXNzOwogICAgaW50IHBlbl9jb2xvcjsKICAgIGludCBmaWxsX2NvbG9yOwog
ICAgaW50IGZpbGxfc3R5bGU7CiAgICBpbnQgZGVwdGg7CiAgICBpbnQgcGVuX3N0eWxlOwogICAg
c3RydWN0IGZfYXJyb3cgKmZvcl9hcnJvdzsKICAgIHN0cnVjdCBmX2Fycm93ICpiYWNrX2Fycm93
OwoKICAgIGludCBjYXBfc3R5bGU7CgoKCiAgICBzdHJ1Y3QgZl9wb2ludCAqcG9pbnRzOwogICAg
aW50IGpvaW5fc3R5bGU7CgoKCiAgICBmbG9hdCBzdHlsZV92YWw7CiAgICBpbnQgcmFkaXVzOwog
ICAgc3RydWN0IGZfcGljICpwaWM7CiAgICBzdHJ1Y3QgZl9saW5lICpuZXh0Owp9CiAgICAgICAg
ICAgICAgICBGX2xpbmU7Cgp0eXBlZGVmIHN0cnVjdCBmX3RleHQgewogICAgaW50IHRhZ2dlZDsK
ICAgIGludCBkaXN0cmliOwogICAgaW50IHR5cGU7CgoKCiAgICBpbnQgZm9udDsKCiAgICBpbnQg
c2l6ZTsKICAgIGludCBjb2xvcjsKICAgIGludCBkZXB0aDsKICAgIGZsb2F0IGFuZ2xlOwoKICAg
IGludCBmbGFnczsKCgoKCgogICAgaW50IGFzY2VudDsKICAgIGludCBsZW5ndGg7CiAgICBpbnQg
ZGVzY2VudDsKICAgIGludCBiYXNlX3g7CiAgICBpbnQgYmFzZV95OwogICAgaW50IHBlbl9zdHls
ZTsKICAgIGNoYXIgKmNzdHJpbmc7CiAgICBzdHJ1Y3QgZl90ZXh0ICpuZXh0Owp9CiAgICAgICAg
ICAgICAgICBGX3RleHQ7CiMgMjUwICJ0ZXJtL29iamVjdC5oIgp0eXBlZGVmIHN0cnVjdCBmX2Nv
bnRyb2wgewogICAgZmxvYXQgbHgsIGx5LCByeCwgcnk7CiAgICBzdHJ1Y3QgZl9jb250cm9sICpu
ZXh0Owp9CiAgICAgICAgICAgICAgICBGX2NvbnRyb2w7CiMgMjYzICJ0ZXJtL29iamVjdC5oIgp0
eXBlZGVmIHN0cnVjdCBmX3NwbGluZSB7CiAgICBpbnQgdGFnZ2VkOwogICAgaW50IGRpc3RyaWI7
CiAgICBpbnQgdHlwZTsKCgoKCiAgICBpbnQgc3R5bGU7CiAgICBpbnQgdGhpY2tuZXNzOwogICAg
aW50IHBlbl9jb2xvcjsKICAgIGludCBmaWxsX2NvbG9yOwogICAgaW50IGZpbGxfc3R5bGU7CiAg
ICBpbnQgZGVwdGg7CiAgICBpbnQgcGVuX3N0eWxlOwogICAgc3RydWN0IGZfYXJyb3cgKmZvcl9h
cnJvdzsKICAgIHN0cnVjdCBmX2Fycm93ICpiYWNrX2Fycm93OwoKICAgIGludCBjYXBfc3R5bGU7
CgoKCgoKICAgIHN0cnVjdCBmX3BvaW50ICpwb2ludHM7CiAgICBmbG9hdCBzdHlsZV92YWw7CiAg
ICBzdHJ1Y3QgZl9jb250cm9sICpjb250cm9sczsKICAgIHN0cnVjdCBmX3NwbGluZSAqbmV4dDsK
fQogICAgICAgICAgICAgICAgRl9zcGxpbmU7Cgp0eXBlZGVmIHN0cnVjdCBmX2NvbXBvdW5kIHsK
ICAgIGludCB0YWdnZWQ7CiAgICBpbnQgZGlzdHJpYjsKICAgIHN0cnVjdCBmX3BvcyBud2Nvcm5l
cjsKICAgIHN0cnVjdCBmX3BvcyBzZWNvcm5lcjsKICAgIHN0cnVjdCBmX2xpbmUgKmxpbmVzOwog
ICAgc3RydWN0IGZfZWxsaXBzZSAqZWxsaXBzZXM7CiAgICBzdHJ1Y3QgZl9zcGxpbmUgKnNwbGlu
ZXM7CiAgICBzdHJ1Y3QgZl90ZXh0ICp0ZXh0czsKICAgIHN0cnVjdCBmX2FyYyAqYXJjczsKICAg
IHN0cnVjdCBmX2NvbXBvdW5kICpjb21wb3VuZHM7CiAgICBzdHJ1Y3QgZl9jb21wb3VuZCAqbmV4
dDsKfQogICAgICAgICAgICAgICAgRl9jb21wb3VuZDsKCnR5cGVkZWYgc3RydWN0IGZfbGlua2lu
Zm8gewogICAgc3RydWN0IGZfbGluZSAqbGluZTsKICAgIHN0cnVjdCBmX3BvaW50ICplbmRwdDsK
ICAgIHN0cnVjdCBmX3BvaW50ICpwcmV2cHQ7CiAgICBpbnQgdHdvX3B0czsKICAgIHN0cnVjdCBm
X2xpbmtpbmZvICpuZXh0Owp9CiAgICAgICAgICAgICAgICBGX2xpbmtpbmZvOwojIDM4MSAidGVy
bS9vYmplY3QuaCIKZXh0ZXJuIEZfY29tcG91bmQgb2JqZWN0czsKCgoKZXh0ZXJuIEZfbGluZSAq
Y3VyX2wsICpuZXdfbCwgKm9sZF9sOwpleHRlcm4gRl9hcmMgKmN1cl9hLCAqbmV3X2EsICpvbGRf
YTsKZXh0ZXJuIEZfZWxsaXBzZSAqY3VyX2UsICpuZXdfZSwgKm9sZF9lOwpleHRlcm4gRl90ZXh0
ICpjdXJfdCwgKm5ld190LCAqb2xkX3Q7CmV4dGVybiBGX3NwbGluZSAqY3VyX3MsICpuZXdfcywg
Km9sZF9zOwpleHRlcm4gRl9jb21wb3VuZCAqY3VyX2MsICpuZXdfYywgKm9sZF9jOwpleHRlcm4g
Rl9wb2ludCAqZmlyc3RfcG9pbnQsICpjdXJfcG9pbnQ7CmV4dGVybiBGX2xpbmtpbmZvICpjdXJf
bGlua3M7CgoKCgpleHRlcm4gaW50IGN1cl9saW5ld2lkdGg7CmV4dGVybiBpbnQgY3VyX2xpbmVz
dHlsZTsKZXh0ZXJuIGludCBjdXJfam9pbnN0eWxlOwpleHRlcm4gaW50IGN1cl9jYXBzdHlsZTsK
ZXh0ZXJuIGZsb2F0IGN1cl9kYXNobGVuZ3RoOwpleHRlcm4gZmxvYXQgY3VyX2RvdGdhcDsKZXh0
ZXJuIGZsb2F0IGN1cl9zdHlsZXZhbDsKZXh0ZXJuIGludCBjdXJfZmlsbGNvbG9yLCBjdXJfcGVu
Y29sb3I7CmV4dGVybiBpbnQgY3VyX2ZpbGxzdHlsZSwgY3VyX3BlbnN0eWxlOwpleHRlcm4gaW50
IGN1cl9ib3hyYWRpdXM7CmV4dGVybiBpbnQgY3VyX2Fycm93bW9kZTsKZXh0ZXJuIGludCBjdXJf
YXJyb3d0eXBlOwpleHRlcm4gaW50IGN1cl9hcmN0eXBlOwoKCmV4dGVybiBpbnQgY3VyX2ZvbnRz
aXplOwpleHRlcm4gaW50IGN1cl9sYXRleF9mb250OwpleHRlcm4gaW50IGN1cl9wc19mb250Owpl
eHRlcm4gaW50IGN1cl90ZXh0anVzdDsKZXh0ZXJuIGludCBjdXJfdGV4dGZsYWdzOwoKCmV4dGVy
biBmbG9hdCBjdXJfZWxsdGV4dGFuZ2xlOwojIDkzICJ0ZXJtL2ZpZy50cm0iIDIKIyAxMjIgInRl
cm0vZmlnLnRybSIKZW51bSBGSUdfcG9seV9zdGF0IHsKICAgIEZJR19wb2x5X25ldywgRklHX3Bv
bHlfcGFydAp9OwoKc3RhdGljIGludCBGSUdfcG9zeDsKc3RhdGljIGludCBGSUdfcG9zeTsKc3Rh
dGljIGxvbmcgRklHX3BvbHlfdmVjX2NudDsKc3RhdGljIGludCBGSUdfZGVwdGggPSAxMDsKc3Rh
dGljIGludCBGSUdfbGluZWRlcHRoID0gMTA7CnN0YXRpYyBpbnQgRklHX3RoaWNrbmVzcyA9IDE7
CnN0YXRpYyBpbnQgRklHX2RlZmF1bHRfdGhpY2tuZXNzID0gMTsKc3RhdGljIGRvdWJsZSBGSUdf
Y3VycmVudF9wb2ludHNpemUgPSAxLjsKc3RhdGljIGRvdWJsZSBGSUdfY3VycmVudF9saW5ld2lk
dGggPSAxLjsKCgoKc3RhdGljIGludCBGSUdfcG9seV92ZWNfbWF4ID0gOTk5OwoKc3RhdGljIGVu
dW0gRklHX3BvbHlfc3RhdCBGSUdfcG9seXZlY19zdGF0OwojIDE1NiAidGVybS9maWcudHJtIgpz
dGF0aWMgRl9wb2ludCAqRklHX3BvaW50cyA9ICgodm9pZCAqKTApOwoKc3RhdGljIEZfbGluZSBG
SUdfbGluZTsKIyAxNjggInRlcm0vZmlnLnRybSIKc3RhdGljIGludCBGSUdfdHlwZTsKc3RhdGlj
IGZsb2F0IEZJR19zcGFjaW5nOwpzdGF0aWMgaW50IEZJR19qdXN0aWZ5OwpzdGF0aWMgZmxvYXQg
RklHX2FuZ2xlOwpzdGF0aWMgaW50IEZJR191c2VfY29sb3IgPSAwOwpzdGF0aWMgaW50IEZJR19p
c19iaWcgPSAwOwpzdGF0aWMgaW50IEZJR19jb2xvciA9ICgtMSk7CnN0YXRpYyBpbnQgRklHX3hv
ZmYgPSAoKDEyMDApLzQpOwpzdGF0aWMgaW50IEZJR195b2ZmID0gKCgxMjAwKS80KTsKc3RhdGlj
IGludCBGSUdfZm9udF9zID0gKDEwKTsKc3RhdGljIGludCBGSUdfcG9ydHJhaXQgPSAwOwpzdGF0
aWMgaW50IEZJR19pbmNoZXMgPSAwOwoKc3RhdGljIHZvaWQgRklHX3BvbHlfY2xlYW4gKGVudW0g
RklHX3BvbHlfc3RhdCBmaWdfc3RhdCk7CgoKCgoKc3RhdGljIHZvaWQgRklHX3BvbHlfY2xlYW4o
ZmlnX3N0YXQpCmVudW0gRklHX3BvbHlfc3RhdCBmaWdfc3RhdDsKewogICAgaW50IGksIGo7CiAg
ICBpZiAoZmlnX3N0YXQgPT0gRklHX3BvbHlfcGFydCkgewogICAgICAgIGZwcmludGYoZ3BvdXRm
aWxlLCAiJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJTkuM2YgJWQgJWQgJWQgJWQgJWQgJWxk
XG5cdCIsCiAgICAgICAgICAgICAgICAyLCBGSUdfbGluZS50eXBlLCBGSUdfbGluZS5zdHlsZSwg
RklHX2xpbmUudGhpY2tuZXNzLAogICAgICAgICAgICAgICAgRklHX2xpbmUucGVuX2NvbG9yLCBG
SUdfbGluZS5maWxsX2NvbG9yLCBGSUdfbGluZS5kZXB0aCwKICAgICAgICAgICAgICAgIEZJR19s
aW5lLnBlbl9zdHlsZSwgRklHX2xpbmUuZmlsbF9zdHlsZSwgRklHX2xpbmUuc3R5bGVfdmFsLAog
ICAgICAgICAgICAgICAgRklHX2xpbmUuam9pbl9zdHlsZSwgRklHX2xpbmUuY2FwX3N0eWxlLCBG
SUdfbGluZS5yYWRpdXMsCiAgICAgICAgICAgICAgICAwLCAwLCBGSUdfcG9seV92ZWNfY250KTsK
CiAgICAgICAgaiA9IDA7CiAgICAgICAgZm9yIChpID0gMDsgaSA8IEZJR19wb2x5X3ZlY19jbnQ7
IGkrKykgewogICAgICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgIiAlZCAlZCIsIEZJR19wb2lu
dHNbaV0ueCwgRklHX3BvaW50c1tpXS55KTsKICAgICAgICAgICAgaWYgKGorKyA+IDQgJiYgaSAh
PSBGSUdfcG9seV92ZWNfY250IC0gMSkgewogICAgICAgICAgICAgICAgZnB1dHMoIlxuXHQiLCBn
cG91dGZpbGUpOwogICAgICAgICAgICAgICAgaiA9IDA7CiAgICAgICAgICAgIH0KICAgICAgICB9
CiAgICAgICAgaWYgKGogIT0gMCkgewogICAgICAgICAgICBfSU9fcHV0YyAoJ1xuJywgZ3BvdXRm
aWxlKTsKICAgICAgICB9CgoKCiAgICAgICAgZnJlZShGSUdfcG9pbnRzKTsKICAgICAgICBGSUdf
cG9pbnRzID0gKCh2b2lkICopMCk7CiAgICB9CiAgICBGSUdfcG9seXZlY19zdGF0ID0gRklHX3Bv
bHlfbmV3Owp9CgpzdGF0aWMgdm9pZCBGSUdfb3B0aW9ucygpCnsKICAgIHN0YXRpYyBjaGFyICpv
cHRpb25zX2xpc3QgPQogICAgImV4cGVjdGluZyBtb25vY2hyb21lLCBjb2xvciwgc21hbGwsIGJp
ZywgcG9ydHJhaXQsIGxhbmRzY2FwZSxcbiBcdCBpbmNoZXMsIG1ldHJpYywgc2l6ZSA8bnVtYmVy
PiA8bnVtYmVyPiwgIGZvbnRzaXplIDxudW1iZXI+LFxuIFx0IHRoaWNrbmVzcyA8bnVtZXI+LCBk
ZXB0aCA8bnVtYmVyPiBvciBwb2ludHNtYXggPG51bWJlcj4iOwoKCgogICAgaW50IHBhcnNlX2Vy
cm9yID0gMDsKICAgIGxvbmcgdGVtcF9tYXg7CiAgICBzdHJ1Y3QgdmFsdWUgYTsKICAgIHVuc2ln
bmVkIGludCB0bWF4X3Q7CiAgICBkb3VibGUgeHNpemVfdCwgeXNpemVfdDsKCiAgICBGSUdfdXNl
X2NvbG9yID0gMDsKICAgIEZJR19pc19iaWcgPSAwOwogICAgRklHX3BvcnRyYWl0ID0gMDsKICAg
IEZJR19mb250X3MgPSAwOwogICAgRklHX2RlZmF1bHRfdGhpY2tuZXNzID0gMTsKICAgIHhzaXpl
X3QgPSB5c2l6ZV90ID0gMC47CgoKCiAgICBGSUdfaW5jaGVzID0gMTsKCiAgICB3aGlsZSAoIShj
X3Rva2VuID49IG51bV90b2tlbnMgfHwgZXF1YWxzKGNfdG9rZW4sIjsiKSkpIHsKICAgICAgICBp
ZiAoYWxtb3N0X2VxdWFscyhjX3Rva2VuLCAibW8kbm9jaHJvbWUiKSkgewogICAgICAgICAgICBG
SUdfdXNlX2NvbG9yID0gMDsKICAgICAgICAgICAgY190b2tlbisrOwogICAgICAgIH0gZWxzZSBp
ZiAoYWxtb3N0X2VxdWFscyhjX3Rva2VuLCAiYyRvbG9yIikKICAgICAgICAgICAgICAgICAgIHx8
IGFsbW9zdF9lcXVhbHMoY190b2tlbiwgImMkb2xvdXIiKSkgewogICAgICAgICAgICBGSUdfdXNl
X2NvbG9yID0gMTsKICAgICAgICAgICAgY190b2tlbisrOwogICAgICAgIH0gZWxzZSBpZiAoYWxt
b3N0X2VxdWFscyhjX3Rva2VuLCAic20kYWxsIikpIHsKICAgICAgICAgICAgRklHX2lzX2JpZyA9
IDA7CiAgICAgICAgICAgIGNfdG9rZW4rKzsKICAgICAgICB9IGVsc2UgaWYgKGFsbW9zdF9lcXVh
bHMoY190b2tlbiwgImIkaWciKSkgewogICAgICAgICAgICBGSUdfaXNfYmlnID0gMTsKICAgICAg
ICAgICAgY190b2tlbisrOwogICAgICAgIH0gZWxzZSBpZiAoYWxtb3N0X2VxdWFscyhjX3Rva2Vu
LCAiaW4kY2hlcyIpKSB7CiAgICAgICAgICAgIEZJR19pbmNoZXMgPSAxOwogICAgICAgICAgICBj
X3Rva2VuKys7CiAgICAgICAgfSBlbHNlIGlmIChhbG1vc3RfZXF1YWxzKGNfdG9rZW4sICJtZSR0
cmljIikpIHsKICAgICAgICAgICAgRklHX2luY2hlcyA9IDA7CiAgICAgICAgICAgIGNfdG9rZW4r
KzsKICAgICAgICB9IGVsc2UgaWYgKGFsbW9zdF9lcXVhbHMoY190b2tlbiwgInBvciR0cmFpdCIp
KSB7CgoKICAgICAgICAgICAgRklHX3BvcnRyYWl0ID0gMTsKICAgICAgICAgICAgY190b2tlbisr
OwogICAgICAgIH0gZWxzZSBpZiAoYWxtb3N0X2VxdWFscyhjX3Rva2VuLCAibCRhbmRzY2FwZSIp
KSB7CiAgICAgICAgICAgIEZJR19wb3J0cmFpdCA9IDA7CiAgICAgICAgICAgIGNfdG9rZW4rKzsK
ICAgICAgICB9IGVsc2UgaWYgKGFsbW9zdF9lcXVhbHMoY190b2tlbiwgInNpJHplIikpIHsKICAg
ICAgICAgICAgY190b2tlbisrOwogICAgICAgICAgICBpZiAoKGNfdG9rZW4gPj0gbnVtX3Rva2Vu
cyB8fCBlcXVhbHMoY190b2tlbiwiOyIpKSkgewogICAgICAgICAgICAgICAgaW50X2Vycm9yKCJz
aXplOiAyIG51bWJlcnMgZXhwZWN0ZWQiLCBjX3Rva2VuKTsKICAgICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgICAgIHhzaXplX3QgPSByZWFsKGNvbnN0X2V4cHJlc3MoJmEpKTsKICAgICAg
ICAgICAgICAgIGlmICgoY190b2tlbiA+PSBudW1fdG9rZW5zIHx8IGVxdWFscyhjX3Rva2VuLCI7
IikpKSB7CiAgICAgICAgICAgICAgICAgICAgaW50X2Vycm9yKCJzaXplOiAyIG51bWJlcnMgZXhw
ZWN0ZWQiLCBjX3Rva2VuKTsKICAgICAgICAgICAgICAgICAgICB4c2l6ZV90ID0gMC47CiAgICAg
ICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIHlzaXplX3QgPSByZWFsKGNv
bnN0X2V4cHJlc3MoJmEpKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICh4
c2l6ZV90IDwgMi4gfHwgeXNpemVfdCA8IDIuIHx8IHhzaXplX3QgPiA5OS4gfHwgeXNpemVfdCA+
IDk5LikgewogICAgICAgICAgICAgICAgICAgIGlmICh4c2l6ZV90ICE9IDAuIHx8IHlzaXplX3Qg
IT0gMC4pCiAgICAgICAgICAgICAgICAgICAgICAgIGludF9lcnJvcigic2l6ZTogb3V0IG9mIHJh
bmdlIiwgY190b2tlbik7CiAgICAgICAgICAgICAgICAgICAgeHNpemVfdCA9IHlzaXplX3QgPSAw
LjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZSBpZiAoYWxt
b3N0X2VxdWFscyhjX3Rva2VuLCAiZiRvbnRzaXplIikpIHsKICAgICAgICAgICAgY190b2tlbisr
OwogICAgICAgICAgICBpZiAoKGNfdG9rZW4gPj0gbnVtX3Rva2VucyB8fCBlcXVhbHMoY190b2tl
biwiOyIpKSkgewogICAgICAgICAgICAgICAgaW50X2Vycm9yKCJmb250c2l6ZTogbnVtYmVyIGV4
cGVjdGVkIiwgY190b2tlbik7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBG
SUdfZm9udF9zID0gKGludCkgcmVhbChjb25zdF9leHByZXNzKCZhKSk7CiAgICAgICAgICAgICAg
ICBpZiAoRklHX2ZvbnRfcyA8IDUgfHwgRklHX2ZvbnRfcyA+IDM2KSB7CiAgICAgICAgICAgICAg
ICAgICAgaW50X2Vycm9yKCJmb250c2l6ZSBvdXQgb2YgcmFuZ2UiLCBjX3Rva2VuIC0gMSk7CiAg
ICAgICAgICAgICAgICAgICAgRklHX2ZvbnRfcyA9IDA7CiAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgIH0KICAgICAgICB9IGVsc2UgaWYgKGFsbW9zdF9lcXVhbHMoY190b2tlbiwgInQkaGlj
a25lc3MiKSkgewogICAgICAgICAgICBjX3Rva2VuKys7CiAgICAgICAgICAgIGlmICgoY190b2tl
biA+PSBudW1fdG9rZW5zIHx8IGVxdWFscyhjX3Rva2VuLCI7IikpKSB7CiAgICAgICAgICAgICAg
ICBpbnRfZXJyb3IoInRoaWNrbmVzczogbnVtYmVyIGV4cGVjdGVkIiwgY190b2tlbik7CiAgICAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBGSUdfZGVmYXVsdF90aGlja25lc3MgPSAo
aW50KSByZWFsKGNvbnN0X2V4cHJlc3MoJmEpKTsKICAgICAgICAgICAgICAgIGlmIChGSUdfZGVm
YXVsdF90aGlja25lc3MgPCAxIHx8IEZJR19kZWZhdWx0X3RoaWNrbmVzcyA+IDEwKSB7CiAgICAg
ICAgICAgICAgICAgICAgaW50X2Vycm9yKCJ0aGlja25lc3Mgb3V0IG9mIHJhbmdlIiwgY190b2tl
biAtIDEpOwogICAgICAgICAgICAgICAgICAgIEZJR19kZWZhdWx0X3RoaWNrbmVzcyA9IDE7CiAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgaWYgKGFsbW9zdF9l
cXVhbHMoY190b2tlbiwgImQkZXB0aCIpKSB7CiAgICAgICAgICAgIGNfdG9rZW4rKzsKICAgICAg
ICAgICAgaWYgKChjX3Rva2VuID49IG51bV90b2tlbnMgfHwgZXF1YWxzKGNfdG9rZW4sIjsiKSkp
IHsKICAgICAgICAgICAgICAgIGludF9lcnJvcigiZGVwdGg6IG51bWJlciBleHBlY3RlZCIsIGNf
dG9rZW4pOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgRklHX2RlcHRoID0g
KGludCkgcmVhbChjb25zdF9leHByZXNzKCZhKSk7CiAgICAgICAgICAgICAgICBpZiAoRklHX2Rl
cHRoIDwgMCB8fCBGSUdfZGVwdGggPiA5OSkgewogICAgICAgICAgICAgICAgICAgIGludF9lcnJv
cigiZGVwdGggb3V0IG9mIHJhbmdlIiwgY190b2tlbiAtIDEpOwogICAgICAgICAgICAgICAgICAg
IEZJR19kZXB0aCA9IDEwOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgRklHX2xp
bmVkZXB0aCA9IEZJR19kZXB0aDsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZSBpZiAoYWxt
b3N0X2VxdWFscyhjX3Rva2VuLCAicG9pJG50c21heCIpKSB7CgogICAgICAgICAgICBjX3Rva2Vu
Kys7CiAgICAgICAgICAgIGlmICgoY190b2tlbiA+PSBudW1fdG9rZW5zIHx8IGVxdWFscyhjX3Rv
a2VuLCI7IikpKSB7CiAgICAgICAgICAgICAgICBpbnRfZXJyb3IoIm1heC4gcG9pbnRzIHBlciBw
b2x5bGluZTogbnVtYmVyIGV4cGVjdGVkIiwgY190b2tlbik7CiAgICAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICAgICB0ZW1wX21heCA9IChsb25nKSByZWFsKGNvbnN0X2V4cHJlc3MoJmEp
KTsKCiAgICAgICAgICAgICAgICBpZiAoKHRlbXBfbWF4ID4gMSkgJiYgKHRlbXBfbWF4IDwgKDk5
OTk5TCArIDIpKSkgewoKICAgICAgICAgICAgICAgICAgICBGSUdfcG9seV92ZWNfbWF4ID0gdGVt
cF9tYXggLSAxOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBj
aGFyIHRbMTI4XTsKCiAgICAgICAgICAgICAgICAgICAgc3ByaW50Zih0LCAicG9pbnRzbWF4OiBu
dW1iZXIgb3V0IG9mIHJhbmdlICgyLCVsZCkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
KDk5OTk5TCArIDEpKTsKICAgICAgICAgICAgICAgICAgICBpbnRfZXJyb3IodCwgY190b2tlbik7
CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICBwYXJzZV9lcnJvciA9IDE7CiAgICAgICAgICAgIGludF9lcnJvcihvcHRpb25zX2xpc3Qs
IGNfdG9rZW4pOwogICAgICAgIH0KICAgIH0KCiAgICBzcHJpbnRmKHRlcm1fb3B0aW9ucywgIiVz
ICVzICVzICVkICVzICVzICVzICVkICVzICVkICVzICVkIiwKICAgICAgICAgICAgRklHX3VzZV9j
b2xvciA/ICJjb2xvciIgOiAibW9ub2Nocm9tZSIsCiAgICAgICAgICAgIEZJR19pc19iaWcgPyAi
YmlnIiA6ICJzbWFsbCIsCiAgICAgICAgICAgICJwb2ludHNtYXgiLAogICAgICAgICAgICBGSUdf
cG9seV92ZWNfbWF4ICsgMSwKICAgICAgICAgICAgRklHX3BvcnRyYWl0ID8gInBvcnRyYWl0IiA6
ICJsYW5kc2NhcGUiLAogICAgICAgICAgICBGSUdfaW5jaGVzID8gImluY2hlcyIgOiAibWV0cmlj
IiwKICAgICAgICAgICAgImZvbnRzaXplIiwgKEZJR19mb250X3MgPiAwID8gRklHX2ZvbnRfcyA6
CiAgICAgICAgICAgICAgICAgICAgICAgICAoRklHX2lzX2JpZyA/ICgxNikgOiAoMTApKSksCiAg
ICAgICAgICAgICJ0aGlja25lc3MiLCBGSUdfZGVmYXVsdF90aGlja25lc3MsICJkZXB0aCIsIEZJ
R19kZXB0aCk7CiAgICBpZiAoeHNpemVfdCA+IDAuICYmIHlzaXplX3QgPiAwLikgewogICAgICAg
IGlmICh4c2l6ZV90IC0gKGludCkgeHNpemVfdCA9PSAwLiAmJiB5c2l6ZV90IC0gKGludCkgeXNp
emVfdCA9PSAwLikKICAgICAgICAgICAgc3ByaW50Zih0ZXJtX29wdGlvbnMgKyBzdHJsZW4odGVy
bV9vcHRpb25zKSwKICAgICAgICAgICAgICAgICAgICAiIHNpemUgJWQgJWQiLCAoaW50KSB4c2l6
ZV90LCAoaW50KSB5c2l6ZV90KTsKICAgICAgICBlbHNlCiAgICAgICAgICAgIHNwcmludGYodGVy
bV9vcHRpb25zICsgc3RybGVuKHRlcm1fb3B0aW9ucyksCiAgICAgICAgICAgICAgICAgICAgIiBz
aXplICVmICVmIiwgeHNpemVfdCwgeXNpemVfdCk7CiAgICB9CiAgICBpZiAoIUZJR19pc19iaWcp
IHsKICAgICAgICBpZiAoRklHX2ZvbnRfcyA9PSAwKQogICAgICAgICAgICBGSUdfZm9udF9zID0g
KDEwKTsKICAgICAgICB0ZXJtLT54bWF4ID0gKDUgKiAoMTIwMCkpOwogICAgICAgIHRlcm0tPnlt
YXggPSAoMyAqICgxMjAwKSk7CiAgICAgICAgdGVybS0+dl90aWMgPSAoNSooMTIwMCkvODApOwog
ICAgICAgIHRlcm0tPmhfdGljID0gKDUqKDEyMDApLzgwKTsKICAgICAgICBGSUdfeG9mZiA9ICgo
MTIwMCkvNCk7CiAgICAgICAgRklHX3lvZmYgPSAoKDEyMDApLzQpOwogICAgfSBlbHNlIHsKICAg
ICAgICBpZiAoRklHX2ZvbnRfcyA9PSAwKQogICAgICAgICAgICBGSUdfZm9udF9zID0gKDE2KTsK
ICAgICAgICB0ZXJtLT54bWF4ID0gKDggKiAoMTIwMCkpOwogICAgICAgIHRlcm0tPnltYXggPSAo
NSAqICgxMjAwKSk7CiAgICAgICAgdGVybS0+dl90aWMgPSAoNyooMTIwMCkvODApOwogICAgICAg
IHRlcm0tPmhfdGljID0gKDcqKDEyMDApLzgwKTsKICAgICAgICBGSUdfeG9mZiA9ICgoMTIwMCkv
Mik7CiAgICAgICAgRklHX3lvZmYgPSAoKDEyMDApLzIpOwogICAgfQogICAgaWYgKEZJR19wb3J0
cmFpdCkgewogICAgICAgIHRtYXhfdCA9IHRlcm0tPnhtYXg7CiAgICAgICAgdGVybS0+eG1heCA9
IHRlcm0tPnltYXg7CiAgICAgICAgdGVybS0+eW1heCA9IHRtYXhfdDsKICAgIH0KICAgIGlmICh4
c2l6ZV90ID4gMC4gJiYgeXNpemVfdCA+IDAuKSB7CiAgICAgICAgaWYgKEZJR19pbmNoZXMpIHsK
ICAgICAgICAgICAgdGVybS0+eG1heCA9ICh1bnNpZ25lZCBpbnQpICh4c2l6ZV90ICogKDEyMDAp
KTsKICAgICAgICAgICAgdGVybS0+eW1heCA9ICh1bnNpZ25lZCBpbnQpICh5c2l6ZV90ICogKDEy
MDApKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB0ZXJtLT54bWF4ID0gKHVuc2lnbmVk
IGludCkgKHhzaXplX3QgLyAyLjU0ICogKDEyMDApKTsKICAgICAgICAgICAgdGVybS0+eW1heCA9
ICh1bnNpZ25lZCBpbnQpICh5c2l6ZV90IC8gMi41NCAqICgxMjAwKSk7CiAgICAgICAgfQogICAg
fQogICAgdGVybS0+dl9jaGFyID0gKChGSUdfZm9udF9zKSooMTIwMCkvNzIqMy80KTsKICAgIHRl
cm0tPmhfY2hhciA9ICgoKEZJR19mb250X3MpKigxMjAwKS83MiozLzQpKjYvMTApOwogICAgRklH
X3RoaWNrbmVzcyA9IEZJR19kZWZhdWx0X3RoaWNrbmVzczsKICAgIGlmIChwYXJzZV9lcnJvcikg
ewogICAgICAgIGludF9lcnJvcihvcHRpb25zX2xpc3QsIGNfdG9rZW4pOwogICAgfQp9CgpzdGF0
aWMgdm9pZCBGSUdfaW5pdCgpCnsKICAgIEZJR19wb3N4ID0gRklHX3Bvc3kgPSAwOwogICAgRklH
X3BvbHl2ZWNfc3RhdCA9IEZJR19wb2x5X25ldzsKICAgIEZJR19saW5ldHlwZSgtMSk7CiAgICBG
SUdfanVzdGlmeV90ZXh0KExFRlQpOwogICAgRklHX3RleHRfYW5nbGUoMCk7CgogICAgRklHX2xp
bmUudGFnZ2VkID0gKC0xKTsKICAgIEZJR19saW5lLmRpc3RyaWIgPSAoLTEpOwogICAgRklHX2xp
bmUudHlwZSA9IDE7CiAgICBGSUdfbGluZS5zdHlsZSA9IDA7CiAgICBGSUdfbGluZS50aGlja25l
c3MgPSBGSUdfdGhpY2tuZXNzOwogICAgRklHX2xpbmUuZmlsbF9zdHlsZSA9IC0xOwogICAgRklH
X2xpbmUuZGVwdGggPSBGSUdfbGluZWRlcHRoOwogICAgRklHX2xpbmUucGVuX3N0eWxlID0gMDsK
ICAgIEZJR19saW5lLmZvcl9hcnJvdyA9ICgodm9pZCAqKTApOwogICAgRklHX2xpbmUuYmFja19h
cnJvdyA9ICgodm9pZCAqKTApOwogICAgRklHX2xpbmUuY2FwX3N0eWxlID0gMDsKICAgIEZJR19s
aW5lLmpvaW5fc3R5bGUgPSAwOwogICAgRklHX2xpbmUuc3R5bGVfdmFsID0gMC4wOwogICAgRklH
X2xpbmUucmFkaXVzID0gMDsKICAgIEZJR19saW5lLnBpYyA9ICgodm9pZCAqKTApOwogICAgRklH
X2xpbmUubmV4dCA9ICgodm9pZCAqKTApOwoKICAgIGZwcmludGYoZ3BvdXRmaWxlLCAiJXNcbiVz
XG4lc1xuJXNcbiVkICVkXG4iLAoKCiAgICAgICAgICAgICIjRklHIDMuMSIsCiAgICAgICAgICAg
IChGSUdfcG9ydHJhaXQ/IlBvcnRyYWl0IjoiTGFuZHNjYXBlIiksICJDZW50ZXIiLAogICAgICAg
ICAgICAoRklHX2luY2hlcz8iSW5jaGVzIjoiTWV0cmljIiksICgxMjAwKSwgMik7Cn0KCgpzdGF0
aWMgdm9pZCBGSUdfZ3JhcGhpY3MoKQp7CiAgICBGSUdfcG9zeCA9IEZJR19wb3N5ID0gMDsKICAg
IEZJR19wb2x5dmVjX3N0YXQgPSBGSUdfcG9seV9uZXc7Cgp9CgoKc3RhdGljIHZvaWQgRklHX3Rl
eHQoKQp7CgogICAgRklHX3BvbHlfY2xlYW4oRklHX3BvbHl2ZWNfc3RhdCk7CiAgICBGSUdfcG9z
eCA9IEZJR19wb3N5ID0gMDsKICAgIGZmbHVzaChncG91dGZpbGUpOwp9CiMgNDczICJ0ZXJtL2Zp
Zy50cm0iCnN0YXRpYyB2b2lkIEZJR19saW5ldHlwZShsaW5ldHlwZSkKaW50IGxpbmV0eXBlOwp7
CiAgICBpbnQgbGFzdF9GSUdfdHlwZSA9IEZJR190eXBlOwogICAgaW50IGxhc3RfRklHX3NwYWNp
bmcgPSBGSUdfc3BhY2luZzsKICAgIGludCBsYXN0X0ZJR19jb2xvciA9IEZJR19jb2xvcjsKICAg
IGludCBsYXN0X0ZJR19kZXB0aCA9IEZJR19saW5lZGVwdGg7CiAgICBpbnQgbGFzdF9GSUdfdGhp
Y2tuZXNzID0gRklHX3RoaWNrbmVzczsKCiAgICBGSUdfbGluZWRlcHRoID0gRklHX2RlcHRoOwog
ICAgRklHX3RoaWNrbmVzcyA9IEZJR19jdXJyZW50X2xpbmV3aWR0aCAqIEZJR19kZWZhdWx0X3Ro
aWNrbmVzczsKICAgIGlmIChGSUdfdGhpY2tuZXNzIDwgMSkKICAgICAgICBGSUdfdGhpY2tuZXNz
ID0gMTsKICAgIEZJR19jb2xvciA9ICgtMSk7CgogICAgaWYgKGxpbmV0eXBlIDwgLTIpCiAgICAg
ICAgbGluZXR5cGUgPSAtMjsKCiAgICBzd2l0Y2ggKGxpbmV0eXBlKSB7CiAgICBjYXNlIDA6CiAg
ICBjYXNlIC0yOnsKICAgICAgICAgICAgRklHX3R5cGUgPSAwOwogICAgICAgICAgICBGSUdfc3Bh
Y2luZyA9IDAuMDsKICAgICAgICAgICAgaWYgKEZJR191c2VfY29sb3IpCiAgICAgICAgICAgICAg
ICBGSUdfY29sb3IgPSAwOwogICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICBjYXNlIC0x
OnsKICAgICAgICAgICAgRklHX3R5cGUgPSAyOwogICAgICAgICAgICBGSUdfc3BhY2luZyA9IDQu
MDsKICAgICAgICAgICAgaWYgKEZJR191c2VfY29sb3IpCiAgICAgICAgICAgICAgICBGSUdfY29s
b3IgPSAwOwogICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICBkZWZhdWx0OnsKCiAgICAg
ICAgICAgIEZJR19saW5lZGVwdGggPSBGSUdfZGVwdGggKyBsaW5ldHlwZSAvIDEwMDA7CiAgICAg
ICAgICAgIGxpbmV0eXBlICU9IDEwMDA7CgoKCiAgICAgICAgICAgIGlmICgoRklHX3RoaWNrbmVz
cyA9IGxpbmV0eXBlIC8gMTAwKSA9PSAwKQogICAgICAgICAgICAgICAgRklHX3RoaWNrbmVzcyA9
IEZJR19jdXJyZW50X2xpbmV3aWR0aCAqIEZJR19kZWZhdWx0X3RoaWNrbmVzczsKICAgICAgICAg
ICAgaWYgKEZJR190aGlja25lc3MgPCAxKQogICAgICAgICAgICAgICAgRklHX3RoaWNrbmVzcyA9
IDE7CiAgICAgICAgICAgIGxpbmV0eXBlICU9IDEwMDsKICAgICAgICAgICAgaWYgKEZJR191c2Vf
Y29sb3IpIHsKICAgICAgICAgICAgICAgIEZJR190eXBlID0gKGxpbmV0eXBlID49IDcpOwogICAg
ICAgICAgICAgICAgRklHX2NvbG9yID0gbGluZXR5cGUgJSA3OwogICAgICAgICAgICAgICAgRklH
X3NwYWNpbmcgPSAobGluZXR5cGUgLyA3KSAqIDM7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICAgICBGSUdfdHlwZSA9IGxpbmV0eXBlICUgMiArIDE7CiAgICAgICAgICAgICAgICBG
SUdfc3BhY2luZyA9IChsaW5ldHlwZSArIDEpIC8gMiAqIDM7CiAgICAgICAgICAgIH0KICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgfQogICAgaWYgKEZJR190eXBlICE9IGxhc3RfRklH
X3R5cGUgfHwgRklHX3NwYWNpbmcgIT0gbGFzdF9GSUdfc3BhY2luZyB8fAogICAgICAgIEZJR19j
b2xvciAhPSBsYXN0X0ZJR19jb2xvciB8fCBGSUdfbGluZWRlcHRoICE9IGxhc3RfRklHX2RlcHRo
IHx8CiAgICAgICAgRklHX3RoaWNrbmVzcyAhPSBsYXN0X0ZJR190aGlja25lc3MpCiAgICAgICAg
RklHX3BvbHlfY2xlYW4oRklHX3BvbHl2ZWNfc3RhdCk7Cn0KCnN0YXRpYyB2b2lkIEZJR19tb3Zl
KHgsIHkpCnVuc2lnbmVkIGludCB4LCB5Owp7CiAgICBpbnQgbGFzdF9GSUdfcG9zeCA9IEZJR19w
b3N4OwogICAgaW50IGxhc3RfRklHX3Bvc3kgPSBGSUdfcG9zeTsKICAgIEZJR19wb3N4ID0geDsK
ICAgIEZJR19wb3N5ID0geTsKICAgIGlmIChGSUdfcG9zeCAhPSBsYXN0X0ZJR19wb3N4IHx8IEZJ
R19wb3N5ICE9IGxhc3RfRklHX3Bvc3kpCiAgICAgICAgRklHX3BvbHlfY2xlYW4oRklHX3BvbHl2
ZWNfc3RhdCk7Cn0KCgpzdGF0aWMgdm9pZCBGSUdfdmVjdG9yKHV4LCB1eSkKdW5zaWduZWQgaW50
IHV4LCB1eTsKewogICAgaW50IHggPSB1eCwgeSA9IHV5OwoKICAgIGlmIChGSUdfcG9seXZlY19z
dGF0ICE9IEZJR19wb2x5X3BhcnQpIHsKICAgICAgICBGSUdfbGluZS5wZW5fY29sb3IgPSBGSUdf
Y29sb3I7CiAgICAgICAgRklHX2xpbmUuZmlsbF9jb2xvciA9IEZJR19jb2xvcjsKICAgICAgICBG
SUdfbGluZS5zdHlsZSA9IEZJR190eXBlOwogICAgICAgIEZJR19saW5lLnN0eWxlX3ZhbCA9IEZJ
R19zcGFjaW5nOwogICAgICAgIEZJR19saW5lLmRlcHRoID0gRklHX2xpbmVkZXB0aDsKICAgICAg
ICBGSUdfbGluZS50aGlja25lc3MgPSBGSUdfdGhpY2tuZXNzOwogICAgICAgIEZJR19wb2x5X3Zl
Y19jbnQgPSAwOwoKICAgICAgICBGSUdfcG9pbnRzID0gKEZfcG9pbnQgKikgZ3BfcmVhbGxvYyhG
SUdfcG9pbnRzLCBzaXplb2YoRl9wb2ludCksICJGSUdfcG9pbnRzIik7CiAgICAgICAgRklHX3Bv
aW50c1tGSUdfcG9seV92ZWNfY250XS54ID0gRklHX3hvZmYgKyBGSUdfcG9zeDsKICAgICAgICBG
SUdfcG9pbnRzW0ZJR19wb2x5X3ZlY19jbnRdLnkgPSB0ZXJtLT55bWF4CiAgICAgICAgICAgICsg
RklHX3lvZmYgLSBGSUdfcG9zeTsKCiAgICAgICAgRklHX3BvbHlfdmVjX2NudCA9IDE7CiAgICAg
ICAgRklHX3BvbHl2ZWNfc3RhdCA9IEZJR19wb2x5X3BhcnQ7CiAgICB9CgogICAgRklHX3BvaW50
cyA9IChGX3BvaW50ICopIGdwX3JlYWxsb2MoRklHX3BvaW50cywgKEZJR19wb2x5X3ZlY19jbnQg
KyAxKSAqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoRl9w
b2ludCksICJGSUdfcG9pbnRzIik7CiAgICBGSUdfcG9pbnRzW0ZJR19wb2x5X3ZlY19jbnRdLngg
PSBGSUdfeG9mZiArIHg7CiAgICBGSUdfcG9pbnRzW0ZJR19wb2x5X3ZlY19jbnRdLnkgPSB0ZXJt
LT55bWF4ICsgRklHX3lvZmYgLSB5OwoKICAgIEZJR19wb2x5X3ZlY19jbnQrKzsKICAgIGlmIChG
SUdfcG9seV92ZWNfY250ID4gRklHX3BvbHlfdmVjX21heCkKICAgICAgICBGSUdfcG9seV9jbGVh
bihGSUdfcG9seXZlY19zdGF0KTsKCiAgICBGSUdfcG9zeCA9IHg7CiAgICBGSUdfcG9zeSA9IHk7
Cn0KCgpzdGF0aWMgdm9pZCBGSUdfYXJyb3coc3gsIHN5LCBleCwgZXksIGhlYWQpCnVuc2lnbmVk
IGludCBzeCwgc3k7CnVuc2lnbmVkIGludCBleCwgZXk7ClRCT09MRUFOIGhlYWQ7CnsKICAgIEZJ
R19wb2x5X2NsZWFuKEZJR19wb2x5dmVjX3N0YXQpOwogICAgZnByaW50ZihncG91dGZpbGUsICIl
ZCAlZCAlZCAlZCAlZCAlZCAlZCAlZCAlZCAlOS4zZiAlZCAlZCAlZCAlZCAlZCAlZFxuIiwKICAg
ICAgICAgICAgMiwgRklHX2xpbmUudHlwZSwgRklHX2xpbmUuc3R5bGUsIEZJR19saW5lLnRoaWNr
bmVzcywKICAgICAgICAgICAgRklHX2xpbmUucGVuX2NvbG9yLCBGSUdfbGluZS5maWxsX2NvbG9y
LCBGSUdfbGluZS5kZXB0aCwKICAgICAgICAgICAgRklHX2xpbmUucGVuX3N0eWxlLCBGSUdfbGlu
ZS5maWxsX3N0eWxlLCBGSUdfbGluZS5zdHlsZV92YWwsCiAgICAgICAgICAgIEZJR19saW5lLmpv
aW5fc3R5bGUsIEZJR19saW5lLmNhcF9zdHlsZSwgRklHX2xpbmUucmFkaXVzLAogICAgICAgICAg
ICBoZWFkID8gMSA6IDAsIDAsIDIpOwoKCiAgICBpZiAoaGVhZCkKICAgICAgICBmcHJpbnRmKGdw
b3V0ZmlsZSwgIiVkICVkICUuM2YgJS4zZiAlLjNmXG4iLAogICAgICAgICAgICAgICAgMCwgMCwg
MS4wLAogICAgICAgICAgICAgICAgKGRvdWJsZSkgKHRlcm0tPmhfdGljIC8gMiArIDEpLAogICAg
ICAgICAgICAgICAgKGRvdWJsZSkgdGVybS0+aF90aWMpOwogICAgZnByaW50ZihncG91dGZpbGUs
ICIlZCAlZCAlZCAlZFxuIiwKICAgICAgICAgICAgRklHX3hvZmYgKyBzeCwgRklHX3lvZmYgKyB0
ZXJtLT55bWF4IC0gc3ksCiAgICAgICAgICAgIEZJR195b2ZmICsgZXgsIEZJR195b2ZmICsgdGVy
bS0+eW1heCAtIGV5KTsKCiAgICBGSUdfcG9zeCA9IGV4OwogICAgRklHX3Bvc3kgPSBleTsKfQoK
CnN0YXRpYyB2b2lkIEZJR19wdXRfdGV4dCh4LCB5LCBzdHIpCnVuc2lnbmVkIGludCB4LCB5Owpj
aGFyICpzdHI7CnsKICAgIGlmIChzdHJsZW4oc3RyKSA9PSAwKQogICAgICAgIHJldHVybjsKICAg
IEZJR19wb2x5X2NsZWFuKEZJR19wb2x5dmVjX3N0YXQpOwogICAgeSAtPSB0ZXJtLT52X2NoYXIg
LyAyOwoKICAgIGZwcmludGYoZ3BvdXRmaWxlLCAiJWQgJWQgJWQgJWQgJWQgJWQgJTYuM2YgJTYu
M2YgJWQgJTYuM2YgJTYuM2YgJWQgJWQgJXNcXDAwMVxuIiwKICAgICAgICAgICAgNCwgRklHX2p1
c3RpZnksIEZJR19jb2xvciwgMCwgKC0xKSwKICAgICAgICAgICAgKDApLCAoZmxvYXQpIEZJR19m
b250X3MsCiAgICAgICAgICAgIEZJR19hbmdsZSwgMiwgKGZsb2F0KSB0ZXJtLT52X2NoYXIsCiAg
ICAgICAgICAgIChmbG9hdCkgdGVybS0+aF9jaGFyICogc3RybGVuKHN0ciksCiAgICAgICAgICAg
IEZJR194b2ZmICsgeCwgdGVybS0+eW1heCArIEZJR195b2ZmIC0geSwgc3RyKTsKfQoKc3RhdGlj
IGludCBGSUdfanVzdGlmeV90ZXh0KG1vZGUpCmVudW0gSlVTVElGWSBtb2RlOwp7CiAgICBzd2l0
Y2ggKG1vZGUpIHsKICAgIGNhc2UgTEVGVDoKICAgICAgICBGSUdfanVzdGlmeSA9IDA7CiAgICAg
ICAgYnJlYWs7CiAgICBjYXNlIENFTlRSRToKICAgICAgICBGSUdfanVzdGlmeSA9IDE7CiAgICAg
ICAgYnJlYWs7CiAgICBjYXNlIFJJR0hUOgogICAgICAgIEZJR19qdXN0aWZ5ID0gMjsKICAgICAg
ICBicmVhazsKCiAgICBkZWZhdWx0OgogICAgICAgIEZJR19qdXN0aWZ5ID0gMDsKICAgICAgICBy
ZXR1cm4gKDApOwogICAgICAgIGJyZWFrOwogICAgfQogICAgcmV0dXJuICgxKTsKfQoKc3RhdGlj
IGludCBGSUdfdGV4dF9hbmdsZShhbmcpCmludCBhbmc7CnsKICAgIGlmIChhbmcpCiAgICAgICAg
RklHX2FuZ2xlID0gMy4xNDE1OTI2NTM1ODk3OTMgLyAyLjA7CiAgICBlbHNlCiAgICAgICAgRklH
X2FuZ2xlID0gMC4wOwogICAgcmV0dXJuICgxKTsKfQoKc3RhdGljIHZvaWQgRklHX2xwb2ludCh4
LCB5LCBudW1iZXIpCnVuc2lnbmVkIGludCB4LCB5OwppbnQgbnVtYmVyOwp7CiAgICBGSUdfdHlw
ZSA9IDA7CiAgICBpZiAobnVtYmVyICUgMTAwID49IDQ5ICYmIG51bWJlciAlIDEwMCA8IDk5KSB7
CiAgICAgICAgaW50IHIsIGQsIGgsIHhwYywgeXBjOwogICAgICAgIGludCBsaW5lX2NvbG9yLCBm
aWxsX2NvbG9yLCBmaWxsX3N0eWxlOwogICAgICAgIGludCBjbnVtLCB0bnVtLCBjb2xvciwgZGVw
dGg7CgogICAgICAgIEZJR19wb2x5X2NsZWFuKEZJR19wb2x5dmVjX3N0YXQpOwogICAgICAgIGRl
cHRoID0gRklHX2xpbmVkZXB0aCAtIDE7CiAgICAgICAgaWYgKG51bWJlciA+IDEwMDApCiAgICAg
ICAgICAgIGRlcHRoID0gRklHX2RlcHRoICsgbnVtYmVyIC8gMTAwMCAtIDE7CiAgICAgICAgbnVt
YmVyICU9IDEwMDA7CiAgICAgICAgaWYgKGRlcHRoIDwgMCkKICAgICAgICAgICAgZGVwdGggPSAw
OwogICAgICAgIGlmIChudW1iZXIgPCAxMDApCiAgICAgICAgICAgIGNvbG9yID0gRklHX2NvbG9y
OwogICAgICAgIGVsc2UgaWYgKEZJR191c2VfY29sb3IpCiAgICAgICAgICAgIGNvbG9yID0gbnVt
YmVyIC8gMTAwIC0gMTsKICAgICAgICBlbHNlIGlmIChudW1iZXIgLyAxMDAgPj0gNykKICAgICAg
ICAgICAgY29sb3IgPSA3OwogICAgICAgIGVsc2UKICAgICAgICAgICAgY29sb3IgPSAoLTEpOwog
ICAgICAgIG51bWJlciAlPSAxMDA7CiAgICAgICAgY251bSA9IChudW1iZXIgKyAxKSAlIDEwOwog
ICAgICAgIHRudW0gPSAobnVtYmVyIC0gNDkpIC8gMTA7CiAgICAgICAgaWYgKGNudW0gPCA1KQog
ICAgICAgICAgICBsaW5lX2NvbG9yID0gKEZJR191c2VfY29sb3IgPyAwIDogKC0xKSk7CiAgICAg
ICAgZWxzZQogICAgICAgICAgICBsaW5lX2NvbG9yID0gRklHX2NvbG9yOwogICAgICAgIGZpbGxf
Y29sb3IgPSBjb2xvcjsKICAgICAgICBpZiAoY251bSA9PSAwIHx8IGNudW0gPT0gNSkKICAgICAg
ICAgICAgZmlsbF9zdHlsZSA9IC0xOwogICAgICAgIGVsc2UKICAgICAgICAgICAgZmlsbF9zdHls
ZSA9IChjbnVtICUgNSkgKiA1OwoKICAgICAgICB4cGMgPSBGSUdfeG9mZiArIHg7CiAgICAgICAg
eXBjID0gdGVybS0+eW1heCArIEZJR195b2ZmIC0geTsKCiAgICAgICAgaWYgKHRudW0gPT0gMCkg
ewogICAgICAgICAgICByID0gRklHX2N1cnJlbnRfcG9pbnRzaXplICogdGVybS0+dl9jaGFyIC8g
NCArIDE7CiAgICAgICAgICAgIGZwcmludGYoZ3BvdXRmaWxlLAogICAgICAgICAgICAgICAgICAg
ICIxIDMgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJTYuM2YgMSAwLjAwMCAlZCAlZCAlZCAlZCAlZCAl
ZCAlZCAlZFxuIiwKICAgICAgICAgICAgICAgICAgICBGSUdfdHlwZSwgRklHX3RoaWNrbmVzcywg
bGluZV9jb2xvciwKICAgICAgICAgICAgICAgICAgICBmaWxsX2NvbG9yLCBkZXB0aCwgMCwgZmls
bF9zdHlsZSwgRklHX3NwYWNpbmcsCiAgICAgICAgICAgICAgICAgICAgeHBjLCB5cGMsIHIsIHIs
IHhwYywgeXBjLCB4cGMsIHlwYyAtIHIpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGZw
cmludGYoZ3BvdXRmaWxlLCAiMiAzICVkICVkICVkICVkICVkICVkICVkICU2LjNmIDAgMCAwIDAg
MCAiLAogICAgICAgICAgICAgICAgICAgIEZJR190eXBlLCBGSUdfdGhpY2tuZXNzLCBsaW5lX2Nv
bG9yLAogICAgICAgICAgICAgICAgICAgIGZpbGxfY29sb3IsIGRlcHRoLCAwLCBmaWxsX3N0eWxl
LCBGSUdfc3BhY2luZyk7CgogICAgICAgICAgICBpZiAodG51bSA9PSAxKSB7CiAgICAgICAgICAg
ICAgICBkID0gRklHX2N1cnJlbnRfcG9pbnRzaXplICogdGVybS0+dl9jaGFyIC8gNCArIDE7CiAg
ICAgICAgICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgIjVcblx0JWQgJWQgJWQgJWQgJWQgJWQg
JWQgJWQgJWQgJWRcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgIHhwYyAtIGQsIHlwYyAtIGQs
IHhwYyAtIGQsIHlwYyArIGQsIHhwYyArIGQsIHlwYyArIGQsIHhwYyArIGQsIHlwYyAtIGQsCiAg
ICAgICAgICAgICAgICAgICAgICAgIHhwYyAtIGQsIHlwYyAtIGQpOwogICAgICAgICAgICB9IGVs
c2UgaWYgKHRudW0gPT0gMikgewogICAgICAgICAgICAgICAgZCA9IEZJR19jdXJyZW50X3BvaW50
c2l6ZSAqIHRlcm0tPnZfY2hhciAvIDMgKyAxOwogICAgICAgICAgICAgICAgZnByaW50ZihncG91
dGZpbGUsICI1XG5cdCVkICVkICVkICVkICVkICVkICVkICVkICVkICVkXG4iLAogICAgICAgICAg
ICAgICAgICAgICAgICB4cGMgLSBkLCB5cGMsIHhwYywgeXBjICsgZCwgeHBjICsgZCwgeXBjLCB4
cGMsIHlwYyAtIGQsIHhwYyAtIGQsIHlwYyk7CiAgICAgICAgICAgIH0gZWxzZSBpZiAodG51bSA9
PSAzKSB7CiAgICAgICAgICAgICAgICBkID0gRklHX2N1cnJlbnRfcG9pbnRzaXplICogdGVybS0+
dl9jaGFyIC8gMyArIDE7CiAgICAgICAgICAgICAgICBoID0gZCAqIDQgLyA3OwogICAgICAgICAg
ICAgICAgZnByaW50ZihncG91dGZpbGUsICI0XG5cdCVkICVkICVkICVkICVkICVkICVkICVkXG4i
LAogICAgICAgICAgICAgICAgICAgICAgICB4cGMgLSBkLCB5cGMgKyBoLCB4cGMsIHlwYyAtIDIg
KiBoLCB4cGMgKyBkLCB5cGMgKyBoLCB4cGMgLSBkLCB5cGMgKyBoKTsKICAgICAgICAgICAgfSBl
bHNlIGlmICh0bnVtID09IDQpIHsKICAgICAgICAgICAgICAgIGQgPSBGSUdfY3VycmVudF9wb2lu
dHNpemUgKiB0ZXJtLT52X2NoYXIgLyAzICsgMTsKICAgICAgICAgICAgICAgIGggPSBkICogNCAv
IDc7CiAgICAgICAgICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgIjRcblx0JWQgJWQgJWQgJWQg
JWQgJWQgJWQgJWRcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgIHhwYyAtIGQsIHlwYyAtIGgs
IHhwYywgeXBjICsgMiAqIGgsIHhwYyArIGQsIHlwYyAtIGgsIHhwYyAtIGQsIHlwYyAtIGgpOwog
ICAgICAgICAgICB9CiAgICAgICAgfQogICAgfSBlbHNlCiAgICAgICAgZG9fcG9pbnQoeCwgeSwg
bnVtYmVyKTsKfQoKc3RhdGljIHZvaWQgRklHX3BvaW50c2l6ZShhcmdfcG9pbnRzaXplKQpkb3Vi
bGUgYXJnX3BvaW50c2l6ZTsKewogICAgRklHX2N1cnJlbnRfcG9pbnRzaXplID0gYXJnX3BvaW50
c2l6ZTsKCiAgICBkb19wb2ludHNpemUoYXJnX3BvaW50c2l6ZSAqIEZJR19mb250X3MgLyAoZG91
YmxlKSAoMTApKTsKfQoKc3RhdGljIHZvaWQgRklHX2xpbmV3aWR0aChsaW5ld2lkdGgpCmRvdWJs
ZSBsaW5ld2lkdGg7CnsKICAgIEZJR19jdXJyZW50X2xpbmV3aWR0aCA9IGxpbmV3aWR0aDsKfQoK
c3RhdGljIHZvaWQgRklHX3Jlc2V0KCkKewogICAgRklHX3BvbHlfY2xlYW4oRklHX3BvbHl2ZWNf
c3RhdCk7CiAgICBGSUdfcG9zeCA9IEZJR19wb3N5ID0gMDsKICAgIGZmbHVzaChncG91dGZpbGUp
Owp9CiMgMjgzICJ0ZXJtLmgiIDIKIyAyOTQgInRlcm0uaCIKIyAxICJ0ZXJtL2hwMjYudHJtIiAx
CiMgNTUgInRlcm0vaHAyNi50cm0iCiMgMSAidGVybS9kcml2ZXIuaCIgMQojIDU2ICJ0ZXJtL2hw
MjYudHJtIiAyCgoKCgoKCnN0YXRpYyB2b2lkIEhQMjZfdmVjdG9yICh1bnNpZ25lZCBpbnQgeCwg
dW5zaWduZWQgaW50IHkpOwpzdGF0aWMgdm9pZCBIUDI2X21vdmUgKHVuc2lnbmVkIGludCB4LCB1
bnNpZ25lZCBpbnQgeSk7CnN0YXRpYyB2b2lkIEhQMjZfaW5pdCAodm9pZCk7CnN0YXRpYyB2b2lk
IEhQMjZfZ3JhcGhpY3MgKHZvaWQpOwpzdGF0aWMgdm9pZCBIUDI2X3RleHQgKHZvaWQpOwpzdGF0
aWMgdm9pZCBIUDI2X3Jlc2V0ICh2b2lkKTsKc3RhdGljIGludCBIUDI2X3RleHRfYW5nbGUgKGlu
dCBhbmcpOwpzdGF0aWMgdm9pZCBIUDI2X3B1dF90ZXh0ICh1bnNpZ25lZCBpbnQgeCwgdW5zaWdu
ZWQgaW50IHksIGNoYXIgKnN0cik7CnN0YXRpYyB2b2lkIEhQMjZfbGluZXR5cGUgKGludCBsaW5l
dHlwZSk7CnN0YXRpYyB2b2lkIEhQMjZfbGluZV9hbmRfcG9pbnQgKHVuc2lnbmVkIGludCB4LCB1
bnNpZ25lZCBpbnQgeSwgaW50IG51bWJlcik7CiMgOTAgInRlcm0vaHAyNi50cm0iCnZvaWQgSFAy
Nl9kb19wb2ludCAodW5zaWduZWQgaW50IHgsIHVuc2lnbmVkIGludCB5LCBpbnQgbnVtYmVyKTsK
aW50IGNvbXBhY3Rfc2xvcGUgKGludCB4cFtdLCBpbnQgeXBbXSwgaW50IGlzYV9tb3ZlW10sIGlu
dCAqc3osIGRvdWJsZSBkZWx0YSk7CmludCBjb21wYWN0X2ludCAoaW50IHhwW10sIGludCB5cFtd
LCBpbnQgaXNhX21vdmVbXSwgaW50ICpzaXplKTsKc3RydWN0IF9IUDI2X0J1ZmZlcl9Ob2RlICpC
Tl9jcmVhdGUgKGludCBpbmRleCwgaW50IHNpemUsIGludCBsaW5ldHlwZSk7CnZvaWQgQk5fZGVs
ZXRlIChzdHJ1Y3QgX0hQMjZfQnVmZmVyX05vZGUgKiB0aGVfbm9kZSk7CmludCBIUDI2X2ZsdXNo
IChzdHJ1Y3QgX0hQMjZfQnVmZmVyX05vZGUgKiB0aGVfYnVmZik7CnZvaWQgSFAyNl9oYW5kbGVf
b3ZlcmZsb3cgKHZvaWQpOwoKIyAxICJ0ZXJtL2NvbXBhY3QuYyIgMQojIDQ0ICJ0ZXJtL2NvbXBh
Y3QuYyIKaW50IGNvbXBhY3Rfc2xvcGUoeHAsIHlwLCBpc2FfbW92ZSwgc3osIGRlbHRhKQppbnQg
eHBbXSwgeXBbXSwgaXNhX21vdmVbXTsKaW50ICpzejsKZG91YmxlIGRlbHRhOwp7CiAgICBpbnQg
ZHgsIGR5LCBvbGRfc2l6ZSwgbmV3X2luZGV4LCBpLCBzdGFydDsKICAgIGZsb2F0IHNsb3BlLCBv
bGRfc2xvcGU7CgogICAgb2xkX3NpemUgPSAqc3o7CiAgICBuZXdfaW5kZXggPSAwOwogICAgc3Rh
cnQgPSAwOwogICAgaWYgKHhwWzFdICE9IHhwWzBdKQogICAgICAgIG9sZF9zbG9wZSA9IChmbG9h
dCkgKHlwWzFdIC0geXBbMF0pIC8gKGZsb2F0KSAoeHBbMV0gLSB4cFswXSk7CiAgICBlbHNlCiAg
ICAgICAgb2xkX3Nsb3BlID0gKGZsb2F0KSAoeXBbMV0gLSB5cFswXSkgLyAoZmxvYXQpICgwLjAw
MDAxICsgeHBbMV0gLSB4cFswXSk7CiAgICBmb3IgKGkgPSAyOyBpIDwgb2xkX3NpemU7IGkrKykg
ewogICAgICAgIGR4ID0geHBbaV0gLSB4cFtpIC0gMV07CiAgICAgICAgZHkgPSB5cFtpXSAtIHlw
W2kgLSAxXTsKICAgICAgICBpZiAoZHggIT0gMCkKICAgICAgICAgICAgc2xvcGUgPSAoZmxvYXQp
IGR5IC8gKGZsb2F0KSBkeDsKICAgICAgICBlbHNlCiAgICAgICAgICAgIHNsb3BlID0gKGZsb2F0
KSBkeSAvICgoZmxvYXQpIGR4ICsgMC4wMDAwMSk7CiAgICAgICAgaWYgKCgoKHNsb3BlIC0gb2xk
X3Nsb3BlKSA+PSAwID8gKHNsb3BlIC0gb2xkX3Nsb3BlKSA6IC0oc2xvcGUgLSBvbGRfc2xvcGUp
KSA+IGRlbHRhKSB8fCAoaXNhX21vdmVbaV0pKSB7CiAgICAgICAgICAgIHhwW25ld19pbmRleF0g
PSB4cFtzdGFydF07CiAgICAgICAgICAgIHlwW25ld19pbmRleF0gPSB5cFtzdGFydF07CiAgICAg
ICAgICAgIGlzYV9tb3ZlW25ld19pbmRleF0gPSBpc2FfbW92ZVtzdGFydF07CiAgICAgICAgICAg
IG5ld19pbmRleCsrOwogICAgICAgICAgICBpZiAoc3RhcnQgIT0gaSAtIDEpIHsKICAgICAgICAg
ICAgICAgIHhwW25ld19pbmRleF0gPSB4cFtpIC0gMV07CiAgICAgICAgICAgICAgICB5cFtuZXdf
aW5kZXhdID0geXBbaSAtIDFdOwogICAgICAgICAgICAgICAgaXNhX21vdmVbbmV3X2luZGV4XSA9
IGlzYV9tb3ZlW2kgLSAxXTsKICAgICAgICAgICAgICAgIG5ld19pbmRleCsrOwogICAgICAgICAg
ICB9CiAgICAgICAgICAgIHN0YXJ0ID0gaTsKCiAgICAgICAgICAgIG9sZF9zbG9wZSA9IHNsb3Bl
OwogICAgICAgIH0KICAgIH0KCiAgICB4cFtuZXdfaW5kZXhdID0geHBbb2xkX3NpemUgLSAxXTsK
ICAgIHlwW25ld19pbmRleF0gPSB5cFtvbGRfc2l6ZSAtIDFdOwogICAgaXNhX21vdmVbbmV3X2lu
ZGV4XSA9IGlzYV9tb3ZlW29sZF9zaXplIC0gMV07CiAgICBuZXdfaW5kZXgrKzsKICAgICpzeiA9
IG5ld19pbmRleDsKICAgIHJldHVybiAob2xkX3NpemUgLSAqc3opOwp9CgoKCgoKCmludCBjb21w
YWN0X2ludCh4cCwgeXAsIGlzYV9tb3ZlLCBzaXplKQppbnQgeHBbXSwgeXBbXSwgaXNhX21vdmVb
XSwgKnNpemU7CnsKICAgIGludCBkeCwgZHksIG9sZF9keCwgb2xkX2R5LCBzdGFydCwgaW5kZXgs
IGksIG9sZF9zaXplOwoKICAgIHN0YXJ0ID0gaW5kZXggPSAwOwogICAgb2xkX2R4ID0geHBbMV0g
LSB4cFswXTsKICAgIG9sZF9keSA9IHlwWzFdIC0geXBbMF07CiAgICBmb3IgKGkgPSAyOyBpIDwg
KnNpemU7IGkrKykgewogICAgICAgIGR4ID0geHBbaV0gLSB4cFtpIC0gMV07CiAgICAgICAgZHkg
PSB5cFtpXSAtIHlwW2kgLSAxXTsKICAgICAgICBpZiAoKCgoZHggLSBvbGRfZHgpID49IDAgPyAo
ZHggLSBvbGRfZHgpIDogLShkeCAtIG9sZF9keCkpICsgKChkeSAtIG9sZF9keSkgPj0gMCA/IChk
eSAtIG9sZF9keSkgOiAtKGR5IC0gb2xkX2R5KSkgIT0gMCkgfHwgKGlzYV9tb3ZlW2ldKSkgewoK
ICAgICAgICAgICAgeHBbaW5kZXhdID0geHBbc3RhcnRdOwogICAgICAgICAgICB5cFtpbmRleF0g
PSB5cFtzdGFydF07CiAgICAgICAgICAgIGlzYV9tb3ZlW2luZGV4XSA9IGlzYV9tb3ZlW3N0YXJ0
XTsKICAgICAgICAgICAgaW5kZXgrKzsKICAgICAgICAgICAgaWYgKHN0YXJ0ICE9IGkgLSAxKSB7
CiAgICAgICAgICAgICAgICB4cFtpbmRleF0gPSB4cFtpIC0gMV07CiAgICAgICAgICAgICAgICB5
cFtpbmRleF0gPSB5cFtpIC0gMV07CiAgICAgICAgICAgICAgICBpc2FfbW92ZVtpbmRleF0gPSBp
c2FfbW92ZVtpIC0gMV07CiAgICAgICAgICAgICAgICBpbmRleCsrOwogICAgICAgICAgICB9CiAg
ICAgICAgICAgIHN0YXJ0ID0gaTsKICAgICAgICAgICAgb2xkX2R4ID0gZHg7CiAgICAgICAgICAg
IG9sZF9keSA9IGR5OwogICAgICAgIH0KICAgIH0KCiAgICB4cFtpbmRleF0gPSB4cFsqc2l6ZSAt
IDFdOwogICAgeXBbaW5kZXhdID0geXBbKnNpemUgLSAxXTsKICAgIGlzYV9tb3ZlW2luZGV4XSA9
IGlzYV9tb3ZlWypzaXplIC0gMV07CiAgICBpbmRleCsrOwogICAgb2xkX3NpemUgPSAqc2l6ZTsK
ICAgICpzaXplID0gaW5kZXg7CiAgICByZXR1cm4gKG9sZF9zaXplIC0gKnNpemUpOwp9CiMgOTkg
InRlcm0vaHAyNi50cm0iIDIKCnR5cGVkZWYgc3RydWN0IF9IUDI2X0J1ZmZlcl9Ob2RlIHsKICAg
IGludCBpbmRleDsKICAgIGludCBzaXplOwogICAgaW50IG5leHQ7CiAgICBpbnQgbGluZXR5cGU7
CiAgICBpbnQgKng7CiAgICBpbnQgKnk7CiAgICBUQk9PTEVBTiAqaXNhX21vdmU7Cn0gSFAyNl9C
dWZmZXJfTm9kZTsKCgpIUDI2X0J1ZmZlcl9Ob2RlICpCTl9jcmVhdGUoaW5kZXgsIHNpemUsIGxp
bmV0eXBlKQppbnQgaW5kZXgsIHNpemUsIGxpbmV0eXBlOwp7CiAgICBIUDI2X0J1ZmZlcl9Ob2Rl
ICp0aGVfbm9kZTsKICAgIHRoZV9ub2RlID0gKEhQMjZfQnVmZmVyX05vZGUgKikgbWFsbG9jKHNp
emVvZihIUDI2X0J1ZmZlcl9Ob2RlKSk7CiAgICB0aGVfbm9kZS0+aW5kZXggPSBpbmRleDsKICAg
IHRoZV9ub2RlLT5saW5ldHlwZSA9IGxpbmV0eXBlOwogICAgdGhlX25vZGUtPnNpemUgPSBzaXpl
OwogICAgdGhlX25vZGUtPm5leHQgPSAwOwogICAgdGhlX25vZGUtPnggPSAoaW50ICopIGNhbGxv
Yyh0aGVfbm9kZS0+c2l6ZSwgc2l6ZW9mKGludCkpOwogICAgdGhlX25vZGUtPnkgPSAoaW50ICop
IGNhbGxvYyh0aGVfbm9kZS0+c2l6ZSwgc2l6ZW9mKGludCkpOwogICAgdGhlX25vZGUtPmlzYV9t
b3ZlID0gKFRCT09MRUFOICopIGNhbGxvYyh0aGVfbm9kZS0+c2l6ZSwgc2l6ZW9mKFRCT09MRUFO
KSk7CiAgICBpZiAodGhlX25vZGUtPnggPT0gKCh2b2lkICopMCkKICAgICAgICB8fCB0aGVfbm9k
ZS0+eSA9PSAoKHZvaWQgKikwKQogICAgICAgIHx8IHRoZV9ub2RlLT5pc2FfbW92ZSA9PSAoKHZv
aWQgKikwKSkKICAgICAgICByZXR1cm4gKCgodm9pZCAqKTApKTsKICAgIGVsc2UKICAgICAgICBy
ZXR1cm4gKHRoZV9ub2RlKTsKfQoKCnZvaWQgQk5fZGVsZXRlKHRoZV9ub2RlKQpIUDI2X0J1ZmZl
cl9Ob2RlICp0aGVfbm9kZTsKewogICAgZnJlZSh0aGVfbm9kZS0+eCk7CiAgICBmcmVlKHRoZV9u
b2RlLT55KTsKICAgIGZyZWUodGhlX25vZGUtPmlzYV9tb3ZlKTsKICAgIGZyZWUodGhlX25vZGUp
Owp9CgoKCkhQMjZfQnVmZmVyX05vZGUgKkhQMjZfZ251X21hcFsxMl07CkhQMjZfQnVmZmVyX05v
ZGUgKkhQMjZfYnVmZjsKaW50IEhQMjZfcGVuX3g7CmludCBIUDI2X3Blbl95OwppbnQgSFAyNl9h
bmdsZTsKaW50IEhQMjZfY3Vyc29yX3g7CmludCBIUDI2X2N1cnNvcl95OwpUQk9PTEVBTiBIUDI2
X2luX3RleHQ7CmludCBIUDI2X2xpbmV0eXBlX2N1cnJlbnQ7CmludCBIUDI2X3JlZHVjdGlvbl9p
bnQ7CmludCBIUDI2X3JlZHVjdGlvbl9zbG9wZTsKaW50IEhQMjZfb3ZlcmZsb3dzOwppbnQgSFAy
Nl9ub3BfbW92ZTsKaW50IEhQMjZfbm9wX3ZlY3Q7CmludCBIUDI2X25vcF9saW5lOwojIDE3NiAi
dGVybS9ocDI2LnRybSIKY2hhciBIUDI2X2Jpbl9zaG9ydF90YWJsZVszMl0gPQp7CiAgICAnMCcs
ICcxJywgJzInLCAnMycsICc0JywgJzUnLCAnNicsICc3JywgJzgnLCAnOScsICc6JywgJzsnLCAn
PCcsICc9JywgJz4nLAogICAgJz8nLCAnICcsICchJywgJyInLCAnIycsICckJywgJyUnLCAnJics
ICdcJycsICcoJywgJyknLCAnKicsICcrJywgJywnLCAnLScsCiAgICAnLicsICcvJwp9OwojIDE5
MSAidGVybS9ocDI2LnRybSIKY2hhciBIUDI2X2Jpbl90YWJsZVszMl0gPQp7CiAgICAnICcsICch
JywgJyInLCAnIycsICckJywgJyUnLCAnJicsICdcJycsICcoJywgJyknLCAnKicsICcrJywgJywn
LCAnLScsCiAgICAnLicsICcvJywgJzAnLCAnMScsICcyJywgJzMnLCAnNCcsICc1JywgJzYnLCAn
NycsICc4JywgJzknLCAnOicsICc7JywgJzwnLAogICAgJz0nLCAnPicsICc/Jwp9OwojIDIxNSAi
dGVybS9ocDI2LnRybSIKaW50IEhQMjZfZmx1c2godGhlX2J1ZmYpCkhQMjZfQnVmZmVyX05vZGUg
KnRoZV9idWZmOwp7CiAgICBpbnQgaSwgZGVsdGFfeCwgZGVsdGFfeSwgaGFsZl9keCwgaGFsZl9k
eTsKICAgIGludCAqYnVmZl94LCAqYnVmZl95OwogICAgVEJPT0xFQU4gKmlzYV9tb3ZlOwogICAg
VEJPT0xFQU4gYmluX3Nob3J0OwoKICAgIGlmICh0aGVfYnVmZi0+bmV4dCA9PSAwKQogICAgICAg
IHJldHVybiAoMCk7CgogICAgYnVmZl94ID0gdGhlX2J1ZmYtPng7CiAgICBidWZmX3kgPSB0aGVf
YnVmZi0+eTsKICAgIGlzYV9tb3ZlID0gdGhlX2J1ZmYtPmlzYV9tb3ZlOwogICAgaWYgKEhQMjZf
aW5fdGV4dCkgewogICAgICAgIGZwdXRzKCJcMDMzKmRUIiwgZ3BvdXRmaWxlKTsKICAgICAgICBI
UDI2X2luX3RleHQgPSAwOwogICAgfQogICAgaWYgKEhQMjZfbGluZXR5cGVfY3VycmVudCAhPSB0
aGVfYnVmZi0+bGluZXR5cGUKICAgICAgICAmJiAodGhlX2J1ZmYtPm5leHQgPiAxIHx8ICFpc2Ff
bW92ZVswXSkpIHsKICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgIlwwMzMqbSVkQiIsIHRoZV9i
dWZmLT5saW5ldHlwZSk7CiAgICAgICAgSFAyNl9saW5ldHlwZV9jdXJyZW50ID0gdGhlX2J1ZmYt
PmxpbmV0eXBlOwogICAgfQoKICAgIGlmICh0aGVfYnVmZi0+bmV4dCA+IDMwICYmIHRoZV9idWZm
LT5saW5ldHlwZSAhPSAxMSkgewoKICAgICAgICBIUDI2X3JlZHVjdGlvbl9zbG9wZSArPSBjb21w
YWN0X3Nsb3BlKGJ1ZmZfeCwgYnVmZl95LCBpc2FfbW92ZSwgJih0aGVfYnVmZi0+bmV4dCksIDAu
MSk7CiAgICB9CgogICAgZnB1dHMoIlwwMzMqcCIsIGdwb3V0ZmlsZSk7CgogICAgZGVsdGFfeCA9
IGJ1ZmZfeFswXSAtIEhQMjZfcGVuX3g7CiAgICBkZWx0YV95ID0gYnVmZl95WzBdIC0gSFAyNl9w
ZW5feTsKICAgIGlmICgoKGRlbHRhX3g+LTE3KSYmKGRlbHRhX3k+LTE3KSYmKGRlbHRhX3g8MTYp
JiYoZGVsdGFfeTwxNikpKSB7CiAgICAgICAgZnB1dGMoJ2onLCBncG91dGZpbGUpOwogICAgICAg
IGJpbl9zaG9ydCA9IDE7CiAgICB9IGVsc2UgewogICAgICAgIGZwdXRjKCdpJywgZ3BvdXRmaWxl
KTsKICAgICAgICBiaW5fc2hvcnQgPSAwOwogICAgfQoKICAgIGZvciAoaSA9IDA7IGkgPCB0aGVf
YnVmZi0+bmV4dDsgaSsrKSB7CiAgICAgICAgaWYgKGkgPiAwKSB7CiAgICAgICAgICAgIGRlbHRh
X3ggPSBidWZmX3hbaV0gLSBidWZmX3hbaSAtIDFdOwogICAgICAgICAgICBkZWx0YV95ID0gYnVm
Zl95W2ldIC0gYnVmZl95W2kgLSAxXTsKICAgICAgICB9CiAgICAgICAgaWYgKChkZWx0YV94ID09
IDApICYmIChkZWx0YV95ID09IDApKSB7CiAgICAgICAgICAgIGlmIChpID4gMCAmJiAhaXNhX21v
dmVbaSAtIDFdICYmICFpc2FfbW92ZVtpXSkgewoKICAgICAgICAgICAgICAgIEhQMjZfbm9wX3Zl
Y3QrKzsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9IGVsc2UgaWYgKGlz
YV9tb3ZlW2ldKSB7CgogICAgICAgICAgICAgICAgSFAyNl9ub3BfbW92ZSsrOwogICAgICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgaWYgKGkgPiAwCiAg
ICAgICAgICAgICAgICAgICAmJiBpICsgMSA8IHRoZV9idWZmLT5uZXh0CiAgICAgICAgICAgICAg
ICAgICAmJiBpc2FfbW92ZVtpXQogICAgICAgICAgICAgICAgICAgJiYgaXNhX21vdmVbaSArIDFd
KSB7CgogICAgICAgICAgICBIUDI2X25vcF9tb3ZlKys7CiAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgIH0gZWxzZSBpZiAoISgoZGVsdGFfeD4tMTcpJiYoZGVsdGFfeT4tMTcpJiYoZGVsdGFf
eDwxNikmJihkZWx0YV95PDE2KSkKICAgICAgICAgICAgICAgICAgICYmIGkgPiAwCiAgICAgICAg
ICAgICAgICAgICAmJiBpICsgMiA8IHRoZV9idWZmLT5uZXh0CiAgICAgICAgICAgICAgICAgICAm
JiBpc2FfbW92ZVtpXQogICAgICAgICAgICAgICAgICAgJiYgIWlzYV9tb3ZlW2kgKyAxXQogICAg
ICAgICAgICAgICAgICAgJiYgaXNhX21vdmVbaSArIDJdCiAgICAgICAgICAgICAgICAgICAmJiAo
KGJ1ZmZfeFtpICsgMV0gLSBidWZmX3hbaSAtIDFdPi0xNykmJihidWZmX3lbaSArIDFdIC0gYnVm
Zl95W2kgLSAxXT4tMTcpJiYoYnVmZl94W2kgKyAxXSAtIGJ1ZmZfeFtpIC0gMV08MTYpJiYoYnVm
Zl95W2kgKyAxXSAtIGJ1ZmZfeVtpIC0gMV08MTYpKSkgewogICAgICAgICAgICBidWZmX3hbaV0g
Xj0gYnVmZl94W2kgKyAxXTsgYnVmZl94W2kgKyAxXSBePSBidWZmX3hbaV07IGJ1ZmZfeFtpXSBe
PSBidWZmX3hbaSArIDFdOzsKICAgICAgICAgICAgYnVmZl95W2ldIF49IGJ1ZmZfeVtpICsgMV07
IGJ1ZmZfeVtpICsgMV0gXj0gYnVmZl95W2ldOyBidWZmX3lbaV0gXj0gYnVmZl95W2kgKyAxXTs7
CgogICAgICAgICAgICBkZWx0YV94ID0gYnVmZl94W2ldIC0gYnVmZl94W2kgLSAxXTsKICAgICAg
ICAgICAgZGVsdGFfeSA9IGJ1ZmZfeVtpXSAtIGJ1ZmZfeVtpIC0gMV07CiAgICAgICAgfQogICAg
ICAgIGlmICgoKGRlbHRhX3g+LTE3KSYmKGRlbHRhX3k+LTE3KSYmKGRlbHRhX3g8MTYpJiYoZGVs
dGFfeTwxNikpKSB7CiAgICAgICAgICAgIGlmICghYmluX3Nob3J0KSB7CiAgICAgICAgICAgICAg
ICBmcHV0YygnaicsIGdwb3V0ZmlsZSk7CiAgICAgICAgICAgICAgICBiaW5fc2hvcnQgPSAxOwog
ICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChpc2FfbW92ZVtpXSkKICAgICAgICAgICAgICAg
IGZwdXRjKCdhJywgZ3BvdXRmaWxlKTsKICAgICAgICAgICAgZnB1dGMoKEhQMjZfYmluX3Nob3J0
X3RhYmxlW2RlbHRhX3grMTZdKSwgZ3BvdXRmaWxlKTsKICAgICAgICAgICAgZnB1dGMoKEhQMjZf
YmluX3Nob3J0X3RhYmxlW2RlbHRhX3krMTZdKSwgZ3BvdXRmaWxlKTsKICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICBoYWxmX2R4ID0gKGRlbHRhX3ggKyAoZGVsdGFfeCA+IDAgPyAxIDogLTEp
KSAvIDI7CiAgICAgICAgICAgIGhhbGZfZHkgPSAoZGVsdGFfeSArIChkZWx0YV95ID4gMCA/IDEg
OiAtMSkpIC8gMjsKICAgICAgICAgICAgaWYgKGJpbl9zaG9ydCAmJiAoKGhhbGZfZHg+LTE3KSYm
KGhhbGZfZHk+LTE3KSYmKGhhbGZfZHg8MTYpJiYoaGFsZl9keTwxNikpKSB7CiAgICAgICAgICAg
ICAgICBpZiAoaXNhX21vdmVbaV0pCiAgICAgICAgICAgICAgICAgICAgZnB1dGMoJ2EnLCBncG91
dGZpbGUpOwogICAgICAgICAgICAgICAgZnB1dGMoKEhQMjZfYmluX3Nob3J0X3RhYmxlW2hhbGZf
ZHgrMTZdKSwgZ3BvdXRmaWxlKTsKICAgICAgICAgICAgICAgIGZwdXRjKChIUDI2X2Jpbl9zaG9y
dF90YWJsZVtoYWxmX2R5KzE2XSksIGdwb3V0ZmlsZSk7CiAgICAgICAgICAgICAgICBpZiAoaXNh
X21vdmVbaV0pCiAgICAgICAgICAgICAgICAgICAgZnB1dGMoJ2EnLCBncG91dGZpbGUpOwogICAg
ICAgICAgICAgICAgZnB1dGMoKEhQMjZfYmluX3Nob3J0X3RhYmxlW2RlbHRhX3ggLSBoYWxmX2R4
KzE2XSksIGdwb3V0ZmlsZSk7CiAgICAgICAgICAgICAgICBmcHV0YygoSFAyNl9iaW5fc2hvcnRf
dGFibGVbZGVsdGFfeSAtIGhhbGZfZHkrMTZdKSwgZ3BvdXRmaWxlKTsKICAgICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgICAgIGlmIChiaW5fc2hvcnQpIHsKICAgICAgICAgICAgICAgICAg
ICBiaW5fc2hvcnQgPSAwOwogICAgICAgICAgICAgICAgICAgIGZwdXRjKCdpJywgZ3BvdXRmaWxl
KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChpc2FfbW92ZVtpXSkKICAg
ICAgICAgICAgICAgICAgICBmcHV0YygnYScsIGdwb3V0ZmlsZSk7CiAgICAgICAgICAgICAgICBm
cHV0YygoSFAyNl9iaW5fdGFibGVbYnVmZl94W2ldPj41XSksIGdwb3V0ZmlsZSk7CiAgICAgICAg
ICAgICAgICBmcHV0YygoSFAyNl9iaW5fdGFibGVbYnVmZl94W2ldICYgMzFdKSwgZ3BvdXRmaWxl
KTsKICAgICAgICAgICAgICAgIGZwdXRjKChIUDI2X2Jpbl90YWJsZVtidWZmX3lbaV0+PjVdKSwg
Z3BvdXRmaWxlKTsKICAgICAgICAgICAgICAgIGZwdXRjKChIUDI2X2Jpbl90YWJsZVtidWZmX3lb
aV0gJiAzMV0pLCBncG91dGZpbGUpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKCiAg
ICBmcHV0YygnWicsIGdwb3V0ZmlsZSk7CgogICAgSFAyNl9wZW5feCA9IGJ1ZmZfeFt0aGVfYnVm
Zi0+bmV4dCAtIDFdOwogICAgSFAyNl9wZW5feSA9IGJ1ZmZfeVt0aGVfYnVmZi0+bmV4dCAtIDFd
OwogICAgdGhlX2J1ZmYtPm5leHQgPSAwOwogICAgcmV0dXJuICgxKTsKfQoKdm9pZCBIUDI2X2hh
bmRsZV9vdmVyZmxvdygpCnsKICAgIEhQMjZfQnVmZmVyX05vZGUgKmJpZ2dlciwgKm9sZDsKICAg
IGludCB4LCB5OwogICAgeCA9IChIUDI2X2J1ZmYtPngpW0hQMjZfYnVmZi0+bmV4dCAtIDFdOwog
ICAgeSA9IChIUDI2X2J1ZmYtPnkpW0hQMjZfYnVmZi0+bmV4dCAtIDFdOwogICAgSFAyNl9mbHVz
aChIUDI2X2J1ZmYpOwogICAgYmlnZ2VyID0gQk5fY3JlYXRlKEhQMjZfYnVmZi0+aW5kZXgsIEhQ
MjZfYnVmZi0+c2l6ZSAqIDIsCiAgICAgICAgICAgICAgICAgICAgICAgSFAyNl9idWZmLT5saW5l
dHlwZSk7CiAgICBpZiAoYmlnZ2VyICE9ICgodm9pZCAqKTApKSB7CiAgICAgICAgb2xkID0gSFAy
Nl9idWZmOwogICAgICAgIEhQMjZfZ251X21hcFtiaWdnZXItPmluZGV4XSA9IGJpZ2dlcjsKCiAg
ICAgICAgaWYgKGJpZ2dlci0+aW5kZXggPT0gMCkgewogICAgICAgICAgICBIUDI2X2dudV9tYXBb
MV0gPSBiaWdnZXI7CiAgICAgICAgICAgIEhQMjZfZ251X21hcFszXSA9IGJpZ2dlcjsKICAgICAg
ICB9CiAgICAgICAgSFAyNl9idWZmID0gYmlnZ2VyOwogICAgICAgIEJOX2RlbGV0ZShvbGQpOwog
ICAgfQogICAgKEhQMjZfYnVmZi0+eClbMF0gPSB4OwogICAgKEhQMjZfYnVmZi0+eSlbMF0gPSB5
OwogICAgKEhQMjZfYnVmZi0+aXNhX21vdmUpWzBdID0gMTsKICAgIEhQMjZfYnVmZi0+bmV4dCA9
IDE7CiAgICBIUDI2X292ZXJmbG93cysrOwp9CgoKc3RhdGljIHZvaWQgSFAyNl92ZWN0b3IoeCwg
eSkKdW5zaWduZWQgaW50IHgsIHk7CnsKICAgIGlmIChIUDI2X2J1ZmYtPm5leHQgPiAyCiAgICAg
ICAgJiYgeCA9PSAoSFAyNl9idWZmLT54KVtIUDI2X2J1ZmYtPm5leHQgLSAxXQogICAgICAgICYm
IHkgPT0gKEhQMjZfYnVmZi0+eSlbSFAyNl9idWZmLT5uZXh0IC0gMV0KICAgICAgICAmJiAhKEhQ
MjZfYnVmZi0+aXNhX21vdmUpW0hQMjZfYnVmZi0+bmV4dCAtIDFdKSB7CiAgICAgICAgSFAyNl9u
b3BfdmVjdCsrOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIGlmIChIUDI2X2J1ZmYtPm5leHQg
PT0gSFAyNl9idWZmLT5zaXplKQogICAgICAgIEhQMjZfaGFuZGxlX292ZXJmbG93KCk7CgogICAg
KEhQMjZfYnVmZi0+eClbSFAyNl9idWZmLT5uZXh0XSA9IHg7CiAgICAoSFAyNl9idWZmLT55KVtI
UDI2X2J1ZmYtPm5leHRdID0geTsKICAgIChIUDI2X2J1ZmYtPmlzYV9tb3ZlKVtIUDI2X2J1ZmYt
Pm5leHRdID0gMDsKICAgIEhQMjZfYnVmZi0+bmV4dCsrOwp9CgoKc3RhdGljIHZvaWQgSFAyNl9t
b3ZlKHgsIHkpCnVuc2lnbmVkIGludCB4LCB5Owp7CiAgICBpZiAoSFAyNl9idWZmLT5uZXh0ID4g
MCkgewogICAgICAgIGlmICgoKEhQMjZfYnVmZi0+eClbSFAyNl9idWZmLT5uZXh0IC0gMV0gPT0g
eCkKICAgICAgICAgICAgJiYgKChIUDI2X2J1ZmYtPnkpW0hQMjZfYnVmZi0+bmV4dCAtIDFdID09
IHkpKSB7CgogICAgICAgICAgICBIUDI2X25vcF9tb3ZlKys7CiAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICB9IGVsc2UgaWYgKChIUDI2X2J1ZmYtPmlzYV9tb3ZlKVtIUDI2X2J1ZmYtPm5leHQg
LSAxXSkgewoKICAgICAgICAgICAgKEhQMjZfYnVmZi0+eClbSFAyNl9idWZmLT5uZXh0IC0gMV0g
PSB4OwogICAgICAgICAgICAoSFAyNl9idWZmLT55KVtIUDI2X2J1ZmYtPm5leHQgLSAxXSA9IHk7
CiAgICAgICAgICAgIEhQMjZfbm9wX21vdmUrKzsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
IH0KICAgIH0KICAgIGlmIChIUDI2X2J1ZmYtPm5leHQgPT0gSFAyNl9idWZmLT5zaXplKQogICAg
ICAgIEhQMjZfaGFuZGxlX292ZXJmbG93KCk7CiAgICAoSFAyNl9idWZmLT54KVtIUDI2X2J1ZmYt
Pm5leHRdID0geDsKICAgIChIUDI2X2J1ZmYtPnkpW0hQMjZfYnVmZi0+bmV4dF0gPSB5OwogICAg
KEhQMjZfYnVmZi0+aXNhX21vdmUpW0hQMjZfYnVmZi0+bmV4dF0gPSAxOwogICAgSFAyNl9idWZm
LT5uZXh0Kys7CiAgICByZXR1cm47Cn0KCnN0YXRpYyB2b2lkIEhQMjZfaW5pdCgpCnsKICAgIEhQ
MjZfZ251X21hcFstMiArIDJdID0gQk5fY3JlYXRlKDAsIDIwNDgsIDcpOwogICAgSFAyNl9nbnVf
bWFwWy0xICsgMl0gPSBIUDI2X2dudV9tYXBbLTIgKyAyXTsKICAgIEhQMjZfZ251X21hcFswICsg
Ml0gPSBCTl9jcmVhdGUoMiwgMzA3MiwgMSk7CiAgICBIUDI2X2dudV9tYXBbMSArIDJdID0gSFAy
Nl9nbnVfbWFwWy0yICsgMl07CiAgICBIUDI2X2dudV9tYXBbMiArIDJdID0gQk5fY3JlYXRlKDQs
IDEwMjQsIDUpOwogICAgSFAyNl9nbnVfbWFwWzMgKyAyXSA9IEJOX2NyZWF0ZSg1LCAyNTYsIDYp
OwogICAgSFAyNl9nbnVfbWFwWzQgKyAyXSA9IEJOX2NyZWF0ZSg2LCAyNTYsIDgpOwogICAgSFAy
Nl9nbnVfbWFwWzUgKyAyXSA9IEJOX2NyZWF0ZSg3LCAxMjgsIDkpOwogICAgSFAyNl9nbnVfbWFw
WzYgKyAyXSA9IEJOX2NyZWF0ZSg4LCAxMjgsIDEwKTsKICAgIEhQMjZfZ251X21hcFs3ICsgMl0g
PSBCTl9jcmVhdGUoOSwgNjQsIDYpOwogICAgSFAyNl9nbnVfbWFwWzggKyAyXSA9IEJOX2NyZWF0
ZSgxMCwgNjQsIDQpOwogICAgSFAyNl9nbnVfbWFwWzkgKyAyXSA9IEJOX2NyZWF0ZSgxMSwgNTEy
LCAxMSk7CiAgICBIUDI2X2J1ZmYgPSBIUDI2X2dudV9tYXBbMTBdOwogICAgSFAyNl9saW5ldHlw
ZV9jdXJyZW50ID0gMDsKICAgIEhQMjZfYW5nbGUgPSAxOwogICAgZnB1dHMoIlwwMzMqbXAxbTJh
MlEiLCBncG91dGZpbGUpOwoKCgoKCiAgICBmZmx1c2goZ3BvdXRmaWxlKTsKfQoKCnN0YXRpYyB2
b2lkIEhQMjZfZ3JhcGhpY3MoKQp7CiAgICBmcHV0cygiXDAzMypkYWZsc0MiLCBncG91dGZpbGUp
OwoKCgoKCgoKICAgIEhQMjZfcGVuX3ggPSBIUDI2X3Blbl95ID0gLTIwMDsKICAgIEhQMjZfY3Vy
c29yX3ggPSBIUDI2X2N1cnNvcl95ID0gODAwOwogICAgSFAyNl9pbl90ZXh0ID0gMTsKCiAgICBI
UDI2X3JlZHVjdGlvbl9pbnQgPSAwOwogICAgSFAyNl9yZWR1Y3Rpb25fc2xvcGUgPSAwOwogICAg
SFAyNl9ub3BfbW92ZSA9IDA7CiAgICBIUDI2X25vcF92ZWN0ID0gMDsKICAgIEhQMjZfbm9wX2xp
bmUgPSAwOwogICAgSFAyNl9vdmVyZmxvd3MgPSAwOwp9CgoKc3RhdGljIHZvaWQgSFAyNl90ZXh0
KCkKewogICAgaW50IGksIGosIGN1cnI7CgoKICAgIGZvciAoaSA9IDA7IGkgPCAxMjsgaSsrKQog
ICAgICAgIGlmICgoSFAyNl9nbnVfbWFwW2ldKS0+bGluZXR5cGUgPT0gSFAyNl9saW5ldHlwZV9j
dXJyZW50KQogICAgICAgICAgICBIUDI2X2ZsdXNoKEhQMjZfZ251X21hcFtpXSk7CgogICAgZm9y
IChpID0gMDsgaSA8IDEyOyBpKyspIHsKICAgICAgICBIUDI2X2ZsdXNoKEhQMjZfZ251X21hcFtp
XSk7CiAgICAgICAgY3VyciA9IEhQMjZfZ251X21hcFtpXS0+bGluZXR5cGU7CiAgICAgICAgZm9y
IChqID0gMDsgaiA8IDEyOyBqKyspCiAgICAgICAgICAgIGlmICgoSFAyNl9nbnVfbWFwW2pdKS0+
bGluZXR5cGUgPT0gY3VycikKICAgICAgICAgICAgICAgIEhQMjZfZmx1c2goSFAyNl9nbnVfbWFw
W2pdKTsKICAgIH0KICAgIGZwdXRzKCJcMDMzKmRlVCIsIGdwb3V0ZmlsZSk7CgoKCiAgICBmZmx1
c2goZ3BvdXRmaWxlKTsKIyA1MDYgInRlcm0vaHAyNi50cm0iCn0KCnN0YXRpYyB2b2lkIEhQMjZf
cmVzZXQoKQp7CiAgICBpbnQgaTsKICAgIGZvciAoaSA9IDI7IGkgPCAxMjsgaSsrKQogICAgICAg
IEJOX2RlbGV0ZShIUDI2X2dudV9tYXBbaV0pOwp9CgpzdGF0aWMgaW50IEhQMjZfdGV4dF9hbmds
ZShhbmcpCmludCBhbmc7CnsKICAgIEhQMjZfYW5nbGUgPSBhbmcgKyAxOwogICAgZnByaW50Zihn
cG91dGZpbGUsICJcMDMzKm0lZE4iLCBIUDI2X2FuZ2xlKTsKICAgIHJldHVybiAoMSk7Cn0KCgpz
dGF0aWMgdm9pZCBIUDI2X3B1dF90ZXh0KHgsIHksIHN0cikKdW5zaWduZWQgaW50IHgsIHk7CmNo
YXIgKnN0cjsKewogICAgY2hhciBhYnNfc3RyWzEwXSwgcmVsX3N0clsxMF07CgogICAgaWYgKCFz
dHJsZW4oc3RyKSkKICAgICAgICByZXR1cm47CiAgICBlbHNlIHsKICAgICAgICBmcHV0cygiXDAz
MypkIiwgZ3BvdXRmaWxlKTsKICAgICAgICBpZiAoIUhQMjZfaW5fdGV4dCkgewogICAgICAgICAg
ICBmcHV0YygncycsIGdwb3V0ZmlsZSk7CiAgICAgICAgICAgIEhQMjZfaW5fdGV4dCA9IDE7CiAg
ICAgICAgfQogICAgICAgIHNwcmludGYocmVsX3N0ciwgIiVkLCVkUCIsIHggLSBIUDI2X2N1cnNv
cl94LCB5IC0gSFAyNl9jdXJzb3JfeSk7CiAgICAgICAgc3ByaW50ZihhYnNfc3RyLCAiJWQsJWRP
IiwgeCwgeSk7CiAgICAgICAgaWYgKHN0cmxlbihyZWxfc3RyKSA8IHN0cmxlbihhYnNfc3RyKSkK
ICAgICAgICAgICAgZnB1dHMocmVsX3N0ciwgZ3BvdXRmaWxlKTsKICAgICAgICBlbHNlCiAgICAg
ICAgICAgIGZwdXRzKGFic19zdHIsIGdwb3V0ZmlsZSk7CiAgICAgICAgZnB1dHMoc3RyLCBncG91
dGZpbGUpOwogICAgICAgIEhQMjZfcGVuX3ggPSBIUDI2X2N1cnNvcl94ID0geDsKICAgICAgICBI
UDI2X3Blbl95ID0gSFAyNl9jdXJzb3JfeSA9IHk7CiAgICB9CiMgNTU3ICJ0ZXJtL2hwMjYudHJt
IgogICAgcmV0dXJuOwp9CgoKCnN0YXRpYyB2b2lkIEhQMjZfbGluZXR5cGUobGluZXR5cGUpCmlu
dCBsaW5ldHlwZTsKewogICAgaWYgKGxpbmV0eXBlID4gOCkKICAgICAgICBsaW5ldHlwZSAlPSA5
OwogICAgbGluZXR5cGUgKz0gMjsKICAgIGlmIChIUDI2X2dudV9tYXBbbGluZXR5cGVdID09IEhQ
MjZfYnVmZikgewogICAgICAgIEhQMjZfbm9wX2xpbmUrKzsKICAgICAgICByZXR1cm47CiAgICB9
CiAgICBIUDI2X2J1ZmYgPSBIUDI2X2dudV9tYXBbbGluZXR5cGVdOwp9CgoKCgpzdGF0aWMgdm9p
ZCBIUDI2X2xpbmVfYW5kX3BvaW50KHgsIHksIG51bWJlcikKdW5zaWduZWQgaW50IHgsIHk7Cmlu
dCBudW1iZXI7CnsKICAgIGludCBsaW5lX3NhdmUsIG5vdF9zb2xpZDsKCgogICAgbGluZV9zYXZl
ID0gMDsKICAgIG5vdF9zb2xpZCA9IChIUDI2X2J1ZmYtPmxpbmV0eXBlICE9IDEpOwogICAgaWYg
KG5vdF9zb2xpZCkgewogICAgICAgIGxpbmVfc2F2ZSA9IEhQMjZfYnVmZi0+bGluZXR5cGU7CiAg
ICAgICAgSFAyNl9saW5ldHlwZSgwKTsKICAgIH0KICAgIEhQMjZfZG9fcG9pbnQoeCwgeSwgbnVt
YmVyKTsKICAgIGlmIChub3Rfc29saWQpCiAgICAgICAgSFAyNl9saW5ldHlwZShsaW5lX3NhdmUp
Owp9CgoKCgoKdm9pZCBIUDI2X2RvX3BvaW50KHgsIHksIG51bWJlcikKdW5zaWduZWQgaW50IHgs
IHk7CmludCBudW1iZXI7CnsKICAgIGludCBodGljLCB2dGljOwogICAgSFAyNl9CdWZmZXJfTm9k
ZSAqdG1wOwoKICAgIHZ0aWMgPSA1IC8gMjsKICAgIGh0aWMgPSA1IC8gMjsKICAgIGlmIChudW1i
ZXIgPCAwKSB7CgogICAgICAgIHRtcCA9IEhQMjZfYnVmZjsKICAgICAgICBIUDI2X2J1ZmYgPSBI
UDI2X2dudV9tYXBbMTFdOwogICAgICAgIEhQMjZfdmVjdG9yKHgsIHkpOwogICAgICAgIEhQMjZf
YnVmZiA9IHRtcDsKICAgIH0KICAgIHN3aXRjaCAobnVtYmVyICUgOSkgewogICAgY2FzZSAwOgoK
ICAgICAgICBIUDI2X21vdmUoeCAtIGh0aWMsIHkgLSB2dGljKTsKICAgICAgICBIUDI2X3ZlY3Rv
cih4LCB5ICsgdnRpYyk7CiAgICAgICAgSFAyNl92ZWN0b3IoeCArIGh0aWMsIHkgLSB2dGljKTsK
ICAgICAgICBIUDI2X3ZlY3Rvcih4IC0gaHRpYywgeSAtIHZ0aWMpOwogICAgICAgIGJyZWFrOwog
ICAgY2FzZSAxOgoKICAgICAgICBIUDI2X21vdmUoeCAtIGh0aWMsIHkgKyB2dGljKTsKICAgICAg
ICBIUDI2X3ZlY3Rvcih4LCB5IC0gdnRpYyk7CiAgICAgICAgSFAyNl92ZWN0b3IoeCArIGh0aWMs
IHkgKyB2dGljKTsKICAgICAgICBIUDI2X3ZlY3Rvcih4IC0gaHRpYywgeSArIHZ0aWMpOwogICAg
ICAgIGJyZWFrOwogICAgY2FzZSAyOgoKICAgICAgICBIUDI2X21vdmUoeCAtIGh0aWMsIHkpOwog
ICAgICAgIEhQMjZfdmVjdG9yKHggKyBodGljLCB5ICsgdnRpYyk7CiAgICAgICAgSFAyNl92ZWN0
b3IoeCArIGh0aWMsIHkgLSB2dGljKTsKICAgICAgICBIUDI2X3ZlY3Rvcih4IC0gaHRpYywgeSk7
CiAgICAgICAgYnJlYWs7CiAgICBjYXNlIDM6CgogICAgICAgIEhQMjZfbW92ZSh4ICsgaHRpYywg
eSk7CiAgICAgICAgSFAyNl92ZWN0b3IoeCAtIGh0aWMsIHkgKyB2dGljKTsKICAgICAgICBIUDI2
X3ZlY3Rvcih4IC0gaHRpYywgeSAtIHZ0aWMpOwogICAgICAgIEhQMjZfdmVjdG9yKHggKyBodGlj
LCB5KTsKICAgICAgICBicmVhazsKICAgIGNhc2UgNDoKCiAgICAgICAgSFAyNl9tb3ZlKHggLSBo
dGljLCB5IC0gdnRpYyk7CiAgICAgICAgSFAyNl92ZWN0b3IoeCAtIGh0aWMsIHkgKyB2dGljKTsK
ICAgICAgICBIUDI2X3ZlY3Rvcih4ICsgaHRpYywgeSArIHZ0aWMpOwogICAgICAgIEhQMjZfdmVj
dG9yKHggKyBodGljLCB5IC0gdnRpYyk7CiAgICAgICAgSFAyNl92ZWN0b3IoeCAtIGh0aWMsIHkg
LSB2dGljKTsKICAgICAgICBicmVhazsKICAgIGNhc2UgNToKCiAgICAgICAgSFAyNl9tb3ZlKHgs
IHkgKyB2dGljKTsKICAgICAgICBIUDI2X3ZlY3Rvcih4LCB5IC0gdnRpYyk7CiAgICAgICAgSFAy
Nl9tb3ZlKHggLSBodGljLCB5KTsKICAgICAgICBIUDI2X3ZlY3Rvcih4ICsgaHRpYywgeSk7CiAg
ICAgICAgYnJlYWs7CiAgICBjYXNlIDY6CgogICAgICAgIEhQMjZfbW92ZSh4ICsgaHRpYywgeSAr
IHZ0aWMpOwogICAgICAgIEhQMjZfdmVjdG9yKHggLSBodGljLCB5IC0gdnRpYyk7CiAgICAgICAg
SFAyNl9tb3ZlKHggLSBodGljLCB5ICsgdnRpYyk7CiAgICAgICAgSFAyNl92ZWN0b3IoeCArIGh0
aWMsIHkgLSB2dGljKTsKICAgICAgICBicmVhazsKICAgIGRlZmF1bHQ6CgogICAgICAgIEhQMjZf
bW92ZSh4LCB5IC0gdnRpYyk7CiAgICAgICAgSFAyNl92ZWN0b3IoeCAtIGh0aWMsIHkpOwogICAg
ICAgIEhQMjZfdmVjdG9yKHgsIHkgKyB2dGljKTsKICAgICAgICBIUDI2X3ZlY3Rvcih4ICsgaHRp
YywgeSk7CiAgICAgICAgSFAyNl92ZWN0b3IoeCwgeSAtIHZ0aWMpOwogICAgICAgIGJyZWFrOwog
ICAgfQp9CiMgMjk1ICJ0ZXJtLmgiIDIKCgojIDEgInRlcm0vaHAyNjQ4LnRybSIgMQojIDU1ICJ0
ZXJtL2hwMjY0OC50cm0iCiMgMSAidGVybS9kcml2ZXIuaCIgMQojIDU2ICJ0ZXJtL2hwMjY0OC50
cm0iIDIKCgoKCgoKc3RhdGljIHZvaWQgSFAyNjQ4aW5pdCAodm9pZCk7CnN0YXRpYyB2b2lkIEhQ
MjY0OGdyYXBoaWNzICh2b2lkKTsKc3RhdGljIHZvaWQgSFAyNjQ4dGV4dCAodm9pZCk7CnN0YXRp
YyB2b2lkIEhQMjY0OGxpbmV0eXBlIChpbnQgbGluZXR5cGUpOwpzdGF0aWMgdm9pZCBIUDI2NDht
b3ZlICh1bnNpZ25lZCBpbnQgeCwgdW5zaWduZWQgaW50IHkpOwpzdGF0aWMgdm9pZCBIUDI2NDh2
ZWN0b3IgKHVuc2lnbmVkIGludCB4LCB1bnNpZ25lZCBpbnQgeSk7CnN0YXRpYyB2b2lkIEhQMjY0
OHB1dF90ZXh0ICh1bnNpZ25lZCBpbnQgeCwgdW5zaWduZWQgaW50IHksIGNoYXIgKnN0cik7CnN0
YXRpYyBpbnQgSFAyNjQ4X3RleHRfYW5nbGUgKGludCBhbmcpOwpzdGF0aWMgdm9pZCBIUDI2NDhy
ZXNldCAodm9pZCk7CiMgODcgInRlcm0vaHAyNjQ4LnRybSIKc3RhdGljIHZvaWQgSFAyNjQ4aW5p
dCgpCnsKICAgIGZwcmludGYoZ3BvdXRmaWxlLCAiXDAzMyptMW0xbjEzNiwxY1oiKTsKCgoKCgoK
fQoKCnN0YXRpYyB2b2lkIEhQMjY0OGdyYXBoaWNzKCkKewogICAgZnByaW50ZihncG91dGZpbGUs
ICJcMDMzKmRhY1oiKTsKCgoKCgp9CgoKc3RhdGljIHZvaWQgSFAyNjQ4dGV4dCgpCnsKfQoKCnN0
YXRpYyB2b2lkIEhQMjY0OGxpbmV0eXBlKGxpbmV0eXBlKQppbnQgbGluZXR5cGU7CnsKICAgIHN0
YXRpYyBpbnQgaHBsaW5lW10gPSB7IDEsIDcsIDEsIDQsIDUsIDYsIDgsIDksIDEwLCA3LCAyIH07
CiAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgIlwwMzMqbSVkYloiLCBocGxpbmVbKGxpbmV0eXBlICsg
MikgJSAxMV0pOwp9CgoKc3RhdGljIHZvaWQgSFAyNjQ4bW92ZSh4LCB5KQp1bnNpZ25lZCBpbnQg
eCwgeTsKewogICAgZnByaW50ZihncG91dGZpbGUsICJcMDMzKnBhZiVkLCVkWiIsIHgsIHkpOwoK
CgoKCgp9CgoKc3RhdGljIHZvaWQgSFAyNjQ4dmVjdG9yKHgsIHkpCnVuc2lnbmVkIGludCB4LCB5
Owp7CiAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgIlwwMzMqcGJmJWQsJWRaIiwgeCwgeSk7CgoKCn0K
CgpzdGF0aWMgdm9pZCBIUDI2NDhwdXRfdGV4dCh4LCB5LCBzdHIpCnVuc2lnbmVkIGludCB4LCB5
OwpjaGFyICpzdHI7CnsKICAgIEhQMjY0OG1vdmUoeCwgeSAtIDEyIC8gMiArIDEpOwogICAgZnBy
aW50ZihncG91dGZpbGUsICJcMDMzKmwlc1xuIiwgc3RyKTsKfQoKCnN0YXRpYyBpbnQgSFAyNjQ4
X3RleHRfYW5nbGUoYW5nKQppbnQgYW5nOwp7CiAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgIlwwMzMq
bSVkblpcbiIsIGFuZyArIDEpOwogICAgcmV0dXJuIDE7Cn0KCnN0YXRpYyB2b2lkIEhQMjY0OHJl
c2V0KCkKewp9CiMgMjk4ICJ0ZXJtLmgiIDIKCgojIDEgInRlcm0vaHA1MDBjLnRybSIgMQojIDY5
ICJ0ZXJtL2hwNTAwYy50cm0iCiMgMSAidGVybS9kcml2ZXIuaCIgMQojIDcwICJ0ZXJtL2hwNTAw
Yy50cm0iIDIKCgoKCgoKc3RhdGljIHZvaWQgSFA1MDBDb3B0aW9ucyAodm9pZCk7CnN0YXRpYyB2
b2lkIEhQNTAwQ2luaXQgKHZvaWQpOwpzdGF0aWMgdm9pZCBIUDUwMENyZXNldCAodm9pZCk7CnN0
YXRpYyB2b2lkIEhQNTAwQ2xpbmV0eXBlIChpbnQgbGluZXR5cGUpOwpzdGF0aWMgdm9pZCBIUDUw
MENncmFwaGljcyAodm9pZCk7CnN0YXRpYyB2b2lkIEhQNTAwQ3RleHQgKHZvaWQpOwojIDEyNSAi
dGVybS9ocDUwMGMudHJtIgpzdGF0aWMgaW50IEhQY29tcHJlc3MgKHVuc2lnbmVkIGNoYXIgKm9w
LCB1bnNpZ25lZCBjaGFyICpvZSwgdW5zaWduZWQgY2hhciAqY3ApOwoKc3RhdGljIHVuc2lnbmVk
IGNoYXIgSFBjb21wbGVtZW50IChpbnQgYyk7CnN0YXRpYyBpbnQgSFBjb21wcmVzc190b19USUZG
ICh1bnNpZ25lZCBjaGFyICpvcCwgdW5zaWduZWQgY2hhciAqb2UsIHVuc2lnbmVkIGNoYXIgKmNw
KTsKCnN0YXRpYyBpbnQgSFBub2NvbXByZXNzICh1bnNpZ25lZCBjaGFyICpvcCwgdW5zaWduZWQg
Y2hhciAqb2UsIHVuc2lnbmVkIGNoYXIgKmNwKTsKCgpzdGF0aWMgaW50IGhwZGpfZHBwID0gNDsK
c3RhdGljIGludCBIUF9DT01QX01PREUgPSAwOwoKCgoKc3RhdGljIHVuc2lnbmVkIGludCBiXzMw
MHBwaV9wYXR0ZXJuW10gPQp7CiAgICAweGZmZmYsIDB4MTExMSwKICAgIDB4ZmZmZiwgMHgzMzMz
LCAweDBmMGYsIDB4M2YzZiwgMHgwZmZmLCAweDAwZmYsIDB4MzNmZgp9OwoKCgpzdGF0aWMgdm9p
ZCBIUDUwMENvcHRpb25zKCkKewogICAgY2hhciBvcHRbNl07CgoKICAgIHdoaWxlICghKGNfdG9r
ZW4gPj0gbnVtX3Rva2VucyB8fCBlcXVhbHMoY190b2tlbiwiOyIpKSkgewogICAgICAgIGlmICh0
b2tlbltjX3Rva2VuXS5sZW5ndGggPiA0KQogICAgICAgICAgICBpbnRfZXJyb3IoImV4cGVjdGlu
ZyBkb3RzIHBlciBpbmNoIHNpemUgNzUsIDEwMCwgMTUwIG9yIDMwMCBhbmQvb3IgY29tcHJlc3Np
b24gbWV0aG9kIiwgY190b2tlbik7CgoKICAgICAgICBjYXB0dXJlKG9wdCwgY190b2tlbiwgY190
b2tlbiwgNik7CiAgICAgICAgaWYgKCFfX2V4dGVuc2lvbl9fICh7IHNpemVfdCBfX3MxX2xlbiwg
X19zMl9sZW47IChfX2J1aWx0aW5fY29uc3RhbnRfcCAob3B0KSAmJiBfX2J1aWx0aW5fY29uc3Rh
bnRfcCAoIjc1IikgJiYgKF9fczFfbGVuID0gc3RybGVuIChvcHQpLCBfX3MyX2xlbiA9IHN0cmxl
biAoIjc1IiksICghKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKG9wdCkgKyAxKSAtIChzaXplX3Qp
KGNvbnN0IHZvaWQgKikob3B0KSA9PSAxKSB8fCBfX3MxX2xlbiA+PSA0KSAmJiAoISgoc2l6ZV90
KShjb25zdCB2b2lkICopKCgiNzUiKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgiNzUi
KSA9PSAxKSB8fCBfX3MyX2xlbiA+PSA0KSkgPyBtZW1jbXAgKChfX2NvbnN0IGNoYXIgKikgKG9w
dCksIChfX2NvbnN0IGNoYXIgKikgKCI3NSIpLCAoX19zMV9sZW4gPCBfX3MyX2xlbiA/IF9fczFf
bGVuIDogX19zMl9sZW4pICsgMSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AgKG9wdCkgJiYgKChz
aXplX3QpKGNvbnN0IHZvaWQgKikoKG9wdCkgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKiko
b3B0KSA9PSAxKSAmJiAoX19zMV9sZW4gPSBzdHJsZW4gKG9wdCksIF9fczFfbGVuIDwgNCkgPyAo
X19idWlsdGluX2NvbnN0YW50X3AgKCI3NSIpICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKCgi
NzUiKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgiNzUiKSA9PSAxKSA/IChfX2V4dGVu
c2lvbl9fICh7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hh
ciAqKSAoX19jb25zdCBjaGFyICopIChvcHQpKVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFy
ICopIChfX2NvbnN0IGNoYXIgKikoIjc1IikpWzBdKTsgaWYgKF9fczFfbGVuID4gMCAmJiBfX3Jl
c3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikgKG9wdCkpWzFdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29u
c3QgY2hhciAqKSAoIjc1IikpWzFdKTsgaWYgKF9fczFfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAw
KSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIg
KikgKG9wdCkpWzJdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAq
KSAoIjc1IikpWzJdKTsgaWYgKF9fczFfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3Vs
dCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChvcHQpKVsz
XSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCI3NSIpKVsz
XSk7IH0gfSBfX3Jlc3VsdDsgfSkpIDogKF9fZXh0ZW5zaW9uX18gKHsgX19jb25zdCB1bnNpZ25l
ZCBjaGFyICpfX3MyID0gKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop
ICgiNzUiKTsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFy
ICopIChfX2NvbnN0IGNoYXIgKikgKG9wdCkpWzBdIC0gX19zMlswXSk7IGlmIChfX3MxX2xlbiA+
IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hh
ciAqKSAoX19jb25zdCBjaGFyICopIChvcHQpKVsxXSAtIF9fczJbMV0pOyBpZiAoX19zMV9sZW4g
PiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNo
YXIgKikgKF9fY29uc3QgY2hhciAqKSAob3B0KSlbMl0gLSBfX3MyWzJdKTsgaWYgKF9fczFfbGVu
ID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hh
ciAqKSAoX19jb25zdCBjaGFyICopIChvcHQpKVszXSAtIF9fczJbM10pOyB9IH0gX19yZXN1bHQ7
IH0pKSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AgKCI3NSIpICYmICgoc2l6ZV90KShjb25zdCB2
b2lkICopKCgiNzUiKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgiNzUiKSA9PSAxKSAm
JiAoX19zMl9sZW4gPSBzdHJsZW4gKCI3NSIpLCBfX3MyX2xlbiA8IDQpID8gKF9fYnVpbHRpbl9j
b25zdGFudF9wIChvcHQpICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKChvcHQpICsgMSkgLSAo
c2l6ZV90KShjb25zdCB2b2lkICopKG9wdCkgPT0gMSkgPyAoX19leHRlbnNpb25fXyAoeyByZWdp
c3RlciBpbnQgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg
Y2hhciAqKSAob3B0KSlbMF0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBj
aGFyICopKCI3NSIpKVswXSk7IGlmIChfX3MyX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBf
X3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChv
cHQpKVsxXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCI3
NSIpKVsxXSk7IGlmIChfX3MyX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9
ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChvcHQpKVsyXSAt
ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCI3NSIpKVsyXSk7
IGlmIChfX3MyX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAob3B0KSlbM10gLSAoKF9fY29uc3Qg
dW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiNzUiKSlbM10pOyB9IH0gX19yZXN1
bHQ7IH0pKSA6IChfX2V4dGVuc2lvbl9fICh7IF9fY29uc3QgdW5zaWduZWQgY2hhciAqX19zMSA9
IChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAob3B0KTsgcmVnaXN0
ZXIgaW50IF9fcmVzdWx0ID0gX19zMVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf
X2NvbnN0IGNoYXIgKikgKCI3NSIpKVswXTsgaWYgKF9fczJfbGVuID4gMCAmJiBfX3Jlc3VsdCA9
PSAwKSB7IF9fcmVzdWx0ID0gKF9fczFbMV0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAo
X19jb25zdCBjaGFyICopICgiNzUiKSlbMV0pOyBpZiAoX19zMl9sZW4gPiAxICYmIF9fcmVzdWx0
ID09IDApIHsgX19yZXN1bHQgPSAoX19zMVsyXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikgKCI3NSIpKVsyXSk7IGlmIChfX3MyX2xlbiA+IDIgJiYgX19yZXN1
bHQgPT0gMCkgX19yZXN1bHQgPSAoX19zMVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikgKCI3NSIpKVszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpKSA6IHN0cmNt
cCAob3B0LCAiNzUiKSkpKTsgfSkpIHsKICAgICAgICAgICAgaHBkal9kcHAgPSA0OwogICAgICAg
ICAgICBIUF9DT01QX01PREUgPSAwOwoKICAgICAgICB9IGVsc2UgaWYgKCFfX2V4dGVuc2lvbl9f
ICh7IHNpemVfdCBfX3MxX2xlbiwgX19zMl9sZW47IChfX2J1aWx0aW5fY29uc3RhbnRfcCAob3B0
KSAmJiBfX2J1aWx0aW5fY29uc3RhbnRfcCAoIjEwMCIpICYmIChfX3MxX2xlbiA9IHN0cmxlbiAo
b3B0KSwgX19zMl9sZW4gPSBzdHJsZW4gKCIxMDAiKSwgKCEoKHNpemVfdCkoY29uc3Qgdm9pZCAq
KSgob3B0KSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKShvcHQpID09IDEpIHx8IF9fczFf
bGVuID49IDQpICYmICghKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCIxMDAiKSArIDEpIC0gKHNp
emVfdCkoY29uc3Qgdm9pZCAqKSgiMTAwIikgPT0gMSkgfHwgX19zMl9sZW4gPj0gNCkpID8gbWVt
Y21wICgoX19jb25zdCBjaGFyICopIChvcHQpLCAoX19jb25zdCBjaGFyICopICgiMTAwIiksIChf
X3MxX2xlbiA8IF9fczJfbGVuID8gX19zMV9sZW4gOiBfX3MyX2xlbikgKyAxKSA6IChfX2J1aWx0
aW5fY29uc3RhbnRfcCAob3B0KSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgob3B0KSArIDEp
IC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKShvcHQpID09IDEpICYmIChfX3MxX2xlbiA9IHN0cmxl
biAob3B0KSwgX19zMV9sZW4gPCA0KSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoIjEwMCIpICYm
ICgoc2l6ZV90KShjb25zdCB2b2lkICopKCgiMTAwIikgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZv
aWQgKikoIjEwMCIpID09IDEpID8gKF9fZXh0ZW5zaW9uX18gKHsgcmVnaXN0ZXIgaW50IF9fcmVz
dWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG9wdCkp
WzBdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSgiMTAwIikp
WzBdKTsgaWYgKF9fczFfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgo
X19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG9wdCkpWzFdIC0gKChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIjEwMCIpKVsxXSk7IGlm
IChfX3MxX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3Qg
dW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChvcHQpKVsyXSAtICgoX19jb25zdCB1
bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCIxMDAiKSlbMl0pOyBpZiAoX19zMV9s
ZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBj
aGFyICopIChfX2NvbnN0IGNoYXIgKikgKG9wdCkpWzNdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNo
YXIgKikgKF9fY29uc3QgY2hhciAqKSAoIjEwMCIpKVszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpIDog
KF9fZXh0ZW5zaW9uX18gKHsgX19jb25zdCB1bnNpZ25lZCBjaGFyICpfX3MyID0gKF9fY29uc3Qg
dW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiMTAwIik7IHJlZ2lzdGVyIGludCBf
X3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChv
cHQpKVswXSAtIF9fczJbMF0pOyBpZiAoX19zMV9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsg
X19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAo
b3B0KSlbMV0gLSBfX3MyWzFdKTsgaWYgKF9fczFfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7
IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KG9wdCkpWzJdIC0gX19zMlsyXSk7IGlmIChfX3MxX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkg
X19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAo
b3B0KSlbM10gLSBfX3MyWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkpIDogKF9fYnVpbHRpbl9jb25z
dGFudF9wICgiMTAwIikgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCIxMDAiKSArIDEpIC0g
KHNpemVfdCkoY29uc3Qgdm9pZCAqKSgiMTAwIikgPT0gMSkgJiYgKF9fczJfbGVuID0gc3RybGVu
ICgiMTAwIiksIF9fczJfbGVuIDwgNCkgPyAoX19idWlsdGluX2NvbnN0YW50X3AgKG9wdCkgJiYg
KChzaXplX3QpKGNvbnN0IHZvaWQgKikoKG9wdCkgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQg
Kikob3B0KSA9PSAxKSA/IChfX2V4dGVuc2lvbl9fICh7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9
ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChvcHQpKVswXSAt
ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikoIjEwMCIpKVswXSk7
IGlmIChfX3MyX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChvcHQpKVsxXSAtICgoX19jb25z
dCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCIxMDAiKSlbMV0pOyBpZiAoX19z
Ml9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2ln
bmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAob3B0KSlbMl0gLSAoKF9fY29uc3QgdW5zaWdu
ZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiMTAwIikpWzJdKTsgaWYgKF9fczJfbGVuID4g
MiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAq
KSAoX19jb25zdCBjaGFyICopIChvcHQpKVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikgKCIxMDAiKSlbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSA6IChfX2V4
dGVuc2lvbl9fICh7IF9fY29uc3QgdW5zaWduZWQgY2hhciAqX19zMSA9IChfX2NvbnN0IHVuc2ln
bmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAob3B0KTsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0
ID0gX19zMVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KCIxMDAiKSlbMF07IGlmIChfX3MyX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3Vs
dCA9IChfX3MxWzFdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAq
KSAoIjEwMCIpKVsxXSk7IGlmIChfX3MyX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jl
c3VsdCA9IChfX3MxWzJdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh
ciAqKSAoIjEwMCIpKVsyXSk7IGlmIChfX3MyX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19y
ZXN1bHQgPSAoX19zMVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNo
YXIgKikgKCIxMDAiKSlbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSkgOiBzdHJjbXAgKG9wdCwgIjEw
MCIpKSkpOyB9KSkgewogICAgICAgICAgICBocGRqX2RwcCA9IDM7CiAgICAgICAgICAgIEhQX0NP
TVBfTU9ERSA9IDA7CiAgICAgICAgfSBlbHNlIGlmICghX19leHRlbnNpb25fXyAoeyBzaXplX3Qg
X19zMV9sZW4sIF9fczJfbGVuOyAoX19idWlsdGluX2NvbnN0YW50X3AgKG9wdCkgJiYgX19idWls
dGluX2NvbnN0YW50X3AgKCIxNTAiKSAmJiAoX19zMV9sZW4gPSBzdHJsZW4gKG9wdCksIF9fczJf
bGVuID0gc3RybGVuICgiMTUwIiksICghKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKG9wdCkgKyAx
KSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikob3B0KSA9PSAxKSB8fCBfX3MxX2xlbiA+PSA0KSAm
JiAoISgoc2l6ZV90KShjb25zdCB2b2lkICopKCgiMTUwIikgKyAxKSAtIChzaXplX3QpKGNvbnN0
IHZvaWQgKikoIjE1MCIpID09IDEpIHx8IF9fczJfbGVuID49IDQpKSA/IG1lbWNtcCAoKF9fY29u
c3QgY2hhciAqKSAob3B0KSwgKF9fY29uc3QgY2hhciAqKSAoIjE1MCIpLCAoX19zMV9sZW4gPCBf
X3MyX2xlbiA/IF9fczFfbGVuIDogX19zMl9sZW4pICsgMSkgOiAoX19idWlsdGluX2NvbnN0YW50
X3AgKG9wdCkgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKG9wdCkgKyAxKSAtIChzaXplX3Qp
KGNvbnN0IHZvaWQgKikob3B0KSA9PSAxKSAmJiAoX19zMV9sZW4gPSBzdHJsZW4gKG9wdCksIF9f
czFfbGVuIDwgNCkgPyAoX19idWlsdGluX2NvbnN0YW50X3AgKCIxNTAiKSAmJiAoKHNpemVfdCko
Y29uc3Qgdm9pZCAqKSgoIjE1MCIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKCIxNTAi
KSA9PSAxKSA/IChfX2V4dGVuc2lvbl9fICh7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9ICgoKF9f
Y29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChvcHQpKVswXSAtICgoX19j
b25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikoIjE1MCIpKVswXSk7IGlmIChf
X3MxX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5z
aWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChvcHQpKVsxXSAtICgoX19jb25zdCB1bnNp
Z25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCIxNTAiKSlbMV0pOyBpZiAoX19zMV9sZW4g
PiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNo
YXIgKikgKF9fY29uc3QgY2hhciAqKSAob3B0KSlbMl0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hh
ciAqKSAoX19jb25zdCBjaGFyICopICgiMTUwIikpWzJdKTsgaWYgKF9fczFfbGVuID4gMiAmJiBf
X3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19j
b25zdCBjaGFyICopIChvcHQpKVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikgKCIxNTAiKSlbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSA6IChfX2V4dGVuc2lv
bl9fICh7IF9fY29uc3QgdW5zaWduZWQgY2hhciAqX19zMiA9IChfX2NvbnN0IHVuc2lnbmVkIGNo
YXIgKikgKF9fY29uc3QgY2hhciAqKSAoIjE1MCIpOyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSAo
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAob3B0KSlbMF0gLSBf
X3MyWzBdKTsgaWYgKF9fczFfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0g
KCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG9wdCkpWzFdIC0g
X19zMlsxXSk7IGlmIChfX3MxX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9
ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChvcHQpKVsyXSAt
IF9fczJbMl0pOyBpZiAoX19zMV9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0g
KCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG9wdCkpWzNdIC0g
X19zMlszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoIjE1
MCIpICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKCgiMTUwIikgKyAxKSAtIChzaXplX3QpKGNv
bnN0IHZvaWQgKikoIjE1MCIpID09IDEpICYmIChfX3MyX2xlbiA9IHN0cmxlbiAoIjE1MCIpLCBf
X3MyX2xlbiA8IDQpID8gKF9fYnVpbHRpbl9jb25zdGFudF9wIChvcHQpICYmICgoc2l6ZV90KShj
b25zdCB2b2lkICopKChvcHQpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKG9wdCkgPT0g
MSkgPyAoX19leHRlbnNpb25fXyAoeyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSAoKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAob3B0KSlbMF0gLSAoKF9fY29uc3Qg
dW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopKCIxNTAiKSlbMF0pOyBpZiAoX19zMl9s
ZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAob3B0KSlbMV0gLSAoKF9fY29uc3QgdW5zaWduZWQg
Y2hhciAqKSAoX19jb25zdCBjaGFyICopICgiMTUwIikpWzFdKTsgaWYgKF9fczJfbGVuID4gMSAm
JiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikgKG9wdCkpWzJdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikg
KF9fY29uc3QgY2hhciAqKSAoIjE1MCIpKVsyXSk7IGlmIChfX3MyX2xlbiA+IDIgJiYgX19yZXN1
bHQgPT0gMCkgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg
Y2hhciAqKSAob3B0KSlbM10gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBj
aGFyICopICgiMTUwIikpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkgOiAoX19leHRlbnNpb25fXyAo
eyBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKl9fczEgPSAoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikgKG9wdCk7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9IF9fczFbMF0g
LSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiMTUwIikpWzBd
OyBpZiAoX19zMl9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoX19zMVsx
XSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCIxNTAiKSlb
MV0pOyBpZiAoX19zMl9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoX19z
MVsyXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCIxNTAi
KSlbMl0pOyBpZiAoX19zMl9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKF9f
czFbM10gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiMTUw
IikpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkpIDogc3RyY21wIChvcHQsICIxNTAiKSkpKTsgfSkp
IHsKICAgICAgICAgICAgaHBkal9kcHAgPSAyOwogICAgICAgICAgICBIUF9DT01QX01PREUgPSAw
OwogICAgICAgIH0gZWxzZSBpZiAoIV9fZXh0ZW5zaW9uX18gKHsgc2l6ZV90IF9fczFfbGVuLCBf
X3MyX2xlbjsgKF9fYnVpbHRpbl9jb25zdGFudF9wIChvcHQpICYmIF9fYnVpbHRpbl9jb25zdGFu
dF9wICgiMzAwIikgJiYgKF9fczFfbGVuID0gc3RybGVuIChvcHQpLCBfX3MyX2xlbiA9IHN0cmxl
biAoIjMwMCIpLCAoISgoc2l6ZV90KShjb25zdCB2b2lkICopKChvcHQpICsgMSkgLSAoc2l6ZV90
KShjb25zdCB2b2lkICopKG9wdCkgPT0gMSkgfHwgX19zMV9sZW4gPj0gNCkgJiYgKCEoKHNpemVf
dCkoY29uc3Qgdm9pZCAqKSgoIjMwMCIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKCIz
MDAiKSA9PSAxKSB8fCBfX3MyX2xlbiA+PSA0KSkgPyBtZW1jbXAgKChfX2NvbnN0IGNoYXIgKikg
KG9wdCksIChfX2NvbnN0IGNoYXIgKikgKCIzMDAiKSwgKF9fczFfbGVuIDwgX19zMl9sZW4gPyBf
X3MxX2xlbiA6IF9fczJfbGVuKSArIDEpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wIChvcHQpICYm
ICgoc2l6ZV90KShjb25zdCB2b2lkICopKChvcHQpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lk
ICopKG9wdCkgPT0gMSkgJiYgKF9fczFfbGVuID0gc3RybGVuIChvcHQpLCBfX3MxX2xlbiA8IDQp
ID8gKF9fYnVpbHRpbl9jb25zdGFudF9wICgiMzAwIikgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQg
KikoKCIzMDAiKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgiMzAwIikgPT0gMSkgPyAo
X19leHRlbnNpb25fXyAoeyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2ln
bmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAob3B0KSlbMF0gLSAoKF9fY29uc3QgdW5zaWdu
ZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopKCIzMDAiKSlbMF0pOyBpZiAoX19zMV9sZW4gPiAw
ICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIg
KikgKF9fY29uc3QgY2hhciAqKSAob3B0KSlbMV0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAq
KSAoX19jb25zdCBjaGFyICopICgiMzAwIikpWzFdKTsgaWYgKF9fczFfbGVuID4gMSAmJiBfX3Jl
c3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikgKG9wdCkpWzJdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29u
c3QgY2hhciAqKSAoIjMwMCIpKVsyXSk7IGlmIChfX3MxX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0g
MCkgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAq
KSAob3B0KSlbM10gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop
ICgiMzAwIikpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkgOiAoX19leHRlbnNpb25fXyAoeyBfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKl9fczIgPSAoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikgKCIzMDAiKTsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1
bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG9wdCkpWzBdIC0gX19zMlswXSk7IGlm
IChfX3MxX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3Qg
dW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChvcHQpKVsxXSAtIF9fczJbMV0pOyBp
ZiAoX19zMV9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAob3B0KSlbMl0gLSBfX3MyWzJdKTsg
aWYgKF9fczFfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29uc3Qg
dW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChvcHQpKVszXSAtIF9fczJbM10pOyB9
IH0gX19yZXN1bHQ7IH0pKSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AgKCIzMDAiKSAmJiAoKHNp
emVfdCkoY29uc3Qgdm9pZCAqKSgoIjMwMCIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICop
KCIzMDAiKSA9PSAxKSAmJiAoX19zMl9sZW4gPSBzdHJsZW4gKCIzMDAiKSwgX19zMl9sZW4gPCA0
KSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCAob3B0KSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAq
KSgob3B0KSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKShvcHQpID09IDEpID8gKF9fZXh0
ZW5zaW9uX18gKHsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBj
aGFyICopIChfX2NvbnN0IGNoYXIgKikgKG9wdCkpWzBdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNo
YXIgKikgKF9fY29uc3QgY2hhciAqKSgiMzAwIikpWzBdKTsgaWYgKF9fczJfbGVuID4gMCAmJiBf
X3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf
X2NvbnN0IGNoYXIgKikgKG9wdCkpWzFdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9f
Y29uc3QgY2hhciAqKSAoIjMwMCIpKVsxXSk7IGlmIChfX3MyX2xlbiA+IDEgJiYgX19yZXN1bHQg
PT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBj
aGFyICopIChvcHQpKVsyXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNo
YXIgKikgKCIzMDAiKSlbMl0pOyBpZiAoX19zMl9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9f
cmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG9w
dCkpWzNdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIjMw
MCIpKVszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpIDogKF9fZXh0ZW5zaW9uX18gKHsgX19jb25zdCB1
bnNpZ25lZCBjaGFyICpfX3MxID0gKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBj
aGFyICopIChvcHQpOyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSBfX3MxWzBdIC0gKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIjMwMCIpKVswXTsgaWYgKF9fczJf
bGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKF9fczFbMV0gLSAoKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiMzAwIikpWzFdKTsgaWYgKF9f
czJfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKF9fczFbMl0gLSAoKF9f
Y29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiMzAwIikpWzJdKTsgaWYg
KF9fczJfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9IChfX3MxWzNdIC0gKChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIjMwMCIpKVszXSk7IH0g
fSBfX3Jlc3VsdDsgfSkpKSA6IHN0cmNtcCAob3B0LCAiMzAwIikpKSk7IH0pKSB7CiAgICAgICAg
ICAgIGhwZGpfZHBwID0gMTsKICAgICAgICAgICAgSFBfQ09NUF9NT0RFID0gMDsKICAgICAgICB9
IGVsc2UgaWYgKCFfX2V4dGVuc2lvbl9fICh7IHNpemVfdCBfX3MxX2xlbiwgX19zMl9sZW47IChf
X2J1aWx0aW5fY29uc3RhbnRfcCAob3B0KSAmJiBfX2J1aWx0aW5fY29uc3RhbnRfcCAoInJsZSIp
ICYmIChfX3MxX2xlbiA9IHN0cmxlbiAob3B0KSwgX19zMl9sZW4gPSBzdHJsZW4gKCJybGUiKSwg
KCEoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgob3B0KSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9p
ZCAqKShvcHQpID09IDEpIHx8IF9fczFfbGVuID49IDQpICYmICghKChzaXplX3QpKGNvbnN0IHZv
aWQgKikoKCJybGUiKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgicmxlIikgPT0gMSkg
fHwgX19zMl9sZW4gPj0gNCkpID8gbWVtY21wICgoX19jb25zdCBjaGFyICopIChvcHQpLCAoX19j
b25zdCBjaGFyICopICgicmxlIiksIChfX3MxX2xlbiA8IF9fczJfbGVuID8gX19zMV9sZW4gOiBf
X3MyX2xlbikgKyAxKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCAob3B0KSAmJiAoKHNpemVfdCko
Y29uc3Qgdm9pZCAqKSgob3B0KSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKShvcHQpID09
IDEpICYmIChfX3MxX2xlbiA9IHN0cmxlbiAob3B0KSwgX19zMV9sZW4gPCA0KSA/IChfX2J1aWx0
aW5fY29uc3RhbnRfcCAoInJsZSIpICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKCgicmxlIikg
KyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoInJsZSIpID09IDEpID8gKF9fZXh0ZW5zaW9u
X18gKHsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikgKG9wdCkpWzBdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikg
KF9fY29uc3QgY2hhciAqKSgicmxlIikpWzBdKTsgaWYgKF9fczFfbGVuID4gMCAmJiBfX3Jlc3Vs
dCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0
IGNoYXIgKikgKG9wdCkpWzFdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg
Y2hhciAqKSAoInJsZSIpKVsxXSk7IGlmIChfX3MxX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkg
eyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop
IChvcHQpKVsyXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KCJybGUiKSlbMl0pOyBpZiAoX19zMV9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0
ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG9wdCkpWzNd
IC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoInJsZSIpKVsz
XSk7IH0gfSBfX3Jlc3VsdDsgfSkpIDogKF9fZXh0ZW5zaW9uX18gKHsgX19jb25zdCB1bnNpZ25l
ZCBjaGFyICpfX3MyID0gKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop
ICgicmxlIik7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hh
ciAqKSAoX19jb25zdCBjaGFyICopIChvcHQpKVswXSAtIF9fczJbMF0pOyBpZiAoX19zMV9sZW4g
PiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNo
YXIgKikgKF9fY29uc3QgY2hhciAqKSAob3B0KSlbMV0gLSBfX3MyWzFdKTsgaWYgKF9fczFfbGVu
ID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBj
aGFyICopIChfX2NvbnN0IGNoYXIgKikgKG9wdCkpWzJdIC0gX19zMlsyXSk7IGlmIChfX3MxX2xl
biA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNo
YXIgKikgKF9fY29uc3QgY2hhciAqKSAob3B0KSlbM10gLSBfX3MyWzNdKTsgfSB9IF9fcmVzdWx0
OyB9KSkpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wICgicmxlIikgJiYgKChzaXplX3QpKGNvbnN0
IHZvaWQgKikoKCJybGUiKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgicmxlIikgPT0g
MSkgJiYgKF9fczJfbGVuID0gc3RybGVuICgicmxlIiksIF9fczJfbGVuIDwgNCkgPyAoX19idWls
dGluX2NvbnN0YW50X3AgKG9wdCkgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKG9wdCkgKyAx
KSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikob3B0KSA9PSAxKSA/IChfX2V4dGVuc2lvbl9fICh7
IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19j
b25zdCBjaGFyICopIChvcHQpKVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikoInJsZSIpKVswXSk7IGlmIChfX3MyX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0g
MCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFy
ICopIChvcHQpKVsxXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIg
KikgKCJybGUiKSlbMV0pOyBpZiAoX19zMl9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19y
ZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAob3B0
KSlbMl0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgicmxl
IikpWzJdKTsgaWYgKF9fczJfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9ICgo
KF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChvcHQpKVszXSAtICgo
X19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJybGUiKSlbM10pOyB9
IH0gX19yZXN1bHQ7IH0pKSA6IChfX2V4dGVuc2lvbl9fICh7IF9fY29uc3QgdW5zaWduZWQgY2hh
ciAqX19zMSA9IChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAob3B0
KTsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gX19zMVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBj
aGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJybGUiKSlbMF07IGlmIChfX3MyX2xlbiA+IDAgJiYg
X19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9IChfX3MxWzFdIC0gKChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoInJsZSIpKVsxXSk7IGlmIChfX3MyX2xlbiA+IDEg
JiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9IChfX3MxWzJdIC0gKChfX2NvbnN0IHVuc2ln
bmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoInJsZSIpKVsyXSk7IGlmIChfX3MyX2xlbiA+
IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoX19zMVszXSAtICgoX19jb25zdCB1bnNp
Z25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJybGUiKSlbM10pOyB9IH0gX19yZXN1bHQ7
IH0pKSkgOiBzdHJjbXAgKG9wdCwgInJsZSIpKSkpOyB9KSkgewogICAgICAgICAgICBIUF9DT01Q
X01PREUgPSAxOwogICAgICAgIH0gZWxzZSBpZiAoIV9fZXh0ZW5zaW9uX18gKHsgc2l6ZV90IF9f
czFfbGVuLCBfX3MyX2xlbjsgKF9fYnVpbHRpbl9jb25zdGFudF9wIChvcHQpICYmIF9fYnVpbHRp
bl9jb25zdGFudF9wICgidGlmZiIpICYmIChfX3MxX2xlbiA9IHN0cmxlbiAob3B0KSwgX19zMl9s
ZW4gPSBzdHJsZW4gKCJ0aWZmIiksICghKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKG9wdCkgKyAx
KSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikob3B0KSA9PSAxKSB8fCBfX3MxX2xlbiA+PSA0KSAm
JiAoISgoc2l6ZV90KShjb25zdCB2b2lkICopKCgidGlmZiIpICsgMSkgLSAoc2l6ZV90KShjb25z
dCB2b2lkICopKCJ0aWZmIikgPT0gMSkgfHwgX19zMl9sZW4gPj0gNCkpID8gbWVtY21wICgoX19j
b25zdCBjaGFyICopIChvcHQpLCAoX19jb25zdCBjaGFyICopICgidGlmZiIpLCAoX19zMV9sZW4g
PCBfX3MyX2xlbiA/IF9fczFfbGVuIDogX19zMl9sZW4pICsgMSkgOiAoX19idWlsdGluX2NvbnN0
YW50X3AgKG9wdCkgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKG9wdCkgKyAxKSAtIChzaXpl
X3QpKGNvbnN0IHZvaWQgKikob3B0KSA9PSAxKSAmJiAoX19zMV9sZW4gPSBzdHJsZW4gKG9wdCks
IF9fczFfbGVuIDwgNCkgPyAoX19idWlsdGluX2NvbnN0YW50X3AgKCJ0aWZmIikgJiYgKChzaXpl
X3QpKGNvbnN0IHZvaWQgKikoKCJ0aWZmIikgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKiko
InRpZmYiKSA9PSAxKSA/IChfX2V4dGVuc2lvbl9fICh7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9
ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChvcHQpKVswXSAt
ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikoInRpZmYiKSlbMF0p
OyBpZiAoX19zMV9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAob3B0KSlbMV0gLSAoKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgidGlmZiIpKVsxXSk7IGlmIChf
X3MxX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5z
aWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChvcHQpKVsyXSAtICgoX19jb25zdCB1bnNp
Z25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJ0aWZmIikpWzJdKTsgaWYgKF9fczFfbGVu
ID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hh
ciAqKSAoX19jb25zdCBjaGFyICopIChvcHQpKVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFy
ICopIChfX2NvbnN0IGNoYXIgKikgKCJ0aWZmIikpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkgOiAo
X19leHRlbnNpb25fXyAoeyBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKl9fczIgPSAoX19jb25zdCB1
bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJ0aWZmIik7IHJlZ2lzdGVyIGludCBf
X3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChv
cHQpKVswXSAtIF9fczJbMF0pOyBpZiAoX19zMV9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsg
X19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAo
b3B0KSlbMV0gLSBfX3MyWzFdKTsgaWYgKF9fczFfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7
IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KG9wdCkpWzJdIC0gX19zMlsyXSk7IGlmIChfX3MxX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkg
X19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAo
b3B0KSlbM10gLSBfX3MyWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkpIDogKF9fYnVpbHRpbl9jb25z
dGFudF9wICgidGlmZiIpICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKCgidGlmZiIpICsgMSkg
LSAoc2l6ZV90KShjb25zdCB2b2lkICopKCJ0aWZmIikgPT0gMSkgJiYgKF9fczJfbGVuID0gc3Ry
bGVuICgidGlmZiIpLCBfX3MyX2xlbiA8IDQpID8gKF9fYnVpbHRpbl9jb25zdGFudF9wIChvcHQp
ICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKChvcHQpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2
b2lkICopKG9wdCkgPT0gMSkgPyAoX19leHRlbnNpb25fXyAoeyByZWdpc3RlciBpbnQgX19yZXN1
bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAob3B0KSlb
MF0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopKCJ0aWZmIikp
WzBdKTsgaWYgKF9fczJfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgo
X19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG9wdCkpWzFdIC0gKChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoInRpZmYiKSlbMV0pOyBp
ZiAoX19zMl9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAob3B0KSlbMl0gLSAoKF9fY29uc3Qg
dW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgidGlmZiIpKVsyXSk7IGlmIChfX3My
X2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAob3B0KSlbM10gLSAoKF9fY29uc3QgdW5zaWduZWQg
Y2hhciAqKSAoX19jb25zdCBjaGFyICopICgidGlmZiIpKVszXSk7IH0gfSBfX3Jlc3VsdDsgfSkp
IDogKF9fZXh0ZW5zaW9uX18gKHsgX19jb25zdCB1bnNpZ25lZCBjaGFyICpfX3MxID0gKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChvcHQpOyByZWdpc3RlciBpbnQg
X19yZXN1bHQgPSBfX3MxWzBdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg
Y2hhciAqKSAoInRpZmYiKSlbMF07IGlmIChfX3MyX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkg
eyBfX3Jlc3VsdCA9IChfX3MxWzFdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29u
c3QgY2hhciAqKSAoInRpZmYiKSlbMV0pOyBpZiAoX19zMl9sZW4gPiAxICYmIF9fcmVzdWx0ID09
IDApIHsgX19yZXN1bHQgPSAoX19zMVsyXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf
X2NvbnN0IGNoYXIgKikgKCJ0aWZmIikpWzJdKTsgaWYgKF9fczJfbGVuID4gMiAmJiBfX3Jlc3Vs
dCA9PSAwKSBfX3Jlc3VsdCA9IChfX3MxWzNdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikg
KF9fY29uc3QgY2hhciAqKSAoInRpZmYiKSlbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSkgOiBzdHJj
bXAgKG9wdCwgInRpZmYiKSkpKTsgfSkpIHsKICAgICAgICAgICAgSFBfQ09NUF9NT0RFID0gMjsK
ICAgICAgICB9CiAgICAgICAgY190b2tlbisrOwogICAgfQoKICAgIHRlcm0tPnhtYXggPSAoOCoo
dW5zaWduZWQgaW50KSh4c2l6ZSoxOTIwLyhocGRqX2RwcCkvOC4wKzAuOSkpOwogICAgdGVybS0+
eW1heCA9ICg4Kih1bnNpZ25lZCBpbnQpKHlzaXplKjE5MjAvKGhwZGpfZHBwKS84LjArMC45KSk7
CiAgICBzd2l0Y2ggKGhwZGpfZHBwKSB7CiAgICBjYXNlIDE6CiAgICAgICAgKF9fZXh0ZW5zaW9u
X18gKF9fYnVpbHRpbl9jb25zdGFudF9wICgiMzAwIikgPyAoKChzaXplX3QpKGNvbnN0IHZvaWQg
KikoKCIzMDAiKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgiMzAwIikgPT0gMSkgJiYg
c3RybGVuICgiMzAwIikgKyAxIDw9IDggPyBfX3N0cmNweV9zbWFsbCAodGVybV9vcHRpb25zLCBf
X2V4dGVuc2lvbl9fICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop
ICgiMzAwIikpWzAgKyAxXSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29u
c3QgY2hhciAqKSAoIjMwMCIpKVswXSksIF9fZXh0ZW5zaW9uX18gKCgoX19jb25zdCB1bnNpZ25l
ZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCIzMDAiKSlbNCArIDFdIDw8IDggfCAoKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiMzAwIikpWzRdKSwgX19leHRl
bnNpb25fXyAoKCgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgi
MzAwIikpWzAgKyAzXSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg
Y2hhciAqKSAoIjMwMCIpKVswICsgMl0pIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAq
KSAoX19jb25zdCBjaGFyICopICgiMzAwIikpWzAgKyAxXSkgPDwgOCB8ICgoX19jb25zdCB1bnNp
Z25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCIzMDAiKSlbMF0pLCBfX2V4dGVuc2lvbl9f
ICgoKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCIzMDAiKSlb
NCArIDNdIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop
ICgiMzAwIikpWzQgKyAyXSkgPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikgKCIzMDAiKSlbNCArIDFdKSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNo
YXIgKikgKF9fY29uc3QgY2hhciAqKSAoIjMwMCIpKVs0XSksIHN0cmxlbiAoIjMwMCIpICsgMSkg
OiAoY2hhciAqKSBtZW1jcHkgKHRlcm1fb3B0aW9ucywgIjMwMCIsIHN0cmxlbiAoIjMwMCIpICsg
MSkpIDogc3RyY3B5ICh0ZXJtX29wdGlvbnMsICIzMDAiKSkpOwogICAgICAgIHRlcm0tPnZfdGlj
ID0gMTU7CiAgICAgICAgdGVybS0+aF90aWMgPSAxNTsKICAgICAgICBicmVhazsKICAgIGNhc2Ug
MjoKICAgICAgICAoX19leHRlbnNpb25fXyAoX19idWlsdGluX2NvbnN0YW50X3AgKCIxNTAiKSA/
ICgoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoIjE1MCIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2
b2lkICopKCIxNTAiKSA9PSAxKSAmJiBzdHJsZW4gKCIxNTAiKSArIDEgPD0gOCA/IF9fc3RyY3B5
X3NtYWxsICh0ZXJtX29wdGlvbnMsIF9fZXh0ZW5zaW9uX18gKCgoX19jb25zdCB1bnNpZ25lZCBj
aGFyICopIChfX2NvbnN0IGNoYXIgKikgKCIxNTAiKSlbMCArIDFdIDw8IDggfCAoKF9fY29uc3Qg
dW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiMTUwIikpWzBdKSwgX19leHRlbnNp
b25fXyAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIjE1MCIp
KVs0ICsgMV0gPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIg
KikgKCIxNTAiKSlbNF0pLCBfX2V4dGVuc2lvbl9fICgoKCgoX19jb25zdCB1bnNpZ25lZCBjaGFy
ICopIChfX2NvbnN0IGNoYXIgKikgKCIxNTAiKSlbMCArIDNdIDw8IDggfCAoKF9fY29uc3QgdW5z
aWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiMTUwIikpWzAgKyAyXSkgPDwgOCB8ICgo
X19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCIxNTAiKSlbMCArIDFd
KSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIjE1
MCIpKVswXSksIF9fZXh0ZW5zaW9uX18gKCgoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9f
Y29uc3QgY2hhciAqKSAoIjE1MCIpKVs0ICsgM10gPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBj
aGFyICopIChfX2NvbnN0IGNoYXIgKikgKCIxNTAiKSlbNCArIDJdKSA8PCA4IHwgKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIjE1MCIpKVs0ICsgMV0pIDw8IDgg
fCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiMTUwIikpWzRd
KSwgc3RybGVuICgiMTUwIikgKyAxKSA6IChjaGFyICopIG1lbWNweSAodGVybV9vcHRpb25zLCAi
MTUwIiwgc3RybGVuICgiMTUwIikgKyAxKSkgOiBzdHJjcHkgKHRlcm1fb3B0aW9ucywgIjE1MCIp
KSk7CiAgICAgICAgdGVybS0+dl90aWMgPSA4OwogICAgICAgIHRlcm0tPmhfdGljID0gODsKICAg
ICAgICBicmVhazsKICAgIGNhc2UgMzoKICAgICAgICAoX19leHRlbnNpb25fXyAoX19idWlsdGlu
X2NvbnN0YW50X3AgKCIxMDAiKSA/ICgoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoIjEwMCIpICsg
MSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKCIxMDAiKSA9PSAxKSAmJiBzdHJsZW4gKCIxMDAi
KSArIDEgPD0gOCA/IF9fc3RyY3B5X3NtYWxsICh0ZXJtX29wdGlvbnMsIF9fZXh0ZW5zaW9uX18g
KCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCIxMDAiKSlbMCAr
IDFdIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgi
MTAwIikpWzBdKSwgX19leHRlbnNpb25fXyAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9f
Y29uc3QgY2hhciAqKSAoIjEwMCIpKVs0ICsgMV0gPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBj
aGFyICopIChfX2NvbnN0IGNoYXIgKikgKCIxMDAiKSlbNF0pLCBfX2V4dGVuc2lvbl9fICgoKCgo
X19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCIxMDAiKSlbMCArIDNd
IDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiMTAw
IikpWzAgKyAyXSkgPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNo
YXIgKikgKCIxMDAiKSlbMCArIDFdKSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikg
KF9fY29uc3QgY2hhciAqKSAoIjEwMCIpKVswXSksIF9fZXh0ZW5zaW9uX18gKCgoKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIjEwMCIpKVs0ICsgM10gPDwgOCB8
ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCIxMDAiKSlbNCAr
IDJdKSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAo
IjEwMCIpKVs0ICsgMV0pIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25z
dCBjaGFyICopICgiMTAwIikpWzRdKSwgc3RybGVuICgiMTAwIikgKyAxKSA6IChjaGFyICopIG1l
bWNweSAodGVybV9vcHRpb25zLCAiMTAwIiwgc3RybGVuICgiMTAwIikgKyAxKSkgOiBzdHJjcHkg
KHRlcm1fb3B0aW9ucywgIjEwMCIpKSk7CiAgICAgICAgdGVybS0+dl90aWMgPSA2OwogICAgICAg
IHRlcm0tPmhfdGljID0gNjsKICAgICAgICBicmVhazsKICAgIGNhc2UgNDoKICAgICAgICAoX19l
eHRlbnNpb25fXyAoX19idWlsdGluX2NvbnN0YW50X3AgKCI3NSIpID8gKCgoc2l6ZV90KShjb25z
dCB2b2lkICopKCgiNzUiKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgiNzUiKSA9PSAx
KSAmJiBzdHJsZW4gKCI3NSIpICsgMSA8PSA4ID8gX19zdHJjcHlfc21hbGwgKHRlcm1fb3B0aW9u
cywgX19leHRlbnNpb25fXyAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh
ciAqKSAoIjc1IikpWzAgKyAxXSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9f
Y29uc3QgY2hhciAqKSAoIjc1IikpWzBdKSwgX19leHRlbnNpb25fXyAoKChfX2NvbnN0IHVuc2ln
bmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIjc1IikpWzQgKyAxXSA8PCA4IHwgKChfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIjc1IikpWzRdKSwgX19leHRl
bnNpb25fXyAoKCgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgi
NzUiKSlbMCArIDNdIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBj
aGFyICopICgiNzUiKSlbMCArIDJdKSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikg
KF9fY29uc3QgY2hhciAqKSAoIjc1IikpWzAgKyAxXSkgPDwgOCB8ICgoX19jb25zdCB1bnNpZ25l
ZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCI3NSIpKVswXSksIF9fZXh0ZW5zaW9uX18gKCgo
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIjc1IikpWzQgKyAz
XSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIjc1
IikpWzQgKyAyXSkgPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNo
YXIgKikgKCI3NSIpKVs0ICsgMV0pIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAo
X19jb25zdCBjaGFyICopICgiNzUiKSlbNF0pLCBzdHJsZW4gKCI3NSIpICsgMSkgOiAoY2hhciAq
KSBtZW1jcHkgKHRlcm1fb3B0aW9ucywgIjc1Iiwgc3RybGVuICgiNzUiKSArIDEpKSA6IHN0cmNw
eSAodGVybV9vcHRpb25zLCAiNzUiKSkpOwogICAgICAgIHRlcm0tPnZfdGljID0gNTsKICAgICAg
ICB0ZXJtLT5oX3RpYyA9IDU7CiAgICAgICAgYnJlYWs7CiAgICB9CiAgICBzd2l0Y2ggKEhQX0NP
TVBfTU9ERSkgewogICAgY2FzZSAwOgogICAgICAgIHN0cmNhdCh0ZXJtX29wdGlvbnMsICIgbm8g
Y29tcCIpOwogICAgICAgIGJyZWFrOwogICAgY2FzZSAxOgogICAgICAgIHN0cmNhdCh0ZXJtX29w
dGlvbnMsICIgUkxFIik7CiAgICAgICAgYnJlYWs7CiAgICBjYXNlIDI6CiAgICAgICAgc3RyY2F0
KHRlcm1fb3B0aW9ucywgIiBUSUZGIik7CiAgICAgICAgYnJlYWs7CiAgICBjYXNlIDM6CiAgICAg
ICAgc3RyY2F0KHRlcm1fb3B0aW9ucywgIiBEZWx0YSBSb3ciKTsKICAgICAgICBicmVhazsKICAg
IH0KfQoKc3RhdGljIHZvaWQgSFA1MDBDaW5pdCgpCnsKCgogICAgc3dpdGNoIChocGRqX2RwcCkg
ewogICAgY2FzZSAxOgogICAgICAgIGJfY2hhcnNpemUoMik7CiAgICAgICAgdGVybS0+dl9jaGFy
ID0gMzE7CiAgICAgICAgdGVybS0+aF9jaGFyID0gMTk7CiAgICAgICAgYnJlYWs7CiAgICBjYXNl
IDI6CiAgICAgICAgYl9jaGFyc2l6ZSgyKTsKICAgICAgICB0ZXJtLT52X2NoYXIgPSAzMTsKICAg
ICAgICB0ZXJtLT5oX2NoYXIgPSAxOTsKICAgICAgICBicmVhazsKICAgIGNhc2UgMzoKICAgICAg
ICBiX2NoYXJzaXplKDEpOwogICAgICAgIHRlcm0tPnZfY2hhciA9IDIxOwogICAgICAgIHRlcm0t
PmhfY2hhciA9IDEzOwogICAgICAgIGJyZWFrOwogICAgY2FzZSA0OgogICAgICAgIGJfY2hhcnNp
emUoMCk7CiAgICAgICAgdGVybS0+dl9jaGFyID0gMTE7CiAgICAgICAgdGVybS0+aF9jaGFyID0g
NzsKICAgICAgICBicmVhazsKICAgIH0KfQoKc3RhdGljIHZvaWQgSFA1MDBDcmVzZXQoKQp7CgoK
Cn0KCgoKCgpzdGF0aWMgdm9pZCBIUDUwMENsaW5ldHlwZShsaW5ldHlwZSkKaW50IGxpbmV0eXBl
Owp7CiAgICBpZiAobGluZXR5cGUgPCAwKQogICAgICAgIGxpbmV0eXBlID0gNzsKICAgIGVsc2Ug
aWYgKGxpbmV0eXBlID49IDgpIHsKICAgICAgICBsaW5ldHlwZSAlPSA4OwogICAgfQogICAgc3dp
dGNoIChsaW5ldHlwZSkgewogICAgY2FzZSAwOgogICAgICAgIGxpbmV0eXBlID0gNjsKICAgICAg
ICBicmVhazsKICAgIGNhc2UgMToKICAgICAgICBsaW5ldHlwZSA9IDU7CiAgICAgICAgYnJlYWs7
CiAgICBjYXNlIDI6CiAgICAgICAgbGluZXR5cGUgPSAzOwogICAgICAgIGJyZWFrOwogICAgY2Fz
ZSAzOgogICAgICAgIGxpbmV0eXBlID0gMjsKICAgICAgICBicmVhazsKICAgIGNhc2UgNDoKICAg
ICAgICBsaW5ldHlwZSA9IDE7CiAgICAgICAgYnJlYWs7CiAgICBjYXNlIDU6CiAgICAgICAgbGlu
ZXR5cGUgPSA0OwogICAgICAgIGJyZWFrOwogICAgY2FzZSA2OgogICAgICAgIGxpbmV0eXBlID0g
NzsKICAgIH0KICAgIGJfc2V0dmFsdWUobGluZXR5cGUpOwoKfQojIDMwMyAidGVybS9ocDUwMGMu
dHJtIgpzdGF0aWMgdm9pZCBIUDUwMENncmFwaGljcygpCnsKCgoKICAgIGJfbWFrZWJpdG1hcCgo
OCoodW5zaWduZWQgaW50KSh5c2l6ZSoxOTIwLyhocGRqX2RwcCkvOC4wKzAuOSkpLCAoOCoodW5z
aWduZWQgaW50KSh4c2l6ZSoxOTIwLyhocGRqX2RwcCkvOC4wKzAuOSkpLCAzKTsKICAgIGJfcmFz
dGVybW9kZSA9IDE7Cn0KCgoKCgoKCnN0YXRpYyBpbnQgSFBjb21wcmVzcyhvcCwgb2UsIGNwKQp1
bnNpZ25lZCBjaGFyICpvcCwgKm9lLCAqY3A7CnsKICAgIHVuc2lnbmVkIGNoYXIgKmNlID0gY3A7
CiAgICB3aGlsZSAob3AgPCBvZSkgewogICAgICAgIHVuc2lnbmVkIGNoYXIgcHJldmNoYXI7CiAg
ICAgICAgdW5zaWduZWQgY2hhciBjb3VudDsKCiAgICAgICAgcHJldmNoYXIgPSAqb3A7CiAgICAg
ICAgY291bnQgPSAxOwoKICAgICAgICB3aGlsZSAoKytvcCA8IG9lICYmICpvcCA9PSBwcmV2Y2hh
ciAmJiBjb3VudCA8IDI1NSkgewoKICAgICAgICAgICAgY291bnQrKzsKICAgICAgICB9CiAgICAg
ICAgKmNlKysgPSAtLWNvdW50OwogICAgICAgICpjZSsrID0gcHJldmNoYXI7CiAgICB9CiAgICAq
Y2UgPSAwOwogICAgcmV0dXJuIGNlIC0gY3A7Cn0KCnN0YXRpYyB1bnNpZ25lZCBjaGFyIEhQY29t
cGxlbWVudChjKQppbnQgYzsKewogICAgcmV0dXJuICh1bnNpZ25lZCBjaGFyKSAoMjU2IC0gYyk7
Cn0KCgpzdGF0aWMgaW50IEhQY29tcHJlc3NfdG9fVElGRihvcCwgb2UsIGNwKQp1bnNpZ25lZCBj
aGFyICpvcDsKdW5zaWduZWQgY2hhciAqb2U7CnVuc2lnbmVkIGNoYXIgKmNwOwp7CiAgICB1bnNp
Z25lZCBjaGFyICpjb3VudHBvc2l0aW9uOwogICAgdW5zaWduZWQgY2hhciAqY2UgPSBjcDsKICAg
IHdoaWxlIChvcCA8IG9lKSB7CiAgICAgICAgdW5zaWduZWQgY2hhciBwcmV2Y2hhcjsKICAgICAg
ICB1bnNpZ25lZCBjaGFyIGNvdW50OwoKICAgICAgICBwcmV2Y2hhciA9ICpvcDsKICAgICAgICBj
b3VudCA9IDE7CgogICAgICAgIHdoaWxlICgrK29wIDwgb2UgJiYgKm9wID09IHByZXZjaGFyICYm
IGNvdW50IDwgMTI4KSB7CiAgICAgICAgICAgIGNvdW50Kys7CiAgICAgICAgfQogICAgICAgICpj
ZSA9IEhQY29tcGxlbWVudChjb3VudCAtIDEpOwoKICAgICAgICBjb3VudHBvc2l0aW9uID0gY2Ur
KzsKICAgICAgICAqY2UrKyA9IHByZXZjaGFyOwoKICAgICAgICBpZiAoY291bnQgPCAyKSB7CiAg
ICAgICAgICAgIHdoaWxlIChvcCA8IG9lICYmIChwcmV2Y2hhciAhPSAqb3AgfHwgKm9wICE9ICoo
b3AgKyAxKSkpIHsKCiAgICAgICAgICAgICAgICAqY2UrKyA9ICpvcDsKICAgICAgICAgICAgICAg
IGNvdW50Kys7CiAgICAgICAgICAgICAgICBwcmV2Y2hhciA9ICpvcCsrOwogICAgICAgICAgICAg
ICAgaWYgKG9wID4gb2UpCiAgICAgICAgICAgICAgICAgICAgcHV0cygiRkFUQUwgb3A+IG9lISFc
biIpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChvcCA8IG9lICYmIHByZXZjaGFyID09
ICpvcCkgewogICAgICAgICAgICAgICAgb3AtLTsKICAgICAgICAgICAgICAgIGNvdW50LS07CiAg
ICAgICAgICAgICAgICBjZS0tOwogICAgICAgICAgICB9CiAgICAgICAgICAgICpjb3VudHBvc2l0
aW9uID0gY291bnQgLSAxOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiBjZSAtIGNwOwoKfQoK
c3RhdGljIGludCBIUG5vY29tcHJlc3Mob3AsIG9lLCBjcCkKdW5zaWduZWQgY2hhciAqb3A7CnVu
c2lnbmVkIGNoYXIgKm9lOwp1bnNpZ25lZCBjaGFyICpjcDsKewogICAgdW5zaWduZWQgY2hhciAq
Y2UgPSBjcDsKICAgIHdoaWxlIChvcCA8IG9lKQogICAgICAgICpjZSsrID0gKm9wKys7CiAgICBy
ZXR1cm4gY2UgLSBjcDsKfQoKCgoKc3RhdGljIHZvaWQgSFA1MDBDdGV4dCgpCnsKICAgIHJlZ2lz
dGVyIGludCB4LCBqLCByb3csIGNvdW50ID0gMDsKICAgIHVuc2lnbmVkIGNoYXIgKm9idWYsICpv
ZSwgKmNidWYsICpjZTsKCiAgICBpZiAoKG9idWYgPSAodW5zaWduZWQgY2hhciAqKSBtYWxsb2Mo
MTAwICogYl9wc2l6ZSkpID09IDApCiAgICAgICAgcHV0cygiRkFUQUwhLS0gY291bGRuJ3QgZ2V0
IGVub3VnaCBtZW1vcnkgZm9yIG9idWYiKTsKICAgIGlmICgoY2J1ZiA9ICh1bnNpZ25lZCBjaGFy
ICopIG1hbGxvYyg0MDAgKiBiX3BzaXplKSkgPT0gMCkKICAgICAgICBwdXRzKCJGQVRBTCEtLSBj
b3VsZG4ndCBnZXQgZW5vdWdoIG1lbW9yeSBmb3IgY2J1ZiIpOwoKICAgIG9lID0gb2J1ZjsKCiAg
ICBmcHJpbnRmKGdwb3V0ZmlsZSwgIlwwMzMqdCVkUlwwMzMqcjFBXDAzMypiJTFkTVwwMzMqciVk
U1wwMzMqci0zVSIsCgoKCgoKICAgICAgICAgICAgKDMwMC8oaHBkal9kcHApKSwKICAgICAgICAg
ICAgSFBfQ09NUF9NT0RFLAogICAgICAgICAgICBiX3lzaXplKTsKCgogICAgZm9yICh4ID0gYl94
c2l6ZSAtIDE7IHggPj0gMDsgeC0tKSB7CiAgICAgICAgcm93ID0gKGJfeXNpemUgLyA4KSAtIDE7
CiAgICAgICAgZm9yIChqID0gcm93OyBqID49IDA7IGotLSkgewogICAgICAgICAgICAqb2UrKyA9
IChjaGFyKSAoKigoKmJfcClbal0gKyB4KSk7CiAgICAgICAgfQogICAgICAgIHN3aXRjaCAoSFBf
Q09NUF9NT0RFKSB7CiAgICAgICAgY2FzZSAyOgogICAgICAgICAgICBjb3VudCA9IEhQY29tcHJl
c3NfdG9fVElGRihvYnVmLCBvZSwgY2J1Zik7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNh
c2UgMToKICAgICAgICAgICAgY291bnQgPSBIUGNvbXByZXNzKG9idWYsIG9lLCBjYnVmKTsKICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAwOgogICAgICAgICAgICBjb3VudCA9IEhQbm9j
b21wcmVzcyhvYnVmLCBvZSwgY2J1Zik7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAg
ICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgIlwwMzMqYiVkViIsIGNvdW50KTsKICAgICAgICBjZSA9
IGNidWY7CiAgICAgICAgd2hpbGUgKGNvdW50LS0pCiAgICAgICAgICAgIGZwdXRjKCpjZSsrLCBn
cG91dGZpbGUpOwogICAgICAgIG9lID0gb2J1ZjsKCiAgICAgICAgZm9yIChqID0gcm93OyBqID49
IDA7IGotLSkgewogICAgICAgICAgICAqb2UrKyA9IChjaGFyKSAoKigoKmJfcClbaiArIGJfcHNp
emVdICsgeCkpOwogICAgICAgIH0KICAgICAgICBzd2l0Y2ggKEhQX0NPTVBfTU9ERSkgewogICAg
ICAgIGNhc2UgMjoKICAgICAgICAgICAgY291bnQgPSBIUGNvbXByZXNzX3RvX1RJRkYob2J1Ziwg
b2UsIGNidWYpOwogICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlIDE6CiAgICAgICAgICAg
IGNvdW50ID0gSFBjb21wcmVzcyhvYnVmLCBvZSwgY2J1Zik7CiAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgY291bnQgPSBIUG5vY29tcHJlc3Mob2J1Ziwgb2Us
IGNidWYpOwogICAgICAgICAgICBicmVhazsKCiAgICAgICAgfQoKICAgICAgICBmcHJpbnRmKGdw
b3V0ZmlsZSwgIlwwMzMqYiVkViIsIGNvdW50KTsKICAgICAgICBjZSA9IGNidWY7CiAgICAgICAg
d2hpbGUgKGNvdW50LS0pCiAgICAgICAgICAgIGZwdXRjKCpjZSsrLCBncG91dGZpbGUpOwogICAg
ICAgIG9lID0gb2J1ZjsKCiAgICAgICAgZm9yIChqID0gcm93OyBqID49IDA7IGotLSkgewogICAg
ICAgICAgICAqb2UrKyA9IChjaGFyKSAoKigoKmJfcClbaiArICgyICogYl9wc2l6ZSldICsgeCkp
OwogICAgICAgIH0KICAgICAgICBzd2l0Y2ggKEhQX0NPTVBfTU9ERSkgewogICAgICAgIGNhc2Ug
MjoKICAgICAgICAgICAgY291bnQgPSBIUGNvbXByZXNzX3RvX1RJRkYob2J1Ziwgb2UsIGNidWYp
OwogICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgIGNvdW50ID0g
SFBjb21wcmVzcyhvYnVmLCBvZSwgY2J1Zik7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNh
c2UgMDoKICAgICAgICAgICAgY291bnQgPSBIUG5vY29tcHJlc3Mob2J1Ziwgb2UsIGNidWYpOwog
ICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgZnByaW50ZihncG91dGZpbGUsICJc
MDMzKmIlZFciLCBjb3VudCk7CiAgICAgICAgY2UgPSBjYnVmOwogICAgICAgIHdoaWxlIChjb3Vu
dC0tKQogICAgICAgICAgICBmcHV0YygqY2UrKywgZ3BvdXRmaWxlKTsKICAgICAgICBvZSA9IG9i
dWY7CgogICAgfQogICAgZnB1dHMoIlwwMzMqcmJDIiwgZ3BvdXRmaWxlKTsKICAgIGZyZWUoY2J1
Zik7CiAgICBmcmVlKG9idWYpOwogICAgYl9mcmVlYml0bWFwKCk7CgoKCiAgICBfSU9fcHV0YyAo
J1xmJywgZ3BvdXRmaWxlKTsKCn0KIyAzMDEgInRlcm0uaCIgMgoKCiMgMSAidGVybS9ocGdsLnRy
bSIgMQojIDY0ICJ0ZXJtL2hwZ2wudHJtIgojIDEgInRlcm0vZHJpdmVyLmgiIDEKIyA2NSAidGVy
bS9ocGdsLnRybSIgMgoKCgoKCgoKc3RhdGljIHZvaWQgSFBHTF9vcHRpb25zICh2b2lkKTsKc3Rh
dGljIHZvaWQgSFBHTDJfb3B0aW9ucyAodm9pZCk7CnN0YXRpYyB2b2lkIFBDTF9vcHRpb25zICh2
b2lkKTsKc3RhdGljIHZvaWQgSFBHTF9pbml0ICh2b2lkKTsKCnN0YXRpYyB2b2lkIFBDTF9pbml0
ICh2b2lkKTsKc3RhdGljIHZvaWQgSFBHTF9ncmFwaGljcyAodm9pZCk7CnN0YXRpYyB2b2lkIEhQ
R0wyX2dyYXBoaWNzICh2b2lkKTsKc3RhdGljIHZvaWQgUENMX2dyYXBoaWNzICh2b2lkKTsKc3Rh
dGljIHZvaWQgSFBHTF90ZXh0ICh2b2lkKTsKCnN0YXRpYyB2b2lkIFBDTF90ZXh0ICh2b2lkKTsK
c3RhdGljIHZvaWQgSFBHTF9saW5ldHlwZSAoaW50IGxpbmV0eXBlKTsKc3RhdGljIHZvaWQgSFBH
TDJfbGluZXR5cGUgKGludCBsaW5ldHlwZSk7CnN0YXRpYyB2b2lkIEhQR0xfcHV0X3RleHQgKHVu
c2lnbmVkIGludCB4LCB1bnNpZ25lZCBpbnQgeSwgY2hhciAqc3RyKTsKc3RhdGljIHZvaWQgSFBH
TDJfcHV0X3RleHQgKHVuc2lnbmVkIGludCB4LCB1bnNpZ25lZCBpbnQgeSwgY2hhciAqc3RyKTsK
c3RhdGljIHZvaWQgSFBHTF9tb3ZlICh1bnNpZ25lZCBpbnQgeCwgdW5zaWduZWQgaW50IHkpOwpz
dGF0aWMgdm9pZCBIUEdMX3ZlY3RvciAodW5zaWduZWQgaW50IHgsIHVuc2lnbmVkIGludCB5KTsK
c3RhdGljIHZvaWQgSFBHTDJfbW92ZSAodW5zaWduZWQgaW50IHgsIHVuc2lnbmVkIGludCB5KTsK
c3RhdGljIHZvaWQgSFBHTDJfdmVjdG9yICh1bnNpZ25lZCBpbnQgeCwgdW5zaWduZWQgaW50IHkp
OwpzdGF0aWMgdm9pZCBIUEdMMl9lbmNvZGUgKGludCBkKTsKc3RhdGljIGludCBIUEdMX3RleHRf
YW5nbGUgKGludCBhbmcpOwpzdGF0aWMgaW50IEhQR0wyX3RleHRfYW5nbGUgKGludCBhbmcpOwpz
dGF0aWMgdm9pZCBIUEdMX3Jlc2V0ICh2b2lkKTsKCnN0YXRpYyB2b2lkIFBDTF9yZXNldCAodm9p
ZCk7CnN0YXRpYyBpbnQgSFBHTDJfanVzdGlmeV90ZXh0IChlbnVtIEpVU1RJRlkganVzdCk7CiMg
MTg1ICJ0ZXJtL2hwZ2wudHJtIgpzdHJ1Y3QgSFBHTDJfZm9udF9zdHIgewogICAgY2hhciAqY29t
cGFyZSwgKm5hbWU7CiAgICBpbnQgc3ltYm9sX3NldCwgc3BhY2luZzsKICAgIGRvdWJsZSBwaXRj
aCwgaGVpZ2h0OwogICAgaW50IHBvc3R1cmUsIHN0cm9rZV93ZWlnaHQsIHR5cGVmYWNlOwp9OwoK
c3RydWN0IFBDTF9tb2RlX3N0ciB7CiAgICBjaGFyICpjb21wYXJlLCAqbmFtZSwgKmNvbW1hbmQ7
CiAgICBpbnQgeG1heCwgeW1heDsKfTsKCgoKCgoKCnN0YXRpYyBzdHJ1Y3QgSFBHTDJfZm9udF9z
dHIgSFBHTDJfZm9udF90YWJsZVtdID0KewogICAgeyJ1JG5pdmVycyIsICJ1bml2ZXJzIiwgMjc3
LCAxLCAwLjAsIDE0LCAwLCAwLCA0MTQ4fSwKICAgIHsicyR0aWNrIiwgInN0aWNrIiwgMjc3LCAw
LCAoMyAqIDcyIC8gKDE0ICogMikpLCAwLjAsIDAsIDAsIDQ4fSwKICAgIHsiYyRnX3RpbWVzIiwg
ImNnX3RpbWVzIiwgMjc3LCAxLCAwLjAsIDE0LCAwLCAwLCA0MTAxfQp9OwoKCnN0YXRpYyBzdHJ1
Y3QgSFBHTDJfZm9udF9zdHIgKkhQR0wyX2ZvbnQgPSAmSFBHTDJfZm9udF90YWJsZVswXTsKCgoK
CgoKc3RhdGljIHN0cnVjdCBQQ0xfbW9kZV9zdHIgUENMX21vZGVfdGFibGVbXSA9CnsKICAgIHsi
bCRhbmRzY2FwZSIsICJsYW5kc2NhcGUiLCAiXDAzMyZsMU8iLCAxMDAwMCwgKDc1MDAgLTYwKX0s
CiAgICB7InAkb3J0cmFpdCIsICJwb3J0cmFpdCIsICJcMDMzJmwwTyIsICg3NTAwIC02MCksIDEw
MDAwfQp9OwoKCnN0YXRpYyBzdHJ1Y3QgUENMX21vZGVfc3RyICpQQ0xfbW9kZSA9ICZQQ0xfbW9k
ZV90YWJsZVswXTsKCgoKCgpzdGF0aWMgY2hhciAqSFBHTDJfbHRbXSA9IHsgIiIsICI0LDIiLCAi
NSwyIiwgIjYsMiIsICI3LDIiLCAiOCwyIiB9LAogICAgICAgICAgICAqSFBHTDJfcHdbXSA9IHsg
Ii4xNSIsICIuMTIiLCAiLjA4IiB9OwoKCgoKCgpzdGF0aWMgY2hhciBocGdsX2NwXzg1MFsxMjhd
WzRdID0KewoKICAgICAgICAgICAiXDAxNjRcMDE3IiwKICAgICAgICAgICAiXDAxNk9cMDE3IiwK
ICAgICAgICAgICAiXDAxNkVcMDE3IiwKICAgICAgICAgICAiXDAxNkBcMDE3IiwKICAgICAgICAg
ICAiXDAxNkxcMDE3IiwKICAgICAgICAgICAiXDAxNkhcMDE3IiwKICAgICAgICAgICAiXDAxNlRc
MDE3IiwKICAgICAgICAgICAiXDAxNjVcMDE3IiwKCiAgICAgICAgICAgIlwwMTZBXDAxNyIsCiAg
ICAgICAgICAgIlwwMTZNXDAxNyIsCiAgICAgICAgICAgIlwwMTZJXDAxNyIsCiAgICAgICAgICAg
IlwwMTZdXDAxNyIsCiAgICAgICAgICAgIlwwMTZRXDAxNyIsCiAgICAgICAgICAgIlwwMTZZXDAx
NyIsCiAgICAgICAgICAgIlwwMTZYXDAxNyIsCiAgICAgICAgICAgIlwwMTZQXDAxNyIsCgogICAg
ICAgICAgICJcMDE2XDEzNFwwMTciLAogICAgICAgICAgICJcMDE2V1wwMTciLAogICAgICAgICAg
ICJcMDE2U1wwMTciLAogICAgICAgICAgICJcMDE2QlwwMTciLAogICAgICAgICAgICJcMDE2Tlww
MTciLAogICAgICAgICAgICJcMDE2SlwwMTciLAogICAgICAgICAgICJcMDE2Q1wwMTciLAogICAg
ICAgICAgICJcMDE2S1wwMTciLAoKICAgICAgICAgICAiXDAxNm9cMDE3IiwKICAgICAgICAgICAi
XDAxNlpcMDE3IiwKICAgICAgICAgICAiXDAxNltcMDE3IiwKICAgICAgICAgICAiXDAxNlZcMDE3
IiwKICAgICAgICAgICAiXDAxNjtcMDE3IiwKICAgICAgICAgICAiXDAxNlJcMDE3IiwKICAgICAg
ICAgICAiIiwKICAgICAgICAgICAiXDAxNj5cMDE3IiwKCiAgICAgICAgICAgIlwwMTZEXDAxNyIs
CiAgICAgICAgICAgIlwwMTZVXDAxNyIsCiAgICAgICAgICAgIlwwMTZGXDAxNyIsCiAgICAgICAg
ICAgIlwwMTZHXDAxNyIsCiAgICAgICAgICAgIlwwMTY3XDAxNyIsCiAgICAgICAgICAgIlwwMTY2
XDAxNyIsCiAgICAgICAgICAgIlwwMTZ5XDAxNyIsCiAgICAgICAgICAgIlwwMTZ6XDAxNyIsCgog
ICAgICAgICAgICJcMDE2OVwwMTciLAoKICAgICAgICAgICAiIiwKICAgICAgICAgICAiIiwKCiAg
ICAgICAgICAgIlwwMTZ4XDAxNyIsCiAgICAgICAgICAgIlwwMTZ3XDAxNyIsCiAgICAgICAgICAg
IlwwMTY4XDAxNyIsCiAgICAgICAgICAgIlwwMTZ7XDAxNyIsCiAgICAgICAgICAgIlwwMTZ9XDAx
NyIsCgogICAgICAgICAgICIiLAogICAgICAgICAgICIiLAogICAgICAgICAgICIiLAogICAgICAg
ICAgICIiLAogICAgICAgICAgICIiLAoKICAgICAgICAgICAiXDAxNmBcMDE3IiwKICAgICAgICAg
ICAiXDAxNlwwNDJcMDE3IiwKICAgICAgICAgICAiXDAxNiFcMDE3IiwKCiAgICAgICAgICAgIiIs
CiAgICAgICAgICAgIiIsCiAgICAgICAgICAgIiIsCiAgICAgICAgICAgIiIsCiAgICAgICAgICAg
IiIsCgogICAgICAgICAgICJcMDE2P1wwMTciLAogICAgICAgICAgICJcMDE2PFwwMTciLAoKICAg
ICAgICAgICAiIiwKCiAgICAgICAgICAgIiIsCiAgICAgICAgICAgIiIsCiAgICAgICAgICAgIiIs
CiAgICAgICAgICAgIiIsCiAgICAgICAgICAgIiIsCiAgICAgICAgICAgIiIsCgogICAgICAgICAg
ICJcMDE2YlwwMTciLAogICAgICAgICAgICJcMDE2YVwwMTciLAoKICAgICAgICAgICAiIiwKICAg
ICAgICAgICAiIiwKICAgICAgICAgICAiIiwKICAgICAgICAgICAiIiwKICAgICAgICAgICAiIiwK
ICAgICAgICAgICAiIiwKICAgICAgICAgICAiIiwKCiAgICAgICAgICAgIlwwMTY6XDAxNyIsCgog
ICAgICAgICAgICJcMDE2ZFwwMTciLAogICAgICAgICAgICJcMDE2Y1wwMTciLAogICAgICAgICAg
ICJcMDE2JFwwMTciLAogICAgICAgICAgICJcMDE2JVwwMTciLAogICAgICAgICAgICJcMDE2I1ww
MTciLAoKICAgICAgICAgICAiIiwKCiAgICAgICAgICAgIlwwMTZlXDAxNyIsCiAgICAgICAgICAg
IlwwMTYmXDAxNyIsCgogICAgICAgICAgICJcMDE2J1wwMTciLAoKICAgICAgICAgICAiIiwKICAg
ICAgICAgICAiIiwKICAgICAgICAgICAiIiwKICAgICAgICAgICAiIiwKICAgICAgICAgICAiIiwK
CiAgICAgICAgICAgIlwwMTZmXDAxNyIsCiAgICAgICAgICAgIiIsCgogICAgICAgICAgICJcMDE2
Z1wwMTciLAogICAgICAgICAgICJcMDE2XlwwMTciLAogICAgICAgICAgICJcMDE2X1wwMTciLAog
ICAgICAgICAgICJcMDE2aFwwMTciLAogICAgICAgICAgICJcMDE2alwwMTciLAogICAgICAgICAg
ICJcMDE2aVwwMTciLAogICAgICAgICAgICIiLAogICAgICAgICAgICJcMDE2cVwwMTciLAoKICAg
ICAgICAgICAiXDAxNnBcMDE3IiwKICAgICAgICAgICAiXDAxNm1cMDE3IiwKICAgICAgICAgICAi
XDAxNi5cMDE3IiwKICAgICAgICAgICAiXDAxNi1cMDE3IiwKICAgICAgICAgICAiIiwKICAgICAg
ICAgICAiIiwKICAgICAgICAgICAiXDAxNjBcMDE3IiwKICAgICAgICAgICAiXDAxNihcMDE3IiwK
CiAgICAgICAgICAgIlwwMTZ2XDAxNyIsCiAgICAgICAgICAgIlwwMTZ+XDAxNyIsCiAgICAgICAg
ICAgIiIsCiAgICAgICAgICAgIiIsCiAgICAgICAgICAgIiIsCiAgICAgICAgICAgIlwwMTY9XDAx
NyIsCiAgICAgICAgICAgIiIsCiAgICAgICAgICAgIiIsCgogICAgICAgICAgICJcMDE2elwwMTci
LAogICAgICAgICAgICJcMDE2K1wwMTciLAogICAgICAgICAgICIiLAogICAgICAgICAgICIiLAog
ICAgICAgICAgICIiLAogICAgICAgICAgICIiLAogICAgICAgICAgICIiLAogICAgICAgICAgICIi
Cn07CgoKCgpzdGF0aWMgY2hhciBocGdsX2lzb184ODU5XzFbMTI4XVs0XSA9CnsKCiAgICAgICAg
ICAgIiIsCiAgICAgICAgICAgIiIsCiAgICAgICAgICAgIiIsCiAgICAgICAgICAgIiIsCiAgICAg
ICAgICAgIiIsCiAgICAgICAgICAgIiIsCiAgICAgICAgICAgIiIsCiAgICAgICAgICAgIiIsCgog
ICAgICAgICAgICIiLAogICAgICAgICAgICIiLAogICAgICAgICAgICIiLAogICAgICAgICAgICIi
LAogICAgICAgICAgICIiLAogICAgICAgICAgICIiLAogICAgICAgICAgICIiLAogICAgICAgICAg
ICIiLAoKICAgICAgICAgICAiIiwKICAgICAgICAgICAiXDAxNlwwMTciLAogICAgICAgICAgICJc
MDE2XDAxNyIsCiAgICAgICAgICAgIiIsCiAgICAgICAgICAgIiIsCiAgICAgICAgICAgIiIsCiAg
ICAgICAgICAgIiIsCiAgICAgICAgICAgIiIsCgogICAgICAgICAgICIiLAogICAgICAgICAgICIi
LAogICAgICAgICAgICIiLAogICAgICAgICAgICIiLAogICAgICAgICAgICIiLAogICAgICAgICAg
ICIiLAogICAgICAgICAgICIiLAogICAgICAgICAgICIiLAoKICAgICAgICAgICAiIiwKICAgICAg
ICAgICAiXDAxNjhcMDE3IiwKICAgICAgICAgICAiXDAxNjVcMDE3IiwKICAgICAgICAgICAiXDAx
NjtcMDE3IiwKICAgICAgICAgICAiXDAxNjpcMDE3IiwKICAgICAgICAgICAiXDAxNjxcMDE3IiwK
ICAgICAgICAgICAiXDAxN3xcMDE3IiwKICAgICAgICAgICAiXDAxNj1cMDE3IiwKCiAgICAgICAg
ICAgIlwwMTYrXDAxNyIsCiAgICAgICAgICAgIiIsCiAgICAgICAgICAgIlwwMTZ5XDAxNyIsCiAg
ICAgICAgICAgIlwwMTZ7XDAxNyIsCiAgICAgICAgICAgIiIsCiAgICAgICAgICAgIiIsCiAgICAg
ICAgICAgIiIsCiAgICAgICAgICAgIlwwMTYwXDAxNyIsCgogICAgICAgICAgICJcMDE2elwwMTci
LAogICAgICAgICAgICJcMDE2flwwMTciLAogICAgICAgICAgICIiLAogICAgICAgICAgICIiLAog
ICAgICAgICAgICIiLAogICAgICAgICAgICIiLAogICAgICAgICAgICIiLAogICAgICAgICAgICIi
LAoKICAgICAgICAgICAiIiwKICAgICAgICAgICAiIiwKICAgICAgICAgICAiXDAxNnpcMDE3IiwK
ICAgICAgICAgICAiXDAxNn1cMDE3IiwKICAgICAgICAgICAiXDAxNndcMDE3IiwKICAgICAgICAg
ICAiXDAxNnhcMDE3IiwKICAgICAgICAgICAiIiwKICAgICAgICAgICAiXDAxNjlcMDE3IiwKCiAg
ICAgICAgICAgIlwwMTYhXDAxNyIsCiAgICAgICAgICAgIlwwMTZgXDAxNyIsCiAgICAgICAgICAg
IlwwMTZcMDQyXDAxNyIsCiAgICAgICAgICAgIlwwMTZhXDAxNyIsCiAgICAgICAgICAgIlwwMTZY
XDAxNyIsCiAgICAgICAgICAgIlwwMTZQXDAxNyIsCiAgICAgICAgICAgIlwwMTZTXDAxNyIsCiAg
ICAgICAgICAgIlwwMTY0XDAxNyIsCgogICAgICAgICAgICJcMDE2I1wwMTciLAogICAgICAgICAg
ICJcMDE2XDEzNFwwMTciLAogICAgICAgICAgICJcMDE2JFwwMTciLAogICAgICAgICAgICJcMDE2
JVwwMTciLAogICAgICAgICAgICJcMDE2ZlwwMTciLAogICAgICAgICAgICJcMDE2ZVwwMTciLAog
ICAgICAgICAgICJcMDE2XDA0NlwwMTciLAogICAgICAgICAgICJcMDE2J1wwMTciLAoKICAgICAg
ICAgICAiXDAxNmNcMDE3IiwKICAgICAgICAgICAiXDAxNjZcMDE3IiwKICAgICAgICAgICAiXDAx
NmhcMDE3IiwKICAgICAgICAgICAiXDAxNmdcMDE3IiwKICAgICAgICAgICAiXDAxNl9cMDE3IiwK
ICAgICAgICAgICAiXDAxNmlcMDE3IiwKICAgICAgICAgICAiXDAxNlpcMDE3IiwKICAgICAgICAg
ICAiIiwKCiAgICAgICAgICAgIlwwMTZSXDAxNyIsCiAgICAgICAgICAgIlwwMTYtXDAxNyIsCiAg
ICAgICAgICAgIlwwMTZtXDAxNyIsCiAgICAgICAgICAgIlwwMTYuXDAxNyIsCiAgICAgICAgICAg
IlwwMTZbXDAxNyIsCiAgICAgICAgICAgIiIsCiAgICAgICAgICAgIlwwMTZwXDAxNyIsCiAgICAg
ICAgICAgIlwwMTZeXDAxNyIsCgogICAgICAgICAgICJcMDE2SFwwMTciLAogICAgICAgICAgICJc
MDE2RFwwMTciLAogICAgICAgICAgICJcMDE2QFwwMTciLAogICAgICAgICAgICJcMDE2YlwwMTci
LAogICAgICAgICAgICJcMDE2TFwwMTciLAogICAgICAgICAgICJcMDE2VFwwMTciLAogICAgICAg
ICAgICJcMDE2V1wwMTciLAogICAgICAgICAgICJcMDE2NVwwMTciLAoKICAgICAgICAgICAiXDAx
NklcMDE3IiwKICAgICAgICAgICAiXDAxNkVcMDE3IiwKICAgICAgICAgICAiXDAxNkFcMDE3IiwK
ICAgICAgICAgICAiXDAxNk1cMDE3IiwKICAgICAgICAgICAiXDAxNllcMDE3IiwKICAgICAgICAg
ICAiXDAxNlVcMDE3IiwKICAgICAgICAgICAiXDAxNlFcMDE3IiwKICAgICAgICAgICAiXDAxNl1c
MDE3IiwKCiAgICAgICAgICAgIlwwMTZkXDAxNyIsCiAgICAgICAgICAgIlwwMTY3XDAxNyIsCiAg
ICAgICAgICAgIlwwMTZKXDAxNyIsCiAgICAgICAgICAgIlwwMTZGXDAxNyIsCiAgICAgICAgICAg
IlwwMTZCXDAxNyIsCiAgICAgICAgICAgIlwwMTZqXDAxNyIsCiAgICAgICAgICAgIlwwMTZOXDAx
NyIsCiAgICAgICAgICAgIiIsCgogICAgICAgICAgICJcMDE2VlwwMTciLAogICAgICAgICAgICJc
MDE2S1wwMTciLAogICAgICAgICAgICJcMDE2R1wwMTciLAogICAgICAgICAgICJcMDE2Q1wwMTci
LAogICAgICAgICAgICJcMDE2T1wwMTciLAogICAgICAgICAgICIiLAogICAgICAgICAgICJcMDE2
cVwwMTciLAogICAgICAgICAgICJcMDE2b1wwMTciCn07CgoKCgoKCnN0YXRpYyBpbnQgSFBHTF9h
bmcgPSAwLCBIUEdMX3ggPSAtMTAsIEhQR0xfeSA9IC0xMCwgSFBHTF9wZW5zdGF0ZSA9IC0xMCwg
SFBHTF9wZW50eXBlCj0gLTEwLCBIUEdMMl9pbl9wZSwgSFBHTDJfbG9zdDsKCgoKCgpzdGF0aWMg
aW50IEhQR0xfbnVtcGVuLCBIUEdMX2VqZWN0OwoKc3RhdGljIHZvaWQgSFBHTF9vcHRpb25zKCkK
ewogICAgSFBHTF9udW1wZW4gPSA2OwogICAgSFBHTF9lamVjdCA9IDA7CgogICAgd2hpbGUgKCEo
Y190b2tlbiA+PSBudW1fdG9rZW5zIHx8IGVxdWFscyhjX3Rva2VuLCI7IikpKSB7CiAgICAgICAg
aWYgKGFsbW9zdF9lcXVhbHMoY190b2tlbiwgImVqZSRjdCIpKQogICAgICAgICAgICBIUEdMX2Vq
ZWN0ID0gMTsKICAgICAgICBlbHNlIGlmIChpc2FudW1iZXIoY190b2tlbikpIHsKICAgICAgICAg
ICAgSFBHTF9udW1wZW4gPSAoaW50KSByZWFsKCZ0b2tlbltjX3Rva2VuXS5sX3ZhbCk7CiAgICAg
ICAgICAgIGlmIChIUEdMX251bXBlbiA8PSAwKSB7CiAgICAgICAgICAgICAgICBIUEdMX251bXBl
biA9IDY7CiAgICAgICAgICAgICAgICBpbnRfZXJyb3IoIk51bWJlciBvZiBwZW5zIG11c3QgYmUg
cG9zaXRpdmUiLCBjX3Rva2VuKTsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZQogICAgICAg
ICAgICBpbnRfZXJyb3IoImV4cGVjdGluZyBcImVqZWN0XCIgb3IgbnVtYmVyIG9mIHBlbnMiLCBj
X3Rva2VuKTsKCiAgICAgICAgY190b2tlbisrOwogICAgfQoKCiAgICBzcHJpbnRmKHRlcm1fb3B0
aW9ucywgIiVkIHBlbnMgJXMiLCBIUEdMX251bXBlbiwKICAgICAgICAgICAgSFBHTF9lamVjdCA/
ICJlamVjdCIgOiAibm9lamVjdCIpOwp9CgpzdGF0aWMgdm9pZCBIUEdMMl9vcHRpb25zKCkKewog
ICAgc3RydWN0IFRFUk1FTlRSWSAqdCA9IHRlcm07CiAgICBpbnQgaTsKICAgIGRvdWJsZSBwb2lu
dF9zaXplOwogICAgY2hhciB0bXBfb3B0aW9uc1s1MF07CiAgICBpZiAoIShjX3Rva2VuID49IG51
bV90b2tlbnMgfHwgZXF1YWxzKGNfdG9rZW4sIjsiKSkpIHsKICAgICAgICBmb3IgKGkgPSAwOyBp
IDwgKHNpemVvZihIUEdMMl9mb250X3RhYmxlKSAvIHNpemVvZiAoc3RydWN0IEhQR0wyX2ZvbnRf
c3RyKSkgJiYKICAgICAgICAgICAgICFhbG1vc3RfZXF1YWxzKGNfdG9rZW4sIEhQR0wyX2ZvbnRf
dGFibGVbaV0uY29tcGFyZSk7IGkrKyk7CiAgICAgICAgaWYgKGkgPCAoc2l6ZW9mKEhQR0wyX2Zv
bnRfdGFibGUpIC8gc2l6ZW9mIChzdHJ1Y3QgSFBHTDJfZm9udF9zdHIpKSkgewogICAgICAgICAg
ICBIUEdMMl9mb250ID0gJkhQR0wyX2ZvbnRfdGFibGVbaV07CiAgICAgICAgfSBlbHNlCiAgICAg
ICAgICAgIGludF9lcnJvcigiZXhwZWN0aW5nIGZvbnQ6IHN0aWNrLCBjZ190aW1lcywgb3IgdW5p
dmVycyIsIGNfdG9rZW4pOwogICAgICAgIGNfdG9rZW4rKzsKICAgICAgICBpZiAoIShjX3Rva2Vu
ID49IG51bV90b2tlbnMgfHwgZXF1YWxzKGNfdG9rZW4sIjsiKSkpIHsKICAgICAgICAgICAgaWYg
KChwb2ludF9zaXplID0gcmVhbCgmdG9rZW5bY190b2tlbl0ubF92YWwpKSA+IDAuMCkgewogICAg
ICAgICAgICAgICAgdC0+dl9jaGFyID0gKGludCkgMTAxNiAqcG9pbnRfc2l6ZSAvIDcyOwogICAg
ICAgICAgICAgICAgdC0+aF9jaGFyID0gdC0+dl9jaGFyICogMiAvIDM7CiAgICAgICAgICAgICAg
ICBpZiAoSFBHTDJfZm9udC0+c3BhY2luZykKICAgICAgICAgICAgICAgICAgICBIUEdMMl9mb250
LT5oZWlnaHQgPSBwb2ludF9zaXplOwogICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAg
ICAgICAgIEhQR0wyX2ZvbnQtPnBpdGNoID0gNzIgKiAzIC8gKHBvaW50X3NpemUgKiAyKTsKICAg
ICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICBpbnRfZXJyb3IoImV4cGVjdGluZyBmb250
IHBvaW50IHNpemU6IHJlYWwgbnVtYmVyIiwgY190b2tlbik7CiAgICAgICAgICAgIGNfdG9rZW4r
KzsKICAgICAgICB9CiAgICB9CiAgICBzcHJpbnRmKHRtcF9vcHRpb25zLCAiICVzIiwgSFBHTDJf
Zm9udC0+bmFtZSk7CiAgICBzdHJjYXQodGVybV9vcHRpb25zLCB0bXBfb3B0aW9ucyk7CiAgICBp
ZiAoSFBHTDJfZm9udC0+c3BhY2luZykgewogICAgICAgIHNwcmludGYodG1wX29wdGlvbnMsICIg
JWYiLAogICAgICAgICAgICAgICAgSFBHTDJfZm9udC0+aGVpZ2h0KTsKICAgICAgICBzdHJjYXQo
dGVybV9vcHRpb25zLCB0bXBfb3B0aW9ucyk7CiAgICB9IGVsc2UgewogICAgICAgIHNwcmludGYo
dG1wX29wdGlvbnMsICIgJWYiLAogICAgICAgICAgICAgICAgSFBHTDJfZm9udC0+cGl0Y2gpOwog
ICAgICAgIHN0cmNhdCh0ZXJtX29wdGlvbnMsIHRtcF9vcHRpb25zKTsKICAgIH0KfQoKc3RhdGlj
IHZvaWQgUENMX29wdGlvbnMoKQp7CiAgICBpbnQgaTsKICAgIGlmICghKGNfdG9rZW4gPj0gbnVt
X3Rva2VucyB8fCBlcXVhbHMoY190b2tlbiwiOyIpKSkgewogICAgICAgIGZvciAoaSA9IDA7IGkg
PCAoc2l6ZW9mKFBDTF9tb2RlX3RhYmxlKSAvIHNpemVvZiAoc3RydWN0IFBDTF9tb2RlX3N0cikp
ICYmCiAgICAgICAgICAgICAhYWxtb3N0X2VxdWFscyhjX3Rva2VuLCBQQ0xfbW9kZV90YWJsZVtp
XS5jb21wYXJlKTsgaSsrKTsKICAgICAgICBpZiAoaSA8IChzaXplb2YoUENMX21vZGVfdGFibGUp
IC8gc2l6ZW9mIChzdHJ1Y3QgUENMX21vZGVfc3RyKSkpCiAgICAgICAgICAgIFBDTF9tb2RlID0g
JlBDTF9tb2RlX3RhYmxlW2ldOwogICAgICAgIGVsc2UKICAgICAgICAgICAgaW50X2Vycm9yKCJl
eHBlY3RpbmcgbW9kZTogcG9ydHJhaXQgb3IgbGFuZHNjYXBlIiwgY190b2tlbik7CiAgICAgICAg
Y190b2tlbisrOwogICAgfQogICAgc3ByaW50Zih0ZXJtX29wdGlvbnMsICIgJXMiLCBQQ0xfbW9k
ZS0+bmFtZSk7CiAgICBIUEdMMl9vcHRpb25zKCk7Cn0KCnN0YXRpYyB2b2lkIEhQR0xfaW5pdCgp
CnsKfQoKCgoKCnN0YXRpYyB2b2lkIFBDTF9pbml0KCkKewogICAgc3RydWN0IFRFUk1FTlRSWSAq
dCA9IHRlcm07CgoKCgogICAgZnByaW50ZihncG91dGZpbGUsICJcMDMzRVwwMzMmbDFYJXNcbiIs
IFBDTF9tb2RlLT5jb21tYW5kKTsKICAgIHQtPnhtYXggPSBQQ0xfbW9kZS0+eG1heDsKICAgIHQt
PnltYXggPSBQQ0xfbW9kZS0+eW1heDsKfQoKc3RhdGljIHZvaWQgSFBHTF9ncmFwaGljcygpCnsK
ICAgIGZwdXRzKCJcMDMzLllcblwwMzMuSTgxOzsxNzpcMDMzLk47MTk6XDAzMy5NNTAwOlxuIiwg
Z3BvdXRmaWxlKTsKCgoKICAgIGZwcmludGYoZ3BvdXRmaWxlLAogICAgICAgICAgICAiSU47JXNc
blNDMCwlZCwwLCVkO1xuU1IlZiwlZjtcbiIsCiAgICAgICAgICAgICgoZW5jb2RpbmcgPT0gMykg
fHwgKGVuY29kaW5nID09IDEpKSA/CiAgICAgICAgICAgICJDQTc7IiA6ICIiLAogICAgICAgICAg
ICAxMDAwMCwgNzUwMCwKICAgICAgICAgICAgKChkb3VibGUpICgoMTAwMDAvMTAwKjEyLzEwKSkg
KiAyMDAgLyAzIC8gMTAwMDApLAogICAgICAgICAgICAoKGRvdWJsZSkgKCg3NTAwLzEwMCozMi8x
MCkpICogMTAwIC8gMiAvIDc1MDApKTsKCgoKCgogICAgSFBHTF9hbmcgPSAwOwp9CgpzdGF0aWMg
dm9pZCBIUEdMMl9ncmFwaGljcygpCnsKCgoKCgogICAgZnByaW50ZihncG91dGZpbGUsICJJTlNQ
MVNEMSwlZCwyLCVkLCIsCiAgICAgICAgICAgIEhQR0wyX2ZvbnQtPnN5bWJvbF9zZXQsIEhQR0wy
X2ZvbnQtPnNwYWNpbmcpOwogICAgaWYgKEhQR0wyX2ZvbnQtPnNwYWNpbmcpCiAgICAgICAgZnBy
aW50ZihncG91dGZpbGUsICI0LCVmLCIsIEhQR0wyX2ZvbnQtPmhlaWdodCk7CiAgICBlbHNlCiAg
ICAgICAgZnByaW50ZihncG91dGZpbGUsICIzLCVmLCIsIEhQR0wyX2ZvbnQtPnBpdGNoKTsKICAg
IGZwcmludGYoZ3BvdXRmaWxlLCAiNSwlZCw2LCVkLDcsJWRcbiIsIEhQR0wyX2ZvbnQtPnBvc3R1
cmUsCiAgICAgICAgICAgIEhQR0wyX2ZvbnQtPnN0cm9rZV93ZWlnaHQsIEhQR0wyX2ZvbnQtPnR5
cGVmYWNlKTsKCgoKICAgIEhQR0xfYW5nID0gMDsKICAgIEhQR0wyX2luX3BlID0gMDsKICAgIEhQ
R0wyX2xvc3QgPSAxOwogICAgSFBHTF9wZW5zdGF0ZSA9IDE7Cn0KCnN0YXRpYyB2b2lkIFBDTF9n
cmFwaGljcygpCnsKCgoKICAgIGZwdXRzKCJcMDMzJTBCIiwgZ3BvdXRmaWxlKTsKICAgIEhQR0wy
X2dyYXBoaWNzKCk7Cn0KCnN0YXRpYyB2b2lkIEhQR0xfdGV4dCgpCnsKICAgIGlmIChIUEdMX2Vq
ZWN0ID09IDApIHsKICAgICAgICBmcHV0cygiUFVTUDA7XDAzMy5aXG5cMCIsIGdwb3V0ZmlsZSk7
CgoKCgoKICAgIH0gZWxzZSB7CiAgICAgICAgZnB1dHMoIlBVU1AwO1BHO1wwMzMuWlxuXDAiLCBn
cG91dGZpbGUpOwoKCgoKCgogICAgfQogICAgSFBHTF9wZW5zdGF0ZSA9IDE7Cn0KIyA3NTYgInRl
cm0vaHBnbC50cm0iCnN0YXRpYyB2b2lkIFBDTF90ZXh0KCkKewogICAgaWYgKEhQR0wyX2luX3Bl
KSB7CiAgICAgICAgZnB1dHMoIjtcbiIsIGdwb3V0ZmlsZSk7CiAgICAgICAgSFBHTDJfaW5fcGUg
PSAwOwogICAgfQoKCgogICAgZnB1dHMoIlwwMzMlMUFcMDMzJmwwSFxuXDAiLCBncG91dGZpbGUp
Owp9CgpzdGF0aWMgdm9pZCBIUEdMX2xpbmV0eXBlKGxpbmV0eXBlKQppbnQgbGluZXR5cGU7CnsK
CiAgICBsaW5ldHlwZSA9IChsaW5ldHlwZSArIDIpICUgSFBHTF9udW1wZW4gKyAxOwoKICAgIGlm
IChIUEdMX3BlbnR5cGUgIT0gbGluZXR5cGUpIHsKICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwg
IlBVO1xuU1AlZDtcbiIsIGxpbmV0eXBlKTsKICAgICAgICBIUEdMX3BlbnR5cGUgPSBsaW5ldHlw
ZTsKICAgICAgICBIUEdMX3BlbnN0YXRlID0gMTsKICAgIH0KfQoKc3RhdGljIHZvaWQgSFBHTDJf
bGluZXR5cGUobGluZXR5cGUpCmludCBsaW5ldHlwZTsKewoKCgogICAgaWYgKEhQR0wyX2luX3Bl
KSB7CiAgICAgICAgZnB1dHMoIjtcbiIsIGdwb3V0ZmlsZSk7CiAgICAgICAgSFBHTDJfaW5fcGUg
PSAwOwogICAgfQoKCgogICAgaWYgKGxpbmV0eXBlID49IDApCiAgICAgICAgbGluZXR5cGUgPSBs
aW5ldHlwZSAlICgoc2l6ZW9mKEhQR0wyX2x0KSAvIHNpemVvZihjaGFyICopKSAqIChzaXplb2Yo
SFBHTDJfcHcpIC8gc2l6ZW9mKGNoYXIgKikpKTsKICAgIGlmIChsaW5ldHlwZSAhPSBIUEdMX3Bl
bnR5cGUpIHsKICAgICAgICBpZiAobGluZXR5cGUgPj0gMCkgewogICAgICAgICAgICBmcHJpbnRm
KGdwb3V0ZmlsZSwgIlBXJXNMVCVzIiwKICAgICAgICAgICAgICAgICAgICBIUEdMMl9wd1tsaW5l
dHlwZSAvIChzaXplb2YoSFBHTDJfbHQpIC8gc2l6ZW9mKGNoYXIgKikpXSwKICAgICAgICAgICAg
ICAgICAgICBIUEdMMl9sdFtsaW5ldHlwZSAlIChzaXplb2YoSFBHTDJfbHQpIC8gc2l6ZW9mKGNo
YXIgKikpXSk7CiAgICAgICAgfSBlbHNlIGlmIChsaW5ldHlwZSA9PSAtMikKCgoKICAgICAgICAg
ICAgZnByaW50ZihncG91dGZpbGUsICJQVy4yTFQiKTsKICAgICAgICBlbHNlIGlmIChsaW5ldHlw
ZSA9PSAtMSkKCgoKICAgICAgICAgICAgZnByaW50ZihncG91dGZpbGUsICJQVy4xTFQxLC4yNSIp
OwogICAgICAgIEhQR0xfcGVudHlwZSA9IGxpbmV0eXBlOwogICAgfQp9CgpzdGF0aWMgdm9pZCBI
UEdMX3B1dF90ZXh0KHgsIHksIHN0cikKdW5zaWduZWQgaW50IHgsIHk7CmNoYXIgKnN0cjsKewog
ICAgaWYgKEhQR0xfYW5nID09IDEpCiAgICAgICAgSFBHTF9tb3ZlKHggKyAoNzUwMC8xMDAqMzIv
MTApIC8gNCwgeSk7CiAgICBlbHNlCiAgICAgICAgSFBHTF9tb3ZlKHgsIHkgLSAoNzUwMC8xMDAq
MzIvMTApIC8gNCk7CiAgICBpZiAoZW5jb2RpbmcgPT0gMykgewogICAgICAgIHVuc2lnbmVkIGNo
YXIgKnM7CiAgICAgICAgZnB1dHMoIkxCIiwgZ3BvdXRmaWxlKTsKICAgICAgICBmb3IgKHMgPSAo
dW5zaWduZWQgY2hhciAqKSBzdHI7ICpzOyArK3MpCiAgICAgICAgICAgIGlmICgqcyA+PSAxMjgg
JiYgaHBnbF9jcF84NTBbKnMgLSAxMjhdWzBdKQogICAgICAgICAgICAgICAgZnB1dHMoaHBnbF9j
cF84NTBbKnMgLSAxMjhdLCBncG91dGZpbGUpOwogICAgICAgICAgICBlbHNlCiAgICAgICAgICAg
ICAgICBfSU9fcHV0YyAoKnMsIGdwb3V0ZmlsZSk7CiAgICAgICAgZnB1dHMoIlwwMDNcbiIsIGdw
b3V0ZmlsZSk7CiAgICB9IGVsc2UgaWYgKGVuY29kaW5nID09IDEpIHsKICAgICAgICB1bnNpZ25l
ZCBjaGFyICpzOwogICAgICAgIGZwdXRzKCJMQiIsIGdwb3V0ZmlsZSk7CiAgICAgICAgZm9yIChz
ID0gKHVuc2lnbmVkIGNoYXIgKikgc3RyOyAqczsgKytzKQogICAgICAgICAgICBpZiAoKnMgPj0g
MTI4ICYmIGhwZ2xfaXNvXzg4NTlfMVsqcyAtIDEyOF1bMF0pCiAgICAgICAgICAgICAgICBmcHV0
cyhocGdsX2lzb184ODU5XzFbKnMgLSAxMjhdLCBncG91dGZpbGUpOwogICAgICAgICAgICBlbHNl
CiAgICAgICAgICAgICAgICBfSU9fcHV0YyAoKnMsIGdwb3V0ZmlsZSk7CiAgICAgICAgZnB1dHMo
IlwwMDNcbiIsIGdwb3V0ZmlsZSk7CiAgICB9IGVsc2UKICAgICAgICBmcHJpbnRmKGdwb3V0Zmls
ZSwgIkxCJXNcMDAzXG4iLCBzdHIpOwp9CgpzdGF0aWMgdm9pZCBIUEdMMl9wdXRfdGV4dCh4LCB5
LCBzdHIpCnVuc2lnbmVkIGludCB4LCB5OwpjaGFyICpzdHI7CnsKICAgIHN0cnVjdCBURVJNRU5U
UlkgKnQgPSB0ZXJtOwoKCgogICAgaWYgKEhQR0xfYW5nID09IDEpCiAgICAgICAgSFBHTDJfbW92
ZSh4ICsgdC0+dl9jaGFyIC8gNCwgeSk7CiAgICBlbHNlCiAgICAgICAgSFBHTDJfbW92ZSh4LCB5
IC0gdC0+dl9jaGFyIC8gNCk7CgoKCiAgICBpZiAoSFBHTDJfaW5fcGUpIHsKICAgICAgICBmcHV0
cygiO1xuIiwgZ3BvdXRmaWxlKTsKICAgICAgICBIUEdMMl9pbl9wZSA9IDA7CiAgICB9CgoKCiAg
ICBmcHJpbnRmKGdwb3V0ZmlsZSwgIkxCJXNcMDAzXG4iLCBzdHIpOwogICAgSFBHTDJfbG9zdCA9
IDE7Cn0KCgoKCgpzdGF0aWMgdm9pZCBIUEdMX21vdmUoeCwgeSkKdW5zaWduZWQgaW50IHgsIHk7
CnsKICAgIGlmIChIUEdMX3ggIT0geCB8fCBIUEdMX3kgIT0geSkgewogICAgICAgIGZwcmludGYo
Z3BvdXRmaWxlLCAiUFU7UEElZCwlZDtcbiIsIHgsIHkpOwogICAgICAgIEhQR0xfcGVuc3RhdGUg
PSAxOwogICAgICAgIEhQR0xfeCA9IHg7CiAgICAgICAgSFBHTF95ID0geTsKICAgIH0KfQoKc3Rh
dGljIHZvaWQgSFBHTF92ZWN0b3IoeCwgeSkKdW5zaWduZWQgaW50IHgsIHk7CnsKICAgIGlmIChI
UEdMX3BlbnN0YXRlICE9IDApIHsKICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgIlBEO1BBJWQs
JWQ7XG4iLCB4LCB5KTsKICAgICAgICBIUEdMX3BlbnN0YXRlID0gMDsKICAgIH0gZWxzZQogICAg
ICAgIGZwcmludGYoZ3BvdXRmaWxlLCAiUEElZCwlZDtcbiIsIHgsIHkpOwogICAgSFBHTF94ID0g
eDsKICAgIEhQR0xfeSA9IHk7Cn0KCnN0YXRpYyB2b2lkIEhQR0wyX21vdmUoeCwgeSkKdW5zaWdu
ZWQgaW50IHgsIHk7CnsKICAgIHJlZ2lzdGVyIGludCBkeCwgZHk7CiAgICBpZiAoSFBHTDJfaW5f
cGUpIHsKICAgICAgICBkeCA9IHggLSBIUEdMX3g7CiAgICAgICAgZHkgPSB5IC0gSFBHTF95Owog
ICAgICAgIGZwdXRzKCI8IiwgZ3BvdXRmaWxlKTsKICAgIH0gZWxzZSB7CgogICAgICAgIGZwdXRz
KCJQRTwiLCBncG91dGZpbGUpOwoKCgogICAgICAgIGlmIChIUEdMMl9sb3N0KSB7CiAgICAgICAg
ICAgIGR4ID0geDsKICAgICAgICAgICAgZHkgPSB5OwogICAgICAgICAgICBIUEdMMl9sb3N0ID0g
MDsKICAgICAgICAgICAgZnB1dHMoIj0iLCBncG91dGZpbGUpOwogICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgIGR4ID0geCAtIEhQR0xfeDsKICAgICAgICAgICAgZHkgPSB5IC0gSFBHTF95Owog
ICAgICAgIH0KICAgICAgICBIUEdMMl9pbl9wZSA9IDE7CiAgICB9CgoKCgogICAgSFBHTDJfZW5j
b2RlKGR4KTsKICAgIEhQR0wyX2VuY29kZShkeSk7CiAgICBmcHV0cygiXG4iLCBncG91dGZpbGUp
OwogICAgSFBHTF94ID0geDsKICAgIEhQR0xfeSA9IHk7Cn0KCnN0YXRpYyB2b2lkIEhQR0wyX3Zl
Y3Rvcih4LCB5KQp1bnNpZ25lZCBpbnQgeCwgeTsKewogICAgcmVnaXN0ZXIgaW50IGR4LCBkeTsK
ICAgIGlmIChIUEdMMl9pbl9wZSkgewogICAgICAgIGR4ID0geCAtIEhQR0xfeDsKICAgICAgICBk
eSA9IHkgLSBIUEdMX3k7CiAgICB9IGVsc2UgewoKICAgICAgICBmcHV0cygiUEUiLCBncG91dGZp
bGUpOwoKCgogICAgICAgIGlmIChIUEdMMl9sb3N0KSB7CiAgICAgICAgICAgIGR4ID0geDsKICAg
ICAgICAgICAgZHkgPSB5OwogICAgICAgICAgICBIUEdMMl9sb3N0ID0gMDsKICAgICAgICAgICAg
ZnB1dHMoIj0iLCBncG91dGZpbGUpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGR4ID0g
eCAtIEhQR0xfeDsKICAgICAgICAgICAgZHkgPSB5IC0gSFBHTF95OwogICAgICAgIH0KICAgICAg
ICBIUEdMMl9pbl9wZSA9IDE7CiAgICB9CiMgOTY5ICJ0ZXJtL2hwZ2wudHJtIgogICAgSFBHTDJf
ZW5jb2RlKGR4KTsKICAgIEhQR0wyX2VuY29kZShkeSk7CiAgICBmcHV0cygiXG4iLCBncG91dGZp
bGUpOwogICAgSFBHTF94ID0geDsKICAgIEhQR0xfeSA9IHk7Cn0KCgoKCgpzdGF0aWMgdm9pZCBI
UEdMMl9lbmNvZGUoZCkKcmVnaXN0ZXIgaW50IGQ7CnsKICAgIHJlZ2lzdGVyIGludCBjOwogICAg
aWYgKChkIDw8PSAxKSA8IDApCiAgICAgICAgZCA9IDEgLSBkOwogICAgZG8gewogICAgICAgIGMg
PSBkICYgNjM7CiAgICAgICAgZCA+Pj0gNjsKICAgICAgICBpZiAoZCA+IDApCiAgICAgICAgICAg
IGZwdXRjKChjaGFyKSAoYyArIDYzKSwgZ3BvdXRmaWxlKTsKICAgICAgICBlbHNlCiAgICAgICAg
ICAgIGZwdXRjKChjaGFyKSAoYyArIDE5MSksIGdwb3V0ZmlsZSk7CiAgICB9IHdoaWxlIChkID4g
MCk7Cn0KCnN0YXRpYyBpbnQgSFBHTF90ZXh0X2FuZ2xlKGFuZykKaW50IGFuZzsKewogICAgSFBH
TF9hbmcgPSBhbmc7CiAgICBpZiAoYW5nID09IDEpCgoKCiAgICAgICAgZnB1dHMoIkRJMCwxO1xu
IiwgZ3BvdXRmaWxlKTsKICAgIGVsc2UKCgoKICAgICAgICBmcHV0cygiREkxLDA7XG4iLCBncG91
dGZpbGUpOwogICAgcmV0dXJuIDE7Cn0KCnN0YXRpYyBpbnQgSFBHTDJfdGV4dF9hbmdsZShhbmcp
CmludCBhbmc7CnsKCgoKICAgIGlmIChIUEdMMl9pbl9wZSkgewogICAgICAgIGZwdXRzKCI7Iiwg
Z3BvdXRmaWxlKTsKICAgICAgICBIUEdMMl9pbl9wZSA9IDA7CiAgICB9CiAgICBpZiAoYW5nID09
IDEpCgoKCiAgICAgICAgZnB1dHMoIkRJMCwxIiwgZ3BvdXRmaWxlKTsKICAgIGVsc2UKCgoKICAg
ICAgICBmcHV0cygiREkxLDAiLCBncG91dGZpbGUpOwogICAgSFBHTF9hbmcgPSBhbmc7CiAgICBy
ZXR1cm4gMTsKfQoKc3RhdGljIHZvaWQgSFBHTF9yZXNldCgpCnsKCgoKfQojIDEwNTcgInRlcm0v
aHBnbC50cm0iCnN0YXRpYyB2b2lkIFBDTF9yZXNldCgpCnsKCgoKCiAgICBmcHV0cygiXDAzMyUw
QVwwMzNFXG4iLCBncG91dGZpbGUpOwp9CgpzdGF0aWMgaW50IEhQR0wyX2p1c3RpZnlfdGV4dChq
dXN0KQplbnVtIEpVU1RJRlkganVzdDsKewoKCgogICAgaWYgKEhQR0wyX2luX3BlKSB7CiAgICAg
ICAgZnB1dHMoIjtcbiIsIGdwb3V0ZmlsZSk7CiAgICAgICAgSFBHTDJfaW5fcGUgPSAwOwogICAg
fQogICAgc3dpdGNoIChqdXN0KSB7CiAgICBjYXNlIExFRlQ6CiAgICAgICAgZnB1dHMoIkxPMSIs
IGdwb3V0ZmlsZSk7CiAgICAgICAgYnJlYWs7CiAgICBjYXNlIENFTlRSRToKICAgICAgICBmcHV0
cygiTE80IiwgZ3BvdXRmaWxlKTsKICAgICAgICBicmVhazsKICAgIGNhc2UgUklHSFQ6CiAgICAg
ICAgZnB1dHMoIkxPNyIsIGdwb3V0ZmlsZSk7CiAgICAgICAgYnJlYWs7CiAgICBkZWZhdWx0Ogog
ICAgICAgIHJldHVybiAwOwogICAgfQogICAgcmV0dXJuIDE7Cn0KIyAzMDQgInRlcm0uaCIgMgoK
CiMgMSAidGVybS9ocGxqaWkudHJtIiAxCiMgNjggInRlcm0vaHBsamlpLnRybSIKIyAxICJ0ZXJt
L2RyaXZlci5oIiAxCiMgNjkgInRlcm0vaHBsamlpLnRybSIgMgoKCgoKCgoKc3RhdGljIHZvaWQg
SFBMSklJb3B0aW9ucyAodm9pZCk7CnN0YXRpYyB2b2lkIEhQTEpJSWluaXQgKHZvaWQpOwpzdGF0
aWMgdm9pZCBIUExKSUlncmFwaGljcyAodm9pZCk7CnN0YXRpYyB2b2lkIEhQTEpJSXRleHQgKHZv
aWQpOwpzdGF0aWMgdm9pZCBIUExKSUlsaW5ldHlwZSAoaW50IGxpbmV0eXBlKTsKc3RhdGljIHZv
aWQgSFBMSklJcHV0X3RleHQgKHVuc2lnbmVkIGludCB4LCB1bnNpZ25lZCBpbnQgeSwgY2hhciAq
c3RyKTsKc3RhdGljIHZvaWQgSFBMSklJcmVzZXQgKHZvaWQpOwoKCgpzdGF0aWMgdm9pZCBIUERK
Z3JhcGhpY3MgKHZvaWQpOwpzdGF0aWMgdm9pZCBIUERKdGV4dCAodm9pZCk7CiMgMTIzICJ0ZXJt
L2hwbGppaS50cm0iCnZvaWQgSFBMSklJcHV0YyAodW5zaWduZWQgaW50IHgsIHVuc2lnbmVkIGlu
dCB5LCBjaGFyIGMsIGludCBhbmcpOwpzdGF0aWMgaW50IGhwbGpfZHBwID0gNDsKIyAxMzUgInRl
cm0vaHBsamlpLnRybSIKc3RhdGljIHZvaWQgSFBMSklJb3B0aW9ucygpCnsKICAgIGNoYXIgb3B0
WzRdOwogICAgaW50IHBhcnNlX2Vycm9yID0gMDsKCiAgICBpZiAoKGNfdG9rZW4gPj0gbnVtX3Rv
a2VucyB8fCBlcXVhbHMoY190b2tlbiwiOyIpKSkgewogICAgICAgIHRlcm1fb3B0aW9uc1swXSA9
ICgnXDAnKTsKICAgIH0gZWxzZSB7CiAgICAgICAgaWYgKHRva2VuW2NfdG9rZW5dLmxlbmd0aCA+
IDMpIHsKICAgICAgICAgICAgcGFyc2VfZXJyb3IgPSAxOwogICAgICAgIH0gZWxzZSB7CgogICAg
ICAgICAgICBjYXB0dXJlKG9wdCwgY190b2tlbiwgY190b2tlbiwgNCk7CiAgICAgICAgICAgIGlm
ICghX19leHRlbnNpb25fXyAoeyBzaXplX3QgX19zMV9sZW4sIF9fczJfbGVuOyAoX19idWlsdGlu
X2NvbnN0YW50X3AgKG9wdCkgJiYgX19idWlsdGluX2NvbnN0YW50X3AgKCI3NSIpICYmIChfX3Mx
X2xlbiA9IHN0cmxlbiAob3B0KSwgX19zMl9sZW4gPSBzdHJsZW4gKCI3NSIpLCAoISgoc2l6ZV90
KShjb25zdCB2b2lkICopKChvcHQpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKG9wdCkg
PT0gMSkgfHwgX19zMV9sZW4gPj0gNCkgJiYgKCEoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoIjc1
IikgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoIjc1IikgPT0gMSkgfHwgX19zMl9sZW4g
Pj0gNCkpID8gbWVtY21wICgoX19jb25zdCBjaGFyICopIChvcHQpLCAoX19jb25zdCBjaGFyICop
ICgiNzUiKSwgKF9fczFfbGVuIDwgX19zMl9sZW4gPyBfX3MxX2xlbiA6IF9fczJfbGVuKSArIDEp
IDogKF9fYnVpbHRpbl9jb25zdGFudF9wIChvcHQpICYmICgoc2l6ZV90KShjb25zdCB2b2lkICop
KChvcHQpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKG9wdCkgPT0gMSkgJiYgKF9fczFf
bGVuID0gc3RybGVuIChvcHQpLCBfX3MxX2xlbiA8IDQpID8gKF9fYnVpbHRpbl9jb25zdGFudF9w
ICgiNzUiKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoIjc1IikgKyAxKSAtIChzaXplX3Qp
KGNvbnN0IHZvaWQgKikoIjc1IikgPT0gMSkgPyAoX19leHRlbnNpb25fXyAoeyByZWdpc3RlciBp
bnQgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAq
KSAob3B0KSlbMF0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop
KCI3NSIpKVswXSk7IGlmIChfX3MxX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3Vs
dCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChvcHQpKVsx
XSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCI3NSIpKVsx
XSk7IGlmIChfX3MxX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9f
Y29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChvcHQpKVsyXSAtICgoX19j
b25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCI3NSIpKVsyXSk7IGlmIChf
X3MxX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2ln
bmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAob3B0KSlbM10gLSAoKF9fY29uc3QgdW5zaWdu
ZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiNzUiKSlbM10pOyB9IH0gX19yZXN1bHQ7IH0p
KSA6IChfX2V4dGVuc2lvbl9fICh7IF9fY29uc3QgdW5zaWduZWQgY2hhciAqX19zMiA9IChfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIjc1Iik7IHJlZ2lzdGVyIGlu
dCBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop
IChvcHQpKVswXSAtIF9fczJbMF0pOyBpZiAoX19zMV9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDAp
IHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAq
KSAob3B0KSlbMV0gLSBfX3MyWzFdKTsgaWYgKF9fczFfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAw
KSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIg
KikgKG9wdCkpWzJdIC0gX19zMlsyXSk7IGlmIChfX3MxX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0g
MCkgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAq
KSAob3B0KSlbM10gLSBfX3MyWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkpIDogKF9fYnVpbHRpbl9j
b25zdGFudF9wICgiNzUiKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoIjc1IikgKyAxKSAt
IChzaXplX3QpKGNvbnN0IHZvaWQgKikoIjc1IikgPT0gMSkgJiYgKF9fczJfbGVuID0gc3RybGVu
ICgiNzUiKSwgX19zMl9sZW4gPCA0KSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCAob3B0KSAmJiAo
KHNpemVfdCkoY29uc3Qgdm9pZCAqKSgob3B0KSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAq
KShvcHQpID09IDEpID8gKF9fZXh0ZW5zaW9uX18gKHsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0g
KCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG9wdCkpWzBdIC0g
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSgiNzUiKSlbMF0pOyBp
ZiAoX19zMl9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAob3B0KSlbMV0gLSAoKF9fY29uc3Qg
dW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiNzUiKSlbMV0pOyBpZiAoX19zMl9s
ZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAob3B0KSlbMl0gLSAoKF9fY29uc3QgdW5zaWduZWQg
Y2hhciAqKSAoX19jb25zdCBjaGFyICopICgiNzUiKSlbMl0pOyBpZiAoX19zMl9sZW4gPiAyICYm
IF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf
X2NvbnN0IGNoYXIgKikgKG9wdCkpWzNdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9f
Y29uc3QgY2hhciAqKSAoIjc1IikpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkgOiAoX19leHRlbnNp
b25fXyAoeyBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKl9fczEgPSAoX19jb25zdCB1bnNpZ25lZCBj
aGFyICopIChfX2NvbnN0IGNoYXIgKikgKG9wdCk7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9IF9f
czFbMF0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiNzUi
KSlbMF07IGlmIChfX3MyX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9IChf
X3MxWzFdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIjc1
IikpWzFdKTsgaWYgKF9fczJfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0g
KF9fczFbMl0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgi
NzUiKSlbMl0pOyBpZiAoX19zMl9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0g
KF9fczFbM10gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgi
NzUiKSlbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSkgOiBzdHJjbXAgKG9wdCwgIjc1IikpKSk7IH0p
KSB7CiAgICAgICAgICAgICAgICBocGxqX2RwcCA9IDQ7CiAgICAgICAgICAgIH0gZWxzZSBpZiAo
IV9fZXh0ZW5zaW9uX18gKHsgc2l6ZV90IF9fczFfbGVuLCBfX3MyX2xlbjsgKF9fYnVpbHRpbl9j
b25zdGFudF9wIChvcHQpICYmIF9fYnVpbHRpbl9jb25zdGFudF9wICgiMTAwIikgJiYgKF9fczFf
bGVuID0gc3RybGVuIChvcHQpLCBfX3MyX2xlbiA9IHN0cmxlbiAoIjEwMCIpLCAoISgoc2l6ZV90
KShjb25zdCB2b2lkICopKChvcHQpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKG9wdCkg
PT0gMSkgfHwgX19zMV9sZW4gPj0gNCkgJiYgKCEoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoIjEw
MCIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKCIxMDAiKSA9PSAxKSB8fCBfX3MyX2xl
biA+PSA0KSkgPyBtZW1jbXAgKChfX2NvbnN0IGNoYXIgKikgKG9wdCksIChfX2NvbnN0IGNoYXIg
KikgKCIxMDAiKSwgKF9fczFfbGVuIDwgX19zMl9sZW4gPyBfX3MxX2xlbiA6IF9fczJfbGVuKSAr
IDEpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wIChvcHQpICYmICgoc2l6ZV90KShjb25zdCB2b2lk
ICopKChvcHQpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKG9wdCkgPT0gMSkgJiYgKF9f
czFfbGVuID0gc3RybGVuIChvcHQpLCBfX3MxX2xlbiA8IDQpID8gKF9fYnVpbHRpbl9jb25zdGFu
dF9wICgiMTAwIikgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCIxMDAiKSArIDEpIC0gKHNp
emVfdCkoY29uc3Qgdm9pZCAqKSgiMTAwIikgPT0gMSkgPyAoX19leHRlbnNpb25fXyAoeyByZWdp
c3RlciBpbnQgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg
Y2hhciAqKSAob3B0KSlbMF0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBj
aGFyICopKCIxMDAiKSlbMF0pOyBpZiAoX19zMV9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsg
X19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAo
b3B0KSlbMV0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgi
MTAwIikpWzFdKTsgaWYgKF9fczFfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0
ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG9wdCkpWzJd
IC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIjEwMCIpKVsy
XSk7IGlmIChfX3MxX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoKChfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAob3B0KSlbM10gLSAoKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiMTAwIikpWzNdKTsgfSB9IF9f
cmVzdWx0OyB9KSkgOiAoX19leHRlbnNpb25fXyAoeyBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKl9f
czIgPSAoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCIxMDAiKTsg
cmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikgKG9wdCkpWzBdIC0gX19zMlswXSk7IGlmIChfX3MxX2xlbiA+IDAgJiYgX19y
ZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19j
b25zdCBjaGFyICopIChvcHQpKVsxXSAtIF9fczJbMV0pOyBpZiAoX19zMV9sZW4gPiAxICYmIF9f
cmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9f
Y29uc3QgY2hhciAqKSAob3B0KSlbMl0gLSBfX3MyWzJdKTsgaWYgKF9fczFfbGVuID4gMiAmJiBf
X3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19j
b25zdCBjaGFyICopIChvcHQpKVszXSAtIF9fczJbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSkgOiAo
X19idWlsdGluX2NvbnN0YW50X3AgKCIxMDAiKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgo
IjEwMCIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKCIxMDAiKSA9PSAxKSAmJiAoX19z
Ml9sZW4gPSBzdHJsZW4gKCIxMDAiKSwgX19zMl9sZW4gPCA0KSA/IChfX2J1aWx0aW5fY29uc3Rh
bnRfcCAob3B0KSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgob3B0KSArIDEpIC0gKHNpemVf
dCkoY29uc3Qgdm9pZCAqKShvcHQpID09IDEpID8gKF9fZXh0ZW5zaW9uX18gKHsgcmVnaXN0ZXIg
aW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIg
KikgKG9wdCkpWzBdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAq
KSgiMTAwIikpWzBdKTsgaWYgKF9fczJfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVz
dWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG9wdCkp
WzFdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIjEwMCIp
KVsxXSk7IGlmIChfX3MyX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgo
KF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChvcHQpKVsyXSAtICgo
X19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCIxMDAiKSlbMl0pOyBp
ZiAoX19zMl9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgoX19jb25zdCB1
bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG9wdCkpWzNdIC0gKChfX2NvbnN0IHVu
c2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIjEwMCIpKVszXSk7IH0gfSBfX3Jlc3Vs
dDsgfSkpIDogKF9fZXh0ZW5zaW9uX18gKHsgX19jb25zdCB1bnNpZ25lZCBjaGFyICpfX3MxID0g
KF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChvcHQpOyByZWdpc3Rl
ciBpbnQgX19yZXN1bHQgPSBfX3MxWzBdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9f
Y29uc3QgY2hhciAqKSAoIjEwMCIpKVswXTsgaWYgKF9fczJfbGVuID4gMCAmJiBfX3Jlc3VsdCA9
PSAwKSB7IF9fcmVzdWx0ID0gKF9fczFbMV0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAo
X19jb25zdCBjaGFyICopICgiMTAwIikpWzFdKTsgaWYgKF9fczJfbGVuID4gMSAmJiBfX3Jlc3Vs
dCA9PSAwKSB7IF9fcmVzdWx0ID0gKF9fczFbMl0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAq
KSAoX19jb25zdCBjaGFyICopICgiMTAwIikpWzJdKTsgaWYgKF9fczJfbGVuID4gMiAmJiBfX3Jl
c3VsdCA9PSAwKSBfX3Jlc3VsdCA9IChfX3MxWzNdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIg
KikgKF9fY29uc3QgY2hhciAqKSAoIjEwMCIpKVszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpKSA6IHN0
cmNtcCAob3B0LCAiMTAwIikpKSk7IH0pKSB7CiAgICAgICAgICAgICAgICBocGxqX2RwcCA9IDM7
CiAgICAgICAgICAgIH0gZWxzZSBpZiAoIV9fZXh0ZW5zaW9uX18gKHsgc2l6ZV90IF9fczFfbGVu
LCBfX3MyX2xlbjsgKF9fYnVpbHRpbl9jb25zdGFudF9wIChvcHQpICYmIF9fYnVpbHRpbl9jb25z
dGFudF9wICgiMTUwIikgJiYgKF9fczFfbGVuID0gc3RybGVuIChvcHQpLCBfX3MyX2xlbiA9IHN0
cmxlbiAoIjE1MCIpLCAoISgoc2l6ZV90KShjb25zdCB2b2lkICopKChvcHQpICsgMSkgLSAoc2l6
ZV90KShjb25zdCB2b2lkICopKG9wdCkgPT0gMSkgfHwgX19zMV9sZW4gPj0gNCkgJiYgKCEoKHNp
emVfdCkoY29uc3Qgdm9pZCAqKSgoIjE1MCIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICop
KCIxNTAiKSA9PSAxKSB8fCBfX3MyX2xlbiA+PSA0KSkgPyBtZW1jbXAgKChfX2NvbnN0IGNoYXIg
KikgKG9wdCksIChfX2NvbnN0IGNoYXIgKikgKCIxNTAiKSwgKF9fczFfbGVuIDwgX19zMl9sZW4g
PyBfX3MxX2xlbiA6IF9fczJfbGVuKSArIDEpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wIChvcHQp
ICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKChvcHQpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2
b2lkICopKG9wdCkgPT0gMSkgJiYgKF9fczFfbGVuID0gc3RybGVuIChvcHQpLCBfX3MxX2xlbiA8
IDQpID8gKF9fYnVpbHRpbl9jb25zdGFudF9wICgiMTUwIikgJiYgKChzaXplX3QpKGNvbnN0IHZv
aWQgKikoKCIxNTAiKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgiMTUwIikgPT0gMSkg
PyAoX19leHRlbnNpb25fXyAoeyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVu
c2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAob3B0KSlbMF0gLSAoKF9fY29uc3QgdW5z
aWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopKCIxNTAiKSlbMF0pOyBpZiAoX19zMV9sZW4g
PiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNo
YXIgKikgKF9fY29uc3QgY2hhciAqKSAob3B0KSlbMV0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hh
ciAqKSAoX19jb25zdCBjaGFyICopICgiMTUwIikpWzFdKTsgaWYgKF9fczFfbGVuID4gMSAmJiBf
X3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf
X2NvbnN0IGNoYXIgKikgKG9wdCkpWzJdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9f
Y29uc3QgY2hhciAqKSAoIjE1MCIpKVsyXSk7IGlmIChfX3MxX2xlbiA+IDIgJiYgX19yZXN1bHQg
PT0gMCkgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh
ciAqKSAob3B0KSlbM10gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFy
ICopICgiMTUwIikpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkgOiAoX19leHRlbnNpb25fXyAoeyBf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKl9fczIgPSAoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf
X2NvbnN0IGNoYXIgKikgKCIxNTAiKTsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25z
dCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG9wdCkpWzBdIC0gX19zMlswXSk7
IGlmIChfX3MxX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChvcHQpKVsxXSAtIF9fczJbMV0p
OyBpZiAoX19zMV9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAob3B0KSlbMl0gLSBfX3MyWzJd
KTsgaWYgKF9fczFfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChvcHQpKVszXSAtIF9fczJbM10p
OyB9IH0gX19yZXN1bHQ7IH0pKSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AgKCIxNTAiKSAmJiAo
KHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoIjE1MCIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lk
ICopKCIxNTAiKSA9PSAxKSAmJiAoX19zMl9sZW4gPSBzdHJsZW4gKCIxNTAiKSwgX19zMl9sZW4g
PCA0KSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCAob3B0KSAmJiAoKHNpemVfdCkoY29uc3Qgdm9p
ZCAqKSgob3B0KSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKShvcHQpID09IDEpID8gKF9f
ZXh0ZW5zaW9uX18gKHsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25l
ZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG9wdCkpWzBdIC0gKChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSgiMTUwIikpWzBdKTsgaWYgKF9fczJfbGVuID4gMCAm
JiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikgKG9wdCkpWzFdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikg
KF9fY29uc3QgY2hhciAqKSAoIjE1MCIpKVsxXSk7IGlmIChfX3MyX2xlbiA+IDEgJiYgX19yZXN1
bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25z
dCBjaGFyICopIChvcHQpKVsyXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0
IGNoYXIgKikgKCIxNTAiKSlbMl0pOyBpZiAoX19zMl9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDAp
IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KG9wdCkpWzNdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAo
IjE1MCIpKVszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpIDogKF9fZXh0ZW5zaW9uX18gKHsgX19jb25z
dCB1bnNpZ25lZCBjaGFyICpfX3MxID0gKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25z
dCBjaGFyICopIChvcHQpOyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSBfX3MxWzBdIC0gKChfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIjE1MCIpKVswXTsgaWYgKF9f
czJfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKF9fczFbMV0gLSAoKF9f
Y29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiMTUwIikpWzFdKTsgaWYg
KF9fczJfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKF9fczFbMl0gLSAo
KF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiMTUwIikpWzJdKTsg
aWYgKF9fczJfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9IChfX3MxWzNdIC0g
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIjE1MCIpKVszXSk7
IH0gfSBfX3Jlc3VsdDsgfSkpKSA6IHN0cmNtcCAob3B0LCAiMTUwIikpKSk7IH0pKSB7CiAgICAg
ICAgICAgICAgICBocGxqX2RwcCA9IDI7CiAgICAgICAgICAgIH0gZWxzZSBpZiAoIV9fZXh0ZW5z
aW9uX18gKHsgc2l6ZV90IF9fczFfbGVuLCBfX3MyX2xlbjsgKF9fYnVpbHRpbl9jb25zdGFudF9w
IChvcHQpICYmIF9fYnVpbHRpbl9jb25zdGFudF9wICgiMzAwIikgJiYgKF9fczFfbGVuID0gc3Ry
bGVuIChvcHQpLCBfX3MyX2xlbiA9IHN0cmxlbiAoIjMwMCIpLCAoISgoc2l6ZV90KShjb25zdCB2
b2lkICopKChvcHQpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKG9wdCkgPT0gMSkgfHwg
X19zMV9sZW4gPj0gNCkgJiYgKCEoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoIjMwMCIpICsgMSkg
LSAoc2l6ZV90KShjb25zdCB2b2lkICopKCIzMDAiKSA9PSAxKSB8fCBfX3MyX2xlbiA+PSA0KSkg
PyBtZW1jbXAgKChfX2NvbnN0IGNoYXIgKikgKG9wdCksIChfX2NvbnN0IGNoYXIgKikgKCIzMDAi
KSwgKF9fczFfbGVuIDwgX19zMl9sZW4gPyBfX3MxX2xlbiA6IF9fczJfbGVuKSArIDEpIDogKF9f
YnVpbHRpbl9jb25zdGFudF9wIChvcHQpICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKChvcHQp
ICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKG9wdCkgPT0gMSkgJiYgKF9fczFfbGVuID0g
c3RybGVuIChvcHQpLCBfX3MxX2xlbiA8IDQpID8gKF9fYnVpbHRpbl9jb25zdGFudF9wICgiMzAw
IikgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCIzMDAiKSArIDEpIC0gKHNpemVfdCkoY29u
c3Qgdm9pZCAqKSgiMzAwIikgPT0gMSkgPyAoX19leHRlbnNpb25fXyAoeyByZWdpc3RlciBpbnQg
X19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAo
b3B0KSlbMF0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopKCIz
MDAiKSlbMF0pOyBpZiAoX19zMV9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQg
PSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAob3B0KSlbMV0g
LSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiMzAwIikpWzFd
KTsgaWYgKF9fczFfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19j
b25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG9wdCkpWzJdIC0gKChfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIjMwMCIpKVsyXSk7IGlmIChf
X3MxX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2ln
bmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAob3B0KSlbM10gLSAoKF9fY29uc3QgdW5zaWdu
ZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiMzAwIikpWzNdKTsgfSB9IF9fcmVzdWx0OyB9
KSkgOiAoX19leHRlbnNpb25fXyAoeyBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKl9fczIgPSAoX19j
b25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCIzMDAiKTsgcmVnaXN0ZXIg
aW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIg
KikgKG9wdCkpWzBdIC0gX19zMlswXSk7IGlmIChfX3MxX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0g
MCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFy
ICopIChvcHQpKVsxXSAtIF9fczJbMV0pOyBpZiAoX19zMV9sZW4gPiAxICYmIF9fcmVzdWx0ID09
IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh
ciAqKSAob3B0KSlbMl0gLSBfX3MyWzJdKTsgaWYgKF9fczFfbGVuID4gMiAmJiBfX3Jlc3VsdCA9
PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFy
ICopIChvcHQpKVszXSAtIF9fczJbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSkgOiAoX19idWlsdGlu
X2NvbnN0YW50X3AgKCIzMDAiKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoIjMwMCIpICsg
MSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKCIzMDAiKSA9PSAxKSAmJiAoX19zMl9sZW4gPSBz
dHJsZW4gKCIzMDAiKSwgX19zMl9sZW4gPCA0KSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCAob3B0
KSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgob3B0KSArIDEpIC0gKHNpemVfdCkoY29uc3Qg
dm9pZCAqKShvcHQpID09IDEpID8gKF9fZXh0ZW5zaW9uX18gKHsgcmVnaXN0ZXIgaW50IF9fcmVz
dWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG9wdCkp
WzBdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSgiMzAwIikp
WzBdKTsgaWYgKF9fczJfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgo
X19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG9wdCkpWzFdIC0gKChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIjMwMCIpKVsxXSk7IGlm
IChfX3MyX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3Qg
dW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChvcHQpKVsyXSAtICgoX19jb25zdCB1
bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCIzMDAiKSlbMl0pOyBpZiAoX19zMl9s
ZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBj
aGFyICopIChfX2NvbnN0IGNoYXIgKikgKG9wdCkpWzNdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNo
YXIgKikgKF9fY29uc3QgY2hhciAqKSAoIjMwMCIpKVszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpIDog
KF9fZXh0ZW5zaW9uX18gKHsgX19jb25zdCB1bnNpZ25lZCBjaGFyICpfX3MxID0gKF9fY29uc3Qg
dW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChvcHQpOyByZWdpc3RlciBpbnQgX19y
ZXN1bHQgPSBfX3MxWzBdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh
ciAqKSAoIjMwMCIpKVswXTsgaWYgKF9fczJfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9f
cmVzdWx0ID0gKF9fczFbMV0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBj
aGFyICopICgiMzAwIikpWzFdKTsgaWYgKF9fczJfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7
IF9fcmVzdWx0ID0gKF9fczFbMl0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25z
dCBjaGFyICopICgiMzAwIikpWzJdKTsgaWYgKF9fczJfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAw
KSBfX3Jlc3VsdCA9IChfX3MxWzNdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29u
c3QgY2hhciAqKSAoIjMwMCIpKVszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpKSA6IHN0cmNtcCAob3B0
LCAiMzAwIikpKSk7IH0pKSB7CiAgICAgICAgICAgICAgICBocGxqX2RwcCA9IDE7CiAgICAgICAg
ICAgIH0gZWxzZSB7CgogICAgICAgICAgICAgICAgcGFyc2VfZXJyb3IgPSAxOwogICAgICAgICAg
ICB9CiAgICAgICAgICAgIGNfdG9rZW4rKzsKICAgICAgICB9CiAgICB9CgogICAgdGVybS0+eG1h
eCA9ICg4Kih1bnNpZ25lZCBpbnQpKHhzaXplKjE5MjAvKGhwbGpfZHBwKS84LjArMC45KSk7CiAg
ICB0ZXJtLT55bWF4ID0gKDgqKHVuc2lnbmVkIGludCkoeXNpemUqMTkyMC8oaHBsal9kcHApLzgu
MCswLjkpKTsKICAgIHN3aXRjaCAoaHBsal9kcHApIHsKICAgIGNhc2UgMToKICAgICAgICAoX19l
eHRlbnNpb25fXyAoX19idWlsdGluX2NvbnN0YW50X3AgKCIzMDAiKSA/ICgoKHNpemVfdCkoY29u
c3Qgdm9pZCAqKSgoIjMwMCIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKCIzMDAiKSA9
PSAxKSAmJiBzdHJsZW4gKCIzMDAiKSArIDEgPD0gOCA/IF9fc3RyY3B5X3NtYWxsICh0ZXJtX29w
dGlvbnMsIF9fZXh0ZW5zaW9uX18gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0
IGNoYXIgKikgKCIzMDAiKSlbMCArIDFdIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAq
KSAoX19jb25zdCBjaGFyICopICgiMzAwIikpWzBdKSwgX19leHRlbnNpb25fXyAoKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIjMwMCIpKVs0ICsgMV0gPDwgOCB8
ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCIzMDAiKSlbNF0p
LCBfX2V4dGVuc2lvbl9fICgoKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNo
YXIgKikgKCIzMDAiKSlbMCArIDNdIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAo
X19jb25zdCBjaGFyICopICgiMzAwIikpWzAgKyAyXSkgPDwgOCB8ICgoX19jb25zdCB1bnNpZ25l
ZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCIzMDAiKSlbMCArIDFdKSA8PCA4IHwgKChfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIjMwMCIpKVswXSksIF9fZXh0
ZW5zaW9uX18gKCgoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAo
IjMwMCIpKVs0ICsgM10gPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0
IGNoYXIgKikgKCIzMDAiKSlbNCArIDJdKSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIg
KikgKF9fY29uc3QgY2hhciAqKSAoIjMwMCIpKVs0ICsgMV0pIDw8IDggfCAoKF9fY29uc3QgdW5z
aWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiMzAwIikpWzRdKSwgc3RybGVuICgiMzAw
IikgKyAxKSA6IChjaGFyICopIG1lbWNweSAodGVybV9vcHRpb25zLCAiMzAwIiwgc3RybGVuICgi
MzAwIikgKyAxKSkgOiBzdHJjcHkgKHRlcm1fb3B0aW9ucywgIjMwMCIpKSk7CiAgICAgICAgdGVy
bS0+dl90aWMgPSAxNTsKICAgICAgICB0ZXJtLT5oX3RpYyA9IDE1OwogICAgICAgIGJyZWFrOwog
ICAgY2FzZSAyOgogICAgICAgIChfX2V4dGVuc2lvbl9fIChfX2J1aWx0aW5fY29uc3RhbnRfcCAo
IjE1MCIpID8gKCgoc2l6ZV90KShjb25zdCB2b2lkICopKCgiMTUwIikgKyAxKSAtIChzaXplX3Qp
KGNvbnN0IHZvaWQgKikoIjE1MCIpID09IDEpICYmIHN0cmxlbiAoIjE1MCIpICsgMSA8PSA4ID8g
X19zdHJjcHlfc21hbGwgKHRlcm1fb3B0aW9ucywgX19leHRlbnNpb25fXyAoKChfX2NvbnN0IHVu
c2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIjE1MCIpKVswICsgMV0gPDwgOCB8ICgo
X19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCIxNTAiKSlbMF0pLCBf
X2V4dGVuc2lvbl9fICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop
ICgiMTUwIikpWzQgKyAxXSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29u
c3QgY2hhciAqKSAoIjE1MCIpKVs0XSksIF9fZXh0ZW5zaW9uX18gKCgoKChfX2NvbnN0IHVuc2ln
bmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIjE1MCIpKVswICsgM10gPDwgOCB8ICgoX19j
b25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCIxNTAiKSlbMCArIDJdKSA8
PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIjE1MCIp
KVswICsgMV0pIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFy
ICopICgiMTUwIikpWzBdKSwgX19leHRlbnNpb25fXyAoKCgoKF9fY29uc3QgdW5zaWduZWQgY2hh
ciAqKSAoX19jb25zdCBjaGFyICopICgiMTUwIikpWzQgKyAzXSA8PCA4IHwgKChfX2NvbnN0IHVu
c2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIjE1MCIpKVs0ICsgMl0pIDw8IDggfCAo
KF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiMTUwIikpWzQgKyAx
XSkgPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCIx
NTAiKSlbNF0pLCBzdHJsZW4gKCIxNTAiKSArIDEpIDogKGNoYXIgKikgbWVtY3B5ICh0ZXJtX29w
dGlvbnMsICIxNTAiLCBzdHJsZW4gKCIxNTAiKSArIDEpKSA6IHN0cmNweSAodGVybV9vcHRpb25z
LCAiMTUwIikpKTsKICAgICAgICB0ZXJtLT52X3RpYyA9IDg7CiAgICAgICAgdGVybS0+aF90aWMg
PSA4OwogICAgICAgIGJyZWFrOwogICAgY2FzZSAzOgogICAgICAgIChfX2V4dGVuc2lvbl9fIChf
X2J1aWx0aW5fY29uc3RhbnRfcCAoIjEwMCIpID8gKCgoc2l6ZV90KShjb25zdCB2b2lkICopKCgi
MTAwIikgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoIjEwMCIpID09IDEpICYmIHN0cmxl
biAoIjEwMCIpICsgMSA8PSA4ID8gX19zdHJjcHlfc21hbGwgKHRlcm1fb3B0aW9ucywgX19leHRl
bnNpb25fXyAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIjEw
MCIpKVswICsgMV0gPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNo
YXIgKikgKCIxMDAiKSlbMF0pLCBfX2V4dGVuc2lvbl9fICgoKF9fY29uc3QgdW5zaWduZWQgY2hh
ciAqKSAoX19jb25zdCBjaGFyICopICgiMTAwIikpWzQgKyAxXSA8PCA4IHwgKChfX2NvbnN0IHVu
c2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIjEwMCIpKVs0XSksIF9fZXh0ZW5zaW9u
X18gKCgoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIjEwMCIp
KVswICsgM10gPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIg
KikgKCIxMDAiKSlbMCArIDJdKSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9f
Y29uc3QgY2hhciAqKSAoIjEwMCIpKVswICsgMV0pIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQg
Y2hhciAqKSAoX19jb25zdCBjaGFyICopICgiMTAwIikpWzBdKSwgX19leHRlbnNpb25fXyAoKCgo
KF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiMTAwIikpWzQgKyAz
XSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIjEw
MCIpKVs0ICsgMl0pIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBj
aGFyICopICgiMTAwIikpWzQgKyAxXSkgPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikgKCIxMDAiKSlbNF0pLCBzdHJsZW4gKCIxMDAiKSArIDEpIDogKGNo
YXIgKikgbWVtY3B5ICh0ZXJtX29wdGlvbnMsICIxMDAiLCBzdHJsZW4gKCIxMDAiKSArIDEpKSA6
IHN0cmNweSAodGVybV9vcHRpb25zLCAiMTAwIikpKTsKICAgICAgICB0ZXJtLT52X3RpYyA9IDY7
CiAgICAgICAgdGVybS0+aF90aWMgPSA2OwogICAgICAgIGJyZWFrOwogICAgY2FzZSA0OgogICAg
ICAgIChfX2V4dGVuc2lvbl9fIChfX2J1aWx0aW5fY29uc3RhbnRfcCAoIjc1IikgPyAoKChzaXpl
X3QpKGNvbnN0IHZvaWQgKikoKCI3NSIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKCI3
NSIpID09IDEpICYmIHN0cmxlbiAoIjc1IikgKyAxIDw9IDggPyBfX3N0cmNweV9zbWFsbCAodGVy
bV9vcHRpb25zLCBfX2V4dGVuc2lvbl9fICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19j
b25zdCBjaGFyICopICgiNzUiKSlbMCArIDFdIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hh
ciAqKSAoX19jb25zdCBjaGFyICopICgiNzUiKSlbMF0pLCBfX2V4dGVuc2lvbl9fICgoKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiNzUiKSlbNCArIDFdIDw8IDgg
fCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiNzUiKSlbNF0p
LCBfX2V4dGVuc2lvbl9fICgoKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNo
YXIgKikgKCI3NSIpKVswICsgM10gPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf
X2NvbnN0IGNoYXIgKikgKCI3NSIpKVswICsgMl0pIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQg
Y2hhciAqKSAoX19jb25zdCBjaGFyICopICgiNzUiKSlbMCArIDFdKSA8PCA4IHwgKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIjc1IikpWzBdKSwgX19leHRlbnNp
b25fXyAoKCgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiNzUi
KSlbNCArIDNdIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFy
ICopICgiNzUiKSlbNCArIDJdKSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9f
Y29uc3QgY2hhciAqKSAoIjc1IikpWzQgKyAxXSkgPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBj
aGFyICopIChfX2NvbnN0IGNoYXIgKikgKCI3NSIpKVs0XSksIHN0cmxlbiAoIjc1IikgKyAxKSA6
IChjaGFyICopIG1lbWNweSAodGVybV9vcHRpb25zLCAiNzUiLCBzdHJsZW4gKCI3NSIpICsgMSkp
IDogc3RyY3B5ICh0ZXJtX29wdGlvbnMsICI3NSIpKSk7CiAgICAgICAgdGVybS0+dl90aWMgPSA1
OwogICAgICAgIHRlcm0tPmhfdGljID0gNTsKICAgICAgICBicmVhazsKICAgIH0KCiAgICBpZiAo
cGFyc2VfZXJyb3IpCiAgICAgICAgaW50X2Vycm9yKCJleHBlY3RpbmcgZG90cyBwZXIgaW5jaCBz
aXplIDc1LCAxMDAsIDE1MCBvciAzMDAiLAogICAgICAgICAgICAgICAgICBjX3Rva2VuKTsKfQoK
CnN0YXRpYyB2b2lkIEhQTEpJSWluaXQoKQp7CiAgICB0ZXJtLT52X2NoYXIgPSAoKDMwMC8oaHBs
al9kcHApKS82KTsKICAgIHRlcm0tPmhfY2hhciA9ICgoMzAwLyhocGxqX2RwcCkpLzEwKTsKfQoK
CnN0YXRpYyB2b2lkIEhQTEpJSWdyYXBoaWNzKCkKewogICAgZnB1dHMoIlwwMzMoME5cMDMzKHMw
cDEwLjBoMTIuMHYwczBiM1RcMDMzJmw2RCIsZ3BvdXRmaWxlKTsKICAgIGZwdXRzKCJcMDMzJmYw
UyIsZ3BvdXRmaWxlKTsKCgogICAgYl9tYWtlYml0bWFwKCg4Kih1bnNpZ25lZCBpbnQpKHlzaXpl
KjE5MjAvKGhwbGpfZHBwKS84LjArMC45KSksICg4Kih1bnNpZ25lZCBpbnQpKHhzaXplKjE5MjAv
KGhwbGpfZHBwKS84LjArMC45KSksIDEpOwogICAgYl9yYXN0ZXJtb2RlID0gMTsKfQoKCgpzdGF0
aWMgdm9pZCBIUExKSUl0ZXh0KCkKewogICAgcmVnaXN0ZXIgaW50IHgsIGosIHJvdzsKCiAgICBm
cHJpbnRmKGdwb3V0ZmlsZSwgIlwwMzMqdCVkUiIsICgzMDAvKGhwbGpfZHBwKSkpOwogICAgZnB1
dHMoIlwwMzMmZjFTIixncG91dGZpbGUpOwogICAgZnB1dHMoIlwwMzMqcjFBIiwgZ3BvdXRmaWxl
KTsKCgogICAgZm9yICh4ID0gYl94c2l6ZSAtIDE7IHggPj0gMDsgeC0tKSB7CiAgICAgICAgcm93
ID0gKGJfeXNpemUgLyA4KSAtIDE7CiAgICAgICAgZnByaW50ZihncG91dGZpbGUsICJcMDMzKmIw
bSVkVyIsIGJfeXNpemUgLyA4KTsKICAgICAgICBmb3IgKGogPSByb3c7IGogPj0gMDsgai0tKSB7
CiAgICAgICAgICAgICh2b2lkKSBmcHV0YygoY2hhcikgKCooKCpiX3ApW2pdICsgeCkpLCBncG91
dGZpbGUpOwogICAgICAgIH0KICAgIH0KICAgIGZwdXRzKCJcMDMzKnJCIiwgZ3BvdXRmaWxlKTsK
CiAgICBiX2ZyZWViaXRtYXAoKTsKCgoKICAgIF9JT19wdXRjICgnXGYnLCBncG91dGZpbGUpOwoK
fQoKCgpzdGF0aWMgdm9pZCBIUExKSUlsaW5ldHlwZShsaW5ldHlwZSkKaW50IGxpbmV0eXBlOwp7
CgogICAgaWYgKGhwbGpfZHBwID09IDEpIHsKICAgICAgICBpZiAobGluZXR5cGUgPj0gNykKICAg
ICAgICAgICAgbGluZXR5cGUgJT0gNzsKCiAgICAgICAgYl9saW5lbWFzayA9IGJfMzAwcHBpX3Bh
dHRlcm5bbGluZXR5cGUgKyAyXTsKICAgICAgICBiX21hc2tjb3VudCA9IDA7CiAgICB9IGVsc2Ug
ewogICAgICAgIGJfc2V0bGluZXR5cGUobGluZXR5cGUpOwogICAgfQp9CgpzdGF0aWMgdm9pZCBI
UExKSUlwdXRfdGV4dCh4LCB5LCBzdHIpCnVuc2lnbmVkIGludCB4LCB5OwpjaGFyICpzdHI7CnsK
ICAgIHN3aXRjaCAoYl9hbmdsZSkgewogICAgY2FzZSAwOgogICAgICAgIHkgLT0gKCgzMDAvKGhw
bGpfZHBwKSkvNikgLyA1OwogICAgICAgIGZwdXRzKCJcMDMzJmYxUyIsZ3BvdXRmaWxlKTsKICAg
ICAgICBmcHV0cygiXDAzMyZmMFMiLGdwb3V0ZmlsZSk7CgogICAgICAgIGZwcmludGYoZ3BvdXRm
aWxlLCAiXDAzMypwJStkeCUrZFkiLCB4ICogKGhwbGpfZHBwKQogICAgICAgICAgICAgICAgLCgo
OCoodW5zaWduZWQgaW50KSh5c2l6ZSoxOTIwLyhocGxqX2RwcCkvOC4wKzAuOSkpIC0geSAtIDEp
ICogKGhwbGpfZHBwKSk7CiAgICAgICAgZnB1dHMoc3RyLCBncG91dGZpbGUpOwoKCiAgICAgICAg
YnJlYWs7CiAgICBjYXNlIDE6CiAgICAgICAgeSArPSAoKCgzMDAvKGhwbGpfZHBwKSkvMTApIC0g
MiAqICgoMzAwLyhocGxqX2RwcCkpLzYpKSAvIDI7CiAgICAgICAgeSArPSAoKCgzMDAvKGhwbGpf
ZHBwKSkvNikgKyAoKDMwMC8oaHBsal9kcHApKS8xMCkpICogc3RybGVuKHN0cikgLyAyOwogICAg
ICAgIGZvciAoOyAqc3RyOyArK3N0ciwgeSAtPSAoKDMwMC8oaHBsal9kcHApKS82KSkKICAgICAg
ICAgICAgSFBMSklJcHV0Yyh4LCB5LCAqc3RyLCBiX2FuZ2xlKTsKICAgICAgICBicmVhazsKICAg
IH0KfQoKCnZvaWQgSFBMSklJcHV0Yyh1bnNpZ25lZCBpbnQgeCwgdW5zaWduZWQgaW50IHksIGNo
YXIgYywgaW50IGFuZykKCgoKCgoKewogICAgZnB1dHMoIlwwMzMmZjFTIixncG91dGZpbGUpOwog
ICAgZnB1dHMoIlwwMzMmZjBTIixncG91dGZpbGUpOwoKICAgIGZwcmludGYoZ3BvdXRmaWxlLCAi
XDAzMypwJStkeCUrZFkiLCB4ICogKGhwbGpfZHBwKQogICAgICAgICAgICAsKCg4Kih1bnNpZ25l
ZCBpbnQpKHlzaXplKjE5MjAvKGhwbGpfZHBwKS84LjArMC45KSkgLSB5IC0gMSkgKiAoaHBsal9k
cHApKTsKICAgIGZwdXRjKGMsIGdwb3V0ZmlsZSk7Cn0KCgpzdGF0aWMgdm9pZCBIUExKSUlyZXNl
dCgpCnsKCgoKfQoKCgpzdGF0aWMgdm9pZCBIUERKZ3JhcGhpY3MoKQp7CiAgICBzd2l0Y2ggKGhw
bGpfZHBwKSB7CiAgICBjYXNlIDE6CiAgICAgICAgYl9jaGFyc2l6ZSgyKTsKICAgICAgICB0ZXJt
LT52X2NoYXIgPSAzMTsKICAgICAgICB0ZXJtLT5oX2NoYXIgPSAxOTsKICAgICAgICBicmVhazsK
ICAgIGNhc2UgMjoKICAgICAgICBiX2NoYXJzaXplKDIpOwogICAgICAgIHRlcm0tPnZfY2hhciA9
IDMxOwogICAgICAgIHRlcm0tPmhfY2hhciA9IDE5OwogICAgICAgIGJyZWFrOwogICAgY2FzZSAz
OgogICAgICAgIGJfY2hhcnNpemUoMSk7CiAgICAgICAgdGVybS0+dl9jaGFyID0gMjE7CiAgICAg
ICAgdGVybS0+aF9jaGFyID0gMTM7CiAgICAgICAgYnJlYWs7CiAgICBjYXNlIDQ6CiAgICAgICAg
Yl9jaGFyc2l6ZSgwKTsKICAgICAgICB0ZXJtLT52X2NoYXIgPSAxMTsKICAgICAgICB0ZXJtLT5o
X2NoYXIgPSA3OwogICAgICAgIGJyZWFrOwogICAgfQoKCiAgICBiX21ha2ViaXRtYXAoKDgqKHVu
c2lnbmVkIGludCkoeXNpemUqMTkyMC8oaHBsal9kcHApLzguMCswLjkpKSwgKDgqKHVuc2lnbmVk
IGludCkoeHNpemUqMTkyMC8oaHBsal9kcHApLzguMCswLjkpKSwgMSk7CiAgICBiX3Jhc3Rlcm1v
ZGUgPSAxOwp9CgoKCgpzdGF0aWMgdm9pZCBIUERKdGV4dCgpCnsKICAgIHJlZ2lzdGVyIGludCB4
LCBqLCByb3c7CgogICAgZnByaW50ZihncG91dGZpbGUsICJcMDMzKmIwTVwwMzMqdCVkUlwwMzMq
cjFBIiwKCgoKICAgICAgICAgICAgKDMwMC8oaHBsal9kcHApKSk7CgoKICAgIGZvciAoeCA9IGJf
eHNpemUgLSAxOyB4ID49IDA7IHgtLSkgewogICAgICAgIHJvdyA9IChiX3lzaXplIC8gOCkgLSAx
OwogICAgICAgIGZwcmludGYoZ3BvdXRmaWxlLCAiXDAzMypiJWRXIiwgYl95c2l6ZSAvIDgpOwog
ICAgICAgIGZvciAoaiA9IHJvdzsgaiA+PSAwOyBqLS0pIHsKICAgICAgICAgICAgKHZvaWQpIGZw
dXRjKChjaGFyKSAoKigoKmJfcClbal0gKyB4KSksIGdwb3V0ZmlsZSk7CiAgICAgICAgfQogICAg
fQogICAgZnB1dHMoIlwwMzMqcmJDIiwgZ3BvdXRmaWxlKTsKCiAgICBiX2ZyZWViaXRtYXAoKTsK
CgogICAgX0lPX3B1dGMgKCdcZicsIGdwb3V0ZmlsZSk7Cgp9CiMgMzA3ICJ0ZXJtLmgiIDIKCgoj
IDEgInRlcm0vaHBwai50cm0iIDEKIyA2NCAidGVybS9ocHBqLnRybSIKIyAxICJ0ZXJtL2RyaXZl
ci5oIiAxCiMgNjUgInRlcm0vaHBwai50cm0iIDIKCgoKCgoKc3RhdGljIHZvaWQgSFBQSm9wdGlv
bnMgKHZvaWQpOwpzdGF0aWMgdm9pZCBIUFBKaW5pdCAodm9pZCk7CnN0YXRpYyB2b2lkIEhQUEpy
ZXNldCAodm9pZCk7CnN0YXRpYyB2b2lkIEhQUEpncmFwaGljcyAodm9pZCk7CnN0YXRpYyB2b2lk
IEhQUEp0ZXh0ICh2b2lkKTsKc3RhdGljIHZvaWQgSFBQSmxpbmV0eXBlIChpbnQgbGluZXR5cGUp
OwojIDEwMCAidGVybS9ocHBqLnRybSIKc3RhdGljIGludCBocHBqX2ZvbnQgPSAxOwoKc3RhdGlj
IHZvaWQgSFBQSm9wdGlvbnMoKQp7CiAgICBjaGFyIG9wdFsxMF07CgoKICAgIHRlcm1fb3B0aW9u
c1swXSA9ICgnXDAnKTsKICAgIGhwcGpfZm9udCA9IDE7CgogICAgaWYgKCEoY190b2tlbiA+PSBu
dW1fdG9rZW5zIHx8IGVxdWFscyhjX3Rva2VuLCI7IikpKSB7CiAgICAgICAgaWYgKHRva2VuW2Nf
dG9rZW5dLmxlbmd0aCA+IDgpIHsKICAgICAgICAgICAgaW50X2Vycm9yKCJleHBlY3RpbmcgZm9u
dCBzaXplIEZOVDVYOSwgRk5UOVgxNywgb3IgRk5UMTNYMjUiLCBjX3Rva2VuKTsKICAgICAgICB9
CiAgICAgICAgY2FwdHVyZShvcHQsIGNfdG9rZW4sIGNfdG9rZW4sIDkpOwogICAgICAgIGlmICgh
X19leHRlbnNpb25fXyAoeyBzaXplX3QgX19zMV9sZW4sIF9fczJfbGVuOyAoX19idWlsdGluX2Nv
bnN0YW50X3AgKG9wdCkgJiYgX19idWlsdGluX2NvbnN0YW50X3AgKCJGTlQ1WDkiKSAmJiAoX19z
MV9sZW4gPSBzdHJsZW4gKG9wdCksIF9fczJfbGVuID0gc3RybGVuICgiRk5UNVg5IiksICghKChz
aXplX3QpKGNvbnN0IHZvaWQgKikoKG9wdCkgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKiko
b3B0KSA9PSAxKSB8fCBfX3MxX2xlbiA+PSA0KSAmJiAoISgoc2l6ZV90KShjb25zdCB2b2lkICop
KCgiRk5UNVg5IikgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoIkZOVDVYOSIpID09IDEp
IHx8IF9fczJfbGVuID49IDQpKSA/IG1lbWNtcCAoKF9fY29uc3QgY2hhciAqKSAob3B0KSwgKF9f
Y29uc3QgY2hhciAqKSAoIkZOVDVYOSIpLCAoX19zMV9sZW4gPCBfX3MyX2xlbiA/IF9fczFfbGVu
IDogX19zMl9sZW4pICsgMSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AgKG9wdCkgJiYgKChzaXpl
X3QpKGNvbnN0IHZvaWQgKikoKG9wdCkgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikob3B0
KSA9PSAxKSAmJiAoX19zMV9sZW4gPSBzdHJsZW4gKG9wdCksIF9fczFfbGVuIDwgNCkgPyAoX19i
dWlsdGluX2NvbnN0YW50X3AgKCJGTlQ1WDkiKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgo
IkZOVDVYOSIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKCJGTlQ1WDkiKSA9PSAxKSA/
IChfX2V4dGVuc2lvbl9fICh7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5z
aWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChvcHQpKVswXSAtICgoX19jb25zdCB1bnNp
Z25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikoIkZOVDVYOSIpKVswXSk7IGlmIChfX3MxX2xl
biA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQg
Y2hhciAqKSAoX19jb25zdCBjaGFyICopIChvcHQpKVsxXSAtICgoX19jb25zdCB1bnNpZ25lZCBj
aGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJGTlQ1WDkiKSlbMV0pOyBpZiAoX19zMV9sZW4gPiAx
ICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIg
KikgKF9fY29uc3QgY2hhciAqKSAob3B0KSlbMl0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAq
KSAoX19jb25zdCBjaGFyICopICgiRk5UNVg5IikpWzJdKTsgaWYgKF9fczFfbGVuID4gMiAmJiBf
X3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19j
b25zdCBjaGFyICopIChvcHQpKVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikgKCJGTlQ1WDkiKSlbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSA6IChfX2V4dGVu
c2lvbl9fICh7IF9fY29uc3QgdW5zaWduZWQgY2hhciAqX19zMiA9IChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIkZOVDVYOSIpOyByZWdpc3RlciBpbnQgX19yZXN1
bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAob3B0KSlb
MF0gLSBfX3MyWzBdKTsgaWYgKF9fczFfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVz
dWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG9wdCkp
WzFdIC0gX19zMlsxXSk7IGlmIChfX3MxX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jl
c3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChvcHQp
KVsyXSAtIF9fczJbMl0pOyBpZiAoX19zMV9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVz
dWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG9wdCkp
WzNdIC0gX19zMlszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpKSA6IChfX2J1aWx0aW5fY29uc3RhbnRf
cCAoIkZOVDVYOSIpICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKCgiRk5UNVg5IikgKyAxKSAt
IChzaXplX3QpKGNvbnN0IHZvaWQgKikoIkZOVDVYOSIpID09IDEpICYmIChfX3MyX2xlbiA9IHN0
cmxlbiAoIkZOVDVYOSIpLCBfX3MyX2xlbiA8IDQpID8gKF9fYnVpbHRpbl9jb25zdGFudF9wIChv
cHQpICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKChvcHQpICsgMSkgLSAoc2l6ZV90KShjb25z
dCB2b2lkICopKG9wdCkgPT0gMSkgPyAoX19leHRlbnNpb25fXyAoeyByZWdpc3RlciBpbnQgX19y
ZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAob3B0
KSlbMF0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopKCJGTlQ1
WDkiKSlbMF0pOyBpZiAoX19zMl9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQg
PSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAob3B0KSlbMV0g
LSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiRk5UNVg5Iikp
WzFdKTsgaWYgKF9fczJfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgo
X19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG9wdCkpWzJdIC0gKChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIkZOVDVYOSIpKVsyXSk7
IGlmIChfX3MyX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAob3B0KSlbM10gLSAoKF9fY29uc3Qg
dW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiRk5UNVg5IikpWzNdKTsgfSB9IF9f
cmVzdWx0OyB9KSkgOiAoX19leHRlbnNpb25fXyAoeyBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKl9f
czEgPSAoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG9wdCk7IHJl
Z2lzdGVyIGludCBfX3Jlc3VsdCA9IF9fczFbMF0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAq
KSAoX19jb25zdCBjaGFyICopICgiRk5UNVg5IikpWzBdOyBpZiAoX19zMl9sZW4gPiAwICYmIF9f
cmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoX19zMVsxXSAtICgoX19jb25zdCB1bnNpZ25lZCBj
aGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJGTlQ1WDkiKSlbMV0pOyBpZiAoX19zMl9sZW4gPiAx
ICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoX19zMVsyXSAtICgoX19jb25zdCB1bnNp
Z25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJGTlQ1WDkiKSlbMl0pOyBpZiAoX19zMl9s
ZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKF9fczFbM10gLSAoKF9fY29uc3Qg
dW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiRk5UNVg5IikpWzNdKTsgfSB9IF9f
cmVzdWx0OyB9KSkpIDogc3RyY21wIChvcHQsICJGTlQ1WDkiKSkpKTsgfSkpIHsKICAgICAgICAg
ICAgaHBwal9mb250ID0gMDsKICAgICAgICAgICAgKF9fZXh0ZW5zaW9uX18gKF9fYnVpbHRpbl9j
b25zdGFudF9wICgiRk5UNVg5IikgPyAoKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCJGTlQ1WDki
KSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgiRk5UNVg5IikgPT0gMSkgJiYgc3RybGVu
ICgiRk5UNVg5IikgKyAxIDw9IDggPyBfX3N0cmNweV9zbWFsbCAodGVybV9vcHRpb25zLCBfX2V4
dGVuc2lvbl9fICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgi
Rk5UNVg5IikpWzAgKyAxXSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29u
c3QgY2hhciAqKSAoIkZOVDVYOSIpKVswXSksIF9fZXh0ZW5zaW9uX18gKCgoX19jb25zdCB1bnNp
Z25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJGTlQ1WDkiKSlbNCArIDFdIDw8IDggfCAo
KF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiRk5UNVg5IikpWzRd
KSwgX19leHRlbnNpb25fXyAoKCgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBj
aGFyICopICgiRk5UNVg5IikpWzAgKyAzXSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIg
KikgKF9fY29uc3QgY2hhciAqKSAoIkZOVDVYOSIpKVswICsgMl0pIDw8IDggfCAoKF9fY29uc3Qg
dW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiRk5UNVg5IikpWzAgKyAxXSkgPDwg
OCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJGTlQ1WDki
KSlbMF0pLCBfX2V4dGVuc2lvbl9fICgoKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikgKCJGTlQ1WDkiKSlbNCArIDNdIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQg
Y2hhciAqKSAoX19jb25zdCBjaGFyICopICgiRk5UNVg5IikpWzQgKyAyXSkgPDwgOCB8ICgoX19j
b25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJGTlQ1WDkiKSlbNCArIDFd
KSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIkZO
VDVYOSIpKVs0XSksIHN0cmxlbiAoIkZOVDVYOSIpICsgMSkgOiAoY2hhciAqKSBtZW1jcHkgKHRl
cm1fb3B0aW9ucywgIkZOVDVYOSIsIHN0cmxlbiAoIkZOVDVYOSIpICsgMSkpIDogc3RyY3B5ICh0
ZXJtX29wdGlvbnMsICJGTlQ1WDkiKSkpOwogICAgICAgIH0gZWxzZSBpZiAoIV9fZXh0ZW5zaW9u
X18gKHsgc2l6ZV90IF9fczFfbGVuLCBfX3MyX2xlbjsgKF9fYnVpbHRpbl9jb25zdGFudF9wIChv
cHQpICYmIF9fYnVpbHRpbl9jb25zdGFudF9wICgiRk5UOVgxNyIpICYmIChfX3MxX2xlbiA9IHN0
cmxlbiAob3B0KSwgX19zMl9sZW4gPSBzdHJsZW4gKCJGTlQ5WDE3IiksICghKChzaXplX3QpKGNv
bnN0IHZvaWQgKikoKG9wdCkgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikob3B0KSA9PSAx
KSB8fCBfX3MxX2xlbiA+PSA0KSAmJiAoISgoc2l6ZV90KShjb25zdCB2b2lkICopKCgiRk5UOVgx
NyIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKCJGTlQ5WDE3IikgPT0gMSkgfHwgX19z
Ml9sZW4gPj0gNCkpID8gbWVtY21wICgoX19jb25zdCBjaGFyICopIChvcHQpLCAoX19jb25zdCBj
aGFyICopICgiRk5UOVgxNyIpLCAoX19zMV9sZW4gPCBfX3MyX2xlbiA/IF9fczFfbGVuIDogX19z
Ml9sZW4pICsgMSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AgKG9wdCkgJiYgKChzaXplX3QpKGNv
bnN0IHZvaWQgKikoKG9wdCkgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikob3B0KSA9PSAx
KSAmJiAoX19zMV9sZW4gPSBzdHJsZW4gKG9wdCksIF9fczFfbGVuIDwgNCkgPyAoX19idWlsdGlu
X2NvbnN0YW50X3AgKCJGTlQ5WDE3IikgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCJGTlQ5
WDE3IikgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoIkZOVDlYMTciKSA9PSAxKSA/IChf
X2V4dGVuc2lvbl9fICh7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWdu
ZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChvcHQpKVswXSAtICgoX19jb25zdCB1bnNpZ25l
ZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikoIkZOVDlYMTciKSlbMF0pOyBpZiAoX19zMV9sZW4g
PiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNo
YXIgKikgKF9fY29uc3QgY2hhciAqKSAob3B0KSlbMV0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hh
ciAqKSAoX19jb25zdCBjaGFyICopICgiRk5UOVgxNyIpKVsxXSk7IGlmIChfX3MxX2xlbiA+IDEg
JiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAq
KSAoX19jb25zdCBjaGFyICopIChvcHQpKVsyXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikgKCJGTlQ5WDE3IikpWzJdKTsgaWYgKF9fczFfbGVuID4gMiAmJiBf
X3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19j
b25zdCBjaGFyICopIChvcHQpKVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikgKCJGTlQ5WDE3IikpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkgOiAoX19leHRl
bnNpb25fXyAoeyBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKl9fczIgPSAoX19jb25zdCB1bnNpZ25l
ZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJGTlQ5WDE3Iik7IHJlZ2lzdGVyIGludCBfX3Jl
c3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChvcHQp
KVswXSAtIF9fczJbMF0pOyBpZiAoX19zMV9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19y
ZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAob3B0
KSlbMV0gLSBfX3MyWzFdKTsgaWYgKF9fczFfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9f
cmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG9w
dCkpWzJdIC0gX19zMlsyXSk7IGlmIChfX3MxX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19y
ZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAob3B0
KSlbM10gLSBfX3MyWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkpIDogKF9fYnVpbHRpbl9jb25zdGFu
dF9wICgiRk5UOVgxNyIpICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKCgiRk5UOVgxNyIpICsg
MSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKCJGTlQ5WDE3IikgPT0gMSkgJiYgKF9fczJfbGVu
ID0gc3RybGVuICgiRk5UOVgxNyIpLCBfX3MyX2xlbiA8IDQpID8gKF9fYnVpbHRpbl9jb25zdGFu
dF9wIChvcHQpICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKChvcHQpICsgMSkgLSAoc2l6ZV90
KShjb25zdCB2b2lkICopKG9wdCkgPT0gMSkgPyAoX19leHRlbnNpb25fXyAoeyByZWdpc3RlciBp
bnQgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAq
KSAob3B0KSlbMF0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop
KCJGTlQ5WDE3IikpWzBdKTsgaWYgKF9fczJfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9f
cmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG9w
dCkpWzFdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIkZO
VDlYMTciKSlbMV0pOyBpZiAoX19zMl9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1
bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAob3B0KSlb
Ml0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiRk5UOVgx
NyIpKVsyXSk7IGlmIChfX3MyX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAo
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAob3B0KSlbM10gLSAo
KF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiRk5UOVgxNyIpKVsz
XSk7IH0gfSBfX3Jlc3VsdDsgfSkpIDogKF9fZXh0ZW5zaW9uX18gKHsgX19jb25zdCB1bnNpZ25l
ZCBjaGFyICpfX3MxID0gKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop
IChvcHQpOyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSBfX3MxWzBdIC0gKChfX2NvbnN0IHVuc2ln
bmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIkZOVDlYMTciKSlbMF07IGlmIChfX3MyX2xl
biA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9IChfX3MxWzFdIC0gKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIkZOVDlYMTciKSlbMV0pOyBpZiAo
X19zMl9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoX19zMVsyXSAtICgo
X19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJGTlQ5WDE3IikpWzJd
KTsgaWYgKF9fczJfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9IChfX3MxWzNd
IC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIkZOVDlYMTci
KSlbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSkgOiBzdHJjbXAgKG9wdCwgIkZOVDlYMTciKSkpKTsg
fSkpIHsKICAgICAgICAgICAgaHBwal9mb250ID0gMTsKICAgICAgICAgICAgKF9fZXh0ZW5zaW9u
X18gKF9fYnVpbHRpbl9jb25zdGFudF9wICgiRk5UOVgxNyIpID8gKCgoc2l6ZV90KShjb25zdCB2
b2lkICopKCgiRk5UOVgxNyIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKCJGTlQ5WDE3
IikgPT0gMSkgJiYgc3RybGVuICgiRk5UOVgxNyIpICsgMSA8PSA4ID8gX19zdHJjcHlfc21hbGwg
KHRlcm1fb3B0aW9ucywgX19leHRlbnNpb25fXyAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikg
KF9fY29uc3QgY2hhciAqKSAoIkZOVDlYMTciKSlbMCArIDFdIDw8IDggfCAoKF9fY29uc3QgdW5z
aWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiRk5UOVgxNyIpKVswXSksIF9fZXh0ZW5z
aW9uX18gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJGTlQ5
WDE3IikpWzQgKyAxXSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg
Y2hhciAqKSAoIkZOVDlYMTciKSlbNF0pLCBfX2V4dGVuc2lvbl9fICgoKCgoX19jb25zdCB1bnNp
Z25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJGTlQ5WDE3IikpWzAgKyAzXSA8PCA4IHwg
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIkZOVDlYMTciKSlb
MCArIDJdKSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAq
KSAoIkZOVDlYMTciKSlbMCArIDFdKSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikg
KF9fY29uc3QgY2hhciAqKSAoIkZOVDlYMTciKSlbMF0pLCBfX2V4dGVuc2lvbl9fICgoKCgoX19j
b25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJGTlQ5WDE3IikpWzQgKyAz
XSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIkZO
VDlYMTciKSlbNCArIDJdKSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29u
c3QgY2hhciAqKSAoIkZOVDlYMTciKSlbNCArIDFdKSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIkZOVDlYMTciKSlbNF0pLCBzdHJsZW4gKCJGTlQ5
WDE3IikgKyAxKSA6IChjaGFyICopIG1lbWNweSAodGVybV9vcHRpb25zLCAiRk5UOVgxNyIsIHN0
cmxlbiAoIkZOVDlYMTciKSArIDEpKSA6IHN0cmNweSAodGVybV9vcHRpb25zLCAiRk5UOVgxNyIp
KSk7CiAgICAgICAgfSBlbHNlIGlmICghX19leHRlbnNpb25fXyAoeyBzaXplX3QgX19zMV9sZW4s
IF9fczJfbGVuOyAoX19idWlsdGluX2NvbnN0YW50X3AgKG9wdCkgJiYgX19idWlsdGluX2NvbnN0
YW50X3AgKCJGTlQxM1gyNSIpICYmIChfX3MxX2xlbiA9IHN0cmxlbiAob3B0KSwgX19zMl9sZW4g
PSBzdHJsZW4gKCJGTlQxM1gyNSIpLCAoISgoc2l6ZV90KShjb25zdCB2b2lkICopKChvcHQpICsg
MSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKG9wdCkgPT0gMSkgfHwgX19zMV9sZW4gPj0gNCkg
JiYgKCEoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoIkZOVDEzWDI1IikgKyAxKSAtIChzaXplX3Qp
KGNvbnN0IHZvaWQgKikoIkZOVDEzWDI1IikgPT0gMSkgfHwgX19zMl9sZW4gPj0gNCkpID8gbWVt
Y21wICgoX19jb25zdCBjaGFyICopIChvcHQpLCAoX19jb25zdCBjaGFyICopICgiRk5UMTNYMjUi
KSwgKF9fczFfbGVuIDwgX19zMl9sZW4gPyBfX3MxX2xlbiA6IF9fczJfbGVuKSArIDEpIDogKF9f
YnVpbHRpbl9jb25zdGFudF9wIChvcHQpICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKChvcHQp
ICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKG9wdCkgPT0gMSkgJiYgKF9fczFfbGVuID0g
c3RybGVuIChvcHQpLCBfX3MxX2xlbiA8IDQpID8gKF9fYnVpbHRpbl9jb25zdGFudF9wICgiRk5U
MTNYMjUiKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoIkZOVDEzWDI1IikgKyAxKSAtIChz
aXplX3QpKGNvbnN0IHZvaWQgKikoIkZOVDEzWDI1IikgPT0gMSkgPyAoX19leHRlbnNpb25fXyAo
eyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9f
Y29uc3QgY2hhciAqKSAob3B0KSlbMF0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19j
b25zdCBjaGFyICopKCJGTlQxM1gyNSIpKVswXSk7IGlmIChfX3MxX2xlbiA+IDAgJiYgX19yZXN1
bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25z
dCBjaGFyICopIChvcHQpKVsxXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0
IGNoYXIgKikgKCJGTlQxM1gyNSIpKVsxXSk7IGlmIChfX3MxX2xlbiA+IDEgJiYgX19yZXN1bHQg
PT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBj
aGFyICopIChvcHQpKVsyXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNo
YXIgKikgKCJGTlQxM1gyNSIpKVsyXSk7IGlmIChfX3MxX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0g
MCkgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAq
KSAob3B0KSlbM10gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop
ICgiRk5UMTNYMjUiKSlbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSA6IChfX2V4dGVuc2lvbl9fICh7
IF9fY29uc3QgdW5zaWduZWQgY2hhciAqX19zMiA9IChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikg
KF9fY29uc3QgY2hhciAqKSAoIkZOVDEzWDI1Iik7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9ICgo
KF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChvcHQpKVswXSAtIF9f
czJbMF0pOyBpZiAoX19zMV9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAo
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAob3B0KSlbMV0gLSBf
X3MyWzFdKTsgaWYgKF9fczFfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0g
KCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG9wdCkpWzJdIC0g
X19zMlsyXSk7IGlmIChfX3MxX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAo
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAob3B0KSlbM10gLSBf
X3MyWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wICgiRk5U
MTNYMjUiKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoIkZOVDEzWDI1IikgKyAxKSAtIChz
aXplX3QpKGNvbnN0IHZvaWQgKikoIkZOVDEzWDI1IikgPT0gMSkgJiYgKF9fczJfbGVuID0gc3Ry
bGVuICgiRk5UMTNYMjUiKSwgX19zMl9sZW4gPCA0KSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCAo
b3B0KSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgob3B0KSArIDEpIC0gKHNpemVfdCkoY29u
c3Qgdm9pZCAqKShvcHQpID09IDEpID8gKF9fZXh0ZW5zaW9uX18gKHsgcmVnaXN0ZXIgaW50IF9f
cmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG9w
dCkpWzBdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSgiRk5U
MTNYMjUiKSlbMF0pOyBpZiAoX19zMl9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1
bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAob3B0KSlb
MV0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiRk5UMTNY
MjUiKSlbMV0pOyBpZiAoX19zMl9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQg
PSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAob3B0KSlbMl0g
LSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiRk5UMTNYMjUi
KSlbMl0pOyBpZiAoX19zMl9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgo
X19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG9wdCkpWzNdIC0gKChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIkZOVDEzWDI1IikpWzNd
KTsgfSB9IF9fcmVzdWx0OyB9KSkgOiAoX19leHRlbnNpb25fXyAoeyBfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKl9fczEgPSAoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KG9wdCk7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9IF9fczFbMF0gLSAoKF9fY29uc3QgdW5zaWdu
ZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiRk5UMTNYMjUiKSlbMF07IGlmIChfX3MyX2xl
biA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9IChfX3MxWzFdIC0gKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIkZOVDEzWDI1IikpWzFdKTsgaWYg
KF9fczJfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKF9fczFbMl0gLSAo
KF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiRk5UMTNYMjUiKSlb
Ml0pOyBpZiAoX19zMl9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKF9fczFb
M10gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiRk5UMTNY
MjUiKSlbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSkgOiBzdHJjbXAgKG9wdCwgIkZOVDEzWDI1Iikp
KSk7IH0pKSB7CiAgICAgICAgICAgIGhwcGpfZm9udCA9IDI7CiAgICAgICAgICAgIChfX2V4dGVu
c2lvbl9fIChfX2J1aWx0aW5fY29uc3RhbnRfcCAoIkZOVDEzWDI1IikgPyAoKChzaXplX3QpKGNv
bnN0IHZvaWQgKikoKCJGTlQxM1gyNSIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKCJG
TlQxM1gyNSIpID09IDEpICYmIHN0cmxlbiAoIkZOVDEzWDI1IikgKyAxIDw9IDggPyBfX3N0cmNw
eV9zbWFsbCAodGVybV9vcHRpb25zLCBfX2V4dGVuc2lvbl9fICgoKF9fY29uc3QgdW5zaWduZWQg
Y2hhciAqKSAoX19jb25zdCBjaGFyICopICgiRk5UMTNYMjUiKSlbMCArIDFdIDw8IDggfCAoKF9f
Y29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiRk5UMTNYMjUiKSlbMF0p
LCBfX2V4dGVuc2lvbl9fICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFy
ICopICgiRk5UMTNYMjUiKSlbNCArIDFdIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAq
KSAoX19jb25zdCBjaGFyICopICgiRk5UMTNYMjUiKSlbNF0pLCBfX2V4dGVuc2lvbl9fICgoKCgo
X19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJGTlQxM1gyNSIpKVsw
ICsgM10gPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KCJGTlQxM1gyNSIpKVswICsgMl0pIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAo
X19jb25zdCBjaGFyICopICgiRk5UMTNYMjUiKSlbMCArIDFdKSA8PCA4IHwgKChfX2NvbnN0IHVu
c2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIkZOVDEzWDI1IikpWzBdKSwgX19leHRl
bnNpb25fXyAoKCgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgi
Rk5UMTNYMjUiKSlbNCArIDNdIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19j
b25zdCBjaGFyICopICgiRk5UMTNYMjUiKSlbNCArIDJdKSA8PCA4IHwgKChfX2NvbnN0IHVuc2ln
bmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIkZOVDEzWDI1IikpWzQgKyAxXSkgPDwgOCB8
ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJGTlQxM1gyNSIp
KVs0XSksIHN0cmxlbiAoIkZOVDEzWDI1IikgKyAxKSA6IChjaGFyICopIG1lbWNweSAodGVybV9v
cHRpb25zLCAiRk5UMTNYMjUiLCBzdHJsZW4gKCJGTlQxM1gyNSIpICsgMSkpIDogc3RyY3B5ICh0
ZXJtX29wdGlvbnMsICJGTlQxM1gyNSIpKSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
aW50X2Vycm9yKCJleHBlY3RpbmcgZm9udCBzaXplIEZOVDVYOSwgRk5UOVgxNywgb3IgRk5UMTNY
MjUiLCBjX3Rva2VuKTsKICAgICAgICB9CiAgICAgICAgY190b2tlbisrOwogICAgfQp9CgoKc3Rh
dGljIHZvaWQgSFBQSmluaXQoKQp7CgoKICAgIHN3aXRjaCAoaHBwal9mb250KSB7CiAgICBjYXNl
IDA6CiAgICAgICAgdGVybS0+dl9jaGFyID0gMTE7CiAgICAgICAgdGVybS0+aF9jaGFyID0gNzsK
ICAgICAgICB0ZXJtLT52X3RpYyA9IDExIC8gMjsKICAgICAgICB0ZXJtLT5oX3RpYyA9IDcgLyAy
OwogICAgICAgIGJyZWFrOwogICAgY2FzZSAxOgogICAgICAgIHRlcm0tPnZfY2hhciA9IDIxOwog
ICAgICAgIHRlcm0tPmhfY2hhciA9IDEzOwogICAgICAgIHRlcm0tPnZfdGljID0gMjEgLyAyOwog
ICAgICAgIHRlcm0tPmhfdGljID0gMTMgLyAyOwogICAgICAgIGJyZWFrOwogICAgY2FzZSAyOgog
ICAgICAgIHRlcm0tPnZfY2hhciA9IDMxOwogICAgICAgIHRlcm0tPmhfY2hhciA9IDE5OwogICAg
ICAgIHRlcm0tPnZfdGljID0gMzEgLyAyOwogICAgICAgIHRlcm0tPmhfdGljID0gMTkgLyAyOwog
ICAgICAgIGJyZWFrOwogICAgfQp9CgoKc3RhdGljIHZvaWQgSFBQSnJlc2V0KCkKewoKCgp9CgoK
c3RhdGljIHZvaWQgSFBQSmdyYXBoaWNzKCkKewoKICAgIGJfY2hhcnNpemUoaHBwal9mb250KTsK
CiAgICBiX21ha2ViaXRtYXAoKDgqKHVuc2lnbmVkIGludCkoOS41ICogMTgwIC8gOC4wICsgMC45
KSksICg4ICogMTgwKSwgMyk7Cn0KCgpzdGF0aWMgdm9pZCBIUFBKdGV4dCgpCnsKICAgIGludCB4
LCBwbGFuZSwgeTsKICAgIGludCBtaW5Sb3csIG1heFJvdzsKICAgIGludCBudW1CeXRlczsKICAg
IGludCBudW1SZXBzOwoKICAgIGZwcmludGYoZ3BvdXRmaWxlLCAiXDAzM0VcMDMzKnQlZFJcMDMz
KnIlZFNcMDMzKmIwWFwwMzMqYjBZXDAzMypyJWRVXDAzMyp2JWRBXDAzMyp2JWRCXDAzMyp2JWRD
XDAzMyp2JWRJXDAzMyp2JWRBXDAzMyp2JWRCXDAzMyp2JWRDXDAzMyp2JWRJXDAzMyp2JWRBXDAz
Myp2JWRCXDAzMyp2JWRDXDAzMyp2JWRJXDAzMyp2JWRBXDAzMyp2JWRCXDAzMyp2JWRDXDAzMyp2
JWRJXDAzMyp2JWRBXDAzMyp2JWRCXDAzMyp2JWRDXDAzMyp2JWRJXDAzMyp2JWRBXDAzMyp2JWRC
XDAzMyp2JWRDXDAzMyp2JWRJXDAzMyp2JWRBXDAzMyp2JWRCXDAzMyp2JWRDXDAzMyp2JWRJXDAz
Myp2JWRBXDAzMyp2JWRCXDAzMyp2JWRDXDAzMyp2JWRJXDAzMypiMU1cMDMzKnIxQSIsCiMgMTk1
ICJ0ZXJtL2hwcGoudHJtIgogICAgICAgICAgICAxODAsICg4ICogMTgwKSwKICAgICAgICAgICAg
MywKICAgICAgICAgICAgOTAsIDg4LCA4NSwgMCwKICAgICAgICAgICAgNTMsIDgsIDE0LCAxLAog
ICAgICAgICAgICAzLCAyNiwgMjIsIDIsCiAgICAgICAgICAgIDQsIDQsIDI5LCAzLAogICAgICAg
ICAgICA1MywgNSwgMjUsIDQsCiAgICAgICAgICAgIDIsIDIyLCA2NCwgNSwKICAgICAgICAgICAg
ODksIDgzLCAxMywgNiwKICAgICAgICAgICAgNCwgNCwgNiwgNyk7CgoKICAgIGZvciAoeCA9ICg4
Kih1bnNpZ25lZCBpbnQpKDkuNSAqIDE4MCAvIDguMCArIDAuOSkpIC0gMTsgeCA+PSAwOyAtLXgp
IHsKICAgICAgICBmb3IgKHBsYW5lID0gMDsgcGxhbmUgPCAzOyBwbGFuZSsrKSB7CiAgICAgICAg
ICAgIG1pblJvdyA9IGJfcHNpemUgKiBwbGFuZTsKICAgICAgICAgICAgbWF4Um93ID0gYl9wc2l6
ZSAqIHBsYW5lICsgYl9wc2l6ZSAtIDE7CgoKICAgICAgICAgICAgbnVtQnl0ZXMgPSAwOwogICAg
ICAgICAgICBmb3IgKHkgPSBtYXhSb3c7IHkgPj0gbWluUm93OyAtLXkpIHsKICAgICAgICAgICAg
ICAgIGlmICh5ID09IG1pblJvdyB8fCAqKCgqYl9wKVt5XSArIHgpICE9ICooKCpiX3ApW3kgLSAx
XSArIHgpKSB7CiAgICAgICAgICAgICAgICAgICAgbnVtQnl0ZXMgKz0gMjsKICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgIlwwMzMq
YiVkIiwgbnVtQnl0ZXMpOwogICAgICAgICAgICAodm9pZCkgZnB1dGMoKGNoYXIpIChwbGFuZSA8
IDMgLSAxID8gJ1YnIDogJ1cnKSwgZ3BvdXRmaWxlKTsKCgogICAgICAgICAgICBudW1SZXBzID0g
MDsKICAgICAgICAgICAgZm9yICh5ID0gbWF4Um93OyB5ID49IG1pblJvdzsgLS15KSB7CiAgICAg
ICAgICAgICAgICBpZiAoeSA9PSBtaW5Sb3cgfHwgKigoKmJfcClbeV0gKyB4KSAhPSAqKCgqYl9w
KVt5IC0gMV0gKyB4KSkgewogICAgICAgICAgICAgICAgICAgICh2b2lkKSBmcHV0YygoY2hhcikg
KG51bVJlcHMpLCBncG91dGZpbGUpOwogICAgICAgICAgICAgICAgICAgICh2b2lkKSBmcHV0Yygo
Y2hhcikgKCooKCpiX3ApW3ldICsgeCkpLCBncG91dGZpbGUpOwogICAgICAgICAgICAgICAgICAg
IG51bVJlcHMgPSAwOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAg
ICBudW1SZXBzKys7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAg
ICB9CiAgICBmcHV0cygiXDAzMypyMUJcMDMzRSIsIGdwb3V0ZmlsZSk7CgogICAgYl9mcmVlYml0
bWFwKCk7Cn0KCgpzdGF0aWMgdm9pZCBIUFBKbGluZXR5cGUobGluZXR5cGUpCmludCBsaW5ldHlw
ZTsKewogICAgaWYgKGxpbmV0eXBlID49IDApIHsKICAgICAgICBiX3NldGxpbmV0eXBlKDApOwog
ICAgICAgIGJfc2V0dmFsdWUoKGxpbmV0eXBlICUgKCgxIDw8IDMpIC0gMSkpICsgMSk7CiAgICB9
IGVsc2UgewogICAgICAgIGJfc2V0bGluZXR5cGUobGluZXR5cGUgKyAyKTsKICAgICAgICBiX3Nl
dHZhbHVlKCgxIDw8IDMpIC0gMSk7CiAgICB9Cn0KIyAzMTAgInRlcm0uaCIgMgoKCiMgMSAidGVy
bS9pbWFnZW4udHJtIiAxCiMgNjMgInRlcm0vaW1hZ2VuLnRybSIKIyAxICJ0ZXJtL2RyaXZlci5o
IiAxCiMgNjQgInRlcm0vaW1hZ2VuLnRybSIgMgoKCgoKCgpzdGF0aWMgdm9pZCBJTUFHRU5faW5p
dCAodm9pZCk7CnN0YXRpYyB2b2lkIElNQUdFTl9ncmFwaGljcyAodm9pZCk7CnN0YXRpYyB2b2lk
IElNQUdFTl9vcHRpb25zICh2b2lkKTsKc3RhdGljIHZvaWQgSU1BR0VOX3RleHQgKHZvaWQpOwpz
dGF0aWMgdm9pZCBJTUFHRU5fbGluZXR5cGUgKGludCBsdCk7CnN0YXRpYyB2b2lkIElNQUdFTl9t
b3ZlICh1bnNpZ25lZCBpbnQgeCwgdW5zaWduZWQgaW50IHkpOwpzdGF0aWMgdm9pZCBJTUFHRU5f
dmVjdG9yICh1bnNpZ25lZCBpbnQgdXgsIHVuc2lnbmVkIGludCB1eSk7CnN0YXRpYyBpbnQgSU1B
R0VOX3RleHRfYW5nbGUgKGludCBhbmcpOwpzdGF0aWMgaW50IElNQUdFTl9qdXN0aWZ5X3RleHQg
KGVudW0gSlVTVElGWSBtb2RlKTsKc3RhdGljIHZvaWQgSU1BR0VOX3B1dF90ZXh0ICh1bnNpZ25l
ZCBpbnQgeCwgdW5zaWduZWQgaW50IHksIGNoYXIgc3RyW10pOwpzdGF0aWMgdm9pZCBJTUFHRU5f
cmVzZXQgKHZvaWQpOwojIDkzICJ0ZXJtL2ltYWdlbi50cm0iCnN0YXRpYyB2b2lkIElNX3BhZ2Ug
KHZvaWQpOwpzdGF0aWMgdm9pZCBJTUFHRU5fZHJhd19wYXRoICh2b2lkKTsKc3RhdGljIHZvaWQg
SU1BR0VOX3NldHBvcyAoaW50IHV4LCBpbnQgdXkpOwpzdGF0aWMgdW5zaWduZWQgY2hhciAqSU1B
R0VOX2N2dHMgKHVuc2lnbmVkIGNoYXIgKnN0ciwgaW50ICp3aWR0aCwgaW50ICpoZWlnaHQpOwpz
dGF0aWMgdm9pZCBJTUFHRU5fcHV0d2QgKHVuc2lnbmVkIGludCB3KTsKc3RhdGljIHZvaWQgSU1B
R0VOX2NyZWF0ZWZhbWlseSAoY2hhciAqYywgaW50IHN6KTsKc3RhdGljIHZvaWQgSU1BR0VOX3Nl
dGZvbnQgKGludCBzeik7CnZvaWQgSU1QX3NldF9kcmF3X3BhdHRlcm4gKGludCBwYXR0ZXJuLCBp
bnQgc3opOwp2b2lkIElNQUdFTl9tYXBzaW5pdCAodm9pZCk7CnZvaWQgSU1BR0VOX2NyZWF0ZW1h
cCAoaW50IG5hbWUsIHVuc2lnbmVkIHNob3J0ICptYXApOwoKCgoKCgoKIyAxICJ0ZXJtL2ltcGNv
ZGVzLmgiIDEKIyAxMTEgInRlcm0vaW1hZ2VuLnRybSIgMgoKCgoKCgpzdGF0aWMgaW50IElNQUdF
Tl9YbWF4ID0gKCgzMDApICogMTEpOwpzdGF0aWMgaW50IElNQUdFTl9ZbWF4ID0gKCgzMDApICog
NzggLyAxMCk7CgoKCgoKdW5zaWduZWQgc2hvcnQgSU1QX2dtYXBbMTI4XTsKdW5zaWduZWQgY2hh
ciBJTVBfY2htYXBbMjU2XTsKCnN0YXRpYyBpbnQgSU1BR0VOX3BhZ2VfaCA9ICgoMzAwKSAqIDgz
IC8gMTApOwpzdGF0aWMgaW50IElNQUdFTl9wYWdlX3cgPSAoKDMwMCkgKiAxMTYgLyAxMCk7CnN0
YXRpYyBpbnQgSU1fd2luX2hvcml6ID0gMTsKc3RhdGljIGludCBJTV93aW5fdmVydGkgPSAxOwpz
dGF0aWMgaW50IElNX3Bsb3RfbnIgPSAwOwoKc3RhdGljIGludCBJTUFHRU5fZm9udHNpemUgPSAx
MjsKc3RhdGljIGludCBJTUFHRU5fZmFtaWx5dGFibGVbMzZdOwpzdGF0aWMgaW50IElNQUdFTl9v
cmdYOwpzdGF0aWMgaW50IElNQUdFTl9vcmdZOwpzdGF0aWMgaW50IElNQUdFTl9vcmd4OwpzdGF0
aWMgaW50IElNQUdFTl9vcmd5OwpzdGF0aWMgaW50IElNQUdFTl9wb3N4OwpzdGF0aWMgaW50IElN
QUdFTl9wb3N5OwoKc3RhdGljIGludCBJTUFHRU5feG1heCA9ICgoMzAwKSAqIDExKTsKc3RhdGlj
IGludCBJTUFHRU5feW1heCA9ICgoMzAwKSAqIDc4IC8gMTApOwpzdGF0aWMgaW50IElNQUdFTl93
aW54ID0gKCgzMDApICogMTEpOwpzdGF0aWMgaW50IElNQUdFTl93aW55ID0gKCgzMDApICogNzgg
LyAxMCk7CnN0YXRpYyBpbnQgSU1BR0VOX2hjaGFyOwpzdGF0aWMgaW50IElNQUdFTl93Y2hhcjsK
c3RhdGljIGludCBJTUFHRU5fYmxvZnM7CnN0YXRpYyBpbnQgSU1BR0VOX2FuZ2xlID0gLTE7CnN0
YXRpYyBpbnQgSU1BR0VOX3BvcnRyYWl0OwpzdGF0aWMgZW51bSBKVVNUSUZZIElNQUdFTl9qdXN0
aWZ5ID0gTEVGVDsKCgp1bnNpZ25lZCBpbnQgSU1feHZlY3RvclsxMDBdOwp1bnNpZ25lZCBpbnQg
SU1feXZlY3RvclsxMDBdOwp1bnNpZ25lZCBpbnQgSU1fdmVjbGVuOwp1bnNpZ25lZCBpbnQgSU1f
dmVjcG9zID0gMDsKCgoKCgoKY2hhciBJTVBkcnBhdHRlcm5bMTBdWzEwXSA9CnsKICAgICAgICAg
ezB9LAogICAgICAgICB7MSwgOCwgMH0sCiAgICAgICAgIHswfSwKICAgICAgICAgezE2LCA0LCAw
fSwKICAgICAgICAgezMsIDgsIDB9LAogICAgICAgICB7OCwgOCwgMH0sCiAgICAgICAgIHsxNiwg
NiwgMywgNiwgMH0sCiAgICAgICAgIHsxNiwgNiwgOCwgNiwgMH0sCiAgICAgICAgIHsxNiwgNCwg
MSwgNCwgOCwgNCwgMSwgNCwgMH0sCiAgICAgICAgIHsxNiwgNCwgMSwgOCwgMSwgNCwgMH0KfTsK
CnN0YXRpYyB2b2lkIElNQUdFTl9pbml0KCkKewogICAgcmVnaXN0ZXIgc3RydWN0IFRFUk1FTlRS
WSAqdCA9IHRlcm07CgoKCiAgICBJTUFHRU5fcG9zeCA9IElNQUdFTl9wb3N5ID0gMDsKCiAgICBJ
TUFHRU5fb3JnWCA9IChJTUFHRU5fcGFnZV93IC0gSU1BR0VOX1htYXgpIC8gMjsKICAgIElNQUdF
Tl9vcmdZID0gKElNQUdFTl9wYWdlX2ggLSBJTUFHRU5fWW1heCkgLyAyOwoKICAgIElNQUdFTl94
bWF4ID0gSU1BR0VOX3dpbnggPSAoaW50KSAoSU1BR0VOX1htYXggLyBJTV93aW5faG9yaXopOwog
ICAgSU1BR0VOX3ltYXggPSBJTUFHRU5fd2lueSA9IChpbnQpIChJTUFHRU5fWW1heCAvIElNX3dp
bl92ZXJ0aSk7CgogICAgdC0+eG1heCA9ICh1bnNpZ25lZCBpbnQpIChJTUFHRU5feG1heCk7CiAg
ICB0LT55bWF4ID0gKHVuc2lnbmVkIGludCkgKElNQUdFTl95bWF4KTsKCiAgICBmcHV0cygiQGRv
Y3VtZW50KGxhbmd1YWdlIGltcHJlc3MsIHBhcGVyIGE0KSIsIGdwb3V0ZmlsZSk7CgogICAgaWYg
KElNQUdFTl9wb3J0cmFpdCkgewogICAgICAgIF9JT19wdXRjICgxMzcsIGdwb3V0ZmlsZSk7CiAg
ICAgICAgSU1BR0VOX3B1dHdkKDM1MjApOwogICAgfQogICAgX0lPX3B1dGMgKDIwNSwgZ3BvdXRm
aWxlKTsKICAgIF9JT19wdXRjICgoKElNQUdFTl9wb3J0cmFpdCA/IDMgOiAwKSA8PCA1KSB8ICgz
IDw8IDMpIHwgKElNQUdFTl9wb3J0cmFpdCA/IDAgOiA1KSwgZ3BvdXRmaWxlKTsKCgogICAgSU1B
R0VOX21hcHNpbml0KCk7CiAgICBJTUFHRU5fY3JlYXRlbWFwKDEsIElNUF9nbWFwKTsKCiAgICBJ
TUFHRU5fc2V0Zm9udChJTUFHRU5fZm9udHNpemUpOwoKICAgIElNQUdFTl90ZXh0X2FuZ2xlKDAp
OwoKICAgIF9JT19wdXRjICgxMzUsIGdwb3V0ZmlsZSk7CiAgICBJTUFHRU5fcHV0d2QoMCk7CiAg
ICBfSU9fcHV0YyAoMTM3LCBncG91dGZpbGUpOwogICAgSU1BR0VOX3B1dHdkKDApOwoKICAgIElN
QUdFTl9saW5ldHlwZSgtMSk7CiMgMjI4ICJ0ZXJtL2ltYWdlbi50cm0iCiAgICBJTV92ZWNsZW4g
PSAxMDA7CiAgICBJTV92ZWNwb3MgPSAwOwp9CgpzdGF0aWMgdm9pZCBJTV9wYWdlKCkKewogICAg
aWYgKElNX3ZlY3BvcykgewoKICAgICAgICBJTUFHRU5fZHJhd19wYXRoKCk7CiAgICB9CiAgICBf
SU9fcHV0YyAoMjE5LCBncG91dGZpbGUpOwp9CgpzdGF0aWMgdm9pZCBJTUFHRU5fZ3JhcGhpY3Mo
KQp7CiAgICBpbnQgdG1weCwgdG1weTsKCgogICAgaWYgKElNX3ZlY3BvcykgewoKICAgICAgICBJ
TUFHRU5fZHJhd19wYXRoKCk7CiAgICB9CiAgICBpZiAoSU1fcGxvdF9uciA+PSAoSU1fd2luX2hv
cml6ICogSU1fd2luX3ZlcnRpKSkgewogICAgICAgIElNX3BhZ2UoKTsKICAgICAgICBJTV9wbG90
X25yID0gMDsKICAgIH0KICAgIElNX3Bsb3RfbnIrKzsKICAgIHRtcHggPSBJTUFHRU5fb3JnWCAr
ICgoSU1fcGxvdF9uciAtIDEpICUgSU1fd2luX2hvcml6KSAqIElNQUdFTl93aW54OwogICAgdG1w
eSA9IElNQUdFTl9vcmdZICsgKChJTV93aW5fdmVydGkgLSAxKSAtIChpbnQpICgoSU1fcGxvdF9u
ciAtIDEpIC8gSU1fd2luX2hvcml6KSkgKiBJTUFHRU5fd2lueTsKICAgIElNQUdFTl9vcmd4ID0g
dG1weCArIChpbnQpICgoSU1BR0VOX3dpbnggLSBJTUFHRU5feG1heCkgLyAyKTsKICAgIElNQUdF
Tl9vcmd5ID0gdG1weSArIChpbnQpICgoSU1BR0VOX3dpbnkgLSBJTUFHRU5feW1heCkgLyAyKTsK
fQoKc3RhdGljIHZvaWQgSU1BR0VOX29wdGlvbnMoKQp7CiAgICBzdHJ1Y3QgdmFsdWUgYTsKCiAg
ICB3aGlsZSAoIShjX3Rva2VuID49IG51bV90b2tlbnMgfHwgZXF1YWxzKGNfdG9rZW4sIjsiKSkp
IHsKICAgICAgICBpZiAoYWxtb3N0X2VxdWFscyhjX3Rva2VuLCAicCRvcnRyYWl0IikpIHsKICAg
ICAgICAgICAgSU1BR0VOX3BvcnRyYWl0ID0gMTsKICAgICAgICAgICAgSU1BR0VOX3BhZ2VfaCA9
ICgoMzAwKSAqIDExNiAvIDEwKTsKICAgICAgICAgICAgSU1BR0VOX3BhZ2VfdyA9ICgoMzAwKSAq
IDgzIC8gMTApOwogICAgICAgICAgICBJTUFHRU5fWG1heCA9ICgoMzAwKSAqIDc4IC8gMTApOwog
ICAgICAgICAgICBJTUFHRU5fWW1heCA9ICgoMzAwKSAqIDExKTsKICAgICAgICAgICAgY190b2tl
bisrOwogICAgICAgIH0gZWxzZSBpZiAoYWxtb3N0X2VxdWFscyhjX3Rva2VuLCAibCRhbmRzY2Fw
ZSIpKSB7CiAgICAgICAgICAgIElNQUdFTl9wb3J0cmFpdCA9IDA7CiAgICAgICAgICAgIGNfdG9r
ZW4rKzsKICAgICAgICB9IGVsc2UgaWYgKGVxdWFscyhjX3Rva2VuLCAiWyIpKSB7CiAgICAgICAg
ICAgIGNfdG9rZW4rKzsKCiAgICAgICAgICAgIGlmIChlcXVhbHMoY190b2tlbiwgIl0iKSkgewog
ICAgICAgICAgICAgICAgSU1fcGFnZSgpOwogICAgICAgICAgICAgICAgY190b2tlbisrOwogICAg
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKChjX3Rv
a2VuID49IG51bV90b2tlbnMgfHwgZXF1YWxzKGNfdG9rZW4sIjsiKSkpIHsKICAgICAgICAgICAg
ICAgIGludF9lcnJvcigibm8uIHdpbmRvd3M6IFtob3Jpem9udGFsLHZlcnRpY2FsXSBleHBlY3Rl
ZCIsIGNfdG9rZW4pOwogICAgICAgICAgICB9IGVsc2UgaWYgKCFlcXVhbHMoY190b2tlbiwgIiwi
KSkgewogICAgICAgICAgICAgICAgSU1fd2luX2hvcml6ID0gKGludCkgcmVhbChjb25zdF9leHBy
ZXNzKCZhKSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCFlcXVhbHMoY190b2tlbiwg
IiwiKSkKICAgICAgICAgICAgICAgIGludF9lcnJvcigiJywnIGV4cGVjdGVkIiwgY190b2tlbik7
CiAgICAgICAgICAgIGNfdG9rZW4rKzsKICAgICAgICAgICAgaWYgKCFlcXVhbHMoY190b2tlbiwg
Il0iKSkgewogICAgICAgICAgICAgICAgSU1fd2luX3ZlcnRpID0gKGludCkgcmVhbChjb25zdF9l
eHByZXNzKCZhKSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCFlcXVhbHMoY190b2tl
biwgIl0iKSkKICAgICAgICAgICAgICAgIGludF9lcnJvcigiZXhwZWN0aW5nICddJyIsIGNfdG9r
ZW4pOwogICAgICAgICAgICBjX3Rva2VuKys7CiAgICAgICAgfSBlbHNlIHsKCiAgICAgICAgICAg
IElNQUdFTl9mb250c2l6ZSA9IChpbnQpIHJlYWwoY29uc3RfZXhwcmVzcygmYSkpOwogICAgICAg
ICAgICBpZiAoSU1BR0VOX2ZvbnRzaXplIDwgOCkKICAgICAgICAgICAgICAgIElNQUdFTl9mb250
c2l6ZSA9IDg7CiAgICAgICAgICAgIGlmIChJTUFHRU5fZm9udHNpemUgPiAxNSkKICAgICAgICAg
ICAgICAgIElNQUdFTl9mb250c2l6ZSA9IDE1OwogICAgICAgIH0KICAgIH0KICAgIHNwcmludGYo
dGVybV9vcHRpb25zLCAiJWQgJXMgWyUxZCwlMWRdIiwgSU1BR0VOX2ZvbnRzaXplLCAoSU1BR0VO
X3BvcnRyYWl0KSA/ICJwb3J0cmFpdCIgOgogICAgICAgICAgICAibGFuZHNjYXBlIiwgSU1fd2lu
X2hvcml6LCBJTV93aW5fdmVydGkpOwp9CgoKc3RhdGljIHZvaWQgSU1BR0VOX3RleHQoKQp7Cn0K
CgoKCgpzdGF0aWMgdm9pZCBJTUFHRU5fbGluZXR5cGUobHQpCmludCBsdDsKewogICAgc3RhdGlj
IGludCBsYXN0bGluZXR5cGUgPSAtMTA7CiAgICBpbnQgcGVuIDsKCiAgICBpZiAoSU1fdmVjcG9z
KSB7CgogICAgICAgIElNQUdFTl9kcmF3X3BhdGgoKTsKICAgIH0KCgoKCgogICAgaWYgKGx0ID09
IC0yKSB7CiAgICAgICAgcGVuID0gNDsKICAgIH0gZWxzZSB7CiAgICAgICAgcGVuID0gKGludCkg
KGx0IC8gOCkgKiAyOwogICAgICAgIGlmIChwZW4gPD0gMCkKICAgICAgICAgICAgcGVuID0gMTsK
ICAgIH0KICAgIGx0ID0gKGx0ICUgOCkgKyAyOwoKICAgIGlmIChsYXN0bGluZXR5cGUgPT0gbHQp
CiAgICAgICAgcmV0dXJuOwoKICAgIGxhc3RsaW5ldHlwZSA9IGx0OwoKICAgIF9JT19wdXRjICgy
MzIsIGdwb3V0ZmlsZSk7CiAgICBfSU9fcHV0YyAocGVuLCBncG91dGZpbGUpOwogICAgSU1QX3Nl
dF9kcmF3X3BhdHRlcm4obHQsIHBlbik7Cn0KCgpzdGF0aWMgdm9pZCBJTUFHRU5fbW92ZSh4LCB5
KQp1bnNpZ25lZCBpbnQgeCwgeTsKewogICAgaWYgKElNX3ZlY3BvcykgewoKICAgICAgICBJTUFH
RU5fZHJhd19wYXRoKCk7CiAgICB9CiAgICBJTV94dmVjdG9yWzBdID0geCArIElNQUdFTl9vcmd4
OwogICAgSU1feXZlY3RvclswXSA9IHkgKyBJTUFHRU5fb3JneTsKCiAgICBJTV92ZWNwb3MgPSAx
OwoKCgoKfQoKc3RhdGljIHZvaWQgSU1BR0VOX3ZlY3Rvcih1eCwgdXkpCnVuc2lnbmVkIGludCB1
eCwgdXk7CnsKCgoKICAgIElNX3h2ZWN0b3JbSU1fdmVjcG9zXSA9IHV4ICsgSU1BR0VOX29yZ3g7
CiAgICBJTV95dmVjdG9yW0lNX3ZlY3Bvc10gPSB1eSArIElNQUdFTl9vcmd5OwoKICAgIElNX3Zl
Y3BvcysrOwogICAgaWYgKElNX3ZlY3BvcyA+PSBJTV92ZWNsZW4pIHsKICAgICAgICBJTUFHRU5f
ZHJhd19wYXRoKCk7CiAgICAgICAgSU1feHZlY3RvclswXSA9IHV4ICsgSU1BR0VOX29yZ3g7CiAg
ICAgICAgSU1feXZlY3RvclswXSA9IHV5ICsgSU1BR0VOX29yZ3k7CiAgICAgICAgSU1fdmVjcG9z
ID0gMTsKICAgIH0KfQoKc3RhdGljIHZvaWQgSU1BR0VOX2RyYXdfcGF0aCgpCnsKCiAgICByZWdp
c3RlciBpbnQgaTsKCiAgICBfSU9fcHV0YyAoMjMwLCBncG91dGZpbGUpOwogICAgSU1BR0VOX3B1
dHdkKElNX3ZlY3Bvcyk7CiAgICBmb3IgKGkgPSAwOyBpIDwgSU1fdmVjcG9zOyBpKyspIHsKCgoK
CiAgICAgICAgSU1BR0VOX3B1dHdkKElNX3h2ZWN0b3JbaV0pOwogICAgICAgIElNQUdFTl9wdXR3
ZChJTV95dmVjdG9yW2ldKTsKICAgIH0KICAgIElNX3ZlY3BvcyA9IDA7CgoKICAgIF9JT19wdXRj
ICgyMzQsIGdwb3V0ZmlsZSk7CiAgICBfSU9fcHV0YyAoMTUsIGdwb3V0ZmlsZSk7CgoKCgp9Cgpz
dGF0aWMgdm9pZCBJTUFHRU5fc2V0cG9zKHV4LCB1eSkKaW50IHV4LCB1eTsKewoKCiAgICBfSU9f
cHV0YyAoMTM1LCBncG91dGZpbGUpOwogICAgSU1BR0VOX3B1dHdkKHV4ICsgSU1BR0VOX29yZ3gp
OwogICAgX0lPX3B1dGMgKDEzNywgZ3BvdXRmaWxlKTsKICAgIElNQUdFTl9wdXR3ZCh1eSArIElN
QUdFTl9vcmd5KTsKICAgIF9JT19wdXRjICgyMDksIGdwb3V0ZmlsZSk7CiAgICBpZiAoSU1BR0VO
X2FuZ2xlID09IDEpCiAgICAgICAgSU1BR0VOX3B1dHdkKHV5ICsgSU1BR0VOX29yZ3gpOwogICAg
ZWxzZQogICAgICAgIElNQUdFTl9wdXR3ZCh1eCArIElNQUdFTl9vcmd4KTsKfQoKc3RhdGljIGlu
dCBJTUFHRU5fdGV4dF9hbmdsZShhbmcpCmludCBhbmc7CnsKCiAgICBpZiAoSU1fdmVjcG9zKSB7
CgogICAgICAgIElNQUdFTl9kcmF3X3BhdGgoKTsKICAgIH0KICAgIGlmIChJTUFHRU5fYW5nbGUg
IT0gYW5nKSB7CiAgICAgICAgSU1BR0VOX2FuZ2xlID0gYW5nOwogICAgICAgIF9JT19wdXRjICgy
MDYsIGdwb3V0ZmlsZSk7CiAgICAgICAgX0lPX3B1dGMgKGFuZyA9PSAwID8gMCA6IDcsIGdwb3V0
ZmlsZSk7CiAgICB9CiAgICByZXR1cm4gKDEpOwp9CgpzdGF0aWMgaW50IElNQUdFTl9qdXN0aWZ5
X3RleHQobW9kZSkKZW51bSBKVVNUSUZZIG1vZGU7CnsKICAgIGlmIChJTV92ZWNwb3MpIHsKCiAg
ICAgICAgSU1BR0VOX2RyYXdfcGF0aCgpOwogICAgfQogICAgSU1BR0VOX2p1c3RpZnkgPSBtb2Rl
OwogICAgcmV0dXJuICgxKTsKfQoKc3RhdGljIHVuc2lnbmVkIGNoYXIgKklNQUdFTl9jdnRzKHN0
ciwgd2lkdGgsIGhlaWdodCkKdW5zaWduZWQgY2hhciAqc3RyOwppbnQgKndpZHRoOwppbnQgKmhl
aWdodDsKewogICAgdW5zaWduZWQgY2hhciAqY3AxOwogICAgdW5zaWduZWQgY2hhciAqY3AyOwog
ICAgc3RhdGljIHVuc2lnbmVkIGNoYXIgKmJ1ZiA9ICgodm9pZCAqKTApOwogICAgaW50IGg7CiAg
ICBpbnQgbWF4dzsKICAgIGludCB3OwoKCgoKCiAgICBpZiAoYnVmICE9ICgodm9pZCAqKTApKQog
ICAgICAgICh2b2lkKSBmcmVlKGJ1Zik7CiAgICBidWYgPSAodW5zaWduZWQgY2hhciAqKSBncF9h
bGxvYyhzdHJsZW4oKGNoYXIgKikgc3RyKSwgImNvbnZlcnRlZCBsYWJlbCBzdHJpbmciKTsKCgoK
ICAgIGNwMSA9IHN0cjsKICAgIGNwMiA9IGJ1ZjsKICAgIGggPSAxOwogICAgbWF4dyA9IDA7CiAg
ICB3ID0gMDsKICAgIHdoaWxlIChzdHJsZW4oKGNoYXIgKikgY3AxKSA+IDApIHsKICAgICAgICBz
d2l0Y2ggKCpjcDEpIHsKICAgICAgICBjYXNlICcgJzoKICAgICAgICAgICAgKmNwMisrID0gMTI4
OwogICAgICAgICAgICB3Kys7CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlICdcXCc6
CiAgICAgICAgICAgIGlmICgqKytjcDEgPT0gJ1xcJykgewoKICAgICAgICAgICAgICAgIGgrKzsK
ICAgICAgICAgICAgICAgIGlmICh3ID4gbWF4dykKICAgICAgICAgICAgICAgICAgICBtYXh3ID0g
dzsKICAgICAgICAgICAgICAgIHcgPSAwOwogICAgICAgICAgICAgICAgKmNwMisrID0gJ1xuJzsK
CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQoKCiAgICAgICAgZGVmYXVsdDoK
CiAgICAgICAgICAgICpjcDIrKyA9IElNUF9jaG1hcFsqY3AxXTsKICAgICAgICAgICAgdysrOwog
ICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgY3AxKys7CiAgICB9CgogICAgKmNw
MisrID0gJ1xuJzsKICAgICpjcDIgPSAnXDAnOwogICAgaWYgKHcgPiBtYXh3KQogICAgICAgIG1h
eHcgPSB3OwoKICAgIGlmIChoZWlnaHQgIT0gKCh2b2lkICopMCkpCiAgICAgICAgKmhlaWdodCA9
IElNQUdFTl9hbmdsZSA/CiAgICAgICAgICAgIElNQUdFTl93Y2hhciAqIG1heHcgOgogICAgICAg
ICAgICBJTUFHRU5faGNoYXIgKiBoOwogICAgaWYgKHdpZHRoICE9ICgodm9pZCAqKTApKQogICAg
ICAgICp3aWR0aCA9IElNQUdFTl9hbmdsZSA/CiAgICAgICAgICAgIElNQUdFTl9oY2hhciAqIGgg
OgogICAgICAgICAgICBJTUFHRU5fd2NoYXIgKiBtYXh3OwogICAgcmV0dXJuIChidWYpOwp9Cgpz
dGF0aWMgdm9pZCBJTUFHRU5fcHV0X3RleHQoeCwgeSwgc3RyKQp1bnNpZ25lZCBpbnQgeCwgeTsK
Y2hhciBzdHJbXTsKewogICAgdW5zaWduZWQgY2hhciAqY3ZzdHIsICpwOwogICAgaW50IGhlaWdo
dDsKICAgIGludCB3aWR0aDsKICAgIGludCBzeCwgc3k7CgogICAgaWYgKElNX3ZlY3BvcykgewoK
ICAgICAgICBJTUFHRU5fZHJhd19wYXRoKCk7CiAgICB9CiAgICBjdnN0ciA9IElNQUdFTl9jdnRz
KCh1bnNpZ25lZCBjaGFyICopIHN0ciwgJndpZHRoLCAmaGVpZ2h0KTsKCiAgICBpZiAoSU1BR0VO
X2FuZ2xlKSB7CgogICAgICAgIHggLT0gd2lkdGggLyAyIC0gSU1BR0VOX2hjaGFyOwoKICAgIH0g
ZWxzZQogICAgICAgIHkgKz0gaGVpZ2h0IC8gMiAtIElNQUdFTl9oY2hhcjsKCiAgICB3aGlsZSAo
KHAgPSAodW5zaWduZWQgY2hhciAqKSAoX19leHRlbnNpb25fXyAoX19idWlsdGluX2NvbnN0YW50
X3AgKCdcbicpICYmICgnXG4nKSA9PSAnXDAnID8gKGNoYXIgKikgX19yYXdtZW1jaHIgKChjaGFy
ICopIGN2c3RyLCAnXG4nKSA6IHN0cmNociAoKGNoYXIgKikgY3ZzdHIsICdcbicpKSkpKSB7CiAg
ICAgICAgKnAgPSAnXDAnOwogICAgICAgIHN4ID0geDsKICAgICAgICBzeSA9IHk7CiAgICAgICAg
aWYgKElNQUdFTl9hbmdsZSkKICAgICAgICAgICAgc3ggPSB4IC0gSU1BR0VOX2Jsb2ZzOwogICAg
ICAgIGVsc2UKICAgICAgICAgICAgc3kgPSB5ICsgSU1BR0VOX2Jsb2ZzOwoKICAgICAgICB3aWR0
aCA9IHN0cmxlbigoY2hhciAqKSBjdnN0cikgKiBJTUFHRU5fd2NoYXI7CgogICAgICAgIHN3aXRj
aCAoSU1BR0VOX2p1c3RpZnkpIHsKICAgICAgICBjYXNlIExFRlQ6CiAgICAgICAgICAgIGJyZWFr
OwogICAgICAgIGNhc2UgQ0VOVFJFOgogICAgICAgICAgICBpZiAoSU1BR0VOX2FuZ2xlKSB7CiAg
ICAgICAgICAgICAgICBzeSA9IHkgLSB3aWR0aCAvIDI7CiAgICAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICAgICBzeCA9IHggLSB3aWR0aCAvIDI7CiAgICAgICAgICAgIH0KICAgICAgICAg
ICAgYnJlYWs7CgogICAgICAgIGNhc2UgUklHSFQ6CiAgICAgICAgICAgIGlmIChJTUFHRU5fYW5n
bGUpIHsKICAgICAgICAgICAgICAgIHN5ID0geSAtIHdpZHRoOwogICAgICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgICAgc3ggPSB4IC0gd2lkdGg7CiAgICAgICAgICAgIH0KICAgICAgICAg
ICAgYnJlYWs7CgogICAgICAgIH0KCiAgICAgICAgSU1BR0VOX3NldHBvcyhzeCwgc3kpOwogICAg
ICAgIGZwdXRzKChjaGFyICopIGN2c3RyLCBncG91dGZpbGUpOwogICAgICAgIGN2c3RyID0gKytw
OwogICAgICAgIGlmIChJTUFHRU5fYW5nbGUpIHsKICAgICAgICAgICAgeCArPSBJTUFHRU5faGNo
YXI7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgeSAtPSBJTUFHRU5faGNoYXI7CiAgICAg
ICAgfQoKICAgIH0KfQoKc3RhdGljIHZvaWQgSU1BR0VOX3Jlc2V0KCkKewogICAgaWYgKElNX3Zl
Y3BvcykgewoKICAgICAgICBJTUFHRU5fZHJhd19wYXRoKCk7CiAgICB9CiAgICBfSU9fcHV0YyAo
MjU1LCBncG91dGZpbGUpOwp9CgpzdGF0aWMgdm9pZCBJTUFHRU5fcHV0d2QodykKdW5zaWduZWQg
aW50IHc7CnsKCiAgICBfSU9fcHV0YyAodyA+PiA4LCBncG91dGZpbGUpOwogICAgX0lPX3B1dGMg
KHcsIGdwb3V0ZmlsZSk7Cn0KCnN0YXRpYyB2b2lkIElNQUdFTl9jcmVhdGVmYW1pbHkoYywgc3op
CmNoYXIgKmM7CmludCBzejsKewoKICAgIF9JT19wdXRjICgyMjEsIGdwb3V0ZmlsZSk7CiAgICBf
SU9fcHV0YyAoc3osIGdwb3V0ZmlsZSk7CiAgICBfSU9fcHV0YyAoMSwgZ3BvdXRmaWxlKTsKICAg
IF9JT19wdXRjICgxLCBncG91dGZpbGUpOwoKICAgIGZwdXRzKGMsIGdwb3V0ZmlsZSk7CiAgICBf
SU9fcHV0YyAoMCwgZ3BvdXRmaWxlKTsKfQoKc3RhdGljIHZvaWQgSU1BR0VOX3NldGZvbnQoc3op
CmludCBzejsKewogICAgY2hhciBmb250WzIwXTsKCiAgICBpZiAoIUlNQUdFTl9mYW1pbHl0YWJs
ZVtzel0pIHsKICAgICAgICBzcHJpbnRmKGZvbnQsICIlcyUwMmQiLCAiY291ciIsIHN6KTsKICAg
ICAgICBJTUFHRU5fY3JlYXRlZmFtaWx5KGZvbnQsIHN6KTsKICAgICAgICBJTUFHRU5fZmFtaWx5
dGFibGVbc3pdID0gc3o7CiAgICB9CiAgICBJTUFHRU5faGNoYXIgPSBzeiAqIDU7CiAgICBJTUFH
RU5fd2NoYXIgPSBJTUFHRU5faGNoYXIgLyAyOwogICAgSU1BR0VOX2Jsb2ZzID0gSU1BR0VOX2hj
aGFyIC8gMzsKICAgIHRlcm0tPnZfY2hhciA9IElNQUdFTl9oY2hhcjsKICAgIHRlcm0tPmhfY2hh
ciA9IElNQUdFTl93Y2hhcjsKICAgIF9JT19wdXRjICgyMDcsIGdwb3V0ZmlsZSk7CiAgICBfSU9f
cHV0YyAoc3osIGdwb3V0ZmlsZSk7CiAgICBfSU9fcHV0YyAoMjEwLCBncG91dGZpbGUpOwogICAg
SU1BR0VOX3B1dHdkKElNQUdFTl93Y2hhcik7CiAgICBfSU9fcHV0YyAoMjA4LCBncG91dGZpbGUp
OwogICAgSU1BR0VOX3B1dHdkKElNQUdFTl9oY2hhcik7Cn0KCnZvaWQgSU1QX3NldF9kcmF3X3Bh
dHRlcm4ocGF0dGVybiwgc3opCmludCBwYXR0ZXJuLCBzejsKewogICAgaW50IGkgOwogICAgX0lP
X3B1dGMgKDIzNywgZ3BvdXRmaWxlKTsKICAgIF9JT19wdXRjICgwLCBncG91dGZpbGUpOwogICAg
X0lPX3B1dGMgKDIzNywgZ3BvdXRmaWxlKTsKCgoKCiAgICBfSU9fcHV0YyAoc3RybGVuKElNUGRy
cGF0dGVybltwYXR0ZXJuXSksIGdwb3V0ZmlsZSk7CiAgICBmb3IgKGkgPSAwOyBpIDwgc3RybGVu
KElNUGRycGF0dGVybltwYXR0ZXJuXSk7IGkrKykgewogICAgICAgIElNQUdFTl9wdXR3ZChJTVBk
cnBhdHRlcm5bcGF0dGVybl1baV0gKiBzeik7CiAgICB9Cn0KCgp2b2lkIElNQUdFTl9tYXBzaW5p
dCgpCnsKCiAgICByZWdpc3RlciBpbnQgaSA7CgogICAgZm9yIChpID0gMzI7IGkgPCAxMjc7IGkr
KykgewogICAgICAgIElNUF9nbWFwW2ldID0gaTsKICAgIH0KICAgIElNUF9nbWFwWzFdID0gMjI1
OwogICAgSU1QX2dtYXBbMl0gPSAyMzM7CiAgICBJTVBfZ21hcFszXSA9IDYxNzM2OwogICAgSU1Q
X2dtYXBbNF0gPSAyNDE7CiAgICBJTVBfZ21hcFs1XSA9IDI0OTsKICAgIElNUF9nbWFwWzZdID0g
NjE4NjQ7CiAgICBJTVBfZ21hcFs3XSA9IDE2MjsKICAgIElNUF9nbWFwWzhdID0gMTYzOwogICAg
SU1QX2dtYXBbOV0gPSAxNjQ7CiAgICBJTVBfZ21hcFsxMF0gPSAxNjU7CiAgICBJTVBfZ21hcFsx
MV0gPSAxNjc7CiAgICBJTVBfZ21hcFsxMl0gPSAxNzE7CiAgICBJTVBfZ21hcFsxM10gPSAxODI7
CiAgICBJTVBfZ21hcFsxNF0gPSA2MTM0NjsKICAgIElNUF9nbWFwWzE1XSA9IDE5MTsKICAgIElN
UF9nbWFwWzE2XSA9IDE4NzsKICAgIElNUF9nbWFwWzE3XSA9IDE4ODsKICAgIElNUF9nbWFwWzE4
XSA9IDE4OTsKICAgIElNUF9nbWFwWzE5XSA9IDE5MDsKICAgIElNUF9nbWFwWzIwXSA9IDIxMDsK
ICAgIElNUF9nbWFwWzIxXSA9IDIxMTsKICAgIElNUF9nbWFwWzIyXSA9IDI1MTsKICAgIElNUF9n
bWFwWzIzXSA9IDYxMjMyOwogICAgSU1QX2dtYXBbMjRdID0gMjEyOwogICAgSU1QX2dtYXBbMjVd
ID0gMTM3OwogICAgSU1QX2dtYXBbMjZdID0gMTc2OwogICAgSU1QX2dtYXBbMjddID0gMTYxOwog
ICAgSU1QX2dtYXBbMjhdID0gMTM5OwogICAgSU1QX2dtYXBbMjldID0gMTMzOwogICAgSU1QX2dt
YXBbMzBdID0gMTQwOwogICAgSU1QX2dtYXBbMzFdID0gNjEyNDk7CiAgICBJTVBfZ21hcFszMl0g
PSA4NzM4OwogICAgSU1QX2dtYXBbMzRdID0gMTg2OwogICAgSU1QX2dtYXBbMzZdID0gMTY0Owog
ICAgSU1QX2dtYXBbMzldID0gMTg1OwogICAgSU1QX2dtYXBbMTI3XSA9IDYxMjg2OwoKCgogICAg
Zm9yIChpID0gMzI7IGkgPD0gMTI3OyBpKyspIHsKICAgICAgICBJTVBfY2htYXBbaV0gPSBpOwog
ICAgfQogICAgZm9yIChpID0gMTI4OyBpIDw9IDI1NTsgaSsrKSB7CiAgICAgICAgSU1QX2NobWFw
W2ldID0gMTI4OwogICAgfQoKICAgIElNUF9jaG1hcFsxNjFdID0gMjc7CiAgICBJTVBfY2htYXBb
MTYyXSA9IDc7CiAgICBJTVBfY2htYXBbMTYzXSA9IDg7CiAgICBJTVBfY2htYXBbMTY0XSA9IDEy
MDsKICAgIElNUF9jaG1hcFsxNjVdID0gMTA7CiAgICBJTVBfY2htYXBbMTY2XSA9IDEyNDsKICAg
IElNUF9jaG1hcFsxNjddID0gMTE7CiAgICBJTVBfY2htYXBbMTY4XSA9IDI1OwogICAgSU1QX2No
bWFwWzE2OV0gPSAyMTsKICAgIElNUF9jaG1hcFsxNzBdID0gNDU7CiAgICBJTVBfY2htYXBbMTcx
XSA9IDEyOwogICAgSU1QX2NobWFwWzE3Ml0gPSA4MzsKICAgIElNUF9jaG1hcFsxNzNdID0gNDU7
CiAgICBJTVBfY2htYXBbMTc0XSA9IDIwOwogICAgSU1QX2NobWFwWzE3NV0gPSAxMjY7CiAgICBJ
TVBfY2htYXBbMTc2XSA9IDI2OwogICAgSU1QX2NobWFwWzE3N10gPSAxMjsKICAgIElNUF9jaG1h
cFsxNzhdID0gMTsKICAgIElNUF9jaG1hcFsxNzldID0gMjsKICAgIElNUF9jaG1hcFsxODBdID0g
Mjk7CiAgICBJTVBfY2htYXBbMTgxXSA9IDUyOwogICAgSU1QX2NobWFwWzE4Ml0gPSAxMzsKICAg
IElNUF9jaG1hcFsxODNdID0gNTsKICAgIElNUF9jaG1hcFsxODRdID0gMjg7CiAgICBJTVBfY2ht
YXBbMTg1XSA9IDM7CiAgICBJTVBfY2htYXBbMTg2XSA9IDQ1OwogICAgSU1QX2NobWFwWzE4N10g
PSAxNjsKICAgIElNUF9jaG1hcFsxODhdID0gMTc7CiAgICBJTVBfY2htYXBbMTg5XSA9IDE4Owog
ICAgSU1QX2NobWFwWzE5MF0gPSAxOTsKICAgIElNUF9jaG1hcFsxOTFdID0gMTU7CiAgICBJTVBf
Y2htYXBbMTkyXSA9IDY1OwogICAgSU1QX2NobWFwWzE5M10gPSA2NTsKICAgIElNUF9jaG1hcFsx
OTRdID0gNjU7CiAgICBJTVBfY2htYXBbMTk1XSA9IDY1OwogICAgSU1QX2NobWFwWzE5Nl0gPSA2
NTsKICAgIElNUF9jaG1hcFsxOTddID0gMzsKICAgIElNUF9jaG1hcFsxOThdID0gMTsKICAgIElN
UF9jaG1hcFsxOTldID0gNjc7CiAgICBJTVBfY2htYXBbMjAwXSA9IDY5OwogICAgSU1QX2NobWFw
WzIwMV0gPSA2OTsKICAgIElNUF9jaG1hcFsyMDJdID0gNjk7CiAgICBJTVBfY2htYXBbMjAzXSA9
IDY5OwogICAgSU1QX2NobWFwWzIwNF0gPSA3MzsKICAgIElNUF9jaG1hcFsyMDVdID0gNzM7CiAg
ICBJTVBfY2htYXBbMjA2XSA9IDczOwogICAgSU1QX2NobWFwWzIwN10gPSA3MzsKICAgIElNUF9j
aG1hcFsyMDhdID0gNjg7CiAgICBJTVBfY2htYXBbMjA5XSA9IDc4OwogICAgSU1QX2NobWFwWzIx
MF0gPSA3OTsKICAgIElNUF9jaG1hcFsyMTFdID0gNzk7CiAgICBJTVBfY2htYXBbMjEyXSA9IDc5
OwogICAgSU1QX2NobWFwWzIxM10gPSA3OTsKICAgIElNUF9jaG1hcFsyMTRdID0gNzk7CiAgICBJ
TVBfY2htYXBbMjE1XSA9IDEzOwogICAgSU1QX2NobWFwWzIxNl0gPSAyOwogICAgSU1QX2NobWFw
WzIxN10gPSA4NTsKICAgIElNUF9jaG1hcFsyMThdID0gODU7CiAgICBJTVBfY2htYXBbMjE5XSA9
IDg1OwogICAgSU1QX2NobWFwWzIyMF0gPSA4NTsKICAgIElNUF9jaG1hcFsyMjFdID0gODk7CiAg
ICBJTVBfY2htYXBbMjIyXSA9IDMyOwogICAgSU1QX2NobWFwWzIyM10gPSAyMjsKICAgIElNUF9j
aG1hcFsyMjRdID0gOTc7CiAgICBJTVBfY2htYXBbMjI1XSA9IDk3OwogICAgSU1QX2NobWFwWzIy
Nl0gPSA5NzsKICAgIElNUF9jaG1hcFsyMjddID0gOTc7CiAgICBJTVBfY2htYXBbMjI4XSA9IDk3
OwogICAgSU1QX2NobWFwWzIyOV0gPSA2OwogICAgSU1QX2NobWFwWzIzMF0gPSA0OwogICAgSU1Q
X2NobWFwWzIzMV0gPSA5OTsKICAgIElNUF9jaG1hcFsyMzJdID0gMTAxOwogICAgSU1QX2NobWFw
WzIzM10gPSAxMDE7CiAgICBJTVBfY2htYXBbMjM0XSA9IDEwMTsKICAgIElNUF9jaG1hcFsyMzVd
ID0gMTAxOwogICAgSU1QX2NobWFwWzIzNl0gPSAxMDU7CiAgICBJTVBfY2htYXBbMjM3XSA9IDEw
NTsKICAgIElNUF9jaG1hcFsyMzhdID0gMTA1OwogICAgSU1QX2NobWFwWzIzOV0gPSAxMDU7CiAg
ICBJTVBfY2htYXBbMjQwXSA9IDEwMDsKICAgIElNUF9jaG1hcFsyNDFdID0gMTEwOwogICAgSU1Q
X2NobWFwWzI0Ml0gPSAxMTE7CiAgICBJTVBfY2htYXBbMjQzXSA9IDExMTsKICAgIElNUF9jaG1h
cFsyNDRdID0gMTExOwogICAgSU1QX2NobWFwWzI0NV0gPSAxMTE7CiAgICBJTVBfY2htYXBbMjQ2
XSA9IDExMTsKICAgIElNUF9jaG1hcFsyNDddID0gMTA7CiAgICBJTVBfY2htYXBbMjQ4XSA9IDU7
CiAgICBJTVBfY2htYXBbMjQ5XSA9IDExNzsKICAgIElNUF9jaG1hcFsyNTBdID0gMTE3OwogICAg
SU1QX2NobWFwWzI1MV0gPSAxMTc7CiAgICBJTVBfY2htYXBbMjUyXSA9IDExNzsKICAgIElNUF9j
aG1hcFsyNTNdID0gMTIxOwogICAgSU1QX2NobWFwWzI1NF0gPSAzMjsKICAgIElNUF9jaG1hcFsy
NTVdID0gMTIxOwp9Cgp2b2lkIElNQUdFTl9jcmVhdGVtYXAobmFtZSwgbWFwKQp1bnNpZ25lZCBz
aG9ydCAqbWFwOwppbnQgbmFtZTsKewogICAgcmVnaXN0ZXIgaW50IGksIGo7CiAgICB1bnNpZ25l
ZCBjaGFyIHNbNF0sICpwOwoKICAgIHAgPSBzOwogICAgKnArKyA9IDIyMjsKICAgICpwKysgPSBu
YW1lOwogICAgaiA9IDA7CiAgICBmb3IgKGkgPSAwOyBpIDwgMTI3OyBpKyspIHsKICAgICAgICBp
ZiAobWFwW2ldKQogICAgICAgICAgICBqKys7CiAgICB9CiAgICAqcCA9IGo7CiAgICBmb3IgKGkg
PSAwOyBpIDwgMzsgaSsrKQogICAgICAgIF9JT19wdXRjIChzW2ldLCBncG91dGZpbGUpOwoKICAg
IHNbM10gPSAxOwogICAgZm9yIChqID0gMDsgaiA8IDEyNzsgaisrKSB7CiAgICAgICAgaWYgKG1h
cFtqXSkgewogICAgICAgICAgICBwID0gczsKICAgICAgICAgICAgKnArKyA9IGo7CiAgICAgICAg
ICAgICpwKysgPSBtYXBbal0gPj4gODsKICAgICAgICAgICAgKnAgPSBtYXBbal0gJiAyNTU7CiAg
ICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCA0OyBpKyspCiAgICAgICAgICAgICAgICBfSU9fcHV0
YyAoc1tpXSwgZ3BvdXRmaWxlKTsKICAgICAgICB9CiAgICB9Cn0KIyAzMTMgInRlcm0uaCIgMgoK
CgoKCiMgMSAidGVybS9taWYudHJtIiAxCiMgOTAgInRlcm0vbWlmLnRybSIKIyAxICJ0ZXJtL2Ry
aXZlci5oIiAxCiMgOTEgInRlcm0vbWlmLnRybSIgMgojIDk5ICJ0ZXJtL21pZi50cm0iCnN0YXRp
YyB2b2lkIE1JRl9pbml0ICh2b2lkKTsKc3RhdGljIHZvaWQgTUlGX2dyYXBoaWNzICh2b2lkKTsK
c3RhdGljIHZvaWQgTUlGX3RleHQgKHZvaWQpOwpzdGF0aWMgdm9pZCBNSUZfbGluZXR5cGUgKGlu
dCBsaW5ldHlwZSk7CnN0YXRpYyB2b2lkIE1JRl9tb3ZlICh1bnNpZ25lZCBpbnQgeCwgdW5zaWdu
ZWQgaW50IHkpOwpzdGF0aWMgdm9pZCBNSUZfdmVjdG9yICh1bnNpZ25lZCBpbnQgeCwgdW5zaWdu
ZWQgaW50IHkpOwpzdGF0aWMgdm9pZCBNSUZfcHV0X3RleHQgKHVuc2lnbmVkIGludCB4LCB1bnNp
Z25lZCBpbnQgeSwgY2hhciAqc3RyKTsKc3RhdGljIGludCBNSUZfdGV4dF9hbmdsZSAoaW50IGFu
Zyk7CnN0YXRpYyB2b2lkIE1JRl9yZXNldCAodm9pZCk7CnN0YXRpYyB2b2lkIE1JRl9vcHRpb25z
ICh2b2lkKTsKc3RhdGljIGludCBNSUZfanVzdGlmeV90ZXh0IChlbnVtIEpVU1RJRlkgbW9kZSk7
CnN0YXRpYyB2b2lkIE1JRl9wb2ludCAodW5zaWduZWQgaW50IHgsIHVuc2lnbmVkIGludCB5LCBp
bnQgbnVtYmVyKTsKIyAxMjYgInRlcm0vbWlmLnRybSIKc3RhdGljIGludCBpbnNlcnRfbWlmX2xp
bmUgKGRvdWJsZSBmeCwgZG91YmxlIGZ5KTsKc3RhdGljIGludCBwcm9jX2dyb3VwX2lkIChpbnQg
Z3JvdXBfaWQpOwpzdGF0aWMgdm9pZCBmcmVlX21pZl9saW5lICh2b2lkKTsKc3RhdGljIHZvaWQg
cHV0X21pZl9saW5lICh2b2lkKTsKc3RhdGljIHZvaWQgTUlGX3NldF9mb250IChjaGFyICopOwpz
dGF0aWMgdm9pZCBtaWZfcHV0X3BvaW50ICh1bnNpZ25lZCBpbnQgeCwgdW5zaWduZWQgaW50IHks
IGludCBucCk7CgoKCgoKCmV4dGVybiBjaGFyIHRlcm1fb3B0aW9uc1tdOwoKCmV4dGVybiBjaGFy
IHZlcnNpb25bXTsKZXh0ZXJuIGNoYXIgcGF0Y2hsZXZlbFtdOwoKc3RhdGljIHN0cnVjdCBtaWZf
bGluZSB7CiAgICBmbG9hdCBmcG9zX3g7CiAgICBmbG9hdCBmcG9zX3k7CiAgICBzdHJ1Y3QgbWlm
X2xpbmUgKm5leHQ7CiAgICBzdHJ1Y3QgbWlmX2xpbmUgKnByZXY7Cn0gbWlmX2xpbmUgPQp7CiAg
ICAoKDApIC8gMTAwMC4wKSwKICAgICAgICAoKCgxMDAwMCAtIDEpKSAvIDEwMDAuMCksCiAgICAg
ICAgJm1pZl9saW5lLAogICAgICAgICZtaWZfbGluZQp9OwojIDE2OCAidGVybS9taWYudHJtIgpz
dGF0aWMgY2hhciBtaWZfanVzdGlmeVs2NF07CnN0YXRpYyBjaGFyIG1pZl9wZW5bNjRdLCBtaWZf
cGVuX3dpZHRoWzY0XSwgbWlmX3NlcGFyYXRpb25bNjRdOwoKCgpzdGF0aWMgaW50IG1pZl90ZXh0
X2FuZyA9IDA7CgoKc3RhdGljIGludCBtaWZfcGVudHlwZSA9IDA7CgoKc3RhdGljIGludCBtaWZf
cGF0dGVybl90YWJsZVsxNl0gPQp7CiAgICAwLAogICAgMSwKICAgIDIsIDMsIDQsIDgsIDEyLCAx
MywKICAgIDUsCiAgICA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1Cn07CgoKCnN0YXRpYyBzdHJ1
Y3QgbWlmX2dyb3VwX2lkIHsKICAgIGludCBncm91cF9leGlzdGFuY2U7CgoKCgoKICAgIGludCBn
cm91cF9pZDsKCgp9IG1pZl9ncm91cF9pZFsyMF07CgoKc3RhdGljIGludCBtaWZfaW5pdGlhbGl6
ZWQgPSAwOwpzdGF0aWMgaW50IG1pZl9pbl9mcmFtZSA9IDA7CnN0YXRpYyBpbnQgbWlmX2ZyYW1l
bm8gPSAtMTsKc3RhdGljIGludCBtaWZfY29sb3VyID0gMTsKc3RhdGljIGludCBtaWZfcG9seWxp
bmUgPSAxOwoKc3RydWN0IG1wdCB7CiAgICBpbnQgY2hyOwogICAgZmxvYXQgeF9vZmZzZXQsIHlf
b2Zmc2V0OwogICAgY2hhciAqZm9udDsKfTsKCmNoYXIgemdudXBsb3RbXSA9ICJaR251cGxvdCI7
CmNoYXIgemdudXBsb3RwW10gPSAiWkdudXBsb3RQIjsKY2hhciB6Z251cGxvdGRbXSA9ICJaR251
cGxvdEQiOwpjaGFyICptaWZfZm9udCA9ICgodm9pZCAqKTApOwoKc3RydWN0IG1wdCBtcHRbNiAr
IDFdID0KewogICAgeycuJywgMC4wMDAsIDAuMDA1LCB6Z251cGxvdGQsIH0sCgogICAgeydHJywg
MC4wMDIsIDAuMDg0LCB6Z251cGxvdHAsIH0sCiAgICB7JzsnLCAwLjAwMiwgMC4wODQsIHpnbnVw
bG90cCwgfSwKICAgIHsnbicsIDAuMDAyLCAwLjA4NCwgemdudXBsb3RwLCB9LAogICAgeyc1Jywg
MC4wMDIsIDAuMDg0LCB6Z251cGxvdHAsIH0sCiAgICB7J3MnLCAwLjAwMiwgMC4wNjIsIHpnbnVw
bG90cCwgfSwKICAgIHsnSycsIDAuMDA1LCAwLjA3NSwgemdudXBsb3RwLCB9LAp9OwoKCnN0cnVj
dCBtcHQgKm1pZl9wb2ludCA9ICYobXB0WzFdKTsKIyAyNDMgInRlcm0vbWlmLnRybSIKc3RhdGlj
IGludCBpbnNlcnRfbWlmX2xpbmUgKGRvdWJsZSBmeCwgZG91YmxlIGZ5KTsKc3RhdGljIGludCBw
cm9jX2dyb3VwX2lkIChpbnQgZ3JvdXBfaWQpOwoKCgoKc3RhdGljIHZvaWQgTUlGX29wdGlvbnMo
KQp7CiAgICBpZiAoIShjX3Rva2VuID49IG51bV90b2tlbnMgfHwgZXF1YWxzKGNfdG9rZW4sIjsi
KSkpIHsKCiAgICAgICAgaWYgKCEoY190b2tlbiA+PSBudW1fdG9rZW5zIHx8IGVxdWFscyhjX3Rv
a2VuLCI7IikpICYmIGFsbW9zdF9lcXVhbHMoY190b2tlbiwgIm0kb25vY2hyb21lIikpIHsKICAg
ICAgICAgICAgbWlmX2NvbG91ciA9IDA7CiAgICAgICAgICAgIGNfdG9rZW4rKzsKICAgICAgICB9
CiAgICAgICAgaWYgKCEoY190b2tlbiA+PSBudW1fdG9rZW5zIHx8IGVxdWFscyhjX3Rva2VuLCI7
IikpICYmIChhbG1vc3RfZXF1YWxzKGNfdG9rZW4sICJjJG9sb3IiKQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHx8IGFsbW9zdF9lcXVhbHMoY190b2tlbiwgImMkb2xvdXIiKSkpIHsK
ICAgICAgICAgICAgbWlmX2NvbG91ciA9IDE7CiAgICAgICAgICAgIGNfdG9rZW4rKzsKICAgICAg
ICB9CgogICAgICAgIGlmICghKGNfdG9rZW4gPj0gbnVtX3Rva2VucyB8fCBlcXVhbHMoY190b2tl
biwiOyIpKSAmJiBhbG1vc3RfZXF1YWxzKGNfdG9rZW4sICJ2JGVjdG9ycyIpKSB7CiAgICAgICAg
ICAgIG1pZl9wb2x5bGluZSA9IDA7CiAgICAgICAgICAgIGNfdG9rZW4rKzsKICAgICAgICB9CiAg
ICAgICAgaWYgKCEoY190b2tlbiA+PSBudW1fdG9rZW5zIHx8IGVxdWFscyhjX3Rva2VuLCI7Iikp
ICYmIGFsbW9zdF9lcXVhbHMoY190b2tlbiwgInAkb2x5bGluZSIpKSB7CiAgICAgICAgICAgIG1p
Zl9wb2x5bGluZSA9IDE7CiAgICAgICAgICAgIGNfdG9rZW4rKzsKICAgICAgICB9CgogICAgICAg
IGlmICghKGNfdG9rZW4gPj0gbnVtX3Rva2VucyB8fCBlcXVhbHMoY190b2tlbiwiOyIpKSAmJgog
ICAgICAgICAgICAoYWxtb3N0X2VxdWFscyhjX3Rva2VuLCAiaCRlbHAiKSB8fAogICAgICAgICAg
ICAgYWxtb3N0X2VxdWFscyhjX3Rva2VuLCAiPyQiKSkpIHsKICAgICAgICAgICAgZnByaW50Zihz
dGRlcnIsICJVc2FnZTogc2V0IHRlcm1pbmFsIG1pZiBbb3B0aW9uc11cblx0b3B0aW9uczpcblx0
XHRjb2xvdXIgLyAgICAgICAgRHJhdyBwcmltaXRpdmVzIHdpdGggbGluZSB0eXBlcyA+PSAwIGlu
IGNvbG91ciAoc2VwLiAyLTcpXG5cdFx0bW9ub2Nocm9tZSAgICAgIERyYXcgcHJpbWl0aXZlcyBp
biBibGFjayAoc2VwLiAwKVxuXG5cdFx0cG9seWxpbmUgLyAgICAgIERyYXcgbGluZXMgYXMgY29u
dGlub3VzIGN1cnZlc1xuXHRcdHZlY3RvcnMgICAgICAgICBEcmF3IGxpbmVzIGFzIGNvbGxlY3Rp
b25zIG9mIHZlY3RvcnNcblxuXHRcdGhlbHAgLyA/ICAgICAgICBQcmludCBzaG9ydCB1c2FnZSBk
ZXNjcmlwdGlvbiBvbiBzdGRlcnJcbiIpOwojIDI4NCAidGVybS9taWYudHJtIgogICAgICAgICAg
ICBjX3Rva2VuKys7CiAgICAgICAgfQogICAgfQogICAgc3ByaW50Zih0ZXJtX29wdGlvbnMsICIl
cyAlcyIsIChtaWZfY29sb3VyID09IDEpID8gImNvbG91ciIgOiAibW9ub2Nocm9tZSIsCiAgICAg
ICAgICAgIChtaWZfcG9seWxpbmUgPT0gMSkgPyAicG9seWxpbmUiIDogInZlY3RvcnMiKTsKfQoK
CnN0YXRpYyB2b2lkIGZyZWVfbWlmX2xpbmUoKQp7CiAgICBzdHJ1Y3QgbWlmX2xpbmUgKnRsaW5l
OwoKICAgIHdoaWxlIChtaWZfbGluZS5wcmV2ICE9ICZtaWZfbGluZSkgewoKICAgICAgICB0bGlu
ZSA9IG1pZl9saW5lLnByZXY7CiAgICAgICAgbWlmX2xpbmUucHJldiA9IG1pZl9saW5lLnByZXYt
PnByZXY7CiAgICAgICAgbWlmX2xpbmUucHJldi0+bmV4dCA9ICZtaWZfbGluZTsKCgogICAgICAg
IGZyZWUodGxpbmUpOwogICAgfQoKCiAgICBtaWZfbGluZS5wcmV2ID0gJm1pZl9saW5lOwogICAg
bWlmX2xpbmUubmV4dCA9ICZtaWZfbGluZTsKfQoKCnN0YXRpYyB2b2lkIHB1dF9taWZfbGluZSgp
CnsKICAgIGludCBucCwgaTsKICAgIHN0cnVjdCBtaWZfbGluZSAqdGxpbmU7CgoKICAgIGlmICht
aWZfaW5pdGlhbGl6ZWQgIT0gMCAmJiBtaWZfaW5fZnJhbWUgIT0gMCkgewoKCiAgICAgICAgZm9y
ICh0bGluZSA9IG1pZl9saW5lLm5leHQsIG5wID0gMTsgdGxpbmUgIT0gJm1pZl9saW5lOyB0bGlu
ZSA9IHRsaW5lLT5uZXh0LCBucCsrKTsKCgogICAgICAgIGlmIChucCA+PSAyKSB7CgoKICAgICAg
ICAgICAgZnByaW50ZihncG91dGZpbGUsICJcdDxQb2x5TGluZSA8R3JvdXBJRCAlZD4gJXMgJXMg
JXNcbiIsCiAgICAgICAgICAgICAgICAgICAgKCAxICsgKG1pZl9wZW50eXBlKSApLCBtaWZfcGVu
LCBtaWZfcGVuX3dpZHRoLCBtaWZfc2VwYXJhdGlvbik7CgoKICAgICAgICAgICAgZnByaW50Zihn
cG91dGZpbGUsICJcdFx0PE51bVBvaW50cyAlZD4gIiwgbnApOwogICAgICAgICAgICBmb3IgKGkg
PSAwLCB0bGluZSA9ICZtaWZfbGluZTsgaSA8IG5wOyBpKyssIHRsaW5lID0gdGxpbmUtPm5leHQp
IHsKICAgICAgICAgICAgICAgIGlmIChpICUgNCA9PSAwKQogICAgICAgICAgICAgICAgICAgIGZw
dXRzKCJcblx0XHQiLCBncG91dGZpbGUpOwogICAgICAgICAgICAgICAgZnByaW50ZihncG91dGZp
bGUsICI8UG9pbnQgICUuM2YgJS4zZj4gIiwKICAgICAgICAgICAgICAgICAgICAgICAgdGxpbmUt
PmZwb3NfeCwgdGxpbmUtPmZwb3NfeSk7CiAgICAgICAgICAgIH0KCgogICAgICAgICAgICBmcHV0
cygiXG5cdD5cbiIsIGdwb3V0ZmlsZSk7CgoKICAgICAgICAgICAgcHJvY19ncm91cF9pZCgoIDEg
KyAobWlmX3BlbnR5cGUpICkpOwoKCiAgICAgICAgICAgIG1pZl9wZW5bMF0gPSAnXDAnOwogICAg
ICAgICAgICBtaWZfcGVuX3dpZHRoWzBdID0gJ1wwJzsKICAgICAgICAgICAgbWlmX3NlcGFyYXRp
b25bMF0gPSAnXDAnOwoKCiAgICAgICAgICAgIG1pZl9saW5lLmZwb3NfeCA9IG1pZl9saW5lLnBy
ZXYtPmZwb3NfeDsKICAgICAgICAgICAgbWlmX2xpbmUuZnBvc195ID0gbWlmX2xpbmUucHJldi0+
ZnBvc195OwoKCiAgICAgICAgICAgIGZyZWVfbWlmX2xpbmUoKTsKICAgICAgICB9CiAgICB9Cn0K
CgoKc3RhdGljIHZvaWQgbWlmX3B1dF9wb2ludCh4LCB5LCBucCkKdW5zaWduZWQgaW50IHgsIHk7
CmludCBucDsKewoKICAgIGlmIChtaWZfaW5pdGlhbGl6ZWQgIT0gMCAmJiBtaWZfaW5fZnJhbWUg
IT0gMCkgewoKCiAgICAgICAgaWYgKG1pZl9wb2x5bGluZSA9PSAxKQogICAgICAgICAgICBwdXRf
bWlmX2xpbmUoKTsKCgogICAgICAgIE1JRl9tb3ZlKHgsIHkpOwoKCiAgICAgICAgTUlGX2p1c3Rp
ZnlfdGV4dChDRU5UUkUpOwoKCiAgICAgICAgZnByaW50ZihncG91dGZpbGUsICJcdDxUZXh0TGlu
ZSA8R3JvdXBJRCAlZD5cbiIsCiAgICAgICAgICAgICAgICAoIDEgKyAobWlmX3BlbnR5cGUpICkp
OwoKICAgICAgICBNSUZfc2V0X2ZvbnQobWlmX3BvaW50W25wXS5mb250KTsKCiAgICAgICAgZnBy
aW50ZihncG91dGZpbGUsICJcdFx0PFRMT3JpZ2luICAlLjNmICUuM2Y+ICVzIDxTdHJpbmcgYCVj
Jz5cbiIsCiAgICAgICAgICAgICAgICBtaWZfbGluZS5mcG9zX3ggKyBtaWZfcG9pbnRbbnBdLnhf
b2Zmc2V0LAogICAgICAgICAgICAgICAgbWlmX2xpbmUuZnBvc195ICsgbWlmX3BvaW50W25wXS55
X29mZnNldCwKICAgICAgICAgICAgICAgIG1pZl9qdXN0aWZ5LAogICAgICAgICAgICAgICAgbWlm
X3BvaW50W25wXS5jaHIpOwogICAgICAgIGZwdXRzKCJcdD5cbiIsIGdwb3V0ZmlsZSk7CgoKICAg
ICAgICBwcm9jX2dyb3VwX2lkKCggMSArIChtaWZfcGVudHlwZSkgKSk7CgoKICAgICAgICBtaWZf
anVzdGlmeVswXSA9ICdcMCc7CgogICAgfQp9CgoKCgoKc3RhdGljIHZvaWQgTUlGX3BvaW50KHgs
IHksIG51bWJlcikKdW5zaWduZWQgaW50IHgsIHk7CmludCBudW1iZXI7CnsKICAgIGlmIChudW1i
ZXIgPCAwKSB7CiAgICAgICAgbnVtYmVyID0gLTE7CiAgICB9IGVsc2UgewogICAgICAgIG51bWJl
ciAlPSA2OwogICAgfQogICAgbWlmX3B1dF9wb2ludCh4LCB5LCBudW1iZXIpOwp9CgoKCnN0YXRp
YyB2b2lkIE1JRl9pbml0KCkKewogICAgaW50IGk7CgoKICAgIGlmIChtaWZfaW5pdGlhbGl6ZWQg
PT0gMCAmJiBtaWZfaW5fZnJhbWUgPT0gMCkgewoKICAgICAgICBtaWZfaW5pdGlhbGl6ZWQgPSAx
OwogICAgICAgIG1pZl9pbl9mcmFtZSA9IDA7CgoKICAgICAgICBmcmVlX21pZl9saW5lKCk7CiAg
ICAgICAgbWlmX2xpbmUuZnBvc194ID0gKCgwKSAvIDEwMDAuMCk7CiAgICAgICAgbWlmX2xpbmUu
ZnBvc195ID0gKCgoMTAwMDAgLSAxKSkgLyAxMDAwLjApOwoKCiAgICAgICAgbWlmX3BlblswXSA9
ICdcMCc7CiAgICAgICAgbWlmX3Blbl93aWR0aFswXSA9ICdcMCc7CiAgICAgICAgbWlmX3NlcGFy
YXRpb25bMF0gPSAnXDAnOwoKICAgICAgICBNSUZfanVzdGlmeV90ZXh0KExFRlQpOwoKCiAgICAg
ICAgZm9yIChpID0gMDsgaSA8IDIwOyBpKyspIHsKICAgICAgICAgICAgbWlmX2dyb3VwX2lkW2ld
Lmdyb3VwX2lkID0gMDsKICAgICAgICAgICAgbWlmX2dyb3VwX2lkW2ldLmdyb3VwX2V4aXN0YW5j
ZSA9IDA7CiAgICAgICAgfQoKCgoKICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgIjxNSUZGaWxl
IDMuMDA+ICMgR2VuZXJhdGVkIGJ5IGdudXBsb3QgdmVyc2lvbiAlcyBwYXRjaGxldmVsICVzOyBp
ZGVudGlmaWVzIHRoaXMgYXMgYSBNSUYgZmlsZVxuI1xuIyBzaG93IGJvcmRlcnNcbjxEb2N1bWVu
dFxuPERCb3JkZXJzT24gWWVzPlxuPlxuIyBTZXQgYSBkZWZhdWx0IHBlbiBwYXR0ZXJuLCBwZW4g
d2lkdGgsIHVuaXQgYW5kIGZvbnQgZm9yIHN1YnNlcXVlbnQgb2JqZWN0c1xuPFBlbiAwPlxuPEZp
bGwgMTU+XG48UGVuV2lkdGggMC41IHB0PlxuPFNlcGFyYXRpb24gMD5cbjxVbml0cyBVY20+XG48
Rm9udENhdGFsb2dcblx0PEZvbnQgPEZUYWcgYCVzJz48RkZhbWlseSBgVGltZXMnPjxGU2l6ZSAl
ZD48RlBsYWluIFllcz4+XG5cdDxGb250IDxGVGFnIGAlcyc+PEZGYW1pbHkgYFphcGZEaW5nYmF0
cyc+PEZTaXplIDcuMCBwdD48RlBsYWluIFllcz4+XG5cdDxGb250IDxGVGFnIGAlcyc+PEZGYW1p
bHkgYFN5bWJvbCc+PEZTaXplIDUuMCBwdD48RlBsYWluIFllcz4+XG4+XG4jXG4iLAojIDQ2NyAi
dGVybS9taWYudHJtIgogICAgICAgICAgICAgICAgdmVyc2lvbiwgcGF0Y2hsZXZlbCwKICAgICAg
ICAgICAgICAgIHpnbnVwbG90LCA5LAogICAgICAgICAgICAgICAgemdudXBsb3RwLAogICAgICAg
ICAgICAgICAgemdudXBsb3RkKTsKICAgIH0KfQoKCnN0YXRpYyB2b2lkIE1JRl9yZXNldCgpCnsK
CiAgICBpZiAobWlmX2luaXRpYWxpemVkICE9IDAgJiYgbWlmX2luX2ZyYW1lID09IDApIHsKCiAg
ICAgICAgZnB1dHMoIiNcbiMgRW5kIG9mIE1JRkZpbGVcbiIsIGdwb3V0ZmlsZSk7CgoKCgogICAg
ICAgIG1pZl9pbml0aWFsaXplZCA9IDA7CgoKICAgICAgICBtaWZfZnJhbWVubyA9IC0xOwoKICAg
IH0KfQoKCnN0YXRpYyB2b2lkIE1JRl9ncmFwaGljcygpCnsKICAgIGludCBpOwoKCiAgICBpZiAo
bWlmX2luaXRpYWxpemVkICE9IDAgJiYgbWlmX2luX2ZyYW1lID09IDApIHsKCiAgICAgICAgbWlm
X2luX2ZyYW1lID0gMTsKCgogICAgICAgIG1pZl9mcmFtZW5vKys7CgoKICAgICAgICBmcmVlX21p
Zl9saW5lKCk7CiAgICAgICAgbWlmX2xpbmUuZnBvc194ID0gKCgwKSAvIDEwMDAuMCk7CiAgICAg
ICAgbWlmX2xpbmUuZnBvc195ID0gKCgoMTAwMDAgLSAxKSkgLyAxMDAwLjApOwoKCiAgICAgICAg
bWlmX3BlblswXSA9ICdcMCc7CiAgICAgICAgbWlmX3Blbl93aWR0aFswXSA9ICdcMCc7CiAgICAg
ICAgbWlmX3NlcGFyYXRpb25bMF0gPSAnXDAnOwoKICAgICAgICBNSUZfanVzdGlmeV90ZXh0KExF
RlQpOwoKCiAgICAgICAgZm9yIChpID0gMDsgaSA8IDIwOyBpKyspIHsKICAgICAgICAgICAgbWlm
X2dyb3VwX2lkW2ldLmdyb3VwX2lkID0gMDsKICAgICAgICAgICAgbWlmX2dyb3VwX2lkW2ldLmdy
b3VwX2V4aXN0YW5jZSA9IDA7CiAgICAgICAgfQoKCiAgICAgICAgZnByaW50ZihncG91dGZpbGUs
ICIjXG4jIEZyYW1lIG51bWJlciAlZCB3aXRoIHBsb3Qgb2YgZ3JhcGhpY3NcbjxGcmFtZVxuXHQ8
UGVuIDE1PlxuXHQ8RmlsbCAxNT5cblx0PFBlbldpZHRoICAwLjUgcHQ+XG5cdDxTZXBhcmF0aW9u
IDA+XG5cdDxCUmVjdCAyLjAwMCAlLjNmICUuM2YgJS4zZj5cblx0PE5TT2Zmc2V0ICAwLjAwMD5c
blx0PEJMT2Zmc2V0ICAwLjAwMD5cbiIsCiMgNTM2ICJ0ZXJtL21pZi50cm0iCiAgICAgICAgICAg
IG1pZl9mcmFtZW5vLAogICAgICAgICAgICAoKGZsb2F0KSBtaWZfZnJhbWVubykgKiAoKDEwMDAw
ICsgMTAwKSAvIDEwMDAuMCksCiAgICAgICAgICAgICgoMTUwMDApIC8gMTAwMC4wKSwgKCgxMDAw
MCkgLyAxMDAwLjApKTsKICAgIH0KfQoKCnN0YXRpYyB2b2lkIE1JRl90ZXh0KCkKewogICAgaW50
IGk7CgoKICAgIGlmIChtaWZfaW5pdGlhbGl6ZWQgIT0gMCAmJiBtaWZfaW5fZnJhbWUgIT0gMCkg
ewoKCiAgICAgICAgaWYgKG1pZl9wb2x5bGluZSA9PSAxKQogICAgICAgICAgICBwdXRfbWlmX2xp
bmUoKTsKCgogICAgICAgIGZwdXRzKCJcdCNcblx0IyBHcm91cCB0aGUgdGhlIG9iamVjdHMgaW4g
Z3JvdXBzIHRvIG1ha2UgdGhlIGNoYXJ0IGVhc2llciB0byBtYW5pcHVsYXRlXG5cdCMgYWZ0ZXIg
aXQncyBpbXBvcnRlZCBpbnRvIEZyYW1lTWFrZXIuXG4iLCBncG91dGZpbGUpOwoKCgoKICAgICAg
ICBmb3IgKGkgPSAwOyBpIDwgMjA7IGkrKykgewogICAgICAgICAgICBpZiAobWlmX2dyb3VwX2lk
W2ldLmdyb3VwX2lkICE9IDAgJiYKICAgICAgICAgICAgICAgIG1pZl9ncm91cF9pZFtpXS5ncm91
cF9leGlzdGFuY2UgPT0gMSkgewogICAgICAgICAgICAgICAgZnByaW50ZihncG91dGZpbGUsICJc
dDxHcm91cFxuXHRcdDxJRCAlZD5cblx0PlxuIiwgbWlmX2dyb3VwX2lkW2ldLmdyb3VwX2lkKTsK
CgoKICAgICAgICAgICAgfQogICAgICAgIH0KCgogICAgICAgIGZwcmludGYoZ3BvdXRmaWxlLCAi
PlxuIyBFbmQgb2YgRnJhbWUgbnVtYmVyICVkXG4jXG4iLAoKCgogICAgICAgICAgICAgICAgbWlm
X2ZyYW1lbm8pOwoKCiAgICAgICAgbWlmX2luX2ZyYW1lID0gMDsKICAgIH0KfQoKCgoKc3RhdGlj
IHZvaWQgTUlGX2xpbmV0eXBlKGxpbmV0eXBlKQoKaW50IGxpbmV0eXBlOwp7CgogICAgaWYgKG1p
Zl9pbml0aWFsaXplZCAhPSAwICYmIG1pZl9pbl9mcmFtZSAhPSAwKSB7CgoKICAgICAgICBpZiAo
bWlmX3BvbHlsaW5lID09IDEpCiAgICAgICAgICAgIHB1dF9taWZfbGluZSgpOwoKCiAgICAgICAg
aWYgKGxpbmV0eXBlIDwgMCkgewogICAgICAgICAgICBpZiAobGluZXR5cGUgPT0gLTEpIHsKICAg
ICAgICAgICAgICAgIG1pZl9wZW50eXBlID0gOCArIDE2OwogICAgICAgICAgICAgICAgaWYgKG1p
Zl9jb2xvdXIgPT0gMSkKICAgICAgICAgICAgICAgICAgICBzcHJpbnRmKG1pZl9zZXBhcmF0aW9u
LCAiIDxTZXBhcmF0aW9uIDA+ICIpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
ICAgbWlmX3BlbnR5cGUgPSAwICsgMTY7CiAgICAgICAgICAgICAgICBpZiAobWlmX2NvbG91ciA9
PSAxKQogICAgICAgICAgICAgICAgICAgIHNwcmludGYobWlmX3NlcGFyYXRpb24sICIgPFNlcGFy
YXRpb24gMD4gIik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgc3ByaW50ZihtaWZfcGVuX3dp
ZHRoLCAiIDxQZW5XaWR0aCAxLjAgcHQ+ICIpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
IG1pZl9wZW50eXBlID0gKGxpbmV0eXBlKSAlIDE2OwogICAgICAgICAgICBzcHJpbnRmKG1pZl9w
ZW5fd2lkdGgsICIgPFBlbldpZHRoIDAuMSBwdD4gIik7CiAgICAgICAgICAgIGlmIChtaWZfY29s
b3VyID09IDEpCiAgICAgICAgICAgICAgICBzcHJpbnRmKG1pZl9zZXBhcmF0aW9uLCAiIDxTZXBh
cmF0aW9uICVkPiAiLCAyICsgKG1pZl9wZW50eXBlICUgNikpOwogICAgICAgIH0KCgogICAgICAg
IHNwcmludGYobWlmX3BlbiwgIiA8UGVuICVkPiAiLCBtaWZfcGF0dGVybl90YWJsZVttaWZfcGVu
dHlwZSAlIDE2XSk7CgogICAgfQp9CgoKc3RhdGljIGludCBNSUZfdGV4dF9hbmdsZShhbmcpCmlu
dCBhbmc7CnsKICAgIGlmIChhbmcgIT0gMCkKICAgICAgICBtaWZfdGV4dF9hbmcgPSAxOwogICAg
ZWxzZQogICAgICAgIG1pZl90ZXh0X2FuZyA9IDA7CgogICAgcmV0dXJuICgxKTsKfQoKCnN0YXRp
YyBpbnQgTUlGX2p1c3RpZnlfdGV4dChtb2RlKQoKCmVudW0gSlVTVElGWSBtb2RlOwp7CiAgICBp
bnQgcnZhbCA9IDE7CgoKICAgIGlmIChtaWZfaW5pdGlhbGl6ZWQgIT0gMCAmJiBtaWZfaW5fZnJh
bWUgIT0gMCkgewogICAgICAgIHN3aXRjaCAobW9kZSkgewogICAgICAgIGNhc2UgTEVGVDoKICAg
ICAgICAgICAgc3ByaW50ZihtaWZfanVzdGlmeSwgIiA8VExBbGlnbm1lbnQgTGVmdD4gIik7CiAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgQ0VOVFJFOgogICAgICAgICAgICBzcHJpbnRm
KG1pZl9qdXN0aWZ5LCAiIDxUTEFsaWdubWVudCBDZW50ZXI+ICIpOwogICAgICAgICAgICBicmVh
azsKICAgICAgICBjYXNlIFJJR0hUOgogICAgICAgICAgICBzcHJpbnRmKG1pZl9qdXN0aWZ5LCAi
IDxUTEFsaWdubWVudCBSaWdodD4gIik7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGRlZmF1
bHQ6CiAgICAgICAgICAgIHJ2YWwgPSAwOwogICAgICAgICAgICBicmVhazsKICAgICAgICB9Cgog
ICAgfQoKICAgIGVsc2UgewogICAgICAgIHJ2YWwgPSAwOwogICAgfQoKICAgIHJldHVybiAocnZh
bCk7Cn0KCgoKCnN0YXRpYyB2b2lkIE1JRl92ZWN0b3IoeCwgeSkKdW5zaWduZWQgaW50IHgsIHk7
CnsKCiAgICBpZiAobWlmX2luaXRpYWxpemVkICE9IDAgJiYgbWlmX2luX2ZyYW1lICE9IDApIHsK
CgogICAgICAgIGluc2VydF9taWZfbGluZSgoKHgpIC8gMTAwMC4wKSwgKCgoMTAwMDAgLSAxKSAt
IChpbnQpIHkpIC8gMTAwMC4wKSk7CgoKICAgICAgICBpZiAobWlmX3BvbHlsaW5lID09IDApCiAg
ICAgICAgICAgIHB1dF9taWZfbGluZSgpOwoKICAgIH0KfQoKCnN0YXRpYyB2b2lkIE1JRl9tb3Zl
KHgsIHkpCnVuc2lnbmVkIGludCB4LCB5Owp7CgogICAgaWYgKG1pZl9pbml0aWFsaXplZCAhPSAw
ICYmIG1pZl9pbl9mcmFtZSAhPSAwKSB7CgoKICAgICAgICBpZiAobWlmX3BvbHlsaW5lID09IDEp
CiAgICAgICAgICAgIHB1dF9taWZfbGluZSgpOwoKICAgICAgICBtaWZfbGluZS5mcG9zX3ggPSAo
KHgpIC8gMTAwMC4wKTsKICAgICAgICBtaWZfbGluZS5mcG9zX3kgPSAoKCgxMDAwMCAtIDEpIC0g
KGludCkgeSkgLyAxMDAwLjApOwogICAgfQp9CgoKCnN0YXRpYyB2b2lkIE1JRl9zZXRfZm9udChm
b250KQpjaGFyICpmb250Owp7CiAgICBpZiAoZm9udCAhPSBtaWZfZm9udCkgewogICAgICAgIGZw
cmludGYoZ3BvdXRmaWxlLCAiXHRcdDxGb250XG5cdFx0XHQ8RlRhZyBgJXMnPlxuXHRcdD5cbiIs
IGZvbnQpOwogICAgICAgIG1pZl9mb250ID0gZm9udDsKICAgIH0KfQoKCgoKc3RhdGljIHZvaWQg
TUlGX3B1dF90ZXh0KHgsIHksIHN0cikKdW5zaWduZWQgaW50IHgsIHk7CmNoYXIgc3RyW107CnsK
CiAgICBpZiAobWlmX2luaXRpYWxpemVkICE9IDAgJiYgbWlmX2luX2ZyYW1lICE9IDApIHsKCgog
ICAgICAgIGlmIChtaWZfcG9seWxpbmUgPT0gMSkKICAgICAgICAgICAgcHV0X21pZl9saW5lKCk7
CgoKICAgICAgICBNSUZfbW92ZSh4LCB5IC0gKDEwMDAwLzMxKSAvIDUpOwoKICAgICAgICBpZiAo
c3RybGVuKHN0cikgPiAwKSB7CgoKICAgICAgICAgICAgZnByaW50ZihncG91dGZpbGUsICJcdDxU
ZXh0TGluZSA8R3JvdXBJRCAlZD4gJXMgJXMgJXNcbiIsCiAgICAgICAgICAgICAgICAgICAgKCAx
ICsgKG1pZl9wZW50eXBlKSApLCBtaWZfcGVuLAogICAgICAgICAgICAgICAgICAgIG1pZl9wZW5f
d2lkdGgsIG1pZl9zZXBhcmF0aW9uKTsKCiAgICAgICAgICAgIE1JRl9zZXRfZm9udCh6Z251cGxv
dCk7CgogICAgICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgIlx0XHQ8VExPcmlnaW4gICUuM2Yg
JS4zZj4gJXMgJXMgPFN0cmluZyBgJXMnPlxuXHQ+XG4iLAoKCiAgICAgICAgICAgICAgICAgICAg
bWlmX2xpbmUuZnBvc194LCBtaWZfbGluZS5mcG9zX3ksIG1pZl9qdXN0aWZ5LAogICAgICAgICAg
ICAgICAgICAgIChtaWZfdGV4dF9hbmcgPT0gMSkgPyAiPEFuZ2xlIDkwPiIgOiAiIiwKICAgICAg
ICAgICAgICAgICAgICBzdHIpOwoKCiAgICAgICAgICAgIHByb2NfZ3JvdXBfaWQoKCAxICsgKG1p
Zl9wZW50eXBlKSApKTsKCgogICAgICAgICAgICBtaWZfcGVuWzBdID0gJ1wwJzsKICAgICAgICAg
ICAgbWlmX3Blbl93aWR0aFswXSA9ICdcMCc7CiAgICAgICAgICAgIG1pZl9zZXBhcmF0aW9uWzBd
ID0gJ1wwJzsKCiAgICAgICAgICAgIG1pZl9qdXN0aWZ5WzBdID0gJ1wwJzsKICAgICAgICB9CiAg
ICB9Cn0KCgoKc3RhdGljIGludCBpbnNlcnRfbWlmX2xpbmUoZngsIGZ5KQpkb3VibGUgZngsIGZ5
Owp7CiAgICBpbnQgcnZhbCA9IDE7CgogICAgaWYgKChtaWZfbGluZS5wcmV2LT5uZXh0ID0gKHN0
cnVjdCBtaWZfbGluZSAqKSBncF9hbGxvYyhzaXplb2Yoc3RydWN0IG1pZl9saW5lKSwKICAgICAg
ICAiTUlGIGRyaXZlciIpKSAhPSAoc3RydWN0IG1pZl9saW5lICopICgodm9pZCAqKTApKSB7Cgog
ICAgICAgIG1pZl9saW5lLnByZXYtPm5leHQtPm5leHQgPSAmbWlmX2xpbmU7CiAgICAgICAgbWlm
X2xpbmUucHJldi0+bmV4dC0+cHJldiA9IG1pZl9saW5lLnByZXY7CiAgICAgICAgbWlmX2xpbmUu
cHJldiA9IG1pZl9saW5lLnByZXYtPm5leHQ7CgoKICAgICAgICBtaWZfbGluZS5wcmV2LT5mcG9z
X3ggPSBmeDsKICAgICAgICBtaWZfbGluZS5wcmV2LT5mcG9zX3kgPSBmeTsKCiAgICAgICAgcnZh
bCA9IDE7CiAgICB9IGVsc2UgewoKICAgICAgICBtaWZfbGluZS5wcmV2LT5uZXh0ID0gJm1pZl9s
aW5lOwoKICAgICAgICBydmFsID0gMDsKICAgIH0KCiAgICByZXR1cm4gKHJ2YWwpOwp9CgoKCgoK
CgpzdGF0aWMgaW50IHByb2NfZ3JvdXBfaWQoZ3JvdXBfaWQpCmludCBncm91cF9pZDsKewogICAg
aW50IGksIHJ2YWwgPSAwOwoKCiAgICBpZiAobWlmX2luaXRpYWxpemVkICE9IDAgJiYgbWlmX2lu
X2ZyYW1lICE9IDApIHsKCgogICAgICAgIGZvciAoaSA9IDA7IGkgPCAyMCAmJgogICAgICAgICAg
ICAgbWlmX2dyb3VwX2lkW2ldLmdyb3VwX2lkICE9IDAgJiYKICAgICAgICAgICAgIG1pZl9ncm91
cF9pZFtpXS5ncm91cF9pZCAhPSBncm91cF9pZDsKICAgICAgICAgICAgIGkrKykgewoKICAgICAg
ICB9CgogICAgICAgIGlmIChpIDwgMjApIHsKICAgICAgICAgICAgaWYgKG1pZl9ncm91cF9pZFtp
XS5ncm91cF9pZCA9PSAwKSB7CgogICAgICAgICAgICAgICAgbWlmX2dyb3VwX2lkW2ldLmdyb3Vw
X2lkID0gZ3JvdXBfaWQ7CiAgICAgICAgICAgICAgICBtaWZfZ3JvdXBfaWRbaV0uZ3JvdXBfZXhp
c3RhbmNlID0gMDsKICAgICAgICAgICAgfSBlbHNlIHsKCiAgICAgICAgICAgICAgICBpZiAobWlm
X2dyb3VwX2lkW2ldLmdyb3VwX2lkID09IGdyb3VwX2lkKSB7CiAgICAgICAgICAgICAgICAgICAg
bWlmX2dyb3VwX2lkW2ldLmdyb3VwX2V4aXN0YW5jZSA9IDE7CgogICAgICAgICAgICAgICAgICAg
IHJ2YWwgPSAxOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgcnZhbCA9IC0yOwogICAgICAgIH0KCiAgICB9CgogICAgZWxzZSB7CiAg
ICAgICAgcnZhbCA9IC0xOwogICAgfQoKCiAgICByZXR1cm4gKHJ2YWwpOwp9CiMgMzE5ICJ0ZXJt
LmgiIDIKCgojIDEgInRlcm0vcGJtLnRybSIgMQojIDYzICJ0ZXJtL3BibS50cm0iCiMgMSAidGVy
bS9kcml2ZXIuaCIgMQojIDY0ICJ0ZXJtL3BibS50cm0iIDIKCgoKCgoKc3RhdGljIHZvaWQgUEJN
b3B0aW9ucyAodm9pZCk7CnN0YXRpYyB2b2lkIFBCTWluaXQgKHZvaWQpOwpzdGF0aWMgdm9pZCBQ
Qk1yZXNldCAodm9pZCk7CnN0YXRpYyB2b2lkIFBCTXNldGZvbnQgKHZvaWQpOwpzdGF0aWMgdm9p
ZCBQQk1ncmFwaGljcyAodm9pZCk7CnN0YXRpYyB2b2lkIFBCTW1vbm90ZXh0ICh2b2lkKTsKc3Rh
dGljIHZvaWQgUEJNZ3JheXRleHQgKHZvaWQpOwpzdGF0aWMgdm9pZCBQQk1jb2xvcnRleHQgKHZv
aWQpOwpzdGF0aWMgdm9pZCBQQk10ZXh0ICh2b2lkKTsKc3RhdGljIHZvaWQgUEJNbGluZXR5cGUg
KGludCBsaW5ldHlwZSk7CnN0YXRpYyB2b2lkIFBCTXBvaW50ICh1bnNpZ25lZCBpbnQgeCwgdW5z
aWduZWQgaW50IHksIGludCBwb2ludCk7CiMgOTMgInRlcm0vcGJtLnRybSIKc3RhdGljIGludCBw
Ym1fZm9udCA9IDE7CnN0YXRpYyBpbnQgcGJtX21vZGUgPSAwOwoKCnN0YXRpYyBpbnQgcGdtX2dy
YXlbXSA9IHsgNywgMSwgNiwgNSwgNCwgMywgMiwgMSwgNyB9OwoKc3RhdGljIGludCBwcG1fY29s
b3JbXSA9eyAxNSwgOCwgMywgNSwgNiwgMiwgNCwgMSwgMTEsIDEzLCAxNCB9OwoKc3RhdGljIHZv
aWQgUEJNb3B0aW9ucygpCnsKICAgIHBibV9mb250ID0gMTsKICAgIHBibV9tb2RlID0gMDsKCiAg
ICB0ZXJtX29wdGlvbnNbMF0gPSAoJ1wwJyk7CgogICAgd2hpbGUgKCEoY190b2tlbiA+PSBudW1f
dG9rZW5zIHx8IGVxdWFscyhjX3Rva2VuLCI7IikpKSB7CiAgICAgICAgaWYgKGFsbW9zdF9lcXVh
bHMoY190b2tlbiwgInMkbWFsbCIpKQogICAgICAgICAgICBwYm1fZm9udCA9IDE7CiAgICAgICAg
ZWxzZSBpZiAoYWxtb3N0X2VxdWFscyhjX3Rva2VuLCAibWUkZGl1bSIpKQogICAgICAgICAgICBw
Ym1fZm9udCA9IDI7CiAgICAgICAgZWxzZSBpZiAoYWxtb3N0X2VxdWFscyhjX3Rva2VuLCAibCRh
cmdlIikpCiAgICAgICAgICAgIHBibV9mb250ID0gMzsKICAgICAgICBlbHNlIGlmIChhbG1vc3Rf
ZXF1YWxzKGNfdG9rZW4sICJtbyRub2Nocm9tZSIpKQogICAgICAgICAgICBwYm1fbW9kZSA9IDA7
CiAgICAgICAgZWxzZSBpZiAoYWxtb3N0X2VxdWFscyhjX3Rva2VuLCAiZyRyYXkiKSkKICAgICAg
ICAgICAgcGJtX21vZGUgPSAxOwogICAgICAgIGVsc2UgaWYgKGFsbW9zdF9lcXVhbHMoY190b2tl
biwgImMkb2xvciIpCiAgICAgICAgICAgICAgICAgfHwgYWxtb3N0X2VxdWFscyhjX3Rva2VuLCAi
YyRvbG91ciIpKQogICAgICAgICAgICBwYm1fbW9kZSA9IDI7CiAgICAgICAgZWxzZSB7CgogICAg
ICAgICAgICBwYm1fZm9udCA9IDE7CiAgICAgICAgICAgIHBibV9tb2RlID0gMDsKICAgICAgICAg
ICAgaW50X2Vycm9yKCJleHBlY3Rpbmc6IHtzbWFsbCwgbWVkaXVtLCBsYXJnZX0gYW5kIHttb25v
Y2hyb21lLCBncmF5LCBjb2xvcn0iLCBjX3Rva2VuKTsKICAgICAgICB9CiAgICAgICAgY190b2tl
bisrOwogICAgfQoKCgogICAgc3dpdGNoIChwYm1fZm9udCkgewogICAgY2FzZSAxOgogICAgICAg
IHN0cmNhdCh0ZXJtX29wdGlvbnMsICJzbWFsbCIpOwogICAgICAgIGJyZWFrOwogICAgY2FzZSAy
OgogICAgICAgIHN0cmNhdCh0ZXJtX29wdGlvbnMsICJtZWRpdW0iKTsKICAgICAgICBicmVhazsK
ICAgIGNhc2UgMzoKICAgICAgICBzdHJjYXQodGVybV9vcHRpb25zLCAibGFyZ2UiKTsKICAgICAg
ICBicmVhazsKICAgIH0KCiAgICBzd2l0Y2ggKHBibV9tb2RlKSB7CiAgICBjYXNlIDA6CiAgICAg
ICAgc3RyY2F0KHRlcm1fb3B0aW9ucywgIiBtb25vY2hyb21lIik7CiAgICAgICAgYnJlYWs7CiAg
ICBjYXNlIDE6CiAgICAgICAgc3RyY2F0KHRlcm1fb3B0aW9ucywgIiBncmF5Iik7CiAgICAgICAg
YnJlYWs7CiAgICBjYXNlIDI6CiAgICAgICAgc3RyY2F0KHRlcm1fb3B0aW9ucywgIiBjb2xvciIp
OwogICAgICAgIGJyZWFrOwogICAgfQp9CgoKc3RhdGljIHZvaWQgUEJNaW5pdCgpCnsKICAgIFBC
TXNldGZvbnQoKTsKfQoKCnN0YXRpYyB2b2lkIFBCTXJlc2V0KCkKewoKCgp9CgoKc3RhdGljIHZv
aWQgUEJNc2V0Zm9udCgpCnsKICAgIHN3aXRjaCAocGJtX2ZvbnQpIHsKICAgIGNhc2UgMToKICAg
ICAgICBiX2NoYXJzaXplKDApOwogICAgICAgIHRlcm0tPnZfY2hhciA9IDExOwogICAgICAgIHRl
cm0tPmhfY2hhciA9IDc7CiAgICAgICAgdGVybS0+dl90aWMgPSA1OwogICAgICAgIHRlcm0tPmhf
dGljID0gNTsKICAgICAgICBicmVhazsKICAgIGNhc2UgMjoKICAgICAgICBiX2NoYXJzaXplKDEp
OwogICAgICAgIHRlcm0tPnZfY2hhciA9IDIxOwogICAgICAgIHRlcm0tPmhfY2hhciA9IDEzOwog
ICAgICAgIHRlcm0tPnZfdGljID0gOTsKICAgICAgICB0ZXJtLT5oX3RpYyA9IDk7CiAgICAgICAg
YnJlYWs7CiAgICBjYXNlIDM6CiAgICAgICAgYl9jaGFyc2l6ZSgyKTsKICAgICAgICB0ZXJtLT52
X2NoYXIgPSAzMTsKICAgICAgICB0ZXJtLT5oX2NoYXIgPSAxOTsKICAgICAgICB0ZXJtLT52X3Rp
YyA9IDEzOwogICAgICAgIHRlcm0tPmhfdGljID0gMTM7CiAgICAgICAgYnJlYWs7CiAgICB9Cn0K
CgpzdGF0aWMgdm9pZCBQQk1ncmFwaGljcygpCnsKICAgIGludCBudW1wbGFuZXMgPSAxOwoKICAg
IHN3aXRjaCAocGJtX21vZGUpIHsKICAgIGNhc2UgMToKICAgICAgICBudW1wbGFuZXMgPSAzOwog
ICAgICAgIGJyZWFrOwogICAgY2FzZSAyOgogICAgICAgIG51bXBsYW5lcyA9IDQ7CiAgICAgICAg
YnJlYWs7CiAgICB9CgoKCgoKCgogICAgYl9tYWtlYml0bWFwKCh1bnNpZ25lZCBpbnQpICgoNDgw
KSAqIHlzaXplKSwKICAgICAgICAgICAgICAgICAodW5zaWduZWQgaW50KSAoKDY0MCkgKiB4c2l6
ZSksIG51bXBsYW5lcyk7CiAgICBiX3Jhc3Rlcm1vZGUgPSAxOwoKICAgIGlmIChwYm1fbW9kZSAh
PSAwKQogICAgICAgIGJfc2V0bGluZXR5cGUoMCk7Cn0KCgpzdGF0aWMgdm9pZCBQQk1tb25vdGV4
dCgpCnsKICAgIHJlZ2lzdGVyIGludCB4LCBqLCByb3c7CgogICAgZnB1dHMoIlA0XG4iLCBncG91
dGZpbGUpOwogICAgZnByaW50ZihncG91dGZpbGUsICIldSAldVxuIiwgYl95c2l6ZSwgYl94c2l6
ZSk7CgoKICAgIGZvciAoeCA9IGJfeHNpemUgLSAxOyB4ID49IDA7IHgtLSkgewogICAgICAgIHJv
dyA9IChiX3lzaXplIC8gOCkgLSAxOwogICAgICAgIGZvciAoaiA9IHJvdzsgaiA+PSAwOyBqLS0p
IHsKICAgICAgICAgICAgKHZvaWQpIGZwdXRjKChjaGFyKSAoKigoKmJfcClbal0gKyB4KSksIGdw
b3V0ZmlsZSk7CiAgICAgICAgfQogICAgfQoKICAgIGJfZnJlZWJpdG1hcCgpOwp9CgpzdGF0aWMg
dm9pZCBQQk1ncmF5dGV4dCgpCnsKICAgIHJlZ2lzdGVyIGludCB4LCBqLCByb3c7CiAgICByZWdp
c3RlciBpbnQgaSwgdmFsdWU7CiAgICBpbnQgbWFzaywgcGxhbmUxLCBwbGFuZTIsIHBsYW5lMzsK
CiAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgIlA1XG4ldSAldVxuJXVcbiIsCgoKCiAgICAgICAgICAg
IGJfeXNpemUsIGJfeHNpemUsCiAgICAgICAgICAgIDI1NSk7CgoKICAgIGZvciAoeCA9IGJfeHNp
emUgLSAxOyB4ID49IDA7IHgtLSkgewogICAgICAgIHJvdyA9IChiX3lzaXplIC8gOCkgLSAxOwog
ICAgICAgIGZvciAoaiA9IHJvdzsgaiA+PSAwOyBqLS0pIHsKICAgICAgICAgICAgbWFzayA9IDB4
ODA7CiAgICAgICAgICAgIHBsYW5lMSA9ICgqKCgqYl9wKVtqXSArIHgpKTsKICAgICAgICAgICAg
cGxhbmUyID0gKCooKCpiX3ApW2ogKyBiX3BzaXplXSArIHgpKTsKICAgICAgICAgICAgcGxhbmUz
ID0gKCooKCpiX3ApW2ogKyBiX3BzaXplICsgYl9wc2l6ZV0gKyB4KSk7CiAgICAgICAgICAgIGZv
ciAoaSA9IDA7IGkgPCA4OyBpKyspIHsKCgogICAgICAgICAgICAgICAgdmFsdWUgPSAyNTU7CiAg
ICAgICAgICAgICAgICBpZiAocGxhbmUxICYgbWFzaykKICAgICAgICAgICAgICAgICAgICB2YWx1
ZSAtPSAzNjsKICAgICAgICAgICAgICAgIGlmIChwbGFuZTIgJiBtYXNrKQogICAgICAgICAgICAg
ICAgICAgIHZhbHVlIC09IDczOwogICAgICAgICAgICAgICAgaWYgKHBsYW5lMyAmIG1hc2spCiAg
ICAgICAgICAgICAgICAgICAgdmFsdWUgLT0gMTQ2OwogICAgICAgICAgICAgICAgKHZvaWQpIGZw
dXRjKChjaGFyKSAodmFsdWUpLCBncG91dGZpbGUpOwogICAgICAgICAgICAgICAgbWFzayA+Pj0g
MTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBiX2ZyZWViaXRtYXAoKTsKfQoK
c3RhdGljIHZvaWQgUEJNY29sb3J0ZXh0KCkKewogICAgcmVnaXN0ZXIgaW50IHgsIGosIHJvdzsK
ICAgIHJlZ2lzdGVyIGludCBpOwogICAgaW50IG1hc2ssIHBsYW5lMSwgcGxhbmUyLCBwbGFuZTMs
IHBsYW5lNDsKICAgIGludCByZWQsIGdyZWVuLCBibHVlOwoKICAgIGZwcmludGYoZ3BvdXRmaWxl
LCAiUDZcbiV1ICV1XG4ldVxuIiwKCgogICAgICAgICAgICBiX3lzaXplLCBiX3hzaXplLAogICAg
ICAgICAgICAyNTUpOwoKCiAgICBmb3IgKHggPSBiX3hzaXplIC0gMTsgeCA+PSAwOyB4LS0pIHsK
ICAgICAgICByb3cgPSAoYl95c2l6ZSAvIDgpIC0gMTsKICAgICAgICBmb3IgKGogPSByb3c7IGog
Pj0gMDsgai0tKSB7CiAgICAgICAgICAgIG1hc2sgPSAweDgwOwogICAgICAgICAgICBwbGFuZTEg
PSAoKigoKmJfcClbal0gKyB4KSk7CiAgICAgICAgICAgIHBsYW5lMiA9ICgqKCgqYl9wKVtqICsg
Yl9wc2l6ZV0gKyB4KSk7CiAgICAgICAgICAgIHBsYW5lMyA9ICgqKCgqYl9wKVtqICsgYl9wc2l6
ZSArIGJfcHNpemVdICsgeCkpOwogICAgICAgICAgICBwbGFuZTQgPSAoKigoKmJfcClbaiArIGJf
cHNpemUgKyBiX3BzaXplICsgYl9wc2l6ZV0gKyB4KSk7CiAgICAgICAgICAgIGZvciAoaSA9IDA7
IGkgPCA4OyBpKyspIHsKICAgICAgICAgICAgICAgIHJlZCA9IChwbGFuZTMgJiBtYXNrKSA/IDEg
OiAzOwogICAgICAgICAgICAgICAgZ3JlZW4gPSAocGxhbmUyICYgbWFzaykgPyAxIDogMzsKICAg
ICAgICAgICAgICAgIGJsdWUgPSAocGxhbmUxICYgbWFzaykgPyAxIDogMzsKICAgICAgICAgICAg
ICAgIGlmIChwbGFuZTQgJiBtYXNrKSB7CiAgICAgICAgICAgICAgICAgICAgcmVkLS07CiAgICAg
ICAgICAgICAgICAgICAgZ3JlZW4tLTsKICAgICAgICAgICAgICAgICAgICBibHVlLS07CiAgICAg
ICAgICAgICAgICB9CgoKICAgICAgICAgICAgICAgICh2b2lkKSBmcHV0YygoY2hhcikgKHJlZCAq
IDg1KSwgZ3BvdXRmaWxlKTsKICAgICAgICAgICAgICAgICh2b2lkKSBmcHV0YygoY2hhcikgKGdy
ZWVuICogODUpLCBncG91dGZpbGUpOwogICAgICAgICAgICAgICAgKHZvaWQpIGZwdXRjKChjaGFy
KSAoYmx1ZSAqIDg1KSwgZ3BvdXRmaWxlKTsKICAgICAgICAgICAgICAgIG1hc2sgPj49IDE7CiAg
ICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgYl9mcmVlYml0bWFwKCk7Cn0KCnN0YXRp
YyB2b2lkIFBCTXRleHQoKQp7CiAgICBzd2l0Y2ggKHBibV9tb2RlKSB7CiAgICBjYXNlIDA6CiAg
ICAgICAgUEJNbW9ub3RleHQoKTsKICAgICAgICBicmVhazsKICAgIGNhc2UgMToKICAgICAgICBQ
Qk1ncmF5dGV4dCgpOwogICAgICAgIGJyZWFrOwogICAgY2FzZSAyOgogICAgICAgIFBCTWNvbG9y
dGV4dCgpOwogICAgICAgIGJyZWFrOwogICAgfQp9CgoKc3RhdGljIHZvaWQgUEJNbGluZXR5cGUo
bGluZXR5cGUpCmludCBsaW5ldHlwZTsKewogICAgc3dpdGNoIChwYm1fbW9kZSkgewogICAgY2Fz
ZSAwOgogICAgICAgIGJfc2V0bGluZXR5cGUobGluZXR5cGUpOwogICAgICAgIGJyZWFrOwogICAg
Y2FzZSAxOgogICAgICAgIGlmIChsaW5ldHlwZSA+PSA3KQogICAgICAgICAgICBsaW5ldHlwZSAl
PSA3OwogICAgICAgIGJfc2V0dmFsdWUocGdtX2dyYXlbbGluZXR5cGUgKyAyXSk7CiAgICAgICAg
YnJlYWs7CiAgICBjYXNlIDI6CiAgICAgICAgaWYgKGxpbmV0eXBlID49IDkpCiAgICAgICAgICAg
IGxpbmV0eXBlICU9IDk7CiAgICAgICAgYl9zZXR2YWx1ZShwcG1fY29sb3JbbGluZXR5cGUgKyAy
XSk7CiAgICAgICAgYnJlYWs7CiAgICB9Cn0KCnN0YXRpYyB2b2lkIFBCTXBvaW50KHgsIHksIHBv
aW50KQp1bnNpZ25lZCBpbnQgeCwgeTsKaW50IHBvaW50Owp7CiAgICBpZiAocGJtX21vZGUgPT0g
MCkKICAgICAgICBsaW5lX2FuZF9wb2ludCh4LCB5LCBwb2ludCk7CiAgICBlbHNlCiAgICAgICAg
ZG9fcG9pbnQoeCwgeSwgcG9pbnQpOwp9CiMgMzIyICJ0ZXJtLmgiIDIKCgoKIyAxICJ0ZXJtL3Bu
Zy50cm0iIDEKIyA2NSAidGVybS9wbmcudHJtIgojIDEgInRlcm0vZHJpdmVyLmgiIDEKIyA2NiAi
dGVybS9wbmcudHJtIiAyCgoKCgoKCnN0YXRpYyB2b2lkIFBOR19vcHRpb25zICh2b2lkKTsKc3Rh
dGljIHZvaWQgUE5HX2luaXQgKHZvaWQpOwpzdGF0aWMgdm9pZCBQTkdfcmVzZXQgKHZvaWQpOwpz
dGF0aWMgdm9pZCBQTkdfc2V0Zm9udCAodm9pZCk7CnN0YXRpYyB2b2lkIFBOR19ncmFwaGljcyAo
dm9pZCk7CnN0YXRpYyB2b2lkIFBOR190ZXh0ICh2b2lkKTsKc3RhdGljIHZvaWQgUE5HX2xpbmV0
eXBlIChpbnQgbGluZXR5cGUpOwpzdGF0aWMgdm9pZCBQTkdfcG9pbnQgKHVuc2lnbmVkIGludCB4
LCB1bnNpZ25lZCBpbnQgeSwgaW50IHBvaW50KTsKIyA5MiAidGVybS9wbmcudHJtIgojIDEgIi91
c3IvaW5jbHVkZS9wbmcuaCIgMSAzCiMgMzA3ICIvdXNyL2luY2x1ZGUvcG5nLmgiIDMKIyAxICIv
dXNyL2luY2x1ZGUvemxpYi5oIiAxIDMKIyAzNCAiL3Vzci9pbmNsdWRlL3psaWIuaCIgMwojIDEg
Ii91c3IvaW5jbHVkZS96Y29uZi5oIiAxIDMKIyAyMTQgIi91c3IvaW5jbHVkZS96Y29uZi5oIiAz
CnR5cGVkZWYgdW5zaWduZWQgY2hhciBCeXRlOwoKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdUludDsK
dHlwZWRlZiB1bnNpZ25lZCBsb25nIHVMb25nOwoKCgoKCiAgIHR5cGVkZWYgQnl0ZSBCeXRlZjsK
CnR5cGVkZWYgY2hhciBjaGFyZjsKdHlwZWRlZiBpbnQgaW50ZjsKdHlwZWRlZiB1SW50IHVJbnRm
Owp0eXBlZGVmIHVMb25nIHVMb25nZjsKCgogICB0eXBlZGVmIHZvaWQgKnZvaWRwZjsKICAgdHlw
ZWRlZiB2b2lkICp2b2lkcDsKCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDEg
MwojIDI0MCAiL3Vzci9pbmNsdWRlL3pjb25mLmgiIDIgMwojIDEgIi91c3IvaW5jbHVkZS91bmlz
dGQuaCIgMSAzCiMgMjQxICIvdXNyL2luY2x1ZGUvemNvbmYuaCIgMiAzCiMgMzUgIi91c3IvaW5j
bHVkZS96bGliLmgiIDIgMwojIDYzICIvdXNyL2luY2x1ZGUvemxpYi5oIiAzCnR5cGVkZWYgdm9p
ZHBmICgqYWxsb2NfZnVuYykgKHZvaWRwZiBvcGFxdWUsIHVJbnQgaXRlbXMsIHVJbnQgc2l6ZSk7
CnR5cGVkZWYgdm9pZCAoKmZyZWVfZnVuYykgKHZvaWRwZiBvcGFxdWUsIHZvaWRwZiBhZGRyZXNz
KTsKCnN0cnVjdCBpbnRlcm5hbF9zdGF0ZTsKCnR5cGVkZWYgc3RydWN0IHpfc3RyZWFtX3Mgewog
ICAgQnl0ZWYgKm5leHRfaW47CiAgICB1SW50IGF2YWlsX2luOwogICAgdUxvbmcgdG90YWxfaW47
CgogICAgQnl0ZWYgKm5leHRfb3V0OwogICAgdUludCBhdmFpbF9vdXQ7CiAgICB1TG9uZyB0b3Rh
bF9vdXQ7CgogICAgY2hhciAqbXNnOwogICAgc3RydWN0IGludGVybmFsX3N0YXRlICpzdGF0ZTsK
CiAgICBhbGxvY19mdW5jIHphbGxvYzsKICAgIGZyZWVfZnVuYyB6ZnJlZTsKICAgIHZvaWRwZiBv
cGFxdWU7CgogICAgaW50IGRhdGFfdHlwZTsKICAgIHVMb25nIGFkbGVyOwogICAgdUxvbmcgcmVz
ZXJ2ZWQ7Cn0gel9zdHJlYW07Cgp0eXBlZGVmIHpfc3RyZWFtICp6X3N0cmVhbXA7CiMgMTcxICIv
dXNyL2luY2x1ZGUvemxpYi5oIiAzCmV4dGVybiBjb25zdCBjaGFyICogemxpYlZlcnNpb24gKHZv
aWQpOwojIDIwMSAiL3Vzci9pbmNsdWRlL3psaWIuaCIgMwpleHRlcm4gaW50IGRlZmxhdGUgKHpf
c3RyZWFtcCBzdHJtLCBpbnQgZmx1c2gpOwojIDI3OSAiL3Vzci9pbmNsdWRlL3psaWIuaCIgMwpl
eHRlcm4gaW50IGRlZmxhdGVFbmQgKHpfc3RyZWFtcCBzdHJtKTsKIyAzMTQgIi91c3IvaW5jbHVk
ZS96bGliLmgiIDMKZXh0ZXJuIGludCBpbmZsYXRlICh6X3N0cmVhbXAgc3RybSwgaW50IGZsdXNo
KTsKIyAzODMgIi91c3IvaW5jbHVkZS96bGliLmgiIDMKZXh0ZXJuIGludCBpbmZsYXRlRW5kICh6
X3N0cmVhbXAgc3RybSk7CiMgNDQ0ICIvdXNyL2luY2x1ZGUvemxpYi5oIiAzCmV4dGVybiBpbnQg
ZGVmbGF0ZVNldERpY3Rpb25hcnkgKHpfc3RyZWFtcCBzdHJtLCBjb25zdCBCeXRlZiAqZGljdGlv
bmFyeSwgdUludCBkaWN0TGVuZ3RoKTsKIyA0ODAgIi91c3IvaW5jbHVkZS96bGliLmgiIDMKZXh0
ZXJuIGludCBkZWZsYXRlQ29weSAoel9zdHJlYW1wIGRlc3QsIHpfc3RyZWFtcCBzb3VyY2UpOwoj
IDQ5OCAiL3Vzci9pbmNsdWRlL3psaWIuaCIgMwpleHRlcm4gaW50IGRlZmxhdGVSZXNldCAoel9z
dHJlYW1wIHN0cm0pOwojIDUwOSAiL3Vzci9pbmNsdWRlL3psaWIuaCIgMwpleHRlcm4gaW50IGRl
ZmxhdGVQYXJhbXMgKHpfc3RyZWFtcCBzdHJtLCBpbnQgbGV2ZWwsIGludCBzdHJhdGVneSk7CiMg
NTUzICIvdXNyL2luY2x1ZGUvemxpYi5oIiAzCmV4dGVybiBpbnQgaW5mbGF0ZVNldERpY3Rpb25h
cnkgKHpfc3RyZWFtcCBzdHJtLCBjb25zdCBCeXRlZiAqZGljdGlvbmFyeSwgdUludCBkaWN0TGVu
Z3RoKTsKIyA1NzIgIi91c3IvaW5jbHVkZS96bGliLmgiIDMKZXh0ZXJuIGludCBpbmZsYXRlU3lu
YyAoel9zdHJlYW1wIHN0cm0pOwojIDU4NyAiL3Vzci9pbmNsdWRlL3psaWIuaCIgMwpleHRlcm4g
aW50IGluZmxhdGVSZXNldCAoel9zdHJlYW1wIHN0cm0pOwojIDYwOCAiL3Vzci9pbmNsdWRlL3ps
aWIuaCIgMwpleHRlcm4gaW50IGNvbXByZXNzIChCeXRlZiAqZGVzdCwgdUxvbmdmICpkZXN0TGVu
LCBjb25zdCBCeXRlZiAqc291cmNlLCB1TG9uZyBzb3VyY2VMZW4pOwojIDYyMyAiL3Vzci9pbmNs
dWRlL3psaWIuaCIgMwpleHRlcm4gaW50IGNvbXByZXNzMiAoQnl0ZWYgKmRlc3QsIHVMb25nZiAq
ZGVzdExlbiwgY29uc3QgQnl0ZWYgKnNvdXJjZSwgdUxvbmcgc291cmNlTGVuLCBpbnQgbGV2ZWwp
OwojIDYzOCAiL3Vzci9pbmNsdWRlL3psaWIuaCIgMwpleHRlcm4gaW50IHVuY29tcHJlc3MgKEJ5
dGVmICpkZXN0LCB1TG9uZ2YgKmRlc3RMZW4sIGNvbnN0IEJ5dGVmICpzb3VyY2UsIHVMb25nIHNv
dXJjZUxlbik7CiMgNjU3ICIvdXNyL2luY2x1ZGUvemxpYi5oIiAzCnR5cGVkZWYgdm9pZHAgZ3pG
aWxlOwoKZXh0ZXJuIGd6RmlsZSBnem9wZW4gKGNvbnN0IGNoYXIgKnBhdGgsIGNvbnN0IGNoYXIg
Km1vZGUpOwojIDY3NSAiL3Vzci9pbmNsdWRlL3psaWIuaCIgMwpleHRlcm4gZ3pGaWxlIGd6ZG9w
ZW4gKGludCBmZCwgY29uc3QgY2hhciAqbW9kZSk7CiMgNjg4ICIvdXNyL2luY2x1ZGUvemxpYi5o
IiAzCmV4dGVybiBpbnQgZ3pzZXRwYXJhbXMgKGd6RmlsZSBmaWxlLCBpbnQgbGV2ZWwsIGludCBz
dHJhdGVneSk7CgoKCgoKCgpleHRlcm4gaW50IGd6cmVhZCAoZ3pGaWxlIGZpbGUsIHZvaWRwIGJ1
ZiwgdW5zaWduZWQgbGVuKTsKCgoKCgoKCmV4dGVybiBpbnQgZ3p3cml0ZSAoZ3pGaWxlIGZpbGUs
IGNvbnN0IHZvaWRwIGJ1ZiwgdW5zaWduZWQgbGVuKTsKCgoKCgoKCmV4dGVybiBpbnQgZ3pwcmlu
dGYgKGd6RmlsZSBmaWxlLCBjb25zdCBjaGFyICpmb3JtYXQsIC4uLik7CgoKCgoKCmV4dGVybiBp
bnQgZ3pwdXRzIChnekZpbGUgZmlsZSwgY29uc3QgY2hhciAqcyk7CgoKCgoKCmV4dGVybiBjaGFy
ICogZ3pnZXRzIChnekZpbGUgZmlsZSwgY2hhciAqYnVmLCBpbnQgbGVuKTsKIyA3MzUgIi91c3Iv
aW5jbHVkZS96bGliLmgiIDMKZXh0ZXJuIGludCBnenB1dGMgKGd6RmlsZSBmaWxlLCBpbnQgYyk7
CgoKCgoKZXh0ZXJuIGludCBnemdldGMgKGd6RmlsZSBmaWxlKTsKCgoKCgpleHRlcm4gaW50IGd6
Zmx1c2ggKGd6RmlsZSBmaWxlLCBpbnQgZmx1c2gpOwojIDc1NyAiL3Vzci9pbmNsdWRlL3psaWIu
aCIgMwpleHRlcm4gb2ZmX3QgZ3pzZWVrIChnekZpbGUgZmlsZSwgb2ZmX3Qgb2Zmc2V0LCBpbnQg
d2hlbmNlKTsKIyA3NzUgIi91c3IvaW5jbHVkZS96bGliLmgiIDMKZXh0ZXJuIGludCBnenJld2lu
ZCAoZ3pGaWxlIGZpbGUpOwoKCgoKCgpleHRlcm4gb2ZmX3QgZ3p0ZWxsIChnekZpbGUgZmlsZSk7
CiMgNzkxICIvdXNyL2luY2x1ZGUvemxpYi5oIiAzCmV4dGVybiBpbnQgZ3plb2YgKGd6RmlsZSBm
aWxlKTsKCgoKCgpleHRlcm4gaW50IGd6Y2xvc2UgKGd6RmlsZSBmaWxlKTsKCgoKCgoKZXh0ZXJu
IGNvbnN0IGNoYXIgKiBnemVycm9yIChnekZpbGUgZmlsZSwgaW50ICplcnJudW0pOwojIDgyMSAi
L3Vzci9pbmNsdWRlL3psaWIuaCIgMwpleHRlcm4gdUxvbmcgYWRsZXIzMiAodUxvbmcgYWRsZXIs
IGNvbnN0IEJ5dGVmICpidWYsIHVJbnQgbGVuKTsKIyA4MzggIi91c3IvaW5jbHVkZS96bGliLmgi
IDMKZXh0ZXJuIHVMb25nIGNyYzMyICh1TG9uZyBjcmMsIGNvbnN0IEJ5dGVmICpidWYsIHVJbnQg
bGVuKTsKIyA4NjAgIi91c3IvaW5jbHVkZS96bGliLmgiIDMKZXh0ZXJuIGludCBkZWZsYXRlSW5p
dF8gKHpfc3RyZWFtcCBzdHJtLCBpbnQgbGV2ZWwsIGNvbnN0IGNoYXIgKnZlcnNpb24sIGludCBz
dHJlYW1fc2l6ZSk7CgpleHRlcm4gaW50IGluZmxhdGVJbml0XyAoel9zdHJlYW1wIHN0cm0sIGNv
bnN0IGNoYXIgKnZlcnNpb24sIGludCBzdHJlYW1fc2l6ZSk7CgpleHRlcm4gaW50IGRlZmxhdGVJ
bml0Ml8gKHpfc3RyZWFtcCBzdHJtLCBpbnQgbGV2ZWwsIGludCBtZXRob2QsIGludCB3aW5kb3dC
aXRzLCBpbnQgbWVtTGV2ZWwsIGludCBzdHJhdGVneSwgY29uc3QgY2hhciAqdmVyc2lvbiwgaW50
IHN0cmVhbV9zaXplKTsKCgoKZXh0ZXJuIGludCBpbmZsYXRlSW5pdDJfICh6X3N0cmVhbXAgc3Ry
bSwgaW50IHdpbmRvd0JpdHMsIGNvbnN0IGNoYXIgKnZlcnNpb24sIGludCBzdHJlYW1fc2l6ZSk7
CiMgODgyICIvdXNyL2luY2x1ZGUvemxpYi5oIiAzCiAgICBzdHJ1Y3QgaW50ZXJuYWxfc3RhdGUg
e2ludCBkdW1teTt9OwoKCmV4dGVybiBjb25zdCBjaGFyICogekVycm9yIChpbnQgZXJyKTsKZXh0
ZXJuIGludCBpbmZsYXRlU3luY1BvaW50ICh6X3N0cmVhbXAgeik7CmV4dGVybiBjb25zdCB1TG9u
Z2YgKiBnZXRfY3JjX3RhYmxlICh2b2lkKTsKIyAzMDggIi91c3IvaW5jbHVkZS9wbmcuaCIgMiAz
CgoKIyAxICIvdXNyL2luY2x1ZGUvcG5nY29uZi5oIiAxIDMKIyAxODYgIi91c3IvaW5jbHVkZS9w
bmdjb25mLmgiIDMKIyAxICIvdXNyL2xvY2FsL2djYy0zL2xpYi9nY2MtbGliL2k1ODYtcGMtbGlu
dXgtZ251LzMuMC4zL2luY2x1ZGUvc3RkaW8uaCIgMSAzCiMgMTg3ICIvdXNyL2luY2x1ZGUvcG5n
Y29uZi5oIiAyIDMKIyAyMjYgIi91c3IvaW5jbHVkZS9wbmdjb25mLmgiIDMKIyAxICIvdXNyL2lu
Y2x1ZGUvc3lzL3R5cGVzLmgiIDEgMwojIDIyNyAiL3Vzci9pbmNsdWRlL3BuZ2NvbmYuaCIgMiAz
CiMgMjUwICIvdXNyL2luY2x1ZGUvcG5nY29uZi5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL3NldGpt
cC5oIiAxIDMKIyAyNiAiL3Vzci9pbmNsdWRlL3NldGptcC5oIiAzCiMgMSAiL3Vzci9pbmNsdWRl
L2ZlYXR1cmVzLmgiIDEgMwojIDI3ICIvdXNyL2luY2x1ZGUvc2V0am1wLmgiIDIgMwoKCgojIDEg
Ii91c3IvaW5jbHVkZS9iaXRzL3NldGptcC5oIiAxIDMKIyAzNiAiL3Vzci9pbmNsdWRlL2JpdHMv
c2V0am1wLmgiIDMKdHlwZWRlZiBpbnQgX19qbXBfYnVmWzZdOwojIDMxICIvdXNyL2luY2x1ZGUv
c2V0am1wLmgiIDIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3NpZ3NldC5oIiAxIDMKIyAzMiAi
L3Vzci9pbmNsdWRlL3NldGptcC5oIiAyIDMKCgp0eXBlZGVmIHN0cnVjdCBfX2ptcF9idWZfdGFn
CiAgewoKCgoKICAgIF9fam1wX2J1ZiBfX2ptcGJ1ZjsKICAgIGludCBfX21hc2tfd2FzX3NhdmVk
OwogICAgX19zaWdzZXRfdCBfX3NhdmVkX21hc2s7CiAgfSBqbXBfYnVmWzFdOwoKCgoKZXh0ZXJu
IGludCBzZXRqbXAgKGptcF9idWYgX19lbnYpIDsKCgoKZXh0ZXJuIGludCBfc2V0am1wIChqbXBf
YnVmIF9fZW52KSA7CgoKCgpleHRlcm4gaW50IF9fc2lnc2V0am1wIChqbXBfYnVmIF9fZW52LCBp
bnQgX19zYXZlbWFzaykgOwojIDczICIvdXNyL2luY2x1ZGUvc2V0am1wLmgiIDMKZXh0ZXJuIHZv
aWQgbG9uZ2ptcCAoam1wX2J1ZiBfX2VudiwgaW50IF9fdmFsKQogICAgICAgICAgICAgX19hdHRy
aWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwoKCgoKZXh0ZXJuIHZvaWQgX2xvbmdqbXAgKGptcF9i
dWYgX19lbnYsIGludCBfX3ZhbCkKICAgICAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX25vcmV0
dXJuX18pKTsKCgoKCgoKCnR5cGVkZWYgam1wX2J1ZiBzaWdqbXBfYnVmOwojIDk4ICIvdXNyL2lu
Y2x1ZGUvc2V0am1wLmgiIDMKZXh0ZXJuIHZvaWQgc2lnbG9uZ2ptcCAoc2lnam1wX2J1ZiBfX2Vu
diwgaW50IF9fdmFsKQogICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykp
OwojIDI1MSAiL3Vzci9pbmNsdWRlL3BuZ2NvbmYuaCIgMiAzCiMgMjYzICIvdXNyL2luY2x1ZGUv
cG5nY29uZi5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAxIDMKIyAyNjQgIi91c3Iv
aW5jbHVkZS9wbmdjb25mLmgiIDIgMwojIDk0OSAiL3Vzci9pbmNsdWRlL3BuZ2NvbmYuaCIgMwoj
IDEgIi91c3IvaW5jbHVkZS90aW1lLmgiIDEgMwojIDk1MCAiL3Vzci9pbmNsdWRlL3BuZ2NvbmYu
aCIgMiAzCiMgOTYyICIvdXNyL2luY2x1ZGUvcG5nY29uZi5oIiAzCnR5cGVkZWYgdW5zaWduZWQg
bG9uZyBwbmdfdWludF8zMjsKdHlwZWRlZiBsb25nIHBuZ19pbnRfMzI7CnR5cGVkZWYgdW5zaWdu
ZWQgc2hvcnQgcG5nX3VpbnRfMTY7CnR5cGVkZWYgc2hvcnQgcG5nX2ludF8xNjsKdHlwZWRlZiB1
bnNpZ25lZCBjaGFyIHBuZ19ieXRlOwoKCgp0eXBlZGVmIHNpemVfdCBwbmdfc2l6ZV90OwojIDEw
MzMgIi91c3IvaW5jbHVkZS9wbmdjb25mLmgiIDMKdHlwZWRlZiBwbmdfaW50XzMyIHBuZ19maXhl
ZF9wb2ludDsKCgp0eXBlZGVmIHZvaWQgKiBwbmdfdm9pZHA7CnR5cGVkZWYgcG5nX2J5dGUgKiBw
bmdfYnl0ZXA7CnR5cGVkZWYgcG5nX3VpbnRfMzIgKiBwbmdfdWludF8zMnA7CnR5cGVkZWYgcG5n
X2ludF8zMiAqIHBuZ19pbnRfMzJwOwp0eXBlZGVmIHBuZ191aW50XzE2ICogcG5nX3VpbnRfMTZw
Owp0eXBlZGVmIHBuZ19pbnRfMTYgKiBwbmdfaW50XzE2cDsKdHlwZWRlZiBjb25zdCBjaGFyICog
cG5nX2NvbnN0X2NoYXJwOwp0eXBlZGVmIGNoYXIgKiBwbmdfY2hhcnA7CnR5cGVkZWYgcG5nX2Zp
eGVkX3BvaW50ICogcG5nX2ZpeGVkX3BvaW50X3A7CgoKCgoKdHlwZWRlZiBGSUxFICogcG5nX0ZJ
TEVfcDsKCgoKCnR5cGVkZWYgZG91YmxlICogcG5nX2RvdWJsZXA7CgoKCnR5cGVkZWYgcG5nX2J5
dGUgKiAqIHBuZ19ieXRlcHA7CnR5cGVkZWYgcG5nX3VpbnRfMzIgKiAqIHBuZ191aW50XzMycHA7
CnR5cGVkZWYgcG5nX2ludF8zMiAqICogcG5nX2ludF8zMnBwOwp0eXBlZGVmIHBuZ191aW50XzE2
ICogKiBwbmdfdWludF8xNnBwOwp0eXBlZGVmIHBuZ19pbnRfMTYgKiAqIHBuZ19pbnRfMTZwcDsK
dHlwZWRlZiBjb25zdCBjaGFyICogKiBwbmdfY29uc3RfY2hhcnBwOwp0eXBlZGVmIGNoYXIgKiAq
IHBuZ19jaGFycHA7CnR5cGVkZWYgcG5nX2ZpeGVkX3BvaW50ICogKiBwbmdfZml4ZWRfcG9pbnRf
cHA7Cgp0eXBlZGVmIGRvdWJsZSAqICogcG5nX2RvdWJsZXBwOwoKCgp0eXBlZGVmIGNoYXIgKiAq
ICogcG5nX2NoYXJwcHA7CgoKCgoKdHlwZWRlZiBjaGFyZiAqIHBuZ196Y2hhcnA7CnR5cGVkZWYg
Y2hhcmYgKiAqIHBuZ196Y2hhcnBwOwp0eXBlZGVmIHpfc3RyZWFtICogcG5nX3pzdHJlYW1wOwoj
IDMxMSAiL3Vzci9pbmNsdWRlL3BuZy5oIiAyIDMKIyAzMjkgIi91c3IvaW5jbHVkZS9wbmcuaCIg
MwpleHRlcm4gY29uc3QgY2hhciBwbmdfbGlicG5nX3ZlclsxOF07CiMgMzM4ICIvdXNyL2luY2x1
ZGUvcG5nLmgiIDMKZXh0ZXJuIGNvbnN0IGludCBwbmdfcGFzc19zdGFydFs3XTsKZXh0ZXJuIGNv
bnN0IGludCBwbmdfcGFzc19pbmNbN107CmV4dGVybiBjb25zdCBpbnQgcG5nX3Bhc3NfeXN0YXJ0
WzddOwpleHRlcm4gY29uc3QgaW50IHBuZ19wYXNzX3lpbmNbN107CmV4dGVybiBjb25zdCBpbnQg
cG5nX3Bhc3NfbWFza1s3XTsKZXh0ZXJuIGNvbnN0IGludCBwbmdfcGFzc19kc3BfbWFza1s3XTsK
IyAzNTggIi91c3IvaW5jbHVkZS9wbmcuaCIgMwp0eXBlZGVmIHN0cnVjdCBwbmdfY29sb3Jfc3Ry
dWN0CnsKICAgcG5nX2J5dGUgcmVkOwogICBwbmdfYnl0ZSBncmVlbjsKICAgcG5nX2J5dGUgYmx1
ZTsKfSBwbmdfY29sb3I7CnR5cGVkZWYgcG5nX2NvbG9yICogcG5nX2NvbG9ycDsKdHlwZWRlZiBw
bmdfY29sb3IgKiAqIHBuZ19jb2xvcnBwOwoKdHlwZWRlZiBzdHJ1Y3QgcG5nX2NvbG9yXzE2X3N0
cnVjdAp7CiAgIHBuZ19ieXRlIGluZGV4OwogICBwbmdfdWludF8xNiByZWQ7CiAgIHBuZ191aW50
XzE2IGdyZWVuOwogICBwbmdfdWludF8xNiBibHVlOwogICBwbmdfdWludF8xNiBncmF5Owp9IHBu
Z19jb2xvcl8xNjsKdHlwZWRlZiBwbmdfY29sb3JfMTYgKiBwbmdfY29sb3JfMTZwOwp0eXBlZGVm
IHBuZ19jb2xvcl8xNiAqICogcG5nX2NvbG9yXzE2cHA7Cgp0eXBlZGVmIHN0cnVjdCBwbmdfY29s
b3JfOF9zdHJ1Y3QKewogICBwbmdfYnl0ZSByZWQ7CiAgIHBuZ19ieXRlIGdyZWVuOwogICBwbmdf
Ynl0ZSBibHVlOwogICBwbmdfYnl0ZSBncmF5OwogICBwbmdfYnl0ZSBhbHBoYTsKfSBwbmdfY29s
b3JfODsKdHlwZWRlZiBwbmdfY29sb3JfOCAqIHBuZ19jb2xvcl84cDsKdHlwZWRlZiBwbmdfY29s
b3JfOCAqICogcG5nX2NvbG9yXzhwcDsKCgoKCgp0eXBlZGVmIHN0cnVjdCBwbmdfc1BMVF9lbnRy
eV9zdHJ1Y3QKewogICBwbmdfdWludF8xNiByZWQ7CiAgIHBuZ191aW50XzE2IGdyZWVuOwogICBw
bmdfdWludF8xNiBibHVlOwogICBwbmdfdWludF8xNiBhbHBoYTsKICAgcG5nX3VpbnRfMTYgZnJl
cXVlbmN5Owp9IHBuZ19zUExUX2VudHJ5Owp0eXBlZGVmIHBuZ19zUExUX2VudHJ5ICogcG5nX3NQ
TFRfZW50cnlwOwp0eXBlZGVmIHBuZ19zUExUX2VudHJ5ICogKiBwbmdfc1BMVF9lbnRyeXBwOwoK
CgoKCgp0eXBlZGVmIHN0cnVjdCBwbmdfc1BMVF9zdHJ1Y3QKewogICBwbmdfY2hhcnAgbmFtZTsK
ICAgcG5nX2J5dGUgZGVwdGg7CiAgIHBuZ19zUExUX2VudHJ5cCBlbnRyaWVzOwogICBwbmdfaW50
XzMyIG5lbnRyaWVzOwp9IHBuZ19zUExUX3Q7CnR5cGVkZWYgcG5nX3NQTFRfdCAqIHBuZ19zUExU
X3RwOwp0eXBlZGVmIHBuZ19zUExUX3QgKiAqIHBuZ19zUExUX3RwcDsKIyA0MjggIi91c3IvaW5j
bHVkZS9wbmcuaCIgMwp0eXBlZGVmIHN0cnVjdCBwbmdfdGV4dF9zdHJ1Y3QKewogICBpbnQgY29t
cHJlc3Npb247CgoKCgogICBwbmdfY2hhcnAga2V5OwogICBwbmdfY2hhcnAgdGV4dDsKCiAgIHBu
Z19zaXplX3QgdGV4dF9sZW5ndGg7CgoKCgoKCgp9IHBuZ190ZXh0Owp0eXBlZGVmIHBuZ190ZXh0
ICogcG5nX3RleHRwOwp0eXBlZGVmIHBuZ190ZXh0ICogKiBwbmdfdGV4dHBwOwojIDQ2NyAiL3Vz
ci9pbmNsdWRlL3BuZy5oIiAzCnR5cGVkZWYgc3RydWN0IHBuZ190aW1lX3N0cnVjdAp7CiAgIHBu
Z191aW50XzE2IHllYXI7CiAgIHBuZ19ieXRlIG1vbnRoOwogICBwbmdfYnl0ZSBkYXk7CiAgIHBu
Z19ieXRlIGhvdXI7CiAgIHBuZ19ieXRlIG1pbnV0ZTsKICAgcG5nX2J5dGUgc2Vjb25kOwp9IHBu
Z190aW1lOwp0eXBlZGVmIHBuZ190aW1lICogcG5nX3RpbWVwOwp0eXBlZGVmIHBuZ190aW1lICog
KiBwbmdfdGltZXBwOwoKCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgcG5nX3Vua25vd25fY2h1bmtfdAp7
CiAgICBwbmdfYnl0ZSBuYW1lWzVdOwogICAgcG5nX2J5dGUgKmRhdGE7CiAgICBwbmdfc2l6ZV90
IHNpemU7CgoKICAgIHBuZ19ieXRlIGxvY2F0aW9uOwp9CnBuZ191bmtub3duX2NodW5rOwp0eXBl
ZGVmIHBuZ191bmtub3duX2NodW5rICogcG5nX3Vua25vd25fY2h1bmtwOwp0eXBlZGVmIHBuZ191
bmtub3duX2NodW5rICogKiBwbmdfdW5rbm93bl9jaHVua3BwOwojIDUzOCAiL3Vzci9pbmNsdWRl
L3BuZy5oIiAzCnR5cGVkZWYgc3RydWN0IHBuZ19pbmZvX3N0cnVjdAp7CgogICBwbmdfdWludF8z
MiB3aWR0aDsKICAgcG5nX3VpbnRfMzIgaGVpZ2h0OwogICBwbmdfdWludF8zMiB2YWxpZDsKICAg
cG5nX3VpbnRfMzIgcm93Ynl0ZXM7CiAgIHBuZ19jb2xvcnAgcGFsZXR0ZTsKICAgcG5nX3VpbnRf
MTYgbnVtX3BhbGV0dGU7CiAgIHBuZ191aW50XzE2IG51bV90cmFuczsKICAgcG5nX2J5dGUgYml0
X2RlcHRoOwogICBwbmdfYnl0ZSBjb2xvcl90eXBlOwoKICAgcG5nX2J5dGUgY29tcHJlc3Npb25f
dHlwZTsKICAgcG5nX2J5dGUgZmlsdGVyX3R5cGU7CiAgIHBuZ19ieXRlIGludGVybGFjZV90eXBl
OwoKCiAgIHBuZ19ieXRlIGNoYW5uZWxzOwogICBwbmdfYnl0ZSBwaXhlbF9kZXB0aDsKICAgcG5n
X2J5dGUgc3BhcmVfYnl0ZTsKICAgcG5nX2J5dGUgc2lnbmF0dXJlWzhdOwojIDU3MiAiL3Vzci9p
bmNsdWRlL3BuZy5oIiAzCiAgIGZsb2F0IGdhbW1hOwoKCgoKCiAgIHBuZ19ieXRlIHNyZ2JfaW50
ZW50OwojIDU5MCAiL3Vzci9pbmNsdWRlL3BuZy5oIiAzCiAgIGludCBudW1fdGV4dDsKICAgaW50
IG1heF90ZXh0OwogICBwbmdfdGV4dHAgdGV4dDsKCgoKCgoKICAgcG5nX3RpbWUgbW9kX3RpbWU7
CiMgNjA5ICIvdXNyL2luY2x1ZGUvcG5nLmgiIDMKICAgcG5nX2NvbG9yXzggc2lnX2JpdDsKIyA2
MjMgIi91c3IvaW5jbHVkZS9wbmcuaCIgMwogICBwbmdfYnl0ZXAgdHJhbnM7CiAgIHBuZ19jb2xv
cl8xNiB0cmFuc192YWx1ZXM7CiMgNjM0ICIvdXNyL2luY2x1ZGUvcG5nLmgiIDMKICAgcG5nX2Nv
bG9yXzE2IGJhY2tncm91bmQ7CiMgNjQzICIvdXNyL2luY2x1ZGUvcG5nLmgiIDMKICAgcG5nX2lu
dF8zMiB4X29mZnNldDsKICAgcG5nX2ludF8zMiB5X29mZnNldDsKICAgcG5nX2J5dGUgb2Zmc2V0
X3VuaXRfdHlwZTsKCgoKCgoKCiAgIHBuZ191aW50XzMyIHhfcGl4ZWxzX3Blcl91bml0OwogICBw
bmdfdWludF8zMiB5X3BpeGVsc19wZXJfdW5pdDsKICAgcG5nX2J5dGUgcGh5c191bml0X3R5cGU7
CiMgNjY1ICIvdXNyL2luY2x1ZGUvcG5nLmgiIDMKICAgcG5nX3VpbnRfMTZwIGhpc3Q7CiMgNjc2
ICIvdXNyL2luY2x1ZGUvcG5nLmgiIDMKICAgZmxvYXQgeF93aGl0ZTsKICAgZmxvYXQgeV93aGl0
ZTsKICAgZmxvYXQgeF9yZWQ7CiAgIGZsb2F0IHlfcmVkOwogICBmbG9hdCB4X2dyZWVuOwogICBm
bG9hdCB5X2dyZWVuOwogICBmbG9hdCB4X2JsdWU7CiAgIGZsb2F0IHlfYmx1ZTsKIyA2OTkgIi91
c3IvaW5jbHVkZS9wbmcuaCIgMwogICBwbmdfY2hhcnAgcGNhbF9wdXJwb3NlOwogICBwbmdfaW50
XzMyIHBjYWxfWDA7CiAgIHBuZ19pbnRfMzIgcGNhbF9YMTsKICAgcG5nX2NoYXJwIHBjYWxfdW5p
dHM7CiAgIHBuZ19jaGFycHAgcGNhbF9wYXJhbXM7CiAgIHBuZ19ieXRlIHBjYWxfdHlwZTsKICAg
cG5nX2J5dGUgcGNhbF9ucGFyYW1zOwoKCgoKICAgcG5nX3VpbnRfMzIgZnJlZV9tZTsKCgoKCiAg
IHBuZ191bmtub3duX2NodW5rcCB1bmtub3duX2NodW5rczsKICAgcG5nX3NpemVfdCB1bmtub3du
X2NodW5rc19udW07CgoKCgogICBwbmdfY2hhcnAgaWNjcF9uYW1lOwogICBwbmdfY2hhcnAgaWNj
cF9wcm9maWxlOwoKICAgcG5nX3VpbnRfMzIgaWNjcF9wcm9mbGVuOwogICBwbmdfYnl0ZSBpY2Nw
X2NvbXByZXNzaW9uOwoKCgoKICAgcG5nX3NQTFRfdHAgc3BsdF9wYWxldHRlczsKICAgcG5nX3Vp
bnRfMzIgc3BsdF9wYWxldHRlc19udW07CiMgNzQyICIvdXNyL2luY2x1ZGUvcG5nLmgiIDMKICAg
cG5nX2J5dGUgc2NhbF91bml0OwoKICAgZG91YmxlIHNjYWxfcGl4ZWxfd2lkdGg7CiAgIGRvdWJs
ZSBzY2FsX3BpeGVsX2hlaWdodDsKCgogICBwbmdfY2hhcnAgc2NhbF9zX3dpZHRoOwogICBwbmdf
Y2hhcnAgc2NhbF9zX2hlaWdodDsKCgoKCgoKICAgcG5nX2J5dGVwcCByb3dfcG9pbnRlcnM7CgoK
CiAgIHBuZ19maXhlZF9wb2ludCBpbnRfZ2FtbWE7CgoKCiAgIHBuZ19maXhlZF9wb2ludCBpbnRf
eF93aGl0ZTsKICAgcG5nX2ZpeGVkX3BvaW50IGludF95X3doaXRlOwogICBwbmdfZml4ZWRfcG9p
bnQgaW50X3hfcmVkOwogICBwbmdfZml4ZWRfcG9pbnQgaW50X3lfcmVkOwogICBwbmdfZml4ZWRf
cG9pbnQgaW50X3hfZ3JlZW47CiAgIHBuZ19maXhlZF9wb2ludCBpbnRfeV9ncmVlbjsKICAgcG5n
X2ZpeGVkX3BvaW50IGludF94X2JsdWU7CiAgIHBuZ19maXhlZF9wb2ludCBpbnRfeV9ibHVlOwoK
Cn0gcG5nX2luZm87Cgp0eXBlZGVmIHBuZ19pbmZvICogcG5nX2luZm9wOwp0eXBlZGVmIHBuZ19p
bmZvICogKiBwbmdfaW5mb3BwOwojIDg3NCAiL3Vzci9pbmNsdWRlL3BuZy5oIiAzCnR5cGVkZWYg
c3RydWN0IHBuZ19yb3dfaW5mb19zdHJ1Y3QKewogICBwbmdfdWludF8zMiB3aWR0aDsKICAgcG5n
X3VpbnRfMzIgcm93Ynl0ZXM7CiAgIHBuZ19ieXRlIGNvbG9yX3R5cGU7CiAgIHBuZ19ieXRlIGJp
dF9kZXB0aDsKICAgcG5nX2J5dGUgY2hhbm5lbHM7CiAgIHBuZ19ieXRlIHBpeGVsX2RlcHRoOwp9
IHBuZ19yb3dfaW5mbzsKCnR5cGVkZWYgcG5nX3Jvd19pbmZvICogcG5nX3Jvd19pbmZvcDsKdHlw
ZWRlZiBwbmdfcm93X2luZm8gKiAqIHBuZ19yb3dfaW5mb3BwOwoKCgoKCgoKdHlwZWRlZiBzdHJ1
Y3QgcG5nX3N0cnVjdF9kZWYgcG5nX3N0cnVjdDsKdHlwZWRlZiBwbmdfc3RydWN0ICogcG5nX3N0
cnVjdHA7Cgp0eXBlZGVmIHZvaWQgKCAqcG5nX2Vycm9yX3B0cikgKHBuZ19zdHJ1Y3RwLCBwbmdf
Y29uc3RfY2hhcnApOwp0eXBlZGVmIHZvaWQgKCAqcG5nX3J3X3B0cikgKHBuZ19zdHJ1Y3RwLCBw
bmdfYnl0ZXAsIHBuZ19zaXplX3QpOwp0eXBlZGVmIHZvaWQgKCAqcG5nX2ZsdXNoX3B0cikgKHBu
Z19zdHJ1Y3RwKTsKdHlwZWRlZiB2b2lkICggKnBuZ19yZWFkX3N0YXR1c19wdHIpIChwbmdfc3Ry
dWN0cCwgcG5nX3VpbnRfMzIsIGludCk7Cgp0eXBlZGVmIHZvaWQgKCAqcG5nX3dyaXRlX3N0YXR1
c19wdHIpIChwbmdfc3RydWN0cCwgcG5nX3VpbnRfMzIsIGludCk7CgoKCnR5cGVkZWYgdm9pZCAo
ICpwbmdfcHJvZ3Jlc3NpdmVfaW5mb19wdHIpIChwbmdfc3RydWN0cCwgcG5nX2luZm9wKTsKdHlw
ZWRlZiB2b2lkICggKnBuZ19wcm9ncmVzc2l2ZV9lbmRfcHRyKSAocG5nX3N0cnVjdHAsIHBuZ19p
bmZvcCk7CnR5cGVkZWYgdm9pZCAoICpwbmdfcHJvZ3Jlc3NpdmVfcm93X3B0cikgKHBuZ19zdHJ1
Y3RwLCBwbmdfYnl0ZXAsIHBuZ191aW50XzMyLCBpbnQpOwoKCgoKCgp0eXBlZGVmIHZvaWQgKCAq
cG5nX3VzZXJfdHJhbnNmb3JtX3B0cikgKHBuZ19zdHJ1Y3RwLCBwbmdfcm93X2luZm9wLCBwbmdf
Ynl0ZXApOwoKCgoKdHlwZWRlZiBpbnQgKCAqcG5nX3VzZXJfY2h1bmtfcHRyKSAocG5nX3N0cnVj
dHAsIHBuZ191bmtub3duX2NodW5rcCk7CgoKdHlwZWRlZiB2b2lkICggKnBuZ191bmtub3duX2No
dW5rX3B0cikgKHBuZ19zdHJ1Y3RwKTsKIyA5NDUgIi91c3IvaW5jbHVkZS9wbmcuaCIgMwp0eXBl
ZGVmIHBuZ192b2lkcCAoKnBuZ19tYWxsb2NfcHRyKSAocG5nX3N0cnVjdHAsIHBuZ19zaXplX3Qp
Owp0eXBlZGVmIHZvaWQgKCpwbmdfZnJlZV9wdHIpIChwbmdfc3RydWN0cCwgcG5nX3ZvaWRwKTsK
IyA5NTUgIi91c3IvaW5jbHVkZS9wbmcuaCIgMwpzdHJ1Y3QgcG5nX3N0cnVjdF9kZWYKewoKICAg
am1wX2J1ZiBqbXBidWY7CgogICBwbmdfZXJyb3JfcHRyIGVycm9yX2ZuOwogICBwbmdfZXJyb3Jf
cHRyIHdhcm5pbmdfZm47CiAgIHBuZ192b2lkcCBlcnJvcl9wdHI7CiAgIHBuZ19yd19wdHIgd3Jp
dGVfZGF0YV9mbjsKICAgcG5nX3J3X3B0ciByZWFkX2RhdGFfZm47CiAgIHBuZ192b2lkcCBpb19w
dHI7CgoKICAgcG5nX3VzZXJfdHJhbnNmb3JtX3B0ciByZWFkX3VzZXJfdHJhbnNmb3JtX2ZuOwoK
CgogICBwbmdfdXNlcl90cmFuc2Zvcm1fcHRyIHdyaXRlX3VzZXJfdHJhbnNmb3JtX2ZuOwoKCgoK
CgogICBwbmdfdm9pZHAgdXNlcl90cmFuc2Zvcm1fcHRyOwogICBwbmdfYnl0ZSB1c2VyX3RyYW5z
Zm9ybV9kZXB0aDsKICAgcG5nX2J5dGUgdXNlcl90cmFuc2Zvcm1fY2hhbm5lbHM7CgoKCiAgIHBu
Z191aW50XzMyIG1vZGU7CiAgIHBuZ191aW50XzMyIGZsYWdzOwogICBwbmdfdWludF8zMiB0cmFu
c2Zvcm1hdGlvbnM7CgogICB6X3N0cmVhbSB6c3RyZWFtOwogICBwbmdfYnl0ZXAgemJ1ZjsKICAg
cG5nX3NpemVfdCB6YnVmX3NpemU7CiAgIGludCB6bGliX2xldmVsOwogICBpbnQgemxpYl9tZXRo
b2Q7CiAgIGludCB6bGliX3dpbmRvd19iaXRzOwogICBpbnQgemxpYl9tZW1fbGV2ZWw7CiAgIGlu
dCB6bGliX3N0cmF0ZWd5OwoKICAgcG5nX3VpbnRfMzIgd2lkdGg7CiAgIHBuZ191aW50XzMyIGhl
aWdodDsKICAgcG5nX3VpbnRfMzIgbnVtX3Jvd3M7CiAgIHBuZ191aW50XzMyIHVzcl93aWR0aDsK
ICAgcG5nX3VpbnRfMzIgcm93Ynl0ZXM7CiAgIHBuZ191aW50XzMyIGlyb3dieXRlczsKICAgcG5n
X3VpbnRfMzIgaXdpZHRoOwogICBwbmdfdWludF8zMiByb3dfbnVtYmVyOwogICBwbmdfYnl0ZXAg
cHJldl9yb3c7CiAgIHBuZ19ieXRlcCByb3dfYnVmOwogICBwbmdfYnl0ZXAgc3ViX3JvdzsKICAg
cG5nX2J5dGVwIHVwX3JvdzsKICAgcG5nX2J5dGVwIGF2Z19yb3c7CiAgIHBuZ19ieXRlcCBwYWV0
aF9yb3c7CiAgIHBuZ19yb3dfaW5mbyByb3dfaW5mbzsKCiAgIHBuZ191aW50XzMyIGlkYXRfc2l6
ZTsKICAgcG5nX3VpbnRfMzIgY3JjOwogICBwbmdfY29sb3JwIHBhbGV0dGU7CiAgIHBuZ191aW50
XzE2IG51bV9wYWxldHRlOwogICBwbmdfdWludF8xNiBudW1fdHJhbnM7CiAgIHBuZ19ieXRlIGNo
dW5rX25hbWVbNV07CiAgIHBuZ19ieXRlIGNvbXByZXNzaW9uOwogICBwbmdfYnl0ZSBmaWx0ZXI7
CiAgIHBuZ19ieXRlIGludGVybGFjZWQ7CiAgIHBuZ19ieXRlIHBhc3M7CiAgIHBuZ19ieXRlIGRv
X2ZpbHRlcjsKICAgcG5nX2J5dGUgY29sb3JfdHlwZTsKICAgcG5nX2J5dGUgYml0X2RlcHRoOwog
ICBwbmdfYnl0ZSB1c3JfYml0X2RlcHRoOwogICBwbmdfYnl0ZSBwaXhlbF9kZXB0aDsKICAgcG5n
X2J5dGUgY2hhbm5lbHM7CiAgIHBuZ19ieXRlIHVzcl9jaGFubmVsczsKICAgcG5nX2J5dGUgc2ln
X2J5dGVzOwoKCgoKCiAgIHBuZ191aW50XzE2IGZpbGxlcjsKCgoKCiAgIHBuZ19ieXRlIGJhY2tn
cm91bmRfZ2FtbWFfdHlwZTsKCiAgIGZsb2F0IGJhY2tncm91bmRfZ2FtbWE7CgogICBwbmdfY29s
b3JfMTYgYmFja2dyb3VuZDsKCiAgICAgcG5nX2NvbG9yXzE2IGJhY2tncm91bmRfMTsKCgoKCiAg
IHBuZ19mbHVzaF9wdHIgb3V0cHV0X2ZsdXNoX2ZuOwogICBwbmdfdWludF8zMiBmbHVzaF9kaXN0
OwogICBwbmdfdWludF8zMiBmbHVzaF9yb3dzOwoKCgogICBpbnQgZ2FtbWFfc2hpZnQ7CgogICBm
bG9hdCBnYW1tYTsKICAgZmxvYXQgc2NyZWVuX2dhbW1hOwoKCgoKICAgcG5nX2J5dGVwIGdhbW1h
X3RhYmxlOwogICBwbmdfYnl0ZXAgZ2FtbWFfZnJvbV8xOwogICBwbmdfYnl0ZXAgZ2FtbWFfdG9f
MTsKICAgcG5nX3VpbnRfMTZwcCBnYW1tYV8xNl90YWJsZTsKICAgcG5nX3VpbnRfMTZwcCBnYW1t
YV8xNl9mcm9tXzE7CiAgIHBuZ191aW50XzE2cHAgZ2FtbWFfMTZfdG9fMTsKCgoKICAgcG5nX2Nv
bG9yXzggc2lnX2JpdDsKCgoKICAgcG5nX2NvbG9yXzggc2hpZnQ7CgoKCgogICBwbmdfYnl0ZXAg
dHJhbnM7CiAgIHBuZ19jb2xvcl8xNiB0cmFuc192YWx1ZXM7CgoKICAgcG5nX3JlYWRfc3RhdHVz
X3B0ciByZWFkX3Jvd19mbjsKICAgcG5nX3dyaXRlX3N0YXR1c19wdHIgd3JpdGVfcm93X2ZuOwoK
ICAgcG5nX3Byb2dyZXNzaXZlX2luZm9fcHRyIGluZm9fZm47CiAgIHBuZ19wcm9ncmVzc2l2ZV9y
b3dfcHRyIHJvd19mbjsKICAgcG5nX3Byb2dyZXNzaXZlX2VuZF9wdHIgZW5kX2ZuOwogICBwbmdf
Ynl0ZXAgc2F2ZV9idWZmZXJfcHRyOwogICBwbmdfYnl0ZXAgc2F2ZV9idWZmZXI7CiAgIHBuZ19i
eXRlcCBjdXJyZW50X2J1ZmZlcl9wdHI7CiAgIHBuZ19ieXRlcCBjdXJyZW50X2J1ZmZlcjsKICAg
cG5nX3VpbnRfMzIgcHVzaF9sZW5ndGg7CiAgIHBuZ191aW50XzMyIHNraXBfbGVuZ3RoOwogICBw
bmdfc2l6ZV90IHNhdmVfYnVmZmVyX3NpemU7CiAgIHBuZ19zaXplX3Qgc2F2ZV9idWZmZXJfbWF4
OwogICBwbmdfc2l6ZV90IGJ1ZmZlcl9zaXplOwogICBwbmdfc2l6ZV90IGN1cnJlbnRfYnVmZmVy
X3NpemU7CiAgIGludCBwcm9jZXNzX21vZGU7CiAgIGludCBjdXJfcGFsZXR0ZTsKCgogICAgIHBu
Z19zaXplX3QgY3VycmVudF90ZXh0X3NpemU7CiAgICAgcG5nX3NpemVfdCBjdXJyZW50X3RleHRf
bGVmdDsKICAgICBwbmdfY2hhcnAgY3VycmVudF90ZXh0OwogICAgIHBuZ19jaGFycCBjdXJyZW50
X3RleHRfcHRyOwojIDExMjcgIi91c3IvaW5jbHVkZS9wbmcuaCIgMwogICBwbmdfYnl0ZXAgcGFs
ZXR0ZV9sb29rdXA7CiAgIHBuZ19ieXRlcCBkaXRoZXJfaW5kZXg7CgoKCiAgIHBuZ191aW50XzE2
cCBoaXN0OwoKCgogICBwbmdfYnl0ZSBoZXVyaXN0aWNfbWV0aG9kOwogICBwbmdfYnl0ZSBudW1f
cHJldl9maWx0ZXJzOwogICBwbmdfYnl0ZXAgcHJldl9maWx0ZXJzOwogICBwbmdfdWludF8xNnAg
ZmlsdGVyX3dlaWdodHM7CiAgIHBuZ191aW50XzE2cCBpbnZfZmlsdGVyX3dlaWdodHM7CiAgIHBu
Z191aW50XzE2cCBmaWx0ZXJfY29zdHM7CiAgIHBuZ191aW50XzE2cCBpbnZfZmlsdGVyX2Nvc3Rz
OwoKCgogICBwbmdfY2hhcnAgdGltZV9idWZmZXI7CgoKCgoKICAgcG5nX3VpbnRfMzIgZnJlZV9t
ZTsKCgoKICAgcG5nX3ZvaWRwIHVzZXJfY2h1bmtfcHRyOwogICBwbmdfdXNlcl9jaHVua19wdHIg
cmVhZF91c2VyX2NodW5rX2ZuOwoKCgogICBpbnQgbnVtX2NodW5rX2xpc3Q7CiAgIHBuZ19ieXRl
cCBjaHVua19saXN0OwoKCgoKICAgcG5nX2J5dGUgcmdiX3RvX2dyYXlfc3RhdHVzOwoKICAgcG5n
X3VpbnRfMTYgcmdiX3RvX2dyYXlfcmVkX2NvZWZmOwogICBwbmdfdWludF8xNiByZ2JfdG9fZ3Jh
eV9ncmVlbl9jb2VmZjsKICAgcG5nX3VpbnRfMTYgcmdiX3RvX2dyYXlfYmx1ZV9jb2VmZjsKCgoK
CgoKCiAgIHBuZ191aW50XzMyIG1uZ19mZWF0dXJlc19wZXJtaXR0ZWQ7CgoKCgogICBwbmdfZml4
ZWRfcG9pbnQgaW50X2dhbW1hOwoKCgoKICAgcG5nX2J5dGUgZmlsdGVyX3R5cGU7CiMgMTE5OSAi
L3Vzci9pbmNsdWRlL3BuZy5oIiAzCiAgIHBuZ19ieXRlIG1teF9iaXRkZXB0aF90aHJlc2hvbGQ7
CiAgIHBuZ191aW50XzMyIG1teF9yb3dieXRlc190aHJlc2hvbGQ7CiAgIHBuZ191aW50XzMyIGFz
bV9mbGFnczsKCgoKCiAgIHBuZ192b2lkcCBtZW1fcHRyOwogICBwbmdfbWFsbG9jX3B0ciBtYWxs
b2NfZm47CiAgIHBuZ19mcmVlX3B0ciBmcmVlX2ZuOwoKCiAgIHBuZ19ieXRlcCBiaWdfcm93X2J1
ZjsKCn07CgoKCgoKdHlwZWRlZiBwbmdfc3RydWN0cCB2ZXJzaW9uXzFfMl8wOwoKdHlwZWRlZiBw
bmdfc3RydWN0ICogKiBwbmdfc3RydWN0cHA7CiMgMTIzMCAiL3Vzci9pbmNsdWRlL3BuZy5oIiAz
CmV4dGVybiBwbmdfdWludF8zMiBwbmdfYWNjZXNzX3ZlcnNpb25fbnVtYmVyICh2b2lkKTsKCgoK
CmV4dGVybiB2b2lkIHBuZ19zZXRfc2lnX2J5dGVzIChwbmdfc3RydWN0cCBwbmdfcHRyLCBpbnQg
bnVtX2J5dGVzKTsKCgoKCgoKCmV4dGVybiBpbnQgcG5nX3NpZ19jbXAgKHBuZ19ieXRlcCBzaWcs
IHBuZ19zaXplX3Qgc3RhcnQsIHBuZ19zaXplX3QgbnVtX3RvX2NoZWNrKTsKCgoKCgpleHRlcm4g
aW50IHBuZ19jaGVja19zaWcgKHBuZ19ieXRlcCBzaWcsIGludCBudW0pOwoKCmV4dGVybiBwbmdf
c3RydWN0cCBwbmdfY3JlYXRlX3JlYWRfc3RydWN0CiAgIChwbmdfY29uc3RfY2hhcnAgdXNlcl9w
bmdfdmVyLCBwbmdfdm9pZHAgZXJyb3JfcHRyLCBwbmdfZXJyb3JfcHRyIGVycm9yX2ZuLCBwbmdf
ZXJyb3JfcHRyIHdhcm5fZm4pOwoKCgpleHRlcm4gcG5nX3N0cnVjdHAgcG5nX2NyZWF0ZV93cml0
ZV9zdHJ1Y3QKICAgKHBuZ19jb25zdF9jaGFycCB1c2VyX3BuZ192ZXIsIHBuZ192b2lkcCBlcnJv
cl9wdHIsIHBuZ19lcnJvcl9wdHIgZXJyb3JfZm4sIHBuZ19lcnJvcl9wdHIgd2Fybl9mbik7CgoK
ZXh0ZXJuIHBuZ191aW50XzMyIHBuZ19nZXRfY29tcHJlc3Npb25fYnVmZmVyX3NpemUKICAgKHBu
Z19zdHJ1Y3RwIHBuZ19wdHIpOwoKZXh0ZXJuIHZvaWQgcG5nX3NldF9jb21wcmVzc2lvbl9idWZm
ZXJfc2l6ZQogICAocG5nX3N0cnVjdHAgcG5nX3B0ciwgcG5nX3VpbnRfMzIgc2l6ZSk7CgoKZXh0
ZXJuIGludCBwbmdfcmVzZXRfenN0cmVhbSAocG5nX3N0cnVjdHAgcG5nX3B0cik7CgoKCmV4dGVy
biBwbmdfc3RydWN0cCBwbmdfY3JlYXRlX3JlYWRfc3RydWN0XzIKICAgKHBuZ19jb25zdF9jaGFy
cCB1c2VyX3BuZ192ZXIsIHBuZ192b2lkcCBlcnJvcl9wdHIsIHBuZ19lcnJvcl9wdHIgZXJyb3Jf
Zm4sIHBuZ19lcnJvcl9wdHIgd2Fybl9mbiwgcG5nX3ZvaWRwIG1lbV9wdHIsIHBuZ19tYWxsb2Nf
cHRyIG1hbGxvY19mbiwgcG5nX2ZyZWVfcHRyIGZyZWVfZm4pOwoKCmV4dGVybiBwbmdfc3RydWN0
cCBwbmdfY3JlYXRlX3dyaXRlX3N0cnVjdF8yCiAgIChwbmdfY29uc3RfY2hhcnAgdXNlcl9wbmdf
dmVyLCBwbmdfdm9pZHAgZXJyb3JfcHRyLCBwbmdfZXJyb3JfcHRyIGVycm9yX2ZuLCBwbmdfZXJy
b3JfcHRyIHdhcm5fZm4sIHBuZ192b2lkcCBtZW1fcHRyLCBwbmdfbWFsbG9jX3B0ciBtYWxsb2Nf
Zm4sIHBuZ19mcmVlX3B0ciBmcmVlX2ZuKTsKCgoKCgpleHRlcm4gdm9pZCBwbmdfd3JpdGVfY2h1
bmsgKHBuZ19zdHJ1Y3RwIHBuZ19wdHIsIHBuZ19ieXRlcCBjaHVua19uYW1lLCBwbmdfYnl0ZXAg
ZGF0YSwgcG5nX3NpemVfdCBsZW5ndGgpOwoKCgpleHRlcm4gdm9pZCBwbmdfd3JpdGVfY2h1bmtf
c3RhcnQgKHBuZ19zdHJ1Y3RwIHBuZ19wdHIsIHBuZ19ieXRlcCBjaHVua19uYW1lLCBwbmdfdWlu
dF8zMiBsZW5ndGgpOwoKCgpleHRlcm4gdm9pZCBwbmdfd3JpdGVfY2h1bmtfZGF0YSAocG5nX3N0
cnVjdHAgcG5nX3B0ciwgcG5nX2J5dGVwIGRhdGEsIHBuZ19zaXplX3QgbGVuZ3RoKTsKCgoKZXh0
ZXJuIHZvaWQgcG5nX3dyaXRlX2NodW5rX2VuZCAocG5nX3N0cnVjdHAgcG5nX3B0cik7CgoKZXh0
ZXJuIHBuZ19pbmZvcCBwbmdfY3JlYXRlX2luZm9fc3RydWN0CiAgIChwbmdfc3RydWN0cCBwbmdf
cHRyKTsKCgpleHRlcm4gdm9pZCBwbmdfaW5mb19pbml0IChwbmdfaW5mb3AgaW5mb19wdHIpOwoK
ZXh0ZXJuIHZvaWQgcG5nX2luZm9faW5pdF8zIChwbmdfaW5mb3BwIGluZm9fcHRyLCBwbmdfc2l6
ZV90IHBuZ19pbmZvX3N0cnVjdF9zaXplKTsKCgoKZXh0ZXJuIHZvaWQgcG5nX3dyaXRlX2luZm9f
YmVmb3JlX1BMVEUgKHBuZ19zdHJ1Y3RwIHBuZ19wdHIsIHBuZ19pbmZvcCBpbmZvX3B0cik7Cgpl
eHRlcm4gdm9pZCBwbmdfd3JpdGVfaW5mbyAocG5nX3N0cnVjdHAgcG5nX3B0ciwgcG5nX2luZm9w
IGluZm9fcHRyKTsKCgoKZXh0ZXJuIHZvaWQgcG5nX3JlYWRfaW5mbyAocG5nX3N0cnVjdHAgcG5n
X3B0ciwgcG5nX2luZm9wIGluZm9fcHRyKTsKCgoKZXh0ZXJuIHBuZ19jaGFycCBwbmdfY29udmVy
dF90b19yZmMxMTIzCiAgIChwbmdfc3RydWN0cCBwbmdfcHRyLCBwbmdfdGltZXAgcHRpbWUpOwoK
CgoKCgpleHRlcm4gdm9pZCBwbmdfY29udmVydF9mcm9tX3N0cnVjdF90bSAocG5nX3RpbWVwIHB0
aW1lLCBzdHJ1Y3QgdG0gKiB0dGltZSk7CgoKCmV4dGVybiB2b2lkIHBuZ19jb252ZXJ0X2Zyb21f
dGltZV90IChwbmdfdGltZXAgcHRpbWUsIHRpbWVfdCB0dGltZSk7CgoKCgoKCmV4dGVybiB2b2lk
IHBuZ19zZXRfZXhwYW5kIChwbmdfc3RydWN0cCBwbmdfcHRyKTsKZXh0ZXJuIHZvaWQgcG5nX3Nl
dF9ncmF5XzFfMl80X3RvXzggKHBuZ19zdHJ1Y3RwIHBuZ19wdHIpOwpleHRlcm4gdm9pZCBwbmdf
c2V0X3BhbGV0dGVfdG9fcmdiIChwbmdfc3RydWN0cCBwbmdfcHRyKTsKZXh0ZXJuIHZvaWQgcG5n
X3NldF90Uk5TX3RvX2FscGhhIChwbmdfc3RydWN0cCBwbmdfcHRyKTsKCgoKCmV4dGVybiB2b2lk
IHBuZ19zZXRfYmdyIChwbmdfc3RydWN0cCBwbmdfcHRyKTsKCgoKCmV4dGVybiB2b2lkIHBuZ19z
ZXRfZ3JheV90b19yZ2IgKHBuZ19zdHJ1Y3RwIHBuZ19wdHIpOwoKCgoKCmV4dGVybiB2b2lkIHBu
Z19zZXRfcmdiX3RvX2dyYXkgKHBuZ19zdHJ1Y3RwIHBuZ19wdHIsIGludCBlcnJvcl9hY3Rpb24s
IGRvdWJsZSByZWQsIGRvdWJsZSBncmVlbiApOwoKCmV4dGVybiB2b2lkIHBuZ19zZXRfcmdiX3Rv
X2dyYXlfZml4ZWQgKHBuZ19zdHJ1Y3RwIHBuZ19wdHIsIGludCBlcnJvcl9hY3Rpb24sIHBuZ19m
aXhlZF9wb2ludCByZWQsIHBuZ19maXhlZF9wb2ludCBncmVlbiApOwoKZXh0ZXJuIHBuZ19ieXRl
IHBuZ19nZXRfcmdiX3RvX2dyYXlfc3RhdHVzIChwbmdfc3RydWN0cCBwbmdfcHRyKTsKCgoKZXh0
ZXJuIHZvaWQgcG5nX2J1aWxkX2dyYXlzY2FsZV9wYWxldHRlIChpbnQgYml0X2RlcHRoLCBwbmdf
Y29sb3JwIHBhbGV0dGUpOwoKCgpleHRlcm4gdm9pZCBwbmdfc2V0X3N0cmlwX2FscGhhIChwbmdf
c3RydWN0cCBwbmdfcHRyKTsKCgoKCmV4dGVybiB2b2lkIHBuZ19zZXRfc3dhcF9hbHBoYSAocG5n
X3N0cnVjdHAgcG5nX3B0cik7CgoKCgpleHRlcm4gdm9pZCBwbmdfc2V0X2ludmVydF9hbHBoYSAo
cG5nX3N0cnVjdHAgcG5nX3B0cik7CgoKCgpleHRlcm4gdm9pZCBwbmdfc2V0X2ZpbGxlciAocG5n
X3N0cnVjdHAgcG5nX3B0ciwgcG5nX3VpbnRfMzIgZmlsbGVyLCBpbnQgZmxhZ3MpOwojIDEzOTMg
Ii91c3IvaW5jbHVkZS9wbmcuaCIgMwpleHRlcm4gdm9pZCBwbmdfc2V0X3N3YXAgKHBuZ19zdHJ1
Y3RwIHBuZ19wdHIpOwoKCgoKZXh0ZXJuIHZvaWQgcG5nX3NldF9wYWNraW5nIChwbmdfc3RydWN0
cCBwbmdfcHRyKTsKCgoKCmV4dGVybiB2b2lkIHBuZ19zZXRfcGFja3N3YXAgKHBuZ19zdHJ1Y3Rw
IHBuZ19wdHIpOwoKCgoKZXh0ZXJuIHZvaWQgcG5nX3NldF9zaGlmdCAocG5nX3N0cnVjdHAgcG5n
X3B0ciwgcG5nX2NvbG9yXzhwIHRydWVfYml0cyk7CgoKCgoKCmV4dGVybiBpbnQgcG5nX3NldF9p
bnRlcmxhY2VfaGFuZGxpbmcgKHBuZ19zdHJ1Y3RwIHBuZ19wdHIpOwoKCgoKZXh0ZXJuIHZvaWQg
cG5nX3NldF9pbnZlcnRfbW9ubyAocG5nX3N0cnVjdHAgcG5nX3B0cik7CgoKCgoKZXh0ZXJuIHZv
aWQgcG5nX3NldF9iYWNrZ3JvdW5kIChwbmdfc3RydWN0cCBwbmdfcHRyLCBwbmdfY29sb3JfMTZw
IGJhY2tncm91bmRfY29sb3IsIGludCBiYWNrZ3JvdW5kX2dhbW1hX2NvZGUsIGludCBuZWVkX2V4
cGFuZCwgZG91YmxlIGJhY2tncm91bmRfZ2FtbWEpOwojIDE0MzggIi91c3IvaW5jbHVkZS9wbmcu
aCIgMwpleHRlcm4gdm9pZCBwbmdfc2V0X3N0cmlwXzE2IChwbmdfc3RydWN0cCBwbmdfcHRyKTsK
CgoKCmV4dGVybiB2b2lkIHBuZ19zZXRfZGl0aGVyIChwbmdfc3RydWN0cCBwbmdfcHRyLCBwbmdf
Y29sb3JwIHBhbGV0dGUsIGludCBudW1fcGFsZXR0ZSwgaW50IG1heGltdW1fY29sb3JzLCBwbmdf
dWludF8xNnAgaGlzdG9ncmFtLCBpbnQgZnVsbF9kaXRoZXIpOwoKCgoKCgoKZXh0ZXJuIHZvaWQg
cG5nX3NldF9nYW1tYSAocG5nX3N0cnVjdHAgcG5nX3B0ciwgZG91YmxlIHNjcmVlbl9nYW1tYSwg
ZG91YmxlIGRlZmF1bHRfZmlsZV9nYW1tYSk7CiMgMTQ2MCAiL3Vzci9pbmNsdWRlL3BuZy5oIiAz
CmV4dGVybiB2b2lkIHBuZ19wZXJtaXRfZW1wdHlfcGx0ZSAocG5nX3N0cnVjdHAgcG5nX3B0ciwg
aW50IGVtcHR5X3BsdGVfcGVybWl0dGVkKTsKCgoKCgpleHRlcm4gdm9pZCBwbmdfc2V0X2ZsdXNo
IChwbmdfc3RydWN0cCBwbmdfcHRyLCBpbnQgbnJvd3MpOwoKZXh0ZXJuIHZvaWQgcG5nX3dyaXRl
X2ZsdXNoIChwbmdfc3RydWN0cCBwbmdfcHRyKTsKCgoKZXh0ZXJuIHZvaWQgcG5nX3N0YXJ0X3Jl
YWRfaW1hZ2UgKHBuZ19zdHJ1Y3RwIHBuZ19wdHIpOwoKCmV4dGVybiB2b2lkIHBuZ19yZWFkX3Vw
ZGF0ZV9pbmZvIChwbmdfc3RydWN0cCBwbmdfcHRyLCBwbmdfaW5mb3AgaW5mb19wdHIpOwoKCgpl
eHRlcm4gdm9pZCBwbmdfcmVhZF9yb3dzIChwbmdfc3RydWN0cCBwbmdfcHRyLCBwbmdfYnl0ZXBw
IHJvdywgcG5nX2J5dGVwcCBkaXNwbGF5X3JvdywgcG5nX3VpbnRfMzIgbnVtX3Jvd3MpOwoKCgpl
eHRlcm4gdm9pZCBwbmdfcmVhZF9yb3cgKHBuZ19zdHJ1Y3RwIHBuZ19wdHIsIHBuZ19ieXRlcCBy
b3csIHBuZ19ieXRlcCBkaXNwbGF5X3Jvdyk7CgoKCgpleHRlcm4gdm9pZCBwbmdfcmVhZF9pbWFn
ZSAocG5nX3N0cnVjdHAgcG5nX3B0ciwgcG5nX2J5dGVwcCBpbWFnZSk7CgoKCmV4dGVybiB2b2lk
IHBuZ193cml0ZV9yb3cgKHBuZ19zdHJ1Y3RwIHBuZ19wdHIsIHBuZ19ieXRlcCByb3cpOwoKCgpl
eHRlcm4gdm9pZCBwbmdfd3JpdGVfcm93cyAocG5nX3N0cnVjdHAgcG5nX3B0ciwgcG5nX2J5dGVw
cCByb3csIHBuZ191aW50XzMyIG51bV9yb3dzKTsKCgoKZXh0ZXJuIHZvaWQgcG5nX3dyaXRlX2lt
YWdlIChwbmdfc3RydWN0cCBwbmdfcHRyLCBwbmdfYnl0ZXBwIGltYWdlKTsKCgoKZXh0ZXJuIHZv
aWQgcG5nX3dyaXRlX2VuZCAocG5nX3N0cnVjdHAgcG5nX3B0ciwgcG5nX2luZm9wIGluZm9fcHRy
KTsKCgoKZXh0ZXJuIHZvaWQgcG5nX3JlYWRfZW5kIChwbmdfc3RydWN0cCBwbmdfcHRyLCBwbmdf
aW5mb3AgaW5mb19wdHIpOwoKCgpleHRlcm4gdm9pZCBwbmdfZGVzdHJveV9pbmZvX3N0cnVjdCAo
cG5nX3N0cnVjdHAgcG5nX3B0ciwgcG5nX2luZm9wcCBpbmZvX3B0cl9wdHIpOwoKCgpleHRlcm4g
dm9pZCBwbmdfZGVzdHJveV9yZWFkX3N0cnVjdCAocG5nX3N0cnVjdHBwIHBuZ19wdHJfcHRyLCBw
bmdfaW5mb3BwIGluZm9fcHRyX3B0ciwgcG5nX2luZm9wcCBlbmRfaW5mb19wdHJfcHRyKTsKCgoK
ZXh0ZXJuIHZvaWQgcG5nX3JlYWRfZGVzdHJveSAocG5nX3N0cnVjdHAgcG5nX3B0ciwgcG5nX2lu
Zm9wIGluZm9fcHRyLCBwbmdfaW5mb3AgZW5kX2luZm9fcHRyKTsKCgoKZXh0ZXJuIHZvaWQgcG5n
X2Rlc3Ryb3lfd3JpdGVfc3RydWN0CiAgIChwbmdfc3RydWN0cHAgcG5nX3B0cl9wdHIsIHBuZ19p
bmZvcHAgaW5mb19wdHJfcHRyKTsKCgpleHRlcm4gdm9pZCBwbmdfd3JpdGVfZGVzdHJveV9pbmZv
IChwbmdfaW5mb3AgaW5mb19wdHIpOwoKCmV4dGVybiB2b2lkIHBuZ193cml0ZV9kZXN0cm95IChw
bmdfc3RydWN0cCBwbmdfcHRyKTsKCgpleHRlcm4gdm9pZCBwbmdfc2V0X2NyY19hY3Rpb24gKHBu
Z19zdHJ1Y3RwIHBuZ19wdHIsIGludCBjcml0X2FjdGlvbiwgaW50IGFuY2lsX2FjdGlvbik7CiMg
MTU2NCAiL3Vzci9pbmNsdWRlL3BuZy5oIiAzCmV4dGVybiB2b2lkIHBuZ19zZXRfZmlsdGVyIChw
bmdfc3RydWN0cCBwbmdfcHRyLCBpbnQgbWV0aG9kLCBpbnQgZmlsdGVycyk7CiMgMTYyMSAiL3Vz
ci9pbmNsdWRlL3BuZy5oIiAzCmV4dGVybiB2b2lkIHBuZ19zZXRfZmlsdGVyX2hldXJpc3RpY3Mg
KHBuZ19zdHJ1Y3RwIHBuZ19wdHIsIGludCBoZXVyaXN0aWNfbWV0aG9kLCBpbnQgbnVtX3dlaWdo
dHMsIHBuZ19kb3VibGVwIGZpbHRlcl93ZWlnaHRzLCBwbmdfZG91YmxlcCBmaWx0ZXJfY29zdHMp
OwojIDE2NDIgIi91c3IvaW5jbHVkZS9wbmcuaCIgMwpleHRlcm4gdm9pZCBwbmdfc2V0X2NvbXBy
ZXNzaW9uX2xldmVsIChwbmdfc3RydWN0cCBwbmdfcHRyLCBpbnQgbGV2ZWwpOwoKCmV4dGVybiB2
b2lkIHBuZ19zZXRfY29tcHJlc3Npb25fbWVtX2xldmVsCiAgIChwbmdfc3RydWN0cCBwbmdfcHRy
LCBpbnQgbWVtX2xldmVsKTsKCmV4dGVybiB2b2lkIHBuZ19zZXRfY29tcHJlc3Npb25fc3RyYXRl
Z3kKICAgKHBuZ19zdHJ1Y3RwIHBuZ19wdHIsIGludCBzdHJhdGVneSk7CgpleHRlcm4gdm9pZCBw
bmdfc2V0X2NvbXByZXNzaW9uX3dpbmRvd19iaXRzCiAgIChwbmdfc3RydWN0cCBwbmdfcHRyLCBp
bnQgd2luZG93X2JpdHMpOwoKZXh0ZXJuIHZvaWQgcG5nX3NldF9jb21wcmVzc2lvbl9tZXRob2Qg
KHBuZ19zdHJ1Y3RwIHBuZ19wdHIsIGludCBtZXRob2QpOwojIDE2NjggIi91c3IvaW5jbHVkZS9w
bmcuaCIgMwpleHRlcm4gdm9pZCBwbmdfaW5pdF9pbyAocG5nX3N0cnVjdHAgcG5nX3B0ciwgcG5n
X0ZJTEVfcCBmcCk7CiMgMTY3OSAiL3Vzci9pbmNsdWRlL3BuZy5oIiAzCmV4dGVybiB2b2lkIHBu
Z19zZXRfZXJyb3JfZm4gKHBuZ19zdHJ1Y3RwIHBuZ19wdHIsIHBuZ192b2lkcCBlcnJvcl9wdHIs
IHBuZ19lcnJvcl9wdHIgZXJyb3JfZm4sIHBuZ19lcnJvcl9wdHIgd2FybmluZ19mbik7CgoKCmV4
dGVybiBwbmdfdm9pZHAgcG5nX2dldF9lcnJvcl9wdHIgKHBuZ19zdHJ1Y3RwIHBuZ19wdHIpOwoK
CgoKCgpleHRlcm4gdm9pZCBwbmdfc2V0X3dyaXRlX2ZuIChwbmdfc3RydWN0cCBwbmdfcHRyLCBw
bmdfdm9pZHAgaW9fcHRyLCBwbmdfcndfcHRyIHdyaXRlX2RhdGFfZm4sIHBuZ19mbHVzaF9wdHIg
b3V0cHV0X2ZsdXNoX2ZuKTsKCgoKZXh0ZXJuIHZvaWQgcG5nX3NldF9yZWFkX2ZuIChwbmdfc3Ry
dWN0cCBwbmdfcHRyLCBwbmdfdm9pZHAgaW9fcHRyLCBwbmdfcndfcHRyIHJlYWRfZGF0YV9mbik7
CgoKCmV4dGVybiBwbmdfdm9pZHAgcG5nX2dldF9pb19wdHIgKHBuZ19zdHJ1Y3RwIHBuZ19wdHIp
OwoKZXh0ZXJuIHZvaWQgcG5nX3NldF9yZWFkX3N0YXR1c19mbiAocG5nX3N0cnVjdHAgcG5nX3B0
ciwgcG5nX3JlYWRfc3RhdHVzX3B0ciByZWFkX3Jvd19mbik7CgoKZXh0ZXJuIHZvaWQgcG5nX3Nl
dF93cml0ZV9zdGF0dXNfZm4gKHBuZ19zdHJ1Y3RwIHBuZ19wdHIsIHBuZ193cml0ZV9zdGF0dXNf
cHRyIHdyaXRlX3Jvd19mbik7CgoKCgpleHRlcm4gdm9pZCBwbmdfc2V0X21lbV9mbiAocG5nX3N0
cnVjdHAgcG5nX3B0ciwgcG5nX3ZvaWRwIG1lbV9wdHIsIHBuZ19tYWxsb2NfcHRyIG1hbGxvY19m
biwgcG5nX2ZyZWVfcHRyIGZyZWVfZm4pOwoKCmV4dGVybiBwbmdfdm9pZHAgcG5nX2dldF9tZW1f
cHRyIChwbmdfc3RydWN0cCBwbmdfcHRyKTsKCgoKCmV4dGVybiB2b2lkIHBuZ19zZXRfcmVhZF91
c2VyX3RyYW5zZm9ybV9mbiAocG5nX3N0cnVjdHAgcG5nX3B0ciwgcG5nX3VzZXJfdHJhbnNmb3Jt
X3B0ciByZWFkX3VzZXJfdHJhbnNmb3JtX2ZuKTsKCgoKCgpleHRlcm4gdm9pZCBwbmdfc2V0X3dy
aXRlX3VzZXJfdHJhbnNmb3JtX2ZuIChwbmdfc3RydWN0cCBwbmdfcHRyLCBwbmdfdXNlcl90cmFu
c2Zvcm1fcHRyIHdyaXRlX3VzZXJfdHJhbnNmb3JtX2ZuKTsKCgoKCgoKZXh0ZXJuIHZvaWQgcG5n
X3NldF91c2VyX3RyYW5zZm9ybV9pbmZvIChwbmdfc3RydWN0cCBwbmdfcHRyLCBwbmdfdm9pZHAg
dXNlcl90cmFuc2Zvcm1fcHRyLCBpbnQgdXNlcl90cmFuc2Zvcm1fZGVwdGgsIGludCB1c2VyX3Ry
YW5zZm9ybV9jaGFubmVscyk7CgoKCmV4dGVybiBwbmdfdm9pZHAgcG5nX2dldF91c2VyX3RyYW5z
Zm9ybV9wdHIKICAgKHBuZ19zdHJ1Y3RwIHBuZ19wdHIpOwoKCgpleHRlcm4gdm9pZCBwbmdfc2V0
X3JlYWRfdXNlcl9jaHVua19mbiAocG5nX3N0cnVjdHAgcG5nX3B0ciwgcG5nX3ZvaWRwIHVzZXJf
Y2h1bmtfcHRyLCBwbmdfdXNlcl9jaHVua19wdHIgcmVhZF91c2VyX2NodW5rX2ZuKTsKCmV4dGVy
biBwbmdfdm9pZHAgcG5nX2dldF91c2VyX2NodW5rX3B0ciAocG5nX3N0cnVjdHAgcG5nX3B0cik7
CgoKCgoKCgpleHRlcm4gdm9pZCBwbmdfc2V0X3Byb2dyZXNzaXZlX3JlYWRfZm4gKHBuZ19zdHJ1
Y3RwIHBuZ19wdHIsIHBuZ192b2lkcCBwcm9ncmVzc2l2ZV9wdHIsIHBuZ19wcm9ncmVzc2l2ZV9p
bmZvX3B0ciBpbmZvX2ZuLCBwbmdfcHJvZ3Jlc3NpdmVfcm93X3B0ciByb3dfZm4sIHBuZ19wcm9n
cmVzc2l2ZV9lbmRfcHRyIGVuZF9mbik7CgoKCgoKZXh0ZXJuIHBuZ192b2lkcCBwbmdfZ2V0X3By
b2dyZXNzaXZlX3B0cgogICAocG5nX3N0cnVjdHAgcG5nX3B0cik7CgoKZXh0ZXJuIHZvaWQgcG5n
X3Byb2Nlc3NfZGF0YSAocG5nX3N0cnVjdHAgcG5nX3B0ciwgcG5nX2luZm9wIGluZm9fcHRyLCBw
bmdfYnl0ZXAgYnVmZmVyLCBwbmdfc2l6ZV90IGJ1ZmZlcl9zaXplKTsKCgoKCgpleHRlcm4gdm9p
ZCBwbmdfcHJvZ3Jlc3NpdmVfY29tYmluZV9yb3cgKHBuZ19zdHJ1Y3RwIHBuZ19wdHIsIHBuZ19i
eXRlcCBvbGRfcm93LCBwbmdfYnl0ZXAgbmV3X3Jvdyk7CgoKCmV4dGVybiBwbmdfdm9pZHAgcG5n
X21hbGxvYyAocG5nX3N0cnVjdHAgcG5nX3B0ciwgcG5nX3VpbnRfMzIgc2l6ZSk7CgoKCmV4dGVy
biB2b2lkIHBuZ19mcmVlIChwbmdfc3RydWN0cCBwbmdfcHRyLCBwbmdfdm9pZHAgcHRyKTsKCgpl
eHRlcm4gdm9pZCBwbmdfZnJlZV9kYXRhIChwbmdfc3RydWN0cCBwbmdfcHRyLCBwbmdfaW5mb3Ag
aW5mb19wdHIsIHBuZ191aW50XzMyIGZyZWVfbWUsIGludCBudW0pOwoKCgoKZXh0ZXJuIHZvaWQg
cG5nX2RhdGFfZnJlZXIgKHBuZ19zdHJ1Y3RwIHBuZ19wdHIsIHBuZ19pbmZvcCBpbmZvX3B0ciwg
aW50IGZyZWVyLCBwbmdfdWludF8zMiBtYXNrKTsKIyAxODAzICIvdXNyL2luY2x1ZGUvcG5nLmgi
IDMKZXh0ZXJuIHBuZ192b2lkcCBwbmdfbWFsbG9jX2RlZmF1bHQgKHBuZ19zdHJ1Y3RwIHBuZ19w
dHIsIHBuZ191aW50XzMyIHNpemUpOwoKZXh0ZXJuIHZvaWQgcG5nX2ZyZWVfZGVmYXVsdCAocG5n
X3N0cnVjdHAgcG5nX3B0ciwgcG5nX3ZvaWRwIHB0cik7CgoKCmV4dGVybiBwbmdfdm9pZHAgcG5n
X21lbWNweV9jaGVjayAocG5nX3N0cnVjdHAgcG5nX3B0ciwgcG5nX3ZvaWRwIHMxLCBwbmdfdm9p
ZHAgczIsIHBuZ191aW50XzMyIHNpemUpOwoKCmV4dGVybiBwbmdfdm9pZHAgcG5nX21lbXNldF9j
aGVjayAocG5nX3N0cnVjdHAgcG5nX3B0ciwgcG5nX3ZvaWRwIHMxLCBpbnQgdmFsdWUsIHBuZ191
aW50XzMyIHNpemUpOwojIDE4MjEgIi91c3IvaW5jbHVkZS9wbmcuaCIgMwpleHRlcm4gdm9pZCBw
bmdfZXJyb3IgKHBuZ19zdHJ1Y3RwIHBuZ19wdHIsIHBuZ19jb25zdF9jaGFycCBlcnJvcik7CgoK
CmV4dGVybiB2b2lkIHBuZ19jaHVua19lcnJvciAocG5nX3N0cnVjdHAgcG5nX3B0ciwgcG5nX2Nv
bnN0X2NoYXJwIGVycm9yKTsKCgoKZXh0ZXJuIHZvaWQgcG5nX3dhcm5pbmcgKHBuZ19zdHJ1Y3Rw
IHBuZ19wdHIsIHBuZ19jb25zdF9jaGFycCBtZXNzYWdlKTsKCgoKZXh0ZXJuIHZvaWQgcG5nX2No
dW5rX3dhcm5pbmcgKHBuZ19zdHJ1Y3RwIHBuZ19wdHIsIHBuZ19jb25zdF9jaGFycCBtZXNzYWdl
KTsKIyAxODQ5ICIvdXNyL2luY2x1ZGUvcG5nLmgiIDMKZXh0ZXJuIHBuZ191aW50XzMyIHBuZ19n
ZXRfdmFsaWQgKHBuZ19zdHJ1Y3RwIHBuZ19wdHIsIHBuZ19pbmZvcCBpbmZvX3B0ciwgcG5nX3Vp
bnRfMzIgZmxhZyk7CgoKCmV4dGVybiBwbmdfdWludF8zMiBwbmdfZ2V0X3Jvd2J5dGVzIChwbmdf
c3RydWN0cCBwbmdfcHRyLCBwbmdfaW5mb3AgaW5mb19wdHIpOwoKCgoKCmV4dGVybiBwbmdfYnl0
ZXBwIHBuZ19nZXRfcm93cyAocG5nX3N0cnVjdHAgcG5nX3B0ciwgcG5nX2luZm9wIGluZm9fcHRy
KTsKCgoKZXh0ZXJuIHZvaWQgcG5nX3NldF9yb3dzIChwbmdfc3RydWN0cCBwbmdfcHRyLCBwbmdf
aW5mb3AgaW5mb19wdHIsIHBuZ19ieXRlcHAgcm93X3BvaW50ZXJzKTsKCgoKCmV4dGVybiBwbmdf
Ynl0ZSBwbmdfZ2V0X2NoYW5uZWxzIChwbmdfc3RydWN0cCBwbmdfcHRyLCBwbmdfaW5mb3AgaW5m
b19wdHIpOwoKCgoKZXh0ZXJuIHBuZ191aW50XzMyIHBuZ19nZXRfaW1hZ2Vfd2lkdGggKHBuZ19z
dHJ1Y3RwIHBuZ19wdHIsIHBuZ19pbmZvcCBpbmZvX3B0cik7CgoKCmV4dGVybiBwbmdfdWludF8z
MiBwbmdfZ2V0X2ltYWdlX2hlaWdodCAocG5nX3N0cnVjdHAgcG5nX3B0ciwgcG5nX2luZm9wIGlu
Zm9fcHRyKTsKCgoKZXh0ZXJuIHBuZ19ieXRlIHBuZ19nZXRfYml0X2RlcHRoIChwbmdfc3RydWN0
cCBwbmdfcHRyLCBwbmdfaW5mb3AgaW5mb19wdHIpOwoKCgpleHRlcm4gcG5nX2J5dGUgcG5nX2dl
dF9jb2xvcl90eXBlIChwbmdfc3RydWN0cCBwbmdfcHRyLCBwbmdfaW5mb3AgaW5mb19wdHIpOwoK
CgpleHRlcm4gcG5nX2J5dGUgcG5nX2dldF9maWx0ZXJfdHlwZSAocG5nX3N0cnVjdHAgcG5nX3B0
ciwgcG5nX2luZm9wIGluZm9fcHRyKTsKCgoKZXh0ZXJuIHBuZ19ieXRlIHBuZ19nZXRfaW50ZXJs
YWNlX3R5cGUgKHBuZ19zdHJ1Y3RwIHBuZ19wdHIsIHBuZ19pbmZvcCBpbmZvX3B0cik7CgoKCmV4
dGVybiBwbmdfYnl0ZSBwbmdfZ2V0X2NvbXByZXNzaW9uX3R5cGUgKHBuZ19zdHJ1Y3RwIHBuZ19w
dHIsIHBuZ19pbmZvcCBpbmZvX3B0cik7CgoKCmV4dGVybiBwbmdfdWludF8zMiBwbmdfZ2V0X3Bp
eGVsc19wZXJfbWV0ZXIgKHBuZ19zdHJ1Y3RwIHBuZ19wdHIsIHBuZ19pbmZvcCBpbmZvX3B0cik7
CgpleHRlcm4gcG5nX3VpbnRfMzIgcG5nX2dldF94X3BpeGVsc19wZXJfbWV0ZXIgKHBuZ19zdHJ1
Y3RwIHBuZ19wdHIsIHBuZ19pbmZvcCBpbmZvX3B0cik7CgpleHRlcm4gcG5nX3VpbnRfMzIgcG5n
X2dldF95X3BpeGVsc19wZXJfbWV0ZXIgKHBuZ19zdHJ1Y3RwIHBuZ19wdHIsIHBuZ19pbmZvcCBp
bmZvX3B0cik7CgoKCgpleHRlcm4gZmxvYXQgcG5nX2dldF9waXhlbF9hc3BlY3RfcmF0aW8gKHBu
Z19zdHJ1Y3RwIHBuZ19wdHIsIHBuZ19pbmZvcCBpbmZvX3B0cik7CgoKCgpleHRlcm4gcG5nX2lu
dF8zMiBwbmdfZ2V0X3hfb2Zmc2V0X3BpeGVscyAocG5nX3N0cnVjdHAgcG5nX3B0ciwgcG5nX2lu
Zm9wIGluZm9fcHRyKTsKCmV4dGVybiBwbmdfaW50XzMyIHBuZ19nZXRfeV9vZmZzZXRfcGl4ZWxz
IChwbmdfc3RydWN0cCBwbmdfcHRyLCBwbmdfaW5mb3AgaW5mb19wdHIpOwoKZXh0ZXJuIHBuZ19p
bnRfMzIgcG5nX2dldF94X29mZnNldF9taWNyb25zIChwbmdfc3RydWN0cCBwbmdfcHRyLCBwbmdf
aW5mb3AgaW5mb19wdHIpOwoKZXh0ZXJuIHBuZ19pbnRfMzIgcG5nX2dldF95X29mZnNldF9taWNy
b25zIChwbmdfc3RydWN0cCBwbmdfcHRyLCBwbmdfaW5mb3AgaW5mb19wdHIpOwoKCgoKCmV4dGVy
biBwbmdfYnl0ZXAgcG5nX2dldF9zaWduYXR1cmUgKHBuZ19zdHJ1Y3RwIHBuZ19wdHIsIHBuZ19p
bmZvcCBpbmZvX3B0cik7CgoKCmV4dGVybiBwbmdfdWludF8zMiBwbmdfZ2V0X2JLR0QgKHBuZ19z
dHJ1Y3RwIHBuZ19wdHIsIHBuZ19pbmZvcCBpbmZvX3B0ciwgcG5nX2NvbG9yXzE2cCAqYmFja2dy
b3VuZCk7CgoKCgpleHRlcm4gdm9pZCBwbmdfc2V0X2JLR0QgKHBuZ19zdHJ1Y3RwIHBuZ19wdHIs
IHBuZ19pbmZvcCBpbmZvX3B0ciwgcG5nX2NvbG9yXzE2cCBiYWNrZ3JvdW5kKTsKCgoKCgpleHRl
cm4gcG5nX3VpbnRfMzIgcG5nX2dldF9jSFJNIChwbmdfc3RydWN0cCBwbmdfcHRyLCBwbmdfaW5m
b3AgaW5mb19wdHIsIGRvdWJsZSAqd2hpdGVfeCwgZG91YmxlICp3aGl0ZV95LCBkb3VibGUgKnJl
ZF94LCBkb3VibGUgKnJlZF95LCBkb3VibGUgKmdyZWVuX3gsIGRvdWJsZSAqZ3JlZW5feSwgZG91
YmxlICpibHVlX3gsIGRvdWJsZSAqYmx1ZV95KTsKCgoKCgpleHRlcm4gcG5nX3VpbnRfMzIgcG5n
X2dldF9jSFJNX2ZpeGVkIChwbmdfc3RydWN0cCBwbmdfcHRyLCBwbmdfaW5mb3AgaW5mb19wdHIs
IHBuZ19maXhlZF9wb2ludCAqaW50X3doaXRlX3gsIHBuZ19maXhlZF9wb2ludCAqaW50X3doaXRl
X3ksIHBuZ19maXhlZF9wb2ludCAqaW50X3JlZF94LCBwbmdfZml4ZWRfcG9pbnQgKmludF9yZWRf
eSwgcG5nX2ZpeGVkX3BvaW50ICppbnRfZ3JlZW5feCwgcG5nX2ZpeGVkX3BvaW50ICppbnRfZ3Jl
ZW5feSwgcG5nX2ZpeGVkX3BvaW50ICppbnRfYmx1ZV94LCBwbmdfZml4ZWRfcG9pbnQgKmludF9i
bHVlX3kpOwojIDE5NTggIi91c3IvaW5jbHVkZS9wbmcuaCIgMwpleHRlcm4gdm9pZCBwbmdfc2V0
X2NIUk0gKHBuZ19zdHJ1Y3RwIHBuZ19wdHIsIHBuZ19pbmZvcCBpbmZvX3B0ciwgZG91YmxlIHdo
aXRlX3gsIGRvdWJsZSB3aGl0ZV95LCBkb3VibGUgcmVkX3gsIGRvdWJsZSByZWRfeSwgZG91Ymxl
IGdyZWVuX3gsIGRvdWJsZSBncmVlbl95LCBkb3VibGUgYmx1ZV94LCBkb3VibGUgYmx1ZV95KTsK
CgoKCmV4dGVybiB2b2lkIHBuZ19zZXRfY0hSTV9maXhlZCAocG5nX3N0cnVjdHAgcG5nX3B0ciwg
cG5nX2luZm9wIGluZm9fcHRyLCBwbmdfZml4ZWRfcG9pbnQgaW50X3doaXRlX3gsIHBuZ19maXhl
ZF9wb2ludCBpbnRfd2hpdGVfeSwgcG5nX2ZpeGVkX3BvaW50IGludF9yZWRfeCwgcG5nX2ZpeGVk
X3BvaW50IGludF9yZWRfeSwgcG5nX2ZpeGVkX3BvaW50IGludF9ncmVlbl94LCBwbmdfZml4ZWRf
cG9pbnQgaW50X2dyZWVuX3ksIHBuZ19maXhlZF9wb2ludCBpbnRfYmx1ZV94LCBwbmdfZml4ZWRf
cG9pbnQgaW50X2JsdWVfeSk7CiMgMTk3MyAiL3Vzci9pbmNsdWRlL3BuZy5oIiAzCmV4dGVybiBw
bmdfdWludF8zMiBwbmdfZ2V0X2dBTUEgKHBuZ19zdHJ1Y3RwIHBuZ19wdHIsIHBuZ19pbmZvcCBp
bmZvX3B0ciwgZG91YmxlICpmaWxlX2dhbW1hKTsKCgpleHRlcm4gcG5nX3VpbnRfMzIgcG5nX2dl
dF9nQU1BX2ZpeGVkIChwbmdfc3RydWN0cCBwbmdfcHRyLCBwbmdfaW5mb3AgaW5mb19wdHIsIHBu
Z19maXhlZF9wb2ludCAqaW50X2ZpbGVfZ2FtbWEpOwoKCgoKCmV4dGVybiB2b2lkIHBuZ19zZXRf
Z0FNQSAocG5nX3N0cnVjdHAgcG5nX3B0ciwgcG5nX2luZm9wIGluZm9fcHRyLCBkb3VibGUgZmls
ZV9nYW1tYSk7CgoKZXh0ZXJuIHZvaWQgcG5nX3NldF9nQU1BX2ZpeGVkIChwbmdfc3RydWN0cCBw
bmdfcHRyLCBwbmdfaW5mb3AgaW5mb19wdHIsIHBuZ19maXhlZF9wb2ludCBpbnRfZmlsZV9nYW1t
YSk7CgoKCgpleHRlcm4gcG5nX3VpbnRfMzIgcG5nX2dldF9oSVNUIChwbmdfc3RydWN0cCBwbmdf
cHRyLCBwbmdfaW5mb3AgaW5mb19wdHIsIHBuZ191aW50XzE2cCAqaGlzdCk7CgoKCgpleHRlcm4g
dm9pZCBwbmdfc2V0X2hJU1QgKHBuZ19zdHJ1Y3RwIHBuZ19wdHIsIHBuZ19pbmZvcCBpbmZvX3B0
ciwgcG5nX3VpbnRfMTZwIGhpc3QpOwoKCgpleHRlcm4gcG5nX3VpbnRfMzIgcG5nX2dldF9JSERS
IChwbmdfc3RydWN0cCBwbmdfcHRyLCBwbmdfaW5mb3AgaW5mb19wdHIsIHBuZ191aW50XzMyICp3
aWR0aCwgcG5nX3VpbnRfMzIgKmhlaWdodCwgaW50ICpiaXRfZGVwdGgsIGludCAqY29sb3JfdHlw
ZSwgaW50ICppbnRlcmxhY2VfbWV0aG9kLCBpbnQgKmNvbXByZXNzaW9uX21ldGhvZCwgaW50ICpm
aWx0ZXJfbWV0aG9kKTsKCgoKCmV4dGVybiB2b2lkIHBuZ19zZXRfSUhEUiAocG5nX3N0cnVjdHAg
cG5nX3B0ciwgcG5nX2luZm9wIGluZm9fcHRyLCBwbmdfdWludF8zMiB3aWR0aCwgcG5nX3VpbnRf
MzIgaGVpZ2h0LCBpbnQgYml0X2RlcHRoLCBpbnQgY29sb3JfdHlwZSwgaW50IGludGVybGFjZV9t
ZXRob2QsIGludCBjb21wcmVzc2lvbl9tZXRob2QsIGludCBmaWx0ZXJfbWV0aG9kKTsKCgoKCgpl
eHRlcm4gcG5nX3VpbnRfMzIgcG5nX2dldF9vRkZzIChwbmdfc3RydWN0cCBwbmdfcHRyLCBwbmdf
aW5mb3AgaW5mb19wdHIsIHBuZ19pbnRfMzIgKm9mZnNldF94LCBwbmdfaW50XzMyICpvZmZzZXRf
eSwgaW50ICp1bml0X3R5cGUpOwoKCgoKCmV4dGVybiB2b2lkIHBuZ19zZXRfb0ZGcyAocG5nX3N0
cnVjdHAgcG5nX3B0ciwgcG5nX2luZm9wIGluZm9fcHRyLCBwbmdfaW50XzMyIG9mZnNldF94LCBw
bmdfaW50XzMyIG9mZnNldF95LCBpbnQgdW5pdF90eXBlKTsKCgoKCgpleHRlcm4gcG5nX3VpbnRf
MzIgcG5nX2dldF9wQ0FMIChwbmdfc3RydWN0cCBwbmdfcHRyLCBwbmdfaW5mb3AgaW5mb19wdHIs
IHBuZ19jaGFycCAqcHVycG9zZSwgcG5nX2ludF8zMiAqWDAsIHBuZ19pbnRfMzIgKlgxLCBpbnQg
KnR5cGUsIGludCAqbnBhcmFtcywgcG5nX2NoYXJwICp1bml0cywgcG5nX2NoYXJwcCAqcGFyYW1z
KTsKCgoKCgpleHRlcm4gdm9pZCBwbmdfc2V0X3BDQUwgKHBuZ19zdHJ1Y3RwIHBuZ19wdHIsIHBu
Z19pbmZvcCBpbmZvX3B0ciwgcG5nX2NoYXJwIHB1cnBvc2UsIHBuZ19pbnRfMzIgWDAsIHBuZ19p
bnRfMzIgWDEsIGludCB0eXBlLCBpbnQgbnBhcmFtcywgcG5nX2NoYXJwIHVuaXRzLCBwbmdfY2hh
cnBwIHBhcmFtcyk7CgoKCgoKZXh0ZXJuIHBuZ191aW50XzMyIHBuZ19nZXRfcEhZcyAocG5nX3N0
cnVjdHAgcG5nX3B0ciwgcG5nX2luZm9wIGluZm9fcHRyLCBwbmdfdWludF8zMiAqcmVzX3gsIHBu
Z191aW50XzMyICpyZXNfeSwgaW50ICp1bml0X3R5cGUpOwoKCgoKZXh0ZXJuIHZvaWQgcG5nX3Nl
dF9wSFlzIChwbmdfc3RydWN0cCBwbmdfcHRyLCBwbmdfaW5mb3AgaW5mb19wdHIsIHBuZ191aW50
XzMyIHJlc194LCBwbmdfdWludF8zMiByZXNfeSwgaW50IHVuaXRfdHlwZSk7CgoKCmV4dGVybiBw
bmdfdWludF8zMiBwbmdfZ2V0X1BMVEUgKHBuZ19zdHJ1Y3RwIHBuZ19wdHIsIHBuZ19pbmZvcCBp
bmZvX3B0ciwgcG5nX2NvbG9ycCAqcGFsZXR0ZSwgaW50ICpudW1fcGFsZXR0ZSk7CgoKZXh0ZXJu
IHZvaWQgcG5nX3NldF9QTFRFIChwbmdfc3RydWN0cCBwbmdfcHRyLCBwbmdfaW5mb3AgaW5mb19w
dHIsIHBuZ19jb2xvcnAgcGFsZXR0ZSwgaW50IG51bV9wYWxldHRlKTsKCgoKZXh0ZXJuIHBuZ191
aW50XzMyIHBuZ19nZXRfc0JJVCAocG5nX3N0cnVjdHAgcG5nX3B0ciwgcG5nX2luZm9wIGluZm9f
cHRyLCBwbmdfY29sb3JfOHAgKnNpZ19iaXQpOwoKCgoKZXh0ZXJuIHZvaWQgcG5nX3NldF9zQklU
IChwbmdfc3RydWN0cCBwbmdfcHRyLCBwbmdfaW5mb3AgaW5mb19wdHIsIHBuZ19jb2xvcl84cCBz
aWdfYml0KTsKCgoKCmV4dGVybiBwbmdfdWludF8zMiBwbmdfZ2V0X3NSR0IgKHBuZ19zdHJ1Y3Rw
IHBuZ19wdHIsIHBuZ19pbmZvcCBpbmZvX3B0ciwgaW50ICppbnRlbnQpOwoKCgoKZXh0ZXJuIHZv
aWQgcG5nX3NldF9zUkdCIChwbmdfc3RydWN0cCBwbmdfcHRyLCBwbmdfaW5mb3AgaW5mb19wdHIs
IGludCBpbnRlbnQpOwoKZXh0ZXJuIHZvaWQgcG5nX3NldF9zUkdCX2dBTUFfYW5kX2NIUk0gKHBu
Z19zdHJ1Y3RwIHBuZ19wdHIsIHBuZ19pbmZvcCBpbmZvX3B0ciwgaW50IGludGVudCk7CgoKCgpl
eHRlcm4gcG5nX3VpbnRfMzIgcG5nX2dldF9pQ0NQIChwbmdfc3RydWN0cCBwbmdfcHRyLCBwbmdf
aW5mb3AgaW5mb19wdHIsIHBuZ19jaGFycHAgbmFtZSwgaW50ICpjb21wcmVzc2lvbl90eXBlLCBw
bmdfY2hhcnBwIHByb2ZpbGUsIHBuZ191aW50XzMyICpwcm9mbGVuKTsKCgoKCgoKZXh0ZXJuIHZv
aWQgcG5nX3NldF9pQ0NQIChwbmdfc3RydWN0cCBwbmdfcHRyLCBwbmdfaW5mb3AgaW5mb19wdHIs
IHBuZ19jaGFycCBuYW1lLCBpbnQgY29tcHJlc3Npb25fdHlwZSwgcG5nX2NoYXJwIHByb2ZpbGUs
IHBuZ191aW50XzMyIHByb2ZsZW4pOwoKCgoKCgpleHRlcm4gcG5nX3VpbnRfMzIgcG5nX2dldF9z
UExUIChwbmdfc3RydWN0cCBwbmdfcHRyLCBwbmdfaW5mb3AgaW5mb19wdHIsIHBuZ19zUExUX3Rw
cCBlbnRyaWVzKTsKCgoKCmV4dGVybiB2b2lkIHBuZ19zZXRfc1BMVCAocG5nX3N0cnVjdHAgcG5n
X3B0ciwgcG5nX2luZm9wIGluZm9fcHRyLCBwbmdfc1BMVF90cCBlbnRyaWVzLCBpbnQgbmVudHJp
ZXMpOwoKCgoKCmV4dGVybiBwbmdfdWludF8zMiBwbmdfZ2V0X3RleHQgKHBuZ19zdHJ1Y3RwIHBu
Z19wdHIsIHBuZ19pbmZvcCBpbmZvX3B0ciwgcG5nX3RleHRwICp0ZXh0X3B0ciwgaW50ICpudW1f
dGV4dCk7CiMgMjExMCAiL3Vzci9pbmNsdWRlL3BuZy5oIiAzCmV4dGVybiB2b2lkIHBuZ19zZXRf
dGV4dCAocG5nX3N0cnVjdHAgcG5nX3B0ciwgcG5nX2luZm9wIGluZm9fcHRyLCBwbmdfdGV4dHAg
dGV4dF9wdHIsIGludCBudW1fdGV4dCk7CgoKCgpleHRlcm4gcG5nX3VpbnRfMzIgcG5nX2dldF90
SU1FIChwbmdfc3RydWN0cCBwbmdfcHRyLCBwbmdfaW5mb3AgaW5mb19wdHIsIHBuZ190aW1lcCAq
bW9kX3RpbWUpOwoKCgoKZXh0ZXJuIHZvaWQgcG5nX3NldF90SU1FIChwbmdfc3RydWN0cCBwbmdf
cHRyLCBwbmdfaW5mb3AgaW5mb19wdHIsIHBuZ190aW1lcCBtb2RfdGltZSk7CgoKCgpleHRlcm4g
cG5nX3VpbnRfMzIgcG5nX2dldF90Uk5TIChwbmdfc3RydWN0cCBwbmdfcHRyLCBwbmdfaW5mb3Ag
aW5mb19wdHIsIHBuZ19ieXRlcCAqdHJhbnMsIGludCAqbnVtX3RyYW5zLCBwbmdfY29sb3JfMTZw
ICp0cmFuc192YWx1ZXMpOwoKCgoKCmV4dGVybiB2b2lkIHBuZ19zZXRfdFJOUyAocG5nX3N0cnVj
dHAgcG5nX3B0ciwgcG5nX2luZm9wIGluZm9fcHRyLCBwbmdfYnl0ZXAgdHJhbnMsIGludCBudW1f
dHJhbnMsIHBuZ19jb2xvcl8xNnAgdHJhbnNfdmFsdWVzKTsKIyAyMTQxICIvdXNyL2luY2x1ZGUv
cG5nLmgiIDMKZXh0ZXJuIHBuZ191aW50XzMyIHBuZ19nZXRfc0NBTCAocG5nX3N0cnVjdHAgcG5n
X3B0ciwgcG5nX2luZm9wIGluZm9fcHRyLCBpbnQgKnVuaXQsIGRvdWJsZSAqd2lkdGgsIGRvdWJs
ZSAqaGVpZ2h0KTsKIyAyMTUzICIvdXNyL2luY2x1ZGUvcG5nLmgiIDMKZXh0ZXJuIHZvaWQgcG5n
X3NldF9zQ0FMIChwbmdfc3RydWN0cCBwbmdfcHRyLCBwbmdfaW5mb3AgaW5mb19wdHIsIGludCB1
bml0LCBkb3VibGUgd2lkdGgsIGRvdWJsZSBoZWlnaHQpOwoKCgpleHRlcm4gdm9pZCBwbmdfc2V0
X3NDQUxfcyAocG5nX3N0cnVjdHAgcG5nX3B0ciwgcG5nX2luZm9wIGluZm9fcHRyLCBpbnQgdW5p
dCwgcG5nX2NoYXJwIHN3aWR0aCwgcG5nX2NoYXJwIHNoZWlnaHQpOwojIDIxNzIgIi91c3IvaW5j
bHVkZS9wbmcuaCIgMwpleHRlcm4gdm9pZCBwbmdfc2V0X2tlZXBfdW5rbm93bl9jaHVua3MgKHBu
Z19zdHJ1Y3RwIHBuZ19wdHIsIGludCBrZWVwLCBwbmdfYnl0ZXAgY2h1bmtfbGlzdCwgaW50IG51
bV9jaHVua3MpOwoKZXh0ZXJuIHZvaWQgcG5nX3NldF91bmtub3duX2NodW5rcyAocG5nX3N0cnVj
dHAgcG5nX3B0ciwgcG5nX2luZm9wIGluZm9fcHRyLCBwbmdfdW5rbm93bl9jaHVua3AgdW5rbm93
bnMsIGludCBudW1fdW5rbm93bnMpOwoKZXh0ZXJuIHZvaWQgcG5nX3NldF91bmtub3duX2NodW5r
X2xvY2F0aW9uCiAgIChwbmdfc3RydWN0cCBwbmdfcHRyLCBwbmdfaW5mb3AgaW5mb19wdHIsIGlu
dCBjaHVuaywgaW50IGxvY2F0aW9uKTsKZXh0ZXJuIHBuZ191aW50XzMyIHBuZ19nZXRfdW5rbm93
bl9jaHVua3MgKHBuZ19zdHJ1Y3RwIHBuZ19wdHIsIHBuZ19pbmZvcCBpbmZvX3B0ciwgcG5nX3Vu
a25vd25fY2h1bmtwcCBlbnRyaWVzKTsKCgoKCgoKZXh0ZXJuIHZvaWQgcG5nX3NldF9pbnZhbGlk
IChwbmdfc3RydWN0cCBwbmdfcHRyLCBwbmdfaW5mb3AgaW5mb19wdHIsIGludCBtYXNrKTsKCgoK
CmV4dGVybiB2b2lkIHBuZ19yZWFkX3BuZyAocG5nX3N0cnVjdHAgcG5nX3B0ciwgcG5nX2luZm9w
IGluZm9fcHRyLCBpbnQgdHJhbnNmb3JtcywgcG5nX3ZvaWRwIHBhcmFtcyk7CgoKCmV4dGVybiB2
b2lkIHBuZ193cml0ZV9wbmcgKHBuZ19zdHJ1Y3RwIHBuZ19wdHIsIHBuZ19pbmZvcCBpbmZvX3B0
ciwgaW50IHRyYW5zZm9ybXMsIHBuZ192b2lkcCBwYXJhbXMpOwojIDIyNTEgIi91c3IvaW5jbHVk
ZS9wbmcuaCIgMwpleHRlcm4gcG5nX2J5dGVwIHBuZ19zaWdfYnl0ZXMgKHZvaWQpOwoKZXh0ZXJu
IHBuZ19jaGFycCBwbmdfZ2V0X2NvcHlyaWdodCAocG5nX3N0cnVjdHAgcG5nX3B0cik7CmV4dGVy
biBwbmdfY2hhcnAgcG5nX2dldF9oZWFkZXJfdmVyIChwbmdfc3RydWN0cCBwbmdfcHRyKTsKZXh0
ZXJuIHBuZ19jaGFycCBwbmdfZ2V0X2hlYWRlcl92ZXJzaW9uIChwbmdfc3RydWN0cCBwbmdfcHRy
KTsKZXh0ZXJuIHBuZ19jaGFycCBwbmdfZ2V0X2xpYnBuZ192ZXIgKHBuZ19zdHJ1Y3RwIHBuZ19w
dHIpOwoKCmV4dGVybiBwbmdfdWludF8zMiBwbmdfcGVybWl0X21uZ19mZWF0dXJlcyAocG5nX3N0
cnVjdHAgcG5nX3B0ciwgcG5nX3VpbnRfMzIgbW5nX2ZlYXR1cmVzX3Blcm1pdHRlZCk7CiMgMjI5
MyAiL3Vzci9pbmNsdWRlL3BuZy5oIiAzCmV4dGVybiBwbmdfdWludF8zMiBwbmdfZ2V0X21teF9m
bGFnbWFzawogICAoaW50IGZsYWdfc2VsZWN0LCBpbnQgKmNvbXBpbGVySUQpOwoKCmV4dGVybiBw
bmdfdWludF8zMiBwbmdfZ2V0X2FzbV9mbGFnbWFzawogICAoaW50IGZsYWdfc2VsZWN0KTsKCgpl
eHRlcm4gcG5nX3VpbnRfMzIgcG5nX2dldF9hc21fZmxhZ3MKICAgKHBuZ19zdHJ1Y3RwIHBuZ19w
dHIpOwoKCmV4dGVybiBwbmdfYnl0ZSBwbmdfZ2V0X21teF9iaXRkZXB0aF90aHJlc2hvbGQKICAg
KHBuZ19zdHJ1Y3RwIHBuZ19wdHIpOwoKCmV4dGVybiBwbmdfdWludF8zMiBwbmdfZ2V0X21teF9y
b3dieXRlc190aHJlc2hvbGQKICAgKHBuZ19zdHJ1Y3RwIHBuZ19wdHIpOwoKCmV4dGVybiB2b2lk
IHBuZ19zZXRfYXNtX2ZsYWdzCiAgIChwbmdfc3RydWN0cCBwbmdfcHRyLCBwbmdfdWludF8zMiBh
c21fZmxhZ3MpOwoKCmV4dGVybiB2b2lkIHBuZ19zZXRfbW14X3RocmVzaG9sZHMKICAgKHBuZ19z
dHJ1Y3RwIHBuZ19wdHIsIHBuZ19ieXRlIG1teF9iaXRkZXB0aF90aHJlc2hvbGQsIHBuZ191aW50
XzMyIG1teF9yb3dieXRlc190aHJlc2hvbGQpOwoKCgoKCmV4dGVybiBpbnQgcG5nX21teF9zdXBw
b3J0ICh2b2lkKTsKCgoKCmV4dGVybiB2b2lkIHBuZ19zZXRfc3RyaXBfZXJyb3JfbnVtYmVycyAo
cG5nX3N0cnVjdHAgcG5nX3B0ciwgcG5nX3VpbnRfMzIgc3RyaXBfbW9kZSk7CiMgOTMgInRlcm0v
cG5nLnRybSIgMgojIDEwMSAidGVybS9wbmcudHJtIgpzdGF0aWMgaW50IHBuZ19mb250ID0gMTsK
c3RhdGljIGludCBwbmdfbW9kZSA9IDA7CgoKc3RhdGljIGludCBwbmdfZ3JheVtdID0geyA3LCAx
LCA2LCA1LCA0LCAzLCAyLCAxLCA3IH07CgpzdGF0aWMgaW50IHBuZ19jb2xvcl90YWJsZVtdID17
IDE1LCA4LCAzLCA1LCA2LCA0LCAyLCAxLCAxMSwgMTMsIDE0IH07CnN0YXRpYyBwbmdfY29sb3Ig
cG5nX3BhbGV0dGVbMTZdOwoKc3RhdGljIHZvaWQKUE5HX29wdGlvbnMoKQp7CiAgICBwbmdfZm9u
dCA9IDE7CiAgICBwbmdfbW9kZSA9IDA7CgogICAgdGVybV9vcHRpb25zWzBdID0gKCdcMCcpOwoK
ICAgIHdoaWxlICghKGNfdG9rZW4gPj0gbnVtX3Rva2VucyB8fCBlcXVhbHMoY190b2tlbiwiOyIp
KSkgewogICAgICAgIGlmIChhbG1vc3RfZXF1YWxzKGNfdG9rZW4sICJzJG1hbGwiKSkKICAgICAg
ICAgICAgcG5nX2ZvbnQgPSAxOwogICAgICAgIGVsc2UgaWYgKGFsbW9zdF9lcXVhbHMoY190b2tl
biwgIm1lJGRpdW0iKSkKICAgICAgICAgICAgcG5nX2ZvbnQgPSAyOwogICAgICAgIGVsc2UgaWYg
KGFsbW9zdF9lcXVhbHMoY190b2tlbiwgImwkYXJnZSIpKQogICAgICAgICAgICBwbmdfZm9udCA9
IDM7CiAgICAgICAgZWxzZSBpZiAoYWxtb3N0X2VxdWFscyhjX3Rva2VuLCAibW8kbm9jaHJvbWUi
KSkKICAgICAgICAgICAgcG5nX21vZGUgPSAwOwogICAgICAgIGVsc2UgaWYgKGFsbW9zdF9lcXVh
bHMoY190b2tlbiwgImckcmF5IikpCiAgICAgICAgICAgIHBuZ19tb2RlID0gMTsKICAgICAgICBl
bHNlIGlmIChhbG1vc3RfZXF1YWxzKGNfdG9rZW4sICJjJG9sb3IiKQogICAgICAgICAgICAgICAg
IHx8IGFsbW9zdF9lcXVhbHMoY190b2tlbiwgImMkb2xvdXIiKSkKICAgICAgICAgICAgcG5nX21v
ZGUgPSAyOwogICAgICAgIGVsc2UgewoKICAgICAgICAgICAgcG5nX2ZvbnQgPSAxOwogICAgICAg
ICAgICBwbmdfbW9kZSA9IDA7CiAgICAgICAgICAgIGludF9lcnJvcigiZXhwZWN0aW5nOiB7c21h
bGwsIG1lZGl1bSwgbGFyZ2V9LCBvciB7bW9ub2Nocm9tZSwgZ3JheSwgY29sb3J9IiwgY190b2tl
bik7CiAgICAgICAgfQogICAgICAgIGNfdG9rZW4rKzsKICAgIH0KCgoKICAgIHN3aXRjaCAocG5n
X2ZvbnQpIHsKICAgIGNhc2UgMzoKICAgICAgICBzdHJjYXQodGVybV9vcHRpb25zLCAibGFyZ2Ui
KTsKICAgICAgICBicmVhazsKICAgIGNhc2UgMjoKICAgICAgICBzdHJjYXQodGVybV9vcHRpb25z
LCAibWVkaXVtIik7CiAgICAgICAgYnJlYWs7CiAgICBjYXNlIDE6CiAgICBkZWZhdWx0OgogICAg
ICAgIHN0cmNhdCh0ZXJtX29wdGlvbnMsICJzbWFsbCIpOwogICAgICAgIGJyZWFrOwogICAgfQoK
ICAgIHN3aXRjaCAocG5nX21vZGUpIHsKICAgIGNhc2UgMjoKICAgICAgICBzdHJjYXQodGVybV9v
cHRpb25zLCAiIGNvbG9yIik7CiAgICAgICAgYnJlYWs7CiAgICBjYXNlIDE6CiAgICAgICAgc3Ry
Y2F0KHRlcm1fb3B0aW9ucywgIiBncmF5Iik7CiAgICAgICAgYnJlYWs7CiAgICBjYXNlIDA6CiAg
ICBkZWZhdWx0OgogICAgICAgIHN0cmNhdCh0ZXJtX29wdGlvbnMsICIgbW9ub2Nocm9tZSIpOwog
ICAgICAgIGJyZWFrOwogICAgfQoKfQoKCnN0YXRpYyB2b2lkClBOR19pbml0KCkKewogICAgUE5H
X3NldGZvbnQoKTsKfQoKCnN0YXRpYyB2b2lkClBOR19yZXNldCgpCnsKCgoKfQoKCnN0YXRpYyB2
b2lkClBOR19zZXRmb250KCkKewogICAgc3dpdGNoIChwbmdfZm9udCkgewogICAgY2FzZSAzOgog
ICAgICAgIGJfY2hhcnNpemUoMik7CiAgICAgICAgdGVybS0+dl9jaGFyID0gMzE7CiAgICAgICAg
dGVybS0+aF9jaGFyID0gMTk7CiAgICAgICAgdGVybS0+dl90aWMgPSAxMzsKICAgICAgICB0ZXJt
LT5oX3RpYyA9IDEzOwogICAgICAgIGJyZWFrOwogICAgY2FzZSAyOgogICAgICAgIGJfY2hhcnNp
emUoMSk7CiAgICAgICAgdGVybS0+dl9jaGFyID0gMjE7CiAgICAgICAgdGVybS0+aF9jaGFyID0g
MTM7CiAgICAgICAgdGVybS0+dl90aWMgPSA5OwogICAgICAgIHRlcm0tPmhfdGljID0gOTsKICAg
ICAgICBicmVhazsKICAgIGNhc2UgMToKICAgIGRlZmF1bHQ6CiAgICAgICAgYl9jaGFyc2l6ZSgw
KTsKICAgICAgICB0ZXJtLT52X2NoYXIgPSAxMTsKICAgICAgICB0ZXJtLT5oX2NoYXIgPSA3Owog
ICAgICAgIHRlcm0tPnZfdGljID0gNTsKICAgICAgICB0ZXJtLT5oX3RpYyA9IDU7CiAgICAgICAg
YnJlYWs7CiAgICB9Cn0KCgpzdGF0aWMgdm9pZApQTkdfZ3JhcGhpY3MoKQp7CiAgICBpbnQgbnVt
cGxhbmVzID0gMTsKCiAgICBzd2l0Y2ggKHBuZ19tb2RlKSB7CiAgICBjYXNlIDI6CiAgICAgICAg
bnVtcGxhbmVzID0gNDsKICAgICAgICBicmVhazsKICAgIGNhc2UgMToKICAgICAgICBudW1wbGFu
ZXMgPSAzOwogICAgICAgIGJyZWFrOwogICAgY2FzZSAwOgogICAgZGVmYXVsdDoKICAgICAgICBu
dW1wbGFuZXMgPSAxOwogICAgICAgIGJyZWFrOwogICAgfQoKCgoKCiAgICBiX21ha2ViaXRtYXAo
KHVuc2lnbmVkIGludCkgKCg0ODApICogeXNpemUpLAogICAgICAgICAgICAgICAgICh1bnNpZ25l
ZCBpbnQpICgoNjQwKSAqIHhzaXplKSwgbnVtcGxhbmVzKTsKICAgIGJfcmFzdGVybW9kZSA9IDE7
CgogICAgaWYgKHBuZ19tb2RlICE9IDApCiAgICAgICAgYl9zZXRsaW5ldHlwZSgwKTsKfQoKc3Rh
dGljIHZvaWQKUE5HX3RleHQoKQp7CiAgICByZWdpc3RlciBpbnQgeCwgaiwgcm93OwogICAgcG5n
X3N0cnVjdHAgcG5nX3B0cjsKICAgIHBuZ19pbmZvcCBpbmZvX3B0cjsKICAgIHJlZ2lzdGVyIGlu
dCBpLCB2YWx1ZTsKICAgIHBuZ19ieXRlcCBwcm93OwogICAgaW50IG1hc2ssIHBsYW5lMSwgcGxh
bmUyLCBwbGFuZTMsIHBsYW5lNDsKICAgIGludCByZWQsIGdyZWVuLCBibHVlOwogICAgcG5nX3Rl
eHQgcG5ndGV4dCwgKnBuZ3RleHRfY29weTsKICAgIGNoYXIgdGV4dFsxMDBdOwoKICAgIHBuZ19w
dHIgPSBwbmdfY3JlYXRlX3dyaXRlX3N0cnVjdCgiMS4yLjAiLCAoKHZvaWQgKikwKSwgKCh2b2lk
ICopMCksICgodm9pZCAqKTApKTsKICAgIGlmICghcG5nX3B0cikgewogICAgICAgIGJfZnJlZWJp
dG1hcCgpOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIGluZm9fcHRyID0gcG5nX2NyZWF0ZV9p
bmZvX3N0cnVjdChwbmdfcHRyKTsKICAgIGlmICghaW5mb19wdHIpIHsKICAgICAgICBwbmdfZGVz
dHJveV93cml0ZV9zdHJ1Y3QoJnBuZ19wdHIsIChwbmdfaW5mb3BwKSAoKHZvaWQgKikwKSk7CiAg
ICAgICAgYl9mcmVlYml0bWFwKCk7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgcHJvdyA9IG1h
bGxvYyhiX3lzaXplKTsKICAgIGlmICghcHJvdykgewogICAgICAgIHBuZ19kZXN0cm95X3dyaXRl
X3N0cnVjdCgmcG5nX3B0ciwgJmluZm9fcHRyKTsKICAgICAgICBiX2ZyZWViaXRtYXAoKTsKICAg
ICAgICByZXR1cm47CiAgICB9CiAgICBpZiAoX3NldGptcCAocG5nX3B0ci0+am1wYnVmKSkgewog
ICAgICAgIHBuZ19kZXN0cm95X3dyaXRlX3N0cnVjdCgmcG5nX3B0ciwgJmluZm9fcHRyKTsKICAg
ICAgICBmcmVlKHByb3cpOwogICAgICAgIGJfZnJlZWJpdG1hcCgpOwogICAgICAgIHJldHVybjsK
ICAgIH0KCgoKCgoKCiAgICBwbmdfaW5pdF9pbyhwbmdfcHRyLCBncG91dGZpbGUpOwoKICAgIGlu
Zm9fcHRyLT53aWR0aCA9IGJfeXNpemU7CiAgICBpbmZvX3B0ci0+aGVpZ2h0ID0gYl94c2l6ZTsK
CiAgICBpbmZvX3B0ci0+Yml0X2RlcHRoID0gcG5nX21vZGUgPT0gMCA/IDEgOiA0OwogICAgaW5m
b19wdHItPmNvbG9yX3R5cGUgPSBwbmdfbW9kZSA9PSAyID8gKDIgfCAxKSA6CiAgICAgICAgMDsK
ICAgIGlmIChwbmdfbW9kZSA9PSAyKSB7CiAgICAgICAgaW5mb19wdHItPnZhbGlkIHw9IDB4MDAw
ODsKICAgICAgICBpbmZvX3B0ci0+cGFsZXR0ZSA9IHBuZ19wYWxldHRlOwogICAgICAgIGluZm9f
cHRyLT5udW1fcGFsZXR0ZSA9IDE2OwogICAgfQogICAgaWYgKHBuZ19tb2RlICE9IDApIHsKICAg
ICAgICBpbmZvX3B0ci0+dmFsaWQgfD0gMHgwMDAyOwogICAgICAgIGlmIChwbmdfbW9kZSA9PSAx
KSB7CiAgICAgICAgICAgIGluZm9fcHRyLT5zaWdfYml0LmdyYXkgPSAzOwogICAgICAgICAgICBw
bmdfc2V0X3NoaWZ0KHBuZ19wdHIsICYoaW5mb19wdHItPnNpZ19iaXQpKTsKICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICBpbmZvX3B0ci0+c2lnX2JpdC5yZWQgPSAyOwogICAgICAgICAgICBp
bmZvX3B0ci0+c2lnX2JpdC5ncmVlbiA9IDI7CiAgICAgICAgICAgIGluZm9fcHRyLT5zaWdfYml0
LmJsdWUgPSAyOwogICAgICAgIH0KICAgIH0KICAgIGluZm9fcHRyLT5pbnRlcmxhY2VfdHlwZSA9
IDA7CiAgICBpZiAocG5nX21vZGUgPT0gMCkKICAgICAgICBwbmdfc2V0X2ludmVydF9tb25vKHBu
Z19wdHIpOwoKICAgIGlmIChwbmdfbW9kZSA9PSAyKQogICAgICAgIGZvciAoaSA9IDA7IGkgPCAx
NjsgaSsrKSB7CiAgICAgICAgICAgIHJlZCA9IChpICYgNCkgPyAxIDogMzsKICAgICAgICAgICAg
Z3JlZW4gPSAoaSAmIDIpID8gMSA6IDM7CiAgICAgICAgICAgIGJsdWUgPSAoaSAmIDEpID8gMSA6
IDM7CiAgICAgICAgICAgIGlmIChpICYgOCkgewogICAgICAgICAgICAgICAgcmVkLS07CiAgICAg
ICAgICAgICAgICBncmVlbi0tOwogICAgICAgICAgICAgICAgYmx1ZS0tOwogICAgICAgICAgICB9
CiAgICAgICAgICAgIHBuZ19wYWxldHRlW2ldLnJlZCA9IHJlZCAqIDg1OwogICAgICAgICAgICBw
bmdfcGFsZXR0ZVtpXS5ncmVlbiA9IGdyZWVuICogODU7CiAgICAgICAgICAgIHBuZ19wYWxldHRl
W2ldLmJsdWUgPSBibHVlICogODU7CiAgICAgICAgfQogICAgc3ByaW50Zih0ZXh0LCAiZ251cGxv
dCAlc3ZlcnNpb24gJXMgcGF0Y2hsZXZlbCAlcyIsCiAgICAgICAgICAgICJMaW51eCAiLCB2ZXJz
aW9uLCBwYXRjaGxldmVsKTsKCiAgICBwbmd0ZXh0LmNvbXByZXNzaW9uID0gLTE7CiAgICBwbmd0
ZXh0LmtleSA9ICJTb2Z0d2FyZSI7CiAgICBwbmd0ZXh0LnRleHQgPSB0ZXh0OwogICAgcG5ndGV4
dC50ZXh0X2xlbmd0aCA9IHN0cmxlbih0ZXh0KTsKCiAgICBwbmd0ZXh0X2NvcHkgPSBtYWxsb2Mo
c2l6ZW9mKCpwbmd0ZXh0X2NvcHkpKTsKICAgICpwbmd0ZXh0X2NvcHkgPSBwbmd0ZXh0OwogICAg
aW5mb19wdHItPm51bV90ZXh0ID0gMTsKICAgIGluZm9fcHRyLT50ZXh0ID0gcG5ndGV4dF9jb3B5
OwoKICAgIHBuZ193cml0ZV9pbmZvKHBuZ19wdHIsIGluZm9fcHRyKTsKCiAgICBpbmZvX3B0ci0+
bnVtX3RleHQgPSAwOwogICAgaWYgKGluZm9fcHRyLT50ZXh0KSBmcmVlKGluZm9fcHRyLT50ZXh0
KTsKICAgIGluZm9fcHRyLT50ZXh0ID0gKCh2b2lkICopMCk7CgogICAgcG5nX3NldF9wYWNraW5n
KHBuZ19wdHIpOwoKCiAgICBmb3IgKHggPSBiX3hzaXplIC0gMTsgeCA+PSAwOyB4LS0pIHsKICAg
ICAgICByb3cgPSAoYl95c2l6ZSAvIDgpIC0gMTsKICAgICAgICBmb3IgKGogPSByb3c7IGogPj0g
MDsgai0tKSB7CiAgICAgICAgICAgIG1hc2sgPSAweDgwOwogICAgICAgICAgICBwbGFuZTEgPSAo
KigoKmJfcClbal0gKyB4KSk7CiAgICAgICAgICAgIGlmIChwbmdfbW9kZSAhPSAwKSB7CiAgICAg
ICAgICAgICAgICBwbGFuZTIgPSAoKigoKmJfcClbaiArIGJfcHNpemVdICsgeCkpOwogICAgICAg
ICAgICAgICAgcGxhbmUzID0gKCooKCpiX3ApW2ogKyBiX3BzaXplICsgYl9wc2l6ZV0gKyB4KSk7
CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBwbGFuZTIgPSAwOwogICAgICAg
ICAgICAgICAgcGxhbmUzID0gMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAocG5nX21v
ZGUgPT0gMikKICAgICAgICAgICAgICAgIHBsYW5lNCA9ICgqKCgqYl9wKVtqICsgYl9wc2l6ZSAr
IGJfcHNpemUgKyBiX3BzaXplXSArIHgpKTsKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAg
ICAgcGxhbmU0ID0gMDsKCiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCA4OyBpKyspIHsKICAg
ICAgICAgICAgICAgIHZhbHVlID0gMDsKICAgICAgICAgICAgICAgIGlmIChwbGFuZTEgJiBtYXNr
KQogICAgICAgICAgICAgICAgICAgIHZhbHVlICs9IDE7CiAgICAgICAgICAgICAgICBpZiAocGxh
bmUyICYgbWFzaykKICAgICAgICAgICAgICAgICAgICB2YWx1ZSArPSAyOwogICAgICAgICAgICAg
ICAgaWYgKHBsYW5lMyAmIG1hc2spCiAgICAgICAgICAgICAgICAgICAgdmFsdWUgKz0gNDsKICAg
ICAgICAgICAgICAgIGlmIChwbGFuZTQgJiBtYXNrKQogICAgICAgICAgICAgICAgICAgIHZhbHVl
ICs9IDg7CiAgICAgICAgICAgICAgICBpZiAocG5nX21vZGUgPT0gMSkKICAgICAgICAgICAgICAg
ICAgICB2YWx1ZSA9IDcgLSB2YWx1ZTsKCiAgICAgICAgICAgICAgICBwcm93Wyhyb3cgLSBqKSAq
IDggKyBpXSA9IChwbmdfYnl0ZSkgdmFsdWU7CiAgICAgICAgICAgICAgICBtYXNrID4+PSAxOwog
ICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHBuZ193cml0ZV9yb3dzKHBuZ19wdHIsICZw
cm93LCAxKTsKICAgIH0KCiAgICBwbmdfd3JpdGVfZW5kKHBuZ19wdHIsIGluZm9fcHRyKTsKICAg
IHBuZ19kZXN0cm95X3dyaXRlX3N0cnVjdCgmcG5nX3B0ciwgJmluZm9fcHRyKTsKICAgIGZyZWUo
cHJvdyk7CiAgICBiX2ZyZWViaXRtYXAoKTsKfQoKCnN0YXRpYyB2b2lkClBOR19saW5ldHlwZShs
aW5ldHlwZSkKaW50IGxpbmV0eXBlOwp7CiAgICBzd2l0Y2ggKHBuZ19tb2RlKSB7CiAgICBjYXNl
IDI6CiAgICAgICAgaWYgKGxpbmV0eXBlID49IDkpCiAgICAgICAgICAgIGxpbmV0eXBlICU9IDk7
CiAgICAgICAgYl9zZXR2YWx1ZShwbmdfY29sb3JfdGFibGVbbGluZXR5cGUgKyAyXSk7CiAgICAg
ICAgYnJlYWs7CiAgICBjYXNlIDE6CiAgICAgICAgaWYgKGxpbmV0eXBlID49IDcpCiAgICAgICAg
ICAgIGxpbmV0eXBlICU9IDc7CiAgICAgICAgYl9zZXR2YWx1ZShwbmdfZ3JheVtsaW5ldHlwZSAr
IDJdKTsKICAgICAgICBicmVhazsKICAgIGNhc2UgMDoKICAgIGRlZmF1bHQ6CiAgICAgICAgYl9z
ZXRsaW5ldHlwZShsaW5ldHlwZSk7CiAgICAgICAgYnJlYWs7CiAgICB9Cn0KCnN0YXRpYyB2b2lk
ClBOR19wb2ludCh4LCB5LCBwb2ludCkKdW5zaWduZWQgaW50IHgsIHk7CmludCBwb2ludDsKewog
ICAgaWYgKHBuZ19tb2RlID09IDApCiAgICAgICAgbGluZV9hbmRfcG9pbnQoeCwgeSwgcG9pbnQp
OwogICAgZWxzZQogICAgICAgIGRvX3BvaW50KHgsIHksIHBvaW50KTsKfQojIDMyNiAidGVybS5o
IiAyCgoKCiMgMSAidGVybS9wb3N0LnRybSIgMQojIDYwICJ0ZXJtL3Bvc3QudHJtIgojIDEgInRl
cm0vZHJpdmVyLmgiIDEKIyA2MSAidGVybS9wb3N0LnRybSIgMgoKCgoKCgpzdGF0aWMgdm9pZCBQ
U19vcHRpb25zICh2b2lkKTsKc3RhdGljIHZvaWQgUFNfY29tbW9uX2luaXQgKGludCBlbmNhcCwg
aW50IHBvcnRyYWl0LCBpbnQgdXNlc19mb250cywgdW5zaWduZWQgaW50IHhvZmYsIHVuc2lnbmVk
IGludCB5b2ZmLCB1bnNpZ25lZCBpbnQgYmJfeG1pbiwgdW5zaWduZWQgaW50IGJiX3ltaW4sIHVu
c2lnbmVkIGludCBiYl94bWF4LCB1bnNpZ25lZCBpbnQgYmJfeW1heCwgY2hhciAqKmRpY3QpOwpz
dGF0aWMgdm9pZCBQU19pbml0ICh2b2lkKTsKc3RhdGljIHZvaWQgUFNfZ3JhcGhpY3MgKHZvaWQp
OwpzdGF0aWMgdm9pZCBQU190ZXh0ICh2b2lkKTsKc3RhdGljIHZvaWQgUFNfcmVzZXQgKHZvaWQp
OwpzdGF0aWMgdm9pZCBQU19saW5ldHlwZSAoaW50IGxpbmV0eXBlKTsKc3RhdGljIHZvaWQgUFNf
bW92ZSAodW5zaWduZWQgaW50IHgsIHVuc2lnbmVkIGludCB5KTsKc3RhdGljIHZvaWQgUFNfdmVj
dG9yICh1bnNpZ25lZCBpbnQgeCwgdW5zaWduZWQgaW50IHkpOwpzdGF0aWMgdm9pZCBQU19wdXRf
dGV4dCAodW5zaWduZWQgaW50IHgsIHVuc2lnbmVkIGludCB5LCBjaGFyICpzdHIpOwpzdGF0aWMg
dm9pZCBFTkhQU19wdXRfdGV4dCAodW5zaWduZWQgaW50IHgsIHVuc2lnbmVkIGludCB5LCBjaGFy
ICpzdHIpOwpzdGF0aWMgaW50IFBTX3RleHRfYW5nbGUgKGludCBhbmcpOwpzdGF0aWMgaW50IFBT
X2p1c3RpZnlfdGV4dCAoZW51bSBKVVNUSUZZIG1vZGUpOwpzdGF0aWMgdm9pZCBQU19wb2ludCAo
dW5zaWduZWQgaW50IHgsIHVuc2lnbmVkIGludCB5LCBpbnQgbnVtYmVyKTsKc3RhdGljIGludCBQ
U19zZXRfZm9udCAoY2hhciAqIGZvbnQpOwpzdGF0aWMgaW50IEVOSFBTX3NldF9mb250IChjaGFy
ICogZm9udCk7CnN0YXRpYyB2b2lkIFBTX2ZpbGxib3ggKGludCBzdHlsZSwgdW5zaWduZWQgaW50
IHgxLCB1bnNpZ25lZCBpbnQgeTEsIHVuc2lnbmVkIGludCB3aWR0aCwgdW5zaWduZWQgaW50IGhl
aWdodCk7CnN0YXRpYyB2b2lkIFBTX2xpbmV3aWR0aCAoZG91YmxlIGxpbmV3aWR0aCk7CnN0YXRp
YyB2b2lkIFBTX3BvaW50c2l6ZSAoZG91YmxlIHB0c2l6ZSk7CiMgMTEwICJ0ZXJtL3Bvc3QudHJt
IgpleHRlcm4gY2hhciB2ZXJzaW9uW107CmV4dGVybiBjaGFyIHBhdGNobGV2ZWxbXTsKCgoKCnN0
YXRpYyBjaGFyICpQU19SZW1lbWJlckZvbnQgKGNoYXIgKmZuYW1lLCBpbnQgcmVlbmNvZGUpOwpz
dGF0aWMgdm9pZCBFTkhQU19wdXRfdGV4dCAodW5zaWduZWQgaW50IHgsIHVuc2lnbmVkIGludCB5
LCBjaGFyICpzdHIpOwpzdGF0aWMgY2hhciAqRU5IUFNfcmVjdXJzZSAoY2hhciAqcCwgVEJPT0xF
QU4gYnJhY2UsIGNoYXIgKmZvbnRuYW1lLCBkb3VibGUgZm9udHNpemUsIGRvdWJsZSBiYXNlLCBU
Qk9PTEVBTiB3aWR0aGZsYWcsIFRCT09MRUFOIHNob3dmbGFnKTsKc3RhdGljIGNoYXIgcHNfZm9u
dFs1MCArMV0gPSAiSGVsdmV0aWNhIiA7CnN0YXRpYyBpbnQgcHNfZm9udHNpemUgPSAxNDsKCgoK
CnN0YXRpYyBjaGFyIHBzX2VuaF9mb250WzUwICsxXTsKc3RhdGljIGludCBwc19lbmhfZm9udHNp
emU7CgpzdGF0aWMgVEJPT0xFQU4gcHNfcG9ydHJhaXQgPSAwOwpzdGF0aWMgVEJPT0xFQU4gcHNf
Y29sb3IgPSAwOwpzdGF0aWMgVEJPT0xFQU4gcHNfc29saWQgPSAwOwpzdGF0aWMgVEJPT0xFQU4g
cHNfZXBzID0gMDsKCnN0YXRpYyBpbnQgcHNfcGFnZT0wOwpzdGF0aWMgaW50IHBzX3BhdGhfY291
bnQ9MDsKc3RhdGljIGludCBwc19hbmc9MDsKc3RhdGljIGVudW0gSlVTVElGWSBwc19qdXN0aWZ5
PUxFRlQ7CgoKc3RhdGljIFRCT09MRUFOIHBzX2R1cGxleF9zdGF0ZSA9IDA7CnN0YXRpYyBUQk9P
TEVBTiBwc19kdXBsZXhfb3B0aW9uID0gMDsKCnN0YXRpYyBjaGFyICogUFNfaGVhZGVyW10gPSB7
CiIvTSB7bW92ZXRvfSBiaW5kIGRlZlxuIiwKIi9MIHtsaW5ldG99IGJpbmQgZGVmXG4iLAoiL1Ig
e3Jtb3ZldG99IGJpbmQgZGVmXG4iLAoiL1Yge3JsaW5ldG99IGJpbmQgZGVmXG4iLAoiL3ZwdDIg
dnB0IDIgbXVsIGRlZlxuIiwKIi9ocHQyIGhwdCAyIG11bCBkZWZcbiIsCgoiL0xzaG93IHsgY3Vy
cmVudHBvaW50IHN0cm9rZSBNXG4iLAoiICAwIHZzaGlmdCBSIHNob3cgfSBkZWZcbiIsCgoiL1Jz
aG93IHsgY3VycmVudHBvaW50IHN0cm9rZSBNXG4iLAoiICBkdXAgc3RyaW5nd2lkdGggcG9wIG5l
ZyB2c2hpZnQgUiBzaG93IH0gZGVmXG4iLAoKIi9Dc2hvdyB7IGN1cnJlbnRwb2ludCBzdHJva2Ug
TVxuIiwKIiAgZHVwIHN0cmluZ3dpZHRoIHBvcCAtMiBkaXYgdnNoaWZ0IFIgc2hvdyB9IGRlZlxu
IiwKCiIvVVAgeyBkdXAgdnB0XyBtdWwgL3ZwdCBleGNoIGRlZiBocHRfIG11bCAvaHB0IGV4Y2gg
ZGVmXG4iLAoiICAvaHB0MiBocHQgMiBtdWwgZGVmIC92cHQyIHZwdCAyIG11bCBkZWYgfSBkZWZc
biIsCgoiL0RMIHsgQ29sb3Ige3NldHJnYmNvbG9yIFNvbGlkIHtwb3AgW119IGlmIDAgc2V0ZGFz
aCB9XG4iLAoiIHtwb3AgcG9wIHBvcCBTb2xpZCB7cG9wIFtdfSBpZiAwIHNldGRhc2h9IGlmZWxz
ZSB9IGRlZlxuIiwKCiIvQkwgeyBzdHJva2UgdXNlcmxpbmV3aWR0aCAyIG11bCBzZXRsaW5ld2lk
dGggfSBkZWZcbiIsCgoiL0FMIHsgc3Ryb2tlIHVzZXJsaW5ld2lkdGggMiBkaXYgc2V0bGluZXdp
ZHRoIH0gZGVmXG4iLAoKIi9VTCB7IGR1cCBnbnVsaW5ld2lkdGggbXVsIC91c2VybGluZXdpZHRo
IGV4Y2ggZGVmXG4iLAoiICAgICAgMTAgbXVsIC91ZGwgZXhjaCBkZWYgfSBkZWZcbiIsCgoiL1BM
IHsgc3Ryb2tlIHVzZXJsaW5ld2lkdGggc2V0bGluZXdpZHRoIH0gZGVmXG4iLAoKIi9MVGIgeyBC
TCBbXSAwIDAgMCBETCB9IGRlZlxuIiwKIi9MVGEgeyBBTCBbMSB1ZGwgbXVsIDIgdWRsIG11bF0g
MCBzZXRkYXNoIDAgMCAwIHNldHJnYmNvbG9yIH0gZGVmXG4iLAoiL0xUMCB7IFBMIFtdIDEgMCAw
IERMIH0gZGVmXG4iLAoiL0xUMSB7IFBMIFs0IGRsIDIgZGxdIDAgMSAwIERMIH0gZGVmXG4iLAoi
L0xUMiB7IFBMIFsyIGRsIDMgZGxdIDAgMCAxIERMIH0gZGVmXG4iLAoiL0xUMyB7IFBMIFsxIGRs
IDEuNSBkbF0gMSAwIDEgREwgfSBkZWZcbiIsCiIvTFQ0IHsgUEwgWzUgZGwgMiBkbCAxIGRsIDIg
ZGxdIDAgMSAxIERMIH0gZGVmXG4iLAoiL0xUNSB7IFBMIFs0IGRsIDMgZGwgMSBkbCAzIGRsXSAx
IDEgMCBETCB9IGRlZlxuIiwKIi9MVDYgeyBQTCBbMiBkbCAyIGRsIDIgZGwgNCBkbF0gMCAwIDAg
REwgfSBkZWZcbiIsCiIvTFQ3IHsgUEwgWzIgZGwgMiBkbCAyIGRsIDIgZGwgMiBkbCA0IGRsXSAx
IDAuMyAwIERMIH0gZGVmXG4iLAoiL0xUOCB7IFBMIFsyIGRsIDIgZGwgMiBkbCAyIGRsIDIgZGwg
MiBkbCAyIGRsIDQgZGxdIDAuNSAwLjUgMC41IERMIH0gZGVmXG4iLAoKIi9QbnQgeyBzdHJva2Ug
W10gMCBzZXRkYXNoXG4iLAoiICAgZ3NhdmUgMSBzZXRsaW5lY2FwIE0gMCAwIFYgc3Ryb2tlIGdy
ZXN0b3JlIH0gZGVmXG4iLAoKCiIvRGlhIHsgc3Ryb2tlIFtdIDAgc2V0ZGFzaCAyIGNvcHkgdnB0
IGFkZCBNXG4iLAoiICBocHQgbmVnIHZwdCBuZWcgViBocHQgdnB0IG5lZyBWXG4iLAoiICBocHQg
dnB0IFYgaHB0IG5lZyB2cHQgViBjbG9zZXBhdGggc3Ryb2tlXG4iLAoiICBQbnQgfSBkZWZcbiIs
CgoKIi9QbHMgeyBzdHJva2UgW10gMCBzZXRkYXNoIHZwdCBzdWIgTSAwIHZwdDIgVlxuIiwKIiAg
Y3VycmVudHBvaW50IHN0cm9rZSBNXG4iLAoiICBocHQgbmVnIHZwdCBuZWcgUiBocHQyIDAgViBz
dHJva2VcbiIsCiIgIH0gZGVmXG4iLAoKCiIvQm94IHsgc3Ryb2tlIFtdIDAgc2V0ZGFzaCAyIGNv
cHkgZXhjaCBocHQgc3ViIGV4Y2ggdnB0IGFkZCBNXG4iLAoiICAwIHZwdDIgbmVnIFYgaHB0MiAw
IFYgMCB2cHQyIFZcbiIsCiIgIGhwdDIgbmVnIDAgViBjbG9zZXBhdGggc3Ryb2tlXG4iLAoiICBQ
bnQgfSBkZWZcbiIsCgoKIi9DcnMgeyBzdHJva2UgW10gMCBzZXRkYXNoIGV4Y2ggaHB0IHN1YiBl
eGNoIHZwdCBhZGQgTVxuIiwKIiAgaHB0MiB2cHQyIG5lZyBWIGN1cnJlbnRwb2ludCBzdHJva2Ug
TVxuIiwKIiAgaHB0MiBuZWcgMCBSIGhwdDIgdnB0MiBWIHN0cm9rZSB9IGRlZlxuIiwKCgoiL1Ry
aVUgeyBzdHJva2UgW10gMCBzZXRkYXNoIDIgY29weSB2cHQgMS4xMiBtdWwgYWRkIE1cbiIsCiIg
IGhwdCBuZWcgdnB0IC0xLjYyIG11bCBWXG4iLAoiICBocHQgMiBtdWwgMCBWXG4iLAoiICBocHQg
bmVnIHZwdCAxLjYyIG11bCBWIGNsb3NlcGF0aCBzdHJva2VcbiIsCiIgIFBudCAgfSBkZWZcbiIs
CgoKIi9TdGFyIHsgMiBjb3B5IFBscyBDcnMgfSBkZWZcbiIsCgoKCiIvQm94RiB7IHN0cm9rZSBb
XSAwIHNldGRhc2ggZXhjaCBocHQgc3ViIGV4Y2ggdnB0IGFkZCBNXG4iLAoiICAwIHZwdDIgbmVn
IFYgIGhwdDIgMCBWICAwIHZwdDIgVlxuIiwKIiAgaHB0MiBuZWcgMCBWICBjbG9zZXBhdGggZmls
bCB9IGRlZlxuIiwKCgoKIi9UcmlVRiB7IHN0cm9rZSBbXSAwIHNldGRhc2ggdnB0IDEuMTIgbXVs
IGFkZCBNXG4iLAoiICBocHQgbmVnIHZwdCAtMS42MiBtdWwgVlxuIiwKIiAgaHB0IDIgbXVsIDAg
VlxuIiwKIiAgaHB0IG5lZyB2cHQgMS42MiBtdWwgViBjbG9zZXBhdGggZmlsbCB9IGRlZlxuIiwK
CgoKIi9UcmlEIHsgc3Ryb2tlIFtdIDAgc2V0ZGFzaCAyIGNvcHkgdnB0IDEuMTIgbXVsIHN1YiBN
XG4iLAoiICBocHQgbmVnIHZwdCAxLjYyIG11bCBWXG4iLAoiICBocHQgMiBtdWwgMCBWXG4iLAoi
ICBocHQgbmVnIHZwdCAtMS42MiBtdWwgViBjbG9zZXBhdGggc3Ryb2tlXG4iLAoiICBQbnQgIH0g
ZGVmXG4iLAoKCiIvVHJpREYgeyBzdHJva2UgW10gMCBzZXRkYXNoIHZwdCAxLjEyIG11bCBzdWIg
TVxuIiwKIiAgaHB0IG5lZyB2cHQgMS42MiBtdWwgVlxuIiwKIiAgaHB0IDIgbXVsIDAgVlxuIiwK
IiAgaHB0IG5lZyB2cHQgLTEuNjIgbXVsIFYgY2xvc2VwYXRoIGZpbGx9IGRlZlxuIiwKCgoiL0Rp
YUYgeyBzdHJva2UgW10gMCBzZXRkYXNoIHZwdCBhZGQgTVxuIiwKIiAgaHB0IG5lZyB2cHQgbmVn
IFYgaHB0IHZwdCBuZWcgVlxuIiwKIiAgaHB0IHZwdCBWIGhwdCBuZWcgdnB0IFYgY2xvc2VwYXRo
IGZpbGwgfSBkZWZcbiIsCgoKIi9QZW50IHsgc3Ryb2tlIFtdIDAgc2V0ZGFzaCAyIGNvcHkgZ3Nh
dmVcbiIsCiIgIHRyYW5zbGF0ZSAwIGhwdCBNIDQgezcyIHJvdGF0ZSAwIGhwdCBMfSByZXBlYXRc
biIsCiIgIGNsb3NlcGF0aCBzdHJva2UgZ3Jlc3RvcmUgUG50IH0gZGVmXG4iLAoKCiIvUGVudEYg
eyBzdHJva2UgW10gMCBzZXRkYXNoIGdzYXZlXG4iLAoiICB0cmFuc2xhdGUgMCBocHQgTSA0IHs3
MiByb3RhdGUgMCBocHQgTH0gcmVwZWF0XG4iLAoiICBjbG9zZXBhdGggZmlsbCBncmVzdG9yZSB9
IGRlZlxuIiwKCgoiL0NpcmNsZSB7IHN0cm9rZSBbXSAwIHNldGRhc2ggMiBjb3B5XG4iLAoiICBo
cHQgMCAzNjAgYXJjIHN0cm9rZSBQbnQgfSBkZWZcbiIsCgoKIi9DaXJjbGVGIHsgc3Ryb2tlIFtd
IDAgc2V0ZGFzaCBocHQgMCAzNjAgYXJjIGZpbGwgfSBkZWZcbiIsCgoiL0MwIHsgQkwgW10gMCBz
ZXRkYXNoIDIgY29weSBtb3ZldG8gdnB0IDkwIDQ1MCAgYXJjIH0gYmluZCBkZWZcbiIsCiIvQzEg
eyBCTCBbXSAwIHNldGRhc2ggMiBjb3B5ICAgICAgICBtb3ZldG9cbiIsCiIgICAgICAgMiBjb3B5
ICB2cHQgMCA5MCBhcmMgY2xvc2VwYXRoIGZpbGxcbiIsCiIgICAgICAgICAgICAgICB2cHQgMCAz
NjAgYXJjIGNsb3NlcGF0aCB9IGJpbmQgZGVmXG4iLAoiL0MyIHsgQkwgW10gMCBzZXRkYXNoIDIg
Y29weSBtb3ZldG9cbiIsCiIgICAgICAgMiBjb3B5ICB2cHQgOTAgMTgwIGFyYyBjbG9zZXBhdGgg
ZmlsbFxuIiwKIiAgICAgICAgICAgICAgIHZwdCAwIDM2MCBhcmMgY2xvc2VwYXRoIH0gYmluZCBk
ZWZcbiIsCiIvQzMgeyBCTCBbXSAwIHNldGRhc2ggMiBjb3B5IG1vdmV0b1xuIiwKIiAgICAgICAy
IGNvcHkgIHZwdCAwIDE4MCBhcmMgY2xvc2VwYXRoIGZpbGxcbiIsCiIgICAgICAgICAgICAgICB2
cHQgMCAzNjAgYXJjIGNsb3NlcGF0aCB9IGJpbmQgZGVmXG4iLAoiL0M0IHsgQkwgW10gMCBzZXRk
YXNoIDIgY29weSBtb3ZldG9cbiIsCiIgICAgICAgMiBjb3B5ICB2cHQgMTgwIDI3MCBhcmMgY2xv
c2VwYXRoIGZpbGxcbiIsCiIgICAgICAgICAgICAgICB2cHQgMCAzNjAgYXJjIGNsb3NlcGF0aCB9
IGJpbmQgZGVmXG4iLAoiL0M1IHsgQkwgW10gMCBzZXRkYXNoIDIgY29weSBtb3ZldG9cbiIsCiIg
ICAgICAgMiBjb3B5ICB2cHQgMCA5MCBhcmNcbiIsCiIgICAgICAgMiBjb3B5IG1vdmV0b1xuIiwK
IiAgICAgICAyIGNvcHkgIHZwdCAxODAgMjcwIGFyYyBjbG9zZXBhdGggZmlsbFxuIiwKIiAgICAg
ICAgICAgICAgIHZwdCAwIDM2MCBhcmMgfSBiaW5kIGRlZlxuIiwKIi9DNiB7IEJMIFtdIDAgc2V0
ZGFzaCAyIGNvcHkgbW92ZXRvXG4iLAoiICAgICAgMiBjb3B5ICB2cHQgOTAgMjcwIGFyYyBjbG9z
ZXBhdGggZmlsbFxuIiwKIiAgICAgICAgICAgICAgdnB0IDAgMzYwIGFyYyBjbG9zZXBhdGggfSBi
aW5kIGRlZlxuIiwKIi9DNyB7IEJMIFtdIDAgc2V0ZGFzaCAyIGNvcHkgbW92ZXRvXG4iLAoiICAg
ICAgMiBjb3B5ICB2cHQgMCAyNzAgYXJjIGNsb3NlcGF0aCBmaWxsXG4iLAoiICAgICAgICAgICAg
ICB2cHQgMCAzNjAgYXJjIGNsb3NlcGF0aCB9IGJpbmQgZGVmXG4iLAoiL0M4IHsgQkwgW10gMCBz
ZXRkYXNoIDIgY29weSBtb3ZldG9cbiIsCiIgICAgICAyIGNvcHkgdnB0IDI3MCAzNjAgYXJjIGNs
b3NlcGF0aCBmaWxsXG4iLAoiICAgICAgICAgICAgICB2cHQgMCAzNjAgYXJjIGNsb3NlcGF0aCB9
IGJpbmQgZGVmXG4iLAoiL0M5IHsgQkwgW10gMCBzZXRkYXNoIDIgY29weSBtb3ZldG9cbiIsCiIg
ICAgICAyIGNvcHkgIHZwdCAyNzAgNDUwIGFyYyBjbG9zZXBhdGggZmlsbFxuIiwKIiAgICAgICAg
ICAgICAgdnB0IDAgMzYwIGFyYyBjbG9zZXBhdGggfSBiaW5kIGRlZlxuIiwKIi9DMTAgeyBCTCBb
XSAwIHNldGRhc2ggMiBjb3B5IDIgY29weSBtb3ZldG8gdnB0IDI3MCAzNjAgYXJjIGNsb3NlcGF0
aCBmaWxsXG4iLAoiICAgICAgIDIgY29weSBtb3ZldG9cbiIsCiIgICAgICAgMiBjb3B5IHZwdCA5
MCAxODAgYXJjIGNsb3NlcGF0aCBmaWxsXG4iLAoiICAgICAgICAgICAgICAgdnB0IDAgMzYwIGFy
YyBjbG9zZXBhdGggfSBiaW5kIGRlZlxuIiwKIi9DMTEgeyBCTCBbXSAwIHNldGRhc2ggMiBjb3B5
IG1vdmV0b1xuIiwKIiAgICAgICAyIGNvcHkgIHZwdCAwIDE4MCBhcmMgY2xvc2VwYXRoIGZpbGxc
biIsCiIgICAgICAgMiBjb3B5IG1vdmV0b1xuIiwKIiAgICAgICAyIGNvcHkgIHZwdCAyNzAgMzYw
IGFyYyBjbG9zZXBhdGggZmlsbFxuIiwKIiAgICAgICAgICAgICAgIHZwdCAwIDM2MCBhcmMgY2xv
c2VwYXRoIH0gYmluZCBkZWZcbiIsCiIvQzEyIHsgQkwgW10gMCBzZXRkYXNoIDIgY29weSBtb3Zl
dG9cbiIsCiIgICAgICAgMiBjb3B5ICB2cHQgMTgwIDM2MCBhcmMgY2xvc2VwYXRoIGZpbGxcbiIs
CiIgICAgICAgICAgICAgICB2cHQgMCAzNjAgYXJjIGNsb3NlcGF0aCB9IGJpbmQgZGVmXG4iLAoi
L0MxMyB7IEJMIFtdIDAgc2V0ZGFzaCAgMiBjb3B5IG1vdmV0b1xuIiwKIiAgICAgICAyIGNvcHkg
IHZwdCAwIDkwIGFyYyBjbG9zZXBhdGggZmlsbFxuIiwKIiAgICAgICAyIGNvcHkgbW92ZXRvXG4i
LAoiICAgICAgIDIgY29weSAgdnB0IDE4MCAzNjAgYXJjIGNsb3NlcGF0aCBmaWxsXG4iLAoiICAg
ICAgICAgICAgICAgdnB0IDAgMzYwIGFyYyBjbG9zZXBhdGggfSBiaW5kIGRlZlxuIiwKIi9DMTQg
eyBCTCBbXSAwIHNldGRhc2ggMiBjb3B5IG1vdmV0b1xuIiwKIiAgICAgICAyIGNvcHkgIHZwdCA5
MCAzNjAgYXJjIGNsb3NlcGF0aCBmaWxsXG4iLAoiICAgICAgICAgICAgICAgdnB0IDAgMzYwIGFy
YyB9IGJpbmQgZGVmXG4iLAoiL0MxNSB7IEJMIFtdIDAgc2V0ZGFzaCAyIGNvcHkgdnB0IDAgMzYw
IGFyYyBjbG9zZXBhdGggZmlsbFxuIiwKIiAgICAgICAgICAgICAgIHZwdCAwIDM2MCBhcmMgY2xv
c2VwYXRoIH0gYmluZCBkZWZcbiIsCgoKCiIvUmVjICAgeyBuZXdwYXRoIDQgMiByb2xsIG1vdmV0
byAxIGluZGV4IDAgcmxpbmV0byAwIGV4Y2ggcmxpbmV0b1xuIiwKIiAgICAgICBuZWcgMCBybGlu
ZXRvIGNsb3NlcGF0aCB9IGJpbmQgZGVmXG4iLAoiL1NxdWFyZSB7IGR1cCBSZWMgfSBiaW5kIGRl
ZlxuIiwKIi9Cc3F1YXJlIHsgdnB0IHN1YiBleGNoIHZwdCBzdWIgZXhjaCB2cHQyIFNxdWFyZSB9
IGJpbmQgZGVmXG4iLAoKCgoiL1MwIHsgQkwgW10gMCBzZXRkYXNoIDIgY29weSBtb3ZldG8gMCB2
cHQgcmxpbmV0byBCTCBCc3F1YXJlIH0gYmluZCBkZWZcbiIsCiIvUzEgeyBCTCBbXSAwIHNldGRh
c2ggMiBjb3B5IHZwdCBTcXVhcmUgZmlsbCBCc3F1YXJlIH0gYmluZCBkZWZcbiIsCiIvUzIgeyBC
TCBbXSAwIHNldGRhc2ggMiBjb3B5IGV4Y2ggdnB0IHN1YiBleGNoIHZwdCBTcXVhcmUgZmlsbCBC
c3F1YXJlIH0gYmluZCBkZWZcbiIsCiIvUzMgeyBCTCBbXSAwIHNldGRhc2ggMiBjb3B5IGV4Y2gg
dnB0IHN1YiBleGNoIHZwdDIgdnB0IFJlYyBmaWxsIEJzcXVhcmUgfSBiaW5kIGRlZlxuIiwKIi9T
NCB7IEJMIFtdIDAgc2V0ZGFzaCAyIGNvcHkgZXhjaCB2cHQgc3ViIGV4Y2ggdnB0IHN1YiB2cHQg
U3F1YXJlIGZpbGwgQnNxdWFyZSB9IGJpbmQgZGVmXG4iLAoiL1M1IHsgQkwgW10gMCBzZXRkYXNo
IDIgY29weSAyIGNvcHkgdnB0IFNxdWFyZSBmaWxsXG4iLAoiICAgICAgIGV4Y2ggdnB0IHN1YiBl
eGNoIHZwdCBzdWIgdnB0IFNxdWFyZSBmaWxsIEJzcXVhcmUgfSBiaW5kIGRlZlxuIiwKIi9TNiB7
IEJMIFtdIDAgc2V0ZGFzaCAyIGNvcHkgZXhjaCB2cHQgc3ViIGV4Y2ggdnB0IHN1YiB2cHQgdnB0
MiBSZWMgZmlsbCBCc3F1YXJlIH0gYmluZCBkZWZcbiIsCiIvUzcgeyBCTCBbXSAwIHNldGRhc2gg
MiBjb3B5IGV4Y2ggdnB0IHN1YiBleGNoIHZwdCBzdWIgdnB0IHZwdDIgUmVjIGZpbGxcbiIsCiIg
ICAgICAgMiBjb3B5IHZwdCBTcXVhcmUgZmlsbFxuIiwKIiAgICAgICBCc3F1YXJlIH0gYmluZCBk
ZWZcbiIsCiIvUzggeyBCTCBbXSAwIHNldGRhc2ggMiBjb3B5IHZwdCBzdWIgdnB0IFNxdWFyZSBm
aWxsIEJzcXVhcmUgfSBiaW5kIGRlZlxuIiwKIi9TOSB7IEJMIFtdIDAgc2V0ZGFzaCAyIGNvcHkg
dnB0IHN1YiB2cHQgdnB0MiBSZWMgZmlsbCBCc3F1YXJlIH0gYmluZCBkZWZcbiIsCiIvUzEwIHsg
QkwgW10gMCBzZXRkYXNoIDIgY29weSB2cHQgc3ViIHZwdCBTcXVhcmUgZmlsbCAyIGNvcHkgZXhj
aCB2cHQgc3ViIGV4Y2ggdnB0IFNxdWFyZSBmaWxsXG4iLAoiICAgICAgIEJzcXVhcmUgfSBiaW5k
IGRlZlxuIiwKIi9TMTEgeyBCTCBbXSAwIHNldGRhc2ggMiBjb3B5IHZwdCBzdWIgdnB0IFNxdWFy
ZSBmaWxsIDIgY29weSBleGNoIHZwdCBzdWIgZXhjaCB2cHQyIHZwdCBSZWMgZmlsbFxuIiwKIiAg
ICAgICBCc3F1YXJlIH0gYmluZCBkZWZcbiIsCiIvUzEyIHsgQkwgW10gMCBzZXRkYXNoIDIgY29w
eSBleGNoIHZwdCBzdWIgZXhjaCB2cHQgc3ViIHZwdDIgdnB0IFJlYyBmaWxsIEJzcXVhcmUgfSBi
aW5kIGRlZlxuIiwKIi9TMTMgeyBCTCBbXSAwIHNldGRhc2ggMiBjb3B5IGV4Y2ggdnB0IHN1YiBl
eGNoIHZwdCBzdWIgdnB0MiB2cHQgUmVjIGZpbGxcbiIsCiIgICAgICAgMiBjb3B5IHZwdCBTcXVh
cmUgZmlsbCBCc3F1YXJlIH0gYmluZCBkZWZcbiIsCiIvUzE0IHsgQkwgW10gMCBzZXRkYXNoIDIg
Y29weSBleGNoIHZwdCBzdWIgZXhjaCB2cHQgc3ViIHZwdDIgdnB0IFJlYyBmaWxsXG4iLAoiICAg
ICAgIDIgY29weSBleGNoIHZwdCBzdWIgZXhjaCB2cHQgU3F1YXJlIGZpbGwgQnNxdWFyZSB9IGJp
bmQgZGVmXG4iLAoiL1MxNSB7IEJMIFtdIDAgc2V0ZGFzaCAyIGNvcHkgQnNxdWFyZSBmaWxsIEJz
cXVhcmUgfSBiaW5kIGRlZlxuIiwKCgoKIi9EMCB7IGdzYXZlIHRyYW5zbGF0ZSA0NSByb3RhdGUg
MCAwIFMwIHN0cm9rZSBncmVzdG9yZSB9IGJpbmQgZGVmXG4iLAoiL0QxIHsgZ3NhdmUgdHJhbnNs
YXRlIDQ1IHJvdGF0ZSAwIDAgUzEgc3Ryb2tlIGdyZXN0b3JlIH0gYmluZCBkZWZcbiIsCiIvRDIg
eyBnc2F2ZSB0cmFuc2xhdGUgNDUgcm90YXRlIDAgMCBTMiBzdHJva2UgZ3Jlc3RvcmUgfSBiaW5k
IGRlZlxuIiwKIi9EMyB7IGdzYXZlIHRyYW5zbGF0ZSA0NSByb3RhdGUgMCAwIFMzIHN0cm9rZSBn
cmVzdG9yZSB9IGJpbmQgZGVmXG4iLAoiL0Q0IHsgZ3NhdmUgdHJhbnNsYXRlIDQ1IHJvdGF0ZSAw
IDAgUzQgc3Ryb2tlIGdyZXN0b3JlIH0gYmluZCBkZWZcbiIsCiIvRDUgeyBnc2F2ZSB0cmFuc2xh
dGUgNDUgcm90YXRlIDAgMCBTNSBzdHJva2UgZ3Jlc3RvcmUgfSBiaW5kIGRlZlxuIiwKIi9ENiB7
IGdzYXZlIHRyYW5zbGF0ZSA0NSByb3RhdGUgMCAwIFM2IHN0cm9rZSBncmVzdG9yZSB9IGJpbmQg
ZGVmXG4iLAoiL0Q3IHsgZ3NhdmUgdHJhbnNsYXRlIDQ1IHJvdGF0ZSAwIDAgUzcgc3Ryb2tlIGdy
ZXN0b3JlIH0gYmluZCBkZWZcbiIsCiIvRDggeyBnc2F2ZSB0cmFuc2xhdGUgNDUgcm90YXRlIDAg
MCBTOCBzdHJva2UgZ3Jlc3RvcmUgfSBiaW5kIGRlZlxuIiwKIi9EOSB7IGdzYXZlIHRyYW5zbGF0
ZSA0NSByb3RhdGUgMCAwIFM5IHN0cm9rZSBncmVzdG9yZSB9IGJpbmQgZGVmXG4iLAoiL0QxMCB7
IGdzYXZlIHRyYW5zbGF0ZSA0NSByb3RhdGUgMCAwIFMxMCBzdHJva2UgZ3Jlc3RvcmUgfSBiaW5k
IGRlZlxuIiwKIi9EMTEgeyBnc2F2ZSB0cmFuc2xhdGUgNDUgcm90YXRlIDAgMCBTMTEgc3Ryb2tl
IGdyZXN0b3JlIH0gYmluZCBkZWZcbiIsCiIvRDEyIHsgZ3NhdmUgdHJhbnNsYXRlIDQ1IHJvdGF0
ZSAwIDAgUzEyIHN0cm9rZSBncmVzdG9yZSB9IGJpbmQgZGVmXG4iLAoiL0QxMyB7IGdzYXZlIHRy
YW5zbGF0ZSA0NSByb3RhdGUgMCAwIFMxMyBzdHJva2UgZ3Jlc3RvcmUgfSBiaW5kIGRlZlxuIiwK
Ii9EMTQgeyBnc2F2ZSB0cmFuc2xhdGUgNDUgcm90YXRlIDAgMCBTMTQgc3Ryb2tlIGdyZXN0b3Jl
IH0gYmluZCBkZWZcbiIsCiIvRDE1IHsgZ3NhdmUgdHJhbnNsYXRlIDQ1IHJvdGF0ZSAwIDAgUzE1
IHN0cm9rZSBncmVzdG9yZSB9IGJpbmQgZGVmXG4iLAoKCgoKIi9EaWFFIHsgc3Ryb2tlIFtdIDAg
c2V0ZGFzaCB2cHQgYWRkIE1cbiIsCiIgIGhwdCBuZWcgdnB0IG5lZyBWIGhwdCB2cHQgbmVnIFZc
biIsCiIgIGhwdCB2cHQgViBocHQgbmVnIHZwdCBWIGNsb3NlcGF0aCBzdHJva2UgfSBkZWZcbiIs
CgoKIi9Cb3hFIHsgc3Ryb2tlIFtdIDAgc2V0ZGFzaCBleGNoIGhwdCBzdWIgZXhjaCB2cHQgYWRk
IE1cbiIsCiIgIDAgdnB0MiBuZWcgViBocHQyIDAgViAwIHZwdDIgVlxuIiwKIiAgaHB0MiBuZWcg
MCBWIGNsb3NlcGF0aCBzdHJva2UgfSBkZWZcbiIsCgoKIi9UcmlVRSB7IHN0cm9rZSBbXSAwIHNl
dGRhc2ggdnB0IDEuMTIgbXVsIGFkZCBNXG4iLAoiICBocHQgbmVnIHZwdCAtMS42MiBtdWwgVlxu
IiwKIiAgaHB0IDIgbXVsIDAgVlxuIiwKIiAgaHB0IG5lZyB2cHQgMS42MiBtdWwgViBjbG9zZXBh
dGggc3Ryb2tlIH0gZGVmXG4iLAoKCiIvVHJpREUgeyBzdHJva2UgW10gMCBzZXRkYXNoIHZwdCAx
LjEyIG11bCBzdWIgTVxuIiwKIiAgaHB0IG5lZyB2cHQgMS42MiBtdWwgVlxuIiwKIiAgaHB0IDIg
bXVsIDAgVlxuIiwKIiAgaHB0IG5lZyB2cHQgLTEuNjIgbXVsIFYgY2xvc2VwYXRoIHN0cm9rZSB9
IGRlZlxuIiwKCgoiL1BlbnRFIHsgc3Ryb2tlIFtdIDAgc2V0ZGFzaCBnc2F2ZVxuIiwKIiAgdHJh
bnNsYXRlIDAgaHB0IE0gNCB7NzIgcm90YXRlIDAgaHB0IEx9IHJlcGVhdFxuIiwKIiAgY2xvc2Vw
YXRoIHN0cm9rZSBncmVzdG9yZSB9IGRlZlxuIiwKCgoiL0NpcmNFIHsgc3Ryb2tlIFtdIDAgc2V0
ZGFzaCBcbiIsCiIgIGhwdCAwIDM2MCBhcmMgc3Ryb2tlIH0gZGVmXG4iLAoKCgoiL09wYXF1ZSB7
IGdzYXZlIGNsb3NlcGF0aCAxIHNldGdyYXkgZmlsbCBncmVzdG9yZSAwIHNldGdyYXkgY2xvc2Vw
YXRoIH0gZGVmXG4iLAoKCiIvRGlhVyB7IHN0cm9rZSBbXSAwIHNldGRhc2ggdnB0IGFkZCBNXG4i
LAoiICBocHQgbmVnIHZwdCBuZWcgViBocHQgdnB0IG5lZyBWXG4iLAoiICBocHQgdnB0IFYgaHB0
IG5lZyB2cHQgViBPcGFxdWUgc3Ryb2tlIH0gZGVmXG4iLAoKCiIvQm94VyB7IHN0cm9rZSBbXSAw
IHNldGRhc2ggZXhjaCBocHQgc3ViIGV4Y2ggdnB0IGFkZCBNXG4iLAoiICAwIHZwdDIgbmVnIFYg
aHB0MiAwIFYgMCB2cHQyIFZcbiIsCiIgIGhwdDIgbmVnIDAgViBPcGFxdWUgc3Ryb2tlIH0gZGVm
XG4iLAoKCiIvVHJpVVcgeyBzdHJva2UgW10gMCBzZXRkYXNoIHZwdCAxLjEyIG11bCBhZGQgTVxu
IiwKIiAgaHB0IG5lZyB2cHQgLTEuNjIgbXVsIFZcbiIsCiIgIGhwdCAyIG11bCAwIFZcbiIsCiIg
IGhwdCBuZWcgdnB0IDEuNjIgbXVsIFYgT3BhcXVlIHN0cm9rZSB9IGRlZlxuIiwKCgoiL1RyaURX
IHsgc3Ryb2tlIFtdIDAgc2V0ZGFzaCB2cHQgMS4xMiBtdWwgc3ViIE1cbiIsCiIgIGhwdCBuZWcg
dnB0IDEuNjIgbXVsIFZcbiIsCiIgIGhwdCAyIG11bCAwIFZcbiIsCiIgIGhwdCBuZWcgdnB0IC0x
LjYyIG11bCBWIE9wYXF1ZSBzdHJva2UgfSBkZWZcbiIsCgoKIi9QZW50VyB7IHN0cm9rZSBbXSAw
IHNldGRhc2ggZ3NhdmVcbiIsCiIgIHRyYW5zbGF0ZSAwIGhwdCBNIDQgezcyIHJvdGF0ZSAwIGhw
dCBMfSByZXBlYXRcbiIsCiIgIE9wYXF1ZSBzdHJva2UgZ3Jlc3RvcmUgfSBkZWZcbiIsCgoKIi9D
aXJjVyB7IHN0cm9rZSBbXSAwIHNldGRhc2ggXG4iLAoiICBocHQgMCAzNjAgYXJjIE9wYXF1ZSBz
dHJva2UgfSBkZWZcbiIsCgoKIi9Cb3hGaWxsIHsgZ3NhdmUgUmVjIDEgc2V0Z3JheSBmaWxsIGdy
ZXN0b3JlIH0gZGVmXG4iLAoKKCh2b2lkICopMCkKfTsKCnN0YXRpYyBjaGFyICogRU5IUFNfaGVh
ZGVyW10gPSB7CgoKCiIvTUZzaG93IHt7ZHVwIGR1cCAwIGdldCBmaW5kZm9udCBleGNoIDEgZ2V0
IHNjYWxlZm9udCBzZXRmb250XG4iLAoiICAgICBbIGN1cnJlbnRwb2ludCBdIGV4Y2ggZHVwIDIg
Z2V0IDAgZXhjaCBybW92ZXRvIGR1cCBkdXAgNSBnZXQgZXhjaCA0IGdldFxuIiwKIiAgICAge3No
b3d9IHtzdHJpbmd3aWR0aCBwb3AgMCBybW92ZXRvfWlmZWxzZSBkdXAgMyBnZXRcbiIsCiIgICAg
IHsyIGdldCBuZWcgMCBleGNoIHJtb3ZldG8gcG9wfSB7cG9wIGFsb2FkIHBvcCBtb3ZldG99aWZl
bHNlfSBmb3JhbGx9IGJpbmQgZGVmXG4iLAoiL01Gd2lkdGggezAgZXhjaCB7ZHVwIDMgZ2V0e2R1
cCBkdXAgMCBnZXQgZmluZGZvbnQgZXhjaCAxIGdldCBzY2FsZWZvbnQgc2V0Zm9udFxuIiwKIiAg
ICAgIDUgZ2V0IHN0cmluZ3dpZHRoIHBvcCBhZGR9XG4iLAoiICAgIHtwb3B9IGlmZWxzZX0gZm9y
YWxsfSBiaW5kIGRlZlxuIiwKCgoiL01Mc2hvdyB7IGN1cnJlbnRwb2ludCBzdHJva2UgTVxuIiwK
IiAgMCBleGNoIFIgTUZzaG93IH0gYmluZCBkZWZcbiIsCgoKIi9NUnNob3cgeyBjdXJyZW50cG9p
bnQgc3Ryb2tlIE1cbiIsCiIgIGV4Y2ggZHVwIE1Gd2lkdGggbmVnIDMgLTEgcm9sbCBSIE1Gc2hv
dyB9IGRlZlxuIiwKCgoiL01Dc2hvdyB7IGN1cnJlbnRwb2ludCBzdHJva2UgTVxuIiwKIiAgZXhj
aCBkdXAgTUZ3aWR0aCAtMiBkaXYgMyAtMSByb2xsIFIgTUZzaG93IH0gZGVmXG4iLAooKHZvaWQg
KikwKQp9OwoKCgoKc3RhdGljIHN0cnVjdCBQU19Gb250TmFtZSB7CiAgICAgICAgY2hhciAqbmFt
ZTsKICAgICAgICBzdHJ1Y3QgUFNfRm9udE5hbWUgKm5leHQ7Cn0gKlBTX0RvY0ZvbnRzID0gKCh2
b2lkICopMCk7CgoKCgoKCnN0YXRpYyBjaGFyICpQU19SZW1lbWJlckZvbnQoZm5hbWUsIGNhbl9y
ZWVuY29kZSkKY2hhciAqZm5hbWU7CmludCBjYW5fcmVlbmNvZGU7CnsKICAgICAgICBzdHJ1Y3Qg
UFNfRm9udE5hbWUgKmZucDsKICAgICAgICBjaGFyICpyZWNvZGUgPSAoKHZvaWQgKikwKTsKCiAg
IGZvciAoZm5wPVBTX0RvY0ZvbnRzOyBmbnAgOyBmbnAgPSBmbnAtPm5leHQpCiAgICAgICAgICAg
ICAgICBpZiAoX19leHRlbnNpb25fXyAoeyBzaXplX3QgX19zMV9sZW4sIF9fczJfbGVuOyAoX19i
dWlsdGluX2NvbnN0YW50X3AgKGZucC0+bmFtZSkgJiYgX19idWlsdGluX2NvbnN0YW50X3AgKGZu
YW1lKSAmJiAoX19zMV9sZW4gPSBzdHJsZW4gKGZucC0+bmFtZSksIF9fczJfbGVuID0gc3RybGVu
IChmbmFtZSksICghKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKGZucC0+bmFtZSkgKyAxKSAtIChz
aXplX3QpKGNvbnN0IHZvaWQgKikoZm5wLT5uYW1lKSA9PSAxKSB8fCBfX3MxX2xlbiA+PSA0KSAm
JiAoISgoc2l6ZV90KShjb25zdCB2b2lkICopKChmbmFtZSkgKyAxKSAtIChzaXplX3QpKGNvbnN0
IHZvaWQgKikoZm5hbWUpID09IDEpIHx8IF9fczJfbGVuID49IDQpKSA/IG1lbWNtcCAoKF9fY29u
c3QgY2hhciAqKSAoZm5wLT5uYW1lKSwgKF9fY29uc3QgY2hhciAqKSAoZm5hbWUpLCAoX19zMV9s
ZW4gPCBfX3MyX2xlbiA/IF9fczFfbGVuIDogX19zMl9sZW4pICsgMSkgOiAoX19idWlsdGluX2Nv
bnN0YW50X3AgKGZucC0+bmFtZSkgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKGZucC0+bmFt
ZSkgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoZm5wLT5uYW1lKSA9PSAxKSAmJiAoX19z
MV9sZW4gPSBzdHJsZW4gKGZucC0+bmFtZSksIF9fczFfbGVuIDwgNCkgPyAoX19idWlsdGluX2Nv
bnN0YW50X3AgKGZuYW1lKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoZm5hbWUpICsgMSkg
LSAoc2l6ZV90KShjb25zdCB2b2lkICopKGZuYW1lKSA9PSAxKSA/IChfX2V4dGVuc2lvbl9fICh7
IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19j
b25zdCBjaGFyICopIChmbnAtPm5hbWUpKVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikoZm5hbWUpKVswXSk7IGlmIChfX3MxX2xlbiA+IDAgJiYgX19yZXN1
bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25z
dCBjaGFyICopIChmbnAtPm5hbWUpKVsxXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf
X2NvbnN0IGNoYXIgKikgKGZuYW1lKSlbMV0pOyBpZiAoX19zMV9sZW4gPiAxICYmIF9fcmVzdWx0
ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg
Y2hhciAqKSAoZm5wLT5uYW1lKSlbMl0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19j
b25zdCBjaGFyICopIChmbmFtZSkpWzJdKTsgaWYgKF9fczFfbGVuID4gMiAmJiBfX3Jlc3VsdCA9
PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFy
ICopIChmbnAtPm5hbWUpKVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0
IGNoYXIgKikgKGZuYW1lKSlbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSA6IChfX2V4dGVuc2lvbl9f
ICh7IF9fY29uc3QgdW5zaWduZWQgY2hhciAqX19zMiA9IChfX2NvbnN0IHVuc2lnbmVkIGNoYXIg
KikgKF9fY29uc3QgY2hhciAqKSAoZm5hbWUpOyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSAoKChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoZm5wLT5uYW1lKSlbMF0g
LSBfX3MyWzBdKTsgaWYgKF9fczFfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0
ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGZucC0+bmFt
ZSkpWzFdIC0gX19zMlsxXSk7IGlmIChfX3MxX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBf
X3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChm
bnAtPm5hbWUpKVsyXSAtIF9fczJbMl0pOyBpZiAoX19zMV9sZW4gPiAyICYmIF9fcmVzdWx0ID09
IDApIF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIg
KikgKGZucC0+bmFtZSkpWzNdIC0gX19zMlszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpKSA6IChfX2J1
aWx0aW5fY29uc3RhbnRfcCAoZm5hbWUpICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKChmbmFt
ZSkgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoZm5hbWUpID09IDEpICYmIChfX3MyX2xl
biA9IHN0cmxlbiAoZm5hbWUpLCBfX3MyX2xlbiA8IDQpID8gKF9fYnVpbHRpbl9jb25zdGFudF9w
IChmbnAtPm5hbWUpICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKChmbnAtPm5hbWUpICsgMSkg
LSAoc2l6ZV90KShjb25zdCB2b2lkICopKGZucC0+bmFtZSkgPT0gMSkgPyAoX19leHRlbnNpb25f
XyAoeyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikg
KF9fY29uc3QgY2hhciAqKSAoZm5wLT5uYW1lKSlbMF0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hh
ciAqKSAoX19jb25zdCBjaGFyICopKGZuYW1lKSlbMF0pOyBpZiAoX19zMl9sZW4gPiAwICYmIF9f
cmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9f
Y29uc3QgY2hhciAqKSAoZm5wLT5uYW1lKSlbMV0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAq
KSAoX19jb25zdCBjaGFyICopIChmbmFtZSkpWzFdKTsgaWYgKF9fczJfbGVuID4gMSAmJiBfX3Jl
c3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikgKGZucC0+bmFtZSkpWzJdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikg
KF9fY29uc3QgY2hhciAqKSAoZm5hbWUpKVsyXSk7IGlmIChfX3MyX2xlbiA+IDIgJiYgX19yZXN1
bHQgPT0gMCkgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg
Y2hhciAqKSAoZm5wLT5uYW1lKSlbM10gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19j
b25zdCBjaGFyICopIChmbmFtZSkpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkgOiAoX19leHRlbnNp
b25fXyAoeyBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKl9fczEgPSAoX19jb25zdCB1bnNpZ25lZCBj
aGFyICopIChfX2NvbnN0IGNoYXIgKikgKGZucC0+bmFtZSk7IHJlZ2lzdGVyIGludCBfX3Jlc3Vs
dCA9IF9fczFbMF0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop
IChmbmFtZSkpWzBdOyBpZiAoX19zMl9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1
bHQgPSAoX19zMVsxXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIg
KikgKGZuYW1lKSlbMV0pOyBpZiAoX19zMl9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19y
ZXN1bHQgPSAoX19zMVsyXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNo
YXIgKikgKGZuYW1lKSlbMl0pOyBpZiAoX19zMl9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9f
cmVzdWx0ID0gKF9fczFbM10gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBj
aGFyICopIChmbmFtZSkpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkpIDogc3RyY21wIChmbnAtPm5h
bWUsIGZuYW1lKSkpKTsgfSk9PTApCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoKHZv
aWQgKikwKTsKCgoKICAgZm5wID0gKHN0cnVjdCBQU19Gb250TmFtZSAqKWdwX2FsbG9jKHNpemVv
ZihzdHJ1Y3QgUFNfRm9udE5hbWUpLCAiUG9zdFNjcmlwdCBGb250IHJlY29yZCIpOwogICBmbnAt
Pm5hbWUgPSBncF9hbGxvYygxK3N0cmxlbihmbmFtZSksICJQb3N0U2NyaXB0IEZvbnQgbmFtZSIp
OwogICAoX19leHRlbnNpb25fXyAoX19idWlsdGluX2NvbnN0YW50X3AgKGZuYW1lKSA/ICgoKHNp
emVfdCkoY29uc3Qgdm9pZCAqKSgoZm5hbWUpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICop
KGZuYW1lKSA9PSAxKSAmJiBzdHJsZW4gKGZuYW1lKSArIDEgPD0gOCA/IF9fc3RyY3B5X3NtYWxs
IChmbnAtPm5hbWUsIF9fZXh0ZW5zaW9uX18gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf
X2NvbnN0IGNoYXIgKikgKGZuYW1lKSlbMCArIDFdIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQg
Y2hhciAqKSAoX19jb25zdCBjaGFyICopIChmbmFtZSkpWzBdKSwgX19leHRlbnNpb25fXyAoKChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoZm5hbWUpKVs0ICsgMV0g
PDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGZuYW1l
KSlbNF0pLCBfX2V4dGVuc2lvbl9fICgoKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikgKGZuYW1lKSlbMCArIDNdIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hh
ciAqKSAoX19jb25zdCBjaGFyICopIChmbmFtZSkpWzAgKyAyXSkgPDwgOCB8ICgoX19jb25zdCB1
bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGZuYW1lKSlbMCArIDFdKSA8PCA4IHwg
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoZm5hbWUpKVswXSks
IF9fZXh0ZW5zaW9uX18gKCgoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh
ciAqKSAoZm5hbWUpKVs0ICsgM10gPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf
X2NvbnN0IGNoYXIgKikgKGZuYW1lKSlbNCArIDJdKSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoZm5hbWUpKVs0ICsgMV0pIDw8IDggfCAoKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChmbmFtZSkpWzRdKSwgc3RybGVu
IChmbmFtZSkgKyAxKSA6IChjaGFyICopIG1lbWNweSAoZm5wLT5uYW1lLCBmbmFtZSwgc3RybGVu
IChmbmFtZSkgKyAxKSkgOiBzdHJjcHkgKGZucC0+bmFtZSwgZm5hbWUpKSk7CiAgIGZucC0+bmV4
dCA9IFBTX0RvY0ZvbnRzOwogICBQU19Eb2NGb250cyA9IGZucDsKCiAgICAgICAgc3dpdGNoKGVu
Y29kaW5nKQogICAgICAgIHsKICAgICAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICAg
ICAgICAgICAgcmVjb2RlID0gInJlZW5jb2RlSVNPIGRlZlxuIjsKICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgICAgICAg
ICAgIHJlY29kZSA9ICJyZWVuY29kZUNQNDM3IGRlZlxuIjsKICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlIDMgOgogICAgICAgICAgICAgICAgICAgICAg
ICByZWNvZGUgPSAicmVlbmNvZGVDUDg1MCBkZWZcbiI7CiAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgIH0KCiAgICAgICAgaWYgKGNhbl9yZWVuY29kZSAmJiByZWNvZGUpCiAg
ICAgICAgeyBmcHJpbnRmKGdwb3V0ZmlsZSwiLyVzICVzIixmbmFtZSwgcmVjb2RlKTsKICAgICAg
ICAgICAgICAgIHJldHVybiAoKHZvaWQgKikwKTsKICAgICAgICB9CiAgICAgICAgZWxzZQogICAg
ICAgICAgICAgICAgcmV0dXJuIHJlY29kZTsKfQoKc3RhdGljIGludCBQU19wZW5feCwgUFNfcGVu
X3k7CnN0YXRpYyBpbnQgUFNfdGFrZW47CnN0YXRpYyBpbnQgUFNfbGluZXR5cGVfbGFzdDsKc3Rh
dGljIFRCT09MRUFOIFBTX3JlbGF0aXZlX29rOwoKc3RhdGljIHZvaWQgUFNfb3B0aW9ucygpCnsK
ICAgICAgICBpZiAoIShjX3Rva2VuID49IG51bV90b2tlbnMgfHwgZXF1YWxzKGNfdG9rZW4sIjsi
KSkpIHsKICAgICAgICAgICAgICAgIGlmIChhbG1vc3RfZXF1YWxzKGNfdG9rZW4sInAkb3J0cmFp
dCIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHBzX3BvcnRyYWl0PTE7CiAgICAgICAgICAg
ICAgICAgICAgICAgIHBzX2Vwcz0wOwogICAgICAgICAgICAgICAgICAgICAgICBjX3Rva2VuKys7
CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIGlmIChhbG1vc3RfZXF1YWxz
KGNfdG9rZW4sImwkYW5kc2NhcGUiKSkgewogICAgICAgICAgICAgICAgICAgICAgICBwc19wb3J0
cmFpdD0wOwogICAgICAgICAgICAgICAgICAgICAgICBwc19lcHM9MDsKICAgICAgICAgICAgICAg
ICAgICAgICAgY190b2tlbisrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxz
ZSBpZiAoYWxtb3N0X2VxdWFscyhjX3Rva2VuLCJlcCRzZiIpKSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgIHBzX3BvcnRyYWl0PTE7CiAgICAgICAgICAgICAgICAgICAgICAgIHBzX2VwcyA9IDE7
CiAgICAgICAgICAgICAgICAgICAgICAgIGNfdG9rZW4rKzsKICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgIGVsc2UgaWYgKGFsbW9zdF9lcXVhbHMoY190b2tlbiwiZCRlZmF1bHQiKSkg
ewogICAgICAgICAgICAgICAgICAgICAgICBwc19wb3J0cmFpdD0wOwogICAgICAgICAgICAgICAg
ICAgICAgICBwc19lcHM9MDsKICAgICAgICAgICAgICAgICAgICAgICAgcHNfY29sb3I9MDsKICAg
ICAgICAgICAgICAgICAgICAgICAgcHNfc29saWQ9MDsKICAgICAgICAgICAgICAgICAgICAgICAg
cHNfZHVwbGV4X29wdGlvbj0wOwogICAgICAgICAgICAgICAgICAgICAgICAoX19leHRlbnNpb25f
XyAoX19idWlsdGluX2NvbnN0YW50X3AgKCJIZWx2ZXRpY2EiKSA/ICgoKHNpemVfdCkoY29uc3Qg
dm9pZCAqKSgoIkhlbHZldGljYSIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKCJIZWx2
ZXRpY2EiKSA9PSAxKSAmJiBzdHJsZW4gKCJIZWx2ZXRpY2EiKSArIDEgPD0gOCA/IF9fc3RyY3B5
X3NtYWxsIChwc19mb250LCBfX2V4dGVuc2lvbl9fICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAq
KSAoX19jb25zdCBjaGFyICopICgiSGVsdmV0aWNhIikpWzAgKyAxXSA8PCA4IHwgKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIkhlbHZldGljYSIpKVswXSksIF9f
ZXh0ZW5zaW9uX18gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KCJIZWx2ZXRpY2EiKSlbNCArIDFdIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAo
X19jb25zdCBjaGFyICopICgiSGVsdmV0aWNhIikpWzRdKSwgX19leHRlbnNpb25fXyAoKCgoKF9f
Y29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiSGVsdmV0aWNhIikpWzAg
KyAzXSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAo
IkhlbHZldGljYSIpKVswICsgMl0pIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAo
X19jb25zdCBjaGFyICopICgiSGVsdmV0aWNhIikpWzAgKyAxXSkgPDwgOCB8ICgoX19jb25zdCB1
bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJIZWx2ZXRpY2EiKSlbMF0pLCBfX2V4
dGVuc2lvbl9fICgoKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KCJIZWx2ZXRpY2EiKSlbNCArIDNdIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAo
X19jb25zdCBjaGFyICopICgiSGVsdmV0aWNhIikpWzQgKyAyXSkgPDwgOCB8ICgoX19jb25zdCB1
bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJIZWx2ZXRpY2EiKSlbNCArIDFdKSA8
PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIkhlbHZl
dGljYSIpKVs0XSksIHN0cmxlbiAoIkhlbHZldGljYSIpICsgMSkgOiAoY2hhciAqKSBtZW1jcHkg
KHBzX2ZvbnQsICJIZWx2ZXRpY2EiLCBzdHJsZW4gKCJIZWx2ZXRpY2EiKSArIDEpKSA6IHN0cmNw
eSAocHNfZm9udCwgIkhlbHZldGljYSIpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHBzX2Zv
bnRzaXplID0gMTQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHRlcm0tPnZfY2hhciA9ICh1bnNp
Z25lZCBpbnQpKHBzX2ZvbnRzaXplKigxMCkpOwogICAgICAgICAgICAgICAgICAgICAgICB0ZXJt
LT5oX2NoYXIgPSAodW5zaWduZWQgaW50KShwc19mb250c2l6ZSooMTApKjYvMTApOwogICAgICAg
ICAgICAgICAgICAgICAgICB0ZXJtLT5wdXRfdGV4dCA9IFBTX3B1dF90ZXh0OwogICAgICAgICAg
ICAgICAgICAgICAgICBjX3Rva2VuKys7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgfQoKICAg
ICAgICBpZiAoYWxtb3N0X2VxdWFscyhjX3Rva2VuLCAiZW5oJGFuY2VkIikpIHsKICAgICAgICAg
ICAgICAgIHRlcm0tPnB1dF90ZXh0ID0gRU5IUFNfcHV0X3RleHQ7CiAgICAgICAgICAgICAgICB0
ZXJtLT5zZXRfZm9udCA9IEVOSFBTX3NldF9mb250OwogICAgICAgICAgICAgICAgKytjX3Rva2Vu
OwogICAgICAgIH0gZWxzZSBpZiAoYWxtb3N0X2VxdWFscyhjX3Rva2VuLCAibm9lbmgkYW5jZWQi
KSkgewogICAgICAgICAgICAgICAgdGVybS0+cHV0X3RleHQgPSBQU19wdXRfdGV4dDsKICAgICAg
ICAgICAgICAgIHRlcm0tPnNldF9mb250ID0gUFNfc2V0X2ZvbnQ7CiAgICAgICAgICAgICAgICAr
K2NfdG9rZW47CiAgICAgICAgfQoKICAgICAgICBpZiAoIShjX3Rva2VuID49IG51bV90b2tlbnMg
fHwgZXF1YWxzKGNfdG9rZW4sIjsiKSkpIHsKICAgICAgICAgICAgICAgIGlmIChhbG1vc3RfZXF1
YWxzKGNfdG9rZW4sIm0kb25vY2hyb21lIikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcHNf
Y29sb3I9MDsKICAgICAgICAgICAgICAgICAgICAgICAgY190b2tlbisrOwogICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgZWxzZSBpZiAoYWxtb3N0X2VxdWFscyhjX3Rva2VuLCJjJG9s
b3IiKQogICAgICAgICAgICAgICAgICAgICAgICAgfHwgYWxtb3N0X2VxdWFscyhjX3Rva2VuLCJj
JG9sb3VyIikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcHNfY29sb3I9MTsKICAgICAgICAg
ICAgICAgICAgICAgICAgY190b2tlbisrOwogICAgICAgICAgICAgICAgfQogICAgICAgIH0KCiAg
ICAgICAgaWYgKCEoY190b2tlbiA+PSBudW1fdG9rZW5zIHx8IGVxdWFscyhjX3Rva2VuLCI7Iikp
KSB7CiAgICAgICAgICAgICAgICBpZiAoYWxtb3N0X2VxdWFscyhjX3Rva2VuLCJzbyRsaWQiKSkg
ewogICAgICAgICAgICAgICAgICAgICAgICBwc19zb2xpZD0xOwogICAgICAgICAgICAgICAgICAg
ICAgICBjX3Rva2VuKys7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIGlm
IChhbG1vc3RfZXF1YWxzKGNfdG9rZW4sImRhJHNoZWQiKSkgewogICAgICAgICAgICAgICAgICAg
ICAgICBwc19zb2xpZD0wOwogICAgICAgICAgICAgICAgICAgICAgICBjX3Rva2VuKys7CiAgICAg
ICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoIShjX3Rva2VuID49IG51bV90b2tl
bnMgfHwgZXF1YWxzKGNfdG9rZW4sIjsiKSkpIHsKICAgICAgICAgICAgICAgIGlmIChhbG1vc3Rf
ZXF1YWxzKGNfdG9rZW4sInNpJG1wbGV4IikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcHNf
ZHVwbGV4X3N0YXRlID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgcHNfZHVwbGV4X29wdGlv
biA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgIGNfdG9rZW4rKzsKICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgIGVsc2UgaWYgKGFsbW9zdF9lcXVhbHMoY190b2tlbiwiZHUkcGxl
eCIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHBzX2R1cGxleF9zdGF0ZSA9IDE7CiAgICAg
ICAgICAgICAgICAgICAgICAgIHBzX2R1cGxleF9vcHRpb24gPSAxOwogICAgICAgICAgICAgICAg
ICAgICAgICBjX3Rva2VuKys7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNl
IGlmIChhbG1vc3RfZXF1YWxzKGNfdG9rZW4sImRlZmF1bHRwJGxleCIpKSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgIHBzX2R1cGxleF9vcHRpb24gPSAwOwogICAgICAgICAgICAgICAgICAgICAg
ICBjX3Rva2VuKys7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoIShj
X3Rva2VuID49IG51bV90b2tlbnMgfHwgZXF1YWxzKGNfdG9rZW4sIjsiKSkgJiYgaXNzdHJpbmco
Y190b2tlbikpIHsKICAgICAgICAgICAgICAgIHF1b3RlX3N0cihwc19mb250LGNfdG9rZW4sIDUw
KTsKICAgICAgICAgICAgICAgIGNfdG9rZW4rKzsKICAgICAgICB9CgogICAgICAgIGlmICghKGNf
dG9rZW4gPj0gbnVtX3Rva2VucyB8fCBlcXVhbHMoY190b2tlbiwiOyIpKSkgewoKICAgICAgICAg
ICAgICAgIHN0cnVjdCB2YWx1ZSBhOwogICAgICAgICAgICAgICAgcHNfZm9udHNpemUgPSAoaW50
KXJlYWwoY29uc3RfZXhwcmVzcygmYSkpOwogICAgICAgICAgICAgICAgdGVybS0+dl9jaGFyID0g
KHVuc2lnbmVkIGludCkocHNfZm9udHNpemUqKDEwKSk7CiAgICAgICAgICAgICAgICB0ZXJtLT5o
X2NoYXIgPSAodW5zaWduZWQgaW50KShwc19mb250c2l6ZSooMTApKjYvMTApOwogICAgICAgIH0K
CiAgICAgICAgc3ByaW50ZihkZWZhdWx0X2ZvbnQsIiVzLCVkIixwc19mb250LHBzX2ZvbnRzaXpl
KTsKCgogICAgICAgIHNwcmludGYodGVybV9vcHRpb25zLCIlcyAlc2VuaGFuY2VkICVzICVzICVz
IFwiJXNcIiAlZCIsCiAgICAgICAgICAgICAgICBwc19lcHMgPyAiZXBzIiA6IChwc19wb3J0cmFp
dCA/ICJwb3J0cmFpdCIgOiAibGFuZHNjYXBlIiksCiAgICAgIHRlcm0tPnB1dF90ZXh0ID09IEVO
SFBTX3B1dF90ZXh0ID8gIiIgOiAibm8iLAogICAgICAgICAgICAgICAgcHNfY29sb3IgPyAiY29s
b3IiIDogIm1vbm9jaHJvbWUiLAogICAgICAgICAgICAgICAgcHNfc29saWQgPyAic29saWQiIDog
ImRhc2hlZCIsCiAgICAgICAgICAgICAgICBwc19kdXBsZXhfb3B0aW9uID8gKHBzX2R1cGxleF9z
dGF0ZSA/ICJkdXBsZXgiIDogInNpbXBsZXgiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA6ICJkZWZhdWx0cGxleCIsCiAgICAgICAgICAgICAgICBwc19mb250LHBzX2ZvbnRz
aXplKTsKfQoKCgoKc3RhdGljIGludCBwc19jb21tb25fZW5jYXA7CnN0YXRpYyBpbnQgcHNfY29t
bW9uX3BvcnRyYWl0OwpzdGF0aWMgaW50IHBzX2NvbW1vbl91c2VzX2ZvbnRzOwpzdGF0aWMgdW5z
aWduZWQgaW50IHBzX2NvbW1vbl94b2ZmLCBwc19jb21tb25feW9mZjsKCgpzdGF0aWMgdm9pZCBQ
U19jb21tb25faW5pdChlbmNhcCwgcG9ydHJhaXQsIHVzZXNfZm9udHMsIHhvZmYsIHlvZmYsIGJi
X3htaW4sIGJiX3ltaW4sIGJiX3htYXgsIGJiX3ltYXgsIGRpY3QpCmludCBlbmNhcDsKaW50IHBv
cnRyYWl0OwppbnQgdXNlc19mb250czsKdW5zaWduZWQgaW50IHhvZmYsIHlvZmY7CnVuc2lnbmVk
IGludCBiYl94bWluLCBiYl95bWluLCBiYl94bWF4LCBiYl95bWF4OwpjaGFyICoqZGljdDsKewpz
dGF0aWMgY2hhciBwc2kxW10gPSAiJSUlJUNyZWF0b3I6IGdudXBsb3QgJXMgcGF0Y2hsZXZlbCAl
c1xuJSUlJUNyZWF0aW9uRGF0ZTogJXMlJSUlRG9jdW1lbnRGb250czogJXNcbiI7CgoKc3RhdGlj
IGNoYXIgcHNpMltdID0gIiUlJSVFbmRDb21tZW50c1xuL2dudWRpY3QgMjU2IGRpY3QgZGVmXG5n
bnVkaWN0IGJlZ2luXG4vQ29sb3IgJXMgZGVmXG4vU29saWQgJXMgZGVmXG4vZ251bGluZXdpZHRo
ICUuM2YgZGVmXG4vdXNlcmxpbmV3aWR0aCBnbnVsaW5ld2lkdGggZGVmXG4vdnNoaWZ0ICVkIGRl
ZlxuL2RsIHslZCBtdWx9IGRlZlxuL2hwdF8gJS4xZiBkZWZcbi92cHRfICUuMWYgZGVmXG4vaHB0
IGhwdF8gZGVmXG4vdnB0IHZwdF8gZGVmXG4iOwojIDY3NSAidGVybS9wb3N0LnRybSIKc3RhdGlj
IGNoYXIgKiBQU19pc29fODg1OV8xX2VuY29kaW5nW10gPSB7CiIvcmVlbmNvZGVJU08ge1xuIiwK
ImR1cCBkdXAgZmluZGZvbnQgZHVwIGxlbmd0aCBkaWN0IGJlZ2luXG4iLAoieyAxIGluZGV4IC9G
SUQgbmUgeyBkZWYgfXsgcG9wIHBvcCB9IGlmZWxzZSB9IGZvcmFsbFxuIiwKImN1cnJlbnRkaWN0
IC9DaGFyU3RyaW5ncyBrbm93biB7XG4iLAoiXHRDaGFyU3RyaW5ncyAvSWRpZXJlc2lzIGtub3du
IHtcbiIsCiJcdFx0L0VuY29kaW5nIElTT0xhdGluMUVuY29kaW5nIGRlZiB9IGlmXG59IGlmXG4i
LAoiY3VycmVudGRpY3QgZW5kIGRlZmluZWZvbnRcbiIsCiJ9IGRlZlxuIiwKIi9JU09MYXRpbjFF
bmNvZGluZyBbXG4iLAoiLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8u
bm90ZGVmLy5ub3RkZWYvLm5vdGRlZlxuIiwKIi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90
ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWZcbiIsCiIvLm5vdGRlZi8ubm90ZGVm
Ly5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmXG4iLAoiLy5u
b3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5v
dGRlZlxuIiwKIi9zcGFjZS9leGNsYW0vcXVvdGVkYmwvbnVtYmVyc2lnbi9kb2xsYXIvcGVyY2Vu
dC9hbXBlcnNhbmQvcXVvdGVyaWdodFxuIiwKIi9wYXJlbmxlZnQvcGFyZW5yaWdodC9hc3Rlcmlz
ay9wbHVzL2NvbW1hL21pbnVzL3BlcmlvZC9zbGFzaFxuIiwKIi96ZXJvL29uZS90d28vdGhyZWUv
Zm91ci9maXZlL3NpeC9zZXZlbi9laWdodC9uaW5lL2NvbG9uL3NlbWljb2xvblxuIiwKIi9sZXNz
L2VxdWFsL2dyZWF0ZXIvcXVlc3Rpb24vYXQvQS9CL0MvRC9FL0YvRy9IL0kvSi9LL0wvTS9OXG4i
LAoiL08vUC9RL1IvUy9UL1UvVi9XL1gvWS9aL2JyYWNrZXRsZWZ0L2JhY2tzbGFzaC9icmFja2V0
cmlnaHRcbiIsCiIvYXNjaWljaXJjdW0vdW5kZXJzY29yZS9xdW90ZWxlZnQvYS9iL2MvZC9lL2Yv
Zy9oL2kvai9rL2wvbVxuIiwKIi9uL28vcC9xL3Ivcy90L3Uvdi93L3gveS96L2JyYWNlbGVmdC9i
YXIvYnJhY2VyaWdodC9hc2NpaXRpbGRlXG4iLAoiLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5u
b3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZlxuIiwKIi8ubm90ZGVmLy5ub3Rk
ZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWZcbiIsCiIv
Lm5vdGRlZi9kb3RsZXNzaS9ncmF2ZS9hY3V0ZS9jaXJjdW1mbGV4L3RpbGRlL21hY3Jvbi9icmV2
ZVxuIiwKIi9kb3RhY2NlbnQvZGllcmVzaXMvLm5vdGRlZi9yaW5nL2NlZGlsbGEvLm5vdGRlZi9o
dW5nYXJ1bWxhdXRcbiIsCiIvb2dvbmVrL2Nhcm9uL3NwYWNlL2V4Y2xhbWRvd24vY2VudC9zdGVy
bGluZy9jdXJyZW5jeS95ZW4vYnJva2VuYmFyXG4iLAoiL3NlY3Rpb24vZGllcmVzaXMvY29weXJp
Z2h0L29yZGZlbWluaW5lL2d1aWxsZW1vdGxlZnQvbG9naWNhbG5vdFxuIiwKIi9oeXBoZW4vcmVn
aXN0ZXJlZC9tYWNyb24vZGVncmVlL3BsdXNtaW51cy90d29zdXBlcmlvci90aHJlZXN1cGVyaW9y
XG4iLAoiL2FjdXRlL211L3BhcmFncmFwaC9wZXJpb2RjZW50ZXJlZC9jZWRpbGxhL29uZXN1cGVy
aW9yL29yZG1hc2N1bGluZVxuIiwKIi9ndWlsbGVtb3RyaWdodC9vbmVxdWFydGVyL29uZWhhbGYv
dGhyZWVxdWFydGVycy9xdWVzdGlvbmRvd25cbiIsCiIvQWdyYXZlL0FhY3V0ZS9BY2lyY3VtZmxl
eC9BdGlsZGUvQWRpZXJlc2lzL0FyaW5nL0FFL0NjZWRpbGxhXG4iLAoiL0VncmF2ZS9FYWN1dGUv
RWNpcmN1bWZsZXgvRWRpZXJlc2lzL0lncmF2ZS9JYWN1dGUvSWNpcmN1bWZsZXhcbiIsCiIvSWRp
ZXJlc2lzL0V0aC9OdGlsZGUvT2dyYXZlL09hY3V0ZS9PY2lyY3VtZmxleC9PdGlsZGUvT2RpZXJl
c2lzXG4iLAoiL211bHRpcGx5L09zbGFzaC9VZ3JhdmUvVWFjdXRlL1VjaXJjdW1mbGV4L1VkaWVy
ZXNpcy9ZYWN1dGVcbiIsCiIvVGhvcm4vZ2VybWFuZGJscy9hZ3JhdmUvYWFjdXRlL2FjaXJjdW1m
bGV4L2F0aWxkZS9hZGllcmVzaXNcbiIsCiIvYXJpbmcvYWUvY2NlZGlsbGEvZWdyYXZlL2VhY3V0
ZS9lY2lyY3VtZmxleC9lZGllcmVzaXMvaWdyYXZlXG4iLAoiL2lhY3V0ZS9pY2lyY3VtZmxleC9p
ZGllcmVzaXMvZXRoL250aWxkZS9vZ3JhdmUvb2FjdXRlL29jaXJjdW1mbGV4XG4iLAoiL290aWxk
ZS9vZGllcmVzaXMvZGl2aWRlL29zbGFzaC91Z3JhdmUvdWFjdXRlL3VjaXJjdW1mbGV4L3VkaWVy
ZXNpc1xuIiwKIi95YWN1dGUvdGhvcm4veWRpZXJlc2lzXG4iLAoiXSBkZWZcbiIsCigodm9pZCAq
KTApIH07CiMgNzI4ICJ0ZXJtL3Bvc3QudHJtIgpzdGF0aWMgY2hhciAqIFBTX2NwXzQzN19lbmNv
ZGluZ1tdID0gewoiL3JlZW5jb2RlQ1A0Mzcge1xuIiwKImR1cCBkdXAgZmluZGZvbnQgZHVwIGxl
bmd0aCBkaWN0IGJlZ2luXG4iLAoieyAxIGluZGV4IC9GSUQgbmUgeyBkZWYgfXsgcG9wIHBvcCB9
IGlmZWxzZSB9IGZvcmFsbFxuIiwKImN1cnJlbnRkaWN0IC9DaGFyU3RyaW5ncyBrbm93biB7XG4i
LAoiXHRDaGFyU3RyaW5ncyAvSWRpZXJlc2lzIGtub3duIHtcbiIsCiJcdFx0L0VuY29kaW5nIENQ
NDM3RW5jb2RpbmcgZGVmIH0gaWZcbn0gaWZcbiIsCiJjdXJyZW50ZGljdCBlbmQgZGVmaW5lZm9u
dFxuIiwKIn0gZGVmXG4iLAoiL0NQNDM3RW5jb2RpbmcgW1xuIiwKIi8ubm90ZGVmLy5ub3RkZWYv
Lm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWZcbiIsCiIvLm5v
dGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90
ZGVmXG4iLAoiLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVm
Ly5ub3RkZWYvLm5vdGRlZlxuIiwKIi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5u
b3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWZcbiIsCiIvc3BhY2UvZXhjbGFtL3F1b3RlZGJs
L251bWJlcnNpZ24vZG9sbGFyL3BlcmNlbnQvYW1wZXJzYW5kL3F1b3RlcmlnaHRcbiIsCiIvcGFy
ZW5sZWZ0L3BhcmVucmlnaHQvYXN0ZXJpc2svcGx1cy9jb21tYS9taW51cy9wZXJpb2Qvc2xhc2hc
biIsCiIvemVyby9vbmUvdHdvL3RocmVlL2ZvdXIvZml2ZS9zaXgvc2V2ZW4vZWlnaHQvbmluZS9j
b2xvbi9zZW1pY29sb25cbiIsCiIvbGVzcy9lcXVhbC9ncmVhdGVyL3F1ZXN0aW9uL2F0L0EvQi9D
L0QvRS9GL0cvSC9JL0ovSy9ML00vTlxuIiwKIi9PL1AvUS9SL1MvVC9VL1YvVy9YL1kvWi9icmFj
a2V0bGVmdC9iYWNrc2xhc2gvYnJhY2tldHJpZ2h0XG4iLAoiL2FzY2lpY2lyY3VtL3VuZGVyc2Nv
cmUvcXVvdGVsZWZ0L2EvYi9jL2QvZS9mL2cvaC9pL2ovay9sL21cbiIsCiIvbi9vL3AvcS9yL3Mv
dC91L3Yvdy94L3kvei9icmFjZWxlZnQvYmFyL2JyYWNlcmlnaHQvYXNjaWl0aWxkZS8ubm90ZGVm
XG4iLAoiL0NjZWRpbGxhL3VkaWVyZXNpcy9lYWN1dGUvYWNpcmN1bWZsZXgvYWRpZXJlc2lzL2Fn
cmF2ZS9hcmluZy9jY2VkaWxsYVxuIiwKIi9lY2lyY3VtZmxleC9lZGllcmVzaXMvZWdyYXZlL2lk
aWVyZXNpcy9pY2lyY3VtZmxleC9pZ3JhdmUvQWRpZXJlc2lzL0FyaW5nXG4iLAoiL0VhY3V0ZS9h
ZS9BRS9vY2lyY3VtZmxleC9vZGllcmVzaXMvb2dyYXZlL3VjaXJjdW1mbGV4L3VncmF2ZVxuIiwK
Ii95ZGllcmVzaXMvT2RpZXJlc2lzL1VkaWVyZXNpcy9jZW50L3N0ZXJsaW5nL3llbi8ubm90ZGVm
L2Zsb3JpblxuIiwKIi9hYWN1dGUvaWFjdXRlL29hY3V0ZS91YWN1dGUvbnRpbGRlL050aWxkZS9v
cmRmZW1pbmluZS9vcmRtYXNjdWxpbmVcbiIsCiIvcXVlc3Rpb25kb3duLy5ub3RkZWYvbG9naWNh
bG5vdC9vbmVoYWxmL29uZXF1YXJ0ZXIvZXhjbGFtZG93bi9ndWlsbGVtb3RsZWZ0L2d1aWxsZW1v
dHJpZ2h0XG4iLAoiL3NwYWNlL3NwYWNlLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYv
Lm5vdGRlZi8ubm90ZGVmXG4iLAoiLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5v
dGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZlxuIiwKIi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRl
Zi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWZcbiIsCiIvLm5vdGRlZi8u
bm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmXG4i
LAoiLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3Rk
ZWYvLm5vdGRlZlxuIiwKIi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYv
Lm5vdGRlZi8ubm90ZGVmLy5ub3RkZWZcbiIsCiIvLm5vdGRlZi9nZXJtYW5kYmxzLy5ub3RkZWYv
Lm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvbXUvLm5vdGRlZlxuIiwKIi8ubm90ZGVmLy5ub3RkZWYv
Lm5vdGRlZi8ubm90ZGVmL2luZmluaXR5Ly5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmXG4iLAoiLy5u
b3RkZWYvcGx1c21pbnVzL2dyZWF0ZXJlcXVhbC9sZXNzZXF1YWwvLm5vdGRlZi8ubm90ZGVmL2Rp
dmlkZS8ubm90ZGVmXG4iLAoiL2RlZ3JlZS9idWxsZXQvcGVyaW9kY2VudGVyZWQvLm5vdGRlZi9u
c3VwZXJpb3IvdHdvc3VwZXJpb3IvLm5vdGRlZlxuIiwKIl0gZGVmXG4iLAooKHZvaWQgKikwKSB9
OwojIDc3NiAidGVybS9wb3N0LnRybSIKc3RhdGljIGNoYXIgKiBQU19jcF84NTBfZW5jb2Rpbmdb
XSA9IHsKIi9yZWVuY29kZUNQODUwIHtcbiIsCiJkdXAgZHVwIGZpbmRmb250IGR1cCBsZW5ndGgg
ZGljdCBiZWdpblxuIiwKInsgMSBpbmRleCAvRklEIG5lIHsgZGVmIH17IHBvcCBwb3AgfSBpZmVs
c2UgfSBmb3JhbGxcbiIsCiJjdXJyZW50ZGljdCAvQ2hhclN0cmluZ3Mga25vd24ge1xuIiwKIlx0
Q2hhclN0cmluZ3MgL0lkaWVyZXNpcyBrbm93biB7XG4iLAoiXHRcdC9FbmNvZGluZyBDUDg1MEVu
Y29kaW5nIGRlZiB9IGlmXG59IGlmXG4iLAoiY3VycmVudGRpY3QgZW5kIGRlZmluZWZvbnRcbiIs
CiJ9IGRlZlxuIiwKIi9DUDg1MEVuY29kaW5nIFtcbiIsCiIvLm5vdGRlZi8ubm90ZGVmLy5ub3Rk
ZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmXG4iLAoiLy5ub3RkZWYv
Lm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZlxu
IiwKIi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90
ZGVmLy5ub3RkZWZcbiIsCiIvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVm
Ly5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmXG4iLAoiL3NwYWNlL2V4Y2xhbS9xdW90ZWRibC9udW1i
ZXJzaWduL2RvbGxhci9wZXJjZW50L2FtcGVyc2FuZC9xdW90ZXJpZ2h0XG4iLAoiL3BhcmVubGVm
dC9wYXJlbnJpZ2h0L2FzdGVyaXNrL3BsdXMvY29tbWEvbWludXMvcGVyaW9kL3NsYXNoXG4iLAoi
L3plcm8vb25lL3R3by90aHJlZS9mb3VyL2ZpdmUvc2l4L3NldmVuL2VpZ2h0L25pbmUvY29sb24v
c2VtaWNvbG9uXG4iLAoiL2xlc3MvZXF1YWwvZ3JlYXRlci9xdWVzdGlvbi9hdC9BL0IvQy9EL0Uv
Ri9HL0gvSS9KL0svTC9NL05cbiIsCiIvTy9QL1EvUi9TL1QvVS9WL1cvWC9ZL1ovYnJhY2tldGxl
ZnQvYmFja3NsYXNoL2JyYWNrZXRyaWdodFxuIiwKIi9hc2NpaWNpcmN1bS91bmRlcnNjb3JlL3F1
b3RlbGVmdC9hL2IvYy9kL2UvZi9nL2gvaS9qL2svbC9tXG4iLAoiL24vby9wL3Evci9zL3QvdS92
L3cveC95L3ovYnJhY2VsZWZ0L2Jhci9icmFjZXJpZ2h0L2FzY2lpdGlsZGUvLm5vdGRlZlxuIiwK
Ii9DY2VkaWxsYS91ZGllcmVzaXMvZWFjdXRlL2FjaXJjdW1mbGV4L2FkaWVyZXNpcy9hZ3JhdmUv
YXJpbmcvY2NlZGlsbGFcbiIsCiIvZWNpcmN1bWZsZXgvZWRpZXJlc2lzL2VncmF2ZS9pZGllcmVz
aXMvaWNpcmN1bWZsZXgvaWdyYXZlL0FkaWVyZXNpcy9BcmluZ1xuIiwKIi9FYWN1dGUvYWUvQUUv
b2NpcmN1bWZsZXgvb2RpZXJlc2lzL29ncmF2ZS91Y2lyY3VtZmxleC91Z3JhdmVcbiIsCiIveWRp
ZXJlc2lzL09kaWVyZXNpcy9VZGllcmVzaXMvb3NsYXNoL3N0ZXJsaW5nL09zbGFzaC9tdWx0aXBs
eS9mbG9yaW5cbiIsCiIvYWFjdXRlL2lhY3V0ZS9vYWN1dGUvdWFjdXRlL250aWxkZS9OdGlsZGUv
b3JkZmVtaW5pbmUvb3JkbWFzY3VsaW5lXG4iLAoiL3F1ZXN0aW9uZG93bi9yZWdpc3RlcmVkL2xv
Z2ljYWxub3Qvb25laGFsZi9vbmVxdWFydGVyL2V4Y2xhbWRvd24vZ3VpbGxlbW90bGVmdC9ndWls
bGVtb3RyaWdodFxuIiwKIi9zcGFjZS9zcGFjZS8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi9BYWN1
dGUvQWNpcmN1bWZsZXgvQWdyYXZlXG4iLAoiLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3Rk
ZWYvLm5vdGRlZi9jZW50L3llbi8ubm90ZGVmXG4iLAoiLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVm
Ly5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmL2F0aWxkZS9BdGlsZGVcbiIsCiIvLm5vdGRlZi8ubm90
ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi9jdXJyZW5jeVxuIiwK
Ii9ldGgvRXRoL0VjaXJjdW1mbGV4L0VkaWVyZXNpcy9FZ3JhdmUvZG90bGVzc2kvSWFjdXRlL0lj
aXJjdW1mbGV4XG4iLAoiL0lkaWVyZXNpcy8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVm
L2Jyb2tlbmJhci9JZ3JhdmUvLm5vdGRlZlxuIiwKIi9PYWN1dGUvZ2VybWFuZGJscy9PY2lyY3Vt
ZmxleC9PZ3JhdmUvb3RpbGRlL090aWxkZS9tdS90aG9yblxuIiwKIi9UaG9ybi9VYWN1dGUvVWNp
cmN1bWZsZXgvVWdyYXZlL3lhY3V0ZS9ZYWN1dGUvbWFjcm9uL2FjdXRlXG4iLAoiL2h5cGhlbi9w
bHVzbWludXMvZXF1YWwvdGhyZWVxdWFydGVycy9wYXJhZ3JhcGgvc2VjdGlvbi9kaXZpZGUvLm5v
dGRlZlxuIiwKIi9kZWdyZWUvLm5vdGRlZi9wZXJpb2RjZW50ZXJlZC9vbmVzdXBlcmlvci90aHJl
ZXN1cGVyaW9yL3R3b3N1cGVyaW9yLy5ub3RkZWZcbiIsCiJdIGRlZlxuIiwKKCh2b2lkICopMCkg
fTsKCiAgICAgICAgc3RydWN0IFRFUk1FTlRSWSAqdCA9IHRlcm07CiAgICAgICAgaW50IGk7CiAg
ICAgICAgdGltZV90IG5vdzsKCiAgICAgICAgcHNfY29tbW9uX2VuY2FwID0gZW5jYXA7CiAgICAg
ICAgcHNfY29tbW9uX3BvcnRyYWl0ID0gcG9ydHJhaXQ7CiAgICAgICAgcHNfY29tbW9uX3VzZXNf
Zm9udHMgPSB1c2VzX2ZvbnRzOwogICAgICAgIHBzX2NvbW1vbl94b2ZmID0geG9mZjsKICAgICAg
ICBwc19jb21tb25feW9mZiA9IHlvZmY7CgogICAgICAgIHBzX3BhZ2UgPSAwOwoKICAgICAgICBp
ZiAoIWVuY2FwKQogICAgICAgICAgICAgICAgZnByaW50ZihncG91dGZpbGUsIiUlIVBTLUFkb2Jl
LTIuMFxuIik7CiAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgZnByaW50ZihncG91dGZpbGUs
IiUlIVBTLUFkb2JlLTIuMCBFUFNGLTIuMFxuIik7CgogICAgICAgIGlmIChvdXRzdHIpIGZwcmlu
dGYoZ3BvdXRmaWxlLCAiJSUlJVRpdGxlOiAlc1xuIiwgb3V0c3RyICk7CiAgICAgICAgdGltZSgm
bm93KTsKICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgcHNpMSwgdmVyc2lvbiwgcGF0Y2hsZXZl
bCwgYXNjdGltZShsb2NhbHRpbWUoJm5vdykpLCB1c2VzX2ZvbnRzID8gIihhdGVuZCkiIDogIiIp
OwoKICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwiJSUlJUJvdW5kaW5nQm94OiAlZCAlZCAlZCAl
ZFxuIiwgeG9mZiArIGJiX3htaW4sIHlvZmYgKyBiYl95bWluLCB4b2ZmICsgYmJfeG1heCwgeW9m
ZiArIGJiX3ltYXgpOwoKICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwiJSUlJU9yaWVudGF0aW9u
OiAlc1xuIiwgcHNfcG9ydHJhaXQgPyAiUG9ydHJhaXQiIDogIkxhbmRzY2FwZSIpOwoKICAgICAg
ICBpZiAoIWVuY2FwKQogICAgICAgICAgICAgICAgZnByaW50ZihncG91dGZpbGUsIiUlJSVQYWdl
czogKGF0ZW5kKVxuIik7CiAgICAgICAgZnByaW50ZihncG91dGZpbGUsIHBzaTIsCiAgICAgICAg
ICAgICAgICBwc19jb2xvciA/ICJ0cnVlIiA6ICJmYWxzZSIsCiAgICAgICAgICAgICAgICBwc19z
b2xpZCA/ICJ0cnVlIiA6ICJmYWxzZSIsCiAgICAgICAgICAgICAgICAoMC41KigxMCkpLAogICAg
ICAgICAgICAgICAgKGludCkodC0+dl9jaGFyKS8oLTMpLAogICAgICAgICAgICAgICAgKDEwKSwK
ICAgICAgICAgICAgICAgICg1MDQwLzgwKS8yLjAsCiAgICAgICAgICAgICAgICAoNTA0MC84MCkv
Mi4wKTsKCiAgICAgICAgaWYgKHVzZXNfZm9udHMgJiYgKGVuY29kaW5nID09IDEpKSB7CiAgICAg
ICAgICAgICAgICBmb3IgKGk9MDsgUFNfaXNvXzg4NTlfMV9lbmNvZGluZ1tpXSAhPSAoKHZvaWQg
KikwKTsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoZ3BvdXRmaWxlLCIl
cyIsUFNfaXNvXzg4NTlfMV9lbmNvZGluZ1tpXSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAg
fQogICAgICAgIGlmICh1c2VzX2ZvbnRzICYmIChlbmNvZGluZyA9PSAyKSkgewogICAgICAgICAg
ICAgICAgZm9yIChpPTA7IFBTX2NwXzQzN19lbmNvZGluZ1tpXSAhPSAoKHZvaWQgKikwKTsgaSsr
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoZ3BvdXRmaWxlLCIlcyIsUFNfY3Bf
NDM3X2VuY29kaW5nW2ldKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYg
KHVzZXNfZm9udHMgJiYgKGVuY29kaW5nID09IDMpKSB7CiAgICAgICAgICAgICAgICBmb3IgKGk9
MDsgUFNfY3BfODUwX2VuY29kaW5nW2ldICE9ICgodm9pZCAqKTApOyBpKyspIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgZnByaW50ZihncG91dGZpbGUsIiVzIixQU19jcF84NTBfZW5jb2Rpbmdb
aV0pOwogICAgICAgICAgICAgICAgfQogICAgICAgIH0KCgoKCgogICAgICAgIGZvciAoIGk9MDsg
UFNfaGVhZGVyW2ldICE9ICgodm9pZCAqKTApOyBpKyspCiAgICAgICAgICAgICAgICBmcHJpbnRm
KGdwb3V0ZmlsZSwiJXMiLFBTX2hlYWRlcltpXSk7CiAgICAgICAgaWYgKHBzX2R1cGxleF9vcHRp
b24pCiAgICAgICAgICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgInN0YXR1c2RpY3QgYmVnaW4g
JXMgc2V0ZHVwbGV4bW9kZSBlbmRcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cHNfZHVwbGV4X3N0YXRlID8gInRydWUiIDogImZhbHNlIik7CiAgICAgICAgUFNfUmVtZW1iZXJG
b250KHBzX2ZvbnQsIDEpOwoKICAgICAgICBpZiAoZGljdCkKICAgICAgICAgICAgICAgIHdoaWxl
ICgqZGljdCkKICAgICAgICAgICAgICAgICAgICAgICAgZnB1dHMoKihkaWN0KyspLCBncG91dGZp
bGUpOwoKICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwiZW5kXG4lJSUlRW5kUHJvbG9nXG4iKTsK
fQoKCnN0YXRpYyB2b2lkIFBTX2luaXQoKQp7CiAgICAgICAgdW5zaWduZWQgaW50IHhtaW5fdCwg
eW1pbl90LCB4bWF4X3QsIHltYXhfdDsKCiAgICAgICAgaWYgKHBzX2VwcykKICAgICAgICB7CiAg
ICAgICAgICAgICAgICB0ZXJtLT54bWF4ID0gNzIwMDsKICAgICAgICAgICAgICAgIHRlcm0tPnlt
YXggPSA1MDQwOwogICAgICAgICAgICAgICAgeG1pbl90ID0gNzIwMCAqIHhvZmZzZXQgLyAoMioo
MTApKTsKICAgICAgICAgICAgICAgIHhtYXhfdCA9IDcyMDAgKiAoeHNpemUgKyB4b2Zmc2V0KSAv
ICgyKigxMCkpOwogICAgICAgICAgICAgICAgeW1pbl90ID0gNTA0MCAqIHlvZmZzZXQgLyAoMioo
MTApKTsKICAgICAgICAgICAgICAgIHltYXhfdCA9IDUwNDAgKiAoeW9mZnNldCArIHlzaXplKSAv
ICgyKigxMCkpOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmIChwc19wb3J0cmFpdCkKICAgICAg
ICB7CiAgICAgICAgICAgICAgICB0ZXJtLT54bWF4ID0gNTA0MDsKICAgICAgICAgICAgICAgIHRl
cm0tPnltYXggPSA3MjAwOwogICAgICAgICAgICAgICAgeG1pbl90ID0gNTA0MCAqIHhvZmZzZXQg
LyAoMTApOwogICAgICAgICAgICAgICAgeG1heF90ID0gNTA0MCAqICh4c2l6ZSArIHhvZmZzZXQp
IC8gKDEwKTsKICAgICAgICAgICAgICAgIHltaW5fdCA9IDcyMDAgKiB5b2Zmc2V0IC8gKDEwKTsK
ICAgICAgICAgICAgICAgIHltYXhfdCA9IDcyMDAgKiAoeXNpemUgKyB5b2Zmc2V0KSAvICgxMCk7
CiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICB7CiAgICAgICAgICAgICAgICB0ZXJtLT54
bWF4ID0gNzIwMDsKICAgICAgICAgICAgICAgIHRlcm0tPnltYXggPSA1MDQwOwogICAgICAgICAg
ICAgICAgeW1pbl90ID0gNzIwMCAqIHhvZmZzZXQgLyAoMTApOwogICAgICAgICAgICAgICAgeW1h
eF90ID0gNzIwMCAqICh4c2l6ZSt4b2Zmc2V0KSAvICgxMCk7CiAgICAgICAgICAgICAgICB4bWlu
X3QgPSA1MDQwICogKDEteXNpemUteW9mZnNldCkgLyAoMTApOwogICAgICAgICAgICAgICAgeG1h
eF90ID0gNTA0MCAqICgxLXlvZmZzZXQpIC8gKDEwKTsKICAgICAgICB9CgoKCgogICAgICAgIChf
X2V4dGVuc2lvbl9fIChfX2J1aWx0aW5fY29uc3RhbnRfcCAocHNfZm9udCkgPyAoKChzaXplX3Qp
KGNvbnN0IHZvaWQgKikoKHBzX2ZvbnQpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKHBz
X2ZvbnQpID09IDEpICYmIHN0cmxlbiAocHNfZm9udCkgKyAxIDw9IDggPyBfX3N0cmNweV9zbWFs
bCAocHNfZW5oX2ZvbnQsIF9fZXh0ZW5zaW9uX18gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikgKHBzX2ZvbnQpKVswICsgMV0gPDwgOCB8ICgoX19jb25zdCB1bnNp
Z25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHBzX2ZvbnQpKVswXSksIF9fZXh0ZW5zaW9u
X18gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHBzX2ZvbnQp
KVs0ICsgMV0gPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIg
KikgKHBzX2ZvbnQpKVs0XSksIF9fZXh0ZW5zaW9uX18gKCgoKChfX2NvbnN0IHVuc2lnbmVkIGNo
YXIgKikgKF9fY29uc3QgY2hhciAqKSAocHNfZm9udCkpWzAgKyAzXSA8PCA4IHwgKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAocHNfZm9udCkpWzAgKyAyXSkgPDwg
OCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHBzX2ZvbnQp
KVswICsgMV0pIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFy
ICopIChwc19mb250KSlbMF0pLCBfX2V4dGVuc2lvbl9fICgoKCgoX19jb25zdCB1bnNpZ25lZCBj
aGFyICopIChfX2NvbnN0IGNoYXIgKikgKHBzX2ZvbnQpKVs0ICsgM10gPDwgOCB8ICgoX19jb25z
dCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHBzX2ZvbnQpKVs0ICsgMl0pIDw8
IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChwc19mb250
KSlbNCArIDFdKSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh
ciAqKSAocHNfZm9udCkpWzRdKSwgc3RybGVuIChwc19mb250KSArIDEpIDogKGNoYXIgKikgbWVt
Y3B5IChwc19lbmhfZm9udCwgcHNfZm9udCwgc3RybGVuIChwc19mb250KSArIDEpKSA6IHN0cmNw
eSAocHNfZW5oX2ZvbnQsIHBzX2ZvbnQpKSk7CiAgICAgICAgcHNfZW5oX2ZvbnRzaXplID0gcHNf
Zm9udHNpemU7CgogICAgICAgIFBTX2NvbW1vbl9pbml0KHBzX2VwcywgcHNfcG9ydHJhaXQsIDEs
IDUwLCA1MCwKICAgICAgICAgICB4bWluX3QsIHltaW5fdCwgeG1heF90LCB5bWF4X3QsCiAgICAg
ICAgICAgKHRlcm0tPnB1dF90ZXh0ID09IEVOSFBTX3B1dF90ZXh0KSA/IEVOSFBTX2hlYWRlciA6
ICgodm9pZCAqKTApKTsKfQoKCnN0YXRpYyB2b2lkIFBTX2dyYXBoaWNzKCkKewpzdGF0aWMgY2hh
ciBwc2cxW10gPSAiMCBzZXRncmF5XG5uZXdwYXRoXG4iOwpzdHJ1Y3QgVEVSTUVOVFJZICp0ID0g
dGVybTsKICAgICAgICBwc19wYWdlKys7CiAgICAgICAgaWYgKCFwc19jb21tb25fZW5jYXApCiAg
ICAgICAgICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwiJSUlJVBhZ2U6ICVkICVkXG4iLHBzX3Bh
Z2UscHNfcGFnZSk7CiAgICAgICAgZnByaW50ZihncG91dGZpbGUsImdudWRpY3QgYmVnaW5cbmdz
YXZlXG4iKTsKICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwiJWQgJWQgdHJhbnNsYXRlXG4iLHBz
X2NvbW1vbl94b2ZmLCBwc19jb21tb25feW9mZik7CiAgICAgICAgZnByaW50ZihncG91dGZpbGUs
IiUuM2YgJS4zZiBzY2FsZVxuIiwgKHBzX2VwcyA/IDAuNSA6IDEuMCkvKDEwKSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBzX2VwcyA/IDAuNSA6IDEuMCkv
KDEwKSk7CiAgICAgICAgaWYgKCFwc19jb21tb25fcG9ydHJhaXQpIHsKICAgICAgICAgICAgZnBy
aW50ZihncG91dGZpbGUsIjkwIHJvdGF0ZVxuMCAlZCB0cmFuc2xhdGVcbiIsIChpbnQpKC01MDQw
KSk7CiAgICAgICAgfQogICAgICAgIGZwcmludGYoZ3BvdXRmaWxlLCBwc2cxKTsKICAgICAgICBp
ZiAocHNfY29tbW9uX3VzZXNfZm9udHMpCiAgICAgICAgICAgICAgICBmcHJpbnRmKGdwb3V0Zmls
ZSwgIiglcykgZmluZGZvbnQgJWQgc2NhbGVmb250IHNldGZvbnRcbiIsIHBzX2ZvbnQsICh0LT52
X2NoYXIpICk7CiAgICAgICAgcHNfcGF0aF9jb3VudCA9IDA7CiAgICAgICAgUFNfcmVsYXRpdmVf
b2sgPSAwOwogICAgICAgIFBTX3Blbl94ID0gUFNfcGVuX3kgPSAtNDAwMDsKICAgICAgICBQU190
YWtlbiA9IDA7CiAgICAgICAgUFNfbGluZXR5cGVfbGFzdCA9IC0xOwp9CgoKc3RhdGljIHZvaWQg
UFNfdGV4dCgpCnsKICAgICAgICBwc19wYXRoX2NvdW50ID0gMDsKICAgICAgICBmcHJpbnRmKGdw
b3V0ZmlsZSwic3Ryb2tlXG5ncmVzdG9yZVxuZW5kXG5zaG93cGFnZVxuIik7CgoKCgp9CgoKc3Rh
dGljIHZvaWQgUFNfcmVzZXQoKQp7CiAgICAgICAgZnByaW50ZihncG91dGZpbGUsIiUlJSVUcmFp
bGVyXG4iKTsKCgoKCgoKICAgICAgICBpZiAocHNfY29tbW9uX3VzZXNfZm9udHMpIHsKICAgICAg
ICAgICAgICAgIGZwcmludGYoZ3BvdXRmaWxlLCIlJSUlRG9jdW1lbnRGb250czogIik7CiAgICAg
ICAgICAgICAgICB3aGlsZSAoUFNfRG9jRm9udHMpIHsKICAgICAgICAgICAgICAgICAgICBzdHJ1
Y3QgUFNfRm9udE5hbWUgKmZucDsKICAgICAgICAgICAgICAgICAgICAgICAgZm5wID0gUFNfRG9j
Rm9udHMtPm5leHQ7CiAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoZ3BvdXRmaWxlLCAi
JXMlcyIsIFBTX0RvY0ZvbnRzLT5uYW1lLCBmbnAgPyAiICIgOiAiXG4iKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgZnJlZShQU19Eb2NGb250cy0+bmFtZSk7CiAgICAgICAgICAgICAgICAgICAg
ICAgIGZyZWUoUFNfRG9jRm9udHMpOwogICAgICAgICAgICAgICAgICAgICAgICBQU19Eb2NGb250
cz1mbnA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmICghcHNfY29tbW9u
X2VuY2FwKQogICAgICAgICAgICAgICAgZnByaW50ZihncG91dGZpbGUsIiUlJSVQYWdlczogJWRc
biIscHNfcGFnZSk7Cn0KCgpzdGF0aWMgdm9pZCBQU19saW5ldHlwZShsaW5ldHlwZSkKaW50IGxp
bmV0eXBlOwp7CiAgICAgICAgbGluZXR5cGUgPSAobGluZXR5cGUgJSA5KSArIDI7CiAgICAgICAg
aWYgKGxpbmV0eXBlIDwgMCkgbGluZXR5cGUgPSAwOwogICAgICAgIFBTX3JlbGF0aXZlX29rID0g
MDsKIyAxMDA2ICJ0ZXJtL3Bvc3QudHJtIgogICAgICAgIFBTX2xpbmV0eXBlX2xhc3QgPSBsaW5l
dHlwZTsKICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwiTFQlY1xuIiwgImJhMDEyMzQ1Njc4Ilts
aW5ldHlwZV0pOwogICAgICAgIHBzX3BhdGhfY291bnQgPSAwOwp9CgoKc3RhdGljIHZvaWQgUFNf
bGluZXdpZHRoIChsaW5ld2lkdGgpCmRvdWJsZSBsaW5ld2lkdGg7CnsKICAgICAgICBmcHJpbnRm
KGdwb3V0ZmlsZSwiJS4zZiBVTFxuIixsaW5ld2lkdGgpOwojIDEwMzggInRlcm0vcG9zdC50cm0i
Cn0KCgpzdGF0aWMgdm9pZCBQU19wb2ludHNpemUgKHB0c2l6ZSkKZG91YmxlIHB0c2l6ZTsKewog
ICAgICAgIGZwcmludGYoZ3BvdXRmaWxlLCIlLjNmIFVQXG4iLHB0c2l6ZSk7CiMgMTA2NyAidGVy
bS9wb3N0LnRybSIKfQoKCnN0YXRpYyB2b2lkIFBTX21vdmUoeCx5KQp1bnNpZ25lZCBpbnQgeCx5
Owp7CiAgICAgICAgaW50IGR4LCBkeTsKCiAgICAgICAgY2hhciBhYnNvWzUrMiooMypzaXplb2Yo
aW50KSldLCByZWxbNSsyKigzKnNpemVvZihpbnQpKV07CiAgICAgICAgZHggPSB4IC0gUFNfcGVu
X3g7CiAgICAgICAgZHkgPSB5IC0gUFNfcGVuX3k7CgogICAgICAgIGlmIChkeD09MCAmJiBkeT09
MCAmJiBQU19yZWxhdGl2ZV9vaykKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICBzcHJp
bnRmKGFic28sICIlZCAlZCBNXG4iLCB4LCB5KTsKICAgICAgICBzcHJpbnRmKHJlbCwgIiVkICVk
IFJcbiIsIGR4LCBkeSk7CiAgICAgICAgaWYgKHN0cmxlbihyZWwpIDwgc3RybGVuKGFic28pICYm
IFBTX3JlbGF0aXZlX29rKXsKICAgICAgICAgICAgICAgIGZwdXRzKHJlbCwgZ3BvdXRmaWxlKTsK
ICAgICAgICAgICAgICAgIFBTX3Rha2VuKys7CiAgICAgICAgfWVsc2UKICAgICAgICAgICAgICAg
IGZwdXRzKGFic28sIGdwb3V0ZmlsZSk7CiAgICAgICAgUFNfcmVsYXRpdmVfb2sgPSAxOwogICAg
ICAgIHBzX3BhdGhfY291bnQgKz0gMTsKCiAgICAgICAgUFNfcGVuX3ggPSB4OwogICAgICAgIFBT
X3Blbl95ID0geTsKfQoKc3RhdGljIHZvaWQgUFNfdmVjdG9yKHgseSkKdW5zaWduZWQgaW50IHgs
eTsKewogICAgICAgIGludCBkeCwgZHk7CiAgICAgICAgY2hhciBhYnNvWzUrMiooMypzaXplb2Yo
aW50KSldLCByZWxbNSsyKigzKnNpemVvZihpbnQpKV07CiAgICAgICAgZHggPSB4IC0gUFNfcGVu
X3g7CiAgICAgICAgZHkgPSB5IC0gUFNfcGVuX3k7CiAgICAgICAgaWYgKGR4PT0wICYmIGR5PT0w
KSByZXR1cm47CiAgICAgICAgc3ByaW50ZihhYnNvLCAiJWQgJWQgTFxuIiwgeCwgeSk7CiAgICAg
ICAgc3ByaW50ZihyZWwsICIlZCAlZCBWXG4iLCBkeCwgZHkpOwogICAgICAgIGlmIChzdHJsZW4o
cmVsKSA8IHN0cmxlbihhYnNvKSAmJiBQU19yZWxhdGl2ZV9vayl7CiAgICAgICAgICAgICAgICBm
cHV0cyhyZWwsIGdwb3V0ZmlsZSk7CiAgICAgICAgICAgICAgICBQU190YWtlbisrOwogICAgICAg
IH1lbHNlCiAgICAgICAgICAgICAgICBmcHV0cyhhYnNvLCBncG91dGZpbGUpOwogICAgICAgIFBT
X3JlbGF0aXZlX29rID0gMTsKICAgICAgICBwc19wYXRoX2NvdW50ICs9IDE7CiAgICAgICAgUFNf
cGVuX3ggPSB4OwogICAgICAgIFBTX3Blbl95ID0geTsKICAgICAgICBpZiAocHNfcGF0aF9jb3Vu
dCA+PSA0MDApIHsKICAgICAgICAgICAgICAgIGZwcmludGYoZ3BvdXRmaWxlLCJjdXJyZW50cG9p
bnQgc3Ryb2tlIE1cbiIpOwogICAgICAgICAgICAgICAgcHNfcGF0aF9jb3VudCA9IDA7CiAgICAg
ICAgfQp9CgoKc3RhdGljIHZvaWQgUFNfcHV0X3RleHQoeCx5LHN0cikKdW5zaWduZWQgaW50IHgs
IHk7CmNoYXIgKnN0cjsKewpjaGFyIGNoOwogICAgICAgIGlmICghc3RybGVuKHN0cikpIHJldHVy
bjsKICAgICAgICBQU19tb3ZlKHgseSk7CiAgICAgICAgaWYgKHBzX2FuZyAhPSAwKQogICAgICAg
ICAgICAgICAgZnByaW50ZihncG91dGZpbGUsImN1cnJlbnRwb2ludCBnc2F2ZSB0cmFuc2xhdGUg
JWQgcm90YXRlIDAgMCBNXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICxwc19hbmcqOTApOwog
ICAgICAgIF9JT19wdXRjICgnKCcsIGdwb3V0ZmlsZSk7CiAgICAgICAgY2ggPSAqc3RyKys7CiAg
ICAgICAgd2hpbGUoY2ghPSdcMCcpIHsKICAgICAgICAgICAgICAgIGlmICggKGNoPT0nKCcpIHx8
IChjaD09JyknKSB8fCAoY2g9PSdcXCcpICkKICAgICAgICAgICAgICAgICAgICAgICAgX0lPX3B1
dGMgKCdcXCcsIGdwb3V0ZmlsZSk7CiAgICAgICAgICAgICAgICBfSU9fcHV0YyAoY2gsIGdwb3V0
ZmlsZSk7CiAgICAgICAgICAgICAgICBjaCA9ICpzdHIrKzsKICAgICAgICB9CiAgICAgICAgc3dp
dGNoKHBzX2p1c3RpZnkpIHsKICAgICAgICAgICAgICAgIGNhc2UgTEVGVCA6IGZwcmludGYoZ3Bv
dXRmaWxlLCIpIExzaG93XG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICAgICBjYXNlIENFTlRSRSA6IGZwcmludGYoZ3BvdXRmaWxlLCIpIENzaG93XG4iKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlIFJJR0hU
IDogZnByaW50ZihncG91dGZpbGUsIikgUnNob3dcbiIpOwogICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICB9CiAgICAgICAgaWYgKHBzX2FuZyAhPSAwKQogICAgICAgICAgICAg
ICAgZnByaW50ZihncG91dGZpbGUsImdyZXN0b3JlXG4iKTsKICAgICAgICBwc19wYXRoX2NvdW50
ID0gMDsKICAgICAgICBQU19yZWxhdGl2ZV9vayA9IDA7Cn0KCgpzdGF0aWMgaW50IFBTX3RleHRf
YW5nbGUoYW5nKQppbnQgYW5nOwp7CiAgICAgICAgcHNfYW5nPWFuZzsKICAgICAgICByZXR1cm4g
MTsKfQoKCnN0YXRpYyBpbnQgUFNfanVzdGlmeV90ZXh0KG1vZGUpCmVudW0gSlVTVElGWSBtb2Rl
Owp7CiAgICAgICAgcHNfanVzdGlmeT1tb2RlOwogICAgICAgIHJldHVybiAxOwp9CgoKc3RhdGlj
IGludCBQU19zZXRfZm9udChmb250KQpjaGFyICpmb250Owp7CmNoYXIgbmFtZVszMl07CmludCBz
aXplLHNlcDsKCiAgICAgICAgc2VwPV9fZXh0ZW5zaW9uX18gKHsgY2hhciBfX3IwLCBfX3IxLCBf
X3IyOyAoX19idWlsdGluX2NvbnN0YW50X3AgKCIsIikgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQg
KikoKCIsIikgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoIiwiKSA9PSAxKSA/ICgoX19y
MCA9ICgoX19jb25zdCBjaGFyICopICgiLCIpKVswXSwgX19yMCA9PSAnXDAnKSA/IHN0cmxlbiAo
Zm9udCkgOiAoKF9fcjEgPSAoKF9fY29uc3QgY2hhciAqKSAoIiwiKSlbMV0sIF9fcjEgPT0gJ1ww
JykgPyBfX3N0cmNzcG5fYzEgKGZvbnQsIF9fcjApIDogKChfX3IyID0gKChfX2NvbnN0IGNoYXIg
KikgKCIsIikpWzJdLCBfX3IyID09ICdcMCcpID8gX19zdHJjc3BuX2MyIChmb250LCBfX3IwLCBf
X3IxKSA6ICgoKF9fY29uc3QgY2hhciAqKSAoIiwiKSlbM10gPT0gJ1wwJyA/IF9fc3RyY3Nwbl9j
MyAoZm9udCwgX19yMCwgX19yMSwgX19yMikgOiBzdHJjc3BuIChmb250LCAiLCIpKSkpKSA6IHN0
cmNzcG4gKGZvbnQsICIsIikpOyB9KTsKICAgICAgICAoX19leHRlbnNpb25fXyAoX19idWlsdGlu
X2NvbnN0YW50X3AgKGZvbnQpICYmIF9fYnVpbHRpbl9jb25zdGFudF9wIChzZXApID8gKHN0cmxl
biAoZm9udCkgKyAxID49ICgoc2l6ZV90KSAoc2VwKSkgPyAoY2hhciAqKSBtZW1jcHkgKG5hbWUs
IGZvbnQsIHNlcCkgOiBzdHJuY3B5IChuYW1lLCBmb250LCBzZXApKSA6IHN0cm5jcHkgKG5hbWUs
IGZvbnQsIHNlcCkpKTsgbmFtZVtzZXBdPSgnXDAnKTsKICAgICAgICBzaXplPXBzX2ZvbnRzaXpl
OyBzc2NhbmYgKCYoZm9udFtzZXArMV0pLCIlZCIsJnNpemUpOwogICAgICAgIGZwcmludGYoZ3Bv
dXRmaWxlLCIvJXMgZmluZGZvbnQgJWQgc2NhbGVmb250IHNldGZvbnRcbiIsbmFtZSxzaXplKigx
MCkpOwogICAgICAgIFBTX1JlbWVtYmVyRm9udChuYW1lLDEgKTsKICAgICAgICByZXR1cm4gMTsK
fQoKCgoKCnN0YXRpYyB2b2lkIFBTX3BvaW50KHgseSxudW1iZXIpCnVuc2lnbmVkIGludCB4LHk7
CmludCBudW1iZXI7CnsKc3RhdGljIGNoYXIgKiBwb2ludEZOU1tdID0geyJQbnQiLCAiUGxzIiwg
IkNycyIsICJTdGFyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIkJveCIsICJCb3hGIiwg
IkNpcmNsZSIsICJDaXJjbGVGIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRyaVUiLCAi
VHJpVUYiLCAiVHJpRCIsICJUcmlERiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJEaWEi
LCAiRGlhRiIsICJQZW50IiwgIlBlbnRGIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIkMw
IiwgIkMxIiwgIkMyIiwgIkMzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIkM0IiwgIkM1
IiwgIkM2IiwgIkM3IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIkM4IiwgIkM5IiwgIkMx
MCIsICJDMTEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAiQzEyIiwgIkMxMyIsICJDMTQi
LCAiQzE1IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIlMwIiwgIlMxIiwgIlMyIiwgIlMz
IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIlM0IiwgIlM1IiwgIlM2IiwgIlM3IiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIlM4IiwgIlM5IiwgIlMxMCIsICJTMTEiLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAiUzEyIiwgIlMxMyIsICJTMTQiLCAiUzE1IiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIkQwIiwgIkQxIiwgIkQyIiwgIkQzIiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIkQ0IiwgIkQ1IiwgIkQ2IiwgIkQ3IiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIkQ4IiwgIkQ5IiwgIkQxMCIsICJEMTEiLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAiRDEyIiwgIkQxMyIsICJEMTQiLCAiRDE1IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
IkJveEUiLCAiQ2lyY0UiLCAiVHJpVUUiLCAiVHJpREUiLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAiRGlhRSIsICJQZW50RSIsICJCb3hXIiwgIkNpcmNXIiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIlRyaVVXIiwgIlRyaURXIiwgIkRpYVciLCAiUGVudFciCn07CiAgICAgICAgaWYg
KG51bWJlciA8IDApCiAgICAgICAgICAgICAgICBudW1iZXIgPSAtMTsKICAgICAgICBlbHNlCiAg
ICAgICAgICAgICAgICBudW1iZXIgJT0gc2l6ZW9mKHBvaW50Rk5TKS9zaXplb2YocG9pbnRGTlNb
MF0pIC0xOwogICAgICAgIGZwcmludGYoZ3BvdXRmaWxlLCIlZCAlZCAlc1xuIiwgeCwgeSwgcG9p
bnRGTlNbbnVtYmVyKzFdKTsKCiAgICAgICAgUFNfcmVsYXRpdmVfb2sgPSAwOwogICAgICAgIHBz
X3BhdGhfY291bnQgPSAwOwogICAgICAgIFBTX2xpbmV0eXBlX2xhc3QgPSAtMTsKfQoKc3RhdGlj
IHZvaWQgUFNfZmlsbGJveChzdHlsZSwgeDEseTEseDIseTIpCmludCBzdHlsZTsKdW5zaWduZWQg
aW50IHgxLHkxLHgyLHkyOwp7CiAgICAgICAgaWYgKHBzX3BhdGhfY291bnQpIHsgZnByaW50Zihn
cG91dGZpbGUsICJzdHJva2UgIik7IHBzX3BhdGhfY291bnQgPSAwOyB9CgogICAgICAgIGZwcmlu
dGYoZ3BvdXRmaWxlLCAiJWQgJWQgJWQgJWQgQm94RmlsbFxuIiwgeDEseTEsIHgyLHkyKTsKCiAg
ICAgICAgUFNfcmVsYXRpdmVfb2sgPSAwOwogICAgICAgIFBTX2xpbmV0eXBlX2xhc3QgPSAtMTsK
fQojIDEyNDYgInRlcm0vcG9zdC50cm0iCnN0YXRpYyBUQk9PTEVBTiBFTkhwc19vcGVuZWRfc3Ry
aW5nOwoKCgpzdGF0aWMgZmxvYXQgRU5IcHNfbWF4X2hlaWdodCwgRU5IcHNfbWluX2hlaWdodDsK
IyAxMjY0ICJ0ZXJtL3Bvc3QudHJtIgpzdGF0aWMgY2hhciAqRU5IUFNfcmVjdXJzZShwLCBicmFj
ZSwgZm9udG5hbWUsIGZvbnRzaXplLCBiYXNlLCB3aWR0aGZsYWcsIHNob3dmbGFnKQpjaGFyICpw
LCAqZm9udG5hbWU7ClRCT09MRUFOIGJyYWNlLCB3aWR0aGZsYWcsIHNob3dmbGFnOwpkb3VibGUg
Zm9udHNpemUsIGJhc2U7CnsKIyAxMjkxICJ0ZXJtL3Bvc3QudHJtIgogICAgICAgIHsgaWYgKEVO
SHBzX29wZW5lZF9zdHJpbmcpIHsgZnB1dHMoIildXG4iLCBncG91dGZpbGUpOyBFTkhwc19vcGVu
ZWRfc3RyaW5nID0gMDsgfSB9CgogICAgICAgIGlmIChiYXNlICsgZm9udHNpemUgPiBFTkhwc19t
YXhfaGVpZ2h0KQogICAgICAgIHsgRU5IcHNfbWF4X2hlaWdodCA9IGJhc2UgKyBmb250c2l6ZTsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICB9CgogICAgICAgIGlmIChiYXNlIDwgRU5I
cHNfbWluX2hlaWdodCkKICAgICAgICB7IEVOSHBzX21pbl9oZWlnaHQgPSBiYXNlOwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgOwogICAgICAgIH0KCiAgICAgICAgd2hpbGUgKCpwKQogICAgICAgIHsg
ZmxvYXQgc2hpZnQ7CgogICAgICAgICAgICAgICAgc3dpdGNoICgqcCkKICAgICAgICAgICAgICAg
IHsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnfScgOgoKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoYnJhY2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gKHApOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcHJp
bnRmKHN0ZGVyciwgImVuaHBvc3QgcHJpbnRlciBkcml2ZXIgLSBzcHVyaW91cyB9XG4iKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCgogICAgICAgICAgICAgICAgICAg
ICAgICBjYXNlICdfJyA6CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ14nIDoKCgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoaWZ0ID0gKCpwID09ICdeJykgPyAwLjUgOiAt
MC4zOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlmIChFTkhwc19vcGVuZWRf
c3RyaW5nKSB7IGZwdXRzKCIpXVxuIiwgZ3BvdXRmaWxlKTsgRU5IcHNfb3BlbmVkX3N0cmluZyA9
IDA7IH0gfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwID0gRU5IUFNfcmVjdXJz
ZShwKzEsIDAsIGZvbnRuYW1lLCBmb250c2l6ZSowLjgsIGJhc2Urc2hpZnQqZm9udHNpemUsIHdp
ZHRoZmxhZywgc2hvd2ZsYWcpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKCgogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICd7JyA6CiAgICAgICAgICAgICAgICAg
ICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpzYXZlcG9zPSgo
dm9pZCAqKTApLCBzYXZlPTA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAq
bG9jYWxmb250bmFtZT1mb250bmFtZSwgY2g7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50IHJlY29kZT0xOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IGY9
Zm9udHNpemU7CgoKCgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKisrcCA9
PSAnLycpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCorK3AgPT0gJyAnKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgqcD09Jy0nKQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZWNvZGU9MDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgd2hpbGUgKCorK3AgPT0gJyAnKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGxvY2FsZm9udG5hbWUgPSBwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgd2hpbGUgKChjaCA9ICpwKSA+ICcgJyAmJiBjaCAhPSAnPScgJiYgY2ggIT0gJyon
KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArK3A7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYXZlID0gKihzYXZlcG9zPXAp
OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNoID09ICc9JykK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnArKyA9ICdcMCc7CgoKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IChmbG9hdClzdHJ0b2Qo
cCwgJnApOwoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChmKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGYgKj0gKDEwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGYgPSBmb250c2l6ZTsKCgoKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVs
c2UgaWYgKGNoID09ICcqJykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnArKyA9
ICdcMCc7CgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZiA9IChmbG9hdClzdHJ0b2QocCwgJnApOwoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChmKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGYgKj0gZm9udHNpemU7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gZm9udHNpemU7CgoKCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICpwKysgPSAnXDAnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBmID0gZm9udHNpemU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCpwID09
ICcgJykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKytw
OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCpsb2NhbGZvbnRu
YW1lKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewoKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqcmVjb2Rlc3RyaW5n
ID0gUFNfUmVtZW1iZXJGb250KGxvY2FsZm9udG5hbWUsIHJlY29kZSAmJiAhRU5IcHNfb3BlbmVk
X3N0cmluZyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChyZWNvZGUgJiYgcmVjb2Rlc3RyaW5nKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgeyBpZiAoRU5IcHNfb3BlbmVkX3N0cmluZykgeyBmcHV0cygi
KV1cbiIsIGdwb3V0ZmlsZSk7IEVOSHBzX29wZW5lZF9zdHJpbmcgPSAwOyB9IH0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKGdw
b3V0ZmlsZSwgIi8lcyAlcyIsIGxvY2FsZm9udG5hbWUsIHJlY29kZXN0cmluZyk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbG9jYWxmb250bmFtZSA9IGZvbnRuYW1lOwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0KCgoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9IEVOSFBTX3Jl
Y3Vyc2UocCwgMSwgbG9jYWxmb250bmFtZSwgZiwgYmFzZSwgd2lkdGhmbGFnLCBzaG93ZmxhZyk7
CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlmIChF
Tkhwc19vcGVuZWRfc3RyaW5nKSB7IGZwdXRzKCIpXVxuIiwgZ3BvdXRmaWxlKTsgRU5IcHNfb3Bl
bmVkX3N0cmluZyA9IDA7IH0gfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
c2F2ZXBvcykKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc2F2ZXBv
cyA9IHNhdmU7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdAJyA6CgoK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlmIChFTkhwc19vcGVuZWRfc3RyaW5n
KSB7IGZwdXRzKCIpXVxuIiwgZ3BvdXRmaWxlKTsgRU5IcHNfb3BlbmVkX3N0cmluZyA9IDA7IH0g
fQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwID0gRU5IUFNfcmVjdXJzZSgrK3As
IDAsIGZvbnRuYW1lLCBmb250c2l6ZSwgYmFzZSwgMCwgc2hvd2ZsYWcpOwoKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKCgogICAgICAgICAgICAgICAgICAgICAgICBjYXNl
ICcmJyA6CgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlmIChFTkhwc19vcGVu
ZWRfc3RyaW5nKSB7IGZwdXRzKCIpXVxuIiwgZ3BvdXRmaWxlKTsgRU5IcHNfb3BlbmVkX3N0cmlu
ZyA9IDA7IH0gfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwID0gRU5IUFNfcmVj
dXJzZSgrK3AsIDAsIGZvbnRuYW1lLCBmb250c2l6ZSwgYmFzZSwgd2lkdGhmbGFnLCAwKTsKCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgoKICAgICAgICAgICAgICAgICAg
ICAgICAgY2FzZSAnKCcgOgogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICcpJyA6CgoKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlmICghRU5IcHNfb3BlbmVkX3N0cmluZykg
eyBmcHJpbnRmKGdwb3V0ZmlsZSwgIlsoJXMpICUuMWYgJS4xZiAlcyAlcyAoIiwgZm9udG5hbWUs
IGZvbnRzaXplLCBiYXNlLCB3aWR0aGZsYWcgPyAidHJ1ZSIgOiAiZmFsc2UiLCBzaG93ZmxhZyA/
ICJ0cnVlIiA6ICJmYWxzZSIpOyBFTkhwc19vcGVuZWRfc3RyaW5nID0gMTsgfSB9CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZnB1dGMoJ1xcJywgZ3BvdXRmaWxlKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBmcHV0YygqcCwgZ3BvdXRmaWxlKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKCgogICAgICAgICAgICAgICAgICAgICAgICBjYXNl
ICdcXCcgOgoKCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwWzFdPT0nXFwn
IHx8IHBbMV09PScoJyB8fCBwWzFdPT0nKScpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZiAoIUVOSHBz
X29wZW5lZF9zdHJpbmcpIHsgZnByaW50ZihncG91dGZpbGUsICJbKCVzKSAlLjFmICUuMWYgJXMg
JXMgKCIsIGZvbnRuYW1lLCBmb250c2l6ZSwgYmFzZSwgd2lkdGhmbGFnID8gInRydWUiIDogImZh
bHNlIiwgc2hvd2ZsYWcgPyAidHJ1ZSIgOiAiZmFsc2UiKTsgRU5IcHNfb3BlbmVkX3N0cmluZyA9
IDE7IH0gfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnB1dGMoJ1xc
JywgZ3BvdXRmaWxlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAocFsxXSA+PSAnMCcgJiYgcFsxXSA8PSAn
NycpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHsgaWYgKCFFTkhwc19vcGVuZWRfc3RyaW5nKSB7IGZwcmlu
dGYoZ3BvdXRmaWxlLCAiWyglcykgJS4xZiAlLjFmICVzICVzICgiLCBmb250bmFtZSwgZm9udHNp
emUsIGJhc2UsIHdpZHRoZmxhZyA/ICJ0cnVlIiA6ICJmYWxzZSIsIHNob3dmbGFnID8gInRydWUi
IDogImZhbHNlIik7IEVOSHBzX29wZW5lZF9zdHJpbmcgPSAxOyB9IH0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGZwdXRjKCdcXCcsIGdwb3V0ZmlsZSk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcHV0YyhwWzFdLCBncG91dGZpbGUpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKytwOwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBbMV0gPj0gJzAnICYmIHBbMV0gPD0gJzcn
KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcHV0YyhwWzFdLCBncG91dGZpbGUp
OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArK3A7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwWzFdID49
ICcwJyAmJiBwWzFdIDw9ICc3JykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZwdXRjKHBbMV0sIGdwb3V0ZmlsZSk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKytwOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICsrcDsKCgoKICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVs
dDoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZiAoIUVOSHBzX29wZW5lZF9z
dHJpbmcpIHsgZnByaW50ZihncG91dGZpbGUsICJbKCVzKSAlLjFmICUuMWYgJXMgJXMgKCIsIGZv
bnRuYW1lLCBmb250c2l6ZSwgYmFzZSwgd2lkdGhmbGFnID8gInRydWUiIDogImZhbHNlIiwgc2hv
d2ZsYWcgPyAidHJ1ZSIgOiAiZmFsc2UiKTsgRU5IcHNfb3BlbmVkX3N0cmluZyA9IDE7IH0gfQoK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcHV0YygqcCwgZ3BvdXRmaWxlKTsKCgoK
ICAgICAgICAgICAgICAgIH0KCgoKCgogICAgICAgICAgICAgICAgaWYgKCFicmFjZSkKICAgICAg
ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgeyBpZiAoRU5IcHNfb3BlbmVkX3N0
cmluZykgeyBmcHV0cygiKV1cbiIsIGdwb3V0ZmlsZSk7IEVOSHBzX29wZW5lZF9zdHJpbmcgPSAw
OyB9IH0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuKHApOwogICAgICAgICAgICAgICAg
fQoKICAgICAgICAgICAgICAgIGlmICgqcCkKICAgICAgICAgICAgICAgICAgICAgICAgKytwOwog
ICAgICAgIH0KICAgICAgICB7IGlmIChFTkhwc19vcGVuZWRfc3RyaW5nKSB7IGZwdXRzKCIpXVxu
IiwgZ3BvdXRmaWxlKTsgRU5IcHNfb3BlbmVkX3N0cmluZyA9IDA7IH0gfQogICAgICAgIHJldHVy
biBwOwp9CgoKCgoKCgpzdGF0aWMgaW50IEVOSFBTX3NldF9mb250KGZvbnQpCmNoYXIgKmZvbnQ7
CnsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDsKCiAgICAgICAgaWYgKCpmb250KQogICAgICAgIHsKICAgICAgICAgICAgICAgIGludCBzZXA9
X19leHRlbnNpb25fXyAoeyBjaGFyIF9fcjAsIF9fcjEsIF9fcjI7IChfX2J1aWx0aW5fY29uc3Rh
bnRfcCAoIiwiKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoIiwiKSArIDEpIC0gKHNpemVf
dCkoY29uc3Qgdm9pZCAqKSgiLCIpID09IDEpID8gKChfX3IwID0gKChfX2NvbnN0IGNoYXIgKikg
KCIsIikpWzBdLCBfX3IwID09ICdcMCcpID8gc3RybGVuIChmb250KSA6ICgoX19yMSA9ICgoX19j
b25zdCBjaGFyICopICgiLCIpKVsxXSwgX19yMSA9PSAnXDAnKSA/IF9fc3RyY3Nwbl9jMSAoZm9u
dCwgX19yMCkgOiAoKF9fcjIgPSAoKF9fY29uc3QgY2hhciAqKSAoIiwiKSlbMl0sIF9fcjIgPT0g
J1wwJykgPyBfX3N0cmNzcG5fYzIgKGZvbnQsIF9fcjAsIF9fcjEpIDogKCgoX19jb25zdCBjaGFy
ICopICgiLCIpKVszXSA9PSAnXDAnID8gX19zdHJjc3BuX2MzIChmb250LCBfX3IwLCBfX3IxLCBf
X3IyKSA6IHN0cmNzcG4gKGZvbnQsICIsIikpKSkpIDogc3RyY3NwbiAoZm9udCwgIiwiKSk7IH0p
OwogICAgICAgICAgICAgICAgKF9fZXh0ZW5zaW9uX18gKF9fYnVpbHRpbl9jb25zdGFudF9wIChm
b250KSAmJiBfX2J1aWx0aW5fY29uc3RhbnRfcCAoc2VwKSA/IChzdHJsZW4gKGZvbnQpICsgMSA+
PSAoKHNpemVfdCkgKHNlcCkpID8gKGNoYXIgKikgbWVtY3B5IChwc19lbmhfZm9udCwgZm9udCwg
c2VwKSA6IHN0cm5jcHkgKHBzX2VuaF9mb250LCBmb250LCBzZXApKSA6IHN0cm5jcHkgKHBzX2Vu
aF9mb250LCBmb250LCBzZXApKSk7IHBzX2VuaF9mb250W3NlcF09KCdcMCcpOwogICAgICAgICAg
ICAgICAgcHNfZW5oX2ZvbnRzaXplPXBzX2ZvbnRzaXplOyBzc2NhbmYgKGZvbnQrc2VwKzEsIiVk
IiwmcHNfZW5oX2ZvbnRzaXplKTsKICAgICAgICAgICAgICAgIFBTX1JlbWVtYmVyRm9udChwc19l
bmhfZm9udCwgMSk7CiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICB7CgogICAgICAgICAg
ICAgICAgKF9fZXh0ZW5zaW9uX18gKF9fYnVpbHRpbl9jb25zdGFudF9wIChwc19mb250KSA/ICgo
KHNpemVfdCkoY29uc3Qgdm9pZCAqKSgocHNfZm9udCkgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZv
aWQgKikocHNfZm9udCkgPT0gMSkgJiYgc3RybGVuIChwc19mb250KSArIDEgPD0gOCA/IF9fc3Ry
Y3B5X3NtYWxsIChwc19lbmhfZm9udCwgX19leHRlbnNpb25fXyAoKChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAocHNfZm9udCkpWzAgKyAxXSA8PCA4IHwgKChfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAocHNfZm9udCkpWzBdKSwgX19l
eHRlbnNpb25fXyAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAo
cHNfZm9udCkpWzQgKyAxXSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29u
c3QgY2hhciAqKSAocHNfZm9udCkpWzRdKSwgX19leHRlbnNpb25fXyAoKCgoKF9fY29uc3QgdW5z
aWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChwc19mb250KSlbMCArIDNdIDw8IDggfCAo
KF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChwc19mb250KSlbMCAr
IDJdKSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAo
cHNfZm9udCkpWzAgKyAxXSkgPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikgKHBzX2ZvbnQpKVswXSksIF9fZXh0ZW5zaW9uX18gKCgoKChfX2NvbnN0IHVu
c2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAocHNfZm9udCkpWzQgKyAzXSA8PCA4IHwg
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAocHNfZm9udCkpWzQg
KyAyXSkgPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KHBzX2ZvbnQpKVs0ICsgMV0pIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19j
b25zdCBjaGFyICopIChwc19mb250KSlbNF0pLCBzdHJsZW4gKHBzX2ZvbnQpICsgMSkgOiAoY2hh
ciAqKSBtZW1jcHkgKHBzX2VuaF9mb250LCBwc19mb250LCBzdHJsZW4gKHBzX2ZvbnQpICsgMSkp
IDogc3RyY3B5IChwc19lbmhfZm9udCwgcHNfZm9udCkpKTsKICAgICAgICAgICAgICAgIHBzX2Vu
aF9mb250c2l6ZSA9IHBzX2ZvbnRzaXplOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIDE7Cn0K
CnN0YXRpYyB2b2lkIEVOSFBTX3B1dF90ZXh0KHgsIHksIHN0cikKdW5zaWduZWQgaW50IHgsIHk7
CmNoYXIgKnN0cjsKewoKCiAgICAgICAgaWYgKCFzdHJsZW4oc3RyKSkKICAgICAgICAgICAgICAg
IHJldHVybjsKCiAgICAgICAgaWYgKHBzX3BhdGhfY291bnQpCiAgICAgICAgewogICAgICAgICAg
ICAgICAgZnB1dHMoIiBzdHJva2VcbiIsZ3BvdXRmaWxlKTsKICAgICAgICAgICAgICAgIHBzX3Bh
dGhfY291bnQ9MDsKICAgICAgICAgICAgICAgIFBTX3JlbGF0aXZlX29rPTA7CiAgICAgICAgfQoj
IDE1NzIgInRlcm0vcG9zdC50cm0iCiAgICAgICAgUFNfbW92ZSh4LHkpOwoKICAgICAgICBpZiAo
cHNfYW5nICE9IDApCiAgICAgICAgICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwiY3VycmVudHBv
aW50IGdzYXZlIHRyYW5zbGF0ZSAlZCByb3RhdGUgMCAwIG1vdmV0b1xuIiwKICAgICAgICAgICAg
ICAgICAgICAgICAgcHNfYW5nKjkwKTsKCiAgICAgICAgZnB1dHMoIlsgIixncG91dGZpbGUpOwoK
CgogICAgICAgIEVOSHBzX29wZW5lZF9zdHJpbmcgPSAwOwogICAgICAgIEVOSHBzX21heF9oZWln
aHQgPSAtMTAwMDsKICAgICAgICBFTkhwc19taW5faGVpZ2h0ID0gMTAwMDsKIyAxNTk4ICJ0ZXJt
L3Bvc3QudHJtIgogICAgICAgIHdoaWxlICgqKHN0ciA9IEVOSFBTX3JlY3Vyc2Uoc3RyLCAxLCBw
c19lbmhfZm9udCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkb3VibGUp
KHBzX2VuaF9mb250c2l6ZSooMTApKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDAuMCwgMSwgMSkpKQogICAgICAgIHsKICAgICAgICAgICAgICAgIHsgaWYgKEVOSHBzX29w
ZW5lZF9zdHJpbmcpIHsgZnB1dHMoIildXG4iLCBncG91dGZpbGUpOyBFTkhwc19vcGVuZWRfc3Ry
aW5nID0gMDsgfSB9CgoKICAgICAgICAgICAgICAgIGlmICgqc3RyID09ICd9JykKICAgICAgICAg
ICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJlbmhwb3N0IHByaW50ZXIgZHJpdmVyIC0g
aWdub3Jpbmcgc3B1cmlvdXMgfVxuIik7CiAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAg
ICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiaW50ZXJuYWwgZXJyb3IgaW4gZW5ocG9zdCBk
cml2ZXIgLSAqc3RyPTB4JXhcbiIsICpzdHIpOwoKICAgICAgICAgICAgICAgIGlmICghKisrc3Ry
KQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCgogICAgICAgIH0KCiAgICAgICAgRU5I
cHNfbWF4X2hlaWdodCArPSBFTkhwc19taW5faGVpZ2h0OwoKICAgICAgICBmcHJpbnRmKGdwb3V0
ZmlsZSwgIl0gJS4xZiAiLCAtRU5IcHNfbWF4X2hlaWdodC8zKTsKCiAgICAgICAgc3dpdGNoKHBz
X2p1c3RpZnkpCiAgICAgICAgewogICAgICAgICAgICAgICAgY2FzZSBMRUZUIDogZnByaW50Zihn
cG91dGZpbGUsICJNTHNob3dcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgICAgIGNhc2UgQ0VOVFJFIDogZnByaW50ZihncG91dGZpbGUsICJNQ3Nob3dcbiIp
OwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgUklH
SFQgOiBmcHJpbnRmKGdwb3V0ZmlsZSwgIk1Sc2hvd1xuIik7CiAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgIH0KCiAgICAgICAgaWYgKHBzX2FuZyAhPSAwKQogICAgICAgICAg
ICAgICAgZnB1dHMoImdyZXN0b3JlXG4iLCBncG91dGZpbGUpOwogICAgICAgIHBzX3BhdGhfY291
bnQgPSAwOwogICAgICAgIFBTX3JlbGF0aXZlX29rPTA7Cn0KIyAzMzAgInRlcm0uaCIgMgoKCiMg
MSAidGVybS9xbXMudHJtIiAxCiMgNTUgInRlcm0vcW1zLnRybSIKIyAxICJ0ZXJtL2RyaXZlci5o
IiAxCiMgNTYgInRlcm0vcW1zLnRybSIgMgoKCgoKCgpzdGF0aWMgdm9pZCBRTVNfaW5pdCAodm9p
ZCk7CnN0YXRpYyB2b2lkIFFNU19ncmFwaGljcyAodm9pZCk7CnN0YXRpYyB2b2lkIFFNU190ZXh0
ICh2b2lkKTsKc3RhdGljIHZvaWQgUU1TX2xpbmV0eXBlIChpbnQgbGluZXR5cGUpOwpzdGF0aWMg
dm9pZCBRTVNfbW92ZSAodW5zaWduZWQgaW50IHgsIHVuc2lnbmVkIGludCB5KTsKc3RhdGljIHZv
aWQgUU1TX3ZlY3RvciAodW5zaWduZWQgaW50IHgyLCB1bnNpZ25lZCBpbnQgeTIpOwpzdGF0aWMg
dm9pZCBRTVNfcHV0X3RleHQgKHVuc2lnbmVkIGludCB4LCB1bnNpZ25lZCBpbnQgeSwgY2hhciBz
dHJbXSk7CnN0YXRpYyB2b2lkIFFNU19yZXNldCAodm9pZCk7CiMgODUgInRlcm0vcW1zLnRybSIK
c3RhdGljIGludCBxbXNfbGluZSA9IDA7CgpzdGF0aWMgdm9pZCBRTVNfaW5pdCgpCnsKCiAgICBm
cHV0cygiXlBZXi1cbl5JT0xcbl5JU1lOVEFYMDAwMDBeRl5JQjExMDAwXklKMDAwMDBeSVQwMDAw
MFxuIiwgZ3BvdXRmaWxlKTsKIyA5OSAidGVybS9xbXMudHJtIgp9CgoKc3RhdGljIHZvaWQgUU1T
X2dyYXBoaWNzKCkKewogICAgZnB1dHMoIl5JR1ZcbiIsIGdwb3V0ZmlsZSk7Cgp9CgoKCnN0YXRp
YyB2b2lkIFFNU190ZXh0KCkKewoKCiAgICBmcHV0cygiXklHRVxuXi1eLCIsIGdwb3V0ZmlsZSk7
CgoKCgp9CgoKc3RhdGljIHZvaWQgUU1TX2xpbmV0eXBlKGxpbmV0eXBlKQppbnQgbGluZXR5cGU7
CnsKICAgIHN0YXRpYyBpbnQgd2lkdGhbMiArIDldID0geyA3LCAzLCAzLCAzLCAzLCA1LCA1LCA1
LCA3LCA3LCA3IH07CiAgICBzdGF0aWMgaW50IHR5cGVbMiArIDldID0geyAwLCAxLCAwLCAyLCAz
LCAwLCAyLCAzLCAwLCAyLCAzIH07CiMgMTM2ICJ0ZXJtL3Ftcy50cm0iCiAgICBxbXNfbGluZSA9
IGxpbmV0eXBlOwogICAgaWYgKGxpbmV0eXBlID49IDkpCiAgICAgICAgbGluZXR5cGUgJT0gOTsK
CiAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgIl5QVyUwMmRcbiIsIHdpZHRoW2xpbmV0eXBlICsgMl0p
OwoKCiAgICBzd2l0Y2ggKHR5cGVbbGluZXR5cGUgKyAyXSkgewogICAgY2FzZSAxOgogICAgICAg
IGZwdXRzKCJeUFYxMDIwMjVeR1xuXlYxXG4iLCBncG91dGZpbGUpOwoKCgogICAgICAgIGJyZWFr
OwogICAgY2FzZSAyOgogICAgICAgIGZwdXRzKCJeUFYyMDIwNTBeR1xuXlYyXG4iLCBncG91dGZp
bGUpOwogICAgICAgIGJyZWFrOwogICAgY2FzZSAzOgogICAgICAgIGZwdXRzKCJeUFYzMDIxMDBe
R1xuXlYzXG4iLCBncG91dGZpbGUpOwogICAgICAgIGJyZWFrOwogICAgZGVmYXVsdDoKICAgIGNh
c2UgMDoKICAgICAgICBmcHV0cygiXlYwXG4iLCBncG91dGZpbGUpOwogICAgICAgIGJyZWFrOwog
ICAgfQp9CgoKc3RhdGljIHZvaWQgUU1TX21vdmUoeCwgeSkKdW5zaWduZWQgaW50IHgsIHk7CnsK
ICAgIGZwcmludGYoZ3BvdXRmaWxlLCAiXlUlMDVkOiUwNWRcbiIsIDEwMDAgKyB4LCAoNjAwMCAt
IDEpICsgMTAwMCAtIHkpOwoKfQoKCnN0YXRpYyB2b2lkIFFNU192ZWN0b3IoeDIsIHkyKQp1bnNp
Z25lZCBpbnQgeDIsIHkyOwp7CiAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgIl5EJTA1ZDolMDVkXG4i
LCAxMDAwICsgeDIsICg2MDAwIC0gMSkgKyAxMDAwIC0geTIpOwoKfQoKCnN0YXRpYyB2b2lkIFFN
U19wdXRfdGV4dCh4LCB5LCBzdHIpCnVuc2lnbmVkIGludCB4LCB5OwpjaGFyIHN0cltdOwp7CiAg
ICBjaGFyIGNoOwogICAgUU1TX21vdmUoeCwgeSArIDEyMCAvIDMpOwogICAgZnB1dHMoIl5JR0Vc
biIsIGdwb3V0ZmlsZSk7CiAgICBjaCA9ICpzdHIrKzsKICAgIHdoaWxlIChjaCAhPSAoJ1wwJykp
IHsKICAgICAgICBpZiAoY2ggPT0gJ14nKQogICAgICAgICAgICBfSU9fcHV0YyAoJ14nLCBncG91
dGZpbGUpOwogICAgICAgIF9JT19wdXRjIChjaCwgZ3BvdXRmaWxlKTsKICAgICAgICBjaCA9ICpz
dHIrKzsKICAgIH0KICAgIGZwdXRzKCJcbl5JR1ZcbiIsIGdwb3V0ZmlsZSk7CiAgICBRTVNfbGlu
ZXR5cGUocW1zX2xpbmUpOwp9CgoKc3RhdGljIHZvaWQgUU1TX3Jlc2V0KCkKewogICAgZnB1dHMo
Il5QTl4tXG4iLCBncG91dGZpbGUpOwoKfQojIDMzMyAidGVybS5oIiAyCgoKIyAxICJ0ZXJtL3Rh
YmxlLnRybSIgMQojIDMzNiAidGVybS5oIiAyCgoKIyAxICJ0ZXJtL3RnaWYudHJtIiAxCiMgNjkg
InRlcm0vdGdpZi50cm0iCiMgMSAidGVybS9kcml2ZXIuaCIgMQojIDcwICJ0ZXJtL3RnaWYudHJt
IiAyCgoKCgoKCnN0YXRpYyB2b2lkIFRHSUZfb3B0aW9ucyAodm9pZCk7CnN0YXRpYyB2b2lkIFRH
SUZfaW5pdCAodm9pZCk7CnN0YXRpYyB2b2lkIFRHSUZfcmVzZXQgKHZvaWQpOwpzdGF0aWMgdm9p
ZCBUR0lGX3RleHQgKHZvaWQpOwpzdGF0aWMgdm9pZCBUR0lGX2dyYXBoaWNzICh2b2lkKTsKc3Rh
dGljIHZvaWQgVEdJRl9tb3ZlICh1bnNpZ25lZCBpbnQgdXgsIHVuc2lnbmVkIGludCB1eSk7CnN0
YXRpYyB2b2lkIFRHSUZfdmVjdG9yICh1bnNpZ25lZCBpbnQgdXgsIHVuc2lnbmVkIGludCB1eSk7
CnN0YXRpYyB2b2lkIFRHSUZfbGluZXR5cGUgKGludCBsaW5ldHlwZSk7CnN0YXRpYyB2b2lkIFRH
SUZfcHV0X3RleHQgKHVuc2lnbmVkIGludCB1eCwgdW5zaWduZWQgaW50IHV5LCBjaGFyICpzdHIp
OwpzdGF0aWMgaW50IFRHSUZfdGV4dF9hbmdsZSAoaW50IGFuZyk7CnN0YXRpYyBpbnQgVEdJRl9q
dXN0aWZ5X3RleHQgKGVudW0gSlVTVElGWSBtb2RlKTsKc3RhdGljIHZvaWQgVEdJRl9wb2ludCAo
dW5zaWduZWQgaW50IHV4LCB1bnNpZ25lZCBpbnQgdXksIGludCBudW1iZXIpOwpzdGF0aWMgdm9p
ZCBUR0lGX2Fycm93ICh1bnNpZ25lZCBpbnQgc3gsIHVuc2lnbmVkIGludCBzeSwgdW5zaWduZWQg
aW50IGV4LCB1bnNpZ25lZCBpbnQgZXksIFRCT09MRUFOIGhlYWQpOwpzdGF0aWMgaW50IFRHSUZf
c2V0X2ZvbnQgKGNoYXIgKmZvbnQpOwpzdGF0aWMgdm9pZCBUR0lGX3NldF9wb2ludHNpemUgKGRv
dWJsZSBzaXplKTsKIyAxMjggInRlcm0vdGdpZi50cm0iCnN0YXRpYyB1bnNpZ25lZCBpbnQgdUxh
c3RUZ2lmWCwgdUxhc3RUZ2lmWTsKCnN0YXRpYyB1bnNpZ25lZCBpbnQgdUFjdE5yOwpzdGF0aWMg
dW5zaWduZWQgaW50IHVBY3RQYWdlOwpzdGF0aWMgdW5zaWduZWQgaW50IHVBY3RSZXNvbHV0aW9u
OwpzdGF0aWMgdW5zaWduZWQgaW50IHVBY3Rab29tOwpzdGF0aWMgdW5zaWduZWQgaW50IHVBY3RB
bmdsZTsKc3RhdGljIHVuc2lnbmVkIGludCB1QWN0VGhpY2s7CnN0YXRpYyB1bnNpZ25lZCBpbnQg
dUFjdFBvaW50U2l6ZTsKc3RhdGljIHVuc2lnbmVkIGludCB1QWN0U3R5bGU7CnN0YXRpYyB1bnNp
Z25lZCBpbnQgdUFjdEp1c3Q7CnN0YXRpYyB1bnNpZ25lZCBpbnQgdVhzaGlmdDsKc3RhdGljIHVu
c2lnbmVkIGludCB1WXNoaWZ0OwpzdGF0aWMgdW5zaWduZWQgaW50IHVUZ2lmUGxvdENvdW50Owpz
dGF0aWMgdW5zaWduZWQgaW50IHVUZ2lmUGxvdFJvdywgdVRnaWZQbG90Q29sOwpzdGF0aWMgdW5z
aWduZWQgaW50IHVUZ2lmX3dpbl9ob3JpeiwgdVRnaWZfd2luX3ZlcnRpOwoKCgpzdGF0aWMgY2hh
ciBzQWN0Q29sb3JbMjU1XTsKc3RhdGljIHVuc2lnbmVkIGludCB1RGVmYXVsdEZvbnRTaXplOwpz
dGF0aWMgdW5zaWduZWQgaW50IHVBY3RGb250U2l6ZTsKc3RhdGljIGNoYXIgc0RlZmF1bHRGb250
WzI1NV07CnN0YXRpYyBjaGFyIHNBY3RGb250WzI1NV07CgoKc3RhdGljIFRCT09MRUFOIFRnaWZT
b2xpZCA9IDA7CnN0YXRpYyBUQk9PTEVBTiBUZ2lmUG9ydHJhaXQgPSAxOwoKc3RhdGljIHVuc2ln
bmVkIGludCB1VGdpZlBsb3RzUGVyUGFnZSA9IDE7CnN0YXRpYyB1bnNpZ25lZCBpbnQgdVRleHRB
bmdsZVtdID0KezAsIDN9OwoKCgoKCgpzdGF0aWMgdW5zaWduZWQgaW50IHVMaW5lVGhpY2tbXSA9
IHsgMiwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSB9OwpzdGF0aWMgdW5zaWduZWQg
aW50IHVMaW5lU3R5bGVbXSA9IHsgMCwgNSwgMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgMCB9
OwpzdGF0aWMgY2hhciAqcHNDb2xvcnNbXSA9CnsKICJibGFjayIsICJibGFjayIsCiAicmVkIiwg
ImdyZWVuIiwgImJsdWUiLCAibWFnZW50YSIsICJjeWFuIiwgInllbGxvdyIsCiAiRGFya1NlYUdy
ZWVuIiwgIkhvdFBpbmsiLCAiYmxhY2siLCAiY29yYWwifTsKIyAxODIgInRlcm0vdGdpZi50cm0i
CnN0YXRpYyBpbnQgaVRnaWZQb2x5Q291bnQ7CnN0YXRpYyB1bnNpZ25lZCBpbnQgdUJ1ZmZYWzEw
MF0sIHVCdWZmWVsxMDBdOwoKZW51bSBlU3RhdGUgewogICAgTkVXUE9MWSA9IDEwMCwgSU5QT0xZ
Cn07CnN0YXRpYyBlbnVtIGVTdGF0ZSBlVGdpZlN0YXRlID0gTkVXUE9MWTsKCnN0YXRpYyB2b2lk
IFRHSUZfZmx1c2hfcG9seSAodm9pZCk7CgoKCgoKc3RhdGljIHZvaWQgVEdJRl9mbHVzaF9wb2x5
KCkKewogICAgaW50IGk7CgoKICAgIGlmIChlVGdpZlN0YXRlID09IElOUE9MWSkgewogICAgICAg
IGZwcmludGYoZ3BvdXRmaWxlLCAicG9seSgnJXMnLCVkLFtcblx0Iiwgc0FjdENvbG9yLCBpVGdp
ZlBvbHlDb3VudCk7CgogICAgICAgIGZvciAoaSA9IDA7IGkgPCBpVGdpZlBvbHlDb3VudCAtIDE7
IGkrKykgewogICAgICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgIiV1LCV1LCIsIHVCdWZmWFtp
XSwgdUJ1ZmZZW2ldKTsKICAgICAgICAgICAgaWYgKChpICsgMSkgJSA4ID09IDApCiAgICAgICAg
ICAgICAgICBmcHV0cygiXG5cdCIsIGdwb3V0ZmlsZSk7CiAgICAgICAgfQoKICAgICAgICBmcHJp
bnRmKGdwb3V0ZmlsZSwgIiV1LCV1XSwwLCV1LDEsJXUsMCwwLCV1LDAsOCwzLDAsW1xuXSkuXG4i
LAogICAgICAgICAgICAgICAgdUJ1ZmZYW2lUZ2lmUG9seUNvdW50IC0gMV0sIHVCdWZmWVtpVGdp
ZlBvbHlDb3VudCAtIDFdLAogICAgICAgICAgICAgICAgdUFjdFRoaWNrLCB1QWN0TnIsIHVBY3RT
dHlsZSk7CgogICAgICAgIHVBY3ROcisrOwoKICAgICAgICBlVGdpZlN0YXRlID0gTkVXUE9MWTsK
ICAgICAgICBpVGdpZlBvbHlDb3VudCA9IDA7CiAgICAgICAgaWYgKGdwb3V0ZmlsZSAhPSAoRklM
RSAqKSAoKHZvaWQgKikwKSkKICAgICAgICAgICAgZmZsdXNoKGdwb3V0ZmlsZSk7CiAgICB9Cn0K
CgpzdGF0aWMgdm9pZCBUR0lGX29wdGlvbnMoKQp7CgogICAgc3RydWN0IHZhbHVlIGEsIGI7CiAg
ICBkb3VibGUgZHNjYWxlSCwgZHNjYWxlVjsKCgogICAgKF9fZXh0ZW5zaW9uX18gKF9fYnVpbHRp
bl9jb25zdGFudF9wICgiSGVsdmV0aWNhIikgPyAoKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCJI
ZWx2ZXRpY2EiKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgiSGVsdmV0aWNhIikgPT0g
MSkgJiYgc3RybGVuICgiSGVsdmV0aWNhIikgKyAxIDw9IDggPyBfX3N0cmNweV9zbWFsbCAoc0Fj
dEZvbnQsIF9fZXh0ZW5zaW9uX18gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0
IGNoYXIgKikgKCJIZWx2ZXRpY2EiKSlbMCArIDFdIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQg
Y2hhciAqKSAoX19jb25zdCBjaGFyICopICgiSGVsdmV0aWNhIikpWzBdKSwgX19leHRlbnNpb25f
XyAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIkhlbHZldGlj
YSIpKVs0ICsgMV0gPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNo
YXIgKikgKCJIZWx2ZXRpY2EiKSlbNF0pLCBfX2V4dGVuc2lvbl9fICgoKCgoX19jb25zdCB1bnNp
Z25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJIZWx2ZXRpY2EiKSlbMCArIDNdIDw8IDgg
fCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiSGVsdmV0aWNh
IikpWzAgKyAyXSkgPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNo
YXIgKikgKCJIZWx2ZXRpY2EiKSlbMCArIDFdKSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNo
YXIgKikgKF9fY29uc3QgY2hhciAqKSAoIkhlbHZldGljYSIpKVswXSksIF9fZXh0ZW5zaW9uX18g
KCgoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIkhlbHZldGlj
YSIpKVs0ICsgM10gPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNo
YXIgKikgKCJIZWx2ZXRpY2EiKSlbNCArIDJdKSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNo
YXIgKikgKF9fY29uc3QgY2hhciAqKSAoIkhlbHZldGljYSIpKVs0ICsgMV0pIDw8IDggfCAoKF9f
Y29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiSGVsdmV0aWNhIikpWzRd
KSwgc3RybGVuICgiSGVsdmV0aWNhIikgKyAxKSA6IChjaGFyICopIG1lbWNweSAoc0FjdEZvbnQs
ICJIZWx2ZXRpY2EiLCBzdHJsZW4gKCJIZWx2ZXRpY2EiKSArIDEpKSA6IHN0cmNweSAoc0FjdEZv
bnQsICJIZWx2ZXRpY2EiKSkpOwogICAgKF9fZXh0ZW5zaW9uX18gKF9fYnVpbHRpbl9jb25zdGFu
dF9wICgiSGVsdmV0aWNhIikgPyAoKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCJIZWx2ZXRpY2Ei
KSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgiSGVsdmV0aWNhIikgPT0gMSkgJiYgc3Ry
bGVuICgiSGVsdmV0aWNhIikgKyAxIDw9IDggPyBfX3N0cmNweV9zbWFsbCAoc0RlZmF1bHRGb250
LCBfX2V4dGVuc2lvbl9fICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFy
ICopICgiSGVsdmV0aWNhIikpWzAgKyAxXSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIg
KikgKF9fY29uc3QgY2hhciAqKSAoIkhlbHZldGljYSIpKVswXSksIF9fZXh0ZW5zaW9uX18gKCgo
X19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJIZWx2ZXRpY2EiKSlb
NCArIDFdIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop
ICgiSGVsdmV0aWNhIikpWzRdKSwgX19leHRlbnNpb25fXyAoKCgoKF9fY29uc3QgdW5zaWduZWQg
Y2hhciAqKSAoX19jb25zdCBjaGFyICopICgiSGVsdmV0aWNhIikpWzAgKyAzXSA8PCA4IHwgKChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIkhlbHZldGljYSIpKVsw
ICsgMl0pIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop
ICgiSGVsdmV0aWNhIikpWzAgKyAxXSkgPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikgKCJIZWx2ZXRpY2EiKSlbMF0pLCBfX2V4dGVuc2lvbl9fICgoKCgo
X19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJIZWx2ZXRpY2EiKSlb
NCArIDNdIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop
ICgiSGVsdmV0aWNhIikpWzQgKyAyXSkgPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikgKCJIZWx2ZXRpY2EiKSlbNCArIDFdKSA8PCA4IHwgKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIkhlbHZldGljYSIpKVs0XSksIHN0
cmxlbiAoIkhlbHZldGljYSIpICsgMSkgOiAoY2hhciAqKSBtZW1jcHkgKHNEZWZhdWx0Rm9udCwg
IkhlbHZldGljYSIsIHN0cmxlbiAoIkhlbHZldGljYSIpICsgMSkpIDogc3RyY3B5IChzRGVmYXVs
dEZvbnQsICJIZWx2ZXRpY2EiKSkpOwogICAgdUFjdEZvbnRTaXplID0gMTg7CiAgICB1RGVmYXVs
dEZvbnRTaXplID0gMTg7CiAgICB0ZXJtLT52X2NoYXIgPSAodW5zaWduZWQgaW50KSAodUFjdEZv
bnRTaXplKTsKICAgIHRlcm0tPmhfY2hhciA9ICh1bnNpZ25lZCBpbnQpICh1QWN0Rm9udFNpemUg
KiA2IC8gMTApOwoKICAgIFRnaWZQb3J0cmFpdCA9IDE7CiAgICB1VGdpZlBsb3RzUGVyUGFnZSA9
IDE7CiAgICB1VGdpZlBsb3RSb3cgPSAxOwogICAgdVRnaWZQbG90Q29sID0gMTsKICAgIHVUZ2lm
X3dpbl9ob3JpeiA9IDE7CiAgICB1VGdpZl93aW5fdmVydGkgPSAxOwogICAgdUFjdFJlc29sdXRp
b24gPSAxMDA7CgoKCgogICAgaWYgKCEoY190b2tlbiA+PSBudW1fdG9rZW5zIHx8IGVxdWFscyhj
X3Rva2VuLCI7IikpKSB7CiAgICAgICAgaWYgKGFsbW9zdF9lcXVhbHMoY190b2tlbiwgInAkb3J0
cmFpdCIpKSB7CiAgICAgICAgICAgIFRnaWZQb3J0cmFpdCA9IDE7CiAgICAgICAgICAgIGNfdG9r
ZW4rKzsKICAgICAgICB9IGVsc2UgaWYgKGFsbW9zdF9lcXVhbHMoY190b2tlbiwgImwkYW5kc2Nh
cGUiKSkgewogICAgICAgICAgICBUZ2lmUG9ydHJhaXQgPSAwOwogICAgICAgICAgICB1QWN0UmVz
b2x1dGlvbiA9IDE0MDsKICAgICAgICAgICAgY190b2tlbisrOwogICAgICAgIH0KICAgIH0KCgog
ICAgaWYgKCEoY190b2tlbiA+PSBudW1fdG9rZW5zIHx8IGVxdWFscyhjX3Rva2VuLCI7IikpKSB7
CiAgICAgICAgaWYgKGVxdWFscyhjX3Rva2VuLCAiWyIpKSB7CiAgICAgICAgICAgIGNfdG9rZW4r
KzsKICAgICAgICAgICAgaWYgKChjX3Rva2VuID49IG51bV90b2tlbnMgfHwgZXF1YWxzKGNfdG9r
ZW4sIjsiKSkpIHsKICAgICAgICAgICAgICAgIGludF9lcnJvcigibm8uIHdpbmRvd3M6IFtob3Jp
em9udGFsLHZlcnRpY2FsXSBleHBlY3RlZCIsIGNfdG9rZW4pOwogICAgICAgICAgICB9IGVsc2Ug
aWYgKCFlcXVhbHMoY190b2tlbiwgIiwiKSkgewogICAgICAgICAgICAgICAgdVRnaWZfd2luX2hv
cml6ID0gKGludCkgcmVhbChjb25zdF9leHByZXNzKCZhKSk7CiAgICAgICAgICAgIH0KICAgICAg
ICAgICAgaWYgKCFlcXVhbHMoY190b2tlbiwgIiwiKSkKICAgICAgICAgICAgICAgIGludF9lcnJv
cigiJywnIGV4cGVjdGVkIiwgY190b2tlbik7CiAgICAgICAgICAgIGNfdG9rZW4rKzsKICAgICAg
ICAgICAgaWYgKCFlcXVhbHMoY190b2tlbiwgIl0iKSkgewogICAgICAgICAgICAgICAgdVRnaWZf
d2luX3ZlcnRpID0gKGludCkgcmVhbChjb25zdF9leHByZXNzKCZhKSk7CiAgICAgICAgICAgIH0K
ICAgICAgICAgICAgaWYgKCFlcXVhbHMoY190b2tlbiwgIl0iKSkKICAgICAgICAgICAgICAgIGlu
dF9lcnJvcigiZXhwZWN0aW5nICddJyIsIGNfdG9rZW4pOwogICAgICAgICAgICBjX3Rva2VuKys7
CgogICAgICAgICAgICB1VGdpZlBsb3RzUGVyUGFnZSA9IHVUZ2lmX3dpbl92ZXJ0aSAqIHVUZ2lm
X3dpbl9ob3JpejsKCgogICAgICAgIH0KICAgIH0KCgogICAgaWYgKCEoY190b2tlbiA+PSBudW1f
dG9rZW5zIHx8IGVxdWFscyhjX3Rva2VuLCI7IikpKSB7CiAgICAgICAgaWYgKGFsbW9zdF9lcXVh
bHMoY190b2tlbiwgInMkb2xpZCIpKSB7CiAgICAgICAgICAgIFRnaWZTb2xpZCA9IDE7CiAgICAg
ICAgICAgIGNfdG9rZW4rKzsKICAgICAgICB9IGVsc2UgaWYgKGFsbW9zdF9lcXVhbHMoY190b2tl
biwgImQkYXNoZWQiKSkgewogICAgICAgICAgICBUZ2lmU29saWQgPSAwOwogICAgICAgICAgICBj
X3Rva2VuKys7CiAgICAgICAgfQogICAgfQoKCiAgICBpZiAoIShjX3Rva2VuID49IG51bV90b2tl
bnMgfHwgZXF1YWxzKGNfdG9rZW4sIjsiKSkgJiYgaXNzdHJpbmcoY190b2tlbikpIHsKICAgICAg
ICBxdW90ZV9zdHIoc0FjdEZvbnQsIGNfdG9rZW4sIDEwMjQpOwogICAgICAgIChfX2V4dGVuc2lv
bl9fIChfX2J1aWx0aW5fY29uc3RhbnRfcCAoc0FjdEZvbnQpID8gKCgoc2l6ZV90KShjb25zdCB2
b2lkICopKChzQWN0Rm9udCkgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoc0FjdEZvbnQp
ID09IDEpICYmIHN0cmxlbiAoc0FjdEZvbnQpICsgMSA8PSA4ID8gX19zdHJjcHlfc21hbGwgKHNE
ZWZhdWx0Rm9udCwgX19leHRlbnNpb25fXyAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9f
Y29uc3QgY2hhciAqKSAoc0FjdEZvbnQpKVswICsgMV0gPDwgOCB8ICgoX19jb25zdCB1bnNpZ25l
ZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHNBY3RGb250KSlbMF0pLCBfX2V4dGVuc2lvbl9f
ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChzQWN0Rm9udCkp
WzQgKyAxXSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAq
KSAoc0FjdEZvbnQpKVs0XSksIF9fZXh0ZW5zaW9uX18gKCgoKChfX2NvbnN0IHVuc2lnbmVkIGNo
YXIgKikgKF9fY29uc3QgY2hhciAqKSAoc0FjdEZvbnQpKVswICsgM10gPDwgOCB8ICgoX19jb25z
dCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHNBY3RGb250KSlbMCArIDJdKSA8
PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoc0FjdEZv
bnQpKVswICsgMV0pIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBj
aGFyICopIChzQWN0Rm9udCkpWzBdKSwgX19leHRlbnNpb25fXyAoKCgoKF9fY29uc3QgdW5zaWdu
ZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChzQWN0Rm9udCkpWzQgKyAzXSA8PCA4IHwgKChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoc0FjdEZvbnQpKVs0ICsg
Ml0pIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChz
QWN0Rm9udCkpWzQgKyAxXSkgPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikgKHNBY3RGb250KSlbNF0pLCBzdHJsZW4gKHNBY3RGb250KSArIDEpIDogKGNo
YXIgKikgbWVtY3B5IChzRGVmYXVsdEZvbnQsIHNBY3RGb250LCBzdHJsZW4gKHNBY3RGb250KSAr
IDEpKSA6IHN0cmNweSAoc0RlZmF1bHRGb250LCBzQWN0Rm9udCkpKTsKICAgICAgICBjX3Rva2Vu
Kys7CiAgICB9CiAgICBpZiAoIShjX3Rva2VuID49IG51bV90b2tlbnMgfHwgZXF1YWxzKGNfdG9r
ZW4sIjsiKSkpIHsKCiAgICAgICAgdUFjdEZvbnRTaXplID0gKHVuc2lnbmVkIGludCkgcmVhbChj
b25zdF9leHByZXNzKCZiKSk7CiAgICAgICAgdURlZmF1bHRGb250U2l6ZSA9IHVBY3RGb250U2l6
ZTsKICAgICAgICB0ZXJtLT52X2NoYXIgPSAodW5zaWduZWQgaW50KSAodUFjdEZvbnRTaXplKTsK
ICAgICAgICB0ZXJtLT5oX2NoYXIgPSAodW5zaWduZWQgaW50KSAodUFjdEZvbnRTaXplICogNiAv
IDEwKTsKICAgIH0KCgogICAgaWYgKFRnaWZQb3J0cmFpdCkgewogICAgICAgIGRzY2FsZUggPSAo
ZG91YmxlKSAxMDAuMCAqKDk1MCkgLyAoeHNpemUgKiAoOTUwICsgKHVUZ2lmX3dpbl9ob3JpeiAt
IDEpICogMTAzMCkpOwogICAgICAgIGRzY2FsZVYgPSAoZG91YmxlKSAxMDAuMCAqKDE0MDApIC8g
KHlzaXplICogKDYzNCArICh1VGdpZl93aW5fdmVydGkgLSAxKSAqIDcxNCkpOwogICAgICAgIHVB
Y3RSZXNvbHV0aW9uID0gKGludCkgKCAoZHNjYWxlSCkgPCAoZHNjYWxlVikgPyAoZHNjYWxlSCkg
OiAoZHNjYWxlVikgKTsKICAgICAgICBzd2l0Y2ggKHVUZ2lmX3dpbl92ZXJ0aSkgewogICAgICAg
IGNhc2UgMToKICAgICAgICAgICAgdUFjdFpvb20gPSAwOwogICAgICAgICAgICBicmVhazsKCiAg
ICAgICAgY2FzZSAyOgogICAgICAgICAgICB1QWN0Wm9vbSA9IDE7CiAgICAgICAgICAgIGJyZWFr
OwogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgIHVBY3Rab29tID0gMjsKICAgICAgICAgICAg
YnJlYWs7CgogICAgICAgIH0KICAgIH0gZWxzZSB7CiAgICAgICAgZHNjYWxlSCA9IChkb3VibGUp
IDEwMC4wICooMTQwMCkgLyAoeHNpemUgKiAoOTUwICsgKHVUZ2lmX3dpbl9ob3JpeiAtIDEpICog
MTAzMCkpOwogICAgICAgIGRzY2FsZVYgPSAoZG91YmxlKSAxMDAuMCAqKDk1MCkgLyAoeXNpemUg
KiAoNjM0ICsgKHVUZ2lmX3dpbl92ZXJ0aSAtIDEpICogNzE0KSk7CiAgICAgICAgdUFjdFJlc29s
dXRpb24gPSAodW5zaWduZWQgaW50KSAoIChkc2NhbGVIKSA8IChkc2NhbGVWKSA/IChkc2NhbGVI
KSA6IChkc2NhbGVWKSApOwoKICAgICAgICBzd2l0Y2ggKHVUZ2lmX3dpbl92ZXJ0aSkgewogICAg
ICAgIGNhc2UgMToKICAgICAgICAgICAgdUFjdFpvb20gPSAwOwogICAgICAgICAgICBicmVhazsK
CiAgICAgICAgY2FzZSAyOgogICAgICAgICAgICB1QWN0Wm9vbSA9IDE7CiAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgIHVBY3Rab29tID0gMjsKICAgICAgICAg
ICAgYnJlYWs7CgogICAgICAgIH0KICAgIH0KCgoKICAgIHNwcmludGYodGVybV9vcHRpb25zLCAi
JXMgWyV1LCV1XSAlcyBcIiVzXCIgJXUiLAogICAgICAgICAgICBUZ2lmUG9ydHJhaXQgPyAicG9y
dHJhaXQiIDogImxhbmRzY2FwZSIsCiAgICAgICAgICAgIHVUZ2lmX3dpbl9ob3JpeiwgdVRnaWZf
d2luX3ZlcnRpLAogICAgICAgICAgICBUZ2lmU29saWQgPyAic29saWQiIDogImRhc2hlZCIsCiAg
ICAgICAgICAgIHNBY3RGb250LCB1QWN0Rm9udFNpemUpOwp9CgoKc3RhdGljIHZvaWQgVEdJRl9p
bml0KCkKewoKICAgIGlmIChtdWx0aXBsb3QpIHsKCiAgICAgICAgdUFjdFJlc29sdXRpb24gPSAo
dW5zaWduZWQgaW50KSAxMDA7CgogICAgICAgIGlmICh1VGdpZlBsb3RzUGVyUGFnZSA+IDEpIHsK
ICAgICAgICAgICAgZnB1dHMoIndhcm5pbmc6IHVzaW5nIHN0YW5kYXJkIG11bHRpcGxvdFxuIiwg
c3RkZXJyKTsKICAgICAgICAgICAgdVRnaWZQbG90c1BlclBhZ2UgPSAxOwogICAgICAgIH0KICAg
ICAgICB1QWN0Wm9vbSA9IDE7CiAgICB9CiAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgIiUlVEdJRiAy
LjE1LXA3XG5zdGF0ZSglZCwzMCwldSwwLDAsJXUsMTYsMSw5LDEsMSwwLDAsMCwwLDEsMCwnJXMn
LDAsJXUsMCwwLDEsMTAsMCwwLDEsMSwwLDE2LDAsMCwxLDEsMSkuXG4lJVxuJSUgQCgjKSRIZWFk
ZXI6IC92YXIvdG1wL0NWU1JPT1QvZ251cGxvdC90ZXJtL3RnaWYudHJtLHYgMS4xMCAxOTk4LzEy
LzE2IDE5OjQ4OjIwIGxoZWNraW5nIEV4cCAkXG4lJSAlJVclJVxuJSVcbnBhZ2UoMSxcIlwiKS5c
biIsCgoKCgogICAgICAgICAgICBUZ2lmUG9ydHJhaXQgPyAwIDogMSwgdUFjdFJlc29sdXRpb24s
IHVBY3Rab29tLCBzQWN0Rm9udCwgdUFjdEZvbnRTaXplKTsKICAgIGVUZ2lmU3RhdGUgPSBORVdQ
T0xZOwogICAgaVRnaWZQb2x5Q291bnQgPSAwOwogICAgdVRnaWZQbG90Q291bnQgPSAwOwogICAg
dUFjdFBhZ2UgPSAxOwoKfQoKCnN0YXRpYyB2b2lkIFRHSUZfZ3JhcGhpY3MoKQp7CgogICAgVEdJ
Rl9mbHVzaF9wb2x5KCk7CgogICAgaWYgKG11bHRpcGxvdCkgewoKICAgICAgICB0ZXJtLT54bWF4
ID0gKFRnaWZQb3J0cmFpdCkgPyA5NTAgOiAxNDAwOwogICAgICAgIHRlcm0tPnltYXggPSAoVGdp
ZlBvcnRyYWl0KSA/IDE0MDAgOiA5NTA7CiAgICAgICAgdUxhc3RUZ2lmWCA9IChUZ2lmUG9ydHJh
aXQpID8gNTAgOiA1MDsKICAgICAgICB1TGFzdFRnaWZZID0gKFRnaWZQb3J0cmFpdCkgPyAxNDAw
ICsgNTAgOiA5NTAgKyA1MDsKCiAgICAgICAgdVlzaGlmdCA9IHVMYXN0VGdpZlk7CiAgICAgICAg
dVhzaGlmdCA9IHVMYXN0VGdpZlg7CgogICAgfSBlbHNlIHsKICAgICAgICBpZiAodVRnaWZQbG90
Q291bnQgPCB1VGdpZlBsb3RzUGVyUGFnZSkKICAgICAgICAgICAgdVRnaWZQbG90Q291bnQrKzsK
ICAgICAgICBlbHNlIHsKICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJlcnJvcjogbnVtYmVy
IG9mIHBsb3RzID4gcGxvdHMgcGVyIHBhZ2VcbiIpOwogICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgfQoKICAgICAgICB1WHNoaWZ0ID0gKHVuc2lnbmVkIGludCkgNTAgKjEwMCAvIHVBY3RSZXNv
bHV0aW9uICsgKHhzaXplICogKHVUZ2lmUGxvdENvbCAtIDEpICogMTAzMCk7CiAgICAgICAgdVlz
aGlmdCA9ICh1bnNpZ25lZCBpbnQpIDUwICoxMDAgLyB1QWN0UmVzb2x1dGlvbiArICh5c2l6ZSAq
ICg2MzQgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1VGdpZlBsb3RSb3cgLSAxKSAqIDcxNCkpOwoK
ICAgICAgICBpZiAodVRnaWZQbG90Q291bnQgJSB1VGdpZl93aW5faG9yaXogPT0gMCkgewogICAg
ICAgICAgICB1VGdpZlBsb3RDb2wgPSAxOwogICAgICAgICAgICB1VGdpZlBsb3RSb3crKzsKICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICB1VGdpZlBsb3RDb2wrKzsKICAgICAgICB9CgogICAg
ICAgIHVMYXN0VGdpZlggPSB1WHNoaWZ0OwogICAgICAgIHVMYXN0VGdpZlkgPSB1WXNoaWZ0OwoK
ICAgIH0KCgoKCgoKICAgIGlUZ2lmUG9seUNvdW50ID0gMDsKICAgIHVBY3ROciA9IDA7CiAgICB1
QWN0QW5nbGUgPSAwOwogICAgdUFjdFRoaWNrID0gMTsKICAgIHVBY3RTdHlsZSA9IDA7CiAgICB1
QWN0SnVzdCA9IExFRlQ7CiAgICAoX19leHRlbnNpb25fXyAoX19idWlsdGluX2NvbnN0YW50X3Ag
KHBzQ29sb3JzWzBdKSA/ICgoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgocHNDb2xvcnNbMF0pICsg
MSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKHBzQ29sb3JzWzBdKSA9PSAxKSAmJiBzdHJsZW4g
KHBzQ29sb3JzWzBdKSArIDEgPD0gOCA/IF9fc3RyY3B5X3NtYWxsIChzQWN0Q29sb3IsIF9fZXh0
ZW5zaW9uX18gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHBz
Q29sb3JzWzBdKSlbMCArIDFdIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19j
b25zdCBjaGFyICopIChwc0NvbG9yc1swXSkpWzBdKSwgX19leHRlbnNpb25fXyAoKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAocHNDb2xvcnNbMF0pKVs0ICsgMV0g
PDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHBzQ29s
b3JzWzBdKSlbNF0pLCBfX2V4dGVuc2lvbl9fICgoKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikgKHBzQ29sb3JzWzBdKSlbMCArIDNdIDw8IDggfCAoKF9fY29uc3Qg
dW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChwc0NvbG9yc1swXSkpWzAgKyAyXSkg
PDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHBzQ29s
b3JzWzBdKSlbMCArIDFdKSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29u
c3QgY2hhciAqKSAocHNDb2xvcnNbMF0pKVswXSksIF9fZXh0ZW5zaW9uX18gKCgoKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAocHNDb2xvcnNbMF0pKVs0ICsgM10g
PDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHBzQ29s
b3JzWzBdKSlbNCArIDJdKSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29u
c3QgY2hhciAqKSAocHNDb2xvcnNbMF0pKVs0ICsgMV0pIDw8IDggfCAoKF9fY29uc3QgdW5zaWdu
ZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChwc0NvbG9yc1swXSkpWzRdKSwgc3RybGVuIChw
c0NvbG9yc1swXSkgKyAxKSA6IChjaGFyICopIG1lbWNweSAoc0FjdENvbG9yLCBwc0NvbG9yc1sw
XSwgc3RybGVuIChwc0NvbG9yc1swXSkgKyAxKSkgOiBzdHJjcHkgKHNBY3RDb2xvciwgcHNDb2xv
cnNbMF0pKSk7CgoKfQoKCnN0YXRpYyB2b2lkIFRHSUZfdGV4dCgpCnsKICAgIFRHSUZfZmx1c2hf
cG9seSgpOwoKCn0KCgoKc3RhdGljIHZvaWQgVEdJRl9yZXNldCgpCnsKICAgIFRHSUZfZmx1c2hf
cG9seSgpOwogICAgaVRnaWZQb2x5Q291bnQgPSAwOwogICAgdVRnaWZQbG90Q291bnQgPSAwOwog
ICAgdVRnaWZQbG90Um93ID0gMTsKICAgIHVUZ2lmUGxvdENvbCA9IDE7CgoKICAgIGlmIChncG91
dGZpbGUgIT0gKEZJTEUgKikgKCh2b2lkICopMCkpCiAgICAgICAgZmZsdXNoKGdwb3V0ZmlsZSk7
Cgp9CgoKc3RhdGljIHZvaWQgVEdJRl9saW5ldHlwZShsaW5ldHlwZSkKaW50IGxpbmV0eXBlOwp7
CiAgICB1bnNpZ25lZCBpbnQgdWx0OwoKCiAgICBUR0lGX2ZsdXNoX3BvbHkoKTsKCgogICAgaWYg
KGxpbmV0eXBlID49IDApCiAgICAgICAgdWx0ID0gMiArIGxpbmV0eXBlICUgMTA7CiAgICBlbHNl
CiAgICAgICAgdWx0ID0gbGluZXR5cGUgKyAyOwoKICAgIChfX2V4dGVuc2lvbl9fIChfX2J1aWx0
aW5fY29uc3RhbnRfcCAocHNDb2xvcnNbdWx0XSkgPyAoKChzaXplX3QpKGNvbnN0IHZvaWQgKiko
KHBzQ29sb3JzW3VsdF0pICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKHBzQ29sb3JzW3Vs
dF0pID09IDEpICYmIHN0cmxlbiAocHNDb2xvcnNbdWx0XSkgKyAxIDw9IDggPyBfX3N0cmNweV9z
bWFsbCAoc0FjdENvbG9yLCBfX2V4dGVuc2lvbl9fICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAq
KSAoX19jb25zdCBjaGFyICopIChwc0NvbG9yc1t1bHRdKSlbMCArIDFdIDw8IDggfCAoKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChwc0NvbG9yc1t1bHRdKSlbMF0p
LCBfX2V4dGVuc2lvbl9fICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFy
ICopIChwc0NvbG9yc1t1bHRdKSlbNCArIDFdIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hh
ciAqKSAoX19jb25zdCBjaGFyICopIChwc0NvbG9yc1t1bHRdKSlbNF0pLCBfX2V4dGVuc2lvbl9f
ICgoKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHBzQ29sb3Jz
W3VsdF0pKVswICsgM10gPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0
IGNoYXIgKikgKHBzQ29sb3JzW3VsdF0pKVswICsgMl0pIDw8IDggfCAoKF9fY29uc3QgdW5zaWdu
ZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChwc0NvbG9yc1t1bHRdKSlbMCArIDFdKSA8PCA4
IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAocHNDb2xvcnNb
dWx0XSkpWzBdKSwgX19leHRlbnNpb25fXyAoKCgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAo
X19jb25zdCBjaGFyICopIChwc0NvbG9yc1t1bHRdKSlbNCArIDNdIDw8IDggfCAoKF9fY29uc3Qg
dW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChwc0NvbG9yc1t1bHRdKSlbNCArIDJd
KSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAocHND
b2xvcnNbdWx0XSkpWzQgKyAxXSkgPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf
X2NvbnN0IGNoYXIgKikgKHBzQ29sb3JzW3VsdF0pKVs0XSksIHN0cmxlbiAocHNDb2xvcnNbdWx0
XSkgKyAxKSA6IChjaGFyICopIG1lbWNweSAoc0FjdENvbG9yLCBwc0NvbG9yc1t1bHRdLCBzdHJs
ZW4gKHBzQ29sb3JzW3VsdF0pICsgMSkpIDogc3RyY3B5IChzQWN0Q29sb3IsIHBzQ29sb3JzW3Vs
dF0pKSk7CiAgICB1QWN0VGhpY2sgPSB1TGluZVRoaWNrW3VsdF07CiAgICBpZiAoIVRnaWZTb2xp
ZCkKICAgICAgICB1QWN0U3R5bGUgPSB1TGluZVN0eWxlW3VsdF07CiAgICBlbHNlIHsKICAgICAg
ICBpZiAodWx0ID09IDEpCiAgICAgICAgICAgIHVBY3RTdHlsZSA9IHVMaW5lU3R5bGVbdWx0XTsK
ICAgICAgICBlbHNlCiAgICAgICAgICAgIHVBY3RTdHlsZSA9IHVMaW5lU3R5bGVbMl07CgogICAg
fQoKfQoKCnN0YXRpYyB2b2lkIFRHSUZfbW92ZSh1eCwgdXkpCnVuc2lnbmVkIGludCB1eCwgdXk7
CnsKCiAgICB1TGFzdFRnaWZYID0gdXggKyB1WHNoaWZ0OwogICAgdUxhc3RUZ2lmWSA9IHVZc2hp
ZnQgLSB1eTsKCiAgICBpZiAoZVRnaWZTdGF0ZSA9PSBJTlBPTFkpCiAgICAgICAgVEdJRl9mbHVz
aF9wb2x5KCk7CgoKCn0KCgpzdGF0aWMgdm9pZCBUR0lGX3ZlY3Rvcih1eCwgdXkpCnVuc2lnbmVk
IGludCB1eCwgdXk7CnsKCiAgICB1eCA9IHV4ICsgdVhzaGlmdDsKICAgIHV5ID0gdVlzaGlmdCAt
IHV5OwoKCgogICAgaWYgKGVUZ2lmU3RhdGUgPT0gTkVXUE9MWSkgewogICAgICAgIHVCdWZmWFsw
XSA9IHVMYXN0VGdpZlg7CiAgICAgICAgdUJ1ZmZZWzBdID0gdUxhc3RUZ2lmWTsKICAgICAgICBp
VGdpZlBvbHlDb3VudCA9IDE7CiAgICAgICAgZVRnaWZTdGF0ZSA9IElOUE9MWTsKICAgIH0KICAg
IHVCdWZmWFtpVGdpZlBvbHlDb3VudF0gPSB1eDsKICAgIHVCdWZmWVtpVGdpZlBvbHlDb3VudF0g
PSB1eTsKICAgIHVMYXN0VGdpZlggPSB1eDsKICAgIHVMYXN0VGdpZlkgPSB1eTsKICAgIGlUZ2lm
UG9seUNvdW50Kys7CiAgICBlVGdpZlN0YXRlID0gSU5QT0xZOwoKICAgIGlmIChpVGdpZlBvbHlD
b3VudCA9PSAxMDApIHsKICAgICAgICBUR0lGX2ZsdXNoX3BvbHkoKTsKCiAgICB9Cn0KCgpzdGF0
aWMgdm9pZCBUR0lGX2Fycm93KHN4LCBzeSwgZXgsIGV5LCBoZWFkKQp1bnNpZ25lZCBpbnQgc3gs
IHN5LCBleCwgZXk7ClRCT09MRUFOIGhlYWQ7CnsKCiAgICBUR0lGX2ZsdXNoX3BvbHkoKTsKCiAg
ICBzeCA9IHN4ICsgdVhzaGlmdDsKICAgIGV4ID0gZXggKyB1WHNoaWZ0OwogICAgc3kgPSB1WXNo
aWZ0IC0gc3k7CiAgICBleSA9IHVZc2hpZnQgLSBleTsKCgogICAgaWYgKGhlYWQpIHsKICAgICAg
ICBmcHJpbnRmKGdwb3V0ZmlsZSwgInBvbHkoJyVzJywlZCxbXG5cdCV1LCV1LCV1LCV1XSwxLCV1
LDEsJXUsMCwwLCV1LDAsOCwzLDAsW1xuXSkuXG4iLAogICAgICAgICAgICAgICAgc0FjdENvbG9y
LCAyLCBzeCwgc3ksIGV4LCBleSwgdUFjdFRoaWNrLCB1QWN0TnIsIHVBY3RTdHlsZSk7CiAgICB9
IGVsc2UgewogICAgICAgIGZwcmludGYoZ3BvdXRmaWxlLCAicG9seSgnJXMnLCVkLFtcblx0JXUs
JXUsJXUsJXVdLDEsJXUsMSwldSwwLDAsJXUsMCw4LDMsMCxbXG5dKS5cbiIsCiAgICAgICAgICAg
ICAgICBzQWN0Q29sb3IsIDIsIHN4LCBzeSwgZXgsIGV5LCB1QWN0VGhpY2ssIHVBY3ROciwgdUFj
dFN0eWxlKTsKICAgIH0KCiAgICB1QWN0TnIrKzsKCgoKICAgIHVMYXN0VGdpZlggPSBleDsKICAg
IHVMYXN0VGdpZlkgPSBleTsKCn0KCgpzdGF0aWMgdm9pZCBUR0lGX3B1dF90ZXh0KHV4LCB1eSwg
c3RyKQp1bnNpZ25lZCBpbnQgdXgsIHV5OwpjaGFyICpzdHI7CnsKCiAgICB1bnNpZ25lZCBpbnQg
eCwgeTsKICAgIHN0cnVjdCBURVJNRU5UUlkgKnQgPSB0ZXJtOwoKICAgIFRHSUZfZmx1c2hfcG9s
eSgpOwoKICAgIHggPSB1eCArIHVYc2hpZnQ7CiAgICB5ID0gdVlzaGlmdCAtIHV5IC0gdC0+dl9j
aGFyIC8gMjsKCgoKICAgIGlmIChzdHJsZW4oc3RyKSA9PSAwKQogICAgICAgIHJldHVybjsKCgog
ICAgZnByaW50ZihncG91dGZpbGUsCiAgICAgICAgICAgICJ0ZXh0KCclcycsJXUsJXUsJyVzJyww
LCV1LDEsJXUsJXUsMSw1NSwxMTksJXUsMCwxNSw0LDAsMCwwLDAsW1xuXHRcIiVzXCJdKS5cbiIs
CiAgICAgICAgICAgIHNBY3RDb2xvciwgeCwgeSwgc0FjdEZvbnQsIHVBY3RGb250U2l6ZSwgdUFj
dEp1c3QsIHVBY3RBbmdsZSwgdUFjdE5yLCBzdHIpOwoKICAgIHVBY3ROciArPSAyOwoKCiAgICB1
QWN0Rm9udFNpemUgPSB1RGVmYXVsdEZvbnRTaXplOwogICAgKF9fZXh0ZW5zaW9uX18gKF9fYnVp
bHRpbl9jb25zdGFudF9wIChzRGVmYXVsdEZvbnQpID8gKCgoc2l6ZV90KShjb25zdCB2b2lkICop
KChzRGVmYXVsdEZvbnQpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKHNEZWZhdWx0Rm9u
dCkgPT0gMSkgJiYgc3RybGVuIChzRGVmYXVsdEZvbnQpICsgMSA8PSA4ID8gX19zdHJjcHlfc21h
bGwgKHNBY3RGb250LCBfX2V4dGVuc2lvbl9fICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAo
X19jb25zdCBjaGFyICopIChzRGVmYXVsdEZvbnQpKVswICsgMV0gPDwgOCB8ICgoX19jb25zdCB1
bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHNEZWZhdWx0Rm9udCkpWzBdKSwgX19l
eHRlbnNpb25fXyAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAo
c0RlZmF1bHRGb250KSlbNCArIDFdIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAo
X19jb25zdCBjaGFyICopIChzRGVmYXVsdEZvbnQpKVs0XSksIF9fZXh0ZW5zaW9uX18gKCgoKChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoc0RlZmF1bHRGb250KSlb
MCArIDNdIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop
IChzRGVmYXVsdEZvbnQpKVswICsgMl0pIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAq
KSAoX19jb25zdCBjaGFyICopIChzRGVmYXVsdEZvbnQpKVswICsgMV0pIDw8IDggfCAoKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChzRGVmYXVsdEZvbnQpKVswXSks
IF9fZXh0ZW5zaW9uX18gKCgoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh
ciAqKSAoc0RlZmF1bHRGb250KSlbNCArIDNdIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hh
ciAqKSAoX19jb25zdCBjaGFyICopIChzRGVmYXVsdEZvbnQpKVs0ICsgMl0pIDw8IDggfCAoKF9f
Y29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChzRGVmYXVsdEZvbnQpKVs0
ICsgMV0pIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop
IChzRGVmYXVsdEZvbnQpKVs0XSksIHN0cmxlbiAoc0RlZmF1bHRGb250KSArIDEpIDogKGNoYXIg
KikgbWVtY3B5IChzQWN0Rm9udCwgc0RlZmF1bHRGb250LCBzdHJsZW4gKHNEZWZhdWx0Rm9udCkg
KyAxKSkgOiBzdHJjcHkgKHNBY3RGb250LCBzRGVmYXVsdEZvbnQpKSk7Cgp9CgoKc3RhdGljIGlu
dCBUR0lGX3RleHRfYW5nbGUoYW5nKQppbnQgYW5nOwp7CiAgICB1QWN0QW5nbGUgPSB1VGV4dEFu
Z2xlW2FuZ107CiAgICByZXR1cm4gKDEpOwp9CgoKCnN0YXRpYyBpbnQgVEdJRl9qdXN0aWZ5X3Rl
eHQobW9kZSkKZW51bSBKVVNUSUZZIG1vZGU7CnsKICAgIHVBY3RKdXN0ID0gbW9kZTsKICAgIHJl
dHVybiAoMSk7Cn0KCgoKc3RhdGljIHZvaWQgVEdJRl9wb2ludCh1eCwgdXksIG51bWJlcikKdW5z
aWduZWQgaW50IHV4LCB1eTsKaW50IG51bWJlcjsKewogICAgZG91YmxlIHA7CgogICAgZG91Ymxl
IHgsIHk7CgoKCiAgICB4ID0gKGRvdWJsZSkgKHV4ICsgdVhzaGlmdCk7CiAgICB5ID0gKGRvdWJs
ZSkgKHVZc2hpZnQgLSB1eSk7CgogICAgcCA9IHBvaW50c2l6ZSAqIDguMDsKICAgIGlmIChwID09
IChkb3VibGUpIDAuMCkKICAgICAgICBwID0gMC4xOwoKICAgIFRHSUZfZmx1c2hfcG9seSgpOwoK
ICAgIGlmIChudW1iZXIgIT0gLTEpCiAgICAgICAgbnVtYmVyID0gbnVtYmVyICUgNjM7CiAgICBz
d2l0Y2ggKG51bWJlcikgewogICAgY2FzZSAtMToKCiAgICAgICAgZnByaW50ZihncG91dGZpbGUs
ICJwb2x5KCclcycsMixbXG5cdCUuMWYsJS4xZiwlLjFmLCUuMWZdLDAsMSwxLCV1LDAsMCwwLDAs
OCwzLDAsW1xuXSkuXG4iLAogICAgICAgICAgICAgICAgc0FjdENvbG9yLCB4LCB5LCB4ICsgMSwg
eSArIDEsIHVBY3ROcisrKTsKICAgICAgICBicmVhazsKICAgIGNhc2UgMDoKCgogICAgICAgIGZw
cmludGYoZ3BvdXRmaWxlLCAiZ3JvdXAoW1xucG9seSgnJXMnLDIsW1xuXHQlLjFmLCUuMWYsJS4x
ZiwlLjFmXSwwLDIsMSwldSwwLDAsMCwwLDgsMywwLFtcbl0pLlxucG9seSgnJXMnLDIsW1xuXHQl
LjFmLCUuMWYsJS4xZiwlLjFmXSwwLDIsMSwldSwwLDAsMCwwLDgsMywwLFtcbl0pLlxuIiwKCgoK
ICAgICAgICAgICAgICAgIHNBY3RDb2xvciwgeCAtIHAsIHkgLSBwLCB4ICsgcCwgeSArIHAsIHVB
Y3ROcisxLAogICAgICAgICAgICAgICAgc0FjdENvbG9yLCB4IC0gcCwgeSArIHAsIHggKyBwLCB5
IC0gcCwgdUFjdE5yKzIpOwogICAgICAgIHVBY3ROciArPSA0OwogICAgICAgIGZwcmludGYoZ3Bv
dXRmaWxlLCAiXSxcbiV1LDAsW1xuXSkuXG4iLCB1QWN0TnIrKyk7CiAgICAgICAgYnJlYWs7Cgog
ICAgY2FzZSAxOgoKCiAgICAgICAgZnByaW50ZihncG91dGZpbGUsICJncm91cChbXG5wb2x5KCcl
cycsMixbXG5cdCUuMWYsJS4xZiwlLjFmLCUuMWZdLDAsMiwxLCV1LDAsMCwwLDAsOCwzLDAsW1xu
XSksXG5wb2x5KCclcycsMixbXG5cdCUuMWYsJS4xZiwlLjFmLCUuMWZdLDAsMiwxLCV1LDAsMCww
LDAsOCwzLDAsW1xuXSlcbiIsCgoKCiAgICAgICAgICAgICAgICBzQWN0Q29sb3IsIHgsIHkgLSBw
IC0gMSwgeCwgeSArIHAgKyAxLCB1QWN0TnIrMSwKICAgICAgICAgICAgICAgIHNBY3RDb2xvciwg
eCAtIHAgLSAxLCB5LCB4ICsgcCArIDEsIHksIHVBY3ROcisyKTsKICAgICAgICB1QWN0TnIgKz0g
NDsKICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgIl0sXG4ldSwwLFtcbl0pLlxuIiwgdUFjdE5y
KyspOwogICAgICAgIGJyZWFrOwoKICAgIGNhc2UgMjoKCgogICAgICAgIGZwcmludGYoZ3BvdXRm
aWxlLCAiZ3JvdXAoW1xuIik7CiAgICAgICAgZnByaW50ZihncG91dGZpbGUsICJwb2x5KCclcycs
MixbXG5cdCUuMWYsJS4xZiwlLjFmLCUuMWZdLDAsMiwxLCV1LDAsMCwwLDAsOCwzLDAsW1xuXSks
XG4iLAogICAgICAgICAgICAgICAgc0FjdENvbG9yLCB4LCB5IC0gcCAtIDEsIHgsIHkgKyBwICsg
MSwgdUFjdE5yKyspOwogICAgICAgIGZwcmludGYoZ3BvdXRmaWxlLCAicG9seSgnJXMnLDIsW1xu
XHQlLjFmLCUuMWYsJS4xZiwlLjFmXSwwLDIsMSwldSwwLDAsMCwwLDgsMywwLFtcbl0pXG4iLAog
ICAgICAgICAgICAgICAgc0FjdENvbG9yLCB4IC0gcCAtIDEsIHksIHggKyBwICsgMSwgeSwgdUFj
dE5yKyspOwogICAgICAgIGZwcmludGYoZ3BvdXRmaWxlLCAicG9seSgnJXMnLDIsW1xuXHQlLjFm
LCUuMWYsJS4xZiwlLjFmXSwwLDIsMSwldSwwLDAsMCwwLDgsMywwLFtcbl0pLlxuIiwKICAgICAg
ICAgICAgICAgIHNBY3RDb2xvciwgeCAtIHAsIHkgLSBwLCB4ICsgcCwgeSArIHAsIHVBY3ROcisr
KTsKICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgInBvbHkoJyVzJywyLFtcblx0JS4xZiwlLjFm
LCUuMWYsJS4xZl0sMCwyLDEsJXUsMCwwLDAsMCw4LDMsMCxbXG5dKS5cbiIsCiAgICAgICAgICAg
ICAgICBzQWN0Q29sb3IsIHggLSBwLCB5ICsgcCwgeCArIHAsIHkgLSBwLCB1QWN0TnIrKyk7CiAg
ICAgICAgdUFjdE5yICs9IDQ7CiAgICAgICAgZnByaW50ZihncG91dGZpbGUsICJdLFxuJXUsMCxb
XG5dKS5cbiIsIHVBY3ROcisrKTsKICAgICAgICBicmVhazsKCiAgICBjYXNlIDM6CgogICAgICAg
IGZwcmludGYoZ3BvdXRmaWxlLCAiYm94KCclcycsJS4xZiwlLjFmLCUuMWYsJS4xZiwyLDEsMSwl
dSwwLDAsMCxbXG5dKS5cbiIsCiAgICAgICAgICAgICAgICBzQWN0Q29sb3IsIHggLSBwLCB5IC0g
cCwgeCArIHAsIHkgKyBwLCB1QWN0TnIpOwogICAgICAgIHVBY3ROcisrOwogICAgICAgIGJyZWFr
OwoKICAgIGNhc2UgNDoKCiAgICAgICAgZnByaW50ZihncG91dGZpbGUsICJib3goJyVzJywlLjFm
LCUuMWYsJS4xZiwlLjFmLDEsMSwxLCV1LDAsMCwwLFtcbl0pLlxuIiwKICAgICAgICAgICAgICAg
IHNBY3RDb2xvciwgeCAtIHAsIHkgLSBwLCB4ICsgcCwgeSArIHAsIHVBY3ROcik7CiAgICAgICAg
dUFjdE5yKys7CiAgICAgICAgYnJlYWs7CgogICAgY2FzZSA1OgoKICAgICAgICBmcHJpbnRmKGdw
b3V0ZmlsZSwgIm92YWwoJyVzJywlLjFmLCUuMWYsJS4xZiwlLjFmLDIsMSwxLCV1LDAsMCwwLFtc
bl0pLlxuIiwKICAgICAgICAgICAgICAgIHNBY3RDb2xvciwgeCAtIHAsIHkgLSBwLCB4ICsgcCwg
eSArIHAsIHVBY3ROcik7CiAgICAgICAgdUFjdE5yKys7CiAgICAgICAgYnJlYWs7CgogICAgY2Fz
ZSA2OgoKICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgIm92YWwoJyVzJywlLjFmLCUuMWYsJS4x
ZiwlLjFmLDEsMSwxLCV1LDAsMCwwLFtcbl0pLlxuIiwKICAgICAgICAgICAgICAgIHNBY3RDb2xv
ciwgeCAtIHAsIHkgLSBwLCB4ICsgcCwgeSArIHAsIHVBY3ROcik7CiAgICAgICAgdUFjdE5yKys7
CiAgICAgICAgYnJlYWs7CgogICAgY2FzZSA3OgoKICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwK
ICAgICAgICAgICAgICAgICJwb2x5Z29uKCclcycsNCxbXG4lLjFmLCUuMWYsJS4xZiwlLjFmLCUu
MWYsJS4xZiwlLjFmLCUuMWZdLDAsMSwxLDAsJXUsMCwwLDAsMCwwLFtcbl0pLlxuIiwKICAgICAg
ICAgICAgICAgIHNBY3RDb2xvciwgeCwgeSAtIHAsIHggKyBwLCB5ICsgMC43NSAqIHAsIHggLSBw
LCB5ICsgMC43NSAqIHAsIHgsIHkgLSBwLCB1QWN0TnIpOwogICAgICAgIHVBY3ROcisrOwogICAg
ICAgIGJyZWFrOwoKICAgIGNhc2UgODoKCiAgICAgICAgZnByaW50ZihncG91dGZpbGUsCiAgICAg
ICAgICAgICAgICAicG9seWdvbignJXMnLDQsW1xuJS4xZiwlLjFmLCUuMWYsJS4xZiwlLjFmLCUu
MWYsJS4xZiwlLjFmXSwxLDEsMSwwLCV1LDAsMCwwLDAsMCxbXG5dKS5cbiIsCiAgICAgICAgICAg
ICAgICBzQWN0Q29sb3IsIHgsIHkgLSBwLCB4ICsgcCwgeSArIDAuNzUgKiBwLCB4IC0gcCwgeSAr
IDAuNzUgKiBwLCB4LCB5IC0gcCwgdUFjdE5yKTsKICAgICAgICB1QWN0TnIrKzsKICAgICAgICBi
cmVhazsKCiAgICBjYXNlIDk6CgogICAgICAgIGZwcmludGYoZ3BvdXRmaWxlLAogICAgICAgICAg
ICAgICAgInBvbHlnb24oJyVzJyw0LFtcbiUuMWYsJS4xZiwlLjFmLCUuMWYsJS4xZiwlLjFmLCUu
MWYsJS4xZl0sMCwxLDEsMCwldSwwLDAsMCwwLDAsW1xuXSkuXG4iLAogICAgICAgICAgICAgICAg
c0FjdENvbG9yLCB4LCB5ICsgcCwgeCAtIHAsIHkgLSAwLjc1ICogcCwgeCArIHAsIHkgLSAwLjc1
ICogcCwgeCwgeSArIHAsIHVBY3ROcik7CiAgICAgICAgdUFjdE5yKys7CiAgICAgICAgYnJlYWs7
CgogICAgY2FzZSAxMDoKCiAgICAgICAgZnByaW50ZihncG91dGZpbGUsCiAgICAgICAgICAgICAg
ICAicG9seWdvbignJXMnLDQsW1xuJS4xZiwlLjFmLCUuMWYsJS4xZiwlLjFmLCUuMWYsJS4xZiwl
LjFmXSwxLDEsMSwwLCV1LDAsMCwwLDAsMCxbXG5dKS5cbiIsCiAgICAgICAgICAgICAgICBzQWN0
Q29sb3IsIHgsIHkgKyBwLCB4IC0gcCwgeSAtIDAuNzUgKiBwLCB4ICsgcCwgeSAtIDAuNzUgKiBw
LCB4LCB5ICsgcCwgdUFjdE5yKTsKICAgICAgICB1QWN0TnIrKzsKICAgICAgICBicmVhazsKCiAg
ICBjYXNlIDExOgoKICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwKICAgICAgICAgICAgICAgICJw
b2x5Z29uKCclcycsNSxbXG4lLjFmLCUuMWYsJS4xZiwlLjFmLCUuMWYsJS4xZiwlLjFmLCUuMWYs
JS4xZiwlLjFmXSwwLDEsMSwwLCV1LDAsMCwwLDAsMCxbXG5dKS5cbiIsCiAgICAgICAgICAgICAg
ICBzQWN0Q29sb3IsIHgsIHkgKyBwLCB4ICsgcCwgeSwgeCwgeSAtIHAsIHggLSBwLCB5LCB4LCB5
ICsgcCwgdUFjdE5yKTsKICAgICAgICB1QWN0TnIrKzsKICAgICAgICBicmVhazsKCiAgICBjYXNl
IDEyOgoKICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwKICAgICAgICAgICAgICAgICJwb2x5Z29u
KCclcycsNSxbXG4lLjFmLCUuMWYsJS4xZiwlLjFmLCUuMWYsJS4xZiwlLjFmLCUuMWYsJS4xZiwl
LjFmXSwxLDEsMSwwLCV1LDAsMCwwLDAsMCxbXG5dKS5cbiIsCiAgICAgICAgICAgICAgICBzQWN0
Q29sb3IsIHgsIHkgKyBwLCB4ICsgcCwgeSwgeCwgeSAtIHAsIHggLSBwLCB5LCB4LCB5ICsgcCwg
dUFjdE5yKTsKICAgICAgICB1QWN0TnIrKzsKICAgICAgICBicmVhazsKCiAgICBjYXNlIDEzOgoK
ICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwKICAgICAgICAgICAgICAgICJwb2x5Z29uKCclcycs
NixbXG4lLjFmLCUuMWYsJS4xZiwlLjFmLCUuMWYsJS4xZiwlLjFmLCUuMWYsJS4xZiwlLjFmLCUu
MWYsJS4xZl0sMCwxLDEsMCwldSwwLDAsMCwwLDAsW1xuXSkuXG4iLAogICAgICAgICAgICAgICAg
c0FjdENvbG9yLCB4LCB5IC0gcCwgeCArIHAsIHkgLSBwIC8gNCwgeCArIDAuNjI1ICogcCwgeSAr
IHAsIHggLSAwLjYyNSAqIHAsIHkgKyBwLAogICAgICAgICAgICAgICAgeCAtIHAsIHkgLSBwIC8g
NCwgeCwgeSAtIHAsIHVBY3ROcik7CiAgICAgICAgdUFjdE5yKys7CiAgICAgICAgYnJlYWs7Cgog
ICAgY2FzZSAxNDoKCiAgICAgICAgZnByaW50ZihncG91dGZpbGUsCiAgICAgICAgICAgICAgICAi
cG9seWdvbignJXMnLDYsW1xuJS4xZiwlLjFmLCUuMWYsJS4xZiwlLjFmLCUuMWYsJS4xZiwlLjFm
LCUuMWYsJS4xZiwlLjFmLCUuMWZdLDEsMSwxLDAsJXUsMCwwLDAsMCwwLFtcbl0pLlxuIiwKICAg
ICAgICAgICAgICAgIHNBY3RDb2xvciwgeCwgeSAtIHAsIHggKyBwLCB5IC0gcCAvIDQsIHggKyAw
LjYyNSAqIHAsIHkgKyBwLCB4IC0gMC42MjUgKiBwLCB5ICsgcCwKICAgICAgICAgICAgICAgIHgg
LSBwLCB5IC0gcCAvIDQsIHgsIHkgLSBwLCB1QWN0TnIpOwogICAgICAgIHVBY3ROcisrOwogICAg
ICAgIGJyZWFrOwoKICAgIGNhc2UgMTU6CgogICAgICAgIGZwcmludGYoZ3BvdXRmaWxlLCAiZ3Jv
dXAoW1xuIik7CiAgICAgICAgZnByaW50ZihncG91dGZpbGUsICJvdmFsKCclcycsJS4xZiwlLjFm
LCUuMWYsJS4xZiwyLDEsMSwldSwwLDAsMCxbXG5dKS5cbiIsCiAgICAgICAgICAgICAgICBzQWN0
Q29sb3IsIHggLSBwLCB5IC0gcCwgeCArIHAsIHkgKyBwLCB1QWN0TnIrKyk7CiAgICAgICAgZnBy
aW50ZihncG91dGZpbGUsCiAgICAgICAgICAgICAgICAiYXJjKCclcycsMSwxLDEsMCwlLjFmLCUu
MWYsJS4xZiwlLjFmLCUuMWYsJS4xZiwlLjFmLCUuMWYsMCwlLjFmLCUuMWYsNDQ4MCwyNTYwLCV1
LDAsMCw4LDMsMCxbXG5dKS5cbiIsCiAgICAgICAgICAgICAgICBzQWN0Q29sb3IsIHggLSBwLCB5
IC0gcCwgeCwgeSwgeCArIHAgKiAwLjM0MiwgeSAtIHAgKiAwLjk0LCB4IC0gcCAqIDAuMzQyLCB5
IC0gcCAqCiAgICAgICAgICAgICAgICAwLjk0LCAyICogcCwgMiAqIHAsIHVBY3ROcisrKTsKICAg
ICAgICB1QWN0TnIgKz0gMjsKICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgIl0sXG4ldSwwLFtc
bl0pLlxuIiwgdUFjdE5yKyspOwogICAgICAgIGJyZWFrOwoKICAgIGNhc2UgMTY6CgogICAgICAg
IGZwcmludGYoZ3BvdXRmaWxlLCAiZ3JvdXAoW1xuIik7CiAgICAgICAgZnByaW50ZihncG91dGZp
bGUsICJvdmFsKCclcycsJS4xZiwlLjFmLCUuMWYsJS4xZiwyLDEsMSwldSwwLDAsMCxbXG5dKS5c
biIsCiAgICAgICAgICAgICAgICBzQWN0Q29sb3IsIHggLSBwLCB5IC0gcCwgeCArIHAsIHkgKyBw
LCB1QWN0TnIrKyk7CiAgICAgICAgZnByaW50ZihncG91dGZpbGUsCiAgICAgICAgICAgICAgICAi
YXJjKCclcycsMSwxLDEsMCwlLjFmLCUuMWYsJS4xZiwlLjFmLCUuMWYsJS4xZiwlLjFmLCUuMWYs
MCwlLjFmLCUuMWYsMCw1NzYwLCV1LDAsMCw4LDMsMCxbXG5dKS5cbiIsCiAgICAgICAgICAgICAg
ICBzQWN0Q29sb3IsIHggLSBwLCB5IC0gcCwgeCwgeSwgeCArIHAsIHksIHgsIHkgLSBwLCAyICog
cCwgMiAqIHAsIHVBY3ROcisrKTsKICAgICAgICB1QWN0TnIgKz0gMjsKICAgICAgICBmcHJpbnRm
KGdwb3V0ZmlsZSwgIl0sXG4ldSwwLFtcbl0pLlxuIiwgdUFjdE5yKyspOwogICAgICAgIGJyZWFr
OwoKICAgIGNhc2UgMTc6CgogICAgICAgIGZwcmludGYoZ3BvdXRmaWxlLCAiZ3JvdXAoW1xuIik7
CiAgICAgICAgZnByaW50ZihncG91dGZpbGUsICJvdmFsKCclcycsJS4xZiwlLjFmLCUuMWYsJS4x
ZiwyLDEsMSwldSwwLDAsMCxbXG5dKS5cbiIsCiAgICAgICAgICAgICAgICBzQWN0Q29sb3IsIHgg
LSBwLCB5IC0gcCwgeCArIHAsIHkgKyBwLCB1QWN0TnIrKyk7CiAgICAgICAgZnByaW50ZihncG91
dGZpbGUsCiAgICAgICAgICAgICAgICAiYXJjKCclcycsMSwxLDEsMCwlLjFmLCUuMWYsJS4xZiwl
LjFmLCUuMWYsJS4xZiwlLjFmLCUuMWYsMCwlLjFmLCUuMWYsNTc2MCw1NzYwLCV1LDAsMCw4LDMs
MCxbXG5dKS5cbiIsCiAgICAgICAgICAgICAgICBzQWN0Q29sb3IsIHggLSBwLCB5IC0gcCwgeCwg
eSwgeCwgeSAtIHAsIHggLSBwLCB5LCAyICogcCwgMiAqIHAsIHVBY3ROcisrKTsKICAgICAgICB1
QWN0TnIgKz0gMjsKICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgIl0sXG4ldSwwLFtcbl0pLlxu
IiwgdUFjdE5yKyspOwogICAgICAgIGJyZWFrOwoKICAgIGNhc2UgMTg6CgogICAgICAgIGZwcmlu
dGYoZ3BvdXRmaWxlLCAiZ3JvdXAoW1xuIik7CiAgICAgICAgZnByaW50ZihncG91dGZpbGUsICJv
dmFsKCclcycsJS4xZiwlLjFmLCUuMWYsJS4xZiwyLDEsMSwldSwwLDAsMCxbXG5dKS5cbiIsCiAg
ICAgICAgICAgICAgICBzQWN0Q29sb3IsIHggLSBwLCB5IC0gcCwgeCArIHAsIHkgKyBwLCB1QWN0
TnIrKyk7CiAgICAgICAgZnByaW50ZihncG91dGZpbGUsCiAgICAgICAgICAgICAgICAiYXJjKCcl
cycsMSwxLDEsMCwlLjFmLCUuMWYsJS4xZiwlLjFmLCUuMWYsJS4xZiwlLjFmLCUuMWYsMCwlLjFm
LCUuMWYsMCwxMTUyMCwldSwwLDAsOCwzLDAsW1xuXSkuXG4iLAogICAgICAgICAgICAgICAgc0Fj
dENvbG9yLCB4IC0gcCwgeSAtIHAsIHgsIHksIHggKyBwLCB5LCB4IC0gcCwgeSwgMiAqIHAsIDIg
KiBwLCB1QWN0TnIrKyk7CiAgICAgICAgdUFjdE5yICs9IDI7CiAgICAgICAgZnByaW50ZihncG91
dGZpbGUsICJdLFxuJXUsMCxbXG5dKS5cbiIsIHVBY3ROcisrKTsKICAgICAgICBicmVhazsKCiAg
ICBjYXNlIDE5OgoKICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgImdyb3VwKFtcbiIpOwogICAg
ICAgIGZwcmludGYoZ3BvdXRmaWxlLCAib3ZhbCgnJXMnLCUuMWYsJS4xZiwlLjFmLCUuMWYsMiwx
LDEsJXUsMCwwLDAsW1xuXSkuXG4iLAogICAgICAgICAgICAgICAgc0FjdENvbG9yLCB4IC0gcCwg
eSAtIHAsIHggKyBwLCB5ICsgcCwgdUFjdE5yKyspOwogICAgICAgIGZwcmludGYoZ3BvdXRmaWxl
LAogICAgICAgICAgICAgICAgImFyYygnJXMnLDEsMSwxLDAsJS4xZiwlLjFmLCUuMWYsJS4xZiwl
LjFmLCUuMWYsJS4xZiwlLjFmLDAsJS4xZiwlLjFmLDExNTIwLDU3NjAsJXUsMCwwLDgsMywwLFtc
bl0pLlxuIiwKICAgICAgICAgICAgICAgIHNBY3RDb2xvciwgeCAtIHAsIHkgLSBwLCB4LCB5LCB4
IC0gcCwgeSwgeCwgeSArIHAsIDIgKiBwLCAyICogcCwgdUFjdE5yKyspOwogICAgICAgIHVBY3RO
ciArPSAyOwogICAgICAgIGZwcmludGYoZ3BvdXRmaWxlLCAiXSxcbiV1LDAsW1xuXSkuXG4iLCB1
QWN0TnIrKyk7CiAgICAgICAgYnJlYWs7CgogICAgY2FzZSAyMDoKCiAgICAgICAgZnByaW50Zihn
cG91dGZpbGUsICJncm91cChbXG4iKTsKICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgIm92YWwo
JyVzJywlLjFmLCUuMWYsJS4xZiwlLjFmLDIsMSwxLCV1LDAsMCwwLFtcbl0pLlxuIiwKICAgICAg
ICAgICAgICAgIHNBY3RDb2xvciwgeCAtIHAsIHkgLSBwLCB4ICsgcCwgeSArIHAsIHVBY3ROcisr
KTsKICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwKICAgICAgICAgICAgICAgICJhcmMoJyVzJywx
LDEsMSwwLCUuMWYsJS4xZiwlLjFmLCUuMWYsJS4xZiwlLjFmLCUuMWYsJS4xZiwwLCUuMWYsJS4x
ZiwwLDU3NjAsJXUsMCwwLDgsMywwLFtcbl0pLlxuIiwKICAgICAgICAgICAgICAgIHNBY3RDb2xv
ciwgeCAtIHAsIHkgLSBwLCB4LCB5LCB4ICsgcCwgeSwgeCwgeSAtIHAsIDIgKiBwLCAyICogcCwg
dUFjdE5yKyspOwogICAgICAgIGZwcmludGYoZ3BvdXRmaWxlLAogICAgICAgICAgICAgICAgImFy
YygnJXMnLDEsMSwxLDAsJS4xZiwlLjFmLCUuMWYsJS4xZiwlLjFmLCUuMWYsJS4xZiwlLjFmLDAs
JS4xZiwlLjFmLDExNTIwLDU3NjAsJXUsMCwwLDgsMywwLFtcbl0pLlxuIiwKICAgICAgICAgICAg
ICAgIHNBY3RDb2xvciwgeCAtIHAsIHkgLSBwLCB4LCB5LCB4IC0gcCwgeSwgeCwgeSArIHAsIDIg
KiBwLCAyICogcCwgdUFjdE5yKyspOwogICAgICAgIHVBY3ROciArPSAzOwogICAgICAgIGZwcmlu
dGYoZ3BvdXRmaWxlLCAiXSxcbiV1LDAsW1xuXSkuXG4iLCB1QWN0TnIrKyk7CiAgICAgICAgYnJl
YWs7CgogICAgY2FzZSAyMToKCiAgICAgICAgZnByaW50ZihncG91dGZpbGUsICJncm91cChbXG4i
KTsKICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgIm92YWwoJyVzJywlLjFmLCUuMWYsJS4xZiwl
LjFmLDIsMSwxLCV1LDAsMCwwLFtcbl0pLlxuIiwKICAgICAgICAgICAgICAgIHNBY3RDb2xvciwg
eCAtIHAsIHkgLSBwLCB4ICsgcCwgeSArIHAsIHVBY3ROcisrKTsKICAgICAgICBmcHJpbnRmKGdw
b3V0ZmlsZSwKICAgICAgICAgICAgICAgICJhcmMoJyVzJywxLDEsMSwwLCUuMWYsJS4xZiwlLjFm
LCUuMWYsJS4xZiwlLjFmLCUuMWYsJS4xZiwwLCUuMWYsJS4xZiw1NzYwLDExNTIwLCV1LDAsMCw4
LDMsMCxbXG5dKS5cbiIsCiAgICAgICAgICAgICAgICBzQWN0Q29sb3IsIHggLSBwLCB5IC0gcCwg
eCwgeSwgeCwgeSAtIHAsIHgsIHkgKyBwLCAyICogcCwgMiAqIHAsIHVBY3ROcisrKTsKICAgICAg
ICB1QWN0TnIgKz0gMjsKICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgIl0sXG4ldSwwLFtcbl0p
LlxuIiwgdUFjdE5yKyspOwogICAgICAgIGJyZWFrOwoKICAgIGNhc2UgMjI6CgogICAgICAgIGZw
cmludGYoZ3BvdXRmaWxlLCAiZ3JvdXAoW1xuIik7CiAgICAgICAgZnByaW50ZihncG91dGZpbGUs
ICJvdmFsKCclcycsJS4xZiwlLjFmLCUuMWYsJS4xZiwyLDEsMSwldSwwLDAsMCxbXG5dKS5cbiIs
CiAgICAgICAgICAgICAgICBzQWN0Q29sb3IsIHggLSBwLCB5IC0gcCwgeCArIHAsIHkgKyBwLCB1
QWN0TnIrKyk7CiAgICAgICAgZnByaW50ZihncG91dGZpbGUsCiAgICAgICAgICAgICAgICAiYXJj
KCclcycsMSwxLDEsMCwlLjFmLCUuMWYsJS4xZiwlLjFmLCUuMWYsJS4xZiwlLjFmLCUuMWYsMCwl
LjFmLCUuMWYsMCwxNzI4MCwldSwwLDAsOCwzLDAsW1xuXSkuXG4iLAogICAgICAgICAgICAgICAg
c0FjdENvbG9yLCB4IC0gcCwgeSAtIHAsIHgsIHksIHggKyBwLCB5LCB4LCB5ICsgcCwgMiAqIHAs
IDIgKiBwLCB1QWN0TnIrKyk7CiAgICAgICAgdUFjdE5yICs9IDI7CiAgICAgICAgZnByaW50Zihn
cG91dGZpbGUsICJdLFxuJXUsMCxbXG5dKS5cbiIsIHVBY3ROcisrKTsKICAgICAgICBicmVhazsK
CiAgICBjYXNlIDIzOgoKICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgImdyb3VwKFtcbiIpOwog
ICAgICAgIGZwcmludGYoZ3BvdXRmaWxlLCAib3ZhbCgnJXMnLCUuMWYsJS4xZiwlLjFmLCUuMWYs
MiwxLDEsJXUsMCwwLDAsW1xuXSkuXG4iLAogICAgICAgICAgICAgICAgc0FjdENvbG9yLCB4IC0g
cCwgeSAtIHAsIHggKyBwLCB5ICsgcCwgdUFjdE5yKyspOwogICAgICAgIGZwcmludGYoZ3BvdXRm
aWxlLAogICAgICAgICAgICAgICAgImFyYygnJXMnLDEsMSwxLDAsJS4xZiwlLjFmLCUuMWYsJS4x
ZiwlLjFmLCUuMWYsJS4xZiwlLjFmLDAsJS4xZiwlLjFmLDE3MjgwLDU3NjAsJXUsMCwwLDgsMyww
LFtcbl0pLlxuIiwKICAgICAgICAgICAgICAgIHNBY3RDb2xvciwgeCAtIHAsIHkgLSBwLCB4LCB5
LCB4LCB5ICsgcCwgeCArIHAsIHksIDIgKiBwLCAyICogcCwgdUFjdE5yKyspOwogICAgICAgIHVB
Y3ROciArPSAyOwogICAgICAgIGZwcmludGYoZ3BvdXRmaWxlLCAiXSxcbiV1LDAsW1xuXSkuXG4i
LCB1QWN0TnIrKyk7CiAgICAgICAgYnJlYWs7CgogICAgY2FzZSAyNDoKCiAgICAgICAgZnByaW50
ZihncG91dGZpbGUsICJncm91cChbXG4iKTsKICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgIm92
YWwoJyVzJywlLjFmLCUuMWYsJS4xZiwlLjFmLDIsMSwxLCV1LDAsMCwwLFtcbl0pLlxuIiwKICAg
ICAgICAgICAgICAgIHNBY3RDb2xvciwgeCAtIHAsIHkgLSBwLCB4ICsgcCwgeSArIHAsIHVBY3RO
cisrKTsKICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwKICAgICAgICAgICAgICAgICJhcmMoJyVz
JywxLDEsMSwwLCUuMWYsJS4xZiwlLjFmLCUuMWYsJS4xZiwlLjFmLCUuMWYsJS4xZiwwLCUuMWYs
JS4xZiwxNzI4MCwxMTUyMCwldSwwLDAsOCwzLDAsW1xuXSkuXG4iLAogICAgICAgICAgICAgICAg
c0FjdENvbG9yLCB4IC0gcCwgeSAtIHAsIHgsIHksIHgsIHkgKyBwLCB4LCB5IC0gcCwgMiAqIHAs
IDIgKiBwLCB1QWN0TnIrKyk7CiAgICAgICAgdUFjdE5yICs9IDI7CiAgICAgICAgZnByaW50Zihn
cG91dGZpbGUsICJdLFxuJXUsMCxbXG5dKS5cbiIsIHVBY3ROcisrKTsKICAgICAgICBicmVhazsK
CiAgICBjYXNlIDI1OgoKICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgImdyb3VwKFtcbiIpOwog
ICAgICAgIGZwcmludGYoZ3BvdXRmaWxlLCAib3ZhbCgnJXMnLCUuMWYsJS4xZiwlLjFmLCUuMWYs
MiwxLDEsJXUsMCwwLDAsW1xuXSkuXG4iLAogICAgICAgICAgICAgICAgc0FjdENvbG9yLCB4IC0g
cCwgeSAtIHAsIHggKyBwLCB5ICsgcCwgdUFjdE5yKyspOwogICAgICAgIGZwcmludGYoZ3BvdXRm
aWxlLAogICAgICAgICAgICAgICAgImFyYygnJXMnLDEsMSwxLDAsJS4xZiwlLjFmLCUuMWYsJS4x
ZiwlLjFmLCUuMWYsJS4xZiwlLjFmLDAsJS4xZiwlLjFmLDU3NjAsNTc2MCwldSwwLDAsOCwzLDAs
W1xuXSkuXG4iLAogICAgICAgICAgICAgICAgc0FjdENvbG9yLCB4IC0gcCwgeSAtIHAsIHgsIHks
IHgsIHkgLSBwLCB4IC0gcCwgeSwgMiAqIHAsIDIgKiBwLCB1QWN0TnIrKyk7CiAgICAgICAgZnBy
aW50ZihncG91dGZpbGUsCiAgICAgICAgICAgICAgICAiYXJjKCclcycsMSwxLDEsMCwlLjFmLCUu
MWYsJS4xZiwlLjFmLCUuMWYsJS4xZiwlLjFmLCUuMWYsMCwlLjFmLCUuMWYsMTcyODAsNTc2MCwl
dSwwLDAsOCwzLDAsW1xuXSkuXG4iLAogICAgICAgICAgICAgICAgc0FjdENvbG9yLCB4IC0gcCwg
eSAtIHAsIHgsIHksIHgsIHkgKyBwLCB4ICsgcCwgeSwgMiAqIHAsIDIgKiBwLCB1QWN0TnIrKyk7
CiAgICAgICAgdUFjdE5yICs9IDM7CiAgICAgICAgZnByaW50ZihncG91dGZpbGUsICJdLFxuJXUs
MCxbXG5dKS5cbiIsIHVBY3ROcisrKTsKICAgICAgICBicmVhazsKCiAgICBjYXNlIDI2OgoKICAg
ICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgImdyb3VwKFtcbiIpOwogICAgICAgIGZwcmludGYoZ3Bv
dXRmaWxlLCAib3ZhbCgnJXMnLCUuMWYsJS4xZiwlLjFmLCUuMWYsMiwxLDEsJXUsMCwwLDAsW1xu
XSkuXG4iLAogICAgICAgICAgICAgICAgc0FjdENvbG9yLCB4IC0gcCwgeSAtIHAsIHggKyBwLCB5
ICsgcCwgdUFjdE5yKyspOwogICAgICAgIGZwcmludGYoZ3BvdXRmaWxlLAogICAgICAgICAgICAg
ICAgImFyYygnJXMnLDEsMSwxLDAsJS4xZiwlLjFmLCUuMWYsJS4xZiwlLjFmLCUuMWYsJS4xZiwl
LjFmLDAsJS4xZiwlLjFmLDE3MjgwLDE3MjgwLCV1LDAsMCw4LDMsMCxbXG5dKS5cbiIsCiAgICAg
ICAgICAgICAgICBzQWN0Q29sb3IsIHggLSBwLCB5IC0gcCwgeCwgeSwgeCwgeSArIHAsIHggLSBw
LCB5LCAyICogcCwgMiAqIHAsIHVBY3ROcisrKTsKICAgICAgICB1QWN0TnIgKz0gMjsKICAgICAg
ICBmcHJpbnRmKGdwb3V0ZmlsZSwgIl0sXG4ldSwwLFtcbl0pLlxuIiwgdUFjdE5yKyspOwogICAg
ICAgIGJyZWFrOwoKICAgIGNhc2UgMjc6CgogICAgICAgIGZwcmludGYoZ3BvdXRmaWxlLCAiZ3Jv
dXAoW1xuIik7CiAgICAgICAgZnByaW50ZihncG91dGZpbGUsICJvdmFsKCclcycsJS4xZiwlLjFm
LCUuMWYsJS4xZiwyLDEsMSwldSwwLDAsMCxbXG5dKS5cbiIsCiAgICAgICAgICAgICAgICBzQWN0
Q29sb3IsIHggLSBwLCB5IC0gcCwgeCArIHAsIHkgKyBwLCB1QWN0TnIrKyk7CiAgICAgICAgZnBy
aW50ZihncG91dGZpbGUsCiAgICAgICAgICAgICAgICAiYXJjKCclcycsMSwxLDEsMCwlLjFmLCUu
MWYsJS4xZiwlLjFmLCUuMWYsJS4xZiwlLjFmLCUuMWYsMCwlLjFmLCUuMWYsMTE1MjAsMTE1MjAs
JXUsMCwwLDgsMywwLFtcbl0pLlxuIiwKICAgICAgICAgICAgICAgIHNBY3RDb2xvciwgeCAtIHAs
IHkgLSBwLCB4LCB5LCB4IC0gcCwgeSwgeCArIHAsIHksIDIgKiBwLCAyICogcCwgdUFjdE5yKysp
OwogICAgICAgIHVBY3ROciArPSAyOwogICAgICAgIGZwcmludGYoZ3BvdXRmaWxlLCAiXSxcbiV1
LDAsW1xuXSkuXG4iLCB1QWN0TnIrKyk7CiAgICAgICAgYnJlYWs7CgogICAgY2FzZSAyODoKCiAg
ICAgICAgZnByaW50ZihncG91dGZpbGUsICJncm91cChbXG4iKTsKICAgICAgICBmcHJpbnRmKGdw
b3V0ZmlsZSwgIm92YWwoJyVzJywlLjFmLCUuMWYsJS4xZiwlLjFmLDIsMSwxLCV1LDAsMCwwLFtc
bl0pLlxuIiwKICAgICAgICAgICAgICAgIHNBY3RDb2xvciwgeCAtIHAsIHkgLSBwLCB4ICsgcCwg
eSArIHAsIHVBY3ROcisrKTsKICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwKICAgICAgICAgICAg
ICAgICJhcmMoJyVzJywxLDEsMSwwLCUuMWYsJS4xZiwlLjFmLCUuMWYsJS4xZiwlLjFmLCUuMWYs
JS4xZiwwLCUuMWYsJS4xZiwxMTUyMCwxNzI4MCwldSwwLDAsOCwzLDAsW1xuXSkuXG4iLAogICAg
ICAgICAgICAgICAgc0FjdENvbG9yLCB4IC0gcCwgeSAtIHAsIHgsIHksIHggLSBwLCB5LCB4LCB5
IC0gcCwgMiAqIHAsIDIgKiBwLCB1QWN0TnIrKyk7CiAgICAgICAgdUFjdE5yICs9IDI7CiAgICAg
ICAgZnByaW50ZihncG91dGZpbGUsICJdLFxuJXUsMCxbXG5dKS5cbiIsIHVBY3ROcisrKTsKICAg
ICAgICBicmVhazsKCiAgICBjYXNlIDI5OgoKICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgImdy
b3VwKFtcbiIpOwogICAgICAgIGZwcmludGYoZ3BvdXRmaWxlLCAib3ZhbCgnJXMnLCUuMWYsJS4x
ZiwlLjFmLCUuMWYsMiwxLDEsJXUsMCwwLDAsW1xuXSkuXG4iLAogICAgICAgICAgICAgICAgc0Fj
dENvbG9yLCB4IC0gcCwgeSAtIHAsIHggKyBwLCB5ICsgcCwgdUFjdE5yKyspOwogICAgICAgIGZw
cmludGYoZ3BvdXRmaWxlLAogICAgICAgICAgICAgICAgImFyYygnJXMnLDEsMSwxLDAsJS4xZiwl
LjFmLCUuMWYsJS4xZiwlLjFmLCUuMWYsJS4xZiwlLjFmLDAsJS4xZiwlLjFmLDU3NjAsMTcyODAs
JXUsMCwwLDgsMywwLFtcbl0pLlxuIiwKICAgICAgICAgICAgICAgIHNBY3RDb2xvciwgeCAtIHAs
IHkgLSBwLCB4LCB5LCB4LCB5IC0gcCwgeCArIHAsIHksIDIgKiBwLCAyICogcCwgdUFjdE5yKysp
OwogICAgICAgIHVBY3ROciArPSAyOwogICAgICAgIGZwcmludGYoZ3BvdXRmaWxlLCAiXSxcbiV1
LDAsW1xuXSkuXG4iLCB1QWN0TnIrKyk7CiAgICAgICAgYnJlYWs7CgogICAgY2FzZSAzMDoKCiAg
ICAgICAgZnByaW50ZihncG91dGZpbGUsICJvdmFsKCclcycsJS4xZiwlLjFmLCUuMWYsJS4xZiwx
LDEsMSwldSwwLDAsMCxbXG5dKS5cbiIsCiAgICAgICAgICAgICAgICBzQWN0Q29sb3IsIHggLSBw
LCB5IC0gcCwgeCArIHAsIHkgKyBwLCB1QWN0TnIpOwogICAgICAgIHVBY3ROcisrOwogICAgICAg
IGJyZWFrOwoKICAgIGNhc2UgMzE6CgogICAgICAgIGZwcmludGYoZ3BvdXRmaWxlLCAiZ3JvdXAo
W1xuIik7CiAgICAgICAgZnByaW50ZihncG91dGZpbGUsICJib3goJyVzJywlLjFmLCUuMWYsJS4x
ZiwlLjFmLDIsMSwxLCV1LDAsMCwwLFtcbl0pLlxuIiwKICAgICAgICAgICAgICAgIHNBY3RDb2xv
ciwgeCAtIHAsIHkgLSBwLCB4ICsgcCwgeSArIHAsIHVBY3ROcisrKTsKICAgICAgICBmcHJpbnRm
KGdwb3V0ZmlsZSwgImJveCgnJXMnLCUuMWYsJS4xZiwlLjFmLCUuMWYsMSwxLDEsJXUsMCwwLDAs
W1xuXSkuXG4iLAogICAgICAgICAgICAgICAgc0FjdENvbG9yLCB4IC0gcCAvIDQsIHkgLSBwLCB4
ICsgcCAvIDQsIHksIHVBY3ROcisrKTsKICAgICAgICB1QWN0TnIgKz0gMjsKICAgICAgICBmcHJp
bnRmKGdwb3V0ZmlsZSwgIl0sXG4ldSwwLFtcbl0pLlxuIiwgdUFjdE5yKyspOwogICAgICAgIGJy
ZWFrOwoKICAgIGNhc2UgMzI6CgogICAgICAgIGZwcmludGYoZ3BvdXRmaWxlLCAiZ3JvdXAoW1xu
Iik7CiAgICAgICAgZnByaW50ZihncG91dGZpbGUsICJib3goJyVzJywlLjFmLCUuMWYsJS4xZiwl
LjFmLDIsMSwxLCV1LDAsMCwwLFtcbl0pLlxuIiwKICAgICAgICAgICAgICAgIHNBY3RDb2xvciwg
eCAtIHAsIHkgLSBwLCB4ICsgcCwgeSArIHAsIHVBY3ROcisrKTsKICAgICAgICBmcHJpbnRmKGdw
b3V0ZmlsZSwgImJveCgnJXMnLCUuMWYsJS4xZiwlLjFmLCUuMWYsMSwxLDEsJXUsMCwwLDAsW1xu
XSkuXG4iLAogICAgICAgICAgICAgICAgc0FjdENvbG9yLCB4LCB5IC0gcCwgeCArIHAsIHksIHVB
Y3ROcisrKTsKICAgICAgICB1QWN0TnIgKz0gMjsKICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwg
Il0sXG4ldSwwLFtcbl0pLlxuIiwgdUFjdE5yKyspOwogICAgICAgIGJyZWFrOwoKICAgIGNhc2Ug
MzM6CgogICAgICAgIGZwcmludGYoZ3BvdXRmaWxlLCAiZ3JvdXAoW1xuIik7CiAgICAgICAgZnBy
aW50ZihncG91dGZpbGUsICJib3goJyVzJywlLjFmLCUuMWYsJS4xZiwlLjFmLDIsMSwxLCV1LDAs
MCwwLFtcbl0pLlxuIiwKICAgICAgICAgICAgICAgIHNBY3RDb2xvciwgeCAtIHAsIHkgLSBwLCB4
ICsgcCwgeSArIHAsIHVBY3ROcisrKTsKICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgImJveCgn
JXMnLCUuMWYsJS4xZiwlLjFmLCUuMWYsMSwxLDEsJXUsMCwwLDAsW1xuXSkuXG4iLAogICAgICAg
ICAgICAgICAgc0FjdENvbG9yLCB4IC0gcCwgeSAtIHAsIHgsIHksIHVBY3ROcisrKTsKICAgICAg
ICB1QWN0TnIgKz0gMjsKICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgIl0sXG4ldSwwLFtcbl0p
LlxuIiwgdUFjdE5yKyspOwogICAgICAgIGJyZWFrOwoKICAgIGNhc2UgMzQ6CgogICAgICAgIGZw
cmludGYoZ3BvdXRmaWxlLCAiZ3JvdXAoW1xuIik7CiAgICAgICAgZnByaW50ZihncG91dGZpbGUs
ICJib3goJyVzJywlLjFmLCUuMWYsJS4xZiwlLjFmLDIsMSwxLCV1LDAsMCwwLFtcbl0pLlxuIiwK
ICAgICAgICAgICAgICAgIHNBY3RDb2xvciwgeCAtIHAsIHkgLSBwLCB4ICsgcCwgeSArIHAsIHVB
Y3ROcisrKTsKICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgImJveCgnJXMnLCUuMWYsJS4xZiwl
LjFmLCUuMWYsMSwxLDEsJXUsMCwwLDAsW1xuXSkuXG4iLAogICAgICAgICAgICAgICAgc0FjdENv
bG9yLCB4IC0gcCwgeSAtIHAsIHggKyBwLCB5LCB1QWN0TnIrKyk7CiAgICAgICAgdUFjdE5yICs9
IDI7CiAgICAgICAgZnByaW50ZihncG91dGZpbGUsICJdLFxuJXUsMCxbXG5dKS5cbiIsIHVBY3RO
cisrKTsKICAgICAgICBicmVhazsKCiAgICBjYXNlIDM1OgoKICAgICAgICBmcHJpbnRmKGdwb3V0
ZmlsZSwgImdyb3VwKFtcbiIpOwogICAgICAgIGZwcmludGYoZ3BvdXRmaWxlLCAiYm94KCclcycs
JS4xZiwlLjFmLCUuMWYsJS4xZiwyLDEsMSwldSwwLDAsMCxbXG5dKS5cbiIsCiAgICAgICAgICAg
ICAgICBzQWN0Q29sb3IsIHggLSBwLCB5IC0gcCwgeCArIHAsIHkgKyBwLCB1QWN0TnIrKyk7CiAg
ICAgICAgZnByaW50ZihncG91dGZpbGUsICJib3goJyVzJywlLjFmLCUuMWYsJS4xZiwlLjFmLDEs
MSwxLCV1LDAsMCwwLFtcbl0pLlxuIiwKICAgICAgICAgICAgICAgIHNBY3RDb2xvciwgeCAtIHAs
IHksIHgsIHkgKyBwLCB1QWN0TnIrKyk7CiAgICAgICAgdUFjdE5yICs9IDI7CiAgICAgICAgZnBy
aW50ZihncG91dGZpbGUsICJdLFxuJXUsMCxbXG5dKS5cbiIsIHVBY3ROcisrKTsKICAgICAgICBi
cmVhazsKCiAgICBjYXNlIDM2OgoKICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgImdyb3VwKFtc
biIpOwogICAgICAgIGZwcmludGYoZ3BvdXRmaWxlLCAiYm94KCclcycsJS4xZiwlLjFmLCUuMWYs
JS4xZiwyLDEsMSwldSwwLDAsMCxbXG5dKS5cbiIsCiAgICAgICAgICAgICAgICBzQWN0Q29sb3Is
IHggLSBwLCB5IC0gcCwgeCArIHAsIHkgKyBwLCB1QWN0TnIrKyk7CiAgICAgICAgZnByaW50Zihn
cG91dGZpbGUsICJib3goJyVzJywlLjFmLCUuMWYsJS4xZiwlLjFmLDEsMSwxLCV1LDAsMCwwLFtc
bl0pLlxuIiwKICAgICAgICAgICAgICAgIHNBY3RDb2xvciwgeCwgeSAtIHAsIHggKyBwLCB5LCB1
QWN0TnIrKyk7CiAgICAgICAgZnByaW50ZihncG91dGZpbGUsICJib3goJyVzJywlLjFmLCUuMWYs
JS4xZiwlLjFmLDEsMSwxLCV1LDAsMCwwLFtcbl0pLlxuIiwKICAgICAgICAgICAgICAgIHNBY3RD
b2xvciwgeCAtIHAsIHksIHgsIHkgKyBwLCB1QWN0TnIrKyk7CiAgICAgICAgdUFjdE5yICs9IDM7
CiAgICAgICAgZnByaW50ZihncG91dGZpbGUsICJdLFxuJXUsMCxbXG5dKS5cbiIsIHVBY3ROcisr
KTsKICAgICAgICBicmVhazsKCiAgICBjYXNlIDM3OgoKICAgICAgICBmcHJpbnRmKGdwb3V0Zmls
ZSwgImdyb3VwKFtcbiIpOwogICAgICAgIGZwcmludGYoZ3BvdXRmaWxlLCAiYm94KCclcycsJS4x
ZiwlLjFmLCUuMWYsJS4xZiwyLDEsMSwldSwwLDAsMCxbXG5dKS5cbiIsCiAgICAgICAgICAgICAg
ICBzQWN0Q29sb3IsIHggLSBwLCB5IC0gcCwgeCArIHAsIHkgKyBwLCB1QWN0TnIrKyk7CiAgICAg
ICAgZnByaW50ZihncG91dGZpbGUsICJib3goJyVzJywlLjFmLCUuMWYsJS4xZiwlLjFmLDEsMSwx
LCV1LDAsMCwwLFtcbl0pLlxuIiwKICAgICAgICAgICAgICAgIHNBY3RDb2xvciwgeCAtIHAsIHkg
LSBwLCB4LCB5ICsgcCwgdUFjdE5yKyspOwogICAgICAgIHVBY3ROciArPSAyOwogICAgICAgIGZw
cmludGYoZ3BvdXRmaWxlLCAiXSxcbiV1LDAsW1xuXSkuXG4iLCB1QWN0TnIrKyk7CiAgICAgICAg
YnJlYWs7CgogICAgY2FzZSAzODoKCiAgICAgICAgZnByaW50ZihncG91dGZpbGUsICJncm91cChb
XG4iKTsKICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgImJveCgnJXMnLCUuMWYsJS4xZiwlLjFm
LCUuMWYsMiwxLDEsJXUsMCwwLDAsW1xuXSkuXG4iLAogICAgICAgICAgICAgICAgc0FjdENvbG9y
LCB4IC0gcCwgeSAtIHAsIHggKyBwLCB5ICsgcCwgdUFjdE5yKyspOwogICAgICAgIGZwcmludGYo
Z3BvdXRmaWxlLCAiYm94KCclcycsJS4xZiwlLjFmLCUuMWYsJS4xZiwxLDEsMSwldSwwLDAsMCxb
XG5dKS5cbiIsCiAgICAgICAgICAgICAgICBzQWN0Q29sb3IsIHggLSBwLCB5IC0gcCwgeCArIHAs
IHksIHVBY3ROcisrKTsKICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgImJveCgnJXMnLCUuMWYs
JS4xZiwlLjFmLCUuMWYsMSwxLDEsJXUsMCwwLDAsW1xuXSkuXG4iLAogICAgICAgICAgICAgICAg
c0FjdENvbG9yLCB4IC0gcCwgeSwgeCwgeSArIHAsIHVBY3ROcisrKTsKICAgICAgICB1QWN0TnIg
Kz0gMzsKICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgIl0sXG4ldSwwLFtcbl0pLlxuIiwgdUFj
dE5yKyspOwogICAgICAgIGJyZWFrOwoKICAgIGNhc2UgMzk6CgogICAgICAgIGZwcmludGYoZ3Bv
dXRmaWxlLCAiZ3JvdXAoW1xuIik7CiAgICAgICAgZnByaW50ZihncG91dGZpbGUsICJib3goJyVz
JywlLjFmLCUuMWYsJS4xZiwlLjFmLDIsMSwxLCV1LDAsMCwwLFtcbl0pLlxuIiwKICAgICAgICAg
ICAgICAgIHNBY3RDb2xvciwgeCAtIHAsIHkgLSBwLCB4ICsgcCwgeSArIHAsIHVBY3ROcisrKTsK
ICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgImJveCgnJXMnLCUuMWYsJS4xZiwlLjFmLCUuMWYs
MSwxLDEsJXUsMCwwLDAsW1xuXSkuXG4iLAogICAgICAgICAgICAgICAgc0FjdENvbG9yLCB4LCB5
LCB4ICsgcCwgeSArIHAsIHVBY3ROcisrKTsKICAgICAgICB1QWN0TnIgKz0gMjsKICAgICAgICBm
cHJpbnRmKGdwb3V0ZmlsZSwgIl0sXG4ldSwwLFtcbl0pLlxuIiwgdUFjdE5yKyspOwogICAgICAg
IGJyZWFrOwoKICAgIGNhc2UgNDA6CgogICAgICAgIGZwcmludGYoZ3BvdXRmaWxlLCAiZ3JvdXAo
W1xuIik7CiAgICAgICAgZnByaW50ZihncG91dGZpbGUsICJib3goJyVzJywlLjFmLCUuMWYsJS4x
ZiwlLjFmLDIsMSwxLCV1LDAsMCwwLFtcbl0pLlxuIiwKICAgICAgICAgICAgICAgIHNBY3RDb2xv
ciwgeCAtIHAsIHkgLSBwLCB4ICsgcCwgeSArIHAsIHVBY3ROcisrKTsKICAgICAgICBmcHJpbnRm
KGdwb3V0ZmlsZSwgImJveCgnJXMnLCUuMWYsJS4xZiwlLjFmLCUuMWYsMSwxLDEsJXUsMCwwLDAs
W1xuXSkuXG4iLAogICAgICAgICAgICAgICAgc0FjdENvbG9yLCB4LCB5IC0gcCwgeCArIHAsIHkg
KyBwLCB1QWN0TnIrKyk7CiAgICAgICAgdUFjdE5yICs9IDI7CiAgICAgICAgZnByaW50ZihncG91
dGZpbGUsICJdLFxuJXUsMCxbXG5dKS5cbiIsIHVBY3ROcisrKTsKICAgICAgICBicmVhazsKCiAg
ICBjYXNlIDQxOgoKICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgImdyb3VwKFtcbiIpOwogICAg
ICAgIGZwcmludGYoZ3BvdXRmaWxlLCAiYm94KCclcycsJS4xZiwlLjFmLCUuMWYsJS4xZiwyLDEs
MSwldSwwLDAsMCxbXG5dKS5cbiIsCiAgICAgICAgICAgICAgICBzQWN0Q29sb3IsIHggLSBwLCB5
IC0gcCwgeCArIHAsIHkgKyBwLCB1QWN0TnIrKyk7CiAgICAgICAgZnByaW50ZihncG91dGZpbGUs
ICJib3goJyVzJywlLjFmLCUuMWYsJS4xZiwlLjFmLDEsMSwxLCV1LDAsMCwwLFtcbl0pLlxuIiwK
ICAgICAgICAgICAgICAgIHNBY3RDb2xvciwgeCAtIHAsIHkgLSBwLCB4LCB5LCB1QWN0TnIrKyk7
CiAgICAgICAgZnByaW50ZihncG91dGZpbGUsICJib3goJyVzJywlLjFmLCUuMWYsJS4xZiwlLjFm
LDEsMSwxLCV1LDAsMCwwLFtcbl0pLlxuIiwKICAgICAgICAgICAgICAgIHNBY3RDb2xvciwgeCwg
eSwgeCArIHAsIHkgKyBwLCB1QWN0TnIrKyk7CiAgICAgICAgdUFjdE5yICs9IDM7CiAgICAgICAg
ZnByaW50ZihncG91dGZpbGUsICJdLFxuJXUsMCxbXG5dKS5cbiIsIHVBY3ROcisrKTsKICAgICAg
ICBicmVhazsKCiAgICBjYXNlIDQyOgoKICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgImdyb3Vw
KFtcbiIpOwogICAgICAgIGZwcmludGYoZ3BvdXRmaWxlLCAiYm94KCclcycsJS4xZiwlLjFmLCUu
MWYsJS4xZiwyLDEsMSwldSwwLDAsMCxbXG5dKS5cbiIsCiAgICAgICAgICAgICAgICBzQWN0Q29s
b3IsIHggLSBwLCB5IC0gcCwgeCArIHAsIHkgKyBwLCB1QWN0TnIrKyk7CiAgICAgICAgZnByaW50
ZihncG91dGZpbGUsICJib3goJyVzJywlLjFmLCUuMWYsJS4xZiwlLjFmLDEsMSwxLCV1LDAsMCww
LFtcbl0pLlxuIiwKICAgICAgICAgICAgICAgIHNBY3RDb2xvciwgeCAtIHAsIHkgLSBwLCB4ICsg
cCwgeSwgdUFjdE5yKyspOwogICAgICAgIGZwcmludGYoZ3BvdXRmaWxlLCAiYm94KCclcycsJS4x
ZiwlLjFmLCUuMWYsJS4xZiwxLDEsMSwldSwwLDAsMCxbXG5dKS5cbiIsCiAgICAgICAgICAgICAg
ICBzQWN0Q29sb3IsIHgsIHksIHggKyBwLCB5ICsgcCwgdUFjdE5yKyspOwogICAgICAgIHVBY3RO
ciArPSAzOwogICAgICAgIGZwcmludGYoZ3BvdXRmaWxlLCAiXSxcbiV1LDAsW1xuXSkuXG4iLCB1
QWN0TnIrKyk7CiAgICAgICAgYnJlYWs7CgogICAgY2FzZSA0MzoKCiAgICAgICAgZnByaW50Zihn
cG91dGZpbGUsICJncm91cChbXG4iKTsKICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgImJveCgn
JXMnLCUuMWYsJS4xZiwlLjFmLCUuMWYsMiwxLDEsJXUsMCwwLDAsW1xuXSkuXG4iLAogICAgICAg
ICAgICAgICAgc0FjdENvbG9yLCB4IC0gcCwgeSAtIHAsIHggKyBwLCB5ICsgcCwgdUFjdE5yKysp
OwogICAgICAgIGZwcmludGYoZ3BvdXRmaWxlLCAiYm94KCclcycsJS4xZiwlLjFmLCUuMWYsJS4x
ZiwxLDEsMSwldSwwLDAsMCxbXG5dKS5cbiIsCiAgICAgICAgICAgICAgICBzQWN0Q29sb3IsIHgg
LSBwLCB5LCB4ICsgcCwgeSArIHAsIHVBY3ROcisrKTsKICAgICAgICB1QWN0TnIgKz0gMjsKICAg
ICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgIl0sXG4ldSwwLFtcbl0pLlxuIiwgdUFjdE5yKyspOwog
ICAgICAgIGJyZWFrOwoKICAgIGNhc2UgNDQ6CgogICAgICAgIGZwcmludGYoZ3BvdXRmaWxlLCAi
Z3JvdXAoW1xuIik7CiAgICAgICAgZnByaW50ZihncG91dGZpbGUsICJib3goJyVzJywlLjFmLCUu
MWYsJS4xZiwlLjFmLDIsMSwxLCV1LDAsMCwwLFtcbl0pLlxuIiwKICAgICAgICAgICAgICAgIHNB
Y3RDb2xvciwgeCAtIHAsIHkgLSBwLCB4ICsgcCwgeSArIHAsIHVBY3ROcisrKTsKICAgICAgICBm
cHJpbnRmKGdwb3V0ZmlsZSwgImJveCgnJXMnLCUuMWYsJS4xZiwlLjFmLCUuMWYsMSwxLDEsJXUs
MCwwLDAsW1xuXSkuXG4iLAogICAgICAgICAgICAgICAgc0FjdENvbG9yLCB4LCB5IC0gcCwgeCAr
IHAsIHksIHVBY3ROcisrKTsKICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgImJveCgnJXMnLCUu
MWYsJS4xZiwlLjFmLCUuMWYsMSwxLDEsJXUsMCwwLDAsW1xuXSkuXG4iLAogICAgICAgICAgICAg
ICAgc0FjdENvbG9yLCB4IC0gcCwgeSwgeCArIHAsIHkgKyBwLCB1QWN0TnIrKyk7CiAgICAgICAg
dUFjdE5yICs9IDM7CiAgICAgICAgZnByaW50ZihncG91dGZpbGUsICJdLFxuJXUsMCxbXG5dKS5c
biIsIHVBY3ROcisrKTsKICAgICAgICBicmVhazsKCiAgICBjYXNlIDQ1OgoKICAgICAgICBmcHJp
bnRmKGdwb3V0ZmlsZSwgImdyb3VwKFtcbiIpOwogICAgICAgIGZwcmludGYoZ3BvdXRmaWxlLCAi
Ym94KCclcycsJS4xZiwlLjFmLCUuMWYsJS4xZiwyLDEsMSwldSwwLDAsMCxbXG5dKS5cbiIsCiAg
ICAgICAgICAgICAgICBzQWN0Q29sb3IsIHggLSBwLCB5IC0gcCwgeCArIHAsIHkgKyBwLCB1QWN0
TnIrKyk7CiAgICAgICAgZnByaW50ZihncG91dGZpbGUsICJib3goJyVzJywlLjFmLCUuMWYsJS4x
ZiwlLjFmLDEsMSwxLCV1LDAsMCwwLFtcbl0pLlxuIiwKICAgICAgICAgICAgICAgIHNBY3RDb2xv
ciwgeCAtIHAsIHkgLSBwLCB4LCB5LCB1QWN0TnIrKyk7CiAgICAgICAgZnByaW50ZihncG91dGZp
bGUsICJib3goJyVzJywlLjFmLCUuMWYsJS4xZiwlLjFmLDEsMSwxLCV1LDAsMCwwLFtcbl0pLlxu
IiwKICAgICAgICAgICAgICAgIHNBY3RDb2xvciwgeCAtIHAsIHksIHggKyBwLCB5ICsgcCwgdUFj
dE5yKyspOwogICAgICAgIHVBY3ROciArPSAzOwogICAgICAgIGZwcmludGYoZ3BvdXRmaWxlLCAi
XSxcbiV1LDAsW1xuXSkuXG4iLCB1QWN0TnIrKyk7CiAgICAgICAgYnJlYWs7CgogICAgY2FzZSA0
NjoKCiAgICAgICAgZnByaW50ZihncG91dGZpbGUsICJib3goJyVzJywlLjFmLCUuMWYsJS4xZiwl
LjFmLDEsMSwxLCV1LDAsMCwwLFtcbl0pLlxuIiwKICAgICAgICAgICAgICAgIHNBY3RDb2xvciwg
eCAtIHAsIHkgLSBwLCB4ICsgcCwgeSArIHAsIHVBY3ROcik7CiAgICAgICAgdUFjdE5yKys7CiAg
ICAgICAgYnJlYWs7CgogICAgY2FzZSA0NzoKCiAgICAgICAgZnByaW50ZihncG91dGZpbGUsICJn
cm91cChbXG4iKTsKICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwKICAgICAgICAgICAgICAgICJw
b2x5Z29uKCclcycsNSxbXG4lLjFmLCUuMWYsJS4xZiwlLjFmLCUuMWYsJS4xZiwlLjFmLCUuMWYs
JS4xZiwlLjFmXSwwLDEsMSwwLCV1LDAsMCwwLDAsMCxbXG5dKS5cbiIsCiAgICAgICAgICAgICAg
ICBzQWN0Q29sb3IsIHgsIHkgKyBwLCB4ICsgcCwgeSwgeCwgeSAtIHAsIHggLSBwLCB5LCB4LCB5
ICsgcCwgdUFjdE5yKTsKICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwKICAgICAgICAgICAgICAg
ICJwb2x5Z29uKCclcycsNSxbXG4lLjFmLCUuMWYsJS4xZiwlLjFmLCUuMWYsJS4xZiwlLjFmLCUu
MWYsJS4xZiwlLjFmXSwxLDEsMSwwLCV1LDAsMCwwLDAsMCxbXG5dKS5cbiIsCiAgICAgICAgICAg
ICAgICBzQWN0Q29sb3IsIHggLSAwLjYyNSAqIHAsIHkgLSAwLjM3NSAqIHAsIHggLSAwLjM3NSAq
IHAsIHkgLSAwLjYyNSAqIHAsIHggKyBwIC8gOCwKICAgICAgICAgICAgICAgIHkgLSBwIC8gOCwg
eCAtIHAgLyA4LCB5ICsgcCAvIDgsIHggLSAwLjYyNSAqIHAsIHkgLSAwLjM3NSAqIHAsIHVBY3RO
cik7CiAgICAgICAgZnByaW50ZihncG91dGZpbGUsICJdLFxuJXUsMCxbXG5dKS5cbiIsIHVBY3RO
cisrKTsKICAgICAgICB1QWN0TnIgKz0gMjsKICAgICAgICBicmVhazsKCiAgICBjYXNlIDQ4OgoK
ICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgImdyb3VwKFtcbiIpOwogICAgICAgIGZwcmludGYo
Z3BvdXRmaWxlLAogICAgICAgICAgICAgICAgInBvbHlnb24oJyVzJyw1LFtcbiUuMWYsJS4xZiwl
LjFmLCUuMWYsJS4xZiwlLjFmLCUuMWYsJS4xZiwlLjFmLCUuMWZdLDAsMSwxLDAsJXUsMCwwLDAs
MCwwLFtcbl0pLlxuIiwKICAgICAgICAgICAgICAgIHNBY3RDb2xvciwgeCwgeSArIHAsIHggKyBw
LCB5LCB4LCB5IC0gcCwgeCAtIHAsIHksIHgsIHkgKyBwLCB1QWN0TnIpOwogICAgICAgIGZwcmlu
dGYoZ3BvdXRmaWxlLAogICAgICAgICAgICAgICAgInBvbHlnb24oJyVzJyw1LFtcbiUuMWYsJS4x
ZiwlLjFmLCUuMWYsJS4xZiwlLjFmLCUuMWYsJS4xZiwlLjFmLCUuMWZdLDEsMSwxLDAsJXUsMCww
LDAsMCwwLFtcbl0pLlxuIiwKICAgICAgICAgICAgICAgIHNBY3RDb2xvciwgeCAtIHAgLyAyLCB5
IC0gcCAvIDIsIHgsIHkgLSBwLCB4ICsgcCAvIDIsIHkgLSBwIC8gMiwgeCwgeSwgeCAtIHAgLyAy
LAogICAgICAgICAgICAgICAgeSAtIHAgLyAyLCB1QWN0TnIpOwogICAgICAgIHVBY3ROciArPSAy
OwogICAgICAgIGZwcmludGYoZ3BvdXRmaWxlLCAiXSxcbiV1LDAsW1xuXSkuXG4iLCB1QWN0TnIr
Kyk7CiAgICAgICAgYnJlYWs7CgogICAgY2FzZSA0OToKCiAgICAgICAgZnByaW50ZihncG91dGZp
bGUsICJncm91cChbXG4iKTsKICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwKICAgICAgICAgICAg
ICAgICJwb2x5Z29uKCclcycsNSxbXG4lLjFmLCUuMWYsJS4xZiwlLjFmLCUuMWYsJS4xZiwlLjFm
LCUuMWYsJS4xZiwlLjFmXSwwLDEsMSwwLCV1LDAsMCwwLDAsMCxbXG5dKS5cbiIsCiAgICAgICAg
ICAgICAgICBzQWN0Q29sb3IsIHgsIHkgKyBwLCB4ICsgcCwgeSwgeCwgeSAtIHAsIHggLSBwLCB5
LCB4LCB5ICsgcCwgdUFjdE5yKTsKICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwKICAgICAgICAg
ICAgICAgICJwb2x5Z29uKCclcycsNSxbXG4lLjFmLCUuMWYsJS4xZiwlLjFmLCUuMWYsJS4xZiwl
LjFmLCUuMWYsJS4xZiwlLjFmXSwxLDEsMSwwLCV1LDAsMCwwLDAsMCxbXG5dKS5cbiIsCiAgICAg
ICAgICAgICAgICBzQWN0Q29sb3IsIHggLSBwLCB5LCB4IC0gcCAvIDIsIHkgLSBwIC8gMiwgeCwg
eSwgeCAtIHAgLyAyLCB5ICsgcCAvIDIsIHggLSBwLCB5LCB1QWN0TnIpOwogICAgICAgIHVBY3RO
ciArPSAyOwogICAgICAgIGZwcmludGYoZ3BvdXRmaWxlLCAiXSxcbiV1LDAsW1xuXSkuXG4iLCB1
QWN0TnIrKyk7CiAgICAgICAgYnJlYWs7CgogICAgY2FzZSA1MDoKCiAgICAgICAgZnByaW50Zihn
cG91dGZpbGUsICJncm91cChbXG4iKTsKICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwKICAgICAg
ICAgICAgICAgICJwb2x5Z29uKCclcycsNSxbXG4lLjFmLCUuMWYsJS4xZiwlLjFmLCUuMWYsJS4x
ZiwlLjFmLCUuMWYsJS4xZiwlLjFmXSwwLDEsMSwwLCV1LDAsMCwwLDAsMCxbXG5dKS5cbiIsCiAg
ICAgICAgICAgICAgICBzQWN0Q29sb3IsIHgsIHkgKyBwLCB4ICsgcCwgeSwgeCwgeSAtIHAsIHgg
LSBwLCB5LCB4LCB5ICsgcCwgdUFjdE5yKTsKICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwKICAg
ICAgICAgICAgICAgICJwb2x5Z29uKCclcycsNSxbXG4lLjFmLCUuMWYsJS4xZiwlLjFmLCUuMWYs
JS4xZiwlLjFmLCUuMWYsJS4xZiwlLjFmXSwxLDEsMSwwLCV1LDAsMCwwLDAsMCxbXG5dKS5cbiIs
CiAgICAgICAgICAgICAgICBzQWN0Q29sb3IsIHggLSBwLCB5LCB4LCB5IC0gcCwgeCArIHAgLyAy
LCB5IC0gcCAvIDIsIHggLSBwIC8gMiwgeSArIHAgLyAyLCB4IC0gcCwKICAgICAgICAgICAgICAg
IHksIHVBY3ROcik7CiAgICAgICAgdUFjdE5yICs9IDI7CiAgICAgICAgZnByaW50ZihncG91dGZp
bGUsICJdLFxuJXUsMCxbXG5dKS5cbiIsIHVBY3ROcisrKTsKICAgICAgICBicmVhazsKCiAgICBj
YXNlIDUxOgoKICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgImdyb3VwKFtcbiIpOwogICAgICAg
IGZwcmludGYoZ3BvdXRmaWxlLAogICAgICAgICAgICAgICAgInBvbHlnb24oJyVzJyw1LFtcbiUu
MWYsJS4xZiwlLjFmLCUuMWYsJS4xZiwlLjFmLCUuMWYsJS4xZiwlLjFmLCUuMWZdLDAsMSwxLDAs
JXUsMCwwLDAsMCwwLFtcbl0pLlxuIiwKICAgICAgICAgICAgICAgIHNBY3RDb2xvciwgeCwgeSAr
IHAsIHggKyBwLCB5LCB4LCB5IC0gcCwgeCAtIHAsIHksIHgsIHkgKyBwLCB1QWN0TnIpOwogICAg
ICAgIGZwcmludGYoZ3BvdXRmaWxlLAogICAgICAgICAgICAgICAgInBvbHlnb24oJyVzJyw1LFtc
biUuMWYsJS4xZiwlLjFmLCUuMWYsJS4xZiwlLjFmLCUuMWYsJS4xZiwlLjFmLCUuMWZdLDEsMSwx
LDAsJXUsMCwwLDAsMCwwLFtcbl0pLlxuIiwKICAgICAgICAgICAgICAgIHNBY3RDb2xvciwgeCAt
IHAgLyAyLCB5ICsgcCAvIDIsIHgsIHksIHggKyBwIC8gMiwgeSArIHAgLyAyLCB4LCB5ICsgcCwg
eCAtIHAgLyAyLAogICAgICAgICAgICAgICAgeSArIHAgLyAyLCB1QWN0TnIpOwogICAgICAgIHVB
Y3ROciArPSAyOwogICAgICAgIGZwcmludGYoZ3BvdXRmaWxlLCAiXSxcbiV1LDAsW1xuXSkuXG4i
LCB1QWN0TnIrKyk7CiAgICAgICAgYnJlYWs7CgogICAgY2FzZSA1MjoKCiAgICAgICAgZnByaW50
ZihncG91dGZpbGUsICJncm91cChbXG4iKTsKICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwKICAg
ICAgICAgICAgICAgICJwb2x5Z29uKCclcycsNSxbXG4lLjFmLCUuMWYsJS4xZiwlLjFmLCUuMWYs
JS4xZiwlLjFmLCUuMWYsJS4xZiwlLjFmXSwwLDEsMSwwLCV1LDAsMCwwLDAsMCxbXG5dKS5cbiIs
CiAgICAgICAgICAgICAgICBzQWN0Q29sb3IsIHgsIHkgKyBwLCB4ICsgcCwgeSwgeCwgeSAtIHAs
IHggLSBwLCB5LCB4LCB5ICsgcCwgdUFjdE5yKTsKICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwK
ICAgICAgICAgICAgICAgICJwb2x5Z29uKCclcycsNSxbXG4lLjFmLCUuMWYsJS4xZiwlLjFmLCUu
MWYsJS4xZiwlLjFmLCUuMWYsJS4xZiwlLjFmXSwxLDEsMSwwLCV1LDAsMCwwLDAsMCxbXG5dKS5c
biIsCiAgICAgICAgICAgICAgICBzQWN0Q29sb3IsIHggLSBwIC8gMiwgeSAtIHAgLyAyLCB4LCB5
IC0gcCwgeCArIHAgLyAyLCB5IC0gcCAvIDIsIHgsIHksIHggLSBwIC8gMiwKICAgICAgICAgICAg
ICAgIHkgLSBwIC8gMiwgdUFjdE5yKTsKICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwKICAgICAg
ICAgICAgICAgICJwb2x5Z29uKCclcycsNSxbXG4lLjFmLCUuMWYsJS4xZiwlLjFmLCUuMWYsJS4x
ZiwlLjFmLCUuMWYsJS4xZiwlLjFmXSwxLDEsMSwwLCV1LDAsMCwwLDAsMCxbXG5dKS5cbiIsCiAg
ICAgICAgICAgICAgICBzQWN0Q29sb3IsIHggLSBwIC8gMiwgeSArIHAgLyAyLCB4LCB5LCB4ICsg
cCAvIDIsIHkgKyBwIC8gMiwgeCwgeSArIHAsIHggLSBwIC8gMiwKICAgICAgICAgICAgICAgIHkg
KyBwIC8gMiwgdUFjdE5yKTsKICAgICAgICB1QWN0TnIgKz0gMzsKICAgICAgICBmcHJpbnRmKGdw
b3V0ZmlsZSwgIl0sXG4ldSwwLFtcbl0pLlxuIiwgdUFjdE5yKyspOwogICAgICAgIGJyZWFrOwoK
ICAgIGNhc2UgNTM6CgogICAgICAgIGZwcmludGYoZ3BvdXRmaWxlLCAiZ3JvdXAoW1xuIik7CiAg
ICAgICAgZnByaW50ZihncG91dGZpbGUsCiAgICAgICAgICAgICAgICAicG9seWdvbignJXMnLDUs
W1xuJS4xZiwlLjFmLCUuMWYsJS4xZiwlLjFmLCUuMWYsJS4xZiwlLjFmLCUuMWYsJS4xZl0sMCwx
LDEsMCwldSwwLDAsMCwwLDAsW1xuXSkuXG4iLAogICAgICAgICAgICAgICAgc0FjdENvbG9yLCB4
LCB5ICsgcCwgeCArIHAsIHksIHgsIHkgLSBwLCB4IC0gcCwgeSwgeCwgeSArIHAsIHVBY3ROcik7
CiAgICAgICAgZnByaW50ZihncG91dGZpbGUsCiAgICAgICAgICAgICAgICAicG9seWdvbignJXMn
LDUsW1xuJS4xZiwlLjFmLCUuMWYsJS4xZiwlLjFmLCUuMWYsJS4xZiwlLjFmLCUuMWYsJS4xZl0s
MSwxLDEsMCwldSwwLDAsMCwwLDAsW1xuXSkuXG4iLAogICAgICAgICAgICAgICAgc0FjdENvbG9y
LCB4IC0gcCwgeSwgeCAtIHAgLyAyLCB5IC0gcCAvIDIsIHggKyBwIC8gMiwgeSArIHAgLyAyLCB4
LCB5ICsgcCwgeCAtIHAsCiAgICAgICAgICAgICAgICB5LCB1QWN0TnIpOwogICAgICAgIHVBY3RO
ciArPSAyOwogICAgICAgIGZwcmludGYoZ3BvdXRmaWxlLCAiXSxcbiV1LDAsW1xuXSkuXG4iLCB1
QWN0TnIrKyk7CiAgICAgICAgYnJlYWs7CgogICAgY2FzZSA1NDoKCiAgICAgICAgZnByaW50Zihn
cG91dGZpbGUsICJncm91cChbXG4iKTsKICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwKICAgICAg
ICAgICAgICAgICJwb2x5Z29uKCclcycsNSxbXG4lLjFmLCUuMWYsJS4xZiwlLjFmLCUuMWYsJS4x
ZiwlLjFmLCUuMWYsJS4xZiwlLjFmXSwwLDEsMSwwLCV1LDAsMCwwLDAsMCxbXG5dKS5cbiIsCiAg
ICAgICAgICAgICAgICBzQWN0Q29sb3IsIHgsIHkgKyBwLCB4ICsgcCwgeSwgeCwgeSAtIHAsIHgg
LSBwLCB5LCB4LCB5ICsgcCwgdUFjdE5yKTsKICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwKICAg
ICAgICAgICAgICAgICJwb2x5Z29uKCclcycsNyxbXG4lLjFmLCUuMWYsJS4xZiwlLjFmLCUuMWYs
JS4xZiwlLjFmLCUuMWYsJS4xZiwlLjFmLCUuMWYsJS4xZiwlLjFmLCUuMWZdLDEsMSwxLDAsJXUs
MCwwLDAsMCwwLFtcbl0pLlxuIiwKICAgICAgICAgICAgICAgIHNBY3RDb2xvciwgeCAtIHAsIHks
IHgsIHkgLSBwLCB4ICsgcCAvIDIsIHkgLSBwIC8gMiwgeCwgeSwgeCArIHAgLyAyLCB5ICsgcCAv
IDIsCiAgICAgICAgICAgICAgICB4LCB5ICsgcCwgeCAtIHAsIHksIHVBY3ROcik7CiAgICAgICAg
dUFjdE5yICs9IDI7CiAgICAgICAgZnByaW50ZihncG91dGZpbGUsICJdLFxuJXUsMCxbXG5dKS5c
biIsIHVBY3ROcisrKTsKICAgICAgICBicmVhazsKCiAgICBjYXNlIDU1OgoKICAgICAgICBmcHJp
bnRmKGdwb3V0ZmlsZSwgImdyb3VwKFtcbiIpOwogICAgICAgIGZwcmludGYoZ3BvdXRmaWxlLAog
ICAgICAgICAgICAgICAgInBvbHlnb24oJyVzJyw1LFtcbiUuMWYsJS4xZiwlLjFmLCUuMWYsJS4x
ZiwlLjFmLCUuMWYsJS4xZiwlLjFmLCUuMWZdLDAsMSwxLDAsJXUsMCwwLDAsMCwwLFtcbl0pLlxu
IiwKICAgICAgICAgICAgICAgIHNBY3RDb2xvciwgeCwgeSArIHAsIHggKyBwLCB5LCB4LCB5IC0g
cCwgeCAtIHAsIHksIHgsIHkgKyBwLCB1QWN0TnIpOwogICAgICAgIGZwcmludGYoZ3BvdXRmaWxl
LAogICAgICAgICAgICAgICAgInBvbHlnb24oJyVzJyw1LFtcbiUuMWYsJS4xZiwlLjFmLCUuMWYs
JS4xZiwlLjFmLCUuMWYsJS4xZiwlLjFmLCUuMWZdLDEsMSwxLDAsJXUsMCwwLDAsMCwwLFtcbl0p
LlxuIiwKICAgICAgICAgICAgICAgIHNBY3RDb2xvciwgeCwgeSwgeCArIHAgLyAyLCB5IC0gcCAv
IDIsIHggKyBwLCB5LCB4ICsgcCAvIDIsIHkgKyBwIC8gMiwgeCwgeSwgdUFjdE5yKTsKICAgICAg
ICB1QWN0TnIgKz0gMjsKICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgIl0sXG4ldSwwLFtcbl0p
LlxuIiwgdUFjdE5yKyspOwogICAgICAgIGJyZWFrOwoKICAgIGNhc2UgNTY6CgogICAgICAgIGZw
cmludGYoZ3BvdXRmaWxlLCAiZ3JvdXAoW1xuIik7CiAgICAgICAgZnByaW50ZihncG91dGZpbGUs
CiAgICAgICAgICAgICAgICAicG9seWdvbignJXMnLDUsW1xuJS4xZiwlLjFmLCUuMWYsJS4xZiwl
LjFmLCUuMWYsJS4xZiwlLjFmLCUuMWYsJS4xZl0sMCwxLDEsMCwldSwwLDAsMCwwLDAsW1xuXSku
XG4iLAogICAgICAgICAgICAgICAgc0FjdENvbG9yLCB4LCB5ICsgcCwgeCArIHAsIHksIHgsIHkg
LSBwLCB4IC0gcCwgeSwgeCwgeSArIHAsIHVBY3ROcik7CiAgICAgICAgZnByaW50ZihncG91dGZp
bGUsCiAgICAgICAgICAgICAgICAicG9seWdvbignJXMnLDUsW1xuJS4xZiwlLjFmLCUuMWYsJS4x
ZiwlLjFmLCUuMWYsJS4xZiwlLjFmLCUuMWYsJS4xZl0sMSwxLDEsMCwldSwwLDAsMCwwLDAsW1xu
XSkuXG4iLAogICAgICAgICAgICAgICAgc0FjdENvbG9yLCB4IC0gcCAvIDIsIHkgLSBwIC8gMiwg
eCwgeSAtIHAsIHggKyBwLCB5LCB4ICsgcCAvIDIsIHkgKyBwIC8gMiwgeCAtIHAgLwogICAgICAg
ICAgICAgICAgMiwgeSAtIHAgLyAyLCB1QWN0TnIpOwogICAgICAgIHVBY3ROciArPSAyOwogICAg
ICAgIGZwcmludGYoZ3BvdXRmaWxlLCAiXSxcbiV1LDAsW1xuXSkuXG4iLCB1QWN0TnIrKyk7CiAg
ICAgICAgYnJlYWs7CgogICAgY2FzZSA1NzoKCiAgICAgICAgZnByaW50ZihncG91dGZpbGUsICJn
cm91cChbXG4iKTsKICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwKICAgICAgICAgICAgICAgICJw
b2x5Z29uKCclcycsNSxbXG4lLjFmLCUuMWYsJS4xZiwlLjFmLCUuMWYsJS4xZiwlLjFmLCUuMWYs
JS4xZiwlLjFmXSwwLDEsMSwwLCV1LDAsMCwwLDAsMCxbXG5dKS5cbiIsCiAgICAgICAgICAgICAg
ICBzQWN0Q29sb3IsIHgsIHkgKyBwLCB4ICsgcCwgeSwgeCwgeSAtIHAsIHggLSBwLCB5LCB4LCB5
ICsgcCwgdUFjdE5yKTsKICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwKICAgICAgICAgICAgICAg
ICJwb2x5Z29uKCclcycsNSxbXG4lLjFmLCUuMWYsJS4xZiwlLjFmLCUuMWYsJS4xZiwlLjFmLCUu
MWYsJS4xZiwlLjFmXSwxLDEsMSwwLCV1LDAsMCwwLDAsMCxbXG5dKS5cbiIsCiAgICAgICAgICAg
ICAgICBzQWN0Q29sb3IsIHggLSBwLCB5LCB4IC0gcCAvIDIsIHkgLSBwIC8gMiwgeCwgeSwgeCAt
IHAgLyAyLCB5ICsgcCAvIDIsIHggLSBwLCB5LCB1QWN0TnIpOwogICAgICAgIGZwcmludGYoZ3Bv
dXRmaWxlLAogICAgICAgICAgICAgICAgInBvbHlnb24oJyVzJyw1LFtcbiUuMWYsJS4xZiwlLjFm
LCUuMWYsJS4xZiwlLjFmLCUuMWYsJS4xZiwlLjFmLCUuMWZdLDEsMSwxLDAsJXUsMCwwLDAsMCww
LFtcbl0pLlxuIiwKICAgICAgICAgICAgICAgIHNBY3RDb2xvciwgeCwgeSwgeCArIHAgLyAyLCB5
IC0gcCAvIDIsIHggKyBwLCB5LCB4ICsgcCAvIDIsIHkgKyBwIC8gMiwgeCwgeSwgdUFjdE5yKTsK
ICAgICAgICB1QWN0TnIgKz0gMzsKICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgIl0sXG4ldSww
LFtcbl0pLlxuIiwgdUFjdE5yKyspOwogICAgICAgIGJyZWFrOwoKICAgIGNhc2UgNTg6CgogICAg
ICAgIGZwcmludGYoZ3BvdXRmaWxlLCAiZ3JvdXAoW1xuIik7CiAgICAgICAgZnByaW50ZihncG91
dGZpbGUsCiAgICAgICAgICAgICAgICAicG9seWdvbignJXMnLDUsW1xuJS4xZiwlLjFmLCUuMWYs
JS4xZiwlLjFmLCUuMWYsJS4xZiwlLjFmLCUuMWYsJS4xZl0sMCwxLDEsMCwldSwwLDAsMCwwLDAs
W1xuXSkuXG4iLAogICAgICAgICAgICAgICAgc0FjdENvbG9yLCB4LCB5ICsgcCwgeCArIHAsIHks
IHgsIHkgLSBwLCB4IC0gcCwgeSwgeCwgeSArIHAsIHVBY3ROcik7CiAgICAgICAgZnByaW50Zihn
cG91dGZpbGUsCiAgICAgICAgICAgICAgICAicG9seWdvbignJXMnLDcsW1xuJS4xZiwlLjFmLCUu
MWYsJS4xZiwlLjFmLCUuMWYsJS4xZiwlLjFmLCUuMWYsJS4xZiwlLjFmLCUuMWYsJS4xZiwlLjFm
XSwxLDEsMSwwLCV1LDAsMCwwLDAsMCxbXG5dKS5cbiIsCiAgICAgICAgICAgICAgICBzQWN0Q29s
b3IsIHggLSBwLCB5LCB4LCB5IC0gcCwgeCArIHAsIHksIHggKyBwIC8gMiwgeSArIHAgLyAyLCB4
LCB5LCB4IC0gcCAvIDIsIHkKICAgICAgICAgICAgICAgICsgcCAvIDIsIHggLSBwLCB5LCB1QWN0
TnIpOwogICAgICAgIHVBY3ROciArPSAyOwogICAgICAgIGZwcmludGYoZ3BvdXRmaWxlLCAiXSxc
biV1LDAsW1xuXSkuXG4iLCB1QWN0TnIrKyk7CiAgICAgICAgYnJlYWs7CgogICAgY2FzZSA1OToK
CiAgICAgICAgZnByaW50ZihncG91dGZpbGUsICJncm91cChbXG4iKTsKICAgICAgICBmcHJpbnRm
KGdwb3V0ZmlsZSwKICAgICAgICAgICAgICAgICJwb2x5Z29uKCclcycsNSxbXG4lLjFmLCUuMWYs
JS4xZiwlLjFmLCUuMWYsJS4xZiwlLjFmLCUuMWYsJS4xZiwlLjFmXSwwLDEsMSwwLCV1LDAsMCww
LDAsMCxbXG5dKS5cbiIsCiAgICAgICAgICAgICAgICBzQWN0Q29sb3IsIHgsIHkgKyBwLCB4ICsg
cCwgeSwgeCwgeSAtIHAsIHggLSBwLCB5LCB4LCB5ICsgcCwgdUFjdE5yKTsKICAgICAgICBmcHJp
bnRmKGdwb3V0ZmlsZSwKICAgICAgICAgICAgICAgICJwb2x5Z29uKCclcycsNSxbXG4lLjFmLCUu
MWYsJS4xZiwlLjFmLCUuMWYsJS4xZiwlLjFmLCUuMWYsJS4xZiwlLjFmXSwxLDEsMSwwLCV1LDAs
MCwwLDAsMCxbXG5dKS5cbiIsCiAgICAgICAgICAgICAgICBzQWN0Q29sb3IsIHggLSBwIC8gMiwg
eSArIHAgLyAyLCB4ICsgcCAvIDIsIHkgLSBwIC8gMiwgeCArIHAsIHksIHgsIHkgKyBwLCB4IC0g
cCAvCiAgICAgICAgICAgICAgICAyLCB5ICsgcCAvIDIsIHVBY3ROcik7CiAgICAgICAgdUFjdE5y
ICs9IDI7CiAgICAgICAgZnByaW50ZihncG91dGZpbGUsICJdLFxuJXUsMCxbXG5dKS5cbiIsIHVB
Y3ROcisrKTsKICAgICAgICBicmVhazsKCiAgICBjYXNlIDYwOgoKICAgICAgICBmcHJpbnRmKGdw
b3V0ZmlsZSwgImdyb3VwKFtcbiIpOwogICAgICAgIGZwcmludGYoZ3BvdXRmaWxlLAogICAgICAg
ICAgICAgICAgInBvbHlnb24oJyVzJyw1LFtcbiUuMWYsJS4xZiwlLjFmLCUuMWYsJS4xZiwlLjFm
LCUuMWYsJS4xZiwlLjFmLCUuMWZdLDAsMSwxLDAsJXUsMCwwLDAsMCwwLFtcbl0pLlxuIiwKICAg
ICAgICAgICAgICAgIHNBY3RDb2xvciwgeCwgeSArIHAsIHggKyBwLCB5LCB4LCB5IC0gcCwgeCAt
IHAsIHksIHgsIHkgKyBwLCB1QWN0TnIpOwogICAgICAgIGZwcmludGYoZ3BvdXRmaWxlLAogICAg
ICAgICAgICAgICAgInBvbHlnb24oJyVzJyw3LFtcbiUuMWYsJS4xZiwlLjFmLCUuMWYsJS4xZiwl
LjFmLCUuMWYsJS4xZiwlLjFmLCUuMWYsJS4xZiwlLjFmLCUuMWYsJS4xZl0sMSwxLDEsMCwldSww
LDAsMCwwLDAsW1xuXSkuXG4iLAogICAgICAgICAgICAgICAgc0FjdENvbG9yLCB4IC0gcCAvIDIs
IHkgLSBwIC8gMiwgeCwgeSAtIHAsIHggKyBwLCB5LCB4LCB5ICsgcCwgeCAtIHAgLyAyLCB5ICsg
cCAvCiAgICAgICAgICAgICAgICAyLCB4LCB5LCB4IC0gcCAvIDIsIHkgLSBwIC8gMiwgdUFjdE5y
KTsKICAgICAgICB1QWN0TnIgKz0gMjsKICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgIl0sXG4l
dSwwLFtcbl0pLlxuIiwgdUFjdE5yKyspOwogICAgICAgIGJyZWFrOwoKICAgIGNhc2UgNjE6Cgog
ICAgICAgIGZwcmludGYoZ3BvdXRmaWxlLCAiZ3JvdXAoW1xuIik7CiAgICAgICAgZnByaW50Zihn
cG91dGZpbGUsCiAgICAgICAgICAgICAgICAicG9seWdvbignJXMnLDUsW1xuJS4xZiwlLjFmLCUu
MWYsJS4xZiwlLjFmLCUuMWYsJS4xZiwlLjFmLCUuMWYsJS4xZl0sMCwxLDEsMCwldSwwLDAsMCww
LDAsW1xuXSkuXG4iLAogICAgICAgICAgICAgICAgc0FjdENvbG9yLCB4LCB5ICsgcCwgeCArIHAs
IHksIHgsIHkgLSBwLCB4IC0gcCwgeSwgeCwgeSArIHAsIHVBY3ROcik7CiAgICAgICAgZnByaW50
ZihncG91dGZpbGUsCiAgICAgICAgICAgICAgICAicG9seWdvbignJXMnLDcsW1xuJS4xZiwlLjFm
LCUuMWYsJS4xZiwlLjFmLCUuMWYsJS4xZiwlLjFmLCUuMWYsJS4xZiwlLjFmLCUuMWYsJS4xZiwl
LjFmXSwxLDEsMSwwLCV1LDAsMCwwLDAsMCxbXG5dKS5cbiIsCiAgICAgICAgICAgICAgICBzQWN0
Q29sb3IsIHggLSBwLCB5LCB4IC0gcCAvIDIsIHkgLSBwIC8gMiwgeCwgeSwgeCArIHAgLyAyLCB5
IC0gcCAvIDIsIHggKyBwLCB5LAogICAgICAgICAgICAgICAgeCwgeSArIHAsIHggLSBwLCB5LCB1
QWN0TnIpOwogICAgICAgIHVBY3ROciArPSAyOwogICAgICAgIGZwcmludGYoZ3BvdXRmaWxlLCAi
XSxcbiV1LDAsW1xuXSkuXG4iLCB1QWN0TnIrKyk7CiAgICAgICAgYnJlYWs7CgogICAgY2FzZSA2
MjoKCiAgICAgICAgZnByaW50ZihncG91dGZpbGUsCiAgICAgICAgICAgICAgICAicG9seWdvbign
JXMnLDUsW1xuJS4xZiwlLjFmLCUuMWYsJS4xZiwlLjFmLCUuMWYsJS4xZiwlLjFmLCUuMWYsJS4x
Zl0sMSwxLDEsMCwldSwwLDAsMCwwLDAsW1xuXSkuXG4iLAogICAgICAgICAgICAgICAgc0FjdENv
bG9yLCB4LCB5ICsgcCwgeCArIHAsIHksIHgsIHkgLSBwLCB4IC0gcCwgeSwgeCwgeSArIHAsIHVB
Y3ROcik7CiAgICAgICAgdUFjdE5yKys7CiAgICAgICAgYnJlYWs7CgoKICAgIH0KfQoKCgpzdGF0
aWMgdm9pZCBUR0lGX3NldF9wb2ludHNpemUoc2l6ZSkKZG91YmxlIHNpemU7CnsKICAgIHVBY3RQ
b2ludFNpemUgPSBzaXplOwp9CgoKCnN0YXRpYyBpbnQgVEdJRl9zZXRfZm9udChmb250KQpjaGFy
ICpmb250Owp7CiAgICBjaGFyIG5hbWVbMzJdOwogICAgaW50IHNpemUsIHNlcDsKCiAgICBzZXAg
PSBfX2V4dGVuc2lvbl9fICh7IGNoYXIgX19yMCwgX19yMSwgX19yMjsgKF9fYnVpbHRpbl9jb25z
dGFudF9wICgiLCIpICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKCgiLCIpICsgMSkgLSAoc2l6
ZV90KShjb25zdCB2b2lkICopKCIsIikgPT0gMSkgPyAoKF9fcjAgPSAoKF9fY29uc3QgY2hhciAq
KSAoIiwiKSlbMF0sIF9fcjAgPT0gJ1wwJykgPyBzdHJsZW4gKGZvbnQpIDogKChfX3IxID0gKChf
X2NvbnN0IGNoYXIgKikgKCIsIikpWzFdLCBfX3IxID09ICdcMCcpID8gX19zdHJjc3BuX2MxIChm
b250LCBfX3IwKSA6ICgoX19yMiA9ICgoX19jb25zdCBjaGFyICopICgiLCIpKVsyXSwgX19yMiA9
PSAnXDAnKSA/IF9fc3RyY3Nwbl9jMiAoZm9udCwgX19yMCwgX19yMSkgOiAoKChfX2NvbnN0IGNo
YXIgKikgKCIsIikpWzNdID09ICdcMCcgPyBfX3N0cmNzcG5fYzMgKGZvbnQsIF9fcjAsIF9fcjEs
IF9fcjIpIDogc3RyY3NwbiAoZm9udCwgIiwiKSkpKSkgOiBzdHJjc3BuIChmb250LCAiLCIpKTsg
fSk7CiAgICAoX19leHRlbnNpb25fXyAoX19idWlsdGluX2NvbnN0YW50X3AgKGZvbnQpICYmIF9f
YnVpbHRpbl9jb25zdGFudF9wIChzZXApID8gKHN0cmxlbiAoZm9udCkgKyAxID49ICgoc2l6ZV90
KSAoc2VwKSkgPyAoY2hhciAqKSBtZW1jcHkgKG5hbWUsIGZvbnQsIHNlcCkgOiBzdHJuY3B5IChu
YW1lLCBmb250LCBzZXApKSA6IHN0cm5jcHkgKG5hbWUsIGZvbnQsIHNlcCkpKTsKICAgIG5hbWVb
c2VwXSA9ICgnXDAnKTsKICAgIHNpemUgPSB1QWN0Rm9udFNpemU7CiAgICBzc2NhbmYoJihmb250
W3NlcCArIDFdKSwgIiVkIiwgJnNpemUpOwogICAgdUFjdEZvbnRTaXplID0gc2l6ZTsKICAgIHJl
dHVybiAxOwp9CiMgMzM5ICJ0ZXJtLmgiIDIKCgojIDEgInRlcm0vdGtjYW52YXMudHJtIiAxCiMg
NzUgInRlcm0vdGtjYW52YXMudHJtIgojIDEgInRlcm0vZHJpdmVyLmgiIDEKIyA3NiAidGVybS90
a2NhbnZhcy50cm0iIDIKCgoKCgoKc3RhdGljIHZvaWQgVEtfb3B0aW9ucyAodm9pZCk7CnN0YXRp
YyB2b2lkIFRLX2luaXQgKHZvaWQpOwpzdGF0aWMgdm9pZCBUS19ncmFwaGljcyAodm9pZCk7CnN0
YXRpYyB2b2lkIFRLX3RleHQgKHZvaWQpOwpzdGF0aWMgdm9pZCBUS19saW5ldHlwZSAoaW50IGxp
bmV0eXBlKTsKc3RhdGljIHZvaWQgVEtfbW92ZSAodW5zaWduZWQgaW50IHgsIHVuc2lnbmVkIGlu
dCB5KTsKc3RhdGljIHZvaWQgVEtfdmVjdG9yICh1bnNpZ25lZCBpbnQgeCwgdW5zaWduZWQgaW50
IHkpOwpzdGF0aWMgdm9pZCBUS19wdXRfdGV4dCAodW5zaWduZWQgaW50IHgsIHVuc2lnbmVkIGlu
dCB5LCBjaGFyICpzdHIpOwpzdGF0aWMgdm9pZCBUS19yZXNldCAodm9pZCk7CnN0YXRpYyBpbnQg
VEtfanVzdGlmeV90ZXh0IChlbnVtIEpVU1RJRlkpOwpzdGF0aWMgaW50IFRLX3NldF9mb250IChj
aGFyICpmb250KTsKc3RhdGljIHZvaWQgVEtfbGluZXdpZHRoIChkb3VibGUgbGluZXdpZHRoKTsK
IyAxMTEgInRlcm0vdGtjYW52YXMudHJtIgpleHRlcm4gZG91YmxlIG1pbl9hcnJheVtdLCBtYXhf
YXJyYXlbXSwgYmFzZV9hcnJheVtdLCBsb2dfYmFzZV9hcnJheVtdOwpleHRlcm4gVEJPT0xFQU4g
bG9nX2FycmF5W107CgpleHRlcm4gaW50IHhsZWZ0LCB4cmlnaHQsIHlib3QsIHl0b3A7CmV4dGVy
biBUQk9PTEVBTiBpc18zZF9wbG90OwoKCnN0YXRpYyBpbnQgdGtfbGFzdHg7CnN0YXRpYyBpbnQg
dGtfbGFzdHk7CnN0YXRpYyBpbnQgdGtfY29sb3IgPSAwOwpzdGF0aWMgY2hhciB0a19hbmNob3Jb
N10gPSAidyI7CnN0YXRpYyBkb3VibGUgdGtfbGluZXdpZHRoID0gMS4wOwpzdGF0aWMgaW50IHRr
X3BlcmwgPSAwOwpzdGF0aWMgaW50IHRrX2ludGVyYWN0aXZlID0gMDsKc3RhdGljIGNoYXIgKnRr
X2NvbG9yc1tdID0gewogICAgImJsYWNrIiwgImdyYXkiLCAicmVkIiwgImJsdWUiLCAiZ3JlZW4i
LCAiYnJvd24iLCAibWFnZW50YSIsICJjeWFuIgp9OwoKc3RhdGljIHZvaWQKVEtfb3B0aW9ucygp
CnsKICAgIHRrX3BlcmwgPSAwOwogICAgdGtfaW50ZXJhY3RpdmUgPSAwOwoKICAgIGlmICghKGNf
dG9rZW4gPj0gbnVtX3Rva2VucyB8fCBlcXVhbHMoY190b2tlbiwiOyIpKSkgewogICAgICAgIGlm
IChhbG1vc3RfZXF1YWxzKGNfdG9rZW4sICJwJGVybHRrIikpIHsKICAgICAgICAgICAgdGtfcGVy
bCA9IDE7CiAgICAgICAgICAgIGNfdG9rZW4rKzsKICAgICAgICB9CiAgICAgICAgaWYgKGFsbW9z
dF9lcXVhbHMoY190b2tlbiwgImkkbnRlcmFjdGl2ZSIpKSB7CiAgICAgICAgICAgIHRrX2ludGVy
YWN0aXZlID0gMTsKICAgICAgICAgICAgY190b2tlbisrOwogICAgICAgIH0KICAgIH0KCiAgICBz
cHJpbnRmKHRlcm1fb3B0aW9ucywgIiVzICVzIiwKICAgICAgICAgICAgdGtfcGVybCA/ICJwZXJs
dGsiIDogIiIsCiAgICAgICAgICAgIHRrX2ludGVyYWN0aXZlID8gImludGVyYWN0aXZlIiA6ICIi
KTsKfQoKc3RhdGljIHZvaWQKVEtfaW5pdCgpCnsKfQoKc3RhdGljIHZvaWQKVEtfZ3JhcGhpY3Mo
KQp7CiMgMTY3ICJ0ZXJtL3RrY2FudmFzLnRybSIKICAgIGlmICh0a19wZXJsKSB7CiAgICAgICAg
ZnB1dHMoInN1YiBnbnVwbG90IHtcbm15KCRjYW4pID0gQF87XG4kY2FuLT5kZWxldGUoJ2FsbCcp
O1xubXkgJGNteCA9ICgkY2FuLT5jb25maWd1cmUoLXdpZHRoKSlbNF07XG5teSAkY215ID0gKCRj
YW4tPmNvbmZpZ3VyZSgtaGVpZ2h0KSlbNF07XG5teSAkY214ID0gJGNhbi0+d2lkdGggLSAyICog
JGNhbi0+Y2dldCgtYm9yZGVyKTtcbmlmICgkY214IDw9IDEpIHtcbiRjbXggPSAoJGNhbi0+Y2dl
dCgtd2lkdGgpKTtcbn1cbm15ICRjbXkgPSAkY2FuLT5oZWlnaHQgLSAyICogJGNhbi0+Y2dldCgt
Ym9yZGVyKTtcbmlmICgkY215IDw9IDEpIHtcbiRjbXkgPSAoJGNhbi0+Y2dldCgtaGVpZ2h0KSk7
XG59XG4iLAojIDE3OCAidGVybS90a2NhbnZhcy50cm0iCiAgICAgICAgICAgICAgZ3BvdXRmaWxl
KTsKICAgIH0gZWxzZSB7CiAgICAgICAgZnB1dHMoInByb2MgZ251cGxvdCBjYW4ge1xuJGNhbiBk
ZWxldGUgYWxsXG5zZXQgY214IFtleHByIFt3aW5mbyB3aWR0aCAkY2FuXS0yKlskY2FuIGNnZXQg
LWJvcmRlcl1dXG5pZiB7JGNteCA8PSAxfSB7c2V0IGNteCBbJGNhbiBjZ2V0IC13aWR0aF19XG5z
ZXQgY215IFtleHByIFt3aW5mbyBoZWlnaHQgJGNhbl0tMipbJGNhbiBjZ2V0IC1ib3JkZXJdXVxu
aWYgeyRjbXkgPD0gMX0ge3NldCBjbXkgWyRjYW4gY2dldCAtaGVpZ2h0XX1cbiIsCgoKCgoKCiAg
ICAgICAgICAgICAgZ3BvdXRmaWxlKTsKICAgIH0KICAgIHRrX2xhc3R4ID0gdGtfbGFzdHkgPSB0
a19jb2xvciA9IDA7Cn0KCnN0YXRpYyB2b2lkClRLX3Jlc2V0KCkKewp9CgpzdGF0aWMgdm9pZApU
S19saW5ldHlwZShsaW5ldHlwZSkKaW50IGxpbmV0eXBlOwp7CiAgICB0a19jb2xvciA9IChsaW5l
dHlwZSArIDIpICYgNzsKfQoKc3RhdGljIHZvaWQKVEtfbGluZXdpZHRoKGxpbmV3aWR0aCkKZG91
YmxlIGxpbmV3aWR0aDsKewogICAgdGtfbGluZXdpZHRoID0gbGluZXdpZHRoOwp9CgpzdGF0aWMg
dm9pZApUS19tb3ZlKHgsIHkpCnVuc2lnbmVkIGludCB4LCB5Owp7CiAgICB0a19sYXN0eCA9IHg7
CiAgICB0a19sYXN0eSA9IDEwMDAgLSB5Owp9CiMgMjMwICJ0ZXJtL3RrY2FudmFzLnRybSIKc3Rh
dGljIHZvaWQKVEtfdmVjdG9yKHgsIHkpCnVuc2lnbmVkIGludCB4LCB5Owp7CgoKCgoKCgogICAg
aWYgKHRrX2ludGVyYWN0aXZlICYmICFpc18zZF9wbG90KSB7CiAgICAgICAgaWYgKHRrX3Blcmwp
CiAgICAgICAgICAgIGZwcmludGYoZ3BvdXRmaWxlLCAiJGNhbi0+YmluZCgiKTsKICAgICAgICBl
bHNlCiAgICAgICAgICAgIGZwcmludGYoZ3BvdXRmaWxlLCAiJGNhbiBiaW5kIFtcbiIpOwogICAg
fQoKCgogICAgeSA9IDEwMDAgLSB5OwoKCgogICAgaWYgKHRrX3BlcmwpIHsKICAgICAgICBmcHJp
bnRmKGdwb3V0ZmlsZSwiJGNhbi0+Y3JlYXRlTGluZSgkY214ICogJWQgLyAxMDAwLCAkY215ICog
JWQgLyAxMDAwLCAkY214ICogJWQgLyAxMDAwLCAkY215ICogJWQgLyAxMDAwLCAtZmlsbCA9PiBx
eyVzfSwgLXdpZHRoID0+ICVmLCAtY2Fwc3R5bGUgPT4gcXtyb3VuZH0pIiwKCgoKCgogICAgICAg
ICAgICAgICAgdGtfbGFzdHgsIHRrX2xhc3R5LCB4LCB5LCB0a19jb2xvcnNbdGtfY29sb3JdLCB0
a19saW5ld2lkdGgpOwogICAgfSBlbHNlIHsKICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwiJGNh
biBjcmVhdGUgbGluZSBbZXhwciAkY214ICogJWQgLzEwMDBdIFtleHByICRjbXkgKiAlZCAvMTAw
MF0gW2V4cHIgJGNteCAqICVkIC8xMDAwXSBbZXhwciAkY215ICogJWQgLzEwMDBdIC1maWxsICVz
IC13aWR0aCAlZiAtY2Fwc3R5bGUgcm91bmRcbiIsCgoKCgoKICAgICAgICAgICAgICAgIHRrX2xh
c3R4LCB0a19sYXN0eSwgeCwgeSwgdGtfY29sb3JzW3RrX2NvbG9yXSwgdGtfbGluZXdpZHRoKTsK
ICAgIH0KCgoKCgoKCiAgICBpZiAodGtfaW50ZXJhY3RpdmUgJiYgIWlzXzNkX3Bsb3QpIHsKICAg
ICAgICBpZiAodGtfcGVybCkgewoKICAgICAgICAgICAgZnByaW50ZihncG91dGZpbGUsIiwgJzxC
dXR0b24+JyA9PiBbXFwmZ251cGxvdF94eSwgJWYsICVmLCAlZiwgJWYsICVmLCAlZiwgJWYsICVm
LCIsCgoKICAgICAgICAgICAgICAgICAgICAobG9nX2FycmF5WzJdKSA/cG93KGJhc2VfYXJyYXlb
Ml0sbWluX2FycmF5WzJdKyhkb3VibGUpKHRrX2xhc3R4LXhsZWZ0KS8oZG91YmxlKSh4cmlnaHQt
eGxlZnQpKihtYXhfYXJyYXlbMl0tbWluX2FycmF5WzJdKSkgOm1pbl9hcnJheVsyXSsoZG91Ymxl
KSh0a19sYXN0eC14bGVmdCkvKGRvdWJsZSkoeHJpZ2h0LXhsZWZ0KSoobWF4X2FycmF5WzJdLW1p
bl9hcnJheVsyXSksCiAgICAgICAgICAgICAgICAgICAgKGxvZ19hcnJheVsxXSkgP3BvdyhiYXNl
X2FycmF5WzFdLG1pbl9hcnJheVsxXSsoZG91YmxlKSgoMTAwMCAtdGtfbGFzdHkpLXlib3QpLyhk
b3VibGUpKHl0b3AteWJvdCkqKG1heF9hcnJheVsxXS1taW5fYXJyYXlbMV0pKSA6bWluX2FycmF5
WzFdKyhkb3VibGUpKCgxMDAwIC10a19sYXN0eSkteWJvdCkvKGRvdWJsZSkoeXRvcC15Ym90KSoo
bWF4X2FycmF5WzFdLW1pbl9hcnJheVsxXSksCiAgICAgICAgICAgICAgICAgICAgKGxvZ19hcnJh
eVs2XSkgP3BvdyhiYXNlX2FycmF5WzZdLG1pbl9hcnJheVs2XSsoZG91YmxlKSh0a19sYXN0eC14
bGVmdCkvKGRvdWJsZSkoeHJpZ2h0LXhsZWZ0KSoobWF4X2FycmF5WzZdLW1pbl9hcnJheVs2XSkp
IDptaW5fYXJyYXlbNl0rKGRvdWJsZSkodGtfbGFzdHgteGxlZnQpLyhkb3VibGUpKHhyaWdodC14
bGVmdCkqKG1heF9hcnJheVs2XS1taW5fYXJyYXlbNl0pLAogICAgICAgICAgICAgICAgICAgIChs
b2dfYXJyYXlbNV0pID9wb3coYmFzZV9hcnJheVs1XSxtaW5fYXJyYXlbNV0rKGRvdWJsZSkoKDEw
MDAgLXRrX2xhc3R5KS15Ym90KS8oZG91YmxlKSh5dG9wLXlib3QpKihtYXhfYXJyYXlbNV0tbWlu
X2FycmF5WzVdKSkgOm1pbl9hcnJheVs1XSsoZG91YmxlKSgoMTAwMCAtdGtfbGFzdHkpLXlib3Qp
Lyhkb3VibGUpKHl0b3AteWJvdCkqKG1heF9hcnJheVs1XS1taW5fYXJyYXlbNV0pLAogICAgICAg
ICAgICAgICAgICAgIChsb2dfYXJyYXlbMl0pID9wb3coYmFzZV9hcnJheVsyXSxtaW5fYXJyYXlb
Ml0rKGRvdWJsZSkoeC14bGVmdCkvKGRvdWJsZSkoeHJpZ2h0LXhsZWZ0KSoobWF4X2FycmF5WzJd
LW1pbl9hcnJheVsyXSkpIDptaW5fYXJyYXlbMl0rKGRvdWJsZSkoeC14bGVmdCkvKGRvdWJsZSko
eHJpZ2h0LXhsZWZ0KSoobWF4X2FycmF5WzJdLW1pbl9hcnJheVsyXSksCiAgICAgICAgICAgICAg
ICAgICAgKGxvZ19hcnJheVsxXSkgP3BvdyhiYXNlX2FycmF5WzFdLG1pbl9hcnJheVsxXSsoZG91
YmxlKSgoMTAwMCAteSkteWJvdCkvKGRvdWJsZSkoeXRvcC15Ym90KSoobWF4X2FycmF5WzFdLW1p
bl9hcnJheVsxXSkpIDptaW5fYXJyYXlbMV0rKGRvdWJsZSkoKDEwMDAgLXkpLXlib3QpLyhkb3Vi
bGUpKHl0b3AteWJvdCkqKG1heF9hcnJheVsxXS1taW5fYXJyYXlbMV0pLAogICAgICAgICAgICAg
ICAgICAgIChsb2dfYXJyYXlbNl0pID9wb3coYmFzZV9hcnJheVs2XSxtaW5fYXJyYXlbNl0rKGRv
dWJsZSkoeC14bGVmdCkvKGRvdWJsZSkoeHJpZ2h0LXhsZWZ0KSoobWF4X2FycmF5WzZdLW1pbl9h
cnJheVs2XSkpIDptaW5fYXJyYXlbNl0rKGRvdWJsZSkoeC14bGVmdCkvKGRvdWJsZSkoeHJpZ2h0
LXhsZWZ0KSoobWF4X2FycmF5WzZdLW1pbl9hcnJheVs2XSksCiAgICAgICAgICAgICAgICAgICAg
KGxvZ19hcnJheVs1XSkgP3BvdyhiYXNlX2FycmF5WzVdLG1pbl9hcnJheVs1XSsoZG91YmxlKSgo
MTAwMCAteSkteWJvdCkvKGRvdWJsZSkoeXRvcC15Ym90KSoobWF4X2FycmF5WzVdLW1pbl9hcnJh
eVs1XSkpIDptaW5fYXJyYXlbNV0rKGRvdWJsZSkoKDEwMDAgLXkpLXlib3QpLyhkb3VibGUpKHl0
b3AteWJvdCkqKG1heF9hcnJheVs1XS1taW5fYXJyYXlbNV0pKTsKICAgICAgICAgICAgaWYgKGxv
Z19hcnJheVsyXSkgewogICAgICAgICAgICAgICAgZnByaW50ZihncG91dGZpbGUsICIgJWYsIiwK
ICAgICAgICAgICAgICAgICAgICAgICAgKGxvZ19hcnJheVsyXSkgP3BvdyhiYXNlX2FycmF5WzJd
LG1pbl9hcnJheVsyXSsoZG91YmxlKSgwLjUgKiAoeCArIHRrX2xhc3R4KS14bGVmdCkvKGRvdWJs
ZSkoeHJpZ2h0LXhsZWZ0KSoobWF4X2FycmF5WzJdLW1pbl9hcnJheVsyXSkpIDptaW5fYXJyYXlb
Ml0rKGRvdWJsZSkoMC41ICogKHggKyB0a19sYXN0eCkteGxlZnQpLyhkb3VibGUpKHhyaWdodC14
bGVmdCkqKG1heF9hcnJheVsyXS1taW5fYXJyYXlbMl0pKTsKICAgICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgICAgIGZwcmludGYoZ3BvdXRmaWxlLCAiIFwiXCIsIik7CiAgICAgICAgICAg
IH0KICAgICAgICAgICAgaWYgKGxvZ19hcnJheVsxXSkgewogICAgICAgICAgICAgICAgZnByaW50
ZihncG91dGZpbGUsICIgJWYsIiwKICAgICAgICAgICAgICAgICAgICAgICAgKGxvZ19hcnJheVsx
XSkgP3BvdyhiYXNlX2FycmF5WzFdLG1pbl9hcnJheVsxXSsoZG91YmxlKSgoMTAwMCAtMC41ICog
KHkgKyB0a19sYXN0eSkpLXlib3QpLyhkb3VibGUpKHl0b3AteWJvdCkqKG1heF9hcnJheVsxXS1t
aW5fYXJyYXlbMV0pKSA6bWluX2FycmF5WzFdKyhkb3VibGUpKCgxMDAwIC0wLjUgKiAoeSArIHRr
X2xhc3R5KSkteWJvdCkvKGRvdWJsZSkoeXRvcC15Ym90KSoobWF4X2FycmF5WzFdLW1pbl9hcnJh
eVsxXSkpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgZnByaW50ZihncG91
dGZpbGUsICIgXCJcIiwiKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAobG9nX2FycmF5
WzZdKSB7CiAgICAgICAgICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgIiAlZiwiLAogICAgICAg
ICAgICAgICAgICAgICAgICAobG9nX2FycmF5WzZdKSA/cG93KGJhc2VfYXJyYXlbNl0sbWluX2Fy
cmF5WzZdKyhkb3VibGUpKDAuNSAqICh4ICsgdGtfbGFzdHgpLXhsZWZ0KS8oZG91YmxlKSh4cmln
aHQteGxlZnQpKihtYXhfYXJyYXlbNl0tbWluX2FycmF5WzZdKSkgOm1pbl9hcnJheVs2XSsoZG91
YmxlKSgwLjUgKiAoeCArIHRrX2xhc3R4KS14bGVmdCkvKGRvdWJsZSkoeHJpZ2h0LXhsZWZ0KSoo
bWF4X2FycmF5WzZdLW1pbl9hcnJheVs2XSkpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgICAgZnByaW50ZihncG91dGZpbGUsICIgXCJcIiwiKTsKICAgICAgICAgICAgfQogICAg
ICAgICAgICBpZiAobG9nX2FycmF5WzVdKSB7CiAgICAgICAgICAgICAgICBmcHJpbnRmKGdwb3V0
ZmlsZSwgIiAlZiIsCiAgICAgICAgICAgICAgICAgICAgICAgIChsb2dfYXJyYXlbNV0pID9wb3co
YmFzZV9hcnJheVs1XSxtaW5fYXJyYXlbNV0rKGRvdWJsZSkoKDEwMDAgLTAuNSAqICh5ICsgdGtf
bGFzdHkpKS15Ym90KS8oZG91YmxlKSh5dG9wLXlib3QpKihtYXhfYXJyYXlbNV0tbWluX2FycmF5
WzVdKSkgOm1pbl9hcnJheVs1XSsoZG91YmxlKSgoMTAwMCAtMC41ICogKHkgKyB0a19sYXN0eSkp
LXlib3QpLyhkb3VibGUpKHl0b3AteWJvdCkqKG1heF9hcnJheVs1XS1taW5fYXJyYXlbNV0pKTsK
ICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGZwcmludGYoZ3BvdXRmaWxlLCAi
IFwiXCIiKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgIl0p
O1xuIik7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgZnByaW50ZihncG91dGZpbGUsIl0g
PEJ1dHRvbj4gXCJnbnVwbG90X3h5ICUlVyAlZiAlZiAlZiAlZiAlZiAlZiAlZiAlZiIsCgoKICAg
ICAgICAgICAgICAgICAgICAobG9nX2FycmF5WzJdKSA/cG93KGJhc2VfYXJyYXlbMl0sbWluX2Fy
cmF5WzJdKyhkb3VibGUpKHRrX2xhc3R4LXhsZWZ0KS8oZG91YmxlKSh4cmlnaHQteGxlZnQpKiht
YXhfYXJyYXlbMl0tbWluX2FycmF5WzJdKSkgOm1pbl9hcnJheVsyXSsoZG91YmxlKSh0a19sYXN0
eC14bGVmdCkvKGRvdWJsZSkoeHJpZ2h0LXhsZWZ0KSoobWF4X2FycmF5WzJdLW1pbl9hcnJheVsy
XSksCiAgICAgICAgICAgICAgICAgICAgKGxvZ19hcnJheVsxXSkgP3BvdyhiYXNlX2FycmF5WzFd
LG1pbl9hcnJheVsxXSsoZG91YmxlKSgoMTAwMCAtdGtfbGFzdHkpLXlib3QpLyhkb3VibGUpKHl0
b3AteWJvdCkqKG1heF9hcnJheVsxXS1taW5fYXJyYXlbMV0pKSA6bWluX2FycmF5WzFdKyhkb3Vi
bGUpKCgxMDAwIC10a19sYXN0eSkteWJvdCkvKGRvdWJsZSkoeXRvcC15Ym90KSoobWF4X2FycmF5
WzFdLW1pbl9hcnJheVsxXSksCiAgICAgICAgICAgICAgICAgICAgKGxvZ19hcnJheVs2XSkgP3Bv
dyhiYXNlX2FycmF5WzZdLG1pbl9hcnJheVs2XSsoZG91YmxlKSh0a19sYXN0eC14bGVmdCkvKGRv
dWJsZSkoeHJpZ2h0LXhsZWZ0KSoobWF4X2FycmF5WzZdLW1pbl9hcnJheVs2XSkpIDptaW5fYXJy
YXlbNl0rKGRvdWJsZSkodGtfbGFzdHgteGxlZnQpLyhkb3VibGUpKHhyaWdodC14bGVmdCkqKG1h
eF9hcnJheVs2XS1taW5fYXJyYXlbNl0pLAogICAgICAgICAgICAgICAgICAgIChsb2dfYXJyYXlb
NV0pID9wb3coYmFzZV9hcnJheVs1XSxtaW5fYXJyYXlbNV0rKGRvdWJsZSkoKDEwMDAgLXRrX2xh
c3R5KS15Ym90KS8oZG91YmxlKSh5dG9wLXlib3QpKihtYXhfYXJyYXlbNV0tbWluX2FycmF5WzVd
KSkgOm1pbl9hcnJheVs1XSsoZG91YmxlKSgoMTAwMCAtdGtfbGFzdHkpLXlib3QpLyhkb3VibGUp
KHl0b3AteWJvdCkqKG1heF9hcnJheVs1XS1taW5fYXJyYXlbNV0pLAogICAgICAgICAgICAgICAg
ICAgIChsb2dfYXJyYXlbMl0pID9wb3coYmFzZV9hcnJheVsyXSxtaW5fYXJyYXlbMl0rKGRvdWJs
ZSkoeC14bGVmdCkvKGRvdWJsZSkoeHJpZ2h0LXhsZWZ0KSoobWF4X2FycmF5WzJdLW1pbl9hcnJh
eVsyXSkpIDptaW5fYXJyYXlbMl0rKGRvdWJsZSkoeC14bGVmdCkvKGRvdWJsZSkoeHJpZ2h0LXhs
ZWZ0KSoobWF4X2FycmF5WzJdLW1pbl9hcnJheVsyXSksCiAgICAgICAgICAgICAgICAgICAgKGxv
Z19hcnJheVsxXSkgP3BvdyhiYXNlX2FycmF5WzFdLG1pbl9hcnJheVsxXSsoZG91YmxlKSgoMTAw
MCAteSkteWJvdCkvKGRvdWJsZSkoeXRvcC15Ym90KSoobWF4X2FycmF5WzFdLW1pbl9hcnJheVsx
XSkpIDptaW5fYXJyYXlbMV0rKGRvdWJsZSkoKDEwMDAgLXkpLXlib3QpLyhkb3VibGUpKHl0b3At
eWJvdCkqKG1heF9hcnJheVsxXS1taW5fYXJyYXlbMV0pLAogICAgICAgICAgICAgICAgICAgIChs
b2dfYXJyYXlbNl0pID9wb3coYmFzZV9hcnJheVs2XSxtaW5fYXJyYXlbNl0rKGRvdWJsZSkoeC14
bGVmdCkvKGRvdWJsZSkoeHJpZ2h0LXhsZWZ0KSoobWF4X2FycmF5WzZdLW1pbl9hcnJheVs2XSkp
IDptaW5fYXJyYXlbNl0rKGRvdWJsZSkoeC14bGVmdCkvKGRvdWJsZSkoeHJpZ2h0LXhsZWZ0KSoo
bWF4X2FycmF5WzZdLW1pbl9hcnJheVs2XSksCiAgICAgICAgICAgICAgICAgICAgKGxvZ19hcnJh
eVs1XSkgP3BvdyhiYXNlX2FycmF5WzVdLG1pbl9hcnJheVs1XSsoZG91YmxlKSgoMTAwMCAteSkt
eWJvdCkvKGRvdWJsZSkoeXRvcC15Ym90KSoobWF4X2FycmF5WzVdLW1pbl9hcnJheVs1XSkpIDpt
aW5fYXJyYXlbNV0rKGRvdWJsZSkoKDEwMDAgLXkpLXlib3QpLyhkb3VibGUpKHl0b3AteWJvdCkq
KG1heF9hcnJheVs1XS1taW5fYXJyYXlbNV0pKTsKICAgICAgICAgICAgaWYgKGxvZ19hcnJheVsy
XSkgewogICAgICAgICAgICAgICAgZnByaW50ZihncG91dGZpbGUsICIgJWYiLAogICAgICAgICAg
ICAgICAgICAgICAgICAobG9nX2FycmF5WzJdKSA/cG93KGJhc2VfYXJyYXlbMl0sbWluX2FycmF5
WzJdKyhkb3VibGUpKDAuNSAqICh4ICsgdGtfbGFzdHgpLXhsZWZ0KS8oZG91YmxlKSh4cmlnaHQt
eGxlZnQpKihtYXhfYXJyYXlbMl0tbWluX2FycmF5WzJdKSkgOm1pbl9hcnJheVsyXSsoZG91Ymxl
KSgwLjUgKiAoeCArIHRrX2xhc3R4KS14bGVmdCkvKGRvdWJsZSkoeHJpZ2h0LXhsZWZ0KSoobWF4
X2FycmF5WzJdLW1pbl9hcnJheVsyXSkpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgICAgZnByaW50ZihncG91dGZpbGUsICIge30iKTsKICAgICAgICAgICAgfQogICAgICAgICAg
ICBpZiAobG9nX2FycmF5WzFdKSB7CiAgICAgICAgICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwg
IiAlZiIsCiAgICAgICAgICAgICAgICAgICAgICAgIChsb2dfYXJyYXlbMV0pID9wb3coYmFzZV9h
cnJheVsxXSxtaW5fYXJyYXlbMV0rKGRvdWJsZSkoKDEwMDAgLTAuNSAqICh5ICsgdGtfbGFzdHkp
KS15Ym90KS8oZG91YmxlKSh5dG9wLXlib3QpKihtYXhfYXJyYXlbMV0tbWluX2FycmF5WzFdKSkg
Om1pbl9hcnJheVsxXSsoZG91YmxlKSgoMTAwMCAtMC41ICogKHkgKyB0a19sYXN0eSkpLXlib3Qp
Lyhkb3VibGUpKHl0b3AteWJvdCkqKG1heF9hcnJheVsxXS1taW5fYXJyYXlbMV0pKTsKICAgICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGZwcmludGYoZ3BvdXRmaWxlLCAiIHt9Iik7
CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGxvZ19hcnJheVs2XSkgewogICAgICAgICAg
ICAgICAgZnByaW50ZihncG91dGZpbGUsICIgJWYiLAogICAgICAgICAgICAgICAgICAgICAgICAo
bG9nX2FycmF5WzZdKSA/cG93KGJhc2VfYXJyYXlbNl0sbWluX2FycmF5WzZdKyhkb3VibGUpKDAu
NSAqICh4ICsgdGtfbGFzdHgpLXhsZWZ0KS8oZG91YmxlKSh4cmlnaHQteGxlZnQpKihtYXhfYXJy
YXlbNl0tbWluX2FycmF5WzZdKSkgOm1pbl9hcnJheVs2XSsoZG91YmxlKSgwLjUgKiAoeCArIHRr
X2xhc3R4KS14bGVmdCkvKGRvdWJsZSkoeHJpZ2h0LXhsZWZ0KSoobWF4X2FycmF5WzZdLW1pbl9h
cnJheVs2XSkpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgZnByaW50Zihn
cG91dGZpbGUsICIge30iKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAobG9nX2FycmF5
WzVdKSB7CiAgICAgICAgICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgIiAlZiIsCiAgICAgICAg
ICAgICAgICAgICAgICAgIChsb2dfYXJyYXlbNV0pID9wb3coYmFzZV9hcnJheVs1XSxtaW5fYXJy
YXlbNV0rKGRvdWJsZSkoKDEwMDAgLTAuNSAqICh5ICsgdGtfbGFzdHkpKS15Ym90KS8oZG91Ymxl
KSh5dG9wLXlib3QpKihtYXhfYXJyYXlbNV0tbWluX2FycmF5WzVdKSkgOm1pbl9hcnJheVs1XSso
ZG91YmxlKSgoMTAwMCAtMC41ICogKHkgKyB0a19sYXN0eSkpLXlib3QpLyhkb3VibGUpKHl0b3At
eWJvdCkqKG1heF9hcnJheVs1XS1taW5fYXJyYXlbNV0pKTsKICAgICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgICAgIGZwcmludGYoZ3BvdXRmaWxlLCAiIHt9Iik7CiAgICAgICAgICAgIH0K
ICAgICAgICAgICAgZnByaW50ZihncG91dGZpbGUsICJcIlxuIik7CiAgICAgICAgfQogICAgfSBl
bHNlIHsKICAgICAgICBpZiAodGtfcGVybCkgewogICAgICAgICAgICBmcHJpbnRmKGdwb3V0Zmls
ZSwgIjtcbiIpOwogICAgICAgIH0KICAgIH0KCgoKICAgIHRrX2xhc3R4ID0geDsKICAgIHRrX2xh
c3R5ID0geTsKfQoKCgoKCnN0YXRpYyB2b2lkClRLX3B1dF90ZXh0KHgsIHksIHN0cikKdW5zaWdu
ZWQgaW50IHgsIHk7CmNoYXIgKnN0cjsKewogICAgeSA9IDEwMDAgLSB5OwogICAgaWYgKHRrX3Bl
cmwpIHsKICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwiJGNhbi0+Y3JlYXRlVGV4dCgkY214ICog
JWQgLyAxMDAwLCAkY215ICogJWQgLyAxMDAwLCAtdGV4dCA9PiBxeyVzfSwgLWZpbGwgPT4gcXsl
c30sIC1hbmNob3IgPT4gJyVzJywgKGRlZmluZWQgJGZvbnQgPyAoLWZvbnQgPT4gJGZvbnQpIDog
KCkpKTtcbiIsCgoKCgoKICAgICAgICAgICAgICAgIHgsIHksIHN0ciwgdGtfY29sb3JzW3RrX2Nv
bG9yXSwgdGtfYW5jaG9yKTsKICAgIH0gZWxzZSB7CiAgICAgICAgZnByaW50ZihncG91dGZpbGUs
ImV2YWwgJGNhbiBjcmVhdGUgdGV4dCBbZXhwciAkY214ICogJWQgLzEwMDBdIFtleHByICRjbXkg
KiAlZCAvMTAwMF0gLXRleHQgXFx7JXNcXH0gLWZpbGwgJXMgLWFuY2hvciAlcyBbZXhwciBbaW5m
byBleGlzdHMgZm9udF0/XCItZm9udCBcXCRmb250XCI6e31dXG4iLAoKCgoKCiAgICAgICAgICAg
ICAgICB4LCB5LCBzdHIsIHRrX2NvbG9yc1t0a19jb2xvcl0sIHRrX2FuY2hvcik7CiAgICB9Cn0K
CnN0YXRpYyBpbnQKVEtfanVzdGlmeV90ZXh0KGFuY2hvcikKZW51bSBKVVNUSUZZIGFuY2hvcjsK
ewogICAgaW50IHJldHVybl92YWx1ZTsKCiAgICBzd2l0Y2ggKGFuY2hvcikgewogICAgY2FzZSBS
SUdIVDoKICAgICAgICAoX19leHRlbnNpb25fXyAoX19idWlsdGluX2NvbnN0YW50X3AgKCJlIikg
PyAoKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCJlIikgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZv
aWQgKikoImUiKSA9PSAxKSAmJiBzdHJsZW4gKCJlIikgKyAxIDw9IDggPyBfX3N0cmNweV9zbWFs
bCAodGtfYW5jaG9yLCBfX2V4dGVuc2lvbl9fICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAo
X19jb25zdCBjaGFyICopICgiZSIpKVswICsgMV0gPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBj
aGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJlIikpWzBdKSwgX19leHRlbnNpb25fXyAoKChfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoImUiKSlbNCArIDFdIDw8IDgg
fCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiZSIpKVs0XSks
IF9fZXh0ZW5zaW9uX18gKCgoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh
ciAqKSAoImUiKSlbMCArIDNdIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19j
b25zdCBjaGFyICopICgiZSIpKVswICsgMl0pIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hh
ciAqKSAoX19jb25zdCBjaGFyICopICgiZSIpKVswICsgMV0pIDw8IDggfCAoKF9fY29uc3QgdW5z
aWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiZSIpKVswXSksIF9fZXh0ZW5zaW9uX18g
KCgoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoImUiKSlbNCAr
IDNdIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgi
ZSIpKVs0ICsgMl0pIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBj
aGFyICopICgiZSIpKVs0ICsgMV0pIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAo
X19jb25zdCBjaGFyICopICgiZSIpKVs0XSksIHN0cmxlbiAoImUiKSArIDEpIDogKGNoYXIgKikg
bWVtY3B5ICh0a19hbmNob3IsICJlIiwgc3RybGVuICgiZSIpICsgMSkpIDogc3RyY3B5ICh0a19h
bmNob3IsICJlIikpKTsKICAgICAgICByZXR1cm5fdmFsdWUgPSAxOwogICAgICAgIGJyZWFrOwog
ICAgY2FzZSBDRU5UUkU6CiAgICAgICAgKF9fZXh0ZW5zaW9uX18gKF9fYnVpbHRpbl9jb25zdGFu
dF9wICgiY2VudGVyIikgPyAoKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCJjZW50ZXIiKSArIDEp
IC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgiY2VudGVyIikgPT0gMSkgJiYgc3RybGVuICgiY2Vu
dGVyIikgKyAxIDw9IDggPyBfX3N0cmNweV9zbWFsbCAodGtfYW5jaG9yLCBfX2V4dGVuc2lvbl9f
ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiY2VudGVyIikp
WzAgKyAxXSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAq
KSAoImNlbnRlciIpKVswXSksIF9fZXh0ZW5zaW9uX18gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFy
ICopIChfX2NvbnN0IGNoYXIgKikgKCJjZW50ZXIiKSlbNCArIDFdIDw8IDggfCAoKF9fY29uc3Qg
dW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiY2VudGVyIikpWzRdKSwgX19leHRl
bnNpb25fXyAoKCgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgi
Y2VudGVyIikpWzAgKyAzXSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29u
c3QgY2hhciAqKSAoImNlbnRlciIpKVswICsgMl0pIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQg
Y2hhciAqKSAoX19jb25zdCBjaGFyICopICgiY2VudGVyIikpWzAgKyAxXSkgPDwgOCB8ICgoX19j
b25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJjZW50ZXIiKSlbMF0pLCBf
X2V4dGVuc2lvbl9fICgoKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIg
KikgKCJjZW50ZXIiKSlbNCArIDNdIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAo
X19jb25zdCBjaGFyICopICgiY2VudGVyIikpWzQgKyAyXSkgPDwgOCB8ICgoX19jb25zdCB1bnNp
Z25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJjZW50ZXIiKSlbNCArIDFdKSA8PCA4IHwg
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoImNlbnRlciIpKVs0
XSksIHN0cmxlbiAoImNlbnRlciIpICsgMSkgOiAoY2hhciAqKSBtZW1jcHkgKHRrX2FuY2hvciwg
ImNlbnRlciIsIHN0cmxlbiAoImNlbnRlciIpICsgMSkpIDogc3RyY3B5ICh0a19hbmNob3IsICJj
ZW50ZXIiKSkpOwogICAgICAgIHJldHVybl92YWx1ZSA9IDE7CiAgICAgICAgYnJlYWs7CiAgICBj
YXNlIExFRlQ6CiAgICAgICAgKF9fZXh0ZW5zaW9uX18gKF9fYnVpbHRpbl9jb25zdGFudF9wICgi
dyIpID8gKCgoc2l6ZV90KShjb25zdCB2b2lkICopKCgidyIpICsgMSkgLSAoc2l6ZV90KShjb25z
dCB2b2lkICopKCJ3IikgPT0gMSkgJiYgc3RybGVuICgidyIpICsgMSA8PSA4ID8gX19zdHJjcHlf
c21hbGwgKHRrX2FuY2hvciwgX19leHRlbnNpb25fXyAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIg
KikgKF9fY29uc3QgY2hhciAqKSAoInciKSlbMCArIDFdIDw8IDggfCAoKF9fY29uc3QgdW5zaWdu
ZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgidyIpKVswXSksIF9fZXh0ZW5zaW9uX18gKCgo
X19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJ3IikpWzQgKyAxXSA8
PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoInciKSlb
NF0pLCBfX2V4dGVuc2lvbl9fICgoKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0
IGNoYXIgKikgKCJ3IikpWzAgKyAzXSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikg
KF9fY29uc3QgY2hhciAqKSAoInciKSlbMCArIDJdKSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoInciKSlbMCArIDFdKSA8PCA4IHwgKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoInciKSlbMF0pLCBfX2V4dGVuc2lv
bl9fICgoKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJ3Iikp
WzQgKyAzXSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAq
KSAoInciKSlbNCArIDJdKSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29u
c3QgY2hhciAqKSAoInciKSlbNCArIDFdKSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIg
KikgKF9fY29uc3QgY2hhciAqKSAoInciKSlbNF0pLCBzdHJsZW4gKCJ3IikgKyAxKSA6IChjaGFy
ICopIG1lbWNweSAodGtfYW5jaG9yLCAidyIsIHN0cmxlbiAoInciKSArIDEpKSA6IHN0cmNweSAo
dGtfYW5jaG9yLCAidyIpKSk7CiAgICAgICAgcmV0dXJuX3ZhbHVlID0gMTsKICAgICAgICBicmVh
azsKICAgIGRlZmF1bHQ6CiAgICAgICAgKF9fZXh0ZW5zaW9uX18gKF9fYnVpbHRpbl9jb25zdGFu
dF9wICgidyIpID8gKCgoc2l6ZV90KShjb25zdCB2b2lkICopKCgidyIpICsgMSkgLSAoc2l6ZV90
KShjb25zdCB2b2lkICopKCJ3IikgPT0gMSkgJiYgc3RybGVuICgidyIpICsgMSA8PSA4ID8gX19z
dHJjcHlfc21hbGwgKHRrX2FuY2hvciwgX19leHRlbnNpb25fXyAoKChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoInciKSlbMCArIDFdIDw8IDggfCAoKF9fY29uc3Qg
dW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgidyIpKVswXSksIF9fZXh0ZW5zaW9u
X18gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJ3IikpWzQg
KyAxXSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAo
InciKSlbNF0pLCBfX2V4dGVuc2lvbl9fICgoKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf
X2NvbnN0IGNoYXIgKikgKCJ3IikpWzAgKyAzXSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNo
YXIgKikgKF9fY29uc3QgY2hhciAqKSAoInciKSlbMCArIDJdKSA8PCA4IHwgKChfX2NvbnN0IHVu
c2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoInciKSlbMCArIDFdKSA8PCA4IHwgKChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoInciKSlbMF0pLCBfX2V4
dGVuc2lvbl9fICgoKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KCJ3IikpWzQgKyAzXSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg
Y2hhciAqKSAoInciKSlbNCArIDJdKSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikg
KF9fY29uc3QgY2hhciAqKSAoInciKSlbNCArIDFdKSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoInciKSlbNF0pLCBzdHJsZW4gKCJ3IikgKyAxKSA6
IChjaGFyICopIG1lbWNweSAodGtfYW5jaG9yLCAidyIsIHN0cmxlbiAoInciKSArIDEpKSA6IHN0
cmNweSAodGtfYW5jaG9yLCAidyIpKSk7CiAgICAgICAgcmV0dXJuX3ZhbHVlID0gMDsKICAgIH0K
ICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cn0KCnN0YXRpYyBpbnQKVEtfc2V0X2ZvbnQoZm9udCkK
Y2hhciAqZm9udDsKewogICAgaWYgKCFmb250IHx8ICpmb250ID09ICgnXDAnKSkgewogICAgICAg
IGlmICh0a19wZXJsKQogICAgICAgICAgICBmcHV0cygidW5kZWYgJGZvbnQ7XG4iLCBncG91dGZp
bGUpOwogICAgICAgIGVsc2UKICAgICAgICAgICAgZnB1dHMoImNhdGNoIHt1bnNldCAkZm9udH1c
biIsIGdwb3V0ZmlsZSk7CiAgICB9IGVsc2UgewogICAgICAgIGNoYXIgKm5hbWU7CiAgICAgICAg
aW50IHNpemUgPSAwOwogICAgICAgIHNpemVfdCBzZXAgPSBfX2V4dGVuc2lvbl9fICh7IGNoYXIg
X19yMCwgX19yMSwgX19yMjsgKF9fYnVpbHRpbl9jb25zdGFudF9wICgiLCIpICYmICgoc2l6ZV90
KShjb25zdCB2b2lkICopKCgiLCIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKCIsIikg
PT0gMSkgPyAoKF9fcjAgPSAoKF9fY29uc3QgY2hhciAqKSAoIiwiKSlbMF0sIF9fcjAgPT0gJ1ww
JykgPyBzdHJsZW4gKGZvbnQpIDogKChfX3IxID0gKChfX2NvbnN0IGNoYXIgKikgKCIsIikpWzFd
LCBfX3IxID09ICdcMCcpID8gX19zdHJjc3BuX2MxIChmb250LCBfX3IwKSA6ICgoX19yMiA9ICgo
X19jb25zdCBjaGFyICopICgiLCIpKVsyXSwgX19yMiA9PSAnXDAnKSA/IF9fc3RyY3Nwbl9jMiAo
Zm9udCwgX19yMCwgX19yMSkgOiAoKChfX2NvbnN0IGNoYXIgKikgKCIsIikpWzNdID09ICdcMCcg
PyBfX3N0cmNzcG5fYzMgKGZvbnQsIF9fcjAsIF9fcjEsIF9fcjIpIDogc3RyY3NwbiAoZm9udCwg
IiwiKSkpKSkgOiBzdHJjc3BuIChmb250LCAiLCIpKTsgfSk7CgogICAgICAgIG5hbWUgPSBtYWxs
b2Moc2VwICsgMSk7CiAgICAgICAgaWYgKCFuYW1lKQogICAgICAgICAgICByZXR1cm4gMDsKICAg
ICAgICAoX19leHRlbnNpb25fXyAoX19idWlsdGluX2NvbnN0YW50X3AgKGZvbnQpICYmIF9fYnVp
bHRpbl9jb25zdGFudF9wIChzZXApID8gKHN0cmxlbiAoZm9udCkgKyAxID49ICgoc2l6ZV90KSAo
c2VwKSkgPyAoY2hhciAqKSBtZW1jcHkgKG5hbWUsIGZvbnQsIHNlcCkgOiBzdHJuY3B5IChuYW1l
LCBmb250LCBzZXApKSA6IHN0cm5jcHkgKG5hbWUsIGZvbnQsIHNlcCkpKTsKICAgICAgICBuYW1l
W3NlcF0gPSAoJ1wwJyk7CiAgICAgICAgaWYgKHNlcCA8IHN0cmxlbihmb250KSkKICAgICAgICAg
ICAgc3NjYW5mKCYoZm9udFtzZXAgKyAxXSksICIlZCIsICZzaXplKTsKICAgICAgICBpZiAodGtf
cGVybCkgewogICAgICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwiaWYgKCRjYW4tPmNhbignZm9u
dENyZWF0ZScpKSB7XG4kZm9udCA9ICRjYW4tPmZvbnRDcmVhdGUoLWZhbWlseSA9PiBxeyVzfSIs
CgoKICAgICAgICAgICAgICAgICAgICBuYW1lKTsKICAgICAgICAgICAgaWYgKHNpemUpCiAgICAg
ICAgICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgIiwgLXNpemUgPT4gJWQiLCBzaXplKTsKICAg
ICAgICAgICAgZnB1dHMoIik7XG59XG4iLCBncG91dGZpbGUpOwogICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgIGZwcmludGYoZ3BvdXRmaWxlLCAic2V0IGZvbnQgW2ZvbnQgY3JlYXRlIC1mYW1p
bHkgJXMiLCBuYW1lKTsKICAgICAgICAgICAgaWYgKHNpemUpCiAgICAgICAgICAgICAgICBmcHJp
bnRmKGdwb3V0ZmlsZSwgIiAtc2l6ZSAlZCIsIHNpemUpOwogICAgICAgICAgICBmcHV0cygiXVxu
IiwgZ3BvdXRmaWxlKTsKICAgICAgICB9CiAgICAgICAgZnJlZShuYW1lKTsKICAgIH0KICAgIHJl
dHVybiAxOwp9CgpzdGF0aWMgdm9pZApUS190ZXh0KCkKewojIDQ3OSAidGVybS90a2NhbnZhcy50
cm0iCiAgICBpZiAodGtfcGVybCkgewogICAgICAgIGZwdXRzKCJ9O1xuIiwgZ3BvdXRmaWxlKTsK
ICAgICAgICBpZiAoIWlzXzNkX3Bsb3QpIHsKICAgICAgICAgICAgZnB1dHMoInN1YiBnbnVwbG90
X3Bsb3RhcmVhIHtcbiIsIGdwb3V0ZmlsZSk7CiAgICAgICAgICAgIGZwcmludGYoZ3BvdXRmaWxl
LAogICAgICAgICAgICAgICAgICAgICJyZXR1cm4gKCVkLCAlZCwgJWQsICVkKTtcbiIsCiAgICAg
ICAgICAgICAgICAgICAgeGxlZnQsIHhyaWdodCwgMTAwMCAtIHl0b3AsIDEwMDAgLSB5Ym90KTsK
ICAgICAgICAgICAgZnB1dHMoIn07XG4iLCBncG91dGZpbGUpOwogICAgICAgICAgICBmcHV0cygi
c3ViIGdudXBsb3RfYXhpc3JhbmdlcyB7XG4iLCBncG91dGZpbGUpOwogICAgICAgICAgICBmcHJp
bnRmKGdwb3V0ZmlsZSwKICAgICAgICAgICAgICAgICAgICAicmV0dXJuICglZiwgJWYsICVmLCAl
ZiwgJWYsICVmLCAlZiwgJWYpO1xuIiwKICAgICAgICAgICAgICAgICAgICBtaW5fYXJyYXlbMl0s
IG1heF9hcnJheVsyXSwKICAgICAgICAgICAgICAgICAgICBtaW5fYXJyYXlbMV0sIG1heF9hcnJh
eVsxXSwKICAgICAgICAgICAgICAgICAgICBtaW5fYXJyYXlbNl0sIG1heF9hcnJheVs2XSwKICAg
ICAgICAgICAgICAgICAgICBtaW5fYXJyYXlbNV0sIG1heF9hcnJheVs1XSk7CiAgICAgICAgICAg
IGZwdXRzKCJ9O1xuIiwgZ3BvdXRmaWxlKTsKICAgICAgICAgICAgaWYgKHRrX2ludGVyYWN0aXZl
KSB7CiAgICAgICAgICAgICAgICBmcHV0cygic3ViIGdudXBsb3RfeHkge1xuIiwKICAgICAgICAg
ICAgICAgICAgICAgIGdwb3V0ZmlsZSk7CiAgICAgICAgICAgICAgICBmcHV0cygibXkgKCR3aW4s
ICR4MXMsICR5MXMsICR4MnMsICR5MnMsICR4MWUsICR5MWUsICR4MmUsICR5MmUsICR4MW0sICR5
MW0sICR4Mm0sICR5Mm0pID0gQF87XG4iLAogICAgICAgICAgICAgICAgICAgICAgZ3BvdXRmaWxl
KTsKICAgICAgICAgICAgICAgIGZwdXRzKCJpZiAoZGVmaW5lZCAmdXNlcl9nbnVwbG90X2Nvb3Jk
aW5hdGVzKSB7XG4iLAogICAgICAgICAgICAgICAgICAgICAgZ3BvdXRmaWxlKTsKICAgICAgICAg
ICAgICAgIGZwdXRzKCJteSAkaWQgPSAkd2luLT5maW5kKCd3aXRodGFnJywgJ2N1cnJlbnQnKTtc
biIsCiAgICAgICAgICAgICAgICAgICAgICBncG91dGZpbGUpOwogICAgICAgICAgICAgICAgZnB1
dHMoInVzZXJfZ251cGxvdF9jb29yZGluYXRlcyAkd2luLCAkaWQsICR4MXMsICR5MXMsICR4MnMs
ICR5MnMsICR4MWUsICR5MWUsICR4MmUsICR5MmUsICR4MW0sICR5MW0sICR4Mm0sICR5Mm1cbiIs
CiAgICAgICAgICAgICAgICAgICAgICBncG91dGZpbGUpOwogICAgICAgICAgICAgICAgZnB1dHMo
In0gZWxzZSB7XG4iLAogICAgICAgICAgICAgICAgICAgICAgZ3BvdXRmaWxlKTsKICAgICAgICAg
ICAgICAgIGZwdXRzKCJpZiAobGVuZ3RoKCR4MW0pPjApIHtwcmludCBcIiAkeDFtXCI7fSBlbHNl
IHtwcmludCBcIiBcIiwgMC41KigkeDFzKyR4MWUpO31cbiIsCiAgICAgICAgICAgICAgICAgICAg
ICBncG91dGZpbGUpOwogICAgICAgICAgICAgICAgZnB1dHMoImlmIChsZW5ndGgoJHkxbSk+MCkg
e3ByaW50IFwiICR5MW1cIjt9IGVsc2Uge3ByaW50IFwiIFwiLCAwLjUqKCR5MXMrJHkxZSk7fVxu
IiwKICAgICAgICAgICAgICAgICAgICAgIGdwb3V0ZmlsZSk7CiAgICAgICAgICAgICAgICBmcHV0
cygiaWYgKGxlbmd0aCgkeDJtKT4wKSB7cHJpbnQgXCIgJHgybVwiO30gZWxzZSB7cHJpbnQgXCIg
XCIsIDAuNSooJHgycyskeDJlKTt9XG4iLAogICAgICAgICAgICAgICAgICAgICAgZ3BvdXRmaWxl
KTsKICAgICAgICAgICAgICAgIGZwdXRzKCJpZiAobGVuZ3RoKCR5Mm0pPjApIHtwcmludCBcIiAk
eTJtXCI7fSBlbHNlIHtwcmludCBcIiBcIiwgMC41KigkeTJzKyR5MmUpO31cbiIsCiAgICAgICAg
ICAgICAgICAgICAgICBncG91dGZpbGUpOwogICAgICAgICAgICAgICAgZnB1dHMoInByaW50IFwi
XFxuXCJcbiIsCiAgICAgICAgICAgICAgICAgICAgICBncG91dGZpbGUpOwogICAgICAgICAgICAg
ICAgZnB1dHMoIn1cbiIsCiAgICAgICAgICAgICAgICAgICAgICBncG91dGZpbGUpOwogICAgICAg
ICAgICAgICAgZnB1dHMoIn07XG4iLCBncG91dGZpbGUpOwogICAgICAgICAgICB9CiAgICAgICAg
fQogICAgfSBlbHNlIHsKICAgICAgICBmcHV0cygifVxuIiwgZ3BvdXRmaWxlKTsKICAgICAgICBp
ZiAoIWlzXzNkX3Bsb3QpIHsKICAgICAgICAgICAgZnB1dHMoInByb2MgZ251cGxvdF9wbG90YXJl
YSB7fSB7XG4iLCBncG91dGZpbGUpOwogICAgICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwKICAg
ICAgICAgICAgICAgICAgICAicmV0dXJuIHslZCAlZCAlZCAlZH1cbiIsCiAgICAgICAgICAgICAg
ICAgICAgeGxlZnQsIHhyaWdodCwgMTAwMCAtIHl0b3AsIDEwMDAgLSB5Ym90KTsKICAgICAgICAg
ICAgZnB1dHMoIn1cbiIsIGdwb3V0ZmlsZSk7CiAgICAgICAgICAgIGZwdXRzKCJwcm9jIGdudXBs
b3RfYXhpc3JhbmdlcyB7fSB7XG4iLCBncG91dGZpbGUpOwogICAgICAgICAgICBmcHJpbnRmKGdw
b3V0ZmlsZSwKICAgICAgICAgICAgICAgICAgICAicmV0dXJuIHslZiAlZiAlZiAlZiAlZiAlZiAl
ZiAlZn1cbiIsCiAgICAgICAgICAgICAgICAgICAgbWluX2FycmF5WzJdLCBtYXhfYXJyYXlbMl0s
CiAgICAgICAgICAgICAgICAgICAgbWluX2FycmF5WzFdLCBtYXhfYXJyYXlbMV0sCiAgICAgICAg
ICAgICAgICAgICAgbWluX2FycmF5WzZdLCBtYXhfYXJyYXlbNl0sCiAgICAgICAgICAgICAgICAg
ICAgbWluX2FycmF5WzVdLCBtYXhfYXJyYXlbNV0pOwogICAgICAgICAgICBmcHV0cygifVxuIiwg
Z3BvdXRmaWxlKTsKICAgICAgICAgICAgaWYgKHRrX2ludGVyYWN0aXZlKSB7CiAgICAgICAgICAg
ICAgICBmcHV0cygicHJvYyBnbnVwbG90X3h5IHt3aW4geDFzIHkxcyB4MnMgeTJzIHgxZSB5MWUg
eDJlIHkyZSB4MW0geTFtIHgybSB5Mm19IHtcbiIsCiAgICAgICAgICAgICAgICAgICAgICBncG91
dGZpbGUpOwogICAgICAgICAgICAgICAgZnB1dHMoImlmIHsoW2xsZW5ndGggW2luZm8gY29tbWFu
ZHMgdXNlcl9nbnVwbG90X2Nvb3JkaW5hdGVzXV0pfSB7XG4iLAogICAgICAgICAgICAgICAgICAg
ICAgZ3BvdXRmaWxlKTsKICAgICAgICAgICAgICAgIGZwdXRzKCJzZXQgaWQgWyR3aW4gZmluZCB3
aXRodGFnIGN1cnJlbnRdXG4iLAogICAgICAgICAgICAgICAgICAgICAgZ3BvdXRmaWxlKTsKICAg
ICAgICAgICAgICAgIGZwdXRzKCJ1c2VyX2dudXBsb3RfY29vcmRpbmF0ZXMgJHdpbiAkaWQgJHgx
cyAkeTFzICR4MnMgJHkycyAkeDFlICR5MWUgJHgyZSAkeTJlICR4MW0gJHkxbSAkeDJtICR5Mm1c
biIsCiAgICAgICAgICAgICAgICAgICAgICBncG91dGZpbGUpOwogICAgICAgICAgICAgICAgZnB1
dHMoIn0gZWxzZSB7XG4iLCBncG91dGZpbGUpOwogICAgICAgICAgICAgICAgZnB1dHMoImlmIHtb
c3RyaW5nIGxlbmd0aCAkeDFtXT4wfSB7cHV0cyAtbm9uZXdsaW5lIFwiICR4MW1cIn0gZWxzZSB7
cHV0cyAtbm9uZXdsaW5lIFwiIFtleHByIDAuNSooJHgxcyskeDFlKV1cIn1cbiIsCiAgICAgICAg
ICAgICAgICAgICAgICBncG91dGZpbGUpOwogICAgICAgICAgICAgICAgZnB1dHMoImlmIHtbc3Ry
aW5nIGxlbmd0aCAkeTFtXT4wfSB7cHV0cyAtbm9uZXdsaW5lIFwiICR5MW1cIn0gZWxzZSB7cHV0
cyAtbm9uZXdsaW5lIFwiIFtleHByIDAuNSooJHkxcyskeTFlKV1cIn1cbiIsCiAgICAgICAgICAg
ICAgICAgICAgICBncG91dGZpbGUpOwogICAgICAgICAgICAgICAgZnB1dHMoImlmIHtbc3RyaW5n
IGxlbmd0aCAkeDJtXT4wfSB7cHV0cyAtbm9uZXdsaW5lIFwiICR4Mm1cIn0gZWxzZSB7cHV0cyAt
bm9uZXdsaW5lIFwiIFtleHByIDAuNSooJHgycyskeDJlKV1cIn1cbiIsCiAgICAgICAgICAgICAg
ICAgICAgICBncG91dGZpbGUpOwogICAgICAgICAgICAgICAgZnB1dHMoImlmIHtbc3RyaW5nIGxl
bmd0aCAkeTJtXT4wfSB7cHV0cyBcIiAkeTJtXCJ9IGVsc2Uge3B1dHMgXCIgW2V4cHIgMC41Kigk
eTJzKyR5MmUpXVwifVxuIiwKICAgICAgICAgICAgICAgICAgICAgIGdwb3V0ZmlsZSk7CiAgICAg
ICAgICAgICAgICBmcHV0cygifVxuIiwgZ3BvdXRmaWxlKTsKICAgICAgICAgICAgICAgIGZwdXRz
KCJ9XG4iLCBncG91dGZpbGUpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgZmZs
dXNoKGdwb3V0ZmlsZSk7Cn0KIyAzNDIgInRlcm0uaCIgMgojIDM2NCAidGVybS5oIgojIDEgInRl
cm0vZXBzb24udHJtIiAxCiMgNTggInRlcm0vZXBzb24udHJtIgojIDEgInRlcm0vZHJpdmVyLmgi
IDEKIyA1OSAidGVybS9lcHNvbi50cm0iIDIKIyA4NyAidGVybS9lcHNvbi50cm0iCnN0YXRpYyB2
b2lkIEVQU09OaW5pdCAodm9pZCk7CnN0YXRpYyB2b2lkIEVQU09OcmVzZXQgKHZvaWQpOwojIDEw
NCAidGVybS9lcHNvbi50cm0iCnN0YXRpYyB2b2lkIEVQU09OZ3JhcGhpY3MgKHZvaWQpOwpzdGF0
aWMgdm9pZCBFUFNPTnRleHQgKHZvaWQpOwoKCgoKCnN0YXRpYyB2b2lkIEVQUzE4MGdyYXBoaWNz
ICh2b2lkKTsKc3RhdGljIHZvaWQgRVBTMTgwdGV4dCAodm9pZCk7CiMgMTI2ICJ0ZXJtL2Vwc29u
LnRybSIKc3RhdGljIHZvaWQgRVBTNjBncmFwaGljcyAodm9pZCk7CgpzdGF0aWMgdm9pZCBUQU5E
WTYwdGV4dCAodm9pZCk7CgoKc3RhdGljIHZvaWQgT0tJREFUQXRleHQgKHZvaWQpOwoKCnN0YXRp
YyB2b2lkIEVQUzYwdGV4dCAodm9pZCk7CgoKCgpzdGF0aWMgdm9pZCBORUNvcHRpb25zICh2b2lk
KTsKc3RhdGljIHZvaWQgTkVDaW5pdCAodm9pZCk7CnN0YXRpYyB2b2lkIE5FQ2dyYXBoaWNzICh2
b2lkKTsKc3RhdGljIHZvaWQgTkVDdGV4dCAodm9pZCk7CnN0YXRpYyB2b2lkIE5FQ2xpbmV0eXBl
IChpbnQgbGluZXR5cGUpOwpzdGF0aWMgdm9pZCBORUNyZXNldCAodm9pZCk7CiMgMTU4ICJ0ZXJt
L2Vwc29uLnRybSIKc3RhdGljIHZvaWQgU1RBUkNpbml0ICh2b2lkKTsKc3RhdGljIHZvaWQgU1RB
UkNncmFwaGljcyAodm9pZCk7CnN0YXRpYyB2b2lkIFNUQVJDdGV4dCAodm9pZCk7CnN0YXRpYyB2
b2lkIFNUQVJDbGluZXR5cGUgKGludCBsaW5ldHlwZSk7CnN0YXRpYyB2b2lkIFNUQVJDcmVzZXQg
KHZvaWQpOwojIDE4OSAidGVybS9lcHNvbi50cm0iCnZvaWQgZXBzb25fZHVtcCAodm9pZCk7CgoK
CgpzdGF0aWMgdm9pZCBFUFNPTmluaXQoKQp7Cn0KCnN0YXRpYyB2b2lkIEVQU09OZ3JhcGhpY3Mo
KQp7CiAgICBiX2NoYXJzaXplKDApOwogICAgYl9tYWtlYml0bWFwKCh1bnNpZ25lZCBpbnQpICg1
MTIgKiB4c2l6ZSksCiAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGludCkgKDM4NCAqIHlzaXpl
KSwgMSk7Cn0KCgpzdGF0aWMgdm9pZCBFUFNPTnRleHQoKQp7CiAgICBlcHNvbl9kdW1wKCk7CiAg
ICBiX2ZyZWViaXRtYXAoKTsKfQoKCnN0YXRpYyB2b2lkIEVQU09OcmVzZXQoKQp7CgoKCn0KCgoK
dm9pZCBlcHNvbl9kdW1wKCkKewogICAgcmVnaXN0ZXIgdW5zaWduZWQgaW50IHg7CiAgICBpbnQg
ajsKICAgIGZvciAoaiA9IChiX3lzaXplIC8gOCkgLSAxOyBqID49IDA7IGotLSkgewoKICAgICAg
ICBmcHV0cygiXDAzM0pcMDMwIiwgZ3BvdXRmaWxlKTsKICAgICAgICBmcHV0cygiXHJcMDMzKlww
MDUiLCBncG91dGZpbGUpOwogICAgICAgICh2b2lkKSBmcHV0YygoY2hhcikgKGJfeHNpemUgJSAy
NTYpLCBncG91dGZpbGUpOwogICAgICAgICh2b2lkKSBmcHV0YygoY2hhcikgKGJfeHNpemUgLyAy
NTYpLCBncG91dGZpbGUpOwogICAgICAgIGZvciAoeCA9IDA7IHggPCBiX3hzaXplOyB4KyspIHsK
ICAgICAgICAgICAgKHZvaWQpIGZwdXRjKChjaGFyKSAoKigoKmJfcClbal0gKyB4KSksIGdwb3V0
ZmlsZSk7CiAgICAgICAgfQogICAgfQoKCgp9CiMgMjU0ICJ0ZXJtL2Vwc29uLnRybSIKdm9pZCBu
ZWNfZHVtcCAodm9pZCk7CnZvaWQgbmVjX2RyYWZ0X2R1bXAgKHZvaWQpOwoKCgoKCgpzdGF0aWMg
dW5zaWduZWQgaW50IG5lY2NvbG9yW10gPSB7IDEsIDgsIDQsIDIsIDEwLCAxMiwgNiwgMTQgfTsK
c3RhdGljIHVuc2lnbmVkIGludCBuZWNwY29sb3JbXSA9IHsgMCwgMiwgMSwgNCB9OwoKc3RhdGlj
IGludCBORUNtb2RlOwoKc3RhdGljIHZvaWQgTkVDb3B0aW9ucygpCnsKICAgIGlmICgoY190b2tl
biA+PSBudW1fdG9rZW5zIHx8IGVxdWFscyhjX3Rva2VuLCI7IikpKSB7CiAgICAgICAgKF9fZXh0
ZW5zaW9uX18gKF9fYnVpbHRpbl9jb25zdGFudF9wICgibW9ub2Nocm9tZSIpID8gKCgoc2l6ZV90
KShjb25zdCB2b2lkICopKCgibW9ub2Nocm9tZSIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lk
ICopKCJtb25vY2hyb21lIikgPT0gMSkgJiYgc3RybGVuICgibW9ub2Nocm9tZSIpICsgMSA8PSA4
ID8gX19zdHJjcHlfc21hbGwgKHRlcm1fb3B0aW9ucywgX19leHRlbnNpb25fXyAoKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIm1vbm9jaHJvbWUiKSlbMCArIDFd
IDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgibW9u
b2Nocm9tZSIpKVswXSksIF9fZXh0ZW5zaW9uX18gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikgKCJtb25vY2hyb21lIikpWzQgKyAxXSA8PCA4IHwgKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIm1vbm9jaHJvbWUiKSlbNF0pLCBf
X2V4dGVuc2lvbl9fICgoKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIg
KikgKCJtb25vY2hyb21lIikpWzAgKyAzXSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIg
KikgKF9fY29uc3QgY2hhciAqKSAoIm1vbm9jaHJvbWUiKSlbMCArIDJdKSA8PCA4IHwgKChfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIm1vbm9jaHJvbWUiKSlbMCAr
IDFdKSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAo
Im1vbm9jaHJvbWUiKSlbMF0pLCBfX2V4dGVuc2lvbl9fICgoKCgoX19jb25zdCB1bnNpZ25lZCBj
aGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJtb25vY2hyb21lIikpWzQgKyAzXSA8PCA4IHwgKChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIm1vbm9jaHJvbWUiKSlb
NCArIDJdKSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAq
KSAoIm1vbm9jaHJvbWUiKSlbNCArIDFdKSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIg
KikgKF9fY29uc3QgY2hhciAqKSAoIm1vbm9jaHJvbWUiKSlbNF0pLCBzdHJsZW4gKCJtb25vY2hy
b21lIikgKyAxKSA6IChjaGFyICopIG1lbWNweSAodGVybV9vcHRpb25zLCAibW9ub2Nocm9tZSIs
IHN0cmxlbiAoIm1vbm9jaHJvbWUiKSArIDEpKSA6IHN0cmNweSAodGVybV9vcHRpb25zLCAibW9u
b2Nocm9tZSIpKSk7CiAgICAgICAgTkVDbW9kZSA9ICdtJzsKICAgIH0gZWxzZSBpZiAoYWxtb3N0
X2VxdWFscyhjX3Rva2VuLCAibSRvbm9jaHJvbWUiKSkgewogICAgICAgIGNfdG9rZW4rKzsKICAg
ICAgICAoX19leHRlbnNpb25fXyAoX19idWlsdGluX2NvbnN0YW50X3AgKCJtb25vY2hyb21lIikg
PyAoKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCJtb25vY2hyb21lIikgKyAxKSAtIChzaXplX3Qp
KGNvbnN0IHZvaWQgKikoIm1vbm9jaHJvbWUiKSA9PSAxKSAmJiBzdHJsZW4gKCJtb25vY2hyb21l
IikgKyAxIDw9IDggPyBfX3N0cmNweV9zbWFsbCAodGVybV9vcHRpb25zLCBfX2V4dGVuc2lvbl9f
ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgibW9ub2Nocm9t
ZSIpKVswICsgMV0gPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNo
YXIgKikgKCJtb25vY2hyb21lIikpWzBdKSwgX19leHRlbnNpb25fXyAoKChfX2NvbnN0IHVuc2ln
bmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIm1vbm9jaHJvbWUiKSlbNCArIDFdIDw8IDgg
fCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgibW9ub2Nocm9t
ZSIpKVs0XSksIF9fZXh0ZW5zaW9uX18gKCgoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9f
Y29uc3QgY2hhciAqKSAoIm1vbm9jaHJvbWUiKSlbMCArIDNdIDw8IDggfCAoKF9fY29uc3QgdW5z
aWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgibW9ub2Nocm9tZSIpKVswICsgMl0pIDw8
IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgibW9ub2No
cm9tZSIpKVswICsgMV0pIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25z
dCBjaGFyICopICgibW9ub2Nocm9tZSIpKVswXSksIF9fZXh0ZW5zaW9uX18gKCgoKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIm1vbm9jaHJvbWUiKSlbNCArIDNd
IDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgibW9u
b2Nocm9tZSIpKVs0ICsgMl0pIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19j
b25zdCBjaGFyICopICgibW9ub2Nocm9tZSIpKVs0ICsgMV0pIDw8IDggfCAoKF9fY29uc3QgdW5z
aWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgibW9ub2Nocm9tZSIpKVs0XSksIHN0cmxl
biAoIm1vbm9jaHJvbWUiKSArIDEpIDogKGNoYXIgKikgbWVtY3B5ICh0ZXJtX29wdGlvbnMsICJt
b25vY2hyb21lIiwgc3RybGVuICgibW9ub2Nocm9tZSIpICsgMSkpIDogc3RyY3B5ICh0ZXJtX29w
dGlvbnMsICJtb25vY2hyb21lIikpKTsKICAgICAgICBORUNtb2RlID0gJ20nOwogICAgfSBlbHNl
IGlmIChhbG1vc3RfZXF1YWxzKGNfdG9rZW4sICJjJG9sb3IiKQogICAgICAgICAgICAgICB8fCBh
bG1vc3RfZXF1YWxzKGNfdG9rZW4sICJjJG9sb3VyIikpIHsKICAgICAgICBjX3Rva2VuKys7CiAg
ICAgICAgKF9fZXh0ZW5zaW9uX18gKF9fYnVpbHRpbl9jb25zdGFudF9wICgiY29sb3IiKSA/ICgo
KHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoImNvbG9yIikgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZv
aWQgKikoImNvbG9yIikgPT0gMSkgJiYgc3RybGVuICgiY29sb3IiKSArIDEgPD0gOCA/IF9fc3Ry
Y3B5X3NtYWxsICh0ZXJtX29wdGlvbnMsIF9fZXh0ZW5zaW9uX18gKCgoX19jb25zdCB1bnNpZ25l
ZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJjb2xvciIpKVswICsgMV0gPDwgOCB8ICgoX19j
b25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJjb2xvciIpKVswXSksIF9f
ZXh0ZW5zaW9uX18gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KCJjb2xvciIpKVs0ICsgMV0gPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikgKCJjb2xvciIpKVs0XSksIF9fZXh0ZW5zaW9uX18gKCgoKChfX2NvbnN0IHVu
c2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoImNvbG9yIikpWzAgKyAzXSA8PCA4IHwg
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoImNvbG9yIikpWzAg
KyAyXSkgPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KCJjb2xvciIpKVswICsgMV0pIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19j
b25zdCBjaGFyICopICgiY29sb3IiKSlbMF0pLCBfX2V4dGVuc2lvbl9fICgoKCgoX19jb25zdCB1
bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJjb2xvciIpKVs0ICsgM10gPDwgOCB8
ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJjb2xvciIpKVs0
ICsgMl0pIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop
ICgiY29sb3IiKSlbNCArIDFdKSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9f
Y29uc3QgY2hhciAqKSAoImNvbG9yIikpWzRdKSwgc3RybGVuICgiY29sb3IiKSArIDEpIDogKGNo
YXIgKikgbWVtY3B5ICh0ZXJtX29wdGlvbnMsICJjb2xvciIsIHN0cmxlbiAoImNvbG9yIikgKyAx
KSkgOiBzdHJjcHkgKHRlcm1fb3B0aW9ucywgImNvbG9yIikpKTsKICAgICAgICBORUNtb2RlID0g
J2MnOwogICAgfSBlbHNlIGlmIChhbG1vc3RfZXF1YWxzKGNfdG9rZW4sICJkJHJhZnQiKSkgewog
ICAgICAgIGNfdG9rZW4rKzsKICAgICAgICAoX19leHRlbnNpb25fXyAoX19idWlsdGluX2NvbnN0
YW50X3AgKCJkcmFmdCIpID8gKCgoc2l6ZV90KShjb25zdCB2b2lkICopKCgiZHJhZnQiKSArIDEp
IC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgiZHJhZnQiKSA9PSAxKSAmJiBzdHJsZW4gKCJkcmFm
dCIpICsgMSA8PSA4ID8gX19zdHJjcHlfc21hbGwgKHRlcm1fb3B0aW9ucywgX19leHRlbnNpb25f
XyAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoImRyYWZ0Iikp
WzAgKyAxXSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAq
KSAoImRyYWZ0IikpWzBdKSwgX19leHRlbnNpb25fXyAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIg
KikgKF9fY29uc3QgY2hhciAqKSAoImRyYWZ0IikpWzQgKyAxXSA8PCA4IHwgKChfX2NvbnN0IHVu
c2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoImRyYWZ0IikpWzRdKSwgX19leHRlbnNp
b25fXyAoKCgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiZHJh
ZnQiKSlbMCArIDNdIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBj
aGFyICopICgiZHJhZnQiKSlbMCArIDJdKSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIg
KikgKF9fY29uc3QgY2hhciAqKSAoImRyYWZ0IikpWzAgKyAxXSkgPDwgOCB8ICgoX19jb25zdCB1
bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJkcmFmdCIpKVswXSksIF9fZXh0ZW5z
aW9uX18gKCgoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoImRy
YWZ0IikpWzQgKyAzXSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg
Y2hhciAqKSAoImRyYWZ0IikpWzQgKyAyXSkgPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFy
ICopIChfX2NvbnN0IGNoYXIgKikgKCJkcmFmdCIpKVs0ICsgMV0pIDw8IDggfCAoKF9fY29uc3Qg
dW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiZHJhZnQiKSlbNF0pLCBzdHJsZW4g
KCJkcmFmdCIpICsgMSkgOiAoY2hhciAqKSBtZW1jcHkgKHRlcm1fb3B0aW9ucywgImRyYWZ0Iiwg
c3RybGVuICgiZHJhZnQiKSArIDEpKSA6IHN0cmNweSAodGVybV9vcHRpb25zLCAiZHJhZnQiKSkp
OwogICAgICAgIE5FQ21vZGUgPSAnZCc7CiAgICB9IGVsc2UgewoKICAgICAgICAoX19leHRlbnNp
b25fXyAoX19idWlsdGluX2NvbnN0YW50X3AgKCJtb25vY2hyb21lIikgPyAoKChzaXplX3QpKGNv
bnN0IHZvaWQgKikoKCJtb25vY2hyb21lIikgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKiko
Im1vbm9jaHJvbWUiKSA9PSAxKSAmJiBzdHJsZW4gKCJtb25vY2hyb21lIikgKyAxIDw9IDggPyBf
X3N0cmNweV9zbWFsbCAodGVybV9vcHRpb25zLCBfX2V4dGVuc2lvbl9fICgoKF9fY29uc3QgdW5z
aWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgibW9ub2Nocm9tZSIpKVswICsgMV0gPDwg
OCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJtb25vY2hy
b21lIikpWzBdKSwgX19leHRlbnNpb25fXyAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9f
Y29uc3QgY2hhciAqKSAoIm1vbm9jaHJvbWUiKSlbNCArIDFdIDw8IDggfCAoKF9fY29uc3QgdW5z
aWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgibW9ub2Nocm9tZSIpKVs0XSksIF9fZXh0
ZW5zaW9uX18gKCgoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAo
Im1vbm9jaHJvbWUiKSlbMCArIDNdIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAo
X19jb25zdCBjaGFyICopICgibW9ub2Nocm9tZSIpKVswICsgMl0pIDw8IDggfCAoKF9fY29uc3Qg
dW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgibW9ub2Nocm9tZSIpKVswICsgMV0p
IDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgibW9u
b2Nocm9tZSIpKVswXSksIF9fZXh0ZW5zaW9uX18gKCgoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIg
KikgKF9fY29uc3QgY2hhciAqKSAoIm1vbm9jaHJvbWUiKSlbNCArIDNdIDw8IDggfCAoKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgibW9ub2Nocm9tZSIpKVs0ICsg
Ml0pIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgi
bW9ub2Nocm9tZSIpKVs0ICsgMV0pIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAo
X19jb25zdCBjaGFyICopICgibW9ub2Nocm9tZSIpKVs0XSksIHN0cmxlbiAoIm1vbm9jaHJvbWUi
KSArIDEpIDogKGNoYXIgKikgbWVtY3B5ICh0ZXJtX29wdGlvbnMsICJtb25vY2hyb21lIiwgc3Ry
bGVuICgibW9ub2Nocm9tZSIpICsgMSkpIDogc3RyY3B5ICh0ZXJtX29wdGlvbnMsICJtb25vY2hy
b21lIikpKTsKICAgICAgICBORUNtb2RlID0gJ20nOwogICAgICAgIGludF9lcnJvcigibW9kZXM6
IGNvbG9yLCBtb25vY2hyb21lLCBkcmFmdCIsIGNfdG9rZW4pOwogICAgfQp9CgpzdGF0aWMgdm9p
ZCBORUNpbml0KCkKewp9CgpzdGF0aWMgdm9pZCBORUNncmFwaGljcygpCnsKICAgIGJfY2hhcnNp
emUoMCk7CiAgICBiX21ha2ViaXRtYXAoKHVuc2lnbmVkIGludCkgKDQwMCAqIHhzaXplKSwKICAg
ICAgICAgICAgICAgICAodW5zaWduZWQgaW50KSAoMzIwICogeXNpemUpLCAoTkVDbW9kZSA9PSAn
YycgPyA0IDogMSkpOwp9CgpzdGF0aWMgdm9pZCBORUN0ZXh0KCkKewogICAgaWYgKE5FQ21vZGUg
PT0gJ2QnKSB7CiAgICAgICAgbmVjX2RyYWZ0X2R1bXAoKTsKICAgIH0gZWxzZSB7CiAgICAgICAg
bmVjX2R1bXAoKTsKICAgIH0KICAgIGJfZnJlZWJpdG1hcCgpOwp9CgpzdGF0aWMgdm9pZCBORUNs
aW5ldHlwZShsaW5ldHlwZSkKaW50IGxpbmV0eXBlOwp7CiAgICBpZiAoTkVDbW9kZSA9PSAnYycp
IHsKICAgICAgICBpZiAobGluZXR5cGUgPj0gNikKICAgICAgICAgICAgbGluZXR5cGUgJT0gNjsK
ICAgICAgICBiX3NldHZhbHVlKG5lY2NvbG9yW2xpbmV0eXBlICsgMl0pOwogICAgfSBlbHNlIHsK
ICAgICAgICBiX3NldGxpbmV0eXBlKGxpbmV0eXBlKTsKICAgIH0KfQoKCgpzdGF0aWMgdm9pZCBO
RUNyZXNldCgpCnsKCgoKfQoKCgp2b2lkIG5lY19kdW1wKCkKewogICAgdW5zaWduZWQgaW50IHg7
CiAgICB1bnNpZ25lZCBpbnQgcGxhbmUsIG9mZnNldDsKICAgIGludCBqOwogICAgdW5zaWduZWQg
aW50IGNvbHVtbjg7CiAgICB1bnNpZ25lZCBsb25nIGNvbHVtbjI0OwogICAgY2hhciBjb2x1bW4z
LCBjb2x1bW4yLCBjb2x1bW4xOwogICAgZnB1dHMoIlwwMzNQXDAzM2xcMDA1IiwgZ3BvdXRmaWxl
KTsKICAgIGZvciAoaiA9IChiX3lzaXplIC8gOCkgLSAxOyBqID49IDA7IGotLSkgewogICAgICAg
IGZwdXRzKCJcMDMzSlwwMzAiLCBncG91dGZpbGUpOwogICAgICAgIGZvciAocGxhbmUgPSAwOyBw
bGFuZSA8IGJfcGxhbmVzOyBwbGFuZSsrKSB7CiAgICAgICAgICAgIG9mZnNldCA9IHBsYW5lICog
Yl9wc2l6ZTsKICAgICAgICAgICAgaWYgKGJfcGxhbmVzID4gMSkgewoKICAgICAgICAgICAgICAg
IGZwdXRzKCJcMDMzciIsIGdwb3V0ZmlsZSk7CiAgICAgICAgICAgICAgICAodm9pZCkgZnB1dGMo
KGNoYXIpIG5lY3Bjb2xvcltwbGFuZV0sIGdwb3V0ZmlsZSk7CiAgICAgICAgICAgIH0KCiAgICAg
ICAgICAgIGZwdXRzKCJcclwwMzMqXDA0NyIsIGdwb3V0ZmlsZSk7CiAgICAgICAgICAgICh2b2lk
KSBmcHV0YygoY2hhcikgKChiX3hzaXplICogMykgJSAyNTYpLCBncG91dGZpbGUpOwogICAgICAg
ICAgICAodm9pZCkgZnB1dGMoKGNoYXIpICgoYl94c2l6ZSAqIDMpIC8gMjU2KSwgZ3BvdXRmaWxl
KTsKICAgICAgICAgICAgZm9yICh4ID0gMDsgeCA8IGJfeHNpemU7IHgrKykgewogICAgICAgICAg
ICAgICAgY29sdW1uOCA9ICh1bnNpZ25lZCBpbnQpICgqKCgqYl9wKVtqICsgb2Zmc2V0XSArIHgp
KTsKICAgICAgICAgICAgICAgIGNvbHVtbjI0ID0gMDsKICAgICAgICAgICAgICAgIGlmIChjb2x1
bW44ICYgMHgwMSkKICAgICAgICAgICAgICAgICAgICBjb2x1bW4yNCB8PSAobG9uZykgMHgwMDAw
MDc7CiAgICAgICAgICAgICAgICBpZiAoY29sdW1uOCAmIDB4MDIpCiAgICAgICAgICAgICAgICAg
ICAgY29sdW1uMjQgfD0gKGxvbmcpIDB4MDAwMDM4OwogICAgICAgICAgICAgICAgaWYgKGNvbHVt
bjggJiAweDA0KQogICAgICAgICAgICAgICAgICAgIGNvbHVtbjI0IHw9IChsb25nKSAweDAwMDFj
MDsKICAgICAgICAgICAgICAgIGlmIChjb2x1bW44ICYgMHgwOCkKICAgICAgICAgICAgICAgICAg
ICBjb2x1bW4yNCB8PSAobG9uZykgMHgwMDBlMDA7CiAgICAgICAgICAgICAgICBpZiAoY29sdW1u
OCAmIDB4MTApCiAgICAgICAgICAgICAgICAgICAgY29sdW1uMjQgfD0gKGxvbmcpIDB4MDA3MDAw
OwogICAgICAgICAgICAgICAgaWYgKGNvbHVtbjggJiAweDIwKQogICAgICAgICAgICAgICAgICAg
IGNvbHVtbjI0IHw9IChsb25nKSAweDAzODAwMDsKICAgICAgICAgICAgICAgIGlmIChjb2x1bW44
ICYgMHg0MCkKICAgICAgICAgICAgICAgICAgICBjb2x1bW4yNCB8PSAobG9uZykgMHgxYzAwMDA7
CiAgICAgICAgICAgICAgICBpZiAoY29sdW1uOCAmIDB4ODApCiAgICAgICAgICAgICAgICAgICAg
Y29sdW1uMjQgfD0gKGxvbmcpIDB4ZTAwMDAwOwogICAgICAgICAgICAgICAgY29sdW1uMSA9IChj
aGFyKSAoY29sdW1uMjQgJiAobG9uZykgMHhmZik7CiAgICAgICAgICAgICAgICBjb2x1bW4yID0g
KGNoYXIpICgoY29sdW1uMjQgPj4gOCkgJiAobG9uZykgMHhmZik7CiAgICAgICAgICAgICAgICBj
b2x1bW4zID0gKGNoYXIpICgoY29sdW1uMjQgPj4gMTYpICYgKGxvbmcpIDB4ZmYpOwogICAgICAg
ICAgICAgICAgKHZvaWQpIGZwdXRjKGNvbHVtbjMsIGdwb3V0ZmlsZSk7CiAgICAgICAgICAgICAg
ICAodm9pZCkgZnB1dGMoY29sdW1uMiwgZ3BvdXRmaWxlKTsKICAgICAgICAgICAgICAgICh2b2lk
KSBmcHV0Yyhjb2x1bW4xLCBncG91dGZpbGUpOwogICAgICAgICAgICAgICAgKHZvaWQpIGZwdXRj
KGNvbHVtbjMsIGdwb3V0ZmlsZSk7CiAgICAgICAgICAgICAgICAodm9pZCkgZnB1dGMoY29sdW1u
MiwgZ3BvdXRmaWxlKTsKICAgICAgICAgICAgICAgICh2b2lkKSBmcHV0Yyhjb2x1bW4xLCBncG91
dGZpbGUpOwogICAgICAgICAgICAgICAgKHZvaWQpIGZwdXRjKGNvbHVtbjMsIGdwb3V0ZmlsZSk7
CiAgICAgICAgICAgICAgICAodm9pZCkgZnB1dGMoY29sdW1uMiwgZ3BvdXRmaWxlKTsKICAgICAg
ICAgICAgICAgICh2b2lkKSBmcHV0Yyhjb2x1bW4xLCBncG91dGZpbGUpOwogICAgICAgICAgICB9
CiAgICAgICAgfQogICAgfQogICAgZnB1dHMoIlxyXDAzM2wiLCBncG91dGZpbGUpOwogICAgKHZv
aWQpIGZwdXRjKCdcMCcsIGdwb3V0ZmlsZSk7CiAgICBpZiAoYl9wbGFuZXMgPiAxKSB7CiAgICAg
ICAgZnByaW50ZihncG91dGZpbGUsICJcMDMzciIpOwogICAgICAgICh2b2lkKSBmcHV0YygnXDAn
LCBncG91dGZpbGUpOwogICAgfQoKCgoKCgp9CgoKdm9pZCBuZWNfZHJhZnRfZHVtcCgpCnsKICAg
IHVuc2lnbmVkIGludCB4OwogICAgdW5zaWduZWQgaW50IHBsYW5lLCBvZmZzZXQ7CiAgICBpbnQg
ajsKICAgIGZwdXRzKCJcMDMzUFwwMzNsXDAwNVxyIiwgZ3BvdXRmaWxlKTsKICAgIGZvciAoaiA9
IChiX3lzaXplIC8gOCkgLSAxOyBqID49IDA7IGotLSkgewogICAgICAgIGZwdXRzKCJcMDMzSlww
MzAiLCBncG91dGZpbGUpOwogICAgICAgIGZvciAocGxhbmUgPSAwOyBwbGFuZSA8IGJfcGxhbmVz
OyBwbGFuZSsrKSB7CiAgICAgICAgICAgIG9mZnNldCA9IHBsYW5lICogYl9wc2l6ZTsKICAgICAg
ICAgICAgaWYgKGJfcGxhbmVzID4gMSkgewoKICAgICAgICAgICAgICAgIGZwdXRzKCJcMDMzciIs
IGdwb3V0ZmlsZSk7CiAgICAgICAgICAgICAgICAodm9pZCkgZnB1dGMoKGNoYXIpIG5lY3Bjb2xv
cltwbGFuZV0sIGdwb3V0ZmlsZSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZwdXRzKCJc
clwwMzMqIiwgZ3BvdXRmaWxlKTsKICAgICAgICAgICAgKHZvaWQpIGZwdXRjKCdcMCcsIGdwb3V0
ZmlsZSk7CiAgICAgICAgICAgICh2b2lkKSBmcHV0YygoY2hhcikgKGJfeHNpemUgJSAyNTYpLCBn
cG91dGZpbGUpOwogICAgICAgICAgICAodm9pZCkgZnB1dGMoKGNoYXIpIChiX3hzaXplIC8gMjU2
KSwgZ3BvdXRmaWxlKTsKICAgICAgICAgICAgZm9yICh4ID0gMDsgeCA8IGJfeHNpemU7IHgrKykg
ewogICAgICAgICAgICAgICAgKHZvaWQpIGZwdXRjKChjaGFyKSAoKigoKmJfcClbaiArIG9mZnNl
dF0gKyB4KSksIGdwb3V0ZmlsZSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBm
cHV0cygiXHJcMDMzbCIsIGdwb3V0ZmlsZSk7CiAgICAodm9pZCkgZnB1dGMoJ1wwJywgZ3BvdXRm
aWxlKTsKICAgIGlmIChiX3BsYW5lcyA+IDEpIHsKICAgICAgICBmcHV0cygiXDAzM3IiLCBncG91
dGZpbGUpOwogICAgICAgICh2b2lkKSBmcHV0YygnXDAnLCBncG91dGZpbGUpOwogICAgfQoKCgp9
CiMgNDUzICJ0ZXJtL2Vwc29uLnRybSIKdm9pZCBTVEFSQ19kdW1wICh2b2lkKTsKCgoKCgoKc3Rh
dGljIHVuc2lnbmVkIGludCBTVEFSQ2NvbG9yW10gPSB7IDEsIDgsIDQsIDIsIDEwLCAxMiwgNiwg
MTQgfTsKc3RhdGljIHVuc2lnbmVkIGludCBTVEFSQ3Bjb2xvcltdID0geyAwLCAyLCAxLCA0IH07
CgpzdGF0aWMgdm9pZCBTVEFSQ2luaXQoKQp7Cn0KCnN0YXRpYyB2b2lkIFNUQVJDZ3JhcGhpY3Mo
KQp7CiAgICBiX2NoYXJzaXplKDApOwogICAgYl9tYWtlYml0bWFwKCh1bnNpZ25lZCBpbnQpICg1
MTIgKiB4c2l6ZSksCiAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGludCkgKDM4NCAqIHlzaXpl
KSwgNCk7Cn0KCgpzdGF0aWMgdm9pZCBTVEFSQ3RleHQoKQp7CiAgICBTVEFSQ19kdW1wKCk7CiAg
ICBiX2ZyZWViaXRtYXAoKTsKfQoKc3RhdGljIHZvaWQgU1RBUkNsaW5ldHlwZShsaW5ldHlwZSkK
aW50IGxpbmV0eXBlOwp7CiAgICBpZiAobGluZXR5cGUgPj0gNikKICAgICAgICBsaW5ldHlwZSAl
PSA2OwogICAgYl9zZXR2YWx1ZShTVEFSQ2NvbG9yW2xpbmV0eXBlICsgMl0pOwp9CgoKCnN0YXRp
YyB2b2lkIFNUQVJDcmVzZXQoKQp7CgoKCn0KCgoKdm9pZCBTVEFSQ19kdW1wKCkKewogICAgdW5z
aWduZWQgaW50IHg7CiAgICB1bnNpZ25lZCBpbnQgcGxhbmUsIG9mZnNldDsKICAgIGludCBqOwog
ICAgZm9yIChqID0gKGJfeXNpemUgLyA4KSAtIDE7IGogPj0gMDsgai0tKSB7CiAgICAgICAgZnB1
dHMoIlwwMzNKXDAzMCIsIGdwb3V0ZmlsZSk7CiAgICAgICAgZm9yIChwbGFuZSA9IDA7IHBsYW5l
IDwgYl9wbGFuZXM7IHBsYW5lKyspIHsKICAgICAgICAgICAgb2Zmc2V0ID0gcGxhbmUgKiBiX3Bz
aXplOwogICAgICAgICAgICBpZiAoYl9wbGFuZXMgPiAxKSB7CgogICAgICAgICAgICAgICAgZnB1
dHMoIlwwMzNyIiwgZ3BvdXRmaWxlKTsKICAgICAgICAgICAgICAgICh2b2lkKSBmcHV0YygoY2hh
cikgU1RBUkNwY29sb3JbcGxhbmVdLCBncG91dGZpbGUpOwogICAgICAgICAgICB9CgogICAgICAg
ICAgICBmcHV0cygiXHJcMDMzKlwwMDUiLCBncG91dGZpbGUpOwogICAgICAgICAgICAodm9pZCkg
ZnB1dGMoKGNoYXIpIChiX3hzaXplICUgMjU2KSwgZ3BvdXRmaWxlKTsKICAgICAgICAgICAgKHZv
aWQpIGZwdXRjKChjaGFyKSAoYl94c2l6ZSAvIDI1NiksIGdwb3V0ZmlsZSk7CiAgICAgICAgICAg
IGZvciAoeCA9IDA7IHggPCBiX3hzaXplOyB4KyspIHsKICAgICAgICAgICAgICAgICh2b2lkKSBm
cHV0YygoY2hhcikgKCooKCpiX3ApW2ogKyBvZmZzZXRdICsgeCkpLCBncG91dGZpbGUpOwogICAg
ICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgaWYgKGJfcGxhbmVzID4gMSkgewogICAgICAg
IGZwdXRzKCJcMDMzciIsIGdwb3V0ZmlsZSk7CiAgICAgICAgKHZvaWQpIGZwdXRjKCdcMCcsIGdw
b3V0ZmlsZSk7CiAgICB9CgoKCn0KCgoKCgoKdm9pZCBlcHMxODBfZHVtcCAodm9pZCk7CgoKCgpz
dGF0aWMgdm9pZCBFUFMxODBncmFwaGljcygpCnsKICAgIGJfY2hhcnNpemUoMik7CiAgICBiX21h
a2ViaXRtYXAoKHVuc2lnbmVkIGludCkgKDEyNjAgKiB4c2l6ZSksCiAgICAgICAgICAgICAgICAg
KHVuc2lnbmVkIGludCkgKDEwODAgKiB5c2l6ZSksIDEpOwp9CgoKc3RhdGljIHZvaWQgRVBTMTgw
dGV4dCgpCnsKICAgIGVwczE4MF9kdW1wKCk7CiAgICBiX2ZyZWViaXRtYXAoKTsKfQoKCgoKdm9p
ZCBlcHMxODBfZHVtcCgpCnsKICAgIHJlZ2lzdGVyIHVuc2lnbmVkIGludCB4OwogICAgaW50IGo7
CgoKICAgIGZwdXRzKCJcMDMzQFwwMzMrXDA2MFwwMzNsXDAwNSIsIGdwb3V0ZmlsZSk7CiAgICBm
b3IgKGogPSAoYl95c2l6ZSAvIDgpIC0gMTsgaiA+PSAwOykgewoKICAgICAgICBmcHV0cygiXHJc
blwwMzMqJyIsIGdwb3V0ZmlsZSk7CiAgICAgICAgKHZvaWQpIGZwdXRjKChjaGFyKSAoYl94c2l6
ZSAlIDI1NiksIGdwb3V0ZmlsZSk7CiAgICAgICAgKHZvaWQpIGZwdXRjKChjaGFyKSAoYl94c2l6
ZSAvIDI1NiksIGdwb3V0ZmlsZSk7CiAgICAgICAgZm9yICh4ID0gMDsgeCA8IGJfeHNpemU7IHgr
KykgewogICAgICAgICAgICAodm9pZCkgZnB1dGMoKGNoYXIpICgqKCgqYl9wKVtqXSArIHgpKSwg
Z3BvdXRmaWxlKTsKICAgICAgICAgICAgKHZvaWQpIGZwdXRjKChjaGFyKSAoKigoKmJfcClbaiAt
IDFdICsgeCkpLCBncG91dGZpbGUpOwogICAgICAgICAgICAodm9pZCkgZnB1dGMoKGNoYXIpICgq
KCgqYl9wKVtqIC0gMl0gKyB4KSksIGdwb3V0ZmlsZSk7CiAgICAgICAgfQogICAgICAgIGogLT0g
MzsKICAgIH0KICAgIGZwdXRzKCJcclxuXDAzM0BcclxuIiwgZ3BvdXRmaWxlKTsKCgoKfQoKCgoK
CnZvaWQgZXBzNjBfZHVtcCAodm9pZCk7CgoKCgpzdGF0aWMgdm9pZCBFUFM2MGdyYXBoaWNzKCkK
ewogICAgYl9jaGFyc2l6ZSgwKTsKICAgIGJfbWFrZWJpdG1hcCgodW5zaWduZWQgaW50KSAoNDgw
ICogeHNpemUpLAogICAgICAgICAgICAgICAgICh1bnNpZ25lZCBpbnQpICgzNjAgKiB5c2l6ZSks
IDEpOwp9CgoKc3RhdGljIHZvaWQgRVBTNjB0ZXh0KCkKewogICAgZXBzNjBfZHVtcCgpOwogICAg
Yl9mcmVlYml0bWFwKCk7Cn0KCgoKCnZvaWQgZXBzNjBfZHVtcCgpCnsKICAgIHJlZ2lzdGVyIHVu
c2lnbmVkIGludCB4OwogICAgaW50IGo7CiAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgIlwwMzMlY1ww
MzAiLCAnMycpOwogICAgZm9yIChqID0gKGJfeXNpemUgLyA4KSAtIDE7IGogPj0gMDsgai0tKSB7
CgogICAgICAgIGZwdXRzKCJcclxuXDAzM0siLCBncG91dGZpbGUpOwogICAgICAgICh2b2lkKSBm
cHV0YygoY2hhcikgKGJfeHNpemUgJSAyNTYpLCBncG91dGZpbGUpOwogICAgICAgICh2b2lkKSBm
cHV0YygoY2hhcikgKGJfeHNpemUgLyAyNTYpLCBncG91dGZpbGUpOwogICAgICAgIGZvciAoeCA9
IDA7IHggPCBiX3hzaXplOyB4KyspIHsKICAgICAgICAgICAgKHZvaWQpIGZwdXRjKChjaGFyKSAo
KigoKmJfcClbal0gKyB4KSksIGdwb3V0ZmlsZSk7CiAgICAgICAgfQogICAgfQogICAgZnByaW50
ZihncG91dGZpbGUsICJcMDMzJWNcMDQ0XHJcbiIsICczJyk7CgoKCn0KIyA2MzkgInRlcm0vZXBz
b24udHJtIgpzdGF0aWMgdm9pZCBUQU5EWTYwdGV4dCgpCnsKCgoKCgoKICAgIGZwcmludGYoZ3Bv
dXRmaWxlLCAiXDAzMyFcMDMzJWMlY1xuXG5cbiIsICczJywgMjE2KTsKICAgIGVwczYwX2R1bXAo
KTsKICAgIGJfZnJlZWJpdG1hcCgpOwoKCiAgICBmcHV0cygiXGZcMDMzISIsIGdwb3V0ZmlsZSk7
Cn0KCgoKCgoKdm9pZCBva2lkYXRhX2R1bXAgKHZvaWQpOwoKc3RhdGljIHZvaWQgT0tJREFUQXRl
eHQoKQp7CiAgICBva2lkYXRhX2R1bXAoKTsKICAgIGJfZnJlZWJpdG1hcCgpOwp9CgppbnQgYml0
cmV2X3RibFtdID0KewogICAgMHgwMCwgMHg4MCwgMHg0MCwgMHhjMCwgMHgyMCwgMHhhMCwgMHg2
MCwgMHhlMCwKICAgIDB4MTAsIDB4OTAsIDB4NTAsIDB4ZDAsIDB4MzAsIDB4YjAsIDB4NzAsIDB4
ZjAsCiAgICAweDA4LCAweDg4LCAweDQ4LCAweGM4LCAweDI4LCAweGE4LCAweDY4LCAweGU4LAog
ICAgMHgxOCwgMHg5OCwgMHg1OCwgMHhkOCwgMHgzOCwgMHhiOCwgMHg3OCwgMHhmOCwKICAgIDB4
MDQsIDB4ODQsIDB4NDQsIDB4YzQsIDB4MjQsIDB4YTQsIDB4NjQsIDB4ZTQsCiAgICAweDE0LCAw
eDk0LCAweDU0LCAweGQ0LCAweDM0LCAweGI0LCAweDc0LCAweGY0LAogICAgMHgwYywgMHg4Yywg
MHg0YywgMHhjYywgMHgyYywgMHhhYywgMHg2YywgMHhlYywKICAgIDB4MWMsIDB4OWMsIDB4NWMs
IDB4ZGMsIDB4M2MsIDB4YmMsIDB4N2MsIDB4ZmMsCiAgICAweDAyLCAweDgyLCAweDQyLCAweGMy
LCAweDIyLCAweGEyLCAweDYyLCAweGUyLAogICAgMHgxMiwgMHg5MiwgMHg1MiwgMHhkMiwgMHgz
MiwgMHhiMiwgMHg3MiwgMHhmMiwKICAgIDB4MGEsIDB4OGEsIDB4NGEsIDB4Y2EsIDB4MmEsIDB4
YWEsIDB4NmEsIDB4ZWEsCiAgICAweDFhLCAweDlhLCAweDVhLCAweGRhLCAweDNhLCAweGJhLCAw
eDdhLCAweGZhLAogICAgMHgwNiwgMHg4NiwgMHg0NiwgMHhjNiwgMHgyNiwgMHhhNiwgMHg2Niwg
MHhlNiwKICAgIDB4MTYsIDB4OTYsIDB4NTYsIDB4ZDYsIDB4MzYsIDB4YjYsIDB4NzYsIDB4ZjYs
CiAgICAweDBlLCAweDhlLCAweDRlLCAweGNlLCAweDJlLCAweGFlLCAweDZlLCAweGVlLAogICAg
MHgxZSwgMHg5ZSwgMHg1ZSwgMHhkZSwgMHgzZSwgMHhiZSwgMHg3ZSwgMHhmZSwKICAgIDB4MDEs
IDB4ODEsIDB4NDEsIDB4YzEsIDB4MjEsIDB4YTEsIDB4NjEsIDB4ZTEsCiAgICAweDExLCAweDkx
LCAweDUxLCAweGQxLCAweDMxLCAweGIxLCAweDcxLCAweGYxLAogICAgMHgwOSwgMHg4OSwgMHg0
OSwgMHhjOSwgMHgyOSwgMHhhOSwgMHg2OSwgMHhlOSwKICAgIDB4MTksIDB4OTksIDB4NTksIDB4
ZDksIDB4MzksIDB4YjksIDB4NzksIDB4ZjksCiAgICAweDA1LCAweDg1LCAweDQ1LCAweGM1LCAw
eDI1LCAweGE1LCAweDY1LCAweGU1LAogICAgMHgxNSwgMHg5NSwgMHg1NSwgMHhkNSwgMHgzNSwg
MHhiNSwgMHg3NSwgMHhmNSwKICAgIDB4MGQsIDB4OGQsIDB4NGQsIDB4Y2QsIDB4MmQsIDB4YWQs
IDB4NmQsIDB4ZWQsCiAgICAweDFkLCAweDlkLCAweDVkLCAweGRkLCAweDNkLCAweGJkLCAweDdk
LCAweGZkLAogICAgMHgwMywgMHg4MywgMHg0MywgMHhjMywgMHgyMywgMHhhMywgMHg2MywgMHhl
MywKICAgIDB4MTMsIDB4OTMsIDB4NTMsIDB4ZDMsIDB4MzMsIDB4YjMsIDB4NzMsIDB4ZjMsCiAg
ICAweDBiLCAweDhiLCAweDRiLCAweGNiLCAweDJiLCAweGFiLCAweDZiLCAweGViLAogICAgMHgx
YiwgMHg5YiwgMHg1YiwgMHhkYiwgMHgzYiwgMHhiYiwgMHg3YiwgMHhmYiwKICAgIDB4MDcsIDB4
ODcsIDB4NDcsIDB4YzcsIDB4MjcsIDB4YTcsIDB4NjcsIDB4ZTcsCiAgICAweDE3LCAweDk3LCAw
eDU3LCAweGQ3LCAweDM3LCAweGI3LCAweDc3LCAweGY3LAogICAgMHgwZiwgMHg4ZiwgMHg0Ziwg
MHhjZiwgMHgyZiwgMHhhZiwgMHg2ZiwgMHhlZiwKICAgIDB4MWYsIDB4OWYsIDB4NWYsIDB4ZGYs
IDB4M2YsIDB4YmYsIDB4N2YsIDB4ZmYKfTsKCgp2b2lkIG9raWRhdGFfZHVtcCgpCnsKICAgIHJl
Z2lzdGVyIHVuc2lnbmVkIGludCB4OwogICAgaW50IGo7CiAgICBjaGFyIGN1cl9jaGFyOwogICAg
aW50IHByZXZfY2hhcjsKCiAgICBwcmV2X2NoYXIgPSAwOwogICAgZnByaW50ZihncG91dGZpbGUs
ICJcMDMzJWMlY1wwMjBcMDMzKmVQOlwwMDMiLCAnJScsICc5Jyk7CiAgICBmb3IgKGogPSAoYl95
c2l6ZSAvIDgpIC0gMTsgaiA+PSAwOyBqLS0pIHsKICAgICAgICBmcHV0cygiXDAwM1wwMTYiLCBn
cG91dGZpbGUpOwoKCiAgICAgICAgZm9yICh4ID0gMDsgeCA8IGJfeHNpemU7IHgrKykgewogICAg
ICAgICAgICBpZiAoKGN1cl9jaGFyID0gKGNoYXIpCiAgICAgICAgICAgICAgICAgKGJpdHJldl90
YmxbKGludCkgKCooKCpiX3ApW2pdICsgeCkpXSkpID09ICdcMDAzJykgewogICAgICAgICAgICAg
ICAgZnB1dHMoIlwwMDNcMDAzIiwgZ3BvdXRmaWxlKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgICAgICh2b2lkKSBmcHV0YygoY2hhcikgY3VyX2NoYXIsIGdwb3V0ZmlsZSk7CiAg
ICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgIlwwMDNc
MDAyXDAzMyVjJWNcMDMwXHJcbiIsICclJywgJzknKTsKCgoKfQojIDM2NSAidGVybS5oIiAyCgoK
CgoKCgojIDEgInRlcm0vbGF0ZXgudHJtIiAxCiMgNzcgInRlcm0vbGF0ZXgudHJtIgojIDEgInRl
cm0vZHJpdmVyLmgiIDEKIyA3OCAidGVybS9sYXRleC50cm0iIDIKIyA4NyAidGVybS9sYXRleC50
cm0iCnN0YXRpYyB2b2lkIExBVEVYX29wdGlvbnMgKHZvaWQpOwpzdGF0aWMgdm9pZCBMQVRFWF9p
bml0ICh2b2lkKTsKc3RhdGljIHZvaWQgTEFURVhfZ3JhcGhpY3MgKHZvaWQpOwpzdGF0aWMgdm9p
ZCBMQVRFWF90ZXh0ICh2b2lkKTsKc3RhdGljIHZvaWQgTEFURVhfcHV0X3RleHQgKHVuc2lnbmVk
IGludCB4LCB1bnNpZ25lZCBpbnQgeSwgY2hhciBzdHJbXSk7CnN0YXRpYyB2b2lkIExBVEVYX2xp
bmV0eXBlIChpbnQgbGluZXR5cGUpOwpzdGF0aWMgdm9pZCBMQVRFWF9tb3ZlICh1bnNpZ25lZCBp
bnQgeCwgdW5zaWduZWQgaW50IHkpOwpzdGF0aWMgdm9pZCBMQVRFWF9wb2ludCAodW5zaWduZWQg
aW50IHgsIHVuc2lnbmVkIGludCB5LCBpbnQgbnVtYmVyKTsKc3RhdGljIHZvaWQgTEFURVhfdmVj
dG9yICh1bnNpZ25lZCBpbnQgdXgsIHVuc2lnbmVkIGludCB1eSk7CnN0YXRpYyB2b2lkIExBVEVY
X2Fycm93ICh1bnNpZ25lZCBpbnQgc3gsIHVuc2lnbmVkIGludCBzeSwgdW5zaWduZWQgaW50IGV4
LCB1bnNpZ25lZCBpbnQgZXksIFRCT09MRUFOIGhlYWQpOwpzdGF0aWMgaW50IExBVEVYX2p1c3Rp
ZnlfdGV4dCAoZW51bSBKVVNUSUZZIG1vZGUpOwpzdGF0aWMgaW50IExBVEVYX3RleHRfYW5nbGUg
KGludCBhbmcpOwpzdGF0aWMgdm9pZCBMQVRFWF9yZXNldCAodm9pZCk7CgoKc3RhdGljIHZvaWQg
RU1URVhfaW5pdCAodm9pZCk7CnN0YXRpYyB2b2lkIEVNVEVYX3Jlc2V0ICh2b2lkKTsKc3RhdGlj
IHZvaWQgRU1URVhfdGV4dCAodm9pZCk7CgoKCnN0YXRpYyB2b2lkIEVFUElDX21vdmUgKHVuc2ln
bmVkIGludCB4LCB1bnNpZ25lZCBpbnQgeSk7CnN0YXRpYyB2b2lkIEVFUElDX3ZlY3RvciAodW5z
aWduZWQgaW50IHV4LCB1bnNpZ25lZCBpbnQgdXkpOwojIDEzMiAidGVybS9sYXRleC50cm0iCnN0
YXRpYyBpbnQgTEFURVhfcG9zeDsKc3RhdGljIGludCBMQVRFWF9wb3N5OwpzdGF0aWMgaW50IExB
VEVYX2ZvbnRzaXplID0gMTA7CnN0YXRpYyBjaGFyIExBVEVYX2ZvbnRbNTAgKzFdID0gImNtciI7
CnN0YXRpYyBlbnVtIEpVU1RJRlkgbGF0ZXhfanVzdGlmeSA9IExFRlQ7CnN0YXRpYyBpbnQgbGF0
ZXhfYW5nbGUgPSAwOwojIDE0NiAidGVybS9sYXRleC50cm0iCnN0YXRpYyBjaGFyICogTEFURVhf
cG9pbnRzW10gPQp7CiAgICAiXFxyYWlzZWJveHstLjhwdH17XFxtYWtlYm94KDAsMCl7JFxcRGlh
bW9uZCR9fSIsCiAgICAiXFxtYWtlYm94KDAsMCl7JCskfSIsCiAgICAiXFxyYWlzZWJveHstLjhw
dH17XFxtYWtlYm94KDAsMCl7JFxcQm94JH19IiwKICAgICJcXG1ha2Vib3goMCwwKXskXFx0aW1l
cyR9IiwKICAgICJcXG1ha2Vib3goMCwwKXskXFx0cmlhbmdsZSR9IiwKICAgICJcXG1ha2Vib3go
MCwwKXskXFxzdGFyJH0iLAogICAgIlxcY2lyY2xlezEyfSIsICJcXGNpcmNsZXsxOH0iLCAiXFxj
aXJjbGV7MjR9IiwKICAgICJcXGNpcmNsZSp7MTJ9IiwgIlxcY2lyY2xlKnsxOH0iLCAiXFxjaXJj
bGUqezI0fSIKfTsKCgpzdGF0aWMgZmxvYXQgTEFURVhfc2l6ZSA9IDA7CnN0YXRpYyBmbG9hdCBM
QVRFWF9kb3RzcGFjZSA9IDA7CgoKc3RhdGljIHN0cnVjdCB7CiAgICBmbG9hdCBzaXplOwogICAg
ZmxvYXQgZG90c3BhY2U7Cn0gTEFURVhfbGluZXNbXSA9Cgp7CiAgICB7MC40LCAwLjB9LAogICAg
ezAuNCwgNS4wfSwKICAgIHswLjgsIDAuMH0sCiAgICB7MS4wLCA1LjB9LAogICAgezEuMiwgMC4w
fSwKICAgIHsxLjAsIDEwLjB9LAp9OwoKCnN0YXRpYyB2b2lkIExBVEVYX2RvdF9saW5lIChpbnQg
eDEsIGludCB4MiwgaW50IHkxLCBpbnQgeTIpOwpzdGF0aWMgdm9pZCBMQVRFWF9zb2xpZF9saW5l
IChpbnQgeDEsIGludCB4MiwgaW50IHkxLCBpbnQgeTIpOwpzdGF0aWMgdm9pZCBMQVRFWF9ydWxl
IChpbnQgY29kZSwgZG91YmxlIHgsIGRvdWJsZSB5LCBkb3VibGUgd2lkdGgsIGRvdWJsZSBoZWln
aHQpOwpzdGF0aWMgdm9pZCBMQVRFWF9mbHVzaGRvdCAodm9pZCk7CgpzdGF0aWMgVEJPT0xFQU4g
TEFURVhfbW92ZWQgPSAxOwpzdGF0aWMgZmxvYXQgTEFURVhfZG90c2l6ZTsKc3RhdGljIFRCT09M
RUFOIExBVEVYX25lZWRzZG90ID0gMDsKCgpUQk9PTEVBTiBlbXRleCA9IDA7CnN0YXRpYyB2b2lk
CkVNVEVYX3NvbGlkX2xpbmUgKGludCB4MSwgaW50IHgyLCBpbnQgeTEsIGludCB5Mik7CgoKCgoK
c3RhdGljIHN0cnVjdCB2c2xvcGUgewogICAgaW50IGR4LCBkeTsKfSBMQVRFWF9zbG9wZXNbXSA9
Cgp7CiAgICB7MSwgMX0sCiAgICB7MSwgMn0sCiAgICB7MSwgM30sCiAgICB7MSwgNH0sCiAgICB7
MiwgMX0sCiAgICB7MiwgM30sCiAgICB7MywgMX0sCiAgICB7MywgMn0sCiAgICB7MywgNH0sCiAg
ICB7NCwgMX0sCiAgICB7NCwgM30sCiAgICB7MCwgMH0KfTsKCgp2b2lkIGJlc3RfbGF0ZXhfYXJy
b3cgKGludCwgaW50LCBpbnQsIGludCwgaW50LCBUQk9PTEVBTik7CgpzdGF0aWMgdm9pZCBMQVRF
WF9vcHRpb25zKCkKewogICAgaWYgKCEoY190b2tlbiA+PSBudW1fdG9rZW5zIHx8IGVxdWFscyhj
X3Rva2VuLCI7IikpKSB7CiAgICAgICAgaWYgKGFsbW9zdF9lcXVhbHMoY190b2tlbiwgImMkb3Vy
aWVyIikpIHsKICAgICAgICAgICAgKF9fZXh0ZW5zaW9uX18gKF9fYnVpbHRpbl9jb25zdGFudF9w
ICgiY210dCIpID8gKCgoc2l6ZV90KShjb25zdCB2b2lkICopKCgiY210dCIpICsgMSkgLSAoc2l6
ZV90KShjb25zdCB2b2lkICopKCJjbXR0IikgPT0gMSkgJiYgc3RybGVuICgiY210dCIpICsgMSA8
PSA4ID8gX19zdHJjcHlfc21hbGwgKExBVEVYX2ZvbnQsIF9fZXh0ZW5zaW9uX18gKCgoX19jb25z
dCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJjbXR0IikpWzAgKyAxXSA8PCA4
IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoImNtdHQiKSlb
MF0pLCBfX2V4dGVuc2lvbl9fICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBj
aGFyICopICgiY210dCIpKVs0ICsgMV0gPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikgKCJjbXR0IikpWzRdKSwgX19leHRlbnNpb25fXyAoKCgoKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiY210dCIpKVswICsgM10gPDwg
OCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJjbXR0Iikp
WzAgKyAyXSkgPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIg
KikgKCJjbXR0IikpWzAgKyAxXSkgPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf
X2NvbnN0IGNoYXIgKikgKCJjbXR0IikpWzBdKSwgX19leHRlbnNpb25fXyAoKCgoKF9fY29uc3Qg
dW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiY210dCIpKVs0ICsgM10gPDwgOCB8
ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJjbXR0IikpWzQg
KyAyXSkgPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KCJjbXR0IikpWzQgKyAxXSkgPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikgKCJjbXR0IikpWzRdKSwgc3RybGVuICgiY210dCIpICsgMSkgOiAoY2hhciAq
KSBtZW1jcHkgKExBVEVYX2ZvbnQsICJjbXR0Iiwgc3RybGVuICgiY210dCIpICsgMSkpIDogc3Ry
Y3B5IChMQVRFWF9mb250LCAiY210dCIpKSk7CiAgICAgICAgICAgIGNfdG9rZW4rKzsKICAgICAg
ICB9IGVsc2UgaWYgKGFsbW9zdF9lcXVhbHMoY190b2tlbiwgInIkb21hbiIpKSB7CiAgICAgICAg
ICAgIChfX2V4dGVuc2lvbl9fIChfX2J1aWx0aW5fY29uc3RhbnRfcCAoImNtciIpID8gKCgoc2l6
ZV90KShjb25zdCB2b2lkICopKCgiY21yIikgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKiko
ImNtciIpID09IDEpICYmIHN0cmxlbiAoImNtciIpICsgMSA8PSA4ID8gX19zdHJjcHlfc21hbGwg
KExBVEVYX2ZvbnQsIF9fZXh0ZW5zaW9uX18gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf
X2NvbnN0IGNoYXIgKikgKCJjbXIiKSlbMCArIDFdIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQg
Y2hhciAqKSAoX19jb25zdCBjaGFyICopICgiY21yIikpWzBdKSwgX19leHRlbnNpb25fXyAoKChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoImNtciIpKVs0ICsgMV0g
PDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJjbXIi
KSlbNF0pLCBfX2V4dGVuc2lvbl9fICgoKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikgKCJjbXIiKSlbMCArIDNdIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hh
ciAqKSAoX19jb25zdCBjaGFyICopICgiY21yIikpWzAgKyAyXSkgPDwgOCB8ICgoX19jb25zdCB1
bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJjbXIiKSlbMCArIDFdKSA8PCA4IHwg
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoImNtciIpKVswXSks
IF9fZXh0ZW5zaW9uX18gKCgoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh
ciAqKSAoImNtciIpKVs0ICsgM10gPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf
X2NvbnN0IGNoYXIgKikgKCJjbXIiKSlbNCArIDJdKSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoImNtciIpKVs0ICsgMV0pIDw8IDggfCAoKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiY21yIikpWzRdKSwgc3RybGVu
ICgiY21yIikgKyAxKSA6IChjaGFyICopIG1lbWNweSAoTEFURVhfZm9udCwgImNtciIsIHN0cmxl
biAoImNtciIpICsgMSkpIDogc3RyY3B5IChMQVRFWF9mb250LCAiY21yIikpKTsKICAgICAgICAg
ICAgY190b2tlbisrOwogICAgICAgIH0gZWxzZSBpZiAoYWxtb3N0X2VxdWFscyhjX3Rva2VuLCAi
ZCRlZmF1bHQiKSkgewogICAgICAgICAgICAoX19leHRlbnNpb25fXyAoX19idWlsdGluX2NvbnN0
YW50X3AgKCJkb2MiKSA/ICgoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoImRvYyIpICsgMSkgLSAo
c2l6ZV90KShjb25zdCB2b2lkICopKCJkb2MiKSA9PSAxKSAmJiBzdHJsZW4gKCJkb2MiKSArIDEg
PD0gOCA/IF9fc3RyY3B5X3NtYWxsIChMQVRFWF9mb250LCBfX2V4dGVuc2lvbl9fICgoKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiZG9jIikpWzAgKyAxXSA8PCA4
IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoImRvYyIpKVsw
XSksIF9fZXh0ZW5zaW9uX18gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNo
YXIgKikgKCJkb2MiKSlbNCArIDFdIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAo
X19jb25zdCBjaGFyICopICgiZG9jIikpWzRdKSwgX19leHRlbnNpb25fXyAoKCgoKF9fY29uc3Qg
dW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiZG9jIikpWzAgKyAzXSA8PCA4IHwg
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoImRvYyIpKVswICsg
Ml0pIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgi
ZG9jIikpWzAgKyAxXSkgPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0
IGNoYXIgKikgKCJkb2MiKSlbMF0pLCBfX2V4dGVuc2lvbl9fICgoKCgoX19jb25zdCB1bnNpZ25l
ZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJkb2MiKSlbNCArIDNdIDw8IDggfCAoKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiZG9jIikpWzQgKyAyXSkgPDwg
OCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJkb2MiKSlb
NCArIDFdKSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAq
KSAoImRvYyIpKVs0XSksIHN0cmxlbiAoImRvYyIpICsgMSkgOiAoY2hhciAqKSBtZW1jcHkgKExB
VEVYX2ZvbnQsICJkb2MiLCBzdHJsZW4gKCJkb2MiKSArIDEpKSA6IHN0cmNweSAoTEFURVhfZm9u
dCwgImRvYyIpKSk7CiAgICAgICAgICAgIGNfdG9rZW4rKzsKICAgICAgICB9CiAgICB9CiAgICBp
ZiAoIShjX3Rva2VuID49IG51bV90b2tlbnMgfHwgZXF1YWxzKGNfdG9rZW4sIjsiKSkpIHsKICAg
ICAgICBzdHJ1Y3QgdmFsdWUgYTsKICAgICAgICBMQVRFWF9mb250c2l6ZSA9IChpbnQpIHJlYWwo
Y29uc3RfZXhwcmVzcygmYSkpOwogICAgfQoKCgogICAgdGVybS0+dl9jaGFyID0gKHVuc2lnbmVk
IGludCkgKExBVEVYX2ZvbnRzaXplICogKDMwMCkgLyA3Mik7CiAgICB0ZXJtLT5oX2NoYXIgPSAo
dW5zaWduZWQgaW50KSAoTEFURVhfZm9udHNpemUgKiAoMzAwKSAvIDE0NCk7CgogICAgaWYgKF9f
ZXh0ZW5zaW9uX18gKHsgc2l6ZV90IF9fczFfbGVuLCBfX3MyX2xlbjsgKF9fYnVpbHRpbl9jb25z
dGFudF9wIChMQVRFWF9mb250KSAmJiBfX2J1aWx0aW5fY29uc3RhbnRfcCAoImRvYyIpICYmIChf
X3MxX2xlbiA9IHN0cmxlbiAoTEFURVhfZm9udCksIF9fczJfbGVuID0gc3RybGVuICgiZG9jIiks
ICghKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKExBVEVYX2ZvbnQpICsgMSkgLSAoc2l6ZV90KShj
b25zdCB2b2lkICopKExBVEVYX2ZvbnQpID09IDEpIHx8IF9fczFfbGVuID49IDQpICYmICghKChz
aXplX3QpKGNvbnN0IHZvaWQgKikoKCJkb2MiKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAq
KSgiZG9jIikgPT0gMSkgfHwgX19zMl9sZW4gPj0gNCkpID8gbWVtY21wICgoX19jb25zdCBjaGFy
ICopIChMQVRFWF9mb250KSwgKF9fY29uc3QgY2hhciAqKSAoImRvYyIpLCAoX19zMV9sZW4gPCBf
X3MyX2xlbiA/IF9fczFfbGVuIDogX19zMl9sZW4pICsgMSkgOiAoX19idWlsdGluX2NvbnN0YW50
X3AgKExBVEVYX2ZvbnQpICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKChMQVRFWF9mb250KSAr
IDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKShMQVRFWF9mb250KSA9PSAxKSAmJiAoX19zMV9s
ZW4gPSBzdHJsZW4gKExBVEVYX2ZvbnQpLCBfX3MxX2xlbiA8IDQpID8gKF9fYnVpbHRpbl9jb25z
dGFudF9wICgiZG9jIikgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCJkb2MiKSArIDEpIC0g
KHNpemVfdCkoY29uc3Qgdm9pZCAqKSgiZG9jIikgPT0gMSkgPyAoX19leHRlbnNpb25fXyAoeyBy
ZWdpc3RlciBpbnQgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29u
c3QgY2hhciAqKSAoTEFURVhfZm9udCkpWzBdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikg
KF9fY29uc3QgY2hhciAqKSgiZG9jIikpWzBdKTsgaWYgKF9fczFfbGVuID4gMCAmJiBfX3Jlc3Vs
dCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0
IGNoYXIgKikgKExBVEVYX2ZvbnQpKVsxXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf
X2NvbnN0IGNoYXIgKikgKCJkb2MiKSlbMV0pOyBpZiAoX19zMV9sZW4gPiAxICYmIF9fcmVzdWx0
ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg
Y2hhciAqKSAoTEFURVhfZm9udCkpWzJdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9f
Y29uc3QgY2hhciAqKSAoImRvYyIpKVsyXSk7IGlmIChfX3MxX2xlbiA+IDIgJiYgX19yZXN1bHQg
PT0gMCkgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh
ciAqKSAoTEFURVhfZm9udCkpWzNdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29u
c3QgY2hhciAqKSAoImRvYyIpKVszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpIDogKF9fZXh0ZW5zaW9u
X18gKHsgX19jb25zdCB1bnNpZ25lZCBjaGFyICpfX3MyID0gKF9fY29uc3QgdW5zaWduZWQgY2hh
ciAqKSAoX19jb25zdCBjaGFyICopICgiZG9jIik7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9ICgo
KF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChMQVRFWF9mb250KSlb
MF0gLSBfX3MyWzBdKTsgaWYgKF9fczFfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVz
dWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKExBVEVY
X2ZvbnQpKVsxXSAtIF9fczJbMV0pOyBpZiAoX19zMV9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDAp
IHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAq
KSAoTEFURVhfZm9udCkpWzJdIC0gX19zMlsyXSk7IGlmIChfX3MxX2xlbiA+IDIgJiYgX19yZXN1
bHQgPT0gMCkgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg
Y2hhciAqKSAoTEFURVhfZm9udCkpWzNdIC0gX19zMlszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpKSA6
IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoImRvYyIpICYmICgoc2l6ZV90KShjb25zdCB2b2lkICop
KCgiZG9jIikgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoImRvYyIpID09IDEpICYmIChf
X3MyX2xlbiA9IHN0cmxlbiAoImRvYyIpLCBfX3MyX2xlbiA8IDQpID8gKF9fYnVpbHRpbl9jb25z
dGFudF9wIChMQVRFWF9mb250KSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoTEFURVhfZm9u
dCkgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoTEFURVhfZm9udCkgPT0gMSkgPyAoX19l
eHRlbnNpb25fXyAoeyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoTEFURVhfZm9udCkpWzBdIC0gKChfX2NvbnN0IHVu
c2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSgiZG9jIikpWzBdKTsgaWYgKF9fczJfbGVu
ID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBj
aGFyICopIChfX2NvbnN0IGNoYXIgKikgKExBVEVYX2ZvbnQpKVsxXSAtICgoX19jb25zdCB1bnNp
Z25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJkb2MiKSlbMV0pOyBpZiAoX19zMl9sZW4g
PiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNo
YXIgKikgKF9fY29uc3QgY2hhciAqKSAoTEFURVhfZm9udCkpWzJdIC0gKChfX2NvbnN0IHVuc2ln
bmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoImRvYyIpKVsyXSk7IGlmIChfX3MyX2xlbiA+
IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIg
KikgKF9fY29uc3QgY2hhciAqKSAoTEFURVhfZm9udCkpWzNdIC0gKChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoImRvYyIpKVszXSk7IH0gfSBfX3Jlc3VsdDsgfSkp
IDogKF9fZXh0ZW5zaW9uX18gKHsgX19jb25zdCB1bnNpZ25lZCBjaGFyICpfX3MxID0gKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChMQVRFWF9mb250KTsgcmVnaXN0
ZXIgaW50IF9fcmVzdWx0ID0gX19zMVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf
X2NvbnN0IGNoYXIgKikgKCJkb2MiKSlbMF07IGlmIChfX3MyX2xlbiA+IDAgJiYgX19yZXN1bHQg
PT0gMCkgeyBfX3Jlc3VsdCA9IChfX3MxWzFdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikg
KF9fY29uc3QgY2hhciAqKSAoImRvYyIpKVsxXSk7IGlmIChfX3MyX2xlbiA+IDEgJiYgX19yZXN1
bHQgPT0gMCkgeyBfX3Jlc3VsdCA9IChfX3MxWzJdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIg
KikgKF9fY29uc3QgY2hhciAqKSAoImRvYyIpKVsyXSk7IGlmIChfX3MyX2xlbiA+IDIgJiYgX19y
ZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoX19zMVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFy
ICopIChfX2NvbnN0IGNoYXIgKikgKCJkb2MiKSlbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSkgOiBz
dHJjbXAgKExBVEVYX2ZvbnQsICJkb2MiKSkpKTsgfSk9PTApCiAgICAgICAgKF9fZXh0ZW5zaW9u
X18gKF9fYnVpbHRpbl9jb25zdGFudF9wICgiKGRvY3VtZW50IHNwZWNpZmljIGZvbnQpIikgJiYg
X19idWlsdGluX2NvbnN0YW50X3AgKDEwMjQpID8gKHN0cmxlbiAoIihkb2N1bWVudCBzcGVjaWZp
YyBmb250KSIpICsgMSA+PSAoKHNpemVfdCkgKDEwMjQpKSA/IChjaGFyICopIG1lbWNweSAodGVy
bV9vcHRpb25zLCAiKGRvY3VtZW50IHNwZWNpZmljIGZvbnQpIiwgMTAyNCkgOiBzdHJuY3B5ICh0
ZXJtX29wdGlvbnMsICIoZG9jdW1lbnQgc3BlY2lmaWMgZm9udCkiLCAxMDI0KSkgOiBzdHJuY3B5
ICh0ZXJtX29wdGlvbnMsICIoZG9jdW1lbnQgc3BlY2lmaWMgZm9udCkiLCAxMDI0KSkpOwogICAg
ZWxzZQogICAgICAgIHNwcmludGYodGVybV9vcHRpb25zLCAiJXMgJWQiLAogICAgICAgICAgICAg
ICAgTEFURVhfZm9udFsyXSA9PSAndCcgPyAiY291cmllciIgOiAicm9tYW4iLCBMQVRFWF9mb250
c2l6ZSk7Cn0KCgpzdGF0aWMgdm9pZCBMQVRFWF9pbml0KCkKewoKICAgIGVtdGV4ID0gMDsKCiAg
ICBMQVRFWF9wb3N4ID0gTEFURVhfcG9zeSA9IDA7CgogICAgZnByaW50ZihncG91dGZpbGUsICIl
JSBHTlVQTE9UOiBMYVRlWCBwaWN0dXJlXG5cXHNldGxlbmd0aHtcXHVuaXRsZW5ndGh9eyVmcHR9
XG5cXGlmeFxccGxvdHBvaW50XFx1bmRlZmluZWRcXG5ld3NhdmVib3h7XFxwbG90cG9pbnR9XFxm
aVxuIiwKCgoKICAgICAgICAgICAgKCg3Mi4yNykvKDMwMCkpKTsKCiAgICBMQVRFWF9saW5ldHlw
ZSgtMSk7CiAgICBMQVRFWF9zaXplID0gMDsKfQoKc3RhdGljIHZvaWQgTEFURVhfZ3JhcGhpY3Mo
KQp7CiAgICByZWdpc3RlciBzdHJ1Y3QgVEVSTUVOVFJZICp0ID0gdGVybTsKCgogICAgaW50IHhz
Y2FsZSA9IHhzaXplICogdC0+eG1heDsKICAgIGludCB5c2NhbGUgPSB5c2l6ZSAqIHQtPnltYXg7
CgogICAgZnByaW50ZihncG91dGZpbGUsICJcXGJlZ2lue3BpY3R1cmV9KCVkLCVkKSgwLDApXG4i
LCB4c2NhbGUsIHlzY2FsZSk7CiAgICBpZiAoX19leHRlbnNpb25fXyAoeyBzaXplX3QgX19zMV9s
ZW4sIF9fczJfbGVuOyAoX19idWlsdGluX2NvbnN0YW50X3AgKExBVEVYX2ZvbnQpICYmIF9fYnVp
bHRpbl9jb25zdGFudF9wICgiZG9jIikgJiYgKF9fczFfbGVuID0gc3RybGVuIChMQVRFWF9mb250
KSwgX19zMl9sZW4gPSBzdHJsZW4gKCJkb2MiKSwgKCEoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgo
TEFURVhfZm9udCkgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoTEFURVhfZm9udCkgPT0g
MSkgfHwgX19zMV9sZW4gPj0gNCkgJiYgKCEoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoImRvYyIp
ICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKCJkb2MiKSA9PSAxKSB8fCBfX3MyX2xlbiA+
PSA0KSkgPyBtZW1jbXAgKChfX2NvbnN0IGNoYXIgKikgKExBVEVYX2ZvbnQpLCAoX19jb25zdCBj
aGFyICopICgiZG9jIiksIChfX3MxX2xlbiA8IF9fczJfbGVuID8gX19zMV9sZW4gOiBfX3MyX2xl
bikgKyAxKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoTEFURVhfZm9udCkgJiYgKChzaXplX3Qp
KGNvbnN0IHZvaWQgKikoKExBVEVYX2ZvbnQpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICop
KExBVEVYX2ZvbnQpID09IDEpICYmIChfX3MxX2xlbiA9IHN0cmxlbiAoTEFURVhfZm9udCksIF9f
czFfbGVuIDwgNCkgPyAoX19idWlsdGluX2NvbnN0YW50X3AgKCJkb2MiKSAmJiAoKHNpemVfdCko
Y29uc3Qgdm9pZCAqKSgoImRvYyIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKCJkb2Mi
KSA9PSAxKSA/IChfX2V4dGVuc2lvbl9fICh7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9ICgoKF9f
Y29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChMQVRFWF9mb250KSlbMF0g
LSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopKCJkb2MiKSlbMF0p
OyBpZiAoX19zMV9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoTEFURVhfZm9udCkpWzFdIC0g
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoImRvYyIpKVsxXSk7
IGlmIChfX3MxX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChMQVRFWF9mb250KSlbMl0gLSAo
KF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiZG9jIikpWzJdKTsg
aWYgKF9fczFfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29uc3Qg
dW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChMQVRFWF9mb250KSlbM10gLSAoKF9f
Y29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiZG9jIikpWzNdKTsgfSB9
IF9fcmVzdWx0OyB9KSkgOiAoX19leHRlbnNpb25fXyAoeyBfX2NvbnN0IHVuc2lnbmVkIGNoYXIg
Kl9fczIgPSAoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJkb2Mi
KTsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf
X2NvbnN0IGNoYXIgKikgKExBVEVYX2ZvbnQpKVswXSAtIF9fczJbMF0pOyBpZiAoX19zMV9sZW4g
PiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNo
YXIgKikgKF9fY29uc3QgY2hhciAqKSAoTEFURVhfZm9udCkpWzFdIC0gX19zMlsxXSk7IGlmIChf
X3MxX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5z
aWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChMQVRFWF9mb250KSlbMl0gLSBfX3MyWzJd
KTsgaWYgKF9fczFfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChMQVRFWF9mb250KSlbM10gLSBf
X3MyWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wICgiZG9j
IikgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCJkb2MiKSArIDEpIC0gKHNpemVfdCkoY29u
c3Qgdm9pZCAqKSgiZG9jIikgPT0gMSkgJiYgKF9fczJfbGVuID0gc3RybGVuICgiZG9jIiksIF9f
czJfbGVuIDwgNCkgPyAoX19idWlsdGluX2NvbnN0YW50X3AgKExBVEVYX2ZvbnQpICYmICgoc2l6
ZV90KShjb25zdCB2b2lkICopKChMQVRFWF9mb250KSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9p
ZCAqKShMQVRFWF9mb250KSA9PSAxKSA/IChfX2V4dGVuc2lvbl9fICh7IHJlZ2lzdGVyIGludCBf
X3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChM
QVRFWF9mb250KSlbMF0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFy
ICopKCJkb2MiKSlbMF0pOyBpZiAoX19zMl9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19y
ZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoTEFU
RVhfZm9udCkpWzFdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAq
KSAoImRvYyIpKVsxXSk7IGlmIChfX3MyX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jl
c3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChMQVRF
WF9mb250KSlbMl0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop
ICgiZG9jIikpWzJdKTsgaWYgKF9fczJfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3Vs
dCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChMQVRFWF9m
b250KSlbM10gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgi
ZG9jIikpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkgOiAoX19leHRlbnNpb25fXyAoeyBfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKl9fczEgPSAoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0
IGNoYXIgKikgKExBVEVYX2ZvbnQpOyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSBfX3MxWzBdIC0g
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoImRvYyIpKVswXTsg
aWYgKF9fczJfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKF9fczFbMV0g
LSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiZG9jIikpWzFd
KTsgaWYgKF9fczJfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKF9fczFb
Ml0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiZG9jIikp
WzJdKTsgaWYgKF9fczJfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9IChfX3Mx
WzNdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoImRvYyIp
KVszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpKSA6IHN0cmNtcCAoTEFURVhfZm9udCwgImRvYyIpKSkp
OyB9KSAhPSAwKSB7CiAgICAgICAgZnByaW50ZihncG91dGZpbGUsICJcXGZvbnRcXGdudXBsb3Q9
JXMxMCBhdCAlZHB0XG5cXGdudXBsb3RcbiIsCgoKICAgICAgICAgICAgICAgIExBVEVYX2ZvbnQs
IExBVEVYX2ZvbnRzaXplKTsKICAgIH0KfQoKCnN0YXRpYyB2b2lkIExBVEVYX3RleHQoKQp7CiAg
ICBMQVRFWF9ydWxlKDIsIDAuLDAuLDAuLDAuKTsKICAgIExBVEVYX2ZsdXNoZG90KCk7CiAgICBm
cHV0cygiXFxlbmR7cGljdHVyZX1cbiIsIGdwb3V0ZmlsZSk7CiAgICBMQVRFWF9wb3N4ID0gTEFU
RVhfcG9zeSA9IDA7CiAgICBMQVRFWF9tb3ZlZCA9IDE7Cn0KCnN0YXRpYyB2b2lkIExBVEVYX2xp
bmV0eXBlKGxpbmV0eXBlKQppbnQgbGluZXR5cGU7CnsKICAgIGZsb2F0IHNpemU7CgogICAgaWYg
KGxpbmV0eXBlID49IDYpCiAgICAgICAgbGluZXR5cGUgJT0gNjsKCgogICAgaWYgKCFlbXRleCkK
CiAgICAgICAgTEFURVhfcnVsZSgyLCAwLiwwLiwwLiwwLik7CiAgICBMQVRFWF9mbHVzaGRvdCgp
OwoKCgoKICAgIHNpemUgPSAobGluZXR5cGUgPj0gMCA/IExBVEVYX2xpbmVzW2xpbmV0eXBlXS5z
aXplCiAgICAgICAgICAgIDogTEFURVhfbGluZXNbMF0uc2l6ZSk7CgoKICAgIGlmIChzaXplICE9
IExBVEVYX3NpemUpIHsKICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwKICAgICAgICAgICAgICAg
ICJcXHNib3h7XFxwbG90cG9pbnR9e1xccnVsZVslLjNmcHRdeyUuM2ZwdH17JS4zZnB0fX0lJVxu
IiwKICAgICAgICAgICAgICAgIC1zaXplIC8gMiwgc2l6ZSwgc2l6ZSk7CgogICAgICAgIGlmIChl
bXRleCkKICAgICAgICAgICAgZnByaW50ZihncG91dGZpbGUsICJcXHNwZWNpYWx7ZW06bGluZXdp
ZHRoICUuMWZwdH0lJVxuIiwgc2l6ZSk7CgogICAgfQogICAgTEFURVhfc2l6ZSA9IHNpemU7CiAg
ICBMQVRFWF9kb3RzaXplID0gc2l6ZSAvICgoNzIuMjcpLygzMDApKTsKICAgIExBVEVYX2RvdHNw
YWNlID0gKGxpbmV0eXBlID49IDApID8gTEFURVhfbGluZXNbbGluZXR5cGVdLmRvdHNwYWNlIDog
MDsKICAgIExBVEVYX21vdmVkID0gMTsKfQoKc3RhdGljIHZvaWQgTEFURVhfbW92ZSh4LCB5KQp1
bnNpZ25lZCBpbnQgeCwgeTsKewogICAgTEFURVhfZmx1c2hkb3QoKTsKCiAgICBMQVRFWF9wb3N4
ID0geDsKICAgIExBVEVYX3Bvc3kgPSB5OwogICAgTEFURVhfbW92ZWQgPSAxOwp9CgoKc3RhdGlj
IHZvaWQgTEFURVhfcG9pbnQoeCwgeSwgbnVtYmVyKQp1bnNpZ25lZCBpbnQgeCwgeTsKaW50IG51
bWJlcjsKewogICAgTEFURVhfbW92ZSh4LCB5KTsKCgoKICAgIGZwcmludGYoZ3BvdXRmaWxlLCAi
XFxwdXQoJWQsJWQpeyVzfVxuIiwgeCwgeSwKICAgICAgICAgICAgKG51bWJlciA8IDAgPyAiXFxy
dWxlezFwdH17MXB0fSIKICAgICAgICAgICAgIDogTEFURVhfcG9pbnRzW251bWJlciAlIDEyXSkp
Owp9CgoKc3RhdGljIHZvaWQgTEFURVhfdmVjdG9yKHV4LCB1eSkKdW5zaWduZWQgaW50IHV4LCB1
eTsKewogICAgaWYgKExBVEVYX2RvdHNwYWNlID09IDAuMCkgewoKCiAgICAgICAgaWYgKGVtdGV4
KQogICAgICAgICAgICBFTVRFWF9zb2xpZF9saW5lKExBVEVYX3Bvc3gsIChpbnQpIHV4LCBMQVRF
WF9wb3N5LCAoaW50KSB1eSk7CiAgICAgICAgZWxzZQoKICAgICAgICAgICAgTEFURVhfc29saWRf
bGluZShMQVRFWF9wb3N4LCAoaW50KSB1eCwgTEFURVhfcG9zeSwgKGludCkgdXkpOwogICAgfSBl
bHNlCgogICAgICAgIExBVEVYX2RvdF9saW5lKExBVEVYX3Bvc3gsIChpbnQpIHV4LCBMQVRFWF9w
b3N5LCAoaW50KSB1eSk7CgogICAgTEFURVhfcG9zeCA9IHV4OwogICAgTEFURVhfcG9zeSA9IHV5
Owp9CgpzdGF0aWMgdm9pZCBMQVRFWF9zb2xpZF9saW5lKHgxLCB4MiwgeTEsIHkyKQppbnQgeDEs
IHgyLCB5MSwgeTI7CnsKICAgIGZsb2F0IHNsb3BlOwogICAgaW50IGluYzsKICAgIGZsb2F0IGR4
LCBkeSwgeCwgeTsKICAgIGZsb2F0IG9mZnNldCwgbGVuZ3RoOwogICAgaW50IGNvZGU7CgoKCgog
ICAgaWYgKHgxID09IHgyICYmIHkxID09IHkyKSB7CiAgICAgICAgaWYgKExBVEVYX21vdmVkKSB7
CiAgICAgICAgICAgIExBVEVYX3J1bGUoMiwgMC4sMC4sMC4sMC4pOwoKICAgICAgICAgICAgZnBy
aW50ZihncG91dGZpbGUsICJcXHB1dCgldSwldSl7JXN9XG4iLCB4MSwgeTEsICJcXHVzZWJveHtc
XHBsb3Rwb2ludH0iKTsKICAgICAgICB9CiAgICB9IGVsc2UgewogICAgICAgIGNvZGUgPSAoTEFU
RVhfbW92ZWQgPyAwIDogMSk7CiAgICAgICAgTEFURVhfbW92ZWQgPSAwOwogICAgICAgIGlmICh4
MSA9PSB4MikKICAgICAgICAgICAgTEFURVhfcnVsZShjb2RlLCAoZG91YmxlKSB4MSwgKGRvdWJs
ZSkgeTEsCiAgICAgICAgICAgICAgICAgICAgICAgTEFURVhfZG90c2l6ZSwgKGRvdWJsZSkgeTIg
LSB5MSk7CiAgICAgICAgZWxzZSBpZiAoeTEgPT0geTIpCiAgICAgICAgICAgIExBVEVYX3J1bGUo
Y29kZSwgKGRvdWJsZSkgeDEsIChkb3VibGUpIHkxLCAoZG91YmxlKSB4MiAtIHgxLAogICAgICAg
ICAgICAgICAgICAgICAgIExBVEVYX2RvdHNpemUpOwogICAgICAgIGVsc2UgewogICAgICAgICAg
ICBkeCA9IChmbG9hdCkgeDIgLSB4MTsKICAgICAgICAgICAgZHkgPSAoZmxvYXQpIHkyIC0geTE7
CiAgICAgICAgICAgIHNsb3BlID0gZHkgLyBkeDsKICAgICAgICAgICAgaWYgKCgoc2xvcGUpID49
IDAgPyAoc2xvcGUpIDogLShzbG9wZSkpIDw9IDEuMCkgewoKICAgICAgICAgICAgICAgIHggPSAo
ICgoKGR4KSA+PSAwID8gKGR4KSA6IC0oZHgpKSkgPCAoKDAuMjUgKyAxLjAgLyAoKHNsb3BlKSA+
PSAwID8gKHNsb3BlKSA6IC0oc2xvcGUpKSkgKiBMQVRFWF9kb3RzaXplKSA/ICgoKGR4KSA+PSAw
ID8gKGR4KSA6IC0oZHgpKSkgOiAoKDAuMjUgKyAxLjAgLyAoKHNsb3BlKSA+PSAwID8gKHNsb3Bl
KSA6IC0oc2xvcGUpKSkgKiBMQVRFWF9kb3RzaXplKSApOwogICAgICAgICAgICAgICAgb2Zmc2V0
ID0gKChkeSkgPj0gMCA/IDEgOiAtMSkgKiAoIChMQVRFWF9kb3RzaXplKSA8ICgoKGR5KSA+PSAw
ID8gKGR5KSA6IC0oZHkpKSkgPyAoTEFURVhfZG90c2l6ZSkgOiAoKChkeSkgPj0gMCA/IChkeSkg
OiAtKGR5KSkpICk7CiAgICAgICAgICAgICAgICBkeSA9IGR5IC0gb2Zmc2V0OwogICAgICAgICAg
ICAgICAgbGVuZ3RoID0geCAqICgoNzIuMjcpLygzMDApKTsKICAgICAgICAgICAgICAgIGluYyA9
ICh4ID09ICgoZHgpID49IDAgPyAoZHgpIDogLShkeCkpID8gMSA6ICggKDEpID4gKCgoZHkpID49
IDAgPyAoZHkpIDogLShkeSkpIC8gMC41ICsgMC41KSA/ICgxKSA6ICgoKGR5KSA+PSAwID8gKGR5
KSA6IC0oZHkpKSAvIDAuNSArIDAuNSkgKSk7CiAgICAgICAgICAgICAgICBpZiAoaW5jID09IDEp
IHsKICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgIlxccHV0KCV1LCUuMmYp
e1xccnVsZXslLjNmcHR9eyUuM2ZwdH19XG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
KHgyID49IHgxID8geDEgOiB4MiksICgoZmxvYXQpIHkxICsgeTIgLSBMQVRFWF9kb3RzaXplKSAv
IDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW5ndGgsIExBVEVYX2RvdHNpemUgKiAo
KDcyLjI3KS8oMzAwKSkpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAg
ICAgICBkeSA9IGR5IC8gaW5jOwogICAgICAgICAgICAgICAgICAgIGR4ID0gKGR4IC0gKChkeCkg
Pj0gMCA/IDEgOiAtMSkgKiB4KSAvIChpbmMgLSAxKTsKICAgICAgICAgICAgICAgICAgICBmcHJp
bnRmKGdwb3V0ZmlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcXG11bHRpcHV0KCUu
MmYsJS4yZikoJS4zZiwlLjNmKXsldX17XFxydWxleyUuM2ZwdH17JS4zZnB0fX1cbiIsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAoZHggPj0gMC4wID8gKGZsb2F0KSB4MSA6IHgxIC0geCks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZmxvYXQpIHkxIC0gKCgoZHkpID49IDAgPyAo
ZHkpIDogLShkeSkpIC0gb2Zmc2V0KSAvIDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
eCwgZHksIGluYywgbGVuZ3RoLCAoKGR5KSA+PSAwID8gKGR5KSA6IC0oZHkpKSAqICgoNzIuMjcp
LygzMDApKSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgeCA9IHggLyAyOwog
ICAgICAgICAgICAgICAgZHggPSAoKGR4KSA+PSAwID8gMSA6IC0xKSAqIHg7CiAgICAgICAgICAg
ICAgICBkeCA9IChmbG9hdCkgeDIgLSB4MSAtIGR4OwogICAgICAgICAgICAgICAgZHkgPSAoZmxv
YXQpIHkyIC0geTE7CiAgICAgICAgICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgIlxcbXVsdGlw
dXQoJS4yZiwlLjJmKSglLjNmLCUuM2YpezJ9e1xccnVsZXslLjNmcHR9eyUuM2ZwdH19XG4iLAog
ICAgICAgICAgICAgICAgICAgICAgICAoZHggPj0gMC4wID8gKGZsb2F0KSB4MSA6IHgxIC0geCks
IChmbG9hdCkgeTEgLSBMQVRFWF9kb3RzaXplIC8gMiwKICAgICAgICAgICAgICAgICAgICAgICAg
ZHgsIGR5LCB4ICogKCg3Mi4yNykvKDMwMCkpLCBMQVRFWF9kb3RzaXplICogKCg3Mi4yNykvKDMw
MCkpKTsKICAgICAgICAgICAgICAgIExBVEVYX21vdmVkID0gMTsKICAgICAgICAgICAgfSBlbHNl
IHsKCiAgICAgICAgICAgICAgICB5ID0gKCAoKChkeSkgPj0gMCA/IChkeSkgOiAtKGR5KSkpIDwg
KCgwLjI1ICsgKChzbG9wZSkgPj0gMCA/IChzbG9wZSkgOiAtKHNsb3BlKSkpICogTEFURVhfZG90
c2l6ZSkgPyAoKChkeSkgPj0gMCA/IChkeSkgOiAtKGR5KSkpIDogKCgwLjI1ICsgKChzbG9wZSkg
Pj0gMCA/IChzbG9wZSkgOiAtKHNsb3BlKSkpICogTEFURVhfZG90c2l6ZSkgKTsKICAgICAgICAg
ICAgICAgIG9mZnNldCA9ICgoZHgpID49IDAgPyAxIDogLTEpICogKCAoTEFURVhfZG90c2l6ZSkg
PCAoKChkeCkgPj0gMCA/IChkeCkgOiAtKGR4KSkpID8gKExBVEVYX2RvdHNpemUpIDogKCgoZHgp
ID49IDAgPyAoZHgpIDogLShkeCkpKSApOwogICAgICAgICAgICAgICAgZHggPSBkeCAtIG9mZnNl
dDsKICAgICAgICAgICAgICAgIGxlbmd0aCA9IHkgKiAoKDcyLjI3KS8oMzAwKSk7CiAgICAgICAg
ICAgICAgICBpbmMgPSAoeSA9PSAoKGR5KSA+PSAwID8gKGR5KSA6IC0oZHkpKSA/IDEgOiAoICgx
KSA+ICgoKGR4KSA+PSAwID8gKGR4KSA6IC0oZHgpKSAvIDAuNSArIDAuNSkgPyAoMSkgOiAoKChk
eCkgPj0gMCA/IChkeCkgOiAtKGR4KSkgLyAwLjUgKyAwLjUpICkpOwogICAgICAgICAgICAgICAg
aWYgKGluYyA9PSAxKSB7CiAgICAgICAgICAgICAgICAgICAgZnByaW50ZihncG91dGZpbGUsICJc
XHB1dCglLjJmLCV1KXtcXHJ1bGV7JS4zZnB0fXslLjNmcHR9fVxuIiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICgoZmxvYXQpIHgxICsgeDIgLSBMQVRFWF9kb3RzaXplKSAvIDIsICh5MiA+
PSB5MSA/IHkxIDogeTIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTEFURVhfZG90c2l6
ZSAqICgoNzIuMjcpLygzMDApKSwgbGVuZ3RoKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICAgICAgICAgZHggPSBkeCAvIGluYzsKICAgICAgICAgICAgICAgICAgICBkeSA9
IChkeSAtICgoZHkpID49IDAgPyAxIDogLTEpICogeSkgLyAoaW5jIC0gMSk7CiAgICAgICAgICAg
ICAgICAgICAgZnByaW50ZihncG91dGZpbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
XFxtdWx0aXB1dCglLjJmLCUuMmYpKCUuM2YsJS4zZil7JXV9e1xccnVsZXslLjNmcHR9eyUuM2Zw
dH19XG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZsb2F0KSB4MSAtICgoKGR4KSA+
PSAwID8gKGR4KSA6IC0oZHgpKSAtIG9mZnNldCkgLyAyLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKGR5ID49IDAgPyAoZmxvYXQpIHkxIDogeTEgLSB5KSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGR4LCBkeSwgaW5jLCAoKGR4KSA+PSAwID8gKGR4KSA6IC0oZHgpKSAqICgoNzIu
MjcpLygzMDApKSwgbGVuZ3RoKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICB5
ID0geSAvIDI7CiAgICAgICAgICAgICAgICBkeCA9IChmbG9hdCkgeDIgLSB4MTsKICAgICAgICAg
ICAgICAgIGR5ID0gKChkeSkgPj0gMCA/IDEgOiAtMSkgKiB5OwogICAgICAgICAgICAgICAgZHkg
PSAoZmxvYXQpIHkyIC0geTEgLSBkeTsKICAgICAgICAgICAgICAgIGZwcmludGYoZ3BvdXRmaWxl
LCAiXFxtdWx0aXB1dCglLjJmLCUuMmYpKCUuM2YsJS4zZil7Mn17XFxydWxleyUuM2ZwdH17JS4z
ZnB0fX1cbiIsCiAgICAgICAgICAgICAgICAgICAgICAgIChmbG9hdCkgeDEgLSBMQVRFWF9kb3Rz
aXplIC8gMiwgKGR5ID49IDAuMCA/IChmbG9hdCkgeTEgOiB5MSAtIHkpLAogICAgICAgICAgICAg
ICAgICAgICAgICBkeCwgZHksIExBVEVYX2RvdHNpemUgKiAoKDcyLjI3KS8oMzAwKSksIHkgKiAo
KDcyLjI3KS8oMzAwKSkpOwogICAgICAgICAgICAgICAgTEFURVhfbW92ZWQgPSAxOwogICAgICAg
ICAgICB9CiAgICAgICAgfQogICAgfQp9CgoKCgoKCgpzdGF0aWMgdm9pZCBMQVRFWF9ydWxlKGNv
ZGUsIHgsIHksIHdpZHRoLCBoZWlnaHQpCmludCBjb2RlOwpkb3VibGUgeCwgeTsKZG91YmxlIHdp
ZHRoOwpkb3VibGUgaGVpZ2h0Owp7CiAgICBzdGF0aWMgZmxvYXQgbGFzdHgsIGxhc3R5OwogICAg
c3RhdGljIGZsb2F0IGxhc3R3LCBsYXN0aDsKICAgIHN0YXRpYyBUQk9PTEVBTiBpc3ZhbGlkID0g
MDsKICAgIFRCT09MRUFOIGNvbWJpbmUgPSAoY29kZSA9PSAxKTsKICAgIFRCT09MRUFOIGZsdXNo
ID0gKGNvZGUgPT0gMik7CgogICAgaWYgKCFmbHVzaCkKICAgICAgICBpZiAod2lkdGggPT0gMCB8
fCBoZWlnaHQgPT0gMCkKICAgICAgICAgICAgcmV0dXJuOwoKICAgIGlmIChpc3ZhbGlkICYmIGNv
bWJpbmUpIHsKCiAgICAgICAgaWYgKChpbnQpIGxhc3R4ID09IChpbnQpIHggJiYgbGFzdHcgPT0g
d2lkdGgpIHsKICAgICAgICAgICAgaWYgKGxhc3RoICogaGVpZ2h0ID49IDApIHsKICAgICAgICAg
ICAgICAgIGxhc3RoICs9IGhlaWdodDsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
ICAgfQogICAgICAgIH0gZWxzZSBpZiAoKGludCkgbGFzdHkgPT0gKGludCkgeSAmJiBsYXN0aCA9
PSBoZWlnaHQpIHsKICAgICAgICAgICAgaWYgKGxhc3R3ICogd2lkdGggPj0gMCkgewogICAgICAg
ICAgICAgICAgbGFzdHcgKz0gd2lkdGg7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgIH0KICAgICAgICB9CgogICAgfQogICAgaWYgKGlzdmFsaWQpIHsKCiAgICAgICAgaWYgKGxh
c3R3IDwgMCkgewogICAgICAgICAgICBsYXN0eCArPSBsYXN0dzsKICAgICAgICAgICAgbGFzdHcg
PSAtbGFzdHc7CiAgICAgICAgfQogICAgICAgIGlmIChsYXN0aCA8IDApIHsKICAgICAgICAgICAg
bGFzdHkgKz0gbGFzdGg7CiAgICAgICAgICAgIGxhc3RoID0gLWxhc3RoOwogICAgICAgIH0KCiAg
ICAgICAgaWYgKGxhc3R3IDwgTEFURVhfZG90c2l6ZSB8fCBsYXN0aCA8IExBVEVYX2RvdHNpemUp
CiAgICAgICAgICAgIGZwcmludGYoZ3BvdXRmaWxlLCAiXFxwdXQoJS4xZiwlLjFmKXslc31cbiIs
CiAgICAgICAgICAgICAgICAgICAgbGFzdHgsIGxhc3R5LCAiXFx1c2Vib3h7XFxwbG90cG9pbnR9
Iik7CiAgICAgICAgZWxzZQogICAgICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgIlxccHV0KCUu
MWYsJS4xZil7XFxydWxlWyUuM2ZwdF17JS4zZnB0fXslLjNmcHR9fVxuIiwKICAgICAgICAgICAg
ICAgICAgICBsYXN0eCwgbGFzdHksIC1MQVRFWF9kb3RzaXplICogKCg3Mi4yNykvKDMwMCkpIC8g
MiwKICAgICAgICAgICAgICAgICAgICBsYXN0dyAqICgoNzIuMjcpLygzMDApKSwgbGFzdGggKiAo
KDcyLjI3KS8oMzAwKSkpOwogICAgfQogICAgaWYgKGZsdXNoKSB7CiAgICAgICAgaXN2YWxpZCA9
IDA7CiAgICB9IGVsc2UgewogICAgICAgIGxhc3R4ID0geDsKICAgICAgICBsYXN0eSA9IHk7CiAg
ICAgICAgbGFzdHcgPSB3aWR0aDsKICAgICAgICBsYXN0aCA9IGhlaWdodDsKICAgICAgICBpc3Zh
bGlkID0gMTsKICAgIH0KfQoKc3RhdGljIHZvaWQgTEFURVhfZG90X2xpbmUoeDEsIHgyLCB5MSwg
eTIpCmludCB4MSwgeDIsIHkxLCB5MjsKewogICAgc3RhdGljIGZsb2F0IExBVEVYX2xlZnQ7CgoK
CiAgICBpZiAoTEFURVhfbW92ZWQpCiAgICAgICAgTEFURVhfbGVmdCA9IDEuMDsKCgogICAgaWYg
KHgxID09IHgyICYmIHkxID09IHkyKSB7CiAgICAgICAgaWYgKExBVEVYX21vdmVkKQoKICAgICAg
ICAgICAgZnByaW50ZihncG91dGZpbGUsICJcXHB1dCgldSwldSl7JXN9XG4iLCB4MSwgeTEsICJc
XHVzZWJveHtcXHBsb3Rwb2ludH0iKTsKICAgIH0gZWxzZSB7CiAgICAgICAgZmxvYXQgZG90c3Bh
Y2UgPSBMQVRFWF9kb3RzcGFjZSAvICgoNzIuMjcpLygzMDApKTsKICAgICAgICBmbG9hdCB4LCB5
OwogICAgICAgIGZsb2F0IHhpbmMsIHlpbmM7CiAgICAgICAgZmxvYXQgc2xvcGU7CiAgICAgICAg
ZmxvYXQgbGFzdHggPSAtMTsKICAgICAgICBmbG9hdCBsYXN0eSA9IC0xOwogICAgICAgIGludCBu
dW1kb3RzID0gMDsKCgogICAgICAgIGlmICh4MiA9PSB4MSkgewogICAgICAgICAgICB4aW5jID0g
MC4wOwogICAgICAgICAgICB5aW5jID0gKHkyIC0geTEgPiAwKSA/IGRvdHNwYWNlIDogLWRvdHNw
YWNlOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHNsb3BlID0gKChmbG9hdCkgeTIgLSB5
MSkgLyAoKGZsb2F0KSB4MiAtIHgxKTsKICAgICAgICAgICAgeGluYyA9IGRvdHNwYWNlIC8gc3Fy
dCgxICsgc2xvcGUgKiBzbG9wZSkgKiAoKHgyIC0geDEpID49IDAgPyAxIDogLTEpOwogICAgICAg
ICAgICB5aW5jID0gc2xvcGUgKiB4aW5jOwogICAgICAgIH0KCgoKICAgICAgICBmb3IgKHggPSB4
MSArIHhpbmMgKiAoMSAtIExBVEVYX2xlZnQpLCB5ID0geTEgKyB5aW5jICogKDEgLSBMQVRFWF9s
ZWZ0KTsKICAgICAgICAgICAgICh4MiAtIHgpICogeGluYyA+PSAwICYmICh5MiAtIHkpICogeWlu
YyA+PSAwOwogICAgICAgICAgICAgbGFzdHggPSB4LCB4ICs9IHhpbmMsCiAgICAgICAgICAgICBs
YXN0eSA9IHksIHkgKz0geWluYykKICAgICAgICAgICAgbnVtZG90cysrOwogICAgICAgIGlmIChu
dW1kb3RzID09IDEpCiAgICAgICAgICAgIGZwcmludGYoZ3BvdXRmaWxlLCAiXFxwdXQoJS4yZiwl
LjJmKXslc31cbiIsCiAgICAgICAgICAgICAgICAgICAgbGFzdHgsIGxhc3R5LCAiXFx1c2Vib3h7
XFxwbG90cG9pbnR9Iik7CiAgICAgICAgZWxzZSBpZiAobnVtZG90cyA+IDApCiAgICAgICAgICAg
IGZwcmludGYoZ3BvdXRmaWxlLCAiXFxtdWx0aXB1dCgldSwldSkoJS4zZiwlLjNmKXsldX17JXN9
XG4iLAogICAgICAgICAgICAgICAgICAgIHgxLCB5MSwgeGluYywgeWluYywgbnVtZG90cywgIlxc
dXNlYm94e1xccGxvdHBvaW50fSIpOwoKCiAgICAgICAgaWYgKHhpbmMgIT0gMC4wKQogICAgICAg
ICAgICBpZiAobGFzdHggPj0gMCkKICAgICAgICAgICAgICAgIExBVEVYX2xlZnQgPSAoKHgyIC0g
bGFzdHgpID49IDAgPyAoeDIgLSBsYXN0eCkgOiAtKHgyIC0gbGFzdHgpKSAvICgoeGluYykgPj0g
MCA/ICh4aW5jKSA6IC0oeGluYykpOwogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICBM
QVRFWF9sZWZ0ICs9ICgoeDIgLSB4MSkgPj0gMCA/ICh4MiAtIHgxKSA6IC0oeDIgLSB4MSkpIC8g
KCh4aW5jKSA+PSAwID8gKHhpbmMpIDogLSh4aW5jKSk7CiAgICAgICAgZWxzZSBpZiAobGFzdHkg
Pj0gMCkKICAgICAgICAgICAgTEFURVhfbGVmdCA9ICgoeTIgLSBsYXN0eSkgPj0gMCA/ICh5MiAt
IGxhc3R5KSA6IC0oeTIgLSBsYXN0eSkpIC8gKCh5aW5jKSA+PSAwID8gKHlpbmMpIDogLSh5aW5j
KSk7CiAgICAgICAgZWxzZQogICAgICAgICAgICBMQVRFWF9sZWZ0ICs9ICgoeTIgLSB5MSkgPj0g
MCA/ICh5MiAtIHkxKSA6IC0oeTIgLSB5MSkpIC8gKCh5aW5jKSA+PSAwID8gKHlpbmMpIDogLSh5
aW5jKSk7CiAgICB9CgogICAgTEFURVhfbmVlZHNkb3QgPSAoTEFURVhfbGVmdCA+IDApOwoKICAg
IExBVEVYX21vdmVkID0gMDsKfQoKc3RhdGljIHZvaWQgTEFURVhfZmx1c2hkb3QoKQp7CiAgICBp
ZiAoTEFURVhfbmVlZHNkb3QpCiAgICAgICAgZnByaW50ZihncG91dGZpbGUsICJcXHB1dCglZCwl
ZCl7JXN9XG4iLAogICAgICAgICAgICAgICAgTEFURVhfcG9zeCwgTEFURVhfcG9zeSwgIlxcdXNl
Ym94e1xccGxvdHBvaW50fSIpOwogICAgTEFURVhfbmVlZHNkb3QgPSAwOwp9CgpzdGF0aWMgdm9p
ZCBMQVRFWF9hcnJvdyhzeCwgc3ksIGV4LCBleSwgaGVhZCkKdW5zaWduZWQgaW50IHN4LCBzeSwg
ZXgsIGV5OwpUQk9PTEVBTiBoZWFkOwp7CiAgICBiZXN0X2xhdGV4X2Fycm93KHN4LCBzeSwgZXgs
IGV5LCAxLCBoZWFkKTsKCiAgICBMQVRFWF9wb3N4ID0gZXg7CiAgICBMQVRFWF9wb3N5ID0gZXk7
Cn0KCnZvaWQgYmVzdF9sYXRleF9hcnJvdyhzeCwgc3ksIGV4LCBleSwgd2hvLCBoZWFkKQppbnQg
c3gsIHN5LCBleCwgZXk7CmludCB3aG87ClRCT09MRUFOIGhlYWQ7CnsKICAgIGludCBkeCA9IGV4
IC0gc3g7CiAgICBpbnQgZHkgPSBleSAtIHN5OwogICAgZmxvYXQgbTsKICAgIGZsb2F0IGFycm93
c2xvcGU7CiAgICBmbG9hdCBtaW5lcnJvciA9IDA7CiAgICBzdHJ1Y3QgdnNsb3BlICpzbG9wZTsK
ICAgIHN0cnVjdCB2c2xvcGUgKmJlc3RzbG9wZTsKCgoKCgogICAgaWYgKGR4ID09IDApIHsKCiAg
ICAgICAgZnByaW50ZihncG91dGZpbGUsICJcXHB1dCglZCwlZCl7XFwlcygwLCVkKXslZH19XG4i
LAogICAgICAgICAgICAgICAgc3gsIHN5LCBoZWFkID8gInZlY3RvciIgOiAibGluZSIsCiAgICAg
ICAgICAgICAgICAoKGV5IC0gc3kpID49IDAgPyAxIDogLTEpLCAoKGV5IC0gc3kpID49IDAgPyAo
ZXkgLSBzeSkgOiAtKGV5IC0gc3kpKSk7CiAgICB9IGVsc2UgaWYgKGR5ID09IDApIHsKCiAgICAg
ICAgZnByaW50ZihncG91dGZpbGUsICJcXHB1dCglZCwlZCl7XFwlcyglZCwwKXslZH19XG4iLAog
ICAgICAgICAgICAgICAgc3gsIHN5LCBoZWFkID8gInZlY3RvciIgOiAibGluZSIsCiAgICAgICAg
ICAgICAgICAoKGV4IC0gc3gpID49IDAgPyAxIDogLTEpLCAoKGV4IC0gc3gpID49IDAgPyAoZXgg
LSBzeCkgOiAtKGV4IC0gc3gpKSk7CiAgICB9IGVsc2UgewoKCgogICAgICAgIGJlc3RzbG9wZSA9
ICgodm9pZCAqKTApOwogICAgICAgIG1pbmVycm9yID0gMDsKICAgICAgICBtID0gKCgoZmxvYXQp
IGR5IC8gZHgpID49IDAgPyAoKGZsb2F0KSBkeSAvIGR4KSA6IC0oKGZsb2F0KSBkeSAvIGR4KSk7
CiAgICAgICAgZm9yIChzbG9wZSA9IExBVEVYX3Nsb3Blczsgc2xvcGUtPmR4ICE9IDAuMDsgc2xv
cGUrKykgewoKICAgICAgICAgICAgYXJyb3dzbG9wZSA9IChmbG9hdCkgc2xvcGUtPmR5IC8gc2xv
cGUtPmR4OwogICAgICAgICAgICBpZiAoYmVzdHNsb3BlID09ICgodm9pZCAqKTApIHx8ICgobSAt
IGFycm93c2xvcGUpID49IDAgPyAobSAtIGFycm93c2xvcGUpIDogLShtIC0gYXJyb3dzbG9wZSkp
IDwgbWluZXJyb3IpIHsKICAgICAgICAgICAgICAgIG1pbmVycm9yID0gKChtIC0gYXJyb3dzbG9w
ZSkgPj0gMCA/IChtIC0gYXJyb3dzbG9wZSkgOiAtKG0gLSBhcnJvd3Nsb3BlKSk7CiAgICAgICAg
ICAgICAgICBiZXN0c2xvcGUgPSBzbG9wZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCgoKICAg
ICAgICBpZiAobWluZXJyb3IgPT0gMC4wKQogICAgICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwg
IlxccHV0KCVkLCVkKXtcXCVzKCVkLCVkKXslZH19XG4iLAogICAgICAgICAgICAgICAgICAgIHN4
LCBzeSwgaGVhZCA/ICJ2ZWN0b3IiIDogImxpbmUiLAogICAgICAgICAgICAgICAgICAgIGJlc3Rz
bG9wZS0+ZHggKiAoKGV4IC0gc3gpID49IDAgPyAxIDogLTEpLCBiZXN0c2xvcGUtPmR5ICogKChl
eSAtIHN5KSA+PSAwID8gMSA6IC0xKSwKICAgICAgICAgICAgICAgICAgICAoKGV4IC0gc3gpID49
IDAgPyAoZXggLSBzeCkgOiAtKGV4IC0gc3gpKSk7CiAgICAgICAgZWxzZSB7CgoKICAgICAgICAg
ICAgaWYgKGVtdGV4KSB7CiAgICAgICAgICAgICAgICBMQVRFWF9saW5ldHlwZSgwKTsKICAgICAg
ICAgICAgICAgIEVNVEVYX3NvbGlkX2xpbmUoc3gsIGV4LCBzeSwgZXkpOwogICAgICAgICAgICB9
IGVsc2UKCiAgICAgICAgICAgIGlmICh3aG8gPT0gMSkgewogICAgICAgICAgICAgICAgTEFURVhf
bGluZXR5cGUoMCk7CiAgICAgICAgICAgICAgICBMQVRFWF9zb2xpZF9saW5lKHN4LCBleCwgc3ks
IGV5KTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBF
RVBJQ19tb3ZlKHN4LCBzeSk7CiAgICAgICAgICAgICAgICBFRVBJQ192ZWN0b3IoZXgsIGV5KTsK
ICAgICAgICAgICAgfQoKCiAgICAgICAgICAgIGlmIChoZWFkKQogICAgICAgICAgICAgICAgZnBy
aW50ZihncG91dGZpbGUsICJcXHB1dCglZCwlZCl7XFx2ZWN0b3IoJWQsJWQpezB9fVxuIiwKICAg
ICAgICAgICAgICAgICAgICAgICAgZXgsIGV5LAogICAgICAgICAgICAgICAgICAgICAgICBiZXN0
c2xvcGUtPmR4ICogKChleCAtIHN4KSA+PSAwID8gMSA6IC0xKSwgYmVzdHNsb3BlLT5keSAqICgo
ZXkgLSBzeSkgPj0gMCA/IDEgOiAtMSkpOwogICAgICAgIH0KICAgIH0KfQoKc3RhdGljIHZvaWQg
TEFURVhfcHV0X3RleHQoeCwgeSwgc3RyKQp1bnNpZ25lZCBpbnQgeCwgeTsKY2hhciBzdHJbXTsK
ewogICAgc3RhdGljIGNoYXIgKmp1c3RpZnlbXSA9CiAgICB7IltsXSIsICIiLCAiW3JdIn07CiAg
ICBpbnQgZmxhZywgaTsKCgogICAgaWYgKHN0clswXSA9PSAoJ1wwJykpCiAgICAgICAgcmV0dXJu
OwoKICAgIGZvciAoZmxhZyA9IDAsIGkgPSAwOyBzdHJbaV0gJiYgIWZsYWc7KQogICAgICAgIGZs
YWcgPSAoc3RyW2krK10gPT0gJ1xcJykgJiYgKHN0cltpKytdID09ICdcXCcpOwoKICAgIGZwcmlu
dGYoZ3BvdXRmaWxlLCAiXFxwdXQoJWQsJWQpIiwgeCwgeSk7CiAgICBpZiAoKHN0clswXSA9PSAn
eycpIHx8IChzdHJbMF0gPT0gJ1snKSkgewogICAgICAgIGZwcmludGYoZ3BvdXRmaWxlLCAie1xc
bWFrZWJveCgwLDApJXN9XG4iLCBzdHIpOwogICAgfSBlbHNlIGlmIChmbGFnKQogICAgICAgIGZw
cmludGYoZ3BvdXRmaWxlLCAie1xcbWFrZWJveCgwLDApJXN7XFxzaG9ydHN0YWNreyVzfX19XG4i
LAogICAgICAgICAgICAgICAganVzdGlmeVtsYXRleF9qdXN0aWZ5XSwgc3RyKTsKICAgIGVsc2UK
ICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgIntcXG1ha2Vib3goMCwwKSVzeyVzfX1cbiIsCiAg
ICAgICAgICAgICAgICBqdXN0aWZ5W2xhdGV4X2p1c3RpZnldLCBzdHIpOwp9CgpzdGF0aWMgaW50
IExBVEVYX2p1c3RpZnlfdGV4dChtb2RlKQplbnVtIEpVU1RJRlkgbW9kZTsKewogICAgbGF0ZXhf
anVzdGlmeSA9IG1vZGU7CiAgICByZXR1cm4gKDEpOwp9CgpzdGF0aWMgaW50IExBVEVYX3RleHRf
YW5nbGUoYW5nKQppbnQgYW5nOwp7CgoKCiAgICBsYXRleF9hbmdsZSA9IGFuZzsKICAgIHJldHVy
biAoMSk7Cn0KCnN0YXRpYyB2b2lkIExBVEVYX3Jlc2V0KCkKewogICAgTEFURVhfcG9zeCA9IExB
VEVYX3Bvc3kgPSAwOwogICAgTEFURVhfbW92ZWQgPSAxOwp9CgoKCgpzdGF0aWMgdm9pZCBFTVRF
WF9pbml0KCkKewogICAgZW10ZXggPSAxOwogICAgTEFURVhfcG9zeCA9IExBVEVYX3Bvc3kgPSAw
OwogICAgZnByaW50ZihncG91dGZpbGUsICIlJSBHTlVQTE9UOiBMYVRlWCBwaWN0dXJlIHdpdGgg
ZW10ZXggc3BlY2lhbHNcblxcc2V0bGVuZ3Roe1xcdW5pdGxlbmd0aH17JWZwdH1cblxcaWZ4XFxw
bG90cG9pbnRcXHVuZGVmaW5lZFxcbmV3c2F2ZWJveHtcXHBsb3Rwb2ludH1cXGZpXG4iLAoKCgog
ICAgICAgICAgICAoKDcyLjI3KS8oMzAwKSkpOwogICAgTEFURVhfbGluZXR5cGUoLTEpOwp9CgoK
c3RhdGljIHZvaWQgRU1URVhfcmVzZXQoKQp7CiAgICBlbXRleCA9IDA7CiAgICBMQVRFWF9wb3N4
ID0gTEFURVhfcG9zeSA9IDA7Cn0KCgpzdGF0aWMgdm9pZCBFTVRFWF90ZXh0KCkKewogICAgZnB1
dHMoIlxcZW5ke3BpY3R1cmV9XG4iLCBncG91dGZpbGUpOwp9CgoKc3RhdGljIHZvaWQgRU1URVhf
c29saWRfbGluZSh4MSwgeDIsIHkxLCB5MikKaW50IHgxLCB4MiwgeTEsIHkyOwp7CgogICAgaWYg
KExBVEVYX21vdmVkKQogICAgICAgIGZwcmludGYoZ3BvdXRmaWxlLCAiXFxwdXQoJWQsJWQpe1xc
c3BlY2lhbHtlbTptb3ZldG99fVxuIiwgeDEsIHkxKTsKICAgIGlmICgoeDEgIT0geDIpIHx8ICh5
MSAhPSB5MikpCiAgICAgICAgZnByaW50ZihncG91dGZpbGUsICJcXHB1dCglZCwlZCl7XFxzcGVj
aWFse2VtOmxpbmV0b319XG4iLCB4MiwgeTIpOwogICAgTEFURVhfcG9zeCA9IHgyOwogICAgTEFU
RVhfcG9zeSA9IHkyOwogICAgTEFURVhfbW92ZWQgPSAwOwp9CiMgMzczICJ0ZXJtLmgiIDIKCgoj
IDEgInRlcm0vcHNsYXRleC50cm0iIDEKIyA1MiAidGVybS9wc2xhdGV4LnRybSIKIyAxICJ0ZXJt
L2RyaXZlci5oIiAxCiMgNTMgInRlcm0vcHNsYXRleC50cm0iIDIKCgoKCgoKCnN0YXRpYyB2b2lk
IFBTTEFURVhfb3B0aW9ucyAodm9pZCk7CnN0YXRpYyB2b2lkIFBTTEFURVhfaW5pdCAodm9pZCk7
CnN0YXRpYyB2b2lkIFBTTEFURVhfZ3JhcGhpY3MgKHZvaWQpOwpzdGF0aWMgdm9pZCBQU0xBVEVY
X3B1dF90ZXh0ICh1bnNpZ25lZCBpbnQgeCwgdW5zaWduZWQgaW50IHksIGNoYXIgc3RyW10pOwpz
dGF0aWMgaW50IFBTTEFURVhfanVzdGlmeV90ZXh0IChlbnVtIEpVU1RJRlkgbW9kZSk7CnN0YXRp
YyBpbnQgUFNMQVRFWF90ZXh0X2FuZ2xlIChpbnQgYW5nKTsKc3RhdGljIHZvaWQgUFNMQVRFWF9y
ZXNldCAodm9pZCk7CnN0YXRpYyB2b2lkIFBTTEFURVhfdGV4dCAodm9pZCk7CnN0YXRpYyB2b2lk
IFBTTEFURVhfbW92ZSAodW5zaWduZWQgaW50IHgsIHVuc2lnbmVkIGludCB5KTsKc3RhdGljIHZv
aWQgUFNMQVRFWF92ZWN0b3IgKHVuc2lnbmVkIGludCB4LCB1bnNpZ25lZCBpbnQgeSk7CnN0YXRp
YyB2b2lkIFBTTEFURVhfbGluZXR5cGUgKGludCBsdCk7CnN0YXRpYyB2b2lkIFBTTEFURVhfcG9p
bnQgKHVuc2lnbmVkIGludCB4LCB1bnNpZ25lZCBpbnQgeSwgaW50IG51bWJlcik7CnN0YXRpYyB2
b2lkIFBTTEFURVhfcG9pbnRzaXplIChkb3VibGUgc2l6ZSk7CnN0YXRpYyB2b2lkIFBTTEFURVhf
bGluZXdpZHRoIChkb3VibGUgd2lkdGgpOwojIDg5ICJ0ZXJtL3BzbGF0ZXgudHJtIgpzdGF0aWMg
aW50IFBTTEFURVhfYW5nbGU7CnN0YXRpYyBpbnQgUFNMQVRFWF9qdXN0aWZ5OwpzdGF0aWMgaW50
IFBTTEFURVhfcm90YXRlID0gMTsKc3RhdGljIGNoYXIgKlBTTEFURVhfcHNmaWxlID0gKCh2b2lk
ICopMCk7CnN0YXRpYyBUQk9PTEVBTiBQU0xBVEVYX3VzZUF1eEZpbGUgPSAwOwpzdGF0aWMgRklM
RSAqUFNMQVRFWF9hdXhGaWxlID0gKCh2b2lkICopMCk7CnN0YXRpYyBUQk9PTEVBTiBQU0xBVEVY
X291dHB1dCA9IDE7CgpzdHJ1Y3QgdGV4dF9jb21tYW5kIHsKICAgIGludCB4LCB5LCBhbmdsZSwg
anVzdGlmeTsKICAgIGNoYXIgKmxhYmVsOwogICAgc3RydWN0IHRleHRfY29tbWFuZCAqbmV4dDsK
fTsKCnN0YXRpYyBzdHJ1Y3QgdGV4dF9jb21tYW5kICpQU0xBVEVYX2xhYmVsczsKCnN0YXRpYyB2
b2lkIFBTTEFURVhfb3B0aW9ucygpCnsKICAgIGlmICghKGNfdG9rZW4gPj0gbnVtX3Rva2VucyB8
fCBlcXVhbHMoY190b2tlbiwiOyIpKSkgewogICAgICAgIGlmIChhbG1vc3RfZXF1YWxzKGNfdG9r
ZW4sICJkJGVmYXVsdCIpKSB7CiAgICAgICAgICAgIHBzX2NvbG9yID0gMDsKICAgICAgICAgICAg
cHNfc29saWQgPSAwOwogICAgICAgICAgICBQU0xBVEVYX3JvdGF0ZSA9IDE7CiAgICAgICAgICAg
IFBTTEFURVhfdXNlQXV4RmlsZSA9IDA7CiAgICAgICAgICAgIGNfdG9rZW4rKzsKICAgICAgICB9
CiAgICB9CiAgICBpZiAoIShjX3Rva2VuID49IG51bV90b2tlbnMgfHwgZXF1YWxzKGNfdG9rZW4s
IjsiKSkpIHsKICAgICAgICBpZiAoYWxtb3N0X2VxdWFscyhjX3Rva2VuLCAiYyRvbG9yIikKICAg
ICAgICAgICAgfHwgYWxtb3N0X2VxdWFscyhjX3Rva2VuLCAiYyRvbG91ciIpKSB7CiAgICAgICAg
ICAgIHBzX2NvbG9yID0gMTsKICAgICAgICAgICAgY190b2tlbisrOwogICAgICAgIH0KICAgIH0K
ICAgIGlmICghKGNfdG9rZW4gPj0gbnVtX3Rva2VucyB8fCBlcXVhbHMoY190b2tlbiwiOyIpKSkg
ewogICAgICAgIGlmIChhbG1vc3RfZXF1YWxzKGNfdG9rZW4sICJtJG9ub2Nocm9tZSIpKSB7CiAg
ICAgICAgICAgIHBzX2NvbG9yID0gMDsKICAgICAgICAgICAgY190b2tlbisrOwogICAgICAgIH0K
ICAgIH0KICAgIGlmICghKGNfdG9rZW4gPj0gbnVtX3Rva2VucyB8fCBlcXVhbHMoY190b2tlbiwi
OyIpKSkgewogICAgICAgIGlmIChhbG1vc3RfZXF1YWxzKGNfdG9rZW4sICJzbyRsaWQiKSkgewog
ICAgICAgICAgICBwc19zb2xpZCA9IDE7CiAgICAgICAgICAgIGNfdG9rZW4rKzsKICAgICAgICB9
IGVsc2UgaWYgKGFsbW9zdF9lcXVhbHMoY190b2tlbiwgImRhJHNoZWQiKSkgewogICAgICAgICAg
ICBwc19zb2xpZCA9IDA7CiAgICAgICAgICAgIGNfdG9rZW4rKzsKICAgICAgICB9CiAgICB9CiAg
ICBpZiAoIShjX3Rva2VuID49IG51bV90b2tlbnMgfHwgZXF1YWxzKGNfdG9rZW4sIjsiKSkpIHsK
ICAgICAgICBpZiAoYWxtb3N0X2VxdWFscyhjX3Rva2VuLCAiciRvdGF0ZSIpKSB7CiAgICAgICAg
ICAgIFBTTEFURVhfcm90YXRlID0gMTsKICAgICAgICAgICAgY190b2tlbisrOwogICAgICAgIH0K
ICAgIH0KICAgIGlmICghKGNfdG9rZW4gPj0gbnVtX3Rva2VucyB8fCBlcXVhbHMoY190b2tlbiwi
OyIpKSkgewogICAgICAgIGlmIChhbG1vc3RfZXF1YWxzKGNfdG9rZW4sICJuJG9yb3RhdGUiKSkg
ewogICAgICAgICAgICBQU0xBVEVYX3JvdGF0ZSA9IDA7CiAgICAgICAgICAgIGNfdG9rZW4rKzsK
ICAgICAgICB9CiAgICB9CiAgICBpZiAoIShjX3Rva2VuID49IG51bV90b2tlbnMgfHwgZXF1YWxz
KGNfdG9rZW4sIjsiKSkpIHsKICAgICAgICBpZiAoYWxtb3N0X2VxdWFscyhjX3Rva2VuLCAiYSR1
eGZpbGUiKSkgewogICAgICAgICAgICBQU0xBVEVYX3VzZUF1eEZpbGUgPSAxOwogICAgICAgICAg
ICBjX3Rva2VuKys7CiAgICAgICAgfQogICAgfQogICAgaWYgKCEoY190b2tlbiA+PSBudW1fdG9r
ZW5zIHx8IGVxdWFscyhjX3Rva2VuLCI7IikpKSB7CgogICAgICAgIHN0cnVjdCB2YWx1ZSBhOwog
ICAgICAgIGludCBwc19mb250c2l6ZSA9IChpbnQpIHJlYWwoY29uc3RfZXhwcmVzcygmYSkpOwog
ICAgICAgIHRlcm0tPnZfY2hhciA9ICh1bnNpZ25lZCBpbnQpIChwc19mb250c2l6ZSAqICgxMCkp
OwogICAgICAgIHRlcm0tPmhfY2hhciA9ICh1bnNpZ25lZCBpbnQpIChwc19mb250c2l6ZSAqICgx
MCkgLyAyKTsKICAgIH0KCgogICAgc3ByaW50Zih0ZXJtX29wdGlvbnMsICIlcyAlcyAlcyVzIiwK
ICAgICAgICAgICAgcHNfY29sb3IgPyAiY29sb3IiIDogIm1vbm9jaHJvbWUiLAogICAgICAgICAg
ICBwc19zb2xpZCA/ICJzb2xpZCIgOiAiZGFzaGVkIiwKICAgICAgICAgICAgUFNMQVRFWF9yb3Rh
dGUgPyAicm90YXRlIiA6ICJub3JvdGF0ZSIsCiAgICAgICAgICAgIFBTTEFURVhfdXNlQXV4Rmls
ZSA/ICIgYXV4ZmlsZSIgOiAiIik7Cn0KCnN0YXRpYyB2b2lkIFBTTEFURVhfaW5pdCgpCnsKICAg
IGNoYXIgKmRvdEluZGV4OwoKICAgIGlmIChfX2V4dGVuc2lvbl9fICh7IHNpemVfdCBfX3MxX2xl
biwgX19zMl9sZW47IChfX2J1aWx0aW5fY29uc3RhbnRfcCAodGVybS0+bmFtZSkgJiYgX19idWls
dGluX2NvbnN0YW50X3AgKCJwc3RleCIpICYmIChfX3MxX2xlbiA9IHN0cmxlbiAodGVybS0+bmFt
ZSksIF9fczJfbGVuID0gc3RybGVuICgicHN0ZXgiKSwgKCEoKHNpemVfdCkoY29uc3Qgdm9pZCAq
KSgodGVybS0+bmFtZSkgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikodGVybS0+bmFtZSkg
PT0gMSkgfHwgX19zMV9sZW4gPj0gNCkgJiYgKCEoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoInBz
dGV4IikgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoInBzdGV4IikgPT0gMSkgfHwgX19z
Ml9sZW4gPj0gNCkpID8gbWVtY21wICgoX19jb25zdCBjaGFyICopICh0ZXJtLT5uYW1lKSwgKF9f
Y29uc3QgY2hhciAqKSAoInBzdGV4IiksIChfX3MxX2xlbiA8IF9fczJfbGVuID8gX19zMV9sZW4g
OiBfX3MyX2xlbikgKyAxKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCAodGVybS0+bmFtZSkgJiYg
KChzaXplX3QpKGNvbnN0IHZvaWQgKikoKHRlcm0tPm5hbWUpICsgMSkgLSAoc2l6ZV90KShjb25z
dCB2b2lkICopKHRlcm0tPm5hbWUpID09IDEpICYmIChfX3MxX2xlbiA9IHN0cmxlbiAodGVybS0+
bmFtZSksIF9fczFfbGVuIDwgNCkgPyAoX19idWlsdGluX2NvbnN0YW50X3AgKCJwc3RleCIpICYm
ICgoc2l6ZV90KShjb25zdCB2b2lkICopKCgicHN0ZXgiKSArIDEpIC0gKHNpemVfdCkoY29uc3Qg
dm9pZCAqKSgicHN0ZXgiKSA9PSAxKSA/IChfX2V4dGVuc2lvbl9fICh7IHJlZ2lzdGVyIGludCBf
X3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICh0
ZXJtLT5uYW1lKSlbMF0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFy
ICopKCJwc3RleCIpKVswXSk7IGlmIChfX3MxX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBf
X3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICh0
ZXJtLT5uYW1lKSlbMV0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFy
ICopICgicHN0ZXgiKSlbMV0pOyBpZiAoX19zMV9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsg
X19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAo
dGVybS0+bmFtZSkpWzJdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh
ciAqKSAoInBzdGV4IikpWzJdKTsgaWYgKF9fczFfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBf
X3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICh0
ZXJtLT5uYW1lKSlbM10gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFy
ICopICgicHN0ZXgiKSlbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSA6IChfX2V4dGVuc2lvbl9fICh7
IF9fY29uc3QgdW5zaWduZWQgY2hhciAqX19zMiA9IChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikg
KF9fY29uc3QgY2hhciAqKSAoInBzdGV4Iik7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9ICgoKF9f
Y29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICh0ZXJtLT5uYW1lKSlbMF0g
LSBfX3MyWzBdKTsgaWYgKF9fczFfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0
ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHRlcm0tPm5h
bWUpKVsxXSAtIF9fczJbMV0pOyBpZiAoX19zMV9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsg
X19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAo
dGVybS0+bmFtZSkpWzJdIC0gX19zMlsyXSk7IGlmIChfX3MxX2xlbiA+IDIgJiYgX19yZXN1bHQg
PT0gMCkgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh
ciAqKSAodGVybS0+bmFtZSkpWzNdIC0gX19zMlszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpKSA6IChf
X2J1aWx0aW5fY29uc3RhbnRfcCAoInBzdGV4IikgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKiko
KCJwc3RleCIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKCJwc3RleCIpID09IDEpICYm
IChfX3MyX2xlbiA9IHN0cmxlbiAoInBzdGV4IiksIF9fczJfbGVuIDwgNCkgPyAoX19idWlsdGlu
X2NvbnN0YW50X3AgKHRlcm0tPm5hbWUpICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKCh0ZXJt
LT5uYW1lKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSh0ZXJtLT5uYW1lKSA9PSAxKSA/
IChfX2V4dGVuc2lvbl9fICh7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5z
aWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICh0ZXJtLT5uYW1lKSlbMF0gLSAoKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopKCJwc3RleCIpKVswXSk7IGlmIChf
X3MyX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5z
aWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICh0ZXJtLT5uYW1lKSlbMV0gLSAoKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgicHN0ZXgiKSlbMV0pOyBpZiAo
X19zMl9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVu
c2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAodGVybS0+bmFtZSkpWzJdIC0gKChfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoInBzdGV4IikpWzJdKTsgaWYg
KF9fczJfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5z
aWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICh0ZXJtLT5uYW1lKSlbM10gLSAoKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgicHN0ZXgiKSlbM10pOyB9IH0g
X19yZXN1bHQ7IH0pKSA6IChfX2V4dGVuc2lvbl9fICh7IF9fY29uc3QgdW5zaWduZWQgY2hhciAq
X19zMSA9IChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAodGVybS0+
bmFtZSk7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9IF9fczFbMF0gLSAoKF9fY29uc3QgdW5zaWdu
ZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgicHN0ZXgiKSlbMF07IGlmIChfX3MyX2xlbiA+
IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9IChfX3MxWzFdIC0gKChfX2NvbnN0IHVu
c2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoInBzdGV4IikpWzFdKTsgaWYgKF9fczJf
bGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKF9fczFbMl0gLSAoKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgicHN0ZXgiKSlbMl0pOyBpZiAo
X19zMl9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKF9fczFbM10gLSAoKF9f
Y29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgicHN0ZXgiKSlbM10pOyB9
IH0gX19yZXN1bHQ7IH0pKSkgOiBzdHJjbXAgKHRlcm0tPm5hbWUsICJwc3RleCIpKSkpOyB9KSA9
PSAwKQogICAgICAgIFBTTEFURVhfb3V0cHV0ID0gMDsKCgogICAgUFNMQVRFWF9hdXhGaWxlID0g
KCh2b2lkICopMCk7CiMgMTg5ICJ0ZXJtL3BzbGF0ZXgudHJtIgogICAgaWYgKChkb3RJbmRleCA9
IHN0cnJjaHIob3V0c3RyLCAnLicpKSA9PSAoKHZvaWQgKikwKSkKICAgICAgICBkb3RJbmRleCA9
IChfX2V4dGVuc2lvbl9fIChfX2J1aWx0aW5fY29uc3RhbnRfcCAoKCdcMCcpKSAmJiAoKCdcMCcp
KSA9PSAnXDAnID8gKGNoYXIgKikgX19yYXdtZW1jaHIgKG91dHN0ciwgKCdcMCcpKSA6IHN0cmNo
ciAob3V0c3RyLCAoJ1wwJykpKSk7CgoKICAgIGlmIChvdXRzdHIgJiYgUFNMQVRFWF91c2VBdXhG
aWxlID09IDEpIHsKCgogICAgICAgIFBTTEFURVhfcHNmaWxlID0gZ3BfcmVhbGxvYyAoUFNMQVRF
WF9wc2ZpbGUsKGRvdEluZGV4IC0gb3V0c3RyKSArIDQsInBzbGF0ZXggYXV4IGZpbGVuYW1lIik7
CiAgICAgICAgaWYgKFBTTEFURVhfcHNmaWxlKSB7CgogICAgICAgICAgICAoX19leHRlbnNpb25f
XyAoX19idWlsdGluX2NvbnN0YW50X3AgKG91dHN0cikgJiYgX19idWlsdGluX2NvbnN0YW50X3Ag
KChkb3RJbmRleCAtIG91dHN0cikgKyAxKSA/IChzdHJsZW4gKG91dHN0cikgKyAxID49ICgoc2l6
ZV90KSAoKGRvdEluZGV4IC0gb3V0c3RyKSArIDEpKSA/IChjaGFyICopIG1lbWNweSAoUFNMQVRF
WF9wc2ZpbGUsIG91dHN0ciwgKGRvdEluZGV4IC0gb3V0c3RyKSArIDEpIDogc3RybmNweSAoUFNM
QVRFWF9wc2ZpbGUsIG91dHN0ciwgKGRvdEluZGV4IC0gb3V0c3RyKSArIDEpKSA6IHN0cm5jcHkg
KFBTTEFURVhfcHNmaWxlLCBvdXRzdHIsIChkb3RJbmRleCAtIG91dHN0cikgKyAxKSkpOwoKICAg
ICAgICAgICAgKF9fZXh0ZW5zaW9uX18gKF9fYnVpbHRpbl9jb25zdGFudF9wICgiLnBzIikgPyAo
KChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCIucHMiKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9p
ZCAqKSgiLnBzIikgPT0gMSkgJiYgc3RybGVuICgiLnBzIikgKyAxIDw9IDggPyBfX3N0cmNweV9z
bWFsbCAoUFNMQVRFWF9wc2ZpbGUgKyAoZG90SW5kZXggLSBvdXRzdHIpLCBfX2V4dGVuc2lvbl9f
ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiLnBzIikpWzAg
KyAxXSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAo
Ii5wcyIpKVswXSksIF9fZXh0ZW5zaW9uX18gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf
X2NvbnN0IGNoYXIgKikgKCIucHMiKSlbNCArIDFdIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQg
Y2hhciAqKSAoX19jb25zdCBjaGFyICopICgiLnBzIikpWzRdKSwgX19leHRlbnNpb25fXyAoKCgo
KF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiLnBzIikpWzAgKyAz
XSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi5w
cyIpKVswICsgMl0pIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBj
aGFyICopICgiLnBzIikpWzAgKyAxXSkgPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikgKCIucHMiKSlbMF0pLCBfX2V4dGVuc2lvbl9fICgoKCgoX19jb25z
dCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCIucHMiKSlbNCArIDNdIDw8IDgg
fCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiLnBzIikpWzQg
KyAyXSkgPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KCIucHMiKSlbNCArIDFdKSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29u
c3QgY2hhciAqKSAoIi5wcyIpKVs0XSksIHN0cmxlbiAoIi5wcyIpICsgMSkgOiAoY2hhciAqKSBt
ZW1jcHkgKFBTTEFURVhfcHNmaWxlICsgKGRvdEluZGV4IC0gb3V0c3RyKSwgIi5wcyIsIHN0cmxl
biAoIi5wcyIpICsgMSkpIDogc3RyY3B5IChQU0xBVEVYX3BzZmlsZSArIChkb3RJbmRleCAtIG91
dHN0ciksICIucHMiKSkpOwogICAgICAgICAgICBQU0xBVEVYX2F1eEZpbGUgPSBmb3BlbihQU0xB
VEVYX3BzZmlsZSwgInciKTsKICAgICAgICAgICAgaWYgKFBTTEFURVhfYXV4RmlsZSA9PSAoRklM
RSAqKSAoKHZvaWQgKikwKSkgewogICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJDYW5u
b3Qgb3BlbiBhdXggZmlsZSAlcyBmb3Igb3V0cHV0XG4iLAogICAgICAgICAgICAgICAgICAgICAg
ICBQU0xBVEVYX3BzZmlsZSk7CgogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgZnByaW50ZihzdGRlcnIsICJDYW5ub3QgbWFrZSBQb3N0U2NyaXB0IGZpbGUgbmFtZSBm
cm9tICVzXG5UdXJuaW5nIG9mZiBhdXhmaWxlIG9wdGlvblxuIiwgb3V0c3RyKTsKCgogICAgICAg
ICAgICBQU0xBVEVYX2F1eEZpbGUgPSAoKHZvaWQgKikwKTsKICAgICAgICAgICAgICAgICAgICAg
ICBQU0xBVEVYX3VzZUF1eEZpbGUgPSAwOwogICAgICAgIH0KICAgIH0KICAgIGlmIChQU0xBVEVY
X291dHB1dCkgewogICAgICAgIGZwdXRzKCIlIEdOVVBMT1Q6IExhVGVYIHBpY3R1cmUgd2l0aCBQ
b3N0c2NyaXB0XG5cXGJlZ2luZ3JvdXAlXG4gIFxcbWFrZWF0bGV0dGVyJVxuICBcXG5ld2NvbW1h
bmR7XFxHTlVQTE9Uc3BlY2lhbH17JVxuICAgIFxcQHNhbml0aXplXFxjYXRjb2RlYFxcJT0xNFxc
cmVsYXhcXHNwZWNpYWx9JVxuICBcXHNldGxlbmd0aHtcXHVuaXRsZW5ndGh9ezAuMWJwfSVcbiIs
IGdwb3V0ZmlsZSk7CgoKCgoKCiAgICB9IGVsc2UgewoKCgogICAgICAgIGZwdXRzKCIlIEdOVVBM
T1Q6IHBsYWluIFRlWCB3aXRoIFBvc3RzY3JpcHRcblxcYmVnaW5ncm91cFxuICBcXGNhdGNvZGVg
XFxAPTExXFxyZWxheFxuICBcXGRlZlxcR05VUExPVHNwZWNpYWx7JVxuICAgIFxcZGVmXFxkbyMj
MXtcXGNhdGNvZGVgIyMxPTEyXFxyZWxheH1cXGRvc3BlY2lhbHNcbiAgICBcXGNhdGNvZGVgXFx7
PTFcXGNhdGNvZGVgXFx9PTJcXGNhdGNvZGVcXCU9MTRcXHJlbGF4XFxzcGVjaWFsfSVcbiVcblxc
ZXhwYW5kYWZ0ZXJcXGlmeFxcY3NuYW1lIEdOVVBMT1RwaWN0dXJlXFxlbmRjc25hbWVcXHJlbGF4
XG4gIFxcY3NuYW1lIG5ld2RpbWVuXFxlbmRjc25hbWVcXEdOVVBMT1R1bml0XG4gIFxcZ2RlZlxc
R05VUExPVHBpY3R1cmUoIzEsIzIpe1xcdmJveCB0byMyXFxHTlVQTE9UdW5pdFxcYmdyb3VwXG4g
ICAgXFxkZWZcXHB1dCgjIzEsIyMyKSMjM3tcXHVuc2tpcFxccmFpc2UjIzJcXEdOVVBMT1R1bml0
XG4gICAgICBcXGhib3ggdG8wcHR7XFxrZXJuIyMxXFxHTlVQTE9UdW5pdCAjIzNcXGhzc31cXGln
bm9yZXNwYWNlc30lXG4gICAgXFxkZWZcXGxqdXN0IyMxe1xcdmJveCB0bzBwdHtcXHZzc1xcaGJv
eCB0bzBwdHsjIzFcXGhzc31cXHZzc319JVxuICAgIFxcZGVmXFxjanVzdCMjMXtcXHZib3ggdG8w
cHR7XFx2c3NcXGhib3ggdG8wcHR7XFxoc3MgIyMxXFxoc3N9XFx2c3N9fSVcbiAgICBcXGRlZlxc
cmp1c3QjIzF7XFx2Ym94IHRvMHB0e1xcdnNzXFxoYm94IHRvMHB0e1xcaHNzICMjMX1cXHZzc319
JVxuICAgIFxcZGVmXFxzdGFjayMjMXtcXGxldFxcXFw9XFxjclxcdGFic2tpcD0wcHRcXGhhbGln
bntcXGhmaWwgIyMjI1xcaGZpbFxcY3IgIyMxXFxjcmNyfX0lXG4gICAgXFxkZWZcXGxzdGFjayMj
MXtcXGhib3ggdG8wcHR7XFx2Ym94IHRvMHB0e1xcdnNzXFxzdGFja3sjIzF9fVxcaHNzfX0lXG4g
ICAgXFxkZWZcXGNzdGFjayMjMXtcXGhib3ggdG8wcHR7XFxoc3NcXHZib3ggdG8wcHR7XFx2c3Nc
XHN0YWNreyMjMX19XFxoc3N9fSVcbiAgICBcXGRlZlxccnN0YWNrIyMxe1xcaGJveCB0bzBwdHtc
XHZib3ggdG8wcHR7XFxzdGFja3sjIzF9XFx2c3N9XFxoc3N9fSVcbiAgICBcXHZzc1xcaGJveCB0
byMxXFxHTlVQTE9UdW5pdFxcYmdyb3VwXFxpZ25vcmVzcGFjZXN9JVxuICBcXGdkZWZcXGVuZEdO
VVBMT1RwaWN0dXJle1xcaHNzXFxlZ3JvdXBcXGVncm91cH0lXG5cXGZpXG5cXEdOVVBMT1R1bml0
PTAuMWJwXG4iLCBncG91dGZpbGUpOwojIDI1MiAidGVybS9wc2xhdGV4LnRybSIKICAgIH0KCiAg
ICB7CiAgICAgICAgdW5zaWduZWQgaW50IHhtaW5fdCA9IHhvZmZzZXQgKiAoNSo3MjApIC8gKDEw
KTsKICAgICAgICB1bnNpZ25lZCBpbnQgeG1heF90ID0gKHhvZmZzZXQgKyB4c2l6ZSkgKiAoNSo3
MjApIC8gKDEwKTsKICAgICAgICB1bnNpZ25lZCBpbnQgeW1pbl90ID0geW9mZnNldCAqICgzKjcy
MCkgLyAoMTApOwogICAgICAgIHVuc2lnbmVkIGludCB5bWF4X3QgPSAoeW9mZnNldCArIHlzaXpl
KSAqICgzKjcyMCkgLyAoMTApOwoKICAgICAgICBpZiAoUFNMQVRFWF9hdXhGaWxlKSB7CiAgICAg
ICAgICAgIEZJTEUgKnRtcCA9IGdwb3V0ZmlsZTsKICAgICAgICAgICAgZ3BvdXRmaWxlID0gUFNM
QVRFWF9hdXhGaWxlOwogICAgICAgICAgICBQU19jb21tb25faW5pdCgxLCAxLCAwLCAwLCAwLCB4
bWluX3QsIHltaW5fdCwgeG1heF90LCB5bWF4X3QsICgodm9pZCAqKTApKTsKICAgICAgICAgICAg
Z3BvdXRmaWxlID0gdG1wOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGZwdXRzKCJ7XFxH
TlVQTE9Uc3BlY2lhbHshXG4iLCBncG91dGZpbGUpOwogICAgICAgICAgICBQU19jb21tb25faW5p
dCgxLCAxLCAwLCAwLCAwLCB4bWluX3QsIHltaW5fdCwgeG1heF90LCB5bWF4X3QsICgodm9pZCAq
KTApKTsKICAgICAgICAgICAgZnB1dHMoIn19JVxuIiwgZ3BvdXRmaWxlKTsKICAgICAgICB9CiAg
ICB9CgogICAgUFNMQVRFWF9hbmdsZSA9IDA7CiAgICBQU0xBVEVYX2p1c3RpZnkgPSAwOwogICAg
UFNMQVRFWF9sYWJlbHMgPSAwOwp9CgpzdGF0aWMgdm9pZCBQU0xBVEVYX2dyYXBoaWNzKCkKewog
ICAgc3RydWN0IFRFUk1FTlRSWSAqdCA9IHRlcm07CgogICAgaWYgKFBTTEFURVhfb3V0cHV0KQog
ICAgICAgIGZwcmludGYoZ3BvdXRmaWxlLCAiXFxiZWdpbntwaWN0dXJlfSglZCwlZCkoMCwwKSUl
XG4iLAogICAgICAgICAgICAgICAgKGludCkgKHhzaXplICogdC0+eG1heCksIChpbnQpICh5c2l6
ZSAqIHQtPnltYXgpKTsKICAgIGVsc2UKICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgIlxcR05V
UExPVHBpY3R1cmUoJWQsJWQpXG4iLAogICAgICAgICAgICAgICAgKGludCkgKHhzaXplICogdC0+
eG1heCksIChpbnQpICh5c2l6ZSAqIHQtPnltYXgpKTsKCiAgICBpZiAoUFNMQVRFWF9hdXhGaWxl
KSB7CiAgICAgICAgRklMRSAqdG1wOwoKCiAgICAgICAgaW50IHVyeCA9IChpbnQpICh4c2l6ZSAq
ICg3MjAwKSAvICgxMCkgKyAwLjUpOwogICAgICAgIGludCB1cnkgPSAoaW50KSAoeXNpemUgKiAo
NTA0MCkgLyAoMTApICsgMC41KTsKCgogICAgICAgIGNoYXIgKnBzZmlsZV9iYXNlbmFtZSA9IHN0
cnJjaHIoUFNMQVRFWF9wc2ZpbGUsICcvJyk7CgogICAgICAgIGlmIChwc2ZpbGVfYmFzZW5hbWUp
CiAgICAgICAgICAgIHBzZmlsZV9iYXNlbmFtZSsrOwogICAgICAgIGVsc2UgewogICAgICAgICAg
ICBpZiAoKCdcMCcpICE9ICgnXDAnKSkgewogICAgICAgICAgICAgICAgcHNmaWxlX2Jhc2VuYW1l
ID0gc3RycmNocihQU0xBVEVYX3BzZmlsZSwgKCdcMCcpKTsKICAgICAgICAgICAgICAgIGlmIChw
c2ZpbGVfYmFzZW5hbWUpCiAgICAgICAgICAgICAgICAgICAgcHNmaWxlX2Jhc2VuYW1lKys7CiAg
ICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgcHNmaWxlX2Jhc2VuYW1lID0g
UFNMQVRFWF9wc2ZpbGU7CiAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgcHNmaWxl
X2Jhc2VuYW1lID0gUFNMQVRFWF9wc2ZpbGU7CiAgICAgICAgfQoKCiAgICAgICAgZnByaW50Zihn
cG91dGZpbGUsCiAgICAgICAgICAgICAgICAiXFxzcGVjaWFse3BzZmlsZT0lcyBsbHg9MCBsbHk9
MCB1cng9JWQgdXJ5PSVkIHJ3aT0lZH1cbiIsCiAgICAgICAgICAgICAgICBwc2ZpbGVfYmFzZW5h
bWUsIHVyeCwgdXJ5LCAxMCAqIHVyeCk7CiAgICAgICAgdG1wID0gZ3BvdXRmaWxlOwogICAgICAg
IGdwb3V0ZmlsZSA9IFBTTEFURVhfYXV4RmlsZTsKICAgICAgICBQU19ncmFwaGljcygpOwogICAg
ICAgIGdwb3V0ZmlsZSA9IHRtcDsKICAgIH0gZWxzZSB7CiAgICAgICAgZnB1dHMoIntcXEdOVVBM
T1RzcGVjaWFse1wiXG4iLCBncG91dGZpbGUpOwogICAgICAgIFBTX2dyYXBoaWNzKCk7CiAgICB9
CgogICAgUFNMQVRFWF9sYWJlbHMgPSAoc3RydWN0IHRleHRfY29tbWFuZCAqKSAoKHZvaWQgKikw
KTsKfQoKc3RhdGljIHZvaWQgUFNMQVRFWF9wdXRfdGV4dCh4LCB5LCBzdHIpCnVuc2lnbmVkIGlu
dCB4LCB5OwpjaGFyIHN0cltdOwp7CiAgICBzdHJ1Y3QgdGV4dF9jb21tYW5kICp0YzsKCgogICAg
aWYgKHN0clswXSA9PSAoJ1wwJykpCiAgICAgICAgcmV0dXJuOwoKICAgIHRjID0gKHN0cnVjdCB0
ZXh0X2NvbW1hbmQgKikgZ3BfYWxsb2Moc2l6ZW9mKHN0cnVjdCB0ZXh0X2NvbW1hbmQpLCB0ZXJt
LT5uYW1lKTsKICAgIHRjLT54ID0geDsKICAgIHRjLT55ID0geTsKICAgIHRjLT5sYWJlbCA9IChj
aGFyICopIGdwX2FsbG9jKHN0cmxlbihzdHIpICsgMSwgdGVybS0+bmFtZSk7CiAgICAoX19leHRl
bnNpb25fXyAoX19idWlsdGluX2NvbnN0YW50X3AgKHN0cikgPyAoKChzaXplX3QpKGNvbnN0IHZv
aWQgKikoKHN0cikgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoc3RyKSA9PSAxKSAmJiBz
dHJsZW4gKHN0cikgKyAxIDw9IDggPyBfX3N0cmNweV9zbWFsbCAodGMtPmxhYmVsLCBfX2V4dGVu
c2lvbl9fICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChzdHIp
KVswICsgMV0gPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIg
KikgKHN0cikpWzBdKSwgX19leHRlbnNpb25fXyAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikg
KF9fY29uc3QgY2hhciAqKSAoc3RyKSlbNCArIDFdIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQg
Y2hhciAqKSAoX19jb25zdCBjaGFyICopIChzdHIpKVs0XSksIF9fZXh0ZW5zaW9uX18gKCgoKChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoc3RyKSlbMCArIDNdIDw8
IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChzdHIpKVsw
ICsgMl0pIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop
IChzdHIpKVswICsgMV0pIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25z
dCBjaGFyICopIChzdHIpKVswXSksIF9fZXh0ZW5zaW9uX18gKCgoKChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoc3RyKSlbNCArIDNdIDw8IDggfCAoKF9fY29uc3Qg
dW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChzdHIpKVs0ICsgMl0pIDw8IDggfCAo
KF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChzdHIpKVs0ICsgMV0p
IDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChzdHIp
KVs0XSksIHN0cmxlbiAoc3RyKSArIDEpIDogKGNoYXIgKikgbWVtY3B5ICh0Yy0+bGFiZWwsIHN0
ciwgc3RybGVuIChzdHIpICsgMSkpIDogc3RyY3B5ICh0Yy0+bGFiZWwsIHN0cikpKTsKICAgIHRj
LT5qdXN0aWZ5ID0gUFNMQVRFWF9qdXN0aWZ5OwogICAgdGMtPmFuZ2xlID0gUFNMQVRFWF9hbmds
ZTsKCiAgICB0Yy0+bmV4dCA9IFBTTEFURVhfbGFiZWxzOwogICAgUFNMQVRFWF9sYWJlbHMgPSB0
YzsKfQoKc3RhdGljIGludCBQU0xBVEVYX2p1c3RpZnlfdGV4dChtb2RlKQplbnVtIEpVU1RJRlkg
bW9kZTsKewogICAgUFNMQVRFWF9qdXN0aWZ5ID0gbW9kZTsKICAgIHJldHVybiAxOwp9CgpzdGF0
aWMgaW50IFBTTEFURVhfdGV4dF9hbmdsZShhbmcpCmludCBhbmc7CnsKCgogICAgUFNMQVRFWF9h
bmdsZSA9IGFuZzsKICAgIHJldHVybiAxOwp9CgoKc3RhdGljIHZvaWQgUFNMQVRFWF9yZXNldCgp
CnsKICAgIGlmIChQU0xBVEVYX2F1eEZpbGUpIHsKICAgICAgICBmY2xvc2UoUFNMQVRFWF9hdXhG
aWxlKTsKICAgICAgICBQU0xBVEVYX2F1eEZpbGUgPSAoKHZvaWQgKikwKTsKICAgIH0KICAgIGlm
IChQU0xBVEVYX3BzZmlsZSkgewogICAgICAgIGZyZWUoUFNMQVRFWF9wc2ZpbGUpOwogICAgICAg
IFBTTEFURVhfcHNmaWxlID0gKCh2b2lkICopMCk7CiAgICB9Cn0KCnN0YXRpYyB2b2lkIFBTTEFU
RVhfdGV4dCgpCnsKICAgIHN0cnVjdCB0ZXh0X2NvbW1hbmQgKnRjOwoKICAgIGlmIChQU0xBVEVY
X2F1eEZpbGUpIHsKICAgICAgICBGSUxFICp0bXAgPSBncG91dGZpbGU7CiAgICAgICAgZ3BvdXRm
aWxlID0gUFNMQVRFWF9hdXhGaWxlOwogICAgICAgIFBTX3RleHQoKTsKICAgICAgICBncG91dGZp
bGUgPSB0bXA7CiAgICB9IGVsc2UgewogICAgICAgIFBTX3RleHQoKTsKICAgICAgICBmcHV0cygi
fX0lXG4iLCBncG91dGZpbGUpOwogICAgfQoKICAgIGZvciAodGMgPSBQU0xBVEVYX2xhYmVsczsg
dGMgIT0gKHN0cnVjdCB0ZXh0X2NvbW1hbmQgKikgKCh2b2lkICopMCk7IHRjID0gdGMtPm5leHQp
IHsKICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgIlxccHV0KCVkLCVkKXsiLCB0Yy0+eCwgdGMt
PnkpOwogICAgICAgIGlmIChQU0xBVEVYX291dHB1dCAmJgogICAgICAgICAgICAoKHRjLT5sYWJl
bFswXSA9PSAneycpIHx8ICh0Yy0+bGFiZWxbMF0gPT0gJ1snKSkpIHsKICAgICAgICAgICAgZnBy
aW50ZihncG91dGZpbGUsICJcXG1ha2Vib3goMCwwKSVzIiwgdGMtPmxhYmVsKTsKICAgICAgICB9
IGVsc2UKICAgICAgICAgICAgc3dpdGNoICh0Yy0+YW5nbGUpIHsKICAgICAgICAgICAgY2FzZSAw
OgogICAgICAgICAgICAgICAgc3dpdGNoICh0Yy0+anVzdGlmeSkgewogICAgICAgICAgICAgICAg
Y2FzZSBMRUZUOgogICAgICAgICAgICAgICAgICAgIGZwcmludGYoZ3BvdXRmaWxlLCAoUFNMQVRF
WF9vdXRwdXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gIlxcbWFr
ZWJveCgwLDApW2xdeyVzfSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDogIlxcbGp1c3R7JXN9IiksIHRjLT5sYWJlbCk7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAgICBjYXNlIENFTlRSRToKICAgICAgICAgICAgICAgICAgICBmcHJpbnRm
KGdwb3V0ZmlsZSwgKFBTTEFURVhfb3V0cHV0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA/ICJcXG1ha2Vib3goMCwwKXslc30iCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA6ICJcXGNqdXN0eyVzfSIpLCB0Yy0+bGFiZWwpOwogICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSBSSUdIVDoKICAgICAgICAgICAg
ICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgKFBTTEFURVhfb3V0cHV0CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA/ICJcXG1ha2Vib3goMCwwKVtyXXslc30iCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICJcXHJqdXN0eyVzfSIpLCB0Yy0+
bGFiZWwpOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICAgIGlm
IChQU0xBVEVYX3JvdGF0ZSkgewogICAgICAgICAgICAgICAgICAgIGZwdXRzKCIlXG5cXHNwZWNp
YWx7cHM6IGdzYXZlIGN1cnJlbnRwb2ludCBjdXJyZW50cG9pbnQgdHJhbnNsYXRlXG4yNzAgcm90
YXRlIG5lZyBleGNoIG5lZyBleGNoIHRyYW5zbGF0ZX0lXG4iLCBncG91dGZpbGUpOwoKCiAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBzd2l0Y2ggKHRjLT5qdXN0aWZ5KSB7CiAgICAg
ICAgICAgICAgICBjYXNlIExFRlQ6CiAgICAgICAgICAgICAgICAgICAgZnByaW50ZihncG91dGZp
bGUsIChQU0xBVEVYX291dHB1dAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPyAiXFxtYWtlYm94KDAsMClbbGJde1xcc2hvcnRzdGFja3slc319IgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAiXFxsc3RhY2t7JXN9IiksCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0Yy0+bGFiZWwpOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgICAgY2FzZSBDRU5UUkU6CiAgICAgICAgICAgICAgICAgICAgZnByaW50Zihn
cG91dGZpbGUsIChQU0xBVEVYX291dHB1dAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPyAiXFxtYWtlYm94KDAsMClbYl17XFxzaG9ydHN0YWNreyVzfX0iCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICJcXGNzdGFja3slc30iKSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRjLT5sYWJlbCk7CiAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAgICBjYXNlIFJJR0hUOgogICAgICAgICAgICAgICAgICAgIGZwcmlu
dGYoZ3BvdXRmaWxlLCAoUFNMQVRFWF9vdXRwdXQKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID8gIlxcbWFrZWJveCgwLDApW2x0XXtcXHNob3J0c3RhY2t7JXN9fSIKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogIlxccnN0YWNreyVzfSIpLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGMtPmxhYmVsKTsKICAgICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChQU0xBVEVYX3Jv
dGF0ZSkgewogICAgICAgICAgICAgICAgICAgIGZwdXRzKCIlXG5cXHNwZWNpYWx7cHM6IGN1cnJl
bnRwb2ludCBncmVzdG9yZSBtb3ZldG99JVxuIiwgZ3BvdXRmaWxlKTsKICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgfQogICAgICAgIGZwdXRzKCJ9JVxuIiwgZ3BvdXRmaWxlKTsKICAgIH0K
CiAgICB3aGlsZSAoUFNMQVRFWF9sYWJlbHMpIHsKICAgICAgICB0YyA9IFBTTEFURVhfbGFiZWxz
LT5uZXh0OwogICAgICAgIGZyZWUoUFNMQVRFWF9sYWJlbHMtPmxhYmVsKTsKICAgICAgICBmcmVl
KFBTTEFURVhfbGFiZWxzKTsKICAgICAgICBQU0xBVEVYX2xhYmVscyA9IHRjOwogICAgfQoKICAg
IGlmIChQU0xBVEVYX291dHB1dCkgewogICAgICAgIGZwdXRzKCJcXGVuZHtwaWN0dXJlfSVcblxc
ZW5kZ3JvdXBcblxcZW5kaW5wdXRcbiIsIGdwb3V0ZmlsZSk7CgoKCiAgICB9IGVsc2UgewogICAg
ICAgIGZwdXRzKCJcXGVuZEdOVVBMT1RwaWN0dXJlXG5cXGVuZGdyb3VwXG5cXGVuZGlucHV0XG4i
LCBncG91dGZpbGUpOwoKCgogICAgfQp9CgpzdGF0aWMgdm9pZCBQU0xBVEVYX21vdmUoeCwgeSkK
dW5zaWduZWQgaW50IHgsIHk7CnsKICAgIGlmIChQU0xBVEVYX2F1eEZpbGUpIHsKICAgICAgICBG
SUxFICp0bXAgPSBncG91dGZpbGU7CiAgICAgICAgZ3BvdXRmaWxlID0gUFNMQVRFWF9hdXhGaWxl
OwogICAgICAgIFBTX21vdmUoeCwgeSk7CiAgICAgICAgZ3BvdXRmaWxlID0gdG1wOwogICAgfSBl
bHNlIHsKICAgICAgICBQU19tb3ZlKHgsIHkpOwogICAgfQp9CgoKc3RhdGljIHZvaWQgUFNMQVRF
WF92ZWN0b3IoeCwgeSkKdW5zaWduZWQgaW50IHgsIHk7CnsKCiAgICBpZiAoUFNMQVRFWF9hdXhG
aWxlKSB7CiAgICAgICAgRklMRSAqdG1wID0gZ3BvdXRmaWxlOwogICAgICAgIGdwb3V0ZmlsZSA9
IFBTTEFURVhfYXV4RmlsZTsKICAgICAgICBQU192ZWN0b3IoeCwgeSk7CiAgICAgICAgZ3BvdXRm
aWxlID0gdG1wOwogICAgfSBlbHNlIHsKICAgICAgICBQU192ZWN0b3IoeCwgeSk7CiAgICB9Cn0K
CgpzdGF0aWMgdm9pZCBQU0xBVEVYX2xpbmV0eXBlKGx0KQppbnQgbHQ7CnsKICAgIGlmIChQU0xB
VEVYX2F1eEZpbGUpIHsKICAgICAgICBGSUxFICp0bXAgPSBncG91dGZpbGU7CiAgICAgICAgZ3Bv
dXRmaWxlID0gUFNMQVRFWF9hdXhGaWxlOwogICAgICAgIFBTX2xpbmV0eXBlKGx0KTsKICAgICAg
ICBncG91dGZpbGUgPSB0bXA7CiAgICB9IGVsc2UgewogICAgICAgIFBTX2xpbmV0eXBlKGx0KTsK
ICAgIH0KfQoKc3RhdGljIHZvaWQgUFNMQVRFWF9wb2ludCh4LCB5LCBudW1iZXIpCnVuc2lnbmVk
IGludCB4LCB5OwppbnQgbnVtYmVyOwp7CiAgICBpZiAoUFNMQVRFWF9hdXhGaWxlKSB7CiAgICAg
ICAgRklMRSAqdG1wID0gZ3BvdXRmaWxlOwogICAgICAgIGdwb3V0ZmlsZSA9IFBTTEFURVhfYXV4
RmlsZTsKICAgICAgICBQU19wb2ludCh4LCB5LCBudW1iZXIpOwogICAgICAgIGdwb3V0ZmlsZSA9
IHRtcDsKICAgIH0gZWxzZQogICAgICAgIFBTX3BvaW50KHgsIHksIG51bWJlcik7Cn0KCgpzdGF0
aWMgdm9pZCBQU0xBVEVYX3BvaW50c2l6ZShwcykKZG91YmxlIHBzOwp7CiAgICBpZiAoUFNMQVRF
WF9hdXhGaWxlKSB7CiAgICAgICAgRklMRSAqdG1wID0gZ3BvdXRmaWxlOwogICAgICAgIGdwb3V0
ZmlsZSA9IFBTTEFURVhfYXV4RmlsZTsKICAgICAgICBQU19wb2ludHNpemUocHMpOwogICAgICAg
IGdwb3V0ZmlsZSA9IHRtcDsKICAgIH0gZWxzZQogICAgICAgIFBTX3BvaW50c2l6ZShwcyk7Cn0K
CgpzdGF0aWMgdm9pZCBQU0xBVEVYX2xpbmV3aWR0aChwcykKZG91YmxlIHBzOwp7CiAgICBpZiAo
UFNMQVRFWF9hdXhGaWxlKSB7CiAgICAgICAgRklMRSAqdG1wID0gZ3BvdXRmaWxlOwogICAgICAg
IGdwb3V0ZmlsZSA9IFBTTEFURVhfYXV4RmlsZTsKICAgICAgICBQU19saW5ld2lkdGgocHMpOwog
ICAgICAgIGdwb3V0ZmlsZSA9IHRtcDsKICAgIH0gZWxzZQogICAgICAgIFBTX2xpbmV3aWR0aChw
cyk7Cn0KIyAzNzYgInRlcm0uaCIgMgoKCiMgMSAidGVybS9lZXBpYy50cm0iIDEKIyA2NyAidGVy
bS9lZXBpYy50cm0iCiMgMSAidGVybS9kcml2ZXIuaCIgMQojIDY4ICJ0ZXJtL2VlcGljLnRybSIg
MgoKCgoKCgpzdGF0aWMgdm9pZCBFRVBJQ19pbml0ICh2b2lkKTsKc3RhdGljIHZvaWQgRUVQSUNf
Z3JhcGhpY3MgKHZvaWQpOwpzdGF0aWMgdm9pZCBFRVBJQ190ZXh0ICh2b2lkKTsKc3RhdGljIHZv
aWQgRUVQSUNfbGluZXR5cGUgKGludCBsaW5ldHlwZSk7CnN0YXRpYyB2b2lkIEVFUElDX21vdmUg
KHVuc2lnbmVkIGludCB4LCB1bnNpZ25lZCBpbnQgeSk7CnN0YXRpYyB2b2lkIEVFUElDX3BvaW50
ICh1bnNpZ25lZCBpbnQgeCwgdW5zaWduZWQgaW50IHksIGludCBudW1iZXIpOwoKc3RhdGljIHZv
aWQgRUVQSUNfdmVjdG9yICh1bnNpZ25lZCBpbnQgdXgsIHVuc2lnbmVkIGludCB1eSk7CnN0YXRp
YyB2b2lkIEVFUElDX2Fycm93ICh1bnNpZ25lZCBpbnQgc3gsIHVuc2lnbmVkIGludCBzeSwgdW5z
aWduZWQgaW50IGV4LCB1bnNpZ25lZCBpbnQgZXksIFRCT09MRUFOIGhlYWQpOwoKCnN0YXRpYyB2
b2lkIEVFUElDX3B1dF90ZXh0ICh1bnNpZ25lZCBpbnQgeCwgdW5zaWduZWQgaW50IHksIGNoYXIg
c3RyW10pOwoKc3RhdGljIGludCBFRVBJQ19qdXN0aWZ5X3RleHQgKGVudW0gSlVTVElGWSBtb2Rl
KTsKc3RhdGljIGludCBFRVBJQ190ZXh0X2FuZ2xlIChpbnQgYW5nKTsKc3RhdGljIHZvaWQgRUVQ
SUNfcmVzZXQgKHZvaWQpOwojIDExMiAidGVybS9lZXBpYy50cm0iCnN0YXRpYyB1bnNpZ25lZCBp
bnQgRUVQSUNfcG9zeDsKc3RhdGljIHVuc2lnbmVkIGludCBFRVBJQ19wb3N5OwplbnVtIEpVU1RJ
RlkgZWVwaWNfanVzdGlmeSA9IExFRlQ7CnN0YXRpYyBpbnQgZWVwaWNfYW5nbGUgPSAwOwoKCgoK
CgpzdGF0aWMgY2hhciAqIEVFUElDX3BvaW50c1tdID0KewogICAgIlxccmFpc2Vib3h7LTEuMnB0
fXtcXG1ha2Vib3goMCwwKXskXFxEaWFtb25kJH19IiwKICAgICJcXG1ha2Vib3goMCwwKXskKyR9
IiwKICAgICJcXHJhaXNlYm94ey0xLjJwdH17XFxtYWtlYm94KDAsMCl7JFxcQm94JH19IiwKICAg
ICJcXG1ha2Vib3goMCwwKXskXFx0aW1lcyR9IiwKICAgICJcXG1ha2Vib3goMCwwKXskXFx0cmlh
bmdsZSR9IiwKICAgICJcXG1ha2Vib3goMCwwKXskXFxzdGFyJH0iLAogICAgIlxcY2lyY2xlezEy
fSIsICJcXGNpcmNsZXsxOH0iLCAiXFxjaXJjbGV7MjR9IiwKICAgICJcXGNpcmNsZSp7MTJ9Iiwg
IlxcY2lyY2xlKnsxOH0iLCAiXFxjaXJjbGUqezI0fSIKfTsKCgoKc3RhdGljIGNoYXIgKiBFRVBJ
Q19saW5lc1tdID0KewogICAgIlxcdGhpY2tsaW5lcyBcXHBhdGgiLAogICAgIlxcdGhpbmxpbmVz
IFxcZHJhd2xpbmVbLTUwXSIsCiAgICAiXFx0aGlubGluZXMgXFxwYXRoIiwKICAgICJcXHRoaWNr
bGluZXMgXFxwYXRoIiwKICAgICJcXFRoaWNrbGluZXMgXFxwYXRoIiwKfTsKCgoKCgoKCnN0YXRp
YyBpbnQgRUVQSUNfdHlwZTsKc3RhdGljIFRCT09MRUFOIEVFUElDX2lubGluZSA9IDA7CnZvaWQg
RUVQSUNfZW5kbGluZSAodm9pZCk7CnN0YXRpYyBpbnQgRUVQSUNfbGluZWNvdW50ID0gMDsKCgoK
Cgp2b2lkIGJlc3RfbGF0ZXhfYXJyb3cgKGludCBzeCwgaW50IHN5LCBpbnQgZXgsIGludCBleSwg
aW50IHdobywgVEJPT0xFQU4gaGVhZCk7CgoKc3RhdGljIHZvaWQgRUVQSUNfaW5pdCgpCnsKICAg
IEVFUElDX3Bvc3ggPSBFRVBJQ19wb3N5ID0gMDsKICAgIEVFUElDX2xpbmV0eXBlKC0xKTsKICAg
IGZwcmludGYoZ3BvdXRmaWxlLCAiJSUgR05VUExPVDogTGFUZVggcGljdHVyZSB1c2luZyBFRVBJ
QyBtYWNyb3Ncblxcc2V0bGVuZ3Roe1xcdW5pdGxlbmd0aH17JWZwdH1cbiIsICgoNzIuMjcpLygz
MDApKSk7Cgp9CgoKc3RhdGljIHZvaWQgRUVQSUNfZ3JhcGhpY3MoKQp7CiAgICByZWdpc3RlciBz
dHJ1Y3QgVEVSTUVOVFJZICp0ID0gdGVybTsKCiAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgIlxcYmVn
aW57cGljdHVyZX0oJWQsJWQpKDAsMClcblxcZm9vdG5vdGVzaXplXG4iLCB0LT54bWF4LCB0LT55
bWF4KTsKCgp9CgoKc3RhdGljIHZvaWQgRUVQSUNfdGV4dCgpCnsKICAgIEVFUElDX2VuZGxpbmUo
KTsKICAgIGZwdXRzKCJcXGVuZHtwaWN0dXJlfVxuIiwgZ3BvdXRmaWxlKTsKfQoKCnN0YXRpYyB2
b2lkIEVFUElDX2xpbmV0eXBlKGxpbmV0eXBlKQppbnQgbGluZXR5cGU7CnsKICAgIEVFUElDX2Vu
ZGxpbmUoKTsKCiAgICBpZiAobGluZXR5cGUgPj0gNSAtIDIpCiAgICAgICAgbGluZXR5cGUgJT0g
KDUgLSAyKTsKCiAgICBFRVBJQ190eXBlID0gbGluZXR5cGU7Cn0KCgoKc3RhdGljIHZvaWQgRUVQ
SUNfbW92ZSh4LCB5KQp1bnNpZ25lZCBpbnQgeCwgeTsKewogICAgRUVQSUNfZW5kbGluZSgpOwoK
ICAgIEVFUElDX3Bvc3ggPSB4OwogICAgRUVQSUNfcG9zeSA9IHk7Cn0KCgpzdGF0aWMgdm9pZCBF
RVBJQ19wb2ludCh4LCB5LCBudW1iZXIpCnVuc2lnbmVkIGludCB4LCB5OwppbnQgbnVtYmVyOwp7
CiAgICBFRVBJQ19tb3ZlKHgsIHkpOwoKCgogICAgZnByaW50ZihncG91dGZpbGUsICJcXHB1dCgl
ZCwlZCl7JXN9XG4iLCB4LCB5LAogICAgICAgICAgICAobnVtYmVyIDwgMCA/ICJcXHJ1bGV7LjFw
dH17LjFwdH0iCiAgICAgICAgICAgICA6IEVFUElDX3BvaW50c1tudW1iZXIgJSAxMl0pKTsKfQoK
CnN0YXRpYyB2b2lkIEVFUElDX3ZlY3Rvcih1eCwgdXkpCnVuc2lnbmVkIGludCB1eCwgdXk7CnsK
ICAgIGlmICghRUVQSUNfaW5saW5lKSB7CiAgICAgICAgRUVQSUNfaW5saW5lID0gMTsKCgogICAg
ICAgIGZwcmludGYoZ3BvdXRmaWxlLCAiJXMoJXUsJXUpIiwKICAgICAgICAgICAgICAgIEVFUElD
X2xpbmVzW0VFUElDX3R5cGUgKyAyXSwKICAgICAgICAgICAgICAgIEVFUElDX3Bvc3gsIEVFUElD
X3Bvc3kpOwogICAgICAgIEVFUElDX2xpbmVjb3VudCA9IDE7CiAgICB9IGVsc2UgewoKCgoKICAg
ICAgICBpZiAoRUVQSUNfbGluZWNvdW50KysgPj0gNTApIHsKICAgICAgICAgICAgZnByaW50Zihn
cG91dGZpbGUsICJcbiVzKCV1LCV1KSIsCiAgICAgICAgICAgICAgICAgICAgRUVQSUNfbGluZXNb
RUVQSUNfdHlwZSArIDJdLAogICAgICAgICAgICAgICAgICAgIEVFUElDX3Bvc3gsIEVFUElDX3Bv
c3kpOwogICAgICAgICAgICBFRVBJQ19saW5lY291bnQgPSAxOwogICAgICAgIH0KICAgIH0KICAg
IGZwcmludGYoZ3BvdXRmaWxlLCAiKCV1LCV1KSIsIHV4LCB1eSk7CiAgICBFRVBJQ19wb3N4ID0g
dXg7CiAgICBFRVBJQ19wb3N5ID0gdXk7Cn0KCnZvaWQgRUVQSUNfZW5kbGluZSgpCnsKICAgIGlm
IChFRVBJQ19pbmxpbmUpIHsKICAgICAgICBfSU9fcHV0YyAoJ1xuJywgZ3BvdXRmaWxlKTsKICAg
ICAgICBFRVBJQ19pbmxpbmUgPSAwOwogICAgfQp9CgoKc3RhdGljIHZvaWQgRUVQSUNfYXJyb3co
c3gsIHN5LCBleCwgZXksIGhlYWQpCnVuc2lnbmVkIGludCBzeCwgc3ksIGV4LCBleTsKVEJPT0xF
QU4gaGVhZDsKewogICAgYmVzdF9sYXRleF9hcnJvdyhzeCwgc3ksIGV4LCBleSwgMiwgaGVhZCk7
CgogICAgRUVQSUNfcG9zeCA9IGV4OwogICAgRUVQSUNfcG9zeSA9IGV5Owp9CgoKc3RhdGljIHZv
aWQgRUVQSUNfcHV0X3RleHQoeCwgeSwgc3RyKQp1bnNpZ25lZCBpbnQgeCwgeTsKY2hhciBzdHJb
XTsKewogICAgRUVQSUNfZW5kbGluZSgpOwoKICAgIGZwcmludGYoZ3BvdXRmaWxlLCAiXFxwdXQo
JWQsJWQpIiwgeCwgeSk7CiAgICBpZiAoKHN0clswXSA9PSAneycpIHx8IChzdHJbMF0gPT0gJ1sn
KSkgewogICAgICAgIGZwcmludGYoZ3BvdXRmaWxlLCAie1xcbWFrZWJveCgwLDApJXN9XG4iLCBz
dHIpOwogICAgfSBlbHNlCiAgICAgICAgc3dpdGNoIChlZXBpY19hbmdsZSkgewogICAgICAgIGNh
c2UgMDp7CiAgICAgICAgICAgICAgICBzd2l0Y2ggKGVlcGljX2p1c3RpZnkpIHsKICAgICAgICAg
ICAgICAgIGNhc2UgTEVGVDp7CiAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoZ3BvdXRm
aWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ7XFxtYWtlYm94KDAsMClbbF17
JXN9fVxuIiwgc3RyKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgY2FzZSBDRU5UUkU6ewogICAgICAgICAgICAgICAg
ICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAie1xcbWFrZWJveCgwLDApeyVzfX1cbiIsIHN0cik7CiAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGNhc2UgUklHSFQ6
ewogICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAie1xcbWFrZWJveCgwLDApW3JdeyVzfX1cbiIsIHN0cik7CiAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAg
Y2FzZSAxOnsKICAgICAgICAgICAgICAgIHN3aXRjaCAoZWVwaWNfanVzdGlmeSkgewogICAgICAg
ICAgICAgICAgY2FzZSBMRUZUOnsKICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihncG91
dGZpbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIntcXG1ha2Vib3goMCwwKVts
Yl17XFxzaG9ydHN0YWNreyVzfX19XG4iLCBzdHIpOwogICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBjYXNlIENFTlRSRTp7
CiAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoZ3BvdXRmaWxlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJ7XFxtYWtlYm94KDAsMClbbF17XFxzaG9ydHN0YWNreyVzfX19
XG4iLCBzdHIpOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICBjYXNlIFJJR0hUOnsKICAgICAgICAgICAgICAgICAgICAg
ICAgZnByaW50ZihncG91dGZpbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIntc
XG1ha2Vib3goMCwwKVtsdF17XFxzaG9ydHN0YWNreyVzfX19XG4iLCBzdHIpOwogICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KfQoKCgpz
dGF0aWMgaW50IEVFUElDX2p1c3RpZnlfdGV4dChtb2RlKQplbnVtIEpVU1RJRlkgbW9kZTsKewog
ICAgZWVwaWNfanVzdGlmeSA9IG1vZGU7CiAgICByZXR1cm4gKDEpOwp9CgpzdGF0aWMgaW50IEVF
UElDX3RleHRfYW5nbGUoYW5nKQppbnQgYW5nOwp7CgoKCiAgICBlZXBpY19hbmdsZSA9IGFuZzsK
ICAgIHJldHVybiAoMSk7Cn0KCnN0YXRpYyB2b2lkIEVFUElDX3Jlc2V0KCkKewogICAgRUVQSUNf
ZW5kbGluZSgpOwogICAgRUVQSUNfcG9zeCA9IEVFUElDX3Bvc3kgPSAwOwp9CiMgMzc5ICJ0ZXJt
LmgiIDIKCgojIDEgInRlcm0vdHBpYy50cm0iIDEKIyA4MiAidGVybS90cGljLnRybSIKIyAxICJ0
ZXJtL2RyaXZlci5oIiAxCiMgODMgInRlcm0vdHBpYy50cm0iIDIKCgoKCgoKc3RhdGljIHZvaWQg
VFBJQ19vcHRpb25zICh2b2lkKTsKc3RhdGljIHZvaWQgVFBJQ19pbml0ICh2b2lkKTsKc3RhdGlj
IHZvaWQgVFBJQ19yZXNldCAodm9pZCk7CnN0YXRpYyB2b2lkIFRQSUNfdGV4dCAodm9pZCk7CnN0
YXRpYyB2b2lkIFRQSUNfZ3JhcGhpY3MgKHZvaWQpOwpzdGF0aWMgdm9pZCBUUElDX21vdmUgKHVu
c2lnbmVkIGludCB4LCB1bnNpZ25lZCBpbnQgeSk7CnN0YXRpYyB2b2lkIFRQSUNfdmVjdG9yICh1
bnNpZ25lZCBpbnQgdXgsIHVuc2lnbmVkIGludCB1eSk7CnN0YXRpYyB2b2lkIFRQSUNfbGluZXR5
cGUgKGludCBsaW5ldHlwZSk7CnN0YXRpYyB2b2lkIFRQSUNfcHV0X3RleHQgKHVuc2lnbmVkIGlu
dCB4LCB1bnNpZ25lZCBpbnQgeSwgY2hhciAqc3RyKTsKc3RhdGljIGludCBUUElDX3RleHRfYW5n
bGUgKGludCBhbmcpOwpzdGF0aWMgaW50IFRQSUNfanVzdGlmeV90ZXh0IChlbnVtIEpVU1RJRlkg
bW9kZSk7CnN0YXRpYyB2b2lkIFRQSUNfcG9pbnQgKHVuc2lnbmVkIGludCB4LCB1bnNpZ25lZCBp
bnQgeSwgaW50IG51bWJlcik7CnN0YXRpYyB2b2lkIFRQSUNfYXJyb3cgKHVuc2lnbmVkIGludCBz
eCwgdW5zaWduZWQgaW50IHN5LCB1bnNpZ25lZCBpbnQgZXgsIHVuc2lnbmVkIGludCBleSwgVEJP
T0xFQU4gaGVhZCk7CiMgMTE4ICJ0ZXJtL3RwaWMudHJtIgpzdGF0aWMgaW50IHRwaWNfcG9pbnRz
aXplID0gNDA7CnN0YXRpYyBpbnQgdHBpY19saW5ld2lkdGggPSA2OwpzdGF0aWMgZG91YmxlIHRw
aWNfaW50ZXJ2YWwgPSAwLjE7CgoKCnZvaWQgYmVzdF9sYXRleF9hcnJvdyAoaW50IHN4LCBpbnQg
c3ksIGludCBleCwgaW50IGV5LCBpbnQgd2hvLCBUQk9PTEVBTiBoZWFkKTsKCgpzdGF0aWMgdm9p
ZCB0cGljX3N0YXJ0bGluZSAodm9pZCk7CnN0YXRpYyB2b2lkIHRwaWNfZW5kbGluZSAodm9pZCk7
CnN0YXRpYyB2b2lkIHRwaWNfcHVzaHBhdGggKHVuc2lnbmVkIGludCB4LCB1bnNpZ25lZCBpbnQg
eSk7CnN0YXRpYyB2b2lkIHRwaWNfc2NhbnBhdGggKHZvaWQpOwp2b2lkIHRwaWNfZGlhbW9uZCAo
aW50IHNpemUpOwp2b2lkIHRwaWNfcGx1cyAoaW50IHNpemUpOwp2b2lkIHRwaWNfYm94IChpbnQg
c2l6ZSk7CnZvaWQgdHBpY190aW1lcyAoaW50IHNpemUpOwp2b2lkIHRwaWNfdHJpYW5nbGUgKGlu
dCBzaXplKTsKdm9pZCB0cGljX3N0YXIgKGludCBzaXplKTsKdm9pZCB0cGljX2hleGFnb24gKGlu
dCBzaXplKTsKdm9pZCB0cGljX2NpcmNsZSAoaW50IHNpemUpOwp2b2lkIHRwaWNfZG91YmxlY2ly
Y2xlIChpbnQgc2l6ZSk7CnZvaWQgdHBpY192ZXJjaXJjbGUgKGludCBzaXplKTsKdm9pZCB0cGlj
X2hvcmNpcmNsZSAoaW50IHNpemUpOwp2b2lkIHRwaWNfcGx1c2NpcmNsZSAoaW50IHNpemUpOwp2
b2lkIHRwaWNfdGltZXNjaXJjbGUgKGludCBzaXplKTsKdm9pZCB0cGljX3N0YXJjaXJjbGUgKGlu
dCBzaXplKTsKdm9pZCB0cGljX2RvdGNpcmNsZSAoaW50IHNpemUpOwp2b2lkIHRwaWNfZGlhbW9u
ZGNpcmNsZSAoaW50IHNpemUpOwp2b2lkIHRwaWNfYm94Y2lyY2xlIChpbnQgc2l6ZSk7CnZvaWQg
dHBpY190cmlhbmdsZWNpcmNsZSAoaW50IHNpemUpOwp2b2lkIHRwaWNfaGV4YWdvbmNpcmNsZSAo
aW50IHNpemUpOwp2b2lkIHRwaWNfcGx1c3RpbWVzY2lyY2xlIChpbnQgc2l6ZSk7CnZvaWQgdHBp
Y19hYnNwYXRoICh1bnNpZ25lZCBpbnQgeCwgdW5zaWduZWQgaW50IHkpOwp2b2lkIHRwaWNfcGF0
aCAoaW50IHgsIGludCB5KTsKdm9pZCB0cGljX2ZsdXNoICh2b2lkKTsKdm9pZCB0cGljX2FyYyAo
aW50IHJhZGl1cyk7CnZvaWQgdHBpY19zaGFkZSAoZG91YmxlIGdyYXlzY2FsZSk7CnZvaWQgdHBp
Y19wZW4gKGludCB0aGlja25lc3MpOwp2b2lkIHRwaWNfZG90dGVkZmx1c2ggKGRvdWJsZSBpbnRl
cnZhbCk7CnZvaWQgdHBpY19kYXNoZWRmbHVzaCAoZG91YmxlIGludGVydmFsKTsKCnR5cGVkZWYg
ZW51bSB7CiAgICB0cGljX25vbmUsIHRwaWNfd2hpdGUsIHRwaWNfZ3JheSwgdHBpY19ibGFjawp9
IHRwaWNfc2hhZGVzdHlsZTsKdHlwZWRlZiBlbnVtIHsKICAgIHRwaWNfbm9zaXplLCB0cGljX3Nt
YWxsLCB0cGljX21lZGl1bSwgdHBpY19sYXJnZQp9IHRwaWNfc2l6ZTsKdHlwZWRlZiB2b2lkICgq
dHBpY19mdW5jdGlvbikgKGludCBzaXplKTsKCnR5cGVkZWYgc3RydWN0IHsKICAgIHRwaWNfc2hh
ZGVzdHlsZSBzaGFkZXN0eWxlOwogICAgdHBpY19zaXplIHNpemU7CiAgICB0cGljX2Z1bmN0aW9u
IGZ1bmN0aW9uOwp9IHRwaWNfcG9pbnRfaW5mbzsKCgpzdGF0aWMgdHBpY19wb2ludF9pbmZvIHRw
aWNfcG9pbnRbXSA9CnsKICAgIHt0cGljX3doaXRlLCB0cGljX21lZGl1bSwgdHBpY19kaWFtb25k
fSwKICAgIHt0cGljX25vbmUsIHRwaWNfbWVkaXVtLCB0cGljX3BsdXN9LAogICAge3RwaWNfd2hp
dGUsIHRwaWNfbWVkaXVtLCB0cGljX2JveH0sCiAgICB7dHBpY19ub25lLCB0cGljX21lZGl1bSwg
dHBpY190aW1lc30sCiAgICB7dHBpY193aGl0ZSwgdHBpY19tZWRpdW0sIHRwaWNfdHJpYW5nbGV9
LAogICAge3RwaWNfbm9uZSwgdHBpY19tZWRpdW0sIHRwaWNfc3Rhcn0sCiAgICB7dHBpY193aGl0
ZSwgdHBpY19zbWFsbCwgdHBpY19jaXJjbGV9LAogICAge3RwaWNfd2hpdGUsIHRwaWNfbWVkaXVt
LCB0cGljX2NpcmNsZX0sCiAgICB7dHBpY193aGl0ZSwgdHBpY19sYXJnZSwgdHBpY19jaXJjbGV9
LAogICAge3RwaWNfYmxhY2ssIHRwaWNfc21hbGwsIHRwaWNfY2lyY2xlfSwKICAgIHt0cGljX2Js
YWNrLCB0cGljX21lZGl1bSwgdHBpY19jaXJjbGV9LAogICAge3RwaWNfYmxhY2ssIHRwaWNfbGFy
Z2UsIHRwaWNfY2lyY2xlfSwKICAgIHt0cGljX2JsYWNrLCB0cGljX21lZGl1bSwgdHBpY19kaWFt
b25kfSwKICAgIHt0cGljX2JsYWNrLCB0cGljX21lZGl1bSwgdHBpY19ib3h9LAogICAge3RwaWNf
YmxhY2ssIHRwaWNfbWVkaXVtLCB0cGljX3RyaWFuZ2xlfSwKICAgIHt0cGljX3doaXRlLCB0cGlj
X21lZGl1bSwgdHBpY19oZXhhZ29ufSwKICAgIHt0cGljX2JsYWNrLCB0cGljX21lZGl1bSwgdHBp
Y19oZXhhZ29ufSwKICAgIHt0cGljX3doaXRlLCB0cGljX21lZGl1bSwgdHBpY19kb3VibGVjaXJj
bGV9LAogICAge3RwaWNfd2hpdGUsIHRwaWNfbWVkaXVtLCB0cGljX3ZlcmNpcmNsZX0sCiAgICB7
dHBpY193aGl0ZSwgdHBpY19tZWRpdW0sIHRwaWNfaG9yY2lyY2xlfSwKICAgIHt0cGljX3doaXRl
LCB0cGljX21lZGl1bSwgdHBpY19wbHVzY2lyY2xlfSwKICAgIHt0cGljX3doaXRlLCB0cGljX21l
ZGl1bSwgdHBpY190aW1lc2NpcmNsZX0sCiAgICB7dHBpY193aGl0ZSwgdHBpY19tZWRpdW0sIHRw
aWNfc3RhcmNpcmNsZX0sCiAgICB7dHBpY19ibGFjaywgdHBpY19tZWRpdW0sIHRwaWNfZG91Ymxl
Y2lyY2xlfSwKICAgIHt0cGljX3doaXRlLCB0cGljX21lZGl1bSwgdHBpY19kb3RjaXJjbGV9LAog
ICAge3RwaWNfd2hpdGUsIHRwaWNfbWVkaXVtLCB0cGljX2RpYW1vbmRjaXJjbGV9LAogICAge3Rw
aWNfd2hpdGUsIHRwaWNfbWVkaXVtLCB0cGljX2JveGNpcmNsZX0sCiAgICB7dHBpY193aGl0ZSwg
dHBpY19tZWRpdW0sIHRwaWNfdHJpYW5nbGVjaXJjbGV9LAogICAge3RwaWNfd2hpdGUsIHRwaWNf
bWVkaXVtLCB0cGljX2hleGFnb25jaXJjbGV9LAogICAge3RwaWNfd2hpdGUsIHRwaWNfbWVkaXVt
LCB0cGljX3BsdXN0aW1lc2NpcmNsZX0KfTsKCnR5cGVkZWYgZW51bSB7CiAgICB0cGljX3NvbGlk
LCB0cGljX2RvdHRlZCwgdHBpY19kYXNoZWQsCiAgICB0cGljX2Rhc2hlZF9zZG90LCB0cGljX2Rh
c2hlZF9kZG90Cn0gdHBpY19saW5lc3R5bGU7CnR5cGVkZWYgc3RydWN0IHsKICAgIHRwaWNfc2l6
ZSB0aGlja25lc3MsIGludGVydmFsOwogICAgdHBpY19saW5lc3R5bGUgbGluZXN0eWxlOwp9IHRw
aWNfbGluZV9pbmZvOwoKCnN0YXRpYyB0cGljX2xpbmVfaW5mbyB0cGljX2xpbmVbXSA9CnsKICAg
IHt0cGljX21lZGl1bSwgdHBpY19ub3NpemUsIHRwaWNfc29saWR9LAogICAge3RwaWNfc21hbGws
IHRwaWNfc21hbGwsIHRwaWNfZGFzaGVkfSwKICAgIHt0cGljX3NtYWxsLCB0cGljX25vc2l6ZSwg
dHBpY19zb2xpZH0sCiAgICB7dHBpY19tZWRpdW0sIHRwaWNfbm9zaXplLCB0cGljX3NvbGlkfSwK
ICAgIHt0cGljX2xhcmdlLCB0cGljX25vc2l6ZSwgdHBpY19zb2xpZH0sCiAgICB7dHBpY19zbWFs
bCwgdHBpY19zbWFsbCwgdHBpY19kb3R0ZWR9LAogICAge3RwaWNfbWVkaXVtLCB0cGljX3NtYWxs
LCB0cGljX2RvdHRlZH0sCiAgICB7dHBpY19sYXJnZSwgdHBpY19zbWFsbCwgdHBpY19kb3R0ZWR9
LAogICAge3RwaWNfc21hbGwsIHRwaWNfc21hbGwsIHRwaWNfZGFzaGVkfSwKICAgIHt0cGljX21l
ZGl1bSwgdHBpY19zbWFsbCwgdHBpY19kYXNoZWR9LAogICAge3RwaWNfbGFyZ2UsIHRwaWNfc21h
bGwsIHRwaWNfZGFzaGVkfSwKICAgIHt0cGljX3NtYWxsLCB0cGljX3NtYWxsLCB0cGljX2Rhc2hl
ZF9zZG90fSwKICAgIHt0cGljX21lZGl1bSwgdHBpY19zbWFsbCwgdHBpY19kYXNoZWRfc2RvdH0s
CiAgICB7dHBpY19sYXJnZSwgdHBpY19zbWFsbCwgdHBpY19kYXNoZWRfc2RvdH0sCiAgICB7dHBp
Y19zbWFsbCwgdHBpY19zbWFsbCwgdHBpY19kYXNoZWRfZGRvdH0sCiAgICB7dHBpY19tZWRpdW0s
IHRwaWNfc21hbGwsIHRwaWNfZGFzaGVkX2Rkb3R9LAogICAge3RwaWNfbGFyZ2UsIHRwaWNfc21h
bGwsIHRwaWNfZGFzaGVkX2Rkb3R9LAogICAge3RwaWNfc21hbGwsIHRwaWNfbWVkaXVtLCB0cGlj
X2RvdHRlZH0sCiAgICB7dHBpY19tZWRpdW0sIHRwaWNfbWVkaXVtLCB0cGljX2RvdHRlZH0sCiAg
ICB7dHBpY19sYXJnZSwgdHBpY19tZWRpdW0sIHRwaWNfZG90dGVkfSwKICAgIHt0cGljX3NtYWxs
LCB0cGljX21lZGl1bSwgdHBpY19kYXNoZWR9LAogICAge3RwaWNfbWVkaXVtLCB0cGljX21lZGl1
bSwgdHBpY19kYXNoZWR9LAogICAge3RwaWNfbGFyZ2UsIHRwaWNfbWVkaXVtLCB0cGljX2Rhc2hl
ZH0sCiAgICB7dHBpY19zbWFsbCwgdHBpY19tZWRpdW0sIHRwaWNfZGFzaGVkX3Nkb3R9LAogICAg
e3RwaWNfbWVkaXVtLCB0cGljX21lZGl1bSwgdHBpY19kYXNoZWRfc2RvdH0sCiAgICB7dHBpY19s
YXJnZSwgdHBpY19tZWRpdW0sIHRwaWNfZGFzaGVkX3Nkb3R9LAogICAge3RwaWNfc21hbGwsIHRw
aWNfbWVkaXVtLCB0cGljX2Rhc2hlZF9kZG90fSwKICAgIHt0cGljX21lZGl1bSwgdHBpY19tZWRp
dW0sIHRwaWNfZGFzaGVkX2Rkb3R9LAogICAge3RwaWNfbGFyZ2UsIHRwaWNfbWVkaXVtLCB0cGlj
X2Rhc2hlZF9kZG90fSwKICAgIHt0cGljX3NtYWxsLCB0cGljX2xhcmdlLCB0cGljX2RvdHRlZH0s
CiAgICB7dHBpY19tZWRpdW0sIHRwaWNfbGFyZ2UsIHRwaWNfZG90dGVkfSwKICAgIHt0cGljX2xh
cmdlLCB0cGljX2xhcmdlLCB0cGljX2RvdHRlZH0sCiAgICB7dHBpY19zbWFsbCwgdHBpY19sYXJn
ZSwgdHBpY19kYXNoZWR9LAogICAge3RwaWNfbWVkaXVtLCB0cGljX2xhcmdlLCB0cGljX2Rhc2hl
ZH0sCiAgICB7dHBpY19sYXJnZSwgdHBpY19sYXJnZSwgdHBpY19kYXNoZWR9LAogICAge3RwaWNf
c21hbGwsIHRwaWNfbGFyZ2UsIHRwaWNfZGFzaGVkX3Nkb3R9LAogICAge3RwaWNfbWVkaXVtLCB0
cGljX2xhcmdlLCB0cGljX2Rhc2hlZF9zZG90fSwKICAgIHt0cGljX2xhcmdlLCB0cGljX2xhcmdl
LCB0cGljX2Rhc2hlZF9zZG90fSwKICAgIHt0cGljX3NtYWxsLCB0cGljX2xhcmdlLCB0cGljX2Rh
c2hlZF9kZG90fSwKICAgIHt0cGljX21lZGl1bSwgdHBpY19sYXJnZSwgdHBpY19kYXNoZWRfZGRv
dH0sCiAgICB7dHBpY19sYXJnZSwgdHBpY19sYXJnZSwgdHBpY19kYXNoZWRfZGRvdH0KfTsKCnN0
YXRpYyB2b2lkIFRQSUNfb3B0aW9ucygpCnsKICAgIHN0cnVjdCB2YWx1ZSBhOwogICAgaW50IHB0
c2l6ZSwgbGluZXdpZHRoOwogICAgZG91YmxlIGludGVydmFsOwoKICAgIGlmICghKGNfdG9rZW4g
Pj0gbnVtX3Rva2VucyB8fCBlcXVhbHMoY190b2tlbiwiOyIpKSkgewogICAgICAgIHB0c2l6ZSA9
IChpbnQpIHJlYWwoY29uc3RfZXhwcmVzcygmYSkpOwogICAgICAgIGlmIChwdHNpemUgPiAwKQog
ICAgICAgICAgICB0cGljX3BvaW50c2l6ZSA9IHB0c2l6ZTsKICAgIH0KICAgIGlmICghKGNfdG9r
ZW4gPj0gbnVtX3Rva2VucyB8fCBlcXVhbHMoY190b2tlbiwiOyIpKSkgewogICAgICAgIGxpbmV3
aWR0aCA9IChpbnQpIHJlYWwoY29uc3RfZXhwcmVzcygmYSkpOwogICAgICAgIGlmIChsaW5ld2lk
dGggPiAwKQogICAgICAgICAgICB0cGljX2xpbmV3aWR0aCA9IGxpbmV3aWR0aDsKICAgIH0KICAg
IGlmICghKGNfdG9rZW4gPj0gbnVtX3Rva2VucyB8fCBlcXVhbHMoY190b2tlbiwiOyIpKSkgewog
ICAgICAgIGludGVydmFsID0gKGRvdWJsZSkgcmVhbChjb25zdF9leHByZXNzKCZhKSk7CiAgICAg
ICAgaWYgKGludGVydmFsID4gMCkKICAgICAgICAgICAgdHBpY19pbnRlcnZhbCA9IGludGVydmFs
OwogICAgfQogICAgc3ByaW50Zih0ZXJtX29wdGlvbnMsICIlZCAlZCAlZiIsIHRwaWNfcG9pbnRz
aXplLCB0cGljX2xpbmV3aWR0aCwKICAgICAgICAgICAgdHBpY19pbnRlcnZhbCk7Cn0KCnN0YXRp
YyB1bnNpZ25lZCBpbnQgdHBpY19wb3N4OwpzdGF0aWMgdW5zaWduZWQgaW50IHRwaWNfcG9zeTsK
c3RhdGljIGludCB0cGljX3BvaW50X3R5cGVzOwpzdGF0aWMgaW50IHRwaWNfbnVtbGluZXM7Cgpz
dGF0aWMgdm9pZCBUUElDX2luaXQoKQp7CiAgICBzdGF0aWMgY2hhciB0cGljMVtdID0gIiUlIEdO
VVBMT1Q6IExhVGVYIHBpY3R1cmUgdXNpbmcgdHBpYyBcXHNwZWNpYWxzXG4lJSAgICAgICAgICB3
aXRoICVkIHBvaW50IHR5cGVzIGFuZCAlZCBsaW5lIHR5cGVzXG4lJSBPcHRpb25zOiBwb2ludHNp
emUgPSAlZCwgbGluZXdpZHRoID0gJWQsIGludGVydmFsID0gJWZcbiUlIFRvIGNoYW5nZSBhYm92
ZSBvcHRpb25zLCBzYXk6XG4lJSBzZXQgdGVybWluYWwgdHBpYyBwb2ludHNpemVfdmFsdWUgbGlu
ZXdpZHRoX3ZhbHVlIGludGVydmFsX3ZhbHVlXG4lJSAocG9pbnRzaXplIGFuZCBsaW5ld2lkdGgg
LSBpbnRlZ2VycyBpbiBtaWxsaS1pbmNoZXMuXG4lJSAgaW50ZXJ2YWwgLSBhIGZsb2F0IGluIGlu
Y2hlcy4gIElmIHplcm8gaXMgc3BlY2lmaWVkLCBcbiUlICB0aGUgZGVmYXVsdCB2YWx1ZSBpcyBj
aG9zZW4uKVxuXFxzZXRsZW5ndGh7XFx1bml0bGVuZ3RofXslZmlufSUlXG4iOwojIDMwNiAidGVy
bS90cGljLnRybSIKICAgIHRwaWNfcG9pbnRfdHlwZXMgPSBzaXplb2YodHBpY19wb2ludCkgLyBz
aXplb2YodHBpY19wb2ludFswXSk7CiAgICB0cGljX251bWxpbmVzID0gc2l6ZW9mKHRwaWNfbGlu
ZSkgLyBzaXplb2YodHBpY19saW5lWzBdKTsKCiAgICB0cGljX3Bvc3ggPSB0cGljX3Bvc3kgPSAw
OwogICAgVFBJQ19saW5ldHlwZSgtMSk7CiAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgdHBpYzEsCiAg
ICAgICAgICAgIHRwaWNfcG9pbnRfdHlwZXMsIHRwaWNfbnVtbGluZXMgLSAyLAogICAgICAgICAg
ICB0cGljX3BvaW50c2l6ZSwgdHBpY19saW5ld2lkdGgsIHRwaWNfaW50ZXJ2YWwsCiAgICAgICAg
ICAgIDAuMDAxKTsKfQoKc3RhdGljIHZvaWQgVFBJQ19yZXNldCgpCnsKICAgIHRwaWNfZW5kbGlu
ZSgpOwogICAgdHBpY19wb3N4ID0gdHBpY19wb3N5ID0gMDsKfQoKc3RhdGljIHZvaWQgVFBJQ190
ZXh0KCkKewogICAgdHBpY19lbmRsaW5lKCk7CiAgICBmcHV0cygiXFxlbmR7cGljdHVyZX1cbiIs
IGdwb3V0ZmlsZSk7Cn0KCnN0YXRpYyB2b2lkIFRQSUNfZ3JhcGhpY3MoKQp7CiAgICByZWdpc3Rl
ciBzdHJ1Y3QgVEVSTUVOVFJZICp0ID0gdGVybTsKICAgIGludCBsZWZ0LCByaWdodCwgdG9wLCBi
b3R0b207CiAgICBzdGF0aWMgY2hhciBiZWdpbltdID0gIiVzXFxiZWdpbntwaWN0dXJlfSglZCwl
ZCkoJWQsJWQpJSUgJXNcbiI7CgogICAgZnByaW50ZihncG91dGZpbGUsIGJlZ2luLCAiIiwgdC0+
eG1heCwgdC0+eW1heCwgMCwgMCwgIiIpOwoKCiAgICBsZWZ0ID0gKHVuc2lnbmVkIGludCkgKCA1
LjMgLyAoNzIuMjcgKiAwLjAwMSkpICogMTI7CiAgICByaWdodCA9ICh1bnNpZ25lZCBpbnQpICgg
NS4zIC8gKDcyLjI3ICogMC4wMDEpKSAqIDIgKyAodW5zaWduZWQgaW50KSAoIDUuMCAvICg3Mi4y
NyAqIDAuMDAxKSk7CiAgICBib3R0b20gPSAodW5zaWduZWQgaW50KSAoMTEuMCAvICg3Mi4yNyAq
IDAuMDAxKSkgKiA3IC8gMiArIDE7CiAgICB0b3AgPSAodW5zaWduZWQgaW50KSAoMTEuMCAvICg3
Mi4yNyAqIDAuMDAxKSkgKiA1IC8gMiAtIDE7CiAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgYmVnaW4s
ICIlJSAiLCB0LT54bWF4IC0gbGVmdCwgdC0+eW1heCwgbGVmdCwgMCwKICAgICAgICAgICAgInRy
aW0gbGVmdCBtYXJnaW4iKTsKICAgIGZwcmludGYoZ3BvdXRmaWxlLCBiZWdpbiwgIiUlICIsIHQt
PnhtYXggLSByaWdodCwgdC0+eW1heCwgMCwgMCwKICAgICAgICAgICAgInRyaW0gcmlnaHQgbWFy
Z2luIik7CiAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgYmVnaW4sICIlJSAiLCB0LT54bWF4IC0gbGVm
dCAtIHJpZ2h0LCB0LT55bWF4LCBsZWZ0LCAwLAogICAgICAgICAgICAidHJpbSBsZWZ0ICYgcmln
aHQgbWFyZ2lucyIpOwogICAgZnByaW50ZihncG91dGZpbGUsIGJlZ2luLCAiJSUgIiwgdC0+eG1h
eCwgdC0+eW1heCAtIHRvcCwgMCwgMCwKICAgICAgICAgICAgInRyaW0gdG9wIG1hcmdpbiIpOwog
ICAgZnByaW50ZihncG91dGZpbGUsIGJlZ2luLCAiJSUgIiwgdC0+eG1heCwgdC0+eW1heCAtIGJv
dHRvbSwgMCwgYm90dG9tLAogICAgICAgICAgICAidHJpbSBib3R0b20gbWFyZ2luIik7CiAgICBm
cHJpbnRmKGdwb3V0ZmlsZSwgYmVnaW4sICIlJSAiLCB0LT54bWF4LCB0LT55bWF4IC0gdG9wIC0g
Ym90dG9tLCAwLCBib3R0b20sCiAgICAgICAgICAgICJ0cmltIHRvcCAmIGJvdHRvbSBtYXJnaW5z
Iik7CgogICAgZnB1dHMoIlxcZm9vdG5vdGVzaXplJVxuIiwgZ3BvdXRmaWxlKTsKfQoKc3RhdGlj
IHZvaWQgVFBJQ19tb3ZlKHgsIHkpCnVuc2lnbmVkIGludCB4Owp1bnNpZ25lZCBpbnQgeTsKewog
ICAgdHBpY19lbmRsaW5lKCk7CiAgICB0cGljX3Bvc3ggPSB4OwogICAgdHBpY19wb3N5ID0geTsK
fQoKCnN0YXRpYyBUQk9PTEVBTiB0cGljX2lubGluZSA9IDA7CnN0YXRpYyBpbnQgdHBpY19saW5l
Y291bnQgPSAwOwoKc3RhdGljIHZvaWQgVFBJQ192ZWN0b3IodXgsIHV5KQp1bnNpZ25lZCBpbnQg
dXg7CnVuc2lnbmVkIGludCB1eTsKewogICAgaWYgKCF0cGljX2lubGluZSkgewogICAgICAgIHRw
aWNfc3RhcnRsaW5lKCk7CiAgICB9IGVsc2UgaWYgKHRwaWNfbGluZWNvdW50ID49IDEwMCkgewoK
CiAgICAgICAgdHBpY19lbmRsaW5lKCk7CiAgICAgICAgdHBpY19zdGFydGxpbmUoKTsKICAgIH0K
ICAgIHRwaWNfcHVzaHBhdGgodXgsIHV5KTsKICAgIHRwaWNfcG9zeCA9IHV4OwogICAgdHBpY19w
b3N5ID0gdXk7Cn0KCnN0YXRpYyBpbnQgdHBpY19saW5ldHlwZTsKCnN0YXRpYyB2b2lkIHRwaWNf
c3RhcnRsaW5lKCkKewogICAgaW50IHRoaWNrbmVzcyA9IDE7CgogICAgdHBpY19pbmxpbmUgPSAx
OwogICAgc3dpdGNoICh0cGljX2xpbmVbdHBpY19saW5ldHlwZSArIDJdLnRoaWNrbmVzcykgewog
ICAgY2FzZSB0cGljX3NtYWxsOgogICAgICAgIHRoaWNrbmVzcyA9IHRwaWNfbGluZXdpZHRoOwog
ICAgICAgIGJyZWFrOwogICAgY2FzZSB0cGljX21lZGl1bToKICAgICAgICB0aGlja25lc3MgPSAo
aW50KSAodHBpY19saW5ld2lkdGggKiAzKTsKICAgICAgICBicmVhazsKICAgIGNhc2UgdHBpY19s
YXJnZToKICAgICAgICB0aGlja25lc3MgPSAoaW50KSAodHBpY19saW5ld2lkdGggKiA1KTsKICAg
ICAgICBicmVhazsKICAgIGRlZmF1bHQ6CiAgICAgICAgYnJlYWs7CiAgICB9CiAgICB0cGljX3Bl
bih0aGlja25lc3MpOwogICAgdHBpY19saW5lY291bnQgPSAwOwogICAgdHBpY19wdXNocGF0aCh0
cGljX3Bvc3gsIHRwaWNfcG9zeSk7CiAgICByZXR1cm47Cn0KCnN0YXRpYyB2b2lkIHRwaWNfZW5k
bGluZSgpCnsKICAgIGRvdWJsZSBpbnRlcnZhbCA9IDE7CgogICAgaWYgKHRwaWNfaW5saW5lKSB7
CiAgICAgICAgdHBpY19zY2FucGF0aCgpOwogICAgICAgIHN3aXRjaCAodHBpY19saW5lW3RwaWNf
bGluZXR5cGUgKyAyXS5pbnRlcnZhbCkgewogICAgICAgIGNhc2UgdHBpY19zbWFsbDoKICAgICAg
ICAgICAgaW50ZXJ2YWwgPSB0cGljX2ludGVydmFsOwogICAgICAgICAgICBicmVhazsKICAgICAg
ICBjYXNlIHRwaWNfbWVkaXVtOgogICAgICAgICAgICBpbnRlcnZhbCA9IHRwaWNfaW50ZXJ2YWwg
KiAyOwogICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlIHRwaWNfbGFyZ2U6CiAgICAgICAg
ICAgIGludGVydmFsID0gdHBpY19pbnRlcnZhbCAqIDM7CiAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgIGNhc2UgdHBpY19ub3NpemU6CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAg
ICBzd2l0Y2ggKHRwaWNfbGluZVt0cGljX2xpbmV0eXBlICsgMl0ubGluZXN0eWxlKSB7CiAgICAg
ICAgY2FzZSB0cGljX3NvbGlkOgogICAgICAgICAgICB0cGljX2ZsdXNoKCk7CiAgICAgICAgICAg
IGJyZWFrOwogICAgICAgIGNhc2UgdHBpY19kb3R0ZWQ6CiAgICAgICAgICAgIHRwaWNfZG90dGVk
Zmx1c2goaW50ZXJ2YWwpOwogICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlIHRwaWNfZGFz
aGVkOgogICAgICAgICAgICB0cGljX2Rhc2hlZGZsdXNoKGludGVydmFsKTsKICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgY2FzZSB0cGljX2Rhc2hlZF9zZG90OgogICAgICAgICAgICB0cGljX2Rh
c2hlZGZsdXNoKGludGVydmFsKTsKICAgICAgICAgICAgdHBpY19zY2FucGF0aCgpOwogICAgICAg
ICAgICB0cGljX2RvdHRlZGZsdXNoKGludGVydmFsIC8gMik7CiAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgIGNhc2UgdHBpY19kYXNoZWRfZGRvdDoKICAgICAgICAgICAgdHBpY19kYXNoZWRmbHVz
aChpbnRlcnZhbCk7CiAgICAgICAgICAgIHRwaWNfc2NhbnBhdGgoKTsKICAgICAgICAgICAgdHBp
Y19kb3R0ZWRmbHVzaChpbnRlcnZhbCAvIDMpOwogICAgICAgICAgICBicmVhazsKICAgICAgICB9
CiAgICAgICAgdHBpY19pbmxpbmUgPSAwOwogICAgfQogICAgcmV0dXJuOwp9CgoKc3RhdGljIHVu
c2lnbmVkIGludCBwYXRocG9pbnRbMTAwXVsyXTsKCnN0YXRpYyB2b2lkIHRwaWNfcHVzaHBhdGgo
eCwgeSkKdW5zaWduZWQgaW50IHg7CnVuc2lnbmVkIGludCB5Owp7CiAgICBpZiAodHBpY19saW5l
Y291bnQgPCAxMDApIHsKICAgICAgICBwYXRocG9pbnRbdHBpY19saW5lY291bnRdWzBdID0geDsK
ICAgICAgICBwYXRocG9pbnRbdHBpY19saW5lY291bnRdWzFdID0geTsKICAgICAgICB0cGljX2xp
bmVjb3VudCsrOwogICAgfQogICAgcmV0dXJuOwp9CgpzdGF0aWMgdm9pZCB0cGljX3NjYW5wYXRo
KCkKewogICAgaW50IGk7CgogICAgZm9yIChpID0gMDsgaSA8IHRwaWNfbGluZWNvdW50OyBpKysp
CiAgICAgICAgdHBpY19hYnNwYXRoKHBhdGhwb2ludFtpXVswXSwgcGF0aHBvaW50W2ldWzFdKTsK
ICAgIHJldHVybjsKfQoKc3RhdGljIHZvaWQgVFBJQ19saW5ldHlwZShsaW5ldHlwZSkKaW50IGxp
bmV0eXBlOwp7CiAgICB0cGljX2VuZGxpbmUoKTsKICAgIGlmIChsaW5ldHlwZSA+PSB0cGljX251
bWxpbmVzIC0gMikKICAgICAgICBsaW5ldHlwZSAlPSAodHBpY19udW1saW5lcyAtIDIpOwogICAg
dHBpY19saW5ldHlwZSA9IGxpbmV0eXBlOwp9CgpzdGF0aWMgaW50IHRwaWNfYW5nbGUgPSAwOwpz
dGF0aWMgZW51bSBKVVNUSUZZIHRwaWNfanVzdGlmeSA9IExFRlQ7CgpzdGF0aWMgdm9pZCBUUElD
X3B1dF90ZXh0KHgsIHksIHN0cikKdW5zaWduZWQgaW50IHg7CnVuc2lnbmVkIGludCB5OwpjaGFy
ICpzdHI7CnsKICAgIGNoYXIgKmp1c3RpZnkgPSAoKHZvaWQgKikwKTsKCiAgICB0cGljX2VuZGxp
bmUoKTsKICAgIGZwcmludGYoZ3BvdXRmaWxlLCAiXFxwdXQoJWQsJWQpIiwgeCwgeSk7CgogICAg
aWYgKChzdHJbMF0gPT0gJ3snKSB8fCAoc3RyWzBdID09ICdbJykpIHsKICAgICAgICBmcHJpbnRm
KGdwb3V0ZmlsZSwgIntcXG1ha2Vib3goMCwwKSVzfVxuIiwgc3RyKTsKICAgIH0gZWxzZQogICAg
ICAgIHN3aXRjaCAodHBpY19hbmdsZSkgewogICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgc3dp
dGNoICh0cGljX2p1c3RpZnkpIHsKICAgICAgICAgICAgY2FzZSBMRUZUOgogICAgICAgICAgICAg
ICAganVzdGlmeSA9ICJbbF0iOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNh
c2UgQ0VOVFJFOgogICAgICAgICAgICAgICAganVzdGlmeSA9ICIiOwogICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgIGNhc2UgUklHSFQ6CiAgICAgICAgICAgICAgICBqdXN0aWZ5ID0g
IltyXSI7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgICAgICBm
cHJpbnRmKGdwb3V0ZmlsZSwgIntcXG1ha2Vib3goMCwwKSVzeyVzfX1cbiIsIGp1c3RpZnksIHN0
cik7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgMToKCgogICAgICAgICAgICBzd2l0
Y2ggKHRwaWNfanVzdGlmeSkgewogICAgICAgICAgICBjYXNlIExFRlQ6CiAgICAgICAgICAgICAg
ICBqdXN0aWZ5ID0gIltsYl0iOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNh
c2UgQ0VOVFJFOgogICAgICAgICAgICAgICAganVzdGlmeSA9ICJbbF0iOwogICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgUklHSFQ6CiAgICAgICAgICAgICAgICBqdXN0aWZ5
ID0gIltsdF0iOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICAg
ICAgZnByaW50ZihncG91dGZpbGUsICJ7XFxtYWtlYm94KDAsMCklc3tcXHNob3J0c3RhY2t7JXN9
fX1cbiIsCiAgICAgICAgICAgICAgICAgICAganVzdGlmeSwgc3RyKTsKICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgfQp9CgpzdGF0aWMgaW50IFRQSUNfdGV4dF9hbmdsZShhbmcpCmludCBhbmc7
CnsKICAgIHRwaWNfYW5nbGUgPSBhbmc7CiAgICByZXR1cm4gKDEpOwp9CgpzdGF0aWMgaW50IFRQ
SUNfanVzdGlmeV90ZXh0KG1vZGUpCmVudW0gSlVTVElGWSBtb2RlOwp7CiAgICB0cGljX2p1c3Rp
ZnkgPSBtb2RlOwogICAgcmV0dXJuICgxKTsKfQoKc3RhdGljIHZvaWQgVFBJQ19wb2ludCh4LCB5
LCBudW1iZXIpCnVuc2lnbmVkIGludCB4Owp1bnNpZ25lZCBpbnQgeTsKaW50IG51bWJlcjsKewog
ICAgaW50IHNpemUgPSAwOwoKICAgIFRQSUNfbW92ZSh4LCB5KTsKCgoKCiAgICBmcHJpbnRmKGdw
b3V0ZmlsZSwgIlxccHV0KCVkLCVkKXsiLCB4LCB5KTsKCiAgICBpZiAobnVtYmVyIDwgMCkgewog
ICAgICAgIGZwcmludGYoZ3BvdXRmaWxlLCAiXFxydWxley4xcHR9ey4xcHR9Iik7CiAgICB9IGVs
c2UgewogICAgICAgIG51bWJlciAlPSB0cGljX3BvaW50X3R5cGVzOwogICAgICAgIHN3aXRjaCAo
dHBpY19wb2ludFtudW1iZXJdLnNoYWRlc3R5bGUpIHsKICAgICAgICBjYXNlIHRwaWNfd2hpdGU6
CiAgICAgICAgICAgIHRwaWNfcGVuKHRwaWNfbGluZXdpZHRoKTsKICAgICAgICAgICAgdHBpY19z
aGFkZSgwLjApOwogICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlIHRwaWNfZ3JheToKICAg
ICAgICAgICAgdHBpY19wZW4odHBpY19saW5ld2lkdGgpOwogICAgICAgICAgICB0cGljX3NoYWRl
KDAuNSk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgdHBpY19ibGFjazoKICAgICAg
ICAgICAgdHBpY19wZW4odHBpY19saW5ld2lkdGgpOwogICAgICAgICAgICB0cGljX3NoYWRlKDEu
MCk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgdHBpY19ub25lOgogICAgICAgICAg
ICB0cGljX3Blbih0cGljX2xpbmV3aWR0aCAqIDMpOwogICAgICAgICAgICBicmVhazsKICAgICAg
ICB9CiAgICAgICAgc3dpdGNoICh0cGljX3BvaW50W251bWJlcl0uc2l6ZSkgewogICAgICAgIGNh
c2UgdHBpY19zbWFsbDoKICAgICAgICAgICAgc2l6ZSA9IHRwaWNfcG9pbnRzaXplOwogICAgICAg
ICAgICBicmVhazsKICAgICAgICBjYXNlIHRwaWNfbWVkaXVtOgogICAgICAgICAgICBzaXplID0g
KGludCkgKHRwaWNfcG9pbnRzaXplICogMS40MTQyKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgY2FzZSB0cGljX2xhcmdlOgogICAgICAgICAgICBzaXplID0gKGludCkgKHRwaWNfcG9pbnRz
aXplICogMi4wKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgZGVmYXVsdDoKICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgfQogICAgICAgICh0cGljX3BvaW50W251bWJlcl0uZnVuY3Rpb24p
IChzaXplKTsKICAgIH0KCiAgICBmcHV0cygifSUlXG4iLCBncG91dGZpbGUpOwp9CgpzdGF0aWMg
dm9pZCBUUElDX2Fycm93KHN4LCBzeSwgZXgsIGV5LCBoZWFkKQp1bnNpZ25lZCBpbnQgc3g7CnVu
c2lnbmVkIGludCBzeTsKdW5zaWduZWQgaW50IGV4Owp1bnNpZ25lZCBpbnQgZXk7ClRCT09MRUFO
IGhlYWQ7CnsKICAgIGJlc3RfbGF0ZXhfYXJyb3coc3gsIHN5LCBleCwgZXksIDEsIGhlYWQpOwog
ICAgdHBpY19wb3N4ID0gZXg7CiAgICB0cGljX3Bvc3kgPSBleTsKfQoKCgp2b2lkIHRwaWNfZGlh
bW9uZChzaXplKQppbnQgc2l6ZTsKewogICAgc2l6ZSA9IChpbnQpIChzaXplICogMS40MTQyKTsK
CiAgICB0cGljX3BhdGgoMCwgc2l6ZSk7CiAgICB0cGljX3BhdGgoLXNpemUsIDApOwogICAgdHBp
Y19wYXRoKDAsIC1zaXplKTsKICAgIHRwaWNfcGF0aChzaXplLCAwKTsKICAgIHRwaWNfcGF0aCgw
LCBzaXplKTsKICAgIHRwaWNfZmx1c2goKTsKICAgIHJldHVybjsKfQoKdm9pZCB0cGljX3BsdXMo
c2l6ZSkKaW50IHNpemU7CnsKICAgIHRwaWNfcGF0aCgwLCBzaXplKTsKICAgIHRwaWNfcGF0aCgw
LCAtc2l6ZSk7CiAgICB0cGljX2ZsdXNoKCk7CiAgICB0cGljX3BhdGgoc2l6ZSwgMCk7CiAgICB0
cGljX3BhdGgoLXNpemUsIDApOwogICAgdHBpY19mbHVzaCgpOwogICAgcmV0dXJuOwp9Cgp2b2lk
IHRwaWNfYm94KHNpemUpCmludCBzaXplOwp7CiAgICB0cGljX3BhdGgoc2l6ZSwgc2l6ZSk7CiAg
ICB0cGljX3BhdGgoLXNpemUsIHNpemUpOwogICAgdHBpY19wYXRoKC1zaXplLCAtc2l6ZSk7CiAg
ICB0cGljX3BhdGgoc2l6ZSwgLXNpemUpOwogICAgdHBpY19wYXRoKHNpemUsIHNpemUpOwogICAg
dHBpY19mbHVzaCgpOwogICAgcmV0dXJuOwp9Cgp2b2lkIHRwaWNfdGltZXMoc2l6ZSkKaW50IHNp
emU7CnsKICAgIHNpemUgPSAoaW50KSAoc2l6ZSAvIDEuNDE0Mik7CgogICAgdHBpY19wYXRoKHNp
emUsIHNpemUpOwogICAgdHBpY19wYXRoKC1zaXplLCAtc2l6ZSk7CiAgICB0cGljX2ZsdXNoKCk7
CiAgICB0cGljX3BhdGgoc2l6ZSwgLXNpemUpOwogICAgdHBpY19wYXRoKC1zaXplLCBzaXplKTsK
ICAgIHRwaWNfZmx1c2goKTsKICAgIHJldHVybjsKfQoKdm9pZCB0cGljX3RyaWFuZ2xlKHNpemUp
CmludCBzaXplOwp7CiAgICBpbnQgeDsKCiAgICBzaXplID0gKGludCkgKHNpemUgLyAxLjYxMTkp
OwogICAgeCA9IChpbnQpIChzaXplICogMS43MzIxKTsKCiAgICB0cGljX3BhdGgoMCwgLXNpemUg
KiAyKTsKICAgIHRwaWNfcGF0aCgteCwgc2l6ZSk7CiAgICB0cGljX3BhdGgoeCwgc2l6ZSk7CiAg
ICB0cGljX3BhdGgoMCwgLXNpemUgKiAyKTsKICAgIHRwaWNfZmx1c2goKTsKICAgIHJldHVybjsK
fQoKdm9pZCB0cGljX3N0YXIoc2l6ZSkKaW50IHNpemU7CnsKICAgIGludCB4OwoKICAgIHNpemUg
PSAoaW50KSAoc2l6ZSAvIDIpOwogICAgeCA9IChpbnQpIChzaXplICogMS43MzIxKTsKCiAgICB0
cGljX3BhdGgoMCwgc2l6ZSAqIDIpOwogICAgdHBpY19wYXRoKDAsIC1zaXplICogMik7CiAgICB0
cGljX2ZsdXNoKCk7CiAgICB0cGljX3BhdGgoeCwgc2l6ZSk7CiAgICB0cGljX3BhdGgoLXgsIC1z
aXplKTsKICAgIHRwaWNfZmx1c2goKTsKICAgIHRwaWNfcGF0aCh4LCAtc2l6ZSk7CiAgICB0cGlj
X3BhdGgoLXgsIHNpemUpOwogICAgdHBpY19mbHVzaCgpOwogICAgcmV0dXJuOwp9Cgp2b2lkIHRw
aWNfaGV4YWdvbihzaXplKQppbnQgc2l6ZTsKewogICAgaW50IHg7CgogICAgc2l6ZSA9IChpbnQp
IChzaXplIC8gMik7CiAgICB4ID0gKGludCkgKHNpemUgKiAxLjczMjEpOwoKICAgIHRwaWNfcGF0
aCgwLCBzaXplICogMik7CiAgICB0cGljX3BhdGgoLXgsIHNpemUpOwogICAgdHBpY19wYXRoKC14
LCAtc2l6ZSk7CiAgICB0cGljX3BhdGgoMCwgLXNpemUgKiAyKTsKICAgIHRwaWNfcGF0aCh4LCAt
c2l6ZSk7CiAgICB0cGljX3BhdGgoeCwgc2l6ZSk7CiAgICB0cGljX3BhdGgoMCwgc2l6ZSAqIDIp
OwogICAgdHBpY19mbHVzaCgpOwogICAgcmV0dXJuOwp9Cgp2b2lkIHRwaWNfY2lyY2xlKHNpemUp
CmludCBzaXplOwp7CiAgICB0cGljX2FyYyhzaXplKTsKICAgIHJldHVybjsKfQoKdm9pZCB0cGlj
X2RvdWJsZWNpcmNsZShzaXplKQppbnQgc2l6ZTsKewogICAgdHBpY19hcmMoc2l6ZSk7CiAgICB0
cGljX3NoYWRlKDAuMCk7CiAgICB0cGljX2FyYyhzaXplIC8gMik7CiAgICByZXR1cm47Cn0KCnZv
aWQgdHBpY192ZXJjaXJjbGUoc2l6ZSkKaW50IHNpemU7CnsKICAgIHRwaWNfYXJjKHNpemUpOwog
ICAgdHBpY19wYXRoKDAsIHNpemUpOwogICAgdHBpY19wYXRoKDAsIC1zaXplKTsKICAgIHRwaWNf
Zmx1c2goKTsKICAgIHJldHVybjsKfQoKdm9pZCB0cGljX2hvcmNpcmNsZShzaXplKQppbnQgc2l6
ZTsKewogICAgdHBpY19hcmMoc2l6ZSk7CiAgICB0cGljX3BhdGgoc2l6ZSwgMCk7CiAgICB0cGlj
X3BhdGgoLXNpemUsIDApOwogICAgdHBpY19mbHVzaCgpOwogICAgcmV0dXJuOwp9Cgp2b2lkIHRw
aWNfcGx1c2NpcmNsZShzaXplKQppbnQgc2l6ZTsKewogICAgdHBpY19hcmMoc2l6ZSk7CiAgICB0
cGljX3BsdXMoc2l6ZSk7CiAgICByZXR1cm47Cn0KCnZvaWQgdHBpY190aW1lc2NpcmNsZShzaXpl
KQppbnQgc2l6ZTsKewogICAgdHBpY19hcmMoc2l6ZSk7CiAgICB0cGljX3RpbWVzKHNpemUpOwog
ICAgcmV0dXJuOwp9Cgp2b2lkIHRwaWNfc3RhcmNpcmNsZShzaXplKQppbnQgc2l6ZTsKewogICAg
dHBpY19hcmMoc2l6ZSk7CiAgICB0cGljX3N0YXIoc2l6ZSk7CiAgICByZXR1cm47Cn0KCnZvaWQg
dHBpY19kb3RjaXJjbGUoc2l6ZSkKaW50IHNpemU7CnsKICAgIHRwaWNfYXJjKHNpemUpOwogICAg
dHBpY19zaGFkZSgxLjApOwogICAgdHBpY19hcmMoc2l6ZSAvIDIpOwogICAgcmV0dXJuOwp9Cgp2
b2lkIHRwaWNfZGlhbW9uZGNpcmNsZShzaXplKQppbnQgc2l6ZTsKewogICAgdHBpY19hcmMoc2l6
ZSk7CiAgICB0cGljX3NoYWRlKDEuMCk7CiAgICB0cGljX2RpYW1vbmQoKGludCkgKHNpemUgLyAx
LjUpKTsKICAgIHJldHVybjsKfQoKdm9pZCB0cGljX2JveGNpcmNsZShzaXplKQppbnQgc2l6ZTsK
ewogICAgdHBpY19hcmMoc2l6ZSk7CiAgICB0cGljX3NoYWRlKDEuMCk7CiAgICB0cGljX2JveCgo
aW50KSAoc2l6ZSAvIDEuNSkpOwogICAgcmV0dXJuOwp9Cgp2b2lkIHRwaWNfdHJpYW5nbGVjaXJj
bGUoc2l6ZSkKaW50IHNpemU7CnsKICAgIHRwaWNfYXJjKHNpemUpOwogICAgdHBpY19zaGFkZSgx
LjApOwogICAgdHBpY190cmlhbmdsZSgoaW50KSAoc2l6ZSAvIDEuNSkpOwogICAgcmV0dXJuOwp9
Cgp2b2lkIHRwaWNfaGV4YWdvbmNpcmNsZShzaXplKQppbnQgc2l6ZTsKewogICAgdHBpY19hcmMo
c2l6ZSk7CiAgICB0cGljX3NoYWRlKDEuMCk7CiAgICB0cGljX2hleGFnb24oKGludCkgKHNpemUg
LyAxLjIpKTsKICAgIHJldHVybjsKfQoKdm9pZCB0cGljX3BsdXN0aW1lc2NpcmNsZShzaXplKQpp
bnQgc2l6ZTsKewogICAgdHBpY19hcmMoc2l6ZSk7CiAgICB0cGljX3BsdXMoc2l6ZSk7CiAgICB0
cGljX3RpbWVzKHNpemUpOwogICAgcmV0dXJuOwp9CgoKCnZvaWQgdHBpY19hYnNwYXRoKHgsIHkp
CnVuc2lnbmVkIGludCB4Owp1bnNpZ25lZCBpbnQgeTsKewogICAgZnByaW50ZihncG91dGZpbGUs
ICJcXHB1dCgldSwldSl7IiwgeCwgeSk7CiAgICB0cGljX3BhdGgoMCwgMCk7CiAgICBmcHV0cygi
fSVcbiIsIGdwb3V0ZmlsZSk7CiAgICByZXR1cm47Cn0KCgoKdm9pZCB0cGljX3BhdGgoeCwgeSkK
aW50IHg7CmludCB5Owp7CiAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgIlxcc3BlY2lhbHtwYSAlZCAl
ZH0iLCB4LCB5KTsKICAgIHJldHVybjsKfQoKdm9pZCB0cGljX2ZsdXNoKCkKewogICAgZnB1dHMo
Ilxcc3BlY2lhbHtmcH0lXG4iLCBncG91dGZpbGUpOwogICAgcmV0dXJuOwp9Cgp2b2lkIHRwaWNf
YXJjKHJhZGl1cykKaW50IHJhZGl1czsKewogICAgZnByaW50ZihncG91dGZpbGUsICJcXHNwZWNp
YWx7YXIgMCAwICVkICVkIDAgN30iLCByYWRpdXMsIHJhZGl1cyk7CiAgICByZXR1cm47Cn0KCnZv
aWQgdHBpY19zaGFkZShncmF5c2NhbGUpCmRvdWJsZSBncmF5c2NhbGU7CnsKICAgIGZwcmludGYo
Z3BvdXRmaWxlLCAiXFxzcGVjaWFse3NoICVmfSIsIGdyYXlzY2FsZSk7CiAgICByZXR1cm47Cn0K
CnZvaWQgdHBpY19wZW4odGhpY2tuZXNzKQppbnQgdGhpY2tuZXNzOwp7CiAgICBmcHJpbnRmKGdw
b3V0ZmlsZSwgIlxcc3BlY2lhbHtwbiAlZH0iLCB0aGlja25lc3MpOwogICAgcmV0dXJuOwp9Cgp2
b2lkIHRwaWNfZG90dGVkZmx1c2goaW50ZXJ2YWwpCmRvdWJsZSBpbnRlcnZhbDsKewogICAgZnBy
aW50ZihncG91dGZpbGUsICJcXHNwZWNpYWx7ZHQgJWZ9JSVcbiIsIGludGVydmFsKTsKICAgIHJl
dHVybjsKfQoKdm9pZCB0cGljX2Rhc2hlZGZsdXNoKGludGVydmFsKQpkb3VibGUgaW50ZXJ2YWw7
CnsKICAgIGZwcmludGYoZ3BvdXRmaWxlLCAiXFxzcGVjaWFse2RhICVmfSUlXG4iLCBpbnRlcnZh
bCk7CiAgICByZXR1cm47Cn0KIyAzODIgInRlcm0uaCIgMgoKCiMgMSAidGVybS9wc3RyaWNrcy50
cm0iIDEKIyA4MCAidGVybS9wc3RyaWNrcy50cm0iCiMgMSAidGVybS9kcml2ZXIuaCIgMQojIDgx
ICJ0ZXJtL3BzdHJpY2tzLnRybSIgMgoKCgoKCgpzdGF0aWMgdm9pZCBQU1RSSUNLU19vcHRpb25z
ICh2b2lkKTsKc3RhdGljIHZvaWQgUFNUUklDS1NfaW5pdCAodm9pZCk7CnN0YXRpYyB2b2lkIFBT
VFJJQ0tTX2dyYXBoaWNzICh2b2lkKTsKc3RhdGljIHZvaWQgUFNUUklDS1NfdGV4dCAodm9pZCk7
CnN0YXRpYyB2b2lkIFBTVFJJQ0tTX2xpbmV0eXBlIChpbnQgbGluZXR5cGUpOwpzdGF0aWMgdm9p
ZCBQU1RSSUNLU19tb3ZlICh1bnNpZ25lZCBpbnQgeCwgdW5zaWduZWQgaW50IHkpOwpzdGF0aWMg
dm9pZCBQU1RSSUNLU19wb2ludCAodW5zaWduZWQgaW50IHgsIHVuc2lnbmVkIGludCB5LCBpbnQg
bnVtYmVyKTsKc3RhdGljIHZvaWQgUFNUUklDS1NfdmVjdG9yICh1bnNpZ25lZCBpbnQgdXgsIHVu
c2lnbmVkIGludCB1eSk7CnN0YXRpYyB2b2lkIFBTVFJJQ0tTX2Fycm93ICh1bnNpZ25lZCBpbnQg
c3gsIHVuc2lnbmVkIGludCBzeSwgdW5zaWduZWQgaW50IGV4LCB1bnNpZ25lZCBpbnQgZXksIFRC
T09MRUFOIGhlYWQpOwpzdGF0aWMgdm9pZCBQU1RSSUNLU19wdXRfdGV4dCAodW5zaWduZWQgaW50
IHgsIHVuc2lnbmVkIGludCB5LCBjaGFyIHN0cltdKTsKc3RhdGljIGludCBQU1RSSUNLU19qdXN0
aWZ5X3RleHQgKGVudW0gSlVTVElGWSBtb2RlKTsKc3RhdGljIGludCBQU1RSSUNLU190ZXh0X2Fu
Z2xlIChpbnQgYW5nKTsKc3RhdGljIHZvaWQgUFNUUklDS1NfcmVzZXQgKHZvaWQpOwojIDExMiAi
dGVybS9wc3RyaWNrcy50cm0iCnN0YXRpYyB2b2lkIFBTVFJJQ0tTX2VuZGxpbmUgKHZvaWQpOwpz
dGF0aWMgY2hhciAqUFNUUklDS1NfaGFja190ZXh0IChjaGFyIHNbXSk7CgpzdGF0aWMgZmxvYXQg
UFNUUklDS1NfeHNjYWxlID0gMS4wOwpzdGF0aWMgZmxvYXQgUFNUUklDS1NfeXNjYWxlID0gMS4w
OwpzdGF0aWMgZmxvYXQgUFNUUklDS1NfcG9zeDsKc3RhdGljIGZsb2F0IFBTVFJJQ0tTX3Bvc3k7
CmVudW0gSlVTVElGWSBQU1RSSUNLU19qdXN0aWZ5ID0gTEVGVDsKc3RhdGljIGludCBQU1RSSUNL
U19hbmdsZSA9IDA7CgoKCgoKc3RhdGljIGNoYXIgKlBTVFJJQ0tTX3BvaW50c1tdID0KewogICAg
IlxcUFNUQERpYW1vbmQiLAogICAgIlxcUFNUQFBsdXMiLAogICAgIlxcUFNUQFNxdWFyZSIsCiAg
ICAiXFxQU1RAQ3Jvc3MiLAogICAgIlxcUFNUQENpcmNsZSIsCiAgICAiXFxQU1RAVHJpYW5nbGUi
LAogICAgIlxcUFNUQFBlbnRhZ29uIiwKICAgICJcXFBTVEBGaWxsZGlhbW9uZCIsCiAgICAiXFxQ
U1RARmlsbHNxdWFyZSIsCiAgICAiXFxQU1RARmlsbHRyaWFuZ2xlIiwKICAgICJcXFBTVEBGaWxs
Y2lyY2xlIiwKICAgICJcXFBTVEBGaWxscGVudGFnb24iCn07CgoKCnN0YXRpYyBjaGFyICpQU1RS
SUNLU19saW5lc1tdID0KewogICAgIlxcUFNUQEJvcmRlciIsCiAgICAiXFxQU1RAQXhlcyIsCiAg
ICAiXFxQU1RAU29saWQiLAogICAgIlxcUFNUQERhc2hlZCIsCiAgICAiXFxQU1RARG90dGVkIiwK
ICAgICJcXFBTVEBMb25nRGFzaCIKfTsKCgpzdGF0aWMgaW50IFBTVFJJQ0tTX3R5cGU7CgoKc3Rh
dGljIFRCT09MRUFOIFBTVFJJQ0tTX2lubGluZSA9IDA7CgoKc3RhdGljIHZvaWQgUFNUUklDS1Nf
ZW5kbGluZSAodm9pZCk7CgoKc3RhdGljIGludCBQU1RSSUNLU19saW5lY291bnQgPSAwOwojIDE3
MyAidGVybS9wc3RyaWNrcy50cm0iCnN0YXRpYyBpbnQgUFNUX2hhY2tfdGV4dCA9IDE7CnN0YXRp
YyBpbnQgUFNUX3VuaXRfcGxvdCA9IDA7CgpzdGF0aWMgdm9pZCBQU1RSSUNLU19vcHRpb25zKCkK
ewogICAgaWYgKCEoY190b2tlbiA+PSBudW1fdG9rZW5zIHx8IGVxdWFscyhjX3Rva2VuLCI7Iikp
KSB7CiAgICAgICAgaWYgKGFsbW9zdF9lcXVhbHMoY190b2tlbiwgIm5vJGhhY2t0ZXh0IikpIHsK
ICAgICAgICAgICAgUFNUX2hhY2tfdGV4dCA9IDA7CiAgICAgICAgICAgIGNfdG9rZW4rKzsKICAg
ICAgICB9IGVsc2UgaWYgKGFsbW9zdF9lcXVhbHMoY190b2tlbiwgInUkbml0IikpIHsKICAgICAg
ICAgICAgUFNUX3VuaXRfcGxvdCA9IDE7CiAgICAgICAgICAgIGNfdG9rZW4rKzsKICAgICAgICB9
CiAgICB9Cn0KCnN0YXRpYyB2b2lkIFBTVFJJQ0tTX2luaXQoKQp7CiAgICBQU1RSSUNLU19wb3N4
ID0gUFNUUklDS1NfcG9zeSA9IDA7CiAgICBQU1RSSUNLU19saW5ldHlwZSgtMSk7CiAgICBmcHV0
cygiJSBHTlVQTE9UOiBMYVRlWCBwaWN0dXJlIHVzaW5nIFBTVFJJQ0tTIG1hY3Jvc1xuIiwgZ3Bv
dXRmaWxlKTsKfQoKCnN0YXRpYyB2b2lkIFBTVFJJQ0tTX2dyYXBoaWNzKCkKewogICAgZnB1dHMo
IiUgRGVmaW5lIG5ldyBQU1Qgb2JqZWN0cywgaWYgbm90IGFscmVhZHkgZGVmaW5lZFxuXFxpZnhc
XFBTVGxvYWRlZFxcdW5kZWZpbmVkXG5cXGRlZlxcUFNUbG9hZGVke3R9XG5cXHBzc2V0e2Fycm93
c2l6ZT0uMDEgMy4yIDEuNCAuM31cblxccHNzZXR7ZG90c2l6ZT0uMDF9XG5cXGNhdGNvZGVgQD0x
MVxuXG4iLCBncG91dGZpbGUpOwojIDIwOCAidGVybS9wc3RyaWNrcy50cm0iCiAgICBmcHV0cygi
XFxuZXdwc29iamVjdHtQU1RAQm9yZGVyfXtwc2xpbmV9e2xpbmV3aWR0aD0uMDAxNSxsaW5lc3R5
bGU9c29saWR9XG5cXG5ld3Bzb2JqZWN0e1BTVEBBeGVzfXtwc2xpbmV9e2xpbmV3aWR0aD0uMDAx
NSxsaW5lc3R5bGU9ZG90dGVkLGRvdHNlcD0uMDA0fVxuXFxuZXdwc29iamVjdHtQU1RAU29saWR9
e3BzbGluZX17bGluZXdpZHRoPS4wMDE1LGxpbmVzdHlsZT1zb2xpZH1cblxcbmV3cHNvYmplY3R7
UFNUQERhc2hlZH17cHNsaW5lfXtsaW5ld2lkdGg9LjAwMTUsbGluZXN0eWxlPWRhc2hlZCxkYXNo
PS4wMSAuMDF9XG5cXG5ld3Bzb2JqZWN0e1BTVEBEb3R0ZWR9e3BzbGluZX17bGluZXdpZHRoPS4w
MDI1LGxpbmVzdHlsZT1kb3R0ZWQsZG90c2VwPS4wMDh9XG5cXG5ld3Bzb2JqZWN0e1BTVEBMb25n
RGFzaH17cHNsaW5lfXtsaW5ld2lkdGg9LjAwMTUsbGluZXN0eWxlPWRhc2hlZCxkYXNoPS4wMiAu
MDF9XG4iLCBncG91dGZpbGUpOwojIDIyNiAidGVybS9wc3RyaWNrcy50cm0iCiAgICBmcHV0cygi
XFxuZXdwc29iamVjdHtQU1RARGlhbW9uZH17cHNkb3RzfXtsaW5ld2lkdGg9LjAwMSxsaW5lc3R5
bGU9c29saWQsZG90c3R5bGU9c3F1YXJlLGRvdGFuZ2xlPTQ1fVxuXFxuZXdwc29iamVjdHtQU1RA
RmlsbGRpYW1vbmR9e3BzZG90c317bGluZXdpZHRoPS4wMDEsbGluZXN0eWxlPXNvbGlkLGRvdHN0
eWxlPXNxdWFyZSosZG90YW5nbGU9NDV9XG5cXG5ld3Bzb2JqZWN0e1BTVEBDcm9zc317cHNkb3Rz
fXtsaW5ld2lkdGg9LjAwMSxsaW5lc3R5bGU9c29saWQsZG90c3R5bGU9Kyxkb3RhbmdsZT00NX1c
biIsIGdwb3V0ZmlsZSk7CgoKCgoKICAgIGZwdXRzKCJcXG5ld3Bzb2JqZWN0e1BTVEBQbHVzfXtw
c2RvdHN9e2xpbmV3aWR0aD0uMDAxLGxpbmVzdHlsZT1zb2xpZCxkb3RzdHlsZT0rfVxuXFxuZXdw
c29iamVjdHtQU1RAU3F1YXJlfXtwc2RvdHN9e2xpbmV3aWR0aD0uMDAxLGxpbmVzdHlsZT1zb2xp
ZCxkb3RzdHlsZT1zcXVhcmV9XG5cXG5ld3Bzb2JqZWN0e1BTVEBDaXJjbGV9e3BzZG90c317bGlu
ZXdpZHRoPS4wMDEsbGluZXN0eWxlPXNvbGlkLGRvdHN0eWxlPW99XG5cXG5ld3Bzb2JqZWN0e1BT
VEBUcmlhbmdsZX17cHNkb3RzfXtsaW5ld2lkdGg9LjAwMSxsaW5lc3R5bGU9c29saWQsZG90c3R5
bGU9dHJpYW5nbGV9XG5cXG5ld3Bzb2JqZWN0e1BTVEBQZW50YWdvbn17cHNkb3RzfXtsaW5ld2lk
dGg9LjAwMSxsaW5lc3R5bGU9c29saWQsZG90c3R5bGU9cGVudGFnb259XG5cXG5ld3Bzb2JqZWN0
e1BTVEBGaWxsc3F1YXJlfXtwc2RvdHN9e2xpbmV3aWR0aD0uMDAxLGxpbmVzdHlsZT1zb2xpZCxk
b3RzdHlsZT1zcXVhcmUqfVxuXFxuZXdwc29iamVjdHtQU1RARmlsbGNpcmNsZX17cHNkb3RzfXts
aW5ld2lkdGg9LjAwMSxsaW5lc3R5bGU9c29saWQsZG90c3R5bGU9Kn1cblxcbmV3cHNvYmplY3R7
UFNUQEZpbGx0cmlhbmdsZX17cHNkb3RzfXtsaW5ld2lkdGg9LjAwMSxsaW5lc3R5bGU9c29saWQs
ZG90c3R5bGU9dHJpYW5nbGUqfVxuXFxuZXdwc29iamVjdHtQU1RARmlsbHBlbnRhZ29ufXtwc2Rv
dHN9e2xpbmV3aWR0aD0uMDAxLGxpbmVzdHlsZT1zb2xpZCxkb3RzdHlsZT1wZW50YWdvbip9XG4i
LCBncG91dGZpbGUpOwojIDI0NCAidGVybS9wc3RyaWNrcy50cm0iCiAgICBmcHV0cygiXFxuZXdw
c29iamVjdHtQU1RAQXJyb3d9e3BzbGluZX17bGluZXdpZHRoPS4wMDEsbGluZXN0eWxlPXNvbGlk
fVxuXFxjYXRjb2RlYEA9MTJcblxuXFxmaVxuIiwgZ3BvdXRmaWxlKTsKCgoKCgogICAgaWYgKCFQ
U1RfdW5pdF9wbG90KSB7CiAgICAgICAgZnByaW50ZihncG91dGZpbGUsICJcXHBzc2V0e3VuaXQ9
JWZpbix4dW5pdD0lZmluLHl1bml0PSVmaW59XG4iLAogICAgICAgICAgICAgICAgNS4wICogUFNU
UklDS1NfeHNjYWxlLAogICAgICAgICAgICAgICAgNS4wICogUFNUUklDS1NfeHNjYWxlLAogICAg
ICAgICAgICAgICAgMy4wICogUFNUUklDS1NfeXNjYWxlKTsKICAgIH0KICAgIGZwdXRzKCJcXHBz
cGljdHVyZSgwLDApKDEsMSlcblxcaWZ4XFxub2ZpZ3NcXHVuZGVmaW5lZFxuXFxjYXRjb2RlYEA9
MTFcblxuIiwgZ3BvdXRmaWxlKTsKCgoKfQoKCnN0YXRpYyB2b2lkIFBTVFJJQ0tTX3RleHQoKQp7
CiAgICBQU1RSSUNLU19lbmRsaW5lKCk7CiAgICBmcHV0cygiXFxjYXRjb2RlYEA9MTJcblxcZmlc
blxcZW5kcHNwaWN0dXJlXG4iLCBncG91dGZpbGUpOwoKCgp9CgoKc3RhdGljIHZvaWQgUFNUUklD
S1NfbGluZXR5cGUobGluZXR5cGUpCmludCBsaW5ldHlwZTsKewogICAgUFNUUklDS1NfZW5kbGlu
ZSgpOwoKICAgIGlmIChsaW5ldHlwZSA+PSA2IC0gMikKICAgICAgICBsaW5ldHlwZSAlPSAoNiAt
IDIpOwoKICAgIFBTVFJJQ0tTX3R5cGUgPSBsaW5ldHlwZTsKfQoKCgpzdGF0aWMgdm9pZCBQU1RS
SUNLU19tb3ZlKHgsIHkpCnVuc2lnbmVkIGludCB4Owp1bnNpZ25lZCBpbnQgeTsKewogICAgUFNU
UklDS1NfZW5kbGluZSgpOwoKICAgIFBTVFJJQ0tTX3Bvc3ggPSB4IC8gMTAwMDAuMDsKICAgIFBT
VFJJQ0tTX3Bvc3kgPSB5IC8gMTAwMDAuMDsKfQoKCnN0YXRpYyB2b2lkIFBTVFJJQ0tTX3BvaW50
KHgsIHksIG51bWJlcikKdW5zaWduZWQgeDsKdW5zaWduZWQgeTsKaW50IG51bWJlcjsKewogICAg
UFNUUklDS1NfbW92ZSh4LCB5KTsKCgoKCiAgICBpZiAobnVtYmVyIDwgMCkgewogICAgICAgIGZw
cmludGYoZ3BvdXRmaWxlLCAiXFxxZGlzayglLjRmLCUuNGYpeyUuNGZ9XG4iLAogICAgICAgICAg
ICAgICAgeCAvIDEwMDAwLjAsCiAgICAgICAgICAgICAgICB5IC8gMTAwMDAuMCwKICAgICAgICAg
ICAgICAgIDAuMDAwMjUpOwogICAgfSBlbHNlIHsKICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwg
IiVzKCUuNGYsJS40ZilcbiIsCiAgICAgICAgICAgICAgICBQU1RSSUNLU19wb2ludHNbbnVtYmVy
ICUgMTJdLAogICAgICAgICAgICAgICAgeCAvIDEwMDAwLjAsCiAgICAgICAgICAgICAgICB5IC8g
MTAwMDAuMCk7CiAgICB9Cn0KCgpzdGF0aWMgdm9pZCBQU1RSSUNLU192ZWN0b3IodXgsIHV5KQp1
bnNpZ25lZCB1eDsKdW5zaWduZWQgdXk7CnsKICAgIGlmICghUFNUUklDS1NfaW5saW5lKSB7CiAg
ICAgICAgUFNUUklDS1NfaW5saW5lID0gMTsKCgogICAgICAgIGZwcmludGYoZ3BvdXRmaWxlLCAi
JXMoJS40ZiwlLjRmKVxuIiwgUFNUUklDS1NfbGluZXNbUFNUUklDS1NfdHlwZSArIDJdLAogICAg
ICAgICAgICAgICAgUFNUUklDS1NfcG9zeCwgUFNUUklDS1NfcG9zeSk7CiAgICAgICAgUFNUUklD
S1NfbGluZWNvdW50ID0gMTsKICAgIH0gZWxzZSB7CgoKCgoKICAgICAgICBpZiAoUFNUUklDS1Nf
bGluZWNvdW50KysgPj0gMTAwKSB7CgogICAgICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgIiVz
KCUuNGYsJS40ZilcbiIsIFBTVFJJQ0tTX2xpbmVzW1BTVFJJQ0tTX3R5cGUgKyAyXSwKICAgICAg
ICAgICAgICAgICAgICBQU1RSSUNLU19wb3N4LCBQU1RSSUNLU19wb3N5KTsKICAgICAgICAgICAg
UFNUUklDS1NfbGluZWNvdW50ID0gMTsKICAgICAgICB9CiAgICB9CiAgICBQU1RSSUNLU19wb3N4
ID0gdXggLyAxMDAwMC4wOwogICAgUFNUUklDS1NfcG9zeSA9IHV5IC8gMTAwMDAuMDsKICAgIGZw
cmludGYoZ3BvdXRmaWxlLCAiKCUuNGYsJS40ZilcbiIsIFBTVFJJQ0tTX3Bvc3gsIFBTVFJJQ0tT
X3Bvc3kpOwp9CgpzdGF0aWMgdm9pZCBQU1RSSUNLU19lbmRsaW5lKCkKewogICAgaWYgKFBTVFJJ
Q0tTX2lubGluZSkgewogICAgICAgIF9JT19wdXRjICgnXG4nLCBncG91dGZpbGUpOwogICAgICAg
IFBTVFJJQ0tTX2lubGluZSA9IDA7CiAgICB9Cn0KCgpzdGF0aWMgdm9pZCBQU1RSSUNLU19hcnJv
dyhzeCwgc3ksIGV4LCBleSwgaGVhZCkKdW5zaWduZWQgaW50IHN4Owp1bnNpZ25lZCBpbnQgc3k7
CnVuc2lnbmVkIGludCBleDsKdW5zaWduZWQgaW50IGV5OwpUQk9PTEVBTiBoZWFkOwp7CiAgICBm
cHJpbnRmKGdwb3V0ZmlsZSwgIlxcUFNUQEFycm93JXMoJS40ZiwlLjRmKSglLjRmLCUuNGYpXG4i
LAogICAgICAgICAgICBoZWFkID8gInstPn0iIDogIiIsCiAgICAgICAgICAgIHN4IC8gMTAwMDAu
MCwKICAgICAgICAgICAgc3kgLyAxMDAwMC4wLAogICAgICAgICAgICBleCAvIDEwMDAwLjAsCiAg
ICAgICAgICAgIGV5IC8gMTAwMDAuMCk7CgogICAgUFNUUklDS1NfcG9zeCA9IGV4IC8gMTAwMDAu
MDsKICAgIFBTVFJJQ0tTX3Bvc3kgPSBleSAvIDEwMDAwLjA7Cn0KIyAzOTMgInRlcm0vcHN0cmlj
a3MudHJtIgpzdGF0aWMgY2hhciAqUFNUUklDS1NfaGFja190ZXh0KHMpCmNoYXIgc1tdOwp7CiAg
ICBkb3VibGUgdmFsdWU7CiAgICBjaGFyICplbmRzOwogICAgc3RhdGljIGNoYXIgaGFja1s4MTky
XTsKCgoKCgogICAgdmFsdWUgPSBzdHJ0b2QocywgJmVuZHMpOwoKICAgIGlmIChzID09IGVuZHMp
IHsKCgoKCiAgICAgICAgKF9fZXh0ZW5zaW9uX18gKF9fYnVpbHRpbl9jb25zdGFudF9wIChzKSA/
ICgoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgocykgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQg
KikocykgPT0gMSkgJiYgc3RybGVuIChzKSArIDEgPD0gOCA/IF9fc3RyY3B5X3NtYWxsIChoYWNr
LCBfX2V4dGVuc2lvbl9fICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFy
ICopIChzKSlbMCArIDFdIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25z
dCBjaGFyICopIChzKSlbMF0pLCBfX2V4dGVuc2lvbl9fICgoKF9fY29uc3QgdW5zaWduZWQgY2hh
ciAqKSAoX19jb25zdCBjaGFyICopIChzKSlbNCArIDFdIDw8IDggfCAoKF9fY29uc3QgdW5zaWdu
ZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChzKSlbNF0pLCBfX2V4dGVuc2lvbl9fICgoKCgo
X19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHMpKVswICsgM10gPDwg
OCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHMpKVswICsg
Ml0pIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChz
KSlbMCArIDFdKSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh
ciAqKSAocykpWzBdKSwgX19leHRlbnNpb25fXyAoKCgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAq
KSAoX19jb25zdCBjaGFyICopIChzKSlbNCArIDNdIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQg
Y2hhciAqKSAoX19jb25zdCBjaGFyICopIChzKSlbNCArIDJdKSA8PCA4IHwgKChfX2NvbnN0IHVu
c2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAocykpWzQgKyAxXSkgPDwgOCB8ICgoX19j
b25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHMpKVs0XSksIHN0cmxlbiAo
cykgKyAxKSA6IChjaGFyICopIG1lbWNweSAoaGFjaywgcywgc3RybGVuIChzKSArIDEpKSA6IHN0
cmNweSAoaGFjaywgcykpKTsKICAgIH0gZWxzZSB7CiAgICAgICAgY2hhciAqcHRyOwoKCgoKCgog
ICAgICAgIHNhZmVfc3RybmNweShoYWNrLCBzLCBlbmRzIC0gcyArIDEpOwoKCiAgICAgICAgcHRy
ID0gKF9fZXh0ZW5zaW9uX18gKF9fYnVpbHRpbl9jb25zdGFudF9wICgnZScpICYmICgnZScpID09
ICdcMCcgPyAoY2hhciAqKSBfX3Jhd21lbWNociAoaGFjaywgJ2UnKSA6IHN0cmNociAoaGFjaywg
J2UnKSkpOwogICAgICAgIGlmIChwdHIgPT0gKCh2b2lkICopMCkpIHsKICAgICAgICAgICAgcHRy
ID0gKF9fZXh0ZW5zaW9uX18gKF9fYnVpbHRpbl9jb25zdGFudF9wICgnRScpICYmICgnRScpID09
ICdcMCcgPyAoY2hhciAqKSBfX3Jhd21lbWNociAoaGFjaywgJ0UnKSA6IHN0cmNociAoaGFjaywg
J0UnKSkpOwogICAgICAgIH0KICAgICAgICBpZiAocHRyICE9ICgodm9pZCAqKTApKSB7CgoKCgog
ICAgICAgICAgICBkb3VibGUgbWFuX3ZhbDsKICAgICAgICAgICAgaW50IGV4cG9fdmFsOwoKICAg
ICAgICAgICAgKnB0ciA9ICgnXDAnKTsKCiAgICAgICAgICAgIG1hbl92YWwgPSBhdG9mKGhhY2sp
OwogICAgICAgICAgICBleHBvX3ZhbCA9IGF0b2kocHRyICsgMSk7CgogICAgICAgICAgICBpZiAo
bWFuX3ZhbCA9PSAwKSB7CiAgICAgICAgICAgICAgICBzcHJpbnRmKGhhY2ssICIwIik7CiAgICAg
ICAgICAgIH0gZWxzZSBpZiAobWFuX3ZhbCA9PSAxKSB7CiAgICAgICAgICAgICAgICBzcHJpbnRm
KGhhY2ssICIkMTBeeyVkfSQiLCBleHBvX3ZhbCk7CiAgICAgICAgICAgIH0gZWxzZSBpZiAobWFu
X3ZhbCA9PSAoaW50KSBtYW5fdmFsKSB7CiAgICAgICAgICAgICAgICBpZiAoZXhwb192YWwgPT0g
MSkgewogICAgICAgICAgICAgICAgICAgIHNwcmludGYoaGFjaywgIiQlZCQiLCAoaW50KSBtYW5f
dmFsKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgc3ByaW50
ZihoYWNrLCAiJCVkIFxcdGltZXMgMTBeeyVkfSQiLCAoaW50KSBtYW5fdmFsLCBleHBvX3ZhbCk7
CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBp
ZiAoZXhwb192YWwgPT0gMSkgewogICAgICAgICAgICAgICAgICAgIHNwcmludGYoaGFjaywgIiQl
ZiQiLCBtYW5fdmFsKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAg
ICAgc3ByaW50ZihoYWNrLCAiJCVmIFxcdGltZXMgMTBeeyVkfSQiLCBtYW5fdmFsLCBleHBvX3Zh
bCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgoKCgogICAgICAg
IHN0cmNhdChoYWNrLCBlbmRzKTsKICAgIH0KCiAgICByZXR1cm4gaGFjazsKfQoKc3RhdGljIHZv
aWQgUFNUUklDS1NfcHV0X3RleHQoeCwgeSwgc3RyKQp1bnNpZ25lZCBpbnQgeDsKdW5zaWduZWQg
aW50IHk7CmNoYXIgc3RyW107CnsKICAgIFBTVFJJQ0tTX2VuZGxpbmUoKTsKCgoKICAgIGlmIChz
dHJsZW4oc3RyKSA+IDApIHsKICAgICAgICBmcHV0cygiXFxycHV0IiwgZ3BvdXRmaWxlKTsKCgoK
ICAgICAgICBzd2l0Y2ggKFBTVFJJQ0tTX2p1c3RpZnkpIHsKICAgICAgICBjYXNlIExFRlQ6CiAg
ICAgICAgICAgIGZwdXRzKCJbbF0iLCBncG91dGZpbGUpOwogICAgICAgICAgICBicmVhazsKICAg
ICAgICBjYXNlIENFTlRSRToKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSBSSUdIVDoK
ICAgICAgICAgICAgZnB1dHMoIltyXSIsIGdwb3V0ZmlsZSk7CiAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgIH0KCgoKICAgICAgICBzd2l0Y2ggKFBTVFJJQ0tTX2FuZ2xlKSB7CiAgICAgICAgY2Fz
ZSAwOgogICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgIGZwdXRz
KCJ7TH0iLCBncG91dGZpbGUpOwogICAgICAgICAgICBicmVhazsKICAgICAgICB9CgoKCiAgICAg
ICAgZnByaW50ZihncG91dGZpbGUsICIoJS40ZiwlLjRmKSIsCiAgICAgICAgICAgICAgICB4IC8g
MTAwMDAuMCwKICAgICAgICAgICAgICAgIHkgLyAxMDAwMC4wKTsKICAgICAgICBpZiAoUFNUX2hh
Y2tfdGV4dCkgewogICAgICAgICAgICBjaGFyICpoYWNrOwoKCgogICAgICAgICAgICBoYWNrID0g
UFNUUklDS1NfaGFja190ZXh0KHN0cik7CiAgICAgICAgICAgIGZwcmludGYoZ3BvdXRmaWxlLCAi
eyVzfVxuIiwgaGFjayk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgZnByaW50ZihncG91
dGZpbGUsICJ7JXN9XG4iLCBzdHIpOwogICAgICAgIH0KICAgIH0KfQoKCgpzdGF0aWMgaW50IFBT
VFJJQ0tTX2p1c3RpZnlfdGV4dChtb2RlKQplbnVtIEpVU1RJRlkgbW9kZTsKewogICAgUFNUUklD
S1NfanVzdGlmeSA9IG1vZGU7CiAgICByZXR1cm4gKDEpOwp9CgpzdGF0aWMgaW50IFBTVFJJQ0tT
X3RleHRfYW5nbGUoYW5nKQppbnQgYW5nOwp7CiAgICBQU1RSSUNLU19hbmdsZSA9IGFuZzsKICAg
IHJldHVybiAoMSk7Cn0KCnN0YXRpYyB2b2lkIFBTVFJJQ0tTX3Jlc2V0KCkKewogICAgUFNUUklD
S1NfZW5kbGluZSgpOwogICAgUFNUUklDS1NfcG9zeCA9IFBTVFJJQ0tTX3Bvc3kgPSAwOwp9CiMg
Mzg1ICJ0ZXJtLmgiIDIKCgojIDEgInRlcm0vdGV4ZHJhdy50cm0iIDEKIyA1OCAidGVybS90ZXhk
cmF3LnRybSIKIyAxICJ0ZXJtL2RyaXZlci5oIiAxCiMgNTkgInRlcm0vdGV4ZHJhdy50cm0iIDIK
CgoKCgoKc3RhdGljIHZvaWQgVEVYRFJBV19pbml0ICh2b2lkKTsKc3RhdGljIHZvaWQgVEVYRFJB
V19ncmFwaGljcyAodm9pZCk7CnN0YXRpYyB2b2lkIFRFWERSQVdfdGV4dCAodm9pZCk7CnN0YXRp
YyB2b2lkIFRFWERSQVdfbGluZXR5cGUgKGludCBsaW5ldHlwZSk7CnN0YXRpYyB2b2lkIFRFWERS
QVdfbW92ZSAodW5zaWduZWQgaW50IHgsIHVuc2lnbmVkIGludCB5KTsKc3RhdGljIHZvaWQgVEVY
RFJBV19wb2ludCAodW5zaWduZWQgaW50IHgsIHVuc2lnbmVkIGludCB5LCBpbnQgbnVtYmVyKTsK
CnN0YXRpYyB2b2lkIFRFWERSQVdfdmVjdG9yICh1bnNpZ25lZCBpbnQgdXgsIHVuc2lnbmVkIGlu
dCB1eSk7CnN0YXRpYyB2b2lkIFRFWERSQVdfYXJyb3cgKHVuc2lnbmVkIGludCBzeCwgdW5zaWdu
ZWQgaW50IHN5LCB1bnNpZ25lZCBpbnQgZXgsIHVuc2lnbmVkIGludCBleSwgVEJPT0xFQU4gaGVh
ZCk7CgoKc3RhdGljIHZvaWQgVEVYRFJBV19wdXRfdGV4dCAodW5zaWduZWQgaW50IHgsIHVuc2ln
bmVkIGludCB5LCBjaGFyIHN0cltdKTsKCnN0YXRpYyBpbnQgVEVYRFJBV19qdXN0aWZ5X3RleHQg
KGVudW0gSlVTVElGWSBtb2RlKTsKc3RhdGljIGludCBURVhEUkFXX3RleHRfYW5nbGUgKGludCBh
bmcpOwpzdGF0aWMgdm9pZCBURVhEUkFXX3Jlc2V0ICh2b2lkKTsKIyAxMDIgInRlcm0vdGV4ZHJh
dy50cm0iCnN0YXRpYyB2b2lkIFRFWERSQVdfZW5kbGluZSAodm9pZCk7CnN0YXRpYyB1bnNpZ25l
ZCBpbnQgVEVYRFJBV19wb3N4OwpzdGF0aWMgdW5zaWduZWQgaW50IFRFWERSQVdfcG9zeTsKZW51
bSBKVVNUSUZZIFRFWERSQVdfanVzdGlmeSA9IExFRlQ7CmVudW0gSlVTVElGWSBURVhEUkFXX2xh
c3RfanVzdGlmeSA9IExFRlQ7CnN0YXRpYyBpbnQgVEVYRFJBV19hbmdsZSA9IDA7CnN0YXRpYyBm
bG9hdCBURVhEUkFXX3NjYWxlZmFjdG9yID0gMC4yNDA5OwpzdGF0aWMgZG91YmxlIFRFWERSQVdf
eHNjYWxlID0gMS4wLCBURVhEUkFXX3lzY2FsZSA9IDEuMDsKCgoKCgoKc3RhdGljIGNoYXIgKiBU
RVhEUkFXX3BvaW50c1tdID0KewogICAgIlxccm1vdmUoMCA0KVxcaHRleHR7JFxcRGlhbW9uZCR9
IiwKICAgICJcXGh0ZXh0eyQrJH0iLAogICAgIlxccm1vdmUoMCA0KVxcaHRleHR7JFxcQm94JH0i
LAogICAgIlxcaHRleHR7JFxcdGltZXMkfSIsCiAgICAiXFxodGV4dHskXFx0cmlhbmdsZSR9IiwK
ICAgICJcXGh0ZXh0eyRcXHN0YXIkfSIsCiAgICAiXFxsY2lyIHI6OSIsCiAgICAiXFxsY2lyIHI6
MTIiLAogICAgIlxcbGNpciByOjE2IiwKICAgICJcXGZjaXIgZjowLjkgcjo5IiwKICAgICJcXGZj
aXIgZjowLjkgcjoxMiIsCiAgICAiXFxmY2lyIGY6MC45IHI6MTYiCn07CgoKCnN0YXRpYyBpbnQg
VEVYRFJBV19saW5lc1tdID0KewogICAgNCwKICAgIDMsCiAgICAzLAogICAgNCwKICAgIDYsCn07
CgoKc3RhdGljIGludCBURVhEUkFXX2xhc3RfdHlwZSA9IDA7CgpzdGF0aWMgaW50IFRFWERSQVdf
dHlwZTsKCnN0YXRpYyBUQk9PTEVBTiBURVhEUkFXX2lubGluZSA9IDA7CgpzdGF0aWMgdm9pZCBU
RVhEUkFXX2VuZGxpbmUgKHZvaWQpOwoKc3RhdGljIGludCBURVhEUkFXX2xpbmVjb3VudCA9IDA7
CgoKCnN0YXRpYyB2b2lkIFRFWERSQVdfaW5pdCgpCnsKICAgIFRFWERSQVdfcG9zeCA9IFRFWERS
QVdfcG9zeSA9IDA7CiAgICBURVhEUkFXX2xpbmV0eXBlKC0xKTsKICAgIGZwdXRzKCIlJSBHTlVQ
TE9UOiBMYVRlWCB1c2luZyBURVhEUkFXIG1hY3Jvc1xuIiwgZ3BvdXRmaWxlKTsKfQoKc3RhdGlj
IHZvaWQgVEVYRFJBV19ncmFwaGljcygpCnsKICAgIHN0YXRpYyBjaGFyIHRkZzFbXSA9ICJcXGJl
Z2lue3RleGRyYXd9XG5cXG5vcm1hbHNpemVcblxcaWZ4XFxwYXRoREVGSU5FRFxccmVsYXhcXGVs
c2VcXGxldFxccGF0aERFRklORURcXHJlbGF4XG4gXFxkZWZcXFF0R2Zye1xcaWZ4IChcXFRHcmUg
XFxsZXRcXFloZXRUXFxjcGF0aFxcZWxzZVxcbGV0XFxZaGV0VFxccmVsYXhcXGZpXFxZaGV0VH1c
biBcXGRlZlxccGF0aCAoIzEgIzIpe1xcbW92ZSAoIzEgIzIpXFxmdXR1cmVsZXRcXFRHcmVcXFF0
R2ZyfVxuIFxcZGVmXFxjcGF0aCAoIzEgIzIpe1xcbHZlYyAoIzEgIzIpXFxmdXR1cmVsZXRcXFRH
cmVcXFF0R2ZyfVxuXFxmaVxuXFxkcmF3ZGltIHB0XG5cXHNldHVuaXRzY2FsZSAlMi4yZlxuXFxs
aW5ld2QgJWRcblxcdGV4dHJlZiBoOkwgdjpDXG4iOwojIDE3NyAidGVybS90ZXhkcmF3LnRybSIK
ICAgIGZwcmludGYoZ3BvdXRmaWxlLCB0ZGcxLAogICAgICAgICAgICBURVhEUkFXX3NjYWxlZmFj
dG9yLAogICAgICAgICAgICBURVhEUkFXX2xpbmVzWzJdKTsKICAgIFRFWERSQVdfbGFzdF90eXBl
ID0gMDsKICAgIFRFWERSQVdfdHlwZSA9IDA7Cn0KCnN0YXRpYyB2b2lkIFRFWERSQVdfdGV4dCgp
CnsKICAgIFRFWERSQVdfZW5kbGluZSgpOwogICAgZnB1dHMoIlxcZW5ke3RleGRyYXd9XG4iLCBn
cG91dGZpbGUpOwp9CgpzdGF0aWMgdm9pZCBURVhEUkFXX2xpbmV0eXBlKGxpbmV0eXBlKQppbnQg
bGluZXR5cGU7CnsKICAgIFRFWERSQVdfZW5kbGluZSgpOwoKICAgIGlmIChsaW5ldHlwZSA+PSA1
IC0gMikKICAgICAgICBsaW5ldHlwZSAlPSAoNSAtIDIpOwoKICAgIFRFWERSQVdfdHlwZSA9IGxp
bmV0eXBlOwp9CgpzdGF0aWMgdm9pZCBURVhEUkFXX21vdmUoeCwgeSkKdW5zaWduZWQgaW50IHgs
IHk7CnsKICAgIFRFWERSQVdfZW5kbGluZSgpOwoKICAgIFRFWERSQVdfcG9zeCA9IHg7CiAgICBU
RVhEUkFXX3Bvc3kgPSB5Owp9CgpzdGF0aWMgdm9pZCBURVhEUkFXX3BvaW50KHgsIHksIG51bWJl
cikKdW5zaWduZWQgaW50IHgsIHk7CmludCBudW1iZXI7CnsKICAgIFRFWERSQVdfbW92ZSh4LCB5
KTsKCgoKICAgIGZwcmludGYoZ3BvdXRmaWxlLCAiXFxtb3ZlICglZCAlZClcbiIsCiAgICAgICAg
ICAgIChpbnQpICgoZG91YmxlKSB4ICogVEVYRFJBV194c2NhbGUpLAogICAgICAgICAgICAoaW50
KSAoKGRvdWJsZSkgeSAqIFRFWERSQVdfeXNjYWxlKSk7CiAgICBpZiAoVEVYRFJBV19sYXN0X2p1
c3RpZnkgIT0gQ0VOVFJFKSB7CiAgICAgICAgZnByaW50ZihncG91dGZpbGUsICJcXHRleHRyZWYg
aDpDIHY6QyAiKTsKICAgICAgICBURVhEUkFXX2xhc3RfanVzdGlmeSA9IENFTlRSRTsKICAgIH0K
ICAgIGZwcmludGYoZ3BvdXRmaWxlLCAiJXNcbiIsCiAgICAgICAgICAgIChudW1iZXIgPCAwID8K
ICAgICAgICAgICAgICJcXGh0ZXh0eyRcXGNkb3QkfSIgOgogICAgICAgICAgICAgVEVYRFJBV19w
b2ludHNbbnVtYmVyICUgMTJdKSk7Cn0KCnN0YXRpYyB2b2lkIFRFWERSQVdfdmVjdG9yKHV4LCB1
eSkKdW5zaWduZWQgaW50IHV4LCB1eTsKewogICAgaWYgKCFURVhEUkFXX2lubGluZSkgewogICAg
ICAgIFRFWERSQVdfaW5saW5lID0gMTsKCgogICAgICAgIGlmIChURVhEUkFXX3R5cGUgIT0gVEVY
RFJBV19sYXN0X3R5cGUpIHsKICAgICAgICAgICAgaWYgKFRFWERSQVdfbGluZXNbVEVYRFJBV190
eXBlICsgMl0gIT0gVEVYRFJBV19saW5lc1tURVhEUkFXX2xhc3RfdHlwZSArIDJdKQogICAgICAg
ICAgICAgICAgZnByaW50ZihncG91dGZpbGUsICJcXGxpbmV3ZCAlZFxuIiwgVEVYRFJBV19saW5l
c1tURVhEUkFXX3R5cGUgKyAyXSk7CiAgICAgICAgICAgIFRFWERSQVdfbGFzdF90eXBlID0gVEVY
RFJBV190eXBlOwogICAgICAgIH0KICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgIlxccGF0aCAo
JWQgJWQpIiwKICAgICAgICAgICAgICAgIChpbnQpICgoZG91YmxlKSBURVhEUkFXX3Bvc3ggKiBU
RVhEUkFXX3hzY2FsZSksCiAgICAgICAgICAgICAgICAoaW50KSAoKGRvdWJsZSkgVEVYRFJBV19w
b3N5ICogVEVYRFJBV195c2NhbGUpKTsKICAgICAgICBURVhEUkFXX2xpbmVjb3VudCA9IDE7CiAg
ICB9IGVsc2UgewoKCgoKICAgICAgICBpZiAoVEVYRFJBV19saW5lY291bnQrKyA+PSA1KSB7CiAg
ICAgICAgICAgIGZwdXRzKCJcblxcY3BhdGggIiwgZ3BvdXRmaWxlKTsKICAgICAgICAgICAgVEVY
RFJBV19saW5lY291bnQgPSAxOwogICAgICAgIH0KICAgIH0KICAgIGZwcmludGYoZ3BvdXRmaWxl
LCAiKCVkICVkKSIsCiAgICAgICAgICAgIChpbnQpICgoZG91YmxlKSB1eCAqIFRFWERSQVdfeHNj
YWxlKSwKICAgICAgICAgICAgKGludCkgKChkb3VibGUpIHV5ICogVEVYRFJBV195c2NhbGUpKTsK
ICAgIFRFWERSQVdfcG9zeCA9IHV4OwogICAgVEVYRFJBV19wb3N5ID0gdXk7Cn0KCnN0YXRpYyB2
b2lkIFRFWERSQVdfZW5kbGluZSgpCnsKICAgIGlmIChURVhEUkFXX2lubGluZSkgewogICAgICAg
IF9JT19wdXRjICgnXG4nLCBncG91dGZpbGUpOwogICAgICAgIFRFWERSQVdfaW5saW5lID0gMDsK
ICAgIH0KfQoKc3RhdGljIHZvaWQgVEVYRFJBV19hcnJvdyhzeCwgc3ksIGV4LCBleSwgaGVhZCkK
dW5zaWduZWQgaW50IHN4LCBzeSwgZXgsIGV5OwpUQk9PTEVBTiBoZWFkOwp7CiAgICBjaGFyIHRl
eHQ7CgogICAgaWYgKGhlYWQpCiAgICAgICAgdGV4dCA9ICdhJzsKICAgIGVsc2UKICAgICAgICB0
ZXh0ID0gJ2wnOwogICAgZnByaW50ZihncG91dGZpbGUsICJcXG1vdmUgKCVkICVkKVxcJWN2ZWMg
KCVkICVkKSIsCiAgICAgICAgICAgIChpbnQpICgoZG91YmxlKSBzeCAqIFRFWERSQVdfeHNjYWxl
KSwKICAgICAgICAgICAgKGludCkgKChkb3VibGUpIHN5ICogVEVYRFJBV195c2NhbGUpLAogICAg
ICAgICAgICB0ZXh0LAogICAgICAgICAgICAoaW50KSAoKGRvdWJsZSkgZXggKiBURVhEUkFXX3hz
Y2FsZSksCiAgICAgICAgICAgIChpbnQpICgoZG91YmxlKSBleSAqIFRFWERSQVdfeXNjYWxlKSk7
CiAgICBURVhEUkFXX3Bvc3ggPSBleDsKICAgIFRFWERSQVdfcG9zeSA9IGV5Owp9CgpzdGF0aWMg
dm9pZCBURVhEUkFXX3B1dF90ZXh0KHgsIHksIHN0cikKdW5zaWduZWQgaW50IHgsIHk7CmNoYXIg
c3RyW107CnsKICAgIGNoYXIgdGV4dDsKCiAgICBURVhEUkFXX2VuZGxpbmUoKTsKCiAgICBmcHJp
bnRmKGdwb3V0ZmlsZSwgIlxcbW92ZSAoJWQgJWQpIiwKICAgICAgICAgICAgKGludCkgKChkb3Vi
bGUpIHggKiBURVhEUkFXX3hzY2FsZSksCiAgICAgICAgICAgIChpbnQpICgoZG91YmxlKSB5ICog
VEVYRFJBV195c2NhbGUpKTsKCiAgICBpZiAoIVRFWERSQVdfYW5nbGUpCiAgICAgICAgdGV4dCA9
ICdoJzsKICAgIGVsc2UKICAgICAgICB0ZXh0ID0gJ3YnOwoKICAgIGlmIChURVhEUkFXX2xhc3Rf
anVzdGlmeSAhPSBURVhEUkFXX2p1c3RpZnkpIHsKICAgICAgICBURVhEUkFXX2xhc3RfanVzdGlm
eSA9IFRFWERSQVdfanVzdGlmeTsKICAgICAgICBpZiAoVEVYRFJBV19qdXN0aWZ5ID09IExFRlQp
CiAgICAgICAgICAgIGZwdXRzKCJcXHRleHRyZWYgaDpMIHY6QyAiLCBncG91dGZpbGUpOwogICAg
ICAgIGVsc2UgaWYgKFRFWERSQVdfanVzdGlmeSA9PSBDRU5UUkUpCiAgICAgICAgICAgIGZwdXRz
KCJcXHRleHRyZWYgaDpDIHY6QyAiLCBncG91dGZpbGUpOwogICAgICAgIGVsc2UgaWYgKFRFWERS
QVdfanVzdGlmeSA9PSBSSUdIVCkKICAgICAgICAgICAgZnB1dHMoIlxcdGV4dHJlZiBoOlIgdjpD
ICIsIGdwb3V0ZmlsZSk7CiAgICB9CiAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgIlxcJWN0ZXh0eyVz
fVxuIiwgdGV4dCwgc3RyKTsKfQoKCnN0YXRpYyBpbnQgVEVYRFJBV19qdXN0aWZ5X3RleHQobW9k
ZSkKZW51bSBKVVNUSUZZIG1vZGU7CnsKICAgIFRFWERSQVdfanVzdGlmeSA9IG1vZGU7CiAgICBy
ZXR1cm4gKDEpOwp9CgpzdGF0aWMgaW50IFRFWERSQVdfdGV4dF9hbmdsZShhbmcpCmludCBhbmc7
CnsKICAgIFRFWERSQVdfYW5nbGUgPSBhbmc7CiAgICByZXR1cm4gKDEpOwp9CgpzdGF0aWMgdm9p
ZCBURVhEUkFXX3Jlc2V0KCkKewogICAgVEVYRFJBV19lbmRsaW5lKCk7CiAgICBURVhEUkFXX3Bv
c3ggPSBURVhEUkFXX3Bvc3kgPSAwOwp9CiMgMzg4ICJ0ZXJtLmgiIDIKCgojIDEgInRlcm0vbWV0
YWZvbnQudHJtIiAxCiMgNzAgInRlcm0vbWV0YWZvbnQudHJtIgojIDEgInRlcm0vZHJpdmVyLmgi
IDEKIyA3MSAidGVybS9tZXRhZm9udC50cm0iIDIKIyA5NCAidGVybS9tZXRhZm9udC50cm0iCnN0
YXRpYyB2b2lkIE1GX2luaXQgKHZvaWQpOwpzdGF0aWMgdm9pZCBNRl9ncmFwaGljcyAodm9pZCk7
CnN0YXRpYyB2b2lkIE1GX3RleHQgKHZvaWQpOwpzdGF0aWMgaW50IE1GX2p1c3RpZnlfdGV4dCAo
ZW51bSBKVVNUSUZZIG1vZGUpOwpzdGF0aWMgaW50IE1GX3RleHRfYW5nbGUgKGludCBhbmcpOwpz
dGF0aWMgdm9pZCBNRl9saW5ldHlwZSAoaW50IGxpbmV0eXBlKTsKc3RhdGljIHZvaWQgTUZfbW92
ZSAodW5zaWduZWQgaW50IHgsIHVuc2lnbmVkIGludCB5KTsKc3RhdGljIHZvaWQgTUZfdmVjdG9y
ICh1bnNpZ25lZCBpbnQgeCwgdW5zaWduZWQgaW50IHkpOwpzdGF0aWMgdm9pZCBNRl9hcnJvdyAo
dW5zaWduZWQgaW50IHN4LCB1bnNpZ25lZCBpbnQgc3ksIHVuc2lnbmVkIGludCBleCwgdW5zaWdu
ZWQgaW50IGV5LCBUQk9PTEVBTiBoZWFkKTsKCgpzdGF0aWMgdm9pZCBNRl9wdXRfdGV4dCAodW5z
aWduZWQgaW50IHgsIHVuc2lnbmVkIGludCB5LCBjaGFyICpzdHIpOwpzdGF0aWMgdm9pZCBNRl9y
ZXNldCAodm9pZCk7CiMgMTE5ICJ0ZXJtL21ldGFmb250LnRybSIKc3RhdGljIGRvdWJsZSBNRl94
c2l6ZSA9IDUuMDsKc3RhdGljIGRvdWJsZSBNRl95c2l6ZSA9IDMuMDsKc3RhdGljIGludCBNRl9j
aGFyX2NvZGU7CnN0YXRpYyBpbnQgTUZfYW5nOwpzdGF0aWMgaW50IE1GX2xpbmVfdHlwZTsKc3Rh
dGljIGVudW0gSlVTVElGWSBNRl9qdXN0aWZ5OwpzdGF0aWMgZG91YmxlIE1GX2Rpc3RfbGVmdDsK
c3RhdGljIGludCBNRl9pc19zb2xpZDsKc3RhdGljIGludCBNRl9waWNrZWRfdXBfcGVuOwoKCgoK
CgpzdGF0aWMgaW50IE1GX2Rhc2hfaW5kZXg7CnN0YXRpYyB1bnNpZ25lZCBpbnQgTUZfbGFzdF94
LCBNRl9sYXN0X3k7CgpzdGF0aWMgc3RydWN0IHsKICAgIGludCBzb2xpZDsKICAgIGZsb2F0IHRo
aWNrbmVzczsKICAgIGludCBkYXNobGVuWzRdOwp9IE1GX2xpbmVzWzEwXSA9CnsKICAgIHsKICAg
ICAgICAxLCAxLjUsIHsgMCwgMCwgMCwgMCB9CiAgICB9LAogICAgewogICAgICAgIDAsIDEuMCwg
eyAoMzAwKSAvIDYwLCAoMzAwKSAvIDUwLCAoMzAwKSAvIDYwLCAoMzAwKSAvIDUwIH0KICAgIH0s
CiAgICB7CiAgICAgICAgMSwgMS41LCB7IDAsIDAsIDAsIDAgfQogICAgfSwKICAgIHsKICAgICAg
ICAwLCAxLjUsIHsgKDMwMCkgLyAyMCwgKDMwMCkgLyAzMCwgKDMwMCkgLyAyMCwgKDMwMCkgLyAz
MCB9CiAgICB9LAogICAgewogICAgICAgIDAsIDEuNSwgeyAoMzAwKSAvIDMwLCAoMzAwKSAvIDIw
LCAoMzAwKSAvIDMwLCAoMzAwKSAvIDIwIH0KICAgIH0sCiAgICB7CiAgICAgICAgMCwgMS41LCB7
ICgzMDApIC8gMTUsICgzMDApIC8gMzAsICgzMDApIC8gNjAsICgzMDApIC8gMzAgfQogICAgfSwK
ICAgIHsKICAgICAgICAwLCAxLjUsIHsgKDMwMCkgLyAzMCwgKDMwMCkgLyA1MCwgKDMwMCkgLyAz
MCwgKDMwMCkgLyA1MCB9CiAgICB9LAogICAgewogICAgICAgIDAsIDEuNSwgeyAoMzAwKSAvIDIw
LCAoMzAwKSAvIDUwLCAoMzAwKSAvIDYwLCAoMzAwKSAvIDMwIH0KICAgIH0sCiAgICB7CiAgICAg
ICAgMCwgMS41LCB7ICgzMDApIC8gMzAsICgzMDApIC8gNTAsICgzMDApIC8gMzAsICgzMDApIC8g
MzAgfQogICAgfSwKICAgIHsKICAgICAgICAwLCAxLjUsIHsgKDMwMCkgLyA2MCwgKDMwMCkgLyA1
MCwgKDMwMCkgLyA2MCwgKDMwMCkgLyAzMCB9CiAgICB9Cgp9OwoKCgpzdGF0aWMgdm9pZCBNRl9p
bml0KCkKewogICAgTUZfY2hhcl9jb2RlID0gMDsKICAgIE1GX2FuZyA9IDA7CgogICAgZnB1dHMo
ImlmIHVua25vd24gY21iYXNlOiBpbnB1dCBjbWJhc2UgZmlcblxudHJhY2luZ3N0YXRzOj0xO1xu
cGljdHVyZSByW107XG5cbmRlZiBvcGVuaXQgPSBvcGVud2luZG93IGN1cnJlbnR3aW5kb3dcbiAg
ZnJvbSAoMCwwKSB0byAoNDAwLDgwMCkgYXQgKC01MCw1MDApIGVuZGRlZjtcblxubW9kZV9zZXR1
cDtcbiIsIGdwb3V0ZmlsZSk7CgoKCgoKCgogICAgZnB1dHMoIlxuJUluY2x1ZGUgbmV4dCBlaWdo
dCBsaW5lcyBpZiB5b3UgaGF2ZSBwcm9ibGVtcyB3aXRoIHRoZSBtb2RlIG9uIHlvdXIgc3lzdGVt
Li5cbiVwcm9vZmluZzo9MDtcbiVmb250bWFraW5nOj0xO1xuJXRyYWNpbmd0aXRsZXM6PTA7XG4l
cGl4ZWxzX3Blcl9pbmNoOj0zMDA7XG4lYmxhY2tlcjo9MDtcbiVmaWxsaW46PS4yO1xuJW9fY29y
cmVjdGlvbjo9LjY7XG4lZml4X3VuaXRzO1xuIiwgZ3BvdXRmaWxlKTsKIyAyMDMgInRlcm0vbWV0
YWZvbnQudHJtIgogICAgZnB1dHMoIlxuZGVmIHB1dF90ZXh0KGV4cHIgdHMseHN0YXJ0LHlzdGFy
dCxyb3QsanVzdGlmaWNhdGlvbikgPVxuICBiZWdpbmdyb3VwXG4gICAgdGV4dF93aWR0aDo9MDt0
ZXh0X2hlaWdodDo9MDtcbiAgICBmb3IgaW5kOj0wIHN0ZXAgMSB1bnRpbCBsZW5ndGgodHMpLTE6
XG4gICAgICBkZWNfbnVtOj1BU0NJSSBzdWJzdHJpbmcgKGluZCxpbmQrMSkgb2YgdHM7XG4gICAg
ICBpZiB1bmtub3duIHJbZGVjX251bV06IGRlY19udW06PTMyOyBmaVxuICAgICAgaWYgZGVjX251
bT0zMjogXG4gICAgICAgIHRleHRfd2lkdGg6PXRleHRfd2lkdGgrd2RbNjVdO1xuICAgICAgICB0
ZXh0X2hlaWdodDo9R1BNQVgodGV4dF9oZWlnaHQsaHRbNjVdK2RwWzY1XSk7XG4gICAgICBlbHNl
aWYgZGVjX251bT49MDogXG4gICAgICAgIHRleHRfd2lkdGg6PXRleHRfd2lkdGgrd2RbZGVjX251
bV07XG4gICAgICAgIHRleHRfaGVpZ2h0Oj1HUE1BWCh0ZXh0X2hlaWdodCxodFtkZWNfbnVtXStk
cFtkZWNfbnVtXSk7XG4gICAgICBmaVxuICAgIGVuZGZvclxuICAgIGlmIHJvdD05MDpcbiAgICAg
IGlmIGp1c3RpZmljYXRpb249MTogeW5leHQ6PXlzdGFydDtcbiAgICAgIGVsc2VpZiBqdXN0aWZp
Y2F0aW9uPTI6IHluZXh0Oj1yb3VuZCh5c3RhcnQtdGV4dF93aWR0aC8yKTtcbiAgICAgIGVsc2U6
IHluZXh0Oj1yb3VuZCh5c3RhcnQtdGV4dF93aWR0aCk7XG4gICAgICBmaVxuICAgICAgeG5leHQ6
PXhzdGFydCt0ZXh0X2hlaWdodC8yO1xuICAgIGVsc2U6XG4gICAgICBpZiBqdXN0aWZpY2F0aW9u
PTE6IHhuZXh0Oj14c3RhcnQ7XG4gICAgICBlbHNlaWYganVzdGlmaWNhdGlvbj0yOiB4bmV4dDo9
cm91bmQoeHN0YXJ0LXRleHRfd2lkdGgvMik7XG4gICAgICBlbHNlOiB4bmV4dDo9cm91bmQoeHN0
YXJ0LXRleHRfd2lkdGgpO1xuICAgICAgZmlcbiAgICAgIHluZXh0Oj15c3RhcnQtdGV4dF9oZWln
aHQvMjtcbiAgICBmaVxuICAgIGZvciBpbmQ6PTAgc3RlcCAxIHVudGlsIGxlbmd0aCh0cyktMTpc
biAgICAgIGRlY19udW06PUFTQ0lJIHN1YnN0cmluZyAoaW5kLGluZCsxKSBvZiB0cztcbiAgICAg
IGlmIHVua25vd24gcltkZWNfbnVtXTogZGVjX251bTo9MzI7IGZpXG4gICAgICBpZiBkZWNfbnVt
PTMyOiBcbiAgICAgICAgeG5leHQ6PXhuZXh0K3dkWzY1XSpjb3NkIHJvdDtcbiAgICAgICAgeW5l
eHQ6PXluZXh0K3dkWzY1XSpzaW5kIHJvdDtcbiAgICAgIGVsc2VpZiBkZWNfbnVtPj0wOiBcbiAg
ICAgICAgY3VycmVudHBpY3R1cmU6PWN1cnJlbnRwaWN0dXJlK3JbZGVjX251bV0gc2hpZnRlZCh4
bmV4dCx5bmV4dClcbiAgICAgICAgICByb3RhdGVkYXJvdW5kICgoeG5leHQseW5leHQpLHJvdCk7
IFxuICAgICAgICB4bmV4dDo9eG5leHQrd2RbZGVjX251bV0qY29zZCByb3Q7XG4gICAgICAgIHlu
ZXh0Oj15bmV4dCt3ZFtkZWNfbnVtXSpzaW5kIHJvdDtcbiAgICAgIGZpXG4gICAgZW5kZm9yXG4g
IGVuZGdyb3VwIFxuZW5kZGVmO1xuIiwgZ3BvdXRmaWxlKTsKIyAyNDcgInRlcm0vbWV0YWZvbnQu
dHJtIgogICAgZnB1dHMoIlxuZGVmIGVuZGNoYXIgPVxuICByW2NoYXJjb2RlXTo9Y3VycmVudHBp
Y3R1cmU7XG4gIHdkW2NoYXJjb2RlXTo9dztodFtjaGFyY29kZV06PWg7ZHBbY2hhcmNvZGVdOj1k
O1xuICBtZXNzYWdlIFwiUGljdHVyZSBvZiBjaGFyY29kZSBuby5cIiAmIGRlY2ltYWwgY2hhcmNv
ZGU7XG4gIGVuZGdyb3VwO1xuZW5kZGVmO1xubGV0IGVuZGNoYXJfID0gZW5kY2hhcjtcbmxldCBn
ZW5lcmF0ZSA9IHJlbGF4O1xubGV0IHJvbWFuID0gcmVsYXg7XG4iLCBncG91dGZpbGUpOwojIDI1
OCAidGVybS9tZXRhZm9udC50cm0iCiAgICBmcHV0cygiaW5wdXQgY21yMTAubWZcbmlmIGxpZ3M+
MTogZm9udF9jb2Rpbmdfc2NoZW1lOj1cIlRlWCB0ZXh0XCI7XG4gIHNwYW5pc2hfc2hyaWVrPW9j
dFwiMDc0XCI7IHNwYW5pc2hfcXVlcnk9b2N0XCIwNzZcIjtcbmVsc2U6IGZvbnRfY29kaW5nX3Nj
aGVtZTo9XG4gIGlmIGxpZ3M9MDogXCJUZVggdHlwZXdyaXRlciB0ZXh0XCJcbiAgZWxzZTogXCJU
ZVggdGV4dCB3aXRob3V0IGYtbGlnYXR1cmVzXCIgZmk7XG4gIHNwYW5pc2hfc2hyaWVrPW9jdFwi
MDE2XCI7IHNwYW5pc2hfcXVlcnk9b2N0XCIwMTdcIjsgZmlcbmZvbnRfc2V0dXA7XG5pbnB1dCBy
b21hbnUubWYgJVJvbWFuIHVwcGVyY2FzZS5cbmlucHV0IHJvbWFubC5tZiAlUm9tYW4gbG93ZXJy
Y2FzZS5cbmlucHV0IGdyZWVrdS5tZiAlR3JlZWsgdXBwZXJjYXNlLlxuaW5wdXQgcm9tYW5kLm1m
ICVOdW1lcmFscy5cbmlucHV0IHJvbWFucC5tZiAlQW1wZXJzYW5kLCBxdWVzdGlvbiBtYXJrcywg
Y3VycmVuY3kgc2lnbi5cbmlucHV0IHJvbXNwbC5tZiAlTG93ZXJjYXNlIHNwZWNpYWxzIChkb3Rs
ZXNzIFxcaSwgbGlnYXR1cmUgXFxhZSwgZXRjLilcbmlucHV0IHJvbXNwdS5tZiAlVXBwZXJjYXNl
IHNwZWNpYWxzIChcXEFFLCBcXE9FLCBcXE8pXG5pbnB1dCBwdW5jdC5tZiAlUHVuY3R1YXRpb24g
c3ltYm9scy5cblxubWludXM9QVNDSUlcIi1cIjsgY21jaGFyIFwiTWludXMgc2lnblwiO1xuYmVn
aW5hcml0aGNoYXIobWludXMpOyBcbiAgcGlja3VwIHJ1bGUubmliO1xuICBsZnQgeDE9aHJvdW5k
IDEuNXUtZXBzO1xuICB4Mj13LXgxOyB5MT15Mj1tYXRoX2F4aXM7XG4gIGRyYXcgejEtLXoyOwkg
JSBiYXJcbiAgbGFiZWxzKDEsMik7IFxuZW5kY2hhcjtcbiIsIGdwb3V0ZmlsZSk7CiMgMjg0ICJ0
ZXJtL21ldGFmb250LnRybSIKICAgIGZwdXRzKCJcbmNtY2hhciBcIlBlcmlvZFwiO1xuICBudW1l
cmljIGRvdF9kaWFtIzsgZG90X2RpYW0jOj1pZiBtb25vc3BhY2U6IDUvNCBmaVxcIGRvdF9zaXpl
IztcbiAgZGVmaW5lX3dob2xlX2JsYWNrZXJfcGl4ZWxzKGRvdF9kaWFtKTtcbiAgYmVnaW5jaGFy
KFwiLlwiLDV1Iyxkb3RfZGlhbSMsMCk7XG4gIGFkanVzdF9maXQoMCwwKTsgcGlja3VwIGZpbmUu
bmliO1xuICBwb3MxKGRvdF9kaWFtLDApOyBwb3MyKGRvdF9kaWFtLDkwKTtcbiAgbGZ0IHgxbD1o
cm91bmQoLjV3LS41ZG90X2RpYW0pOyBib3QgeTJsPTA7IHoxPXoyOyBkb3QoMSwyKTsJJSBkb3Rc
biAgcGVubGFiZWxzKDEsMik7XG5lbmRjaGFyO1xuIiwgZ3BvdXRmaWxlKTsKIyAyOTUgInRlcm0v
bWV0YWZvbnQudHJtIgogICAgZnB1dHMoIlxuZGVmIGVuZGNoYXIgPVxuICAlIE5leHQgbGluZSBz
aG91bGQgcHJvYmFibHkgYmUgcmVtb3ZlZCBpZiBDTSBiYXNlIGlzIHVzZWRcbiAgbDo9MDsgcjo9
dztcbiAgJUluY2x1ZGUgdGhlIG5leHQgdHdvIGxpbmVzIGlmIHlvdSB3YW50IHRvXG4gICVyb3Rh
dGUgdGhlIHBpY3R1cmUgOTAgZGVnLihQb3J0cmFpdCB0byBMYW5kc2NhcGUpXG4gICVjdXJyZW50
cGljdHVyZTo9Y3VycmVudHBpY3R1cmUgcm90YXRlZCA5MCBzaGlmdGVkIChoLDApO1xuICAldG1w
Oj1jaGFyaHQ7IGNoYXJodDo9Y2hhcndkOyBjaGFyd2Q6PXRtcDtcbiAgc2NhbnRva2VucyBleHRy
YV9lbmRjaGFyO1xuICBpZiBwcm9vZmluZz4wOiBtYWtlYm94KHByb29mcnVsZSk7IGZpXG4gIGNo
YXJkeDo9dztcbiAgc2hpcGl0O1xuICBpZiBkaXNwbGF5aW5nPjA6IG1ha2Vib3goc2NyZWVucnVs
ZSk7IHNob3dpdDsgZmlcbiAgZW5kZ3JvdXAgXG5lbmRkZWY7XG5sZXQgZW5kY2hhcl8gPSBlbmRj
aGFyO1xubGV0IGdlbmVyYXRlID0gaW5wdXQ7XG5sZXQgcm9tYW4gPSByb21hbjtcbiIsIGdwb3V0
ZmlsZSk7CiMgMzE4ICJ0ZXJtL21ldGFmb250LnRybSIKICAgIGZwdXRzKCJcblxuZm9udF9pZGVu
dGlmaWVyOj1cIkdOVVBMT1RcIjtcbmZvbnRfc2l6ZSA3MnB0IztcbnRoIz0wLjRwdCM7IGRlZmlu
ZV93aG9sZV9waXhlbHModGgpO1xuXG5wYXRoIGFycm93aGVhZDtcbmFycm93aGVhZCA9ICgtN3B0
LC0ycHQpe2RpcjMwfS4uKC02cHQsMHB0KS4ue2RpcjE1MH0oLTdwdCwycHQpICZcbiAgKC03cHQs
MnB0KS0tKDBwdCwwcHQpLS0oLTdwdCwtMnB0KSAmIGN5Y2xlO1xuIiwgZ3BvdXRmaWxlKTsKCgoK
CgoKCn0KCgpzdGF0aWMgdm9pZCBNRl9ncmFwaGljcygpCnsKICAgIHJlZ2lzdGVyIHN0cnVjdCBU
RVJNRU5UUlkgKnQgPSB0ZXJtOwoKICAgIGZwcmludGYoZ3BvdXRmaWxlLCAiXG5cbmJlZ2luY2hh
ciglZCwlZ2luIywlZ2luIywwKTtcbiIsCiAgICAgICAgICAgIE1GX2NoYXJfY29kZSwgTUZfeHNp
emUsIE1GX3lzaXplKTsKICAgIE1GX2NoYXJfY29kZSsrOwogICAgZnByaW50ZihncG91dGZpbGUs
ICJhOj13LyVkO2I6PWgvJWQ7XG4iLCB0LT54bWF4LCB0LT55bWF4KTsKICAgIE1GX3BpY2tlZF91
cF9wZW4gPSAwOwp9CgoKc3RhdGljIHZvaWQgTUZfdGV4dCgpCnsKICAgIGZwdXRzKCJlbmRjaGFy
O1xuIiwgZ3BvdXRmaWxlKTsKfQoKCnN0YXRpYyBpbnQgTUZfanVzdGlmeV90ZXh0KG1vZGUpCmVu
dW0gSlVTVElGWSBtb2RlOwp7CiAgICBNRl9qdXN0aWZ5ID0gbW9kZTsKICAgIHJldHVybiAxOwp9
CgoKc3RhdGljIGludCBNRl90ZXh0X2FuZ2xlKGFuZykKaW50IGFuZzsKewogICAgaWYgKGFuZyA+
IDApCiAgICAgICAgTUZfYW5nID0gOTA7CiAgICBlbHNlCiAgICAgICAgTUZfYW5nID0gMDsKICAg
IHJldHVybiAxOwp9CgoKc3RhdGljIHZvaWQgTUZfbGluZXR5cGUobGluZXR5cGUpCmludCBsaW5l
dHlwZTsKewogICAgaWYgKGxpbmV0eXBlID49IDgpCiAgICAgICAgbGluZXR5cGUgJT0gODsKICAg
IGxpbmV0eXBlICs9IDI7CgogICAgaWYgKChNRl9saW5lc1tsaW5ldHlwZV0udGhpY2tuZXNzICE9
IE1GX2xpbmVzW01GX2xpbmVfdHlwZV0udGhpY2tuZXNzKSB8fAogICAgICAgICghTUZfcGlja2Vk
X3VwX3BlbikpIHsKICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgInBpY2t1cCBwZW5jaXJjbGUg
c2NhbGVkICVndGg7XG4iLAogICAgICAgICAgICAgICAgTUZfbGluZXNbbGluZXR5cGVdLnRoaWNr
bmVzcyk7CiAgICAgICAgTUZfcGlja2VkX3VwX3BlbiA9IDE7CiAgICB9CiAgICBNRl9saW5lX3R5
cGUgPSBsaW5ldHlwZTsKICAgIE1GX2Rhc2hfaW5kZXggPSAwOwogICAgTUZfZGlzdF9sZWZ0ID0g
TUZfbGluZXNbTUZfbGluZV90eXBlXS5kYXNobGVuW01GX2Rhc2hfaW5kZXhdOwogICAgTUZfaXNf
c29saWQgPSBNRl9saW5lc1tNRl9saW5lX3R5cGVdLnNvbGlkOwp9CgoKc3RhdGljIHZvaWQgTUZf
bW92ZSh4LCB5KQp1bnNpZ25lZCBpbnQgeCwgeTsKewogICAgTUZfbGFzdF94ID0geDsKICAgIE1G
X2xhc3RfeSA9IHk7CiAgICBNRl9kYXNoX2luZGV4ID0gMDsKICAgIE1GX2Rpc3RfbGVmdCA9IE1G
X2xpbmVzW01GX2xpbmVfdHlwZV0uZGFzaGxlbltNRl9kYXNoX2luZGV4XTsKfQoKCnN0YXRpYyB2
b2lkIE1GX3ZlY3Rvcih4LCB5KQp1bnNpZ25lZCBpbnQgeCwgeTsKewogICAgaWYgKE1GX2lzX3Nv
bGlkKSB7CiAgICAgICAgaWYgKHggPT0gTUZfbGFzdF94ICYmIHkgPT0gTUZfbGFzdF95KQogICAg
ICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgImRyYXdkb3QgKCVkYSwlZGIpO1xuIiwgeCwgeSk7
CiAgICAgICAgZWxzZQogICAgICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgImRyYXcgKCVkYSwl
ZGIpLS0oJWRhLCVkYik7XG4iLAogICAgICAgICAgICAgICAgICAgIE1GX2xhc3RfeCwgTUZfbGFz
dF95LCB4LCB5KTsKICAgIH0gZWxzZSB7CiAgICAgICAgZG91YmxlIGRpc3RfdG9fZ28sIGRlbHRh
X3gsIGRlbHRhX3ksIGluY194LCBpbmNfeTsKICAgICAgICBkb3VibGUgbGFzdF94X2QsIGxhc3Rf
eV9kLCBuZXh0X3hfZCwgbmV4dF95X2Q7CiAgICAgICAgdW5zaWduZWQgaW50IG5leHRfeCwgbmV4
dF95OwoKICAgICAgICBpZiAoeCA9PSBNRl9sYXN0X3ggJiYgeSA9PSBNRl9sYXN0X3kpIHsKICAg
ICAgICAgICAgaWYgKCEoTUZfZGFzaF9pbmRleCAmIDEpKQogICAgICAgICAgICAgICAgZnByaW50
ZihncG91dGZpbGUsICJkcmF3ZG90ICglZGEsJWRiKTtcbiIsIHgsIHkpOwogICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgIGxhc3RfeF9kID0gTUZfbGFzdF94OwogICAgICAgICAgICBsYXN0X3lf
ZCA9IE1GX2xhc3RfeTsKICAgICAgICAgICAgZGVsdGFfeCA9IHggLSBsYXN0X3hfZDsKICAgICAg
ICAgICAgZGVsdGFfeSA9IHkgLSBsYXN0X3lfZDsKICAgICAgICAgICAgZGlzdF90b19nbyA9IHNx
cnQoZGVsdGFfeCAqIGRlbHRhX3ggKyBkZWx0YV95ICogZGVsdGFfeSk7CiAgICAgICAgICAgIGlu
Y194ID0gZGVsdGFfeCAvIGRpc3RfdG9fZ287CiAgICAgICAgICAgIGluY195ID0gZGVsdGFfeSAv
IGRpc3RfdG9fZ287CiAgICAgICAgICAgIHdoaWxlIChNRl9kaXN0X2xlZnQgPCBkaXN0X3RvX2dv
KSB7CiAgICAgICAgICAgICAgICBuZXh0X3hfZCA9IGxhc3RfeF9kICsgaW5jX3ggKiBNRl9kaXN0
X2xlZnQ7CiAgICAgICAgICAgICAgICBuZXh0X3lfZCA9IGxhc3RfeV9kICsgaW5jX3kgKiBNRl9k
aXN0X2xlZnQ7CiAgICAgICAgICAgICAgICBuZXh0X3ggPSBmbG9vcihuZXh0X3hfZCArIDAuNSk7
CiAgICAgICAgICAgICAgICBuZXh0X3kgPSBmbG9vcihuZXh0X3lfZCArIDAuNSk7CgogICAgICAg
ICAgICAgICAgaWYgKCEoTUZfZGFzaF9pbmRleCAmIDEpKQogICAgICAgICAgICAgICAgICAgIGZw
cmludGYoZ3BvdXRmaWxlLCAiZHJhdyAoJWRhLCVkYiktLSglZGEsJWRiKTtcbiIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBNRl9sYXN0X3gsIE1GX2xhc3RfeSwgbmV4dF94LCBuZXh0X3kp
OwogICAgICAgICAgICAgICAgTUZfbGFzdF94ID0gbmV4dF94OwogICAgICAgICAgICAgICAgTUZf
bGFzdF95ID0gbmV4dF95OwogICAgICAgICAgICAgICAgbGFzdF94X2QgPSBuZXh0X3hfZDsKICAg
ICAgICAgICAgICAgIGxhc3RfeV9kID0gbmV4dF95X2Q7CiAgICAgICAgICAgICAgICBkaXN0X3Rv
X2dvIC09IE1GX2Rpc3RfbGVmdDsKICAgICAgICAgICAgICAgIE1GX2Rhc2hfaW5kZXggPSAoTUZf
ZGFzaF9pbmRleCArIDEpICYgMzsKICAgICAgICAgICAgICAgIE1GX2Rpc3RfbGVmdCA9IE1GX2xp
bmVzW01GX2xpbmVfdHlwZV0uZGFzaGxlbltNRl9kYXNoX2luZGV4XTsKICAgICAgICAgICAgfQog
ICAgICAgICAgICBkZWx0YV94ID0geCAtIGxhc3RfeF9kOwogICAgICAgICAgICBkZWx0YV95ID0g
eSAtIGxhc3RfeV9kOwogICAgICAgICAgICBNRl9kaXN0X2xlZnQgLT0gc3FydChkZWx0YV94ICog
ZGVsdGFfeCArIGRlbHRhX3kgKiBkZWx0YV95KTsKICAgICAgICAgICAgaWYgKCEoTUZfZGFzaF9p
bmRleCAmIDEpKSB7CiAgICAgICAgICAgICAgICBpZiAoeCA9PSBNRl9sYXN0X3ggJiYgeSA9PSBN
Rl9sYXN0X3kpCiAgICAgICAgICAgICAgICAgICAgZnByaW50ZihncG91dGZpbGUsICJkcmF3ZG90
ICglZGEsJWRiKTtcbiIsIHgsIHkpOwogICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAg
ICAgICAgIGZwcmludGYoZ3BvdXRmaWxlLCAiZHJhdyAoJWRhLCVkYiktLSglZGEsJWRiKTtcbiIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNRl9sYXN0X3gsIE1GX2xhc3RfeSwgeCwgeSk7
CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBNRl9sYXN0X3ggPSB4OwogICAgTUZf
bGFzdF95ID0geTsKfQoKCnN0YXRpYyB2b2lkIE1GX2Fycm93KHN4LCBzeSwgZXgsIGV5LCBoZWFk
KQp1bnNpZ25lZCBpbnQgc3gsIHN5LCBleCwgZXk7ClRCT09MRUFOIGhlYWQ7CnsKICAgIGludCBk
ZWx0YV94LCBkZWx0YV95OwoKICAgIE1GX21vdmUoc3gsIHN5KTsKICAgIE1GX3ZlY3RvcihleCwg
ZXkpOwogICAgaWYgKGhlYWQpIHsKICAgICAgICBkZWx0YV94ID0gZXggLSBzeDsKICAgICAgICBk
ZWx0YV95ID0gZXkgLSBzeTsKICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgImZpbGwgYXJyb3do
ZWFkIHJvdGF0ZWQgYW5nbGUoJWQsJWQpIHNoaWZ0ZWQgKCVkYSwlZGIpO1xuIiwKICAgICAgICAg
ICAgICAgIGRlbHRhX3gsIGRlbHRhX3ksIGV4LCBleSk7CiAgICB9Cn0KCgpzdGF0aWMgdm9pZCBN
Rl9wdXRfdGV4dCh4LCB5LCBzdHIpCnVuc2lnbmVkIGludCB4LCB5OwpjaGFyICpzdHI7CnsKICAg
IGludCBpLCBqID0gMDsKCiAgICBmb3IgKGkgPSAwOyBpIDwgc3RybGVuKHN0cik7IGkrKykKICAg
ICAgICBpZiAoc3RyW2ldID09ICciJykKICAgICAgICAgICAgc3RyW2ldID0gJ1wnJzsKICAgIHN3
aXRjaCAoTUZfanVzdGlmeSkgewogICAgY2FzZSBMRUZUOgogICAgICAgIGogPSAxOwogICAgICAg
IGJyZWFrOwogICAgY2FzZSBDRU5UUkU6CiAgICAgICAgaiA9IDI7CiAgICAgICAgYnJlYWs7CiAg
ICBjYXNlIFJJR0hUOgogICAgICAgIGogPSAzOwogICAgICAgIGJyZWFrOwogICAgfQogICAgZnBy
aW50ZihncG91dGZpbGUsICJwdXRfdGV4dChcIiVzXCIsJWRhLCVkYiwlZCwlZCk7XG4iLAogICAg
ICAgICAgICBzdHIsIHgsIHksIE1GX2FuZywgaik7Cn0KCgpzdGF0aWMgdm9pZCBNRl9yZXNldCgp
CnsKICAgIGZwdXRzKCJlbmQuXG4iLCBncG91dGZpbGUpOwp9CiMgMzkxICJ0ZXJtLmgiIDIKCgoj
IDEgInRlcm0vbWV0YXBvc3QudHJtIiAxCiMgNTcgInRlcm0vbWV0YXBvc3QudHJtIgojIDEgInRl
cm0vZHJpdmVyLmgiIDEKIyA1OCAidGVybS9tZXRhcG9zdC50cm0iIDIKCgoKCgoKc3RhdGljIHZv
aWQgTVBfb3B0aW9ucyAodm9pZCk7CnN0YXRpYyB2b2lkIE1QX2luaXQgKHZvaWQpOwpzdGF0aWMg
dm9pZCBNUF9ncmFwaGljcyAodm9pZCk7CnN0YXRpYyB2b2lkIE1QX3RleHQgKHZvaWQpOwpzdGF0
aWMgdm9pZCBNUF9saW5ldHlwZSAoaW50IGxpbmV0eXBlKTsKc3RhdGljIHZvaWQgTVBfbW92ZSAo
dW5zaWduZWQgaW50IHgsIHVuc2lnbmVkIGludCB5KTsKc3RhdGljIHZvaWQgTVBfcG9pbnQgKHVu
c2lnbmVkIGludCB4LCB1bnNpZ25lZCBpbnQgeSwgaW50IG51bWJlcik7CnN0YXRpYyB2b2lkIE1Q
X3BvaW50c2l6ZSAoZG91YmxlIHNpemUpOwpzdGF0aWMgdm9pZCBNUF9saW5ld2lkdGggKGRvdWJs
ZSB3aWR0aCk7CnN0YXRpYyB2b2lkIE1QX3ZlY3RvciAodW5zaWduZWQgaW50IHV4LCB1bnNpZ25l
ZCBpbnQgdXkpOwpzdGF0aWMgdm9pZCBNUF9hcnJvdyAodW5zaWduZWQgaW50IHN4LCB1bnNpZ25l
ZCBpbnQgc3ksIHVuc2lnbmVkIGludCBleCwgdW5zaWduZWQgaW50IGV5LCBUQk9PTEVBTiBoZWFk
KTsKCgpzdGF0aWMgdm9pZCBNUF9wdXRfdGV4dCAodW5zaWduZWQgaW50IHgsIHVuc2lnbmVkIGlu
dCB5LCBjaGFyIHN0cltdKTsKc3RhdGljIGludCBNUF9qdXN0aWZ5X3RleHQgKGVudW0gSlVTVElG
WSBtb2RlKTsKc3RhdGljIGludCBNUF90ZXh0X2FuZ2xlIChpbnQgYW5nKTsKc3RhdGljIHZvaWQg
TVBfcmVzZXQgKHZvaWQpOwpzdGF0aWMgaW50IE1QX3NldF9mb250IChjaGFyICpmb250KTsKc3Rh
dGljIHZvaWQgTVBfYm94ZmlsbCAoaW50IHN0eWxlLCB1bnNpZ25lZCBpbnQgeDEsIHVuc2lnbmVk
IGludCB5MSwgdW5zaWduZWQgaW50IHdpZHRoLCB1bnNpZ25lZCBpbnQgaGVpZ2h0KTsKIyAxMDYg
InRlcm0vbWV0YXBvc3QudHJtIgpzdGF0aWMgZG91YmxlIE1QX3hzaXplID0gNS4wOwpzdGF0aWMg
ZG91YmxlIE1QX3lzaXplID0gMy4wOwoKCgoKc3RhdGljIGludCBNUF9wb3N4OwpzdGF0aWMgaW50
IE1QX3Bvc3k7CnN0YXRpYyBjaGFyIE1QX2ZvbnRuYW1lWzUwICsgMV07CnN0YXRpYyBkb3VibGUg
TVBfZm9udHNpemU7CnN0YXRpYyBkb3VibGUgTVBfdGV4dG1hZzsKZW51bSBKVVNUSUZZIE1QX2p1
c3RpZnkgPSBMRUZUOwpzdGF0aWMgaW50IE1QX2FuZyA9IDA7CnN0YXRpYyBpbnQgTVBfY2hhcl9j
b2RlID0gMDsKCgpzdGF0aWMgaW50IE1QX2xpbmVjb3VudCA9IDE7CiMgMTMxICJ0ZXJtL21ldGFw
b3N0LnRybSIKc3RhdGljIFRCT09MRUFOIE1QX2lubGluZSA9IDA7CgpzdGF0aWMgVEJPT0xFQU4g
TVBfY29sb3IgPSAwOwpzdGF0aWMgVEJPT0xFQU4gTVBfc29saWQgPSAwOwoKCnN0YXRpYyBUQk9P
TEVBTiBNUF9ub3RleCA9IDA7CgoKc3RhdGljIFRCT09MRUFOIE1QX2ZvbnRjaGFuZ2VkID0gMDsK
CgpzdGF0aWMgaW50IE1QX29sZGxpbmUgPSAtMjsKCgpzdGF0aWMgZG91YmxlIE1QX29sZHB0c2l6
ZSA9IDEuMDsKc3RhdGljIGRvdWJsZSBNUF9vbGRwZW4gPSAxLjA7CgoKc3RhdGljIHZvaWQgTVBf
ZW5kbGluZSAodm9pZCk7CgoKCgpzdGF0aWMgdm9pZApNUF9vcHRpb25zKCkKewogICAgTVBfY29s
b3IgPSAwOwogICAgTVBfc29saWQgPSAwOwogICAgTVBfbm90ZXggPSAwOwogICAgTVBfZm9udHNp
emUgPSAxMC4wOwogICAgTVBfdGV4dG1hZyA9IDEuMDsKICAgIChfX2V4dGVuc2lvbl9fIChfX2J1
aWx0aW5fY29uc3RhbnRfcCAoImNtcjEwIikgPyAoKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCJj
bXIxMCIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKCJjbXIxMCIpID09IDEpICYmIHN0
cmxlbiAoImNtcjEwIikgKyAxIDw9IDggPyBfX3N0cmNweV9zbWFsbCAoTVBfZm9udG5hbWUsIF9f
ZXh0ZW5zaW9uX18gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KCJjbXIxMCIpKVswICsgMV0gPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikgKCJjbXIxMCIpKVswXSksIF9fZXh0ZW5zaW9uX18gKCgoX19jb25zdCB1bnNp
Z25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJjbXIxMCIpKVs0ICsgMV0gPDwgOCB8ICgo
X19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJjbXIxMCIpKVs0XSks
IF9fZXh0ZW5zaW9uX18gKCgoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh
ciAqKSAoImNtcjEwIikpWzAgKyAzXSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikg
KF9fY29uc3QgY2hhciAqKSAoImNtcjEwIikpWzAgKyAyXSkgPDwgOCB8ICgoX19jb25zdCB1bnNp
Z25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJjbXIxMCIpKVswICsgMV0pIDw8IDggfCAo
KF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiY21yMTAiKSlbMF0p
LCBfX2V4dGVuc2lvbl9fICgoKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNo
YXIgKikgKCJjbXIxMCIpKVs0ICsgM10gPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikgKCJjbXIxMCIpKVs0ICsgMl0pIDw8IDggfCAoKF9fY29uc3QgdW5z
aWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiY21yMTAiKSlbNCArIDFdKSA8PCA4IHwg
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoImNtcjEwIikpWzRd
KSwgc3RybGVuICgiY21yMTAiKSArIDEpIDogKGNoYXIgKikgbWVtY3B5IChNUF9mb250bmFtZSwg
ImNtcjEwIiwgc3RybGVuICgiY21yMTAiKSArIDEpKSA6IHN0cmNweSAoTVBfZm9udG5hbWUsICJj
bXIxMCIpKSk7CiAgICAoX19leHRlbnNpb25fXyAoX19idWlsdGluX2NvbnN0YW50X3AgKCIiKSA/
ICgoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoIiIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lk
ICopKCIiKSA9PSAxKSAmJiBzdHJsZW4gKCIiKSArIDEgPD0gOCA/IF9fc3RyY3B5X3NtYWxsIChk
ZWZhdWx0X2ZvbnQsIF9fZXh0ZW5zaW9uX18gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf
X2NvbnN0IGNoYXIgKikgKCIiKSlbMCArIDFdIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hh
ciAqKSAoX19jb25zdCBjaGFyICopICgiIikpWzBdKSwgX19leHRlbnNpb25fXyAoKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIiIpKVs0ICsgMV0gPDwgOCB8ICgo
X19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCIiKSlbNF0pLCBfX2V4
dGVuc2lvbl9fICgoKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KCIiKSlbMCArIDNdIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBj
aGFyICopICgiIikpWzAgKyAyXSkgPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf
X2NvbnN0IGNoYXIgKikgKCIiKSlbMCArIDFdKSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNo
YXIgKikgKF9fY29uc3QgY2hhciAqKSAoIiIpKVswXSksIF9fZXh0ZW5zaW9uX18gKCgoKChfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIiIpKVs0ICsgM10gPDwgOCB8
ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCIiKSlbNCArIDJd
KSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIiIp
KVs0ICsgMV0pIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFy
ICopICgiIikpWzRdKSwgc3RybGVuICgiIikgKyAxKSA6IChjaGFyICopIG1lbWNweSAoZGVmYXVs
dF9mb250LCAiIiwgc3RybGVuICgiIikgKyAxKSkgOiBzdHJjcHkgKGRlZmF1bHRfZm9udCwgIiIp
KSk7CiAgICB3aGlsZSAoIShjX3Rva2VuID49IG51bV90b2tlbnMgfHwgZXF1YWxzKGNfdG9rZW4s
IjsiKSkpIHsKICAgICAgICBpZiAoYWxtb3N0X2VxdWFscyhjX3Rva2VuLCAibSRvbm9jaHJvbWUi
KSkgewogICAgICAgICAgICBNUF9jb2xvciA9IDA7CiAgICAgICAgICAgIGNfdG9rZW4rKzsKICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgfQogICAgICAgIGlmIChhbG1vc3RfZXF1YWxzKGNf
dG9rZW4sICJjJG9sb3IiKSB8fCBhbG1vc3RfZXF1YWxzKGNfdG9rZW4sICJjJG9sb3VyIikpIHsK
ICAgICAgICAgICAgTVBfY29sb3IgPSAxOwogICAgICAgICAgICBjX3Rva2VuKys7CiAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgIH0KICAgICAgICBpZiAoYWxtb3N0X2VxdWFscyhjX3Rva2Vu
LCAicyRvbGlkIikpIHsKICAgICAgICAgICAgTVBfc29saWQgPSAxOwogICAgICAgICAgICBjX3Rv
a2VuKys7CiAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgIH0KICAgICAgICBpZiAoYWxtb3N0
X2VxdWFscyhjX3Rva2VuLCAiZGEkc2hlZCIpKSB7CiAgICAgICAgICAgIE1QX3NvbGlkID0gMDsK
ICAgICAgICAgICAgY190b2tlbisrOwogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CiAg
ICAgICAgaWYgKGFsbW9zdF9lcXVhbHMoY190b2tlbiwgIm4kb3RleCIpKSB7CiAgICAgICAgICAg
IE1QX25vdGV4ID0gMTsKICAgICAgICAgICAgKF9fZXh0ZW5zaW9uX18gKF9fYnVpbHRpbl9jb25z
dGFudF9wICgicGNycjhyIikgPyAoKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCJwY3JyOHIiKSAr
IDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgicGNycjhyIikgPT0gMSkgJiYgc3RybGVuICgi
cGNycjhyIikgKyAxIDw9IDggPyBfX3N0cmNweV9zbWFsbCAoTVBfZm9udG5hbWUsIF9fZXh0ZW5z
aW9uX18gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJwY3Jy
OHIiKSlbMCArIDFdIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBj
aGFyICopICgicGNycjhyIikpWzBdKSwgX19leHRlbnNpb25fXyAoKChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoInBjcnI4ciIpKVs0ICsgMV0gPDwgOCB8ICgoX19j
b25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJwY3JyOHIiKSlbNF0pLCBf
X2V4dGVuc2lvbl9fICgoKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIg
KikgKCJwY3JyOHIiKSlbMCArIDNdIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAo
X19jb25zdCBjaGFyICopICgicGNycjhyIikpWzAgKyAyXSkgPDwgOCB8ICgoX19jb25zdCB1bnNp
Z25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJwY3JyOHIiKSlbMCArIDFdKSA8PCA4IHwg
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoInBjcnI4ciIpKVsw
XSksIF9fZXh0ZW5zaW9uX18gKCgoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg
Y2hhciAqKSAoInBjcnI4ciIpKVs0ICsgM10gPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFy
ICopIChfX2NvbnN0IGNoYXIgKikgKCJwY3JyOHIiKSlbNCArIDJdKSA8PCA4IHwgKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoInBjcnI4ciIpKVs0ICsgMV0pIDw8
IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgicGNycjhy
IikpWzRdKSwgc3RybGVuICgicGNycjhyIikgKyAxKSA6IChjaGFyICopIG1lbWNweSAoTVBfZm9u
dG5hbWUsICJwY3JyOHIiLCBzdHJsZW4gKCJwY3JyOHIiKSArIDEpKSA6IHN0cmNweSAoTVBfZm9u
dG5hbWUsICJwY3JyOHIiKSkpOwogICAgICAgICAgICBjX3Rva2VuKys7CiAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgIH0KICAgICAgICBpZiAoYWxtb3N0X2VxdWFscyhjX3Rva2VuLCAidCRl
eCIpKSB7CiAgICAgICAgICAgIE1QX25vdGV4ID0gMDsKICAgICAgICAgICAgY190b2tlbisrOwog
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CiAgICAgICAgaWYgKGFsbW9zdF9lcXVhbHMo
Y190b2tlbiwgImRlJGZhdWx0IikpIHsKICAgICAgICAgICAgY190b2tlbisrOwogICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICB9CiAgICAgICAgaWYgKGFsbW9zdF9lcXVhbHMoY190b2tlbiwg
Im0kYWduaWZpY2F0aW9uIikpIHsKICAgICAgICAgICAgY190b2tlbisrOwogICAgICAgICAgICBp
ZiAoIShjX3Rva2VuID49IG51bV90b2tlbnMgfHwgZXF1YWxzKGNfdG9rZW4sIjsiKSkpIHsKICAg
ICAgICAgICAgICAgIHN0cnVjdCB2YWx1ZSBhOwogICAgICAgICAgICAgICAgTVBfdGV4dG1hZyA9
IChkb3VibGUpIHJlYWwoY29uc3RfZXhwcmVzcygmYSkpOwogICAgICAgICAgICB9CiAgICAgICAg
ICAgIGNfdG9rZW4rKzsKICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgfQogICAgICAgIGJy
ZWFrOwogICAgfQogICAgaWYgKCEoY190b2tlbiA+PSBudW1fdG9rZW5zIHx8IGVxdWFscyhjX3Rv
a2VuLCI7IikpICYmIGlzc3RyaW5nKGNfdG9rZW4pKSB7CiAgICAgICAgcXVvdGVfc3RyKE1QX2Zv
bnRuYW1lLCBjX3Rva2VuLCA1MCk7CiAgICAgICAgY190b2tlbisrOwogICAgfQogICAgaWYgKCEo
Y190b2tlbiA+PSBudW1fdG9rZW5zIHx8IGVxdWFscyhjX3Rva2VuLCI7IikpKSB7CiAgICAgICAg
c3RydWN0IHZhbHVlIGE7CiAgICAgICAgTVBfZm9udHNpemUgPSAoZG91YmxlKSByZWFsKGNvbnN0
X2V4cHJlc3MoJmEpKTsKICAgICAgICBjX3Rva2VuKys7CiAgICB9CgogICAgaWYgKE1QX2ZvbnRz
aXplIDwgNS4wKQogICAgICAgIE1QX2ZvbnRzaXplID0gNS4wOwogICAgaWYgKE1QX2ZvbnRzaXpl
ID4gOTkuOTkpCiAgICAgICAgTVBfZm9udHNpemUgPSA5OS45OTsKCiAgICB0ZXJtLT52X2NoYXIg
PSAodW5zaWduZWQgaW50KSAoKDMwMCkgKiBNUF9mb250c2l6ZSAqIE1QX3RleHRtYWcgKiAxMSAv
IDcyMCk7CiAgICBpZiAoTVBfbm90ZXgpIHsKICAgICAgICB0ZXJtLT5oX2NoYXIgPSAodW5zaWdu
ZWQgaW50KSAoKDMwMCkgKiBNUF9mb250c2l6ZSAqIE1QX3RleHRtYWcgKiA2LjAgLyA3MjAgKyAw
LjUpOwogICAgfSBlbHNlIHsKICAgICAgICB0ZXJtLT5oX2NoYXIgPSAodW5zaWduZWQgaW50KSAo
KDMwMCkgKiBNUF9mb250c2l6ZSAqIE1QX3RleHRtYWcgKiA1LjMgLyA3MjAgKyAwLjUpOwogICAg
fQogICAgc3ByaW50Zih0ZXJtX29wdGlvbnMsICIlcyVzJXMlcyU2LjNmIFwiJXNcIiAlNS4yZiIs
CiAgICAgICAgICAgIE1QX2NvbG9yID8gImNvbG9yICIgOiAiIiwgTVBfc29saWQgPyAic29saWQg
IiA6ICIiLAogICAgICAgICAgICBNUF9ub3RleCA/ICJub3RleCAiIDogIiIsICJtYWcgIiwKICAg
ICAgICAgICAgTVBfdGV4dG1hZywgTVBfZm9udG5hbWUsIE1QX2ZvbnRzaXplKTsKfQoKc3RhdGlj
IHZvaWQKTVBfaW5pdCgpCnsKICAgIHRpbWVfdCBub3c7CiAgICB0aW1lKCZub3cpOwogICAgTVBf
cG9zeCA9IE1QX3Bvc3kgPSAwOwogICAgZnByaW50ZihncG91dGZpbGUsICIlJUdOVVBMT1QgTWV0
YXBvc3Qgb3V0cHV0OiAlc1xuIiwgYXNjdGltZShsb2NhbHRpbWUoJm5vdykpKTsKICAgIGZwdXRz
KCJcbmRlZmF1bHRtcHQ6PW1wdDo9NDtcbnRoOj0uNjtcblxuZGVmIHNjYWxlcGVuIGV4cHIgbiA9
IHBpY2t1cCBwZW5jaXJjbGUgc2NhbGVkIChuKnRoKSBlbmRkZWY7XG5kZWYgcHRzaXplIGV4cHIg
biA9IG1wdDo9bipkZWZhdWx0bXB0IGVuZGRlZjtcbiIsCgoKCgoKICAgICAgICAgIGdwb3V0Zmls
ZSk7CgogICAgZnByaW50ZihncG91dGZpbGUsICJcbnRleHRtYWc6PSU2LjNmO1xuIiwgTVBfdGV4
dG1hZyk7CgogICAgZnB1dHMoInZhcmRlZiBtYWtlcGljKGV4cHIgc3RyKSA9XG4gIGlmIHBpY3R1
cmUgc3RyIDogc3RyIHNjYWxlZCB0ZXh0bWFnXG4gICUgb3RoZXJ3aXNlIGEgc3RyaW5nXG4gIGVs
c2U6IHN0ciBpbmZvbnQgZGVmYXVsdGZvbnQgc2NhbGVkIChkZWZhdWx0c2NhbGUqdGV4dG1hZylc
biAgZmlcbmVuZGRlZjtcblxuZGVmCWluZm9udHNpemUoZXhwciBzdHIsIHNpemUpID1cbiAgaW5m
b250IHN0ciBzY2FsZWQgKHNpemUgLwlmb250c2l6ZSBzdHIpXG5lbmRkZWY7XG4iLAojIDI2NyAi
dGVybS9tZXRhcG9zdC50cm0iCiAgICAgICAgICBncG91dGZpbGUpOwoKICAgIGlmIChNUF9ub3Rl
eCkgewogICAgICAgIGZwcmludGYoZ3BvdXRmaWxlLCAiXG5kZWZhdWx0Zm9udDo9IFwiJXNcIjtc
bmRlZmF1bHRzY2FsZSA6PSAlNi4zZi9mb250c2l6ZSBkZWZhdWx0Zm9udDtcbiIsCgoKICAgICAg
ICAgICAgICAgIE1QX2ZvbnRuYW1lLCBNUF9mb250c2l6ZSk7CiAgICB9IGVsc2UgewogICAgICAg
IGZwdXRzKCJcbiVmb250IGNoYW5nZXNcbnZlcmJhdGltdGV4XG4gIFxcZGVmXFxzZXRmb250IzEj
MnslLlxuICAgIFxcZm9udFxcZ3Bmb250PSMxIGF0ICMycHRcbiAgICBcXGdwZm9udH1cbiIsCgoK
CgoKICAgICAgICAgICAgICBncG91dGZpbGUpOwoKICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwg
Ilxcc2V0Zm9udHslc317JTUuMmZ9XG5ldGV4XG4iLAogICAgICAgICAgICAgICAgTVBfZm9udG5h
bWUsIE1QX2ZvbnRzaXplKTsKICAgIH0KICAgIGZwdXRzKCJcbmNvbG9yIGN1cnJlbnRjb2xvcjsg
Y3VycmVudGNvbG9yPWJsYWNrO1xuYm9vbGVhbiBjb2xvcmxpbmVzLGRhc2hlZGxpbmVzO1xuIiwK
CgogICAgICAgICAgZ3BvdXRmaWxlKTsKICAgIGlmIChNUF9jb2xvcikgewogICAgICAgIGZwdXRz
KCJjb2xvcmxpbmVzOj10cnVlO1xuIiwgZ3BvdXRmaWxlKTsKICAgIH0gZWxzZSB7CiAgICAgICAg
ZnB1dHMoImNvbG9ybGluZXM6PWZhbHNlO1xuIiwgZ3BvdXRmaWxlKTsKICAgIH0KICAgIGlmIChN
UF9zb2xpZCkgewogICAgICAgIGZwdXRzKCJkYXNoZWRsaW5lczo9ZmFsc2U7XG4iLCBncG91dGZp
bGUpOwogICAgfSBlbHNlIHsKICAgICAgICBmcHV0cygiZGFzaGVkbGluZXM6PXRydWU7XG4iLCBn
cG91dGZpbGUpOwogICAgfQogICAgZnB1dHMoIlxuZGVmIF93YyA9IHdpdGhwZW4gY3VycmVudHBl
biB3aXRoY29sb3IgY3VycmVudGNvbG9yIGVuZGRlZjtcbmRlZiBfYWMgPSBhZGR0byBjdXJyZW50
cGljdHVyZSBlbmRkZWY7XG5kZWYgX3NtcyA9IHNjYWxlZCBtcHQgc2hpZnRlZCBlbmRkZWY7XG4l
IGRyYXdpbmcgcG9pbnQtdHlwZXNcbmRlZiBncGRyYXcgKGV4cHIgbiwgeCwgeSkgPVxuICBpZiBu
PDA6IF9hYyBjb250b3VyIGZ1bGxjaXJjbGUgX3NtcyAoeCx5KVxuICBlbHNlaWYgKG49MSkgb3Ig
KG49Myk6XG4gICAgX2FjIGRvdWJsZXBhdGggcHRwYXRoW25dIF9zbXMgKHgseSkgX3djO1xuICAg
IF9hYyBkb3VibGVwYXRoIHB0cGF0aFtuXSByb3RhdGVkIDkwIF9zbXMgKHgseSkgX3djXG4gIGVs
c2VpZiBuPDY6IF9hYyBkb3VibGVwYXRoIHB0cGF0aFtuXSBfc21zICh4LHkpIF93Y1xuICBlbHNl
OiBfYWMgY29udG91ciBwdHBhdGhbbl0gX3NtcyAoeCx5KSBfd2NcbiAgZmlcbmVuZGRlZjtcblxu
JSB0aGUgcG9pbnQgc2hhcGVzXG5wYXRoIHB0cGF0aFtdO1xuJWRpYW1vbmRcbnB0cGF0aDAgPSBw
dHBhdGg2ID0gKC0xLzIsMCktLSgwLC0xLzIpLS0oMS8yLDApLS0oMCwxLzIpLS1jeWNsZTtcbiUg
cGx1cyBzaWduXG5wdHBhdGgxID0gKC0xLzIsMCktLSgxLzIsMCk7XG4lIHNxdWFyZVxucHRwYXRo
MiA9IHB0cGF0aDcgPSAoLTEvMiwtMS8yKS0tKDEvMiwtMS8yKS0tKDEvMiwxLzIpLS0oLTEvMiwx
LzIpLS1jeWNsZTtcbiUgY3Jvc3NcbnB0cGF0aDMgOj0gKC0xLzIsLTEvMiktLSgxLzIsMS8yKTtc
biUgY2lyY2xlOlxucHRwYXRoNCA9IHB0cGF0aDg6PSBmdWxsY2lyY2xlO1xuJSB0cmlhbmdsZVxu
cHRwYXRoNSA9IHB0cGF0aDkgOj0gKDAsMS8yKS0tKC0xLzIsLTEvMiktLSgxLzIsLTEvMiktLWN5
Y2xlO1xuXG5kZWYgbGluZXR5cGUgZXhwciBuID1cbiAgY3VycmVudGNvbG9yOj0gaWYgY29sb3Js
aW5lcyA6IGNvbFtuXSBlbHNlOiBibGFjayBmaTtcbiAgaWYgbiA9IC0xIDpcbiAgICAgIGRyYXdv
cHRpb25zKHdpdGhjb2xvciBjdXJyZW50Y29sb3Igd2l0aHBlbiAoY3VycmVudHBlbiBzY2FsZWQg
LjUpKTtcbiAgZWxzZWlmIG4gPCAxIDpcbiAgICBkcmF3b3B0aW9ucyhfd2MpO1xuICBlbHNlIDpc
biAgICBkcmF3b3B0aW9ucyggaWYgZGFzaGVkbGluZXM6IGRhc2hlZCBsdFtuXSBmaSBfd2MpO1xu
ICBmaVxuZW5kZGVmO1xuXG4lIGRhc2ggcGF0dGVybnNcbnBpY3R1cmUgbHRbXTtcbmx0MT1kYXNo
cGF0dGVybihvbiAyIG9mZiAyKTsgJSBkYXNoZXNcbmx0Mj1kYXNocGF0dGVybihvbiAyIG9mZiAy
IG9uIDAuMiBvZmYgMik7ICVkYXNoLWRvdFxubHQzPWx0MSBzY2FsZWQgMS40MTQ7XG5sdDQ9bHQy
IHNjYWxlZCAxLjQxNDtcbmx0NT1sdDEgc2NhbGVkIDI7XG5sdDY6PWx0MiBzY2FsZWQgMjtcbmx0
Nz1kYXNocGF0dGVybihvbiAwLjIgb2ZmIDIpOyAlZG90c1xuXG5jb2xvciBjb2xbXSxjeWFuLCBt
YWdlbnRhLCB5ZWxsb3c7XG5jeWFuPWJsdWUrZ3JlZW47IG1hZ2VudGE9cmVkK2JsdWU7eWVsbG93
PWdyZWVuK3JlZDtcbmNvbFstMl06PWNvbFstMV06PWNvbDA6PWJsYWNrO1xuY29sMTo9cmVkO1xu
Y29sMjo9KC4yLC4yLDEpOyAlYmx1ZVxuY29sMzo9KDEsLjY2LDApOyAlb3JhbmdlXG5jb2w0Oj0u
ODUqZ3JlZW47XG5jb2w1Oj0uOSptYWdlbnRhO1xuY29sNjo9MC44NSpjeWFuO1xuY29sNzo9Ljg1
KnllbGxvdztcblxuJXBsYWNpbmcgdGV4dFxucGljdHVyZSBHUHRleHQ7XG5kZWYgcHV0X3RleHQo
ZXhwciBwaWMsIHgsIHksIHIsIGopID1cbiAgR1B0ZXh0Oj1tYWtlcGljKHBpYyk7XG4gIEdQdGV4
dDo9R1B0ZXh0IHNoaWZ0ZWRcbiAgICBpZiBqID0gMTogKC0odWxjb3JuZXIgR1B0ZXh0ICsgbGxj
b3JuZXIgR1B0ZXh0KS8yKVxuICAgIGVsc2VpZiBqID0gMjogKC1jZW50ZXIgR1B0ZXh0KVxuICAg
IGVsc2U6ICgtKHVyY29ybmVyIEdQdGV4dCArIGxyY29ybmVyIEdQdGV4dCkvMilcbiAgICBmaVxu
ICAgIHJvdGF0ZWQgaWYgciA+IDA6IDkwIGVsc2U6IDAgZmk7XG4gIGRyYXcgR1B0ZXh0IHNoaWZ0
ZWQgKHgseSlcbmVuZGRlZjtcbiIsCiMgMzc0ICJ0ZXJtL21ldGFwb3N0LnRybSIKICAgICAgICAg
IGdwb3V0ZmlsZSk7Cn0KCnN0YXRpYyB2b2lkCk1QX2dyYXBoaWNzKCkKewoKICAgIE1QX29sZGxp
bmUgPSAtMjsKICAgIE1QX29sZHBlbiA9IDEuMDsKICAgIE1QX29sZHB0c2l6ZSA9IHBvaW50c2l6
ZTsKICAgIGZwcmludGYoZ3BvdXRmaWxlLCAiXG5iZWdpbmZpZyglZCk7XG53Oj0lZ2luO2g6PSVn
aW47XG4iLAogICAgICAgICAgICBNUF9jaGFyX2NvZGUsIE1QX3hzaXplLCBNUF95c2l6ZSk7CiAg
ICBmcHJpbnRmKGdwb3V0ZmlsZSwgImE6PXcvJWQ7Yjo9aC8lZDtcbiIsIHRlcm0tPnhtYXgsIHRl
cm0tPnltYXgpOwogICAgZnByaW50ZihncG91dGZpbGUsICJzY2FsZXBlbiAxOyBwdHNpemUgJWc7
bGluZXR5cGUgLTI7XG4iLCBwb2ludHNpemUpOwogICAgTVBfY2hhcl9jb2RlKys7Cn0KCnN0YXRp
YyB2b2lkCk1QX3RleHQoKQp7CiAgICBpZiAoTVBfaW5saW5lKQogICAgICAgIE1QX2VuZGxpbmUo
KTsKICAgIGZwdXRzKCJlbmRmaWc7XG4iLCBncG91dGZpbGUpOwp9CgpzdGF0aWMgdm9pZApNUF9s
aW5ldHlwZShsdCkKaW50IGx0Owp7CiAgICBpbnQgbGluZXR5cGUgPSBsdDsKICAgIGlmIChsaW5l
dHlwZSA+PSA4KQogICAgICAgIGxpbmV0eXBlICU9IDg7CiAgICBpZiAoTVBfaW5saW5lKQogICAg
ICAgIE1QX2VuZGxpbmUoKTsKICAgIGlmIChNUF9vbGRsaW5lICE9IGxpbmV0eXBlKSB7CiAgICAg
ICAgZnByaW50ZihncG91dGZpbGUsICJsaW5ldHlwZSAlZDtcbiIsIGxpbmV0eXBlKTsKICAgICAg
ICBNUF9vbGRsaW5lID0gbGluZXR5cGU7CiAgICB9Cn0KCnN0YXRpYyB2b2lkCk1QX21vdmUoeCwg
eSkKdW5zaWduZWQgaW50IHg7CnVuc2lnbmVkIGludCB5Owp7CiAgICBpZiAoKHggIT0gTVBfcG9z
eCkgfHwgKHkgIT0gTVBfcG9zeSkpIHsKICAgICAgICBpZiAoTVBfaW5saW5lKQogICAgICAgICAg
ICBNUF9lbmRsaW5lKCk7CiAgICAgICAgTVBfcG9zeCA9IHg7CiAgICAgICAgTVBfcG9zeSA9IHk7
CiAgICB9Cn0KCnN0YXRpYyB2b2lkCk1QX3BvaW50KHgsIHksIHB0KQp1bnNpZ25lZCBpbnQgeDsK
dW5zaWduZWQgaW50IHk7CmludCBwdDsKewogICAgaW50IHBvaW50dHlwZSA9IHB0OwogICAgaWYg
KE1QX2lubGluZSkKICAgICAgICBNUF9lbmRsaW5lKCk7CgoKCgogICAgaWYgKHBvaW50dHlwZSA+
PSAxMCkKICAgICAgICBwb2ludHR5cGUgJT0gMTA7CiAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgImdw
ZHJhdyglZCwlZGEsJWRiKTtcbiIsIHBvaW50dHlwZSwgeCwgeSk7Cn0KCnN0YXRpYyB2b2lkCk1Q
X3BvaW50c2l6ZShwcykKZG91YmxlIHBzOwp7CiAgICBpZiAoTVBfb2xkcHRzaXplICE9IHBzKSB7
CiAgICAgICAgaWYgKE1QX2lubGluZSkKICAgICAgICAgICAgTVBfZW5kbGluZSgpOwogICAgICAg
IGZwcmludGYoZ3BvdXRmaWxlLCAicHRzaXplICVnO1xuIiwgcHMpOwogICAgICAgIE1QX29sZHB0
c2l6ZSA9IHBzOwogICAgfQp9CgoKc3RhdGljIHZvaWQKTVBfbGluZXdpZHRoKGx3KQpkb3VibGUg
bHc7CnsKICAgIGlmIChNUF9vbGRwZW4gIT0gbHcpIHsKICAgICAgICBpZiAoTVBfaW5saW5lKQog
ICAgICAgICAgICBNUF9lbmRsaW5lKCk7CiAgICAgICAgZnByaW50ZihncG91dGZpbGUsICJzY2Fs
ZXBlbiAlZztcbiIsIGx3KTsKICAgICAgICBNUF9vbGRwZW4gPSBsdzsKICAgIH0KfQoKCnN0YXRp
YyB2b2lkCk1QX3ZlY3Rvcih1eCwgdXkpCnVuc2lnbmVkIGludCB1eDsKdW5zaWduZWQgaW50IHV5
Owp7CiAgICBpZiAoKHV4ID09IE1QX3Bvc3gpICYmICh1eSA9PSBNUF9wb3N5KSkKICAgICAgICBy
ZXR1cm47CgogICAgaWYgKE1QX2lubGluZSkgewogICAgICAgIGlmIChNUF9saW5lY291bnQrKyA+
PSA1KSB7CiAgICAgICAgICAgIGZwdXRzKCJcbiIsIGdwb3V0ZmlsZSk7CiAgICAgICAgICAgIE1Q
X2xpbmVjb3VudCA9IDE7CiAgICAgICAgfQogICAgfSBlbHNlIHsKICAgICAgICBNUF9pbmxpbmUg
PSAxOwogICAgICAgIGZwcmludGYoZ3BvdXRmaWxlLCAiZHJhdyAoJWRhLCVkYikiLCBNUF9wb3N4
LCBNUF9wb3N5KTsKICAgICAgICBNUF9saW5lY291bnQgPSAyOwogICAgfQogICAgTVBfcG9zeCA9
IHV4OwogICAgTVBfcG9zeSA9IHV5OwogICAgZnByaW50ZihncG91dGZpbGUsICItLSglZGEsJWRi
KSIsIE1QX3Bvc3gsIE1QX3Bvc3kpOwp9CgpzdGF0aWMgdm9pZApNUF9lbmRsaW5lKCkKewogICAg
TVBfaW5saW5lID0gMDsKICAgIGZwcmludGYoZ3BvdXRmaWxlLCAiO1xuIik7Cn0KCnN0YXRpYyB2
b2lkCk1QX2Fycm93KHN4LCBzeSwgZXgsIGV5LCBoZWFkKQp1bnNpZ25lZCBpbnQgc3g7CnVuc2ln
bmVkIGludCBzeTsKdW5zaWduZWQgaW50IGV4Owp1bnNpZ25lZCBpbnQgZXk7ClRCT09MRUFOIGhl
YWQ7CnsKICAgIE1QX21vdmUoc3gsIHN5KTsKICAgIGlmIChoZWFkKSB7CiAgICAgICAgZnByaW50
ZihncG91dGZpbGUsICJkcmF3YXJyb3cgKCVkYSwlZGIpLS0oJWRhLCVkYik7XG4iLAogICAgICAg
ICAgICAgICAgc3gsIHN5LCBleCwgZXkpOwogICAgfSBlbHNlIGlmICgoc3ggIT0gZXgpIHx8IChz
eSAhPSBleSkpIHsKICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgImRyYXcgKCVkYSwlZGIpLS0o
JWRhLCVkYik7XG4iLAogICAgICAgICAgICAgICAgc3gsIHN5LCBleCwgZXkpOwogICAgfQogICAg
TVBfcG9zeCA9IGV4OwogICAgTVBfcG9zeSA9IGV5OwoKfQoKc3RhdGljIHZvaWQKTVBfcHV0X3Rl
eHQoeCwgeSwgc3RyKQp1bnNpZ25lZCBpbnQgeCwgeTsKY2hhciBzdHJbXTsKewogICAgaW50IGks
IGogPSAwOwogICAgY2hhciAqdGV4dDsKCgogICAgaWYgKCFzdHIgfHwgISpzdHIpCiAgICAgICAg
cmV0dXJuOwoKCiAgICB0ZXh0ID0gZ3BfYWxsb2Moc3RybGVuKHN0cikrMSwgInRlbXAgc3RyaW5n
Iik7CiAgICAoX19leHRlbnNpb25fXyAoX19idWlsdGluX2NvbnN0YW50X3AgKHN0cikgPyAoKChz
aXplX3QpKGNvbnN0IHZvaWQgKikoKHN0cikgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKiko
c3RyKSA9PSAxKSAmJiBzdHJsZW4gKHN0cikgKyAxIDw9IDggPyBfX3N0cmNweV9zbWFsbCAodGV4
dCwgX19leHRlbnNpb25fXyAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh
ciAqKSAoc3RyKSlbMCArIDFdIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19j
b25zdCBjaGFyICopIChzdHIpKVswXSksIF9fZXh0ZW5zaW9uX18gKCgoX19jb25zdCB1bnNpZ25l
ZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHN0cikpWzQgKyAxXSA8PCA4IHwgKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoc3RyKSlbNF0pLCBfX2V4dGVuc2lv
bl9fICgoKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHN0cikp
WzAgKyAzXSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAq
KSAoc3RyKSlbMCArIDJdKSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29u
c3QgY2hhciAqKSAoc3RyKSlbMCArIDFdKSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIg
KikgKF9fY29uc3QgY2hhciAqKSAoc3RyKSlbMF0pLCBfX2V4dGVuc2lvbl9fICgoKCgoX19jb25z
dCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHN0cikpWzQgKyAzXSA8PCA4IHwg
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoc3RyKSlbNCArIDJd
KSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoc3Ry
KSlbNCArIDFdKSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh
ciAqKSAoc3RyKSlbNF0pLCBzdHJsZW4gKHN0cikgKyAxKSA6IChjaGFyICopIG1lbWNweSAodGV4
dCwgc3RyLCBzdHJsZW4gKHN0cikgKyAxKSkgOiBzdHJjcHkgKHRleHQsIHN0cikpKTsKCiAgICBp
ZiAoTVBfaW5saW5lKQogICAgICAgIE1QX2VuZGxpbmUoKTsKCgogICAgc3dpdGNoIChNUF9qdXN0
aWZ5KSB7CiAgICBjYXNlIExFRlQ6CiAgICAgICAgaiA9IDE7CiAgICAgICAgYnJlYWs7CiAgICBj
YXNlIENFTlRSRToKICAgICAgICBqID0gMjsKICAgICAgICBicmVhazsKICAgIGNhc2UgUklHSFQ6
CiAgICAgICAgaiA9IDM7CiAgICAgICAgYnJlYWs7CiAgICB9CiAgICBpZiAoTVBfbm90ZXgpIHsK
ICAgICAgICBmb3IgKGkgPSAwOyBpIDwgc3RybGVuKHRleHQpOyBpKyspCiAgICAgICAgICAgIGlm
ICh0ZXh0W2ldID09ICciJykKICAgICAgICAgICAgICAgIHRleHRbaV0gPSAnXCcnOwogICAgICAg
IGlmIChNUF9mb250Y2hhbmdlZCkgewogICAgICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwgInB1
dF90ZXh0KFwiJXNcIiBpbmZvbnRzaXplKFwiJXNcIiwlNS4yZiksICVkYSwgJWRiLCAlZCwgJWQp
O1xuIiwKCiAgICAgICAgICAgICAgICAgICAgdGV4dCwgTVBfZm9udG5hbWUsIE1QX2ZvbnRzaXpl
LCB4LCB5LCBNUF9hbmcsIGopOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGZwcmludGYo
Z3BvdXRmaWxlLCAicHV0X3RleHQoXCIlc1wiLCAlZGEsICVkYiwgJWQsICVkKTtcbiIsCiAgICAg
ICAgICAgICAgICAgICAgdGV4dCwgeCwgeSwgTVBfYW5nLCBqKTsKICAgICAgICB9CiAgICB9IGVs
c2UgaWYgKE1QX2ZvbnRjaGFuZ2VkKSB7CiAgICAgICAgZnByaW50ZihncG91dGZpbGUsICJwdXRf
dGV4dCggYnRleCBcXHNldGZvbnR7JXN9eyU1LjJmfSAlcyBldGV4LCAlZGEsICVkYiwgJWQsICVk
KTtcbiIsCgogICAgICAgICAgICAgICAgTVBfZm9udG5hbWUsIE1QX2ZvbnRzaXplLCB0ZXh0LCB4
LCB5LCBNUF9hbmcsIGopOwogICAgfSBlbHNlIHsKICAgICAgICBmcHJpbnRmKGdwb3V0ZmlsZSwg
InB1dF90ZXh0KCBidGV4ICVzIGV0ZXgsICVkYSwgJWRiLCAlZCwgJWQpO1xuIiwKICAgICAgICAg
ICAgICAgIHRleHQsIHgsIHksIE1QX2FuZywgaik7CiAgICB9CgogICAgZnJlZSh0ZXh0KTsKfQoK
c3RhdGljIGludApNUF9qdXN0aWZ5X3RleHQobW9kZSkKZW51bSBKVVNUSUZZIG1vZGU7CnsKICAg
IE1QX2p1c3RpZnkgPSBtb2RlOwogICAgcmV0dXJuICgxKTsKfQoKc3RhdGljIGludApNUF90ZXh0
X2FuZ2xlKGFuZykKaW50IGFuZzsKewoKICAgIE1QX2FuZyA9IGFuZzsKICAgIHJldHVybiAoMSk7
Cn0KCnN0YXRpYyBpbnQKTVBfc2V0X2ZvbnQoZm9udCkKY2hhciAqZm9udDsKewogICAgaWYgKCpm
b250KSB7CiAgICAgICAgc2l6ZV90IHNlcCA9IF9fZXh0ZW5zaW9uX18gKHsgY2hhciBfX3IwLCBf
X3IxLCBfX3IyOyAoX19idWlsdGluX2NvbnN0YW50X3AgKCIsIikgJiYgKChzaXplX3QpKGNvbnN0
IHZvaWQgKikoKCIsIikgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoIiwiKSA9PSAxKSA/
ICgoX19yMCA9ICgoX19jb25zdCBjaGFyICopICgiLCIpKVswXSwgX19yMCA9PSAnXDAnKSA/IHN0
cmxlbiAoZm9udCkgOiAoKF9fcjEgPSAoKF9fY29uc3QgY2hhciAqKSAoIiwiKSlbMV0sIF9fcjEg
PT0gJ1wwJykgPyBfX3N0cmNzcG5fYzEgKGZvbnQsIF9fcjApIDogKChfX3IyID0gKChfX2NvbnN0
IGNoYXIgKikgKCIsIikpWzJdLCBfX3IyID09ICdcMCcpID8gX19zdHJjc3BuX2MyIChmb250LCBf
X3IwLCBfX3IxKSA6ICgoKF9fY29uc3QgY2hhciAqKSAoIiwiKSlbM10gPT0gJ1wwJyA/IF9fc3Ry
Y3Nwbl9jMyAoZm9udCwgX19yMCwgX19yMSwgX19yMikgOiBzdHJjc3BuIChmb250LCAiLCIpKSkp
KSA6IHN0cmNzcG4gKGZvbnQsICIsIikpOyB9KTsKICAgICAgICAoX19leHRlbnNpb25fXyAoX19i
dWlsdGluX2NvbnN0YW50X3AgKGZvbnQpICYmIF9fYnVpbHRpbl9jb25zdGFudF9wIChzZXApID8g
KHN0cmxlbiAoZm9udCkgKyAxID49ICgoc2l6ZV90KSAoc2VwKSkgPyAoY2hhciAqKSBtZW1jcHkg
KE1QX2ZvbnRuYW1lLCBmb250LCBzZXApIDogc3RybmNweSAoTVBfZm9udG5hbWUsIGZvbnQsIHNl
cCkpIDogc3RybmNweSAoTVBfZm9udG5hbWUsIGZvbnQsIHNlcCkpKTsKICAgICAgICBNUF9mb250
bmFtZVtzZXBdID0gKCdcMCcpOwogICAgICAgIHNzY2FuZigmKGZvbnRbc2VwICsgMV0pLCAiJWxm
IiwgJk1QX2ZvbnRzaXplKTsKICAgICAgICBpZiAoTVBfZm9udHNpemUgPCA1KQogICAgICAgICAg
ICBNUF9mb250c2l6ZSA9IDUuMDsKICAgICAgICBpZiAoTVBfZm9udHNpemUgPj0gMTAwKQogICAg
ICAgICAgICBNUF9mb250c2l6ZSA9IDk5Ljk5OwoKICAgICAgICBNUF9mb250Y2hhbmdlZCA9IDE7
CiAgICB9IGVsc2UgewogICAgICAgIE1QX2ZvbnRjaGFuZ2VkID0gMDsKICAgIH0KICAgIHJldHVy
biAxOwp9CgoKc3RhdGljIHZvaWQKTVBfcmVzZXQoKQp7CiAgICBmcHV0cygiZW5kLlxuIiwgZ3Bv
dXRmaWxlKTsKfQoKc3RhdGljIHZvaWQKTVBfYm94ZmlsbChzdHksIHgxLCB5MSwgd2QsIGh0KQpp
bnQgc3R5Owp1bnNpZ25lZCBpbnQgeDEsIHkxLCB3ZCwgaHQ7CnsKCiAgICBpZiAoTVBfaW5saW5l
KQogICAgICAgIE1QX2VuZGxpbmUoKTsKICAgIGlmIChzdHkgPD0gMCkKICAgICAgICBmcHJpbnRm
KGdwb3V0ZmlsZSwgImZpbGwgKCVkYSwlZGIpLS0oJWRhLCVkYiktLSglZGEsJWRiKS0tKCVkYSwl
ZGIpLS1jeWNsZSB3aXRoY29sb3IgYmFja2dyb3VuZDtcbiIsCgogICAgICAgICAgICAgICAgeDEs
IHkxLCB4MSArIHdkLCB5MSwgeDEgKyB3ZCwgeTEgKyBodCwgeDEsIHkxICsgaHQpOwp9CiMgMzk0
ICJ0ZXJtLmgiIDIKIyA2OTkgInRlcm0uYyIgMgojIDcxNCAidGVybS5jIgppbnQgbnVsbF90ZXh0
X2FuZ2xlKGFuZykKaW50IGFuZzsKewogICAgcmV0dXJuIChhbmcgPT0gMCk7Cn0KCgoKCmludCBu
dWxsX2p1c3RpZnlfdGV4dChqdXN0KQplbnVtIEpVU1RJRlkganVzdDsKewogICAgcmV0dXJuIChq
dXN0ID09IExFRlQpOwp9CgoKCgoKCmludCBudWxsX3NjYWxlKHgsIHkpCmRvdWJsZSB4Owpkb3Vi
bGUgeTsKewogICAgcmV0dXJuIDA7Cn0KCmludCBkb19zY2FsZSh4LCB5KQpkb3VibGUgeDsKZG91
YmxlIHk7CnsKICAgIHJldHVybiAxOwp9Cgp2b2lkIG9wdGlvbnNfbnVsbCgpCnsKICAgIHRlcm1f
b3B0aW9uc1swXSA9ICdcMCc7Cn0KCnZvaWQgVU5LTk9XTl9udWxsKCkKewp9Cgp2b2lkIE1PVkVf
bnVsbCh4LCB5KQp1bnNpZ25lZCBpbnQgeCwgeTsKewp9Cgp2b2lkIExJTkVUWVBFX251bGwodCkK
aW50IHQ7CnsKfQoKdm9pZCBQVVRURVhUX251bGwoeCwgeSwgcykKdW5zaWduZWQgaW50IHgsIHk7
CmNoYXIgKnM7CnsKfQoKCmludCBzZXRfZm9udF9udWxsKHMpCmNoYXIgKnM7CnsKICAgIHJldHVy
biAwOwp9CgpzdGF0aWMgdm9pZCBudWxsX2xpbmV3aWR0aChzKQpkb3VibGUgczsKewp9CgoKCnR5
cGVkZWYgdm9pZCAoKnZvaWRfZnApICh2b2lkKTsKIyA4MDMgInRlcm0uYyIKc3RydWN0IFRFUk1F
TlRSWSB0ZXJtX3RibFtdID0KewogICAgeyJ1bmtub3duIiwgIlVua25vd24gdGVybWluYWwgdHlw
ZSAtIG5vdCBhIHBsb3R0aW5nIGRldmljZSIsCiAgICAgMTAwLCAxMDAsIDEsIDEsCiAgICAgMSwg
MSwgb3B0aW9uc19udWxsLCBVTktOT1dOX251bGwsIFVOS05PV05fbnVsbCwKICAgICBVTktOT1dO
X251bGwsIG51bGxfc2NhbGUsIFVOS05PV05fbnVsbCwgTU9WRV9udWxsLCBNT1ZFX251bGwsCiAg
ICAgTElORVRZUEVfbnVsbCwgUFVUVEVYVF9udWxsfQogICAgLAogICAgeyJ0YWJsZSIsICJEdW1w
IEFTQ0lJIHRhYmxlIG9mIFggWSBbWl0gdmFsdWVzIHRvIG91dHB1dCIsCiAgICAgMTAwLCAxMDAs
IDEsIDEsCiAgICAgMSwgMSwgb3B0aW9uc19udWxsLCBVTktOT1dOX251bGwsIFVOS05PV05fbnVs
bCwKICAgICBVTktOT1dOX251bGwsIG51bGxfc2NhbGUsIFVOS05PV05fbnVsbCwgTU9WRV9udWxs
LCBNT1ZFX251bGwsCiAgICAgTElORVRZUEVfbnVsbCwgUFVUVEVYVF9udWxsfQojIDEgInRlcm0u
aCIgMQojIDIyMCAidGVybS5oIgojIDEgInRlcm0vYWVkLnRybSIgMQojIDU1ICJ0ZXJtL2FlZC50
cm0iCiMgMSAidGVybS9kcml2ZXIuaCIgMQojIDU2ICJ0ZXJtL2FlZC50cm0iIDIKIyAxNzIgInRl
cm0vYWVkLnRybSIKLHsKICAgICJhZWQ1MTIiLCAiQUVEIDUxMiBUZXJtaW5hbCIsCiAgICA1MTIs
IDU3NSwgMTMsIDgsCiAgICA4LCA3LCBvcHRpb25zX251bGwsIEFFRF9pbml0LCBBRURfcmVzZXQs
CiAgICBBRURfdGV4dCwgbnVsbF9zY2FsZSwgQUVEX2dyYXBoaWNzLCBBRURfbW92ZSwgQUVEX3Zl
Y3RvciwKICAgIEFFRF9saW5ldHlwZSwgQUVEX3B1dF90ZXh0LCBudWxsX3RleHRfYW5nbGUsCiAg
ICBudWxsX2p1c3RpZnlfdGV4dCwgZG9fcG9pbnQsIGRvX2Fycm93LCBzZXRfZm9udF9udWxsCn0K
CgoKCix7CiAgICAiYWVkNzY3IiwgIkFFRCA3NjcgVGVybWluYWwiLAogICAgNzY4LCA1NzUsIDEz
LCA4LAogICAgOCwgNywgb3B0aW9uc19udWxsLCBBRURfaW5pdCwgQUVEX3Jlc2V0LAogICAgQUVE
X3RleHQsIG51bGxfc2NhbGUsIEFFRF9ncmFwaGljcywgQUVEX21vdmUsIEFFRF92ZWN0b3IsCiAg
ICBBRURfbGluZXR5cGUsIEFFRF9wdXRfdGV4dCwgbnVsbF90ZXh0X2FuZ2xlLAogICAgbnVsbF9q
dXN0aWZ5X3RleHQsIGRvX3BvaW50LCBkb19hcnJvdywgc2V0X2ZvbnRfbnVsbAp9CiMgMjIxICJ0
ZXJtLmgiIDIKIyAyMzEgInRlcm0uaCIKIyAxICJ0ZXJtL2dwaWMudHJtIiAxCiMgNTYgInRlcm0v
Z3BpYy50cm0iCiMgMSAidGVybS9kcml2ZXIuaCIgMQojIDU3ICJ0ZXJtL2dwaWMudHJtIiAyCiMg
MjcxICJ0ZXJtL2dwaWMudHJtIgosewogICAgImdwaWMiLCAiR1BJQyAtLSBQcm9kdWNlIGdyYXBo
cyBpbiBncm9mZiB1c2luZyB0aGUgZ3BpYyBwcmVwcm9jZXNzb3IiLAogICAgKDUqKDMwMCkpLCAo
MyooMzAwKSksICgoMzAwKSoxMS83MiksICgoMzAwKSo1My8xMC83MiksCiAgICAoNSooMzAwKS83
MiksICg1KigzMDApLzcyKSwgR1BJQ19vcHRpb25zLCBHUElDX2luaXQsIEdQSUNfcmVzZXQsCiAg
ICBHUElDX3RleHQsIG51bGxfc2NhbGUsIEdQSUNfZ3JhcGhpY3MsIEdQSUNfbW92ZSwgR1BJQ192
ZWN0b3IsCiAgICBHUElDX2xpbmV0eXBlLCBHUElDX3B1dF90ZXh0LCBHUElDX3RleHRfYW5nbGUs
CiAgICBHUElDX2p1c3RpZnlfdGV4dCwgbGluZV9hbmRfcG9pbnQsIEdQSUNfYXJyb3csIHNldF9m
b250X251bGwKfQojIDIzMiAidGVybS5oIiAyCgoKIyAxICJ0ZXJtL3JlZ2lzLnRybSIgMQojIDUx
ICJ0ZXJtL3JlZ2lzLnRybSIKIyAxICJ0ZXJtL2RyaXZlci5oIiAxCiMgNTIgInRlcm0vcmVnaXMu
dHJtIiAyCiMgMjM4ICJ0ZXJtL3JlZ2lzLnRybSIKLHsKICAgICJyZWdpcyIsICJSRUdJUyBncmFw
aGljcyBsYW5ndWFnZSIsCiAgICA4MDAsIDQ0MCwgMjAsIDksCiAgICA4LCA2LCBSRUdJU29wdGlv
bnMsIFJFR0lTaW5pdCwgUkVHSVNyZXNldCwKICAgIFJFR0lTdGV4dCwgbnVsbF9zY2FsZSwgUkVH
SVNncmFwaGljcywgUkVHSVNtb3ZlLCBSRUdJU3ZlY3RvciwKICAgIFJFR0lTbGluZXR5cGUsIFJF
R0lTcHV0X3RleHQsIFJFR0lTdGV4dF9hbmdsZSwKICAgIG51bGxfanVzdGlmeV90ZXh0LCBsaW5l
X2FuZF9wb2ludCwgZG9fYXJyb3csIHNldF9mb250X251bGwKfQojIDIzNSAidGVybS5oIiAyCgoK
IyAxICJ0ZXJtL3Q0MTB4LnRybSIgMQojIDY3ICJ0ZXJtL3Q0MTB4LnRybSIKIyAxICJ0ZXJtL2Ry
aXZlci5oIiAxCiMgNjggInRlcm0vdDQxMHgudHJtIiAyCiMgMjk2ICJ0ZXJtL3Q0MTB4LnRybSIK
LHsKICAgICJ0ZWs0MTB4IiwgIlRla3Ryb25peCA0MTA2LCA0MTA3LCA0MTA5IGFuZCA0MjBYIHRl
cm1pbmFscyIsCiAgICA0MDk1LCAzMTMxLCA3MSwgNTEsCiAgICAzNiwgMzYsIG9wdGlvbnNfbnVs
bCwgVDQxMFhfaW5pdCwgVDQxMFhfcmVzZXQsCiAgICBUNDEwWF90ZXh0LCBudWxsX3NjYWxlLCBU
NDEwWF9ncmFwaGljcywgVDQxMFhfbW92ZSwgVDQxMFhfdmVjdG9yLAogICAgVDQxMFhfbGluZXR5
cGUsIFQ0MTBYX3B1dF90ZXh0LCBUNDEwWF90ZXh0X2FuZ2xlLAogICAgbnVsbF9qdXN0aWZ5X3Rl
eHQsIFQ0MTBYX3BvaW50LCBkb19hcnJvdywgc2V0X2ZvbnRfbnVsbAp9CiMgMjM4ICJ0ZXJtLmgi
IDIKCgojIDEgInRlcm0vdGVrLnRybSIgMQojIDYyICJ0ZXJtL3Rlay50cm0iCiMgMSAidGVybS9k
cml2ZXIuaCIgMQojIDYzICJ0ZXJtL3Rlay50cm0iIDIKIyA2MTUgInRlcm0vdGVrLnRybSIKLHsK
IyA2MjQgInRlcm0vdGVrLnRybSIKICAgICJ0ZWs0MHh4IiwgIlRla3Ryb25peCA0MDEwIGFuZCBv
dGhlcnM7IG1vc3QgVEVLIGVtdWxhdG9ycyIsCiAgICAxMDI0LCA3ODAsIDI1LCAxNCwKICAgIDEx
LCAxMSwgb3B0aW9uc19udWxsLCBURUs0MGluaXQsIFRFSzQwcmVzZXQsCiAgICBURUs0MHRleHQs
IG51bGxfc2NhbGUsIFRFSzQwZ3JhcGhpY3MsIENURUtfbW92ZSwgQ1RFS192ZWN0b3IsCiAgICBD
VEVLX2xpbmV0eXBlLCBURUs0MHB1dF90ZXh0LCBudWxsX3RleHRfYW5nbGUsCiAgICBudWxsX2p1
c3RpZnlfdGV4dCwgbGluZV9hbmRfcG9pbnQsIGRvX2Fycm93LCBzZXRfZm9udF9udWxsCgp9CgoK
CgoKLHsKICAgICJ2dHRlayIsICJWVC1saWtlIHRlazQweHggdGVybWluYWwgZW11bGF0b3IiLAog
ICAgMTAyNCwgNzgwLCAyNSwgMTQsCiAgICAxMSwgMTEsIG9wdGlvbnNfbnVsbCwgVlRURUs0MGlu
aXQsIFZUVEVLNDByZXNldCwKICAgIFRFSzQwdGV4dCwgbnVsbF9zY2FsZSwgVEVLNDBncmFwaGlj
cywgVEVLNDBtb3ZlLCBURUs0MHZlY3RvciwKICAgIFZUVEVLNDBsaW5ldHlwZSwgVlRURUs0MHB1
dF90ZXh0LCBudWxsX3RleHRfYW5nbGUsCiAgICBudWxsX2p1c3RpZnlfdGV4dCwgbGluZV9hbmRf
cG9pbnQsIGRvX2Fycm93LCBzZXRfZm9udF9udWxsCn0KCgoKCgoKCix7CiAgICJrY190ZWs0MHh4
IiwgIk1TLURPUyBLZXJtaXQgVGVrNDAxMCB0ZXJtaW5hbCBlbXVsYXRvciAtIGNvbG9yIiwKICAg
IDEwMjQsIDc4MCwgMjUsIDEzLAogICAgMTEsIDExLCBvcHRpb25zX251bGwsIFRFSzQwaW5pdCwg
S1RFSzQwcmVzZXQsCiAgICBLVEVLNDBDdGV4dCwgbnVsbF9zY2FsZSwgS1RFSzQwZ3JhcGhpY3Ms
IFRFSzQwbW92ZSwgVEVLNDB2ZWN0b3IsCiAgICBLVEVLNDBDbGluZXR5cGUsIFRFSzQwcHV0X3Rl
eHQsIG51bGxfdGV4dF9hbmdsZSwKICAgIG51bGxfanVzdGlmeV90ZXh0LCBkb19wb2ludCwgZG9f
YXJyb3csIHNldF9mb250X251bGwKfQoKCgoKLHsKICAgICJrbV90ZWs0MHh4IiwgIk1TLURPUyBL
ZXJtaXQgVGVrNDAxMCB0ZXJtaW5hbCBlbXVsYXRvciAtIG1vbm9jaHJvbWUiLAogICAgMTAyNCwg
NzgwLCAyNSwgMTMsCiAgICAxMSwgMTEsIG9wdGlvbnNfbnVsbCwgVEVLNDBpbml0LCBLVEVLNDBy
ZXNldCwKICAgIFRFSzQwdGV4dCwgbnVsbF9zY2FsZSwgS1RFSzQwZ3JhcGhpY3MsIFRFSzQwbW92
ZSwgVEVLNDB2ZWN0b3IsCiAgICBLVEVLNDBNbGluZXR5cGUsIFRFSzQwcHV0X3RleHQsIG51bGxf
dGV4dF9hbmdsZSwKICAgIG51bGxfanVzdGlmeV90ZXh0LCBsaW5lX2FuZF9wb2ludCwgZG9fYXJy
b3csIHNldF9mb250X251bGwKfQoKCgoKCgoKLHsKICAgICJzZWxhbmFyIiwgIlNlbGFuYXIiLAog
ICAgMTAyNCwgNzgwLCAyNSwgMTQsCiAgICAxMSwgMTEsIG9wdGlvbnNfbnVsbCwgU0VMX2luaXQs
IFNFTF9yZXNldCwKICAgIFNFTF90ZXh0LCBudWxsX3NjYWxlLCBTRUxfZ3JhcGhpY3MsIFRFSzQw
bW92ZSwgVEVLNDB2ZWN0b3IsCiAgICBURUs0MGxpbmV0eXBlLCBURUs0MHB1dF90ZXh0LCBudWxs
X3RleHRfYW5nbGUsCiAgICBudWxsX2p1c3RpZnlfdGV4dCwgbGluZV9hbmRfcG9pbnQsIGRvX2Fy
cm93LCBzZXRfZm9udF9udWxsCn0KCgoKCgoKCix7CiAgICAiYml0Z3JhcGgiLCAiQkJOIEJpdGdy
YXBoIFRlcm1pbmFsIiwKICAgIDc2OCwgNzY4LCAxNiwgOSwKICAgIDgsIDgsIG9wdGlvbnNfbnVs
bCwgVEVLNDBpbml0LCBURUs0MHJlc2V0LAogICAgQkdfdGV4dCwgbnVsbF9zY2FsZSwgVEVLNDBn
cmFwaGljcywgVEVLNDBtb3ZlLCBURUs0MHZlY3RvciwKICAgIFRFSzQwbGluZXR5cGUsIEJHX3B1
dF90ZXh0LCBudWxsX3RleHRfYW5nbGUsCiAgICBudWxsX2p1c3RpZnlfdGV4dCwgbGluZV9hbmRf
cG9pbnQsIGRvX2Fycm93LCBzZXRfZm9udF9udWxsCn0KIyAyNDEgInRlcm0uaCIgMgoKCiMgMSAi
dGVybS94bGliLnRybSIgMQojIDQ3ICJ0ZXJtL3hsaWIudHJtIgojIDEgInRlcm0vZHJpdmVyLmgi
IDEKIyA0OCAidGVybS94bGliLnRybSIgMgojIDE0MCAidGVybS94bGliLnRybSIKLHsKICAgICJ4
bGliIiwgIlgxMSBXaW5kb3cgU3lzdGVtIChnbnVsaWJfeDExIGR1bXApIiwKICAgIDQwOTYsIDQw
OTYsICg0MDk2LzI1KSwgKDQwOTYvMTAwKSwKICAgICg0MDk2LzEwMCksICg0MDk2LzE1MCksIG9w
dGlvbnNfbnVsbCwgWGxpYl9pbml0LCBYbGliX3Jlc2V0LAogICAgWGxpYl90ZXh0LCBudWxsX3Nj
YWxlLCBYbGliX2dyYXBoaWNzLCBYbGliX21vdmUsIFhsaWJfdmVjdG9yLAogICAgWGxpYl9saW5l
dHlwZSwgWGxpYl9wdXRfdGV4dCwgbnVsbF90ZXh0X2FuZ2xlLAogICAgWGxpYl9qdXN0aWZ5X3Rl
eHQsIGxpbmVfYW5kX3BvaW50LCBkb19hcnJvdywgc2V0X2ZvbnRfbnVsbAp9CiMgMjQ0ICJ0ZXJt
LmgiIDIKIyAyNTMgInRlcm0uaCIKIyAxICJ0ZXJtL3gxMS50cm0iIDEKIyA0MCAidGVybS94MTEu
dHJtIgojIDEgInRlcm0vZHJpdmVyLmgiIDEKIyA0MSAidGVybS94MTEudHJtIiAyCiMgNjM1ICJ0
ZXJtL3gxMS50cm0iCix7CiAgICAieDExIiwgIlgxMSBXaW5kb3cgU3lzdGVtIiwKICAgIDQwOTYs
IDQwOTYsICg0MDk2LzI1KSwgKDQwOTYvMTAwKSwKICAgICg0MDk2LzEwMCksICg0MDk2LzE1MCks
IFgxMV9vcHRpb25zLCBYMTFfaW5pdCwgWDExX3Jlc2V0LAogICAgWDExX3RleHQsIG51bGxfc2Nh
bGUsIFgxMV9ncmFwaGljcywgWDExX21vdmUsIFgxMV92ZWN0b3IsCiAgICBYMTFfbGluZXR5cGUs
IFgxMV9wdXRfdGV4dCwgbnVsbF90ZXh0X2FuZ2xlLAogICAgWDExX2p1c3RpZnlfdGV4dCwgWDEx
X3BvaW50LCBkb19hcnJvdywgc2V0X2ZvbnRfbnVsbCwKICAgIFgxMV9wb2ludHNpemUsIDEsCiAg
ICBYMTFfdGV4dCAsIDAgLAogICAgWDExX2ZpbGxib3gsIFgxMV9saW5ld2lkdGgKfQoKCgoKLHsK
ICAgICJYMTEiLCAiWDExIFdpbmRvdyBTeXN0ZW0gKGlkZW50aWNhbCB0byB4MTEpIiwKICAgIDQw
OTYsIDQwOTYsICg0MDk2LzI1KSwgKDQwOTYvMTAwKSwKICAgICg0MDk2LzEwMCksICg0MDk2LzE1
MCksIFgxMV9vcHRpb25zLCBYMTFfaW5pdCwgWDExX3Jlc2V0LAogICAgWDExX3RleHQsIG51bGxf
c2NhbGUsIFgxMV9ncmFwaGljcywgWDExX21vdmUsIFgxMV92ZWN0b3IsCiAgICBYMTFfbGluZXR5
cGUsIFgxMV9wdXRfdGV4dCwgbnVsbF90ZXh0X2FuZ2xlLAogICAgWDExX2p1c3RpZnlfdGV4dCwg
WDExX3BvaW50LCBkb19hcnJvdywgc2V0X2ZvbnRfbnVsbCwKICAgIFgxMV9wb2ludHNpemUsIDEs
CiAgICBYMTFfdGV4dCAsIDAgLAogICAgWDExX2ZpbGxib3gsIFgxMV9saW5ld2lkdGgKfQojIDI1
NCAidGVybS5oIiAyCgoKCiMgMSAidGVybS9haS50cm0iIDEKIyA2NCAidGVybS9haS50cm0iCiMg
MSAidGVybS9kcml2ZXIuaCIgMQojIDY1ICJ0ZXJtL2FpLnRybSIgMgojIDQ4NyAidGVybS9haS50
cm0iCix7CiAgICAiYWlmbSIsICJBZG9iZSBJbGx1c3RyYXRvciAzLjAgRm9ybWF0IiwKICAgIDUw
MDAsIDM1MDAsICgxNCooMTAuMCkpLCAoMTQqKDEwLjApKjYvMTApLAogICAgKDM1MDAvODApLCAo
MzUwMC84MCksIEFJX29wdGlvbnMsIEFJX2luaXQsIEFJX3Jlc2V0LAogICAgQUlfdGV4dCwgbnVs
bF9zY2FsZSwgQUlfZ3JhcGhpY3MsIEFJX21vdmUsIEFJX3ZlY3RvciwKICAgIEFJX2xpbmV0eXBl
LCBBSV9wdXRfdGV4dCwgQUlfdGV4dF9hbmdsZSwKICAgIEFJX2p1c3RpZnlfdGV4dCwgZG9fcG9p
bnQsIGRvX2Fycm93LCBBSV9zZXRfZm9udCwKICAgICgodm9pZCAqKTApLCAwLCBBSV9zdXNwZW5k
LCBBSV9yZXN1bWUKfQojIDI1OCAidGVybS5oIiAyCgoKIyAxICJ0ZXJtL2NnbS50cm0iIDEKIyA1
NCAidGVybS9jZ20udHJtIgojIDEgInRlcm0vZHJpdmVyLmgiIDEKIyA1NSAidGVybS9jZ20udHJt
IiAyCiMgMTA5OSAidGVybS9jZ20udHJtIgosewogICAgImNnbSIsICJDb21wdXRlciBHcmFwaGlj
cyBNZXRhZmlsZSIsCiAgICAzMjc2NyAtICgzMjc2Ny8xODApLCAzMjc2Ny8xOCoxMyAtICgzMjc2
Ny8xODApLCAoMzI3NjcvMTgqMTMvMzYwKjEyKSwgKDMyNzY3LzE4KjEzLzM2MCoxMio1LzkpLAog
ICAgKDMyNzY3LzgwKSwgKDMyNzY3LzgwKSwgQ0dNX29wdGlvbnMsIENHTV9pbml0LCBDR01fcmVz
ZXQsCiAgICBDR01fdGV4dCwgbnVsbF9zY2FsZSwgQ0dNX2dyYXBoaWNzLCBDR01fbW92ZSwgQ0dN
X3NvbGlkX3ZlY3RvciwKICAgIENHTV9saW5ldHlwZSwgQ0dNX3B1dF90ZXh0LCBDR01fdGV4dF9h
bmdsZSwKICAgIENHTV9qdXN0aWZ5X3RleHQsIENHTV9wb2ludCwgZG9fYXJyb3csIENHTV9zZXRf
Zm9udCwKICAgIENHTV9zZXRfcG9pbnRzaXplLAogICAgNCwKICAgICgodm9pZCAqKTApLAogICAg
KCh2b2lkICopMCksCiAgICAoKHZvaWQgKikwKSwKICAgIENHTV9saW5ld2lkdGgKfQojIDI2MSAi
dGVybS5oIiAyCgoKIyAxICJ0ZXJtL2NvcmVsLnRybSIgMQojIDI4ICJ0ZXJtL2NvcmVsLnRybSIK
IyAxICJ0ZXJtL2RyaXZlci5oIiAxCiMgMjkgInRlcm0vY29yZWwudHJtIiAyCiMgMzkxICJ0ZXJt
L2NvcmVsLnRybSIKLHsKICAgICJjb3JlbCIsICJFUFMgZm9ybWF0IGZvciBDb3JlbERSQVciLAog
ICAgNTk2MCwgNzIwMCwgKDIyKigxMC4wKSksICgyMiooMTAuMCkqNi8xMCksCiAgICAoNzIwMC84
MCksICg3MjAwLzgwKSwgQ09SRUxfb3B0aW9ucywgQ09SRUxfaW5pdCwgQ09SRUxfcmVzZXQsCiAg
ICBDT1JFTF90ZXh0LCBudWxsX3NjYWxlLCBDT1JFTF9ncmFwaGljcywgQ09SRUxfbW92ZSwgQ09S
RUxfdmVjdG9yLAogICAgQ09SRUxfbGluZXR5cGUsIENPUkVMX3B1dF90ZXh0LCBDT1JFTF90ZXh0
X2FuZ2xlLAogICAgQ09SRUxfanVzdGlmeV90ZXh0LCBkb19wb2ludCwgZG9fYXJyb3csIHNldF9m
b250X251bGwKfQojIDI2NCAidGVybS5oIiAyCgoKCgoKCgojIDEgInRlcm0vZHVtYi50cm0iIDEK
IyA1MSAidGVybS9kdW1iLnRybSIKIyAxICJ0ZXJtL2RyaXZlci5oIiAxCiMgNTIgInRlcm0vZHVt
Yi50cm0iIDIKIyAzNDggInRlcm0vZHVtYi50cm0iCix7CiAgICAiZHVtYiIsICJwcmludGVyIG9y
IGdsYXNzIGR1bWIgdGVybWluYWwiLAogICAgNzksIDI0LCAxLCAxLAogICAgMSwgMSwgRFVNQl9v
cHRpb25zLCBEVU1CX2luaXQsIERVTUJfcmVzZXQsCiAgICBEVU1CX3RleHQsIG51bGxfc2NhbGUs
IERVTUJfZ3JhcGhpY3MsIERVTUJfbW92ZSwgRFVNQl92ZWN0b3IsCiAgICBEVU1CX2xpbmV0eXBl
LCBEVU1CX3B1dF90ZXh0LCBudWxsX3RleHRfYW5nbGUsCiAgICBudWxsX2p1c3RpZnlfdGV4dCwg
RFVNQl9wb2ludCwgRFVNQl9hcnJvdywgc2V0X2ZvbnRfbnVsbCwKICAgIDAsCiAgICAxCn0KIyAy
NzIgInRlcm0uaCIgMgoKCiMgMSAidGVybS9keGYudHJtIiAxCiMgNTUgInRlcm0vZHhmLnRybSIK
IyAxICJ0ZXJtL2RyaXZlci5oIiAxCiMgNTYgInRlcm0vZHhmLnRybSIgMgojIDM3NCAidGVybS9k
eGYudHJtIgosewogICJkeGYiLCAiZHhmLWZpbGUgZm9yIEF1dG9DYWQgKGRlZmF1bHQgc2l6ZSAx
MjB4ODApIiwKICAgICgxMjAuMCAqIDYwLjApLCAoODAuMCAqIDYwLjApLCAoMC4wMjYgKiAoODAu
MCAqIDYwLjApKSwgKDAuMDE0ICogKDEyMC4wICogNjAuMCkpLAogICAgKDAuMDEgKiAoODAuMCAq
IDYwLjApKSwgKDAuMDEgKiAoMTIwLjAgKiA2MC4wKSksIG9wdGlvbnNfbnVsbCwgRFhGX2luaXQs
IERYRl9yZXNldCwKICAgIERYRl90ZXh0LCBudWxsX3NjYWxlLCBEWEZfZ3JhcGhpY3MsIERYRl9t
b3ZlLCBEWEZfdmVjdG9yLAogICAgRFhGX2xpbmV0eXBlLCBEWEZfcHV0X3RleHQsIERYRl90ZXh0
X2FuZ2xlLAogICAgRFhGX2p1c3RpZnlfdGV4dCwgZG9fcG9pbnQsIGRvX2Fycm93LCBzZXRfZm9u
dF9udWxsCn0KIyAyNzUgInRlcm0uaCIgMgoKCgoKCgoKIyAxICJ0ZXJtL2ZpZy50cm0iIDEKIyA2
MyAidGVybS9maWcudHJtIgojIDEgInRlcm0vZHJpdmVyLmgiIDEKIyA2NCAidGVybS9maWcudHJt
IiAyCiMgNzY1ICJ0ZXJtL2ZpZy50cm0iCix7CiAgICAiZmlnIiwgIkZJRyAzLjEgZ3JhcGhpY3Mg
bGFuZ3VhZ2U6IFggZ3JhcGhpY3MgZWRpdG9yIiwKICAgICg1ICogKDEyMDApKSwgKDMgKiAoMTIw
MCkpLCAoKCgxMCkpKigxMjAwKS83MiozLzQpLCAoKCgoMTApKSooMTIwMCkvNzIqMy80KSo2LzEw
KSwKICAgICg1KigxMjAwKS84MCksICg1KigxMjAwKS84MCksIEZJR19vcHRpb25zLCBGSUdfaW5p
dCwgRklHX3Jlc2V0LAogICAgRklHX3RleHQsIG51bGxfc2NhbGUsIEZJR19ncmFwaGljcywgRklH
X21vdmUsIEZJR192ZWN0b3IsCiAgICBGSUdfbGluZXR5cGUsIEZJR19wdXRfdGV4dCwgRklHX3Rl
eHRfYW5nbGUsIEZJR19qdXN0aWZ5X3RleHQsCiAgICBGSUdfbHBvaW50LCBGSUdfYXJyb3csIHNl
dF9mb250X251bGwsIEZJR19wb2ludHNpemUsCiAgICAwICwgMCAsIDAgLCAwICwKICAgIEZJR19s
aW5ld2lkdGgKfQojIDI4MyAidGVybS5oIiAyCiMgMjk0ICJ0ZXJtLmgiCiMgMSAidGVybS9ocDI2
LnRybSIgMQojIDU1ICJ0ZXJtL2hwMjYudHJtIgojIDEgInRlcm0vZHJpdmVyLmgiIDEKIyA1NiAi
dGVybS9ocDI2LnRybSIgMgojIDY4MiAidGVybS9ocDI2LnRybSIKLHsKICAgICJocDI2MjNBIiwg
IkhQMjYyM0EgYW5kIG1heWJlIG90aGVycyIsCiAgICA1MTIsIDM5MCwgMTAsIDcsCiAgICA1LCA1
LCBvcHRpb25zX251bGwsIEhQMjZfaW5pdCwgSFAyNl9yZXNldCwKICAgIEhQMjZfdGV4dCwgbnVs
bF9zY2FsZSwgSFAyNl9ncmFwaGljcywgSFAyNl9tb3ZlLCBIUDI2X3ZlY3RvciwKICAgIEhQMjZf
bGluZXR5cGUsIEhQMjZfcHV0X3RleHQsIEhQMjZfdGV4dF9hbmdsZSwKICAgIG51bGxfanVzdGlm
eV90ZXh0LCBIUDI2X2xpbmVfYW5kX3BvaW50LCBkb19hcnJvdywgc2V0X2ZvbnRfbnVsbAp9CiMg
Mjk1ICJ0ZXJtLmgiIDIKCgojIDEgInRlcm0vaHAyNjQ4LnRybSIgMQojIDU1ICJ0ZXJtL2hwMjY0
OC50cm0iCiMgMSAidGVybS9kcml2ZXIuaCIgMQojIDU2ICJ0ZXJtL2hwMjY0OC50cm0iIDIKIyAx
NjkgInRlcm0vaHAyNjQ4LnRybSIKLHsKICAgICJocDI2NDgiLCAiSFAyNjQ4IGFuZCBIUDI2NDci
LAogICAgNzIwLCAzNjAsIDEyLCA3LAogICAgOCwgOCwgb3B0aW9uc19udWxsLCBIUDI2NDhpbml0
LCBIUDI2NDhyZXNldCwKICAgIEhQMjY0OHRleHQsIG51bGxfc2NhbGUsIEhQMjY0OGdyYXBoaWNz
LCBIUDI2NDhtb3ZlLCBIUDI2NDh2ZWN0b3IsCiAgICBIUDI2NDhsaW5ldHlwZSwgSFAyNjQ4cHV0
X3RleHQsIEhQMjY0OF90ZXh0X2FuZ2xlLAogICAgbnVsbF9qdXN0aWZ5X3RleHQsIGxpbmVfYW5k
X3BvaW50LCBkb19hcnJvdywgc2V0X2ZvbnRfbnVsbAp9CiMgMjk4ICJ0ZXJtLmgiIDIKCgojIDEg
InRlcm0vaHA1MDBjLnRybSIgMQojIDY5ICJ0ZXJtL2hwNTAwYy50cm0iCiMgMSAidGVybS9kcml2
ZXIuaCIgMQojIDcwICJ0ZXJtL2hwNTAwYy50cm0iIDIKIyA1MDcgInRlcm0vaHA1MDBjLnRybSIK
LHsKICAgICJocDUwMGMiLCAiSFAgRGVza0pldCA1MDBjLCBbNzUgMTAwIDE1MCAzMDBdIFtybGUg
dGlmZl0iLAogICAgKDE5MjAvNCksICgxOTIwLzQpLCAoMTkyMC80LzEwKSwKICAgICgxOTIwLzQv
NiksIDUsIDUsIEhQNTAwQ29wdGlvbnMsCiAgICBIUDUwMENpbml0LCBIUDUwMENyZXNldCwgSFA1
MDBDdGV4dCwgbnVsbF9zY2FsZSwKICAgIEhQNTAwQ2dyYXBoaWNzLCBiX21vdmUsIGJfdmVjdG9y
LCBIUDUwMENsaW5ldHlwZSwKICAgIGJfcHV0X3RleHQsIGJfdGV4dF9hbmdsZSwgbnVsbF9qdXN0
aWZ5X3RleHQsIGRvX3BvaW50LAogICAgZG9fYXJyb3csIHNldF9mb250X251bGwsIDAsIDQKfQoj
IDMwMSAidGVybS5oIiAyCgoKIyAxICJ0ZXJtL2hwZ2wudHJtIiAxCiMgNjQgInRlcm0vaHBnbC50
cm0iCiMgMSAidGVybS9kcml2ZXIuaCIgMQojIDY1ICJ0ZXJtL2hwZ2wudHJtIiAyCiMgMTA5NSAi
dGVybS9ocGdsLnRybSIKLHsKICAgICJocGdsIiwgIkhQNzQ3NSBhbmQgcmVsYXRpdmVzIFtudW1i
ZXIgb2YgcGVuc10gW2VqZWN0XSIsCiAgICAxMDAwMCwgNzUwMCwgKDc1MDAvMTAwKjMyLzEwKSwg
KDEwMDAwLzEwMCoxMi8xMCksCiAgICAoNzUwMC83MCksICg3NTAwLzcwKSwgSFBHTF9vcHRpb25z
LCBIUEdMX2luaXQsIEhQR0xfcmVzZXQsCiAgICBIUEdMX3RleHQsIG51bGxfc2NhbGUsIEhQR0xf
Z3JhcGhpY3MsIEhQR0xfbW92ZSwgSFBHTF92ZWN0b3IsCiAgICBIUEdMX2xpbmV0eXBlLCBIUEdM
X3B1dF90ZXh0LCBIUEdMX3RleHRfYW5nbGUsCiAgICBudWxsX2p1c3RpZnlfdGV4dCwgZG9fcG9p
bnQsIGRvX2Fycm93LCBzZXRfZm9udF9udWxsCn0KCgoKCiAgICAsewogICAgInBjbDUiLCAiSFAg
TGFzZXJKZXQgSUlJIFttb2RlXSBbZm9udF0gW3BvaW50XSIsCiAgICAxMDAwMCwgKDc1MDAgLTYw
KSwgKChpbnQpIDEwMTYgKiAxNCAvIDcyKSwgKCgoaW50KSAxMDE2ICogMTQgLyA3MikgKiAyIC8g
MyksCiAgICAoKDc1MDAgLTYwKS83MCksICgoNzUwMCAtNjApLzcwKSwgUENMX29wdGlvbnMsIFBD
TF9pbml0LCBQQ0xfcmVzZXQsCiAgICBQQ0xfdGV4dCwgbnVsbF9zY2FsZSwgUENMX2dyYXBoaWNz
LCBIUEdMMl9tb3ZlLCBIUEdMMl92ZWN0b3IsCiAgICBIUEdMMl9saW5ldHlwZSwgSFBHTDJfcHV0
X3RleHQsIEhQR0wyX3RleHRfYW5nbGUsCiAgICBIUEdMMl9qdXN0aWZ5X3RleHQsIGRvX3BvaW50
LCBkb19hcnJvdywgc2V0X2ZvbnRfbnVsbAp9CiMgMzA0ICJ0ZXJtLmgiIDIKCgojIDEgInRlcm0v
aHBsamlpLnRybSIgMQojIDY4ICJ0ZXJtL2hwbGppaS50cm0iCiMgMSAidGVybS9kcml2ZXIuaCIg
MQojIDY5ICJ0ZXJtL2hwbGppaS50cm0iIDIKIyAzNzMgInRlcm0vaHBsamlpLnRybSIKLHsKICAg
ICJocGxqaWkiLCAiSFAgTGFzZXJqZXQgc2VyaWVzIElJLCBbNzUgMTAwIDE1MCAzMDBdIiwKICAg
ICgxOTIwLzQpLCAoMTkyMC80KSwgKDE5MjAvNC8xMCksCiAgICAoMTkyMC80LzYpLCA1LCA1LCBI
UExKSUlvcHRpb25zLAogICAgSFBMSklJaW5pdCwgSFBMSklJcmVzZXQsIEhQTEpJSXRleHQsIG51
bGxfc2NhbGUsCiAgICBIUExKSUlncmFwaGljcywgYl9tb3ZlLCBiX3ZlY3RvciwgSFBMSklJbGlu
ZXR5cGUsCiAgICBIUExKSUlwdXRfdGV4dCwgYl90ZXh0X2FuZ2xlLCBudWxsX2p1c3RpZnlfdGV4
dCwgbGluZV9hbmRfcG9pbnQsCiAgICBkb19hcnJvdywgc2V0X2ZvbnRfbnVsbCwgMCwgNAp9CgoK
CgosewogICAgImhwZGoiLCAiSFAgRGVza0pldCA1MDAsIFs3NSAxMDAgMTUwIDMwMF0iLAogICAg
KDE5MjAvNCksICgxOTIwLzQpLCAoMTkyMC80LzEwKSwKICAgICgxOTIwLzQvNiksIDUsIDUsIEhQ
TEpJSW9wdGlvbnMsCiAgICBIUExKSUlpbml0LCBIUExKSUlyZXNldCwgSFBESnRleHQsIG51bGxf
c2NhbGUsCiAgICBIUERKZ3JhcGhpY3MsIGJfbW92ZSwgYl92ZWN0b3IsIEhQTEpJSWxpbmV0eXBl
LAogICAgYl9wdXRfdGV4dCwgYl90ZXh0X2FuZ2xlLCBudWxsX2p1c3RpZnlfdGV4dCwgbGluZV9h
bmRfcG9pbnQsCiAgICBkb19hcnJvdywgc2V0X2ZvbnRfbnVsbCwgMCwgNAp9CiMgMzA3ICJ0ZXJt
LmgiIDIKCgojIDEgInRlcm0vaHBwai50cm0iIDEKIyA2NCAidGVybS9ocHBqLnRybSIKIyAxICJ0
ZXJtL2RyaXZlci5oIiAxCiMgNjUgInRlcm0vaHBwai50cm0iIDIKIyAyNTcgInRlcm0vaHBwai50
cm0iCix7CiAgICAiaHBwaiIsICJIUCBQYWludEpldCBhbmQgSFAzNjMwIFtGTlQ1WDkgRk5UOVgx
NyBGTlQxM1gyNV0iLAogICAgKDgqKHVuc2lnbmVkIGludCkoOS41ICogMTgwIC8gOC4wICsgMC45
KSksICg4ICogMTgwKSwKICAgIDIxLCAxMywgKDIxIC8gMiksICgxMyAvIDIpLAogICAgSFBQSm9w
dGlvbnMsIEhQUEppbml0LCBIUFBKcmVzZXQsIEhQUEp0ZXh0LCBudWxsX3NjYWxlLCBIUFBKZ3Jh
cGhpY3MsCiAgICBiX21vdmUsIGJfdmVjdG9yLCBIUFBKbGluZXR5cGUsIGJfcHV0X3RleHQsIGJf
dGV4dF9hbmdsZSwKICAgIG51bGxfanVzdGlmeV90ZXh0LCBkb19wb2ludCwgZG9fYXJyb3csIHNl
dF9mb250X251bGwsIDAsIDQKfQojIDMxMCAidGVybS5oIiAyCgoKIyAxICJ0ZXJtL2ltYWdlbi50
cm0iIDEKIyA2MyAidGVybS9pbWFnZW4udHJtIgojIDEgInRlcm0vZHJpdmVyLmgiIDEKIyA2NCAi
dGVybS9pbWFnZW4udHJtIiAyCiMgODU2ICJ0ZXJtL2ltYWdlbi50cm0iCix7CiAgICAiaW1hZ2Vu
IiwgIkltYWdlbiBsYXNlciBwcmludGVyIiwKICAgICgoMzAwKSAqIDExKSwgKCgzMDApICogNzgg
LyAxMCksICgxMio1KSwgKCgxMio1KS8yKSwKICAgICgyMCksICgyMCksIElNQUdFTl9vcHRpb25z
LCBJTUFHRU5faW5pdCwgSU1BR0VOX3Jlc2V0LAogICAgSU1BR0VOX3RleHQsIG51bGxfc2NhbGUs
IElNQUdFTl9ncmFwaGljcywgSU1BR0VOX21vdmUsCiAgICBJTUFHRU5fdmVjdG9yLCBJTUFHRU5f
bGluZXR5cGUsIElNQUdFTl9wdXRfdGV4dCwgSU1BR0VOX3RleHRfYW5nbGUsCiAgICBJTUFHRU5f
anVzdGlmeV90ZXh0LCBsaW5lX2FuZF9wb2ludCwgZG9fYXJyb3csIHNldF9mb250X251bGwKfQoj
IDMxMyAidGVybS5oIiAyCgoKCgoKIyAxICJ0ZXJtL21pZi50cm0iIDEKIyA5MCAidGVybS9taWYu
dHJtIgojIDEgInRlcm0vZHJpdmVyLmgiIDEKIyA5MSAidGVybS9taWYudHJtIiAyCiMgODQzICJ0
ZXJtL21pZi50cm0iCix7CiAgICAibWlmIiwgIkZyYW1lIG1ha2VyIE1JRiAzLjAwIGZvcm1hdCIs
CiAgICAxNTAwMCwgMTAwMDAsICgxMDAwMC8zMSksICgxNTAwMC85NSksCiAgICAoMTAwMDAvMTUw
KSwgKDE1MDAwLzIyNSksIE1JRl9vcHRpb25zLCBNSUZfaW5pdCwgTUlGX3Jlc2V0LAogICAgTUlG
X3RleHQsIG51bGxfc2NhbGUsIE1JRl9ncmFwaGljcywgTUlGX21vdmUsIE1JRl92ZWN0b3IsCiAg
ICBNSUZfbGluZXR5cGUsIE1JRl9wdXRfdGV4dCwgTUlGX3RleHRfYW5nbGUsCiAgICBNSUZfanVz
dGlmeV90ZXh0LCBNSUZfcG9pbnQsIGRvX2Fycm93LCBzZXRfZm9udF9udWxsCn0KIyAzMTkgInRl
cm0uaCIgMgoKCiMgMSAidGVybS9wYm0udHJtIiAxCiMgNjMgInRlcm0vcGJtLnRybSIKIyAxICJ0
ZXJtL2RyaXZlci5oIiAxCiMgNjQgInRlcm0vcGJtLnRybSIgMgojIDM4NiAidGVybS9wYm0udHJt
IgosewogICAgInBibSIsICJQb3J0YWJsZSBiaXRtYXAgW3NtYWxsIG1lZGl1bSBsYXJnZV0gW21v
bm9jaHJvbWUgZ3JheSBjb2xvcl0iLAogICAgKDY0MCksICg0ODApLCAoMTEpLAogICAgKDExKSwg
NSwgNSwgUEJNb3B0aW9ucywKICAgIFBCTWluaXQsIFBCTXJlc2V0LCBQQk10ZXh0LCBudWxsX3Nj
YWxlLAogICAgUEJNZ3JhcGhpY3MsIGJfbW92ZSwgYl92ZWN0b3IsIFBCTWxpbmV0eXBlLAogICAg
Yl9wdXRfdGV4dCwgYl90ZXh0X2FuZ2xlLCBudWxsX2p1c3RpZnlfdGV4dCwgUEJNcG9pbnQsCiAg
ICBkb19hcnJvdywgc2V0X2ZvbnRfbnVsbCwKICAgIDAsCiAgICAxIHwgNAp9CiMgMzIyICJ0ZXJt
LmgiIDIKCgoKIyAxICJ0ZXJtL3BuZy50cm0iIDEKIyA2NSAidGVybS9wbmcudHJtIgojIDEgInRl
cm0vZHJpdmVyLmgiIDEKIyA2NiAidGVybS9wbmcudHJtIiAyCiMgNDM2ICJ0ZXJtL3BuZy50cm0i
Cix7CiAgICAicG5nIiwKICAgICJQb3J0YWJsZSBOZXR3b3JrIEdyYXBoaWNzIFtzbWFsbCBtZWRp
dW0gbGFyZ2VdIFttb25vY2hyb21lIGdyYXkgY29sb3JdIiwKICAgICg2NDApLCAoNDgwKSwgKDEx
KSwKICAgICgxMSksIDUsIDUsIFBOR19vcHRpb25zLAogICAgUE5HX2luaXQsIFBOR19yZXNldCwg
UE5HX3RleHQsIG51bGxfc2NhbGUsCiAgICBQTkdfZ3JhcGhpY3MsIGJfbW92ZSwgYl92ZWN0b3Is
IFBOR19saW5ldHlwZSwKICAgIGJfcHV0X3RleHQsIGJfdGV4dF9hbmdsZSwgbnVsbF9qdXN0aWZ5
X3RleHQsIFBOR19wb2ludCwKICAgIGRvX2Fycm93LCBzZXRfZm9udF9udWxsLAogICAgMCwKICAg
IDEgfCA0Cn0KIyAzMjYgInRlcm0uaCIgMgoKCgojIDEgInRlcm0vcG9zdC50cm0iIDEKIyA2MCAi
dGVybS9wb3N0LnRybSIKIyAxICJ0ZXJtL2RyaXZlci5oIiAxCiMgNjEgInRlcm0vcG9zdC50cm0i
IDIKIyAxNjQ0ICJ0ZXJtL3Bvc3QudHJtIgosewoKICAgICAgInBvc3RzY3JpcHQiLAogICAgICAi
UG9zdFNjcmlwdCBncmFwaGljcyBsYW5ndWFnZSBbbW9kZSBcMDQyZm9udG5hbWVcMDQyIGZvbnRf
c2l6ZV0iLAogICAgICAgICAgIDcyMDAsIDUwNDAsICgxNCooMTApKSwgKDE0KigxMCkqNi8xMCks
CiAgICAgICAgICAgKDUwNDAvODApLCAoNTA0MC84MCksIFBTX29wdGlvbnMsIFBTX2luaXQsIFBT
X3Jlc2V0LAogICAgICAgICAgIFBTX3RleHQsIG51bGxfc2NhbGUsIFBTX2dyYXBoaWNzLCBQU19t
b3ZlLCBQU192ZWN0b3IsCiAgICAgICAgICAgUFNfbGluZXR5cGUsIFBTX3B1dF90ZXh0LCBQU190
ZXh0X2FuZ2xlLAogICAgICAgICAgIFBTX2p1c3RpZnlfdGV4dCwgUFNfcG9pbnQsIGRvX2Fycm93
LCBQU19zZXRfZm9udCwgUFNfcG9pbnRzaXplLAogICAgICAgICAgIDAgLCAwICwgMCAsIFBTX2Zp
bGxib3gsIFBTX2xpbmV3aWR0aAoKfQojIDMzMCAidGVybS5oIiAyCgoKIyAxICJ0ZXJtL3Ftcy50
cm0iIDEKIyA1NSAidGVybS9xbXMudHJtIgojIDEgInRlcm0vZHJpdmVyLmgiIDEKIyA1NiAidGVy
bS9xbXMudHJtIiAyCiMgMjA4ICJ0ZXJtL3Ftcy50cm0iCix7CiAgICAicW1zIiwgIlFNUy9RVUlD
IExhc2VyIHByaW50ZXIgKGFsc28gVGFsYXJpcyAxMjAwIGFuZCBvdGhlcnMpIiwKICAgIDkwMDAs
IDYwMDAsIDEyMCwgNzAsCiAgICA3MCwgNzAsIG9wdGlvbnNfbnVsbCwgUU1TX2luaXQsIFFNU19y
ZXNldCwKICAgIFFNU190ZXh0LCBudWxsX3NjYWxlLCBRTVNfZ3JhcGhpY3MsIFFNU19tb3ZlLCBR
TVNfdmVjdG9yLAogICAgUU1TX2xpbmV0eXBlLCBRTVNfcHV0X3RleHQsIG51bGxfdGV4dF9hbmds
ZSwKICAgIG51bGxfanVzdGlmeV90ZXh0LCBsaW5lX2FuZF9wb2ludCwgZG9fYXJyb3csIHNldF9m
b250X251bGwKfQojIDMzMyAidGVybS5oIiAyCgoKIyAxICJ0ZXJtL3RhYmxlLnRybSIgMQojIDMz
NiAidGVybS5oIiAyCgoKIyAxICJ0ZXJtL3RnaWYudHJtIiAxCiMgNjkgInRlcm0vdGdpZi50cm0i
CiMgMSAidGVybS9kcml2ZXIuaCIgMQojIDcwICJ0ZXJtL3RnaWYudHJtIiAyCiMgMTQxOCAidGVy
bS90Z2lmLnRybSIKLHsKInRnaWYiLAoiVEdJRiBYMTEgW21vZGVdIFt4LHldIFtkYXNoZWRdIFtc
MDQyZm9udFwwNDIgW2ZvbnRzaXplXV0iLAo5NTAsIDYzNCwgMTgsICgxOCo2LzEwKSwKKDYzNC84
MCksICg2MzQvODApLCBUR0lGX29wdGlvbnMsIFRHSUZfaW5pdCwgVEdJRl9yZXNldCwKVEdJRl90
ZXh0LCBudWxsX3NjYWxlLCBUR0lGX2dyYXBoaWNzLCBUR0lGX21vdmUsIFRHSUZfdmVjdG9yLApU
R0lGX2xpbmV0eXBlLCBUR0lGX3B1dF90ZXh0LCBUR0lGX3RleHRfYW5nbGUsClRHSUZfanVzdGlm
eV90ZXh0LCBUR0lGX3BvaW50LCBUR0lGX2Fycm93LCBUR0lGX3NldF9mb250LApUR0lGX3NldF9w
b2ludHNpemUsIDEKCn0KIyAzMzkgInRlcm0uaCIgMgoKCiMgMSAidGVybS90a2NhbnZhcy50cm0i
IDEKIyA3NSAidGVybS90a2NhbnZhcy50cm0iCiMgMSAidGVybS9kcml2ZXIuaCIgMQojIDc2ICJ0
ZXJtL3RrY2FudmFzLnRybSIgMgojIDU2OSAidGVybS90a2NhbnZhcy50cm0iCix7CiAgICAidGtj
YW52YXMiLCAiVGsvVGNsIGNhbnZhcyB3aWRnZXQgW3Blcmx0a10gW2ludGVyYWN0aXZlXSIsCiAg
ICAxMDAwLCAxMDAwLCAoMjUpLCAoMTYpLAogICAgKDE4KSwgKDE4KSwgVEtfb3B0aW9ucywgVEtf
aW5pdCwgVEtfcmVzZXQsCiAgICBUS190ZXh0LCBudWxsX3NjYWxlLCBUS19ncmFwaGljcywgVEtf
bW92ZSwgVEtfdmVjdG9yLAogICAgVEtfbGluZXR5cGUsIFRLX3B1dF90ZXh0LCBudWxsX3RleHRf
YW5nbGUsCiAgICBUS19qdXN0aWZ5X3RleHQsIGRvX3BvaW50LCBkb19hcnJvdywgVEtfc2V0X2Zv
bnQsCiAgICAoKHZvaWQgKikwKSwgMCwgKCh2b2lkICopMCksICgodm9pZCAqKTApLCAoKHZvaWQg
KikwKSwgVEtfbGluZXdpZHRoCn0KIyAzNDIgInRlcm0uaCIgMgojIDM2NCAidGVybS5oIgojIDEg
InRlcm0vZXBzb24udHJtIiAxCiMgNTggInRlcm0vZXBzb24udHJtIgojIDEgInRlcm0vZHJpdmVy
LmgiIDEKIyA1OSAidGVybS9lcHNvbi50cm0iIDIKIyA3NDAgInRlcm0vZXBzb24udHJtIgosewog
ICAgImVwc29uXzE4MGRwaSIsICJFcHNvbiBMUS1zdHlsZSAxODAtZG90IHBlciBpbmNoICgyNCBw
aW4pIHByaW50ZXJzIiwKICAgIDEyNjAsIDEwODAsIDMxLCAxOSwKICAgIDE4LCAxOCwgb3B0aW9u
c19udWxsLCBFUFNPTmluaXQsIEVQU09OcmVzZXQsCiAgICBFUFMxODB0ZXh0LCBudWxsX3NjYWxl
LCBFUFMxODBncmFwaGljcywgYl9tb3ZlLCBiX3ZlY3RvciwKICAgIGJfc2V0bGluZXR5cGUsIGJf
cHV0X3RleHQsIGJfdGV4dF9hbmdsZSwKICAgIG51bGxfanVzdGlmeV90ZXh0LCBkb19wb2ludCwg
ZG9fYXJyb3csIHNldF9mb250X251bGwsIDAsIDQKfQoKCgoKCgosewogICAgImVwc29uXzYwZHBp
IiwgIkVwc29uLXN0eWxlIDYwLWRvdCBwZXIgaW5jaCBwcmludGVycyIsCiAgICA0ODAsIDM2MCwg
MTEsIDcsCiAgICA2LCA2LCBvcHRpb25zX251bGwsIEVQU09OaW5pdCwgRVBTT05yZXNldCwKICAg
IEVQUzYwdGV4dCwgbnVsbF9zY2FsZSwgRVBTNjBncmFwaGljcywgYl9tb3ZlLCBiX3ZlY3RvciwK
ICAgIGJfc2V0bGluZXR5cGUsIGJfcHV0X3RleHQsIGJfdGV4dF9hbmdsZSwKICAgIG51bGxfanVz
dGlmeV90ZXh0LCBkb19wb2ludCwgZG9fYXJyb3csIHNldF9mb250X251bGwsIDAsIDQKfQoKCgoK
CgosewogICAgImVwc29uX2x4ODAwIiwgIkVwc29uIExYLTgwMCwgU3RhciBOTC0xMCwgTlgtMTAw
MCwgUFJPUFJJTlRFUiAuLi4iLAogICAgNTEyLCAzODQsIDExLCA3LAogICAgNiwgNiwgb3B0aW9u
c19udWxsLCBFUFNPTmluaXQsIEVQU09OcmVzZXQsCiAgICBFUFNPTnRleHQsIG51bGxfc2NhbGUs
IEVQU09OZ3JhcGhpY3MsIGJfbW92ZSwgYl92ZWN0b3IsCiAgICBiX3NldGxpbmV0eXBlLCBiX3B1
dF90ZXh0LCBiX3RleHRfYW5nbGUsCiAgICBudWxsX2p1c3RpZnlfdGV4dCwgbGluZV9hbmRfcG9p
bnQsIGRvX2Fycm93LCBzZXRfZm9udF9udWxsLCAwLCA0Cn0KCgoKCgoKICAgICx7CiAgICAibmVj
X2NwNiIsICJORUMgcHJpbnRlciBDUDYsIEVwc29uIExRLTgwMCBbbW9ub2Nyb21lIGNvbG9yIGRy
YWZ0XSIsCiAgICA0MDAsIDMyMCwgMTEsIDcsCiAgICA2LCA2LCBORUNvcHRpb25zLCBORUNpbml0
LCBORUNyZXNldCwKICAgIE5FQ3RleHQsIG51bGxfc2NhbGUsIE5FQ2dyYXBoaWNzLCBiX21vdmUs
IGJfdmVjdG9yLAogICAgTkVDbGluZXR5cGUsIGJfcHV0X3RleHQsIGJfdGV4dF9hbmdsZSwKICAg
IG51bGxfanVzdGlmeV90ZXh0LCBsaW5lX2FuZF9wb2ludCwgZG9fYXJyb3csIHNldF9mb250X251
bGwsIDAsIDQKfQoKCgoKCgosewogICAgIm9raWRhdGEiLCAiT0tJREFUQSAzMjAvMzIxIFN0YW5k
YXJkIiwKICAgIDQ4MCwgMzYwLCAxMSwgNywKICAgIDYsIDYsIG9wdGlvbnNfbnVsbCwgRVBTT05p
bml0LCBFUFNPTnJlc2V0LAogICAgT0tJREFUQXRleHQsIG51bGxfc2NhbGUsIEVQUzYwZ3JhcGhp
Y3MsIGJfbW92ZSwgYl92ZWN0b3IsCiAgICBiX3NldGxpbmV0eXBlLCBiX3B1dF90ZXh0LCBiX3Rl
eHRfYW5nbGUsCiAgICBudWxsX2p1c3RpZnlfdGV4dCwgZG9fcG9pbnQsIGRvX2Fycm93LCBzZXRf
Zm9udF9udWxsLCAwLCA0Cn0KCgoKCgoKLHsKICAgICJzdGFyYyIsICJTdGFyIENvbG9yIFByaW50
ZXIiLAogICAgNTEyLCAzODQsIDExLCA3LAogICAgNiwgNiwgb3B0aW9uc19udWxsLCBTVEFSQ2lu
aXQsIFNUQVJDcmVzZXQsCiAgICBTVEFSQ3RleHQsIG51bGxfc2NhbGUsIFNUQVJDZ3JhcGhpY3Ms
IGJfbW92ZSwgYl92ZWN0b3IsCiAgICBTVEFSQ2xpbmV0eXBlLCBiX3B1dF90ZXh0LCBiX3RleHRf
YW5nbGUsCiAgICBudWxsX2p1c3RpZnlfdGV4dCwgbGluZV9hbmRfcG9pbnQsIGRvX2Fycm93LCBz
ZXRfZm9udF9udWxsLCAwLCA0Cn0KCgoKCgoKLHsKICAgICJ0YW5keV82MGRwaSIsICJUYW5keSBE
TVAtMTMwIHNlcmllcyA2MC1kb3QgcGVyIGluY2ggZ3JhcGhpY3MiLAogICAgNDgwLCAzNjAsIDEx
LCA3LAogICAgNiwgNiwgb3B0aW9uc19udWxsLCBFUFNPTmluaXQsIEVQU09OcmVzZXQsCiAgICBU
QU5EWTYwdGV4dCwgbnVsbF9zY2FsZSwgRVBTNjBncmFwaGljcywgYl9tb3ZlLCBiX3ZlY3RvciwK
ICAgIGJfc2V0bGluZXR5cGUsIGJfcHV0X3RleHQsIGJfdGV4dF9hbmdsZSwKICAgIG51bGxfanVz
dGlmeV90ZXh0LCBkb19wb2ludCwgZG9fYXJyb3csIHNldF9mb250X251bGwsIDAsIDQKfQojIDM2
NSAidGVybS5oIiAyCgoKCgoKCgojIDEgInRlcm0vbGF0ZXgudHJtIiAxCiMgNzcgInRlcm0vbGF0
ZXgudHJtIgojIDEgInRlcm0vZHJpdmVyLmgiIDEKIyA3OCAidGVybS9sYXRleC50cm0iIDIKIyA3
OTQgInRlcm0vbGF0ZXgudHJtIgosewogICAgImxhdGV4IiwgIkxhVGVYIHBpY3R1cmUgZW52aXJv
bm1lbnQiLAogICAgKDUqKDMwMCkpLCAoMyooMzAwKSksICgoMzAwKSoxMS83MiksICgoMzAwKSo1
My8xMC83MiksCiAgICAoNSooMzAwKS83MiksICg1KigzMDApLzcyKSwgTEFURVhfb3B0aW9ucywg
TEFURVhfaW5pdCwgTEFURVhfcmVzZXQsCiAgICBMQVRFWF90ZXh0LCBudWxsX3NjYWxlLCBMQVRF
WF9ncmFwaGljcywgTEFURVhfbW92ZSwgTEFURVhfdmVjdG9yLAogICAgTEFURVhfbGluZXR5cGUs
IExBVEVYX3B1dF90ZXh0LCBMQVRFWF90ZXh0X2FuZ2xlLAogICAgTEFURVhfanVzdGlmeV90ZXh0
LCBMQVRFWF9wb2ludCwgTEFURVhfYXJyb3csIHNldF9mb250X251bGwKfQoKCgoKCgosewogICAg
ImVtdGV4IiwgIkxhVGVYIHBpY3R1cmUgZW52aXJvbm1lbnQgd2l0aCBlbVRlWCBzcGVjaWFscyIs
CiAgICAoNSooMzAwKSksICgzKigzMDApKSwgKCgzMDApKjExLzcyKSwgKCgzMDApKjUzLzEwLzcy
KSwKICAgICg1KigzMDApLzcyKSwgKDUqKDMwMCkvNzIpLCBMQVRFWF9vcHRpb25zLCBFTVRFWF9p
bml0LCBFTVRFWF9yZXNldCwKICAgIEVNVEVYX3RleHQsIG51bGxfc2NhbGUsIExBVEVYX2dyYXBo
aWNzLCBMQVRFWF9tb3ZlLCBMQVRFWF92ZWN0b3IsCiAgICBMQVRFWF9saW5ldHlwZSwgTEFURVhf
cHV0X3RleHQsIExBVEVYX3RleHRfYW5nbGUsCiAgICBMQVRFWF9qdXN0aWZ5X3RleHQsIExBVEVY
X3BvaW50LCBMQVRFWF9hcnJvdywgc2V0X2ZvbnRfbnVsbAp9CiMgMzczICJ0ZXJtLmgiIDIKCgoj
IDEgInRlcm0vcHNsYXRleC50cm0iIDEKIyA1MiAidGVybS9wc2xhdGV4LnRybSIKIyAxICJ0ZXJt
L2RyaXZlci5oIiAxCiMgNTMgInRlcm0vcHNsYXRleC50cm0iIDIKIyA1NTggInRlcm0vcHNsYXRl
eC50cm0iCiMgMSAidGVybS9wb3N0LnRybSIgMQojIDYwICJ0ZXJtL3Bvc3QudHJtIgojIDEgInRl
cm0vZHJpdmVyLmgiIDEKIyA2MSAidGVybS9wb3N0LnRybSIgMgojIDU1OSAidGVybS9wc2xhdGV4
LnRybSIgMgoKCgosewogICAgInBzbGF0ZXgiLCAiTGFUZVggcGljdHVyZSBlbnZpcm9ubWVudCB3
aXRoIFBvc3RTY3JpcHQgXFxzcGVjaWFscyIsCiAgICAoNSo3MjApLCAoMyo3MjApLCAoMTAwKSwg
KDUwKSwKICAgICg1MDQwLzgwKSwgKDUwNDAvODApLCBQU0xBVEVYX29wdGlvbnMsIFBTTEFURVhf
aW5pdCwgUFNMQVRFWF9yZXNldCwKICAgIFBTTEFURVhfdGV4dCwgbnVsbF9zY2FsZSwgUFNMQVRF
WF9ncmFwaGljcywgUFNMQVRFWF9tb3ZlLAogICAgUFNMQVRFWF92ZWN0b3IsIFBTTEFURVhfbGlu
ZXR5cGUsIFBTTEFURVhfcHV0X3RleHQsIFBTTEFURVhfdGV4dF9hbmdsZSwKICAgIFBTTEFURVhf
anVzdGlmeV90ZXh0LCBQU0xBVEVYX3BvaW50LCBkb19hcnJvdywgc2V0X2ZvbnRfbnVsbCwKICAg
IFBTTEFURVhfcG9pbnRzaXplLCAwICwgMAogICAgLCAwICwgMCAsCiAgICBQU0xBVEVYX2xpbmV3
aWR0aAp9CgoKCix7CiAgICAicHN0ZXgiLCAicGxhaW4gVGVYIHdpdGggUG9zdFNjcmlwdCBcXHNw
ZWNpYWxzIiwKICAgICg1KjcyMCksICgzKjcyMCksICgxMDApLCAoNTApLAogICAgKDUwNDAvODAp
LCAoNTA0MC84MCksIFBTTEFURVhfb3B0aW9ucywgUFNMQVRFWF9pbml0LCBQU0xBVEVYX3Jlc2V0
LAogICAgUFNMQVRFWF90ZXh0LCBudWxsX3NjYWxlLCBQU0xBVEVYX2dyYXBoaWNzLCBQU0xBVEVY
X21vdmUsCiAgICBQU0xBVEVYX3ZlY3RvciwgUFNMQVRFWF9saW5ldHlwZSwgUFNMQVRFWF9wdXRf
dGV4dCwgUFNMQVRFWF90ZXh0X2FuZ2xlLAogICAgUFNMQVRFWF9qdXN0aWZ5X3RleHQsIFBTTEFU
RVhfcG9pbnQsIGRvX2Fycm93LCBzZXRfZm9udF9udWxsLAogICAgUFNMQVRFWF9wb2ludHNpemUs
IDAgLCAwCiAgICAsIDAgLCAwICwKICAgIFBTTEFURVhfbGluZXdpZHRoCn0KIyAzNzYgInRlcm0u
aCIgMgoKCiMgMSAidGVybS9lZXBpYy50cm0iIDEKIyA2NyAidGVybS9lZXBpYy50cm0iCiMgMSAi
dGVybS9kcml2ZXIuaCIgMQojIDY4ICJ0ZXJtL2VlcGljLnRybSIgMgojIDM1NyAidGVybS9lZXBp
Yy50cm0iCix7CiAgICAiZWVwaWMiLCAiRUVQSUMgLS0gZXh0ZW5kZWQgTGFUZVggcGljdHVyZSBl
bnZpcm9ubWVudCIsCiAgICAoNSooMzAwKSksICgzKigzMDApKSwgKCgzMDApKjExLzcyKSwgKCgz
MDApKjUzLzEwLzcyKSwKICAgICg1KigzMDApLzcyKSwgKDUqKDMwMCkvNzIpLCBvcHRpb25zX251
bGwsIEVFUElDX2luaXQsIEVFUElDX3Jlc2V0LAogICAgRUVQSUNfdGV4dCwgbnVsbF9zY2FsZSwg
RUVQSUNfZ3JhcGhpY3MsIEVFUElDX21vdmUsIEVFUElDX3ZlY3RvciwKICAgIEVFUElDX2xpbmV0
eXBlLCBFRVBJQ19wdXRfdGV4dCwgRUVQSUNfdGV4dF9hbmdsZSwKICAgIEVFUElDX2p1c3RpZnlf
dGV4dCwgRUVQSUNfcG9pbnQsIEVFUElDX2Fycm93LCBzZXRfZm9udF9udWxsCn0KIyAzNzkgInRl
cm0uaCIgMgoKCiMgMSAidGVybS90cGljLnRybSIgMQojIDgyICJ0ZXJtL3RwaWMudHJtIgojIDEg
InRlcm0vZHJpdmVyLmgiIDEKIyA4MyAidGVybS90cGljLnRybSIgMgojIDkxMyAidGVybS90cGlj
LnRybSIKLHsKICAgICJ0cGljIiwgIlRQSUMgLS0gTGFUZVggcGljdHVyZSBlbnZpcm9ubWVudCB3
aXRoIHRwaWMgXFxzcGVjaWFscyIsCiAgICAodW5zaWduZWQgaW50KSAoNSAvIDAuMDAxKSwgKHVu
c2lnbmVkIGludCkgKDMgLyAwLjAwMSksICh1bnNpZ25lZCBpbnQpICgxMS4wIC8gKDcyLjI3ICog
MC4wMDEpKSwgKHVuc2lnbmVkIGludCkgKCA1LjMgLyAoNzIuMjcgKiAwLjAwMSkpLAogICAgKHVu
c2lnbmVkIGludCkgKCA1LjAgLyAoNzIuMjcgKiAwLjAwMSkpLCAodW5zaWduZWQgaW50KSAoIDUu
MCAvICg3Mi4yNyAqIDAuMDAxKSksIFRQSUNfb3B0aW9ucywgVFBJQ19pbml0LCBUUElDX3Jlc2V0
LAogICAgVFBJQ190ZXh0LCBudWxsX3NjYWxlLCBUUElDX2dyYXBoaWNzLCBUUElDX21vdmUsIFRQ
SUNfdmVjdG9yLAogICAgVFBJQ19saW5ldHlwZSwgVFBJQ19wdXRfdGV4dCwgVFBJQ190ZXh0X2Fu
Z2xlLAogICAgVFBJQ19qdXN0aWZ5X3RleHQsIFRQSUNfcG9pbnQsIFRQSUNfYXJyb3csIHNldF9m
b250X251bGwKfQojIDM4MiAidGVybS5oIiAyCgoKIyAxICJ0ZXJtL3BzdHJpY2tzLnRybSIgMQoj
IDgwICJ0ZXJtL3BzdHJpY2tzLnRybSIKIyAxICJ0ZXJtL2RyaXZlci5oIiAxCiMgODEgInRlcm0v
cHN0cmlja3MudHJtIiAyCiMgNTQ3ICJ0ZXJtL3BzdHJpY2tzLnRybSIKLHsKICAgICJwc3RyaWNr
cyIsICJMYVRlWCBwaWN0dXJlIGVudmlyb25tZW50IHdpdGggUFNUcmlja3MgbWFjcm9zIiwKICAg
IDEwMDAwLjAsIDEwMDAwLjAsIDQyMCwgMTYwLAogICAgMjAwLCAxNTAsIFBTVFJJQ0tTX29wdGlv
bnMsIFBTVFJJQ0tTX2luaXQsIFBTVFJJQ0tTX3Jlc2V0LAogICAgUFNUUklDS1NfdGV4dCwgbnVs
bF9zY2FsZSwgUFNUUklDS1NfZ3JhcGhpY3MsIFBTVFJJQ0tTX21vdmUsIFBTVFJJQ0tTX3ZlY3Rv
ciwKICAgIFBTVFJJQ0tTX2xpbmV0eXBlLCBQU1RSSUNLU19wdXRfdGV4dCwgUFNUUklDS1NfdGV4
dF9hbmdsZSwKICAgIFBTVFJJQ0tTX2p1c3RpZnlfdGV4dCwgUFNUUklDS1NfcG9pbnQsIFBTVFJJ
Q0tTX2Fycm93LCBzZXRfZm9udF9udWxsCn0KIyAzODUgInRlcm0uaCIgMgoKCiMgMSAidGVybS90
ZXhkcmF3LnRybSIgMQojIDU4ICJ0ZXJtL3RleGRyYXcudHJtIgojIDEgInRlcm0vZHJpdmVyLmgi
IDEKIyA1OSAidGVybS90ZXhkcmF3LnRybSIgMgojIDM0NiAidGVybS90ZXhkcmF3LnRybSIKLHsK
ICAgICJ0ZXhkcmF3IiwKICAgICJMYVRlWCB0ZXhkcmF3IGVudmlyb25tZW50IiwKICAgICg1Kigz
MDApKSwgKDMqKDMwMCkpLCAoKDMwMCkqMTEvNzIpLCAoKDMwMCkqNTMvMTAvNzIpLAogICAgKDUq
KDMwMCkvNzIpLCAoNSooMzAwKS83MiksIG9wdGlvbnNfbnVsbCwgVEVYRFJBV19pbml0LCBURVhE
UkFXX3Jlc2V0LAogICAgVEVYRFJBV190ZXh0LCBudWxsX3NjYWxlLCBURVhEUkFXX2dyYXBoaWNz
LCBURVhEUkFXX21vdmUsIFRFWERSQVdfdmVjdG9yLAogICAgVEVYRFJBV19saW5ldHlwZSwgVEVY
RFJBV19wdXRfdGV4dCwgVEVYRFJBV190ZXh0X2FuZ2xlLAogICAgVEVYRFJBV19qdXN0aWZ5X3Rl
eHQsIFRFWERSQVdfcG9pbnQsIFRFWERSQVdfYXJyb3csIHNldF9mb250X251bGwKfQojIDM4OCAi
dGVybS5oIiAyCgoKIyAxICJ0ZXJtL21ldGFmb250LnRybSIgMQojIDcwICJ0ZXJtL21ldGFmb250
LnRybSIKIyAxICJ0ZXJtL2RyaXZlci5oIiAxCiMgNzEgInRlcm0vbWV0YWZvbnQudHJtIiAyCiMg
NTA3ICJ0ZXJtL21ldGFmb250LnRybSIKLHsKICAgICJtZiIsICJNZXRhZm9udCBwbG90dGluZyBz
dGFuZGFyZCIsCiAgICAoNS4wKigzMDApKSwgKDMuMCooMzAwKSksICgoMzAwKSoxMS83MiksICgo
MzAwKSo1My8xMC83MiksCiAgICAoNSooMzAwKS83MiksICg1KigzMDApLzcyKSwgb3B0aW9uc19u
dWxsLCBNRl9pbml0LCBNRl9yZXNldCwKICAgIE1GX3RleHQsIG51bGxfc2NhbGUsIE1GX2dyYXBo
aWNzLCBNRl9tb3ZlLCBNRl92ZWN0b3IsCiAgICBNRl9saW5ldHlwZSwgTUZfcHV0X3RleHQsIE1G
X3RleHRfYW5nbGUsCiAgICBNRl9qdXN0aWZ5X3RleHQsIGxpbmVfYW5kX3BvaW50LCBNRl9hcnJv
dywgc2V0X2ZvbnRfbnVsbAp9CiMgMzkxICJ0ZXJtLmgiIDIKCgojIDEgInRlcm0vbWV0YXBvc3Qu
dHJtIiAxCiMgNTcgInRlcm0vbWV0YXBvc3QudHJtIgojIDEgInRlcm0vZHJpdmVyLmgiIDEKIyA1
OCAidGVybS9tZXRhcG9zdC50cm0iIDIKIyA2NDAgInRlcm0vbWV0YXBvc3QudHJtIgosewogICAg
Im1wIiwgIk1ldGFQb3N0IHBsb3R0aW5nIHN0YW5kYXJkIiwKICAgICg1LjAqKDMwMCkpLCAoMy4w
KigzMDApKSwgKCgzMDApKjExLzcyKSwgKCgzMDApKjUzLzEwLzcyKSwKICAgICg1KigzMDApLzcy
KSwgKDUqKDMwMCkvNzIpLCBNUF9vcHRpb25zLCBNUF9pbml0LCBNUF9yZXNldCwKICAgIE1QX3Rl
eHQsIG51bGxfc2NhbGUsIE1QX2dyYXBoaWNzLCBNUF9tb3ZlLCBNUF92ZWN0b3IsCiAgICBNUF9s
aW5ldHlwZSwgTVBfcHV0X3RleHQsIE1QX3RleHRfYW5nbGUsCiAgICBNUF9qdXN0aWZ5X3RleHQs
IE1QX3BvaW50LCBNUF9hcnJvdywgTVBfc2V0X2ZvbnQsIE1QX3BvaW50c2l6ZSwKICAgIDAsIDAs
IDAsIE1QX2JveGZpbGwsIE1QX2xpbmV3aWR0aAogICAgfQojIDM5NCAidGVybS5oIiAyCiMgODE3
ICJ0ZXJtLmMiIDIKCn07CgoKCgpfX2lubGluZV9fIGludAp0ZXJtX2NvdW50KCkKewogICAgcmV0
dXJuIChzaXplb2YodGVybV90YmwpL3NpemVvZihzdHJ1Y3QgVEVSTUVOVFJZKSk7Cn0KCnZvaWQg
bGlzdF90ZXJtcygpCnsKICAgIHJlZ2lzdGVyIGludCBpOwogICAgY2hhciBsaW5lX2J1ZmZlcls4
MTkyXTsKCiAgICBTdGFydE91dHB1dCgpOwogICAgc3ByaW50ZihsaW5lX2J1ZmZlciwiXG5BdmFp
bGFibGUgdGVybWluYWwgdHlwZXM6XG4iKTsKICAgIE91dExpbmUobGluZV9idWZmZXIpOwoKICAg
IGZvciAoaSA9IDA7IGkgPCAoc2l6ZW9mKHRlcm1fdGJsKS9zaXplb2Yoc3RydWN0IFRFUk1FTlRS
WSkpOyBpKyspIHsKICAgICAgICBzcHJpbnRmKGxpbmVfYnVmZmVyLCIgICUxNXMgICVzXG4iLAog
ICAgICAgICAgICAgICAgdGVybV90YmxbaV0ubmFtZSwgdGVybV90YmxbaV0uZGVzY3JpcHRpb24p
OwogICAgICAgIE91dExpbmUobGluZV9idWZmZXIpOwogICAgfQoKICAgIEVuZE91dHB1dCgpOwp9
CgoKCgoKc3RydWN0IFRFUk1FTlRSWSAqCiBzZXRfdGVybShjX3Rva2VuX2FyZykKaW50IGNfdG9r
ZW5fYXJnOwp7CiAgICByZWdpc3RlciBzdHJ1Y3QgVEVSTUVOVFJZICp0ID0gKCh2b2lkICopMCk7
CiAgICBjaGFyICppbnB1dF9uYW1lOwoKICAgIGlmICghdG9rZW5bY190b2tlbl9hcmddLmlzX3Rv
a2VuKQogICAgICAgIGludF9lcnJvcigidGVybWluYWwgbmFtZSBleHBlY3RlZCIsIGNfdG9rZW5f
YXJnKTsKICAgIGlucHV0X25hbWUgPSBpbnB1dF9saW5lICsgdG9rZW5bY190b2tlbl9hcmddLnN0
YXJ0X2luZGV4OwogICAgdCA9IGNoYW5nZV90ZXJtKGlucHV0X25hbWUsIHRva2VuW2NfdG9rZW5f
YXJnXS5sZW5ndGgpOwogICAgaWYgKCF0KQogICAgICAgIGludF9lcnJvcigidW5rbm93biBvciBh
bWJpZ3VvdXMgdGVybWluYWwgdHlwZTsgdHlwZSBqdXN0ICdzZXQgdGVybWluYWwnIGZvciBhIGxp
c3QiLAogICAgICAgICAgICAgICAgICBjX3Rva2VuX2FyZyk7CgoKCiAgICByZXR1cm4gKHQpOwp9
CgoKCgoKCnN0cnVjdCBURVJNRU5UUlkgKgogY2hhbmdlX3Rlcm0obmFtZSwgbGVuZ3RoKQpjaGFy
ICpuYW1lOwppbnQgbGVuZ3RoOwp7CiAgICBpbnQgaTsKICAgIHN0cnVjdCBURVJNRU5UUlkgKnQg
PSAoKHZvaWQgKikwKTsKCiAgICBmb3IgKGkgPSAwOyBpIDwgKHNpemVvZih0ZXJtX3RibCkvc2l6
ZW9mKHN0cnVjdCBURVJNRU5UUlkpKTsgaSsrKSB7CiAgICAgICAgaWYgKCEoX19leHRlbnNpb25f
XyAoX19idWlsdGluX2NvbnN0YW50X3AgKGxlbmd0aCkgJiYgKChfX2J1aWx0aW5fY29uc3RhbnRf
cCAobmFtZSkgJiYgc3RybGVuIChuYW1lKSA8ICgoc2l6ZV90KSAobGVuZ3RoKSkpIHx8IChfX2J1
aWx0aW5fY29uc3RhbnRfcCAodGVybV90YmxbaV0ubmFtZSkgJiYgc3RybGVuICh0ZXJtX3RibFtp
XS5uYW1lKSA8ICgoc2l6ZV90KSAobGVuZ3RoKSkpKSA/IF9fZXh0ZW5zaW9uX18gKHsgc2l6ZV90
IF9fczFfbGVuLCBfX3MyX2xlbjsgKF9fYnVpbHRpbl9jb25zdGFudF9wIChuYW1lKSAmJiBfX2J1
aWx0aW5fY29uc3RhbnRfcCAodGVybV90YmxbaV0ubmFtZSkgJiYgKF9fczFfbGVuID0gc3RybGVu
IChuYW1lKSwgX19zMl9sZW4gPSBzdHJsZW4gKHRlcm1fdGJsW2ldLm5hbWUpLCAoISgoc2l6ZV90
KShjb25zdCB2b2lkICopKChuYW1lKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKShuYW1l
KSA9PSAxKSB8fCBfX3MxX2xlbiA+PSA0KSAmJiAoISgoc2l6ZV90KShjb25zdCB2b2lkICopKCh0
ZXJtX3RibFtpXS5uYW1lKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSh0ZXJtX3RibFtp
XS5uYW1lKSA9PSAxKSB8fCBfX3MyX2xlbiA+PSA0KSkgPyBtZW1jbXAgKChfX2NvbnN0IGNoYXIg
KikgKG5hbWUpLCAoX19jb25zdCBjaGFyICopICh0ZXJtX3RibFtpXS5uYW1lKSwgKF9fczFfbGVu
IDwgX19zMl9sZW4gPyBfX3MxX2xlbiA6IF9fczJfbGVuKSArIDEpIDogKF9fYnVpbHRpbl9jb25z
dGFudF9wIChuYW1lKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgobmFtZSkgKyAxKSAtIChz
aXplX3QpKGNvbnN0IHZvaWQgKikobmFtZSkgPT0gMSkgJiYgKF9fczFfbGVuID0gc3RybGVuIChu
YW1lKSwgX19zMV9sZW4gPCA0KSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCAodGVybV90YmxbaV0u
bmFtZSkgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKHRlcm1fdGJsW2ldLm5hbWUpICsgMSkg
LSAoc2l6ZV90KShjb25zdCB2b2lkICopKHRlcm1fdGJsW2ldLm5hbWUpID09IDEpID8gKF9fZXh0
ZW5zaW9uX18gKHsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBj
aGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBj
aGFyICopIChfX2NvbnN0IGNoYXIgKikodGVybV90YmxbaV0ubmFtZSkpWzBdKTsgaWYgKF9fczFf
bGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25l
ZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVsxXSAtICgoX19jb25zdCB1bnNpZ25l
ZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHRlcm1fdGJsW2ldLm5hbWUpKVsxXSk7IGlmIChf
X3MxX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5z
aWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1lKSlbMl0gLSAoKF9fY29uc3QgdW5z
aWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICh0ZXJtX3RibFtpXS5uYW1lKSlbMl0pOyBp
ZiAoX19zMV9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgoX19jb25zdCB1
bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVszXSAtICgoX19jb25zdCB1
bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHRlcm1fdGJsW2ldLm5hbWUpKVszXSk7
IH0gfSBfX3Jlc3VsdDsgfSkpIDogKF9fZXh0ZW5zaW9uX18gKHsgX19jb25zdCB1bnNpZ25lZCBj
aGFyICpfX3MyID0gKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICh0
ZXJtX3RibFtpXS5uYW1lKTsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNp
Z25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVswXSAtIF9fczJbMF0pOyBpZiAo
X19zMV9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVu
c2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzFdIC0gX19zMlsxXSk7IGlm
IChfX3MxX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3Qg
dW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1lKSlbMl0gLSBfX3MyWzJdKTsg
aWYgKF9fczFfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29uc3Qg
dW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1lKSlbM10gLSBfX3MyWzNdKTsg
fSB9IF9fcmVzdWx0OyB9KSkpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wICh0ZXJtX3RibFtpXS5u
YW1lKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgodGVybV90YmxbaV0ubmFtZSkgKyAxKSAt
IChzaXplX3QpKGNvbnN0IHZvaWQgKikodGVybV90YmxbaV0ubmFtZSkgPT0gMSkgJiYgKF9fczJf
bGVuID0gc3RybGVuICh0ZXJtX3RibFtpXS5uYW1lKSwgX19zMl9sZW4gPCA0KSA/IChfX2J1aWx0
aW5fY29uc3RhbnRfcCAobmFtZSkgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKG5hbWUpICsg
MSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKG5hbWUpID09IDEpID8gKF9fZXh0ZW5zaW9uX18g
KHsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf
X2NvbnN0IGNoYXIgKikgKG5hbWUpKVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf
X2NvbnN0IGNoYXIgKikodGVybV90YmxbaV0ubmFtZSkpWzBdKTsgaWYgKF9fczJfbGVuID4gMCAm
JiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVsxXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikgKHRlcm1fdGJsW2ldLm5hbWUpKVsxXSk7IGlmIChfX3MyX2xlbiA+
IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hh
ciAqKSAoX19jb25zdCBjaGFyICopIChuYW1lKSlbMl0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hh
ciAqKSAoX19jb25zdCBjaGFyICopICh0ZXJtX3RibFtpXS5uYW1lKSlbMl0pOyBpZiAoX19zMl9s
ZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBj
aGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBj
aGFyICopIChfX2NvbnN0IGNoYXIgKikgKHRlcm1fdGJsW2ldLm5hbWUpKVszXSk7IH0gfSBfX3Jl
c3VsdDsgfSkpIDogKF9fZXh0ZW5zaW9uX18gKHsgX19jb25zdCB1bnNpZ25lZCBjaGFyICpfX3Mx
ID0gKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1lKTsgcmVn
aXN0ZXIgaW50IF9fcmVzdWx0ID0gX19zMVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikgKHRlcm1fdGJsW2ldLm5hbWUpKVswXTsgaWYgKF9fczJfbGVuID4g
MCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKF9fczFbMV0gLSAoKF9fY29uc3QgdW5z
aWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICh0ZXJtX3RibFtpXS5uYW1lKSlbMV0pOyBp
ZiAoX19zMl9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoX19zMVsyXSAt
ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHRlcm1fdGJsW2ld
Lm5hbWUpKVsyXSk7IGlmIChfX3MyX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQg
PSAoX19zMVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KHRlcm1fdGJsW2ldLm5hbWUpKVszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpKSA6IHN0cmNtcCAobmFt
ZSwgdGVybV90YmxbaV0ubmFtZSkpKSk7IH0pIDogc3RybmNtcCAobmFtZSwgdGVybV90YmxbaV0u
bmFtZSwgbGVuZ3RoKSkpKSB7CiAgICAgICAgICAgIGlmICh0KQogICAgICAgICAgICAgICAgcmV0
dXJuICgoKHZvaWQgKikwKSk7CiAgICAgICAgICAgIHQgPSB0ZXJtX3RibCArIGk7CiAgICAgICAg
fQogICAgfQoKICAgIGlmICghdCkKICAgICAgICByZXR1cm4gKCgodm9pZCAqKTApKTsKCgoKICAg
IHRlcm0gPSB0OwogICAgdGVybV9pbml0aWFsaXNlZCA9IDA7CiAgICBuYW1lID0gdGVybS0+bmFt
ZTsKCiAgICBpZiAodGVybS0+c2NhbGUgIT0gbnVsbF9zY2FsZSkKICAgICAgICBmcHV0cygiV2Fy
bmluZyA6IHNjYWxlIGludGVyZmFjZSBpcyBub3QgbnVsbF9zY2FsZSAtIG1heSBub3Qgd29yayB3
aXRoIG11bHRpcGxvdFxuIiwgc3RkZXJyKTsKCgogICAgaWYgKHRlcm0tPnRleHRfYW5nbGUgPT0g
MCkKICAgICAgICB0ZXJtLT50ZXh0X2FuZ2xlID0gbnVsbF90ZXh0X2FuZ2xlOwogICAgaWYgKHRl
cm0tPmp1c3RpZnlfdGV4dCA9PSAwKQogICAgICAgIHRlcm0tPmp1c3RpZnlfdGV4dCA9IG51bGxf
anVzdGlmeV90ZXh0OwogICAgaWYgKHRlcm0tPnBvaW50ID09IDApCiAgICAgICAgdGVybS0+cG9p
bnQgPSBkb19wb2ludDsKICAgIGlmICh0ZXJtLT5hcnJvdyA9PSAwKQogICAgICAgIHRlcm0tPmFy
cm93ID0gZG9fYXJyb3c7CiAgICBpZiAodGVybS0+c2V0X2ZvbnQgPT0gMCkKICAgICAgICB0ZXJt
LT5zZXRfZm9udCA9IHNldF9mb250X251bGw7CiAgICBpZiAodGVybS0+cG9pbnRzaXplID09IDAp
CiAgICAgICAgdGVybS0+cG9pbnRzaXplID0gZG9fcG9pbnRzaXplOwogICAgaWYgKHRlcm0tPmxp
bmV3aWR0aCA9PSAwKQogICAgICAgIHRlcm0tPmxpbmV3aWR0aCA9IG51bGxfbGluZXdpZHRoOwoK
CiAgICBpZiAoIShfX2V4dGVuc2lvbl9fIChfX2J1aWx0aW5fY29uc3RhbnRfcCAoOCkgJiYgKChf
X2J1aWx0aW5fY29uc3RhbnRfcCAoInVuaXhwbG90IikgJiYgc3RybGVuICgidW5peHBsb3QiKSA8
ICgoc2l6ZV90KSAoOCkpKSB8fCAoX19idWlsdGluX2NvbnN0YW50X3AgKG5hbWUpICYmIHN0cmxl
biAobmFtZSkgPCAoKHNpemVfdCkgKDgpKSkpID8gX19leHRlbnNpb25fXyAoeyBzaXplX3QgX19z
MV9sZW4sIF9fczJfbGVuOyAoX19idWlsdGluX2NvbnN0YW50X3AgKCJ1bml4cGxvdCIpICYmIF9f
YnVpbHRpbl9jb25zdGFudF9wIChuYW1lKSAmJiAoX19zMV9sZW4gPSBzdHJsZW4gKCJ1bml4cGxv
dCIpLCBfX3MyX2xlbiA9IHN0cmxlbiAobmFtZSksICghKChzaXplX3QpKGNvbnN0IHZvaWQgKiko
KCJ1bml4cGxvdCIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKCJ1bml4cGxvdCIpID09
IDEpIHx8IF9fczFfbGVuID49IDQpICYmICghKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKG5hbWUp
ICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKG5hbWUpID09IDEpIHx8IF9fczJfbGVuID49
IDQpKSA/IG1lbWNtcCAoKF9fY29uc3QgY2hhciAqKSAoInVuaXhwbG90IiksIChfX2NvbnN0IGNo
YXIgKikgKG5hbWUpLCAoX19zMV9sZW4gPCBfX3MyX2xlbiA/IF9fczFfbGVuIDogX19zMl9sZW4p
ICsgMSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AgKCJ1bml4cGxvdCIpICYmICgoc2l6ZV90KShj
b25zdCB2b2lkICopKCgidW5peHBsb3QiKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgi
dW5peHBsb3QiKSA9PSAxKSAmJiAoX19zMV9sZW4gPSBzdHJsZW4gKCJ1bml4cGxvdCIpLCBfX3Mx
X2xlbiA8IDQpID8gKF9fYnVpbHRpbl9jb25zdGFudF9wIChuYW1lKSAmJiAoKHNpemVfdCkoY29u
c3Qgdm9pZCAqKSgobmFtZSkgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikobmFtZSkgPT0g
MSkgPyAoX19leHRlbnNpb25fXyAoeyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSAoKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoInVuaXhwbG90IikpWzBdIC0gKChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKShuYW1lKSlbMF0pOyBpZiAo
X19zMV9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVu
c2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoInVuaXhwbG90IikpWzFdIC0gKChfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzFdKTsgaWYgKF9f
czFfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNp
Z25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJ1bml4cGxvdCIpKVsyXSAtICgoX19jb25z
dCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVsyXSk7IGlmIChfX3Mx
X2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoInVuaXhwbG90IikpWzNdIC0gKChfX2NvbnN0IHVu
c2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzNdKTsgfSB9IF9fcmVzdWx0
OyB9KSkgOiAoX19leHRlbnNpb25fXyAoeyBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKl9fczIgPSAo
X19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpOyByZWdpc3Rl
ciBpbnQgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh
ciAqKSAoInVuaXhwbG90IikpWzBdIC0gX19zMlswXSk7IGlmIChfX3MxX2xlbiA+IDAgJiYgX19y
ZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19j
b25zdCBjaGFyICopICgidW5peHBsb3QiKSlbMV0gLSBfX3MyWzFdKTsgaWYgKF9fczFfbGVuID4g
MSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFy
ICopIChfX2NvbnN0IGNoYXIgKikgKCJ1bml4cGxvdCIpKVsyXSAtIF9fczJbMl0pOyBpZiAoX19z
MV9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25l
ZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJ1bml4cGxvdCIpKVszXSAtIF9fczJbM10pOyB9
IH0gX19yZXN1bHQ7IH0pKSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AgKG5hbWUpICYmICgoc2l6
ZV90KShjb25zdCB2b2lkICopKChuYW1lKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKShu
YW1lKSA9PSAxKSAmJiAoX19zMl9sZW4gPSBzdHJsZW4gKG5hbWUpLCBfX3MyX2xlbiA8IDQpID8g
KF9fYnVpbHRpbl9jb25zdGFudF9wICgidW5peHBsb3QiKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9p
ZCAqKSgoInVuaXhwbG90IikgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoInVuaXhwbG90
IikgPT0gMSkgPyAoX19leHRlbnNpb25fXyAoeyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSAoKChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoInVuaXhwbG90IikpWzBd
IC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKShuYW1lKSlbMF0p
OyBpZiAoX19zMl9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoInVuaXhwbG90IikpWzFdIC0g
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzFdKTsg
aWYgKF9fczJfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25z
dCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJ1bml4cGxvdCIpKVsyXSAtICgo
X19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVsyXSk7IGlm
IChfX3MyX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVu
c2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoInVuaXhwbG90IikpWzNdIC0gKChfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzNdKTsgfSB9IF9f
cmVzdWx0OyB9KSkgOiAoX19leHRlbnNpb25fXyAoeyBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKl9f
czEgPSAoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJ1bml4cGxv
dCIpOyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSBfX3MxWzBdIC0gKChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzBdOyBpZiAoX19zMl9sZW4gPiAwICYm
IF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoX19zMVsxXSAtICgoX19jb25zdCB1bnNpZ25l
ZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVsxXSk7IGlmIChfX3MyX2xlbiA+IDEg
JiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9IChfX3MxWzJdIC0gKChfX2NvbnN0IHVuc2ln
bmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzJdKTsgaWYgKF9fczJfbGVuID4g
MiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9IChfX3MxWzNdIC0gKChfX2NvbnN0IHVuc2ln
bmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzNdKTsgfSB9IF9fcmVzdWx0OyB9
KSkpIDogc3RyY21wICgidW5peHBsb3QiLCBuYW1lKSkpKTsgfSkgOiBzdHJuY21wICgidW5peHBs
b3QiLCBuYW1lLCA4KSkpKSB7CiAgICAgICAgVVBfcmVkaXJlY3QoMik7CiAgICB9IGVsc2UgaWYg
KHVuaXhwbG90KSB7CiAgICAgICAgVVBfcmVkaXJlY3QoMyk7CiAgICB9CiAgICBpZiAoaW50ZXJh
Y3RpdmUpCiAgICAgICAgZnByaW50ZihzdGRlcnIsICJUZXJtaW5hbCB0eXBlIHNldCB0byAnJXMn
XG4iLCBuYW1lKTsKCiAgICByZXR1cm4gKHQpOwp9CiMgOTQzICJ0ZXJtLmMiCnZvaWQgaW5pdF90
ZXJtaW5hbCgpCnsKICAgIGNoYXIgKnRlcm1fbmFtZSA9ICgodm9pZCAqKTApOwoKICAgIGNoYXIg
KmVudl90ZXJtID0gKCh2b2lkICopMCk7CgoKICAgIGNoYXIgKmRpc3BsYXkgPSAoKHZvaWQgKikw
KTsKCiAgICBjaGFyICpnbnV0ZXJtID0gKCh2b2lkICopMCk7CgoKICAgIGdudXRlcm0gPSBnZXRl
bnYoIkdOVVRFUk0iKTsKICAgIGlmIChnbnV0ZXJtICE9IChjaGFyICopICgodm9pZCAqKTApKSB7
CiAgICAgICAgdGVybV9uYW1lID0gZ251dGVybTsKICAgIH0gZWxzZSB7CiMgOTk5ICJ0ZXJtLmMi
CiAgICAgICAgZW52X3Rlcm0gPSBnZXRlbnYoIlRFUk0iKTsKICAgICAgICBpZiAodGVybV9uYW1l
ID09IChjaGFyICopICgodm9pZCAqKTApCiAgICAgICAgICAgICYmIGVudl90ZXJtICE9IChjaGFy
ICopICgodm9pZCAqKTApICYmIF9fZXh0ZW5zaW9uX18gKHsgc2l6ZV90IF9fczFfbGVuLCBfX3My
X2xlbjsgKF9fYnVpbHRpbl9jb25zdGFudF9wIChlbnZfdGVybSkgJiYgX19idWlsdGluX2NvbnN0
YW50X3AgKCJ4dGVybSIpICYmIChfX3MxX2xlbiA9IHN0cmxlbiAoZW52X3Rlcm0pLCBfX3MyX2xl
biA9IHN0cmxlbiAoInh0ZXJtIiksICghKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKGVudl90ZXJt
KSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKShlbnZfdGVybSkgPT0gMSkgfHwgX19zMV9s
ZW4gPj0gNCkgJiYgKCEoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoInh0ZXJtIikgKyAxKSAtIChz
aXplX3QpKGNvbnN0IHZvaWQgKikoInh0ZXJtIikgPT0gMSkgfHwgX19zMl9sZW4gPj0gNCkpID8g
bWVtY21wICgoX19jb25zdCBjaGFyICopIChlbnZfdGVybSksIChfX2NvbnN0IGNoYXIgKikgKCJ4
dGVybSIpLCAoX19zMV9sZW4gPCBfX3MyX2xlbiA/IF9fczFfbGVuIDogX19zMl9sZW4pICsgMSkg
OiAoX19idWlsdGluX2NvbnN0YW50X3AgKGVudl90ZXJtKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9p
ZCAqKSgoZW52X3Rlcm0pICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKGVudl90ZXJtKSA9
PSAxKSAmJiAoX19zMV9sZW4gPSBzdHJsZW4gKGVudl90ZXJtKSwgX19zMV9sZW4gPCA0KSA/IChf
X2J1aWx0aW5fY29uc3RhbnRfcCAoInh0ZXJtIikgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKiko
KCJ4dGVybSIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKCJ4dGVybSIpID09IDEpID8g
KF9fZXh0ZW5zaW9uX18gKHsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNp
Z25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGVudl90ZXJtKSlbMF0gLSAoKF9fY29uc3Qg
dW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopKCJ4dGVybSIpKVswXSk7IGlmIChfX3Mx
X2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWdu
ZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChlbnZfdGVybSkpWzFdIC0gKChfX2NvbnN0IHVu
c2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoInh0ZXJtIikpWzFdKTsgaWYgKF9fczFf
bGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25l
ZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGVudl90ZXJtKSlbMl0gLSAoKF9fY29uc3QgdW5z
aWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgieHRlcm0iKSlbMl0pOyBpZiAoX19zMV9s
ZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBj
aGFyICopIChfX2NvbnN0IGNoYXIgKikgKGVudl90ZXJtKSlbM10gLSAoKF9fY29uc3QgdW5zaWdu
ZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgieHRlcm0iKSlbM10pOyB9IH0gX19yZXN1bHQ7
IH0pKSA6IChfX2V4dGVuc2lvbl9fICh7IF9fY29uc3QgdW5zaWduZWQgY2hhciAqX19zMiA9IChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoInh0ZXJtIik7IHJlZ2lz
dGVyIGludCBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBj
aGFyICopIChlbnZfdGVybSkpWzBdIC0gX19zMlswXSk7IGlmIChfX3MxX2xlbiA+IDAgJiYgX19y
ZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19j
b25zdCBjaGFyICopIChlbnZfdGVybSkpWzFdIC0gX19zMlsxXSk7IGlmIChfX3MxX2xlbiA+IDEg
JiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAq
KSAoX19jb25zdCBjaGFyICopIChlbnZfdGVybSkpWzJdIC0gX19zMlsyXSk7IGlmIChfX3MxX2xl
biA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNo
YXIgKikgKF9fY29uc3QgY2hhciAqKSAoZW52X3Rlcm0pKVszXSAtIF9fczJbM10pOyB9IH0gX19y
ZXN1bHQ7IH0pKSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AgKCJ4dGVybSIpICYmICgoc2l6ZV90
KShjb25zdCB2b2lkICopKCgieHRlcm0iKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgi
eHRlcm0iKSA9PSAxKSAmJiAoX19zMl9sZW4gPSBzdHJsZW4gKCJ4dGVybSIpLCBfX3MyX2xlbiA8
IDQpID8gKF9fYnVpbHRpbl9jb25zdGFudF9wIChlbnZfdGVybSkgJiYgKChzaXplX3QpKGNvbnN0
IHZvaWQgKikoKGVudl90ZXJtKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKShlbnZfdGVy
bSkgPT0gMSkgPyAoX19leHRlbnNpb25fXyAoeyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSAoKChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoZW52X3Rlcm0pKVswXSAt
ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikoInh0ZXJtIikpWzBd
KTsgaWYgKF9fczJfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19j
b25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGVudl90ZXJtKSlbMV0gLSAo
KF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgieHRlcm0iKSlbMV0p
OyBpZiAoX19zMl9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoZW52X3Rlcm0pKVsyXSAtICgo
X19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJ4dGVybSIpKVsyXSk7
IGlmIChfX3MyX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoZW52X3Rlcm0pKVszXSAtICgoX19j
b25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJ4dGVybSIpKVszXSk7IH0g
fSBfX3Jlc3VsdDsgfSkpIDogKF9fZXh0ZW5zaW9uX18gKHsgX19jb25zdCB1bnNpZ25lZCBjaGFy
ICpfX3MxID0gKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChlbnZf
dGVybSk7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9IF9fczFbMF0gLSAoKF9fY29uc3QgdW5zaWdu
ZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgieHRlcm0iKSlbMF07IGlmIChfX3MyX2xlbiA+
IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9IChfX3MxWzFdIC0gKChfX2NvbnN0IHVu
c2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoInh0ZXJtIikpWzFdKTsgaWYgKF9fczJf
bGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKF9fczFbMl0gLSAoKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgieHRlcm0iKSlbMl0pOyBpZiAo
X19zMl9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKF9fczFbM10gLSAoKF9f
Y29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgieHRlcm0iKSlbM10pOyB9
IH0gX19yZXN1bHQ7IH0pKSkgOiBzdHJjbXAgKGVudl90ZXJtLCAieHRlcm0iKSkpKTsgfSkgPT0g
MCkKICAgICAgICAgICAgdGVybV9uYW1lID0gIngxMSI7CiAgICAgICAgZGlzcGxheSA9IGdldGVu
digiRElTUExBWSIpOwogICAgICAgIGlmICh0ZXJtX25hbWUgPT0gKGNoYXIgKikgKCh2b2lkICop
MCkgJiYgZGlzcGxheSAhPSAoY2hhciAqKSAoKHZvaWQgKikwKSkKICAgICAgICAgICAgdGVybV9u
YW1lID0gIngxMSI7CiAgICAgICAgaWYgKFgxMV9EaXNwbGF5KQogICAgICAgICAgICB0ZXJtX25h
bWUgPSAieDExIjsKIyAxMDU2ICJ0ZXJtLmMiCiAgICB9CgoKICAgIGlmICh0ZXJtX25hbWUgIT0g
KCh2b2lkICopMCkgJiYgKnRlcm1fbmFtZSAhPSAnXDAnKSB7CiAgICAgICAgaWYgKGNoYW5nZV90
ZXJtKHRlcm1fbmFtZSwgKGludCkgc3RybGVuKHRlcm1fbmFtZSkpKQogICAgICAgICAgICByZXR1
cm47CiAgICAgICAgZnByaW50ZihzdGRlcnIsICJVbmtub3duIG9yIGFtYmlndW91cyB0ZXJtaW5h
bCBuYW1lICclcydcbiIsIHRlcm1fbmFtZSk7CiAgICB9CiAgICBjaGFuZ2VfdGVybSgidW5rbm93
biIsIDcpOwp9CiMgMTExMyAidGVybS5jIgp2b2lkIFVQX3JlZGlyZWN0KGNhbGxlcikKaW50IGNh
bGxlcjsKewogICAgY2FsbGVyID0gY2FsbGVyOwoKfQojIDExNzAgInRlcm0uYyIKdm9pZCB0ZXN0
X3Rlcm0oKQp7CiAgICByZWdpc3RlciBzdHJ1Y3QgVEVSTUVOVFJZICp0ID0gdGVybTsKICAgIGNo
YXIgKnN0cjsKICAgIGludCB4LCB5LCB4bCwgeWwsIGk7CiAgICB1bnNpZ25lZCBpbnQgeG1heF90
LCB5bWF4X3Q7CiAgICBjaGFyIGxhYmVsWzUwXTsKICAgIGludCBrZXlfZW50cnlfaGVpZ2h0Owog
ICAgaW50IHBfd2lkdGg7CgogICAgdGVybV9zdGFydF9wbG90KCk7CiAgICBzY3JlZW5fb2sgPSAw
OwogICAgeG1heF90ID0gKHVuc2lnbmVkIGludCkgKHQtPnhtYXggKiB4c2l6ZSk7CiAgICB5bWF4
X3QgPSAodW5zaWduZWQgaW50KSAodC0+eW1heCAqIHlzaXplKTsKCiAgICBwX3dpZHRoID0gcG9p
bnRzaXplICogKHQtPmhfdGljKTsKICAgIGtleV9lbnRyeV9oZWlnaHQgPSBwb2ludHNpemUgKiAo
dC0+dl90aWMpICogMS4yNTsKICAgIGlmIChrZXlfZW50cnlfaGVpZ2h0IDwgKHQtPnZfY2hhcikp
CiAgICAgICAga2V5X2VudHJ5X2hlaWdodCA9ICh0LT52X2NoYXIpOwoKCiAgICAoKnQtPmxpbmV3
aWR0aCkgKDEuMCk7CiAgICAoKnQtPmxpbmV0eXBlKSAoLTIpOwogICAgKCp0LT5tb3ZlKSAoMCwg
MCk7CiAgICAoKnQtPnZlY3RvcikgKHhtYXhfdCAtIDEsIDApOwogICAgKCp0LT52ZWN0b3IpICh4
bWF4X3QgLSAxLCB5bWF4X3QgLSAxKTsKICAgICgqdC0+dmVjdG9yKSAoMCwgeW1heF90IC0gMSk7
CiAgICAoKnQtPnZlY3RvcikgKDAsIDApOwogICAgKHZvaWQpICgqdC0+anVzdGlmeV90ZXh0KSAo
TEVGVCk7CiAgICAoKnQtPnB1dF90ZXh0KSAodC0+aF9jaGFyICogNSwgeW1heF90IC0gdC0+dl9j
aGFyICogMywgIlRlcm1pbmFsIFRlc3QiKTsKCiAgICAoKnQtPmxpbmV0eXBlKSAoLTEpOwogICAg
KCp0LT5tb3ZlKSAoeG1heF90IC8gMiwgMCk7CiAgICAoKnQtPnZlY3RvcikgKHhtYXhfdCAvIDIs
IHltYXhfdCAtIDEpOwogICAgKCp0LT5tb3ZlKSAoMCwgeW1heF90IC8gMik7CiAgICAoKnQtPnZl
Y3RvcikgKHhtYXhfdCAtIDEsIHltYXhfdCAvIDIpOwoKICAgICgqdC0+bGluZXR5cGUpICgtMik7
CiAgICAoKnQtPm1vdmUpICh4bWF4X3QgLyAyIC0gdC0+aF9jaGFyICogMTAsIHltYXhfdCAvIDIg
KyB0LT52X2NoYXIgLyAyKTsKICAgICgqdC0+dmVjdG9yKSAoeG1heF90IC8gMiArIHQtPmhfY2hh
ciAqIDEwLCB5bWF4X3QgLyAyICsgdC0+dl9jaGFyIC8gMik7CiAgICAoKnQtPnZlY3RvcikgKHht
YXhfdCAvIDIgKyB0LT5oX2NoYXIgKiAxMCwgeW1heF90IC8gMiAtIHQtPnZfY2hhciAvIDIpOwog
ICAgKCp0LT52ZWN0b3IpICh4bWF4X3QgLyAyIC0gdC0+aF9jaGFyICogMTAsIHltYXhfdCAvIDIg
LSB0LT52X2NoYXIgLyAyKTsKICAgICgqdC0+dmVjdG9yKSAoeG1heF90IC8gMiAtIHQtPmhfY2hh
ciAqIDEwLCB5bWF4X3QgLyAyICsgdC0+dl9jaGFyIC8gMik7CiAgICAoKnQtPnB1dF90ZXh0KSAo
eG1heF90IC8gMiAtIHQtPmhfY2hhciAqIDEwLCB5bWF4X3QgLyAyLAogICAgICAgICAgICAgICAg
ICAgICIxMjM0NTY3ODkwMTIzNDU2Nzg5MCIpOwoKICAgICh2b2lkKSAoKnQtPmp1c3RpZnlfdGV4
dCkgKExFRlQpOwogICAgKCp0LT5wdXRfdGV4dCkgKHhtYXhfdCAvIDIsIHltYXhfdCAvIDIgKyB0
LT52X2NoYXIgKiA2LCAibGVmdCBqdXN0aWZpZWQiKTsKICAgIHN0ciA9ICJjZW50cmUrZCB0ZXh0
IjsKICAgIGlmICgoKnQtPmp1c3RpZnlfdGV4dCkgKENFTlRSRSkpCiAgICAgICAgKCp0LT5wdXRf
dGV4dCkgKHhtYXhfdCAvIDIsCiAgICAgICAgICAgICAgICAgICAgICAgIHltYXhfdCAvIDIgKyB0
LT52X2NoYXIgKiA1LCBzdHIpOwogICAgZWxzZQogICAgICAgICgqdC0+cHV0X3RleHQpICh4bWF4
X3QgLyAyIC0gc3RybGVuKHN0cikgKiB0LT5oX2NoYXIgLyAyLAogICAgICAgICAgICAgICAgICAg
ICAgICB5bWF4X3QgLyAyICsgdC0+dl9jaGFyICogNSwgc3RyKTsKICAgIHN0ciA9ICJyaWdodCBq
dXN0aWZpZWQiOwogICAgaWYgKCgqdC0+anVzdGlmeV90ZXh0KSAoUklHSFQpKQogICAgICAgICgq
dC0+cHV0X3RleHQpICh4bWF4X3QgLyAyLAogICAgICAgICAgICAgICAgICAgICAgICB5bWF4X3Qg
LyAyICsgdC0+dl9jaGFyICogNCwgc3RyKTsKICAgIGVsc2UKICAgICAgICAoKnQtPnB1dF90ZXh0
KSAoeG1heF90IC8gMiAtIHN0cmxlbihzdHIpICogdC0+aF9jaGFyLAogICAgICAgICAgICAgICAg
ICAgICAgICB5bWF4X3QgLyAyICsgdC0+dl9jaGFyICogNCwgc3RyKTsKCiAgICBzdHIgPSAicm90
YXRlZCBjZStudHJlZCB0ZXh0IjsKICAgIGlmICgoKnQtPnRleHRfYW5nbGUpICgxKSkgewogICAg
ICAgIGlmICgoKnQtPmp1c3RpZnlfdGV4dCkgKENFTlRSRSkpCiAgICAgICAgICAgICgqdC0+cHV0
X3RleHQpICh0LT52X2NoYXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5bWF4X3QgLyAy
LCBzdHIpOwogICAgICAgIGVsc2UKICAgICAgICAgICAgKCp0LT5wdXRfdGV4dCkgKHQtPnZfY2hh
ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHltYXhfdCAvIDIgLSBzdHJsZW4oc3RyKSAq
IHQtPmhfY2hhciAvIDIsIHN0cik7CiAgICB9IGVsc2UgewogICAgICAgICh2b2lkKSAoKnQtPmp1
c3RpZnlfdGV4dCkgKExFRlQpOwogICAgICAgICgqdC0+cHV0X3RleHQpICh0LT5oX2NoYXIgKiAy
LCB5bWF4X3QgLyAyIC0gdC0+dl9jaGFyICogMiwgIkNhbid0IHJvdGF0ZSB0ZXh0Iik7CiAgICB9
CiAgICAodm9pZCkgKCp0LT5qdXN0aWZ5X3RleHQpIChMRUZUKTsKICAgICh2b2lkKSAoKnQtPnRl
eHRfYW5nbGUpICgwKTsKCiAgICAoKnQtPm1vdmUpICgodW5zaWduZWQgaW50KSAoeG1heF90IC8g
MiArIHQtPmhfdGljICogKDEgKyB0aWNzY2FsZSkpLCAodW5zaWduZWQpIDApOwogICAgKCp0LT52
ZWN0b3IpICgodW5zaWduZWQgaW50KSAoeG1heF90IC8gMiArIHQtPmhfdGljICogKDEgKyB0aWNz
Y2FsZSkpLCAodW5zaWduZWQgaW50KQogICAgICAgICAgICAgICAgICAodGljc2NhbGUgKiB0LT52
X3RpYykpOwogICAgKCp0LT5tb3ZlKSAoKHVuc2lnbmVkIGludCkgKHhtYXhfdCAvIDIpLCAodW5z
aWduZWQgaW50KSAodC0+dl90aWMgKiAoMSArIHRpY3NjYWxlKSkpOwogICAgKCp0LT52ZWN0b3Ip
ICgodW5zaWduZWQgaW50KSAoeG1heF90IC8gMiArIHRpY3NjYWxlICogdC0+aF90aWMpLCAodW5z
aWduZWQgaW50KSAodC0+dl90aWMgKiAoMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKyB0aWNzY2FsZSkpKTsKICAgICgqdC0+cHV0X3RleHQpICgodW5zaWduZWQgaW50
KSAoeG1heF90IC8gMiAtIDEwICogdC0+aF9jaGFyKSwgKHVuc2lnbmVkIGludCkgKHQtPnZfdGlj
ICogMiArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LT52X2NoYXIgLyAyKSwKICAgICAgICAg
ICAgICAgICAgICAidGVzdCB0aWNzIik7CgoKICAgIHggPSB4bWF4X3QgLSB0LT5oX2NoYXIgKiA2
IC0gcF93aWR0aDsKICAgIHkgPSB5bWF4X3QgLSBrZXlfZW50cnlfaGVpZ2h0OwogICAgKCp0LT5w
b2ludHNpemUpIChwb2ludHNpemUpOwogICAgZm9yIChpID0gLTI7IHkgPiBrZXlfZW50cnlfaGVp
Z2h0OyBpKyspIHsKICAgICAgICAoKnQtPmxpbmV0eXBlKSAoaSk7CgoKICAgICAgICAodm9pZCkg
c3ByaW50ZihsYWJlbCwgIiVkIiwgaSArIDEpOwogICAgICAgIGlmICgoKnQtPmp1c3RpZnlfdGV4
dCkgKFJJR0hUKSkKICAgICAgICAgICAgKCp0LT5wdXRfdGV4dCkgKHgsIHksIGxhYmVsKTsKICAg
ICAgICBlbHNlCiAgICAgICAgICAgICgqdC0+cHV0X3RleHQpICh4IC0gc3RybGVuKGxhYmVsKSAq
IHQtPmhfY2hhciwgeSwgbGFiZWwpOwogICAgICAgICgqdC0+bW92ZSkgKHggKyB0LT5oX2NoYXIs
IHkpOwogICAgICAgICgqdC0+dmVjdG9yKSAoeCArIHQtPmhfY2hhciAqIDQsIHkpOwogICAgICAg
IGlmIChpID49IC0xKQogICAgICAgICAgICAoKnQtPnBvaW50KSAoeCArIHQtPmhfY2hhciAqIDUg
KyBwX3dpZHRoIC8gMiwgeSwgaSk7CiAgICAgICAgeSAtPSBrZXlfZW50cnlfaGVpZ2h0OwogICAg
fQoKICAgICgqdC0+bGluZXdpZHRoKSAoMS4wKTsKICAgICgqdC0+bGluZXR5cGUpICgwKTsKICAg
IHggPSB4bWF4X3QgLyA0OwogICAgeSA9IHltYXhfdCAvIDQ7CiAgICB4bCA9IHQtPmhfdGljICog
NTsKICAgIHlsID0gdC0+dl90aWMgKiA1OwogICAgKCp0LT5hcnJvdykgKHgsIHksIHggKyB4bCwg
eSwgMSk7CiAgICAoKnQtPmFycm93KSAoeCwgeSwgeCArIHhsIC8gMiwgeSArIHlsLCAxKTsKICAg
ICgqdC0+YXJyb3cpICh4LCB5LCB4LCB5ICsgeWwsIDEpOwogICAgKCp0LT5hcnJvdykgKHgsIHks
IHggLSB4bCAvIDIsIHkgKyB5bCwgMCk7CiAgICAoKnQtPmFycm93KSAoeCwgeSwgeCAtIHhsLCB5
LCAxKTsKICAgICgqdC0+YXJyb3cpICh4LCB5LCB4IC0geGwsIHkgLSB5bCwgMSk7CiAgICAoKnQt
PmFycm93KSAoeCwgeSwgeCwgeSAtIHlsLCAxKTsKICAgICgqdC0+YXJyb3cpICh4LCB5LCB4ICsg
eGwsIHkgLSB5bCwgMSk7CgogICAgdGVybV9lbmRfcGxvdCgpOwp9Cg==


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2002-02-11 17:29 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-02-11  9:29 c/5654: the "term.i" file to report #5653 rodrigc
  -- strict thread matches above, loose matches on Subject: below --
2002-02-10 13:56 szaszg

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).