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++/2088: Bootstrap 3.0 on i686-linux fails again.



>Number:         2088
>Category:       c++
>Synopsis:       Bootstrap 3.0 on i686-linux fails again.
>Confidential:   no
>Severity:       critical
>Priority:       high
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Sun Feb 25 09:46:00 PST 2001
>Closed-Date:
>Last-Modified:
>Originator:     carlo@alinoe.com
>Release:        gcc version 3.0 20010225 (current cvs version of 3.0 branch).
>Organization:
>Environment:
i686-*-linux with gcc-3.0 20010224 as default compiler.
>Description:
After Richards latest patch, the bootstrap still fails
but now somewhere else:

./xgcc -B./ -B/usr/local/gcc-3.0/i686-pc-linux-gnu/bin/ -isystem /usr/local/gcc-3.0/i686-pc-linux-gnu/include -O2   -DIN_GCC    -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -isystem ./include  -fPIC -g1  -DIN_LIBGCC2 -D__GCC_FLOAT_NOT_NEEDED  -I. -I. -I/usr/src/gcc/gcc-cvs-3.0/gcc -I/usr/src/gcc/gcc-cvs-3.0/gcc/. -I/usr/src/gcc/gcc-cvs-3.0/gcc/config -I/usr/src/gcc/gcc-cvs-3.0/gcc/../include  -fexceptions -DL_eh -c /usr/src/gcc/gcc-cvs-3.0/gcc/libgcc2.c -o libgcc/./_eh.o
/usr/src/gcc/gcc-cvs-3.0/gcc/libgcc2.c: In function `eh_context_static':
/usr/src/gcc/gcc-cvs-3.0/gcc/libgcc2.c:3335: Internal error: Segmentation fault
Please submit a full bug report, with preprocessed source if appropriate.
See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions.
make[3]: *** [libgcc/./_eh.o] Error 1
make[3]: Leaving directory `/usr/src/gcc/gcc-objdir-3.0/gcc'
make[2]: *** [libgcc.a] Error 2
make[2]: Leaving directory `/usr/src/gcc/gcc-objdir-3.0/gcc'
make[1]: *** [stage1_build] Error 2
make[1]: Leaving directory `/usr/src/gcc/gcc-objdir-3.0/gcc'
make: *** [bootstrap] Error 2
gcc_build: error: Could not bootstrap the compiler
>How-To-Repeat:
/usr/src/gcc/gcc-objdir-3.0/gcc>./cc1 -fpreprocessed libgcc2.i -quiet -dumpbase libgcc2.c -g1 -O2 -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -version -fPIC -fexceptions -o libgcc2.s
GNU CPP version 3.0 20010225 (prerelease) (cpplib) (i386 Linux/ELF)
GNU C version 3.0 20010225 (prerelease) (i686-pc-linux-gnu)
        compiled by GNU C version 3.0 20010224 (prerelease).
/usr/src/gcc/gcc-cvs-3.0/gcc/libgcc2.c: In function `eh_context_static':
/usr/src/gcc/gcc-cvs-3.0/gcc/libgcc2.c:3335: Internal error: Segmentation fault
Please submit a full bug report, with preprocessed source if appropriate.
See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions.

libgcc2.i is attached.

gdb session:

Program received signal SIGSEGV, Segmentation fault.
0x81851df in end_sequence () at /usr/src/gcc/gcc-cvs-3.0/gcc/emit-rtl.c:3643
3643      first_insn = tem->first;
(gdb) bt
#0  0x81851df in end_sequence () at /usr/src/gcc/gcc-cvs-3.0/gcc/emit-rtl.c:3643
#1  0x8107b1f in expand_end_stmt_expr (t=0x40304400)
    at /usr/src/gcc/gcc-cvs-3.0/gcc/stmt.c:2161
#2  0x808fd0c in c_expand_expr (exp=0x4030294c, target=0x40185200, tmode=VOIDmode,
    modifier=EXPAND_NORMAL) at /usr/src/gcc/gcc-cvs-3.0/gcc/c-common.c:4064
#3  0x81356d2 in expand_expr (exp=0x4030294c, target=0x0, tmode=VOIDmode,
    modifier=EXPAND_NORMAL) at /usr/src/gcc/gcc-cvs-3.0/gcc/expr.c:8712
#4  0x8107067 in expand_expr_stmt (exp=0x4030294c)
    at /usr/src/gcc/gcc-cvs-3.0/gcc/stmt.c:1944
#5  0x8096da7 in genrtl_expr_stmt (expr=0x4030294c)
    at /usr/src/gcc/gcc-cvs-3.0/gcc/c-semantics.c:386
#6  0x80989f6 in expand_stmt (t=0x40302a8c)
    at /usr/src/gcc/gcc-cvs-3.0/gcc/c-semantics.c:790
#7  0x80986de in genrtl_compound_stmt (t=0x402f6974)
    at /usr/src/gcc/gcc-cvs-3.0/gcc/c-semantics.c:713
#8  0x8098a71 in expand_stmt (t=0x402f6974)
    at /usr/src/gcc/gcc-cvs-3.0/gcc/c-semantics.c:814
#9  0x809726e in genrtl_if_stmt (t=0x402ff040)
    at /usr/src/gcc/gcc-cvs-3.0/gcc/c-semantics.c:448
#10 0x8098a5e in expand_stmt (t=0x402ff040)
    at /usr/src/gcc/gcc-cvs-3.0/gcc/c-semantics.c:810
#11 0x80986de in genrtl_compound_stmt (t=0x402f671c)
    at /usr/src/gcc/gcc-cvs-3.0/gcc/c-semantics.c:713
#12 0x8098a71 in expand_stmt (t=0x402f671c)
    at /usr/src/gcc/gcc-cvs-3.0/gcc/c-semantics.c:814
#13 0x806aff2 in c_expand_body (fndecl=0x402ee478, nested_p=0)
    at /usr/src/gcc/gcc-cvs-3.0/gcc/c-decl.c:6720
#14 0x806ada8 in finish_function (nested=0) at /usr/src/gcc/gcc-cvs-3.0/gcc/c-decl.c:6664
#15 0x804a62c in yyparse_1 () at /usr/lib/bison.simple:323
#16 0x8051f1d in yyparse () at /usr/src/gcc/gcc-cvs-3.0/gcc/c-lex.c:158
#17 0x80af533 in compile_file (name=0x843d669 "libgcc2.i")
    at /usr/src/gcc/gcc-cvs-3.0/gcc/toplev.c:2377
#18 0x80b3f11 in main (argc=18, argv=0xbffff5dc)
    at /usr/src/gcc/gcc-cvs-3.0/gcc/toplev.c:4900
#19 0x4003da2c in __libc_start_main (main=0x80b3690 <main>, argc=18, ubp_av=0xbffff5dc,
    init=0x80491bc <_init>, fini=0x834144c <_fini>, rtld_fini=0x4000d3c8 <_dl_fini>,
    stack_end=0xbffff5d4) at ../sysdeps/generic/libc-start.c:111
(gdb) p tem
$1 = (struct sequence_stack *) 0x0


>Fix:

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

IyAzNiAiL3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4wL2djYy9saWJnY2MyLmMiCiMgMSAidGNvbmZp
Zy5oIiAxCgoKIyAxICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAvZ2NjL2dhbnNpZGVjbC5oIiAx
CiMgMjggIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvZ2Fuc2lkZWNsLmgiCiMgMSAiL3Vz
ci9zcmMvZ2NjL2djYy1jdnMtMy4wL2luY2x1ZGUvYW5zaWRlY2wuaCIgMQojIDI5ICIvdXNyL3Ny
Yy9nY2MvZ2NjLWN2cy0zLjAvZ2NjL2dhbnNpZGVjbC5oIiAyCiMgNCAidGNvbmZpZy5oIiAyCgoK
IyAxICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAvZ2NjL2NvbmZpZy9pMzg2L3htLWkzODYuaCIg
MQojIDQzICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAvZ2NjL2NvbmZpZy9pMzg2L3htLWkzODYu
aCIKIyAxICJ0bS5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4wL2djYy9nYW5z
aWRlY2wuaCIgMQojIDUgInRtLmgiIDIKCgojIDEgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9n
Y2MvY29uZmlnL2kzODYvaTM4Ni5oIiAxCiMgNTMgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9n
Y2MvY29uZmlnL2kzODYvaTM4Ni5oIgpzdHJ1Y3QgcHJvY2Vzc29yX2Nvc3RzIHsKICBpbnQgYWRk
OwogIGludCBsZWE7CiAgaW50IHNoaWZ0X3ZhcjsKICBpbnQgc2hpZnRfY29uc3Q7CiAgaW50IG11
bHRfaW5pdDsKICBpbnQgbXVsdF9iaXQ7CiAgaW50IGRpdmlkZTsKICBpbnQgbGFyZ2VfaW5zbjsK
ICBpbnQgbW92ZV9yYXRpbzsKCiAgaW50IG1vdnpibF9sb2FkOwogIGludCBpbnRfbG9hZFszXTsK
CgogIGludCBpbnRfc3RvcmVbM107CgogIGludCBmcF9tb3ZlOwogIGludCBmcF9sb2FkWzNdOwoK
ICBpbnQgZnBfc3RvcmVbM107Cgp9OwoKZXh0ZXJuIHN0cnVjdCBwcm9jZXNzb3JfY29zdHMgKml4
ODZfY29zdDsKCgoKZXh0ZXJuIGludCB0YXJnZXRfZmxhZ3M7CiMgMTc1ICIvdXNyL3NyYy9nY2Mv
Z2NjLWN2cy0zLjAvZ2NjL2NvbmZpZy9pMzg2L2kzODYuaCIKZXh0ZXJuIGNvbnN0IGludCB4ODZf
dXNlX2xlYXZlLCB4ODZfcHVzaF9tZW1vcnksIHg4Nl96ZXJvX2V4dGVuZF93aXRoX2FuZDsKZXh0
ZXJuIGNvbnN0IGludCB4ODZfdXNlX2JpdF90ZXN0LCB4ODZfY21vdmUsIHg4Nl9kZWVwX2JyYW5j
aDsKZXh0ZXJuIGNvbnN0IGludCB4ODZfdW5yb2xsX3N0cmxlbiwgeDg2X3VzZV9xX3JlZywgeDg2
X3VzZV9hbnlfcmVnOwpleHRlcm4gY29uc3QgaW50IHg4Nl9kb3VibGVfd2l0aF9hZGQsIHg4Nl9w
YXJ0aWFsX3JlZ19zdGFsbCwgeDg2X21vdng7CmV4dGVybiBjb25zdCBpbnQgeDg2X3VzZV9sb29w
LCB4ODZfdXNlX2Zpb3AsIHg4Nl91c2VfbW92MDsKZXh0ZXJuIGNvbnN0IGludCB4ODZfdXNlX2Ns
dGQsIHg4Nl9yZWFkX21vZGlmeV93cml0ZTsKZXh0ZXJuIGNvbnN0IGludCB4ODZfcmVhZF9tb2Rp
ZnksIHg4Nl9zcGxpdF9sb25nX21vdmVzOwpleHRlcm4gY29uc3QgaW50IHg4Nl9wcm9tb3RlX1FJ
bW9kZSwgeDg2X3NpbmdsZV9zdHJpbmdvcDsKZXh0ZXJuIGNvbnN0IGludCB4ODZfaGltb2RlX21h
dGgsIHg4Nl9xaW1vZGVfbWF0aCwgeDg2X3Byb21vdGVfcWlfcmVnczsKZXh0ZXJuIGNvbnN0IGlu
dCB4ODZfcHJvbW90ZV9oaV9yZWdzLCB4ODZfaW50ZWdlcl9ERm1vZGVfbW92ZXM7CmV4dGVybiBj
b25zdCBpbnQgeDg2X2FkZF9lc3BfNCwgeDg2X2FkZF9lc3BfOCwgeDg2X3N1Yl9lc3BfNCwgeDg2
X3N1Yl9lc3BfODsKZXh0ZXJuIGNvbnN0IGludCB4ODZfcGFydGlhbF9yZWdfZGVwZW5kZW5jeSwg
eDg2X21lbW9yeV9taXNtYXRjaF9zdGFsbDsKIyAzMTQgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMu
MC9nY2MvY29uZmlnL2kzODYvaTM4Ni5oIgplbnVtIHByb2Nlc3Nvcl90eXBlCnsKICBQUk9DRVNT
T1JfSTM4NiwKICBQUk9DRVNTT1JfSTQ4NiwKICBQUk9DRVNTT1JfUEVOVElVTSwKICBQUk9DRVNT
T1JfUEVOVElVTVBSTywKICBQUk9DRVNTT1JfSzYsCiAgUFJPQ0VTU09SX0FUSExPTiwKICBQUk9D
RVNTT1JfbWF4Cn07CgpleHRlcm4gZW51bSBwcm9jZXNzb3JfdHlwZSBpeDg2X2NwdTsKCmV4dGVy
biBpbnQgaXg4Nl9hcmNoOwojIDkzOSAiL3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4wL2djYy9jb25m
aWcvaTM4Ni9pMzg2LmgiCmVudW0gcmVnX2NsYXNzCnsKICBOT19SRUdTLAogIEFSRUcsIERSRUcs
IENSRUcsIEJSRUcsIFNJUkVHLCBESVJFRywKICBBRF9SRUdTLAogIFFfUkVHUywKICBOT05fUV9S
RUdTLAogIElOREVYX1JFR1MsCiAgR0VORVJBTF9SRUdTLAogIEZQX1RPUF9SRUcsIEZQX1NFQ09O
RF9SRUcsCiAgRkxPQVRfUkVHUywKICBTU0VfUkVHUywKICBNTVhfUkVHUywKICBGTE9BVF9JTlRf
UkVHUywKICBBTExfUkVHUywgTElNX1JFR19DTEFTU0VTCn07CiMgMTMxNSAiL3Vzci9zcmMvZ2Nj
L2djYy1jdnMtMy4wL2djYy9jb25maWcvaTM4Ni9pMzg2LmgiCnR5cGVkZWYgc3RydWN0IGl4ODZf
YXJncyB7CiAgaW50IHdvcmRzOwogIGludCBucmVnczsKICBpbnQgcmVnbm87CiAgaW50IHNzZV93
b3JkczsKICBpbnQgc3NlX25yZWdzOwogIGludCBzc2VfcmVnbm87Cn0gQ1VNVUxBVElWRV9BUkdT
OwojIDE3NjEgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvY29uZmlnL2kzODYvaTM4Ni5o
IgplbnVtIGl4ODZfYnVpbHRpbnMKewogIElYODZfQlVJTFRJTl9BRERQUywKICBJWDg2X0JVSUxU
SU5fQUREU1MsCiAgSVg4Nl9CVUlMVElOX0RJVlBTLAogIElYODZfQlVJTFRJTl9ESVZTUywKICBJ
WDg2X0JVSUxUSU5fTVVMUFMsCiAgSVg4Nl9CVUlMVElOX01VTFNTLAogIElYODZfQlVJTFRJTl9T
VUJQUywKICBJWDg2X0JVSUxUSU5fU1VCU1MsCgogIElYODZfQlVJTFRJTl9DTVBFUVBTLAogIElY
ODZfQlVJTFRJTl9DTVBMVFBTLAogIElYODZfQlVJTFRJTl9DTVBMRVBTLAogIElYODZfQlVJTFRJ
Tl9DTVBHVFBTLAogIElYODZfQlVJTFRJTl9DTVBHRVBTLAogIElYODZfQlVJTFRJTl9DTVBORVFQ
UywKICBJWDg2X0JVSUxUSU5fQ01QTkxUUFMsCiAgSVg4Nl9CVUlMVElOX0NNUE5MRVBTLAogIElY
ODZfQlVJTFRJTl9DTVBOR1RQUywKICBJWDg2X0JVSUxUSU5fQ01QTkdFUFMsCiAgSVg4Nl9CVUlM
VElOX0NNUE9SRFBTLAogIElYODZfQlVJTFRJTl9DTVBVTk9SRFBTLAogIElYODZfQlVJTFRJTl9D
TVBORVBTLAogIElYODZfQlVJTFRJTl9DTVBFUVNTLAogIElYODZfQlVJTFRJTl9DTVBMVFNTLAog
IElYODZfQlVJTFRJTl9DTVBMRVNTLAogIElYODZfQlVJTFRJTl9DTVBHVFNTLAogIElYODZfQlVJ
TFRJTl9DTVBHRVNTLAogIElYODZfQlVJTFRJTl9DTVBORVFTUywKICBJWDg2X0JVSUxUSU5fQ01Q
TkxUU1MsCiAgSVg4Nl9CVUlMVElOX0NNUE5MRVNTLAogIElYODZfQlVJTFRJTl9DTVBOR1RTUywK
ICBJWDg2X0JVSUxUSU5fQ01QTkdFU1MsCiAgSVg4Nl9CVUlMVElOX0NNUE9SRFNTLAogIElYODZf
QlVJTFRJTl9DTVBVTk9SRFNTLAogIElYODZfQlVJTFRJTl9DTVBORVNTLAoKICBJWDg2X0JVSUxU
SU5fQ09NSUVRU1MsCiAgSVg4Nl9CVUlMVElOX0NPTUlMVFNTLAogIElYODZfQlVJTFRJTl9DT01J
TEVTUywKICBJWDg2X0JVSUxUSU5fQ09NSUdUU1MsCiAgSVg4Nl9CVUlMVElOX0NPTUlHRVNTLAog
IElYODZfQlVJTFRJTl9DT01JTkVRU1MsCiAgSVg4Nl9CVUlMVElOX1VDT01JRVFTUywKICBJWDg2
X0JVSUxUSU5fVUNPTUlMVFNTLAogIElYODZfQlVJTFRJTl9VQ09NSUxFU1MsCiAgSVg4Nl9CVUlM
VElOX1VDT01JR1RTUywKICBJWDg2X0JVSUxUSU5fVUNPTUlHRVNTLAogIElYODZfQlVJTFRJTl9V
Q09NSU5FUVNTLAoKICBJWDg2X0JVSUxUSU5fQ1ZUUEkyUFMsCiAgSVg4Nl9CVUlMVElOX0NWVFBT
MlBJLAogIElYODZfQlVJTFRJTl9DVlRTSTJTUywKICBJWDg2X0JVSUxUSU5fQ1ZUU1MyU0ksCiAg
SVg4Nl9CVUlMVElOX0NWVFRQUzJQSSwKICBJWDg2X0JVSUxUSU5fQ1ZUVFNTMlNJLAogIElYODZf
QlVJTFRJTl9NX0ZST01fSU5ULAogIElYODZfQlVJTFRJTl9NX1RPX0lOVCwKCiAgSVg4Nl9CVUlM
VElOX01BWFBTLAogIElYODZfQlVJTFRJTl9NQVhTUywKICBJWDg2X0JVSUxUSU5fTUlOUFMsCiAg
SVg4Nl9CVUlMVElOX01JTlNTLAoKICBJWDg2X0JVSUxUSU5fTE9BREFQUywKICBJWDg2X0JVSUxU
SU5fTE9BRFVQUywKICBJWDg2X0JVSUxUSU5fU1RPUkVBUFMsCiAgSVg4Nl9CVUlMVElOX1NUT1JF
VVBTLAogIElYODZfQlVJTFRJTl9MT0FEU1MsCiAgSVg4Nl9CVUlMVElOX1NUT1JFU1MsCiAgSVg4
Nl9CVUlMVElOX01PVlNTLAoKICBJWDg2X0JVSUxUSU5fTU9WSExQUywKICBJWDg2X0JVSUxUSU5f
TU9WTEhQUywKICBJWDg2X0JVSUxUSU5fTE9BREhQUywKICBJWDg2X0JVSUxUSU5fTE9BRExQUywK
ICBJWDg2X0JVSUxUSU5fU1RPUkVIUFMsCiAgSVg4Nl9CVUlMVElOX1NUT1JFTFBTLAoKICBJWDg2
X0JVSUxUSU5fTUFTS01PVlEsCiAgSVg4Nl9CVUlMVElOX01PVk1TS1BTLAogIElYODZfQlVJTFRJ
Tl9QTU9WTVNLQiwKCiAgSVg4Nl9CVUlMVElOX01PVk5UUFMsCiAgSVg4Nl9CVUlMVElOX01PVk5U
USwKCiAgSVg4Nl9CVUlMVElOX1BBQ0tTU1dCLAogIElYODZfQlVJTFRJTl9QQUNLU1NEVywKICBJ
WDg2X0JVSUxUSU5fUEFDS1VTV0IsCgogIElYODZfQlVJTFRJTl9QQUREQiwKICBJWDg2X0JVSUxU
SU5fUEFERFcsCiAgSVg4Nl9CVUlMVElOX1BBRERELAogIElYODZfQlVJTFRJTl9QQUREU0IsCiAg
SVg4Nl9CVUlMVElOX1BBRERTVywKICBJWDg2X0JVSUxUSU5fUEFERFVTQiwKICBJWDg2X0JVSUxU
SU5fUEFERFVTVywKICBJWDg2X0JVSUxUSU5fUFNVQkIsCiAgSVg4Nl9CVUlMVElOX1BTVUJXLAog
IElYODZfQlVJTFRJTl9QU1VCRCwKICBJWDg2X0JVSUxUSU5fUFNVQlNCLAogIElYODZfQlVJTFRJ
Tl9QU1VCU1csCiAgSVg4Nl9CVUlMVElOX1BTVUJVU0IsCiAgSVg4Nl9CVUlMVElOX1BTVUJVU1cs
CgogIElYODZfQlVJTFRJTl9QQU5ELAogIElYODZfQlVJTFRJTl9QQU5ETiwKICBJWDg2X0JVSUxU
SU5fUE9SLAogIElYODZfQlVJTFRJTl9QWE9SLAoKICBJWDg2X0JVSUxUSU5fUEFWR0IsCiAgSVg4
Nl9CVUlMVElOX1BBVkdXLAoKICBJWDg2X0JVSUxUSU5fUENNUEVRQiwKICBJWDg2X0JVSUxUSU5f
UENNUEVRVywKICBJWDg2X0JVSUxUSU5fUENNUEVRRCwKICBJWDg2X0JVSUxUSU5fUENNUEdUQiwK
ICBJWDg2X0JVSUxUSU5fUENNUEdUVywKICBJWDg2X0JVSUxUSU5fUENNUEdURCwKCiAgSVg4Nl9C
VUlMVElOX1BFWFRSVywKICBJWDg2X0JVSUxUSU5fUElOU1JXLAoKICBJWDg2X0JVSUxUSU5fUE1B
RERXRCwKCiAgSVg4Nl9CVUlMVElOX1BNQVhTVywKICBJWDg2X0JVSUxUSU5fUE1BWFVCLAogIElY
ODZfQlVJTFRJTl9QTUlOU1csCiAgSVg4Nl9CVUlMVElOX1BNSU5VQiwKCiAgSVg4Nl9CVUlMVElO
X1BNVUxIVVcsCiAgSVg4Nl9CVUlMVElOX1BNVUxIVywKICBJWDg2X0JVSUxUSU5fUE1VTExXLAoK
ICBJWDg2X0JVSUxUSU5fUFNBREJXLAogIElYODZfQlVJTFRJTl9QU0hVRlcsCgogIElYODZfQlVJ
TFRJTl9QU0xMVywKICBJWDg2X0JVSUxUSU5fUFNMTEQsCiAgSVg4Nl9CVUlMVElOX1BTTExRLAog
IElYODZfQlVJTFRJTl9QU1JBVywKICBJWDg2X0JVSUxUSU5fUFNSQUQsCiAgSVg4Nl9CVUlMVElO
X1BTUkxXLAogIElYODZfQlVJTFRJTl9QU1JMRCwKICBJWDg2X0JVSUxUSU5fUFNSTFEsCiAgSVg4
Nl9CVUlMVElOX1BTTExXSSwKICBJWDg2X0JVSUxUSU5fUFNMTERJLAogIElYODZfQlVJTFRJTl9Q
U0xMUUksCiAgSVg4Nl9CVUlMVElOX1BTUkFXSSwKICBJWDg2X0JVSUxUSU5fUFNSQURJLAogIElY
ODZfQlVJTFRJTl9QU1JMV0ksCiAgSVg4Nl9CVUlMVElOX1BTUkxESSwKICBJWDg2X0JVSUxUSU5f
UFNSTFFJLAoKICBJWDg2X0JVSUxUSU5fUFVOUENLSEJXLAogIElYODZfQlVJTFRJTl9QVU5QQ0tI
V0QsCiAgSVg4Nl9CVUlMVElOX1BVTlBDS0hEUSwKICBJWDg2X0JVSUxUSU5fUFVOUENLTEJXLAog
IElYODZfQlVJTFRJTl9QVU5QQ0tMV0QsCiAgSVg4Nl9CVUlMVElOX1BVTlBDS0xEUSwKCiAgSVg4
Nl9CVUlMVElOX1NIVUZQUywKCiAgSVg4Nl9CVUlMVElOX1JDUFBTLAogIElYODZfQlVJTFRJTl9S
Q1BTUywKICBJWDg2X0JVSUxUSU5fUlNRUlRQUywKICBJWDg2X0JVSUxUSU5fUlNRUlRTUywKICBJ
WDg2X0JVSUxUSU5fU1FSVFBTLAogIElYODZfQlVJTFRJTl9TUVJUU1MsCgogIElYODZfQlVJTFRJ
Tl9VTlBDS0hQUywKICBJWDg2X0JVSUxUSU5fVU5QQ0tMUFMsCgogIElYODZfQlVJTFRJTl9BTkRQ
UywKICBJWDg2X0JVSUxUSU5fQU5ETlBTLAogIElYODZfQlVJTFRJTl9PUlBTLAogIElYODZfQlVJ
TFRJTl9YT1JQUywKCiAgSVg4Nl9CVUlMVElOX0VNTVMsCiAgSVg4Nl9CVUlMVElOX0xETVhDU1Is
CiAgSVg4Nl9CVUlMVElOX1NUTVhDU1IsCiAgSVg4Nl9CVUlMVElOX1NGRU5DRSwKICBJWDg2X0JV
SUxUSU5fUFJFRkVUQ0gsCgoKICBJWDg2X0JVSUxUSU5fU0VUUFMxLAogIElYODZfQlVJTFRJTl9T
RVRQUywKICBJWDg2X0JVSUxUSU5fQ0xSUFMsCiAgSVg4Nl9CVUlMVElOX1NFVFJQUywKICBJWDg2
X0JVSUxUSU5fTE9BRFBTMSwKICBJWDg2X0JVSUxUSU5fTE9BRFJQUywKICBJWDg2X0JVSUxUSU5f
U1RPUkVQUzEsCiAgSVg4Nl9CVUlMVElOX1NUT1JFUlBTLAoKICBJWDg2X0JVSUxUSU5fTU1YX1pF
Uk8sCgogIElYODZfQlVJTFRJTl9NQVgKfTsKIyAyNjIxICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0z
LjAvZ2NjL2NvbmZpZy9pMzg2L2kzODYuaCIKZXh0ZXJuIGludCBjb25zdCBkYnhfcmVnaXN0ZXJf
bWFwWzM3XTsKZXh0ZXJuIGludCBjb25zdCBzdnI0X2RieF9yZWdpc3Rlcl9tYXBbMzddOwojIDI4
OTcgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvY29uZmlnL2kzODYvaTM4Ni5oIgpleHRl
cm4gY29uc3QgY2hhciAqaXg4Nl9jcHVfc3RyaW5nOwpleHRlcm4gY29uc3QgY2hhciAqaXg4Nl9h
cmNoX3N0cmluZzsKZXh0ZXJuIGNvbnN0IGNoYXIgKml4ODZfcmVnX2FsbG9jX29yZGVyOwpleHRl
cm4gY29uc3QgY2hhciAqaXg4Nl9yZWdwYXJtX3N0cmluZzsKZXh0ZXJuIGNvbnN0IGNoYXIgKml4
ODZfYWxpZ25fbG9vcHNfc3RyaW5nOwpleHRlcm4gY29uc3QgY2hhciAqaXg4Nl9hbGlnbl9qdW1w
c19zdHJpbmc7CmV4dGVybiBjb25zdCBjaGFyICppeDg2X2FsaWduX2Z1bmNzX3N0cmluZzsKZXh0
ZXJuIGNvbnN0IGNoYXIgKml4ODZfcHJlZmVycmVkX3N0YWNrX2JvdW5kYXJ5X3N0cmluZzsKZXh0
ZXJuIGNvbnN0IGNoYXIgKml4ODZfYnJhbmNoX2Nvc3Rfc3RyaW5nOwpleHRlcm4gaW50IGl4ODZf
cmVncGFybTsKZXh0ZXJuIGludCBpeDg2X2FsaWduX2xvb3BzOwpleHRlcm4gaW50IGl4ODZfYWxp
Z25fanVtcHM7CmV4dGVybiBpbnQgaXg4Nl9hbGlnbl9mdW5jczsKZXh0ZXJuIGludCBpeDg2X3By
ZWZlcnJlZF9zdGFja19ib3VuZGFyeTsKZXh0ZXJuIGludCBpeDg2X2JyYW5jaF9jb3N0OwpleHRl
cm4gY29uc3QgY2hhciAqIGNvbnN0IGhpX3JlZ19uYW1lW107CmV4dGVybiBjb25zdCBjaGFyICog
Y29uc3QgcWlfcmVnX25hbWVbXTsKZXh0ZXJuIGNvbnN0IGNoYXIgKiBjb25zdCBxaV9oaWdoX3Jl
Z19uYW1lW107CmV4dGVybiBlbnVtIHJlZ19jbGFzcyBjb25zdCByZWdjbGFzc19tYXBbXTsKZXh0
ZXJuIHN0cnVjdCBydHhfZGVmICppeDg2X2NvbXBhcmVfb3AwOwpleHRlcm4gc3RydWN0IHJ0eF9k
ZWYgKml4ODZfY29tcGFyZV9vcDE7CiMgOCAidG0uaCIgMgoKCiMgMSAiL3Vzci9zcmMvZ2NjL2dj
Yy1jdnMtMy4wL2djYy9jb25maWcvaTM4Ni9hdHQuaCIgMQojIDIyICIvdXNyL3NyYy9nY2MvZ2Nj
LWN2cy0zLjAvZ2NjL2NvbmZpZy9pMzg2L2F0dC5oIgojIDEgIi91c3Ivc3JjL2djYy9nY2MtY3Zz
LTMuMC9nY2MvY29uZmlnL2kzODYvdW5peC5oIiAxCiMgMjMgIi91c3Ivc3JjL2djYy9nY2MtY3Zz
LTMuMC9nY2MvY29uZmlnL2kzODYvYXR0LmgiIDIKIyAxMSAidG0uaCIgMgoKCiMgMSAiL3Vzci9z
cmMvZ2NjL2djYy1jdnMtMy4wL2djYy9jb25maWcvbGludXguaCIgMQojIDQ1ICIvdXNyL3NyYy9n
Y2MvZ2NjLWN2cy0zLjAvZ2NjL2NvbmZpZy9saW51eC5oIgojIDEgIi91c3Ivc3JjL2djYy9nY2Mt
Y3ZzLTMuMC9nY2MvY29uZmlnL3N2cjQuaCIgMQojIDQ2ICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0z
LjAvZ2NjL2NvbmZpZy9zdnI0LmgiCiMgMSAiL3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4wL2djYy9j
b25maWcvZWxmb3MuaCIgMQojIDc5ICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAvZ2NjL2NvbmZp
Zy9lbGZvcy5oIgojIDEgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvY29uZmlnL2RieGVs
Zi5oIiAxCiMgODAgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvY29uZmlnL2VsZm9zLmgi
IDIKIyA0NyAiL3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4wL2djYy9jb25maWcvc3ZyNC5oIiAyCiMg
NDYgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvY29uZmlnL2xpbnV4LmgiIDIKIyAxNCAi
dG0uaCIgMgoKCiMgMSAiL3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4wL2djYy9jb25maWcvaTM4Ni9p
Mzg2YWZlLmgiIDEKIyAxNyAidG0uaCIgMgoKCiMgMSAiL3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4w
L2djYy9jb25maWcvaTM4Ni9saW51eC5oIiAxCiMgMTQ3ICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0z
LjAvZ2NjL2NvbmZpZy9pMzg2L2xpbnV4LmgiCiMgMSAiL3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4w
L2djYy9jb25maWcvaTM4Ni9wZXJmb3JtLmgiIDEKIyAxNDggIi91c3Ivc3JjL2djYy9nY2MtY3Zz
LTMuMC9nY2MvY29uZmlnL2kzODYvbGludXguaCIgMgojIDIwICJ0bS5oIiAyCgoKIyAxICIvdXNy
L3NyYy9nY2MvZ2NjLWN2cy0zLjAvZ2NjL2RlZmF1bHRzLmgiIDEKIyAyMyAidG0uaCIgMgoKCiMg
MSAiaW5zbi1jb2Rlcy5oIiAxCgoKCgoKZW51bSBpbnNuX2NvZGUgewogIENPREVfRk9SX2NtcHFp
X2V4dF8zX2luc24gPSAxMSwKICBDT0RFX0ZPUl94ODZfZm5zdHN3XzEgPSAyNSwKICBDT0RFX0ZP
Ul94ODZfc2FoZl8xID0gMjYsCiAgQ09ERV9GT1JfcG9wc2kxID0gMzIsCiAgQ09ERV9GT1Jfc3dh
cHhmID0gNzUsCiAgQ09ERV9GT1Jfc3dhcHRmID0gNzYsCiAgQ09ERV9GT1JfemVyb19leHRlbmRo
aXNpMl9hbmQgPSA3NywKICBDT0RFX0ZPUl96ZXJvX2V4dGVuZHNpZGkyID0gODUsCiAgQ09ERV9G
T1JfZXh0ZW5kc2lkaTIgPSA4NiwKICBDT0RFX0ZPUl9leHRlbmRoaXNpMiA9IDg3LAogIENPREVf
Rk9SX2V4dGVuZHFpaGkyID0gODgsCiAgQ09ERV9GT1JfZXh0ZW5kcWlzaTIgPSA4OSwKICBDT0RF
X0ZPUl94ODZfZm5zdGN3XzEgPSAxMTMsCiAgQ09ERV9GT1JfeDg2X2ZsZGN3XzEgPSAxMTQsCiAg
Q09ERV9GT1JfZmxvYXRoaXNmMiA9IDExNSwKICBDT0RFX0ZPUl9mbG9hdHNpc2YyID0gMTE2LAog
IENPREVfRk9SX2Zsb2F0ZGlzZjIgPSAxMTcsCiAgQ09ERV9GT1JfZmxvYXRoaWRmMiA9IDExOCwK
ICBDT0RFX0ZPUl9mbG9hdHNpZGYyID0gMTE5LAogIENPREVfRk9SX2Zsb2F0ZGlkZjIgPSAxMjAs
CiAgQ09ERV9GT1JfZmxvYXRoaXhmMiA9IDEyMSwKICBDT0RFX0ZPUl9mbG9hdGhpdGYyID0gMTIy
LAogIENPREVfRk9SX2Zsb2F0c2l4ZjIgPSAxMjMsCiAgQ09ERV9GT1JfZmxvYXRzaXRmMiA9IDEy
NCwKICBDT0RFX0ZPUl9mbG9hdGRpeGYyID0gMTI1LAogIENPREVfRk9SX2Zsb2F0ZGl0ZjIgPSAx
MjYsCiAgQ09ERV9GT1JfYWRkZGkzID0gMTI3LAogIENPREVfRk9SX2FkZHFpM19jYyA9IDEzMCwK
ICBDT0RFX0ZPUl9hZGRxaV9leHRfMSA9IDE1MiwKICBDT0RFX0ZPUl9zdWJkaTMgPSAxNTQsCiAg
Q09ERV9GT1Jfc3Vic2kzX2NhcnJ5ID0gMTU1LAogIENPREVfRk9SX211bHFpMyA9IDE2NywKICBD
T0RFX0ZPUl91bXVscWloaTMgPSAxNjgsCiAgQ09ERV9GT1JfbXVscWloaTMgPSAxNjksCiAgQ09E
RV9GT1JfdW11bHNpZGkzID0gMTcwLAogIENPREVfRk9SX211bHNpZGkzID0gMTcxLAogIENPREVf
Rk9SX3VtdWxzaTNfaGlnaHBhcnQgPSAxNzIsCiAgQ09ERV9GT1Jfc211bHNpM19oaWdocGFydCA9
IDE3MywKICBDT0RFX0ZPUl9kaXZxaTMgPSAxNzQsCiAgQ09ERV9GT1JfdWRpdnFpMyA9IDE3NSwK
ICBDT0RFX0ZPUl9kaXZtb2RoaTQgPSAxNzksCiAgQ09ERV9GT1JfdWRpdm1vZHNpNCA9IDE4MCwK
ICBDT0RFX0ZPUl90ZXN0c2lfMSA9IDE4MywKICBDT0RFX0ZPUl9hbmRxaV9leHRfMCA9IDE5OCwK
ICBDT0RFX0ZPUl9hc2hsZGkzXzEgPSAyNjMsCiAgQ09ERV9GT1JfeDg2X3NobGRfMSA9IDI2NSwK
ICBDT0RFX0ZPUl9hc2hyZGkzXzEgPSAyNzQsCiAgQ09ERV9GT1JfeDg2X3NocmRfMSA9IDI3NiwK
ICBDT0RFX0ZPUl9hc2hyc2kzXzMxID0gMjc3LAogIENPREVfRk9SX2xzaHJkaTNfMSA9IDI5MCwK
ICBDT0RFX0ZPUl9zZXRjY18yID0gMzE3LAogIENPREVfRk9SX2p1bXAgPSAzMjYsCiAgQ09ERV9G
T1JfaW5kaXJlY3RfanVtcCA9IDMyNywKICBDT0RFX0ZPUl90YWJsZWp1bXAgPSAzMjgsCiAgQ09E
RV9GT1JfZG9sb29wX2VuZF9pbnRlcm5hbCA9IDMzMCwKICBDT0RFX0ZPUl9ibG9ja2FnZSA9IDMz
NSwKICBDT0RFX0ZPUl9yZXR1cm5faW50ZXJuYWwgPSAzMzYsCiAgQ09ERV9GT1JfcmV0dXJuX3Bv
cF9pbnRlcm5hbCA9IDMzNywKICBDT0RFX0ZPUl9yZXR1cm5faW5kaXJlY3RfaW50ZXJuYWwgPSAz
MzgsCiAgQ09ERV9GT1Jfbm9wID0gMzM5LAogIENPREVfRk9SX3Byb2xvZ3VlX3NldF9nb3QgPSAz
NDAsCiAgQ09ERV9GT1JfcHJvbG9ndWVfZ2V0X3BjID0gMzQxLAogIENPREVfRk9SX2xlYXZlID0g
MzQyLAogIENPREVfRk9SX2Zmc3NpXzEgPSAzNDMsCiAgQ09ERV9GT1Jfc3FydHNmMiA9IDM3MCwK
ICBDT0RFX0ZPUl9zcXJ0ZGYyID0gMzcxLAogIENPREVfRk9SX3NxcnR4ZjIgPSAzNzMsCiAgQ09E
RV9GT1Jfc3FydHRmMiA9IDM3NCwKICBDT0RFX0ZPUl9zaW5kZjIgPSAzNzksCiAgQ09ERV9GT1Jf
c2luc2YyID0gMzgwLAogIENPREVfRk9SX3NpbnhmMiA9IDM4MiwKICBDT0RFX0ZPUl9zaW50ZjIg
PSAzODMsCiAgQ09ERV9GT1JfY29zZGYyID0gMzg0LAogIENPREVfRk9SX2Nvc3NmMiA9IDM4NSwK
ICBDT0RFX0ZPUl9jb3N4ZjIgPSAzODcsCiAgQ09ERV9GT1JfY29zdGYyID0gMzg4LAogIENPREVf
Rk9SX2NsZCA9IDM4OSwKICBDT0RFX0ZPUl9zdHJtb3ZzaV8xID0gMzkwLAogIENPREVfRk9SX3N0
cm1vdmhpXzEgPSAzOTEsCiAgQ09ERV9GT1Jfc3RybW92cWlfMSA9IDM5MiwKICBDT0RFX0ZPUl9y
ZXBfbW92c2kgPSAzOTMsCiAgQ09ERV9GT1JfcmVwX21vdnFpID0gMzk0LAogIENPREVfRk9SX3N0
cnNldHNpXzEgPSAzOTUsCiAgQ09ERV9GT1Jfc3Ryc2V0aGlfMSA9IDM5NiwKICBDT0RFX0ZPUl9z
dHJzZXRxaV8xID0gMzk3LAogIENPREVfRk9SX3JlcF9zdG9zc2kgPSAzOTgsCiAgQ09ERV9GT1Jf
cmVwX3N0b3NxaSA9IDM5OSwKICBDT0RFX0ZPUl9jbXBzdHJzaV9uel8xID0gNDAwLAogIENPREVf
Rk9SX2NtcHN0cnNpXzEgPSA0MDEsCiAgQ09ERV9GT1Jfc3RybGVuc2lfMSA9IDQwMiwKICBDT0RF
X0ZPUl94ODZfbW92c2ljY18wX20xID0gNDAzLAogIENPREVfRk9SX3Byb19lcGlsb2d1ZV9hZGp1
c3Rfc3RhY2sgPSA0MTAsCiAgQ09ERV9GT1JfYWxsb2NhdGVfc3RhY2tfd29ya2VyID0gNDExLAog
IENPREVfRk9SX3RyYXAgPSA0MTYsCiAgQ09ERV9GT1JfbW92djRzZl9pbnRlcm5hbCA9IDQxOCwK
ICBDT0RFX0ZPUl9tb3Z2NHNpX2ludGVybmFsID0gNDE5LAogIENPREVfRk9SX21vdnY4cWlfaW50
ZXJuYWwgPSA0MjAsCiAgQ09ERV9GT1JfbW92djRoaV9pbnRlcm5hbCA9IDQyMSwKICBDT0RFX0ZP
Ul9tb3Z2MnNpX2ludGVybmFsID0gNDIyLAogIENPREVfRk9SX21vdnRpX2ludGVybmFsID0gNDI5
LAogIENPREVfRk9SX3NzZV9tb3ZhcHMgPSA0MzAsCiAgQ09ERV9GT1Jfc3NlX21vdnVwcyA9IDQz
MSwKICBDT0RFX0ZPUl9zc2VfbW92bXNrcHMgPSA0MzIsCiAgQ09ERV9GT1JfbW14X3Btb3Ztc2ti
ID0gNDMzLAogIENPREVfRk9SX21teF9tYXNrbW92cSA9IDQzNCwKICBDT0RFX0ZPUl9zc2VfbW92
bnR2NHNmID0gNDM1LAogIENPREVfRk9SX3NzZV9tb3ZudGRpID0gNDM2LAogIENPREVfRk9SX3Nz
ZV9tb3ZobHBzID0gNDM3LAogIENPREVfRk9SX3NzZV9tb3ZsaHBzID0gNDM4LAogIENPREVfRk9S
X3NzZV9tb3ZocHMgPSA0MzksCiAgQ09ERV9GT1Jfc3NlX21vdmxwcyA9IDQ0MCwKICBDT0RFX0ZP
Ul9zc2VfbG9hZHNzID0gNDQxLAogIENPREVfRk9SX3NzZV9tb3ZzcyA9IDQ0MiwKICBDT0RFX0ZP
Ul9zc2Vfc3RvcmVzcyA9IDQ0MywKICBDT0RFX0ZPUl9zc2Vfc2h1ZnBzID0gNDQ0LAogIENPREVf
Rk9SX2FkZHY0c2YzID0gNDQ1LAogIENPREVfRk9SX3ZtYWRkdjRzZjMgPSA0NDYsCiAgQ09ERV9G
T1Jfc3VidjRzZjMgPSA0NDcsCiAgQ09ERV9GT1Jfdm1zdWJ2NHNmMyA9IDQ0OCwKICBDT0RFX0ZP
Ul9tdWx2NHNmMyA9IDQ0OSwKICBDT0RFX0ZPUl92bW11bHY0c2YzID0gNDUwLAogIENPREVfRk9S
X2RpdnY0c2YzID0gNDUxLAogIENPREVfRk9SX3ZtZGl2djRzZjMgPSA0NTIsCiAgQ09ERV9GT1Jf
cmNwdjRzZjIgPSA0NTMsCiAgQ09ERV9GT1Jfdm1yY3B2NHNmMiA9IDQ1NCwKICBDT0RFX0ZPUl9y
c3FydHY0c2YyID0gNDU1LAogIENPREVfRk9SX3ZtcnNxcnR2NHNmMiA9IDQ1NiwKICBDT0RFX0ZP
Ul9zcXJ0djRzZjIgPSA0NTcsCiAgQ09ERV9GT1Jfdm1zcXJ0djRzZjIgPSA0NTgsCiAgQ09ERV9G
T1Jfc3NlX2FuZHRpMyA9IDQ1OSwKICBDT0RFX0ZPUl9zc2VfbmFuZHRpMyA9IDQ2MCwKICBDT0RF
X0ZPUl9zc2VfaW9ydGkzID0gNDYxLAogIENPREVfRk9SX3NzZV94b3J0aTMgPSA0NjIsCiAgQ09E
RV9GT1Jfc3NlX2NscnRpID0gNDYzLAogIENPREVfRk9SX21hc2tjbXB2NHNmMyA9IDQ2NCwKICBD
T0RFX0ZPUl9tYXNrbmNtcHY0c2YzID0gNDY1LAogIENPREVfRk9SX3ZtbWFza2NtcHY0c2YzID0g
NDY2LAogIENPREVfRk9SX3ZtbWFza25jbXB2NHNmMyA9IDQ2NywKICBDT0RFX0ZPUl9zc2VfY29t
aSA9IDQ2OCwKICBDT0RFX0ZPUl9zc2VfdWNvbWkgPSA0NjksCiAgQ09ERV9GT1Jfc3NlX3VucGNr
aHBzID0gNDcwLAogIENPREVfRk9SX3NzZV91bnBja2xwcyA9IDQ3MSwKICBDT0RFX0ZPUl9zbWF4
djRzZjMgPSA0NzIsCiAgQ09ERV9GT1Jfdm1zbWF4djRzZjMgPSA0NzMsCiAgQ09ERV9GT1Jfc21p
bnY0c2YzID0gNDc0LAogIENPREVfRk9SX3Ztc21pbnY0c2YzID0gNDc1LAogIENPREVfRk9SX2N2
dHBpMnBzID0gNDc2LAogIENPREVfRk9SX2N2dHBzMnBpID0gNDc3LAogIENPREVfRk9SX2N2dHRw
czJwaSA9IDQ3OCwKICBDT0RFX0ZPUl9jdnRzaTJzcyA9IDQ3OSwKICBDT0RFX0ZPUl9jdnRzczJz
aSA9IDQ4MCwKICBDT0RFX0ZPUl9jdnR0c3Myc2kgPSA0ODEsCiAgQ09ERV9GT1JfYWRkdjhxaTMg
PSA0ODIsCiAgQ09ERV9GT1JfYWRkdjRoaTMgPSA0ODMsCiAgQ09ERV9GT1JfYWRkdjJzaTMgPSA0
ODQsCiAgQ09ERV9GT1Jfc3NhZGR2OHFpMyA9IDQ4NSwKICBDT0RFX0ZPUl9zc2FkZHY0aGkzID0g
NDg2LAogIENPREVfRk9SX3VzYWRkdjhxaTMgPSA0ODcsCiAgQ09ERV9GT1JfdXNhZGR2NGhpMyA9
IDQ4OCwKICBDT0RFX0ZPUl9zdWJ2OHFpMyA9IDQ4OSwKICBDT0RFX0ZPUl9zdWJ2NGhpMyA9IDQ5
MCwKICBDT0RFX0ZPUl9zdWJ2MnNpMyA9IDQ5MSwKICBDT0RFX0ZPUl9zc3N1YnY4cWkzID0gNDky
LAogIENPREVfRk9SX3Nzc3VidjRoaTMgPSA0OTMsCiAgQ09ERV9GT1JfdXNzdWJ2OHFpMyA9IDQ5
NCwKICBDT0RFX0ZPUl91c3N1YnY0aGkzID0gNDk1LAogIENPREVfRk9SX211bHY0aGkzID0gNDk2
LAogIENPREVfRk9SX3NtdWx2NGhpM19oaWdocGFydCA9IDQ5NywKICBDT0RFX0ZPUl91bXVsdjRo
aTNfaGlnaHBhcnQgPSA0OTgsCiAgQ09ERV9GT1JfbW14X3BtYWRkd2QgPSA0OTksCiAgQ09ERV9G
T1JfbW14X2lvcmRpMyA9IDUwMCwKICBDT0RFX0ZPUl9tbXhfeG9yZGkzID0gNTAxLAogIENPREVf
Rk9SX21teF9jbHJkaSA9IDUwMiwKICBDT0RFX0ZPUl9tbXhfYW5kZGkzID0gNTAzLAogIENPREVf
Rk9SX21teF9uYW5kZGkzID0gNTA0LAogIENPREVfRk9SX21teF91YXZndjhxaTMgPSA1MDUsCiAg
Q09ERV9GT1JfbW14X3Vhdmd2NGhpMyA9IDUwNiwKICBDT0RFX0ZPUl9tbXhfcHNhZGJ3ID0gNTA3
LAogIENPREVfRk9SX21teF9waW5zcncgPSA1MDgsCiAgQ09ERV9GT1JfbW14X3BleHRydyA9IDUw
OSwKICBDT0RFX0ZPUl9tbXhfcHNodWZ3ID0gNTEwLAogIENPREVfRk9SX2VxdjhxaTMgPSA1MTEs
CiAgQ09ERV9GT1JfZXF2NGhpMyA9IDUxMiwKICBDT0RFX0ZPUl9lcXYyc2kzID0gNTEzLAogIENP
REVfRk9SX2d0djhxaTMgPSA1MTQsCiAgQ09ERV9GT1JfZ3R2NGhpMyA9IDUxNSwKICBDT0RFX0ZP
Ul9ndHYyc2kzID0gNTE2LAogIENPREVfRk9SX3VtYXh2OHFpMyA9IDUxNywKICBDT0RFX0ZPUl9z
bWF4djRoaTMgPSA1MTgsCiAgQ09ERV9GT1JfdW1pbnY4cWkzID0gNTE5LAogIENPREVfRk9SX3Nt
aW52NGhpMyA9IDUyMCwKICBDT0RFX0ZPUl9hc2hydjRoaTMgPSA1MjEsCiAgQ09ERV9GT1JfYXNo
cnYyc2kzID0gNTIyLAogIENPREVfRk9SX2xzaHJ2NGhpMyA9IDUyMywKICBDT0RFX0ZPUl9sc2hy
djJzaTMgPSA1MjQsCiAgQ09ERV9GT1JfbW14X2xzaHJkaTMgPSA1MjUsCiAgQ09ERV9GT1JfYXNo
bHY0aGkzID0gNTI2LAogIENPREVfRk9SX2FzaGx2MnNpMyA9IDUyNywKICBDT0RFX0ZPUl9tbXhf
YXNobGRpMyA9IDUyOCwKICBDT0RFX0ZPUl9tbXhfcGFja3Nzd2IgPSA1MjksCiAgQ09ERV9GT1Jf
bW14X3BhY2tzc2R3ID0gNTMwLAogIENPREVfRk9SX21teF9wYWNrdXN3YiA9IDUzMSwKICBDT0RF
X0ZPUl9tbXhfcHVucGNraGJ3ID0gNTMyLAogIENPREVfRk9SX21teF9wdW5wY2tod2QgPSA1MzMs
CiAgQ09ERV9GT1JfbW14X3B1bnBja2hkcSA9IDUzNCwKICBDT0RFX0ZPUl9tbXhfcHVucGNrbGJ3
ID0gNTM1LAogIENPREVfRk9SX21teF9wdW5wY2tsd2QgPSA1MzYsCiAgQ09ERV9GT1JfbW14X3B1
bnBja2xkcSA9IDUzNywKICBDT0RFX0ZPUl9lbW1zID0gNTM4LAogIENPREVfRk9SX2xkbXhjc3Ig
PSA1MzksCiAgQ09ERV9GT1Jfc3RteGNzciA9IDU0MCwKICBDT0RFX0ZPUl9wcmVmZXRjaCA9IDU0
MiwKICBDT0RFX0ZPUl9jbXBkaSA9IDU0MywKICBDT0RFX0ZPUl9jbXBzaSA9IDU0NCwKICBDT0RF
X0ZPUl9jbXBoaSA9IDU0NSwKICBDT0RFX0ZPUl9jbXBxaSA9IDU0NiwKICBDT0RFX0ZPUl9jbXBz
aV8xID0gNTQ3LAogIENPREVfRk9SX2NtcHFpX2V4dF8zID0gNTQ4LAogIENPREVfRk9SX2NtcHhm
ID0gNTQ5LAogIENPREVfRk9SX2NtcHRmID0gNTUwLAogIENPREVfRk9SX2NtcGRmID0gNTUxLAog
IENPREVfRk9SX2NtcHNmID0gNTUyLAogIENPREVfRk9SX21vdnNpID0gNTU0LAogIENPREVfRk9S
X21vdmhpID0gNTU1LAogIENPREVfRk9SX21vdnN0cmljdGhpID0gNTU2LAogIENPREVfRk9SX21v
dnFpID0gNTU3LAogIENPREVfRk9SX3JlbG9hZF9vdXRxaSA9IDU1OCwKICBDT0RFX0ZPUl9tb3Zz
dHJpY3RxaSA9IDU1OSwKICBDT0RFX0ZPUl9tb3ZkaSA9IDU2MCwKICBDT0RFX0ZPUl9tb3ZzZiA9
IDU2MywKICBDT0RFX0ZPUl9tb3ZkZiA9IDU2NywKICBDT0RFX0ZPUl9tb3Z4ZiA9IDU3MiwKICBD
T0RFX0ZPUl9tb3Z0ZiA9IDU3MywKICBDT0RFX0ZPUl96ZXJvX2V4dGVuZGhpc2kyID0gNTc5LAog
IENPREVfRk9SX3plcm9fZXh0ZW5kcWloaTIgPSA1ODEsCiAgQ09ERV9GT1JfemVyb19leHRlbmRx
aXNpMiA9IDU4NSwKICBDT0RFX0ZPUl9leHRlbmRzZmRmMiA9IDU5OSwKICBDT0RFX0ZPUl9leHRl
bmRzZnhmMiA9IDYwMCwKICBDT0RFX0ZPUl9leHRlbmRzZnRmMiA9IDYwMSwKICBDT0RFX0ZPUl9l
eHRlbmRkZnhmMiA9IDYwMiwKICBDT0RFX0ZPUl9leHRlbmRkZnRmMiA9IDYwMywKICBDT0RFX0ZP
Ul90cnVuY2Rmc2YyID0gNjA0LAogIENPREVfRk9SX3RydW5jeGZzZjIgPSA2MDcsCiAgQ09ERV9G
T1JfdHJ1bmN0ZnNmMiA9IDYxMCwKICBDT0RFX0ZPUl90cnVuY3hmZGYyID0gNjEzLAogIENPREVf
Rk9SX3RydW5jdGZkZjIgPSA2MTYsCiAgQ09ERV9GT1JfZml4X3RydW5jeGZkaTIgPSA2MTksCiAg
Q09ERV9GT1JfZml4X3RydW5jdGZkaTIgPSA2MjAsCiAgQ09ERV9GT1JfZml4X3RydW5jZGZkaTIg
PSA2MjEsCiAgQ09ERV9GT1JfZml4X3RydW5jc2ZkaTIgPSA2MjIsCiAgQ09ERV9GT1JfZml4X3Ry
dW5jeGZzaTIgPSA2MjQsCiAgQ09ERV9GT1JfZml4X3RydW5jdGZzaTIgPSA2MjUsCiAgQ09ERV9G
T1JfZml4X3RydW5jZGZzaTIgPSA2MjYsCiAgQ09ERV9GT1JfZml4X3RydW5jc2ZzaTIgPSA2Mjcs
CiAgQ09ERV9GT1JfZml4X3RydW5jeGZoaTIgPSA2MjksCiAgQ09ERV9GT1JfZml4X3RydW5jdGZo
aTIgPSA2MzAsCiAgQ09ERV9GT1JfZml4X3RydW5jZGZoaTIgPSA2MzEsCiAgQ09ERV9GT1JfZml4
X3RydW5jc2ZoaTIgPSA2MzIsCiAgQ09ERV9GT1JfYWRkc2kzID0gNjM2LAogIENPREVfRk9SX2Fk
ZGhpMyA9IDY0MSwKICBDT0RFX0ZPUl9hZGRxaTMgPSA2NDIsCiAgQ09ERV9GT1JfYWRkeGYzID0g
NjQzLAogIENPREVfRk9SX2FkZHRmMyA9IDY0NCwKICBDT0RFX0ZPUl9hZGRkZjMgPSA2NDUsCiAg
Q09ERV9GT1JfYWRkc2YzID0gNjQ2LAogIENPREVfRk9SX3N1YnNpMyA9IDY0OCwKICBDT0RFX0ZP
Ul9zdWJoaTMgPSA2NDksCiAgQ09ERV9GT1Jfc3VicWkzID0gNjUwLAogIENPREVfRk9SX3N1Ynhm
MyA9IDY1MSwKICBDT0RFX0ZPUl9zdWJ0ZjMgPSA2NTIsCiAgQ09ERV9GT1Jfc3ViZGYzID0gNjUz
LAogIENPREVfRk9SX3N1YnNmMyA9IDY1NCwKICBDT0RFX0ZPUl9tdWxzaTMgPSA2NTUsCiAgQ09E
RV9GT1JfbXVsaGkzID0gNjU2LAogIENPREVfRk9SX211bHhmMyA9IDY1NywKICBDT0RFX0ZPUl9t
dWx0ZjMgPSA2NTgsCiAgQ09ERV9GT1JfbXVsZGYzID0gNjU5LAogIENPREVfRk9SX211bHNmMyA9
IDY2MCwKICBDT0RFX0ZPUl9kaXZ4ZjMgPSA2NjEsCiAgQ09ERV9GT1JfZGl2dGYzID0gNjYyLAog
IENPREVfRk9SX2RpdmRmMyA9IDY2MywKICBDT0RFX0ZPUl9kaXZzZjMgPSA2NjQsCiAgQ09ERV9G
T1JfZGl2bW9kc2k0ID0gNjY1LAogIENPREVfRk9SX3VkaXZtb2RoaTQgPSA2NjgsCiAgQ09ERV9G
T1JfdGVzdHNpX2Njbm9fMSA9IDY2OSwKICBDT0RFX0ZPUl90ZXN0cWlfY2N6XzEgPSA2NzAsCiAg
Q09ERV9GT1JfdGVzdHFpX2V4dF9jY25vXzAgPSA2NzEsCiAgQ09ERV9GT1JfYW5kc2kzID0gNjcz
LAogIENPREVfRk9SX2FuZGhpMyA9IDY3NywKICBDT0RFX0ZPUl9hbmRxaTMgPSA2NzgsCiAgQ09E
RV9GT1JfaW9yc2kzID0gNjc5LAogIENPREVfRk9SX2lvcmhpMyA9IDY4MCwKICBDT0RFX0ZPUl9p
b3JxaTMgPSA2ODEsCiAgQ09ERV9GT1JfeG9yc2kzID0gNjgyLAogIENPREVfRk9SX3hvcmhpMyA9
IDY4MywKICBDT0RFX0ZPUl94b3JxaTMgPSA2ODQsCiAgQ09ERV9GT1JfeG9ycWlfY2NfZXh0XzEg
PSA2ODUsCiAgQ09ERV9GT1JfbmVnZGkyID0gNjg2LAogIENPREVfRk9SX25lZ3NpMiA9IDY4OCwK
ICBDT0RFX0ZPUl9uZWdoaTIgPSA2ODksCiAgQ09ERV9GT1JfbmVncWkyID0gNjkwLAogIENPREVf
Rk9SX25lZ3NmMiA9IDY5MSwKICBDT0RFX0ZPUl9uZWdkZjIgPSA2OTUsCiAgQ09ERV9GT1JfbmVn
eGYyID0gNjk4LAogIENPREVfRk9SX25lZ3RmMiA9IDY5OSwKICBDT0RFX0ZPUl9hYnNzZjIgPSA3
MDQsCiAgQ09ERV9GT1JfYWJzZGYyID0gNzA4LAogIENPREVfRk9SX2Fic3hmMiA9IDcxMSwKICBD
T0RFX0ZPUl9hYnN0ZjIgPSA3MTIsCiAgQ09ERV9GT1Jfb25lX2NtcGxzaTIgPSA3MTcsCiAgQ09E
RV9GT1Jfb25lX2NtcGxoaTIgPSA3MTksCiAgQ09ERV9GT1Jfb25lX2NtcGxxaTIgPSA3MjEsCiAg
Q09ERV9GT1JfYXNobGRpMyA9IDcyMywKICBDT0RFX0ZPUl94ODZfc2hpZnRfYWRqXzEgPSA3MjYs
CiAgQ09ERV9GT1JfeDg2X3NoaWZ0X2Fkal8yID0gNzI3LAogIENPREVfRk9SX2FzaGxzaTMgPSA3
MjgsCiAgQ09ERV9GT1JfYXNobGhpMyA9IDczMCwKICBDT0RFX0ZPUl9hc2hscWkzID0gNzMxLAog
IENPREVfRk9SX2FzaHJkaTMgPSA3MzIsCiAgQ09ERV9GT1JfeDg2X3NoaWZ0X2Fkal8zID0gNzM1
LAogIENPREVfRk9SX2FzaHJzaTMgPSA3MzYsCiAgQ09ERV9GT1JfYXNocmhpMyA9IDczNywKICBD
T0RFX0ZPUl9hc2hycWkzID0gNzM4LAogIENPREVfRk9SX2xzaHJkaTMgPSA3MzksCiAgQ09ERV9G
T1JfbHNocnNpMyA9IDc0MiwKICBDT0RFX0ZPUl9sc2hyaGkzID0gNzQzLAogIENPREVfRk9SX2xz
aHJxaTMgPSA3NDQsCiAgQ09ERV9GT1Jfcm90bHNpMyA9IDc0NSwKICBDT0RFX0ZPUl9yb3RsaGkz
ID0gNzQ2LAogIENPREVfRk9SX3JvdGxxaTMgPSA3NDcsCiAgQ09ERV9GT1Jfcm90cnNpMyA9IDc0
OCwKICBDT0RFX0ZPUl9yb3RyaGkzID0gNzQ5LAogIENPREVfRk9SX3JvdHJxaTMgPSA3NTAsCiAg
Q09ERV9GT1JfZXh0diA9IDc1MSwKICBDT0RFX0ZPUl9leHR6diA9IDc1MiwKICBDT0RFX0ZPUl9p
bnN2ID0gNzUzLAogIENPREVfRk9SX3NlcSA9IDc1NCwKICBDT0RFX0ZPUl9zbmUgPSA3NTUsCiAg
Q09ERV9GT1Jfc2d0ID0gNzU2LAogIENPREVfRk9SX3NndHUgPSA3NTcsCiAgQ09ERV9GT1Jfc2x0
ID0gNzU4LAogIENPREVfRk9SX3NsdHUgPSA3NTksCiAgQ09ERV9GT1Jfc2dlID0gNzYwLAogIENP
REVfRk9SX3NnZXUgPSA3NjEsCiAgQ09ERV9GT1Jfc2xlID0gNzYyLAogIENPREVfRk9SX3NsZXUg
PSA3NjMsCiAgQ09ERV9GT1Jfc3Vub3JkZXJlZCA9IDc2NCwKICBDT0RFX0ZPUl9zb3JkZXJlZCA9
IDc2NSwKICBDT0RFX0ZPUl9zdW5lcSA9IDc2NiwKICBDT0RFX0ZPUl9zdW5nZSA9IDc2NywKICBD
T0RFX0ZPUl9zdW5ndCA9IDc2OCwKICBDT0RFX0ZPUl9zdW5sZSA9IDc2OSwKICBDT0RFX0ZPUl9z
dW5sdCA9IDc3MCwKICBDT0RFX0ZPUl9zbHRndCA9IDc3MSwKICBDT0RFX0ZPUl9iZXEgPSA3NzIs
CiAgQ09ERV9GT1JfYm5lID0gNzczLAogIENPREVfRk9SX2JndCA9IDc3NCwKICBDT0RFX0ZPUl9i
Z3R1ID0gNzc1LAogIENPREVfRk9SX2JsdCA9IDc3NiwKICBDT0RFX0ZPUl9ibHR1ID0gNzc3LAog
IENPREVfRk9SX2JnZSA9IDc3OCwKICBDT0RFX0ZPUl9iZ2V1ID0gNzc5LAogIENPREVfRk9SX2Js
ZSA9IDc4MCwKICBDT0RFX0ZPUl9ibGV1ID0gNzgxLAogIENPREVfRk9SX2J1bm9yZGVyZWQgPSA3
ODIsCiAgQ09ERV9GT1JfYm9yZGVyZWQgPSA3ODMsCiAgQ09ERV9GT1JfYnVuZXEgPSA3ODQsCiAg
Q09ERV9GT1JfYnVuZ2UgPSA3ODUsCiAgQ09ERV9GT1JfYnVuZ3QgPSA3ODYsCiAgQ09ERV9GT1Jf
YnVubGUgPSA3ODcsCiAgQ09ERV9GT1JfYnVubHQgPSA3ODgsCiAgQ09ERV9GT1JfYmx0Z3QgPSA3
ODksCiAgQ09ERV9GT1JfY2FzZXNpID0gNzkyLAogIENPREVfRk9SX2RvbG9vcF9lbmQgPSA3OTMs
CiAgQ09ERV9GT1JfY2FsbF9wb3AgPSA3OTYsCiAgQ09ERV9GT1JfY2FsbCA9IDc5NywKICBDT0RF
X0ZPUl9jYWxsX3ZhbHVlX3BvcCA9IDc5OCwKICBDT0RFX0ZPUl9jYWxsX3ZhbHVlID0gNzk5LAog
IENPREVfRk9SX3VudHlwZWRfY2FsbCA9IDgwMCwKICBDT0RFX0ZPUl9yZXR1cm4gPSA4MDEsCiAg
Q09ERV9GT1JfcHJvbG9ndWUgPSA4MDIsCiAgQ09ERV9GT1JfZXBpbG9ndWUgPSA4MDMsCiAgQ09E
RV9GT1Jfc2liY2FsbF9lcGlsb2d1ZSA9IDgwNCwKICBDT0RFX0ZPUl9mZnNzaTIgPSA4MDUsCiAg
Q09ERV9GT1JfbW92c3Ryc2kgPSA4MDgsCiAgQ09ERV9GT1Jfc3RybW92c2kgPSA4MDksCiAgQ09E
RV9GT1Jfc3RybW92aGkgPSA4MTAsCiAgQ09ERV9GT1Jfc3RybW92cWkgPSA4MTEsCiAgQ09ERV9G
T1JfY2xyc3Ryc2kgPSA4MTIsCiAgQ09ERV9GT1Jfc3Ryc2V0c2kgPSA4MTMsCiAgQ09ERV9GT1Jf
c3Ryc2V0aGkgPSA4MTQsCiAgQ09ERV9GT1Jfc3Ryc2V0cWkgPSA4MTUsCiAgQ09ERV9GT1JfY21w
c3Ryc2kgPSA4MTYsCiAgQ09ERV9GT1JfY21waW50cWkgPSA4MTcsCiAgQ09ERV9GT1Jfc3RybGVu
c2kgPSA4MTgsCiAgQ09ERV9GT1JfbW92c2ljYyA9IDgxOSwKICBDT0RFX0ZPUl9tb3ZoaWNjID0g
ODIwLAogIENPREVfRk9SX21vdnNmY2MgPSA4MjEsCiAgQ09ERV9GT1JfbW92ZGZjYyA9IDgyMiwK
ICBDT0RFX0ZPUl9tb3Z4ZmNjID0gODIzLAogIENPREVfRk9SX21vdnRmY2MgPSA4MjQsCiAgQ09E
RV9GT1JfYWxsb2NhdGVfc3RhY2sgPSA4MjUsCiAgQ09ERV9GT1JfZXhjZXB0aW9uX3JlY2VpdmVy
ID0gODI2LAogIENPREVfRk9SX2J1aWx0aW5fc2V0am1wX3JlY2VpdmVyID0gODI3LAogIENPREVf
Rk9SX2NvbmRpdGlvbmFsX3RyYXAgPSA4NzUsCiAgQ09ERV9GT1JfbW92dGkgPSA4NzYsCiAgQ09E
RV9GT1JfbW92djRzZiA9IDg3NywKICBDT0RFX0ZPUl9tb3Z2NHNpID0gODc4LAogIENPREVfRk9S
X21vdnYyc2kgPSA4NzksCiAgQ09ERV9GT1JfbW92djRoaSA9IDg4MCwKICBDT0RFX0ZPUl9tb3Z2
OHFpID0gODgxLAogIENPREVfRk9SX3NmZW5jZSA9IDg4OCwKICBDT0RFX0ZPUl9ub3RoaW5nID0g
ODg5IH07CgoKCgpzdHJ1Y3QgcnR4X2RlZjsKIyAxICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAv
Z2NjL21hY2htb2RlLmgiIDEKIyAyOSAiL3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4wL2djYy9tYWNo
bW9kZS5oIgplbnVtIG1hY2hpbmVfbW9kZSB7CiMgMSAiL3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4w
L2djYy9tYWNobW9kZS5kZWYiIDEKIyA2NyAiL3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4wL2djYy9t
YWNobW9kZS5kZWYiClZPSURtb2RlLAoKQkltb2RlLApRSW1vZGUsCkhJbW9kZSwKU0ltb2RlLApE
SW1vZGUsClRJbW9kZSwKT0ltb2RlLAoKCgoKUFFJbW9kZSwKUEhJbW9kZSwKUFNJbW9kZSwKUERJ
bW9kZSwKClFGbW9kZSwKSEZtb2RlLApUUUZtb2RlLApTRm1vZGUsCkRGbW9kZSwKWEZtb2RlLApU
Rm1vZGUsCgoKUUNtb2RlLApIQ21vZGUsClNDbW9kZSwKRENtb2RlLApYQ21vZGUsClRDbW9kZSwK
CkNRSW1vZGUsCkNISW1vZGUsCkNTSW1vZGUsCkNESW1vZGUsCkNUSW1vZGUsCkNPSW1vZGUsCgoK
CgpWMlFJbW9kZSwKVjJISW1vZGUsClYyU0ltb2RlLApWMkRJbW9kZSwKClY0UUltb2RlLApWNEhJ
bW9kZSwKVjRTSW1vZGUsClY0REltb2RlLAoKVjhRSW1vZGUsClY4SEltb2RlLApWOFNJbW9kZSwK
VjhESW1vZGUsCgpWMTZRSW1vZGUsCgpWMlNGbW9kZSwKVjJERm1vZGUsCgpWNFNGbW9kZSwKVjRE
Rm1vZGUsCgpWOFNGbW9kZSwKVjhERm1vZGUsCgoKCkJMS21vZGUsCiMgMTQ4ICIvdXNyL3NyYy9n
Y2MvZ2NjLWN2cy0zLjAvZ2NjL21hY2htb2RlLmRlZiIKQ0Ntb2RlLAoKCkNDR0Ntb2RlLCBDQ0dP
Q21vZGUsIENDTk9tb2RlLCBDQ1ptb2RlLCBDQ0ZQbW9kZSwgQ0NGUFVtb2RlLAojIDMxICIvdXNy
L3NyYy9nY2MvZ2NjLWN2cy0zLjAvZ2NjL21hY2htb2RlLmgiIDIKTUFYX01BQ0hJTkVfTU9ERSB9
OwojIDQxICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAvZ2NjL21hY2htb2RlLmgiCmV4dGVybiBj
b25zdCBjaGFyICogY29uc3QgbW9kZV9uYW1lW107CgoKZW51bSBtb2RlX2NsYXNzIHsgTU9ERV9S
QU5ET00sIE1PREVfSU5ULCBNT0RFX0ZMT0FULCBNT0RFX1BBUlRJQUxfSU5ULCBNT0RFX0NDLAog
ICAgICAgICAgICAgICAgICBNT0RFX0NPTVBMRVhfSU5ULCBNT0RFX0NPTVBMRVhfRkxPQVQsCiAg
ICAgICAgICAgICAgICAgIE1PREVfVkVDVE9SX0lOVCwgTU9ERV9WRUNUT1JfRkxPQVQsCiAgICAg
ICAgICAgICAgICAgIE1BWF9NT0RFX0NMQVNTfTsKCgoKCmV4dGVybiBjb25zdCBlbnVtIG1vZGVf
Y2xhc3MgbW9kZV9jbGFzc1tdOwojIDgwICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAvZ2NjL21h
Y2htb2RlLmgiCmV4dGVybiBjb25zdCB1bnNpZ25lZCBpbnQgbW9kZV9zaXplW107CgoKCgpleHRl
cm4gY29uc3QgdW5zaWduZWQgaW50IG1vZGVfdW5pdF9zaXplW107CiMgOTYgIi91c3Ivc3JjL2dj
Yy9nY2MtY3ZzLTMuMC9nY2MvbWFjaG1vZGUuaCIKZXh0ZXJuIGNvbnN0IHVuc2lnbmVkIGludCBt
b2RlX2JpdHNpemVbXTsKIyAxMTcgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvbWFjaG1v
ZGUuaCIKZXh0ZXJuIGNvbnN0IHVuc2lnbmVkIGNoYXIgbW9kZV93aWRlcl9tb2RlW107CgoKCgoK
CmV4dGVybiBlbnVtIG1hY2hpbmVfbW9kZSBtb2RlX2Zvcl9zaXplICh1bnNpZ25lZCBpbnQsIGVu
dW0gbW9kZV9jbGFzcywgaW50KTsKCgoKCmV4dGVybiBlbnVtIG1hY2hpbmVfbW9kZSBzbWFsbGVz
dF9tb2RlX2Zvcl9zaXplCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVk
IGludCwgZW51bSBtb2RlX2NsYXNzKTsKCgoKCgpleHRlcm4gZW51bSBtYWNoaW5lX21vZGUgaW50
X21vZGVfZm9yX21vZGUgKGVudW0gbWFjaGluZV9tb2RlKTsKCgoKZXh0ZXJuIGVudW0gbWFjaGlu
ZV9tb2RlIGdldF9iZXN0X21vZGUgKGludCwgaW50LCB1bnNpZ25lZCBpbnQsIGVudW0gbWFjaGlu
ZV9tb2RlLCBpbnQpOwoKCgoKZXh0ZXJuIHVuc2lnbmVkIGdldF9tb2RlX2FsaWdubWVudCAoZW51
bSBtYWNoaW5lX21vZGUpOwoKCgoKCmV4dGVybiBjb25zdCBlbnVtIG1hY2hpbmVfbW9kZSBjbGFz
c19uYXJyb3dlc3RfbW9kZVtdOwoKCgoKCmV4dGVybiBlbnVtIG1hY2hpbmVfbW9kZSBieXRlX21v
ZGU7CmV4dGVybiBlbnVtIG1hY2hpbmVfbW9kZSB3b3JkX21vZGU7CmV4dGVybiBlbnVtIG1hY2hp
bmVfbW9kZSBwdHJfbW9kZTsKIyA0MjYgImluc24tY29kZXMuaCIgMgoKZXh0ZXJuIGludCBjb25z
dF9pbnRfMV9vcGVyYW5kIChzdHJ1Y3QgcnR4X2RlZiAqLCBlbnVtIG1hY2hpbmVfbW9kZSk7CmV4
dGVybiBpbnQgc3ltYm9saWNfb3BlcmFuZCAoc3RydWN0IHJ0eF9kZWYgKiwgZW51bSBtYWNoaW5l
X21vZGUpOwpleHRlcm4gaW50IGFsaWduZWRfb3BlcmFuZCAoc3RydWN0IHJ0eF9kZWYgKiwgZW51
bSBtYWNoaW5lX21vZGUpOwpleHRlcm4gaW50IHBpY19zeW1ib2xpY19vcGVyYW5kIChzdHJ1Y3Qg
cnR4X2RlZiAqLCBlbnVtIG1hY2hpbmVfbW9kZSk7CmV4dGVybiBpbnQgY2FsbF9pbnNuX29wZXJh
bmQgKHN0cnVjdCBydHhfZGVmICosIGVudW0gbWFjaGluZV9tb2RlKTsKZXh0ZXJuIGludCBjb25z
dGFudF9jYWxsX2FkZHJlc3Nfb3BlcmFuZCAoc3RydWN0IHJ0eF9kZWYgKiwgZW51bSBtYWNoaW5l
X21vZGUpOwpleHRlcm4gaW50IGNvbnN0MF9vcGVyYW5kIChzdHJ1Y3QgcnR4X2RlZiAqLCBlbnVt
IG1hY2hpbmVfbW9kZSk7CmV4dGVybiBpbnQgY29uc3QxX29wZXJhbmQgKHN0cnVjdCBydHhfZGVm
ICosIGVudW0gbWFjaGluZV9tb2RlKTsKZXh0ZXJuIGludCBjb25zdDI0OF9vcGVyYW5kIChzdHJ1
Y3QgcnR4X2RlZiAqLCBlbnVtIG1hY2hpbmVfbW9kZSk7CmV4dGVybiBpbnQgaW5jZGVjX29wZXJh
bmQgKHN0cnVjdCBydHhfZGVmICosIGVudW0gbWFjaGluZV9tb2RlKTsKZXh0ZXJuIGludCBtbXhf
cmVnX29wZXJhbmQgKHN0cnVjdCBydHhfZGVmICosIGVudW0gbWFjaGluZV9tb2RlKTsKZXh0ZXJu
IGludCByZWdfbm9fc3Bfb3BlcmFuZCAoc3RydWN0IHJ0eF9kZWYgKiwgZW51bSBtYWNoaW5lX21v
ZGUpOwpleHRlcm4gaW50IGdlbmVyYWxfbm9fZWxpbV9vcGVyYW5kIChzdHJ1Y3QgcnR4X2RlZiAq
LCBlbnVtIG1hY2hpbmVfbW9kZSk7CmV4dGVybiBpbnQgbm9ubWVtb3J5X25vX2VsaW1fb3BlcmFu
ZCAoc3RydWN0IHJ0eF9kZWYgKiwgZW51bSBtYWNoaW5lX21vZGUpOwpleHRlcm4gaW50IHFfcmVn
c19vcGVyYW5kIChzdHJ1Y3QgcnR4X2RlZiAqLCBlbnVtIG1hY2hpbmVfbW9kZSk7CmV4dGVybiBp
bnQgbm9uX3FfcmVnc19vcGVyYW5kIChzdHJ1Y3QgcnR4X2RlZiAqLCBlbnVtIG1hY2hpbmVfbW9k
ZSk7CmV4dGVybiBpbnQgZmNtb3ZfY29tcGFyaXNvbl9vcGVyYXRvciAoc3RydWN0IHJ0eF9kZWYg
KiwgZW51bSBtYWNoaW5lX21vZGUpOwpleHRlcm4gaW50IHNzZV9jb21wYXJpc29uX29wZXJhdG9y
IChzdHJ1Y3QgcnR4X2RlZiAqLCBlbnVtIG1hY2hpbmVfbW9kZSk7CmV4dGVybiBpbnQgaXg4Nl9j
b21wYXJpc29uX29wZXJhdG9yIChzdHJ1Y3QgcnR4X2RlZiAqLCBlbnVtIG1hY2hpbmVfbW9kZSk7
CmV4dGVybiBpbnQgY21wX2ZwX2V4cGFuZGVyX29wZXJhbmQgKHN0cnVjdCBydHhfZGVmICosIGVu
dW0gbWFjaGluZV9tb2RlKTsKZXh0ZXJuIGludCBleHRfcmVnaXN0ZXJfb3BlcmFuZCAoc3RydWN0
IHJ0eF9kZWYgKiwgZW51bSBtYWNoaW5lX21vZGUpOwpleHRlcm4gaW50IGJpbmFyeV9mcF9vcGVy
YXRvciAoc3RydWN0IHJ0eF9kZWYgKiwgZW51bSBtYWNoaW5lX21vZGUpOwpleHRlcm4gaW50IG11
bHRfb3BlcmF0b3IgKHN0cnVjdCBydHhfZGVmICosIGVudW0gbWFjaGluZV9tb2RlKTsKZXh0ZXJu
IGludCBkaXZfb3BlcmF0b3IgKHN0cnVjdCBydHhfZGVmICosIGVudW0gbWFjaGluZV9tb2RlKTsK
ZXh0ZXJuIGludCBhcml0aF9vcl9sb2dpY2FsX29wZXJhdG9yIChzdHJ1Y3QgcnR4X2RlZiAqLCBl
bnVtIG1hY2hpbmVfbW9kZSk7CmV4dGVybiBpbnQgcHJvbW90YWJsZV9iaW5hcnlfb3BlcmF0b3Ig
KHN0cnVjdCBydHhfZGVmICosIGVudW0gbWFjaGluZV9tb2RlKTsKZXh0ZXJuIGludCBtZW1vcnlf
ZGlzcGxhY2VtZW50X29wZXJhbmQgKHN0cnVjdCBydHhfZGVmICosIGVudW0gbWFjaGluZV9tb2Rl
KTsKZXh0ZXJuIGludCBjbXBzaV9vcGVyYW5kIChzdHJ1Y3QgcnR4X2RlZiAqLCBlbnVtIG1hY2hp
bmVfbW9kZSk7CmV4dGVybiBpbnQgbG9uZ19tZW1vcnlfb3BlcmFuZCAoc3RydWN0IHJ0eF9kZWYg
KiwgZW51bSBtYWNoaW5lX21vZGUpOwojIDI2ICJ0bS5oIiAyCiMgNDQgIi91c3Ivc3JjL2djYy9n
Y2MtY3ZzLTMuMC9nY2MvY29uZmlnL2kzODYveG0taTM4Ni5oIiAyCiMgNyAidGNvbmZpZy5oIiAy
CgoKIyAxICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAvZ2NjL2RlZmF1bHRzLmgiIDEKIyAxMCAi
dGNvbmZpZy5oIiAyCiMgMzcgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvbGliZ2NjMi5j
IiAyCiMgMSAiL3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4wL2djYy90c3lzdGVtLmgiIDEKIyAzNyAi
L3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4wL2djYy90c3lzdGVtLmgiCiMgMSAiaW5jbHVkZS9zdGRk
ZWYuaCIgMSAzCiMgMTQ3ICJpbmNsdWRlL3N0ZGRlZi5oIiAzCnR5cGVkZWYgaW50IHB0cmRpZmZf
dDsKIyAxOTkgImluY2x1ZGUvc3RkZGVmLmgiIDMKdHlwZWRlZiB1bnNpZ25lZCBpbnQgc2l6ZV90
OwojIDI4NyAiaW5jbHVkZS9zdGRkZWYuaCIgMwp0eXBlZGVmIGxvbmcgaW50IHdjaGFyX3Q7CiMg
MzggIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvdHN5c3RlbS5oIiAyCiMgNjAgIi91c3Iv
c3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvdHN5c3RlbS5oIgojIDEgImluY2x1ZGUvc3RkYXJnLmgi
IDEgMwojIDQzICJpbmNsdWRlL3N0ZGFyZy5oIiAzCnR5cGVkZWYgX19idWlsdGluX3ZhX2xpc3Qg
X19nbnVjX3ZhX2xpc3Q7CiMgMTEwICJpbmNsdWRlL3N0ZGFyZy5oIiAzCnR5cGVkZWYgX19nbnVj
X3ZhX2xpc3QgdmFfbGlzdDsKIyA2MSAiL3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4wL2djYy90c3lz
dGVtLmgiIDIKCgojIDEgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAxIDMKIyAyNyAiL3Vzci9pbmNs
dWRlL3N0ZGlvLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMjgyICIv
dXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9zeXMvY2RlZnMuaCIg
MSAzCiMgMjgzICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMiAzCiMgMzEwICIvdXNyL2luY2x1
ZGUvZmVhdHVyZXMuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9nbnUvc3R1YnMuaCIgMSAzCiMgMzEx
ICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMiAzCiMgMjggIi91c3IvaW5jbHVkZS9zdGRpby5o
IiAyIDMKCgoKCgojIDEgImluY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDM0ICIvdXNyL2luY2x1ZGUv
c3RkaW8uaCIgMiAzCgoKCgojIDEgImluY2x1ZGUvc3RkYXJnLmgiIDEgMwojIDM5ICIvdXNyL2lu
Y2x1ZGUvc3RkaW8uaCIgMiAzCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDEgMwoj
IDI2ICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2ZlYXR1
cmVzLmgiIDEgMwojIDI3ICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAyIDMKCgojIDEgImlu
Y2x1ZGUvc3RkZGVmLmgiIDEgMwojIDMwICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAyIDMK
Cgp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgX191X2NoYXI7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQg
X191X3Nob3J0Owp0eXBlZGVmIHVuc2lnbmVkIGludCBfX3VfaW50Owp0eXBlZGVmIHVuc2lnbmVk
IGxvbmcgX191X2xvbmc7CgpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25n
IGludCBfX3VfcXVhZF90OwpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgbG9uZyBsb25nIGludCBfX3F1
YWRfdDsKIyA0OSAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMwp0eXBlZGVmIHNpZ25lZCBj
aGFyIF9faW50OF90Owp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgX191aW50OF90Owp0eXBlZGVmIHNp
Z25lZCBzaG9ydCBpbnQgX19pbnQxNl90Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGludCBfX3Vp
bnQxNl90Owp0eXBlZGVmIHNpZ25lZCBpbnQgX19pbnQzMl90Owp0eXBlZGVmIHVuc2lnbmVkIGlu
dCBfX3VpbnQzMl90OwoKX19leHRlbnNpb25fXyB0eXBlZGVmIHNpZ25lZCBsb25nIGxvbmcgaW50
IF9faW50NjRfdDsKX19leHRlbnNpb25fXyB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQg
X191aW50NjRfdDsKCnR5cGVkZWYgX19xdWFkX3QgKl9fcWFkZHJfdDsKCnR5cGVkZWYgX191X3F1
YWRfdCBfX2Rldl90Owp0eXBlZGVmIF9fdV9pbnQgX191aWRfdDsKdHlwZWRlZiBfX3VfaW50IF9f
Z2lkX3Q7CnR5cGVkZWYgX191X2xvbmcgX19pbm9fdDsKdHlwZWRlZiBfX3VfaW50IF9fbW9kZV90
Owp0eXBlZGVmIF9fdV9pbnQgX19ubGlua190Owp0eXBlZGVmIGxvbmcgaW50IF9fb2ZmX3Q7CnR5
cGVkZWYgX19xdWFkX3QgX19sb2ZmX3Q7CnR5cGVkZWYgaW50IF9fcGlkX3Q7CnR5cGVkZWYgaW50
IF9fc3NpemVfdDsKdHlwZWRlZiBfX3VfbG9uZyBfX3JsaW1fdDsKdHlwZWRlZiBfX3VfcXVhZF90
IF9fcmxpbTY0X3Q7CnR5cGVkZWYgX191X2ludCBfX2lkX3Q7Cgp0eXBlZGVmIHN0cnVjdAogIHsK
ICAgIGludCBfX3ZhbFsyXTsKICB9IF9fZnNpZF90OwoKCnR5cGVkZWYgaW50IF9fZGFkZHJfdDsK
dHlwZWRlZiBjaGFyICpfX2NhZGRyX3Q7CnR5cGVkZWYgbG9uZyBpbnQgX190aW1lX3Q7CnR5cGVk
ZWYgdW5zaWduZWQgaW50IF9fdXNlY29uZHNfdDsKdHlwZWRlZiBsb25nIGludCBfX3N1c2Vjb25k
c190Owp0eXBlZGVmIGxvbmcgaW50IF9fc3dibGtfdDsKCnR5cGVkZWYgbG9uZyBpbnQgX19jbG9j
a190OwoKCnR5cGVkZWYgaW50IF9fY2xvY2tpZF90OwoKCnR5cGVkZWYgaW50IF9fdGltZXJfdDsK
CgoKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGludCBfX2ZkX21hc2s7CiMgMTA5ICIvdXNyL2luY2x1
ZGUvYml0cy90eXBlcy5oIiAzCnR5cGVkZWYgc3RydWN0CiAgewoKCgoKCgogICAgX19mZF9tYXNr
IF9fZmRzX2JpdHNbMTAyNCAvICg4ICogc2l6ZW9mIChfX2ZkX21hc2spKV07CgoKICB9IF9fZmRf
c2V0OwoKCnR5cGVkZWYgaW50IF9fa2V5X3Q7CgoKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBpbnQg
X19pcGNfcGlkX3Q7CgoKCnR5cGVkZWYgbG9uZyBpbnQgX19ibGtzaXplX3Q7CgoKCgp0eXBlZGVm
IGxvbmcgaW50IF9fYmxrY250X3Q7CnR5cGVkZWYgX19xdWFkX3QgX19ibGtjbnQ2NF90OwoKCnR5
cGVkZWYgX191X2xvbmcgX19mc2Jsa2NudF90Owp0eXBlZGVmIF9fdV9xdWFkX3QgX19mc2Jsa2Nu
dDY0X3Q7CgoKdHlwZWRlZiBfX3VfbG9uZyBfX2ZzZmlsY250X3Q7CnR5cGVkZWYgX191X3F1YWRf
dCBfX2ZzZmlsY250NjRfdDsKCgp0eXBlZGVmIF9fdV9xdWFkX3QgX19pbm82NF90OwoKCnR5cGVk
ZWYgX19sb2ZmX3QgX19vZmY2NF90OwoKCnR5cGVkZWYgbG9uZyBpbnQgX190X3NjYWxhcl90Owp0
eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IF9fdF91c2NhbGFyX3Q7CgoKdHlwZWRlZiBpbnQgX19p
bnRwdHJfdDsKCgp0eXBlZGVmIHVuc2lnbmVkIGludCBfX3NvY2tsZW5fdDsKCgoKCiMgMSAiL3Vz
ci9pbmNsdWRlL2JpdHMvcHRocmVhZHR5cGVzLmgiIDEgMwojIDIzICIvdXNyL2luY2x1ZGUvYml0
cy9wdGhyZWFkdHlwZXMuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3NjaGVkLmgiIDEgMwoj
IDY4ICIvdXNyL2luY2x1ZGUvYml0cy9zY2hlZC5oIiAzCnN0cnVjdCBfX3NjaGVkX3BhcmFtCiAg
ewogICAgaW50IHNjaGVkX3ByaW9yaXR5OwogIH07CiMgMjQgIi91c3IvaW5jbHVkZS9iaXRzL3B0
aHJlYWR0eXBlcy5oIiAyIDMKCgpzdHJ1Y3QgX3B0aHJlYWRfZmFzdGxvY2sKewogIGxvbmcgaW50
IF9fc3RhdHVzOwogIGludCBfX3NwaW5sb2NrOwoKfTsKCgoKdHlwZWRlZiBzdHJ1Y3QgX3B0aHJl
YWRfZGVzY3Jfc3RydWN0ICpfcHRocmVhZF9kZXNjcjsKCgoKCgp0eXBlZGVmIHN0cnVjdAp7CiAg
aW50IF9fZGV0YWNoc3RhdGU7CiAgaW50IF9fc2NoZWRwb2xpY3k7CiAgc3RydWN0IF9fc2NoZWRf
cGFyYW0gX19zY2hlZHBhcmFtOwogIGludCBfX2luaGVyaXRzY2hlZDsKICBpbnQgX19zY29wZTsK
ICBzaXplX3QgX19ndWFyZHNpemU7CiAgaW50IF9fc3RhY2thZGRyX3NldDsKICB2b2lkICpfX3N0
YWNrYWRkcjsKICBzaXplX3QgX19zdGFja3NpemU7Cn0gcHRocmVhZF9hdHRyX3Q7CgoKCnR5cGVk
ZWYgc3RydWN0CnsKICBzdHJ1Y3QgX3B0aHJlYWRfZmFzdGxvY2sgX19jX2xvY2s7CiAgX3B0aHJl
YWRfZGVzY3IgX19jX3dhaXRpbmc7Cn0gcHRocmVhZF9jb25kX3Q7CgoKCnR5cGVkZWYgc3RydWN0
CnsKICBpbnQgX19kdW1teTsKfSBwdGhyZWFkX2NvbmRhdHRyX3Q7CgoKdHlwZWRlZiB1bnNpZ25l
ZCBpbnQgcHRocmVhZF9rZXlfdDsKCgoKCgp0eXBlZGVmIHN0cnVjdAp7CiAgaW50IF9fbV9yZXNl
cnZlZDsKICBpbnQgX19tX2NvdW50OwogIF9wdGhyZWFkX2Rlc2NyIF9fbV9vd25lcjsKICBpbnQg
X19tX2tpbmQ7CiAgc3RydWN0IF9wdGhyZWFkX2Zhc3Rsb2NrIF9fbV9sb2NrOwp9IHB0aHJlYWRf
bXV0ZXhfdDsKCgoKdHlwZWRlZiBzdHJ1Y3QKewogIGludCBfX211dGV4a2luZDsKfSBwdGhyZWFk
X211dGV4YXR0cl90OwoKCgp0eXBlZGVmIGludCBwdGhyZWFkX29uY2VfdDsKIyAxNDAgIi91c3Iv
aW5jbHVkZS9iaXRzL3B0aHJlYWR0eXBlcy5oIiAzCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQg
cHRocmVhZF90OwojIDE2NiAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMiAzCiMgNDEgIi91
c3IvaW5jbHVkZS9zdGRpby5oIiAyIDMKCgoKCgoKCnR5cGVkZWYgc3RydWN0IF9JT19GSUxFIEZJ
TEU7CiMgNTcgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2xpYmlv
LmgiIDEgMwojIDMwICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwojIDEgIi91c3IvaW5jbHVkZS9f
R19jb25maWcuaCIgMSAzCiMgOSAiL3Vzci9pbmNsdWRlL19HX2NvbmZpZy5oIiAzCiMgMSAiL3Vz
ci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMSAzCiMgMTAgIi91c3IvaW5jbHVkZS9fR19jb25maWcu
aCIgMiAzCgoKCgojIDEgImluY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDMxMiAiaW5jbHVkZS9zdGRk
ZWYuaCIgMwp0eXBlZGVmIHVuc2lnbmVkIGludCB3aW50X3Q7CiMgMTUgIi91c3IvaW5jbHVkZS9f
R19jb25maWcuaCIgMiAzCiMgMjQgIi91c3IvaW5jbHVkZS9fR19jb25maWcuaCIgMwojIDEgIi91
c3IvaW5jbHVkZS93Y2hhci5oIiAxIDMKIyA0NSAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDMKIyAx
ICJpbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyA0NiAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDIgMwoj
IDYyICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMwp0eXBlZGVmIHN0cnVjdAp7CiAgaW50IF9fY291
bnQ7CiAgdW5pb24KICB7CiAgICB3aW50X3QgX193Y2g7CiAgICBjaGFyIF9fd2NoYls0XTsKICB9
IF9fdmFsdWU7Cn0gX19tYnN0YXRlX3Q7CiMgMjUgIi91c3IvaW5jbHVkZS9fR19jb25maWcuaCIg
MiAzCgp0eXBlZGVmIHN0cnVjdAp7CiAgX19vZmZfdCBfX3BvczsKICBfX21ic3RhdGVfdCBfX3N0
YXRlOwp9IF9HX2Zwb3NfdDsKdHlwZWRlZiBzdHJ1Y3QKewogIF9fb2ZmNjRfdCBfX3BvczsKICBf
X21ic3RhdGVfdCBfX3N0YXRlOwp9IF9HX2Zwb3M2NF90OwojIDQ0ICIvdXNyL2luY2x1ZGUvX0df
Y29uZmlnLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZ2NvbnYuaCIgMSAzCiMgMjYgIi91c3IvaW5j
bHVkZS9nY29udi5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDEgMwojIDI3ICIv
dXNyL2luY2x1ZGUvZ2NvbnYuaCIgMiAzCgojIDEgIi91c3IvaW5jbHVkZS93Y2hhci5oIiAxIDMK
IyA0NSAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDMKIyAxICJpbmNsdWRlL3N0ZGRlZi5oIiAxIDMK
IyA0NiAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDIgMwojIDI5ICIvdXNyL2luY2x1ZGUvZ2NvbnYu
aCIgMiAzCgojIDEgImluY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDMxICIvdXNyL2luY2x1ZGUvZ2Nv
bnYuaCIgMiAzCgoKCgoKZW51bQp7CiAgX19HQ09OVl9PSyA9IDAsCiAgX19HQ09OVl9OT0NPTlYs
CiAgX19HQ09OVl9OT0RCLAogIF9fR0NPTlZfTk9NRU0sCgogIF9fR0NPTlZfRU1QVFlfSU5QVVQs
CiAgX19HQ09OVl9GVUxMX09VVFBVVCwKICBfX0dDT05WX0lMTEVHQUxfSU5QVVQsCiAgX19HQ09O
Vl9JTkNPTVBMRVRFX0lOUFVULAoKICBfX0dDT05WX0lMTEVHQUxfREVTQ1JJUFRPUiwKICBfX0dD
T05WX0lOVEVSTkFMX0VSUk9SCn07CgoKCmVudW0KewogIF9fR0NPTlZfSVNfTEFTVCA9IDB4MDAw
MSwKICBfX0dDT05WX0lHTk9SRV9FUlJPUlMgPSAweDAwMDIKfTsKCgoKc3RydWN0IF9fZ2NvbnZf
c3RlcDsKc3RydWN0IF9fZ2NvbnZfc3RlcF9kYXRhOwpzdHJ1Y3QgX19nY29udl9sb2FkZWRfb2Jq
ZWN0OwpzdHJ1Y3QgX19nY29udl90cmFuc19kYXRhOwoKCgp0eXBlZGVmIGludCAoKl9fZ2NvbnZf
ZmN0KSAoc3RydWN0IF9fZ2NvbnZfc3RlcCAqLCBzdHJ1Y3QgX19nY29udl9zdGVwX2RhdGEgKiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgdW5zaWduZWQgY2hhciAqKiwgX19j
b25zdCB1bnNpZ25lZCBjaGFyICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBjaGFyICoqLCBzaXplX3QgKiwgaW50LCBpbnQpOwoKCnR5cGVkZWYgaW50ICgqX19nY29udl9p
bml0X2ZjdCkgKHN0cnVjdCBfX2djb252X3N0ZXAgKik7CnR5cGVkZWYgdm9pZCAoKl9fZ2NvbnZf
ZW5kX2ZjdCkgKHN0cnVjdCBfX2djb252X3N0ZXAgKik7CgoKCnR5cGVkZWYgaW50ICgqX19nY29u
dl90cmFuc19mY3QpIChzdHJ1Y3QgX19nY29udl9zdGVwICosCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdHJ1Y3QgX19nY29udl9zdGVwX2RhdGEgKiwgdm9pZCAqLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB1bnNpZ25lZCBjaGFyICosCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKiosCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKiwg
dW5zaWduZWQgY2hhciAqKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCAqKTsKCgp0eXBlZGVmIGludCAoKl9fZ2NvbnZfdHJhbnNfY29udGV4dF9mY3QpIChzdHJ1Y3Qg
X19nY29udl90cmFuc19kYXRhICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIF9fY29uc3QgdW5zaWduZWQgY2hhciAqLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqLCB1bnNpZ25lZCBjaGFy
ICopOwoKCnR5cGVkZWYgaW50ICgqX19nY29udl90cmFuc19xdWVyeV9mY3QpIChfX2NvbnN0IGNo
YXIgKiwgX19jb25zdCBjaGFyICoqKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCAqKTsKCgp0eXBlZGVmIGludCAoKl9fZ2NvbnZfdHJhbnNfaW5pdF9mY3Qp
ICh2b2lkICoqLCBjb25zdCBjaGFyICopOwp0eXBlZGVmIHZvaWQgKCpfX2djb252X3RyYW5zX2Vu
ZF9mY3QpICh2b2lkICopOwoKc3RydWN0IF9fZ2NvbnZfdHJhbnNfZGF0YQp7CgogIF9fZ2NvbnZf
dHJhbnNfZmN0IF9fdHJhbnNfZmN0OwogIF9fZ2NvbnZfdHJhbnNfY29udGV4dF9mY3QgX190cmFu
c19jb250ZXh0X2ZjdDsKICBfX2djb252X3RyYW5zX2VuZF9mY3QgX190cmFuc19lbmRfZmN0Owog
IHZvaWQgKl9fZGF0YTsKICBzdHJ1Y3QgX19nY29udl90cmFuc19kYXRhICpfX25leHQ7Cn07CgoK
CnN0cnVjdCBfX2djb252X3N0ZXAKewogIHN0cnVjdCBfX2djb252X2xvYWRlZF9vYmplY3QgKl9f
c2hsaWJfaGFuZGxlOwogIF9fY29uc3QgY2hhciAqX19tb2RuYW1lOwoKICBpbnQgX19jb3VudGVy
OwoKICBfX2NvbnN0IGNoYXIgKl9fZnJvbV9uYW1lOwogIF9fY29uc3QgY2hhciAqX190b19uYW1l
OwoKICBfX2djb252X2ZjdCBfX2ZjdDsKICBfX2djb252X2luaXRfZmN0IF9faW5pdF9mY3Q7CiAg
X19nY29udl9lbmRfZmN0IF9fZW5kX2ZjdDsKCgoKICBpbnQgX19taW5fbmVlZGVkX2Zyb207CiAg
aW50IF9fbWF4X25lZWRlZF9mcm9tOwogIGludCBfX21pbl9uZWVkZWRfdG87CiAgaW50IF9fbWF4
X25lZWRlZF90bzsKCgogIGludCBfX3N0YXRlZnVsOwoKICB2b2lkICpfX2RhdGE7Cn07CgoKCnN0
cnVjdCBfX2djb252X3N0ZXBfZGF0YQp7CiAgdW5zaWduZWQgY2hhciAqX19vdXRidWY7CiAgdW5z
aWduZWQgY2hhciAqX19vdXRidWZlbmQ7CgoKCiAgaW50IF9fZmxhZ3M7CgoKCiAgaW50IF9faW52
b2NhdGlvbl9jb3VudGVyOwoKCgogIGludCBfX2ludGVybmFsX3VzZTsKCiAgX19tYnN0YXRlX3Qg
Kl9fc3RhdGVwOwogIF9fbWJzdGF0ZV90IF9fc3RhdGU7CgoKCiAgc3RydWN0IF9fZ2NvbnZfdHJh
bnNfZGF0YSAqX190cmFuczsKfTsKCgoKdHlwZWRlZiBzdHJ1Y3QgX19nY29udl9pbmZvCnsKICBz
aXplX3QgX19uc3RlcHM7CiAgc3RydWN0IF9fZ2NvbnZfc3RlcCAqX19zdGVwczsKICBfX2V4dGVu
c2lvbl9fIHN0cnVjdCBfX2djb252X3N0ZXBfZGF0YSBfX2RhdGFbMF07Cn0gKl9fZ2NvbnZfdDsK
IyA0NSAiL3Vzci9pbmNsdWRlL19HX2NvbmZpZy5oIiAyIDMKdHlwZWRlZiB1bmlvbgp7CiAgc3Ry
dWN0IF9fZ2NvbnZfaW5mbyBfX2NkOwogIHN0cnVjdAogIHsKICAgIHN0cnVjdCBfX2djb252X2lu
Zm8gX19jZDsKICAgIHN0cnVjdCBfX2djb252X3N0ZXBfZGF0YSBfX2RhdGE7CiAgfSBfX2NvbWJp
bmVkOwp9IF9HX2ljb252X3Q7Cgp0eXBlZGVmIGludCBfR19pbnQxNl90IF9fYXR0cmlidXRlX18g
KChfX21vZGVfXyAoX19ISV9fKSkpOwp0eXBlZGVmIGludCBfR19pbnQzMl90IF9fYXR0cmlidXRl
X18gKChfX21vZGVfXyAoX19TSV9fKSkpOwp0eXBlZGVmIHVuc2lnbmVkIGludCBfR191aW50MTZf
dCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fSElfXykpKTsKdHlwZWRlZiB1bnNpZ25lZCBp
bnQgX0dfdWludDMyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1NJX18pKSk7CiMgMzEg
Ii91c3IvaW5jbHVkZS9saWJpby5oIiAyIDMKIyA1MSAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMK
IyAxICJpbmNsdWRlL3N0ZGFyZy5oIiAxIDMKIyA1MiAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDIg
MwojIDE1NyAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKc3RydWN0IF9JT19qdW1wX3Q7IHN0cnVj
dCBfSU9fRklMRTsKIyAxNjcgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCnR5cGVkZWYgdm9pZCBf
SU9fbG9ja190OwoKCgoKCnN0cnVjdCBfSU9fbWFya2VyIHsKICBzdHJ1Y3QgX0lPX21hcmtlciAq
X25leHQ7CiAgc3RydWN0IF9JT19GSUxFICpfc2J1ZjsKCgoKICBpbnQgX3BvczsKIyAxOTAgIi91
c3IvaW5jbHVkZS9saWJpby5oIiAzCn07CgoKZW51bSBfX2NvZGVjdnRfcmVzdWx0CnsKICBfX2Nv
ZGVjdnRfb2ssCiAgX19jb2RlY3Z0X3BhcnRpYWwsCiAgX19jb2RlY3Z0X2Vycm9yLAogIF9fY29k
ZWN2dF9ub2NvbnYKfTsKIyAyNjIgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCnN0cnVjdCBfSU9f
RklMRSB7CiAgaW50IF9mbGFnczsKCgoKCiAgY2hhciogX0lPX3JlYWRfcHRyOwogIGNoYXIqIF9J
T19yZWFkX2VuZDsKICBjaGFyKiBfSU9fcmVhZF9iYXNlOwogIGNoYXIqIF9JT193cml0ZV9iYXNl
OwogIGNoYXIqIF9JT193cml0ZV9wdHI7CiAgY2hhciogX0lPX3dyaXRlX2VuZDsKICBjaGFyKiBf
SU9fYnVmX2Jhc2U7CiAgY2hhciogX0lPX2J1Zl9lbmQ7CgogIGNoYXIgKl9JT19zYXZlX2Jhc2U7
CiAgY2hhciAqX0lPX2JhY2t1cF9iYXNlOwogIGNoYXIgKl9JT19zYXZlX2VuZDsKCiAgc3RydWN0
IF9JT19tYXJrZXIgKl9tYXJrZXJzOwoKICBzdHJ1Y3QgX0lPX0ZJTEUgKl9jaGFpbjsKCiAgaW50
IF9maWxlbm87CiAgaW50IF9ibGtzaXplOwogIF9fb2ZmX3QgX29sZF9vZmZzZXQ7CgoKCiAgdW5z
aWduZWQgc2hvcnQgX2N1cl9jb2x1bW47CiAgc2lnbmVkIGNoYXIgX3Z0YWJsZV9vZmZzZXQ7CiAg
Y2hhciBfc2hvcnRidWZbMV07CgoKCiAgX0lPX2xvY2tfdCAqX2xvY2s7CiMgMzA2ICIvdXNyL2lu
Y2x1ZGUvbGliaW8uaCIgMwogIF9fb2ZmNjRfdCBfb2Zmc2V0OwoKCgoKCiAgdm9pZCAqX19wYWQx
OwogIHZvaWQgKl9fcGFkMjsKCiAgaW50IF9tb2RlOwoKICBjaGFyIF91bnVzZWQyWzE1ICogc2l6
ZW9mIChpbnQpIC0gMiAqIHNpemVvZiAodm9pZCAqKV07Cgp9OwoKCnR5cGVkZWYgc3RydWN0IF9J
T19GSUxFIF9JT19GSUxFOwoKCnN0cnVjdCBfSU9fRklMRV9wbHVzOwoKZXh0ZXJuIHN0cnVjdCBf
SU9fRklMRV9wbHVzIF9JT18yXzFfc3RkaW5fOwpleHRlcm4gc3RydWN0IF9JT19GSUxFX3BsdXMg
X0lPXzJfMV9zdGRvdXRfOwpleHRlcm4gc3RydWN0IF9JT19GSUxFX3BsdXMgX0lPXzJfMV9zdGRl
cnJfOwojIDM0NSAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKdHlwZWRlZiBfX3NzaXplX3QgX19p
b19yZWFkX2ZuICh2b2lkICpfX2Nvb2tpZSwgY2hhciAqX19idWYsIHNpemVfdCBfX25ieXRlcyk7
CgoKCgoKCgp0eXBlZGVmIF9fc3NpemVfdCBfX2lvX3dyaXRlX2ZuICh2b2lkICpfX2Nvb2tpZSwg
X19jb25zdCBjaGFyICpfX2J1ZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IF9fbik7CgoKCgoKCgp0eXBlZGVmIGludCBfX2lvX3NlZWtfZm4gKHZvaWQgKl9fY29va2ll
LCBfX29mZjY0X3QgKl9fcG9zLCBpbnQgX193KTsKCgp0eXBlZGVmIGludCBfX2lvX2Nsb3NlX2Zu
ICh2b2lkICpfX2Nvb2tpZSk7CiMgMzk3ICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwpleHRlcm4g
aW50IF9fdW5kZXJmbG93IChfSU9fRklMRSAqKSA7CmV4dGVybiBpbnQgX191ZmxvdyAoX0lPX0ZJ
TEUgKikgOwpleHRlcm4gaW50IF9fb3ZlcmZsb3cgKF9JT19GSUxFICosIGludCkgOwpleHRlcm4g
d2ludF90IF9fd3VuZGVyZmxvdyAoX0lPX0ZJTEUgKikgOwpleHRlcm4gd2ludF90IF9fd3VmbG93
IChfSU9fRklMRSAqKSA7CmV4dGVybiB3aW50X3QgX193b3ZlcmZsb3cgKF9JT19GSUxFICosIHdp
bnRfdCkgOwojIDQyNyAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKZXh0ZXJuIGludCBfSU9fZ2V0
YyAoX0lPX0ZJTEUgKl9fZnApIDsKZXh0ZXJuIGludCBfSU9fcHV0YyAoaW50IF9fYywgX0lPX0ZJ
TEUgKl9fZnApIDsKZXh0ZXJuIGludCBfSU9fZmVvZiAoX0lPX0ZJTEUgKl9fZnApIDsKZXh0ZXJu
IGludCBfSU9fZmVycm9yIChfSU9fRklMRSAqX19mcCkgOwoKZXh0ZXJuIGludCBfSU9fcGVla2Nf
bG9ja2VkIChfSU9fRklMRSAqX19mcCkgOwoKCgoKCmV4dGVybiB2b2lkIF9JT19mbG9ja2ZpbGUg
KF9JT19GSUxFICopIDsKZXh0ZXJuIHZvaWQgX0lPX2Z1bmxvY2tmaWxlIChfSU9fRklMRSAqKSA7
CmV4dGVybiBpbnQgX0lPX2Z0cnlsb2NrZmlsZSAoX0lPX0ZJTEUgKikgOwojIDQ1MyAiL3Vzci9p
bmNsdWRlL2xpYmlvLmgiIDMKZXh0ZXJuIGludCBfSU9fdmZzY2FuZiAoX0lPX0ZJTEUgKiBfX3Jl
c3RyaWN0LCBjb25zdCBjaGFyICogX19yZXN0cmljdCwKICAgICAgICAgICAgICAgICAgICAgICAg
X19nbnVjX3ZhX2xpc3QsIGludCAqX19yZXN0cmljdCkgOwpleHRlcm4gaW50IF9JT192ZnByaW50
ZiAoX0lPX0ZJTEUgKl9fcmVzdHJpY3QsIGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QsCiAgICAgICAg
ICAgICAgICAgICAgICAgICBfX2dudWNfdmFfbGlzdCkgOwpleHRlcm4gX19zc2l6ZV90IF9JT19w
YWRuIChfSU9fRklMRSAqLCBpbnQsIF9fc3NpemVfdCkgOwpleHRlcm4gc2l6ZV90IF9JT19zZ2V0
biAoX0lPX0ZJTEUgKiwgdm9pZCAqLCBzaXplX3QpIDsKCmV4dGVybiBfX29mZjY0X3QgX0lPX3Nl
ZWtvZmYgKF9JT19GSUxFICosIF9fb2ZmNjRfdCwgaW50LCBpbnQpIDsKZXh0ZXJuIF9fb2ZmNjRf
dCBfSU9fc2Vla3BvcyAoX0lPX0ZJTEUgKiwgX19vZmY2NF90LCBpbnQpIDsKCmV4dGVybiB2b2lk
IF9JT19mcmVlX2JhY2t1cF9hcmVhIChfSU9fRklMRSAqKSA7CiMgNTggIi91c3IvaW5jbHVkZS9z
dGRpby5oIiAyIDMKCgoKdHlwZWRlZiBfR19mcG9zX3QgZnBvc190OwojIDExMCAiL3Vzci9pbmNs
dWRlL3N0ZGlvLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9zdGRpb19saW0uaCIgMSAzCiMg
MTExICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMiAzCgoKCmV4dGVybiBGSUxFICpzdGRpbjsKZXh0
ZXJuIEZJTEUgKnN0ZG91dDsKZXh0ZXJuIEZJTEUgKnN0ZGVycjsKCgoKCgoKZXh0ZXJuIGludCBy
ZW1vdmUgKF9fY29uc3QgY2hhciAqX19maWxlbmFtZSkgOwoKZXh0ZXJuIGludCByZW5hbWUgKF9f
Y29uc3QgY2hhciAqX19vbGQsIF9fY29uc3QgY2hhciAqX19uZXcpIDsKCgoKCmV4dGVybiBGSUxF
ICp0bXBmaWxlICh2b2lkKSA7CiMgMTQyICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4g
Y2hhciAqdG1wbmFtIChjaGFyICpfX3MpIDsKCgoKCmV4dGVybiBjaGFyICp0bXBuYW1fciAoY2hh
ciAqX19zKSA7CiMgMTU5ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gY2hhciAqdGVt
cG5hbSAoX19jb25zdCBjaGFyICpfX2RpciwgX19jb25zdCBjaGFyICpfX3BmeCkKICAgICAgICAg
ICAgIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CgoKCgpleHRlcm4gaW50IGZjbG9zZSAo
RklMRSAqX19zdHJlYW0pIDsKCmV4dGVybiBpbnQgZmZsdXNoIChGSUxFICpfX3N0cmVhbSkgOwoK
CgpleHRlcm4gaW50IGZmbHVzaF91bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIDsKIyAxODIgIi91
c3IvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiBGSUxFICpmb3BlbiAoX19jb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fZmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fbW9kZXMpIDsKCmV4dGVybiBGSUxFICpmcmVvcGVuIChfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19maWxlbmFtZSwKICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hh
ciAqX19yZXN0cmljdCBfX21vZGVzLAogICAgICAgICAgICAgICAgICAgICAgRklMRSAqX19yZXN0
cmljdCBfX3N0cmVhbSkgOwojIDIxMiAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIEZJ
TEUgKmZkb3BlbiAoaW50IF9fZmQsIF9fY29uc3QgY2hhciAqX19tb2RlcykgOwojIDIzNSAiL3Vz
ci9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIHZvaWQgc2V0YnVmIChGSUxFICpfX3Jlc3RyaWN0
IF9fc3RyZWFtLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmKSA7CgoKCmV4dGVybiBpbnQgc2V0dmJ1
ZiAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwgY2hhciAqX19yZXN0cmljdCBfX2J1ZiwKICAg
ICAgICAgICAgICAgICAgICBpbnQgX19tb2Rlcywgc2l6ZV90IF9fbikgOwoKCgoKZXh0ZXJuIHZv
aWQgc2V0YnVmZmVyIChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLCBjaGFyICpfX3Jlc3RyaWN0
IF9fYnVmLAogICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX3NpemUpIDsKCgpleHRlcm4g
dm9pZCBzZXRsaW5lYnVmIChGSUxFICpfX3N0cmVhbSkgOwoKCgoKZXh0ZXJuIGludCBmcHJpbnRm
IChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLAogICAgICAgICAgICAgICAgICAgIF9fY29uc3Qg
Y2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSA7CgpleHRlcm4gaW50IHByaW50ZiAoX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pIDsKCmV4dGVybiBpbnQgc3ByaW50
ZiAoY2hhciAqX19yZXN0cmljdCBfX3MsCiAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFy
ICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pIDsKCgpleHRlcm4gaW50IHZmcHJpbnRmIChGSUxF
ICpfX3Jlc3RyaWN0IF9fcywgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LAogICAg
ICAgICAgICAgICAgICAgICBfX2dudWNfdmFfbGlzdCBfX2FyZykgOwoKZXh0ZXJuIGludCB2cHJp
bnRmIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIF9fZ251Y192YV9saXN0IF9f
YXJnKQogICAgICAgICAgICA7CgpleHRlcm4gaW50IHZzcHJpbnRmIChjaGFyICpfX3Jlc3RyaWN0
IF9fcywgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LAogICAgICAgICAgICAgICAg
ICAgICBfX2dudWNfdmFfbGlzdCBfX2FyZykgOwoKCgpleHRlcm4gaW50IHNucHJpbnRmIChjaGFy
ICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9fbWF4bGVuLAogICAgICAgICAgICAgICAgICAgICBf
X2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikKICAgICAgICAgICAgIF9fYXR0
cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAzLCA0KSkpOwoKZXh0ZXJuIGludCBf
X3ZzbnByaW50ZiAoY2hhciAqX19yZXN0cmljdCBfX3MsIHNpemVfdCBfX21heGxlbiwKICAgICAg
ICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCBfX2du
dWNfdmFfbGlzdCBfX2FyZykKICAgICAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9f
IChfX3ByaW50Zl9fLCAzLCAwKSkpOwpleHRlcm4gaW50IHZzbnByaW50ZiAoY2hhciAqX19yZXN0
cmljdCBfX3MsIHNpemVfdCBfX21heGxlbiwKICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3Qg
Y2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgX19nbnVjX3ZhX2xpc3QgX19hcmcpCiAgICAgICAg
ICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMywgMCkpKTsKIyAz
MDkgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiBpbnQgZnNjYW5mIChGSUxFICpfX3Jl
c3RyaWN0IF9fc3RyZWFtLAogICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3Ry
aWN0IF9fZm9ybWF0LCAuLi4pIDsKCmV4dGVybiBpbnQgc2NhbmYgKF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSA7CgpleHRlcm4gaW50IHNzY2FuZiAoX19jb25zdCBjaGFy
ICpfX3Jlc3RyaWN0IF9fcywKICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX2Zvcm1hdCwgLi4uKSA7CiMgMzM1ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRl
cm4gaW50IGZnZXRjIChGSUxFICpfX3N0cmVhbSkgOwpleHRlcm4gaW50IGdldGMgKEZJTEUgKl9f
c3RyZWFtKSA7CgoKZXh0ZXJuIGludCBnZXRjaGFyICh2b2lkKSA7CgoKCgoKCgpleHRlcm4gaW50
IGdldGNfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKSA7CmV4dGVybiBpbnQgZ2V0Y2hhcl91bmxv
Y2tlZCAodm9pZCkgOwoKCgoKZXh0ZXJuIGludCBmZ2V0Y191bmxvY2tlZCAoRklMRSAqX19zdHJl
YW0pIDsKCgoKCmV4dGVybiBpbnQgZnB1dGMgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKSA7CmV4
dGVybiBpbnQgcHV0YyAoaW50IF9fYywgRklMRSAqX19zdHJlYW0pIDsKCgpleHRlcm4gaW50IHB1
dGNoYXIgKGludCBfX2MpIDsKCgoKCgoKCmV4dGVybiBpbnQgZnB1dGNfdW5sb2NrZWQgKGludCBf
X2MsIEZJTEUgKl9fc3RyZWFtKSA7CgoKCgpleHRlcm4gaW50IHB1dGNfdW5sb2NrZWQgKGludCBf
X2MsIEZJTEUgKl9fc3RyZWFtKSA7CmV4dGVybiBpbnQgcHV0Y2hhcl91bmxvY2tlZCAoaW50IF9f
YykgOwoKCgoKCmV4dGVybiBpbnQgZ2V0dyAoRklMRSAqX19zdHJlYW0pIDsKCgpleHRlcm4gaW50
IHB1dHcgKGludCBfX3csIEZJTEUgKl9fc3RyZWFtKSA7CgoKCgpleHRlcm4gY2hhciAqZmdldHMg
KGNoYXIgKl9fcmVzdHJpY3QgX19zLCBpbnQgX19uLCBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFt
KQogICAgICAgICAgICA7CiMgNDAxICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gY2hh
ciAqZ2V0cyAoY2hhciAqX19zKSA7CiMgNDI1ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRl
cm4gaW50IGZwdXRzIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zLCBGSUxFICpfX3Jlc3Ry
aWN0IF9fc3RyZWFtKQogICAgICAgICAgICA7CiMgNDM1ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIg
MwpleHRlcm4gaW50IHB1dHMgKF9fY29uc3QgY2hhciAqX19zKSA7CgoKCmV4dGVybiBpbnQgdW5n
ZXRjIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkgOwoKCgpleHRlcm4gc2l6ZV90IGZyZWFkICh2
b2lkICpfX3Jlc3RyaWN0IF9fcHRyLCBzaXplX3QgX19zaXplLAogICAgICAgICAgICAgICAgICAg
ICBzaXplX3QgX19uLCBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSA7CgpleHRlcm4gc2l6ZV90
IGZ3cml0ZSAoX19jb25zdCB2b2lkICpfX3Jlc3RyaWN0IF9fcHRyLCBzaXplX3QgX19zaXplLAog
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbiwgRklMRSAqX19yZXN0cmljdCBfX3MpIDsK
CgoKZXh0ZXJuIHNpemVfdCBmcmVhZF91bmxvY2tlZCAodm9pZCAqX19yZXN0cmljdCBfX3B0ciwg
c2l6ZV90IF9fc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbiwg
RklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkgOwpleHRlcm4gc2l6ZV90IGZ3cml0ZV91bmxvY2tl
ZCAoX19jb25zdCB2b2lkICpfX3Jlc3RyaWN0IF9fcHRyLCBzaXplX3QgX19zaXplLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbiwgRklMRSAqX19yZXN0cmljdCBfX3N0
cmVhbSkgOwoKCgoKZXh0ZXJuIGludCBmc2VlayAoRklMRSAqX19zdHJlYW0sIGxvbmcgaW50IF9f
b2ZmLCBpbnQgX193aGVuY2UpIDsKCmV4dGVybiBsb25nIGludCBmdGVsbCAoRklMRSAqX19zdHJl
YW0pIDsKCmV4dGVybiB2b2lkIHJld2luZCAoRklMRSAqX19zdHJlYW0pIDsKIyA0NzMgIi91c3Iv
aW5jbHVkZS9zdGRpby5oIiAzCnR5cGVkZWYgX19vZmZfdCBvZmZfdDsKIyA0OTUgIi91c3IvaW5j
bHVkZS9zdGRpby5oIiAzCmV4dGVybiBpbnQgZmdldHBvcyAoRklMRSAqX19yZXN0cmljdCBfX3N0
cmVhbSwgZnBvc190ICpfX3Jlc3RyaWN0IF9fcG9zKQogICAgICAgICAgICA7CgpleHRlcm4gaW50
IGZzZXRwb3MgKEZJTEUgKl9fc3RyZWFtLCBfX2NvbnN0IGZwb3NfdCAqX19wb3MpIDsKIyA1MzEg
Ii91c3IvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiB2b2lkIGNsZWFyZXJyIChGSUxFICpfX3N0
cmVhbSkgOwoKZXh0ZXJuIGludCBmZW9mIChGSUxFICpfX3N0cmVhbSkgOwoKZXh0ZXJuIGludCBm
ZXJyb3IgKEZJTEUgKl9fc3RyZWFtKSA7CgoKCmV4dGVybiB2b2lkIGNsZWFyZXJyX3VubG9ja2Vk
IChGSUxFICpfX3N0cmVhbSkgOwpleHRlcm4gaW50IGZlb2ZfdW5sb2NrZWQgKEZJTEUgKl9fc3Ry
ZWFtKSA7CmV4dGVybiBpbnQgZmVycm9yX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkgOwoKCgoK
ZXh0ZXJuIHZvaWQgcGVycm9yIChfX2NvbnN0IGNoYXIgKl9fcykgOwoKCgoKZXh0ZXJuIGludCBz
eXNfbmVycjsKZXh0ZXJuIF9fY29uc3QgY2hhciAqX19jb25zdCBzeXNfZXJybGlzdFtdOwojIDU2
MiAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIGludCBmaWxlbm8gKEZJTEUgKl9fc3Ry
ZWFtKSA7CgoKCgpleHRlcm4gaW50IGZpbGVub191bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIDsK
CgoKCgoKZXh0ZXJuIEZJTEUgKnBvcGVuIChfX2NvbnN0IGNoYXIgKl9fY29tbWFuZCwgX19jb25z
dCBjaGFyICpfX21vZGVzKSA7CgoKZXh0ZXJuIGludCBwY2xvc2UgKEZJTEUgKl9fc3RyZWFtKSA7
CgoKCgoKZXh0ZXJuIGNoYXIgKmN0ZXJtaWQgKGNoYXIgKl9fcykgOwojIDYwOSAiL3Vzci9pbmNs
dWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIHZvaWQgZmxvY2tmaWxlIChGSUxFICpfX3N0cmVhbSkgOwoK
CgpleHRlcm4gaW50IGZ0cnlsb2NrZmlsZSAoRklMRSAqX19zdHJlYW0pIDsKCgpleHRlcm4gdm9p
ZCBmdW5sb2NrZmlsZSAoRklMRSAqX19zdHJlYW0pIDsKIyA2MzAgIi91c3IvaW5jbHVkZS9zdGRp
by5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvc3RkaW8uaCIgMSAzCiMgMzIgIi91c3IvaW5j
bHVkZS9iaXRzL3N0ZGlvLmgiIDMKZXh0ZXJuIF9faW5saW5lIGludAp2cHJpbnRmIChfX2NvbnN0
IGNoYXIgKl9fcmVzdHJpY3QgX19mbXQsIF9fZ251Y192YV9saXN0IF9fYXJnKQp7CiAgcmV0dXJu
IHZmcHJpbnRmIChzdGRvdXQsIF9fZm10LCBfX2FyZyk7Cn0KCgpleHRlcm4gX19pbmxpbmUgaW50
CmdldGNoYXIgKHZvaWQpCnsKICByZXR1cm4gX0lPX2dldGMgKHN0ZGluKTsKfQoKCgoKZXh0ZXJu
IF9faW5saW5lIGludApnZXRjX3VubG9ja2VkIChGSUxFICpfX2ZwKQp7CiAgcmV0dXJuICgoX19m
cCktPl9JT19yZWFkX3B0ciA+PSAoX19mcCktPl9JT19yZWFkX2VuZCA/IF9fdWZsb3cgKF9fZnAp
IDogKih1bnNpZ25lZCBjaGFyICopIChfX2ZwKS0+X0lPX3JlYWRfcHRyKyspOwp9CgoKZXh0ZXJu
IF9faW5saW5lIGludApnZXRjaGFyX3VubG9ja2VkICh2b2lkKQp7CiAgcmV0dXJuICgoc3RkaW4p
LT5fSU9fcmVhZF9wdHIgPj0gKHN0ZGluKS0+X0lPX3JlYWRfZW5kID8gX191ZmxvdyAoc3RkaW4p
IDogKih1bnNpZ25lZCBjaGFyICopIChzdGRpbiktPl9JT19yZWFkX3B0cisrKTsKfQoKCgoKZXh0
ZXJuIF9faW5saW5lIGludApwdXRjaGFyIChpbnQgX19jKQp7CiAgcmV0dXJuIF9JT19wdXRjIChf
X2MsIHN0ZG91dCk7Cn0KCgoKCmV4dGVybiBfX2lubGluZSBpbnQKZnB1dGNfdW5sb2NrZWQgKGlu
dCBfX2MsIEZJTEUgKl9fc3RyZWFtKQp7CiAgcmV0dXJuICgoKF9fc3RyZWFtKS0+X0lPX3dyaXRl
X3B0ciA+PSAoX19zdHJlYW0pLT5fSU9fd3JpdGVfZW5kKSA/IF9fb3ZlcmZsb3cgKF9fc3RyZWFt
LCAodW5zaWduZWQgY2hhcikgKF9fYykpIDogKHVuc2lnbmVkIGNoYXIpICgqKF9fc3RyZWFtKS0+
X0lPX3dyaXRlX3B0cisrID0gKF9fYykpKTsKfQoKCgoKCmV4dGVybiBfX2lubGluZSBpbnQKcHV0
Y191bmxvY2tlZCAoaW50IF9fYywgRklMRSAqX19zdHJlYW0pCnsKICByZXR1cm4gKCgoX19zdHJl
YW0pLT5fSU9fd3JpdGVfcHRyID49IChfX3N0cmVhbSktPl9JT193cml0ZV9lbmQpID8gX19vdmVy
ZmxvdyAoX19zdHJlYW0sICh1bnNpZ25lZCBjaGFyKSAoX19jKSkgOiAodW5zaWduZWQgY2hhcikg
KCooX19zdHJlYW0pLT5fSU9fd3JpdGVfcHRyKysgPSAoX19jKSkpOwp9CgoKZXh0ZXJuIF9faW5s
aW5lIGludApwdXRjaGFyX3VubG9ja2VkIChpbnQgX19jKQp7CiAgcmV0dXJuICgoKHN0ZG91dCkt
Pl9JT193cml0ZV9wdHIgPj0gKHN0ZG91dCktPl9JT193cml0ZV9lbmQpID8gX19vdmVyZmxvdyAo
c3Rkb3V0LCAodW5zaWduZWQgY2hhcikgKF9fYykpIDogKHVuc2lnbmVkIGNoYXIpICgqKHN0ZG91
dCktPl9JT193cml0ZV9wdHIrKyA9IChfX2MpKSk7Cn0KIyAxMTAgIi91c3IvaW5jbHVkZS9iaXRz
L3N0ZGlvLmgiIDMKZXh0ZXJuIF9faW5saW5lIGludApmZW9mX3VubG9ja2VkIChGSUxFICpfX3N0
cmVhbSkKewogIHJldHVybiAoKChfX3N0cmVhbSktPl9mbGFncyAmIDB4MTApICE9IDApOwp9CgoK
ZXh0ZXJuIF9faW5saW5lIGludApmZXJyb3JfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKQp7CiAg
cmV0dXJuICgoKF9fc3RyZWFtKS0+X2ZsYWdzICYgMHgyMCkgIT0gMCk7Cn0KIyA2MzEgIi91c3Iv
aW5jbHVkZS9zdGRpby5oIiAyIDMKIyA2NCAiL3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4wL2djYy90
c3lzdGVtLmgiIDIKCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMSAzCiMgMjYgIi91
c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAx
IDMKIyAyNyAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMKCgoKIyAxICIvdXNyL2luY2x1
ZGUvYml0cy90eXBlcy5oIiAxIDMKIyAzMSAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMK
Cgp0eXBlZGVmIF9fdV9jaGFyIHVfY2hhcjsKdHlwZWRlZiBfX3Vfc2hvcnQgdV9zaG9ydDsKdHlw
ZWRlZiBfX3VfaW50IHVfaW50Owp0eXBlZGVmIF9fdV9sb25nIHVfbG9uZzsKdHlwZWRlZiBfX3F1
YWRfdCBxdWFkX3Q7CnR5cGVkZWYgX191X3F1YWRfdCB1X3F1YWRfdDsKdHlwZWRlZiBfX2ZzaWRf
dCBmc2lkX3Q7CgoKdHlwZWRlZiBfX2xvZmZfdCBsb2ZmX3Q7CgoKCnR5cGVkZWYgX19pbm9fdCBp
bm9fdDsKIyA1OCAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAzCnR5cGVkZWYgX19kZXZfdCBk
ZXZfdDsKCgoKCnR5cGVkZWYgX19naWRfdCBnaWRfdDsKCgoKCnR5cGVkZWYgX19tb2RlX3QgbW9k
ZV90OwoKCgoKdHlwZWRlZiBfX25saW5rX3QgbmxpbmtfdDsKCgoKCnR5cGVkZWYgX191aWRfdCB1
aWRfdDsKIyA5NiAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAzCnR5cGVkZWYgX19waWRfdCBw
aWRfdDsKCgoKCnR5cGVkZWYgX19pZF90IGlkX3Q7CgoKCgp0eXBlZGVmIF9fc3NpemVfdCBzc2l6
ZV90OwoKCgoKdHlwZWRlZiBfX2RhZGRyX3QgZGFkZHJfdDsKdHlwZWRlZiBfX2NhZGRyX3QgY2Fk
ZHJfdDsKCgoKdHlwZWRlZiBfX2tleV90IGtleV90OwojIDEyNiAiL3Vzci9pbmNsdWRlL3N5cy90
eXBlcy5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMSAzCiMgNjggIi91c3IvaW5jbHVk
ZS90aW1lLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAxIDMKIyA2OSAiL3Vz
ci9pbmNsdWRlL3RpbWUuaCIgMiAzCgoKdHlwZWRlZiBfX3RpbWVfdCB0aW1lX3Q7CgoKCgoKCgoj
IDEgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDEgMwojIDgwICIvdXNyL2luY2x1ZGUvdGlt
ZS5oIiAyIDMKCgp0eXBlZGVmIF9fY2xvY2tpZF90IGNsb2NraWRfdDsKCgoKCgoKCiMgMSAiL3Vz
ci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMSAzCiMgOTEgIi91c3IvaW5jbHVkZS90aW1lLmgiIDIg
MwoKCnR5cGVkZWYgX190aW1lcl90IHRpbWVyX3Q7CiMgMTI3ICIvdXNyL2luY2x1ZGUvc3lzL3R5
cGVzLmgiIDIgMwojIDE0MCAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAzCiMgMSAiaW5jbHVk
ZS9zdGRkZWYuaCIgMSAzCiMgMTQxICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMwoKCgp0
eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IHVsb25nOwp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGlu
dCB1c2hvcnQ7CnR5cGVkZWYgdW5zaWduZWQgaW50IHVpbnQ7CiMgMTg0ICIvdXNyL2luY2x1ZGUv
c3lzL3R5cGVzLmgiIDMKdHlwZWRlZiBpbnQgaW50OF90IF9fYXR0cmlidXRlX18gKChfX21vZGVf
XyAoX19RSV9fKSkpOwp0eXBlZGVmIGludCBpbnQxNl90IF9fYXR0cmlidXRlX18gKChfX21vZGVf
XyAoX19ISV9fKSkpOwp0eXBlZGVmIGludCBpbnQzMl90IF9fYXR0cmlidXRlX18gKChfX21vZGVf
XyAoX19TSV9fKSkpOwp0eXBlZGVmIGludCBpbnQ2NF90IF9fYXR0cmlidXRlX18gKChfX21vZGVf
XyAoX19ESV9fKSkpOwoKCnR5cGVkZWYgdW5zaWduZWQgaW50IHVfaW50OF90IF9fYXR0cmlidXRl
X18gKChfX21vZGVfXyAoX19RSV9fKSkpOwp0eXBlZGVmIHVuc2lnbmVkIGludCB1X2ludDE2X3Qg
X19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX0hJX18pKSk7CnR5cGVkZWYgdW5zaWduZWQgaW50
IHVfaW50MzJfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fU0lfXykpKTsKdHlwZWRlZiB1
bnNpZ25lZCBpbnQgdV9pbnQ2NF90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19ESV9fKSkp
OwoKdHlwZWRlZiBpbnQgcmVnaXN0ZXJfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fd29y
ZF9fKSkpOwojIDIwNiAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAzCiMgMSAiL3Vzci9pbmNs
dWRlL2VuZGlhbi5oIiAxIDMKIyAyMiAiL3Vzci9pbmNsdWRlL2VuZGlhbi5oIiAzCiMgMSAiL3Vz
ci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDEgMwojIDIzICIvdXNyL2luY2x1ZGUvZW5kaWFuLmgiIDIg
MwojIDM3ICIvdXNyL2luY2x1ZGUvZW5kaWFuLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9l
bmRpYW4uaCIgMSAzCiMgMzggIi91c3IvaW5jbHVkZS9lbmRpYW4uaCIgMiAzCiMgMjA3ICIvdXNy
L2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMwoKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3Qu
aCIgMSAzCiMgMjUgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDMKIyAxICIvdXNyL2luY2x1
ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMjYgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDIgMwoK
CiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMSAzCiMgMjkgIi91c3IvaW5jbHVkZS9z
eXMvc2VsZWN0LmgiIDIgMwoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvc2VsZWN0LmgiIDEgMwoj
IDMyICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAyIDMKCgojIDEgIi91c3IvaW5jbHVkZS9i
aXRzL3NpZ3NldC5oIiAxIDMKIyAyMyAiL3Vzci9pbmNsdWRlL2JpdHMvc2lnc2V0LmgiIDMKdHlw
ZWRlZiBpbnQgX19zaWdfYXRvbWljX3Q7CgoKCgp0eXBlZGVmIHN0cnVjdAogIHsKICAgIHVuc2ln
bmVkIGxvbmcgaW50IF9fdmFsWygxMDI0IC8gKDggKiBzaXplb2YgKHVuc2lnbmVkIGxvbmcgaW50
KSkpXTsKICB9IF9fc2lnc2V0X3Q7CiMgMzUgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDIg
MwoKCgojIDEgIi91c3IvaW5jbHVkZS90aW1lLmgiIDEgMwojIDEwNSAiL3Vzci9pbmNsdWRlL3Rp
bWUuaCIgMwpzdHJ1Y3QgdGltZXNwZWMKICB7CiAgICBsb25nIGludCB0dl9zZWM7CiAgICBsb25n
IGludCB0dl9uc2VjOwogIH07CiMgMzkgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDIgMwoK
CgoKCgoKc3RydWN0IHRpbWV2YWw7Cgp0eXBlZGVmIF9fZmRfbWFzayBmZF9tYXNrOwoKCnR5cGVk
ZWYgX19mZF9zZXQgZmRfc2V0OwojIDc0ICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAzCmV4
dGVybiBpbnQgc2VsZWN0IChpbnQgX19uZmRzLCBfX2ZkX3NldCAqX19yZXN0cmljdCBfX3JlYWRm
ZHMsCiAgICAgICAgICAgICAgICAgICBfX2ZkX3NldCAqX19yZXN0cmljdCBfX3dyaXRlZmRzLAog
ICAgICAgICAgICAgICAgICAgX19mZF9zZXQgKl9fcmVzdHJpY3QgX19leGNlcHRmZHMsCiAgICAg
ICAgICAgICAgICAgICBzdHJ1Y3QgdGltZXZhbCAqX19yZXN0cmljdCBfX3RpbWVvdXQpIDsKIyAy
MTAgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzCgoKIyAxICIvdXNyL2luY2x1ZGUvc3lz
L3N5c21hY3Jvcy5oIiAxIDMKIyAyMTMgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzCiMg
MjI0ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMKdHlwZWRlZiBfX2Jsa2NudF90IGJsa2Nu
dF90OwoKCgp0eXBlZGVmIF9fZnNibGtjbnRfdCBmc2Jsa2NudF90OwoKCgp0eXBlZGVmIF9fZnNm
aWxjbnRfdCBmc2ZpbGNudF90OwojIDY3ICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAvZ2NjL3Rz
eXN0ZW0uaCIgMgoKCiMgMSAiL3Vzci9pbmNsdWRlL2Vycm5vLmgiIDEgMwojIDI5ICIvdXNyL2lu
Y2x1ZGUvZXJybm8uaCIgMwojIDEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAxIDMKIyAzMCAi
L3Vzci9pbmNsdWRlL2Vycm5vLmgiIDIgMwoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL2Vy
cm5vLmgiIDEgMwojIDI1ICIvdXNyL2luY2x1ZGUvYml0cy9lcnJuby5oIiAzCiMgMSAiL3Vzci9p
bmNsdWRlL2xpbnV4L2Vycm5vLmgiIDEgMwoKCgojIDEgIi91c3IvaW5jbHVkZS9hc20vZXJybm8u
aCIgMSAzCiMgNSAiL3Vzci9pbmNsdWRlL2xpbnV4L2Vycm5vLmgiIDIgMwojIDI2ICIvdXNyL2lu
Y2x1ZGUvYml0cy9lcnJuby5oIiAyIDMKIyAzNiAiL3Vzci9pbmNsdWRlL2JpdHMvZXJybm8uaCIg
MwpleHRlcm4gaW50IGVycm5vOwoKCmV4dGVybiBpbnQgKl9fZXJybm9fbG9jYXRpb24gKHZvaWQp
IF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKIyAzNyAiL3Vzci9pbmNsdWRlL2Vycm5vLmgi
IDIgMwojIDcwICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAvZ2NjL3RzeXN0ZW0uaCIgMgoKCgoK
CgojIDEgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMSAzCiMgMjYgIi91c3IvaW5jbHVkZS9zdHJp
bmcuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAxIDMKIyAyNyAiL3Vzci9pbmNs
dWRlL3N0cmluZy5oIiAyIDMKCgoKCgoKIyAxICJpbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAzNCAi
L3Vzci9pbmNsdWRlL3N0cmluZy5oIiAyIDMKCgoKZXh0ZXJuIHZvaWQgKm1lbWNweSAodm9pZCAq
X19yZXN0cmljdCBfX2Rlc3QsCiAgICAgICAgICAgICAgICAgICAgIF9fY29uc3Qgdm9pZCAqX19y
ZXN0cmljdCBfX3NyYywgc2l6ZV90IF9fbikgOwoKCmV4dGVybiB2b2lkICptZW1tb3ZlICh2b2lk
ICpfX2Rlc3QsIF9fY29uc3Qgdm9pZCAqX19zcmMsIHNpemVfdCBfX24pCiAgICAgICAgICAgIDsK
CgoKCgpleHRlcm4gdm9pZCAqbWVtY2NweSAodm9pZCAqX19yZXN0cmljdCBfX2Rlc3QsIF9fY29u
c3Qgdm9pZCAqX19yZXN0cmljdCBfX3NyYywKICAgICAgICAgICAgICAgICAgICAgIGludCBfX2Ms
IHNpemVfdCBfX24pCiAgICAgICAgICAgIDsKCgoKCmV4dGVybiB2b2lkICptZW1zZXQgKHZvaWQg
Kl9fcywgaW50IF9fYywgc2l6ZV90IF9fbikgOwoKCmV4dGVybiBpbnQgbWVtY21wIChfX2NvbnN0
IHZvaWQgKl9fczEsIF9fY29uc3Qgdm9pZCAqX19zMiwgc2l6ZV90IF9fbikKICAgICAgICAgICAg
IF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCmV4dGVybiB2b2lkICptZW1jaHIgKF9fY29u
c3Qgdm9pZCAqX19zLCBpbnQgX19jLCBzaXplX3QgX19uKQogICAgICAgICAgICAgIF9fYXR0cmli
dXRlX18gKChfX3B1cmVfXykpOwojIDc3ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMKZXh0ZXJu
IGNoYXIgKnN0cmNweSAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsIF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX3NyYykKICAgICAgICAgICAgOwoKZXh0ZXJuIGNoYXIgKnN0cm5jcHkgKGNoYXIg
Kl9fcmVzdHJpY3QgX19kZXN0LAogICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKSA7CgoKZXh0ZXJuIGNoYXIgKnN0cmNhdCAoY2hh
ciAqX19yZXN0cmljdCBfX2Rlc3QsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYykKICAg
ICAgICAgICAgOwoKZXh0ZXJuIGNoYXIgKnN0cm5jYXQgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0
LCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMsCiAgICAgICAgICAgICAgICAgICAgICBz
aXplX3QgX19uKSA7CgoKZXh0ZXJuIGludCBzdHJjbXAgKF9fY29uc3QgY2hhciAqX19zMSwgX19j
b25zdCBjaGFyICpfX3MyKQogICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7
CgpleHRlcm4gaW50IHN0cm5jbXAgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpf
X3MyLCBzaXplX3QgX19uKQogICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7
CgoKZXh0ZXJuIGludCBzdHJjb2xsIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAq
X19zMikKICAgICAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIHNp
emVfdCBzdHJ4ZnJtIChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwKICAgICAgICAgICAgICAgICAg
ICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24pIDsKIyAxMjAg
Ii91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMwpleHRlcm4gY2hhciAqc3RyZHVwIChfX2NvbnN0IGNo
YXIgKl9fcykgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsKIyAxNTUgIi91c3IvaW5jbHVk
ZS9zdHJpbmcuaCIgMwpleHRlcm4gY2hhciAqc3RyY2hyIChfX2NvbnN0IGNoYXIgKl9fcywgaW50
IF9fYykgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgpleHRlcm4gY2hhciAqc3RycmNociAo
X19jb25zdCBjaGFyICpfX3MsIGludCBfX2MpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoj
IDE2NyAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzCmV4dGVybiBzaXplX3Qgc3RyY3NwbiAoX19j
b25zdCBjaGFyICpfX3MsIF9fY29uc3QgY2hhciAqX19yZWplY3QpCiAgICAgICAgICAgICBfX2F0
dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpleHRlcm4gc2l6ZV90IHN0cnNwbiAoX19jb25zdCBj
aGFyICpfX3MsIF9fY29uc3QgY2hhciAqX19hY2NlcHQpCiAgICAgICAgICAgICBfX2F0dHJpYnV0
ZV9fICgoX19wdXJlX18pKTsKCmV4dGVybiBjaGFyICpzdHJwYnJrIChfX2NvbnN0IGNoYXIgKl9f
cywgX19jb25zdCBjaGFyICpfX2FjY2VwdCkKICAgICAgICAgICAgIF9fYXR0cmlidXRlX18gKChf
X3B1cmVfXykpOwoKZXh0ZXJuIGNoYXIgKnN0cnN0ciAoX19jb25zdCBjaGFyICpfX2hheXN0YWNr
LCBfX2NvbnN0IGNoYXIgKl9fbmVlZGxlKQogICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9f
cHVyZV9fKSk7CiMgMTg5ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMKZXh0ZXJuIGNoYXIgKnN0
cnRvayAoY2hhciAqX19yZXN0cmljdCBfX3MsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Rl
bGltKQogICAgICAgICAgICA7CgoKCmV4dGVybiBjaGFyICpfX3N0cnRva19yIChjaGFyICpfX3Jl
c3RyaWN0IF9fcywKICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX2RlbGltLAogICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3Qg
X19zYXZlX3B0cikgOwoKZXh0ZXJuIGNoYXIgKnN0cnRva19yIChjaGFyICpfX3Jlc3RyaWN0IF9f
cywgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZGVsaW0sCiAgICAgICAgICAgICAgICAgICAg
ICAgY2hhciAqKl9fcmVzdHJpY3QgX19zYXZlX3B0cikgOwojIDIyMCAiL3Vzci9pbmNsdWRlL3N0
cmluZy5oIiAzCmV4dGVybiBzaXplX3Qgc3RybGVuIChfX2NvbnN0IGNoYXIgKl9fcykgX19hdHRy
aWJ1dGVfXyAoKF9fcHVyZV9fKSk7CiMgMjMxICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMKZXh0
ZXJuIGNoYXIgKnN0cmVycm9yIChpbnQgX19lcnJudW0pIDsKCgoKZXh0ZXJuIGNoYXIgKl9fc3Ry
ZXJyb3JfciAoaW50IF9fZXJybnVtLCBjaGFyICpfX2J1Ziwgc2l6ZV90IF9fYnVmbGVuKSA7CmV4
dGVybiBjaGFyICpzdHJlcnJvcl9yIChpbnQgX19lcnJudW0sIGNoYXIgKl9fYnVmLCBzaXplX3Qg
X19idWZsZW4pIDsKCgoKCmV4dGVybiB2b2lkIF9fYnplcm8gKHZvaWQgKl9fcywgc2l6ZV90IF9f
bikgOwoKCgpleHRlcm4gdm9pZCBiY29weSAoX19jb25zdCB2b2lkICpfX3NyYywgdm9pZCAqX19k
ZXN0LCBzaXplX3QgX19uKSA7CgoKZXh0ZXJuIHZvaWQgYnplcm8gKHZvaWQgKl9fcywgc2l6ZV90
IF9fbikgOwoKCmV4dGVybiBpbnQgYmNtcCAoX19jb25zdCB2b2lkICpfX3MxLCBfX2NvbnN0IHZv
aWQgKl9fczIsIHNpemVfdCBfX24pCiAgICAgICAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJl
X18pKTsKCgpleHRlcm4gY2hhciAqaW5kZXggKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19jKSBf
X2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpleHRlcm4gY2hhciAqcmluZGV4IChfX2NvbnN0
IGNoYXIgKl9fcywgaW50IF9fYykgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKCmV4dGVy
biBpbnQgX19mZnMgKGludCBfX2kpIF9fYXR0cmlidXRlX18gKChjb25zdCkpOwpleHRlcm4gaW50
IGZmcyAoaW50IF9faSkgX19hdHRyaWJ1dGVfXyAoKGNvbnN0KSk7CiMgMjc2ICIvdXNyL2luY2x1
ZGUvc3RyaW5nLmgiIDMKZXh0ZXJuIGludCBfX3N0cmNhc2VjbXAgKF9fY29uc3QgY2hhciAqX19z
MSwgX19jb25zdCBjaGFyICpfX3MyKQogICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVy
ZV9fKSk7CmV4dGVybiBpbnQgc3RyY2FzZWNtcCAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0
IGNoYXIgKl9fczIpCiAgICAgICAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpl
eHRlcm4gaW50IHN0cm5jYXNlY21wIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAq
X19zMiwgc2l6ZV90IF9fbikKICAgICAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykp
OwojIDMwMCAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzCmV4dGVybiBjaGFyICpzdHJzZXAgKGNo
YXIgKipfX3Jlc3RyaWN0IF9fc3RyaW5ncCwKICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBj
aGFyICpfX3Jlc3RyaWN0IF9fZGVsaW0pIDsKIyAzNjIgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIg
MwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZy5oIiAxIDMKIyAzNjMgIi91c3IvaW5jbHVk
ZS9zdHJpbmcuaCIgMiAzCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDEgMwoj
IDUyICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZW5k
aWFuLmgiIDEgMwojIDUzICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDIgMwojIDEgIi91
c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDEgMwojIDU0ICIvdXNyL2luY2x1ZGUvYml0cy9zdHJp
bmcyLmgiIDIgMwojIDM3MSAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCmV4dGVybiB2
b2lkICpfX3Jhd21lbWNociAoY29uc3Qgdm9pZCAqX19zLCBpbnQgX19jKTsKIyAzOTUgIi91c3Iv
aW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwpleHRlcm4gX19pbmxpbmUgY2hhciAqX19zdHJjcHlf
c21hbGwgKGNoYXIgKiwgX191aW50MTZfdCwgX191aW50MTZfdCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBfX3VpbnQzMl90LCBfX3VpbnQzMl90LCBzaXplX3QpOwpleHRl
cm4gX19pbmxpbmUgY2hhciAqCl9fc3RyY3B5X3NtYWxsIChjaGFyICpfX2Rlc3QsCiAgICAgICAg
ICAgICAgICBfX3VpbnQxNl90IF9fc3JjMF8yLCBfX3VpbnQxNl90IF9fc3JjNF8yLAogICAgICAg
ICAgICAgICAgX191aW50MzJfdCBfX3NyYzBfNCwgX191aW50MzJfdCBfX3NyYzRfNCwKICAgICAg
ICAgICAgICAgIHNpemVfdCBfX3NyY2xlbikKewogIHVuaW9uIHsKICAgIF9fdWludDMyX3QgX191
aTsKICAgIF9fdWludDE2X3QgX191c2k7CiAgICB1bnNpZ25lZCBjaGFyIF9fdWM7CiAgfSAqX191
ID0gKHZvaWQgKikgX19kZXN0OwogIHN3aXRjaCAoKHVuc2lnbmVkIGludCkgX19zcmNsZW4pCiAg
ICB7CiAgICBjYXNlIDE6CiAgICAgIF9fdS0+X191YyA9ICdcMCc7CiAgICAgIGJyZWFrOwogICAg
Y2FzZSAyOgogICAgICBfX3UtPl9fdXNpID0gX19zcmMwXzI7CiAgICAgIGJyZWFrOwogICAgY2Fz
ZSAzOgogICAgICBfX3UtPl9fdXNpID0gX19zcmMwXzI7CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9u
X18gKCh2b2lkICopIF9fdSArIDIpOwogICAgICBfX3UtPl9fdWMgPSAnXDAnOwogICAgICBicmVh
azsKICAgIGNhc2UgNDoKICAgICAgX191LT5fX3VpID0gX19zcmMwXzQ7CiAgICAgIGJyZWFrOwog
ICAgY2FzZSA1OgogICAgICBfX3UtPl9fdWkgPSBfX3NyYzBfNDsKICAgICAgX191ID0gX19leHRl
bnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7CiAgICAgIF9fdS0+X191YyA9ICdcMCc7CiAgICAg
IGJyZWFrOwogICAgY2FzZSA2OgogICAgICBfX3UtPl9fdWkgPSBfX3NyYzBfNDsKICAgICAgX191
ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7CiAgICAgIF9fdS0+X191c2kgPSBf
X3NyYzRfMjsKICAgICAgYnJlYWs7CiAgICBjYXNlIDc6CiAgICAgIF9fdS0+X191aSA9IF9fc3Jj
MF80OwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsKICAgICAg
X191LT5fX3VzaSA9IF9fc3JjNF8yOwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAq
KSBfX3UgKyAyKTsKICAgICAgX191LT5fX3VjID0gJ1wwJzsKICAgICAgYnJlYWs7CiAgICBjYXNl
IDg6CiAgICAgIF9fdS0+X191aSA9IF9fc3JjMF80OwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9f
ICgodm9pZCAqKSBfX3UgKyA0KTsKICAgICAgX191LT5fX3VpID0gX19zcmM0XzQ7CiAgICAgIGJy
ZWFrOwogICAgfQogIHJldHVybiBfX2Rlc3Q7Cn0KIyA4NzIgIi91c3IvaW5jbHVkZS9iaXRzL3N0
cmluZzIuaCIgMwpleHRlcm4gX19pbmxpbmUgc2l6ZV90IF9fc3RyY3Nwbl9jMSAoX19jb25zdCBj
aGFyICpfX3MsIGNoYXIgX19yZWplY3QpOwpleHRlcm4gX19pbmxpbmUgc2l6ZV90Cl9fc3RyY3Nw
bl9jMSAoX19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19yZWplY3QpCnsKICByZWdpc3RlciBzaXpl
X3QgX19yZXN1bHQgPSAwOwogIHdoaWxlIChfX3NbX19yZXN1bHRdICE9ICdcMCcgJiYgX19zW19f
cmVzdWx0XSAhPSBfX3JlamVjdCkKICAgICsrX19yZXN1bHQ7CiAgcmV0dXJuIF9fcmVzdWx0Owp9
CgpleHRlcm4gX19pbmxpbmUgc2l6ZV90IF9fc3RyY3Nwbl9jMiAoX19jb25zdCBjaGFyICpfX3Ms
IGNoYXIgX19yZWplY3QxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hh
ciBfX3JlamVjdDIpOwpleHRlcm4gX19pbmxpbmUgc2l6ZV90Cl9fc3RyY3Nwbl9jMiAoX19jb25z
dCBjaGFyICpfX3MsIGNoYXIgX19yZWplY3QxLCBjaGFyIF9fcmVqZWN0MikKewogIHJlZ2lzdGVy
IHNpemVfdCBfX3Jlc3VsdCA9IDA7CiAgd2hpbGUgKF9fc1tfX3Jlc3VsdF0gIT0gJ1wwJyAmJiBf
X3NbX19yZXN1bHRdICE9IF9fcmVqZWN0MQogICAgICAgICAmJiBfX3NbX19yZXN1bHRdICE9IF9f
cmVqZWN0MikKICAgICsrX19yZXN1bHQ7CiAgcmV0dXJuIF9fcmVzdWx0Owp9CgpleHRlcm4gX19p
bmxpbmUgc2l6ZV90IF9fc3RyY3Nwbl9jMyAoX19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19yZWpl
Y3QxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBfX3JlamVjdDIs
IGNoYXIgX19yZWplY3QzKTsKZXh0ZXJuIF9faW5saW5lIHNpemVfdApfX3N0cmNzcG5fYzMgKF9f
Y29uc3QgY2hhciAqX19zLCBjaGFyIF9fcmVqZWN0MSwgY2hhciBfX3JlamVjdDIsCiAgICAgICAg
ICAgICAgY2hhciBfX3JlamVjdDMpCnsKICByZWdpc3RlciBzaXplX3QgX19yZXN1bHQgPSAwOwog
IHdoaWxlIChfX3NbX19yZXN1bHRdICE9ICdcMCcgJiYgX19zW19fcmVzdWx0XSAhPSBfX3JlamVj
dDEKICAgICAgICAgJiYgX19zW19fcmVzdWx0XSAhPSBfX3JlamVjdDIgJiYgX19zW19fcmVzdWx0
XSAhPSBfX3JlamVjdDMpCiAgICArK19fcmVzdWx0OwogIHJldHVybiBfX3Jlc3VsdDsKfQojIDky
NyAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCmV4dGVybiBfX2lubGluZSBzaXplX3Qg
X19zdHJzcG5fYzEgKF9fY29uc3QgY2hhciAqX19zLCBjaGFyIF9fYWNjZXB0KTsKZXh0ZXJuIF9f
aW5saW5lIHNpemVfdApfX3N0cnNwbl9jMSAoX19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19hY2Nl
cHQpCnsKICByZWdpc3RlciBzaXplX3QgX19yZXN1bHQgPSAwOwoKICB3aGlsZSAoX19zW19fcmVz
dWx0XSA9PSBfX2FjY2VwdCkKICAgICsrX19yZXN1bHQ7CiAgcmV0dXJuIF9fcmVzdWx0Owp9Cgpl
eHRlcm4gX19pbmxpbmUgc2l6ZV90IF9fc3Ryc3BuX2MyIChfX2NvbnN0IGNoYXIgKl9fcywgY2hh
ciBfX2FjY2VwdDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgX19h
Y2NlcHQyKTsKZXh0ZXJuIF9faW5saW5lIHNpemVfdApfX3N0cnNwbl9jMiAoX19jb25zdCBjaGFy
ICpfX3MsIGNoYXIgX19hY2NlcHQxLCBjaGFyIF9fYWNjZXB0MikKewogIHJlZ2lzdGVyIHNpemVf
dCBfX3Jlc3VsdCA9IDA7CgogIHdoaWxlIChfX3NbX19yZXN1bHRdID09IF9fYWNjZXB0MSB8fCBf
X3NbX19yZXN1bHRdID09IF9fYWNjZXB0MikKICAgICsrX19yZXN1bHQ7CiAgcmV0dXJuIF9fcmVz
dWx0Owp9CgpleHRlcm4gX19pbmxpbmUgc2l6ZV90IF9fc3Ryc3BuX2MzIChfX2NvbnN0IGNoYXIg
Kl9fcywgY2hhciBfX2FjY2VwdDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNoYXIgX19hY2NlcHQyLCBjaGFyIF9fYWNjZXB0Myk7CmV4dGVybiBfX2lubGluZSBzaXplX3QK
X19zdHJzcG5fYzMgKF9fY29uc3QgY2hhciAqX19zLCBjaGFyIF9fYWNjZXB0MSwgY2hhciBfX2Fj
Y2VwdDIsIGNoYXIgX19hY2NlcHQzKQp7CiAgcmVnaXN0ZXIgc2l6ZV90IF9fcmVzdWx0ID0gMDsK
CiAgd2hpbGUgKF9fc1tfX3Jlc3VsdF0gPT0gX19hY2NlcHQxIHx8IF9fc1tfX3Jlc3VsdF0gPT0g
X19hY2NlcHQyCiAgICAgICAgIHx8IF9fc1tfX3Jlc3VsdF0gPT0gX19hY2NlcHQzKQogICAgKytf
X3Jlc3VsdDsKICByZXR1cm4gX19yZXN1bHQ7Cn0KIyA5ODIgIi91c3IvaW5jbHVkZS9iaXRzL3N0
cmluZzIuaCIgMwpleHRlcm4gX19pbmxpbmUgY2hhciAqX19zdHJwYnJrX2MyIChfX2NvbnN0IGNo
YXIgKl9fcywgY2hhciBfX2FjY2VwdDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjaGFyIF9fYWNjZXB0Mik7CmV4dGVybiBfX2lubGluZSBjaGFyICoKX19zdHJwYnJrX2My
IChfX2NvbnN0IGNoYXIgKl9fcywgY2hhciBfX2FjY2VwdDEsIGNoYXIgX19hY2NlcHQyKQp7Cgog
IHdoaWxlICgqX19zICE9ICdcMCcgJiYgKl9fcyAhPSBfX2FjY2VwdDEgJiYgKl9fcyAhPSBfX2Fj
Y2VwdDIpCiAgICArK19fczsKICByZXR1cm4gKl9fcyA9PSAnXDAnID8gKCh2b2lkICopMCkgOiAo
Y2hhciAqKSAoc2l6ZV90KSBfX3M7Cn0KCmV4dGVybiBfX2lubGluZSBjaGFyICpfX3N0cnBicmtf
YzMgKF9fY29uc3QgY2hhciAqX19zLCBjaGFyIF9fYWNjZXB0MSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNoYXIgX19hY2NlcHQyLCBjaGFyIF9fYWNjZXB0Myk7CmV4dGVy
biBfX2lubGluZSBjaGFyICoKX19zdHJwYnJrX2MzIChfX2NvbnN0IGNoYXIgKl9fcywgY2hhciBf
X2FjY2VwdDEsIGNoYXIgX19hY2NlcHQyLAogICAgICAgICAgICAgIGNoYXIgX19hY2NlcHQzKQp7
CgogIHdoaWxlICgqX19zICE9ICdcMCcgJiYgKl9fcyAhPSBfX2FjY2VwdDEgJiYgKl9fcyAhPSBf
X2FjY2VwdDIKICAgICAgICAgJiYgKl9fcyAhPSBfX2FjY2VwdDMpCiAgICArK19fczsKICByZXR1
cm4gKl9fcyA9PSAnXDAnID8gKCh2b2lkICopMCkgOiAoY2hhciAqKSAoc2l6ZV90KSBfX3M7Cn0K
IyAxMDQzICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMKZXh0ZXJuIF9faW5saW5lIGNo
YXIgKl9fc3RydG9rX3JfMWMgKGNoYXIgKl9fcywgY2hhciBfX3NlcCwgY2hhciAqKl9fbmV4dHAp
OwpleHRlcm4gX19pbmxpbmUgY2hhciAqCl9fc3RydG9rX3JfMWMgKGNoYXIgKl9fcywgY2hhciBf
X3NlcCwgY2hhciAqKl9fbmV4dHApCnsKICBjaGFyICpfX3Jlc3VsdDsKICBpZiAoX19zID09ICgo
dm9pZCAqKTApKQogICAgX19zID0gKl9fbmV4dHA7CiAgd2hpbGUgKCpfX3MgPT0gX19zZXApCiAg
ICArK19fczsKICBpZiAoKl9fcyA9PSAnXDAnKQogICAgX19yZXN1bHQgPSAoKHZvaWQgKikwKTsK
ICBlbHNlCiAgICB7CiAgICAgIF9fcmVzdWx0ID0gX19zOwogICAgICB3aGlsZSAoKl9fcyAhPSAn
XDAnICYmICpfX3MgIT0gX19zZXApCiAgICAgICAgKytfX3M7CiAgICAgIGlmICgqX19zID09ICdc
MCcpCiAgICAgICAgKl9fbmV4dHAgPSBfX3M7CiAgICAgIGVsc2UKICAgICAgICB7CiAgICAgICAg
ICAqX19zID0gJ1wwJzsKICAgICAgICAgICpfX25leHRwID0gX19zICsgMTsKICAgICAgICB9CiAg
ICB9CiAgcmV0dXJuIF9fcmVzdWx0Owp9CiMgMTA5MyAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5n
Mi5oIiAzCmV4dGVybiBfX2lubGluZSBjaGFyICpfX3N0cnNlcF8xYyAoY2hhciAqKl9fcywgY2hh
ciBfX3JlamVjdCk7CmV4dGVybiBfX2lubGluZSBjaGFyICoKX19zdHJzZXBfMWMgKGNoYXIgKipf
X3MsIGNoYXIgX19yZWplY3QpCnsKICByZWdpc3RlciBjaGFyICpfX3JldHZhbCA9ICpfX3M7CiAg
aWYgKF9fcmV0dmFsID09ICgodm9pZCAqKTApKQogICAgcmV0dXJuICpfX3MgPSAoKHZvaWQgKikw
KTsKICBpZiAoKl9fcmV0dmFsID09IF9fcmVqZWN0KQogICAgKigqX19zKSsrID0gJ1wwJzsKICBl
bHNlCiAgICBpZiAoKCpfX3MgPSAoX19leHRlbnNpb25fXyAoX19idWlsdGluX2NvbnN0YW50X3Ag
KF9fcmVqZWN0KSAmJiAoX19yZWplY3QpID09ICdcMCcgPyAoY2hhciAqKSBfX3Jhd21lbWNociAo
X19yZXR2YWwsIF9fcmVqZWN0KSA6IHN0cmNociAoX19yZXR2YWwsIF9fcmVqZWN0KSkpKSAhPSAo
KHZvaWQgKikwKSkKICAgICAgKigqX19zKSsrID0gJ1wwJzsKICAgIGVsc2UKICAgICAgKl9fcyA9
ICgodm9pZCAqKTApOwogIHJldHVybiBfX3JldHZhbDsKfQoKZXh0ZXJuIF9faW5saW5lIGNoYXIg
Kl9fc3Ryc2VwXzJjIChjaGFyICoqX19zLCBjaGFyIF9fcmVqZWN0MSwgY2hhciBfX3JlamVjdDIp
OwpleHRlcm4gX19pbmxpbmUgY2hhciAqCl9fc3Ryc2VwXzJjIChjaGFyICoqX19zLCBjaGFyIF9f
cmVqZWN0MSwgY2hhciBfX3JlamVjdDIpCnsKICByZWdpc3RlciBjaGFyICpfX3JldHZhbCA9ICpf
X3M7CiAgaWYgKF9fcmV0dmFsID09ICgodm9pZCAqKTApKQogICAgcmV0dXJuICpfX3MgPSAoKHZv
aWQgKikwKTsKICBpZiAoKl9fcmV0dmFsID09IF9fcmVqZWN0MSB8fCAqX19yZXR2YWwgPT0gX19y
ZWplY3QyKQogICAgKigqX19zKSsrID0gJ1wwJzsKICBlbHNlCiAgICB7CiAgICAgIHJlZ2lzdGVy
IGNoYXIgKl9fY3AgPSBfX3JldHZhbDsKICAgICAgd2hpbGUgKCpfX2NwICE9ICdcMCcgJiYgKl9f
Y3AgIT0gX19yZWplY3QxICYmICpfX2NwICE9IF9fcmVqZWN0MikKICAgICAgICArK19fY3A7CiAg
ICAgIGlmICgqX19jcCAhPSAnXDAnKQogICAgICAgIHsKICAgICAgICAgICpfX3MgPSBfX2NwOwog
ICAgICAgICAgKigqX19zKSsrID0gJ1wwJzsKICAgICAgICB9CiAgICAgIGVsc2UKICAgICAgICAq
X19zID0gKCh2b2lkICopMCk7CiAgICB9CiAgcmV0dXJuIF9fcmV0dmFsOwp9CgpleHRlcm4gX19p
bmxpbmUgY2hhciAqX19zdHJzZXBfM2MgKGNoYXIgKipfX3MsIGNoYXIgX19yZWplY3QxLCBjaGFy
IF9fcmVqZWN0MiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIF9fcmVq
ZWN0Myk7CmV4dGVybiBfX2lubGluZSBjaGFyICoKX19zdHJzZXBfM2MgKGNoYXIgKipfX3MsIGNo
YXIgX19yZWplY3QxLCBjaGFyIF9fcmVqZWN0MiwgY2hhciBfX3JlamVjdDMpCnsKICByZWdpc3Rl
ciBjaGFyICpfX3JldHZhbCA9ICpfX3M7CiAgaWYgKF9fcmV0dmFsID09ICgodm9pZCAqKTApKQog
ICAgcmV0dXJuICpfX3MgPSAoKHZvaWQgKikwKTsKICBpZiAoKl9fcmV0dmFsID09IF9fcmVqZWN0
MSB8fCAqX19yZXR2YWwgPT0gX19yZWplY3QyCiAgICAgIHx8ICpfX3JldHZhbCA9PSBfX3JlamVj
dDMpCiAgICAqKCpfX3MpKysgPSAnXDAnOwogIGVsc2UKICAgIHsKICAgICAgcmVnaXN0ZXIgY2hh
ciAqX19jcCA9IF9fcmV0dmFsOwogICAgICB3aGlsZSAoKl9fY3AgIT0gJ1wwJyAmJiAqX19jcCAh
PSBfX3JlamVjdDEgJiYgKl9fY3AgIT0gX19yZWplY3QyCiAgICAgICAgICAgICAmJiAqX19jcCAh
PSBfX3JlamVjdDMpCiAgICAgICAgKytfX2NwOwogICAgICBpZiAoKl9fY3AgIT0gJ1wwJykKICAg
ICAgICB7CiAgICAgICAgICAqX19zID0gX19jcDsKICAgICAgICAgICooKl9fcykrKyA9ICdcMCc7
CiAgICAgICAgfQogICAgICBlbHNlCiAgICAgICAgKl9fcyA9ICgodm9pZCAqKTApOwogICAgfQog
IHJldHVybiBfX3JldHZhbDsKfQoKZXh0ZXJuIF9faW5saW5lIGNoYXIgKl9fc3Ryc2VwX2cgKGNo
YXIgKipfX3MsIF9fY29uc3QgY2hhciAqX19yZWplY3QpOwpleHRlcm4gX19pbmxpbmUgY2hhciAq
Cl9fc3Ryc2VwX2cgKGNoYXIgKipfX3MsIF9fY29uc3QgY2hhciAqX19yZWplY3QpCnsKICByZWdp
c3RlciBjaGFyICpfX3JldHZhbCA9ICpfX3M7CiAgaWYgKF9fcmV0dmFsID09ICgodm9pZCAqKTAp
KQogICAgcmV0dXJuICgodm9pZCAqKTApOwogIGlmICgoKl9fcyA9IF9fZXh0ZW5zaW9uX18gKHsg
Y2hhciBfX2EwLCBfX2ExLCBfX2EyOyAoX19idWlsdGluX2NvbnN0YW50X3AgKF9fcmVqZWN0KSAm
JiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoX19yZWplY3QpICsgMSkgLSAoc2l6ZV90KShjb25z
dCB2b2lkICopKF9fcmVqZWN0KSA9PSAxKSA/ICgoX19hMCA9ICgoX19jb25zdCBjaGFyICopIChf
X3JlamVjdCkpWzBdLCBfX2EwID09ICdcMCcpID8gKCh2b2lkICopMCkgOiAoKF9fYTEgPSAoKF9f
Y29uc3QgY2hhciAqKSAoX19yZWplY3QpKVsxXSwgX19hMSA9PSAnXDAnKSA/IChfX2V4dGVuc2lv
bl9fIChfX2J1aWx0aW5fY29uc3RhbnRfcCAoX19hMCkgJiYgKF9fYTApID09ICdcMCcgPyAoY2hh
ciAqKSBfX3Jhd21lbWNociAoX19yZXR2YWwsIF9fYTApIDogc3RyY2hyIChfX3JldHZhbCwgX19h
MCkpKSA6ICgoX19hMiA9ICgoX19jb25zdCBjaGFyICopIChfX3JlamVjdCkpWzJdLCBfX2EyID09
ICdcMCcpID8gX19zdHJwYnJrX2MyIChfX3JldHZhbCwgX19hMCwgX19hMSkgOiAoKChfX2NvbnN0
IGNoYXIgKikgKF9fcmVqZWN0KSlbM10gPT0gJ1wwJyA/IF9fc3RycGJya19jMyAoX19yZXR2YWws
IF9fYTAsIF9fYTEsIF9fYTIpIDogc3RycGJyayAoX19yZXR2YWwsIF9fcmVqZWN0KSkpKSkgOiBz
dHJwYnJrIChfX3JldHZhbCwgX19yZWplY3QpKTsgfSkpICE9ICgodm9pZCAqKTApKQogICAgKigq
X19zKSsrID0gJ1wwJzsKICByZXR1cm4gX19yZXR2YWw7Cn0KIyAxMTg2ICIvdXNyL2luY2x1ZGUv
Yml0cy9zdHJpbmcyLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDEgMwojIDI1ICIv
dXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAz
CiMgMjYgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAzCgoKCgoKCgojIDEgImluY2x1ZGUvc3Rk
ZGVmLmgiIDEgMwojIDM0ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDIgMwojIDUyNiAiL3Vzci9p
bmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVybiB2b2lkICptYWxsb2MgKHNpemVfdCBfX3NpemUpIF9f
YXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CgpleHRlcm4gdm9pZCAqY2FsbG9jIChzaXplX3Qg
X19ubWVtYiwgc2l6ZV90IF9fc2l6ZSkKICAgICAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX21h
bGxvY19fKSk7CiMgMTE4NyAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAyIDMKCgoKCmV4
dGVybiBjaGFyICpfX3N0cmR1cCAoX19jb25zdCBjaGFyICpfX3N0cmluZykgX19hdHRyaWJ1dGVf
XyAoKF9fbWFsbG9jX18pKTsKIyAxMjEwICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMK
ZXh0ZXJuIGNoYXIgKl9fc3RybmR1cCAoX19jb25zdCBjaGFyICpfX3N0cmluZywgc2l6ZV90IF9f
bikKICAgICAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CiMgMzY2ICIvdXNy
L2luY2x1ZGUvc3RyaW5nLmgiIDIgMwojIDc3ICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAvZ2Nj
L3RzeXN0ZW0uaCIgMgoKCgojIDEgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMSAzCiMgMjUgIi91
c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAxIDMK
IyAyNiAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAyIDMKCgoKCgoKCiMgMSAiaW5jbHVkZS9zdGRk
ZWYuaCIgMSAzCiMgMzQgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAzCiMgOTQgIi91c3IvaW5j
bHVkZS9zdGRsaWIuaCIgMwp0eXBlZGVmIHN0cnVjdAogIHsKICAgIGludCBxdW90OwogICAgaW50
IHJlbTsKICB9IGRpdl90OwoKCgp0eXBlZGVmIHN0cnVjdAogIHsKICAgIGxvbmcgaW50IHF1b3Q7
CiAgICBsb25nIGludCByZW07CiAgfSBsZGl2X3Q7CiMgMTMzICIvdXNyL2luY2x1ZGUvc3RkbGli
LmgiIDMKZXh0ZXJuIHNpemVfdCBfX2N0eXBlX2dldF9tYl9jdXJfbWF4ICh2b2lkKSA7CgoKCmV4
dGVybiBkb3VibGUgYXRvZiAoX19jb25zdCBjaGFyICpfX25wdHIpIF9fYXR0cmlidXRlX18gKChf
X3B1cmVfXykpOwoKZXh0ZXJuIGludCBhdG9pIChfX2NvbnN0IGNoYXIgKl9fbnB0cikgX19hdHRy
aWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgpleHRlcm4gbG9uZyBpbnQgYXRvbCAoX19jb25zdCBjaGFy
ICpfX25wdHIpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgpfX2V4dGVuc2lvbl9fIGV4
dGVybiBsb25nIGxvbmcgaW50IGF0b2xsIChfX2NvbnN0IGNoYXIgKl9fbnB0cikKICAgICAgICAg
ICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgpleHRlcm4gZG91YmxlIHN0cnRvZCAo
X19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgIGNo
YXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyKSA7CiMgMTYzICIvdXNyL2luY2x1ZGUvc3RkbGliLmgi
IDMKZXh0ZXJuIGxvbmcgaW50IHN0cnRvbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0
ciwKICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGlu
dCBfX2Jhc2UpIDsKCmV4dGVybiB1bnNpZ25lZCBsb25nIGludCBzdHJ0b3VsIChfX2NvbnN0IGNo
YXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpCiAgICAgICAgICAgIDsKCgoK
X19leHRlbnNpb25fXwpleHRlcm4gbG9uZyBsb25nIGludCBzdHJ0b3EgKF9fY29uc3QgY2hhciAq
X19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9f
cmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpIDsKCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIHVu
c2lnbmVkIGxvbmcgbG9uZyBpbnQgc3RydG91cSAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f
bnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVz
dHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpCiAgICAgICAgICAgIDsKCgoKCgoKX19leHRlbnNp
b25fXwpleHRlcm4gbG9uZyBsb25nIGludCBzdHJ0b2xsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJp
Y3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmlj
dCBfX2VuZHB0ciwgaW50IF9fYmFzZSkgOwoKX19leHRlbnNpb25fXwpleHRlcm4gdW5zaWduZWQg
bG9uZyBsb25nIGludCBzdHJ0b3VsbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0
IF9fZW5kcHRyLCBpbnQgX19iYXNlKQogICAgICAgICAgICA7CiMgMjUwICIvdXNyL2luY2x1ZGUv
c3RkbGliLmgiIDMKZXh0ZXJuIGRvdWJsZSBfX3N0cnRvZF9pbnRlcm5hbCAoX19jb25zdCBjaGFy
ICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hh
ciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2dyb3VwKQogICAgICAgICAgICA7CmV4dGVy
biBmbG9hdCBfX3N0cnRvZl9pbnRlcm5hbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0
ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2Vu
ZHB0ciwgaW50IF9fZ3JvdXApCiAgICAgICAgICAgIDsKZXh0ZXJuIGxvbmcgZG91YmxlIF9fc3Ry
dG9sZF9pbnRlcm5hbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX2dyb3VwKSA7Cgpl
eHRlcm4gbG9uZyBpbnQgX19zdHJ0b2xfaW50ZXJuYWwgKF9fY29uc3QgY2hhciAqX19yZXN0cmlj
dCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVz
dHJpY3QgX19lbmRwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9f
YmFzZSwgaW50IF9fZ3JvdXApIDsKCgoKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgaW50IF9fc3RydG91
bF9pbnRlcm5hbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRw
dHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX2Jh
c2UsIGludCBfX2dyb3VwKSA7CgoKCgpfX2V4dGVuc2lvbl9fCmV4dGVybiBsb25nIGxvbmcgaW50
IF9fc3RydG9sbF9pbnRlcm5hbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBf
X2VuZHB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19i
YXNlLCBpbnQgX19ncm91cCkgOwoKCgpfX2V4dGVuc2lvbl9fCmV4dGVybiB1bnNpZ25lZCBsb25n
IGxvbmcgaW50IF9fc3RydG91bGxfaW50ZXJuYWwgKF9fY29uc3QgY2hhciAqCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVzdHJpY3QgX19ucHRy
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFy
ICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50IF9fYmFzZSwgaW50IF9fZ3JvdXApCiAgICAgICAgICAgIDsK
IyAyOTQgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gX19pbmxpbmUgZG91YmxlCnN0
cnRvZCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3Qg
X19lbmRwdHIpCnsKICByZXR1cm4gX19zdHJ0b2RfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIs
IDApOwp9CmV4dGVybiBfX2lubGluZSBsb25nIGludApzdHJ0b2wgKF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAgIGludCBf
X2Jhc2UpCnsKICByZXR1cm4gX19zdHJ0b2xfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIsIF9f
YmFzZSwgMCk7Cn0KZXh0ZXJuIF9faW5saW5lIHVuc2lnbmVkIGxvbmcgaW50CnN0cnRvdWwgKF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRy
LAogICAgICAgICBpbnQgX19iYXNlKQp7CiAgcmV0dXJuIF9fc3RydG91bF9pbnRlcm5hbCAoX19u
cHRyLCBfX2VuZHB0ciwgX19iYXNlLCAwKTsKfQojIDMyNiAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5o
IiAzCl9fZXh0ZW5zaW9uX18gZXh0ZXJuIF9faW5saW5lIGxvbmcgbG9uZyBpbnQKc3RydG9xIChf
X2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0
ciwKICAgICAgICBpbnQgX19iYXNlKQp7CiAgcmV0dXJuIF9fc3RydG9sbF9pbnRlcm5hbCAoX19u
cHRyLCBfX2VuZHB0ciwgX19iYXNlLCAwKTsKfQpfX2V4dGVuc2lvbl9fIGV4dGVybiBfX2lubGlu
ZSB1bnNpZ25lZCBsb25nIGxvbmcgaW50CnN0cnRvdXEgKF9fY29uc3QgY2hhciAqX19yZXN0cmlj
dCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAgICBpbnQgX19iYXNl
KQp7CiAgcmV0dXJuIF9fc3RydG91bGxfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIsIF9fYmFz
ZSwgMCk7Cn0KCgoKX19leHRlbnNpb25fXyBleHRlcm4gX19pbmxpbmUgbG9uZyBsb25nIGludApz
dHJ0b2xsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmlj
dCBfX2VuZHB0ciwKICAgICAgICAgaW50IF9fYmFzZSkKewogIHJldHVybiBfX3N0cnRvbGxfaW50
ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIsIF9fYmFzZSwgMCk7Cn0KX19leHRlbnNpb25fXyBleHRl
cm4gX19pbmxpbmUgdW5zaWduZWQgbG9uZyBsb25nIGludApzdHJ0b3VsbCAoX19jb25zdCBjaGFy
ICogX19yZXN0cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAg
ICAgaW50IF9fYmFzZSkKewogIHJldHVybiBfX3N0cnRvdWxsX2ludGVybmFsIChfX25wdHIsIF9f
ZW5kcHRyLCBfX2Jhc2UsIDApOwp9CgoKZXh0ZXJuIF9faW5saW5lIGRvdWJsZQphdG9mIChfX2Nv
bnN0IGNoYXIgKl9fbnB0cikKewogIHJldHVybiBzdHJ0b2QgKF9fbnB0ciwgKGNoYXIgKiopICgo
dm9pZCAqKTApKTsKfQpleHRlcm4gX19pbmxpbmUgaW50CmF0b2kgKF9fY29uc3QgY2hhciAqX19u
cHRyKQp7CiAgcmV0dXJuIChpbnQpIHN0cnRvbCAoX19ucHRyLCAoY2hhciAqKikgKCh2b2lkICop
MCksIDEwKTsKfQpleHRlcm4gX19pbmxpbmUgbG9uZyBpbnQKYXRvbCAoX19jb25zdCBjaGFyICpf
X25wdHIpCnsKICByZXR1cm4gc3RydG9sIChfX25wdHIsIChjaGFyICoqKSAoKHZvaWQgKikwKSwg
MTApOwp9CgoKX19leHRlbnNpb25fXyBleHRlcm4gX19pbmxpbmUgbG9uZyBsb25nIGludAphdG9s
bCAoX19jb25zdCBjaGFyICpfX25wdHIpCnsKICByZXR1cm4gc3RydG9sbCAoX19ucHRyLCAoY2hh
ciAqKikgKCh2b2lkICopMCksIDEwKTsKfQojIDM4NSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAz
CmV4dGVybiBjaGFyICpsNjRhIChsb25nIGludCBfX24pIDsKCgpleHRlcm4gbG9uZyBpbnQgYTY0
bCAoX19jb25zdCBjaGFyICpfX3MpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCiMgMSAi
L3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAxIDMKIyAzOTIgIi91c3IvaW5jbHVkZS9zdGRsaWIu
aCIgMiAzCgoKCgoKCmV4dGVybiBpbnQzMl90IHJhbmRvbSAodm9pZCkgOwoKCmV4dGVybiB2b2lk
IHNyYW5kb20gKHVuc2lnbmVkIGludCBfX3NlZWQpIDsKCgoKCgpleHRlcm4gY2hhciAqaW5pdHN0
YXRlICh1bnNpZ25lZCBpbnQgX19zZWVkLCBjaGFyICpfX3N0YXRlYnVmLAogICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3QgX19zdGF0ZWxlbikgOwoKCgpleHRlcm4gY2hhciAqc2V0c3RhdGUg
KGNoYXIgKl9fc3RhdGVidWYpIDsKCgoKCgoKCnN0cnVjdCByYW5kb21fZGF0YQogIHsKICAgIGlu
dDMyX3QgKmZwdHI7CiAgICBpbnQzMl90ICpycHRyOwogICAgaW50MzJfdCAqc3RhdGU7CiAgICBp
bnQgcmFuZF90eXBlOwogICAgaW50IHJhbmRfZGVnOwogICAgaW50IHJhbmRfc2VwOwogICAgaW50
MzJfdCAqZW5kX3B0cjsKICB9OwoKZXh0ZXJuIGludCByYW5kb21fciAoc3RydWN0IHJhbmRvbV9k
YXRhICpfX3Jlc3RyaWN0IF9fYnVmLAogICAgICAgICAgICAgICAgICAgICBpbnQzMl90ICpfX3Jl
c3RyaWN0IF9fcmVzdWx0KSA7CgpleHRlcm4gaW50IHNyYW5kb21fciAodW5zaWduZWQgaW50IF9f
c2VlZCwgc3RydWN0IHJhbmRvbV9kYXRhICpfX2J1ZikgOwoKZXh0ZXJuIGludCBpbml0c3RhdGVf
ciAodW5zaWduZWQgaW50IF9fc2VlZCwgY2hhciAqX19yZXN0cmljdCBfX3N0YXRlYnVmLAogICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19zdGF0ZWxlbiwKICAgICAgICAgICAgICAgICAg
ICAgICAgc3RydWN0IHJhbmRvbV9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmKSA7CgpleHRlcm4gaW50
IHNldHN0YXRlX3IgKGNoYXIgKl9fcmVzdHJpY3QgX19zdGF0ZWJ1ZiwKICAgICAgICAgICAgICAg
ICAgICAgICBzdHJ1Y3QgcmFuZG9tX2RhdGEgKl9fcmVzdHJpY3QgX19idWYpIDsKCgoKCgpleHRl
cm4gaW50IHJhbmQgKHZvaWQpIDsKCmV4dGVybiB2b2lkIHNyYW5kICh1bnNpZ25lZCBpbnQgX19z
ZWVkKSA7CgoKCmV4dGVybiBpbnQgcmFuZF9yICh1bnNpZ25lZCBpbnQgKl9fc2VlZCkgOwoKCgoK
CgoKZXh0ZXJuIGRvdWJsZSBkcmFuZDQ4ICh2b2lkKSA7CmV4dGVybiBkb3VibGUgZXJhbmQ0OCAo
dW5zaWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10pIDsKCgpleHRlcm4gbG9uZyBpbnQgbHJhbmQ0
OCAodm9pZCkgOwpleHRlcm4gbG9uZyBpbnQgbnJhbmQ0OCAodW5zaWduZWQgc2hvcnQgaW50IF9f
eHN1YmlbM10pIDsKCgpleHRlcm4gbG9uZyBpbnQgbXJhbmQ0OCAodm9pZCkgOwpleHRlcm4gbG9u
ZyBpbnQganJhbmQ0OCAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10pIDsKCgpleHRlcm4g
dm9pZCBzcmFuZDQ4IChsb25nIGludCBfX3NlZWR2YWwpIDsKZXh0ZXJuIHVuc2lnbmVkIHNob3J0
IGludCAqc2VlZDQ4ICh1bnNpZ25lZCBzaG9ydCBpbnQgX19zZWVkMTZ2WzNdKSA7CmV4dGVybiB2
b2lkIGxjb25nNDggKHVuc2lnbmVkIHNob3J0IGludCBfX3BhcmFtWzddKSA7CgoKc3RydWN0IGRy
YW5kNDhfZGF0YQogIHsKICAgIHVuc2lnbmVkIHNob3J0IGludCB4WzNdOwogICAgdW5zaWduZWQg
c2hvcnQgaW50IGFbM107CiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgYzsKICAgIHVuc2lnbmVkIHNo
b3J0IGludCBvbGRfeFszXTsKICAgIGludCBpbml0OwogIH07CgoKCmV4dGVybiBpbnQgZHJhbmQ0
OF9yIChzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmZmVyLAogICAgICAgICAg
ICAgICAgICAgICAgZG91YmxlICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSA7CmV4dGVybiBpbnQgZXJh
bmQ0OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSwKICAgICAgICAgICAgICAgICAg
ICAgIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZmZXIsCiAgICAgICAgICAg
ICAgICAgICAgICBkb3VibGUgKl9fcmVzdHJpY3QgX19yZXN1bHQpIDsKCgpleHRlcm4gaW50IGxy
YW5kNDhfciAoc3RydWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZlciwKICAgICAg
ICAgICAgICAgICAgICAgIGxvbmcgaW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSA7CmV4dGVybiBp
bnQgbnJhbmQ0OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSwKICAgICAgICAgICAg
ICAgICAgICAgIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZmZXIsCiAgICAg
ICAgICAgICAgICAgICAgICBsb25nIGludCAqX19yZXN0cmljdCBfX3Jlc3VsdCkgOwoKCmV4dGVy
biBpbnQgbXJhbmQ0OF9yIChzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmZmVy
LAogICAgICAgICAgICAgICAgICAgICAgbG9uZyBpbnQgKl9fcmVzdHJpY3QgX19yZXN1bHQpIDsK
ZXh0ZXJuIGludCBqcmFuZDQ4X3IgKHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNdLAogICAg
ICAgICAgICAgICAgICAgICAgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZl
ciwKICAgICAgICAgICAgICAgICAgICAgIGxvbmcgaW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSA7
CgoKZXh0ZXJuIGludCBzcmFuZDQ4X3IgKGxvbmcgaW50IF9fc2VlZHZhbCwgc3RydWN0IGRyYW5k
NDhfZGF0YSAqX19idWZmZXIpCiAgICAgICAgICAgIDsKCmV4dGVybiBpbnQgc2VlZDQ4X3IgKHVu
c2lnbmVkIHNob3J0IGludCBfX3NlZWQxNnZbM10sCiAgICAgICAgICAgICAgICAgICAgIHN0cnVj
dCBkcmFuZDQ4X2RhdGEgKl9fYnVmZmVyKSA7CgpleHRlcm4gaW50IGxjb25nNDhfciAodW5zaWdu
ZWQgc2hvcnQgaW50IF9fcGFyYW1bN10sCiAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJh
bmQ0OF9kYXRhICpfX2J1ZmZlcikgOwojIDUzNSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCmV4
dGVybiB2b2lkICpyZWFsbG9jICh2b2lkICpfX3B0ciwgc2l6ZV90IF9fc2l6ZSkgX19hdHRyaWJ1
dGVfXyAoKF9fbWFsbG9jX18pKTsKCmV4dGVybiB2b2lkIGZyZWUgKHZvaWQgKl9fcHRyKSA7CgoK
CmV4dGVybiB2b2lkIGNmcmVlICh2b2lkICpfX3B0cikgOwoKCgojIDEgIi91c3IvaW5jbHVkZS9h
bGxvY2EuaCIgMSAzCiMgMjIgIi91c3IvaW5jbHVkZS9hbGxvY2EuaCIgMwojIDEgIi91c3IvaW5j
bHVkZS9mZWF0dXJlcy5oIiAxIDMKIyAyMyAiL3Vzci9pbmNsdWRlL2FsbG9jYS5oIiAyIDMKCgoj
IDEgImluY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDI2ICIvdXNyL2luY2x1ZGUvYWxsb2NhLmgiIDIg
MwoKCgoKCgoKZXh0ZXJuIHZvaWQgKmFsbG9jYSAoc2l6ZV90IF9fc2l6ZSkgOwojIDU0NiAiL3Vz
ci9pbmNsdWRlL3N0ZGxpYi5oIiAyIDMKCgoKCmV4dGVybiB2b2lkICp2YWxsb2MgKHNpemVfdCBf
X3NpemUpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CiMgNTYwICIvdXNyL2luY2x1ZGUv
c3RkbGliLmgiIDMKZXh0ZXJuIHZvaWQgYWJvcnQgKHZvaWQpIF9fYXR0cmlidXRlX18gKChfX25v
cmV0dXJuX18pKTsKCgoKZXh0ZXJuIGludCBhdGV4aXQgKHZvaWQgKCpfX2Z1bmMpICh2b2lkKSkg
OwoKCgoKZXh0ZXJuIGludCBfX29uX2V4aXQgKHZvaWQgKCpfX2Z1bmMpIChpbnQgX19zdGF0dXMs
IHZvaWQgKl9fYXJnKSwgdm9pZCAqX19hcmcpCiAgICAgICAgICAgIDsKZXh0ZXJuIGludCBvbl9l
eGl0ICh2b2lkICgqX19mdW5jKSAoaW50IF9fc3RhdHVzLCB2b2lkICpfX2FyZyksIHZvaWQgKl9f
YXJnKQogICAgICAgICAgICA7CgoKCgoKZXh0ZXJuIHZvaWQgZXhpdCAoaW50IF9fc3RhdHVzKSBf
X2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9fKSk7CiMgNTg4ICIvdXNyL2luY2x1ZGUvc3RkbGli
LmgiIDMKZXh0ZXJuIGNoYXIgKmdldGVudiAoX19jb25zdCBjaGFyICpfX25hbWUpIDsKCgoKZXh0
ZXJuIGNoYXIgKl9fc2VjdXJlX2dldGVudiAoX19jb25zdCBjaGFyICpfX25hbWUpIDsKCgoKCgpl
eHRlcm4gaW50IHB1dGVudiAoY2hhciAqX19zdHJpbmcpIDsKCgoKCgpleHRlcm4gaW50IHNldGVu
diAoX19jb25zdCBjaGFyICpfX25hbWUsIF9fY29uc3QgY2hhciAqX192YWx1ZSwgaW50IF9fcmVw
bGFjZSkKICAgICAgICAgICAgOwoKCmV4dGVybiB2b2lkIHVuc2V0ZW52IChfX2NvbnN0IGNoYXIg
Kl9fbmFtZSkgOwoKCgoKCgpleHRlcm4gaW50IGNsZWFyZW52ICh2b2lkKSA7CiMgNjI0ICIvdXNy
L2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGNoYXIgKm1rdGVtcCAoY2hhciAqX190ZW1wbGF0
ZSkgOwoKCgoKCgpleHRlcm4gaW50IG1rc3RlbXAgKGNoYXIgKl9fdGVtcGxhdGUpIDsKIyA2NDAg
Ii91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gY2hhciAqbWtkdGVtcCAoY2hhciAqX190
ZW1wbGF0ZSkgOwoKCgoKZXh0ZXJuIGludCBzeXN0ZW0gKF9fY29uc3QgY2hhciAqX19jb21tYW5k
KSA7CiMgNjYyICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGNoYXIgKnJlYWxwYXRo
IChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19uYW1lLAogICAgICAgICAgICAgICAgICAgICAg
IGNoYXIgKl9fcmVzdHJpY3QgX19yZXNvbHZlZCkgOwoKCgoKCgp0eXBlZGVmIGludCAoKl9fY29t
cGFyX2ZuX3QpIChfX2NvbnN0IHZvaWQgKiwgX19jb25zdCB2b2lkICopOwojIDY3OSAiL3Vzci9p
bmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVybiB2b2lkICpic2VhcmNoIChfX2NvbnN0IHZvaWQgKl9f
a2V5LCBfX2NvbnN0IHZvaWQgKl9fYmFzZSwKICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBf
X25tZW1iLCBzaXplX3QgX19zaXplLCBfX2NvbXBhcl9mbl90IF9fY29tcGFyKTsKCgoKZXh0ZXJu
IHZvaWQgcXNvcnQgKHZvaWQgKl9fYmFzZSwgc2l6ZV90IF9fbm1lbWIsIHNpemVfdCBfX3NpemUs
CiAgICAgICAgICAgICAgICAgICBfX2NvbXBhcl9mbl90IF9fY29tcGFyKTsKCgoKZXh0ZXJuIGlu
dCBhYnMgKGludCBfX3gpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKZXh0ZXJuIGxvbmcg
aW50IGxhYnMgKGxvbmcgaW50IF9feCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwojIDcw
MCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVybiBkaXZfdCBkaXYgKGludCBfX251bWVy
LCBpbnQgX19kZW5vbSkKICAgICAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsK
ZXh0ZXJuIGxkaXZfdCBsZGl2IChsb25nIGludCBfX251bWVyLCBsb25nIGludCBfX2Rlbm9tKQog
ICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwojIDcxOCAiL3Vzci9pbmNs
dWRlL3N0ZGxpYi5oIiAzCmV4dGVybiBjaGFyICplY3Z0IChkb3VibGUgX192YWx1ZSwgaW50IF9f
bmRpZ2l0LCBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwKICAgICAgICAgICAgICAgICAgIGludCAq
X19yZXN0cmljdCBfX3NpZ24pIDsKCgoKCmV4dGVybiBjaGFyICpmY3Z0IChkb3VibGUgX192YWx1
ZSwgaW50IF9fbmRpZ2l0LCBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwKICAgICAgICAgICAgICAg
ICAgIGludCAqX19yZXN0cmljdCBfX3NpZ24pIDsKCgoKCmV4dGVybiBjaGFyICpnY3Z0IChkb3Vi
bGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBjaGFyICpfX2J1ZikgOwoKCmV4dGVybiBjaGFyICpx
ZWN2dCAobG9uZyBkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LAogICAgICAgICAgICAgICAg
ICAgIGludCAqX19yZXN0cmljdCBfX2RlY3B0LCBpbnQgKl9fcmVzdHJpY3QgX19zaWduKSA7CmV4
dGVybiBjaGFyICpxZmN2dCAobG9uZyBkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LAogICAg
ICAgICAgICAgICAgICAgIGludCAqX19yZXN0cmljdCBfX2RlY3B0LCBpbnQgKl9fcmVzdHJpY3Qg
X19zaWduKSA7CmV4dGVybiBjaGFyICpxZ2N2dCAobG9uZyBkb3VibGUgX192YWx1ZSwgaW50IF9f
bmRpZ2l0LCBjaGFyICpfX2J1ZikgOwoKCgoKCmV4dGVybiBpbnQgZWN2dF9yIChkb3VibGUgX192
YWx1ZSwgaW50IF9fbmRpZ2l0LCBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwKICAgICAgICAgICAg
ICAgICAgIGludCAqX19yZXN0cmljdCBfX3NpZ24sIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsCiAg
ICAgICAgICAgICAgICAgICBzaXplX3QgX19sZW4pIDsKZXh0ZXJuIGludCBmY3Z0X3IgKGRvdWJs
ZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGludCAqX19yZXN0cmljdCBfX2RlY3B0LAogICAgICAg
ICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbiwgY2hhciAqX19yZXN0cmljdCBfX2J1
ZiwKICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX2xlbikgOwoKZXh0ZXJuIGludCBxZWN2dF9y
IChsb25nIGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsCiAgICAgICAgICAgICAgICAgICAg
aW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsIGludCAqX19yZXN0cmljdCBfX3NpZ24sCiAgICAgICAg
ICAgICAgICAgICAgY2hhciAqX19yZXN0cmljdCBfX2J1Ziwgc2l6ZV90IF9fbGVuKSA7CmV4dGVy
biBpbnQgcWZjdnRfciAobG9uZyBkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LAogICAgICAg
ICAgICAgICAgICAgIGludCAqX19yZXN0cmljdCBfX2RlY3B0LCBpbnQgKl9fcmVzdHJpY3QgX19z
aWduLAogICAgICAgICAgICAgICAgICAgIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsIHNpemVfdCBf
X2xlbikgOwoKCgoKCgpleHRlcm4gaW50IG1ibGVuIChfX2NvbnN0IGNoYXIgKl9fcywgc2l6ZV90
IF9fbikgOwoKCmV4dGVybiBpbnQgbWJ0b3djICh3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fcHdjLAog
ICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9f
bikgOwoKCmV4dGVybiBpbnQgd2N0b21iIChjaGFyICpfX3MsIHdjaGFyX3QgX193Y2hhcikgOwoK
CgpleHRlcm4gc2l6ZV90IG1ic3Rvd2NzICh3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fcHdjcywKICAg
ICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90
IF9fbikgOwoKZXh0ZXJuIHNpemVfdCB3Y3N0b21icyAoY2hhciAqX19yZXN0cmljdCBfX3MsCiAg
ICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3Qgd2NoYXJfdCAqX19yZXN0cmljdCBfX3B3Y3Ms
IHNpemVfdCBfX24pCiAgICAgICAgICAgIDsKCgoKCgoKCmV4dGVybiBpbnQgcnBtYXRjaCAoX19j
b25zdCBjaGFyICpfX3Jlc3BvbnNlKSA7CiMgODQwICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMK
ZXh0ZXJuIGludCBnZXRsb2FkYXZnIChkb3VibGUgX19sb2FkYXZnW10sIGludCBfX25lbGVtKSA7
CiMgODEgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvdHN5c3RlbS5oIiAyCiMgMSAiL3Vz
ci9pbmNsdWRlL3VuaXN0ZC5oIiAxIDMKIyAyNiAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCiMg
MSAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDEgMwojIDI3ICIvdXNyL2luY2x1ZGUvdW5pc3Rk
LmgiIDIgMwojIDE3NSAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCiMgMSAiL3Vzci9pbmNsdWRl
L2JpdHMvcG9zaXhfb3B0LmgiIDEgMwojIDE3NiAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAyIDMK
IyAxOTAgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3R5
cGVzLmgiIDEgMwojIDE5MSAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAyIDMKIyAxOTkgIi91c3Iv
aW5jbHVkZS91bmlzdGQuaCIgMwojIDEgImluY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDIwMCAiL3Vz
ci9pbmNsdWRlL3VuaXN0ZC5oIiAyIDMKIyAyNDAgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwp0
eXBlZGVmIF9faW50cHRyX3QgaW50cHRyX3Q7CgoKCgoKCnR5cGVkZWYgX19zb2NrbGVuX3Qgc29j
a2xlbl90OwojIDI2MCAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4dGVybiBpbnQgYWNjZXNz
IChfX2NvbnN0IGNoYXIgKl9fbmFtZSwgaW50IF9fdHlwZSkgOwojIDI5MCAiL3Vzci9pbmNsdWRl
L3VuaXN0ZC5oIiAzCmV4dGVybiBfX29mZl90IGxzZWVrIChpbnQgX19mZCwgX19vZmZfdCBfX29m
ZnNldCwgaW50IF9fd2hlbmNlKSA7CiMgMzA2ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0
ZXJuIGludCBjbG9zZSAoaW50IF9fZmQpIDsKCgoKZXh0ZXJuIHNzaXplX3QgcmVhZCAoaW50IF9f
ZmQsIHZvaWQgKl9fYnVmLCBzaXplX3QgX19uYnl0ZXMpIDsKCgpleHRlcm4gc3NpemVfdCB3cml0
ZSAoaW50IF9fZmQsIF9fY29uc3Qgdm9pZCAqX19idWYsIHNpemVfdCBfX24pIDsKIyAzNTMgIi91
c3IvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4gaW50IHBpcGUgKGludCBfX3BpcGVkZXNbMl0p
IDsKIyAzNjIgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4gdW5zaWduZWQgaW50IGFs
YXJtICh1bnNpZ25lZCBpbnQgX19zZWNvbmRzKSA7CiMgMzcxICIvdXNyL2luY2x1ZGUvdW5pc3Rk
LmgiIDMKZXh0ZXJuIHVuc2lnbmVkIGludCBzbGVlcCAodW5zaWduZWQgaW50IF9fc2Vjb25kcykg
OwoKCgoKCgpleHRlcm4gX191c2Vjb25kc190IHVhbGFybSAoX191c2Vjb25kc190IF9fdmFsdWUs
IF9fdXNlY29uZHNfdCBfX2ludGVydmFsKQogICAgICAgICAgICA7CgoKCmV4dGVybiB2b2lkIHVz
bGVlcCAoX191c2Vjb25kc190IF9fdXNlY29uZHMpIDsKCgoKCgpleHRlcm4gaW50IHBhdXNlICh2
b2lkKSA7CgoKCmV4dGVybiBpbnQgY2hvd24gKF9fY29uc3QgY2hhciAqX19maWxlLCBfX3VpZF90
IF9fb3duZXIsIF9fZ2lkX3QgX19ncm91cCkKICAgICAgICAgICAgOwoKCgpleHRlcm4gaW50IGZj
aG93biAoaW50IF9fZmQsIF9fdWlkX3QgX19vd25lciwgX19naWRfdCBfX2dyb3VwKSA7CgoKCgpl
eHRlcm4gaW50IGxjaG93biAoX19jb25zdCBjaGFyICpfX2ZpbGUsIF9fdWlkX3QgX19vd25lciwg
X19naWRfdCBfX2dyb3VwKQogICAgICAgICAgICA7CgoKCgpleHRlcm4gaW50IGNoZGlyIChfX2Nv
bnN0IGNoYXIgKl9fcGF0aCkgOwoKCgpleHRlcm4gaW50IGZjaGRpciAoaW50IF9fZmQpIDsKIyA0
MjMgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4gY2hhciAqZ2V0Y3dkIChjaGFyICpf
X2J1Ziwgc2l6ZV90IF9fc2l6ZSkgOwojIDQzNiAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4
dGVybiBjaGFyICpnZXR3ZCAoY2hhciAqX19idWYpIDsKCgoKCmV4dGVybiBpbnQgZHVwIChpbnQg
X19mZCkgOwoKCmV4dGVybiBpbnQgZHVwMiAoaW50IF9fZmQsIGludCBfX2ZkMikgOwoKCmV4dGVy
biBjaGFyICoqX19lbnZpcm9uOwoKCgoKCgoKZXh0ZXJuIGludCBleGVjdmUgKF9fY29uc3QgY2hh
ciAqX19wYXRoLCBjaGFyICpfX2NvbnN0IF9fYXJndltdLAogICAgICAgICAgICAgICAgICAgY2hh
ciAqX19jb25zdCBfX2VudnBbXSkgOwojIDQ2NyAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4
dGVybiBpbnQgZXhlY3YgKF9fY29uc3QgY2hhciAqX19wYXRoLCBjaGFyICpfX2NvbnN0IF9fYXJn
dltdKSA7CgoKCmV4dGVybiBpbnQgZXhlY2xlIChfX2NvbnN0IGNoYXIgKl9fcGF0aCwgX19jb25z
dCBjaGFyICpfX2FyZywgLi4uKSA7CgoKCmV4dGVybiBpbnQgZXhlY2wgKF9fY29uc3QgY2hhciAq
X19wYXRoLCBfX2NvbnN0IGNoYXIgKl9fYXJnLCAuLi4pIDsKCgoKZXh0ZXJuIGludCBleGVjdnAg
KF9fY29uc3QgY2hhciAqX19maWxlLCBjaGFyICpfX2NvbnN0IF9fYXJndltdKSA7CgoKCgpleHRl
cm4gaW50IGV4ZWNscCAoX19jb25zdCBjaGFyICpfX2ZpbGUsIF9fY29uc3QgY2hhciAqX19hcmcs
IC4uLikgOwoKCgoKZXh0ZXJuIGludCBuaWNlIChpbnQgX19pbmMpIDsKCgoKCmV4dGVybiB2b2lk
IF9leGl0IChpbnQgX19zdGF0dXMpIF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsKCgoK
CgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL2NvbmZuYW1lLmgiIDEgMwojIDI1ICIvdXNyL2luY2x1
ZGUvYml0cy9jb25mbmFtZS5oIiAzCmVudW0KICB7CiAgICBfUENfTElOS19NQVgsCgogICAgX1BD
X01BWF9DQU5PTiwKCiAgICBfUENfTUFYX0lOUFVULAoKICAgIF9QQ19OQU1FX01BWCwKCiAgICBf
UENfUEFUSF9NQVgsCgogICAgX1BDX1BJUEVfQlVGLAoKICAgIF9QQ19DSE9XTl9SRVNUUklDVEVE
LAoKICAgIF9QQ19OT19UUlVOQywKCiAgICBfUENfVkRJU0FCTEUsCgogICAgX1BDX1NZTkNfSU8s
CgogICAgX1BDX0FTWU5DX0lPLAoKICAgIF9QQ19QUklPX0lPLAoKICAgIF9QQ19TT0NLX01BWEJV
RiwKCiAgICBfUENfRklMRVNJWkVCSVRTCgogIH07CgoKZW51bQogIHsKICAgIF9TQ19BUkdfTUFY
LAoKICAgIF9TQ19DSElMRF9NQVgsCgogICAgX1NDX0NMS19UQ0ssCgogICAgX1NDX05HUk9VUFNf
TUFYLAoKICAgIF9TQ19PUEVOX01BWCwKCiAgICBfU0NfU1RSRUFNX01BWCwKCiAgICBfU0NfVFpO
QU1FX01BWCwKCiAgICBfU0NfSk9CX0NPTlRST0wsCgogICAgX1NDX1NBVkVEX0lEUywKCiAgICBf
U0NfUkVBTFRJTUVfU0lHTkFMUywKCiAgICBfU0NfUFJJT1JJVFlfU0NIRURVTElORywKCiAgICBf
U0NfVElNRVJTLAoKICAgIF9TQ19BU1lOQ0hST05PVVNfSU8sCgogICAgX1NDX1BSSU9SSVRJWkVE
X0lPLAoKICAgIF9TQ19TWU5DSFJPTklaRURfSU8sCgogICAgX1NDX0ZTWU5DLAoKICAgIF9TQ19N
QVBQRURfRklMRVMsCgogICAgX1NDX01FTUxPQ0ssCgogICAgX1NDX01FTUxPQ0tfUkFOR0UsCgog
ICAgX1NDX01FTU9SWV9QUk9URUNUSU9OLAoKICAgIF9TQ19NRVNTQUdFX1BBU1NJTkcsCgogICAg
X1NDX1NFTUFQSE9SRVMsCgogICAgX1NDX1NIQVJFRF9NRU1PUllfT0JKRUNUUywKCiAgICBfU0Nf
QUlPX0xJU1RJT19NQVgsCgogICAgX1NDX0FJT19NQVgsCgogICAgX1NDX0FJT19QUklPX0RFTFRB
X01BWCwKCiAgICBfU0NfREVMQVlUSU1FUl9NQVgsCgogICAgX1NDX01RX09QRU5fTUFYLAoKICAg
IF9TQ19NUV9QUklPX01BWCwKCiAgICBfU0NfVkVSU0lPTiwKCiAgICBfU0NfUEFHRVNJWkUsCgoK
ICAgIF9TQ19SVFNJR19NQVgsCgogICAgX1NDX1NFTV9OU0VNU19NQVgsCgogICAgX1NDX1NFTV9W
QUxVRV9NQVgsCgogICAgX1NDX1NJR1FVRVVFX01BWCwKCiAgICBfU0NfVElNRVJfTUFYLAoKCgoK
ICAgIF9TQ19CQ19CQVNFX01BWCwKCiAgICBfU0NfQkNfRElNX01BWCwKCiAgICBfU0NfQkNfU0NB
TEVfTUFYLAoKICAgIF9TQ19CQ19TVFJJTkdfTUFYLAoKICAgIF9TQ19DT0xMX1dFSUdIVFNfTUFY
LAoKICAgIF9TQ19FUVVJVl9DTEFTU19NQVgsCgogICAgX1NDX0VYUFJfTkVTVF9NQVgsCgogICAg
X1NDX0xJTkVfTUFYLAoKICAgIF9TQ19SRV9EVVBfTUFYLAoKICAgIF9TQ19DSEFSQ0xBU1NfTkFN
RV9NQVgsCgoKICAgIF9TQ18yX1ZFUlNJT04sCgogICAgX1NDXzJfQ19CSU5ELAoKICAgIF9TQ18y
X0NfREVWLAoKICAgIF9TQ18yX0ZPUlRfREVWLAoKICAgIF9TQ18yX0ZPUlRfUlVOLAoKICAgIF9T
Q18yX1NXX0RFViwKCiAgICBfU0NfMl9MT0NBTEVERUYsCgoKICAgIF9TQ19QSUksCgogICAgX1ND
X1BJSV9YVEksCgogICAgX1NDX1BJSV9TT0NLRVQsCgogICAgX1NDX1BJSV9JTlRFUk5FVCwKCiAg
ICBfU0NfUElJX09TSSwKCiAgICBfU0NfUE9MTCwKCiAgICBfU0NfU0VMRUNULAoKICAgIF9TQ19V
SU9fTUFYSU9WLAoKICAgIF9TQ19QSUlfSU5URVJORVRfU1RSRUFNLAoKICAgIF9TQ19QSUlfSU5U
RVJORVRfREdSQU0sCgogICAgX1NDX1BJSV9PU0lfQ09UUywKCiAgICBfU0NfUElJX09TSV9DTFRT
LAoKICAgIF9TQ19QSUlfT1NJX00sCgogICAgX1NDX1RfSU9WX01BWCwKCgoKICAgIF9TQ19USFJF
QURTLAoKICAgIF9TQ19USFJFQURfU0FGRV9GVU5DVElPTlMsCgogICAgX1NDX0dFVEdSX1JfU0la
RV9NQVgsCgogICAgX1NDX0dFVFBXX1JfU0laRV9NQVgsCgogICAgX1NDX0xPR0lOX05BTUVfTUFY
LAoKICAgIF9TQ19UVFlfTkFNRV9NQVgsCgogICAgX1NDX1RIUkVBRF9ERVNUUlVDVE9SX0lURVJB
VElPTlMsCgogICAgX1NDX1RIUkVBRF9LRVlTX01BWCwKCiAgICBfU0NfVEhSRUFEX1NUQUNLX01J
TiwKCiAgICBfU0NfVEhSRUFEX1RIUkVBRFNfTUFYLAoKICAgIF9TQ19USFJFQURfQVRUUl9TVEFD
S0FERFIsCgogICAgX1NDX1RIUkVBRF9BVFRSX1NUQUNLU0laRSwKCiAgICBfU0NfVEhSRUFEX1BS
SU9SSVRZX1NDSEVEVUxJTkcsCgogICAgX1NDX1RIUkVBRF9QUklPX0lOSEVSSVQsCgogICAgX1ND
X1RIUkVBRF9QUklPX1BST1RFQ1QsCgogICAgX1NDX1RIUkVBRF9QUk9DRVNTX1NIQVJFRCwKCgog
ICAgX1NDX05QUk9DRVNTT1JTX0NPTkYsCgogICAgX1NDX05QUk9DRVNTT1JTX09OTE4sCgogICAg
X1NDX1BIWVNfUEFHRVMsCgogICAgX1NDX0FWUEhZU19QQUdFUywKCiAgICBfU0NfQVRFWElUX01B
WCwKCiAgICBfU0NfUEFTU19NQVgsCgoKICAgIF9TQ19YT1BFTl9WRVJTSU9OLAoKICAgIF9TQ19Y
T1BFTl9YQ1VfVkVSU0lPTiwKCiAgICBfU0NfWE9QRU5fVU5JWCwKCiAgICBfU0NfWE9QRU5fQ1JZ
UFQsCgogICAgX1NDX1hPUEVOX0VOSF9JMThOLAoKICAgIF9TQ19YT1BFTl9TSE0sCgoKICAgIF9T
Q18yX0NIQVJfVEVSTSwKCiAgICBfU0NfMl9DX1ZFUlNJT04sCgogICAgX1NDXzJfVVBFLAoKCiAg
ICBfU0NfWE9QRU5fWFBHMiwKCiAgICBfU0NfWE9QRU5fWFBHMywKCiAgICBfU0NfWE9QRU5fWFBH
NCwKCgogICAgX1NDX0NIQVJfQklULAoKICAgIF9TQ19DSEFSX01BWCwKCiAgICBfU0NfQ0hBUl9N
SU4sCgogICAgX1NDX0lOVF9NQVgsCgogICAgX1NDX0lOVF9NSU4sCgogICAgX1NDX0xPTkdfQklU
LAoKICAgIF9TQ19XT1JEX0JJVCwKCiAgICBfU0NfTUJfTEVOX01BWCwKCiAgICBfU0NfTlpFUk8s
CgogICAgX1NDX1NTSVpFX01BWCwKCiAgICBfU0NfU0NIQVJfTUFYLAoKICAgIF9TQ19TQ0hBUl9N
SU4sCgogICAgX1NDX1NIUlRfTUFYLAoKICAgIF9TQ19TSFJUX01JTiwKCiAgICBfU0NfVUNIQVJf
TUFYLAoKICAgIF9TQ19VSU5UX01BWCwKCiAgICBfU0NfVUxPTkdfTUFYLAoKICAgIF9TQ19VU0hS
VF9NQVgsCgoKICAgIF9TQ19OTF9BUkdNQVgsCgogICAgX1NDX05MX0xBTkdNQVgsCgogICAgX1ND
X05MX01TR01BWCwKCiAgICBfU0NfTkxfTk1BWCwKCiAgICBfU0NfTkxfU0VUTUFYLAoKICAgIF9T
Q19OTF9URVhUTUFYLAoKCiAgICBfU0NfWEJTNV9JTFAzMl9PRkYzMiwKCiAgICBfU0NfWEJTNV9J
TFAzMl9PRkZCSUcsCgogICAgX1NDX1hCUzVfTFA2NF9PRkY2NCwKCiAgICBfU0NfWEJTNV9MUEJJ
R19PRkZCSUcsCgoKICAgIF9TQ19YT1BFTl9MRUdBQ1ksCgogICAgX1NDX1hPUEVOX1JFQUxUSU1F
LAoKICAgIF9TQ19YT1BFTl9SRUFMVElNRV9USFJFQURTLAoKCiAgICBfU0NfQURWSVNPUllfSU5G
TywKCiAgICBfU0NfQkFSUklFUlMsCgogICAgX1NDX0JBU0UsCgogICAgX1NDX0NfTEFOR19TVVBQ
T1JULAoKICAgIF9TQ19DX0xBTkdfU1VQUE9SVF9SLAoKICAgIF9TQ19DTE9DS19TRUxFQ1RJT04s
CgogICAgX1NDX0NQVVRJTUUsCgogICAgX1NDX1RIUkVBRF9DUFVUSU1FLAoKICAgIF9TQ19ERVZJ
Q0VfSU8sCgogICAgX1NDX0RFVklDRV9TUEVDSUZJQywKCiAgICBfU0NfREVWSUNFX1NQRUNJRklD
X1IsCgogICAgX1NDX0ZEX01HTVQsCgogICAgX1NDX0ZJRk8sCgogICAgX1NDX1BJUEUsCgogICAg
X1NDX0ZJTEVfQVRUUklCVVRFUywKCiAgICBfU0NfRklMRV9MT0NLSU5HLAoKICAgIF9TQ19GSUxF
X1NZU1RFTSwKCiAgICBfU0NfTU9OT1RPTklDX0NMT0NLLAoKICAgIF9TQ19NVUxUSVBMRV9QUk9D
RVNTLAoKICAgIF9TQ19TSU5HTEVfUFJPQ0VTUywKCiAgICBfU0NfTkVUV09SS0lORywKCiAgICBf
U0NfUkVBREVSX1dSSVRFUl9MT0NLUywKCiAgICBfU0NfU1BJTl9MT0NLUywKCiAgICBfU0NfUkVH
RVhQLAoKICAgIF9TQ19SRUdFWF9WRVJTSU9OLAoKICAgIF9TQ19TSEVMTCwKCiAgICBfU0NfU0lH
TkFMUywKCiAgICBfU0NfU1BBV04sCgogICAgX1NDX1NQT1JBRElDX1NFUlZFUiwKCiAgICBfU0Nf
VEhSRUFEX1NQT1JBRElDX1NFUlZFUiwKCiAgICBfU0NfU1lTVEVNX0RBVEFCQVNFLAoKICAgIF9T
Q19TWVNURU1fREFUQUJBU0VfUiwKCiAgICBfU0NfVElNRU9VVFMsCgogICAgX1NDX1RZUEVEX01F
TU9SWV9PQkpFQ1RTLAoKICAgIF9TQ19VU0VSX0dST1VQUywKCiAgICBfU0NfVVNFUl9HUk9VUFNf
UiwKCiAgICBfU0NfUEJTLAoKICAgIF9TQ19QQlNfQUNDT1VOVElORywKCiAgICBfU0NfUEJTX0xP
Q0FURSwKCiAgICBfU0NfUEJTX01FU1NBR0UsCgogICAgX1NDX1BCU19UUkFDSywKCiAgICBfU0Nf
U1lNTE9PUAoKICB9OwoKCgoKCmVudW0KICB7CiAgICBfQ1NfUEFUSAojIDQ5MiAiL3Vzci9pbmNs
dWRlL2JpdHMvY29uZm5hbWUuaCIgMwogIH07CiMgNTAxICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgi
IDIgMwoKCmV4dGVybiBsb25nIGludCBwYXRoY29uZiAoX19jb25zdCBjaGFyICpfX3BhdGgsIGlu
dCBfX25hbWUpIDsKCgpleHRlcm4gbG9uZyBpbnQgZnBhdGhjb25mIChpbnQgX19mZCwgaW50IF9f
bmFtZSkgOwoKCmV4dGVybiBsb25nIGludCBzeXNjb25mIChpbnQgX19uYW1lKSA7CgoKCmV4dGVy
biBzaXplX3QgY29uZnN0ciAoaW50IF9fbmFtZSwgY2hhciAqX19idWYsIHNpemVfdCBfX2xlbikg
OwoKCgoKZXh0ZXJuIF9fcGlkX3QgZ2V0cGlkICh2b2lkKSA7CgoKZXh0ZXJuIF9fcGlkX3QgZ2V0
cHBpZCAodm9pZCkgOwoKCgoKZXh0ZXJuIF9fcGlkX3QgZ2V0cGdycCAodm9pZCkgOwojIDUzNiAi
L3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4dGVybiBfX3BpZF90IF9fZ2V0cGdpZCAoX19waWRf
dCBfX3BpZCkgOwojIDU0NSAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4dGVybiBpbnQgc2V0
cGdpZCAoX19waWRfdCBfX3BpZCwgX19waWRfdCBfX3BnaWQpIDsKIyA1NjIgIi91c3IvaW5jbHVk
ZS91bmlzdGQuaCIgMwpleHRlcm4gaW50IHNldHBncnAgKHZvaWQpIDsKIyA1ODAgIi91c3IvaW5j
bHVkZS91bmlzdGQuaCIgMwpleHRlcm4gX19waWRfdCBzZXRzaWQgKHZvaWQpIDsKCgoKCgoKCmV4
dGVybiBfX3VpZF90IGdldHVpZCAodm9pZCkgOwoKCmV4dGVybiBfX3VpZF90IGdldGV1aWQgKHZv
aWQpIDsKCgpleHRlcm4gX19naWRfdCBnZXRnaWQgKHZvaWQpIDsKCgpleHRlcm4gX19naWRfdCBn
ZXRlZ2lkICh2b2lkKSA7CgoKCgpleHRlcm4gaW50IGdldGdyb3VwcyAoaW50IF9fc2l6ZSwgX19n
aWRfdCBfX2xpc3RbXSkgOwojIDYxMyAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4dGVybiBp
bnQgc2V0dWlkIChfX3VpZF90IF9fdWlkKSA7CgoKCgpleHRlcm4gaW50IHNldHJldWlkIChfX3Vp
ZF90IF9fcnVpZCwgX191aWRfdCBfX2V1aWQpIDsKCgoKCmV4dGVybiBpbnQgc2V0ZXVpZCAoX191
aWRfdCBfX3VpZCkgOwoKCgoKCgpleHRlcm4gaW50IHNldGdpZCAoX19naWRfdCBfX2dpZCkgOwoK
CgoKZXh0ZXJuIGludCBzZXRyZWdpZCAoX19naWRfdCBfX3JnaWQsIF9fZ2lkX3QgX19lZ2lkKSA7
CgoKCgpleHRlcm4gaW50IHNldGVnaWQgKF9fZ2lkX3QgX19naWQpIDsKCgoKCgoKZXh0ZXJuIF9f
cGlkX3QgZm9yayAodm9pZCkgOwoKCgoKCgpleHRlcm4gX19waWRfdCB2Zm9yayAodm9pZCkgOwoK
CgoKCmV4dGVybiBjaGFyICp0dHluYW1lIChpbnQgX19mZCkgOwoKCgpleHRlcm4gaW50IHR0eW5h
bWVfciAoaW50IF9fZmQsIGNoYXIgKl9fYnVmLCBzaXplX3QgX19idWZsZW4pIDsKCgoKZXh0ZXJu
IGludCBpc2F0dHkgKGludCBfX2ZkKSA7CgoKCgpleHRlcm4gaW50IHR0eXNsb3QgKHZvaWQpIDsK
CgoKCmV4dGVybiBpbnQgbGluayAoX19jb25zdCBjaGFyICpfX2Zyb20sIF9fY29uc3QgY2hhciAq
X190bykgOwoKCgpleHRlcm4gaW50IHN5bWxpbmsgKF9fY29uc3QgY2hhciAqX19mcm9tLCBfX2Nv
bnN0IGNoYXIgKl9fdG8pIDsKCgoKCmV4dGVybiBpbnQgcmVhZGxpbmsgKF9fY29uc3QgY2hhciAq
X19yZXN0cmljdCBfX3BhdGgsIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsCiAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBfX2xlbikgOwoKCgpleHRlcm4gaW50IHVubGluayAoX19jb25zdCBjaGFy
ICpfX25hbWUpIDsKCgpleHRlcm4gaW50IHJtZGlyIChfX2NvbnN0IGNoYXIgKl9fcGF0aCkgOwoK
CgpleHRlcm4gX19waWRfdCB0Y2dldHBncnAgKGludCBfX2ZkKSA7CgoKZXh0ZXJuIGludCB0Y3Nl
dHBncnAgKGludCBfX2ZkLCBfX3BpZF90IF9fcGdycF9pZCkgOwoKCgpleHRlcm4gY2hhciAqZ2V0
bG9naW4gKHZvaWQpIDsKIyA3MTYgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4gaW50
IHNldGxvZ2luIChfX2NvbnN0IGNoYXIgKl9fbmFtZSkgOwojIDcyNSAiL3Vzci9pbmNsdWRlL3Vu
aXN0ZC5oIiAzCiMgMSAiL3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4wL2luY2x1ZGUvZ2V0b3B0Lmgi
IDEKIyAzNiAiL3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4wL2luY2x1ZGUvZ2V0b3B0LmgiCmV4dGVy
biBjaGFyICpvcHRhcmc7CiMgNTAgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9pbmNsdWRlL2dl
dG9wdC5oIgpleHRlcm4gaW50IG9wdGluZDsKCgoKCmV4dGVybiBpbnQgb3B0ZXJyOwoKCgpleHRl
cm4gaW50IG9wdG9wdDsKIyA4MiAiL3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4wL2luY2x1ZGUvZ2V0
b3B0LmgiCnN0cnVjdCBvcHRpb24KewoKICBjb25zdCBjaGFyICpuYW1lOwoKCgoKCiAgaW50IGhh
c19hcmc7CiAgaW50ICpmbGFnOwogIGludCB2YWw7Cn07CiMgMTEyICIvdXNyL3NyYy9nY2MvZ2Nj
LWN2cy0zLjAvaW5jbHVkZS9nZXRvcHQuaCIKZXh0ZXJuIGludCBnZXRvcHQgKGludCBhcmdjLCBj
aGFyICpjb25zdCAqYXJndiwgY29uc3QgY2hhciAqc2hvcnRvcHRzKTsKCgoKCgpleHRlcm4gaW50
IGdldG9wdF9sb25nIChpbnQgYXJnYywgY2hhciAqY29uc3QgKmFyZ3YsIGNvbnN0IGNoYXIgKnNo
b3J0b3B0cywKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IG9wdGlvbiAqbG9u
Z29wdHMsIGludCAqbG9uZ2luZCk7CmV4dGVybiBpbnQgZ2V0b3B0X2xvbmdfb25seSAoaW50IGFy
Z2MsIGNoYXIgKmNvbnN0ICphcmd2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGNoYXIgKnNob3J0b3B0cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1
Y3Qgb3B0aW9uICpsb25nb3B0cywgaW50ICpsb25naW5kKTsKCgpleHRlcm4gaW50IF9nZXRvcHRf
aW50ZXJuYWwgKGludCBhcmdjLCBjaGFyICpjb25zdCAqYXJndiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBjaGFyICpzaG9ydG9wdHMsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3Qgc3RydWN0IG9wdGlvbiAqbG9uZ29wdHMsIGludCAqbG9uZ2luZCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgbG9uZ19vbmx5KTsKIyA3MjYgIi91c3IvaW5jbHVk
ZS91bmlzdGQuaCIgMiAzCiMgNzM0ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIGlu
dCBnZXRob3N0bmFtZSAoY2hhciAqX19uYW1lLCBzb2NrbGVuX3QgX19sZW4pIDsKCgoKZXh0ZXJu
IGludCBzZXRob3N0bmFtZSAoX19jb25zdCBjaGFyICpfX25hbWUsIHNpemVfdCBfX2xlbikgOwoK
CgpleHRlcm4gaW50IHNldGhvc3RpZCAobG9uZyBpbnQgX19pZCkgOwoKCgoKCmV4dGVybiBpbnQg
Z2V0ZG9tYWlubmFtZSAoY2hhciAqX19uYW1lLCBzaXplX3QgX19sZW4pIDsKZXh0ZXJuIGludCBz
ZXRkb21haW5uYW1lIChfX2NvbnN0IGNoYXIgKl9fbmFtZSwgc2l6ZV90IF9fbGVuKSA7CgoKCmV4
dGVybiBpbnQgZnN5bmMgKGludCBfX2ZkKSA7CgoKCgoKZXh0ZXJuIGludCB2aGFuZ3VwICh2b2lk
KSA7CgoKZXh0ZXJuIGludCByZXZva2UgKF9fY29uc3QgY2hhciAqX19maWxlKSA7CgoKCgoKCgpl
eHRlcm4gaW50IHByb2ZpbCAodW5zaWduZWQgc2hvcnQgaW50ICpfX3NhbXBsZV9idWZmZXIsIHNp
emVfdCBfX3NpemUsCiAgICAgICAgICAgICAgICAgICBzaXplX3QgX19vZmZzZXQsIHVuc2lnbmVk
IGludCBfX3NjYWxlKSA7CgoKCgoKZXh0ZXJuIGludCBhY2N0IChfX2NvbnN0IGNoYXIgKl9fbmFt
ZSkgOwoKCgpleHRlcm4gaW50IGNocm9vdCAoX19jb25zdCBjaGFyICpfX3BhdGgpIDsKCgoKZXh0
ZXJuIGNoYXIgKmdldHVzZXJzaGVsbCAodm9pZCkgOwpleHRlcm4gdm9pZCBlbmR1c2Vyc2hlbGwg
KHZvaWQpIDsKZXh0ZXJuIHZvaWQgc2V0dXNlcnNoZWxsICh2b2lkKSA7CgoKCgpleHRlcm4gY2hh
ciAqZ2V0cGFzcyAoX19jb25zdCBjaGFyICpfX3Byb21wdCkgOwoKCgoKZXh0ZXJuIGludCBkYWVt
b24gKGludCBfX25vY2hkaXIsIGludCBfX25vY2xvc2UpIDsKCgoKCgoKCmV4dGVybiBsb25nIGlu
dCBnZXRob3N0aWQgKHZvaWQpIDsKCgpleHRlcm4gaW50IHN5bmMgKHZvaWQpIDsKCgoKCmV4dGVy
biBpbnQgZ2V0cGFnZXNpemUgKHZvaWQpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoK
CmV4dGVybiBpbnQgdHJ1bmNhdGUgKF9fY29uc3QgY2hhciAqX19maWxlLCBfX29mZl90IF9fbGVu
Z3RoKSA7CiMgODM0ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIGludCBmdHJ1bmNh
dGUgKGludCBfX2ZkLCBfX29mZl90IF9fbGVuZ3RoKSA7CiMgODUwICIvdXNyL2luY2x1ZGUvdW5p
c3RkLmgiIDMKZXh0ZXJuIGludCBnZXRkdGFibGVzaXplICh2b2lkKSA7CiMgODU5ICIvdXNyL2lu
Y2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIGludCBicmsgKHZvaWQgKl9fYWRkcikgOwoKCgoKCmV4
dGVybiB2b2lkICpzYnJrIChpbnRwdHJfdCBfX2RlbHRhKSA7CiMgODgwICIvdXNyL2luY2x1ZGUv
dW5pc3RkLmgiIDMKZXh0ZXJuIGxvbmcgaW50IHN5c2NhbGwgKGxvbmcgaW50IF9fc3lzbm8sIC4u
LikgOwojIDkwMCAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4dGVybiBpbnQgbG9ja2YgKGlu
dCBfX2ZkLCBpbnQgX19jbWQsIF9fb2ZmX3QgX19sZW4pIDsKIyA5MzEgIi91c3IvaW5jbHVkZS91
bmlzdGQuaCIgMwpleHRlcm4gaW50IGZkYXRhc3luYyAoaW50IF9fZmlsZGVzKSA7CiMgOTc2ICIv
dXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIGludCBwdGhyZWFkX2F0Zm9yayAodm9pZCAo
Kl9fcHJlcGFyZSkgKHZvaWQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICgqX19w
YXJlbnQpICh2b2lkKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKl9fY2hpbGQp
ICh2b2lkKSkgOwojIDgyICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAvZ2NjL3RzeXN0ZW0uaCIg
MgoKCiMgMSAiaW5jbHVkZS9saW1pdHMuaCIgMSAzCiMgMTEgImluY2x1ZGUvbGltaXRzLmgiIDMK
IyAxICJpbmNsdWRlL3N5c2xpbWl0cy5oIiAxIDMKCgoKCgoKIyAxICJpbmNsdWRlL2xpbWl0cy5o
IiAxIDMKIyAxMzAgImluY2x1ZGUvbGltaXRzLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvbGltaXRz
LmgiIDEgMwojIDI2ICIvdXNyL2luY2x1ZGUvbGltaXRzLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUv
ZmVhdHVyZXMuaCIgMSAzCiMgMjcgIi91c3IvaW5jbHVkZS9saW1pdHMuaCIgMiAzCgoKCiMgMSAi
L3Vzci9pbmNsdWRlL2JpdHMvcG9zaXgxX2xpbS5oIiAxIDMKIyAxMjYgIi91c3IvaW5jbHVkZS9i
aXRzL3Bvc2l4MV9saW0uaCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL2xvY2FsX2xpbS5oIiAx
IDMKIyAzNiAiL3Vzci9pbmNsdWRlL2JpdHMvbG9jYWxfbGltLmgiIDMKIyAxICIvdXNyL2luY2x1
ZGUvbGludXgvbGltaXRzLmgiIDEgMwojIDM3ICIvdXNyL2luY2x1ZGUvYml0cy9sb2NhbF9saW0u
aCIgMiAzCiMgMTI3ICIvdXNyL2luY2x1ZGUvYml0cy9wb3NpeDFfbGltLmgiIDIgMwojIDMxICIv
dXNyL2luY2x1ZGUvbGltaXRzLmgiIDIgMwoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3Bvc2l4
Ml9saW0uaCIgMSAzCiMgMzUgIi91c3IvaW5jbHVkZS9saW1pdHMuaCIgMiAzCiMgMTMxICJpbmNs
dWRlL2xpbWl0cy5oIiAyIDMKIyA4ICJpbmNsdWRlL3N5c2xpbWl0cy5oIiAyIDMKIyAxMiAiaW5j
bHVkZS9saW1pdHMuaCIgMiAzCiMgODUgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvdHN5
c3RlbS5oIiAyCgoKIyAxICIvdXNyL2luY2x1ZGUvdGltZS5oIiAxIDMKIyAyOCAiL3Vzci9pbmNs
dWRlL3RpbWUuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAxIDMKIyAyOSAiL3Vz
ci9pbmNsdWRlL3RpbWUuaCIgMiAzCiMgMzggIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKIyAxICJp
bmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAzOSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMiAzCgoKCiMg
MSAiL3Vzci9pbmNsdWRlL2JpdHMvdGltZS5oIiAxIDMKIyA0MyAiL3Vzci9pbmNsdWRlL3RpbWUu
aCIgMiAzCiMgNTcgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0
cy90eXBlcy5oIiAxIDMKIyA1OCAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMiAzCgoKdHlwZWRlZiBf
X2Nsb2NrX3QgY2xvY2tfdDsKIyAxMTcgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKc3RydWN0IHRt
CnsKICBpbnQgdG1fc2VjOwogIGludCB0bV9taW47CiAgaW50IHRtX2hvdXI7CiAgaW50IHRtX21k
YXk7CiAgaW50IHRtX21vbjsKICBpbnQgdG1feWVhcjsKICBpbnQgdG1fd2RheTsKICBpbnQgdG1f
eWRheTsKICBpbnQgdG1faXNkc3Q7CgoKICBsb25nIGludCB0bV9nbXRvZmY7CiAgX19jb25zdCBj
aGFyICp0bV96b25lOwoKCgoKfTsKCgoKCnN0cnVjdCBpdGltZXJzcGVjCiAgewogICAgc3RydWN0
IHRpbWVzcGVjIGl0X2ludGVydmFsOwogICAgc3RydWN0IHRpbWVzcGVjIGl0X3ZhbHVlOwogIH07
CgoKc3RydWN0IHNpZ2V2ZW50OwojIDE2MiAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwpleHRlcm4g
Y2xvY2tfdCBjbG9jayAodm9pZCkgOwoKCmV4dGVybiB0aW1lX3QgdGltZSAodGltZV90ICpfX3Rp
bWVyKSA7CgoKZXh0ZXJuIGRvdWJsZSBkaWZmdGltZSAodGltZV90IF9fdGltZTEsIHRpbWVfdCBf
X3RpbWUwKQogICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVy
biB0aW1lX3QgbWt0aW1lIChzdHJ1Y3QgdG0gKl9fdHApIDsKCgoKCgpleHRlcm4gc2l6ZV90IHN0
cmZ0aW1lIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9fbWF4c2l6ZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LAogICAgICAg
ICAgICAgICAgICAgICAgICBfX2NvbnN0IHN0cnVjdCB0bSAqX19yZXN0cmljdCBfX3RwKSA7CiMg
MTkzICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCmV4dGVybiBzdHJ1Y3QgdG0gKmdtdGltZSAoX19j
b25zdCB0aW1lX3QgKl9fdGltZXIpIDsKCgoKZXh0ZXJuIHN0cnVjdCB0bSAqbG9jYWx0aW1lIChf
X2NvbnN0IHRpbWVfdCAqX190aW1lcikgOwoKCgoKZXh0ZXJuIHN0cnVjdCB0bSAqZ210aW1lX3Ig
KF9fY29uc3QgdGltZV90ICpfX3Jlc3RyaWN0IF9fdGltZXIsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdHJ1Y3QgdG0gKl9fcmVzdHJpY3QgX190cCkgOwoKCgpleHRlcm4gc3RydWN0IHRt
ICpsb2NhbHRpbWVfciAoX19jb25zdCB0aW1lX3QgKl9fcmVzdHJpY3QgX190aW1lciwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB0bSAqX19yZXN0cmljdCBfX3RwKSA7CgoK
CgpleHRlcm4gY2hhciAqYXNjdGltZSAoX19jb25zdCBzdHJ1Y3QgdG0gKl9fdHApIDsKCgpleHRl
cm4gY2hhciAqY3RpbWUgKF9fY29uc3QgdGltZV90ICpfX3RpbWVyKSA7CgoKCgoKCmV4dGVybiBj
aGFyICphc2N0aW1lX3IgKF9fY29uc3Qgc3RydWN0IHRtICpfX3Jlc3RyaWN0IF9fdHAsCiAgICAg
ICAgICAgICAgICAgICAgICAgIGNoYXIgKl9fcmVzdHJpY3QgX19idWYpIDsKCgpleHRlcm4gY2hh
ciAqY3RpbWVfciAoX19jb25zdCB0aW1lX3QgKl9fcmVzdHJpY3QgX190aW1lciwKICAgICAgICAg
ICAgICAgICAgICAgIGNoYXIgKl9fcmVzdHJpY3QgX19idWYpIDsKCgoKCmV4dGVybiBjaGFyICpf
X3R6bmFtZVsyXTsKZXh0ZXJuIGludCBfX2RheWxpZ2h0OwpleHRlcm4gbG9uZyBpbnQgX190aW1l
em9uZTsKCgoKCmV4dGVybiBjaGFyICp0em5hbWVbMl07CgoKCmV4dGVybiB2b2lkIHR6c2V0ICh2
b2lkKSA7CgoKCmV4dGVybiBpbnQgZGF5bGlnaHQ7CmV4dGVybiBsb25nIGludCB0aW1lem9uZTsK
CgoKCgpleHRlcm4gaW50IHN0aW1lIChfX2NvbnN0IHRpbWVfdCAqX193aGVuKSA7CiMgMjcwICIv
dXNyL2luY2x1ZGUvdGltZS5oIiAzCmV4dGVybiB0aW1lX3QgdGltZWdtIChzdHJ1Y3QgdG0gKl9f
dHApIDsKCgpleHRlcm4gdGltZV90IHRpbWVsb2NhbCAoc3RydWN0IHRtICpfX3RwKSA7CgoKZXh0
ZXJuIGludCBkeXNpemUgKGludCBfX3llYXIpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsK
CgoKCgpleHRlcm4gaW50IG5hbm9zbGVlcCAoX19jb25zdCBzdHJ1Y3QgdGltZXNwZWMgKl9fcmVx
dWVzdGVkX3RpbWUsCiAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdGltZXNwZWMgKl9fcmVt
YWluaW5nKSA7CgoKCmV4dGVybiBpbnQgY2xvY2tfZ2V0cmVzIChjbG9ja2lkX3QgX19jbG9ja19p
ZCwgc3RydWN0IHRpbWVzcGVjICpfX3JlcykgOwoKCmV4dGVybiBpbnQgY2xvY2tfZ2V0dGltZSAo
Y2xvY2tpZF90IF9fY2xvY2tfaWQsIHN0cnVjdCB0aW1lc3BlYyAqX190cCkgOwoKCmV4dGVybiBp
bnQgY2xvY2tfc2V0dGltZSAoY2xvY2tpZF90IF9fY2xvY2tfaWQsIF9fY29uc3Qgc3RydWN0IHRp
bWVzcGVjICpfX3RwKQogICAgICAgICAgICA7CiMgMzA4ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAz
CmV4dGVybiBpbnQgdGltZXJfY3JlYXRlIChjbG9ja2lkX3QgX19jbG9ja19pZCwKICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0cnVjdCBzaWdldmVudCAqX19yZXN0cmljdCBfX2V2cCwKICAgICAg
ICAgICAgICAgICAgICAgICAgIHRpbWVyX3QgKl9fcmVzdHJpY3QgX190aW1lcmlkKSA7CgoKZXh0
ZXJuIGludCB0aW1lcl9kZWxldGUgKHRpbWVyX3QgX190aW1lcmlkKSA7CgoKZXh0ZXJuIGludCB0
aW1lcl9zZXR0aW1lICh0aW1lcl90IF9fdGltZXJpZCwgaW50IF9fZmxhZ3MsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgX19jb25zdCBzdHJ1Y3QgaXRpbWVyc3BlYyAqX19yZXN0cmljdCBfX3Zh
bHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBpdGltZXJzcGVjICpfX3Jlc3Ry
aWN0IF9fb3ZhbHVlKSA7CgoKZXh0ZXJuIGludCB0aW1lcl9nZXR0aW1lICh0aW1lcl90IF9fdGlt
ZXJpZCwgc3RydWN0IGl0aW1lcnNwZWMgKl9fdmFsdWUpCiAgICAgICAgICAgIDsKCgpleHRlcm4g
aW50IHRpbWVyX2dldG92ZXJydW4gKHRpbWVyX3QgX190aW1lcmlkKSA7CiMgODggIi91c3Ivc3Jj
L2djYy9nY2MtY3ZzLTMuMC9nY2MvdHN5c3RlbS5oIiAyCiMgMzggIi91c3Ivc3JjL2djYy9nY2Mt
Y3ZzLTMuMC9nY2MvbGliZ2NjMi5jIiAyCgojIDEgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9n
Y2MvbWFjaG1vZGUuaCIgMQojIDQwICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAvZ2NjL2xpYmdj
YzIuYyIgMgoKCgoKCgojIDEgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvbGliZ2NjMi5o
IiAxCiMgMjUgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvbGliZ2NjMi5oIgp0eXBlZGVm
IHZvaWQgKCpfX3Rlcm1pbmF0ZV9mdW5jX3B0cikodm9pZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9y
ZXR1cm5fXykpOwoKZXh0ZXJuIGludCBfX2djY19iY21wIChjb25zdCB1bnNpZ25lZCBjaGFyICos
IGNvbnN0IHVuc2lnbmVkIGNoYXIgKiwgc2l6ZV90KTsKZXh0ZXJuIHZvaWQgKl9fYnVpbHRpbl9z
YXZlcmVncyAodm9pZCk7CmV4dGVybiB2b2lkIF9fZHVtbXkgKHZvaWQpOwpleHRlcm4gdm9pZCBf
X2NsZWFyX2NhY2hlIChjaGFyICosIGNoYXIgKik7CmV4dGVybiB2b2lkIF9fcHVyZV92aXJ0dWFs
ICh2b2lkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9fKSk7CmV4dGVybiB2b2lkIF9fdGVy
bWluYXRlICh2b2lkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9fKSk7CmV4dGVybiBfX3Rl
cm1pbmF0ZV9mdW5jX3B0ciBfX3Rlcm1pbmF0ZV9zZXRfZnVuYyAoX190ZXJtaW5hdGVfZnVuY19w
dHIpOwpleHRlcm4gdm9pZCBfX2RlZmF1bHRfdGVybWluYXRlICh2b2lkKSBfX2F0dHJpYnV0ZV9f
ICgoX19ub3JldHVybl9fKSk7CmV4dGVybiB2b2lkICpfX3Rocm93X3R5cGVfbWF0Y2ggKHZvaWQg
Kiwgdm9pZCAqLCB2b2lkICopOwpleHRlcm4gdm9pZCBfX2VtcHR5ICh2b2lkKTsKZXh0ZXJuIHZv
aWQgKl9fZ2V0X2VoX2NvbnRleHQgKHZvaWQpOwpleHRlcm4gdm9pZCAqKl9fZ2V0X2VoX2luZm8g
KHZvaWQpOwpleHRlcm4gdm9pZCAqKipfX2dldF9keW5hbWljX2hhbmRsZXJfY2hhaW4gKHZvaWQp
OwpleHRlcm4gaW50IF9fZWhfcnRpbWVfbWF0Y2ggKHZvaWQgKik7CmV4dGVybiB2b2lkIF9fdW53
aW5kaW5nX2NsZWFudXAgKHZvaWQpOwpleHRlcm4gdm9pZCBfX3JldGhyb3cgKHZvaWQgKik7CmV4
dGVybiB2b2lkIF9fdGhyb3cgKHZvaWQpOwpleHRlcm4gdm9pZCBfX3NqdGhyb3cgKHZvaWQpIF9f
YXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsKZXh0ZXJuIHZvaWQgX19zanBvcG50aHJvdyAo
dm9pZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwpleHRlcm4gdm9pZCBfX2Vwcmlu
dGYgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCB1bnNpZ25lZCBpbnQsIGNvbnN0IGNoYXIg
KikKICBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9fKSk7CmV4dGVybiB2b2lkICpfX2VoX2Fs
bG9jIChzaXplX3QpOwpleHRlcm4gdm9pZCBfX2VoX2ZyZWUgKHZvaWQgKik7CgpzdHJ1Y3QgYmI7
CmV4dGVybiB2b2lkIF9fYmJfZXhpdF9mdW5jICh2b2lkKTsKZXh0ZXJuIHZvaWQgX19iYl9pbml0
X2Z1bmMgKHN0cnVjdCBiYiAqKTsKZXh0ZXJuIHZvaWQgX19iYl9mb3JrX2Z1bmMgKHZvaWQpOwpl
eHRlcm4gdm9pZCBfX2JiX3RyYWNlX2Z1bmMgKHZvaWQpOwpleHRlcm4gdm9pZCBfX2JiX3RyYWNl
X3JldCAodm9pZCk7CmV4dGVybiB2b2lkIF9fYmJfaW5pdF90cmFjZV9mdW5jIChzdHJ1Y3QgYmIg
KiwgdW5zaWduZWQgbG9uZyk7CgpzdHJ1Y3QgZXhjZXB0aW9uX2Rlc2NyaXB0b3I7CmV4dGVybiBz
aG9ydCBpbnQgX19nZXRfZWhfdGFibGVfbGFuZ3VhZ2UgKHN0cnVjdCBleGNlcHRpb25fZGVzY3Jp
cHRvciAqKTsKZXh0ZXJuIHNob3J0IGludCBfX2dldF9laF90YWJsZV92ZXJzaW9uIChzdHJ1Y3Qg
ZXhjZXB0aW9uX2Rlc2NyaXB0b3IgKik7CiMgODggIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9n
Y2MvbGliZ2NjMi5oIgp0eXBlZGVmIGludCBRSXR5cGUgX19hdHRyaWJ1dGVfXyAoKG1vZGUgKFFJ
KSkpOwp0eXBlZGVmIHVuc2lnbmVkIGludCBVUUl0eXBlIF9fYXR0cmlidXRlX18gKChtb2RlIChR
SSkpKTsKdHlwZWRlZiBpbnQgSEl0eXBlIF9fYXR0cmlidXRlX18gKChtb2RlIChISSkpKTsKdHlw
ZWRlZiB1bnNpZ25lZCBpbnQgVUhJdHlwZSBfX2F0dHJpYnV0ZV9fICgobW9kZSAoSEkpKSk7CgoK
dHlwZWRlZiBpbnQgU0l0eXBlIF9fYXR0cmlidXRlX18gKChtb2RlIChTSSkpKTsKdHlwZWRlZiB1
bnNpZ25lZCBpbnQgVVNJdHlwZSBfX2F0dHJpYnV0ZV9fICgobW9kZSAoU0kpKSk7CgoKdHlwZWRl
ZiBpbnQgREl0eXBlIF9fYXR0cmlidXRlX18gKChtb2RlIChESSkpKTsKdHlwZWRlZiB1bnNpZ25l
ZCBpbnQgVURJdHlwZSBfX2F0dHJpYnV0ZV9fICgobW9kZSAoREkpKSk7CiMgMTEwICIvdXNyL3Ny
Yy9nY2MvZ2NjLWN2cy0zLjAvZ2NjL2xpYmdjYzIuaCIKdHlwZWRlZiBmbG9hdCBTRnR5cGUgX19h
dHRyaWJ1dGVfXyAoKG1vZGUgKFNGKSkpOwp0eXBlZGVmIGZsb2F0IERGdHlwZSBfX2F0dHJpYnV0
ZV9fICgobW9kZSAoREYpKSk7CgoKdHlwZWRlZiBmbG9hdCBYRnR5cGUgX19hdHRyaWJ1dGVfXyAo
KG1vZGUgKFhGKSkpOwojIDE0MyAiL3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4wL2djYy9saWJnY2My
LmgiCnR5cGVkZWYgaW50IHdvcmRfdHlwZSBfX2F0dHJpYnV0ZV9fICgobW9kZSAoX193b3JkX18p
KSk7CiMgMjM1ICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAvZ2NjL2xpYmdjYzIuaCIKZXh0ZXJu
IERJdHlwZSBfX211bGRpMyAoREl0eXBlLCBESXR5cGUpOwpleHRlcm4gREl0eXBlIF9fZGl2ZGkz
IChESXR5cGUsIERJdHlwZSk7CmV4dGVybiBVREl0eXBlIF9fdWRpdmRpMyAoVURJdHlwZSwgVURJ
dHlwZSk7CmV4dGVybiBVREl0eXBlIF9fdW1vZGRpMyAoVURJdHlwZSwgVURJdHlwZSk7CmV4dGVy
biBESXR5cGUgX19tb2RkaTMgKERJdHlwZSwgREl0eXBlKTsKCgoKCmV4dGVybiBVREl0eXBlIF9f
dWRpdm1vZGRpNCAoVURJdHlwZSwgVURJdHlwZSwgVURJdHlwZSAqKTsKCgoKCmV4dGVybiBESXR5
cGUgX19uZWdkaTIgKERJdHlwZSk7CgoKZXh0ZXJuIERJdHlwZSBfX2xzaHJkaTMgKERJdHlwZSwg
d29yZF90eXBlKTsKZXh0ZXJuIERJdHlwZSBfX2FzaGxkaTMgKERJdHlwZSwgd29yZF90eXBlKTsK
ZXh0ZXJuIERJdHlwZSBfX2FzaHJkaTMgKERJdHlwZSwgd29yZF90eXBlKTsKZXh0ZXJuIERJdHlw
ZSBfX2Zmc2RpMiAoREl0eXBlKTsKCgoKCmV4dGVybiBVU0l0eXBlIF9fdWRpdl93X3NkaXYgKFVT
SXR5cGUgKiwgVVNJdHlwZSwgVVNJdHlwZSwgVVNJdHlwZSk7CgoKZXh0ZXJuIHdvcmRfdHlwZSBf
X2NtcGRpMiAoREl0eXBlLCBESXR5cGUpOwpleHRlcm4gd29yZF90eXBlIF9fdWNtcGRpMiAoREl0
eXBlLCBESXR5cGUpOwoKZXh0ZXJuIFNJdHlwZSBfX2Fic3ZzaTIgKFNJdHlwZSk7CmV4dGVybiBE
SXR5cGUgX19hYnN2ZGkyIChESXR5cGUpOwpleHRlcm4gU0l0eXBlIF9fYWRkdnNpMyAoU0l0eXBl
LCBTSXR5cGUpOwpleHRlcm4gREl0eXBlIF9fYWRkdmRpMyAoREl0eXBlLCBESXR5cGUpOwpleHRl
cm4gU0l0eXBlIF9fc3VidnNpMyAoU0l0eXBlLCBTSXR5cGUpOwpleHRlcm4gREl0eXBlIF9fc3Vi
dmRpMyAoREl0eXBlLCBESXR5cGUpOwpleHRlcm4gU0l0eXBlIF9fbXVsdnNpMyAoU0l0eXBlLCBT
SXR5cGUpOwpleHRlcm4gREl0eXBlIF9fbXVsdmRpMyAoREl0eXBlLCBESXR5cGUpOwpleHRlcm4g
U0l0eXBlIF9fbmVndnNpMiAoU0l0eXBlKTsKZXh0ZXJuIERJdHlwZSBfX25lZ3ZkaTIgKERJdHlw
ZSk7CgoKZXh0ZXJuIERJdHlwZSBfX2ZpeGRmZGkgKERGdHlwZSk7CmV4dGVybiBESXR5cGUgX19m
aXhzZmRpIChTRnR5cGUpOwpleHRlcm4gREZ0eXBlIF9fZmxvYXRkaWRmIChESXR5cGUpOwpleHRl
cm4gU0Z0eXBlIF9fZmxvYXRkaXNmIChESXR5cGUpOwpleHRlcm4gVVNJdHlwZSBfX2ZpeHVuc2Rm
c2kgKERGdHlwZSk7CmV4dGVybiBVU0l0eXBlIF9fZml4dW5zc2ZzaSAoU0Z0eXBlKTsKZXh0ZXJu
IERJdHlwZSBfX2ZpeHVuc2RmZGkgKERGdHlwZSk7CmV4dGVybiBESXR5cGUgX19maXh1bnNzZmRp
IChTRnR5cGUpOwoKCmV4dGVybiBESXR5cGUgX19maXh4ZmRpIChYRnR5cGUpOwpleHRlcm4gREl0
eXBlIF9fZml4dW5zeGZkaSAoWEZ0eXBlKTsKZXh0ZXJuIFhGdHlwZSBfX2Zsb2F0ZGl4ZiAoREl0
eXBlKTsKZXh0ZXJuIFVTSXR5cGUgX19maXh1bnN4ZnNpIChYRnR5cGUpOwojIDMwNyAiL3Vzci9z
cmMvZ2NjL2djYy1jdnMtMy4wL2djYy9saWJnY2MyLmgiCiAgc3RydWN0IERXc3RydWN0IHtTSXR5
cGUgbG93LCBoaWdoO307CgoKCgoKCnR5cGVkZWYgdW5pb24KewogIHN0cnVjdCBEV3N0cnVjdCBz
OwogIERJdHlwZSBsbDsKfSBEV3VuaW9uOwoKIyAxICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAv
Z2NjL2xvbmdsb25nLmgiIDEKIyAzMjEgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvbGli
Z2NjMi5oIiAyCiMgNDcgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvbGliZ2NjMi5jIiAy
CiMgMzEzNSAiL3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4wL2djYy9saWJnY2MyLmMiCiMgMSAiL3Vz
ci9zcmMvZ2NjL2djYy1jdnMtMy4wL2djYy9ndGhyLmgiIDEKIyAxMDIgIi91c3Ivc3JjL2djYy9n
Y2MtY3ZzLTMuMC9nY2MvZ3Roci5oIgojIDEgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2Mv
Z3Roci1zaW5nbGUuaCIgMQojIDM0ICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAvZ2NjL2d0aHIt
c2luZ2xlLmgiCnR5cGVkZWYgaW50IF9fZ3RocmVhZF9tdXRleF90OwojIDIwNCAiL3Vzci9zcmMv
Z2NjL2djYy1jdnMtMy4wL2djYy9ndGhyLXNpbmdsZS5oIgpzdGF0aWMgX19pbmxpbmVfXyBpbnQK
X19ndGhyZWFkX2FjdGl2ZV9wICh2b2lkKQp7CiAgcmV0dXJuIDA7Cn0KCnN0YXRpYyBfX2lubGlu
ZV9fIGludApfX2d0aHJlYWRfbXV0ZXhfbG9jayAoX19ndGhyZWFkX211dGV4X3QgKm11dGV4IF9f
YXR0cmlidXRlX18gKChfX3VudXNlZF9fKSkpCnsKICByZXR1cm4gMDsKfQoKc3RhdGljIF9faW5s
aW5lX18gaW50Cl9fZ3RocmVhZF9tdXRleF90cnlsb2NrIChfX2d0aHJlYWRfbXV0ZXhfdCAqbXV0
ZXggX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKSkKewogIHJldHVybiAwOwp9CgpzdGF0aWMg
X19pbmxpbmVfXyBpbnQKX19ndGhyZWFkX211dGV4X3VubG9jayAoX19ndGhyZWFkX211dGV4X3Qg
Km11dGV4IF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSkpCnsKICByZXR1cm4gMDsKfQojIDEw
MyAiL3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4wL2djYy9ndGhyLmgiIDIKIyAzMTM2ICIvdXNyL3Ny
Yy9nY2MvZ2NjLWN2cy0zLjAvZ2NjL2xpYmdjYzIuYyIgMgoKCgp2b2lkCl9fZGVmYXVsdF90ZXJt
aW5hdGUgKHZvaWQpCnsKICBhYm9ydCAoKTsKfQoKc3RhdGljIF9fdGVybWluYXRlX2Z1bmNfcHRy
IF9fdGVybWluYXRlX2Z1bmMgPQogIF9fZGVmYXVsdF90ZXJtaW5hdGU7Cgp2b2lkIF9fYXR0cmli
dXRlX18oKF9fbm9yZXR1cm5fXykpCl9fdGVybWluYXRlICh2b2lkKQp7CiAgKCpfX3Rlcm1pbmF0
ZV9mdW5jKSgpOwp9CgpfX3Rlcm1pbmF0ZV9mdW5jX3B0cgpfX3Rlcm1pbmF0ZV9zZXRfZnVuYyAo
X190ZXJtaW5hdGVfZnVuY19wdHIgbmV3ZnVuYykKewogIF9fdGVybWluYXRlX2Z1bmNfcHRyIG9s
ZGZ1bmMgPSBfX3Rlcm1pbmF0ZV9mdW5jOwoKICBfX3Rlcm1pbmF0ZV9mdW5jID0gbmV3ZnVuYzsK
ICByZXR1cm4gKG9sZGZ1bmMpOwp9Cgp2b2lkICoKX190aHJvd190eXBlX21hdGNoICh2b2lkICpj
YXRjaF90eXBlLCB2b2lkICp0aHJvd190eXBlLCB2b2lkICpvYmopCnsKCgoKCiBpZiAoX19leHRl
bnNpb25fXyAoeyBzaXplX3QgX19zMV9sZW4sIF9fczJfbGVuOyAoX19idWlsdGluX2NvbnN0YW50
X3AgKChjb25zdCBjaGFyICopY2F0Y2hfdHlwZSkgJiYgX19idWlsdGluX2NvbnN0YW50X3AgKChj
b25zdCBjaGFyICopdGhyb3dfdHlwZSkgJiYgKF9fczFfbGVuID0gc3RybGVuICgoY29uc3QgY2hh
ciAqKWNhdGNoX3R5cGUpLCBfX3MyX2xlbiA9IHN0cmxlbiAoKGNvbnN0IGNoYXIgKil0aHJvd190
eXBlKSwgKCEoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoKGNvbnN0IGNoYXIgKiljYXRjaF90eXBl
KSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoY29uc3QgY2hhciAqKWNhdGNoX3R5cGUp
ID09IDEpIHx8IF9fczFfbGVuID49IDQpICYmICghKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKChj
b25zdCBjaGFyICopdGhyb3dfdHlwZSkgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoKGNv
bnN0IGNoYXIgKil0aHJvd190eXBlKSA9PSAxKSB8fCBfX3MyX2xlbiA+PSA0KSkgPyBtZW1jbXAg
KChfX2NvbnN0IGNoYXIgKikgKChjb25zdCBjaGFyICopY2F0Y2hfdHlwZSksIChfX2NvbnN0IGNo
YXIgKikgKChjb25zdCBjaGFyICopdGhyb3dfdHlwZSksIChfX3MxX2xlbiA8IF9fczJfbGVuID8g
X19zMV9sZW4gOiBfX3MyX2xlbikgKyAxKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoKGNvbnN0
IGNoYXIgKiljYXRjaF90eXBlKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoKGNvbnN0IGNo
YXIgKiljYXRjaF90eXBlKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoY29uc3QgY2hh
ciAqKWNhdGNoX3R5cGUpID09IDEpICYmIChfX3MxX2xlbiA9IHN0cmxlbiAoKGNvbnN0IGNoYXIg
KiljYXRjaF90eXBlKSwgX19zMV9sZW4gPCA0KSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoKGNv
bnN0IGNoYXIgKil0aHJvd190eXBlKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoKGNvbnN0
IGNoYXIgKil0aHJvd190eXBlKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoY29uc3Qg
Y2hhciAqKXRocm93X3R5cGUpID09IDEpID8gKF9fZXh0ZW5zaW9uX18gKHsgcmVnaXN0ZXIgaW50
IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KChjb25zdCBjaGFyICopY2F0Y2hfdHlwZSkpWzBdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIg
KikgKF9fY29uc3QgY2hhciAqKSgoY29uc3QgY2hhciAqKXRocm93X3R5cGUpKVswXSk7IGlmIChf
X3MxX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5z
aWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgoY29uc3QgY2hhciAqKWNhdGNoX3R5cGUp
KVsxXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKChjb25z
dCBjaGFyICopdGhyb3dfdHlwZSkpWzFdKTsgaWYgKF9fczFfbGVuID4gMSAmJiBfX3Jlc3VsdCA9
PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNo
YXIgKikgKChjb25zdCBjaGFyICopY2F0Y2hfdHlwZSkpWzJdIC0gKChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoKGNvbnN0IGNoYXIgKil0aHJvd190eXBlKSlbMl0p
OyBpZiAoX19zMV9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgoX19jb25z
dCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKChjb25zdCBjaGFyICopY2F0Y2hf
dHlwZSkpWzNdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAo
KGNvbnN0IGNoYXIgKil0aHJvd190eXBlKSlbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSA6IChfX2V4
dGVuc2lvbl9fICh7IF9fY29uc3QgdW5zaWduZWQgY2hhciAqX19zMiA9IChfX2NvbnN0IHVuc2ln
bmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoKGNvbnN0IGNoYXIgKil0aHJvd190eXBlKTsg
cmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikgKChjb25zdCBjaGFyICopY2F0Y2hfdHlwZSkpWzBdIC0gX19zMlswXSk7IGlm
IChfX3MxX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3Qg
dW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgoY29uc3QgY2hhciAqKWNhdGNoX3R5
cGUpKVsxXSAtIF9fczJbMV0pOyBpZiAoX19zMV9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsg
X19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAo
KGNvbnN0IGNoYXIgKiljYXRjaF90eXBlKSlbMl0gLSBfX3MyWzJdKTsgaWYgKF9fczFfbGVuID4g
MiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAq
KSAoX19jb25zdCBjaGFyICopICgoY29uc3QgY2hhciAqKWNhdGNoX3R5cGUpKVszXSAtIF9fczJb
M10pOyB9IH0gX19yZXN1bHQ7IH0pKSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AgKChjb25zdCBj
aGFyICopdGhyb3dfdHlwZSkgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKChjb25zdCBjaGFy
ICopdGhyb3dfdHlwZSkgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoKGNvbnN0IGNoYXIg
Kil0aHJvd190eXBlKSA9PSAxKSAmJiAoX19zMl9sZW4gPSBzdHJsZW4gKChjb25zdCBjaGFyICop
dGhyb3dfdHlwZSksIF9fczJfbGVuIDwgNCkgPyAoX19idWlsdGluX2NvbnN0YW50X3AgKChjb25z
dCBjaGFyICopY2F0Y2hfdHlwZSkgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKChjb25zdCBj
aGFyICopY2F0Y2hfdHlwZSkgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoKGNvbnN0IGNo
YXIgKiljYXRjaF90eXBlKSA9PSAxKSA/IChfX2V4dGVuc2lvbl9fICh7IHJlZ2lzdGVyIGludCBf
X3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgo
Y29uc3QgY2hhciAqKWNhdGNoX3R5cGUpKVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikoKGNvbnN0IGNoYXIgKil0aHJvd190eXBlKSlbMF0pOyBpZiAoX19z
Ml9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2ln
bmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoKGNvbnN0IGNoYXIgKiljYXRjaF90eXBlKSlb
MV0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgoY29uc3Qg
Y2hhciAqKXRocm93X3R5cGUpKVsxXSk7IGlmIChfX3MyX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0g
MCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFy
ICopICgoY29uc3QgY2hhciAqKWNhdGNoX3R5cGUpKVsyXSAtICgoX19jb25zdCB1bnNpZ25lZCBj
aGFyICopIChfX2NvbnN0IGNoYXIgKikgKChjb25zdCBjaGFyICopdGhyb3dfdHlwZSkpWzJdKTsg
aWYgKF9fczJfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29uc3Qg
dW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgoY29uc3QgY2hhciAqKWNhdGNoX3R5
cGUpKVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKChj
b25zdCBjaGFyICopdGhyb3dfdHlwZSkpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkgOiAoX19leHRl
bnNpb25fXyAoeyBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKl9fczEgPSAoX19jb25zdCB1bnNpZ25l
ZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKChjb25zdCBjaGFyICopY2F0Y2hfdHlwZSk7IHJl
Z2lzdGVyIGludCBfX3Jlc3VsdCA9IF9fczFbMF0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAq
KSAoX19jb25zdCBjaGFyICopICgoY29uc3QgY2hhciAqKXRocm93X3R5cGUpKVswXTsgaWYgKF9f
czJfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKF9fczFbMV0gLSAoKF9f
Y29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgoY29uc3QgY2hhciAqKXRo
cm93X3R5cGUpKVsxXSk7IGlmIChfX3MyX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jl
c3VsdCA9IChfX3MxWzJdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh
ciAqKSAoKGNvbnN0IGNoYXIgKil0aHJvd190eXBlKSlbMl0pOyBpZiAoX19zMl9sZW4gPiAyICYm
IF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKF9fczFbM10gLSAoKF9fY29uc3QgdW5zaWduZWQg
Y2hhciAqKSAoX19jb25zdCBjaGFyICopICgoY29uc3QgY2hhciAqKXRocm93X3R5cGUpKVszXSk7
IH0gfSBfX3Jlc3VsdDsgfSkpKSA6IHN0cmNtcCAoKGNvbnN0IGNoYXIgKiljYXRjaF90eXBlLCAo
Y29uc3QgY2hhciAqKXRocm93X3R5cGUpKSkpOyB9KSA9PSAwKQogICByZXR1cm4gb2JqOwogcmV0
dXJuIDA7Cn0KCnZvaWQKX19lbXB0eSAodm9pZCkKewp9CgoKCgojIDEgIi91c3Ivc3JjL2djYy9n
Y2MtY3ZzLTMuMC9nY2MvZWgtY29tbW9uLmgiIDEKIyA1NyAiL3Vzci9zcmMvZ2NjL2djYy1jdnMt
My4wL2djYy9laC1jb21tb24uaCIKc3RydWN0IGVoX2NvbnRleHQKewogIHZvaWQgKmhhbmRsZXJf
bGFiZWw7CiAgdm9pZCAqKmR5bmFtaWNfaGFuZGxlcl9jaGFpbjsKCiAgdm9pZCAqaW5mbzsKCiAg
dm9pZCAqdGFibGVfaW5kZXg7CgogIGNoYXIgYWxsb2NfYnVmZmVyWzE5Ml0KICAgICAgX19hdHRy
aWJ1dGVfXygoX19hbGlnbmVkX18oMTYpKSk7CiAgdW5zaWduZWQgYWxsb2NfbWFzazsKfTsKCgoK
dHlwZWRlZiBzdHJ1Y3Qgb2xkX2V4Y2VwdGlvbl90YWJsZQp7CiAgdm9pZCAqc3RhcnRfcmVnaW9u
OwogIHZvaWQgKmVuZF9yZWdpb247CiAgdm9pZCAqZXhjZXB0aW9uX2hhbmRsZXI7Cn0gb2xkX2V4
Y2VwdGlvbl90YWJsZTsKCnR5cGVkZWYgc3RydWN0IGV4Y2VwdGlvbl90YWJsZQp7CiAgdm9pZCAq
c3RhcnRfcmVnaW9uOwogIHZvaWQgKmVuZF9yZWdpb247CiAgdm9pZCAqZXhjZXB0aW9uX2hhbmRs
ZXI7CiAgdm9pZCAqbWF0Y2hfaW5mbzsKfSBleGNlcHRpb25fdGFibGU7CgoKCgp0eXBlZGVmIHN0
cnVjdCBleGNlcHRpb25fbGFuZ19pbmZvCnsKICBzaG9ydCBsYW5ndWFnZTsKICBzaG9ydCB2ZXJz
aW9uOwp9IGV4Y2VwdGlvbl9sYW5nX2luZm87CiMgMTA2ICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0z
LjAvZ2NjL2VoLWNvbW1vbi5oIgp0eXBlZGVmIHN0cnVjdCBleGNlcHRpb25fZGVzY3JpcHRvcgp7
CiAgdm9pZCAqcnVudGltZV9pZF9maWVsZDsKICBleGNlcHRpb25fbGFuZ19pbmZvIGxhbmc7CiAg
ZXhjZXB0aW9uX3RhYmxlIHRhYmxlWzFdOwp9IGV4Y2VwdGlvbl9kZXNjcmlwdG9yOwoKc3RydWN0
IF9fZWhfaW5mbzsKIyAxMjMgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvZWgtY29tbW9u
LmgiCnR5cGVkZWYgdm9pZCAqICgqX19laF9tYXRjaGVyKSAoc3RydWN0IF9fZWhfaW5mbyAqLCB2
b2lkICosIHN0cnVjdCBleGNlcHRpb25fZGVzY3JpcHRvciAqKTsKIyAxMzQgIi91c3Ivc3JjL2dj
Yy9nY2MtY3ZzLTMuMC9nY2MvZWgtY29tbW9uLmgiCnR5cGVkZWYgc3RydWN0IF9fZWhfaW5mbwp7
CiAgX19laF9tYXRjaGVyIG1hdGNoX2Z1bmN0aW9uOwogIHNob3J0IGxhbmd1YWdlOwogIHNob3J0
IHZlcnNpb247Cn0gX19laF9pbmZvOwoKCgoKZW51bSBleGNlcHRpb25fc291cmNlX2xhbmd1YWdl
CiAgewogICAgRUhfTEFOR19DODkgPSAweDAwMDEsCiAgICBFSF9MQU5HX0MgPSAweDAwMDIsCiAg
ICBFSF9MQU5HX0FkYTgzID0gMHgwMDAzLAogICAgRUhfTEFOR19DX3BsdXNfcGx1cyA9IDB4MDAw
NCwKICAgIEVIX0xBTkdfQ29ib2w3NCA9IDB4MDAwNSwKICAgIEVIX0xBTkdfQ29ib2w4NSA9IDB4
MDAwNiwKICAgIEVIX0xBTkdfRm9ydHJhbjc3ID0gMHgwMDA3LAogICAgRUhfTEFOR19Gb3J0cmFu
OTAgPSAweDAwMDgsCiAgICBFSF9MQU5HX1Bhc2NhbDgzID0gMHgwMDA5LAogICAgRUhfTEFOR19N
b2R1bGEyID0gMHgwMDBhLAogICAgRUhfTEFOR19KYXZhID0gMHgwMDBiLAogICAgRUhfTEFOR19N
aXBzX0Fzc2VtYmxlciA9IDB4ODAwMQogIH07CiMgMzE4NCAiL3Vzci9zcmMvZ2NjL2djYy1jdnMt
My4wL2djYy9saWJnY2MyLmMiIDIKCiMgMSAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDEgMwojIDMx
ODYgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvbGliZ2NjMi5jIiAyCiMgMzIzMCAiL3Vz
ci9zcmMvZ2NjL2djYy1jdnMtMy4wL2djYy9saWJnY2MyLmMiCnN0YXRpYyBzdHJ1Y3QgZWhfY29u
dGV4dCAqZWhfY29udGV4dF9pbml0aWFsaXplICh2b2lkKTsKc3RhdGljIHN0cnVjdCBlaF9jb250
ZXh0ICplaF9jb250ZXh0X3N0YXRpYyAodm9pZCk7CgoKCgpzdGF0aWMgc3RydWN0IGVoX2NvbnRl
eHQgKigqZ2V0X2VoX2NvbnRleHQpICh2b2lkKSA9ICZlaF9jb250ZXh0X2luaXRpYWxpemU7CgoK
Cgp2b2lkICoKX19nZXRfZWhfY29udGV4dCAodm9pZCkKewogIHJldHVybiAodm9pZCAqKSAoKmdl
dF9laF9jb250ZXh0KSAoKTsKfQoKCgp2b2lkICoqCl9fZ2V0X2VoX2luZm8gKHZvaWQpCnsKICBz
dHJ1Y3QgZWhfY29udGV4dCAqZWggPSAoKmdldF9laF9jb250ZXh0KSAoKTsKICByZXR1cm4gJmVo
LT5pbmZvOwp9CgoKc3RhdGljIGludCBkd2FyZl9yZWdfc2l6ZV90YWJsZV9pbml0aWFsaXplZCA9
IDA7CnN0YXRpYyBjaGFyIGR3YXJmX3JlZ19zaXplX3RhYmxlWzE3XTsKCnN0YXRpYyB2b2lkCmlu
aXRfcmVnX3NpemVfdGFibGUgKHZvaWQpCnsKICBfX2J1aWx0aW5faW5pdF9kd2FyZl9yZWdfc2l6
ZV90YWJsZSAoZHdhcmZfcmVnX3NpemVfdGFibGUpOwogIGR3YXJmX3JlZ19zaXplX3RhYmxlX2lu
aXRpYWxpemVkID0gMTsKfQojIDMyODUgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvbGli
Z2NjMi5jIgpzdGF0aWMgc3RydWN0IGVoX2NvbnRleHQgKgplaF9jb250ZXh0X2luaXRpYWxpemUg
KHZvaWQpCnsKIyAzMzEyICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAvZ2NjL2xpYmdjYzIuYyIK
ICBnZXRfZWhfY29udGV4dCA9ICZlaF9jb250ZXh0X3N0YXRpYzsKCgogIGluaXRfcmVnX3NpemVf
dGFibGUgKCk7CgoKCgogIHJldHVybiAoKmdldF9laF9jb250ZXh0KSAoKTsKfQoKCgpzdGF0aWMg
c3RydWN0IGVoX2NvbnRleHQgKgplaF9jb250ZXh0X3N0YXRpYyAodm9pZCkKewogIHN0YXRpYyBz
dHJ1Y3QgZWhfY29udGV4dCBlaDsKICBzdGF0aWMgaW50IGluaXRpYWxpemVkOwogIHN0YXRpYyB2
b2lkICp0b3BfZWx0WzJdOwoKICBpZiAoISBpbml0aWFsaXplZCkKICAgIHsKICAgICAgaW5pdGlh
bGl6ZWQgPSAxOwogICAgICAoX19leHRlbnNpb25fXyAoX19idWlsdGluX2NvbnN0YW50X3AgKHNp
emVvZiBlaCkgJiYgKHNpemVvZiBlaCkgPD0gMTYgPyAoKHNpemVvZiBlaCkgPT0gMSA/ICh7IHZv
aWQgKl9fcyA9ICgmZWgpOyAqKChfX3VpbnQ4X3QgKikgX19zKSA9IChfX3VpbnQ4X3QpIDA7IF9f
czsgfSkgOiAoeyB2b2lkICpfX3MgPSAoJmVoKTsgdW5pb24geyB1bnNpZ25lZCBpbnQgX191aTsg
dW5zaWduZWQgc2hvcnQgaW50IF9fdXNpOyB1bnNpZ25lZCBjaGFyIF9fdWM7IH0gKl9fdSA9IF9f
czsgX191aW50OF90IF9fYyA9IChfX3VpbnQ4X3QpICgwKTsgc3dpdGNoICgodW5zaWduZWQgaW50
KSAoc2l6ZW9mIGVoKSkgeyBjYXNlIDE1OiBfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBf
X3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsgY2FzZSAxMTogX191LT5fX3Vp
ID0gX19jICogMHgwMTAxMDEwMTsgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsg
NCk7IGNhc2UgNzogX191LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsgX191ID0gX19leHRlbnNp
b25fXyAoKHZvaWQgKikgX191ICsgNCk7IGNhc2UgMzogX191LT5fX3VzaSA9ICh1bnNpZ25lZCBz
aG9ydCBpbnQpIF9fYyAqIDB4MDEwMTsgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191
ICsgMik7IF9fdS0+X191YyA9ICh1bnNpZ25lZCBjaGFyKSBfX2M7IGJyZWFrOyBjYXNlIDE0OiBf
X3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAq
KSBfX3UgKyA0KTsgY2FzZSAxMDogX191LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsgX191ID0g
X19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7IGNhc2UgNjogX191LT5fX3VpID0gX19j
ICogMHgwMTAxMDEwMTsgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7IGNh
c2UgMjogX191LT5fX3VzaSA9ICh1bnNpZ25lZCBzaG9ydCBpbnQpIF9fYyAqIDB4MDEwMTsgYnJl
YWs7IGNhc2UgMTM6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5z
aW9uX18gKCh2b2lkICopIF9fdSArIDQpOyBjYXNlIDk6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEw
MTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQpOyBjYXNlIDU6IF9f
dS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICop
IF9fdSArIDQpOyBjYXNlIDE6IF9fdS0+X191YyA9ICh1bnNpZ25lZCBjaGFyKSBfX2M7IGJyZWFr
OyBjYXNlIDE2OiBfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lv
bl9fICgodm9pZCAqKSBfX3UgKyA0KTsgY2FzZSAxMjogX191LT5fX3VpID0gX19jICogMHgwMTAx
MDEwMTsgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7IGNhc2UgODogX191
LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikg
X191ICsgNCk7IGNhc2UgNDogX191LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsgY2FzZSAwOiBi
cmVhazsgfSBfX3M7IH0pKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoMCkgJiYgKDApID09ICdc
MCcgPyAoeyB2b2lkICpfX3MgPSAoJmVoKTsgX19idWlsdGluX21lbXNldCAoX19zLCAnXDAnLCBz
aXplb2YgZWgpOyBfX3M7IH0pIDogbWVtc2V0ICgmZWgsIDAsIHNpemVvZiBlaCkpKSk7CiAgICAg
IGVoLmR5bmFtaWNfaGFuZGxlcl9jaGFpbiA9IHRvcF9lbHQ7CiAgICB9CiAgcmV0dXJuICZlaDsK
fQojIDMzNzAgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvbGliZ2NjMi5jIgp2b2lkICoK
X19laF9hbGxvYyAoc2l6ZV90IHNpemUpCnsKICB2b2lkICpwOwoKICBpZiAoIXNpemUpCiAgICBh
Ym9ydCgpOwogIHAgPSBtYWxsb2MgKHNpemUpOwogIGlmIChwID09IDApCiAgICB7CiAgICAgIHN0
cnVjdCBlaF9jb250ZXh0ICplaCA9IF9fZ2V0X2VoX2NvbnRleHQgKCk7CiAgICAgIHVuc2lnbmVk
IGJsb2NrcyA9IChzaXplICsgMTYgLSAxKSAvIDE2OwogICAgICB1bnNpZ25lZCByZWFsX21hc2sg
PSBlaC0+YWxsb2NfbWFzayB8IChlaC0+YWxsb2NfbWFzayA8PCAxKTsKICAgICAgdW5zaWduZWQg
b3VyX21hc2s7CiAgICAgIHVuc2lnbmVkIGl4OwoKICAgICAgaWYgKGJsb2NrcyA+IDE5MiAvIDE2
KQogICAgICAgIF9fdGVybWluYXRlICgpOwogICAgICBibG9ja3MgKz0gYmxvY2tzID09IDE7CiAg
ICAgIG91cl9tYXNrID0gKDEgPDwgYmxvY2tzKSAtIDE7CgogICAgICBmb3IgKGl4ID0gMTkyIC8g
MTYgLSBibG9ja3M7IGl4OyBpeC0tKQogICAgICAgIGlmICghICgocmVhbF9tYXNrID4+IGl4KSAm
IG91cl9tYXNrKSkKICAgICAgICAgIHsKCiAgICAgICAgICAgIHAgPSAmZWgtPmFsbG9jX2J1ZmZl
cltpeCAqIDE2XTsKICAgICAgICAgICAgZWgtPmFsbG9jX21hc2sgfD0gKG91cl9tYXNrID4+IDEp
IDw8IGl4OwogICAgICAgICAgICByZXR1cm4gcDsKICAgICAgICAgIH0KICAgICAgX190ZXJtaW5h
dGUgKCk7CiAgICB9CiAgcmV0dXJuIHA7Cn0KCgoKdm9pZApfX2VoX2ZyZWUgKHZvaWQgKnApCnsK
ICBzdHJ1Y3QgZWhfY29udGV4dCAqZWggPSBfX2dldF9laF9jb250ZXh0ICgpOwoKICBwdHJkaWZm
X3QgZGlmZiA9IChjaGFyICopcCAtICZlaC0+YWxsb2NfYnVmZmVyWzBdOwogIGlmIChkaWZmID49
IDAgJiYgZGlmZiA8IDE5MikKICAgIHsKICAgICAgdW5zaWduZWQgbWFzayA9IGVoLT5hbGxvY19t
YXNrOwogICAgICB1bnNpZ25lZCBiaXQgPSAxIDw8IChkaWZmIC8gMTYpOwoKICAgICAgZG8KICAg
ICAgICB7CiAgICAgICAgICBtYXNrIF49IGJpdDsKICAgICAgICAgIGJpdCA8PD0gMTsKICAgICAg
ICB9CiAgICAgIHdoaWxlIChtYXNrICYgYml0KTsKICAgICAgZWgtPmFsbG9jX21hc2sgPSBtYXNr
OwogICAgfQogIGVsc2UKICAgIGZyZWUgKHApOwp9CiMgMzQ0MiAiL3Vzci9zcmMvZ2NjL2djYy1j
dnMtMy4wL2djYy9saWJnY2MyLmMiCnZvaWQgKioqCl9fZ2V0X2R5bmFtaWNfaGFuZGxlcl9jaGFp
biAodm9pZCkKewogIHN0cnVjdCBlaF9jb250ZXh0ICplaCA9ICgqZ2V0X2VoX2NvbnRleHQpICgp
OwogIHJldHVybiAmZWgtPmR5bmFtaWNfaGFuZGxlcl9jaGFpbjsKfQojIDM0NTcgIi91c3Ivc3Jj
L2djYy9nY2MtY3ZzLTMuMC9nY2MvbGliZ2NjMi5jIgp2b2lkCl9fc2p0aHJvdyAodm9pZCkKewog
IHN0cnVjdCBlaF9jb250ZXh0ICplaCA9ICgqZ2V0X2VoX2NvbnRleHQpICgpOwogIHZvaWQgKioq
ZGhjID0gJmVoLT5keW5hbWljX2hhbmRsZXJfY2hhaW47CiAgdm9pZCAqam1wYnVmOwogIHZvaWQg
KCpmdW5jKSh2b2lkICosIGludCk7CiAgdm9pZCAqYXJnOwoKICB2b2lkICoqKmNsZWFudXAgPSAo
dm9pZCoqKikmKCpkaGMpWzFdOwoKCiAgaWYgKGNsZWFudXBbMF0pCiAgICB7CiAgICAgIGRvdWJs
ZSBzdG9yZVsyMDBdOwogICAgICB2b2lkICoqYnVmID0gKHZvaWQqKilzdG9yZTsKICAgICAgYnVm
WzFdID0gMDsKICAgICAgYnVmWzBdID0gKCpkaGMpOwoKCgoKCiAgICAgIGlmICghIF9fYnVpbHRp
bl9zZXRqbXAgKCZidWZbMl0pKQoKICAgICAgICB7CiAgICAgICAgICAqZGhjID0gYnVmOwogICAg
ICAgICAgd2hpbGUgKGNsZWFudXBbMF0pCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBmdW5j
ID0gKHZvaWQoKikodm9pZCosIGludCkpY2xlYW51cFswXVsxXTsKICAgICAgICAgICAgICBhcmcg
PSAodm9pZCopY2xlYW51cFswXVsyXTsKCgogICAgICAgICAgICAgIGNsZWFudXBbMF0gPSAodm9p
ZCAqKiljbGVhbnVwWzBdWzBdOwoKICAgICAgICAgICAgICAoKmZ1bmMpKGFyZywgMik7CiAgICAg
ICAgICAgIH0KICAgICAgICAgICpkaGMgPSBidWZbMF07CiAgICAgICAgfQoKICAgICAgZWxzZQog
ICAgICAgIHsKICAgICAgICAgIF9fdGVybWluYXRlICgpOwogICAgICAgIH0KICAgIH0KCgoKCiAg
aWYgKCEgZWgtPmluZm8gfHwgKCpkaGMpWzBdID09IDApCiAgICBfX3Rlcm1pbmF0ZSAoKTsKCgoK
ICBqbXBidWYgPSAmKCpkaGMpWzJdOwoKCiAgKmRoYyA9ICh2b2lkKiopKCpkaGMpWzBdOwoKCgoK
CgogIF9fYnVpbHRpbl9sb25nam1wIChqbXBidWYsIDEpOwoKfQoKCgoKCgp2b2lkCl9fc2pwb3Bu
dGhyb3cgKHZvaWQpCnsKICBzdHJ1Y3QgZWhfY29udGV4dCAqZWggPSAoKmdldF9laF9jb250ZXh0
KSAoKTsKICB2b2lkICoqKmRoYyA9ICZlaC0+ZHluYW1pY19oYW5kbGVyX2NoYWluOwogIHZvaWQg
KCpmdW5jKSh2b2lkICosIGludCk7CiAgdm9pZCAqYXJnOwoKICB2b2lkICoqKmNsZWFudXAgPSAo
dm9pZCoqKikmKCpkaGMpWzFdOwoKCiAgaWYgKGNsZWFudXBbMF0pCiAgICB7CiAgICAgIGRvdWJs
ZSBzdG9yZVsyMDBdOwogICAgICB2b2lkICoqYnVmID0gKHZvaWQqKilzdG9yZTsKICAgICAgYnVm
WzFdID0gMDsKICAgICAgYnVmWzBdID0gKCpkaGMpOwoKCgoKCiAgICAgIGlmICghIF9fYnVpbHRp
bl9zZXRqbXAgKCZidWZbMl0pKQoKICAgICAgICB7CiAgICAgICAgICAqZGhjID0gYnVmOwogICAg
ICAgICAgd2hpbGUgKGNsZWFudXBbMF0pCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBmdW5j
ID0gKHZvaWQoKikodm9pZCosIGludCkpY2xlYW51cFswXVsxXTsKICAgICAgICAgICAgICBhcmcg
PSAodm9pZCopY2xlYW51cFswXVsyXTsKCgogICAgICAgICAgICAgIGNsZWFudXBbMF0gPSAodm9p
ZCAqKiljbGVhbnVwWzBdWzBdOwoKICAgICAgICAgICAgICAoKmZ1bmMpKGFyZywgMik7CiAgICAg
ICAgICAgIH0KICAgICAgICAgICpkaGMgPSBidWZbMF07CiAgICAgICAgfQoKICAgICAgZWxzZQog
ICAgICAgIHsKICAgICAgICAgIF9fdGVybWluYXRlICgpOwogICAgICAgIH0KICAgIH0KCgogICpk
aGMgPSAodm9pZCoqKSgqZGhjKVswXTsKCiAgX19zanRocm93ICgpOwp9CgoKCmludApfX2VoX3J0
aW1lX21hdGNoICh2b2lkICpydGltZSkKewogIHZvaWQgKmluZm87CiAgX19laF9tYXRjaGVyIG1h
dGNoZXI7CiAgdm9pZCAqcmV0OwoKICBpbmZvID0gKihfX2dldF9laF9pbmZvICgpKTsKICBtYXRj
aGVyID0gKChfX2VoX2luZm8gKilpbmZvKS0+bWF0Y2hfZnVuY3Rpb247CiAgaWYgKCEgbWF0Y2hl
cikKICAgIHsKCiAgICAgIGZwcmludGYgKHN0ZGVyciwgIkludGVybmFsIENvbXBpbGVyIEJ1Zzog
Tm8gcnVudGltZSB0eXBlIG1hdGNoZXIuIik7CgogICAgICByZXR1cm4gMDsKICAgIH0KICByZXQg
PSAoKm1hdGNoZXIpIChpbmZvLCBydGltZSwgKHZvaWQgKikwKTsKICByZXR1cm4gKHJldCAhPSAo
KHZvaWQgKikwKSk7Cn0KIyAzNjE2ICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAvZ2NjL2xpYmdj
YzIuYyIKc2hvcnQKX19nZXRfZWhfdGFibGVfdmVyc2lvbiAoZXhjZXB0aW9uX2Rlc2NyaXB0b3Ig
KnRhYmxlKQp7CiAgcmV0dXJuIHRhYmxlLT5sYW5nLnZlcnNpb247Cn0KCgoKc2hvcnQKX19nZXRf
ZWhfdGFibGVfbGFuZ3VhZ2UgKGV4Y2VwdGlvbl9kZXNjcmlwdG9yICp0YWJsZSkKewogIHJldHVy
biB0YWJsZS0+bGFuZy5sYW5ndWFnZTsKfQojIDM2MzggIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMu
MC9nY2MvbGliZ2NjMi5jIgpzdGF0aWMgdm9pZCAqCm9sZF9maW5kX2V4Y2VwdGlvbl9oYW5kbGVy
ICh2b2lkICpwYywgb2xkX2V4Y2VwdGlvbl90YWJsZSAqdGFibGUpCnsKICBpZiAodGFibGUpCiAg
ICB7CiAgICAgIGludCBwb3M7CiAgICAgIGludCBiZXN0ID0gLTE7CgoKCiAgICAgIGZvciAocG9z
ID0gMDsgdGFibGVbcG9zXS5zdGFydF9yZWdpb24gIT0gKHZvaWQgKikgLTE7ICsrcG9zKQogICAg
ICAgIHsKICAgICAgICAgIGlmICh0YWJsZVtwb3NdLnN0YXJ0X3JlZ2lvbiA8PSBwYyAmJiB0YWJs
ZVtwb3NdLmVuZF9yZWdpb24gPiBwYykKICAgICAgICAgICAgewoKCiAgICAgICAgICAgICAgaWYg
KGJlc3QgPT0gLTEgfHwgKHRhYmxlW3Bvc10uZW5kX3JlZ2lvbiA8PSB0YWJsZVtiZXN0XS5lbmRf
cmVnaW9uCiAgICAgICAgICAgICAgICAgICAgICAgICYmIHRhYmxlW3Bvc10uc3RhcnRfcmVnaW9u
ID49IHRhYmxlW2Jlc3RdLnN0YXJ0X3JlZ2lvbikpCiAgICAgICAgICAgICAgICBiZXN0ID0gcG9z
OwogICAgICAgICAgICB9CgogICAgICAgICAgZWxzZSBpZiAoYmVzdCA+PSAwICYmIHRhYmxlW3Bv
c10uc3RhcnRfcmVnaW9uID4gcGMpCiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAg
aWYgKGJlc3QgIT0gLTEpCiAgICAgICAgcmV0dXJuIHRhYmxlW2Jlc3RdLmV4Y2VwdGlvbl9oYW5k
bGVyOwogICAgfQoKICByZXR1cm4gKHZvaWQgKikgMDsKfQojIDM2ODIgIi91c3Ivc3JjL2djYy9n
Y2MtY3ZzLTMuMC9nY2MvbGliZ2NjMi5jIgpzdGF0aWMgdm9pZCAqCmZpbmRfZXhjZXB0aW9uX2hh
bmRsZXIgKHZvaWQgKnBjLCBleGNlcHRpb25fZGVzY3JpcHRvciAqdGFibGUsCiAgICAgICAgICAg
ICAgICAgICAgICAgIF9fZWhfaW5mbyAqZWhfaW5mbywgaW50IHJldGhyb3csIGludCAqY2xlYW51
cCkKewoKICB2b2lkICpyZXR2YWwgPSAoKHZvaWQgKikwKTsKICAqY2xlYW51cCA9IDE7CiAgaWYg
KHRhYmxlKQogICAgewogICAgICBpbnQgcG9zID0gMDsKCgoKICAgICAgZXhjZXB0aW9uX3RhYmxl
ICp0YWIgPSAmKHRhYmxlLT50YWJsZVswXSk7CgoKICAgICAgaWYgKHJldGhyb3cpCiAgICAgICAg
ewoKICAgICAgICAgIHBvcyA9ICgoZXhjZXB0aW9uX3RhYmxlICopIHBjKSAtIHRhYjsKICAgICAg
ICAgIHBjID0gKChleGNlcHRpb25fdGFibGUgKikgcGMpLT5lbmRfcmVnaW9uIC0gMTsKCgoKCiAg
ICAgICAgICBpZiAodGFiW3Bvc10uc3RhcnRfcmVnaW9uICE9ICh2b2lkICopIC0xKQogICAgICAg
ICAgICBwb3MrKzsKICAgICAgICB9CiAgICAgIGVsc2UKICAgICAgICBwYy0tOwoKCgogICAgICBm
b3IgKCA7IHRhYltwb3NdLnN0YXJ0X3JlZ2lvbiAhPSAodm9pZCAqKSAtMTsgcG9zKyspCiAgICAg
ICAgewogICAgICAgICAgaWYgKHRhYltwb3NdLnN0YXJ0X3JlZ2lvbiA8PSBwYyAmJiB0YWJbcG9z
XS5lbmRfcmVnaW9uID4gcGMpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBpZiAodGFiW3Bv
c10ubWF0Y2hfaW5mbykKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgX19laF9t
YXRjaGVyIG1hdGNoZXIgPSBlaF9pbmZvLT5tYXRjaF9mdW5jdGlvbjsKCiAgICAgICAgICAgICAg
ICAgIGlmIChtYXRjaGVyKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAg
ICAgIHZvaWQgKnJldCA9ICgqbWF0Y2hlcikoKHZvaWQgKikgZWhfaW5mbywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFiW3Bvc10ubWF0Y2hfaW5mbywgdGFi
bGUpOwogICAgICAgICAgICAgICAgICAgICAgaWYgKHJldCkKICAgICAgICAgICAgICAgICAgICAg
ICAgewogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXR2YWwgPT0gKCh2b2lkICopMCkp
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR2YWwgPSB0YWJbcG9zXS5leGNlcHRpb25f
aGFuZGxlcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAqY2xlYW51cCA9IDA7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICBpZiAocmV0dmFsID09ICgodm9pZCAqKTAp
KQogICAgICAgICAgICAgICAgICAgIHJldHZhbCA9IHRhYltwb3NdLmV4Y2VwdGlvbl9oYW5kbGVy
OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogIHJldHVy
biByZXR2YWw7Cn0KCgoKCgoKIyAxICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAvZ2NjL2ZyYW1l
LmgiIDEKIyAyOCAiL3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4wL2djYy9mcmFtZS5oIgp0eXBlZGVm
IHN0cnVjdCBmcmFtZV9zdGF0ZQp7CiAgdm9pZCAqY2ZhOwogIHZvaWQgKmVoX3B0cjsKICBsb25n
IGNmYV9vZmZzZXQ7CiAgbG9uZyBhcmdzX3NpemU7CiAgbG9uZyByZWdfb3Jfb2Zmc2V0WzE3ICsx
XTsKICB1bnNpZ25lZCBzaG9ydCBjZmFfcmVnOwogIHVuc2lnbmVkIHNob3J0IHJldGFkZHJfY29s
dW1uOwogIGNoYXIgc2F2ZWRbMTcgKzFdOwogIGxvbmcgYmFzZV9vZmZzZXQ7CiAgY2hhciBpbmRp
cmVjdDsKfSBmcmFtZV9zdGF0ZTsKIyA1NCAiL3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4wL2djYy9m
cmFtZS5oIgpzdHJ1Y3Qgb2JqZWN0IHsKCgoKICB2b2lkICpwY19iZWdpbjsKICB2b2lkICpwY19l
bmQ7CiAgc3RydWN0IGR3YXJmX2ZkZSAqZmRlX2JlZ2luOwoKCgogIHN0cnVjdCBkd2FyZl9mZGUg
KipmZGVfYXJyYXk7CiAgc2l6ZV90IGNvdW50OwogIHN0cnVjdCBvYmplY3QgKm5leHQ7Cn07CgoK
CgoKCmV4dGVybiB2b2lkIF9fcmVnaXN0ZXJfZnJhbWUgKHZvaWQgKiApOwpleHRlcm4gdm9pZCBf
X3JlZ2lzdGVyX2ZyYW1lX3RhYmxlICh2b2lkICopOwpleHRlcm4gdm9pZCBfX2RlcmVnaXN0ZXJf
ZnJhbWUgKHZvaWQgKik7CgoKCgpleHRlcm4gdm9pZCBfX3JlZ2lzdGVyX2ZyYW1lX2luZm8gKHZv
aWQgKiwgc3RydWN0IG9iamVjdCAqKTsKCgoKCmV4dGVybiB2b2lkIF9fcmVnaXN0ZXJfZnJhbWVf
aW5mb190YWJsZSAodm9pZCAqLCBzdHJ1Y3Qgb2JqZWN0ICopOwoKCgpleHRlcm4gdm9pZCAqX19k
ZXJlZ2lzdGVyX2ZyYW1lX2luZm8gKHZvaWQgKik7CgoKCgoKCmV4dGVybiBzdHJ1Y3QgZnJhbWVf
c3RhdGUgKl9fZnJhbWVfc3RhdGVfZm9yICh2b2lkICosIHN0cnVjdCBmcmFtZV9zdGF0ZSAqKTsK
IyAzNzUzICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAvZ2NjL2xpYmdjYzIuYyIgMgoKCgoKCgp0
eXBlZGVmIGludCBwdHJfdHlwZSBfX2F0dHJpYnV0ZV9fICgobW9kZSAocG9pbnRlcikpKTsKCnR5
cGVkZWYgc3RydWN0CnsKICB3b3JkX3R5cGUgKnJlZ1sxN107Cn0gc2F2ZWRfcmVnc190OwojIDM3
OTIgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvbGliZ2NjMi5jIgpzdGF0aWMgX19pbmxp
bmVfXyBpbnQKaW5fcmVnX3dpbmRvdyAoaW50IHJlZyBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRf
XykpLAogICAgICAgICAgICAgICBmcmFtZV9zdGF0ZSAqdWRhdGEgX19hdHRyaWJ1dGVfXyAoKF9f
dW51c2VkX18pKSkKewogIHJldHVybiAwOwp9CgoKCgoKc3RhdGljIHdvcmRfdHlwZSAqCmdldF9y
ZWdfYWRkciAodW5zaWduZWQgcmVnLCBmcmFtZV9zdGF0ZSAqdWRhdGEsIGZyYW1lX3N0YXRlICpz
dWJfdWRhdGEpCnsKICB3aGlsZSAodWRhdGEtPnNhdmVkW3JlZ10gPT0gMikKICAgIHsKICAgICAg
cmVnID0gdWRhdGEtPnJlZ19vcl9vZmZzZXRbcmVnXTsKICAgICAgaWYgKGluX3JlZ193aW5kb3cg
KHJlZywgdWRhdGEpKQogICAgICAgIHsKICAgICAgICAgIHVkYXRhID0gc3ViX3VkYXRhOwogICAg
ICAgICAgc3ViX3VkYXRhID0gKCh2b2lkICopMCk7CiAgICAgICAgfQogICAgfQogIGlmICh1ZGF0
YS0+c2F2ZWRbcmVnXSA9PSAxKQogICAgcmV0dXJuICh3b3JkX3R5cGUgKikodWRhdGEtPmNmYSAr
IHVkYXRhLT5yZWdfb3Jfb2Zmc2V0W3JlZ10pOwogIGVsc2UKCiAgICByZXR1cm4gKCh2b2lkICop
MCk7Cn0KCgoKCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgKgpnZXRfcmVnICh1bnNpZ25lZCByZWcs
IGZyYW1lX3N0YXRlICp1ZGF0YSwgZnJhbWVfc3RhdGUgKnN1Yl91ZGF0YSkKewogIHJldHVybiAo
dm9pZCAqKShwdHJfdHlwZSkgKmdldF9yZWdfYWRkciAocmVnLCB1ZGF0YSwgc3ViX3VkYXRhKTsK
fQoKCgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkCnB1dF9yZWcgKHVuc2lnbmVkIHJlZywgdm9pZCAq
dmFsLCBmcmFtZV9zdGF0ZSAqdWRhdGEpCnsKICAqZ2V0X3JlZ19hZGRyIChyZWcsIHVkYXRhLCAo
KHZvaWQgKikwKSkgPSAod29yZF90eXBlKShwdHJfdHlwZSkgdmFsOwp9CgoKCgoKc3RhdGljIHZv
aWQKY29weV9yZWcgKHVuc2lnbmVkIHJlZywgd29yZF90eXBlICpwcmVnLCBmcmFtZV9zdGF0ZSAq
dGFyZ2V0X3VkYXRhKQp7CiAgd29yZF90eXBlICpwdHJlZyA9IGdldF9yZWdfYWRkciAocmVnLCB0
YXJnZXRfdWRhdGEsICgodm9pZCAqKTApKTsKICBtZW1jcHkgKHB0cmVnLCBwcmVnLCBkd2FyZl9y
ZWdfc2l6ZV90YWJsZSBbcmVnXSk7Cn0KCgoKc3RhdGljIF9faW5saW5lX18gdm9pZCAqCmdldF9y
ZXR1cm5fYWRkciAoZnJhbWVfc3RhdGUgKnVkYXRhLCBmcmFtZV9zdGF0ZSAqc3ViX3VkYXRhKQp7
CiAgcmV0dXJuIF9fYnVpbHRpbl9leHRyYWN0X3JldHVybl9hZGRyCiAgICAoZ2V0X3JlZyAodWRh
dGEtPnJldGFkZHJfY29sdW1uLCB1ZGF0YSwgc3ViX3VkYXRhKSk7Cn0KCgoKc3RhdGljIF9faW5s
aW5lX18gdm9pZApwdXRfcmV0dXJuX2FkZHIgKHZvaWQgKnZhbCwgZnJhbWVfc3RhdGUgKnVkYXRh
KQp7CiAgdmFsID0gX19idWlsdGluX2Zyb2JfcmV0dXJuX2FkZHIgKHZhbCk7CiAgcHV0X3JlZyAo
dWRhdGEtPnJldGFkZHJfY29sdW1uLCB2YWwsIHVkYXRhKTsKfQoKCgoKCnN0YXRpYyB2b2lkICoK
bmV4dF9zdGFja19sZXZlbCAodm9pZCAqcGMsIGZyYW1lX3N0YXRlICp1ZGF0YSwgZnJhbWVfc3Rh
dGUgKmNhbGxlcl91ZGF0YSwKICAgICAgICAgICAgICAgICAgc2F2ZWRfcmVnc190ICpzYXZlZF9y
ZWdzKQp7CiAgaW50IGk7CiAgd29yZF90eXBlICpwOwoKCiAgZm9yIChpID0gMDsgaSA8IDE3OyBp
KyspCiAgICBpZiAodWRhdGEtPnNhdmVkW2ldKQogICAgICBzYXZlZF9yZWdzLT5yZWdbaV0gPSBn
ZXRfcmVnX2FkZHIgKGksIHVkYXRhLCBjYWxsZXJfdWRhdGEpOwoKICBjYWxsZXJfdWRhdGEgPSBf
X2ZyYW1lX3N0YXRlX2ZvciAocGMsIGNhbGxlcl91ZGF0YSk7CiAgaWYgKCEgY2FsbGVyX3VkYXRh
KQogICAgcmV0dXJuIDA7CgoKCgoKCiAgcCA9IHNhdmVkX3JlZ3MtPnJlZ1tjYWxsZXJfdWRhdGEt
PmNmYV9yZWddOwogIGlmIChwKQogICAgY2FsbGVyX3VkYXRhLT5jZmEgPSAodm9pZCAqKShwdHJf
dHlwZSkqcDsKICBlbHNlCiAgICBjYWxsZXJfdWRhdGEtPmNmYSA9IHVkYXRhLT5jZmE7CgogIGlm
IChjYWxsZXJfdWRhdGEtPmluZGlyZWN0KQogICAgY2FsbGVyX3VkYXRhLT5jZmEgPSAqICh2b2lk
ICoqKSAoKHVuc2lnbmVkIGNoYXIgKiljYWxsZXJfdWRhdGEtPmNmYQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKyBjYWxsZXJfdWRhdGEtPmJhc2Vfb2Zmc2V0KTsKICBjYWxs
ZXJfdWRhdGEtPmNmYSArPSBjYWxsZXJfdWRhdGEtPmNmYV9vZmZzZXQ7CgogIHJldHVybiBjYWxs
ZXJfdWRhdGE7Cn0KCgp2b2lkCl9fdW53aW5kaW5nX2NsZWFudXAgKHZvaWQpCnsKfQojIDM5MjYg
Ii91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvbGliZ2NjMi5jIgpzdGF0aWMgdm9pZCAqCnRo
cm93X2hlbHBlciAoc3RydWN0IGVoX2NvbnRleHQgKmVoLCB2b2lkICpwYywgZnJhbWVfc3RhdGUg
Km15X3VkYXRhLAogICAgICAgICAgICAgIGxvbmcgKm9mZnNldF9wKQp7CiAgZnJhbWVfc3RhdGUg
dXN0cnVjdDIsICp1ZGF0YSA9ICZ1c3RydWN0MjsKICBmcmFtZV9zdGF0ZSB1c3RydWN0OwogIGZy
YW1lX3N0YXRlICpzdWJfdWRhdGEgPSAmdXN0cnVjdDsKICB2b2lkICpzYXZlZF9wYyA9IHBjOwog
IHZvaWQgKmhhbmRsZXI7CiAgdm9pZCAqaGFuZGxlcl9wID0gMDsKICB2b2lkICpwY19wID0gMDsK
ICB2b2lkICpjYWxsZWVfY2ZhID0gMDsKICBmcmFtZV9zdGF0ZSBzYXZlZF91c3RydWN0OwogIGlu
dCBuZXdfZWhfbW9kZWw7CiAgaW50IGNsZWFudXAgPSAwOwogIGludCBvbmx5X2NsZWFudXAgPSAw
OwogIGludCByZXRocm93ID0gMDsKICBpbnQgc2F2ZWRfc3RhdGUgPSAwOwogIGxvbmcgYXJnc19z
aXplOwogIHNhdmVkX3JlZ3NfdCBzYXZlZF9yZWdzLCBjbGVhbnVwX3JlZ3M7CiAgX19laF9pbmZv
ICplaF9pbmZvID0gKF9fZWhfaW5mbyAqKWVoLT5pbmZvOwogIGludCBpOwoKICAoX19leHRlbnNp
b25fXyAoX19idWlsdGluX2NvbnN0YW50X3AgKHNpemVvZiBzYXZlZF9yZWdzLnJlZykgJiYgKHNp
emVvZiBzYXZlZF9yZWdzLnJlZykgPD0gMTYgPyAoKHNpemVvZiBzYXZlZF9yZWdzLnJlZykgPT0g
MSA/ICh7IHZvaWQgKl9fcyA9IChzYXZlZF9yZWdzLnJlZyk7ICooKF9fdWludDhfdCAqKSBfX3Mp
ID0gKF9fdWludDhfdCkgMDsgX19zOyB9KSA6ICh7IHZvaWQgKl9fcyA9IChzYXZlZF9yZWdzLnJl
Zyk7IHVuaW9uIHsgdW5zaWduZWQgaW50IF9fdWk7IHVuc2lnbmVkIHNob3J0IGludCBfX3VzaTsg
dW5zaWduZWQgY2hhciBfX3VjOyB9ICpfX3UgPSBfX3M7IF9fdWludDhfdCBfX2MgPSAoX191aW50
OF90KSAoMCk7IHN3aXRjaCAoKHVuc2lnbmVkIGludCkgKHNpemVvZiBzYXZlZF9yZWdzLnJlZykp
IHsgY2FzZSAxNTogX191LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsgX191ID0gX19leHRlbnNp
b25fXyAoKHZvaWQgKikgX191ICsgNCk7IGNhc2UgMTE6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEw
MTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQpOyBjYXNlIDc6IF9f
dS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICop
IF9fdSArIDQpOyBjYXNlIDM6IF9fdS0+X191c2kgPSAodW5zaWduZWQgc2hvcnQgaW50KSBfX2Mg
KiAweDAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDIpOyBfX3UtPl9f
dWMgPSAodW5zaWduZWQgY2hhcikgX19jOyBicmVhazsgY2FzZSAxNDogX191LT5fX3VpID0gX19j
ICogMHgwMTAxMDEwMTsgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7IGNh
c2UgMTA6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18g
KCh2b2lkICopIF9fdSArIDQpOyBjYXNlIDY6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7
IF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQpOyBjYXNlIDI6IF9fdS0+X191
c2kgPSAodW5zaWduZWQgc2hvcnQgaW50KSBfX2MgKiAweDAxMDE7IGJyZWFrOyBjYXNlIDEzOiBf
X3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAq
KSBfX3UgKyA0KTsgY2FzZSA5OiBfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBfX3UgPSBf
X2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsgY2FzZSA1OiBfX3UtPl9fdWkgPSBfX2Mg
KiAweDAxMDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsgY2Fz
ZSAxOiBfX3UtPl9fdWMgPSAodW5zaWduZWQgY2hhcikgX19jOyBicmVhazsgY2FzZSAxNjogX191
LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikg
X191ICsgNCk7IGNhc2UgMTI6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9f
ZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQpOyBjYXNlIDg6IF9fdS0+X191aSA9IF9fYyAq
IDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQpOyBjYXNl
IDQ6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IGNhc2UgMDogYnJlYWs7IH0gX19zOyB9
KSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AgKDApICYmICgwKSA9PSAnXDAnID8gKHsgdm9pZCAq
X19zID0gKHNhdmVkX3JlZ3MucmVnKTsgX19idWlsdGluX21lbXNldCAoX19zLCAnXDAnLCBzaXpl
b2Ygc2F2ZWRfcmVncy5yZWcpOyBfX3M7IH0pIDogbWVtc2V0IChzYXZlZF9yZWdzLnJlZywgMCwg
c2l6ZW9mIHNhdmVkX3JlZ3MucmVnKSkpKTsKICAoX19leHRlbnNpb25fXyAoX19idWlsdGluX2Nv
bnN0YW50X3AgKHNpemVvZiBzdWJfdWRhdGEtPnNhdmVkKSAmJiAoc2l6ZW9mIHN1Yl91ZGF0YS0+
c2F2ZWQpIDw9IDE2ID8gKChzaXplb2Ygc3ViX3VkYXRhLT5zYXZlZCkgPT0gMSA/ICh7IHZvaWQg
Kl9fcyA9IChzdWJfdWRhdGEtPnNhdmVkKTsgKigoX191aW50OF90ICopIF9fcykgPSAoX191aW50
OF90KSAwOyBfX3M7IH0pIDogKHsgdm9pZCAqX19zID0gKHN1Yl91ZGF0YS0+c2F2ZWQpOyB1bmlv
biB7IHVuc2lnbmVkIGludCBfX3VpOyB1bnNpZ25lZCBzaG9ydCBpbnQgX191c2k7IHVuc2lnbmVk
IGNoYXIgX191YzsgfSAqX191ID0gX19zOyBfX3VpbnQ4X3QgX19jID0gKF9fdWludDhfdCkgKDAp
OyBzd2l0Y2ggKCh1bnNpZ25lZCBpbnQpIChzaXplb2Ygc3ViX3VkYXRhLT5zYXZlZCkpIHsgY2Fz
ZSAxNTogX191LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsgX191ID0gX19leHRlbnNpb25fXyAo
KHZvaWQgKikgX191ICsgNCk7IGNhc2UgMTE6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7
IF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQpOyBjYXNlIDc6IF9fdS0+X191
aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSAr
IDQpOyBjYXNlIDM6IF9fdS0+X191c2kgPSAodW5zaWduZWQgc2hvcnQgaW50KSBfX2MgKiAweDAx
MDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDIpOyBfX3UtPl9fdWMgPSAo
dW5zaWduZWQgY2hhcikgX19jOyBicmVhazsgY2FzZSAxNDogX191LT5fX3VpID0gX19jICogMHgw
MTAxMDEwMTsgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7IGNhc2UgMTA6
IF9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lk
ICopIF9fdSArIDQpOyBjYXNlIDY6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9
IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQpOyBjYXNlIDI6IF9fdS0+X191c2kgPSAo
dW5zaWduZWQgc2hvcnQgaW50KSBfX2MgKiAweDAxMDE7IGJyZWFrOyBjYXNlIDEzOiBfX3UtPl9f
dWkgPSBfX2MgKiAweDAxMDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3Ug
KyA0KTsgY2FzZSA5OiBfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBfX3UgPSBfX2V4dGVu
c2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsgY2FzZSA1OiBfX3UtPl9fdWkgPSBfX2MgKiAweDAx
MDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsgY2FzZSAxOiBf
X3UtPl9fdWMgPSAodW5zaWduZWQgY2hhcikgX19jOyBicmVhazsgY2FzZSAxNjogX191LT5fX3Vp
ID0gX19jICogMHgwMTAxMDEwMTsgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsg
NCk7IGNhc2UgMTI6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5z
aW9uX18gKCh2b2lkICopIF9fdSArIDQpOyBjYXNlIDg6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEw
MTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQpOyBjYXNlIDQ6IF9f
dS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IGNhc2UgMDogYnJlYWs7IH0gX19zOyB9KSkgOiAo
X19idWlsdGluX2NvbnN0YW50X3AgKDApICYmICgwKSA9PSAnXDAnID8gKHsgdm9pZCAqX19zID0g
KHN1Yl91ZGF0YS0+c2F2ZWQpOyBfX2J1aWx0aW5fbWVtc2V0IChfX3MsICdcMCcsIHNpemVvZiBz
dWJfdWRhdGEtPnNhdmVkKTsgX19zOyB9KSA6IG1lbXNldCAoc3ViX3VkYXRhLT5zYXZlZCwgMCwg
c2l6ZW9mIHN1Yl91ZGF0YS0+c2F2ZWQpKSkpOwoKCiAgaWYgKGVoLT50YWJsZV9pbmRleCAhPSAo
dm9pZCAqKSAwKQogICAgcmV0aHJvdyA9IDE7CgogIG1lbWNweSAodWRhdGEsIG15X3VkYXRhLCBz
aXplb2YgKCp1ZGF0YSkpOwoKICBoYW5kbGVyID0gKHZvaWQgKikgMDsKICBmb3IgKDs7KQogICAg
ewogICAgICBmcmFtZV9zdGF0ZSAqcCA9IHVkYXRhOwoKICAgICAgdWRhdGEgPSBuZXh0X3N0YWNr
X2xldmVsIChwYywgdWRhdGEsIHN1Yl91ZGF0YSwgJnNhdmVkX3JlZ3MpOwogICAgICBzdWJfdWRh
dGEgPSBwOwoKCiAgICAgIGlmICghIHVkYXRhKQogICAgICAgIGJyZWFrOwoKICAgICAgaWYgKHVk
YXRhLT5laF9wdHIgPT0gKCh2b2lkICopMCkpCiAgICAgICAgbmV3X2VoX21vZGVsID0gMDsKICAg
ICAgZWxzZQogICAgICAgIG5ld19laF9tb2RlbCA9ICgoKGV4Y2VwdGlvbl9kZXNjcmlwdG9yICop
KHVkYXRhLT5laF9wdHIpKS0+CiAgICAgICAgICAgICAgICAgICAgICAgIHJ1bnRpbWVfaWRfZmll
bGQgPT0gKCh2b2lkICopIC0yKSk7CgogICAgICBpZiAocmV0aHJvdykKICAgICAgICB7CiAgICAg
ICAgICByZXRocm93ID0gMDsKICAgICAgICAgIGhhbmRsZXIgPSBmaW5kX2V4Y2VwdGlvbl9oYW5k
bGVyIChlaC0+dGFibGVfaW5kZXgsIHVkYXRhLT5laF9wdHIsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZWhfaW5mbywgMSwgJmNsZWFudXApOwogICAgICAgICAg
ZWgtPnRhYmxlX2luZGV4ID0gKHZvaWQgKikwOwogICAgICAgIH0KICAgICAgZWxzZQogICAgICAg
IGlmIChuZXdfZWhfbW9kZWwpCiAgICAgICAgICBoYW5kbGVyID0gZmluZF9leGNlcHRpb25faGFu
ZGxlciAocGMsIHVkYXRhLT5laF9wdHIsIGVoX2luZm8sCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMCwgJmNsZWFudXApOwogICAgICAgIGVsc2UKICAgICAgICAg
IGhhbmRsZXIgPSBvbGRfZmluZF9leGNlcHRpb25faGFuZGxlciAocGMsIHVkYXRhLT5laF9wdHIp
OwoKCgoKICAgICAgaWYgKGhhbmRsZXIpCiAgICAgICAgewoKCiAgICAgICAgICBpZiAoY2xlYW51
cCkKICAgICAgICAgICAgewogICAgICAgICAgICAgIGlmICghc2F2ZWRfc3RhdGUpCiAgICAgICAg
ICAgICAgICB7CiAgICAgICAgICAgICAgICAgIHNhdmVkX3VzdHJ1Y3QgPSAqdWRhdGE7CiAgICAg
ICAgICAgICAgICAgIGNsZWFudXBfcmVncyA9IHNhdmVkX3JlZ3M7CiAgICAgICAgICAgICAgICAg
IGhhbmRsZXJfcCA9IGhhbmRsZXI7CiAgICAgICAgICAgICAgICAgIHBjX3AgPSBwYzsKICAgICAg
ICAgICAgICAgICAgc2F2ZWRfc3RhdGUgPSAxOwogICAgICAgICAgICAgICAgICBvbmx5X2NsZWFu
dXAgPSAxOwoKCiAgICAgICAgICAgICAgICAgIGNhbGxlZV9jZmEgPSBzdWJfdWRhdGEtPmNmYTsK
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgZWxzZQogICAgICAgICAg
ICB7CiAgICAgICAgICAgICAgb25seV9jbGVhbnVwID0gMDsKICAgICAgICAgICAgICBpZiAoIXNh
dmVkX3N0YXRlKQogICAgICAgICAgICAgICAgY2FsbGVlX2NmYSA9IHN1Yl91ZGF0YS0+Y2ZhOwog
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfQoKCgogICAgICBwYyA9
IGdldF9yZXR1cm5fYWRkciAodWRhdGEsIHN1Yl91ZGF0YSkgLSAxOwogICAgfQoKICBpZiAoc2F2
ZWRfc3RhdGUpCiAgICB7CiAgICAgIHVkYXRhID0gJnNhdmVkX3VzdHJ1Y3Q7CiAgICAgIHNhdmVk
X3JlZ3MgPSBjbGVhbnVwX3JlZ3M7CiAgICAgIGhhbmRsZXIgPSBoYW5kbGVyX3A7CiAgICAgIHBj
ID0gcGNfcDsKICAgICAgaWYgKG9ubHlfY2xlYW51cCkKICAgICAgICBfX3Vud2luZGluZ19jbGVh
bnVwICgpOwogICAgfQoKCgogIGlmICghIGhhbmRsZXIpCiAgICBfX3Rlcm1pbmF0ZSgpOwoKICBl
aC0+aGFuZGxlcl9sYWJlbCA9IGhhbmRsZXI7CgogIGFyZ3Nfc2l6ZSA9IHVkYXRhLT5hcmdzX3Np
emU7CgoKCgoKCgogICpvZmZzZXRfcCA9IGNhbGxlZV9jZmEgLSBteV91ZGF0YS0+Y2ZhICsgYXJn
c19zaXplOwoKCgoKCgogIGlmIChwYyAhPSBzYXZlZF9wYykKICAgIHsKCiAgICAgIGZvciAoaSA9
IDA7IGkgPCAxNzsgaSsrKQogICAgICAgIGlmIChpICE9IHVkYXRhLT5yZXRhZGRyX2NvbHVtbiAm
JiBzYXZlZF9yZWdzLnJlZ1tpXSkKICAgICAgICAgIGNvcHlfcmVnIChpLCBzYXZlZF9yZWdzLnJl
Z1tpXSwgbXlfdWRhdGEpOwogICAgfQoKICByZXR1cm4gaGFuZGxlcjsKfQojIDQwODAgIi91c3Iv
c3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvbGliZ2NjMi5jIgp2b2lkCl9fdGhyb3cgKHZvaWQpCnsK
ICBzdHJ1Y3QgZWhfY29udGV4dCAqZWggPSAoKmdldF9laF9jb250ZXh0KSAoKTsKICB2b2lkICpw
YywgKmhhbmRsZXI7CiAgbG9uZyBvZmZzZXQ7CgoKCiAgZnJhbWVfc3RhdGUgbXlfdXN0cnVjdCwg
Km15X3VkYXRhID0gJm15X3VzdHJ1Y3Q7CgoKCgogIGlmICghIGVoLT5pbmZvKQogICAgX190ZXJt
aW5hdGUgKCk7CgoKbGFiZWw6CiAgbXlfdWRhdGEgPSBfX2ZyYW1lX3N0YXRlX2ZvciAoJiZsYWJl
bCwgbXlfdWRhdGEpOwogIGlmICghIG15X3VkYXRhKQogICAgX190ZXJtaW5hdGUgKCk7CgoKICBt
eV91ZGF0YS0+Y2ZhID0gX19idWlsdGluX2R3YXJmX2NmYSAoKTsKCgoKICBfX2J1aWx0aW5fdW53
aW5kX2luaXQgKCk7CgoKCgoKCgogIHBjID0gX19idWlsdGluX2V4dHJhY3RfcmV0dXJuX2FkZHIg
KF9fYnVpbHRpbl9yZXR1cm5fYWRkcmVzcyAoMCkpIC0gMTsKCiAgaGFuZGxlciA9IHRocm93X2hl
bHBlciAoZWgsIHBjLCBteV91ZGF0YSwgJm9mZnNldCk7CgoKCiAgX19idWlsdGluX2VoX3JldHVy
biAoKHZvaWQgKillaCwgb2Zmc2V0LCBoYW5kbGVyKTsKCgoKfQoKCgp2b2lkCl9fcmV0aHJvdyAo
dm9pZCAqaW5kZXgpCnsKICBzdHJ1Y3QgZWhfY29udGV4dCAqZWggPSAoKmdldF9laF9jb250ZXh0
KSAoKTsKICB2b2lkICpwYywgKmhhbmRsZXI7CiAgbG9uZyBvZmZzZXQ7CgoKCiAgZnJhbWVfc3Rh
dGUgbXlfdXN0cnVjdCwgKm15X3VkYXRhID0gJm15X3VzdHJ1Y3Q7CgoKCgogIGlmICghIGVoLT5p
bmZvKQogICAgX190ZXJtaW5hdGUgKCk7CgoKCgogIGVoLT50YWJsZV9pbmRleCA9IGluZGV4OwoK
CmxhYmVsOgogIG15X3VkYXRhID0gX19mcmFtZV9zdGF0ZV9mb3IgKCYmbGFiZWwsIG15X3VkYXRh
KTsKICBpZiAoISBteV91ZGF0YSkKICAgIF9fdGVybWluYXRlICgpOwoKCiAgbXlfdWRhdGEtPmNm
YSA9IF9fYnVpbHRpbl9kd2FyZl9jZmEgKCk7CgoKCiAgX19idWlsdGluX3Vud2luZF9pbml0ICgp
OwoKCgoKCgoKICBwYyA9IF9fYnVpbHRpbl9leHRyYWN0X3JldHVybl9hZGRyIChfX2J1aWx0aW5f
cmV0dXJuX2FkZHJlc3MgKDApKSAtIDE7CgogIGhhbmRsZXIgPSB0aHJvd19oZWxwZXIgKGVoLCBw
YywgbXlfdWRhdGEsICZvZmZzZXQpOwoKCgogIF9fYnVpbHRpbl9laF9yZXR1cm4gKCh2b2lkICop
ZWgsIG9mZnNldCwgaGFuZGxlcik7CgoKCn0K


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