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


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

c++/3787: c++ causes SIGSEGV on compiling erroneous code



>Number:         3787
>Category:       c++
>Synopsis:       c++ causes SIGSEGV on compiling erroneous code
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    unassigned
>State:          open
>Class:          ice-on-illegal-code
>Submitter-Id:   net
>Arrival-Date:   Tue Jul 24 03:26:00 PDT 2001
>Closed-Date:
>Last-Modified:
>Originator:     Timo Frenay
>Release:        gcc version 2.96 20000731 (Red Hat Linux 7.0)
>Organization:
>Environment:

>Description:
Reading specs from /usr/lib/gcc-lib/i386-redhat-linux/2.96/specs
gcc version 2.96 20000731 (Red Hat Linux 7.0)
 /usr/lib/gcc-lib/i386-redhat-linux/2.96/cpp0 -lang-c++ -D__GNUG__=2 -v -D__GNUC__=2 -D__GNUC_MINOR__=96 -D__GNUC_PATCHLEVEL__=0 -D__ELF__ -Dunix -Dlinux -D__ELF__ -D__unix__ -D__linux__ -D__unix -D__linux -Asystem(posix) -Wall -Acpu(i386) -Amachine(i386) -Di386 -D__i386 -D__i386__ -D__tune_i386__ smsin.cpp smsin.ii
GNU CPP version 2.96 20000731 (Red Hat Linux 7.0) (cpplib)
 (i386 Linux/ELF)
ignoring nonexistent directory "/usr/i386-redhat-linux/include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/include/g++-3
 /usr/local/include
 /usr/lib/gcc-lib/i386-redhat-linux/2.96/include
 /usr/include
End of search list.
 /usr/lib/gcc-lib/i386-redhat-linux/2.96/cc1plus smsin.ii -quiet -dumpbase smsin.cpp -Wall -version -o smsin.s
GNU C++ version 2.96 20000731 (Red Hat Linux 7.0) (i386-redhat-linux) compiled by GNU C version 2.96 20000731 (Red Hat Linux 7.0).
 as -V -Qy -o smsin.o smsin.s
GNU assembler version 2.10.90 (i386-redhat-linux) using BFD version 2.10.0.18
 /usr/lib/gcc-lib/i386-redhat-linux/2.96/cpp0 -lang-c++ -D__GNUG__=2 -v -D__GNUC__=2 -D__GNUC_MINOR__=96 -D__GNUC_PATCHLEVEL__=0 -D__ELF__ -Dunix -Dlinux -D__ELF__ -D__unix__ -D__linux__ -D__unix -D__linux -Asystem(posix) -Wall -Acpu(i386) -Amachine(i386) -Di386 -D__i386 -D__i386__ -D__tune_i386__ parse.cpp parse.ii
GNU CPP version 2.96 20000731 (Red Hat Linux 7.0) (cpplib)
 (i386 Linux/ELF)
ignoring nonexistent directory "/usr/i386-redhat-linux/include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/include/g++-3
 /usr/local/include
 /usr/lib/gcc-lib/i386-redhat-linux/2.96/include
 /usr/include
End of search list.
 /usr/lib/gcc-lib/i386-redhat-linux/2.96/cc1plus parse.ii -quiet -dumpbase parse.cpp -Wall -version -o parse.s
GNU C++ version 2.96 20000731 (Red Hat Linux 7.0) (i386-redhat-linux) compiled by GNU C version 2.96 20000731 (Red Hat Linux 7.0).
parse.cpp: In function `void parse_command (const STR *, rc_file *)':
parse.cpp:199: parse error before `{'
parse.cpp:204: invalid types `rc_cmd[8][char *() (const char *, int) 
throw ()]' for array subscript
parse.cpp:148: warning: unused variable `STR *s_lf'
parse.cpp:199: Internal error: Segmentation fault.
Please submit a full bug report.
See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions.
>How-To-Repeat:

>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/x-tar; name="precompiled.tar"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="precompiled.tar"

cGFyc2UuaWkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAxMDA2NDQAMDAwMTAw
NwAwMDAwMDU1ADAwMDAwMTIxNzU0ADA3MzI3MjQxNzIzADAxMjEzNwAgMAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAHRpbW8AAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAcG9wdXNlcnMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAj
IDEgInBhcnNlLmNwcCIKCgoKCgoKCiMgOCAicGFyc2UuaCIgMQojIDI3ICIvdXNyL2luY2x1ZGUv
Y3R5cGUuaCIgMSAzCiMgMjgzICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMzExICIv
dXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMwojIDI3ICIvdXNyL2luY2x1ZGUvY3R5cGUuaCIgMiAz
CgojIDMwICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAxIDMKIyAxOTkgIi91c3IvbGliL2dj
Yy1saWIvaTM4Ni1yZWRoYXQtbGludXgvMi45Ni9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKdHlwZWRl
ZiB1bnNpZ25lZCBpbnQgc2l6ZV90OwojIDMwICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAy
IDMKCgp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgX191X2NoYXI7CnR5cGVkZWYgdW5zaWduZWQgc2hv
cnQgX191X3Nob3J0Owp0eXBlZGVmIHVuc2lnbmVkIGludCBfX3VfaW50Owp0eXBlZGVmIHVuc2ln
bmVkIGxvbmcgX191X2xvbmc7CgpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBs
b25nIGludCBfX3VfcXVhZF90OwpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgbG9uZyBsb25nIGludCBf
X3F1YWRfdDsKIyA0OSAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMwp0eXBlZGVmIHNpZ25l
ZCBjaGFyIF9faW50OF90Owp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgX191aW50OF90Owp0eXBlZGVm
IHNpZ25lZCBzaG9ydCBpbnQgX19pbnQxNl90Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGludCBf
X3VpbnQxNl90Owp0eXBlZGVmIHNpZ25lZCBpbnQgX19pbnQzMl90Owp0eXBlZGVmIHVuc2lnbmVk
IGludCBfX3VpbnQzMl90OwoKX19leHRlbnNpb25fXyB0eXBlZGVmIHNpZ25lZCBsb25nIGxvbmcg
aW50IF9faW50NjRfdDsKX19leHRlbnNpb25fXyB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBp
bnQgX191aW50NjRfdDsKCnR5cGVkZWYgX19xdWFkX3QgKl9fcWFkZHJfdDsKCnR5cGVkZWYgX191
X3F1YWRfdCBfX2Rldl90Owp0eXBlZGVmIF9fdV9pbnQgX191aWRfdDsKdHlwZWRlZiBfX3VfaW50
IF9fZ2lkX3Q7CnR5cGVkZWYgX191X2xvbmcgX19pbm9fdDsKdHlwZWRlZiBfX3VfaW50IF9fbW9k
ZV90Owp0eXBlZGVmIF9fdV9pbnQgX19ubGlua190Owp0eXBlZGVmIGxvbmcgaW50IF9fb2ZmX3Q7
CnR5cGVkZWYgX19xdWFkX3QgX19sb2ZmX3Q7CnR5cGVkZWYgaW50IF9fcGlkX3Q7CnR5cGVkZWYg
aW50IF9fc3NpemVfdDsKdHlwZWRlZiBfX3VfbG9uZyBfX3JsaW1fdDsKdHlwZWRlZiBfX3VfcXVh
ZF90IF9fcmxpbTY0X3Q7CnR5cGVkZWYgX191X2ludCBfX2lkX3Q7Cgp0eXBlZGVmIHN0cnVjdAog
IHsKICAgIGludCBfX3ZhbFsyXTsKICB9IF9fZnNpZF90OwoKCnR5cGVkZWYgaW50IF9fZGFkZHJf
dDsKdHlwZWRlZiBjaGFyICpfX2NhZGRyX3Q7CnR5cGVkZWYgbG9uZyBpbnQgX190aW1lX3Q7CnR5
cGVkZWYgdW5zaWduZWQgaW50IF9fdXNlY29uZHNfdDsKdHlwZWRlZiBsb25nIGludCBfX3N1c2Vj
b25kc190Owp0eXBlZGVmIGxvbmcgaW50IF9fc3dibGtfdDsKCnR5cGVkZWYgbG9uZyBpbnQgX19j
bG9ja190OwoKCnR5cGVkZWYgaW50IF9fY2xvY2tpZF90OwoKCnR5cGVkZWYgaW50IF9fdGltZXJf
dDsKCgoKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGludCBfX2ZkX21hc2s7CgoKIyAxMDkgIi91c3Iv
aW5jbHVkZS9iaXRzL3R5cGVzLmgiIDMKdHlwZWRlZiBzdHJ1Y3QKICB7CgoKCgoKCiAgICBfX2Zk
X21hc2sgX19mZHNfYml0c1sxMDI0IC8gKDggKiBzaXplb2YgKF9fZmRfbWFzaykpXTsKCgogIH0g
X19mZF9zZXQ7CgoKdHlwZWRlZiBpbnQgX19rZXlfdDsKCgp0eXBlZGVmIHVuc2lnbmVkIHNob3J0
IGludCBfX2lwY19waWRfdDsKCgoKdHlwZWRlZiBsb25nIGludCBfX2Jsa3NpemVfdDsKCgoKCnR5
cGVkZWYgbG9uZyBpbnQgX19ibGtjbnRfdDsKdHlwZWRlZiBfX3F1YWRfdCBfX2Jsa2NudDY0X3Q7
CgoKdHlwZWRlZiBfX3VfbG9uZyBfX2ZzYmxrY250X3Q7CnR5cGVkZWYgX191X3F1YWRfdCBfX2Zz
YmxrY250NjRfdDsKCgp0eXBlZGVmIF9fdV9sb25nIF9fZnNmaWxjbnRfdDsKdHlwZWRlZiBfX3Vf
cXVhZF90IF9fZnNmaWxjbnQ2NF90OwoKCnR5cGVkZWYgX191X3F1YWRfdCBfX2lubzY0X3Q7CgoK
dHlwZWRlZiBfX2xvZmZfdCBfX29mZjY0X3Q7CgoKdHlwZWRlZiBsb25nIGludCBfX3Rfc2NhbGFy
X3Q7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQgX190X3VzY2FsYXJfdDsKCgp0eXBlZGVmIGlu
dCBfX2ludHB0cl90OwoKCnR5cGVkZWYgdW5zaWduZWQgaW50IF9fc29ja2xlbl90OwoKCgoKCiMg
MjQgIi91c3IvaW5jbHVkZS9iaXRzL3B0aHJlYWR0eXBlcy5oIiAxIDMKIyA2OCAiL3Vzci9pbmNs
dWRlL2JpdHMvc2NoZWQuaCIgMSAzCnN0cnVjdCBfX3NjaGVkX3BhcmFtCiAgewogICAgaW50IHNj
aGVkX3ByaW9yaXR5OwogIH07CiMgMjQgIi91c3IvaW5jbHVkZS9iaXRzL3B0aHJlYWR0eXBlcy5o
IiAyIDMKCgpzdHJ1Y3QgX3B0aHJlYWRfZmFzdGxvY2sKewogIGxvbmcgaW50IF9fc3RhdHVzOwog
IGludCBfX3NwaW5sb2NrOwoKfTsKCgoKdHlwZWRlZiBzdHJ1Y3QgX3B0aHJlYWRfZGVzY3Jfc3Ry
dWN0ICpfcHRocmVhZF9kZXNjcjsKCgoKCgp0eXBlZGVmIHN0cnVjdAp7CiAgaW50IF9fZGV0YWNo
c3RhdGU7CiAgaW50IF9fc2NoZWRwb2xpY3k7CiAgc3RydWN0IF9fc2NoZWRfcGFyYW0gX19zY2hl
ZHBhcmFtOwogIGludCBfX2luaGVyaXRzY2hlZDsKICBpbnQgX19zY29wZTsKICBzaXplX3QgX19n
dWFyZHNpemU7CiAgaW50IF9fc3RhY2thZGRyX3NldDsKICB2b2lkICpfX3N0YWNrYWRkcjsKICBz
aXplX3QgX19zdGFja3NpemU7Cn0gcHRocmVhZF9hdHRyX3Q7CgoKCnR5cGVkZWYgc3RydWN0CnsK
ICBzdHJ1Y3QgX3B0aHJlYWRfZmFzdGxvY2sgX19jX2xvY2s7CiAgX3B0aHJlYWRfZGVzY3IgX19j
X3dhaXRpbmc7Cn0gcHRocmVhZF9jb25kX3Q7CgoKCnR5cGVkZWYgc3RydWN0CnsKICBpbnQgX19k
dW1teTsKfSBwdGhyZWFkX2NvbmRhdHRyX3Q7CgoKdHlwZWRlZiB1bnNpZ25lZCBpbnQgcHRocmVh
ZF9rZXlfdDsKCgoKCgp0eXBlZGVmIHN0cnVjdAp7CiAgaW50IF9fbV9yZXNlcnZlZDsKICBpbnQg
X19tX2NvdW50OwogIF9wdGhyZWFkX2Rlc2NyIF9fbV9vd25lcjsKICBpbnQgX19tX2tpbmQ7CiAg
c3RydWN0IF9wdGhyZWFkX2Zhc3Rsb2NrIF9fbV9sb2NrOwp9IHB0aHJlYWRfbXV0ZXhfdDsKCgoK
dHlwZWRlZiBzdHJ1Y3QKewogIGludCBfX211dGV4a2luZDsKfSBwdGhyZWFkX211dGV4YXR0cl90
OwoKCgp0eXBlZGVmIGludCBwdGhyZWFkX29uY2VfdDsKCgojIDE0MCAiL3Vzci9pbmNsdWRlL2Jp
dHMvcHRocmVhZHR5cGVzLmgiIDMKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGludCBwdGhyZWFkX3Q7
CgojIDE2NiAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMiAzCiMgMjggIi91c3IvaW5jbHVk
ZS9jdHlwZS5oIiAyIDMKCmV4dGVybiAiQyIgewoKIyA0MSAiL3Vzci9pbmNsdWRlL2N0eXBlLmgi
IDMKIyAzOCAiL3Vzci9pbmNsdWRlL2VuZGlhbi5oIiAxIDMKIyA0MSAiL3Vzci9pbmNsdWRlL2N0
eXBlLmgiIDIgMwoKCgoKCgplbnVtCnsKICBfSVN1cHBlciA9ICgoMCkgPCA4ID8gKCgxIDw8ICgw
KSkgPDwgOCkgOiAoKDEgPDwgKDApKSA+PiA4KSksCiAgX0lTbG93ZXIgPSAoKDEpIDwgOCA/ICgo
MSA8PCAoMSkpIDw8IDgpIDogKCgxIDw8ICgxKSkgPj4gOCkpLAogIF9JU2FscGhhID0gKCgyKSA8
IDggPyAoKDEgPDwgKDIpKSA8PCA4KSA6ICgoMSA8PCAoMikpID4+IDgpKSwKICBfSVNkaWdpdCA9
ICgoMykgPCA4ID8gKCgxIDw8ICgzKSkgPDwgOCkgOiAoKDEgPDwgKDMpKSA+PiA4KSksCiAgX0lT
eGRpZ2l0ID0gKCg0KSA8IDggPyAoKDEgPDwgKDQpKSA8PCA4KSA6ICgoMSA8PCAoNCkpID4+IDgp
KSwKICBfSVNzcGFjZSA9ICgoNSkgPCA4ID8gKCgxIDw8ICg1KSkgPDwgOCkgOiAoKDEgPDwgKDUp
KSA+PiA4KSksCiAgX0lTcHJpbnQgPSAoKDYpIDwgOCA/ICgoMSA8PCAoNikpIDw8IDgpIDogKCgx
IDw8ICg2KSkgPj4gOCkpLAogIF9JU2dyYXBoID0gKCg3KSA8IDggPyAoKDEgPDwgKDcpKSA8PCA4
KSA6ICgoMSA8PCAoNykpID4+IDgpKSwKICBfSVNibGFuayA9ICgoOCkgPCA4ID8gKCgxIDw8ICg4
KSkgPDwgOCkgOiAoKDEgPDwgKDgpKSA+PiA4KSksCiAgX0lTY250cmwgPSAoKDkpIDwgOCA/ICgo
MSA8PCAoOSkpIDw8IDgpIDogKCgxIDw8ICg5KSkgPj4gOCkpLAogIF9JU3B1bmN0ID0gKCgxMCkg
PCA4ID8gKCgxIDw8ICgxMCkpIDw8IDgpIDogKCgxIDw8ICgxMCkpID4+IDgpKSwKICBfSVNhbG51
bSA9ICgoMTEpIDwgOCA/ICgoMSA8PCAoMTEpKSA8PCA4KSA6ICgoMSA8PCAoMTEpKSA+PiA4KSkK
fTsKIyA3NSAiL3Vzci9pbmNsdWRlL2N0eXBlLmgiIDMKZXh0ZXJuIF9fY29uc3QgdW5zaWduZWQg
c2hvcnQgaW50ICpfX2N0eXBlX2I7CmV4dGVybiBfX2NvbnN0IF9faW50MzJfdCAqX19jdHlwZV90
b2xvd2VyOwpleHRlcm4gX19jb25zdCBfX2ludDMyX3QgKl9fY3R5cGVfdG91cHBlcjsKCiMgOTEg
Ii91c3IvaW5jbHVkZS9jdHlwZS5oIiAzCmV4dGVybiBpbnQgaXNhbG51bSAoaW50KSB0aHJvdyAo
KTsKZXh0ZXJuIGludCBpc2FscGhhIChpbnQpIHRocm93ICgpOwpleHRlcm4gaW50IGlzY250cmwg
KGludCkgdGhyb3cgKCk7CmV4dGVybiBpbnQgaXNkaWdpdCAoaW50KSB0aHJvdyAoKTsKZXh0ZXJu
IGludCBpc2xvd2VyIChpbnQpIHRocm93ICgpOwpleHRlcm4gaW50IGlzZ3JhcGggKGludCkgdGhy
b3cgKCk7CmV4dGVybiBpbnQgaXNwcmludCAoaW50KSB0aHJvdyAoKTsKZXh0ZXJuIGludCBpc3B1
bmN0IChpbnQpIHRocm93ICgpOwpleHRlcm4gaW50IGlzc3BhY2UgKGludCkgdGhyb3cgKCk7CmV4
dGVybiBpbnQgaXN1cHBlciAoaW50KSB0aHJvdyAoKTsKZXh0ZXJuIGludCBpc3hkaWdpdCAoaW50
KSB0aHJvdyAoKTsKCgoKCgoKCmV4dGVybiBpbnQgdG9sb3dlciAoaW50IF9fYykgdGhyb3cgKCk7
CgoKZXh0ZXJuIGludCB0b3VwcGVyIChpbnQgX19jKSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGlu
dCBpc2FzY2lpIChpbnQgX19jKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCB0b2FzY2lpIChpbnQg
X19jKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCBfdG91cHBlciAoaW50KSB0aHJvdyAoKTsKZXh0
ZXJuIGludCBfdG9sb3dlciAoaW50KSB0aHJvdyAoKTsKIyAyNzcgIi91c3IvaW5jbHVkZS9jdHlw
ZS5oIiAzCn0KCiMgOCAicGFyc2UuaCIgMgoKIyAzOCAiL3Vzci9pbmNsdWRlL2dldG9wdC5oIiAx
IDMKZXh0ZXJuICJDIiB7CiMgNDcgIi91c3IvaW5jbHVkZS9nZXRvcHQuaCIgMwpleHRlcm4gY2hh
ciAqb3B0YXJnOwojIDYxICIvdXNyL2luY2x1ZGUvZ2V0b3B0LmgiIDMKZXh0ZXJuIGludCBvcHRp
bmQ7CgoKCgpleHRlcm4gaW50IG9wdGVycjsKCgoKZXh0ZXJuIGludCBvcHRvcHQ7CgojIDk0ICIv
dXNyL2luY2x1ZGUvZ2V0b3B0LmgiIDMKc3RydWN0IG9wdGlvbgp7CgogIGNvbnN0IGNoYXIgKm5h
bWU7CgoKCgoKICBpbnQgaGFzX2FyZzsKICBpbnQgKmZsYWc7CiAgaW50IHZhbDsKfTsKCgoKIyAx
NDUgIi91c3IvaW5jbHVkZS9nZXRvcHQuaCIgMwpleHRlcm4gaW50IGdldG9wdCAoaW50IF9fYXJn
YywgY2hhciAqY29uc3QgKl9fYXJndiwgY29uc3QgY2hhciAqX19zaG9ydG9wdHMpOwoKCgoKCmV4
dGVybiBpbnQgZ2V0b3B0X2xvbmcgKGludCBfX2FyZ2MsIGNoYXIgKmNvbnN0ICpfX2FyZ3YsIGNv
bnN0IGNoYXIgKl9fc2hvcnRvcHRzLAogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1
Y3Qgb3B0aW9uICpfX2xvbmdvcHRzLCBpbnQgKl9fbG9uZ2luZCk7CmV4dGVybiBpbnQgZ2V0b3B0
X2xvbmdfb25seSAoaW50IF9fYXJnYywgY2hhciAqY29uc3QgKl9fYXJndiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpfX3Nob3J0b3B0cywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3Qgb3B0aW9uICpfX2xvbmdvcHRzLCBpbnQgKl9fbG9u
Z2luZCk7CgoKZXh0ZXJuIGludCBfZ2V0b3B0X2ludGVybmFsIChpbnQgX19hcmdjLCBjaGFyICpj
b25zdCAqX19hcmd2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKl9f
c2hvcnRvcHRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBvcHRp
b24gKl9fbG9uZ29wdHMsIGludCAqX19sb25naW5kLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCBfX2xvbmdfb25seSk7CiMgMTc0ICIvdXNyL2luY2x1ZGUvZ2V0b3B0LmgiIDMKfQoj
IDkgInBhcnNlLmgiIDIKCiMgMjkgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAxIDMKZXh0ZXJuICJD
IiB7CgoKCgoKCgoKCiMgNDMgIi91c3IvbGliL2djYy1saWIvaTM4Ni1yZWRoYXQtbGludXgvMi45
Ni9pbmNsdWRlL3N0ZGFyZy5oIiAxIDMKdHlwZWRlZiBfX2J1aWx0aW5fdmFfbGlzdCBfX2dudWNf
dmFfbGlzdDsKIyAzOSAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDIgMwojIDQ4ICIvdXNyL2luY2x1
ZGUvc3RkaW8uaCIgMwp0eXBlZGVmIHN0cnVjdCBfSU9fRklMRSBGSUxFOwoKIyA1OCAiL3Vzci9p
bmNsdWRlL3N0ZGlvLmgiIDMKIyAzMSAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDEgMwojIDE1ICIv
dXNyL2luY2x1ZGUvX0dfY29uZmlnLmgiIDEgMwojIDMxMiAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2
LXJlZGhhdC1saW51eC8yLjk2L2luY2x1ZGUvc3RkZGVmLmgiIDEgMwp0eXBlZGVmIHVuc2lnbmVk
IGludCB3aW50X3Q7CiMgMTUgIi91c3IvaW5jbHVkZS9fR19jb25maWcuaCIgMiAzCiMgMjUgIi91
c3IvaW5jbHVkZS9fR19jb25maWcuaCIgMwojIDQ2ICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMSAz
CiMgNjIgIi91c3IvaW5jbHVkZS93Y2hhci5oIiAzCnR5cGVkZWYgc3RydWN0CnsKICBpbnQgX19j
b3VudDsKICB1bmlvbgogIHsKICAgIHdpbnRfdCBfX3djaDsKICAgIGNoYXIgX193Y2hiWzRdOwog
IH0gX192YWx1ZTsKfSBfX21ic3RhdGVfdDsKIyAyNSAiL3Vzci9pbmNsdWRlL19HX2NvbmZpZy5o
IiAyIDMKCnR5cGVkZWYgc3RydWN0CnsKICBfX29mZl90IF9fcG9zOwogIF9fbWJzdGF0ZV90IF9f
c3RhdGU7Cn0gX0dfZnBvc190Owp0eXBlZGVmIHN0cnVjdAp7CiAgX19vZmY2NF90IF9fcG9zOwog
IF9fbWJzdGF0ZV90IF9fc3RhdGU7Cn0gX0dfZnBvczY0X3Q7CiMgNDUgIi91c3IvaW5jbHVkZS9f
R19jb25maWcuaCIgMwojIDI5ICIvdXNyL2luY2x1ZGUvZ2NvbnYuaCIgMSAzCiMgNDYgIi91c3Iv
aW5jbHVkZS93Y2hhci5oIiAxIDMKIyAyOSAiL3Vzci9pbmNsdWRlL2djb252LmgiIDIgMwoKCgoK
CgoKZW51bQp7CiAgX19HQ09OVl9PSyA9IDAsCiAgX19HQ09OVl9OT0NPTlYsCiAgX19HQ09OVl9O
T0RCLAogIF9fR0NPTlZfTk9NRU0sCgogIF9fR0NPTlZfRU1QVFlfSU5QVVQsCiAgX19HQ09OVl9G
VUxMX09VVFBVVCwKICBfX0dDT05WX0lMTEVHQUxfSU5QVVQsCiAgX19HQ09OVl9JTkNPTVBMRVRF
X0lOUFVULAoKICBfX0dDT05WX0lMTEVHQUxfREVTQ1JJUFRPUiwKICBfX0dDT05WX0lOVEVSTkFM
X0VSUk9SCn07CgoKCmVudW0KewogIF9fR0NPTlZfSVNfTEFTVCA9IDB4MDAwMSwKICBfX0dDT05W
X0lHTk9SRV9FUlJPUlMgPSAweDAwMDIKfTsKCgoKc3RydWN0IF9fZ2NvbnZfc3RlcDsKc3RydWN0
IF9fZ2NvbnZfc3RlcF9kYXRhOwpzdHJ1Y3QgX19nY29udl9sb2FkZWRfb2JqZWN0OwpzdHJ1Y3Qg
X19nY29udl90cmFuc19kYXRhOwoKCgp0eXBlZGVmIGludCAoKl9fZ2NvbnZfZmN0KSAoc3RydWN0
IF9fZ2NvbnZfc3RlcCAqLCBzdHJ1Y3QgX19nY29udl9zdGVwX2RhdGEgKiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF9fY29uc3QgdW5zaWduZWQgY2hhciAqKiwgX19jb25zdCB1bnNpZ25l
ZCBjaGFyICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICoqLCBz
aXplX3QgKiwgaW50LCBpbnQpOwoKCnR5cGVkZWYgaW50ICgqX19nY29udl9pbml0X2ZjdCkgKHN0
cnVjdCBfX2djb252X3N0ZXAgKik7CnR5cGVkZWYgdm9pZCAoKl9fZ2NvbnZfZW5kX2ZjdCkgKHN0
cnVjdCBfX2djb252X3N0ZXAgKik7CgoKCnR5cGVkZWYgaW50ICgqX19nY29udl90cmFuc19mY3Qp
IChzdHJ1Y3QgX19nY29udl9zdGVwICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdHJ1Y3QgX19nY29udl9zdGVwX2RhdGEgKiwgdm9pZCAqLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgX19jb25zdCB1bnNpZ25lZCBjaGFyICosCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKiosCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKiwgdW5zaWduZWQgY2hh
ciAqKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqKTsKCgp0eXBl
ZGVmIGludCAoKl9fZ2NvbnZfdHJhbnNfY29udGV4dF9mY3QpIChzdHJ1Y3QgX19nY29udl90cmFu
c19kYXRhICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29u
c3QgdW5zaWduZWQgY2hhciAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqLCB1bnNpZ25lZCBjaGFyICopOwoKCnR5cGVk
ZWYgaW50ICgqX19nY29udl90cmFuc19xdWVyeV9mY3QpIChfX2NvbnN0IGNoYXIgKiwgX19jb25z
dCBjaGFyICoqKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCAqKTsKCgp0eXBlZGVmIGludCAoKl9fZ2NvbnZfdHJhbnNfaW5pdF9mY3QpICh2b2lkICoqLCBj
b25zdCBjaGFyICopOwp0eXBlZGVmIHZvaWQgKCpfX2djb252X3RyYW5zX2VuZF9mY3QpICh2b2lk
ICopOwoKc3RydWN0IF9fZ2NvbnZfdHJhbnNfZGF0YQp7CgogIF9fZ2NvbnZfdHJhbnNfZmN0IF9f
dHJhbnNfZmN0OwogIF9fZ2NvbnZfdHJhbnNfY29udGV4dF9mY3QgX190cmFuc19jb250ZXh0X2Zj
dDsKICBfX2djb252X3RyYW5zX2VuZF9mY3QgX190cmFuc19lbmRfZmN0OwogIHZvaWQgKl9fZGF0
YTsKICBzdHJ1Y3QgX19nY29udl90cmFuc19kYXRhICpfX25leHQ7Cn07CgoKCnN0cnVjdCBfX2dj
b252X3N0ZXAKewogIHN0cnVjdCBfX2djb252X2xvYWRlZF9vYmplY3QgKl9fc2hsaWJfaGFuZGxl
OwogIF9fY29uc3QgY2hhciAqX19tb2RuYW1lOwoKICBpbnQgX19jb3VudGVyOwoKICBfX2NvbnN0
IGNoYXIgKl9fZnJvbV9uYW1lOwogIF9fY29uc3QgY2hhciAqX190b19uYW1lOwoKICBfX2djb252
X2ZjdCBfX2ZjdDsKICBfX2djb252X2luaXRfZmN0IF9faW5pdF9mY3Q7CiAgX19nY29udl9lbmRf
ZmN0IF9fZW5kX2ZjdDsKCgoKICBpbnQgX19taW5fbmVlZGVkX2Zyb207CiAgaW50IF9fbWF4X25l
ZWRlZF9mcm9tOwogIGludCBfX21pbl9uZWVkZWRfdG87CiAgaW50IF9fbWF4X25lZWRlZF90bzsK
CgogIGludCBfX3N0YXRlZnVsOwoKICB2b2lkICpfX2RhdGE7Cn07CgoKCnN0cnVjdCBfX2djb252
X3N0ZXBfZGF0YQp7CiAgdW5zaWduZWQgY2hhciAqX19vdXRidWY7CiAgdW5zaWduZWQgY2hhciAq
X19vdXRidWZlbmQ7CgoKCiAgaW50IF9fZmxhZ3M7CgoKCiAgaW50IF9faW52b2NhdGlvbl9jb3Vu
dGVyOwoKCgogIGludCBfX2ludGVybmFsX3VzZTsKCiAgX19tYnN0YXRlX3QgKl9fc3RhdGVwOwog
IF9fbWJzdGF0ZV90IF9fc3RhdGU7CgoKCiAgc3RydWN0IF9fZ2NvbnZfdHJhbnNfZGF0YSAqX190
cmFuczsKfTsKCgoKdHlwZWRlZiBzdHJ1Y3QgX19nY29udl9pbmZvCnsKICBzaXplX3QgX19uc3Rl
cHM7CiAgc3RydWN0IF9fZ2NvbnZfc3RlcCAqX19zdGVwczsKICBfX2V4dGVuc2lvbl9fIHN0cnVj
dCBfX2djb252X3N0ZXBfZGF0YSBfX2RhdGFbMF07Cn0gKl9fZ2NvbnZfdDsKCiMgNDUgIi91c3Iv
aW5jbHVkZS9fR19jb25maWcuaCIgMiAzCnR5cGVkZWYgdW5pb24KewogIHN0cnVjdCBfX2djb252
X2luZm8gX19jZDsKICBzdHJ1Y3QKICB7CiAgICBzdHJ1Y3QgX19nY29udl9pbmZvIF9fY2Q7CiAg
ICBzdHJ1Y3QgX19nY29udl9zdGVwX2RhdGEgX19kYXRhOwogIH0gX19jb21iaW5lZDsKfSBfR19p
Y29udl90OwoKdHlwZWRlZiBpbnQgX0dfaW50MTZfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18g
KF9fSElfXykpKTsKdHlwZWRlZiBpbnQgX0dfaW50MzJfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2Rl
X18gKF9fU0lfXykpKTsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX0dfdWludDE2X3QgX19hdHRyaWJ1
dGVfXyAoKF9fbW9kZV9fIChfX0hJX18pKSk7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9HX3VpbnQz
Ml90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19TSV9fKSkpOwoKIyAzMSAiL3Vzci9pbmNs
dWRlL2xpYmlvLmgiIDIgMwojIDUyICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwojIDE1NyAiL3Vz
ci9pbmNsdWRlL2xpYmlvLmgiIDMKc3RydWN0IF9JT19qdW1wX3Q7IHN0cnVjdCBfSU9fRklMRTsK
CgoKCgoKCgoKdHlwZWRlZiB2b2lkIF9JT19sb2NrX3Q7CgoKCgoKc3RydWN0IF9JT19tYXJrZXIg
ewogIHN0cnVjdCBfSU9fbWFya2VyICpfbmV4dDsKICBzdHJ1Y3QgX0lPX0ZJTEUgKl9zYnVmOwoK
CgogIGludCBfcG9zOwojIDE5MCAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKfTsKCgplbnVtIF9f
Y29kZWN2dF9yZXN1bHQKewogIF9fY29kZWN2dF9vaywKICBfX2NvZGVjdnRfcGFydGlhbCwKICBf
X2NvZGVjdnRfZXJyb3IsCiAgX19jb2RlY3Z0X25vY29udgp9OwoKIyAyNjIgIi91c3IvaW5jbHVk
ZS9saWJpby5oIiAzCnN0cnVjdCBfSU9fRklMRSB7CiAgaW50IF9mbGFnczsKCgoKCiAgY2hhciog
X0lPX3JlYWRfcHRyOwogIGNoYXIqIF9JT19yZWFkX2VuZDsKICBjaGFyKiBfSU9fcmVhZF9iYXNl
OwogIGNoYXIqIF9JT193cml0ZV9iYXNlOwogIGNoYXIqIF9JT193cml0ZV9wdHI7CiAgY2hhciog
X0lPX3dyaXRlX2VuZDsKICBjaGFyKiBfSU9fYnVmX2Jhc2U7CiAgY2hhciogX0lPX2J1Zl9lbmQ7
CgogIGNoYXIgKl9JT19zYXZlX2Jhc2U7CiAgY2hhciAqX0lPX2JhY2t1cF9iYXNlOwogIGNoYXIg
Kl9JT19zYXZlX2VuZDsKCiAgc3RydWN0IF9JT19tYXJrZXIgKl9tYXJrZXJzOwoKICBzdHJ1Y3Qg
X0lPX0ZJTEUgKl9jaGFpbjsKCiAgaW50IF9maWxlbm87CiAgaW50IF9ibGtzaXplOwogIF9fb2Zm
X3QgX29sZF9vZmZzZXQ7CgoKCiAgdW5zaWduZWQgc2hvcnQgX2N1cl9jb2x1bW47CiAgc2lnbmVk
IGNoYXIgX3Z0YWJsZV9vZmZzZXQ7CiAgY2hhciBfc2hvcnRidWZbMV07CgoKCiAgX0lPX2xvY2tf
dCAqX2xvY2s7CiMgMzA2ICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwogIF9fb2ZmNjRfdCBfb2Zm
c2V0OwoKCgoKCiAgdm9pZCAqX19wYWQxOwogIHZvaWQgKl9fcGFkMjsKCiAgaW50IF9tb2RlOwoK
ICBjaGFyIF91bnVzZWQyWzE1ICogc2l6ZW9mIChpbnQpIC0gMiAqIHNpemVvZiAodm9pZCAqKV07
Cgp9OwoKCgoKCnN0cnVjdCBfSU9fRklMRV9wbHVzOwoKZXh0ZXJuIHN0cnVjdCBfSU9fRklMRV9w
bHVzIF9JT18yXzFfc3RkaW5fOwpleHRlcm4gc3RydWN0IF9JT19GSUxFX3BsdXMgX0lPXzJfMV9z
dGRvdXRfOwpleHRlcm4gc3RydWN0IF9JT19GSUxFX3BsdXMgX0lPXzJfMV9zdGRlcnJfOwojIDM0
NSAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKdHlwZWRlZiBfX3NzaXplX3QgX19pb19yZWFkX2Zu
ICh2b2lkICpfX2Nvb2tpZSwgY2hhciAqX19idWYsIHNpemVfdCBfX25ieXRlcyk7CgoKCgoKCgp0
eXBlZGVmIF9fc3NpemVfdCBfX2lvX3dyaXRlX2ZuICh2b2lkICpfX2Nvb2tpZSwgX19jb25zdCBj
aGFyICpfX2J1ZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbik7
CgoKCgoKCgp0eXBlZGVmIGludCBfX2lvX3NlZWtfZm4gKHZvaWQgKl9fY29va2llLCBfX29mZjY0
X3QgKl9fcG9zLCBpbnQgX193KTsKCgp0eXBlZGVmIGludCBfX2lvX2Nsb3NlX2ZuICh2b2lkICpf
X2Nvb2tpZSk7CgoKIyAzOTQgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCmV4dGVybiAiQyIgewoK
CmV4dGVybiBpbnQgX191bmRlcmZsb3cgKF9JT19GSUxFICopIHRocm93ICgpOwpleHRlcm4gaW50
IF9fdWZsb3cgKF9JT19GSUxFICopIHRocm93ICgpOwpleHRlcm4gaW50IF9fb3ZlcmZsb3cgKF9J
T19GSUxFICosIGludCkgdGhyb3cgKCk7CmV4dGVybiB3aW50X3QgX193dW5kZXJmbG93IChfSU9f
RklMRSAqKSB0aHJvdyAoKTsKZXh0ZXJuIHdpbnRfdCBfX3d1ZmxvdyAoX0lPX0ZJTEUgKikgdGhy
b3cgKCk7CmV4dGVybiB3aW50X3QgX193b3ZlcmZsb3cgKF9JT19GSUxFICosIHdpbnRfdCkgdGhy
b3cgKCk7CgojIDQyNyAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKZXh0ZXJuIGludCBfSU9fZ2V0
YyAoX0lPX0ZJTEUgKl9fZnApIHRocm93ICgpOwpleHRlcm4gaW50IF9JT19wdXRjIChpbnQgX19j
LCBfSU9fRklMRSAqX19mcCkgdGhyb3cgKCk7CmV4dGVybiBpbnQgX0lPX2Zlb2YgKF9JT19GSUxF
ICpfX2ZwKSB0aHJvdyAoKTsKZXh0ZXJuIGludCBfSU9fZmVycm9yIChfSU9fRklMRSAqX19mcCkg
dGhyb3cgKCk7CgpleHRlcm4gaW50IF9JT19wZWVrY19sb2NrZWQgKF9JT19GSUxFICpfX2ZwKSB0
aHJvdyAoKTsKCgoKCgpleHRlcm4gdm9pZCBfSU9fZmxvY2tmaWxlIChfSU9fRklMRSAqKSB0aHJv
dyAoKTsKZXh0ZXJuIHZvaWQgX0lPX2Z1bmxvY2tmaWxlIChfSU9fRklMRSAqKSB0aHJvdyAoKTsK
ZXh0ZXJuIGludCBfSU9fZnRyeWxvY2tmaWxlIChfSU9fRklMRSAqKSB0aHJvdyAoKTsKCiMgNDUz
ICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwpleHRlcm4gaW50IF9JT192ZnNjYW5mIChfSU9fRklM
RSAqIF9fcmVzdHJpY3QsIGNvbnN0IGNoYXIgKiBfX3Jlc3RyaWN0LAogICAgICAgICAgICAgICAg
ICAgICAgICBfX2dudWNfdmFfbGlzdCwgaW50ICpfX3Jlc3RyaWN0KSB0aHJvdyAoKTsKZXh0ZXJu
IGludCBfSU9fdmZwcmludGYgKF9JT19GSUxFICpfX3Jlc3RyaWN0LCBjb25zdCBjaGFyICpfX3Jl
c3RyaWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgX19nbnVjX3ZhX2xpc3QpIHRocm93ICgp
OwpleHRlcm4gX19zc2l6ZV90IF9JT19wYWRuIChfSU9fRklMRSAqLCBpbnQsIF9fc3NpemVfdCkg
dGhyb3cgKCk7CmV4dGVybiBzaXplX3QgX0lPX3NnZXRuIChfSU9fRklMRSAqLCB2b2lkICosIHNp
emVfdCkgdGhyb3cgKCk7CgpleHRlcm4gX19vZmY2NF90IF9JT19zZWVrb2ZmIChfSU9fRklMRSAq
LCBfX29mZjY0X3QsIGludCwgaW50KSB0aHJvdyAoKTsKZXh0ZXJuIF9fb2ZmNjRfdCBfSU9fc2Vl
a3BvcyAoX0lPX0ZJTEUgKiwgX19vZmY2NF90LCBpbnQpIHRocm93ICgpOwoKZXh0ZXJuIHZvaWQg
X0lPX2ZyZWVfYmFja3VwX2FyZWEgKF9JT19GSUxFICopIHRocm93ICgpOwoKIyA0OTUgIi91c3Iv
aW5jbHVkZS9saWJpby5oIiAzCn0KIyA1OCAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDIgMwoKCgp0
eXBlZGVmIF9HX2Zwb3NfdCBmcG9zX3Q7CiMgMTExICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwoK
CgpleHRlcm4gRklMRSAqc3RkaW47CmV4dGVybiBGSUxFICpzdGRvdXQ7CmV4dGVybiBGSUxFICpz
dGRlcnI7CgoKCgoKCmV4dGVybiBpbnQgcmVtb3ZlIChfX2NvbnN0IGNoYXIgKl9fZmlsZW5hbWUp
IHRocm93ICgpOwoKZXh0ZXJuIGludCByZW5hbWUgKF9fY29uc3QgY2hhciAqX19vbGQsIF9fY29u
c3QgY2hhciAqX19uZXcpIHRocm93ICgpOwoKCgoKZXh0ZXJuIEZJTEUgKnRtcGZpbGUgKHZvaWQp
IHRocm93ICgpOwojIDE0MiAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIGNoYXIgKnRt
cG5hbSAoY2hhciAqX19zKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBjaGFyICp0bXBuYW1fciAoY2hh
ciAqX19zKSB0aHJvdyAoKTsKIyAxNTkgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiBj
aGFyICp0ZW1wbmFtIChfX2NvbnN0IGNoYXIgKl9fZGlyLCBfX2NvbnN0IGNoYXIgKl9fcGZ4KQog
ICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CgoKCgpleHRlcm4gaW50
IGZjbG9zZSAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwoKZXh0ZXJuIGludCBmZmx1c2ggKEZJ
TEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCBmZmx1c2hfdW5sb2NrZWQgKEZJ
TEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKIyAxODIgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzCmV4
dGVybiBGSUxFICpmb3BlbiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZmlsZW5hbWUsCiAg
ICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbW9kZXMpIHRocm93
ICgpOwoKZXh0ZXJuIEZJTEUgKmZyZW9wZW4gKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zp
bGVuYW1lLAogICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f
bW9kZXMsCiAgICAgICAgICAgICAgICAgICAgICBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSB0
aHJvdyAoKTsKIyAyMTIgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiBGSUxFICpmZG9w
ZW4gKGludCBfX2ZkLCBfX2NvbnN0IGNoYXIgKl9fbW9kZXMpIHRocm93ICgpOwojIDIzNSAiL3Vz
ci9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIHZvaWQgc2V0YnVmIChGSUxFICpfX3Jlc3RyaWN0
IF9fc3RyZWFtLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGlu
dCBzZXR2YnVmIChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLCBjaGFyICpfX3Jlc3RyaWN0IF9f
YnVmLAogICAgICAgICAgICAgICAgICAgIGludCBfX21vZGVzLCBzaXplX3QgX19uKSB0aHJvdyAo
KTsKCgoKCmV4dGVybiB2b2lkIHNldGJ1ZmZlciAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwg
Y2hhciAqX19yZXN0cmljdCBfX2J1ZiwKICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19z
aXplKSB0aHJvdyAoKTsKCgpleHRlcm4gdm9pZCBzZXRsaW5lYnVmIChGSUxFICpfX3N0cmVhbSkg
dGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IGZwcmludGYgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJl
YW0sCiAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0
LCAuLi4pIHRocm93ICgpOwoKZXh0ZXJuIGludCBwcmludGYgKF9fY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX2Zvcm1hdCwgLi4uKSB0aHJvdyAoKTsKCmV4dGVybiBpbnQgc3ByaW50ZiAoY2hhciAq
X19yZXN0cmljdCBfX3MsCiAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3Ry
aWN0IF9fZm9ybWF0LCAuLi4pIHRocm93ICgpOwoKCmV4dGVybiBpbnQgdmZwcmludGYgKEZJTEUg
Kl9fcmVzdHJpY3QgX19zLCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsCiAgICAg
ICAgICAgICAgICAgICAgIF9fZ251Y192YV9saXN0IF9fYXJnKSB0aHJvdyAoKTsKCmV4dGVybiBp
bnQgdnByaW50ZiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCBfX2dudWNfdmFf
bGlzdCBfX2FyZykKICAgICB0aHJvdyAoKTsKCmV4dGVybiBpbnQgdnNwcmludGYgKGNoYXIgKl9f
cmVzdHJpY3QgX19zLCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsCiAgICAgICAg
ICAgICAgICAgICAgIF9fZ251Y192YV9saXN0IF9fYXJnKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGlu
dCBzbnByaW50ZiAoY2hhciAqX19yZXN0cmljdCBfX3MsIHNpemVfdCBfX21heGxlbiwKICAgICAg
ICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pCiAg
ICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDMsIDQp
KSk7CgpleHRlcm4gaW50IF9fdnNucHJpbnRmIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90
IF9fbWF4bGVuLAogICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJp
Y3QgX19mb3JtYXQsIF9fZ251Y192YV9saXN0IF9fYXJnKQogICAgIHRocm93ICgpIF9fYXR0cmli
dXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAzLCAwKSkpOwpleHRlcm4gaW50IHZzbnBy
aW50ZiAoY2hhciAqX19yZXN0cmljdCBfX3MsIHNpemVfdCBfX21heGxlbiwKICAgICAgICAgICAg
ICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgX19nbnVjX3ZhX2xp
c3QgX19hcmcpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJp
bnRmX18sIDMsIDApKSk7CiMgMzA5ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gaW50
IGZzY2FuZiAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwKICAgICAgICAgICAgICAgICAgIF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSB0aHJvdyAoKTsKCmV4dGVybiBp
bnQgc2NhbmYgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSB0aHJvdyAo
KTsKCmV4dGVybiBpbnQgc3NjYW5mIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zLAogICAg
ICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pIHRo
cm93ICgpOwoKIyAzMzUgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiBpbnQgZmdldGMg
KEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKZXh0ZXJuIGludCBnZXRjIChGSUxFICpfX3N0cmVh
bSkgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBnZXRjaGFyICh2b2lkKSB0aHJvdyAoKTsKCgoKCgoK
CmV4dGVybiBpbnQgZ2V0Y191bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwpleHRl
cm4gaW50IGdldGNoYXJfdW5sb2NrZWQgKHZvaWQpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCBm
Z2V0Y191bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCBm
cHV0YyAoaW50IF9fYywgRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwpleHRlcm4gaW50IHB1dGMg
KGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IHB1dGNoYXIg
KGludCBfX2MpIHRocm93ICgpOwoKCgoKCgoKZXh0ZXJuIGludCBmcHV0Y191bmxvY2tlZCAoaW50
IF9fYywgRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCBwdXRjX3VubG9j
a2VkIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CmV4dGVybiBpbnQgcHV0Y2hh
cl91bmxvY2tlZCAoaW50IF9fYykgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGludCBnZXR3IChGSUxF
ICpfX3N0cmVhbSkgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBwdXR3IChpbnQgX193LCBGSUxFICpf
X3N0cmVhbSkgdGhyb3cgKCk7CgoKCgpleHRlcm4gY2hhciAqZmdldHMgKGNoYXIgKl9fcmVzdHJp
Y3QgX19zLCBpbnQgX19uLCBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKQogICAgIHRocm93ICgp
OwoKIyA0MDEgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiBjaGFyICpnZXRzIChjaGFy
ICpfX3MpIHRocm93ICgpOwoKCiMgNDI1ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4g
aW50IGZwdXRzIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zLCBGSUxFICpfX3Jlc3RyaWN0
IF9fc3RyZWFtKQogICAgIHRocm93ICgpOwoKCgoKCgoKCmV4dGVybiBpbnQgcHV0cyAoX19jb25z
dCBjaGFyICpfX3MpIHRocm93ICgpOwoKCgpleHRlcm4gaW50IHVuZ2V0YyAoaW50IF9fYywgRklM
RSAqX19zdHJlYW0pIHRocm93ICgpOwoKCgpleHRlcm4gc2l6ZV90IGZyZWFkICh2b2lkICpfX3Jl
c3RyaWN0IF9fcHRyLCBzaXplX3QgX19zaXplLAogICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
X19uLCBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSB0aHJvdyAoKTsKCmV4dGVybiBzaXplX3Qg
ZndyaXRlIChfX2NvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19wdHIsIHNpemVfdCBfX3NpemUsCiAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19uLCBGSUxFICpfX3Jlc3RyaWN0IF9fcykgdGhy
b3cgKCk7CgoKCmV4dGVybiBzaXplX3QgZnJlYWRfdW5sb2NrZWQgKHZvaWQgKl9fcmVzdHJpY3Qg
X19wdHIsIHNpemVfdCBfX3NpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIHRocm93ICgpOwpleHRlcm4gc2l6ZV90
IGZ3cml0ZV91bmxvY2tlZCAoX19jb25zdCB2b2lkICpfX3Jlc3RyaWN0IF9fcHRyLCBzaXplX3Qg
X19zaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbiwgRklMRSAq
X19yZXN0cmljdCBfX3N0cmVhbSkgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IGZzZWVrIChGSUxF
ICpfX3N0cmVhbSwgbG9uZyBpbnQgX19vZmYsIGludCBfX3doZW5jZSkgdGhyb3cgKCk7CgpleHRl
cm4gbG9uZyBpbnQgZnRlbGwgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKCmV4dGVybiB2b2lk
IHJld2luZCAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwoKCgoKCgoKCgp0eXBlZGVmIF9fb2Zm
X3Qgb2ZmX3Q7CiMgNDk1ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gaW50IGZnZXRw
b3MgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sIGZwb3NfdCAqX19yZXN0cmljdCBfX3BvcykK
ICAgICB0aHJvdyAoKTsKCmV4dGVybiBpbnQgZnNldHBvcyAoRklMRSAqX19zdHJlYW0sIF9fY29u
c3QgZnBvc190ICpfX3BvcykgdGhyb3cgKCk7CiMgNTMxICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIg
MwpleHRlcm4gdm9pZCBjbGVhcmVyciAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwoKZXh0ZXJu
IGludCBmZW9mIChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CgpleHRlcm4gaW50IGZlcnJvciAo
RklMRSAqX19zdHJlYW0pIHRocm93ICgpOwoKCgpleHRlcm4gdm9pZCBjbGVhcmVycl91bmxvY2tl
ZCAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwpleHRlcm4gaW50IGZlb2ZfdW5sb2NrZWQgKEZJ
TEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKZXh0ZXJuIGludCBmZXJyb3JfdW5sb2NrZWQgKEZJTEUg
Kl9fc3RyZWFtKSB0aHJvdyAoKTsKCgoKCmV4dGVybiB2b2lkIHBlcnJvciAoX19jb25zdCBjaGFy
ICpfX3MpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCBzeXNfbmVycjsKZXh0ZXJuIF9fY29uc3Qg
Y2hhciAqX19jb25zdCBzeXNfZXJybGlzdFtdOwojIDU2MiAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgi
IDMKZXh0ZXJuIGludCBmaWxlbm8gKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKCgoKCmV4dGVy
biBpbnQgZmlsZW5vX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CgoKCgoKCmV4
dGVybiBGSUxFICpwb3BlbiAoX19jb25zdCBjaGFyICpfX2NvbW1hbmQsIF9fY29uc3QgY2hhciAq
X19tb2RlcykgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBwY2xvc2UgKEZJTEUgKl9fc3RyZWFtKSB0
aHJvdyAoKTsKCgoKCgpleHRlcm4gY2hhciAqY3Rlcm1pZCAoY2hhciAqX19zKSB0aHJvdyAoKTsK
IyA2MDkgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiB2b2lkIGZsb2NrZmlsZSAoRklM
RSAqX19zdHJlYW0pIHRocm93ICgpOwoKCgpleHRlcm4gaW50IGZ0cnlsb2NrZmlsZSAoRklMRSAq
X19zdHJlYW0pIHRocm93ICgpOwoKCmV4dGVybiB2b2lkIGZ1bmxvY2tmaWxlIChGSUxFICpfX3N0
cmVhbSkgdGhyb3cgKCk7CiMgNjMzICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwp9CgojIDEwICJw
YXJzZS5oIiAyCgojIDI4ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDEgMwpleHRlcm4gIkMiIHsK
CgoKCgoKIyAxNzYgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwojIDE5MyAiL3Vzci9pbmNsdWRl
L3VuaXN0ZC5oIiAzCnR5cGVkZWYgX19zc2l6ZV90IHNzaXplX3Q7CgoKCgoKCiMgMjQwICIvdXNy
L2luY2x1ZGUvdW5pc3RkLmgiIDMKdHlwZWRlZiBfX2ludHB0cl90IGludHB0cl90OwoKCgoKCgp0
eXBlZGVmIF9fc29ja2xlbl90IHNvY2tsZW5fdDsKIyAyNjAgIi91c3IvaW5jbHVkZS91bmlzdGQu
aCIgMwpleHRlcm4gaW50IGFjY2VzcyAoX19jb25zdCBjaGFyICpfX25hbWUsIGludCBfX3R5cGUp
IHRocm93ICgpOwoKIyAyOTAgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4gX19vZmZf
dCBsc2VlayAoaW50IF9fZmQsIF9fb2ZmX3QgX19vZmZzZXQsIGludCBfX3doZW5jZSkgdGhyb3cg
KCk7CiMgMzA2ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIGludCBjbG9zZSAoaW50
IF9fZmQpIHRocm93ICgpOwoKCgpleHRlcm4gc3NpemVfdCByZWFkIChpbnQgX19mZCwgdm9pZCAq
X19idWYsIHNpemVfdCBfX25ieXRlcykgdGhyb3cgKCk7CgoKZXh0ZXJuIHNzaXplX3Qgd3JpdGUg
KGludCBfX2ZkLCBfX2NvbnN0IHZvaWQgKl9fYnVmLCBzaXplX3QgX19uKSB0aHJvdyAoKTsKCiMg
MzUzICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIGludCBwaXBlIChpbnQgX19waXBl
ZGVzWzJdKSB0aHJvdyAoKTsKIyAzNjIgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4g
dW5zaWduZWQgaW50IGFsYXJtICh1bnNpZ25lZCBpbnQgX19zZWNvbmRzKSB0aHJvdyAoKTsKIyAz
NzEgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4gdW5zaWduZWQgaW50IHNsZWVwICh1
bnNpZ25lZCBpbnQgX19zZWNvbmRzKSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIF9fdXNlY29uZHNf
dCB1YWxhcm0gKF9fdXNlY29uZHNfdCBfX3ZhbHVlLCBfX3VzZWNvbmRzX3QgX19pbnRlcnZhbCkK
ICAgICB0aHJvdyAoKTsKCgoKZXh0ZXJuIHZvaWQgdXNsZWVwIChfX3VzZWNvbmRzX3QgX191c2Vj
b25kcykgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGludCBwYXVzZSAodm9pZCkgdGhyb3cgKCk7CgoK
CmV4dGVybiBpbnQgY2hvd24gKF9fY29uc3QgY2hhciAqX19maWxlLCBfX3VpZF90IF9fb3duZXIs
IF9fZ2lkX3QgX19ncm91cCkKICAgICB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCBmY2hvd24gKGlu
dCBfX2ZkLCBfX3VpZF90IF9fb3duZXIsIF9fZ2lkX3QgX19ncm91cCkgdGhyb3cgKCk7CgoKCgpl
eHRlcm4gaW50IGxjaG93biAoX19jb25zdCBjaGFyICpfX2ZpbGUsIF9fdWlkX3QgX19vd25lciwg
X19naWRfdCBfX2dyb3VwKQogICAgIHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCBjaGRpciAoX19j
b25zdCBjaGFyICpfX3BhdGgpIHRocm93ICgpOwoKCgpleHRlcm4gaW50IGZjaGRpciAoaW50IF9f
ZmQpIHRocm93ICgpOwojIDQyMyAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4dGVybiBjaGFy
ICpnZXRjd2QgKGNoYXIgKl9fYnVmLCBzaXplX3QgX19zaXplKSB0aHJvdyAoKTsKCiMgNDM2ICIv
dXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIGNoYXIgKmdldHdkIChjaGFyICpfX2J1Zikg
dGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IGR1cCAoaW50IF9fZmQpIHRocm93ICgpOwoKCmV4dGVy
biBpbnQgZHVwMiAoaW50IF9fZmQsIGludCBfX2ZkMikgdGhyb3cgKCk7CgoKZXh0ZXJuIGNoYXIg
KipfX2Vudmlyb247CgoKCgoKCgpleHRlcm4gaW50IGV4ZWN2ZSAoX19jb25zdCBjaGFyICpfX3Bh
dGgsIGNoYXIgKl9fY29uc3QgX19hcmd2W10sCiAgICAgICAgICAgICAgICAgICBjaGFyICpfX2Nv
bnN0IF9fZW52cFtdKSB0aHJvdyAoKTsKCiMgNDY3ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMK
ZXh0ZXJuIGludCBleGVjdiAoX19jb25zdCBjaGFyICpfX3BhdGgsIGNoYXIgKl9fY29uc3QgX19h
cmd2W10pIHRocm93ICgpOwoKCgpleHRlcm4gaW50IGV4ZWNsZSAoX19jb25zdCBjaGFyICpfX3Bh
dGgsIF9fY29uc3QgY2hhciAqX19hcmcsIC4uLikgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgZXhl
Y2wgKF9fY29uc3QgY2hhciAqX19wYXRoLCBfX2NvbnN0IGNoYXIgKl9fYXJnLCAuLi4pIHRocm93
ICgpOwoKCgpleHRlcm4gaW50IGV4ZWN2cCAoX19jb25zdCBjaGFyICpfX2ZpbGUsIGNoYXIgKl9f
Y29uc3QgX19hcmd2W10pIHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCBleGVjbHAgKF9fY29uc3Qg
Y2hhciAqX19maWxlLCBfX2NvbnN0IGNoYXIgKl9fYXJnLCAuLi4pIHRocm93ICgpOwoKCgoKZXh0
ZXJuIGludCBuaWNlIChpbnQgX19pbmMpIHRocm93ICgpOwoKCgoKZXh0ZXJuIHZvaWQgX2V4aXQg
KGludCBfX3N0YXR1cykgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwoKCgoKCgojIDI1
ICIvdXNyL2luY2x1ZGUvYml0cy9jb25mbmFtZS5oIiAxIDMKZW51bQogIHsKICAgIF9QQ19MSU5L
X01BWCwKCiAgICBfUENfTUFYX0NBTk9OLAoKICAgIF9QQ19NQVhfSU5QVVQsCgogICAgX1BDX05B
TUVfTUFYLAoKICAgIF9QQ19QQVRIX01BWCwKCiAgICBfUENfUElQRV9CVUYsCgogICAgX1BDX0NI
T1dOX1JFU1RSSUNURUQsCgogICAgX1BDX05PX1RSVU5DLAoKICAgIF9QQ19WRElTQUJMRSwKCiAg
ICBfUENfU1lOQ19JTywKCiAgICBfUENfQVNZTkNfSU8sCgogICAgX1BDX1BSSU9fSU8sCgogICAg
X1BDX1NPQ0tfTUFYQlVGLAoKICAgIF9QQ19GSUxFU0laRUJJVFMKCiAgfTsKCgplbnVtCiAgewog
ICAgX1NDX0FSR19NQVgsCgogICAgX1NDX0NISUxEX01BWCwKCiAgICBfU0NfQ0xLX1RDSywKCiAg
ICBfU0NfTkdST1VQU19NQVgsCgogICAgX1NDX09QRU5fTUFYLAoKICAgIF9TQ19TVFJFQU1fTUFY
LAoKICAgIF9TQ19UWk5BTUVfTUFYLAoKICAgIF9TQ19KT0JfQ09OVFJPTCwKCiAgICBfU0NfU0FW
RURfSURTLAoKICAgIF9TQ19SRUFMVElNRV9TSUdOQUxTLAoKICAgIF9TQ19QUklPUklUWV9TQ0hF
RFVMSU5HLAoKICAgIF9TQ19USU1FUlMsCgogICAgX1NDX0FTWU5DSFJPTk9VU19JTywKCiAgICBf
U0NfUFJJT1JJVElaRURfSU8sCgogICAgX1NDX1NZTkNIUk9OSVpFRF9JTywKCiAgICBfU0NfRlNZ
TkMsCgogICAgX1NDX01BUFBFRF9GSUxFUywKCiAgICBfU0NfTUVNTE9DSywKCiAgICBfU0NfTUVN
TE9DS19SQU5HRSwKCiAgICBfU0NfTUVNT1JZX1BST1RFQ1RJT04sCgogICAgX1NDX01FU1NBR0Vf
UEFTU0lORywKCiAgICBfU0NfU0VNQVBIT1JFUywKCiAgICBfU0NfU0hBUkVEX01FTU9SWV9PQkpF
Q1RTLAoKICAgIF9TQ19BSU9fTElTVElPX01BWCwKCiAgICBfU0NfQUlPX01BWCwKCiAgICBfU0Nf
QUlPX1BSSU9fREVMVEFfTUFYLAoKICAgIF9TQ19ERUxBWVRJTUVSX01BWCwKCiAgICBfU0NfTVFf
T1BFTl9NQVgsCgogICAgX1NDX01RX1BSSU9fTUFYLAoKICAgIF9TQ19WRVJTSU9OLAoKICAgIF9T
Q19QQUdFU0laRSwKCgogICAgX1NDX1JUU0lHX01BWCwKCiAgICBfU0NfU0VNX05TRU1TX01BWCwK
CiAgICBfU0NfU0VNX1ZBTFVFX01BWCwKCiAgICBfU0NfU0lHUVVFVUVfTUFYLAoKICAgIF9TQ19U
SU1FUl9NQVgsCgoKCgogICAgX1NDX0JDX0JBU0VfTUFYLAoKICAgIF9TQ19CQ19ESU1fTUFYLAoK
ICAgIF9TQ19CQ19TQ0FMRV9NQVgsCgogICAgX1NDX0JDX1NUUklOR19NQVgsCgogICAgX1NDX0NP
TExfV0VJR0hUU19NQVgsCgogICAgX1NDX0VRVUlWX0NMQVNTX01BWCwKCiAgICBfU0NfRVhQUl9O
RVNUX01BWCwKCiAgICBfU0NfTElORV9NQVgsCgogICAgX1NDX1JFX0RVUF9NQVgsCgogICAgX1ND
X0NIQVJDTEFTU19OQU1FX01BWCwKCgogICAgX1NDXzJfVkVSU0lPTiwKCiAgICBfU0NfMl9DX0JJ
TkQsCgogICAgX1NDXzJfQ19ERVYsCgogICAgX1NDXzJfRk9SVF9ERVYsCgogICAgX1NDXzJfRk9S
VF9SVU4sCgogICAgX1NDXzJfU1dfREVWLAoKICAgIF9TQ18yX0xPQ0FMRURFRiwKCgogICAgX1ND
X1BJSSwKCiAgICBfU0NfUElJX1hUSSwKCiAgICBfU0NfUElJX1NPQ0tFVCwKCiAgICBfU0NfUElJ
X0lOVEVSTkVULAoKICAgIF9TQ19QSUlfT1NJLAoKICAgIF9TQ19QT0xMLAoKICAgIF9TQ19TRUxF
Q1QsCgogICAgX1NDX1VJT19NQVhJT1YsCgogICAgX1NDX1BJSV9JTlRFUk5FVF9TVFJFQU0sCgog
ICAgX1NDX1BJSV9JTlRFUk5FVF9ER1JBTSwKCiAgICBfU0NfUElJX09TSV9DT1RTLAoKICAgIF9T
Q19QSUlfT1NJX0NMVFMsCgogICAgX1NDX1BJSV9PU0lfTSwKCiAgICBfU0NfVF9JT1ZfTUFYLAoK
CgogICAgX1NDX1RIUkVBRFMsCgogICAgX1NDX1RIUkVBRF9TQUZFX0ZVTkNUSU9OUywKCiAgICBf
U0NfR0VUR1JfUl9TSVpFX01BWCwKCiAgICBfU0NfR0VUUFdfUl9TSVpFX01BWCwKCiAgICBfU0Nf
TE9HSU5fTkFNRV9NQVgsCgogICAgX1NDX1RUWV9OQU1FX01BWCwKCiAgICBfU0NfVEhSRUFEX0RF
U1RSVUNUT1JfSVRFUkFUSU9OUywKCiAgICBfU0NfVEhSRUFEX0tFWVNfTUFYLAoKICAgIF9TQ19U
SFJFQURfU1RBQ0tfTUlOLAoKICAgIF9TQ19USFJFQURfVEhSRUFEU19NQVgsCgogICAgX1NDX1RI
UkVBRF9BVFRSX1NUQUNLQUREUiwKCiAgICBfU0NfVEhSRUFEX0FUVFJfU1RBQ0tTSVpFLAoKICAg
IF9TQ19USFJFQURfUFJJT1JJVFlfU0NIRURVTElORywKCiAgICBfU0NfVEhSRUFEX1BSSU9fSU5I
RVJJVCwKCiAgICBfU0NfVEhSRUFEX1BSSU9fUFJPVEVDVCwKCiAgICBfU0NfVEhSRUFEX1BST0NF
U1NfU0hBUkVELAoKCiAgICBfU0NfTlBST0NFU1NPUlNfQ09ORiwKCiAgICBfU0NfTlBST0NFU1NP
UlNfT05MTiwKCiAgICBfU0NfUEhZU19QQUdFUywKCiAgICBfU0NfQVZQSFlTX1BBR0VTLAoKICAg
IF9TQ19BVEVYSVRfTUFYLAoKICAgIF9TQ19QQVNTX01BWCwKCgogICAgX1NDX1hPUEVOX1ZFUlNJ
T04sCgogICAgX1NDX1hPUEVOX1hDVV9WRVJTSU9OLAoKICAgIF9TQ19YT1BFTl9VTklYLAoKICAg
IF9TQ19YT1BFTl9DUllQVCwKCiAgICBfU0NfWE9QRU5fRU5IX0kxOE4sCgogICAgX1NDX1hPUEVO
X1NITSwKCgogICAgX1NDXzJfQ0hBUl9URVJNLAoKICAgIF9TQ18yX0NfVkVSU0lPTiwKCiAgICBf
U0NfMl9VUEUsCgoKICAgIF9TQ19YT1BFTl9YUEcyLAoKICAgIF9TQ19YT1BFTl9YUEczLAoKICAg
IF9TQ19YT1BFTl9YUEc0LAoKCiAgICBfU0NfQ0hBUl9CSVQsCgogICAgX1NDX0NIQVJfTUFYLAoK
ICAgIF9TQ19DSEFSX01JTiwKCiAgICBfU0NfSU5UX01BWCwKCiAgICBfU0NfSU5UX01JTiwKCiAg
ICBfU0NfTE9OR19CSVQsCgogICAgX1NDX1dPUkRfQklULAoKICAgIF9TQ19NQl9MRU5fTUFYLAoK
ICAgIF9TQ19OWkVSTywKCiAgICBfU0NfU1NJWkVfTUFYLAoKICAgIF9TQ19TQ0hBUl9NQVgsCgog
ICAgX1NDX1NDSEFSX01JTiwKCiAgICBfU0NfU0hSVF9NQVgsCgogICAgX1NDX1NIUlRfTUlOLAoK
ICAgIF9TQ19VQ0hBUl9NQVgsCgogICAgX1NDX1VJTlRfTUFYLAoKICAgIF9TQ19VTE9OR19NQVgs
CgogICAgX1NDX1VTSFJUX01BWCwKCgogICAgX1NDX05MX0FSR01BWCwKCiAgICBfU0NfTkxfTEFO
R01BWCwKCiAgICBfU0NfTkxfTVNHTUFYLAoKICAgIF9TQ19OTF9OTUFYLAoKICAgIF9TQ19OTF9T
RVRNQVgsCgogICAgX1NDX05MX1RFWFRNQVgsCgoKICAgIF9TQ19YQlM1X0lMUDMyX09GRjMyLAoK
ICAgIF9TQ19YQlM1X0lMUDMyX09GRkJJRywKCiAgICBfU0NfWEJTNV9MUDY0X09GRjY0LAoKICAg
IF9TQ19YQlM1X0xQQklHX09GRkJJRywKCgogICAgX1NDX1hPUEVOX0xFR0FDWSwKCiAgICBfU0Nf
WE9QRU5fUkVBTFRJTUUsCgogICAgX1NDX1hPUEVOX1JFQUxUSU1FX1RIUkVBRFMsCgoKICAgIF9T
Q19BRFZJU09SWV9JTkZPLAoKICAgIF9TQ19CQVJSSUVSUywKCiAgICBfU0NfQkFTRSwKCiAgICBf
U0NfQ19MQU5HX1NVUFBPUlQsCgogICAgX1NDX0NfTEFOR19TVVBQT1JUX1IsCgogICAgX1NDX0NM
T0NLX1NFTEVDVElPTiwKCiAgICBfU0NfQ1BVVElNRSwKCiAgICBfU0NfVEhSRUFEX0NQVVRJTUUs
CgogICAgX1NDX0RFVklDRV9JTywKCiAgICBfU0NfREVWSUNFX1NQRUNJRklDLAoKICAgIF9TQ19E
RVZJQ0VfU1BFQ0lGSUNfUiwKCiAgICBfU0NfRkRfTUdNVCwKCiAgICBfU0NfRklGTywKCiAgICBf
U0NfUElQRSwKCiAgICBfU0NfRklMRV9BVFRSSUJVVEVTLAoKICAgIF9TQ19GSUxFX0xPQ0tJTkcs
CgogICAgX1NDX0ZJTEVfU1lTVEVNLAoKICAgIF9TQ19NT05PVE9OSUNfQ0xPQ0ssCgogICAgX1ND
X01VTFRJUExFX1BST0NFU1MsCgogICAgX1NDX1NJTkdMRV9QUk9DRVNTLAoKICAgIF9TQ19ORVRX
T1JLSU5HLAoKICAgIF9TQ19SRUFERVJfV1JJVEVSX0xPQ0tTLAoKICAgIF9TQ19TUElOX0xPQ0tT
LAoKICAgIF9TQ19SRUdFWFAsCgogICAgX1NDX1JFR0VYX1ZFUlNJT04sCgogICAgX1NDX1NIRUxM
LAoKICAgIF9TQ19TSUdOQUxTLAoKICAgIF9TQ19TUEFXTiwKCiAgICBfU0NfU1BPUkFESUNfU0VS
VkVSLAoKICAgIF9TQ19USFJFQURfU1BPUkFESUNfU0VSVkVSLAoKICAgIF9TQ19TWVNURU1fREFU
QUJBU0UsCgogICAgX1NDX1NZU1RFTV9EQVRBQkFTRV9SLAoKICAgIF9TQ19USU1FT1VUUywKCiAg
ICBfU0NfVFlQRURfTUVNT1JZX09CSkVDVFMsCgogICAgX1NDX1VTRVJfR1JPVVBTLAoKICAgIF9T
Q19VU0VSX0dST1VQU19SLAoKICAgIF9TQ19QQlMsCgogICAgX1NDX1BCU19BQ0NPVU5USU5HLAoK
ICAgIF9TQ19QQlNfTE9DQVRFLAoKICAgIF9TQ19QQlNfTUVTU0FHRSwKCiAgICBfU0NfUEJTX1RS
QUNLLAoKICAgIF9TQ19TWU1MT09QCgogIH07CgoKCgoKZW51bQogIHsKICAgIF9DU19QQVRICiMg
NDkyICIvdXNyL2luY2x1ZGUvYml0cy9jb25mbmFtZS5oIiAzCiAgfTsKIyA1MDEgIi91c3IvaW5j
bHVkZS91bmlzdGQuaCIgMiAzCgoKZXh0ZXJuIGxvbmcgaW50IHBhdGhjb25mIChfX2NvbnN0IGNo
YXIgKl9fcGF0aCwgaW50IF9fbmFtZSkgdGhyb3cgKCk7CgoKZXh0ZXJuIGxvbmcgaW50IGZwYXRo
Y29uZiAoaW50IF9fZmQsIGludCBfX25hbWUpIHRocm93ICgpOwoKCmV4dGVybiBsb25nIGludCBz
eXNjb25mIChpbnQgX19uYW1lKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIHNpemVfdCBjb25mc3RyIChp
bnQgX19uYW1lLCBjaGFyICpfX2J1Ziwgc2l6ZV90IF9fbGVuKSB0aHJvdyAoKTsKCgoKCmV4dGVy
biBfX3BpZF90IGdldHBpZCAodm9pZCkgdGhyb3cgKCk7CgoKZXh0ZXJuIF9fcGlkX3QgZ2V0cHBp
ZCAodm9pZCkgdGhyb3cgKCk7CgoKCgpleHRlcm4gX19waWRfdCBnZXRwZ3JwICh2b2lkKSB0aHJv
dyAoKTsKIyA1MzYgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4gX19waWRfdCBfX2dl
dHBnaWQgKF9fcGlkX3QgX19waWQpIHRocm93ICgpOwojIDU0NSAiL3Vzci9pbmNsdWRlL3VuaXN0
ZC5oIiAzCmV4dGVybiBpbnQgc2V0cGdpZCAoX19waWRfdCBfX3BpZCwgX19waWRfdCBfX3BnaWQp
IHRocm93ICgpOwoKIyA1NjIgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4gaW50IHNl
dHBncnAgKHZvaWQpIHRocm93ICgpOwoKIyA1ODAgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwpl
eHRlcm4gX19waWRfdCBzZXRzaWQgKHZvaWQpIHRocm93ICgpOwoKCgoKCgoKZXh0ZXJuIF9fdWlk
X3QgZ2V0dWlkICh2b2lkKSB0aHJvdyAoKTsKCgpleHRlcm4gX191aWRfdCBnZXRldWlkICh2b2lk
KSB0aHJvdyAoKTsKCgpleHRlcm4gX19naWRfdCBnZXRnaWQgKHZvaWQpIHRocm93ICgpOwoKCmV4
dGVybiBfX2dpZF90IGdldGVnaWQgKHZvaWQpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCBnZXRn
cm91cHMgKGludCBfX3NpemUsIF9fZ2lkX3QgX19saXN0W10pIHRocm93ICgpOwoKIyA2MTMgIi91
c3IvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4gaW50IHNldHVpZCAoX191aWRfdCBfX3VpZCkg
dGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IHNldHJldWlkIChfX3VpZF90IF9fcnVpZCwgX191aWRf
dCBfX2V1aWQpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCBzZXRldWlkIChfX3VpZF90IF9fdWlk
KSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGludCBzZXRnaWQgKF9fZ2lkX3QgX19naWQpIHRocm93
ICgpOwoKCgoKZXh0ZXJuIGludCBzZXRyZWdpZCAoX19naWRfdCBfX3JnaWQsIF9fZ2lkX3QgX19l
Z2lkKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQgc2V0ZWdpZCAoX19naWRfdCBfX2dpZCkgdGhy
b3cgKCk7CgoKCgoKCmV4dGVybiBfX3BpZF90IGZvcmsgKHZvaWQpIHRocm93ICgpOwoKCgoKCgpl
eHRlcm4gX19waWRfdCB2Zm9yayAodm9pZCkgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGNoYXIgKnR0
eW5hbWUgKGludCBfX2ZkKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCB0dHluYW1lX3IgKGludCBf
X2ZkLCBjaGFyICpfX2J1Ziwgc2l6ZV90IF9fYnVmbGVuKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGlu
dCBpc2F0dHkgKGludCBfX2ZkKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQgdHR5c2xvdCAodm9p
ZCkgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IGxpbmsgKF9fY29uc3QgY2hhciAqX19mcm9tLCBf
X2NvbnN0IGNoYXIgKl9fdG8pIHRocm93ICgpOwoKCgpleHRlcm4gaW50IHN5bWxpbmsgKF9fY29u
c3QgY2hhciAqX19mcm9tLCBfX2NvbnN0IGNoYXIgKl9fdG8pIHRocm93ICgpOwoKCgoKZXh0ZXJu
IGludCByZWFkbGluayAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcGF0aCwgY2hhciAqX19y
ZXN0cmljdCBfX2J1ZiwKICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbGVuKSB0aHJvdyAo
KTsKCgoKZXh0ZXJuIGludCB1bmxpbmsgKF9fY29uc3QgY2hhciAqX19uYW1lKSB0aHJvdyAoKTsK
CgpleHRlcm4gaW50IHJtZGlyIChfX2NvbnN0IGNoYXIgKl9fcGF0aCkgdGhyb3cgKCk7CgoKCmV4
dGVybiBfX3BpZF90IHRjZ2V0cGdycCAoaW50IF9fZmQpIHRocm93ICgpOwoKCmV4dGVybiBpbnQg
dGNzZXRwZ3JwIChpbnQgX19mZCwgX19waWRfdCBfX3BncnBfaWQpIHRocm93ICgpOwoKCgpleHRl
cm4gY2hhciAqZ2V0bG9naW4gKHZvaWQpIHRocm93ICgpOwojIDcxNiAiL3Vzci9pbmNsdWRlL3Vu
aXN0ZC5oIiAzCmV4dGVybiBpbnQgc2V0bG9naW4gKF9fY29uc3QgY2hhciAqX19uYW1lKSB0aHJv
dyAoKTsKIyA3MzQgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4gaW50IGdldGhvc3Ru
YW1lIChjaGFyICpfX25hbWUsIHNvY2tsZW5fdCBfX2xlbikgdGhyb3cgKCk7CgoKCmV4dGVybiBp
bnQgc2V0aG9zdG5hbWUgKF9fY29uc3QgY2hhciAqX19uYW1lLCBzaXplX3QgX19sZW4pIHRocm93
ICgpOwoKCgpleHRlcm4gaW50IHNldGhvc3RpZCAobG9uZyBpbnQgX19pZCkgdGhyb3cgKCk7CgoK
CgoKZXh0ZXJuIGludCBnZXRkb21haW5uYW1lIChjaGFyICpfX25hbWUsIHNpemVfdCBfX2xlbikg
dGhyb3cgKCk7CmV4dGVybiBpbnQgc2V0ZG9tYWlubmFtZSAoX19jb25zdCBjaGFyICpfX25hbWUs
IHNpemVfdCBfX2xlbikgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgZnN5bmMgKGludCBfX2ZkKSB0
aHJvdyAoKTsKCgoKCgpleHRlcm4gaW50IHZoYW5ndXAgKHZvaWQpIHRocm93ICgpOwoKCmV4dGVy
biBpbnQgcmV2b2tlIChfX2NvbnN0IGNoYXIgKl9fZmlsZSkgdGhyb3cgKCk7CgoKCgoKCgpleHRl
cm4gaW50IHByb2ZpbCAodW5zaWduZWQgc2hvcnQgaW50ICpfX3NhbXBsZV9idWZmZXIsIHNpemVf
dCBfX3NpemUsCiAgICAgICAgICAgICAgICAgICBzaXplX3QgX19vZmZzZXQsIHVuc2lnbmVkIGlu
dCBfX3NjYWxlKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gaW50IGFjY3QgKF9fY29uc3QgY2hhciAq
X19uYW1lKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCBjaHJvb3QgKF9fY29uc3QgY2hhciAqX19w
YXRoKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGNoYXIgKmdldHVzZXJzaGVsbCAodm9pZCkgdGhyb3cg
KCk7CmV4dGVybiB2b2lkIGVuZHVzZXJzaGVsbCAodm9pZCkgdGhyb3cgKCk7CmV4dGVybiB2b2lk
IHNldHVzZXJzaGVsbCAodm9pZCkgdGhyb3cgKCk7CgoKCgpleHRlcm4gY2hhciAqZ2V0cGFzcyAo
X19jb25zdCBjaGFyICpfX3Byb21wdCkgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IGRhZW1vbiAo
aW50IF9fbm9jaGRpciwgaW50IF9fbm9jbG9zZSkgdGhyb3cgKCk7CgoKCgoKCgpleHRlcm4gbG9u
ZyBpbnQgZ2V0aG9zdGlkICh2b2lkKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IHN5bmMgKHZvaWQp
IHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCBnZXRwYWdlc2l6ZSAodm9pZCkgdGhyb3cgKCkgX19h
dHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKZXh0ZXJuIGludCB0cnVuY2F0ZSAoX19jb25z
dCBjaGFyICpfX2ZpbGUsIF9fb2ZmX3QgX19sZW5ndGgpIHRocm93ICgpOwojIDgzNCAiL3Vzci9p
bmNsdWRlL3VuaXN0ZC5oIiAzCmV4dGVybiBpbnQgZnRydW5jYXRlIChpbnQgX19mZCwgX19vZmZf
dCBfX2xlbmd0aCkgdGhyb3cgKCk7CiMgODUwICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0
ZXJuIGludCBnZXRkdGFibGVzaXplICh2b2lkKSB0aHJvdyAoKTsKCgoKCgoKCgpleHRlcm4gaW50
IGJyayAodm9pZCAqX19hZGRyKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gdm9pZCAqc2JyayAoaW50
cHRyX3QgX19kZWx0YSkgdGhyb3cgKCk7CiMgODgwICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMK
ZXh0ZXJuIGxvbmcgaW50IHN5c2NhbGwgKGxvbmcgaW50IF9fc3lzbm8sIC4uLikgdGhyb3cgKCk7
CgojIDkwMCAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4dGVybiBpbnQgbG9ja2YgKGludCBf
X2ZkLCBpbnQgX19jbWQsIF9fb2ZmX3QgX19sZW4pIHRocm93ICgpOwojIDkzMSAiL3Vzci9pbmNs
dWRlL3VuaXN0ZC5oIiAzCmV4dGVybiBpbnQgZmRhdGFzeW5jIChpbnQgX19maWxkZXMpIHRocm93
ICgpOwojIDk3NiAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4dGVybiBpbnQgcHRocmVhZF9h
dGZvcmsgKHZvaWQgKCpfX3ByZXBhcmUpICh2b2lkKSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdm9pZCAoKl9fcGFyZW50KSAodm9pZCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHZv
aWQgKCpfX2NoaWxkKSAodm9pZCkpIHRocm93ICgpOwoKCn0KCiMgMTEgInBhcnNlLmgiIDIKCiMg
MjggIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMSAzCmV4dGVybiAiQyIgewoKCgoKCgoKCmV4dGVy
biB2b2lkICptZW1jcHkgKHZvaWQgKl9fcmVzdHJpY3QgX19kZXN0LAogICAgICAgICAgICAgICAg
ICAgICBfX2NvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24pIHRocm93ICgp
OwoKCmV4dGVybiB2b2lkICptZW1tb3ZlICh2b2lkICpfX2Rlc3QsIF9fY29uc3Qgdm9pZCAqX19z
cmMsIHNpemVfdCBfX24pCiAgICAgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIHZvaWQgKm1lbWNjcHkg
KHZvaWQgKl9fcmVzdHJpY3QgX19kZXN0LCBfX2NvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19zcmMs
CiAgICAgICAgICAgICAgICAgICAgICBpbnQgX19jLCBzaXplX3QgX19uKQogICAgIHRocm93ICgp
OwoKCgoKZXh0ZXJuIHZvaWQgKm1lbXNldCAodm9pZCAqX19zLCBpbnQgX19jLCBzaXplX3QgX19u
KSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IG1lbWNtcCAoX19jb25zdCB2b2lkICpfX3MxLCBfX2Nv
bnN0IHZvaWQgKl9fczIsIHNpemVfdCBfX24pCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAo
KF9fcHVyZV9fKSk7CgoKZXh0ZXJuIHZvaWQgKm1lbWNociAoX19jb25zdCB2b2lkICpfX3MsIGlu
dCBfX2MsIHNpemVfdCBfX24pCiAgICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVf
XykpOwoKIyA3NyAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzCmV4dGVybiBjaGFyICpzdHJjcHkg
KGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMp
CiAgICAgdGhyb3cgKCk7CgpleHRlcm4gY2hhciAqc3RybmNweSAoY2hhciAqX19yZXN0cmljdCBf
X2Rlc3QsCiAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19z
cmMsIHNpemVfdCBfX24pIHRocm93ICgpOwoKCmV4dGVybiBjaGFyICpzdHJjYXQgKGNoYXIgKl9f
cmVzdHJpY3QgX19kZXN0LCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMpCiAgICAgdGhy
b3cgKCk7CgpleHRlcm4gY2hhciAqc3RybmNhdCAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsIF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYywKICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBfX24pIHRocm93ICgpOwoKCmV4dGVybiBpbnQgc3RyY21wIChfX2NvbnN0IGNoYXIgKl9fczEs
IF9fY29uc3QgY2hhciAqX19zMikKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJl
X18pKTsKCmV4dGVybiBpbnQgc3RybmNtcCAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNo
YXIgKl9fczIsIHNpemVfdCBfX24pCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVy
ZV9fKSk7CgoKZXh0ZXJuIGludCBzdHJjb2xsIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3Qg
Y2hhciAqX19zMikKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCmV4
dGVybiBzaXplX3Qgc3RyeGZybSAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsCiAgICAgICAgICAg
ICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKSB0
aHJvdyAoKTsKCiMgMTIwICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMKZXh0ZXJuIGNoYXIgKnN0
cmR1cCAoX19jb25zdCBjaGFyICpfX3MpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX21hbGxv
Y19fKSk7CiMgMTU1ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMKZXh0ZXJuIGNoYXIgKnN0cmNo
ciAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2MpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChf
X3B1cmVfXykpOwoKZXh0ZXJuIGNoYXIgKnN0cnJjaHIgKF9fY29uc3QgY2hhciAqX19zLCBpbnQg
X19jKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCiMgMTY3ICIvdXNyL2lu
Y2x1ZGUvc3RyaW5nLmgiIDMKZXh0ZXJuIHNpemVfdCBzdHJjc3BuIChfX2NvbnN0IGNoYXIgKl9f
cywgX19jb25zdCBjaGFyICpfX3JlamVjdCkKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgo
X19wdXJlX18pKTsKCgpleHRlcm4gc2l6ZV90IHN0cnNwbiAoX19jb25zdCBjaGFyICpfX3MsIF9f
Y29uc3QgY2hhciAqX19hY2NlcHQpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVy
ZV9fKSk7CgpleHRlcm4gY2hhciAqc3RycGJyayAoX19jb25zdCBjaGFyICpfX3MsIF9fY29uc3Qg
Y2hhciAqX19hY2NlcHQpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7
CgpleHRlcm4gY2hhciAqc3Ryc3RyIChfX2NvbnN0IGNoYXIgKl9faGF5c3RhY2ssIF9fY29uc3Qg
Y2hhciAqX19uZWVkbGUpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7
CgojIDE4OSAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzCmV4dGVybiBjaGFyICpzdHJ0b2sgKGNo
YXIgKl9fcmVzdHJpY3QgX19zLCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19kZWxpbSkKICAg
ICB0aHJvdyAoKTsKCgoKZXh0ZXJuIGNoYXIgKl9fc3RydG9rX3IgKGNoYXIgKl9fcmVzdHJpY3Qg
X19zLAogICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f
ZGVsaW0sCiAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX3NhdmVf
cHRyKSB0aHJvdyAoKTsKCmV4dGVybiBjaGFyICpzdHJ0b2tfciAoY2hhciAqX19yZXN0cmljdCBf
X3MsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2RlbGltLAogICAgICAgICAgICAgICAgICAg
ICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fc2F2ZV9wdHIpIHRocm93ICgpOwojIDIyMCAiL3Vzci9p
bmNsdWRlL3N0cmluZy5oIiAzCmV4dGVybiBzaXplX3Qgc3RybGVuIChfX2NvbnN0IGNoYXIgKl9f
cykgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgojIDIzMSAiL3Vzci9pbmNs
dWRlL3N0cmluZy5oIiAzCmV4dGVybiBjaGFyICpzdHJlcnJvciAoaW50IF9fZXJybnVtKSB0aHJv
dyAoKTsKCgoKZXh0ZXJuIGNoYXIgKl9fc3RyZXJyb3JfciAoaW50IF9fZXJybnVtLCBjaGFyICpf
X2J1Ziwgc2l6ZV90IF9fYnVmbGVuKSB0aHJvdyAoKTsKZXh0ZXJuIGNoYXIgKnN0cmVycm9yX3Ig
KGludCBfX2Vycm51bSwgY2hhciAqX19idWYsIHNpemVfdCBfX2J1ZmxlbikgdGhyb3cgKCk7CgoK
CgpleHRlcm4gdm9pZCBfX2J6ZXJvICh2b2lkICpfX3MsIHNpemVfdCBfX24pIHRocm93ICgpOwoK
CgpleHRlcm4gdm9pZCBiY29weSAoX19jb25zdCB2b2lkICpfX3NyYywgdm9pZCAqX19kZXN0LCBz
aXplX3QgX19uKSB0aHJvdyAoKTsKCgpleHRlcm4gdm9pZCBiemVybyAodm9pZCAqX19zLCBzaXpl
X3QgX19uKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IGJjbXAgKF9fY29uc3Qgdm9pZCAqX19zMSwg
X19jb25zdCB2b2lkICpfX3MyLCBzaXplX3QgX19uKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRl
X18gKChfX3B1cmVfXykpOwoKCmV4dGVybiBjaGFyICppbmRleCAoX19jb25zdCBjaGFyICpfX3Ms
IGludCBfX2MpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCmV4dGVybiBj
aGFyICpyaW5kZXggKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19jKSB0aHJvdyAoKSBfX2F0dHJp
YnV0ZV9fICgoX19wdXJlX18pKTsKCgoKZXh0ZXJuIGludCBfX2ZmcyAoaW50IF9faSkgdGhyb3cg
KCkgX19hdHRyaWJ1dGVfXyAoKGNvbnN0KSk7CmV4dGVybiBpbnQgZmZzIChpbnQgX19pKSB0aHJv
dyAoKSBfX2F0dHJpYnV0ZV9fICgoY29uc3QpKTsKCgoKIyAyNzYgIi91c3IvaW5jbHVkZS9zdHJp
bmcuaCIgMwpleHRlcm4gaW50IF9fc3RyY2FzZWNtcCAoX19jb25zdCBjaGFyICpfX3MxLCBfX2Nv
bnN0IGNoYXIgKl9fczIpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7
CmV4dGVybiBpbnQgc3RyY2FzZWNtcCAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIg
Kl9fczIpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJu
IGludCBzdHJuY2FzZWNtcCAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIs
IHNpemVfdCBfX24pCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CiMg
MzAwICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMKZXh0ZXJuIGNoYXIgKnN0cnNlcCAoY2hhciAq
Kl9fcmVzdHJpY3QgX19zdHJpbmdwLAogICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19kZWxpbSkgdGhyb3cgKCk7CiMgMzY5ICIvdXNyL2luY2x1ZGUvc3RyaW5n
LmgiIDMKfQoKIyAxMiAicGFyc2UuaCIgMgoKIyAzMiAicGFyc2UuaCIKdHlwZWRlZiBzaWduZWQg
Y2hhciBDSFI7Cgp0eXBlZGVmIHNpZ25lZCBzaG9ydCBXUkQ7Cgp0eXBlZGVmIHNpZ25lZCBpbnQg
SU5UOwoKdHlwZWRlZiBzaWduZWQgbG9uZyBMTkc7Cgp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IFBU
UjsKCnR5cGVkZWYgc2lnbmVkIGNoYXIgU1RSOwoKCgpzdHJ1Y3QgcmNfZmlsZSB7CgogICAgICAg
ICAgIENIUiBjX3N0YXR1czsKIyA2MyAicGFyc2UuaCIKICAgICAgICAgICBTVFIgc19jbWQgWzIx
XTsKCiAgICAgICAgICAgU1RSIHNfYXJnIFsyMV07CgoKCgoKCgogICAgICAgICAgIFNUUiBzX3Bo
b25lIFsyMV07CgoKCgoKCiAgICAgICAgICAgV1JEIHdfY21kOwogICAgICAgICAgIFdSRCB3X2Fy
ZzsKCgoKfTsKCnN0cnVjdCByY19hcmcgewogICAgV1JEIHdfaWQ7CiAgICBXUkQgd19jb2RlOwp9
OwoKc3RydWN0IHJjX2NtZCB7CiAgICBXUkQgd19pZDsKICAgIFdSRCB3X2NvZGU7CiAgICBpbnQg
aV9hcmc7CiAgICBjb25zdCBzdHJ1Y3QKICAgICAgcmNfYXJnICphcmdzOwp9OwoKZXh0ZXJuIHZv
aWQgcGFyc2VfY29tbWFuZCgKICAgIGNvbnN0IFNUUiAqc19zdHIsCiAgICBzdHJ1Y3QgcmNfZmls
ZSAqZmlsZQopOwoKCmV4dGVybiBib29sIGlzd2hpdGUoCiAgICBDSFIgY19jaHIKKTsKCgpleHRl
cm4gYm9vbCBpc3ZhbGlkKAogICAgQ0hSIGNfY2hyCik7CgoKZXh0ZXJuIFdSRCBtYWtlX2NvZGUo
CiAgICBjb25zdCBTVFIgKnNfc3RyCik7CgoKCgoKZXh0ZXJuIFdSRCBtYXRjaF9jbWQoCiAgICBX
UkQgd19jb2RlLAogICAgY29uc3Qgc3RydWN0CiAgICAgIHJjX2NtZCAqY21kcwopOwoKCgpleHRl
cm4gV1JEIG1hdGNoX2FyZygKICAgIFdSRCB3X2NvZGUsCiAgICBjb25zdCBzdHJ1Y3QKICAgICAg
cmNfYXJnICphcmdzCik7CiMgOCAicGFyc2UuY3BwIiAyCiMgMjAgInBhcnNlLmNwcCIKc3RydWN0
IHJjX2FyZyBmaWdodGVyc1tdID0gewogICAgezAsIDB4NzI2fSwKICAgIHsxLCAweDcyMn0sCiAg
ICB7MiwgMHg2ODh9LAogICAgezMsIDB4MzMyfSwKICAgIHs0LCAweDc4NX0sCiAgICB7NSwgMHg2
NDd9LAogICAgezYsIDB4Mzk4fSwKICAgIHs3LCAweDM0Mn0sCgogICAgezAsIDB4NDI2fSwKICAg
IHsxLCAweDY3NH0sCiAgICB7MiwgMHg1Mjd9LAogICAgezMsIDB4NzI4fSwKICAgIHs0LCAweDY2
NH0sCiAgICB7NSwgMHg0NDl9LAogICAgezYsIDB4ODQyfSwKICAgIHs3LCAweDI5M30sCgogICAg
ezAsIDB4NzI0fSwKCiAgICB7LTIsIDB9Cn07CgpzdHJ1Y3QgcmNfYXJnIHdlYXBvbnNbXSA9IHsK
ICAgIHswLCAnQSd9LAoKCgoKCgoKICAgIHsxLCAnQid9LAoKCgoKCgoKICAgIHsyLCAnQyd9LAoK
CgoKCgoKICAgIHszLCAnRCd9LAoKCgoKCgoKICAgIHs0LCAnRSd9LAoKCgoKCgoKICAgIHs1LCAn
Rid9LAoKCgoKCgoKICAgIHs2LCAnRyd9LAoKCgoKCgoKICAgIHs3LCAnSCd9LAoKCgoKCgoKICAg
IHs4LCAnSSd9LAoKCgoKCgoKICAgIHs5LCAnSid9LAojIDEyNiAicGFyc2UuY3BwIgogICAgey0y
LCAwfQp9OwoKc3RydWN0IHJjX2NtZCBjb21tYW5kc1tdID0gewogICAgezAsIDB4ODczLCAxLCBf
X251bGx9LAogICAgezEsIDB4NzYyLCAxLCBmaWdodGVyc30sCiAgICB7MiwgMHgyMjgsIDAsIF9f
bnVsbH0sCgogICAgezMsIDB4Nzg2LCAwLCBfX251bGx9LAogICAgezQsIDB4Mjg4LCAxLCB3ZWFw
b25zfSwKICAgIHstMywgMHg3MjIsIDEsIF9fbnVsbH0sCgoKICAgIHs0LCAweDI4MiwgMSwgd2Vh
cG9uc30sCgogICAgey0yLCAwfQp9OwoKdm9pZCBwYXJzZV9jb21tYW5kKGNvbnN0IFNUUiAqc19z
dHIsIHN0cnVjdCByY19maWxlICpmaWxlKQp7CiAgICBjb25zdCBTVFIgKnBfc3RyOwogICAgU1RS
ICpwX2NweSwKICAgICAgICAqc19sZjsKICAgIFdSRCB3X2luZGV4LAogICAgICAgIHdfY29kZTsK
ICAgIHN0cnVjdCByY19hcmcgKmFyZ3M7CgogICAgZmlsZS0+Y19zdGF0dXMgPSAweDAwOwogICAg
cF9zdHIgPSBzX3N0cjsKICAgIHdoaWxlIChpc3doaXRlKCpwX3N0cikpIHsKICAgICAgICBpZiAo
ISoocF9zdHIrKykpIHsKY21kX2VtcHR5OgogICAgICAgICAgICAqKGZpbGUtPnNfY21kKSA9ICdc
MCc7CiAgICAgICAgICAgIGZpbGUtPndfY21kID0gLTI7CmFyZ19lbXB0eToKICAgICAgICAgICAg
KihmaWxlLT5zX2FyZykgPSAnXDAnOwogICAgICAgICAgICBmaWxlLT53X2FyZyA9IC0yOwogICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQogICAgcF9jcHkgPSBmaWxlLT5zX2NtZDsK
ICAgIGRvIHsKICAgICAgICBpZiAoaXN2YWxpZCgqcF9zdHIpKSB7CiAgICAgICAgICAgICoocF9j
cHkrKykgPSAqcF9zdHI7CiAgICAgICAgfQogICAgICAgIHBfc3RyKys7CiAgICB9IHdoaWxlICgh
aXN3aGl0ZSgqcF9zdHIpKTsKICAgICpwX2NweSA9ICdcMCc7CiAgICBpZiAoIShmaWxlLT5zX2Nt
ZCkpIHsKICAgICAgICBnb3RvIGNtZF9lbXB0eTsKICAgIH0KICAgIGVsc2UgaWYgKCh3X2NvZGUg
PSBtYWtlX2NvZGUoZmlsZS0+c19jbWQpKSA8IDApIHsKICAgICAgICBmaWxlLT53X2NtZCA9IC0x
OwogICAgfQogICAgZWxzZSB7CiAgICAgICAgaWYgKCh3X2luZGV4ID0gbWF0Y2hfY21kKHdfY29k
ZSwgY29tbWFuZHMpKSA8IDApIHsKICAgICAgICAgICAgZmlsZS0+d19jbWQgPSB3X2luZGV4Owog
ICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgZmlsZS0+d19jbWQgPSBjb21tYW5k
c1t3X2luZGV4XS53X2lkOwogICAgICAgIH0KICAgIH0KICAgIHdoaWxlIChpc3doaXRlKCpwX3N0
cikpIHsKICAgICAgICBpZiAoISoocF9zdHIrKykpIHsKICAgICAgICAgICAgZ290byBhcmdfZW1w
dHk7CiAgICAgICAgfQogICAgfQogICAgcF9jcHkgPSBmaWxlLT5zX2FyZzsKICAgIGRvIHsKICAg
ICAgICBpZiAoaXN2YWxpZCgqcF9zdHIpKSB7CiAgICAgICAgICAgICoocF9jcHkrKykgPSAqcF9z
dHI7CiAgICAgICAgfQogICAgICAgIHBfc3RyKys7CiAgICB9IHdoaWxlICghaXN3aGl0ZSgqcF9z
dHIpKSB7CiAgICAqcF9jcHkgPSAnXDAnOwogICAgaWYgKCEoZmlsZS0+c19hcmcpKSB7CiAgICAg
ICAgZ290byBhcmdfZW1wdHk7CiAgICB9CiAgICBlbHNlIGlmICghKGFyZ3MgPSBjb21tYW5kc1tp
bmRleF0uYXJncykpIHsKICAgICAgICBmaWxlLT53X2FyZyA9IC0yOwogICAgfQogICAgZWxzZSBp
ZiAoKHdfY29kZSA9IG1ha2VfY29kZShmaWxlLT5zX2FyZykpIDwgMCkgewogICAgICAgIGZpbGUt
PndfYXJnID0gLTE7CiAgICB9CiAgICBlbHNlIGlmICgod19pbmRleCA9IG1hdGNoX2FyZyh3X2Nv
ZGUsIGFyZ3MpKSA8IDApIHsKICAgICAgICBmaWxlLT53X2FyZyA9IHdfaW5kZXg7CiAgICB9CiAg
ICBlbHNlIHsKICAgICAgICBmaWxlLT53X2FyZyA9IGFyZ3Nbd19pbmRleF0ud19pZDsKICAgIH0K
fQoKYm9vbCBpc3doaXRlKENIUiBjX2NocikKewogICAgc3dpdGNoIChjX2NocikgewogICAgICAg
IGNhc2UgJ1wwJzoKICAgICAgICBjYXNlICdcdCc6CiAgICAgICAgY2FzZSAnXG4nOgogICAgICAg
IGNhc2UgJ1xyJzoKICAgICAgICBjYXNlICcgJzoKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQp9Cgpib29sIGlz
dmFsaWQoQ0hSIGNfY2hyKSB7CiAgICByZXR1cm4gKChjX2NociA+PSAnQScpICYmIChjX2NociA8
PSAnWicpKSB8fCAoKGNfY2hyID49ICdhJykgJiYgKGNfY2hyIDw9ICd6JykpOwp9CgpXUkQgbWFr
ZV9jb2RlKGNvbnN0IFNUUiAqc19zdHIpCnsKICAgIFdSRCB3X2NvZGU7CgogICAgaWYgKGlzd2hp
dGUoc19zdHJbMV0pICYmIGlzdmFsaWQoKnNfc3RyKSkgewogICAgICAgIHJldHVybiB0b3VwcGVy
KCpzX3N0cik7CiAgICB9CiAgICBmb3IgKFdSRCB3X2MgPSAwOyB3X2MgPCAzOyB3X2MrKykgewog
ICAgICAgIHN3aXRjaCAoc19zdHJbd19jXSkgewogICAgICAgICAgICBjYXNlICdBJzoKICAgICAg
ICAgICAgY2FzZSAnQic6CiAgICAgICAgICAgIGNhc2UgJ0MnOgogICAgICAgICAgICBjYXNlICdh
JzoKICAgICAgICAgICAgY2FzZSAnYic6CiAgICAgICAgICAgIGNhc2UgJ2MnOgogICAgICAgICAg
ICAgICAgd19jb2RlID0gKCh1bnNpZ25lZCBpbnQpICh3X2NvZGUpICYgfigoKDEgPDwgKDQpKSAt
IDEpIDw8ICgoNCkgKiAoMiAtIHdfYykpKSB8ICgoMikgPDwgKCg0KSAqICgyIC0gd19jKSkpKTsK
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdEJzoKICAgICAgICAgICAg
Y2FzZSAnRSc6CiAgICAgICAgICAgIGNhc2UgJ0YnOgogICAgICAgICAgICBjYXNlICdkJzoKICAg
ICAgICAgICAgY2FzZSAnZSc6CiAgICAgICAgICAgIGNhc2UgJ2YnOgogICAgICAgICAgICAgICAg
d19jb2RlID0gKCh1bnNpZ25lZCBpbnQpICh3X2NvZGUpICYgfigoKDEgPDwgKDQpKSAtIDEpIDw8
ICgoNCkgKiAoMiAtIHdfYykpKSB8ICgoMykgPDwgKCg0KSAqICgyIC0gd19jKSkpKTsKICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdHJzoKICAgICAgICAgICAgY2FzZSAn
SCc6CiAgICAgICAgICAgIGNhc2UgJ0knOgogICAgICAgICAgICBjYXNlICdnJzoKICAgICAgICAg
ICAgY2FzZSAnaCc6CiAgICAgICAgICAgIGNhc2UgJ2knOgogICAgICAgICAgICAgICAgd19jb2Rl
ID0gKCh1bnNpZ25lZCBpbnQpICh3X2NvZGUpICYgfigoKDEgPDwgKDQpKSAtIDEpIDw8ICgoNCkg
KiAoMiAtIHdfYykpKSB8ICgoNCkgPDwgKCg0KSAqICgyIC0gd19jKSkpKTsKICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdKJzoKICAgICAgICAgICAgY2FzZSAnSyc6CiAg
ICAgICAgICAgIGNhc2UgJ0wnOgogICAgICAgICAgICBjYXNlICdqJzoKICAgICAgICAgICAgY2Fz
ZSAnayc6CiAgICAgICAgICAgIGNhc2UgJ2wnOgogICAgICAgICAgICAgICAgd19jb2RlID0gKCh1
bnNpZ25lZCBpbnQpICh3X2NvZGUpICYgfigoKDEgPDwgKDQpKSAtIDEpIDw8ICgoNCkgKiAoMiAt
IHdfYykpKSB8ICgoNSkgPDwgKCg0KSAqICgyIC0gd19jKSkpKTsKICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICBjYXNlICdNJzoKICAgICAgICAgICAgY2FzZSAnTic6CiAgICAgICAg
ICAgIGNhc2UgJ08nOgogICAgICAgICAgICBjYXNlICdtJzoKICAgICAgICAgICAgY2FzZSAnbic6
CiAgICAgICAgICAgIGNhc2UgJ28nOgogICAgICAgICAgICAgICAgd19jb2RlID0gKCh1bnNpZ25l
ZCBpbnQpICh3X2NvZGUpICYgfigoKDEgPDwgKDQpKSAtIDEpIDw8ICgoNCkgKiAoMiAtIHdfYykp
KSB8ICgoNikgPDwgKCg0KSAqICgyIC0gd19jKSkpKTsKICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICBjYXNlICdQJzoKICAgICAgICAgICAgY2FzZSAnUSc6CiAgICAgICAgICAgIGNh
c2UgJ1InOgogICAgICAgICAgICBjYXNlICdTJzoKICAgICAgICAgICAgY2FzZSAncCc6CiAgICAg
ICAgICAgIGNhc2UgJ3EnOgogICAgICAgICAgICBjYXNlICdyJzoKICAgICAgICAgICAgY2FzZSAn
cyc6CiAgICAgICAgICAgICAgICB3X2NvZGUgPSAoKHVuc2lnbmVkIGludCkgKHdfY29kZSkgJiB+
KCgoMSA8PCAoNCkpIC0gMSkgPDwgKCg0KSAqICgyIC0gd19jKSkpIHwgKCg3KSA8PCAoKDQpICog
KDIgLSB3X2MpKSkpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgJ1Qn
OgogICAgICAgICAgICBjYXNlICdVJzoKICAgICAgICAgICAgY2FzZSAnVic6CiAgICAgICAgICAg
IGNhc2UgJ3QnOgogICAgICAgICAgICBjYXNlICd1JzoKICAgICAgICAgICAgY2FzZSAndic6CiAg
ICAgICAgICAgICAgICB3X2NvZGUgPSAoKHVuc2lnbmVkIGludCkgKHdfY29kZSkgJiB+KCgoMSA8
PCAoNCkpIC0gMSkgPDwgKCg0KSAqICgyIC0gd19jKSkpIHwgKCg4KSA8PCAoKDQpICogKDIgLSB3
X2MpKSkpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgJ1cnOgogICAg
ICAgICAgICBjYXNlICdYJzoKICAgICAgICAgICAgY2FzZSAnWSc6CiAgICAgICAgICAgIGNhc2Ug
J1onOgogICAgICAgICAgICBjYXNlICd3JzoKICAgICAgICAgICAgY2FzZSAneCc6CiAgICAgICAg
ICAgIGNhc2UgJ3knOgogICAgICAgICAgICBjYXNlICd6JzoKICAgICAgICAgICAgICAgIHdfY29k
ZSA9ICgodW5zaWduZWQgaW50KSAod19jb2RlKSAmIH4oKCgxIDw8ICg0KSkgLSAxKSA8PCAoKDQp
ICogKDIgLSB3X2MpKSkgfCAoKDkpIDw8ICgoNCkgKiAoMiAtIHdfYykpKSk7CiAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgIHJldHVybiAw
OwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiB3X2NvZGU7Cn0KCldSRCBtYXRjaF9jbWQoV1JE
IHdfY29kZSwgY29uc3Qgc3RydWN0IHJjX2NtZCAqY29tbWFuZHMpCnsKICAgIGZvciAoV1JEIHdf
YyA9IDA7IGNvbW1hbmRzW3dfY10ud19pZCAhPSAtMjsgd19jKyspIHsKICAgICAgICBpZiAod19j
b2RlID09IGNvbW1hbmRzW3dfY10ud19jb2RlKSB7CiAgICAgICAgICAgIHJldHVybiB3X2M7CiAg
ICAgICAgfQogICAgfQogICAgcmV0dXJuIC0xOwp9CgpXUkQgbWF0Y2hfYXJnKFdSRCB3X2NvZGUs
IGNvbnN0IHN0cnVjdCByY19hcmcgKmFyZ3MpCnsKICAgIGZvciAoV1JEIHdfYyA9IDA7IGFyZ3Nb
d19jXS53X2lkICE9IC0yOyB3X2MrKykgewogICAgICAgIGlmICh3X2NvZGUgPT0gYXJnc1t3X2Nd
LndfY29kZSkgewogICAgICAgICAgICByZXR1cm4gd19jOwogICAgICAgIH0KICAgIH0KICAgIHJl
dHVybiAtMTsKfQoAAAAAAAAAAAAAAAAAAAAAAAAAAHNtc2luLmlpAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAwMTAwNjQ0ADAwMDEwMDcAMDAwMDA1NQAwMDAwMDEwNjc3MQAwNzMy
NzI0MTcyMgAwMTIxNTcAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAdXN0YXIgIAB0aW1vAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHBvcHVzZXJzAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIyAxICJzbXNpbi5jcHAiCgojIDggInBhcnNl
LmgiIDEKIyAyNyAiL3Vzci9pbmNsdWRlL2N0eXBlLmgiIDEgMwojIDI4MyAiL3Vzci9pbmNsdWRl
L2ZlYXR1cmVzLmgiIDEgMwojIDMxMSAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDMKIyAyNyAi
L3Vzci9pbmNsdWRlL2N0eXBlLmgiIDIgMwoKIyAzMCAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMu
aCIgMSAzCiMgMTk5ICIvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxpbnV4LzIuOTYvaW5j
bHVkZS9zdGRkZWYuaCIgMSAzCnR5cGVkZWYgdW5zaWduZWQgaW50IHNpemVfdDsKIyAzMCAiL3Vz
ci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMiAzCgoKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIF9fdV9j
aGFyOwp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9fdV9zaG9ydDsKdHlwZWRlZiB1bnNpZ25lZCBp
bnQgX191X2ludDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIF9fdV9sb25nOwoKX19leHRlbnNpb25f
XyB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX191X3F1YWRfdDsKX19leHRlbnNpb25f
XyB0eXBlZGVmIGxvbmcgbG9uZyBpbnQgX19xdWFkX3Q7CiMgNDkgIi91c3IvaW5jbHVkZS9iaXRz
L3R5cGVzLmgiIDMKdHlwZWRlZiBzaWduZWQgY2hhciBfX2ludDhfdDsKdHlwZWRlZiB1bnNpZ25l
ZCBjaGFyIF9fdWludDhfdDsKdHlwZWRlZiBzaWduZWQgc2hvcnQgaW50IF9faW50MTZfdDsKdHlw
ZWRlZiB1bnNpZ25lZCBzaG9ydCBpbnQgX191aW50MTZfdDsKdHlwZWRlZiBzaWduZWQgaW50IF9f
aW50MzJfdDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX191aW50MzJfdDsKCl9fZXh0ZW5zaW9uX18g
dHlwZWRlZiBzaWduZWQgbG9uZyBsb25nIGludCBfX2ludDY0X3Q7Cl9fZXh0ZW5zaW9uX18gdHlw
ZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fdWludDY0X3Q7Cgp0eXBlZGVmIF9fcXVhZF90
ICpfX3FhZGRyX3Q7Cgp0eXBlZGVmIF9fdV9xdWFkX3QgX19kZXZfdDsKdHlwZWRlZiBfX3VfaW50
IF9fdWlkX3Q7CnR5cGVkZWYgX191X2ludCBfX2dpZF90Owp0eXBlZGVmIF9fdV9sb25nIF9faW5v
X3Q7CnR5cGVkZWYgX191X2ludCBfX21vZGVfdDsKdHlwZWRlZiBfX3VfaW50IF9fbmxpbmtfdDsK
dHlwZWRlZiBsb25nIGludCBfX29mZl90Owp0eXBlZGVmIF9fcXVhZF90IF9fbG9mZl90Owp0eXBl
ZGVmIGludCBfX3BpZF90Owp0eXBlZGVmIGludCBfX3NzaXplX3Q7CnR5cGVkZWYgX191X2xvbmcg
X19ybGltX3Q7CnR5cGVkZWYgX191X3F1YWRfdCBfX3JsaW02NF90Owp0eXBlZGVmIF9fdV9pbnQg
X19pZF90OwoKdHlwZWRlZiBzdHJ1Y3QKICB7CiAgICBpbnQgX192YWxbMl07CiAgfSBfX2ZzaWRf
dDsKCgp0eXBlZGVmIGludCBfX2RhZGRyX3Q7CnR5cGVkZWYgY2hhciAqX19jYWRkcl90Owp0eXBl
ZGVmIGxvbmcgaW50IF9fdGltZV90Owp0eXBlZGVmIHVuc2lnbmVkIGludCBfX3VzZWNvbmRzX3Q7
CnR5cGVkZWYgbG9uZyBpbnQgX19zdXNlY29uZHNfdDsKdHlwZWRlZiBsb25nIGludCBfX3N3Ymxr
X3Q7Cgp0eXBlZGVmIGxvbmcgaW50IF9fY2xvY2tfdDsKCgp0eXBlZGVmIGludCBfX2Nsb2NraWRf
dDsKCgp0eXBlZGVmIGludCBfX3RpbWVyX3Q7CgoKCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQg
X19mZF9tYXNrOwoKCiMgMTA5ICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAzCnR5cGVkZWYg
c3RydWN0CiAgewoKCgoKCgogICAgX19mZF9tYXNrIF9fZmRzX2JpdHNbMTAyNCAvICg4ICogc2l6
ZW9mIChfX2ZkX21hc2spKV07CgoKICB9IF9fZmRfc2V0OwoKCnR5cGVkZWYgaW50IF9fa2V5X3Q7
CgoKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBpbnQgX19pcGNfcGlkX3Q7CgoKCnR5cGVkZWYgbG9u
ZyBpbnQgX19ibGtzaXplX3Q7CgoKCgp0eXBlZGVmIGxvbmcgaW50IF9fYmxrY250X3Q7CnR5cGVk
ZWYgX19xdWFkX3QgX19ibGtjbnQ2NF90OwoKCnR5cGVkZWYgX191X2xvbmcgX19mc2Jsa2NudF90
Owp0eXBlZGVmIF9fdV9xdWFkX3QgX19mc2Jsa2NudDY0X3Q7CgoKdHlwZWRlZiBfX3VfbG9uZyBf
X2ZzZmlsY250X3Q7CnR5cGVkZWYgX191X3F1YWRfdCBfX2ZzZmlsY250NjRfdDsKCgp0eXBlZGVm
IF9fdV9xdWFkX3QgX19pbm82NF90OwoKCnR5cGVkZWYgX19sb2ZmX3QgX19vZmY2NF90OwoKCnR5
cGVkZWYgbG9uZyBpbnQgX190X3NjYWxhcl90Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IF9f
dF91c2NhbGFyX3Q7CgoKdHlwZWRlZiBpbnQgX19pbnRwdHJfdDsKCgp0eXBlZGVmIHVuc2lnbmVk
IGludCBfX3NvY2tsZW5fdDsKCgoKCgojIDI0ICIvdXNyL2luY2x1ZGUvYml0cy9wdGhyZWFkdHlw
ZXMuaCIgMSAzCiMgNjggIi91c3IvaW5jbHVkZS9iaXRzL3NjaGVkLmgiIDEgMwpzdHJ1Y3QgX19z
Y2hlZF9wYXJhbQogIHsKICAgIGludCBzY2hlZF9wcmlvcml0eTsKICB9OwojIDI0ICIvdXNyL2lu
Y2x1ZGUvYml0cy9wdGhyZWFkdHlwZXMuaCIgMiAzCgoKc3RydWN0IF9wdGhyZWFkX2Zhc3Rsb2Nr
CnsKICBsb25nIGludCBfX3N0YXR1czsKICBpbnQgX19zcGlubG9jazsKCn07CgoKCnR5cGVkZWYg
c3RydWN0IF9wdGhyZWFkX2Rlc2NyX3N0cnVjdCAqX3B0aHJlYWRfZGVzY3I7CgoKCgoKdHlwZWRl
ZiBzdHJ1Y3QKewogIGludCBfX2RldGFjaHN0YXRlOwogIGludCBfX3NjaGVkcG9saWN5OwogIHN0
cnVjdCBfX3NjaGVkX3BhcmFtIF9fc2NoZWRwYXJhbTsKICBpbnQgX19pbmhlcml0c2NoZWQ7CiAg
aW50IF9fc2NvcGU7CiAgc2l6ZV90IF9fZ3VhcmRzaXplOwogIGludCBfX3N0YWNrYWRkcl9zZXQ7
CiAgdm9pZCAqX19zdGFja2FkZHI7CiAgc2l6ZV90IF9fc3RhY2tzaXplOwp9IHB0aHJlYWRfYXR0
cl90OwoKCgp0eXBlZGVmIHN0cnVjdAp7CiAgc3RydWN0IF9wdGhyZWFkX2Zhc3Rsb2NrIF9fY19s
b2NrOwogIF9wdGhyZWFkX2Rlc2NyIF9fY193YWl0aW5nOwp9IHB0aHJlYWRfY29uZF90OwoKCgp0
eXBlZGVmIHN0cnVjdAp7CiAgaW50IF9fZHVtbXk7Cn0gcHRocmVhZF9jb25kYXR0cl90OwoKCnR5
cGVkZWYgdW5zaWduZWQgaW50IHB0aHJlYWRfa2V5X3Q7CgoKCgoKdHlwZWRlZiBzdHJ1Y3QKewog
IGludCBfX21fcmVzZXJ2ZWQ7CiAgaW50IF9fbV9jb3VudDsKICBfcHRocmVhZF9kZXNjciBfX21f
b3duZXI7CiAgaW50IF9fbV9raW5kOwogIHN0cnVjdCBfcHRocmVhZF9mYXN0bG9jayBfX21fbG9j
azsKfSBwdGhyZWFkX211dGV4X3Q7CgoKCnR5cGVkZWYgc3RydWN0CnsKICBpbnQgX19tdXRleGtp
bmQ7Cn0gcHRocmVhZF9tdXRleGF0dHJfdDsKCgoKdHlwZWRlZiBpbnQgcHRocmVhZF9vbmNlX3Q7
CgoKIyAxNDAgIi91c3IvaW5jbHVkZS9iaXRzL3B0aHJlYWR0eXBlcy5oIiAzCnR5cGVkZWYgdW5z
aWduZWQgbG9uZyBpbnQgcHRocmVhZF90OwoKIyAxNjYgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVz
LmgiIDIgMwojIDI4ICIvdXNyL2luY2x1ZGUvY3R5cGUuaCIgMiAzCgpleHRlcm4gIkMiIHsKCiMg
NDEgIi91c3IvaW5jbHVkZS9jdHlwZS5oIiAzCiMgMzggIi91c3IvaW5jbHVkZS9lbmRpYW4uaCIg
MSAzCiMgNDEgIi91c3IvaW5jbHVkZS9jdHlwZS5oIiAyIDMKCgoKCgoKZW51bQp7CiAgX0lTdXBw
ZXIgPSAoKDApIDwgOCA/ICgoMSA8PCAoMCkpIDw8IDgpIDogKCgxIDw8ICgwKSkgPj4gOCkpLAog
IF9JU2xvd2VyID0gKCgxKSA8IDggPyAoKDEgPDwgKDEpKSA8PCA4KSA6ICgoMSA8PCAoMSkpID4+
IDgpKSwKICBfSVNhbHBoYSA9ICgoMikgPCA4ID8gKCgxIDw8ICgyKSkgPDwgOCkgOiAoKDEgPDwg
KDIpKSA+PiA4KSksCiAgX0lTZGlnaXQgPSAoKDMpIDwgOCA/ICgoMSA8PCAoMykpIDw8IDgpIDog
KCgxIDw8ICgzKSkgPj4gOCkpLAogIF9JU3hkaWdpdCA9ICgoNCkgPCA4ID8gKCgxIDw8ICg0KSkg
PDwgOCkgOiAoKDEgPDwgKDQpKSA+PiA4KSksCiAgX0lTc3BhY2UgPSAoKDUpIDwgOCA/ICgoMSA8
PCAoNSkpIDw8IDgpIDogKCgxIDw8ICg1KSkgPj4gOCkpLAogIF9JU3ByaW50ID0gKCg2KSA8IDgg
PyAoKDEgPDwgKDYpKSA8PCA4KSA6ICgoMSA8PCAoNikpID4+IDgpKSwKICBfSVNncmFwaCA9ICgo
NykgPCA4ID8gKCgxIDw8ICg3KSkgPDwgOCkgOiAoKDEgPDwgKDcpKSA+PiA4KSksCiAgX0lTYmxh
bmsgPSAoKDgpIDwgOCA/ICgoMSA8PCAoOCkpIDw8IDgpIDogKCgxIDw8ICg4KSkgPj4gOCkpLAog
IF9JU2NudHJsID0gKCg5KSA8IDggPyAoKDEgPDwgKDkpKSA8PCA4KSA6ICgoMSA8PCAoOSkpID4+
IDgpKSwKICBfSVNwdW5jdCA9ICgoMTApIDwgOCA/ICgoMSA8PCAoMTApKSA8PCA4KSA6ICgoMSA8
PCAoMTApKSA+PiA4KSksCiAgX0lTYWxudW0gPSAoKDExKSA8IDggPyAoKDEgPDwgKDExKSkgPDwg
OCkgOiAoKDEgPDwgKDExKSkgPj4gOCkpCn07CiMgNzUgIi91c3IvaW5jbHVkZS9jdHlwZS5oIiAz
CmV4dGVybiBfX2NvbnN0IHVuc2lnbmVkIHNob3J0IGludCAqX19jdHlwZV9iOwpleHRlcm4gX19j
b25zdCBfX2ludDMyX3QgKl9fY3R5cGVfdG9sb3dlcjsKZXh0ZXJuIF9fY29uc3QgX19pbnQzMl90
ICpfX2N0eXBlX3RvdXBwZXI7CgojIDkxICIvdXNyL2luY2x1ZGUvY3R5cGUuaCIgMwpleHRlcm4g
aW50IGlzYWxudW0gKGludCkgdGhyb3cgKCk7CmV4dGVybiBpbnQgaXNhbHBoYSAoaW50KSB0aHJv
dyAoKTsKZXh0ZXJuIGludCBpc2NudHJsIChpbnQpIHRocm93ICgpOwpleHRlcm4gaW50IGlzZGln
aXQgKGludCkgdGhyb3cgKCk7CmV4dGVybiBpbnQgaXNsb3dlciAoaW50KSB0aHJvdyAoKTsKZXh0
ZXJuIGludCBpc2dyYXBoIChpbnQpIHRocm93ICgpOwpleHRlcm4gaW50IGlzcHJpbnQgKGludCkg
dGhyb3cgKCk7CmV4dGVybiBpbnQgaXNwdW5jdCAoaW50KSB0aHJvdyAoKTsKZXh0ZXJuIGludCBp
c3NwYWNlIChpbnQpIHRocm93ICgpOwpleHRlcm4gaW50IGlzdXBwZXIgKGludCkgdGhyb3cgKCk7
CmV4dGVybiBpbnQgaXN4ZGlnaXQgKGludCkgdGhyb3cgKCk7CgoKCgoKCgpleHRlcm4gaW50IHRv
bG93ZXIgKGludCBfX2MpIHRocm93ICgpOwoKCmV4dGVybiBpbnQgdG91cHBlciAoaW50IF9fYykg
dGhyb3cgKCk7CgoKCgoKCmV4dGVybiBpbnQgaXNhc2NpaSAoaW50IF9fYykgdGhyb3cgKCk7CgoK
CmV4dGVybiBpbnQgdG9hc2NpaSAoaW50IF9fYykgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgX3Rv
dXBwZXIgKGludCkgdGhyb3cgKCk7CmV4dGVybiBpbnQgX3RvbG93ZXIgKGludCkgdGhyb3cgKCk7
CiMgMjc3ICIvdXNyL2luY2x1ZGUvY3R5cGUuaCIgMwp9CgojIDggInBhcnNlLmgiIDIKCiMgMzgg
Ii91c3IvaW5jbHVkZS9nZXRvcHQuaCIgMSAzCmV4dGVybiAiQyIgewojIDQ3ICIvdXNyL2luY2x1
ZGUvZ2V0b3B0LmgiIDMKZXh0ZXJuIGNoYXIgKm9wdGFyZzsKIyA2MSAiL3Vzci9pbmNsdWRlL2dl
dG9wdC5oIiAzCmV4dGVybiBpbnQgb3B0aW5kOwoKCgoKZXh0ZXJuIGludCBvcHRlcnI7CgoKCmV4
dGVybiBpbnQgb3B0b3B0OwoKIyA5NCAiL3Vzci9pbmNsdWRlL2dldG9wdC5oIiAzCnN0cnVjdCBv
cHRpb24KewoKICBjb25zdCBjaGFyICpuYW1lOwoKCgoKCiAgaW50IGhhc19hcmc7CiAgaW50ICpm
bGFnOwogIGludCB2YWw7Cn07CgoKCiMgMTQ1ICIvdXNyL2luY2x1ZGUvZ2V0b3B0LmgiIDMKZXh0
ZXJuIGludCBnZXRvcHQgKGludCBfX2FyZ2MsIGNoYXIgKmNvbnN0ICpfX2FyZ3YsIGNvbnN0IGNo
YXIgKl9fc2hvcnRvcHRzKTsKCgoKCgpleHRlcm4gaW50IGdldG9wdF9sb25nIChpbnQgX19hcmdj
LCBjaGFyICpjb25zdCAqX19hcmd2LCBjb25zdCBjaGFyICpfX3Nob3J0b3B0cywKICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IG9wdGlvbiAqX19sb25nb3B0cywgaW50ICpfX2xv
bmdpbmQpOwpleHRlcm4gaW50IGdldG9wdF9sb25nX29ubHkgKGludCBfX2FyZ2MsIGNoYXIgKmNv
bnN0ICpfX2FyZ3YsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqX19z
aG9ydG9wdHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IG9wdGlv
biAqX19sb25nb3B0cywgaW50ICpfX2xvbmdpbmQpOwoKCmV4dGVybiBpbnQgX2dldG9wdF9pbnRl
cm5hbCAoaW50IF9fYXJnYywgY2hhciAqY29uc3QgKl9fYXJndiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBjaGFyICpfX3Nob3J0b3B0cywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBzdHJ1Y3Qgb3B0aW9uICpfX2xvbmdvcHRzLCBpbnQgKl9fbG9uZ2luZCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19sb25nX29ubHkpOwojIDE3NCAiL3Vz
ci9pbmNsdWRlL2dldG9wdC5oIiAzCn0KIyA5ICJwYXJzZS5oIiAyCgojIDI5ICIvdXNyL2luY2x1
ZGUvc3RkaW8uaCIgMSAzCmV4dGVybiAiQyIgewoKCgoKCgoKCgojIDQzICIvdXNyL2xpYi9nY2Mt
bGliL2kzODYtcmVkaGF0LWxpbnV4LzIuOTYvaW5jbHVkZS9zdGRhcmcuaCIgMSAzCnR5cGVkZWYg
X19idWlsdGluX3ZhX2xpc3QgX19nbnVjX3ZhX2xpc3Q7CiMgMzkgIi91c3IvaW5jbHVkZS9zdGRp
by5oIiAyIDMKIyA0OCAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMKdHlwZWRlZiBzdHJ1Y3QgX0lP
X0ZJTEUgRklMRTsKCiMgNTggIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzCiMgMzEgIi91c3IvaW5j
bHVkZS9saWJpby5oIiAxIDMKIyAxNSAiL3Vzci9pbmNsdWRlL19HX2NvbmZpZy5oIiAxIDMKIyAz
MTIgIi91c3IvbGliL2djYy1saWIvaTM4Ni1yZWRoYXQtbGludXgvMi45Ni9pbmNsdWRlL3N0ZGRl
Zi5oIiAxIDMKdHlwZWRlZiB1bnNpZ25lZCBpbnQgd2ludF90OwojIDE1ICIvdXNyL2luY2x1ZGUv
X0dfY29uZmlnLmgiIDIgMwojIDI1ICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgiIDMKIyA0NiAi
L3Vzci9pbmNsdWRlL3djaGFyLmgiIDEgMwojIDYyICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMwp0
eXBlZGVmIHN0cnVjdAp7CiAgaW50IF9fY291bnQ7CiAgdW5pb24KICB7CiAgICB3aW50X3QgX193
Y2g7CiAgICBjaGFyIF9fd2NoYls0XTsKICB9IF9fdmFsdWU7Cn0gX19tYnN0YXRlX3Q7CiMgMjUg
Ii91c3IvaW5jbHVkZS9fR19jb25maWcuaCIgMiAzCgp0eXBlZGVmIHN0cnVjdAp7CiAgX19vZmZf
dCBfX3BvczsKICBfX21ic3RhdGVfdCBfX3N0YXRlOwp9IF9HX2Zwb3NfdDsKdHlwZWRlZiBzdHJ1
Y3QKewogIF9fb2ZmNjRfdCBfX3BvczsKICBfX21ic3RhdGVfdCBfX3N0YXRlOwp9IF9HX2Zwb3M2
NF90OwojIDQ1ICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgiIDMKIyAyOSAiL3Vzci9pbmNsdWRl
L2djb252LmgiIDEgMwojIDQ2ICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMSAzCiMgMjkgIi91c3Iv
aW5jbHVkZS9nY29udi5oIiAyIDMKCgoKCgoKCmVudW0KewogIF9fR0NPTlZfT0sgPSAwLAogIF9f
R0NPTlZfTk9DT05WLAogIF9fR0NPTlZfTk9EQiwKICBfX0dDT05WX05PTUVNLAoKICBfX0dDT05W
X0VNUFRZX0lOUFVULAogIF9fR0NPTlZfRlVMTF9PVVRQVVQsCiAgX19HQ09OVl9JTExFR0FMX0lO
UFVULAogIF9fR0NPTlZfSU5DT01QTEVURV9JTlBVVCwKCiAgX19HQ09OVl9JTExFR0FMX0RFU0NS
SVBUT1IsCiAgX19HQ09OVl9JTlRFUk5BTF9FUlJPUgp9OwoKCgplbnVtCnsKICBfX0dDT05WX0lT
X0xBU1QgPSAweDAwMDEsCiAgX19HQ09OVl9JR05PUkVfRVJST1JTID0gMHgwMDAyCn07CgoKCnN0
cnVjdCBfX2djb252X3N0ZXA7CnN0cnVjdCBfX2djb252X3N0ZXBfZGF0YTsKc3RydWN0IF9fZ2Nv
bnZfbG9hZGVkX29iamVjdDsKc3RydWN0IF9fZ2NvbnZfdHJhbnNfZGF0YTsKCgoKdHlwZWRlZiBp
bnQgKCpfX2djb252X2ZjdCkgKHN0cnVjdCBfX2djb252X3N0ZXAgKiwgc3RydWN0IF9fZ2NvbnZf
c3RlcF9kYXRhICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKiosIF9fY29uc3QgdW5zaWduZWQgY2hhciAqLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgY2hhciAqKiwgc2l6ZV90ICosIGludCwgaW50KTsKCgp0eXBlZGVmIGlu
dCAoKl9fZ2NvbnZfaW5pdF9mY3QpIChzdHJ1Y3QgX19nY29udl9zdGVwICopOwp0eXBlZGVmIHZv
aWQgKCpfX2djb252X2VuZF9mY3QpIChzdHJ1Y3QgX19nY29udl9zdGVwICopOwoKCgp0eXBlZGVm
IGludCAoKl9fZ2NvbnZfdHJhbnNfZmN0KSAoc3RydWN0IF9fZ2NvbnZfc3RlcCAqLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IF9fZ2NvbnZfc3RlcF9kYXRhICosIHZv
aWQgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgdW5zaWduZWQg
Y2hhciAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB1bnNpZ25l
ZCBjaGFyICoqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB1bnNp
Z25lZCBjaGFyICosIHVuc2lnbmVkIGNoYXIgKiosCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgKik7CgoKdHlwZWRlZiBpbnQgKCpfX2djb252X3RyYW5zX2NvbnRleHRf
ZmN0KSAoc3RydWN0IF9fZ2NvbnZfdHJhbnNfZGF0YSAqLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB1bnNpZ25lZCBjaGFyICosCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKiwg
dW5zaWduZWQgY2hhciAqKTsKCgp0eXBlZGVmIGludCAoKl9fZ2NvbnZfdHJhbnNfcXVlcnlfZmN0
KSAoX19jb25zdCBjaGFyICosIF9fY29uc3QgY2hhciAqKiosCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3QgKik7CgoKdHlwZWRlZiBpbnQgKCpfX2djb252X3Ry
YW5zX2luaXRfZmN0KSAodm9pZCAqKiwgY29uc3QgY2hhciAqKTsKdHlwZWRlZiB2b2lkICgqX19n
Y29udl90cmFuc19lbmRfZmN0KSAodm9pZCAqKTsKCnN0cnVjdCBfX2djb252X3RyYW5zX2RhdGEK
ewoKICBfX2djb252X3RyYW5zX2ZjdCBfX3RyYW5zX2ZjdDsKICBfX2djb252X3RyYW5zX2NvbnRl
eHRfZmN0IF9fdHJhbnNfY29udGV4dF9mY3Q7CiAgX19nY29udl90cmFuc19lbmRfZmN0IF9fdHJh
bnNfZW5kX2ZjdDsKICB2b2lkICpfX2RhdGE7CiAgc3RydWN0IF9fZ2NvbnZfdHJhbnNfZGF0YSAq
X19uZXh0Owp9OwoKCgpzdHJ1Y3QgX19nY29udl9zdGVwCnsKICBzdHJ1Y3QgX19nY29udl9sb2Fk
ZWRfb2JqZWN0ICpfX3NobGliX2hhbmRsZTsKICBfX2NvbnN0IGNoYXIgKl9fbW9kbmFtZTsKCiAg
aW50IF9fY291bnRlcjsKCiAgX19jb25zdCBjaGFyICpfX2Zyb21fbmFtZTsKICBfX2NvbnN0IGNo
YXIgKl9fdG9fbmFtZTsKCiAgX19nY29udl9mY3QgX19mY3Q7CiAgX19nY29udl9pbml0X2ZjdCBf
X2luaXRfZmN0OwogIF9fZ2NvbnZfZW5kX2ZjdCBfX2VuZF9mY3Q7CgoKCiAgaW50IF9fbWluX25l
ZWRlZF9mcm9tOwogIGludCBfX21heF9uZWVkZWRfZnJvbTsKICBpbnQgX19taW5fbmVlZGVkX3Rv
OwogIGludCBfX21heF9uZWVkZWRfdG87CgoKICBpbnQgX19zdGF0ZWZ1bDsKCiAgdm9pZCAqX19k
YXRhOwp9OwoKCgpzdHJ1Y3QgX19nY29udl9zdGVwX2RhdGEKewogIHVuc2lnbmVkIGNoYXIgKl9f
b3V0YnVmOwogIHVuc2lnbmVkIGNoYXIgKl9fb3V0YnVmZW5kOwoKCgogIGludCBfX2ZsYWdzOwoK
CgogIGludCBfX2ludm9jYXRpb25fY291bnRlcjsKCgoKICBpbnQgX19pbnRlcm5hbF91c2U7Cgog
IF9fbWJzdGF0ZV90ICpfX3N0YXRlcDsKICBfX21ic3RhdGVfdCBfX3N0YXRlOwoKCgogIHN0cnVj
dCBfX2djb252X3RyYW5zX2RhdGEgKl9fdHJhbnM7Cn07CgoKCnR5cGVkZWYgc3RydWN0IF9fZ2Nv
bnZfaW5mbwp7CiAgc2l6ZV90IF9fbnN0ZXBzOwogIHN0cnVjdCBfX2djb252X3N0ZXAgKl9fc3Rl
cHM7CiAgX19leHRlbnNpb25fXyBzdHJ1Y3QgX19nY29udl9zdGVwX2RhdGEgX19kYXRhWzBdOwp9
ICpfX2djb252X3Q7CgojIDQ1ICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgiIDIgMwp0eXBlZGVm
IHVuaW9uCnsKICBzdHJ1Y3QgX19nY29udl9pbmZvIF9fY2Q7CiAgc3RydWN0CiAgewogICAgc3Ry
dWN0IF9fZ2NvbnZfaW5mbyBfX2NkOwogICAgc3RydWN0IF9fZ2NvbnZfc3RlcF9kYXRhIF9fZGF0
YTsKICB9IF9fY29tYmluZWQ7Cn0gX0dfaWNvbnZfdDsKCnR5cGVkZWYgaW50IF9HX2ludDE2X3Qg
X19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX0hJX18pKSk7CnR5cGVkZWYgaW50IF9HX2ludDMy
X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1NJX18pKSk7CnR5cGVkZWYgdW5zaWduZWQg
aW50IF9HX3VpbnQxNl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19ISV9fKSkpOwp0eXBl
ZGVmIHVuc2lnbmVkIGludCBfR191aW50MzJfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9f
U0lfXykpKTsKCiMgMzEgIi91c3IvaW5jbHVkZS9saWJpby5oIiAyIDMKIyA1MiAiL3Vzci9pbmNs
dWRlL2xpYmlvLmgiIDMKIyAxNTcgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCnN0cnVjdCBfSU9f
anVtcF90OyBzdHJ1Y3QgX0lPX0ZJTEU7CgoKCgoKCgoKCnR5cGVkZWYgdm9pZCBfSU9fbG9ja190
OwoKCgoKCnN0cnVjdCBfSU9fbWFya2VyIHsKICBzdHJ1Y3QgX0lPX21hcmtlciAqX25leHQ7CiAg
c3RydWN0IF9JT19GSUxFICpfc2J1ZjsKCgoKICBpbnQgX3BvczsKIyAxOTAgIi91c3IvaW5jbHVk
ZS9saWJpby5oIiAzCn07CgoKZW51bSBfX2NvZGVjdnRfcmVzdWx0CnsKICBfX2NvZGVjdnRfb2ss
CiAgX19jb2RlY3Z0X3BhcnRpYWwsCiAgX19jb2RlY3Z0X2Vycm9yLAogIF9fY29kZWN2dF9ub2Nv
bnYKfTsKCiMgMjYyICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwpzdHJ1Y3QgX0lPX0ZJTEUgewog
IGludCBfZmxhZ3M7CgoKCgogIGNoYXIqIF9JT19yZWFkX3B0cjsKICBjaGFyKiBfSU9fcmVhZF9l
bmQ7CiAgY2hhciogX0lPX3JlYWRfYmFzZTsKICBjaGFyKiBfSU9fd3JpdGVfYmFzZTsKICBjaGFy
KiBfSU9fd3JpdGVfcHRyOwogIGNoYXIqIF9JT193cml0ZV9lbmQ7CiAgY2hhciogX0lPX2J1Zl9i
YXNlOwogIGNoYXIqIF9JT19idWZfZW5kOwoKICBjaGFyICpfSU9fc2F2ZV9iYXNlOwogIGNoYXIg
Kl9JT19iYWNrdXBfYmFzZTsKICBjaGFyICpfSU9fc2F2ZV9lbmQ7CgogIHN0cnVjdCBfSU9fbWFy
a2VyICpfbWFya2VyczsKCiAgc3RydWN0IF9JT19GSUxFICpfY2hhaW47CgogIGludCBfZmlsZW5v
OwogIGludCBfYmxrc2l6ZTsKICBfX29mZl90IF9vbGRfb2Zmc2V0OwoKCgogIHVuc2lnbmVkIHNo
b3J0IF9jdXJfY29sdW1uOwogIHNpZ25lZCBjaGFyIF92dGFibGVfb2Zmc2V0OwogIGNoYXIgX3No
b3J0YnVmWzFdOwoKCgogIF9JT19sb2NrX3QgKl9sb2NrOwojIDMwNiAiL3Vzci9pbmNsdWRlL2xp
YmlvLmgiIDMKICBfX29mZjY0X3QgX29mZnNldDsKCgoKCgogIHZvaWQgKl9fcGFkMTsKICB2b2lk
ICpfX3BhZDI7CgogIGludCBfbW9kZTsKCiAgY2hhciBfdW51c2VkMlsxNSAqIHNpemVvZiAoaW50
KSAtIDIgKiBzaXplb2YgKHZvaWQgKildOwoKfTsKCgoKCgpzdHJ1Y3QgX0lPX0ZJTEVfcGx1czsK
CmV4dGVybiBzdHJ1Y3QgX0lPX0ZJTEVfcGx1cyBfSU9fMl8xX3N0ZGluXzsKZXh0ZXJuIHN0cnVj
dCBfSU9fRklMRV9wbHVzIF9JT18yXzFfc3Rkb3V0XzsKZXh0ZXJuIHN0cnVjdCBfSU9fRklMRV9w
bHVzIF9JT18yXzFfc3RkZXJyXzsKIyAzNDUgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCnR5cGVk
ZWYgX19zc2l6ZV90IF9faW9fcmVhZF9mbiAodm9pZCAqX19jb29raWUsIGNoYXIgKl9fYnVmLCBz
aXplX3QgX19uYnl0ZXMpOwoKCgoKCgoKdHlwZWRlZiBfX3NzaXplX3QgX19pb193cml0ZV9mbiAo
dm9pZCAqX19jb29raWUsIF9fY29uc3QgY2hhciAqX19idWYsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBfX24pOwoKCgoKCgoKdHlwZWRlZiBpbnQgX19pb19zZWVrX2Zu
ICh2b2lkICpfX2Nvb2tpZSwgX19vZmY2NF90ICpfX3BvcywgaW50IF9fdyk7CgoKdHlwZWRlZiBp
bnQgX19pb19jbG9zZV9mbiAodm9pZCAqX19jb29raWUpOwoKCiMgMzk0ICIvdXNyL2luY2x1ZGUv
bGliaW8uaCIgMwpleHRlcm4gIkMiIHsKCgpleHRlcm4gaW50IF9fdW5kZXJmbG93IChfSU9fRklM
RSAqKSB0aHJvdyAoKTsKZXh0ZXJuIGludCBfX3VmbG93IChfSU9fRklMRSAqKSB0aHJvdyAoKTsK
ZXh0ZXJuIGludCBfX292ZXJmbG93IChfSU9fRklMRSAqLCBpbnQpIHRocm93ICgpOwpleHRlcm4g
d2ludF90IF9fd3VuZGVyZmxvdyAoX0lPX0ZJTEUgKikgdGhyb3cgKCk7CmV4dGVybiB3aW50X3Qg
X193dWZsb3cgKF9JT19GSUxFICopIHRocm93ICgpOwpleHRlcm4gd2ludF90IF9fd292ZXJmbG93
IChfSU9fRklMRSAqLCB3aW50X3QpIHRocm93ICgpOwoKIyA0MjcgIi91c3IvaW5jbHVkZS9saWJp
by5oIiAzCmV4dGVybiBpbnQgX0lPX2dldGMgKF9JT19GSUxFICpfX2ZwKSB0aHJvdyAoKTsKZXh0
ZXJuIGludCBfSU9fcHV0YyAoaW50IF9fYywgX0lPX0ZJTEUgKl9fZnApIHRocm93ICgpOwpleHRl
cm4gaW50IF9JT19mZW9mIChfSU9fRklMRSAqX19mcCkgdGhyb3cgKCk7CmV4dGVybiBpbnQgX0lP
X2ZlcnJvciAoX0lPX0ZJTEUgKl9fZnApIHRocm93ICgpOwoKZXh0ZXJuIGludCBfSU9fcGVla2Nf
bG9ja2VkIChfSU9fRklMRSAqX19mcCkgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIHZvaWQgX0lPX2Zs
b2NrZmlsZSAoX0lPX0ZJTEUgKikgdGhyb3cgKCk7CmV4dGVybiB2b2lkIF9JT19mdW5sb2NrZmls
ZSAoX0lPX0ZJTEUgKikgdGhyb3cgKCk7CmV4dGVybiBpbnQgX0lPX2Z0cnlsb2NrZmlsZSAoX0lP
X0ZJTEUgKikgdGhyb3cgKCk7CgojIDQ1MyAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKZXh0ZXJu
IGludCBfSU9fdmZzY2FuZiAoX0lPX0ZJTEUgKiBfX3Jlc3RyaWN0LCBjb25zdCBjaGFyICogX19y
ZXN0cmljdCwKICAgICAgICAgICAgICAgICAgICAgICAgX19nbnVjX3ZhX2xpc3QsIGludCAqX19y
ZXN0cmljdCkgdGhyb3cgKCk7CmV4dGVybiBpbnQgX0lPX3ZmcHJpbnRmIChfSU9fRklMRSAqX19y
ZXN0cmljdCwgY29uc3QgY2hhciAqX19yZXN0cmljdCwKICAgICAgICAgICAgICAgICAgICAgICAg
IF9fZ251Y192YV9saXN0KSB0aHJvdyAoKTsKZXh0ZXJuIF9fc3NpemVfdCBfSU9fcGFkbiAoX0lP
X0ZJTEUgKiwgaW50LCBfX3NzaXplX3QpIHRocm93ICgpOwpleHRlcm4gc2l6ZV90IF9JT19zZ2V0
biAoX0lPX0ZJTEUgKiwgdm9pZCAqLCBzaXplX3QpIHRocm93ICgpOwoKZXh0ZXJuIF9fb2ZmNjRf
dCBfSU9fc2Vla29mZiAoX0lPX0ZJTEUgKiwgX19vZmY2NF90LCBpbnQsIGludCkgdGhyb3cgKCk7
CmV4dGVybiBfX29mZjY0X3QgX0lPX3NlZWtwb3MgKF9JT19GSUxFICosIF9fb2ZmNjRfdCwgaW50
KSB0aHJvdyAoKTsKCmV4dGVybiB2b2lkIF9JT19mcmVlX2JhY2t1cF9hcmVhIChfSU9fRklMRSAq
KSB0aHJvdyAoKTsKCiMgNDk1ICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwp9CiMgNTggIi91c3Iv
aW5jbHVkZS9zdGRpby5oIiAyIDMKCgoKdHlwZWRlZiBfR19mcG9zX3QgZnBvc190OwojIDExMSAi
L3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMKCgoKZXh0ZXJuIEZJTEUgKnN0ZGluOwpleHRlcm4gRklM
RSAqc3Rkb3V0OwpleHRlcm4gRklMRSAqc3RkZXJyOwoKCgoKCgpleHRlcm4gaW50IHJlbW92ZSAo
X19jb25zdCBjaGFyICpfX2ZpbGVuYW1lKSB0aHJvdyAoKTsKCmV4dGVybiBpbnQgcmVuYW1lIChf
X2NvbnN0IGNoYXIgKl9fb2xkLCBfX2NvbnN0IGNoYXIgKl9fbmV3KSB0aHJvdyAoKTsKCgoKCmV4
dGVybiBGSUxFICp0bXBmaWxlICh2b2lkKSB0aHJvdyAoKTsKIyAxNDIgIi91c3IvaW5jbHVkZS9z
dGRpby5oIiAzCmV4dGVybiBjaGFyICp0bXBuYW0gKGNoYXIgKl9fcykgdGhyb3cgKCk7CgoKCgpl
eHRlcm4gY2hhciAqdG1wbmFtX3IgKGNoYXIgKl9fcykgdGhyb3cgKCk7CiMgMTU5ICIvdXNyL2lu
Y2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gY2hhciAqdGVtcG5hbSAoX19jb25zdCBjaGFyICpfX2Rp
ciwgX19jb25zdCBjaGFyICpfX3BmeCkKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19t
YWxsb2NfXykpOwoKCgoKZXh0ZXJuIGludCBmY2xvc2UgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAo
KTsKCmV4dGVybiBpbnQgZmZsdXNoIChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CgoKCmV4dGVy
biBpbnQgZmZsdXNoX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CiMgMTgyICIv
dXNyL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gRklMRSAqZm9wZW4gKF9fY29uc3QgY2hhciAq
X19yZXN0cmljdCBfX2ZpbGVuYW1lLAogICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAq
X19yZXN0cmljdCBfX21vZGVzKSB0aHJvdyAoKTsKCmV4dGVybiBGSUxFICpmcmVvcGVuIChfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19maWxlbmFtZSwKICAgICAgICAgICAgICAgICAgICAgIF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX21vZGVzLAogICAgICAgICAgICAgICAgICAgICAgRklM
RSAqX19yZXN0cmljdCBfX3N0cmVhbSkgdGhyb3cgKCk7CiMgMjEyICIvdXNyL2luY2x1ZGUvc3Rk
aW8uaCIgMwpleHRlcm4gRklMRSAqZmRvcGVuIChpbnQgX19mZCwgX19jb25zdCBjaGFyICpfX21v
ZGVzKSB0aHJvdyAoKTsKIyAyMzUgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiB2b2lk
IHNldGJ1ZiAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwgY2hhciAqX19yZXN0cmljdCBfX2J1
ZikgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgc2V0dmJ1ZiAoRklMRSAqX19yZXN0cmljdCBfX3N0
cmVhbSwgY2hhciAqX19yZXN0cmljdCBfX2J1ZiwKICAgICAgICAgICAgICAgICAgICBpbnQgX19t
b2Rlcywgc2l6ZV90IF9fbikgdGhyb3cgKCk7CgoKCgpleHRlcm4gdm9pZCBzZXRidWZmZXIgKEZJ
TEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsCiAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IF9fc2l6ZSkgdGhyb3cgKCk7CgoKZXh0ZXJuIHZvaWQgc2V0
bGluZWJ1ZiAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCBmcHJpbnRm
IChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLAogICAgICAgICAgICAgICAgICAgIF9fY29uc3Qg
Y2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSB0aHJvdyAoKTsKCmV4dGVybiBpbnQgcHJp
bnRmIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgdGhyb3cgKCk7Cgpl
eHRlcm4gaW50IHNwcmludGYgKGNoYXIgKl9fcmVzdHJpY3QgX19zLAogICAgICAgICAgICAgICAg
ICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSB0aHJvdyAoKTsKCgpl
eHRlcm4gaW50IHZmcHJpbnRmIChGSUxFICpfX3Jlc3RyaWN0IF9fcywgX19jb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICBfX2dudWNfdmFfbGlzdCBf
X2FyZykgdGhyb3cgKCk7CgpleHRlcm4gaW50IHZwcmludGYgKF9fY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX2Zvcm1hdCwgX19nbnVjX3ZhX2xpc3QgX19hcmcpCiAgICAgdGhyb3cgKCk7CgpleHRl
cm4gaW50IHZzcHJpbnRmIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICBfX2dudWNfdmFfbGlzdCBfX2Fy
ZykgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgc25wcmludGYgKGNoYXIgKl9fcmVzdHJpY3QgX19z
LCBzaXplX3QgX19tYXhsZW4sCiAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX2Zvcm1hdCwgLi4uKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2Zv
cm1hdF9fIChfX3ByaW50Zl9fLCAzLCA0KSkpOwoKZXh0ZXJuIGludCBfX3ZzbnByaW50ZiAoY2hh
ciAqX19yZXN0cmljdCBfX3MsIHNpemVfdCBfX21heGxlbiwKICAgICAgICAgICAgICAgICAgICAg
ICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCBfX2dudWNfdmFfbGlzdCBfX2Fy
ZykKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywg
MywgMCkpKTsKZXh0ZXJuIGludCB2c25wcmludGYgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBzaXpl
X3QgX19tYXhsZW4sCiAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJp
Y3QgX19mb3JtYXQsIF9fZ251Y192YV9saXN0IF9fYXJnKQogICAgIHRocm93ICgpIF9fYXR0cmli
dXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAzLCAwKSkpOwojIDMwOSAiL3Vzci9pbmNs
dWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIGludCBmc2NhbmYgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJl
YW0sCiAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQs
IC4uLikgdGhyb3cgKCk7CgpleHRlcm4gaW50IHNjYW5mIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJp
Y3QgX19mb3JtYXQsIC4uLikgdGhyb3cgKCk7CgpleHRlcm4gaW50IHNzY2FuZiAoX19jb25zdCBj
aGFyICpfX3Jlc3RyaWN0IF9fcywKICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSB0aHJvdyAoKTsKCiMgMzM1ICIvdXNyL2luY2x1ZGUvc3Rk
aW8uaCIgMwpleHRlcm4gaW50IGZnZXRjIChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CmV4dGVy
biBpbnQgZ2V0YyAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwoKCmV4dGVybiBpbnQgZ2V0Y2hh
ciAodm9pZCkgdGhyb3cgKCk7CgoKCgoKCgpleHRlcm4gaW50IGdldGNfdW5sb2NrZWQgKEZJTEUg
Kl9fc3RyZWFtKSB0aHJvdyAoKTsKZXh0ZXJuIGludCBnZXRjaGFyX3VubG9ja2VkICh2b2lkKSB0
aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQgZmdldGNfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKSB0
aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQgZnB1dGMgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKSB0
aHJvdyAoKTsKZXh0ZXJuIGludCBwdXRjIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkgdGhyb3cg
KCk7CgoKZXh0ZXJuIGludCBwdXRjaGFyIChpbnQgX19jKSB0aHJvdyAoKTsKCgoKCgoKCmV4dGVy
biBpbnQgZnB1dGNfdW5sb2NrZWQgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsK
CgoKCmV4dGVybiBpbnQgcHV0Y191bmxvY2tlZCAoaW50IF9fYywgRklMRSAqX19zdHJlYW0pIHRo
cm93ICgpOwpleHRlcm4gaW50IHB1dGNoYXJfdW5sb2NrZWQgKGludCBfX2MpIHRocm93ICgpOwoK
CgoKCmV4dGVybiBpbnQgZ2V0dyAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwoKCmV4dGVybiBp
bnQgcHV0dyAoaW50IF9fdywgRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwoKCgoKZXh0ZXJuIGNo
YXIgKmZnZXRzIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgaW50IF9fbiwgRklMRSAqX19yZXN0cmlj
dCBfX3N0cmVhbSkKICAgICB0aHJvdyAoKTsKCiMgNDAxICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIg
MwpleHRlcm4gY2hhciAqZ2V0cyAoY2hhciAqX19zKSB0aHJvdyAoKTsKCgojIDQyNSAiL3Vzci9p
bmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIGludCBmcHV0cyAoX19jb25zdCBjaGFyICpfX3Jlc3Ry
aWN0IF9fcywgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkKICAgICB0aHJvdyAoKTsKCgoKCgoK
CgpleHRlcm4gaW50IHB1dHMgKF9fY29uc3QgY2hhciAqX19zKSB0aHJvdyAoKTsKCgoKZXh0ZXJu
IGludCB1bmdldGMgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKCgoKZXh0ZXJu
IHNpemVfdCBmcmVhZCAodm9pZCAqX19yZXN0cmljdCBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwKICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbiwgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkg
dGhyb3cgKCk7CgpleHRlcm4gc2l6ZV90IGZ3cml0ZSAoX19jb25zdCB2b2lkICpfX3Jlc3RyaWN0
IF9fcHRyLCBzaXplX3QgX19zaXplLAogICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbiwg
RklMRSAqX19yZXN0cmljdCBfX3MpIHRocm93ICgpOwoKCgpleHRlcm4gc2l6ZV90IGZyZWFkX3Vu
bG9ja2VkICh2b2lkICpfX3Jlc3RyaWN0IF9fcHRyLCBzaXplX3QgX19zaXplLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19uLCBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFt
KSB0aHJvdyAoKTsKZXh0ZXJuIHNpemVfdCBmd3JpdGVfdW5sb2NrZWQgKF9fY29uc3Qgdm9pZCAq
X19yZXN0cmljdCBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIHRocm93ICgpOwoK
CgoKZXh0ZXJuIGludCBmc2VlayAoRklMRSAqX19zdHJlYW0sIGxvbmcgaW50IF9fb2ZmLCBpbnQg
X193aGVuY2UpIHRocm93ICgpOwoKZXh0ZXJuIGxvbmcgaW50IGZ0ZWxsIChGSUxFICpfX3N0cmVh
bSkgdGhyb3cgKCk7CgpleHRlcm4gdm9pZCByZXdpbmQgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAo
KTsKCgoKCgoKCgoKdHlwZWRlZiBfX29mZl90IG9mZl90OwojIDQ5NSAiL3Vzci9pbmNsdWRlL3N0
ZGlvLmgiIDMKZXh0ZXJuIGludCBmZ2V0cG9zIChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLCBm
cG9zX3QgKl9fcmVzdHJpY3QgX19wb3MpCiAgICAgdGhyb3cgKCk7CgpleHRlcm4gaW50IGZzZXRw
b3MgKEZJTEUgKl9fc3RyZWFtLCBfX2NvbnN0IGZwb3NfdCAqX19wb3MpIHRocm93ICgpOwojIDUz
MSAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIHZvaWQgY2xlYXJlcnIgKEZJTEUgKl9f
c3RyZWFtKSB0aHJvdyAoKTsKCmV4dGVybiBpbnQgZmVvZiAoRklMRSAqX19zdHJlYW0pIHRocm93
ICgpOwoKZXh0ZXJuIGludCBmZXJyb3IgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKCgoKZXh0
ZXJuIHZvaWQgY2xlYXJlcnJfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKZXh0
ZXJuIGludCBmZW9mX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CmV4dGVybiBp
bnQgZmVycm9yX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CgoKCgpleHRlcm4g
dm9pZCBwZXJyb3IgKF9fY29uc3QgY2hhciAqX19zKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQg
c3lzX25lcnI7CmV4dGVybiBfX2NvbnN0IGNoYXIgKl9fY29uc3Qgc3lzX2Vycmxpc3RbXTsKIyA1
NjIgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiBpbnQgZmlsZW5vIChGSUxFICpfX3N0
cmVhbSkgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IGZpbGVub191bmxvY2tlZCAoRklMRSAqX19z
dHJlYW0pIHRocm93ICgpOwoKCgoKCgpleHRlcm4gRklMRSAqcG9wZW4gKF9fY29uc3QgY2hhciAq
X19jb21tYW5kLCBfX2NvbnN0IGNoYXIgKl9fbW9kZXMpIHRocm93ICgpOwoKCmV4dGVybiBpbnQg
cGNsb3NlIChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGNoYXIgKmN0ZXJt
aWQgKGNoYXIgKl9fcykgdGhyb3cgKCk7CiMgNjA5ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwpl
eHRlcm4gdm9pZCBmbG9ja2ZpbGUgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKCgoKZXh0ZXJu
IGludCBmdHJ5bG9ja2ZpbGUgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKCgpleHRlcm4gdm9p
ZCBmdW5sb2NrZmlsZSAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwojIDYzMyAiL3Vzci9pbmNs
dWRlL3N0ZGlvLmgiIDMKfQoKIyAxMCAicGFyc2UuaCIgMgoKIyAyOCAiL3Vzci9pbmNsdWRlL3Vu
aXN0ZC5oIiAxIDMKZXh0ZXJuICJDIiB7CgoKCgoKCiMgMTc2ICIvdXNyL2luY2x1ZGUvdW5pc3Rk
LmgiIDMKIyAxOTMgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwp0eXBlZGVmIF9fc3NpemVfdCBz
c2l6ZV90OwoKCgoKCgojIDI0MCAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCnR5cGVkZWYgX19p
bnRwdHJfdCBpbnRwdHJfdDsKCgoKCgoKdHlwZWRlZiBfX3NvY2tsZW5fdCBzb2NrbGVuX3Q7CiMg
MjYwICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIGludCBhY2Nlc3MgKF9fY29uc3Qg
Y2hhciAqX19uYW1lLCBpbnQgX190eXBlKSB0aHJvdyAoKTsKCiMgMjkwICIvdXNyL2luY2x1ZGUv
dW5pc3RkLmgiIDMKZXh0ZXJuIF9fb2ZmX3QgbHNlZWsgKGludCBfX2ZkLCBfX29mZl90IF9fb2Zm
c2V0LCBpbnQgX193aGVuY2UpIHRocm93ICgpOwojIDMwNiAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5o
IiAzCmV4dGVybiBpbnQgY2xvc2UgKGludCBfX2ZkKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIHNzaXpl
X3QgcmVhZCAoaW50IF9fZmQsIHZvaWQgKl9fYnVmLCBzaXplX3QgX19uYnl0ZXMpIHRocm93ICgp
OwoKCmV4dGVybiBzc2l6ZV90IHdyaXRlIChpbnQgX19mZCwgX19jb25zdCB2b2lkICpfX2J1Ziwg
c2l6ZV90IF9fbikgdGhyb3cgKCk7CgojIDM1MyAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4
dGVybiBpbnQgcGlwZSAoaW50IF9fcGlwZWRlc1syXSkgdGhyb3cgKCk7CiMgMzYyICIvdXNyL2lu
Y2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIHVuc2lnbmVkIGludCBhbGFybSAodW5zaWduZWQgaW50
IF9fc2Vjb25kcykgdGhyb3cgKCk7CiMgMzcxICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0
ZXJuIHVuc2lnbmVkIGludCBzbGVlcCAodW5zaWduZWQgaW50IF9fc2Vjb25kcykgdGhyb3cgKCk7
CgoKCgoKCmV4dGVybiBfX3VzZWNvbmRzX3QgdWFsYXJtIChfX3VzZWNvbmRzX3QgX192YWx1ZSwg
X191c2Vjb25kc190IF9faW50ZXJ2YWwpCiAgICAgdGhyb3cgKCk7CgoKCmV4dGVybiB2b2lkIHVz
bGVlcCAoX191c2Vjb25kc190IF9fdXNlY29uZHMpIHRocm93ICgpOwoKCgoKCmV4dGVybiBpbnQg
cGF1c2UgKHZvaWQpIHRocm93ICgpOwoKCgpleHRlcm4gaW50IGNob3duIChfX2NvbnN0IGNoYXIg
Kl9fZmlsZSwgX191aWRfdCBfX293bmVyLCBfX2dpZF90IF9fZ3JvdXApCiAgICAgdGhyb3cgKCk7
CgoKCmV4dGVybiBpbnQgZmNob3duIChpbnQgX19mZCwgX191aWRfdCBfX293bmVyLCBfX2dpZF90
IF9fZ3JvdXApIHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCBsY2hvd24gKF9fY29uc3QgY2hhciAq
X19maWxlLCBfX3VpZF90IF9fb3duZXIsIF9fZ2lkX3QgX19ncm91cCkKICAgICB0aHJvdyAoKTsK
CgoKCmV4dGVybiBpbnQgY2hkaXIgKF9fY29uc3QgY2hhciAqX19wYXRoKSB0aHJvdyAoKTsKCgoK
ZXh0ZXJuIGludCBmY2hkaXIgKGludCBfX2ZkKSB0aHJvdyAoKTsKIyA0MjMgIi91c3IvaW5jbHVk
ZS91bmlzdGQuaCIgMwpleHRlcm4gY2hhciAqZ2V0Y3dkIChjaGFyICpfX2J1Ziwgc2l6ZV90IF9f
c2l6ZSkgdGhyb3cgKCk7CgojIDQzNiAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4dGVybiBj
aGFyICpnZXR3ZCAoY2hhciAqX19idWYpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCBkdXAgKGlu
dCBfX2ZkKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IGR1cDIgKGludCBfX2ZkLCBpbnQgX19mZDIp
IHRocm93ICgpOwoKCmV4dGVybiBjaGFyICoqX19lbnZpcm9uOwoKCgoKCgoKZXh0ZXJuIGludCBl
eGVjdmUgKF9fY29uc3QgY2hhciAqX19wYXRoLCBjaGFyICpfX2NvbnN0IF9fYXJndltdLAogICAg
ICAgICAgICAgICAgICAgY2hhciAqX19jb25zdCBfX2VudnBbXSkgdGhyb3cgKCk7CgojIDQ2NyAi
L3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4dGVybiBpbnQgZXhlY3YgKF9fY29uc3QgY2hhciAq
X19wYXRoLCBjaGFyICpfX2NvbnN0IF9fYXJndltdKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCBl
eGVjbGUgKF9fY29uc3QgY2hhciAqX19wYXRoLCBfX2NvbnN0IGNoYXIgKl9fYXJnLCAuLi4pIHRo
cm93ICgpOwoKCgpleHRlcm4gaW50IGV4ZWNsIChfX2NvbnN0IGNoYXIgKl9fcGF0aCwgX19jb25z
dCBjaGFyICpfX2FyZywgLi4uKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCBleGVjdnAgKF9fY29u
c3QgY2hhciAqX19maWxlLCBjaGFyICpfX2NvbnN0IF9fYXJndltdKSB0aHJvdyAoKTsKCgoKCmV4
dGVybiBpbnQgZXhlY2xwIChfX2NvbnN0IGNoYXIgKl9fZmlsZSwgX19jb25zdCBjaGFyICpfX2Fy
ZywgLi4uKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQgbmljZSAoaW50IF9faW5jKSB0aHJvdyAo
KTsKCgoKCmV4dGVybiB2b2lkIF9leGl0IChpbnQgX19zdGF0dXMpIF9fYXR0cmlidXRlX18gKChf
X25vcmV0dXJuX18pKTsKCgoKCgoKIyAyNSAiL3Vzci9pbmNsdWRlL2JpdHMvY29uZm5hbWUuaCIg
MSAzCmVudW0KICB7CiAgICBfUENfTElOS19NQVgsCgogICAgX1BDX01BWF9DQU5PTiwKCiAgICBf
UENfTUFYX0lOUFVULAoKICAgIF9QQ19OQU1FX01BWCwKCiAgICBfUENfUEFUSF9NQVgsCgogICAg
X1BDX1BJUEVfQlVGLAoKICAgIF9QQ19DSE9XTl9SRVNUUklDVEVELAoKICAgIF9QQ19OT19UUlVO
QywKCiAgICBfUENfVkRJU0FCTEUsCgogICAgX1BDX1NZTkNfSU8sCgogICAgX1BDX0FTWU5DX0lP
LAoKICAgIF9QQ19QUklPX0lPLAoKICAgIF9QQ19TT0NLX01BWEJVRiwKCiAgICBfUENfRklMRVNJ
WkVCSVRTCgogIH07CgoKZW51bQogIHsKICAgIF9TQ19BUkdfTUFYLAoKICAgIF9TQ19DSElMRF9N
QVgsCgogICAgX1NDX0NMS19UQ0ssCgogICAgX1NDX05HUk9VUFNfTUFYLAoKICAgIF9TQ19PUEVO
X01BWCwKCiAgICBfU0NfU1RSRUFNX01BWCwKCiAgICBfU0NfVFpOQU1FX01BWCwKCiAgICBfU0Nf
Sk9CX0NPTlRST0wsCgogICAgX1NDX1NBVkVEX0lEUywKCiAgICBfU0NfUkVBTFRJTUVfU0lHTkFM
UywKCiAgICBfU0NfUFJJT1JJVFlfU0NIRURVTElORywKCiAgICBfU0NfVElNRVJTLAoKICAgIF9T
Q19BU1lOQ0hST05PVVNfSU8sCgogICAgX1NDX1BSSU9SSVRJWkVEX0lPLAoKICAgIF9TQ19TWU5D
SFJPTklaRURfSU8sCgogICAgX1NDX0ZTWU5DLAoKICAgIF9TQ19NQVBQRURfRklMRVMsCgogICAg
X1NDX01FTUxPQ0ssCgogICAgX1NDX01FTUxPQ0tfUkFOR0UsCgogICAgX1NDX01FTU9SWV9QUk9U
RUNUSU9OLAoKICAgIF9TQ19NRVNTQUdFX1BBU1NJTkcsCgogICAgX1NDX1NFTUFQSE9SRVMsCgog
ICAgX1NDX1NIQVJFRF9NRU1PUllfT0JKRUNUUywKCiAgICBfU0NfQUlPX0xJU1RJT19NQVgsCgog
ICAgX1NDX0FJT19NQVgsCgogICAgX1NDX0FJT19QUklPX0RFTFRBX01BWCwKCiAgICBfU0NfREVM
QVlUSU1FUl9NQVgsCgogICAgX1NDX01RX09QRU5fTUFYLAoKICAgIF9TQ19NUV9QUklPX01BWCwK
CiAgICBfU0NfVkVSU0lPTiwKCiAgICBfU0NfUEFHRVNJWkUsCgoKICAgIF9TQ19SVFNJR19NQVgs
CgogICAgX1NDX1NFTV9OU0VNU19NQVgsCgogICAgX1NDX1NFTV9WQUxVRV9NQVgsCgogICAgX1ND
X1NJR1FVRVVFX01BWCwKCiAgICBfU0NfVElNRVJfTUFYLAoKCgoKICAgIF9TQ19CQ19CQVNFX01B
WCwKCiAgICBfU0NfQkNfRElNX01BWCwKCiAgICBfU0NfQkNfU0NBTEVfTUFYLAoKICAgIF9TQ19C
Q19TVFJJTkdfTUFYLAoKICAgIF9TQ19DT0xMX1dFSUdIVFNfTUFYLAoKICAgIF9TQ19FUVVJVl9D
TEFTU19NQVgsCgogICAgX1NDX0VYUFJfTkVTVF9NQVgsCgogICAgX1NDX0xJTkVfTUFYLAoKICAg
IF9TQ19SRV9EVVBfTUFYLAoKICAgIF9TQ19DSEFSQ0xBU1NfTkFNRV9NQVgsCgoKICAgIF9TQ18y
X1ZFUlNJT04sCgogICAgX1NDXzJfQ19CSU5ELAoKICAgIF9TQ18yX0NfREVWLAoKICAgIF9TQ18y
X0ZPUlRfREVWLAoKICAgIF9TQ18yX0ZPUlRfUlVOLAoKICAgIF9TQ18yX1NXX0RFViwKCiAgICBf
U0NfMl9MT0NBTEVERUYsCgoKICAgIF9TQ19QSUksCgogICAgX1NDX1BJSV9YVEksCgogICAgX1ND
X1BJSV9TT0NLRVQsCgogICAgX1NDX1BJSV9JTlRFUk5FVCwKCiAgICBfU0NfUElJX09TSSwKCiAg
ICBfU0NfUE9MTCwKCiAgICBfU0NfU0VMRUNULAoKICAgIF9TQ19VSU9fTUFYSU9WLAoKICAgIF9T
Q19QSUlfSU5URVJORVRfU1RSRUFNLAoKICAgIF9TQ19QSUlfSU5URVJORVRfREdSQU0sCgogICAg
X1NDX1BJSV9PU0lfQ09UUywKCiAgICBfU0NfUElJX09TSV9DTFRTLAoKICAgIF9TQ19QSUlfT1NJ
X00sCgogICAgX1NDX1RfSU9WX01BWCwKCgoKICAgIF9TQ19USFJFQURTLAoKICAgIF9TQ19USFJF
QURfU0FGRV9GVU5DVElPTlMsCgogICAgX1NDX0dFVEdSX1JfU0laRV9NQVgsCgogICAgX1NDX0dF
VFBXX1JfU0laRV9NQVgsCgogICAgX1NDX0xPR0lOX05BTUVfTUFYLAoKICAgIF9TQ19UVFlfTkFN
RV9NQVgsCgogICAgX1NDX1RIUkVBRF9ERVNUUlVDVE9SX0lURVJBVElPTlMsCgogICAgX1NDX1RI
UkVBRF9LRVlTX01BWCwKCiAgICBfU0NfVEhSRUFEX1NUQUNLX01JTiwKCiAgICBfU0NfVEhSRUFE
X1RIUkVBRFNfTUFYLAoKICAgIF9TQ19USFJFQURfQVRUUl9TVEFDS0FERFIsCgogICAgX1NDX1RI
UkVBRF9BVFRSX1NUQUNLU0laRSwKCiAgICBfU0NfVEhSRUFEX1BSSU9SSVRZX1NDSEVEVUxJTkcs
CgogICAgX1NDX1RIUkVBRF9QUklPX0lOSEVSSVQsCgogICAgX1NDX1RIUkVBRF9QUklPX1BST1RF
Q1QsCgogICAgX1NDX1RIUkVBRF9QUk9DRVNTX1NIQVJFRCwKCgogICAgX1NDX05QUk9DRVNTT1JT
X0NPTkYsCgogICAgX1NDX05QUk9DRVNTT1JTX09OTE4sCgogICAgX1NDX1BIWVNfUEFHRVMsCgog
ICAgX1NDX0FWUEhZU19QQUdFUywKCiAgICBfU0NfQVRFWElUX01BWCwKCiAgICBfU0NfUEFTU19N
QVgsCgoKICAgIF9TQ19YT1BFTl9WRVJTSU9OLAoKICAgIF9TQ19YT1BFTl9YQ1VfVkVSU0lPTiwK
CiAgICBfU0NfWE9QRU5fVU5JWCwKCiAgICBfU0NfWE9QRU5fQ1JZUFQsCgogICAgX1NDX1hPUEVO
X0VOSF9JMThOLAoKICAgIF9TQ19YT1BFTl9TSE0sCgoKICAgIF9TQ18yX0NIQVJfVEVSTSwKCiAg
ICBfU0NfMl9DX1ZFUlNJT04sCgogICAgX1NDXzJfVVBFLAoKCiAgICBfU0NfWE9QRU5fWFBHMiwK
CiAgICBfU0NfWE9QRU5fWFBHMywKCiAgICBfU0NfWE9QRU5fWFBHNCwKCgogICAgX1NDX0NIQVJf
QklULAoKICAgIF9TQ19DSEFSX01BWCwKCiAgICBfU0NfQ0hBUl9NSU4sCgogICAgX1NDX0lOVF9N
QVgsCgogICAgX1NDX0lOVF9NSU4sCgogICAgX1NDX0xPTkdfQklULAoKICAgIF9TQ19XT1JEX0JJ
VCwKCiAgICBfU0NfTUJfTEVOX01BWCwKCiAgICBfU0NfTlpFUk8sCgogICAgX1NDX1NTSVpFX01B
WCwKCiAgICBfU0NfU0NIQVJfTUFYLAoKICAgIF9TQ19TQ0hBUl9NSU4sCgogICAgX1NDX1NIUlRf
TUFYLAoKICAgIF9TQ19TSFJUX01JTiwKCiAgICBfU0NfVUNIQVJfTUFYLAoKICAgIF9TQ19VSU5U
X01BWCwKCiAgICBfU0NfVUxPTkdfTUFYLAoKICAgIF9TQ19VU0hSVF9NQVgsCgoKICAgIF9TQ19O
TF9BUkdNQVgsCgogICAgX1NDX05MX0xBTkdNQVgsCgogICAgX1NDX05MX01TR01BWCwKCiAgICBf
U0NfTkxfTk1BWCwKCiAgICBfU0NfTkxfU0VUTUFYLAoKICAgIF9TQ19OTF9URVhUTUFYLAoKCiAg
ICBfU0NfWEJTNV9JTFAzMl9PRkYzMiwKCiAgICBfU0NfWEJTNV9JTFAzMl9PRkZCSUcsCgogICAg
X1NDX1hCUzVfTFA2NF9PRkY2NCwKCiAgICBfU0NfWEJTNV9MUEJJR19PRkZCSUcsCgoKICAgIF9T
Q19YT1BFTl9MRUdBQ1ksCgogICAgX1NDX1hPUEVOX1JFQUxUSU1FLAoKICAgIF9TQ19YT1BFTl9S
RUFMVElNRV9USFJFQURTLAoKCiAgICBfU0NfQURWSVNPUllfSU5GTywKCiAgICBfU0NfQkFSUklF
UlMsCgogICAgX1NDX0JBU0UsCgogICAgX1NDX0NfTEFOR19TVVBQT1JULAoKICAgIF9TQ19DX0xB
TkdfU1VQUE9SVF9SLAoKICAgIF9TQ19DTE9DS19TRUxFQ1RJT04sCgogICAgX1NDX0NQVVRJTUUs
CgogICAgX1NDX1RIUkVBRF9DUFVUSU1FLAoKICAgIF9TQ19ERVZJQ0VfSU8sCgogICAgX1NDX0RF
VklDRV9TUEVDSUZJQywKCiAgICBfU0NfREVWSUNFX1NQRUNJRklDX1IsCgogICAgX1NDX0ZEX01H
TVQsCgogICAgX1NDX0ZJRk8sCgogICAgX1NDX1BJUEUsCgogICAgX1NDX0ZJTEVfQVRUUklCVVRF
UywKCiAgICBfU0NfRklMRV9MT0NLSU5HLAoKICAgIF9TQ19GSUxFX1NZU1RFTSwKCiAgICBfU0Nf
TU9OT1RPTklDX0NMT0NLLAoKICAgIF9TQ19NVUxUSVBMRV9QUk9DRVNTLAoKICAgIF9TQ19TSU5H
TEVfUFJPQ0VTUywKCiAgICBfU0NfTkVUV09SS0lORywKCiAgICBfU0NfUkVBREVSX1dSSVRFUl9M
T0NLUywKCiAgICBfU0NfU1BJTl9MT0NLUywKCiAgICBfU0NfUkVHRVhQLAoKICAgIF9TQ19SRUdF
WF9WRVJTSU9OLAoKICAgIF9TQ19TSEVMTCwKCiAgICBfU0NfU0lHTkFMUywKCiAgICBfU0NfU1BB
V04sCgogICAgX1NDX1NQT1JBRElDX1NFUlZFUiwKCiAgICBfU0NfVEhSRUFEX1NQT1JBRElDX1NF
UlZFUiwKCiAgICBfU0NfU1lTVEVNX0RBVEFCQVNFLAoKICAgIF9TQ19TWVNURU1fREFUQUJBU0Vf
UiwKCiAgICBfU0NfVElNRU9VVFMsCgogICAgX1NDX1RZUEVEX01FTU9SWV9PQkpFQ1RTLAoKICAg
IF9TQ19VU0VSX0dST1VQUywKCiAgICBfU0NfVVNFUl9HUk9VUFNfUiwKCiAgICBfU0NfUEJTLAoK
ICAgIF9TQ19QQlNfQUNDT1VOVElORywKCiAgICBfU0NfUEJTX0xPQ0FURSwKCiAgICBfU0NfUEJT
X01FU1NBR0UsCgogICAgX1NDX1BCU19UUkFDSywKCiAgICBfU0NfU1lNTE9PUAoKICB9OwoKCgoK
CmVudW0KICB7CiAgICBfQ1NfUEFUSAojIDQ5MiAiL3Vzci9pbmNsdWRlL2JpdHMvY29uZm5hbWUu
aCIgMwogIH07CiMgNTAxICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDIgMwoKCmV4dGVybiBsb25n
IGludCBwYXRoY29uZiAoX19jb25zdCBjaGFyICpfX3BhdGgsIGludCBfX25hbWUpIHRocm93ICgp
OwoKCmV4dGVybiBsb25nIGludCBmcGF0aGNvbmYgKGludCBfX2ZkLCBpbnQgX19uYW1lKSB0aHJv
dyAoKTsKCgpleHRlcm4gbG9uZyBpbnQgc3lzY29uZiAoaW50IF9fbmFtZSkgdGhyb3cgKCk7CgoK
CmV4dGVybiBzaXplX3QgY29uZnN0ciAoaW50IF9fbmFtZSwgY2hhciAqX19idWYsIHNpemVfdCBf
X2xlbikgdGhyb3cgKCk7CgoKCgpleHRlcm4gX19waWRfdCBnZXRwaWQgKHZvaWQpIHRocm93ICgp
OwoKCmV4dGVybiBfX3BpZF90IGdldHBwaWQgKHZvaWQpIHRocm93ICgpOwoKCgoKZXh0ZXJuIF9f
cGlkX3QgZ2V0cGdycCAodm9pZCkgdGhyb3cgKCk7CiMgNTM2ICIvdXNyL2luY2x1ZGUvdW5pc3Rk
LmgiIDMKZXh0ZXJuIF9fcGlkX3QgX19nZXRwZ2lkIChfX3BpZF90IF9fcGlkKSB0aHJvdyAoKTsK
IyA1NDUgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4gaW50IHNldHBnaWQgKF9fcGlk
X3QgX19waWQsIF9fcGlkX3QgX19wZ2lkKSB0aHJvdyAoKTsKCiMgNTYyICIvdXNyL2luY2x1ZGUv
dW5pc3RkLmgiIDMKZXh0ZXJuIGludCBzZXRwZ3JwICh2b2lkKSB0aHJvdyAoKTsKCiMgNTgwICIv
dXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIF9fcGlkX3Qgc2V0c2lkICh2b2lkKSB0aHJv
dyAoKTsKCgoKCgoKCmV4dGVybiBfX3VpZF90IGdldHVpZCAodm9pZCkgdGhyb3cgKCk7CgoKZXh0
ZXJuIF9fdWlkX3QgZ2V0ZXVpZCAodm9pZCkgdGhyb3cgKCk7CgoKZXh0ZXJuIF9fZ2lkX3QgZ2V0
Z2lkICh2b2lkKSB0aHJvdyAoKTsKCgpleHRlcm4gX19naWRfdCBnZXRlZ2lkICh2b2lkKSB0aHJv
dyAoKTsKCgoKCmV4dGVybiBpbnQgZ2V0Z3JvdXBzIChpbnQgX19zaXplLCBfX2dpZF90IF9fbGlz
dFtdKSB0aHJvdyAoKTsKCiMgNjEzICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIGlu
dCBzZXR1aWQgKF9fdWlkX3QgX191aWQpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCBzZXRyZXVp
ZCAoX191aWRfdCBfX3J1aWQsIF9fdWlkX3QgX19ldWlkKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBp
bnQgc2V0ZXVpZCAoX191aWRfdCBfX3VpZCkgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBpbnQgc2V0
Z2lkIChfX2dpZF90IF9fZ2lkKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQgc2V0cmVnaWQgKF9f
Z2lkX3QgX19yZ2lkLCBfX2dpZF90IF9fZWdpZCkgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IHNl
dGVnaWQgKF9fZ2lkX3QgX19naWQpIHRocm93ICgpOwoKCgoKCgpleHRlcm4gX19waWRfdCBmb3Jr
ICh2b2lkKSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIF9fcGlkX3QgdmZvcmsgKHZvaWQpIHRocm93
ICgpOwoKCgoKCmV4dGVybiBjaGFyICp0dHluYW1lIChpbnQgX19mZCkgdGhyb3cgKCk7CgoKCmV4
dGVybiBpbnQgdHR5bmFtZV9yIChpbnQgX19mZCwgY2hhciAqX19idWYsIHNpemVfdCBfX2J1Zmxl
bikgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgaXNhdHR5IChpbnQgX19mZCkgdGhyb3cgKCk7CgoK
CgpleHRlcm4gaW50IHR0eXNsb3QgKHZvaWQpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCBsaW5r
IChfX2NvbnN0IGNoYXIgKl9fZnJvbSwgX19jb25zdCBjaGFyICpfX3RvKSB0aHJvdyAoKTsKCgoK
ZXh0ZXJuIGludCBzeW1saW5rIChfX2NvbnN0IGNoYXIgKl9fZnJvbSwgX19jb25zdCBjaGFyICpf
X3RvKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQgcmVhZGxpbmsgKF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX3BhdGgsIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsCiAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBfX2xlbikgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgdW5saW5rIChfX2NvbnN0
IGNoYXIgKl9fbmFtZSkgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBybWRpciAoX19jb25zdCBjaGFy
ICpfX3BhdGgpIHRocm93ICgpOwoKCgpleHRlcm4gX19waWRfdCB0Y2dldHBncnAgKGludCBfX2Zk
KSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IHRjc2V0cGdycCAoaW50IF9fZmQsIF9fcGlkX3QgX19w
Z3JwX2lkKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGNoYXIgKmdldGxvZ2luICh2b2lkKSB0aHJvdyAo
KTsKIyA3MTYgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4gaW50IHNldGxvZ2luIChf
X2NvbnN0IGNoYXIgKl9fbmFtZSkgdGhyb3cgKCk7CiMgNzM0ICIvdXNyL2luY2x1ZGUvdW5pc3Rk
LmgiIDMKZXh0ZXJuIGludCBnZXRob3N0bmFtZSAoY2hhciAqX19uYW1lLCBzb2NrbGVuX3QgX19s
ZW4pIHRocm93ICgpOwoKCgpleHRlcm4gaW50IHNldGhvc3RuYW1lIChfX2NvbnN0IGNoYXIgKl9f
bmFtZSwgc2l6ZV90IF9fbGVuKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCBzZXRob3N0aWQgKGxv
bmcgaW50IF9faWQpIHRocm93ICgpOwoKCgoKCmV4dGVybiBpbnQgZ2V0ZG9tYWlubmFtZSAoY2hh
ciAqX19uYW1lLCBzaXplX3QgX19sZW4pIHRocm93ICgpOwpleHRlcm4gaW50IHNldGRvbWFpbm5h
bWUgKF9fY29uc3QgY2hhciAqX19uYW1lLCBzaXplX3QgX19sZW4pIHRocm93ICgpOwoKCgpleHRl
cm4gaW50IGZzeW5jIChpbnQgX19mZCkgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGludCB2aGFuZ3Vw
ICh2b2lkKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IHJldm9rZSAoX19jb25zdCBjaGFyICpfX2Zp
bGUpIHRocm93ICgpOwoKCgoKCgoKZXh0ZXJuIGludCBwcm9maWwgKHVuc2lnbmVkIHNob3J0IGlu
dCAqX19zYW1wbGVfYnVmZmVyLCBzaXplX3QgX19zaXplLAogICAgICAgICAgICAgICAgICAgc2l6
ZV90IF9fb2Zmc2V0LCB1bnNpZ25lZCBpbnQgX19zY2FsZSkgdGhyb3cgKCk7CgoKCgoKZXh0ZXJu
IGludCBhY2N0IChfX2NvbnN0IGNoYXIgKl9fbmFtZSkgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQg
Y2hyb290IChfX2NvbnN0IGNoYXIgKl9fcGF0aCkgdGhyb3cgKCk7CgoKCmV4dGVybiBjaGFyICpn
ZXR1c2Vyc2hlbGwgKHZvaWQpIHRocm93ICgpOwpleHRlcm4gdm9pZCBlbmR1c2Vyc2hlbGwgKHZv
aWQpIHRocm93ICgpOwpleHRlcm4gdm9pZCBzZXR1c2Vyc2hlbGwgKHZvaWQpIHRocm93ICgpOwoK
CgoKZXh0ZXJuIGNoYXIgKmdldHBhc3MgKF9fY29uc3QgY2hhciAqX19wcm9tcHQpIHRocm93ICgp
OwoKCgoKZXh0ZXJuIGludCBkYWVtb24gKGludCBfX25vY2hkaXIsIGludCBfX25vY2xvc2UpIHRo
cm93ICgpOwoKCgoKCgoKZXh0ZXJuIGxvbmcgaW50IGdldGhvc3RpZCAodm9pZCkgdGhyb3cgKCk7
CgoKZXh0ZXJuIGludCBzeW5jICh2b2lkKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQgZ2V0cGFn
ZXNpemUgKHZvaWQpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCmV4
dGVybiBpbnQgdHJ1bmNhdGUgKF9fY29uc3QgY2hhciAqX19maWxlLCBfX29mZl90IF9fbGVuZ3Ro
KSB0aHJvdyAoKTsKIyA4MzQgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4gaW50IGZ0
cnVuY2F0ZSAoaW50IF9fZmQsIF9fb2ZmX3QgX19sZW5ndGgpIHRocm93ICgpOwojIDg1MCAiL3Vz
ci9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4dGVybiBpbnQgZ2V0ZHRhYmxlc2l6ZSAodm9pZCkgdGhy
b3cgKCk7CgoKCgoKCgoKZXh0ZXJuIGludCBicmsgKHZvaWQgKl9fYWRkcikgdGhyb3cgKCk7CgoK
CgoKZXh0ZXJuIHZvaWQgKnNicmsgKGludHB0cl90IF9fZGVsdGEpIHRocm93ICgpOwojIDg4MCAi
L3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4dGVybiBsb25nIGludCBzeXNjYWxsIChsb25nIGlu
dCBfX3N5c25vLCAuLi4pIHRocm93ICgpOwoKIyA5MDAgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIg
MwpleHRlcm4gaW50IGxvY2tmIChpbnQgX19mZCwgaW50IF9fY21kLCBfX29mZl90IF9fbGVuKSB0
aHJvdyAoKTsKIyA5MzEgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4gaW50IGZkYXRh
c3luYyAoaW50IF9fZmlsZGVzKSB0aHJvdyAoKTsKIyA5NzYgIi91c3IvaW5jbHVkZS91bmlzdGQu
aCIgMwpleHRlcm4gaW50IHB0aHJlYWRfYXRmb3JrICh2b2lkICgqX19wcmVwYXJlKSAodm9pZCks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKCpfX3BhcmVudCkgKHZvaWQpLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICB2b2lkICgqX19jaGlsZCkgKHZvaWQpKSB0aHJvdyAoKTsK
Cgp9CgojIDExICJwYXJzZS5oIiAyCgojIDI4ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDEgMwpl
eHRlcm4gIkMiIHsKCgoKCgoKCgpleHRlcm4gdm9pZCAqbWVtY3B5ICh2b2lkICpfX3Jlc3RyaWN0
IF9fZGVzdCwKICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB2b2lkICpfX3Jlc3RyaWN0IF9f
c3JjLCBzaXplX3QgX19uKSB0aHJvdyAoKTsKCgpleHRlcm4gdm9pZCAqbWVtbW92ZSAodm9pZCAq
X19kZXN0LCBfX2NvbnN0IHZvaWQgKl9fc3JjLCBzaXplX3QgX19uKQogICAgIHRocm93ICgpOwoK
CgoKCmV4dGVybiB2b2lkICptZW1jY3B5ICh2b2lkICpfX3Jlc3RyaWN0IF9fZGVzdCwgX19jb25z
dCB2b2lkICpfX3Jlc3RyaWN0IF9fc3JjLAogICAgICAgICAgICAgICAgICAgICAgaW50IF9fYywg
c2l6ZV90IF9fbikKICAgICB0aHJvdyAoKTsKCgoKCmV4dGVybiB2b2lkICptZW1zZXQgKHZvaWQg
Kl9fcywgaW50IF9fYywgc2l6ZV90IF9fbikgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBtZW1jbXAg
KF9fY29uc3Qgdm9pZCAqX19zMSwgX19jb25zdCB2b2lkICpfX3MyLCBzaXplX3QgX19uKQogICAg
IHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCmV4dGVybiB2b2lkICptZW1j
aHIgKF9fY29uc3Qgdm9pZCAqX19zLCBpbnQgX19jLCBzaXplX3QgX19uKQogICAgICB0aHJvdyAo
KSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCiMgNzcgIi91c3IvaW5jbHVkZS9zdHJpbmcu
aCIgMwpleHRlcm4gY2hhciAqc3RyY3B5IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwgX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjKQogICAgIHRocm93ICgpOwoKZXh0ZXJuIGNoYXIgKnN0
cm5jcHkgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LAogICAgICAgICAgICAgICAgICAgICAgX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKSB0aHJvdyAoKTsKCgpleHRl
cm4gY2hhciAqc3RyY2F0IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwgX19jb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fc3JjKQogICAgIHRocm93ICgpOwoKZXh0ZXJuIGNoYXIgKnN0cm5jYXQgKGNo
YXIgKl9fcmVzdHJpY3QgX19kZXN0LCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMsCiAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19uKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IHN0
cmNtcCAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIpCiAgICAgdGhyb3cg
KCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgpleHRlcm4gaW50IHN0cm5jbXAgKF9fY29u
c3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyLCBzaXplX3QgX19uKQogICAgIHRocm93
ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCmV4dGVybiBpbnQgc3RyY29sbCAoX19j
b25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIpCiAgICAgdGhyb3cgKCkgX19hdHRy
aWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgpleHRlcm4gc2l6ZV90IHN0cnhmcm0gKGNoYXIgKl9fcmVz
dHJpY3QgX19kZXN0LAogICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX3NyYywgc2l6ZV90IF9fbikgdGhyb3cgKCk7CgojIDEyMCAiL3Vzci9pbmNsdWRlL3N0
cmluZy5oIiAzCmV4dGVybiBjaGFyICpzdHJkdXAgKF9fY29uc3QgY2hhciAqX19zKSB0aHJvdyAo
KSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwojIDE1NSAiL3Vzci9pbmNsdWRlL3N0cmlu
Zy5oIiAzCmV4dGVybiBjaGFyICpzdHJjaHIgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19jKSB0
aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCmV4dGVybiBjaGFyICpzdHJyY2hy
IChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYykgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9f
cHVyZV9fKSk7CgojIDE2NyAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzCmV4dGVybiBzaXplX3Qg
c3RyY3NwbiAoX19jb25zdCBjaGFyICpfX3MsIF9fY29uc3QgY2hhciAqX19yZWplY3QpCiAgICAg
dGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJuIHNpemVfdCBzdHJz
cG4gKF9fY29uc3QgY2hhciAqX19zLCBfX2NvbnN0IGNoYXIgKl9fYWNjZXB0KQogICAgIHRocm93
ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIGNoYXIgKnN0cnBicmsgKF9f
Y29uc3QgY2hhciAqX19zLCBfX2NvbnN0IGNoYXIgKl9fYWNjZXB0KQogICAgIHRocm93ICgpIF9f
YXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIGNoYXIgKnN0cnN0ciAoX19jb25zdCBj
aGFyICpfX2hheXN0YWNrLCBfX2NvbnN0IGNoYXIgKl9fbmVlZGxlKQogICAgIHRocm93ICgpIF9f
YXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKIyAxODkgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIg
MwpleHRlcm4gY2hhciAqc3RydG9rIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgX19jb25zdCBjaGFy
ICpfX3Jlc3RyaWN0IF9fZGVsaW0pCiAgICAgdGhyb3cgKCk7CgoKCmV4dGVybiBjaGFyICpfX3N0
cnRva19yIChjaGFyICpfX3Jlc3RyaWN0IF9fcywKICAgICAgICAgICAgICAgICAgICAgICAgIF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX2RlbGltLAogICAgICAgICAgICAgICAgICAgICAgICAg
Y2hhciAqKl9fcmVzdHJpY3QgX19zYXZlX3B0cikgdGhyb3cgKCk7CgpleHRlcm4gY2hhciAqc3Ry
dG9rX3IgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19k
ZWxpbSwKICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX3NhdmVfcHRy
KSB0aHJvdyAoKTsKIyAyMjAgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMwpleHRlcm4gc2l6ZV90
IHN0cmxlbiAoX19jb25zdCBjaGFyICpfX3MpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1
cmVfXykpOwoKIyAyMzEgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMwpleHRlcm4gY2hhciAqc3Ry
ZXJyb3IgKGludCBfX2Vycm51bSkgdGhyb3cgKCk7CgoKCmV4dGVybiBjaGFyICpfX3N0cmVycm9y
X3IgKGludCBfX2Vycm51bSwgY2hhciAqX19idWYsIHNpemVfdCBfX2J1ZmxlbikgdGhyb3cgKCk7
CmV4dGVybiBjaGFyICpzdHJlcnJvcl9yIChpbnQgX19lcnJudW0sIGNoYXIgKl9fYnVmLCBzaXpl
X3QgX19idWZsZW4pIHRocm93ICgpOwoKCgoKZXh0ZXJuIHZvaWQgX19iemVybyAodm9pZCAqX19z
LCBzaXplX3QgX19uKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIHZvaWQgYmNvcHkgKF9fY29uc3Qgdm9p
ZCAqX19zcmMsIHZvaWQgKl9fZGVzdCwgc2l6ZV90IF9fbikgdGhyb3cgKCk7CgoKZXh0ZXJuIHZv
aWQgYnplcm8gKHZvaWQgKl9fcywgc2l6ZV90IF9fbikgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBi
Y21wIChfX2NvbnN0IHZvaWQgKl9fczEsIF9fY29uc3Qgdm9pZCAqX19zMiwgc2l6ZV90IF9fbikK
ICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpleHRlcm4gY2hhciAq
aW5kZXggKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19jKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9f
ICgoX19wdXJlX18pKTsKCgpleHRlcm4gY2hhciAqcmluZGV4IChfX2NvbnN0IGNoYXIgKl9fcywg
aW50IF9fYykgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKCmV4dGVybiBp
bnQgX19mZnMgKGludCBfX2kpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChjb25zdCkpOwpleHRl
cm4gaW50IGZmcyAoaW50IF9faSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKGNvbnN0KSk7CgoK
CiMgMjc2ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMKZXh0ZXJuIGludCBfX3N0cmNhc2VjbXAg
KF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyKQogICAgIHRocm93ICgpIF9f
YXR0cmlidXRlX18gKChfX3B1cmVfXykpOwpleHRlcm4gaW50IHN0cmNhc2VjbXAgKF9fY29uc3Qg
Y2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRl
X18gKChfX3B1cmVfXykpOwoKCmV4dGVybiBpbnQgc3RybmNhc2VjbXAgKF9fY29uc3QgY2hhciAq
X19zMSwgX19jb25zdCBjaGFyICpfX3MyLCBzaXplX3QgX19uKQogICAgIHRocm93ICgpIF9fYXR0
cmlidXRlX18gKChfX3B1cmVfXykpOwojIDMwMCAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzCmV4
dGVybiBjaGFyICpzdHJzZXAgKGNoYXIgKipfX3Jlc3RyaWN0IF9fc3RyaW5ncCwKICAgICAgICAg
ICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZGVsaW0pIHRocm93ICgpOwoj
IDM2OSAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzCn0KCiMgMTIgInBhcnNlLmgiIDIKCiMgMzIg
InBhcnNlLmgiCnR5cGVkZWYgc2lnbmVkIGNoYXIgQ0hSOwoKdHlwZWRlZiBzaWduZWQgc2hvcnQg
V1JEOwoKdHlwZWRlZiBzaWduZWQgaW50IElOVDsKCnR5cGVkZWYgc2lnbmVkIGxvbmcgTE5HOwoK
dHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBQVFI7Cgp0eXBlZGVmIHNpZ25lZCBjaGFyIFNUUjsKCgoK
c3RydWN0IHJjX2ZpbGUgewoKICAgICAgICAgICBDSFIgY19zdGF0dXM7CiMgNjMgInBhcnNlLmgi
CiAgICAgICAgICAgU1RSIHNfY21kIFsyMV07CgogICAgICAgICAgIFNUUiBzX2FyZyBbMjFdOwoK
CgoKCgoKICAgICAgICAgICBTVFIgc19waG9uZSBbMjFdOwoKCgoKCgogICAgICAgICAgIFdSRCB3
X2NtZDsKICAgICAgICAgICBXUkQgd19hcmc7CgoKCn07CgpzdHJ1Y3QgcmNfYXJnIHsKICAgIFdS
RCB3X2lkOwogICAgV1JEIHdfY29kZTsKfTsKCnN0cnVjdCByY19jbWQgewogICAgV1JEIHdfaWQ7
CiAgICBXUkQgd19jb2RlOwogICAgaW50IGlfYXJnOwogICAgY29uc3Qgc3RydWN0CiAgICAgIHJj
X2FyZyAqYXJnczsKfTsKCmV4dGVybiB2b2lkIHBhcnNlX2NvbW1hbmQoCiAgICBjb25zdCBTVFIg
KnNfc3RyLAogICAgc3RydWN0IHJjX2ZpbGUgKmZpbGUKKTsKCgpleHRlcm4gYm9vbCBpc3doaXRl
KAogICAgQ0hSIGNfY2hyCik7CgoKZXh0ZXJuIGJvb2wgaXN2YWxpZCgKICAgIENIUiBjX2Nocgop
OwoKCmV4dGVybiBXUkQgbWFrZV9jb2RlKAogICAgY29uc3QgU1RSICpzX3N0cgopOwoKCgoKCmV4
dGVybiBXUkQgbWF0Y2hfY21kKAogICAgV1JEIHdfY29kZSwKICAgIGNvbnN0IHN0cnVjdAogICAg
ICByY19jbWQgKmNtZHMKKTsKCgoKZXh0ZXJuIFdSRCBtYXRjaF9hcmcoCiAgICBXUkQgd19jb2Rl
LAogICAgY29uc3Qgc3RydWN0CiAgICAgIHJjX2FyZyAqYXJncwopOwojIDIgInNtc2luLmNwcCIg
MgoKaW50IG1haW4oKQp7CiAgICBzdHJ1Y3QgcmNfZmlsZSBmaWxlOwogICAgU1RSIHNfaW5wdXRb
MTYxXTsKCiAgICByZWFkKDAsIHNfaW5wdXQsIDE2MSAtIDEpOwogICAgcGFyc2VfY29tbWFuZChz
X2lucHV0LCAmZmlsZSk7CiAgICBwcmludGYoIkNNRCAgIDogJXNcbkFSRyAgIDogJXNcblRPS0VO
UzogJWhkICVoZFxuIiwgZmlsZS5zX2NtZCwgZmlsZS5zX2FyZywgZmlsZS53X2NtZCwgZmlsZS53
X2FyZyk7Cn0KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAA=


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