This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

optimization/4231: a gcc-3.0.1 optimization bug



>Number:         4231
>Category:       optimization
>Synopsis:       a gcc-3.0.1 optimization bug
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Tue Sep 04 16:36:01 PDT 2001
>Closed-Date:
>Last-Modified:
>Originator:     Benoit Hudson
>Release:        3.0.1
>Organization:
>Environment:
i386-glibc21-linux  (redhat 7.2)
>Description:
gcc-3.0.1 seems to optimize out createmap.cpp:418 
(grade==maxgrade) in some circumstances.  The correct 
program should print out an "is ok" line every time
it prints out an "is best" line.  The incorrect program
aborts.

This works on sparc-sun-solaris28 / 2.95.2 ,
i386-glibc21-linux / 2.96(redhat),
i386-glibc21-linux / 3.0.1 up to -O1

It fails on i386-glibc21-linux / 3.0.1 with -O2 and above.
>How-To-Repeat:
gcc-3.0.1 -O2 createmap.ii -o createmap
createmap 10 10 10 > file
less file
# warning: when it works, file contains binary data
>Fix:

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

IyAzICJjcmVhdGVtYXAuY3BwIgojIDEgIi91c3IvbG9jYWwvbGliL2djYy1saWIvaTY4Ni1wYy1s
aW51eC1nbnUvMy4wLjEvaW5jbHVkZS9zdGRpby5oIiAxIDMKIyAzNiAiL3Vzci9sb2NhbC9saWIv
Z2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuMS9pbmNsdWRlL3N0ZGlvLmgiIDMKIyAxICIv
dXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMjgzICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMu
aCIgMwojIDEgIi91c3IvaW5jbHVkZS9zeXMvY2RlZnMuaCIgMSAzCiMgMjg0ICIvdXNyL2luY2x1
ZGUvZmVhdHVyZXMuaCIgMiAzCiMgMzExICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMwojIDEg
Ii91c3IvaW5jbHVkZS9nbnUvc3R1YnMuaCIgMSAzCiMgMzEyICIvdXNyL2luY2x1ZGUvZmVhdHVy
ZXMuaCIgMiAzCiMgMzcgIi91c3IvbG9jYWwvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUv
My4wLjEvaW5jbHVkZS9zdGRpby5oIiAyIDMKCmV4dGVybiAiQyIgewoKCgojIDEgIi91c3IvbG9j
YWwvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjEvaW5jbHVkZS9zdGRkZWYuaCIg
MSAzCiMgMTk5ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC4x
L2luY2x1ZGUvc3RkZGVmLmgiIDMKdHlwZWRlZiB1bnNpZ25lZCBpbnQgc2l6ZV90OwojIDQzICIv
dXNyL2xvY2FsL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC4xL2luY2x1ZGUvc3Rk
aW8uaCIgMiAzCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDEgMwojIDI2ICIvdXNy
L2luY2x1ZGUvYml0cy90eXBlcy5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDEg
MwojIDI3ICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAyIDMKCgojIDEgIi91c3IvbG9jYWwv
bGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjEvaW5jbHVkZS9zdGRkZWYuaCIgMSAz
CiMgMzAgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDIgMwoKCnR5cGVkZWYgdW5zaWduZWQg
Y2hhciBfX3VfY2hhcjsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBfX3Vfc2hvcnQ7CnR5cGVkZWYg
dW5zaWduZWQgaW50IF9fdV9pbnQ7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBfX3VfbG9uZzsKCl9f
ZXh0ZW5zaW9uX18gdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fdV9xdWFkX3Q7Cl9f
ZXh0ZW5zaW9uX18gdHlwZWRlZiBsb25nIGxvbmcgaW50IF9fcXVhZF90OwojIDQ5ICIvdXNyL2lu
Y2x1ZGUvYml0cy90eXBlcy5oIiAzCnR5cGVkZWYgc2lnbmVkIGNoYXIgX19pbnQ4X3Q7CnR5cGVk
ZWYgdW5zaWduZWQgY2hhciBfX3VpbnQ4X3Q7CnR5cGVkZWYgc2lnbmVkIHNob3J0IGludCBfX2lu
dDE2X3Q7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50IF9fdWludDE2X3Q7CnR5cGVkZWYgc2ln
bmVkIGludCBfX2ludDMyX3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9fdWludDMyX3Q7CgpfX2V4
dGVuc2lvbl9fIHR5cGVkZWYgc2lnbmVkIGxvbmcgbG9uZyBpbnQgX19pbnQ2NF90OwpfX2V4dGVu
c2lvbl9fIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIGludCBfX3VpbnQ2NF90OwoKdHlwZWRl
ZiBfX3F1YWRfdCAqX19xYWRkcl90OwoKdHlwZWRlZiBfX3VfcXVhZF90IF9fZGV2X3Q7CnR5cGVk
ZWYgX191X2ludCBfX3VpZF90Owp0eXBlZGVmIF9fdV9pbnQgX19naWRfdDsKdHlwZWRlZiBfX3Vf
bG9uZyBfX2lub190Owp0eXBlZGVmIF9fdV9pbnQgX19tb2RlX3Q7CnR5cGVkZWYgX191X2ludCBf
X25saW5rX3Q7CnR5cGVkZWYgbG9uZyBpbnQgX19vZmZfdDsKdHlwZWRlZiBfX3F1YWRfdCBfX2xv
ZmZfdDsKdHlwZWRlZiBpbnQgX19waWRfdDsKdHlwZWRlZiBpbnQgX19zc2l6ZV90Owp0eXBlZGVm
IF9fdV9sb25nIF9fcmxpbV90Owp0eXBlZGVmIF9fdV9xdWFkX3QgX19ybGltNjRfdDsKdHlwZWRl
ZiBfX3VfaW50IF9faWRfdDsKCnR5cGVkZWYgc3RydWN0CiAgewogICAgaW50IF9fdmFsWzJdOwog
IH0gX19mc2lkX3Q7CgoKdHlwZWRlZiBpbnQgX19kYWRkcl90Owp0eXBlZGVmIGNoYXIgKl9fY2Fk
ZHJfdDsKdHlwZWRlZiBsb25nIGludCBfX3RpbWVfdDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX191
c2Vjb25kc190Owp0eXBlZGVmIGxvbmcgaW50IF9fc3VzZWNvbmRzX3Q7CnR5cGVkZWYgbG9uZyBp
bnQgX19zd2Jsa190OwoKdHlwZWRlZiBsb25nIGludCBfX2Nsb2NrX3Q7CgoKdHlwZWRlZiBpbnQg
X19jbG9ja2lkX3Q7CgoKdHlwZWRlZiBpbnQgX190aW1lcl90OwoKCgoKCgp0eXBlZGVmIGludCBf
X2tleV90OwoKCnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50IF9faXBjX3BpZF90OwoKCgp0eXBl
ZGVmIGxvbmcgaW50IF9fYmxrc2l6ZV90OwoKCgoKdHlwZWRlZiBsb25nIGludCBfX2Jsa2NudF90
Owp0eXBlZGVmIF9fcXVhZF90IF9fYmxrY250NjRfdDsKCgp0eXBlZGVmIF9fdV9sb25nIF9fZnNi
bGtjbnRfdDsKdHlwZWRlZiBfX3VfcXVhZF90IF9fZnNibGtjbnQ2NF90OwoKCnR5cGVkZWYgX191
X2xvbmcgX19mc2ZpbGNudF90Owp0eXBlZGVmIF9fdV9xdWFkX3QgX19mc2ZpbGNudDY0X3Q7CgoK
dHlwZWRlZiBfX3VfcXVhZF90IF9faW5vNjRfdDsKCgp0eXBlZGVmIF9fbG9mZl90IF9fb2ZmNjRf
dDsKCgp0eXBlZGVmIGxvbmcgaW50IF9fdF9zY2FsYXJfdDsKdHlwZWRlZiB1bnNpZ25lZCBsb25n
IGludCBfX3RfdXNjYWxhcl90OwoKCnR5cGVkZWYgaW50IF9faW50cHRyX3Q7CgoKdHlwZWRlZiB1
bnNpZ25lZCBpbnQgX19zb2NrbGVuX3Q7CgoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3B0aHJl
YWR0eXBlcy5oIiAxIDMKIyAyMyAiL3Vzci9pbmNsdWRlL2JpdHMvcHRocmVhZHR5cGVzLmgiIDMK
IyAxICIvdXNyL2luY2x1ZGUvYml0cy9zY2hlZC5oIiAxIDMKIyA2OCAiL3Vzci9pbmNsdWRlL2Jp
dHMvc2NoZWQuaCIgMwpzdHJ1Y3QgX19zY2hlZF9wYXJhbQogIHsKICAgIGludCBfX3NjaGVkX3By
aW9yaXR5OwogIH07CiMgMjQgIi91c3IvaW5jbHVkZS9iaXRzL3B0aHJlYWR0eXBlcy5oIiAyIDMK
CgpzdHJ1Y3QgX3B0aHJlYWRfZmFzdGxvY2sKewogIGxvbmcgaW50IF9fc3RhdHVzOwogIGludCBf
X3NwaW5sb2NrOwoKfTsKCgoKdHlwZWRlZiBzdHJ1Y3QgX3B0aHJlYWRfZGVzY3Jfc3RydWN0ICpf
cHRocmVhZF9kZXNjcjsKCgoKCgp0eXBlZGVmIHN0cnVjdCBfX3B0aHJlYWRfYXR0cl9zCnsKICBp
bnQgX19kZXRhY2hzdGF0ZTsKICBpbnQgX19zY2hlZHBvbGljeTsKICBzdHJ1Y3QgX19zY2hlZF9w
YXJhbSBfX3NjaGVkcGFyYW07CiAgaW50IF9faW5oZXJpdHNjaGVkOwogIGludCBfX3Njb3BlOwog
IHNpemVfdCBfX2d1YXJkc2l6ZTsKICBpbnQgX19zdGFja2FkZHJfc2V0OwogIHZvaWQgKl9fc3Rh
Y2thZGRyOwogIHNpemVfdCBfX3N0YWNrc2l6ZTsKfSBwdGhyZWFkX2F0dHJfdDsKCgoKdHlwZWRl
ZiBzdHJ1Y3QKewogIHN0cnVjdCBfcHRocmVhZF9mYXN0bG9jayBfX2NfbG9jazsKICBfcHRocmVh
ZF9kZXNjciBfX2Nfd2FpdGluZzsKfSBwdGhyZWFkX2NvbmRfdDsKCgoKdHlwZWRlZiBzdHJ1Y3QK
ewogIGludCBfX2R1bW15Owp9IHB0aHJlYWRfY29uZGF0dHJfdDsKCgp0eXBlZGVmIHVuc2lnbmVk
IGludCBwdGhyZWFkX2tleV90OwoKCgoKCnR5cGVkZWYgc3RydWN0CnsKICBpbnQgX19tX3Jlc2Vy
dmVkOwogIGludCBfX21fY291bnQ7CiAgX3B0aHJlYWRfZGVzY3IgX19tX293bmVyOwogIGludCBf
X21fa2luZDsKICBzdHJ1Y3QgX3B0aHJlYWRfZmFzdGxvY2sgX19tX2xvY2s7Cn0gcHRocmVhZF9t
dXRleF90OwoKCgp0eXBlZGVmIHN0cnVjdAp7CiAgaW50IF9fbXV0ZXhraW5kOwp9IHB0aHJlYWRf
bXV0ZXhhdHRyX3Q7CgoKCnR5cGVkZWYgaW50IHB0aHJlYWRfb25jZV90OwoKCgoKdHlwZWRlZiBz
dHJ1Y3QgX3B0aHJlYWRfcndsb2NrX3QKewogIHN0cnVjdCBfcHRocmVhZF9mYXN0bG9jayBfX3J3
X2xvY2s7CiAgaW50IF9fcndfcmVhZGVyczsKICBfcHRocmVhZF9kZXNjciBfX3J3X3dyaXRlcjsK
ICBfcHRocmVhZF9kZXNjciBfX3J3X3JlYWRfd2FpdGluZzsKICBfcHRocmVhZF9kZXNjciBfX3J3
X3dyaXRlX3dhaXRpbmc7CiAgaW50IF9fcndfa2luZDsKICBpbnQgX19yd19wc2hhcmVkOwp9IHB0
aHJlYWRfcndsb2NrX3Q7CgoKCnR5cGVkZWYgc3RydWN0CnsKICBpbnQgX19sb2Nra2luZDsKICBp
bnQgX19wc2hhcmVkOwp9IHB0aHJlYWRfcndsb2NrYXR0cl90OwoKCgoKdHlwZWRlZiB2b2xhdGls
ZSBpbnQgcHRocmVhZF9zcGlubG9ja190OwoKCnR5cGVkZWYgc3RydWN0IHsKICBzdHJ1Y3QgX3B0
aHJlYWRfZmFzdGxvY2sgX19iYV9sb2NrOwogIGludCBfX2JhX3JlcXVpcmVkOwogIGludCBfX2Jh
X3ByZXNlbnQ7CiAgX3B0aHJlYWRfZGVzY3IgX19iYV93YWl0aW5nOwp9IHB0aHJlYWRfYmFycmll
cl90OwoKCnR5cGVkZWYgc3RydWN0IHsKICBpbnQgX19wc2hhcmVkOwp9IHB0aHJlYWRfYmFycmll
cmF0dHJfdDsKCgoKCgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IHB0aHJlYWRfdDsKIyAxNDQg
Ii91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDIgMwojIDQ1ICIvdXNyL2xvY2FsL2xpYi9nY2Mt
bGliL2k2ODYtcGMtbGludXgtZ251LzMuMC4xL2luY2x1ZGUvc3RkaW8uaCIgMiAzCiMgNTMgIi91
c3IvbG9jYWwvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjEvaW5jbHVkZS9zdGRp
by5oIiAzCnR5cGVkZWYgc3RydWN0IF9JT19GSUxFIEZJTEU7CiMgNjMgIi91c3IvbG9jYWwvbGli
L2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjEvaW5jbHVkZS9zdGRpby5oIiAzCnR5cGVk
ZWYgc3RydWN0IF9JT19GSUxFIF9fRklMRTsKIyA3MyAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9p
Njg2LXBjLWxpbnV4LWdudS8zLjAuMS9pbmNsdWRlL3N0ZGlvLmgiIDMKIyAxICIvdXNyL2luY2x1
ZGUvbGliaW8uaCIgMSAzCiMgMzAgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCiMgMSAiL3Vzci9p
bmNsdWRlL19HX2NvbmZpZy5oIiAxIDMKIyA5ICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgiIDMK
IyAxICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAxIDMKIyAxMCAiL3Vzci9pbmNsdWRlL19H
X2NvbmZpZy5oIiAyIDMKCgoKCiMgMSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9pNjg2LXBjLWxp
bnV4LWdudS8zLjAuMS9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAzMTIgIi91c3IvbG9jYWwvbGli
L2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjEvaW5jbHVkZS9zdGRkZWYuaCIgMwp0eXBl
ZGVmIHVuc2lnbmVkIGludCB3aW50X3Q7CiMgMTUgIi91c3IvaW5jbHVkZS9fR19jb25maWcuaCIg
MiAzCiMgMjQgIi91c3IvaW5jbHVkZS9fR19jb25maWcuaCIgMwojIDEgIi91c3IvaW5jbHVkZS93
Y2hhci5oIiAxIDMKIyA0OCAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDMKIyAxICIvdXNyL2xvY2Fs
L2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC4xL2luY2x1ZGUvc3RkZGVmLmgiIDEg
MwojIDQ5ICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMiAzCgojIDEgIi91c3IvaW5jbHVkZS9iaXRz
L3djaGFyLmgiIDEgMwojIDUxICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMiAzCiMgNjcgIi91c3Iv
aW5jbHVkZS93Y2hhci5oIiAzCnR5cGVkZWYgc3RydWN0CnsKICBpbnQgX19jb3VudDsKICB1bmlv
bgogIHsKICAgIHdpbnRfdCBfX3djaDsKICAgIGNoYXIgX193Y2hiWzRdOwogIH0gX192YWx1ZTsK
fSBfX21ic3RhdGVfdDsKIyAyNSAiL3Vzci9pbmNsdWRlL19HX2NvbmZpZy5oIiAyIDMKCnR5cGVk
ZWYgc3RydWN0CnsKICBfX29mZl90IF9fcG9zOwogIF9fbWJzdGF0ZV90IF9fc3RhdGU7Cn0gX0df
ZnBvc190Owp0eXBlZGVmIHN0cnVjdAp7CiAgX19vZmY2NF90IF9fcG9zOwogIF9fbWJzdGF0ZV90
IF9fc3RhdGU7Cn0gX0dfZnBvczY0X3Q7CiMgNDQgIi91c3IvaW5jbHVkZS9fR19jb25maWcuaCIg
MwojIDEgIi91c3IvaW5jbHVkZS9nY29udi5oIiAxIDMKIyAyNiAiL3Vzci9pbmNsdWRlL2djb252
LmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMjcgIi91c3IvaW5jbHVk
ZS9nY29udi5oIiAyIDMKCiMgMSAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDEgMwojIDQ4ICIvdXNy
L2luY2x1ZGUvd2NoYXIuaCIgMwojIDEgIi91c3IvbG9jYWwvbGliL2djYy1saWIvaTY4Ni1wYy1s
aW51eC1nbnUvMy4wLjEvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgNDkgIi91c3IvaW5jbHVkZS93
Y2hhci5oIiAyIDMKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvd2NoYXIuaCIgMSAzCiMgNTEgIi91
c3IvaW5jbHVkZS93Y2hhci5oIiAyIDMKIyAyOSAiL3Vzci9pbmNsdWRlL2djb252LmgiIDIgMwoK
IyAxICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC4xL2luY2x1
ZGUvc3RkZGVmLmgiIDEgMwojIDMxICIvdXNyL2luY2x1ZGUvZ2NvbnYuaCIgMiAzCgoKCgoKZW51
bQp7CiAgX19HQ09OVl9PSyA9IDAsCiAgX19HQ09OVl9OT0NPTlYsCiAgX19HQ09OVl9OT0RCLAog
IF9fR0NPTlZfTk9NRU0sCgogIF9fR0NPTlZfRU1QVFlfSU5QVVQsCiAgX19HQ09OVl9GVUxMX09V
VFBVVCwKICBfX0dDT05WX0lMTEVHQUxfSU5QVVQsCiAgX19HQ09OVl9JTkNPTVBMRVRFX0lOUFVU
LAoKICBfX0dDT05WX0lMTEVHQUxfREVTQ1JJUFRPUiwKICBfX0dDT05WX0lOVEVSTkFMX0VSUk9S
Cn07CgoKCmVudW0KewogIF9fR0NPTlZfSVNfTEFTVCA9IDB4MDAwMSwKICBfX0dDT05WX0lHTk9S
RV9FUlJPUlMgPSAweDAwMDIKfTsKCgoKc3RydWN0IF9fZ2NvbnZfc3RlcDsKc3RydWN0IF9fZ2Nv
bnZfc3RlcF9kYXRhOwpzdHJ1Y3QgX19nY29udl9sb2FkZWRfb2JqZWN0OwpzdHJ1Y3QgX19nY29u
dl90cmFuc19kYXRhOwoKCgp0eXBlZGVmIGludCAoKl9fZ2NvbnZfZmN0KSAoc3RydWN0IF9fZ2Nv
bnZfc3RlcCAqLCBzdHJ1Y3QgX19nY29udl9zdGVwX2RhdGEgKiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF9fY29uc3QgdW5zaWduZWQgY2hhciAqKiwgX19jb25zdCB1bnNpZ25lZCBjaGFy
ICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICoqLCBzaXplX3Qg
KiwgaW50LCBpbnQpOwoKCnR5cGVkZWYgaW50ICgqX19nY29udl9pbml0X2ZjdCkgKHN0cnVjdCBf
X2djb252X3N0ZXAgKik7CnR5cGVkZWYgdm9pZCAoKl9fZ2NvbnZfZW5kX2ZjdCkgKHN0cnVjdCBf
X2djb252X3N0ZXAgKik7CgoKCnR5cGVkZWYgaW50ICgqX19nY29udl90cmFuc19mY3QpIChzdHJ1
Y3QgX19nY29udl9zdGVwICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1
Y3QgX19nY29udl9zdGVwX2RhdGEgKiwgdm9pZCAqLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgX19jb25zdCB1bnNpZ25lZCBjaGFyICosCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKiosCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKiwgdW5zaWduZWQgY2hhciAqKiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqKTsKCgp0eXBlZGVmIGlu
dCAoKl9fZ2NvbnZfdHJhbnNfY29udGV4dF9mY3QpICh2b2lkICosIF9fY29uc3QgdW5zaWduZWQg
Y2hhciAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgY2hhciAqLCB1bnNpZ25lZCBjaGFyICopOwoKCnR5cGVkZWYgaW50ICgqX19n
Y29udl90cmFuc19xdWVyeV9mY3QpIChfX2NvbnN0IGNoYXIgKiwgX19jb25zdCBjaGFyICoqKiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqKTsKCgp0eXBl
ZGVmIGludCAoKl9fZ2NvbnZfdHJhbnNfaW5pdF9mY3QpICh2b2lkICoqLCBjb25zdCBjaGFyICop
Owp0eXBlZGVmIHZvaWQgKCpfX2djb252X3RyYW5zX2VuZF9mY3QpICh2b2lkICopOwoKc3RydWN0
IF9fZ2NvbnZfdHJhbnNfZGF0YQp7CgogIF9fZ2NvbnZfdHJhbnNfZmN0IF9fdHJhbnNfZmN0Owog
IF9fZ2NvbnZfdHJhbnNfY29udGV4dF9mY3QgX190cmFuc19jb250ZXh0X2ZjdDsKICBfX2djb252
X3RyYW5zX2VuZF9mY3QgX190cmFuc19lbmRfZmN0OwogIHZvaWQgKl9fZGF0YTsKICBzdHJ1Y3Qg
X19nY29udl90cmFuc19kYXRhICpfX25leHQ7Cn07CgoKCnN0cnVjdCBfX2djb252X3N0ZXAKewog
IHN0cnVjdCBfX2djb252X2xvYWRlZF9vYmplY3QgKl9fc2hsaWJfaGFuZGxlOwogIF9fY29uc3Qg
Y2hhciAqX19tb2RuYW1lOwoKICBpbnQgX19jb3VudGVyOwoKICBjaGFyICpfX2Zyb21fbmFtZTsK
ICBjaGFyICpfX3RvX25hbWU7CgogIF9fZ2NvbnZfZmN0IF9fZmN0OwogIF9fZ2NvbnZfaW5pdF9m
Y3QgX19pbml0X2ZjdDsKICBfX2djb252X2VuZF9mY3QgX19lbmRfZmN0OwoKCgogIGludCBfX21p
bl9uZWVkZWRfZnJvbTsKICBpbnQgX19tYXhfbmVlZGVkX2Zyb207CiAgaW50IF9fbWluX25lZWRl
ZF90bzsKICBpbnQgX19tYXhfbmVlZGVkX3RvOwoKCiAgaW50IF9fc3RhdGVmdWw7CgogIHZvaWQg
Kl9fZGF0YTsKfTsKCgoKc3RydWN0IF9fZ2NvbnZfc3RlcF9kYXRhCnsKICB1bnNpZ25lZCBjaGFy
ICpfX291dGJ1ZjsKICB1bnNpZ25lZCBjaGFyICpfX291dGJ1ZmVuZDsKCgoKICBpbnQgX19mbGFn
czsKCgoKICBpbnQgX19pbnZvY2F0aW9uX2NvdW50ZXI7CgoKCiAgaW50IF9faW50ZXJuYWxfdXNl
OwoKICBfX21ic3RhdGVfdCAqX19zdGF0ZXA7CiAgX19tYnN0YXRlX3QgX19zdGF0ZTsKCgoKICBz
dHJ1Y3QgX19nY29udl90cmFuc19kYXRhICpfX3RyYW5zOwp9OwoKCgp0eXBlZGVmIHN0cnVjdCBf
X2djb252X2luZm8KewogIHNpemVfdCBfX25zdGVwczsKICBzdHJ1Y3QgX19nY29udl9zdGVwICpf
X3N0ZXBzOwogIF9fZXh0ZW5zaW9uX18gc3RydWN0IF9fZ2NvbnZfc3RlcF9kYXRhIF9fZGF0YSBb
XTsKfSAqX19nY29udl90OwojIDQ1ICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgiIDIgMwp0eXBl
ZGVmIHVuaW9uCnsKICBzdHJ1Y3QgX19nY29udl9pbmZvIF9fY2Q7CiAgc3RydWN0CiAgewogICAg
c3RydWN0IF9fZ2NvbnZfaW5mbyBfX2NkOwogICAgc3RydWN0IF9fZ2NvbnZfc3RlcF9kYXRhIF9f
ZGF0YTsKICB9IF9fY29tYmluZWQ7Cn0gX0dfaWNvbnZfdDsKCnR5cGVkZWYgaW50IF9HX2ludDE2
X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX0hJX18pKSk7CnR5cGVkZWYgaW50IF9HX2lu
dDMyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1NJX18pKSk7CnR5cGVkZWYgdW5zaWdu
ZWQgaW50IF9HX3VpbnQxNl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19ISV9fKSkpOwp0
eXBlZGVmIHVuc2lnbmVkIGludCBfR191aW50MzJfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18g
KF9fU0lfXykpKTsKIyAzMSAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDIgMwojIDUxICIvdXNyL2lu
Y2x1ZGUvbGliaW8uaCIgMwojIDEgIi91c3IvbG9jYWwvbGliL2djYy1saWIvaTY4Ni1wYy1saW51
eC1nbnUvMy4wLjEvaW5jbHVkZS9zdGRhcmcuaCIgMSAzCiMgNDMgIi91c3IvbG9jYWwvbGliL2dj
Yy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjEvaW5jbHVkZS9zdGRhcmcuaCIgMwp0eXBlZGVm
IF9fYnVpbHRpbl92YV9saXN0IF9fZ251Y192YV9saXN0OwojIDUyICIvdXNyL2luY2x1ZGUvbGli
aW8uaCIgMiAzCiMgMTU4ICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwpzdHJ1Y3QgX0lPX2p1bXBf
dDsgc3RydWN0IF9JT19GSUxFOwojIDE2OCAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKdHlwZWRl
ZiB2b2lkIF9JT19sb2NrX3Q7CgoKCgoKc3RydWN0IF9JT19tYXJrZXIgewogIHN0cnVjdCBfSU9f
bWFya2VyICpfbmV4dDsKICBzdHJ1Y3QgX0lPX0ZJTEUgKl9zYnVmOwoKCgogIGludCBfcG9zOwoj
IDE5MSAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKfTsKCgplbnVtIF9fY29kZWN2dF9yZXN1bHQK
ewogIF9fY29kZWN2dF9vaywKICBfX2NvZGVjdnRfcGFydGlhbCwKICBfX2NvZGVjdnRfZXJyb3Is
CiAgX19jb2RlY3Z0X25vY29udgp9OwojIDI1OSAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKc3Ry
dWN0IF9JT19GSUxFIHsKICBpbnQgX2ZsYWdzOwoKCgoKICBjaGFyKiBfSU9fcmVhZF9wdHI7CiAg
Y2hhciogX0lPX3JlYWRfZW5kOwogIGNoYXIqIF9JT19yZWFkX2Jhc2U7CiAgY2hhciogX0lPX3dy
aXRlX2Jhc2U7CiAgY2hhciogX0lPX3dyaXRlX3B0cjsKICBjaGFyKiBfSU9fd3JpdGVfZW5kOwog
IGNoYXIqIF9JT19idWZfYmFzZTsKICBjaGFyKiBfSU9fYnVmX2VuZDsKCiAgY2hhciAqX0lPX3Nh
dmVfYmFzZTsKICBjaGFyICpfSU9fYmFja3VwX2Jhc2U7CiAgY2hhciAqX0lPX3NhdmVfZW5kOwoK
ICBzdHJ1Y3QgX0lPX21hcmtlciAqX21hcmtlcnM7CgogIHN0cnVjdCBfSU9fRklMRSAqX2NoYWlu
OwoKICBpbnQgX2ZpbGVubzsKICBpbnQgX2Jsa3NpemU7CiAgX19vZmZfdCBfb2xkX29mZnNldDsK
CgoKICB1bnNpZ25lZCBzaG9ydCBfY3VyX2NvbHVtbjsKICBzaWduZWQgY2hhciBfdnRhYmxlX29m
ZnNldDsKICBjaGFyIF9zaG9ydGJ1ZlsxXTsKCgoKICBfSU9fbG9ja190ICpfbG9jazsKIyAzMDMg
Ii91c3IvaW5jbHVkZS9saWJpby5oIiAzCiAgX19vZmY2NF90IF9vZmZzZXQ7CgoKCgoKICB2b2lk
ICpfX3BhZDE7CiAgdm9pZCAqX19wYWQyOwoKICBpbnQgX21vZGU7CgogIGNoYXIgX3VudXNlZDJb
MTUgKiBzaXplb2YgKGludCkgLSAyICogc2l6ZW9mICh2b2lkICopXTsKCn07CgoKCgoKc3RydWN0
IF9JT19GSUxFX3BsdXM7CgpleHRlcm4gc3RydWN0IF9JT19GSUxFX3BsdXMgX0lPXzJfMV9zdGRp
bl87CmV4dGVybiBzdHJ1Y3QgX0lPX0ZJTEVfcGx1cyBfSU9fMl8xX3N0ZG91dF87CmV4dGVybiBz
dHJ1Y3QgX0lPX0ZJTEVfcGx1cyBfSU9fMl8xX3N0ZGVycl87CiMgMzQyICIvdXNyL2luY2x1ZGUv
bGliaW8uaCIgMwp0eXBlZGVmIF9fc3NpemVfdCBfX2lvX3JlYWRfZm4gKHZvaWQgKl9fY29va2ll
LCBjaGFyICpfX2J1Ziwgc2l6ZV90IF9fbmJ5dGVzKTsKCgoKCgoKCnR5cGVkZWYgX19zc2l6ZV90
IF9faW9fd3JpdGVfZm4gKHZvaWQgKl9fY29va2llLCBfX2NvbnN0IGNoYXIgKl9fYnVmLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19uKTsKCgoKCgoKCnR5cGVkZWYg
aW50IF9faW9fc2Vla19mbiAodm9pZCAqX19jb29raWUsIF9fb2ZmNjRfdCAqX19wb3MsIGludCBf
X3cpOwoKCnR5cGVkZWYgaW50IF9faW9fY2xvc2VfZm4gKHZvaWQgKl9fY29va2llKTsKCgoKCnR5
cGVkZWYgX19pb19yZWFkX2ZuIGNvb2tpZV9yZWFkX2Z1bmN0aW9uX3Q7CnR5cGVkZWYgX19pb193
cml0ZV9mbiBjb29raWVfd3JpdGVfZnVuY3Rpb25fdDsKdHlwZWRlZiBfX2lvX3NlZWtfZm4gY29v
a2llX3NlZWtfZnVuY3Rpb25fdDsKdHlwZWRlZiBfX2lvX2Nsb3NlX2ZuIGNvb2tpZV9jbG9zZV9m
dW5jdGlvbl90OwoKCnR5cGVkZWYgc3RydWN0CnsKICBfX2lvX3JlYWRfZm4gKnJlYWQ7CiAgX19p
b193cml0ZV9mbiAqd3JpdGU7CiAgX19pb19zZWVrX2ZuICpzZWVrOwogIF9faW9fY2xvc2VfZm4g
KmNsb3NlOwp9IF9JT19jb29raWVfaW9fZnVuY3Rpb25zX3Q7CnR5cGVkZWYgX0lPX2Nvb2tpZV9p
b19mdW5jdGlvbnNfdCBjb29raWVfaW9fZnVuY3Rpb25zX3Q7CgpzdHJ1Y3QgX0lPX2Nvb2tpZV9m
aWxlOwoKCmV4dGVybiB2b2lkIF9JT19jb29raWVfaW5pdCAoc3RydWN0IF9JT19jb29raWVfZmls
ZSAqX19jZmlsZSwgaW50IF9fcmVhZF93cml0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB2b2lkICpfX2Nvb2tpZSwgX0lPX2Nvb2tpZV9pb19mdW5jdGlvbnNfdCBfX2Zucyk7CgoKCgpl
eHRlcm4gIkMiIHsKCgpleHRlcm4gaW50IF9fdW5kZXJmbG93IChfSU9fRklMRSAqKSB0aHJvdyAo
KTsKZXh0ZXJuIGludCBfX3VmbG93IChfSU9fRklMRSAqKSB0aHJvdyAoKTsKZXh0ZXJuIGludCBf
X292ZXJmbG93IChfSU9fRklMRSAqLCBpbnQpIHRocm93ICgpOwpleHRlcm4gd2ludF90IF9fd3Vu
ZGVyZmxvdyAoX0lPX0ZJTEUgKikgdGhyb3cgKCk7CmV4dGVybiB3aW50X3QgX193dWZsb3cgKF9J
T19GSUxFICopIHRocm93ICgpOwpleHRlcm4gd2ludF90IF9fd292ZXJmbG93IChfSU9fRklMRSAq
LCB3aW50X3QpIHRocm93ICgpOwojIDQyNCAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKZXh0ZXJu
IGludCBfSU9fZ2V0YyAoX0lPX0ZJTEUgKl9fZnApIHRocm93ICgpOwpleHRlcm4gaW50IF9JT19w
dXRjIChpbnQgX19jLCBfSU9fRklMRSAqX19mcCkgdGhyb3cgKCk7CmV4dGVybiBpbnQgX0lPX2Zl
b2YgKF9JT19GSUxFICpfX2ZwKSB0aHJvdyAoKTsKZXh0ZXJuIGludCBfSU9fZmVycm9yIChfSU9f
RklMRSAqX19mcCkgdGhyb3cgKCk7CgpleHRlcm4gaW50IF9JT19wZWVrY19sb2NrZWQgKF9JT19G
SUxFICpfX2ZwKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gdm9pZCBfSU9fZmxvY2tmaWxlIChfSU9f
RklMRSAqKSB0aHJvdyAoKTsKZXh0ZXJuIHZvaWQgX0lPX2Z1bmxvY2tmaWxlIChfSU9fRklMRSAq
KSB0aHJvdyAoKTsKZXh0ZXJuIGludCBfSU9fZnRyeWxvY2tmaWxlIChfSU9fRklMRSAqKSB0aHJv
dyAoKTsKIyA0NTQgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCmV4dGVybiBpbnQgX0lPX3Zmc2Nh
bmYgKF9JT19GSUxFICogX19yZXN0cmljdCwgY29uc3QgY2hhciAqIF9fcmVzdHJpY3QsCiAgICAg
ICAgICAgICAgICAgICAgICAgIF9fZ251Y192YV9saXN0LCBpbnQgKl9fcmVzdHJpY3QpIHRocm93
ICgpOwpleHRlcm4gaW50IF9JT192ZnByaW50ZiAoX0lPX0ZJTEUgKl9fcmVzdHJpY3QsIGNvbnN0
IGNoYXIgKl9fcmVzdHJpY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICBfX2dudWNfdmFfbGlz
dCkgdGhyb3cgKCk7CmV4dGVybiBfX3NzaXplX3QgX0lPX3BhZG4gKF9JT19GSUxFICosIGludCwg
X19zc2l6ZV90KSB0aHJvdyAoKTsKZXh0ZXJuIHNpemVfdCBfSU9fc2dldG4gKF9JT19GSUxFICos
IHZvaWQgKiwgc2l6ZV90KSB0aHJvdyAoKTsKCmV4dGVybiBfX29mZjY0X3QgX0lPX3NlZWtvZmYg
KF9JT19GSUxFICosIF9fb2ZmNjRfdCwgaW50LCBpbnQpIHRocm93ICgpOwpleHRlcm4gX19vZmY2
NF90IF9JT19zZWVrcG9zIChfSU9fRklMRSAqLCBfX29mZjY0X3QsIGludCkgdGhyb3cgKCk7Cgpl
eHRlcm4gdm9pZCBfSU9fZnJlZV9iYWNrdXBfYXJlYSAoX0lPX0ZJTEUgKikgdGhyb3cgKCk7CiMg
NTEwICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwp9CiMgNzQgIi91c3IvbG9jYWwvbGliL2djYy1s
aWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjEvaW5jbHVkZS9zdGRpby5oIiAyIDMKCgoKCnR5cGVk
ZWYgX19nbnVjX3ZhX2xpc3QgX19ub3RfdmFfbGlzdF9fOwojIDg4ICIvdXNyL2xvY2FsL2xpYi9n
Y2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC4xL2luY2x1ZGUvc3RkaW8uaCIgMwp0eXBlZGVm
IF9HX2Zwb3NfdCBmcG9zX3Q7CgoKCgp0eXBlZGVmIF9HX2Zwb3M2NF90IGZwb3M2NF90OwojIDEz
NyAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuMS9pbmNsdWRl
L3N0ZGlvLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9zdGRpb19saW0uaCIgMSAzCiMgMTM4
ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC4xL2luY2x1ZGUv
c3RkaW8uaCIgMiAzCgoKCmV4dGVybiBGSUxFICpzdGRpbjsKZXh0ZXJuIEZJTEUgKnN0ZG91dDsK
ZXh0ZXJuIEZJTEUgKnN0ZGVycjsKIyAxNTIgIi91c3IvbG9jYWwvbGliL2djYy1saWIvaTY4Ni1w
Yy1saW51eC1nbnUvMy4wLjEvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiBpbnQgcmVtb3ZlIChf
X2NvbnN0IGNoYXIgKl9fZmlsZW5hbWUpIHRocm93ICgpOwoKZXh0ZXJuIGludCByZW5hbWUgKF9f
Y29uc3QgY2hhciAqX19vbGQsIF9fY29uc3QgY2hhciAqX19uZXcpIHRocm93ICgpOwoKCgoKZXh0
ZXJuIEZJTEUgKnRtcGZpbGUgKHZvaWQpIHRocm93ICgpOwojIDE2OCAiL3Vzci9sb2NhbC9saWIv
Z2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuMS9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJu
IEZJTEUgKnRtcGZpbGU2NCAodm9pZCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGNoYXIgKnRtcG5hbSAo
Y2hhciAqX19zKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBjaGFyICp0bXBuYW1fciAoY2hhciAqX19z
KSB0aHJvdyAoKTsKIyAxODggIi91c3IvbG9jYWwvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1n
bnUvMy4wLjEvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiBjaGFyICp0ZW1wbmFtIChfX2NvbnN0
IGNoYXIgKl9fZGlyLCBfX2NvbnN0IGNoYXIgKl9fcGZ4KQogICAgIHRocm93ICgpIF9fYXR0cmli
dXRlX18gKChfX21hbGxvY19fKSk7CgoKCgpleHRlcm4gaW50IGZjbG9zZSAoRklMRSAqX19zdHJl
YW0pIHRocm93ICgpOwoKZXh0ZXJuIGludCBmZmx1c2ggKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAo
KTsKCgoKZXh0ZXJuIGludCBmZmx1c2hfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAo
KTsKCgoKCmV4dGVybiBpbnQgZmNsb3NlYWxsICh2b2lkKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4g
RklMRSAqZm9wZW4gKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZpbGVuYW1lLAogICAgICAg
ICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX21vZGVzKSB0aHJvdyAoKTsK
CmV4dGVybiBGSUxFICpmcmVvcGVuIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19maWxlbmFt
ZSwKICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX21vZGVz
LAogICAgICAgICAgICAgICAgICAgICAgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkgdGhyb3cg
KCk7CiMgMjMyICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC4x
L2luY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gRklMRSAqZm9wZW42NCAoX19jb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fZmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19tb2RlcykgdGhyb3cgKCk7CmV4dGVybiBGSUxFICpmcmVvcGVuNjQgKF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZpbGVuYW1lLAogICAgICAgICAgICAgICAgICAgICAg
ICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19tb2RlcywKICAgICAgICAgICAgICAgICAgICAg
ICAgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkgdGhyb3cgKCk7CgoKCgpleHRlcm4gRklMRSAq
ZmRvcGVuIChpbnQgX19mZCwgX19jb25zdCBjaGFyICpfX21vZGVzKSB0aHJvdyAoKTsKCgoKCgpl
eHRlcm4gRklMRSAqZm9wZW5jb29raWUgKHZvaWQgKl9fcmVzdHJpY3QgX19tYWdpY19jb29raWUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbW9k
ZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgX0lPX2Nvb2tpZV9pb19mdW5jdGlvbnNfdCBf
X2lvX2Z1bmNzKSB0aHJvdyAoKTsKCgpleHRlcm4gRklMRSAqZm1lbW9wZW4gKHZvaWQgKl9fcywg
c2l6ZV90IF9fbGVuLCBfX2NvbnN0IGNoYXIgKl9fbW9kZXMpIHRocm93ICgpOwoKCgoKZXh0ZXJu
IEZJTEUgKm9wZW5fbWVtc3RyZWFtIChjaGFyICoqX19yZXN0cmljdCBfX2J1ZmxvYywKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKl9fcmVzdHJpY3QgX19zaXplbG9jKSB0aHJv
dyAoKTsKCgoKCgpleHRlcm4gdm9pZCBzZXRidWYgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0s
IGNoYXIgKl9fcmVzdHJpY3QgX19idWYpIHRocm93ICgpOwoKCgpleHRlcm4gaW50IHNldHZidWYg
KEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsCiAgICAg
ICAgICAgICAgICAgICAgaW50IF9fbW9kZXMsIHNpemVfdCBfX24pIHRocm93ICgpOwoKCgoKZXh0
ZXJuIHZvaWQgc2V0YnVmZmVyIChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLCBjaGFyICpfX3Jl
c3RyaWN0IF9fYnVmLAogICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX3NpemUpIHRocm93
ICgpOwoKCmV4dGVybiB2b2lkIHNldGxpbmVidWYgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsK
CgoKCmV4dGVybiBpbnQgZnByaW50ZiAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwKICAgICAg
ICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgdGhy
b3cgKCk7CgpleHRlcm4gaW50IHByaW50ZiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9y
bWF0LCAuLi4pIHRocm93ICgpOwoKZXh0ZXJuIGludCBzcHJpbnRmIChjaGFyICpfX3Jlc3RyaWN0
IF9fcywKICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3Jt
YXQsIC4uLikgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCB2ZnByaW50ZiAoRklMRSAqX19yZXN0cmlj
dCBfX3MsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwKICAgICAgICAgICAgICAg
ICAgICAgX19nbnVjX3ZhX2xpc3QgX19hcmcpIHRocm93ICgpOwoKZXh0ZXJuIGludCB2cHJpbnRm
IChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIF9fZ251Y192YV9saXN0IF9fYXJn
KQogICAgIHRocm93ICgpOwoKZXh0ZXJuIGludCB2c3ByaW50ZiAoY2hhciAqX19yZXN0cmljdCBf
X3MsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwKICAgICAgICAgICAgICAgICAg
ICAgX19nbnVjX3ZhX2xpc3QgX19hcmcpIHRocm93ICgpOwoKCgpleHRlcm4gaW50IHNucHJpbnRm
IChjaGFyICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9fbWF4bGVuLAogICAgICAgICAgICAgICAg
ICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikKICAgICB0aHJvdyAo
KSBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMywgNCkpKTsKCmV4dGVy
biBpbnQgdnNucHJpbnRmIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9fbWF4bGVuLAog
ICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCBf
X2dudWNfdmFfbGlzdCBfX2FyZykKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19mb3Jt
YXRfXyAoX19wcmludGZfXywgMywgMCkpKTsKCgoKCgpleHRlcm4gaW50IHZhc3ByaW50ZiAoY2hh
ciAqKl9fcmVzdHJpY3QgX19wdHIsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2YsCiAgICAg
ICAgICAgICAgICAgICAgICBfX2dudWNfdmFfbGlzdCBfX2FyZykKICAgICB0aHJvdyAoKSBfX2F0
dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMiwgMCkpKTsKZXh0ZXJuIGludCBf
X2FzcHJpbnRmIChjaGFyICoqX19yZXN0cmljdCBfX3B0ciwKICAgICAgICAgICAgICAgICAgICAg
ICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mbXQsIC4uLikKICAgICB0aHJvdyAoKSBfX2F0
dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMiwgMykpKTsKZXh0ZXJuIGludCBh
c3ByaW50ZiAoY2hhciAqKl9fcmVzdHJpY3QgX19wdHIsCiAgICAgICAgICAgICAgICAgICAgIF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZtdCwgLi4uKQogICAgIHRocm93ICgpIF9fYXR0cmli
dXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAyLCAzKSkpOwoKCmV4dGVybiBpbnQgdmRw
cmludGYgKGludCBfX2ZkLCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mbXQsCiAgICAgICAg
ICAgICAgICAgICAgIF9fZ251Y192YV9saXN0IF9fYXJnKQogICAgIHRocm93ICgpIF9fYXR0cmli
dXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAyLCAwKSkpOwpleHRlcm4gaW50IGRwcmlu
dGYgKGludCBfX2ZkLCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mbXQsIC4uLikKICAgICB0
aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMiwgMykpKTsK
CgoKCmV4dGVybiBpbnQgZnNjYW5mIChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLAogICAgICAg
ICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pIHRocm93
ICgpOwoKZXh0ZXJuIGludCBzY2FuZiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0
LCAuLi4pIHRocm93ICgpOwoKZXh0ZXJuIGludCBzc2NhbmYgKF9fY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX3MsCiAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19m
b3JtYXQsIC4uLikgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgdmZzY2FuZiAoRklMRSAqX19yZXN0
cmljdCBfX3MsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwKICAgICAgICAgICAg
ICAgICAgICBfX2dudWNfdmFfbGlzdCBfX2FyZykKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9f
ICgoX19mb3JtYXRfXyAoX19zY2FuZl9fLCAyLCAwKSkpOwoKCmV4dGVybiBpbnQgdnNjYW5mIChf
X2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIF9fZ251Y192YV9saXN0IF9fYXJnKQog
ICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3NjYW5mX18sIDEsIDAp
KSk7CgoKZXh0ZXJuIGludCB2c3NjYW5mIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zLAog
ICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgX19n
bnVjX3ZhX2xpc3QgX19hcmcpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0
X18gKF9fc2NhbmZfXywgMiwgMCkpKTsKCgoKCmV4dGVybiBpbnQgZmdldGMgKEZJTEUgKl9fc3Ry
ZWFtKSB0aHJvdyAoKTsKZXh0ZXJuIGludCBnZXRjIChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7
CgoKZXh0ZXJuIGludCBnZXRjaGFyICh2b2lkKSB0aHJvdyAoKTsKCgoKCgoKCmV4dGVybiBpbnQg
Z2V0Y191bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwpleHRlcm4gaW50IGdldGNo
YXJfdW5sb2NrZWQgKHZvaWQpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCBmZ2V0Y191bmxvY2tl
ZCAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCBmcHV0YyAoaW50IF9f
YywgRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwpleHRlcm4gaW50IHB1dGMgKGludCBfX2MsIEZJ
TEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IHB1dGNoYXIgKGludCBfX2MpIHRo
cm93ICgpOwoKCgoKCgoKZXh0ZXJuIGludCBmcHV0Y191bmxvY2tlZCAoaW50IF9fYywgRklMRSAq
X19zdHJlYW0pIHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCBwdXRjX3VubG9ja2VkIChpbnQgX19j
LCBGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CmV4dGVybiBpbnQgcHV0Y2hhcl91bmxvY2tlZCAo
aW50IF9fYykgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGludCBnZXR3IChGSUxFICpfX3N0cmVhbSkg
dGhyb3cgKCk7CgoKZXh0ZXJuIGludCBwdXR3IChpbnQgX193LCBGSUxFICpfX3N0cmVhbSkgdGhy
b3cgKCk7CgoKCgpleHRlcm4gY2hhciAqZmdldHMgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBpbnQg
X19uLCBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKQogICAgIHRocm93ICgpOwoKCgpleHRlcm4g
Y2hhciAqZmdldHNfdW5sb2NrZWQgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBpbnQgX19uLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIHRocm93
ICgpOwoKCgoKZXh0ZXJuIGNoYXIgKmdldHMgKGNoYXIgKl9fcykgdGhyb3cgKCk7CiMgNDM2ICIv
dXNyL2xvY2FsL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC4xL2luY2x1ZGUvc3Rk
aW8uaCIgMwpleHRlcm4gX19zc2l6ZV90IF9fZ2V0ZGVsaW0gKGNoYXIgKipfX3Jlc3RyaWN0IF9f
bGluZXB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqX19yZXN0cmlj
dCBfX24sIGludCBfX2RlbGltaXRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZJ
TEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIHRocm93ICgpOwpleHRlcm4gX19zc2l6ZV90IGdldGRl
bGltIChjaGFyICoqX19yZXN0cmljdCBfX2xpbmVwdHIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90ICpfX3Jlc3RyaWN0IF9fbiwgaW50IF9fZGVsaW1pdGVyLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIHRocm93ICgpOwoK
CmV4dGVybiBfX3NzaXplX3QgZ2V0bGluZSAoY2hhciAqKl9fcmVzdHJpY3QgX19saW5lcHRyLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICpfX3Jlc3RyaWN0IF9fbiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIHRocm93ICgp
OwoKCgoKZXh0ZXJuIGludCBmcHV0cyAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywgRklM
RSAqX19yZXN0cmljdCBfX3N0cmVhbSkKICAgICB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCBmcHV0
c191bmxvY2tlZCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkgdGhyb3cgKCk7CgoKCmV4dGVy
biBpbnQgcHV0cyAoX19jb25zdCBjaGFyICpfX3MpIHRocm93ICgpOwoKCgpleHRlcm4gaW50IHVu
Z2V0YyAoaW50IF9fYywgRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwoKCgpleHRlcm4gc2l6ZV90
IGZyZWFkICh2b2lkICpfX3Jlc3RyaWN0IF9fcHRyLCBzaXplX3QgX19zaXplLAogICAgICAgICAg
ICAgICAgICAgICBzaXplX3QgX19uLCBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSB0aHJvdyAo
KTsKCmV4dGVybiBzaXplX3QgZndyaXRlIChfX2NvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19wdHIs
IHNpemVfdCBfX3NpemUsCiAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19uLCBGSUxFICpf
X3Jlc3RyaWN0IF9fcykgdGhyb3cgKCk7CgoKCmV4dGVybiBzaXplX3QgZnJlYWRfdW5sb2NrZWQg
KHZvaWQgKl9fcmVzdHJpY3QgX19wdHIsIHNpemVfdCBfX3NpemUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIHRocm93
ICgpOwpleHRlcm4gc2l6ZV90IGZ3cml0ZV91bmxvY2tlZCAoX19jb25zdCB2b2lkICpfX3Jlc3Ry
aWN0IF9fcHRyLCBzaXplX3QgX19zaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90IF9fbiwgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkgdGhyb3cgKCk7CgoKCgpleHRl
cm4gaW50IGZzZWVrIChGSUxFICpfX3N0cmVhbSwgbG9uZyBpbnQgX19vZmYsIGludCBfX3doZW5j
ZSkgdGhyb3cgKCk7CgpleHRlcm4gbG9uZyBpbnQgZnRlbGwgKEZJTEUgKl9fc3RyZWFtKSB0aHJv
dyAoKTsKCmV4dGVybiB2b2lkIHJld2luZCAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwojIDQ5
OSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuMS9pbmNsdWRl
L3N0ZGlvLmgiIDMKZXh0ZXJuIGludCBmc2Vla28gKEZJTEUgKl9fc3RyZWFtLCBfX29mZl90IF9f
b2ZmLCBpbnQgX193aGVuY2UpIHRocm93ICgpOwoKZXh0ZXJuIF9fb2ZmX3QgZnRlbGxvIChGSUxF
ICpfX3N0cmVhbSkgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgZmdldHBvcyAoRklMRSAqX19yZXN0
cmljdCBfX3N0cmVhbSwgZnBvc190ICpfX3Jlc3RyaWN0IF9fcG9zKQogICAgIHRocm93ICgpOwoK
ZXh0ZXJuIGludCBmc2V0cG9zIChGSUxFICpfX3N0cmVhbSwgX19jb25zdCBmcG9zX3QgKl9fcG9z
KSB0aHJvdyAoKTsKIyA1MzMgIi91c3IvbG9jYWwvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1n
bnUvMy4wLjEvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiBpbnQgZnNlZWtvNjQgKEZJTEUgKl9f
c3RyZWFtLCBfX29mZjY0X3QgX19vZmYsIGludCBfX3doZW5jZSkgdGhyb3cgKCk7CmV4dGVybiBf
X29mZjY0X3QgZnRlbGxvNjQgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKZXh0ZXJuIGludCBm
Z2V0cG9zNjQgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sIGZwb3M2NF90ICpfX3Jlc3RyaWN0
IF9fcG9zKQogICAgIHRocm93ICgpOwpleHRlcm4gaW50IGZzZXRwb3M2NCAoRklMRSAqX19zdHJl
YW0sIF9fY29uc3QgZnBvczY0X3QgKl9fcG9zKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIHZvaWQgY2xl
YXJlcnIgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKCmV4dGVybiBpbnQgZmVvZiAoRklMRSAq
X19zdHJlYW0pIHRocm93ICgpOwoKZXh0ZXJuIGludCBmZXJyb3IgKEZJTEUgKl9fc3RyZWFtKSB0
aHJvdyAoKTsKCgoKZXh0ZXJuIHZvaWQgY2xlYXJlcnJfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFt
KSB0aHJvdyAoKTsKZXh0ZXJuIGludCBmZW9mX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkgdGhy
b3cgKCk7CmV4dGVybiBpbnQgZmVycm9yX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkgdGhyb3cg
KCk7CgoKCgpleHRlcm4gdm9pZCBwZXJyb3IgKF9fY29uc3QgY2hhciAqX19zKSB0aHJvdyAoKTsK
CgoKCmV4dGVybiBpbnQgc3lzX25lcnI7CmV4dGVybiBfX2NvbnN0IGNoYXIgKl9fY29uc3Qgc3lz
X2Vycmxpc3RbXTsKCgpleHRlcm4gaW50IF9zeXNfbmVycjsKZXh0ZXJuIF9fY29uc3QgY2hhciAq
X19jb25zdCBfc3lzX2Vycmxpc3RbXTsKCgoKCgpleHRlcm4gaW50IGZpbGVubyAoRklMRSAqX19z
dHJlYW0pIHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCBmaWxlbm9fdW5sb2NrZWQgKEZJTEUgKl9f
c3RyZWFtKSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIEZJTEUgKnBvcGVuIChfX2NvbnN0IGNoYXIg
Kl9fY29tbWFuZCwgX19jb25zdCBjaGFyICpfX21vZGVzKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50
IHBjbG9zZSAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwoKCgoKCmV4dGVybiBjaGFyICpjdGVy
bWlkIChjaGFyICpfX3MpIHRocm93ICgpOwoKCgoKCmV4dGVybiBjaGFyICpjdXNlcmlkIChjaGFy
ICpfX3MpIHRocm93ICgpOwoKCgoKc3RydWN0IG9ic3RhY2s7CgoKZXh0ZXJuIGludCBvYnN0YWNr
X3ByaW50ZiAoc3RydWN0IG9ic3RhY2sgKl9fcmVzdHJpY3QgX19vYnN0YWNrLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikg
dGhyb3cgKCk7CmV4dGVybiBpbnQgb2JzdGFja192cHJpbnRmIChzdHJ1Y3Qgb2JzdGFjayAqX19y
ZXN0cmljdCBfX29ic3RhY2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNo
YXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2du
dWNfdmFfbGlzdCBfX2FyZ3MpIHRocm93ICgpOwoKCgoKCgoKZXh0ZXJuIHZvaWQgZmxvY2tmaWxl
IChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgZnRyeWxvY2tmaWxlIChG
SUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CgoKZXh0ZXJuIHZvaWQgZnVubG9ja2ZpbGUgKEZJTEUg
Kl9fc3RyZWFtKSB0aHJvdyAoKTsKIyA2NDMgIi91c3IvbG9jYWwvbGliL2djYy1saWIvaTY4Ni1w
Yy1saW51eC1nbnUvMy4wLjEvaW5jbHVkZS9zdGRpby5oIiAzCn0KIyA0ICJjcmVhdGVtYXAuY3Bw
IiAyCiMgMSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAxIDMKIyAyNSAiL3Vzci9pbmNsdWRlL3N0
ZGxpYi5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDEgMwojIDI2ICIvdXNyL2lu
Y2x1ZGUvc3RkbGliLmgiIDIgMwoKCgoKCgoKIyAxICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL2k2
ODYtcGMtbGludXgtZ251LzMuMC4xL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDM0ICIvdXNyL2lu
Y2x1ZGUvc3RkbGliLmgiIDIgMwoKZXh0ZXJuICJDIiB7CgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRl
L2JpdHMvd2FpdGZsYWdzLmgiIDEgMwojIDQzICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDIgMwoj
IDEgIi91c3IvaW5jbHVkZS9iaXRzL3dhaXRzdGF0dXMuaCIgMSAzCiMgNjMgIi91c3IvaW5jbHVk
ZS9iaXRzL3dhaXRzdGF0dXMuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9lbmRpYW4uaCIgMSAzCiMg
MjIgIi91c3IvaW5jbHVkZS9lbmRpYW4uaCIgMwojIDEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5o
IiAxIDMKIyAyMyAiL3Vzci9pbmNsdWRlL2VuZGlhbi5oIiAyIDMKIyAzNyAiL3Vzci9pbmNsdWRl
L2VuZGlhbi5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvZW5kaWFuLmgiIDEgMwojIDM4ICIv
dXNyL2luY2x1ZGUvZW5kaWFuLmgiIDIgMwojIDY0ICIvdXNyL2luY2x1ZGUvYml0cy93YWl0c3Rh
dHVzLmgiIDIgMwoKdW5pb24gd2FpdAogIHsKICAgIGludCB3X3N0YXR1czsKICAgIHN0cnVjdAog
ICAgICB7CgogICAgICAgIHVuc2lnbmVkIGludCBfX3dfdGVybXNpZzo3OwogICAgICAgIHVuc2ln
bmVkIGludCBfX3dfY29yZWR1bXA6MTsKICAgICAgICB1bnNpZ25lZCBpbnQgX193X3JldGNvZGU6
ODsKICAgICAgICB1bnNpZ25lZCBpbnQ6MTY7CgoKCgoKCgogICAgICB9IF9fd2FpdF90ZXJtaW5h
dGVkOwogICAgc3RydWN0CiAgICAgIHsKCiAgICAgICAgdW5zaWduZWQgaW50IF9fd19zdG9wdmFs
Ojg7CiAgICAgICAgdW5zaWduZWQgaW50IF9fd19zdG9wc2lnOjg7CiAgICAgICAgdW5zaWduZWQg
aW50OjE2OwoKCgoKCgogICAgICB9IF9fd2FpdF9zdG9wcGVkOwogIH07CiMgNDQgIi91c3IvaW5j
bHVkZS9zdGRsaWIuaCIgMiAzCiMgOTQgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwp0eXBlZGVm
IHN0cnVjdAogIHsKICAgIGludCBxdW90OwogICAgaW50IHJlbTsKICB9IGRpdl90OwoKCgp0eXBl
ZGVmIHN0cnVjdAogIHsKICAgIGxvbmcgaW50IHF1b3Q7CiAgICBsb25nIGludCByZW07CiAgfSBs
ZGl2X3Q7CgoKCgoKX19leHRlbnNpb25fXyB0eXBlZGVmIHN0cnVjdAogIHsKICAgIGxvbmcgbG9u
ZyBpbnQgcXVvdDsKICAgIGxvbmcgbG9uZyBpbnQgcmVtOwogIH0gbGxkaXZfdDsKIyAxMzMgIi91
c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gc2l6ZV90IF9fY3R5cGVfZ2V0X21iX2N1cl9t
YXggKHZvaWQpIHRocm93ICgpOwoKCgpleHRlcm4gZG91YmxlIGF0b2YgKF9fY29uc3QgY2hhciAq
X19ucHRyKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCmV4dGVybiBpbnQg
YXRvaSAoX19jb25zdCBjaGFyICpfX25wdHIpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1
cmVfXykpOwoKZXh0ZXJuIGxvbmcgaW50IGF0b2wgKF9fY29uc3QgY2hhciAqX19ucHRyKSB0aHJv
dyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKX19leHRlbnNpb25fXyBleHRlcm4g
bG9uZyBsb25nIGludCBhdG9sbCAoX19jb25zdCBjaGFyICpfX25wdHIpCiAgICAgdGhyb3cgKCkg
X19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKCmV4dGVybiBkb3VibGUgc3RydG9kIChfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgY2hhciAq
Kl9fcmVzdHJpY3QgX19lbmRwdHIpIHRocm93ICgpOwoKCgpleHRlcm4gZmxvYXQgc3RydG9mIChf
X2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICBjaGFy
ICoqX19yZXN0cmljdCBfX2VuZHB0cikgdGhyb3cgKCk7CgpleHRlcm4gbG9uZyBkb3VibGUgc3Ry
dG9sZCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyKSB0aHJvdyAoKTsKCgoKZXh0ZXJu
IGxvbmcgaW50IHN0cnRvbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAg
ICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2Up
IHRocm93ICgpOwoKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgaW50IHN0cnRvdWwgKF9fY29uc3QgY2hh
ciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
aGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkKICAgICB0aHJvdyAoKTsKCgoK
X19leHRlbnNpb25fXwpleHRlcm4gbG9uZyBsb25nIGludCBzdHJ0b3EgKF9fY29uc3QgY2hhciAq
X19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9f
cmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpIHRocm93ICgpOwoKX19leHRlbnNpb25fXwpl
eHRlcm4gdW5zaWduZWQgbG9uZyBsb25nIGludCBzdHJ0b3VxIChfX2NvbnN0IGNoYXIgKl9fcmVz
dHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFy
ICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkKICAgICB0aHJvdyAoKTsKCgoKCgoK
X19leHRlbnNpb25fXwpleHRlcm4gbG9uZyBsb25nIGludCBzdHJ0b2xsIChfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoq
X19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkgdGhyb3cgKCk7CgpfX2V4dGVuc2lvbl9f
CmV4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IHN0cnRvdWxsIChfX2NvbnN0IGNoYXIgKl9f
cmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpCiAgICAgdGhyb3cgKCk7CiMg
MjExICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUveGxvY2FsZS5o
IiAxIDMKIyAyOCAiL3Vzci9pbmNsdWRlL3hsb2NhbGUuaCIgMwp0eXBlZGVmIHN0cnVjdCBfX2xv
Y2FsZV9zdHJ1Y3QKewoKICBzdHJ1Y3QgbG9jYWxlX2RhdGEgKl9fbG9jYWxlc1sxM107CgoKICBj
b25zdCB1bnNpZ25lZCBzaG9ydCBpbnQgKl9fY3R5cGVfYjsKICBjb25zdCBpbnQgKl9fY3R5cGVf
dG9sb3dlcjsKICBjb25zdCBpbnQgKl9fY3R5cGVfdG91cHBlcjsKfSAqX19sb2NhbGVfdDsKIyAy
MTIgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAzCgoKCmV4dGVybiBsb25nIGludCBfX3N0cnRv
bF9sIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBfX2xvY2FsZV90IF9fbG9jKSB0aHJvdyAoKTsKCmV4dGVybiB1
bnNpZ25lZCBsb25nIGludCBfX3N0cnRvdWxfbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f
bnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0
cmljdCBfX2VuZHB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg
X19iYXNlLCBfX2xvY2FsZV90IF9fbG9jKSB0aHJvdyAoKTsKCl9fZXh0ZW5zaW9uX18KZXh0ZXJu
IGxvbmcgbG9uZyBpbnQgX19zdHJ0b2xsX2wgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25w
dHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBf
X2VuZHB0ciwgaW50IF9fYmFzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9f
bG9jYWxlX3QgX19sb2MpIHRocm93ICgpOwoKX19leHRlbnNpb25fXwpleHRlcm4gdW5zaWduZWQg
bG9uZyBsb25nIGludCBfX3N0cnRvdWxsX2wgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25w
dHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9f
cmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IF9fYmFzZSwgX19sb2NhbGVfdCBfX2xvYykKICAgICB0aHJvdyAoKTsKCmV4dGVy
biBkb3VibGUgX19zdHJ0b2RfbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAg
ICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgX19sb2Nh
bGVfdCBfX2xvYykKICAgICB0aHJvdyAoKTsKCmV4dGVybiBmbG9hdCBfX3N0cnRvZl9sIChfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgY2hh
ciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIF9fbG9jYWxlX3QgX19sb2MpIHRocm93ICgpOwoKZXh0
ZXJuIGxvbmcgZG91YmxlIF9fc3RydG9sZF9sIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19u
cHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9f
ZW5kcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbG9jYWxlX3QgX19sb2Mp
IHRocm93ICgpOwoKCgoKCgpleHRlcm4gZG91YmxlIF9fc3RydG9kX2ludGVybmFsIChfX2NvbnN0
IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fZ3JvdXApCiAgICAgdGhyb3cgKCk7
CmV4dGVybiBmbG9hdCBfX3N0cnRvZl9pbnRlcm5hbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0
IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmlj
dCBfX2VuZHB0ciwgaW50IF9fZ3JvdXApCiAgICAgdGhyb3cgKCk7CmV4dGVybiBsb25nIGRvdWJs
ZSBfX3N0cnRvbGRfaW50ZXJuYWwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9f
ZW5kcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19ncm91
cCkgdGhyb3cgKCk7CgpleHRlcm4gbG9uZyBpbnQgX19zdHJ0b2xfaW50ZXJuYWwgKF9fY29uc3Qg
Y2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50IF9fYmFzZSwgaW50IF9fZ3JvdXApIHRocm93ICgpOwoKCgpleHRlcm4gdW5z
aWduZWQgbG9uZyBpbnQgX19zdHJ0b3VsX2ludGVybmFsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJp
Y3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
aGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IF9fYmFzZSwgaW50IF9fZ3JvdXApIHRocm93ICgpOwoKCgoKX19l
eHRlbnNpb25fXwpleHRlcm4gbG9uZyBsb25nIGludCBfX3N0cnRvbGxfaW50ZXJuYWwgKF9fY29u
c3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fYmFzZSwgaW50IF9fZ3JvdXApIHRocm93ICgp
OwoKCgpfX2V4dGVuc2lvbl9fCmV4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fc3RydG91
bGxfaW50ZXJuYWwgKF9fY29uc3QgY2hhciAqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIF9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2Vu
ZHB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50IF9fYmFzZSwgaW50IF9fZ3JvdXApCiAgICAgdGhyb3cgKCk7CiMgMzg1ICIvdXNyL2luY2x1
ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGNoYXIgKmw2NGEgKGxvbmcgaW50IF9fbikgdGhyb3cgKCk7
CgoKZXh0ZXJuIGxvbmcgaW50IGE2NGwgKF9fY29uc3QgY2hhciAqX19zKSB0aHJvdyAoKSBfX2F0
dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIg
MSAzCiMgMjYgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9m
ZWF0dXJlcy5oIiAxIDMKIyAyNyAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMKCmV4dGVy
biAiQyIgewoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAxIDMKIyAzMSAiL3Vzci9p
bmNsdWRlL3N5cy90eXBlcy5oIiAyIDMKCgp0eXBlZGVmIF9fdV9jaGFyIHVfY2hhcjsKdHlwZWRl
ZiBfX3Vfc2hvcnQgdV9zaG9ydDsKdHlwZWRlZiBfX3VfaW50IHVfaW50Owp0eXBlZGVmIF9fdV9s
b25nIHVfbG9uZzsKdHlwZWRlZiBfX3F1YWRfdCBxdWFkX3Q7CnR5cGVkZWYgX191X3F1YWRfdCB1
X3F1YWRfdDsKdHlwZWRlZiBfX2ZzaWRfdCBmc2lkX3Q7CgoKdHlwZWRlZiBfX2xvZmZfdCBsb2Zm
X3Q7CgoKCnR5cGVkZWYgX19pbm9fdCBpbm9fdDsKCgoKCgoKdHlwZWRlZiBfX2lubzY0X3QgaW5v
NjRfdDsKCgoKCnR5cGVkZWYgX19kZXZfdCBkZXZfdDsKCgoKCnR5cGVkZWYgX19naWRfdCBnaWRf
dDsKCgoKCnR5cGVkZWYgX19tb2RlX3QgbW9kZV90OwoKCgoKdHlwZWRlZiBfX25saW5rX3Qgbmxp
bmtfdDsKCgoKCnR5cGVkZWYgX191aWRfdCB1aWRfdDsKCgoKCgp0eXBlZGVmIF9fb2ZmX3Qgb2Zm
X3Q7CgoKCgoKCnR5cGVkZWYgX19vZmY2NF90IG9mZjY0X3Q7CgoKCgp0eXBlZGVmIF9fcGlkX3Qg
cGlkX3Q7CgoKCgp0eXBlZGVmIF9faWRfdCBpZF90OwoKCgoKdHlwZWRlZiBfX3NzaXplX3Qgc3Np
emVfdDsKCgoKCnR5cGVkZWYgX19kYWRkcl90IGRhZGRyX3Q7CnR5cGVkZWYgX19jYWRkcl90IGNh
ZGRyX3Q7CgoKCnR5cGVkZWYgX19rZXlfdCBrZXlfdDsKIyAxMjYgIi91c3IvaW5jbHVkZS9zeXMv
dHlwZXMuaCIgMwojIDEgIi91c3IvaW5jbHVkZS90aW1lLmgiIDEgMwojIDU2ICIvdXNyL2luY2x1
ZGUvdGltZS5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMSAzCiMgNTcgIi91
c3IvaW5jbHVkZS90aW1lLmgiIDIgMwoKCnR5cGVkZWYgX19jbG9ja190IGNsb2NrX3Q7CgoKCgoK
CgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDEgMwojIDY4ICIvdXNyL2luY2x1ZGUv
dGltZS5oIiAyIDMKCgp0eXBlZGVmIF9fdGltZV90IHRpbWVfdDsKIyA3OSAiL3Vzci9pbmNsdWRl
L3RpbWUuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDEgMwojIDgwICIvdXNy
L2luY2x1ZGUvdGltZS5oIiAyIDMKCgp0eXBlZGVmIF9fY2xvY2tpZF90IGNsb2NraWRfdDsKIyA5
MSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgi
IDEgMwojIDkyICIvdXNyL2luY2x1ZGUvdGltZS5oIiAyIDMKCgp0eXBlZGVmIF9fdGltZXJfdCB0
aW1lcl90OwojIDEyNyAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMKCgoKdHlwZWRlZiBf
X3VzZWNvbmRzX3QgdXNlY29uZHNfdDsKCgoKdHlwZWRlZiBfX3N1c2Vjb25kc190IHN1c2Vjb25k
c190OwoKCgoKCiMgMSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8z
LjAuMS9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAxNDEgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMu
aCIgMiAzCgoKCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQgdWxvbmc7CnR5cGVkZWYgdW5zaWdu
ZWQgc2hvcnQgaW50IHVzaG9ydDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdWludDsKIyAxODQgIi91
c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMwp0eXBlZGVmIGludCBpbnQ4X3QgX19hdHRyaWJ1dGVf
XyAoKF9fbW9kZV9fIChfX1FJX18pKSk7CnR5cGVkZWYgaW50IGludDE2X3QgX19hdHRyaWJ1dGVf
XyAoKF9fbW9kZV9fIChfX0hJX18pKSk7CnR5cGVkZWYgaW50IGludDMyX3QgX19hdHRyaWJ1dGVf
XyAoKF9fbW9kZV9fIChfX1NJX18pKSk7CnR5cGVkZWYgaW50IGludDY0X3QgX19hdHRyaWJ1dGVf
XyAoKF9fbW9kZV9fIChfX0RJX18pKSk7CgoKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdV9pbnQ4X3Qg
X19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1FJX18pKSk7CnR5cGVkZWYgdW5zaWduZWQgaW50
IHVfaW50MTZfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fSElfXykpKTsKdHlwZWRlZiB1
bnNpZ25lZCBpbnQgdV9pbnQzMl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19TSV9fKSkp
Owp0eXBlZGVmIHVuc2lnbmVkIGludCB1X2ludDY0X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9f
IChfX0RJX18pKSk7Cgp0eXBlZGVmIGludCByZWdpc3Rlcl90IF9fYXR0cmlidXRlX18gKChfX21v
ZGVfXyAoX193b3JkX18pKSk7CiMgMjA2ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMKIyAx
ICIvdXNyL2luY2x1ZGUvZW5kaWFuLmgiIDEgMwojIDIwNyAiL3Vzci9pbmNsdWRlL3N5cy90eXBl
cy5oIiAyIDMKCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDEgMwojIDI1ICIvdXNy
L2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDEg
MwojIDI2ICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAyIDMKCgojIDEgIi91c3IvaW5jbHVk
ZS9iaXRzL3R5cGVzLmgiIDEgMwojIDI5ICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAyIDMK
CgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3NlbGVjdC5oIiAxIDMKIyAzMiAiL3Vzci9pbmNsdWRl
L3N5cy9zZWxlY3QuaCIgMiAzCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9zaWdzZXQuaCIgMSAz
CiMgMjMgIi91c3IvaW5jbHVkZS9iaXRzL3NpZ3NldC5oIiAzCnR5cGVkZWYgaW50IF9fc2lnX2F0
b21pY190OwoKCgoKdHlwZWRlZiBzdHJ1Y3QKICB7CiAgICB1bnNpZ25lZCBsb25nIGludCBfX3Zh
bFsoMTAyNCAvICg4ICogc2l6ZW9mICh1bnNpZ25lZCBsb25nIGludCkpKV07CiAgfSBfX3NpZ3Nl
dF90OwojIDM1ICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAyIDMKCgoKdHlwZWRlZiBfX3Np
Z3NldF90IHNpZ3NldF90OwoKCgoKIyAxICIvdXNyL2luY2x1ZGUvdGltZS5oIiAxIDMKIyAxMDYg
Ii91c3IvaW5jbHVkZS90aW1lLmgiIDMKc3RydWN0IHRpbWVzcGVjCiAgewogICAgbG9uZyBpbnQg
dHZfc2VjOwogICAgbG9uZyBpbnQgdHZfbnNlYzsKICB9OwojIDQ0ICIvdXNyL2luY2x1ZGUvc3lz
L3NlbGVjdC5oIiAyIDMKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvdGltZS5oIiAxIDMKIyA2MyAi
L3Vzci9pbmNsdWRlL2JpdHMvdGltZS5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMu
aCIgMSAzCiMgNjQgIi91c3IvaW5jbHVkZS9iaXRzL3RpbWUuaCIgMiAzCgoKCnN0cnVjdCB0aW1l
dmFsCiAgewogICAgX190aW1lX3QgdHZfc2VjOwogICAgX19zdXNlY29uZHNfdCB0dl91c2VjOwog
IH07CiMgNDYgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDIgMwoKCgp0eXBlZGVmIGxvbmcg
aW50IF9fZmRfbWFzazsKCgoKCgoKCnR5cGVkZWYgc3RydWN0CiAgewoKCgogICAgX19mZF9tYXNr
IGZkc19iaXRzWzEwMjQgLyAoOCAqIHNpemVvZiAoX19mZF9tYXNrKSldOwoKCgoKCiAgfSBmZF9z
ZXQ7CgoKCgoKCnR5cGVkZWYgX19mZF9tYXNrIGZkX21hc2s7CiMgODkgIi91c3IvaW5jbHVkZS9z
eXMvc2VsZWN0LmgiIDMKZXh0ZXJuICJDIiB7CgoKCgoKCmV4dGVybiBpbnQgc2VsZWN0IChpbnQg
X19uZmRzLCBmZF9zZXQgKl9fcmVzdHJpY3QgX19yZWFkZmRzLAogICAgICAgICAgICAgICAgICAg
ZmRfc2V0ICpfX3Jlc3RyaWN0IF9fd3JpdGVmZHMsCiAgICAgICAgICAgICAgICAgICBmZF9zZXQg
Kl9fcmVzdHJpY3QgX19leGNlcHRmZHMsCiAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdGltZXZh
bCAqX19yZXN0cmljdCBfX3RpbWVvdXQpIHRocm93ICgpOwoKCgoKCmV4dGVybiBpbnQgcHNlbGVj
dCAoaW50IF9fbmZkcywgZmRfc2V0ICpfX3Jlc3RyaWN0IF9fcmVhZGZkcywKICAgICAgICAgICAg
ICAgICAgICBmZF9zZXQgKl9fcmVzdHJpY3QgX193cml0ZWZkcywKICAgICAgICAgICAgICAgICAg
ICBmZF9zZXQgKl9fcmVzdHJpY3QgX19leGNlcHRmZHMsCiAgICAgICAgICAgICAgICAgICAgY29u
c3Qgc3RydWN0IHRpbWVzcGVjICpfX3Jlc3RyaWN0IF9fdGltZW91dCwKICAgICAgICAgICAgICAg
ICAgICBjb25zdCBfX3NpZ3NldF90ICpfX3Jlc3RyaWN0IF9fc2lnbWFzaykgdGhyb3cgKCk7CgoK
fQojIDIxMCAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMKCgojIDEgIi91c3IvaW5jbHVk
ZS9zeXMvc3lzbWFjcm9zLmgiIDEgMwojIDIxMyAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAy
IDMKCgoKCnR5cGVkZWYgX19ibGtzaXplX3QgYmxrc2l6ZV90OwoKCgoKCgp0eXBlZGVmIF9fYmxr
Y250X3QgYmxrY250X3Q7CgoKCnR5cGVkZWYgX19mc2Jsa2NudF90IGZzYmxrY250X3Q7CgoKCnR5
cGVkZWYgX19mc2ZpbGNudF90IGZzZmlsY250X3Q7CiMgMjUxICIvdXNyL2luY2x1ZGUvc3lzL3R5
cGVzLmgiIDMKdHlwZWRlZiBfX2Jsa2NudDY0X3QgYmxrY250NjRfdDsKdHlwZWRlZiBfX2ZzYmxr
Y250NjRfdCBmc2Jsa2NudDY0X3Q7CnR5cGVkZWYgX19mc2ZpbGNudDY0X3QgZnNmaWxjbnQ2NF90
OwoKCn0KIyAzOTIgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAzCgoKCgoKCmV4dGVybiBsb25n
IGludCByYW5kb20gKHZvaWQpIHRocm93ICgpOwoKCmV4dGVybiB2b2lkIHNyYW5kb20gKHVuc2ln
bmVkIGludCBfX3NlZWQpIHRocm93ICgpOwoKCgoKCmV4dGVybiBjaGFyICppbml0c3RhdGUgKHVu
c2lnbmVkIGludCBfX3NlZWQsIGNoYXIgKl9fc3RhdGVidWYsCiAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBfX3N0YXRlbGVuKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGNoYXIgKnNldHN0YXRl
IChjaGFyICpfX3N0YXRlYnVmKSB0aHJvdyAoKTsKCgoKCgoKCnN0cnVjdCByYW5kb21fZGF0YQog
IHsKICAgIGludDMyX3QgKmZwdHI7CiAgICBpbnQzMl90ICpycHRyOwogICAgaW50MzJfdCAqc3Rh
dGU7CiAgICBpbnQgcmFuZF90eXBlOwogICAgaW50IHJhbmRfZGVnOwogICAgaW50IHJhbmRfc2Vw
OwogICAgaW50MzJfdCAqZW5kX3B0cjsKICB9OwoKZXh0ZXJuIGludCByYW5kb21fciAoc3RydWN0
IHJhbmRvbV9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmLAogICAgICAgICAgICAgICAgICAgICBpbnQz
Ml90ICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSB0aHJvdyAoKTsKCmV4dGVybiBpbnQgc3JhbmRvbV9y
ICh1bnNpZ25lZCBpbnQgX19zZWVkLCBzdHJ1Y3QgcmFuZG9tX2RhdGEgKl9fYnVmKSB0aHJvdyAo
KTsKCmV4dGVybiBpbnQgaW5pdHN0YXRlX3IgKHVuc2lnbmVkIGludCBfX3NlZWQsIGNoYXIgKl9f
cmVzdHJpY3QgX19zdGF0ZWJ1ZiwKICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fc3Rh
dGVsZW4sCiAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCByYW5kb21fZGF0YSAqX19yZXN0
cmljdCBfX2J1ZikgdGhyb3cgKCk7CgpleHRlcm4gaW50IHNldHN0YXRlX3IgKGNoYXIgKl9fcmVz
dHJpY3QgX19zdGF0ZWJ1ZiwKICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcmFuZG9tX2Rh
dGEgKl9fcmVzdHJpY3QgX19idWYpIHRocm93ICgpOwoKCgoKCmV4dGVybiBpbnQgcmFuZCAodm9p
ZCkgdGhyb3cgKCk7CgpleHRlcm4gdm9pZCBzcmFuZCAodW5zaWduZWQgaW50IF9fc2VlZCkgdGhy
b3cgKCk7CgoKCmV4dGVybiBpbnQgcmFuZF9yICh1bnNpZ25lZCBpbnQgKl9fc2VlZCkgdGhyb3cg
KCk7CgoKCgoKCgpleHRlcm4gZG91YmxlIGRyYW5kNDggKHZvaWQpIHRocm93ICgpOwpleHRlcm4g
ZG91YmxlIGVyYW5kNDggKHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNdKSB0aHJvdyAoKTsK
CgpleHRlcm4gbG9uZyBpbnQgbHJhbmQ0OCAodm9pZCkgdGhyb3cgKCk7CmV4dGVybiBsb25nIGlu
dCBucmFuZDQ4ICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSkgdGhyb3cgKCk7CgoKZXh0
ZXJuIGxvbmcgaW50IG1yYW5kNDggKHZvaWQpIHRocm93ICgpOwpleHRlcm4gbG9uZyBpbnQganJh
bmQ0OCAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10pIHRocm93ICgpOwoKCmV4dGVybiB2
b2lkIHNyYW5kNDggKGxvbmcgaW50IF9fc2VlZHZhbCkgdGhyb3cgKCk7CmV4dGVybiB1bnNpZ25l
ZCBzaG9ydCBpbnQgKnNlZWQ0OCAodW5zaWduZWQgc2hvcnQgaW50IF9fc2VlZDE2dlszXSkgdGhy
b3cgKCk7CmV4dGVybiB2b2lkIGxjb25nNDggKHVuc2lnbmVkIHNob3J0IGludCBfX3BhcmFtWzdd
KSB0aHJvdyAoKTsKCgoKCgpzdHJ1Y3QgZHJhbmQ0OF9kYXRhCiAgewogICAgdW5zaWduZWQgc2hv
cnQgaW50IF9feFszXTsKICAgIHVuc2lnbmVkIHNob3J0IGludCBfX29sZF94WzNdOwogICAgdW5z
aWduZWQgc2hvcnQgaW50IF9fYzsKICAgIHVuc2lnbmVkIHNob3J0IGludCBfX2luaXQ7CiAgICB1
bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fYTsKICB9OwoKCmV4dGVybiBpbnQgZHJhbmQ0OF9yIChz
dHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmZmVyLAogICAgICAgICAgICAgICAg
ICAgICAgZG91YmxlICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSB0aHJvdyAoKTsKZXh0ZXJuIGludCBl
cmFuZDQ4X3IgKHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNdLAogICAgICAgICAgICAgICAg
ICAgICAgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZlciwKICAgICAgICAg
ICAgICAgICAgICAgIGRvdWJsZSAqX19yZXN0cmljdCBfX3Jlc3VsdCkgdGhyb3cgKCk7CgoKZXh0
ZXJuIGludCBscmFuZDQ4X3IgKHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZm
ZXIsCiAgICAgICAgICAgICAgICAgICAgICBsb25nIGludCAqX19yZXN0cmljdCBfX3Jlc3VsdCkg
dGhyb3cgKCk7CmV4dGVybiBpbnQgbnJhbmQ0OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3Vi
aVszXSwKICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJp
Y3QgX19idWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICBsb25nIGludCAqX19yZXN0cmljdCBf
X3Jlc3VsdCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBtcmFuZDQ4X3IgKHN0cnVjdCBkcmFuZDQ4
X2RhdGEgKl9fcmVzdHJpY3QgX19idWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICBsb25nIGlu
dCAqX19yZXN0cmljdCBfX3Jlc3VsdCkgdGhyb3cgKCk7CmV4dGVybiBpbnQganJhbmQ0OF9yICh1
bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSwKICAgICAgICAgICAgICAgICAgICAgIHN0cnVj
dCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZmZXIsCiAgICAgICAgICAgICAgICAgICAg
ICBsb25nIGludCAqX19yZXN0cmljdCBfX3Jlc3VsdCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBz
cmFuZDQ4X3IgKGxvbmcgaW50IF9fc2VlZHZhbCwgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19idWZm
ZXIpCiAgICAgdGhyb3cgKCk7CgpleHRlcm4gaW50IHNlZWQ0OF9yICh1bnNpZ25lZCBzaG9ydCBp
bnQgX19zZWVkMTZ2WzNdLAogICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJhbmQ0OF9kYXRh
ICpfX2J1ZmZlcikgdGhyb3cgKCk7CgpleHRlcm4gaW50IGxjb25nNDhfciAodW5zaWduZWQgc2hv
cnQgaW50IF9fcGFyYW1bN10sCiAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJhbmQ0OF9k
YXRhICpfX2J1ZmZlcikgdGhyb3cgKCk7CiMgNTI4ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMK
ZXh0ZXJuIHZvaWQgKm1hbGxvYyAoc2l6ZV90IF9fc2l6ZSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVf
XyAoKF9fbWFsbG9jX18pKTsKCmV4dGVybiB2b2lkICpjYWxsb2MgKHNpemVfdCBfX25tZW1iLCBz
aXplX3QgX19zaXplKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7
CgoKCgoKZXh0ZXJuIHZvaWQgKnJlYWxsb2MgKHZvaWQgKl9fcHRyLCBzaXplX3QgX19zaXplKSB0
aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwoKZXh0ZXJuIHZvaWQgZnJlZSAo
dm9pZCAqX19wdHIpIHRocm93ICgpOwoKCgpleHRlcm4gdm9pZCBjZnJlZSAodm9pZCAqX19wdHIp
IHRocm93ICgpOwoKCgojIDEgIi91c3IvaW5jbHVkZS9hbGxvY2EuaCIgMSAzCiMgMjIgIi91c3Iv
aW5jbHVkZS9hbGxvY2EuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAxIDMKIyAy
MyAiL3Vzci9pbmNsdWRlL2FsbG9jYS5oIiAyIDMKCgojIDEgIi91c3IvbG9jYWwvbGliL2djYy1s
aWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjEvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMjYgIi91
c3IvaW5jbHVkZS9hbGxvY2EuaCIgMiAzCgpleHRlcm4gIkMiIHsKCgoKCgpleHRlcm4gdm9pZCAq
YWxsb2NhIChzaXplX3QgX19zaXplKSB0aHJvdyAoKTsKCgoKCgp9CiMgNTQ4ICIvdXNyL2luY2x1
ZGUvc3RkbGliLmgiIDIgMwoKCgoKZXh0ZXJuIHZvaWQgKnZhbGxvYyAoc2l6ZV90IF9fc2l6ZSkg
dGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsKCgoKCmV4dGVybiBpbnQgcG9z
aXhfbWVtYWxpZ24gKHZvaWQgKipfX21lbXB0ciwgc2l6ZV90IF9fYWxpZ25tZW50LCBzaXplX3Qg
X19zaXplKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CgoKCmV4
dGVybiB2b2lkIGFib3J0ICh2b2lkKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVy
bl9fKSk7CgoKCmV4dGVybiBpbnQgYXRleGl0ICh2b2lkICgqX19mdW5jKSAodm9pZCkpIHRocm93
ICgpOwoKCgoKZXh0ZXJuIGludCBvbl9leGl0ICh2b2lkICgqX19mdW5jKSAoaW50IF9fc3RhdHVz
LCB2b2lkICpfX2FyZyksIHZvaWQgKl9fYXJnKQogICAgIHRocm93ICgpOwoKCgoKCmV4dGVybiB2
b2lkIGV4aXQgKGludCBfX3N0YXR1cykgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1
cm5fXykpOwoKCgoKZXh0ZXJuIHZvaWQgX0V4aXQgKGludCBfX3N0YXR1cykgdGhyb3cgKCkgX19h
dHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwoKCgoKZXh0ZXJuIGNoYXIgKmdldGVudiAoX19j
b25zdCBjaGFyICpfX25hbWUpIHRocm93ICgpOwoKCgpleHRlcm4gY2hhciAqX19zZWN1cmVfZ2V0
ZW52IChfX2NvbnN0IGNoYXIgKl9fbmFtZSkgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGludCBwdXRl
bnYgKGNoYXIgKl9fc3RyaW5nKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gaW50IHNldGVudiAoX19j
b25zdCBjaGFyICpfX25hbWUsIF9fY29uc3QgY2hhciAqX192YWx1ZSwgaW50IF9fcmVwbGFjZSkK
ICAgICB0aHJvdyAoKTsKCgpleHRlcm4gaW50IHVuc2V0ZW52IChfX2NvbnN0IGNoYXIgKl9fbmFt
ZSkgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBpbnQgY2xlYXJlbnYgKHZvaWQpIHRocm93ICgpOwoj
IDYyNCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVybiBjaGFyICpta3RlbXAgKGNoYXIg
Kl9fdGVtcGxhdGUpIHRocm93ICgpOwoKCgoKCgoKZXh0ZXJuIGludCBta3N0ZW1wIChjaGFyICpf
X3RlbXBsYXRlKSB0aHJvdyAoKTsKIyA2NDEgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRl
cm4gaW50IG1rc3RlbXA2NCAoY2hhciAqX190ZW1wbGF0ZSkgdGhyb3cgKCk7CiMgNjUxICIvdXNy
L2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGNoYXIgKm1rZHRlbXAgKGNoYXIgKl9fdGVtcGxh
dGUpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCBzeXN0ZW0gKF9fY29uc3QgY2hhciAqX19jb21t
YW5kKSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGNoYXIgKmNhbm9uaWNhbGl6ZV9maWxlX25hbWUg
KF9fY29uc3QgY2hhciAqX19uYW1lKSB0aHJvdyAoKTsKIyA2NzMgIi91c3IvaW5jbHVkZS9zdGRs
aWIuaCIgMwpleHRlcm4gY2hhciAqcmVhbHBhdGggKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBf
X25hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqX19yZXN0cmljdCBfX3Jlc29sdmVk
KSB0aHJvdyAoKTsKCgoKCgoKdHlwZWRlZiBpbnQgKCpfX2NvbXBhcl9mbl90KSAoX19jb25zdCB2
b2lkICosIF9fY29uc3Qgdm9pZCAqKTsKCgp0eXBlZGVmIF9fY29tcGFyX2ZuX3QgY29tcGFyaXNv
bl9mbl90OwoKCgoKCmV4dGVybiB2b2lkICpic2VhcmNoIChfX2NvbnN0IHZvaWQgKl9fa2V5LCBf
X2NvbnN0IHZvaWQgKl9fYmFzZSwKICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX25tZW1i
LCBzaXplX3QgX19zaXplLCBfX2NvbXBhcl9mbl90IF9fY29tcGFyKTsKCgoKZXh0ZXJuIHZvaWQg
cXNvcnQgKHZvaWQgKl9fYmFzZSwgc2l6ZV90IF9fbm1lbWIsIHNpemVfdCBfX3NpemUsCiAgICAg
ICAgICAgICAgICAgICBfX2NvbXBhcl9mbl90IF9fY29tcGFyKTsKCgoKZXh0ZXJuIGludCBhYnMg
KGludCBfX3gpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKZXh0ZXJuIGxv
bmcgaW50IGxhYnMgKGxvbmcgaW50IF9feCkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29u
c3RfXykpOwoKX19leHRlbnNpb25fXyBleHRlcm4gbG9uZyBsb25nIGludCBsbGFicyAobG9uZyBs
b25nIGludCBfX3gpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoK
CgoKCgpleHRlcm4gZGl2X3QgZGl2IChpbnQgX19udW1lciwgaW50IF9fZGVub20pCiAgICAgdGhy
b3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwpleHRlcm4gbGRpdl90IGxkaXYgKGxv
bmcgaW50IF9fbnVtZXIsIGxvbmcgaW50IF9fZGVub20pCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1
dGVfXyAoKF9fY29uc3RfXykpOwoKX19leHRlbnNpb25fXyBleHRlcm4gbGxkaXZfdCBsbGRpdiAo
bG9uZyBsb25nIGludCBfX251bWVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBsb25nIGxvbmcgaW50IF9fZGVub20pCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9f
Y29uc3RfXykpOwojIDcyOSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVybiBjaGFyICpl
Y3Z0IChkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBpbnQgKl9fcmVzdHJpY3QgX19kZWNw
dCwKICAgICAgICAgICAgICAgICAgIGludCAqX19yZXN0cmljdCBfX3NpZ24pIHRocm93ICgpOwoK
CgoKZXh0ZXJuIGNoYXIgKmZjdnQgKGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGludCAq
X19yZXN0cmljdCBfX2RlY3B0LAogICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9f
c2lnbikgdGhyb3cgKCk7CgoKCgpleHRlcm4gY2hhciAqZ2N2dCAoZG91YmxlIF9fdmFsdWUsIGlu
dCBfX25kaWdpdCwgY2hhciAqX19idWYpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGNoYXIgKnFlY3Z0
IChsb25nIGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsCiAgICAgICAgICAgICAgICAgICAg
aW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsIGludCAqX19yZXN0cmljdCBfX3NpZ24pIHRocm93ICgp
OwpleHRlcm4gY2hhciAqcWZjdnQgKGxvbmcgZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwK
ICAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwgaW50ICpfX3Jlc3Ry
aWN0IF9fc2lnbikgdGhyb3cgKCk7CmV4dGVybiBjaGFyICpxZ2N2dCAobG9uZyBkb3VibGUgX192
YWx1ZSwgaW50IF9fbmRpZ2l0LCBjaGFyICpfX2J1ZikgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50
IGVjdnRfciAoZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgaW50ICpfX3Jlc3RyaWN0IF9f
ZGVjcHQsCiAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19zaWduLCBjaGFyICpf
X3Jlc3RyaWN0IF9fYnVmLAogICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbGVuKSB0aHJvdyAo
KTsKZXh0ZXJuIGludCBmY3Z0X3IgKGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGludCAq
X19yZXN0cmljdCBfX2RlY3B0LAogICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9f
c2lnbiwgY2hhciAqX19yZXN0cmljdCBfX2J1ZiwKICAgICAgICAgICAgICAgICAgIHNpemVfdCBf
X2xlbikgdGhyb3cgKCk7CgpleHRlcm4gaW50IHFlY3Z0X3IgKGxvbmcgZG91YmxlIF9fdmFsdWUs
IGludCBfX25kaWdpdCwKICAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19kZWNw
dCwgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbiwKICAgICAgICAgICAgICAgICAgICBjaGFyICpfX3Jl
c3RyaWN0IF9fYnVmLCBzaXplX3QgX19sZW4pIHRocm93ICgpOwpleHRlcm4gaW50IHFmY3Z0X3Ig
KGxvbmcgZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwKICAgICAgICAgICAgICAgICAgICBp
bnQgKl9fcmVzdHJpY3QgX19kZWNwdCwgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbiwKICAgICAgICAg
ICAgICAgICAgICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLCBzaXplX3QgX19sZW4pIHRocm93ICgp
OwoKCgoKCgpleHRlcm4gaW50IG1ibGVuIChfX2NvbnN0IGNoYXIgKl9fcywgc2l6ZV90IF9fbikg
dGhyb3cgKCk7CgoKZXh0ZXJuIGludCBtYnRvd2MgKHdjaGFyX3QgKl9fcmVzdHJpY3QgX19wd2Ms
CiAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zLCBzaXplX3Qg
X19uKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IHdjdG9tYiAoY2hhciAqX19zLCB3Y2hhcl90IF9f
d2NoYXIpIHRocm93ICgpOwoKCgpleHRlcm4gc2l6ZV90IG1ic3Rvd2NzICh3Y2hhcl90ICpfX3Jl
c3RyaWN0IF9fcHdjcywKICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fcywgc2l6ZV90IF9fbikgdGhyb3cgKCk7CgpleHRlcm4gc2l6ZV90IHdjc3RvbWJz
IChjaGFyICpfX3Jlc3RyaWN0IF9fcywKICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB3
Y2hhcl90ICpfX3Jlc3RyaWN0IF9fcHdjcywgc2l6ZV90IF9fbikKICAgICB0aHJvdyAoKTsKCgoK
CgoKCmV4dGVybiBpbnQgcnBtYXRjaCAoX19jb25zdCBjaGFyICpfX3Jlc3BvbnNlKSB0aHJvdyAo
KTsKIyA4MDkgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gaW50IGdldHN1Ym9wdCAo
Y2hhciAqKl9fcmVzdHJpY3QgX19vcHRpb25wLAogICAgICAgICAgICAgICAgICAgICAgY2hhciAq
X19jb25zdCAqX19yZXN0cmljdCBfX3Rva2VucywKICAgICAgICAgICAgICAgICAgICAgIGNoYXIg
KipfX3Jlc3RyaWN0IF9fdmFsdWVwKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gdm9pZCBzZXRrZXkg
KF9fY29uc3QgY2hhciAqX19rZXkpIHRocm93ICgpOwoKCgoKCgoKZXh0ZXJuIGludCBwb3NpeF9v
cGVucHQgKGludCBfX29mbGFnKSB0aHJvdyAoKTsKCgoKCgoKCmV4dGVybiBpbnQgZ3JhbnRwdCAo
aW50IF9fZmQpIHRocm93ICgpOwoKCgpleHRlcm4gaW50IHVubG9ja3B0IChpbnQgX19mZCkgdGhy
b3cgKCk7CgoKCgpleHRlcm4gY2hhciAqcHRzbmFtZSAoaW50IF9fZmQpIHRocm93ICgpOwoKCgoK
CgpleHRlcm4gaW50IHB0c25hbWVfciAoaW50IF9fZmQsIGNoYXIgKl9fYnVmLCBzaXplX3QgX19i
dWZsZW4pIHRocm93ICgpOwoKCmV4dGVybiBpbnQgZ2V0cHQgKHZvaWQpIHRocm93ICgpOwoKCgoK
CgpleHRlcm4gaW50IGdldGxvYWRhdmcgKGRvdWJsZSBfX2xvYWRhdmdbXSwgaW50IF9fbmVsZW0p
IHRocm93ICgpOwoKCgoKCn0KIyA1ICJjcmVhdGVtYXAuY3BwIiAyCiMgMSAiL3Vzci9pbmNsdWRl
L3N0cmluZy5oIiAxIDMKIyAyNiAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzCiMgMSAiL3Vzci9p
bmNsdWRlL2ZlYXR1cmVzLmgiIDEgMwojIDI3ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDIgMwoK
ZXh0ZXJuICJDIiB7CgoKCgojIDEgIi91c3IvbG9jYWwvbGliL2djYy1saWIvaTY4Ni1wYy1saW51
eC1nbnUvMy4wLjEvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMzQgIi91c3IvaW5jbHVkZS9zdHJp
bmcuaCIgMiAzCgoKCmV4dGVybiB2b2lkICptZW1jcHkgKHZvaWQgKl9fcmVzdHJpY3QgX19kZXN0
LAogICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19zcmMsIHNp
emVfdCBfX24pIHRocm93ICgpOwoKCmV4dGVybiB2b2lkICptZW1tb3ZlICh2b2lkICpfX2Rlc3Qs
IF9fY29uc3Qgdm9pZCAqX19zcmMsIHNpemVfdCBfX24pCiAgICAgdGhyb3cgKCk7CgoKCgoKZXh0
ZXJuIHZvaWQgKm1lbWNjcHkgKHZvaWQgKl9fcmVzdHJpY3QgX19kZXN0LCBfX2NvbnN0IHZvaWQg
Kl9fcmVzdHJpY3QgX19zcmMsCiAgICAgICAgICAgICAgICAgICAgICBpbnQgX19jLCBzaXplX3Qg
X19uKQogICAgIHRocm93ICgpOwoKCgoKZXh0ZXJuIHZvaWQgKm1lbXNldCAodm9pZCAqX19zLCBp
bnQgX19jLCBzaXplX3QgX19uKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IG1lbWNtcCAoX19jb25z
dCB2b2lkICpfX3MxLCBfX2NvbnN0IHZvaWQgKl9fczIsIHNpemVfdCBfX24pCiAgICAgdGhyb3cg
KCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJuIHZvaWQgKm1lbWNociAoX19j
b25zdCB2b2lkICpfX3MsIGludCBfX2MsIHNpemVfdCBfX24pCiAgICAgIHRocm93ICgpIF9fYXR0
cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgoKZXh0ZXJuIHZvaWQgKnJhd21lbWNociAoX19jb25z
dCB2b2lkICpfX3MsIGludCBfX2MpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykp
OwoKCmV4dGVybiB2b2lkICptZW1yY2hyIChfX2NvbnN0IHZvaWQgKl9fcywgaW50IF9fYywgc2l6
ZV90IF9fbikKICAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKCgpl
eHRlcm4gY2hhciAqc3RyY3B5IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwgX19jb25zdCBjaGFy
ICpfX3Jlc3RyaWN0IF9fc3JjKQogICAgIHRocm93ICgpOwoKZXh0ZXJuIGNoYXIgKnN0cm5jcHkg
KGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LAogICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBj
aGFyICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKSB0aHJvdyAoKTsKCgpleHRlcm4gY2hh
ciAqc3RyY2F0IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwgX19jb25zdCBjaGFyICpfX3Jlc3Ry
aWN0IF9fc3JjKQogICAgIHRocm93ICgpOwoKZXh0ZXJuIGNoYXIgKnN0cm5jYXQgKGNoYXIgKl9f
cmVzdHJpY3QgX19kZXN0LCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMsCiAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3QgX19uKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IHN0cmNtcCAo
X19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIpCiAgICAgdGhyb3cgKCkgX19h
dHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgpleHRlcm4gaW50IHN0cm5jbXAgKF9fY29uc3QgY2hh
ciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyLCBzaXplX3QgX19uKQogICAgIHRocm93ICgpIF9f
YXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCmV4dGVybiBpbnQgc3RyY29sbCAoX19jb25zdCBj
aGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVf
XyAoKF9fcHVyZV9fKSk7CgpleHRlcm4gc2l6ZV90IHN0cnhmcm0gKGNoYXIgKl9fcmVzdHJpY3Qg
X19kZXN0LAogICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBf
X3NyYywgc2l6ZV90IF9fbikgdGhyb3cgKCk7CgoKCgoKIyAxICIvdXNyL2luY2x1ZGUveGxvY2Fs
ZS5oIiAxIDMKIyAxMDkgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMiAzCgoKZXh0ZXJuIGludCBf
X3N0cmNvbGxfbCAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIsIF9fbG9j
YWxlX3QgX19sKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0
ZXJuIHNpemVfdCBfX3N0cnhmcm1fbCAoY2hhciAqX19kZXN0LCBfX2NvbnN0IGNoYXIgKl9fc3Jj
LCBzaXplX3QgX19uLAogICAgICAgICAgICAgICAgICAgICAgICAgICBfX2xvY2FsZV90IF9fbCkg
dGhyb3cgKCk7CgoKCgpleHRlcm4gY2hhciAqc3RyZHVwIChfX2NvbnN0IGNoYXIgKl9fcykgdGhy
b3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsKCgoKCgoKZXh0ZXJuIGNoYXIgKnN0
cm5kdXAgKF9fY29uc3QgY2hhciAqX19zdHJpbmcsIHNpemVfdCBfX24pCiAgICAgdGhyb3cgKCkg
X19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsKIyAxNTUgIi91c3IvaW5jbHVkZS9zdHJpbmcu
aCIgMwpleHRlcm4gY2hhciAqc3RyY2hyIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYykgdGhy
b3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgpleHRlcm4gY2hhciAqc3RycmNociAo
X19jb25zdCBjaGFyICpfX3MsIGludCBfX2MpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1
cmVfXykpOwoKCgoKZXh0ZXJuIGNoYXIgKnN0cmNocm51bCAoX19jb25zdCBjaGFyICpfX3MsIGlu
dCBfX2MpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgoKZXh0ZXJuIHNp
emVfdCBzdHJjc3BuIChfX2NvbnN0IGNoYXIgKl9fcywgX19jb25zdCBjaGFyICpfX3JlamVjdCkK
ICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpleHRlcm4gc2l6ZV90
IHN0cnNwbiAoX19jb25zdCBjaGFyICpfX3MsIF9fY29uc3QgY2hhciAqX19hY2NlcHQpCiAgICAg
dGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgpleHRlcm4gY2hhciAqc3RycGJy
ayAoX19jb25zdCBjaGFyICpfX3MsIF9fY29uc3QgY2hhciAqX19hY2NlcHQpCiAgICAgdGhyb3cg
KCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgpleHRlcm4gY2hhciAqc3Ryc3RyIChfX2Nv
bnN0IGNoYXIgKl9faGF5c3RhY2ssIF9fY29uc3QgY2hhciAqX19uZWVkbGUpCiAgICAgdGhyb3cg
KCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKCmV4dGVybiBjaGFyICpzdHJjYXNlc3Ry
IChfX2NvbnN0IGNoYXIgKl9faGF5c3RhY2ssIF9fY29uc3QgY2hhciAqX19uZWVkbGUpCiAgICAg
dGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKCmV4dGVybiBjaGFyICpzdHJ0
b2sgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19kZWxp
bSkKICAgICB0aHJvdyAoKTsKCgoKZXh0ZXJuIGNoYXIgKl9fc3RydG9rX3IgKGNoYXIgKl9fcmVz
dHJpY3QgX19zLAogICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3Ry
aWN0IF9fZGVsaW0sCiAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBf
X3NhdmVfcHRyKSB0aHJvdyAoKTsKCmV4dGVybiBjaGFyICpzdHJ0b2tfciAoY2hhciAqX19yZXN0
cmljdCBfX3MsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2RlbGltLAogICAgICAgICAgICAg
ICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fc2F2ZV9wdHIpIHRocm93ICgpOwoKCgoKCgpl
eHRlcm4gdm9pZCAqbWVtbWVtIChfX2NvbnN0IHZvaWQgKl9faGF5c3RhY2ssIHNpemVfdCBfX2hh
eXN0YWNrbGVuLAogICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHZvaWQgKl9fbmVlZGxlLCBz
aXplX3QgX19uZWVkbGVsZW4pCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9f
KSk7CgoKCmV4dGVybiB2b2lkICpfX21lbXBjcHkgKHZvaWQgKl9fcmVzdHJpY3QgX19kZXN0LAog
ICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19zcmMsIHNp
emVfdCBfX24pIHRocm93ICgpOwpleHRlcm4gdm9pZCAqbWVtcGNweSAodm9pZCAqX19yZXN0cmlj
dCBfX2Rlc3QsCiAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHZvaWQgKl9fcmVzdHJpY3Qg
X19zcmMsIHNpemVfdCBfX24pIHRocm93ICgpOwoKCgoKZXh0ZXJuIHNpemVfdCBzdHJsZW4gKF9f
Y29uc3QgY2hhciAqX19zKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoK
CmV4dGVybiBzaXplX3Qgc3RybmxlbiAoX19jb25zdCBjaGFyICpfX3N0cmluZywgc2l6ZV90IF9f
bWF4bGVuKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgoKZXh0
ZXJuIGNoYXIgKnN0cmVycm9yIChpbnQgX19lcnJudW0pIHRocm93ICgpOwoKCgpleHRlcm4gY2hh
ciAqc3RyZXJyb3JfciAoaW50IF9fZXJybnVtLCBjaGFyICpfX2J1Ziwgc2l6ZV90IF9fYnVmbGVu
KSB0aHJvdyAoKTsKCgoKCmV4dGVybiB2b2lkIF9fYnplcm8gKHZvaWQgKl9fcywgc2l6ZV90IF9f
bikgdGhyb3cgKCk7CgoKCmV4dGVybiB2b2lkIGJjb3B5IChfX2NvbnN0IHZvaWQgKl9fc3JjLCB2
b2lkICpfX2Rlc3QsIHNpemVfdCBfX24pIHRocm93ICgpOwoKCmV4dGVybiB2b2lkIGJ6ZXJvICh2
b2lkICpfX3MsIHNpemVfdCBfX24pIHRocm93ICgpOwoKCmV4dGVybiBpbnQgYmNtcCAoX19jb25z
dCB2b2lkICpfX3MxLCBfX2NvbnN0IHZvaWQgKl9fczIsIHNpemVfdCBfX24pCiAgICAgdGhyb3cg
KCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJuIGNoYXIgKmluZGV4IChfX2Nv
bnN0IGNoYXIgKl9fcywgaW50IF9fYykgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9f
KSk7CgoKZXh0ZXJuIGNoYXIgKnJpbmRleCAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2MpIHRo
cm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgpleHRlcm4gaW50IGZmcyAoaW50
IF9faSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKGNvbnN0KSk7CgoKCgpleHRlcm4gaW50IGZm
c2wgKGxvbmcgaW50IF9fbCkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKGNvbnN0KSk7CgpfX2V4
dGVuc2lvbl9fIGV4dGVybiBpbnQgZmZzbGwgKGxvbmcgbG9uZyBpbnQgX19sbCkKICAgICB0aHJv
dyAoKSBfX2F0dHJpYnV0ZV9fICgoY29uc3QpKTsKCgoKCmV4dGVybiBpbnQgc3RyY2FzZWNtcCAo
X19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIpCiAgICAgdGhyb3cgKCkgX19h
dHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJuIGludCBzdHJuY2FzZWNtcCAoX19jb25z
dCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIsIHNpemVfdCBfX24pCiAgICAgdGhyb3cg
KCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKCgoKZXh0ZXJuIGludCBfX3N0cmNhc2Vj
bXBfbCAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF9fbG9jYWxlX3QgX19sb2MpIHRocm93ICgpIF9fYXR0cmlidXRlX18g
KChfX3B1cmVfXykpOwoKZXh0ZXJuIGludCBfX3N0cm5jYXNlY21wX2wgKF9fY29uc3QgY2hhciAq
X19zMSwgX19jb25zdCBjaGFyICpfX3MyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IF9fbiwgX19sb2NhbGVfdCBfX2xvYykKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgo
X19wdXJlX18pKTsKCgoKCgpleHRlcm4gY2hhciAqc3Ryc2VwIChjaGFyICoqX19yZXN0cmljdCBf
X3N0cmluZ3AsCiAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBf
X2RlbGltKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQgc3RydmVyc2NtcCAoX19jb25zdCBjaGFy
ICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAo
KF9fcHVyZV9fKSk7CgoKZXh0ZXJuIGNoYXIgKnN0cnNpZ25hbCAoaW50IF9fc2lnKSB0aHJvdyAo
KTsKCgpleHRlcm4gY2hhciAqX19zdHBjcHkgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LCBfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMpCiAgICAgdGhyb3cgKCk7CmV4dGVybiBjaGFyICpz
dHBjcHkgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3Qg
X19zcmMpCiAgICAgdGhyb3cgKCk7CgoKCmV4dGVybiBjaGFyICpfX3N0cG5jcHkgKGNoYXIgKl9f
cmVzdHJpY3QgX19kZXN0LAogICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9f
cmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24pIHRocm93ICgpOwpleHRlcm4gY2hhciAqc3RwbmNw
eSAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsCiAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0
IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24pIHRocm93ICgpOwoKCmV4dGVybiBj
aGFyICpzdHJmcnkgKGNoYXIgKl9fc3RyaW5nKSB0aHJvdyAoKTsKCgpleHRlcm4gdm9pZCAqbWVt
ZnJvYiAodm9pZCAqX19zLCBzaXplX3QgX19uKSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGNoYXIg
KmJhc2VuYW1lIChfX2NvbnN0IGNoYXIgKl9fZmlsZW5hbWUpIHRocm93ICgpOwojIDM2MyAiL3Vz
ci9pbmNsdWRlL3N0cmluZy5oIiAzCn0KIyA2ICJjcmVhdGVtYXAuY3BwIiAyCiMgMSAiL3Vzci9p
bmNsdWRlL2Fzc2VydC5oIiAxIDMKIyAzNiAiL3Vzci9pbmNsdWRlL2Fzc2VydC5oIiAzCiMgMSAi
L3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDEgMwojIDM3ICIvdXNyL2luY2x1ZGUvYXNzZXJ0Lmgi
IDIgMwojIDY1ICIvdXNyL2luY2x1ZGUvYXNzZXJ0LmgiIDMKZXh0ZXJuICJDIiB7CgoKZXh0ZXJu
IHZvaWQgX19hc3NlcnRfZmFpbCAoX19jb25zdCBjaGFyICpfX2Fzc2VydGlvbiwgX19jb25zdCBj
aGFyICpfX2ZpbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX2xp
bmUsIF9fY29uc3QgY2hhciAqX19mdW5jdGlvbikKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9f
ICgoX19ub3JldHVybl9fKSk7CgoKZXh0ZXJuIHZvaWQgX19hc3NlcnRfcGVycm9yX2ZhaWwgKGlu
dCBfX2Vycm51bSwgX19jb25zdCBjaGFyICpfX2ZpbGUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19saW5lLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgX19jb25zdCBjaGFyICpfX2Z1bmN0aW9uKQogICAgIHRocm93ICgpIF9fYXR0cmli
dXRlX18gKChfX25vcmV0dXJuX18pKTsKCgoKCmV4dGVybiB2b2lkIF9fYXNzZXJ0IChjb25zdCBj
aGFyICpfX2Fzc2VydGlvbiwgY29uc3QgY2hhciAqX19maWxlLCBpbnQgX19saW5lKQogICAgIHRo
cm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsKCgp9CiMgNyAiY3JlYXRlbWFw
LmNwcCIgMgojIDEgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDEgMwojIDI3ICIvdXNyL2luY2x1ZGUv
bWF0aC5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDEgMwojIDI4ICIvdXNyL2lu
Y2x1ZGUvbWF0aC5oIiAyIDMKCmV4dGVybiAiQyIgewoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRz
L2h1Z2VfdmFsLmgiIDEgMwojIDI1ICIvdXNyL2luY2x1ZGUvYml0cy9odWdlX3ZhbC5oIiAzCiMg
MSAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDEgMwojIDI2ICIvdXNyL2luY2x1ZGUvYml0cy9o
dWdlX3ZhbC5oIiAyIDMKIyAzNCAiL3Vzci9pbmNsdWRlL21hdGguaCIgMiAzCgoKCiMgMSAiL3Vz
ci9pbmNsdWRlL2JpdHMvbmFuLmgiIDEgMwojIDM4ICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAyIDMK
CgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhkZWYuaCIgMSAzCiMgMjkgIi91c3IvaW5jbHVk
ZS9iaXRzL21hdGhkZWYuaCIgMwp0eXBlZGVmIGxvbmcgZG91YmxlIGZsb2F0X3Q7Cgp0eXBlZGVm
IGxvbmcgZG91YmxlIGRvdWJsZV90OwojIDQxICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAyIDMKIyA2
MyAiL3Vzci9pbmNsdWRlL21hdGguaCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxs
cy5oIiAxIDMKIyA1NCAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgiIDMKZXh0ZXJuIGRv
dWJsZSBhY29zIChkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2Fjb3MgKGRv
dWJsZSBfX3gpIHRocm93ICgpOwoKZXh0ZXJuIGRvdWJsZSBhc2luIChkb3VibGUgX194KSB0aHJv
dyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2FzaW4gKGRvdWJsZSBfX3gpIHRocm93ICgpOwoKZXh0ZXJu
IGRvdWJsZSBhdGFuIChkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2F0YW4g
KGRvdWJsZSBfX3gpIHRocm93ICgpOwoKZXh0ZXJuIGRvdWJsZSBhdGFuMiAoZG91YmxlIF9feSwg
ZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19hdGFuMiAoZG91YmxlIF9feSwg
ZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGRvdWJsZSBjb3MgKGRvdWJsZSBfX3gpIHRo
cm93ICgpOyBleHRlcm4gZG91YmxlIF9fY29zIChkb3VibGUgX194KSB0aHJvdyAoKTsKCmV4dGVy
biBkb3VibGUgc2luIChkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX3NpbiAo
ZG91YmxlIF9feCkgdGhyb3cgKCk7CgpleHRlcm4gZG91YmxlIHRhbiAoZG91YmxlIF9feCkgdGhy
b3cgKCk7IGV4dGVybiBkb3VibGUgX190YW4gKGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCgpleHRl
cm4gdm9pZCBzaW5jb3MgKGRvdWJsZSBfX3gsIGRvdWJsZSAqX19zaW54LCBkb3VibGUgKl9fY29z
eCkgdGhyb3cgKCk7IGV4dGVybiB2b2lkIF9fc2luY29zIChkb3VibGUgX194LCBkb3VibGUgKl9f
c2lueCwgZG91YmxlICpfX2Nvc3gpIHRocm93ICgpOwoKCgoKCgpleHRlcm4gZG91YmxlIGNvc2gg
KGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fY29zaCAoZG91YmxlIF9feCkg
dGhyb3cgKCk7CgpleHRlcm4gZG91YmxlIHNpbmggKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRl
cm4gZG91YmxlIF9fc2luaCAoZG91YmxlIF9feCkgdGhyb3cgKCk7CgpleHRlcm4gZG91YmxlIHRh
bmggKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fdGFuaCAoZG91YmxlIF9f
eCkgdGhyb3cgKCk7CgoKCmV4dGVybiBkb3VibGUgYWNvc2ggKGRvdWJsZSBfX3gpIHRocm93ICgp
OyBleHRlcm4gZG91YmxlIF9fYWNvc2ggKGRvdWJsZSBfX3gpIHRocm93ICgpOwoKZXh0ZXJuIGRv
dWJsZSBhc2luaCAoZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19hc2luaCAo
ZG91YmxlIF9feCkgdGhyb3cgKCk7CgpleHRlcm4gZG91YmxlIGF0YW5oIChkb3VibGUgX194KSB0
aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2F0YW5oIChkb3VibGUgX194KSB0aHJvdyAoKTsKCgoK
CgpleHRlcm4gZG91YmxlIGV4cCAoZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUg
X19leHAgKGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCgpleHRlcm4gZG91YmxlIGV4cDEwIChkb3Vi
bGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2V4cDEwIChkb3VibGUgX194KSB0aHJv
dyAoKTsKCmV4dGVybiBkb3VibGUgcG93MTAgKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4g
ZG91YmxlIF9fcG93MTAgKGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCgpleHRlcm4gZG91YmxlIGZy
ZXhwIChkb3VibGUgX194LCBpbnQgKl9fZXhwb25lbnQpIHRocm93ICgpOyBleHRlcm4gZG91Ymxl
IF9fZnJleHAgKGRvdWJsZSBfX3gsIGludCAqX19leHBvbmVudCkgdGhyb3cgKCk7CgoKZXh0ZXJu
IGRvdWJsZSBsZGV4cCAoZG91YmxlIF9feCwgaW50IF9fZXhwb25lbnQpIHRocm93ICgpOyBleHRl
cm4gZG91YmxlIF9fbGRleHAgKGRvdWJsZSBfX3gsIGludCBfX2V4cG9uZW50KSB0aHJvdyAoKTsK
CgpleHRlcm4gZG91YmxlIGxvZyAoZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUg
X19sb2cgKGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCmV4dGVybiBkb3VibGUgbG9nMTAgKGRvdWJs
ZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fbG9nMTAgKGRvdWJsZSBfX3gpIHRocm93
ICgpOwoKCmV4dGVybiBkb3VibGUgbW9kZiAoZG91YmxlIF9feCwgZG91YmxlICpfX2lwdHIpIHRo
cm93ICgpOyBleHRlcm4gZG91YmxlIF9fbW9kZiAoZG91YmxlIF9feCwgZG91YmxlICpfX2lwdHIp
IHRocm93ICgpOwoKCgpleHRlcm4gZG91YmxlIGV4cG0xIChkb3VibGUgX194KSB0aHJvdyAoKTsg
ZXh0ZXJuIGRvdWJsZSBfX2V4cG0xIChkb3VibGUgX194KSB0aHJvdyAoKTsKCgpleHRlcm4gZG91
YmxlIGxvZzFwIChkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2xvZzFwIChk
b3VibGUgX194KSB0aHJvdyAoKTsKCgpleHRlcm4gZG91YmxlIGxvZ2IgKGRvdWJsZSBfX3gpIHRo
cm93ICgpOyBleHRlcm4gZG91YmxlIF9fbG9nYiAoZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKCgpl
eHRlcm4gZG91YmxlIGV4cDIgKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9f
ZXhwMiAoZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGRvdWJsZSBsb2cyIChkb3VibGUg
X194KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2xvZzIgKGRvdWJsZSBfX3gpIHRocm93ICgp
OwoKCgoKCgpleHRlcm4gZG91YmxlIHBvdyAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgdGhyb3cg
KCk7IGV4dGVybiBkb3VibGUgX19wb3cgKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIHRocm93ICgp
OwoKCmV4dGVybiBkb3VibGUgc3FydCAoZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBkb3Vi
bGUgX19zcXJ0IChkb3VibGUgX194KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGRvdWJsZSBoeXBvdCAo
ZG91YmxlIF9feCwgZG91YmxlIF9feSkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19oeXBvdCAo
ZG91YmxlIF9feCwgZG91YmxlIF9feSkgdGhyb3cgKCk7CgoKCgpleHRlcm4gZG91YmxlIGNicnQg
KGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fY2JydCAoZG91YmxlIF9feCkg
dGhyb3cgKCk7CgoKCgoKCmV4dGVybiBkb3VibGUgY2VpbCAoZG91YmxlIF9feCkgdGhyb3cgKCk7
IGV4dGVybiBkb3VibGUgX19jZWlsIChkb3VibGUgX194KSB0aHJvdyAoKTsKCgpleHRlcm4gZG91
YmxlIGZhYnMgKGRvdWJsZSBfX3gpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18p
KTsgZXh0ZXJuIGRvdWJsZSBfX2ZhYnMgKGRvdWJsZSBfX3gpIHRocm93ICgpIF9fYXR0cmlidXRl
X18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gZG91YmxlIGZsb29yIChkb3VibGUgX194KSB0aHJv
dyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2Zsb29yIChkb3VibGUgX194KSB0aHJvdyAoKTsKCgpleHRl
cm4gZG91YmxlIGZtb2QgKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIHRocm93ICgpOyBleHRlcm4g
ZG91YmxlIF9fZm1vZCAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgdGhyb3cgKCk7CgoKCgpleHRl
cm4gaW50IF9faXNpbmYgKGRvdWJsZSBfX3ZhbHVlKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgo
X19jb25zdF9fKSk7CgoKZXh0ZXJuIGludCBfX2Zpbml0ZSAoZG91YmxlIF9fdmFsdWUpIHRocm93
ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCmV4dGVybiBpbnQgaXNpbmYgKGRv
dWJsZSBfX3ZhbHVlKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0
ZXJuIGludCBmaW5pdGUgKGRvdWJsZSBfX3ZhbHVlKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgo
X19jb25zdF9fKSk7CgoKCgoKCgpleHRlcm4gZG91YmxlIGluZm5hbiAoaW50IF9fZXJyb3IpIHRo
cm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGRvdWJsZSBfX2luZm5h
biAoaW50IF9fZXJyb3IpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpl
eHRlcm4gZG91YmxlIGRyZW0gKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIHRocm93ICgpOyBleHRl
cm4gZG91YmxlIF9fZHJlbSAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgdGhyb3cgKCk7CgoKCmV4
dGVybiBkb3VibGUgc2lnbmlmaWNhbmQgKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91
YmxlIF9fc2lnbmlmaWNhbmQgKGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGRvdWJs
ZSBjb3B5c2lnbiAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVf
XyAoKF9fY29uc3RfXykpOyBleHRlcm4gZG91YmxlIF9fY29weXNpZ24gKGRvdWJsZSBfX3gsIGRv
dWJsZSBfX3kpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCmV4dGVy
biBkb3VibGUgbmFuIChfX2NvbnN0IGNoYXIgKl9fdGFnYikgdGhyb3cgKCkgX19hdHRyaWJ1dGVf
XyAoKF9fY29uc3RfXykpOyBleHRlcm4gZG91YmxlIF9fbmFuIChfX2NvbnN0IGNoYXIgKl9fdGFn
YikgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKZXh0ZXJuIGludCBf
X2lzbmFuIChkb3VibGUgX192YWx1ZSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3Rf
XykpOwoKCgpleHRlcm4gaW50IGlzbmFuIChkb3VibGUgX192YWx1ZSkgdGhyb3cgKCkgX19hdHRy
aWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBkb3VibGUgajAgKGRvdWJsZSkgdGhyb3cg
KCk7IGV4dGVybiBkb3VibGUgX19qMCAoZG91YmxlKSB0aHJvdyAoKTsKZXh0ZXJuIGRvdWJsZSBq
MSAoZG91YmxlKSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2oxIChkb3VibGUpIHRocm93ICgp
OwpleHRlcm4gZG91YmxlIGpuIChpbnQsIGRvdWJsZSkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUg
X19qbiAoaW50LCBkb3VibGUpIHRocm93ICgpOwpleHRlcm4gZG91YmxlIHkwIChkb3VibGUpIHRo
cm93ICgpOyBleHRlcm4gZG91YmxlIF9feTAgKGRvdWJsZSkgdGhyb3cgKCk7CmV4dGVybiBkb3Vi
bGUgeTEgKGRvdWJsZSkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX195MSAoZG91YmxlKSB0aHJv
dyAoKTsKZXh0ZXJuIGRvdWJsZSB5biAoaW50LCBkb3VibGUpIHRocm93ICgpOyBleHRlcm4gZG91
YmxlIF9feW4gKGludCwgZG91YmxlKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gZG91YmxlIGVyZiAo
ZG91YmxlKSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2VyZiAoZG91YmxlKSB0aHJvdyAoKTsK
ZXh0ZXJuIGRvdWJsZSBlcmZjIChkb3VibGUpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fZXJm
YyAoZG91YmxlKSB0aHJvdyAoKTsKZXh0ZXJuIGRvdWJsZSBsZ2FtbWEgKGRvdWJsZSkgdGhyb3cg
KCk7IGV4dGVybiBkb3VibGUgX19sZ2FtbWEgKGRvdWJsZSkgdGhyb3cgKCk7CgoKCmV4dGVybiBk
b3VibGUgdGdhbW1hIChkb3VibGUpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fdGdhbW1hIChk
b3VibGUpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGRvdWJsZSBnYW1tYSAoZG91YmxlKSB0aHJvdyAo
KTsgZXh0ZXJuIGRvdWJsZSBfX2dhbW1hIChkb3VibGUpIHRocm93ICgpOwoKCgoKCgpleHRlcm4g
ZG91YmxlIGxnYW1tYV9yIChkb3VibGUsIGludCAqX19zaWduZ2FtcCkgdGhyb3cgKCk7IGV4dGVy
biBkb3VibGUgX19sZ2FtbWFfciAoZG91YmxlLCBpbnQgKl9fc2lnbmdhbXApIHRocm93ICgpOwoK
CgoKCgpleHRlcm4gZG91YmxlIHJpbnQgKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91
YmxlIF9fcmludCAoZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGRvdWJsZSBuZXh0YWZ0
ZXIgKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2Nv
bnN0X18pKTsgZXh0ZXJuIGRvdWJsZSBfX25leHRhZnRlciAoZG91YmxlIF9feCwgZG91YmxlIF9f
eSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKZXh0ZXJuIGRvdWJsZSBu
ZXh0dG93YXJkIChkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgpIF9fYXR0cmli
dXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGRvdWJsZSBfX25leHR0b3dhcmQgKGRvdWJsZSBf
X3gsIGxvbmcgZG91YmxlIF9feSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykp
OwoKCgpleHRlcm4gZG91YmxlIHJlbWFpbmRlciAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgdGhy
b3cgKCk7IGV4dGVybiBkb3VibGUgX19yZW1haW5kZXIgKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kp
IHRocm93ICgpOwoKCgpleHRlcm4gZG91YmxlIHNjYWxiIChkb3VibGUgX194LCBkb3VibGUgX19u
KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX3NjYWxiIChkb3VibGUgX194LCBkb3VibGUgX19u
KSB0aHJvdyAoKTsKCgoKCmV4dGVybiBkb3VibGUgc2NhbGJuIChkb3VibGUgX194LCBpbnQgX19u
KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX3NjYWxibiAoZG91YmxlIF9feCwgaW50IF9fbikg
dGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgaWxvZ2IgKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRl
cm4gaW50IF9faWxvZ2IgKGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGRvdWJsZSBz
Y2FsYmxuIChkb3VibGUgX194LCBsb25nIGludCBfX24pIHRocm93ICgpOyBleHRlcm4gZG91Ymxl
IF9fc2NhbGJsbiAoZG91YmxlIF9feCwgbG9uZyBpbnQgX19uKSB0aHJvdyAoKTsKCgoKZXh0ZXJu
IGRvdWJsZSBuZWFyYnlpbnQgKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9f
bmVhcmJ5aW50IChkb3VibGUgX194KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGRvdWJsZSByb3VuZCAo
ZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19yb3VuZCAoZG91YmxlIF9feCkg
dGhyb3cgKCk7CgoKCmV4dGVybiBkb3VibGUgdHJ1bmMgKGRvdWJsZSBfX3gpIHRocm93ICgpIF9f
YXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGRvdWJsZSBfX3RydW5jIChkb3VibGUg
X194KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgpleHRlcm4gZG91
YmxlIHJlbXF1byAoZG91YmxlIF9feCwgZG91YmxlIF9feSwgaW50ICpfX3F1bykgdGhyb3cgKCk7
IGV4dGVybiBkb3VibGUgX19yZW1xdW8gKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3ksIGludCAqX19x
dW8pIHRocm93ICgpOwoKCgoKCgpleHRlcm4gbG9uZyBpbnQgbHJpbnQgKGRvdWJsZSBfX3gpIHRo
cm93ICgpOyBleHRlcm4gbG9uZyBpbnQgX19scmludCAoZG91YmxlIF9feCkgdGhyb3cgKCk7CmV4
dGVybiBsb25nIGxvbmcgaW50IGxscmludCAoZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBs
b25nIGxvbmcgaW50IF9fbGxyaW50IChkb3VibGUgX194KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGxv
bmcgaW50IGxyb3VuZCAoZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGludCBfX2xy
b3VuZCAoZG91YmxlIF9feCkgdGhyb3cgKCk7CmV4dGVybiBsb25nIGxvbmcgaW50IGxscm91bmQg
KGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBsb25nIGludCBfX2xscm91bmQgKGRv
dWJsZSBfX3gpIHRocm93ICgpOwoKCgpleHRlcm4gZG91YmxlIGZkaW0gKGRvdWJsZSBfX3gsIGRv
dWJsZSBfX3kpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fZmRpbSAoZG91YmxlIF9feCwgZG91
YmxlIF9feSkgdGhyb3cgKCk7CgoKZXh0ZXJuIGRvdWJsZSBmbWF4IChkb3VibGUgX194LCBkb3Vi
bGUgX195KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2ZtYXggKGRvdWJsZSBfX3gsIGRvdWJs
ZSBfX3kpIHRocm93ICgpOwoKCmV4dGVybiBkb3VibGUgZm1pbiAoZG91YmxlIF9feCwgZG91Ymxl
IF9feSkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19mbWluIChkb3VibGUgX194LCBkb3VibGUg
X195KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCBfX2ZwY2xhc3NpZnkgKGRvdWJsZSBfX3ZhbHVl
KSB0aHJvdyAoKQogICAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gaW50
IF9fc2lnbmJpdCAoZG91YmxlIF9fdmFsdWUpIHRocm93ICgpCiAgICAgX19hdHRyaWJ1dGVfXyAo
KF9fY29uc3RfXykpOwoKCgpleHRlcm4gZG91YmxlIGZtYSAoZG91YmxlIF9feCwgZG91YmxlIF9f
eSwgZG91YmxlIF9feikgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19mbWEgKGRvdWJsZSBfX3gs
IGRvdWJsZSBfX3ksIGRvdWJsZSBfX3opIHRocm93ICgpOwojIDY0ICIvdXNyL2luY2x1ZGUvbWF0
aC5oIiAyIDMKIyA4MiAiL3Vzci9pbmNsdWRlL21hdGguaCIgMwojIDEgIi91c3IvaW5jbHVkZS9i
aXRzL21hdGhjYWxscy5oIiAxIDMKIyA1NCAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgi
IDMKZXh0ZXJuIGZsb2F0IGFjb3NmIChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gZmxvYXQg
X19hY29zZiAoZmxvYXQgX194KSB0aHJvdyAoKTsKCmV4dGVybiBmbG9hdCBhc2luZiAoZmxvYXQg
X194KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fYXNpbmYgKGZsb2F0IF9feCkgdGhyb3cgKCk7
CgpleHRlcm4gZmxvYXQgYXRhbmYgKGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBf
X2F0YW5mIChmbG9hdCBfX3gpIHRocm93ICgpOwoKZXh0ZXJuIGZsb2F0IGF0YW4yZiAoZmxvYXQg
X195LCBmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19hdGFuMmYgKGZsb2F0IF9f
eSwgZmxvYXQgX194KSB0aHJvdyAoKTsKCgpleHRlcm4gZmxvYXQgY29zZiAoZmxvYXQgX194KSB0
aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fY29zZiAoZmxvYXQgX194KSB0aHJvdyAoKTsKCmV4dGVy
biBmbG9hdCBzaW5mIChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19zaW5mIChm
bG9hdCBfX3gpIHRocm93ICgpOwoKZXh0ZXJuIGZsb2F0IHRhbmYgKGZsb2F0IF9feCkgdGhyb3cg
KCk7IGV4dGVybiBmbG9hdCBfX3RhbmYgKGZsb2F0IF9feCkgdGhyb3cgKCk7CgoKCmV4dGVybiB2
b2lkIHNpbmNvc2YgKGZsb2F0IF9feCwgZmxvYXQgKl9fc2lueCwgZmxvYXQgKl9fY29zeCkgdGhy
b3cgKCk7IGV4dGVybiB2b2lkIF9fc2luY29zZiAoZmxvYXQgX194LCBmbG9hdCAqX19zaW54LCBm
bG9hdCAqX19jb3N4KSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGZsb2F0IGNvc2hmIChmbG9hdCBf
X3gpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19jb3NoZiAoZmxvYXQgX194KSB0aHJvdyAoKTsK
CmV4dGVybiBmbG9hdCBzaW5oZiAoZmxvYXQgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9f
c2luaGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7CgpleHRlcm4gZmxvYXQgdGFuaGYgKGZsb2F0IF9f
eCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX3RhbmhmIChmbG9hdCBfX3gpIHRocm93ICgpOwoK
CgpleHRlcm4gZmxvYXQgYWNvc2hmIChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gZmxvYXQg
X19hY29zaGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7CgpleHRlcm4gZmxvYXQgYXNpbmhmIChmbG9h
dCBfX3gpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19hc2luaGYgKGZsb2F0IF9feCkgdGhyb3cg
KCk7CgpleHRlcm4gZmxvYXQgYXRhbmhmIChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gZmxv
YXQgX19hdGFuaGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGZsb2F0IGV4cGYg
KGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX2V4cGYgKGZsb2F0IF9feCkgdGhy
b3cgKCk7CgoKCmV4dGVybiBmbG9hdCBleHAxMGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVy
biBmbG9hdCBfX2V4cDEwZiAoZmxvYXQgX194KSB0aHJvdyAoKTsKCmV4dGVybiBmbG9hdCBwb3cx
MGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX3BvdzEwZiAoZmxvYXQgX194
KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGZsb2F0IGZyZXhwZiAoZmxvYXQgX194LCBpbnQgKl9fZXhw
b25lbnQpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19mcmV4cGYgKGZsb2F0IF9feCwgaW50ICpf
X2V4cG9uZW50KSB0aHJvdyAoKTsKCgpleHRlcm4gZmxvYXQgbGRleHBmIChmbG9hdCBfX3gsIGlu
dCBfX2V4cG9uZW50KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fbGRleHBmIChmbG9hdCBfX3gs
IGludCBfX2V4cG9uZW50KSB0aHJvdyAoKTsKCgpleHRlcm4gZmxvYXQgbG9nZiAoZmxvYXQgX194
KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fbG9nZiAoZmxvYXQgX194KSB0aHJvdyAoKTsKCgpl
eHRlcm4gZmxvYXQgbG9nMTBmIChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19s
b2cxMGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGZsb2F0IG1vZGZmIChmbG9hdCBf
X3gsIGZsb2F0ICpfX2lwdHIpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19tb2RmZiAoZmxvYXQg
X194LCBmbG9hdCAqX19pcHRyKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGZsb2F0IGV4cG0xZiAoZmxv
YXQgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fZXhwbTFmIChmbG9hdCBfX3gpIHRocm93
ICgpOwoKCmV4dGVybiBmbG9hdCBsb2cxcGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVybiBm
bG9hdCBfX2xvZzFwZiAoZmxvYXQgX194KSB0aHJvdyAoKTsKCgpleHRlcm4gZmxvYXQgbG9nYmYg
KGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX2xvZ2JmIChmbG9hdCBfX3gpIHRo
cm93ICgpOwoKCgoKZXh0ZXJuIGZsb2F0IGV4cDJmIChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRl
cm4gZmxvYXQgX19leHAyZiAoZmxvYXQgX194KSB0aHJvdyAoKTsKCgpleHRlcm4gZmxvYXQgbG9n
MmYgKGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX2xvZzJmIChmbG9hdCBfX3gp
IHRocm93ICgpOwoKCgoKCgpleHRlcm4gZmxvYXQgcG93ZiAoZmxvYXQgX194LCBmbG9hdCBfX3kp
IHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19wb3dmIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgdGhy
b3cgKCk7CgoKZXh0ZXJuIGZsb2F0IHNxcnRmIChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4g
ZmxvYXQgX19zcXJ0ZiAoZmxvYXQgX194KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGZsb2F0IGh5cG90
ZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19oeXBvdGYg
KGZsb2F0IF9feCwgZmxvYXQgX195KSB0aHJvdyAoKTsKCgoKCmV4dGVybiBmbG9hdCBjYnJ0ZiAo
ZmxvYXQgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fY2JydGYgKGZsb2F0IF9feCkgdGhy
b3cgKCk7CgoKCgoKCmV4dGVybiBmbG9hdCBjZWlsZiAoZmxvYXQgX194KSB0aHJvdyAoKTsgZXh0
ZXJuIGZsb2F0IF9fY2VpbGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGZsb2F0IGZh
YnNmIChmbG9hdCBfX3gpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0
ZXJuIGZsb2F0IF9fZmFic2YgKGZsb2F0IF9feCkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9f
Y29uc3RfXykpOwoKCmV4dGVybiBmbG9hdCBmbG9vcmYgKGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4
dGVybiBmbG9hdCBfX2Zsb29yZiAoZmxvYXQgX194KSB0aHJvdyAoKTsKCgpleHRlcm4gZmxvYXQg
Zm1vZGYgKGZsb2F0IF9feCwgZmxvYXQgX195KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fZm1v
ZGYgKGZsb2F0IF9feCwgZmxvYXQgX195KSB0aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQgX19pc2lu
ZmYgKGZsb2F0IF9fdmFsdWUpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsK
CgpleHRlcm4gaW50IF9fZmluaXRlZiAoZmxvYXQgX192YWx1ZSkgdGhyb3cgKCkgX19hdHRyaWJ1
dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKZXh0ZXJuIGludCBpc2luZmYgKGZsb2F0IF9fdmFsdWUp
IHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gaW50IGZpbml0
ZWYgKGZsb2F0IF9fdmFsdWUpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsK
CgoKCgoKCmV4dGVybiBmbG9hdCBpbmZuYW5mIChpbnQgX19lcnJvcikgdGhyb3cgKCkgX19hdHRy
aWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gZmxvYXQgX19pbmZuYW5mIChpbnQgX19lcnJv
cikgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBmbG9hdCBk
cmVtZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19kcmVt
ZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIHRocm93ICgpOwoKCgpleHRlcm4gZmxvYXQgc2lnbmlm
aWNhbmRmIChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19zaWduaWZpY2FuZGYg
KGZsb2F0IF9feCkgdGhyb3cgKCk7CgoKCgpleHRlcm4gZmxvYXQgY29weXNpZ25mIChmbG9hdCBf
X3gsIGZsb2F0IF9feSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRl
cm4gZmxvYXQgX19jb3B5c2lnbmYgKGZsb2F0IF9feCwgZmxvYXQgX195KSB0aHJvdyAoKSBfX2F0
dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgpleHRlcm4gZmxvYXQgbmFuZiAoX19jb25zdCBj
aGFyICpfX3RhZ2IpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJu
IGZsb2F0IF9fbmFuZiAoX19jb25zdCBjaGFyICpfX3RhZ2IpIHRocm93ICgpIF9fYXR0cmlidXRl
X18gKChfX2NvbnN0X18pKTsKCgoKCmV4dGVybiBpbnQgX19pc25hbmYgKGZsb2F0IF9fdmFsdWUp
IHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKZXh0ZXJuIGludCBpc25h
bmYgKGZsb2F0IF9fdmFsdWUpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsK
CgpleHRlcm4gZmxvYXQgajBmIChmbG9hdCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX2owZiAo
ZmxvYXQpIHRocm93ICgpOwpleHRlcm4gZmxvYXQgajFmIChmbG9hdCkgdGhyb3cgKCk7IGV4dGVy
biBmbG9hdCBfX2oxZiAoZmxvYXQpIHRocm93ICgpOwpleHRlcm4gZmxvYXQgam5mIChpbnQsIGZs
b2F0KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fam5mIChpbnQsIGZsb2F0KSB0aHJvdyAoKTsK
ZXh0ZXJuIGZsb2F0IHkwZiAoZmxvYXQpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX195MGYgKGZs
b2F0KSB0aHJvdyAoKTsKZXh0ZXJuIGZsb2F0IHkxZiAoZmxvYXQpIHRocm93ICgpOyBleHRlcm4g
ZmxvYXQgX195MWYgKGZsb2F0KSB0aHJvdyAoKTsKZXh0ZXJuIGZsb2F0IHluZiAoaW50LCBmbG9h
dCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX3luZiAoaW50LCBmbG9hdCkgdGhyb3cgKCk7CgoK
CgoKZXh0ZXJuIGZsb2F0IGVyZmYgKGZsb2F0KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fZXJm
ZiAoZmxvYXQpIHRocm93ICgpOwpleHRlcm4gZmxvYXQgZXJmY2YgKGZsb2F0KSB0aHJvdyAoKTsg
ZXh0ZXJuIGZsb2F0IF9fZXJmY2YgKGZsb2F0KSB0aHJvdyAoKTsKZXh0ZXJuIGZsb2F0IGxnYW1t
YWYgKGZsb2F0KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fbGdhbW1hZiAoZmxvYXQpIHRocm93
ICgpOwoKCgpleHRlcm4gZmxvYXQgdGdhbW1hZiAoZmxvYXQpIHRocm93ICgpOyBleHRlcm4gZmxv
YXQgX190Z2FtbWFmIChmbG9hdCkgdGhyb3cgKCk7CgoKCgpleHRlcm4gZmxvYXQgZ2FtbWFmIChm
bG9hdCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX2dhbW1hZiAoZmxvYXQpIHRocm93ICgpOwoK
CgoKCgpleHRlcm4gZmxvYXQgbGdhbW1hZl9yIChmbG9hdCwgaW50ICpfX3NpZ25nYW1wKSB0aHJv
dyAoKTsgZXh0ZXJuIGZsb2F0IF9fbGdhbW1hZl9yIChmbG9hdCwgaW50ICpfX3NpZ25nYW1wKSB0
aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGZsb2F0IHJpbnRmIChmbG9hdCBfX3gpIHRocm93ICgpOyBl
eHRlcm4gZmxvYXQgX19yaW50ZiAoZmxvYXQgX194KSB0aHJvdyAoKTsKCgpleHRlcm4gZmxvYXQg
bmV4dGFmdGVyZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIHRocm93ICgpIF9fYXR0cmlidXRlX18g
KChfX2NvbnN0X18pKTsgZXh0ZXJuIGZsb2F0IF9fbmV4dGFmdGVyZiAoZmxvYXQgX194LCBmbG9h
dCBfX3kpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCmV4dGVybiBmbG9h
dCBuZXh0dG93YXJkZiAoZmxvYXQgX194LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgpIF9fYXR0
cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGZsb2F0IF9fbmV4dHRvd2FyZGYgKGZsb2F0
IF9feCwgbG9uZyBkb3VibGUgX195KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9f
KSk7CgoKCmV4dGVybiBmbG9hdCByZW1haW5kZXJmIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgdGhy
b3cgKCk7IGV4dGVybiBmbG9hdCBfX3JlbWFpbmRlcmYgKGZsb2F0IF9feCwgZmxvYXQgX195KSB0
aHJvdyAoKTsKCgoKZXh0ZXJuIGZsb2F0IHNjYWxiZiAoZmxvYXQgX194LCBmbG9hdCBfX24pIHRo
cm93ICgpOyBleHRlcm4gZmxvYXQgX19zY2FsYmYgKGZsb2F0IF9feCwgZmxvYXQgX19uKSB0aHJv
dyAoKTsKCgoKCmV4dGVybiBmbG9hdCBzY2FsYm5mIChmbG9hdCBfX3gsIGludCBfX24pIHRocm93
ICgpOyBleHRlcm4gZmxvYXQgX19zY2FsYm5mIChmbG9hdCBfX3gsIGludCBfX24pIHRocm93ICgp
OwoKCgpleHRlcm4gaW50IGlsb2diZiAoZmxvYXQgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGludCBf
X2lsb2diZiAoZmxvYXQgX194KSB0aHJvdyAoKTsKCgoKCmV4dGVybiBmbG9hdCBzY2FsYmxuZiAo
ZmxvYXQgX194LCBsb25nIGludCBfX24pIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19zY2FsYmxu
ZiAoZmxvYXQgX194LCBsb25nIGludCBfX24pIHRocm93ICgpOwoKCgpleHRlcm4gZmxvYXQgbmVh
cmJ5aW50ZiAoZmxvYXQgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fbmVhcmJ5aW50ZiAo
ZmxvYXQgX194KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGZsb2F0IHJvdW5kZiAoZmxvYXQgX194KSB0
aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fcm91bmRmIChmbG9hdCBfX3gpIHRocm93ICgpOwoKCgpl
eHRlcm4gZmxvYXQgdHJ1bmNmIChmbG9hdCBfX3gpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChf
X2NvbnN0X18pKTsgZXh0ZXJuIGZsb2F0IF9fdHJ1bmNmIChmbG9hdCBfX3gpIHRocm93ICgpIF9f
YXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCmV4dGVybiBmbG9hdCByZW1xdW9mIChmbG9h
dCBfX3gsIGZsb2F0IF9feSwgaW50ICpfX3F1bykgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX3Jl
bXF1b2YgKGZsb2F0IF9feCwgZmxvYXQgX195LCBpbnQgKl9fcXVvKSB0aHJvdyAoKTsKCgoKCgoK
ZXh0ZXJuIGxvbmcgaW50IGxyaW50ZiAoZmxvYXQgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcg
aW50IF9fbHJpbnRmIChmbG9hdCBfX3gpIHRocm93ICgpOwpleHRlcm4gbG9uZyBsb25nIGludCBs
bHJpbnRmIChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBsb25nIGludCBfX2xscmlu
dGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7CgoKCmV4dGVybiBsb25nIGludCBscm91bmRmIChmbG9h
dCBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBpbnQgX19scm91bmRmIChmbG9hdCBfX3gpIHRo
cm93ICgpOwpleHRlcm4gbG9uZyBsb25nIGludCBsbHJvdW5kZiAoZmxvYXQgX194KSB0aHJvdyAo
KTsgZXh0ZXJuIGxvbmcgbG9uZyBpbnQgX19sbHJvdW5kZiAoZmxvYXQgX194KSB0aHJvdyAoKTsK
CgoKZXh0ZXJuIGZsb2F0IGZkaW1mIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgdGhyb3cgKCk7IGV4
dGVybiBmbG9hdCBfX2ZkaW1mIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgdGhyb3cgKCk7CgoKZXh0
ZXJuIGZsb2F0IGZtYXhmIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgdGhyb3cgKCk7IGV4dGVybiBm
bG9hdCBfX2ZtYXhmIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgdGhyb3cgKCk7CgoKZXh0ZXJuIGZs
b2F0IGZtaW5mIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBf
X2ZtaW5mIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgX19m
cGNsYXNzaWZ5ZiAoZmxvYXQgX192YWx1ZSkgdGhyb3cgKCkKICAgICBfX2F0dHJpYnV0ZV9fICgo
X19jb25zdF9fKSk7CgoKZXh0ZXJuIGludCBfX3NpZ25iaXRmIChmbG9hdCBfX3ZhbHVlKSB0aHJv
dyAoKQogICAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKZXh0ZXJuIGZsb2F0IGZt
YWYgKGZsb2F0IF9feCwgZmxvYXQgX195LCBmbG9hdCBfX3opIHRocm93ICgpOyBleHRlcm4gZmxv
YXQgX19mbWFmIChmbG9hdCBfX3gsIGZsb2F0IF9feSwgZmxvYXQgX196KSB0aHJvdyAoKTsKIyA4
MyAiL3Vzci9pbmNsdWRlL21hdGguaCIgMiAzCiMgOTkgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDMK
IyAxICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoY2FsbHMuaCIgMSAzCiMgNTQgIi91c3IvaW5jbHVk
ZS9iaXRzL21hdGhjYWxscy5oIiAzCmV4dGVybiBsb25nIGRvdWJsZSBhY29zbCAobG9uZyBkb3Vi
bGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fYWNvc2wgKGxvbmcgZG91Ymxl
IF9feCkgdGhyb3cgKCk7CgpleHRlcm4gbG9uZyBkb3VibGUgYXNpbmwgKGxvbmcgZG91YmxlIF9f
eCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2FzaW5sIChsb25nIGRvdWJsZSBfX3gp
IHRocm93ICgpOwoKZXh0ZXJuIGxvbmcgZG91YmxlIGF0YW5sIChsb25nIGRvdWJsZSBfX3gpIHRo
cm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19hdGFubCAobG9uZyBkb3VibGUgX194KSB0aHJv
dyAoKTsKCmV4dGVybiBsb25nIGRvdWJsZSBhdGFuMmwgKGxvbmcgZG91YmxlIF9feSwgbG9uZyBk
b3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fYXRhbjJsIChsb25nIGRv
dWJsZSBfX3ksIGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGxvbmcgZG91Ymxl
IGNvc2wgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2Nv
c2wgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7CgpleHRlcm4gbG9uZyBkb3VibGUgc2lubCAo
bG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fc2lubCAobG9u
ZyBkb3VibGUgX194KSB0aHJvdyAoKTsKCmV4dGVybiBsb25nIGRvdWJsZSB0YW5sIChsb25nIGRv
dWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX190YW5sIChsb25nIGRvdWJs
ZSBfX3gpIHRocm93ICgpOwoKCgpleHRlcm4gdm9pZCBzaW5jb3NsIChsb25nIGRvdWJsZSBfX3gs
IGxvbmcgZG91YmxlICpfX3NpbngsIGxvbmcgZG91YmxlICpfX2Nvc3gpIHRocm93ICgpOyBleHRl
cm4gdm9pZCBfX3NpbmNvc2wgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgKl9fc2lueCwg
bG9uZyBkb3VibGUgKl9fY29zeCkgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBsb25nIGRvdWJsZSBj
b3NobCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fY29z
aGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7CgpleHRlcm4gbG9uZyBkb3VibGUgc2luaGwg
KGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX3NpbmhsIChs
b25nIGRvdWJsZSBfX3gpIHRocm93ICgpOwoKZXh0ZXJuIGxvbmcgZG91YmxlIHRhbmhsIChsb25n
IGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX190YW5obCAobG9uZyBk
b3VibGUgX194KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIGFjb3NobCAobG9uZyBk
b3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fYWNvc2hsIChsb25nIGRv
dWJsZSBfX3gpIHRocm93ICgpOwoKZXh0ZXJuIGxvbmcgZG91YmxlIGFzaW5obCAobG9uZyBkb3Vi
bGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fYXNpbmhsIChsb25nIGRvdWJs
ZSBfX3gpIHRocm93ICgpOwoKZXh0ZXJuIGxvbmcgZG91YmxlIGF0YW5obCAobG9uZyBkb3VibGUg
X194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fYXRhbmhsIChsb25nIGRvdWJsZSBf
X3gpIHRocm93ICgpOwoKCgoKCmV4dGVybiBsb25nIGRvdWJsZSBleHBsIChsb25nIGRvdWJsZSBf
X3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19leHBsIChsb25nIGRvdWJsZSBfX3gp
IHRocm93ICgpOwoKCgpleHRlcm4gbG9uZyBkb3VibGUgZXhwMTBsIChsb25nIGRvdWJsZSBfX3gp
IHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19leHAxMGwgKGxvbmcgZG91YmxlIF9feCkg
dGhyb3cgKCk7CgpleHRlcm4gbG9uZyBkb3VibGUgcG93MTBsIChsb25nIGRvdWJsZSBfX3gpIHRo
cm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19wb3cxMGwgKGxvbmcgZG91YmxlIF9feCkgdGhy
b3cgKCk7CgoKCmV4dGVybiBsb25nIGRvdWJsZSBmcmV4cGwgKGxvbmcgZG91YmxlIF9feCwgaW50
ICpfX2V4cG9uZW50KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fZnJleHBsIChsb25n
IGRvdWJsZSBfX3gsIGludCAqX19leHBvbmVudCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGxvbmcgZG91
YmxlIGxkZXhwbCAobG9uZyBkb3VibGUgX194LCBpbnQgX19leHBvbmVudCkgdGhyb3cgKCk7IGV4
dGVybiBsb25nIGRvdWJsZSBfX2xkZXhwbCAobG9uZyBkb3VibGUgX194LCBpbnQgX19leHBvbmVu
dCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGxvbmcgZG91YmxlIGxvZ2wgKGxvbmcgZG91YmxlIF9feCkg
dGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2xvZ2wgKGxvbmcgZG91YmxlIF9feCkgdGhy
b3cgKCk7CgoKZXh0ZXJuIGxvbmcgZG91YmxlIGxvZzEwbCAobG9uZyBkb3VibGUgX194KSB0aHJv
dyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fbG9nMTBsIChsb25nIGRvdWJsZSBfX3gpIHRocm93
ICgpOwoKCmV4dGVybiBsb25nIGRvdWJsZSBtb2RmbCAobG9uZyBkb3VibGUgX194LCBsb25nIGRv
dWJsZSAqX19pcHRyKSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fbW9kZmwgKGxvbmcg
ZG91YmxlIF9feCwgbG9uZyBkb3VibGUgKl9faXB0cikgdGhyb3cgKCk7CgoKCmV4dGVybiBsb25n
IGRvdWJsZSBleHBtMWwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRv
dWJsZSBfX2V4cG0xbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsKCgpleHRlcm4gbG9uZyBk
b3VibGUgbG9nMXBsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3Vi
bGUgX19sb2cxcGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGxvbmcgZG91
YmxlIGxvZ2JsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUg
X19sb2dibCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsKCgoKCmV4dGVybiBsb25nIGRvdWJs
ZSBleHAybCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9f
ZXhwMmwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGxvbmcgZG91YmxlIGxv
ZzJsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19sb2cy
bCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIHBv
d2wgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSB0aHJvdyAoKTsgZXh0ZXJuIGxv
bmcgZG91YmxlIF9fcG93bCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHRocm93
ICgpOwoKCmV4dGVybiBsb25nIGRvdWJsZSBzcXJ0bCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAo
KTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fc3FydGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7
CgoKCmV4dGVybiBsb25nIGRvdWJsZSBoeXBvdGwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3Vi
bGUgX195KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9faHlwb3RsIChsb25nIGRvdWJs
ZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgdGhyb3cgKCk7CgoKCgpleHRlcm4gbG9uZyBkb3VibGUg
Y2JydGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2Ni
cnRsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCgoKCgpleHRlcm4gbG9uZyBkb3VibGUg
Y2VpbGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2Nl
aWxsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCmV4dGVybiBsb25nIGRvdWJsZSBmYWJz
bCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7
IGV4dGVybiBsb25nIGRvdWJsZSBfX2ZhYnNsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpIF9f
YXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gbG9uZyBkb3VibGUgZmxvb3JsIChs
b25nIGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19mbG9vcmwgKGxv
bmcgZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGxvbmcgZG91YmxlIGZtb2RsIChsb25n
IGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJs
ZSBfX2Ztb2RsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgdGhyb3cgKCk7CgoK
CgpleHRlcm4gaW50IF9faXNpbmZsIChsb25nIGRvdWJsZSBfX3ZhbHVlKSB0aHJvdyAoKSBfX2F0
dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGludCBfX2Zpbml0ZWwgKGxvbmcgZG91
YmxlIF9fdmFsdWUpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCmV4
dGVybiBpbnQgaXNpbmZsIChsb25nIGRvdWJsZSBfX3ZhbHVlKSB0aHJvdyAoKSBfX2F0dHJpYnV0
ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGludCBmaW5pdGVsIChsb25nIGRvdWJsZSBfX3Zh
bHVlKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgoKCgpleHRlcm4g
bG9uZyBkb3VibGUgaW5mbmFubCAoaW50IF9fZXJyb3IpIHRocm93ICgpIF9fYXR0cmlidXRlX18g
KChfX2NvbnN0X18pKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9faW5mbmFubCAoaW50IF9fZXJyb3Ip
IHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gbG9uZyBkb3Vi
bGUgZHJlbWwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSB0aHJvdyAoKTsgZXh0
ZXJuIGxvbmcgZG91YmxlIF9fZHJlbWwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195
KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIHNpZ25pZmljYW5kbCAobG9uZyBkb3Vi
bGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fc2lnbmlmaWNhbmRsIChsb25n
IGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIGNvcHlzaWdubCAo
bG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgpIF9fYXR0cmlidXRlX18g
KChfX2NvbnN0X18pKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fY29weXNpZ25sIChsb25nIGRvdWJs
ZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3Rf
XykpOwoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIG5hbmwgKF9fY29uc3QgY2hhciAqX190YWdiKSB0
aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBsb25nIGRvdWJsZSBf
X25hbmwgKF9fY29uc3QgY2hhciAqX190YWdiKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19j
b25zdF9fKSk7CgoKCgpleHRlcm4gaW50IF9faXNuYW5sIChsb25nIGRvdWJsZSBfX3ZhbHVlKSB0
aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCmV4dGVybiBpbnQgaXNuYW5s
IChsb25nIGRvdWJsZSBfX3ZhbHVlKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9f
KSk7CgoKZXh0ZXJuIGxvbmcgZG91YmxlIGowbCAobG9uZyBkb3VibGUpIHRocm93ICgpOyBleHRl
cm4gbG9uZyBkb3VibGUgX19qMGwgKGxvbmcgZG91YmxlKSB0aHJvdyAoKTsKZXh0ZXJuIGxvbmcg
ZG91YmxlIGoxbCAobG9uZyBkb3VibGUpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19q
MWwgKGxvbmcgZG91YmxlKSB0aHJvdyAoKTsKZXh0ZXJuIGxvbmcgZG91YmxlIGpubCAoaW50LCBs
b25nIGRvdWJsZSkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2pubCAoaW50LCBsb25n
IGRvdWJsZSkgdGhyb3cgKCk7CmV4dGVybiBsb25nIGRvdWJsZSB5MGwgKGxvbmcgZG91YmxlKSB0
aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9feTBsIChsb25nIGRvdWJsZSkgdGhyb3cgKCk7
CmV4dGVybiBsb25nIGRvdWJsZSB5MWwgKGxvbmcgZG91YmxlKSB0aHJvdyAoKTsgZXh0ZXJuIGxv
bmcgZG91YmxlIF9feTFsIChsb25nIGRvdWJsZSkgdGhyb3cgKCk7CmV4dGVybiBsb25nIGRvdWJs
ZSB5bmwgKGludCwgbG9uZyBkb3VibGUpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX195
bmwgKGludCwgbG9uZyBkb3VibGUpIHRocm93ICgpOwoKCgoKCmV4dGVybiBsb25nIGRvdWJsZSBl
cmZsIChsb25nIGRvdWJsZSkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2VyZmwgKGxv
bmcgZG91YmxlKSB0aHJvdyAoKTsKZXh0ZXJuIGxvbmcgZG91YmxlIGVyZmNsIChsb25nIGRvdWJs
ZSkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2VyZmNsIChsb25nIGRvdWJsZSkgdGhy
b3cgKCk7CmV4dGVybiBsb25nIGRvdWJsZSBsZ2FtbWFsIChsb25nIGRvdWJsZSkgdGhyb3cgKCk7
IGV4dGVybiBsb25nIGRvdWJsZSBfX2xnYW1tYWwgKGxvbmcgZG91YmxlKSB0aHJvdyAoKTsKCgoK
ZXh0ZXJuIGxvbmcgZG91YmxlIHRnYW1tYWwgKGxvbmcgZG91YmxlKSB0aHJvdyAoKTsgZXh0ZXJu
IGxvbmcgZG91YmxlIF9fdGdhbW1hbCAobG9uZyBkb3VibGUpIHRocm93ICgpOwoKCgoKZXh0ZXJu
IGxvbmcgZG91YmxlIGdhbW1hbCAobG9uZyBkb3VibGUpIHRocm93ICgpOyBleHRlcm4gbG9uZyBk
b3VibGUgX19nYW1tYWwgKGxvbmcgZG91YmxlKSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGxvbmcg
ZG91YmxlIGxnYW1tYWxfciAobG9uZyBkb3VibGUsIGludCAqX19zaWduZ2FtcCkgdGhyb3cgKCk7
IGV4dGVybiBsb25nIGRvdWJsZSBfX2xnYW1tYWxfciAobG9uZyBkb3VibGUsIGludCAqX19zaWdu
Z2FtcCkgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBsb25nIGRvdWJsZSByaW50bCAobG9uZyBkb3Vi
bGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fcmludGwgKGxvbmcgZG91Ymxl
IF9feCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGxvbmcgZG91YmxlIG5leHRhZnRlcmwgKGxvbmcgZG91
YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25z
dF9fKSk7IGV4dGVybiBsb25nIGRvdWJsZSBfX25leHRhZnRlcmwgKGxvbmcgZG91YmxlIF9feCwg
bG9uZyBkb3VibGUgX195KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7Cgpl
eHRlcm4gbG9uZyBkb3VibGUgbmV4dHRvd2FyZGwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3Vi
bGUgX195KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBsb25n
IGRvdWJsZSBfX25leHR0b3dhcmRsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkg
dGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgpleHRlcm4gbG9uZyBkb3Vi
bGUgcmVtYWluZGVybCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgp
OyBleHRlcm4gbG9uZyBkb3VibGUgX19yZW1haW5kZXJsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcg
ZG91YmxlIF9feSkgdGhyb3cgKCk7CgoKCmV4dGVybiBsb25nIGRvdWJsZSBzY2FsYmwgKGxvbmcg
ZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX19uKSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91Ymxl
IF9fc2NhbGJsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9fbikgdGhyb3cgKCk7CgoK
CgpleHRlcm4gbG9uZyBkb3VibGUgc2NhbGJubCAobG9uZyBkb3VibGUgX194LCBpbnQgX19uKSB0
aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fc2NhbGJubCAobG9uZyBkb3VibGUgX194LCBp
bnQgX19uKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCBpbG9nYmwgKGxvbmcgZG91YmxlIF9feCkg
dGhyb3cgKCk7IGV4dGVybiBpbnQgX19pbG9nYmwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7
CgoKCgpleHRlcm4gbG9uZyBkb3VibGUgc2NhbGJsbmwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBp
bnQgX19uKSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fc2NhbGJsbmwgKGxvbmcgZG91
YmxlIF9feCwgbG9uZyBpbnQgX19uKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIG5l
YXJieWludGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBf
X25lYXJieWludGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKCmV4dGVybiBsb25nIGRv
dWJsZSByb3VuZGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJs
ZSBfX3JvdW5kbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGxvbmcgZG91
YmxlIHRydW5jbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19j
b25zdF9fKSk7IGV4dGVybiBsb25nIGRvdWJsZSBfX3RydW5jbCAobG9uZyBkb3VibGUgX194KSB0
aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgpleHRlcm4gbG9uZyBkb3Vi
bGUgcmVtcXVvbCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3ksIGludCAqX19xdW8p
IHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19yZW1xdW9sIChsb25nIGRvdWJsZSBfX3gs
IGxvbmcgZG91YmxlIF9feSwgaW50ICpfX3F1bykgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBsb25n
IGludCBscmludGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGludCBf
X2xyaW50bCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsKZXh0ZXJuIGxvbmcgbG9uZyBpbnQg
bGxyaW50bCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgbG9uZyBpbnQg
X19sbHJpbnRsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCgpleHRlcm4gbG9uZyBpbnQg
bHJvdW5kbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgaW50IF9fbHJv
dW5kbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsKZXh0ZXJuIGxvbmcgbG9uZyBpbnQgbGxy
b3VuZGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGxvbmcgaW50IF9f
bGxyb3VuZGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKCmV4dGVybiBsb25nIGRvdWJs
ZSBmZGltbCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgpOyBleHRl
cm4gbG9uZyBkb3VibGUgX19mZGltbCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kp
IHRocm93ICgpOwoKCmV4dGVybiBsb25nIGRvdWJsZSBmbWF4bCAobG9uZyBkb3VibGUgX194LCBs
b25nIGRvdWJsZSBfX3kpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19mbWF4bCAobG9u
ZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgpOwoKCmV4dGVybiBsb25nIGRv
dWJsZSBmbWlubCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgpOyBl
eHRlcm4gbG9uZyBkb3VibGUgX19mbWlubCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBf
X3kpIHRocm93ICgpOwoKCgpleHRlcm4gaW50IF9fZnBjbGFzc2lmeWwgKGxvbmcgZG91YmxlIF9f
dmFsdWUpIHRocm93ICgpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVy
biBpbnQgX19zaWduYml0bCAobG9uZyBkb3VibGUgX192YWx1ZSkgdGhyb3cgKCkKICAgICBfX2F0
dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCmV4dGVybiBsb25nIGRvdWJsZSBmbWFsIChsb25n
IGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSwgbG9uZyBkb3VibGUgX196KSB0aHJvdyAoKTsg
ZXh0ZXJuIGxvbmcgZG91YmxlIF9fZm1hbCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBf
X3ksIGxvbmcgZG91YmxlIF9feikgdGhyb3cgKCk7CiMgMTAwICIvdXNyL2luY2x1ZGUvbWF0aC5o
IiAyIDMKIyAxMTMgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDMKZXh0ZXJuIGludCBzaWduZ2FtOwoj
IDE1NCAiL3Vzci9pbmNsdWRlL21hdGguaCIgMwplbnVtCiAgewogICAgRlBfTkFOLAoKICAgIEZQ
X0lORklOSVRFLAoKICAgIEZQX1pFUk8sCgogICAgRlBfU1VCTk9STUFMLAoKICAgIEZQX05PUk1B
TAoKICB9OwojIDI0MCAiL3Vzci9pbmNsdWRlL21hdGguaCIgMwp0eXBlZGVmIGVudW0KewogIF9J
RUVFXyA9IC0xLAogIF9TVklEXywKICBfWE9QRU5fLAogIF9QT1NJWF8sCiAgX0lTT0NfCn0gX0xJ
Ql9WRVJTSU9OX1RZUEU7CgoKCgpleHRlcm4gX0xJQl9WRVJTSU9OX1RZUEUgX0xJQl9WRVJTSU9O
OwojIDI2MyAiL3Vzci9pbmNsdWRlL21hdGguaCIgMwpzdHJ1Y3QgX19leGNlcHRpb24KCgoKICB7
CiAgICBpbnQgdHlwZTsKICAgIGNoYXIgKm5hbWU7CiAgICBkb3VibGUgYXJnMTsKICAgIGRvdWJs
ZSBhcmcyOwogICAgZG91YmxlIHJldHZhbDsKICB9OwoKCmV4dGVybiBpbnQgbWF0aGVyciAoc3Ry
dWN0IF9fZXhjZXB0aW9uICpfX2V4YykgdGhyb3cgKCk7CiMgNDExICIvdXNyL2luY2x1ZGUvbWF0
aC5oIiAzCn0KIyA4ICJjcmVhdGVtYXAuY3BwIiAyCiMgMjEgImNyZWF0ZW1hcC5jcHAiCmNsYXNz
IHBvaW50IHsKICAgIHB1YmxpYzoKICAgICAgICBpbnQgeCx5OwoKICAgICAgICBwb2ludCgpIHsg
fQogICAgICAgIHBvaW50KGludCB4LCBpbnQgeSkgewogICAgICAgICAgICB0aGlzLT54ID0geDsK
ICAgICAgICAgICAgdGhpcy0+eSA9IHk7CiAgICAgICAgfQoKCgoKICAgICAgICBkb3VibGUgZGlz
dGFuY2UoY29uc3QgcG9pbnQmIG90aGVyKSBjb25zdCB7CiAgICAgICAgICAgIGludCBkeCA9IHgt
b3RoZXIueDsKICAgICAgICAgICAgaW50IGR5ID0geS1vdGhlci55OwogICAgICAgICAgICByZXR1
cm4gc3FydChkeCpkeCArIGR5KmR5KTsKICAgICAgICB9CiAgICAgICAgaW50IGlkaXN0KGNvbnN0
IHBvaW50JiBvdGhlcikgY29uc3QgewogICAgICAgICAgICByZXR1cm4gaW50KGRpc3RhbmNlKG90
aGVyKSswLjUpOwogICAgICAgIH0KCiAgICAgICAgcG9pbnQmIG9wZXJhdG9yICs9IChjb25zdCBw
b2ludCYgb3RoZXIpIHsKICAgICAgICAgICAgeCArPSBvdGhlci54OwogICAgICAgICAgICB5ICs9
IG90aGVyLnk7CiAgICAgICAgICAgIHJldHVybiAqdGhpczsKICAgICAgICB9CiAgICAgICAgcG9p
bnQmIG9wZXJhdG9yIC09IChjb25zdCBwb2ludCYgb3RoZXIpIHsKICAgICAgICAgICAgeCAtPSBv
dGhlci54OwogICAgICAgICAgICB5IC09IG90aGVyLnk7CiAgICAgICAgICAgIHJldHVybiAqdGhp
czsKICAgICAgICB9CgogICAgICAgIGJvb2wgb3BlcmF0b3IgPT0gKGNvbnN0IHBvaW50JiBvdGhl
cikgY29uc3QgewogICAgICAgICAgICByZXR1cm4geCA9PSBvdGhlci54ICYmIHkgPT0gb3RoZXIu
eTsKICAgICAgICB9CiAgICAgICAgYm9vbCBvcGVyYXRvciAhPSAoY29uc3QgcG9pbnQmIG90aGVy
KSBjb25zdCB7CiAgICAgICAgICAgIHJldHVybiAhIG9wZXJhdG9yPT0ob3RoZXIpOwogICAgICAg
IH0KfTsKCmNsYXNzIGhlaWdodF9tYXAgewogICAgcHVibGljOgojIDk4ICJjcmVhdGVtYXAuY3Bw
IgogICAgICAgIHR5cGVkZWYgZG91YmxlIHZhbHVlX3R5cGU7CgogICAgICAgIGhlaWdodF9tYXAo
aW50IHcsIGludCBoKSB7CiAgICAgICAgICAgIHdpZHRoXyA9IHc7CiAgICAgICAgICAgIGhlaWdo
dF8gPSBoOwogICAgICAgICAgICBtYXBfID0gbmV3IHZhbHVlX3R5cGVbdypoXTsKICAgICAgICAg
ICAgemVyb19vdXQoKTsKICAgICAgICB9CgogICAgICAgIH5oZWlnaHRfbWFwKCkgewogICAgICAg
ICAgICBkZWxldGUgW10gbWFwXzsKICAgICAgICB9CgoKCgoKICAgICAgICBib29sIHdyaXRlKEZJ
TEUgKm9maWxlKSB7CiAgICAgICAgICAgIHVuc2lnbmVkIHN6ID0gd2lkdGgoKSpoZWlnaHQoKTsK
ICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqZmlsZSA9ICh1bnNpZ25lZCBjaGFyKiltYWxsb2Mo
c3oqc2l6ZW9mKGNoYXIpKTsKICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqcCA9IGZpbGU7CiAg
ICAgICAgICAgIGZvcihpbnQgeT0wOyB5PGhlaWdodCgpOyArK3kpIHsKICAgICAgICAgICAgICAg
IGZvcihpbnQgeD0wOyB4PHdpZHRoKCk7ICsreCkgewogICAgICAgICAgICAgICAgICAgIGludCB2
YWw7CiAgICAgICAgICAgICAgICAgICAgdmFsdWVfdHlwZSByZWFsID0gZ2V0X3h5X3Vuc2FmZSh4
LHkpOwogICAgICAgICAgICAgICAgICAgIGlmKHJlYWwgPD0tMTI4KQogICAgICAgICAgICAgICAg
ICAgICAgICB2YWwgPSAtMTI4OwogICAgICAgICAgICAgICAgICAgIGVsc2UgaWYocmVhbCA+PSAx
MjcpCiAgICAgICAgICAgICAgICAgICAgICAgIHZhbCA9IDEyNzsKICAgICAgICAgICAgICAgICAg
ICBlbHNlIHZhbCA9IGludChyZWFsKTsKICAgICAgICAgICAgICAgICAgICAqcCA9ICh1bnNpZ25l
ZCBjaGFyKSh2YWwrMTI4KTsKICAgICAgICAgICAgICAgICAgICArK3A7CiAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIChmd3JpdGUoZmlsZSwgc2l6ZW9m
KGNoYXIpLCBzeiwgb2ZpbGUpID09IHN6KTsKICAgICAgICB9CgoKCgoKICAgICAgICB2YWx1ZV90
eXBlJiBvcGVyYXRvcigpIChpbnQgeCwgaW50IHkpIHsKICAgICAgICAgICAgZml4X3h5KHgseSk7
CiAgICAgICAgICAgIHJldHVybiBnZXRfeHlfdW5zYWZlKHgseSk7CiAgICAgICAgfQoKCgogICAg
ICAgIGNvbnN0IHZhbHVlX3R5cGUmIG9wZXJhdG9yKCkgKGludCB4LCBpbnQgeSkgY29uc3QgewoK
ICAgICAgICAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8Y29uc3QgdmFsdWVfdHlwZSY+KAogICAgICAg
ICAgICAgICAgICAgIGNvbnN0X2Nhc3Q8aGVpZ2h0X21hcCo+KHRoaXMpLT5vcGVyYXRvcigpICh4
LHkpKTsKICAgICAgICB9CgoKCgogICAgICAgIHZhbHVlX3R5cGUmIG9wZXJhdG9yKCkgKHBvaW50
IHApIHsKICAgICAgICAgICAgcmV0dXJuIG9wZXJhdG9yKCkgKHAueCwgcC55KTsKICAgICAgICB9
CgoKCiAgICAgICAgY29uc3QgdmFsdWVfdHlwZSYgb3BlcmF0b3IoKSAocG9pbnQgcCkgY29uc3Qg
ewogICAgICAgICAgICByZXR1cm4gb3BlcmF0b3IoKSAocC54LCBwLnkpOwogICAgICAgIH0KCgoK
CgoKICAgICAgICBpbnQgd2lkdGgoKSBjb25zdCB7IHJldHVybiB3aWR0aF87IH0KCgoKCgoKICAg
ICAgICBpbnQgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gaGVpZ2h0XzsgfQoKCgoKCgoKICAgICAg
ICB2b2lkIHplcm9fb3V0KCkgewogICAgICAgICAgICBmb3IoaW50IHg9MDsgeDx3aWR0aCgpOyAr
K3gpIHsKICAgICAgICAgICAgICAgIGZvcihpbnQgeT0wOyB5PGhlaWdodCgpOyArK3kpIHsKICAg
ICAgICAgICAgICAgICAgICBnZXRfeHlfdW5zYWZlKHgseSkgPSAwOwogICAgICAgICAgICAgICAg
fQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgIHByaXZhdGU6CiAgICAgICAgaW50IHdpZHRo
XywgaGVpZ2h0XzsKICAgICAgICB2YWx1ZV90eXBlICptYXBfOwoKICAgICAgICB2b2lkIGZpeF94
eShpbnQmIHgsIGludCYgeSkgY29uc3QgewogICAgICAgICAgICB3aGlsZSh4Pj13aWR0aCgpKSB4
LT0gd2lkdGgoKTsKICAgICAgICAgICAgd2hpbGUoeDwwKSB4Kz0gd2lkdGgoKTsKICAgICAgICAg
ICAgd2hpbGUoeT49aGVpZ2h0KCkpIHktPSBoZWlnaHQoKTsKICAgICAgICAgICAgd2hpbGUoeTww
KSB5Kz0gaGVpZ2h0KCk7CiAgICAgICAgfQoKICAgICAgICB2YWx1ZV90eXBlJiBnZXRfeHlfdW5z
YWZlKGludCB4LCBpbnQgeSkgewogICAgICAgICAgICByZXR1cm4gbWFwX1t4K3kqd2lkdGgoKV07
CiAgICAgICAgfQp9OwoKCmNsYXNzIGhtYXBfbW9kaWZpZXIgewogICAgcHVibGljOgogICAgICAg
IGhtYXBfbW9kaWZpZXIoaGVpZ2h0X21hcCYgbWFwKSA6IG1hcF8obWFwKSB7CiAgICAgICAgICAg
IGlzX2RvbmVfID0gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICB2aXJ0dWFsIH5obWFwX21vZGlm
aWVyKCkgeyB9CgoKCgoKCiAgICAgICAgYm9vbCBpc19kb25lKCkgY29uc3QgewogICAgICAgICAg
ICByZXR1cm4gaXNfZG9uZV87CiAgICAgICAgfQoKCgoKCgoKICAgICAgICB2b2lkIGFwcGx5X29u
Y2UoKSB7CiAgICAgICAgICAgIChzdGF0aWNfY2FzdDx2b2lkPiAoKCFpc19kb25lKCkpID8gMCA6
IChfX2Fzc2VydF9mYWlsICgiIWlzX2RvbmUoKSIsICJjcmVhdGVtYXAuY3BwIiwgMjM0LCBfX1BS
RVRUWV9GVU5DVElPTl9fKSwgMCkpKTsKICAgICAgICAgICAgZG9fYXBwbHlfb25jZSgpOwogICAg
ICAgIH0KCiAgICBwcm90ZWN0ZWQ6CgoKCgogICAgICAgIHZpcnR1YWwgdm9pZCBkb19hcHBseV9v
bmNlKCkgPSAwOwojIDI1MiAiY3JlYXRlbWFwLmNwcCIKICAgICAgICBoZWlnaHRfbWFwJiBtYXBf
OwoKCgoKCiAgICAgICAgYm9vbCBpc19kb25lXzsKCn07CgoKY2xhc3MgaG1hcF9yYW5kb21pemUg
OiBwdWJsaWMgaG1hcF9tb2RpZmllciB7CiAgICBwdWJsaWM6CiAgICAgICAgaG1hcF9yYW5kb21p
emUoaGVpZ2h0X21hcCYgbWFwKSA6IGhtYXBfbW9kaWZpZXIobWFwKSB7IH0KCiAgICBwcm90ZWN0
ZWQ6CiAgICAgICAgdmlydHVhbCB2b2lkIGRvX2FwcGx5X29uY2UoKSB7CiAgICAgICAgICAgIGlz
X2RvbmVfID0gdHJ1ZTsKICAgICAgICAgICAgZm9yKGludCB4PTA7IHg8bWFwXy53aWR0aCgpOyAr
K3gpIHsKICAgICAgICAgICAgICAgIGZvcihpbnQgeT0wOyB5PG1hcF8uaGVpZ2h0KCk7ICsreSkg
ewogICAgICAgICAgICAgICAgICAgIGludCBybmQgPSByYW5kb20oKTsKICAgICAgICAgICAgICAg
ICAgICBpbnQgaW5jID0gMDsKICAgICAgICAgICAgICAgICAgICBpbnQgc2lnbiA9IChzaWduZWQo
cm5kKTwwKSA/IC0xIDogMTsKICAgICAgICAgICAgICAgICAgICB3aGlsZShybmQpIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgaW5jICs9IHJuZCAmIDB4ZmY7CiAgICAgICAgICAgICAgICAgICAg
ICAgIHJuZCA+Pj0gODsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAg
bWFwXyh4LHkpID0gc2lnbippbmM7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAg
ICAgICB9Cgp9OwoKCgoKCmNsYXNzIGhtYXBfc21hbGxfY3JhdGVyIDogcHVibGljIGhtYXBfbW9k
aWZpZXIgewogICAgcHVibGljOgogICAgICAgIGhtYXBfc21hbGxfY3JhdGVyIChoZWlnaHRfbWFw
JiBtYXAsIGludCB4LCBpbnQgeSwgaW50IHIpCiAgICAgICAgICAgIDogaG1hcF9tb2RpZmllciht
YXApLCBpbXBhY3QoeCx5KSwgcmFkaXVzKHIpIHsgfQoKICAgIHByb3RlY3RlZDoKICAgICAgICB2
aXJ0dWFsIHZvaWQgZG9fYXBwbHlfb25jZSgpIHsKICAgICAgICAgICAgaXNfZG9uZV8gPSB0cnVl
OwoKICAgICAgICAgICAgZG91YmxlIGV4Y2F2YXRlZF9tYXNzID0gMDsKICAgICAgICAgICAgaW50
IHIgPSByYWRpdXM7CgoKICAgICAgICAgICAgZm9yKGludCBkeD0tcjsgZHg8cjsgKytkeCkgewog
ICAgICAgICAgICAgICAgZm9yKGludCBkeT0tcjsgZHk8cjsgKytkeSkgewogICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHBvaW50IHAoaW1wYWN0LngrZHgsIGltcGFjdC55K2R5KTsKICAgICAgICAg
ICAgICAgICAgICBkb3VibGUgZGlzdCA9IGltcGFjdC5kaXN0YW5jZShwKTsKICAgICAgICAgICAg
ICAgICAgICBpZihkaXN0IDwgcikgewogICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgZGEg
PSBzcXJ0KHIqciAtIGRpc3QqZGlzdCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2F2YXRl
ZF9tYXNzICs9IGRhOwogICAgICAgICAgICAgICAgICAgICAgICBtYXBfKHApIC09IGRhOwogICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQojIDMyMiAi
Y3JlYXRlbWFwLmNwcCIKICAgICAgICAgICAgZG91YmxlIGZhbGxvdXQgPSBleGNhdmF0ZWRfbWFz
cyAvICg0KjMuMTQqcipyKTsKICAgICAgICAgICAgZm9yKGludCBkeD0tMipyOyBkeDwyKnI7ICsr
ZHgpIHsKICAgICAgICAgICAgICAgIGZvcihpbnQgZHk9LTIqcjsgZHk8MipyOyArK2R5KSB7CiAg
ICAgICAgICAgICAgICAgICAgY29uc3QgcG9pbnQgcChpbXBhY3QueCtkeCwgaW1wYWN0LnkrZHkp
OwogICAgICAgICAgICAgICAgICAgIGRvdWJsZSBkaXN0ID0gaW1wYWN0LmRpc3RhbmNlKHApOwog
ICAgICAgICAgICAgICAgICAgIGlmKGRpc3QgPCAyKnIpIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgbWFwXyhwKSArPSBmYWxsb3V0OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCgogICAgcHJpdmF0ZToKICAgICAgICBjb25z
dCBwb2ludCBpbXBhY3Q7CiAgICAgICAgY29uc3QgaW50IHJhZGl1czsKfTsKCgpjbGFzcyBobWFw
X3JpdmVyIDogcHVibGljIGhtYXBfbW9kaWZpZXIgewogICAgcHVibGljOgogICAgICAgIGhtYXBf
cml2ZXIoaGVpZ2h0X21hcCYgbWFwLCBpbnQgeCwgaW50IHksIGludCBtYXhhZ2UpCiAgICAgICAg
ICAgIDogaG1hcF9tb2RpZmllcihtYXApLCBoZWFkd2F0ZXJzXyh4LHkpLCB0aW1lc2xlZnRfKG1h
eGFnZSkgeyB9CgogICAgcHJvdGVjdGVkOgogICAgICAgIHZpcnR1YWwgdm9pZCBkb19hcHBseV9v
bmNlKCkgewogICAgICAgICAgICB0aW1lc2xlZnRfLS07CiAgICAgICAgICAgIGlmKHRpbWVzbGVm
dF8gPT0gMCkKICAgICAgICAgICAgICAgIGlzX2RvbmVfID0gdHJ1ZTsKCiAgICAgICAgICAgIHBv
aW50IG1vdXRoKGhlYWR3YXRlcnNfKTsKICAgICAgICAgICAgcG9pbnQgbmV4dDsKICAgICAgICAg
ICAgZG91YmxlIHNlZGltZW50ID0gMDsKICAgICAgICAgICAgZG8gewogICAgICAgICAgICAgICAg
bmV4dCA9IHdoZXJldG8obW91dGgpOwogICAgICAgICAgICAgICAgZG91YmxlIGRlbHRhX3NlZGlt
ZW50ID0gY2FsY19zZWRpbWVudChtb3V0aCwgbmV4dCwgc2VkaW1lbnQpOwogICAgICAgICAgICAg
ICAgbWFwXyhtb3V0aCkgLT0gZGVsdGFfc2VkaW1lbnQ7CiAgICAgICAgICAgICAgICBzZWRpbWVu
dCArPSBkZWx0YV9zZWRpbWVudDsKCiAgICAgICAgICAgICAgICBtb3V0aCArPSBuZXh0OwogICAg
ICAgICAgICAgICAgcG9pbnQgY3VydmUgPSBtb3V0aDsKICAgICAgICAgICAgICAgIGN1cnZlICs9
IG5leHQ7CiAgICAgICAgICAgICAgICBpZihtYXBfKGN1cnZlKSA+IG1hcF8obW91dGgpKSB7Cgog
ICAgICAgICAgICAgICAgICAgIG1hcF8oY3VydmUpIC0tOwogICAgICAgICAgICAgICAgICAgIHNl
ZGltZW50ICsrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICB3
aGlsZShzZWRpbWVudCA+IDAgfHwgbmV4dCAhPSBwb2ludCgwLDApKTsKICAgICAgICB9CgoKICAg
IHByaXZhdGU6CiAgICAgICAgc3RhdGljIHVuc2lnbmVkIHJhbmRvbV9zYW1wbGUodW5zaWduZWQg
KmFycmF5LCB1bnNpZ25lZCBzaXplKSB7CiAgICAgICAgICAgIChzdGF0aWNfY2FzdDx2b2lkPiAo
KHNpemU+MCkgPyAwIDogKF9fYXNzZXJ0X2ZhaWwgKCJzaXplPjAiLCAiY3JlYXRlbWFwLmNwcCIs
IDM3NywgX19QUkVUVFlfRlVOQ1RJT05fXyksIDApKSk7CiAgICAgICAgICAgIHVuc2lnbmVkIGlu
dGVydmFsID0gMTAwIC8gc2l6ZTsKICAgICAgICAgICAgaW50IHggPSByYW5kb20oKSAlIDEwMDsK
ICAgICAgICAgICAgZm9yKHVuc2lnbmVkIGk9MDsgaTxzaXplOyArK2kpIHsKICAgICAgICAgICAg
ICAgIHggLT0gaW50ZXJ2YWw7CiAgICAgICAgICAgICAgICBpZih4PDApCiAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGFycmF5W2ldOwogICAgICAgICAgICB9CgoKICAgICAgICAgICAgcmV0dXJu
IGFycmF5WzBdOwogICAgICAgIH0KCgoKICAgICAgICBwb2ludCB3aGVyZXRvKHBvaW50IG1vdXRo
KSB7CiAgICAgICAgICAgIHN0YXRpYyBjb25zdCBwb2ludCBuZWlnaGJvdXJzW10gPSB7CiAgICAg
ICAgICAgICAgICBwb2ludCggMCwgMCksCiAgICAgICAgICAgICAgICBwb2ludCgtMSwgMCksCiAg
ICAgICAgICAgICAgICBwb2ludCggMCwgLTEpLAogICAgICAgICAgICAgICAgcG9pbnQoIDAsIDEp
LAogICAgICAgICAgICAgICAgcG9pbnQoIDEsIDApCiAgICAgICAgICAgIH07CiAgICAgICAgICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBubmVpZ2hib3VycyA9CiAgICAgICAgICAgICAgICBzaXpl
b2YobmVpZ2hib3Vycykvc2l6ZW9mKHBvaW50KTsKICAgICAgICAgICAgdW5zaWduZWQgZG93bmhp
bGxbbm5laWdoYm91cnNdOwogICAgICAgICAgICB1bnNpZ25lZCBuZG93bmhpbGwgPSAwOwoKCiAg
ICAgICAgICAgIGRvdWJsZSBtYXhncmFkZSA9IC0xOwoKCiAgICAgICAgICAgIGZvcih1bnNpZ25l
ZCBpPTA7IGk8bm5laWdoYm91cnM7ICsraSkgewogICAgICAgICAgICAgICAgcG9pbnQgbmVpZ2gg
PSBtb3V0aDsKICAgICAgICAgICAgICAgIG5laWdoICs9IG5laWdoYm91cnNbaV07CiAgICAgICAg
ICAgICAgICBkb3VibGUgZ3JhZGUgPSBtYXBfKG1vdXRoKSAtIG1hcF8obmVpZ2gpOwogICAgICAg
ICAgICAgICAgaWYoZ3JhZGUgPiBtYXhncmFkZSkgewogICAgICAgICAgICAgICAgICAgIG1heGdy
YWRlID0gZ3JhZGU7CiAgICAgICAgICAgICAgICAgICAgbmRvd25oaWxsID0gMDsKICAgICAgICAg
ICAgICAgICAgICBwcmludGYoIiglZCwlZCkgaXMgYmVzdCBhdCAlbGZcbiIsIG5laWdoLngsIG5l
aWdoLnksIGdyYWRlKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmKGdyYWRl
ID09IG1heGdyYWRlKSB7CiAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCIoJWQsJWQpIGlzIG9r
IGF0ICVsZlxuIiwgbmVpZ2gueCwgbmVpZ2gueSwgZ3JhZGUpOwogICAgICAgICAgICAgICAgICAg
IGRvd25oaWxsW25kb3duaGlsbCsrXSA9IGk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
IH0KCgogICAgICAgICAgICByZXR1cm4gbmVpZ2hib3Vyc1tyYW5kb21fc2FtcGxlKGRvd25oaWxs
LCBuZG93bmhpbGwpXTsKICAgICAgICB9CgoKICAgICAgICBkb3VibGUgY2FsY19zZWRpbWVudChw
b2ludCBtb3V0aCwgcG9pbnQgbmV4dCwgZG91YmxlIHNlZGltZW50KSB7CiAgICAgICAgICAgIHBv
aW50IG5leHRtb3V0aCA9IG1vdXRoOwogICAgICAgICAgICBuZXh0bW91dGggKz0gbmV4dDsKICAg
ICAgICAgICAgZG91YmxlIGdyYWRlID0gbWFwXyhtb3V0aCkgLSBtYXBfKG5leHRtb3V0aCk7CiAg
ICAgICAgICAgIGRvdWJsZSBkZWx0YSA9IGdyYWRlIC0gRVFVSUxJQlJJVU07CgoKICAgICAgICAg
ICAgaWYoZGVsdGEgKyBzZWRpbWVudCA+IE1BWF9TRURJTUVOVF9MT0FEKQogICAgICAgICAgICAg
ICAgZGVsdGEgPSBNQVhfU0VESU1FTlRfTE9BRCAtIHNlZGltZW50OwoKCiAgICAgICAgICAgIGlm
KGRlbHRhICsgc2VkaW1lbnQgPCAwKQogICAgICAgICAgICAgICAgZGVsdGEgPSAtc2VkaW1lbnQ7
CgogICAgICAgICAgICByZXR1cm4gZGVsdGE7CiAgICAgICAgfQoKCgoKICAgIHB1YmxpYzoKICAg
ICAgICBzdGF0aWMgZG91YmxlIEVRVUlMSUJSSVVNOwogICAgICAgIHN0YXRpYyBkb3VibGUgTUFY
X1NFRElNRU5UX0xPQUQ7CgogICAgcHJpdmF0ZToKICAgICAgICBjb25zdCBwb2ludCBoZWFkd2F0
ZXJzXzsKICAgICAgICBpbnQgdGltZXNsZWZ0XzsKfTsKCmRvdWJsZSBobWFwX3JpdmVyOjpFUVVJ
TElCUklVTSA9IDU7CmRvdWJsZSBobWFwX3JpdmVyOjpNQVhfU0VESU1FTlRfTE9BRCA9IDEwMDsK
IyA0NjkgImNyZWF0ZW1hcC5jcHAiCmludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgewog
ICAgdW5zaWduZWQgeCwgeSwgYWdlLCBubW9kczsKICAgIGlmKGFyZ2MgPCA0KSB7CiAgICAgICAg
ZnByaW50ZihzdGRlcnIsICJVU0FHRTogY3JlYXRlbWFwIHggeSBhZ2UgW25tb2RzPXgqeS8yMF1c
biIpOwogICAgICAgIGV4aXQoMSk7CiAgICB9CiAgICB4ID0gYXRvaShhcmd2WzFdKTsKICAgIHkg
PSBhdG9pKGFyZ3ZbMl0pOwogICAgYWdlPWF0b2koYXJndlszXSk7CiAgICBpZihhcmdjID49IDUp
CiAgICAgICAgbm1vZHMgPSBhdG9pKGFyZ3ZbNF0pOwogICAgZWxzZQogICAgICAgIG5tb2RzID0g
eCp5LzIwOwogICAgaGVpZ2h0X21hcCAqbWFwID0gbmV3IGhlaWdodF9tYXAoeCx5KTsKICAgIHNl
dGJ1ZihzdGRvdXQsIDApOwoKICAgIGhtYXBfbW9kaWZpZXIgKm1vZGlmaWVyc1tubW9kc107CiAg
ICBtZW1zZXQobW9kaWZpZXJzLCAwLCBubW9kcypzaXplb2YoaG1hcF9tb2RpZmllciopKTsKICAg
IGZvcih1bnNpZ25lZCB5ZWFyPTA7IHllYXI8YWdlOyArK3llYXIpIHsKICAgICAgICBwcmludGYo
InllYXIgJWRcbiIsIHllYXIpOwogICAgICAgIGZvcih1bnNpZ25lZCBpPTA7IGk8bm1vZHM7ICsr
aSkgewogICAgICAgICAgICBpZighbW9kaWZpZXJzW2ldKSB7CiAgICAgICAgICAgICAgICBpbnQg
d2hhdCA9IHJhbmRvbSgpICUgMTAwOwogICAgICAgICAgICAgICAgaWYod2hhdCA8IDUwKSB7Cgog
ICAgICAgICAgICAgICAgICAgIGludCBjeCA9IHJhbmRvbSgpJXg7CiAgICAgICAgICAgICAgICAg
ICAgaW50IGN5ID0gcmFuZG9tKCkleTsKICAgICAgICAgICAgICAgICAgICBpbnQgY3IgPSByYW5k
b20oKSUxMDsKICAgICAgICAgICAgICAgICAgICBtb2RpZmllcnNbaV0gPSBuZXcgaG1hcF9zbWFs
bF9jcmF0ZXIoKm1hcCwgY3gsIGN5LCBjcik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAgICAgaW50IHJ4ID0gcmFuZG9tKCkleDsKICAg
ICAgICAgICAgICAgICAgICBpbnQgcnkgPSByYW5kb20oKSV5OwogICAgICAgICAgICAgICAgICAg
IGludCByaXZlcl9hZ2U9IHJhbmRvbSgpJSgxKyhhZ2UteWVhcikvMik7CiAgICAgICAgICAgICAg
ICAgICAgbW9kaWZpZXJzW2ldID0gbmV3IGhtYXBfcml2ZXIoKm1hcCwgcngsIHJ5LCByaXZlcl9h
Z2UpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIG1vZGlmaWVy
c1tpXS0+YXBwbHlfb25jZSgpOwogICAgICAgICAgICBpZihtb2RpZmllcnNbaV0tPmlzX2RvbmUo
KSkgewogICAgICAgICAgICAgICAgZGVsZXRlIG1vZGlmaWVyc1tpXTsKICAgICAgICAgICAgICAg
IG1vZGlmaWVyc1tpXSA9IDA7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgoKICAgIGZv
cih1bnNpZ25lZCBpPTA7IGk8bm1vZHM7ICsraSkgewogICAgICAgIGRlbGV0ZSBtb2RpZmllcnNb
aV07CiAgICAgICAgbW9kaWZpZXJzW2ldID0gMDsKICAgIH0KCiAgICBtYXAtPndyaXRlKHN0ZG91
dCk7CiAgICBkZWxldGUgbWFwOwp9Cg==


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]