c/2392: mcpu=ultrasparc causes internal compiler error signal 11

somervil@cadvision.com somervil@cadvision.com
Mon Mar 26 07:56:00 GMT 2001


>Number:         2392
>Category:       c
>Synopsis:       mcpu=ultrasparc causes internal compiler error signal 11
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Mon Mar 26 07:56:01 PST 2001
>Closed-Date:
>Last-Modified:
>Originator:     robert somerville
>Release:        gcc-2.95.3 solaris-sparc-2.7
>Organization:
>Environment:
[spruce]{525}[misc]: uname -a
SunOS spruce 5.7 Generic_106541-14 sun4u sparc SUNW,Ultra-4
>Description:
 gcc -o prinrval.o -c -Os -mcpu=ultrasparc -Wa,-xarch=v8plus -pthreads -Os -mcpu=ultrasparc -Wa,-xarch=v8plus -fPIC -U_DEBUG -UDEBUG -DUSE_AUTOCONF=1 -DNDEBUG=1 -DXP_UNIX=1 -DSVR4=1 -DSYSV=1 -D__svr4=1 -D__svr4__=1 -DSOLARIS=1 -D_PR_HAVE_OFF64_T=1 -D_LARGEFILE64_SOURCE=1 -DHAVE_LCHOWN=1 -DHAVE_STRERROR=1 -D_REENTRANT=1 -D_REENTRANT=1 -DHAVE_POINTER_LOCALTIME_R=1 -DFORCE_PR_LOG -D_PR_PTHREADS -UHAVE_CVAR_BUILT_ON_SEM -D_NSPR_BUILD_ -I/home/red1/data/mozilla/dist/include -I../../../pr/include -I../../../pr/include/private prinrval.c -save-temps
gcc: Internal compiler error: program cc1 got fatal signal 11
>How-To-Repeat:
compile above code with -mcpu=ultrasparc or v9
>Fix:

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

IyAxICJwcmlucnZhbC5jIgogCiAKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCiMgMSAiLi4vLi4vLi4v
cHIvaW5jbHVkZS9wcml2YXRlL3ByaW1wbC5oIiAxCiAKIAoKCgoKCgoKCgoKCgoKCgoKCgoKIAoK
CgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL3B0aHJlYWQuaCIgMSAzCiAKCgoKCgoKCiNwcmFnbWEg
aWRlbnQJIkAoIylwdGhyZWFkLmgJMS4yNgk5OC8wNC8xMiBTTUkiCgoKIyAxICIvdXNyL2luY2x1
ZGUvc3lzL3R5cGVzLmgiIDEgMwogCiAKCiAKIAogCgogCgoKCgoKCgojcHJhZ21hIGlkZW50CSJA
KCMpdHlwZXMuaAkxLjYzCTk4LzA0LzI4IFNNSSIKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9pc2Ff
ZGVmcy5oIiAxIDMKIAoKCgoKCgoKI3ByYWdtYSBpZGVudAkiQCgjKWlzYV9kZWZzLmgJMS4xNgk5
OS8wNS8yNSBTTUkiCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgojIDIxOCAi
L3Vzci9pbmNsdWRlL3N5cy9pc2FfZGVmcy5oIiAzCgoKIAoKCgoKCgogCgoKCgoKCiAKCgoKCgoK
CgoKIAoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgogCgoKCgoKIAoKCgoKCgoKIAoKCgoKCgoKCiAK
CgoKIyAzMTYgIi91c3IvaW5jbHVkZS9zeXMvaXNhX2RlZnMuaCIgMwoKCiAKCgoKCgoKCgoKCgoK
CgoKIyAxOCAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMKCiMgMSAiL3Vzci9pbmNsdWRl
L3N5cy9mZWF0dXJlX3Rlc3RzLmgiIDEgMwogCgoKCgogCiAKIAoKCgoKI3ByYWdtYSBpZGVudAki
QCgjKWZlYXR1cmVfdGVzdHMuaAkxLjE3CTk3LzEyLzA0IFNNSSIKCgoKCgoKCiAKCgoKCgoKCgoK
CgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyAxOSAiL3Vzci9pbmNsdWRl
L3N5cy90eXBlcy5oIiAyIDMKCgogCgoKIyAxICIvdXNyL2luY2x1ZGUvc3lzL21hY2h0eXBlcy5o
IiAxIDMKIAogCgogCiAKIAoKIAoKCgoKCgoKI3ByYWdtYSBpZGVudAkiQCgjKW1hY2h0eXBlcy5o
CTEuMTIJOTYvMDgvMDEgU01JIgoKCgoKCgoKIAoKCgoKCgoKCnR5cGVkZWYgc3RydWN0ICBfcGh5
c2Fkcl90IHsgaW50IHJbMV07IH0gKnBoeXNhZHJfdDsKCnR5cGVkZWYJc3RydWN0CV9sYWJlbF90
IHsgbG9uZyB2YWxbMl07IH0gbGFiZWxfdDsKCgoKdHlwZWRlZgl1bnNpZ25lZCBjaGFyCWxvY2tf
dDsJCSAKCgoKCgoKIyAyNCAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMKCgogCgoKCgoK
CgoKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9pbnRfdHlwZXMuaCIgMSAzCiAKCgoKCgoKCiNwcmFn
bWEgaWRlbnQJIkAoIylpbnRfdHlwZXMuaAkxLjYJOTcvMDgvMjAgU01JIgoKIAoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgp0eXBlZGVmIGNoYXIJCQlp
bnQ4X3Q7CgoKCgoKdHlwZWRlZiBzaG9ydAkJCWludDE2X3Q7CnR5cGVkZWYgaW50CQkJaW50MzJf
dDsKCgoKCnR5cGVkZWYJbG9uZyBsb25nCQlpbnQ2NF90OwoKCgp0eXBlZGVmIHVuc2lnbmVkIGNo
YXIJCXVpbnQ4X3Q7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQJCXVpbnQxNl90Owp0eXBlZGVmIHVu
c2lnbmVkIGludAkJdWludDMyX3Q7CgoKCgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZwl1aW50
NjRfdDsKCgoKIAoKCgoKdHlwZWRlZiBpbnQ2NF90CQkJaW50bWF4X3Q7CnR5cGVkZWYgdWludDY0
X3QJCXVpbnRtYXhfdDsKCgoKCgogCgoKCgoKCgoKdHlwZWRlZglpbnQJCQlpbnRwdHJfdDsKdHlw
ZWRlZgl1bnNpZ25lZCBpbnQJCXVpbnRwdHJfdDsKCgogCgoKCgp0eXBlZGVmIGNoYXIJCQlpbnRf
bGVhc3Q4X3Q7CgoKCgoKdHlwZWRlZiBzaG9ydAkJCWludF9sZWFzdDE2X3Q7CnR5cGVkZWYgaW50
CQkJaW50X2xlYXN0MzJfdDsKCgoKCnR5cGVkZWYgbG9uZyBsb25nCQlpbnRfbGVhc3Q2NF90OwoK
Cgp0eXBlZGVmIHVuc2lnbmVkIGNoYXIJCXVpbnRfbGVhc3Q4X3Q7CnR5cGVkZWYgdW5zaWduZWQg
c2hvcnQJCXVpbnRfbGVhc3QxNl90Owp0eXBlZGVmIHVuc2lnbmVkIGludAkJdWludF9sZWFzdDMy
X3Q7CgoKCgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZwl1aW50X2xlYXN0NjRfdDsKCgoKCgoK
CgojIDM2ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMwoKCgoKCgoKCgoKCiAKCgoKCgp0
eXBlZGVmCWxvbmcgbG9uZwkJbG9uZ2xvbmdfdDsKdHlwZWRlZgl1bnNpZ25lZCBsb25nIGxvbmcJ
dV9sb25nbG9uZ190OwojIDY1ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMKCgogCgoKCgoK
CgoKdHlwZWRlZiBsb25nCQl0X3NjYWxhcl90OwkgCnR5cGVkZWYgdW5zaWduZWQgbG9uZwl0X3Vz
Y2FsYXJfdDsKCgogCgoKdHlwZWRlZgl1bnNpZ25lZCBjaGFyCXVjaGFyX3Q7CnR5cGVkZWYJdW5z
aWduZWQgc2hvcnQJdXNob3J0X3Q7CnR5cGVkZWYJdW5zaWduZWQgaW50CXVpbnRfdDsKdHlwZWRl
Zgl1bnNpZ25lZCBsb25nCXVsb25nX3Q7Cgp0eXBlZGVmCWNoYXIJCSpjYWRkcl90OwkgCnR5cGVk
ZWYJbG9uZwkJZGFkZHJfdDsJIAp0eXBlZGVmCXNob3J0CQljbnRfdDsJCSAKCgp0eXBlZGVmCXVs
b25nX3QJCXBhZGRyX3Q7CSAKCgoKCgoKCnR5cGVkZWYJaW50CXB0cmRpZmZfdDsJCSAKCgoKIAoK
CnR5cGVkZWYJdWxvbmdfdAkJcGZuX3Q7CQkgCnR5cGVkZWYJdWxvbmdfdAkJcGdjbnRfdDsJIAp0
eXBlZGVmCWxvbmcJCXNwZ2NudF90OwkgCgp0eXBlZGVmCXVjaGFyX3QJCXVzZV90OwkJIAp0eXBl
ZGVmCXNob3J0CQlzeXNpZF90Owp0eXBlZGVmCXNob3J0CQlpbmRleF90Owp0eXBlZGVmIHZvaWQJ
CSp0aW1lb3V0X2lkX3Q7CSAKdHlwZWRlZiB2b2lkCQkqYnVmY2FsbF9pZF90OwkgCgogCgoKCgoK
CgoKCgoKdHlwZWRlZiBsb25nCQlvZmZfdDsJCSAKCgoKCgoKCgp0eXBlZGVmIGxvbmdsb25nX3QJ
b2ZmNjRfdDsJIAoKCgoKCgp0eXBlZGVmIHVsb25nX3QJCWlub190OwkJIAp0eXBlZGVmIGxvbmcJ
CWJsa2NudF90OwkgCnR5cGVkZWYgdWxvbmdfdAkJZnNibGtjbnRfdDsJIAp0eXBlZGVmIHVsb25n
X3QJCWZzZmlsY250X3Q7CSAKCgoKCgoKCgoKCgoKCgp0eXBlZGVmIHVfbG9uZ2xvbmdfdAlpbm82
NF90OwkgCnR5cGVkZWYgbG9uZ2xvbmdfdAlibGtjbnQ2NF90OwkgCnR5cGVkZWYgdV9sb25nbG9u
Z190CWZzYmxrY250NjRfdDsJIAp0eXBlZGVmIHVfbG9uZ2xvbmdfdAlmc2ZpbGNudDY0X3Q7CSAK
CgoKCgoKdHlwZWRlZglsb25nCQlibGtzaXplX3Q7CSAKCgoKCgp0eXBlZGVmIGVudW0geyBCX0ZB
TFNFLCBCX1RSVUUgfSBib29sZWFuX3Q7CgoKIAoKCgoKCgoKdHlwZWRlZiBpbnQ2NF90CQlwYWQ2
NF90Owp0eXBlZGVmCXVpbnQ2NF90CXVwYWQ2NF90OwojIDIwMiAiL3Vzci9pbmNsdWRlL3N5cy90
eXBlcy5oIiAzCgoKdHlwZWRlZglsb25nbG9uZ190CW9mZnNldF90Owp0eXBlZGVmCXVfbG9uZ2xv
bmdfdAl1X29mZnNldF90Owp0eXBlZGVmIHVfbG9uZ2xvbmdfdAlsZW5fdDsKdHlwZWRlZglsb25n
bG9uZ190CWRpc2thZGRyX3Q7CgogCgoKCgojIDIyMiAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5o
IiAzCgoKCnR5cGVkZWYgdW5pb24gewoJb2Zmc2V0X3QJX2Y7CSAKCXN0cnVjdCB7CgkJaW50MzJf
dAlfdTsJIAoJCWludDMyX3QJX2w7CSAKCX0gX3A7Cn0gbGxvZmZfdDsKCgojIDI0MiAiL3Vzci9p
bmNsdWRlL3N5cy90eXBlcy5oIiAzCgoKCnR5cGVkZWYgdW5pb24gewoJZGlza2FkZHJfdAlfZjsJ
IAoJc3RydWN0IHsKCQlpbnQzMl90CV91OwkgCgkJaW50MzJfdAlfbDsJIAoJfSBfcDsKfSBsbGRh
ZGRyX3Q7CgoKdHlwZWRlZiB1aW50X3Qga19mbHRzZXRfdDsJIAoKIAoKCgoKCgoKCgoKCgoKdHlw
ZWRlZglsb25nCQlpZF90OwkJIAoKCiAKCgoKdHlwZWRlZiB1aW50X3QJCXVzZWNvbmRzX3Q7CSAK
CgoKdHlwZWRlZiBsb25nCXN1c2Vjb25kc190OwkgCgoKIAoKCgoKCgp0eXBlZGVmIHVsb25nX3QJ
bWFqb3JfdDsJIAp0eXBlZGVmIHVsb25nX3QJbWlub3JfdDsJIAoKCiAKCgp0eXBlZGVmIHNob3J0
CXByaV90OwoKIAoKCgoKCgoKCgoKdHlwZWRlZgl1c2hvcnRfdCBvX21vZGVfdDsJCSAKdHlwZWRl
ZiBzaG9ydAlvX2Rldl90OwkJIAp0eXBlZGVmCXVzaG9ydF90IG9fdWlkX3Q7CQkgCnR5cGVkZWYJ
b191aWRfdAlvX2dpZF90OwkJIAp0eXBlZGVmCXNob3J0CW9fbmxpbmtfdDsJCSAKdHlwZWRlZiBz
aG9ydAlvX3BpZF90OwkJIAp0eXBlZGVmIHVzaG9ydF90IG9faW5vX3Q7CQkgCgoKIAoKCnR5cGVk
ZWYJaW50CWtleV90OwkJCSAKCgoKdHlwZWRlZgl1bG9uZ190CW1vZGVfdDsJCQkgCgoKCgoKCgp0
eXBlZGVmCWxvbmcJdWlkX3Q7CQkJIAoKCgp0eXBlZGVmCXVpZF90CWdpZF90OwkJCSAKCiAKCgoK
CnR5cGVkZWYJdW5zaWduZWQgaW50CXB0aHJlYWRfdDsJIAp0eXBlZGVmCXVuc2lnbmVkIGludAlw
dGhyZWFkX2tleV90OwkgCgp0eXBlZGVmCXN0cnVjdAlfcHRocmVhZF9tdXRleCB7CQkgCglzdHJ1
Y3QgewoJCXVpbnQ4X3QJCV9fcHRocmVhZF9tdXRleF9mbGFnWzRdOwoJCXVpbnQzMl90IAlfX3B0
aHJlYWRfbXV0ZXhfdHlwZTsKCX0gX19wdGhyZWFkX211dGV4X2ZsYWdzOwoJdW5pb24gewoJCXN0
cnVjdCB7CgkJCXVpbnQ4X3QJX19wdGhyZWFkX211dGV4X3BhZFs4XTsKCQl9IF9fcHRocmVhZF9t
dXRleF9sb2NrNjQ7CgkJdXBhZDY0X3QgX19wdGhyZWFkX211dGV4X293bmVyNjQ7Cgl9IF9fcHRo
cmVhZF9tdXRleF9sb2NrOwoJdXBhZDY0X3QgX19wdGhyZWFkX211dGV4X2RhdGE7Cn0gcHRocmVh
ZF9tdXRleF90OwoKdHlwZWRlZglzdHJ1Y3QJX3B0aHJlYWRfY29uZCB7CQkgCglzdHJ1Y3QgewoJ
CXVpbnQ4X3QJCV9fcHRocmVhZF9jb25kX2ZsYWdbNF07CgkJdWludDMyX3QgCV9fcHRocmVhZF9j
b25kX3R5cGU7Cgl9IF9fcHRocmVhZF9jb25kX2ZsYWdzOwoJdXBhZDY0X3QgX19wdGhyZWFkX2Nv
bmRfZGF0YTsKfSBwdGhyZWFkX2NvbmRfdDsKCiAKCgp0eXBlZGVmCXN0cnVjdCBfcHRocmVhZF9y
d2xvY2sgewkgCglpbnQzMl90CQlfX3B0aHJlYWRfcndsb2NrX3JlYWRlcnM7Cgl1aW50MTZfdAlf
X3B0aHJlYWRfcndsb2NrX3R5cGU7Cgl1aW50MTZfdAlfX3B0aHJlYWRfcndsb2NrX21hZ2ljOwoJ
dXBhZDY0X3QJX19wdGhyZWFkX3J3bG9ja19wYWQxWzNdOwoJdXBhZDY0X3QJX19wdGhyZWFkX3J3
bG9ja19wYWQyWzJdOwoJdXBhZDY0X3QJX19wdGhyZWFkX3J3bG9ja19wYWQzWzJdOwp9IHB0aHJl
YWRfcndsb2NrX3Q7CgogCgoKdHlwZWRlZiBzdHJ1Y3QgX3B0aHJlYWRfYXR0ciB7Cgl2b2lkCSpf
X3B0aHJlYWRfYXR0cnA7Cn0gcHRocmVhZF9hdHRyX3Q7CgoKIAoKCnR5cGVkZWYgc3RydWN0IF9w
dGhyZWFkX211dGV4YXR0ciB7Cgl2b2lkCSpfX3B0aHJlYWRfbXV0ZXhhdHRycDsKfSBwdGhyZWFk
X211dGV4YXR0cl90OwoKCiAKCgp0eXBlZGVmIHN0cnVjdCBfcHRocmVhZF9jb25kYXR0ciB7Cgl2
b2lkCSpfX3B0aHJlYWRfY29uZGF0dHJwOwp9IHB0aHJlYWRfY29uZGF0dHJfdDsKCiAKCgp0eXBl
ZGVmCXN0cnVjdAlfb25jZSB7Cgl1cGFkNjRfdAlfX3B0aHJlYWRfb25jZV9wYWRbNF07Cn0gcHRo
cmVhZF9vbmNlX3Q7CgogCgoKCnR5cGVkZWYgc3RydWN0IF9wdGhyZWFkX3J3bG9ja2F0dHIgewoJ
dm9pZAkqX19wdGhyZWFkX3J3bG9ja2F0dHJwOwp9IHB0aHJlYWRfcndsb2NrYXR0cl90OwoKdHlw
ZWRlZiB1bG9uZ190CWRldl90OwkJCSAKCgoKCgp0eXBlZGVmCXVsb25nX3QJbmxpbmtfdDsJCSAK
dHlwZWRlZglsb25nCXBpZF90OwkJCSAKCgoKCgoKCnR5cGVkZWYJdWludF90CXNpemVfdDsJCSAK
CgoKCgoKCgp0eXBlZGVmIGludAlzc2l6ZV90OwkgCgoKCgoKdHlwZWRlZglsb25nCQl0aW1lX3Q7
CSAKCgoKCnR5cGVkZWYJbG9uZwkJY2xvY2tfdDsgIAoKCgoKdHlwZWRlZglpbnQJY2xvY2tpZF90
OwkgCgoKCgp0eXBlZGVmCWludAl0aW1lcl90OwkgCgoKCgoKIAp0eXBlZGVmCXVuc2lnbmVkIGNo
YXIJdW5jaGFyOwp0eXBlZGVmCXVuc2lnbmVkIHNob3J0CXVzaG9ydDsKdHlwZWRlZgl1bnNpZ25l
ZCBpbnQJdWludDsKdHlwZWRlZgl1bnNpZ25lZCBsb25nCXVsb25nOwogCgojIDUwMSAiL3Vzci9p
bmNsdWRlL3N5cy90eXBlcy5oIiAzCgoKCgogCgoKCgoKCgoKCgoKCgoKIAoKCgoKCiAKdHlwZWRl
ZiB1bnNpZ25lZCBjaGFyCXVfY2hhcjsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydAl1X3Nob3J0Owp0
eXBlZGVmIHVuc2lnbmVkIGludAl1X2ludDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nCXVfbG9uZzsK
dHlwZWRlZiBzdHJ1Y3QgX3F1YWQgeyBpbnQgdmFsWzJdOyB9IHF1YWRfdDsJIAp0eXBlZGVmIHF1
YWRfdAkJcXVhZDsJCQkgCiAKCiAKCgoKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAx
IDMKIAogCiAKCiAKIAogCgoKCgojcHJhZ21hIGlkZW50CSJAKCMpc2VsZWN0LmgJMS4xNgk5OC8w
NC8yNyBTTUkiCQoKCgoKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3RpbWUuaCIgMSAzCiAKIAoKIAog
CiAKCiAKCgoKCgogCgoKCgoKCgojcHJhZ21hIGlkZW50CSJAKCMpdGltZS5oCTIuNjIJOTgvMDIv
MDQgU01JIgkKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKc3RydWN0IHRpbWV2YWwgewoJdGlt
ZV90CQl0dl9zZWM7CQkgCglzdXNlY29uZHNfdAl0dl91c2VjOwkgCn07CgojIDc0ICIvdXNyL2lu
Y2x1ZGUvc3lzL3RpbWUuaCIgMwoKCgoKCgoKCnN0cnVjdCB0aW1lem9uZSB7CglpbnQJdHpfbWlu
dXRlc3dlc3Q7CSAKCWludAl0el9kc3R0aW1lOwkgCn07CgoKCgoKCgoKIAoKCgoKCiMgMSAiL3Vz
ci9pbmNsdWRlL3N5cy90eXBlcy5oIiAxIDMKIAogCgogCiAKIAoKIAoKCgoKIyA1NTkgIi91c3Iv
aW5jbHVkZS9zeXMvdHlwZXMuaCIgMwoKIyAxMDAgIi91c3IvaW5jbHVkZS9zeXMvdGltZS5oIiAy
IDMKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoJCQkJ
IAoJCQkJIAoKCQkJCSAKCQkJCSAKCgpzdHJ1Y3QJaXRpbWVydmFsIHsKCXN0cnVjdAl0aW1ldmFs
IGl0X2ludGVydmFsOwkgCglzdHJ1Y3QJdGltZXZhbCBpdF92YWx1ZTsJIAp9OwoKIyAxODEgIi91
c3IvaW5jbHVkZS9zeXMvdGltZS5oIiAzCgoKCgoKCgogCgoKCgoKCgoKCgoKIAoKCnR5cGVkZWYJ
bG9uZ2xvbmdfdAlocnRpbWVfdDsKCiMgMzEwICIvdXNyL2luY2x1ZGUvc3lzL3RpbWUuaCIgMwoK
CgoKCmludCBhZGp0aW1lKHN0cnVjdCB0aW1ldmFsICosIHN0cnVjdCB0aW1ldmFsICopOwoKCgoK
CgoKCgoKaW50IGdldGl0aW1lcihpbnQsIHN0cnVjdCBpdGltZXJ2YWwgKik7CmludCB1dGltZXMo
Y29uc3QgY2hhciAqLCBjb25zdCBzdHJ1Y3QgdGltZXZhbCAqKTsKCgoKaW50IHNldGl0aW1lcihp
bnQsIHN0cnVjdCBpdGltZXJ2YWwgKiwgc3RydWN0IGl0aW1lcnZhbCAqKTsKCgoKCgoKCgoKCgog
CgoKCgoKCgoKCgoKCgoKCgoKCgoKaW50IHNldHRpbWVvZmRheShzdHJ1Y3QgdGltZXZhbCAqLCB2
b2lkICopOwoKaHJ0aW1lX3QJZ2V0aHJ0aW1lKHZvaWQpOwpocnRpbWVfdAlnZXRocnZ0aW1lKHZv
aWQpOwoKCgoKCgoKCgoKCgoKCgoKaW50IGdldHRpbWVvZmRheShzdHJ1Y3QgdGltZXZhbCAqLCB2
b2lkICopOwoKCgoKCgoKIAoKCgoKCgoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS90aW1lLmgiIDEg
MwogCiAKCiAKIAogCgogCgoKCgoKCgojcHJhZ21hIGlkZW50CSJAKCMpdGltZS5oCTEuMzYJOTgv
MDMvMjcgU01JIgkKCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMSAzCiAKIAoKIAog
CiAKCiAKCgoKCiMgNTU5ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMKCiMgMTkgIi91c3Iv
aW5jbHVkZS90aW1lLmgiIDIgMwoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgpzdHJ1Y3QJdG0gewkgCglpbnQJdG1fc2VjOwoJaW50CXRtX21pbjsKCWludAl0bV9o
b3VyOwoJaW50CXRtX21kYXk7CglpbnQJdG1fbW9uOwoJaW50CXRtX3llYXI7CglpbnQJdG1fd2Rh
eTsKCWludAl0bV95ZGF5OwoJaW50CXRtX2lzZHN0Owp9OwoKCgpleHRlcm4gY2xvY2tfdCBjbG9j
ayh2b2lkKTsKZXh0ZXJuIGRvdWJsZSBkaWZmdGltZSh0aW1lX3QsIHRpbWVfdCk7CmV4dGVybiB0
aW1lX3QgbWt0aW1lKHN0cnVjdCB0bSAqKTsKZXh0ZXJuIHRpbWVfdCB0aW1lKHRpbWVfdCAqKTsK
ZXh0ZXJuIGNoYXIgKmFzY3RpbWUoY29uc3Qgc3RydWN0IHRtICopOwpleHRlcm4gY2hhciAqY3Rp
bWUoY29uc3QgdGltZV90ICopOwpleHRlcm4gc3RydWN0IHRtICpnbXRpbWUoY29uc3QgdGltZV90
ICopOwpleHRlcm4gc3RydWN0IHRtICpsb2NhbHRpbWUoY29uc3QgdGltZV90ICopOwpleHRlcm4g
c2l6ZV90IHN0cmZ0aW1lKGNoYXIgKiwgc2l6ZV90LCBjb25zdCBjaGFyICosIGNvbnN0IHN0cnVj
dCB0bSAqKTsKCgoKZXh0ZXJuIHN0cnVjdCB0bSAqZ210aW1lX3IoY29uc3QgdGltZV90ICosIHN0
cnVjdCB0bSAqKTsKZXh0ZXJuIHN0cnVjdCB0bSAqbG9jYWx0aW1lX3IoY29uc3QgdGltZV90ICos
IHN0cnVjdCB0bSAqKTsKCgoKCgpleHRlcm4gY2hhciAqc3RycHRpbWUoY29uc3QgY2hhciAqLCBj
b25zdCBjaGFyICosIHN0cnVjdCB0bSAqKTsKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvdGlt
ZV9pbXBsLmgiIDEgMwogCgoKCgogCgoKCgoKCgoKI3ByYWdtYSBpZGVudAkiQCgjKXRpbWVfaW1w
bC5oCTEuMwk5OC8wMi8xMyBTTUkiCgoKCgoKCgoKCgoKCgoKIAoKCgoKCnR5cGVkZWYgc3RydWN0
ICB0aW1lc3BlYyB7CQkgCgl0aW1lX3QJCXR2X3NlYzsJCSAKCWxvbmcJCXR2X25zZWM7CSAKfSB0
aW1lc3BlY190OwoKIyA1OCAiL3Vzci9pbmNsdWRlL3N5cy90aW1lX2ltcGwuaCIgMwoKCnR5cGVk
ZWYgc3RydWN0IHRpbWVzcGVjIHRpbWVzdHJ1Y190OwkgCgoKCiAKCgoKCgoKCgoKIAoKCgoKdHlw
ZWRlZiBzdHJ1Y3QgaXRpbWVyc3BlYyB7CQkgCglzdHJ1Y3QgdGltZXNwZWMJaXRfaW50ZXJ2YWw7
CSAKCXN0cnVjdCB0aW1lc3BlYwlpdF92YWx1ZTsJIAp9IGl0aW1lcnNwZWNfdDsKCiMgMTAwICIv
dXNyL2luY2x1ZGUvc3lzL3RpbWVfaW1wbC5oIiAzCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoK
CgoKCgoKCgoKIyAxMDMgIi91c3IvaW5jbHVkZS90aW1lLmgiIDIgMwoKCiAKCgoKCgoKCgoKCgoK
dW5pb24gc2lndmFsIHsKCWludAlzaXZhbF9pbnQ7CSAKCXZvaWQJKnNpdmFsX3B0cjsJIAp9OwoK
CgoKc3RydWN0IHNpZ2V2ZW50IHsKCWludAkJc2lnZXZfbm90aWZ5OwkgCglpbnQJCXNpZ2V2X3Np
Z25vOwkgCgl1bmlvbiBzaWd2YWwJc2lnZXZfdmFsdWU7CSAKCXZvaWQJCSgqc2lnZXZfbm90aWZ5
X2Z1bmN0aW9uKSh1bmlvbiBzaWd2YWwpOwoJcHRocmVhZF9hdHRyX3QJKnNpZ2V2X25vdGlmeV9h
dHRyaWJ1dGVzOwoJaW50CQlfX3NpZ2V2X3BhZDI7Cn07CgoKZXh0ZXJuIGludCBjbG9ja19nZXRy
ZXMoY2xvY2tpZF90LCBzdHJ1Y3QgdGltZXNwZWMgKik7CmV4dGVybiBpbnQgY2xvY2tfZ2V0dGlt
ZShjbG9ja2lkX3QsIHN0cnVjdCB0aW1lc3BlYyAqKTsKZXh0ZXJuIGludCBjbG9ja19zZXR0aW1l
KGNsb2NraWRfdCwgY29uc3Qgc3RydWN0IHRpbWVzcGVjICopOwpleHRlcm4gaW50IHRpbWVyX2Ny
ZWF0ZShjbG9ja2lkX3QsIHN0cnVjdCBzaWdldmVudCAqLCB0aW1lcl90ICopOwpleHRlcm4gaW50
IHRpbWVyX2RlbGV0ZSh0aW1lcl90KTsKZXh0ZXJuIGludCB0aW1lcl9nZXRvdmVycnVuKHRpbWVy
X3QpOwpleHRlcm4gaW50IHRpbWVyX2dldHRpbWUodGltZXJfdCwgc3RydWN0IGl0aW1lcnNwZWMg
Kik7CmV4dGVybiBpbnQgdGltZXJfc2V0dGltZSh0aW1lcl90LCBpbnQsIGNvbnN0IHN0cnVjdCBp
dGltZXJzcGVjICosCgkJc3RydWN0IGl0aW1lcnNwZWMgKik7CmV4dGVybiBpbnQgbmFub3NsZWVw
KGNvbnN0IHN0cnVjdCB0aW1lc3BlYyAqLCBzdHJ1Y3QgdGltZXNwZWMgKik7CgoKCgpleHRlcm4g
dm9pZCB0enNldCh2b2lkKTsKCmV4dGVybiBjaGFyICp0em5hbWVbMl07CgoKZXh0ZXJuIGxvbmcg
X3N5c2NvbmYoaW50KTsJIAoKCQkJCSAKCgoKCmV4dGVybiBsb25nIHRpbWV6b25lOwpleHRlcm4g
aW50IGRheWxpZ2h0OwoKCgoKCmV4dGVybiBpbnQgY2Z0aW1lKGNoYXIgKiwgY2hhciAqLCBjb25z
dCB0aW1lX3QgKik7CmV4dGVybiBpbnQgYXNjZnRpbWUoY2hhciAqLCBjb25zdCBjaGFyICosIGNv
bnN0IHN0cnVjdCB0bSAqKTsKZXh0ZXJuIGxvbmcgYWx0em9uZTsKCgoKCmV4dGVybiBzdHJ1Y3Qg
dG0gKmdldGRhdGUoY29uc3QgY2hhciAqKTsKCgoKCmV4dGVybiBpbnQgKl9nZXRkYXRlX2Vycl9h
ZGRyKHZvaWQpOwoKCgoKCiMgMjIyICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCgoKIAoKCgogCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgojIDI4NiAiL3Vzci9pbmNsdWRlL3RpbWUu
aCIgMwoKCmV4dGVybiBjaGFyICphc2N0aW1lX3IoY29uc3Qgc3RydWN0IHRtICosIGNoYXIgKiwg
aW50KTsKZXh0ZXJuIGNoYXIgKmN0aW1lX3IoY29uc3QgdGltZV90ICosIGNoYXIgKiwgaW50KTsK
CgoKIyAzMjkgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKCgoKCgoKCgoKIyA0MDUgIi91c3IvaW5j
bHVkZS9zeXMvdGltZS5oIiAyIDMKCgoKIAoKCgoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9zeXMv
c2VsZWN0LmgiIDEgMwogCiAKIAoKIAogCiAKCiMgMTA3ICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVj
dC5oIiAzCgojIDQxOCAiL3Vzci9pbmNsdWRlL3N5cy90aW1lLmgiIDIgMwoKCgoKCgoKCgoKIyAx
NyAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMiAzCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoK
CgoKCgoKdHlwZWRlZglsb25nCWZkX21hc2s7Cgp0eXBlZGVmCWxvbmcJZmRzX21hc2s7CgogCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKdHlwZWRlZglzdHJ1Y3QgZmRfc2V0IHsKCgoKCWxvbmcJZmRz
X2JpdHNbKCgoIDEwMjQgICkrKCggIChzaXplb2YgKGZkc19tYXNrKSAqIDggKSAgKS0xKSkvKCAg
KHNpemVvZiAoZmRzX21hc2spICogOCApICApKSBdOwp9IGZkX3NldDsKCgoKCgoKCgoKCgoKCgoK
CgoKZXh0ZXJuIGludCBzZWxlY3QoaW50LCBmZF9zZXQgKiwgZmRfc2V0ICosIGZkX3NldCAqLCBz
dHJ1Y3QgdGltZXZhbCAqKTsKCgoKCgoKCgoKCiMgNTM5ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVz
LmgiIDIgMwoKCgoKIAoKCgoKCgoKCiAKCgoKCgoKCiMgMTIgIi91c3IvaW5jbHVkZS9wdGhyZWFk
LmgiIDIgMwoKCiMgMSAiL3Vzci9pbmNsdWRlL3NjaGVkLmgiIDEgMwogCiAKCiAKIAogCgoKCgoj
cHJhZ21hIGlkZW50CSJAKCMpc2NoZWQuaAkxLjkJOTgvMDEvMTYgU01JIgoKCgoKCgoKCnN0cnVj
dCBzY2hlZF9wYXJhbSB7CglpbnQJc2NoZWRfcHJpb3JpdHk7CSAKCWludAlzY2hlZF9uaWNlbGlt
OwkgCglpbnQJc2NoZWRfbmljZTsJIAoJaW50CXNjaGVkX3BhZFs2XTsJIAoJCQkJIAoJCQkJIAoJ
CQkJIAp9OwoKIAoKCgoKCgoKCgogCgoKCmludAlzY2hlZF9nZXRwYXJhbShwaWRfdCBwaWQsIHN0
cnVjdCBzY2hlZF9wYXJhbSAqcGFyYW0pOwppbnQJc2NoZWRfc2V0cGFyYW0ocGlkX3QgcGlkLCBj
b25zdCBzdHJ1Y3Qgc2NoZWRfcGFyYW0gKnBhcmFtKTsKaW50CXNjaGVkX2dldHNjaGVkdWxlcihw
aWRfdCBwaWQpOwppbnQJc2NoZWRfc2V0c2NoZWR1bGVyKHBpZF90IHBpZCwgaW50IHBvbGljeSwK
CQljb25zdCBzdHJ1Y3Qgc2NoZWRfcGFyYW0gKnBhcmFtKTsKaW50CXNjaGVkX3lpZWxkKHZvaWQp
OwppbnQJc2NoZWRfZ2V0X3ByaW9yaXR5X21heChpbnQgcG9saWN5KTsKaW50CXNjaGVkX2dldF9w
cmlvcml0eV9taW4oaW50IHBvbGljeSk7CmludAlzY2hlZF9ycl9nZXRfaW50ZXJ2YWwocGlkX3Qg
cGlkLCBzdHJ1Y3QgdGltZXNwZWMgKmludGVydmFsKTsKIyA2MiAiL3Vzci9pbmNsdWRlL3NjaGVk
LmgiIDMKCgoKCgoKCiMgMTQgIi91c3IvaW5jbHVkZS9wdGhyZWFkLmgiIDIgMwoKCgoKCgoKIAoK
CgoKIAoKCiAKCgoKIAoKCiAKCgoKIAoKCgoKCgoKCiAKCgoKCgoKCgogCgoKCiAKCgoKCgoKIAoK
CgoKCgogCgoKCgoKCiAKCgp0eXBlZGVmIHN0cnVjdCBfY2xlYW51cCB7Cgl1aW50cHRyX3QJcHRo
cmVhZF9jbGVhbnVwX3BhZFs0XTsKfSBfY2xlYW51cF90OwoKCgp2b2lkCV9fcHRocmVhZF9jbGVh
bnVwX3B1c2godm9pZCAoKnJvdXRpbmUpKHZvaWQgKiksIHZvaWQgKmFyZ3MsCgkJCQkJY2FkZHJf
dCBmcCwgX2NsZWFudXBfdCAqaW5mbyk7CnZvaWQJX19wdGhyZWFkX2NsZWFudXBfcG9wKGludCBl
eCwgX2NsZWFudXBfdCAqaW5mbyk7CmNhZGRyX3QJX2dldGZwKHZvaWQpOwoKCgoKCgoKCgoKCgoK
CgoKCgoKCiAKCgoKZXh0ZXJuIGludCBwdGhyZWFkX2F0dHJfaW5pdChwdGhyZWFkX2F0dHJfdCAq
KTsKZXh0ZXJuIGludCBwdGhyZWFkX2F0dHJfZGVzdHJveShwdGhyZWFkX2F0dHJfdCAqKTsKZXh0
ZXJuIGludCBwdGhyZWFkX2F0dHJfc2V0c3RhY2tzaXplKHB0aHJlYWRfYXR0cl90ICosIHNpemVf
dCk7CmV4dGVybiBpbnQgcHRocmVhZF9hdHRyX2dldHN0YWNrc2l6ZShjb25zdCBwdGhyZWFkX2F0
dHJfdCAqLCBzaXplX3QgKik7CmV4dGVybiBpbnQgcHRocmVhZF9hdHRyX3NldHN0YWNrYWRkcihw
dGhyZWFkX2F0dHJfdCAqLCB2b2lkICopOwpleHRlcm4gaW50IHB0aHJlYWRfYXR0cl9nZXRzdGFj
a2FkZHIoY29uc3QgcHRocmVhZF9hdHRyX3QgKiwgdm9pZCAqKik7CmV4dGVybiBpbnQgcHRocmVh
ZF9hdHRyX3NldGRldGFjaHN0YXRlKHB0aHJlYWRfYXR0cl90ICosIGludCk7CmV4dGVybiBpbnQg
cHRocmVhZF9hdHRyX2dldGRldGFjaHN0YXRlKGNvbnN0IHB0aHJlYWRfYXR0cl90ICosIGludCAq
KTsKZXh0ZXJuIGludCBwdGhyZWFkX2F0dHJfc2V0c2NvcGUocHRocmVhZF9hdHRyX3QgKiwgaW50
KTsKZXh0ZXJuIGludCBwdGhyZWFkX2F0dHJfZ2V0c2NvcGUoY29uc3QgcHRocmVhZF9hdHRyX3Qg
KiwgaW50ICopOwpleHRlcm4gaW50IHB0aHJlYWRfYXR0cl9zZXRpbmhlcml0c2NoZWQocHRocmVh
ZF9hdHRyX3QgKiwgaW50KTsKZXh0ZXJuIGludCBwdGhyZWFkX2F0dHJfZ2V0aW5oZXJpdHNjaGVk
KGNvbnN0IHB0aHJlYWRfYXR0cl90ICosIGludCAqKTsKZXh0ZXJuIGludCBwdGhyZWFkX2F0dHJf
c2V0c2NoZWRwb2xpY3kocHRocmVhZF9hdHRyX3QgKiwgaW50KTsKZXh0ZXJuIGludCBwdGhyZWFk
X2F0dHJfZ2V0c2NoZWRwb2xpY3koY29uc3QgcHRocmVhZF9hdHRyX3QgKiwgaW50ICopOwpleHRl
cm4gaW50IHB0aHJlYWRfYXR0cl9zZXRzY2hlZHBhcmFtKHB0aHJlYWRfYXR0cl90ICosCgkJCQkJ
Y29uc3Qgc3RydWN0IHNjaGVkX3BhcmFtICopOwpleHRlcm4gaW50IHB0aHJlYWRfYXR0cl9nZXRz
Y2hlZHBhcmFtKGNvbnN0IHB0aHJlYWRfYXR0cl90ICosCgkJCQkJc3RydWN0IHNjaGVkX3BhcmFt
ICopOwpleHRlcm4gaW50IHB0aHJlYWRfY3JlYXRlKHB0aHJlYWRfdCAqLCBjb25zdCBwdGhyZWFk
X2F0dHJfdCAqLAoJCQkJdm9pZCAqICgqKSh2b2lkICopLCB2b2lkICopOwpleHRlcm4gaW50IHB0
aHJlYWRfb25jZShwdGhyZWFkX29uY2VfdCAqLCB2b2lkICgqKSh2b2lkKSk7CmV4dGVybiBpbnQg
cHRocmVhZF9qb2luKHB0aHJlYWRfdCwgdm9pZCAqKik7CmV4dGVybiBpbnQgcHRocmVhZF9kZXRh
Y2gocHRocmVhZF90KTsKZXh0ZXJuIHZvaWQgcHRocmVhZF9leGl0KHZvaWQgKik7CmV4dGVybiBp
bnQgcHRocmVhZF9jYW5jZWwocHRocmVhZF90KTsKZXh0ZXJuIGludCBwdGhyZWFkX3NldHNjaGVk
cGFyYW0ocHRocmVhZF90LCBpbnQsIGNvbnN0IHN0cnVjdCBzY2hlZF9wYXJhbSAqKTsKZXh0ZXJu
IGludCBwdGhyZWFkX2dldHNjaGVkcGFyYW0ocHRocmVhZF90LCBpbnQgKiwgc3RydWN0IHNjaGVk
X3BhcmFtICopOwpleHRlcm4gaW50IHB0aHJlYWRfc2V0Y2FuY2Vsc3RhdGUoaW50LCBpbnQgKik7
CmV4dGVybiBpbnQgcHRocmVhZF9zZXRjYW5jZWx0eXBlKGludCwgaW50ICopOwpleHRlcm4gdm9p
ZCBwdGhyZWFkX3Rlc3RjYW5jZWwodm9pZCk7CmV4dGVybiBpbnQgcHRocmVhZF9lcXVhbChwdGhy
ZWFkX3QsIHB0aHJlYWRfdCk7CmV4dGVybiBpbnQgcHRocmVhZF9rZXlfY3JlYXRlKHB0aHJlYWRf
a2V5X3QgKiwgdm9pZCAoKikodm9pZCAqKSk7CmV4dGVybiBpbnQgcHRocmVhZF9rZXlfZGVsZXRl
KHB0aHJlYWRfa2V5X3QpOwpleHRlcm4gaW50IHB0aHJlYWRfc2V0c3BlY2lmaWMocHRocmVhZF9r
ZXlfdCwgY29uc3Qgdm9pZCAqKTsKZXh0ZXJuIHZvaWQgKnB0aHJlYWRfZ2V0c3BlY2lmaWMocHRo
cmVhZF9rZXlfdCk7CmV4dGVybiBwdGhyZWFkX3QgcHRocmVhZF9zZWxmKHZvaWQpOwoKIAoKCmV4
dGVybiBpbnQgcHRocmVhZF9tdXRleGF0dHJfaW5pdChwdGhyZWFkX211dGV4YXR0cl90ICopOwpl
eHRlcm4gaW50IHB0aHJlYWRfbXV0ZXhhdHRyX2Rlc3Ryb3kocHRocmVhZF9tdXRleGF0dHJfdCAq
KTsKZXh0ZXJuIGludCBwdGhyZWFkX211dGV4YXR0cl9zZXRwc2hhcmVkKHB0aHJlYWRfbXV0ZXhh
dHRyX3QgKiwgaW50KTsKZXh0ZXJuIGludCBwdGhyZWFkX211dGV4YXR0cl9nZXRwc2hhcmVkKGNv
bnN0IHB0aHJlYWRfbXV0ZXhhdHRyX3QgKiwgaW50ICopOwpleHRlcm4gaW50IHB0aHJlYWRfbXV0
ZXhhdHRyX3NldHByb3RvY29sKHB0aHJlYWRfbXV0ZXhhdHRyX3QgKiwgaW50KTsKZXh0ZXJuIGlu
dCBwdGhyZWFkX211dGV4YXR0cl9nZXRwcm90b2NvbChjb25zdCBwdGhyZWFkX211dGV4YXR0cl90
ICosIGludCAqKTsKZXh0ZXJuIGludCBwdGhyZWFkX211dGV4YXR0cl9zZXRwcmlvY2VpbGluZyhw
dGhyZWFkX211dGV4YXR0cl90ICosIGludCk7CmV4dGVybiBpbnQgcHRocmVhZF9tdXRleGF0dHJf
Z2V0cHJpb2NlaWxpbmcoY29uc3QgcHRocmVhZF9tdXRleGF0dHJfdCAqLCBpbnQgKik7CmV4dGVy
biBpbnQgcHRocmVhZF9tdXRleF9pbml0KHB0aHJlYWRfbXV0ZXhfdCAqLCBjb25zdCBwdGhyZWFk
X211dGV4YXR0cl90ICopOwpleHRlcm4gaW50IHB0aHJlYWRfbXV0ZXhfZGVzdHJveShwdGhyZWFk
X211dGV4X3QgKik7CmV4dGVybiBpbnQgcHRocmVhZF9tdXRleF9sb2NrKHB0aHJlYWRfbXV0ZXhf
dCAqKTsKZXh0ZXJuIGludCBwdGhyZWFkX211dGV4X3VubG9jayhwdGhyZWFkX211dGV4X3QgKik7
CmV4dGVybiBpbnQgcHRocmVhZF9tdXRleF90cnlsb2NrKHB0aHJlYWRfbXV0ZXhfdCAqKTsKZXh0
ZXJuIGludCBwdGhyZWFkX211dGV4X3NldHByaW9jZWlsaW5nKHB0aHJlYWRfbXV0ZXhfdCAqLCBp
bnQsIGludCAqKTsKZXh0ZXJuIGludCBwdGhyZWFkX211dGV4X2dldHByaW9jZWlsaW5nKHB0aHJl
YWRfbXV0ZXhfdCAqLCBpbnQgKik7CmV4dGVybiBpbnQgcHRocmVhZF9jb25kYXR0cl9pbml0KHB0
aHJlYWRfY29uZGF0dHJfdCAqKTsKZXh0ZXJuIGludCBwdGhyZWFkX2NvbmRhdHRyX2Rlc3Ryb3ko
cHRocmVhZF9jb25kYXR0cl90ICopOwpleHRlcm4gaW50IHB0aHJlYWRfY29uZGF0dHJfc2V0cHNo
YXJlZChwdGhyZWFkX2NvbmRhdHRyX3QgKiwgaW50KTsKZXh0ZXJuIGludCBwdGhyZWFkX2NvbmRh
dHRyX2dldHBzaGFyZWQoY29uc3QgcHRocmVhZF9jb25kYXR0cl90ICosIGludCAqKTsKZXh0ZXJu
IGludCBwdGhyZWFkX2NvbmRfaW5pdChwdGhyZWFkX2NvbmRfdCAqLCBjb25zdCBwdGhyZWFkX2Nv
bmRhdHRyX3QgKik7CmV4dGVybiBpbnQgcHRocmVhZF9jb25kX2Rlc3Ryb3kocHRocmVhZF9jb25k
X3QgKik7CmV4dGVybiBpbnQgcHRocmVhZF9jb25kX2Jyb2FkY2FzdChwdGhyZWFkX2NvbmRfdCAq
KTsKZXh0ZXJuIGludCBwdGhyZWFkX2NvbmRfc2lnbmFsKHB0aHJlYWRfY29uZF90ICopOwpleHRl
cm4gaW50IHB0aHJlYWRfY29uZF93YWl0KHB0aHJlYWRfY29uZF90ICosIHB0aHJlYWRfbXV0ZXhf
dCAqKTsKZXh0ZXJuIGludCBwdGhyZWFkX2NvbmRfdGltZWR3YWl0KHB0aHJlYWRfY29uZF90ICos
IHB0aHJlYWRfbXV0ZXhfdCAqLAoJCQkJCWNvbnN0IHN0cnVjdCB0aW1lc3BlYyAqKTsKZXh0ZXJu
IGludCBwdGhyZWFkX2F0dHJfZ2V0Z3VhcmRzaXplKGNvbnN0IHB0aHJlYWRfYXR0cl90ICosIHNp
emVfdCAqKTsKZXh0ZXJuIGludCBwdGhyZWFkX2F0dHJfc2V0Z3VhcmRzaXplKHB0aHJlYWRfYXR0
cl90ICosIHNpemVfdCk7CmV4dGVybiBpbnQgcHRocmVhZF9nZXRjb25jdXJyZW5jeSh2b2lkKTsK
ZXh0ZXJuIGludCBwdGhyZWFkX3NldGNvbmN1cnJlbmN5KGludCBuZXd2YWwpOwpleHRlcm4gaW50
IHB0aHJlYWRfbXV0ZXhhdHRyX3NldHR5cGUocHRocmVhZF9tdXRleGF0dHJfdCAqLCBpbnQpOwpl
eHRlcm4gaW50IHB0aHJlYWRfbXV0ZXhhdHRyX2dldHR5cGUoY29uc3QgcHRocmVhZF9tdXRleGF0
dHJfdCAqLCBpbnQgKik7CmV4dGVybiBpbnQgcHRocmVhZF9yd2xvY2tfaW5pdChwdGhyZWFkX3J3
bG9ja190ICosCgkJCQljb25zdCBwdGhyZWFkX3J3bG9ja2F0dHJfdCAqKTsKZXh0ZXJuIGludCBw
dGhyZWFkX3J3bG9ja19kZXN0cm95KHB0aHJlYWRfcndsb2NrX3QgKik7CmV4dGVybiBpbnQgcHRo
cmVhZF9yd2xvY2tfcmRsb2NrKHB0aHJlYWRfcndsb2NrX3QgKik7CmV4dGVybiBpbnQgcHRocmVh
ZF9yd2xvY2tfdHJ5cmRsb2NrKHB0aHJlYWRfcndsb2NrX3QgKik7CmV4dGVybiBpbnQgcHRocmVh
ZF9yd2xvY2tfd3Jsb2NrKHB0aHJlYWRfcndsb2NrX3QgKik7CmV4dGVybiBpbnQgcHRocmVhZF9y
d2xvY2tfdHJ5d3Jsb2NrKHB0aHJlYWRfcndsb2NrX3QgKik7CmV4dGVybiBpbnQgcHRocmVhZF9y
d2xvY2tfdW5sb2NrKHB0aHJlYWRfcndsb2NrX3QgKik7CmV4dGVybiBpbnQgcHRocmVhZF9yd2xv
Y2thdHRyX2luaXQocHRocmVhZF9yd2xvY2thdHRyX3QgKik7CmV4dGVybiBpbnQgcHRocmVhZF9y
d2xvY2thdHRyX2Rlc3Ryb3kocHRocmVhZF9yd2xvY2thdHRyX3QgKik7CmV4dGVybiBpbnQgcHRo
cmVhZF9yd2xvY2thdHRyX2dldHBzaGFyZWQoY29uc3QgcHRocmVhZF9yd2xvY2thdHRyX3QgKiwg
aW50ICopOwpleHRlcm4gaW50IHB0aHJlYWRfcndsb2NrYXR0cl9zZXRwc2hhcmVkKHB0aHJlYWRf
cndsb2NrYXR0cl90ICosIGludCk7CgojIDI5MCAiL3Vzci9pbmNsdWRlL3B0aHJlYWQuaCIgMwoK
CgoKCgoKCgojIDMxICIuLi8uLi8uLi9wci9pbmNsdWRlL3ByaXZhdGUvcHJpbXBsLmgiIDIKCgoK
CgoKCiMgNDggIi4uLy4uLy4uL3ByL2luY2x1ZGUvcHJpdmF0ZS9wcmltcGwuaCIKCgojIDEgIi9o
b21lL3JlZDEvZGF0YS9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9uc3ByLmgiIDEKIAogCgoKCgoKCgoK
CgoKCgoKCgoKCgojIDEgIi9ob21lL3JlZDEvZGF0YS9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9wcmF0
b20uaCIgMQogCiAKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCiMgMSAiL2hvbWUvcmVkMS9kYXRh
L21vemlsbGEvZGlzdC9pbmNsdWRlL3BydHlwZXMuaCIgMQogCiAKCgoKCgoKCgoKCgoKCgoKCiAK
CgoKCgoKCgoKCgoKCgoKCgoKCiMgMSAiL2hvbWUvcmVkMS9kYXRhL21vemlsbGEvZGlzdC9pbmNs
dWRlL3ByY3B1Y2ZnLmgiIDEKIAogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgMzkgIi9ob21lL3JlZDEvZGF0
YS9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9wcnR5cGVzLmgiIDIKCgoKIyAxICIvaG9tZS9yZWQxL2dj
Yy0yLjk1LjMvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjcvMi45NS4zL2luY2x1ZGUv
c3RkZGVmLmgiIDEgMwoKCgoKCgogCgoKCgoKCgogCgogCgoKCgogCgoKIAoKCgoKCiAKCgojIDYx
ICIvaG9tZS9yZWQxL2djYy0yLjk1LjMvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjcv
Mi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgog
CgoKCgoKIAoKIAoKCiMgMTI2ICIvaG9tZS9yZWQxL2djYy0yLjk1LjMvbGliL2djYy1saWIvc3Bh
cmMtc3VuLXNvbGFyaXMyLjcvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgoKCgogCgog
CgoKCiMgMTg3ICIvaG9tZS9yZWQxL2djYy0yLjk1LjMvbGliL2djYy1saWIvc3BhcmMtc3VuLXNv
bGFyaXMyLjcvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKCgoKIAoKCgoKIAoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgp0eXBlZGVm
IGxvbmcgaW50IHdjaGFyX3Q7CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCnR5cGVkZWYgdW5zaWdu
ZWQgaW50ICB3aW50X3Q7CgoKCgogCgogCgojIDMxNyAiL2hvbWUvcmVkMS9nY2MtMi45NS4zL2xp
Yi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi43LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAz
CgoKCgogCgoKCgoKCgoKCgoKCgogCgoKCgoKCgojIDQyICIvaG9tZS9yZWQxL2RhdGEvbW96aWxs
YS9kaXN0L2luY2x1ZGUvcHJ0eXBlcy5oIiAyCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKIyAxNjUg
Ii9ob21lL3JlZDEvZGF0YS9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9wcnR5cGVzLmgiCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgogCgoK
CgoKCgoKCgogCgogCgoKCgoKCgp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgUFJVaW50ODsKIAoKCgoK
CgoKCgoKCgp0eXBlZGVmIHNpZ25lZCBjaGFyIFBSSW50ODsKCgoKCgogCgoKCgoKCnR5cGVkZWYg
dW5zaWduZWQgc2hvcnQgUFJVaW50MTY7CnR5cGVkZWYgc2hvcnQgUFJJbnQxNjsKCgoKCiAKCgoK
CgoKdHlwZWRlZiB1bnNpZ25lZCBpbnQgUFJVaW50MzI7CnR5cGVkZWYgaW50IFBSSW50MzI7CgoK
CgoKCgoKCgoKIAoKCgoKCgoKCgoKIyAzMTcgIi9ob21lL3JlZDEvZGF0YS9tb3ppbGxhL2Rpc3Qv
aW5jbHVkZS9wcnR5cGVzLmgiCgp0eXBlZGVmIGxvbmcgbG9uZyBQUkludDY0Owp0eXBlZGVmIHVu
c2lnbmVkIGxvbmcgbG9uZyBQUlVpbnQ2NDsKCiMgMzMwICIvaG9tZS9yZWQxL2RhdGEvbW96aWxs
YS9kaXN0L2luY2x1ZGUvcHJ0eXBlcy5oIgoKCiAKCgoKCgoKCgoKdHlwZWRlZiBpbnQgUFJJbnRu
Owp0eXBlZGVmIHVuc2lnbmVkIGludCBQUlVpbnRuOwoKCgoKIAoKCgoKdHlwZWRlZiBkb3VibGUg
ICAgICAgICAgUFJGbG9hdDY0OwoKIAoKCgoKdHlwZWRlZiBzaXplX3QgUFJTaXplOwoKCiAKCgoK
CnR5cGVkZWYgUFJJbnQzMiBQUk9mZnNldDMyOwp0eXBlZGVmIFBSSW50NjQgUFJPZmZzZXQ2NDsK
CiAKCgoKCgp0eXBlZGVmIHB0cmRpZmZfdCBQUlB0cmRpZmY7CgogCgoKCgoKdHlwZWRlZiB1bnNp
Z25lZCBsb25nIFBSVXB0cmRpZmY7CgogCgoKCgoKCgp0eXBlZGVmIFBSSW50biBQUkJvb2w7CgoK
CiAKCgoKCgp0eXBlZGVmIFBSVWludDggUFJQYWNrZWRCb29sOwoKIAoKCgp0eXBlZGVmIGVudW0g
eyBQUl9GQUlMVVJFID0gLTEsIFBSX1NVQ0NFU1MgPSAwIH0gUFJTdGF0dXM7CgogCgoKCgoKCgoK
Cgp0eXBlZGVmIGxvbmcgUFJXb3JkOwp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgUFJVd29yZDsKCgoK
IAogCiAKIAoKCgoKCiAKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgMSAiL2hvbWUvcmVk
MS9kYXRhL21vemlsbGEvZGlzdC9pbmNsdWRlL29ic29sZXRlL3Byb3R5cGVzLmgiIDEKIAogCgoK
CgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCnR5cGVkZWYgUFJVaW50biB1aW50bjsKCnR5cGVkZWYg
UFJJbnRuIGludG47CgoKIAoKCgojIDQ5ICIvaG9tZS9yZWQxL2RhdGEvbW96aWxsYS9kaXN0L2lu
Y2x1ZGUvb2Jzb2xldGUvcHJvdHlwZXMuaCIKCgogCgoKCgoKCgp0eXBlZGVmIFBSVWludDY0IHVp
bnQ2NDsKCnR5cGVkZWYgUFJVaW50MzIgdWludDMyOwoKCgp0eXBlZGVmIFBSVWludDE2IHVpbnQx
NjsKdHlwZWRlZiBQUlVpbnQ4IHVpbnQ4OwoKIAoKCgoKCgoKCnR5cGVkZWYgUFJJbnQ2NCBpbnQ2
NDsKCiAKCgoKCgp0eXBlZGVmIFBSSW50MzIgaW50MzI7CgoKCgp0eXBlZGVmIFBSSW50MTYgaW50
MTY7CnR5cGVkZWYgUFJJbnQ4IGludDg7CgoKCgoKdHlwZWRlZiBQUkZsb2F0NjQgZmxvYXQ2NDsK
dHlwZWRlZiBQUlVwdHJkaWZmIHVwdHJkaWZmX3Q7CnR5cGVkZWYgUFJVd29yZCB1cHJ3b3JkX3Q7
CnR5cGVkZWYgUFJXb3JkIHByd29yZF90OwoKCiAKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyA0NjYgIi9ob21lL3JlZDEv
ZGF0YS9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9wcnR5cGVzLmgiIDIKCgoKIAoKCiAKCgoKIyAyNyAi
L2hvbWUvcmVkMS9kYXRhL21vemlsbGEvZGlzdC9pbmNsdWRlL3ByYXRvbS5oIiAyCgojIDEgIi9o
b21lL3JlZDEvZGF0YS9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9wcmxvY2suaCIgMQogCiAKCgoKCgoK
CgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgogCgogCiAKIAoKIAoKCgoKCgp0eXBlZGVmIHN0cnVj
dCBQUkxvY2sgUFJMb2NrOwoKIAogCiAKCiAKCgoKCgoKCgoKCmV4dGVybiAgIFBSTG9jayogICAg
IFBSX05ld0xvY2sodm9pZCk7CgogCgoKCgoKCgoKZXh0ZXJuICAgdm9pZCAgICAgUFJfRGVzdHJv
eUxvY2soUFJMb2NrICpsb2NrKTsKCiAKCgoKCgoKCgpleHRlcm4gICB2b2lkICAgICBQUl9Mb2Nr
KFBSTG9jayAqbG9jayk7CgogCgoKCgoKCgoKCmV4dGVybiAgIFBSU3RhdHVzICAgICBQUl9Vbmxv
Y2soUFJMb2NrICpsb2NrKTsKCiAKCgojIDI4ICIvaG9tZS9yZWQxL2RhdGEvbW96aWxsYS9kaXN0
L2luY2x1ZGUvcHJhdG9tLmgiIDIKCgogCgogCgoKCgoKCgoKZXh0ZXJuICAgUFJJbnQzMiAgICAJ
UFJfQXRvbWljSW5jcmVtZW50KFBSSW50MzIgKnZhbCk7CgogCgoKCgoKCgoKZXh0ZXJuICAgUFJJ
bnQzMiAgICAJUFJfQXRvbWljRGVjcmVtZW50KFBSSW50MzIgKnZhbCk7CgogCgoKCgoKCgoKCmV4
dGVybiAgIFBSSW50MzIgICAgIFBSX0F0b21pY1NldChQUkludDMyICp2YWwsIFBSSW50MzIgbmV3
dmFsKTsKCiAKCgoKCgoKCgoKZXh0ZXJuICAgUFJJbnQzMiAgICAJUFJfQXRvbWljQWRkKFBSSW50
MzIgKnB0ciwgUFJJbnQzMiB2YWwpOwoKIAoKCnR5cGVkZWYgc3RydWN0IFBSU3RhY2tFbGVtU3Ry
IFBSU3RhY2tFbGVtOwoKc3RydWN0IFBSU3RhY2tFbGVtU3RyIHsKICAgIFBSU3RhY2tFbGVtCSpw
cnN0a19lbGVtX25leHQ7CSAKCn07Cgp0eXBlZGVmIHN0cnVjdCBQUlN0YWNrU3RyIFBSU3RhY2s7
CgogCgoKCgoKCgoKZXh0ZXJuICAgUFJTdGFjayAqICAgIAlQUl9DcmVhdGVTdGFjayhjb25zdCBj
aGFyICpzdGFja19uYW1lKTsKCiAKCgoKCgoKCgoKZXh0ZXJuICAgdm9pZCAgICAJCQlQUl9TdGFj
a1B1c2goUFJTdGFjayAqc3RhY2ssIFBSU3RhY2tFbGVtICpzdGFja19lbGVtKTsKCiAKCgoKCgoK
CgoKCmV4dGVybiAgIFBSU3RhY2tFbGVtICogICAgCVBSX1N0YWNrUG9wKFBSU3RhY2sgKnN0YWNr
KTsKCiAKCgoKCgoKCgoKCgpleHRlcm4gICBQUlN0YXR1cyAgICAJCVBSX0Rlc3Ryb3lTdGFjayhQ
UlN0YWNrICpzdGFjayk7CgogCgoKIyAyMiAiL2hvbWUvcmVkMS9kYXRhL21vemlsbGEvZGlzdC9p
bmNsdWRlL25zcHIuaCIgMgoKIyAxICIvaG9tZS9yZWQxL2RhdGEvbW96aWxsYS9kaXN0L2luY2x1
ZGUvcHJiaXQuaCIgMQogCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgogCgoKdHlwZWRlZiB1bnNp
Z25lZCBsb25nIHByYml0bWFwX3Q7CgoKCgoKCgoKIAoKCmV4dGVybiAgIFBSSW50biAgICAgUFJf
Q2VpbGluZ0xvZzIoUFJVaW50MzIgaSk7IAoKIAoKCmV4dGVybiAgIFBSSW50biAgICAgUFJfRmxv
b3JMb2cyKFBSVWludDMyIGkpOyAKCiAKCgoKCiMgNjggIi9ob21lL3JlZDEvZGF0YS9tb3ppbGxh
L2Rpc3QvaW5jbHVkZS9wcmJpdC5oIgoKIAoKCgoKCgojIDkwICIvaG9tZS9yZWQxL2RhdGEvbW96
aWxsYS9kaXN0L2luY2x1ZGUvcHJiaXQuaCIKCiAKCiMgMjMgIi9ob21lL3JlZDEvZGF0YS9tb3pp
bGxhL2Rpc3QvaW5jbHVkZS9uc3ByLmgiIDIKCiMgMSAiL2hvbWUvcmVkMS9kYXRhL21vemlsbGEv
ZGlzdC9pbmNsdWRlL3ByY2xpc3QuaCIgMQogCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKdHlwZWRl
ZiBzdHJ1Y3QgUFJDTGlzdFN0ciBQUkNMaXN0OwoKIAoKCnN0cnVjdCBQUkNMaXN0U3RyIHsKICAg
IFBSQ0xpc3QJKm5leHQ7CiAgICBQUkNMaXN0CSpwcmV2Owp9OwoKIAoKCgoKCgoKCgoKIAoKCgoK
CgoKCgoKIAoKCgoKIAoKCgoKCiAKCgoKCiAKCgoKCiAKCgoKIAoKCgoKCgoKCiAKCgoKCgoKCgoK
CgogCgoKCgoKCiAKCgoKCgoKCgoKCgoKIyAyNCAiL2hvbWUvcmVkMS9kYXRhL21vemlsbGEvZGlz
dC9pbmNsdWRlL25zcHIuaCIgMgoKIyAxICIvaG9tZS9yZWQxL2RhdGEvbW96aWxsYS9kaXN0L2lu
Y2x1ZGUvcHJjbW9uLmgiIDEKIAogCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCiMgMSAi
L2hvbWUvcmVkMS9kYXRhL21vemlsbGEvZGlzdC9pbmNsdWRlL3BybW9uLmgiIDEKIAogCgoKCgoK
CgoKCgoKCgoKCgoKCgoKIyAxICIvaG9tZS9yZWQxL2RhdGEvbW96aWxsYS9kaXN0L2luY2x1ZGUv
cHJpbnJ2YWwuaCIgMQogCiAKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCiAKCiAK
IAogCgp0eXBlZGVmIFBSVWludDMyIFBSSW50ZXJ2YWxUaW1lOwoKIAoKCgoKCgoKCgoKIAoKCgoK
CgoKCgoKIAogCiAKCiAKCgoKCgoKCgoKCgoKCgoKCgoKZXh0ZXJuICAgUFJJbnRlcnZhbFRpbWUg
ICAgIFBSX0ludGVydmFsTm93KHZvaWQpOwoKIAoKCgoKCgoKCgoKCgoKCgpleHRlcm4gICBQUlVp
bnQzMiAgICAgUFJfVGlja3NQZXJTZWNvbmQodm9pZCk7CgogCgoKCgoKCgoKCgoKCgoKCgpleHRl
cm4gICBQUkludGVydmFsVGltZSAgICAgUFJfU2Vjb25kc1RvSW50ZXJ2YWwoUFJVaW50MzIgc2Vj
b25kcyk7CmV4dGVybiAgIFBSSW50ZXJ2YWxUaW1lICAgICBQUl9NaWxsaXNlY29uZHNUb0ludGVy
dmFsKFBSVWludDMyIG1pbGxpKTsKZXh0ZXJuICAgUFJJbnRlcnZhbFRpbWUgICAgIFBSX01pY3Jv
c2Vjb25kc1RvSW50ZXJ2YWwoUFJVaW50MzIgbWljcm8pOwoKIAoKCgoKCgoKCgoKCgoKCgoKZXh0
ZXJuICAgUFJVaW50MzIgICAgIFBSX0ludGVydmFsVG9TZWNvbmRzKFBSSW50ZXJ2YWxUaW1lIHRp
Y2tzKTsKZXh0ZXJuICAgUFJVaW50MzIgICAgIFBSX0ludGVydmFsVG9NaWxsaXNlY29uZHMoUFJJ
bnRlcnZhbFRpbWUgdGlja3MpOwpleHRlcm4gICBQUlVpbnQzMiAgICAgUFJfSW50ZXJ2YWxUb01p
Y3Jvc2Vjb25kcyhQUkludGVydmFsVGltZSB0aWNrcyk7CgogCgoKCgogCiMgMjMgIi9ob21lL3Jl
ZDEvZGF0YS9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9wcm1vbi5oIiAyCgoKIAoKdHlwZWRlZiBzdHJ1
Y3QgUFJNb25pdG9yIFBSTW9uaXRvcjsKCiAKCgoKCgoKZXh0ZXJuICAgUFJNb25pdG9yKiAgICAg
UFJfTmV3TW9uaXRvcih2b2lkKTsKCiAKCgoKCgpleHRlcm4gICB2b2lkICAgICBQUl9EZXN0cm95
TW9uaXRvcihQUk1vbml0b3IgKm1vbik7CgogCgoKCgpleHRlcm4gICB2b2lkICAgICBQUl9FbnRl
ck1vbml0b3IoUFJNb25pdG9yICptb24pOwoKIAoKCgoKZXh0ZXJuICAgUFJTdGF0dXMgICAgIFBS
X0V4aXRNb25pdG9yKFBSTW9uaXRvciAqbW9uKTsKCiAKCgoKCgoKCgoKCgoKCgoKZXh0ZXJuICAg
UFJTdGF0dXMgICAgIFBSX1dhaXQoUFJNb25pdG9yICptb24sIFBSSW50ZXJ2YWxUaW1lIHRpY2tz
KTsKCiAKCgoKCmV4dGVybiAgIFBSU3RhdHVzICAgICBQUl9Ob3RpZnkoUFJNb25pdG9yICptb24p
OwoKIAoKCgoKZXh0ZXJuICAgUFJTdGF0dXMgICAgIFBSX05vdGlmeUFsbChQUk1vbml0b3IgKm1v
bik7CgogCgoKIyAzMiAiL2hvbWUvcmVkMS9kYXRhL21vemlsbGEvZGlzdC9pbmNsdWRlL3ByY21v
bi5oIiAyCgojIDEgIi9ob21lL3JlZDEvZGF0YS9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9wcmlucnZh
bC5oIiAxCiAKIAoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCiMgMTU0ICIvaG9tZS9yZWQx
L2RhdGEvbW96aWxsYS9kaXN0L2luY2x1ZGUvcHJpbnJ2YWwuaCIKCgogCiMgMzMgIi9ob21lL3Jl
ZDEvZGF0YS9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9wcmNtb24uaCIgMgoKCiAKCiAKCgoKCgoKCmV4
dGVybiAgIFBSTW9uaXRvciogICAgIFBSX0NFbnRlck1vbml0b3Iodm9pZCAqYWRkcmVzcyk7Cgog
CgoKCmV4dGVybiAgIFBSU3RhdHVzICAgICBQUl9DRXhpdE1vbml0b3Iodm9pZCAqYWRkcmVzcyk7
CgogCgoKCmV4dGVybiAgIFBSU3RhdHVzICAgICBQUl9DV2FpdCh2b2lkICphZGRyZXNzLCBQUklu
dGVydmFsVGltZSB0aW1lb3V0KTsKCiAKCgoKZXh0ZXJuICAgUFJTdGF0dXMgICAgIFBSX0NOb3Rp
Znkodm9pZCAqYWRkcmVzcyk7CgogCgoKCmV4dGVybiAgIFBSU3RhdHVzICAgICBQUl9DTm90aWZ5
QWxsKHZvaWQgKmFkZHJlc3MpOwoKIAoKCgpleHRlcm4gICB2b2lkICAgICBQUl9DU2V0T25Nb25p
dG9yUmVjeWNsZSh2b2lkICgqY2FsbGJhY2spKHZvaWQgKmFkZHJlc3MpKTsKCiAKCgojIDI1ICIv
aG9tZS9yZWQxL2RhdGEvbW96aWxsYS9kaXN0L2luY2x1ZGUvbnNwci5oIiAyCgojIDEgIi9ob21l
L3JlZDEvZGF0YS9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9wcmN2YXIuaCIgMQogCiAKCgoKCgoKCgoK
CgoKCgoKCgoKCgojIDEgIi9ob21lL3JlZDEvZGF0YS9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9wcmlu
cnZhbC5oIiAxCiAKIAoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCiMgMTU0ICIvaG9tZS9y
ZWQxL2RhdGEvbW96aWxsYS9kaXN0L2luY2x1ZGUvcHJpbnJ2YWwuaCIKCgogCiMgMjMgIi9ob21l
L3JlZDEvZGF0YS9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9wcmN2YXIuaCIgMgoKCiAKCnR5cGVkZWYg
c3RydWN0IFBSQ29uZFZhciBQUkNvbmRWYXI7CgogCgoKCgoKCgoKCgpleHRlcm4gICBQUkNvbmRW
YXIqICAgICBQUl9OZXdDb25kVmFyKFBSTG9jayAqbG9jayk7CgogCgoKCgoKZXh0ZXJuICAgdm9p
ZCAgICAgUFJfRGVzdHJveUNvbmRWYXIoUFJDb25kVmFyICpjdmFyKTsKCiAKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKZXh0ZXJuICAgUFJTdGF0dXMgICAgIFBSX1dhaXRDb25kVmFyKFBSQ29u
ZFZhciAqY3ZhciwgUFJJbnRlcnZhbFRpbWUgdGltZW91dCk7CgogCgoKCgoKCgoKCgoKCmV4dGVy
biAgIFBSU3RhdHVzICAgICBQUl9Ob3RpZnlDb25kVmFyKFBSQ29uZFZhciAqY3Zhcik7CgogCgoK
CgoKCgpleHRlcm4gICBQUlN0YXR1cyAgICAgUFJfTm90aWZ5QWxsQ29uZFZhcihQUkNvbmRWYXIg
KmN2YXIpOwoKIAoKCiMgMjYgIi9ob21lL3JlZDEvZGF0YS9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9u
c3ByLmgiIDIKCiMgMSAiL2hvbWUvcmVkMS9kYXRhL21vemlsbGEvZGlzdC9pbmNsdWRlL3ByZHRv
YS5oIiAxCiAKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgogCgoKCgoKCgoKCgoKCgoKCgpleHRl
cm4gICBQUkZsb2F0NjQgICAgCgpQUl9zdHJ0b2QoY29uc3QgY2hhciAqczAwLCBjaGFyICoqc2Up
OwoKIAoKCgoKCmV4dGVybiAgIHZvaWQgICAgIFBSX2NudnRmKGNoYXIgKmJ1ZiwgUFJJbnRuIGJ1
ZnN6LCBQUkludG4gcHJjc24sIFBSRmxvYXQ2NCBmdmFsKTsKCiAKCgoKCgoKCgoKCmV4dGVybiAg
IFBSU3RhdHVzICAgICBQUl9kdG9hKFBSRmxvYXQ2NCBkLCBQUkludG4gbW9kZSwgUFJJbnRuIG5k
aWdpdHMsCglQUkludG4gKmRlY3B0LCBQUkludG4gKnNpZ24sIGNoYXIgKipydmUsIGNoYXIgKmJ1
ZiwgUFJTaXplIGJ1ZnNpemUpOwoKIAoKCiMgMjcgIi9ob21lL3JlZDEvZGF0YS9tb3ppbGxhL2Rp
c3QvaW5jbHVkZS9uc3ByLmgiIDIKCiMgMSAiL2hvbWUvcmVkMS9kYXRhL21vemlsbGEvZGlzdC9p
bmNsdWRlL3ByZW52LmgiIDEKIAogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKIAogCiAKIAoKIAoK
IAoKCgpleHRlcm4gICBjaGFyKiAgICAgUFJfR2V0RW52KGNvbnN0IGNoYXIgKnZhcik7CgoKCgoK
IAoKCiMgMjggIi9ob21lL3JlZDEvZGF0YS9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9uc3ByLmgiIDIK
CiMgMSAiL2hvbWUvcmVkMS9kYXRhL21vemlsbGEvZGlzdC9pbmNsdWRlL3ByZXJyb3IuaCIgMQog
CiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKdHlwZWRlZiBQUkludDMyIFBSRXJyb3JDb2RlOwoK
CgojIDEgIi9ob21lL3JlZDEvZGF0YS9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9wcmVyci5oIiAxCiAK
IAoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCiAKCgogCgoKIAoKCiAKCgogCgoKIAoKCiAKCgog
CgoKIAoKCiAKCgogCgoKIAoKCiAKCgogCgoKIAoKCiAKCgogCgoKIAoKCiAKCgogCgoKIAoKCiAK
CgogCgoKIAoKCiAKCgogCgoKIAoKCiAKCgogCgoKIAoKCiAKCgogCgoKIAoKCiAKCgogCgoKIAoK
CiAKCgogCgoKIAoKCiAKCgogCgoKIAoKCiAKCgogCgoKIAoKCiAKCgogCgoKIAoKCiAKCgogCgoK
IAoKCiAKCgogCgoKIAoKCiAKCgogCgoKIAoKCiAKCgogCgoKIAoKCiAKCgogCgoKIAoKCiAKCgog
CgoKIAoKCiAKCgogCgoKIAoKCiAKCgogCgoKIAoKCiAKCgogCgoKIAoKCmV4dGVybiB2b2lkIG5z
cHJfSW5pdGlhbGl6ZVBSRXJyb3JUYWJsZSh2b2lkKTsKCgoKIyAzMCAiL2hvbWUvcmVkMS9kYXRh
L21vemlsbGEvZGlzdC9pbmNsdWRlL3ByZXJyb3IuaCIgMgoKCiAKCgoKCgpleHRlcm4gICB2b2lk
ICAgICBQUl9TZXRFcnJvcihQUkVycm9yQ29kZSBlcnJvckNvZGUsIFBSSW50MzIgb3NlcnIpOwoK
IAoKCgoKCgoKCmV4dGVybiAgIHZvaWQgICAgIFBSX1NldEVycm9yVGV4dCgKICAgIFBSSW50biB0
ZXh0TGVuZ3RoLCBjb25zdCBjaGFyICp0ZXh0KTsKCiAKCgpleHRlcm4gICBQUkVycm9yQ29kZSAg
ICAgUFJfR2V0RXJyb3Iodm9pZCk7CgogCgoKCmV4dGVybiAgIFBSSW50MzIgICAgIFBSX0dldE9T
RXJyb3Iodm9pZCk7CgogCgoKCgpleHRlcm4gICBQUkludDMyICAgICBQUl9HZXRFcnJvclRleHRM
ZW5ndGgodm9pZCk7CgogCgoKCgpleHRlcm4gICBQUkludDMyICAgICBQUl9HZXRFcnJvclRleHQo
Y2hhciAqdGV4dCk7CgoKIAoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKIAogCgogCgoKCgoKCgoKdHlwZWRlZiBQUlVp
bnQzMiBQUkxhbmd1YWdlQ29kZTsKCgoKIAoKCgoKc3RydWN0IFBSRXJyb3JNZXNzYWdlIHsKICAg
IGNvbnN0IGNoYXIgKiBuYW1lOyAgICAgCiAgICBjb25zdCBjaGFyICogZW5fdGV4dDsgIAp9OwoK
IAoKCgoKc3RydWN0IFBSRXJyb3JUYWJsZSB7CiAgICBjb25zdCBzdHJ1Y3QgUFJFcnJvck1lc3Nh
Z2UgKiBtc2dzOyAgCiAgICBjb25zdCBjaGFyICpuYW1lOyAgCiAgICBQUkVycm9yQ29kZSBiYXNl
OyAgCiAgICBpbnQgbl9tc2dzOyAgCn07CgogCgoKCgpzdHJ1Y3QgUFJFcnJvckNhbGxiYWNrUHJp
dmF0ZTsKCiAKCgoKCgpzdHJ1Y3QgUFJFcnJvckNhbGxiYWNrVGFibGVQcml2YXRlOwoKIAoKCgoK
CgoKCgp0eXBlZGVmIGNvbnN0IGNoYXIgKgpQUkVycm9yQ2FsbGJhY2tMb29rdXBGbihQUkVycm9y
Q29kZSBjb2RlLCBQUkxhbmd1YWdlQ29kZSBsYW5ndWFnZSwgCgkJICAgY29uc3Qgc3RydWN0IFBS
RXJyb3JUYWJsZSAqdGFibGUsCgkJICAgc3RydWN0IFBSRXJyb3JDYWxsYmFja1ByaXZhdGUgKmNi
X3ByaXZhdGUsCgkJICAgc3RydWN0IFBSRXJyb3JDYWxsYmFja1RhYmxlUHJpdmF0ZSAqdGFibGVf
cHJpdmF0ZSk7CgogCgoKCgoKCgoKCnR5cGVkZWYgc3RydWN0IFBSRXJyb3JDYWxsYmFja1RhYmxl
UHJpdmF0ZSAqClBSRXJyb3JDYWxsYmFja05ld1RhYmxlRm4oY29uc3Qgc3RydWN0IFBSRXJyb3JU
YWJsZSAqdGFibGUsCgkJCXN0cnVjdCBQUkVycm9yQ2FsbGJhY2tQcml2YXRlICpjYl9wcml2YXRl
KTsKCiAKIAogCgogCgoKCgoKCgoKCmV4dGVybiAgIGNvbnN0IGNoYXIgKiAgICAgUFJfRXJyb3JU
b1N0cmluZyhQUkVycm9yQ29kZSBjb2RlLAogICAgUFJMYW5ndWFnZUNvZGUgbGFuZ3VhZ2UpOwoK
CiAKCgoKCgoKCgoKZXh0ZXJuICAgY29uc3QgY2hhciAqICAgICBQUl9FcnJvclRvTmFtZShQUkVy
cm9yQ29kZSBjb2RlKTsKCgogCgoKCgoKCgoKCgpleHRlcm4gICBjb25zdCBjaGFyICogY29uc3Qg
KiAgICAgUFJfRXJyb3JMYW5ndWFnZXModm9pZCk7CgoKIAoKCgoKCgoKCgpleHRlcm4gICBQUkVy
cm9yQ29kZSAgICAgUFJfRXJyb3JJbnN0YWxsVGFibGUoY29uc3Qgc3RydWN0IFBSRXJyb3JUYWJs
ZSAqdGFibGUpOwoKCiAKCgoKCgoKCgoKCgoKZXh0ZXJuICAgdm9pZCAgICAgUFJfRXJyb3JJbnN0
YWxsQ2FsbGJhY2soY29uc3QgY2hhciAqIGNvbnN0ICogbGFuZ3VhZ2VzLAoJCQkgICAgICBQUkVy
cm9yQ2FsbGJhY2tMb29rdXBGbiAqbG9va3VwLCAKCQkJICAgICAgUFJFcnJvckNhbGxiYWNrTmV3
VGFibGVGbiAqbmV3dGFibGUsCgkJCSAgICAgIHN0cnVjdCBQUkVycm9yQ2FsbGJhY2tQcml2YXRl
ICpjYl9wcml2YXRlKTsKCiAKCgojIDI5ICIvaG9tZS9yZWQxL2RhdGEvbW96aWxsYS9kaXN0L2lu
Y2x1ZGUvbnNwci5oIiAyCgojIDEgIi9ob21lL3JlZDEvZGF0YS9tb3ppbGxhL2Rpc3QvaW5jbHVk
ZS9wcmluZXQuaCIgMQogCiAKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvc29ja2V0LmgiIDEgMwogCiAKCiAKIAogCgoK
CgojcHJhZ21hIGlkZW50CSJAKCMpc29ja2V0LmgJMS40OAk5OC8wNi8xOSBTTUkiCQoKIAoKCgoK
CgoKCgoKCgoKCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3Vpby5oIiAxIDMKIAogCgogCiAK
IAoKIAoKCgoKCgoKI3ByYWdtYSBpZGVudAkiQCgjKXVpby5oCTEuMjkJOTcvMDYvMjkgU01JIgkK
CgoKCgoKCgoKIAoKCgoKCgoKCgoKCgp0eXBlZGVmIHN0cnVjdCBpb3ZlYyB7CgljYWRkcl90CWlv
dl9iYXNlOwoKCgoJbG9uZwlpb3ZfbGVuOwoKfSBpb3ZlY190OwoKCiMgNTggIi91c3IvaW5jbHVk
ZS9zeXMvdWlvLmgiIDMKCgoKIAoKCnR5cGVkZWYgZW51bSB1aW9fc2VnIHsgVUlPX1VTRVJTUEFD
RSwgVUlPX1NZU1NQQUNFLCBVSU9fVVNFUklTUEFDRSB9IHVpb19zZWdfdDsKCnR5cGVkZWYgc3Ry
dWN0IHVpbyB7Cglpb3ZlY190CSp1aW9faW92OwkgCglpbnQJdWlvX2lvdmNudDsJIAoJbGxvZmZf
dAlfdWlvX29mZnNldDsJIAoJdWlvX3NlZ190IHVpb19zZWdmbGc7CSAKCXNob3J0CXVpb19mbW9k
ZTsJIAoJbGxkYWRkcl90IF91aW9fbGltaXQ7CSAKCXNzaXplX3QJdWlvX3Jlc2lkOwkgCn0gdWlv
X3Q7CgoKCgoKCgoKCgoKCgoKCiAKCgp0eXBlZGVmIGVudW0gdWlvX3J3IHsgVUlPX1JFQUQsIFVJ
T19XUklURSB9IHVpb19yd190OwoKCiMgMTA4ICIvdXNyL2luY2x1ZGUvc3lzL3Vpby5oIiAzCgoK
CgpleHRlcm4gc3NpemVfdCByZWFkdihpbnQsIGNvbnN0IHN0cnVjdCBpb3ZlYyAqLCBpbnQpOwpl
eHRlcm4gc3NpemVfdCB3cml0ZXYoaW50LCBjb25zdCBzdHJ1Y3QgaW92ZWMgKiwgaW50KTsKCgoK
CgoKCgoKCgoKCgoKIyAzMyAiL3Vzci9pbmNsdWRlL3N5cy9zb2NrZXQuaCIgMiAzCgoKCgojIDEg
Ii91c3IvaW5jbHVkZS9zeXMvbmV0Y29uZmlnLmgiIDEgMwogCiAKCiAKIAogCgoKCgojcHJhZ21h
IGlkZW50CSJAKCMpbmV0Y29uZmlnLmgJMS4xNQk5Ny8wMy8xMCBTTUkiCQoKCgoKCgoKCnN0cnVj
dCAgbmV0Y29uZmlnIHsKCWNoYXIJCSpuY19uZXRpZDsJIAoJdW5zaWduZWQgaW50CW5jX3NlbWFu
dGljczsJIAoJdW5zaWduZWQgaW50CW5jX2ZsYWc7CSAKCWNoYXIJCSpuY19wcm90b2ZtbHk7CSAK
CWNoYXIJCSpuY19wcm90bzsJIAoJY2hhcgkJKm5jX2RldmljZTsJIAoJdW5zaWduZWQgaW50CW5j
X25sb29rdXBzOwkgCgljaGFyCQkqKm5jX2xvb2t1cHM7CSAKCXVuc2lnbmVkIGludAluY191bnVz
ZWRbOF07CSAKfTsKCnR5cGVkZWYgc3RydWN0IHsKCXN0cnVjdCBuZXRjb25maWcgKipuY19oZWFk
OwoJc3RydWN0IG5ldGNvbmZpZyAqKm5jX2N1cnI7Cn0gTkNPTkZfSEFORExFOwoKIAoKCgoKCgoK
CiAKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKZXh0ZXJu
IHZvaWQJCSpzZXRuZXRjb25maWcodm9pZCk7CmV4dGVybiBpbnQJCWVuZG5ldGNvbmZpZyh2b2lk
ICopOwpleHRlcm4gc3RydWN0IG5ldGNvbmZpZwkqZ2V0bmV0Y29uZmlnKHZvaWQgKik7CmV4dGVy
biBzdHJ1Y3QgbmV0Y29uZmlnCSpnZXRuZXRjb25maWdlbnQoY2hhciAqKTsKZXh0ZXJuIHZvaWQJ
CWZyZWVuZXRjb25maWdlbnQoc3RydWN0IG5ldGNvbmZpZyAqKTsKZXh0ZXJuIHZvaWQJCSpzZXRu
ZXRwYXRoKHZvaWQpOwpleHRlcm4gaW50CQllbmRuZXRwYXRoKHZvaWQgKik7CmV4dGVybiBzdHJ1
Y3QgbmV0Y29uZmlnICpnZXRuZXRwYXRoKHZvaWQgKik7CgojIDExMyAiL3Vzci9pbmNsdWRlL3N5
cy9uZXRjb25maWcuaCIgMwoKCgoKCgoKIyAzNyAiL3Vzci9pbmNsdWRlL3N5cy9zb2NrZXQuaCIg
MiAzCgoKCgoKCgoKCgp0eXBlZGVmIHVpbnQxNl90CXNhX2ZhbWlseV90OwoKCgoKCgoKCnR5cGVk
ZWYJdWludDMyX3QJc29ja2xlbl90OwoKCgoKCnR5cGVkZWYJdm9pZAkJKlBzb2NrbGVuX3Q7CgoK
CgogCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCiAKCgoKCgogCgoK
CgoKCgoKCgoKCiAKCgoKCgoKCgoKIAoKCnN0cnVjdAlsaW5nZXIgewoJaW50CWxfb25vZmY7CQkg
CglpbnQJbF9saW5nZXI7CQkgCn07CgogCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgogCgoKCnN0cnVjdCBzb2NrYWRkciB7CglzYV9mYW1pbHlfdAlzYV9mYW1pbHk7CSAKCWNo
YXIJCXNhX2RhdGFbMTRdOwkgCn07CgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
IAoKCgoKIAoKCnN0cnVjdCBtc2doZHIgewoJdm9pZAkJKm1zZ19uYW1lOwkJIAoJc29ja2xlbl90
CW1zZ19uYW1lbGVuOwkJIAoJc3RydWN0IGlvdmVjCSptc2dfaW92OwkJIAoJaW50CQltc2dfaW92
bGVuOwkJIAoKCgoKCgoJY2FkZHJfdAkJbXNnX2FjY3JpZ2h0czsJIAoJaW50CQltc2dfYWNjcmln
aHRzbGVuOwoKfTsKCiMgMjkwICIvdXNyL2luY2x1ZGUvc3lzL3NvY2tldC5oIiAzCgoKCgoKIAoK
CgoKIAoKCgoKCiAKCgoKCnN0cnVjdCBjbXNnaGRyIHsKCXNvY2tsZW5fdAljbXNnX2xlbjsJIAoJ
aW50CQljbXNnX2xldmVsOwkgCglpbnQJCWNtc2dfdHlwZTsJIAp9OwoKIyAzMjUgIi91c3IvaW5j
bHVkZS9zeXMvc29ja2V0LmgiIDMKCgojIDM0OSAiL3Vzci9pbmNsdWRlL3N5cy9zb2NrZXQuaCIg
MwoKCiMgMzcyICIvdXNyL2luY2x1ZGUvc3lzL3NvY2tldC5oIiAzCgoKCgoKCgoKCgoKCmV4dGVy
biBpbnQgYWNjZXB0KGludCwgc3RydWN0IHNvY2thZGRyICosIFBzb2NrbGVuX3QpOwpleHRlcm4g
aW50IGJpbmQoaW50LCBjb25zdCBzdHJ1Y3Qgc29ja2FkZHIgKiwgc29ja2xlbl90KTsKZXh0ZXJu
IGludCBjb25uZWN0KGludCwgY29uc3Qgc3RydWN0IHNvY2thZGRyICosIHNvY2tsZW5fdCk7CmV4
dGVybiBpbnQgZ2V0cGVlcm5hbWUoaW50LCBzdHJ1Y3Qgc29ja2FkZHIgKiwgUHNvY2tsZW5fdCk7
CmV4dGVybiBpbnQgZ2V0c29ja25hbWUoaW50LCBzdHJ1Y3Qgc29ja2FkZHIgKiwgUHNvY2tsZW5f
dCk7CmV4dGVybiBpbnQgZ2V0c29ja29wdChpbnQsIGludCwgaW50LCB2b2lkICosIFBzb2NrbGVu
X3QpOwpleHRlcm4gaW50IGxpc3RlbihpbnQsIGludCk7CSAKZXh0ZXJuIGludCBzb2NrZXRwYWly
KGludCwgaW50LCBpbnQsIGludCAqKTsKZXh0ZXJuIHNzaXplX3QgcmVjdihpbnQsIHZvaWQgKiwg
c2l6ZV90LCBpbnQpOwpleHRlcm4gc3NpemVfdCByZWN2ZnJvbShpbnQsIHZvaWQgKiwgc2l6ZV90
LCBpbnQsIHN0cnVjdCBzb2NrYWRkciAqLAoJUHNvY2tsZW5fdCk7CmV4dGVybiBzc2l6ZV90IHJl
Y3Ztc2coaW50LCBzdHJ1Y3QgbXNnaGRyICosIGludCk7CmV4dGVybiBzc2l6ZV90IHNlbmQoaW50
LCBjb25zdCB2b2lkICosIHNpemVfdCwgaW50KTsKZXh0ZXJuIHNzaXplX3Qgc2VuZG1zZyhpbnQs
IGNvbnN0IHN0cnVjdCBtc2doZHIgKiwgaW50KTsKZXh0ZXJuIHNzaXplX3Qgc2VuZHRvKGludCwg
Y29uc3Qgdm9pZCAqLCBzaXplX3QsIGludCwgY29uc3Qgc3RydWN0IHNvY2thZGRyICosCglzb2Nr
bGVuX3QpOwpleHRlcm4gaW50IHNldHNvY2tvcHQoaW50LCBpbnQsIGludCwgY29uc3Qgdm9pZCAq
LCBzb2NrbGVuX3QpOwpleHRlcm4gaW50IHNodXRkb3duKGludCwgaW50KTsKZXh0ZXJuIGludCBz
b2NrZXQoaW50LCBpbnQsIGludCk7CiMgNDIxICIvdXNyL2luY2x1ZGUvc3lzL3NvY2tldC5oIiAz
CgoKCgoKCgoKIyA0OSAiL2hvbWUvcmVkMS9kYXRhL21vemlsbGEvZGlzdC9pbmNsdWRlL3ByaW5l
dC5oIiAyCgojIDEgIi91c3IvaW5jbHVkZS9uZXRpbmV0L2luLmgiIDEgMwogCgoKCiAKCgoKCgoK
CgoKCgogCgoKCgoKCgojcHJhZ21hIGlkZW50CSJAKCMpaW4uaAkxLjIwCTk4LzA0LzE5IFNNSSIK
CiAKCgoKCgoKCgoKCiMgMSAiL2hvbWUvcmVkMS9nY2MtMi45NS4zL2xpYi9nY2MtbGliL3NwYXJj
LXN1bi1zb2xhcmlzMi43LzIuOTUuMy9pbmNsdWRlL3N5cy9zdHJlYW0uaCIgMSAzCgoKCgojIDEg
Ii91c3IvaW5jbHVkZS9zeXMvc3RyZWFtLmgiIDEgMwogCiAKCiAKIAogCgogCgoKCgoKCgojcHJh
Z21hIGlkZW50CSJAKCMpc3RyZWFtLmgJMS43OQk5OC8wNi8xMSBTTUkiCQoKIAoKCgojIDEgIi91
c3IvaW5jbHVkZS9zeXMvdm5vZGUuaCIgMSAzCiAKIAoKIAogCiAKCiAKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgojcHJhZ21hIGlkZW50CSJAKCMpdm5vZGUuaAkxLjgyCTk4LzEwLzA4IFNNSSIK
CgojIDEgIi91c3IvaW5jbHVkZS9zeXMvdF9sb2NrLmgiIDEgMwogCgoKCgogCgoKCgoKCgoKI3By
YWdtYSBpZGVudAkiQCgjKXRfbG9jay5oCTEuNDUJOTgvMDIvMDEgU01JIgoKCiMgMSAiL3Vzci9p
bmNsdWRlL3N5cy9tYWNobG9jay5oIiAxIDMKIAoKCgoKCgoKI3ByYWdtYSBpZGVudAkiQCgjKW1h
Y2hsb2NrLmgJMS4xOQk5OC8wNC8xNCBTTUkiCgoKCgoKCgoKCiMgMjkgIi91c3IvaW5jbHVkZS9z
eXMvbWFjaGxvY2suaCIgMwoKCgoKCgoKdHlwZWRlZglsb2NrX3QJZGlzcF9sb2NrX3Q7CQkgCgog
CgoKCgoKIAoKCgoKCgoKIAoKCmV4dGVybglpbnQJaHJlc19sb2NrOwpleHRlcm4JaW50CWNsb2Nr
X3JlczsKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCiMgMTggIi91c3IvaW5jbHVkZS9zeXMvdF9s
b2NrLmgiIDIgMwoKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3BhcmFtLmgiIDEgMwogCiAKCiAKIAog
CgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKI3ByYWdtYSBpZGVudAkiQCgjKXBhcmFtLmgJ
MS42NAk5OC8wOS8zMCBTTUkiCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoJCQkJIAoJCQkJIAoJCQkJIAoKIAoKCgoKCgogCgoKCgoKIAoKCgoKIAoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoK
CgoKCgoKCgoKCgogCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoK
CgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCiAKCgoKCgoKIAoKCgoKIyAyNjcgIi91c3IvaW5jbHVk
ZS9zeXMvcGFyYW0uaCIgMwoKCgoKCgogCgoKCgojIDM5NSAiL3Vzci9pbmNsdWRlL3N5cy9wYXJh
bS5oIiAzCgoKIAoKCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3VuaXN0ZC5oIiAxIDMKIAoK
CgoKCgoKCgogCgoKCgogCgoKCgoKCgoKI3ByYWdtYSBpZGVudAkiQCgjKXVuaXN0ZC5oCTEuMzYJ
OTgvMDcvMTYgU01JIgkKCgoKCgoKCiAKCgoKIAoKCiAKCgoKCiAKCgoKCgogCgoKCgoKCgoKCgoK
CgoKCgoKCiAKCiAKCgoKCgoKCgogCgoKCgogCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgogCgoKCgoKIAoKCgoKCgoKIAoKCgoKCgoK
CgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCiAKCiAKCgoKCgoKCgoK
IAoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgojIDQwNSAi
L3Vzci9pbmNsdWRlL3N5cy9wYXJhbS5oIiAyIDMKCgoKCgoKCmV4dGVybiBsb25nIF9zeXNjb25m
KGludCk7CSAKCgoKCgoKCgoKCgoKCgoKCiMgMTkgIi91c3IvaW5jbHVkZS9zeXMvdF9sb2NrLmgi
IDIgMwoKIyAxICIvdXNyL2luY2x1ZGUvc3lzL211dGV4LmgiIDEgMwogCgoKCgoKCgojcHJhZ21h
IGlkZW50CSJAKCMpbXV0ZXguaAkxLjIwCTk4LzAyLzAxIFNNSSIKCgoKCgoKCgoKCgogCgoKCgoK
CgoKCgoKCgoKCgoKdHlwZWRlZiBlbnVtIHsKCU1VVEVYX0FEQVBUSVZFID0gMCwJIAoJTVVURVhf
U1BJTiA9IDEsCQkgCglNVVRFWF9EUklWRVIgPSA0LAkgCglNVVRFWF9ERUZBVUxUID0gNgkgCn0g
a211dGV4X3R5cGVfdDsKCnR5cGVkZWYgc3RydWN0IG11dGV4IHsKCgoKCXZvaWQJKl9vcGFxdWVb
Ml07Cgp9IGttdXRleF90OwoKIyA2NyAiL3Vzci9pbmNsdWRlL3N5cy9tdXRleC5oIiAzCgoKCgoK
CgoKCiMgMjAgIi91c3IvaW5jbHVkZS9zeXMvdF9sb2NrLmgiIDIgMwoKIyAxICIvdXNyL2luY2x1
ZGUvc3lzL3J3bG9jay5oIiAxIDMKIAoKCgoKCgoKI3ByYWdtYSBpZGVudAkiQCgjKXJ3bG9jay5o
CTEuOQk5OC8wMi8xOCBTTUkiCgogCgoKCgoKCgoKCgoKdHlwZWRlZiBlbnVtIHsKCVJXX0RSSVZF
UiA9IDIsCQkgCglSV19ERUZBVUxUID0gNAkJIAp9IGtyd190eXBlX3Q7Cgp0eXBlZGVmIGVudW0g
ewoJUldfV1JJVEVSLAoJUldfUkVBREVSCn0ga3J3X3Q7Cgp0eXBlZGVmIHN0cnVjdCBfa3J3bG9j
ayB7Cgl2b2lkCSpfb3BhcXVlWzFdOwp9IGtyd2xvY2tfdDsKCiMgNTggIi91c3IvaW5jbHVkZS9z
eXMvcndsb2NrLmgiIDMKCgoKCgoKCgoKIyAyMSAiL3Vzci9pbmNsdWRlL3N5cy90X2xvY2suaCIg
MiAzCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvc2VtYXBob3JlLmgiIDEgMwogCgoKCgoKCgojcHJh
Z21hIGlkZW50CSJAKCMpc2VtYXBob3JlLmgJMS41CTk4LzAyLzAxIFNNSSIKCiAKCgoKCgoKCgoK
CgoKCnR5cGVkZWYgZW51bSB7CglTRU1BX0RFRkFVTFQsCglTRU1BX0RSSVZFUgp9IGtzZW1hX3R5
cGVfdDsKCnR5cGVkZWYgc3RydWN0IF9rc2VtYSB7Cgl2b2lkCSogX29wYXF1ZVsyXTsJIAp9IGtz
ZW1hX3Q7CgojIDQ2ICIvdXNyL2luY2x1ZGUvc3lzL3NlbWFwaG9yZS5oIiAzCgoKCgoKCgoKCiMg
MjIgIi91c3IvaW5jbHVkZS9zeXMvdF9sb2NrLmgiIDIgMwoKIyAxICIvdXNyL2luY2x1ZGUvc3lz
L2NvbmR2YXIuaCIgMSAzCiAKCgoKCiAKCgoKCgoKCgoKCiNwcmFnbWEgaWRlbnQJIkAoIyljb25k
dmFyLmgJMS4xMAk5OC8wMi8xOCBTTUkiCgoKCgoKCgoKCgoKCgoKIAoKCgp0eXBlZGVmIHN0cnVj
dCBfa2NvbmR2YXIgewoJdXNob3J0X3QJX29wYXF1ZTsKfSBrY29uZHZhcl90OwoKdHlwZWRlZgll
bnVtIHsKCUNWX0RFRkFVTFQsCglDVl9EUklWRVIKfSBrY3ZfdHlwZV90OwoKCiMgNjMgIi91c3Iv
aW5jbHVkZS9zeXMvY29uZHZhci5oIiAzCgoKCgoKCgoKCiMgMjMgIi91c3IvaW5jbHVkZS9zeXMv
dF9sb2NrLmgiIDIgMwoKCgoKCgoKCgogCgoKCgoKCgoKCiMgNzYgIi91c3IvaW5jbHVkZS9zeXMv
dF9sb2NrLmgiIDMKCgoKCgoKCgoKIyAzOCAiL3Vzci9pbmNsdWRlL3N5cy92bm9kZS5oIiAyIDMK
CgojIDEgIi91c3IvaW5jbHVkZS9zeXMvY3JlZC5oIiAxIDMKIAogCgogCiAKIAoKIAoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKI3ByYWdtYSBpZGVudAkiQCgjKWNyZWQuaAkxLjIxCTk3LzAxLzA5
IFNNSSIJCgoKCgoKCgoKCiAKCgoKCgp0eXBlZGVmIHN0cnVjdCBjcmVkIHsKCXVpbnRfdAljcl9y
ZWY7CQkJIAoJdWlkX3QJY3JfdWlkOwkJCSAKCWdpZF90CWNyX2dpZDsJCQkgCgl1aWRfdAljcl9y
dWlkOwkJIAoJZ2lkX3QJY3JfcmdpZDsJCSAKCXVpZF90CWNyX3N1aWQ7CQkgCglnaWRfdAljcl9z
Z2lkOwkJIAoJdWludF90CWNyX25ncm91cHM7CQkgCglnaWRfdAljcl9ncm91cHNbMV07CQkgCn0g
Y3JlZF90OwoKIyA4OSAiL3Vzci9pbmNsdWRlL3N5cy9jcmVkLmgiIDMKCgoKCgoKCiMgNDAgIi91
c3IvaW5jbHVkZS9zeXMvdm5vZGUuaCIgMiAzCgoKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3Jlc291
cmNlLmgiIDEgMwogCiAKCiAKIAogCgogCgoKCgoKCgojcHJhZ21hIGlkZW50CSJAKCMpcmVzb3Vy
Y2UuaAkxLjI1CTk4LzA2LzMwIFNNSSIJCgoKCgoKCgoKCgogCgoKCgoKCgoKIAoKCgoKCgoKCgoK
CgoKCiMgNTkgIi91c3IvaW5jbHVkZS9zeXMvcmVzb3VyY2UuaCIgMwoKCiAKCgoKCgp0eXBlZGVm
IHVuc2lnbmVkIGxvbmcJcmxpbV90OwoKCgoKCiMgODEgIi91c3IvaW5jbHVkZS9zeXMvcmVzb3Vy
Y2UuaCIgMwoKCgoKIyAxMDAgIi91c3IvaW5jbHVkZS9zeXMvcmVzb3VyY2UuaCIgMwoKCnN0cnVj
dCBybGltaXQgewoJcmxpbV90CXJsaW1fY3VyOwkJIAoJcmxpbV90CXJsaW1fbWF4OwkJIAp9OwoK
IAoKCnR5cGVkZWYgdV9sb25nbG9uZ190CXJsaW02NF90OwoKCgoKCnN0cnVjdCBybGltaXQ2NCB7
CglybGltNjRfdAlybGltX2N1cjsJIAoJcmxpbTY0X3QJcmxpbV9tYXg7CSAKfTsKCgoKIyAxMzgg
Ii91c3IvaW5jbHVkZS9zeXMvcmVzb3VyY2UuaCIgMwoKCgoKCnN0cnVjdAlydXNhZ2UgewoJc3Ry
dWN0IHRpbWV2YWwgcnVfdXRpbWU7CSAKCXN0cnVjdCB0aW1ldmFsIHJ1X3N0aW1lOwkgCglsb25n
CXJ1X21heHJzczsJCSAKCWxvbmcJcnVfaXhyc3M7CQkgCglsb25nCXJ1X2lkcnNzOwkJIAoJbG9u
ZwlydV9pc3JzczsJCSAKCWxvbmcJcnVfbWluZmx0OwkJIAoJbG9uZwlydV9tYWpmbHQ7CQkgCgls
b25nCXJ1X25zd2FwOwkJIAoJbG9uZwlydV9pbmJsb2NrOwkJIAoJbG9uZwlydV9vdWJsb2NrOwkJ
IAoJbG9uZwlydV9tc2dzbmQ7CQkgCglsb25nCXJ1X21zZ3JjdjsJCSAKCWxvbmcJcnVfbnNpZ25h
bHM7CQkgCglsb25nCXJ1X252Y3N3OwkJIAoJbG9uZwlydV9uaXZjc3c7CQkgCn07CgojIDE3NCAi
L3Vzci9pbmNsdWRlL3N5cy9yZXNvdXJjZS5oIiAzCgoKIyAxODkgIi91c3IvaW5jbHVkZS9zeXMv
cmVzb3VyY2UuaCIgMwoKCgoKZXh0ZXJuIGludCBzZXRybGltaXQoaW50LCBjb25zdCBzdHJ1Y3Qg
cmxpbWl0ICopOwpleHRlcm4gaW50IGdldHJsaW1pdChpbnQsIHN0cnVjdCBybGltaXQgKik7Cgog
CgoKZXh0ZXJuIGludCBzZXRybGltaXQ2NChpbnQsIGNvbnN0IHN0cnVjdCBybGltaXQ2NCAqKTsK
ZXh0ZXJuIGludCBnZXRybGltaXQ2NChpbnQsIHN0cnVjdCBybGltaXQ2NCAqKTsKCgpleHRlcm4g
aW50IGdldHByaW9yaXR5KGludCwgaWRfdCk7CmV4dGVybiBpbnQgc2V0cHJpb3JpdHkoaW50LCBp
ZF90LCBpbnQpOwpleHRlcm4gaW50IGdldHJ1c2FnZShpbnQsIHN0cnVjdCBydXNhZ2UgKik7Cgoj
IDIyMyAiL3Vzci9pbmNsdWRlL3N5cy9yZXNvdXJjZS5oIiAzCgoKCgoKCgoKCiMgNDIgIi91c3Iv
aW5jbHVkZS9zeXMvdm5vZGUuaCIgMiAzCgojIDEgIi91c3IvaW5jbHVkZS92bS9zZWdfZW51bS5o
IiAxIDMKIAogCgogCiAKIAoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKI3ByYWdtYSBpZGVu
dAkiQCgjKXNlZ19lbnVtLmgJMS4zCTk1LzEyLzIyIFNNSSIKCgoKCgogCgoKCgogCgoKCgplbnVt
IGZhdWx0X3R5cGUgewoJRl9JTlZBTCwJCSAKCUZfUFJPVCwJCQkgCglGX1NPRlRMT0NLLAkJIAoJ
Rl9TT0ZUVU5MT0NLCQkgCn07CgogCgoKZW51bSBsb2NrX3R5cGUgewoJTF9QQUdFTE9DSywJCSAK
CUxfUEFHRVVOTE9DSywJCSAKCUxfUEFHRVJFQ0xBSU0JCSAKfTsKCiAKCgplbnVtIHNlZ19ydyB7
CglTX09USEVSLAkJIAoJU19SRUFELAkJCSAKCVNfV1JJVEUsCQkgCglTX0VYRUMsCQkJIAoJU19D
UkVBVEUJCSAKfTsKCgoKCgoKIyA0MyAiL3Vzci9pbmNsdWRlL3N5cy92bm9kZS5oIiAyIDMKCgoK
CgoKCgoKCiAKCgoKCgogCgoKCnR5cGVkZWYgZW51bSB2dHlwZSB7CglWTk9OCT0gMCwKCVZSRUcJ
PSAxLAoJVkRJUgk9IDIsCglWQkxLCT0gMywKCVZDSFIJPSA0LAoJVkxOSwk9IDUsCglWRklGTwk9
IDYsCglWRE9PUgk9IDcsCglWUFJPQwk9IDgsCglWU09DSwk9IDksCglWQkFECT0gMTAKfSB2dHlw
ZV90OwoKIAoKCgoKCgoKCiAKdHlwZWRlZiBzdHJ1Y3Qgdm5vZGUgewoJa211dGV4X3QJdl9sb2Nr
OwkJCSAKCXVzaG9ydF90CXZfZmxhZzsJCQkgCgl1aW50X3QJCXZfY291bnQ7CQkgCglzdHJ1Y3Qg
dmZzCSp2X3Zmc21vdW50ZWRoZXJlOwkgCglzdHJ1Y3Qgdm5vZGVvcHMJKnZfb3A7CQkJIAoJc3Ry
dWN0IHZmcwkqdl92ZnNwOwkJIAoJc3RydWN0IHN0ZGF0YQkqdl9zdHJlYW07CQkgCglzdHJ1Y3Qg
cGFnZQkqdl9wYWdlczsJCSAKCWVudW0gdnR5cGUJdl90eXBlOwkJCSAKCWRldl90CQl2X3JkZXY7
CQkJIAoJY2FkZHJfdAkJdl9kYXRhOwkJCSAKCXN0cnVjdCBmaWxvY2sJKnZfZmlsb2NrczsJCSAK
CXN0cnVjdCBzaHJsb2NrbGlzdCAqdl9zaHJsb2NrczsJCSAKCWtjb25kdmFyX3QJdl9jdjsJCQkg
Cn0gdm5vZGVfdDsKCiAKCgoKCgoKCgoKCgoKCiAKCgoKCgogCgoKCgogCgoKCgoKIAoKCgoKCgoK
CiAKCgoKCgogCgoKCgoKCnR5cGVkZWYgc3RydWN0IHZhdHRyIHsKCXVpbnRfdAkJdmFfbWFzazsJ
IAoJdnR5cGVfdAkJdmFfdHlwZTsJIAoJbW9kZV90CQl2YV9tb2RlOwkgCgl1aWRfdAkJdmFfdWlk
OwkJIAoJZ2lkX3QJCXZhX2dpZDsJCSAKCWRldl90CQl2YV9mc2lkOwkgCgl1X2xvbmdsb25nX3QJ
dmFfbm9kZWlkOwkgCglubGlua190CQl2YV9ubGluazsJIAoJdV9vZmZzZXRfdAl2YV9zaXplOwkg
Cgl0aW1lc3RydWNfdAl2YV9hdGltZTsJIAoJdGltZXN0cnVjX3QJdmFfbXRpbWU7CSAKCXRpbWVz
dHJ1Y190CXZhX2N0aW1lOwkgCglkZXZfdAkJdmFfcmRldjsJIAoJdWludF90CQl2YV9ibGtzaXpl
OwkgCgl1X2xvbmdsb25nX3QJdmFfbmJsb2NrczsJIAoJdWludF90CQl2YV92Y29kZTsJIAp9IHZh
dHRyX3Q7CgojIDE5OSAiL3Vzci9pbmNsdWRlL3N5cy92bm9kZS5oIiAzCgoKdHlwZWRlZiB2YXR0
cl90CQl2YXR0cjMyX3Q7CgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoK
CiAKCgoKCgoKCgoKIAoKCgoKCgogCgoKZW51bSBybQkJeyBSTUZJTEUsIFJNRElSRUNUT1JZIH07
CSAKZW51bSBzeW1mb2xsb3cJeyBOT19GT0xMT1csIEZPTExPVyB9OwkJIAplbnVtIHZjZXhjbAl7
IE5PTkVYQ0wsIEVYQ0wgfTsJCSAKZW51bSBjcmVhdGUJeyBDUkNSRUFULCBDUk1LTk9ELCBDUk1L
RElSIH07CSAKCnR5cGVkZWYgZW51bSBybQkJcm1fdDsKdHlwZWRlZiBlbnVtIHN5bWZvbGxvdwlz
eW1mb2xsb3dfdDsKdHlwZWRlZiBlbnVtIHZjZXhjbAl2Y2V4Y2xfdDsKdHlwZWRlZiBlbnVtIGNy
ZWF0ZQljcmVhdGVfdDsKCiAKCgoKdHlwZWRlZiBzdHJ1Y3QgdnNlY2F0dHIgewoJdWludF90CQl2
c2FfbWFzazsJIAoJaW50CQl2c2FfYWNsY250OwkgCgl2b2lkCQkqdnNhX2FjbGVudHA7CSAKCWlu
dAkJdnNhX2RmYWNsY250OwkgCgl2b2lkCQkqdnNhX2RmYWNsZW50cDsJIAp9IHZzZWNhdHRyX3Q7
CgogCgoKCgoKIAoKCnN0cnVjdCBwYXRobmFtZTsKc3RydWN0IGZpZDsKc3RydWN0IGZsb2NrNjQ7
CnN0cnVjdCBzaHJsb2NrOwpzdHJ1Y3QgcGFnZTsKc3RydWN0IHNlZzsKc3RydWN0IGFzOwpzdHJ1
Y3QgcG9sbGhlYWQ7CgogCgoKdHlwZWRlZiBzdHJ1Y3Qgdm5vZGVvcHMgewoJaW50CSgqdm9wX29w
ZW4pKHN0cnVjdCB2bm9kZSAqKnZwcCwgaW50IGZsYWcsIHN0cnVjdCBjcmVkICpjcik7CglpbnQJ
KCp2b3BfY2xvc2UpKHN0cnVjdCB2bm9kZSAqdnAsIGludCBmbGFnLCBpbnQgY291bnQsCgkJCQlv
ZmZzZXRfdCBvZmZzZXQsIHN0cnVjdCBjcmVkICpjcik7CglpbnQJKCp2b3BfcmVhZCkoc3RydWN0
IHZub2RlICp2cCwgc3RydWN0IHVpbyAqdWlvcCwgaW50IGlvZmxhZywKCQkJICAgIHN0cnVjdCBj
cmVkICpjcik7CglpbnQJKCp2b3Bfd3JpdGUpKHN0cnVjdCB2bm9kZSAqdnAsIHN0cnVjdCB1aW8g
KnVpb3AsIGludCBpb2ZsYWcsCgkJCQlzdHJ1Y3QgY3JlZCAqY3IpOwoJaW50CSgqdm9wX2lvY3Rs
KShzdHJ1Y3Qgdm5vZGUgKnZwLCBpbnQgY21kLCBpbnRwdHJfdCBhcmcsIGludCBmbGFnLAoJCQkJ
c3RydWN0IGNyZWQgKmNyLCBpbnQgKnJ2YWxwKTsKCWludAkoKnZvcF9zZXRmbCkoc3RydWN0IHZu
b2RlICp2cCwgaW50IG9mbGFncywgaW50IG5mbGFncywKCQkJCXN0cnVjdCBjcmVkICpjcik7Cglp
bnQJKCp2b3BfZ2V0YXR0cikoc3RydWN0IHZub2RlICp2cCwgc3RydWN0IHZhdHRyICp2YXAsIGlu
dCBmbGFncywKCQkJCXN0cnVjdCBjcmVkICpjcik7CglpbnQJKCp2b3Bfc2V0YXR0cikoc3RydWN0
IHZub2RlICp2cCwgc3RydWN0IHZhdHRyICp2YXAsIGludCBmbGFncywKCQkJCXN0cnVjdCBjcmVk
ICpjcik7CglpbnQJKCp2b3BfYWNjZXNzKShzdHJ1Y3Qgdm5vZGUgKnZwLCBpbnQgbW9kZSwgaW50
IGZsYWdzLAoJCQkJc3RydWN0IGNyZWQgKmNyKTsKCWludAkoKnZvcF9sb29rdXApKHN0cnVjdCB2
bm9kZSAqZHZwLCBjaGFyICpubSwgc3RydWN0IHZub2RlICoqdnBwLAoJCQkJc3RydWN0IHBhdGhu
YW1lICpwbnAsIGludCBmbGFncywKCQkJCXN0cnVjdCB2bm9kZSAqcmRpciwgc3RydWN0IGNyZWQg
Kik7CglpbnQJKCp2b3BfY3JlYXRlKShzdHJ1Y3Qgdm5vZGUgKmR2cCwgY2hhciAqbmFtZSwgc3Ry
dWN0IHZhdHRyICp2YXAsCgkJCQl2Y2V4Y2xfdCBleGNsLCBpbnQgbW9kZSwgc3RydWN0IHZub2Rl
ICoqdnBwLAoJCQkJc3RydWN0IGNyZWQgKmNyLCBpbnQgZmxhZyk7CglpbnQJKCp2b3BfcmVtb3Zl
KShzdHJ1Y3Qgdm5vZGUgKnZwLCBjaGFyICpubSwgc3RydWN0IGNyZWQgKmNyKTsKCWludAkoKnZv
cF9saW5rKShzdHJ1Y3Qgdm5vZGUgKnRkdnAsIHN0cnVjdCB2bm9kZSAqc3ZwLCBjaGFyICp0bm0s
CgkJCQlzdHJ1Y3QgY3JlZCAqY3IpOwoJaW50CSgqdm9wX3JlbmFtZSkoc3RydWN0IHZub2RlICpz
ZHZwLCBjaGFyICpzbm0sCgkJCQlzdHJ1Y3Qgdm5vZGUgKnRkdnAsIGNoYXIgKnRubSwgc3RydWN0
IGNyZWQgKmNyKTsKCWludAkoKnZvcF9ta2Rpcikoc3RydWN0IHZub2RlICpkdnAsIGNoYXIgKmRp
cm5hbWUsCgkJCQlzdHJ1Y3QgdmF0dHIgKnZhcCwgc3RydWN0IHZub2RlICoqdnBwLAoJCQkJc3Ry
dWN0IGNyZWQgKmNyKTsKCWludAkoKnZvcF9ybWRpcikoc3RydWN0IHZub2RlICp2cCwgY2hhciAq
bm0sIHN0cnVjdCB2bm9kZSAqY2RpciwKCQkJCXN0cnVjdCBjcmVkICpjcik7CglpbnQJKCp2b3Bf
cmVhZGRpcikoc3RydWN0IHZub2RlICp2cCwgc3RydWN0IHVpbyAqdWlvcCwKCQkJCXN0cnVjdCBj
cmVkICpjciwgaW50ICplb2ZwKTsKCWludAkoKnZvcF9zeW1saW5rKShzdHJ1Y3Qgdm5vZGUgKmR2
cCwgY2hhciAqbGlua25hbWUsCgkJCQlzdHJ1Y3QgdmF0dHIgKnZhcCwgY2hhciAqdGFyZ2V0LAoJ
CQkJc3RydWN0IGNyZWQgKmNyKTsKCWludAkoKnZvcF9yZWFkbGluaykoc3RydWN0IHZub2RlICp2
cCwgc3RydWN0IHVpbyAqdWlvcCwKCQkJCXN0cnVjdCBjcmVkICpjcik7CglpbnQJKCp2b3BfZnN5
bmMpKHN0cnVjdCB2bm9kZSAqdnAsIGludCBzeW5jZmxhZywgc3RydWN0IGNyZWQgKmNyKTsKCXZv
aWQJKCp2b3BfaW5hY3RpdmUpKHN0cnVjdCB2bm9kZSAqdnAsIHN0cnVjdCBjcmVkICpjcik7Cglp
bnQJKCp2b3BfZmlkKShzdHJ1Y3Qgdm5vZGUgKnZwLCBzdHJ1Y3QgZmlkICpmaWRwKTsKCXZvaWQJ
KCp2b3Bfcndsb2NrKShzdHJ1Y3Qgdm5vZGUgKnZwLCBpbnQgd3JpdGVfbG9jayk7Cgl2b2lkCSgq
dm9wX3J3dW5sb2NrKShzdHJ1Y3Qgdm5vZGUgKnZwLCBpbnQgd3JpdGVfbG9jayk7CglpbnQJKCp2
b3Bfc2Vlaykoc3RydWN0IHZub2RlICp2cCwgb2Zmc2V0X3Qgb29mZiwgb2Zmc2V0X3QgKm5vZmZw
KTsKCWludAkoKnZvcF9jbXApKHN0cnVjdCB2bm9kZSAqdnAxLCBzdHJ1Y3Qgdm5vZGUgKnZwMik7
CglpbnQJKCp2b3BfZnJsb2NrKShzdHJ1Y3Qgdm5vZGUgKnZwLCBpbnQgY21kLCBzdHJ1Y3QgZmxv
Y2s2NCAqYmZwLAoJCQkJaW50IGZsYWcsIG9mZnNldF90IG9mZnNldCwgc3RydWN0IGNyZWQgKmNy
KTsKCWludAkoKnZvcF9zcGFjZSkoc3RydWN0IHZub2RlICp2cCwgaW50IGNtZCwgc3RydWN0IGZs
b2NrNjQgKmJmcCwKCQkJCWludCBmbGFnLCBvZmZzZXRfdCBvZmZzZXQsIHN0cnVjdCBjcmVkICpj
cik7CglpbnQJKCp2b3BfcmVhbHZwKShzdHJ1Y3Qgdm5vZGUgKnZwLCBzdHJ1Y3Qgdm5vZGUgKip2
cHApOwoJaW50CSgqdm9wX2dldHBhZ2UpKHN0cnVjdCB2bm9kZSAqdnAsIG9mZnNldF90IG9mZiwg
c2l6ZV90IGxlbiwKCQkJCXVpbnRfdCAqcHJvdHAsIHN0cnVjdCBwYWdlICoqcGxhcnIsIHNpemVf
dCBwbHN6LAoJCQkJc3RydWN0IHNlZyAqc2VnLCBjYWRkcl90IGFkZHIsIGVudW0gc2VnX3J3IHJ3
LAoJCQkJc3RydWN0IGNyZWQgKmNyKTsKCWludAkoKnZvcF9wdXRwYWdlKShzdHJ1Y3Qgdm5vZGUg
KnZwLCBvZmZzZXRfdCBvZmYsIHNpemVfdCBsZW4sCgkJCQlpbnQgZmxhZ3MsIHN0cnVjdCBjcmVk
ICpjcik7CglpbnQJKCp2b3BfbWFwKShzdHJ1Y3Qgdm5vZGUgKnZwLCBvZmZzZXRfdCBvZmYsIHN0
cnVjdCBhcyAqYXMsCgkJCSAgICBjYWRkcl90ICphZGRycCwgc2l6ZV90IGxlbiwgdWNoYXJfdCBw
cm90LAoJCQkgICAgdWNoYXJfdCBtYXhwcm90LCB1aW50X3QgZmxhZ3MsIHN0cnVjdCBjcmVkICpj
cik7CglpbnQJKCp2b3BfYWRkbWFwKShzdHJ1Y3Qgdm5vZGUgKnZwLCBvZmZzZXRfdCBvZmYsIHN0
cnVjdCBhcyAqYXMsCgkJCQljYWRkcl90IGFkZHIsIHNpemVfdCBsZW4sIHVjaGFyX3QgcHJvdCwK
CQkJCXVjaGFyX3QgbWF4cHJvdCwgdWludF90IGZsYWdzLCBzdHJ1Y3QgY3JlZCAqY3IpOwoJaW50
CSgqdm9wX2RlbG1hcCkoc3RydWN0IHZub2RlICp2cCwgb2Zmc2V0X3Qgb2ZmLCBzdHJ1Y3QgYXMg
KmFzLAoJCQkJY2FkZHJfdCBhZGRyLCBzaXplX3QgbGVuLCB1aW50X3QgcHJvdCwKCQkJCXVpbnRf
dCBtYXhwcm90LCB1aW50X3QgZmxhZ3MsIHN0cnVjdCBjcmVkICpjcik7CglpbnQJKCp2b3BfcG9s
bCkoc3RydWN0IHZub2RlICp2cCwgc2hvcnQgZXYsIGludCBhbnksIHNob3J0ICpyZXZwLAoJCQlz
dHJ1Y3QgcG9sbGhlYWQgKipwaHBwKTsKCWludAkoKnZvcF9kdW1wKShzdHJ1Y3Qgdm5vZGUgKnZw
LCBjYWRkcl90IGFkZHIsIGludCBsYmRuLAoJCQkJaW50IGRibGtzKTsKCWludAkoKnZvcF9wYXRo
Y29uZikoc3RydWN0IHZub2RlICp2cCwgaW50IGNtZCwgdWxvbmdfdCAqdmFscCwKCQkJCXN0cnVj
dCBjcmVkICpjcik7CglpbnQJKCp2b3BfcGFnZWlvKShzdHJ1Y3Qgdm5vZGUgKnZwLCBzdHJ1Y3Qg
cGFnZSAqcHAsCgkJCQl1X29mZnNldF90IGlvX29mZiwgc2l6ZV90IGlvX2xlbiwgaW50IGZsYWdz
LAoJCQkJc3RydWN0IGNyZWQgKmNyKTsKCWludAkoKnZvcF9kdW1wY3RsKShzdHJ1Y3Qgdm5vZGUg
KnZwLCBpbnQgZnJlZSk7Cgl2b2lkCSgqdm9wX2Rpc3Bvc2UpKHN0cnVjdCB2bm9kZSAqdnAsIHN0
cnVjdCBwYWdlICpwcCwgaW50IGZsYWcsCgkJCQlpbnQgZG4sIHN0cnVjdCBjcmVkICpjcik7Cglp
bnQJKCp2b3Bfc2V0c2VjYXR0cikoc3RydWN0IHZub2RlICp2cCwgdnNlY2F0dHJfdCAqdnNhcCwg
aW50IGZsYWcsCgkJCQkgICAgc3RydWN0IGNyZWQgKmNyKTsKCWludAkoKnZvcF9nZXRzZWNhdHRy
KShzdHJ1Y3Qgdm5vZGUgKnZwLCB2c2VjYXR0cl90ICp2c2FwLCBpbnQgZmxhZywKCQkJCSAgICBz
dHJ1Y3QgY3JlZCAqY3IpOwoJaW50CSgqdm9wX3NocmxvY2spKHN0cnVjdCB2bm9kZSAqdnAsIGlu
dCBjbWQsIHN0cnVjdCBzaHJsb2NrICpzaHIsCgkJCQlpbnQgZmxhZyk7Cn0gdm5vZGVvcHNfdDsK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCiAKCgoKCiAKCgojIDQ5NCAiL3Vzci9pbmNsdWRlL3N5cy92bm9kZS5oIiAz
CgoKCgoKCgoKCgoKCgojIDUxNiAiL3Vzci9pbmNsdWRlL3N5cy92bm9kZS5oIiAzCgogCgoKCgoK
CgogCgoKCgoKCgoKIAoKCgoKCgojIDU3MCAiL3Vzci9pbmNsdWRlL3N5cy92bm9kZS5oIiAzCgoK
CgoKCgojIDIyICIvdXNyL2luY2x1ZGUvc3lzL3N0cmVhbS5oIiAyIDMKCiMgMSAiL3Vzci9pbmNs
dWRlL3N5cy9wb2xsLmgiIDEgMwogCiAKCiAKIAogCgogCgoKCgoKCgojcHJhZ21hIGlkZW50CSJA
KCMpcG9sbC5oCTEuMjcJOTgvMTIvMjMgU01JIgkKCgoKCgogCgoKCnR5cGVkZWYgc3RydWN0IHBv
bGxmZCB7CglpbnQgZmQ7CQkJCSAKCXNob3J0IGV2ZW50czsJCQkgCglzaG9ydCByZXZlbnRzOwkJ
CSAKfSBwb2xsZmRfdDsKCnR5cGVkZWYgdW5zaWduZWQgbG9uZwluZmRzX3Q7CgogCgoKCgoKCgoK
CgoKCiAKCgoKCgoKCgoKIyA2OCAiL3Vzci9pbmNsdWRlL3N5cy9wb2xsLmgiIDMKCgojIDEyMCAi
L3Vzci9pbmNsdWRlL3N5cy9wb2xsLmgiIDMKCgoKCmludCBwb2xsKHN0cnVjdCBwb2xsZmQgKiwg
bmZkc190LCBpbnQpOwoKCgoKCgoKCgoKIyAyMyAiL3Vzci9pbmNsdWRlL3N5cy9zdHJlYW0uaCIg
MiAzCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvc3RybWRlcC5oIiAxIDMKIAoKCgoKIAogCgogCiAK
IAoKCgoKI3ByYWdtYSBpZGVudAkiQCgjKXN0cm1kZXAuaAkxLjEwCTk4LzAxLzA2IFNNSSIJCgoK
CgoKIAoKCgoKIAoKCgoKCiAKCgoKCgogCgoKCgoKCgoKCgojIDI0ICIvdXNyL2luY2x1ZGUvc3lz
L3N0cmVhbS5oIiAyIDMKCgoKIyAxICIvdXNyL2luY2x1ZGUvc3lzL21vZGVsLmgiIDEgMwogCgoK
CgoKCgojcHJhZ21hIGlkZW50CSJAKCMpbW9kZWwuaAkxLjIwCTk3LzA5LzIyIFNNSSIKCgoKCgoK
CgoKCgojIDQ1ICIvdXNyL2luY2x1ZGUvc3lzL21vZGVsLmgiIDMKCgoKIAoKCgoKCnR5cGVkZWYg
dW5zaWduZWQgaW50IG1vZGVsX3Q7CgoKCiMgMTk5ICIvdXNyL2luY2x1ZGUvc3lzL21vZGVsLmgi
IDMKCgoKCgoKCiMgMjcgIi91c3IvaW5jbHVkZS9zeXMvc3RyZWFtLmgiIDIgMwoKCgoKCgogCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCnR5cGVkZWYgc3RydWN0CXF1ZXVlIHsKCXN0
cnVjdAlxaW5pdAkqcV9xaW5mbzsJIAoJc3RydWN0CW1zZ2IJKnFfZmlyc3Q7CSAKCXN0cnVjdAlt
c2diCSpxX2xhc3Q7CSAKCXN0cnVjdAlxdWV1ZQkqcV9uZXh0OwkgCglzdHJ1Y3QJcXVldWUJKnFf
bGluazsJIAoJdm9pZAkJKnFfcHRyOwkJIAoJc2l6ZV90CQlxX2NvdW50OwkgCgl1aW50X3QJCXFf
ZmxhZzsJCSAKCXNzaXplX3QJCXFfbWlucHN6OwkgCgkJCQkJIAoJc3NpemVfdAkJcV9tYXhwc3o7
CSAKCQkJCQkgCglzaXplX3QJCXFfaGl3YXQ7CSAKCXNpemVfdAkJcV9sb3dhdDsJIAoJc3RydWN0
IHFiYW5kCSpxX2JhbmRwOwkgCglrbXV0ZXhfdAlxX2xvY2s7CQkgCglzdHJ1Y3Qgc3RkYXRhIAkq
cV9zdHJlYW07CSAKCXN0cnVjdAlzeW5jcQkqcV9zeW5jcTsJIAoJdW5zaWduZWQgY2hhcglxX25i
YW5kOwkgCglrY29uZHZhcl90CXFfd2FpdDsJCSAKCWtjb25kdmFyX3QJcV9zeW5jOwkJIAoJc3Ry
dWN0CXF1ZXVlCSpxX25mc3J2OwkgCglzdHJ1Y3QJcXVldWUJKnFfbmJzcnY7CSAKCXVzaG9ydF90
CXFfZHJhaW5pbmc7CSAKCXNob3J0CQlxX3N0cnVpb3Q7CSAKCXVpbnRfdAkJcV9zeW5jcW1zZ3M7
CSAKCXNpemVfdAkJcV9tYmxrY250OwkgCn0gcXVldWVfdDsKCiAKCgoKCgoKCgoKCQkJCQkgCgoK
CQkJCQkgCgoKCgoKCgkJCQkJIAoKCgoKCgoKIAoKCgp0eXBlZGVmIHN0cnVjdCBxYmFuZCB7Cglz
dHJ1Y3QgcWJhbmQJKnFiX25leHQ7CSAKCXNpemVfdAkJcWJfY291bnQ7CSAKCXN0cnVjdCBtc2di
CSpxYl9maXJzdDsJIAoJc3RydWN0IG1zZ2IJKnFiX2xhc3Q7CSAKCXNpemVfdAkJcWJfaGl3YXQ7
CSAKCXNpemVfdAkJcWJfbG93YXQ7CSAKCXVpbnRfdAkJcWJfZmxhZzsJIAoJc2l6ZV90CQlxYl9t
YmxrY250OwkgCn0gcWJhbmRfdDsKCiAKCgoKCgoKIAoKCgoKIAoKCnR5cGVkZWYgZW51bSBxZmll
bGRzIHsKCVFISVdBVAk9IDAsCQkgCglRTE9XQVQJPSAxLAkJIAoJUU1BWFBTWgk9IDIsCQkgCglR
TUlOUFNaCT0gMywJCSAKCVFDT1VOVAk9IDQsCQkgCglRRklSU1QJPSA1LAkJIAoJUUxBU1QJPSA2
LAkJIAoJUUZMQUcJPSA3LAkJIAoJUVNUUlVJT1QgPSA4LAkJIAoJUUJBRAk9IDkKfSBxZmllbGRz
X3Q7CgogCgoKc3RydWN0IG1vZHVsZV9pbmZvIHsKCXVzaG9ydF90IG1pX2lkbnVtOwkJIAoJY2hh
ciAJKm1pX2lkbmFtZTsJCSAKCXNzaXplX3QJbWlfbWlucHN6OwkJIAoJc3NpemVfdAltaV9tYXhw
c3o7CQkgCglzaXplX3QJbWlfaGl3YXQ7CQkgCglzaXplX3QgCW1pX2xvd2F0OwkJIAp9OwoKIAoK
CnN0cnVjdAlxaW5pdCB7CglpbnQJKCpxaV9wdXRwKSgpOwkJIAoJaW50CSgqcWlfc3J2cCkoKTsJ
CSAKCWludAkoKnFpX3FvcGVuKSgpOwkJIAoJaW50CSgqcWlfcWNsb3NlKSgpOwkJIAoJaW50CSgq
cWlfcWFkbWluKSgpOwkJIAoJc3RydWN0IG1vZHVsZV9pbmZvICpxaV9taW5mbzsJIAoJc3RydWN0
IG1vZHVsZV9zdGF0ICpxaV9tc3RhdDsJIAoJaW50CSgqcWlfcndwKSgpOwkJIAoJaW50CSgqcWlf
aW5mb3ApKCk7CQkgCglpbnQJcWlfc3RydWlvdDsJCSAKfTsKCiAKCgoKCgoKCiAKCgoKc3RydWN0
IHN0cmVhbXRhYiB7CglzdHJ1Y3QgcWluaXQgKnN0X3JkaW5pdDsKCXN0cnVjdCBxaW5pdCAqc3Rf
d3Jpbml0OwoJc3RydWN0IHFpbml0ICpzdF9tdXhyaW5pdDsKCXN0cnVjdCBxaW5pdCAqc3RfbXV4
d2luaXQ7Cn07CgogCgoKCnN0cnVjdCBsaW5rYmxrIHsKCXF1ZXVlX3QgKmxfcXRvcDsJIAoJCQkJ
IAoJcXVldWVfdCAqbF9xYm90OwkgCglpbnQJbF9pbmRleDsJIAp9OwoKIAoKCnR5cGVkZWYgc3Ry
dWN0IGZyZWVfcnRuIHsKCXZvaWQJKCpmcmVlX2Z1bmMpKCk7CgljYWRkcl90CWZyZWVfYXJnOwp9
IGZydG5fdDsKCiAKCgoKCgoKCgp0eXBlZGVmIHN0cnVjdCBkYXRhYiB7CglmcnRuX3QJCSpkYl9m
cnRucDsKCXVuc2lnbmVkIGNoYXIJKmRiX2Jhc2U7Cgl1bnNpZ25lZCBjaGFyCSpkYl9saW07Cgl1
bnNpZ25lZCBjaGFyCWRiX3JlZjsKCXVuc2lnbmVkIGNoYXIJZGJfdHlwZTsKCXVuc2lnbmVkIGNo
YXIJZGJfZmxhZ3M7Cgl1bnNpZ25lZCBjaGFyCWRiX3N0cnVpb2ZsYWc7Cgl2b2lkCQkqZGJfY2Fj
aGU7CSAKCXN0cnVjdCBtc2diCSpkYl9tYmxrOwoJdm9pZAkJKCpkYl9mcmVlKShzdHJ1Y3QgbXNn
YiAqLCBzdHJ1Y3QgZGF0YWIgKik7Cgl2b2lkCQkoKmRiX2xhc3RmcmVlKShzdHJ1Y3QgbXNnYiAq
LCBzdHJ1Y3QgZGF0YWIgKik7CgoJdm9pZAkJKmRiX3BhZDsJIAoKCXVuc2lnbmVkIGNoYXIJKmRi
X3N0cnVpb2Jhc2U7Cgl1bnNpZ25lZCBjaGFyCSpkYl9zdHJ1aW9saW07Cgl1bnNpZ25lZCBjaGFy
CSpkYl9zdHJ1aW9wdHI7Cgl1bmlvbiB7CgkJZG91YmxlIGVuZm9yY2VfYWxpZ25tZW50OwoJCXVu
c2lnbmVkIGNoYXIgZGF0YVs4XTsKCQl1bnNpZ25lZCB1MTY6MTY7CSAKCQkgCgoKCX0gZGJfc3Ry
dWlvdW47Cn0gZGJsa190OwoKIAoKCnR5cGVkZWYgc3RydWN0CW1zZ2IgewoJc3RydWN0CW1zZ2IJ
KmJfbmV4dDsKCXN0cnVjdCAgbXNnYgkqYl9wcmV2OwoJc3RydWN0CW1zZ2IJKmJfY29udDsKCXVu
c2lnbmVkIGNoYXIJKmJfcnB0cjsKCXVuc2lnbmVkIGNoYXIJKmJfd3B0cjsKCXN0cnVjdCBkYXRh
YiAJKmJfZGF0YXA7Cgl1bnNpZ25lZCBjaGFyCWJfYmFuZDsKCXVuc2lnbmVkIHNob3J0CWJfZmxh
ZzsKCXF1ZXVlX3QJCSpiX3F1ZXVlOwkgCn0gbWJsa190OwoKIAoKCgoKIAoKCgoKCgoKCiAKCgoK
CgkJCQkJIAoKCgoKCiAKCgoKIAoKCgoKCiAKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoK
CgoKIAoKCiAKCgoKCgogCgoKIyAzNzUgIi91c3IvaW5jbHVkZS9zeXMvc3RyZWFtLmgiIDMKCnN0
cnVjdCBpb2NibGsgewoJaW50IAlpb2NfY21kOwkJIAoJY3JlZF90CSppb2NfY3I7CQkgCgl1aW50
X3QJaW9jX2lkOwkJCSAKCXNpemVfdAlpb2NfY291bnQ7CQkgCglpbnQJaW9jX2Vycm9yOwkJIAoJ
aW50CWlvY19ydmFsOwkJIAoJaW50CWlvY19maWxsMTsKCXVpbnRfdAlpb2NfZmxhZzsJCSAKCWlu
dAlpb2NfZmlsbGVyWzJdOwkJIAp9OwoKCnR5cGVkZWYJc3RydWN0IGlvY2JsawkqSU9DUDsKCgoK
CiAKCgoKCgoKCiAKCgoKCgogCgoKIyA0MjEgIi91c3IvaW5jbHVkZS9zeXMvc3RyZWFtLmgiIDMK
CnN0cnVjdCBjb3B5cmVxIHsKCWludAljcV9jbWQ7CQkJIAoJY3JlZF90CSpjcV9jcjsJCQkgCgl1
aW50X3QJY3FfaWQ7CQkJIAoJY2FkZHJfdAljcV9hZGRyOwkJIAoJc2l6ZV90CWNxX3NpemU7CQkg
Cgl1aW50X3QJY3FfZmxhZzsJCSAKCW1ibGtfdAkqY3FfcHJpdmF0ZTsJCSAKCWludAljcV9maWxs
ZXJbNF07CQkgCn07CgoKCgoKIAoKCgkJCQkJIAoKCQkJCQkgCgkJCQkJIAoKIAoKCiMgNDU4ICIv
dXNyL2luY2x1ZGUvc3lzL3N0cmVhbS5oIiAzCgpzdHJ1Y3QgY29weXJlc3AgewoJaW50CWNwX2Nt
ZDsJCQkgCgljcmVkX3QJKmNwX2NyOwkJCSAKCXVpbnRfdAljcF9pZDsJCQkgCgljYWRkcl90CWNw
X3J2YWw7CQkgCgkJCQkJIAoJc2l6ZV90CWNwX3BhZDE7Cgl1aW50X3QJY3BfcGFkMjsKCW1ibGtf
dCAqY3BfcHJpdmF0ZTsJCSAKCXVpbnRfdAljcF9mbGFnOwkJIAoJaW50CWNwX2ZpbGxlclszXTsK
fTsKCgoKCgogCgoKCgp1bmlvbiBpb2N0eXBlcyB7CglzdHJ1Y3QgaW9jYmxrCWlvY2JsazsKCXN0
cnVjdCBjb3B5cmVxCWNvcHlyZXE7CglzdHJ1Y3QgY29weXJlc3AJY29weXJlc3A7Cn07CgogCgoK
CgpzdHJ1Y3Qgc3Ryb3B0aW9ucyB7Cgl1aW50X3QJc29fZmxhZ3M7CQkgCglzaG9ydAlzb19yZWFk
b3B0OwkJIAoJdXNob3J0X3Qgc29fd3JvZmY7CQkgCglzc2l6ZV90CXNvX21pbnBzejsJCSAKCXNz
aXplX3QJc29fbWF4cHN6OwkJIAoJc2l6ZV90CXNvX2hpd2F0OwkJIAoJc2l6ZV90CXNvX2xvd2F0
OwkJIAoJdW5zaWduZWQgY2hhciBzb19iYW5kOwkJIAoJdXNob3J0X3Qgc29fZXJyb3B0OwkJIAoJ
c3NpemVfdAlzb19tYXhibGs7CQkgCgl1c2hvcnRfdCBzb19jb3B5b3B0OwkJIAp9OwoKIAoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgojIDU2NSAiL3Vzci9pbmNsdWRlL3N5cy9zdHJlYW0uaCIgMwoK
CiAKCgoKIAoKCgoKCgogCgoKCgoKCgogCgoKCgoKCiAKCgoKCiAKCgoKCgogCgoKCgogCgoKCgoK
IAoKCgoKIAoKCgoKCiAKCgoKIAoKCgoKIAoKCgoKCgogCgoKCgoKCgoKCiAKCgoKCiAKCgoKCiAK
CgoKCiAKCgoKIyA3NDUgIi91c3IvaW5jbHVkZS9zeXMvc3RyZWFtLmgiIDMKCgogCgoKZXh0ZXJu
IGludCBuc3RycHVzaDsJCQkgCgoKCgoKCiMgNSAiL2hvbWUvcmVkMS9nY2MtMi45NS4zL2xpYi9n
Y2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi43LzIuOTUuMy9pbmNsdWRlL3N5cy9zdHJlYW0uaCIg
MiAzCgoKCgoKCiMgMzggIi91c3IvaW5jbHVkZS9uZXRpbmV0L2luLmgiIDIgMwoKCiAKCgoKCiMg
MSAiL3Vzci9pbmNsdWRlL3N5cy9ieXRlb3JkZXIuaCIgMSAzCiAKIAoKIAogCiAKCgoKCiNwcmFn
bWEgaWRlbnQJIkAoIylieXRlb3JkZXIuaAkxLjE0CTk4LzA0LzE5IFNNSSIJCgoKCgoKCgogCgoK
CgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKIAoKCgoKCiMgNzQgIi91c3IvaW5jbHVkZS9zeXMvYnl0
ZW9yZGVyLmgiIDMKCgoKCgoKCiMgNDUgIi91c3IvaW5jbHVkZS9uZXRpbmV0L2luLmgiIDIgMwoK
CgoKCnR5cGVkZWYJdWludDE2X3QJaW5fcG9ydF90OwoKCgoKdHlwZWRlZgl1aW50MzJfdAlpbl9h
ZGRyX3Q7CgoKCgp0eXBlZGVmIHVpbnQzMl90IGlwYWRkcl90OwoKCgoKCgoKIAoKCgoKCgoKCgoK
CgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKIAoKCgoKCgoKIAoKCgoKCgog
CgoKCgoKCgoKIAoKCgoKCgogCgoKCgoKCgoKCgoKCgoKc3RydWN0IGluX2FkZHIgewoJdW5pb24g
ewoJCXN0cnVjdCB7IHVpbnQ4X3Qgc19iMSwgc19iMiwgc19iMywgc19iNDsgfSBTX3VuX2IgOwoJ
CXN0cnVjdCB7IHVpbnQxNl90IHNfdzEsIHNfdzI7IH0gU191bl93IDsKCgkJdWludDMyX3QgU19h
ZGRyIDsKCgoKCX0gU191biA7CgoKCgoKCn07CgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCiAKCgpzdHJ1Y3Qgc29ja2FkZHJfaW4gewoJc2FfZmFt
aWx5X3QJc2luX2ZhbWlseTsKCWluX3BvcnRfdAlzaW5fcG9ydDsKCXN0cnVjdAlpbl9hZGRyIHNp
bl9hZGRyOwoKCWNoYXIJCXNpbl96ZXJvWzhdOwoKCgp9OwoKIAoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKIAoKCgpzdHJ1Y3QgaXBfbXJlcSB7
CglzdHJ1Y3QgaW5fYWRkcglpbXJfbXVsdGlhZGRyOwkgCglzdHJ1Y3QgaW5fYWRkcglpbXJfaW50
ZXJmYWNlOwkgCn07CgoKIAoKCgoKdHlwZWRlZiBzdHJ1Y3QgewoJc3RydWN0IGluX2FkZHIJaW5f
cHJlZml4X2FkZHI7Cgl1bnNpZ25lZCBpbnQJaW5fcHJlZml4X2xlbjsKfSBpbl9wcmVmaXhfdDsK
CiAKCgoKCgoKCgoKCgoKCgojIDUwICIvaG9tZS9yZWQxL2RhdGEvbW96aWxsYS9kaXN0L2luY2x1
ZGUvcHJpbmV0LmgiIDIKCgoKCgojIDY0ICIvaG9tZS9yZWQxL2RhdGEvbW96aWxsYS9kaXN0L2lu
Y2x1ZGUvcHJpbmV0LmgiCgojIDEgIi91c3IvaW5jbHVkZS9hcnBhL2luZXQuaCIgMSAzCiAKIAoK
IAogCiAKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiNwcmFnbWEgaWRlbnQJIkAoIylpbmV0
LmgJMS4xNgk5OC8wMS8yNiBTTUkiCgoKCgoKCgoKCgoKCiAKCgoKCmV4dGVybglpbnQJaW5ldF9h
dG9uKGNvbnN0IGNoYXIgKiwgc3RydWN0IGluX2FkZHIgKik7CmV4dGVybglpbnQJaW5ldF9uZXRf
cHRvbihpbnQsIGNvbnN0IGNoYXIgKiwgdm9pZCAqLCBzaXplX3QpOwpleHRlcm4JaW50CWluZXRf
cHRvbihpbnQsIGNvbnN0IGNoYXIgKiwgdm9pZCAqKTsKZXh0ZXJuIGluX2FkZHJfdCBpbmV0X2Fk
ZHIoY29uc3QgY2hhciAqKTsKZXh0ZXJuIGluX2FkZHJfdCBpbmV0X2xuYW9mKHN0cnVjdCBpbl9h
ZGRyKTsKZXh0ZXJuIHN0cnVjdCBpbl9hZGRyIGluZXRfbWFrZWFkZHIoaW5fYWRkcl90LCBpbl9h
ZGRyX3QpOwpleHRlcm4gaW5fYWRkcl90IGluZXRfbmV0b2Yoc3RydWN0IGluX2FkZHIpOwpleHRl
cm4gaW5fYWRkcl90IGluZXRfbmV0d29yayhjb25zdCBjaGFyICopOwpleHRlcm4gY2hhciAqaW5l
dF9udG9hKHN0cnVjdCBpbl9hZGRyKTsKCgoKCgoKCgoKCgoKCgojIDY1ICIvaG9tZS9yZWQxL2Rh
dGEvbW96aWxsYS9kaXN0L2luY2x1ZGUvcHJpbmV0LmgiIDIKCgojIDEgIi91c3IvaW5jbHVkZS9u
ZXRkYi5oIiAxIDMKIAogCgogCiAKIAoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKI3By
YWdtYSBpZGVudAkiQCgjKW5ldGRiLmgJMS4yMAk5Ny8wOC8wNSBTTUkiCgoKCgoKCgoKCgoKCgoK
CgpzdHJ1Y3QJaG9zdGVudCB7CgljaGFyCSpoX25hbWU7CSAKCWNoYXIJKipoX2FsaWFzZXM7CSAK
CWludAloX2FkZHJ0eXBlOwkgCglpbnQJaF9sZW5ndGg7CSAKCWNoYXIJKipoX2FkZHJfbGlzdDsJ
IAoKfTsKCiAKCgoKc3RydWN0CW5ldGVudCB7CgljaGFyCQkqbl9uYW1lOwkgCgljaGFyCQkqKm5f
YWxpYXNlczsJIAoJaW50CQluX2FkZHJ0eXBlOwkgCglpbl9hZGRyX3QJbl9uZXQ7CQkgCn07Cgpz
dHJ1Y3QJcHJvdG9lbnQgewoJY2hhcgkqcF9uYW1lOwkgCgljaGFyCSoqcF9hbGlhc2VzOwkgCglp
bnQJcF9wcm90bzsJIAp9OwoKc3RydWN0CXNlcnZlbnQgewoJY2hhcgkqc19uYW1lOwkgCgljaGFy
CSoqc19hbGlhc2VzOwkgCglpbnQJc19wb3J0OwkJIAoJY2hhcgkqc19wcm90bzsJIAp9OwoKCgpz
dHJ1Y3QgaG9zdGVudAkqZ2V0aG9zdGJ5bmFtZV9yCgkoY29uc3QgY2hhciAqLCBzdHJ1Y3QgaG9z
dGVudCAqLCBjaGFyICosIGludCwgaW50ICpoX2Vycm5vcCk7CnN0cnVjdCBob3N0ZW50CSpnZXRo
b3N0YnlhZGRyX3IKCShjb25zdCBjaGFyICosIGludCwgaW50LCBzdHJ1Y3QgaG9zdGVudCAqLCBj
aGFyICosIGludCwgaW50ICpoX2Vycm5vcCk7CnN0cnVjdCBob3N0ZW50CSpnZXRob3N0ZW50X3Io
c3RydWN0IGhvc3RlbnQgKiwgY2hhciAqLCBpbnQsIGludCAqaF9lcnJub3ApOwoKc3RydWN0IHNl
cnZlbnQJKmdldHNlcnZieW5hbWVfcgoJKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKiwg
c3RydWN0IHNlcnZlbnQgKiwgY2hhciAqLCBpbnQpOwpzdHJ1Y3Qgc2VydmVudAkqZ2V0c2VydmJ5
cG9ydF9yCgkoaW50IHBvcnQsIGNvbnN0IGNoYXIgKiwgc3RydWN0IHNlcnZlbnQgKiwgY2hhciAq
LCBpbnQpOwpzdHJ1Y3Qgc2VydmVudAkqZ2V0c2VydmVudF9yKHN0cnVjdAlzZXJ2ZW50ICosIGNo
YXIgKiwgaW50KTsKCnN0cnVjdCBuZXRlbnQJKmdldG5ldGJ5bmFtZV9yCgkoY29uc3QgY2hhciAq
LCBzdHJ1Y3QgbmV0ZW50ICosIGNoYXIgKiwgaW50KTsKc3RydWN0IG5ldGVudAkqZ2V0bmV0Ynlh
ZGRyX3IobG9uZywgaW50LCBzdHJ1Y3QgbmV0ZW50ICosIGNoYXIgKiwgaW50KTsKc3RydWN0IG5l
dGVudAkqZ2V0bmV0ZW50X3Ioc3RydWN0IG5ldGVudCAqLCBjaGFyICosIGludCk7CgpzdHJ1Y3Qg
cHJvdG9lbnQJKmdldHByb3RvYnluYW1lX3IKCShjb25zdCBjaGFyICosIHN0cnVjdCBwcm90b2Vu
dCAqLCBjaGFyICosIGludCk7CnN0cnVjdCBwcm90b2VudAkqZ2V0cHJvdG9ieW51bWJlcl9yCgko
aW50LCBzdHJ1Y3QgcHJvdG9lbnQgKiwgY2hhciAqLCBpbnQpOwpzdHJ1Y3QgcHJvdG9lbnQJKmdl
dHByb3RvZW50X3Ioc3RydWN0IHByb3RvZW50ICosIGNoYXIgKiwgaW50KTsKCmludCBnZXRuZXRn
cmVudF9yKGNoYXIgKiosIGNoYXIgKiosIGNoYXIgKiosIGNoYXIgKiwgaW50KTsKaW50IGlubmV0
Z3IoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAq
KTsKCgogCnN0cnVjdCBob3N0ZW50CSpnZXRob3N0YnluYW1lKGNvbnN0IGNoYXIgKik7CnN0cnVj
dCBob3N0ZW50CSpnZXRob3N0ZW50KHZvaWQpOwoKc3RydWN0IG5ldGVudCAqZ2V0bmV0YnlhZGRy
KGluX2FkZHJfdCwgaW50KTsKCgoKc3RydWN0IG5ldGVudAkqZ2V0bmV0YnluYW1lKGNvbnN0IGNo
YXIgKik7CnN0cnVjdCBuZXRlbnQJKmdldG5ldGVudCh2b2lkKTsKc3RydWN0IHByb3RvZW50CSpn
ZXRwcm90b2J5bmFtZShjb25zdCBjaGFyICopOwpzdHJ1Y3QgcHJvdG9lbnQJKmdldHByb3RvYnlu
dW1iZXIoaW50KTsKc3RydWN0IHByb3RvZW50CSpnZXRwcm90b2VudCh2b2lkKTsKc3RydWN0IHNl
cnZlbnQJKmdldHNlcnZieW5hbWUoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwpzdHJ1Y3Qg
c2VydmVudAkqZ2V0c2VydmJ5cG9ydChpbnQsIGNvbnN0IGNoYXIgKik7CnN0cnVjdCBzZXJ2ZW50
CSpnZXRzZXJ2ZW50KHZvaWQpOwoKaW50CQkgZ2V0bmV0Z3JlbnQoY2hhciAqKiwgY2hhciAqKiwg
Y2hhciAqKik7CnN0cnVjdCBob3N0ZW50CSpnZXRob3N0YnlhZGRyKGNvbnN0IGNoYXIgKiwgaW50
LCBpbnQpOwoKCgoKCmludCBlbmRob3N0ZW50KHZvaWQpOwppbnQgZW5kbmV0ZW50KHZvaWQpOwpp
bnQgZW5kcHJvdG9lbnQodm9pZCk7CmludCBlbmRzZXJ2ZW50KHZvaWQpOwppbnQgc2V0aG9zdGVu
dChpbnQpOwppbnQgc2V0bmV0ZW50KGludCk7CmludCBzZXRwcm90b2VudChpbnQpOwppbnQgc2V0
c2VydmVudChpbnQpOwojIDIxMyAiL3Vzci9pbmNsdWRlL25ldGRiLmgiIDMKCgoKaW50IHNldG5l
dGdyZW50KGNvbnN0IGNoYXIgKik7CmludCBlbmRuZXRncmVudCh2b2lkKTsKaW50IHJjbWQoY2hh
ciAqKiwgdW5zaWduZWQgc2hvcnQsCgljb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgY29uc3Qg
Y2hhciAqLCBpbnQgKik7CmludCByZXhlYyhjaGFyICoqLCB1bnNpZ25lZCBzaG9ydCwKCWNvbnN0
IGNoYXIgKiwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIGludCAqKTsKaW50IHJyZXN2cG9y
dChpbnQgKik7CmludCBydXNlcm9rKGNvbnN0IGNoYXIgKiwgaW50LCBjb25zdCBjaGFyICosIGNv
bnN0IGNoYXIgKik7CiAKc3RydWN0IGhvc3RlbnQJKmdldGhvc3RieW5hbWUyKGNvbnN0IGNoYXIg
KiwgaW50KTsKdm9pZAkJaGVycm9yKGNvbnN0IGNoYXIgKik7CmNvbnN0IGNoYXIJKmhzdHJlcnJv
cihpbnQpOwogCgojIDI4MCAiL3Vzci9pbmNsdWRlL25ldGRiLmgiIDMKCgogCgoKCgpleHRlcm4g
IGludCBoX2Vycm5vOwoKCgoKCgoKCgogCgoKIAoKCgoKCgoKCgoKCgojIDY3ICIvaG9tZS9yZWQx
L2RhdGEvbW96aWxsYS9kaXN0L2luY2x1ZGUvcHJpbmV0LmgiIDIKCgoKCgoKIAoKCgoKCgoKIAoK
CgoKCgoKIyAxMDUgIi9ob21lL3JlZDEvZGF0YS9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9wcmluZXQu
aCIKCgoKIyAzMCAiL2hvbWUvcmVkMS9kYXRhL21vemlsbGEvZGlzdC9pbmNsdWRlL25zcHIuaCIg
MgoKIyAxICIvaG9tZS9yZWQxL2RhdGEvbW96aWxsYS9kaXN0L2luY2x1ZGUvcHJpbml0LmgiIDEK
IAogCgoKCgoKCgoKCgoKCgoKCgoKCgojIDEgIi9ob21lL3JlZDEvZGF0YS9tb3ppbGxhL2Rpc3Qv
aW5jbHVkZS9wcnRocmVhZC5oIiAxCiAKIAoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyAxICIvaG9tZS9yZWQxL2RhdGEvbW96aWxsYS9k
aXN0L2luY2x1ZGUvcHJpbnJ2YWwuaCIgMQogCiAKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoK
CgojIDE1NCAiL2hvbWUvcmVkMS9kYXRhL21vemlsbGEvZGlzdC9pbmNsdWRlL3ByaW5ydmFsLmgi
CgoKIAojIDYwICIvaG9tZS9yZWQxL2RhdGEvbW96aWxsYS9kaXN0L2luY2x1ZGUvcHJ0aHJlYWQu
aCIgMgoKCiAKCnR5cGVkZWYgc3RydWN0IFBSVGhyZWFkIFBSVGhyZWFkOwp0eXBlZGVmIHN0cnVj
dCBQUlRocmVhZFN0YWNrIFBSVGhyZWFkU3RhY2s7Cgp0eXBlZGVmIGVudW0gUFJUaHJlYWRUeXBl
IHsKICAgIFBSX1VTRVJfVEhSRUFELAogICAgUFJfU1lTVEVNX1RIUkVBRAp9IFBSVGhyZWFkVHlw
ZTsKCnR5cGVkZWYgZW51bSBQUlRocmVhZFNjb3BlIHsKICAgIFBSX0xPQ0FMX1RIUkVBRCwKICAg
IFBSX0dMT0JBTF9USFJFQUQsCiAgICBQUl9HTE9CQUxfQk9VTkRfVEhSRUFECn0gUFJUaHJlYWRT
Y29wZTsKCnR5cGVkZWYgZW51bSBQUlRocmVhZFN0YXRlIHsKICAgIFBSX0pPSU5BQkxFX1RIUkVB
RCwKICAgIFBSX1VOSk9JTkFCTEVfVEhSRUFECn0gUFJUaHJlYWRTdGF0ZTsKCnR5cGVkZWYgZW51
bSBQUlRocmVhZFByaW9yaXR5CnsKICAgIFBSX1BSSU9SSVRZX0ZJUlNUID0gMCwgICAgICAgCiAg
ICBQUl9QUklPUklUWV9MT1cgPSAwLCAgICAgICAgIAogICAgUFJfUFJJT1JJVFlfTk9STUFMID0g
MSwgICAgICAKICAgIFBSX1BSSU9SSVRZX0hJR0ggPSAyLCAgICAgICAgCiAgICBQUl9QUklPUklU
WV9VUkdFTlQgPSAzLCAgICAgIAogICAgUFJfUFJJT1JJVFlfTEFTVCA9IDMgICAgICAgICAKfSBQ
UlRocmVhZFByaW9yaXR5OwoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgpleHRlcm4gICBQUlRo
cmVhZCogICAgIFBSX0NyZWF0ZVRocmVhZChQUlRocmVhZFR5cGUgdHlwZSwKICAgICAgICAgICAg
ICAgICAgICAgdm9pZCAoKnN0YXJ0KSh2b2lkICphcmcpLAogICAgICAgICAgICAgICAgICAgICB2
b2lkICphcmcsCiAgICAgICAgICAgICAgICAgICAgIFBSVGhyZWFkUHJpb3JpdHkgcHJpb3JpdHks
CiAgICAgICAgICAgICAgICAgICAgIFBSVGhyZWFkU2NvcGUgc2NvcGUsCiAgICAgICAgICAgICAg
ICAgICAgIFBSVGhyZWFkU3RhdGUgc3RhdGUsCiAgICAgICAgICAgICAgICAgICAgIFBSVWludDMy
IHN0YWNrU2l6ZSk7CgogCgoKCgoKCgoKCgoKCmV4dGVybiAgIFBSU3RhdHVzICAgICBQUl9Kb2lu
VGhyZWFkKFBSVGhyZWFkICp0aHJlYWQpOwoKIAoKCgpleHRlcm4gICBQUlRocmVhZCogICAgIFBS
X0dldEN1cnJlbnRUaHJlYWQodm9pZCk7CgoKIAoKCmV4dGVybiAgIFBSVGhyZWFkUHJpb3JpdHkg
ICAgIFBSX0dldFRocmVhZFByaW9yaXR5KGNvbnN0IFBSVGhyZWFkICp0aHJlYWQpOwoKIAoKCmV4
dGVybiAgIHZvaWQgICAgIFBSX1NldFRocmVhZFByaW9yaXR5KFBSVGhyZWFkICp0aHJlYWQsIFBS
VGhyZWFkUHJpb3JpdHkgcHJpb3JpdHkpOwoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCnR5cGVk
ZWYgdm9pZCAoICAqUFJUaHJlYWRQcml2YXRlRFRPUikodm9pZCAqcHJpdik7CgpleHRlcm4gICBQ
UlN0YXR1cyAgICAgUFJfTmV3VGhyZWFkUHJpdmF0ZUluZGV4KAogICAgUFJVaW50biAqbmV3SW5k
ZXgsIFBSVGhyZWFkUHJpdmF0ZURUT1IgZGVzdHJ1Y3Rvcik7CgogCgoKCgoKCgoKCgpleHRlcm4g
ICBQUlN0YXR1cyAgICAgUFJfU2V0VGhyZWFkUHJpdmF0ZShQUlVpbnRuIHRwZEluZGV4LCB2b2lk
ICpwcml2KTsKCiAKCgoKCgoKCgpleHRlcm4gICB2b2lkKiAgICAgUFJfR2V0VGhyZWFkUHJpdmF0
ZShQUlVpbnRuIHRwZEluZGV4KTsKCiAKCgoKCgoKCgoKZXh0ZXJuICAgUFJTdGF0dXMgICAgIFBS
X0ludGVycnVwdChQUlRocmVhZCAqdGhyZWFkKTsKCiAKCgoKZXh0ZXJuICAgdm9pZCAgICAgUFJf
Q2xlYXJJbnRlcnJ1cHQodm9pZCk7CgogCgoKZXh0ZXJuICAgdm9pZCAgICAgUFJfQmxvY2tJbnRl
cnJ1cHQodm9pZCk7CgogCgoKZXh0ZXJuICAgdm9pZCAgICAgUFJfVW5ibG9ja0ludGVycnVwdCh2
b2lkKTsKCiAKCgoKCgoKZXh0ZXJuICAgUFJTdGF0dXMgICAgIFBSX1NsZWVwKFBSSW50ZXJ2YWxU
aW1lIHRpY2tzKTsKCiAKCgpleHRlcm4gICBQUlRocmVhZFNjb3BlICAgICBQUl9HZXRUaHJlYWRT
Y29wZShjb25zdCBQUlRocmVhZCAqdGhyZWFkKTsKCiAKCgpleHRlcm4gICBQUlRocmVhZFR5cGUg
ICAgIFBSX0dldFRocmVhZFR5cGUoY29uc3QgUFJUaHJlYWQgKnRocmVhZCk7CgogCgoKZXh0ZXJu
ICAgUFJUaHJlYWRTdGF0ZSAgICAgUFJfR2V0VGhyZWFkU3RhdGUoY29uc3QgUFJUaHJlYWQgKnRo
cmVhZCk7CgogCgoKIyAyMiAiL2hvbWUvcmVkMS9kYXRhL21vemlsbGEvZGlzdC9pbmNsdWRlL3By
aW5pdC5oIiAyCgoKIyAxICIvaG9tZS9yZWQxL2RhdGEvbW96aWxsYS9kaXN0L2luY2x1ZGUvcHJ3
aW4xNi5oIiAxCiAKIAoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCiMgMTYxICIvaG9tZS9yZWQxL2Rh
dGEvbW96aWxsYS9kaXN0L2luY2x1ZGUvcHJ3aW4xNi5oIgoKIAoKCgoKCgoKCgoKCgoKCgojIDI0
ICIvaG9tZS9yZWQxL2RhdGEvbW96aWxsYS9kaXN0L2luY2x1ZGUvcHJpbml0LmgiIDIKCiMgMSAi
L3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDEgMwogCiAKCiAKIAogCgogCgoKCgogCgoKCgoKCiNwcmFn
bWEgaWRlbnQJIkAoIylzdGRpby5oCTEuNjkJOTgvMDcvMTMgU01JIgkKCgojIDEgIi91c3IvaW5j
bHVkZS9zeXMvdmFfbGlzdC5oIiAxIDMKIAoKCgoKCgoKI3ByYWdtYSBpZGVudAkiQCgjKXZhX2xp
c3QuaAkxLjExCTk3LzExLzIyIFNNSSIKCiAKCgoKCgoKCgoKCgoKCgp0eXBlZGVmIHZvaWQgKl9f
dmFfbGlzdDsKCgoKCgoKCgoKIyAyMyAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDIgMwoKIyAxICIv
dXNyL2luY2x1ZGUvc3RkaW9fdGFnLmgiIDEgMwogCgoKCgoKCgojcHJhZ21hIGlkZW50CSJAKCMp
c3RkaW9fdGFnLmgJMS4zCTk4LzA0LzIwIFNNSSIKCgoKCgoKCgoKCgp0eXBlZGVmIHN0cnVjdCBf
X0ZJTEUgIF9fRklMRTsKCgoKCgoKCiMgMjQgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAyIDMKCiMg
MSAiL3Vzci9pbmNsdWRlL3N0ZGlvX2ltcGwuaCIgMSAzCiAKCgoKCgoKCiNwcmFnbWEgaWRlbnQJ
IkAoIylzdGRpb19pbXBsLmgJMS44CTk5LzA2LzMwIFNNSSIKCgoKCgoKCgoKCgoKCgoKCiMgMzYg
Ii91c3IvaW5jbHVkZS9zdGRpb19pbXBsLmgiIDMKCgpzdHJ1Y3QgX19GSUxFIAkgCnsKCgoKCglz
c2l6ZV90CQlfY250OwkgCgl1bnNpZ25lZCBjaGFyCSpfcHRyOwkgCgoJdW5zaWduZWQgY2hhcgkq
X2Jhc2U7CSAKCXVuc2lnbmVkIGNoYXIJX2ZsYWc7CSAKCXVuc2lnbmVkIGNoYXIJX2ZpbGU7CSAK
CXVuc2lnbmVkCV9fb3JpZW50YXRpb246MjsgIAoJdW5zaWduZWQJX19pb25vbG9jazoxOwkgCgl1
bnNpZ25lZAlfX2ZpbGxlcjo1Owp9OwoKCgoKCgoKCiMgMjUgIi91c3IvaW5jbHVkZS9zdGRpby5o
IiAyIDMKCgogCgoKCgoKCgoKCgoKCgp0eXBlZGVmCV9fRklMRSBGSUxFOwoKCgoKCgoKCgoKCgog
CgoKCgoKdHlwZWRlZglsb25nIGxvbmcJX19sb25nbG9uZ190OwoKCgoKCgoKCgoKIyA4NSAiL3Vz
ci9pbmNsdWRlL3N0ZGlvLmgiIDMKCgoKCnR5cGVkZWYgbG9uZwkJZnBvc190OwoKCgoKCgoKdHlw
ZWRlZiBfX2xvbmdsb25nX3QJZnBvczY0X3Q7CgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgogCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCmV4dGVybiBGSUxFCV9faW9iWzIwIF07CgoKCgoKCgoKCgoKZXh0ZXJuIHVuc2lnbmVk
IGNoYXIJIF9zaWJ1ZltdLCBfc29idWZbXTsKCgogCiMgMjI3ICIvdXNyL2luY2x1ZGUvc3RkaW8u
aCIgMwoKCgpleHRlcm4gdW5zaWduZWQgY2hhcgkqX2J1ZmVuZHRhYltdOwpleHRlcm4gRklMRQkJ
Kl9sYXN0YnVmOwoKCiAKIyAyNTcgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzCgoKCgpleHRlcm4g
aW50CXJlbW92ZShjb25zdCBjaGFyICopOwpleHRlcm4gaW50CXJlbmFtZShjb25zdCBjaGFyICos
IGNvbnN0IGNoYXIgKik7CmV4dGVybiBGSUxFCSp0bXBmaWxlKHZvaWQpOwpleHRlcm4gY2hhcgkq
dG1wbmFtKGNoYXIgKik7CgpleHRlcm4gY2hhcgkqdG1wbmFtX3IoY2hhciAqKTsKCmV4dGVybiBp
bnQJZmNsb3NlKEZJTEUgKik7CmV4dGVybiBpbnQJZmZsdXNoKEZJTEUgKik7CmV4dGVybiBGSUxF
CSpmb3Blbihjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CmV4dGVybiBGSUxFCSpmcmVvcGVu
KGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBGSUxFICopOwpleHRlcm4gdm9pZAlzZXRidWYo
RklMRSAqLCBjaGFyICopOwoKCmV4dGVybiB2b2lkIHNldGJ1ZmZlcihGSUxFICosIGNoYXIgKiwg
c2l6ZV90KTsKZXh0ZXJuIGludCBzZXRsaW5lYnVmKEZJTEUgKik7CgpleHRlcm4gaW50CXNldHZi
dWYoRklMRSAqLCBjaGFyICosIGludCwgc2l6ZV90KTsKIApleHRlcm4gaW50CWZwcmludGYoRklM
RSAqLCBjb25zdCBjaGFyICosIC4uLik7CiAKZXh0ZXJuIGludAlmc2NhbmYoRklMRSAqLCBjb25z
dCBjaGFyICosIC4uLik7CiAKZXh0ZXJuIGludAlwcmludGYoY29uc3QgY2hhciAqLCAuLi4pOwog
CmV4dGVybiBpbnQJc2NhbmYoY29uc3QgY2hhciAqLCAuLi4pOwoKCgogCmV4dGVybiBpbnQJc25w
cmludGYoY2hhciAqLCBzaXplX3QsIGNvbnN0IGNoYXIgKiwgLi4uKTsKCiAKZXh0ZXJuIGludAlz
cHJpbnRmKGNoYXIgKiwgY29uc3QgY2hhciAqLCAuLi4pOwogCmV4dGVybiBpbnQJc3NjYW5mKGNv
bnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCAuLi4pOwpleHRlcm4gaW50CXZmcHJpbnRmKEZJTEUg
KiwgY29uc3QgY2hhciAqLCBfX3ZhX2xpc3QpOwpleHRlcm4gaW50CXZwcmludGYoY29uc3QgY2hh
ciAqLCBfX3ZhX2xpc3QpOwoKCgpleHRlcm4gaW50CXZzbnByaW50ZihjaGFyICosIHNpemVfdCwg
Y29uc3QgY2hhciAqLCBfX3ZhX2xpc3QpOwoKZXh0ZXJuIGludAl2c3ByaW50ZihjaGFyICosIGNv
bnN0IGNoYXIgKiwgX192YV9saXN0KTsKZXh0ZXJuIGludAlmZ2V0YyhGSUxFICopOwpleHRlcm4g
Y2hhcgkqZmdldHMoY2hhciAqLCBpbnQsIEZJTEUgKik7CmV4dGVybiBpbnQJZnB1dGMoaW50LCBG
SUxFICopOwpleHRlcm4gaW50CWZwdXRzKGNvbnN0IGNoYXIgKiwgRklMRSAqKTsKZXh0ZXJuIGlu
dAlnZXRjKEZJTEUgKik7CmV4dGVybiBpbnQJZ2V0Y2hhcih2b2lkKTsKZXh0ZXJuIGNoYXIJKmdl
dHMoY2hhciAqKTsKZXh0ZXJuIGludAlwdXRjKGludCwgRklMRSAqKTsKZXh0ZXJuIGludAlwdXRj
aGFyKGludCk7CmV4dGVybiBpbnQJcHV0cyhjb25zdCBjaGFyICopOwpleHRlcm4gaW50CXVuZ2V0
YyhpbnQsIEZJTEUgKik7CmV4dGVybiBzaXplX3QJZnJlYWQodm9pZCAqLCBzaXplX3QsIHNpemVf
dCwgRklMRSAqKTsKZXh0ZXJuIHNpemVfdAlmd3JpdGUoY29uc3Qgdm9pZCAqLCBzaXplX3QsIHNp
emVfdCwgRklMRSAqKTsKZXh0ZXJuIGludAlmZ2V0cG9zKEZJTEUgKiwgZnBvc190ICopOwpleHRl
cm4gaW50CWZzZWVrKEZJTEUgKiwgbG9uZywgaW50KTsKZXh0ZXJuIGludAlmc2V0cG9zKEZJTEUg
KiwgY29uc3QgZnBvc190ICopOwpleHRlcm4gbG9uZwlmdGVsbChGSUxFICopOwpleHRlcm4gdm9p
ZAlyZXdpbmQoRklMRSAqKTsKZXh0ZXJuIHZvaWQJY2xlYXJlcnIoRklMRSAqKTsKZXh0ZXJuIGlu
dAlmZW9mKEZJTEUgKik7CmV4dGVybiBpbnQJZmVycm9yKEZJTEUgKik7CmV4dGVybiB2b2lkCXBl
cnJvcihjb25zdCBjaGFyICopOwoKCmV4dGVybiBpbnQJX19maWxidWYoRklMRSAqKTsKZXh0ZXJu
IGludAlfX2Zsc2J1ZihpbnQsIEZJTEUgKik7CgoKIAoKCgoKCmV4dGVybiBGSUxFCSpmZG9wZW4o
aW50LCBjb25zdCBjaGFyICopOwpleHRlcm4gY2hhcgkqY3Rlcm1pZChjaGFyICopOwpleHRlcm4g
aW50CWZpbGVubyhGSUxFICopOwoKCgogCgoKCgpleHRlcm4gdm9pZAlmbG9ja2ZpbGUoRklMRSAq
KTsKZXh0ZXJuIGludAlmdHJ5bG9ja2ZpbGUoRklMRSAqKTsKZXh0ZXJuIHZvaWQJZnVubG9ja2Zp
bGUoRklMRSAqKTsKZXh0ZXJuIGludAlnZXRjX3VubG9ja2VkKEZJTEUgKik7CmV4dGVybiBpbnQJ
Z2V0Y2hhcl91bmxvY2tlZCh2b2lkKTsKZXh0ZXJuIGludAlwdXRjX3VubG9ja2VkKGludCwgRklM
RSAqKTsKZXh0ZXJuIGludAlwdXRjaGFyX3VubG9ja2VkKGludCk7CgoKCiAKCgoKCmV4dGVybiBG
SUxFCSpwb3Blbihjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CmV4dGVybiBjaGFyCSpjdXNl
cmlkKGNoYXIgKik7CmV4dGVybiBjaGFyCSp0ZW1wbmFtKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hh
ciAqKTsKZXh0ZXJuIGludAlnZXRvcHQoaW50LCBjaGFyICpjb25zdCAqLCBjb25zdCBjaGFyICop
OwoKZXh0ZXJuIGludAlnZXRzdWJvcHQoY2hhciAqKiwgY2hhciAqY29uc3QgKiwgY2hhciAqKik7
CgpleHRlcm4gY2hhcgkqb3B0YXJnOwpleHRlcm4gaW50CW9wdGluZCwgb3B0ZXJyLCBvcHRvcHQ7
CmV4dGVybiBpbnQJZ2V0dyhGSUxFICopOwpleHRlcm4gaW50CXB1dHcoaW50LCBGSUxFICopOwpl
eHRlcm4gaW50CXBjbG9zZShGSUxFICopOwoKCgogCgoKCmV4dGVybiBpbnQJZnNlZWtvKEZJTEUg
Kiwgb2ZmX3QsIGludCk7CmV4dGVybiBvZmZfdAlmdGVsbG8oRklMRSAqKTsKCgogCgoKCgoKZXh0
ZXJuIEZJTEUJKmZvcGVuNjQoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwpleHRlcm4gRklM
RQkqZnJlb3BlbjY0KGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBGSUxFICopOwpleHRlcm4g
RklMRQkqdG1wZmlsZTY0KHZvaWQpOwpleHRlcm4gaW50CWZnZXRwb3M2NChGSUxFICosIGZwb3M2
NF90ICopOwpleHRlcm4gaW50CWZzZXRwb3M2NChGSUxFICosIGNvbnN0IGZwb3M2NF90ICopOwpl
eHRlcm4gaW50CWZzZWVrbzY0KEZJTEUgKiwgb2ZmNjRfdCwgaW50KTsKZXh0ZXJuIG9mZjY0X3QJ
ZnRlbGxvNjQoRklMRSAqKTsKCgojIDUxNSAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMKCgoKCiMg
NTQyICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwoKCgoKCgoKCgoKCgoKIyA1NjMgIi91c3IvaW5j
bHVkZS9zdGRpby5oIiAzCgoKCgoKCgoKCgoKCgojIDI1ICIvaG9tZS9yZWQxL2RhdGEvbW96aWxs
YS9kaXN0L2luY2x1ZGUvcHJpbml0LmgiIDIKCgogCgogCiAKIAoKIAoKCgoKCiAKCgoKCgoKCgoK
CgoKCiAKCgoKCgoKCgoKCgoKCgoKdHlwZWRlZiBQUkJvb2wgKCpQUlZlcnNpb25DaGVjaykoY29u
c3QgY2hhciopOwoKIAoKCgoKCgoKZXh0ZXJuICAgUFJCb29sICAgICBQUl9WZXJzaW9uQ2hlY2so
Y29uc3QgY2hhciAqaW1wb3J0ZWRWZXJzaW9uKTsKCgogCiAKIAoKIAoKCgoKCmV4dGVybiAgIHZv
aWQgICAgIFBSX0luaXQoCiAgICBQUlRocmVhZFR5cGUgdHlwZSwgUFJUaHJlYWRQcmlvcml0eSBw
cmlvcml0eSwgUFJVaW50biBtYXhQVERzKTsKCiAKCgoKCgoKCgoKCgoKCgoKCgp0eXBlZGVmIFBS
SW50biAoICAqUFJQcmltb3JkaWFsRm4pKFBSSW50biBhcmdjLCBjaGFyICoqYXJndik7CgpleHRl
cm4gICBQUkludG4gICAgIFBSX0luaXRpYWxpemUoCiAgICBQUlByaW1vcmRpYWxGbiBwcm1haW4s
IFBSSW50biBhcmdjLCBjaGFyICoqYXJndiwgUFJVaW50biBtYXhQVERzKTsKCiAKCgpleHRlcm4g
ICBQUkJvb2wgICAgIFBSX0luaXRpYWxpemVkKHZvaWQpOwoKIAoKCgoKCgoKCgoKCgoKCgpleHRl
cm4gICBQUlN0YXR1cyAgICAgUFJfQ2xlYW51cCh2b2lkKTsKCiAKCgoKZXh0ZXJuICAgdm9pZCAg
ICAgUFJfRGlzYWJsZUNsb2NrSW50ZXJydXB0cyh2b2lkKTsKCiAKCgoKZXh0ZXJuICAgdm9pZCAg
ICAgUFJfRW5hYmxlQ2xvY2tJbnRlcnJ1cHRzKHZvaWQpOwoKIAoKCgpleHRlcm4gICB2b2lkICAg
ICBQUl9CbG9ja0Nsb2NrSW50ZXJydXB0cyh2b2lkKTsKCiAKCgoKZXh0ZXJuICAgdm9pZCAgICAg
UFJfVW5ibG9ja0Nsb2NrSW50ZXJydXB0cyh2b2lkKTsKCiAKCgpleHRlcm4gICB2b2lkICAgICBQ
Ul9TZXRDb25jdXJyZW5jeShQUlVpbnRuIG51bUNQVXMpOwoKIAoKCgoKZXh0ZXJuICAgUFJTdGF0
dXMgICAgIFBSX1NldEZEQ2FjaGVTaXplKFBSSW50biBsb3csIFBSSW50biBoaWdoKTsKCiAKCgoK
CmV4dGVybiAgIHZvaWQgICAgIFBSX1Byb2Nlc3NFeGl0KFBSSW50biBzdGF0dXMpOwoKIAoKCgoK
ZXh0ZXJuICAgdm9pZCAgICAgUFJfQWJvcnQodm9pZCk7CgogCgoKCgoKCgp0eXBlZGVmIHN0cnVj
dCBQUkNhbGxPbmNlVHlwZSB7CiAgICBQUkludG4gaW5pdGlhbGl6ZWQ7CiAgICBQUkludDMyIGlu
UHJvZ3Jlc3M7CiAgICBQUlN0YXR1cyBzdGF0dXM7Cn0gUFJDYWxsT25jZVR5cGU7Cgp0eXBlZGVm
IFBSU3RhdHVzICggICpQUkNhbGxPbmNlRk4pKHZvaWQpOwoKZXh0ZXJuICAgUFJTdGF0dXMgICAg
IFBSX0NhbGxPbmNlKAogICAgUFJDYWxsT25jZVR5cGUgKm9uY2UsCiAgICBQUkNhbGxPbmNlRk4g
ICAgZnVuYwopOwoKCiAKCgojIDMxICIvaG9tZS9yZWQxL2RhdGEvbW96aWxsYS9kaXN0L2luY2x1
ZGUvbnNwci5oIiAyCgojIDEgIi9ob21lL3JlZDEvZGF0YS9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9w
cmlucnZhbC5oIiAxCiAKIAoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCiMgMTU0ICIvaG9t
ZS9yZWQxL2RhdGEvbW96aWxsYS9kaXN0L2luY2x1ZGUvcHJpbnJ2YWwuaCIKCgogCiMgMzIgIi9o
b21lL3JlZDEvZGF0YS9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9uc3ByLmgiIDIKCiMgMSAiL2hvbWUv
cmVkMS9kYXRhL21vemlsbGEvZGlzdC9pbmNsdWRlL3ByaW8uaCIgMQogCiAKCgoKCgoKCgoKCgoK
CgoKCiAKCgoKCgoKCgoKIyAxICIvaG9tZS9yZWQxL2RhdGEvbW96aWxsYS9kaXN0L2luY2x1ZGUv
cHJsb25nLmgiIDEKIAogCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCiAKCiAKCgoKCgoK
CgoKCgoKCgoKZXh0ZXJuICAgUFJJbnQ2NCAgICAgTExfTWF4SW50KHZvaWQpOwpleHRlcm4gICBQ
UkludDY0ICAgICBMTF9NaW5JbnQodm9pZCk7CmV4dGVybiAgIFBSSW50NjQgICAgIExMX1plcm8o
dm9pZCk7CgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoK
CgoKCgoKCgogCgoKCgoKCgoKCgogCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgojIDQwNSAiL2hvbWUvcmVkMS9kYXRhL21vemlsbGEv
ZGlzdC9pbmNsdWRlL3BybG9uZy5oIgoKCiAKCgojIDI5ICIvaG9tZS9yZWQxL2RhdGEvbW96aWxs
YS9kaXN0L2luY2x1ZGUvcHJpby5oIiAyCgojIDEgIi9ob21lL3JlZDEvZGF0YS9tb3ppbGxhL2Rp
c3QvaW5jbHVkZS9wcnRpbWUuaCIgMQogCiAKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoK
CgogCgogCiAKIAoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCnR5cGVkZWYgUFJJbnQ2NCBQUlRpbWU7
CgogCgoKCgp0eXBlZGVmIHN0cnVjdCBQUlRpbWVQYXJhbWV0ZXJzIHsKICAgIFBSSW50MzIgdHBf
Z210X29mZnNldDsgICAgICAKICAgIFBSSW50MzIgdHBfZHN0X29mZnNldDsgICAgICAKfSBQUlRp
bWVQYXJhbWV0ZXJzOwoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgUFJF
eHBsb2RlZFRpbWUgewogICAgUFJJbnQzMiB0bV91c2VjOwkJICAgICAKICAgIFBSSW50MzIgdG1f
c2VjOyAgICAgICAgICAgICAgCgkKICAgIFBSSW50MzIgdG1fbWluOyAgICAgICAgICAgICAgCiAg
ICBQUkludDMyIHRtX2hvdXI7ICAgICAgICAgICAgIAogICAgUFJJbnQzMiB0bV9tZGF5OyAgICAg
ICAgICAgICAKCiAgICBQUkludDMyIHRtX21vbnRoOyAgICAgICAgICAgIAogICAgUFJJbnQxNiB0
bV95ZWFyOyAgICAgICAgICAgICAKCgogICAgUFJJbnQ4IHRtX3dkYXk7CQkgICAgICAgICAKCiAg
ICBQUkludDE2IHRtX3lkYXk7ICAgICAgICAgICAgIAoKCiAgICBQUlRpbWVQYXJhbWV0ZXJzIHRt
X3BhcmFtczsgICAKfSBQUkV4cGxvZGVkVGltZTsKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCnR5
cGVkZWYgUFJUaW1lUGFyYW1ldGVycyAoICAqUFJUaW1lUGFyYW1GbikoY29uc3QgUFJFeHBsb2Rl
ZFRpbWUgKmdtdCk7CgogCiAKIAoKIAoKCgoKCgoKCgoKCgoKCgpleHRlcm4gICBQUlRpbWUgICAg
IAoKUFJfTm93KHZvaWQpOwoKIAoKCgoKCgoKCgpleHRlcm4gICB2b2lkICAgICBQUl9FeHBsb2Rl
VGltZSgKICAgIFBSVGltZSB1c2VjcywgUFJUaW1lUGFyYW1GbiBwYXJhbXMsIFBSRXhwbG9kZWRU
aW1lICpleHBsb2RlZCk7CgogCgoKCmV4dGVybiAgIFBSVGltZSAgICAgCgpQUl9JbXBsb2RlVGlt
ZShjb25zdCBQUkV4cGxvZGVkVGltZSAqZXhwbG9kZWQpOwoKIAoKCgoKCgoKCgoKCmV4dGVybiAg
IHZvaWQgICAgIFBSX05vcm1hbGl6ZVRpbWUoCiAgICBQUkV4cGxvZGVkVGltZSAqZXhwbG9kZWQs
IFBSVGltZVBhcmFtRm4gcGFyYW1zKTsKCiAKIAogCgogCmV4dGVybiAgIFBSVGltZVBhcmFtZXRl
cnMgICAgIFBSX0xvY2FsVGltZVBhcmFtZXRlcnMoY29uc3QgUFJFeHBsb2RlZFRpbWUgKmdtdCk7
CgogCmV4dGVybiAgIFBSVGltZVBhcmFtZXRlcnMgICAgIFBSX0dNVFBhcmFtZXRlcnMoY29uc3Qg
UFJFeHBsb2RlZFRpbWUgKmdtdCk7CgogCgoKCmV4dGVybiAgIFBSVGltZVBhcmFtZXRlcnMgICAg
IFBSX1VTUGFjaWZpY1RpbWVQYXJhbWV0ZXJzKGNvbnN0IFBSRXhwbG9kZWRUaW1lICpnbXQpOwoK
IAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgpleHRlcm4gICBQUlN0YXR1cyAgICAgUFJf
UGFyc2VUaW1lU3RyaW5nICgKCWNvbnN0IGNoYXIgKnN0cmluZywKCVBSQm9vbCBkZWZhdWx0X3Rv
X2dtdCwKCVBSVGltZSAqcmVzdWx0KTsKCiAKCgoKCgogCiAKIAoKCiAKZXh0ZXJuICAgUFJVaW50
MzIgICAgIFBSX0Zvcm1hdFRpbWUoY2hhciAqYnVmLCBpbnQgYnVmbGVuLCBjb25zdCBjaGFyICpm
bXQsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUFJF
eHBsb2RlZFRpbWUgKnRtKTsKCiAKCgpleHRlcm4gICBQUlVpbnQzMiAgICAKUFJfRm9ybWF0VGlt
ZVVTRW5nbGlzaCggY2hhciogYnVmLCBQUlVpbnQzMiBidWZTaXplLAogICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBjaGFyKiBmb3JtYXQsIGNvbnN0IFBSRXhwbG9kZWRUaW1lKiB0bSApOwoK
CgogCgoKIyAzMCAiL2hvbWUvcmVkMS9kYXRhL21vemlsbGEvZGlzdC9pbmNsdWRlL3ByaW8uaCIg
MgoKIyAxICIvaG9tZS9yZWQxL2RhdGEvbW96aWxsYS9kaXN0L2luY2x1ZGUvcHJpbnJ2YWwuaCIg
MQogCiAKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgojIDE1NCAiL2hvbWUvcmVkMS9kYXRh
L21vemlsbGEvZGlzdC9pbmNsdWRlL3ByaW5ydmFsLmgiCgoKIAojIDMxICIvaG9tZS9yZWQxL2Rh
dGEvbW96aWxsYS9kaXN0L2luY2x1ZGUvcHJpby5oIiAyCgoKCiAKCiAKdHlwZWRlZiBzdHJ1Y3Qg
UFJEaXIgICAgICAgICAgICBQUkRpcjsKdHlwZWRlZiBzdHJ1Y3QgUFJEaXJFbnRyeSAgICAgICBQ
UkRpckVudHJ5Owp0eXBlZGVmIHN0cnVjdCBQUkZpbGVEZXNjICAgICAgIFBSRmlsZURlc2M7CnR5
cGVkZWYgc3RydWN0IFBSRmlsZUluZm8gICAgICAgUFJGaWxlSW5mbzsKdHlwZWRlZiBzdHJ1Y3Qg
UFJGaWxlSW5mbzY0ICAgICBQUkZpbGVJbmZvNjQ7CnR5cGVkZWYgdW5pb24gIFBSTmV0QWRkciAg
ICAgICAgUFJOZXRBZGRyOwp0eXBlZGVmIHN0cnVjdCBQUklPTWV0aG9kcyAgICAgIFBSSU9NZXRo
b2RzOwp0eXBlZGVmIHN0cnVjdCBQUlBvbGxEZXNjICAgICAgIFBSUG9sbERlc2M7CnR5cGVkZWYg
c3RydWN0IFBSRmlsZVByaXZhdGUgICAgUFJGaWxlUHJpdmF0ZTsKdHlwZWRlZiBzdHJ1Y3QgUFJT
ZW5kRmlsZURhdGEgICBQUlNlbmRGaWxlRGF0YTsKCiAKCgoKCgoKCgoKCnR5cGVkZWYgUFJJbnRu
IFBSRGVzY0lkZW50aXR5OyAgICAgICAgICAgCgpzdHJ1Y3QgUFJGaWxlRGVzYyB7CiAgICBjb25z
dCBQUklPTWV0aG9kcyAqbWV0aG9kczsgICAgICAgICAgCiAgICBQUkZpbGVQcml2YXRlICpzZWNy
ZXQ7ICAgICAgICAgICAgICAgCiAgICBQUkZpbGVEZXNjICpsb3dlciwgKmhpZ2hlcjsgICAgICAg
ICAgCiAgICB2b2lkICggICpkdG9yKShQUkZpbGVEZXNjICpmZCk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgCiAgICBQUkRlc2NJZGVudGl0eSBpZGVudGl0eTsgICAg
ICAgICAgICAgCn07CgogCgoKCgoKCgoKdHlwZWRlZiBlbnVtIFBSVHJhbnNtaXRGaWxlRmxhZ3Mg
ewogICAgUFJfVFJBTlNNSVRGSUxFX0tFRVBfT1BFTiA9IDAsICAgICAKCiAgICBQUl9UUkFOU01J
VEZJTEVfQ0xPU0VfU09DS0VUID0gMSAgIAoKfSBQUlRyYW5zbWl0RmlsZUZsYWdzOwoKIAoKCgoK
CgoKCiMgMTAzICIvaG9tZS9yZWQxL2RhdGEvbW96aWxsYS9kaXN0L2luY2x1ZGUvcHJpby5oIgoK
CgoKCgoKCgoKIAoKCgoKCgoKCiAKCgoKCgoKCgoKc3RydWN0IFBSSVB2NkFkZHIgewoJdW5pb24g
ewoJCVBSVWludDggIF9TNl91OFsxNl07CgkJUFJVaW50MTYgX1M2X3UxNls4XTsKCQlQUlVpbnQz
MiBfUzZfdTMyWzRdOwoJCVBSVWludDY0IF9TNl91NjRbMl07Cgl9IF9TNl91bjsKfTsKCgoKCgp0
eXBlZGVmIHN0cnVjdCBQUklQdjZBZGRyIFBSSVB2NkFkZHI7Cgp1bmlvbiBQUk5ldEFkZHIgewog
ICAgc3RydWN0IHsKICAgICAgICBQUlVpbnQxNiBmYW1pbHk7ICAgICAgICAgICAgICAgICAKCgoK
ICAgICAgICBjaGFyIGRhdGFbMTRdOyAgICAgICAgICAgICAgICAgICAKCiAgICB9IHJhdzsKICAg
IHN0cnVjdCB7CiAgICAgICAgUFJVaW50MTYgZmFtaWx5OyAgICAgICAgICAgICAgICAgCiAgICAg
ICAgUFJVaW50MTYgcG9ydDsgICAgICAgICAgICAgICAgICAgCiAgICAgICAgUFJVaW50MzIgaXA7
ICAgICAgICAgICAgICAgICAgICAgCgoKCiAgICAgICAgY2hhciBwYWRbOF07CgogICAgfSBpbmV0
OwogICAgc3RydWN0IHsKICAgICAgICBQUlVpbnQxNiBmYW1pbHk7ICAgICAgICAgICAgICAgICAK
ICAgICAgICBQUlVpbnQxNiBwb3J0OyAgICAgICAgICAgICAgICAgICAKICAgICAgICBQUlVpbnQz
MiBmbG93aW5mbzsgICAgICAgICAgICAgICAKICAgICAgICBQUklQdjZBZGRyIGlwOyAgICAgICAg
ICAgICAgICAgICAKICAgICAgICBQUlVpbnQzMiBzY29wZV9pZDsgICAgICAgICAgICAgICAKICAg
IH0gaXB2NjsKCiAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAg
ICAgUFJVaW50MTYgZmFtaWx5OyAgICAgICAgICAgICAgICAgCiAgICAgICAgY2hhciBwYXRoWzEw
NF07ICAgICAgICAgICAgICAgICAgCiAgICB9IGxvY2FsOwoKfTsKCiAKCgoKCgoKCgp0eXBlZGVm
IGVudW0gUFJTb2NrT3B0aW9uCnsKICAgIFBSX1NvY2tPcHRfTm9uYmxvY2tpbmcsICAgICAgCiAg
ICBQUl9Tb2NrT3B0X0xpbmdlciwgICAgICAgICAgIAogICAgUFJfU29ja09wdF9SZXVzZWFkZHIs
ICAgICAgICAKICAgIFBSX1NvY2tPcHRfS2VlcGFsaXZlLCAgICAgICAgCiAgICBQUl9Tb2NrT3B0
X1JlY3ZCdWZmZXJTaXplLCAgIAogICAgUFJfU29ja09wdF9TZW5kQnVmZmVyU2l6ZSwgICAKCiAg
ICBQUl9Tb2NrT3B0X0lwVGltZVRvTGl2ZSwgICAgIAogICAgUFJfU29ja09wdF9JcFR5cGVPZlNl
cnZpY2UsICAKCiAgICBQUl9Tb2NrT3B0X0FkZE1lbWJlciwgICAgICAgIAogICAgUFJfU29ja09w
dF9Ecm9wTWVtYmVyLCAgICAgICAKICAgIFBSX1NvY2tPcHRfTWNhc3RJbnRlcmZhY2UsICAgCiAg
ICBQUl9Tb2NrT3B0X01jYXN0VGltZVRvTGl2ZSwgIAogICAgUFJfU29ja09wdF9NY2FzdExvb3Bi
YWNrLCAgICAKCiAgICBQUl9Tb2NrT3B0X05vRGVsYXksICAgICAgICAgIAogICAgUFJfU29ja09w
dF9NYXhTZWdtZW50LCAgICAgICAKICAgIFBSX1NvY2tPcHRfQnJvYWRjYXN0LCAgICAgICAgCiAg
ICBQUl9Tb2NrT3B0X0xhc3QKfSBQUlNvY2tPcHRpb247Cgp0eXBlZGVmIHN0cnVjdCBQUkxpbmdl
ciB7CglQUkJvb2wgcG9sYXJpdHk7CQkgICAgIAoJUFJJbnRlcnZhbFRpbWUgbGluZ2VyOwkgICAg
IAp9IFBSTGluZ2VyOwoKdHlwZWRlZiBzdHJ1Y3QgUFJNY2FzdFJlcXVlc3QgewoJUFJOZXRBZGRy
IG1jYWRkcjsJCQkgCglQUk5ldEFkZHIgaWZhZGRyOwkJCSAKfSBQUk1jYXN0UmVxdWVzdDsKCnR5
cGVkZWYgc3RydWN0IFBSU29ja2V0T3B0aW9uRGF0YQp7CiAgICBQUlNvY2tPcHRpb24gb3B0aW9u
OwogICAgdW5pb24KICAgIHsKICAgICAgICBQUlVpbnRuIGlwX3R0bDsgICAgICAgICAgICAgIAog
ICAgICAgIFBSVWludG4gbWNhc3RfdHRsOyAgICAgICAgICAgCiAgICAgICAgUFJVaW50biB0b3M7
ICAgICAgICAgICAgICAgICAKICAgICAgICBQUkJvb2wgbm9uX2Jsb2NraW5nOyAgICAgICAgIAog
ICAgICAgIFBSQm9vbCByZXVzZV9hZGRyOyAgICAgICAgICAgCiAgICAgICAgUFJCb29sIGtlZXBf
YWxpdmU7ICAgICAgICAgICAKICAgICAgICBQUkJvb2wgbWNhc3RfbG9vcGJhY2s7ICAgICAgIAog
ICAgICAgIFBSQm9vbCBub19kZWxheTsgICAgICAgICAgICAgCiAgICAgICAgUFJCb29sIGJyb2Fk
Y2FzdDsgICAgICAgICAgICAKICAgICAgICBQUlNpemUgbWF4X3NlZ21lbnQ7ICAgICAgICAgIAog
ICAgICAgIFBSU2l6ZSByZWN2X2J1ZmZlcl9zaXplOyAgICAgCiAgICAgICAgUFJTaXplIHNlbmRf
YnVmZmVyX3NpemU7ICAgICAKICAgICAgICBQUkxpbmdlciBsaW5nZXI7ICAgICAgICAgICAgIAog
ICAgICAgIFBSTWNhc3RSZXF1ZXN0IGFkZF9tZW1iZXI7ICAgCiAgICAgICAgUFJNY2FzdFJlcXVl
c3QgZHJvcF9tZW1iZXI7ICAKICAgICAgICBQUk5ldEFkZHIgbWNhc3RfaWY7ICAgICAgICAgIAog
ICAgfSB2YWx1ZTsKfSBQUlNvY2tldE9wdGlvbkRhdGE7CgogCgoKCgoKCgp0eXBlZGVmIHN0cnVj
dCBQUklPVmVjIHsKICAgIGNoYXIgKmlvdl9iYXNlOwogICAgaW50IGlvdl9sZW47Cn0gUFJJT1Zl
YzsKCiAKCgoKCnR5cGVkZWYgZW51bSBQUkRlc2NUeXBlCnsKICAgIFBSX0RFU0NfRklMRSA9IDEs
CiAgICBQUl9ERVNDX1NPQ0tFVF9UQ1AgPSAyLAogICAgUFJfREVTQ19TT0NLRVRfVURQID0gMywK
ICAgIFBSX0RFU0NfTEFZRVJFRCA9IDQsCiAgICBQUl9ERVNDX1BJUEUgPSA1Cn0gUFJEZXNjVHlw
ZTsKCnR5cGVkZWYgZW51bSBQUlNlZWtXaGVuY2UgewogICAgUFJfU0VFS19TRVQgPSAwLAogICAg
UFJfU0VFS19DVVIgPSAxLAogICAgUFJfU0VFS19FTkQgPSAyCn0gUFJTZWVrV2hlbmNlOwoKZXh0
ZXJuICAgUFJEZXNjVHlwZSAgICAgUFJfR2V0RGVzY1R5cGUoUFJGaWxlRGVzYyAqZmlsZSk7Cgog
CgoKCgoKCgoKCgoKCgoKCnR5cGVkZWYgUFJTdGF0dXMgKCAgKlBSQ2xvc2VGTikoUFJGaWxlRGVz
YyAqZmQpOwp0eXBlZGVmIFBSSW50MzIgKCAgKlBSUmVhZEZOKShQUkZpbGVEZXNjICpmZCwgdm9p
ZCAqYnVmLCBQUkludDMyIGFtb3VudCk7CnR5cGVkZWYgUFJJbnQzMiAoICAqUFJXcml0ZUZOKShQ
UkZpbGVEZXNjICpmZCwgY29uc3Qgdm9pZCAqYnVmLCBQUkludDMyIGFtb3VudCk7CnR5cGVkZWYg
UFJJbnQzMiAoICAqUFJBdmFpbGFibGVGTikoUFJGaWxlRGVzYyAqZmQpOwp0eXBlZGVmIFBSSW50
NjQgKCAgKlBSQXZhaWxhYmxlNjRGTikoUFJGaWxlRGVzYyAqZmQpOwp0eXBlZGVmIFBSU3RhdHVz
ICggICpQUkZzeW5jRk4pKFBSRmlsZURlc2MgKmZkKTsKdHlwZWRlZiBQUk9mZnNldDMyICggICpQ
UlNlZWtGTikoUFJGaWxlRGVzYyAqZmQsIFBST2Zmc2V0MzIgb2Zmc2V0LCBQUlNlZWtXaGVuY2Ug
aG93KTsKdHlwZWRlZiBQUk9mZnNldDY0ICggICpQUlNlZWs2NEZOKShQUkZpbGVEZXNjICpmZCwg
UFJPZmZzZXQ2NCBvZmZzZXQsIFBSU2Vla1doZW5jZSBob3cpOwp0eXBlZGVmIFBSU3RhdHVzICgg
ICpQUkZpbGVJbmZvRk4pKFBSRmlsZURlc2MgKmZkLCBQUkZpbGVJbmZvICppbmZvKTsKdHlwZWRl
ZiBQUlN0YXR1cyAoICAqUFJGaWxlSW5mbzY0Rk4pKFBSRmlsZURlc2MgKmZkLCBQUkZpbGVJbmZv
NjQgKmluZm8pOwp0eXBlZGVmIFBSSW50MzIgKCAgKlBSV3JpdGV2Rk4pKAogICAgUFJGaWxlRGVz
YyAqZmQsIGNvbnN0IFBSSU9WZWMgKmlvdiwgUFJJbnQzMiBpb3Zfc2l6ZSwKICAgIFBSSW50ZXJ2
YWxUaW1lIHRpbWVvdXQpOwp0eXBlZGVmIFBSU3RhdHVzICggICpQUkNvbm5lY3RGTikoCiAgICBQ
UkZpbGVEZXNjICpmZCwgY29uc3QgUFJOZXRBZGRyICphZGRyLCBQUkludGVydmFsVGltZSB0aW1l
b3V0KTsKdHlwZWRlZiBQUkZpbGVEZXNjKiAoICAqUFJBY2NlcHRGTikgKAogICAgUFJGaWxlRGVz
YyAqZmQsIFBSTmV0QWRkciAqYWRkciwgUFJJbnRlcnZhbFRpbWUgdGltZW91dCk7CnR5cGVkZWYg
UFJTdGF0dXMgKCAgKlBSQmluZEZOKShQUkZpbGVEZXNjICpmZCwgY29uc3QgUFJOZXRBZGRyICph
ZGRyKTsKdHlwZWRlZiBQUlN0YXR1cyAoICAqUFJMaXN0ZW5GTikoUFJGaWxlRGVzYyAqZmQsIFBS
SW50biBiYWNrbG9nKTsKdHlwZWRlZiBQUlN0YXR1cyAoICAqUFJTaHV0ZG93bkZOKShQUkZpbGVE
ZXNjICpmZCwgUFJJbnRuIGhvdyk7CnR5cGVkZWYgUFJJbnQzMiAoICAqUFJSZWN2Rk4pKAogICAg
UFJGaWxlRGVzYyAqZmQsIHZvaWQgKmJ1ZiwgUFJJbnQzMiBhbW91bnQsCiAgICBQUkludG4gZmxh
Z3MsIFBSSW50ZXJ2YWxUaW1lIHRpbWVvdXQpOwp0eXBlZGVmIFBSSW50MzIgKCAgKlBSU2VuZEZO
KSAoCiAgICBQUkZpbGVEZXNjICpmZCwgY29uc3Qgdm9pZCAqYnVmLCBQUkludDMyIGFtb3VudCwK
ICAgIFBSSW50biBmbGFncywgUFJJbnRlcnZhbFRpbWUgdGltZW91dCk7CnR5cGVkZWYgUFJJbnQz
MiAoICAqUFJSZWN2ZnJvbUZOKSgKICAgIFBSRmlsZURlc2MgKmZkLCB2b2lkICpidWYsIFBSSW50
MzIgYW1vdW50LAogICAgUFJJbnRuIGZsYWdzLCBQUk5ldEFkZHIgKmFkZHIsIFBSSW50ZXJ2YWxU
aW1lIHRpbWVvdXQpOwp0eXBlZGVmIFBSSW50MzIgKCAgKlBSU2VuZHRvRk4pKAogICAgUFJGaWxl
RGVzYyAqZmQsIGNvbnN0IHZvaWQgKmJ1ZiwgUFJJbnQzMiBhbW91bnQsCiAgICBQUkludG4gZmxh
Z3MsIGNvbnN0IFBSTmV0QWRkciAqYWRkciwgUFJJbnRlcnZhbFRpbWUgdGltZW91dCk7CnR5cGVk
ZWYgUFJJbnQxNiAoICAqUFJQb2xsRk4pKAogICAgUFJGaWxlRGVzYyAqZmQsIFBSSW50MTYgaW5f
ZmxhZ3MsIFBSSW50MTYgKm91dF9mbGFncyk7CnR5cGVkZWYgUFJJbnQzMiAoICAqUFJBY2NlcHRy
ZWFkRk4pKAogICAgUFJGaWxlRGVzYyAqc2QsIFBSRmlsZURlc2MgKipuZCwgUFJOZXRBZGRyICoq
cmFkZHIsCiAgICB2b2lkICpidWYsIFBSSW50MzIgYW1vdW50LCBQUkludGVydmFsVGltZSB0KTsK
dHlwZWRlZiBQUkludDMyICggICpQUlRyYW5zbWl0ZmlsZUZOKSgKICAgICBQUkZpbGVEZXNjICpz
ZCwgUFJGaWxlRGVzYyAqZmQsIGNvbnN0IHZvaWQgKmhlYWRlcnMsCiAgICAgUFJJbnQzMiBobGVu
LCBQUlRyYW5zbWl0RmlsZUZsYWdzIGZsYWdzLCBQUkludGVydmFsVGltZSB0KTsKdHlwZWRlZiBQ
UlN0YXR1cyAoICAqUFJHZXRzb2NrbmFtZUZOKShQUkZpbGVEZXNjICpmZCwgUFJOZXRBZGRyICph
ZGRyKTsKdHlwZWRlZiBQUlN0YXR1cyAoICAqUFJHZXRwZWVybmFtZUZOKShQUkZpbGVEZXNjICpm
ZCwgUFJOZXRBZGRyICphZGRyKTsKdHlwZWRlZiBQUlN0YXR1cyAoICAqUFJHZXRzb2NrZXRvcHRp
b25GTikoCiAgICBQUkZpbGVEZXNjICpmZCwgUFJTb2NrZXRPcHRpb25EYXRhICpkYXRhKTsKdHlw
ZWRlZiBQUlN0YXR1cyAoICAqUFJTZXRzb2NrZXRvcHRpb25GTikoCiAgICBQUkZpbGVEZXNjICpm
ZCwgY29uc3QgUFJTb2NrZXRPcHRpb25EYXRhICpkYXRhKTsKdHlwZWRlZiBQUkludDMyICggICpQ
UlNlbmRmaWxlRk4pKAoJUFJGaWxlRGVzYyAqbmV0d29ya1NvY2tldCwgUFJTZW5kRmlsZURhdGEg
KnNlbmREYXRhLAoJUFJUcmFuc21pdEZpbGVGbGFncyBmbGFncywgUFJJbnRlcnZhbFRpbWUgdGlt
ZW91dCk7CnR5cGVkZWYgUFJJbnRuICggICpQUlJlc2VydmVkRk4pKFBSRmlsZURlc2MgKmZkKTsK
CnN0cnVjdCBQUklPTWV0aG9kcyB7CiAgICBQUkRlc2NUeXBlIGZpbGVfdHlwZTsgICAgICAgICAg
ICAKICAgIFBSQ2xvc2VGTiBjbG9zZTsgICAgICAgICAgICAgICAgIAogICAgUFJSZWFkRk4gcmVh
ZDsgICAgICAgICAgICAgICAgICAgCiAgICBQUldyaXRlRk4gd3JpdGU7ICAgICAgICAgICAgICAg
ICAKICAgIFBSQXZhaWxhYmxlRk4gYXZhaWxhYmxlOyAgICAgICAgIAogICAgUFJBdmFpbGFibGU2
NEZOIGF2YWlsYWJsZTY0OyAgICAgCiAgICBQUkZzeW5jRk4gZnN5bmM7ICAgICAgICAgICAgICAg
ICAKICAgIFBSU2Vla0ZOIHNlZWs7ICAgICAgICAgICAgICAgICAgIAogICAgUFJTZWVrNjRGTiBz
ZWVrNjQ7ICAgICAgICAgICAgICAgCiAgICBQUkZpbGVJbmZvRk4gZmlsZUluZm87ICAgICAgICAg
ICAKICAgIFBSRmlsZUluZm82NEZOIGZpbGVJbmZvNjQ7ICAgICAgIAogICAgUFJXcml0ZXZGTiB3
cml0ZXY7ICAgICAgICAgICAgICAgCiAgICBQUkNvbm5lY3RGTiBjb25uZWN0OyAgICAgICAgICAg
ICAKICAgIFBSQWNjZXB0Rk4gYWNjZXB0OyAgICAgICAgICAgICAgIAogICAgUFJCaW5kRk4gYmlu
ZDsgICAgICAgICAgICAgICAgICAgCiAgICBQUkxpc3RlbkZOIGxpc3RlbjsgICAgICAgICAgICAg
ICAKICAgIFBSU2h1dGRvd25GTiBzaHV0ZG93bjsgICAgICAgICAgIAogICAgUFJSZWN2Rk4gcmVj
djsgICAgICAgICAgICAgICAgICAgCiAgICBQUlNlbmRGTiBzZW5kOyAgICAgICAgICAgICAgICAg
ICAKICAgIFBSUmVjdmZyb21GTiByZWN2ZnJvbTsgICAgICAgICAgIAogICAgUFJTZW5kdG9GTiBz
ZW5kdG87ICAgICAgICAgICAgICAgCiAgICBQUlBvbGxGTiBwb2xsOyAgICAgICAgICAgICAgICAg
ICAKICAgIFBSQWNjZXB0cmVhZEZOIGFjY2VwdHJlYWQ7ICAgICAgIAogICAgUFJUcmFuc21pdGZp
bGVGTiB0cmFuc21pdGZpbGU7ICAgCiAgICBQUkdldHNvY2tuYW1lRk4gZ2V0c29ja25hbWU7ICAg
ICAKICAgIFBSR2V0cGVlcm5hbWVGTiBnZXRwZWVybmFtZTsgICAgIAogICAgUFJSZXNlcnZlZEZO
IHJlc2VydmVkX2ZuXzY7ICAgICAgCiAgICBQUlJlc2VydmVkRk4gcmVzZXJ2ZWRfZm5fNTsgICAg
ICAKICAgIFBSR2V0c29ja2V0b3B0aW9uRk4gZ2V0c29ja2V0b3B0aW9uOwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgCiAgICBQUlNldHNvY2tldG9wdGlvbkZOIHNldHNvY2tl
dG9wdGlvbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgUFJTZW5k
ZmlsZUZOIHNlbmRmaWxlOwkJCSAKICAgIFBSUmVzZXJ2ZWRGTiByZXNlcnZlZF9mbl80OwkJIAog
ICAgUFJSZXNlcnZlZEZOIHJlc2VydmVkX2ZuXzM7CQkgCiAgICBQUlJlc2VydmVkRk4gcmVzZXJ2
ZWRfZm5fMjsJCSAKICAgIFBSUmVzZXJ2ZWRGTiByZXNlcnZlZF9mbl8xOwkJIAogICAgUFJSZXNl
cnZlZEZOIHJlc2VydmVkX2ZuXzA7CQkgCn07CgogCgoKCgoKCgoKCgoKCgoKCgoKCnR5cGVkZWYg
ZW51bSBQUlNwZWNpYWxGRAp7CiAgICBQUl9TdGFuZGFyZElucHV0LCAgICAgICAgICAgCiAgICBQ
Ul9TdGFuZGFyZE91dHB1dCwgICAgICAgICAgCiAgICBQUl9TdGFuZGFyZEVycm9yICAgICAgICAg
ICAgCn0gUFJTcGVjaWFsRkQ7CgpleHRlcm4gICBQUkZpbGVEZXNjKiAgICAgUFJfR2V0U3BlY2lh
bEZEKFBSU3BlY2lhbEZEIGlkKTsKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKZXh0ZXJuICAgUFJEZXNjSWRlbnRpdHkgICAgIFBSX0dldFVuaXF1ZUlkZW50aXR5KGNvbnN0
IGNoYXIgKmxheWVyX25hbWUpOwpleHRlcm4gICBjb25zdCBjaGFyKiAgICAgUFJfR2V0TmFtZUZv
cklkZW50aXR5KFBSRGVzY0lkZW50aXR5IGlkZW50KTsKZXh0ZXJuICAgUFJEZXNjSWRlbnRpdHkg
ICAgIFBSX0dldExheWVyc0lkZW50aXR5KFBSRmlsZURlc2MqIGZkKTsKZXh0ZXJuICAgUFJGaWxl
RGVzYyogICAgIFBSX0dldElkZW50aXRpZXNMYXllcihQUkZpbGVEZXNjKiBmZF9zdGFjaywgUFJE
ZXNjSWRlbnRpdHkgaWQpOwoKIAoKCgoKCgoKZXh0ZXJuICAgY29uc3QgUFJJT01ldGhvZHMgKiAg
ICAgUFJfR2V0RGVmYXVsdElPTWV0aG9kcyh2b2lkKTsKCiAKCgoKCgoKCgpleHRlcm4gICBQUkZp
bGVEZXNjKiAgICAgUFJfQ3JlYXRlSU9MYXllclN0dWIoCiAgICBQUkRlc2NJZGVudGl0eSBpZGVu
dCwgY29uc3QgUFJJT01ldGhvZHMgKm1ldGhvZHMpOwoKIAoKCgoKCgoKCgoKCgoKZXh0ZXJuICAg
UFJTdGF0dXMgICAgIFBSX1B1c2hJT0xheWVyKAogICAgUFJGaWxlRGVzYyAqZmRfc3RhY2ssIFBS
RGVzY0lkZW50aXR5IGlkLCBQUkZpbGVEZXNjICpsYXllcik7CgogCgoKCgoKCgoKCgoKCgpleHRl
cm4gICBQUkZpbGVEZXNjKiAgICAgUFJfUG9wSU9MYXllcihQUkZpbGVEZXNjICpmZF9zdGFjaywg
UFJEZXNjSWRlbnRpdHkgaWQpOwoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKIAoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKZXh0ZXJuICAgUFJGaWxlRGVz
YyogICAgIFBSX09wZW4oY29uc3QgY2hhciAqbmFtZSwgUFJJbnRuIGZsYWdzLCBQUkludG4gbW9k
ZSk7CgogCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCmV4dGVybiAgIFBSRmlsZURlc2MqICAgICBQ
Ul9PcGVuRmlsZSgKICAgIGNvbnN0IGNoYXIgKm5hbWUsIFBSSW50biBmbGFncywgUFJJbnRuIG1v
ZGUpOwoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKZXh0ZXJuICAgUFJTdGF0dXMgICAgICAgIFBSX0Ns
b3NlKFBSRmlsZURlc2MgKmZkKTsKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgpl
eHRlcm4gICBQUkludDMyICAgICBQUl9SZWFkKFBSRmlsZURlc2MgKmZkLCB2b2lkICpidWYsIFBS
SW50MzIgYW1vdW50KTsKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKZXh0ZXJuICAgUFJJbnQzMiAg
ICAgUFJfV3JpdGUoUFJGaWxlRGVzYyAqZmQsY29uc3Qgdm9pZCAqYnVmLFBSSW50MzIgYW1vdW50
KTsKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCmV4dGVybiAgIFBSSW50MzIgICAg
IFBSX1dyaXRldigKICAgIFBSRmlsZURlc2MgKmZkLCBjb25zdCBQUklPVmVjICppb3YsIFBSSW50
MzIgaW92X3NpemUsCiAgICBQUkludGVydmFsVGltZSB0aW1lb3V0KTsKCiAKCgoKCgoKCgoKCgoK
CgoKCmV4dGVybiAgIFBSU3RhdHVzICAgICBQUl9EZWxldGUoY29uc3QgY2hhciAqbmFtZSk7Cgog
Cgp0eXBlZGVmIGVudW0gUFJGaWxlVHlwZQp7CiAgICBQUl9GSUxFX0ZJTEUgPSAxLAogICAgUFJf
RklMRV9ESVJFQ1RPUlkgPSAyLAogICAgUFJfRklMRV9PVEhFUiA9IDMKfSBQUkZpbGVUeXBlOwoK
c3RydWN0IFBSRmlsZUluZm8gewogICAgUFJGaWxlVHlwZSB0eXBlOyAgICAgICAgIAogICAgUFJP
ZmZzZXQzMiBzaXplOyAgICAgICAgIAogICAgUFJUaW1lIGNyZWF0aW9uVGltZTsgICAgIAogICAg
UFJUaW1lIG1vZGlmeVRpbWU7ICAgICAgIAp9OwoKc3RydWN0IFBSRmlsZUluZm82NCB7CiAgICBQ
UkZpbGVUeXBlIHR5cGU7ICAgICAgICAgCiAgICBQUk9mZnNldDY0IHNpemU7ICAgICAgICAgCiAg
ICBQUlRpbWUgY3JlYXRpb25UaW1lOyAgICAgCiAgICBQUlRpbWUgbW9kaWZ5VGltZTsgICAgICAg
Cn07CgogCgoKCgoKCgoKCgoKCgoKCgoKZXh0ZXJuICAgUFJTdGF0dXMgICAgIFBSX0dldEZpbGVJ
bmZvKGNvbnN0IGNoYXIgKmZuLCBQUkZpbGVJbmZvICppbmZvKTsKZXh0ZXJuICAgUFJTdGF0dXMg
ICAgIFBSX0dldEZpbGVJbmZvNjQoY29uc3QgY2hhciAqZm4sIFBSRmlsZUluZm82NCAqaW5mbyk7
CgogCgoKCgoKCgoKCgoKCgoKCgpleHRlcm4gICBQUlN0YXR1cyAgICAgUFJfR2V0T3BlbkZpbGVJ
bmZvKFBSRmlsZURlc2MgKmZkLCBQUkZpbGVJbmZvICppbmZvKTsKZXh0ZXJuICAgUFJTdGF0dXMg
ICAgIFBSX0dldE9wZW5GaWxlSW5mbzY0KFBSRmlsZURlc2MgKmZkLCBQUkZpbGVJbmZvNjQgKmlu
Zm8pOwoKIAoKCgoKCgoKCgoKCgoKCgpleHRlcm4gICBQUlN0YXR1cyAgICAgICAgUFJfUmVuYW1l
KGNvbnN0IGNoYXIgKmZyb20sIGNvbnN0IGNoYXIgKnRvKTsKCiAKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgp0eXBlZGVmIGVudW0gUFJBY2Nlc3NIb3cgewogICAgUFJfQUNDRVNTX0VYSVNUUyA9IDEs
CiAgICBQUl9BQ0NFU1NfV1JJVEVfT0sgPSAyLAogICAgUFJfQUNDRVNTX1JFQURfT0sgPSAzCn0g
UFJBY2Nlc3NIb3c7CgpleHRlcm4gICBQUlN0YXR1cyAgICAgUFJfQWNjZXNzKGNvbnN0IGNoYXIg
Km5hbWUsIFBSQWNjZXNzSG93IGhvdyk7CgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKZXh0ZXJuICAgUFJPZmZzZXQzMiAgICAgUFJfU2VlayhQUkZpbGVEZXNjICpmZCwgUFJPZmZz
ZXQzMiBvZmZzZXQsIFBSU2Vla1doZW5jZSB3aGVuY2UpOwpleHRlcm4gICBQUk9mZnNldDY0ICAg
ICBQUl9TZWVrNjQoUFJGaWxlRGVzYyAqZmQsIFBST2Zmc2V0NjQgb2Zmc2V0LCBQUlNlZWtXaGVu
Y2Ugd2hlbmNlKTsKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCmV4dGVybiAgIFBSSW50MzIgICAgIFBS
X0F2YWlsYWJsZShQUkZpbGVEZXNjICpmZCk7CmV4dGVybiAgIFBSSW50NjQgICAgIFBSX0F2YWls
YWJsZTY0KFBSRmlsZURlc2MgKmZkKTsKCiAKCgoKCgoKCgoKCgoKCgoKCmV4dGVybiAgIFBSU3Rh
dHVzICAgIAlQUl9TeW5jKFBSRmlsZURlc2MgKmZkKTsKCiAKCnN0cnVjdCBQUkRpckVudHJ5IHsK
ICAgIGNvbnN0IGNoYXIgKm5hbWU7ICAgICAgICAgCn07CgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoK
CgoKZXh0ZXJuICAgUFJEaXIqICAgICBQUl9PcGVuRGlyKGNvbnN0IGNoYXIgKm5hbWUpOwoKIAoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKdHlwZWRlZiBlbnVtIFBSRGlyRmxhZ3MgewogICAgUFJfU0tJ
UF9OT05FID0gMHgwLAogICAgUFJfU0tJUF9ET1QgPSAweDEsCiAgICBQUl9TS0lQX0RPVF9ET1Qg
PSAweDIsCiAgICBQUl9TS0lQX0JPVEggPSAweDMsCiAgICBQUl9TS0lQX0hJRERFTiA9IDB4NAp9
IFBSRGlyRmxhZ3M7CgpleHRlcm4gICBQUkRpckVudHJ5KiAgICAgUFJfUmVhZERpcihQUkRpciAq
ZGlyLCBQUkRpckZsYWdzIGZsYWdzKTsKCiAKCgoKCgoKCgoKCgoKCgoKCmV4dGVybiAgIFBSU3Rh
dHVzICAgICBQUl9DbG9zZURpcihQUkRpciAqZGlyKTsKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCmV4
dGVybiAgIFBSU3RhdHVzICAgICBQUl9Na0Rpcihjb25zdCBjaGFyICpuYW1lLCBQUkludG4gbW9k
ZSk7CgogCgoKCgoKCgoKCmV4dGVybiAgIFBSU3RhdHVzICAgICBQUl9NYWtlRGlyKGNvbnN0IGNo
YXIgKm5hbWUsIFBSSW50biBtb2RlKTsKCiAKCgoKCgoKCgoKCgoKCgoKCgpleHRlcm4gICBQUlN0
YXR1cyAgICAgUFJfUm1EaXIoY29uc3QgY2hhciAqbmFtZSk7CgogCgoKCgoKCgoKCgoKCgoKCgpl
eHRlcm4gICBQUkZpbGVEZXNjKiAgICAgICAgUFJfTmV3VURQU29ja2V0KHZvaWQpOwoKIAoKCgoK
CgoKCgoKCgoKCgoKZXh0ZXJuICAgUFJGaWxlRGVzYyogICAgICAgIFBSX05ld1RDUFNvY2tldCh2
b2lkKTsKCiAKCgoKCgoKCgoKCgoKCgoKCgpleHRlcm4gICBQUkZpbGVEZXNjKiAgICAgICAgUFJf
T3BlblVEUFNvY2tldChQUkludG4gYWYpOwoKIAoKCgoKCgoKCgoKCgoKCgoKCmV4dGVybiAgIFBS
RmlsZURlc2MqICAgICAgICBQUl9PcGVuVENQU29ja2V0KFBSSW50biBhZik7CgogCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCmV4dGVybiAgIFBSU3RhdHVzICAgICBQUl9Db25uZWN0KAogICAgUFJGaWxl
RGVzYyAqZmQsIGNvbnN0IFBSTmV0QWRkciAqYWRkciwgUFJJbnRlcnZhbFRpbWUgdGltZW91dCk7
CgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgpleHRlcm4gICBQUlN0YXR1cyAgICAgICAgUFJf
R2V0Q29ubmVjdFN0YXR1cyhjb25zdCBQUlBvbGxEZXNjICpwZCk7CgogCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCmV4dGVybiAgIFBSRmlsZURlc2MqICAgICBQUl9BY2NlcHQoCiAgICBQUkZpbGVEZXNj
ICpmZCwgUFJOZXRBZGRyICphZGRyLCBQUkludGVydmFsVGltZSB0aW1lb3V0KTsKCiAKCgoKCgoK
CgoKCgoKCgoKCgoKZXh0ZXJuICAgUFJTdGF0dXMgICAgIFBSX0JpbmQoUFJGaWxlRGVzYyAqZmQs
IGNvbnN0IFBSTmV0QWRkciAqYWRkcik7CgogCgoKCgoKCgoKCgoKCgoKCgoKCgpleHRlcm4gICBQ
UlN0YXR1cyAgICAgUFJfTGlzdGVuKFBSRmlsZURlc2MgKmZkLCBQUkludG4gYmFja2xvZyk7Cgog
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCnR5cGVkZWYgZW51bSBQUlNodXRkb3duSG93CnsKICAgIFBS
X1NIVVRET1dOX1JDViA9IDAsICAgICAgIAogICAgUFJfU0hVVERPV05fU0VORCA9IDEsICAgICAg
CiAgICBQUl9TSFVURE9XTl9CT1RIID0gMiAgICAgICAKfSBQUlNodXRkb3duSG93OwoKZXh0ZXJu
ICAgUFJTdGF0dXMgICAgICAgIFBSX1NodXRkb3duKFBSRmlsZURlc2MgKmZkLCBQUlNodXRkb3du
SG93IGhvdyk7CgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgpleHRlcm4gICBQUkludDMy
ICAgICAgICBQUl9SZWN2KFBSRmlsZURlc2MgKmZkLCB2b2lkICpidWYsIFBSSW50MzIgYW1vdW50
LAogICAgICAgICAgICAgICAgUFJJbnRuIGZsYWdzLCBQUkludGVydmFsVGltZSB0aW1lb3V0KTsK
CiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKZXh0ZXJuICAgUFJJbnQzMiAgICAgICAgUFJf
U2VuZChQUkZpbGVEZXNjICpmZCwgY29uc3Qgdm9pZCAqYnVmLCBQUkludDMyIGFtb3VudCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUkludG4gZmxhZ3MsIFBSSW50ZXJ2YWxUaW1l
IHRpbWVvdXQpOwoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKZXh0ZXJuICAgUFJJ
bnQzMiAgICAgUFJfUmVjdkZyb20oCiAgICBQUkZpbGVEZXNjICpmZCwgdm9pZCAqYnVmLCBQUklu
dDMyIGFtb3VudCwgUFJJbnRuIGZsYWdzLAogICAgUFJOZXRBZGRyICphZGRyLCBQUkludGVydmFs
VGltZSB0aW1lb3V0KTsKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCmV4dGVybiAgIFBS
SW50MzIgICAgIFBSX1NlbmRUbygKICAgIFBSRmlsZURlc2MgKmZkLCBjb25zdCB2b2lkICpidWYs
IFBSSW50MzIgYW1vdW50LCBQUkludG4gZmxhZ3MsCiAgICBjb25zdCBQUk5ldEFkZHIgKmFkZHIs
IFBSSW50ZXJ2YWxUaW1lIHRpbWVvdXQpOwoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCmV4dGVybiAgIFBSSW50MzIgICAgIFBSX1RyYW5zbWl0RmlsZSgKICAgIFBSRmlsZURl
c2MgKm5ldHdvcmtTb2NrZXQsIFBSRmlsZURlc2MgKnNvdXJjZUZpbGUsCiAgICBjb25zdCB2b2lk
ICpoZWFkZXJzLCBQUkludDMyIGhsZW4sIFBSVHJhbnNtaXRGaWxlRmxhZ3MgZmxhZ3MsCiAgICBQ
UkludGVydmFsVGltZSB0aW1lb3V0KTsKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKc3RydWN0IFBSU2VuZEZpbGVEYXRhIHsKCVBSRmlsZURlc2MJKmZkOwkJCSAKCVBSVWludDMy
CWZpbGVfb2Zmc2V0OwkgCglQUlNpemUJCWZpbGVfbmJ5dGVzOwkgCgkJCQkJCQkJIAoJCQkJCQkJ
CSAKCWNvbnN0IHZvaWQJKmhlYWRlcjsJCSAKCVBSSW50MzIJCWhsZW47CQkJIAoJY29uc3Qgdm9p
ZAkqdHJhaWxlcjsJCSAKCVBSSW50MzIJCXRsZW47CQkJIAp9OwoKCmV4dGVybiAgIFBSSW50MzIg
ICAgIFBSX1NlbmRGaWxlKAogICAgUFJGaWxlRGVzYyAqbmV0d29ya1NvY2tldCwgUFJTZW5kRmls
ZURhdGEgKnNlbmREYXRhLAoJUFJUcmFuc21pdEZpbGVGbGFncyBmbGFncywgUFJJbnRlcnZhbFRp
bWUgdGltZW91dCk7CgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAg
ICAgICAKIAoKCgoKCgoKCmV4dGVybiAgIFBSSW50MzIgICAgIFBSX0FjY2VwdFJlYWQoCiAgICBQ
UkZpbGVEZXNjICpsaXN0ZW5Tb2NrLCBQUkZpbGVEZXNjICoqYWNjZXB0ZWRTb2NrLAogICAgUFJO
ZXRBZGRyICoqcGVlckFkZHIsIHZvaWQgKmJ1ZiwgUFJJbnQzMiBhbW91bnQsIFBSSW50ZXJ2YWxU
aW1lIHRpbWVvdXQpOwoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKZXh0ZXJuICAgUFJTdGF0dXMgICAg
IFBSX05ld1RDUFNvY2tldFBhaXIoUFJGaWxlRGVzYyAqZmRzWzJdKTsKCiAKCgoKCgoKCgoKCgoK
CgoKCgpleHRlcm4gICBQUlN0YXR1cyAgICAJUFJfR2V0U29ja05hbWUoUFJGaWxlRGVzYyAqZmQs
IFBSTmV0QWRkciAqYWRkcik7CgogCgoKCgoKCgoKCgoKCgoKCgoKCgpleHRlcm4gICBQUlN0YXR1
cyAgICAJUFJfR2V0UGVlck5hbWUoUFJGaWxlRGVzYyAqZmQsIFBSTmV0QWRkciAqYWRkcik7Cgpl
eHRlcm4gICBQUlN0YXR1cyAgICAJUFJfR2V0U29ja2V0T3B0aW9uKAogICAgUFJGaWxlRGVzYyAq
ZmQsIFBSU29ja2V0T3B0aW9uRGF0YSAqZGF0YSk7CgpleHRlcm4gICBQUlN0YXR1cyAgICAJUFJf
U2V0U29ja2V0T3B0aW9uKAogICAgUFJGaWxlRGVzYyAqZmQsIGNvbnN0IFBSU29ja2V0T3B0aW9u
RGF0YSAqZGF0YSk7CgogCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCmV4dGVybiAgIFBSU3Rh
dHVzICAgICBQUl9TZXRGREluaGVyaXRhYmxlKAogICAgUFJGaWxlRGVzYyAqZmQsCiAgICBQUkJv
b2wgaW5oZXJpdGFibGUpOwoKIAoKCgoKCgoKCgoKCgoKCgpleHRlcm4gICBQUkZpbGVEZXNjICog
ICAgIFBSX0dldEluaGVyaXRlZEZEKGNvbnN0IGNoYXIgKm5hbWUpOwoKIAoKCgoKCgoKdHlwZWRl
ZiBzdHJ1Y3QgUFJGaWxlTWFwIFBSRmlsZU1hcDsKCiAKCgp0eXBlZGVmIGVudW0gUFJGaWxlTWFw
UHJvdGVjdCB7CiAgICBQUl9QUk9UX1JFQURPTkxZLCAgICAgIAogICAgUFJfUFJPVF9SRUFEV1JJ
VEUsICAgICAKICAgIFBSX1BST1RfV1JJVEVDT1BZICAgICAgCn0gUFJGaWxlTWFwUHJvdGVjdDsK
CmV4dGVybiAgIFBSRmlsZU1hcCAqICAgICBQUl9DcmVhdGVGaWxlTWFwKAogICAgUFJGaWxlRGVz
YyAqZmQsCiAgICBQUkludDY0IHNpemUsCiAgICBQUkZpbGVNYXBQcm90ZWN0IHByb3QpOwoKZXh0
ZXJuICAgdm9pZCAqICAgICBQUl9NZW1NYXAoCiAgICBQUkZpbGVNYXAgKmZtYXAsCiAgICBQUk9m
ZnNldDY0IG9mZnNldCwgICAKICAgIFBSVWludDMyIGxlbik7CgpleHRlcm4gICBQUlN0YXR1cyAg
ICAgUFJfTWVtVW5tYXAodm9pZCAqYWRkciwgUFJVaW50MzIgbGVuKTsKCmV4dGVybiAgIFBSU3Rh
dHVzICAgICBQUl9DbG9zZUZpbGVNYXAoUFJGaWxlTWFwICpmbWFwKTsKCiAKCgoKCgoKCiAKCgoK
CmV4dGVybiAgIFBSU3RhdHVzICAgICBQUl9DcmVhdGVQaXBlKAogICAgUFJGaWxlRGVzYyAqKnJl
YWRQaXBlLAogICAgUFJGaWxlRGVzYyAqKndyaXRlUGlwZQopOwoKIAogCiAKCnN0cnVjdCBQUlBv
bGxEZXNjIHsKICAgIFBSRmlsZURlc2MqIGZkOwogICAgUFJJbnQxNiBpbl9mbGFnczsKICAgIFBS
SW50MTYgb3V0X2ZsYWdzOwp9OwoKIAoKCgoKIyAxNzg2ICIvaG9tZS9yZWQxL2RhdGEvbW96aWxs
YS9kaXN0L2luY2x1ZGUvcHJpby5oIgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCmV4dGVybiAgIFBSSW50MzIgICAgIFBSX1BvbGwoCiAgICBQUlBvbGxEZXNj
ICpwZHMsIFBSSW50biBucGRzLCBQUkludGVydmFsVGltZSB0aW1lb3V0KTsKCiAKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCmV4dGVybiAgIFBSRmlsZURlc2MgKiAgICAg
UFJfTmV3UG9sbGFibGVFdmVudCh2b2lkKTsKCmV4dGVybiAgIFBSU3RhdHVzICAgICBQUl9EZXN0
cm95UG9sbGFibGVFdmVudChQUkZpbGVEZXNjICpldmVudCk7CgpleHRlcm4gICBQUlN0YXR1cyAg
ICAgUFJfU2V0UG9sbGFibGVFdmVudChQUkZpbGVEZXNjICpldmVudCk7CgpleHRlcm4gICBQUlN0
YXR1cyAgICAgUFJfV2FpdEZvclBvbGxhYmxlRXZlbnQoUFJGaWxlRGVzYyAqZXZlbnQpOwoKIAoK
CiMgMzMgIi9ob21lL3JlZDEvZGF0YS9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9uc3ByLmgiIDIKCiMg
MSAiL2hvbWUvcmVkMS9kYXRhL21vemlsbGEvZGlzdC9pbmNsdWRlL3ByaXBjc2VtLmgiIDEKIAog
CgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKIAoKCgp0eXBlZGVm
IHN0cnVjdCBQUlNlbSBQUlNlbTsKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKZXh0ZXJuICAgUFJT
ZW0gKiAgICAgUFJfT3BlblNlbWFwaG9yZSgKICAgIGNvbnN0IGNoYXIgKm5hbWUsIFBSSW50biBm
bGFncywgUFJJbnRuIG1vZGUsIFBSVWludG4gdmFsdWUpOwoKIAoKCgoKCgoKCgpleHRlcm4gICBQ
UlN0YXR1cyAgICAgUFJfV2FpdFNlbWFwaG9yZShQUlNlbSAqc2VtKTsKCiAKCgoKCgpleHRlcm4g
ICBQUlN0YXR1cyAgICAgUFJfUG9zdFNlbWFwaG9yZShQUlNlbSAqc2VtKTsKCiAKCgoKCgpleHRl
cm4gICBQUlN0YXR1cyAgICAgUFJfQ2xvc2VTZW1hcGhvcmUoUFJTZW0gKnNlbSk7CgogCgoKCgoK
ZXh0ZXJuICAgUFJTdGF0dXMgICAgIFBSX0RlbGV0ZVNlbWFwaG9yZShjb25zdCBjaGFyICpuYW1l
KTsKCiAKCgojIDM0ICIvaG9tZS9yZWQxL2RhdGEvbW96aWxsYS9kaXN0L2luY2x1ZGUvbnNwci5o
IiAyCgojIDEgIi9ob21lL3JlZDEvZGF0YS9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9wcmxpbmsuaCIg
MQogCiAKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCiAKCnR5cGVkZWYgc3RydWN0IFBSTGlicmFy
eSBQUkxpYnJhcnk7Cgp0eXBlZGVmIHN0cnVjdCBQUlN0YXRpY0xpbmtUYWJsZSB7CiAgICBjb25z
dCBjaGFyICpuYW1lOwogICAgdm9pZCAoKmZwKSgpOwp9IFBSU3RhdGljTGlua1RhYmxlOwoKIAoK
CgoKCgpleHRlcm4gICBQUlN0YXR1cyAgICAgUFJfU2V0TGlicmFyeVBhdGgoY29uc3QgY2hhciAq
cGF0aCk7CgogCgoKCgoKCgpleHRlcm4gICBjaGFyKiAgICAgUFJfR2V0TGlicmFyeVBhdGgodm9p
ZCk7CgogCgoKCgoKCgoKCgpleHRlcm4gICBjaGFyKiAgICAgUFJfR2V0TGlicmFyeU5hbWUoY29u
c3QgY2hhciAqZGlyLCBjb25zdCBjaGFyICpsaWIpOwoKIAoKCgpleHRlcm4gICB2b2lkICAgICBQ
Ul9GcmVlTGlicmFyeU5hbWUoY2hhciAqbWVtKTsKCiAKCgoKCgoKCgoKCgpleHRlcm4gICBQUkxp
YnJhcnkqICAgICBQUl9Mb2FkTGlicmFyeShjb25zdCBjaGFyICpuYW1lKTsKCiAKCgoKCgoKCgoK
CgoKCgoKCgoKdHlwZWRlZiBlbnVtIFBSTGliU3BlY1R5cGUgewogICAgUFJfTGliU3BlY19QYXRo
bmFtZSwKICAgIFBSX0xpYlNwZWNfTWFjTmFtZWRGcmFnbWVudCwKICAgIFBSX0xpYlNwZWNfTWFj
SW5kZXhlZEZyYWdtZW50Cn0gUFJMaWJTcGVjVHlwZTsKCnN0cnVjdCBGU1NwZWM7ICAKCnR5cGVk
ZWYgc3RydWN0IFBSTGliU3BlYyB7CiAgICBQUkxpYlNwZWNUeXBlIHR5cGU7CiAgICB1bmlvbiB7
CiAgICAgICAgIAogICAgICAgIGNvbnN0IGNoYXIgKnBhdGhuYW1lOwoKICAgICAgICAgCiAgICAg
ICAgc3RydWN0IHsKICAgICAgICAgICAgY29uc3Qgc3RydWN0IEZTU3BlYyAqZnNzcGVjOwogICAg
ICAgICAgICBjb25zdCBjaGFyICpuYW1lOwogICAgICAgIH0gbWFjX25hbWVkX2ZyYWdtZW50OwoK
ICAgICAgICAgCiAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgY29uc3Qgc3RydWN0IEZTU3Bl
YyAqZnNzcGVjOwogICAgICAgICAgICBQUlVpbnQzMiBpbmRleDsKICAgICAgICB9IG1hY19pbmRl
eGVkX2ZyYWdtZW50OwogICAgfSB2YWx1ZTsKfSBQUkxpYlNwZWM7CgogCgoKCgoKCgoKCgogCgoK
CmV4dGVybiAgIFBSTGlicmFyeSAqICAgIApQUl9Mb2FkTGlicmFyeVdpdGhGbGFncygKICAgIFBS
TGliU3BlYyBsaWJTcGVjLCAgICAgCiAgICBQUkludG4gZmxhZ3MgICAgICAgICAgIAopOwoKIAoK
CgoKCgoKCmV4dGVybiAgIFBSU3RhdHVzICAgICBQUl9VbmxvYWRMaWJyYXJ5KFBSTGlicmFyeSAq
bGliKTsKCiAKCgoKCgoKCmV4dGVybiAgIHZvaWQqICAgICBQUl9GaW5kU3ltYm9sKFBSTGlicmFy
eSAqbGliLCBjb25zdCBjaGFyICpuYW1lKTsKCiAKCgoKCgoKCgoKZXh0ZXJuICAgdm9pZCogICAg
IFBSX0ZpbmRTeW1ib2xBbmRMaWJyYXJ5KGNvbnN0IGNoYXIgKm5hbWUsCgkJCQkJCSAgICAgIFBS
TGlicmFyeSogKmxpYik7CgogCgoKCgoKCgoKCgpleHRlcm4gICBQUkxpYnJhcnkqICAgICBQUl9M
b2FkU3RhdGljTGlicmFyeSgKICAgIGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IFBSU3RhdGljTGlu
a1RhYmxlICp0YWJsZSk7CgogCgoKIyAzNSAiL2hvbWUvcmVkMS9kYXRhL21vemlsbGEvZGlzdC9p
bmNsdWRlL25zcHIuaCIgMgoKCiMgMSAiL2hvbWUvcmVkMS9kYXRhL21vemlsbGEvZGlzdC9pbmNs
dWRlL3BybG9nLmgiIDEKIAogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCiAKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgp0eXBlZGVmIGVudW0gUFJMb2dNb2R1bGVMZXZlbCB7CiAg
ICBQUl9MT0dfTk9ORSA9IDAsICAgICAgICAgICAgICAgICAKICAgIFBSX0xPR19BTFdBWVMgPSAx
LCAgICAgICAgICAgICAgIAogICAgUFJfTE9HX0VSUk9SID0gMiwgICAgICAgICAgICAgICAgCiAg
ICBQUl9MT0dfV0FSTklORyA9IDMsICAgICAgICAgICAgICAKICAgIFBSX0xPR19ERUJVRyA9IDQs
ICAgICAgICAgICAgICAgIAoKICAgIFBSX0xPR19OT1RJQ0UgPSBQUl9MT0dfREVCVUcsICAgIAog
ICAgUFJfTE9HX1dBUk4gPSBQUl9MT0dfV0FSTklORywgICAgCiAgICBQUl9MT0dfTUlOID0gUFJf
TE9HX0RFQlVHLCAgICAgICAKICAgIFBSX0xPR19NQVggPSBQUl9MT0dfREVCVUcgICAgICAgIAp9
IFBSTG9nTW9kdWxlTGV2ZWw7CgogCgoKCgp0eXBlZGVmIHN0cnVjdCBQUkxvZ01vZHVsZUluZm8g
ewogICAgY29uc3QgY2hhciAqbmFtZTsKICAgIFBSTG9nTW9kdWxlTGV2ZWwgbGV2ZWw7CiAgICBz
dHJ1Y3QgUFJMb2dNb2R1bGVJbmZvICpuZXh0Owp9IFBSTG9nTW9kdWxlSW5mbzsKCiAKCgpleHRl
cm4gICBQUkxvZ01vZHVsZUluZm8qICAgICBQUl9OZXdMb2dNb2R1bGUoY29uc3QgY2hhciAqbmFt
ZSk7CgogCgoKCmV4dGVybiAgIFBSQm9vbCAgICAgUFJfU2V0TG9nRmlsZShjb25zdCBjaGFyICpu
YW1lKTsKCiAKCgoKZXh0ZXJuICAgdm9pZCAgICAgUFJfU2V0TG9nQnVmZmVyaW5nKFBSSW50biBi
dWZmZXJfc2l6ZSk7CgogCgoKCgoKZXh0ZXJuICAgdm9pZCAgICAgUFJfTG9nUHJpbnQoY29uc3Qg
Y2hhciAqZm10LCAuLi4pOwoKIAoKCmV4dGVybiAgIHZvaWQgICAgIFBSX0xvZ0ZsdXNoKHZvaWQp
OwoKIAoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyAyMjgg
Ii9ob21lL3JlZDEvZGF0YS9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9wcmxvZy5oIgoKCgoKCgoKIAoK
CiMgMzcgIi9ob21lL3JlZDEvZGF0YS9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9uc3ByLmgiIDIKCgoj
IDEgIi9ob21lL3JlZDEvZGF0YS9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9wcm1lbS5oIiAxCiAKIAoK
CgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCiMgMSAiL2hvbWUvcmVkMS9nY2MtMi45NS4zL2xpYi9n
Y2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi43LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMK
IyAzNDIgIi9ob21lL3JlZDEvZ2NjLTIuOTUuMy9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJp
czIuNy8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKIyAyOCAiL2hvbWUvcmVkMS9kYXRhL21v
emlsbGEvZGlzdC9pbmNsdWRlL3BybWVtLmgiIDIKCiMgMSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5o
IiAxIDMKIAoKCgoKIAogCgogCiAKIAoKCgoKI3ByYWdtYSBpZGVudAkiQCgjKXN0ZGxpYi5oCTEu
NDQJOTgvMDEvMjIgU01JIgkKCgoKCgoKCgoKCgoKdHlwZWRlZglzdHJ1Y3QgewoJaW50CXF1b3Q7
CglpbnQJcmVtOwp9IGRpdl90OwoKdHlwZWRlZiBzdHJ1Y3QgewoJbG9uZwlxdW90OwoJbG9uZwly
ZW07Cn0gbGRpdl90OwoKCnR5cGVkZWYgc3RydWN0IHsKCWxvbmcgbG9uZwlxdW90OwoJbG9uZyBs
b25nCXJlbTsKfSBsbGRpdl90OwoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKIAojIDEwMSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCgoKIAojIDExNyAiL3Vzci9p
bmNsdWRlL3N0ZGxpYi5oIiAzCgoKZXh0ZXJuIHVuc2lnbmVkIGNoYXIJX19jdHlwZVtdOwoKCgpl
eHRlcm4gZG91YmxlIGF0b2YoY29uc3QgY2hhciAqKTsKZXh0ZXJuIGludCBhdG9pKGNvbnN0IGNo
YXIgKik7CmV4dGVybiBsb25nIGludCBhdG9sKGNvbnN0IGNoYXIgKik7CmV4dGVybiBkb3VibGUg
c3RydG9kKGNvbnN0IGNoYXIgKiwgY2hhciAqKik7CmV4dGVybiBsb25nIGludCBzdHJ0b2woY29u
c3QgY2hhciAqLCBjaGFyICoqLCBpbnQpOwpleHRlcm4gdW5zaWduZWQgbG9uZyBpbnQgc3RydG91
bChjb25zdCBjaGFyICosIGNoYXIgKiosIGludCk7CgpleHRlcm4gaW50IHJhbmQodm9pZCk7CmV4
dGVybiB2b2lkIHNyYW5kKHVuc2lnbmVkIGludCk7CgoKZXh0ZXJuIGludCByYW5kX3IodW5zaWdu
ZWQgaW50ICopOwoKCmV4dGVybiB2b2lkICpjYWxsb2Moc2l6ZV90LCBzaXplX3QpOwpleHRlcm4g
dm9pZCBmcmVlKHZvaWQgKik7CmV4dGVybiB2b2lkICptYWxsb2Moc2l6ZV90KTsKZXh0ZXJuIHZv
aWQgKnJlYWxsb2Modm9pZCAqLCBzaXplX3QpOwoKZXh0ZXJuIHZvaWQgYWJvcnQodm9pZCk7CmV4
dGVybiBpbnQgYXRleGl0KHZvaWQgKCopKHZvaWQpKTsKZXh0ZXJuIHZvaWQgZXhpdChpbnQpOwpl
eHRlcm4gdm9pZCBfZXhpdGhhbmRsZSh2b2lkKTsKZXh0ZXJuIGNoYXIgKmdldGVudihjb25zdCBj
aGFyICopOwpleHRlcm4gaW50IHN5c3RlbShjb25zdCBjaGFyICopOwoKZXh0ZXJuIHZvaWQgKmJz
ZWFyY2goY29uc3Qgdm9pZCAqLCBjb25zdCB2b2lkICosIHNpemVfdCwgc2l6ZV90LAoJaW50ICgq
KShjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKikpOwpleHRlcm4gdm9pZCBxc29ydCh2b2lkICos
IHNpemVfdCwgc2l6ZV90LAoJaW50ICgqKShjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKikpOwoK
ZXh0ZXJuIGludCBhYnMoaW50KTsKZXh0ZXJuIGRpdl90IGRpdihpbnQsIGludCk7CmV4dGVybiBs
b25nIGludCBsYWJzKGxvbmcpOwpleHRlcm4gbGRpdl90IGxkaXYobG9uZywgbG9uZyk7CgpleHRl
cm4gaW50IG1idG93Yyh3Y2hhcl90ICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90KTsKZXh0ZXJuIGlu
dCBtYmxlbihjb25zdCBjaGFyICosIHNpemVfdCk7CmV4dGVybiBpbnQgd2N0b21iKGNoYXIgKiwg
d2NoYXJfdCk7CgpleHRlcm4gc2l6ZV90IG1ic3Rvd2NzKHdjaGFyX3QgKiwgY29uc3QgY2hhciAq
LCBzaXplX3QpOwpleHRlcm4gc2l6ZV90IHdjc3RvbWJzKGNoYXIgKiwgY29uc3Qgd2NoYXJfdCAq
LCBzaXplX3QpOwoKCgoKZXh0ZXJuIGRvdWJsZSBkcmFuZDQ4KHZvaWQpOwpleHRlcm4gZG91Ymxl
IGVyYW5kNDgodW5zaWduZWQgc2hvcnQgKik7CmV4dGVybiBsb25nIGpyYW5kNDgodW5zaWduZWQg
c2hvcnQgKik7CmV4dGVybiB2b2lkIGxjb25nNDgodW5zaWduZWQgc2hvcnQgKik7CmV4dGVybiBs
b25nIGxyYW5kNDgodm9pZCk7CmV4dGVybiBsb25nIG1yYW5kNDgodm9pZCk7CmV4dGVybiBsb25n
IG5yYW5kNDgodW5zaWduZWQgc2hvcnQgKik7CmV4dGVybiB1bnNpZ25lZCBzaG9ydCAqc2VlZDQ4
KHVuc2lnbmVkIHNob3J0ICopOwpleHRlcm4gdm9pZCBzcmFuZDQ4KGxvbmcpOwpleHRlcm4gaW50
IHB1dGVudihjaGFyICopOwpleHRlcm4gdm9pZCBzZXRrZXkoY29uc3QgY2hhciAqKTsKCgoKCgpl
eHRlcm4gdm9pZCBzd2FiKGNvbnN0IGNoYXIgKiwgY2hhciAqLCBpbnQpOwoKCgoKZXh0ZXJuIGlu
dAlta3N0ZW1wKGNoYXIgKik7CgoKZXh0ZXJuIGludAlta3N0ZW1wNjQoY2hhciAqKTsKCgoKCgoK
ZXh0ZXJuIGxvbmcgYTY0bChjb25zdCBjaGFyICopOwpleHRlcm4gY2hhciAqZWN2dChkb3VibGUs
IGludCwgaW50ICosIGludCAqKTsKZXh0ZXJuIGNoYXIgKmZjdnQoZG91YmxlLCBpbnQsIGludCAq
LCBpbnQgKik7CmV4dGVybiBjaGFyICpnY3Z0KGRvdWJsZSwgaW50LCBjaGFyICopOwpleHRlcm4g
aW50IGdldHN1Ym9wdChjaGFyICoqLCBjaGFyICpjb25zdCAqLCBjaGFyICoqKTsKZXh0ZXJuIGlu
dCAgZ3JhbnRwdChpbnQpOwpleHRlcm4gY2hhciAqaW5pdHN0YXRlKHVuc2lnbmVkLCBjaGFyICos
IHNpemVfdCk7CmV4dGVybiBjaGFyICpsNjRhKGxvbmcpOwpleHRlcm4gY2hhciAqbWt0ZW1wKGNo
YXIgKik7CmV4dGVybiBjaGFyICpwdHNuYW1lKGludCk7CmV4dGVybiBsb25nIHJhbmRvbSh2b2lk
KTsKZXh0ZXJuIGNoYXIgKnJlYWxwYXRoKGNvbnN0IGNoYXIgKiwgY2hhciAqKTsKZXh0ZXJuIGNo
YXIgKnNldHN0YXRlKGNvbnN0IGNoYXIgKik7CmV4dGVybiB2b2lkIHNyYW5kb20odW5zaWduZWQp
OwpleHRlcm4gaW50IHR0eXNsb3Qodm9pZCk7CmV4dGVybiBpbnQgIHVubG9ja3B0KGludCk7CmV4
dGVybiB2b2lkICp2YWxsb2Moc2l6ZV90KTsKCgoKCmV4dGVybiBpbnQgZHVwMihpbnQsIGludCk7
CmV4dGVybiBjaGFyICpxZWN2dChsb25nIGRvdWJsZSwgaW50LCBpbnQgKiwgaW50ICopOwpleHRl
cm4gY2hhciAqcWZjdnQobG9uZyBkb3VibGUsIGludCwgaW50ICosIGludCAqKTsKZXh0ZXJuIGNo
YXIgKnFnY3Z0KGxvbmcgZG91YmxlLCBpbnQsIGNoYXIgKik7CmV4dGVybiBjaGFyICpnZXRjd2Qo
Y2hhciAqLCBzaXplX3QpOwpleHRlcm4gY29uc3QgY2hhciAqZ2V0ZXhlY25hbWUodm9pZCk7CmV4
dGVybiBjaGFyICpnZXRsb2dpbih2b2lkKTsKZXh0ZXJuIGludCBnZXRvcHQoaW50LCBjaGFyICpj
b25zdCAqLCBjb25zdCBjaGFyICopOwpleHRlcm4gY2hhciAqb3B0YXJnOwpleHRlcm4gaW50IG9w
dGluZCwgb3B0ZXJyLCBvcHRvcHQ7CmV4dGVybiBjaGFyICpnZXRwYXNzKGNvbnN0IGNoYXIgKik7
CmV4dGVybiBjaGFyICpnZXRwYXNzcGhyYXNlKGNvbnN0IGNoYXIgKik7CmV4dGVybiBpbnQgZ2V0
cHcodWlkX3QsIGNoYXIgKik7CmV4dGVybiBpbnQgaXNhdHR5KGludCk7CmV4dGVybiB2b2lkICpt
ZW1hbGlnbihzaXplX3QsIHNpemVfdCk7CmV4dGVybiBjaGFyICp0dHluYW1lKGludCk7CgoKZXh0
ZXJuIGxvbmcgbG9uZyBhdG9sbChjb25zdCBjaGFyICopOwpleHRlcm4gbG9uZyBsb25nIGxsYWJz
KGxvbmcgbG9uZyk7CmV4dGVybiBsbGRpdl90IGxsZGl2KGxvbmcgbG9uZywgbG9uZyBsb25nKTsK
ZXh0ZXJuIGNoYXIgKmxsdG9zdHIobG9uZyBsb25nLCBjaGFyICopOwpleHRlcm4gbG9uZyBsb25n
IHN0cnRvbGwoY29uc3QgY2hhciAqLCBjaGFyICoqLCBpbnQpOwpleHRlcm4gdW5zaWduZWQgbG9u
ZyBsb25nIHN0cnRvdWxsKGNvbnN0IGNoYXIgKiwgY2hhciAqKiwgaW50KTsKZXh0ZXJuIGNoYXIg
KnVsbHRvc3RyKHVuc2lnbmVkIGxvbmcgbG9uZywgY2hhciAqKTsKCgoKCiMgMzgwICIvdXNyL2lu
Y2x1ZGUvc3RkbGliLmgiIDMKCgoKCgoKCiMgMjkgIi9ob21lL3JlZDEvZGF0YS9tb3ppbGxhL2Rp
c3QvaW5jbHVkZS9wcm1lbS5oIiAyCgoKIAoKIAoKCgoKCgogCgoKCgoKCgpleHRlcm4gICB2b2lk
ICogICAgIFBSX01hbGxvYyhQUlVpbnQzMiBzaXplKTsKCmV4dGVybiAgIHZvaWQgKiAgICAgUFJf
Q2FsbG9jKFBSVWludDMyIG5lbGVtLCBQUlVpbnQzMiBlbHNpemUpOwoKZXh0ZXJuICAgdm9pZCAq
ICAgICBQUl9SZWFsbG9jKHZvaWQgKnB0ciwgUFJVaW50MzIgc2l6ZSk7CgpleHRlcm4gICB2b2lk
ICAgICBQUl9GcmVlKHZvaWQgKnB0cik7CgogCgoKCgogCgoKCgoKCgoKCiAKCgoKCgoKCgoKIAoK
CgoKCgoKCgoKCiAKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCiAKCgoKCgoKCgoK
CgogCgoKIyAzOSAiL2hvbWUvcmVkMS9kYXRhL21vemlsbGEvZGlzdC9pbmNsdWRlL25zcHIuaCIg
MgoKCiMgMSAiL2hvbWUvcmVkMS9kYXRhL21vemlsbGEvZGlzdC9pbmNsdWRlL3BybXdhaXQuaCIg
MQogCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKIAogCiAKIAogCiAKIAogCiAKIAogCiAK
CiAKCgoKCgoKCnR5cGVkZWYgc3RydWN0IFBSV2FpdEdyb3VwIFBSV2FpdEdyb3VwOwoKIAoKCgoK
CgoKCgoKCgoKCgoKCgoKCgp0eXBlZGVmIGVudW0gUFJNV1N0YXR1cwp7CiAgICBQUl9NV19QRU5E
SU5HID0gMSwKICAgIFBSX01XX1NVQ0NFU1MgPSAwLAogICAgUFJfTVdfRkFJTFVSRSA9IC0xLAog
ICAgUFJfTVdfVElNRU9VVCA9IC0yLAogICAgUFJfTVdfSU5URVJSVVBUID0gLTMKfSBQUk1XU3Rh
dHVzOwoKIAoKCgoKCgp0eXBlZGVmIHN0cnVjdCBQUk1lbW9yeURlc2NyaXB0b3IKewogICAgdm9p
ZCAqc3RhcnQ7ICAgICAgICAgICAgICAgICAKICAgIFBSU2l6ZSBsZW5ndGg7ICAgICAgICAgICAg
ICAgCn0gUFJNZW1vcnlEZXNjcmlwdG9yOwoKIAoKCgoKCgp0eXBlZGVmIHN0cnVjdCBQUk1XYWl0
Q2xpZW50RGF0YSBQUk1XYWl0Q2xpZW50RGF0YTsKCiAKCgoKCgoKCgoKCgoKCgoKdHlwZWRlZiBz
dHJ1Y3QgUFJSZWN2V2FpdCAKewogICAgUFJDTGlzdCBpbnRlcm5hbDsgICAgICAgICAgICAKCiAg
ICBQUkZpbGVEZXNjICpmZDsgICAgICAgICAgICAgIAogICAgUFJNV1N0YXR1cyBvdXRjb21lOyAg
ICAgICAgICAKICAgIFBSSW50ZXJ2YWxUaW1lIHRpbWVvdXQ7ICAgICAgCgogICAgUFJJbnQzMiBi
eXRlc1JlY3Y7ICAgICAgICAgICAKICAgIFBSTWVtb3J5RGVzY3JpcHRvciBidWZmZXI7ICAgCiAg
ICBQUk1XYWl0Q2xpZW50RGF0YSAqY2xpZW50OyAgIAp9IFBSUmVjdldhaXQ7CgogCgoKCgoKCgoK
dHlwZWRlZiBzdHJ1Y3QgUFJNV2FpdEVudW1lcmF0b3IgUFJNV2FpdEVudW1lcmF0b3I7CgoKIAoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgpleHRlcm4gICBQUlN0YXR1cyAgICAgUFJfQWRk
V2FpdEZpbGVEZXNjKFBSV2FpdEdyb3VwICpncm91cCwgUFJSZWN2V2FpdCAqZGVzYyk7CgogCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgpleHRlcm4gICBQUlJlY3ZXYWl0KiAgICAgUFJf
V2FpdFJlY3ZSZWFkeShQUldhaXRHcm91cCAqZ3JvdXApOwoKIAoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCmV4dGVybiAgIFBSU3RhdHVzICAgICBQUl9DYW5jZWxXYWl0RmlsZURlc2Mo
UFJXYWl0R3JvdXAgKmdyb3VwLCBQUlJlY3ZXYWl0ICpkZXNjKTsKCiAKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKZXh0ZXJuICAgUFJSZWN2V2FpdCogICAgIFBSX0NhbmNlbFdhaXRHcm91cChQUldh
aXRHcm91cCAqZ3JvdXApOwoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgpleHRlcm4gICBQUldh
aXRHcm91cCogICAgIFBSX0NyZWF0ZVdhaXRHcm91cChQUkludDMyIHNpemUpOwoKIAoKCgoKCgoK
CgoKCgoKCgoKCgoKCmV4dGVybiAgIFBSU3RhdHVzICAgICBQUl9EZXN0cm95V2FpdEdyb3VwKFBS
V2FpdEdyb3VwICpncm91cCk7CgogCgoKCgoKCgoKCgoKCgoKCgoKCgpleHRlcm4gICBQUk1XYWl0
RW51bWVyYXRvciogICAgIFBSX0NyZWF0ZU1XYWl0RW51bWVyYXRvcihQUldhaXRHcm91cCAqZ3Jv
dXApOwoKIAoKCgoKCgoKCgoKCgoKCgpleHRlcm4gICBQUlN0YXR1cyAgICAgUFJfRGVzdHJveU1X
YWl0RW51bWVyYXRvcihQUk1XYWl0RW51bWVyYXRvciogZW51bWVyYXRvcik7CgogCgoKCgoKCgoK
CgoKCgoKCgoKCgoKZXh0ZXJuICAgUFJSZWN2V2FpdCogICAgIFBSX0VudW1lcmF0ZVdhaXRHcm91
cCgKICAgIFBSTVdhaXRFbnVtZXJhdG9yICplbnVtZXJhdG9yLCBjb25zdCBQUlJlY3ZXYWl0ICpw
cmV2aW91cyk7CiAgIAogCgoKCiAKIyA0MSAiL2hvbWUvcmVkMS9kYXRhL21vemlsbGEvZGlzdC9p
bmNsdWRlL25zcHIuaCIgMgoKIyAxICIvaG9tZS9yZWQxL2RhdGEvbW96aWxsYS9kaXN0L2luY2x1
ZGUvcHJuZXRkYi5oIiAxCiAKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCiAKCgoKCmV4dGVy
biAgIFBSU3RhdHVzICAgICBQUl9TdHJpbmdUb05ldEFkZHIoCiAgICBjb25zdCBjaGFyICpzdHJp
bmcsIFBSTmV0QWRkciAqYWRkcik7CgpleHRlcm4gICBQUlN0YXR1cyAgICAgUFJfTmV0QWRkclRv
U3RyaW5nKAogICAgY29uc3QgUFJOZXRBZGRyICphZGRyLCBjaGFyICpzdHJpbmcsIFBSVWludDMy
IHNpemUpOwoKIAoKCgoKIAoKCgoKdHlwZWRlZiBzdHJ1Y3QgUFJIb3N0RW50IHsKICAgIGNoYXIg
KmhfbmFtZTsgICAgICAgIAogICAgY2hhciAqKmhfYWxpYXNlczsgICAgCgoKCgogICAgUFJJbnQz
MiBoX2FkZHJ0eXBlOyAgCiAgICBQUkludDMyIGhfbGVuZ3RoOyAgICAKCiAgICBjaGFyICoqaF9h
ZGRyX2xpc3Q7ICAKfSBQUkhvc3RFbnQ7CgogCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgpl
eHRlcm4gICBQUlN0YXR1cyAgICAgUFJfR2V0SG9zdEJ5TmFtZSgKICAgIGNvbnN0IGNoYXIgKmhv
c3RuYW1lLCBjaGFyICpidWYsIFBSSW50biBidWZzaXplLCBQUkhvc3RFbnQgKmhvc3RlbnRyeSk7
CgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKZXh0ZXJuICAgUFJTdGF0dXMgICAg
IFBSX0dldElQTm9kZUJ5TmFtZSgKICAgIGNvbnN0IGNoYXIgKmhvc3RuYW1lLAogICAgUFJVaW50
MTYgYWYsCiAgICBQUkludG4gZmxhZ3MsCiAgICBjaGFyICpidWYsCiAgICBQUkludG4gYnVmc2l6
ZSwKICAgIFBSSG9zdEVudCAqaG9zdGVudHJ5KTsKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgpleHRl
cm4gICBQUlN0YXR1cyAgICAgUFJfR2V0SG9zdEJ5QWRkcigKICAgIGNvbnN0IFBSTmV0QWRkciAq
aG9zdGFkZHIsIGNoYXIgKmJ1ZiwgUFJJbnRuIGJ1ZnNpemUsIFBSSG9zdEVudCAqaG9zdGVudHJ5
KTsKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKZXh0ZXJuICAgUFJJbnRuICAgICBQ
Ul9FbnVtZXJhdGVIb3N0RW50KAogICAgUFJJbnRuIGVudW1JbmRleCwgY29uc3QgUFJIb3N0RW50
ICpob3N0RW50LCBQUlVpbnQxNiBwb3J0LCBQUk5ldEFkZHIgKmFkZHJlc3MpOwoKIAoKCgoKCgoK
CgoKCgoKCgoKCgoKCgp0eXBlZGVmIGVudW0gUFJOZXRBZGRyVmFsdWUKewogICAgUFJfSXBBZGRy
TnVsbCwgICAgICAgCiAgICBQUl9JcEFkZHJBbnksICAgICAgICAKICAgIFBSX0lwQWRkckxvb3Bi
YWNrLCAgIAogICAgUFJfSXBBZGRyVjRNYXBwZWQgICAgCn0gUFJOZXRBZGRyVmFsdWU7CgpleHRl
cm4gICBQUlN0YXR1cyAgICAgUFJfSW5pdGlhbGl6ZU5ldEFkZHIoCiAgICBQUk5ldEFkZHJWYWx1
ZSB2YWwsIFBSVWludDE2IHBvcnQsIFBSTmV0QWRkciAqYWRkcik7CgogCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCmV4dGVybiAgIFBSU3RhdHVzICAgICBQUl9TZXROZXRBZGRyKAogICAgUFJOZXRB
ZGRyVmFsdWUgdmFsLCBQUlVpbnQxNiBhZiwgUFJVaW50MTYgcG9ydCwgUFJOZXRBZGRyICphZGRy
KTsKCiAKCgoKCgoKCgoKCgoKZXh0ZXJuICAgUFJCb29sICAgICBQUl9Jc05ldEFkZHJUeXBlKGNv
bnN0IFBSTmV0QWRkciAqYWRkciwgUFJOZXRBZGRyVmFsdWUgdmFsKTsKCiAKCgoKCgoKCgoKCgoK
CgpleHRlcm4gICB2b2lkICAgICBQUl9Db252ZXJ0SVB2NEFkZHJUb0lQdjYoUFJVaW50MzIgdjRh
ZGRyLCBQUklQdjZBZGRyICp2NmFkZHIpOwoKIAoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgog
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCnR5cGVkZWYgc3RydWN0IFBSUHJvdG9FbnQgewogICAgY2hh
ciAqcF9uYW1lOyAgICAgICAgCiAgICBjaGFyICoqcF9hbGlhc2VzOyAgICAKCgoKICAgIFBSSW50
MzIgcF9udW07ICAgICAgIAoKfSBQUlByb3RvRW50OwoKZXh0ZXJuICAgUFJTdGF0dXMgICAgIFBS
X0dldFByb3RvQnlOYW1lKAogICAgY29uc3QgY2hhciogcHJvdG9jb2xuYW1lLCBjaGFyKiBidWZm
ZXIsIFBSSW50MzIgYnVmc2l6ZSwgUFJQcm90b0VudCogcmVzdWx0KTsKCiAKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKZXh0ZXJuICAgUFJTdGF0dXMgICAgIFBSX0dldFByb3RvQnlOdW1iZXIoCiAgICBQ
UkludDMyIHByb3RvY29sbnVtYmVyLCBjaGFyKiBidWZmZXIsIFBSSW50MzIgYnVmc2l6ZSwgUFJQ
cm90b0VudCogcmVzdWx0KTsKCiAKCgoKCgoKCgoKCgoKZXh0ZXJuICAgUFJVaW50MTYgICAgIFBS
X250b2hzKFBSVWludDE2KTsKZXh0ZXJuICAgUFJVaW50MzIgICAgIFBSX250b2hsKFBSVWludDMy
KTsKZXh0ZXJuICAgUFJVaW50NjQgICAgIFBSX250b2hsbChQUlVpbnQ2NCk7CmV4dGVybiAgIFBS
VWludDE2ICAgICBQUl9odG9ucyhQUlVpbnQxNik7CmV4dGVybiAgIFBSVWludDMyICAgICBQUl9o
dG9ubChQUlVpbnQzMik7CmV4dGVybiAgIFBSVWludDY0ICAgICBQUl9odG9ubGwoUFJVaW50NjQp
OwoKIAoKCiMgNDIgIi9ob21lL3JlZDEvZGF0YS9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9uc3ByLmgi
IDIKCiMgMSAiL2hvbWUvcmVkMS9kYXRhL21vemlsbGEvZGlzdC9pbmNsdWRlL3BycHJmLmgiIDEK
IAogCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCiMgMSAiL2hvbWUvcmVk
MS9nY2MtMi45NS4zL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi43LzIuOTUuMy9pbmNs
dWRlL3N0ZGFyZy5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyAxICIvaG9t
ZS9yZWQxL2djYy0yLjk1LjMvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjcvMi45NS4z
L2luY2x1ZGUvdmEtc3BhcmMuaCIgMSAzCiAKCgogCgoKCgoKCgoKIAoKdHlwZWRlZiB2b2lkICog
X19nbnVjX3ZhX2xpc3Q7CgoKCiAKCgoKCgogCgoKCgoKCgoKCiMgNDcgIi9ob21lL3JlZDEvZ2Nj
LTIuOTUuMy9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuNy8yLjk1LjMvaW5jbHVkZS92
YS1zcGFyYy5oIiAzCgoKCnZvaWQgdmFfZW5kIChfX2dudWNfdmFfbGlzdCk7CQkgCgogCgplbnVt
IF9fdmFfdHlwZV9jbGFzc2VzIHsKICBfX25vX3R5cGVfY2xhc3MgPSAtMSwKICBfX3ZvaWRfdHlw
ZV9jbGFzcywKICBfX2ludGVnZXJfdHlwZV9jbGFzcywKICBfX2NoYXJfdHlwZV9jbGFzcywKICBf
X2VudW1lcmFsX3R5cGVfY2xhc3MsCiAgX19ib29sZWFuX3R5cGVfY2xhc3MsCiAgX19wb2ludGVy
X3R5cGVfY2xhc3MsCiAgX19yZWZlcmVuY2VfdHlwZV9jbGFzcywKICBfX29mZnNldF90eXBlX2Ns
YXNzLAogIF9fcmVhbF90eXBlX2NsYXNzLAogIF9fY29tcGxleF90eXBlX2NsYXNzLAogIF9fZnVu
Y3Rpb25fdHlwZV9jbGFzcywKICBfX21ldGhvZF90eXBlX2NsYXNzLAogIF9fcmVjb3JkX3R5cGVf
Y2xhc3MsCiAgX191bmlvbl90eXBlX2NsYXNzLAogIF9fYXJyYXlfdHlwZV9jbGFzcywKICBfX3N0
cmluZ190eXBlX2NsYXNzLAogIF9fc2V0X3R5cGVfY2xhc3MsCiAgX19maWxlX3R5cGVfY2xhc3Ms
CiAgX19sYW5nX3R5cGVfY2xhc3MKfTsKCgoKCiAKCgoKCiAKCgoKCiMgMTM0ICIvaG9tZS9yZWQx
L2djYy0yLjk1LjMvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjcvMi45NS4zL2luY2x1
ZGUvdmEtc3BhcmMuaCIgMwoKCgoKCiAKCiAKCgoKIyAxNTkgIi9ob21lL3JlZDEvZ2NjLTIuOTUu
My9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuNy8yLjk1LjMvaW5jbHVkZS92YS1zcGFy
Yy5oIiAzCgoKCiAKCgoKIyAzMCAiL2hvbWUvcmVkMS9nY2MtMi45NS4zL2xpYi9nY2MtbGliL3Nw
YXJjLXN1bi1zb2xhcmlzMi43LzIuOTUuMy9pbmNsdWRlL3N0ZGFyZy5oIiAyIDMKCiMgMTM1ICIv
aG9tZS9yZWQxL2djYy0yLjk1LjMvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjcvMi45
NS4zL2luY2x1ZGUvc3RkYXJnLmgiIDMKCgoKCgoKCgogCiAKCgoKCgoKCgoKCgoKCgogCgoKCgoK
CgoKCgp0eXBlZGVmIF9fZ251Y192YV9saXN0IHZhX2xpc3Q7CgoKCgojIDIwNyAiL2hvbWUvcmVk
MS9nY2MtMi45NS4zL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi43LzIuOTUuMy9pbmNs
dWRlL3N0ZGFyZy5oIiAzCgoKCgoKCiMgNDEgIi9ob21lL3JlZDEvZGF0YS9tb3ppbGxhL2Rpc3Qv
aW5jbHVkZS9wcnByZi5oIiAyCgoKIAoKIAoKCgoKZXh0ZXJuICAgUFJVaW50MzIgICAgIFBSX3Nu
cHJpbnRmKGNoYXIgKm91dCwgUFJVaW50MzIgb3V0bGVuLCBjb25zdCBjaGFyICpmbXQsIC4uLik7
CgogCgoKCgpleHRlcm4gICBjaGFyKiAgICAgUFJfc21wcmludGYoY29uc3QgY2hhciAqZm10LCAu
Li4pOwoKIAoKCmV4dGVybiAgIHZvaWQgICAgIFBSX3NtcHJpbnRmX2ZyZWUoY2hhciAqbWVtKTsK
CiAKCgoKCgoKZXh0ZXJuICAgY2hhciogICAgIFBSX3NwcmludGZfYXBwZW5kKGNoYXIgKmxhc3Qs
IGNvbnN0IGNoYXIgKmZtdCwgLi4uKTsKCiAKCgoKCgoKdHlwZWRlZiBQUkludG4gKCpQUlN0dWZm
RnVuYykodm9pZCAqYXJnLCBjb25zdCBjaGFyICpzLCBQUlVpbnQzMiBzbGVuKTsKCmV4dGVybiAg
IFBSVWludDMyICAgICBQUl9zeHByaW50ZihQUlN0dWZmRnVuYyBmLCB2b2lkICphcmcsIGNvbnN0
IGNoYXIgKmZtdCwgLi4uKTsKCiAKCgpleHRlcm4gICBQUlVpbnQzMiAgICAgUFJfZnByaW50Zihz
dHJ1Y3QgUFJGaWxlRGVzYyogZmQsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKTsKCiAKCgpleHRlcm4g
ICBQUlVpbnQzMiAgICAgUFJfdnNucHJpbnRmKGNoYXIgKm91dCwgUFJVaW50MzIgb3V0bGVuLCBj
b25zdCBjaGFyICpmbXQsIHZhX2xpc3QgYXApOwpleHRlcm4gICBjaGFyKiAgICAgUFJfdnNtcHJp
bnRmKGNvbnN0IGNoYXIgKmZtdCwgdmFfbGlzdCBhcCk7CmV4dGVybiAgIGNoYXIqICAgICBQUl92
c3ByaW50Zl9hcHBlbmQoY2hhciAqbGFzdCwgY29uc3QgY2hhciAqZm10LCB2YV9saXN0IGFwKTsK
ZXh0ZXJuICAgUFJVaW50MzIgICAgIFBSX3ZzeHByaW50ZihQUlN0dWZmRnVuYyBmLCB2b2lkICph
cmcsIGNvbnN0IGNoYXIgKmZtdCwgdmFfbGlzdCBhcCk7CmV4dGVybiAgIFBSVWludDMyICAgICBQ
Ul92ZnByaW50ZihzdHJ1Y3QgUFJGaWxlRGVzYyogZmQsIGNvbnN0IGNoYXIgKmZtdCwgdmFfbGlz
dCBhcCk7CgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKZXh0ZXJuICAgUFJJbnQz
MiAgICAgUFJfc3NjYW5mKGNvbnN0IGNoYXIgKmJ1ZiwgY29uc3QgY2hhciAqZm10LCAuLi4pOwoK
IAoKCiMgNDMgIi9ob21lL3JlZDEvZGF0YS9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9uc3ByLmgiIDIK
CiMgMSAiL2hvbWUvcmVkMS9kYXRhL21vemlsbGEvZGlzdC9pbmNsdWRlL3BycHJvY2VzLmgiIDEK
IAogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgogCiAKIAoKdHlwZWRlZiBzdHJ1Y3QgUFJQcm9j
ZXNzIFBSUHJvY2VzczsKdHlwZWRlZiBzdHJ1Y3QgUFJQcm9jZXNzQXR0ciBQUlByb2Nlc3NBdHRy
OwoKZXh0ZXJuICAgUFJQcm9jZXNzQXR0ciAqICAgICBQUl9OZXdQcm9jZXNzQXR0cih2b2lkKTsK
CmV4dGVybiAgIHZvaWQgICAgIFBSX1Jlc2V0UHJvY2Vzc0F0dHIoUFJQcm9jZXNzQXR0ciAqYXR0
cik7CgpleHRlcm4gICB2b2lkICAgICBQUl9EZXN0cm95UHJvY2Vzc0F0dHIoUFJQcm9jZXNzQXR0
ciAqYXR0cik7CgpleHRlcm4gICB2b2lkICAgICBQUl9Qcm9jZXNzQXR0clNldFN0ZGlvUmVkaXJl
Y3QoCiAgICBQUlByb2Nlc3NBdHRyICphdHRyLAogICAgUFJTcGVjaWFsRkQgc3RkaW9GZCwKICAg
IFBSRmlsZURlc2MgKnJlZGlyZWN0RmQKKTsKCiAKCgpleHRlcm4gICB2b2lkICAgICBQUl9TZXRT
dGRpb1JlZGlyZWN0KAogICAgUFJQcm9jZXNzQXR0ciAqYXR0ciwKICAgIFBSU3BlY2lhbEZEIHN0
ZGlvRmQsCiAgICBQUkZpbGVEZXNjICpyZWRpcmVjdEZkCik7CgpleHRlcm4gICBQUlN0YXR1cyAg
ICAgUFJfUHJvY2Vzc0F0dHJTZXRDdXJyZW50RGlyZWN0b3J5KAogICAgUFJQcm9jZXNzQXR0ciAq
YXR0ciwKICAgIGNvbnN0IGNoYXIgKmRpcgopOwoKZXh0ZXJuICAgUFJTdGF0dXMgICAgIFBSX1By
b2Nlc3NBdHRyU2V0SW5oZXJpdGFibGVGRCgKICAgIFBSUHJvY2Vzc0F0dHIgKmF0dHIsCiAgICBQ
UkZpbGVEZXNjICpmZCwKICAgIGNvbnN0IGNoYXIgKm5hbWUKKTsKCiAKCgoKCgoKCgoKCgoKZXh0
ZXJuICAgUFJQcm9jZXNzKiAgICAgUFJfQ3JlYXRlUHJvY2VzcygKICAgIGNvbnN0IGNoYXIgKnBh
dGgsCiAgICBjaGFyICpjb25zdCAqYXJndiwKICAgIGNoYXIgKmNvbnN0ICplbnZwLAogICAgY29u
c3QgUFJQcm9jZXNzQXR0ciAqYXR0cik7CgpleHRlcm4gICBQUlN0YXR1cyAgICAgUFJfQ3JlYXRl
UHJvY2Vzc0RldGFjaGVkKAogICAgY29uc3QgY2hhciAqcGF0aCwKICAgIGNoYXIgKmNvbnN0ICph
cmd2LAogICAgY2hhciAqY29uc3QgKmVudnAsCiAgICBjb25zdCBQUlByb2Nlc3NBdHRyICphdHRy
KTsKCmV4dGVybiAgIFBSU3RhdHVzICAgICBQUl9EZXRhY2hQcm9jZXNzKFBSUHJvY2VzcyAqcHJv
Y2Vzcyk7CgpleHRlcm4gICBQUlN0YXR1cyAgICAgUFJfV2FpdFByb2Nlc3MoUFJQcm9jZXNzICpw
cm9jZXNzLCBQUkludDMyICpleGl0Q29kZSk7CgpleHRlcm4gICBQUlN0YXR1cyAgICAgUFJfS2ls
bFByb2Nlc3MoUFJQcm9jZXNzICpwcm9jZXNzKTsKCiAKCgojIDQ0ICIvaG9tZS9yZWQxL2RhdGEv
bW96aWxsYS9kaXN0L2luY2x1ZGUvbnNwci5oIiAyCgojIDEgIi9ob21lL3JlZDEvZGF0YS9tb3pp
bGxhL2Rpc3QvaW5jbHVkZS9wcnJuZy5oIiAxCiAKIAoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoK
CgoKCgogCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCmV4
dGVybiAgIFBSU2l6ZSAgICAgUFJfR2V0UmFuZG9tTm9pc2UoIAogICAgdm9pZCAgICAqYnVmLAog
ICAgUFJTaXplICBzaXplCik7CgogCgoKIAojIDQ1ICIvaG9tZS9yZWQxL2RhdGEvbW96aWxsYS9k
aXN0L2luY2x1ZGUvbnNwci5oIiAyCgojIDEgIi9ob21lL3JlZDEvZGF0YS9tb3ppbGxhL2Rpc3Qv
aW5jbHVkZS9wcnJ3bG9jay5oIiAxCiAKIAoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKIAoK
IAoKCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgUFJSV0xvY2sgUFJSV0xvY2s7CgoKCgogCgoKCgoKCgoK
CgoKZXh0ZXJuICAgUFJSV0xvY2sqICAgICBQUl9OZXdSV0xvY2soUFJVaW50MzIgbG9ja19yYW5r
LCBjb25zdCBjaGFyICpsb2NrX25hbWUpOwoKIAoKCgoKCgoKZXh0ZXJuICAgdm9pZCAgICAgUFJf
RGVzdHJveVJXTG9jayhQUlJXTG9jayAqbG9jayk7CgogCgoKCgoKCgpleHRlcm4gICB2b2lkICAg
ICBQUl9SV0xvY2tfUmxvY2soUFJSV0xvY2sgKmxvY2spOwoKIAoKCgoKCgoKZXh0ZXJuICAgdm9p
ZCAgICAgUFJfUldMb2NrX1dsb2NrKFBSUldMb2NrICpsb2NrKTsKCiAKCgoKCgoKCmV4dGVybiAg
IHZvaWQgICAgIFBSX1JXTG9ja19VbmxvY2soUFJSV0xvY2sgKmxvY2spOwoKIAoKCiMgNDYgIi9o
b21lL3JlZDEvZGF0YS9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9uc3ByLmgiIDIKCiMgMSAiL2hvbWUv
cmVkMS9kYXRhL21vemlsbGEvZGlzdC9pbmNsdWRlL3Byc2htLmgiIDEKIAogCgoKCgoKCgoKCgoK
CgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKIAoKCnR5
cGVkZWYgc3RydWN0IFBSU2hhcmVkTWVtb3J5IFBSU2hhcmVkTWVtb3J5OwoKIAoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKZXh0ZXJuICAgIFBSU2hhcmVkTWVtb3J5ICogICAgIAog
ICAgUFJfT3BlblNoYXJlZE1lbW9yeSgKICAgICAgICBjb25zdCBjaGFyICpuYW1lLAogICAgICAg
IFBSU2l6ZSAgICAgIHNpemUsCiAgICAgICAgUFJJbnRuICAgICAgZmxhZ3MsCiAgICAgICAgUFJJ
bnRuICAgICAgbW9kZQopOwogCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCmV4dGVybiAgICB2
b2lkICogICAgIAogICAgUFJfQXR0YWNoU2hhcmVkTWVtb3J5KAogICAgICAgIFBSU2hhcmVkTWVt
b3J5ICpzaG0sCiAgICAgICAgUFJJbnRuICBmbGFncwopOwogIAoKCiAKCgoKCgoKCgoKCgoKCgoK
CgpleHRlcm4gICAgUFJTdGF0dXMgICAgIAogICAgUFJfRGV0YWNoU2hhcmVkTWVtb3J5KAogICAg
ICAgIFBSU2hhcmVkTWVtb3J5ICpzaG0sCiAgICAgICAgdm9pZCAgKmFkZHIKKTsKCiAKCgoKCgoK
CgoKCgoKCgoKZXh0ZXJuICAgIFBSU3RhdHVzICAgICAKICAgIFBSX0Nsb3NlU2hhcmVkTWVtb3J5
KAogICAgICAgIFBSU2hhcmVkTWVtb3J5ICpzaG0KKTsKCiAKCgoKCgoKCgoKCgoKCgoKZXh0ZXJu
ICAgIFBSU3RhdHVzICAgICAKICAgIFBSX0RlbGV0ZVNoYXJlZE1lbW9yeSggCiAgICAgICAgY29u
c3QgY2hhciAqbmFtZQopOwoKIAoKCiMgNDcgIi9ob21lL3JlZDEvZGF0YS9tb3ppbGxhL2Rpc3Qv
aW5jbHVkZS9uc3ByLmgiIDIKCiMgMSAiL2hvbWUvcmVkMS9kYXRhL21vemlsbGEvZGlzdC9pbmNs
dWRlL3Byc2htYS5oIiAxCiAKIAoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgpleHRl
cm4gICAgUFJGaWxlTWFwICogICAgClBSX09wZW5Bbm9uRmlsZU1hcCgKICAgIGNvbnN0IGNoYXIg
KmRpck5hbWUsCiAgICBQUlNpemUgICAgICBzaXplLCAKICAgIFBSRmlsZU1hcFByb3RlY3QgcHJv
dAopOyAgCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKZXh0ZXJuICAgUFJTdGF0dXMgICAgIApQUl9Q
cm9jZXNzQXR0clNldEluaGVyaXRhYmxlRmlsZU1hcCggCiAgICBQUlByb2Nlc3NBdHRyICAgKmF0
dHIsCiAgICBQUkZpbGVNYXAgICAgICAgKmZtLCAKICAgIGNvbnN0IGNoYXIgICAgICAqc2htbmFt
ZQopOwoKIAoKCgoKCgoKCgoKCgoKCgoKCmV4dGVybiAgICBQUkZpbGVNYXAgKiAgICAKUFJfR2V0
SW5oZXJpdGVkRmlsZU1hcCggCiAgICBjb25zdCBjaGFyICpzaG1uYW1lIAopOwoKIAoKCgoKCgoK
CgoKCgoKCgoKCgpleHRlcm4gICAgUFJTdGF0dXMgICAgIApQUl9FeHBvcnRGaWxlTWFwQXNTdHJp
bmcoIAogICAgUFJGaWxlTWFwICpmbSwKICAgIFBSU2l6ZSAgICBidWZzaXplLAogICAgY2hhciAg
ICAgICpidWYKKTsKCgogCgoKCgoKCgoKCgoKCgpleHRlcm4gICAgUFJGaWxlTWFwICogICAgIApQ
Ul9JbXBvcnRGaWxlTWFwRnJvbVN0cmluZyggCiAgICBjb25zdCBjaGFyICpmbXN0cmluZwopOwoK
IAoKIyA0OCAiL2hvbWUvcmVkMS9kYXRhL21vemlsbGEvZGlzdC9pbmNsdWRlL25zcHIuaCIgMgoK
IyAxICIvaG9tZS9yZWQxL2RhdGEvbW96aWxsYS9kaXN0L2luY2x1ZGUvcHJzeXN0ZW0uaCIgMQog
CiAKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCiAKCiAKCgoKCgpleHRlcm4gICBjaGFyICAgICBQ
Ul9HZXREaXJlY3RvcnlTZXBhcmF0b3Iodm9pZCk7CgogCgoKCgpleHRlcm4gICBjaGFyICAgICBQ
Ul9HZXREaXJlY3RvcnlTZXBhcnRvcih2b2lkKTsKCgogCnR5cGVkZWYgZW51bSB7CiAgICBQUl9T
SV9IT1NUTkFNRSwKICAgIFBSX1NJX1NZU05BTUUsCiAgICBQUl9TSV9SRUxFQVNFLAogICAgUFJf
U0lfQVJDSElURUNUVVJFCn0gUFJTeXNJbmZvOwoKCiAKCgoKCgoKCgoKCmV4dGVybiAgIFBSU3Rh
dHVzICAgICBQUl9HZXRTeXN0ZW1JbmZvKFBSU3lzSW5mbyBjbWQsIGNoYXIgKmJ1ZiwgUFJVaW50
MzIgYnVmbGVuKTsKCiAKCgpleHRlcm4gICBQUkludDMyICAgICBQUl9HZXRQYWdlU2l6ZSh2b2lk
KTsKCiAKCgpleHRlcm4gICBQUkludDMyICAgICBQUl9HZXRQYWdlU2hpZnQodm9pZCk7CgogCgoK
IyA0OSAiL2hvbWUvcmVkMS9kYXRhL21vemlsbGEvZGlzdC9pbmNsdWRlL25zcHIuaCIgMgoKCgoj
IDEgIi9ob21lL3JlZDEvZGF0YS9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9wcnRwb29sLmgiIDEKIAog
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgogCgp0eXBlZGVmIHN0cnVjdCBQUkpvYklv
RGVzYyB7CiAgICBQUkZpbGVEZXNjICpzb2NrZXQ7CiAgICBQUkVycm9yQ29kZSBlcnJvcjsKICAg
IFBSSW50ZXJ2YWxUaW1lIHRpbWVvdXQ7Cn0gUFJKb2JJb0Rlc2M7Cgp0eXBlZGVmIHN0cnVjdCBQ
UlRocmVhZFBvb2wgUFJUaHJlYWRQb29sOwp0eXBlZGVmIHN0cnVjdCBQUkpvYiBQUkpvYjsKdHlw
ZWRlZiB2b2lkICggICpQUkpvYkZuKSAodm9pZCAqYXJnKTsKCiAKZXh0ZXJuICAgUFJUaHJlYWRQ
b29sICogICAgClBSX0NyZWF0ZVRocmVhZFBvb2woUFJJbnQzMiBpbml0aWFsX3RocmVhZHMsIFBS
SW50MzIgbWF4X3RocmVhZHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgUFJVaW50MzIgc3Rh
Y2tzaXplKTsKCiAKZXh0ZXJuICAgUFJKb2IgKiAgICAKUFJfUXVldWVKb2IoUFJUaHJlYWRQb29s
ICp0cG9vbCwgUFJKb2JGbiBmbiwgdm9pZCAqYXJnLCBQUkJvb2wgam9pbmFibGUpOwoKIApleHRl
cm4gICBQUkpvYiAqICAgIApQUl9RdWV1ZUpvYl9SZWFkKFBSVGhyZWFkUG9vbCAqdHBvb2wsIFBS
Sm9iSW9EZXNjICppb2QsCgkJCQkJCQlQUkpvYkZuIGZuLCB2b2lkICogYXJnLCBQUkJvb2wgam9p
bmFibGUpOwoKIApleHRlcm4gICBQUkpvYiAqICAgIApQUl9RdWV1ZUpvYl9Xcml0ZShQUlRocmVh
ZFBvb2wgKnRwb29sLCBQUkpvYklvRGVzYyAqaW9kLAoJCQkJCQkJCVBSSm9iRm4gZm4sIHZvaWQg
KiBhcmcsIFBSQm9vbCBqb2luYWJsZSk7CgogCmV4dGVybiAgIFBSSm9iICogICAgClBSX1F1ZXVl
Sm9iX0FjY2VwdChQUlRocmVhZFBvb2wgKnRwb29sLCBQUkpvYklvRGVzYyAqaW9kLAoJCQkJCQkJ
CQlQUkpvYkZuIGZuLCB2b2lkICogYXJnLCBQUkJvb2wgam9pbmFibGUpOwoKIApleHRlcm4gICBQ
UkpvYiAqICAgIApQUl9RdWV1ZUpvYl9Db25uZWN0KFBSVGhyZWFkUG9vbCAqdHBvb2wsIFBSSm9i
SW9EZXNjICppb2QsCgkJCWNvbnN0IFBSTmV0QWRkciAqYWRkciwgUFJKb2JGbiBmbiwgdm9pZCAq
IGFyZywgUFJCb29sIGpvaW5hYmxlKTsKCiAKZXh0ZXJuICAgUFJKb2IgKiAgICAKUFJfUXVldWVK
b2JfVGltZXIoUFJUaHJlYWRQb29sICp0cG9vbCwgUFJJbnRlcnZhbFRpbWUgdGltZW91dCwKCQkJ
CQkJCQlQUkpvYkZuIGZuLCB2b2lkICogYXJnLCBQUkJvb2wgam9pbmFibGUpOwogCmV4dGVybiAg
IFBSU3RhdHVzICAgIApQUl9DYW5jZWxKb2IoUFJKb2IgKmpvYik7CgogCmV4dGVybiAgIFBSU3Rh
dHVzICAgIApQUl9Kb2luSm9iKFBSSm9iICpqb2IpOwoKIApleHRlcm4gICBQUlN0YXR1cyAgICAK
UFJfU2h1dGRvd25UaHJlYWRQb29sKFBSVGhyZWFkUG9vbCAqdHBvb2wpOwoKIApleHRlcm4gICBQ
UlN0YXR1cyAgICAKUFJfSm9pblRocmVhZFBvb2woUFJUaHJlYWRQb29sICp0cG9vbCk7CgogCgoK
IyA1MiAiL2hvbWUvcmVkMS9kYXRhL21vemlsbGEvZGlzdC9pbmNsdWRlL25zcHIuaCIgMgoKIyAx
ICIvaG9tZS9yZWQxL2RhdGEvbW96aWxsYS9kaXN0L2luY2x1ZGUvcHJ0cmFjZS5oIiAxCiAKIAoK
CgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKIAoKCgoKdHlwZWRlZiB2b2lkICogIFBSVHJhY2VIYW5k
bGU7CgojIDYxMCAiL2hvbWUvcmVkMS9kYXRhL21vemlsbGEvZGlzdC9pbmNsdWRlL3BydHJhY2Uu
aCIKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCiMgNTMgIi9ob21lL3JlZDEvZGF0YS9tb3pp
bGxhL2Rpc3QvaW5jbHVkZS9uc3ByLmgiIDIKCgoKCiMgNTAgIi4uLy4uLy4uL3ByL2luY2x1ZGUv
cHJpdmF0ZS9wcmltcGwuaCIgMgoKIyAxICIuLi8uLi8uLi9wci9pbmNsdWRlL3ByaXZhdGUvcHJw
cml2LmgiIDEKIAogCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgojIDEgIi9ob21lL3JlZDEvZGF0
YS9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9wcml2YXRlL3BwcmlvLmgiIDEKIAogCgoKCgoKCgoKCgoK
CgoKCgogCgoKCgoKCgoKCgoKIAoKIAogCgogCmV4dGVybiAgIGNvbnN0IFBSSU9NZXRob2RzKiAg
ICAgICAgUFJfR2V0RmlsZU1ldGhvZHModm9pZCk7CmV4dGVybiAgIGNvbnN0IFBSSU9NZXRob2Rz
KiAgICAgICAgUFJfR2V0VENQTWV0aG9kcyh2b2lkKTsKZXh0ZXJuICAgY29uc3QgUFJJT01ldGhv
ZHMqICAgICAgICBQUl9HZXRVRFBNZXRob2RzKHZvaWQpOwpleHRlcm4gICBjb25zdCBQUklPTWV0
aG9kcyogICAgICAgIFBSX0dldFBpcGVNZXRob2RzKHZvaWQpOwoKIAoKCgpleHRlcm4gICBQUklu
dDMyICAgICAgICAgIFBSX0ZpbGVEZXNjMk5hdGl2ZUhhbmRsZShQUkZpbGVEZXNjICopOwpleHRl
cm4gICB2b2lkICAgICAgICAgICAgIFBSX0NoYW5nZUZpbGVEZXNjTmF0aXZlSGFuZGxlKFBSRmls
ZURlc2MgKiwgUFJJbnQzMik7CmV4dGVybiAgIFBSRmlsZURlc2MqICAgICAgUFJfQWxsb2NGaWxl
RGVzYyhQUkludDMyIG9zZmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgUFJJT01ldGhvZHMgKm1ldGhvZHMpOwpleHRlcm4gICB2b2lkICAgICAgICAgICAg
IFBSX0ZyZWVGaWxlRGVzYyhQUkZpbGVEZXNjICpmZCk7CiAKCgpleHRlcm4gICBQUkZpbGVEZXNj
KiAgICAgIFBSX0ltcG9ydEZpbGUoUFJJbnQzMiBvc2ZkKTsKZXh0ZXJuICAgUFJGaWxlRGVzYyog
ICAgICBQUl9JbXBvcnRUQ1BTb2NrZXQoUFJJbnQzMiBvc2ZkKTsKZXh0ZXJuICAgUFJGaWxlRGVz
YyogICAgICBQUl9JbXBvcnRVRFBTb2NrZXQoUFJJbnQzMiBvc2ZkKTsKCgogCgoKCgoKCgoKCgoK
CgoKCgoKZXh0ZXJuICAgUFJGaWxlRGVzYyogICAgCVBSX0NyZWF0ZVNvY2tldFBvbGxGZChQUklu
dDMyIG9zZmQpOwoKIAoKCgoKCgoKCgoKCgoKCgpleHRlcm4gICBQUlN0YXR1cyAgICAgUFJfRGVz
dHJveVNvY2tldFBvbGxGZChQUkZpbGVEZXNjICpmZCk7CgoKIAoKCgoKCgoKCgoKCgoKCgoKCiAK
CgpleHRlcm4gICBQUkZpbGVEZXNjKiAgICAJUFJfU29ja2V0KFBSSW50MzIgZG9tYWluLCBQUklu
dDMyIHR5cGUsIFBSSW50MzIgcHJvdG8pOwoKIAoKCgoKCgpleHRlcm4gICBQUlN0YXR1cyAgICAg
UFJfTG9ja0ZpbGUoUFJGaWxlRGVzYyAqZmQpOwoKIAoKCgoKCgoKZXh0ZXJuICAgUFJTdGF0dXMg
ICAgIFBSX1RMb2NrRmlsZShQUkZpbGVEZXNjICpmZCk7CgogCgoKCgoKCgpleHRlcm4gICBQUlN0
YXR1cyAgICAgUFJfVW5sb2NrRmlsZShQUkZpbGVEZXNjICpmZCk7CgojIDIxOCAiL2hvbWUvcmVk
MS9kYXRhL21vemlsbGEvZGlzdC9pbmNsdWRlL3ByaXZhdGUvcHByaW8uaCIKCgogCgoKCgoKCgoK
IAoKCiMgMjcgIi4uLy4uLy4uL3ByL2luY2x1ZGUvcHJpdmF0ZS9wcnByaXYuaCIgMgoKIyAxICIv
aG9tZS9yZWQxL2RhdGEvbW96aWxsYS9kaXN0L2luY2x1ZGUvcHJpdmF0ZS9wcHJ0aHJlZC5oIiAx
CiAKIAoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgogCgogCgoKCiAKCgoKCgoKCgoKCgoKZXh0
ZXJuICAgUFJUaHJlYWQqICAgICBQUl9BdHRhY2hUaHJlYWQoUFJUaHJlYWRUeXBlIHR5cGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUlRocmVhZFByaW9yaXR5IHByaW9y
aXR5LAoJCQkJICAgICBQUlRocmVhZFN0YWNrICpzdGFjayk7CgogCgoKCgoKCgoKCgpleHRlcm4g
ICB2b2lkICAgICBQUl9EZXRhY2hUaHJlYWQodm9pZCk7CgogCgoKCmV4dGVybiAgIFBSVWludDMy
ICAgICBQUl9HZXRUaHJlYWRJRChQUlRocmVhZCAqdGhyZWFkKTsKCiAKCgoKCnR5cGVkZWYgdm9p
ZCAoKlBSVGhyZWFkRHVtcFByb2MpKFBSRmlsZURlc2MgKmZkLCBQUlRocmVhZCAqdCwgdm9pZCAq
YXJnKTsKZXh0ZXJuICAgdm9pZCAgICAgUFJfU2V0VGhyZWFkRHVtcFByb2MoCiAgICBQUlRocmVh
ZCogdGhyZWFkLCBQUlRocmVhZER1bXBQcm9jIGR1bXAsIHZvaWQgKmFyZyk7CgogCgoKCgoKCgpl
eHRlcm4gICBQUkludDMyICAgICBQUl9HZXRUaHJlYWRBZmZpbml0eU1hc2soUFJUaHJlYWQgKnRo
cmVhZCwgUFJVaW50MzIgKm1hc2spOwoKIAoKCgoKZXh0ZXJuICAgUFJJbnQzMiAgICAgUFJfU2V0
VGhyZWFkQWZmaW5pdHlNYXNrKFBSVGhyZWFkICp0aHJlYWQsIFBSVWludDMyIG1hc2sgKTsKCiAK
CgoKZXh0ZXJuICAgUFJJbnQzMiAgICAgUFJfU2V0Q1BVQWZmaW5pdHlNYXNrKFBSVWludDMyIG1h
c2spOwoKIAoKCmV4dGVybiAgIHZvaWQgICAgIFBSX1Nob3dTdGF0dXModm9pZCk7CgogCgoKZXh0
ZXJuICAgdm9pZCAgICAgUFJfU2V0VGhyZWFkUmVjeWNsZU1vZGUoUFJVaW50MzIgZmxhZyk7CgoK
IAoKCgogCgoKCgoKCiAKCgoKZXh0ZXJuICAgUFJUaHJlYWQqICAgICBQUl9DcmVhdGVUaHJlYWRH
Q0FibGUoUFJUaHJlYWRUeXBlIHR5cGUsCgkJCQkgICAgIHZvaWQgKCpzdGFydCkodm9pZCAqYXJn
KSwKCQkJCSAgICAgdm9pZCAqYXJnLAoJCQkJICAgICBQUlRocmVhZFByaW9yaXR5IHByaW9yaXR5
LAoJCQkJICAgICBQUlRocmVhZFNjb3BlIHNjb3BlLAoJCQkJICAgICBQUlRocmVhZFN0YXRlIHN0
YXRlLAoJCQkJICAgICBQUlVpbnQzMiBzdGFja1NpemUpOwoKIAoKCgpleHRlcm4gICBQUlRocmVh
ZCogICAgIFBSX0F0dGFjaFRocmVhZEdDQWJsZShQUlRocmVhZFR5cGUgdHlwZSwKCQkJCQlQUlRo
cmVhZFByaW9yaXR5IHByaW9yaXR5LAoJCQkJCVBSVGhyZWFkU3RhY2sgKnN0YWNrKTsKCiAKCgpl
eHRlcm4gICB2b2lkICAgICBQUl9TZXRUaHJlYWRHQ0FibGUodm9pZCk7CgogCgoKZXh0ZXJuICAg
dm9pZCAgICAgUFJfQ2xlYXJUaHJlYWRHQ0FibGUodm9pZCk7CgogCgoKCmV4dGVybiAgIHZvaWQg
ICAgIFBSX1N1c3BlbmRBbGwodm9pZCk7CgogCgoKCmV4dGVybiAgIHZvaWQgICAgIFBSX1Jlc3Vt
ZUFsbCh2b2lkKTsKCiAKCgoKZXh0ZXJuICAgdm9pZCAqICAgICBQUl9HZXRTUChQUlRocmVhZCAq
dGhyZWFkKTsKCiAKCgoKCgoKCgoKCgoKZXh0ZXJuICAgUFJXb3JkICogICAgIFBSX0dldEdDUmVn
aXN0ZXJzKFBSVGhyZWFkICp0LCBpbnQgaXNDdXJyZW50LCBpbnQgKm5wKTsKCiAKCgoKCgoKCmV4
dGVybiAgIHZvaWQqICAgICBHZXRFeGVjdXRpb25FbnZpcm9ubWVudChQUlRocmVhZCAqdGhyZWFk
KTsKZXh0ZXJuICAgdm9pZCAgICAgU2V0RXhlY3V0aW9uRW52aXJvbm1lbnQoUFJUaHJlYWQqIHRo
cmVhZCwgdm9pZCAqZW52aXJvbm1lbnQpOwoKIAoKCgoKCgp0eXBlZGVmIFBSU3RhdHVzICggICpQ
UkVudW1lcmF0b3IpKFBSVGhyZWFkICp0LCBpbnQgaSwgdm9pZCAqYXJnKTsKZXh0ZXJuICAgUFJT
dGF0dXMgICAgIFBSX0VudW1lcmF0ZVRocmVhZHMoUFJFbnVtZXJhdG9yIGZ1bmMsIHZvaWQgKmFy
Zyk7CgogCgoKCgp0eXBlZGVmIFBSU3RhdHVzIAooICAqUFJTY2FuU3RhY2tGdW4pKFBSVGhyZWFk
KiB0LAoJCQkgICAgICB2b2lkKiogYmFzZUFkZHIsIFBSVXdvcmQgY291bnQsIHZvaWQqIGNsb3N1
cmUpOwoKIAoKCgoKCmV4dGVybiAgIFBSU3RhdHVzICAgIApQUl9UaHJlYWRTY2FuU3RhY2tQb2lu
dGVycyhQUlRocmVhZCogdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJTY2FuU3RhY2tG
dW4gc2NhbkZ1biwgdm9pZCogc2NhbkNsb3N1cmUpOwoKIAoKCmV4dGVybiAgIFBSU3RhdHVzICAg
IApQUl9TY2FuU3RhY2tQb2ludGVycyhQUlNjYW5TdGFja0Z1biBzY2FuRnVuLCB2b2lkKiBzY2Fu
Q2xvc3VyZSk7CgogCgoKCgpleHRlcm4gICBQUlV3b3JkICAgIApQUl9HZXRTdGFja1NwYWNlTGVm
dChQUlRocmVhZCogdCk7CgogCgoKCiAKCgpleHRlcm4gICBzdHJ1Y3QgX1BSQ1BVICogICAgIF9Q
Ul9HZXRQcmltb3JkaWFsQ1BVKHZvaWQpOwoKIAoKCgogCgoKCgoKCmV4dGVybiAgIFBSTW9uaXRv
ciogICAgIFBSX05ld05hbWVkTW9uaXRvcihjb25zdCBjaGFyKiBuYW1lKTsKCiAKCgoKCmV4dGVy
biAgIFBSQm9vbCAgICAgUFJfVGVzdEFuZExvY2soUFJMb2NrICpsb2NrKTsKCiAKCgoKCmV4dGVy
biAgIFBSQm9vbCAgICAgUFJfVGVzdEFuZEVudGVyTW9uaXRvcihQUk1vbml0b3IgKm1vbik7Cgog
CgoKCmV4dGVybiAgIFBSSW50biAgICAgUFJfR2V0TW9uaXRvckVudHJ5Q291bnQoUFJNb25pdG9y
ICptb24pOwoKIAoKCgpleHRlcm4gICBQUk1vbml0b3IqICAgICBQUl9DVGVzdEFuZEVudGVyTW9u
aXRvcih2b2lkICphZGRyZXNzKTsKCiAKCgoKCgoKCgoKIAoKCiMgMzIxICIvaG9tZS9yZWQxL2Rh
dGEvbW96aWxsYS9kaXN0L2luY2x1ZGUvcHJpdmF0ZS9wcHJ0aHJlZC5oIgoKCiAKCgogCgoKCgpl
eHRlcm4gdm9pZCBQUl9YTG9jayh2b2lkKTsKZXh0ZXJuIHZvaWQgUFJfWFVubG9jayh2b2lkKTsK
ZXh0ZXJuIFBSQm9vbCBQUl9YSXNMb2NrZWQodm9pZCk7CgoKIAoKCiMgMjggIi4uLy4uLy4uL3By
L2luY2x1ZGUvcHJpdmF0ZS9wcnByaXYuaCIgMgoKCgoKCgoKIyA1MSAiLi4vLi4vLi4vcHIvaW5j
bHVkZS9wcml2YXRlL3ByaW1wbC5oIiAyCgoKdHlwZWRlZiBzdHJ1Y3QgUFJTZWdtZW50IFBSU2Vn
bWVudDsKCgoKCgojIDEgIi4uLy4uLy4uL3ByL2luY2x1ZGUvbWQvcHJvc2RlcC5oIiAxCiAKIAoK
CgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKIAoKIyA1MSAiLi4vLi4vLi4vcHIvaW5jbHVkZS9tZC9w
cm9zZGVwLmgiCgoKIyA4NiAiLi4vLi4vLi4vcHIvaW5jbHVkZS9tZC9wcm9zZGVwLmgiCgojIDEg
Ii4uLy4uLy4uL3ByL2luY2x1ZGUvbWQvX3NvbGFyaXMuaCIgMQogCiAKCgoKCgoKCgoKCgoKCgoK
CgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKIApzdHJ1Y3QgX21kX2luNl9hZGRyIHsKICAgIHVuaW9uIHsKICAg
ICAgICBQUlVpbnQ4ICBfUzZfdThbMTZdOwogICAgICAgIFBSVWludDMyIF9TNl91MzJbNF07CiAg
ICAgICAgUFJVaW50MzIgX19TNl9hbGlnbjsKICAgIH0gX1M2X3VuOwp9OwogCnN0cnVjdCBfbWRf
c29ja2FkZHJfaW42IHsKICAgIFBSVWludDE2IHNpbjZfZmFtaWx5OwogICAgUFJVaW50MTYgc2lu
Nl9wb3J0OwogICAgUFJVaW50MzIgc2luNl9mbG93aW5mbzsKICAgIHN0cnVjdCBfbWRfaW42X2Fk
ZHIgc2luNl9hZGRyOwogICAgUFJVaW50MzIgc2luNl9zY29wZV9pZDsKICAgIFBSVWludDMyIF9f
c2luNl9zcmNfaWQ7Cn07CgoKIyAxICIvaG9tZS9yZWQxL2RhdGEvbW96aWxsYS9kaXN0L2luY2x1
ZGUvcHJpbnJ2YWwuaCIgMQogCiAKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgojIDE1NCAi
L2hvbWUvcmVkMS9kYXRhL21vemlsbGEvZGlzdC9pbmNsdWRlL3ByaW5ydmFsLmgiCgoKIAojIDEw
OSAiLi4vLi4vLi4vcHIvaW5jbHVkZS9tZC9fc29sYXJpcy5oIiAyCgpleHRlcm4gICBQUkludGVy
dmFsVGltZSAgICAgX01EX1NvbGFyaXNfR2V0SW50ZXJ2YWwodm9pZCk7CgpleHRlcm4gICBQUklu
dGVydmFsVGltZSAgICAgX01EX1NvbGFyaXNfVGlja3NQZXJTZWNvbmQodm9pZCk7CgoKIyAxMzIg
Ii4uLy4uLy4uL3ByL2luY2x1ZGUvbWQvX3NvbGFyaXMuaCIKCgoKCmV4dGVybiAgIHZvaWQgICAg
CQlfTURfRWFybHlJbml0KHZvaWQpOwoKCgoKIyA3NTcgIi4uLy4uLy4uL3ByL2luY2x1ZGUvbWQv
X3NvbGFyaXMuaCIKCgoKCiMgODcgIi4uLy4uLy4uL3ByL2luY2x1ZGUvbWQvcHJvc2RlcC5oIiAy
CgoKIyAxMjUgIi4uLy4uLy4uL3ByL2luY2x1ZGUvbWQvcHJvc2RlcC5oIgoKCiMgMSAiLi4vLi4v
Li4vcHIvaW5jbHVkZS9tZC9fdW5peG9zLmgiIDEKIAogCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoK
CiAKCgoKCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDEgMwogCiAKCiAKIAogCgog
CgoKCgoKCgojcHJhZ21hIGlkZW50CSJAKCMpdW5pc3RkLmgJMS41NQk5OC8wNC8xNCBTTUkiCQoK
CgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgogCgoKCgogCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKIAojIDE1
NyAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCgoKIAojIDE5NiAiL3Vzci9pbmNsdWRlL3VuaXN0
ZC5oIiAzCgoKCgpleHRlcm4gaW50IGFjY2Vzcyhjb25zdCBjaGFyICosIGludCk7CgoKZXh0ZXJu
IGludCBhY2N0KGNvbnN0IGNoYXIgKik7CgpleHRlcm4gdW5zaWduZWQgYWxhcm0odW5zaWduZWQp
OwoKCmV4dGVybiBpbnQgYnJrKHZvaWQgKik7CgpleHRlcm4gaW50IGNoZGlyKGNvbnN0IGNoYXIg
Kik7CmV4dGVybiBpbnQgY2hvd24oY29uc3QgY2hhciAqLCB1aWRfdCwgZ2lkX3QpOwoKCmV4dGVy
biBpbnQgY2hyb290KGNvbnN0IGNoYXIgKik7CgpleHRlcm4gaW50IGNsb3NlKGludCk7CgoKCgoK
CgpleHRlcm4gY2hhciAqY3Rlcm1pZChjaGFyICopOwoKCmV4dGVybiBjaGFyICpjdGVybWlkX3Io
Y2hhciAqKTsKCmV4dGVybiBjaGFyICpjdXNlcmlkKGNoYXIgKik7CmV4dGVybiBpbnQgZHVwKGlu
dCk7CmV4dGVybiBpbnQgZHVwMihpbnQsIGludCk7CgoKCgpleHRlcm4gaW50IGV4ZWNsKGNvbnN0
IGNoYXIgKiwgY29uc3QgY2hhciAqLCAuLi4pOwpleHRlcm4gaW50IGV4ZWNsZShjb25zdCBjaGFy
ICosIGNvbnN0IGNoYXIgKiwgLi4uKTsKZXh0ZXJuIGludCBleGVjbHAoY29uc3QgY2hhciAqLCBj
b25zdCBjaGFyICosIC4uLik7CmV4dGVybiBpbnQgZXhlY3YoY29uc3QgY2hhciAqLCBjaGFyICpj
b25zdCAqKTsKZXh0ZXJuIGludCBleGVjdmUoY29uc3QgY2hhciAqLCBjaGFyICpjb25zdCAqLCBj
aGFyICpjb25zdCAqKTsKZXh0ZXJuIGludCBleGVjdnAoY29uc3QgY2hhciAqLCBjaGFyICpjb25z
dCAqKTsKZXh0ZXJuIHZvaWQgX2V4aXQoaW50KTsKIAoKCgoKCgpleHRlcm4gaW50IGZhdHRhY2go
aW50LCBjb25zdCBjaGFyICopOwoKCgpleHRlcm4gaW50IGZjaGRpcihpbnQpOwpleHRlcm4gaW50
IGZjaG93bihpbnQsIHVpZF90LCBnaWRfdCk7CgoKCmV4dGVybiBpbnQgZmNocm9vdChpbnQpOwoK
CgpleHRlcm4gaW50IGZkYXRhc3luYyhpbnQpOwoKIAoKCgoKCgpleHRlcm4gaW50IGZkZXRhY2go
Y29uc3QgY2hhciAqKTsKCmV4dGVybiBwaWRfdCBmb3JrKHZvaWQpOwoKCmV4dGVybiBwaWRfdCBm
b3JrMSh2b2lkKTsKCmV4dGVybiBsb25nIGZwYXRoY29uZihpbnQsIGludCk7CgoKZXh0ZXJuIGlu
dCBmc3luYyhpbnQpOwoKCgpleHRlcm4gaW50IGZ0cnVuY2F0ZShpbnQsIG9mZl90KTsKCmV4dGVy
biBjaGFyICpnZXRjd2QoY2hhciAqLCBzaXplX3QpOwoKCmV4dGVybiBpbnQgZ2V0ZHRhYmxlc2l6
ZSh2b2lkKTsKCmV4dGVybiBnaWRfdCBnZXRlZ2lkKHZvaWQpOwpleHRlcm4gdWlkX3QgZ2V0ZXVp
ZCh2b2lkKTsKZXh0ZXJuIGdpZF90IGdldGdpZCh2b2lkKTsKZXh0ZXJuIGludCBnZXRncm91cHMo
aW50LCBnaWRfdCAqKTsKCgpleHRlcm4gbG9uZyBnZXRob3N0aWQodm9pZCk7CgoKCgoKZXh0ZXJu
IGludCBnZXRob3N0bmFtZShjaGFyICosIGludCk7CgpleHRlcm4gY2hhciAqZ2V0bG9naW4odm9p
ZCk7CgoKCgoKCgoKCmV4dGVybiBpbnQgZ2V0cGFnZXNpemUodm9pZCk7CmV4dGVybiBwaWRfdCBn
ZXRwZ2lkKHBpZF90KTsKCmV4dGVybiBwaWRfdCBnZXRwaWQodm9pZCk7CmV4dGVybiBwaWRfdCBn
ZXRwcGlkKHZvaWQpOwpleHRlcm4gcGlkX3QgZ2V0cGdycCh2b2lkKTsKCgpjaGFyICpnZXR0eHQo
Y29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwoKCgpleHRlcm4gcGlkX3QgZ2V0c2lkKHBpZF90
KTsKCmV4dGVybiB1aWRfdCBnZXR1aWQodm9pZCk7CgoKZXh0ZXJuIGNoYXIgKmdldHdkKGNoYXIg
Kik7CgogCgoKCgoKCmV4dGVybiBpbnQgaW9jdGwoaW50LCBpbnQsIC4uLik7CgoKCmV4dGVybiBp
bnQgaXNhZXhlYyhjb25zdCBjaGFyICosIGNoYXIgKmNvbnN0ICosIGNoYXIgKmNvbnN0ICopOwoK
ZXh0ZXJuIGludCBpc2F0dHkoaW50KTsKZXh0ZXJuIGludCBsaW5rKGNvbnN0IGNoYXIgKiwgY29u
c3QgY2hhciAqKTsKCgpleHRlcm4gaW50IGxjaG93bihjb25zdCBjaGFyICosIHVpZF90LCBnaWRf
dCk7CmV4dGVybiBpbnQgbG9ja2YoaW50LCBpbnQsIG9mZl90KTsKZXh0ZXJuIGludCByZWFkbGlu
ayhjb25zdCBjaGFyICosIGNoYXIgKiwgc2l6ZV90KTsKCmV4dGVybiBvZmZfdCBsc2VlayhpbnQs
IG9mZl90LCBpbnQpOwoKCmV4dGVybiBpbnQgbmljZShpbnQpOwoKZXh0ZXJuIGxvbmcgcGF0aGNv
bmYoY29uc3QgY2hhciAqLCBpbnQpOwpleHRlcm4gaW50IHBhdXNlKHZvaWQpOwpleHRlcm4gaW50
IHBpcGUoaW50ICopOwoKCmV4dGVybiBvZmZzZXRfdCBsbHNlZWsoaW50LCBvZmZzZXRfdCwgaW50
KTsKZXh0ZXJuIG9mZl90IHRlbGwoaW50KTsKZXh0ZXJuIGludCBtaW5jb3JlKGNhZGRyX3QsIHNp
emVfdCwgY2hhciAqKTsKCgoKZXh0ZXJuIHNzaXplX3QgcHJlYWQoaW50LCB2b2lkICosIHNpemVf
dCwgb2ZmX3QpOwoKCgpleHRlcm4gdm9pZCBwcm9maWwodW5zaWduZWQgc2hvcnQgKiwgc2l6ZV90
LCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBpbnQpOwoKCgpleHRlcm4gaW50IHB0aHJlYWRfYXRm
b3JrKHZvaWQgKCopICh2b2lkKSwgdm9pZCAoKikgKHZvaWQpLCB2b2lkICgqKSAodm9pZCkpOwoK
CgpleHRlcm4gbG9uZyBwdHJhY2UoaW50LCBwaWRfdCwgbG9uZywgbG9uZyk7CgoKCmV4dGVybiBz
c2l6ZV90IHB3cml0ZShpbnQsIGNvbnN0IHZvaWQgKiwgc2l6ZV90LCBvZmZfdCk7CgpleHRlcm4g
c3NpemVfdCByZWFkKGludCwgdm9pZCAqLCBzaXplX3QpOwoKCmV4dGVybiBpbnQgcmVuYW1lKGNv
bnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKCgoKZXh0ZXJuIGludCByZXNvbHZlcGF0aChjb25z
dCBjaGFyICosIGNoYXIgKiwgc2l6ZV90KTsKCmV4dGVybiBpbnQgcm1kaXIoY29uc3QgY2hhciAq
KTsKCgpleHRlcm4gdm9pZCAqc2JyayhpbnRwdHJfdCk7CgpleHRlcm4gaW50IHNldGdpZChnaWRf
dCk7CgoKZXh0ZXJuIGludCBzZXRlZ2lkKGdpZF90KTsKCgoKZXh0ZXJuIGludCBzZXRncm91cHMo
aW50LCBjb25zdCBnaWRfdCAqKTsKCmV4dGVybiBpbnQgc2V0cGdpZChwaWRfdCwgcGlkX3QpOwoK
CmV4dGVybiBwaWRfdCBzZXRwZ3JwKHZvaWQpOwpleHRlcm4gaW50IHNldHJlZ2lkKGdpZF90LCBn
aWRfdCk7CmV4dGVybiBpbnQgc2V0cmV1aWQodWlkX3QsIHVpZF90KTsKCmV4dGVybiBwaWRfdCBz
ZXRzaWQodm9pZCk7CmV4dGVybiBpbnQgc2V0dWlkKHVpZF90KTsKCgpleHRlcm4gaW50IHNldGV1
aWQodWlkX3QpOwoKZXh0ZXJuIHVuc2lnbmVkIHNsZWVwKHVuc2lnbmVkKTsKCgpleHRlcm4gaW50
IHN0aW1lKGNvbnN0IHRpbWVfdCAqKTsKCgoKCgoKCmV4dGVybiBpbnQgc3ltbGluayhjb25zdCBj
aGFyICosIGNvbnN0IGNoYXIgKik7CmV4dGVybiB2b2lkIHN5bmModm9pZCk7CgpleHRlcm4gbG9u
ZyBzeXNjb25mKGludCk7CgoKCgoKCgoKZXh0ZXJuIHBpZF90IHRjZ2V0cGdycChpbnQpOwpleHRl
cm4gaW50IHRjc2V0cGdycChpbnQsIHBpZF90KTsKCgpleHRlcm4gb2ZmX3QgdGVsbChpbnQpOwoK
CgpleHRlcm4gaW50IHRydW5jYXRlKGNvbnN0IGNoYXIgKiwgb2ZmX3QpOwoKZXh0ZXJuIGNoYXIg
KnR0eW5hbWUoaW50KTsKCgpleHRlcm4gdXNlY29uZHNfdCB1YWxhcm0odXNlY29uZHNfdCwgdXNl
Y29uZHNfdCk7CgpleHRlcm4gaW50IHVubGluayhjb25zdCBjaGFyICopOwoKCmV4dGVybiBpbnQg
dXNsZWVwKHVzZWNvbmRzX3QpOwoKCgpleHRlcm4gcGlkX3QgdmZvcmsodm9pZCk7CgoKCmV4dGVy
biB2b2lkIHZoYW5ndXAodm9pZCk7CgpleHRlcm4gc3NpemVfdCB3cml0ZShpbnQsIGNvbnN0IHZv
aWQgKiwgc2l6ZV90KTsKCgpleHRlcm4gdm9pZCB5aWVsZCh2b2lkKTsKCgogCgoKCgpleHRlcm4g
aW50IGZ0cnVuY2F0ZTY0KGludCwgb2ZmNjRfdCk7CgpleHRlcm4gb2ZmNjRfdCBsc2VlazY0KGlu
dCwgb2ZmNjRfdCwgaW50KTsKCgpleHRlcm4gc3NpemVfdAlwcmVhZDY0KGludCwgdm9pZCAqLCBz
aXplX3QsIG9mZjY0X3QpOwpleHRlcm4gc3NpemVfdAlwd3JpdGU2NChpbnQsIGNvbnN0IHZvaWQg
Kiwgc2l6ZV90LCBvZmY2NF90KTsKZXh0ZXJuIG9mZjY0X3QJdGVsbDY0KGludCk7CmV4dGVybiBp
bnQJdHJ1bmNhdGU2NChjb25zdCBjaGFyICosIG9mZjY0X3QpOwpleHRlcm4gaW50CWxvY2tmNjQo
aW50LCBpbnQsIG9mZjY0X3QpOwoKCgojIDc4OSAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCgoK
IAoKCgoKCgoKI3ByYWdtYSB1bmtub3duX2NvbnRyb2xfZmxvdyh2Zm9yaykKCgoKIAoKCgogCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgojIDg2NSAiL3Vzci9pbmNsdWRlL3VuaXN0
ZC5oIiAzCgoKZXh0ZXJuIGNoYXIgKmdldGxvZ2luX3IoY2hhciAqLCBpbnQpOwpleHRlcm4gY2hh
ciAqdHR5bmFtZV9yKGludCwgY2hhciAqLCBpbnQpOwoKCgojIDkwOSAiL3Vzci9pbmNsdWRlL3Vu
aXN0ZC5oIiAzCgoKCgoKCgoKCiMgMzYgIi4uLy4uLy4uL3ByL2luY2x1ZGUvbWQvX3VuaXhvcy5o
IiAyCgojIDEgIi9ob21lL3JlZDEvZ2NjLTIuOTUuMy9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29s
YXJpczIuNy8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMzQyICIvaG9tZS9yZWQxL2dj
Yy0yLjk1LjMvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjcvMi45NS4zL2luY2x1ZGUv
c3RkZGVmLmgiIDMKCiMgMzcgIi4uLy4uLy4uL3ByL2luY2x1ZGUvbWQvX3VuaXhvcy5oIiAyCgoj
IDEgIi91c3IvaW5jbHVkZS9zeXMvc3RhdC5oIiAxIDMKIAoKCgoKIAogCgogCiAKIAoKCgoKI3By
YWdtYSBpZGVudAkiQCgjKXN0YXQuaAkxLjQ1CTk4LzAzLzI0IFNNSSIJCgoKCgoKCgoKIAoKCgoK
CgoKCgoKCgoKCgoKCgoKCgogCgoKCiMgMTU0ICIvdXNyL2luY2x1ZGUvc3lzL3N0YXQuaCIgMwoK
CiAKCgojIDE3NSAiL3Vzci9pbmNsdWRlL3N5cy9zdGF0LmgiIDMKCgogCgoKCiMgMTk3ICIvdXNy
L2luY2x1ZGUvc3lzL3N0YXQuaCIgMwoKCgkgCgojIDIyNyAiL3Vzci9pbmNsdWRlL3N5cy9zdGF0
LmgiIDMKCgpzdHJ1Y3Qgc3RhdCB7CglkZXZfdAkJc3RfZGV2OwoJbG9uZwkJc3RfcGFkMVszXTsJ
IAoJaW5vX3QJCXN0X2lubzsKCW1vZGVfdAkJc3RfbW9kZTsKCW5saW5rX3QJCXN0X25saW5rOwoJ
dWlkX3QJCXN0X3VpZDsKCWdpZF90CQlzdF9naWQ7CglkZXZfdAkJc3RfcmRldjsKCWxvbmcJCXN0
X3BhZDJbMl07CglvZmZfdAkJc3Rfc2l6ZTsKCglsb25nCQlzdF9wYWQzOwkgCgoKCgl0aW1lc3Ry
dWNfdAlzdF9hdGltOwoJdGltZXN0cnVjX3QJc3RfbXRpbTsKCXRpbWVzdHJ1Y190CXN0X2N0aW07
CgoKCgoKCWJsa3NpemVfdAlzdF9ibGtzaXplOwoJYmxrY250X3QJc3RfYmxvY2tzOwoJY2hhcgkJ
c3RfZnN0eXBlWzE2IF07Cglsb25nCQlzdF9wYWQ0WzhdOwkgCn07CgoKCiAKCgojIDI5MCAiL3Vz
ci9pbmNsdWRlL3N5cy9zdGF0LmgiIDMKCgpzdHJ1Y3Qgc3RhdDY0IHsKCWRldl90CQlzdF9kZXY7
Cglsb25nCQlzdF9wYWQxWzNdOwkgCglpbm82NF90CQlzdF9pbm87Cgltb2RlX3QJCXN0X21vZGU7
CglubGlua190CQlzdF9ubGluazsKCXVpZF90CQlzdF91aWQ7CglnaWRfdAkJc3RfZ2lkOwoJZGV2
X3QJCXN0X3JkZXY7Cglsb25nCQlzdF9wYWQyWzJdOwoJb2ZmNjRfdAkJc3Rfc2l6ZTsKCgoJdGlt
ZXN0cnVjX3QJc3RfYXRpbTsKCXRpbWVzdHJ1Y190CXN0X210aW07Cgl0aW1lc3RydWNfdAlzdF9j
dGltOwoKCgoKCglibGtzaXplX3QJc3RfYmxrc2l6ZTsKCWJsa2NudDY0X3QJc3RfYmxvY2tzOwoJ
Y2hhcgkJc3RfZnN0eXBlWzE2IF07Cglsb25nCQlzdF9wYWQ0WzhdOwkgCn07CgoKCgoKCgoKCgoK
CgoKCgoKIyAzODIgIi91c3IvaW5jbHVkZS9zeXMvc3RhdC5oIiAzCgoKIAoKIAoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKZXh0ZXJuIGlu
dCBmc3RhdChpbnQsIHN0cnVjdCBzdGF0ICopOwpleHRlcm4gaW50IHN0YXQoY29uc3QgY2hhciAq
LCBzdHJ1Y3Qgc3RhdCAqKTsKCgoKZXh0ZXJuIGludCBsc3RhdChjb25zdCBjaGFyICosIHN0cnVj
dCBzdGF0ICopOwpleHRlcm4gaW50IG1rbm9kKGNvbnN0IGNoYXIgKiwgbW9kZV90LCBkZXZfdCk7
CgoKCgoKZXh0ZXJuIGludCBmY2htb2QoaW50LCBtb2RlX3QpOwoKCmV4dGVybiBpbnQgY2htb2Qo
Y29uc3QgY2hhciAqLCBtb2RlX3QpOwpleHRlcm4gaW50IG1rZGlyKGNvbnN0IGNoYXIgKiwgbW9k
ZV90KTsKZXh0ZXJuIGludCBta2ZpZm8oY29uc3QgY2hhciAqLCBtb2RlX3QpOwpleHRlcm4gbW9k
ZV90IHVtYXNrKG1vZGVfdCk7CgogCgoKZXh0ZXJuIGludCBmc3RhdDY0KGludCwgc3RydWN0IHN0
YXQ2NCAqKTsKZXh0ZXJuIGludCBzdGF0NjQoY29uc3QgY2hhciAqLCBzdHJ1Y3Qgc3RhdDY0ICop
OwpleHRlcm4gaW50IGxzdGF0NjQoY29uc3QgY2hhciAqLCBzdHJ1Y3Qgc3RhdDY0ICopOwoKCiMg
NDk4ICIvdXNyL2luY2x1ZGUvc3lzL3N0YXQuaCIgMwoKCgoKCgoKCiMgMzggIi4uLy4uLy4uL3By
L2luY2x1ZGUvbWQvX3VuaXhvcy5oIiAyCgojIDEgIi91c3IvaW5jbHVkZS9kaXJlbnQuaCIgMSAz
CiAKCgoKCiAKIAoKIAogCiAKCgoKCiNwcmFnbWEgaWRlbnQJIkAoIylkaXJlbnQuaAkxLjI4CTk3
LzA0LzE5IFNNSSIJCgoKCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvZGlyZW50LmgiIDEgMwogCiAK
CiAKIAogCgogCgoKCgoKCgojcHJhZ21hIGlkZW50CSJAKCMpZGlyZW50LmgJMS4zMQk5Ny8wNC8x
OSBTTUkiCQoKCgoKCgoKCiAKCgp0eXBlZGVmIHN0cnVjdCBkaXJlbnQgewoJaW5vX3QJCWRfaW5v
OwkJIAoJb2ZmX3QJCWRfb2ZmOwkJIAoJdW5zaWduZWQgc2hvcnQJZF9yZWNsZW47CSAKCWNoYXIJ
CWRfbmFtZVsxXTsJIAp9IGRpcmVudF90OwoKIyA0NiAiL3Vzci9pbmNsdWRlL3N5cy9kaXJlbnQu
aCIgMwoKCgoKIAoKCgp0eXBlZGVmIHN0cnVjdCBkaXJlbnQ2NCB7Cglpbm82NF90CQlkX2lubzsJ
CSAKCW9mZjY0X3QJCWRfb2ZmOwkJIAoJdW5zaWduZWQgc2hvcnQJZF9yZWNsZW47CSAKCWNoYXIJ
CWRfbmFtZVsxXTsJIAp9IGRpcmVudDY0X3Q7CgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgpleHRlcm4gaW50IGdldGRlbnRzKGludCwgc3RydWN0IGRpcmVudCAqLCBzaXpl
X3QpOwoKCgoKIAoKCgoKCgoKCgojIDIxICIvdXNyL2luY2x1ZGUvZGlyZW50LmgiIDIgMwoKCgoK
CgoKCgoKCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgewoJaW50CWRkX2ZkOwkJIAoJaW50CWRkX2xvYzsJ
CSAKCWludAlkZF9zaXplOwkgCgljaGFyCSpkZF9idWY7CSAKfSBESVI7CQkJCSAKCgojIDU0ICIv
dXNyL2luY2x1ZGUvZGlyZW50LmgiIDMKCgoKCiAKCgoKCgoKCgogCgoKCgoKCgoKZXh0ZXJuIERJ
UgkJKm9wZW5kaXIoY29uc3QgY2hhciAqKTsKZXh0ZXJuIHN0cnVjdCBkaXJlbnQJKnJlYWRkaXIo
RElSICopOwoKCmV4dGVybiBsb25nCQl0ZWxsZGlyKERJUiAqKTsKZXh0ZXJuIHZvaWQJCXNlZWtk
aXIoRElSICosIGxvbmcpOwoKZXh0ZXJuIHZvaWQJCXJld2luZGRpcihESVIgKik7CmV4dGVybiBp
bnQJCWNsb3NlZGlyKERJUiAqKTsKCiAKCgpleHRlcm4gc3RydWN0IGRpcmVudDY0CSpyZWFkZGly
NjQoRElSICopOwoKCiMgMTEwICIvdXNyL2luY2x1ZGUvZGlyZW50LmgiIDMKCgoKCgoKCiAKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKIyAxNTQgIi91c3IvaW5jbHVkZS9kaXJlbnQuaCIgMwoKCmV4dGVy
biBzdHJ1Y3QgZGlyZW50ICpyZWFkZGlyX3IoRElSICpfX2RwLCBzdHJ1Y3QgZGlyZW50ICpfX2Vu
dCk7CgoKCiMgMTc3ICIvdXNyL2luY2x1ZGUvZGlyZW50LmgiIDMKCgoKCiAKZXh0ZXJuIGludCAJ
cmVhZGRpcjY0X3IoRElSICosIHN0cnVjdCBkaXJlbnQ2NCAqLCBzdHJ1Y3QgZGlyZW50NjQgKiop
OwoKCiMgMjM1ICIvdXNyL2luY2x1ZGUvZGlyZW50LmgiIDMKCgoKCgoKCgoKCgojIDM5ICIuLi8u
Li8uLi9wci9pbmNsdWRlL21kL191bml4b3MuaCIgMgoKIyAxICIvdXNyL2luY2x1ZGUvZXJybm8u
aCIgMSAzCiAKIAoKIAogCiAKCgoKCiNwcmFnbWEgaWRlbnQJIkAoIyllcnJuby5oCTEuMTUJOTgv
MDMvMDIgU01JIgkKCiAKCgoKIyAxICIvdXNyL2luY2x1ZGUvc3lzL2Vycm5vLmgiIDEgMwogCiAK
CiAKIAogCgoKCgojcHJhZ21hIGlkZW50CSJAKCMpZXJybm8uaAkxLjE5CTk4LzAxLzE0IFNNSSIJ
CgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgogCgoKCgoKCgoKCgogCgoKCiAKCgoKCgoKCgoK
CgoKCgoKIAoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKIAoJIAoKCgoKCgoKCgoKCQkJCSAKCgoJ
IAoKCgoJCQkJIAoKCgoKCiAKCgoKCgoKCgoKCiAKCgoKCgoKCgojIDE3ICIvdXNyL2luY2x1ZGUv
ZXJybm8uaCIgMiAzCgoKCgoKCgoKCgoKCgoKCmV4dGVybiBpbnQgKl9fX2Vycm5vKCk7CgoKCgoK
CgoKCgojIDQwICIuLi8uLi8uLi9wci9pbmNsdWRlL21kL191bml4b3MuaCIgMgoKCgoKCgogCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCnR5cGVkZWYgaW50ICgqRkFSUFJPQykoKTsKCiAKCgoKZXh0ZXJu
IFBSSW50ZXJ2YWxUaW1lIGludHJfdGltZW91dF90aWNrczsKCiAKCgoKCgoKCgoKCgoKCgoKCgoK
CnR5cGVkZWYgc3RydWN0IF9QUlVuaXhQb2xsRGVzYyB7CglQUkludDMyIG9zZmQ7CglQUkludDE2
IGluX2ZsYWdzOwoJUFJJbnQxNiBvdXRfZmxhZ3M7Cn0gX1BSVW5peFBvbGxEZXNjOwoKdHlwZWRl
ZiBzdHJ1Y3QgUFJQb2xsUXVldWUgewogICAgUFJDTGlzdCBsaW5rczsgICAgICAgICAKICAgIF9Q
UlVuaXhQb2xsRGVzYyAqcGRzOyAgICAgICAgIAogICAgUFJVaW50biBucGRzOyAgICAgICAgICAg
ICAKICAgIFBSUGFja2VkQm9vbCBvbl9pb3E7ICAgICAKICAgIFBSSW50ZXJ2YWxUaW1lIHRpbWVv
dXQ7ICAgICAgICAgCiAgICBzdHJ1Y3QgUFJUaHJlYWQgKnRocjsKfSBQUlBvbGxRdWV1ZTsKCgoK
CgpleHRlcm4gUFJJbnQzMiBfUFJfV2FpdEZvck11bHRpcGxlRkRzKAogICAgX1BSVW5peFBvbGxE
ZXNjICp1bml4cGRzLAogICAgUFJJbnQzMiBwZGNudCwKICAgIFBSSW50ZXJ2YWxUaW1lIHRpbWVv
dXQpOwpleHRlcm4gdm9pZCBfUFJfVW5ibG9ja19JT19XYWl0KHN0cnVjdCBQUlRocmVhZCAqdGhy
KTsKCgoKCgpleHRlcm4gZmRfc2V0IF9wcl9tZF9yZWFkX3NldCwgX3ByX21kX3dyaXRlX3NldCwg
X3ByX21kX2V4Y2VwdGlvbl9zZXQ7CmV4dGVybiBQUkludDE2IF9wcl9tZF9yZWFkX2NudFtdLCBf
cHJfbWRfd3JpdGVfY250W10sIF9wcl9tZF9leGNlcHRpb25fY250W107CmV4dGVybiBQUkludDMy
IF9wcl9tZF9pb3FfbWF4X29zZmQ7CmV4dGVybiBQUlVpbnQzMiBfcHJfbWRfaW9xX3RpbWVvdXQ7
CgpzdHJ1Y3QgX01ERmlsZURlc2MgewogICAgaW50IG9zZmQ7Cn07CgpzdHJ1Y3QgX01ERGlyIHsK
CURJUiAqZDsKfTsKCnN0cnVjdCBfUFJDUFU7CmV4dGVybiB2b2lkIF9NRF91bml4X2luaXRfcnVu
bmluZ19jcHUoc3RydWN0IF9QUkNQVSAqY3B1KTsKCiAKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9z
eXMvbW1hbi5oIiAxIDMKIAogCgogCiAKIAoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKI3By
YWdtYSBpZGVudAkiQCgjKW1tYW4uaAkxLjM2CTk4LzA2LzA0IFNNSSIKCgoKCgoKCiAKCgoKCgoK
CgoKCgoKCgoKCgoKCgogCgoKCgogCgoKCiAKCgoKIAoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoK
CgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgojIDE1MCAiL3Vzci9pbmNsdWRlL3N5
cy9tbWFuLmgiIDMKCmV4dGVybiBjYWRkcl90IG1tYXAoY2FkZHJfdCwgc2l6ZV90LCBpbnQsIGlu
dCwgaW50LCBvZmZfdCk7CmV4dGVybiBpbnQgbXVubWFwKGNhZGRyX3QsIHNpemVfdCk7CmV4dGVy
biBpbnQgbXByb3RlY3QoY2FkZHJfdCwgc2l6ZV90LCBpbnQpOwpleHRlcm4gaW50IG1zeW5jKGNh
ZGRyX3QsIHNpemVfdCwgaW50KTsKZXh0ZXJuIGludCBtbG9jayhjYWRkcl90LCBzaXplX3QpOwpl
eHRlcm4gaW50IG11bmxvY2soY2FkZHJfdCwgc2l6ZV90KTsKZXh0ZXJuIGludCBtaW5jb3JlKGNh
ZGRyX3QsIHNpemVfdCwgY2hhciAqKTsKZXh0ZXJuIGludCBtZW1jbnRsKGNhZGRyX3QsIHNpemVf
dCwgaW50LCBjYWRkcl90LCBpbnQsIGludCk7CmV4dGVybiBpbnQgbWFkdmlzZShjYWRkcl90LCBz
aXplX3QsIGludCk7CiAKCmV4dGVybiBjYWRkcl90IG1tYXA2NChjYWRkcl90LCBzaXplX3QsIGlu
dCwgaW50LCBpbnQsIG9mZjY0X3QpOwoKCgoKZXh0ZXJuIGludCBtbG9ja2FsbChpbnQpOwpleHRl
cm4gaW50IG11bmxvY2thbGwodm9pZCk7CgoKIAoKCiMgMTkxICIvdXNyL2luY2x1ZGUvc3lzL21t
YW4uaCIgMwoKCgoKCiAKCgoKCgoKCiAKCgkJCQkJIAoKCgoKCiAKCgoKCgoKCgoKIAoKCgoKCgoK
CgojIDE0NyAiLi4vLi4vLi4vcHIvaW5jbHVkZS9tZC9fdW5peG9zLmgiIDIKCgoKCgojIDE5MSAi
Li4vLi4vLi4vcHIvaW5jbHVkZS9tZC9fdW5peG9zLmgiCgoKCgoKCgoKCgoKCgogCgpleHRlcm4g
dm9pZCBfUFJfVW5peEluaXQodm9pZCk7CgogCgpzdHJ1Y3QgX01EUHJvY2VzcyB7CiAgICBwaWRf
dCBwaWQ7Cn07CgpzdHJ1Y3QgUFJQcm9jZXNzOwpzdHJ1Y3QgUFJQcm9jZXNzQXR0cjsKCiAKCmV4
dGVybiBzdHJ1Y3QgUFJQcm9jZXNzICogX01EX0NyZWF0ZVVuaXhQcm9jZXNzKAogICAgY29uc3Qg
Y2hhciAqcGF0aCwKICAgIGNoYXIgKmNvbnN0ICphcmd2LAogICAgY2hhciAqY29uc3QgKmVudnAs
CiAgICBjb25zdCBzdHJ1Y3QgUFJQcm9jZXNzQXR0ciAqYXR0cgopOwoKCmV4dGVybiBQUlN0YXR1
cyBfTURfRGV0YWNoVW5peFByb2Nlc3Moc3RydWN0IFBSUHJvY2VzcyAqcHJvY2Vzcyk7CgogCgpl
eHRlcm4gUFJTdGF0dXMgX01EX1dhaXRVbml4UHJvY2VzcyhzdHJ1Y3QgUFJQcm9jZXNzICpwcm9j
ZXNzLAogICAgUFJJbnQzMiAqZXhpdENvZGUpOwoKCmV4dGVybiBQUlN0YXR1cyBfTURfS2lsbFVu
aXhQcm9jZXNzKHN0cnVjdCBQUlByb2Nlc3MgKnByb2Nlc3MpOwoKIAoKCgoKCgoKCiAKCmV4dGVy
biB2b2lkCQlfTURfSW5pdENQVVModm9pZCk7CgoKZXh0ZXJuIHZvaWQJCV9NRF9XYWtldXBfQ1BV
cyh2b2lkKTsKCgoKCgoKCgoKCgoKIAoKCgoKIAoKZXh0ZXJuIHZvaWQJCV9NRF9Jbml0RmlsZURl
c2MoUFJGaWxlRGVzYyAqZmQpOwoKCmV4dGVybiB2b2lkCQlfTURfTWFrZU5vbmJsb2NrKFBSRmls
ZURlc2MgKmZkKTsKCgogCgpleHRlcm4gUFJTdGF0dXMJX01EX0FsbG9jU2VnbWVudChQUlNlZ21l
bnQgKnNlZywgUFJVaW50MzIgc2l6ZSwKCQkJCXZvaWQgKnZhZGRyKTsKZXh0ZXJuIHZvaWQJCV9N
RF9GcmVlU2VnbWVudChQUlNlZ21lbnQgKnNlZyk7CgoKCgoKIAoKCgoKCgoKIAoKCgoKIAoKZXh0
ZXJuIFBSSW50MzIgX01EX0F2YWlsYWJsZVNvY2tldChQUkludDMyIG9zZmQpOwoKZXh0ZXJuIHZv
aWQgX01EX0luaXRTZWdzKHZvaWQpOwpleHRlcm4gdm9pZCBfTURfU3RhcnRJbnRlcnJ1cHRzKHZv
aWQpOwpleHRlcm4gdm9pZCBfTURfU3RvcEludGVycnVwdHModm9pZCk7CmV4dGVybiB2b2lkIF9N
RF9EaXNhYmxlQ2xvY2tJbnRlcnJ1cHRzKHZvaWQpOwpleHRlcm4gdm9pZCBfTURfQmxvY2tDbG9j
a0ludGVycnVwdHModm9pZCk7CmV4dGVybiB2b2lkIF9NRF9VbmJsb2NrQ2xvY2tJbnRlcnJ1cHRz
KHZvaWQpOwpleHRlcm4gdm9pZCBfTURfUGF1c2VDUFUoUFJJbnRlcnZhbFRpbWUgdGltZW91dCk7
CgpleHRlcm4gUFJTdGF0dXMgX01EX29wZW5fZGlyKHN0cnVjdCBfTUREaXIgKiwgY29uc3QgY2hh
ciAqKTsKZXh0ZXJuIFBSSW50MzIgIF9NRF9jbG9zZV9kaXIoc3RydWN0IF9NRERpciAqKTsKZXh0
ZXJuIGNoYXIgKiAgIF9NRF9yZWFkX2RpcihzdHJ1Y3QgX01ERGlyICosIFBSSW50bik7CmV4dGVy
biBQUkludDMyICBfTURfb3Blbihjb25zdCBjaGFyICpuYW1lLCBQUkludG4gb3NmbGFncywgUFJJ
bnRuIG1vZGUpOwpleHRlcm4gUFJJbnQzMglfTURfZGVsZXRlKGNvbnN0IGNoYXIgKm5hbWUpOwpl
eHRlcm4gUFJJbnQzMglfTURfZ2V0ZmlsZWluZm8oY29uc3QgY2hhciAqZm4sIFBSRmlsZUluZm8g
KmluZm8pOwpleHRlcm4gUFJJbnQzMiAgX01EX2dldGZpbGVpbmZvNjQoY29uc3QgY2hhciAqZm4s
IFBSRmlsZUluZm82NCAqaW5mbyk7CmV4dGVybiBQUkludDMyICBfTURfZ2V0b3BlbmZpbGVpbmZv
KGNvbnN0IFBSRmlsZURlc2MgKmZkLCBQUkZpbGVJbmZvICppbmZvKTsKZXh0ZXJuIFBSSW50MzIg
IF9NRF9nZXRvcGVuZmlsZWluZm82NChjb25zdCBQUkZpbGVEZXNjICpmZCwgUFJGaWxlSW5mbzY0
ICppbmZvKTsKZXh0ZXJuIFBSSW50MzIJX01EX3JlbmFtZShjb25zdCBjaGFyICpmcm9tLCBjb25z
dCBjaGFyICp0byk7CmV4dGVybiBQUkludDMyCV9NRF9hY2Nlc3MoY29uc3QgY2hhciAqbmFtZSwg
UFJBY2Nlc3NIb3cgaG93KTsKZXh0ZXJuIFBSSW50MzIJX01EX21rZGlyKGNvbnN0IGNoYXIgKm5h
bWUsIFBSSW50biBtb2RlKTsKZXh0ZXJuIFBSSW50MzIJX01EX3JtZGlyKGNvbnN0IGNoYXIgKm5h
bWUpOwpleHRlcm4gUFJJbnQzMglfTURfYWNjZXB0X3JlYWQoUFJJbnQzMiBzb2NrLCBQUkludDMy
ICpuZXdTb2NrLAoJCQkJUFJOZXRBZGRyICoqcmFkZHIsIHZvaWQgKmJ1ZiwgUFJJbnQzMiBhbW91
bnQpOwpleHRlcm4gUFJJbnQzMiAJX1BSX1VuaXhTZW5kRmlsZShQUkZpbGVEZXNjICpzZCwgUFJT
ZW5kRmlsZURhdGEgKnNmZCwKCQkJUFJUcmFuc21pdEZpbGVGbGFncyBmbGFncywgUFJJbnRlcnZh
bFRpbWUgdGltZW91dCk7CgpleHRlcm4gUFJTdGF0dXMgX01EX0xvY2tGaWxlKFBSSW50MzIgb3Nm
ZCk7CmV4dGVybiBQUlN0YXR1cyBfTURfVExvY2tGaWxlKFBSSW50MzIgb3NmZCk7CmV4dGVybiBQ
UlN0YXR1cyBfTURfVW5sb2NrRmlsZShQUkludDMyIG9zZmQpOwoKCgoKCgpleHRlcm4gUFJJbnQz
MiBfTURfcmVhZChQUkZpbGVEZXNjICpmZCwgdm9pZCAqYnVmLCBQUkludDMyIGFtb3VudCk7Cgpl
eHRlcm4gUFJJbnQzMiBfTURfd3JpdGUoUFJGaWxlRGVzYyAqZmQsIGNvbnN0IHZvaWQgKmJ1Ziwg
UFJJbnQzMiBhbW91bnQpOwoKCgoKCgoKCgoKCgoKCgoKCgpleHRlcm4gUFJJbnQzMgkJX01EX3Nv
Y2tldChpbnQgYWYsIGludCB0eXBlLCBpbnQgZmxhZ3MpOwoKZXh0ZXJuIFBSSW50MzIJCV9NRF9j
b25uZWN0KFBSRmlsZURlc2MgKmZkLCBjb25zdCBQUk5ldEFkZHIgKmFkZHIsCgkJCQkJCQkJUFJV
aW50MzIgYWRkcmxlbiwgUFJJbnRlcnZhbFRpbWUgdGltZW91dCk7CgpleHRlcm4gUFJJbnQzMgkJ
X01EX2FjY2VwdChQUkZpbGVEZXNjICpmZCwgUFJOZXRBZGRyICphZGRyLCBQUlVpbnQzMiAqYWRk
cmxlbiwKCQkJCQkJCQkJCQkJCVBSSW50ZXJ2YWxUaW1lIHRpbWVvdXQpOwoKZXh0ZXJuIFBSSW50
MzIJCV9NRF9iaW5kKFBSRmlsZURlc2MgKmZkLCBjb25zdCBQUk5ldEFkZHIgKmFkZHIsIFBSVWlu
dDMyIGFkZHJsZW4pOwoKZXh0ZXJuIFBSSW50MzIJCV9NRF9saXN0ZW4oUFJGaWxlRGVzYyAqZmQs
IFBSSW50biBiYWNrbG9nKTsKCmV4dGVybiBQUkludDMyCQlfTURfc2h1dGRvd24oUFJGaWxlRGVz
YyAqZmQsIFBSSW50biBob3cpOwoKCmV4dGVybiBQUkludDMyCQlfTURfcmVjdihQUkZpbGVEZXNj
ICpmZCwgdm9pZCAqYnVmLCBQUkludDMyIGFtb3VudCwgCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBQUkludG4gZmxhZ3MsIFBSSW50ZXJ2YWxUaW1lIHRpbWVvdXQpOwoKZXh0ZXJuIFBS
SW50MzIJCV9NRF9zZW5kKFBSRmlsZURlc2MgKmZkLCBjb25zdCB2b2lkICpidWYsIFBSSW50MzIg
YW1vdW50LAoJCQkJCQkJCQlQUkludG4gZmxhZ3MsIFBSSW50ZXJ2YWxUaW1lIHRpbWVvdXQpOwoK
ZXh0ZXJuIFBSSW50MzIJCV9NRF9yZWN2ZnJvbShQUkZpbGVEZXNjICpmZCwgdm9pZCAqYnVmLCBQ
UkludDMyIGFtb3VudCwKCQkJCQkJUFJJbnRuIGZsYWdzLCBQUk5ldEFkZHIgKmFkZHIsIFBSVWlu
dDMyICphZGRybGVuLAoJCQkJCQkJCQkJCVBSSW50ZXJ2YWxUaW1lIHRpbWVvdXQpOwoKZXh0ZXJu
IFBSSW50MzIgX01EX3NlbmR0byhQUkZpbGVEZXNjICpmZCwgY29uc3Qgdm9pZCAqYnVmLCBQUklu
dDMyIGFtb3VudCwKCQkJCQkJCVBSSW50biBmbGFncywgY29uc3QgUFJOZXRBZGRyICphZGRyLCBQ
UlVpbnQzMiBhZGRybGVuLAoJCQkJCQkJCQkJCQlQUkludGVydmFsVGltZSB0aW1lb3V0KTsKCmV4
dGVybiBQUkludDMyCQlfTURfd3JpdGV2KFBSRmlsZURlc2MgKmZkLCBjb25zdCBzdHJ1Y3QgUFJJ
T1ZlYyAqaW92LAoJCQkJCQkJCVBSSW50MzIgaW92X3NpemUsIFBSSW50ZXJ2YWxUaW1lIHRpbWVv
dXQpOwoKCmV4dGVybiBQUkludDMyCQlfTURfc29ja2V0YXZhaWxhYmxlKFBSRmlsZURlc2MgKmZk
KTsKCmV4dGVybiBQUkludDY0CQlfTURfc29ja2V0YXZhaWxhYmxlNjQoUFJGaWxlRGVzYyAqZmQp
OwoKCgoKZXh0ZXJuIFBSSW50MzIgX01EX3ByX3BvbGwoUFJQb2xsRGVzYyAqcGRzLCBQUkludG4g
bnBkcywKCQkJCQkJCQkJCQkJUFJJbnRlcnZhbFRpbWUgdGltZW91dCk7CgoKZXh0ZXJuIFBSSW50
MzIJCV9NRF9jbG9zZShQUkludDMyIG9zZmQpOwoKZXh0ZXJuIFBSSW50MzIJCV9NRF9sc2VlayhQ
UkZpbGVEZXNjKiwgUFJJbnQzMiwgUFJTZWVrV2hlbmNlKTsKCmV4dGVybiBQUkludDY0CQlfTURf
bHNlZWs2NChQUkZpbGVEZXNjKiwgUFJJbnQ2NCwgUFJTZWVrV2hlbmNlKTsKCmV4dGVybiBQUklu
dDMyCQlfTURfZnN5bmMoUFJGaWxlRGVzYyAqZmQpOwoKCmV4dGVybiBQUkludDMyIF9NRF9zb2Nr
ZXRwYWlyKGludCBhZiwgaW50IHR5cGUsIGludCBmbGFncywgUFJJbnQzMiAqb3NmZCk7CgoKCgoK
CgoKZXh0ZXJuIFBSU3RhdHVzIF9NRF9nZXRwZWVybmFtZShQUkZpbGVEZXNjICpmZCwgUFJOZXRB
ZGRyICphZGRyLAoJCQkJCQkJCQkJCVBSVWludDMyICphZGRybGVuKTsKCmV4dGVybiBQUlN0YXR1
cyBfTURfZ2V0c29ja25hbWUoUFJGaWxlRGVzYyAqZmQsIFBSTmV0QWRkciAqYWRkciwKCQkJCQkJ
CQkJCQlQUlVpbnQzMiAqYWRkcmxlbik7CgoKZXh0ZXJuIFBSU3RhdHVzIF9NRF9nZXRzb2Nrb3B0
KFBSRmlsZURlc2MgKmZkLCBQUkludDMyIGxldmVsLAoJCQkJCQlQUkludDMyIG9wdG5hbWUsIGNo
YXIqIG9wdHZhbCwgUFJJbnQzMiogb3B0bGVuKTsKCmV4dGVybiBQUlN0YXR1cyBfTURfc2V0c29j
a29wdChQUkZpbGVEZXNjICpmZCwgUFJJbnQzMiBsZXZlbCwKCQkJCQlQUkludDMyIG9wdG5hbWUs
IGNvbnN0IGNoYXIqIG9wdHZhbCwgUFJJbnQzMiBvcHRsZW4pOwoKCmV4dGVybiBQUlN0YXR1cyBf
TURfc2V0X2ZkX2luaGVyaXRhYmxlKFBSRmlsZURlc2MgKmZkLCBQUkJvb2wgaW5oZXJpdGFibGUp
OwoKCmV4dGVybiBQUlN0YXR1cyBfTURfZ2V0aG9zdG5hbWUoY2hhciAqbmFtZSwgUFJVaW50MzIg
bmFtZWxlbik7CgoKZXh0ZXJuIFBSU3RhdHVzIF9NRF9nZXRzeXNpbmZvKFBSU3lzSW5mbyBjbWQs
IGNoYXIgKm5hbWUsIFBSVWludDMyIG5hbWVsZW4pOwoKCmV4dGVybiBpbnQgX01EX3VuaXhfZ2V0
X25vbmJsb2NraW5nX2Nvbm5lY3RfZXJyb3IoaW50IG9zZmQpOwoKIAoKc3RydWN0IF9NREZpbGVN
YXAgewogICAgUFJJbnRuIHByb3Q7CiAgICBQUkludG4gZmxhZ3M7CiAgICBQUkJvb2wgaXNBbm9u
Rk07ICAKfTsKCmV4dGVybiBQUlN0YXR1cyBfTURfQ3JlYXRlRmlsZU1hcChzdHJ1Y3QgUFJGaWxl
TWFwICpmbWFwLCBQUkludDY0IHNpemUpOwoKCmV4dGVybiB2b2lkICogX01EX01lbU1hcChzdHJ1
Y3QgUFJGaWxlTWFwICpmbWFwLCBQUkludDY0IG9mZnNldCwKICAgICAgICBQUlVpbnQzMiBsZW4p
OwoKCmV4dGVybiBQUlN0YXR1cyBfTURfTWVtVW5tYXAodm9pZCAqYWRkciwgUFJVaW50MzIgc2l6
ZSk7CgoKZXh0ZXJuIFBSU3RhdHVzIF9NRF9DbG9zZUZpbGVNYXAoc3RydWN0IFBSRmlsZU1hcCAq
Zm1hcCk7CgoKIAoKCgoKCgoKCgoKCgoKCiMgNTE2ICIuLi8uLi8uLi9wci9pbmNsdWRlL21kL191
bml4b3MuaCIKCgogCgoKCgoKCiMgNTYwICIuLi8uLi8uLi9wci9pbmNsdWRlL21kL191bml4b3Mu
aCIKCnR5cGVkZWYgc3RydWN0IHN0YXQ2NCBfTURTdGF0NjQ7CnR5cGVkZWYgb2ZmNjRfdCBfTURP
ZmY2NF90OwojIDU3MSAiLi4vLi4vLi4vcHIvaW5jbHVkZS9tZC9fdW5peG9zLmgiCgoKdHlwZWRl
ZiBQUkludG4gKCpfTURfRnN0YXQ2NCkoUFJJbnRuIG9zZmQsIF9NRFN0YXQ2NCAqYnVmKTsKdHlw
ZWRlZiBQUkludG4gKCpfTURfT3BlbjY0KShjb25zdCBjaGFyICpwYXRoLCBpbnQgb2ZsYWcsIC4u
Lik7CgoKCnR5cGVkZWYgUFJJbnRuICgqX01EX1N0YXQ2NCkoY29uc3QgY2hhciAqcGF0aCwgX01E
U3RhdDY0ICpidWYpOwoKdHlwZWRlZiBfTURPZmY2NF90ICgqX01EX0xzZWVrNjQpKFBSSW50biBv
c2ZkLCBfTURPZmY2NF90LCBQUkludG4gd2hlbmNlKTsKdHlwZWRlZiB2b2lkKiAoKl9NRF9NbWFw
NjQpKAogICAgdm9pZCAqYWRkciwgUFJTaXplIGxlbiwgUFJJbnRuIHByb3QsIFBSSW50biBmbGFn
cywKICAgIFBSSW50biBmaWxkZXMsIF9NRE9mZjY0X3Qgb2Zmc2V0KTsKc3RydWN0IF9NRF9JT1Zl
Y3Rvcgp7CiAgICBfTURfT3BlbjY0IF9vcGVuNjQ7CiAgICBfTURfTW1hcDY0IF9tbWFwNjQ7CiAg
ICBfTURfU3RhdDY0IF9zdGF0NjQ7CiAgICBfTURfRnN0YXQ2NCBfZnN0YXQ2NDsKICAgIF9NRF9M
c2VlazY0IF9sc2VlazY0Owp9OwpleHRlcm4gc3RydWN0IF9NRF9JT1ZlY3RvciBfbWRfaW92ZWN0
b3I7CgoKIyAxMjcgIi4uLy4uLy4uL3ByL2luY2x1ZGUvbWQvcHJvc2RlcC5oIiAyCgojIDEgIi4u
Ly4uLy4uL3ByL2luY2x1ZGUvbWQvX3VuaXhfZXJyb3JzLmgiIDEKIAogCgoKCgoKCgoKCgoKCgoK
CgoKCgoKIyAxICIvaG9tZS9yZWQxL2djYy0yLjk1LjMvbGliL2djYy1saWIvc3BhcmMtc3VuLXNv
bGFyaXMyLjcvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDM0MiAiL2hvbWUvcmVkMS9n
Y2MtMi45NS4zL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi43LzIuOTUuMy9pbmNsdWRl
L3N0ZGRlZi5oIiAzCgojIDIzICIuLi8uLi8uLi9wci9pbmNsdWRlL21kL191bml4X2Vycm9ycy5o
IiAyCgoKIAoKZXh0ZXJuICAgdm9pZCAgICAgX01EX3VuaXhfbWFwX2RlZmF1bHRfZXJyb3IoaW50
IGVycik7CgoKZXh0ZXJuICAgdm9pZCAgICAgX01EX3VuaXhfbWFwX29wZW5kaXJfZXJyb3IoaW50
IGVycik7CgoKZXh0ZXJuICAgdm9pZCAgICAgX01EX3VuaXhfbWFwX2Nsb3NlZGlyX2Vycm9yKGlu
dCBlcnIpOwoKCmV4dGVybiAgIHZvaWQgICAgIF9NRF91bml4X3JlYWRkaXJfZXJyb3IoaW50IGVy
cik7CgoKZXh0ZXJuICAgdm9pZCAgICAgX01EX3VuaXhfbWFwX3VubGlua19lcnJvcihpbnQgZXJy
KTsKCgpleHRlcm4gICB2b2lkICAgICBfTURfdW5peF9tYXBfc3RhdF9lcnJvcihpbnQgZXJyKTsK
CgpleHRlcm4gICB2b2lkICAgICBfTURfdW5peF9tYXBfZnN0YXRfZXJyb3IoaW50IGVycik7CgoK
ZXh0ZXJuICAgdm9pZCAgICAgX01EX3VuaXhfbWFwX3JlbmFtZV9lcnJvcihpbnQgZXJyKTsKCgpl
eHRlcm4gICB2b2lkICAgICBfTURfdW5peF9tYXBfYWNjZXNzX2Vycm9yKGludCBlcnIpOwoKCmV4
dGVybiAgIHZvaWQgICAgIF9NRF91bml4X21hcF9ta2Rpcl9lcnJvcihpbnQgZXJyKTsKCgpleHRl
cm4gICB2b2lkICAgICBfTURfdW5peF9tYXBfcm1kaXJfZXJyb3IoaW50IGVycik7CgoKZXh0ZXJu
ICAgdm9pZCAgICAgX01EX3VuaXhfbWFwX3JlYWRfZXJyb3IoaW50IGVycik7CgoKZXh0ZXJuICAg
dm9pZCAgICAgX01EX3VuaXhfbWFwX3dyaXRlX2Vycm9yKGludCBlcnIpOwoKCmV4dGVybiAgIHZv
aWQgICAgIF9NRF91bml4X21hcF9sc2Vla19lcnJvcihpbnQgZXJyKTsKCgpleHRlcm4gICB2b2lk
ICAgICBfTURfdW5peF9tYXBfZnN5bmNfZXJyb3IoaW50IGVycik7CgoKZXh0ZXJuICAgdm9pZCAg
ICAgX01EX3VuaXhfbWFwX2Nsb3NlX2Vycm9yKGludCBlcnIpOwoKCmV4dGVybiAgIHZvaWQgICAg
IF9NRF91bml4X21hcF9zb2NrZXRfZXJyb3IoaW50IGVycik7CgoKZXh0ZXJuICAgdm9pZCAgICAg
X01EX3VuaXhfbWFwX3NvY2tldGF2YWlsYWJsZV9lcnJvcihpbnQgZXJyKTsKCgpleHRlcm4gICB2
b2lkICAgICBfTURfdW5peF9tYXBfcmVjdl9lcnJvcihpbnQgZXJyKTsKCgpleHRlcm4gICB2b2lk
ICAgICBfTURfdW5peF9tYXBfcmVjdmZyb21fZXJyb3IoaW50IGVycik7CgoKZXh0ZXJuICAgdm9p
ZCAgICAgX01EX3VuaXhfbWFwX3NlbmRfZXJyb3IoaW50IGVycik7CgoKZXh0ZXJuICAgdm9pZCAg
ICAgX01EX3VuaXhfbWFwX3NlbmR0b19lcnJvcihpbnQgZXJyKTsKCgpleHRlcm4gICB2b2lkICAg
ICBfTURfdW5peF9tYXBfd3JpdGV2X2Vycm9yKGludCBlcnIpOwoKCmV4dGVybiAgIHZvaWQgICAg
IF9NRF91bml4X21hcF9hY2NlcHRfZXJyb3IoaW50IGVycik7CgoKZXh0ZXJuICAgdm9pZCAgICAg
X01EX3VuaXhfbWFwX2Nvbm5lY3RfZXJyb3IoaW50IGVycik7CgoKZXh0ZXJuICAgdm9pZCAgICAg
X01EX3VuaXhfbWFwX2JpbmRfZXJyb3IoaW50IGVycik7CgoKZXh0ZXJuICAgdm9pZCAgICAgX01E
X3VuaXhfbWFwX2xpc3Rlbl9lcnJvcihpbnQgZXJyKTsKCgpleHRlcm4gICB2b2lkICAgICBfTURf
dW5peF9tYXBfc2h1dGRvd25fZXJyb3IoaW50IGVycik7CgoKZXh0ZXJuICAgdm9pZCAgICAgX01E
X3VuaXhfbWFwX3NvY2tldHBhaXJfZXJyb3IoaW50IGVycik7CgoKZXh0ZXJuICAgdm9pZCAgICAg
X01EX3VuaXhfbWFwX2dldHNvY2tuYW1lX2Vycm9yKGludCBlcnIpOwoKCmV4dGVybiAgIHZvaWQg
ICAgIF9NRF91bml4X21hcF9nZXRwZWVybmFtZV9lcnJvcihpbnQgZXJyKTsKCgpleHRlcm4gICB2
b2lkICAgICBfTURfdW5peF9tYXBfZ2V0c29ja29wdF9lcnJvcihpbnQgZXJyKTsKCgpleHRlcm4g
ICB2b2lkICAgICBfTURfdW5peF9tYXBfc2V0c29ja29wdF9lcnJvcihpbnQgZXJyKTsKCgpleHRl
cm4gICB2b2lkICAgICBfTURfdW5peF9tYXBfb3Blbl9lcnJvcihpbnQgZXJyKTsKCgpleHRlcm4g
ICB2b2lkICAgICBfTURfdW5peF9tYXBfbW1hcF9lcnJvcihpbnQgZXJyKTsKCgpleHRlcm4gICB2
b2lkICAgICBfTURfdW5peF9tYXBfZ2V0aG9zdG5hbWVfZXJyb3IoaW50IGVycik7CgoKZXh0ZXJu
ICAgdm9pZCAgICAgX01EX3VuaXhfbWFwX3NlbGVjdF9lcnJvcihpbnQgZXJyKTsKCgpleHRlcm4g
ICB2b2lkICAgICBfTURfdW5peF9tYXBfcG9sbF9lcnJvcihpbnQgZXJyKTsKCgpleHRlcm4gICB2
b2lkICAgICBfTURfdW5peF9tYXBfcG9sbF9yZXZlbnRzX2Vycm9yKGludCBlcnIpOwoKCmV4dGVy
biAgIHZvaWQgICAgIF9NRF91bml4X21hcF9mbG9ja19lcnJvcihpbnQgZXJyKTsKCgpleHRlcm4g
ICB2b2lkICAgICBfTURfdW5peF9tYXBfbG9ja2ZfZXJyb3IoaW50IGVycik7CgoKIAoKCiMgMTI4
ICIuLi8uLi8uLi9wci9pbmNsdWRlL21kL3Byb3NkZXAuaCIgMgoKCiMgMTM5ICIuLi8uLi8uLi9w
ci9pbmNsdWRlL21kL3Byb3NkZXAuaCIKCgoKIyAxICIuLi8uLi8uLi9wci9pbmNsdWRlL21kL19w
dGguaCIgMQogCiAKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCiAKCgoKIyA3MyAiLi4vLi4v
Li4vcHIvaW5jbHVkZS9tZC9fcHRoLmgiCgoKCgoKCgoKCgogCgoKCgojIDk2ICIuLi8uLi8uLi9w
ci9pbmNsdWRlL21kL19wdGguaCIKCgoKCgoKCgojIDExNCAiLi4vLi4vLi4vcHIvaW5jbHVkZS9t
ZC9fcHRoLmgiCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKIAoKCgoKCgoKCiAKCgoKCgoK
CgojIDE5NyAiLi4vLi4vLi4vcHIvaW5jbHVkZS9tZC9fcHRoLmgiCgogCgoKCgoKCgoKCgoKCgoK
CiAKCgoKCiMgMjQwICIuLi8uLi8uLi9wci9pbmNsdWRlL21kL19wdGguaCIKCgoKCgoKCiMgMTQy
ICIuLi8uLi8uLi9wci9pbmNsdWRlL21kL3Byb3NkZXAuaCIgMgoKCgogCgoKIyA1OSAiLi4vLi4v
Li4vcHIvaW5jbHVkZS9wcml2YXRlL3ByaW1wbC5oIiAyCgojIDEgIi9ob21lL3JlZDEvZGF0YS9t
b3ppbGxhL2Rpc3QvaW5jbHVkZS9vYnNvbGV0ZS9wcm9ic2xldC5oIiAxCiAKIAoKCgoKCgoKCgoK
CgoKCgoKIAoKCgoKCgoKCgogCgogCgoKCmV4dGVybiAgIFBSU3RhdHVzICAgICBQUl9ZaWVsZCh2
b2lkKTsKCiAKIAogCgogCgoKCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgUFJfZmRfc2V0IHsKICAgIFBS
VWludDMyICAgICAgaHNpemU7CiAgICBQUkZpbGVEZXNjICAgKmhhcnJheVsxMDI0IF07CiAgICBQ
UlVpbnQzMiAgICAgIG5zaXplOwogICAgUFJJbnQzMiAgICAgICBuYXJyYXlbMTAyNCBdOwp9IFBS
X2ZkX3NldDsKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKZXh0ZXJuICAgUFJJbnQzMiAgICAgUFJfU2VsZWN0KAogICAgUFJJbnQzMiBudW0s
IFBSX2ZkX3NldCAqcmVhZGZkcywgUFJfZmRfc2V0ICp3cml0ZWZkcywKICAgIFBSX2ZkX3NldCAq
ZXhjZXB0ZmRzLCBQUkludGVydmFsVGltZSB0aW1lb3V0KTsKCiAKCgoKCgoKCgoKCgoKCgoKCgpl
eHRlcm4gICB2b2lkICAgICAgICAgICAgUFJfRkRfWkVSTyhQUl9mZF9zZXQgKnNldCk7CmV4dGVy
biAgIHZvaWQgICAgICAgICAgICBQUl9GRF9TRVQoUFJGaWxlRGVzYyAqZmQsIFBSX2ZkX3NldCAq
c2V0KTsKZXh0ZXJuICAgdm9pZCAgICAgICAgICAgIFBSX0ZEX0NMUihQUkZpbGVEZXNjICpmZCwg
UFJfZmRfc2V0ICpzZXQpOwpleHRlcm4gICBQUkludDMyICAgICAgICAgUFJfRkRfSVNTRVQoUFJG
aWxlRGVzYyAqZmQsIFBSX2ZkX3NldCAqc2V0KTsKZXh0ZXJuICAgdm9pZCAgICAgICAgICAgIFBS
X0ZEX05TRVQoUFJJbnQzMiBvc2ZkLCBQUl9mZF9zZXQgKnNldCk7CmV4dGVybiAgIHZvaWQgICAg
ICAgICAgICBQUl9GRF9OQ0xSKFBSSW50MzIgb3NmZCwgUFJfZmRfc2V0ICpzZXQpOwpleHRlcm4g
ICBQUkludDMyICAgICAgICAgUFJfRkRfTklTU0VUKFBSSW50MzIgb3NmZCwgUFJfZmRfc2V0ICpz
ZXQpOwoKCgoKCgoKCmV4dGVybiAgIFBSSW50MzIgICAgIFBSX1N0YXQoY29uc3QgY2hhciAqcGF0
aCwgc3RydWN0IHN0YXQgKmJ1Zik7CgoKIAoKCgogCiMgNjAgIi4uLy4uLy4uL3ByL2luY2x1ZGUv
cHJpdmF0ZS9wcmltcGwuaCIgMgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvc2VtYXBob3JlLmgiIDEg
MwogCiAKCiAKIAogCgogCgoKCgoKCgojcHJhZ21hIGlkZW50CSJAKCMpc2VtYXBob3JlLmgJMS4x
MQk5OC8wNC8wMiBTTUkiCgoKIyAxICIvdXNyL2luY2x1ZGUvc3lzL2ZjbnRsLmgiIDEgMwogCiAK
CiAKIAogCgogCgoKCgoKCgojcHJhZ21hIGlkZW50CSJAKCMpZmNudGwuaAkxLjQ1CTk4LzA4LzI1
IFNNSSIJCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCQkJCSAKCgoKCgoKCgoKIAoKCgoKCgoK
IAoKCgoKCgoKCgoKIAoKCgojIDg5ICIvdXNyL2luY2x1ZGUvc3lzL2ZjbnRsLmgiIDMKCgoKCgoK
CgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCQkJCSAKCiAKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgog
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKIAp0eXBlZGVmIHN0cnVjdCBmbG9jayB7CglzaG9y
dAlsX3R5cGU7CglzaG9ydAlsX3doZW5jZTsKCW9mZl90CWxfc3RhcnQ7CglvZmZfdAlsX2xlbjsJ
CSAKCWludAlsX3N5c2lkOwoJcGlkX3QJbF9waWQ7Cglsb25nCWxfcGFkWzRdOwkJIAp9IGZsb2Nr
X3Q7CgojIDE5NCAiL3Vzci9pbmNsdWRlL3N5cy9mY250bC5oIiAzCgoKIAoKCgp0eXBlZGVmIHN0
cnVjdCBmbG9jazY0IHsKCXNob3J0CWxfdHlwZTsKCXNob3J0CWxfd2hlbmNlOwoJb2ZmNjRfdAls
X3N0YXJ0OwoJb2ZmNjRfdAlsX2xlbjsJCSAKCWludAlsX3N5c2lkOwoJcGlkX3QJbF9waWQ7Cgls
b25nCWxfcGFkWzRdOwkJIAp9IGZsb2NrNjRfdDsKCiMgMjM2ICIvdXNyL2luY2x1ZGUvc3lzL2Zj
bnRsLmgiIDMKCgoKCiMgMjUwICIvdXNyL2luY2x1ZGUvc3lzL2ZjbnRsLmgiIDMKCgogCgoKCgoK
CgogCgoKCgoKCiAKCgoKCgoKCiAKCgp0eXBlZGVmIHN0cnVjdCBmc2hhcmUgewoJc2hvcnQJZl9h
Y2Nlc3M7CglzaG9ydAlmX2Rlbnk7CglpbnQJZl9pZDsKfSBmc2hhcmVfdDsKCiAKCgoKCgoKIAoK
CgoKCgoKCgoKCgoKCiMgMTkgIi91c3IvaW5jbHVkZS9zZW1hcGhvcmUuaCIgMiAzCgoKCgoKCnR5
cGVkZWYgc3RydWN0IHsKCSAKCXVpbnQzMl90CXNlbV9jb3VudDsJIAoJdWludDE2X3QJc2VtX3R5
cGU7Cgl1aW50MTZfdAlzZW1fbWFnaWM7Cgl1cGFkNjRfdAlzZW1fcGFkMVszXTsJIAoJdXBhZDY0
X3QgCXNlbV9wYWQyWzJdOwkgCn0Jc2VtX3Q7CgoKCiAKCgoKaW50CXNlbV9pbml0KHNlbV90ICos
IGludCwgdW5zaWduZWQgaW50KTsKaW50CXNlbV9kZXN0cm95KHNlbV90ICopOwpzZW1fdAkqc2Vt
X29wZW4oY29uc3QgY2hhciAqLCBpbnQsIC4uLik7CmludAlzZW1fY2xvc2Uoc2VtX3QgKik7Cmlu
dAlzZW1fdW5saW5rKGNvbnN0IGNoYXIgKik7CmludAlzZW1fd2FpdChzZW1fdCAqKTsKaW50CXNl
bV90cnl3YWl0KHNlbV90ICopOwppbnQJc2VtX3Bvc3Qoc2VtX3QgKik7CmludAlzZW1fZ2V0dmFs
dWUoc2VtX3QgKiwgaW50ICopOwojIDU5ICIvdXNyL2luY2x1ZGUvc2VtYXBob3JlLmgiIDMKCgoK
CgoKCiMgNjQgIi4uLy4uLy4uL3ByL2luY2x1ZGUvcHJpdmF0ZS9wcmltcGwuaCIgMgoKCgoKCiAK
CgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgp0
eXBlZGVmIHN0cnVjdCBfTURMb2NrIF9NRExvY2s7CnR5cGVkZWYgc3RydWN0IF9NRENWYXIgX01E
Q1ZhcjsKdHlwZWRlZiBzdHJ1Y3QgX01EU2VnbWVudCBfTURTZWdtZW50Owp0eXBlZGVmIHN0cnVj
dCBfTURUaHJlYWQgX01EVGhyZWFkOwp0eXBlZGVmIHN0cnVjdCBfTURUaHJlYWRTdGFjayBfTURU
aHJlYWRTdGFjazsKdHlwZWRlZiBzdHJ1Y3QgX01EU2VtYXBob3JlIF9NRFNlbWFwaG9yZTsKdHlw
ZWRlZiBzdHJ1Y3QgX01ERGlyIF9NRERpcjsKdHlwZWRlZiBzdHJ1Y3QgX01ERmlsZURlc2MgX01E
RmlsZURlc2M7CnR5cGVkZWYgc3RydWN0IF9NRFByb2Nlc3MgX01EUHJvY2VzczsKdHlwZWRlZiBz
dHJ1Y3QgX01ERmlsZU1hcCBfTURGaWxlTWFwOwoKCgogCgoKCgoKCnR5cGVkZWYgc3RydWN0IF9Q
VF9Ob3RpZmllZCBfUFRfTm90aWZpZWQ7CnN0cnVjdCBfUFRfTm90aWZpZWQKewogICAgUFJJbnRu
IGxlbmd0aDsgICAgICAgICAgICAgICAKICAgIHN0cnVjdAogICAgewogICAgICAgIFBSQ29uZFZh
ciAqY3Y7ICAgICAgICAgICAKICAgICAgICBQUkludG4gdGltZXM7ICAgICAgICAgICAgCiAgICB9
IGN2WzYgXTsKICAgIF9QVF9Ob3RpZmllZCAqbGluazsgICAgICAgICAgCn07CgogCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCiMgMjA2ICIuLi8uLi8uLi9wci9pbmNsdWRlL3By
aXZhdGUvcHJpbXBsLmgiCgoKdHlwZWRlZiBQUlVpbnRuIFBURGVidWc7CgoKCgoKIyAxMjEzICIu
Li8uLi8uLi9wci9pbmNsdWRlL3ByaXZhdGUvcHJpbXBsLmgiCgoKIAogCgoKCiAKCmV4dGVybiBQ
Uk9mZnNldDMyIF9QUl9NRF9MU0VFSyhQUkZpbGVEZXNjICpmZCwgUFJPZmZzZXQzMiBvZmZzZXQs
IFBSU2Vla1doZW5jZSB3aGVuY2UpOwoKCmV4dGVybiBQUk9mZnNldDY0IF9QUl9NRF9MU0VFSzY0
KFBSRmlsZURlc2MgKmZkLCBQUk9mZnNldDY0IG9mZnNldCwgUFJTZWVrV2hlbmNlIHdoZW5jZSk7
CgoKZXh0ZXJuIFBSSW50MzIgX1BSX01EX0dFVEZJTEVJTkZPKGNvbnN0IGNoYXIgKmZuLCBQUkZp
bGVJbmZvICppbmZvKTsKCgpleHRlcm4gUFJJbnQzMiBfUFJfTURfR0VURklMRUlORk82NChjb25z
dCBjaGFyICpmbiwgUFJGaWxlSW5mbzY0ICppbmZvKTsKCgpleHRlcm4gUFJJbnQzMiBfUFJfTURf
R0VUT1BFTkZJTEVJTkZPKGNvbnN0IFBSRmlsZURlc2MgKmZkLCBQUkZpbGVJbmZvICppbmZvKTsK
CgpleHRlcm4gUFJJbnQzMiBfUFJfTURfR0VUT1BFTkZJTEVJTkZPNjQoY29uc3QgUFJGaWxlRGVz
YyAqZmQsIFBSRmlsZUluZm82NCAqaW5mbyk7CgoKCiAKIAogCmV4dGVybiB2b2lkIF9QUl9Jbml0
RmRDYWNoZSh2b2lkKTsKZXh0ZXJuIHZvaWQgX1BSX0NsZWFudXBGZENhY2hlKHZvaWQpOwpleHRl
cm4gUFJGaWxlRGVzYyAqX1BSX0dldGZkKHZvaWQpOwpleHRlcm4gdm9pZCBfUFJfUHV0ZmQoUFJG
aWxlRGVzYyAqZmQpOwoKIAoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKZXh0ZXJuIFBSSW50biBfUFJf
SW52YWxpZEludCh2b2lkKTsKZXh0ZXJuIFBSSW50MTYgX1BSX0ludmFsaWRJbnQxNih2b2lkKTsK
ZXh0ZXJuIFBSSW50NjQgX1BSX0ludmFsaWRJbnQ2NCh2b2lkKTsKZXh0ZXJuIFBSU3RhdHVzIF9Q
Ul9JbnZhbGlkU3RhdHVzKHZvaWQpOwpleHRlcm4gUFJGaWxlRGVzYyAqX1BSX0ludmFsaWREZXNj
KHZvaWQpOwoKZXh0ZXJuIFBSSU9NZXRob2RzIF9wcl9mYXVsdHlfbWV0aG9kczsKCiAKCgoKCgpl
eHRlcm4gUFJVaW50biBfUFJfTmV0QWRkclNpemUoY29uc3QgUFJOZXRBZGRyKiBhZGRyKTsKCgoK
CgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyAxMzQwICIuLi8uLi8uLi9wci9p
bmNsdWRlL3ByaXZhdGUvcHJpbXBsLmgiCgoKZXh0ZXJuIFBSU3RhdHVzIF9QUl9NYXBPcHRpb25O
YW1lKAogICAgUFJTb2NrT3B0aW9uIG9wdG5hbWUsIFBSSW50MzIgKmxldmVsLCBQUkludDMyICpu
YW1lKTsKZXh0ZXJuIHZvaWQgX1BSX0luaXRUaHJlYWRzKAogICAgUFJUaHJlYWRUeXBlIHR5cGUs
IFBSVGhyZWFkUHJpb3JpdHkgcHJpb3JpdHksIFBSVWludG4gbWF4UFREcyk7CgpzdHJ1Y3QgUFJM
b2NrIHsKCiAgICBwdGhyZWFkX211dGV4X3QgbXV0ZXg7ICAgICAgICAgICAKICAgIF9QVF9Ob3Rp
ZmllZCBub3RpZmllZDsgICAgICAgICAgIAogICAgcHRocmVhZF90IG93bmVyOyAgICAgICAgICAg
ICAgICAgCiMgMTM2MyAiLi4vLi4vLi4vcHIvaW5jbHVkZS9wcml2YXRlL3ByaW1wbC5oIgoKfTsK
CmV4dGVybiB2b2lkIF9QUl9Jbml0TG9ja3Modm9pZCk7CgpzdHJ1Y3QgUFJDb25kVmFyIHsKICAg
IFBSTG9jayAqbG9jazsgICAgICAgICAgICAgICAgCgogICAgcHRocmVhZF9jb25kX3QgY3Y7ICAg
ICAgICAgICAKICAgIFBSSW50MzIgbm90aWZ5X3BlbmRpbmc7ICAgICAgCgoKCgoKCgoKfTsKCiAK
CnN0cnVjdCBQUk1vbml0b3IgewogICAgY29uc3QgY2hhciogbmFtZTsgICAgICAgICAgICAKCiAg
ICBQUkxvY2sgbG9jazsgICAgICAgICAgICAgICAgIAogICAgcHRocmVhZF90IG93bmVyOyAgICAg
ICAgICAgICAKICAgIFBSQ29uZFZhciAqY3ZhcjsgICAgICAgICAgICAgCgoKCiAgICBQUlVpbnQz
MiBlbnRyeUNvdW50OyAgICAgICAgIAp9OwoKIAoKc3RydWN0IFBSU2VtYXBob3JlIHsKCgoKCiAg
ICBQUkNvbmRWYXIgKmN2YXI7ICAgICAgICAgCiAgICBQUlVpbnRuIGNvdW50OyAgICAgICAgICAg
ICAKICAgIFBSVWludDMyIHdhaXRlcnM7ICAgICAgICAgICAgIAoKCgoKCn07CgpleHRlcm4gICB2
b2lkICAgICBfUFJfSW5pdFNlbSh2b2lkKTsKCiAKCnN0cnVjdCBQUlNlbSB7CgogICAgc2VtX3Qg
KnNlbTsKCgoKCgoKCn07CgogCgpzdHJ1Y3QgUFJTdGFja1N0ciB7CiAgICAgCgoKCiAgICBQUlN0
YWNrRWxlbSBwcnN0a19oZWFkOwoKCiAgICBQUkxvY2sgKnByc3RrX2xvY2s7CiAgICBjaGFyICpw
cnN0a19uYW1lOwp9OwoKIAoKIApzdHJ1Y3QgUFJUaHJlYWRTdGFjayB7CiAgICBQUkNMaXN0IGxp
bmtzOwogICAgUFJVaW50biBmbGFnczsKCiAgICBjaGFyICphbGxvY0Jhc2U7ICAgICAgICAgICAg
IAogICAgUFJVaW50MzIgYWxsb2NTaXplOyAgICAgICAgICAKICAgIGNoYXIgKnN0YWNrQm90dG9t
OyAgICAgICAgICAgCiAgICBjaGFyICpzdGFja1RvcDsgICAgICAgICAgICAgIAogICAgUFJVaW50
MzIgc3RhY2tTaXplOyAgICAgICAgICAKCiAgICBQUlNlZ21lbnQgKnNlZzsKICAgICAgICBQUlRo
cmVhZCogdGhyOyAgICAgICAgICAgCgoKCgoKfTsKCmV4dGVybiB2b2lkIF9QUl9EZXN0cm95VGhy
ZWFkUHJpdmF0ZShQUlRocmVhZCopOwoKdHlwZWRlZiB2b2lkICggICpfUFJTdGFydEZuKSh2b2lk
ICopOwoKc3RydWN0IFBSVGhyZWFkIHsKICAgIFBSVWludDMyIHN0YXRlOyAgICAgICAgICAgICAg
ICAgIAogICAgUFJUaHJlYWRQcmlvcml0eSBwcmlvcml0eTsgICAgICAgCgogICAgdm9pZCAqYXJn
OyAgICAgICAgICAgICAgICAgICAgICAgCiAgICBfUFJTdGFydEZuIHN0YXJ0RnVuYzsgICAgICAg
ICAgICAKCiAgICBQUlRocmVhZFN0YWNrICpzdGFjazsgICAgICAgICAgICAKICAgIHZvaWQgKmVu
dmlyb25tZW50OyAgICAgICAgICAgICAgIAoKICAgIFBSVGhyZWFkRHVtcFByb2MgZHVtcDsgICAg
ICAgICAgIAogICAgdm9pZCAqZHVtcEFyZzsgICAgICAgICAgICAgICAgICAgCgogICAgIAoKCiAg
ICBQUlVpbnQzMiB0cGRMZW5ndGg7ICAgICAgICAgICAgICAKICAgIHZvaWQgKipwcml2YXRlRGF0
YTsgICAgICAgICAgICAgIAogICAgUFJJbnQzMiBlcnJvclN0cmluZ1NpemU7ICAgICAgICAgCiAg
ICBQUkVycm9yQ29kZSBlcnJvckNvZGU7ICAgICAgICAgICAKICAgIFBSSW50MzIgb3NFcnJvckNv
ZGU7ICAgICAgICAgICAgIAogICAgY2hhciAqZXJyb3JTdHJpbmc7ICAgICAgICAgICAgICAgCgoK
ICAgIHB0aHJlYWRfdCBpZDsgICAgICAgICAgICAgICAgICAgIAogICAgUFJCb29sIG9rVG9EZWxl
dGU7ICAgICAgICAgICAgICAgCiAgICBQUkNvbmRWYXIgKndhaXRpbmc7ICAgICAgICAgICAgICAK
ICAgIHZvaWQgKnNwOyAgICAgICAgICAgICAgICAgICAgICAgIAogICAgUFJUaHJlYWQgKm5leHQs
ICpwcmV2OyAgICAgICAgICAgCiAgICBQUlVpbnQzMiBzdXNwZW5kOyAgICAgICAgICAgICAgICAK
CgoKCiAgICBQUlVpbnQzMiBpbnRlcnJ1cHRfYmxvY2tlZDsgICAgICAKIyAxNTc0ICIuLi8uLi8u
Li9wci9pbmNsdWRlL3ByaXZhdGUvcHJpbXBsLmgiCgp9OwoKc3RydWN0IFBSUHJvY2Vzc0F0dHIg
ewogICAgUFJGaWxlRGVzYyAqc3RkaW5GZDsKICAgIFBSRmlsZURlc2MgKnN0ZG91dEZkOwogICAg
UFJGaWxlRGVzYyAqc3RkZXJyRmQ7CiAgICBjaGFyICpjdXJyZW50RGlyZWN0b3J5OwogICAgY2hh
ciAqZmRJbmhlcml0QnVmZmVyOwogICAgUFJTaXplIGZkSW5oZXJpdEJ1ZmZlclNpemU7CiAgICBQ
UlNpemUgZmRJbmhlcml0QnVmZmVyVXNlZDsKfTsKCnN0cnVjdCBQUlByb2Nlc3MgewogICAgX01E
UHJvY2VzcyBtZDsKfTsKCnN0cnVjdCBQUkZpbGVNYXAgewogICAgUFJGaWxlRGVzYyAqZmQ7CiAg
ICBQUkZpbGVNYXBQcm90ZWN0IHByb3Q7CiAgICBfTURGaWxlTWFwIG1kOwp9OwoKIAoKIAoKCgoK
CgoKCgoKCgoKCgpzdHJ1Y3QgUFJGaWxlUHJpdmF0ZSB7CiAgICBQUkludDMyIHN0YXRlOwogICAg
UFJCb29sIG5vbmJsb2NraW5nOwogICAgUFJCb29sIGluaGVyaXRhYmxlOwogICAgUFJGaWxlRGVz
YyAqbmV4dDsKICAgIFBSSW50biBsb2NrQ291bnQ7CiAgICBfTURGaWxlRGVzYyBtZDsKfTsKCnN0
cnVjdCBQUkRpciB7CiAgICBQUkRpckVudHJ5IGQ7CiAgICBfTUREaXIgbWQ7Cn07CgpleHRlcm4g
dm9pZCBfUFJfSW5pdFNlZ3Modm9pZCk7CmV4dGVybiB2b2lkIF9QUl9Jbml0U3RhY2tzKHZvaWQp
OwpleHRlcm4gdm9pZCBfUFJfSW5pdFRQRCh2b2lkKTsKZXh0ZXJuIHZvaWQgX1BSX0luaXRNZW0o
dm9pZCk7CmV4dGVybiB2b2lkIF9QUl9Jbml0RW52KHZvaWQpOwpleHRlcm4gdm9pZCBfUFJfSW5p
dENNb24odm9pZCk7CmV4dGVybiB2b2lkIF9QUl9Jbml0SU8odm9pZCk7CmV4dGVybiB2b2lkIF9Q
Ul9Jbml0TG9nKHZvaWQpOwpleHRlcm4gdm9pZCBfUFJfSW5pdE5ldCh2b2lkKTsKZXh0ZXJuIHZv
aWQgX1BSX0luaXRDbG9jayh2b2lkKTsKZXh0ZXJuIHZvaWQgX1BSX0luaXRMaW5rZXIodm9pZCk7
CmV4dGVybiB2b2lkIF9QUl9Jbml0QXRvbWljKHZvaWQpOwpleHRlcm4gdm9pZCBfUFJfSW5pdENQ
VXModm9pZCk7CmV4dGVybiB2b2lkIF9QUl9Jbml0RHRvYSh2b2lkKTsKZXh0ZXJuIHZvaWQgX1BS
X0luaXRNVyh2b2lkKTsKZXh0ZXJuIHZvaWQgX1BSX0luaXRSV0xvY2tzKHZvaWQpOwpleHRlcm4g
dm9pZCBfUFJfTm90aWZ5Q29uZFZhcihQUkNvbmRWYXIgKmN2YXIsIFBSVGhyZWFkICptZSk7CmV4
dGVybiB2b2lkIF9QUl9DbGVhbnVwVGhyZWFkKFBSVGhyZWFkICp0aHJlYWQpOwpleHRlcm4gdm9p
ZCBfUFJfQ2xlYW51cFRQRCh2b2lkKTsKZXh0ZXJuIHZvaWQgX1BSX0NsZWFudXAodm9pZCk7CmV4
dGVybiB2b2lkIF9QUl9Mb2dDbGVhbnVwKHZvaWQpOwpleHRlcm4gdm9pZCBfUFJfSW5pdExheWVy
Q2FjaGUodm9pZCk7CgoKCgpleHRlcm4gUFJCb29sIF9wcl9pbml0aWFsaXplZDsKZXh0ZXJuIHZv
aWQgX1BSX0ltcGxpY2l0SW5pdGlhbGl6YXRpb24odm9pZCk7CmV4dGVybiBQUkJvb2wgX1BSX09i
c29sZXRlKGNvbnN0IGNoYXIgKm9ic29sZXRlLCBjb25zdCBjaGFyICpwcmVmZXJyZWQpOwoKIAoK
c3RydWN0IFBSU2VnbWVudCB7CiAgICB2b2lkICp2YWRkcjsKICAgIFBSVWludDMyIHNpemU7CiAg
ICBQUlVpbnRuIGZsYWdzOwoKCgoKfTsKCiAKCgogCgoKCgoKCgoKCgoKCgpleHRlcm4gUFJTZWdt
ZW50KiBfUFJfTmV3U2VnbWVudChQUlVpbnQzMiBzaXplLCB2b2lkICp2YWRkcik7CgogCgoKCgoK
CgpleHRlcm4gdm9pZCBfUFJfRGVzdHJveVNlZ21lbnQoUFJTZWdtZW50ICpzZWcpOwoKIAoKZXh0
ZXJuIFBSSW50MzIgX3ByX3BhZ2VTaXplOwpleHRlcm4gUFJJbnQzMiBfcHJfcGFnZVNoaWZ0OwoK
ZXh0ZXJuIFBSTG9nTW9kdWxlSW5mbyAqX3ByX2Nsb2NrX2xtOwpleHRlcm4gUFJMb2dNb2R1bGVJ
bmZvICpfcHJfY21vbl9sbTsKZXh0ZXJuIFBSTG9nTW9kdWxlSW5mbyAqX3ByX2lvX2xtOwpleHRl
cm4gUFJMb2dNb2R1bGVJbmZvICpfcHJfY3Zhcl9sbTsKZXh0ZXJuIFBSTG9nTW9kdWxlSW5mbyAq
X3ByX21vbl9sbTsKZXh0ZXJuIFBSTG9nTW9kdWxlSW5mbyAqX3ByX2xpbmtlcl9sbTsKZXh0ZXJu
IFBSTG9nTW9kdWxlSW5mbyAqX3ByX3NjaGVkX2xtOwpleHRlcm4gUFJMb2dNb2R1bGVJbmZvICpf
cHJfdGhyZWFkX2xtOwpleHRlcm4gUFJMb2dNb2R1bGVJbmZvICpfcHJfZ2NfbG07CgpleHRlcm4g
UFJGaWxlRGVzYyAqX3ByX3N0ZGluOwpleHRlcm4gUFJGaWxlRGVzYyAqX3ByX3N0ZG91dDsKZXh0
ZXJuIFBSRmlsZURlc2MgKl9wcl9zdGRlcnI7CgogCiMgMTcyOCAiLi4vLi4vLi4vcHIvaW5jbHVk
ZS9wcml2YXRlL3ByaW1wbC5oIgoKCiAKCgoKIApleHRlcm4gdm9pZCBfUFJfTURfRUFSTFlfSU5J
VCh2b2lkKTsKCgpleHRlcm4gdm9pZCBfUFJfTURfSU5URVJWQUxfSU5JVCh2b2lkKTsKCgpleHRl
cm4gICB2b2lkICAgICBfUFJfTURfSU5JVF9TRUdTKHZvaWQpOwoKCmV4dGVybiAgIHZvaWQgICAg
IF9QUl9NRF9GSU5BTF9JTklUKHZvaWQpOwoKCiAKCmV4dGVybiBQUlByb2Nlc3MgKiBfUFJfTURf
Q1JFQVRFX1BST0NFU1MoCiAgICBjb25zdCBjaGFyICpwYXRoLAogICAgY2hhciAqY29uc3QgKmFy
Z3YsCiAgICBjaGFyICpjb25zdCAqZW52cCwKICAgIGNvbnN0IFBSUHJvY2Vzc0F0dHIgKmF0dHIp
OwoKCmV4dGVybiBQUlN0YXR1cyBfUFJfTURfREVUQUNIX1BST0NFU1MoUFJQcm9jZXNzICpwcm9j
ZXNzKTsKCgpleHRlcm4gUFJTdGF0dXMgX1BSX01EX1dBSVRfUFJPQ0VTUyhQUlByb2Nlc3MgKnBy
b2Nlc3MsIFBSSW50MzIgKmV4aXRDb2RlKTsKCgpleHRlcm4gUFJTdGF0dXMgX1BSX01EX0tJTExf
UFJPQ0VTUyhQUlByb2Nlc3MgKnByb2Nlc3MpOwoKCiAKZXh0ZXJuICAgUFJUaW1lICAgICBfUFJf
TURfTk9XKHZvaWQpOwoKCiAKZXh0ZXJuIGNoYXIqIF9QUl9NRF9HRVRfRU5WKGNvbnN0IGNoYXIg
Km5hbWUpOwoKCmV4dGVybiBQUkludG4gX1BSX01EX1BVVF9FTlYoY29uc3QgY2hhciAqbmFtZSk7
CgoKIAoKZXh0ZXJuIHZvaWQgX1BSX01EX0lOSVRfQVRPTUlDKHZvaWQpOwoKCmV4dGVybiBQUklu
dDMyIF9QUl9NRF9BVE9NSUNfSU5DUkVNRU5UKFBSSW50MzIgKik7CgoKZXh0ZXJuIFBSSW50MzIg
X1BSX01EX0FUT01JQ19BREQoUFJJbnQzMiAqLCBQUkludDMyKTsKCgpleHRlcm4gUFJJbnQzMiBf
UFJfTURfQVRPTUlDX0RFQ1JFTUVOVChQUkludDMyICopOwoKCmV4dGVybiBQUkludDMyIF9QUl9N
RF9BVE9NSUNfU0VUKFBSSW50MzIgKiwgUFJJbnQzMik7CgoKIApleHRlcm4gICBQUlN0YXR1cyAg
ICAgX1BSX01EX0FMTE9DX1NFR01FTlQoUFJTZWdtZW50ICpzZWcsIFBSVWludDMyIHNpemUsIHZv
aWQgKnZhZGRyKTsKCgpleHRlcm4gICB2b2lkICAgICBfUFJfTURfRlJFRV9TRUdNRU5UKFBSU2Vn
bWVudCAqc2VnKTsKCgogCgogCgoKCgoKCgoKCgpleHRlcm4gUFJXb3JkICpfTURfSG9tZUdDUmVn
aXN0ZXJzKFBSVGhyZWFkICp0LCBpbnQgaXNDdXJyZW50LCBpbnQgKm5wKTsKCiAKCmV4dGVybiBQ
UkludGVydmFsVGltZSBfUFJfTURfR0VUX0lOVEVSVkFMKHZvaWQpOwoKCmV4dGVybiBQUkludGVy
dmFsVGltZSBfUFJfTURfSU5URVJWQUxfUEVSX1NFQyh2b2lkKTsKCgogCgpleHRlcm4gUFJJbnQz
MiBfUFJfTURfU0VUVEhSRUFEQUZGSU5JVFlNQVNLKFBSVGhyZWFkICp0aHJlYWQsIFBSVWludDMy
IG1hc2sgKTsKCgpleHRlcm4gUFJJbnQzMiBfUFJfTURfR0VUVEhSRUFEQUZGSU5JVFlNQVNLKFBS
VGhyZWFkICp0aHJlYWQsIFBSVWludDMyICptYXNrKTsKCgogCgpleHRlcm4gUFJTdGF0dXMgX1BS
X01EX0xPQ0tGSUxFKFBSSW50MzIgb3NmZCk7CgoKZXh0ZXJuIFBSU3RhdHVzIF9QUl9NRF9UTE9D
S0ZJTEUoUFJJbnQzMiBvc2ZkKTsKCgpleHRlcm4gUFJTdGF0dXMgX1BSX01EX1VOTE9DS0ZJTEUo
UFJJbnQzMiBvc2ZkKTsKCgogCgpleHRlcm4gUFJTdGF0dXMgX1BSX01EX0NSRUFURV9GSUxFX01B
UChQUkZpbGVNYXAgKmZtYXAsIFBSSW50NjQgc2l6ZSk7CgoKZXh0ZXJuIHZvaWQgKiBfUFJfTURf
TUVNX01BUCgKICAgIFBSRmlsZU1hcCAqZm1hcCwKICAgIFBST2Zmc2V0NjQgb2Zmc2V0LAogICAg
UFJVaW50MzIgbGVuKTsKCgpleHRlcm4gUFJTdGF0dXMgX1BSX01EX01FTV9VTk1BUCh2b2lkICph
ZGRyLCBQUlVpbnQzMiBzaXplKTsKCgpleHRlcm4gUFJTdGF0dXMgX1BSX01EX0NMT1NFX0ZJTEVf
TUFQKFBSRmlsZU1hcCAqZm1hcCk7CgoKIAoKIAoKCnN0cnVjdCBQUlNoYXJlZE1lbW9yeSAKewog
ICAgY2hhciAgICAgICAgKmlwY25hbWU7ICAKICAgIFBSU2l6ZSAgICAgIHNpemU7ICAgCiAgICBQ
UkludG4gICAgICBtb2RlOyAgIAogICAgUFJJbnRuICAgICAgZmxhZ3M7ICAKCiAgICBpbnQgICAg
ICAgICBpZDsKCgoKCgoKCiAgICBQUlVpbnQzMiAgICBpZGVudDsgIAoKfTsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCmV4dGVybiBQUlNoYXJl
ZE1lbW9yeSAqIF9NRF9PcGVuU2hhcmVkTWVtb3J5KCAKICAgIGNvbnN0IGNoYXIgKm5hbWUsCiAg
ICBQUlNpemUgICAgICBzaXplLAogICAgUFJJbnRuICAgICAgZmxhZ3MsCiAgICBQUkludG4gICAg
ICBtb2RlCik7CgoKZXh0ZXJuIHZvaWQgKiBfTURfQXR0YWNoU2hhcmVkTWVtb3J5KCBQUlNoYXJl
ZE1lbW9yeSAqc2htLCBQUkludG4gZmxhZ3MgKTsKCgpleHRlcm4gUFJTdGF0dXMgX01EX0RldGFj
aFNoYXJlZE1lbW9yeSggUFJTaGFyZWRNZW1vcnkgKnNobSwgdm9pZCAqYWRkciApOwoKCmV4dGVy
biBQUlN0YXR1cyBfTURfQ2xvc2VTaGFyZWRNZW1vcnkoIFBSU2hhcmVkTWVtb3J5ICpzaG0gKTsK
CgpleHRlcm4gUFJTdGF0dXMgX01EX0RlbGV0ZVNoYXJlZE1lbW9yeSggY29uc3QgY2hhciAqbmFt
ZSApOwoKCmV4dGVybiBQUkZpbGVNYXAqIF9tZF9PcGVuQW5vbkZpbGVNYXAoIAogICAgY29uc3Qg
Y2hhciAqZGlyTmFtZSwKICAgIFBSU2l6ZSAgICAgIHNpemUsCiAgICBQUkZpbGVNYXBQcm90ZWN0
IHByb3QKKTsKCgpleHRlcm4gUFJTdGF0dXMgX21kX0V4cG9ydEZpbGVNYXBBc1N0cmluZygKICAg
IFBSRmlsZU1hcCAqZm0sCiAgICBQUlNpemUgICAgYnVmU2l6ZSwKICAgIGNoYXIgICAgICAqYnVm
Cik7CgoKZXh0ZXJuIFBSRmlsZU1hcCAqIF9tZF9JbXBvcnRGaWxlTWFwRnJvbVN0cmluZygKICAg
IGNvbnN0IGNoYXIgKmZtc3RyaW5nCik7CgoKCgogCgogCgoKCgoKIAoKCnR5cGVkZWYgZW51bSB7
CiAgICBfUFJJUENTZW0sICAgCiAgICBfUFJJUENTaG0gICAgCn0gX1BSSVBDVHlwZTsKCiAKCgpl
eHRlcm4gUFJTdGF0dXMgX1BSX01ha2VOYXRpdmVJUENOYW1lKAogICAgY29uc3QgY2hhciAqbmFt
ZSwgICAKICAgIGNoYXIgKnJlc3VsdCwgICAgICAgCiAgICBQUkludG4gc2l6ZSwgICAgICAgIAog
ICAgX1BSSVBDVHlwZSB0eXBlICAgICAKKTsKCiAKCmV4dGVybiAgIFBSSW50MzIgICAgIF9QUl9N
RF9HRVRfU09DS0VUX0VSUk9SKHZvaWQpOwoKCiAKZXh0ZXJuIFBSU3RhdHVzIF9QUl9NRF9HRVRI
T1NUTkFNRShjaGFyICpuYW1lLCBQUlVpbnQzMiBuYW1lbGVuKTsKCgpleHRlcm4gUFJTdGF0dXMg
X1BSX01EX0dFVFNZU0lORk8oUFJTeXNJbmZvIGNtZCwgY2hhciAqbmFtZSwgUFJVaW50MzIgbmFt
ZWxlbik7CgoKIAoKZXh0ZXJuIFBSU2l6ZSBfUFJfTURfR2V0UmFuZG9tTm9pc2UoIHZvaWQgKmJ1
ZiwgUFJTaXplIHNpemUgKTsKCmV4dGVybiBQUlNpemUgX3ByX0NvcHlMb3dCaXRzKCB2b2lkICpk
ZXN0LCBQUlNpemUgZHN0bGVuLCB2b2lkICpzcmMsIFBSU2l6ZSBzcmNsZW4gKTsKCiAKCiMgMTk4
NSAiLi4vLi4vLi4vcHIvaW5jbHVkZS9wcml2YXRlL3ByaW1wbC5oIgoKCiAKCgojIDI0ICJwcmlu
cnZhbC5jIiAyCgoKIAoKCgoKCgoKCnZvaWQgX1BSX0luaXRDbG9jayh2b2lkKQp7CiAgICAgOwoK
CgoKCgoKCn0KCiAKCgoKCgoKIFBSSW50ZXJ2YWxUaW1lICAgUFJfSW50ZXJ2YWxOb3coKQp7CiAg
ICBpZiAoIV9wcl9pbml0aWFsaXplZCkgX1BSX0ltcGxpY2l0SW5pdGlhbGl6YXRpb24oKTsKICAg
IHJldHVybiBfTURfU29sYXJpc19HZXRJbnRlcnZhbCAgKCk7Cn0gICAKCmV4dGVybiAgUFJVaW50
MzIgICBQUl9UaWNrc1BlclNlY29uZCgpCnsKICAgIGlmICghX3ByX2luaXRpYWxpemVkKSBfUFJf
SW1wbGljaXRJbml0aWFsaXphdGlvbigpOwogICAgcmV0dXJuIF9NRF9Tb2xhcmlzX1RpY2tzUGVy
U2Vjb25kICAoKTsKfSAgIAoKIFBSSW50ZXJ2YWxUaW1lICAgUFJfU2Vjb25kc1RvSW50ZXJ2YWwo
UFJVaW50MzIgc2Vjb25kcykKewogICAgcmV0dXJuIHNlY29uZHMgKiBQUl9UaWNrc1BlclNlY29u
ZCgpOwp9ICAgCgogUFJJbnRlcnZhbFRpbWUgICBQUl9NaWxsaXNlY29uZHNUb0ludGVydmFsKFBS
VWludDMyIG1pbGxpKQp7CiAgICBQUkludGVydmFsVGltZSB0aWNrczsKICAgIFBSVWludDY0IHRv
Y2ssIHRwcywgbXNlY1BlclNlYywgcm91bmRpbmc7CiAgICAoKCB0b2NrICkgPSAoUFJJbnQ2NCko
ICBtaWxsaSApKSA7CiAgICAoKCBtc2VjUGVyU2VjICkgPSAoUFJJbnQ2NCkoICAxMDAwVUwgICkp
IDsKICAgICgoIHJvdW5kaW5nICkgPSAoUFJJbnQ2NCkoICAoMTAwMFVMICA+PiAxKSApKSA7CiAg
ICAoKCB0cHMgKSA9IChQUkludDY0KSggIFBSX1RpY2tzUGVyU2Vjb25kKCkgKSkgOwogICAgKCgg
dG9jayApID0gKCAgdG9jayApICogKCAgdHBzICkpIDsKICAgICgoIHRvY2sgKSA9ICggIHRvY2sg
KSArICggIHJvdW5kaW5nICkpIDsKICAgICgoIHRvY2sgKSA9ICggIHRvY2sgKSAvICggIG1zZWNQ
ZXJTZWMgKSkgOwogICAgKCggdGlja3MgKSA9IChQUlVpbnQzMikoICB0b2NrICkpIDsKICAgIHJl
dHVybiB0aWNrczsKfSAgIAoKIFBSSW50ZXJ2YWxUaW1lICAgUFJfTWljcm9zZWNvbmRzVG9JbnRl
cnZhbChQUlVpbnQzMiBtaWNybykKewogICAgUFJJbnRlcnZhbFRpbWUgdGlja3M7CiAgICBQUlVp
bnQ2NCB0b2NrLCB0cHMsIHVzZWNQZXJTZWMsIHJvdW5kaW5nOwogICAgKCggdG9jayApID0gKFBS
SW50NjQpKCAgbWljcm8gKSkgOwogICAgKCggdXNlY1BlclNlYyApID0gKFBSSW50NjQpKCAgMTAw
MDAwMFVMICApKSA7CiAgICAoKCByb3VuZGluZyApID0gKFBSSW50NjQpKCAgKDEwMDAwMDBVTCAg
Pj4gMSkgKSkgOwogICAgKCggdHBzICkgPSAoUFJJbnQ2NCkoICBQUl9UaWNrc1BlclNlY29uZCgp
ICkpIDsKICAgICgoIHRvY2sgKSA9ICggIHRvY2sgKSAqICggIHRwcyApKSA7CiAgICAoKCB0b2Nr
ICkgPSAoICB0b2NrICkgKyAoICByb3VuZGluZyApKSA7CiAgICAoKCB0b2NrICkgPSAoICB0b2Nr
ICkgLyAoICB1c2VjUGVyU2VjICkpIDsKICAgICgoIHRpY2tzICkgPSAoUFJVaW50MzIpKCAgdG9j
ayApKSA7CiAgICByZXR1cm4gdGlja3M7Cn0gICAKCiBQUlVpbnQzMiAgIFBSX0ludGVydmFsVG9T
ZWNvbmRzKFBSSW50ZXJ2YWxUaW1lIHRpY2tzKQp7CiAgICByZXR1cm4gdGlja3MgLyBQUl9UaWNr
c1BlclNlY29uZCgpOwp9ICAgCgogUFJVaW50MzIgICBQUl9JbnRlcnZhbFRvTWlsbGlzZWNvbmRz
KFBSSW50ZXJ2YWxUaW1lIHRpY2tzKQp7CiAgICBQUlVpbnQzMiBtaWxsaTsKICAgIFBSVWludDY0
IHRvY2ssIHRwcywgbXNlY1BlclNlYywgcm91bmRpbmc7CiAgICAoKCB0b2NrICkgPSAoUFJJbnQ2
NCkoICB0aWNrcyApKSA7CiAgICAoKCBtc2VjUGVyU2VjICkgPSAoUFJJbnQ2NCkoICAxMDAwVUwg
ICkpIDsKICAgICgoIHRwcyApID0gKFBSSW50NjQpKCAgUFJfVGlja3NQZXJTZWNvbmQoKSApKSA7
CiAgICAoKCByb3VuZGluZyApID0gKFBSVWludDY0KSggIHRwcyApID4+ICggIDEgKSkgOwogICAg
KCggdG9jayApID0gKCAgdG9jayApICogKCAgbXNlY1BlclNlYyApKSA7CiAgICAoKCB0b2NrICkg
PSAoICB0b2NrICkgKyAoICByb3VuZGluZyApKSA7CiAgICAoKCB0b2NrICkgPSAoICB0b2NrICkg
LyAoICB0cHMgKSkgOwogICAgKCggbWlsbGkgKSA9IChQUlVpbnQzMikoICB0b2NrICkpIDsKICAg
IHJldHVybiBtaWxsaTsKfSAgIAoKIFBSVWludDMyICAgUFJfSW50ZXJ2YWxUb01pY3Jvc2Vjb25k
cyhQUkludGVydmFsVGltZSB0aWNrcykKewogICAgUFJVaW50MzIgbWljcm87CiAgICBQUlVpbnQ2
NCB0b2NrLCB0cHMsIHVzZWNQZXJTZWMsIHJvdW5kaW5nOwogICAgKCggdG9jayApID0gKFBSSW50
NjQpKCAgdGlja3MgKSkgOwogICAgKCggdXNlY1BlclNlYyApID0gKFBSSW50NjQpKCAgMTAwMDAw
MFVMICApKSA7CiAgICAoKCB0cHMgKSA9IChQUkludDY0KSggIFBSX1RpY2tzUGVyU2Vjb25kKCkg
KSkgOwogICAgKCggcm91bmRpbmcgKSA9IChQUlVpbnQ2NCkoICB0cHMgKSA+PiAoICAxICkpIDsK
ICAgICgoIHRvY2sgKSA9ICggIHRvY2sgKSAqICggIHVzZWNQZXJTZWMgKSkgOwogICAgKCggdG9j
ayApID0gKCAgdG9jayApICsgKCAgcm91bmRpbmcgKSkgOwogICAgKCggdG9jayApID0gKCAgdG9j
ayApIC8gKCAgdHBzICkpIDsKICAgICgoIG1pY3JvICkgPSAoUFJVaW50MzIpKCAgdG9jayApKSA7
CiAgICByZXR1cm4gbWljcm87Cn0gICAKCiAKCg==



More information about the Gcc-bugs mailing list