c/9850: Segmentation Fault

kaplun@inwind.it kaplun@inwind.it
Tue Feb 25 17:26:00 GMT 2003


>Number:         9850
>Category:       c
>Synopsis:       Segmentation Fault
>Confidential:   no
>Severity:       critical
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Tue Feb 25 17:26:00 UTC 2003
>Closed-Date:
>Last-Modified:
>Originator:     gcc -DHAVE_CONFIG_H -I. -I. -I../../../.. -I../../../.. -I../../../../include -I../../../../include -I../../../../src -I../../../../src/xine-engine -I../../../../src/xine-engine -I../../../../src/xine-utils -I../../../../src/video_out/vi
>Release:        gcc-3.2.2
>Organization:
>Environment:
linux 2.5.61 glibc 2.2.5
>Description:
It segfaults!
Gcc was compiled using the only the --prefix=/usr option in configure...
Well also I used "-march=athlon-xp -mcpu=athlon-xp -mmmx -msse -m3dnow -mfpmath=sse" options to optimize its compilation
>How-To-Repeat:
Using gcc -DHAVE_CONFIG_H -I. -I. -I../../../.. -I../../../.. -I../../../../include -I../../../../include -I../../../../src -I../../../../src/xine-engine -I../../../../src/xine-engine -I../../../../src/xine-utils -I../../../../src/video_out/vidix -I../../../../src/video_out/libdha -march=athlon-xp -mcpu=athlon-xp -msse -mmmx -m3dnow -mfpmath=sse -Wall -D_REENTRANT -D_FILE_OFFSET_BITS=64 -DXINE_COMPILE -O3 -pipe -fomit-frame-pointer -falign-functions=4 -falign-loops=4 -falign-jumps=4 -mpreferred-stack-boundary=2 -fexpensive-optimizations -fschedule-insns2 -fno-strict-aliasing -ffast-math -funroll-loops -finline-functions -mcpu=athlon -I/opt/kde3.1.0/include/artsc -DRAGE128 -c rage128_vid.c -MT rage128_vid.lo -MD -MP -MF .deps/rage128_vid.TPlo  -DPIC -o rage128_vid.lo 
>Fix:
Well, when I tried adding the -save-temps as you suggested to get the .i file, it compiled well... It's strange...
>Release-Note:
>Audit-Trail:
>Unformatted:
 dix -I../../../../src/video_out/libdha -march=athlon-xp -mcpu=athlon-xp -msse -mmmx -m3dnow -mfpmath=sse -Wall -D_REENTRANT -D_FILE_OFFSET_BITS=64 -DXINE_COMPILE -O3 -pipe -fomit-frame-pointer -falign-functions=4 -falign-loops=4 -falign-jumps=4 -mpreferr ed-stack-boundary=2 -fexpensive-optimizations -fschedule-insns2 -fno-strict-aliasing -ffast-math -funroll-loops -finline-functions -mcpu=athlon -I/opt/kde3.1.0/include/artsc -DRAGE128 -c rage128_vid.c -MT rage128_vid.lo -MD -MP -MF .deps/rage128_vid.TPlo   -DPIC -o rage128_vid.lo 
----gnatsweb-attachment----
Content-Type: text/x-csrc; name="rage128_vid.i"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="rage128_vid.i"

IyAxICJyYWdlMTI4X3ZpZC5jIgojIDEgIjxidWlsdC1pbj4iCiMgMSAiPGNvbW1hbmQgbGluZT4i
CiMgMSAicmFnZTEyOF92aWQuYyIKCgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2Vycm5vLmgiIDEg
MwojIDI5ICIvdXNyL2luY2x1ZGUvZXJybm8uaCIgMwojIDEgIi91c3IvaW5jbHVkZS9mZWF0dXJl
cy5oIiAxIDMKIyAyODMgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAzCiMgMSAiL3Vzci9pbmNs
dWRlL3N5cy9jZGVmcy5oIiAxIDMKIyAyODQgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAyIDMK
IyAzMTIgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2dudS9z
dHVicy5oIiAxIDMKIyAzMTMgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAyIDMKIyAzMCAiL3Vz
ci9pbmNsdWRlL2Vycm5vLmgiIDIgMwoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL2Vycm5v
LmgiIDEgMwojIDI1ICIvdXNyL2luY2x1ZGUvYml0cy9lcnJuby5oIiAzCiMgMSAiL3Vzci9pbmNs
dWRlL2xpbnV4L2Vycm5vLmgiIDEgMwoKCgojIDEgIi91c3IvaW5jbHVkZS9hc20vZXJybm8uaCIg
MSAzCiMgNSAiL3Vzci9pbmNsdWRlL2xpbnV4L2Vycm5vLmgiIDIgMwojIDI2ICIvdXNyL2luY2x1
ZGUvYml0cy9lcnJuby5oIiAyIDMKIyAzNiAiL3Vzci9pbmNsdWRlL2JpdHMvZXJybm8uaCIgMwpl
eHRlcm4gaW50IGVycm5vOwoKCmV4dGVybiBpbnQgKl9fZXJybm9fbG9jYXRpb24gKHZvaWQpIF9f
YXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKIyAzNyAiL3Vzci9pbmNsdWRlL2Vycm5vLmgiIDIg
MwojIDU5ICIvdXNyL2luY2x1ZGUvZXJybm8uaCIgMwoKIyA5ICJyYWdlMTI4X3ZpZC5jIiAyCiMg
MSAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjIuMi9pbmNsdWRlL3N0ZGlv
LmgiIDEgMwojIDM5ICIvdXNyL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMi4yL2lu
Y2x1ZGUvc3RkaW8uaCIgMwoKCgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgt
Z251LzMuMi4yL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDIxMyAiL3Vzci9saWIvZ2NjLWxpYi9p
Njg2LXBjLWxpbnV4LWdudS8zLjIuMi9pbmNsdWRlL3N0ZGRlZi5oIiAzCnR5cGVkZWYgdW5zaWdu
ZWQgaW50IHNpemVfdDsKIyA0NCAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8z
LjIuMi9pbmNsdWRlL3N0ZGlvLmgiIDIgMwoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5o
IiAxIDMKIyAyOSAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMwojIDEgIi91c3IvbGliL2dj
Yy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4yLjIvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMzAg
Ii91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDIgMwoKCnR5cGVkZWYgdW5zaWduZWQgY2hhciBf
X3VfY2hhcjsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBfX3Vfc2hvcnQ7CnR5cGVkZWYgdW5zaWdu
ZWQgaW50IF9fdV9pbnQ7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBfX3VfbG9uZzsKCl9fZXh0ZW5z
aW9uX18gdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fdV9xdWFkX3Q7Cl9fZXh0ZW5z
aW9uX18gdHlwZWRlZiBsb25nIGxvbmcgaW50IF9fcXVhZF90OwojIDQ5ICIvdXNyL2luY2x1ZGUv
Yml0cy90eXBlcy5oIiAzCnR5cGVkZWYgc2lnbmVkIGNoYXIgX19pbnQ4X3Q7CnR5cGVkZWYgdW5z
aWduZWQgY2hhciBfX3VpbnQ4X3Q7CnR5cGVkZWYgc2lnbmVkIHNob3J0IGludCBfX2ludDE2X3Q7
CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50IF9fdWludDE2X3Q7CnR5cGVkZWYgc2lnbmVkIGlu
dCBfX2ludDMyX3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9fdWludDMyX3Q7CgpfX2V4dGVuc2lv
bl9fIHR5cGVkZWYgc2lnbmVkIGxvbmcgbG9uZyBpbnQgX19pbnQ2NF90OwpfX2V4dGVuc2lvbl9f
IHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIGludCBfX3VpbnQ2NF90OwoKdHlwZWRlZiBfX3F1
YWRfdCAqX19xYWRkcl90OwoKdHlwZWRlZiBfX3VfcXVhZF90IF9fZGV2X3Q7CnR5cGVkZWYgX191
X2ludCBfX3VpZF90Owp0eXBlZGVmIF9fdV9pbnQgX19naWRfdDsKdHlwZWRlZiBfX3VfbG9uZyBf
X2lub190Owp0eXBlZGVmIF9fdV9pbnQgX19tb2RlX3Q7CnR5cGVkZWYgX191X2ludCBfX25saW5r
X3Q7CnR5cGVkZWYgbG9uZyBpbnQgX19vZmZfdDsKdHlwZWRlZiBfX3F1YWRfdCBfX2xvZmZfdDsK
dHlwZWRlZiBpbnQgX19waWRfdDsKdHlwZWRlZiBpbnQgX19zc2l6ZV90Owp0eXBlZGVmIF9fdV9s
b25nIF9fcmxpbV90Owp0eXBlZGVmIF9fdV9xdWFkX3QgX19ybGltNjRfdDsKdHlwZWRlZiBfX3Vf
aW50IF9faWRfdDsKCnR5cGVkZWYgc3RydWN0CiAgewogICAgaW50IF9fdmFsWzJdOwogIH0gX19m
c2lkX3Q7CgoKdHlwZWRlZiBpbnQgX19kYWRkcl90Owp0eXBlZGVmIGNoYXIgKl9fY2FkZHJfdDsK
dHlwZWRlZiBsb25nIGludCBfX3RpbWVfdDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX191c2Vjb25k
c190Owp0eXBlZGVmIGxvbmcgaW50IF9fc3VzZWNvbmRzX3Q7CnR5cGVkZWYgbG9uZyBpbnQgX19z
d2Jsa190OwoKdHlwZWRlZiBsb25nIGludCBfX2Nsb2NrX3Q7CgoKdHlwZWRlZiBpbnQgX19jbG9j
a2lkX3Q7CgoKdHlwZWRlZiBpbnQgX190aW1lcl90OwoKCgoKCgp0eXBlZGVmIGludCBfX2tleV90
OwoKCnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50IF9faXBjX3BpZF90OwoKCgp0eXBlZGVmIGxv
bmcgaW50IF9fYmxrc2l6ZV90OwoKCgoKdHlwZWRlZiBsb25nIGludCBfX2Jsa2NudF90Owp0eXBl
ZGVmIF9fcXVhZF90IF9fYmxrY250NjRfdDsKCgp0eXBlZGVmIF9fdV9sb25nIF9fZnNibGtjbnRf
dDsKdHlwZWRlZiBfX3VfcXVhZF90IF9fZnNibGtjbnQ2NF90OwoKCnR5cGVkZWYgX191X2xvbmcg
X19mc2ZpbGNudF90Owp0eXBlZGVmIF9fdV9xdWFkX3QgX19mc2ZpbGNudDY0X3Q7CgoKdHlwZWRl
ZiBfX3VfcXVhZF90IF9faW5vNjRfdDsKCgp0eXBlZGVmIF9fbG9mZl90IF9fb2ZmNjRfdDsKCgp0
eXBlZGVmIGxvbmcgaW50IF9fdF9zY2FsYXJfdDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGludCBf
X3RfdXNjYWxhcl90OwoKCnR5cGVkZWYgaW50IF9faW50cHRyX3Q7CgoKdHlwZWRlZiB1bnNpZ25l
ZCBpbnQgX19zb2NrbGVuX3Q7CgoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3B0aHJlYWR0eXBl
cy5oIiAxIDMKIyAyMyAiL3Vzci9pbmNsdWRlL2JpdHMvcHRocmVhZHR5cGVzLmgiIDMKIyAxICIv
dXNyL2luY2x1ZGUvYml0cy9zY2hlZC5oIiAxIDMKIyA2OCAiL3Vzci9pbmNsdWRlL2JpdHMvc2No
ZWQuaCIgMwpzdHJ1Y3QgX19zY2hlZF9wYXJhbQogIHsKICAgIGludCBfX3NjaGVkX3ByaW9yaXR5
OwogIH07CiMgMjQgIi91c3IvaW5jbHVkZS9iaXRzL3B0aHJlYWR0eXBlcy5oIiAyIDMKCgpzdHJ1
Y3QgX3B0aHJlYWRfZmFzdGxvY2sKewogIGxvbmcgaW50IF9fc3RhdHVzOwogIGludCBfX3NwaW5s
b2NrOwoKfTsKCgoKdHlwZWRlZiBzdHJ1Y3QgX3B0aHJlYWRfZGVzY3Jfc3RydWN0ICpfcHRocmVh
ZF9kZXNjcjsKCgoKCgp0eXBlZGVmIHN0cnVjdCBfX3B0aHJlYWRfYXR0cl9zCnsKICBpbnQgX19k
ZXRhY2hzdGF0ZTsKICBpbnQgX19zY2hlZHBvbGljeTsKICBzdHJ1Y3QgX19zY2hlZF9wYXJhbSBf
X3NjaGVkcGFyYW07CiAgaW50IF9faW5oZXJpdHNjaGVkOwogIGludCBfX3Njb3BlOwogIHNpemVf
dCBfX2d1YXJkc2l6ZTsKICBpbnQgX19zdGFja2FkZHJfc2V0OwogIHZvaWQgKl9fc3RhY2thZGRy
OwogIHNpemVfdCBfX3N0YWNrc2l6ZTsKfSBwdGhyZWFkX2F0dHJfdDsKCgoKdHlwZWRlZiBzdHJ1
Y3QKewogIHN0cnVjdCBfcHRocmVhZF9mYXN0bG9jayBfX2NfbG9jazsKICBfcHRocmVhZF9kZXNj
ciBfX2Nfd2FpdGluZzsKfSBwdGhyZWFkX2NvbmRfdDsKCgoKdHlwZWRlZiBzdHJ1Y3QKewogIGlu
dCBfX2R1bW15Owp9IHB0aHJlYWRfY29uZGF0dHJfdDsKCgp0eXBlZGVmIHVuc2lnbmVkIGludCBw
dGhyZWFkX2tleV90OwoKCgoKCnR5cGVkZWYgc3RydWN0CnsKICBpbnQgX19tX3Jlc2VydmVkOwog
IGludCBfX21fY291bnQ7CiAgX3B0aHJlYWRfZGVzY3IgX19tX293bmVyOwogIGludCBfX21fa2lu
ZDsKICBzdHJ1Y3QgX3B0aHJlYWRfZmFzdGxvY2sgX19tX2xvY2s7Cn0gcHRocmVhZF9tdXRleF90
OwoKCgp0eXBlZGVmIHN0cnVjdAp7CiAgaW50IF9fbXV0ZXhraW5kOwp9IHB0aHJlYWRfbXV0ZXhh
dHRyX3Q7CgoKCnR5cGVkZWYgaW50IHB0aHJlYWRfb25jZV90OwojIDE0MCAiL3Vzci9pbmNsdWRl
L2JpdHMvcHRocmVhZHR5cGVzLmgiIDMKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGludCBwdGhyZWFk
X3Q7CiMgMTQ0ICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAyIDMKIyA0NiAiL3Vzci9saWIv
Z2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjIuMi9pbmNsdWRlL3N0ZGlvLmgiIDIgMwojIDU0
ICIvdXNyL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMi4yL2luY2x1ZGUvc3RkaW8u
aCIgMwp0eXBlZGVmIHN0cnVjdCBfSU9fRklMRSBGSUxFOwojIDY0ICIvdXNyL2xpYi9nY2MtbGli
L2k2ODYtcGMtbGludXgtZ251LzMuMi4yL2luY2x1ZGUvc3RkaW8uaCIgMwp0eXBlZGVmIHN0cnVj
dCBfSU9fRklMRSBfX0ZJTEU7CiMgNzQgIi91c3IvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1n
bnUvMy4yLjIvaW5jbHVkZS9zdGRpby5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDEg
MwojIDMyICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwojIDEgIi91c3IvaW5jbHVkZS9fR19jb25m
aWcuaCIgMSAzCiMgMTQgIi91c3IvaW5jbHVkZS9fR19jb25maWcuaCIgMwojIDEgIi91c3IvbGli
L2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4yLjIvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMg
MzI1ICIvdXNyL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMi4yL2luY2x1ZGUvc3Rk
ZGVmLmgiIDMKdHlwZWRlZiBsb25nIGludCB3Y2hhcl90OwojIDM1NCAiL3Vzci9saWIvZ2NjLWxp
Yi9pNjg2LXBjLWxpbnV4LWdudS8zLjIuMi9pbmNsdWRlL3N0ZGRlZi5oIiAzCnR5cGVkZWYgdW5z
aWduZWQgaW50IHdpbnRfdDsKIyAxNSAiL3Vzci9pbmNsdWRlL19HX2NvbmZpZy5oIiAyIDMKIyAy
NCAiL3Vzci9pbmNsdWRlL19HX2NvbmZpZy5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL3djaGFyLmgi
IDEgMwojIDQ4ICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMwojIDEgIi91c3IvbGliL2djYy1saWIv
aTY4Ni1wYy1saW51eC1nbnUvMy4yLjIvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgNDkgIi91c3Iv
aW5jbHVkZS93Y2hhci5oIiAyIDMKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvd2NoYXIuaCIgMSAz
CiMgNTEgIi91c3IvaW5jbHVkZS93Y2hhci5oIiAyIDMKIyA2NyAiL3Vzci9pbmNsdWRlL3djaGFy
LmgiIDMKdHlwZWRlZiBzdHJ1Y3QKewogIGludCBfX2NvdW50OwogIHVuaW9uCiAgewogICAgd2lu
dF90IF9fd2NoOwogICAgY2hhciBfX3djaGJbNF07CiAgfSBfX3ZhbHVlOwp9IF9fbWJzdGF0ZV90
OwojIDI1ICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgiIDIgMwoKdHlwZWRlZiBzdHJ1Y3QKewog
IF9fb2ZmX3QgX19wb3M7CiAgX19tYnN0YXRlX3QgX19zdGF0ZTsKfSBfR19mcG9zX3Q7CnR5cGVk
ZWYgc3RydWN0CnsKICBfX29mZjY0X3QgX19wb3M7CiAgX19tYnN0YXRlX3QgX19zdGF0ZTsKfSBf
R19mcG9zNjRfdDsKIyA0NCAiL3Vzci9pbmNsdWRlL19HX2NvbmZpZy5oIiAzCiMgMSAiL3Vzci9p
bmNsdWRlL2djb252LmgiIDEgMwojIDI4ICIvdXNyL2luY2x1ZGUvZ2NvbnYuaCIgMwojIDEgIi91
c3IvaW5jbHVkZS93Y2hhci5oIiAxIDMKIyA0OCAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDMKIyAx
ICIvdXNyL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMi4yL2luY2x1ZGUvc3RkZGVm
LmgiIDEgMwojIDQ5ICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMiAzCiMgMjkgIi91c3IvaW5jbHVk
ZS9nY29udi5oIiAyIDMKCgojIDEgIi91c3IvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUv
My4yLjIvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMzIgIi91c3IvaW5jbHVkZS9nY29udi5oIiAy
IDMKCgoKCgplbnVtCnsKICBfX0dDT05WX09LID0gMCwKICBfX0dDT05WX05PQ09OViwKICBfX0dD
T05WX05PREIsCiAgX19HQ09OVl9OT01FTSwKCiAgX19HQ09OVl9FTVBUWV9JTlBVVCwKICBfX0dD
T05WX0ZVTExfT1VUUFVULAogIF9fR0NPTlZfSUxMRUdBTF9JTlBVVCwKICBfX0dDT05WX0lOQ09N
UExFVEVfSU5QVVQsCgogIF9fR0NPTlZfSUxMRUdBTF9ERVNDUklQVE9SLAogIF9fR0NPTlZfSU5U
RVJOQUxfRVJST1IKfTsKCgoKZW51bQp7CiAgX19HQ09OVl9JU19MQVNUID0gMHgwMDAxLAogIF9f
R0NPTlZfSUdOT1JFX0VSUk9SUyA9IDB4MDAwMgp9OwoKCgpzdHJ1Y3QgX19nY29udl9zdGVwOwpz
dHJ1Y3QgX19nY29udl9zdGVwX2RhdGE7CnN0cnVjdCBfX2djb252X2xvYWRlZF9vYmplY3Q7CnN0
cnVjdCBfX2djb252X3RyYW5zX2RhdGE7CgoKCnR5cGVkZWYgaW50ICgqX19nY29udl9mY3QpIChz
dHJ1Y3QgX19nY29udl9zdGVwICosIHN0cnVjdCBfX2djb252X3N0ZXBfZGF0YSAqLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB1bnNpZ25lZCBjaGFyICoqLCBfX2NvbnN0IHVu
c2lnbmVkIGNoYXIgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIg
KiosIHNpemVfdCAqLCBpbnQsIGludCk7CgoKdHlwZWRlZiBpbnQgKCpfX2djb252X2luaXRfZmN0
KSAoc3RydWN0IF9fZ2NvbnZfc3RlcCAqKTsKdHlwZWRlZiB2b2lkICgqX19nY29udl9lbmRfZmN0
KSAoc3RydWN0IF9fZ2NvbnZfc3RlcCAqKTsKCgoKdHlwZWRlZiBpbnQgKCpfX2djb252X3RyYW5z
X2ZjdCkgKHN0cnVjdCBfX2djb252X3N0ZXAgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0cnVjdCBfX2djb252X3N0ZXBfZGF0YSAqLCB2b2lkICosCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgdW5zaWduZWQgY2hhciAqKiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgdW5zaWduZWQgY2hhciAqLCB1bnNpZ25l
ZCBjaGFyICoqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICopOwoK
CnR5cGVkZWYgaW50ICgqX19nY29udl90cmFuc19jb250ZXh0X2ZjdCkgKHZvaWQgKiwgX19jb25z
dCB1bnNpZ25lZCBjaGFyICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF9fY29uc3QgdW5zaWduZWQgY2hhciAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICosIHVuc2lnbmVkIGNoYXIgKik7CgoKdHlwZWRl
ZiBpbnQgKCpfX2djb252X3RyYW5zX3F1ZXJ5X2ZjdCkgKF9fY29uc3QgY2hhciAqLCBfX2NvbnN0
IGNoYXIgKioqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
ICopOwoKCnR5cGVkZWYgaW50ICgqX19nY29udl90cmFuc19pbml0X2ZjdCkgKHZvaWQgKiosIGNv
bnN0IGNoYXIgKik7CnR5cGVkZWYgdm9pZCAoKl9fZ2NvbnZfdHJhbnNfZW5kX2ZjdCkgKHZvaWQg
Kik7CgpzdHJ1Y3QgX19nY29udl90cmFuc19kYXRhCnsKCiAgX19nY29udl90cmFuc19mY3QgX190
cmFuc19mY3Q7CiAgX19nY29udl90cmFuc19jb250ZXh0X2ZjdCBfX3RyYW5zX2NvbnRleHRfZmN0
OwogIF9fZ2NvbnZfdHJhbnNfZW5kX2ZjdCBfX3RyYW5zX2VuZF9mY3Q7CiAgdm9pZCAqX19kYXRh
OwogIHN0cnVjdCBfX2djb252X3RyYW5zX2RhdGEgKl9fbmV4dDsKfTsKCgoKc3RydWN0IF9fZ2Nv
bnZfc3RlcAp7CiAgc3RydWN0IF9fZ2NvbnZfbG9hZGVkX29iamVjdCAqX19zaGxpYl9oYW5kbGU7
CiAgX19jb25zdCBjaGFyICpfX21vZG5hbWU7CgogIGludCBfX2NvdW50ZXI7CgogIGNoYXIgKl9f
ZnJvbV9uYW1lOwogIGNoYXIgKl9fdG9fbmFtZTsKCiAgX19nY29udl9mY3QgX19mY3Q7CiAgX19n
Y29udl9pbml0X2ZjdCBfX2luaXRfZmN0OwogIF9fZ2NvbnZfZW5kX2ZjdCBfX2VuZF9mY3Q7CgoK
CiAgaW50IF9fbWluX25lZWRlZF9mcm9tOwogIGludCBfX21heF9uZWVkZWRfZnJvbTsKICBpbnQg
X19taW5fbmVlZGVkX3RvOwogIGludCBfX21heF9uZWVkZWRfdG87CgoKICBpbnQgX19zdGF0ZWZ1
bDsKCiAgdm9pZCAqX19kYXRhOwp9OwoKCgpzdHJ1Y3QgX19nY29udl9zdGVwX2RhdGEKewogIHVu
c2lnbmVkIGNoYXIgKl9fb3V0YnVmOwogIHVuc2lnbmVkIGNoYXIgKl9fb3V0YnVmZW5kOwoKCgog
IGludCBfX2ZsYWdzOwoKCgogIGludCBfX2ludm9jYXRpb25fY291bnRlcjsKCgoKICBpbnQgX19p
bnRlcm5hbF91c2U7CgogIF9fbWJzdGF0ZV90ICpfX3N0YXRlcDsKICBfX21ic3RhdGVfdCBfX3N0
YXRlOwoKCgogIHN0cnVjdCBfX2djb252X3RyYW5zX2RhdGEgKl9fdHJhbnM7Cn07CgoKCnR5cGVk
ZWYgc3RydWN0IF9fZ2NvbnZfaW5mbwp7CiAgc2l6ZV90IF9fbnN0ZXBzOwogIHN0cnVjdCBfX2dj
b252X3N0ZXAgKl9fc3RlcHM7CiAgX19leHRlbnNpb25fXyBzdHJ1Y3QgX19nY29udl9zdGVwX2Rh
dGEgX19kYXRhIFtdOwp9ICpfX2djb252X3Q7CiMgNDUgIi91c3IvaW5jbHVkZS9fR19jb25maWcu
aCIgMiAzCnR5cGVkZWYgdW5pb24KewogIHN0cnVjdCBfX2djb252X2luZm8gX19jZDsKICBzdHJ1
Y3QKICB7CiAgICBzdHJ1Y3QgX19nY29udl9pbmZvIF9fY2Q7CiAgICBzdHJ1Y3QgX19nY29udl9z
dGVwX2RhdGEgX19kYXRhOwogIH0gX19jb21iaW5lZDsKfSBfR19pY29udl90OwoKdHlwZWRlZiBp
bnQgX0dfaW50MTZfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fSElfXykpKTsKdHlwZWRl
ZiBpbnQgX0dfaW50MzJfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fU0lfXykpKTsKdHlw
ZWRlZiB1bnNpZ25lZCBpbnQgX0dfdWludDE2X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChf
X0hJX18pKSk7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9HX3VpbnQzMl90IF9fYXR0cmlidXRlX18g
KChfX21vZGVfXyAoX19TSV9fKSkpOwojIDMzICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMiAzCiMg
NTMgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2LXBj
LWxpbnV4LWdudS8zLjIuMi9pbmNsdWRlL3N0ZGFyZy5oIiAxIDMKIyA0MyAiL3Vzci9saWIvZ2Nj
LWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjIuMi9pbmNsdWRlL3N0ZGFyZy5oIiAzCnR5cGVkZWYg
X19idWlsdGluX3ZhX2xpc3QgX19nbnVjX3ZhX2xpc3Q7CiMgNTQgIi91c3IvaW5jbHVkZS9saWJp
by5oIiAyIDMKIyAxNjAgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCnN0cnVjdCBfSU9fanVtcF90
OyBzdHJ1Y3QgX0lPX0ZJTEU7CiMgMTcwICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwp0eXBlZGVm
IHZvaWQgX0lPX2xvY2tfdDsKCgoKCgpzdHJ1Y3QgX0lPX21hcmtlciB7CiAgc3RydWN0IF9JT19t
YXJrZXIgKl9uZXh0OwogIHN0cnVjdCBfSU9fRklMRSAqX3NidWY7CgoKCiAgaW50IF9wb3M7CiMg
MTkzICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwp9OwoKCmVudW0gX19jb2RlY3Z0X3Jlc3VsdAp7
CiAgX19jb2RlY3Z0X29rLAogIF9fY29kZWN2dF9wYXJ0aWFsLAogIF9fY29kZWN2dF9lcnJvciwK
ICBfX2NvZGVjdnRfbm9jb252Cn07CiMgMjYxICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwpzdHJ1
Y3QgX0lPX0ZJTEUgewogIGludCBfZmxhZ3M7CgoKCgogIGNoYXIqIF9JT19yZWFkX3B0cjsKICBj
aGFyKiBfSU9fcmVhZF9lbmQ7CiAgY2hhciogX0lPX3JlYWRfYmFzZTsKICBjaGFyKiBfSU9fd3Jp
dGVfYmFzZTsKICBjaGFyKiBfSU9fd3JpdGVfcHRyOwogIGNoYXIqIF9JT193cml0ZV9lbmQ7CiAg
Y2hhciogX0lPX2J1Zl9iYXNlOwogIGNoYXIqIF9JT19idWZfZW5kOwoKICBjaGFyICpfSU9fc2F2
ZV9iYXNlOwogIGNoYXIgKl9JT19iYWNrdXBfYmFzZTsKICBjaGFyICpfSU9fc2F2ZV9lbmQ7Cgog
IHN0cnVjdCBfSU9fbWFya2VyICpfbWFya2VyczsKCiAgc3RydWN0IF9JT19GSUxFICpfY2hhaW47
CgogIGludCBfZmlsZW5vOwogIGludCBfYmxrc2l6ZTsKICBfX29mZl90IF9vbGRfb2Zmc2V0OwoK
CgogIHVuc2lnbmVkIHNob3J0IF9jdXJfY29sdW1uOwogIHNpZ25lZCBjaGFyIF92dGFibGVfb2Zm
c2V0OwogIGNoYXIgX3Nob3J0YnVmWzFdOwoKCgogIF9JT19sb2NrX3QgKl9sb2NrOwojIDMwNSAi
L3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKICBfX29mZjY0X3QgX29mZnNldDsKCgoKCgogIHZvaWQg
Kl9fcGFkMTsKICB2b2lkICpfX3BhZDI7CgogIGludCBfbW9kZTsKCiAgY2hhciBfdW51c2VkMlsx
NSAqIHNpemVvZiAoaW50KSAtIDIgKiBzaXplb2YgKHZvaWQgKildOwoKfTsKCgp0eXBlZGVmIHN0
cnVjdCBfSU9fRklMRSBfSU9fRklMRTsKCgpzdHJ1Y3QgX0lPX0ZJTEVfcGx1czsKCmV4dGVybiBz
dHJ1Y3QgX0lPX0ZJTEVfcGx1cyBfSU9fMl8xX3N0ZGluXzsKZXh0ZXJuIHN0cnVjdCBfSU9fRklM
RV9wbHVzIF9JT18yXzFfc3Rkb3V0XzsKZXh0ZXJuIHN0cnVjdCBfSU9fRklMRV9wbHVzIF9JT18y
XzFfc3RkZXJyXzsKIyAzNDQgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCnR5cGVkZWYgX19zc2l6
ZV90IF9faW9fcmVhZF9mbiAodm9pZCAqX19jb29raWUsIGNoYXIgKl9fYnVmLCBzaXplX3QgX19u
Ynl0ZXMpOwoKCgoKCgoKdHlwZWRlZiBfX3NzaXplX3QgX19pb193cml0ZV9mbiAodm9pZCAqX19j
b29raWUsIF9fY29uc3QgY2hhciAqX19idWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBfX24pOwoKCgoKCgoKdHlwZWRlZiBpbnQgX19pb19zZWVrX2ZuICh2b2lkICpf
X2Nvb2tpZSwgX19vZmY2NF90ICpfX3BvcywgaW50IF9fdyk7CgoKdHlwZWRlZiBpbnQgX19pb19j
bG9zZV9mbiAodm9pZCAqX19jb29raWUpOwojIDM5NiAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMK
ZXh0ZXJuIGludCBfX3VuZGVyZmxvdyAoX0lPX0ZJTEUgKikgOwpleHRlcm4gaW50IF9fdWZsb3cg
KF9JT19GSUxFICopIDsKZXh0ZXJuIGludCBfX292ZXJmbG93IChfSU9fRklMRSAqLCBpbnQpIDsK
ZXh0ZXJuIHdpbnRfdCBfX3d1bmRlcmZsb3cgKF9JT19GSUxFICopIDsKZXh0ZXJuIHdpbnRfdCBf
X3d1ZmxvdyAoX0lPX0ZJTEUgKikgOwpleHRlcm4gd2ludF90IF9fd292ZXJmbG93IChfSU9fRklM
RSAqLCB3aW50X3QpIDsKIyA0MjYgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCmV4dGVybiBpbnQg
X0lPX2dldGMgKF9JT19GSUxFICpfX2ZwKSA7CmV4dGVybiBpbnQgX0lPX3B1dGMgKGludCBfX2Ms
IF9JT19GSUxFICpfX2ZwKSA7CmV4dGVybiBpbnQgX0lPX2Zlb2YgKF9JT19GSUxFICpfX2ZwKSA7
CmV4dGVybiBpbnQgX0lPX2ZlcnJvciAoX0lPX0ZJTEUgKl9fZnApIDsKCmV4dGVybiBpbnQgX0lP
X3BlZWtjX2xvY2tlZCAoX0lPX0ZJTEUgKl9fZnApIDsKCgoKCgpleHRlcm4gdm9pZCBfSU9fZmxv
Y2tmaWxlIChfSU9fRklMRSAqKSA7CmV4dGVybiB2b2lkIF9JT19mdW5sb2NrZmlsZSAoX0lPX0ZJ
TEUgKikgOwpleHRlcm4gaW50IF9JT19mdHJ5bG9ja2ZpbGUgKF9JT19GSUxFICopIDsKIyA0NTYg
Ii91c3IvaW5jbHVkZS9saWJpby5oIiAzCmV4dGVybiBpbnQgX0lPX3Zmc2NhbmYgKF9JT19GSUxF
ICogX19yZXN0cmljdCwgY29uc3QgY2hhciAqIF9fcmVzdHJpY3QsCiAgICAgICAgICAgICAgICAg
ICAgICAgIF9fZ251Y192YV9saXN0LCBpbnQgKl9fcmVzdHJpY3QpIDsKZXh0ZXJuIGludCBfSU9f
dmZwcmludGYgKF9JT19GSUxFICpfX3Jlc3RyaWN0LCBjb25zdCBjaGFyICpfX3Jlc3RyaWN0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgX19nbnVjX3ZhX2xpc3QpIDsKZXh0ZXJuIF9fc3NpemVf
dCBfSU9fcGFkbiAoX0lPX0ZJTEUgKiwgaW50LCBfX3NzaXplX3QpIDsKZXh0ZXJuIHNpemVfdCBf
SU9fc2dldG4gKF9JT19GSUxFICosIHZvaWQgKiwgc2l6ZV90KSA7CgpleHRlcm4gX19vZmY2NF90
IF9JT19zZWVrb2ZmIChfSU9fRklMRSAqLCBfX29mZjY0X3QsIGludCwgaW50KSA7CmV4dGVybiBf
X29mZjY0X3QgX0lPX3NlZWtwb3MgKF9JT19GSUxFICosIF9fb2ZmNjRfdCwgaW50KSA7CgpleHRl
cm4gdm9pZCBfSU9fZnJlZV9iYWNrdXBfYXJlYSAoX0lPX0ZJTEUgKikgOwojIDc1ICIvdXNyL2xp
Yi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMi4yL2luY2x1ZGUvc3RkaW8uaCIgMiAzCiMg
OTEgIi91c3IvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4yLjIvaW5jbHVkZS9zdGRp
by5oIiAzCnR5cGVkZWYgX0dfZnBvczY0X3QgZnBvc190OwojIDEzOCAiL3Vzci9saWIvZ2NjLWxp
Yi9pNjg2LXBjLWxpbnV4LWdudS8zLjIuMi9pbmNsdWRlL3N0ZGlvLmgiIDMKIyAxICIvdXNyL2lu
Y2x1ZGUvYml0cy9zdGRpb19saW0uaCIgMSAzCiMgMTM5ICIvdXNyL2xpYi9nY2MtbGliL2k2ODYt
cGMtbGludXgtZ251LzMuMi4yL2luY2x1ZGUvc3RkaW8uaCIgMiAzCgoKCmV4dGVybiBGSUxFICpz
dGRpbjsKZXh0ZXJuIEZJTEUgKnN0ZG91dDsKZXh0ZXJuIEZJTEUgKnN0ZGVycjsKCgoKCgoKZXh0
ZXJuIGludCByZW1vdmUgKF9fY29uc3QgY2hhciAqX19maWxlbmFtZSkgOwoKZXh0ZXJuIGludCBy
ZW5hbWUgKF9fY29uc3QgY2hhciAqX19vbGQsIF9fY29uc3QgY2hhciAqX19uZXcpIDsKCgoKCgoK
CmV4dGVybiBGSUxFICp0bXBmaWxlICh2b2lkKSBfX2FzbV9fICgiIiAidG1wZmlsZTY0Iik7CiMg
MTcwICIvdXNyL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMi4yL2luY2x1ZGUvc3Rk
aW8uaCIgMwpleHRlcm4gY2hhciAqdG1wbmFtIChjaGFyICpfX3MpIDsKCgoKCmV4dGVybiBjaGFy
ICp0bXBuYW1fciAoY2hhciAqX19zKSA7CiMgMTg3ICIvdXNyL2xpYi9nY2MtbGliL2k2ODYtcGMt
bGludXgtZ251LzMuMi4yL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gY2hhciAqdGVtcG5hbSAo
X19jb25zdCBjaGFyICpfX2RpciwgX19jb25zdCBjaGFyICpfX3BmeCkKICAgICBfX2F0dHJpYnV0
ZV9fICgoX19tYWxsb2NfXykpOwoKCgoKZXh0ZXJuIGludCBmY2xvc2UgKEZJTEUgKl9fc3RyZWFt
KSA7CgpleHRlcm4gaW50IGZmbHVzaCAoRklMRSAqX19zdHJlYW0pIDsKCgoKZXh0ZXJuIGludCBm
Zmx1c2hfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKSA7CiMgMjE4ICIvdXNyL2xpYi9nY2MtbGli
L2k2ODYtcGMtbGludXgtZ251LzMuMi4yL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gRklMRSAq
Zm9wZW4gKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZpbGVuYW1lLCBfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19tb2RlcykgX19hc21fXyAoIiIgImZvcGVuNjQiKTsKCgpleHRlcm4gRklM
RSAqZnJlb3BlbiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZmlsZW5hbWUsIF9fY29uc3Qg
Y2hhciAqX19yZXN0cmljdCBfX21vZGVzLCBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSBfX2Fz
bV9fICgiIiAiZnJlb3BlbjY0Iik7CiMgMjQwICIvdXNyL2xpYi9nY2MtbGliL2k2ODYtcGMtbGlu
dXgtZ251LzMuMi4yL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gRklMRSAqZmRvcGVuIChpbnQg
X19mZCwgX19jb25zdCBjaGFyICpfX21vZGVzKSA7CiMgMjYzICIvdXNyL2xpYi9nY2MtbGliL2k2
ODYtcGMtbGludXgtZ251LzMuMi4yL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gdm9pZCBzZXRi
dWYgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sIGNoYXIgKl9fcmVzdHJpY3QgX19idWYpIDsK
CgoKZXh0ZXJuIGludCBzZXR2YnVmIChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLCBjaGFyICpf
X3Jlc3RyaWN0IF9fYnVmLAogICAgICAgICAgICAgICAgICAgIGludCBfX21vZGVzLCBzaXplX3Qg
X19uKSA7CgoKCgpleHRlcm4gdm9pZCBzZXRidWZmZXIgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJl
YW0sIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsCiAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IF9fc2l6ZSkgOwoKCmV4dGVybiB2b2lkIHNldGxpbmVidWYgKEZJTEUgKl9fc3RyZWFtKSA7CgoK
CgpleHRlcm4gaW50IGZwcmludGYgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sCiAgICAgICAg
ICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pIDsKCmV4
dGVybiBpbnQgcHJpbnRmIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikg
OwoKZXh0ZXJuIGludCBzcHJpbnRmIChjaGFyICpfX3Jlc3RyaWN0IF9fcywKICAgICAgICAgICAg
ICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgOwoKCmV4dGVy
biBpbnQgdmZwcmludGYgKEZJTEUgKl9fcmVzdHJpY3QgX19zLCBfX2NvbnN0IGNoYXIgKl9fcmVz
dHJpY3QgX19mb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgIF9fZ251Y192YV9saXN0IF9fYXJn
KSA7CgpleHRlcm4gaW50IHZwcmludGYgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1h
dCwgX19nbnVjX3ZhX2xpc3QgX19hcmcpCiAgICAgOwoKZXh0ZXJuIGludCB2c3ByaW50ZiAoY2hh
ciAqX19yZXN0cmljdCBfX3MsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwKICAg
ICAgICAgICAgICAgICAgICAgX19nbnVjX3ZhX2xpc3QgX19hcmcpIDsKCgoKZXh0ZXJuIGludCBz
bnByaW50ZiAoY2hhciAqX19yZXN0cmljdCBfX3MsIHNpemVfdCBfX21heGxlbiwKICAgICAgICAg
ICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pCiAgICAg
X19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDMsIDQpKSk7CgpleHRlcm4g
aW50IHZzbnByaW50ZiAoY2hhciAqX19yZXN0cmljdCBfX3MsIHNpemVfdCBfX21heGxlbiwKICAg
ICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgX19n
bnVjX3ZhX2xpc3QgX19hcmcpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJp
bnRmX18sIDMsIDApKSk7CiMgMzM0ICIvdXNyL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251
LzMuMi4yL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gaW50IGZzY2FuZiAoRklMRSAqX19yZXN0
cmljdCBfX3N0cmVhbSwKICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmlj
dCBfX2Zvcm1hdCwgLi4uKSA7CgpleHRlcm4gaW50IHNjYW5mIChfX2NvbnN0IGNoYXIgKl9fcmVz
dHJpY3QgX19mb3JtYXQsIC4uLikgOwoKZXh0ZXJuIGludCBzc2NhbmYgKF9fY29uc3QgY2hhciAq
X19yZXN0cmljdCBfX3MsCiAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJp
Y3QgX19mb3JtYXQsIC4uLikgOwojIDM2MCAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4
LWdudS8zLjIuMi9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIGludCBmZ2V0YyAoRklMRSAqX19z
dHJlYW0pIDsKZXh0ZXJuIGludCBnZXRjIChGSUxFICpfX3N0cmVhbSkgOwoKCmV4dGVybiBpbnQg
Z2V0Y2hhciAodm9pZCkgOwoKCgoKCgoKZXh0ZXJuIGludCBnZXRjX3VubG9ja2VkIChGSUxFICpf
X3N0cmVhbSkgOwpleHRlcm4gaW50IGdldGNoYXJfdW5sb2NrZWQgKHZvaWQpIDsKCgoKCmV4dGVy
biBpbnQgZmdldGNfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKSA7CgoKCgpleHRlcm4gaW50IGZw
dXRjIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkgOwpleHRlcm4gaW50IHB1dGMgKGludCBfX2Ms
IEZJTEUgKl9fc3RyZWFtKSA7CgoKZXh0ZXJuIGludCBwdXRjaGFyIChpbnQgX19jKSA7CgoKCgoK
CgpleHRlcm4gaW50IGZwdXRjX3VubG9ja2VkIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkgOwoK
CgoKZXh0ZXJuIGludCBwdXRjX3VubG9ja2VkIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkgOwpl
eHRlcm4gaW50IHB1dGNoYXJfdW5sb2NrZWQgKGludCBfX2MpIDsKCgoKCgpleHRlcm4gaW50IGdl
dHcgKEZJTEUgKl9fc3RyZWFtKSA7CgoKZXh0ZXJuIGludCBwdXR3IChpbnQgX193LCBGSUxFICpf
X3N0cmVhbSkgOwoKCgoKZXh0ZXJuIGNoYXIgKmZnZXRzIChjaGFyICpfX3Jlc3RyaWN0IF9fcywg
aW50IF9fbiwgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkKICAgICA7CiMgNDI2ICIvdXNyL2xp
Yi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMi4yL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRl
cm4gY2hhciAqZ2V0cyAoY2hhciAqX19zKSA7CiMgNDUwICIvdXNyL2xpYi9nY2MtbGliL2k2ODYt
cGMtbGludXgtZ251LzMuMi4yL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gaW50IGZwdXRzIChf
X2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zLCBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKQog
ICAgIDsKIyA0NjAgIi91c3IvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4yLjIvaW5j
bHVkZS9zdGRpby5oIiAzCmV4dGVybiBpbnQgcHV0cyAoX19jb25zdCBjaGFyICpfX3MpIDsKCgoK
ZXh0ZXJuIGludCB1bmdldGMgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKSA7CgoKCmV4dGVybiBz
aXplX3QgZnJlYWQgKHZvaWQgKl9fcmVzdHJpY3QgX19wdHIsIHNpemVfdCBfX3NpemUsCiAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIDsK
CmV4dGVybiBzaXplX3QgZndyaXRlIChfX2NvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19wdHIsIHNp
emVfdCBfX3NpemUsCiAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19uLCBGSUxFICpfX3Jl
c3RyaWN0IF9fcykgOwoKCgpleHRlcm4gc2l6ZV90IGZyZWFkX3VubG9ja2VkICh2b2lkICpfX3Jl
c3RyaWN0IF9fcHRyLCBzaXplX3QgX19zaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3QgX19uLCBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSA7CmV4dGVybiBzaXplX3Qg
ZndyaXRlX3VubG9ja2VkIChfX2NvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19wdHIsIHNpemVfdCBf
X3NpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19uLCBGSUxFICpf
X3Jlc3RyaWN0IF9fc3RyZWFtKSA7CgoKCgpleHRlcm4gaW50IGZzZWVrIChGSUxFICpfX3N0cmVh
bSwgbG9uZyBpbnQgX19vZmYsIGludCBfX3doZW5jZSkgOwoKZXh0ZXJuIGxvbmcgaW50IGZ0ZWxs
IChGSUxFICpfX3N0cmVhbSkgOwoKZXh0ZXJuIHZvaWQgcmV3aW5kIChGSUxFICpfX3N0cmVhbSkg
OwojIDUxNiAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjIuMi9pbmNsdWRl
L3N0ZGlvLmgiIDMKZXh0ZXJuIGludCBmZ2V0cG9zIChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFt
LCBmcG9zX3QgKl9fcmVzdHJpY3QgX19wb3MpIF9fYXNtX18gKCIiICJmZ2V0cG9zNjQiKTsKCmV4
dGVybiBpbnQgZnNldHBvcyAoRklMRSAqX19zdHJlYW0sIF9fY29uc3QgZnBvc190ICpfX3Bvcykg
X19hc21fXyAoIiIgImZzZXRwb3M2NCIpOwojIDU0MCAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2LXBj
LWxpbnV4LWdudS8zLjIuMi9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIHZvaWQgY2xlYXJlcnIg
KEZJTEUgKl9fc3RyZWFtKSA7CgpleHRlcm4gaW50IGZlb2YgKEZJTEUgKl9fc3RyZWFtKSA7Cgpl
eHRlcm4gaW50IGZlcnJvciAoRklMRSAqX19zdHJlYW0pIDsKCgoKZXh0ZXJuIHZvaWQgY2xlYXJl
cnJfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKSA7CmV4dGVybiBpbnQgZmVvZl91bmxvY2tlZCAo
RklMRSAqX19zdHJlYW0pIDsKZXh0ZXJuIGludCBmZXJyb3JfdW5sb2NrZWQgKEZJTEUgKl9fc3Ry
ZWFtKSA7CgoKCgpleHRlcm4gdm9pZCBwZXJyb3IgKF9fY29uc3QgY2hhciAqX19zKSA7CgoKCgpl
eHRlcm4gaW50IHN5c19uZXJyOwpleHRlcm4gX19jb25zdCBjaGFyICpfX2NvbnN0IHN5c19lcnJs
aXN0W107CiMgNTcxICIvdXNyL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMi4yL2lu
Y2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gaW50IGZpbGVubyAoRklMRSAqX19zdHJlYW0pIDsKCgoK
CmV4dGVybiBpbnQgZmlsZW5vX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkgOwoKCgoKCgpleHRl
cm4gRklMRSAqcG9wZW4gKF9fY29uc3QgY2hhciAqX19jb21tYW5kLCBfX2NvbnN0IGNoYXIgKl9f
bW9kZXMpIDsKCgpleHRlcm4gaW50IHBjbG9zZSAoRklMRSAqX19zdHJlYW0pIDsKCgoKCgpleHRl
cm4gY2hhciAqY3Rlcm1pZCAoY2hhciAqX19zKSA7CiMgNjE4ICIvdXNyL2xpYi9nY2MtbGliL2k2
ODYtcGMtbGludXgtZ251LzMuMi4yL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gdm9pZCBmbG9j
a2ZpbGUgKEZJTEUgKl9fc3RyZWFtKSA7CgoKCmV4dGVybiBpbnQgZnRyeWxvY2tmaWxlIChGSUxF
ICpfX3N0cmVhbSkgOwoKCmV4dGVybiB2b2lkIGZ1bmxvY2tmaWxlIChGSUxFICpfX3N0cmVhbSkg
OwojIDYzOSAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjIuMi9pbmNsdWRl
L3N0ZGlvLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9zdGRpby5oIiAxIDMKIyAzMyAiL3Vz
ci9pbmNsdWRlL2JpdHMvc3RkaW8uaCIgMwpleHRlcm4gX19pbmxpbmUgaW50CnZwcmludGYgKF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZtdCwgX19nbnVjX3ZhX2xpc3QgX19hcmcpCnsKICBy
ZXR1cm4gdmZwcmludGYgKHN0ZG91dCwgX19mbXQsIF9fYXJnKTsKfQoKCmV4dGVybiBfX2lubGlu
ZSBpbnQKZ2V0Y2hhciAodm9pZCkKewogIHJldHVybiBfSU9fZ2V0YyAoc3RkaW4pOwp9CgoKCgpl
eHRlcm4gX19pbmxpbmUgaW50CmdldGNfdW5sb2NrZWQgKEZJTEUgKl9fZnApCnsKICByZXR1cm4g
KChfX2ZwKS0+X0lPX3JlYWRfcHRyID49IChfX2ZwKS0+X0lPX3JlYWRfZW5kID8gX191ZmxvdyAo
X19mcCkgOiAqKHVuc2lnbmVkIGNoYXIgKikgKF9fZnApLT5fSU9fcmVhZF9wdHIrKyk7Cn0KCgpl
eHRlcm4gX19pbmxpbmUgaW50CmdldGNoYXJfdW5sb2NrZWQgKHZvaWQpCnsKICByZXR1cm4gKChz
dGRpbiktPl9JT19yZWFkX3B0ciA+PSAoc3RkaW4pLT5fSU9fcmVhZF9lbmQgPyBfX3VmbG93IChz
dGRpbikgOiAqKHVuc2lnbmVkIGNoYXIgKikgKHN0ZGluKS0+X0lPX3JlYWRfcHRyKyspOwp9CgoK
CgpleHRlcm4gX19pbmxpbmUgaW50CnB1dGNoYXIgKGludCBfX2MpCnsKICByZXR1cm4gX0lPX3B1
dGMgKF9fYywgc3Rkb3V0KTsKfQoKCgoKZXh0ZXJuIF9faW5saW5lIGludApmcHV0Y191bmxvY2tl
ZCAoaW50IF9fYywgRklMRSAqX19zdHJlYW0pCnsKICByZXR1cm4gKCgoX19zdHJlYW0pLT5fSU9f
d3JpdGVfcHRyID49IChfX3N0cmVhbSktPl9JT193cml0ZV9lbmQpID8gX19vdmVyZmxvdyAoX19z
dHJlYW0sICh1bnNpZ25lZCBjaGFyKSAoX19jKSkgOiAodW5zaWduZWQgY2hhcikgKCooX19zdHJl
YW0pLT5fSU9fd3JpdGVfcHRyKysgPSAoX19jKSkpOwp9CgoKCgoKZXh0ZXJuIF9faW5saW5lIGlu
dApwdXRjX3VubG9ja2VkIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkKewogIHJldHVybiAoKChf
X3N0cmVhbSktPl9JT193cml0ZV9wdHIgPj0gKF9fc3RyZWFtKS0+X0lPX3dyaXRlX2VuZCkgPyBf
X292ZXJmbG93IChfX3N0cmVhbSwgKHVuc2lnbmVkIGNoYXIpIChfX2MpKSA6ICh1bnNpZ25lZCBj
aGFyKSAoKihfX3N0cmVhbSktPl9JT193cml0ZV9wdHIrKyA9IChfX2MpKSk7Cn0KCgpleHRlcm4g
X19pbmxpbmUgaW50CnB1dGNoYXJfdW5sb2NrZWQgKGludCBfX2MpCnsKICByZXR1cm4gKCgoc3Rk
b3V0KS0+X0lPX3dyaXRlX3B0ciA+PSAoc3Rkb3V0KS0+X0lPX3dyaXRlX2VuZCkgPyBfX292ZXJm
bG93IChzdGRvdXQsICh1bnNpZ25lZCBjaGFyKSAoX19jKSkgOiAodW5zaWduZWQgY2hhcikgKCoo
c3Rkb3V0KS0+X0lPX3dyaXRlX3B0cisrID0gKF9fYykpKTsKfQojIDExMSAiL3Vzci9pbmNsdWRl
L2JpdHMvc3RkaW8uaCIgMwpleHRlcm4gX19pbmxpbmUgaW50CmZlb2ZfdW5sb2NrZWQgKEZJTEUg
Kl9fc3RyZWFtKQp7CiAgcmV0dXJuICgoKF9fc3RyZWFtKS0+X2ZsYWdzICYgMHgxMCkgIT0gMCk7
Cn0KCgpleHRlcm4gX19pbmxpbmUgaW50CmZlcnJvcl91bmxvY2tlZCAoRklMRSAqX19zdHJlYW0p
CnsKICByZXR1cm4gKCgoX19zdHJlYW0pLT5fZmxhZ3MgJiAweDIwKSAhPSAwKTsKfQojIDY0MCAi
L3Vzci9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjIuMi9pbmNsdWRlL3N0ZGlvLmgi
IDIgMwoKCgojIDEwICJyYWdlMTI4X3ZpZC5jIiAyCiMgMSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5o
IiAxIDMKIyAzMyAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCiMgMSAiL3Vzci9saWIvZ2NjLWxp
Yi9pNjg2LXBjLWxpbnV4LWdudS8zLjIuMi9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAzNCAiL3Vz
ci9pbmNsdWRlL3N0ZGxpYi5oIiAyIDMKCgojIDk0ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMK
dHlwZWRlZiBzdHJ1Y3QKICB7CiAgICBpbnQgcXVvdDsKICAgIGludCByZW07CiAgfSBkaXZfdDsK
CgoKdHlwZWRlZiBzdHJ1Y3QKICB7CiAgICBsb25nIGludCBxdW90OwogICAgbG9uZyBpbnQgcmVt
OwogIH0gbGRpdl90OwojIDEzMyAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVybiBzaXpl
X3QgX19jdHlwZV9nZXRfbWJfY3VyX21heCAodm9pZCkgOwoKCgpleHRlcm4gZG91YmxlIGF0b2Yg
KF9fY29uc3QgY2hhciAqX19ucHRyKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCmV4dGVy
biBpbnQgYXRvaSAoX19jb25zdCBjaGFyICpfX25wdHIpIF9fYXR0cmlidXRlX18gKChfX3B1cmVf
XykpOwoKZXh0ZXJuIGxvbmcgaW50IGF0b2wgKF9fY29uc3QgY2hhciAqX19ucHRyKSBfX2F0dHJp
YnV0ZV9fICgoX19wdXJlX18pKTsKCgoKX19leHRlbnNpb25fXyBleHRlcm4gbG9uZyBsb25nIGlu
dCBhdG9sbCAoX19jb25zdCBjaGFyICpfX25wdHIpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVy
ZV9fKSk7CgoKCmV4dGVybiBkb3VibGUgc3RydG9kIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3Qg
X19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIp
IDsKIyAxNjMgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gbG9uZyBpbnQgc3RydG9s
IChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAg
ICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkgOwoKZXh0ZXJuIHVuc2ln
bmVkIGxvbmcgaW50IHN0cnRvdWwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0
ciwgaW50IF9fYmFzZSkKICAgICA7CgoKCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIGxvbmcgbG9uZyBp
bnQgc3RydG9xIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19iYXNlKSA7
CgpfX2V4dGVuc2lvbl9fCmV4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IHN0cnRvdXEgKF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19iYXNlKQogICAg
IDsKCgoKCgoKX19leHRlbnNpb25fXwpleHRlcm4gbG9uZyBsb25nIGludCBzdHJ0b2xsIChfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkgOwoKX19leHRlbnNpb25f
XwpleHRlcm4gdW5zaWduZWQgbG9uZyBsb25nIGludCBzdHJ0b3VsbCAoX19jb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19iYXNlKQogICAgIDsKIyAyNTAgIi91
c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gZG91YmxlIF9fc3RydG9kX2ludGVybmFsIChf
X2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fZ3JvdXApCiAgICAgOwpl
eHRlcm4gZmxvYXQgX19zdHJ0b2ZfaW50ZXJuYWwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBf
X25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3Qg
X19lbmRwdHIsIGludCBfX2dyb3VwKQogICAgIDsKZXh0ZXJuIGxvbmcgZG91YmxlIF9fc3RydG9s
ZF9pbnRlcm5hbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX2dyb3VwKSA7CgpleHRl
cm4gbG9uZyBpbnQgX19zdHJ0b2xfaW50ZXJuYWwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBf
X25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJp
Y3QgX19lbmRwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fYmFz
ZSwgaW50IF9fZ3JvdXApIDsKCgoKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgaW50IF9fc3RydG91bF9p
bnRlcm5hbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX2Jhc2Us
IGludCBfX2dyb3VwKSA7CgoKCgpfX2V4dGVuc2lvbl9fCmV4dGVybiBsb25nIGxvbmcgaW50IF9f
c3RydG9sbF9pbnRlcm5hbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2Vu
ZHB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19iYXNl
LCBpbnQgX19ncm91cCkgOwoKCgpfX2V4dGVuc2lvbl9fCmV4dGVybiB1bnNpZ25lZCBsb25nIGxv
bmcgaW50IF9fc3RydG91bGxfaW50ZXJuYWwgKF9fY29uc3QgY2hhciAqCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVzdHJpY3QgX19ucHRyLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoq
X19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IF9fYmFzZSwgaW50IF9fZ3JvdXApCiAgICAgOwoKCgoKCgoKZXh0
ZXJuIF9faW5saW5lIGRvdWJsZQpzdHJ0b2QgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25w
dHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyKQp7CiAgcmV0dXJuIF9fc3RydG9kX2ludGVy
bmFsIChfX25wdHIsIF9fZW5kcHRyLCAwKTsKfQpleHRlcm4gX19pbmxpbmUgbG9uZyBpbnQKc3Ry
dG9sIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmljdCBf
X2VuZHB0ciwKICAgICAgICBpbnQgX19iYXNlKQp7CiAgcmV0dXJuIF9fc3RydG9sX2ludGVybmFs
IChfX25wdHIsIF9fZW5kcHRyLCBfX2Jhc2UsIDApOwp9CmV4dGVybiBfX2lubGluZSB1bnNpZ25l
ZCBsb25nIGludApzdHJ0b3VsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLCBjaGFy
ICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgaW50IF9fYmFzZSkKewogIHJldHVybiBf
X3N0cnRvdWxfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIsIF9fYmFzZSwgMCk7Cn0KIyAzMjUg
Ii91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpfX2V4dGVuc2lvbl9fIGV4dGVybiBfX2lubGluZSBs
b25nIGxvbmcgaW50CnN0cnRvcSAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hh
ciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgaW50IF9fYmFzZSkKewogIHJldHVybiBf
X3N0cnRvbGxfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIsIF9fYmFzZSwgMCk7Cn0KX19leHRl
bnNpb25fXyBleHRlcm4gX19pbmxpbmUgdW5zaWduZWQgbG9uZyBsb25nIGludApzdHJ0b3VxIChf
X2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0
ciwKICAgICAgICAgaW50IF9fYmFzZSkKewogIHJldHVybiBfX3N0cnRvdWxsX2ludGVybmFsIChf
X25wdHIsIF9fZW5kcHRyLCBfX2Jhc2UsIDApOwp9CgoKCl9fZXh0ZW5zaW9uX18gZXh0ZXJuIF9f
aW5saW5lIGxvbmcgbG9uZyBpbnQKc3RydG9sbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f
bnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgIGludCBfX2Jhc2UpCnsK
ICByZXR1cm4gX19zdHJ0b2xsX2ludGVybmFsIChfX25wdHIsIF9fZW5kcHRyLCBfX2Jhc2UsIDAp
Owp9Cl9fZXh0ZW5zaW9uX18gZXh0ZXJuIF9faW5saW5lIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQK
c3RydG91bGwgKF9fY29uc3QgY2hhciAqIF9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19yZXN0
cmljdCBfX2VuZHB0ciwKICAgICAgICAgIGludCBfX2Jhc2UpCnsKICByZXR1cm4gX19zdHJ0b3Vs
bF9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0ciwgX19iYXNlLCAwKTsKfQoKCmV4dGVybiBfX2lu
bGluZSBkb3VibGUKYXRvZiAoX19jb25zdCBjaGFyICpfX25wdHIpCnsKICByZXR1cm4gc3RydG9k
IChfX25wdHIsIChjaGFyICoqKSAoKHZvaWQgKikwKSk7Cn0KZXh0ZXJuIF9faW5saW5lIGludAph
dG9pIChfX2NvbnN0IGNoYXIgKl9fbnB0cikKewogIHJldHVybiAoaW50KSBzdHJ0b2wgKF9fbnB0
ciwgKGNoYXIgKiopICgodm9pZCAqKTApLCAxMCk7Cn0KZXh0ZXJuIF9faW5saW5lIGxvbmcgaW50
CmF0b2wgKF9fY29uc3QgY2hhciAqX19ucHRyKQp7CiAgcmV0dXJuIHN0cnRvbCAoX19ucHRyLCAo
Y2hhciAqKikgKCh2b2lkICopMCksIDEwKTsKfQoKCl9fZXh0ZW5zaW9uX18gZXh0ZXJuIF9faW5s
aW5lIGxvbmcgbG9uZyBpbnQKYXRvbGwgKF9fY29uc3QgY2hhciAqX19ucHRyKQp7CiAgcmV0dXJu
IHN0cnRvbGwgKF9fbnB0ciwgKGNoYXIgKiopICgodm9pZCAqKTApLCAxMCk7Cn0KIyAzODQgIi91
c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gY2hhciAqbDY0YSAobG9uZyBpbnQgX19uKSA7
CgoKZXh0ZXJuIGxvbmcgaW50IGE2NGwgKF9fY29uc3QgY2hhciAqX19zKSBfX2F0dHJpYnV0ZV9f
ICgoX19wdXJlX18pKTsKCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMSAzCiMgMjgg
Ii91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMwoKCgoKCgp0eXBlZGVmIF9fdV9jaGFyIHVfY2hh
cjsKdHlwZWRlZiBfX3Vfc2hvcnQgdV9zaG9ydDsKdHlwZWRlZiBfX3VfaW50IHVfaW50Owp0eXBl
ZGVmIF9fdV9sb25nIHVfbG9uZzsKdHlwZWRlZiBfX3F1YWRfdCBxdWFkX3Q7CnR5cGVkZWYgX191
X3F1YWRfdCB1X3F1YWRfdDsKdHlwZWRlZiBfX2ZzaWRfdCBmc2lkX3Q7CgoKCgp0eXBlZGVmIF9f
bG9mZl90IGxvZmZfdDsKCgoKCgp0eXBlZGVmIF9faW5vNjRfdCBpbm9fdDsKIyA2MSAiL3Vzci9p
bmNsdWRlL3N5cy90eXBlcy5oIiAzCnR5cGVkZWYgX19kZXZfdCBkZXZfdDsKCgoKCnR5cGVkZWYg
X19naWRfdCBnaWRfdDsKCgoKCnR5cGVkZWYgX19tb2RlX3QgbW9kZV90OwoKCgoKdHlwZWRlZiBf
X25saW5rX3QgbmxpbmtfdDsKCgoKCnR5cGVkZWYgX191aWRfdCB1aWRfdDsKCgoKCgoKCnR5cGVk
ZWYgX19vZmY2NF90IG9mZl90OwojIDk5ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMKdHlw
ZWRlZiBfX3BpZF90IHBpZF90OwoKCgoKdHlwZWRlZiBfX2lkX3QgaWRfdDsKCgoKCnR5cGVkZWYg
X19zc2l6ZV90IHNzaXplX3Q7CgoKCgoKdHlwZWRlZiBfX2RhZGRyX3QgZGFkZHJfdDsKdHlwZWRl
ZiBfX2NhZGRyX3QgY2FkZHJfdDsKCgoKCgp0eXBlZGVmIF9fa2V5X3Qga2V5X3Q7CiMgMTMyICIv
dXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvdGltZS5oIiAxIDMK
IyA3MCAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwp0eXBlZGVmIF9fdGltZV90IHRpbWVfdDsKIyA4
MiAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwp0eXBlZGVmIF9fY2xvY2tpZF90IGNsb2NraWRfdDsK
IyA5NCAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwp0eXBlZGVmIF9fdGltZXJfdCB0aW1lcl90Owoj
IDEzMyAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMKIyAxNDYgIi91c3IvaW5jbHVkZS9z
eXMvdHlwZXMuaCIgMwojIDEgIi91c3IvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4y
LjIvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMTQ3ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgi
IDIgMwoKCgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IHVsb25nOwp0eXBlZGVmIHVuc2lnbmVk
IHNob3J0IGludCB1c2hvcnQ7CnR5cGVkZWYgdW5zaWduZWQgaW50IHVpbnQ7CiMgMTkwICIvdXNy
L2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMKdHlwZWRlZiBpbnQgaW50OF90IF9fYXR0cmlidXRlX18g
KChfX21vZGVfXyAoX19RSV9fKSkpOwp0eXBlZGVmIGludCBpbnQxNl90IF9fYXR0cmlidXRlX18g
KChfX21vZGVfXyAoX19ISV9fKSkpOwp0eXBlZGVmIGludCBpbnQzMl90IF9fYXR0cmlidXRlX18g
KChfX21vZGVfXyAoX19TSV9fKSkpOwp0eXBlZGVmIGludCBpbnQ2NF90IF9fYXR0cmlidXRlX18g
KChfX21vZGVfXyAoX19ESV9fKSkpOwoKCnR5cGVkZWYgdW5zaWduZWQgaW50IHVfaW50OF90IF9f
YXR0cmlidXRlX18gKChfX21vZGVfXyAoX19RSV9fKSkpOwp0eXBlZGVmIHVuc2lnbmVkIGludCB1
X2ludDE2X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX0hJX18pKSk7CnR5cGVkZWYgdW5z
aWduZWQgaW50IHVfaW50MzJfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fU0lfXykpKTsK
dHlwZWRlZiB1bnNpZ25lZCBpbnQgdV9pbnQ2NF90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAo
X19ESV9fKSkpOwoKdHlwZWRlZiBpbnQgcmVnaXN0ZXJfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2Rl
X18gKF9fd29yZF9fKSkpOwojIDIxMiAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAzCiMgMSAi
L3Vzci9pbmNsdWRlL2VuZGlhbi5oIiAxIDMKIyAzNyAiL3Vzci9pbmNsdWRlL2VuZGlhbi5oIiAz
CiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvZW5kaWFuLmgiIDEgMwojIDM4ICIvdXNyL2luY2x1ZGUv
ZW5kaWFuLmgiIDIgMwojIDIxMyAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMKCgojIDEg
Ii91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDEgMwojIDMxICIvdXNyL2luY2x1ZGUvc3lzL3Nl
bGVjdC5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvc2VsZWN0LmgiIDEgMwojIDMyICIvdXNy
L2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAyIDMKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3NpZ3Nl
dC5oIiAxIDMKIyAyMyAiL3Vzci9pbmNsdWRlL2JpdHMvc2lnc2V0LmgiIDMKdHlwZWRlZiBpbnQg
X19zaWdfYXRvbWljX3Q7CgoKCgp0eXBlZGVmIHN0cnVjdAogIHsKICAgIHVuc2lnbmVkIGxvbmcg
aW50IF9fdmFsWygxMDI0IC8gKDggKiBzaXplb2YgKHVuc2lnbmVkIGxvbmcgaW50KSkpXTsKICB9
IF9fc2lnc2V0X3Q7CiMgMzUgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDIgMwoKCgp0eXBl
ZGVmIF9fc2lnc2V0X3Qgc2lnc2V0X3Q7CgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvdGltZS5oIiAx
IDMKIyAxMDYgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKc3RydWN0IHRpbWVzcGVjCiAgewogICAg
X190aW1lX3QgdHZfc2VjOwogICAgbG9uZyBpbnQgdHZfbnNlYzsKICB9OwojIDQ1ICIvdXNyL2lu
Y2x1ZGUvc3lzL3NlbGVjdC5oIiAyIDMKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvdGltZS5oIiAx
IDMKIyA2NyAiL3Vzci9pbmNsdWRlL2JpdHMvdGltZS5oIiAzCnN0cnVjdCB0aW1ldmFsCiAgewog
ICAgX190aW1lX3QgdHZfc2VjOwogICAgX19zdXNlY29uZHNfdCB0dl91c2VjOwogIH07CiMgNDcg
Ii91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDIgMwoKCnR5cGVkZWYgX19zdXNlY29uZHNfdCBz
dXNlY29uZHNfdDsKCgoKCgp0eXBlZGVmIGxvbmcgaW50IF9fZmRfbWFzazsKCgoKCgoKCnR5cGVk
ZWYgc3RydWN0CiAgewoKCgoKCgogICAgX19mZF9tYXNrIF9fZmRzX2JpdHNbMTAyNCAvICg4ICog
c2l6ZW9mIChfX2ZkX21hc2spKV07CgoKICB9IGZkX3NldDsKCgoKCgoKdHlwZWRlZiBfX2ZkX21h
c2sgZmRfbWFzazsKIyA5NSAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMwoKCgoKCgoKZXh0
ZXJuIGludCBzZWxlY3QgKGludCBfX25mZHMsIGZkX3NldCAqX19yZXN0cmljdCBfX3JlYWRmZHMs
CiAgICAgICAgICAgICAgICAgICBmZF9zZXQgKl9fcmVzdHJpY3QgX193cml0ZWZkcywKICAgICAg
ICAgICAgICAgICAgIGZkX3NldCAqX19yZXN0cmljdCBfX2V4Y2VwdGZkcywKICAgICAgICAgICAg
ICAgICAgIHN0cnVjdCB0aW1ldmFsICpfX3Jlc3RyaWN0IF9fdGltZW91dCkgOwojIDExOCAiL3Vz
ci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMwoKIyAyMTYgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMu
aCIgMiAzCgoKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3N5c21hY3Jvcy5oIiAxIDMKIyAyMTkgIi91
c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzCiMgMjQzICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVz
LmgiIDMKdHlwZWRlZiBfX2Jsa2NudDY0X3QgYmxrY250X3Q7CgoKCnR5cGVkZWYgX19mc2Jsa2Nu
dDY0X3QgZnNibGtjbnRfdDsKCgoKdHlwZWRlZiBfX2ZzZmlsY250NjRfdCBmc2ZpbGNudF90Owoj
IDI2MiAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAzCgojIDM5MSAiL3Vzci9pbmNsdWRlL3N0
ZGxpYi5oIiAyIDMKCgoKCgoKZXh0ZXJuIGxvbmcgaW50IHJhbmRvbSAodm9pZCkgOwoKCmV4dGVy
biB2b2lkIHNyYW5kb20gKHVuc2lnbmVkIGludCBfX3NlZWQpIDsKCgoKCgpleHRlcm4gY2hhciAq
aW5pdHN0YXRlICh1bnNpZ25lZCBpbnQgX19zZWVkLCBjaGFyICpfX3N0YXRlYnVmLAogICAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3QgX19zdGF0ZWxlbikgOwoKCgpleHRlcm4gY2hhciAqc2V0
c3RhdGUgKGNoYXIgKl9fc3RhdGVidWYpIDsKCgoKCgoKCnN0cnVjdCByYW5kb21fZGF0YQogIHsK
ICAgIGludDMyX3QgKmZwdHI7CiAgICBpbnQzMl90ICpycHRyOwogICAgaW50MzJfdCAqc3RhdGU7
CiAgICBpbnQgcmFuZF90eXBlOwogICAgaW50IHJhbmRfZGVnOwogICAgaW50IHJhbmRfc2VwOwog
ICAgaW50MzJfdCAqZW5kX3B0cjsKICB9OwoKZXh0ZXJuIGludCByYW5kb21fciAoc3RydWN0IHJh
bmRvbV9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmLAogICAgICAgICAgICAgICAgICAgICBpbnQzMl90
ICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSA7CgpleHRlcm4gaW50IHNyYW5kb21fciAodW5zaWduZWQg
aW50IF9fc2VlZCwgc3RydWN0IHJhbmRvbV9kYXRhICpfX2J1ZikgOwoKZXh0ZXJuIGludCBpbml0
c3RhdGVfciAodW5zaWduZWQgaW50IF9fc2VlZCwgY2hhciAqX19yZXN0cmljdCBfX3N0YXRlYnVm
LAogICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19zdGF0ZWxlbiwKICAgICAgICAgICAg
ICAgICAgICAgICAgc3RydWN0IHJhbmRvbV9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmKSA7CgpleHRl
cm4gaW50IHNldHN0YXRlX3IgKGNoYXIgKl9fcmVzdHJpY3QgX19zdGF0ZWJ1ZiwKICAgICAgICAg
ICAgICAgICAgICAgICBzdHJ1Y3QgcmFuZG9tX2RhdGEgKl9fcmVzdHJpY3QgX19idWYpIDsKCgoK
CgpleHRlcm4gaW50IHJhbmQgKHZvaWQpIDsKCmV4dGVybiB2b2lkIHNyYW5kICh1bnNpZ25lZCBp
bnQgX19zZWVkKSA7CgoKCmV4dGVybiBpbnQgcmFuZF9yICh1bnNpZ25lZCBpbnQgKl9fc2VlZCkg
OwoKCgoKCgoKZXh0ZXJuIGRvdWJsZSBkcmFuZDQ4ICh2b2lkKSA7CmV4dGVybiBkb3VibGUgZXJh
bmQ0OCAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10pIDsKCgpleHRlcm4gbG9uZyBpbnQg
bHJhbmQ0OCAodm9pZCkgOwpleHRlcm4gbG9uZyBpbnQgbnJhbmQ0OCAodW5zaWduZWQgc2hvcnQg
aW50IF9feHN1YmlbM10pIDsKCgpleHRlcm4gbG9uZyBpbnQgbXJhbmQ0OCAodm9pZCkgOwpleHRl
cm4gbG9uZyBpbnQganJhbmQ0OCAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10pIDsKCgpl
eHRlcm4gdm9pZCBzcmFuZDQ4IChsb25nIGludCBfX3NlZWR2YWwpIDsKZXh0ZXJuIHVuc2lnbmVk
IHNob3J0IGludCAqc2VlZDQ4ICh1bnNpZ25lZCBzaG9ydCBpbnQgX19zZWVkMTZ2WzNdKSA7CmV4
dGVybiB2b2lkIGxjb25nNDggKHVuc2lnbmVkIHNob3J0IGludCBfX3BhcmFtWzddKSA7CgoKCgoK
c3RydWN0IGRyYW5kNDhfZGF0YQogIHsKICAgIHVuc2lnbmVkIHNob3J0IGludCBfX3hbM107CiAg
ICB1bnNpZ25lZCBzaG9ydCBpbnQgX19vbGRfeFszXTsKICAgIHVuc2lnbmVkIHNob3J0IGludCBf
X2M7CiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgX19pbml0OwogICAgdW5zaWduZWQgbG9uZyBsb25n
IGludCBfX2E7CiAgfTsKCgpleHRlcm4gaW50IGRyYW5kNDhfciAoc3RydWN0IGRyYW5kNDhfZGF0
YSAqX19yZXN0cmljdCBfX2J1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSAqX19y
ZXN0cmljdCBfX3Jlc3VsdCkgOwpleHRlcm4gaW50IGVyYW5kNDhfciAodW5zaWduZWQgc2hvcnQg
aW50IF9feHN1YmlbM10sCiAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJhbmQ0OF9kYXRh
ICpfX3Jlc3RyaWN0IF9fYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgZG91YmxlICpfX3Jl
c3RyaWN0IF9fcmVzdWx0KSA7CgoKZXh0ZXJuIGludCBscmFuZDQ4X3IgKHN0cnVjdCBkcmFuZDQ4
X2RhdGEgKl9fcmVzdHJpY3QgX19idWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICBsb25nIGlu
dCAqX19yZXN0cmljdCBfX3Jlc3VsdCkgOwpleHRlcm4gaW50IG5yYW5kNDhfciAodW5zaWduZWQg
c2hvcnQgaW50IF9feHN1YmlbM10sCiAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJhbmQ0
OF9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgbG9uZyBp
bnQgKl9fcmVzdHJpY3QgX19yZXN1bHQpIDsKCgpleHRlcm4gaW50IG1yYW5kNDhfciAoc3RydWN0
IGRyYW5kNDhfZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZlciwKICAgICAgICAgICAgICAgICAgICAg
IGxvbmcgaW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSA7CmV4dGVybiBpbnQganJhbmQ0OF9yICh1
bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSwKICAgICAgICAgICAgICAgICAgICAgIHN0cnVj
dCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZmZXIsCiAgICAgICAgICAgICAgICAgICAg
ICBsb25nIGludCAqX19yZXN0cmljdCBfX3Jlc3VsdCkgOwoKCmV4dGVybiBpbnQgc3JhbmQ0OF9y
IChsb25nIGludCBfX3NlZWR2YWwsIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fYnVmZmVyKQogICAg
IDsKCmV4dGVybiBpbnQgc2VlZDQ4X3IgKHVuc2lnbmVkIHNob3J0IGludCBfX3NlZWQxNnZbM10s
CiAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fYnVmZmVyKSA7Cgpl
eHRlcm4gaW50IGxjb25nNDhfciAodW5zaWduZWQgc2hvcnQgaW50IF9fcGFyYW1bN10sCiAgICAg
ICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX2J1ZmZlcikgOwojIDUyNyAi
L3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVybiB2b2lkICptYWxsb2MgKHNpemVfdCBfX3Np
emUpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CgpleHRlcm4gdm9pZCAqY2FsbG9jIChz
aXplX3QgX19ubWVtYiwgc2l6ZV90IF9fc2l6ZSkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19tYWxs
b2NfXykpOwoKCgoKCmV4dGVybiB2b2lkICpyZWFsbG9jICh2b2lkICpfX3B0ciwgc2l6ZV90IF9f
c2l6ZSkgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsKCmV4dGVybiB2b2lkIGZyZWUgKHZv
aWQgKl9fcHRyKSA7CgoKCmV4dGVybiB2b2lkIGNmcmVlICh2b2lkICpfX3B0cikgOwoKCgojIDEg
Ii91c3IvaW5jbHVkZS9hbGxvY2EuaCIgMSAzCiMgMjUgIi91c3IvaW5jbHVkZS9hbGxvY2EuaCIg
MwojIDEgIi91c3IvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4yLjIvaW5jbHVkZS9z
dGRkZWYuaCIgMSAzCiMgMjYgIi91c3IvaW5jbHVkZS9hbGxvY2EuaCIgMiAzCgoKCgoKCgpleHRl
cm4gdm9pZCAqYWxsb2NhIChzaXplX3QgX19zaXplKSA7CgoKCgoKCiMgNTQ3ICIvdXNyL2luY2x1
ZGUvc3RkbGliLmgiIDIgMwoKCgoKZXh0ZXJuIHZvaWQgKnZhbGxvYyAoc2l6ZV90IF9fc2l6ZSkg
X19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsKIyA1NjEgIi91c3IvaW5jbHVkZS9zdGRsaWIu
aCIgMwpleHRlcm4gdm9pZCBhYm9ydCAodm9pZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5f
XykpOwoKCgpleHRlcm4gaW50IGF0ZXhpdCAodm9pZCAoKl9fZnVuYykgKHZvaWQpKSA7CgoKCgpl
eHRlcm4gaW50IG9uX2V4aXQgKHZvaWQgKCpfX2Z1bmMpIChpbnQgX19zdGF0dXMsIHZvaWQgKl9f
YXJnKSwgdm9pZCAqX19hcmcpCiAgICAgOwoKCgoKCmV4dGVybiB2b2lkIGV4aXQgKGludCBfX3N0
YXR1cykgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwojIDU4NyAiL3Vzci9pbmNsdWRl
L3N0ZGxpYi5oIiAzCmV4dGVybiBjaGFyICpnZXRlbnYgKF9fY29uc3QgY2hhciAqX19uYW1lKSA7
CgoKCmV4dGVybiBjaGFyICpfX3NlY3VyZV9nZXRlbnYgKF9fY29uc3QgY2hhciAqX19uYW1lKSA7
CgoKCgoKZXh0ZXJuIGludCBwdXRlbnYgKGNoYXIgKl9fc3RyaW5nKSA7CgoKCgoKZXh0ZXJuIGlu
dCBzZXRlbnYgKF9fY29uc3QgY2hhciAqX19uYW1lLCBfX2NvbnN0IGNoYXIgKl9fdmFsdWUsIGlu
dCBfX3JlcGxhY2UpCiAgICAgOwoKCmV4dGVybiBpbnQgdW5zZXRlbnYgKF9fY29uc3QgY2hhciAq
X19uYW1lKSA7CgoKCgoKCmV4dGVybiBpbnQgY2xlYXJlbnYgKHZvaWQpIDsKIyA2MjMgIi91c3Iv
aW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gY2hhciAqbWt0ZW1wIChjaGFyICpfX3RlbXBsYXRl
KSA7CiMgNjM0ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGludCBta3N0ZW1wIChj
aGFyICpfX3RlbXBsYXRlKSBfX2FzbV9fICgiIiAibWtzdGVtcDY0Iik7CiMgNjUwICIvdXNyL2lu
Y2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGNoYXIgKm1rZHRlbXAgKGNoYXIgKl9fdGVtcGxhdGUp
IDsKCgoKCmV4dGVybiBpbnQgc3lzdGVtIChfX2NvbnN0IGNoYXIgKl9fY29tbWFuZCkgOwojIDY3
MiAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVybiBjaGFyICpyZWFscGF0aCAoX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpf
X3Jlc3RyaWN0IF9fcmVzb2x2ZWQpIDsKCgoKCgoKdHlwZWRlZiBpbnQgKCpfX2NvbXBhcl9mbl90
KSAoX19jb25zdCB2b2lkICosIF9fY29uc3Qgdm9pZCAqKTsKIyA2ODkgIi91c3IvaW5jbHVkZS9z
dGRsaWIuaCIgMwpleHRlcm4gdm9pZCAqYnNlYXJjaCAoX19jb25zdCB2b2lkICpfX2tleSwgX19j
b25zdCB2b2lkICpfX2Jhc2UsCiAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19ubWVtYiwg
c2l6ZV90IF9fc2l6ZSwgX19jb21wYXJfZm5fdCBfX2NvbXBhcik7CgoKCmV4dGVybiB2b2lkIHFz
b3J0ICh2b2lkICpfX2Jhc2UsIHNpemVfdCBfX25tZW1iLCBzaXplX3QgX19zaXplLAogICAgICAg
ICAgICAgICAgICAgX19jb21wYXJfZm5fdCBfX2NvbXBhcik7CgoKCmV4dGVybiBpbnQgYWJzIChp
bnQgX194KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CmV4dGVybiBsb25nIGludCBsYWJz
IChsb25nIGludCBfX3gpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKIyA3MTAgIi91c3Iv
aW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gZGl2X3QgZGl2IChpbnQgX19udW1lciwgaW50IF9f
ZGVub20pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwpleHRlcm4gbGRpdl90IGxk
aXYgKGxvbmcgaW50IF9fbnVtZXIsIGxvbmcgaW50IF9fZGVub20pCiAgICAgX19hdHRyaWJ1dGVf
XyAoKF9fY29uc3RfXykpOwojIDcyOCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVybiBj
aGFyICplY3Z0IChkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBpbnQgKl9fcmVzdHJpY3Qg
X19kZWNwdCwKICAgICAgICAgICAgICAgICAgIGludCAqX19yZXN0cmljdCBfX3NpZ24pIDsKCgoK
CmV4dGVybiBjaGFyICpmY3Z0IChkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBpbnQgKl9f
cmVzdHJpY3QgX19kZWNwdCwKICAgICAgICAgICAgICAgICAgIGludCAqX19yZXN0cmljdCBfX3Np
Z24pIDsKCgoKCmV4dGVybiBjaGFyICpnY3Z0IChkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0
LCBjaGFyICpfX2J1ZikgOwoKCgoKZXh0ZXJuIGNoYXIgKnFlY3Z0IChsb25nIGRvdWJsZSBfX3Zh
bHVlLCBpbnQgX19uZGlnaXQsCiAgICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9f
ZGVjcHQsIGludCAqX19yZXN0cmljdCBfX3NpZ24pIDsKZXh0ZXJuIGNoYXIgKnFmY3Z0IChsb25n
IGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsCiAgICAgICAgICAgICAgICAgICAgaW50ICpf
X3Jlc3RyaWN0IF9fZGVjcHQsIGludCAqX19yZXN0cmljdCBfX3NpZ24pIDsKZXh0ZXJuIGNoYXIg
KnFnY3Z0IChsb25nIGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGNoYXIgKl9fYnVmKSA7
CgoKCgpleHRlcm4gaW50IGVjdnRfciAoZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgaW50
ICpfX3Jlc3RyaWN0IF9fZGVjcHQsCiAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3Qg
X19zaWduLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLAogICAgICAgICAgICAgICAgICAgc2l6ZV90
IF9fbGVuKSA7CmV4dGVybiBpbnQgZmN2dF9yIChkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0
LCBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwKICAgICAgICAgICAgICAgICAgIGludCAqX19yZXN0
cmljdCBfX3NpZ24sIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsCiAgICAgICAgICAgICAgICAgICBz
aXplX3QgX19sZW4pIDsKCmV4dGVybiBpbnQgcWVjdnRfciAobG9uZyBkb3VibGUgX192YWx1ZSwg
aW50IF9fbmRpZ2l0LAogICAgICAgICAgICAgICAgICAgIGludCAqX19yZXN0cmljdCBfX2RlY3B0
LCBpbnQgKl9fcmVzdHJpY3QgX19zaWduLAogICAgICAgICAgICAgICAgICAgIGNoYXIgKl9fcmVz
dHJpY3QgX19idWYsIHNpemVfdCBfX2xlbikgOwpleHRlcm4gaW50IHFmY3Z0X3IgKGxvbmcgZG91
YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwKICAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVz
dHJpY3QgX19kZWNwdCwgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbiwKICAgICAgICAgICAgICAgICAg
ICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLCBzaXplX3QgX19sZW4pIDsKCgoKCgoKZXh0ZXJuIGlu
dCBtYmxlbiAoX19jb25zdCBjaGFyICpfX3MsIHNpemVfdCBfX24pIDsKCgpleHRlcm4gaW50IG1i
dG93YyAod2NoYXJfdCAqX19yZXN0cmljdCBfX3B3YywKICAgICAgICAgICAgICAgICAgIF9fY29u
c3QgY2hhciAqX19yZXN0cmljdCBfX3MsIHNpemVfdCBfX24pIDsKCgpleHRlcm4gaW50IHdjdG9t
YiAoY2hhciAqX19zLCB3Y2hhcl90IF9fd2NoYXIpIDsKCgoKZXh0ZXJuIHNpemVfdCBtYnN0b3dj
cyAod2NoYXJfdCAqX19yZXN0cmljdCBfX3B3Y3MsCiAgICAgICAgICAgICAgICAgICAgICAgIF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX3MsIHNpemVfdCBfX24pIDsKCmV4dGVybiBzaXplX3Qg
d2NzdG9tYnMgKGNoYXIgKl9fcmVzdHJpY3QgX19zLAogICAgICAgICAgICAgICAgICAgICAgICBf
X2NvbnN0IHdjaGFyX3QgKl9fcmVzdHJpY3QgX19wd2NzLCBzaXplX3QgX19uKQogICAgIDsKCgoK
CgoKCmV4dGVybiBpbnQgcnBtYXRjaCAoX19jb25zdCBjaGFyICpfX3Jlc3BvbnNlKSA7CiMgODU4
ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGludCBnZXRsb2FkYXZnIChkb3VibGUg
X19sb2FkYXZnW10sIGludCBfX25lbGVtKSA7CgoKCgoKCiMgMTEgInJhZ2UxMjhfdmlkLmMiIDIK
IyAxICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDEgMwojIDI4ICIvdXNyL2luY2x1ZGUvc3RyaW5n
LmgiIDMKCgoKCgojIDEgIi91c3IvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4yLjIv
aW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMzQgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMiAzCgoK
CmV4dGVybiB2b2lkICptZW1jcHkgKHZvaWQgKl9fcmVzdHJpY3QgX19kZXN0LAogICAgICAgICAg
ICAgICAgICAgICBfX2NvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24pIDsK
CgpleHRlcm4gdm9pZCAqbWVtbW92ZSAodm9pZCAqX19kZXN0LCBfX2NvbnN0IHZvaWQgKl9fc3Jj
LCBzaXplX3QgX19uKQogICAgIDsKCgoKCgpleHRlcm4gdm9pZCAqbWVtY2NweSAodm9pZCAqX19y
ZXN0cmljdCBfX2Rlc3QsIF9fY29uc3Qgdm9pZCAqX19yZXN0cmljdCBfX3NyYywKICAgICAgICAg
ICAgICAgICAgICAgIGludCBfX2MsIHNpemVfdCBfX24pCiAgICAgOwoKCgoKZXh0ZXJuIHZvaWQg
Km1lbXNldCAodm9pZCAqX19zLCBpbnQgX19jLCBzaXplX3QgX19uKSA7CgoKZXh0ZXJuIGludCBt
ZW1jbXAgKF9fY29uc3Qgdm9pZCAqX19zMSwgX19jb25zdCB2b2lkICpfX3MyLCBzaXplX3QgX19u
KQogICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCmV4dGVybiB2b2lkICptZW1jaHIg
KF9fY29uc3Qgdm9pZCAqX19zLCBpbnQgX19jLCBzaXplX3QgX19uKQogICAgICBfX2F0dHJpYnV0
ZV9fICgoX19wdXJlX18pKTsKIyA3NyAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzCmV4dGVybiBj
aGFyICpzdHJjcHkgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LCBfX2NvbnN0IGNoYXIgKl9fcmVz
dHJpY3QgX19zcmMpCiAgICAgOwoKZXh0ZXJuIGNoYXIgKnN0cm5jcHkgKGNoYXIgKl9fcmVzdHJp
Y3QgX19kZXN0LAogICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0
IF9fc3JjLCBzaXplX3QgX19uKSA7CgoKZXh0ZXJuIGNoYXIgKnN0cmNhdCAoY2hhciAqX19yZXN0
cmljdCBfX2Rlc3QsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYykKICAgICA7CgpleHRl
cm4gY2hhciAqc3RybmNhdCAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsIF9fY29uc3QgY2hhciAq
X19yZXN0cmljdCBfX3NyYywKICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX24pIDsKCgpl
eHRlcm4gaW50IHN0cmNtcCAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIp
CiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgpleHRlcm4gaW50IHN0cm5jbXAgKF9f
Y29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyLCBzaXplX3QgX19uKQogICAgIF9f
YXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCmV4dGVybiBpbnQgc3RyY29sbCAoX19jb25zdCBj
aGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVy
ZV9fKSk7CgpleHRlcm4gc2l6ZV90IHN0cnhmcm0gKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LAog
ICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYywgc2l6
ZV90IF9fbikgOwojIDEyMCAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzCmV4dGVybiBjaGFyICpz
dHJkdXAgKF9fY29uc3QgY2hhciAqX19zKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwoj
IDE1NSAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzCmV4dGVybiBjaGFyICpzdHJjaHIgKF9fY29u
c3QgY2hhciAqX19zLCBpbnQgX19jKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCmV4dGVy
biBjaGFyICpzdHJyY2hyIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYykgX19hdHRyaWJ1dGVf
XyAoKF9fcHVyZV9fKSk7CiMgMTY3ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMKZXh0ZXJuIHNp
emVfdCBzdHJjc3BuIChfX2NvbnN0IGNoYXIgKl9fcywgX19jb25zdCBjaGFyICpfX3JlamVjdCkK
ICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpleHRlcm4gc2l6ZV90IHN0cnNwbiAo
X19jb25zdCBjaGFyICpfX3MsIF9fY29uc3QgY2hhciAqX19hY2NlcHQpCiAgICAgX19hdHRyaWJ1
dGVfXyAoKF9fcHVyZV9fKSk7CgpleHRlcm4gY2hhciAqc3RycGJyayAoX19jb25zdCBjaGFyICpf
X3MsIF9fY29uc3QgY2hhciAqX19hY2NlcHQpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9f
KSk7CgpleHRlcm4gY2hhciAqc3Ryc3RyIChfX2NvbnN0IGNoYXIgKl9faGF5c3RhY2ssIF9fY29u
c3QgY2hhciAqX19uZWVkbGUpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CiMgMTg3
ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMKZXh0ZXJuIGNoYXIgKnN0cnRvayAoY2hhciAqX19y
ZXN0cmljdCBfX3MsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2RlbGltKQogICAgIDsKCgoK
ZXh0ZXJuIGNoYXIgKl9fc3RydG9rX3IgKGNoYXIgKl9fcmVzdHJpY3QgX19zLAogICAgICAgICAg
ICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZGVsaW0sCiAgICAgICAg
ICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX3NhdmVfcHRyKSA7CgpleHRlcm4g
Y2hhciAqc3RydG9rX3IgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBfX2NvbnN0IGNoYXIgKl9fcmVz
dHJpY3QgX19kZWxpbSwKICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBf
X3NhdmVfcHRyKSA7CiMgMjE4ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMKZXh0ZXJuIHNpemVf
dCBzdHJsZW4gKF9fY29uc3QgY2hhciAqX19zKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsK
IyAyMjkgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMwpleHRlcm4gY2hhciAqc3RyZXJyb3IgKGlu
dCBfX2Vycm51bSkgOwoKCgpleHRlcm4gY2hhciAqc3RyZXJyb3JfciAoaW50IF9fZXJybnVtLCBj
aGFyICpfX2J1Ziwgc2l6ZV90IF9fYnVmbGVuKSA7CgoKCgpleHRlcm4gdm9pZCBfX2J6ZXJvICh2
b2lkICpfX3MsIHNpemVfdCBfX24pIDsKCgoKZXh0ZXJuIHZvaWQgYmNvcHkgKF9fY29uc3Qgdm9p
ZCAqX19zcmMsIHZvaWQgKl9fZGVzdCwgc2l6ZV90IF9fbikgOwoKCmV4dGVybiB2b2lkIGJ6ZXJv
ICh2b2lkICpfX3MsIHNpemVfdCBfX24pIDsKCgpleHRlcm4gaW50IGJjbXAgKF9fY29uc3Qgdm9p
ZCAqX19zMSwgX19jb25zdCB2b2lkICpfX3MyLCBzaXplX3QgX19uKQogICAgIF9fYXR0cmlidXRl
X18gKChfX3B1cmVfXykpOwoKCmV4dGVybiBjaGFyICppbmRleCAoX19jb25zdCBjaGFyICpfX3Ms
IGludCBfX2MpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCmV4dGVybiBjaGFyICpyaW5k
ZXggKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19jKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18p
KTsKCgoKZXh0ZXJuIGludCBmZnMgKGludCBfX2kpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18p
KTsKIyAyNzIgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMwpleHRlcm4gaW50IHN0cmNhc2VjbXAg
KF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyKQogICAgIF9fYXR0cmlidXRl
X18gKChfX3B1cmVfXykpOwoKCmV4dGVybiBpbnQgc3RybmNhc2VjbXAgKF9fY29uc3QgY2hhciAq
X19zMSwgX19jb25zdCBjaGFyICpfX3MyLCBzaXplX3QgX19uKQogICAgIF9fYXR0cmlidXRlX18g
KChfX3B1cmVfXykpOwojIDI5NCAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzCmV4dGVybiBjaGFy
ICpzdHJzZXAgKGNoYXIgKipfX3Jlc3RyaWN0IF9fc3RyaW5ncCwKICAgICAgICAgICAgICAgICAg
ICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZGVsaW0pIDsKIyAzNTcgIi91c3IvaW5jbHVk
ZS9zdHJpbmcuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZy5oIiAxIDMKIyAzNTgg
Ii91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMiAzCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9zdHJp
bmcyLmgiIDEgMwojIDM3NyAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCmV4dGVybiB2
b2lkICpfX3Jhd21lbWNociAoY29uc3Qgdm9pZCAqX19zLCBpbnQgX19jKTsKIyA0MDUgIi91c3Iv
aW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwpleHRlcm4gX19pbmxpbmUgY2hhciAqX19zdHJjcHlf
c21hbGwgKGNoYXIgKiwgX191aW50MTZfdCwgX191aW50MTZfdCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBfX3VpbnQzMl90LCBfX3VpbnQzMl90LCBzaXplX3QpOwpleHRl
cm4gX19pbmxpbmUgY2hhciAqCl9fc3RyY3B5X3NtYWxsIChjaGFyICpfX2Rlc3QsCiAgICAgICAg
ICAgICAgICBfX3VpbnQxNl90IF9fc3JjMF8yLCBfX3VpbnQxNl90IF9fc3JjNF8yLAogICAgICAg
ICAgICAgICAgX191aW50MzJfdCBfX3NyYzBfNCwgX191aW50MzJfdCBfX3NyYzRfNCwKICAgICAg
ICAgICAgICAgIHNpemVfdCBfX3NyY2xlbikKewogIHVuaW9uIHsKICAgIF9fdWludDMyX3QgX191
aTsKICAgIF9fdWludDE2X3QgX191c2k7CiAgICB1bnNpZ25lZCBjaGFyIF9fdWM7CiAgfSAqX191
ID0gKHZvaWQgKikgX19kZXN0OwogIHN3aXRjaCAoKHVuc2lnbmVkIGludCkgX19zcmNsZW4pCiAg
ICB7CiAgICBjYXNlIDE6CiAgICAgIF9fdS0+X191YyA9ICdcMCc7CiAgICAgIGJyZWFrOwogICAg
Y2FzZSAyOgogICAgICBfX3UtPl9fdXNpID0gX19zcmMwXzI7CiAgICAgIGJyZWFrOwogICAgY2Fz
ZSAzOgogICAgICBfX3UtPl9fdXNpID0gX19zcmMwXzI7CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9u
X18gKCh2b2lkICopIF9fdSArIDIpOwogICAgICBfX3UtPl9fdWMgPSAnXDAnOwogICAgICBicmVh
azsKICAgIGNhc2UgNDoKICAgICAgX191LT5fX3VpID0gX19zcmMwXzQ7CiAgICAgIGJyZWFrOwog
ICAgY2FzZSA1OgogICAgICBfX3UtPl9fdWkgPSBfX3NyYzBfNDsKICAgICAgX191ID0gX19leHRl
bnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7CiAgICAgIF9fdS0+X191YyA9ICdcMCc7CiAgICAg
IGJyZWFrOwogICAgY2FzZSA2OgogICAgICBfX3UtPl9fdWkgPSBfX3NyYzBfNDsKICAgICAgX191
ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7CiAgICAgIF9fdS0+X191c2kgPSBf
X3NyYzRfMjsKICAgICAgYnJlYWs7CiAgICBjYXNlIDc6CiAgICAgIF9fdS0+X191aSA9IF9fc3Jj
MF80OwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsKICAgICAg
X191LT5fX3VzaSA9IF9fc3JjNF8yOwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAq
KSBfX3UgKyAyKTsKICAgICAgX191LT5fX3VjID0gJ1wwJzsKICAgICAgYnJlYWs7CiAgICBjYXNl
IDg6CiAgICAgIF9fdS0+X191aSA9IF9fc3JjMF80OwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9f
ICgodm9pZCAqKSBfX3UgKyA0KTsKICAgICAgX191LT5fX3VpID0gX19zcmM0XzQ7CiAgICAgIGJy
ZWFrOwogICAgfQogIHJldHVybiBfX2Rlc3Q7Cn0KIyA4OTMgIi91c3IvaW5jbHVkZS9iaXRzL3N0
cmluZzIuaCIgMwpleHRlcm4gX19pbmxpbmUgc2l6ZV90IF9fc3RyY3Nwbl9jMSAoX19jb25zdCBj
aGFyICpfX3MsIGludCBfX3JlamVjdCk7CmV4dGVybiBfX2lubGluZSBzaXplX3QKX19zdHJjc3Bu
X2MxIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fcmVqZWN0KQp7CiAgcmVnaXN0ZXIgc2l6ZV90
IF9fcmVzdWx0ID0gMDsKICB3aGlsZSAoX19zW19fcmVzdWx0XSAhPSAnXDAnICYmIF9fc1tfX3Jl
c3VsdF0gIT0gX19yZWplY3QpCiAgICArK19fcmVzdWx0OwogIHJldHVybiBfX3Jlc3VsdDsKfQoK
ZXh0ZXJuIF9faW5saW5lIHNpemVfdCBfX3N0cmNzcG5fYzIgKF9fY29uc3QgY2hhciAqX19zLCBp
bnQgX19yZWplY3QxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9f
cmVqZWN0Mik7CmV4dGVybiBfX2lubGluZSBzaXplX3QKX19zdHJjc3BuX2MyIChfX2NvbnN0IGNo
YXIgKl9fcywgaW50IF9fcmVqZWN0MSwgaW50IF9fcmVqZWN0MikKewogIHJlZ2lzdGVyIHNpemVf
dCBfX3Jlc3VsdCA9IDA7CiAgd2hpbGUgKF9fc1tfX3Jlc3VsdF0gIT0gJ1wwJyAmJiBfX3NbX19y
ZXN1bHRdICE9IF9fcmVqZWN0MQogICAgICAgICAmJiBfX3NbX19yZXN1bHRdICE9IF9fcmVqZWN0
MikKICAgICsrX19yZXN1bHQ7CiAgcmV0dXJuIF9fcmVzdWx0Owp9CgpleHRlcm4gX19pbmxpbmUg
c2l6ZV90IF9fc3RyY3Nwbl9jMyAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX3JlamVjdDEsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19yZWplY3QyLCBpbnQgX19y
ZWplY3QzKTsKZXh0ZXJuIF9faW5saW5lIHNpemVfdApfX3N0cmNzcG5fYzMgKF9fY29uc3QgY2hh
ciAqX19zLCBpbnQgX19yZWplY3QxLCBpbnQgX19yZWplY3QyLAogICAgICAgICAgICAgIGludCBf
X3JlamVjdDMpCnsKICByZWdpc3RlciBzaXplX3QgX19yZXN1bHQgPSAwOwogIHdoaWxlIChfX3Nb
X19yZXN1bHRdICE9ICdcMCcgJiYgX19zW19fcmVzdWx0XSAhPSBfX3JlamVjdDEKICAgICAgICAg
JiYgX19zW19fcmVzdWx0XSAhPSBfX3JlamVjdDIgJiYgX19zW19fcmVzdWx0XSAhPSBfX3JlamVj
dDMpCiAgICArK19fcmVzdWx0OwogIHJldHVybiBfX3Jlc3VsdDsKfQojIDk1MCAiL3Vzci9pbmNs
dWRlL2JpdHMvc3RyaW5nMi5oIiAzCmV4dGVybiBfX2lubGluZSBzaXplX3QgX19zdHJzcG5fYzEg
KF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19hY2NlcHQpOwpleHRlcm4gX19pbmxpbmUgc2l6ZV90
Cl9fc3Ryc3BuX2MxIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYWNjZXB0KQp7CiAgcmVnaXN0
ZXIgc2l6ZV90IF9fcmVzdWx0ID0gMDsKCiAgd2hpbGUgKF9fc1tfX3Jlc3VsdF0gPT0gX19hY2Nl
cHQpCiAgICArK19fcmVzdWx0OwogIHJldHVybiBfX3Jlc3VsdDsKfQoKZXh0ZXJuIF9faW5saW5l
IHNpemVfdCBfX3N0cnNwbl9jMiAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2FjY2VwdDEsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX2FjY2VwdDIpOwpleHRlcm4g
X19pbmxpbmUgc2l6ZV90Cl9fc3Ryc3BuX2MyIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYWNj
ZXB0MSwgaW50IF9fYWNjZXB0MikKewogIHJlZ2lzdGVyIHNpemVfdCBfX3Jlc3VsdCA9IDA7Cgog
IHdoaWxlIChfX3NbX19yZXN1bHRdID09IF9fYWNjZXB0MSB8fCBfX3NbX19yZXN1bHRdID09IF9f
YWNjZXB0MikKICAgICsrX19yZXN1bHQ7CiAgcmV0dXJuIF9fcmVzdWx0Owp9CgpleHRlcm4gX19p
bmxpbmUgc2l6ZV90IF9fc3Ryc3BuX2MzIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYWNjZXB0
MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fYWNjZXB0MiwgaW50
IF9fYWNjZXB0Myk7CmV4dGVybiBfX2lubGluZSBzaXplX3QKX19zdHJzcG5fYzMgKF9fY29uc3Qg
Y2hhciAqX19zLCBpbnQgX19hY2NlcHQxLCBpbnQgX19hY2NlcHQyLCBpbnQgX19hY2NlcHQzKQp7
CiAgcmVnaXN0ZXIgc2l6ZV90IF9fcmVzdWx0ID0gMDsKCiAgd2hpbGUgKF9fc1tfX3Jlc3VsdF0g
PT0gX19hY2NlcHQxIHx8IF9fc1tfX3Jlc3VsdF0gPT0gX19hY2NlcHQyCiAgICAgICAgIHx8IF9f
c1tfX3Jlc3VsdF0gPT0gX19hY2NlcHQzKQogICAgKytfX3Jlc3VsdDsKICByZXR1cm4gX19yZXN1
bHQ7Cn0KIyAxMDA3ICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMKZXh0ZXJuIF9faW5s
aW5lIGNoYXIgKl9fc3RycGJya19jMiAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2FjY2VwdDEs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19hY2NlcHQyKTsKZXh0
ZXJuIF9faW5saW5lIGNoYXIgKgpfX3N0cnBicmtfYzIgKF9fY29uc3QgY2hhciAqX19zLCBpbnQg
X19hY2NlcHQxLCBpbnQgX19hY2NlcHQyKQp7CgogIHdoaWxlICgqX19zICE9ICdcMCcgJiYgKl9f
cyAhPSBfX2FjY2VwdDEgJiYgKl9fcyAhPSBfX2FjY2VwdDIpCiAgICArK19fczsKICByZXR1cm4g
Kl9fcyA9PSAnXDAnID8gKCh2b2lkICopMCkgOiAoY2hhciAqKSAoc2l6ZV90KSBfX3M7Cn0KCmV4
dGVybiBfX2lubGluZSBjaGFyICpfX3N0cnBicmtfYzMgKF9fY29uc3QgY2hhciAqX19zLCBpbnQg
X19hY2NlcHQxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fYWNj
ZXB0MiwgaW50IF9fYWNjZXB0Myk7CmV4dGVybiBfX2lubGluZSBjaGFyICoKX19zdHJwYnJrX2Mz
IChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYWNjZXB0MSwgaW50IF9fYWNjZXB0MiwKICAgICAg
ICAgICAgICBpbnQgX19hY2NlcHQzKQp7CgogIHdoaWxlICgqX19zICE9ICdcMCcgJiYgKl9fcyAh
PSBfX2FjY2VwdDEgJiYgKl9fcyAhPSBfX2FjY2VwdDIKICAgICAgICAgJiYgKl9fcyAhPSBfX2Fj
Y2VwdDMpCiAgICArK19fczsKICByZXR1cm4gKl9fcyA9PSAnXDAnID8gKCh2b2lkICopMCkgOiAo
Y2hhciAqKSAoc2l6ZV90KSBfX3M7Cn0KIyAxMDU5ICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcy
LmgiIDMKZXh0ZXJuIF9faW5saW5lIGNoYXIgKl9fc3RydG9rX3JfMWMgKGNoYXIgKl9fcywgY2hh
ciBfX3NlcCwgY2hhciAqKl9fbmV4dHApOwpleHRlcm4gX19pbmxpbmUgY2hhciAqCl9fc3RydG9r
X3JfMWMgKGNoYXIgKl9fcywgY2hhciBfX3NlcCwgY2hhciAqKl9fbmV4dHApCnsKICBjaGFyICpf
X3Jlc3VsdDsKICBpZiAoX19zID09ICgodm9pZCAqKTApKQogICAgX19zID0gKl9fbmV4dHA7CiAg
d2hpbGUgKCpfX3MgPT0gX19zZXApCiAgICArK19fczsKICBfX3Jlc3VsdCA9ICgodm9pZCAqKTAp
OwogIGlmICgqX19zICE9ICdcMCcpCiAgICB7CiAgICAgIF9fcmVzdWx0ID0gX19zKys7CiAgICAg
IHdoaWxlICgqX19zICE9ICdcMCcpCiAgICAgICAgaWYgKCpfX3MrKyA9PSBfX3NlcCkKICAgICAg
ICAgIHsKICAgICAgICAgICAgX19zWy0xXSA9ICdcMCc7CiAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgfQogICAgICAqX19uZXh0cCA9IF9fczsKICAgIH0KICByZXR1cm4gX19yZXN1bHQ7Cn0K
IyAxMDkxICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMKZXh0ZXJuIGNoYXIgKl9fc3Ry
c2VwX2cgKGNoYXIgKipfX3N0cmluZ3AsIF9fY29uc3QgY2hhciAqX19kZWxpbSk7CiMgMTEwOSAi
L3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCmV4dGVybiBfX2lubGluZSBjaGFyICpfX3N0
cnNlcF8xYyAoY2hhciAqKl9fcywgY2hhciBfX3JlamVjdCk7CmV4dGVybiBfX2lubGluZSBjaGFy
ICoKX19zdHJzZXBfMWMgKGNoYXIgKipfX3MsIGNoYXIgX19yZWplY3QpCnsKICByZWdpc3RlciBj
aGFyICpfX3JldHZhbCA9ICpfX3M7CiAgaWYgKF9fcmV0dmFsICE9ICgodm9pZCAqKTApICYmICgq
X19zID0gKF9fZXh0ZW5zaW9uX18gKF9fYnVpbHRpbl9jb25zdGFudF9wIChfX3JlamVjdCkgJiYg
KF9fcmVqZWN0KSA9PSAnXDAnID8gKGNoYXIgKikgX19yYXdtZW1jaHIgKF9fcmV0dmFsLCBfX3Jl
amVjdCkgOiBzdHJjaHIgKF9fcmV0dmFsLCBfX3JlamVjdCkpKSkgIT0gKCh2b2lkICopMCkpCiAg
ICAqKCpfX3MpKysgPSAnXDAnOwogIHJldHVybiBfX3JldHZhbDsKfQoKZXh0ZXJuIF9faW5saW5l
IGNoYXIgKl9fc3Ryc2VwXzJjIChjaGFyICoqX19zLCBjaGFyIF9fcmVqZWN0MSwgY2hhciBfX3Jl
amVjdDIpOwpleHRlcm4gX19pbmxpbmUgY2hhciAqCl9fc3Ryc2VwXzJjIChjaGFyICoqX19zLCBj
aGFyIF9fcmVqZWN0MSwgY2hhciBfX3JlamVjdDIpCnsKICByZWdpc3RlciBjaGFyICpfX3JldHZh
bCA9ICpfX3M7CiAgaWYgKF9fcmV0dmFsICE9ICgodm9pZCAqKTApKQogICAgewogICAgICByZWdp
c3RlciBjaGFyICpfX2NwID0gX19yZXR2YWw7CiAgICAgIHdoaWxlICgxKQogICAgICAgIHsKICAg
ICAgICAgIGlmICgqX19jcCA9PSAnXDAnKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgX19j
cCA9ICgodm9pZCAqKTApOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICAg
IGlmICgqX19jcCA9PSBfX3JlamVjdDEgfHwgKl9fY3AgPT0gX19yZWplY3QyKQogICAgICAgICAg
ICB7CiAgICAgICAgICAgICAgKl9fY3ArKyA9ICdcMCc7CiAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgIH0KICAgICAgICAgICsrX19jcDsKICAgICAgICB9CiAgICAgICpfX3MgPSBfX2Nw
OwogICAgfQogIHJldHVybiBfX3JldHZhbDsKfQoKZXh0ZXJuIF9faW5saW5lIGNoYXIgKl9fc3Ry
c2VwXzNjIChjaGFyICoqX19zLCBjaGFyIF9fcmVqZWN0MSwgY2hhciBfX3JlamVjdDIsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBfX3JlamVjdDMpOwpleHRlcm4gX19p
bmxpbmUgY2hhciAqCl9fc3Ryc2VwXzNjIChjaGFyICoqX19zLCBjaGFyIF9fcmVqZWN0MSwgY2hh
ciBfX3JlamVjdDIsIGNoYXIgX19yZWplY3QzKQp7CiAgcmVnaXN0ZXIgY2hhciAqX19yZXR2YWwg
PSAqX19zOwogIGlmIChfX3JldHZhbCAhPSAoKHZvaWQgKikwKSkKICAgIHsKICAgICAgcmVnaXN0
ZXIgY2hhciAqX19jcCA9IF9fcmV0dmFsOwogICAgICB3aGlsZSAoMSkKICAgICAgICB7CiAgICAg
ICAgICBpZiAoKl9fY3AgPT0gJ1wwJykKICAgICAgICAgICAgewogICAgICAgICAgICAgIF9fY3Ag
PSAoKHZvaWQgKikwKTsKICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICBp
ZiAoKl9fY3AgPT0gX19yZWplY3QxIHx8ICpfX2NwID09IF9fcmVqZWN0MiB8fCAqX19jcCA9PSBf
X3JlamVjdDMpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAqX19jcCsrID0gJ1wwJzsKICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgICAgKytfX2NwOwogICAgICAg
IH0KICAgICAgKl9fcyA9IF9fY3A7CiAgICB9CiAgcmV0dXJuIF9fcmV0dmFsOwp9CiMgMTE5MCAi
L3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCmV4dGVybiBjaGFyICpfX3N0cmR1cCAoX19j
b25zdCBjaGFyICpfX3N0cmluZykgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsKIyAxMjA5
ICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMKZXh0ZXJuIGNoYXIgKl9fc3RybmR1cCAo
X19jb25zdCBjaGFyICpfX3N0cmluZywgc2l6ZV90IF9fbikKICAgICBfX2F0dHJpYnV0ZV9fICgo
X19tYWxsb2NfXykpOwojIDM2MSAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAyIDMKCgoKCiMgMTIg
InJhZ2UxMjhfdmlkLmMiIDIKIyAxICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAxIDMKIyAyOSAiL3Vz
ci9pbmNsdWRlL21hdGguaCIgMwoKCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9odWdlX3ZhbC5o
IiAxIDMKIyAzNCAiL3Vzci9pbmNsdWRlL21hdGguaCIgMiAzCgoKCgoKCiMgMSAiL3Vzci9pbmNs
dWRlL2JpdHMvbWF0aGRlZi5oIiAxIDMKIyA0MSAiL3Vzci9pbmNsdWRlL21hdGguaCIgMiAzCiMg
NjMgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoY2Fs
bHMuaCIgMSAzCiMgNTQgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAzCmV4dGVybiBk
b3VibGUgYWNvcyAoZG91YmxlIF9feCkgOyBleHRlcm4gZG91YmxlIF9fYWNvcyAoZG91YmxlIF9f
eCkgOwoKZXh0ZXJuIGRvdWJsZSBhc2luIChkb3VibGUgX194KSA7IGV4dGVybiBkb3VibGUgX19h
c2luIChkb3VibGUgX194KSA7CgpleHRlcm4gZG91YmxlIGF0YW4gKGRvdWJsZSBfX3gpIDsgZXh0
ZXJuIGRvdWJsZSBfX2F0YW4gKGRvdWJsZSBfX3gpIDsKCmV4dGVybiBkb3VibGUgYXRhbjIgKGRv
dWJsZSBfX3ksIGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGRvdWJsZSBfX2F0YW4yIChkb3VibGUgX195
LCBkb3VibGUgX194KSA7CgoKZXh0ZXJuIGRvdWJsZSBjb3MgKGRvdWJsZSBfX3gpIDsgZXh0ZXJu
IGRvdWJsZSBfX2NvcyAoZG91YmxlIF9feCkgOwoKZXh0ZXJuIGRvdWJsZSBzaW4gKGRvdWJsZSBf
X3gpIDsgZXh0ZXJuIGRvdWJsZSBfX3NpbiAoZG91YmxlIF9feCkgOwoKZXh0ZXJuIGRvdWJsZSB0
YW4gKGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGRvdWJsZSBfX3RhbiAoZG91YmxlIF9feCkgOwojIDc4
ICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoY2FsbHMuaCIgMwpleHRlcm4gZG91YmxlIGNvc2ggKGRv
dWJsZSBfX3gpIDsgZXh0ZXJuIGRvdWJsZSBfX2Nvc2ggKGRvdWJsZSBfX3gpIDsKCmV4dGVybiBk
b3VibGUgc2luaCAoZG91YmxlIF9feCkgOyBleHRlcm4gZG91YmxlIF9fc2luaCAoZG91YmxlIF9f
eCkgOwoKZXh0ZXJuIGRvdWJsZSB0YW5oIChkb3VibGUgX194KSA7IGV4dGVybiBkb3VibGUgX190
YW5oIChkb3VibGUgX194KSA7CgoKCmV4dGVybiBkb3VibGUgYWNvc2ggKGRvdWJsZSBfX3gpIDsg
ZXh0ZXJuIGRvdWJsZSBfX2Fjb3NoIChkb3VibGUgX194KSA7CgpleHRlcm4gZG91YmxlIGFzaW5o
IChkb3VibGUgX194KSA7IGV4dGVybiBkb3VibGUgX19hc2luaCAoZG91YmxlIF9feCkgOwoKZXh0
ZXJuIGRvdWJsZSBhdGFuaCAoZG91YmxlIF9feCkgOyBleHRlcm4gZG91YmxlIF9fYXRhbmggKGRv
dWJsZSBfX3gpIDsKCgoKCgpleHRlcm4gZG91YmxlIGV4cCAoZG91YmxlIF9feCkgOyBleHRlcm4g
ZG91YmxlIF9fZXhwIChkb3VibGUgX194KSA7CiMgMTA2ICIvdXNyL2luY2x1ZGUvYml0cy9tYXRo
Y2FsbHMuaCIgMwpleHRlcm4gZG91YmxlIGZyZXhwIChkb3VibGUgX194LCBpbnQgKl9fZXhwb25l
bnQpIDsgZXh0ZXJuIGRvdWJsZSBfX2ZyZXhwIChkb3VibGUgX194LCBpbnQgKl9fZXhwb25lbnQp
IDsKCgpleHRlcm4gZG91YmxlIGxkZXhwIChkb3VibGUgX194LCBpbnQgX19leHBvbmVudCkgOyBl
eHRlcm4gZG91YmxlIF9fbGRleHAgKGRvdWJsZSBfX3gsIGludCBfX2V4cG9uZW50KSA7CgoKZXh0
ZXJuIGRvdWJsZSBsb2cgKGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGRvdWJsZSBfX2xvZyAoZG91Ymxl
IF9feCkgOwoKCmV4dGVybiBkb3VibGUgbG9nMTAgKGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGRvdWJs
ZSBfX2xvZzEwIChkb3VibGUgX194KSA7CgoKZXh0ZXJuIGRvdWJsZSBtb2RmIChkb3VibGUgX194
LCBkb3VibGUgKl9faXB0cikgOyBleHRlcm4gZG91YmxlIF9fbW9kZiAoZG91YmxlIF9feCwgZG91
YmxlICpfX2lwdHIpIDsKCgoKZXh0ZXJuIGRvdWJsZSBleHBtMSAoZG91YmxlIF9feCkgOyBleHRl
cm4gZG91YmxlIF9fZXhwbTEgKGRvdWJsZSBfX3gpIDsKCgpleHRlcm4gZG91YmxlIGxvZzFwIChk
b3VibGUgX194KSA7IGV4dGVybiBkb3VibGUgX19sb2cxcCAoZG91YmxlIF9feCkgOwoKCmV4dGVy
biBkb3VibGUgbG9nYiAoZG91YmxlIF9feCkgOyBleHRlcm4gZG91YmxlIF9fbG9nYiAoZG91Ymxl
IF9feCkgOwojIDE0MyAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgiIDMKZXh0ZXJuIGRv
dWJsZSBwb3cgKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIDsgZXh0ZXJuIGRvdWJsZSBfX3BvdyAo
ZG91YmxlIF9feCwgZG91YmxlIF9feSkgOwoKCmV4dGVybiBkb3VibGUgc3FydCAoZG91YmxlIF9f
eCkgOyBleHRlcm4gZG91YmxlIF9fc3FydCAoZG91YmxlIF9feCkgOwoKCgpleHRlcm4gZG91Ymxl
IGh5cG90IChkb3VibGUgX194LCBkb3VibGUgX195KSA7IGV4dGVybiBkb3VibGUgX19oeXBvdCAo
ZG91YmxlIF9feCwgZG91YmxlIF9feSkgOwoKCgoKZXh0ZXJuIGRvdWJsZSBjYnJ0IChkb3VibGUg
X194KSA7IGV4dGVybiBkb3VibGUgX19jYnJ0IChkb3VibGUgX194KSA7CgoKCgoKCmV4dGVybiBk
b3VibGUgY2VpbCAoZG91YmxlIF9feCkgOyBleHRlcm4gZG91YmxlIF9fY2VpbCAoZG91YmxlIF9f
eCkgOwoKCmV4dGVybiBkb3VibGUgZmFicyAoZG91YmxlIF9feCkgX19hdHRyaWJ1dGVfXyAoKF9f
Y29uc3RfXykpOyBleHRlcm4gZG91YmxlIF9fZmFicyAoZG91YmxlIF9feCkgX19hdHRyaWJ1dGVf
XyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBkb3VibGUgZmxvb3IgKGRvdWJsZSBfX3gpIDsgZXh0
ZXJuIGRvdWJsZSBfX2Zsb29yIChkb3VibGUgX194KSA7CgoKZXh0ZXJuIGRvdWJsZSBmbW9kIChk
b3VibGUgX194LCBkb3VibGUgX195KSA7IGV4dGVybiBkb3VibGUgX19mbW9kIChkb3VibGUgX194
LCBkb3VibGUgX195KSA7CgoKCgpleHRlcm4gaW50IF9faXNpbmYgKGRvdWJsZSBfX3ZhbHVlKSBf
X2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGludCBfX2Zpbml0ZSAoZG91Ymxl
IF9fdmFsdWUpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCmV4dGVybiBpbnQgaXNp
bmYgKGRvdWJsZSBfX3ZhbHVlKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJu
IGludCBmaW5pdGUgKGRvdWJsZSBfX3ZhbHVlKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7
CgoKZXh0ZXJuIGRvdWJsZSBkcmVtIChkb3VibGUgX194LCBkb3VibGUgX195KSA7IGV4dGVybiBk
b3VibGUgX19kcmVtIChkb3VibGUgX194LCBkb3VibGUgX195KSA7CgoKCmV4dGVybiBkb3VibGUg
c2lnbmlmaWNhbmQgKGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGRvdWJsZSBfX3NpZ25pZmljYW5kIChk
b3VibGUgX194KSA7CgoKCgpleHRlcm4gZG91YmxlIGNvcHlzaWduIChkb3VibGUgX194LCBkb3Vi
bGUgX195KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBkb3VibGUgX19jb3B5
c2lnbiAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykp
OwojIDIwOSAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgiIDMKZXh0ZXJuIGludCBfX2lz
bmFuIChkb3VibGUgX192YWx1ZSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgpleHRl
cm4gaW50IGlzbmFuIChkb3VibGUgX192YWx1ZSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykp
OwoKCmV4dGVybiBkb3VibGUgajAgKGRvdWJsZSkgOyBleHRlcm4gZG91YmxlIF9fajAgKGRvdWJs
ZSkgOwpleHRlcm4gZG91YmxlIGoxIChkb3VibGUpIDsgZXh0ZXJuIGRvdWJsZSBfX2oxIChkb3Vi
bGUpIDsKZXh0ZXJuIGRvdWJsZSBqbiAoaW50LCBkb3VibGUpIDsgZXh0ZXJuIGRvdWJsZSBfX2pu
IChpbnQsIGRvdWJsZSkgOwpleHRlcm4gZG91YmxlIHkwIChkb3VibGUpIDsgZXh0ZXJuIGRvdWJs
ZSBfX3kwIChkb3VibGUpIDsKZXh0ZXJuIGRvdWJsZSB5MSAoZG91YmxlKSA7IGV4dGVybiBkb3Vi
bGUgX195MSAoZG91YmxlKSA7CmV4dGVybiBkb3VibGUgeW4gKGludCwgZG91YmxlKSA7IGV4dGVy
biBkb3VibGUgX195biAoaW50LCBkb3VibGUpIDsKCgoKCgpleHRlcm4gZG91YmxlIGVyZiAoZG91
YmxlKSA7IGV4dGVybiBkb3VibGUgX19lcmYgKGRvdWJsZSkgOwpleHRlcm4gZG91YmxlIGVyZmMg
KGRvdWJsZSkgOyBleHRlcm4gZG91YmxlIF9fZXJmYyAoZG91YmxlKSA7CmV4dGVybiBkb3VibGUg
bGdhbW1hIChkb3VibGUpIDsgZXh0ZXJuIGRvdWJsZSBfX2xnYW1tYSAoZG91YmxlKSA7CiMgMjM4
ICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoY2FsbHMuaCIgMwpleHRlcm4gZG91YmxlIGdhbW1hIChk
b3VibGUpIDsgZXh0ZXJuIGRvdWJsZSBfX2dhbW1hIChkb3VibGUpIDsKCgoKCgoKZXh0ZXJuIGRv
dWJsZSBsZ2FtbWFfciAoZG91YmxlLCBpbnQgKl9fc2lnbmdhbXApIDsgZXh0ZXJuIGRvdWJsZSBf
X2xnYW1tYV9yIChkb3VibGUsIGludCAqX19zaWduZ2FtcCkgOwoKCgoKCgpleHRlcm4gZG91Ymxl
IHJpbnQgKGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGRvdWJsZSBfX3JpbnQgKGRvdWJsZSBfX3gpIDsK
CgpleHRlcm4gZG91YmxlIG5leHRhZnRlciAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgX19hdHRy
aWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gZG91YmxlIF9fbmV4dGFmdGVyIChkb3VibGUg
X194LCBkb3VibGUgX195KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgoKZXh0ZXJu
IGRvdWJsZSByZW1haW5kZXIgKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIDsgZXh0ZXJuIGRvdWJs
ZSBfX3JlbWFpbmRlciAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgOwoKCgpleHRlcm4gZG91Ymxl
IHNjYWxiIChkb3VibGUgX194LCBkb3VibGUgX19uKSA7IGV4dGVybiBkb3VibGUgX19zY2FsYiAo
ZG91YmxlIF9feCwgZG91YmxlIF9fbikgOwoKCgoKZXh0ZXJuIGRvdWJsZSBzY2FsYm4gKGRvdWJs
ZSBfX3gsIGludCBfX24pIDsgZXh0ZXJuIGRvdWJsZSBfX3NjYWxibiAoZG91YmxlIF9feCwgaW50
IF9fbikgOwoKCgpleHRlcm4gaW50IGlsb2diIChkb3VibGUgX194KSA7IGV4dGVybiBpbnQgX19p
bG9nYiAoZG91YmxlIF9feCkgOwojIDY0ICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAyIDMKIyA4MiAi
L3Vzci9pbmNsdWRlL21hdGguaCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5o
IiAxIDMKIyA1NCAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgiIDMKZXh0ZXJuIGZsb2F0
IGFjb3NmIChmbG9hdCBfX3gpIDsgZXh0ZXJuIGZsb2F0IF9fYWNvc2YgKGZsb2F0IF9feCkgOwoK
ZXh0ZXJuIGZsb2F0IGFzaW5mIChmbG9hdCBfX3gpIDsgZXh0ZXJuIGZsb2F0IF9fYXNpbmYgKGZs
b2F0IF9feCkgOwoKZXh0ZXJuIGZsb2F0IGF0YW5mIChmbG9hdCBfX3gpIDsgZXh0ZXJuIGZsb2F0
IF9fYXRhbmYgKGZsb2F0IF9feCkgOwoKZXh0ZXJuIGZsb2F0IGF0YW4yZiAoZmxvYXQgX195LCBm
bG9hdCBfX3gpIDsgZXh0ZXJuIGZsb2F0IF9fYXRhbjJmIChmbG9hdCBfX3ksIGZsb2F0IF9feCkg
OwoKCmV4dGVybiBmbG9hdCBjb3NmIChmbG9hdCBfX3gpIDsgZXh0ZXJuIGZsb2F0IF9fY29zZiAo
ZmxvYXQgX194KSA7CgpleHRlcm4gZmxvYXQgc2luZiAoZmxvYXQgX194KSA7IGV4dGVybiBmbG9h
dCBfX3NpbmYgKGZsb2F0IF9feCkgOwoKZXh0ZXJuIGZsb2F0IHRhbmYgKGZsb2F0IF9feCkgOyBl
eHRlcm4gZmxvYXQgX190YW5mIChmbG9hdCBfX3gpIDsKIyA3OCAiL3Vzci9pbmNsdWRlL2JpdHMv
bWF0aGNhbGxzLmgiIDMKZXh0ZXJuIGZsb2F0IGNvc2hmIChmbG9hdCBfX3gpIDsgZXh0ZXJuIGZs
b2F0IF9fY29zaGYgKGZsb2F0IF9feCkgOwoKZXh0ZXJuIGZsb2F0IHNpbmhmIChmbG9hdCBfX3gp
IDsgZXh0ZXJuIGZsb2F0IF9fc2luaGYgKGZsb2F0IF9feCkgOwoKZXh0ZXJuIGZsb2F0IHRhbmhm
IChmbG9hdCBfX3gpIDsgZXh0ZXJuIGZsb2F0IF9fdGFuaGYgKGZsb2F0IF9feCkgOwoKCgpleHRl
cm4gZmxvYXQgYWNvc2hmIChmbG9hdCBfX3gpIDsgZXh0ZXJuIGZsb2F0IF9fYWNvc2hmIChmbG9h
dCBfX3gpIDsKCmV4dGVybiBmbG9hdCBhc2luaGYgKGZsb2F0IF9feCkgOyBleHRlcm4gZmxvYXQg
X19hc2luaGYgKGZsb2F0IF9feCkgOwoKZXh0ZXJuIGZsb2F0IGF0YW5oZiAoZmxvYXQgX194KSA7
IGV4dGVybiBmbG9hdCBfX2F0YW5oZiAoZmxvYXQgX194KSA7CgoKCgoKZXh0ZXJuIGZsb2F0IGV4
cGYgKGZsb2F0IF9feCkgOyBleHRlcm4gZmxvYXQgX19leHBmIChmbG9hdCBfX3gpIDsKIyAxMDYg
Ii91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAzCmV4dGVybiBmbG9hdCBmcmV4cGYgKGZs
b2F0IF9feCwgaW50ICpfX2V4cG9uZW50KSA7IGV4dGVybiBmbG9hdCBfX2ZyZXhwZiAoZmxvYXQg
X194LCBpbnQgKl9fZXhwb25lbnQpIDsKCgpleHRlcm4gZmxvYXQgbGRleHBmIChmbG9hdCBfX3gs
IGludCBfX2V4cG9uZW50KSA7IGV4dGVybiBmbG9hdCBfX2xkZXhwZiAoZmxvYXQgX194LCBpbnQg
X19leHBvbmVudCkgOwoKCmV4dGVybiBmbG9hdCBsb2dmIChmbG9hdCBfX3gpIDsgZXh0ZXJuIGZs
b2F0IF9fbG9nZiAoZmxvYXQgX194KSA7CgoKZXh0ZXJuIGZsb2F0IGxvZzEwZiAoZmxvYXQgX194
KSA7IGV4dGVybiBmbG9hdCBfX2xvZzEwZiAoZmxvYXQgX194KSA7CgoKZXh0ZXJuIGZsb2F0IG1v
ZGZmIChmbG9hdCBfX3gsIGZsb2F0ICpfX2lwdHIpIDsgZXh0ZXJuIGZsb2F0IF9fbW9kZmYgKGZs
b2F0IF9feCwgZmxvYXQgKl9faXB0cikgOwoKCgpleHRlcm4gZmxvYXQgZXhwbTFmIChmbG9hdCBf
X3gpIDsgZXh0ZXJuIGZsb2F0IF9fZXhwbTFmIChmbG9hdCBfX3gpIDsKCgpleHRlcm4gZmxvYXQg
bG9nMXBmIChmbG9hdCBfX3gpIDsgZXh0ZXJuIGZsb2F0IF9fbG9nMXBmIChmbG9hdCBfX3gpIDsK
CgpleHRlcm4gZmxvYXQgbG9nYmYgKGZsb2F0IF9feCkgOyBleHRlcm4gZmxvYXQgX19sb2diZiAo
ZmxvYXQgX194KSA7CiMgMTQzICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoY2FsbHMuaCIgMwpleHRl
cm4gZmxvYXQgcG93ZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIDsgZXh0ZXJuIGZsb2F0IF9fcG93
ZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIDsKCgpleHRlcm4gZmxvYXQgc3FydGYgKGZsb2F0IF9f
eCkgOyBleHRlcm4gZmxvYXQgX19zcXJ0ZiAoZmxvYXQgX194KSA7CgoKCmV4dGVybiBmbG9hdCBo
eXBvdGYgKGZsb2F0IF9feCwgZmxvYXQgX195KSA7IGV4dGVybiBmbG9hdCBfX2h5cG90ZiAoZmxv
YXQgX194LCBmbG9hdCBfX3kpIDsKCgoKCmV4dGVybiBmbG9hdCBjYnJ0ZiAoZmxvYXQgX194KSA7
IGV4dGVybiBmbG9hdCBfX2NicnRmIChmbG9hdCBfX3gpIDsKCgoKCgoKZXh0ZXJuIGZsb2F0IGNl
aWxmIChmbG9hdCBfX3gpIDsgZXh0ZXJuIGZsb2F0IF9fY2VpbGYgKGZsb2F0IF9feCkgOwoKCmV4
dGVybiBmbG9hdCBmYWJzZiAoZmxvYXQgX194KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7
IGV4dGVybiBmbG9hdCBfX2ZhYnNmIChmbG9hdCBfX3gpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0
X18pKTsKCgpleHRlcm4gZmxvYXQgZmxvb3JmIChmbG9hdCBfX3gpIDsgZXh0ZXJuIGZsb2F0IF9f
Zmxvb3JmIChmbG9hdCBfX3gpIDsKCgpleHRlcm4gZmxvYXQgZm1vZGYgKGZsb2F0IF9feCwgZmxv
YXQgX195KSA7IGV4dGVybiBmbG9hdCBfX2Ztb2RmIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgOwoK
CgoKZXh0ZXJuIGludCBfX2lzaW5mZiAoZmxvYXQgX192YWx1ZSkgX19hdHRyaWJ1dGVfXyAoKF9f
Y29uc3RfXykpOwoKCmV4dGVybiBpbnQgX19maW5pdGVmIChmbG9hdCBfX3ZhbHVlKSBfX2F0dHJp
YnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgpleHRlcm4gaW50IGlzaW5mZiAoZmxvYXQgX192YWx1
ZSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBpbnQgZmluaXRlZiAoZmxv
YXQgX192YWx1ZSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBmbG9hdCBk
cmVtZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIDsgZXh0ZXJuIGZsb2F0IF9fZHJlbWYgKGZsb2F0
IF9feCwgZmxvYXQgX195KSA7CgoKCmV4dGVybiBmbG9hdCBzaWduaWZpY2FuZGYgKGZsb2F0IF9f
eCkgOyBleHRlcm4gZmxvYXQgX19zaWduaWZpY2FuZGYgKGZsb2F0IF9feCkgOwoKCgoKZXh0ZXJu
IGZsb2F0IGNvcHlzaWduZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIF9fYXR0cmlidXRlX18gKChf
X2NvbnN0X18pKTsgZXh0ZXJuIGZsb2F0IF9fY29weXNpZ25mIChmbG9hdCBfX3gsIGZsb2F0IF9f
eSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwojIDIwOSAiL3Vzci9pbmNsdWRlL2JpdHMv
bWF0aGNhbGxzLmgiIDMKZXh0ZXJuIGludCBfX2lzbmFuZiAoZmxvYXQgX192YWx1ZSkgX19hdHRy
aWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgpleHRlcm4gaW50IGlzbmFuZiAoZmxvYXQgX192YWx1
ZSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBmbG9hdCBqMGYgKGZsb2F0
KSA7IGV4dGVybiBmbG9hdCBfX2owZiAoZmxvYXQpIDsKZXh0ZXJuIGZsb2F0IGoxZiAoZmxvYXQp
IDsgZXh0ZXJuIGZsb2F0IF9fajFmIChmbG9hdCkgOwpleHRlcm4gZmxvYXQgam5mIChpbnQsIGZs
b2F0KSA7IGV4dGVybiBmbG9hdCBfX2puZiAoaW50LCBmbG9hdCkgOwpleHRlcm4gZmxvYXQgeTBm
IChmbG9hdCkgOyBleHRlcm4gZmxvYXQgX195MGYgKGZsb2F0KSA7CmV4dGVybiBmbG9hdCB5MWYg
KGZsb2F0KSA7IGV4dGVybiBmbG9hdCBfX3kxZiAoZmxvYXQpIDsKZXh0ZXJuIGZsb2F0IHluZiAo
aW50LCBmbG9hdCkgOyBleHRlcm4gZmxvYXQgX195bmYgKGludCwgZmxvYXQpIDsKCgoKCgpleHRl
cm4gZmxvYXQgZXJmZiAoZmxvYXQpIDsgZXh0ZXJuIGZsb2F0IF9fZXJmZiAoZmxvYXQpIDsKZXh0
ZXJuIGZsb2F0IGVyZmNmIChmbG9hdCkgOyBleHRlcm4gZmxvYXQgX19lcmZjZiAoZmxvYXQpIDsK
ZXh0ZXJuIGZsb2F0IGxnYW1tYWYgKGZsb2F0KSA7IGV4dGVybiBmbG9hdCBfX2xnYW1tYWYgKGZs
b2F0KSA7CiMgMjM4ICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoY2FsbHMuaCIgMwpleHRlcm4gZmxv
YXQgZ2FtbWFmIChmbG9hdCkgOyBleHRlcm4gZmxvYXQgX19nYW1tYWYgKGZsb2F0KSA7CgoKCgoK
CmV4dGVybiBmbG9hdCBsZ2FtbWFmX3IgKGZsb2F0LCBpbnQgKl9fc2lnbmdhbXApIDsgZXh0ZXJu
IGZsb2F0IF9fbGdhbW1hZl9yIChmbG9hdCwgaW50ICpfX3NpZ25nYW1wKSA7CgoKCgoKCmV4dGVy
biBmbG9hdCByaW50ZiAoZmxvYXQgX194KSA7IGV4dGVybiBmbG9hdCBfX3JpbnRmIChmbG9hdCBf
X3gpIDsKCgpleHRlcm4gZmxvYXQgbmV4dGFmdGVyZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIF9f
YXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGZsb2F0IF9fbmV4dGFmdGVyZiAoZmxv
YXQgX194LCBmbG9hdCBfX3kpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCgpleHRl
cm4gZmxvYXQgcmVtYWluZGVyZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIDsgZXh0ZXJuIGZsb2F0
IF9fcmVtYWluZGVyZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIDsKCgoKZXh0ZXJuIGZsb2F0IHNj
YWxiZiAoZmxvYXQgX194LCBmbG9hdCBfX24pIDsgZXh0ZXJuIGZsb2F0IF9fc2NhbGJmIChmbG9h
dCBfX3gsIGZsb2F0IF9fbikgOwoKCgoKZXh0ZXJuIGZsb2F0IHNjYWxibmYgKGZsb2F0IF9feCwg
aW50IF9fbikgOyBleHRlcm4gZmxvYXQgX19zY2FsYm5mIChmbG9hdCBfX3gsIGludCBfX24pIDsK
CgoKZXh0ZXJuIGludCBpbG9nYmYgKGZsb2F0IF9feCkgOyBleHRlcm4gaW50IF9faWxvZ2JmIChm
bG9hdCBfX3gpIDsKIyA4MyAiL3Vzci9pbmNsdWRlL21hdGguaCIgMiAzCiMgOTkgIi91c3IvaW5j
bHVkZS9tYXRoLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoY2FsbHMuaCIgMSAzCiMg
NTQgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAzCmV4dGVybiBsb25nIGRvdWJsZSBh
Y29zbCAobG9uZyBkb3VibGUgX194KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2Fjb3NsIChsb25n
IGRvdWJsZSBfX3gpIDsKCmV4dGVybiBsb25nIGRvdWJsZSBhc2lubCAobG9uZyBkb3VibGUgX194
KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2FzaW5sIChsb25nIGRvdWJsZSBfX3gpIDsKCmV4dGVy
biBsb25nIGRvdWJsZSBhdGFubCAobG9uZyBkb3VibGUgX194KSA7IGV4dGVybiBsb25nIGRvdWJs
ZSBfX2F0YW5sIChsb25nIGRvdWJsZSBfX3gpIDsKCmV4dGVybiBsb25nIGRvdWJsZSBhdGFuMmwg
KGxvbmcgZG91YmxlIF9feSwgbG9uZyBkb3VibGUgX194KSA7IGV4dGVybiBsb25nIGRvdWJsZSBf
X2F0YW4ybCAobG9uZyBkb3VibGUgX195LCBsb25nIGRvdWJsZSBfX3gpIDsKCgpleHRlcm4gbG9u
ZyBkb3VibGUgY29zbCAobG9uZyBkb3VibGUgX194KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2Nv
c2wgKGxvbmcgZG91YmxlIF9feCkgOwoKZXh0ZXJuIGxvbmcgZG91YmxlIHNpbmwgKGxvbmcgZG91
YmxlIF9feCkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19zaW5sIChsb25nIGRvdWJsZSBfX3gpIDsK
CmV4dGVybiBsb25nIGRvdWJsZSB0YW5sIChsb25nIGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGxvbmcg
ZG91YmxlIF9fdGFubCAobG9uZyBkb3VibGUgX194KSA7CiMgNzggIi91c3IvaW5jbHVkZS9iaXRz
L21hdGhjYWxscy5oIiAzCmV4dGVybiBsb25nIGRvdWJsZSBjb3NobCAobG9uZyBkb3VibGUgX194
KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2Nvc2hsIChsb25nIGRvdWJsZSBfX3gpIDsKCmV4dGVy
biBsb25nIGRvdWJsZSBzaW5obCAobG9uZyBkb3VibGUgX194KSA7IGV4dGVybiBsb25nIGRvdWJs
ZSBfX3NpbmhsIChsb25nIGRvdWJsZSBfX3gpIDsKCmV4dGVybiBsb25nIGRvdWJsZSB0YW5obCAo
bG9uZyBkb3VibGUgX194KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX3RhbmhsIChsb25nIGRvdWJs
ZSBfX3gpIDsKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIGFjb3NobCAobG9uZyBkb3VibGUgX194KSA7
IGV4dGVybiBsb25nIGRvdWJsZSBfX2Fjb3NobCAobG9uZyBkb3VibGUgX194KSA7CgpleHRlcm4g
bG9uZyBkb3VibGUgYXNpbmhsIChsb25nIGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGxvbmcgZG91Ymxl
IF9fYXNpbmhsIChsb25nIGRvdWJsZSBfX3gpIDsKCmV4dGVybiBsb25nIGRvdWJsZSBhdGFuaGwg
KGxvbmcgZG91YmxlIF9feCkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19hdGFuaGwgKGxvbmcgZG91
YmxlIF9feCkgOwoKCgoKCmV4dGVybiBsb25nIGRvdWJsZSBleHBsIChsb25nIGRvdWJsZSBfX3gp
IDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fZXhwbCAobG9uZyBkb3VibGUgX194KSA7CiMgMTA2ICIv
dXNyL2luY2x1ZGUvYml0cy9tYXRoY2FsbHMuaCIgMwpleHRlcm4gbG9uZyBkb3VibGUgZnJleHBs
IChsb25nIGRvdWJsZSBfX3gsIGludCAqX19leHBvbmVudCkgOyBleHRlcm4gbG9uZyBkb3VibGUg
X19mcmV4cGwgKGxvbmcgZG91YmxlIF9feCwgaW50ICpfX2V4cG9uZW50KSA7CgoKZXh0ZXJuIGxv
bmcgZG91YmxlIGxkZXhwbCAobG9uZyBkb3VibGUgX194LCBpbnQgX19leHBvbmVudCkgOyBleHRl
cm4gbG9uZyBkb3VibGUgX19sZGV4cGwgKGxvbmcgZG91YmxlIF9feCwgaW50IF9fZXhwb25lbnQp
IDsKCgpleHRlcm4gbG9uZyBkb3VibGUgbG9nbCAobG9uZyBkb3VibGUgX194KSA7IGV4dGVybiBs
b25nIGRvdWJsZSBfX2xvZ2wgKGxvbmcgZG91YmxlIF9feCkgOwoKCmV4dGVybiBsb25nIGRvdWJs
ZSBsb2cxMGwgKGxvbmcgZG91YmxlIF9feCkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19sb2cxMGwg
KGxvbmcgZG91YmxlIF9feCkgOwoKCmV4dGVybiBsb25nIGRvdWJsZSBtb2RmbCAobG9uZyBkb3Vi
bGUgX194LCBsb25nIGRvdWJsZSAqX19pcHRyKSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX21vZGZs
IChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlICpfX2lwdHIpIDsKCgoKZXh0ZXJuIGxvbmcg
ZG91YmxlIGV4cG0xbCAobG9uZyBkb3VibGUgX194KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2V4
cG0xbCAobG9uZyBkb3VibGUgX194KSA7CgoKZXh0ZXJuIGxvbmcgZG91YmxlIGxvZzFwbCAobG9u
ZyBkb3VibGUgX194KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2xvZzFwbCAobG9uZyBkb3VibGUg
X194KSA7CgoKZXh0ZXJuIGxvbmcgZG91YmxlIGxvZ2JsIChsb25nIGRvdWJsZSBfX3gpIDsgZXh0
ZXJuIGxvbmcgZG91YmxlIF9fbG9nYmwgKGxvbmcgZG91YmxlIF9feCkgOwojIDE0MyAiL3Vzci9p
bmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgiIDMKZXh0ZXJuIGxvbmcgZG91YmxlIHBvd2wgKGxvbmcg
ZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX3Bvd2wg
KGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSA7CgoKZXh0ZXJuIGxvbmcgZG91Ymxl
IHNxcnRsIChsb25nIGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fc3FydGwgKGxv
bmcgZG91YmxlIF9feCkgOwoKCgpleHRlcm4gbG9uZyBkb3VibGUgaHlwb3RsIChsb25nIGRvdWJs
ZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19oeXBvdGwgKGxv
bmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSA7CgoKCgpleHRlcm4gbG9uZyBkb3VibGUg
Y2JydGwgKGxvbmcgZG91YmxlIF9feCkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19jYnJ0bCAobG9u
ZyBkb3VibGUgX194KSA7CgoKCgoKCmV4dGVybiBsb25nIGRvdWJsZSBjZWlsbCAobG9uZyBkb3Vi
bGUgX194KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2NlaWxsIChsb25nIGRvdWJsZSBfX3gpIDsK
CgpleHRlcm4gbG9uZyBkb3VibGUgZmFic2wgKGxvbmcgZG91YmxlIF9feCkgX19hdHRyaWJ1dGVf
XyAoKF9fY29uc3RfXykpOyBleHRlcm4gbG9uZyBkb3VibGUgX19mYWJzbCAobG9uZyBkb3VibGUg
X194KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGxvbmcgZG91YmxlIGZs
b29ybCAobG9uZyBkb3VibGUgX194KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2Zsb29ybCAobG9u
ZyBkb3VibGUgX194KSA7CgoKZXh0ZXJuIGxvbmcgZG91YmxlIGZtb2RsIChsb25nIGRvdWJsZSBf
X3gsIGxvbmcgZG91YmxlIF9feSkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19mbW9kbCAobG9uZyBk
b3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIDsKCgoKCmV4dGVybiBpbnQgX19pc2luZmwgKGxv
bmcgZG91YmxlIF9fdmFsdWUpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4g
aW50IF9fZmluaXRlbCAobG9uZyBkb3VibGUgX192YWx1ZSkgX19hdHRyaWJ1dGVfXyAoKF9fY29u
c3RfXykpOwoKCgoKZXh0ZXJuIGludCBpc2luZmwgKGxvbmcgZG91YmxlIF9fdmFsdWUpIF9fYXR0
cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gaW50IGZpbml0ZWwgKGxvbmcgZG91Ymxl
IF9fdmFsdWUpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gbG9uZyBkb3Vi
bGUgZHJlbWwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSA7IGV4dGVybiBsb25n
IGRvdWJsZSBfX2RyZW1sIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgOwoKCgpl
eHRlcm4gbG9uZyBkb3VibGUgc2lnbmlmaWNhbmRsIChsb25nIGRvdWJsZSBfX3gpIDsgZXh0ZXJu
IGxvbmcgZG91YmxlIF9fc2lnbmlmaWNhbmRsIChsb25nIGRvdWJsZSBfX3gpIDsKCgoKCmV4dGVy
biBsb25nIGRvdWJsZSBjb3B5c2lnbmwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195
KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2NvcHlz
aWdubCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIF9fYXR0cmlidXRlX18gKChf
X2NvbnN0X18pKTsKIyAyMDkgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAzCmV4dGVy
biBpbnQgX19pc25hbmwgKGxvbmcgZG91YmxlIF9fdmFsdWUpIF9fYXR0cmlidXRlX18gKChfX2Nv
bnN0X18pKTsKCgoKZXh0ZXJuIGludCBpc25hbmwgKGxvbmcgZG91YmxlIF9fdmFsdWUpIF9fYXR0
cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gbG9uZyBkb3VibGUgajBsIChsb25nIGRv
dWJsZSkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19qMGwgKGxvbmcgZG91YmxlKSA7CmV4dGVybiBs
b25nIGRvdWJsZSBqMWwgKGxvbmcgZG91YmxlKSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2oxbCAo
bG9uZyBkb3VibGUpIDsKZXh0ZXJuIGxvbmcgZG91YmxlIGpubCAoaW50LCBsb25nIGRvdWJsZSkg
OyBleHRlcm4gbG9uZyBkb3VibGUgX19qbmwgKGludCwgbG9uZyBkb3VibGUpIDsKZXh0ZXJuIGxv
bmcgZG91YmxlIHkwbCAobG9uZyBkb3VibGUpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9feTBsIChs
b25nIGRvdWJsZSkgOwpleHRlcm4gbG9uZyBkb3VibGUgeTFsIChsb25nIGRvdWJsZSkgOyBleHRl
cm4gbG9uZyBkb3VibGUgX195MWwgKGxvbmcgZG91YmxlKSA7CmV4dGVybiBsb25nIGRvdWJsZSB5
bmwgKGludCwgbG9uZyBkb3VibGUpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9feW5sIChpbnQsIGxv
bmcgZG91YmxlKSA7CgoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIGVyZmwgKGxvbmcgZG91YmxlKSA7
IGV4dGVybiBsb25nIGRvdWJsZSBfX2VyZmwgKGxvbmcgZG91YmxlKSA7CmV4dGVybiBsb25nIGRv
dWJsZSBlcmZjbCAobG9uZyBkb3VibGUpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fZXJmY2wgKGxv
bmcgZG91YmxlKSA7CmV4dGVybiBsb25nIGRvdWJsZSBsZ2FtbWFsIChsb25nIGRvdWJsZSkgOyBl
eHRlcm4gbG9uZyBkb3VibGUgX19sZ2FtbWFsIChsb25nIGRvdWJsZSkgOwojIDIzOCAiL3Vzci9p
bmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgiIDMKZXh0ZXJuIGxvbmcgZG91YmxlIGdhbW1hbCAobG9u
ZyBkb3VibGUpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fZ2FtbWFsIChsb25nIGRvdWJsZSkgOwoK
CgoKCgpleHRlcm4gbG9uZyBkb3VibGUgbGdhbW1hbF9yIChsb25nIGRvdWJsZSwgaW50ICpfX3Np
Z25nYW1wKSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2xnYW1tYWxfciAobG9uZyBkb3VibGUsIGlu
dCAqX19zaWduZ2FtcCkgOwoKCgoKCgpleHRlcm4gbG9uZyBkb3VibGUgcmludGwgKGxvbmcgZG91
YmxlIF9feCkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19yaW50bCAobG9uZyBkb3VibGUgX194KSA7
CgoKZXh0ZXJuIGxvbmcgZG91YmxlIG5leHRhZnRlcmwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBk
b3VibGUgX195KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBsb25nIGRvdWJs
ZSBfX25leHRhZnRlcmwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSBfX2F0dHJp
YnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIHJlbWFpbmRlcmwg
KGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSA7IGV4dGVybiBsb25nIGRvdWJsZSBf
X3JlbWFpbmRlcmwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSA7CgoKCmV4dGVy
biBsb25nIGRvdWJsZSBzY2FsYmwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX19uKSA7
IGV4dGVybiBsb25nIGRvdWJsZSBfX3NjYWxibCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJs
ZSBfX24pIDsKCgoKCmV4dGVybiBsb25nIGRvdWJsZSBzY2FsYm5sIChsb25nIGRvdWJsZSBfX3gs
IGludCBfX24pIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fc2NhbGJubCAobG9uZyBkb3VibGUgX194
LCBpbnQgX19uKSA7CgoKCmV4dGVybiBpbnQgaWxvZ2JsIChsb25nIGRvdWJsZSBfX3gpIDsgZXh0
ZXJuIGludCBfX2lsb2dibCAobG9uZyBkb3VibGUgX194KSA7CiMgMTAwICIvdXNyL2luY2x1ZGUv
bWF0aC5oIiAyIDMKIyAxMTMgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDMKZXh0ZXJuIGludCBzaWdu
Z2FtOwojIDI0MCAiL3Vzci9pbmNsdWRlL21hdGguaCIgMwp0eXBlZGVmIGVudW0KewogIF9JRUVF
XyA9IC0xLAogIF9TVklEXywKICBfWE9QRU5fLAogIF9QT1NJWF8sCiAgX0lTT0NfCn0gX0xJQl9W
RVJTSU9OX1RZUEU7CgoKCgpleHRlcm4gX0xJQl9WRVJTSU9OX1RZUEUgX0xJQl9WRVJTSU9OOwoj
IDI2NSAiL3Vzci9pbmNsdWRlL21hdGguaCIgMwpzdHJ1Y3QgZXhjZXB0aW9uCgogIHsKICAgIGlu
dCB0eXBlOwogICAgY2hhciAqbmFtZTsKICAgIGRvdWJsZSBhcmcxOwogICAgZG91YmxlIGFyZzI7
CiAgICBkb3VibGUgcmV0dmFsOwogIH07CgoKCgpleHRlcm4gaW50IG1hdGhlcnIgKHN0cnVjdCBl
eGNlcHRpb24gKl9fZXhjKTsKIyAzNTAgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDMKIyAxICIvdXNy
L2luY2x1ZGUvYml0cy9tYXRoaW5saW5lLmgiIDEgMwojIDI5MSAiL3Vzci9pbmNsdWRlL2JpdHMv
bWF0aGlubGluZS5oIiAzCmV4dGVybiBfX2lubGluZSBkb3VibGUgX19zZ24gKGRvdWJsZSkgOyBl
eHRlcm4gX19pbmxpbmUgZG91YmxlIF9fc2duIChkb3VibGUgX194KSB7IHJldHVybiBfX3ggPT0g
MC4wID8gMC4wIDogKF9feCA+IDAuMCA/IDEuMCA6IC0xLjApOyB9IGV4dGVybiBfX2lubGluZSBm
bG9hdCBfX3NnbmYgKGZsb2F0KSA7IGV4dGVybiBfX2lubGluZSBmbG9hdCBfX3NnbmYgKGZsb2F0
IF9feCkgeyByZXR1cm4gX194ID09IDAuMCA/IDAuMCA6IChfX3ggPiAwLjAgPyAxLjAgOiAtMS4w
KTsgfSBleHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUgX19zZ25sIChsb25nIGRvdWJsZSkgOyBl
eHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUgX19zZ25sIChsb25nIGRvdWJsZSBfX3gpIHsgcmV0
dXJuIF9feCA9PSAwLjAgPyAwLjAgOiAoX194ID4gMC4wID8gMS4wIDogLTEuMCk7IH0KCgoKCmV4
dGVybiBfX2lubGluZSBkb3VibGUgX19wb3cyIChkb3VibGUpIDsgZXh0ZXJuIF9faW5saW5lIGRv
dWJsZSBfX3BvdzIgKGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsg
cmVnaXN0ZXIgbG9uZyBkb3VibGUgX19leHBvbmVudDsgX19leHRlbnNpb25fXyBsb25nIGxvbmcg
aW50IF9fcCA9IChsb25nIGxvbmcgaW50KSBfX3g7IGlmIChfX3ggPT0gKGxvbmcgZG91YmxlKSBf
X3ApIHsgX19hc20gX192b2xhdGlsZV9fICgiZnNjYWxlIiA6ICI9dCIgKF9fdmFsdWUpIDogIjAi
ICgxLjApLCAidSIgKF9feCkpOyByZXR1cm4gX192YWx1ZTsgfSBfX2FzbSBfX3ZvbGF0aWxlX18g
KCJmbGQJJSVzdCgwKVxuXHQiICJmcm5kaW50CQkJIyBpbnQoeClcblx0IiAiZnhjaFxuXHQiICJm
c3ViCSUlc3QoMSkJCSMgZnJhY3QoeClcblx0IiAiZjJ4bTEJCQkjIDJeKGZyYWN0KHgpKSAtIDFc
blx0IiA6ICI9dCIgKF9fdmFsdWUpLCAiPXUiIChfX2V4cG9uZW50KSA6ICIwIiAoX194KSk7IF9f
dmFsdWUgKz0gMS4wOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmc2NhbGUiIDogIj10IiAoX192YWx1
ZSkgOiAiMCIgKF9fdmFsdWUpLCAidSIgKF9fZXhwb25lbnQpKTsgcmV0dXJuIF9fdmFsdWU7IH0g
ZXh0ZXJuIF9faW5saW5lIGZsb2F0IF9fcG93MmYgKGZsb2F0KSA7IGV4dGVybiBfX2lubGluZSBm
bG9hdCBfX3BvdzJmIChmbG9hdCBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsg
cmVnaXN0ZXIgbG9uZyBkb3VibGUgX19leHBvbmVudDsgX19leHRlbnNpb25fXyBsb25nIGxvbmcg
aW50IF9fcCA9IChsb25nIGxvbmcgaW50KSBfX3g7IGlmIChfX3ggPT0gKGxvbmcgZG91YmxlKSBf
X3ApIHsgX19hc20gX192b2xhdGlsZV9fICgiZnNjYWxlIiA6ICI9dCIgKF9fdmFsdWUpIDogIjAi
ICgxLjApLCAidSIgKF9feCkpOyByZXR1cm4gX192YWx1ZTsgfSBfX2FzbSBfX3ZvbGF0aWxlX18g
KCJmbGQJJSVzdCgwKVxuXHQiICJmcm5kaW50CQkJIyBpbnQoeClcblx0IiAiZnhjaFxuXHQiICJm
c3ViCSUlc3QoMSkJCSMgZnJhY3QoeClcblx0IiAiZjJ4bTEJCQkjIDJeKGZyYWN0KHgpKSAtIDFc
blx0IiA6ICI9dCIgKF9fdmFsdWUpLCAiPXUiIChfX2V4cG9uZW50KSA6ICIwIiAoX194KSk7IF9f
dmFsdWUgKz0gMS4wOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmc2NhbGUiIDogIj10IiAoX192YWx1
ZSkgOiAiMCIgKF9fdmFsdWUpLCAidSIgKF9fZXhwb25lbnQpKTsgcmV0dXJuIF9fdmFsdWU7IH0g
ZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIF9fcG93MmwgKGxvbmcgZG91YmxlKSA7IGV4dGVy
biBfX2lubGluZSBsb25nIGRvdWJsZSBfX3BvdzJsIChsb25nIGRvdWJsZSBfX3gpIHsgcmVnaXN0
ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19leHBvbmVudDsg
X19leHRlbnNpb25fXyBsb25nIGxvbmcgaW50IF9fcCA9IChsb25nIGxvbmcgaW50KSBfX3g7IGlm
IChfX3ggPT0gKGxvbmcgZG91YmxlKSBfX3ApIHsgX19hc20gX192b2xhdGlsZV9fICgiZnNjYWxl
IiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiICgxLjApLCAidSIgKF9feCkpOyByZXR1cm4gX192YWx1
ZTsgfSBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmbGQJJSVzdCgwKVxuXHQiICJmcm5kaW50CQkJIyBp
bnQoeClcblx0IiAiZnhjaFxuXHQiICJmc3ViCSUlc3QoMSkJCSMgZnJhY3QoeClcblx0IiAiZjJ4
bTEJCQkjIDJeKGZyYWN0KHgpKSAtIDFcblx0IiA6ICI9dCIgKF9fdmFsdWUpLCAiPXUiIChfX2V4
cG9uZW50KSA6ICIwIiAoX194KSk7IF9fdmFsdWUgKz0gMS4wOyBfX2FzbSBfX3ZvbGF0aWxlX18g
KCJmc2NhbGUiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9fdmFsdWUpLCAidSIgKF9fZXhwb25l
bnQpKTsgcmV0dXJuIF9fdmFsdWU7IH0KIyAzODUgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxp
bmUuaCIgMwpleHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUgX19leHBtMWwgKGxvbmcgZG91Ymxl
IF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyByZWdpc3RlciBsb25nIGRvdWJs
ZSBfX2V4cG9uZW50OyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3RlbXA7IF9fYXNtIF9fdm9sYXRp
bGVfXyAoImZsZGwyZQkJCSMgZV54IC0gMSA9IDJeKHggKiBsb2cyKGUpKSAtIDFcblx0IiAiZm11
bAklJXN0KDEpCQkjIHggKiBsb2cyKGUpXG5cdCIgImZzdAklJXN0KDEpXG5cdCIgImZybmRpbnQJ
CQkjIGludCh4ICogbG9nMihlKSlcblx0IiAiZnhjaFxuXHQiICJmc3ViCSUlc3QoMSkJCSMgZnJh
Y3QoeCAqIGxvZzIoZSkpXG5cdCIgImYyeG0xCQkJIyAyXihmcmFjdCh4ICogbG9nMihlKSkpIC0g
MVxuXHQiICJmc2NhbGUJCQkjIDJeKHggKiBsb2cyKGUpKSAtIDJeKGludCh4ICogbG9nMihlKSkp
XG5cdCIgOiAiPXQiIChfX3ZhbHVlKSwgIj11IiAoX19leHBvbmVudCkgOiAiMCIgKF9feCkpOyBf
X2FzbSBfX3ZvbGF0aWxlX18gKCJmc2NhbGUJCQkjIDJeaW50KHggKiBsb2cyKGUpKVxuXHQiIDog
Ij10IiAoX190ZW1wKSA6ICIwIiAoMS4wKSwgInUiIChfX2V4cG9uZW50KSk7IF9fdGVtcCAtPSAx
LjA7IHJldHVybiBfX3RlbXAgKyBfX3ZhbHVlID86IF9feDsgfQojIDQwNSAiL3Vzci9pbmNsdWRl
L2JpdHMvbWF0aGlubGluZS5oIiAzCmV4dGVybiBfX2lubGluZSBkb3VibGUgZXhwIChkb3VibGUg
X194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IHJlZ2lzdGVyIGxvbmcgZG91Ymxl
IF9fZXhwb25lbnQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZsZGwyZQkJCSMgZV54ID0gMl4oeCAq
IGxvZzIoZSkpXG5cdCIgImZtdWwJJSVzdCgxKQkJIyB4ICogbG9nMihlKVxuXHQiICJmc3QJJSVz
dCgxKVxuXHQiICJmcm5kaW50CQkJIyBpbnQoeCAqIGxvZzIoZSkpXG5cdCIgImZ4Y2hcblx0IiAi
ZnN1YgklJXN0KDEpCQkjIGZyYWN0KHggKiBsb2cyKGUpKVxuXHQiICJmMnhtMQkJCSMgMl4oZnJh
Y3QoeCAqIGxvZzIoZSkpKSAtIDFcblx0IiA6ICI9dCIgKF9fdmFsdWUpLCAiPXUiIChfX2V4cG9u
ZW50KSA6ICIwIiAoX194KSk7IF9fdmFsdWUgKz0gMS4wOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJm
c2NhbGUiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9fdmFsdWUpLCAidSIgKF9fZXhwb25lbnQp
KTsgcmV0dXJuIF9fdmFsdWU7IH0gZXh0ZXJuIF9faW5saW5lIGZsb2F0IGV4cGYgKGZsb2F0IF9f
eCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyByZWdpc3RlciBsb25nIGRvdWJsZSBf
X2V4cG9uZW50OyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmbGRsMmUJCQkjIGVeeCA9IDJeKHggKiBs
b2cyKGUpKVxuXHQiICJmbXVsCSUlc3QoMSkJCSMgeCAqIGxvZzIoZSlcblx0IiAiZnN0CSUlc3Qo
MSlcblx0IiAiZnJuZGludAkJCSMgaW50KHggKiBsb2cyKGUpKVxuXHQiICJmeGNoXG5cdCIgImZz
dWIJJSVzdCgxKQkJIyBmcmFjdCh4ICogbG9nMihlKSlcblx0IiAiZjJ4bTEJCQkjIDJeKGZyYWN0
KHggKiBsb2cyKGUpKSkgLSAxXG5cdCIgOiAiPXQiIChfX3ZhbHVlKSwgIj11IiAoX19leHBvbmVu
dCkgOiAiMCIgKF9feCkpOyBfX3ZhbHVlICs9IDEuMDsgX19hc20gX192b2xhdGlsZV9fICgiZnNj
YWxlIiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3ZhbHVlKSwgInUiIChfX2V4cG9uZW50KSk7
IHJldHVybiBfX3ZhbHVlOyB9IGV4dGVybiBfX2lubGluZSBsb25nIGRvdWJsZSBleHBsIChsb25n
IGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgcmVnaXN0ZXIgbG9u
ZyBkb3VibGUgX19leHBvbmVudDsgX19hc20gX192b2xhdGlsZV9fICgiZmxkbDJlCQkJIyBlXngg
PSAyXih4ICogbG9nMihlKSlcblx0IiAiZm11bAklJXN0KDEpCQkjIHggKiBsb2cyKGUpXG5cdCIg
ImZzdAklJXN0KDEpXG5cdCIgImZybmRpbnQJCQkjIGludCh4ICogbG9nMihlKSlcblx0IiAiZnhj
aFxuXHQiICJmc3ViCSUlc3QoMSkJCSMgZnJhY3QoeCAqIGxvZzIoZSkpXG5cdCIgImYyeG0xCQkJ
IyAyXihmcmFjdCh4ICogbG9nMihlKSkpIC0gMVxuXHQiIDogIj10IiAoX192YWx1ZSksICI9dSIg
KF9fZXhwb25lbnQpIDogIjAiIChfX3gpKTsgX192YWx1ZSArPSAxLjA7IF9fYXNtIF9fdm9sYXRp
bGVfXyAoImZzY2FsZSIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX192YWx1ZSksICJ1IiAoX19l
eHBvbmVudCkpOyByZXR1cm4gX192YWx1ZTsgfQpleHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUg
X19leHBsIChsb25nIGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsg
cmVnaXN0ZXIgbG9uZyBkb3VibGUgX19leHBvbmVudDsgX19hc20gX192b2xhdGlsZV9fICgiZmxk
bDJlCQkJIyBlXnggPSAyXih4ICogbG9nMihlKSlcblx0IiAiZm11bAklJXN0KDEpCQkjIHggKiBs
b2cyKGUpXG5cdCIgImZzdAklJXN0KDEpXG5cdCIgImZybmRpbnQJCQkjIGludCh4ICogbG9nMihl
KSlcblx0IiAiZnhjaFxuXHQiICJmc3ViCSUlc3QoMSkJCSMgZnJhY3QoeCAqIGxvZzIoZSkpXG5c
dCIgImYyeG0xCQkJIyAyXihmcmFjdCh4ICogbG9nMihlKSkpIC0gMVxuXHQiIDogIj10IiAoX192
YWx1ZSksICI9dSIgKF9fZXhwb25lbnQpIDogIjAiIChfX3gpKTsgX192YWx1ZSArPSAxLjA7IF9f
YXNtIF9fdm9sYXRpbGVfXyAoImZzY2FsZSIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX192YWx1
ZSksICJ1IiAoX19leHBvbmVudCkpOyByZXR1cm4gX192YWx1ZTsgfQoKCmV4dGVybiBfX2lubGlu
ZSBkb3VibGUgdGFuIChkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7
IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWUyIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9f
KSk7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZwdGFuIiA6ICI9dCIgKF9fdmFsdWUyKSwgIj11IiAo
X192YWx1ZSkgOiAiMCIgKF9feCkpOyByZXR1cm4gX192YWx1ZTsgfSBleHRlcm4gX19pbmxpbmUg
ZmxvYXQgdGFuZiAoZmxvYXQgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IHJl
Z2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWUyIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7
IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZwdGFuIiA6ICI9dCIgKF9fdmFsdWUyKSwgIj11IiAoX192
YWx1ZSkgOiAiMCIgKF9feCkpOyByZXR1cm4gX192YWx1ZTsgfSBleHRlcm4gX19pbmxpbmUgbG9u
ZyBkb3VibGUgdGFubCAobG9uZyBkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9f
dmFsdWU7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWUyIF9fYXR0cmlidXRlX18gKChfX3Vu
dXNlZF9fKSk7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZwdGFuIiA6ICI9dCIgKF9fdmFsdWUyKSwg
Ij11IiAoX192YWx1ZSkgOiAiMCIgKF9feCkpOyByZXR1cm4gX192YWx1ZTsgfQojIDQyNSAiL3Vz
ci9pbmNsdWRlL2JpdHMvbWF0aGlubGluZS5oIiAzCmV4dGVybiBfX2lubGluZSBkb3VibGUgYXRh
bjIgKGRvdWJsZSBfX3ksIGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1
ZTsgX19hc20gX192b2xhdGlsZV9fICgiZnBhdGFuIiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChf
X3gpLCAidSIgKF9feSkgOiAic3QoMSkiKTsgcmV0dXJuIF9fdmFsdWU7IH0gZXh0ZXJuIF9faW5s
aW5lIGZsb2F0IGF0YW4yZiAoZmxvYXQgX195LCBmbG9hdCBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBk
b3VibGUgX192YWx1ZTsgX19hc20gX192b2xhdGlsZV9fICgiZnBhdGFuIiA6ICI9dCIgKF9fdmFs
dWUpIDogIjAiIChfX3gpLCAidSIgKF9feSkgOiAic3QoMSkiKTsgcmV0dXJuIF9fdmFsdWU7IH0g
ZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIGF0YW4ybCAobG9uZyBkb3VibGUgX195LCBsb25n
IGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgX19hc20gX192b2xh
dGlsZV9fICgiZnBhdGFuIiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpLCAidSIgKF9feSkg
OiAic3QoMSkiKTsgcmV0dXJuIF9fdmFsdWU7IH0KZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91Ymxl
IF9fYXRhbjJsIChsb25nIGRvdWJsZSBfX3ksIGxvbmcgZG91YmxlIF9feCkgeyByZWdpc3RlciBs
b25nIGRvdWJsZSBfX3ZhbHVlOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmcGF0YW4iIDogIj10IiAo
X192YWx1ZSkgOiAiMCIgKF9feCksICJ1IiAoX195KSA6ICJzdCgxKSIpOyByZXR1cm4gX192YWx1
ZTsgfQoKCmV4dGVybiBfX2lubGluZSBkb3VibGUgZm1vZCAoZG91YmxlIF9feCwgZG91YmxlIF9f
eSkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCIx
OglmcHJlbVxuXHQiICJmbnN0c3cJJSVheFxuXHQiICJzYWhmXG5cdCIgImpwCTFiIiA6ICI9dCIg
KF9fdmFsdWUpIDogIjAiIChfX3gpLCAidSIgKF9feSkgOiAiYXgiLCAiY2MiKTsgcmV0dXJuIF9f
dmFsdWU7IH0gZXh0ZXJuIF9faW5saW5lIGZsb2F0IGZtb2RmIChmbG9hdCBfX3gsIGZsb2F0IF9f
eSkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCIx
OglmcHJlbVxuXHQiICJmbnN0c3cJJSVheFxuXHQiICJzYWhmXG5cdCIgImpwCTFiIiA6ICI9dCIg
KF9fdmFsdWUpIDogIjAiIChfX3gpLCAidSIgKF9feSkgOiAiYXgiLCAiY2MiKTsgcmV0dXJuIF9f
dmFsdWU7IH0gZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIGZtb2RsIChsb25nIGRvdWJsZSBf
X3gsIGxvbmcgZG91YmxlIF9feSkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBfX2Fz
bSBfX3ZvbGF0aWxlX18gKCIxOglmcHJlbVxuXHQiICJmbnN0c3cJJSVheFxuXHQiICJzYWhmXG5c
dCIgImpwCTFiIiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpLCAidSIgKF9feSkgOiAiYXgi
LCAiY2MiKTsgcmV0dXJuIF9fdmFsdWU7IH0KIyA0NDAgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhp
bmxpbmUuaCIgMwpleHRlcm4gX19pbmxpbmUgZG91YmxlIHNxcnQgKGRvdWJsZSBfX3gpIHsgcmVn
aXN0ZXIgZG91YmxlIF9fcmVzdWx0OyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmc3FydCIgOiAiPXQi
IChfX3Jlc3VsdCkgOiAiMCIgKF9feCkpOyByZXR1cm4gX19yZXN1bHQ7IH0gZXh0ZXJuIF9faW5s
aW5lIGZsb2F0IHNxcnRmIChmbG9hdCBfX3gpIHsgcmVnaXN0ZXIgZmxvYXQgX19yZXN1bHQ7IF9f
YXNtIF9fdm9sYXRpbGVfXyAoImZzcXJ0IiA6ICI9dCIgKF9fcmVzdWx0KSA6ICIwIiAoX194KSk7
IHJldHVybiBfX3Jlc3VsdDsgfSBleHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUgc3FydGwgKGxv
bmcgZG91YmxlIF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3Jlc3VsdDsgX19hc20gX192
b2xhdGlsZV9fICgiZnNxcnQiIDogIj10IiAoX19yZXN1bHQpIDogIjAiIChfX3gpKTsgcmV0dXJu
IF9fcmVzdWx0OyB9CmV4dGVybiBfX2lubGluZSBsb25nIGRvdWJsZSBfX3NxcnRsIChsb25nIGRv
dWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19yZXN1bHQ7IF9fYXNtIF9fdm9sYXRp
bGVfXyAoImZzcXJ0IiA6ICI9dCIgKF9fcmVzdWx0KSA6ICIwIiAoX194KSk7IHJldHVybiBfX3Jl
c3VsdDsgfQoKCmV4dGVybiBfX2lubGluZSBkb3VibGUgZmFicyAoZG91YmxlIF9feCkgeyByZXR1
cm4gX19idWlsdGluX2ZhYnMgKF9feCk7IH0KZXh0ZXJuIF9faW5saW5lIGZsb2F0IGZhYnNmIChm
bG9hdCBfX3gpIHsgcmV0dXJuIF9fYnVpbHRpbl9mYWJzZiAoX194KTsgfQpleHRlcm4gX19pbmxp
bmUgbG9uZyBkb3VibGUgZmFic2wgKGxvbmcgZG91YmxlIF9feCkgeyByZXR1cm4gX19idWlsdGlu
X2ZhYnNsIChfX3gpOyB9CmV4dGVybiBfX2lubGluZSBsb25nIGRvdWJsZSBfX2ZhYnNsIChsb25n
IGRvdWJsZSBfX3gpIHsgcmV0dXJuIF9fYnVpbHRpbl9mYWJzbCAoX194KTsgfQoKCgoKCgoKZXh0
ZXJuIF9faW5saW5lIGRvdWJsZSBzaW4gKGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgZG91YmxlIF9f
cmVzdWx0OyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmc2luIiA6ICI9dCIgKF9fcmVzdWx0KSA6ICIw
IiAoX194KSk7IHJldHVybiBfX3Jlc3VsdDsgfSBleHRlcm4gX19pbmxpbmUgZmxvYXQgc2luZiAo
ZmxvYXQgX194KSB7IHJlZ2lzdGVyIGZsb2F0IF9fcmVzdWx0OyBfX2FzbSBfX3ZvbGF0aWxlX18g
KCJmc2luIiA6ICI9dCIgKF9fcmVzdWx0KSA6ICIwIiAoX194KSk7IHJldHVybiBfX3Jlc3VsdDsg
fSBleHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUgc2lubCAobG9uZyBkb3VibGUgX194KSB7IHJl
Z2lzdGVyIGxvbmcgZG91YmxlIF9fcmVzdWx0OyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmc2luIiA6
ICI9dCIgKF9fcmVzdWx0KSA6ICIwIiAoX194KSk7IHJldHVybiBfX3Jlc3VsdDsgfQoKZXh0ZXJu
IF9faW5saW5lIGRvdWJsZSBjb3MgKGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgZG91YmxlIF9fcmVz
dWx0OyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmY29zIiA6ICI9dCIgKF9fcmVzdWx0KSA6ICIwIiAo
X194KSk7IHJldHVybiBfX3Jlc3VsdDsgfSBleHRlcm4gX19pbmxpbmUgZmxvYXQgY29zZiAoZmxv
YXQgX194KSB7IHJlZ2lzdGVyIGZsb2F0IF9fcmVzdWx0OyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJm
Y29zIiA6ICI9dCIgKF9fcmVzdWx0KSA6ICIwIiAoX194KSk7IHJldHVybiBfX3Jlc3VsdDsgfSBl
eHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUgY29zbCAobG9uZyBkb3VibGUgX194KSB7IHJlZ2lz
dGVyIGxvbmcgZG91YmxlIF9fcmVzdWx0OyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmY29zIiA6ICI9
dCIgKF9fcmVzdWx0KSA6ICIwIiAoX194KSk7IHJldHVybiBfX3Jlc3VsdDsgfQoKZXh0ZXJuIF9f
aW5saW5lIGRvdWJsZSBsb2cgKGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgZG91YmxlIF9fcmVzdWx0
OyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmbGRsbjI7IGZ4Y2g7IGZ5bDJ4IiA6ICI9dCIgKF9fcmVz
dWx0KSA6ICIwIiAoX194KSA6ICJzdCgxKSIpOyByZXR1cm4gX19yZXN1bHQ7IH0gZXh0ZXJuIF9f
aW5saW5lIGZsb2F0IGxvZ2YgKGZsb2F0IF9feCkgeyByZWdpc3RlciBmbG9hdCBfX3Jlc3VsdDsg
X19hc20gX192b2xhdGlsZV9fICgiZmxkbG4yOyBmeGNoOyBmeWwyeCIgOiAiPXQiIChfX3Jlc3Vs
dCkgOiAiMCIgKF9feCkgOiAic3QoMSkiKTsgcmV0dXJuIF9fcmVzdWx0OyB9IGV4dGVybiBfX2lu
bGluZSBsb25nIGRvdWJsZSBsb2dsIChsb25nIGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBk
b3VibGUgX19yZXN1bHQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZsZGxuMjsgZnhjaDsgZnlsMngi
IDogIj10IiAoX19yZXN1bHQpIDogIjAiIChfX3gpIDogInN0KDEpIik7IHJldHVybiBfX3Jlc3Vs
dDsgfQpleHRlcm4gX19pbmxpbmUgZG91YmxlIGxvZzEwIChkb3VibGUgX194KSB7IHJlZ2lzdGVy
IGRvdWJsZSBfX3Jlc3VsdDsgX19hc20gX192b2xhdGlsZV9fICgiZmxkbGcyOyBmeGNoOyBmeWwy
eCIgOiAiPXQiIChfX3Jlc3VsdCkgOiAiMCIgKF9feCkgOiAic3QoMSkiKTsgcmV0dXJuIF9fcmVz
dWx0OyB9IGV4dGVybiBfX2lubGluZSBmbG9hdCBsb2cxMGYgKGZsb2F0IF9feCkgeyByZWdpc3Rl
ciBmbG9hdCBfX3Jlc3VsdDsgX19hc20gX192b2xhdGlsZV9fICgiZmxkbGcyOyBmeGNoOyBmeWwy
eCIgOiAiPXQiIChfX3Jlc3VsdCkgOiAiMCIgKF9feCkgOiAic3QoMSkiKTsgcmV0dXJuIF9fcmVz
dWx0OyB9IGV4dGVybiBfX2lubGluZSBsb25nIGRvdWJsZSBsb2cxMGwgKGxvbmcgZG91YmxlIF9f
eCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3Jlc3VsdDsgX19hc20gX192b2xhdGlsZV9fICgi
ZmxkbGcyOyBmeGNoOyBmeWwyeCIgOiAiPXQiIChfX3Jlc3VsdCkgOiAiMCIgKF9feCkgOiAic3Qo
MSkiKTsgcmV0dXJuIF9fcmVzdWx0OyB9CgpleHRlcm4gX19pbmxpbmUgZG91YmxlIGFzaW4gKGRv
dWJsZSBfX3gpIHsgcmV0dXJuIF9fYXRhbjJsIChfX3gsIF9fc3FydGwgKDEuMCAtIF9feCAqIF9f
eCkpOyB9IGV4dGVybiBfX2lubGluZSBmbG9hdCBhc2luZiAoZmxvYXQgX194KSB7IHJldHVybiBf
X2F0YW4ybCAoX194LCBfX3NxcnRsICgxLjAgLSBfX3ggKiBfX3gpKTsgfSBleHRlcm4gX19pbmxp
bmUgbG9uZyBkb3VibGUgYXNpbmwgKGxvbmcgZG91YmxlIF9feCkgeyByZXR1cm4gX19hdGFuMmwg
KF9feCwgX19zcXJ0bCAoMS4wIC0gX194ICogX194KSk7IH0KZXh0ZXJuIF9faW5saW5lIGRvdWJs
ZSBhY29zIChkb3VibGUgX194KSB7IHJldHVybiBfX2F0YW4ybCAoX19zcXJ0bCAoMS4wIC0gX194
ICogX194KSwgX194KTsgfSBleHRlcm4gX19pbmxpbmUgZmxvYXQgYWNvc2YgKGZsb2F0IF9feCkg
eyByZXR1cm4gX19hdGFuMmwgKF9fc3FydGwgKDEuMCAtIF9feCAqIF9feCksIF9feCk7IH0gZXh0
ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIGFjb3NsIChsb25nIGRvdWJsZSBfX3gpIHsgcmV0dXJu
IF9fYXRhbjJsIChfX3NxcnRsICgxLjAgLSBfX3ggKiBfX3gpLCBfX3gpOyB9CgoKZXh0ZXJuIF9f
aW5saW5lIGRvdWJsZSBhdGFuIChkb3VibGUgX194KSB7IHJlZ2lzdGVyIGRvdWJsZSBfX3Jlc3Vs
dDsgX19hc20gX192b2xhdGlsZV9fICgiZmxkMTsgZnBhdGFuIiA6ICI9dCIgKF9fcmVzdWx0KSA6
ICIwIiAoX194KSA6ICJzdCgxKSIpOyByZXR1cm4gX19yZXN1bHQ7IH0gZXh0ZXJuIF9faW5saW5l
IGZsb2F0IGF0YW5mIChmbG9hdCBfX3gpIHsgcmVnaXN0ZXIgZmxvYXQgX19yZXN1bHQ7IF9fYXNt
IF9fdm9sYXRpbGVfXyAoImZsZDE7IGZwYXRhbiIgOiAiPXQiIChfX3Jlc3VsdCkgOiAiMCIgKF9f
eCkgOiAic3QoMSkiKTsgcmV0dXJuIF9fcmVzdWx0OyB9IGV4dGVybiBfX2lubGluZSBsb25nIGRv
dWJsZSBhdGFubCAobG9uZyBkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fcmVz
dWx0OyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmbGQxOyBmcGF0YW4iIDogIj10IiAoX19yZXN1bHQp
IDogIjAiIChfX3gpIDogInN0KDEpIik7IHJldHVybiBfX3Jlc3VsdDsgfQoKZXh0ZXJuIF9faW5s
aW5lIGxvbmcgZG91YmxlIF9fc2duMWwgKGxvbmcgZG91YmxlKSA7IGV4dGVybiBfX2lubGluZSBs
b25nIGRvdWJsZSBfX3NnbjFsIChsb25nIGRvdWJsZSBfX3gpIHsgX19leHRlbnNpb25fXyB1bmlv
biB7IGxvbmcgZG91YmxlIF9feGxkOyB1bnNpZ25lZCBpbnQgX194aVszXTsgfSBfX24gPSB7IF9f
eGxkOiBfX3ggfTsgX19uLl9feGlbMl0gPSAoX19uLl9feGlbMl0gJiAweDgwMDApIHwgMHgzZmZm
OyBfX24uX194aVsxXSA9IDB4ODAwMDAwMDA7IF9fbi5fX3hpWzBdID0gMDsgcmV0dXJuIF9fbi5f
X3hsZDsgfQojIDQ3OSAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGlubGluZS5oIiAzCmV4dGVybiBf
X2lubGluZSBkb3VibGUgc2luaCAoZG91YmxlIF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBf
X2V4bTEgPSBfX2V4cG0xbCAoX19mYWJzbCAoX194KSk7IHJldHVybiAwLjUgKiAoX19leG0xIC8g
KF9fZXhtMSArIDEuMCkgKyBfX2V4bTEpICogX19zZ24xbCAoX194KTsgfSBleHRlcm4gX19pbmxp
bmUgZmxvYXQgc2luaGYgKGZsb2F0IF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX2V4bTEg
PSBfX2V4cG0xbCAoX19mYWJzbCAoX194KSk7IHJldHVybiAwLjUgKiAoX19leG0xIC8gKF9fZXht
MSArIDEuMCkgKyBfX2V4bTEpICogX19zZ24xbCAoX194KTsgfSBleHRlcm4gX19pbmxpbmUgbG9u
ZyBkb3VibGUgc2luaGwgKGxvbmcgZG91YmxlIF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBf
X2V4bTEgPSBfX2V4cG0xbCAoX19mYWJzbCAoX194KSk7IHJldHVybiAwLjUgKiAoX19leG0xIC8g
KF9fZXhtMSArIDEuMCkgKyBfX2V4bTEpICogX19zZ24xbCAoX194KTsgfQoKCgpleHRlcm4gX19p
bmxpbmUgZG91YmxlIGNvc2ggKGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19l
eCA9IF9fZXhwbCAoX194KTsgcmV0dXJuIDAuNSAqIChfX2V4ICsgMS4wIC8gX19leCk7IH0gZXh0
ZXJuIF9faW5saW5lIGZsb2F0IGNvc2hmIChmbG9hdCBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3Vi
bGUgX19leCA9IF9fZXhwbCAoX194KTsgcmV0dXJuIDAuNSAqIChfX2V4ICsgMS4wIC8gX19leCk7
IH0gZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIGNvc2hsIChsb25nIGRvdWJsZSBfX3gpIHsg
cmVnaXN0ZXIgbG9uZyBkb3VibGUgX19leCA9IF9fZXhwbCAoX194KTsgcmV0dXJuIDAuNSAqIChf
X2V4ICsgMS4wIC8gX19leCk7IH0KCgoKZXh0ZXJuIF9faW5saW5lIGRvdWJsZSB0YW5oIChkb3Vi
bGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fZXhtMSA9IF9fZXhwbTFsICgtX19mYWJz
bCAoX194ICsgX194KSk7IHJldHVybiBfX2V4bTEgLyAoX19leG0xICsgMi4wKSAqIF9fc2duMWwg
KC1fX3gpOyB9IGV4dGVybiBfX2lubGluZSBmbG9hdCB0YW5oZiAoZmxvYXQgX194KSB7IHJlZ2lz
dGVyIGxvbmcgZG91YmxlIF9fZXhtMSA9IF9fZXhwbTFsICgtX19mYWJzbCAoX194ICsgX194KSk7
IHJldHVybiBfX2V4bTEgLyAoX19leG0xICsgMi4wKSAqIF9fc2duMWwgKC1fX3gpOyB9IGV4dGVy
biBfX2lubGluZSBsb25nIGRvdWJsZSB0YW5obCAobG9uZyBkb3VibGUgX194KSB7IHJlZ2lzdGVy
IGxvbmcgZG91YmxlIF9fZXhtMSA9IF9fZXhwbTFsICgtX19mYWJzbCAoX194ICsgX194KSk7IHJl
dHVybiBfX2V4bTEgLyAoX19leG0xICsgMi4wKSAqIF9fc2duMWwgKC1fX3gpOyB9CgoKCgpleHRl
cm4gX19pbmxpbmUgZG91YmxlIGZsb29yIChkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91
YmxlIF9fdmFsdWU7IF9fdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgaW50IF9fY3c7IF9fdm9sYXRp
bGUgdW5zaWduZWQgc2hvcnQgaW50IF9fY3d0bXA7IF9fYXNtIF9fdm9sYXRpbGUgKCJmbnN0Y3cg
JTAiIDogIj1tIiAoX19jdykpOyBfX2N3dG1wID0gKF9fY3cgJiAweGYzZmYpIHwgMHgwNDAwOyBf
X2FzbSBfX3ZvbGF0aWxlICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3d0bXApKTsgX19hc20gX192
b2xhdGlsZSAoImZybmRpbnQiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCkpOyBfX2FzbSBf
X3ZvbGF0aWxlICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3cpKTsgcmV0dXJuIF9fdmFsdWU7IH0g
ZXh0ZXJuIF9faW5saW5lIGZsb2F0IGZsb29yZiAoZmxvYXQgX194KSB7IHJlZ2lzdGVyIGxvbmcg
ZG91YmxlIF9fdmFsdWU7IF9fdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgaW50IF9fY3c7IF9fdm9s
YXRpbGUgdW5zaWduZWQgc2hvcnQgaW50IF9fY3d0bXA7IF9fYXNtIF9fdm9sYXRpbGUgKCJmbnN0
Y3cgJTAiIDogIj1tIiAoX19jdykpOyBfX2N3dG1wID0gKF9fY3cgJiAweGYzZmYpIHwgMHgwNDAw
OyBfX2FzbSBfX3ZvbGF0aWxlICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3d0bXApKTsgX19hc20g
X192b2xhdGlsZSAoImZybmRpbnQiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCkpOyBfX2Fz
bSBfX3ZvbGF0aWxlICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3cpKTsgcmV0dXJuIF9fdmFsdWU7
IH0gZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIGZsb29ybCAobG9uZyBkb3VibGUgX194KSB7
IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IF9fdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQg
aW50IF9fY3c7IF9fdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgaW50IF9fY3d0bXA7IF9fYXNtIF9f
dm9sYXRpbGUgKCJmbnN0Y3cgJTAiIDogIj1tIiAoX19jdykpOyBfX2N3dG1wID0gKF9fY3cgJiAw
eGYzZmYpIHwgMHgwNDAwOyBfX2FzbSBfX3ZvbGF0aWxlICgiZmxkY3cgJTAiIDogOiAibSIgKF9f
Y3d0bXApKTsgX19hc20gX192b2xhdGlsZSAoImZybmRpbnQiIDogIj10IiAoX192YWx1ZSkgOiAi
MCIgKF9feCkpOyBfX2FzbSBfX3ZvbGF0aWxlICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3cpKTsg
cmV0dXJuIF9fdmFsdWU7IH0KIyA1MDMgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUuaCIg
MwpleHRlcm4gX19pbmxpbmUgZG91YmxlIGNlaWwgKGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9u
ZyBkb3VibGUgX192YWx1ZTsgX192b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCBpbnQgX19jdzsgX192
b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCBpbnQgX19jd3RtcDsgX19hc20gX192b2xhdGlsZSAoImZu
c3RjdyAlMCIgOiAiPW0iIChfX2N3KSk7IF9fY3d0bXAgPSAoX19jdyAmIDB4ZjNmZikgfCAweDA4
MDA7IF9fYXNtIF9fdm9sYXRpbGUgKCJmbGRjdyAlMCIgOiA6ICJtIiAoX19jd3RtcCkpOyBfX2Fz
bSBfX3ZvbGF0aWxlICgiZnJuZGludCIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSk7IF9f
YXNtIF9fdm9sYXRpbGUgKCJmbGRjdyAlMCIgOiA6ICJtIiAoX19jdykpOyByZXR1cm4gX192YWx1
ZTsgfSBleHRlcm4gX19pbmxpbmUgZmxvYXQgY2VpbGYgKGZsb2F0IF9feCkgeyByZWdpc3RlciBs
b25nIGRvdWJsZSBfX3ZhbHVlOyBfX3ZvbGF0aWxlIHVuc2lnbmVkIHNob3J0IGludCBfX2N3OyBf
X3ZvbGF0aWxlIHVuc2lnbmVkIHNob3J0IGludCBfX2N3dG1wOyBfX2FzbSBfX3ZvbGF0aWxlICgi
Zm5zdGN3ICUwIiA6ICI9bSIgKF9fY3cpKTsgX19jd3RtcCA9IChfX2N3ICYgMHhmM2ZmKSB8IDB4
MDgwMDsgX19hc20gX192b2xhdGlsZSAoImZsZGN3ICUwIiA6IDogIm0iIChfX2N3dG1wKSk7IF9f
YXNtIF9fdm9sYXRpbGUgKCJmcm5kaW50IiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpKTsg
X19hc20gX192b2xhdGlsZSAoImZsZGN3ICUwIiA6IDogIm0iIChfX2N3KSk7IHJldHVybiBfX3Zh
bHVlOyB9IGV4dGVybiBfX2lubGluZSBsb25nIGRvdWJsZSBjZWlsbCAobG9uZyBkb3VibGUgX194
KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IF9fdm9sYXRpbGUgdW5zaWduZWQgc2hv
cnQgaW50IF9fY3c7IF9fdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgaW50IF9fY3d0bXA7IF9fYXNt
IF9fdm9sYXRpbGUgKCJmbnN0Y3cgJTAiIDogIj1tIiAoX19jdykpOyBfX2N3dG1wID0gKF9fY3cg
JiAweGYzZmYpIHwgMHgwODAwOyBfX2FzbSBfX3ZvbGF0aWxlICgiZmxkY3cgJTAiIDogOiAibSIg
KF9fY3d0bXApKTsgX19hc20gX192b2xhdGlsZSAoImZybmRpbnQiIDogIj10IiAoX192YWx1ZSkg
OiAiMCIgKF9feCkpOyBfX2FzbSBfX3ZvbGF0aWxlICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3cp
KTsgcmV0dXJuIF9fdmFsdWU7IH0KIyA1MjEgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUu
aCIgMwpleHRlcm4gX19pbmxpbmUgZG91YmxlCmxkZXhwIChkb3VibGUgX194LCBpbnQgX195KQp7
CiAgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgX19hc20gX192b2xhdGlsZV9fICgiZnNj
YWxlIiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpLCAidSIgKChsb25nIGRvdWJsZSkgX195
KSk7IHJldHVybiBfX3ZhbHVlOwp9CgoKCgoKCmV4dGVybiBfX2lubGluZSBkb3VibGUgZXhwbTEg
KGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgcmVnaXN0ZXIgbG9u
ZyBkb3VibGUgX19leHBvbmVudDsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX190ZW1wOyBfX2FzbSBf
X3ZvbGF0aWxlX18gKCJmbGRsMmUJCQkjIGVeeCAtIDEgPSAyXih4ICogbG9nMihlKSkgLSAxXG5c
dCIgImZtdWwJJSVzdCgxKQkJIyB4ICogbG9nMihlKVxuXHQiICJmc3QJJSVzdCgxKVxuXHQiICJm
cm5kaW50CQkJIyBpbnQoeCAqIGxvZzIoZSkpXG5cdCIgImZ4Y2hcblx0IiAiZnN1YgklJXN0KDEp
CQkjIGZyYWN0KHggKiBsb2cyKGUpKVxuXHQiICJmMnhtMQkJCSMgMl4oZnJhY3QoeCAqIGxvZzIo
ZSkpKSAtIDFcblx0IiAiZnNjYWxlCQkJIyAyXih4ICogbG9nMihlKSkgLSAyXihpbnQoeCAqIGxv
ZzIoZSkpKVxuXHQiIDogIj10IiAoX192YWx1ZSksICI9dSIgKF9fZXhwb25lbnQpIDogIjAiIChf
X3gpKTsgX19hc20gX192b2xhdGlsZV9fICgiZnNjYWxlCQkJIyAyXmludCh4ICogbG9nMihlKSlc
blx0IiA6ICI9dCIgKF9fdGVtcCkgOiAiMCIgKDEuMCksICJ1IiAoX19leHBvbmVudCkpOyBfX3Rl
bXAgLT0gMS4wOyByZXR1cm4gX190ZW1wICsgX192YWx1ZSA/OiBfX3g7IH0gZXh0ZXJuIF9faW5s
aW5lIGZsb2F0IGV4cG0xZiAoZmxvYXQgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFs
dWU7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fZXhwb25lbnQ7IHJlZ2lzdGVyIGxvbmcgZG91Ymxl
IF9fdGVtcDsgX19hc20gX192b2xhdGlsZV9fICgiZmxkbDJlCQkJIyBlXnggLSAxID0gMl4oeCAq
IGxvZzIoZSkpIC0gMVxuXHQiICJmbXVsCSUlc3QoMSkJCSMgeCAqIGxvZzIoZSlcblx0IiAiZnN0
CSUlc3QoMSlcblx0IiAiZnJuZGludAkJCSMgaW50KHggKiBsb2cyKGUpKVxuXHQiICJmeGNoXG5c
dCIgImZzdWIJJSVzdCgxKQkJIyBmcmFjdCh4ICogbG9nMihlKSlcblx0IiAiZjJ4bTEJCQkjIDJe
KGZyYWN0KHggKiBsb2cyKGUpKSkgLSAxXG5cdCIgImZzY2FsZQkJCSMgMl4oeCAqIGxvZzIoZSkp
IC0gMl4oaW50KHggKiBsb2cyKGUpKSlcblx0IiA6ICI9dCIgKF9fdmFsdWUpLCAiPXUiIChfX2V4
cG9uZW50KSA6ICIwIiAoX194KSk7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZzY2FsZQkJCSMgMl5p
bnQoeCAqIGxvZzIoZSkpXG5cdCIgOiAiPXQiIChfX3RlbXApIDogIjAiICgxLjApLCAidSIgKF9f
ZXhwb25lbnQpKTsgX190ZW1wIC09IDEuMDsgcmV0dXJuIF9fdGVtcCArIF9fdmFsdWUgPzogX194
OyB9IGV4dGVybiBfX2lubGluZSBsb25nIGRvdWJsZSBleHBtMWwgKGxvbmcgZG91YmxlIF9feCkg
eyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyByZWdpc3RlciBsb25nIGRvdWJsZSBfX2V4
cG9uZW50OyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3RlbXA7IF9fYXNtIF9fdm9sYXRpbGVfXyAo
ImZsZGwyZQkJCSMgZV54IC0gMSA9IDJeKHggKiBsb2cyKGUpKSAtIDFcblx0IiAiZm11bAklJXN0
KDEpCQkjIHggKiBsb2cyKGUpXG5cdCIgImZzdAklJXN0KDEpXG5cdCIgImZybmRpbnQJCQkjIGlu
dCh4ICogbG9nMihlKSlcblx0IiAiZnhjaFxuXHQiICJmc3ViCSUlc3QoMSkJCSMgZnJhY3QoeCAq
IGxvZzIoZSkpXG5cdCIgImYyeG0xCQkJIyAyXihmcmFjdCh4ICogbG9nMihlKSkpIC0gMVxuXHQi
ICJmc2NhbGUJCQkjIDJeKHggKiBsb2cyKGUpKSAtIDJeKGludCh4ICogbG9nMihlKSkpXG5cdCIg
OiAiPXQiIChfX3ZhbHVlKSwgIj11IiAoX19leHBvbmVudCkgOiAiMCIgKF9feCkpOyBfX2FzbSBf
X3ZvbGF0aWxlX18gKCJmc2NhbGUJCQkjIDJeaW50KHggKiBsb2cyKGUpKVxuXHQiIDogIj10IiAo
X190ZW1wKSA6ICIwIiAoMS4wKSwgInUiIChfX2V4cG9uZW50KSk7IF9fdGVtcCAtPSAxLjA7IHJl
dHVybiBfX3RlbXAgKyBfX3ZhbHVlID86IF9feDsgfQoKCgoKCgpleHRlcm4gX19pbmxpbmUgZG91
YmxlIGxvZzFwIChkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IGlm
IChfX2ZhYnNsIChfX3gpID49IDEuMCAtIDAuNSAqIDEuNDE0MjEzNTYyMzczMDk1MDQ4ODBMKSBf
X3ZhbHVlID0gbG9nbCAoMS4wICsgX194KTsgZWxzZSBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmbGRs
bjJcblx0IiAiZnhjaFxuXHQiICJmeWwyeHAxIiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3gp
IDogInN0KDEpIik7IHJldHVybiBfX3ZhbHVlOyB9IGV4dGVybiBfX2lubGluZSBmbG9hdCBsb2cx
cGYgKGZsb2F0IF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBpZiAoX19mYWJz
bCAoX194KSA+PSAxLjAgLSAwLjUgKiAxLjQxNDIxMzU2MjM3MzA5NTA0ODgwTCkgX192YWx1ZSA9
IGxvZ2wgKDEuMCArIF9feCk7IGVsc2UgX19hc20gX192b2xhdGlsZV9fICgiZmxkbG4yXG5cdCIg
ImZ4Y2hcblx0IiAiZnlsMnhwMSIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSA6ICJzdCgx
KSIpOyByZXR1cm4gX192YWx1ZTsgfSBleHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUgbG9nMXBs
IChsb25nIGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgaWYgKF9f
ZmFic2wgKF9feCkgPj0gMS4wIC0gMC41ICogMS40MTQyMTM1NjIzNzMwOTUwNDg4MEwpIF9fdmFs
dWUgPSBsb2dsICgxLjAgKyBfX3gpOyBlbHNlIF9fYXNtIF9fdm9sYXRpbGVfXyAoImZsZGxuMlxu
XHQiICJmeGNoXG5cdCIgImZ5bDJ4cDEiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCkgOiAi
c3QoMSkiKTsgcmV0dXJuIF9fdmFsdWU7IH0KIyA1NTMgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhp
bmxpbmUuaCIgMwpleHRlcm4gX19pbmxpbmUgZG91YmxlIGFzaW5oIChkb3VibGUgX194KSB7IHJl
Z2lzdGVyIGxvbmcgZG91YmxlIF9feSA9IF9fZmFic2wgKF9feCk7IHJldHVybiAobG9nMXBsIChf
X3kgKiBfX3kgLyAoX19zcXJ0bCAoX195ICogX195ICsgMS4wKSArIDEuMCkgKyBfX3kpICogX19z
Z24xbCAoX194KSk7IH0gZXh0ZXJuIF9faW5saW5lIGZsb2F0IGFzaW5oZiAoZmxvYXQgX194KSB7
IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9feSA9IF9fZmFic2wgKF9feCk7IHJldHVybiAobG9nMXBs
IChfX3kgKiBfX3kgLyAoX19zcXJ0bCAoX195ICogX195ICsgMS4wKSArIDEuMCkgKyBfX3kpICog
X19zZ24xbCAoX194KSk7IH0gZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIGFzaW5obCAobG9u
ZyBkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9feSA9IF9fZmFic2wgKF9feCk7
IHJldHVybiAobG9nMXBsIChfX3kgKiBfX3kgLyAoX19zcXJ0bCAoX195ICogX195ICsgMS4wKSAr
IDEuMCkgKyBfX3kpICogX19zZ24xbCAoX194KSk7IH0KCgoKCmV4dGVybiBfX2lubGluZSBkb3Vi
bGUgYWNvc2ggKGRvdWJsZSBfX3gpIHsgcmV0dXJuIGxvZ2wgKF9feCArIF9fc3FydGwgKF9feCAt
IDEuMCkgKiBfX3NxcnRsIChfX3ggKyAxLjApKTsgfSBleHRlcm4gX19pbmxpbmUgZmxvYXQgYWNv
c2hmIChmbG9hdCBfX3gpIHsgcmV0dXJuIGxvZ2wgKF9feCArIF9fc3FydGwgKF9feCAtIDEuMCkg
KiBfX3NxcnRsIChfX3ggKyAxLjApKTsgfSBleHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUgYWNv
c2hsIChsb25nIGRvdWJsZSBfX3gpIHsgcmV0dXJuIGxvZ2wgKF9feCArIF9fc3FydGwgKF9feCAt
IDEuMCkgKiBfX3NxcnRsIChfX3ggKyAxLjApKTsgfQoKCmV4dGVybiBfX2lubGluZSBkb3VibGUg
YXRhbmggKGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX195ID0gX19mYWJzbCAo
X194KTsgcmV0dXJuIC0wLjUgKiBsb2cxcGwgKC0oX195ICsgX195KSAvICgxLjAgKyBfX3kpKSAq
IF9fc2duMWwgKF9feCk7IH0gZXh0ZXJuIF9faW5saW5lIGZsb2F0IGF0YW5oZiAoZmxvYXQgX194
KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9feSA9IF9fZmFic2wgKF9feCk7IHJldHVybiAtMC41
ICogbG9nMXBsICgtKF9feSArIF9feSkgLyAoMS4wICsgX195KSkgKiBfX3NnbjFsIChfX3gpOyB9
IGV4dGVybiBfX2lubGluZSBsb25nIGRvdWJsZSBhdGFuaGwgKGxvbmcgZG91YmxlIF9feCkgeyBy
ZWdpc3RlciBsb25nIGRvdWJsZSBfX3kgPSBfX2ZhYnNsIChfX3gpOyByZXR1cm4gLTAuNSAqIGxv
ZzFwbCAoLShfX3kgKyBfX3kpIC8gKDEuMCArIF9feSkpICogX19zZ24xbCAoX194KTsgfQoKCgoK
ZXh0ZXJuIF9faW5saW5lIGRvdWJsZSBoeXBvdCAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgeyBy
ZXR1cm4gX19zcXJ0bCAoX194ICogX194ICsgX195ICogX195KTsgfSBleHRlcm4gX19pbmxpbmUg
ZmxvYXQgaHlwb3RmIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgeyByZXR1cm4gX19zcXJ0bCAoX194
ICogX194ICsgX195ICogX195KTsgfSBleHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUgaHlwb3Rs
IChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgeyByZXR1cm4gX19zcXJ0bCAoX194
ICogX194ICsgX195ICogX195KTsgfQoKZXh0ZXJuIF9faW5saW5lIGRvdWJsZSBsb2diIChkb3Vi
bGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IHJlZ2lzdGVyIGxvbmcgZG91
YmxlIF9fanVuazsgX19hc20gX192b2xhdGlsZV9fICgiZnh0cmFjdFxuXHQiIDogIj10IiAoX19q
dW5rKSwgIj11IiAoX192YWx1ZSkgOiAiMCIgKF9feCkpOyByZXR1cm4gX192YWx1ZTsgfSBleHRl
cm4gX19pbmxpbmUgZmxvYXQgbG9nYmYgKGZsb2F0IF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJs
ZSBfX3ZhbHVlOyByZWdpc3RlciBsb25nIGRvdWJsZSBfX2p1bms7IF9fYXNtIF9fdm9sYXRpbGVf
XyAoImZ4dHJhY3Rcblx0IiA6ICI9dCIgKF9fanVuayksICI9dSIgKF9fdmFsdWUpIDogIjAiIChf
X3gpKTsgcmV0dXJuIF9fdmFsdWU7IH0gZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIGxvZ2Js
IChsb25nIGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgcmVnaXN0
ZXIgbG9uZyBkb3VibGUgX19qdW5rOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmeHRyYWN0XG5cdCIg
OiAiPXQiIChfX2p1bmspLCAiPXUiIChfX3ZhbHVlKSA6ICIwIiAoX194KSk7IHJldHVybiBfX3Zh
bHVlOyB9CiMgNjUyICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoaW5saW5lLmgiIDMKZXh0ZXJuIF9f
aW5saW5lIGRvdWJsZSBkcmVtIChkb3VibGUgX194LCBkb3VibGUgX195KSB7IHJlZ2lzdGVyIGRv
dWJsZSBfX3ZhbHVlOyByZWdpc3RlciBpbnQgX19jbG9iYmVyZWQ7IF9fYXNtIF9fdm9sYXRpbGVf
XyAoIjE6CWZwcmVtMVxuXHQiICJmc3RzdwklJWF4XG5cdCIgInNhaGZcblx0IiAianAJMWIiIDog
Ij10IiAoX192YWx1ZSksICI9JmEiIChfX2Nsb2JiZXJlZCkgOiAiMCIgKF9feCksICJ1IiAoX195
KSA6ICJjYyIpOyByZXR1cm4gX192YWx1ZTsgfSBleHRlcm4gX19pbmxpbmUgZmxvYXQgZHJlbWYg
KGZsb2F0IF9feCwgZmxvYXQgX195KSB7IHJlZ2lzdGVyIGRvdWJsZSBfX3ZhbHVlOyByZWdpc3Rl
ciBpbnQgX19jbG9iYmVyZWQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAoIjE6CWZwcmVtMVxuXHQiICJm
c3RzdwklJWF4XG5cdCIgInNhaGZcblx0IiAianAJMWIiIDogIj10IiAoX192YWx1ZSksICI9JmEi
IChfX2Nsb2JiZXJlZCkgOiAiMCIgKF9feCksICJ1IiAoX195KSA6ICJjYyIpOyByZXR1cm4gX192
YWx1ZTsgfSBleHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUgZHJlbWwgKGxvbmcgZG91YmxlIF9f
eCwgbG9uZyBkb3VibGUgX195KSB7IHJlZ2lzdGVyIGRvdWJsZSBfX3ZhbHVlOyByZWdpc3RlciBp
bnQgX19jbG9iYmVyZWQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAoIjE6CWZwcmVtMVxuXHQiICJmc3Rz
dwklJWF4XG5cdCIgInNhaGZcblx0IiAianAJMWIiIDogIj10IiAoX192YWx1ZSksICI9JmEiIChf
X2Nsb2JiZXJlZCkgOiAiMCIgKF9feCksICJ1IiAoX195KSA6ICJjYyIpOyByZXR1cm4gX192YWx1
ZTsgfQojIDY2NSAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGlubGluZS5oIiAzCmV4dGVybiBfX2lu
bGluZSBpbnQKX19maW5pdGUgKGRvdWJsZSBfX3gpCnsKICByZXR1cm4gKF9fZXh0ZW5zaW9uX18K
ICAgICAgICAgICgoKCgodW5pb24geyBkb3VibGUgX19kOyBpbnQgX19pWzJdOyB9KSB7X19kOiBf
X3h9KS5fX2lbMV0KICAgICAgICAgICAgIHwgMHg4MDBmZmZmZnUpICsgMSkgPj4gMzEpKTsKfQoK
CgpleHRlcm4gX19pbmxpbmUgZG91YmxlIF9fY29zaG0xIChkb3VibGUpIDsgZXh0ZXJuIF9faW5s
aW5lIGRvdWJsZSBfX2Nvc2htMSAoZG91YmxlIF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBf
X2V4bTEgPSBfX2V4cG0xbCAoX19mYWJzbCAoX194KSk7IHJldHVybiAwLjUgKiAoX19leG0xIC8g
KF9fZXhtMSArIDEuMCkpICogX19leG0xOyB9IGV4dGVybiBfX2lubGluZSBmbG9hdCBfX2Nvc2ht
MWYgKGZsb2F0KSA7IGV4dGVybiBfX2lubGluZSBmbG9hdCBfX2Nvc2htMWYgKGZsb2F0IF9feCkg
eyByZWdpc3RlciBsb25nIGRvdWJsZSBfX2V4bTEgPSBfX2V4cG0xbCAoX19mYWJzbCAoX194KSk7
IHJldHVybiAwLjUgKiAoX19leG0xIC8gKF9fZXhtMSArIDEuMCkpICogX19leG0xOyB9IGV4dGVy
biBfX2lubGluZSBsb25nIGRvdWJsZSBfX2Nvc2htMWwgKGxvbmcgZG91YmxlKSA7IGV4dGVybiBf
X2lubGluZSBsb25nIGRvdWJsZSBfX2Nvc2htMWwgKGxvbmcgZG91YmxlIF9feCkgeyByZWdpc3Rl
ciBsb25nIGRvdWJsZSBfX2V4bTEgPSBfX2V4cG0xbCAoX19mYWJzbCAoX194KSk7IHJldHVybiAw
LjUgKiAoX19leG0xIC8gKF9fZXhtMSArIDEuMCkpICogX19leG0xOyB9CgoKCmV4dGVybiBfX2lu
bGluZSBkb3VibGUgX19hY29zaDFwIChkb3VibGUpIDsgZXh0ZXJuIF9faW5saW5lIGRvdWJsZSBf
X2Fjb3NoMXAgKGRvdWJsZSBfX3gpIHsgcmV0dXJuIGxvZzFwbCAoX194ICsgX19zcXJ0bCAoX194
KSAqIF9fc3FydGwgKF9feCArIDIuMCkpOyB9IGV4dGVybiBfX2lubGluZSBmbG9hdCBfX2Fjb3No
MXBmIChmbG9hdCkgOyBleHRlcm4gX19pbmxpbmUgZmxvYXQgX19hY29zaDFwZiAoZmxvYXQgX194
KSB7IHJldHVybiBsb2cxcGwgKF9feCArIF9fc3FydGwgKF9feCkgKiBfX3NxcnRsIChfX3ggKyAy
LjApKTsgfSBleHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUgX19hY29zaDFwbCAobG9uZyBkb3Vi
bGUpIDsgZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIF9fYWNvc2gxcGwgKGxvbmcgZG91Ymxl
IF9feCkgeyByZXR1cm4gbG9nMXBsIChfX3ggKyBfX3NxcnRsIChfX3gpICogX19zcXJ0bCAoX194
ICsgMi4wKSk7IH0KIyAzNTEgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDIgMwojIDQxMSAiL3Vzci9p
bmNsdWRlL21hdGguaCIgMwoKIyAxMyAicmFnZTEyOF92aWQuYyIgMgojIDEgIi91c3IvaW5jbHVk
ZS9pbnR0eXBlcy5oIiAxIDMKIyAyOCAiL3Vzci9pbmNsdWRlL2ludHR5cGVzLmgiIDMKIyAxICIv
dXNyL2luY2x1ZGUvc3RkaW50LmgiIDEgMwojIDI4ICIvdXNyL2luY2x1ZGUvc3RkaW50LmgiIDMK
IyAxICIvdXNyL2luY2x1ZGUvYml0cy93b3Jkc2l6ZS5oIiAxIDMKIyAyOSAiL3Vzci9pbmNsdWRl
L3N0ZGludC5oIiAyIDMKIyA0OSAiL3Vzci9pbmNsdWRlL3N0ZGludC5oIiAzCnR5cGVkZWYgdW5z
aWduZWQgY2hhciB1aW50OF90Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGludCB1aW50MTZfdDsK
CnR5cGVkZWYgdW5zaWduZWQgaW50IHVpbnQzMl90OwoKCgoKCl9fZXh0ZW5zaW9uX18KdHlwZWRl
ZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IHVpbnQ2NF90OwoKCgoKCgp0eXBlZGVmIHNpZ25lZCBj
aGFyIGludF9sZWFzdDhfdDsKdHlwZWRlZiBzaG9ydCBpbnQgaW50X2xlYXN0MTZfdDsKdHlwZWRl
ZiBpbnQgaW50X2xlYXN0MzJfdDsKCgoKX19leHRlbnNpb25fXwp0eXBlZGVmIGxvbmcgbG9uZyBp
bnQgaW50X2xlYXN0NjRfdDsKCgoKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIHVpbnRfbGVhc3Q4X3Q7
CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50IHVpbnRfbGVhc3QxNl90Owp0eXBlZGVmIHVuc2ln
bmVkIGludCB1aW50X2xlYXN0MzJfdDsKCgoKX19leHRlbnNpb25fXwp0eXBlZGVmIHVuc2lnbmVk
IGxvbmcgbG9uZyBpbnQgdWludF9sZWFzdDY0X3Q7CgoKCgoKCnR5cGVkZWYgc2lnbmVkIGNoYXIg
aW50X2Zhc3Q4X3Q7CgoKCgoKdHlwZWRlZiBpbnQgaW50X2Zhc3QxNl90Owp0eXBlZGVmIGludCBp
bnRfZmFzdDMyX3Q7Cl9fZXh0ZW5zaW9uX18KdHlwZWRlZiBsb25nIGxvbmcgaW50IGludF9mYXN0
NjRfdDsKCgoKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIHVpbnRfZmFzdDhfdDsKCgoKCgp0eXBlZGVm
IHVuc2lnbmVkIGludCB1aW50X2Zhc3QxNl90Owp0eXBlZGVmIHVuc2lnbmVkIGludCB1aW50X2Zh
c3QzMl90OwpfX2V4dGVuc2lvbl9fCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIGludCB1aW50
X2Zhc3Q2NF90OwojIDEyNiAiL3Vzci9pbmNsdWRlL3N0ZGludC5oIiAzCnR5cGVkZWYgaW50IGlu
dHB0cl90OwoKCnR5cGVkZWYgdW5zaWduZWQgaW50IHVpbnRwdHJfdDsKIyAxMzggIi91c3IvaW5j
bHVkZS9zdGRpbnQuaCIgMwpfX2V4dGVuc2lvbl9fCnR5cGVkZWYgbG9uZyBsb25nIGludCBpbnRt
YXhfdDsKX19leHRlbnNpb25fXwp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgdWludG1h
eF90OwojIDI5ICIvdXNyL2luY2x1ZGUvaW50dHlwZXMuaCIgMiAzCgoKCgoKCnR5cGVkZWYgbG9u
ZyBpbnQgX19nd2NoYXJfdDsKIyAyNzQgIi91c3IvaW5jbHVkZS9pbnR0eXBlcy5oIiAzCgojIDI4
OCAiL3Vzci9pbmNsdWRlL2ludHR5cGVzLmgiIDMKdHlwZWRlZiBzdHJ1Y3QKICB7CiAgICBsb25n
IGxvbmcgaW50IHF1b3Q7CiAgICBsb25nIGxvbmcgaW50IHJlbTsKICB9IGltYXhkaXZfdDsKCgoK
CgpleHRlcm4gaW50bWF4X3QgaW1heGFicyAoaW50bWF4X3QgX19uKSBfX2F0dHJpYnV0ZV9fICgo
X19jb25zdF9fKSk7CgoKZXh0ZXJuIGltYXhkaXZfdCBpbWF4ZGl2IChpbnRtYXhfdCBfX251bWVy
LCBpbnRtYXhfdCBfX2Rlbm9tKQogICAgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoK
ZXh0ZXJuIGludG1heF90IHN0cnRvaW1heCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0
ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIs
IGludCBfX2Jhc2UpIDsKCgpleHRlcm4gdWludG1heF90IHN0cnRvdW1heCAoX19jb25zdCBjaGFy
ICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKiog
X19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkgOwoKCmV4dGVybiBpbnRtYXhfdCB3Y3N0
b2ltYXggKF9fY29uc3QgX19nd2NoYXJfdCAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF9fZ3djaGFyX3QgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19i
YXNlKQogICAgIDsKCgpleHRlcm4gdWludG1heF90IHdjc3RvdW1heCAoX19jb25zdCBfX2d3Y2hh
cl90ICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZ3dj
aGFyX3QgKiogX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkKICAgICA7CiMgMzk2ICIv
dXNyL2luY2x1ZGUvaW50dHlwZXMuaCIgMwpleHRlcm4gX19pbmxpbmUgaW50bWF4X3QKc3RydG9p
bWF4IChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgZW5k
cHRyLAogICAgICAgICAgIGludCBiYXNlKQp7CiAgcmV0dXJuIF9fc3RydG9sbF9pbnRlcm5hbCAo
bnB0ciwgZW5kcHRyLCBiYXNlLCAwKTsKfQojIDQxNCAiL3Vzci9pbmNsdWRlL2ludHR5cGVzLmgi
IDMKZXh0ZXJuIF9faW5saW5lIHVpbnRtYXhfdApzdHJ0b3VtYXggKF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBucHRyLCBjaGFyICoqX19yZXN0cmljdCBlbmRwdHIsCiAgICAgICAgICAgaW50IGJh
c2UpCnsKICByZXR1cm4gX19zdHJ0b3VsbF9pbnRlcm5hbCAobnB0ciwgZW5kcHRyLCBiYXNlLCAw
KTsKfQoKCgpfX2V4dGVuc2lvbl9fCmV4dGVybiBsb25nIGxvbmcgaW50IF9fd2NzdG9sbF9pbnRl
cm5hbCAoX19jb25zdCBfX2d3Y2hhcl90ICoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBfX2d3Y2hhcl90ICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19iYXNlLCBpbnQgX19ncm91cCkg
OwoKCmV4dGVybiBfX2lubGluZSBpbnRtYXhfdAp3Y3N0b2ltYXggKF9fY29uc3QgX19nd2NoYXJf
dCAqX19yZXN0cmljdCBucHRyLCBfX2d3Y2hhcl90ICoqX19yZXN0cmljdCBlbmRwdHIsCiAgICAg
ICAgICAgaW50IGJhc2UpCnsKICByZXR1cm4gX193Y3N0b2xsX2ludGVybmFsIChucHRyLCBlbmRw
dHIsIGJhc2UsIDApOwp9CgoKCgpfX2V4dGVuc2lvbl9fCmV4dGVybiB1bnNpZ25lZCBsb25nIGxv
bmcgaW50IF9fd2NzdG91bGxfaW50ZXJuYWwgKF9fY29uc3QgX19nd2NoYXJfdCAqCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVzdHJpY3QgX19u
cHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBf
X2d3Y2hhcl90ICoqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIF9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludCBfX2Jhc2UsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX2dyb3VwKSA7CgoKZXh0ZXJuIF9faW5s
aW5lIHVpbnRtYXhfdAp3Y3N0b3VtYXggKF9fY29uc3QgX19nd2NoYXJfdCAqX19yZXN0cmljdCBu
cHRyLCBfX2d3Y2hhcl90ICoqX19yZXN0cmljdCBlbmRwdHIsCiAgICAgICAgICAgaW50IGJhc2Up
CnsKICByZXR1cm4gX193Y3N0b3VsbF9pbnRlcm5hbCAobnB0ciwgZW5kcHRyLCBiYXNlLCAwKTsK
fQoKCgoKCiMgMTQgInJhZ2UxMjhfdmlkLmMiIDIKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9tbWFu
LmgiIDEgMwojIDI2ICIvdXNyL2luY2x1ZGUvc3lzL21tYW4uaCIgMwojIDEgIi91c3IvbGliL2dj
Yy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4yLjIvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMjcg
Ii91c3IvaW5jbHVkZS9zeXMvbW1hbi5oIiAyIDMKIyA0MiAiL3Vzci9pbmNsdWRlL3N5cy9tbWFu
LmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9tbWFuLmgiIDEgMwojIDQzICIvdXNyL2luY2x1
ZGUvc3lzL21tYW4uaCIgMiAzCgoKCgoKIyA2MiAiL3Vzci9pbmNsdWRlL3N5cy9tbWFuLmgiIDMK
ZXh0ZXJuIHZvaWQgKiBtbWFwICh2b2lkICpfX2FkZHIsIHNpemVfdCBfX2xlbiwgaW50IF9fcHJv
dCwgaW50IF9fZmxhZ3MsIGludCBfX2ZkLCBfX29mZjY0X3QgX19vZmZzZXQpIF9fYXNtX18gKCIi
ICJtbWFwNjQiKTsKIyA3NyAiL3Vzci9pbmNsdWRlL3N5cy9tbWFuLmgiIDMKZXh0ZXJuIGludCBt
dW5tYXAgKHZvaWQgKl9fYWRkciwgc2l6ZV90IF9fbGVuKSA7CgoKCgpleHRlcm4gaW50IG1wcm90
ZWN0ICh2b2lkICpfX2FkZHIsIHNpemVfdCBfX2xlbiwgaW50IF9fcHJvdCkgOwoKCgoKZXh0ZXJu
IGludCBtc3luYyAodm9pZCAqX19hZGRyLCBzaXplX3QgX19sZW4sIGludCBfX2ZsYWdzKSA7CgoK
CgpleHRlcm4gaW50IG1hZHZpc2UgKHZvaWQgKl9fYWRkciwgc2l6ZV90IF9fbGVuLCBpbnQgX19h
ZHZpY2UpIDsKIyAxMDEgIi91c3IvaW5jbHVkZS9zeXMvbW1hbi5oIiAzCmV4dGVybiBpbnQgbWxv
Y2sgKF9fY29uc3Qgdm9pZCAqX19hZGRyLCBzaXplX3QgX19sZW4pIDsKCgpleHRlcm4gaW50IG11
bmxvY2sgKF9fY29uc3Qgdm9pZCAqX19hZGRyLCBzaXplX3QgX19sZW4pIDsKCgoKCmV4dGVybiBp
bnQgbWxvY2thbGwgKGludCBfX2ZsYWdzKSA7CgoKCmV4dGVybiBpbnQgbXVubG9ja2FsbCAodm9p
ZCkgOwoKCgoKCmV4dGVybiB2b2lkICptcmVtYXAgKHZvaWQgKl9fYWRkciwgc2l6ZV90IF9fb2xk
X2xlbiwgc2l6ZV90IF9fbmV3X2xlbiwKICAgICAgICAgICAgICAgICAgICAgaW50IF9fbWF5X21v
dmUpIDsKCgoKCgoKZXh0ZXJuIGludCBtaW5jb3JlICh2b2lkICpfX3N0YXJ0LCBzaXplX3QgX19s
ZW4sIHVuc2lnbmVkIGNoYXIgKl9fdmVjKTsKCgoKCmV4dGVybiBpbnQgc2htX29wZW4gKF9fY29u
c3QgY2hhciAqX19uYW1lLCBpbnQgX19vZmxhZywgbW9kZV90IF9fbW9kZSk7CgoKZXh0ZXJuIGlu
dCBzaG1fdW5saW5rIChfX2NvbnN0IGNoYXIgKl9fbmFtZSk7CgoKIyAxNiAicmFnZTEyOF92aWQu
YyIgMgojIDEgIi4uLy4uLy4uLy4uL3NyYy94aW5lLWVuZ2luZS9ic3dhcC5oIiAxCgoKCgoKIyAx
ICIuLi8uLi8uLi8uLi9jb25maWcuaCIgMQojIDcgIi4uLy4uLy4uLy4uL3NyYy94aW5lLWVuZ2lu
ZS9ic3dhcC5oIiAyCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2J5dGVzd2FwLmgiIDEgMwojIDIzICIv
dXNyL2luY2x1ZGUvYnl0ZXN3YXAuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL2J5dGVzd2Fw
LmgiIDEgMwojIDI0ICIvdXNyL2luY2x1ZGUvYnl0ZXN3YXAuaCIgMiAzCiMgMTEgIi4uLy4uLy4u
Ly4uL3NyYy94aW5lLWVuZ2luZS9ic3dhcC5oIiAyCiMgMSAiL3Vzci9pbmNsdWRlL2Fzc2VydC5o
IiAxIDMKIyA2NSAiL3Vzci9pbmNsdWRlL2Fzc2VydC5oIiAzCgoKCmV4dGVybiB2b2lkIF9fYXNz
ZXJ0X2ZhaWwgKF9fY29uc3QgY2hhciAqX19hc3NlcnRpb24sIF9fY29uc3QgY2hhciAqX19maWxl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19saW5lLCBfX2NvbnN0
IGNoYXIgKl9fZnVuY3Rpb24pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwoK
CmV4dGVybiB2b2lkIF9fYXNzZXJ0X3BlcnJvcl9mYWlsIChpbnQgX19lcnJudW0sIF9fY29uc3Qg
Y2hhciAqX19maWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg
aW50IF9fbGluZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hh
ciAqX19mdW5jdGlvbikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9fKSk7CgoKCgpl
eHRlcm4gdm9pZCBfX2Fzc2VydCAoY29uc3QgY2hhciAqX19hc3NlcnRpb24sIGNvbnN0IGNoYXIg
Kl9fZmlsZSwgaW50IF9fbGluZSkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9fKSk7
CgoKCiMgMTIgIi4uLy4uLy4uLy4uL3NyYy94aW5lLWVuZ2luZS9ic3dhcC5oIiAyCiMgMTcgInJh
Z2UxMjhfdmlkLmMiIDIKIyAxICIuLi8uLi8uLi8uLi9zcmMvdmlkZW9fb3V0L2xpYmRoYS9wY2lf
aWRzLmgiIDEKCgoKCgoKCiMgMSAiLi4vLi4vLi4vLi4vc3JjL3ZpZGVvX291dC9saWJkaGEvcGNp
X3ZlbmRvcnMuaCIgMQojIDkgIi4uLy4uLy4uLy4uL3NyYy92aWRlb19vdXQvbGliZGhhL3BjaV9p
ZHMuaCIgMgojIDE4ICJyYWdlMTI4X3ZpZC5jIiAyCiMgMSAiLi4vLi4vLi4vLi4vc3JjL3ZpZGVv
X291dC9saWJkaGEvcGNpX25hbWVzLmgiIDEKIyAxMiAiLi4vLi4vLi4vLi4vc3JjL3ZpZGVvX291
dC9saWJkaGEvcGNpX25hbWVzLmgiCnN0cnVjdCBkZXZpY2VfaWRfcwp7CiAgICAgICAgdW5zaWdu
ZWQgc2hvcnQgaWQ7CiAgICAgICAgY29uc3QgY2hhciAqIG5hbWU7Cn07CgpzdHJ1Y3QgdmVuZG9y
X2lkX3MKewogICAgICAgIHVuc2lnbmVkIHNob3J0IGlkOwogICAgICAgIGNvbnN0IGNoYXIgKiBu
YW1lOwogICAgICAgIGNvbnN0IHN0cnVjdCBkZXZpY2VfaWRfcyAqIGRldl9saXN0Owp9OwpleHRl
cm4gY29uc3QgY2hhciAqcGNpX3ZlbmRvcl9uYW1lKHVuc2lnbmVkIHNob3J0IGlkKTsKZXh0ZXJu
IGNvbnN0IGNoYXIgKnBjaV9kZXZpY2VfbmFtZSh1bnNpZ25lZCBzaG9ydCB2ZW5kb3JfaWQsIHVu
c2lnbmVkIHNob3J0IGRldmljZV9pZCk7CiMgMTkgInJhZ2UxMjhfdmlkLmMiIDIKIyAxICIuLi8u
Li8uLi8uLi9zcmMvdmlkZW9fb3V0L3ZpZGl4L3ZpZGl4LmgiIDEKIyAyNiAiLi4vLi4vLi4vLi4v
c3JjL3ZpZGVvX291dC92aWRpeC92aWRpeC5oIgpleHRlcm4gdW5zaWduZWQgdml4R2V0VmVyc2lv
biggdm9pZCApOwojIDM1ICIuLi8uLi8uLi8uLi9zcmMvdmlkZW9fb3V0L3ZpZGl4L3ZpZGl4Lmgi
CmV4dGVybiBpbnQgdml4UHJvYmUoIGludCB2ZXJib3NlLCBpbnQgZm9yY2UgKTsKCgoKZXh0ZXJu
IGludCB2aXhJbml0KCBjb25zdCBjaGFyICphcmdzICk7CgpleHRlcm4gdm9pZCB2aXhEZXN0cm95
KCB2b2lkICk7Cgp0eXBlZGVmIHN0cnVjdCB2aWRpeF9jYXBhYmlsaXR5X3MKewogICAgICAgIGNo
YXIgbmFtZVs2NF07CiAgICAgICAgY2hhciBhdXRob3JbNjRdOwoKCgoKICAgICAgICBpbnQgdHlw
ZTsKICAgICAgICB1bnNpZ25lZCByZXNlcnZlZDBbNF07CiAgICAgICAgaW50IG1heHdpZHRoOwog
ICAgICAgIGludCBtYXhoZWlnaHQ7CiAgICAgICAgaW50IG1pbndpZHRoOwogICAgICAgIGludCBt
aW5oZWlnaHQ7CiAgICAgICAgaW50IG1heGZyYW1lcmF0ZTsKCgoKCgoKCiAgICAgICAgdW5zaWdu
ZWQgZmxhZ3M7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgdmVuZG9yX2lkOwogICAgICAgIHVuc2ln
bmVkIHNob3J0IGRldmljZV9pZDsKICAgICAgICB1bnNpZ25lZCByZXNlcnZlZDFbNF07Cn12aWRp
eF9jYXBhYmlsaXR5X3Q7CgoKCmV4dGVybiBpbnQgdml4R2V0Q2FwYWJpbGl0eSh2aWRpeF9jYXBh
YmlsaXR5X3QgKik7Cgp0eXBlZGVmIHN0cnVjdCB2aWRpeF9mb3VyY2Nfcwp7CiAgICAgICAgdW5z
aWduZWQgZm91cmNjOwogICAgICAgIHVuc2lnbmVkIHNyY3c7CiAgICAgICAgdW5zaWduZWQgc3Jj
aDsKIyA5MCAiLi4vLi4vLi4vLi4vc3JjL3ZpZGVvX291dC92aWRpeC92aWRpeC5oIgogICAgICAg
IHVuc2lnbmVkIGRlcHRoOwojIDEwMyAiLi4vLi4vLi4vLi4vc3JjL3ZpZGVvX291dC92aWRpeC92
aWRpeC5oIgogICAgICAgIHVuc2lnbmVkIGZsYWdzOwp9dmlkaXhfZm91cmNjX3Q7CgoKZXh0ZXJu
IGludCB2aXhRdWVyeUZvdXJjYyh2aWRpeF9mb3VyY2NfdCAqKTsKCnR5cGVkZWYgc3RydWN0IHZp
ZGl4X3l1dl9zCnsKICAgICAgICB1bnNpZ25lZCB5LHUsdjsKfXZpZGl4X3l1dl90OwoKdHlwZWRl
ZiBzdHJ1Y3QgdmlkaXhfcmVjdF9zCnsKICAgICAgICB1bnNpZ25lZCB4LHksdyxoOwogICAgICAg
IHZpZGl4X3l1dl90IHBpdGNoOwp9dmlkaXhfcmVjdF90OwoKdHlwZWRlZiBzdHJ1Y3QgdmlkaXhf
Y29sb3Jfa2V5X3MKewoKCgoKICAgICAgICB1bnNpZ25lZCBvcDsKICAgICAgICB1bnNpZ25lZCBj
aGFyIHJlZDsKICAgICAgICB1bnNpZ25lZCBjaGFyIGdyZWVuOwogICAgICAgIHVuc2lnbmVkIGNo
YXIgYmx1ZTsKICAgICAgICB1bnNpZ25lZCBjaGFyIHJlc2VydmVkOwp9dmlkaXhfY2tleV90OwoK
dHlwZWRlZiBzdHJ1Y3QgdmlkaXhfdmlkZW9fa2V5X3MKewoKCgoKICAgICAgICB1bnNpZ25lZCBv
cDsKICAgICAgICB1bnNpZ25lZCBjaGFyIGtleVs4XTsKfXZpZGl4X3ZrZXlfdDsKCnR5cGVkZWYg
c3RydWN0IHZpZGl4X3BsYXliYWNrX3MKewogICAgICAgIHVuc2lnbmVkIGZvdXJjYzsKICAgICAg
ICB1bnNpZ25lZCBjYXBhYmlsaXR5OwogICAgICAgIHVuc2lnbmVkIGJsZW5kX2ZhY3RvcjsKICAg
ICAgICB2aWRpeF9yZWN0X3Qgc3JjOwogICAgICAgIHZpZGl4X3JlY3RfdCBkZXN0OwoKCgogICAg
ICAgIGludCBmbGFnczsKCiAgICAgICAgdW5zaWduZWQgZnJhbWVfc2l6ZTsKICAgICAgICB1bnNp
Z25lZCBudW1fZnJhbWVzOwoKICAgICAgICB1bnNpZ25lZCBvZmZzZXRzWzEwMjRdOwogICAgICAg
IHZpZGl4X3l1dl90IG9mZnNldDsKICAgICAgICB2b2lkKiBkZ2FfYWRkcjsKfXZpZGl4X3BsYXli
YWNrX3Q7CgoKZXh0ZXJuIGludCB2aXhDb25maWdQbGF5YmFjayh2aWRpeF9wbGF5YmFja190ICop
OwoKCmV4dGVybiBpbnQgdml4UGxheWJhY2tPbiggdm9pZCApOwoKCmV4dGVybiBpbnQgdml4UGxh
eWJhY2tPZmYoIHZvaWQgKTsKCgpleHRlcm4gaW50IHZpeFBsYXliYWNrRnJhbWVTZWxlY3QoIHVu
c2lnbmVkIGZyYW1lX2lkeCApOwoKdHlwZWRlZiBzdHJ1Y3QgdmlkaXhfZ3JrZXlfcwp7CiAgICAg
ICAgdmlkaXhfY2tleV90IGNrZXk7CiAgICAgICAgdmlkaXhfdmtleV90IHZrZXk7CgoKCgogICAg
ICAgIHVuc2lnbmVkIGtleV9vcDsKfXZpZGl4X2dya2V5X3Q7CgoKZXh0ZXJuIGludCB2aXhHZXRH
cktleXMoIHZpZGl4X2dya2V5X3QgKiApOwoKCmV4dGVybiBpbnQgdml4U2V0R3JLZXlzKCBjb25z
dCB2aWRpeF9ncmtleV90ICogKTsKCgp0eXBlZGVmIHN0cnVjdCB2aWRpeF92aWRlb19lcV9zCnsK
CgoKCgoKICAgICAgICBpbnQgY2FwOwoKCiAgICAgICAgaW50IGJyaWdodG5lc3M7CiAgICAgICAg
aW50IGNvbnRyYXN0OwogICAgICAgIGludCBzYXR1cmF0aW9uOwogICAgICAgIGludCBodWU7CiAg
ICAgICAgaW50IHJlZF9pbnRlbnNpdHk7CiAgICAgICAgaW50IGdyZWVuX2ludGVuc2l0eTsKICAg
ICAgICBpbnQgYmx1ZV9pbnRlbnNpdHk7CgoKCiAgICAgICAgaW50IGZsYWdzOwp9dmlkaXhfdmlk
ZW9fZXFfdDsKCgpleHRlcm4gaW50IHZpeFBsYXliYWNrR2V0RXEoIHZpZGl4X3ZpZGVvX2VxX3Qg
KiApOwoKCmV4dGVybiBpbnQgdml4UGxheWJhY2tTZXRFcSggY29uc3QgdmlkaXhfdmlkZW9fZXFf
dCAqICk7Cgp0eXBlZGVmIHN0cnVjdCB2aWRpeF9kZWludGVybGFjZV9zCnsKCgoKCgoKICAgICAg
ICB1bnNpZ25lZCBmbGFnczsKICAgICAgICB1bnNpZ25lZCBkZWludGVybGFjZV9wYXR0ZXJuOwp9
dmlkaXhfZGVpbnRlcmxhY2VfdDsKCgpleHRlcm4gaW50IHZpeFBsYXliYWNrR2V0RGVpbnQoIHZp
ZGl4X2RlaW50ZXJsYWNlX3QgKiApOwoKCmV4dGVybiBpbnQgdml4UGxheWJhY2tTZXREZWludCgg
Y29uc3QgdmlkaXhfZGVpbnRlcmxhY2VfdCAqICk7Cgp0eXBlZGVmIHN0cnVjdCB2aWRpeF9zbGlj
ZV9zCnsKICAgICAgICB2b2lkKiBhZGRyZXNzOwogICAgICAgIHVuc2lnbmVkIHNpemU7CiAgICAg
ICAgdmlkaXhfcmVjdF90IHNsaWNlOwp9dmlkaXhfc2xpY2VfdDsKCnR5cGVkZWYgc3RydWN0IHZp
ZGl4X2RtYV9zCnsKICAgICAgICB2b2lkICogc3JjOwogICAgICAgIHVuc2lnbmVkIGRlc3Rfb2Zm
c2V0OwogICAgICAgIHVuc2lnbmVkIHNpemU7CgoKCiAgICAgICAgdW5zaWduZWQgZmxhZ3M7CiAg
ICAgICAgdW5zaWduZWQgaWR4OwogICAgICAgIHZvaWQgKiBpbnRlcm5hbFsxMDI0XTsKfXZpZGl4
X2RtYV90OwoKCmV4dGVybiBpbnQgdml4UGxheWJhY2tDb3B5RnJhbWUoIHZpZGl4X2RtYV90ICog
KTsKCgpleHRlcm4gaW50IHZpeFF1ZXJ5RE1BU3RhdHVzKCB2b2lkICk7CiMgMjc2ICIuLi8uLi8u
Li8uLi9zcmMvdmlkZW9fb3V0L3ZpZGl4L3ZpZGl4LmgiCnR5cGVkZWYgc3RydWN0IHZpZGl4X29l
bV9meF9zCnsKCgogICAgICAgIGludCB0eXBlOwogICAgICAgIGludCBudW07CiAgICAgICAgaW50
IG1pbnZhbHVlOwogICAgICAgIGludCBtYXh2YWx1ZTsKICAgICAgICBpbnQgdmFsdWU7CiAgICAg
ICAgY2hhciAqIG5hbWVbODBdOwp9dmlkaXhfb2VtX2Z4X3Q7CgoKZXh0ZXJuIGludCB2aXhRdWVy
eU51bU9lbUVmZmVjdHMoIHVuc2lnbmVkICogbnVtYmVyICk7CgoKZXh0ZXJuIGludCB2aXhHZXRP
ZW1FZmZlY3QoIHZpZGl4X29lbV9meF90ICogKTsKCgpleHRlcm4gaW50IHZpeFNldE9lbUVmZmVj
dCggY29uc3QgdmlkaXhfb2VtX2Z4X3QgKiApOwojIDIwICJyYWdlMTI4X3ZpZC5jIiAyCiMgMSAi
Li4vLi4vLi4vLi4vc3JjL3ZpZGVvX291dC92aWRpeC9mb3VyY2MuaCIgMQojIDIxICJyYWdlMTI4
X3ZpZC5jIiAyCiMgMSAiLi4vLi4vLi4vLi4vc3JjL3ZpZGVvX291dC9saWJkaGEvbGliZGhhLmgi
IDEKIyAzNCAiLi4vLi4vLi4vLi4vc3JjL3ZpZGVvX291dC9saWJkaGEvbGliZGhhLmgiCnR5cGVk
ZWYgc3RydWN0IHBjaWluZm9fcwp7CiAgaW50IGJ1cyxjYXJkLGZ1bmM7CiAgdW5zaWduZWQgc2hv
cnQgdmVuZG9yLGRldmljZTsKICB1bnNpZ25lZCBiYXNlMCxiYXNlMSxiYXNlMixiYXNlcm9tOwog
IHVuc2lnbmVkIGJhc2UzLGJhc2U0LGJhc2U1OwogIHVuc2lnbmVkIGNoYXIgaXJxLGlwaW4sZ250
LGxhdDsKCn1wY2lpbmZvX3Q7CgpleHRlcm4gaW50IHBjaV9jb25maWdfcmVhZCh1bnNpZ25lZCBj
aGFyIGJ1cywgdW5zaWduZWQgY2hhciBkZXYsIHVuc2lnbmVkIGNoYXIgZnVuYywKICAgICAgICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBjbWQsIGludCBsZW4sIHVuc2lnbmVkIGxvbmcg
KnZhbCk7CmV4dGVybiBpbnQgcGNpX2NvbmZpZ193cml0ZSh1bnNpZ25lZCBjaGFyIGJ1cywgdW5z
aWduZWQgY2hhciBkZXYsIHVuc2lnbmVkIGNoYXIgZnVuYywKICAgICAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgY2hhciBjbWQsIGludCBsZW4sIHVuc2lnbmVkIGxvbmcgdmFsKTsKCgpleHRl
cm4gaW50IHBjaV9zY2FuKHBjaWluZm9fdCAqcGNpX2xpc3QsdW5zaWduZWQgKm51bV9jYXJkKTsK
CgoKZXh0ZXJuIGludCBlbmFibGVfYXBwX2lvKCB2b2lkICk7CmV4dGVybiBpbnQgZGlzYWJsZV9h
cHBfaW8oIHZvaWQgKTsKCmV4dGVybiB1bnNpZ25lZCBjaGFyIElOUE9SVDgodW5zaWduZWQgaWR4
KTsKZXh0ZXJuIHVuc2lnbmVkIHNob3J0IElOUE9SVDE2KHVuc2lnbmVkIGlkeCk7CmV4dGVybiB1
bnNpZ25lZCBJTlBPUlQzMih1bnNpZ25lZCBpZHgpOwoKZXh0ZXJuIHZvaWQgT1VUUE9SVDgodW5z
aWduZWQgaWR4LHVuc2lnbmVkIGNoYXIgdmFsKTsKZXh0ZXJuIHZvaWQgT1VUUE9SVDE2KHVuc2ln
bmVkIGlkeCx1bnNpZ25lZCBzaG9ydCB2YWwpOwpleHRlcm4gdm9pZCBPVVRQT1JUMzIodW5zaWdu
ZWQgaWR4LHVuc2lnbmVkIHZhbCk7CgoKZXh0ZXJuIHZvaWQgKiBtYXBfcGh5c19tZW0odW5zaWdu
ZWQgbG9uZyBiYXNlLCB1bnNpZ25lZCBsb25nIHNpemUpOwpleHRlcm4gdm9pZCB1bm1hcF9waHlz
X21lbSh2b2lkICpwdHIsIHVuc2lnbmVkIGxvbmcgc2l6ZSk7CgoKCgoKCgpleHRlcm4gaW50IG10
cnJfc2V0X3R5cGUodW5zaWduZWQgYmFzZSx1bnNpZ25lZCBzaXplLGludCB0eXBlKTsKCgoKZXh0
ZXJuIGludCBibV9vcGVuKCB2b2lkICk7CmV4dGVybiB2b2lkIGJtX2Nsb3NlKCB2b2lkICk7CiMg
OTMgIi4uLy4uLy4uLy4uL3NyYy92aWRlb19vdXQvbGliZGhhL2xpYmRoYS5oIgpleHRlcm4gaW50
IGJtX3ZpcnRfdG9fcGh5cyggdm9pZCAqIHZpcnRfYWRkciwgdW5zaWduZWQgbG9uZyBsZW5ndGgs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nICogcGFycmF5ICk7CgoK
ZXh0ZXJuIGludCBibV92aXJ0X3RvX2J1cyggdm9pZCAqIHZpcnRfYWRkciwgdW5zaWduZWQgbG9u
ZyBsZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nICogYmFy
cmF5ICk7CgpleHRlcm4gdm9pZCAqIGJtX2FsbG9jX3BhKCB1bnNpZ25lZCBsb25nIGxlbmd0aCAp
OwpleHRlcm4gdm9pZCBibV9mcmVlX3BhKCB2b2lkICogdmlydF9hZGRyLCB1bnNpZ25lZCBsb25n
IGxlbmd0aCApOwpleHRlcm4gaW50IGJtX2xvY2tfbWVtKCBjb25zdCB2b2lkICogYWRkciwgdW5z
aWduZWQgbG9uZyBsZW5ndGggKTsKZXh0ZXJuIGludCBibV91bmxvY2tfbWVtKCBjb25zdCB2b2lk
ICogYWRkciwgdW5zaWduZWQgbG9uZyBsZW5ndGggKTsKCgoKZXh0ZXJuIGludCBod2lycV9pbnN0
YWxsKGludCBidXMsIGludCBkZXYsIGludCBmdW5jLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgYXJlZywgdW5zaWduZWQgbG9uZyBhb2ZmLCB1aW50MzJfdCBhZGF0YSk7CmV4dGVy
biBpbnQgaHdpcnFfd2FpdCh1bnNpZ25lZCBpcnFudW0pOwpleHRlcm4gaW50IGh3aXJxX3VuaW5z
dGFsbChpbnQgYnVzLCBpbnQgZGV2LCBpbnQgZnVuYyk7CgoKZXh0ZXJuIHZvaWQgY3B1X2ZsdXNo
KHZvaWQgKnZhLHVuc2lnbmVkIGxvbmcgbGVuZ3RoKTsKIyAyMiAicmFnZTEyOF92aWQuYyIgMgoj
IDEgInJhZGVvbi5oIiAxCiMgMjMgInJhZ2UxMjhfdmlkLmMiIDIKIyA0NyAicmFnZTEyOF92aWQu
YyIKc3RhdGljIHZvaWQgKiByYWRlb25fZG1hX2Rlc2NfYmFzZSA9IDA7CnN0YXRpYyB1bnNpZ25l
ZCBsb25nIGJ1c19hZGRyX2RtYV9kZXNjID0gMDsKc3RhdGljIHVuc2lnbmVkIGxvbmcgKmRtYV9w
aHlzX2FkZHJzID0gMDsKI3ByYWdtYSBwYWNrKDEpCnR5cGVkZWYgc3RydWN0CnsKICAgICAgICB1
aW50MzJfdCBmcmFtZWJ1Zl9vZmZzZXQ7CiAgICAgICAgdWludDMyX3Qgc3lzX2FkZHI7CiAgICAg
ICAgdWludDMyX3QgY29tbWFuZDsKICAgICAgICB1aW50MzJfdCByZXNlcnZlZDsKfSBibV9saXN0
X2Rlc2NyaXB0b3I7CiNwcmFnbWEgcGFjaygpCgoKCnN0YXRpYyBpbnQgX192ZXJib3NlID0gMDsK
CgoKdHlwZWRlZiBzdHJ1Y3QgYmVzX3JlZ2lzdGVyc19zCnsKCiAgdWludDMyX3QgeXV2X2Jhc2U7
CiAgdWludDMyX3QgZm91cmNjOwogIHVpbnQzMl90IHN1cmZfaWQ7CiAgaW50IGxvYWRfcHJnX3N0
YXJ0OwogIGludCBob3J6X3BpY2tfbmVhcmVzdDsKICBpbnQgdmVydF9waWNrX25lYXJlc3Q7CiAg
aW50IHN3YXBfdXY7CiAgdWludDMyX3QgZGVzdF9icHA7CgogIHVpbnQzMl90IHJlZ19sb2FkX2Nu
dGw7CiAgdWludDMyX3QgaF9pbmM7CiAgdWludDMyX3Qgc3RlcF9ieTsKICB1aW50MzJfdCB5X3hf
c3RhcnQ7CiAgdWludDMyX3QgeV94X2VuZDsKICB1aW50MzJfdCB2X2luYzsKICB1aW50MzJfdCBw
MV9ibGFua19saW5lc19hdF90b3A7CiAgdWludDMyX3QgcDIzX2JsYW5rX2xpbmVzX2F0X3RvcDsK
ICB1aW50MzJfdCB2aWRfYnVmX3BpdGNoMF92YWx1ZTsKICB1aW50MzJfdCB2aWRfYnVmX3BpdGNo
MV92YWx1ZTsKICB1aW50MzJfdCBwMV94X3N0YXJ0X2VuZDsKICB1aW50MzJfdCBwMl94X3N0YXJ0
X2VuZDsKICB1aW50MzJfdCBwM194X3N0YXJ0X2VuZDsKICB1aW50MzJfdCBiYXNlX2FkZHI7CiAg
dWludDMyX3QgdmlkX2J1Zl9iYXNlX2FkcnNfeVsxMDI0XTsKICB1aW50MzJfdCB2aWRfYnVmX2Jh
c2VfYWRyc191WzEwMjRdOwogIHVpbnQzMl90IHZpZF9idWZfYmFzZV9hZHJzX3ZbMTAyNF07CiAg
dWludDMyX3QgdmlkX25idWZzOwoKICB1aW50MzJfdCBwMV92X2FjY3VtX2luaXQ7CiAgdWludDMy
X3QgcDFfaF9hY2N1bV9pbml0OwogIHVpbnQzMl90IHAyM192X2FjY3VtX2luaXQ7CiAgdWludDMy
X3QgcDIzX2hfYWNjdW1faW5pdDsKICB1aW50MzJfdCBzY2FsZV9jbnRsOwogIHVpbnQzMl90IGV4
Y2x1c2l2ZV9ob3J6OwogIHVpbnQzMl90IGF1dG9fZmxpcF9jbnRsOwogIHVpbnQzMl90IGZpbHRl
cl9jbnRsOwogIHVpbnQzMl90IGZvdXJfdGFwX2NvZWZmWzVdOwogIHVpbnQzMl90IGtleV9jbnRs
OwogIHVpbnQzMl90IHRlc3Q7CgogIGludCBkb3VibGVfYnVmZjsKCiAgaW50IGJyaWdodG5lc3M7
CiAgaW50IHNhdHVyYXRpb247CgogIGludCBja2V5X29uOwogIHVpbnQzMl90IGdyYXBoaWNzX2tl
eV9jbHI7CiAgdWludDMyX3QgZ3JhcGhpY3Nfa2V5X21zazsKICB1aW50MzJfdCBja2V5X2NudGw7
CgogIGludCBkZWludGVybGFjZV9vbjsKICB1aW50MzJfdCBkZWludGVybGFjZV9wYXR0ZXJuOwoK
fSBiZXNfcmVnaXN0ZXJzX3Q7Cgp0eXBlZGVmIHN0cnVjdCB2aWRlb19yZWdpc3RlcnNfcwp7CiAg
Y29uc3QgY2hhciAqIHNuYW1lOwogIHVpbnQzMl90IG5hbWU7CiAgdWludDMyX3QgdmFsdWU7Cn12
aWRlb19yZWdpc3RlcnNfdDsKCnN0YXRpYyBiZXNfcmVnaXN0ZXJzX3QgYmVzcjsKCgoKCnN0YXRp
YyB2aWRlb19yZWdpc3RlcnNfdCB2cmVnc1tdID0KewogIHsgIlZJREVPTVVYX0NOVEwiLCAweDAx
OTAsIDAgfSwKICB7ICJWSVBQQURfTUFTSyIsIDB4MDE5OCwgMCB9LAogIHsgIlZJUFBBRDFfQSIs
IDB4MDFBQywgMCB9LAogIHsgIlZJUFBBRDFfRU4iLCAweDAxQjAsIDAgfSwKICB7ICJWSVBQQUQx
X1kiLCAweDAxQjQsIDAgfSwKICB7ICJPVjBfWV9YX1NUQVJUIiwgMHgwNDAwLCAwIH0sCiAgeyAi
T1YwX1lfWF9FTkQiLCAweDA0MDQsIDAgfSwKICB7ICJPVjBfUElQRUxJTkVfQ05UTCIsIDB4MDQw
OCwgMCB9LAogIHsgIk9WMF9FWENMVVNJVkVfSE9SWiIsIDB4MDQwOCwgMCB9LAogIHsgIk9WMF9F
WENMVVNJVkVfVkVSVCIsIDB4MDQwQywgMCB9LAogIHsgIk9WMF9SRUdfTE9BRF9DTlRMIiwgMHgw
NDEwLCAwIH0sCiAgeyAiT1YwX1NDQUxFX0NOVEwiLCAweDA0MjAsIDAgfSwKICB7ICJPVjBfVl9J
TkMiLCAweDA0MjQsIDAgfSwKICB7ICJPVjBfUDFfVl9BQ0NVTV9JTklUIiwgMHgwNDI4LCAwIH0s
CiAgeyAiT1YwX1AyM19WX0FDQ1VNX0lOSVQiLCAweDA0MkMsIDAgfSwKICB7ICJPVjBfUDFfQkxB
TktfTElORVNfQVRfVE9QIiwgMHgwNDMwLCAwIH0sCiAgeyAiT1YwX1AyM19CTEFOS19MSU5FU19B
VF9UT1AiLCAweDA0MzQsIDAgfSwKCgoKICB7ICJPVjBfVklEX0JVRjBfQkFTRV9BRFJTIiwgMHgw
NDQwLCAwIH0sCiAgeyAiT1YwX1ZJRF9CVUYxX0JBU0VfQURSUyIsIDB4MDQ0NCwgMCB9LAogIHsg
Ik9WMF9WSURfQlVGMl9CQVNFX0FEUlMiLCAweDA0NDgsIDAgfSwKICB7ICJPVjBfVklEX0JVRjNf
QkFTRV9BRFJTIiwgMHgwNDRDLCAwIH0sCiAgeyAiT1YwX1ZJRF9CVUY0X0JBU0VfQURSUyIsIDB4
MDQ1MCwgMCB9LAogIHsgIk9WMF9WSURfQlVGNV9CQVNFX0FEUlMiLCAweDA0NTQsIDAgfSwKICB7
ICJPVjBfVklEX0JVRl9QSVRDSDBfVkFMVUUiLCAweDA0NjAsIDAgfSwKICB7ICJPVjBfVklEX0JV
Rl9QSVRDSDFfVkFMVUUiLCAweDA0NjQsIDAgfSwKICB7ICJPVjBfQVVUT19GTElQX0NOVEwiLCAw
eDA0NzAsIDAgfSwKICB7ICJPVjBfREVJTlRFUkxBQ0VfUEFUVEVSTiIsIDB4MDQ3NCwgMCB9LAog
IHsgIk9WMF9TVUJNSVRfSElTVE9SWSIsIDB4MDQ3OCwgMCB9LAogIHsgIk9WMF9IX0lOQyIsIDB4
MDQ4MCwgMCB9LAogIHsgIk9WMF9TVEVQX0JZIiwgMHgwNDg0LCAwIH0sCiAgeyAiT1YwX1AxX0hf
QUNDVU1fSU5JVCIsIDB4MDQ4OCwgMCB9LAogIHsgIk9WMF9QMjNfSF9BQ0NVTV9JTklUIiwgMHgw
NDhDLCAwIH0sCiAgeyAiT1YwX1AxX1hfU1RBUlRfRU5EIiwgMHgwNDk0LCAwIH0sCiAgeyAiT1Yw
X1AyX1hfU1RBUlRfRU5EIiwgMHgwNDk4LCAwIH0sCiAgeyAiT1YwX1AzX1hfU1RBUlRfRU5EIiwg
MHgwNDlDLCAwIH0sCiAgeyAiT1YwX0ZJTFRFUl9DTlRMIiwgMHgwNEEwLCAwIH0sCiAgeyAiT1Yw
X0ZPVVJfVEFQX0NPRUZfMCIsIDB4MDRCMCwgMCB9LAogIHsgIk9WMF9GT1VSX1RBUF9DT0VGXzEi
LCAweDA0QjQsIDAgfSwKICB7ICJPVjBfRk9VUl9UQVBfQ09FRl8yIiwgMHgwNEI4LCAwIH0sCiAg
eyAiT1YwX0ZPVVJfVEFQX0NPRUZfMyIsIDB4MDRCQywgMCB9LAogIHsgIk9WMF9GT1VSX1RBUF9D
T0VGXzQiLCAweDA0QzAsIDAgfSwKICB7ICJPVjBfRkxBR19DTlRMIiwgMHgwNERDLCAwIH0sCgog
IHsgIk9WMF9DT0xPVVJfQ05UTCIsIDB4MDRFMCwgMCB9LAoKCgogIHsgIk9WMF9WSURfS0VZX0NM
UiIsIDB4MDRFNCwgMCB9LAogIHsgIk9WMF9WSURfS0VZX01TSyIsIDB4MDRFOCwgMCB9LAogIHsg
Ik9WMF9HUkFQSElDU19LRVlfQ0xSIiwgMHgwNEVDLCAwIH0sCiAgeyAiT1YwX0dSQVBISUNTX0tF
WV9NU0siLCAweDA0RjAsIDAgfSwKICB7ICJPVjBfS0VZX0NOVEwiLCAweDA0RjQsIDAgfSwKICB7
ICJPVjBfVEVTVCIsIDB4MDRGOCwgMCB9LAogIHsgIk9WMF9MSU5fVFJBTlNfQSIsIDB4MEQyMCwg
MCB9LAogIHsgIk9WMF9MSU5fVFJBTlNfQiIsIDB4MEQyNCwgMCB9LAogIHsgIk9WMF9MSU5fVFJB
TlNfQyIsIDB4MEQyOCwgMCB9LAogIHsgIk9WMF9MSU5fVFJBTlNfRCIsIDB4MEQyQywgMCB9LAog
IHsgIk9WMF9MSU5fVFJBTlNfRSIsIDB4MEQzMCwgMCB9LAogIHsgIk9WMF9MSU5fVFJBTlNfRiIs
IDB4MEQzNCwgMCB9LAogIHsgIk9WMF9HQU1NQV8wX0YiLCAweDBENDAsIDAgfSwKICB7ICJPVjBf
R0FNTUFfMTBfMUYiLCAweDBENDQsIDAgfSwKICB7ICJPVjBfR0FNTUFfMjBfM0YiLCAweDBENDgs
IDAgfSwKICB7ICJPVjBfR0FNTUFfNDBfN0YiLCAweDBENEMsIDAgfSwKICB7ICJPVjBfR0FNTUFf
MzgwXzNCRiIsIDB4MEQ1MCwgMCB9LAogIHsgIk9WMF9HQU1NQV8zQzBfM0ZGIiwgMHgwRDU0LCAw
IH0sCiAgeyAiU1VCUElDX0NOVEwiLCAweDA1NDAsIDAgfSwKICB7ICJTVUJQSUNfREVGQ09MQ09O
IiwgMHgwNTQ0LCAwIH0sCiAgeyAiU1VCUElDX1lfWF9TVEFSVCIsIDB4MDU0QywgMCB9LAogIHsg
IlNVQlBJQ19ZX1hfRU5EIiwgMHgwNTUwLCAwIH0sCiAgeyAiU1VCUElDX1ZfSU5DIiwgMHgwNTU0
LCAwIH0sCiAgeyAiU1VCUElDX0hfSU5DIiwgMHgwNTU4LCAwIH0sCiAgeyAiU1VCUElDX0JVRjBf
T0ZGU0VUIiwgMHgwNTVDLCAwIH0sCiAgeyAiU1VCUElDX0JVRjFfT0ZGU0VUIiwgMHgwNTYwLCAw
IH0sCiAgeyAiU1VCUElDX0xDMF9PRkZTRVQiLCAweDA1NjQsIDAgfSwKICB7ICJTVUJQSUNfTEMx
X09GRlNFVCIsIDB4MDU2OCwgMCB9LAogIHsgIlNVQlBJQ19QSVRDSCIsIDB4MDU2QywgMCB9LAog
IHsgIlNVQlBJQ19CVE5fSExJX0NPTENPTiIsIDB4MDU3MCwgMCB9LAogIHsgIlNVQlBJQ19CVE5f
SExJX1lfWF9TVEFSVCIsIDB4MDU3NCwgMCB9LAogIHsgIlNVQlBJQ19CVE5fSExJX1lfWF9FTkQi
LCAweDA1NzgsIDAgfSwKICB7ICJTVUJQSUNfUEFMRVRURV9JTkRFWCIsIDB4MDU3QywgMCB9LAog
IHsgIlNVQlBJQ19QQUxFVFRFX0RBVEEiLCAweDA1ODAsIDAgfSwKICB7ICJTVUJQSUNfSF9BQ0NV
TV9JTklUIiwgMHgwNTg0LCAwIH0sCiAgeyAiU1VCUElDX1ZfQUNDVU1fSU5JVCIsIDB4MDU4OCwg
MCB9LAogIHsgIklEQ1RfUlVOUyIsIDB4MUY4MCwgMCB9LAogIHsgIklEQ1RfTEVWRUxTIiwgMHgx
Rjg0LCAwIH0sCiAgeyAiSURDVF9BVVRIX0NPTlRST0wiLCAweDFGODgsIDAgfSwKICB7ICJJRENU
X0FVVEgiLCAweDFGOEMsIDAgfSwKICB7ICJJRENUX0NPTlRST0wiLCAweDFGQkMsIDAgfSwKCiAg
eyAiQk1fRlJBTUVfQlVGX09GRlNFVCIsIDB4QTAwLCAwIH0sCiAgeyAiQk1fU1lTVEVNX01FTV9B
RERSIiwgMHhBMDQsIDAgfSwKICB7ICJCTV9DT01NQU5EIiwgMHhBMDgsIDAgfSwKICB7ICJCTV9T
VEFUVVMiLCAweEEwYywgMCB9LAogIHsgIkJNX1FVRVVFX1NUQVRVUyIsIDB4QTEwLCAwIH0sCiAg
eyAiQk1fUVVFVUVfRlJFRV9TVEFUVVMiLCAweEExNCwgMCB9LAogIHsgIkJNX0NIVU5LXzBfVkFM
IiwgMHhBMTgsIDAgfSwKICB7ICJCTV9DSFVOS18xX1ZBTCIsIDB4QTFDLCAwIH0sCiAgeyAiQk1f
VklQMF9CVUYiLCAweEEyMCwgMCB9LAogIHsgIkJNX1ZJUDBfQUNUSVZFIiwgMHhBMjQsIDAgfSwK
ICB7ICJCTV9WSVAxX0JVRiIsIDB4QTMwLCAwIH0sCiAgeyAiQk1fVklQMV9BQ1RJVkUiLCAweEEz
NCwgMCB9LAogIHsgIkJNX1ZJUDJfQlVGIiwgMHhBNDAsIDAgfSwKICB7ICJCTV9WSVAyX0FDVElW
RSIsIDB4QTQ0LCAwIH0sCiAgeyAiQk1fVklQM19CVUYiLCAweEE1MCwgMCB9LAogIHsgIkJNX1ZJ
UDNfQUNUSVZFIiwgMHhBNTQsIDAgfSwKICB7ICJCTV9WSURDQVBfQlVGMCIsIDB4QTYwLCAwIH0s
CiAgeyAiQk1fVklEQ0FQX0JVRjEiLCAweEE2NCwgMCB9LAogIHsgIkJNX1ZJRENBUF9CVUYyIiwg
MHhBNjgsIDAgfSwKICB7ICJCTV9WSURDQVBfQUNUSVZFIiwgMHhBNmMsIDAgfSwKICB7ICJCTV9H
VUkiLCAweEE4MCwgMCB9LAogIHsgIkJNX0FCT1JUIiwgMHhBODgsIDAgfQojIDI2NSAicmFnZTEy
OF92aWQuYyIKfTsKCnN0YXRpYyB2b2lkICogcmFkZW9uX21taW9fYmFzZSA9IDA7CnN0YXRpYyB2
b2lkICogcmFkZW9uX21lbV9iYXNlID0gMDsKc3RhdGljIGludDMyX3QgcmFkZW9uX292ZXJsYXlf
b2ZmID0gMDsKc3RhdGljIHVpbnQzMl90IHJhZGVvbl9yYW1fc2l6ZSA9IDA7CgoKCgoKCnN0YXRp
YyBfX2F0dHJpYnV0ZV9fICgoX19hbHdheXNfaW5saW5lX18pKSB1aW50MzJfdCBJTlJFRyAodWlu
dDMyX3QgYWRkcikgewogICAgdWludDMyX3QgdG1wID0gKCooKHZvbGF0aWxlIHVpbnQzMl90Kiko
KCh1aW50MzJfdCkocmFkZW9uX21taW9fYmFzZSkpKyhhZGRyKSkpKTsKICAgIHJldHVybiAodG1w
KTsKfQojIDI5MSAicmFnZTEyOF92aWQuYyIKc3RhdGljIF9faW5saW5lX18gdWludDMyX3QgSU5Q
TEwodWludDMyX3QgYWRkcikKewogICAgICAgICgqKCh2b2xhdGlsZSB1aW50OF90KikoKCh1aW50
MzJfdCkocmFkZW9uX21taW9fYmFzZSkpKygweDAwMDgpKSkpPWFkZHIgJiAweDAwMDAwMDFmOwog
ICAgICAgIHJldHVybiAoSU5SRUcoMHgwMDBDKSk7Cn0KIyAzMDcgInJhZ2UxMjhfdmlkLmMiCnN0
YXRpYyB1aW50MzJfdCByYWRlb25fdmlkX2dldF9kYnBwKCB2b2lkICkKewogIHVpbnQzMl90IGRi
cHAscmV0dmFsOwogIGRicHAgPSAoSU5SRUcoMHgwMDUwKT4+OCkmIDB4RjsKICBzd2l0Y2goZGJw
cCkKICB7CiAgICBjYXNlIDB4MDAwMDAwMDI6IHJldHZhbCA9IDg7IGJyZWFrOwogICAgY2FzZSAw
eDAwMDAwMDAzOiByZXR2YWwgPSAxNTsgYnJlYWs7CiAgICBjYXNlIDB4MDAwMDAwMDQ6IHJldHZh
bCA9IDE2OyBicmVhazsKICAgIGNhc2UgMHgwMDAwMDAwNTogcmV0dmFsID0gMjQ7IGJyZWFrOwog
ICAgZGVmYXVsdDogcmV0dmFsPTMyOyBicmVhazsKICB9CiAgcmV0dXJuIHJldHZhbDsKfQoKc3Rh
dGljIGludCByYWRlb25faXNfZGJsX3NjYW4oIHZvaWQgKQp7CiAgcmV0dXJuIChJTlJFRygweDAw
NTApKSYweDAwMDAwMDAxOwp9CgpzdGF0aWMgaW50IHJhZGVvbl9pc19pbnRlcmxhY2UoIHZvaWQg
KQp7CiAgcmV0dXJuIChJTlJFRygweDAwNTApKSYoMSA8PCAxKTsKfQoKc3RhdGljIHVpbnQzMl90
IHJhZGVvbl9nZXRfeHJlcyggdm9pZCApCnsKCiAgdWludDMyX3QgeHJlcyxoX3RvdGFsOwogIGhf
dG90YWwgPSBJTlJFRygweDAyMDApOwogIHhyZXMgPSAoaF90b3RhbCA+PiAxNikgJiAweGZmZmY7
CiAgcmV0dXJuICh4cmVzICsgMSkqODsKfQoKc3RhdGljIHVpbnQzMl90IHJhZGVvbl9nZXRfeXJl
cyggdm9pZCApCnsKCiAgdWludDMyX3QgeXJlcyx2X3RvdGFsOwogIHZfdG90YWwgPSBJTlJFRygw
eDAyMDgpOwogIHlyZXMgPSAodl90b3RhbCA+PiAxNikgJiAweGZmZmY7CiAgcmV0dXJuIHlyZXMg
KyAxOwp9CgpzdGF0aWMgdm9pZCByYWRlb25fd2FpdF92c3luYyh2b2lkKQp7CiAgICBpbnQgaTsK
CiAgICAoKigodm9sYXRpbGUgdWludDMyX3QqKSgoKHVpbnQzMl90KShyYWRlb25fbW1pb19iYXNl
KSkrKDB4MDA0NCkpKSk9KCgxIDw8IDIpKTsKICAgIGZvciAoaSA9IDA7IGkgPCAyMDAwMDAwOyBp
KyspCiAgICB7CiAgICAgICAgaWYgKElOUkVHKDB4MDA0NCkgJiAoMSA8PCAyKSkgYnJlYWs7CiAg
ICB9Cn0KCgpzdGF0aWMgdm9pZCBfcmFkZW9uX2VuZ2luZV9pZGxlKHZvaWQpOwpzdGF0aWMgdm9p
ZCBfcmFkZW9uX2ZpZm9fd2FpdCh1bnNpZ25lZCk7CgoKCnN0YXRpYyBfX2lubGluZV9fIHZvaWQg
cmFkZW9uX2VuZ2luZV9mbHVzaCAoIHZvaWQgKQp7CiAgICB1bnNpZ25lZCBpOwoKICAgIGRvIHsg
dW5zaWduZWQgaW50IF90bXAgPSBJTlJFRygweDAxODQpOyBfdG1wICY9ICh+MHgwMGZmKTsgX3Rt
cCB8PSAoMHgwMGZmKTsgKCooKHZvbGF0aWxlIHVpbnQzMl90KikoKCh1aW50MzJfdCkocmFkZW9u
X21taW9fYmFzZSkpKygweDAxODQpKSkpPShfdG1wKTsgfSB3aGlsZSAoMCk7CiAgICBmb3IgKGkg
PSAwOyBpIDwgMjAwMDAwMDsgaSsrKSB7CiAgICAgICAgaWYgKCEoSU5SRUcoMHgwMTg0KSAmICgx
IDw8IDMxKSkpIGJyZWFrOwogICAgfQp9CgoKc3RhdGljIHZvaWQgcmFkZW9uX2VuZ2luZV9yZXNl
dCggdm9pZCApCnsKICAgIHVpbnQzMl90IGNsb2NrX2NudGxfaW5kZXg7CiAgICB1aW50MzJfdCBt
Y2xrX2NudGw7CiAgICB1aW50MzJfdCBnZW5fcmVzZXRfY250bDsKCiAgICByYWRlb25fZW5naW5l
X2ZsdXNoKCk7CgogICAgY2xvY2tfY250bF9pbmRleCA9IElOUkVHKDB4MDAwOCk7CiAgICBtY2xr
X2NudGwgPSBJTlBMTCgweDAwMGYpOwoKICAgICgqKCh2b2xhdGlsZSB1aW50OF90KikoKCh1aW50
MzJfdCkocmFkZW9uX21taW9fYmFzZSkpKygweDAwMDgpKSkpPSgweDAwMGYgJiAweDAwMDAwMDFm
KSB8IDB4MDAwMDAwODA7ICgqKCh2b2xhdGlsZSB1aW50MzJfdCopKCgodWludDMyX3QpKHJhZGVv
bl9tbWlvX2Jhc2UpKSsoMHgwMDBDKSkpKT0obWNsa19jbnRsIHwgKDEgPDwgMTYpIHwgKDEgPDwg
MTcpKTsKCiAgICBnZW5fcmVzZXRfY250bCA9IElOUkVHKDB4MDBmMCk7CgogICAgKCooKHZvbGF0
aWxlIHVpbnQzMl90KikoKCh1aW50MzJfdCkocmFkZW9uX21taW9fYmFzZSkpKygweDAwZjApKSkp
PShnZW5fcmVzZXRfY250bCB8IDB4MDAwMDAwMDEpOwogICAgSU5SRUcoMHgwMGYwKTsKICAgICgq
KCh2b2xhdGlsZSB1aW50MzJfdCopKCgodWludDMyX3QpKHJhZGVvbl9tbWlvX2Jhc2UpKSsoMHgw
MGYwKSkpKT0oZ2VuX3Jlc2V0X2NudGwgJiAodWludDMyX3QpKH4weDAwMDAwMDAxKSk7CgogICAg
SU5SRUcoMHgwMGYwKTsKCiAgICAoKigodm9sYXRpbGUgdWludDhfdCopKCgodWludDMyX3QpKHJh
ZGVvbl9tbWlvX2Jhc2UpKSsoMHgwMDA4KSkpKT0oMHgwMDBmICYgMHgwMDAwMDAxZikgfCAweDAw
MDAwMDgwOyAoKigodm9sYXRpbGUgdWludDMyX3QqKSgoKHVpbnQzMl90KShyYWRlb25fbW1pb19i
YXNlKSkrKDB4MDAwQykpKSk9KG1jbGtfY250bCk7CiAgICAoKigodm9sYXRpbGUgdWludDMyX3Qq
KSgoKHVpbnQzMl90KShyYWRlb25fbW1pb19iYXNlKSkrKDB4MDAwOCkpKSk9KGNsb2NrX2NudGxf
aW5kZXgpOwogICAgKCooKHZvbGF0aWxlIHVpbnQzMl90KikoKCh1aW50MzJfdCkocmFkZW9uX21t
aW9fYmFzZSkpKygweDAwZjApKSkpPShnZW5fcmVzZXRfY250bCk7Cn0KIyA0NzAgInJhZ2UxMjhf
dmlkLmMiCnN0YXRpYyB2b2lkIHJhZGVvbl9lbmdpbmVfcmVzdG9yZSggdm9pZCApCnsKIyA1MTUg
InJhZ2UxMjhfdmlkLmMiCn0KCnN0YXRpYyB2b2lkIF9yYWRlb25fZmlmb193YWl0ICh1bnNpZ25l
ZCBlbnRyaWVzKQp7CiAgICB1bnNpZ25lZCBpOwoKICAgIGZvcig7OykKICAgIHsKICAgICAgICBm
b3IgKGk9MDsgaTwyMDAwMDAwOyBpKyspCiAgICAgICAgICAgICAgICBpZiAoKElOUkVHKDB4MTc0
MCkgJiAweDBmZmYpID49IGVudHJpZXMpCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICByYWRlb25fZW5naW5lX3Jlc2V0KCk7CiAgICAgICAgcmFkZW9uX2VuZ2luZV9yZXN0
b3JlKCk7CiAgICB9Cn0KCnN0YXRpYyB2b2lkIF9yYWRlb25fZW5naW5lX2lkbGUgKCB2b2lkICkK
ewogICAgdW5zaWduZWQgaTsKCgogICAgX3JhZGVvbl9maWZvX3dhaXQoNjQpOwogICAgZm9yKDs7
KQogICAgewogICAgICAgIGZvciAoaT0wOyBpPDIwMDAwMDA7IGkrKykgewogICAgICAgICAgICAg
ICAgaWYgKChJTlJFRygweDE3NDApICYgKDEgPDwgMzEpKSA9PSAwKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgIHJhZGVvbl9lbmdpbmVfZmx1c2ggKCk7CiAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmFkZW9uX2VuZ2lu
ZV9yZXNldCgpOwogICAgICAgIHJhZGVvbl9lbmdpbmVfcmVzdG9yZSgpOwogICAgfQp9CiMgODAx
ICJyYWdlMTI4X3ZpZC5jIgpzdGF0aWMgdm9pZCByYWRlb25fdmlkX21ha2VfZGVmYXVsdCh2b2lk
KQp7CgogIGJlc3Iuc2F0dXJhdGlvbiA9IDB4MEY7CiAgYmVzci5icmlnaHRuZXNzID0gMDsKICAo
Kigodm9sYXRpbGUgdWludDMyX3QqKSgoKHVpbnQzMl90KShyYWRlb25fbW1pb19iYXNlKSkrKDB4
MDRFMCkpKSk9KDB4MDAwRjBGMDBVTCk7CgoKCiAgYmVzci5kZWludGVybGFjZV9wYXR0ZXJuID0g
MHg5MDBBQUFBQTsKICAoKigodm9sYXRpbGUgdWludDMyX3QqKSgoKHVpbnQzMl90KShyYWRlb25f
bW1pb19iYXNlKSkrKDB4MDQ3NCkpKSk9KGJlc3IuZGVpbnRlcmxhY2VfcGF0dGVybik7CiAgYmVz
ci5kZWludGVybGFjZV9vbj0xOwogIGJlc3IuZG91YmxlX2J1ZmY9MTsKICBiZXNyLmNrZXlfb249
MDsKICBiZXNyLmdyYXBoaWNzX2tleV9tc2s9MDsKICBiZXNyLmdyYXBoaWNzX2tleV9jbHI9MDsK
ICBiZXNyLmNrZXlfY250bCA9IDB4MDAwMDAwMDFMfDB4MDAwMDAwMTBMfDB4MDAwMDAxMDBMOwp9
CgoKdW5zaWduZWQgdml4R2V0VmVyc2lvbiggdm9pZCApIHsgcmV0dXJuIDEwMDsgfQoKc3RhdGlj
IHVuc2lnbmVkIHNob3J0IGF0aV9jYXJkX2lkc1tdID0KewojIDgzNyAicmFnZTEyOF92aWQuYyIK
IDB4NTA0MSwKIDB4NTA0MiwKIDB4NTA0MywKIDB4NTA0NCwKIDB4NTA0NSwKIDB4NTA0NiwKCiAw
eDUwNDcsCiAweDUwNDgsCiAweDUwNDksCiAweDUwNGEsCiAweDUwNGIsCiAweDUwNGMsCiAweDUw
NGQsCiAweDUwNGUsCiAweDUwNGYsCiAweDUwNTAsCiAweDUwNTEsCiAweDUwNTIsCiAweDUwNTMs
CiAweDUwNTQsCiAweDUwNTUsCiAweDUwNTYsCiAweDUwNTcsCiAweDUwNTgsCgogMHg1MjQ1LAog
MHg1MjQ2LAogMHg1MjQ3LAogMHg1MjRiLAogMHg1MjRjLAogMHg1MzQ1LAogMHg1MzQ2LAogMHg1
MzQ3LAogMHg1MzQ4LAogMHg1MzRiLAogMHg1MzRjLAogMHg1MzRkLAogMHg1MzRlLAogMHg1NDQ2
LAogMHg1NDRjLAogMHg1NDUyLAoKIDB4NGM0NSwKIDB4NGM0NgojIDkxOSAicmFnZTEyOF92aWQu
YyIKfTsKCnN0YXRpYyBpbnQgZmluZF9jaGlwKHVuc2lnbmVkIGNoaXBfaWQpCnsKICB1bnNpZ25l
ZCBpOwogIGZvcihpID0gMDtpIDwgc2l6ZW9mKGF0aV9jYXJkX2lkcykvc2l6ZW9mKHVuc2lnbmVk
IHNob3J0KTtpKyspCiAgewogICAgaWYoY2hpcF9pZCA9PSBhdGlfY2FyZF9pZHNbaV0pIHJldHVy
biBpOwogIH0KICByZXR1cm4gLTE7Cn0KCnN0YXRpYyBwY2lpbmZvX3QgcGNpX2luZm87CnN0YXRp
YyBpbnQgcHJvYmVkPTA7Cgp2aWRpeF9jYXBhYmlsaXR5X3QgZGVmX2NhcCA9CnsKCiAgICAiQkVT
IGRyaXZlciBmb3IgcmFnZTEyOCBjYXJkcyIsCgoKCiAgICAiTmljayBLdXJzaGV2IiwKICAgIDB4
MDAwMDAwMDAgfCAweDAwMDAwMDA0LAogICAgeyAwLCAwLCAwLCAwIH0sCiAgICAyMDQ4LAogICAg
MjA0OCwKICAgIDQsCiAgICA0LAogICAgLTEsCiAgICAweDAwMDAwMDEwIHwgMHgwMDAwMDAyMCB8
IDB4MDAwMDIwMDAsCiAgICAweDEwMDIsCiAgICAwLAogICAgeyAwLCAwLCAwLCAwfQp9OwoKCmlu
dCB2aXhQcm9iZSggaW50IHZlcmJvc2UsaW50IGZvcmNlICkKewogIHBjaWluZm9fdCBsc3RbNjRd
OwogIHVuc2lnbmVkIGksbnVtX3BjaTsKICBpbnQgZXJyOwogIF9fdmVyYm9zZSA9IHZlcmJvc2U7
CiAgZXJyID0gcGNpX3NjYW4obHN0LCZudW1fcGNpKTsKICBpZihlcnIpCiAgewogICAgcHJpbnRm
KCJyYWdlMTI4X3ZpZDoiIiBFcnJvciBvY2N1cmVkIGR1cmluZyBwY2kgc2NhbjogJXNcbiIsc3Ry
ZXJyb3IoZXJyKSk7CiAgICByZXR1cm4gZXJyOwogIH0KICBlbHNlCiAgewogICAgZXJyID0gNjsK
ICAgIGZvcihpPTA7aTxudW1fcGNpO2krKykKICAgIHsKICAgICAgaWYobHN0W2ldLnZlbmRvciA9
PSAweDEwMDIpCiAgICAgIHsKICAgICAgICBpbnQgaWR4OwogICAgICAgIGNvbnN0IGNoYXIgKmRu
YW1lOwogICAgICAgIGlkeCA9IGZpbmRfY2hpcChsc3RbaV0uZGV2aWNlKTsKICAgICAgICBpZihp
ZHggPT0gLTEgJiYgZm9yY2UgPT0gMCkgY29udGludWU7CiAgICAgICAgZG5hbWUgPSBwY2lfZGV2
aWNlX25hbWUoMHgxMDAyLGxzdFtpXS5kZXZpY2UpOwogICAgICAgIGRuYW1lID0gZG5hbWUgPyBk
bmFtZSA6ICJVbmtub3duIGNoaXAiOwogICAgICAgIHByaW50ZigicmFnZTEyOF92aWQ6IiIgRm91
bmQgY2hpcDogJXNcbiIsZG5hbWUpOwojIDEwNDggInJhZ2UxMjhfdmlkLmMiCiAgICAgICAgaWYo
Zm9yY2UgPiAwKQogICAgICAgIHsKICAgICAgICAgICAgcHJpbnRmKCJyYWdlMTI4X3ZpZDoiIiBE
cml2ZXIgd2FzIGZvcmNlZC4gV2FzIGZvdW5kICVza25vd24gY2hpcFxuIixpZHggPT0gLTEgPyAi
dW4iIDogIiIpOwogICAgICAgICAgICBpZihpZHggPT0gLTEpCgogICAgICAgICAgICAgICAgcHJp
bnRmKCJyYWdlMTI4X3ZpZDoiIiBBc3N1bWluZyBpdCBhcyBSYWdlMTI4XG4iKTsKCgoKICAgICAg
ICB9CiAgICAgICAgZGVmX2NhcC5kZXZpY2VfaWQgPSBsc3RbaV0uZGV2aWNlOwogICAgICAgIGVy
ciA9IDA7CiAgICAgICAgbWVtY3B5KCZwY2lfaW5mbywmbHN0W2ldLHNpemVvZihwY2lpbmZvX3Qp
KTsKICAgICAgICBwcm9iZWQ9MTsKICAgICAgICBicmVhazsKICAgICAgfQogICAgfQogIH0KICBp
ZihlcnIgJiYgdmVyYm9zZSkgcHJpbnRmKCJyYWdlMTI4X3ZpZDoiIiBDYW4ndCBmaW5kIGNoaXBc
biIpOwogIHJldHVybiBlcnI7Cn0KIyAxMTQ5ICJyYWdlMTI4X3ZpZC5jIgp0eXBlZGVmIHN0cnVj
dCBzYXZlZF9yZWdzX3MKewogICAgdWludDMyX3Qgb3YwX3ZpZF9rZXlfY2xyOwogICAgdWludDMy
X3Qgb3YwX3ZpZF9rZXlfbXNrOwogICAgdWludDMyX3Qgb3YwX2dyYXBoaWNzX2tleV9jbHI7CiAg
ICB1aW50MzJfdCBvdjBfZ3JhcGhpY3Nfa2V5X21zazsKICAgIHVpbnQzMl90IG92MF9rZXlfY250
bDsKfXNhdmVkX3JlZ3NfdDsKc3RhdGljIHNhdmVkX3JlZ3NfdCBzYXZyZWc7CgpzdGF0aWMgdm9p
ZCBzYXZlX3JlZ3MoIHZvaWQgKQp7CiAgICBfcmFkZW9uX2ZpZm9fd2FpdCg2KTsKICAgIHNhdnJl
Zy5vdjBfdmlkX2tleV9jbHIgPSBJTlJFRygweDA0RTQpOwogICAgc2F2cmVnLm92MF92aWRfa2V5
X21zayA9IElOUkVHKDB4MDRFOCk7CiAgICBzYXZyZWcub3YwX2dyYXBoaWNzX2tleV9jbHIgPSBJ
TlJFRygweDA0RUMpOwogICAgc2F2cmVnLm92MF9ncmFwaGljc19rZXlfbXNrID0gSU5SRUcoMHgw
NEYwKTsKICAgIHNhdnJlZy5vdjBfa2V5X2NudGwgPSBJTlJFRygweDA0RjQpOwp9CgpzdGF0aWMg
dm9pZCByZXN0b3JlX3JlZ3MoIHZvaWQgKQp7CiAgICBfcmFkZW9uX2ZpZm9fd2FpdCg2KTsKICAg
ICgqKCh2b2xhdGlsZSB1aW50MzJfdCopKCgodWludDMyX3QpKHJhZGVvbl9tbWlvX2Jhc2UpKSso
MHgwNEU0KSkpKT0oc2F2cmVnLm92MF92aWRfa2V5X2Nscik7CiAgICAoKigodm9sYXRpbGUgdWlu
dDMyX3QqKSgoKHVpbnQzMl90KShyYWRlb25fbW1pb19iYXNlKSkrKDB4MDRFOCkpKSk9KHNhdnJl
Zy5vdjBfdmlkX2tleV9tc2spOwogICAgKCooKHZvbGF0aWxlIHVpbnQzMl90KikoKCh1aW50MzJf
dCkocmFkZW9uX21taW9fYmFzZSkpKygweDA0RUMpKSkpPShzYXZyZWcub3YwX2dyYXBoaWNzX2tl
eV9jbHIpOwogICAgKCooKHZvbGF0aWxlIHVpbnQzMl90KikoKCh1aW50MzJfdCkocmFkZW9uX21t
aW9fYmFzZSkpKygweDA0RjApKSkpPShzYXZyZWcub3YwX2dyYXBoaWNzX2tleV9tc2spOwogICAg
KCooKHZvbGF0aWxlIHVpbnQzMl90KikoKCh1aW50MzJfdCkocmFkZW9uX21taW9fYmFzZSkpKygw
eDA0RjQpKSkpPShzYXZyZWcub3YwX2tleV9jbnRsKTsKfQoKaW50IHZpeEluaXQoIGNvbnN0IGNo
YXIgKmFyZ3MgKQp7CiAgaW50IGVycjsKICBpZighcHJvYmVkKQogIHsKICAgIHByaW50ZigicmFn
ZTEyOF92aWQ6IiIgRHJpdmVyIHdhcyBub3QgcHJvYmVkIGJ1dCBpcyBiZWluZyBpbml0aWFsaXpp
bmdcbiIpOwogICAgcmV0dXJuIDQ7CiAgfQogIGlmKChyYWRlb25fbW1pb19iYXNlID0gbWFwX3Bo
eXNfbWVtKHBjaV9pbmZvLmJhc2UyLDB4RkZGRikpPT0odm9pZCAqKS0xKSByZXR1cm4gMTI7CiAg
cmFkZW9uX3JhbV9zaXplID0gSU5SRUcoMHgwMEY4KTsKCiAgcmFkZW9uX3JhbV9zaXplICY9IDB4
MWYwMDAwMDA7CiAgaWYoKHJhZGVvbl9tZW1fYmFzZSA9IG1hcF9waHlzX21lbShwY2lfaW5mby5i
YXNlMCxyYWRlb25fcmFtX3NpemUpKT09KHZvaWQgKiktMSkgcmV0dXJuIDEyOwogIChfX2V4dGVu
c2lvbl9fIChfX2J1aWx0aW5fY29uc3RhbnRfcCAoc2l6ZW9mKGJlc19yZWdpc3RlcnNfdCkpICYm
IChzaXplb2YoYmVzX3JlZ2lzdGVyc190KSkgPD0gMTYgPyAoKHNpemVvZihiZXNfcmVnaXN0ZXJz
X3QpKSA9PSAxID8gKHsgdm9pZCAqX19zID0gKCZiZXNyKTsgKigoX191aW50OF90ICopIF9fcykg
PSAoX191aW50OF90KSAwOyBfX3M7IH0pIDogKHsgdm9pZCAqX19zID0gKCZiZXNyKTsgdW5pb24g
eyB1bnNpZ25lZCBpbnQgX191aTsgdW5zaWduZWQgc2hvcnQgaW50IF9fdXNpOyB1bnNpZ25lZCBj
aGFyIF9fdWM7IH0gKl9fdSA9IF9fczsgX191aW50OF90IF9fYyA9IChfX3VpbnQ4X3QpICgwKTsg
c3dpdGNoICgodW5zaWduZWQgaW50KSAoc2l6ZW9mKGJlc19yZWdpc3RlcnNfdCkpKSB7IGNhc2Ug
MTU6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2
b2lkICopIF9fdSArIDQpOyBjYXNlIDExOiBfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBf
X3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsgY2FzZSA3OiBfX3UtPl9fdWkg
PSBfX2MgKiAweDAxMDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0
KTsgY2FzZSAzOiBfX3UtPl9fdXNpID0gKHVuc2lnbmVkIHNob3J0IGludCkgX19jICogMHgwMTAx
OyBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyAyKTsgX191LT5fX3VjID0gKHVu
c2lnbmVkIGNoYXIpIF9fYzsgYnJlYWs7IGNhc2UgMTQ6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEw
MTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQpOyBjYXNlIDEwOiBf
X3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAq
KSBfX3UgKyA0KTsgY2FzZSA2OiBfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBfX3UgPSBf
X2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsgY2FzZSAyOiBfX3UtPl9fdXNpID0gKHVu
c2lnbmVkIHNob3J0IGludCkgX19jICogMHgwMTAxOyBicmVhazsgY2FzZSAxMzogX191LT5fX3Vp
ID0gX19jICogMHgwMTAxMDEwMTsgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsg
NCk7IGNhc2UgOTogX191LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsgX191ID0gX19leHRlbnNp
b25fXyAoKHZvaWQgKikgX191ICsgNCk7IGNhc2UgNTogX191LT5fX3VpID0gX19jICogMHgwMTAx
MDEwMTsgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7IGNhc2UgMTogX191
LT5fX3VjID0gKHVuc2lnbmVkIGNoYXIpIF9fYzsgYnJlYWs7IGNhc2UgMTY6IF9fdS0+X191aSA9
IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQp
OyBjYXNlIDEyOiBfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lv
bl9fICgodm9pZCAqKSBfX3UgKyA0KTsgY2FzZSA4OiBfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEw
MTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsgY2FzZSA0OiBfX3Ut
Pl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBjYXNlIDA6IGJyZWFrOyB9IF9fczsgfSkpIDogKF9f
YnVpbHRpbl9jb25zdGFudF9wICgwKSAmJiAoMCkgPT0gJ1wwJyA/ICh7IHZvaWQgKl9fcyA9ICgm
YmVzcik7IF9fYnVpbHRpbl9tZW1zZXQgKF9fcywgJ1wwJywgc2l6ZW9mKGJlc19yZWdpc3RlcnNf
dCkpOyBfX3M7IH0pIDogbWVtc2V0ICgmYmVzciwgMCwgc2l6ZW9mKGJlc19yZWdpc3RlcnNfdCkp
KSkpOwogIHJhZGVvbl92aWRfbWFrZV9kZWZhdWx0KCk7CiAgcHJpbnRmKCJyYWdlMTI4X3ZpZDoi
IiBWaWRlbyBtZW1vcnkgPSAldU1iXG4iLHJhZGVvbl9yYW1fc2l6ZS8weDEwMDAwMCk7CiAgZXJy
ID0gbXRycl9zZXRfdHlwZShwY2lfaW5mby5iYXNlMCxyYWRlb25fcmFtX3NpemUsMSk7CiAgaWYo
IWVycikgcHJpbnRmKCJyYWdlMTI4X3ZpZDoiIiBTZXQgd3JpdGUtY29tYmluaW5nIHR5cGUgb2Yg
dmlkZW8gbWVtb3J5XG4iKTsKIyAxMjIzICJyYWdlMTI4X3ZpZC5jIgogIGlmKGJtX29wZW4oKSA9
PSAwKQogIHsKICAgICAgICBpZigoZG1hX3BoeXNfYWRkcnMgPSBtYWxsb2MocmFkZW9uX3JhbV9z
aXplKnNpemVvZih1bnNpZ25lZCBsb25nKS80MDk2KSkgIT0gMCkKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZfY2FwLmZsYWdzIHw9IDB4MDAwMDAwMDEgfCAw
eDAwMDAwMDAyOwogICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIHByaW50ZigicmFnZTEyOF92
aWQ6IiIgQ2FuJ3QgYWxsb2NhdGUgdGVtb3BhcnkgYnVmZmVyIGZvciBETUFcbiIpOwogIH0KICBl
bHNlCiAgICBpZihfX3ZlcmJvc2UpIHByaW50ZigicmFnZTEyOF92aWQ6IiIgQ2FuJ3QgaW5pdGlh
bGl6ZSBidXNtYXN0ZXJpbmc6ICVzXG4iLHN0cmVycm9yKCgqX19lcnJub19sb2NhdGlvbiAoKSkp
KTsKCiAgc2F2ZV9yZWdzKCk7CiAgcmV0dXJuIDA7Cn0KCnZvaWQgdml4RGVzdHJveSggdm9pZCAp
CnsKICByZXN0b3JlX3JlZ3MoKTsKICB1bm1hcF9waHlzX21lbShyYWRlb25fbWVtX2Jhc2UscmFk
ZW9uX3JhbV9zaXplKTsKICB1bm1hcF9waHlzX21lbShyYWRlb25fbW1pb19iYXNlLDB4RkZGRik7
CiAgYm1fY2xvc2UoKTsKfQoKaW50IHZpeEdldENhcGFiaWxpdHkodmlkaXhfY2FwYWJpbGl0eV90
ICp0bykKewogIG1lbWNweSh0bywmZGVmX2NhcCxzaXplb2YodmlkaXhfY2FwYWJpbGl0eV90KSk7
CiAgcmV0dXJuIDA7Cn0KCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgZm91cmNjX2Rlc2Nfcwp7CiAgICB1
aW50MzJfdCBmb3VyY2M7CiAgICB1bnNpZ25lZCBtYXhfc3JjdzsKfWZvdXJjY19kZXNjX3Q7Cgpm
b3VyY2NfZGVzY190IHN1cHBvcnRlZF9mb3VyY2NbXSA9CnsKICB7ICgoKHVuc2lnbmVkKSgnWScp
PDwwKXwoKHVuc2lnbmVkKSgnOCcpPDw4KXwoKHVuc2lnbmVkKSgnMCcpPDwxNil8KCh1bnNpZ25l
ZCkoJzAnKTw8MjQpKSwgMTU2NyB9LAogIHsgKCgodW5zaWduZWQpKCdZJyk8PDApfCgodW5zaWdu
ZWQpKCdWJyk8PDgpfCgodW5zaWduZWQpKCdVJyk8PDE2KXwoKHVuc2lnbmVkKSgnOScpPDwyNCkp
LCAxNTY3IH0sCiAgeyAoKCh1bnNpZ25lZCkoJ0knKTw8MCl8KCh1bnNpZ25lZCkoJ0YnKTw8OCl8
KCh1bnNpZ25lZCkoJzAnKTw8MTYpfCgodW5zaWduZWQpKCc5Jyk8PDI0KSksIDE1NjcgfSwKICB7
ICgoKHVuc2lnbmVkKSgnWScpPDwwKXwoKHVuc2lnbmVkKSgnVicpPDw4KXwoKHVuc2lnbmVkKSgn
MScpPDwxNil8KCh1bnNpZ25lZCkoJzInKTw8MjQpKSwgMTU2NyB9LAogIHsgKCgodW5zaWduZWQp
KCdJJyk8PDApfCgodW5zaWduZWQpKCc0Jyk8PDgpfCgodW5zaWduZWQpKCcyJyk8PDE2KXwoKHVu
c2lnbmVkKSgnMCcpPDwyNCkpLCAxNTY3IH0sCiAgeyAoKCh1bnNpZ25lZCkoJ0knKTw8MCl8KCh1
bnNpZ25lZCkoJ1knKTw8OCl8KCh1bnNpZ25lZCkoJ1UnKTw8MTYpfCgodW5zaWduZWQpKCdWJyk8
PDI0KSksIDE1NjcgfSwKICB7ICgoKHVuc2lnbmVkKSgnVScpPDwwKXwoKHVuc2lnbmVkKSgnWScp
PDw4KXwoKHVuc2lnbmVkKSgnVicpPDwxNil8KCh1bnNpZ25lZCkoJ1knKTw8MjQpKSwgMTU1MSB9
LAogIHsgKCgodW5zaWduZWQpKCdZJyk8PDApfCgodW5zaWduZWQpKCdVJyk8PDgpfCgodW5zaWdu
ZWQpKCdZJyk8PDE2KXwoKHVuc2lnbmVkKSgnMicpPDwyNCkpLCAxNTUxIH0sCiAgeyAoKCh1bnNp
Z25lZCkoJ1knKTw8MCl8KCh1bnNpZ25lZCkoJ1YnKTw8OCl8KCh1bnNpZ25lZCkoJ1knKTw8MTYp
fCgodW5zaWduZWQpKCdVJyk8PDI0KSksIDE1NTEgfSwKICB7ICgoKHVuc2lnbmVkKSgnUicpPDww
KXwoKHVuc2lnbmVkKSgnRycpPDw4KXwoKHVuc2lnbmVkKSgnQicpPDwxNil8KCh1bnNpZ25lZCko
MTUpPDwyNCkpLCAxNTUxIH0sCiAgeyAoKCh1bnNpZ25lZCkoJ0InKTw8MCl8KCh1bnNpZ25lZCko
J0cnKTw8OCl8KCh1bnNpZ25lZCkoJ1InKTw8MTYpfCgodW5zaWduZWQpKDE1KTw8MjQpKSwgMTU1
MSB9LAogIHsgKCgodW5zaWduZWQpKCdSJyk8PDApfCgodW5zaWduZWQpKCdHJyk8PDgpfCgodW5z
aWduZWQpKCdCJyk8PDE2KXwoKHVuc2lnbmVkKSgxNik8PDI0KSksIDE1NTEgfSwKICB7ICgoKHVu
c2lnbmVkKSgnQicpPDwwKXwoKHVuc2lnbmVkKSgnRycpPDw4KXwoKHVuc2lnbmVkKSgnUicpPDwx
Nil8KCh1bnNpZ25lZCkoMTYpPDwyNCkpLCAxNTUxIH0sCiAgeyAoKCh1bnNpZ25lZCkoJ1InKTw8
MCl8KCh1bnNpZ25lZCkoJ0cnKTw8OCl8KCh1bnNpZ25lZCkoJ0InKTw8MTYpfCgodW5zaWduZWQp
KDMyKTw8MjQpKSwgNzc1IH0sCiAgeyAoKCh1bnNpZ25lZCkoJ0InKTw8MCl8KCh1bnNpZ25lZCko
J0cnKTw8OCl8KCh1bnNpZ25lZCkoJ1InKTw8MTYpfCgodW5zaWduZWQpKDMyKTw8MjQpKSwgNzc1
IH0KfTsKCl9faW5saW5lX18gc3RhdGljIGludCBpc19zdXBwb3J0ZWRfZm91cmNjKHVpbnQzMl90
IGZvdXJjYyx1bnNpZ25lZCBzcmN3KQp7CiAgdW5zaWduZWQgaTsKICBmb3IoaT0wO2k8c2l6ZW9m
KHN1cHBvcnRlZF9mb3VyY2MpL3NpemVvZihmb3VyY2NfZGVzY190KTtpKyspCiAgewogICAgaWYo
Zm91cmNjPT1zdXBwb3J0ZWRfZm91cmNjW2ldLmZvdXJjYyAmJgogICAgICAgIHNyY3cgPD1zdXBw
b3J0ZWRfZm91cmNjW2ldLm1heF9zcmN3KSByZXR1cm4gMTsKICB9CiAgcmV0dXJuIDA7Cn0KCmlu
dCB2aXhRdWVyeUZvdXJjYyh2aWRpeF9mb3VyY2NfdCAqdG8pCnsKICAgIGlmKGlzX3N1cHBvcnRl
ZF9mb3VyY2ModG8tPmZvdXJjYyx0by0+c3JjdykpCiAgICB7CiAgICAgICAgdG8tPmRlcHRoID0g
MHgwMDAxIHwgMHgwMDAyIHwKICAgICAgICAgICAgICAgICAgICAweDAwMDQgfCAweDAwMDggfAog
ICAgICAgICAgICAgICAgICAgIDB4MDAxMHwgMHgwMDIwfAogICAgICAgICAgICAgICAgICAgIDB4
MDA0MHwgMHgwMDgwfAogICAgICAgICAgICAgICAgICAgIDB4MDEwMDsKICAgICAgICB0by0+Zmxh
Z3MgPSAweDAwMDEgfCAweDAwMDIgfCAweDAwMDg7CiAgICAgICAgcmV0dXJuIDA7CiAgICB9CiAg
ICBlbHNlIHRvLT5kZXB0aCA9IHRvLT5mbGFncyA9IDA7CiAgICByZXR1cm4gMzg7Cn0KCnN0YXRp
YyBkb3VibGUgSF9zY2FsZV9yYXRpbzsKc3RhdGljIHZvaWQgcmFkZW9uX3ZpZF9kdW1wX3JlZ3Mo
IHZvaWQgKQp7CiAgc2l6ZV90IGk7CiAgcHJpbnRmKCJyYWdlMTI4X3ZpZDoiIioqKiBCZWdpbiBv
ZiBEUklWRVIgdmFyaWFibGVzIGR1bXAgKioqXG4iKTsKICBwcmludGYoInJhZ2UxMjhfdmlkOiIi
cmFkZW9uX21taW9fYmFzZT0lcFxuIixyYWRlb25fbW1pb19iYXNlKTsKICBwcmludGYoInJhZ2Ux
MjhfdmlkOiIicmFkZW9uX21lbV9iYXNlPSVwXG4iLHJhZGVvbl9tZW1fYmFzZSk7CiAgcHJpbnRm
KCJyYWdlMTI4X3ZpZDoiInJhZGVvbl9vdmVybGF5X29mZj0lMDhYXG4iLHJhZGVvbl9vdmVybGF5
X29mZik7CiAgcHJpbnRmKCJyYWdlMTI4X3ZpZDoiInJhZGVvbl9yYW1fc2l6ZT0lMDhYXG4iLHJh
ZGVvbl9yYW1fc2l6ZSk7CiAgcHJpbnRmKCJyYWdlMTI4X3ZpZDoiInZpZGVvIG1vZGU6ICV1eCV1
QCV1XG4iLHJhZGVvbl9nZXRfeHJlcygpLHJhZGVvbl9nZXRfeXJlcygpLHJhZGVvbl92aWRfZ2V0
X2RicHAoKSk7CiAgcHJpbnRmKCJyYWdlMTI4X3ZpZDoiIkhfc2NhbGVfcmF0aW89JTguMmZcbiIs
SF9zY2FsZV9yYXRpbyk7CiAgcHJpbnRmKCJyYWdlMTI4X3ZpZDoiIioqKiBCZWdpbiBvZiBPVjAg
cmVnaXN0ZXJzIGR1bXAgKioqXG4iKTsKICBmb3IoaT0wO2k8c2l6ZW9mKHZyZWdzKS9zaXplb2Yo
dmlkZW9fcmVnaXN0ZXJzX3QpO2krKykKICAgICAgICBwcmludGYoInJhZ2UxMjhfdmlkOiIiJXMg
PSAlMDhYXG4iLHZyZWdzW2ldLnNuYW1lLElOUkVHKHZyZWdzW2ldLm5hbWUpKTsKICBwcmludGYo
InJhZ2UxMjhfdmlkOiIiKioqIEVuZCBvZiBPVjAgcmVnaXN0ZXJzIGR1bXAgKioqXG4iKTsKfQoK
c3RhdGljIHZvaWQgcmFkZW9uX3ZpZF9zdG9wX3ZpZGVvKCB2b2lkICkKewogICAgX3JhZGVvbl9l
bmdpbmVfaWRsZSgpOwogICAgKCooKHZvbGF0aWxlIHVpbnQzMl90KikoKCh1aW50MzJfdCkocmFk
ZW9uX21taW9fYmFzZSkpKygweDA0MjApKSkpPSgweDgwMDAwMDAwTCk7CiAgICAoKigodm9sYXRp
bGUgdWludDMyX3QqKSgoKHVpbnQzMl90KShyYWRlb25fbW1pb19iYXNlKSkrKDB4MDQwOCkpKSk9
KDApOwogICAgKCooKHZvbGF0aWxlIHVpbnQzMl90KikoKCh1aW50MzJfdCkocmFkZW9uX21taW9f
YmFzZSkpKygweDA0NzApKSkpPSgwKTsKICAgICgqKCh2b2xhdGlsZSB1aW50MzJfdCopKCgodWlu
dDMyX3QpKHJhZGVvbl9tbWlvX2Jhc2UpKSsoMHgwNEEwKSkpKT0oMHgwMDAwMDAwRik7CgogICAg
KCooKHZvbGF0aWxlIHVpbnQzMl90KikoKCh1aW50MzJfdCkocmFkZW9uX21taW9fYmFzZSkpKygw
eDA0RjQpKSkpPSgweDAwMDAwMDUwTCk7CgoKCiAgICAoKigodm9sYXRpbGUgdWludDMyX3QqKSgo
KHVpbnQzMl90KShyYWRlb25fbW1pb19iYXNlKSkrKDB4MDRGOCkpKSk9KDApOwp9CgpzdGF0aWMg
dm9pZCByYWRlb25fdmlkX2Rpc3BsYXlfdmlkZW8oIHZvaWQgKQp7CiAgICBpbnQgYmVzX2ZsYWdz
OwogICAgX3JhZGVvbl9maWZvX3dhaXQoMik7CiAgICAoKigodm9sYXRpbGUgdWludDMyX3QqKSgo
KHVpbnQzMl90KShyYWRlb25fbW1pb19iYXNlKSkrKDB4MDQxMCkpKSk9KDB4MDAwMDAwMDFMKTsK
ICAgIF9yYWRlb25fZW5naW5lX2lkbGUoKTsKICAgIHdoaWxlKCEoSU5SRUcoMHgwNDEwKSYweDAw
MDAwMDA4TCkpOwogICAgX3JhZGVvbl9maWZvX3dhaXQoMTUpOwoKCiAgICAoKigodm9sYXRpbGUg
dWludDMyX3QqKSgoKHVpbnQzMl90KShyYWRlb25fbW1pb19iYXNlKSkrKDB4MDkxMCkpKSk9KDQp
OwogICAgKCooKHZvbGF0aWxlIHVpbnQzMl90KikoKCh1aW50MzJfdCkocmFkZW9uX21taW9fYmFz
ZSkpKygweDA5NTApKSkpPSgwKTsKCiAgICAoKigodm9sYXRpbGUgdWludDMyX3QqKSgoKHVpbnQz
Ml90KShyYWRlb25fbW1pb19iYXNlKSkrKDB4MDkwMCkpKSk9KCgxPDwxNikgfCAweDAxKTsKICAg
ICgqKCh2b2xhdGlsZSB1aW50MzJfdCopKCgodWludDMyX3QpKHJhZGVvbl9tbWlvX2Jhc2UpKSso
MHgwRDEwKSkpKT0oMCk7CgogICAgKCooKHZvbGF0aWxlIHVpbnQzMl90KikoKCh1aW50MzJfdCko
cmFkZW9uX21taW9fYmFzZSkpKygweDA0NzApKSkpPSgweDAwMDAwMDEwKTsKCiAgICBpZihiZXNy
LmRlaW50ZXJsYWNlX29uKSAoKigodm9sYXRpbGUgdWludDMyX3QqKSgoKHVpbnQzMl90KShyYWRl
b25fbW1pb19iYXNlKSkrKDB4MDQ3NCkpKSk9KGJlc3IuZGVpbnRlcmxhY2VfcGF0dGVybik7Cgog
ICAgKCooKHZvbGF0aWxlIHVpbnQzMl90KikoKCh1aW50MzJfdCkocmFkZW9uX21taW9fYmFzZSkp
KygweDA0RTApKSkpPSgoYmVzci5icmlnaHRuZXNzICYgMHg3ZikgfCAoYmVzci5zYXR1cmF0aW9u
IDw8IDgpIHwgKGJlc3Iuc2F0dXJhdGlvbiA8PCAxNikpOwoKCgogICAgX3JhZGVvbl9maWZvX3dh
aXQoMik7CiAgICAoKigodm9sYXRpbGUgdWludDMyX3QqKSgoKHVpbnQzMl90KShyYWRlb25fbW1p
b19iYXNlKSkrKDB4MDRGMCkpKSk9KGJlc3IuZ3JhcGhpY3Nfa2V5X21zayk7CiAgICAoKigodm9s
YXRpbGUgdWludDMyX3QqKSgoKHVpbnQzMl90KShyYWRlb25fbW1pb19iYXNlKSkrKDB4MDRFQykp
KSk9KGJlc3IuZ3JhcGhpY3Nfa2V5X2Nscik7CiAgICAoKigodm9sYXRpbGUgdWludDMyX3QqKSgo
KHVpbnQzMl90KShyYWRlb25fbW1pb19iYXNlKSkrKDB4MDRGNCkpKSk9KGJlc3IuY2tleV9jbnRs
KTsKCiAgICAoKigodm9sYXRpbGUgdWludDMyX3QqKSgoKHVpbnQzMl90KShyYWRlb25fbW1pb19i
YXNlKSkrKDB4MDQ4MCkpKSk9KGJlc3IuaF9pbmMpOwogICAgKCooKHZvbGF0aWxlIHVpbnQzMl90
KikoKCh1aW50MzJfdCkocmFkZW9uX21taW9fYmFzZSkpKygweDA0ODQpKSkpPShiZXNyLnN0ZXBf
YnkpOwogICAgKCooKHZvbGF0aWxlIHVpbnQzMl90KikoKCh1aW50MzJfdCkocmFkZW9uX21taW9f
YmFzZSkpKygweDA0MDApKSkpPShiZXNyLnlfeF9zdGFydCk7CiAgICAoKigodm9sYXRpbGUgdWlu
dDMyX3QqKSgoKHVpbnQzMl90KShyYWRlb25fbW1pb19iYXNlKSkrKDB4MDQwNCkpKSk9KGJlc3Iu
eV94X2VuZCk7CiAgICAoKigodm9sYXRpbGUgdWludDMyX3QqKSgoKHVpbnQzMl90KShyYWRlb25f
bW1pb19iYXNlKSkrKDB4MDQyNCkpKSk9KGJlc3Iudl9pbmMpOwogICAgKCooKHZvbGF0aWxlIHVp
bnQzMl90KikoKCh1aW50MzJfdCkocmFkZW9uX21taW9fYmFzZSkpKygweDA0MzApKSkpPShiZXNy
LnAxX2JsYW5rX2xpbmVzX2F0X3RvcCk7CiAgICAoKigodm9sYXRpbGUgdWludDMyX3QqKSgoKHVp
bnQzMl90KShyYWRlb25fbW1pb19iYXNlKSkrKDB4MDQzNCkpKSk9KGJlc3IucDIzX2JsYW5rX2xp
bmVzX2F0X3RvcCk7CiAgICAoKigodm9sYXRpbGUgdWludDMyX3QqKSgoKHVpbnQzMl90KShyYWRl
b25fbW1pb19iYXNlKSkrKDB4MDQ2MCkpKSk9KGJlc3IudmlkX2J1Zl9waXRjaDBfdmFsdWUpOwog
ICAgKCooKHZvbGF0aWxlIHVpbnQzMl90KikoKCh1aW50MzJfdCkocmFkZW9uX21taW9fYmFzZSkp
KygweDA0NjQpKSkpPShiZXNyLnZpZF9idWZfcGl0Y2gxX3ZhbHVlKTsKICAgICgqKCh2b2xhdGls
ZSB1aW50MzJfdCopKCgodWludDMyX3QpKHJhZGVvbl9tbWlvX2Jhc2UpKSsoMHgwNDk0KSkpKT0o
YmVzci5wMV94X3N0YXJ0X2VuZCk7CiAgICAoKigodm9sYXRpbGUgdWludDMyX3QqKSgoKHVpbnQz
Ml90KShyYWRlb25fbW1pb19iYXNlKSkrKDB4MDQ5OCkpKSk9KGJlc3IucDJfeF9zdGFydF9lbmQp
OwogICAgKCooKHZvbGF0aWxlIHVpbnQzMl90KikoKCh1aW50MzJfdCkocmFkZW9uX21taW9fYmFz
ZSkpKygweDA0OUMpKSkpPShiZXNyLnAzX3hfc3RhcnRfZW5kKTsKCgoKICAgICgqKCh2b2xhdGls
ZSB1aW50MzJfdCopKCgodWludDMyX3QpKHJhZGVvbl9tbWlvX2Jhc2UpKSsoMHgwNDQwKSkpKT0o
YmVzci52aWRfYnVmX2Jhc2VfYWRyc195WzBdKTsKICAgICgqKCh2b2xhdGlsZSB1aW50MzJfdCop
KCgodWludDMyX3QpKHJhZGVvbl9tbWlvX2Jhc2UpKSsoMHgwNDQ0KSkpKT0oYmVzci52aWRfYnVm
X2Jhc2VfYWRyc192WzBdKTsKICAgICgqKCh2b2xhdGlsZSB1aW50MzJfdCopKCgodWludDMyX3Qp
KHJhZGVvbl9tbWlvX2Jhc2UpKSsoMHgwNDQ4KSkpKT0oYmVzci52aWRfYnVmX2Jhc2VfYWRyc191
WzBdKTsKICAgIF9yYWRlb25fZmlmb193YWl0KDkpOwogICAgKCooKHZvbGF0aWxlIHVpbnQzMl90
KikoKCh1aW50MzJfdCkocmFkZW9uX21taW9fYmFzZSkpKygweDA0NEMpKSkpPShiZXNyLnZpZF9i
dWZfYmFzZV9hZHJzX3lbMF0pOwogICAgKCooKHZvbGF0aWxlIHVpbnQzMl90KikoKCh1aW50MzJf
dCkocmFkZW9uX21taW9fYmFzZSkpKygweDA0NTApKSkpPShiZXNyLnZpZF9idWZfYmFzZV9hZHJz
X3ZbMF0pOwogICAgKCooKHZvbGF0aWxlIHVpbnQzMl90KikoKCh1aW50MzJfdCkocmFkZW9uX21t
aW9fYmFzZSkpKygweDA0NTQpKSkpPShiZXNyLnZpZF9idWZfYmFzZV9hZHJzX3VbMF0pOwogICAg
KCooKHZvbGF0aWxlIHVpbnQzMl90KikoKCh1aW50MzJfdCkocmFkZW9uX21taW9fYmFzZSkpKygw
eDA0MjgpKSkpPShiZXNyLnAxX3ZfYWNjdW1faW5pdCk7CiAgICAoKigodm9sYXRpbGUgdWludDMy
X3QqKSgoKHVpbnQzMl90KShyYWRlb25fbW1pb19iYXNlKSkrKDB4MDQ4OCkpKSk9KGJlc3IucDFf
aF9hY2N1bV9pbml0KTsKICAgICgqKCh2b2xhdGlsZSB1aW50MzJfdCopKCgodWludDMyX3QpKHJh
ZGVvbl9tbWlvX2Jhc2UpKSsoMHgwNDhDKSkpKT0oYmVzci5wMjNfaF9hY2N1bV9pbml0KTsKICAg
ICgqKCh2b2xhdGlsZSB1aW50MzJfdCopKCgodWludDMyX3QpKHJhZGVvbl9tbWlvX2Jhc2UpKSso
MHgwNDJDKSkpKT0oYmVzci5wMjNfdl9hY2N1bV9pbml0KTsKCiAgICBiZXNfZmxhZ3MgPSAweDQw
MDAwMDAwTCB8CiAgICAgICAgICAgICAgICAweDAwMDA4MDAwTCB8CiAgICAgICAgICAgICAgICAw
eDAwMDAwMDAyTCB8CiAgICAgICAgICAgICAgICAweDAwMDAwMDAxTDsKICAgIGlmKGJlc3IuZG91
YmxlX2J1ZmYpIGJlc19mbGFncyB8PSAweDAxMDAwMDAwTDsKICAgIGlmKGJlc3IuZGVpbnRlcmxh
Y2Vfb24pIGJlc19mbGFncyB8PSAweDAwMDAxMDAwTDsKICAgIGlmKGJlc3IuaG9yel9waWNrX25l
YXJlc3QpIGJlc19mbGFncyB8PSAweDAwMDAwMDAzTDsKICAgIGlmKGJlc3IudmVydF9waWNrX25l
YXJlc3QpIGJlc19mbGFncyB8PSAweDAwMDAwMDA0TDsKCiAgICBiZXNfZmxhZ3MgfD0gMHgwMGZm
MDAwMEw7CgogICAgYmVzX2ZsYWdzIHw9IChiZXNyLnN1cmZfaWQgPDwgOCkgJiAweDAwMDAwZjAw
TDsKICAgIGlmKGJlc3IubG9hZF9wcmdfc3RhcnQpIGJlc19mbGFncyB8PSAweDEwMDAwMDAwTDsK
ICAgICgqKCh2b2xhdGlsZSB1aW50MzJfdCopKCgodWludDMyX3QpKHJhZGVvbl9tbWlvX2Jhc2Up
KSsoMHgwNDIwKSkpKT0oYmVzX2ZsYWdzKTsKCgoKCgoKCiAgICBfcmFkZW9uX2ZpZm9fd2FpdCg2
KTsKICAgICgqKCh2b2xhdGlsZSB1aW50MzJfdCopKCgodWludDMyX3QpKHJhZGVvbl9tbWlvX2Jh
c2UpKSsoMHgwNEEwKSkpKT0oYmVzci5maWx0ZXJfY250bCk7CiAgICAoKigodm9sYXRpbGUgdWlu
dDMyX3QqKSgoKHVpbnQzMl90KShyYWRlb25fbW1pb19iYXNlKSkrKDB4MDRCMCkpKSk9KGJlc3Iu
Zm91cl90YXBfY29lZmZbMF0pOwogICAgKCooKHZvbGF0aWxlIHVpbnQzMl90KikoKCh1aW50MzJf
dCkocmFkZW9uX21taW9fYmFzZSkpKygweDA0QjQpKSkpPShiZXNyLmZvdXJfdGFwX2NvZWZmWzFd
KTsKICAgICgqKCh2b2xhdGlsZSB1aW50MzJfdCopKCgodWludDMyX3QpKHJhZGVvbl9tbWlvX2Jh
c2UpKSsoMHgwNEI4KSkpKT0oYmVzci5mb3VyX3RhcF9jb2VmZlsyXSk7CiAgICAoKigodm9sYXRp
bGUgdWludDMyX3QqKSgoKHVpbnQzMl90KShyYWRlb25fbW1pb19iYXNlKSkrKDB4MDRCQykpKSk9
KGJlc3IuZm91cl90YXBfY29lZmZbM10pOwogICAgKCooKHZvbGF0aWxlIHVpbnQzMl90KikoKCh1
aW50MzJfdCkocmFkZW9uX21taW9fYmFzZSkpKygweDA0QzApKSkpPShiZXNyLmZvdXJfdGFwX2Nv
ZWZmWzRdKTsKICAgIGlmKGJlc3Iuc3dhcF91dikgKCooKHZvbGF0aWxlIHVpbnQzMl90KikoKCh1
aW50MzJfdCkocmFkZW9uX21taW9fYmFzZSkpKygweDA0RjgpKSkpPShJTlJFRygweDA0RjgpfDB4
MDAwMDAwMjBMKTsKICAgICgqKCh2b2xhdGlsZSB1aW50MzJfdCopKCgodWludDMyX3QpKHJhZGVv
bl9tbWlvX2Jhc2UpKSsoMHgwNDEwKSkpKT0oMCk7CiAgICBpZihfX3ZlcmJvc2UgPiAwKSBwcmlu
dGYoInJhZ2UxMjhfdmlkOiIid2Ugd2FudGVkOiBzY2FsZXI9JTA4WFxuIixiZXNfZmxhZ3MpOwog
ICAgaWYoX192ZXJib3NlID4gMCkgcmFkZW9uX3ZpZF9kdW1wX3JlZ3MoKTsKfQoKCgoKCnN0YXRp
YyB2b2lkIHJhZGVvbl92aWRfZXhjbHVzaXZlKCB2b2lkICkKewoKCiAgICB1bnNpZ25lZCBzY3Jl
ZW53LHNjcmVlbmg7CiAgICBzY3JlZW53ID0gcmFkZW9uX2dldF94cmVzKCk7CiAgICBzY3JlZW5o
ID0gcmFkZW9uX2dldF95cmVzKCk7CiAgICBfcmFkZW9uX2ZpZm9fd2FpdCgyKTsKICAgICgqKCh2
b2xhdGlsZSB1aW50MzJfdCopKCgodWludDMyX3QpKHJhZGVvbl9tbWlvX2Jhc2UpKSsoMHgwNDBD
KSkpKT0oKCgoc2NyZWVuaC0xKTw8MTYpJjB4MDNmZjAwMDApKTsKICAgICgqKCh2b2xhdGlsZSB1
aW50MzJfdCopKCgodWludDMyX3QpKHJhZGVvbl9tbWlvX2Jhc2UpKSsoMHgwNDA4KSkpKT0oKCgo
c2NyZWVudy84KzEpPDw4KSYweDAwMDBmZjAwKXwweDgwMDAwMDAwKTsKfQoKc3RhdGljIHZvaWQg
cmFkZW9uX3ZpZF9ub25fZXhjbHVzaXZlKCB2b2lkICkKewogICAgKCooKHZvbGF0aWxlIHVpbnQz
Ml90KikoKCh1aW50MzJfdCkocmFkZW9uX21taW9fYmFzZSkpKygweDA0MDgpKSkpPSgwKTsKfQoK
CnN0YXRpYyB1bnNpZ25lZCByYWRlb25fcXVlcnlfcGl0Y2godW5zaWduZWQgZm91cmNjLGNvbnN0
IHZpZGl4X3l1dl90ICpzcGl0Y2gpCnsKICB1bnNpZ25lZCBwaXRjaCxzcHksc3B2LHNwdTsKICBz
cHkgPSBzcHYgPSBzcHUgPSAwOwogIHN3aXRjaChzcGl0Y2gtPnkpCiAgewogICAgY2FzZSAxNjoK
ICAgIGNhc2UgMzI6CiAgICBjYXNlIDY0OgogICAgY2FzZSAxMjg6CiAgICBjYXNlIDI1Njogc3B5
ID0gc3BpdGNoLT55OyBicmVhazsKICAgIGRlZmF1bHQ6IGJyZWFrOwogIH0KICBzd2l0Y2goc3Bp
dGNoLT51KQogIHsKICAgIGNhc2UgMTY6CiAgICBjYXNlIDMyOgogICAgY2FzZSA2NDoKICAgIGNh
c2UgMTI4OgogICAgY2FzZSAyNTY6IHNwdSA9IHNwaXRjaC0+dTsgYnJlYWs7CiAgICBkZWZhdWx0
OiBicmVhazsKICB9CiAgc3dpdGNoKHNwaXRjaC0+dikKICB7CiAgICBjYXNlIDE2OgogICAgY2Fz
ZSAzMjoKICAgIGNhc2UgNjQ6CiAgICBjYXNlIDEyODoKICAgIGNhc2UgMjU2OiBzcHYgPSBzcGl0
Y2gtPnY7IGJyZWFrOwogICAgZGVmYXVsdDogYnJlYWs7CiAgfQogIHN3aXRjaChmb3VyY2MpCiAg
ewoKICAgICAgICBjYXNlICgoKHVuc2lnbmVkKSgnSScpPDwwKXwoKHVuc2lnbmVkKSgnWScpPDw4
KXwoKHVuc2lnbmVkKSgnVScpPDwxNil8KCh1bnNpZ25lZCkoJ1YnKTw8MjQpKToKICAgICAgICBj
YXNlICgoKHVuc2lnbmVkKSgnWScpPDwwKXwoKHVuc2lnbmVkKSgnVicpPDw4KXwoKHVuc2lnbmVk
KSgnMScpPDwxNil8KCh1bnNpZ25lZCkoJzInKTw8MjQpKToKICAgICAgICBjYXNlICgoKHVuc2ln
bmVkKSgnSScpPDwwKXwoKHVuc2lnbmVkKSgnNCcpPDw4KXwoKHVuc2lnbmVkKSgnMicpPDwxNil8
KCh1bnNpZ25lZCkoJzAnKTw8MjQpKToKICAgICAgICAgICAgICAgIGlmKHNweSA+IDE2ICYmIHNw
dSA9PSBzcHkvMiAmJiBzcHYgPT0gc3B5LzIpIHBpdGNoID0gc3B5OwogICAgICAgICAgICAgICAg
ZWxzZSBwaXRjaCA9IDMyOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAoKCh1
bnNpZ25lZCkoJ0knKTw8MCl8KCh1bnNpZ25lZCkoJ0YnKTw8OCl8KCh1bnNpZ25lZCkoJzAnKTw8
MTYpfCgodW5zaWduZWQpKCc5Jyk8PDI0KSk6CiAgICAgICAgY2FzZSAoKCh1bnNpZ25lZCkoJ1kn
KTw8MCl8KCh1bnNpZ25lZCkoJ1YnKTw8OCl8KCh1bnNpZ25lZCkoJ1UnKTw8MTYpfCgodW5zaWdu
ZWQpKCc5Jyk8PDI0KSk6CiAgICAgICAgICAgICAgICBpZihzcHkgPj0gNjQgJiYgc3B1ID09IHNw
eS80ICYmIHNwdiA9PSBzcHkvNCkgcGl0Y2ggPSBzcHk7CiAgICAgICAgICAgICAgICBlbHNlIHBp
dGNoID0gNjQ7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICBkZWZhdWx0OgogICAgICAg
ICAgICAgICAgaWYoc3B5ID49IDE2KSBwaXRjaCA9IHNweTsKICAgICAgICAgICAgICAgIGVsc2Ug
cGl0Y2ggPSAxNjsKICAgICAgICAgICAgICAgIGJyZWFrOwogIH0KICByZXR1cm4gcGl0Y2g7Cn0K
CnN0YXRpYyB2b2lkIENhbGNfSF9JTkNfU1RFUF9CWSAoCiAgICAgICAgaW50IGZpZWxkdmFsdWVf
T1YwX1NVUkZBQ0VfRk9STUFULAogICAgICAgIGRvdWJsZSBIX3NjYWxlX3JhdGlvLAogICAgICAg
IGludCBEaXNhbGxvd0ZvdXJUYXBWZXJ0RmlsdGVyaW5nLAogICAgICAgIGludCBEaXNhbGxvd0Zv
dXJUYXBVVlZlcnRGaWx0ZXJpbmcsCiAgICAgICAgdWludDMyX3QgKnZhbF9PVjBfUDFfSF9JTkMs
CiAgICAgICAgdWludDMyX3QgKnZhbF9PVjBfUDFfSF9TVEVQX0JZLAogICAgICAgIHVpbnQzMl90
ICp2YWxfT1YwX1AyM19IX0lOQywKICAgICAgICB1aW50MzJfdCAqdmFsX09WMF9QMjNfSF9TVEVQ
X0JZLAogICAgICAgIGludCAqUDFHcm91cFNpemUsCiAgICAgICAgaW50ICpQMVN0ZXBTaXplLAog
ICAgICAgIGludCAqUDIzU3RlcFNpemUgKQp7CgogICAgZG91YmxlIENsb2Nrc05lZWRlZEZvcjE2
UGl4ZWxzOwoKICAgIHN3aXRjaCAoZmllbGR2YWx1ZV9PVjBfU1VSRkFDRV9GT1JNQVQpCiAgICB7
CiAgICAgICAgY2FzZSAzOgogICAgICAgIGNhc2UgNDoKCiAgICAgICAgICAgICpQMUdyb3VwU2l6
ZSA9IDI7CgoKICAgICAgICAgICAgaWYgKEhfc2NhbGVfcmF0aW8+PS41KQogICAgICAgICAgICB7
CgoKICAgICAgICAgICAgICAgICp2YWxfT1YwX1AxX0hfSU5DID0gKHVpbnQxNl90KSgoMS8oSF9z
Y2FsZV9yYXRpbykpICogKDE8PDB4YykgKyAwLjUpOwogICAgICAgICAgICAgICAgKnZhbF9PVjBf
UDFfSF9TVEVQX0JZID0gMTsKICAgICAgICAgICAgICAgICp2YWxfT1YwX1AyM19IX0lOQyA9ICh1
aW50MTZfdCkoKDEvKEhfc2NhbGVfcmF0aW8pKSAqICgxPDwweGMpICsgMC41KTsKICAgICAgICAg
ICAgICAgICp2YWxfT1YwX1AyM19IX1NURVBfQlkgPSAxOwogICAgICAgICAgICAgICAgKlAxU3Rl
cFNpemUgPSAxOwogICAgICAgICAgICAgICAgKlAyM1N0ZXBTaXplID0gMTsKICAgICAgICAgICAg
fQogICAgICAgICAgICBlbHNlIGlmIChIX3NjYWxlX3JhdGlvPj0uMjUpCiAgICAgICAgICAgIHsK
CiAgICAgICAgICAgICAgICAqdmFsX09WMF9QMV9IX0lOQyA9ICh1aW50MTZfdCkoKDEvKEhfc2Nh
bGVfcmF0aW8qMikpICogKDE8PDB4YykgKyAwLjUpOwogICAgICAgICAgICAgICAgKnZhbF9PVjBf
UDFfSF9TVEVQX0JZID0gMjsKICAgICAgICAgICAgICAgICp2YWxfT1YwX1AyM19IX0lOQyA9ICh1
aW50MTZfdCkoKDEvKEhfc2NhbGVfcmF0aW8qMikpICogKDE8PDB4YykgKyAwLjUpOwogICAgICAg
ICAgICAgICAgKnZhbF9PVjBfUDIzX0hfU1RFUF9CWSA9IDI7CiAgICAgICAgICAgICAgICAqUDFT
dGVwU2l6ZSA9IDI7CiAgICAgICAgICAgICAgICAqUDIzU3RlcFNpemUgPSAyOwogICAgICAgICAg
ICB9CiAgICAgICAgICAgIGVsc2UgaWYgKEhfc2NhbGVfcmF0aW8+PS4xMjUpCiAgICAgICAgICAg
IHsKCiAgICAgICAgICAgICAgICAqdmFsX09WMF9QMV9IX0lOQyA9ICh1aW50MTZfdCkoKDEvKEhf
c2NhbGVfcmF0aW8qNCkpICogKDE8PDB4YykgKyAwLjUpOwogICAgICAgICAgICAgICAgKnZhbF9P
VjBfUDFfSF9TVEVQX0JZID0gMzsKICAgICAgICAgICAgICAgICp2YWxfT1YwX1AyM19IX0lOQyA9
ICh1aW50MTZfdCkoKDEvKEhfc2NhbGVfcmF0aW8qNCkpICogKDE8PDB4YykgKyAwLjUpOwogICAg
ICAgICAgICAgICAgKnZhbF9PVjBfUDIzX0hfU1RFUF9CWSA9IDM7CiAgICAgICAgICAgICAgICAq
UDFTdGVwU2l6ZSA9IDQ7CiAgICAgICAgICAgICAgICAqUDIzU3RlcFNpemUgPSA0OwogICAgICAg
ICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYgKEhfc2NhbGVfcmF0aW8+PS4wNjI1KQogICAgICAg
ICAgICB7CgogICAgICAgICAgICAgICAgKnZhbF9PVjBfUDFfSF9JTkMgPSAodWludDE2X3QpKCgx
LyhIX3NjYWxlX3JhdGlvKjgpKSAqICgxPDwweGMpICsgMC41KTsKICAgICAgICAgICAgICAgICp2
YWxfT1YwX1AxX0hfU1RFUF9CWSA9IDQ7CiAgICAgICAgICAgICAgICAqdmFsX09WMF9QMjNfSF9J
TkMgPSAodWludDE2X3QpKCgxLyhIX3NjYWxlX3JhdGlvKjgpKSAqICgxPDwweGMpICsgMC41KTsK
ICAgICAgICAgICAgICAgICp2YWxfT1YwX1AyM19IX1NURVBfQlkgPSA0OwogICAgICAgICAgICAg
ICAgKlAxU3RlcFNpemUgPSA4OwogICAgICAgICAgICAgICAgKlAyM1N0ZXBTaXplID0gODsKICAg
ICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmIChIX3NjYWxlX3JhdGlvPj0wLjAzMTI1KQog
ICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgKnZhbF9PVjBfUDFfSF9JTkMgPSAodWludDE2
X3QpKCgxLyhIX3NjYWxlX3JhdGlvKjE2KSkgKiAoMTw8MHhjKSArIDAuNSk7CiAgICAgICAgICAg
ICAgICAqdmFsX09WMF9QMV9IX1NURVBfQlkgPSA1OwogICAgICAgICAgICAgICAgKnZhbF9PVjBf
UDIzX0hfSU5DID0gKHVpbnQxNl90KSgoMS8oSF9zY2FsZV9yYXRpbyoxNikpICogKDE8PDB4Yykg
KyAwLjUpOwogICAgICAgICAgICAgICAgKnZhbF9PVjBfUDIzX0hfU1RFUF9CWSA9IDU7CiAgICAg
ICAgICAgICAgICAqUDFTdGVwU2l6ZSA9IDE2OwogICAgICAgICAgICAgICAgKlAyM1N0ZXBTaXpl
ID0gMTY7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZQogICAgICAgICAgICB7CiAgICAg
ICAgICAgICAgICBIX3NjYWxlX3JhdGlvPTAuMDMxMjU7CiAgICAgICAgICAgICAgICAqdmFsX09W
MF9QMV9IX0lOQyA9ICh1aW50MTZfdCkoKDEvKEhfc2NhbGVfcmF0aW8qMTYpKSAqICgxPDwweGMp
ICsgMC41KTsKICAgICAgICAgICAgICAgICp2YWxfT1YwX1AxX0hfU1RFUF9CWSA9IDU7CiAgICAg
ICAgICAgICAgICAqdmFsX09WMF9QMjNfSF9JTkMgPSAodWludDE2X3QpKCgxLyhIX3NjYWxlX3Jh
dGlvKjE2KSkgKiAoMTw8MHhjKSArIDAuNSk7CiAgICAgICAgICAgICAgICAqdmFsX09WMF9QMjNf
SF9TVEVQX0JZID0gNTsKICAgICAgICAgICAgICAgICpQMVN0ZXBTaXplID0gMTY7CiAgICAgICAg
ICAgICAgICAqUDIzU3RlcFNpemUgPSAxNjsKICAgICAgICAgICAgfQogICAgICAgICAgICBicmVh
azsKICAgICAgICBjYXNlIDY6CiAgICAgICAgICAgIGlmIChIX3NjYWxlX3JhdGlvPj0xLjUgJiYg
IURpc2FsbG93Rm91clRhcFZlcnRGaWx0ZXJpbmcpCiAgICAgICAgICAgIHsKCiAgICAgICAgICAg
ICAgICAqUDFHcm91cFNpemUgPSAyOwoKCiAgICAgICAgICAgICAgICAqdmFsX09WMF9QMV9IX0lO
QyA9ICh1aW50MTZfdCkoKDEvKEhfc2NhbGVfcmF0aW8pKSAqICgxPDwweGMpICsgMC41KTsKICAg
ICAgICAgICAgICAgICp2YWxfT1YwX1AxX0hfU1RFUF9CWSA9IDA7CiAgICAgICAgICAgICAgICAq
dmFsX09WMF9QMjNfSF9JTkMgPSAodWludDE2X3QpKCgxLyhIX3NjYWxlX3JhdGlvKSkgKiAoMTw8
MHhjKSArIDAuNSk7CiAgICAgICAgICAgICAgICAqdmFsX09WMF9QMjNfSF9TVEVQX0JZID0gMDsK
ICAgICAgICAgICAgICAgICpQMVN0ZXBTaXplID0gMTsKICAgICAgICAgICAgICAgICpQMjNTdGVw
U2l6ZSA9IDE7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZiAoSF9zY2FsZV9yYXRp
bz49MC43NSkKICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgICpQMUdyb3VwU2l6ZSA9IDQ7
CgoKCiAgICAgICAgICAgICAgICAqdmFsX09WMF9QMV9IX0lOQyA9ICh1aW50MTZfdCkoKDEvKEhf
c2NhbGVfcmF0aW8pKSAqICgxPDwweGMpICsgMC41KTsKICAgICAgICAgICAgICAgICp2YWxfT1Yw
X1AxX0hfU1RFUF9CWSA9IDE7CiAgICAgICAgICAgICAgICAqdmFsX09WMF9QMjNfSF9JTkMgPSAo
dWludDE2X3QpKCgxLyhIX3NjYWxlX3JhdGlvKSkgKiAoMTw8MHhjKSArIDAuNSk7CiAgICAgICAg
ICAgICAgICAqdmFsX09WMF9QMjNfSF9TVEVQX0JZID0gMTsKICAgICAgICAgICAgICAgICpQMVN0
ZXBTaXplID0gMTsKICAgICAgICAgICAgICAgICpQMjNTdGVwU2l6ZSA9IDE7CiAgICAgICAgICAg
IH0KICAgICAgICAgICAgZWxzZSBpZiAoSF9zY2FsZV9yYXRpbz49MC4zNzUpCiAgICAgICAgICAg
IHsKCgogICAgICAgICAgICAgICAgKlAxR3JvdXBTaXplID0gNDsKCiAgICAgICAgICAgICAgICAq
dmFsX09WMF9QMV9IX0lOQyA9ICh1aW50MTZfdCkoKDEvKEhfc2NhbGVfcmF0aW8qMikpICogKDE8
PDB4YykgKyAwLjUpOwogICAgICAgICAgICAgICAgKnZhbF9PVjBfUDFfSF9TVEVQX0JZID0gMjsK
ICAgICAgICAgICAgICAgICp2YWxfT1YwX1AyM19IX0lOQyA9ICh1aW50MTZfdCkoKDEvKEhfc2Nh
bGVfcmF0aW8qMikpICogKDE8PDB4YykgKyAwLjUpOwogICAgICAgICAgICAgICAgKnZhbF9PVjBf
UDIzX0hfU1RFUF9CWSA9IDI7CiAgICAgICAgICAgICAgICAqUDFTdGVwU2l6ZSA9IDI7CiAgICAg
ICAgICAgICAgICAqUDIzU3RlcFNpemUgPSAyOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVs
c2UgaWYgKEhfc2NhbGVfcmF0aW8+PTAuMjUpCiAgICAgICAgICAgIHsKCgogICAgICAgICAgICAg
ICAgKlAxR3JvdXBTaXplID0gNDsKCiAgICAgICAgICAgICAgICAqdmFsX09WMF9QMV9IX0lOQyA9
ICh1aW50MTZfdCkoKDEvKEhfc2NhbGVfcmF0aW8qMikpICogKDE8PDB4YykgKyAwLjUpOwogICAg
ICAgICAgICAgICAgKnZhbF9PVjBfUDFfSF9TVEVQX0JZID0gMjsKICAgICAgICAgICAgICAgICp2
YWxfT1YwX1AyM19IX0lOQyA9ICh1aW50MTZfdCkoKDEvKEhfc2NhbGVfcmF0aW8qNCkpICogKDE8
PDB4YykgKyAwLjUpOwogICAgICAgICAgICAgICAgKnZhbF9PVjBfUDIzX0hfU1RFUF9CWSA9IDM7
CiAgICAgICAgICAgICAgICAqUDFTdGVwU2l6ZSA9IDI7CiAgICAgICAgICAgICAgICAqUDIzU3Rl
cFNpemUgPSA0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYgKEhfc2NhbGVfcmF0
aW8+PTAuMTg3NSkKICAgICAgICAgICAgewoKCiAgICAgICAgICAgICAgICAqUDFHcm91cFNpemUg
PSA0OwoKICAgICAgICAgICAgICAgICp2YWxfT1YwX1AxX0hfSU5DID0gKHVpbnQxNl90KSgoMS8o
SF9zY2FsZV9yYXRpbyo0KSkgKiAoMTw8MHhjKSArIDAuNSk7CiAgICAgICAgICAgICAgICAqdmFs
X09WMF9QMV9IX1NURVBfQlkgPSAzOwogICAgICAgICAgICAgICAgKnZhbF9PVjBfUDIzX0hfSU5D
ID0gKHVpbnQxNl90KSgoMS8oSF9zY2FsZV9yYXRpbyo0KSkgKiAoMTw8MHhjKSArIDAuNSk7CiAg
ICAgICAgICAgICAgICAqdmFsX09WMF9QMjNfSF9TVEVQX0JZID0gMzsKICAgICAgICAgICAgICAg
ICpQMVN0ZXBTaXplID0gNDsKICAgICAgICAgICAgICAgICpQMjNTdGVwU2l6ZSA9IDQ7CiAgICAg
ICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZiAoSF9zY2FsZV9yYXRpbz49MC4xMjUpCiAgICAg
ICAgICAgIHsKCgogICAgICAgICAgICAgICAgKlAxR3JvdXBTaXplID0gNDsKCiAgICAgICAgICAg
ICAgICAqdmFsX09WMF9QMV9IX0lOQyA9ICh1aW50MTZfdCkoKDEvKEhfc2NhbGVfcmF0aW8qNCkp
ICogKDE8PDB4YykgKyAwLjUpOwogICAgICAgICAgICAgICAgKnZhbF9PVjBfUDFfSF9TVEVQX0JZ
ID0gMzsKICAgICAgICAgICAgICAgICp2YWxfT1YwX1AyM19IX0lOQyA9ICh1aW50MTZfdCkoKDEv
KEhfc2NhbGVfcmF0aW8qOCkpICogKDE8PDB4YykgKyAwLjUpOwogICAgICAgICAgICAgICAgKnZh
bF9PVjBfUDIzX0hfU1RFUF9CWSA9IDQ7CiAgICAgICAgICAgICAgICAqUDFTdGVwU2l6ZSA9IDQ7
CiAgICAgICAgICAgICAgICAqUDIzU3RlcFNpemUgPSA4OwogICAgICAgICAgICB9CiAgICAgICAg
ICAgIGVsc2UgaWYgKEhfc2NhbGVfcmF0aW8+PTAuMDkzNzUpCiAgICAgICAgICAgIHsKCgogICAg
ICAgICAgICAgICAgKlAxR3JvdXBTaXplID0gNDsKCiAgICAgICAgICAgICAgICAqdmFsX09WMF9Q
MV9IX0lOQyA9ICh1aW50MTZfdCkoKDEvKEhfc2NhbGVfcmF0aW8qOCkpICogKDE8PDB4YykgKyAw
LjUpOwogICAgICAgICAgICAgICAgKnZhbF9PVjBfUDFfSF9TVEVQX0JZID0gNDsKICAgICAgICAg
ICAgICAgICp2YWxfT1YwX1AyM19IX0lOQyA9ICh1aW50MTZfdCkoKDEvKEhfc2NhbGVfcmF0aW8q
OCkpICogKDE8PDB4YykgKyAwLjUpOwogICAgICAgICAgICAgICAgKnZhbF9PVjBfUDIzX0hfU1RF
UF9CWSA9IDQ7CiAgICAgICAgICAgICAgICAqUDFTdGVwU2l6ZSA9IDg7CiAgICAgICAgICAgICAg
ICAqUDIzU3RlcFNpemUgPSA4OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYgKEhf
c2NhbGVfcmF0aW8+PTAuMDYyNSkKICAgICAgICAgICAgewoKCiAgICAgICAgICAgICAgICAqUDFH
cm91cFNpemUgPSA0OwoKICAgICAgICAgICAgICAgICp2YWxfT1YwX1AxX0hfSU5DID0gKHVpbnQx
Nl90KSgoMS8oSF9zY2FsZV9yYXRpbyoxNikpICogKDE8PDB4YykgKyAwLjUpOwogICAgICAgICAg
ICAgICAgKnZhbF9PVjBfUDFfSF9TVEVQX0JZID0gNTsKICAgICAgICAgICAgICAgICp2YWxfT1Yw
X1AyM19IX0lOQyA9ICh1aW50MTZfdCkoKDEvKEhfc2NhbGVfcmF0aW8qMTYpKSAqICgxPDwweGMp
ICsgMC41KTsKICAgICAgICAgICAgICAgICp2YWxfT1YwX1AyM19IX1NURVBfQlkgPSA1OwogICAg
ICAgICAgICAgICAgKlAxU3RlcFNpemUgPSAxNjsKICAgICAgICAgICAgICAgICpQMjNTdGVwU2l6
ZSA9IDE2OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgewogICAg
ICAgICAgICAgICAgSF9zY2FsZV9yYXRpbz0wLjA2MjU7CiAgICAgICAgICAgICAgICAqUDFHcm91
cFNpemUgPSA0OwogICAgICAgICAgICAgICAgKnZhbF9PVjBfUDFfSF9JTkMgPSAodWludDE2X3Qp
KCgxLyhIX3NjYWxlX3JhdGlvKjE2KSkgKiAoMTw8MHhjKSArIDAuNSk7CiAgICAgICAgICAgICAg
ICAqdmFsX09WMF9QMV9IX1NURVBfQlkgPSA1OwogICAgICAgICAgICAgICAgKnZhbF9PVjBfUDIz
X0hfSU5DID0gKHVpbnQxNl90KSgoMS8oSF9zY2FsZV9yYXRpbyoxNikpICogKDE8PDB4YykgKyAw
LjUpOwogICAgICAgICAgICAgICAgKnZhbF9PVjBfUDIzX0hfU1RFUF9CWSA9IDU7CiAgICAgICAg
ICAgICAgICAqUDFTdGVwU2l6ZSA9IDE2OwogICAgICAgICAgICAgICAgKlAyM1N0ZXBTaXplID0g
MTY7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSA5OgoKCiAg
ICAgICAgICAgIGlmICgoSF9zY2FsZV9yYXRpbz49KENsb2Nrc05lZWRlZEZvcjE2UGl4ZWxzPTgr
MisyKSAvIDE2LjApICYmCiAgICAgICAgICAgICAgICgodWludDE2X3QpKCgxLyhIX3NjYWxlX3Jh
dGlvKSkgKiAoMTw8MHhjKSArIDAuNSk8PTB4MzAwMCkgJiYKICAgICAgICAgICAgICAgKCh1aW50
MTZfdCkoKDEvKEhfc2NhbGVfcmF0aW8qNCkpICogKDE8PDB4YykgKyAwLjUpPD0weDIwMDApICYm
CiAgICAgICAgICAgICAgICFEaXNhbGxvd0ZvdXJUYXBWZXJ0RmlsdGVyaW5nICYmICFEaXNhbGxv
d0ZvdXJUYXBVVlZlcnRGaWx0ZXJpbmcpCiAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICAq
UDFHcm91cFNpemUgPSAyOwogICAgICAgICAgICAgICAgKnZhbF9PVjBfUDFfSF9JTkMgPSAodWlu
dDE2X3QpKCgxLyhIX3NjYWxlX3JhdGlvKSkgKiAoMTw8MHhjKSArIDAuNSk7CiAgICAgICAgICAg
ICAgICAqdmFsX09WMF9QMV9IX1NURVBfQlkgPSAwOwogICAgICAgICAgICAgICAgKnZhbF9PVjBf
UDIzX0hfSU5DID0gKHVpbnQxNl90KSgoMS8oSF9zY2FsZV9yYXRpbyo0KSkgKiAoMTw8MHhjKSAr
IDAuNSk7CiAgICAgICAgICAgICAgICAqdmFsX09WMF9QMjNfSF9TVEVQX0JZID0gMDsKICAgICAg
ICAgICAgICAgICpQMVN0ZXBTaXplID0gMTsKICAgICAgICAgICAgICAgICpQMjNTdGVwU2l6ZSA9
IDE7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGVsc2UgaWYgKChIX3NjYWxlX3JhdGlvPj0o
Q2xvY2tzTmVlZGVkRm9yMTZQaXhlbHM9NCsyKzIpIC8gMTYuMCkgJiYKICAgICAgICAgICAgICAg
ICAgICAoKHVpbnQxNl90KSgoMS8oSF9zY2FsZV9yYXRpbykpICogKDE8PDB4YykgKyAwLjUpPD0w
eDMwMDApICYmCiAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkoKDEvKEhfc2NhbGVfcmF0
aW8qNCkpICogKDE8PDB4YykgKyAwLjUpPD0weDIwMDApICYmCiAgICAgICAgICAgICAgICAgICAg
RGlzYWxsb3dGb3VyVGFwVmVydEZpbHRlcmluZyAmJiAhRGlzYWxsb3dGb3VyVGFwVVZWZXJ0Rmls
dGVyaW5nKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAqUDFHcm91cFNpemUgPSA0Owog
ICAgICAgICAgICAgICAgKnZhbF9PVjBfUDFfSF9JTkMgPSAodWludDE2X3QpKCgxLyhIX3NjYWxl
X3JhdGlvKSkgKiAoMTw8MHhjKSArIDAuNSk7CiAgICAgICAgICAgICAgICAqdmFsX09WMF9QMV9I
X1NURVBfQlkgPSAxOwogICAgICAgICAgICAgICAgKnZhbF9PVjBfUDIzX0hfSU5DID0gKHVpbnQx
Nl90KSgoMS8oSF9zY2FsZV9yYXRpbyo0KSkgKiAoMTw8MHhjKSArIDAuNSk7CiAgICAgICAgICAg
ICAgICAqdmFsX09WMF9QMjNfSF9TVEVQX0JZID0gMDsKICAgICAgICAgICAgICAgICpQMVN0ZXBT
aXplID0gMTsKICAgICAgICAgICAgICAgICpQMjNTdGVwU2l6ZSA9IDE7CiAgICAgICAgICAgIH0K
CgogICAgICAgICAgICBlbHNlIGlmICgoSF9zY2FsZV9yYXRpbz49KENsb2Nrc05lZWRlZEZvcjE2
UGl4ZWxzPTgrMSsxKSAvIDE2LjApICYmCiAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCko
KDEvKEhfc2NhbGVfcmF0aW8pKSAqICgxPDwweGMpICsgMC41KTw9MHgzMDAwKSAmJgogICAgICAg
ICAgICAgICAgICAgICgodWludDE2X3QpKCgxLyhIX3NjYWxlX3JhdGlvKjQpKSAqICgxPDwweGMp
ICsgMC41KTw9MHgyMDAwKSAmJgogICAgICAgICAgICAgICAgICAgICFEaXNhbGxvd0ZvdXJUYXBW
ZXJ0RmlsdGVyaW5nKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAqUDFHcm91cFNpemUg
PSAyOwogICAgICAgICAgICAgICAgKnZhbF9PVjBfUDFfSF9JTkMgPSAodWludDE2X3QpKCgxLyhI
X3NjYWxlX3JhdGlvKSkgKiAoMTw8MHhjKSArIDAuNSk7CiAgICAgICAgICAgICAgICAqdmFsX09W
MF9QMV9IX1NURVBfQlkgPSAwOwogICAgICAgICAgICAgICAgKnZhbF9PVjBfUDIzX0hfSU5DID0g
KHVpbnQxNl90KSgoMS8oSF9zY2FsZV9yYXRpbyo0KSkgKiAoMTw8MHhjKSArIDAuNSk7CiAgICAg
ICAgICAgICAgICAqdmFsX09WMF9QMjNfSF9TVEVQX0JZID0gMTsKICAgICAgICAgICAgICAgICpQ
MVN0ZXBTaXplID0gMTsKICAgICAgICAgICAgICAgICpQMjNTdGVwU2l6ZSA9IDE7CiAgICAgICAg
ICAgIH0KCiAgICAgICAgICAgIGVsc2UgaWYgKChIX3NjYWxlX3JhdGlvPj0oQ2xvY2tzTmVlZGVk
Rm9yMTZQaXhlbHM9NCsxKzEpIC8gMTYuMCkgJiYKICAgICAgICAgICAgICAgICAgICAoKHVpbnQx
Nl90KSgoMS8oSF9zY2FsZV9yYXRpbykpICogKDE8PDB4YykgKyAwLjUpPD0weDMwMDApICYmCiAg
ICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkoKDEvKEhfc2NhbGVfcmF0aW8qNCkpICogKDE8
PDB4YykgKyAwLjUpPD0weDIwMDApKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAqUDFH
cm91cFNpemUgPSA0OwogICAgICAgICAgICAgICAgKnZhbF9PVjBfUDFfSF9JTkMgPSAodWludDE2
X3QpKCgxLyhIX3NjYWxlX3JhdGlvKSkgKiAoMTw8MHhjKSArIDAuNSk7CiAgICAgICAgICAgICAg
ICAqdmFsX09WMF9QMV9IX1NURVBfQlkgPSAxOwogICAgICAgICAgICAgICAgKnZhbF9PVjBfUDIz
X0hfSU5DID0gKHVpbnQxNl90KSgoMS8oSF9zY2FsZV9yYXRpbyo0KSkgKiAoMTw8MHhjKSArIDAu
NSk7CiAgICAgICAgICAgICAgICAqdmFsX09WMF9QMjNfSF9TVEVQX0JZID0gMTsKICAgICAgICAg
ICAgICAgICpQMVN0ZXBTaXplID0gMTsKICAgICAgICAgICAgICAgICpQMjNTdGVwU2l6ZSA9IDE7
CiAgICAgICAgICAgIH0KCgogICAgICAgICAgICBlbHNlIGlmICgoSF9zY2FsZV9yYXRpbz49KENs
b2Nrc05lZWRlZEZvcjE2UGl4ZWxzPTQrLjUrLjUpIC8gMTYuMCkgJiYKICAgICAgICAgICAgICAg
ICAgICAoKHVpbnQxNl90KSgoMS8oSF9zY2FsZV9yYXRpbykpICogKDE8PDB4YykgKyAwLjUpPD0w
eDMwMDApICYmCiAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkoKDEvKEhfc2NhbGVfcmF0
aW8qNCoyKSkgKiAoMTw8MHhjKSArIDAuNSk8PTB4MjAwMCkpCiAgICAgICAgICAgIHsKICAgICAg
ICAgICAgICAgICpQMUdyb3VwU2l6ZSA9IDQ7CiAgICAgICAgICAgICAgICAqdmFsX09WMF9QMV9I
X0lOQyA9ICh1aW50MTZfdCkoKDEvKEhfc2NhbGVfcmF0aW8pKSAqICgxPDwweGMpICsgMC41KTsK
ICAgICAgICAgICAgICAgICp2YWxfT1YwX1AxX0hfU1RFUF9CWSA9IDE7CiAgICAgICAgICAgICAg
ICAqdmFsX09WMF9QMjNfSF9JTkMgPSAodWludDE2X3QpKCgxLyhIX3NjYWxlX3JhdGlvKjQqMikp
ICogKDE8PDB4YykgKyAwLjUpOwogICAgICAgICAgICAgICAgKnZhbF9PVjBfUDIzX0hfU1RFUF9C
WSA9IDI7CiAgICAgICAgICAgICAgICAqUDFTdGVwU2l6ZSA9IDE7CiAgICAgICAgICAgICAgICAq
UDIzU3RlcFNpemUgPSAyOwogICAgICAgICAgICB9CgogICAgICAgICAgICBlbHNlIGlmICgoSF9z
Y2FsZV9yYXRpbz49KENsb2Nrc05lZWRlZEZvcjE2UGl4ZWxzPTIrLjUrLjUpIC8gMTYuMCkgJiYK
ICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KSgoMS8oSF9zY2FsZV9yYXRpbyoyKSkgKiAo
MTw8MHhjKSArIDAuNSk8PTB4MzAwMCkgJiYKICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90
KSgoMS8oSF9zY2FsZV9yYXRpbyo0KjIpKSAqICgxPDwweGMpICsgMC41KTw9MHgyMDAwKSkKICAg
ICAgICAgICAgewogICAgICAgICAgICAgICAgKlAxR3JvdXBTaXplID0gNDsKICAgICAgICAgICAg
ICAgICp2YWxfT1YwX1AxX0hfSU5DID0gKHVpbnQxNl90KSgoMS8oSF9zY2FsZV9yYXRpbyoyKSkg
KiAoMTw8MHhjKSArIDAuNSk7CiAgICAgICAgICAgICAgICAqdmFsX09WMF9QMV9IX1NURVBfQlkg
PSAyOwogICAgICAgICAgICAgICAgKnZhbF9PVjBfUDIzX0hfSU5DID0gKHVpbnQxNl90KSgoMS8o
SF9zY2FsZV9yYXRpbyo0KjIpKSAqICgxPDwweGMpICsgMC41KTsKICAgICAgICAgICAgICAgICp2
YWxfT1YwX1AyM19IX1NURVBfQlkgPSAyOwogICAgICAgICAgICAgICAgKlAxU3RlcFNpemUgPSAy
OwogICAgICAgICAgICAgICAgKlAyM1N0ZXBTaXplID0gMjsKICAgICAgICAgICAgfQoKICAgICAg
ICAgICAgZWxzZSBpZiAoKEhfc2NhbGVfcmF0aW8+PShDbG9ja3NOZWVkZWRGb3IxNlBpeGVscz0y
Ky4yNSsuMjUpIC8gMTYuMCkgJiYKICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KSgoMS8o
SF9zY2FsZV9yYXRpbykpICogKDE8PDB4YykgKyAwLjUpPD0weDMwMDApICYmCiAgICAgICAgICAg
ICAgICAgICAgKCh1aW50MTZfdCkoKDEvKEhfc2NhbGVfcmF0aW8qNCo0KSkgKiAoMTw8MHhjKSAr
IDAuNSk8PTB4MjAwMCkpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICpQMUdyb3VwU2l6
ZSA9IDQ7CiAgICAgICAgICAgICAgICAqdmFsX09WMF9QMV9IX0lOQyA9ICh1aW50MTZfdCkoKDEv
KEhfc2NhbGVfcmF0aW8qMikpICogKDE8PDB4YykgKyAwLjUpOwogICAgICAgICAgICAgICAgKnZh
bF9PVjBfUDFfSF9TVEVQX0JZID0gMjsKICAgICAgICAgICAgICAgICp2YWxfT1YwX1AyM19IX0lO
QyA9ICh1aW50MTZfdCkoKDEvKEhfc2NhbGVfcmF0aW8qNCo0KSkgKiAoMTw8MHhjKSArIDAuNSk7
CiAgICAgICAgICAgICAgICAqdmFsX09WMF9QMjNfSF9TVEVQX0JZID0gMzsKICAgICAgICAgICAg
ICAgICpQMVN0ZXBTaXplID0gMjsKICAgICAgICAgICAgICAgICpQMjNTdGVwU2l6ZSA9IDQ7CiAg
ICAgICAgICAgIH0KCiAgICAgICAgICAgIGVsc2UgaWYgKChIX3NjYWxlX3JhdGlvPj0oQ2xvY2tz
TmVlZGVkRm9yMTZQaXhlbHM9MSsuMjUrLjI1KSAvIDE2LjApICYmCiAgICAgICAgICAgICAgICAg
ICAgKCh1aW50MTZfdCkoKDEvKEhfc2NhbGVfcmF0aW8qNCkpICogKDE8PDB4YykgKyAwLjUpPD0w
eDMwMDApICYmCiAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkoKDEvKEhfc2NhbGVfcmF0
aW8qNCo0KSkgKiAoMTw8MHhjKSArIDAuNSk8PTB4MjAwMCkpCiAgICAgICAgICAgIHsKICAgICAg
ICAgICAgICAgICpQMUdyb3VwU2l6ZSA9IDQ7CiAgICAgICAgICAgICAgICAqdmFsX09WMF9QMV9I
X0lOQyA9ICh1aW50MTZfdCkoKDEvKEhfc2NhbGVfcmF0aW8qNCkpICogKDE8PDB4YykgKyAwLjUp
OwogICAgICAgICAgICAgICAgKnZhbF9PVjBfUDFfSF9TVEVQX0JZID0gMzsKICAgICAgICAgICAg
ICAgICp2YWxfT1YwX1AyM19IX0lOQyA9ICh1aW50MTZfdCkoKDEvKEhfc2NhbGVfcmF0aW8qNCo0
KSkgKiAoMTw8MHhjKSArIDAuNSk7CiAgICAgICAgICAgICAgICAqdmFsX09WMF9QMjNfSF9TVEVQ
X0JZID0gMzsKICAgICAgICAgICAgICAgICpQMVN0ZXBTaXplID0gNDsKICAgICAgICAgICAgICAg
ICpQMjNTdGVwU2l6ZSA9IDQ7CiAgICAgICAgICAgIH0KCgoKICAgICAgICAgICAgZWxzZSBpZiAo
KEhfc2NhbGVfcmF0aW8+PShDbG9ja3NOZWVkZWRGb3IxNlBpeGVscz0uNSsuMTI1Ky4xMjUpIC8g
MTYuMCkgJiYKICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KSgoMS8oSF9zY2FsZV9yYXRp
byo4KSkgKiAoMTw8MHhjKSArIDAuNSk8PTB4MzAwMCkgJiYKICAgICAgICAgICAgICAgICAgICAo
KHVpbnQxNl90KSgoMS8oSF9zY2FsZV9yYXRpbyo0KjgpKSAqICgxPDwweGMpICsgMC41KTw9MHgy
MDAwKSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgKlAxR3JvdXBTaXplID0gNDsKICAg
ICAgICAgICAgICAgICp2YWxfT1YwX1AxX0hfSU5DID0gKHVpbnQxNl90KSgoMS8oSF9zY2FsZV9y
YXRpbyo4KSkgKiAoMTw8MHhjKSArIDAuNSk7CiAgICAgICAgICAgICAgICAqdmFsX09WMF9QMV9I
X1NURVBfQlkgPSA0OwogICAgICAgICAgICAgICAgKnZhbF9PVjBfUDIzX0hfSU5DID0gKHVpbnQx
Nl90KSgoMS8oSF9zY2FsZV9yYXRpbyo0KjgpKSAqICgxPDwweGMpICsgMC41KTsKICAgICAgICAg
ICAgICAgICp2YWxfT1YwX1AyM19IX1NURVBfQlkgPSA0OwogICAgICAgICAgICAgICAgKlAxU3Rl
cFNpemUgPSA4OwogICAgICAgICAgICAgICAgKlAyM1N0ZXBTaXplID0gODsKICAgICAgICAgICAg
fQoKICAgICAgICAgICAgZWxzZSBpZiAoKEhfc2NhbGVfcmF0aW8+PShDbG9ja3NOZWVkZWRGb3Ix
NlBpeGVscz0uNSsuMDYyNSsuMDYyNSkgLyAxNi4wKSAmJgogICAgICAgICAgICAoKHVpbnQxNl90
KSgoMS8oSF9zY2FsZV9yYXRpbyo4KSkgKiAoMTw8MHhjKSArIDAuNSk8PTB4MzAwMCkgJiYKICAg
ICAgICAgICAgKCh1aW50MTZfdCkoKDEvKEhfc2NhbGVfcmF0aW8qNCoxNikpICogKDE8PDB4Yykg
KyAwLjUpPD0weDIwMDApKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAqUDFHcm91cFNp
emUgPSA0OwogICAgICAgICAgICAgICAgKnZhbF9PVjBfUDFfSF9JTkMgPSAodWludDE2X3QpKCgx
LyhIX3NjYWxlX3JhdGlvKjgpKSAqICgxPDwweGMpICsgMC41KTsKICAgICAgICAgICAgICAgICp2
YWxfT1YwX1AxX0hfU1RFUF9CWSA9IDQ7CiAgICAgICAgICAgICAgICAqdmFsX09WMF9QMjNfSF9J
TkMgPSAodWludDE2X3QpKCgxLyhIX3NjYWxlX3JhdGlvKjQqMTYpKSAqICgxPDwweGMpICsgMC41
KTsKICAgICAgICAgICAgICAgICp2YWxfT1YwX1AyM19IX1NURVBfQlkgPSA1OwogICAgICAgICAg
ICAgICAgKlAxU3RlcFNpemUgPSA4OwogICAgICAgICAgICAgICAgKlAyM1N0ZXBTaXplID0gMTY7
CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGVsc2UgaWYgKChIX3NjYWxlX3JhdGlvPj0oQ2xv
Y2tzTmVlZGVkRm9yMTZQaXhlbHM9LjI1Ky4wNjI1Ky4wNjI1KSAvIDE2LjApICYmCiAgICAgICAg
ICAgICAgICAgICAgKCh1aW50MTZfdCkoKDEvKEhfc2NhbGVfcmF0aW8qMTYpKSAqICgxPDwweGMp
ICsgMC41KTw9MHgzMDAwKSAmJgogICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpKCgxLyhI
X3NjYWxlX3JhdGlvKjQqMTYpKSAqICgxPDwweGMpICsgMC41KTw9MHgyMDAwKSkKICAgICAgICAg
ICAgewogICAgICAgICAgICAgICAgKlAxR3JvdXBTaXplID0gNDsKICAgICAgICAgICAgICAgICp2
YWxfT1YwX1AxX0hfSU5DID0gKHVpbnQxNl90KSgoMS8oSF9zY2FsZV9yYXRpbyoxNikpICogKDE8
PDB4YykgKyAwLjUpOwogICAgICAgICAgICAgICAgKnZhbF9PVjBfUDFfSF9TVEVQX0JZID0gNTsK
ICAgICAgICAgICAgICAgICp2YWxfT1YwX1AyM19IX0lOQyA9ICh1aW50MTZfdCkoKDEvKEhfc2Nh
bGVfcmF0aW8qNCoxNikpICogKDE8PDB4YykgKyAwLjUpOwogICAgICAgICAgICAgICAgKnZhbF9P
VjBfUDIzX0hfU1RFUF9CWSA9IDU7CiAgICAgICAgICAgICAgICAqUDFTdGVwU2l6ZSA9IDE2Owog
ICAgICAgICAgICAgICAgKlAyM1N0ZXBTaXplID0gMTY7CiAgICAgICAgICAgIH0KICAgICAgICAg
ICAgZWxzZQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBIX3NjYWxlX3JhdGlvPShDbG9j
a3NOZWVkZWRGb3IxNlBpeGVscz0uMjUrLjA2MjUrLjA2MjUpIC8gMTY7CiAgICAgICAgICAgICAg
ICAqUDFHcm91cFNpemUgPSA0OwogICAgICAgICAgICAgICAgKnZhbF9PVjBfUDFfSF9JTkMgPSAo
dWludDE2X3QpKCgxLyhIX3NjYWxlX3JhdGlvKjE2KSkgKiAoMTw8MHhjKSArIDAuNSk7CiAgICAg
ICAgICAgICAgICAqdmFsX09WMF9QMV9IX1NURVBfQlkgPSA1OwogICAgICAgICAgICAgICAgKnZh
bF9PVjBfUDIzX0hfSU5DID0gKHVpbnQxNl90KSgoMS8oSF9zY2FsZV9yYXRpbyo0KjE2KSkgKiAo
MTw8MHhjKSArIDAuNSk7CiAgICAgICAgICAgICAgICAqdmFsX09WMF9QMjNfSF9TVEVQX0JZID0g
NTsKICAgICAgICAgICAgICAgICpQMVN0ZXBTaXplID0gMTY7CiAgICAgICAgICAgICAgICAqUDIz
U3RlcFNpemUgPSAxNjsKICAgICAgICAgICAgfQogICAgICAgICAgICBicmVhazsKICAgICAgICBj
YXNlIDEwOgogICAgICAgIGNhc2UgMTE6CiAgICAgICAgY2FzZSAxMjoKICAgICAgICBjYXNlIDEz
OgogICAgICAgIGNhc2UgMTQ6CgoKICAgICAgICAgICAgICAgIGlmICgoSF9zY2FsZV9yYXRpbz49
KENsb2Nrc05lZWRlZEZvcjE2UGl4ZWxzPTgrNCs0KSAvIDE2LjApICYmCiAgICAgICAgICAgICAg
ICAgICAgIURpc2FsbG93Rm91clRhcFZlcnRGaWx0ZXJpbmcgJiYgIURpc2FsbG93Rm91clRhcFVW
VmVydEZpbHRlcmluZykKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAqUDFH
cm91cFNpemUgPSAyOwogICAgICAgICAgICAgICAgICAgICp2YWxfT1YwX1AxX0hfSU5DID0gKHVp
bnQxNl90KSgoMS8oSF9zY2FsZV9yYXRpbykpICogKDE8PDB4YykgKyAwLjUpOwogICAgICAgICAg
ICAgICAgICAgICp2YWxfT1YwX1AxX0hfU1RFUF9CWSA9IDA7CiAgICAgICAgICAgICAgICAgICAg
KnZhbF9PVjBfUDIzX0hfSU5DID0gKHVpbnQxNl90KSgoMS8oSF9zY2FsZV9yYXRpbyoyKSkgKiAo
MTw8MHhjKSArIDAuNSk7CiAgICAgICAgICAgICAgICAgICAgKnZhbF9PVjBfUDIzX0hfU1RFUF9C
WSA9IDA7CiAgICAgICAgICAgICAgICAgICAgKlAxU3RlcFNpemUgPSAxOwogICAgICAgICAgICAg
ICAgICAgICpQMjNTdGVwU2l6ZSA9IDE7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAg
ICAgZWxzZSBpZiAoKEhfc2NhbGVfcmF0aW8+PShDbG9ja3NOZWVkZWRGb3IxNlBpeGVscz00KzQr
NCkgLyAxNi4wKSAmJgogICAgICAgICAgICAgICAgICAgICAgICBEaXNhbGxvd0ZvdXJUYXBWZXJ0
RmlsdGVyaW5nICYmICFEaXNhbGxvd0ZvdXJUYXBVVlZlcnRGaWx0ZXJpbmcpCiAgICAgICAgICAg
ICAgICB7CiAgICAgICAgICAgICAgICAgICAgKlAxR3JvdXBTaXplID0gNDsKICAgICAgICAgICAg
ICAgICAgICAqdmFsX09WMF9QMV9IX0lOQyA9ICh1aW50MTZfdCkoKDEvKEhfc2NhbGVfcmF0aW8p
KSAqICgxPDwweGMpICsgMC41KTsKICAgICAgICAgICAgICAgICAgICAqdmFsX09WMF9QMV9IX1NU
RVBfQlkgPSAxOwogICAgICAgICAgICAgICAgICAgICp2YWxfT1YwX1AyM19IX0lOQyA9ICh1aW50
MTZfdCkoKDEvKEhfc2NhbGVfcmF0aW8qMikpICogKDE8PDB4YykgKyAwLjUpOwogICAgICAgICAg
ICAgICAgICAgICp2YWxfT1YwX1AyM19IX1NURVBfQlkgPSAwOwogICAgICAgICAgICAgICAgICAg
ICpQMVN0ZXBTaXplID0gMTsKICAgICAgICAgICAgICAgICAgICAqUDIzU3RlcFNpemUgPSAxOwog
ICAgICAgICAgICAgICAgfQoKCiAgICAgICAgICAgICAgICBlbHNlIGlmICgoSF9zY2FsZV9yYXRp
bz49KENsb2Nrc05lZWRlZEZvcjE2UGl4ZWxzPTgrMisyKSAvIDE2LjApICYmCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgIURpc2FsbG93Rm91clRhcFZlcnRGaWx0ZXJpbmcpCiAgICAgICAgICAg
ICAgICB7CiAgICAgICAgICAgICAgICAgICAgKlAxR3JvdXBTaXplID0gMjsKICAgICAgICAgICAg
ICAgICAgICAqdmFsX09WMF9QMV9IX0lOQyA9ICh1aW50MTZfdCkoKDEvKEhfc2NhbGVfcmF0aW8p
KSAqICgxPDwweGMpICsgMC41KTsKICAgICAgICAgICAgICAgICAgICAqdmFsX09WMF9QMV9IX1NU
RVBfQlkgPSAwOwogICAgICAgICAgICAgICAgICAgICp2YWxfT1YwX1AyM19IX0lOQyA9ICh1aW50
MTZfdCkoKDEvKEhfc2NhbGVfcmF0aW8qMikpICogKDE8PDB4YykgKyAwLjUpOwogICAgICAgICAg
ICAgICAgICAgICp2YWxfT1YwX1AyM19IX1NURVBfQlkgPSAxOwogICAgICAgICAgICAgICAgICAg
ICpQMVN0ZXBTaXplID0gMTsKICAgICAgICAgICAgICAgICAgICAqUDIzU3RlcFNpemUgPSAxOwog
ICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGVsc2UgaWYgKEhfc2NhbGVfcmF0aW8+
PShDbG9ja3NOZWVkZWRGb3IxNlBpeGVscz00KzIrMikgLyAxNi4wKQogICAgICAgICAgICAgICAg
ewogICAgICAgICAgICAgICAgICAgICpQMUdyb3VwU2l6ZSA9IDQ7CiAgICAgICAgICAgICAgICAg
ICAgKnZhbF9PVjBfUDFfSF9JTkMgPSAodWludDE2X3QpKCgxLyhIX3NjYWxlX3JhdGlvKSkgKiAo
MTw8MHhjKSArIDAuNSk7CiAgICAgICAgICAgICAgICAgICAgKnZhbF9PVjBfUDFfSF9TVEVQX0JZ
ID0gMTsKICAgICAgICAgICAgICAgICAgICAqdmFsX09WMF9QMjNfSF9JTkMgPSAodWludDE2X3Qp
KCgxLyhIX3NjYWxlX3JhdGlvKjIpKSAqICgxPDwweGMpICsgMC41KTsKICAgICAgICAgICAgICAg
ICAgICAqdmFsX09WMF9QMjNfSF9TVEVQX0JZID0gMTsKICAgICAgICAgICAgICAgICAgICAqUDFT
dGVwU2l6ZSA9IDE7CiAgICAgICAgICAgICAgICAgICAgKlAyM1N0ZXBTaXplID0gMTsKICAgICAg
ICAgICAgICAgIH0KCgogICAgICAgICAgICAgICAgZWxzZSBpZiAoSF9zY2FsZV9yYXRpbz49KENs
b2Nrc05lZWRlZEZvcjE2UGl4ZWxzPTQrMSsxKSAvIDE2LjApCiAgICAgICAgICAgICAgICB7CiAg
ICAgICAgICAgICAgICAgICAgKlAxR3JvdXBTaXplID0gNDsKICAgICAgICAgICAgICAgICAgICAq
dmFsX09WMF9QMV9IX0lOQyA9ICh1aW50MTZfdCkoKDEvKEhfc2NhbGVfcmF0aW8pKSAqICgxPDww
eGMpICsgMC41KTsKICAgICAgICAgICAgICAgICAgICAqdmFsX09WMF9QMV9IX1NURVBfQlkgPSAx
OwogICAgICAgICAgICAgICAgICAgICp2YWxfT1YwX1AyM19IX0lOQyA9ICh1aW50MTZfdCkoKDEv
KEhfc2NhbGVfcmF0aW8qMioyKSkgKiAoMTw8MHhjKSArIDAuNSk7CiAgICAgICAgICAgICAgICAg
ICAgKnZhbF9PVjBfUDIzX0hfU1RFUF9CWSA9IDI7CiAgICAgICAgICAgICAgICAgICAgKlAxU3Rl
cFNpemUgPSAxOwogICAgICAgICAgICAgICAgICAgICpQMjNTdGVwU2l6ZSA9IDI7CiAgICAgICAg
ICAgICAgICB9CgogICAgICAgICAgICAgICAgZWxzZSBpZiAoSF9zY2FsZV9yYXRpbz49KENsb2Nr
c05lZWRlZEZvcjE2UGl4ZWxzPTIrMSsxKSAvIDE2LjApCiAgICAgICAgICAgICAgICB7CiAgICAg
ICAgICAgICAgICAgICAgKlAxR3JvdXBTaXplID0gNDsKICAgICAgICAgICAgICAgICAgICAqdmFs
X09WMF9QMV9IX0lOQyA9ICh1aW50MTZfdCkoKDEvKEhfc2NhbGVfcmF0aW8qMikpICogKDE8PDB4
YykgKyAwLjUpOwogICAgICAgICAgICAgICAgICAgICp2YWxfT1YwX1AxX0hfU1RFUF9CWSA9IDI7
CiAgICAgICAgICAgICAgICAgICAgKnZhbF9PVjBfUDIzX0hfSU5DID0gKHVpbnQxNl90KSgoMS8o
SF9zY2FsZV9yYXRpbyoyKjIpKSAqICgxPDwweGMpICsgMC41KTsKICAgICAgICAgICAgICAgICAg
ICAqdmFsX09WMF9QMjNfSF9TVEVQX0JZID0gMjsKICAgICAgICAgICAgICAgICAgICAqUDFTdGVw
U2l6ZSA9IDI7CiAgICAgICAgICAgICAgICAgICAgKlAyM1N0ZXBTaXplID0gMjsKICAgICAgICAg
ICAgICAgIH0KCiAgICAgICAgICAgICAgICBlbHNlIGlmIChIX3NjYWxlX3JhdGlvPj0oQ2xvY2tz
TmVlZGVkRm9yMTZQaXhlbHM9MisuNSsuNSkgLyAxNi4wKQogICAgICAgICAgICAgICAgewogICAg
ICAgICAgICAgICAgICAgICpQMUdyb3VwU2l6ZSA9IDQ7CiAgICAgICAgICAgICAgICAgICAgKnZh
bF9PVjBfUDFfSF9JTkMgPSAodWludDE2X3QpKCgxLyhIX3NjYWxlX3JhdGlvKjIpKSAqICgxPDww
eGMpICsgMC41KTsKICAgICAgICAgICAgICAgICAgICAqdmFsX09WMF9QMV9IX1NURVBfQlkgPSAy
OwogICAgICAgICAgICAgICAgICAgICp2YWxfT1YwX1AyM19IX0lOQyA9ICh1aW50MTZfdCkoKDEv
KEhfc2NhbGVfcmF0aW8qMio0KSkgKiAoMTw8MHhjKSArIDAuNSk7CiAgICAgICAgICAgICAgICAg
ICAgKnZhbF9PVjBfUDIzX0hfU1RFUF9CWSA9IDM7CiAgICAgICAgICAgICAgICAgICAgKlAxU3Rl
cFNpemUgPSAyOwogICAgICAgICAgICAgICAgICAgICpQMjNTdGVwU2l6ZSA9IDQ7CiAgICAgICAg
ICAgICAgICB9CgogICAgICAgICAgICAgICAgZWxzZSBpZiAoSF9zY2FsZV9yYXRpbz49KENsb2Nr
c05lZWRlZEZvcjE2UGl4ZWxzPTErLjUrLjUpIC8gMTYuMCkKICAgICAgICAgICAgICAgIHsKICAg
ICAgICAgICAgICAgICAgICAqUDFHcm91cFNpemUgPSA0OwogICAgICAgICAgICAgICAgICAgICp2
YWxfT1YwX1AxX0hfSU5DID0gKHVpbnQxNl90KSgoMS8oSF9zY2FsZV9yYXRpbyo0KSkgKiAoMTw8
MHhjKSArIDAuNSk7CiAgICAgICAgICAgICAgICAgICAgKnZhbF9PVjBfUDFfSF9TVEVQX0JZID0g
MzsKICAgICAgICAgICAgICAgICAgICAqdmFsX09WMF9QMjNfSF9JTkMgPSAodWludDE2X3QpKCgx
LyhIX3NjYWxlX3JhdGlvKjIqNCkpICogKDE8PDB4YykgKyAwLjUpOwogICAgICAgICAgICAgICAg
ICAgICp2YWxfT1YwX1AyM19IX1NURVBfQlkgPSAzOwogICAgICAgICAgICAgICAgICAgICpQMVN0
ZXBTaXplID0gNDsKICAgICAgICAgICAgICAgICAgICAqUDIzU3RlcFNpemUgPSA0OwogICAgICAg
ICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGVsc2UgaWYgKChIX3NjYWxlX3JhdGlvPj0oQ2xv
Y2tzTmVlZGVkRm9yMTZQaXhlbHM9MSsuMjUrLjI1KSAvIDE2LjApICYmCiAgICAgICAgICAgICAg
ICAgICAgICAgICAoZmllbGR2YWx1ZV9PVjBfU1VSRkFDRV9GT1JNQVQ9PTEwKSkKICAgICAgICAg
ICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAqUDFHcm91cFNpemUgPSA0OwoKICAgICAgICAg
ICAgICAgICAgICAqdmFsX09WMF9QMV9IX0lOQyA9ICh1aW50MTZfdCkoKDEvKEhfc2NhbGVfcmF0
aW8qNCkpICogKDE8PDB4YykgKyAwLjUpOwogICAgICAgICAgICAgICAgICAgICp2YWxfT1YwX1Ax
X0hfU1RFUF9CWSA9IDM7CiAgICAgICAgICAgICAgICAgICAgKnZhbF9PVjBfUDIzX0hfSU5DID0g
KHVpbnQxNl90KSgoMS8oSF9zY2FsZV9yYXRpbyoyKjgpKSAqICgxPDwweGMpICsgMC41KTsKICAg
ICAgICAgICAgICAgICAgICAqdmFsX09WMF9QMjNfSF9TVEVQX0JZID0gNDsKICAgICAgICAgICAg
ICAgICAgICAqUDFTdGVwU2l6ZSA9IDQ7CiAgICAgICAgICAgICAgICAgICAgKlAyM1N0ZXBTaXpl
ID0gODsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBlbHNlIGlmIChIX3NjYWxl
X3JhdGlvPj0oQ2xvY2tzTmVlZGVkRm9yMTZQaXhlbHM9LjUrLjI1Ky4yNSkgLyAxNi4wKQogICAg
ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICpQMUdyb3VwU2l6ZSA9IDQ7CiAgICAg
ICAgICAgICAgICAgICAgKnZhbF9PVjBfUDFfSF9JTkMgPSAodWludDE2X3QpKCgxLyhIX3NjYWxl
X3JhdGlvKjgpKSAqICgxPDwweGMpICsgMC41KTsKICAgICAgICAgICAgICAgICAgICAqdmFsX09W
MF9QMV9IX1NURVBfQlkgPSA0OwogICAgICAgICAgICAgICAgICAgICp2YWxfT1YwX1AyM19IX0lO
QyA9ICh1aW50MTZfdCkoKDEvKEhfc2NhbGVfcmF0aW8qMio4KSkgKiAoMTw8MHhjKSArIDAuNSk7
CiAgICAgICAgICAgICAgICAgICAgKnZhbF9PVjBfUDIzX0hfU1RFUF9CWSA9IDQ7CiAgICAgICAg
ICAgICAgICAgICAgKlAxU3RlcFNpemUgPSA4OwogICAgICAgICAgICAgICAgICAgICpQMjNTdGVw
U2l6ZSA9IDg7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZWxzZSBpZiAoKEhf
c2NhbGVfcmF0aW8+PShDbG9ja3NOZWVkZWRGb3IxNlBpeGVscz0uNSsuMTI1Ky4xMjUpIC8gMTYu
MCkgJiYgKGZpZWxkdmFsdWVfT1YwX1NVUkZBQ0VfRk9STUFUPT0xMCkpCiAgICAgICAgICAgICAg
ICB7CiAgICAgICAgICAgICAgICAgICAgKlAxR3JvdXBTaXplID0gNDsKCiAgICAgICAgICAgICAg
ICAgICAgKnZhbF9PVjBfUDFfSF9JTkMgPSAodWludDE2X3QpKCgxLyhIX3NjYWxlX3JhdGlvKjgp
KSAqICgxPDwweGMpICsgMC41KTsKICAgICAgICAgICAgICAgICAgICAqdmFsX09WMF9QMV9IX1NU
RVBfQlkgPSA0OwogICAgICAgICAgICAgICAgICAgICp2YWxfT1YwX1AyM19IX0lOQyA9ICh1aW50
MTZfdCkoKDEvKEhfc2NhbGVfcmF0aW8qMioxNikpICogKDE8PDB4YykgKyAwLjUpOwogICAgICAg
ICAgICAgICAgICAgICp2YWxfT1YwX1AyM19IX1NURVBfQlkgPSA1OwogICAgICAgICAgICAgICAg
ICAgICpQMVN0ZXBTaXplID0gODsKICAgICAgICAgICAgICAgICAgICAqUDIzU3RlcFNpemUgPSAx
NjsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBlbHNlIGlmICgoSF9zY2FsZV9y
YXRpbz49KENsb2Nrc05lZWRlZEZvcjE2UGl4ZWxzPS4yNSsuMTI1Ky4xMjUpIC8gMTYuMCkgJiYK
ICAgICAgICAgICAgICAgICAgICAgICAgIChmaWVsZHZhbHVlX09WMF9TVVJGQUNFX0ZPUk1BVD09
MTApKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICpQMUdyb3VwU2l6ZSA9
IDQ7CgogICAgICAgICAgICAgICAgICAgICp2YWxfT1YwX1AxX0hfSU5DID0gKHVpbnQxNl90KSgo
MS8oSF9zY2FsZV9yYXRpbyoxNikpICogKDE8PDB4YykgKyAwLjUpOwogICAgICAgICAgICAgICAg
ICAgICp2YWxfT1YwX1AxX0hfU1RFUF9CWSA9IDU7CiAgICAgICAgICAgICAgICAgICAgKnZhbF9P
VjBfUDIzX0hfSU5DID0gKHVpbnQxNl90KSgoMS8oSF9zY2FsZV9yYXRpbyoyKjE2KSkgKiAoMTw8
MHhjKSArIDAuNSk7CiAgICAgICAgICAgICAgICAgICAgKnZhbF9PVjBfUDIzX0hfU1RFUF9CWSA9
IDU7CiAgICAgICAgICAgICAgICAgICAgKlAxU3RlcFNpemUgPSAxNjsKICAgICAgICAgICAgICAg
ICAgICAqUDIzU3RlcFNpemUgPSAxNjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
IGVsc2UKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpZiAoZmllbGR2YWx1
ZV9PVjBfU1VSRkFDRV9GT1JNQVQ9PTEwKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgSF9zY2FsZV9yYXRpbz0oQ2xvY2tzTmVlZGVkRm9yMTZQaXhlbHM9LjI1
Ky4xMjUrLjEyNSkgLyAxNjsKICAgICAgICAgICAgICAgICAgICAgICAgKlAxR3JvdXBTaXplID0g
NDsKICAgICAgICAgICAgICAgICAgICAgICAgKnZhbF9PVjBfUDFfSF9JTkMgPSAodWludDE2X3Qp
KCgxLyhIX3NjYWxlX3JhdGlvKjE2KSkgKiAoMTw8MHhjKSArIDAuNSk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICp2YWxfT1YwX1AxX0hfU1RFUF9CWSA9IDU7CiAgICAgICAgICAgICAgICAgICAg
ICAgICp2YWxfT1YwX1AyM19IX0lOQyA9ICh1aW50MTZfdCkoKDEvKEhfc2NhbGVfcmF0aW8qMiox
NikpICogKDE8PDB4YykgKyAwLjUpOwogICAgICAgICAgICAgICAgICAgICAgICAqdmFsX09WMF9Q
MjNfSF9TVEVQX0JZID0gNTsKICAgICAgICAgICAgICAgICAgICAgICAgKlAxU3RlcFNpemUgPSAx
NjsKICAgICAgICAgICAgICAgICAgICAgICAgKlAyM1N0ZXBTaXplID0gMTY7CiAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICB7
CiAgICAgICAgICAgICAgICAgICAgICAgIEhfc2NhbGVfcmF0aW89KENsb2Nrc05lZWRlZEZvcjE2
UGl4ZWxzPS41Ky4yNSsuMjUpIC8gMTY7CiAgICAgICAgICAgICAgICAgICAgICAgICpQMUdyb3Vw
U2l6ZSA9IDQ7CiAgICAgICAgICAgICAgICAgICAgICAgICp2YWxfT1YwX1AxX0hfSU5DID0gKHVp
bnQxNl90KSgoMS8oSF9zY2FsZV9yYXRpbyo4KSkgKiAoMTw8MHhjKSArIDAuNSk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICp2YWxfT1YwX1AxX0hfU1RFUF9CWSA9IDQ7CiAgICAgICAgICAgICAg
ICAgICAgICAgICp2YWxfT1YwX1AyM19IX0lOQyA9ICh1aW50MTZfdCkoKDEvKEhfc2NhbGVfcmF0
aW8qMio4KSkgKiAoMTw8MHhjKSArIDAuNSk7CiAgICAgICAgICAgICAgICAgICAgICAgICp2YWxf
T1YwX1AyM19IX1NURVBfQlkgPSA0OwogICAgICAgICAgICAgICAgICAgICAgICAqUDFTdGVwU2l6
ZSA9IDg7CiAgICAgICAgICAgICAgICAgICAgICAgICpQMjNTdGVwU2l6ZSA9IDg7CiAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgZGVmYXVsdDogYnJlYWs7CgogICAgfQogICAgYmVzci5oX2luYyA9ICgqKHZhbF9PVjBf
UDFfSF9JTkMpJjB4M2ZmZikgfCAoKCoodmFsX09WMF9QMjNfSF9JTkMpJjB4M2ZmZik8PDE2KTsK
ICAgIGJlc3Iuc3RlcF9ieSA9ICgqKHZhbF9PVjBfUDFfSF9TVEVQX0JZKSYweDcpIHwgKCgqKHZh
bF9PVjBfUDIzX0hfU1RFUF9CWSkmMHg3KTw8OCk7Cn0KCgoKCgpzdGF0aWMgdm9pZCBDb21wdXRl
Qm9yZGVycyggdmlkaXhfcGxheWJhY2tfdCAqY29uZmlnLCBpbnQgVmVydFVWU3ViU2FtcGxlICkK
ewogICAgICAgIGRvdWJsZSB0ZW1wQkxBTktfTElORVNfQVRfVE9QOwogICAgICAgIHVuc2lnbmVk
IFRvcExpbmUsQm90dG9tTGluZSxTb3VyY2VMaW5lc1VzZWQsVG9wVVZMaW5lLEJvdHRvbVVWTGlu
ZSxTb3VyY2VVVkxpbmVzVXNlZDsKICAgICAgICB1aW50MzJfdCB2YWxfT1YwX1AxX0FDVElWRV9M
SU5FU19NMSx2YWxfT1YwX1AxX0JMTktfTE5fQVRfVE9QX00xOwogICAgICAgIHVpbnQzMl90IHZh
bF9PVjBfUDIzX0FDVElWRV9MSU5FU19NMSx2YWxfT1YwX1AyM19CTE5LX0xOX0FUX1RPUF9NMTsK
CiAgICAgICAgaWYgKGZsb29yKGNvbmZpZy0+c3JjLnkpPDApIHsKICAgICAgICAgICAgdGVtcEJM
QU5LX0xJTkVTX0FUX1RPUCA9IC1mbG9vcihjb25maWctPnNyYy55KTsKICAgICAgICAgICAgVG9w
TGluZSA9IDA7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICB0ZW1wQkxBTktf
TElORVNfQVRfVE9QID0gMDsKICAgICAgICAgICAgVG9wTGluZSA9IChpbnQpZmxvb3IoY29uZmln
LT5zcmMueSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoY2VpbChjb25maWctPnNyYy55K2NvbmZp
Zy0+c3JjLmgpID4gY29uZmlnLT5zcmMuaCkKICAgICAgICB7CiAgICAgICAgICAgIEJvdHRvbUxp
bmUgPSBjb25maWctPnNyYy5oIC0gMTsKICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgIHsK
ICAgICAgICAgICAgQm90dG9tTGluZSA9IChpbnQpY2VpbChjb25maWctPnNyYy55K2NvbmZpZy0+
c3JjLmgpIC0gMTsKICAgICAgICB9CgogICAgICAgIGlmIChCb3R0b21MaW5lID49IFRvcExpbmUp
CiAgICAgICAgewogICAgICAgICAgICBTb3VyY2VMaW5lc1VzZWQgPSBCb3R0b21MaW5lIC0gVG9w
TGluZSArIDE7CiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICB7CgogICAgICAgICAgICBT
b3VyY2VMaW5lc1VzZWQgPSAxOwogICAgICAgIH0KCiAgICAgICAgewogICAgICAgICAgICBpbnQg
U291cmNlSGVpZ2h0SW5QaXhlbHM7CiAgICAgICAgICAgIFNvdXJjZUhlaWdodEluUGl4ZWxzID0g
Qm90dG9tTGluZSAtIFRvcExpbmUgKyAxOwogICAgICAgIH0KCiAgICAgICAgdmFsX09WMF9QMV9B
Q1RJVkVfTElORVNfTTEgPSBTb3VyY2VMaW5lc1VzZWQgLSAxOwogICAgICAgIHZhbF9PVjBfUDFf
QkxOS19MTl9BVF9UT1BfTTEgPSAoKGludCl0ZW1wQkxBTktfTElORVNfQVRfVE9QLTEpICYgMHhm
ZmY7CgogICAgICAgIFRvcFVWTGluZSA9ICgoaW50KShjb25maWctPnNyYy55L1ZlcnRVVlN1YlNh
bXBsZSkgPCAwKSA/IDA6IChpbnQpKGNvbmZpZy0+c3JjLnkvVmVydFVWU3ViU2FtcGxlKTsKICAg
ICAgICBCb3R0b21VVkxpbmUgPSAoY2VpbCgoKGNvbmZpZy0+c3JjLnkrY29uZmlnLT5zcmMuaCkv
VmVydFVWU3ViU2FtcGxlKSkgPiAoY29uZmlnLT5zcmMuaC9WZXJ0VVZTdWJTYW1wbGUpKQogICAg
ICAgID8gKGNvbmZpZy0+c3JjLmgvVmVydFVWU3ViU2FtcGxlKS0xIDogKGludCljZWlsKCgoY29u
ZmlnLT5zcmMueStjb25maWctPnNyYy5oKS9WZXJ0VVZTdWJTYW1wbGUpKS0xOwoKICAgICAgICBp
ZiAoQm90dG9tVVZMaW5lID49IFRvcFVWTGluZSkKICAgICAgICB7CiAgICAgICAgICAgIFNvdXJj
ZVVWTGluZXNVc2VkID0gQm90dG9tVVZMaW5lIC0gVG9wVVZMaW5lICsgMTsKICAgICAgICB9CiAg
ICAgICAgZWxzZQogICAgICAgIHsKCiAgICAgICAgICAgIFNvdXJjZVVWTGluZXNVc2VkID0gMTsK
ICAgICAgICB9CiAgICAgICAgdmFsX09WMF9QMjNfQUNUSVZFX0xJTkVTX00xID0gU291cmNlVVZM
aW5lc1VzZWQgLSAxOwogICAgICAgIHZhbF9PVjBfUDIzX0JMTktfTE5fQVRfVE9QX00xID0gKChp
bnQpKHRlbXBCTEFOS19MSU5FU19BVF9UT1AvVmVydFVWU3ViU2FtcGxlKS0xKSAmIDB4N2ZmOwog
ICAgICAgIGJlc3IucDFfYmxhbmtfbGluZXNfYXRfdG9wID0gKHZhbF9PVjBfUDFfQkxOS19MTl9B
VF9UT1BfTTEgJiAweGZmZikgfAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KCh2YWxfT1YwX1AxX0FDVElWRV9MSU5FU19NMSAmIDB4ZmZmKSA8PCAxNik7CiAgICAgICAgYmVz
ci5wMjNfYmxhbmtfbGluZXNfYXRfdG9wID0gKHZhbF9PVjBfUDIzX0JMTktfTE5fQVRfVE9QX00x
ICYgMHg3ZmYpIHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgodmFsX09W
MF9QMjNfQUNUSVZFX0xJTkVTX00xICYgMHg3ZmYpIDw8IDE2KTsKfQoKCnN0YXRpYyB2b2lkIENv
bXB1dGVYU3RhcnRFbmQoCiAgICAgICAgICAgIGludCBpc180MDAsCiAgICAgICAgICAgIHVpbnQz
Ml90IExlZnRQaXhlbCx1aW50MzJfdCBMZWZ0VVZQaXhlbCwKICAgICAgICAgICAgdWludDMyX3Qg
TWVtV29yZHNJbkJ5dGVzLHVpbnQzMl90IEJ5dGVzUGVyUGl4ZWwsCiAgICAgICAgICAgIHVpbnQz
Ml90IFNvdXJjZVdpZHRoSW5QaXhlbHMsIHVpbnQzMl90IFAxU3RlcFNpemUsCiAgICAgICAgICAg
IHVpbnQzMl90IEJ5dGVzUGVyVVZQaXhlbCx1aW50MzJfdCBTb3VyY2VVVldpZHRoSW5QaXhlbHMs
CiAgICAgICAgICAgIHVpbnQzMl90IFAyM1N0ZXBTaXplLCB1aW50MzJfdCAqcDFfeF9zdGFydCwg
dWludDMyX3QgKnAyX3hfc3RhcnQgKQp7CiAgICB1aW50MzJfdCB2YWxfT1YwX1AxX1hfU1RBUlQs
dmFsX09WMF9QMl9YX1NUQVJULHZhbF9PVjBfUDNfWF9TVEFSVDsKICAgIHVpbnQzMl90IHZhbF9P
VjBfUDFfWF9FTkQsdmFsX09WMF9QMl9YX0VORCx2YWxfT1YwX1AzX1hfRU5EOwoKCiAgICB2YWxf
T1YwX1AxX1hfU1RBUlQgPSAoaW50KUxlZnRQaXhlbCAlIChNZW1Xb3Jkc0luQnl0ZXMvQnl0ZXNQ
ZXJQaXhlbCk7CiAgICB2YWxfT1YwX1AxX1hfRU5EID0gKGludCkoKHZhbF9PVjBfUDFfWF9TVEFS
VCArIFNvdXJjZVdpZHRoSW5QaXhlbHMgLSAxKSAvIFAxU3RlcFNpemUpICogUDFTdGVwU2l6ZTsK
CiAgICB2YWxfT1YwX1AyX1hfU1RBUlQgPSB2YWxfT1YwX1AyX1hfRU5EID0gMDsKICAgIHN3aXRj
aCAoYmVzci5zdXJmX2lkKQogICAgewogICAgICAgIGNhc2UgOToKICAgICAgICBjYXNlIDEwOgog
ICAgICAgIGNhc2UgMTM6CiAgICAgICAgY2FzZSAxNDoKCiAgICAgICAgICAgICAgICAgICAgdmFs
X09WMF9QMl9YX1NUQVJUID0gKGludClMZWZ0VVZQaXhlbCAlCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKE1lbVdvcmRzSW5CeXRlcy9CeXRlc1BlclVWUGl4ZWwp
OwogICAgICAgICAgICAgICAgICAgIHZhbF9PVjBfUDJfWF9FTkQgPSAoaW50KSgodmFsX09WMF9Q
Ml9YX1NUQVJUICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlVVZXaWR0aElu
UGl4ZWxzIC0gMSkgLyBQMjNTdGVwU2l6ZSkgKiBQMjNTdGVwU2l6ZTsKICAgICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICBjYXNlIDExOgogICAgICAgIGNhc2UgMTI6IHZhbF9PVjBfUDJf
WF9TVEFSVCA9IChpbnQpTGVmdFVWUGl4ZWwgJSAoTWVtV29yZHNJbkJ5dGVzLyhCeXRlc1BlclBp
eGVsKjIpKTsKICAgICAgICAgICAgICAgICAgICB2YWxfT1YwX1AyX1hfRU5EID0gKGludCkoKHZh
bF9PVjBfUDJfWF9TVEFSVCArIFNvdXJjZVVWV2lkdGhJblBpeGVscyAtIDEpIC8gUDIzU3RlcFNp
emUpICogUDIzU3RlcFNpemU7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2Fz
ZSAzOgogICAgICAgIGNhc2UgNDogdmFsX09WMF9QMl9YX1NUQVJUID0gdmFsX09WMF9QMV9YX1NU
QVJUOwoKCgogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgNjogdmFsX09W
MF9QMl9YX1NUQVJUID0gKGludClMZWZ0UGl4ZWwgJSAoTWVtV29yZHNJbkJ5dGVzL0J5dGVzUGVy
UGl4ZWwpOwogICAgICAgICAgICAgICAgICAgIHZhbF9PVjBfUDJfWF9FTkQgPSAoaW50KSgodmFs
X09WMF9QMV9YX1NUQVJUICsgU291cmNlV2lkdGhJblBpeGVscyAtIDEpIC8gUDIzU3RlcFNpemUp
ICogUDIzU3RlcFNpemU7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgZGVmYXVs
dDoKICAgICAgICAgICAgICAgICAgICBwcmludGYoInJhZ2UxMjhfdmlkOiIiIyMjIyMjIyMjIyMj
IyMjIyMgRkFUQUw6IiJ1bmtub3duIGZvdXJjY1xuIik7OwogICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgfQogICAgdmFsX09WMF9QM19YX1NUQVJUID0gdmFsX09WMF9QMl9YX1NUQVJUOwog
ICAgdmFsX09WMF9QM19YX0VORCA9IHZhbF9PVjBfUDJfWF9FTkQ7CgogICAgYmVzci5wMV94X3N0
YXJ0X2VuZCA9ICh2YWxfT1YwX1AxX1hfRU5EJjB4N2ZmKSB8ICgodmFsX09WMF9QMV9YX1NUQVJU
JjB4N2ZmKTw8MTYpOwogICAgYmVzci5wMl94X3N0YXJ0X2VuZCA9ICh2YWxfT1YwX1AyX1hfRU5E
JjB4N2ZmKSB8ICgodmFsX09WMF9QMl9YX1NUQVJUJjB4N2ZmKTw8MTYpOwogICAgYmVzci5wM194
X3N0YXJ0X2VuZCA9ICh2YWxfT1YwX1AzX1hfRU5EJjB4N2ZmKSB8ICgodmFsX09WMF9QM19YX1NU
QVJUJjB4N2ZmKTw8MTYpOwogICAgaWYoaXNfNDAwKQogICAgewogICAgICAgIGJlc3IucDJfeF9z
dGFydF9lbmQgPSAwOwogICAgICAgIGJlc3IucDNfeF9zdGFydF9lbmQgPSAwOwogICAgfQogICAg
KnAxX3hfc3RhcnQgPSB2YWxfT1YwX1AxX1hfU1RBUlQ7CiAgICAqcDJfeF9zdGFydCA9IHZhbF9P
VjBfUDJfWF9TVEFSVDsKfQoKc3RhdGljIHZvaWQgQ29tcHV0ZUFjY3VtSW5pdCgKICAgICAgICAg
ICAgdWludDMyX3QgdmFsX09WMF9QMV9YX1NUQVJULHVpbnQzMl90IHZhbF9PVjBfUDJfWF9TVEFS
VCwKICAgICAgICAgICAgdWludDMyX3QgdmFsX09WMF9QMV9IX0lOQyx1aW50MzJfdCB2YWxfT1Yw
X1AyM19IX0lOQywKICAgICAgICAgICAgdWludDMyX3QgdmFsX09WMF9QMV9IX1NURVBfQlksdWlu
dDMyX3QgdmFsX09WMF9QMjNfSF9TVEVQX0JZLAogICAgICAgICAgICB1aW50MzJfdCBDUlRfVl9J
TkMsCiAgICAgICAgICAgIHVpbnQzMl90IFAxR3JvdXBTaXplLCB1aW50MzJfdCBQMjNHcm91cFNp
emUsCiAgICAgICAgICAgIHVpbnQzMl90IHZhbF9PVjBfUDFfTUFYX0xOX0lOX1BFUl9MTl9PVVQs
CiAgICAgICAgICAgIHVpbnQzMl90IHZhbF9PVjBfUDIzX01BWF9MTl9JTl9QRVJfTE5fT1VUKQp7
CiAgICB1aW50MzJfdCB2YWxfT1YwX1AxX0hfQUNDVU1fSU5JVCx2YWxfT1YwX1BSRVNISUZUX1Ax
X1RPOwogICAgdWludDMyX3QgdmFsX09WMF9QMjNfSF9BQ0NVTV9JTklULHZhbF9PVjBfUFJFU0hJ
RlRfUDIzX1RPOwogICAgdWludDMyX3QgdmFsX09WMF9QMV9WX0FDQ1VNX0lOSVQsdmFsX09WMF9Q
MjNfVl9BQ0NVTV9JTklUOwojIDIyMDUgInJhZ2UxMjhfdmlkLmMiCiAgICAgICAgewogICAgICAg
ICAgICBkb3VibGUgRXh0cmFIYWxmUGl4ZWw7CiAgICAgICAgICAgIGRvdWJsZSB0ZW1wQWRkaXRp
b25hbFNoaWZ0OwogICAgICAgICAgICBkb3VibGUgdGVtcFAxSFN0YXJ0UG9pbnQ7CiAgICAgICAg
ICAgIGRvdWJsZSB0ZW1wUDIzSFN0YXJ0UG9pbnQ7CiAgICAgICAgICAgIGRvdWJsZSB0ZW1wUDFJ
bml0OwogICAgICAgICAgICBkb3VibGUgdGVtcFAyM0luaXQ7CgogICAgICAgICAgICBpZiAoYmVz
ci5ob3J6X3BpY2tfbmVhcmVzdCkgRXh0cmFIYWxmUGl4ZWwgPSAwLjU7CiAgICAgICAgICAgIGVs
c2UgRXh0cmFIYWxmUGl4ZWwgPSAwLjA7CiAgICAgICAgICAgIHRlbXBBZGRpdGlvbmFsU2hpZnQg
PSB2YWxfT1YwX1AxX1hfU1RBUlQgJSBQMUdyb3VwU2l6ZSArIEV4dHJhSGFsZlBpeGVsOwogICAg
ICAgICAgICB0ZW1wUDFIU3RhcnRQb2ludCA9IHRlbXBBZGRpdGlvbmFsU2hpZnQgKyAyLjUgKyAo
KGZsb2F0KXZhbF9PVjBfUDFfSF9JTkMgLyAoMTw8MHhkKSk7CiAgICAgICAgICAgIHRlbXBQMUlu
aXQgPSAoZG91YmxlKSgoaW50KSh0ZW1wUDFIU3RhcnRQb2ludCAqICgxPDwweDUpICsgMC41KSkg
LyAoMTw8MHg1KTsKIyAyMjI3ICJyYWdlMTI4X3ZpZC5jIgogICAgICAgICAgICB0ZW1wQWRkaXRp
b25hbFNoaWZ0ID0gdmFsX09WMF9QMl9YX1NUQVJUICUgUDIzR3JvdXBTaXplICsgRXh0cmFIYWxm
UGl4ZWw7CiAgICAgICAgICAgIHRlbXBQMjNIU3RhcnRQb2ludCA9IHRlbXBBZGRpdGlvbmFsU2hp
ZnQgKyAyLjUgKyAoKGZsb2F0KXZhbF9PVjBfUDIzX0hfSU5DIC8gKDE8PDB4ZCkpOwogICAgICAg
ICAgICB0ZW1wUDIzSW5pdCA9IChkb3VibGUpKChpbnQpKHRlbXBQMjNIU3RhcnRQb2ludCAqICgx
PDwweDUpICsgMC41KSkgLyAoMSA8PCAweDUpOwogICAgICAgICAgICB2YWxfT1YwX1AxX0hfQUND
VU1fSU5JVCA9IChpbnQpKCh0ZW1wUDFJbml0IC0gKGludCl0ZW1wUDFJbml0KSAqICgxPDwweDUp
KTsKICAgICAgICAgICAgdmFsX09WMF9QUkVTSElGVF9QMV9UTyA9IChpbnQpdGVtcFAxSW5pdDsK
ICAgICAgICAgICAgdmFsX09WMF9QMjNfSF9BQ0NVTV9JTklUID0gKGludCkoKHRlbXBQMjNJbml0
IC0gKGludCl0ZW1wUDIzSW5pdCkgKiAoMTw8MHg1KSk7CiAgICAgICAgICAgIHZhbF9PVjBfUFJF
U0hJRlRfUDIzX1RPID0gKGludCl0ZW1wUDIzSW5pdDsKICAgICAgICB9CgoKCgoKICAgICAgICB7
CiAgICAgICAgICAgIGRvdWJsZSBFeHRyYUhhbGZMaW5lOwogICAgICAgICAgICBkb3VibGUgRXh0
cmFGdWxsTGluZTsKICAgICAgICAgICAgZG91YmxlIHRlbXBQMVZTdGFydFBvaW50OwogICAgICAg
ICAgICBkb3VibGUgdGVtcFAyM1ZTdGFydFBvaW50OwoKICAgICAgICAgICAgaWYgKGJlc3IudmVy
dF9waWNrX25lYXJlc3QpIEV4dHJhSGFsZkxpbmUgPSAwLjU7CiAgICAgICAgICAgIGVsc2UgRXh0
cmFIYWxmTGluZSA9IDAuMDsKCiAgICAgICAgICAgIGlmICh2YWxfT1YwX1AxX0hfU1RFUF9CWT09
MClFeHRyYUZ1bGxMaW5lID0gMS4wOwogICAgICAgICAgICBlbHNlIEV4dHJhRnVsbExpbmUgPSAw
LjA7CgogICAgICAgICAgICB0ZW1wUDFWU3RhcnRQb2ludCA9IDEuNSArIEV4dHJhRnVsbExpbmUg
KyBFeHRyYUhhbGZMaW5lICsgKChmbG9hdClDUlRfVl9JTkMgLyAoMTw8MHhkKSk7CiAgICAgICAg
ICAgIGlmICh0ZW1wUDFWU3RhcnRQb2ludD4yLjUgKyAyKkV4dHJhRnVsbExpbmUpCiAgICAgICAg
ICAgIHsKICAgICAgICAgICAgICAgIHRlbXBQMVZTdGFydFBvaW50ID0gMi41ICsgMipFeHRyYUZ1
bGxMaW5lOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHZhbF9PVjBfUDFfVl9BQ0NVTV9JTklU
ID0gKGludCkodGVtcFAxVlN0YXJ0UG9pbnQgKiAoMTw8MHg1KSArIDAuNSk7CgogICAgICAgICAg
ICBpZiAodmFsX09WMF9QMjNfSF9TVEVQX0JZPT0wKUV4dHJhRnVsbExpbmUgPSAxLjA7CiAgICAg
ICAgICAgIGVsc2UgRXh0cmFGdWxsTGluZSA9IDAuMDsKCiAgICAgICAgICAgIHN3aXRjaCAoYmVz
ci5zdXJmX2lkKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBjYXNlIDEwOgogICAgICAg
ICAgICAgICAgY2FzZSAxMzoKICAgICAgICAgICAgICAgIGNhc2UgMTQ6IHRlbXBQMjNWU3RhcnRQ
b2ludCA9IDEuNSArIEV4dHJhRnVsbExpbmUgKyBFeHRyYUhhbGZMaW5lICsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChmbG9hdClDUlRfVl9JTkMgLyAo
MTw8MHhlKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgIGNhc2UgOTogdGVtcFAyM1ZTdGFydFBvaW50ID0gMS41ICsgRXh0cmFGdWxsTGluZSArIEV4
dHJhSGFsZkxpbmUgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAoKGZsb2F0KUNSVF9WX0lOQyAvICgxPDwweGYpKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAzOgogICAgICAgICAgICAgICAgY2Fz
ZSA0OgogICAgICAgICAgICAgICAgY2FzZSA2OgogICAgICAgICAgICAgICAgY2FzZSAxMToKICAg
ICAgICAgICAgICAgIGNhc2UgMTI6IHRlbXBQMjNWU3RhcnRQb2ludCA9IDA7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGRlZmF1bHQ6IHRlbXBQMjNW
U3RhcnRQb2ludCA9IDB4RkZGRjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAodGVtcFAyM1ZTdGFydFBvaW50PjIuNSArIDIq
RXh0cmFGdWxsTGluZSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgdGVtcFAyM1ZTdGFy
dFBvaW50ID0gMi41ICsgMipFeHRyYUZ1bGxMaW5lOwogICAgICAgICAgICB9CgogICAgICAgICAg
ICB2YWxfT1YwX1AyM19WX0FDQ1VNX0lOSVQgPSAoaW50KSh0ZW1wUDIzVlN0YXJ0UG9pbnQgKiAo
MTw8MHg1KSArIDAuNSk7CiAgICAgICAgfQogICAgYmVzci5wMV9oX2FjY3VtX2luaXQgPSAoKHZh
bF9PVjBfUDFfSF9BQ0NVTV9JTklUJjB4MWYpPDwxNSkgfCgodmFsX09WMF9QUkVTSElGVF9QMV9U
TyYweGYpPDwyOCk7CiAgICBiZXNyLnAxX3ZfYWNjdW1faW5pdCA9ICh2YWxfT1YwX1AxX01BWF9M
Tl9JTl9QRVJfTE5fT1VUJjB4MykgfCgodmFsX09WMF9QMV9WX0FDQ1VNX0lOSVQmMHg3ZmYpPDwx
NSk7CiAgICBiZXNyLnAyM19oX2FjY3VtX2luaXQ9ICgodmFsX09WMF9QMjNfSF9BQ0NVTV9JTklU
JjB4MWYpPDwxNSkgfCgodmFsX09WMF9QUkVTSElGVF9QMjNfVE8mMHhmKTw8MjgpOwogICAgYmVz
ci5wMjNfdl9hY2N1bV9pbml0PSAodmFsX09WMF9QMjNfTUFYX0xOX0lOX1BFUl9MTl9PVVQmMHgz
KXwoKHZhbF9PVjBfUDIzX1ZfQUNDVU1fSU5JVCYweDNmZik8PDE1KTsKfQoKdHlwZWRlZiBzdHJ1
Y3QgUmFuZ2VBbmRDb2VmU2V0IHsKICAgIGRvdWJsZSBSYW5nZTsKICAgIHNpZ25lZCBjaGFyIENv
ZWZTZXRbNV1bNF07Cn0gUkFOR0VBTkRDT0VGU0VUOwoKCnN0YXRpYyB2b2lkIEZpbHRlclNldHVw
ICggdWludDMyX3QgdmFsX09WMF9QMV9IX0lOQyApCnsKICAgIHN0YXRpYyBSQU5HRUFORENPRUZT
RVQgQXJyYXlPZlNldHNbXSA9IHsKICAgICAgICB7MC4yNSwge3sgNywgMTYsIDksIDB9LCB7IDcs
IDE2LCA5LCAwfSwgeyA1LCAxNSwgMTEsIDF9LCB7IDQsIDE1LCAxMiwgMX0sIHsgMywgMTMsIDEz
LCAzfSwgfX0sCiAgICAgICAgezAuMjYsIHt7IDcsIDE2LCA5LCAwfSwgeyA3LCAxNiwgOSwgMH0s
IHsgNSwgMTUsIDExLCAxfSwgeyA0LCAxNSwgMTIsIDF9LCB7IDMsIDEzLCAxMywgM30sIH19LAog
ICAgICAgIHswLjI3LCB7eyA3LCAxNiwgOSwgMH0sIHsgNywgMTYsIDksIDB9LCB7IDUsIDE1LCAx
MSwgMX0sIHsgNCwgMTUsIDEyLCAxfSwgeyAzLCAxMywgMTMsIDN9LCB9fSwKICAgICAgICB7MC4y
OCwge3sgNywgMTYsIDksIDB9LCB7IDcsIDE2LCA5LCAwfSwgeyA1LCAxNSwgMTEsIDF9LCB7IDQs
IDE1LCAxMiwgMX0sIHsgMywgMTMsIDEzLCAzfSwgfX0sCiAgICAgICAgezAuMjksIHt7IDcsIDE2
LCA5LCAwfSwgeyA3LCAxNiwgOSwgMH0sIHsgNSwgMTUsIDExLCAxfSwgeyA0LCAxNSwgMTIsIDF9
LCB7IDMsIDEzLCAxMywgM30sIH19LAogICAgICAgIHswLjMwLCB7eyA3LCAxNiwgOSwgMH0sIHsg
NywgMTYsIDksIDB9LCB7IDUsIDE1LCAxMSwgMX0sIHsgNCwgMTUsIDEyLCAxfSwgeyAzLCAxMywg
MTMsIDN9LCB9fSwKICAgICAgICB7MC4zMSwge3sgNywgMTYsIDksIDB9LCB7IDcsIDE2LCA5LCAw
fSwgeyA1LCAxNSwgMTEsIDF9LCB7IDQsIDE1LCAxMiwgMX0sIHsgMywgMTMsIDEzLCAzfSwgfX0s
CiAgICAgICAgezAuMzIsIHt7IDcsIDE2LCA5LCAwfSwgeyA3LCAxNiwgOSwgMH0sIHsgNSwgMTUs
IDExLCAxfSwgeyA0LCAxNSwgMTIsIDF9LCB7IDMsIDEzLCAxMywgM30sIH19LAogICAgICAgIHsw
LjMzLCB7eyA3LCAxNiwgOSwgMH0sIHsgNywgMTYsIDksIDB9LCB7IDUsIDE1LCAxMSwgMX0sIHsg
NCwgMTUsIDEyLCAxfSwgeyAzLCAxMywgMTMsIDN9LCB9fSwKICAgICAgICB7MC4zNCwge3sgNywg
MTYsIDksIDB9LCB7IDcsIDE2LCA5LCAwfSwgeyA1LCAxNSwgMTEsIDF9LCB7IDQsIDE1LCAxMiwg
MX0sIHsgMywgMTMsIDEzLCAzfSwgfX0sCiAgICAgICAgezAuMzUsIHt7IDcsIDE2LCA5LCAwfSwg
eyA3LCAxNiwgOSwgMH0sIHsgNSwgMTUsIDExLCAxfSwgeyA0LCAxNSwgMTIsIDF9LCB7IDMsIDEz
LCAxMywgM30sIH19LAogICAgICAgIHswLjM2LCB7eyA3LCAxNiwgOSwgMH0sIHsgNywgMTYsIDks
IDB9LCB7IDUsIDE1LCAxMSwgMX0sIHsgNCwgMTUsIDEyLCAxfSwgeyAzLCAxMywgMTMsIDN9LCB9
fSwKICAgICAgICB7MC4zNywge3sgNywgMTYsIDksIDB9LCB7IDcsIDE2LCA5LCAwfSwgeyA1LCAx
NSwgMTEsIDF9LCB7IDQsIDE1LCAxMiwgMX0sIHsgMywgMTMsIDEzLCAzfSwgfX0sCiAgICAgICAg
ezAuMzgsIHt7IDcsIDE2LCA5LCAwfSwgeyA3LCAxNiwgOSwgMH0sIHsgNSwgMTUsIDExLCAxfSwg
eyA0LCAxNSwgMTIsIDF9LCB7IDMsIDEzLCAxMywgM30sIH19LAogICAgICAgIHswLjM5LCB7eyA3
LCAxNiwgOSwgMH0sIHsgNywgMTYsIDksIDB9LCB7IDUsIDE1LCAxMSwgMX0sIHsgNCwgMTUsIDEy
LCAxfSwgeyAzLCAxMywgMTMsIDN9LCB9fSwKICAgICAgICB7MC40MCwge3sgNywgMTYsIDksIDB9
LCB7IDcsIDE2LCA5LCAwfSwgeyA1LCAxNSwgMTEsIDF9LCB7IDQsIDE1LCAxMiwgMX0sIHsgMywg
MTMsIDEzLCAzfSwgfX0sCiAgICAgICAgezAuNDEsIHt7IDcsIDE2LCA5LCAwfSwgeyA3LCAxNiwg
OSwgMH0sIHsgNSwgMTUsIDExLCAxfSwgeyA0LCAxNSwgMTIsIDF9LCB7IDMsIDEzLCAxMywgM30s
IH19LAogICAgICAgIHswLjQyLCB7eyA3LCAxNiwgOSwgMH0sIHsgNywgMTYsIDksIDB9LCB7IDUs
IDE1LCAxMSwgMX0sIHsgNCwgMTUsIDEyLCAxfSwgeyAzLCAxMywgMTMsIDN9LCB9fSwKICAgICAg
ICB7MC40Mywge3sgNywgMTYsIDksIDB9LCB7IDcsIDE2LCA5LCAwfSwgeyA1LCAxNSwgMTEsIDF9
LCB7IDQsIDE1LCAxMiwgMX0sIHsgMywgMTMsIDEzLCAzfSwgfX0sCiAgICAgICAgezAuNDQsIHt7
IDcsIDE2LCA5LCAwfSwgeyA3LCAxNiwgOSwgMH0sIHsgNSwgMTUsIDExLCAxfSwgeyA0LCAxNSwg
MTIsIDF9LCB7IDMsIDEzLCAxMywgM30sIH19LAogICAgICAgIHswLjQ1LCB7eyA3LCAxNiwgOSwg
MH0sIHsgNywgMTYsIDksIDB9LCB7IDUsIDE1LCAxMSwgMX0sIHsgNCwgMTUsIDEyLCAxfSwgeyAz
LCAxMywgMTMsIDN9LCB9fSwKICAgICAgICB7MC40Niwge3sgNywgMTYsIDksIDB9LCB7IDcsIDE2
LCA5LCAwfSwgeyA1LCAxNSwgMTEsIDF9LCB7IDQsIDE1LCAxMiwgMX0sIHsgMywgMTMsIDEzLCAz
fSwgfX0sCiAgICAgICAgezAuNDcsIHt7IDcsIDE2LCA5LCAwfSwgeyA3LCAxNiwgOSwgMH0sIHsg
NSwgMTUsIDExLCAxfSwgeyA0LCAxNSwgMTIsIDF9LCB7IDMsIDEzLCAxMywgM30sIH19LAogICAg
ICAgIHswLjQ4LCB7eyA3LCAxNiwgOSwgMH0sIHsgNywgMTYsIDksIDB9LCB7IDUsIDE1LCAxMSwg
MX0sIHsgNCwgMTUsIDEyLCAxfSwgeyAzLCAxMywgMTMsIDN9LCB9fSwKICAgICAgICB7MC40OSwg
e3sgNywgMTYsIDksIDB9LCB7IDcsIDE2LCA5LCAwfSwgeyA1LCAxNSwgMTEsIDF9LCB7IDQsIDE1
LCAxMiwgMX0sIHsgMywgMTMsIDEzLCAzfSwgfX0sCiAgICAgICAgezAuNTAsIHt7IDcsIDE2LCA5
LCAwfSwgeyA3LCAxNiwgOSwgMH0sIHsgNSwgMTUsIDExLCAxfSwgeyA0LCAxNSwgMTIsIDF9LCB7
IDMsIDEzLCAxMywgM30sIH19LAogICAgICAgIHswLjUxLCB7eyA3LCAxNywgOCwgMH0sIHsgNiwg
MTcsIDksIDB9LCB7IDUsIDE1LCAxMSwgMX0sIHsgNCwgMTUsIDEyLCAxfSwgeyAyLCAxNCwgMTQs
IDJ9LCB9fSwKICAgICAgICB7MC41Miwge3sgNywgMTcsIDgsIDB9LCB7IDYsIDE3LCA5LCAwfSwg
eyA1LCAxNiwgMTEsIDB9LCB7IDMsIDE1LCAxMywgMX0sIHsgMiwgMTQsIDE0LCAyfSwgfX0sCiAg
ICAgICAgezAuNTMsIHt7IDcsIDE3LCA4LCAwfSwgeyA2LCAxNywgOSwgMH0sIHsgNSwgMTYsIDEx
LCAwfSwgeyAzLCAxNSwgMTMsIDF9LCB7IDIsIDE0LCAxNCwgMn0sIH19LAogICAgICAgIHswLjU0
LCB7eyA3LCAxNywgOCwgMH0sIHsgNiwgMTcsIDksIDB9LCB7IDQsIDE3LCAxMSwgMH0sIHsgMywg
MTUsIDEzLCAxfSwgeyAyLCAxNCwgMTQsIDJ9LCB9fSwKICAgICAgICB7MC41NSwge3sgNywgMTgs
IDcsIDB9LCB7IDYsIDE3LCA5LCAwfSwgeyA0LCAxNywgMTEsIDB9LCB7IDMsIDE1LCAxMywgMX0s
IHsgMSwgMTUsIDE1LCAxfSwgfX0sCiAgICAgICAgezAuNTYsIHt7IDcsIDE4LCA3LCAwfSwgeyA1
LCAxOCwgOSwgMH0sIHsgNCwgMTcsIDExLCAwfSwgeyAyLCAxNywgMTMsIDB9LCB7IDEsIDE1LCAx
NSwgMX0sIH19LAogICAgICAgIHswLjU3LCB7eyA3LCAxOCwgNywgMH0sIHsgNSwgMTgsIDksIDB9
LCB7IDQsIDE3LCAxMSwgMH0sIHsgMiwgMTcsIDEzLCAwfSwgeyAxLCAxNSwgMTUsIDF9LCB9fSwK
ICAgICAgICB7MC41OCwge3sgNywgMTgsIDcsIDB9LCB7IDUsIDE4LCA5LCAwfSwgeyA0LCAxNywg
MTEsIDB9LCB7IDIsIDE3LCAxMywgMH0sIHsgMSwgMTUsIDE1LCAxfSwgfX0sCiAgICAgICAgezAu
NTksIHt7IDcsIDE4LCA3LCAwfSwgeyA1LCAxOCwgOSwgMH0sIHsgNCwgMTcsIDExLCAwfSwgeyAy
LCAxNywgMTMsIDB9LCB7IDEsIDE1LCAxNSwgMX0sIH19LAogICAgICAgIHswLjYwLCB7eyA3LCAx
OCwgOCwgLTF9LCB7IDYsIDE3LCAxMCwgLTF9LCB7IDQsIDE3LCAxMSwgMH0sIHsgMiwgMTcsIDEz
LCAwfSwgeyAxLCAxNSwgMTUsIDF9LCB9fSwKICAgICAgICB7MC42MSwge3sgNywgMTgsIDgsIC0x
fSwgeyA2LCAxNywgMTAsIC0xfSwgeyA0LCAxNywgMTEsIDB9LCB7IDIsIDE3LCAxMywgMH0sIHsg
MSwgMTUsIDE1LCAxfSwgfX0sCiAgICAgICAgezAuNjIsIHt7IDcsIDE4LCA4LCAtMX0sIHsgNiwg
MTcsIDEwLCAtMX0sIHsgNCwgMTcsIDExLCAwfSwgeyAyLCAxNywgMTMsIDB9LCB7IDEsIDE1LCAx
NSwgMX0sIH19LAogICAgICAgIHswLjYzLCB7eyA3LCAxOCwgOCwgLTF9LCB7IDYsIDE3LCAxMCwg
LTF9LCB7IDQsIDE3LCAxMSwgMH0sIHsgMiwgMTcsIDEzLCAwfSwgeyAxLCAxNSwgMTUsIDF9LCB9
fSwKICAgICAgICB7MC42NCwge3sgNywgMTgsIDgsIC0xfSwgeyA2LCAxNywgMTAsIC0xfSwgeyA0
LCAxNywgMTIsIC0xfSwgeyAyLCAxNywgMTMsIDB9LCB7IDEsIDE1LCAxNSwgMX0sIH19LAogICAg
ICAgIHswLjY1LCB7eyA3LCAxOCwgOCwgLTF9LCB7IDYsIDE3LCAxMCwgLTF9LCB7IDQsIDE3LCAx
MiwgLTF9LCB7IDIsIDE3LCAxMywgMH0sIHsgMCwgMTYsIDE2LCAwfSwgfX0sCiAgICAgICAgezAu
NjYsIHt7IDcsIDE4LCA4LCAtMX0sIHsgNiwgMTgsIDEwLCAtMn0sIHsgNCwgMTcsIDEyLCAtMX0s
IHsgMiwgMTcsIDEzLCAwfSwgeyAwLCAxNiwgMTYsIDB9LCB9fSwKICAgICAgICB7MC42Nywge3sg
NywgMjAsIDcsIC0yfSwgeyA1LCAxOSwgMTAsIC0yfSwgeyAzLCAxOCwgMTIsIC0xfSwgeyAyLCAx
NywgMTMsIDB9LCB7IDAsIDE2LCAxNiwgMH0sIH19LAogICAgICAgIHswLjY4LCB7eyA3LCAyMCwg
NywgLTJ9LCB7IDUsIDE5LCAxMCwgLTJ9LCB7IDMsIDE5LCAxMiwgLTJ9LCB7IDEsIDE4LCAxNCwg
LTF9LCB7IDAsIDE2LCAxNiwgMH0sIH19LAogICAgICAgIHswLjY5LCB7eyA3LCAyMCwgNywgLTJ9
LCB7IDUsIDE5LCAxMCwgLTJ9LCB7IDMsIDE5LCAxMiwgLTJ9LCB7IDEsIDE4LCAxNCwgLTF9LCB7
IDAsIDE2LCAxNiwgMH0sIH19LAogICAgICAgIHswLjcwLCB7eyA3LCAyMCwgNywgLTJ9LCB7IDUs
IDIwLCA5LCAtMn0sIHsgMywgMTksIDEyLCAtMn0sIHsgMSwgMTgsIDE0LCAtMX0sIHsgMCwgMTYs
IDE2LCAwfSwgfX0sCiAgICAgICAgezAuNzEsIHt7IDcsIDIwLCA3LCAtMn0sIHsgNSwgMjAsIDks
IC0yfSwgeyAzLCAxOSwgMTIsIC0yfSwgeyAxLCAxOCwgMTQsIC0xfSwgeyAwLCAxNiwgMTYsIDB9
LCB9fSwKICAgICAgICB7MC43Miwge3sgNywgMjAsIDcsIC0yfSwgeyA1LCAyMCwgOSwgLTJ9LCB7
IDIsIDIwLCAxMiwgLTJ9LCB7IDAsIDE5LCAxNSwgLTJ9LCB7LTEsIDE3LCAxNywgLTF9LCB9fSwK
ICAgICAgICB7MC43Mywge3sgNywgMjAsIDcsIC0yfSwgeyA0LCAyMSwgOSwgLTJ9LCB7IDIsIDIw
LCAxMiwgLTJ9LCB7IDAsIDE5LCAxNSwgLTJ9LCB7LTEsIDE3LCAxNywgLTF9LCB9fSwKICAgICAg
ICB7MC43NCwge3sgNiwgMjIsIDYsIC0yfSwgeyA0LCAyMSwgOSwgLTJ9LCB7IDIsIDIwLCAxMiwg
LTJ9LCB7IDAsIDE5LCAxNSwgLTJ9LCB7LTEsIDE3LCAxNywgLTF9LCB9fSwKICAgICAgICB7MC43
NSwge3sgNiwgMjIsIDYsIC0yfSwgeyA0LCAyMSwgOSwgLTJ9LCB7IDEsIDIxLCAxMiwgLTJ9LCB7
IDAsIDE5LCAxNSwgLTJ9LCB7LTEsIDE3LCAxNywgLTF9LCB9fSwKICAgICAgICB7MC43Niwge3sg
NiwgMjIsIDYsIC0yfSwgeyA0LCAyMSwgOSwgLTJ9LCB7IDEsIDIxLCAxMiwgLTJ9LCB7IDAsIDE5
LCAxNSwgLTJ9LCB7LTEsIDE3LCAxNywgLTF9LCB9fSwKICAgICAgICB7MC43Nywge3sgNiwgMjIs
IDYsIC0yfSwgeyAzLCAyMiwgOSwgLTJ9LCB7IDEsIDIyLCAxMiwgLTN9LCB7IDAsIDE5LCAxNSwg
LTJ9LCB7LTIsIDE4LCAxOCwgLTJ9LCB9fSwKICAgICAgICB7MC43OCwge3sgNiwgMjEsIDYsIC0x
fSwgeyAzLCAyMiwgOSwgLTJ9LCB7IDEsIDIyLCAxMiwgLTN9LCB7IDAsIDE5LCAxNSwgLTJ9LCB7
LTIsIDE4LCAxOCwgLTJ9LCB9fSwKICAgICAgICB7MC43OSwge3sgNSwgMjMsIDUsIC0xfSwgeyAz
LCAyMiwgOSwgLTJ9LCB7IDAsIDIzLCAxMiwgLTN9LCB7LTEsIDIxLCAxNSwgLTN9LCB7LTIsIDE4
LCAxOCwgLTJ9LCB9fSwKICAgICAgICB7MC44MCwge3sgNSwgMjMsIDUsIC0xfSwgeyAzLCAyMywg
OCwgLTJ9LCB7IDAsIDIzLCAxMiwgLTN9LCB7LTEsIDIxLCAxNSwgLTN9LCB7LTIsIDE4LCAxOCwg
LTJ9LCB9fSwKICAgICAgICB7MC44MSwge3sgNSwgMjMsIDUsIC0xfSwgeyAyLCAyNCwgOCwgLTJ9
LCB7IDAsIDIzLCAxMiwgLTN9LCB7LTEsIDIxLCAxNSwgLTN9LCB7LTIsIDE4LCAxOCwgLTJ9LCB9
fSwKICAgICAgICB7MC44Miwge3sgNSwgMjMsIDUsIC0xfSwgeyAyLCAyNCwgOCwgLTJ9LCB7IDAs
IDIzLCAxMiwgLTN9LCB7LTEsIDIxLCAxNSwgLTN9LCB7LTMsIDE5LCAxOSwgLTN9LCB9fSwKICAg
ICAgICB7MC44Mywge3sgNSwgMjMsIDUsIC0xfSwgeyAyLCAyNCwgOCwgLTJ9LCB7IDAsIDIzLCAx
MSwgLTJ9LCB7LTIsIDIyLCAxNSwgLTN9LCB7LTMsIDE5LCAxOSwgLTN9LCB9fSwKICAgICAgICB7
MC44NCwge3sgNCwgMjUsIDQsIC0xfSwgeyAxLCAyNSwgOCwgLTJ9LCB7IDAsIDIzLCAxMSwgLTJ9
LCB7LTIsIDIyLCAxNSwgLTN9LCB7LTMsIDE5LCAxOSwgLTN9LCB9fSwKICAgICAgICB7MC44NSwg
e3sgNCwgMjUsIDQsIC0xfSwgeyAxLCAyNSwgOCwgLTJ9LCB7IDAsIDIzLCAxMSwgLTJ9LCB7LTIs
IDIyLCAxNSwgLTN9LCB7LTMsIDE5LCAxOSwgLTN9LCB9fSwKICAgICAgICB7MC44Niwge3sgNCwg
MjQsIDQsIDB9LCB7IDEsIDI1LCA3LCAtMX0sIHstMSwgMjQsIDExLCAtMn0sIHstMiwgMjIsIDE1
LCAtM30sIHstMywgMTksIDE5LCAtM30sIH19LAogICAgICAgIHswLjg3LCB7eyA0LCAyNCwgNCwg
MH0sIHsgMSwgMjUsIDcsIC0xfSwgey0xLCAyNCwgMTEsIC0yfSwgey0yLCAyMiwgMTUsIC0zfSwg
ey0zLCAxOSwgMTksIC0zfSwgfX0sCiAgICAgICAgezAuODgsIHt7IDMsIDI2LCAzLCAwfSwgeyAw
LCAyNiwgNywgLTF9LCB7LTEsIDI0LCAxMSwgLTJ9LCB7LTMsIDIzLCAxNSwgLTN9LCB7LTMsIDE5
LCAxOSwgLTN9LCB9fSwKICAgICAgICB7MC44OSwge3sgMywgMjYsIDMsIDB9LCB7IDAsIDI2LCA3
LCAtMX0sIHstMSwgMjQsIDExLCAtMn0sIHstMywgMjMsIDE1LCAtM30sIHstMywgMTksIDE5LCAt
M30sIH19LAogICAgICAgIHswLjkwLCB7eyAzLCAyNiwgMywgMH0sIHsgMCwgMjYsIDcsIC0xfSwg
ey0yLCAyNSwgMTEsIC0yfSwgey0zLCAyMywgMTUsIC0zfSwgey0zLCAxOSwgMTksIC0zfSwgfX0s
CiAgICAgICAgezAuOTEsIHt7IDMsIDI2LCAzLCAwfSwgeyAwLCAyNywgNiwgLTF9LCB7LTIsIDI1
LCAxMSwgLTJ9LCB7LTMsIDIzLCAxNSwgLTN9LCB7LTMsIDE5LCAxOSwgLTN9LCB9fSwKICAgICAg
ICB7MC45Miwge3sgMiwgMjgsIDIsIDB9LCB7IDAsIDI3LCA2LCAtMX0sIHstMiwgMjUsIDExLCAt
Mn0sIHstMywgMjMsIDE1LCAtM30sIHstMywgMTksIDE5LCAtM30sIH19LAogICAgICAgIHswLjkz
LCB7eyAyLCAyOCwgMiwgMH0sIHsgMCwgMjYsIDYsIDB9LCB7LTIsIDI1LCAxMCwgLTF9LCB7LTMs
IDIzLCAxNSwgLTN9LCB7LTMsIDE5LCAxOSwgLTN9LCB9fSwKICAgICAgICB7MC45NCwge3sgMiwg
MjgsIDIsIDB9LCB7IDAsIDI2LCA2LCAwfSwgey0yLCAyNSwgMTAsIC0xfSwgey0zLCAyMywgMTUs
IC0zfSwgey0zLCAxOSwgMTksIC0zfSwgfX0sCiAgICAgICAgezAuOTUsIHt7IDEsIDMwLCAxLCAw
fSwgey0xLCAyOCwgNSwgMH0sIHstMywgMjYsIDEwLCAtMX0sIHstMywgMjMsIDE0LCAtMn0sIHst
MywgMTksIDE5LCAtM30sIH19LAogICAgICAgIHswLjk2LCB7eyAxLCAzMCwgMSwgMH0sIHstMSwg
MjgsIDUsIDB9LCB7LTMsIDI2LCAxMCwgLTF9LCB7LTMsIDIzLCAxNCwgLTJ9LCB7LTMsIDE5LCAx
OSwgLTN9LCB9fSwKICAgICAgICB7MC45Nywge3sgMSwgMzAsIDEsIDB9LCB7LTEsIDI4LCA1LCAw
fSwgey0zLCAyNiwgMTAsIC0xfSwgey0zLCAyMywgMTQsIC0yfSwgey0zLCAxOSwgMTksIC0zfSwg
fX0sCiAgICAgICAgezAuOTgsIHt7IDEsIDMwLCAxLCAwfSwgey0yLCAyOSwgNSwgMH0sIHstMywg
MjcsIDksIC0xfSwgey0zLCAyMywgMTQsIC0yfSwgey0zLCAxOSwgMTksIC0zfSwgfX0sCiAgICAg
ICAgezAuOTksIHt7IDAsIDMyLCAwLCAwfSwgey0yLCAyOSwgNSwgMH0sIHstMywgMjcsIDksIC0x
fSwgey00LCAyNCwgMTQsIC0yfSwgey0zLCAxOSwgMTksIC0zfSwgfX0sCiAgICAgICAgezEuMDAs
IHt7IDAsIDMyLCAwLCAwfSwgey0yLCAyOSwgNSwgMH0sIHstMywgMjcsIDksIC0xfSwgey00LCAy
NCwgMTQsIC0yfSwgey0zLCAxOSwgMTksIC0zfSwgfX0KICAgIH07CgogICAgZG91YmxlIERTUjsK
CiAgICB1bnNpZ25lZCBBcnJheUVsZW1lbnQ7CgogICAgRFNSID0gKGRvdWJsZSkoMTw8MHhjKS92
YWxfT1YwX1AxX0hfSU5DOwogICAgaWYgKERTUjwuMjUpIERTUj0uMjU7CiAgICBpZiAoRFNSPjEp
IERTUj0xOwoKICAgIEFycmF5RWxlbWVudCA9IChpbnQpKChEU1ItMC4yNSkgKiAxMDApOwogICAg
YmVzci5mb3VyX3RhcF9jb2VmZlswXSA9IChBcnJheU9mU2V0c1tBcnJheUVsZW1lbnRdLkNvZWZT
ZXRbMF1bMF0gJiAweGYpIHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEFycmF5
T2ZTZXRzW0FycmF5RWxlbWVudF0uQ29lZlNldFswXVsxXSAmIDB4N2YpPDw4KSB8CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKChBcnJheU9mU2V0c1tBcnJheUVsZW1lbnRdLkNvZWZT
ZXRbMF1bMl0gJiAweDdmKTw8MTYpIHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
KEFycmF5T2ZTZXRzW0FycmF5RWxlbWVudF0uQ29lZlNldFswXVszXSAmIDB4Zik8PDI0KTsKICAg
IGJlc3IuZm91cl90YXBfY29lZmZbMV0gPSAoQXJyYXlPZlNldHNbQXJyYXlFbGVtZW50XS5Db2Vm
U2V0WzFdWzBdICYgMHhmKSB8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChBcnJh
eU9mU2V0c1tBcnJheUVsZW1lbnRdLkNvZWZTZXRbMV1bMV0gJiAweDdmKTw8OCkgfAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICgoQXJyYXlPZlNldHNbQXJyYXlFbGVtZW50XS5Db2Vm
U2V0WzFdWzJdICYgMHg3Zik8PDE2KSB8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KChBcnJheU9mU2V0c1tBcnJheUVsZW1lbnRdLkNvZWZTZXRbMV1bM10gJiAweGYpPDwyNCk7CiAg
ICBiZXNyLmZvdXJfdGFwX2NvZWZmWzJdID0gKEFycmF5T2ZTZXRzW0FycmF5RWxlbWVudF0uQ29l
ZlNldFsyXVswXSAmIDB4ZikgfAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoQXJy
YXlPZlNldHNbQXJyYXlFbGVtZW50XS5Db2VmU2V0WzJdWzFdICYgMHg3Zik8PDgpIHwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAoKEFycmF5T2ZTZXRzW0FycmF5RWxlbWVudF0uQ29l
ZlNldFsyXVsyXSAmIDB4N2YpPDwxNikgfAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICgoQXJyYXlPZlNldHNbQXJyYXlFbGVtZW50XS5Db2VmU2V0WzJdWzNdICYgMHhmKTw8MjQpOwog
ICAgYmVzci5mb3VyX3RhcF9jb2VmZlszXSA9IChBcnJheU9mU2V0c1tBcnJheUVsZW1lbnRdLkNv
ZWZTZXRbM11bMF0gJiAweGYpIHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEFy
cmF5T2ZTZXRzW0FycmF5RWxlbWVudF0uQ29lZlNldFszXVsxXSAmIDB4N2YpPDw4KSB8CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKChBcnJheU9mU2V0c1tBcnJheUVsZW1lbnRdLkNv
ZWZTZXRbM11bMl0gJiAweDdmKTw8MTYpIHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAoKEFycmF5T2ZTZXRzW0FycmF5RWxlbWVudF0uQ29lZlNldFszXVszXSAmIDB4Zik8PDI0KTsK
ICAgIGJlc3IuZm91cl90YXBfY29lZmZbNF0gPSAoQXJyYXlPZlNldHNbQXJyYXlFbGVtZW50XS5D
b2VmU2V0WzRdWzBdICYgMHhmKSB8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChB
cnJheU9mU2V0c1tBcnJheUVsZW1lbnRdLkNvZWZTZXRbNF1bMV0gJiAweDdmKTw8OCkgfAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoQXJyYXlPZlNldHNbQXJyYXlFbGVtZW50XS5D
b2VmU2V0WzRdWzJdICYgMHg3Zik8PDE2KSB8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKChBcnJheU9mU2V0c1tBcnJheUVsZW1lbnRdLkNvZWZTZXRbNF1bM10gJiAweGYpPDwyNCk7
CgoKCn0KCgoKCmNvbnN0IGRvdWJsZSBNaW5IU2NhbGVIYXJkPTAuNzU7CgpzdGF0aWMgaW50IHJh
ZGVvbl92aWRfaW5pdF92aWRlbyggdmlkaXhfcGxheWJhY2tfdCAqY29uZmlnICkKewogICAgZG91
YmxlIFZfc2NhbGVfcmF0aW87CiAgICB1aW50MzJfdCBpLHNyY193LHNyY19oLGRlc3RfdyxkZXN0
X2gscGl0Y2gsbGVmdCxsZWZ0VVYsdG9wLGhfaW5jOwogICAgdWludDMyX3QgdmFsX09WMF9QMV9I
X0lOQyx2YWxfT1YwX1AxX0hfU1RFUF9CWSx2YWxfT1YwX1AyM19IX0lOQyx2YWxfT1YwX1AyM19I
X1NURVBfQlk7CiAgICB1aW50MzJfdCB2YWxfT1YwX1AxX1hfU1RBUlQsdmFsX09WMF9QMl9YX1NU
QVJUOwogICAgdWludDMyX3QgdmFsX09WMF9QMV9NQVhfTE5fSU5fUEVSX0xOX09VVCx2YWxfT1Yw
X1AyM19NQVhfTE5fSU5fUEVSX0xOX09VVDsKICAgIHVpbnQzMl90IENSVF9WX0lOQzsKICAgIHVp
bnQzMl90IEJ5dGVzUGVyT2N0V29yZCxMb2dNZW1Xb3Jkc0luQnl0ZXMsTWVtV29yZHNJbkJ5dGVz
LExvZ1RpbGVXaWR0aEluTWVtV29yZHM7CiAgICB1aW50MzJfdCBUaWxlV2lkdGhJbk1lbVdvcmRz
LFRpbGVXaWR0aEluQnl0ZXMsTG9nVGlsZUhlaWdodCxUaWxlSGVpZ2h0OwogICAgdWludDMyX3Qg
UGFnZVNpemVJbkJ5dGVzLE9WMExCX1Jvd3M7CiAgICB1aW50MzJfdCBTb3VyY2VXaWR0aEluTWVt
V29yZHMsU291cmNlVVZXaWR0aEluTWVtV29yZHM7CiAgICB1aW50MzJfdCBTb3VyY2VXaWR0aElu
UGl4ZWxzLFNvdXJjZVVWV2lkdGhJblBpeGVsczsKICAgIHVpbnQzMl90IFJpZ2h0UGl4ZWwsUmln
aHRVVlBpeGVsLExlZnRQaXhlbCxMZWZ0VVZQaXhlbDsKICAgIGludCBpc180MDAsaXNfNDEwLGlz
XzQyMCxiZXN0X3BpdGNoLG1waXRjaDsKICAgIGludCBob3J6X3JlcGxfZmFjdG9yLGludGVybGFj
ZV9mYWN0b3I7CiAgICBpbnQgQnl0ZXNQZXJQaXhlbCxCeXRlc1BlclVWUGl4ZWwsSG9yelVWU3Vi
U2FtcGxlLFZlcnRVVlN1YlNhbXBsZTsKICAgIGludCBEaXNhbGxvd0ZvdXJUYXBWZXJ0RmlsdGVy
aW5nLERpc2FsbG93Rm91clRhcFVWVmVydEZpbHRlcmluZzsKCiAgICByYWRlb25fdmlkX3N0b3Bf
dmlkZW8oKTsKICAgIGxlZnQgPSBjb25maWctPnNyYy54IDw8IDE2OwogICAgdG9wID0gY29uZmln
LT5zcmMueSA8PCAxNjsKICAgIHNyY19oID0gY29uZmlnLT5zcmMuaDsKICAgIHNyY193ID0gY29u
ZmlnLT5zcmMudzsKICAgIGlzXzQwMCA9IGlzXzQxMCA9IGlzXzQyMCA9IDA7CiAgICBpZihjb25m
aWctPmZvdXJjYyA9PSAoKCh1bnNpZ25lZCkoJ1knKTw8MCl8KCh1bnNpZ25lZCkoJ1YnKTw8OCl8
KCh1bnNpZ25lZCkoJzEnKTw8MTYpfCgodW5zaWduZWQpKCcyJyk8PDI0KSkgfHwKICAgICAgIGNv
bmZpZy0+Zm91cmNjID09ICgoKHVuc2lnbmVkKSgnSScpPDwwKXwoKHVuc2lnbmVkKSgnNCcpPDw4
KXwoKHVuc2lnbmVkKSgnMicpPDwxNil8KCh1bnNpZ25lZCkoJzAnKTw8MjQpKSB8fAogICAgICAg
Y29uZmlnLT5mb3VyY2MgPT0gKCgodW5zaWduZWQpKCdJJyk8PDApfCgodW5zaWduZWQpKCdZJyk8
PDgpfCgodW5zaWduZWQpKCdVJyk8PDE2KXwoKHVuc2lnbmVkKSgnVicpPDwyNCkpKSBpc180MjAg
PSAxOwogICAgaWYoY29uZmlnLT5mb3VyY2MgPT0gKCgodW5zaWduZWQpKCdZJyk8PDApfCgodW5z
aWduZWQpKCdWJyk8PDgpfCgodW5zaWduZWQpKCdVJyk8PDE2KXwoKHVuc2lnbmVkKSgnOScpPDwy
NCkpIHx8CiAgICAgICBjb25maWctPmZvdXJjYyA9PSAoKCh1bnNpZ25lZCkoJ0knKTw8MCl8KCh1
bnNpZ25lZCkoJ0YnKTw8OCl8KCh1bnNpZ25lZCkoJzAnKTw8MTYpfCgodW5zaWduZWQpKCc5Jyk8
PDI0KSkpIGlzXzQxMCA9IDE7CiAgICBpZihjb25maWctPmZvdXJjYyA9PSAoKCh1bnNpZ25lZCko
J1knKTw8MCl8KCh1bnNpZ25lZCkoJzgnKTw8OCl8KCh1bnNpZ25lZCkoJzAnKTw8MTYpfCgodW5z
aWduZWQpKCcwJyk8PDI0KSkpIGlzXzQwMCA9IDE7CiAgICBiZXN0X3BpdGNoID0gcmFkZW9uX3F1
ZXJ5X3BpdGNoKGNvbmZpZy0+Zm91cmNjLCZjb25maWctPnNyYy5waXRjaCk7CiAgICBtcGl0Y2gg
PSBiZXN0X3BpdGNoLTE7CiAgICBCeXRlc1Blck9jdFdvcmQgPSAxNjsKICAgIExvZ01lbVdvcmRz
SW5CeXRlcyA9IDQ7CiAgICBNZW1Xb3Jkc0luQnl0ZXMgPSAxPDxMb2dNZW1Xb3Jkc0luQnl0ZXM7
CiAgICBMb2dUaWxlV2lkdGhJbk1lbVdvcmRzID0gMjsKICAgIFRpbGVXaWR0aEluTWVtV29yZHMg
PSAxPDxMb2dUaWxlV2lkdGhJbk1lbVdvcmRzOwogICAgVGlsZVdpZHRoSW5CeXRlcyA9IDE8PChM
b2dUaWxlV2lkdGhJbk1lbVdvcmRzK0xvZ01lbVdvcmRzSW5CeXRlcyk7CiAgICBMb2dUaWxlSGVp
Z2h0ID0gNDsKICAgIFRpbGVIZWlnaHQgPSAxPDxMb2dUaWxlSGVpZ2h0OwogICAgUGFnZVNpemVJ
bkJ5dGVzID0gNjQqTWVtV29yZHNJbkJ5dGVzOwogICAgT1YwTEJfUm93cyA9IDk2OwogICAgaF9p
bmMgPSAxOwogICAgc3dpdGNoKGNvbmZpZy0+Zm91cmNjKQogICAgewoKICAgICAgICBjYXNlICgo
KHVuc2lnbmVkKSgnWScpPDwwKXwoKHVuc2lnbmVkKSgnOCcpPDw4KXwoKHVuc2lnbmVkKSgnMCcp
PDwxNil8KCh1bnNpZ25lZCkoJzAnKTw8MjQpKToKCiAgICAgICAgY2FzZSAoKCh1bnNpZ25lZCko
J1knKTw8MCl8KCh1bnNpZ25lZCkoJ1YnKTw8OCl8KCh1bnNpZ25lZCkoJ1UnKTw8MTYpfCgodW5z
aWduZWQpKCc5Jyk8PDI0KSk6CiAgICAgICAgY2FzZSAoKCh1bnNpZ25lZCkoJ0knKTw8MCl8KCh1
bnNpZ25lZCkoJ0YnKTw8OCl8KCh1bnNpZ25lZCkoJzAnKTw8MTYpfCgodW5zaWduZWQpKCc5Jyk8
PDI0KSk6CgogICAgICAgIGNhc2UgKCgodW5zaWduZWQpKCdJJyk8PDApfCgodW5zaWduZWQpKCdZ
Jyk8PDgpfCgodW5zaWduZWQpKCdVJyk8PDE2KXwoKHVuc2lnbmVkKSgnVicpPDwyNCkpOgogICAg
ICAgIGNhc2UgKCgodW5zaWduZWQpKCdZJyk8PDApfCgodW5zaWduZWQpKCdWJyk8PDgpfCgodW5z
aWduZWQpKCcxJyk8PDE2KXwoKHVuc2lnbmVkKSgnMicpPDwyNCkpOgogICAgICAgIGNhc2UgKCgo
dW5zaWduZWQpKCdJJyk8PDApfCgodW5zaWduZWQpKCc0Jyk8PDgpfCgodW5zaWduZWQpKCcyJyk8
PDE2KXwoKHVuc2lnbmVkKSgnMCcpPDwyNCkpOiBwaXRjaCA9IChzcmNfdyArIG1waXRjaCkgJiB+
bXBpdGNoOwogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy0+ZGVzdC5waXRjaC55ID0K
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWctPmRlc3QucGl0Y2gudSA9CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uZmlnLT5kZXN0LnBpdGNoLnYgPSBiZXN0X3BpdGNoOwogICAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlICgoKHVuc2lnbmVkKSgn
UicpPDwwKXwoKHVuc2lnbmVkKSgnRycpPDw4KXwoKHVuc2lnbmVkKSgnQicpPDwxNil8KCh1bnNp
Z25lZCkoMzIpPDwyNCkpOgogICAgICAgIGNhc2UgKCgodW5zaWduZWQpKCdCJyk8PDApfCgodW5z
aWduZWQpKCdHJyk8PDgpfCgodW5zaWduZWQpKCdSJyk8PDE2KXwoKHVuc2lnbmVkKSgzMik8PDI0
KSk6IHBpdGNoID0gKHNyY193KjQgKyBtcGl0Y2gpICYgfm1waXRjaDsKICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25maWctPmRlc3QucGl0Y2gueSA9CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uZmlnLT5kZXN0LnBpdGNoLnUgPQogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZp
Zy0+ZGVzdC5waXRjaC52ID0gYmVzdF9waXRjaDsKICAgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKCgogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgcGl0Y2gg
PSAoKHNyY193KjIpICsgbXBpdGNoKSAmIH5tcGl0Y2g7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uZmlnLT5kZXN0LnBpdGNoLnkgPQogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZp
Zy0+ZGVzdC5waXRjaC51ID0KICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWctPmRlc3Qu
cGl0Y2gudiA9IGJlc3RfcGl0Y2g7CiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICB9CiAgICBiZXNyLmxvYWRfcHJnX3N0YXJ0PTA7CiAgICBiZXNyLnN3YXBfdXY9MDsKICAgIHN3
aXRjaChjb25maWctPmZvdXJjYykKICAgIHsKICAgICAgICBjYXNlICgoKHVuc2lnbmVkKSgnUicp
PDwwKXwoKHVuc2lnbmVkKSgnRycpPDw4KXwoKHVuc2lnbmVkKSgnQicpPDwxNil8KCh1bnNpZ25l
ZCkoMTUpPDwyNCkpOgogICAgICAgICAgICAgICAgICAgICAgICAgICBiZXNyLnN3YXBfdXY9MTsK
ICAgICAgICBjYXNlICgoKHVuc2lnbmVkKSgnQicpPDwwKXwoKHVuc2lnbmVkKSgnRycpPDw4KXwo
KHVuc2lnbmVkKSgnUicpPDwxNil8KCh1bnNpZ25lZCkoMTUpPDwyNCkpOiBiZXNyLnN1cmZfaWQg
PSAweDAwMDAwMzAwTD4+ODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVzci5sb2FkX3By
Z19zdGFydCA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNh
c2UgKCgodW5zaWduZWQpKCdSJyk8PDApfCgodW5zaWduZWQpKCdHJyk8PDgpfCgodW5zaWduZWQp
KCdCJyk8PDE2KXwoKHVuc2lnbmVkKSgxNik8PDI0KSk6CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJlc3Iuc3dhcF91dj0xOwogICAgICAgIGNhc2UgKCgodW5zaWduZWQpKCdCJyk8PDApfCgo
dW5zaWduZWQpKCdHJyk8PDgpfCgodW5zaWduZWQpKCdSJyk8PDE2KXwoKHVuc2lnbmVkKSgxNik8
PDI0KSk6IGJlc3Iuc3VyZl9pZCA9IDB4MDAwMDA0MDBMPj44OwogICAgICAgICAgICAgICAgICAg
ICAgICAgICBiZXNyLmxvYWRfcHJnX3N0YXJ0ID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgY2FzZSAoKCh1bnNpZ25lZCkoJ1InKTw8MCl8KCh1bnNpZ25lZCko
J0cnKTw8OCl8KCh1bnNpZ25lZCkoJ0InKTw8MTYpfCgodW5zaWduZWQpKDMyKTw8MjQpKToKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYmVzci5zd2FwX3V2PTE7CiAgICAgICAgY2FzZSAoKCh1
bnNpZ25lZCkoJ0InKTw8MCl8KCh1bnNpZ25lZCkoJ0cnKTw8OCl8KCh1bnNpZ25lZCkoJ1InKTw8
MTYpfCgodW5zaWduZWQpKDMyKTw8MjQpKTogYmVzci5zdXJmX2lkID0gMHgwMDAwMDYwMEw+Pjg7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlc3IubG9hZF9wcmdfc3RhcnQgPSAxOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAoKCh1bnNpZ25lZCko
J0knKTw8MCl8KCh1bnNpZ25lZCkoJ0YnKTw8OCl8KCh1bnNpZ25lZCkoJzAnKTw8MTYpfCgodW5z
aWduZWQpKCc5Jyk8PDI0KSk6CiAgICAgICAgY2FzZSAoKCh1bnNpZ25lZCkoJ1knKTw8MCl8KCh1
bnNpZ25lZCkoJ1YnKTw8OCl8KCh1bnNpZ25lZCkoJ1UnKTw8MTYpfCgodW5zaWduZWQpKCc5Jyk8
PDI0KSk6IGJlc3Iuc3VyZl9pZCA9IDB4MDAwMDA5MDBMPj44OwogICAgICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAoKCh1bnNpZ25lZCkoJ1knKTw8MCl8KCh1bnNp
Z25lZCkoJzgnKTw8OCl8KCh1bnNpZ25lZCkoJzAnKTw8MTYpfCgodW5zaWduZWQpKCcwJyk8PDI0
KSk6CgogICAgICAgIGNhc2UgKCgodW5zaWduZWQpKCdJJyk8PDApfCgodW5zaWduZWQpKCdZJyk8
PDgpfCgodW5zaWduZWQpKCdVJyk8PDE2KXwoKHVuc2lnbmVkKSgnVicpPDwyNCkpOgogICAgICAg
IGNhc2UgKCgodW5zaWduZWQpKCdJJyk8PDApfCgodW5zaWduZWQpKCc0Jyk8PDgpfCgodW5zaWdu
ZWQpKCcyJyk8PDE2KXwoKHVuc2lnbmVkKSgnMCcpPDwyNCkpOgogICAgICAgIGNhc2UgKCgodW5z
aWduZWQpKCdZJyk8PDApfCgodW5zaWduZWQpKCdWJyk8PDgpfCgodW5zaWduZWQpKCcxJyk8PDE2
KXwoKHVuc2lnbmVkKSgnMicpPDwyNCkpOiBiZXNyLnN1cmZfaWQgPSAweDAwMDAwQTAwTD4+ODsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgKCgodW5zaWdu
ZWQpKCdZJyk8PDApfCgodW5zaWduZWQpKCdWJyk8PDgpfCgodW5zaWduZWQpKCdZJyk8PDE2KXwo
KHVuc2lnbmVkKSgnVScpPDwyNCkpOgogICAgICAgIGNhc2UgKCgodW5zaWduZWQpKCdVJyk8PDAp
fCgodW5zaWduZWQpKCdZJyk8PDgpfCgodW5zaWduZWQpKCdWJyk8PDE2KXwoKHVuc2lnbmVkKSgn
WScpPDwyNCkpOiBiZXNyLnN1cmZfaWQgPSAweDAwMDAwQzAwTD4+ODsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAoKCh1bnNpZ25lZCkoJ1knKTw8MCl8KCh1
bnNpZ25lZCkoJ1UnKTw8OCl8KCh1bnNpZ25lZCkoJ1knKTw8MTYpfCgodW5zaWduZWQpKCcyJyk8
PDI0KSk6CiAgICAgICAgZGVmYXVsdDogYmVzci5zdXJmX2lkID0gMHgwMDAwMEIwMEw+Pjg7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgfQogICAgc3dpdGNoIChiZXNyLnN1
cmZfaWQpCiAgICB7CiAgICAgICAgY2FzZSAzOgogICAgICAgIGNhc2UgNDoKICAgICAgICBjYXNl
IDExOgogICAgICAgIGNhc2UgMTI6IEJ5dGVzUGVyUGl4ZWwgPSAyOwogICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgIGNhc2UgNjogQnl0ZXNQZXJQaXhlbCA9IDQ7CiAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSA5OgogICAgICAgIGNhc2UgMTA6CiAgICAgICAg
Y2FzZSAxMzoKICAgICAgICBjYXNlIDE0OiBCeXRlc1BlclBpeGVsID0gMTsKICAgICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICBkZWZhdWx0OiBCeXRlc1BlclBpeGVsID0gMDsKICAgICAg
ICAgICAgICAgICAgICBicmVhazsKICAgIH0KICAgIHN3aXRjaCAoYmVzci5zdXJmX2lkKQogICAg
ewogICAgICAgIGNhc2UgMzoKICAgICAgICBjYXNlIDQ6IEJ5dGVzUGVyVVZQaXhlbCA9IDA7CiAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAxMToKICAgICAgICBjYXNlIDEy
OiBCeXRlc1BlclVWUGl4ZWwgPSAyOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
IGNhc2UgNjogQnl0ZXNQZXJVVlBpeGVsID0gMDsKICAgICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICBjYXNlIDk6CiAgICAgICAgY2FzZSAxMDogQnl0ZXNQZXJVVlBpeGVsID0gMTsKICAg
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlIDEzOgogICAgICAgIGNhc2UgMTQ6
IEJ5dGVzUGVyVVZQaXhlbCA9IDI7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ZGVmYXVsdDogQnl0ZXNQZXJVVlBpeGVsID0gMDsKICAgICAgICAgICAgICAgICAgICBicmVhazsK
CiAgICB9CiAgICBzd2l0Y2ggKGJlc3Iuc3VyZl9pZCkKICAgIHsKICAgICAgICBjYXNlIDM6CiAg
ICAgICAgY2FzZSA0OgogICAgICAgIGNhc2UgNjogSG9yelVWU3ViU2FtcGxlID0gMTsKICAgICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlIDk6IEhvcnpVVlN1YlNhbXBsZSA9IDQ7
CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAxMDoKICAgICAgICBjYXNl
IDExOgogICAgICAgIGNhc2UgMTI6CiAgICAgICAgY2FzZSAxMzoKICAgICAgICBjYXNlIDE0OiBI
b3J6VVZTdWJTYW1wbGUgPSAyOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGRl
ZmF1bHQ6IEhvcnpVVlN1YlNhbXBsZSA9IDA7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICB9CiAgICBzd2l0Y2ggKGJlc3Iuc3VyZl9pZCkKICAgIHsKICAgICAgICBjYXNlIDM6CiAgICAg
ICAgY2FzZSA0OgogICAgICAgIGNhc2UgNjoKICAgICAgICBjYXNlIDExOgogICAgICAgIGNhc2Ug
MTI6IFZlcnRVVlN1YlNhbXBsZSA9IDE7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgY2FzZSA5OiBWZXJ0VVZTdWJTYW1wbGUgPSA0OwogICAgICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgIGNhc2UgMTA6CiAgICAgICAgY2FzZSAxMzoKICAgICAgICBjYXNlIDE0OiBWZXJ0
VVZTdWJTYW1wbGUgPSAyOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGRlZmF1
bHQ6IFZlcnRVVlN1YlNhbXBsZSA9IDA7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICB9
CiAgICBEaXNhbGxvd0ZvdXJUYXBWZXJ0RmlsdGVyaW5nID0gMDsKICAgIERpc2FsbG93Rm91clRh
cFVWVmVydEZpbHRlcmluZyA9IDA7CiAgICBMZWZ0UGl4ZWwgPSBjb25maWctPnNyYy54OwogICAg
UmlnaHRQaXhlbCA9IGNvbmZpZy0+c3JjLnctMTsKICAgIGlmKGZsb29yKGNvbmZpZy0+c3JjLngv
SG9yelVWU3ViU2FtcGxlKTwwKSBMZWZ0VVZQaXhlbCA9IDA7CiAgICBlbHNlIExlZnRVVlBpeGVs
ID0gKGludClmbG9vcihjb25maWctPnNyYy54L0hvcnpVVlN1YlNhbXBsZSk7CiAgICBpZihjZWls
KChjb25maWctPnNyYy54K2NvbmZpZy0+c3JjLncpL0hvcnpVVlN1YlNhbXBsZSkgPiBjb25maWct
PnNyYy53L0hvcnpVVlN1YlNhbXBsZSkKICAgICAgICAgICAgICAgIFJpZ2h0VVZQaXhlbCA9IGNv
bmZpZy0+c3JjLncvSG9yelVWU3ViU2FtcGxlIC0gMTsKICAgIGVsc2UgUmlnaHRVVlBpeGVsID0g
KGludCljZWlsKChjb25maWctPnNyYy54K2NvbmZpZy0+c3JjLncpL0hvcnpVVlN1YlNhbXBsZSkg
LSAxOwoKCiAgICBTb3VyY2VXaWR0aEluUGl4ZWxzID0gKGludCkoY29uZmlnLT5zcmMudyArIDEp
OwogICAgU291cmNlVVZXaWR0aEluUGl4ZWxzID0gKGludCkoUmlnaHRVVlBpeGVsIC0gTGVmdFVW
UGl4ZWwgKyAxKTsKCiAgICBTb3VyY2VXaWR0aEluTWVtV29yZHMgPSAoaW50KShjZWlsKFJpZ2h0
UGl4ZWwqQnl0ZXNQZXJQaXhlbCAvIE1lbVdvcmRzSW5CeXRlcykgLQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZmxvb3IoTGVmdFBpeGVsKkJ5dGVzUGVyUGl4ZWwgLyBNZW1Xb3Jkc0luQnl0
ZXMpICsgMSk7CgogICAgU291cmNlVVZXaWR0aEluTWVtV29yZHMgPSAoaW50KShjZWlsKFJpZ2h0
VVZQaXhlbCpCeXRlc1BlclVWUGl4ZWwgLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBN
ZW1Xb3Jkc0luQnl0ZXMpIC0gZmxvb3IoTGVmdFVWUGl4ZWwqQnl0ZXNQZXJVVlBpeGVsIC8KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVtV29yZHNJbkJ5dGVzKSArIDEpOwoKICAgIHN3
aXRjaCAoYmVzci5zdXJmX2lkKQogICAgewogICAgICAgIGNhc2UgOToKICAgICAgICBjYXNlIDEw
OiBpZiAoKGNlaWwoU291cmNlV2lkdGhJbk1lbVdvcmRzLzIpLTEpICogMiA+IE9WMExCX1Jvd3Mt
MSkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIHByaW50Zigi
cmFnZTEyOF92aWQ6IiIjIyMjIyMjIyMjIyMjIyMjIyBGQVRBTDoiImNlaWwoU291cmNlV2lkdGhJ
bk1lbVdvcmRzLzIpLTEpICogMiA+IE9WMExCX1Jvd3MtMVxuIik7OwogICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgoU291cmNlV2lkdGhJbk1lbVdvcmRz
LTEpICogMiA+IE9WMExCX1Jvd3MtMSkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAg
ICAgICAgICAgICAgIERpc2FsbG93Rm91clRhcFZlcnRGaWx0ZXJpbmcgPSAxOwogICAgICAgICAg
ICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgaWYgKChjZWlsKFNvdXJjZVVWV2lkdGhJ
bk1lbVdvcmRzLzIpLTEpICogNCArIDEgPiBPVjBMQl9Sb3dzLTEpCiAgICAgICAgICAgICAgICAg
ICAgewoKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAo
KFNvdXJjZVVWV2lkdGhJbk1lbVdvcmRzLTEpICogNCArIDEgPiBPVjBMQl9Sb3dzLTEpCiAgICAg
ICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBEaXNhbGxvd0ZvdXJUYXBV
VlZlcnRGaWx0ZXJpbmcgPSAxOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAg
ICAgICAgaWYgKChjZWlsKFNvdXJjZVVWV2lkdGhJbk1lbVdvcmRzLzIpLTEpICogNCArIDMgPiBP
VjBMQl9Sb3dzLTEpCiAgICAgICAgICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoKFNvdXJjZVVWV2lkdGhJbk1lbVdvcmRzLTEp
ICogNCArIDMgPiBPVjBMQl9Sb3dzLTEpCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAg
ICAgICAgICAgICAgICBEaXNhbGxvd0ZvdXJUYXBVVlZlcnRGaWx0ZXJpbmcgPSAxOwogICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlIDEz
OgogICAgICAgIGNhc2UgMTQ6IGlmICgoY2VpbChTb3VyY2VXaWR0aEluTWVtV29yZHMvMiktMSkg
KiAyID4gT1YwTEJfUm93cy0xKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgcHJpbnRmKCJyYWdlMTI4X3ZpZDoiIiMjIyMjIyMjIyMjIyMjIyMjIEZBVEFMOiIi
Y2VpbChTb3VyY2VXaWR0aEluTWVtV29yZHMvMiktMSkgKiAyID4gT1YwTEJfUm93cy0xXG4iKTs7
CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKChTb3Vy
Y2VXaWR0aEluTWVtV29yZHMtMSkgKiAyID4gT1YwTEJfUm93cy0xKQogICAgICAgICAgICAgICAg
ICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgRGlzYWxsb3dGb3VyVGFwVmVydEZpbHRlcmlu
ZyA9IDE7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBpZiAoKGNl
aWwoU291cmNlVVZXaWR0aEluTWVtV29yZHMvMiktMSkgKiAyICsgMSA+IE9WMExCX1Jvd3MtMSkK
ICAgICAgICAgICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICAgICBlbHNlIGlmICgoU291cmNlVVZXaWR0aEluTWVtV29yZHMtMSkgKiAyICsgMSA+IE9W
MExCX1Jvd3MtMSkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAg
IERpc2FsbG93Rm91clRhcFVWVmVydEZpbHRlcmluZyA9IDE7CiAgICAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgMzoKICAgICAgICBjYXNl
IDQ6CiAgICAgICAgY2FzZSA2OgogICAgICAgIGNhc2UgMTE6CiAgICAgICAgY2FzZSAxMjogaWYg
KChjZWlsKFNvdXJjZVdpZHRoSW5NZW1Xb3Jkcy8yKS0xKSA+IE9WMExCX1Jvd3MtMSkKICAgICAg
ICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ZigicmFnZTEyOF92
aWQ6IiIjIyMjIyMjIyMjIyMjIyMjIyBGQVRBTDoiIihjZWlsKFNvdXJjZVdpZHRoSW5NZW1Xb3Jk
cy8yKS0xKSA+IE9WMExCX1Jvd3MtMVxuIik7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgICAgIGVsc2UgaWYgKChTb3VyY2VXaWR0aEluTWVtV29yZHMtMSkgPiBPVjBMQl9S
b3dzLTEpCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBEaXNh
bGxvd0ZvdXJUYXBWZXJ0RmlsdGVyaW5nID0gMTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAg
ICBicmVhazsKICAgIH0KICAgIGRlc3RfdyA9IGNvbmZpZy0+ZGVzdC53OwogICAgZGVzdF9oID0g
Y29uZmlnLT5kZXN0Lmg7CiAgICBpZihyYWRlb25faXNfZGJsX3NjYW4oKSkgZGVzdF9oICo9IDI7
CiAgICBiZXNyLmRlc3RfYnBwID0gcmFkZW9uX3ZpZF9nZXRfZGJwcCgpOwogICAgYmVzci5mb3Vy
Y2MgPSBjb25maWctPmZvdXJjYzsKICAgIGlmKHJhZGVvbl9pc19pbnRlcmxhY2UoKSkgaW50ZXJs
YWNlX2ZhY3RvciA9IDI7CiAgICBlbHNlIGludGVybGFjZV9mYWN0b3IgPSAxOwoKICAgIGhvcnpf
cmVwbF9mYWN0b3IgPSAxIDw8ICh1aW50MzJfdCkoKElOUExMKDB4MDAwOCkgJiAweDMwMCkgPj4g
OCk7CiAgICBIX3NjYWxlX3JhdGlvID0gKGRvdWJsZSljZWlsKCgoZG91YmxlKWRlc3RfdysxKS9o
b3J6X3JlcGxfZmFjdG9yKS9zcmNfdzsKICAgIFZfc2NhbGVfcmF0aW8gPSAoZG91YmxlKShkZXN0
X2grMSkvc3JjX2g7CiAgICBpZihIX3NjYWxlX3JhdGlvIDwgMC41ICYmIFZfc2NhbGVfcmF0aW8g
PCAwLjUpCiAgICB7CiAgICAgICAgdmFsX09WMF9QMV9NQVhfTE5fSU5fUEVSX0xOX09VVCA9IDM7
CiAgICAgICAgdmFsX09WMF9QMjNfTUFYX0xOX0lOX1BFUl9MTl9PVVQgPSAyOwogICAgfQogICAg
ZWxzZQogICAgaWYoSF9zY2FsZV9yYXRpbyA8IDEgJiYgVl9zY2FsZV9yYXRpbyA8IDEpCiAgICB7
CiAgICAgICAgdmFsX09WMF9QMV9NQVhfTE5fSU5fUEVSX0xOX09VVCA9IDI7CiAgICAgICAgdmFs
X09WMF9QMjNfTUFYX0xOX0lOX1BFUl9MTl9PVVQgPSAxOwogICAgfQogICAgZWxzZQogICAgewog
ICAgICAgIHZhbF9PVjBfUDFfTUFYX0xOX0lOX1BFUl9MTl9PVVQgPSAxOwogICAgICAgIHZhbF9P
VjBfUDIzX01BWF9MTl9JTl9QRVJfTE5fT1VUID0gMTsKICAgIH0KCiAgICBiZXNyLnZfaW5jID0g
KHVpbnQxNl90KSgoMS4vVl9zY2FsZV9yYXRpbykqKDE8PDEyKSppbnRlcmxhY2VfZmFjdG9yKzAu
NSk7CiAgICBDUlRfVl9JTkMgPSBiZXNyLnZfaW5jL2ludGVybGFjZV9mYWN0b3I7CiAgICBiZXNy
LnZfaW5jIDw8PSA4OwogICAgewogICAgICAgIGludCBUaGVyZUlzVHdvVGFwVmVydGljYWxGaWx0
ZXJpbmcsRG9Ob3RVc2VNb3N0UmVjZW50bHlGZXRjaGVkTGluZTsKICAgICAgICBpbnQgUDFHcm91
cFNpemU7CiAgICAgICAgaW50IFAyM0dyb3VwU2l6ZTsKICAgICAgICBpbnQgUDFTdGVwU2l6ZTsK
ICAgICAgICBpbnQgUDIzU3RlcFNpemU7CgogICAgICAgIENhbGNfSF9JTkNfU1RFUF9CWSgKICAg
ICAgICAgICAgYmVzci5zdXJmX2lkLAogICAgICAgICAgICBIX3NjYWxlX3JhdGlvLAogICAgICAg
ICAgICBEaXNhbGxvd0ZvdXJUYXBWZXJ0RmlsdGVyaW5nLAogICAgICAgICAgICBEaXNhbGxvd0Zv
dXJUYXBVVlZlcnRGaWx0ZXJpbmcsCiAgICAgICAgICAgICZ2YWxfT1YwX1AxX0hfSU5DLAogICAg
ICAgICAgICAmdmFsX09WMF9QMV9IX1NURVBfQlksCiAgICAgICAgICAgICZ2YWxfT1YwX1AyM19I
X0lOQywKICAgICAgICAgICAgJnZhbF9PVjBfUDIzX0hfU1RFUF9CWSwKICAgICAgICAgICAgJlAx
R3JvdXBTaXplLAogICAgICAgICAgICAmUDFTdGVwU2l6ZSwKICAgICAgICAgICAgJlAyM1N0ZXBT
aXplKTsKCiAgICAgICAgaWYoSF9zY2FsZV9yYXRpbyA+IE1pbkhTY2FsZUhhcmQpCiAgICAgICAg
ewogICAgICAgICAgICBoX2luYyA9IChzcmNfdyA8PCAxMikgLyBkZXN0X3c7CiAgICAgICAgICAg
IGJlc3Iuc3RlcF9ieSA9IDB4MDEwMTsKICAgICAgICAgICAgc3dpdGNoIChiZXNyLnN1cmZfaWQp
CiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgICAgIGNh
c2UgNDoKICAgICAgICAgICAgICAgIGNhc2UgNjoKICAgICAgICAgICAgICAgICAgICAgICAgYmVz
ci5oX2luYyA9IChoX2luYyl8KGhfaW5jPDwxNik7CiAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgICAgY2FzZSA5OgogICAgICAgICAgICAgICAgICAgICAgICBiZXNy
LmhfaW5jID0gaF9pbmMgfCAoKGhfaW5jID4+IDIpIDw8IDE2KTsKICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAg
ICAgICBiZXNyLmhfaW5jID0gaF9pbmMgfCAoKGhfaW5jID4+IDEpIDw8IDE2KTsKICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIFAy
M0dyb3VwU2l6ZSA9IDI7CgogICAgICAgIGJlc3IuaG9yel9waWNrX25lYXJlc3Q9MDsKICAgICAg
ICBEb05vdFVzZU1vc3RSZWNlbnRseUZldGNoZWRMaW5lPTA7CiAgICAgICAgVGhlcmVJc1R3b1Rh
cFZlcnRpY2FsRmlsdGVyaW5nID0gKHZhbF9PVjBfUDFfSF9TVEVQX0JZIT0wKSB8fCAodmFsX09W
MF9QMjNfSF9TVEVQX0JZIT0wKTsKICAgICAgICBpZiAoVGhlcmVJc1R3b1RhcFZlcnRpY2FsRmls
dGVyaW5nICYmIERvTm90VXNlTW9zdFJlY2VudGx5RmV0Y2hlZExpbmUpCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYmVzci52ZXJ0X3BpY2tfbmVhcmVzdCA9IDE7CiAgICAgICAgZWxz
ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlc3IudmVydF9waWNrX25lYXJlc3Qg
PSAwOwoKICAgICAgICBDb21wdXRlWFN0YXJ0RW5kKGlzXzQwMCxMZWZ0UGl4ZWwsTGVmdFVWUGl4
ZWwsTWVtV29yZHNJbkJ5dGVzLEJ5dGVzUGVyUGl4ZWwsCiAgICAgICAgICAgICAgICAgICAgIFNv
dXJjZVdpZHRoSW5QaXhlbHMsUDFTdGVwU2l6ZSxCeXRlc1BlclVWUGl4ZWwsCiAgICAgICAgICAg
ICAgICAgICAgIFNvdXJjZVVWV2lkdGhJblBpeGVscyxQMjNTdGVwU2l6ZSwmdmFsX09WMF9QMV9Y
X1NUQVJULCZ2YWxfT1YwX1AyX1hfU1RBUlQpOwoKICAgICAgICBpZihIX3NjYWxlX3JhdGlvID4g
TWluSFNjYWxlSGFyZCkKICAgICAgICB7CiAgICAgICAgICAgIHVuc2lnbmVkIHRtcDsKICAgICAg
ICAgICAgdG1wID0gKGxlZnQgJiAweDAwMDNmZmZmKSArIDB4MDAwMjgwMDAgKyAoaF9pbmMgPDwg
Myk7CiAgICAgICAgICAgIGJlc3IucDFfaF9hY2N1bV9pbml0ID0gKCh0bXAgPDwgNCkgJiAweDAw
MGY4MDAwKSB8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgodG1wIDw8IDEy
KSAmIDB4ZjAwMDAwMDApOwoKICAgICAgICAgICAgdG1wID0gKHRvcCAmIDB4MDAwMGZmZmYpICsg
MHgwMDAxODAwMDsKICAgICAgICAgICAgYmVzci5wMV92X2FjY3VtX2luaXQgPSAoKHRtcCA8PCA0
KSAmIDB4MDFmZjgwMDBMKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8KDB4
MDAwMDAwMDNMICYgMSk7CiAgICAgICAgICAgIHRtcCA9ICgobGVmdCA+PiAxKSAmIDB4MDAwMWZm
ZmYpICsgMHgwMDAyODAwMCArIChoX2luYyA8PCAyKTsKICAgICAgICAgICAgYmVzci5wMjNfaF9h
Y2N1bV9pbml0ID0gKCh0bXAgPDwgNCkgJiAweDAwMGY4MDAwKSB8CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICgodG1wIDw8IDEyKSAmIDB4NzAwMDAwMDApOwoKICAgICAgICAg
ICAgdG1wID0gKCh0b3AgPj4gMSkgJiAweDAwMDBmZmZmKSArIDB4MDAwMTgwMDA7CiAgICAgICAg
ICAgIGJlc3IucDIzX3ZfYWNjdW1faW5pdCA9IChpc180MjB8fGlzXzQxMCkgPwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAoKHRtcCA8PCA0KSAmIDB4MDFmZjgwMDBMKQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8KDB4MDAwMDAwMDNMICYgMSkgOiAwOwog
ICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgICAgIENvbXB1dGVBY2N1bUluaXQoIHZhbF9P
VjBfUDFfWF9TVEFSVCx2YWxfT1YwX1AyX1hfU1RBUlQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdmFsX09WMF9QMV9IX0lOQyx2YWxfT1YwX1AyM19IX0lOQywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB2YWxfT1YwX1AxX0hfU1RFUF9CWSx2YWxfT1YwX1AyM19IX1NU
RVBfQlksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1JUX1ZfSU5DLFAxR3JvdXBT
aXplLFAyM0dyb3VwU2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxfT1Yw
X1AxX01BWF9MTl9JTl9QRVJfTE5fT1VULAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHZhbF9PVjBfUDIzX01BWF9MTl9JTl9QRVJfTE5fT1VUKTsKICAgIH0KCgogICAgYmVzci5iYXNl
X2FkZHIgPSBJTlJFRygweDAyM0MpOwogICAgY29uZmlnLT5vZmZzZXRzWzBdID0gMDsKICAgIGZv
cihpPTE7aTxiZXNyLnZpZF9uYnVmcztpKyspCiAgICAgICAgICAgIGNvbmZpZy0+b2Zmc2V0c1tp
XSA9IGNvbmZpZy0+b2Zmc2V0c1tpLTFdK2NvbmZpZy0+ZnJhbWVfc2l6ZTsKICAgIGlmKGlzXzQy
MCB8fCBpc180MTAgfHwgaXNfNDAwKQogICAgewogICAgICAgIHVpbnQzMl90IGQxbGluZSxkMmxp
bmUsZDNsaW5lOwogICAgICAgIGQxbGluZSA9IHRvcCpwaXRjaDsKICAgICAgICBpZihpc180MjAp
CiAgICAgICAgewogICAgICAgICAgICBkMmxpbmUgPSBzcmNfaCpwaXRjaCsoZDFsaW5lPj4yKTsK
ICAgICAgICAgICAgZDNsaW5lID0gZDJsaW5lKygoc3JjX2gqcGl0Y2gpPj4yKTsKICAgICAgICB9
CiAgICAgICAgZWxzZQogICAgICAgIGlmKGlzXzQxMCkKICAgICAgICB7CiAgICAgICAgICAgIGQy
bGluZSA9IHNyY19oKnBpdGNoKyhkMWxpbmU+PjQpOwogICAgICAgICAgICBkM2xpbmUgPSBkMmxp
bmUrKChzcmNfaCpwaXRjaCk+PjQpOwogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgewog
ICAgICAgICAgICBkMmxpbmUgPSAwOwogICAgICAgICAgICBkM2xpbmUgPSAwOwogICAgICAgIH0K
ICAgICAgICBkMWxpbmUgKz0gKGxlZnQgPj4gMTYpICYgfjE1OwogICAgICAgIGlmKGlzXzQyMCkK
ICAgICAgICB7CiAgICAgICAgICAgIGQybGluZSArPSAobGVmdCA+PiAxNykgJiB+MTU7CiAgICAg
ICAgICAgIGQzbGluZSArPSAobGVmdCA+PiAxNykgJiB+MTU7CiAgICAgICAgfQogICAgICAgIGVs
c2UKICAgICAgICB7CiAgICAgICAgICAgIGQybGluZSArPSAobGVmdCA+PiAxOCkgJiB+MTU7CiAg
ICAgICAgICAgIGQzbGluZSArPSAobGVmdCA+PiAxOCkgJiB+MTU7CiAgICAgICAgfQogICAgICAg
IGNvbmZpZy0+b2Zmc2V0LnkgPSBkMWxpbmUgJiAweDAzZmZmZmYwTDsKICAgICAgICBpZihpc180
MDApCiAgICAgICAgewogICAgICAgICAgICBjb25maWctPm9mZnNldC52ID0gMDsKICAgICAgICAg
ICAgY29uZmlnLT5vZmZzZXQudSA9IDA7CiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICB7
CiAgICAgICAgICAgIGNvbmZpZy0+b2Zmc2V0LnYgPSBkMmxpbmUgJiAweDAzZmZmZmYwTDsKICAg
ICAgICAgICAgY29uZmlnLT5vZmZzZXQudSA9IGQzbGluZSAmIDB4MDNmZmZmZjBMOwogICAgICAg
IH0KICAgICAgICBmb3IoaT0wO2k8YmVzci52aWRfbmJ1ZnM7aSsrKQogICAgICAgIHsKICAgICAg
ICAgICAgYmVzci52aWRfYnVmX2Jhc2VfYWRyc195W2ldPSgocmFkZW9uX292ZXJsYXlfb2ZmK2Nv
bmZpZy0+b2Zmc2V0c1tpXStjb25maWctPm9mZnNldC55KSYweDAzZmZmZmYwTCk7CiAgICAgICAg
ICAgIGlmKGlzXzQwMCkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgYmVzci52aWRfYnVm
X2Jhc2VfYWRyc192W2ldPTA7CiAgICAgICAgICAgICAgICBiZXNyLnZpZF9idWZfYmFzZV9hZHJz
X3VbaV09MDsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgIHsKICAg
ICAgICAgICAgICAgIGJlc3IudmlkX2J1Zl9iYXNlX2FkcnNfdltpXT0oKHJhZGVvbl9vdmVybGF5
X29mZitjb25maWctPm9mZnNldHNbaV0rY29uZmlnLT5vZmZzZXQudikmMHgwM2ZmZmZmMEwpfDB4
MDAwMDAwMDFMOwogICAgICAgICAgICAgICAgYmVzci52aWRfYnVmX2Jhc2VfYWRyc191W2ldPSgo
cmFkZW9uX292ZXJsYXlfb2ZmK2NvbmZpZy0+b2Zmc2V0c1tpXStjb25maWctPm9mZnNldC51KSYw
eDAzZmZmZmYwTCl8MHgwMDAwMDAwMUw7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAg
Y29uZmlnLT5vZmZzZXQueSA9ICgoYmVzci52aWRfYnVmX2Jhc2VfYWRyc195WzBdKSYweDAzZmZm
ZmYwTCkgLSByYWRlb25fb3ZlcmxheV9vZmY7CiAgICAgICAgaWYoaXNfNDAwKQogICAgICAgIHsK
ICAgICAgICAgICAgY29uZmlnLT5vZmZzZXQudiA9IDA7CiAgICAgICAgICAgIGNvbmZpZy0+b2Zm
c2V0LnUgPSAwOwogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgewogICAgICAgICAgICBj
b25maWctPm9mZnNldC52ID0gKChiZXNyLnZpZF9idWZfYmFzZV9hZHJzX3ZbMF0pJjB4MDNmZmZm
ZjBMKSAtIHJhZGVvbl9vdmVybGF5X29mZjsKICAgICAgICAgICAgY29uZmlnLT5vZmZzZXQudSA9
ICgoYmVzci52aWRfYnVmX2Jhc2VfYWRyc191WzBdKSYweDAzZmZmZmYwTCkgLSByYWRlb25fb3Zl
cmxheV9vZmY7CiAgICAgICAgfQogICAgICAgIGlmKGJlc3IuZm91cmNjID09ICgoKHVuc2lnbmVk
KSgnSScpPDwwKXwoKHVuc2lnbmVkKSgnNCcpPDw4KXwoKHVuc2lnbmVkKSgnMicpPDwxNil8KCh1
bnNpZ25lZCkoJzAnKTw8MjQpKSB8fCBiZXNyLmZvdXJjYyA9PSAoKCh1bnNpZ25lZCkoJ0knKTw8
MCl8KCh1bnNpZ25lZCkoJ1knKTw8OCl8KCh1bnNpZ25lZCkoJ1UnKTw8MTYpfCgodW5zaWduZWQp
KCdWJyk8PDI0KSkpCiAgICAgICAgewogICAgICAgICAgdWludDMyX3QgdG1wOwogICAgICAgICAg
dG1wID0gY29uZmlnLT5vZmZzZXQudTsKICAgICAgICAgIGNvbmZpZy0+b2Zmc2V0LnUgPSBjb25m
aWctPm9mZnNldC52OwogICAgICAgICAgY29uZmlnLT5vZmZzZXQudiA9IHRtcDsKICAgICAgICB9
CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgIGNvbmZpZy0+b2Zmc2V0LnkgPSBjb25maWctPm9m
ZnNldC51ID0gY29uZmlnLT5vZmZzZXQudiA9ICgobGVmdCAmIH43KSA8PCAxKSYweDAzZmZmZmYw
TDsKICAgICAgZm9yKGk9MDtpPGJlc3IudmlkX25idWZzO2krKykKICAgICAgewogICAgICAgIGJl
c3IudmlkX2J1Zl9iYXNlX2FkcnNfeVtpXSA9CiAgICAgICAgYmVzci52aWRfYnVmX2Jhc2VfYWRy
c191W2ldID0KICAgICAgICBiZXNyLnZpZF9idWZfYmFzZV9hZHJzX3ZbaV0gPSByYWRlb25fb3Zl
cmxheV9vZmYgKyBjb25maWctPm9mZnNldHNbaV0gKyBjb25maWctPm9mZnNldC55OwogICAgICB9
CiAgICB9CiAgICBsZWZ0VVYgPSAobGVmdCA+PiAoaXNfNDEwPzE4OjE3KSkgJiAxNTsKICAgIGxl
ZnQgPSAobGVmdCA+PiAxNikgJiAxNTsKICAgIGJlc3IueV94X3N0YXJ0ID0gKGNvbmZpZy0+ZGVz
dC54KzApIHwgKGNvbmZpZy0+ZGVzdC55IDw8IDE2KTsKICAgIGJlc3IueV94X2VuZCA9IChjb25m
aWctPmRlc3QueCArIGRlc3RfdyswKSB8ICgoY29uZmlnLT5kZXN0LnkgKyBkZXN0X2gpIDw8IDE2
KTsKICAgIENvbXB1dGVCb3JkZXJzKGNvbmZpZyxWZXJ0VVZTdWJTYW1wbGUpOwogICAgYmVzci52
aWRfYnVmX3BpdGNoMF92YWx1ZSA9IHBpdGNoOwogICAgYmVzci52aWRfYnVmX3BpdGNoMV92YWx1
ZSA9IGlzXzQxMCA/IHBpdGNoPj4yIDogaXNfNDIwID8gcGl0Y2g+PjEgOiBwaXRjaDsKCgoKCgoK
ICAgIGlmKEhfc2NhbGVfcmF0aW8gPiBNaW5IU2NhbGVIYXJkKSBiZXNyLmZpbHRlcl9jbnRsIHw9
IDB4MDAwMDAwMEY7CiAgICBlbHNlCiAgICB7CiAgICAgICAgRmlsdGVyU2V0dXAgKHZhbF9PVjBf
UDFfSF9JTkMpOwoKCiAgICAgICAgYmVzci5maWx0ZXJfY250bCA9IDB4MDAwMDAwMDA7CiAgICAg
ICAgaWYoRGlzYWxsb3dGb3VyVGFwVmVydEZpbHRlcmluZykKICAgICAgICAgICAgYmVzci5maWx0
ZXJfY250bCB8PSAweDAwMDAwMDA0OwogICAgICAgIGlmKERpc2FsbG93Rm91clRhcFVWVmVydEZp
bHRlcmluZykKICAgICAgICAgICAgYmVzci5maWx0ZXJfY250bCB8PSAweDAwMDAwMDA4OwogICAg
fQogICAgcmV0dXJuIDA7Cn0KCnN0YXRpYyB2b2lkIHJhZGVvbl9jb21wdXRlX2ZyYW1lc2l6ZSh2
aWRpeF9wbGF5YmFja190ICppbmZvKQp7CiAgdW5zaWduZWQgcGl0Y2gsYXdpZHRoLGRicHA7CiAg
cGl0Y2ggPSByYWRlb25fcXVlcnlfcGl0Y2goaW5mby0+Zm91cmNjLCZpbmZvLT5zcmMucGl0Y2gp
OwogIGRicHAgPSByYWRlb25fdmlkX2dldF9kYnBwKCk7CiAgc3dpdGNoKGluZm8tPmZvdXJjYykK
ICB7CiAgICBjYXNlICgoKHVuc2lnbmVkKSgnWScpPDwwKXwoKHVuc2lnbmVkKSgnOCcpPDw4KXwo
KHVuc2lnbmVkKSgnMCcpPDwxNil8KCh1bnNpZ25lZCkoJzAnKTw8MjQpKToKICAgICAgICAgICAg
ICAgIGF3aWR0aCA9IChpbmZvLT5zcmMudyArIChwaXRjaC0xKSkgJiB+KHBpdGNoLTEpOwogICAg
ICAgICAgICAgICAgaW5mby0+ZnJhbWVfc2l6ZSA9IGF3aWR0aCppbmZvLT5zcmMuaDsKICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgY2FzZSAoKCh1bnNpZ25lZCkoJ1knKTw8MCl8KCh1bnNpZ25l
ZCkoJ1YnKTw8OCl8KCh1bnNpZ25lZCkoJ1UnKTw8MTYpfCgodW5zaWduZWQpKCc5Jyk8PDI0KSk6
CiAgICBjYXNlICgoKHVuc2lnbmVkKSgnSScpPDwwKXwoKHVuc2lnbmVkKSgnRicpPDw4KXwoKHVu
c2lnbmVkKSgnMCcpPDwxNil8KCh1bnNpZ25lZCkoJzknKTw8MjQpKToKICAgICAgICAgICAgICAg
IGF3aWR0aCA9IChpbmZvLT5zcmMudyArIChwaXRjaC0xKSkgJiB+KHBpdGNoLTEpOwogICAgICAg
ICAgICAgICAgaW5mby0+ZnJhbWVfc2l6ZSA9IGF3aWR0aCooaW5mby0+c3JjLmgraW5mby0+c3Jj
LmgvOCk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgIGNhc2UgKCgodW5zaWduZWQpKCdJJyk8
PDApfCgodW5zaWduZWQpKCc0Jyk8PDgpfCgodW5zaWduZWQpKCcyJyk8PDE2KXwoKHVuc2lnbmVk
KSgnMCcpPDwyNCkpOgogICAgY2FzZSAoKCh1bnNpZ25lZCkoJ1knKTw8MCl8KCh1bnNpZ25lZCko
J1YnKTw8OCl8KCh1bnNpZ25lZCkoJzEnKTw8MTYpfCgodW5zaWduZWQpKCcyJyk8PDI0KSk6CiAg
ICBjYXNlICgoKHVuc2lnbmVkKSgnSScpPDwwKXwoKHVuc2lnbmVkKSgnWScpPDw4KXwoKHVuc2ln
bmVkKSgnVScpPDwxNil8KCh1bnNpZ25lZCkoJ1YnKTw8MjQpKToKICAgICAgICAgICAgICAgIGF3
aWR0aCA9IChpbmZvLT5zcmMudyArIChwaXRjaC0xKSkgJiB+KHBpdGNoLTEpOwogICAgICAgICAg
ICAgICAgaW5mby0+ZnJhbWVfc2l6ZSA9IGF3aWR0aCooaW5mby0+c3JjLmgraW5mby0+c3JjLmgv
Mik7CiAgICAgICAgICAgICAgICBicmVhazsKICAgIGNhc2UgKCgodW5zaWduZWQpKCdSJyk8PDAp
fCgodW5zaWduZWQpKCdHJyk8PDgpfCgodW5zaWduZWQpKCdCJyk8PDE2KXwoKHVuc2lnbmVkKSgz
Mik8PDI0KSk6CiAgICBjYXNlICgoKHVuc2lnbmVkKSgnQicpPDwwKXwoKHVuc2lnbmVkKSgnRycp
PDw4KXwoKHVuc2lnbmVkKSgnUicpPDwxNil8KCh1bnNpZ25lZCkoMzIpPDwyNCkpOgogICAgICAg
ICAgICAgICAgYXdpZHRoID0gKGluZm8tPnNyYy53KjQgKyAocGl0Y2gtMSkpICYgfihwaXRjaC0x
KTsKICAgICAgICAgICAgICAgIGluZm8tPmZyYW1lX3NpemUgPSBhd2lkdGgqaW5mby0+c3JjLmg7
CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgYXdp
ZHRoID0gKGluZm8tPnNyYy53KjIgKyAocGl0Y2gtMSkpICYgfihwaXRjaC0xKTsKICAgICAgICAg
ICAgICAgIGluZm8tPmZyYW1lX3NpemUgPSBhd2lkdGgqaW5mby0+c3JjLmg7CiAgICAgICAgICAg
ICAgICBicmVhazsKICB9CiAgaW5mby0+ZnJhbWVfc2l6ZSA9IChpbmZvLT5mcmFtZV9zaXplKzQw
OTUpJn40MDk1Owp9CgppbnQgdml4Q29uZmlnUGxheWJhY2sodmlkaXhfcGxheWJhY2tfdCAqaW5m
bykKewogIHVuc2lnbmVkIHJnYl9zaXplLG5mcjsKICB1aW50MzJfdCByYWRlb25fdmlkZW9fc2l6
ZTsKICBpZighaXNfc3VwcG9ydGVkX2ZvdXJjYyhpbmZvLT5mb3VyY2MsaW5mby0+c3JjLncpKSBy
ZXR1cm4gMzg7CiAgaWYoaW5mby0+bnVtX2ZyYW1lcz4xMDI0KSBpbmZvLT5udW1fZnJhbWVzPTEw
MjQ7CiAgaWYoaW5mby0+bnVtX2ZyYW1lcz09MSkgYmVzci5kb3VibGVfYnVmZj0wOwogIGVsc2Ug
YmVzci5kb3VibGVfYnVmZj0xOwogIHJhZGVvbl9jb21wdXRlX2ZyYW1lc2l6ZShpbmZvKTsKCiAg
cmdiX3NpemUgPSByYWRlb25fZ2V0X3hyZXMoKSpyYWRlb25fZ2V0X3lyZXMoKSooKHJhZGVvbl92
aWRfZ2V0X2RicHAoKSs3KS84KTsKICBuZnIgPSBpbmZvLT5udW1fZnJhbWVzOwogIHJhZGVvbl92
aWRlb19zaXplID0gcmFkZW9uX3JhbV9zaXplOwoKICBpZihkZWZfY2FwLmZsYWdzICYgMHgwMDAw
MDAwMSkKICB7CgoKCiAgICAgICAgcmFkZW9uX3ZpZGVvX3NpemUgLT0gcmFkZW9uX3JhbV9zaXpl
ICogc2l6ZW9mKGJtX2xpc3RfZGVzY3JpcHRvcikgLyA0MDk2OwogICAgICAgIHJhZGVvbl9kbWFf
ZGVzY19iYXNlID0gKHZvaWQgKikgcGNpX2luZm8uYmFzZTAgKyByYWRlb25fdmlkZW9fc2l6ZTsK
ICB9CgogIGZvcig7bmZyPjA7IG5mci0tKQogIHsKICAgICAgcmFkZW9uX292ZXJsYXlfb2ZmID0g
cmFkZW9uX3ZpZGVvX3NpemUgLSBpbmZvLT5mcmFtZV9zaXplKm5mcjsKICAgICAgcmFkZW9uX292
ZXJsYXlfb2ZmICY9IDB4ZmZmZjAwMDA7CiAgICAgIGlmKHJhZGVvbl9vdmVybGF5X29mZiA+PSAo
aW50KXJnYl9zaXplICkgYnJlYWs7CiAgfQogIGlmKG5mciA8PSAzKQogIHsKICAgbmZyID0gaW5m
by0+bnVtX2ZyYW1lczsKICAgZm9yKDtuZnI+MDsgbmZyLS0pCiAgIHsKICAgICAgcmFkZW9uX292
ZXJsYXlfb2ZmID0gcmFkZW9uX3ZpZGVvX3NpemUgLSBpbmZvLT5mcmFtZV9zaXplKm5mcjsKICAg
ICAgcmFkZW9uX292ZXJsYXlfb2ZmICY9IDB4ZmZmZjAwMDA7CiAgICAgIGlmKHJhZGVvbl9vdmVy
bGF5X29mZiA+IDApIGJyZWFrOwogICB9CiAgfQogIGlmKG5mciA8PSAwKSByZXR1cm4gMjI7CiAg
aW5mby0+bnVtX2ZyYW1lcyA9IG5mcjsKICBiZXNyLnZpZF9uYnVmcyA9IGluZm8tPm51bV9mcmFt
ZXM7CiAgaW5mby0+ZGdhX2FkZHIgPSAoY2hhciAqKXJhZGVvbl9tZW1fYmFzZSArIHJhZGVvbl9v
dmVybGF5X29mZjsKICByYWRlb25fdmlkX2luaXRfdmlkZW8oaW5mbyk7CiAgcmV0dXJuIDA7Cn0K
CmludCB2aXhQbGF5YmFja09uKCB2b2lkICkKewoKICB1bnNpZ25lZCBkdyxkaDsKCiAgcmFkZW9u
X3ZpZF9kaXNwbGF5X3ZpZGVvKCk7CgogIGRoID0gKGJlc3IueV94X2VuZCA+PiAxNikgLSAoYmVz
ci55X3hfc3RhcnQgPj4gMTYpOwogIGR3ID0gKGJlc3IueV94X2VuZCAmIDB4RkZGRikgLSAoYmVz
ci55X3hfc3RhcnQgJiAweEZGRkYpOwogIGlmKGR3ID09IHJhZGVvbl9nZXRfeHJlcygpIHx8IGRo
ID09IHJhZGVvbl9nZXRfeXJlcygpKSByYWRlb25fdmlkX2V4Y2x1c2l2ZSgpOwogIGVsc2UgcmFk
ZW9uX3ZpZF9ub25fZXhjbHVzaXZlKCk7CgogIHJldHVybiAwOwp9CgppbnQgdml4UGxheWJhY2tP
ZmYoIHZvaWQgKQp7CiAgcmFkZW9uX3ZpZF9zdG9wX3ZpZGVvKCk7CiAgcmV0dXJuIDA7Cn0KCmlu
dCB2aXhQbGF5YmFja0ZyYW1lU2VsZWN0KHVuc2lnbmVkIGZyYW1lKQp7CiAgICB1aW50MzJfdCBv
ZmZbNl07CiAgICBpbnQgcHJldl9mcmFtZT0gKGZyYW1lLTErYmVzci52aWRfbmJ1ZnMpICUgYmVz
ci52aWRfbmJ1ZnM7CgoKCgogICAgaWYoIWJlc3IuZG91YmxlX2J1ZmYpIHJldHVybiAwOwogICAg
aWYoZnJhbWUgPiBiZXNyLnZpZF9uYnVmcykgZnJhbWUgPSBiZXNyLnZpZF9uYnVmcy0xOwogICAg
aWYocHJldl9mcmFtZSA+IChpbnQpYmVzci52aWRfbmJ1ZnMpIHByZXZfZnJhbWUgPSBiZXNyLnZp
ZF9uYnVmcy0xOwogICAgb2ZmWzBdID0gYmVzci52aWRfYnVmX2Jhc2VfYWRyc195W2ZyYW1lXTsK
ICAgIG9mZlsxXSA9IGJlc3IudmlkX2J1Zl9iYXNlX2FkcnNfdltmcmFtZV07CiAgICBvZmZbMl0g
PSBiZXNyLnZpZF9idWZfYmFzZV9hZHJzX3VbZnJhbWVdOwogICAgb2ZmWzNdID0gYmVzci52aWRf
YnVmX2Jhc2VfYWRyc195W3ByZXZfZnJhbWVdOwogICAgb2ZmWzRdID0gYmVzci52aWRfYnVmX2Jh
c2VfYWRyc192W3ByZXZfZnJhbWVdOwogICAgb2ZmWzVdID0gYmVzci52aWRfYnVmX2Jhc2VfYWRy
c191W3ByZXZfZnJhbWVdOwogICAgX3JhZGVvbl9maWZvX3dhaXQoOCk7CiAgICAoKigodm9sYXRp
bGUgdWludDMyX3QqKSgoKHVpbnQzMl90KShyYWRlb25fbW1pb19iYXNlKSkrKDB4MDQxMCkpKSk9
KDB4MDAwMDAwMDFMKTsKICAgIF9yYWRlb25fZW5naW5lX2lkbGUoKTsKICAgIHdoaWxlKCEoSU5S
RUcoMHgwNDEwKSYweDAwMDAwMDA4TCkpOwogICAgKCooKHZvbGF0aWxlIHVpbnQzMl90KikoKCh1
aW50MzJfdCkocmFkZW9uX21taW9fYmFzZSkpKygweDA0NDApKSkpPShvZmZbMF0pOwogICAgKCoo
KHZvbGF0aWxlIHVpbnQzMl90KikoKCh1aW50MzJfdCkocmFkZW9uX21taW9fYmFzZSkpKygweDA0
NDQpKSkpPShvZmZbMV0pOwogICAgKCooKHZvbGF0aWxlIHVpbnQzMl90KikoKCh1aW50MzJfdCko
cmFkZW9uX21taW9fYmFzZSkpKygweDA0NDgpKSkpPShvZmZbMl0pOwogICAgKCooKHZvbGF0aWxl
IHVpbnQzMl90KikoKCh1aW50MzJfdCkocmFkZW9uX21taW9fYmFzZSkpKygweDA0NEMpKSkpPShv
ZmZbM10pOwogICAgKCooKHZvbGF0aWxlIHVpbnQzMl90KikoKCh1aW50MzJfdCkocmFkZW9uX21t
aW9fYmFzZSkpKygweDA0NTApKSkpPShvZmZbNF0pOwogICAgKCooKHZvbGF0aWxlIHVpbnQzMl90
KikoKCh1aW50MzJfdCkocmFkZW9uX21taW9fYmFzZSkpKygweDA0NTQpKSkpPShvZmZbNV0pOwog
ICAgKCooKHZvbGF0aWxlIHVpbnQzMl90KikoKCh1aW50MzJfdCkocmFkZW9uX21taW9fYmFzZSkp
KygweDA0MTApKSkpPSgwKTsKICAgIGlmKGJlc3IudmlkX25idWZzID09IDIpIHJhZGVvbl93YWl0
X3ZzeW5jKCk7CiAgICBpZihfX3ZlcmJvc2UgPiAwKSByYWRlb25fdmlkX2R1bXBfcmVncygpOwog
ICAgcmV0dXJuIDA7Cn0KCnZpZGl4X3ZpZGVvX2VxX3QgZXF1YWwgPQp7CiAweDAwMDAwMDAxVUwg
fCAweDAwMDAwMDA0VUwKCgoKICwKIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAgfTsKCmludCB2aXhQ
bGF5YmFja0dldEVxKCB2aWRpeF92aWRlb19lcV90ICogZXEpCnsKICBtZW1jcHkoZXEsJmVxdWFs
LHNpemVvZih2aWRpeF92aWRlb19lcV90KSk7CiAgcmV0dXJuIDA7Cn0KIyAzMDgzICJyYWdlMTI4
X3ZpZC5jIgppbnQgdml4UGxheWJhY2tTZXRFcSggY29uc3QgdmlkaXhfdmlkZW9fZXFfdCAqIGVx
KQp7CgogIGludCBicixzYXQ7CgoKCiAgICBpZihlcS0+Y2FwICYgMHgwMDAwMDAwMVVMKSBlcXVh
bC5icmlnaHRuZXNzID0gZXEtPmJyaWdodG5lc3M7CiAgICBpZihlcS0+Y2FwICYgMHgwMDAwMDAw
MlVMKSBlcXVhbC5jb250cmFzdCA9IGVxLT5jb250cmFzdDsKICAgIGlmKGVxLT5jYXAgJiAweDAw
MDAwMDA0VUwpIGVxdWFsLnNhdHVyYXRpb24gPSBlcS0+c2F0dXJhdGlvbjsKICAgIGlmKGVxLT5j
YXAgJiAweDAwMDAwMDA4VUwpIGVxdWFsLmh1ZSA9IGVxLT5odWU7CiAgICBpZihlcS0+Y2FwICYg
MHgwMDAwMDAxMFVMKQogICAgewogICAgICBlcXVhbC5yZWRfaW50ZW5zaXR5ID0gZXEtPnJlZF9p
bnRlbnNpdHk7CiAgICAgIGVxdWFsLmdyZWVuX2ludGVuc2l0eSA9IGVxLT5ncmVlbl9pbnRlbnNp
dHk7CiAgICAgIGVxdWFsLmJsdWVfaW50ZW5zaXR5ID0gZXEtPmJsdWVfaW50ZW5zaXR5OwogICAg
fQogICAgZXF1YWwuZmxhZ3MgPSBlcS0+ZmxhZ3M7CgogICAgYnIgPSBlcXVhbC5icmlnaHRuZXNz
ICogNjQgLyAxMDAwOwogICAgaWYoYnIgPCAtNjQpIGJyID0gLTY0OyBpZihiciA+IDYzKSBiciA9
IDYzOwogICAgc2F0ID0gKGVxdWFsLnNhdHVyYXRpb24qMzEgKyAzMTAwMCkgLyAyMDAwOwogICAg
aWYoc2F0IDwgMCkgc2F0ID0gMDsgaWYoc2F0ID4gMzEpIHNhdCA9IDMxOwogICAgKCooKHZvbGF0
aWxlIHVpbnQzMl90KikoKCh1aW50MzJfdCkocmFkZW9uX21taW9fYmFzZSkpKygweDA0RTApKSkp
PSgoYnIgJiAweDdmKSB8IChzYXQgPDwgOCkgfCAoc2F0IDw8IDE2KSk7CiMgMzEyNSAicmFnZTEy
OF92aWQuYyIKICByZXR1cm4gMDsKfQoKaW50IHZpeFBsYXliYWNrU2V0RGVpbnQoIGNvbnN0IHZp
ZGl4X2RlaW50ZXJsYWNlX3QgKiBpbmZvKQp7CiAgdW5zaWduZWQgc2ZsZzsKICBzd2l0Y2goaW5m
by0+ZmxhZ3MpCiAgewogICAgZGVmYXVsdDoKICAgIGNhc2UgMHgwMDAwMDAwMDoKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJlc3IuZGVpbnRlcmxhY2Vfb24gPSAwOwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICBjYXNlIDB4MDAwMDAwMDI6CiAgICBjYXNlIDB4MDAw
MDAwMDE6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZXNyLmRlaW50ZXJsYWNlX29uID0g
MTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlc3IuZGVpbnRlcmxhY2VfcGF0dGVybiA9
IDB4OTAwQUFBQUE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgIGNhc2Ug
MHgwMDAwMDAwNDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlc3IuZGVpbnRlcmxhY2Vf
b24gPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVzci5kZWludGVybGFjZV9wYXR0
ZXJuID0gMHgwMDA1NTU1NTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
Y2FzZSAweDAwMDAwMDA4OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVzci5kZWludGVy
bGFjZV9vbiA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZXNyLmRlaW50ZXJsYWNl
X3BhdHRlcm4gPSBpbmZvLT5kZWludGVybGFjZV9wYXR0ZXJuOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgfQogICgqKCh2b2xhdGlsZSB1aW50MzJfdCopKCgodWludDMyX3Qp
KHJhZGVvbl9tbWlvX2Jhc2UpKSsoMHgwNDEwKSkpKT0oMHgwMDAwMDAwMUwpOwogIF9yYWRlb25f
ZW5naW5lX2lkbGUoKTsKICB3aGlsZSghKElOUkVHKDB4MDQxMCkmMHgwMDAwMDAwOEwpKTsKICBf
cmFkZW9uX2ZpZm9fd2FpdCgxNSk7CiAgc2ZsZyA9IElOUkVHKDB4MDQyMCk7CiAgaWYoYmVzci5k
ZWludGVybGFjZV9vbikKICB7CiAgICAoKigodm9sYXRpbGUgdWludDMyX3QqKSgoKHVpbnQzMl90
KShyYWRlb25fbW1pb19iYXNlKSkrKDB4MDQyMCkpKSk9KHNmbGcgfCAweDAwMDAxMDAwTCk7CiAg
ICAoKigodm9sYXRpbGUgdWludDMyX3QqKSgoKHVpbnQzMl90KShyYWRlb25fbW1pb19iYXNlKSkr
KDB4MDQ3NCkpKSk9KGJlc3IuZGVpbnRlcmxhY2VfcGF0dGVybik7CiAgfQogIGVsc2UgKCooKHZv
bGF0aWxlIHVpbnQzMl90KikoKCh1aW50MzJfdCkocmFkZW9uX21taW9fYmFzZSkpKygweDA0MjAp
KSkpPShzZmxnICYgKH4weDAwMDAxMDAwTCkpOwogICgqKCh2b2xhdGlsZSB1aW50MzJfdCopKCgo
dWludDMyX3QpKHJhZGVvbl9tbWlvX2Jhc2UpKSsoMHgwNDEwKSkpKT0oMCk7CiAgcmV0dXJuIDA7
Cn0KCmludCB2aXhQbGF5YmFja0dldERlaW50KCB2aWRpeF9kZWludGVybGFjZV90ICogaW5mbykK
ewogIGlmKCFiZXNyLmRlaW50ZXJsYWNlX29uKSBpbmZvLT5mbGFncyA9IDB4MDAwMDAwMDA7CiAg
ZWxzZQogIHsKICAgIGluZm8tPmZsYWdzID0gMHgwMDAwMDAwODsKICAgIGluZm8tPmRlaW50ZXJs
YWNlX3BhdHRlcm4gPSBiZXNyLmRlaW50ZXJsYWNlX3BhdHRlcm47CiAgfQogIHJldHVybiAwOwp9
CgoKCnN0YXRpYyB2aWRpeF9ncmtleV90IHJhZGVvbl9ncmtleTsKCnN0YXRpYyB2b2lkIHNldF9n
cl9rZXkoIHZvaWQgKQp7CiAgICBpZihyYWRlb25fZ3JrZXkuY2tleS5vcCA9PSAxKQogICAgewog
ICAgICAgIGludCBkYnBwPXJhZGVvbl92aWRfZ2V0X2RicHAoKTsKICAgICAgICBiZXNyLmNrZXlf
b249MTsKCiAgICAgICAgc3dpdGNoKGRicHApCiAgICAgICAgewogICAgICAgIGNhc2UgMTU6CiMg
MzE5OSAicmFnZTEyOF92aWQuYyIKICAgICAgICAgICAgICAgIGJlc3IuZ3JhcGhpY3Nfa2V5X2Ns
cj0KICAgICAgICAgICAgICAgICAgICAgICAgICAoKHJhZGVvbl9ncmtleS5ja2V5LmJsdWUgJjB4
RjgpPj4zKQogICAgICAgICAgICAgICAgICAgICAgICB8ICgocmFkZW9uX2dya2V5LmNrZXkuZ3Jl
ZW4mMHhGOCk8PDIpCiAgICAgICAgICAgICAgICAgICAgICAgIHwgKChyYWRlb25fZ3JrZXkuY2tl
eS5yZWQgJjB4RjgpPDw3KTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgMTY6
CiMgMzIxNCAicmFnZTEyOF92aWQuYyIKICAgICAgICAgICAgICAgIGJlc3IuZ3JhcGhpY3Nfa2V5
X2Nscj0KICAgICAgICAgICAgICAgICAgICAgICAgICAoKHJhZGVvbl9ncmtleS5ja2V5LmJsdWUg
JjB4RjgpPj4zKQogICAgICAgICAgICAgICAgICAgICAgICB8ICgocmFkZW9uX2dya2V5LmNrZXku
Z3JlZW4mMHhGQyk8PDMpCiAgICAgICAgICAgICAgICAgICAgICAgIHwgKChyYWRlb25fZ3JrZXku
Y2tleS5yZWQgJjB4RjgpPDw4KTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2Ug
MjQ6CiAgICAgICAgICAgICAgICBiZXNyLmdyYXBoaWNzX2tleV9jbHI9CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgKChyYWRlb25fZ3JrZXkuY2tleS5ibHVlICYweEZGKSkKICAgICAgICAgICAg
ICAgICAgICAgICAgfCAoKHJhZGVvbl9ncmtleS5ja2V5LmdyZWVuJjB4RkYpPDw4KQogICAgICAg
ICAgICAgICAgICAgICAgICB8ICgocmFkZW9uX2dya2V5LmNrZXkucmVkICYweEZGKTw8MTYpOwog
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAzMjoKICAgICAgICAgICAgICAgIGJl
c3IuZ3JhcGhpY3Nfa2V5X2Nscj0KICAgICAgICAgICAgICAgICAgICAgICAgICAoKHJhZGVvbl9n
cmtleS5ja2V5LmJsdWUgJjB4RkYpKQogICAgICAgICAgICAgICAgICAgICAgICB8ICgocmFkZW9u
X2dya2V5LmNrZXkuZ3JlZW4mMHhGRik8PDgpCiAgICAgICAgICAgICAgICAgICAgICAgIHwgKChy
YWRlb25fZ3JrZXkuY2tleS5yZWQgJjB4RkYpPDwxNik7CiAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgYmVzci5ja2V5X29uPTA7CiAgICAgICAg
ICAgICAgICBiZXNyLmdyYXBoaWNzX2tleV9tc2s9MDsKICAgICAgICAgICAgICAgIGJlc3IuZ3Jh
cGhpY3Nfa2V5X2Nscj0wOwogICAgICAgIH0KCiAgICAgICAgYmVzci5ncmFwaGljc19rZXlfbXNr
PSgxPDxkYnBwKS0xOwogICAgICAgIGJlc3IuY2tleV9jbnRsID0gMHgwMDAwMDAwMUx8MHgwMDAw
MDA1MEx8MHgwMDAwMDEwMEw7CgoKCgogICAgfQogICAgZWxzZQogICAgewogICAgICAgIGJlc3Iu
Y2tleV9vbj0wOwogICAgICAgIGJlc3IuZ3JhcGhpY3Nfa2V5X21zaz0wOwogICAgICAgIGJlc3Iu
Z3JhcGhpY3Nfa2V5X2Nscj0wOwogICAgICAgIGJlc3IuY2tleV9jbnRsID0gMHgwMDAwMDAwMUx8
MHgwMDAwMDAxMEx8MHgwMDAwMDEwMEw7CiAgICB9CiAgICBfcmFkZW9uX2ZpZm9fd2FpdCgzKTsK
ICAgICgqKCh2b2xhdGlsZSB1aW50MzJfdCopKCgodWludDMyX3QpKHJhZGVvbl9tbWlvX2Jhc2Up
KSsoMHgwNEYwKSkpKT0oYmVzci5ncmFwaGljc19rZXlfbXNrKTsKICAgICgqKCh2b2xhdGlsZSB1
aW50MzJfdCopKCgodWludDMyX3QpKHJhZGVvbl9tbWlvX2Jhc2UpKSsoMHgwNEVDKSkpKT0oYmVz
ci5ncmFwaGljc19rZXlfY2xyKTsKICAgICgqKCh2b2xhdGlsZSB1aW50MzJfdCopKCgodWludDMy
X3QpKHJhZGVvbl9tbWlvX2Jhc2UpKSsoMHgwNEY0KSkpKT0oYmVzci5ja2V5X2NudGwpOwp9Cgpp
bnQgdml4R2V0R3JLZXlzKHZpZGl4X2dya2V5X3QgKmdya2V5KQp7CiAgICBtZW1jcHkoZ3JrZXks
ICZyYWRlb25fZ3JrZXksIHNpemVvZih2aWRpeF9ncmtleV90KSk7CiAgICByZXR1cm4oMCk7Cn0K
CmludCB2aXhTZXRHcktleXMoY29uc3QgdmlkaXhfZ3JrZXlfdCAqZ3JrZXkpCnsKICAgIG1lbWNw
eSgmcmFkZW9uX2dya2V5LCBncmtleSwgc2l6ZW9mKHZpZGl4X2dya2V5X3QpKTsKICAgIHNldF9n
cl9rZXkoKTsKICAgIHJldHVybigwKTsKfQoKCnN0YXRpYyBpbnQgcmFkZW9uX3NldHVwX2ZyYW1l
KCB2aWRpeF9kbWFfdCAqIGRtYWkgKQp7CiAgICBibV9saXN0X2Rlc2NyaXB0b3IgKiBsaXN0ID0g
KGJtX2xpc3RfZGVzY3JpcHRvciAqKXJhZGVvbl9kbWFfZGVzY19iYXNlOwogICAgdW5zaWduZWQg
bG9uZyBkZXN0X3B0cjsKICAgIHVuc2lnbmVkIGksbixjb3VudDsKICAgIGludCByZXR2YWw7CiAg
ICBpZihkbWFpLT5kZXN0X29mZnNldCArIGRtYWktPnNpemUgPiByYWRlb25fcmFtX3NpemUpIHJl
dHVybiA3OwogICAgbiA9IGRtYWktPnNpemUgLyA0MDk2OwogICAgaWYoZG1haS0+c2l6ZSAlIDQw
OTYpIG4rKzsKICAgIGlmKChyZXR2YWwgPSBibV92aXJ0X3RvX2J1cyhkbWFpLT5zcmMsZG1haS0+
c2l6ZSxkbWFfcGh5c19hZGRycykpICE9IDApIHJldHVybiByZXR2YWw7CiAgICBkZXN0X3B0ciA9
IGRtYWktPmRlc3Rfb2Zmc2V0OwogICAgY291bnQgPSBkbWFpLT5zaXplOwogICAgZm9yKGk9MDtp
PG47aSsrKQogICAgewogICAgICAgIGxpc3RbaV0uZnJhbWVidWZfb2Zmc2V0ID0gcmFkZW9uX292
ZXJsYXlfb2ZmICsgZGVzdF9wdHI7CiAgICAgICAgbGlzdFtpXS5zeXNfYWRkciA9IGRtYV9waHlz
X2FkZHJzW2ldOwoKICAgICAgICBsaXN0W2ldLmNvbW1hbmQgPSAoY291bnQgPiA0MDk2ID8gNDA5
NiA6IGNvdW50IHwgMHg4MDAwMDAwMCl8MHgyMDAwMDAwMDsKCgoKICAgICAgICBsaXN0W2ldLnJl
c2VydmVkID0gMDsKcHJpbnRmKCJSQURFT05fRE1BX1RBQkxFWyVpXSAlWCAlWCAlWCAlWFxuIixp
LGxpc3RbaV0uZnJhbWVidWZfb2Zmc2V0LGxpc3RbaV0uc3lzX2FkZHIsbGlzdFtpXS5jb21tYW5k
LGxpc3RbaV0ucmVzZXJ2ZWQpOwogICAgICAgIGRlc3RfcHRyICs9IDQwOTY7CiAgICAgICAgY291
bnQgLT0gNDA5NjsKICAgIH0KICAgIHJldHVybiAwOwp9CgpzdGF0aWMgaW50IHJhZGVvbl90cmFu
c2Zlcl9mcmFtZSggdm9pZCApCnsKICAgIHVuc2lnbmVkIGk7CiAgICBfcmFkZW9uX2VuZ2luZV9p
ZGxlKCk7CiAgICBmb3IoaT0wO2k8MTAwMDtpKyspIElOUkVHKDB4MDAzMCk7CiAgICAoKigodm9s
YXRpbGUgdWludDMyX3QqKSgoKHVpbnQzMl90KShyYWRlb25fbW1pb19iYXNlKSkrKDB4MDAzMCkp
KSk9KChJTlJFRygweDAwMzApIHwgMHgwMDAwMDAwOCkmKH4weDAwMDAwMDQwKSk7CgogICAgKCoo
KHZvbGF0aWxlIHVpbnQzMl90KikoKCh1aW50MzJfdCkocmFkZW9uX21taW9fYmFzZSkpKygweEEx
OCkpKSk9KDB4MDAwMDAwRkYgfCAweDAwODAwMDAwKTsKICAgICgqKCh2b2xhdGlsZSB1aW50MzJf
dCopKCgodWludDMyX3QpKHJhZGVvbl9tbWlvX2Jhc2UpKSsoMHhBMUMpKSkpPSgweDBGMEYwRjBG
KTsKICAgICgqKCh2b2xhdGlsZSB1aW50MzJfdCopKCgodWludDMyX3QpKHJhZGVvbl9tbWlvX2Jh
c2UpKSsoMHhBMjApKSkpPShidXNfYWRkcl9kbWFfZGVzY3wweDApOwojIDMzMjIgInJhZ2UxMjhf
dmlkLmMiCiAgICAoKigodm9sYXRpbGUgdWludDMyX3QqKSgoKHVpbnQzMl90KShyYWRlb25fbW1p
b19iYXNlKSkrKDB4MDA0NCkpKSk9KElOUkVHKDB4MDA0NCl8MHgwMDAxMDAwMCk7CiAgICByZXR1
cm4gMDsKfQoKCmludCB2aXhQbGF5YmFja0NvcHlGcmFtZSggdmlkaXhfZG1hX3QgKiBkbWFpICkK
ewogICAgaW50IHJldHZhbDsKICAgIGlmKG1sb2NrKGRtYWktPnNyYyxkbWFpLT5zaXplKSAhPSAw
KSByZXR1cm4gKCpfX2Vycm5vX2xvY2F0aW9uICgpKTsKICAgIHJldHZhbCA9IHJhZGVvbl9zZXR1
cF9mcmFtZShkbWFpKTsKICAgIGlmKHJldHZhbCA9PSAwKSByZXR2YWwgPSByYWRlb25fdHJhbnNm
ZXJfZnJhbWUoKTsKICAgIG11bmxvY2soZG1haS0+c3JjLGRtYWktPnNpemUpOwogICAgcmV0dXJu
IHJldHZhbDsKfQoKaW50IHZpeFF1ZXJ5RE1BU3RhdHVzKCB2b2lkICkKewogICAgaW50IGJtX2Fj
dGl2ZTsKCiAgICBibV9hY3RpdmU9KElOUkVHKDB4MDA0NCkmMHgwMDAxMDAwMCk9PTA/MTowOwoK
CgogICAgcmV0dXJuIGJtX2FjdGl2ZT8xOjA7Cn0K



More information about the Gcc-bugs mailing list